<?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>49388</bug_id>
          
          <creation_ts>2010-11-11 10:02:52 -0800</creation_ts>
          <short_desc>Share code between Mac (CA) and Windows (CACF) GraphicsLayer implementations</short_desc>
          <delta_ts>2011-01-10 15:13:08 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Marrin">cmarrin</reporter>
          <assigned_to name="Chris Marrin">cmarrin</assigned_to>
          <cc>abarth</cc>
    
    <cc>aroben</cc>
    
    <cc>buildbot</cc>
    
    <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>vangelis</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>307973</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2010-11-11 10:02:52 -0800</bug_when>
    <thetext>Currently GraphicsLayerCA and GraphicsLayerCACF are very similar and much of the code is duplicated. The big difference is the underlying ObjectiveC CALayer (Mac) and the C CACFLayer Windows)). We already have a wrapper around CACFLayer called WKCACFLayer. If we make a common API for these two classes, we can use that API in GraphicsLayer and share most of the code. 

The API will be the C++ class PlatformCALayer and it will have PlatformCALayerMac.mm and PlatformLayerWin.cpp implementations. There will also be PlatformCALayer.cpp for any common code. We will also need a common PlatformCAAnimation class to wrap the functionality of CAAnimation and CACFAnimation.

As a first step I will rename the current GraphicsLayerCA.* files to GraphicsLayerMac.*. That will allow me to create a new GraphicsLayerCA object which will be the common class using PlatformCALayer and PlatformCAAnimation. Eventually GraphicsLayerMac.* will go away, as will GraphicsLayerCACF on Windows.

The new file will go in the new folder platform/graphics/ca.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>307976</commentid>
    <comment_count>1</comment_count>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2010-11-11 10:12:39 -0800</bug_when>
    <thetext>Maybe it&apos;s a good time to think about how to factor the code such that common pieces can be used by non-CA platforms. Right now platform/graphics/chromium duplicates a lot of the CACF code as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>308036</commentid>
    <comment_count>2</comment_count>
      <attachid>73632</attachid>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2010-11-11 11:52:09 -0800</bug_when>
    <thetext>Created attachment 73632
Patch changing name of GraphicsLayerCA.* to GraphicsLayerMac.*</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>308038</commentid>
    <comment_count>3</comment_count>
      <attachid>73632</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-11-11 11:54:25 -0800</bug_when>
    <thetext>Comment on attachment 73632
Patch changing name of GraphicsLayerCA.* to GraphicsLayerMac.*

The GraphicsLayerCA class needs to renamed too (hint: Edit All in Scope).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>308081</commentid>
    <comment_count>4</comment_count>
      <attachid>73632</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-11-11 13:05:11 -0800</bug_when>
    <thetext>Comment on attachment 73632
Patch changing name of GraphicsLayerCA.* to GraphicsLayerMac.*

I was confused by SVN.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>308088</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2010-11-11 13:11:00 -0800</bug_when>
    <thetext>Landed rename part in http://trac.webkit.org/changeset/71848</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>308104</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2010-11-11 13:37:38 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; Maybe it&apos;s a good time to think about how to factor the code such that common pieces can be used by non-CA platforms. Right now platform/graphics/chromium duplicates a lot of the CACF code as well.

I think it&apos;s reasonable to make the work I&apos;m doing have a wider scope than &quot;CA based implementations&quot;. But I&apos;d like to get the convergence between CA and CACF finished first. Then I think it will be simpler for you to understand how your implementation fits in and how we can change the new &quot;ca&quot; based API to have that wider scope.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>308134</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-11-11 14:03:19 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/71848 might have broken Leopard Intel Release (Tests)
The following tests are not passing:
fast/workers/storage/interrupt-database-sync.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>308252</commentid>
    <comment_count>8</comment_count>
      <attachid>73632</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-11-11 16:24:07 -0800</bug_when>
    <thetext>Comment on attachment 73632
Patch changing name of GraphicsLayerCA.* to GraphicsLayerMac.*

Cleared Simon Fraser&apos;s review+ from obsolete attachment 73632 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316175</commentid>
    <comment_count>9</comment_count>
      <attachid>75382</attachid>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2010-12-02 08:59:58 -0800</bug_when>
    <thetext>Created attachment 75382
Patch with Mac Implementation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316244</commentid>
    <comment_count>10</comment_count>
      <attachid>75394</attachid>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2010-12-02 10:52:40 -0800</bug_when>
    <thetext>Created attachment 75394
Fix merge issue with last patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316259</commentid>
    <comment_count>11</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-12-02 11:07:19 -0800</bug_when>
    <thetext>Attachment 75394 did not build on qt:
Build output: http://queues.webkit.org/results/6801015</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316263</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-02 11:13:26 -0800</bug_when>
    <thetext>Attachment 75394 did not build on chromium:
Build output: http://queues.webkit.org/results/6826009</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316269</commentid>
    <comment_count>13</comment_count>
      <attachid>75394</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-12-02 11:21:03 -0800</bug_when>
    <thetext>Comment on attachment 75394
Fix merge issue with last patch

&gt; WebCore/platform/graphics/GraphicsLayer.h:51
&gt;  typedef CALayer PlatformLayer;

I think we should do this as:
typedef CALayer* PlatformLayerRef
to avoid confusion about whether it&apos;s a pointer or not.

&gt; WebCore/platform/graphics/ca/GraphicsLayerCA.cpp:258
&gt; +PassOwnPtr&lt;GraphicsLayer&gt; GraphicsLayer::create(GraphicsLayerClient* client)
&gt; +{
&gt; +    return new GraphicsLayerCA(client);
&gt; +}
&gt; +

This could be in the header.

&gt; WebCore/platform/graphics/ca/GraphicsLayerCA.cpp:291
&gt; +    // Release the clone layers inside the exception-handling block.
&gt; +    removeCloneLayers();

The comment is no longer applicable.

&gt; WebCore/platform/graphics/ca/GraphicsLayerCA.cpp:1459
&gt; +static void copyAnimationProperties(const PlatformCAAnimation* from, PlatformCAAnimation* to)
&gt; +{
&gt; +    to-&gt;setBeginTime(from-&gt;beginTime());
&gt; +    to-&gt;setDuration(from-&gt;duration());
&gt; +    to-&gt;setRepeatCount(from-&gt;repeatCount());
&gt; +    to-&gt;setAutoreverses(from-&gt;autoreverses());
&gt; +    to-&gt;setFillMode(from-&gt;fillMode());
&gt; +    to-&gt;setRemovedOnCompletion(from-&gt;isRemovedOnCompletion());
&gt; +    to-&gt;setAdditive(from-&gt;isAdditive());
&gt; +    to-&gt;copyTimingFunctionFrom(from);
&gt; +
&gt; +#if HAVE_MODERN_QUARTZCORE

I think we could have a copy constructor on PlatformCAAnimation instead, here.

&gt; WebCore/platform/graphics/ca/GraphicsLayerCA.cpp:1524
&gt; +void GraphicsLayerCA::setContentsToCanvas(PlatformLayer* canvasLayer)
&gt; +{
&gt; +    if (m_contentsLayer &amp;&amp; canvasLayer == m_contentsLayer-&gt;platformLayer())
&gt; +        return;
&gt; +    
&gt; +    // Create the PlatformCALayer to wrap the incoming layer
&gt; +    m_contentsLayer = canvasLayer ? PlatformCALayer::create(canvasLayer, this) : 0;
&gt; +    
&gt; +    m_contentsLayerPurpose = canvasLayer ? ContentsLayerForCanvas : NoContentsLayer;
&gt; +
&gt; +    noteSublayersChanged();
&gt; +    noteLayerPropertyChanged(ContentsCanvasLayerChanged);
&gt; +}

Please move this so it&apos;s next to the other &quot;setContentsTo&quot; methods.

&gt; WebCore/platform/graphics/ca/GraphicsLayerCA.cpp:1762
&gt; +
&gt; +
&gt; +
&gt; +
&gt; +        if (isTransformTypeNumber(transformOpType)) {

Extra blank lines here.

&gt; WebCore/platform/graphics/ca/PlatformCAAnimation.h:63
&gt; +    static PassRefPtr&lt;PlatformCAAnimation&gt; create(void* animation);

CAPropertyAnimation rather than void*? Or maybe you have to have a typedef that maps to CAPropertyAnimation on Mac, and CACFAnimationRef on Windows?

&gt; WebCore/platform/graphics/ca/PlatformCAAnimation.h:69
&gt; +    void* platformAnimation() const;

Why not return a CAPropertyAnimation?

&gt; WebCore/platform/graphics/ca/PlatformCALayer.h:50
&gt; +    // FIXME: This object represents all Layer types used in GraphicsLayer, and those used by video and canvas.

Why is that a FIXME?

&gt; WebCore/platform/graphics/ca/PlatformCALayer.h:65
&gt; +    // FIXME: turn off implicit animation in ctor

Either do that, or remove the FIXME.
 

r=me with those comments addressed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316294</commentid>
    <comment_count>14</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2010-12-02 11:41:05 -0800</bug_when>
    <thetext>Attachment 75394 did not build on win:
Build output: http://queues.webkit.org/results/6839009</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316339</commentid>
    <comment_count>15</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-12-02 12:28:19 -0800</bug_when>
    <thetext>Attachment 75394 did not build on mac:
Build output: http://queues.webkit.org/results/6754009</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316463</commentid>
    <comment_count>16</comment_count>
      <attachid>75422</attachid>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2010-12-02 15:43:03 -0800</bug_when>
    <thetext>Created attachment 75422
Patch fixing issues from the review and add 2 files</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316466</commentid>
    <comment_count>17</comment_count>
      <attachid>75422</attachid>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2010-12-02 15:45:10 -0800</bug_when>
    <thetext>Comment on attachment 75422
Patch fixing issues from the review and add 2 files

The last patch was missing the PlatformCALayerMac.mm and PlatformCAAnimationMac.mm implementation files. I also added some initial settings to in TiledLayer creation. Then I implemented all of Simon&apos;s recommendations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316468</commentid>
    <comment_count>18</comment_count>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2010-12-02 15:46:21 -0800</bug_when>
    <thetext>This latest patch also fixes build errors in Qt, Win, and Chrome builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316477</commentid>
    <comment_count>19</comment_count>
      <attachid>75422</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-12-02 15:52:34 -0800</bug_when>
    <thetext>Comment on attachment 75422
Patch fixing issues from the review and add 2 files

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

&gt; WebCore/platform/graphics/ca/mac/PlatformCAAnimationMac.mm:234
&gt; +bool PlatformCAAnimation::nonZeroBeginTimeFlag() const

I think this should be hasNonZeroBeginTimeFlag()

&gt; WebCore/platform/graphics/ca/mac/PlatformCAAnimationMac.mm:242
&gt; +    [m_animation.get() setValue:[NSNumber numberWithBool:value] forKey:WKNonZeroBeginTimeFlag];
&gt; +

Extra space.

&gt; WebCore/platform/graphics/ca/mac/PlatformCALayerMac.mm:182
&gt; +                layerClass = NSClassFromString(@&quot;CALayer&quot;);

[CALayer class] would be fine here, and faster.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316651</commentid>
    <comment_count>20</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-12-02 21:02:24 -0800</bug_when>
    <thetext>This was rolled out because of leopard build issues. I tried to fix them, but fixes were non-obvious.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316706</commentid>
    <comment_count>21</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-12-03 00:24:05 -0800</bug_when>
    <thetext>Attachment 75422 did not build on mac:
Build output: http://queues.webkit.org/results/6851007</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316945</commentid>
    <comment_count>22</comment_count>
      <attachid>75522</attachid>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2010-12-03 11:57:20 -0800</bug_when>
    <thetext>Created attachment 75522
Please do not review. Just submitting to see the errors on the bots</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316982</commentid>
    <comment_count>23</comment_count>
      <attachid>75530</attachid>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2010-12-03 13:01:29 -0800</bug_when>
    <thetext>Created attachment 75530
Fixed merge conflicts</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>317159</commentid>
    <comment_count>24</comment_count>
      <attachid>75575</attachid>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2010-12-03 16:13:11 -0800</bug_when>
    <thetext>Created attachment 75575
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>317899</commentid>
    <comment_count>25</comment_count>
      <attachid>75575</attachid>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2010-12-06 16:06:07 -0800</bug_when>
    <thetext>Comment on attachment 75575
Patch

This patch landed with http://trac.webkit.org/changeset/73380</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318435</commentid>
    <comment_count>26</comment_count>
      <attachid>75842</attachid>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2010-12-07 14:09:27 -0800</bug_when>
    <thetext>Created attachment 75842
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318441</commentid>
    <comment_count>27</comment_count>
      <attachid>75842</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-12-07 14:13:25 -0800</bug_when>
    <thetext>Comment on attachment 75842
Patch

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

New files are missing from the patch.

&gt; JavaScriptCore/wtf/Platform.h:535
&gt; +#if PLATFORM(MAC) || PLATFORM(IOS) || PLATFORM(WIN)
&gt; +#define WTF_PLATFORM_CA 1
&gt; +#endif

Are you sure this won&apos;t affect other ports on Windows?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318444</commentid>
    <comment_count>28</comment_count>
      <attachid>75844</attachid>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2010-12-07 14:29:51 -0800</bug_when>
    <thetext>Created attachment 75844
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318449</commentid>
    <comment_count>29</comment_count>
      <attachid>75846</attachid>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2010-12-07 14:57:10 -0800</bug_when>
    <thetext>Created attachment 75846
Patch with some housekeeping changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318454</commentid>
    <comment_count>30</comment_count>
      <attachid>75846</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-12-07 15:15:09 -0800</bug_when>
    <thetext>Comment on attachment 75846
Patch with some housekeeping changes

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

Don&apos;t forget to add the new files to the vcproj.

&gt; WebCore/platform/graphics/ca/GraphicsLayerCA.cpp:-45
&gt; -#include &lt;wtf/UnusedParam.h&gt;

Are you sure it&apos;s unused on all platforms?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318464</commentid>
    <comment_count>31</comment_count>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2010-12-07 15:51:32 -0800</bug_when>
    <thetext>(In reply to comment #30)
&gt; (From update of attachment 75846 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=75846&amp;action=review
&gt; 
&gt; Don&apos;t forget to add the new files to the vcproj.

I will do that when I do the Windows side, which I haven&apos;t yet.

&gt; 
&gt; &gt; WebCore/platform/graphics/ca/GraphicsLayerCA.cpp:-45
&gt; &gt; -#include &lt;wtf/UnusedParam.h&gt;
&gt; 
&gt; Are you sure it&apos;s unused on all platforms?

The macro isn&apos;t used anywhere in GraphicsLayerCA.cpp and there aren&apos;t any relevant ifdefs</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318629</commentid>
    <comment_count>32</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-07 21:53:54 -0800</bug_when>
    <thetext>Attachment 75842 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/update-webkit&apos;]&quot; exit_code: 2
Updating OpenSource
Incomplete data: Delta source ended unexpectedly at /usr/lib/git-core/git-svn line 5061

Died at WebKitTools/Scripts/update-webkit line 132.


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318632</commentid>
    <comment_count>33</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-07 21:54:53 -0800</bug_when>
    <thetext>Attachment 75844 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/update-webkit&apos;]&quot; exit_code: 2
Updating OpenSource
Incomplete data: Delta source ended unexpectedly at /usr/lib/git-core/git-svn line 5061

Died at WebKitTools/Scripts/update-webkit line 132.


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318634</commentid>
    <comment_count>34</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-07 21:55:54 -0800</bug_when>
    <thetext>Attachment 75846 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/update-webkit&apos;]&quot; exit_code: 2
Updating OpenSource
Incomplete data: Delta source ended unexpectedly at /usr/lib/git-core/git-svn line 5061

Died at WebKitTools/Scripts/update-webkit line 132.


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318934</commentid>
    <comment_count>35</comment_count>
      <attachid>75943</attachid>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2010-12-08 12:12:58 -0800</bug_when>
    <thetext>Created attachment 75943
Resubmission of last patch with build fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318956</commentid>
    <comment_count>36</comment_count>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2010-12-08 12:56:25 -0800</bug_when>
    <thetext>relanded housekeeping patch in http://trac.webkit.org/changeset/73540</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319821</commentid>
    <comment_count>37</comment_count>
      <attachid>76144</attachid>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2010-12-09 17:36:34 -0800</bug_when>
    <thetext>Created attachment 76144
Patch getting rid of NonZeroBeginTimeFlag</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319822</commentid>
    <comment_count>38</comment_count>
      <attachid>76144</attachid>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2010-12-09 17:38:49 -0800</bug_when>
    <thetext>Comment on attachment 76144
Patch getting rid of NonZeroBeginTimeFlag

Windows doesn&apos;t need this flag, so it is just an implementation detail. This buries it in the Mac implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319829</commentid>
    <comment_count>39</comment_count>
      <attachid>76144</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-12-09 17:43:07 -0800</bug_when>
    <thetext>Comment on attachment 76144
Patch getting rid of NonZeroBeginTimeFlag

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

&gt; WebCore/platform/graphics/ca/mac/PlatformCAAnimationMac.mm:252
&gt; +    // The flag is needed because later beginTIme will get changed

beginTime.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320262</commentid>
    <comment_count>40</comment_count>
      <attachid>76144</attachid>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2010-12-10 11:28:55 -0800</bug_when>
    <thetext>Comment on attachment 76144
Patch getting rid of NonZeroBeginTimeFlag

Landed in http://trac.webkit.org/changeset/73731</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320264</commentid>
    <comment_count>41</comment_count>
      <attachid>76223</attachid>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2010-12-10 11:30:35 -0800</bug_when>
    <thetext>Created attachment 76223
Patch adding CACFContextGetLastCommitTime to WKSI</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320267</commentid>
    <comment_count>42</comment_count>
      <attachid>76225</attachid>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2010-12-10 11:33:08 -0800</bug_when>
    <thetext>Created attachment 76225
Patch adding CACFContextGetLastCommitTime to WKSI (gets rid of bogus .lib file)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320292</commentid>
    <comment_count>43</comment_count>
      <attachid>76225</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-12-10 11:52:39 -0800</bug_when>
    <thetext>Comment on attachment 76225
Patch adding CACFContextGetLastCommitTime to WKSI (gets rid of bogus .lib file)

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

&gt; WebKitLibraries/ChangeLog:7
&gt; +        Also got rid of WebKitSystemInterface_debug.lib as recommended by
&gt; +        Adam Roben.

You should mention that this hasn&apos;t been used since r72327.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320347</commentid>
    <comment_count>44</comment_count>
      <attachid>76225</attachid>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2010-12-10 13:06:49 -0800</bug_when>
    <thetext>Comment on attachment 76225
Patch adding CACFContextGetLastCommitTime to WKSI (gets rid of bogus .lib file)

Landed in http://trac.webkit.org/changeset/73790</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321768</commentid>
    <comment_count>45</comment_count>
      <attachid>75575</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-12-14 01:27:32 -0800</bug_when>
    <thetext>Comment on attachment 75575
Patch

Cleared Simon Fraser&apos;s review+ from obsolete attachment 75575 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321769</commentid>
    <comment_count>46</comment_count>
      <attachid>75846</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-12-14 01:27:40 -0800</bug_when>
    <thetext>Comment on attachment 75846
Patch with some housekeeping changes

Cleared Simon Fraser&apos;s review+ from obsolete attachment 75846 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321770</commentid>
    <comment_count>47</comment_count>
      <attachid>76144</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-12-14 01:27:45 -0800</bug_when>
    <thetext>Comment on attachment 76144
Patch getting rid of NonZeroBeginTimeFlag

Cleared Simon Fraser&apos;s review+ from obsolete attachment 76144 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321774</commentid>
    <comment_count>48</comment_count>
      <attachid>76225</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-12-14 01:27:56 -0800</bug_when>
    <thetext>Comment on attachment 76225
Patch adding CACFContextGetLastCommitTime to WKSI (gets rid of bogus .lib file)

Cleared Adam Roben&apos;s review+ from obsolete attachment 76225 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330383</commentid>
    <comment_count>49</comment_count>
      <attachid>78154</attachid>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2011-01-06 13:36:02 -0800</bug_when>
    <thetext>Created attachment 78154
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330406</commentid>
    <comment_count>50</comment_count>
      <attachid>78154</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-01-06 14:04:08 -0800</bug_when>
    <thetext>Comment on attachment 78154
Patch

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

This all looks fine, but reflections aren&apos;t working because layerDidDisplay isn&apos;t being called on Windows, as we discussed.

&gt; WebCore/platform/graphics/ca/GraphicsLayerCA.cpp:916
&gt; -        for (size_t i = 0; i &lt; newSublayers.size(); ++i)
&gt; +        for (int i = newSublayers.size() - 1; i &gt;= 0; --i)
&gt;              newSublayers[i]-&gt;removeFromSuperlayer();

Why the order reversal?

&gt; WebCore/platform/graphics/ca/GraphicsLayerCA.h:67
&gt; +    // PlatformCALayerClient overrides
&gt; +    virtual void platformCALayerLayoutSublayersOfLayer(PlatformCALayer*) { }
&gt; +    virtual bool platformCALayerRespondsToLayoutChanges() const { return false; }
&gt; +
&gt; +    virtual void platformCALayerAnimationStarted(CFTimeInterval beginTime);
&gt; +    virtual CompositingCoordinatesOrientation platformCALayerContentsOrientation() const { return contentsOrientation(); }
&gt; +    virtual void platformCALayerPaintContents(GraphicsContext&amp; context, const IntRect&amp; clip) { paintGraphicsLayerContents(context, clip); }
&gt; +    virtual bool platformCALayerShowDebugBorders() const { return showDebugBorders(); }
&gt; +    virtual bool platformCALayerShowRepaintCounter() const { return showRepaintCounter(); }
&gt; +    virtual int platformCALayerIncrementRepaintCount() { return incrementRepaintCount(); }
&gt; +
&gt; +    virtual bool platformCALayerContentsOpaque() const { return contentsOpaque(); }
&gt; +    virtual bool platformCALayerDrawsContent() const { return drawsContent(); }
&gt; +    virtual void platformCALayerLayerDidDisplay(PlatformLayer* layer) { return layerDidDisplay(layer); }

Please make these private.

&gt; WebCore/platform/graphics/ca/PlatformCALayerClient.h:2
&gt; + * Copyright (C) 2010 Apple Inc. All rights reserved.

2011!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330409</commentid>
    <comment_count>51</comment_count>
      <attachid>78154</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-01-06 14:07:28 -0800</bug_when>
    <thetext>Comment on attachment 78154
Patch

Ah, this is Mac code. r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330419</commentid>
    <comment_count>52</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-01-06 14:18:07 -0800</bug_when>
    <thetext>Attachment 78154 did not build on win:
Build output: http://queues.webkit.org/results/7402011</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330426</commentid>
    <comment_count>53</comment_count>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2011-01-06 14:27:00 -0800</bug_when>
    <thetext>Committed r75199: &lt;http://trac.webkit.org/changeset/75199&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330430</commentid>
    <comment_count>54</comment_count>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2011-01-06 14:30:57 -0800</bug_when>
    <thetext>Not quite done yet. Hopefully the next patch will be the last. It will have the Windows side of all this</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330442</commentid>
    <comment_count>55</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-06 14:49:34 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/75199 might have broken Windows Release (Build) and Windows Debug (Build)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330589</commentid>
    <comment_count>56</comment_count>
      <attachid>78196</attachid>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2011-01-06 18:12:23 -0800</bug_when>
    <thetext>Created attachment 78196
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330595</commentid>
    <comment_count>57</comment_count>
      <attachid>78197</attachid>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2011-01-06 18:28:44 -0800</bug_when>
    <thetext>Created attachment 78197
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330598</commentid>
    <comment_count>58</comment_count>
      <attachid>78200</attachid>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2011-01-06 18:33:05 -0800</bug_when>
    <thetext>Created attachment 78200
Final Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330603</commentid>
    <comment_count>59</comment_count>
      <attachid>78196</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-01-06 18:37:09 -0800</bug_when>
    <thetext>Comment on attachment 78196
Patch

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

r=me with comments, and questions about the vcproj change.

&gt; WebCore/WebCore.vcproj/WebCore.vcproj:22
&gt;  		&lt;Configuration
&gt;  			Name=&quot;Debug|Win32&quot;
&gt;  			ConfigurationType=&quot;4&quot;
&gt; -			InheritedPropertySheets=&quot;$(WebKitVSPropsRedirectionDir)..\..\WebKitLibraries\win\tools\vsprops\FeatureDefines.vsprops;$(WebKitVSPropsRedirectionDir)..\..\WebKitLibraries\win\tools\vsprops\common.vsprops;$(WebKitVSPropsRedirectionDir)..\..\WebKitLibraries\win\tools\vsprops\debug.vsprops;.\WebCoreCommon.vsprops;.\WebCoreCG.vsprops;.\WebCoreCFNetwork.vsprops;.\WebCorePthreads.vsprops;.\WebCoreMediaQT.vsprops;.\WebCoreQuartzCore.vsprops&quot;
&gt; +			InheritedPropertySheets=&quot;..\..\WebKitLibraries\win\tools\vsprops\FeatureDefines.vsprops;..\..\WebKitLibraries\win\tools\vsprops\common.vsprops;..\..\WebKitLibraries\win\tools\vsprops\debug.vsprops;.\WebCoreCommon.vsprops;.\WebCoreCG.vsprops;.\WebCoreCFNetwork.vsprops;.\WebCorePthreads.vsprops;.\WebCoreMediaQT.vsprops;.\WebCoreQuartzCore.vsprops&quot;
&gt;  			CharacterSet=&quot;1&quot;

Many of these changes look bad. You might want to hand-edit the project file.

&gt; WebCore/WebCore.vcproj/WebCoreCommon.vsprops:11
&gt; -		AdditionalIncludeDirectories=&quot;&amp;quot;$(ProjectDir)..&amp;quot;;&amp;quot;$(ProjectDir)..\accessibility&amp;quot;;&amp;quot;$(ProjectDir)..\accessibility\win&amp;quot;;&amp;quot;$(ProjectDir)..\bridge&amp;quot;;&amp;quot;$(ProjectDir)..\bridge\c&amp;quot;;&amp;quot;$(ProjectDir)..\bridge\jsc&amp;quot;;&amp;quot;$(ProjectDir)..\css&amp;quot;;&amp;quot;$(ProjectDir)..\editing&amp;quot;;&amp;quot;$(ProjectDir)..\fileapi&amp;quot;;&amp;quot;$(ProjectDir)..\rendering&amp;quot;;&amp;quot;$(ProjectDir)..\rendering\style&amp;quot;;&amp;quot;$(ProjectDir)..\rendering\svg&amp;quot;;&amp;quot;$(ProjectDir)..\bindings&amp;quot;;&amp;quot;$(ProjectDir)..\bindings\generic&amp;quot;;&amp;quot;$(ProjectDir)..\bindings\js&amp;quot;;&amp;quot;$(ProjectDir)..\bindings\js\specialization&amp;quot;;&amp;quot;$(ProjectDir)..\dom&amp;quot;;&amp;quot;$(ProjectDir)..\dom\default&amp;quot;;&amp;quot;$(ProjectDir)..\history&amp;quot;;&amp;quot;$(ProjectDir)..\html&amp;quot;;&amp;quot;$(ProjectDir)..\html\canvas&amp;quot;;&amp;quot;$(ProjectDir)..\html\parser&amp;quot;;&amp;quot;$(ProjectDir)..\html\shadow&amp;quot;;&amp;quot;$(ProjectDir)..\inspector&amp;quot;;&amp;quot;$(ProjectDir)..\loader&amp;quot;;&amp;quot;$(ProjectDir)..\loader\appcache&amp;quot;;&amp;quot;$(ProjectDir)..\loader\archive&amp;quot;;&amp;quot;$(ProjectDir)..\loader\archive\cf&amp;quot;;&amp;quot;$(ProjectDir)..\loader\cache&amp;quot;;&amp;quot;$(ProjectDir)..\loader\icon&amp;quot;;&amp;quot;$(ProjectDir)..\mathml&amp;quot;;&amp;quot;$(ProjectDir)..\notifications&amp;quot;;&amp;quot;$(ProjectDir)..\page&amp;quot;;&amp;quot;$(ProjectDir)..\page\animation&amp;quot;;&amp;quot;$(ProjectDir)..\page\win&amp;quot;;&amp;quot;$(ProjectDir)..\platform&amp;quot;;&amp;quot;$(ProjectDir)..\platform\animation&amp;quot;;&amp;quot;$(ProjectDir)..\platform\mock&amp;quot;;&amp;quot;$(ProjectDir)..\platform\sql&amp;quot;;&amp;quot;$(ProjectDir)..\platform\win&amp;quot;;&amp;quot;$(ProjectDir)..\platform\network&amp;quot;;&amp;quot;$(ProjectDir)..\platform\network\win&amp;quot;;&amp;quot;$(ProjectDir)..\platform\cf&amp;quot;;&amp;quot;$(ProjectDir)..\platform\graphics&amp;quot;;&amp;quot;$(ProjectDir)..\platform\graphics\filters&amp;quot;;&amp;quot;$(ProjectDir)..\platform\graphics\opentype&amp;quot;;&amp;quot;$(ProjectDir)..\platform\graphics\transforms&amp;quot;;&amp;quot;$(ProjectDir)..\platform\text&amp;quot;;&amp;quot;$(ProjectDir)..\platform\text\transcoder&amp;quot;;&amp;quot;$(ProjectDir)..\platform\graphics\win&amp;quot;;&amp;quot;$(ProjectDir)..\xml&amp;quot;;&amp;quot;$(ConfigurationBuildDir)\obj\WebCore\DerivedSources&amp;quot;;&amp;quot;$(ProjectDir)..\plugins&amp;quot;;&amp;quot;$(ProjectDir)..\plugins\win&amp;quot;;&amp;quot;$(ProjectDir)..\svg\animation&amp;quot;;&amp;quot;$(ProjectDir)..\svg\graphics&amp;quot;;&amp;quot;$(ProjectDir)..\svg\properties&amp;quot;;&amp;quot;$(ProjectDir)..\svg\graphics\filters&amp;quot;;&amp;quot;$(ProjectDir)..\svg&amp;quot;;&amp;quot;$(ProjectDir)..\wml&amp;quot;;&amp;quot;$(ProjectDir)..\storage&amp;quot;;&amp;quot;$(ProjectDir)..\websockets&amp;quot;;&amp;quot;$(ProjectDir)..\workers&amp;quot;;&amp;quot;$(ConfigurationBuildDir)\include&amp;quot;;&amp;quot;$(ConfigurationBuildDir)\include\private&amp;quot;;&amp;quot;$(ConfigurationBuildDir)\include\JavaScriptCore&amp;quot;;&amp;quot;$(ConfigurationBuildDir)\include\private\JavaScriptCore&amp;quot;;&amp;quot;$(ProjectDir)..\ForwardingHeaders&amp;quot;;&amp;quot;$(WebKitLibrariesDir)\include&amp;quot;;&amp;quot;$(WebKitLibrariesDir)\include\private&amp;quot;;&amp;quot;$(WebKitLibrariesDir)\include\private\JavaScriptCore&amp;quot;;&amp;quot;$(WebKitLibrariesDir)\include\pthreads&amp;quot;;&amp;quot;$(WebKitLibrariesDir)\include\sqlite&amp;quot;;&amp;quot;$(WebKitLibrariesDir)\include\JavaScriptCore&amp;quot;;&amp;quot;$(WebKitLibrariesDir)\include\zlib&amp;quot;&quot;
&gt; +		AdditionalIncludeDirectories=&quot;&amp;quot;$(ProjectDir)..&amp;quot;;&amp;quot;$(ProjectDir)..\accessibility&amp;quot;;&amp;quot;$(ProjectDir)..\accessibility\win&amp;quot;;&amp;quot;$(ProjectDir)..\bridge&amp;quot;;&amp;quot;$(ProjectDir)..\bridge\c&amp;quot;;&amp;quot;$(ProjectDir)..\bridge\jsc&amp;quot;;&amp;quot;$(ProjectDir)..\css&amp;quot;;&amp;quot;$(ProjectDir)..\editing&amp;quot;;&amp;quot;$(ProjectDir)..\fileapi&amp;quot;;&amp;quot;$(ProjectDir)..\rendering&amp;quot;;&amp;quot;$(ProjectDir)..\rendering\style&amp;quot;;&amp;quot;$(ProjectDir)..\rendering\svg&amp;quot;;&amp;quot;$(ProjectDir)..\bindings&amp;quot;;&amp;quot;$(ProjectDir)..\bindings\generic&amp;quot;;&amp;quot;$(ProjectDir)..\bindings\js&amp;quot;;&amp;quot;$(ProjectDir)..\bindings\js\specialization&amp;quot;;&amp;quot;$(ProjectDir)..\dom&amp;quot;;&amp;quot;$(ProjectDir)..\dom\default&amp;quot;;&amp;quot;$(ProjectDir)..\history&amp;quot;;&amp;quot;$(ProjectDir)..\html&amp;quot;;&amp;quot;$(ProjectDir)..\html\canvas&amp;quot;;&amp;quot;$(ProjectDir)..\html\parser&amp;quot;;&amp;quot;$(ProjectDir)..\html\shadow&amp;quot;;&amp;quot;$(ProjectDir)..\inspector&amp;quot;;&amp;quot;$(ProjectDir)..\loader&amp;quot;;&amp;quot;$(ProjectDir)..\loader\appcache&amp;quot;;&amp;quot;$(ProjectDir)..\loader\archive&amp;quot;;&amp;quot;$(ProjectDir)..\loader\archive\cf&amp;quot;;&amp;quot;$(ProjectDir)..\loader\cache&amp;quot;;&amp;quot;$(ProjectDir)..\loader\icon&amp;quot;;&amp;quot;$(ProjectDir)..\mathml&amp;quot;;&amp;quot;$(ProjectDir)..\notifications&amp;quot;;&amp;quot;$(ProjectDir)..\page&amp;quot;;&amp;quot;$(ProjectDir)..\page\animation&amp;quot;;&amp;quot;$(ProjectDir)..\page\win&amp;quot;;&amp;quot;$(ProjectDir)..\platform&amp;quot;;&amp;quot;$(ProjectDir)..\platform\animation&amp;quot;;&amp;quot;$(ProjectDir)..\platform\mock&amp;quot;;&amp;quot;$(ProjectDir)..\platform\sql&amp;quot;;&amp;quot;$(ProjectDir)..\platform\win&amp;quot;;&amp;quot;$(ProjectDir)..\platform\network&amp;quot;;&amp;quot;$(ProjectDir)..\platform\network\win&amp;quot;;&amp;quot;$(ProjectDir)..\platform\cf&amp;quot;;&amp;quot;$(ProjectDir)..\platform\graphics&amp;quot;;&amp;quot;$(ProjectDir)..\platform\graphics\ca&amp;quot;;&amp;quot;$(ProjectDir)..\platform\graphics\filters&amp;quot;;&amp;quot;$(ProjectDir)..\platform\graphics\opentype&amp;quot;;&amp;quot;$(ProjectDir)..\platform\graphics\transforms&amp;quot;;&amp;quot;$(ProjectDir)..\platform\text&amp;quot;;&amp;quot;$(ProjectDir)..\platform\text\transcoder&amp;quot;;&amp;quot;$(ProjectDir)..\platform\graphics\win&amp;quot;;&amp;quot;$(ProjectDir)..\xml&amp;quot;;&amp;quot;$(ConfigurationBuildDir)\obj\WebCore\DerivedSources&amp;quot;;&amp;quot;$(ProjectDir)..\plugins&amp;quot;;&amp;quot;$(ProjectDir)..\plugins\win&amp;quot;;&amp;quot;$(ProjectDir)..\svg\animation&amp;quot;;&amp;quot;$(ProjectDir)..\svg\graphics&amp;quot;;&amp;quot;$(ProjectDir)..\svg\properties&amp;quot;;&amp;quot;$(ProjectDir)..\svg\graphics\filters&amp;quot;;&amp;quot;$(ProjectDir)..\svg&amp;quot;;&amp;quot;$(ProjectDir)..\wml&amp;quot;;&amp;quot;$(ProjectDir)..\storage&amp;quot;;&amp;quot;$(ProjectDir)..\websockets&amp;quot;;&amp;quot;$(ProjectDir)..\workers&amp;quot;;&amp;quot;$(ConfigurationBuildDir)\include&amp;quot;;&amp;quot;$(ConfigurationBuildDir)\include\private&amp;quot;;&amp;quot;$(ConfigurationBuildDir)\include\JavaScriptCore&amp;quot;;&amp;quot;$(ConfigurationBuildDir)\include\private\JavaScriptCore&amp;quot;;&amp;quot;$(ProjectDir)..\ForwardingHeaders&amp;quot;;&amp;quot;$(WebKitLibrariesDir)\include&amp;quot;;&amp;quot;$(WebKitLibrariesDir)\include\private&amp;quot;;&amp;quot;$(WebKitLibrariesDir)\include\private\JavaScriptCore&amp;quot;;&amp;quot;$(WebKitLibrariesDir)\include\pthreads&amp;quot;;&amp;quot;$(WebKitLibrariesDir)\include\sqlite&amp;quot;;&amp;quot;$(WebKitLibrariesDir)\include\JavaScriptCore&amp;quot;;&amp;quot;$(WebKitLibrariesDir)\include\zlib&amp;quot;&quot;
&gt;  		PreprocessorDefinitions=&quot;__WIN32__;DISABLE_3D_RENDERING;WEBCORE_CONTEXT_MENUS&quot;

Do you really want this change?

&gt; WebCore/html/canvas/CanvasRenderingContext.h:63
&gt; -    virtual PlatformLayer* platformLayer() const { return 0; }
&gt; +//    virtual PlatformLayer* platformLayer() const { return 0; }

No commenting out please!

&gt; WebCore/platform/graphics/ca/PlatformCAAnimation.h:47
&gt; +typedef struct _CACFAnimation *CACFAnimationRef;

The * should be on the other side here.

&gt; WebCore/platform/graphics/ca/win/PlatformCAAnimationWin.cpp:2
&gt; + * Copyright (C) 2010 Apple Inc. All rights reserved.

2011!

&gt; WebCore/platform/graphics/ca/win/PlatformCAAnimationWin.cpp:153
&gt; +static void initialize(PlatformCAAnimation* animation)
&gt; +{
&gt; +}

Unused?

&gt; WebCore/platform/graphics/ca/win/PlatformCAAnimationWin.cpp:188
&gt; +    RetainPtr&lt;CFStringRef&gt; s(AdoptCF, animation-&gt;keyPath().createCFString());
&gt; +    CACFAnimationSetKeyPath(m_animation.get(), s.get());

Please rename &apos;s&apos; to keyPath or similar.

&gt; WebCore/platform/graphics/ca/win/PlatformCAAnimationWin.cpp:220
&gt; +bool PlatformCAAnimation::supportsValueFunction()
&gt; +{
&gt; +    return true;
&gt; +}

Method should be const, could be inline.

&gt; WebCore/platform/graphics/ca/win/PlatformCAAnimationWin.cpp:300
&gt; +    RetainPtr&lt;CFStringRef&gt; s(AdoptCF, toCACFFillModeType(value).createCFString());
&gt; +    CACFAnimationSetFillMode(m_animation.get(), s.get());

Please rename &apos;s&apos;.

&gt; WebCore/platform/graphics/ca/win/PlatformCAAnimationWin.cpp:341
&gt; +    RetainPtr&lt;CFStringRef&gt; s(AdoptCF, toCACFValueFunctionType(value).createCFString());
&gt; +    CACFAnimationSetValueFunction(m_animation.get(), CACFValueFunctionGetFunctionWithName(s.get()));

ditto

&gt; WebCore/platform/graphics/ca/win/PlatformCALayerWin.cpp:2
&gt; + * Copyright (C) 2010 Apple Inc. All rights reserved.

2011!

&gt; WebCore/platform/graphics/ca/win/PlatformCALayerWin.cpp:47
&gt; +bool PlatformCALayer::isValueFunctionSupported()
&gt; +{
&gt; +    return true;
&gt; +}

Should be const and inline.

&gt; WebCore/platform/graphics/ca/win/PlatformCALayerWin.cpp:303
&gt; +PassRefPtr&lt;PlatformCAAnimation&gt; PlatformCALayer::animationForKey(const String&amp; key)

Method should be const.

&gt; WebCore/platform/graphics/ca/win/PlatformCALayerWin.cpp:460
&gt; +    return const_cast&lt;void*&gt;(CACFLayerGetContents(m_layer.get()));

Is that the right cast?

&gt; WebCore/platform/graphics/ca/win/PlatformCALayerWinInternal.cpp:2
&gt; + * Copyright (C) 2010 Apple Inc. All rights reserved.

2011!

&gt; WebCore/platform/graphics/ca/win/PlatformCALayerWinInternal.cpp:63
&gt; +    if (!owner() || !owner()-&gt;owner())

owner()-&gt;owner() is weird.

&gt; WebCore/platform/graphics/ca/win/PlatformCALayerWinInternal.h:2
&gt; + * Copyright (C) 2010 Apple Inc. All rights reserved.

2011

&gt; WebCore/platform/graphics/win/GraphicsContextCGWin.cpp:48
&gt; +    if (info.bmBitsPixel != 32)
&gt; +        return 0;

Why this change?

&gt; WebCore/platform/graphics/win/MediaPlayerPrivateQuickTimeVisualContext.cpp:104
&gt; +    virtual void platformCALayerLayoutSublayersOfLayer(PlatformCALayer*);
&gt; +    virtual bool platformCALayerRespondsToLayoutChanges() const { return true; }
&gt; +
&gt; +    virtual void platformCALayerAnimationStarted(CFTimeInterval beginTime) { }
&gt; +    virtual GraphicsLayer::CompositingCoordinatesOrientation platformCALayerContentsOrientation() const { return GraphicsLayer::CompositingCoordinatesBottomUp; }
&gt; +    virtual void platformCALayerPaintContents(GraphicsContext&amp;, const IntRect&amp; inClip) { }
&gt; +    virtual bool platformCALayerShowDebugBorders() const { return false; }
&gt; +    virtual bool platformCALayerShowRepaintCounter() const { return false; }
&gt; +    virtual int platformCALayerIncrementRepaintCount() { return 0; }
&gt; +
&gt; +    virtual bool platformCALayerContentsOpaque() const { return false; }
&gt; +    virtual bool platformCALayerDrawsContent() const { return false; }
&gt; +    virtual void platformCALayerLayerDidDisplay(PlatformLayer*) { }

Make these private if possible.

&gt; WebCore/platform/graphics/win/WKCACFLayerRenderer.cpp:481
&gt; +    if (!wkCACFContextBeginUpdate(m_context, space, sizeof(space), CACurrentMediaTime(), bounds, windowDirtyRects.data(), windowDirtyRects.size()))

Share the same CACurrentMediaTime you used above?

&gt; WebKit/win/FullscreenVideoController.cpp:193
&gt; +    virtual void platformCALayerLayoutSublayersOfLayer(PlatformCALayer*);
&gt; +    virtual bool platformCALayerRespondsToLayoutChanges() const { return true; }
&gt; +
&gt; +    virtual void platformCALayerAnimationStarted(CFTimeInterval beginTime) { }
&gt; +    virtual GraphicsLayer::CompositingCoordinatesOrientation platformCALayerContentsOrientation() const { return GraphicsLayer::CompositingCoordinatesBottomUp; }
&gt; +    virtual void platformCALayerPaintContents(GraphicsContext&amp;, const IntRect&amp; inClip) { }
&gt; +    virtual bool platformCALayerShowDebugBorders() const { return false; }
&gt; +    virtual bool platformCALayerShowRepaintCounter() const { return false; }
&gt; +    virtual int platformCALayerIncrementRepaintCount() { return 0; }
&gt; +
&gt; +    virtual bool platformCALayerContentsOpaque() const { return false; }
&gt; +    virtual bool platformCALayerDrawsContent() const { return false; }
&gt; +    virtual void platformCALayerLayerDidDisplay(PlatformLayer*) { }

Make private?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330604</commentid>
    <comment_count>60</comment_count>
      <attachid>78200</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-01-06 18:37:50 -0800</bug_when>
    <thetext>Comment on attachment 78200
Final Patch

r=me with comments, and questions about the vcproj change.

&gt; WebCore/WebCore.vcproj/WebCore.vcproj:22
&gt;  		&lt;Configuration
&gt;  			Name=&quot;Debug|Win32&quot;
&gt;  			ConfigurationType=&quot;4&quot;
&gt; -			InheritedPropertySheets=&quot;$(WebKitVSPropsRedirectionDir)..\..\WebKitLibraries\win\tools\vsprops\FeatureDefines.vsprops;$(WebKitVSPropsRedirectionDir)..\..\WebKitLibraries\win\tools\vsprops\common.vsprops;$(WebKitVSPropsRedirectionDir)..\..\WebKitLibraries\win\tools\vsprops\debug.vsprops;.\WebCoreCommon.vsprops;.\WebCoreCG.vsprops;.\WebCoreCFNetwork.vsprops;.\WebCorePthreads.vsprops;.\WebCoreMediaQT.vsprops;.\WebCoreQuartzCore.vsprops&quot;
&gt; +			InheritedPropertySheets=&quot;..\..\WebKitLibraries\win\tools\vsprops\FeatureDefines.vsprops;..\..\WebKitLibraries\win\tools\vsprops\common.vsprops;..\..\WebKitLibraries\win\tools\vsprops\debug.vsprops;.\WebCoreCommon.vsprops;.\WebCoreCG.vsprops;.\WebCoreCFNetwork.vsprops;.\WebCorePthreads.vsprops;.\WebCoreMediaQT.vsprops;.\WebCoreQuartzCore.vsprops&quot;
&gt;  			CharacterSet=&quot;1&quot;

Many of these changes look bad. You might want to hand-edit the project file.

&gt; WebCore/WebCore.vcproj/WebCoreCommon.vsprops:11
&gt; -		AdditionalIncludeDirectories=&quot;&amp;quot;$(ProjectDir)..&amp;quot;;&amp;quot;$(ProjectDir)..\accessibility&amp;quot;;&amp;quot;$(ProjectDir)..\accessibility\win&amp;quot;;&amp;quot;$(ProjectDir)..\bridge&amp;quot;;&amp;quot;$(ProjectDir)..\bridge\c&amp;quot;;&amp;quot;$(ProjectDir)..\bridge\jsc&amp;quot;;&amp;quot;$(ProjectDir)..\css&amp;quot;;&amp;quot;$(ProjectDir)..\editing&amp;quot;;&amp;quot;$(ProjectDir)..\fileapi&amp;quot;;&amp;quot;$(ProjectDir)..\rendering&amp;quot;;&amp;quot;$(ProjectDir)..\rendering\style&amp;quot;;&amp;quot;$(ProjectDir)..\rendering\svg&amp;quot;;&amp;quot;$(ProjectDir)..\bindings&amp;quot;;&amp;quot;$(ProjectDir)..\bindings\generic&amp;quot;;&amp;quot;$(ProjectDir)..\bindings\js&amp;quot;;&amp;quot;$(ProjectDir)..\bindings\js\specialization&amp;quot;;&amp;quot;$(ProjectDir)..\dom&amp;quot;;&amp;quot;$(ProjectDir)..\dom\default&amp;quot;;&amp;quot;$(ProjectDir)..\history&amp;quot;;&amp;quot;$(ProjectDir)..\html&amp;quot;;&amp;quot;$(ProjectDir)..\html\canvas&amp;quot;;&amp;quot;$(ProjectDir)..\html\parser&amp;quot;;&amp;quot;$(ProjectDir)..\html\shadow&amp;quot;;&amp;quot;$(ProjectDir)..\inspector&amp;quot;;&amp;quot;$(ProjectDir)..\loader&amp;quot;;&amp;quot;$(ProjectDir)..\loader\appcache&amp;quot;;&amp;quot;$(ProjectDir)..\loader\archive&amp;quot;;&amp;quot;$(ProjectDir)..\loader\archive\cf&amp;quot;;&amp;quot;$(ProjectDir)..\loader\cache&amp;quot;;&amp;quot;$(ProjectDir)..\loader\icon&amp;quot;;&amp;quot;$(ProjectDir)..\mathml&amp;quot;;&amp;quot;$(ProjectDir)..\notifications&amp;quot;;&amp;quot;$(ProjectDir)..\page&amp;quot;;&amp;quot;$(ProjectDir)..\page\animation&amp;quot;;&amp;quot;$(ProjectDir)..\page\win&amp;quot;;&amp;quot;$(ProjectDir)..\platform&amp;quot;;&amp;quot;$(ProjectDir)..\platform\animation&amp;quot;;&amp;quot;$(ProjectDir)..\platform\mock&amp;quot;;&amp;quot;$(ProjectDir)..\platform\sql&amp;quot;;&amp;quot;$(ProjectDir)..\platform\win&amp;quot;;&amp;quot;$(ProjectDir)..\platform\network&amp;quot;;&amp;quot;$(ProjectDir)..\platform\network\win&amp;quot;;&amp;quot;$(ProjectDir)..\platform\cf&amp;quot;;&amp;quot;$(ProjectDir)..\platform\graphics&amp;quot;;&amp;quot;$(ProjectDir)..\platform\graphics\filters&amp;quot;;&amp;quot;$(ProjectDir)..\platform\graphics\opentype&amp;quot;;&amp;quot;$(ProjectDir)..\platform\graphics\transforms&amp;quot;;&amp;quot;$(ProjectDir)..\platform\text&amp;quot;;&amp;quot;$(ProjectDir)..\platform\text\transcoder&amp;quot;;&amp;quot;$(ProjectDir)..\platform\graphics\win&amp;quot;;&amp;quot;$(ProjectDir)..\xml&amp;quot;;&amp;quot;$(ConfigurationBuildDir)\obj\WebCore\DerivedSources&amp;quot;;&amp;quot;$(ProjectDir)..\plugins&amp;quot;;&amp;quot;$(ProjectDir)..\plugins\win&amp;quot;;&amp;quot;$(ProjectDir)..\svg\animation&amp;quot;;&amp;quot;$(ProjectDir)..\svg\graphics&amp;quot;;&amp;quot;$(ProjectDir)..\svg\properties&amp;quot;;&amp;quot;$(ProjectDir)..\svg\graphics\filters&amp;quot;;&amp;quot;$(ProjectDir)..\svg&amp;quot;;&amp;quot;$(ProjectDir)..\wml&amp;quot;;&amp;quot;$(ProjectDir)..\storage&amp;quot;;&amp;quot;$(ProjectDir)..\websockets&amp;quot;;&amp;quot;$(ProjectDir)..\workers&amp;quot;;&amp;quot;$(ConfigurationBuildDir)\include&amp;quot;;&amp;quot;$(ConfigurationBuildDir)\include\private&amp;quot;;&amp;quot;$(ConfigurationBuildDir)\include\JavaScriptCore&amp;quot;;&amp;quot;$(ConfigurationBuildDir)\include\private\JavaScriptCore&amp;quot;;&amp;quot;$(ProjectDir)..\ForwardingHeaders&amp;quot;;&amp;quot;$(WebKitLibrariesDir)\include&amp;quot;;&amp;quot;$(WebKitLibrariesDir)\include\private&amp;quot;;&amp;quot;$(WebKitLibrariesDir)\include\private\JavaScriptCore&amp;quot;;&amp;quot;$(WebKitLibrariesDir)\include\pthreads&amp;quot;;&amp;quot;$(WebKitLibrariesDir)\include\sqlite&amp;quot;;&amp;quot;$(WebKitLibrariesDir)\include\JavaScriptCore&amp;quot;;&amp;quot;$(WebKitLibrariesDir)\include\zlib&amp;quot;&quot;
&gt; +		AdditionalIncludeDirectories=&quot;&amp;quot;$(ProjectDir)..&amp;quot;;&amp;quot;$(ProjectDir)..\accessibility&amp;quot;;&amp;quot;$(ProjectDir)..\accessibility\win&amp;quot;;&amp;quot;$(ProjectDir)..\bridge&amp;quot;;&amp;quot;$(ProjectDir)..\bridge\c&amp;quot;;&amp;quot;$(ProjectDir)..\bridge\jsc&amp;quot;;&amp;quot;$(ProjectDir)..\css&amp;quot;;&amp;quot;$(ProjectDir)..\editing&amp;quot;;&amp;quot;$(ProjectDir)..\fileapi&amp;quot;;&amp;quot;$(ProjectDir)..\rendering&amp;quot;;&amp;quot;$(ProjectDir)..\rendering\style&amp;quot;;&amp;quot;$(ProjectDir)..\rendering\svg&amp;quot;;&amp;quot;$(ProjectDir)..\bindings&amp;quot;;&amp;quot;$(ProjectDir)..\bindings\generic&amp;quot;;&amp;quot;$(ProjectDir)..\bindings\js&amp;quot;;&amp;quot;$(ProjectDir)..\bindings\js\specialization&amp;quot;;&amp;quot;$(ProjectDir)..\dom&amp;quot;;&amp;quot;$(ProjectDir)..\dom\default&amp;quot;;&amp;quot;$(ProjectDir)..\history&amp;quot;;&amp;quot;$(ProjectDir)..\html&amp;quot;;&amp;quot;$(ProjectDir)..\html\canvas&amp;quot;;&amp;quot;$(ProjectDir)..\html\parser&amp;quot;;&amp;quot;$(ProjectDir)..\html\shadow&amp;quot;;&amp;quot;$(ProjectDir)..\inspector&amp;quot;;&amp;quot;$(ProjectDir)..\loader&amp;quot;;&amp;quot;$(ProjectDir)..\loader\appcache&amp;quot;;&amp;quot;$(ProjectDir)..\loader\archive&amp;quot;;&amp;quot;$(ProjectDir)..\loader\archive\cf&amp;quot;;&amp;quot;$(ProjectDir)..\loader\cache&amp;quot;;&amp;quot;$(ProjectDir)..\loader\icon&amp;quot;;&amp;quot;$(ProjectDir)..\mathml&amp;quot;;&amp;quot;$(ProjectDir)..\notifications&amp;quot;;&amp;quot;$(ProjectDir)..\page&amp;quot;;&amp;quot;$(ProjectDir)..\page\animation&amp;quot;;&amp;quot;$(ProjectDir)..\page\win&amp;quot;;&amp;quot;$(ProjectDir)..\platform&amp;quot;;&amp;quot;$(ProjectDir)..\platform\animation&amp;quot;;&amp;quot;$(ProjectDir)..\platform\mock&amp;quot;;&amp;quot;$(ProjectDir)..\platform\sql&amp;quot;;&amp;quot;$(ProjectDir)..\platform\win&amp;quot;;&amp;quot;$(ProjectDir)..\platform\network&amp;quot;;&amp;quot;$(ProjectDir)..\platform\network\win&amp;quot;;&amp;quot;$(ProjectDir)..\platform\cf&amp;quot;;&amp;quot;$(ProjectDir)..\platform\graphics&amp;quot;;&amp;quot;$(ProjectDir)..\platform\graphics\ca&amp;quot;;&amp;quot;$(ProjectDir)..\platform\graphics\filters&amp;quot;;&amp;quot;$(ProjectDir)..\platform\graphics\opentype&amp;quot;;&amp;quot;$(ProjectDir)..\platform\graphics\transforms&amp;quot;;&amp;quot;$(ProjectDir)..\platform\text&amp;quot;;&amp;quot;$(ProjectDir)..\platform\text\transcoder&amp;quot;;&amp;quot;$(ProjectDir)..\platform\graphics\win&amp;quot;;&amp;quot;$(ProjectDir)..\xml&amp;quot;;&amp;quot;$(ConfigurationBuildDir)\obj\WebCore\DerivedSources&amp;quot;;&amp;quot;$(ProjectDir)..\plugins&amp;quot;;&amp;quot;$(ProjectDir)..\plugins\win&amp;quot;;&amp;quot;$(ProjectDir)..\svg\animation&amp;quot;;&amp;quot;$(ProjectDir)..\svg\graphics&amp;quot;;&amp;quot;$(ProjectDir)..\svg\properties&amp;quot;;&amp;quot;$(ProjectDir)..\svg\graphics\filters&amp;quot;;&amp;quot;$(ProjectDir)..\svg&amp;quot;;&amp;quot;$(ProjectDir)..\wml&amp;quot;;&amp;quot;$(ProjectDir)..\storage&amp;quot;;&amp;quot;$(ProjectDir)..\websockets&amp;quot;;&amp;quot;$(ProjectDir)..\workers&amp;quot;;&amp;quot;$(ConfigurationBuildDir)\include&amp;quot;;&amp;quot;$(ConfigurationBuildDir)\include\private&amp;quot;;&amp;quot;$(ConfigurationBuildDir)\include\JavaScriptCore&amp;quot;;&amp;quot;$(ConfigurationBuildDir)\include\private\JavaScriptCore&amp;quot;;&amp;quot;$(ProjectDir)..\ForwardingHeaders&amp;quot;;&amp;quot;$(WebKitLibrariesDir)\include&amp;quot;;&amp;quot;$(WebKitLibrariesDir)\include\private&amp;quot;;&amp;quot;$(WebKitLibrariesDir)\include\private\JavaScriptCore&amp;quot;;&amp;quot;$(WebKitLibrariesDir)\include\pthreads&amp;quot;;&amp;quot;$(WebKitLibrariesDir)\include\sqlite&amp;quot;;&amp;quot;$(WebKitLibrariesDir)\include\JavaScriptCore&amp;quot;;&amp;quot;$(WebKitLibrariesDir)\include\zlib&amp;quot;&quot;
&gt;  		PreprocessorDefinitions=&quot;__WIN32__;DISABLE_3D_RENDERING;WEBCORE_CONTEXT_MENUS&quot;

Do you really want this change?

&gt; WebCore/html/canvas/CanvasRenderingContext.h:63
&gt; -    virtual PlatformLayer* platformLayer() const { return 0; }
&gt; +//    virtual PlatformLayer* platformLayer() const { return 0; }

No commenting out please!

&gt; WebCore/platform/graphics/ca/PlatformCAAnimation.h:47
&gt; +typedef struct _CACFAnimation *CACFAnimationRef;

The * should be on the other side here.

&gt; WebCore/platform/graphics/ca/win/PlatformCAAnimationWin.cpp:2
&gt; + * Copyright (C) 2010 Apple Inc. All rights reserved.

2011!

&gt; WebCore/platform/graphics/ca/win/PlatformCAAnimationWin.cpp:153
&gt; +static void initialize(PlatformCAAnimation* animation)
&gt; +{
&gt; +}

Unused?

&gt; WebCore/platform/graphics/ca/win/PlatformCAAnimationWin.cpp:188
&gt; +    RetainPtr&lt;CFStringRef&gt; s(AdoptCF, animation-&gt;keyPath().createCFString());
&gt; +    CACFAnimationSetKeyPath(m_animation.get(), s.get());

Please rename &apos;s&apos; to keyPath or similar.

&gt; WebCore/platform/graphics/ca/win/PlatformCAAnimationWin.cpp:220
&gt; +bool PlatformCAAnimation::supportsValueFunction()
&gt; +{
&gt; +    return true;
&gt; +}

Method should be const, could be inline.

&gt; WebCore/platform/graphics/ca/win/PlatformCAAnimationWin.cpp:300
&gt; +    RetainPtr&lt;CFStringRef&gt; s(AdoptCF, toCACFFillModeType(value).createCFString());
&gt; +    CACFAnimationSetFillMode(m_animation.get(), s.get());

Please rename &apos;s&apos;.

&gt; WebCore/platform/graphics/ca/win/PlatformCAAnimationWin.cpp:341
&gt; +    RetainPtr&lt;CFStringRef&gt; s(AdoptCF, toCACFValueFunctionType(value).createCFString());
&gt; +    CACFAnimationSetValueFunction(m_animation.get(), CACFValueFunctionGetFunctionWithName(s.get()));

ditto

&gt; WebCore/platform/graphics/ca/win/PlatformCALayerWin.cpp:2
&gt; + * Copyright (C) 2010 Apple Inc. All rights reserved.

2011!

&gt; WebCore/platform/graphics/ca/win/PlatformCALayerWin.cpp:47
&gt; +bool PlatformCALayer::isValueFunctionSupported()
&gt; +{
&gt; +    return true;
&gt; +}

Should be const and inline.

&gt; WebCore/platform/graphics/ca/win/PlatformCALayerWin.cpp:303
&gt; +PassRefPtr&lt;PlatformCAAnimation&gt; PlatformCALayer::animationForKey(const String&amp; key)

Method should be const.

&gt; WebCore/platform/graphics/ca/win/PlatformCALayerWin.cpp:460
&gt; +    return const_cast&lt;void*&gt;(CACFLayerGetContents(m_layer.get()));

Is that the right cast?

&gt; WebCore/platform/graphics/ca/win/PlatformCALayerWinInternal.cpp:2
&gt; + * Copyright (C) 2010 Apple Inc. All rights reserved.

2011!

&gt; WebCore/platform/graphics/ca/win/PlatformCALayerWinInternal.cpp:63
&gt; +    if (!owner() || !owner()-&gt;owner())

owner()-&gt;owner() is weird.

&gt; WebCore/platform/graphics/ca/win/PlatformCALayerWinInternal.h:2
&gt; + * Copyright (C) 2010 Apple Inc. All rights reserved.

2011

&gt; WebCore/platform/graphics/win/GraphicsContextCGWin.cpp:48
&gt; +    if (info.bmBitsPixel != 32)
&gt; +        return 0;

Why this change?

&gt; WebCore/platform/graphics/win/MediaPlayerPrivateQuickTimeVisualContext.cpp:104
&gt; +    virtual void platformCALayerLayoutSublayersOfLayer(PlatformCALayer*);
&gt; +    virtual bool platformCALayerRespondsToLayoutChanges() const { return true; }
&gt; +
&gt; +    virtual void platformCALayerAnimationStarted(CFTimeInterval beginTime) { }
&gt; +    virtual GraphicsLayer::CompositingCoordinatesOrientation platformCALayerContentsOrientation() const { return GraphicsLayer::CompositingCoordinatesBottomUp; }
&gt; +    virtual void platformCALayerPaintContents(GraphicsContext&amp;, const IntRect&amp; inClip) { }
&gt; +    virtual bool platformCALayerShowDebugBorders() const { return false; }
&gt; +    virtual bool platformCALayerShowRepaintCounter() const { return false; }
&gt; +    virtual int platformCALayerIncrementRepaintCount() { return 0; }
&gt; +
&gt; +    virtual bool platformCALayerContentsOpaque() const { return false; }
&gt; +    virtual bool platformCALayerDrawsContent() const { return false; }
&gt; +    virtual void platformCALayerLayerDidDisplay(PlatformLayer*) { }

Make these private if possible.

&gt; WebCore/platform/graphics/win/WKCACFLayerRenderer.cpp:481
&gt; +    if (!wkCACFContextBeginUpdate(m_context, space, sizeof(space), CACurrentMediaTime(), bounds, windowDirtyRects.data(), windowDirtyRects.size()))

Share the same CACurrentMediaTime you used above?

&gt; WebKit/win/FullscreenVideoController.cpp:193
&gt; +    virtual void platformCALayerLayoutSublayersOfLayer(PlatformCALayer*);
&gt; +    virtual bool platformCALayerRespondsToLayoutChanges() const { return true; }
&gt; +
&gt; +    virtual void platformCALayerAnimationStarted(CFTimeInterval beginTime) { }
&gt; +    virtual GraphicsLayer::CompositingCoordinatesOrientation platformCALayerContentsOrientation() const { return GraphicsLayer::CompositingCoordinatesBottomUp; }
&gt; +    virtual void platformCALayerPaintContents(GraphicsContext&amp;, const IntRect&amp; inClip) { }
&gt; +    virtual bool platformCALayerShowDebugBorders() const { return false; }
&gt; +    virtual bool platformCALayerShowRepaintCounter() const { return false; }
&gt; +    virtual int platformCALayerIncrementRepaintCount() { return 0; }
&gt; +
&gt; +    virtual bool platformCALayerContentsOpaque() const { return false; }
&gt; +    virtual bool platformCALayerDrawsContent() const { return false; }
&gt; +    virtual void platformCALayerLayerDidDisplay(PlatformLayer*) { }

Make private?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330628</commentid>
    <comment_count>61</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-01-06 20:27:19 -0800</bug_when>
    <thetext>The Windows build has been failing since this was checked in.

On example &lt;http://build.webkit.org/builders/Windows%20Release%20%28Build%29/builds/10209/steps/compile-webkit/logs/stdio&gt;.


MediaPlayerPrivateQuickTimeVisualContext.cpp
..\platform\graphics\win\MediaPlayerPrivateQuickTimeVisualContext.cpp(1193) : error C2027: use of undefined type &apos;_CACFLayer&apos;
        c:\cygwin\home\buildbot\slave\win-release\build\WebCore\platform\graphics\GraphicsLayer.h(56) : see declaration of &apos;_CACFLayer&apos;
..\platform\graphics\win\MediaPlayerPrivateQuickTimeVisualContext.cpp(1193) : error C2227: left of &apos;-&gt;setLayoutClient&apos; must point to class/struct/union/generic type
..\platform\graphics\win\MediaPlayerPrivateQuickTimeVisualContext.cpp(1212) : error C2027: use of undefined type &apos;_CACFLayer&apos;
        c:\cygwin\home\buildbot\slave\win-release\build\WebCore\platform\graphics\GraphicsLayer.h(56) : see declaration of &apos;_CACFLayer&apos;
..\platform\graphics\win\MediaPlayerPrivateQuickTimeVisualContext.cpp(1212) : error C2227: left of &apos;-&gt;addSublayer&apos; must point to class/struct/union/generic type
..\platform\graphics\win\MediaPlayerPrivateQuickTimeVisualContext.cpp(1213) : error C2027: use of undefined type &apos;_CACFLayer&apos;
        c:\cygwin\home\buildbot\slave\win-release\build\WebCore\platform\graphics\GraphicsLayer.h(56) : see declaration of &apos;_CACFLayer&apos;
..\platform\graphics\win\MediaPlayerPrivateQuickTimeVisualContext.cpp(1213) : error C2227: left of &apos;-&gt;setNeedsLayout&apos; must point to class/struct/union/generic type
MediaPlayerPrivateQuickTimeWin.cpp
..\platform\graphics\win\MediaPlayerPrivateQuickTimeWin.cpp(763) : error C2027: use of undefined type &apos;_CACFLayer&apos;
        c:\cygwin\home\buildbot\slave\win-release\build\WebCore\platform\graphics\GraphicsLayer.h(56) : see declaration of &apos;_CACFLayer&apos;
..\platform\graphics\win\MediaPlayerPrivateQuickTimeWin.cpp(763) : error C2227: left of &apos;-&gt;setNeedsDisplay&apos; must point to class/struct/union/generic type
GraphicsLayerCACF.cpp
..\platform\graphics\win\GraphicsLayerCACF.cpp(375) : error C2679: binary &apos;=&apos; : no operator found which takes a right-hand operand of type &apos;PlatformLayer *&apos; (or there is no acceptable conversion)
        c:\cygwin\home\buildbot\slave\win-release\build\webkitbuild\release\include\private\javascriptcore\RefPtr.h(73): could be &apos;WTF::RefPtr&lt;T&gt; &amp;WTF::RefPtr&lt;T&gt;::operator =(const WTF::RefPtr&lt;T&gt; &amp;)&apos;
        with
        [
            T=WebCore::WKCACFLayer
        ]
        c:\cygwin\home\buildbot\slave\win-release\build\webkitbuild\release\include\private\javascriptcore\RefPtr.h(74): or &apos;WTF::RefPtr&lt;T&gt; &amp;WTF::RefPtr&lt;T&gt;::operator =(T *)&apos;
        with
        [
            T=WebCore::WKCACFLayer
        ]
        c:\cygwin\home\buildbot\slave\win-release\build\webkitbuild\release\include\private\javascriptcore\RefPtr.h(75): or &apos;WTF::RefPtr&lt;T&gt; &amp;WTF::RefPtr&lt;T&gt;::operator =(const WTF::PassRefPtr&lt;T&gt; &amp;)&apos;
        with
        [
            T=WebCore::WKCACFLayer
        ]
        c:\cygwin\home\buildbot\slave\win-release\build\webkitbuild\release\include\private\javascriptcore\RefPtr.h(76): or &apos;WTF::RefPtr&lt;T&gt; &amp;WTF::RefPtr&lt;T&gt;::operator =(const WTF::NonNullPassRefPtr&lt;T&gt; &amp;)&apos;
        with
        [
            T=WebCore::WKCACFLayer
        ]
        c:\cygwin\home\buildbot\slave\win-release\build\webkitbuild\release\include\private\javascriptcore\RefPtr.h(78): or &apos;WTF::RefPtr&lt;T&gt; &amp;WTF::RefPtr&lt;T&gt;::operator =(std::nullptr_t)&apos;
        with
        [
            T=WebCore::WKCACFLayer
        ]
        while trying to match the argument list &apos;(WTF::RefPtr&lt;T&gt;, PlatformLayer *)&apos;
        with
        [
            T=WebCore::WKCACFLayer
        ]
..\platform\graphics\win\GraphicsLayerCACF.cpp(385) : error C2556: &apos;PlatformLayer *WebCore::GraphicsLayerCACF::hostLayerForSublayers(void) const&apos; : overloaded function differs only by return type from &apos;WebCore::WKCACFLayer *WebCore::GraphicsLayerCACF::hostLayerForSublayers(void) const&apos;
        c:\cygwin\home\buildbot\slave\win-release\build\webcore\platform\graphics\win\GraphicsLayerCACF.h(93) : see declaration of &apos;WebCore::GraphicsLayerCACF::hostLayerForSublayers&apos;
..\platform\graphics\win\GraphicsLayerCACF.cpp(385) : error C2371: &apos;WebCore::GraphicsLayerCACF::hostLayerForSublayers&apos; : redefinition; different basic types
        c:\cygwin\home\buildbot\slave\win-release\build\webcore\platform\graphics\win\GraphicsLayerCACF.h(93) : see declaration of &apos;WebCore::GraphicsLayerCACF::hostLayerForSublayers&apos;
..\platform\graphics\win\GraphicsLayerCACF.cpp(390) : error C2556: &apos;PlatformLayer *WebCore::GraphicsLayerCACF::layerForSuperlayer(void) const&apos; : overloaded function differs only by return type from &apos;WebCore::WKCACFLayer *WebCore::GraphicsLayerCACF::layerForSuperlayer(void) const&apos;
        c:\cygwin\home\buildbot\slave\win-release\build\webcore\platform\graphics\win\GraphicsLayerCACF.h(94) : see declaration of &apos;WebCore::GraphicsLayerCACF::layerForSuperlayer&apos;
..\platform\graphics\win\GraphicsLayerCACF.cpp(390) : error C2371: &apos;WebCore::GraphicsLayerCACF::layerForSuperlayer&apos; : redefinition; different basic types
        c:\cygwin\home\buildbot\slave\win-release\build\webcore\platform\graphics\win\GraphicsLayerCACF.h(94) : see declaration of &apos;WebCore::GraphicsLayerCACF::layerForSuperlayer&apos;
..\platform\graphics\win\GraphicsLayerCACF.cpp(396) : error C2440: &apos;return&apos; : cannot convert from &apos;WebCore::WKCACFLayer *&apos; to &apos;PlatformLayer *&apos;
        Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
..\platform\graphics\win\GraphicsLayerCACF.cpp(493) : error C2264: &apos;WebCore::GraphicsLayerCACF::layerForSuperlayer&apos; : error in function definition or declaration; function not called</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330629</commentid>
    <comment_count>62</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-01-06 20:27:36 -0800</bug_when>
    <thetext>I wanted to fix this, but I could not figure out exactly how.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330632</commentid>
    <comment_count>63</comment_count>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2011-01-06 20:32:58 -0800</bug_when>
    <thetext>Thanks for trying Darin. I&apos;ve been trying to get the Windows side of this checked in for the last several hours. I am almost there, but am now stuck because DRT is crashing on every test, even those having nothing to do with compositing. I don&apos;t understand the errors being spewed so I will try again tomorrow. It probably just needs a clean rebuild.

For now I am back the change out. Sorry for the delay...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330637</commentid>
    <comment_count>64</comment_count>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2011-01-06 20:54:51 -0800</bug_when>
    <thetext>Backed out latest change in http://trac.webkit.org/changeset/75227. Will fix the Windows side and then resubmit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330736</commentid>
    <comment_count>65</comment_count>
      <attachid>78200</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-01-07 05:28:31 -0800</bug_when>
    <thetext>Comment on attachment 78200
Final Patch

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

You should make sure that the new CACFAnimation stuff you use is all present in WebKitSupportLibrary.

&gt; WebCore/platform/graphics/win/WKCACFLayerRenderer.cpp:538
&gt; +    // If timeToNextRender is not infinity, it means animations are running, so queue up to render again
&gt; +    if (timeToNextRender != numeric_limits&lt;CFTimeInterval&gt;::infinity())
&gt; +        renderSoon();

It seems wasteful always to render again immediately rather than waiting until timeToNextRender has elapsed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330883</commentid>
    <comment_count>66</comment_count>
      <attachid>78251</attachid>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2011-01-07 11:35:24 -0800</bug_when>
    <thetext>Created attachment 78251
Final Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330885</commentid>
    <comment_count>67</comment_count>
      <attachid>78251</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-01-07 11:40:24 -0800</bug_when>
    <thetext>Comment on attachment 78251
Final Patch

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330899</commentid>
    <comment_count>68</comment_count>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2011-01-07 12:01:09 -0800</bug_when>
    <thetext>Final patch landed in http://trac.webkit.org/changeset/75262</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330937</commentid>
    <comment_count>69</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-01-07 12:46:09 -0800</bug_when>
    <thetext>(In reply to comment #68)
&gt; Final patch landed in http://trac.webkit.org/changeset/75262

Broke Chromium compile (forgot an include?): http://build.webkit.org/builders/Chromium%20Linux%20Release/builds/20309/steps/compile-webkit/logs/stdio</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330973</commentid>
    <comment_count>70</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-07 13:36:03 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/75262 might have broken Windows Release (Build), Windows Debug (Build), and Chromium Linux Release</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>331980</commentid>
    <comment_count>71</comment_count>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2011-01-10 15:13:08 -0800</bug_when>
    <thetext>I no longer see any build breakage related to these patches. Closing</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>73632</attachid>
            <date>2010-11-11 11:52:09 -0800</date>
            <delta_ts>2010-11-11 16:24:07 -0800</delta_ts>
            <desc>Patch changing name of GraphicsLayerCA.* to GraphicsLayerMac.*</desc>
            <filename>bug-49388-20101111115207.patch</filename>
            <type>text/plain</type>
            <size>272540</size>
            <attacher name="Chris Marrin">cmarrin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MTgzOSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTggQEAKKzIwMTAtMTEtMTEgIENocmlzIE1hcnJpbiAgPGNtYXJyaW5AYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNo
YXJlIGNvZGUgYmV0d2VlbiBNYWMgKENBKSBhbmQgV2luZG93cyAoQ0FDRikgR3JhcGhpY3NMYXll
ciBpbXBsZW1lbnRhdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQ5Mzg4CisKKyAgICAgICAgUmVuYW1lZCBHcmFwaGljc0xheWVyQ0EuKiB0byBH
cmFwaGljc0xheWVyTWFjLioKKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NMYXllckNB
Lmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzTGF5
ZXJDQS5tbTogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhp
Y3NMYXllck1hYy5oOiBDb3BpZWQgZnJvbSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9H
cmFwaGljc0xheWVyQ0EuaC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhp
Y3NMYXllck1hYy5tbTogQ29waWVkIGZyb20gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMv
R3JhcGhpY3NMYXllckNBLm1tLgorCiAyMDEwLTExLTExICBNaWhhaSBQYXJwYXJpdGEgIDxtaWhh
aXBAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgcm9sbG91dC4gCkluZGV4OiBX
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gNzE4MzIp
CisrKyBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBj
b3B5KQpAQCAtMjg2LDggKzI4Niw2IEBACiAJCTBGNTAwQUIxMEY1NERCMzEwMEVFRjkyOCAvKiBU
cmFuc2Zvcm1TdGF0ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjUwMEFCMDBGNTREQjMxMDBFRUY5MjggLyogVHJhbnNmb3JtU3RhdGUuY3BwICov
OyB9OwogCQkwRjU2MDI4RjBFNEI3NjU4MDA2NUIwMzggLyogUmVuZGVyTWFycXVlZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1NjAyOEQwRTRCNzY1
ODAwNjVCMDM4IC8qIFJlbmRlck1hcnF1ZWUuaCAqLzsgfTsKIAkJMEY1NjAyOTAwRTRCNzY1ODAw
NjVCMDM4IC8qIFJlbmRlck1hcnF1ZWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEY1NjAyOEUwRTRCNzY1ODAwNjVCMDM4IC8qIFJlbmRlck1hcnF1
ZWUuY3BwICovOyB9OwotCQkwRjU4MEIwNTBGMTJBMjU1MDA1MUQ2ODkgLyogR3JhcGhpY3NMYXll
ckNBLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1
ODBCMDMwRjEyQTI1NDAwNTFENjg5IC8qIEdyYXBoaWNzTGF5ZXJDQS5tbSAqLzsgfTsKLQkJMEY1
ODBCMDYwRjEyQTI1NTAwNTFENjg5IC8qIEdyYXBoaWNzTGF5ZXJDQS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1ODBCMDQwRjEyQTI1NTAwNTFENjg5
IC8qIEdyYXBoaWNzTGF5ZXJDQS5oICovOyB9OwogCQkwRjU4MEIwQzBGMTJBMjY5MDA1MUQ2ODkg
LyogR3JhcGhpY3NMYXllci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjU4MEIwOTBGMTJBMjY5MDA1MUQ2ODkgLyogR3JhcGhpY3NMYXllci5jcHAg
Ki87IH07CiAJCTBGNTgwQjBEMEYxMkEyNjkwMDUxRDY4OSAvKiBHcmFwaGljc0xheWVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjU4MEIwQTBGMTJB
MjY5MDA1MUQ2ODkgLyogR3JhcGhpY3NMYXllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNTgwQjBFMEYxMkEyNjkwMDUxRDY4OSAvKiBHcmFw
aGljc0xheWVyQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjU4MEIwQjBGMTJBMjY5MDA1MUQ2ODkgLyogR3JhcGhpY3NMYXllckNsaWVudC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMDIy
LDYgKzEwMjAsOCBAQAogCQk0OTg3NzBGMjEyNDJDNTM1MDAyMjI2QkEgLyogVGlsaW5nRGF0YS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTg3NzBE
OTEyNDJDNTM1MDAyMjI2QkEgLyogVGlsaW5nRGF0YS5jcHAgKi87IH07CiAJCTQ5ODc3MEYzMTI0
MkM1MzUwMDIyMjZCQSAvKiBUaWxpbmdEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0OTg3NzBEQTEyNDJDNTM1MDAyMjI2QkEgLyogVGlsaW5nRGF0
YS5oICovOyB9OwogCQk0OTg3NzE1MzEyNDNGOUZBMDAyMjI2QkEgLyogRHJhd2luZ0J1ZmZlck1h
Yy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5ODc3
MTUyMTI0M0Y5RkEwMDIyMjZCQSAvKiBEcmF3aW5nQnVmZmVyTWFjLm1tICovOyB9OworCQk0OTlC
M0M1OTEyOEM2NDFFMDBFNzI2QzIgLyogR3JhcGhpY3NMYXllck1hYy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDk5QjNDNTcxMjhDNjQxRTAwRTcyNkMy
IC8qIEdyYXBoaWNzTGF5ZXJNYWMuaCAqLzsgfTsKKwkJNDk5QjNDNUExMjhDNjQxRTAwRTcyNkMy
IC8qIEdyYXBoaWNzTGF5ZXJNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0OTlCM0M1ODEyOEM2NDFFMDBFNzI2QzIgLyogR3JhcGhpY3NMYXllck1h
Yy5tbSAqLzsgfTsKIAkJNDlCNjlFNUUxMjU0RkVFRDAwN0Q1N0VCIC8qIExvb3BCbGlubkNsYXNz
aWZpZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDlCNjlFNTUxMjU0RkVFRDAwN0Q1N0VCIC8qIExvb3BCbGlubkNsYXNzaWZpZXIuY3BwICovOyB9
OwogCQk0OUI2OUU1RjEyNTRGRUVEMDA3RDU3RUIgLyogTG9vcEJsaW5uQ2xhc3NpZmllci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlCNjlFNTYxMjU0
RkVFRDAwN0Q1N0VCIC8qIExvb3BCbGlubkNsYXNzaWZpZXIuaCAqLzsgfTsKIAkJNDlCNjlFNjAx
MjU0RkVFRDAwN0Q1N0VCIC8qIExvb3BCbGlubkNvbnN0YW50cy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlCNjlFNTcxMjU0RkVFRDAwN0Q1N0VCIC8q
IExvb3BCbGlubkNvbnN0YW50cy5oICovOyB9OwpAQCAtNjMyNyw4ICs2MzI3LDYgQEAKIAkJMEY1
MDBBQjAwRjU0REIzMTAwRUVGOTI4IC8qIFRyYW5zZm9ybVN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRyYW5zZm9ybVN0YXRlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEY1NjAyOEQwRTRCNzY1ODAwNjVCMDM4IC8qIFJlbmRlck1hcnF1
ZWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyTWFycXVlZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjU2MDI4RTBFNEI3NjU4MDA2NUIwMzggLyog
UmVuZGVyTWFycXVlZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBS
ZW5kZXJNYXJxdWVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEY1ODBCMDMw
RjEyQTI1NDAwNTFENjg5IC8qIEdyYXBoaWNzTGF5ZXJDQS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdyYXBoaWNzTGF5ZXJDQS5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJMEY1ODBCMDQwRjEyQTI1NTAwNTFENjg5IC8qIEdyYXBoaWNzTGF5ZXJD
QS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0xheWVyQ0EuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1ODBCMDkwRjEyQTI2OTAwNTFENjg5IC8q
IEdyYXBoaWNzTGF5ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
R3JhcGhpY3NMYXllci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNTgwQjBB
MEYxMkEyNjkwMDUxRDY4OSAvKiBHcmFwaGljc0xheWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEdyYXBoaWNzTGF5ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEY1ODBCMEIwRjEyQTI2OTAwNTFENjg5IC8qIEdyYXBoaWNzTGF5ZXJDbGllbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NMYXllckNsaWVudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzEyNyw2ICs3MTI1LDggQEAKIAkJNDk4NzcwRDkx
MjQyQzUzNTAwMjIyNkJBIC8qIFRpbGluZ0RhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gVGlsaW5nRGF0YS5jcHA7IHBhdGggPSBncHUvVGlsaW5nRGF0YS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5ODc3MERBMTI0MkM1MzUwMDIyMjZCQSAv
KiBUaWxpbmdEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFRpbGluZ0Rh
dGEuaDsgcGF0aCA9IGdwdS9UaWxpbmdEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQ5ODc3MTUyMTI0M0Y5RkEwMDIyMjZCQSAvKiBEcmF3aW5nQnVmZmVyTWFjLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gRHJhd2luZ0J1ZmZlck1hYy5tbTsg
cGF0aCA9IGdwdS9tYWMvRHJhd2luZ0J1ZmZlck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNDk5QjNDNTcxMjhDNjQxRTAwRTcyNkMyIC8qIEdyYXBoaWNzTGF5ZXJNYWMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NMYXllck1hYy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0OTlCM0M1ODEyOEM2NDFFMDBFNzI2QzIgLyogR3Jh
cGhpY3NMYXllck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IEdyYXBoaWNzTGF5ZXJNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5QjY5
RTU1MTI1NEZFRUQwMDdENTdFQiAvKiBMb29wQmxpbm5DbGFzc2lmaWVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExvb3BCbGlubkNsYXNzaWZpZXIuY3BwOyBwYXRo
ID0gZ3B1L0xvb3BCbGlubkNsYXNzaWZpZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0OUI2OUU1NjEyNTRGRUVEMDA3RDU3RUIgLyogTG9vcEJsaW5uQ2xhc3NpZmllci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMb29wQmxpbm5DbGFzc2lmaWVyLmg7IHBh
dGggPSBncHUvTG9vcEJsaW5uQ2xhc3NpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0OUI2OUU1NzEyNTRGRUVEMDA3RDU3RUIgLyogTG9vcEJsaW5uQ29uc3RhbnRzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExvb3BCbGlubkNvbnN0YW50cy5oOyBwYXRo
ID0gZ3B1L0xvb3BCbGlubkNvbnN0YW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTY2NDUsOCArMTY2NDUsOCBAQAogCQkJCUIyQUZGQzdCMEQwMEE1QzEwMDMwMDc0RCAvKiBH
bHlwaFBhZ2VUcmVlTm9kZU1hYy5jcHAgKi8sCiAJCQkJNDlGRkJGMUMxMUM4NTUwRTAwNkE3MTE4
IC8qIEdyYXBoaWNzQ29udGV4dDNETWFjLm1tICovLAogCQkJCUIyNzdCNDAzMEIyMkYzN0MwMDA0
QkVDNiAvKiBHcmFwaGljc0NvbnRleHRNYWMubW0gKi8sCi0JCQkJMEY1ODBCMDQwRjEyQTI1NTAw
NTFENjg5IC8qIEdyYXBoaWNzTGF5ZXJDQS5oICovLAotCQkJCTBGNTgwQjAzMEYxMkEyNTQwMDUx
RDY4OSAvKiBHcmFwaGljc0xheWVyQ0EubW0gKi8sCisJCQkJNDk5QjNDNTcxMjhDNjQxRTAwRTcy
NkMyIC8qIEdyYXBoaWNzTGF5ZXJNYWMuaCAqLywKKwkJCQk0OTlCM0M1ODEyOEM2NDFFMDBFNzI2
QzIgLyogR3JhcGhpY3NMYXllck1hYy5tbSAqLywKIAkJCQlCMjc1MzU4RDBCMDUzQTY2MDAyQ0U2
NEYgLyogSWNvbk1hYy5tbSAqLywKIAkJCQlCMjc1MzU0RTBCMDUzODE0MDAyQ0U2NEYgLyogSW1h
Z2VNYWMubW0gKi8sCiAJCQkJQjI3NTM1NEYwQjA1MzgxNDAwMkNFNjRGIC8qIEludFBvaW50TWFj
Lm1tICovLApAQCAtMTk3MTUsNyArMTk3MTUsNiBAQAogCQkJCUE4MEQ2NzA4MEU5RTlERUIwMEU0
MjBGMCAvKiBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVDRy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTg4RkUzMzQwRTVFRUU4NzAwOEQ4QzBGIC8qIEdyYXBoaWNzQ29udGV4dFByaXZhdGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGNTgwQjBEMEYxMkEyNjkwMDUxRDY4OSAvKiBHcmFwaGlj
c0xheWVyLmggaW4gSGVhZGVycyAqLywKLQkJCQkwRjU4MEIwNjBGMTJBMjU1MDA1MUQ2ODkgLyog
R3JhcGhpY3NMYXllckNBLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU4MEIwRTBGMTJBMjY5MDA1
MUQ2ODkgLyogR3JhcGhpY3NMYXllckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJBMDE1
QUIwQUY2Q0Q1MzAwNkJDRTBFIC8qIEdyYXBoaWNzVHlwZXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUM1MEI1NjE3MTIxMTlEMjMwMDhCNDZFMCAvKiBHcm91cFNldHRpbmdzLmggaW4gSGVhZGVycyAq
LywKQEAgLTIxMzYxLDYgKzIxMzYwLDcgQEAKIAkJCQk5M0YxOTlFRDA4MjQ1RTU5MDAxRTlBQkMg
LyogWFNMVFByb2Nlc3Nvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFCRTUxMkUwQ0Y2QzUxMjAw
MkVBOTU5IC8qIFhTTFRVbmljb2RlU29ydC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdERDREODcw
RkRGNEQ2RTAwRUNGOUE0IC8qIFhTU0F1ZGl0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ5OUIz
QzU5MTI4QzY0MUUwMEU3MjZDMiAvKiBHcmFwaGljc0xheWVyTWFjLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwODI1MDkzOTEyOEJENEQ4MDBFMkVEOEUgLyogU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0
LmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMDsKQEAgLTIxNDIxLDYgKzIxNDIxLDcgQEAKIAkJCWlzYSA9IFBCWFByb2plY3Q7
CiAJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMTQ5QzI4NDMwODkwMkIxMTAwOEE5RUZDIC8q
IEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYUHJvamVjdCAiV2ViQ29yZSIgKi87CiAJ
CQljb21wYXRpYmlsaXR5VmVyc2lvbiA9ICJYY29kZSAyLjQiOworCQkJZGV2ZWxvcG1lbnRSZWdp
b24gPSBFbmdsaXNoOwogCQkJaGFzU2Nhbm5lZEZvckVuY29kaW5ncyA9IDE7CiAJCQlrbm93blJl
Z2lvbnMgPSAoCiAJCQkJRW5nbGlzaCwKQEAgLTIyMzQ3LDcgKzIyMzQ4LDYgQEAKIAkJCQlCMkVE
OTc3MTBCMUY1NUNFMDAyNTdEMEYgLyogR3JhcGhpY3NDb250ZXh0Q0cuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQjI3N0I0MDQwQjIyRjM3QzAwMDRCRUM2IC8qIEdyYXBoaWNzQ29udGV4dE1hYy5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTBGNTgwQjBDMEYxMkEyNjkwMDUxRDY4OSAvKiBHcmFwaGlj
c0xheWVyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTBGNTgwQjA1MEYxMkEyNTUwMDUxRDY4OSAv
KiBHcmFwaGljc0xheWVyQ0EubW0gaW4gU291cmNlcyAqLywKIAkJCQlCMkEwMTVBQTBBRjZDRDUz
MDA2QkNFMEUgLyogR3JhcGhpY3NUeXBlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDNTBCNTYx
NjEyMTE5RDIzMDA4QjQ2RTAgLyogR3JvdXBTZXR0aW5ncy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlGNTVCM0RCRjEyNTFGMTJEMDAzRUYyNjkgLyogSGlkZGVuSW5wdXRUeXBlLmNwcCBpbiBTb3Vy
Y2VzICovLApAQCAtMjM5MzEsNiArMjM5MzEsNyBAQAogCQkJCTkzRjE5QjA1MDgyNDVFNTkwMDFF
OUFCQyAvKiBYU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMUJF
NTEyRDBDRjZDNTEyMDAyRUE5NTkgLyogWFNMVFVuaWNvZGVTb3J0LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTk3REQ0RDg2MEZERjRENkUwMEVDRjlBNCAvKiBYU1NBdWRpdG9yLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTQ5OUIzQzVBMTI4QzY0MUUwMEU3MjZDMiAvKiBHcmFwaGljc0xheWVyTWFj
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJv
Y2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9H
cmFwaGljc0xheWVyQ0EuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9HcmFwaGljc0xheWVyQ0EuaAkocmV2aXNpb24gNzE4MzIpCisrKyBXZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0xheWVyQ0EuaAkod29ya2luZyBjb3B5KQpAQCAtMSwz
ODggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09N
UFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCi0gKi8KLQotI2lmbmRlZiBHcmFwaGljc0xheWVyQ0FfaAotI2RlZmluZSBHcmFwaGljc0xh
eWVyQ0FfaAotCi0jaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotCi0jaW5jbHVkZSAi
R3JhcGhpY3NMYXllci5oIgotI2luY2x1ZGUgIldlYkxheWVyLmgiCi0jaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5Q
dHIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+Ci0KLUBjbGFzcyBDQUJhc2lj
QW5pbWF0aW9uOwotQGNsYXNzIENBS2V5ZnJhbWVBbmltYXRpb247Ci1AY2xhc3MgQ0FNZWRpYVRp
bWluZ0Z1bmN0aW9uOwotQGNsYXNzIENBUHJvcGVydHlBbmltYXRpb247Ci1AY2xhc3MgV2ViQW5p
bWF0aW9uRGVsZWdhdGU7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgR3JhcGhpY3NM
YXllckNBIDogcHVibGljIEdyYXBoaWNzTGF5ZXIgewotcHVibGljOgotCi0gICAgR3JhcGhpY3NM
YXllckNBKEdyYXBoaWNzTGF5ZXJDbGllbnQqKTsKLSAgICB2aXJ0dWFsIH5HcmFwaGljc0xheWVy
Q0EoKTsKLQotICAgIHZpcnR1YWwgdm9pZCBzZXROYW1lKGNvbnN0IFN0cmluZyYpOwotCi0gICAg
Ly8gZm9yIGhvc3RpbmcgdGhpcyBHcmFwaGljc0xheWVyIGluIGEgbmF0aXZlIGxheWVyIGhpZXJh
cmNoeQotICAgIHZpcnR1YWwgTmF0aXZlTGF5ZXIgbmF0aXZlTGF5ZXIoKSBjb25zdDsKLQotICAg
IHZpcnR1YWwgYm9vbCBzZXRDaGlsZHJlbihjb25zdCBWZWN0b3I8R3JhcGhpY3NMYXllcio+Jik7
Ci0gICAgdmlydHVhbCB2b2lkIGFkZENoaWxkKEdyYXBoaWNzTGF5ZXIqKTsKLSAgICB2aXJ0dWFs
IHZvaWQgYWRkQ2hpbGRBdEluZGV4KEdyYXBoaWNzTGF5ZXIqLCBpbnQgaW5kZXgpOwotICAgIHZp
cnR1YWwgdm9pZCBhZGRDaGlsZEFib3ZlKEdyYXBoaWNzTGF5ZXIqIGxheWVyLCBHcmFwaGljc0xh
eWVyKiBzaWJsaW5nKTsKLSAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGRCZWxvdyhHcmFwaGljc0xh
eWVyKiBsYXllciwgR3JhcGhpY3NMYXllciogc2libGluZyk7Ci0gICAgdmlydHVhbCBib29sIHJl
cGxhY2VDaGlsZChHcmFwaGljc0xheWVyKiBvbGRDaGlsZCwgR3JhcGhpY3NMYXllciogbmV3Q2hp
bGQpOwotCi0gICAgdmlydHVhbCB2b2lkIHJlbW92ZUZyb21QYXJlbnQoKTsKLQotICAgIHZpcnR1
YWwgdm9pZCBzZXRNYXNrTGF5ZXIoR3JhcGhpY3NMYXllciopOwotICAgIHZpcnR1YWwgdm9pZCBz
ZXRSZXBsaWNhdGVkTGF5ZXIoR3JhcGhpY3NMYXllciopOwotCi0gICAgdmlydHVhbCB2b2lkIHNl
dFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0QW5jaG9y
UG9pbnQoY29uc3QgRmxvYXRQb2ludDNEJik7Ci0gICAgdmlydHVhbCB2b2lkIHNldFNpemUoY29u
c3QgRmxvYXRTaXplJik7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0VHJhbnNmb3JtKGNvbnN0IFRy
YW5zZm9ybWF0aW9uTWF0cml4Jik7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q2hpbGRyZW5UcmFu
c2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKTsKLQotICAgIHZpcnR1YWwgdm9pZCBz
ZXRQcmVzZXJ2ZXMzRChib29sKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0TWFza3NUb0JvdW5kcyhi
b29sKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0RHJhd3NDb250ZW50KGJvb2wpOwotCi0gICAgdmly
dHVhbCB2b2lkIHNldEJhY2tncm91bmRDb2xvcihjb25zdCBDb2xvciYpOwotICAgIHZpcnR1YWwg
dm9pZCBjbGVhckJhY2tncm91bmRDb2xvcigpOwotCi0gICAgdmlydHVhbCB2b2lkIHNldENvbnRl
bnRzT3BhcXVlKGJvb2wpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRCYWNrZmFjZVZpc2liaWxpdHko
Ym9vbCk7Ci0KLSAgICAvLyByZXR1cm4gdHJ1ZSBpZiB3ZSBzdGFydGVkIGFuIGFuaW1hdGlvbgot
ICAgIHZpcnR1YWwgdm9pZCBzZXRPcGFjaXR5KGZsb2F0KTsKLQotICAgIHZpcnR1YWwgdm9pZCBz
ZXROZWVkc0Rpc3BsYXkoKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNEaXNwbGF5SW5SZWN0
KGNvbnN0IEZsb2F0UmVjdCYpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c05lZWRzRGlz
cGxheSgpOwotICAgIAotICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1JlY3QoY29uc3QgSW50
UmVjdCYpOwotICAgIAotICAgIHZpcnR1YWwgdm9pZCBzdXNwZW5kQW5pbWF0aW9ucyhkb3VibGUg
dGltZSk7Ci0gICAgdmlydHVhbCB2b2lkIHJlc3VtZUFuaW1hdGlvbnMoKTsKLQotICAgIHZpcnR1
YWwgYm9vbCBhZGRBbmltYXRpb24oY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmLCBjb25zdCBJbnRT
aXplJiBib3hTaXplLCBjb25zdCBBbmltYXRpb24qLCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5h
bWUsIGRvdWJsZSB0aW1lT2Zmc2V0KTsKLSAgICB2aXJ0dWFsIHZvaWQgcGF1c2VBbmltYXRpb24o
Y29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBkb3VibGUgdGltZU9mZnNldCk7Ci0gICAgdmly
dHVhbCB2b2lkIHJlbW92ZUFuaW1hdGlvbihjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUpOwot
Ci0gICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzVG9JbWFnZShJbWFnZSopOwotICAgIHZpcnR1
YWwgdm9pZCBzZXRDb250ZW50c1RvTWVkaWEoUGxhdGZvcm1MYXllciopOwotICAgIHZpcnR1YWwg
dm9pZCBzZXRDb250ZW50c1RvQ2FudmFzKFBsYXRmb3JtTGF5ZXIqKTsKLQotICAgIHZpcnR1YWwg
Ym9vbCBoYXNDb250ZW50c0xheWVyKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50c0xheWVyOyB9
Ci0gICAgCi0gICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Q7
Ci0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0RGVidWdCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3Im
KTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0RGVidWdCb3JkZXIoY29uc3QgQ29sb3ImLCBmbG9hdCBi
b3JkZXJXaWR0aCk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkRGlzcGxheShQbGF0Zm9ybUxheWVy
Kik7Ci0KLSAgICB2b2lkIHJlY3Vyc2l2ZUNvbW1pdENoYW5nZXMoKTsKLQotICAgIHZpcnR1YWwg
dm9pZCBzeW5jQ29tcG9zaXRpbmdTdGF0ZSgpOwotICAgIHZpcnR1YWwgdm9pZCBzeW5jQ29tcG9z
aXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKTsKLQotICAgIC8vIFNob3VsZCBvbmx5IGJlIGNh
bGxlZCBieSBhbmltYXRpb25EaWRTdGFydDogY2FsbGJhY2sKLSAgICB2b2lkIGFuaW1hdGlvbkRp
ZFN0YXJ0KENBQW5pbWF0aW9uKik7Ci0gICAgCi1wcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB2b2lk
IHNldE9wYWNpdHlJbnRlcm5hbChmbG9hdCk7Ci0KLXByaXZhdGU6Ci0gICAgdm9pZCB1cGRhdGVP
cGFjaXR5T25MYXllcigpOwotCi0gICAgQ0FMYXllciogcHJpbWFyeUxheWVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdHJ1Y3R1cmFsTGF5ZXIuZ2V0KCkgPyBtX3N0cnVjdHVyYWxMYXllci5nZXQoKSA6
IG1fbGF5ZXIuZ2V0KCk7IH0KLSAgICBDQUxheWVyKiBob3N0TGF5ZXJGb3JTdWJsYXllcnMoKSBj
b25zdDsKLSAgICBDQUxheWVyKiBsYXllckZvclN1cGVybGF5ZXIoKSBjb25zdDsKLSAgICBDQUxh
eWVyKiBhbmltYXRlZExheWVyKEFuaW1hdGVkUHJvcGVydHlJRCkgY29uc3Q7Ci0KLSAgICB0eXBl
ZGVmIFN0cmluZyBDbG9uZUlEOyAvLyBJZGVudGlmaWVyIGZvciBhIGdpdmVuIGNsb25lLCBiYXNl
ZCBvbiBvcmlnaW5hbC9yZXBsaWNhIGJyYW5jaGluZyBkb3duIHRoZSB0cmVlLgotICAgIHN0YXRp
YyBib29sIGlzUmVwbGljYXRlZFJvb3RDbG9uZShjb25zdCBDbG9uZUlEJiBjbG9uZUlEKSB7IHJl
dHVybiBjbG9uZUlEWzBVXSAmIDE7IH0KLQotICAgIHR5cGVkZWYgSGFzaE1hcDxDbG9uZUlELCBS
ZXRhaW5QdHI8Q0FMYXllcj4gPiBMYXllck1hcDsKLSAgICBMYXllck1hcCogcHJpbWFyeUxheWVy
Q2xvbmVzKCkgY29uc3QgeyByZXR1cm4gbV9zdHJ1Y3R1cmFsTGF5ZXIuZ2V0KCkgPyBtX3N0cnVj
dHVyYWxMYXllckNsb25lcy5nZXQoKSA6IG1fbGF5ZXJDbG9uZXMuZ2V0KCk7IH0KLSAgICBMYXll
ck1hcCogYW5pbWF0ZWRMYXllckNsb25lcyhBbmltYXRlZFByb3BlcnR5SUQpIGNvbnN0OwotCi0g
ICAgYm9vbCBjcmVhdGVBbmltYXRpb25Gcm9tS2V5ZnJhbWVzKGNvbnN0IEtleWZyYW1lVmFsdWVM
aXN0JiwgY29uc3QgQW5pbWF0aW9uKiwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBkb3Vi
bGUgdGltZU9mZnNldCk7Ci0gICAgYm9vbCBjcmVhdGVUcmFuc2Zvcm1BbmltYXRpb25zRnJvbUtl
eWZyYW1lcyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYsIGNvbnN0IEFuaW1hdGlvbiosIGNvbnN0
IFN0cmluZyYgYW5pbWF0aW9uTmFtZSwgZG91YmxlIHRpbWVPZmZzZXQsIGNvbnN0IEludFNpemUm
IGJveFNpemUpOwotCi0gICAgLy8gUmV0dXJuIGF1dG9yZWxlYXNlZCBhbmltYXRpb24gKHVzZSBS
ZXRhaW5QdHI/KQotICAgIENBQmFzaWNBbmltYXRpb24qIGNyZWF0ZUJhc2ljQW5pbWF0aW9uKGNv
bnN0IEFuaW1hdGlvbiosIEFuaW1hdGVkUHJvcGVydHlJRCwgYm9vbCBhZGRpdGl2ZSk7Ci0gICAg
Q0FLZXlmcmFtZUFuaW1hdGlvbiogY3JlYXRlS2V5ZnJhbWVBbmltYXRpb24oY29uc3QgQW5pbWF0
aW9uKiwgQW5pbWF0ZWRQcm9wZXJ0eUlELCBib29sIGFkZGl0aXZlKTsKLSAgICB2b2lkIHNldHVw
QW5pbWF0aW9uKENBUHJvcGVydHlBbmltYXRpb24qLCBjb25zdCBBbmltYXRpb24qLCBib29sIGFk
ZGl0aXZlKTsKLSAgICAKLSAgICBDQU1lZGlhVGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0aW9u
Rm9yQW5pbWF0aW9uVmFsdWUoY29uc3QgQW5pbWF0aW9uVmFsdWUqLCBjb25zdCBBbmltYXRpb24q
KTsKLSAgICAKLSAgICBib29sIHNldEFuaW1hdGlvbkVuZHBvaW50cyhjb25zdCBLZXlmcmFtZVZh
bHVlTGlzdCYsIGNvbnN0IEFuaW1hdGlvbiosIENBQmFzaWNBbmltYXRpb24qKTsKLSAgICBib29s
IHNldEFuaW1hdGlvbktleWZyYW1lcyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYsIGNvbnN0IEFu
aW1hdGlvbiosIENBS2V5ZnJhbWVBbmltYXRpb24qKTsKLQotICAgIGJvb2wgc2V0VHJhbnNmb3Jt
QW5pbWF0aW9uRW5kcG9pbnRzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiwgY29uc3QgQW5pbWF0
aW9uKiwgQ0FCYXNpY0FuaW1hdGlvbiosIGludCBmdW5jdGlvbkluZGV4LCBUcmFuc2Zvcm1PcGVy
YXRpb246Ok9wZXJhdGlvblR5cGUsIGJvb2wgaXNNYXRyaXhBbmltYXRpb24sIGNvbnN0IEludFNp
emUmIGJveFNpemUpOwotICAgIGJvb2wgc2V0VHJhbnNmb3JtQW5pbWF0aW9uS2V5ZnJhbWVzKGNv
bnN0IEtleWZyYW1lVmFsdWVMaXN0JiwgY29uc3QgQW5pbWF0aW9uKiwgQ0FLZXlmcmFtZUFuaW1h
dGlvbiosIGludCBmdW5jdGlvbkluZGV4LCBUcmFuc2Zvcm1PcGVyYXRpb246Ok9wZXJhdGlvblR5
cGUsIGJvb2wgaXNNYXRyaXhBbmltYXRpb24sIGNvbnN0IEludFNpemUmIGJveFNpemUpOwotICAg
IAotICAgIGJvb2wgYW5pbWF0aW9uSXNSdW5uaW5nKGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFt
ZSkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX3J1bm5pbmdBbmltYXRpb25zLmZpbmQo
YW5pbWF0aW9uTmFtZSkgIT0gbV9ydW5uaW5nQW5pbWF0aW9ucy5lbmQoKTsKLSAgICB9Ci0KLSAg
ICB2b2lkIGNvbW1pdExheWVyQ2hhbmdlc0JlZm9yZVN1YmxheWVycygpOwotICAgIHZvaWQgY29t
bWl0TGF5ZXJDaGFuZ2VzQWZ0ZXJTdWJsYXllcnMoKTsKLQotICAgIEZsb2F0U2l6ZSBjb25zdHJh
aW5lZFNpemUoKSBjb25zdDsKLQotICAgIGJvb2wgcmVxdWlyZXNUaWxlZExheWVyKGNvbnN0IEZs
b2F0U2l6ZSYpIGNvbnN0OwotICAgIHZvaWQgc3dhcEZyb21PclRvVGlsZWRMYXllcihib29sIHVz
ZVRpbGVkTGF5ZXIpOwotCi0gICAgQ29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uIGRl
ZmF1bHRDb250ZW50c09yaWVudGF0aW9uKCkgY29uc3Q7Ci0gICAgdm9pZCB1cGRhdGVDb250ZW50
c1RyYW5zZm9ybSgpOwotICAgIAotICAgIHZvaWQgc2V0dXBDb250ZW50c0xheWVyKENBTGF5ZXIq
KTsKLSAgICBDQUxheWVyKiBjb250ZW50c0xheWVyKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50
c0xheWVyLmdldCgpOyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0UmVwbGljYXRlZEJ5TGF5ZXIo
R3JhcGhpY3NMYXllciopOwotCi0gICAgLy8gVXNlZCB0byB0cmFjayB0aGUgcGF0aCBkb3duIHRo
ZSB0cmVlIGZvciByZXBsaWNhIGxheWVycy4KLSAgICBzdHJ1Y3QgUmVwbGljYVN0YXRlIHsKLSAg
ICAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBtYXhSZXBsaWNhRGVwdGggPSAxNjsKLSAgICAgICAg
ZW51bSBSZXBsaWNhQnJhbmNoVHlwZSB7IENoaWxkQnJhbmNoID0gMCwgUmVwbGljYUJyYW5jaCA9
IDEgfTsKLSAgICAgICAgUmVwbGljYVN0YXRlKFJlcGxpY2FCcmFuY2hUeXBlIGZpcnN0QnJhbmNo
KQotICAgICAgICAgICAgOiBtX3JlcGxpY2FEZXB0aCgwKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBwdXNoKGZpcnN0QnJhbmNoKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgLy8gQ2Fs
bGVkIGFzIHdlIHdhbGsgZG93biB0aGUgdHJlZSB0byBidWlsZCByZXBsaWNhcy4KLSAgICAgICAg
dm9pZCBwdXNoKFJlcGxpY2FCcmFuY2hUeXBlIGJyYW5jaFR5cGUpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIG1fcmVwbGljYUJyYW5jaGVzLmFwcGVuZChicmFuY2hUeXBlKTsKLSAgICAgICAgICAg
IGlmIChicmFuY2hUeXBlID09IFJlcGxpY2FCcmFuY2gpCi0gICAgICAgICAgICAgICAgKyttX3Jl
cGxpY2FEZXB0aDsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgdm9pZCBzZXRCcmFuY2hU
eXBlKFJlcGxpY2FCcmFuY2hUeXBlIGJyYW5jaFR5cGUpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IEFTU0VSVCghbV9yZXBsaWNhQnJhbmNoZXMuaXNFbXB0eSgpKTsKLQotICAgICAgICAgICAgaWYg
KG1fcmVwbGljYUJyYW5jaGVzLmxhc3QoKSAhPSBicmFuY2hUeXBlKSB7Ci0gICAgICAgICAgICAg
ICAgaWYgKGJyYW5jaFR5cGUgPT0gUmVwbGljYUJyYW5jaCkKLSAgICAgICAgICAgICAgICAgICAg
KyttX3JlcGxpY2FEZXB0aDsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAg
ICAgIC0tbV9yZXBsaWNhRGVwdGg7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIG1fcmVw
bGljYUJyYW5jaGVzLmxhc3QoKSA9IGJyYW5jaFR5cGU7Ci0gICAgICAgIH0KLQotICAgICAgICB2
b2lkIHBvcCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChtX3JlcGxpY2FCcmFuY2hlcy5s
YXN0KCkgPT0gUmVwbGljYUJyYW5jaCkKLSAgICAgICAgICAgICAgICAtLW1fcmVwbGljYURlcHRo
OwotICAgICAgICAgICAgbV9yZXBsaWNhQnJhbmNoZXMucmVtb3ZlTGFzdCgpOwotICAgICAgICB9
Ci0gICAgICAgIAotICAgICAgICBzaXplX3QgZGVwdGgoKSBjb25zdCB7IHJldHVybiBtX3JlcGxp
Y2FCcmFuY2hlcy5zaXplKCk7IH0KLSAgICAgICAgc2l6ZV90IHJlcGxpY2FEZXB0aCgpIGNvbnN0
IHsgcmV0dXJuIG1fcmVwbGljYURlcHRoOyB9Ci0KLSAgICAgICAgQ2xvbmVJRCBjbG9uZUlEKCkg
Y29uc3Q7ICAgICAgICAKLQotICAgIHByaXZhdGU6Ci0gICAgICAgIFZlY3RvcjxSZXBsaWNhQnJh
bmNoVHlwZT4gbV9yZXBsaWNhQnJhbmNoZXM7Ci0gICAgICAgIHNpemVfdCBtX3JlcGxpY2FEZXB0
aDsKLSAgICB9OwotICAgIENBTGF5ZXIgKnJlcGxpY2F0ZWRMYXllclJvb3QoUmVwbGljYVN0YXRl
Jik7Ci0KLSAgICBlbnVtIENsb25lTGV2ZWwgeyBSb290Q2xvbmVMZXZlbCwgSW50ZXJtZWRpYXRl
Q2xvbmVMZXZlbCB9OwotICAgIENBTGF5ZXIgKmZldGNoQ2xvbmVMYXllcnMoR3JhcGhpY3NMYXll
ciogcmVwbGljYVJvb3QsIFJlcGxpY2FTdGF0ZSYsIENsb25lTGV2ZWwpOwotICAgIAotICAgIENB
TGF5ZXIgKmNsb25lTGF5ZXIoQ0FMYXllciAqLCBDbG9uZUxldmVsKTsKLSAgICBDQUxheWVyICpm
aW5kT3JNYWtlQ2xvbmUoQ2xvbmVJRCwgQ0FMYXllciAqLCBMYXllck1hcCosIENsb25lTGV2ZWwp
OwotCi0gICAgdm9pZCBlbnN1cmVDbG9uZUxheWVycyhDbG9uZUlEIGluZGV4LCBDQUxheWVyICom
IHByaW1hcnlMYXllciwgQ0FMYXllciAqJiBzdHJ1Y3R1cmFsTGF5ZXIsIENBTGF5ZXIgKiYgY29u
dGVudHNMYXllciwgQ2xvbmVMZXZlbCk7Ci0KLSAgICBib29sIGhhc0Nsb25lTGF5ZXJzKCkgY29u
c3QgeyByZXR1cm4gbV9sYXllckNsb25lczsgfQotICAgIHZvaWQgcmVtb3ZlQ2xvbmVMYXllcnMo
KTsKLSAgICBGbG9hdFBvaW50IHBvc2l0aW9uRm9yQ2xvbmVSb290TGF5ZXIoKSBjb25zdDsKLSAg
ICAKLSAgICB2b2lkIHByb3BhZ2F0ZUxheWVyQ2hhbmdlVG9SZXBsaWNhcygpOwotICAgIAotICAg
IC8vIEFsbCB0aGVzZSAidXBkYXRlIiBtZXRob2RzIHdpbGwgYmUgY2FsbGVkIGluc2lkZSBhIEJF
R0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUy9FTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TIGJsb2Nr
LgotICAgIHZvaWQgdXBkYXRlTGF5ZXJOYW1lcygpOwotICAgIHZvaWQgdXBkYXRlU3VibGF5ZXJM
aXN0KCk7Ci0gICAgdm9pZCB1cGRhdGVMYXllclBvc2l0aW9uKCk7Ci0gICAgdm9pZCB1cGRhdGVM
YXllclNpemUoKTsKLSAgICB2b2lkIHVwZGF0ZUFuY2hvclBvaW50KCk7Ci0gICAgdm9pZCB1cGRh
dGVUcmFuc2Zvcm0oKTsKLSAgICB2b2lkIHVwZGF0ZUNoaWxkcmVuVHJhbnNmb3JtKCk7Ci0gICAg
dm9pZCB1cGRhdGVNYXNrc1RvQm91bmRzKCk7Ci0gICAgdm9pZCB1cGRhdGVDb250ZW50c09wYXF1
ZSgpOwotICAgIHZvaWQgdXBkYXRlQmFja2ZhY2VWaXNpYmlsaXR5KCk7Ci0gICAgdm9pZCB1cGRh
dGVTdHJ1Y3R1cmFsTGF5ZXIoKTsKLSAgICB2b2lkIHVwZGF0ZUxheWVyRHJhd3NDb250ZW50KCk7
Ci0gICAgdm9pZCB1cGRhdGVMYXllckJhY2tncm91bmRDb2xvcigpOwotCi0gICAgdm9pZCB1cGRh
dGVDb250ZW50c0ltYWdlKCk7Ci0gICAgdm9pZCB1cGRhdGVDb250ZW50c01lZGlhTGF5ZXIoKTsK
LSAgICB2b2lkIHVwZGF0ZUNvbnRlbnRzQ2FudmFzTGF5ZXIoKTsKLSAgICB2b2lkIHVwZGF0ZUNv
bnRlbnRzUmVjdCgpOwotICAgIHZvaWQgdXBkYXRlTWFza0xheWVyKCk7Ci0gICAgdm9pZCB1cGRh
dGVSZXBsaWNhdGVkTGF5ZXJzKCk7Ci0KLSAgICB2b2lkIHVwZGF0ZUxheWVyQW5pbWF0aW9ucygp
OwotICAgIHZvaWQgdXBkYXRlQ29udGVudHNOZWVkc0Rpc3BsYXkoKTsKLSAgICAKLSAgICBlbnVt
IFN0cnVjdHVyYWxMYXllclB1cnBvc2UgewotICAgICAgICBOb1N0cnVjdHVyYWxMYXllciA9IDAs
Ci0gICAgICAgIFN0cnVjdHVyYWxMYXllckZvclByZXNlcnZlczNELAotICAgICAgICBTdHJ1Y3R1
cmFsTGF5ZXJGb3JSZXBsaWNhRmxhdHRlbmluZwotICAgIH07Ci0gICAgdm9pZCBlbnN1cmVTdHJ1
Y3R1cmFsTGF5ZXIoU3RydWN0dXJhbExheWVyUHVycG9zZSk7Ci0gICAgU3RydWN0dXJhbExheWVy
UHVycG9zZSBzdHJ1Y3R1cmFsTGF5ZXJQdXJwb3NlKCkgY29uc3Q7Ci0KLSAgICB2b2lkIHNldENB
QW5pbWF0aW9uT25MYXllcihDQVByb3BlcnR5QW5pbWF0aW9uKiwgQW5pbWF0ZWRQcm9wZXJ0eUlE
LCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGludCBpbmRleCwgZG91YmxlIHRpbWVPZmZz
ZXQpOwotICAgIGJvb2wgcmVtb3ZlQ0FBbmltYXRpb25Gcm9tTGF5ZXIoQW5pbWF0ZWRQcm9wZXJ0
eUlELCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGludCBpbmRleCk7Ci0gICAgdm9pZCBw
YXVzZUNBQW5pbWF0aW9uT25MYXllcihBbmltYXRlZFByb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYg
YW5pbWF0aW9uTmFtZSwgaW50IGluZGV4LCBkb3VibGUgdGltZU9mZnNldCk7Ci0KLSAgICBlbnVt
IE1vdmVPckNvcHkgeyBNb3ZlLCBDb3B5IH07Ci0gICAgc3RhdGljIHZvaWQgbW92ZU9yQ29weUxh
eWVyQW5pbWF0aW9uKE1vdmVPckNvcHksIGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uSWRlbnRpZmll
ciwgQ0FMYXllciAqZnJvbUxheWVyLCBDQUxheWVyICp0b0xheWVyKTsKLSAgICB2b2lkIG1vdmVP
ckNvcHlBbmltYXRpb25zRm9yUHJvcGVydHkoTW92ZU9yQ29weSwgQW5pbWF0ZWRQcm9wZXJ0eUlE
LCBDQUxheWVyICogZnJvbUxheWVyLCBDQUxheWVyICogdG9MYXllcik7Ci0gICAgCi0gICAgZW51
bSBMYXllckNoYW5nZSB7Ci0gICAgICAgIE5vQ2hhbmdlID0gMCwKLSAgICAgICAgTmFtZUNoYW5n
ZWQgPSAxIDw8IDEsCi0gICAgICAgIENoaWxkcmVuQ2hhbmdlZCA9IDEgPDwgMiwgICAvLyBhbHNv
IHVzZWQgZm9yIGNvbnRlbnQgbGF5ZXIsIGFuZCBwcmVzZXJ2ZXMtM2QsIGFuZCBzaXplIGlmIHRp
bGluZyBjaGFuZ2VzPwotICAgICAgICBQb3NpdGlvbkNoYW5nZWQgPSAxIDw8IDMsCi0gICAgICAg
IEFuY2hvclBvaW50Q2hhbmdlZCA9IDEgPDwgNCwKLSAgICAgICAgU2l6ZUNoYW5nZWQgPSAxIDw8
IDUsCi0gICAgICAgIFRyYW5zZm9ybUNoYW5nZWQgPSAxIDw8IDYsCi0gICAgICAgIENoaWxkcmVu
VHJhbnNmb3JtQ2hhbmdlZCA9IDEgPDwgNywKLSAgICAgICAgUHJlc2VydmVzM0RDaGFuZ2VkID0g
MSA8PCA4LAotICAgICAgICBNYXNrc1RvQm91bmRzQ2hhbmdlZCA9IDEgPDwgOSwKLSAgICAgICAg
RHJhd3NDb250ZW50Q2hhbmdlZCA9IDEgPDwgMTAsICAvLyBuZWVkIHRoaXM/Ci0gICAgICAgIEJh
Y2tncm91bmRDb2xvckNoYW5nZWQgPSAxIDw8IDExLAotICAgICAgICBDb250ZW50c09wYXF1ZUNo
YW5nZWQgPSAxIDw8IDEyLAotICAgICAgICBCYWNrZmFjZVZpc2liaWxpdHlDaGFuZ2VkID0gMSA8
PCAxMywKLSAgICAgICAgT3BhY2l0eUNoYW5nZWQgPSAxIDw8IDE0LAotICAgICAgICBBbmltYXRp
b25DaGFuZ2VkID0gMSA8PCAxNSwKLSAgICAgICAgRGlydHlSZWN0c0NoYW5nZWQgPSAxIDw8IDE2
LAotICAgICAgICBDb250ZW50c0ltYWdlQ2hhbmdlZCA9IDEgPDwgMTcsCi0gICAgICAgIENvbnRl
bnRzTWVkaWFMYXllckNoYW5nZWQgPSAxIDw8IDE4LAotICAgICAgICBDb250ZW50c0NhbnZhc0xh
eWVyQ2hhbmdlZCA9IDEgPDwgMTksCi0gICAgICAgIENvbnRlbnRzUmVjdENoYW5nZWQgPSAxIDw8
IDIwLAotICAgICAgICBNYXNrTGF5ZXJDaGFuZ2VkID0gMSA8PCAyMSwKLSAgICAgICAgUmVwbGlj
YXRlZExheWVyQ2hhbmdlZCA9IDEgPDwgMjIsCi0gICAgICAgIENvbnRlbnRzTmVlZHNEaXNwbGF5
ID0gMSA8PCAyMwotICAgIH07Ci0gICAgdHlwZWRlZiB1bnNpZ25lZCBMYXllckNoYW5nZUZsYWdz
OwotICAgIHZvaWQgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKExheWVyQ2hhbmdlRmxhZ3MgZmxh
Z3MpOwotICAgIHZvaWQgbm90ZVN1YmxheWVyc0NoYW5nZWQoKTsKLQotICAgIHZvaWQgcmVwYWlu
dExheWVyRGlydHlSZWN0cygpOwotCi0gICAgUmV0YWluUHRyPFdlYkxheWVyPiBtX2xheWVyOyAv
LyBUaGUgbWFpbiBsYXllcgotICAgIFJldGFpblB0cjxDQUxheWVyPiBtX3N0cnVjdHVyYWxMYXll
cjsgLy8gQSBsYXllciB1c2VkIGZvciBzdHJ1Y3R1cmFsIHJlYXNvbnMsIGxpa2UgcHJlc2VydmVz
LTNkIG9yIHJlcGxpY2EtZmxhdHRlbmluZy4gSXMgdGhlIHBhcmVudCBvZiBtX2xheWVyLgotICAg
IFJldGFpblB0cjxDQUxheWVyPiBtX2NvbnRlbnRzTGF5ZXI7IC8vIEEgbGF5ZXIgdXNlZCBmb3Ig
aW5uZXIgY29udGVudCwgbGlrZSBpbWFnZSBhbmQgdmlkZW8KLQotICAgIC8vIFJlZmVyZW5jZXMg
dG8gY2xvbmVzIG9mIG91ciBsYXllcnMsIGZvciByZXBsaWNhdGVkIGxheWVycy4KLSAgICBPd25Q
dHI8TGF5ZXJNYXA+IG1fbGF5ZXJDbG9uZXM7Ci0gICAgT3duUHRyPExheWVyTWFwPiBtX3N0cnVj
dHVyYWxMYXllckNsb25lczsKLSAgICBPd25QdHI8TGF5ZXJNYXA+IG1fY29udGVudHNMYXllckNs
b25lczsKLSAgICAKLSAgICBlbnVtIENvbnRlbnRzTGF5ZXJQdXJwb3NlIHsKLSAgICAgICAgTm9D
b250ZW50c0xheWVyID0gMCwKLSAgICAgICAgQ29udGVudHNMYXllckZvckltYWdlLAotICAgICAg
ICBDb250ZW50c0xheWVyRm9yTWVkaWEsCi0gICAgICAgIENvbnRlbnRzTGF5ZXJGb3JDYW52YXMK
LSAgICB9OwotICAgIAotICAgIENvbnRlbnRzTGF5ZXJQdXJwb3NlIG1fY29udGVudHNMYXllclB1
cnBvc2U7Ci0gICAgYm9vbCBtX2NvbnRlbnRzTGF5ZXJIYXNCYWNrZ3JvdW5kQ29sb3IgOiAxOwot
Ci0gICAgUmV0YWluUHRyPFdlYkFuaW1hdGlvbkRlbGVnYXRlPiBtX2FuaW1hdGlvbkRlbGVnYXRl
OwotCi0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IG1fdW5jb3JyZWN0ZWRDb250ZW50c0ltYWdl
OwotICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBtX3BlbmRpbmdDb250ZW50c0ltYWdlOwotICAg
IAotICAgIC8vIFRoaXMgcmVwcmVzZW50cyB0aGUgYW5pbWF0aW9uIG9mIGEgc2luZ2xlIHByb3Bl
cnR5LiBUaGVyZSBtYXkgYmUgbXVsdGlwbGUgdHJhbnNmb3JtIGFuaW1hdGlvbnMgZm9yCi0gICAg
Ly8gYSBzaW5nbGUgdHJhbnNpdGlvbiBvciBrZXlmcmFtZSBhbmltYXRpb24sIHNvIGluZGV4IGlz
IHVzZWQgdG8gZGlzdGluZ3Vpc2ggdGhlc2UuCi0gICAgc3RydWN0IExheWVyUHJvcGVydHlBbmlt
YXRpb24gewotICAgICAgICBMYXllclByb3BlcnR5QW5pbWF0aW9uKENBUHJvcGVydHlBbmltYXRp
b24qIGNhQW5pbWF0aW9uLCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIEFuaW1hdGVkUHJv
cGVydHlJRCBwcm9wZXJ0eSwgaW50IGluZGV4LCBkb3VibGUgdGltZU9mZnNldCkKLSAgICAgICAg
OiBtX2FuaW1hdGlvbihjYUFuaW1hdGlvbikKLSAgICAgICAgLCBtX25hbWUoYW5pbWF0aW9uTmFt
ZSkKLSAgICAgICAgLCBtX3Byb3BlcnR5KHByb3BlcnR5KQotICAgICAgICAsIG1faW5kZXgoaW5k
ZXgpCi0gICAgICAgICwgbV90aW1lT2Zmc2V0KHRpbWVPZmZzZXQpCi0gICAgICAgIHsgfQotCi0g
ICAgICAgIFJldGFpblB0cjxDQVByb3BlcnR5QW5pbWF0aW9uKj4gbV9hbmltYXRpb247Ci0gICAg
ICAgIFN0cmluZyBtX25hbWU7Ci0gICAgICAgIEFuaW1hdGVkUHJvcGVydHlJRCBtX3Byb3BlcnR5
OwotICAgICAgICBpbnQgbV9pbmRleDsKLSAgICAgICAgZG91YmxlIG1fdGltZU9mZnNldDsKLSAg
ICB9OwotICAgIAotICAgIC8vIFVuY29tbWl0dGVkIHRyYW5zaXRpb25zIGFuZCBhbmltYXRpb25z
LgotICAgIFZlY3RvcjxMYXllclByb3BlcnR5QW5pbWF0aW9uPiBtX3VuY29taXR0ZWRBbmltYXRp
b25zOwotICAgIAotICAgIGVudW0gQWN0aW9uIHsgUmVtb3ZlLCBQYXVzZSB9OwotICAgIHN0cnVj
dCBBbmltYXRpb25Qcm9jZXNzaW5nQWN0aW9uIHsKLSAgICAgICAgQW5pbWF0aW9uUHJvY2Vzc2lu
Z0FjdGlvbihBY3Rpb24gYWN0aW9uID0gUmVtb3ZlLCBkb3VibGUgdGltZU9mZnNldCA9IDApCi0g
ICAgICAgICAgICA6IGFjdGlvbihhY3Rpb24pCi0gICAgICAgICAgICAsIHRpbWVPZmZzZXQodGlt
ZU9mZnNldCkKLSAgICAgICAgewotICAgICAgICB9Ci0gICAgICAgIEFjdGlvbiBhY3Rpb247Ci0g
ICAgICAgIGRvdWJsZSB0aW1lT2Zmc2V0OyAvLyBvbmx5IHVzZWQgZm9yIHBhdXNlCi0gICAgfTsK
LSAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBBbmltYXRpb25Qcm9jZXNzaW5nQWN0aW9uPiBB
bmltYXRpb25zVG9Qcm9jZXNzTWFwOwotICAgIEFuaW1hdGlvbnNUb1Byb2Nlc3NNYXAgbV9hbmlt
YXRpb25zVG9Qcm9jZXNzOwotCi0gICAgLy8gTWFwIG9mIGFuaW1hdGlvbiBuYW1lcyB0byB0aGVp
ciBhc3NvY2lhdGVkIGxpc3RzIG9mIHByb3BlcnR5IGFuaW1hdGlvbnMsIHNvIHdlIGNhbiByZW1v
dmUvcGF1c2UgdGhlbS4KLSAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBWZWN0b3I8TGF5ZXJQ
cm9wZXJ0eUFuaW1hdGlvbj4gPiBBbmltYXRpb25zTWFwOwotICAgIEFuaW1hdGlvbnNNYXAgbV9y
dW5uaW5nQW5pbWF0aW9uczsKLQotICAgIFZlY3RvcjxGbG9hdFJlY3Q+IG1fZGlydHlSZWN0czsK
LSAgICAKLSAgICBMYXllckNoYW5nZUZsYWdzIG1fdW5jb21taXR0ZWRDaGFuZ2VzOwotfTsKLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0KLSNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09N
UE9TSVRJTkcpCi0KLSNlbmRpZiAvLyBHcmFwaGljc0xheWVyQ0FfaApJbmRleDogV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NMYXllckNBLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzTGF5ZXJDQS5tbQkocmV2aXNpb24g
NzE4MzIpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0xheWVyQ0Eu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTEsMjUxNCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIK
LQotI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLQotI2ltcG9ydCAiR3JhcGhpY3NM
YXllckNBLmgiCi0KLSNpbXBvcnQgIkFuaW1hdGlvbi5oIgotI2ltcG9ydCAiQmxvY2tFeGNlcHRp
b25zLmgiCi0jaW1wb3J0ICJGbG9hdENvbnZlcnNpb24uaCIKLSNpbXBvcnQgIkZsb2F0UmVjdC5o
IgotI2ltcG9ydCAiSW1hZ2UuaCIKLSNpbXBvcnQgIlBsYXRmb3JtU3RyaW5nLmgiCi0jaW1wb3J0
IDxRdWFydHpDb3JlL1F1YXJ0ekNvcmUuaD4KLSNpbXBvcnQgIlJvdGF0ZVRyYW5zZm9ybU9wZXJh
dGlvbi5oIgotI2ltcG9ydCAiU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24uaCIKLSNpbXBvcnQgIlN5
c3RlbVRpbWUuaCIKLSNpbXBvcnQgIlRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oIgotI2lt
cG9ydCAiV2ViTGF5ZXIuaCIKLSNpbXBvcnQgIldlYlRpbGVkTGF5ZXIuaCIKLSNpbXBvcnQgPGxp
bWl0cy5oPgotI2ltcG9ydCA8b2JqYy9vYmpjLWF1dG8uaD4KLSNpbXBvcnQgPHd0Zi9DdXJyZW50
VGltZS5oPgotI2ltcG9ydCA8d3RmL1VudXNlZFBhcmFtLmg+Ci0jaW1wb3J0IDx3dGYvUmV0YWlu
UHRyLmg+Ci0jaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgotCi11c2luZyBu
YW1lc3BhY2Ugc3RkOwotCi0jZGVmaW5lIEhBVkVfTU9ERVJOX1FVQVJUWkNPUkUgKCFkZWZpbmVk
KEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSkKLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBXZWJLaXRBbmlt
YXRpb25CZWdpblRpbWVTZXRLZXkgPSBAIldlYktpdEFuaW1hdGlvbkJlZ2luVGltZVNldCI7Ci0K
LS8vIFRoZSB0aHJlc2hvbGQgd2lkdGggb3IgaGVpZ2h0IGFib3ZlIHdoaWNoIGEgdGlsZWQgbGF5
ZXIgd2lsbCBiZSB1c2VkLiBUaGlzIHNob3VsZCBiZQotLy8gbGFyZ2UgZW5vdWdoIHRvIGF2b2lk
IHRpbGVkIGxheWVycyBmb3IgbW9zdCBHcmFwaGljc0xheWVycywgYnV0IGxlc3MgdGhhbiB0aGUg
T3BlbkdMCi0vLyB0ZXh0dXJlIHNpemUgbGltaXQgb24gYWxsIHN1cHBvcnRlZCBoYXJkd2FyZS4K
LXN0YXRpYyBjb25zdCBpbnQgY01heFBpeGVsRGltZW5zaW9uID0gMjAwMDsKLQotLy8gVGhlIHdp
ZHRoIGFuZCBoZWlnaHQgb2YgYSBzaW5nbGUgdGlsZSBpbiBhIHRpbGVkIGxheWVyLiBTaG91bGQg
YmUgbGFyZ2UgZW5vdWdoIHRvCi0vLyBhdm9pZCBsb3RzIG9mIHNtYWxsIHRpbGVzIChhbmQgdGhl
cmVmb3JlIGxvdHMgb2YgZHJhd2luZyBjYWxsYmFja3MpLCBidXQgc21hbGwgZW5vdWdoCi0vLyB0
byBrZWVwIHRoZSBvdmVyYWxsIHRpbGUgY29zdCBsb3cuCi1zdGF0aWMgY29uc3QgaW50IGNUaWxl
ZExheWVyVGlsZVNpemUgPSA1MTI7Ci0KLS8vIElmIHdlIHNlbmQgYSBkdXJhdGlvbiBvZiAwIHRv
IENBLCB0aGVuIGl0IHdpbGwgdXNlIHRoZSBkZWZhdWx0IGR1cmF0aW9uCi0vLyBvZiAyNTBtcy4g
U28gc2VuZCBhIHZlcnkgc21hbGwgdmFsdWUgaW5zdGVhZC4KLXN0YXRpYyBjb25zdCBmbG9hdCBj
QW5pbWF0aW9uQWxtb3N0WmVyb0R1cmF0aW9uID0gMWUtM2Y7Ci0KLS8vIENBQ3VycmVudE1lZGlh
VGltZSgpIGlzIGEgdGltZSBzaW5jZSBib290LiBUaGVzZSBtZXRob2RzIGNvbnZlcnQgYmV0d2Vl
biB0aGF0IGFuZAotLy8gV2ViQ29yZSB0aW1lLCB3aGljaCBpcyBzeXN0ZW0gdGltZSAoVVRDKS4K
LXN0YXRpYyBDRlRpbWVJbnRlcnZhbCBjdXJyZW50VGltZVRvTWVkaWFUaW1lKGRvdWJsZSB0KQot
ewotICAgIHJldHVybiBDQUN1cnJlbnRNZWRpYVRpbWUoKSArIHQgLSBXVEY6OmN1cnJlbnRUaW1l
KCk7Ci19Ci0KLXN0YXRpYyBkb3VibGUgbWVkaWFUaW1lVG9DdXJyZW50VGltZShDRlRpbWVJbnRl
cnZhbCB0KQotewotICAgIHJldHVybiBXVEY6OmN1cnJlbnRUaW1lKCkgKyB0IC0gQ0FDdXJyZW50
TWVkaWFUaW1lKCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotQGludGVyZmFjZSBD
QUxheWVyKFByaXZhdGUpCi0tICh2b2lkKXNldENvbnRlbnRzQ2hhbmdlZDsKLUBlbmQKLQotQGlu
dGVyZmFjZSBXZWJBbmltYXRpb25EZWxlZ2F0ZSA6IE5TT2JqZWN0IHsKLSAgICBXZWJDb3JlOjpH
cmFwaGljc0xheWVyQ0EqIG1fZ3JhcGhpY3NMYXllcjsKLX0KLQotLSAodm9pZClhbmltYXRpb25E
aWRTdGFydDooQ0FBbmltYXRpb24gKilhbmltOwotLSAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNB
KilncmFwaGljc0xheWVyOwotLSAodm9pZClzZXRMYXllcjooV2ViQ29yZTo6R3JhcGhpY3NMYXll
ckNBKilncmFwaGljc0xheWVyOwotCi1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBXZWJBbmltYXRp
b25EZWxlZ2F0ZQotCi0tICh2b2lkKWFuaW1hdGlvbkRpZFN0YXJ0OihDQUFuaW1hdGlvbiAqKWFu
aW1hdGlvbgotewotICAgIGlmIChtX2dyYXBoaWNzTGF5ZXIpCi0gICAgICAgIG1fZ3JhcGhpY3NM
YXllci0+YW5pbWF0aW9uRGlkU3RhcnQoYW5pbWF0aW9uKTsKLX0KLQotLSAoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllckNBKilncmFwaGljc0xheWVyCi17Ci0gICAgcmV0dXJuIG1fZ3JhcGhpY3NMYXll
cjsKLX0KLQotLSAodm9pZClzZXRMYXllcjooV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBKilncmFw
aGljc0xheWVyCi17Ci0gICAgbV9ncmFwaGljc0xheWVyID0gZ3JhcGhpY3NMYXllcjsKLX0KLQot
QGVuZAotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0YXRpYyBpbmxpbmUgdm9pZCBjb3B5VHJh
bnNmb3JtKENBVHJhbnNmb3JtM0QmIHRvVDNELCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYg
dCkKLXsKLSAgICB0b1QzRC5tMTEgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHQubTExKCkpOwot
ICAgIHRvVDNELm0xMiA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodC5tMTIoKSk7Ci0gICAgdG9U
M0QubTEzID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCh0Lm0xMygpKTsKLSAgICB0b1QzRC5tMTQg
PSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHQubTE0KCkpOwotICAgIHRvVDNELm0yMSA9IG5hcnJv
d1ByZWNpc2lvblRvRmxvYXQodC5tMjEoKSk7Ci0gICAgdG9UM0QubTIyID0gbmFycm93UHJlY2lz
aW9uVG9GbG9hdCh0Lm0yMigpKTsKLSAgICB0b1QzRC5tMjMgPSBuYXJyb3dQcmVjaXNpb25Ub0Zs
b2F0KHQubTIzKCkpOwotICAgIHRvVDNELm0yNCA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodC5t
MjQoKSk7Ci0gICAgdG9UM0QubTMxID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCh0Lm0zMSgpKTsK
LSAgICB0b1QzRC5tMzIgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHQubTMyKCkpOwotICAgIHRv
VDNELm0zMyA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodC5tMzMoKSk7Ci0gICAgdG9UM0QubTM0
ID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCh0Lm0zNCgpKTsKLSAgICB0b1QzRC5tNDEgPSBuYXJy
b3dQcmVjaXNpb25Ub0Zsb2F0KHQubTQxKCkpOwotICAgIHRvVDNELm00MiA9IG5hcnJvd1ByZWNp
c2lvblRvRmxvYXQodC5tNDIoKSk7Ci0gICAgdG9UM0QubTQzID0gbmFycm93UHJlY2lzaW9uVG9G
bG9hdCh0Lm00MygpKTsKLSAgICB0b1QzRC5tNDQgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHQu
bTQ0KCkpOwotfQotCi1zdGF0aWMgTlNWYWx1ZSogZ2V0VHJhbnNmb3JtRnVuY3Rpb25WYWx1ZShj
b25zdCBUcmFuc2Zvcm1PcGVyYXRpb24qIHRyYW5zZm9ybU9wLCBUcmFuc2Zvcm1PcGVyYXRpb246
Ok9wZXJhdGlvblR5cGUgdHJhbnNmb3JtVHlwZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKLXsKLSAg
ICBzd2l0Y2ggKHRyYW5zZm9ybVR5cGUpIHsKLSAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRp
b246OlJPVEFURToKLSAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlJPVEFURV9YOgot
ICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRFX1k6Ci0gICAgICAgICAgICBy
ZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6dHJhbnNmb3JtT3AgPyBkZWcycmFkKHN0
YXRpY19jYXN0PGNvbnN0IFJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbio+KHRyYW5zZm9ybU9wKS0+
YW5nbGUoKSkgOiAwXTsKLSAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlNDQUxFX1g6
Ci0gICAgICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6dHJhbnNmb3Jt
T3AgPyBzdGF0aWNfY2FzdDxjb25zdCBTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbio+KHRyYW5zZm9y
bU9wKS0+eCgpIDogMV07Ci0gICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpTQ0FMRV9Z
OgotICAgICAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOnRyYW5zZm9y
bU9wID8gc3RhdGljX2Nhc3Q8Y29uc3QgU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24qPih0cmFuc2Zv
cm1PcCktPnkoKSA6IDFdOwotICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0NBTEVf
WjoKLSAgICAgICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTp0cmFuc2Zv
cm1PcCA/IHN0YXRpY19jYXN0PGNvbnN0IFNjYWxlVHJhbnNmb3JtT3BlcmF0aW9uKj4odHJhbnNm
b3JtT3ApLT56KCkgOiAxXTsKLSAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5T
TEFURV9YOgotICAgICAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOnRy
YW5zZm9ybU9wID8gc3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9u
Kj4odHJhbnNmb3JtT3ApLT54KHNpemUpIDogMF07Ci0gICAgICAgIGNhc2UgVHJhbnNmb3JtT3Bl
cmF0aW9uOjpUUkFOU0xBVEVfWToKLSAgICAgICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVy
V2l0aERvdWJsZTp0cmFuc2Zvcm1PcCA/IHN0YXRpY19jYXN0PGNvbnN0IFRyYW5zbGF0ZVRyYW5z
Zm9ybU9wZXJhdGlvbio+KHRyYW5zZm9ybU9wKS0+eShzaXplKSA6IDBdOwotICAgICAgICBjYXNl
IFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFX1o6Ci0gICAgICAgICAgICByZXR1cm4gW05T
TnVtYmVyIG51bWJlcldpdGhEb3VibGU6dHJhbnNmb3JtT3AgPyBzdGF0aWNfY2FzdDxjb25zdCBU
cmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24qPih0cmFuc2Zvcm1PcCktPnooc2l6ZSkgOiAwXTsK
LSAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlNDQUxFOgotICAgICAgICBjYXNlIFRy
YW5zZm9ybU9wZXJhdGlvbjo6U0NBTEVfM0Q6Ci0gICAgICAgICAgICByZXR1cm4gW05TQXJyYXkg
YXJyYXlXaXRoT2JqZWN0czoKLSAgICAgICAgICAgICAgICAgICAgICAgIFtOU051bWJlciBudW1i
ZXJXaXRoRG91YmxlOnRyYW5zZm9ybU9wID8gc3RhdGljX2Nhc3Q8Y29uc3QgU2NhbGVUcmFuc2Zv
cm1PcGVyYXRpb24qPih0cmFuc2Zvcm1PcCktPngoKSA6IDFdLAotICAgICAgICAgICAgICAgICAg
ICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6dHJhbnNmb3JtT3AgPyBzdGF0aWNfY2Fz
dDxjb25zdCBTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbio+KHRyYW5zZm9ybU9wKS0+eSgpIDogMV0s
Ci0gICAgICAgICAgICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTp0cmFu
c2Zvcm1PcCA/IHN0YXRpY19jYXN0PGNvbnN0IFNjYWxlVHJhbnNmb3JtT3BlcmF0aW9uKj4odHJh
bnNmb3JtT3ApLT56KCkgOiAxXSwKLSAgICAgICAgICAgICAgICAgICAgICAgIG5pbF07Ci0gICAg
ICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEU6Ci0gICAgICAgIGNhc2UgVHJh
bnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfM0Q6Ci0gICAgICAgICAgICByZXR1cm4gW05TQXJy
YXkgYXJyYXlXaXRoT2JqZWN0czoKLSAgICAgICAgICAgICAgICAgICAgICAgIFtOU051bWJlciBu
dW1iZXJXaXRoRG91YmxlOnRyYW5zZm9ybU9wID8gc3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNsYXRl
VHJhbnNmb3JtT3BlcmF0aW9uKj4odHJhbnNmb3JtT3ApLT54KHNpemUpIDogMF0sCi0gICAgICAg
ICAgICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTp0cmFuc2Zvcm1PcCA/
IHN0YXRpY19jYXN0PGNvbnN0IFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbio+KHRyYW5zZm9y
bU9wKS0+eShzaXplKSA6IDBdLAotICAgICAgICAgICAgICAgICAgICAgICAgW05TTnVtYmVyIG51
bWJlcldpdGhEb3VibGU6dHJhbnNmb3JtT3AgPyBzdGF0aWNfY2FzdDxjb25zdCBUcmFuc2xhdGVU
cmFuc2Zvcm1PcGVyYXRpb24qPih0cmFuc2Zvcm1PcCktPnooc2l6ZSkgOiAwXSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgIG5pbF07Ci0gICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpT
S0VXX1g6Ci0gICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpTS0VXX1k6Ci0gICAgICAg
IGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpTS0VXOgotICAgICAgICBjYXNlIFRyYW5zZm9ybU9w
ZXJhdGlvbjo6TUFUUklYOgotICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRF
XzNEOgotICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6TUFUUklYXzNEOgotICAgICAg
ICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6UEVSU1BFQ1RJVkU6Ci0gICAgICAgIGNhc2UgVHJh
bnNmb3JtT3BlcmF0aW9uOjpJREVOVElUWToKLSAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRp
b246Ok5PTkU6IHsKLSAgICAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybTsK
LSAgICAgICAgICAgIGlmICh0cmFuc2Zvcm1PcCkKLSAgICAgICAgICAgICAgICB0cmFuc2Zvcm1P
cC0+YXBwbHkodHJhbnNmb3JtLCBzaXplKTsKLSAgICAgICAgICAgIENBVHJhbnNmb3JtM0QgY2FU
cmFuc2Zvcm07Ci0gICAgICAgICAgICBjb3B5VHJhbnNmb3JtKGNhVHJhbnNmb3JtLCB0cmFuc2Zv
cm0pOwotICAgICAgICAgICAgcmV0dXJuIFtOU1ZhbHVlIHZhbHVlV2l0aENBVHJhbnNmb3JtM0Q6
Y2FUcmFuc2Zvcm1dOwotICAgICAgICB9Ci0gICAgfQotICAgIAotICAgIHJldHVybiAwOwotfQot
Ci0jaWYgSEFWRV9NT0RFUk5fUVVBUlRaQ09SRQotc3RhdGljIE5TU3RyaW5nICpnZXRWYWx1ZUZ1
bmN0aW9uTmFtZUZvclRyYW5zZm9ybU9wZXJhdGlvbihUcmFuc2Zvcm1PcGVyYXRpb246Ok9wZXJh
dGlvblR5cGUgdHJhbnNmb3JtVHlwZSkKLXsKLSAgICAvLyBVc2UgbGl0ZXJhbCBzdHJpbmdzIHRv
IGF2b2lkIGxpbmstdGltZSBkZXBlbmRlbmN5IG9uIHRob3NlIHN5bWJvbHMuCi0gICAgc3dpdGNo
ICh0cmFuc2Zvcm1UeXBlKSB7Ci0gICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpST1RB
VEVfWDoKLSAgICAgICAgICAgIHJldHVybiBAInJvdGF0ZVgiOyAvLyBrQ0FWYWx1ZUZ1bmN0aW9u
Um90YXRlWDsKLSAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlJPVEFURV9ZOgotICAg
ICAgICAgICAgcmV0dXJuIEAicm90YXRlWSI7IC8vIGtDQVZhbHVlRnVuY3Rpb25Sb3RhdGVZOwot
ICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRFOgotICAgICAgICAgICAgcmV0
dXJuIEAicm90YXRlWiI7IC8vIGtDQVZhbHVlRnVuY3Rpb25Sb3RhdGVaOwotICAgICAgICBjYXNl
IFRyYW5zZm9ybU9wZXJhdGlvbjo6U0NBTEVfWDoKLSAgICAgICAgICAgIHJldHVybiBAInNjYWxl
WCI7IC8vIGtDQVZhbHVlRnVuY3Rpb25TY2FsZVg7Ci0gICAgICAgIGNhc2UgVHJhbnNmb3JtT3Bl
cmF0aW9uOjpTQ0FMRV9ZOgotICAgICAgICAgICAgcmV0dXJuIEAic2NhbGVZIjsgLy8ga0NBVmFs
dWVGdW5jdGlvblNjYWxlWTsKLSAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlNDQUxF
X1o6Ci0gICAgICAgICAgICByZXR1cm4gQCJzY2FsZVoiOyAvLyBrQ0FWYWx1ZUZ1bmN0aW9uU2Nh
bGVaOwotICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFX1g6Ci0gICAg
ICAgICAgICByZXR1cm4gQCJ0cmFuc2xhdGVYIjsgLy8ga0NBVmFsdWVGdW5jdGlvblRyYW5zbGF0
ZVg7Ci0gICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfWToKLSAgICAg
ICAgICAgIHJldHVybiBAInRyYW5zbGF0ZVkiOyAvLyBrQ0FWYWx1ZUZ1bmN0aW9uVHJhbnNsYXRl
WTsKLSAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURV9aOgotICAgICAg
ICAgICAgcmV0dXJuIEAidHJhbnNsYXRlWiI7IC8vIGtDQVZhbHVlRnVuY3Rpb25UcmFuc2xhdGVa
OwotICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0NBTEU6Ci0gICAgICAgIGNhc2Ug
VHJhbnNmb3JtT3BlcmF0aW9uOjpTQ0FMRV8zRDoKLSAgICAgICAgICAgIHJldHVybiBAInNjYWxl
IjsgLy8ga0NBVmFsdWVGdW5jdGlvblNjYWxlOwotICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJh
dGlvbjo6VFJBTlNMQVRFOgotICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNM
QVRFXzNEOgotICAgICAgICAgICAgcmV0dXJuIEAidHJhbnNsYXRlIjsgLy8ga0NBVmFsdWVGdW5j
dGlvblRyYW5zbGF0ZTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBuaWw7
Ci0gICAgfQotfQotI2VuZGlmCi0KLXN0YXRpYyBTdHJpbmcgcHJvcGVydHlJZFRvU3RyaW5nKEFu
aW1hdGVkUHJvcGVydHlJRCBwcm9wZXJ0eSkKLXsKLSAgICBzd2l0Y2ggKHByb3BlcnR5KSB7Ci0g
ICAgICAgIGNhc2UgQW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybToKLSAgICAgICAgICAg
IHJldHVybiAidHJhbnNmb3JtIjsKLSAgICAgICAgY2FzZSBBbmltYXRlZFByb3BlcnR5T3BhY2l0
eToKLSAgICAgICAgICAgIHJldHVybiAib3BhY2l0eSI7Ci0gICAgICAgIGNhc2UgQW5pbWF0ZWRQ
cm9wZXJ0eUJhY2tncm91bmRDb2xvcjoKLSAgICAgICAgICAgIHJldHVybiAiYmFja2dyb3VuZENv
bG9yIjsKLSAgICAgICAgY2FzZSBBbmltYXRlZFByb3BlcnR5SW52YWxpZDoKLSAgICAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICByZXR1cm4gIiI7Ci19Ci0KLXN0YXRpYyBTdHJpbmcgYW5pbWF0aW9uSWRlbnRpZmllcihj
b25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIEFuaW1hdGVkUHJvcGVydHlJRCBwcm9wZXJ0eSwg
aW50IGluZGV4KQotewotICAgIHJldHVybiBtYWtlU3RyaW5nKGFuaW1hdGlvbk5hbWUsICdfJywg
U3RyaW5nOjpudW1iZXIocHJvcGVydHkpLCAnXycsIFN0cmluZzo6bnVtYmVyKGluZGV4KSk7Ci19
Ci0KLXN0YXRpYyBDQU1lZGlhVGltaW5nRnVuY3Rpb24qIGdldENBTWVkaWFUaW1pbmdGdW5jdGlv
bihjb25zdCBUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb24pCi17Ci0gICAgLy8gQnkgdGhp
cyBwb2ludCwgdGltaW5nIGZ1bmN0aW9ucyBjYW4gb25seSBiZSBsaW5lYXIgb3IgY3ViaWMsIG5v
dCBzdGVwcy4KLSAgICBBU1NFUlQoIXRpbWluZ0Z1bmN0aW9uLT5pc1N0ZXBzVGltaW5nRnVuY3Rp
b24oKSk7Ci0gICAgaWYgKHRpbWluZ0Z1bmN0aW9uLT5pc0N1YmljQmV6aWVyVGltaW5nRnVuY3Rp
b24oKSkgewotICAgICAgICBjb25zdCBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKiBjdGYgPSBz
dGF0aWNfY2FzdDxjb25zdCBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKj4odGltaW5nRnVuY3Rp
b24pOwotICAgICAgICByZXR1cm4gW0NBTWVkaWFUaW1pbmdGdW5jdGlvbiBmdW5jdGlvbldpdGhD
b250cm9sUG9pbnRzOnN0YXRpY19jYXN0PGZsb2F0PihjdGYtPngxKCkpIDpzdGF0aWNfY2FzdDxm
bG9hdD4oY3RmLT55MSgpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgOnN0YXRpY19jYXN0PGZsb2F0PihjdGYtPngyKCkpIDpz
dGF0aWNfY2FzdDxmbG9hdD4oY3RmLT55MigpKV07Ci0gICAgfSBlbHNlCi0gICAgICAgIHJldHVy
biBbQ0FNZWRpYVRpbWluZ0Z1bmN0aW9uIGZ1bmN0aW9uV2l0aE5hbWU6QCJsaW5lYXIiXTsKLX0K
LQotc3RhdGljIHZvaWQgc2V0TGF5ZXJCb3JkZXJDb2xvcihQbGF0Zm9ybUxheWVyKiBsYXllciwg
Y29uc3QgQ29sb3ImIGNvbG9yKQotewotICAgIFtsYXllciBzZXRCb3JkZXJDb2xvcjpjYWNoZWRD
R0NvbG9yKGNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKV07Ci19Ci0KLXN0YXRpYyB2b2lkIGNs
ZWFyQm9yZGVyQ29sb3IoUGxhdGZvcm1MYXllciogbGF5ZXIpCi17Ci0gICAgW2xheWVyIHNldEJv
cmRlckNvbG9yOm5pbF07Ci19Ci0KLXN0YXRpYyB2b2lkIHNldExheWVyQmFja2dyb3VuZENvbG9y
KFBsYXRmb3JtTGF5ZXIqIGxheWVyLCBjb25zdCBDb2xvciYgY29sb3IpCi17Ci0gICAgW2xheWVy
IHNldEJhY2tncm91bmRDb2xvcjpjYWNoZWRDR0NvbG9yKGNvbG9yLCBDb2xvclNwYWNlRGV2aWNl
UkdCKV07Ci19Ci0KLXN0YXRpYyB2b2lkIGNsZWFyTGF5ZXJCYWNrZ3JvdW5kQ29sb3IoUGxhdGZv
cm1MYXllciogbGF5ZXIpCi17Ci0gICAgW2xheWVyIHNldEJhY2tncm91bmRDb2xvcjowXTsKLX0K
LQotc3RhdGljIHZvaWQgc2FmZVNldFN1YmxheWVycyhDQUxheWVyKiBsYXllciwgTlNBcnJheSog
c3VibGF5ZXJzKQotewotICAgIC8vIFdvcmthcm91bmQgZm9yIDxyZGFyOi8vcHJvYmxlbS83Mzkw
NzE2PjogLVtDQUxheWVyIHNldFN1YmxheWVyczpdIGNyYXNoZXMgaWYgc3VibGF5ZXJzIGlzIGFu
IGVtcHR5IGFycmF5LCBvciBuaWwsIHVuZGVyIEdDLgotICAgIGlmIChvYmpjX2NvbGxlY3RpbmdF
bmFibGVkKCkgJiYgIVtzdWJsYXllcnMgY291bnRdKSB7Ci0gICAgICAgIHdoaWxlIChbW2xheWVy
IHN1YmxheWVyc10gY291bnRdKQotICAgICAgICAgICAgW1tbbGF5ZXIgc3VibGF5ZXJzXSBvYmpl
Y3RBdEluZGV4OjBdIHJlbW92ZUZyb21TdXBlcmxheWVyXTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLSAgICAKLSAgICBbbGF5ZXIgc2V0U3VibGF5ZXJzOnN1YmxheWVyc107Ci19Ci0KLXN0YXRp
YyBib29sIGNhVmFsdWVGdW5jdGlvblN1cHBvcnRlZCgpCi17Ci0gICAgc3RhdGljIGJvb2wgc0hh
dmVWYWx1ZUZ1bmN0aW9uID0gW0NBUHJvcGVydHlBbmltYXRpb24gaW5zdGFuY2VzUmVzcG9uZFRv
U2VsZWN0b3I6QHNlbGVjdG9yKHNldFZhbHVlRnVuY3Rpb246KV07Ci0gICAgcmV0dXJuIHNIYXZl
VmFsdWVGdW5jdGlvbjsKLX0KLQotc3RhdGljIGJvb2wgZm9yY2VTb2Z0d2FyZUFuaW1hdGlvbigp
Ci17Ci0gICAgc3RhdGljIGJvb2wgZm9yY2VTb2Z0d2FyZUFuaW1hdGlvbiA9IFtbTlNVc2VyRGVm
YXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIGJvb2xGb3JLZXk6QCJXZWJDb3JlRm9yY2VTb2Z0
d2FyZUFuaW1hdGlvbiJdOwotICAgIHJldHVybiBmb3JjZVNvZnR3YXJlQW5pbWF0aW9uOwotfQot
Ci1zdGF0aWMgTlNEaWN0aW9uYXJ5KiBudWxsQWN0aW9uc0RpY3Rpb25hcnkoKQotewotICAgIE5T
TnVsbCogbnVsbFZhbHVlID0gW05TTnVsbCBudWxsXTsKLSAgICBOU0RpY3Rpb25hcnkqIGFjdGlv
bnMgPSBbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG51bGxWYWx1ZSwgQCJhbmNob3JQb2ludCIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG51bGxWYWx1ZSwgQCJib3VuZHMiLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBudWxsVmFsdWUsIEAiY29udGVudHMiLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBudWxsVmFsdWUsIEAiY29udGVudHNSZWN0IiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbnVsbFZhbHVlLCBAIm9wYWNpdHkiLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBudWxsVmFsdWUsIEAicG9zaXRpb24iLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBudWxsVmFsdWUsIEAic2hhZG93Q29sb3IiLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBudWxsVmFsdWUsIEAic3VibGF5ZXJUcmFuc2Zvcm0iLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBudWxsVmFsdWUsIEAic3VibGF5ZXJzIiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbnVsbFZhbHVlLCBAInRyYW5zZm9ybSIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG51bGxWYWx1ZSwgQCJ6UG9zaXRpb24iLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBuaWxdOwotICAgIHJldHVybiBhY3Rpb25zOwotfQotCi1zdGF0aWMgYm9vbCBhbmlt
YXRpb25IYXNTdGVwc1RpbWluZ0Z1bmN0aW9uKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1
ZUxpc3QsIGNvbnN0IEFuaW1hdGlvbiogYW5pbSkKLXsKLSAgICBpZiAoYW5pbS0+dGltaW5nRnVu
Y3Rpb24oKS0+aXNTdGVwc1RpbWluZ0Z1bmN0aW9uKCkpCi0gICAgICAgIHJldHVybiB0cnVlOwot
ICAgIAotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB2YWx1ZUxpc3Quc2l6ZSgpOyArK2kp
IHsKLSAgICAgICAgY29uc3QgVGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0aW9uID0gdmFsdWVM
aXN0LmF0KGkpLT50aW1pbmdGdW5jdGlvbigpOwotICAgICAgICBpZiAodGltaW5nRnVuY3Rpb24g
JiYgdGltaW5nRnVuY3Rpb24tPmlzU3RlcHNUaW1pbmdGdW5jdGlvbigpKQotICAgICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1QYXNzT3duUHRy
PEdyYXBoaWNzTGF5ZXI+IEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZShHcmFwaGljc0xheWVyQ2xpZW50
KiBjbGllbnQpCi17Ci0gICAgcmV0dXJuIG5ldyBHcmFwaGljc0xheWVyQ0EoY2xpZW50KTsKLX0K
LQotR3JhcGhpY3NMYXllckNBOjpHcmFwaGljc0xheWVyQ0EoR3JhcGhpY3NMYXllckNsaWVudCog
Y2xpZW50KQotICAgIDogR3JhcGhpY3NMYXllcihjbGllbnQpCi0gICAgLCBtX2NvbnRlbnRzTGF5
ZXJQdXJwb3NlKE5vQ29udGVudHNMYXllcikKLSAgICAsIG1fY29udGVudHNMYXllckhhc0JhY2tn
cm91bmRDb2xvcihmYWxzZSkKLSAgICAsIG1fdW5jb21taXR0ZWRDaGFuZ2VzKE5vQ2hhbmdlKQot
ewotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIG1fbGF5ZXIuYWRvcHROUyhb
W1dlYkxheWVyIGFsbG9jXSBpbml0XSk7Ci0gICAgW21fbGF5ZXIuZ2V0KCkgc2V0TGF5ZXJPd25l
cjp0aGlzXTsKLQotI2lmICFIQVZFX01PREVSTl9RVUFSVFpDT1JFCi0gICAgc2V0Q29udGVudHNP
cmllbnRhdGlvbihkZWZhdWx0Q29udGVudHNPcmllbnRhdGlvbigpKTsKLSNlbmRpZgotCi0gICAg
dXBkYXRlRGVidWdJbmRpY2F0b3JzKCk7Ci0KLSAgICBtX2FuaW1hdGlvbkRlbGVnYXRlLmFkb3B0
TlMoW1tXZWJBbmltYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwotICAgIFttX2FuaW1hdGlv
bkRlbGVnYXRlLmdldCgpIHNldExheWVyOnRoaXNdOwotICAgIAotICAgIEVORF9CTE9DS19PQkpD
X0VYQ0VQVElPTlMKLX0KLQotR3JhcGhpY3NMYXllckNBOjp+R3JhcGhpY3NMYXllckNBKCkKLXsK
LSAgICAvLyBXZSByZWxlYXNlIG91ciByZWZlcmVuY2VzIHRvIHRoZSBDQUxheWVycyBoZXJlLCBi
dXQgZG8gbm90IGFjdGl2ZWx5IHVucGFyZW50IHRoZW0sCi0gICAgLy8gc2luY2UgdGhhdCB3aWxs
IGNhdXNlIGEgY29tbWl0IGFuZCBicmVhayBvdXIgYmF0Y2hlZCBjb21taXQgbW9kZWwuIFRoZSBs
YXllcnMgd2lsbAotICAgIC8vIGdldCByZWxlYXNlZCB3aGVuIHRoZSByb290bW9zdCBtb2RpZmll
ZCBHcmFwaGljc0xheWVyQ0EgcmVidWlsZHMgaXRzIGNoaWxkIGxheWVycy4KLSAgICAKLSAgICBC
RUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIC8vIENsZWFuIHVwIHRoZSBXSyBsYXll
ci4KLSAgICBpZiAobV9sYXllcikgewotICAgICAgICBXZWJMYXllciogbGF5ZXIgPSBtX2xheWVy
LmdldCgpOwotICAgICAgICBbbGF5ZXIgc2V0TGF5ZXJPd25lcjpuaWxdOwotICAgIH0KLSAgICAK
LSAgICBpZiAobV9jb250ZW50c0xheWVyKSB7Ci0gICAgICAgIGlmIChbbV9jb250ZW50c0xheWVy
LmdldCgpIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2V0TGF5ZXJPd25lcjopXSkKLSAg
ICAgICAgICAgIFsoaWQpbV9jb250ZW50c0xheWVyLmdldCgpIHNldExheWVyT3duZXI6bmlsXTsK
LSAgICB9Ci0gICAgCi0gICAgLy8gYW5pbWF0aW9uRGlkU3RhcnQ6IGNhbiBmaXJlIGFmdGVyIHRo
aXMsIHNvIHdlIG5lZWQgdG8gY2xlYXIgb3V0IHRoZSBsYXllciBvbiB0aGUgZGVsZWdhdGUuCi0g
ICAgW21fYW5pbWF0aW9uRGVsZWdhdGUuZ2V0KCkgc2V0TGF5ZXI6MF07Ci0KLSAgICAvLyBSZWxl
YXNlIHRoZSBjbG9uZSBsYXllcnMgaW5zaWRlIHRoZSBleGNlcHRpb24taGFuZGxpbmcgYmxvY2su
Ci0gICAgcmVtb3ZlQ2xvbmVMYXllcnMoKTsKLSAgICAKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENF
UFRJT05TCi19Ci0KLXZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXROYW1lKGNvbnN0IFN0cmluZyYg
bmFtZSkKLXsKLSAgICBTdHJpbmcgbG9uZ05hbWUgPSBTdHJpbmc6OmZvcm1hdCgiQ0FMYXllcigl
cCkgR3JhcGhpY3NMYXllciglcCkgIiwgbV9sYXllci5nZXQoKSwgdGhpcykgKyBuYW1lOwotICAg
IEdyYXBoaWNzTGF5ZXI6OnNldE5hbWUobG9uZ05hbWUpOwotICAgIG5vdGVMYXllclByb3BlcnR5
Q2hhbmdlZChOYW1lQ2hhbmdlZCk7Ci19Ci0KLU5hdGl2ZUxheWVyIEdyYXBoaWNzTGF5ZXJDQTo6
bmF0aXZlTGF5ZXIoKSBjb25zdAotewotICAgIHJldHVybiBtX2xheWVyLmdldCgpOwotfQotCi1i
b29sIEdyYXBoaWNzTGF5ZXJDQTo6c2V0Q2hpbGRyZW4oY29uc3QgVmVjdG9yPEdyYXBoaWNzTGF5
ZXIqPiYgY2hpbGRyZW4pCi17Ci0gICAgYm9vbCBjaGlsZHJlbkNoYW5nZWQgPSBHcmFwaGljc0xh
eWVyOjpzZXRDaGlsZHJlbihjaGlsZHJlbik7Ci0gICAgaWYgKGNoaWxkcmVuQ2hhbmdlZCkKLSAg
ICAgICAgbm90ZVN1YmxheWVyc0NoYW5nZWQoKTsKLSAgICAKLSAgICByZXR1cm4gY2hpbGRyZW5D
aGFuZ2VkOwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJDQTo6YWRkQ2hpbGQoR3JhcGhpY3NMYXll
ciogY2hpbGRMYXllcikKLXsKLSAgICBHcmFwaGljc0xheWVyOjphZGRDaGlsZChjaGlsZExheWVy
KTsKLSAgICBub3RlU3VibGF5ZXJzQ2hhbmdlZCgpOwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJD
QTo6YWRkQ2hpbGRBdEluZGV4KEdyYXBoaWNzTGF5ZXIqIGNoaWxkTGF5ZXIsIGludCBpbmRleCkK
LXsKLSAgICBHcmFwaGljc0xheWVyOjphZGRDaGlsZEF0SW5kZXgoY2hpbGRMYXllciwgaW5kZXgp
OwotICAgIG5vdGVTdWJsYXllcnNDaGFuZ2VkKCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllckNB
OjphZGRDaGlsZEJlbG93KEdyYXBoaWNzTGF5ZXIqIGNoaWxkTGF5ZXIsIEdyYXBoaWNzTGF5ZXIq
IHNpYmxpbmcpCi17Ci0gICAgR3JhcGhpY3NMYXllcjo6YWRkQ2hpbGRCZWxvdyhjaGlsZExheWVy
LCBzaWJsaW5nKTsKLSAgICBub3RlU3VibGF5ZXJzQ2hhbmdlZCgpOwotfQotCi12b2lkIEdyYXBo
aWNzTGF5ZXJDQTo6YWRkQ2hpbGRBYm92ZShHcmFwaGljc0xheWVyKiBjaGlsZExheWVyLCBHcmFw
aGljc0xheWVyKiBzaWJsaW5nKQotewotICAgIEdyYXBoaWNzTGF5ZXI6OmFkZENoaWxkQWJvdmUo
Y2hpbGRMYXllciwgc2libGluZyk7Ci0gICAgbm90ZVN1YmxheWVyc0NoYW5nZWQoKTsKLX0KLQot
Ym9vbCBHcmFwaGljc0xheWVyQ0E6OnJlcGxhY2VDaGlsZChHcmFwaGljc0xheWVyKiBvbGRDaGls
ZCwgR3JhcGhpY3NMYXllciogbmV3Q2hpbGQpCi17Ci0gICAgaWYgKEdyYXBoaWNzTGF5ZXI6OnJl
cGxhY2VDaGlsZChvbGRDaGlsZCwgbmV3Q2hpbGQpKSB7Ci0gICAgICAgIG5vdGVTdWJsYXllcnND
aGFuZ2VkKCk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7
Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllckNBOjpyZW1vdmVGcm9tUGFyZW50KCkKLXsKLSAgICBp
ZiAobV9wYXJlbnQpCi0gICAgICAgIHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXJDQSo+KG1fcGFy
ZW50KS0+bm90ZVN1YmxheWVyc0NoYW5nZWQoKTsKLSAgICBHcmFwaGljc0xheWVyOjpyZW1vdmVG
cm9tUGFyZW50KCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRNYXNrTGF5ZXIoR3Jh
cGhpY3NMYXllciogbGF5ZXIpCi17Ci0gICAgaWYgKGxheWVyID09IG1fbWFza0xheWVyKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBHcmFwaGljc0xheWVyOjpzZXRNYXNrTGF5ZXIobGF5ZXIpOwot
ICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChNYXNrTGF5ZXJDaGFuZ2VkKTsKLQotICAgIHBy
b3BhZ2F0ZUxheWVyQ2hhbmdlVG9SZXBsaWNhcygpOwotICAgIAotICAgIGlmIChtX3JlcGxpY2F0
ZWRMYXllcikKLSAgICAgICAgc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllckNBKj4obV9yZXBsaWNh
dGVkTGF5ZXIpLT5wcm9wYWdhdGVMYXllckNoYW5nZVRvUmVwbGljYXMoKTsKLX0KLQotdm9pZCBH
cmFwaGljc0xheWVyQ0E6OnNldFJlcGxpY2F0ZWRMYXllcihHcmFwaGljc0xheWVyKiBsYXllcikK
LXsKLSAgICBpZiAobGF5ZXIgPT0gbV9yZXBsaWNhdGVkTGF5ZXIpCi0gICAgICAgIHJldHVybjsK
LQotICAgIEdyYXBoaWNzTGF5ZXI6OnNldFJlcGxpY2F0ZWRMYXllcihsYXllcik7Ci0gICAgbm90
ZUxheWVyUHJvcGVydHlDaGFuZ2VkKFJlcGxpY2F0ZWRMYXllckNoYW5nZWQpOwotfQotCi12b2lk
IEdyYXBoaWNzTGF5ZXJDQTo6c2V0UmVwbGljYXRlZEJ5TGF5ZXIoR3JhcGhpY3NMYXllciogbGF5
ZXIpCi17Ci0gICAgaWYgKGxheWVyID09IG1fcmVwbGljYUxheWVyKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBHcmFwaGljc0xheWVyOjpzZXRSZXBsaWNhdGVkQnlMYXllcihsYXllcik7Ci0gICAg
bm90ZVN1YmxheWVyc0NoYW5nZWQoKTsKLSAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoUmVw
bGljYXRlZExheWVyQ2hhbmdlZCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRQb3Np
dGlvbihjb25zdCBGbG9hdFBvaW50JiBwb2ludCkKLXsKLSAgICBpZiAocG9pbnQgPT0gbV9wb3Np
dGlvbikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgR3JhcGhpY3NMYXllcjo6c2V0UG9zaXRpb24o
cG9pbnQpOwotICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChQb3NpdGlvbkNoYW5nZWQpOwot
fQotCi12b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0QW5jaG9yUG9pbnQoY29uc3QgRmxvYXRQb2lu
dDNEJiBwb2ludCkKLXsKLSAgICBpZiAocG9pbnQgPT0gbV9hbmNob3JQb2ludCkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgR3JhcGhpY3NMYXllcjo6c2V0QW5jaG9yUG9pbnQocG9pbnQpOwotICAg
IG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChBbmNob3JQb2ludENoYW5nZWQpOwotfQotCi12b2lk
IEdyYXBoaWNzTGF5ZXJDQTo6c2V0U2l6ZShjb25zdCBGbG9hdFNpemUmIHNpemUpCi17Ci0gICAg
aWYgKHNpemUgPT0gbV9zaXplKQotICAgICAgICByZXR1cm47Ci0KLSAgICBHcmFwaGljc0xheWVy
OjpzZXRTaXplKHNpemUpOwotICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChTaXplQ2hhbmdl
ZCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRUcmFuc2Zvcm0oY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaXgmIHQpCi17Ci0gICAgaWYgKHQgPT0gbV90cmFuc2Zvcm0pCi0gICAgICAg
IHJldHVybjsKLQotICAgIEdyYXBoaWNzTGF5ZXI6OnNldFRyYW5zZm9ybSh0KTsKLSAgICBub3Rl
TGF5ZXJQcm9wZXJ0eUNoYW5nZWQoVHJhbnNmb3JtQ2hhbmdlZCk7Ci19Ci0KLXZvaWQgR3JhcGhp
Y3NMYXllckNBOjpzZXRDaGlsZHJlblRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgdCkKLXsKLSAgICBpZiAodCA9PSBtX2NoaWxkcmVuVHJhbnNmb3JtKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBHcmFwaGljc0xheWVyOjpzZXRDaGlsZHJlblRyYW5zZm9ybSh0KTsKLSAgICBu
b3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoQ2hpbGRyZW5UcmFuc2Zvcm1DaGFuZ2VkKTsKLX0KLQot
dm9pZCBHcmFwaGljc0xheWVyQ0E6Om1vdmVPckNvcHlMYXllckFuaW1hdGlvbihNb3ZlT3JDb3B5
IG9wZXJhdGlvbiwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25JZGVudGlmaWVyLCBDQUxheWVyICpm
cm9tTGF5ZXIsIENBTGF5ZXIgKnRvTGF5ZXIpCi17Ci0gICAgTlNTdHJpbmcgKmFuaW1hdGlvbklE
ID0gYW5pbWF0aW9uSWRlbnRpZmllcjsKLSAgICBDQUFuaW1hdGlvbiAqYW5pbSA9IFtmcm9tTGF5
ZXIgYW5pbWF0aW9uRm9yS2V5OmFuaW1hdGlvbklEXTsKLSAgICBpZiAoIWFuaW0pCi0gICAgICAg
IHJldHVybjsKLQotICAgIHN3aXRjaCAob3BlcmF0aW9uKSB7Ci0gICAgICAgIGNhc2UgTW92ZToK
LSAgICAgICAgICAgIFthbmltIHJldGFpbl07Ci0gICAgICAgICAgICBbZnJvbUxheWVyIHJlbW92
ZUFuaW1hdGlvbkZvcktleTphbmltYXRpb25JRF07Ci0gICAgICAgICAgICBbdG9MYXllciBhZGRB
bmltYXRpb246YW5pbSBmb3JLZXk6YW5pbWF0aW9uSURdOwotICAgICAgICAgICAgW2FuaW0gcmVs
ZWFzZV07Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIENvcHk6Ci0gICAgICAg
ICAgICBbdG9MYXllciBhZGRBbmltYXRpb246YW5pbSBmb3JLZXk6YW5pbWF0aW9uSURdOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgfQotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJDQTo6bW92ZU9y
Q29weUFuaW1hdGlvbnNGb3JQcm9wZXJ0eShNb3ZlT3JDb3B5IG9wZXJhdGlvbiwgQW5pbWF0ZWRQ
cm9wZXJ0eUlEIHByb3BlcnR5LCBDQUxheWVyICpmcm9tTGF5ZXIsIENBTGF5ZXIgKnRvTGF5ZXIp
Ci17Ci0gICAgLy8gTG9vayBmb3IgcnVubmluZyBhbmltYXRpb25zIGFmZmVjdGluZyB0aGlzIHBy
b3BlcnR5LgotICAgIEFuaW1hdGlvbnNNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fcnVubmlu
Z0FuaW1hdGlvbnMuZW5kKCk7Ci0gICAgZm9yIChBbmltYXRpb25zTWFwOjpjb25zdF9pdGVyYXRv
ciBpdCA9IG1fcnVubmluZ0FuaW1hdGlvbnMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0g
ICAgICAgIGNvbnN0IFZlY3RvcjxMYXllclByb3BlcnR5QW5pbWF0aW9uPiYgcHJvcGVydHlBbmlt
YXRpb25zID0gaXQtPnNlY29uZDsKLSAgICAgICAgc2l6ZV90IG51bUFuaW1hdGlvbnMgPSBwcm9w
ZXJ0eUFuaW1hdGlvbnMuc2l6ZSgpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51
bUFuaW1hdGlvbnM7ICsraSkgewotICAgICAgICAgICAgY29uc3QgTGF5ZXJQcm9wZXJ0eUFuaW1h
dGlvbiYgY3VyckFuaW1hdGlvbiA9IHByb3BlcnR5QW5pbWF0aW9uc1tpXTsKLSAgICAgICAgICAg
IGlmIChjdXJyQW5pbWF0aW9uLm1fcHJvcGVydHkgPT0gcHJvcGVydHkpCi0gICAgICAgICAgICAg
ICAgbW92ZU9yQ29weUxheWVyQW5pbWF0aW9uKG9wZXJhdGlvbiwgYW5pbWF0aW9uSWRlbnRpZmll
cihjdXJyQW5pbWF0aW9uLm1fbmFtZSwgY3VyckFuaW1hdGlvbi5tX3Byb3BlcnR5LCBjdXJyQW5p
bWF0aW9uLm1faW5kZXgpLCBmcm9tTGF5ZXIsIHRvTGF5ZXIpOwotICAgICAgICB9Ci0gICAgfQot
fQotCi12b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0UHJlc2VydmVzM0QoYm9vbCBwcmVzZXJ2ZXMz
RCkKLXsKLSAgICBpZiAocHJlc2VydmVzM0QgPT0gbV9wcmVzZXJ2ZXMzRCkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgR3JhcGhpY3NMYXllcjo6c2V0UHJlc2VydmVzM0QocHJlc2VydmVzM0QpOwot
ICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChQcmVzZXJ2ZXMzRENoYW5nZWQpOwotfQotCi12
b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0TWFza3NUb0JvdW5kcyhib29sIG1hc2tzVG9Cb3VuZHMp
Ci17Ci0gICAgaWYgKG1hc2tzVG9Cb3VuZHMgPT0gbV9tYXNrc1RvQm91bmRzKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBHcmFwaGljc0xheWVyOjpzZXRNYXNrc1RvQm91bmRzKG1hc2tzVG9Cb3Vu
ZHMpOwotICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChNYXNrc1RvQm91bmRzQ2hhbmdlZCk7
Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXREcmF3c0NvbnRlbnQoYm9vbCBkcmF3c0Nv
bnRlbnQpCi17Ci0gICAgaWYgKGRyYXdzQ29udGVudCA9PSBtX2RyYXdzQ29udGVudCkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgR3JhcGhpY3NMYXllcjo6c2V0RHJhd3NDb250ZW50KGRyYXdzQ29u
dGVudCk7Ci0gICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKERyYXdzQ29udGVudENoYW5nZWQp
OwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IENv
bG9yJiBjb2xvcikKLXsKLSAgICBpZiAobV9iYWNrZ3JvdW5kQ29sb3JTZXQgJiYgbV9iYWNrZ3Jv
dW5kQ29sb3IgPT0gY29sb3IpCi0gICAgICAgIHJldHVybjsKLQotICAgIEdyYXBoaWNzTGF5ZXI6
OnNldEJhY2tncm91bmRDb2xvcihjb2xvcik7Ci0KLSAgICBtX2NvbnRlbnRzTGF5ZXJIYXNCYWNr
Z3JvdW5kQ29sb3IgPSB0cnVlOwotICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChCYWNrZ3Jv
dW5kQ29sb3JDaGFuZ2VkKTsKLX0KLQotdm9pZCBHcmFwaGljc0xheWVyQ0E6OmNsZWFyQmFja2dy
b3VuZENvbG9yKCkKLXsKLSAgICBpZiAoIW1fYmFja2dyb3VuZENvbG9yU2V0KQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBHcmFwaGljc0xheWVyOjpjbGVhckJhY2tncm91bmRDb2xvcigpOwotICAg
IG1fY29udGVudHNMYXllckhhc0JhY2tncm91bmRDb2xvciA9IGZhbHNlOwotICAgIG5vdGVMYXll
clByb3BlcnR5Q2hhbmdlZChCYWNrZ3JvdW5kQ29sb3JDaGFuZ2VkKTsKLX0KLQotdm9pZCBHcmFw
aGljc0xheWVyQ0E6OnNldENvbnRlbnRzT3BhcXVlKGJvb2wgb3BhcXVlKQotewotICAgIGlmICht
X2NvbnRlbnRzT3BhcXVlID09IG9wYXF1ZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgR3JhcGhp
Y3NMYXllcjo6c2V0Q29udGVudHNPcGFxdWUob3BhcXVlKTsKLSAgICBub3RlTGF5ZXJQcm9wZXJ0
eUNoYW5nZWQoQ29udGVudHNPcGFxdWVDaGFuZ2VkKTsKLX0KLQotdm9pZCBHcmFwaGljc0xheWVy
Q0E6OnNldEJhY2tmYWNlVmlzaWJpbGl0eShib29sIHZpc2libGUpCi17Ci0gICAgaWYgKG1fYmFj
a2ZhY2VWaXNpYmlsaXR5ID09IHZpc2libGUpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBH
cmFwaGljc0xheWVyOjpzZXRCYWNrZmFjZVZpc2liaWxpdHkodmlzaWJsZSk7Ci0gICAgbm90ZUxh
eWVyUHJvcGVydHlDaGFuZ2VkKEJhY2tmYWNlVmlzaWJpbGl0eUNoYW5nZWQpOwotfQotCi12b2lk
IEdyYXBoaWNzTGF5ZXJDQTo6c2V0T3BhY2l0eShmbG9hdCBvcGFjaXR5KQotewotICAgIGZsb2F0
IGNsYW1wZWRPcGFjaXR5ID0gbWF4KDAuMGYsIG1pbihvcGFjaXR5LCAxLjBmKSk7Ci0KLSAgICBp
ZiAoY2xhbXBlZE9wYWNpdHkgPT0gbV9vcGFjaXR5KQotICAgICAgICByZXR1cm47Ci0KLSAgICBH
cmFwaGljc0xheWVyOjpzZXRPcGFjaXR5KGNsYW1wZWRPcGFjaXR5KTsKLSAgICBub3RlTGF5ZXJQ
cm9wZXJ0eUNoYW5nZWQoT3BhY2l0eUNoYW5nZWQpOwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJD
QTo6c2V0TmVlZHNEaXNwbGF5KCkKLXsKLSAgICBGbG9hdFJlY3QgaHVnZVJlY3QoLW51bWVyaWNf
bGltaXRzPGZsb2F0Pjo6bWF4KCkgLyAyLCAtbnVtZXJpY19saW1pdHM8ZmxvYXQ+OjptYXgoKSAv
IDIsCi0gICAgICAgICAgICAgICAgICAgICAgIG51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4KCks
IG51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4KCkpOwotCi0gICAgc2V0TmVlZHNEaXNwbGF5SW5S
ZWN0KGh1Z2VSZWN0KTsKLX0KLQotdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldE5lZWRzRGlzcGxh
eUluUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCi17Ci0gICAgaWYgKCFkcmF3c0NvbnRlbnQo
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgY29uc3Qgc2l6ZV90IG1heERpcnR5UmVjdHMgPSAz
MjsKLSAgICAKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZGlydHlSZWN0cy5zaXplKCk7
ICsraSkgewotICAgICAgICBpZiAobV9kaXJ0eVJlY3RzW2ldLmNvbnRhaW5zKHJlY3QpKQotICAg
ICAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBpZiAobV9kaXJ0eVJlY3RzLnNpemUo
KSA8IG1heERpcnR5UmVjdHMpCi0gICAgICAgIG1fZGlydHlSZWN0cy5hcHBlbmQocmVjdCk7Ci0g
ICAgZWxzZQotICAgICAgICBtX2RpcnR5UmVjdHNbMF0udW5pdGUocmVjdCk7Ci0KLSAgICBub3Rl
TGF5ZXJQcm9wZXJ0eUNoYW5nZWQoRGlydHlSZWN0c0NoYW5nZWQpOwotfQotCi12b2lkIEdyYXBo
aWNzTGF5ZXJDQTo6c2V0Q29udGVudHNOZWVkc0Rpc3BsYXkoKQotewotICAgIG5vdGVMYXllclBy
b3BlcnR5Q2hhbmdlZChDb250ZW50c05lZWRzRGlzcGxheSk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NM
YXllckNBOjpzZXRDb250ZW50c1JlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkKLXsKLSAgICBpZiAo
cmVjdCA9PSBtX2NvbnRlbnRzUmVjdCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgR3JhcGhpY3NM
YXllcjo6c2V0Q29udGVudHNSZWN0KHJlY3QpOwotICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdl
ZChDb250ZW50c1JlY3RDaGFuZ2VkKTsKLX0KLQotYm9vbCBHcmFwaGljc0xheWVyQ0E6OmFkZEFu
aW1hdGlvbihjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVMaXN0LCBjb25zdCBJbnRTaXpl
JiBib3hTaXplLCBjb25zdCBBbmltYXRpb24qIGFuaW0sIGNvbnN0IFN0cmluZyYgYW5pbWF0aW9u
TmFtZSwgZG91YmxlIHRpbWVPZmZzZXQpCi17Ci0gICAgQVNTRVJUKCFhbmltYXRpb25OYW1lLmlz
RW1wdHkoKSk7Ci0KLSAgICBpZiAoZm9yY2VTb2Z0d2FyZUFuaW1hdGlvbigpIHx8ICFhbmltIHx8
IGFuaW0tPmlzRW1wdHlPclplcm9EdXJhdGlvbigpIHx8IHZhbHVlTGlzdC5zaXplKCkgPCAyKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSNpZiAhSEFWRV9NT0RFUk5fUVVBUlRaQ09SRQotICAg
IC8vIE9sZGVyIHZlcnNpb25zIG9mIFF1YXJ0ekNvcmUgZG8gbm90IGhhbmRsZSBvcGFjaXR5IGlu
IHRyYW5zZm9ybSBsYXllcnMgcHJvcGVybHksIHNvIHdlIHdpbGwKLSAgICAvLyBhbHdheXMgZG8g
c29mdHdhcmUgYW5pbWF0aW9uIGluIHRoYXQgY2FzZS4KLSAgICBpZiAodmFsdWVMaXN0LnByb3Bl
cnR5KCkgPT0gQW5pbWF0ZWRQcm9wZXJ0eU9wYWNpdHkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LSNlbmRpZgotCi0gICAgLy8gQ29yZUFuaW1hdGlvbiBkb2VzIG5vdCBoYW5kbGUgdGhlIHN0ZXBz
KCkgdGltaW5nIGZ1bmN0aW9uLiBGYWxsIGJhY2sKLSAgICAvLyB0byBzb2Z0d2FyZSBhbmltYXRp
b24gaW4gdGhhdCBjYXNlLgotICAgIGlmIChhbmltYXRpb25IYXNTdGVwc1RpbWluZ0Z1bmN0aW9u
KHZhbHVlTGlzdCwgYW5pbSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGJvb2wgY3Jl
YXRlZEFuaW1hdGlvbnMgPSBmYWxzZTsKLSAgICBpZiAodmFsdWVMaXN0LnByb3BlcnR5KCkgPT0g
QW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybSkKLSAgICAgICAgY3JlYXRlZEFuaW1hdGlv
bnMgPSBjcmVhdGVUcmFuc2Zvcm1BbmltYXRpb25zRnJvbUtleWZyYW1lcyh2YWx1ZUxpc3QsIGFu
aW0sIGFuaW1hdGlvbk5hbWUsIHRpbWVPZmZzZXQsIGJveFNpemUpOwotICAgIGVsc2UKLSAgICAg
ICAgY3JlYXRlZEFuaW1hdGlvbnMgPSBjcmVhdGVBbmltYXRpb25Gcm9tS2V5ZnJhbWVzKHZhbHVl
TGlzdCwgYW5pbSwgYW5pbWF0aW9uTmFtZSwgdGltZU9mZnNldCk7Ci0KLSAgICBpZiAoY3JlYXRl
ZEFuaW1hdGlvbnMpCi0gICAgICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChBbmltYXRpb25D
aGFuZ2VkKTsKLSAgICAgICAgCi0gICAgcmV0dXJuIGNyZWF0ZWRBbmltYXRpb25zOwotfQotCi12
b2lkIEdyYXBoaWNzTGF5ZXJDQTo6cGF1c2VBbmltYXRpb24oY29uc3QgU3RyaW5nJiBhbmltYXRp
b25OYW1lLCBkb3VibGUgdGltZU9mZnNldCkKLXsKLSAgICBpZiAoIWFuaW1hdGlvbklzUnVubmlu
ZyhhbmltYXRpb25OYW1lKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQW5pbWF0aW9uc1RvUHJv
Y2Vzc01hcDo6aXRlcmF0b3IgaXQgPSBtX2FuaW1hdGlvbnNUb1Byb2Nlc3MuZmluZChhbmltYXRp
b25OYW1lKTsKLSAgICBpZiAoaXQgIT0gbV9hbmltYXRpb25zVG9Qcm9jZXNzLmVuZCgpKSB7Ci0g
ICAgICAgIEFuaW1hdGlvblByb2Nlc3NpbmdBY3Rpb24mIHByb2Nlc3NpbmdJbmZvID0gaXQtPnNl
Y29uZDsKLSAgICAgICAgLy8gSWYgYW4gYW5pbWF0aW9uIGlzIHNjaGVkdWxlZCB0byBiZSByZW1v
dmVkLCBkb24ndCBjaGFuZ2UgdGhlIHJlbW92ZSB0byBhIHBhdXNlLgotICAgICAgICBpZiAocHJv
Y2Vzc2luZ0luZm8uYWN0aW9uICE9IFJlbW92ZSkKLSAgICAgICAgICAgIHByb2Nlc3NpbmdJbmZv
LmFjdGlvbiA9IFBhdXNlOwotICAgIH0gZWxzZQotICAgICAgICBtX2FuaW1hdGlvbnNUb1Byb2Nl
c3MuYWRkKGFuaW1hdGlvbk5hbWUsIEFuaW1hdGlvblByb2Nlc3NpbmdBY3Rpb24oUGF1c2UsIHRp
bWVPZmZzZXQpKTsKLQotICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChBbmltYXRpb25DaGFu
Z2VkKTsKLX0KLQotdm9pZCBHcmFwaGljc0xheWVyQ0E6OnJlbW92ZUFuaW1hdGlvbihjb25zdCBT
dHJpbmcmIGFuaW1hdGlvbk5hbWUpCi17Ci0gICAgaWYgKCFhbmltYXRpb25Jc1J1bm5pbmcoYW5p
bWF0aW9uTmFtZSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fYW5pbWF0aW9uc1RvUHJvY2Vz
cy5hZGQoYW5pbWF0aW9uTmFtZSwgQW5pbWF0aW9uUHJvY2Vzc2luZ0FjdGlvbihSZW1vdmUpKTsK
LSAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoQW5pbWF0aW9uQ2hhbmdlZCk7Ci19Ci0KLXZv
aWQgR3JhcGhpY3NMYXllckNBOjphbmltYXRpb25EaWRTdGFydChDQUFuaW1hdGlvbiogY2FBbmlt
YXRpb24pCi17Ci0gICAgYm9vbCBoYWROb25aZXJvQmVnaW5UaW1lID0gW1tjYUFuaW1hdGlvbiB2
YWx1ZUZvcktleTpXZWJLaXRBbmltYXRpb25CZWdpblRpbWVTZXRLZXldIGJvb2xWYWx1ZV07Ci0K
LSAgICBkb3VibGUgc3RhcnRUaW1lOwotICAgIGlmIChoYWROb25aZXJvQmVnaW5UaW1lKSB7Ci0g
ICAgICAgIC8vIFdlIGRvbid0IGtub3cgd2hhdCB0aW1lIENBIHVzZWQgdG8gY29tbWl0IHRoZSBh
bmltYXRpb24sIHNvIGp1c3QgdXNlIHRoZSBjdXJyZW50IHRpbWUKLSAgICAgICAgLy8gKGV2ZW4g
dGhvdWdoIHRoaXMgd2lsbCBiZSBzbGlnaHRseSBvZmYpLgotICAgICAgICBzdGFydFRpbWUgPSBX
ZWJDb3JlOjptZWRpYVRpbWVUb0N1cnJlbnRUaW1lKENBQ3VycmVudE1lZGlhVGltZSgpKTsKLSAg
ICB9IGVsc2UKLSAgICAgICAgc3RhcnRUaW1lID0gV2ViQ29yZTo6bWVkaWFUaW1lVG9DdXJyZW50
VGltZShbY2FBbmltYXRpb24gYmVnaW5UaW1lXSk7Ci0KLSAgICBpZiAobV9jbGllbnQpCi0gICAg
ICAgIG1fY2xpZW50LT5ub3RpZnlBbmltYXRpb25TdGFydGVkKHRoaXMsIHN0YXJ0VGltZSk7Ci19
Ci0KLXZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRDb250ZW50c1RvSW1hZ2UoSW1hZ2UqIGltYWdl
KQotewotICAgIGlmIChpbWFnZSkgewotICAgICAgICBDR0ltYWdlUmVmIG5ld0ltYWdlID0gaW1h
Z2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7Ci0gICAgICAgIGlmICghbmV3SW1hZ2Up
Ci0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHRoZSBp
bWFnZSBjaGFuZ2VkOyB3ZSBoYXZlIHRvIGRvIHRoaXMgYmVjYXVzZSB0aGUgY2FsbCB0bwotICAg
ICAgICAvLyBDR0ltYWdlQ3JlYXRlQ29weVdpdGhDb2xvclNwYWNlKCkgYmVsb3cgY2FuIGNyZWF0
ZSBhIG5ldyBpbWFnZSBldmVyeSB0aW1lLgotICAgICAgICBpZiAobV91bmNvcnJlY3RlZENvbnRl
bnRzSW1hZ2UgJiYgbV91bmNvcnJlY3RlZENvbnRlbnRzSW1hZ2UuZ2V0KCkgPT0gbmV3SW1hZ2Up
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIAotICAgICAgICBtX3VuY29ycmVjdGVkQ29u
dGVudHNJbWFnZSA9IG5ld0ltYWdlOwotICAgICAgICBtX3BlbmRpbmdDb250ZW50c0ltYWdlID0g
bmV3SW1hZ2U7Ci0gICAgICAgIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlID0gQ0dJbWFnZUdl
dENvbG9yU3BhY2UobV9wZW5kaW5nQ29udGVudHNJbWFnZS5nZXQoKSk7Ci0KLSAgICAgICAgc3Rh
dGljIENHQ29sb3JTcGFjZVJlZiBkZXZpY2VSR0IgPSBDR0NvbG9yU3BhY2VDcmVhdGVEZXZpY2VS
R0IoKTsKLSAgICAgICAgaWYgKGNvbG9yU3BhY2UgJiYgQ0ZFcXVhbChjb2xvclNwYWNlLCBkZXZp
Y2VSR0IpKSB7Ci0gICAgICAgICAgICAvLyBDb3JlR3JhcGhpY3MgcmVuZGVycyBpbWFnZXMgdGFn
Z2VkIHdpdGggRGV2aWNlUkdCIHVzaW5nIHRoZSBjb2xvciBzcGFjZSBvZiB0aGUgbWFpbiBkaXNw
bGF5LiBXaGVuIHdlIGhhbmQgc3VjaAotICAgICAgICAgICAgLy8gaW1hZ2VzIHRvIENBIHdlIG5l
ZWQgdG8gdGFnIHRoZW0gc2ltaWxhcmx5IHNvIENBIHJlbmRlcmluZyBtYXRjaGVzIENHIHJlbmRl
cmluZy4KLSAgICAgICAgICAgIHN0YXRpYyBDR0NvbG9yU3BhY2VSZWYgZ2VuZXJpY1JHQiA9IENH
RGlzcGxheUNvcHlDb2xvclNwYWNlKGtDR0RpcmVjdE1haW5EaXNwbGF5KTsKLSAgICAgICAgICAg
IG1fcGVuZGluZ0NvbnRlbnRzSW1hZ2UuYWRvcHRDRihDR0ltYWdlQ3JlYXRlQ29weVdpdGhDb2xv
clNwYWNlKG1fcGVuZGluZ0NvbnRlbnRzSW1hZ2UuZ2V0KCksIGdlbmVyaWNSR0IpKTsKLSAgICAg
ICAgfQotICAgICAgICBtX2NvbnRlbnRzTGF5ZXJQdXJwb3NlID0gQ29udGVudHNMYXllckZvcklt
YWdlOwotICAgICAgICBpZiAoIW1fY29udGVudHNMYXllcikKLSAgICAgICAgICAgIG5vdGVTdWJs
YXllcnNDaGFuZ2VkKCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgbV91bmNvcnJlY3RlZENvbnRl
bnRzSW1hZ2UgPSAwOwotICAgICAgICBtX3BlbmRpbmdDb250ZW50c0ltYWdlID0gMDsKLSAgICAg
ICAgbV9jb250ZW50c0xheWVyUHVycG9zZSA9IE5vQ29udGVudHNMYXllcjsKLSAgICAgICAgaWYg
KG1fY29udGVudHNMYXllcikKLSAgICAgICAgICAgIG5vdGVTdWJsYXllcnNDaGFuZ2VkKCk7Ci0g
ICAgfQotCi0gICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKENvbnRlbnRzSW1hZ2VDaGFuZ2Vk
KTsKLX0KLQotdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRzVG9NZWRpYShQbGF0Zm9y
bUxheWVyKiBtZWRpYUxheWVyKQotewotICAgIGlmIChtZWRpYUxheWVyID09IG1fY29udGVudHNM
YXllcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9jb250ZW50c0xheWVyID0gbWVkaWFMYXll
cjsKLSAgICBtX2NvbnRlbnRzTGF5ZXJQdXJwb3NlID0gbWVkaWFMYXllciA/IENvbnRlbnRzTGF5
ZXJGb3JNZWRpYSA6IE5vQ29udGVudHNMYXllcjsKLQotICAgIG5vdGVTdWJsYXllcnNDaGFuZ2Vk
KCk7Ci0gICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKENvbnRlbnRzTWVkaWFMYXllckNoYW5n
ZWQpOwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJDQTo6ZGlkRGlzcGxheShQbGF0Zm9ybUxheWVy
KiBsYXllcikKLXsKLSAgICBDQUxheWVyKiBzb3VyY2VMYXllcjsKLSAgICBMYXllck1hcCogbGF5
ZXJDbG9uZU1hcDsKLQotICAgIGlmIChsYXllciA9PSBtX2xheWVyKSB7Ci0gICAgICAgIHNvdXJj
ZUxheWVyID0gbV9sYXllci5nZXQoKTsKLSAgICAgICAgbGF5ZXJDbG9uZU1hcCA9IG1fbGF5ZXJD
bG9uZXMuZ2V0KCk7Ci0gICAgfSBlbHNlIGlmIChsYXllciA9PSBtX2NvbnRlbnRzTGF5ZXIpIHsK
LSAgICAgICAgc291cmNlTGF5ZXIgPSBtX2NvbnRlbnRzTGF5ZXIuZ2V0KCk7Ci0gICAgICAgIGxh
eWVyQ2xvbmVNYXAgPSBtX2NvbnRlbnRzTGF5ZXJDbG9uZXMuZ2V0KCk7Ci0gICAgfSBlbHNlCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGlmIChsYXllckNsb25lTWFwKSB7Ci0gICAgICAgIExheWVy
TWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBsYXllckNsb25lTWFwLT5lbmQoKTsKLSAgICAgICAg
Zm9yIChMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBsYXllckNsb25lTWFwLT5iZWdpbigp
OyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgICAgIENBTGF5ZXIgKmN1cnJDbG9uZSA9IGl0
LT5zZWNvbmQuZ2V0KCk7Ci0gICAgICAgICAgICBpZiAoIWN1cnJDbG9uZSkKLSAgICAgICAgICAg
ICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgaWYgKFtjdXJyQ2xvbmUgY29udGVudHNdICE9
IFtzb3VyY2VMYXllciBjb250ZW50c10pCi0gICAgICAgICAgICAgICAgW2N1cnJDbG9uZSBzZXRD
b250ZW50czpbc291cmNlTGF5ZXIgY29udGVudHNdXTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICBbY3VyckNsb25lIHNldENvbnRlbnRzQ2hhbmdlZF07Ci0gICAgICAgIH0KLSAg
ICB9Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllckNBOjpzeW5jQ29tcG9zaXRpbmdTdGF0ZSgpCi17
Ci0gICAgcmVjdXJzaXZlQ29tbWl0Q2hhbmdlcygpOwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJD
QTo6c3luY0NvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KCkKLXsKLSAgICBjb21taXRM
YXllckNoYW5nZXNCZWZvcmVTdWJsYXllcnMoKTsKLSAgICBjb21taXRMYXllckNoYW5nZXNBZnRl
clN1YmxheWVycygpOwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJDQTo6cmVjdXJzaXZlQ29tbWl0
Q2hhbmdlcygpCi17Ci0gICAgY29tbWl0TGF5ZXJDaGFuZ2VzQmVmb3JlU3VibGF5ZXJzKCk7Ci0K
LSAgICBpZiAobV9tYXNrTGF5ZXIpCi0gICAgICAgIHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXJD
QSo+KG1fbWFza0xheWVyKS0+Y29tbWl0TGF5ZXJDaGFuZ2VzQmVmb3JlU3VibGF5ZXJzKCk7Ci0K
LSAgICBjb25zdCBWZWN0b3I8R3JhcGhpY3NMYXllcio+JiBjaGlsZExheWVycyA9IGNoaWxkcmVu
KCk7Ci0gICAgc2l6ZV90IG51bUNoaWxkcmVuID0gY2hpbGRMYXllcnMuc2l6ZSgpOwotICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtQ2hpbGRyZW47ICsraSkgewotICAgICAgICBHcmFwaGlj
c0xheWVyQ0EqIGN1ckNoaWxkID0gc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllckNBKj4oY2hpbGRM
YXllcnNbaV0pOwotICAgICAgICBjdXJDaGlsZC0+cmVjdXJzaXZlQ29tbWl0Q2hhbmdlcygpOwot
ICAgIH0KLQotICAgIGlmIChtX3JlcGxpY2FMYXllcikKLSAgICAgICAgc3RhdGljX2Nhc3Q8R3Jh
cGhpY3NMYXllckNBKj4obV9yZXBsaWNhTGF5ZXIpLT5yZWN1cnNpdmVDb21taXRDaGFuZ2VzKCk7
Ci0KLSAgICBpZiAobV9tYXNrTGF5ZXIpCi0gICAgICAgIHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5
ZXJDQSo+KG1fbWFza0xheWVyKS0+Y29tbWl0TGF5ZXJDaGFuZ2VzQWZ0ZXJTdWJsYXllcnMoKTsK
LQotICAgIGNvbW1pdExheWVyQ2hhbmdlc0FmdGVyU3VibGF5ZXJzKCk7Ci19Ci0KLXZvaWQgR3Jh
cGhpY3NMYXllckNBOjpjb21taXRMYXllckNoYW5nZXNCZWZvcmVTdWJsYXllcnMoKQotewotICAg
IGlmICghbV91bmNvbW1pdHRlZENoYW5nZXMpCi0gICAgICAgIHJldHVybjsKLQotICAgIEJFR0lO
X0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgLy8gTmVlZCB0byBoYW5kbGUgUHJlc2VydmVz
M0RDaGFuZ2VkIGZpcnN0LCBiZWNhdXNlIGl0IGFmZmVjdHMgd2hpY2ggbGF5ZXJzIHN1YnNlcXVl
bnQgcHJvcGVydGllcyBhcmUgYXBwbGllZCB0bwotICAgIGlmIChtX3VuY29tbWl0dGVkQ2hhbmdl
cyAmIChQcmVzZXJ2ZXMzRENoYW5nZWQgfCBSZXBsaWNhdGVkTGF5ZXJDaGFuZ2VkKSkKLSAgICAg
ICAgdXBkYXRlU3RydWN0dXJhbExheWVyKCk7Ci0KLSAgICBpZiAobV91bmNvbW1pdHRlZENoYW5n
ZXMgJiBOYW1lQ2hhbmdlZCkKLSAgICAgICAgdXBkYXRlTGF5ZXJOYW1lcygpOwotCi0gICAgaWYg
KG1fdW5jb21taXR0ZWRDaGFuZ2VzICYgQ29udGVudHNJbWFnZUNoYW5nZWQpIC8vIE5lZWRzIHRv
IGhhcHBlbiBiZWZvcmUgQ2hpbGRyZW5DaGFuZ2VkCi0gICAgICAgIHVwZGF0ZUNvbnRlbnRzSW1h
Z2UoKTsKLSAgICAgICAgCi0gICAgaWYgKG1fdW5jb21taXR0ZWRDaGFuZ2VzICYgQ29udGVudHNN
ZWRpYUxheWVyQ2hhbmdlZCkgLy8gTmVlZHMgdG8gaGFwcGVuIGJlZm9yZSBDaGlsZHJlbkNoYW5n
ZWQKLSAgICAgICAgdXBkYXRlQ29udGVudHNNZWRpYUxheWVyKCk7Ci0gICAgCi0gICAgaWYgKG1f
dW5jb21taXR0ZWRDaGFuZ2VzICYgQ29udGVudHNDYW52YXNMYXllckNoYW5nZWQpIC8vIE5lZWRz
IHRvIGhhcHBlbiBiZWZvcmUgQ2hpbGRyZW5DaGFuZ2VkCi0gICAgICAgIHVwZGF0ZUNvbnRlbnRz
Q2FudmFzTGF5ZXIoKTsKLSAgICAKLSAgICBpZiAobV91bmNvbW1pdHRlZENoYW5nZXMgJiBCYWNr
Z3JvdW5kQ29sb3JDaGFuZ2VkKSAgLy8gTmVlZHMgdG8gaGFwcGVuIGJlZm9yZSBDaGlsZHJlbkNo
YW5nZWQsIGFuZCBhZnRlciB1cGRhdGluZyBpbWFnZSBvciB2aWRlbwotICAgICAgICB1cGRhdGVM
YXllckJhY2tncm91bmRDb2xvcigpOwotCi0gICAgaWYgKG1fdW5jb21taXR0ZWRDaGFuZ2VzICYg
Q2hpbGRyZW5DaGFuZ2VkKQotICAgICAgICB1cGRhdGVTdWJsYXllckxpc3QoKTsKLQotICAgIGlm
IChtX3VuY29tbWl0dGVkQ2hhbmdlcyAmIFBvc2l0aW9uQ2hhbmdlZCkKLSAgICAgICAgdXBkYXRl
TGF5ZXJQb3NpdGlvbigpOwotICAgIAotICAgIGlmIChtX3VuY29tbWl0dGVkQ2hhbmdlcyAmIEFu
Y2hvclBvaW50Q2hhbmdlZCkKLSAgICAgICAgdXBkYXRlQW5jaG9yUG9pbnQoKTsKLSAgICAKLSAg
ICBpZiAobV91bmNvbW1pdHRlZENoYW5nZXMgJiBTaXplQ2hhbmdlZCkKLSAgICAgICAgdXBkYXRl
TGF5ZXJTaXplKCk7Ci0KLSAgICBpZiAobV91bmNvbW1pdHRlZENoYW5nZXMgJiBUcmFuc2Zvcm1D
aGFuZ2VkKQotICAgICAgICB1cGRhdGVUcmFuc2Zvcm0oKTsKLQotICAgIGlmIChtX3VuY29tbWl0
dGVkQ2hhbmdlcyAmIENoaWxkcmVuVHJhbnNmb3JtQ2hhbmdlZCkKLSAgICAgICAgdXBkYXRlQ2hp
bGRyZW5UcmFuc2Zvcm0oKTsKLSAgICAKLSAgICBpZiAobV91bmNvbW1pdHRlZENoYW5nZXMgJiBN
YXNrc1RvQm91bmRzQ2hhbmdlZCkKLSAgICAgICAgdXBkYXRlTWFza3NUb0JvdW5kcygpOwotICAg
IAotICAgIGlmIChtX3VuY29tbWl0dGVkQ2hhbmdlcyAmIERyYXdzQ29udGVudENoYW5nZWQpCi0g
ICAgICAgIHVwZGF0ZUxheWVyRHJhd3NDb250ZW50KCk7Ci0KLSAgICBpZiAobV91bmNvbW1pdHRl
ZENoYW5nZXMgJiBDb250ZW50c09wYXF1ZUNoYW5nZWQpCi0gICAgICAgIHVwZGF0ZUNvbnRlbnRz
T3BhcXVlKCk7Ci0KLSAgICBpZiAobV91bmNvbW1pdHRlZENoYW5nZXMgJiBCYWNrZmFjZVZpc2li
aWxpdHlDaGFuZ2VkKQotICAgICAgICB1cGRhdGVCYWNrZmFjZVZpc2liaWxpdHkoKTsKLQotICAg
IGlmIChtX3VuY29tbWl0dGVkQ2hhbmdlcyAmIE9wYWNpdHlDaGFuZ2VkKQotICAgICAgICB1cGRh
dGVPcGFjaXR5T25MYXllcigpOwotICAgIAotICAgIGlmIChtX3VuY29tbWl0dGVkQ2hhbmdlcyAm
IEFuaW1hdGlvbkNoYW5nZWQpCi0gICAgICAgIHVwZGF0ZUxheWVyQW5pbWF0aW9ucygpOwotICAg
IAotICAgIGlmIChtX3VuY29tbWl0dGVkQ2hhbmdlcyAmIERpcnR5UmVjdHNDaGFuZ2VkKQotICAg
ICAgICByZXBhaW50TGF5ZXJEaXJ0eVJlY3RzKCk7Ci0gICAgCi0gICAgaWYgKG1fdW5jb21taXR0
ZWRDaGFuZ2VzICYgQ29udGVudHNSZWN0Q2hhbmdlZCkKLSAgICAgICAgdXBkYXRlQ29udGVudHNS
ZWN0KCk7Ci0KLSAgICBpZiAobV91bmNvbW1pdHRlZENoYW5nZXMgJiBNYXNrTGF5ZXJDaGFuZ2Vk
KQotICAgICAgICB1cGRhdGVNYXNrTGF5ZXIoKTsKLQotICAgIGlmIChtX3VuY29tbWl0dGVkQ2hh
bmdlcyAmIENvbnRlbnRzTmVlZHNEaXNwbGF5KQotICAgICAgICB1cGRhdGVDb250ZW50c05lZWRz
RGlzcGxheSgpOwotCi0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotfQotCi12b2lkIEdy
YXBoaWNzTGF5ZXJDQTo6Y29tbWl0TGF5ZXJDaGFuZ2VzQWZ0ZXJTdWJsYXllcnMoKQotewotICAg
IGlmICghbV91bmNvbW1pdHRlZENoYW5nZXMpCi0gICAgICAgIHJldHVybjsKLQotICAgIEJFR0lO
X0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgaWYgKG1fdW5jb21taXR0ZWRDaGFuZ2VzICYg
UmVwbGljYXRlZExheWVyQ2hhbmdlZCkKLSAgICAgICAgdXBkYXRlUmVwbGljYXRlZExheWVycygp
OwotCi0gICAgbV91bmNvbW1pdHRlZENoYW5nZXMgPSBOb0NoYW5nZTsKLSAgICBFTkRfQkxPQ0tf
T0JKQ19FWENFUFRJT05TCi19Ci0KLXZvaWQgR3JhcGhpY3NMYXllckNBOjp1cGRhdGVMYXllck5h
bWVzKCkKLXsKLSAgICBzd2l0Y2ggKHN0cnVjdHVyYWxMYXllclB1cnBvc2UoKSkgewotICAgICAg
ICBjYXNlIFN0cnVjdHVyYWxMYXllckZvclByZXNlcnZlczNEOgotICAgICAgICAgICAgW21fc3Ry
dWN0dXJhbExheWVyLmdldCgpIHNldE5hbWU6KCJUcmFuc2Zvcm0gbGF5ZXIgIiArIG5hbWUoKSld
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU3RydWN0dXJhbExheWVyRm9yUmVw
bGljYUZsYXR0ZW5pbmc6Ci0gICAgICAgICAgICBbbV9zdHJ1Y3R1cmFsTGF5ZXIuZ2V0KCkgc2V0
TmFtZTooIlJlcGxpY2EgZmxhdHRlbmluZyBsYXllciAiICsgbmFtZSgpKV07Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgY2FzZSBOb1N0cnVjdHVyYWxMYXllcjoKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgIH0KLSAgICBbbV9sYXllci5nZXQoKSBzZXROYW1lOm5hbWUoKV07Ci19Ci0KLXZv
aWQgR3JhcGhpY3NMYXllckNBOjp1cGRhdGVTdWJsYXllckxpc3QoKQotewotICAgIE5TTXV0YWJs
ZUFycmF5KiBuZXdTdWJsYXllcnMgPSBuaWw7Ci0KLSAgICBjb25zdCBWZWN0b3I8R3JhcGhpY3NM
YXllcio+JiBjaGlsZExheWVycyA9IGNoaWxkcmVuKCk7Ci0KLSAgICBpZiAobV9zdHJ1Y3R1cmFs
TGF5ZXIgfHwgbV9jb250ZW50c0xheWVyIHx8IGNoaWxkTGF5ZXJzLnNpemUoKSA+IDApIHsKLSAg
ICAgICAgbmV3U3VibGF5ZXJzID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF07Ci0KLSAg
ICAgICAgaWYgKG1fc3RydWN0dXJhbExheWVyKSB7Ci0gICAgICAgICAgICAvLyBBZGQgdGhlIHJl
cGxpY2EgbGF5ZXIgZmlyc3QuCi0gICAgICAgICAgICBpZiAobV9yZXBsaWNhTGF5ZXIpCi0gICAg
ICAgICAgICAgICAgW25ld1N1YmxheWVycyBhZGRPYmplY3Q6c3RhdGljX2Nhc3Q8R3JhcGhpY3NM
YXllckNBKj4obV9yZXBsaWNhTGF5ZXIpLT5wcmltYXJ5TGF5ZXIoKV07Ci0gICAgICAgICAgICAv
LyBBZGQgdGhlIHByaW1hcnkgbGF5ZXIuIEV2ZW4gaWYgd2UgaGF2ZSBuZWdhdGl2ZSB6LW9yZGVy
IGNoaWxkcmVuLCB0aGUgcHJpbWFyeSBsYXllciBhbHdheXMgY29tZXMgYmVoaW5kLgotICAgICAg
ICAgICAgW25ld1N1YmxheWVycyBhZGRPYmplY3Q6bV9sYXllci5nZXQoKV07Ci0gICAgICAgIH0g
ZWxzZSBpZiAobV9jb250ZW50c0xheWVyKSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogYWRkIHRo
ZSBjb250ZW50cyBsYXllciBpbiB0aGUgY29ycmVjdCBvcmRlciB3aXRoIG5lZ2F0aXZlIHotb3Jk
ZXIgY2hpbGRyZW4uCi0gICAgICAgICAgICAvLyBUaGlzIGRvZXMgbm90IGNhdXNlIHZpc2libGUg
cmVuZGVyaW5nIGlzc3VlcyBiZWNhdXNlIGN1cnJlbnRseSBjb250ZW50cyBsYXllcnMgYXJlIG9u
bHkgdXNlZAotICAgICAgICAgICAgLy8gZm9yIHJlcGxhY2VkIGVsZW1lbnRzIHRoYXQgZG9uJ3Qg
aGF2ZSBjaGlsZHJlbi4KLSAgICAgICAgICAgIFtuZXdTdWJsYXllcnMgYWRkT2JqZWN0Om1fY29u
dGVudHNMYXllci5nZXQoKV07Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHNpemVfdCBu
dW1DaGlsZHJlbiA9IGNoaWxkTGF5ZXJzLnNpemUoKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBudW1DaGlsZHJlbjsgKytpKSB7Ci0gICAgICAgICAgICBHcmFwaGljc0xheWVyQ0Eq
IGN1ckNoaWxkID0gc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllckNBKj4oY2hpbGRMYXllcnNbaV0p
OwotICAgICAgICAgICAgQ0FMYXllciAqY2hpbGRMYXllciA9IGN1ckNoaWxkLT5sYXllckZvclN1
cGVybGF5ZXIoKTsKLSAgICAgICAgICAgIFtuZXdTdWJsYXllcnMgYWRkT2JqZWN0OmNoaWxkTGF5
ZXJdOwotICAgICAgICB9Ci0KLSAgICAgICAgW25ld1N1YmxheWVycyBtYWtlT2JqZWN0c1BlcmZv
cm1TZWxlY3RvcjpAc2VsZWN0b3IocmVtb3ZlRnJvbVN1cGVybGF5ZXIpXTsKLSAgICB9Ci0KLSAg
ICBpZiAobV9zdHJ1Y3R1cmFsTGF5ZXIpIHsKLSAgICAgICAgc2FmZVNldFN1YmxheWVycyhtX3N0
cnVjdHVyYWxMYXllci5nZXQoKSwgbmV3U3VibGF5ZXJzKTsKLQotICAgICAgICBpZiAobV9jb250
ZW50c0xheWVyKSB7Ci0gICAgICAgICAgICAvLyBJZiB3ZSBoYXZlIGEgdHJhbnNmb3JtIGxheWVy
LCB0aGVuIHRoZSBjb250ZW50cyBsYXllciBpcyBwYXJlbnRlZCBpbiB0aGUgCi0gICAgICAgICAg
ICAvLyBwcmltYXJ5IGxheWVyICh3aGljaCBpcyBpdHNlbGYgYSBjaGlsZCBvZiB0aGUgdHJhbnNm
b3JtIGxheWVyKS4KLSAgICAgICAgICAgIHNhZmVTZXRTdWJsYXllcnMobV9sYXllci5nZXQoKSwg
bmlsKTsKLSAgICAgICAgICAgIFttX2xheWVyLmdldCgpIGFkZFN1YmxheWVyOm1fY29udGVudHNM
YXllci5nZXQoKV07Ci0gICAgICAgIH0KLSAgICB9IGVsc2UKLSAgICAgICAgc2FmZVNldFN1Ymxh
eWVycyhtX2xheWVyLmdldCgpLCBuZXdTdWJsYXllcnMpOwotCi0gICAgW25ld1N1YmxheWVycyBy
ZWxlYXNlXTsKLX0KLQotdm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUxheWVyUG9zaXRpb24o
KQotewotICAgIEZsb2F0U2l6ZSB1c2VkU2l6ZSA9IG1fdXNpbmdUaWxlZExheWVyID8gY29uc3Ry
YWluZWRTaXplKCkgOiBtX3NpemU7Ci0KLSAgICAvLyBQb3NpdGlvbiBpcyBvZmZzZXQgb24gdGhl
IGxheWVyIGJ5IHRoZSBsYXllciBhbmNob3IgcG9pbnQuCi0gICAgQ0dQb2ludCBwb3NQb2ludCA9
IENHUG9pbnRNYWtlKG1fcG9zaXRpb24ueCgpICsgbV9hbmNob3JQb2ludC54KCkgKiB1c2VkU2l6
ZS53aWR0aCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3Bvc2l0aW9u
LnkoKSArIG1fYW5jaG9yUG9pbnQueSgpICogdXNlZFNpemUuaGVpZ2h0KCkpOwotICAgIAotICAg
IFtwcmltYXJ5TGF5ZXIoKSBzZXRQb3NpdGlvbjpwb3NQb2ludF07Ci0KLSAgICBpZiAoTGF5ZXJN
YXAqIGxheWVyQ2xvbmVNYXAgPSBwcmltYXJ5TGF5ZXJDbG9uZXMoKSkgewotICAgICAgICBMYXll
ck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbGF5ZXJDbG9uZU1hcC0+ZW5kKCk7Ci0gICAgICAg
IGZvciAoTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbGF5ZXJDbG9uZU1hcC0+YmVnaW4o
KTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICBDR1BvaW50IGNsb25lUG9zaXRpb24g
PSBwb3NQb2ludDsKLSAgICAgICAgICAgIGlmIChtX3JlcGxpY2FMYXllciAmJiBpc1JlcGxpY2F0
ZWRSb290Q2xvbmUoaXQtPmZpcnN0KSkgewotICAgICAgICAgICAgICAgIC8vIE1haW50YWluIHRo
ZSBzcGVjaWFsLWNhc2UgcG9zaXRpb24gZm9yIHRoZSByb290IG9mIGEgY2xvbmUgc3VidHJlZSwK
LSAgICAgICAgICAgICAgICAvLyB3aGljaCB3ZSBzZXQgdXAgaW4gcmVwbGljYXRlZExheWVyUm9v
dCgpLgotICAgICAgICAgICAgICAgIGNsb25lUG9zaXRpb24gPSBwb3NpdGlvbkZvckNsb25lUm9v
dExheWVyKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBDQUxheWVyICpjdXJyTGF5ZXIg
PSBpdC0+c2Vjb25kLmdldCgpOwotICAgICAgICAgICAgW2N1cnJMYXllciBzZXRQb3NpdGlvbjpj
bG9uZVBvc2l0aW9uXTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotdm9pZCBHcmFwaGljc0xheWVy
Q0E6OnVwZGF0ZUxheWVyU2l6ZSgpCi17Ci0gICAgQ0dSZWN0IHJlY3QgPSBDR1JlY3RNYWtlKDAs
IDAsIG1fc2l6ZS53aWR0aCgpLCBtX3NpemUuaGVpZ2h0KCkpOwotICAgIGlmIChtX3N0cnVjdHVy
YWxMYXllcikgewotICAgICAgICBbbV9zdHJ1Y3R1cmFsTGF5ZXIuZ2V0KCkgc2V0Qm91bmRzOnJl
Y3RdOwotICAgICAgICAKLSAgICAgICAgaWYgKExheWVyTWFwKiBsYXllckNsb25lTWFwID0gbV9z
dHJ1Y3R1cmFsTGF5ZXJDbG9uZXMuZ2V0KCkpIHsKLSAgICAgICAgICAgIExheWVyTWFwOjpjb25z
dF9pdGVyYXRvciBlbmQgPSBsYXllckNsb25lTWFwLT5lbmQoKTsKLSAgICAgICAgICAgIGZvciAo
TGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbGF5ZXJDbG9uZU1hcC0+YmVnaW4oKTsgaXQg
IT0gZW5kOyArK2l0KQotICAgICAgICAgICAgICAgIFtpdC0+c2Vjb25kLmdldCgpIHNldEJvdW5k
czpyZWN0XTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIFRoZSBhbmNob3Igb2YgdGhlIGNvbnRl
bnRzIGxheWVyIGlzIGFsd2F5cyBhdCAwLjUsIDAuNSwgc28gdGhlIHBvc2l0aW9uIGlzIGNlbnRl
ci1yZWxhdGl2ZS4KLSAgICAgICAgQ0dQb2ludCBjZW50ZXJQb2ludCA9IENHUG9pbnRNYWtlKG1f
c2l6ZS53aWR0aCgpIC8gMi4wZiwgbV9zaXplLmhlaWdodCgpIC8gMi4wZik7Ci0gICAgICAgIFtt
X2xheWVyLmdldCgpIHNldFBvc2l0aW9uOmNlbnRlclBvaW50XTsKLQotICAgICAgICBpZiAoTGF5
ZXJNYXAqIGxheWVyQ2xvbmVNYXAgPSBtX2xheWVyQ2xvbmVzLmdldCgpKSB7Ci0gICAgICAgICAg
ICBMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbGF5ZXJDbG9uZU1hcC0+ZW5kKCk7Ci0g
ICAgICAgICAgICBmb3IgKExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGxheWVyQ2xvbmVN
YXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgICAgICAgICBbaXQtPnNlY29u
ZC5nZXQoKSBzZXRQb3NpdGlvbjpjZW50ZXJQb2ludF07Ci0gICAgICAgIH0KLSAgICB9Ci0gICAg
Ci0gICAgYm9vbCBuZWVkVGlsZWRMYXllciA9IHJlcXVpcmVzVGlsZWRMYXllcihtX3NpemUpOwot
ICAgIGlmIChuZWVkVGlsZWRMYXllciAhPSBtX3VzaW5nVGlsZWRMYXllcikKLSAgICAgICAgc3dh
cEZyb21PclRvVGlsZWRMYXllcihuZWVkVGlsZWRMYXllcik7Ci0gICAgCi0gICAgaWYgKG1fdXNp
bmdUaWxlZExheWVyKSB7Ci0gICAgICAgIEZsb2F0U2l6ZSBzaXplVG9Vc2UgPSBjb25zdHJhaW5l
ZFNpemUoKTsKLSAgICAgICAgcmVjdCA9IENHUmVjdE1ha2UoMCwgMCwgc2l6ZVRvVXNlLndpZHRo
KCksIHNpemVUb1VzZS5oZWlnaHQoKSk7Ci0gICAgfQotICAgIAotICAgIFttX2xheWVyLmdldCgp
IHNldEJvdW5kczpyZWN0XTsKLSAgICBpZiAoTGF5ZXJNYXAqIGxheWVyQ2xvbmVNYXAgPSBtX2xh
eWVyQ2xvbmVzLmdldCgpKSB7Ci0gICAgICAgIExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQg
PSBsYXllckNsb25lTWFwLT5lbmQoKTsKLSAgICAgICAgZm9yIChMYXllck1hcDo6Y29uc3RfaXRl
cmF0b3IgaXQgPSBsYXllckNsb25lTWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAg
ICAgICAgICBbaXQtPnNlY29uZC5nZXQoKSBzZXRCb3VuZHM6cmVjdF07Ci0gICAgfQotICAgIAot
ICAgIC8vIENvbnRlbnRzIHRyYW5zZm9ybSBtYXkgZGVwZW5kIG9uIGhlaWdodC4KLSAgICB1cGRh
dGVDb250ZW50c1RyYW5zZm9ybSgpOwotCi0gICAgLy8gTm90ZSB0aGF0IHdlIGRvbid0IHJlc2l6
ZSBtX2NvbnRlbnRzTGF5ZXIuIEl0J3MgdXAgdGhlIGNhbGxlciB0byBkbyB0aGF0LgotCi0gICAg
Ly8gaWYgd2UndmUgY2hhbmdlZCB0aGUgYm91bmRzLCB3ZSBuZWVkIHRvIHJlY2FsY3VsYXRlIHRo
ZSBwb3NpdGlvbgotICAgIC8vIG9mIHRoZSBsYXllciwgdGFraW5nIGFuY2hvciBwb2ludCBpbnRv
IGFjY291bnQuCi0gICAgdXBkYXRlTGF5ZXJQb3NpdGlvbigpOwotfQotCi12b2lkIEdyYXBoaWNz
TGF5ZXJDQTo6dXBkYXRlQW5jaG9yUG9pbnQoKQotewotICAgIFtwcmltYXJ5TGF5ZXIoKSBzZXRB
bmNob3JQb2ludDpGbG9hdFBvaW50KG1fYW5jaG9yUG9pbnQueCgpLCBtX2FuY2hvclBvaW50Lnko
KSldOwotI2lmIEhBVkVfTU9ERVJOX1FVQVJUWkNPUkUKLSAgICBbcHJpbWFyeUxheWVyKCkgc2V0
QW5jaG9yUG9pbnRaOm1fYW5jaG9yUG9pbnQueigpXTsKLSNlbmRpZgotCi0gICAgaWYgKExheWVy
TWFwKiBsYXllckNsb25lTWFwID0gcHJpbWFyeUxheWVyQ2xvbmVzKCkpIHsKLSAgICAgICAgTGF5
ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGxheWVyQ2xvbmVNYXAtPmVuZCgpOwotICAgICAg
ICBmb3IgKExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGxheWVyQ2xvbmVNYXAtPmJlZ2lu
KCk7IGl0ICE9IGVuZDsgKytpdCkgeyAgIAotICAgICAgICAgICAgQ0FMYXllciAqY3VyckxheWVy
ID0gaXQtPnNlY29uZC5nZXQoKTsKLSAgICAgICAgICAgIFtjdXJyTGF5ZXIgc2V0QW5jaG9yUG9p
bnQ6RmxvYXRQb2ludChtX2FuY2hvclBvaW50LngoKSwgbV9hbmNob3JQb2ludC55KCkpXTsKLSNp
ZiBIQVZFX01PREVSTl9RVUFSVFpDT1JFCi0gICAgICAgICAgICBbY3VyckxheWVyIHNldEFuY2hv
clBvaW50WjptX2FuY2hvclBvaW50LnooKV07Ci0jZW5kaWYKLSAgICAgICAgfQotICAgIH0KLQot
ICAgIHVwZGF0ZUxheWVyUG9zaXRpb24oKTsKLX0KLQotdm9pZCBHcmFwaGljc0xheWVyQ0E6OnVw
ZGF0ZVRyYW5zZm9ybSgpCi17Ci0gICAgQ0FUcmFuc2Zvcm0zRCB0cmFuc2Zvcm07Ci0gICAgY29w
eVRyYW5zZm9ybSh0cmFuc2Zvcm0sIG1fdHJhbnNmb3JtKTsKLSAgICBbcHJpbWFyeUxheWVyKCkg
c2V0VHJhbnNmb3JtOnRyYW5zZm9ybV07Ci0KLSAgICBpZiAoTGF5ZXJNYXAqIGxheWVyQ2xvbmVN
YXAgPSBwcmltYXJ5TGF5ZXJDbG9uZXMoKSkgewotICAgICAgICBMYXllck1hcDo6Y29uc3RfaXRl
cmF0b3IgZW5kID0gbGF5ZXJDbG9uZU1hcC0+ZW5kKCk7Ci0gICAgICAgIGZvciAoTGF5ZXJNYXA6
OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbGF5ZXJDbG9uZU1hcC0+YmVnaW4oKTsgaXQgIT0gZW5kOyAr
K2l0KSB7Ci0gICAgICAgICAgICBDQUxheWVyICpjdXJyTGF5ZXIgPSBpdC0+c2Vjb25kLmdldCgp
OwotICAgICAgICAgICAgaWYgKG1fcmVwbGljYUxheWVyICYmIGlzUmVwbGljYXRlZFJvb3RDbG9u
ZShpdC0+Zmlyc3QpKSB7Ci0gICAgICAgICAgICAgICAgLy8gTWFpbnRhaW4gdGhlIHNwZWNpYWwt
Y2FzZSB0cmFuc2Zvcm0gZm9yIHRoZSByb290IG9mIGEgY2xvbmUgc3VidHJlZSwKLSAgICAgICAg
ICAgICAgICAvLyB3aGljaCB3ZSBzZXQgdXAgaW4gcmVwbGljYXRlZExheWVyUm9vdCgpLgotICAg
ICAgICAgICAgICAgIFtjdXJyTGF5ZXIgc2V0VHJhbnNmb3JtOkNBVHJhbnNmb3JtM0RJZGVudGl0
eV07Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBbY3VyckxheWVyIHNldFRy
YW5zZm9ybTp0cmFuc2Zvcm1dOwotICAgICAgICB9Ci0gICAgfQotfQotCi12b2lkIEdyYXBoaWNz
TGF5ZXJDQTo6dXBkYXRlQ2hpbGRyZW5UcmFuc2Zvcm0oKQotewotICAgIENBVHJhbnNmb3JtM0Qg
dHJhbnNmb3JtOwotICAgIGNvcHlUcmFuc2Zvcm0odHJhbnNmb3JtLCBtX2NoaWxkcmVuVHJhbnNm
b3JtKTsKLSAgICBbcHJpbWFyeUxheWVyKCkgc2V0U3VibGF5ZXJUcmFuc2Zvcm06dHJhbnNmb3Jt
XTsKLQotICAgIGlmIChMYXllck1hcCogbGF5ZXJDbG9uZU1hcCA9IHByaW1hcnlMYXllckNsb25l
cygpKSB7Ci0gICAgICAgIExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBsYXllckNsb25l
TWFwLT5lbmQoKTsKLSAgICAgICAgZm9yIChMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBs
YXllckNsb25lTWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgICAgIENB
TGF5ZXIgKmN1cnJMYXllciA9IGl0LT5zZWNvbmQuZ2V0KCk7Ci0gICAgICAgICAgICBbY3Vyckxh
eWVyIHNldFN1YmxheWVyVHJhbnNmb3JtOnRyYW5zZm9ybV07Ci0gICAgICAgIH0KLSAgICB9Ci19
Ci0KLXZvaWQgR3JhcGhpY3NMYXllckNBOjp1cGRhdGVNYXNrc1RvQm91bmRzKCkKLXsKLSAgICBb
bV9sYXllci5nZXQoKSBzZXRNYXNrc1RvQm91bmRzOm1fbWFza3NUb0JvdW5kc107Ci0KLSAgICBp
ZiAoTGF5ZXJNYXAqIGxheWVyQ2xvbmVNYXAgPSBtX2xheWVyQ2xvbmVzLmdldCgpKSB7Ci0gICAg
ICAgIExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBsYXllckNsb25lTWFwLT5lbmQoKTsK
LSAgICAgICAgZm9yIChMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBsYXllckNsb25lTWFw
LT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgICAgIENBTGF5ZXIgKmN1cnJM
YXllciA9IGl0LT5zZWNvbmQuZ2V0KCk7Ci0gICAgICAgICAgICBbY3VyckxheWVyIHNldE1hc2tz
VG9Cb3VuZHM6bV9tYXNrc1RvQm91bmRzXTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHVwZGF0
ZURlYnVnSW5kaWNhdG9ycygpOwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlQ29u
dGVudHNPcGFxdWUoKQotewotICAgIFttX2xheWVyLmdldCgpIHNldE9wYXF1ZTptX2NvbnRlbnRz
T3BhcXVlXTsKLQotICAgIGlmIChMYXllck1hcCogbGF5ZXJDbG9uZU1hcCA9IG1fbGF5ZXJDbG9u
ZXMuZ2V0KCkpIHsKLSAgICAgICAgTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGxheWVy
Q2xvbmVNYXAtPmVuZCgpOwotICAgICAgICBmb3IgKExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBp
dCA9IGxheWVyQ2xvbmVNYXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICAg
ICAgQ0FMYXllciAqY3VyckxheWVyID0gaXQtPnNlY29uZC5nZXQoKTsKLSAgICAgICAgICAgIFtj
dXJyTGF5ZXIgc2V0T3BhcXVlOm1fY29udGVudHNPcGFxdWVdOwotICAgICAgICB9Ci0gICAgfQot
fQotCi12b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlQmFja2ZhY2VWaXNpYmlsaXR5KCkKLXsK
LSAgICBpZiAobV9zdHJ1Y3R1cmFsTGF5ZXIgJiYgc3RydWN0dXJhbExheWVyUHVycG9zZSgpID09
IFN0cnVjdHVyYWxMYXllckZvclJlcGxpY2FGbGF0dGVuaW5nKSB7Ci0gICAgICAgIFttX3N0cnVj
dHVyYWxMYXllci5nZXQoKSBzZXREb3VibGVTaWRlZDptX2JhY2tmYWNlVmlzaWJpbGl0eV07Ci0K
LSAgICAgICAgaWYgKExheWVyTWFwKiBsYXllckNsb25lTWFwID0gbV9zdHJ1Y3R1cmFsTGF5ZXJD
bG9uZXMuZ2V0KCkpIHsKLSAgICAgICAgICAgIExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQg
PSBsYXllckNsb25lTWFwLT5lbmQoKTsKLSAgICAgICAgICAgIGZvciAoTGF5ZXJNYXA6OmNvbnN0
X2l0ZXJhdG9yIGl0ID0gbGF5ZXJDbG9uZU1hcC0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7
Ci0gICAgICAgICAgICAgICAgQ0FMYXllciAqY3VyckxheWVyID0gaXQtPnNlY29uZC5nZXQoKTsK
LSAgICAgICAgICAgICAgICBbY3VyckxheWVyIHNldERvdWJsZVNpZGVkOm1fYmFja2ZhY2VWaXNp
YmlsaXR5XTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIFttX2xheWVy
LmdldCgpIHNldERvdWJsZVNpZGVkOm1fYmFja2ZhY2VWaXNpYmlsaXR5XTsKLQotICAgIGlmIChM
YXllck1hcCogbGF5ZXJDbG9uZU1hcCA9IG1fbGF5ZXJDbG9uZXMuZ2V0KCkpIHsKLSAgICAgICAg
TGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGxheWVyQ2xvbmVNYXAtPmVuZCgpOwotICAg
ICAgICBmb3IgKExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGxheWVyQ2xvbmVNYXAtPmJl
Z2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICAgICAgQ0FMYXllciAqY3VyckxheWVy
ID0gaXQtPnNlY29uZC5nZXQoKTsKLSAgICAgICAgICAgIFtjdXJyTGF5ZXIgc2V0RG91YmxlU2lk
ZWQ6bV9iYWNrZmFjZVZpc2liaWxpdHldOwotICAgICAgICB9Ci0gICAgfQotfQotCi12b2lkIEdy
YXBoaWNzTGF5ZXJDQTo6dXBkYXRlU3RydWN0dXJhbExheWVyKCkKLXsKLSAgICBlbnN1cmVTdHJ1
Y3R1cmFsTGF5ZXIoc3RydWN0dXJhbExheWVyUHVycG9zZSgpKTsKLX0KLQotdm9pZCBHcmFwaGlj
c0xheWVyQ0E6OmVuc3VyZVN0cnVjdHVyYWxMYXllcihTdHJ1Y3R1cmFsTGF5ZXJQdXJwb3NlIHB1
cnBvc2UpCi17Ci0gICAgaWYgKHB1cnBvc2UgPT0gTm9TdHJ1Y3R1cmFsTGF5ZXIpIHsKLSAgICAg
ICAgaWYgKG1fc3RydWN0dXJhbExheWVyKSB7Ci0gICAgICAgICAgICAvLyBSZXBsYWNlIHRoZSB0
cmFuc2Zvcm1MYXllciBpbiB0aGUgcGFyZW50IHdpdGggdGhpcyBsYXllci4KLSAgICAgICAgICAg
IFttX2xheWVyLmdldCgpIHJlbW92ZUZyb21TdXBlcmxheWVyXTsKLSAgICAgICAgICAgIFtbbV9z
dHJ1Y3R1cmFsTGF5ZXIuZ2V0KCkgc3VwZXJsYXllcl0gcmVwbGFjZVN1YmxheWVyOm1fc3RydWN0
dXJhbExheWVyLmdldCgpIHdpdGg6bV9sYXllci5nZXQoKV07Ci0KLSAgICAgICAgICAgIG1vdmVP
ckNvcHlBbmltYXRpb25zRm9yUHJvcGVydHkoTW92ZSwgQW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdFRy
YW5zZm9ybSwgbV9zdHJ1Y3R1cmFsTGF5ZXIuZ2V0KCksIG1fbGF5ZXIuZ2V0KCkpOwotICAgICAg
ICAgICAgbW92ZU9yQ29weUFuaW1hdGlvbnNGb3JQcm9wZXJ0eShNb3ZlLCBBbmltYXRlZFByb3Bl
cnR5T3BhY2l0eSwgbV9zdHJ1Y3R1cmFsTGF5ZXIuZ2V0KCksIG1fbGF5ZXIuZ2V0KCkpOwotCi0g
ICAgICAgICAgICAvLyBSZWxlYXNlIHRoZSBzdHJ1Y3R1cmFsIGxheWVyLgotICAgICAgICAgICAg
bV9zdHJ1Y3R1cmFsTGF5ZXIgPSAwOwotCi0gICAgICAgICAgICAvLyBVcGRhdGUgdGhlIHByb3Bl
cnRpZXMgb2YgbV9sYXllciBub3cgdGhhdCB3ZSBubyBsb25nZXIgaGF2ZSBhIHN0cnVjdHVyYWwg
bGF5ZXIuCi0gICAgICAgICAgICB1cGRhdGVMYXllclBvc2l0aW9uKCk7Ci0gICAgICAgICAgICB1
cGRhdGVMYXllclNpemUoKTsKLSAgICAgICAgICAgIHVwZGF0ZUFuY2hvclBvaW50KCk7Ci0gICAg
ICAgICAgICB1cGRhdGVUcmFuc2Zvcm0oKTsKLSAgICAgICAgICAgIHVwZGF0ZUNoaWxkcmVuVHJh
bnNmb3JtKCk7Ci0KLSAgICAgICAgICAgIHVwZGF0ZVN1YmxheWVyTGlzdCgpOwotICAgICAgICAg
ICAgdXBkYXRlT3BhY2l0eU9uTGF5ZXIoKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm47Ci0g
ICAgfQotICAgIAotICAgIGJvb2wgc3RydWN0dXJhbExheWVyQ2hhbmdlZCA9IGZhbHNlOwotICAg
IAotICAgIGlmIChwdXJwb3NlID09IFN0cnVjdHVyYWxMYXllckZvclByZXNlcnZlczNEKSB7Ci0g
ICAgICAgIENsYXNzIHRyYW5zZm9ybUxheWVyQ2xhc3MgPSBOU0NsYXNzRnJvbVN0cmluZyhAIkNB
VHJhbnNmb3JtTGF5ZXIiKTsKLSAgICAgICAgaWYgKCF0cmFuc2Zvcm1MYXllckNsYXNzKQotICAg
ICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmIChtX3N0cnVjdHVyYWxMYXllciAmJiAhW21f
c3RydWN0dXJhbExheWVyLmdldCgpIGlzS2luZE9mQ2xhc3M6dHJhbnNmb3JtTGF5ZXJDbGFzc10p
Ci0gICAgICAgICAgICBtX3N0cnVjdHVyYWxMYXllciA9IDA7Ci0gICAgICAgIAotICAgICAgICBp
ZiAoIW1fc3RydWN0dXJhbExheWVyKSB7Ci0gICAgICAgICAgICBtX3N0cnVjdHVyYWxMYXllci5h
ZG9wdE5TKFtbdHJhbnNmb3JtTGF5ZXJDbGFzcyBhbGxvY10gaW5pdF0pOwotICAgICAgICAgICAg
c3RydWN0dXJhbExheWVyQ2hhbmdlZCA9IHRydWU7Ci0gICAgICAgIH0KLSAgICB9IGVsc2Ugewot
ICAgICAgICBpZiAobV9zdHJ1Y3R1cmFsTGF5ZXIgJiYgIVttX3N0cnVjdHVyYWxMYXllci5nZXQo
KSBpc01lbWJlck9mQ2xhc3M6W0NBTGF5ZXIgc2VsZl1dKQotICAgICAgICAgICAgbV9zdHJ1Y3R1
cmFsTGF5ZXIgPSAwOwotCi0gICAgICAgIGlmICghbV9zdHJ1Y3R1cmFsTGF5ZXIpIHsKLSAgICAg
ICAgICAgIG1fc3RydWN0dXJhbExheWVyLmFkb3B0TlMoW1tDQUxheWVyIGFsbG9jXSBpbml0XSk7
Ci0gICAgICAgICAgICBzdHJ1Y3R1cmFsTGF5ZXJDaGFuZ2VkID0gdHJ1ZTsKLSAgICAgICAgfQot
ICAgIH0KLSAgICAKLSAgICBpZiAoIXN0cnVjdHVyYWxMYXllckNoYW5nZWQpCi0gICAgICAgIHJl
dHVybjsKLSAgICAKLSAgICAvLyBUdXJuIG9mZiBkZWZhdWx0IGFuaW1hdGlvbnMuCi0gICAgW21f
c3RydWN0dXJhbExheWVyLmdldCgpIHNldFN0eWxlOltOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdp
dGhPYmplY3Q6bnVsbEFjdGlvbnNEaWN0aW9uYXJ5KCkgZm9yS2V5OkAiYWN0aW9ucyJdXTsKLQot
ICAgIHVwZGF0ZUxheWVyTmFtZXMoKTsKLQotICAgIC8vIFVwZGF0ZSB0aGUgcHJvcGVydGllcyBv
ZiB0aGUgc3RydWN0dXJhbCBsYXllci4KLSAgICB1cGRhdGVMYXllclBvc2l0aW9uKCk7Ci0gICAg
dXBkYXRlTGF5ZXJTaXplKCk7Ci0gICAgdXBkYXRlQW5jaG9yUG9pbnQoKTsKLSAgICB1cGRhdGVU
cmFuc2Zvcm0oKTsKLSAgICB1cGRhdGVDaGlsZHJlblRyYW5zZm9ybSgpOwotICAgIHVwZGF0ZUJh
Y2tmYWNlVmlzaWJpbGl0eSgpOwotICAgIAotICAgIC8vIFNldCBwcm9wZXJ0aWVzIG9mIG1fbGF5
ZXIgdG8gdGhlaXIgZGVmYXVsdCB2YWx1ZXMsIHNpbmNlIHRoZXNlIGFyZSBleHByZXNzZWQgb24g
b24gdGhlIHN0cnVjdHVyYWwgbGF5ZXIuCi0gICAgQ0dQb2ludCBwb2ludCA9IENHUG9pbnRNYWtl
KG1fc2l6ZS53aWR0aCgpIC8gMi4wZiwgbV9zaXplLmhlaWdodCgpIC8gMi4wZik7Ci0gICAgW21f
bGF5ZXIuZ2V0KCkgc2V0UG9zaXRpb246cG9pbnRdOwotICAgIFttX2xheWVyLmdldCgpIHNldEFu
Y2hvclBvaW50OkNHUG9pbnRNYWtlKDAuNWYsIDAuNWYpXTsKLSAgICBbbV9sYXllci5nZXQoKSBz
ZXRUcmFuc2Zvcm06Q0FUcmFuc2Zvcm0zRElkZW50aXR5XTsKLSAgICBbbV9sYXllci5nZXQoKSBz
ZXRPcGFjaXR5OjFdOwotCi0gICAgLy8gTW92ZSB0aGlzIGxheWVyIHRvIGJlIGEgY2hpbGQgb2Yg
dGhlIHRyYW5zZm9ybSBsYXllci4KLSAgICBbW21fbGF5ZXIuZ2V0KCkgc3VwZXJsYXllcl0gcmVw
bGFjZVN1YmxheWVyOm1fbGF5ZXIuZ2V0KCkgd2l0aDptX3N0cnVjdHVyYWxMYXllci5nZXQoKV07
Ci0gICAgW21fc3RydWN0dXJhbExheWVyLmdldCgpIGFkZFN1YmxheWVyOm1fbGF5ZXIuZ2V0KCld
OwotCi0gICAgbW92ZU9yQ29weUFuaW1hdGlvbnNGb3JQcm9wZXJ0eShNb3ZlLCBBbmltYXRlZFBy
b3BlcnR5V2Via2l0VHJhbnNmb3JtLCBtX2xheWVyLmdldCgpLCBtX3N0cnVjdHVyYWxMYXllci5n
ZXQoKSk7Ci0gICAgbW92ZU9yQ29weUFuaW1hdGlvbnNGb3JQcm9wZXJ0eShNb3ZlLCBBbmltYXRl
ZFByb3BlcnR5T3BhY2l0eSwgbV9sYXllci5nZXQoKSwgbV9zdHJ1Y3R1cmFsTGF5ZXIuZ2V0KCkp
OwotICAgIAotICAgIHVwZGF0ZVN1YmxheWVyTGlzdCgpOwotICAgIHVwZGF0ZU9wYWNpdHlPbkxh
eWVyKCk7Ci19Ci0KLUdyYXBoaWNzTGF5ZXJDQTo6U3RydWN0dXJhbExheWVyUHVycG9zZSBHcmFw
aGljc0xheWVyQ0E6OnN0cnVjdHVyYWxMYXllclB1cnBvc2UoKSBjb25zdAotewotICAgIGlmIChw
cmVzZXJ2ZXMzRCgpKQotICAgICAgICByZXR1cm4gU3RydWN0dXJhbExheWVyRm9yUHJlc2VydmVz
M0Q7Ci0gICAgCi0gICAgaWYgKGlzUmVwbGljYXRlZCgpKQotICAgICAgICByZXR1cm4gU3RydWN0
dXJhbExheWVyRm9yUmVwbGljYUZsYXR0ZW5pbmc7Ci0gICAgCi0gICAgcmV0dXJuIE5vU3RydWN0
dXJhbExheWVyOwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlTGF5ZXJEcmF3c0Nv
bnRlbnQoKQotewotICAgIGJvb2wgbmVlZFRpbGVkTGF5ZXIgPSByZXF1aXJlc1RpbGVkTGF5ZXIo
bV9zaXplKTsKLSAgICBpZiAobmVlZFRpbGVkTGF5ZXIgIT0gbV91c2luZ1RpbGVkTGF5ZXIpCi0g
ICAgICAgIHN3YXBGcm9tT3JUb1RpbGVkTGF5ZXIobmVlZFRpbGVkTGF5ZXIpOwotCi0gICAgaWYg
KG1fZHJhd3NDb250ZW50KQotICAgICAgICBbbV9sYXllci5nZXQoKSBzZXROZWVkc0Rpc3BsYXld
OwotICAgIGVsc2UKLSAgICAgICAgW21fbGF5ZXIuZ2V0KCkgc2V0Q29udGVudHM6bmlsXTsKLQot
ICAgIHVwZGF0ZURlYnVnSW5kaWNhdG9ycygpOwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJDQTo6
dXBkYXRlTGF5ZXJCYWNrZ3JvdW5kQ29sb3IoKQotewotICAgIGlmICghbV9jb250ZW50c0xheWVy
KQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBXZSBuZXZlciBjcmVhdGUgdGhlIGNvbnRlbnRz
IGxheWVyIGp1c3QgZm9yIGJhY2tncm91bmQgY29sb3IgeWV0LgotICAgIGlmIChtX2JhY2tncm91
bmRDb2xvclNldCkKLSAgICAgICAgc2V0TGF5ZXJCYWNrZ3JvdW5kQ29sb3IobV9jb250ZW50c0xh
eWVyLmdldCgpLCBtX2JhY2tncm91bmRDb2xvcik7Ci0gICAgZWxzZQotICAgICAgICBjbGVhckxh
eWVyQmFja2dyb3VuZENvbG9yKG1fY29udGVudHNMYXllci5nZXQoKSk7Ci19Ci0KLXZvaWQgR3Jh
cGhpY3NMYXllckNBOjp1cGRhdGVDb250ZW50c0ltYWdlKCkKLXsKLSAgICBpZiAobV9wZW5kaW5n
Q29udGVudHNJbWFnZSkgewotICAgICAgICBpZiAoIW1fY29udGVudHNMYXllci5nZXQoKSkgewot
ICAgICAgICAgICAgV2ViTGF5ZXIqIGltYWdlTGF5ZXIgPSBbV2ViTGF5ZXIgbGF5ZXJdOwotI2lm
bmRlZiBOREVCVUcKLSAgICAgICAgICAgIFtpbWFnZUxheWVyIHNldE5hbWU6QCJJbWFnZSBMYXll
ciJdOwotI2VuZGlmCi0gICAgICAgICAgICBzZXR1cENvbnRlbnRzTGF5ZXIoaW1hZ2VMYXllcik7
Ci0gICAgICAgICAgICBtX2NvbnRlbnRzTGF5ZXIuYWRvcHROUyhbaW1hZ2VMYXllciByZXRhaW5d
KTsKLSAgICAgICAgICAgIC8vIG1fY29udGVudHNMYXllciB3aWxsIGJlIHBhcmVudGVkIGJ5IHVw
ZGF0ZVN1YmxheWVyTGlzdAotICAgICAgICB9Ci0KLSAgICAgICAgLy8gRklYTUU6IG1heWJlIG9u
bHkgZG8gdHJpbGluZWFyIGlmIHRoZSBpbWFnZSBpcyBiZWluZyBzY2FsZWQgZG93biwKLSAgICAg
ICAgLy8gYnV0IHRoZW4gd2hhdCBpZiB0aGUgbGF5ZXIgc2l6ZSBjaGFuZ2VzPwotI2lmICFkZWZp
bmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKQot
ICAgICAgICBbbV9jb250ZW50c0xheWVyLmdldCgpIHNldE1pbmlmaWNhdGlvbkZpbHRlcjprQ0FG
aWx0ZXJUcmlsaW5lYXJdOwotI2VuZGlmCi0gICAgICAgIFttX2NvbnRlbnRzTGF5ZXIuZ2V0KCkg
c2V0Q29udGVudHM6KGlkKW1fcGVuZGluZ0NvbnRlbnRzSW1hZ2UuZ2V0KCldOwotICAgICAgICBt
X3BlbmRpbmdDb250ZW50c0ltYWdlID0gMDsKLQotICAgICAgICBpZiAobV9jb250ZW50c0xheWVy
Q2xvbmVzKSB7Ci0gICAgICAgICAgICBMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9j
b250ZW50c0xheWVyQ2xvbmVzLT5lbmQoKTsKLSAgICAgICAgICAgIGZvciAoTGF5ZXJNYXA6OmNv
bnN0X2l0ZXJhdG9yIGl0ID0gbV9jb250ZW50c0xheWVyQ2xvbmVzLT5iZWdpbigpOyBpdCAhPSBl
bmQ7ICsraXQpCi0gICAgICAgICAgICAgICAgW2l0LT5zZWNvbmQuZ2V0KCkgc2V0Q29udGVudHM6
W21fY29udGVudHNMYXllci5nZXQoKSBjb250ZW50c11dOwotICAgICAgICB9Ci0gICAgICAgIAot
ICAgICAgICB1cGRhdGVDb250ZW50c1JlY3QoKTsKLSAgICB9IGVsc2UgewotICAgICAgICAvLyBO
byBpbWFnZS4KLSAgICAgICAgLy8gbV9jb250ZW50c0xheWVyIHdpbGwgYmUgcmVtb3ZlZCB2aWEg
dXBkYXRlU3VibGF5ZXJMaXN0LgotICAgICAgICBtX2NvbnRlbnRzTGF5ZXIgPSAwOwotICAgIH0K
LX0KLQotdm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUNvbnRlbnRzTWVkaWFMYXllcigpCi17
Ci0gICAgLy8gVmlkZW8gbGF5ZXIgd2FzIHNldCBhcyBtX2NvbnRlbnRzTGF5ZXIsIGFuZCB3aWxs
IGdldCBwYXJlbnRlZCBpbiB1cGRhdGVTdWJsYXllckxpc3QoKS4KLSAgICBpZiAobV9jb250ZW50
c0xheWVyKSB7Ci0gICAgICAgIHNldHVwQ29udGVudHNMYXllcihtX2NvbnRlbnRzTGF5ZXIuZ2V0
KCkpOwotICAgICAgICB1cGRhdGVDb250ZW50c1JlY3QoKTsKLSAgICB9Ci19Ci0KLXZvaWQgR3Jh
cGhpY3NMYXllckNBOjp1cGRhdGVDb250ZW50c0NhbnZhc0xheWVyKCkKLXsKLSAgICAvLyBDYW52
YXNMYXllciB3YXMgc2V0IGFzIG1fY29udGVudHNMYXllciwgYW5kIHdpbGwgZ2V0IHBhcmVudGVk
IGluIHVwZGF0ZVN1YmxheWVyTGlzdCgpLgotICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIpIHsKLSAg
ICAgICAgc2V0dXBDb250ZW50c0xheWVyKG1fY29udGVudHNMYXllci5nZXQoKSk7Ci0gICAgICAg
IFttX2NvbnRlbnRzTGF5ZXIuZ2V0KCkgc2V0TmVlZHNEaXNwbGF5XTsKLSAgICAgICAgdXBkYXRl
Q29udGVudHNSZWN0KCk7Ci0gICAgfQotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRl
Q29udGVudHNSZWN0KCkKLXsKLSAgICBpZiAoIW1fY29udGVudHNMYXllcikKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgQ0dQb2ludCBwb2ludCA9IENHUG9pbnRNYWtlKG1fY29udGVudHNSZWN0Lngo
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9jb250ZW50c1JlY3QueSgpKTsK
LSAgICBDR1JlY3QgcmVjdCA9IENHUmVjdE1ha2UoMC4wZiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMC4wZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9jb250ZW50c1Jl
Y3Qud2lkdGgoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9jb250ZW50c1JlY3Qu
aGVpZ2h0KCkpOwotCi0gICAgW21fY29udGVudHNMYXllci5nZXQoKSBzZXRQb3NpdGlvbjpwb2lu
dF07Ci0gICAgW21fY29udGVudHNMYXllci5nZXQoKSBzZXRCb3VuZHM6cmVjdF07Ci0KLSAgICBp
ZiAobV9jb250ZW50c0xheWVyQ2xvbmVzKSB7Ci0gICAgICAgIExheWVyTWFwOjpjb25zdF9pdGVy
YXRvciBlbmQgPSBtX2NvbnRlbnRzTGF5ZXJDbG9uZXMtPmVuZCgpOwotICAgICAgICBmb3IgKExh
eWVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fY29udGVudHNMYXllckNsb25lcy0+YmVnaW4o
KTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICBDQUxheWVyICpjdXJyTGF5ZXIgPSBp
dC0+c2Vjb25kLmdldCgpOwotICAgICAgICAgICAgW2N1cnJMYXllciBzZXRQb3NpdGlvbjpwb2lu
dF07Ci0gICAgICAgICAgICBbY3VyckxheWVyIHNldEJvdW5kczpyZWN0XTsKLSAgICAgICAgfQot
ICAgIH0KLX0KLQotdm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZU1hc2tMYXllcigpCi17Ci0g
ICAgQ0FMYXllciAqbWFza0NBTGF5ZXIgPSBtX21hc2tMYXllciA/IG1fbWFza0xheWVyLT5wbGF0
Zm9ybUxheWVyKCkgOiAwOwotICAgIFttX2xheWVyLmdldCgpIHNldE1hc2s6bWFza0NBTGF5ZXJd
OwotCi0gICAgTGF5ZXJNYXAqIG1hc2tMYXllckNsb25lTWFwID0gbV9tYXNrTGF5ZXIgPyBzdGF0
aWNfY2FzdDxHcmFwaGljc0xheWVyQ0EqPihtX21hc2tMYXllciktPnByaW1hcnlMYXllckNsb25l
cygpIDogMDsKLSAgICAKLSAgICBpZiAoTGF5ZXJNYXAqIGxheWVyQ2xvbmVNYXAgPSBtX2xheWVy
Q2xvbmVzLmdldCgpKSB7Ci0gICAgICAgIExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBs
YXllckNsb25lTWFwLT5lbmQoKTsKLSAgICAgICAgZm9yIChMYXllck1hcDo6Y29uc3RfaXRlcmF0
b3IgaXQgPSBsYXllckNsb25lTWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAg
ICAgICAgIENBTGF5ZXIgKmN1cnJMYXllciA9IGl0LT5zZWNvbmQuZ2V0KCk7Ci0gICAgICAgICAg
ICAKLSAgICAgICAgICAgIENBTGF5ZXIgKm1hc2tDbG9uZSA9IG1hc2tMYXllckNsb25lTWFwID8g
bWFza0xheWVyQ2xvbmVNYXAtPmdldChpdC0+Zmlyc3QpLmdldCgpIDogMDsKLSAgICAgICAgICAg
IFtjdXJyTGF5ZXIgc2V0TWFzazptYXNrQ2xvbmVdOwotICAgICAgICB9Ci0gICAgfQotfQotCi12
b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlUmVwbGljYXRlZExheWVycygpCi17Ci0gICAgLy8g
Q2xvbmUgdGhlIGRlc2NlbmRhbnRzIG9mIHRoZSByZXBsaWNhdGVkIGxheWVyLCBhbmQgcGFyZW50
IHVuZGVyIHVzLgotICAgIFJlcGxpY2FTdGF0ZSByZXBsaWNhU3RhdGUoUmVwbGljYVN0YXRlOjpS
ZXBsaWNhQnJhbmNoKTsKLQotICAgIENBTGF5ZXIgKnJlcGxpY2FSb290ID0gcmVwbGljYXRlZExh
eWVyUm9vdChyZXBsaWNhU3RhdGUpOwotICAgIGlmICghcmVwbGljYVJvb3QpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIGlmIChtX3N0cnVjdHVyYWxMYXllcikKLSAgICAgICAgW21fc3RydWN0dXJh
bExheWVyLmdldCgpIGluc2VydFN1YmxheWVyOnJlcGxpY2FSb290IGF0SW5kZXg6MF07Ci0gICAg
ZWxzZQotICAgICAgICBbbV9sYXllci5nZXQoKSBpbnNlcnRTdWJsYXllcjpyZXBsaWNhUm9vdCBh
dEluZGV4OjBdOwotfQotCi0vLyBGb3Igbm93LCB0aGlzIGFzc3VtZXMgdGhhdCBsYXllcnMgb25s
eSBldmVyIGhhdmUgb25lIHJlcGxpY2EsIHNvIHJlcGxpY2FJbmRpY2VzIGNvbnRhaW5zIG9ubHkg
MCBhbmQgMS4KLUdyYXBoaWNzTGF5ZXJDQTo6Q2xvbmVJRCBHcmFwaGljc0xheWVyQ0E6OlJlcGxp
Y2FTdGF0ZTo6Y2xvbmVJRCgpIGNvbnN0Ci17Ci0gICAgc2l6ZV90IGRlcHRoID0gbV9yZXBsaWNh
QnJhbmNoZXMuc2l6ZSgpOwotCi0gICAgY29uc3Qgc2l6ZV90IGJpdHNQZXJVQ2hhciA9IHNpemVv
ZihVQ2hhcikgKiA4OwotICAgIHNpemVfdCB2ZWN0b3JTaXplID0gKGRlcHRoICsgYml0c1BlclVD
aGFyIC0gMSkgLyBiaXRzUGVyVUNoYXI7Ci0gICAgCi0gICAgVmVjdG9yPFVDaGFyPiByZXN1bHQo
dmVjdG9yU2l6ZSk7Ci0gICAgcmVzdWx0LmZpbGwoMCk7Ci0KLSAgICAvLyBDcmVhdGUgYSBzdHJp
bmcgZnJvbSB0aGUgYml0IHNlcXVlbmNlIHdoaWNoIHdlIGNhbiB1c2UgdG8gaWRlbnRpZnkgdGhl
IGNsb25lLgotICAgIC8vIE5vdGUgdGhhdCB0aGUgc3RyaW5nIG1heSBjb250YWluIGVtYmVkZGVk
IG51bGxzLCBidXQgdGhhdCdzIE9LLgotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZGVwdGg7
ICsraSkgewotICAgICAgICBVQ2hhciYgY3VyckNoYXIgPSByZXN1bHRbaSAvIGJpdHNQZXJVQ2hh
cl07Ci0gICAgICAgIGN1cnJDaGFyID0gKGN1cnJDaGFyIDw8IDEpIHwgbV9yZXBsaWNhQnJhbmNo
ZXNbaV07Ci0gICAgfQotICAgIAotICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KHJlc3VsdCk7Ci19
Ci0KLUNBTGF5ZXIgKkdyYXBoaWNzTGF5ZXJDQTo6cmVwbGljYXRlZExheWVyUm9vdChSZXBsaWNh
U3RhdGUmIHJlcGxpY2FTdGF0ZSkKLXsKLSAgICAvLyBMaW1pdCByZXBsaWNhIG5lc3RpbmcsIHRv
IGF2b2lkIDJeTiBleHBsb3Npb24gb2YgcmVwbGljYSBsYXllcnMuCi0gICAgaWYgKCFtX3JlcGxp
Y2F0ZWRMYXllciB8fCByZXBsaWNhU3RhdGUucmVwbGljYURlcHRoKCkgPT0gUmVwbGljYVN0YXRl
OjptYXhSZXBsaWNhRGVwdGgpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBHcmFwaGljc0xh
eWVyQ0EqIHJlcGxpY2F0ZWRMYXllciA9IHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXJDQSo+KG1f
cmVwbGljYXRlZExheWVyKTsKLSAgICAKLSAgICBDQUxheWVyICpjbG9uZWRMYXllclJvb3QgPSBy
ZXBsaWNhdGVkTGF5ZXItPmZldGNoQ2xvbmVMYXllcnModGhpcywgcmVwbGljYVN0YXRlLCBSb290
Q2xvbmVMZXZlbCk7Ci0gICAgRmxvYXRQb2ludCBjbG9uZVJvb3RQb3NpdGlvbiA9IHJlcGxpY2F0
ZWRMYXllci0+cG9zaXRpb25Gb3JDbG9uZVJvb3RMYXllcigpOwotCi0gICAgLy8gUmVwbGljYSBy
b290IGhhcyBubyBvZmZzZXQgb3IgdHJhbnNmb3JtCi0gICAgW2Nsb25lZExheWVyUm9vdCBzZXRQ
b3NpdGlvbjpjbG9uZVJvb3RQb3NpdGlvbl07Ci0gICAgW2Nsb25lZExheWVyUm9vdCBzZXRUcmFu
c2Zvcm06Q0FUcmFuc2Zvcm0zRElkZW50aXR5XTsKLQotICAgIHJldHVybiBjbG9uZWRMYXllclJv
b3Q7Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllckNBOjp1cGRhdGVMYXllckFuaW1hdGlvbnMoKQot
ewotICAgIGlmIChtX2FuaW1hdGlvbnNUb1Byb2Nlc3Muc2l6ZSgpKSB7Ci0gICAgICAgIEFuaW1h
dGlvbnNUb1Byb2Nlc3NNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fYW5pbWF0aW9uc1RvUHJv
Y2Vzcy5lbmQoKTsKLSAgICAgICAgZm9yIChBbmltYXRpb25zVG9Qcm9jZXNzTWFwOjpjb25zdF9p
dGVyYXRvciBpdCA9IG1fYW5pbWF0aW9uc1RvUHJvY2Vzcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsr
aXQpIHsKLSAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgY3VyckFuaW1hdGlvbk5hbWUgPSBpdC0+
Zmlyc3Q7Ci0gICAgICAgICAgICBBbmltYXRpb25zTWFwOjppdGVyYXRvciBhbmltYXRpb25JdCA9
IG1fcnVubmluZ0FuaW1hdGlvbnMuZmluZChjdXJyQW5pbWF0aW9uTmFtZSk7Ci0gICAgICAgICAg
ICBpZiAoYW5pbWF0aW9uSXQgPT0gbV9ydW5uaW5nQW5pbWF0aW9ucy5lbmQoKSkKLSAgICAgICAg
ICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgY29uc3QgQW5pbWF0aW9uUHJvY2Vzc2lu
Z0FjdGlvbiYgcHJvY2Vzc2luZ0luZm8gPSBpdC0+c2Vjb25kOwotICAgICAgICAgICAgY29uc3Qg
VmVjdG9yPExheWVyUHJvcGVydHlBbmltYXRpb24+JiBhbmltYXRpb25zID0gYW5pbWF0aW9uSXQt
PnNlY29uZDsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYW5pbWF0aW9ucy5z
aXplKCk7ICsraSkgewotICAgICAgICAgICAgICAgIGNvbnN0IExheWVyUHJvcGVydHlBbmltYXRp
b24mIGN1cnJBbmltYXRpb24gPSBhbmltYXRpb25zW2ldOwotICAgICAgICAgICAgICAgIHN3aXRj
aCAocHJvY2Vzc2luZ0luZm8uYWN0aW9uKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgUmVt
b3ZlOgotICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlQ0FBbmltYXRpb25Gcm9tTGF5ZXIo
Y3VyckFuaW1hdGlvbi5tX3Byb3BlcnR5LCBjdXJyQW5pbWF0aW9uTmFtZSwgY3VyckFuaW1hdGlv
bi5tX2luZGV4KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgICAgICBjYXNlIFBhdXNlOgotICAgICAgICAgICAgICAgICAgICAgICAgcGF1c2VDQUFuaW1h
dGlvbk9uTGF5ZXIoY3VyckFuaW1hdGlvbi5tX3Byb3BlcnR5LCBjdXJyQW5pbWF0aW9uTmFtZSwg
Y3VyckFuaW1hdGlvbi5tX2luZGV4LCBwcm9jZXNzaW5nSW5mby50aW1lT2Zmc2V0KTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgaWYgKHByb2Nlc3NpbmdJbmZvLmFjdGlvbiA9PSBSZW1vdmUpCi0g
ICAgICAgICAgICAgICAgbV9ydW5uaW5nQW5pbWF0aW9ucy5yZW1vdmUoY3VyckFuaW1hdGlvbk5h
bWUpOwotICAgICAgICB9Ci0gICAgCi0gICAgICAgIG1fYW5pbWF0aW9uc1RvUHJvY2Vzcy5jbGVh
cigpOwotICAgIH0KLSAgICAKLSAgICBzaXplX3QgbnVtQW5pbWF0aW9uczsKLSAgICBpZiAoKG51
bUFuaW1hdGlvbnMgPSBtX3VuY29taXR0ZWRBbmltYXRpb25zLnNpemUoKSkpIHsKLSAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1BbmltYXRpb25zOyArK2kpIHsKLSAgICAgICAgICAg
IGNvbnN0IExheWVyUHJvcGVydHlBbmltYXRpb24mIHBlbmRpbmdBbmltYXRpb24gPSBtX3VuY29t
aXR0ZWRBbmltYXRpb25zW2ldOwotICAgICAgICAgICAgc2V0Q0FBbmltYXRpb25PbkxheWVyKHBl
bmRpbmdBbmltYXRpb24ubV9hbmltYXRpb24uZ2V0KCksIHBlbmRpbmdBbmltYXRpb24ubV9wcm9w
ZXJ0eSwgcGVuZGluZ0FuaW1hdGlvbi5tX25hbWUsIHBlbmRpbmdBbmltYXRpb24ubV9pbmRleCwg
cGVuZGluZ0FuaW1hdGlvbi5tX3RpbWVPZmZzZXQpOwotICAgICAgICAgICAgCi0gICAgICAgICAg
ICBBbmltYXRpb25zTWFwOjppdGVyYXRvciBpdCA9IG1fcnVubmluZ0FuaW1hdGlvbnMuZmluZChw
ZW5kaW5nQW5pbWF0aW9uLm1fbmFtZSk7Ci0gICAgICAgICAgICBpZiAoaXQgPT0gbV9ydW5uaW5n
QW5pbWF0aW9ucy5lbmQoKSkgewotICAgICAgICAgICAgICAgIFZlY3RvcjxMYXllclByb3BlcnR5
QW5pbWF0aW9uPiBhbmltYXRpb25zOwotICAgICAgICAgICAgICAgIGFuaW1hdGlvbnMuYXBwZW5k
KHBlbmRpbmdBbmltYXRpb24pOwotICAgICAgICAgICAgICAgIG1fcnVubmluZ0FuaW1hdGlvbnMu
YWRkKHBlbmRpbmdBbmltYXRpb24ubV9uYW1lLCBhbmltYXRpb25zKTsKLSAgICAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgVmVjdG9yPExheWVyUHJvcGVydHlBbmltYXRpb24+JiBh
bmltYXRpb25zID0gaXQtPnNlY29uZDsKLSAgICAgICAgICAgICAgICBhbmltYXRpb25zLmFwcGVu
ZChwZW5kaW5nQW5pbWF0aW9uKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICAK
LSAgICAgICAgbV91bmNvbWl0dGVkQW5pbWF0aW9ucy5jbGVhcigpOwotICAgIH0KLX0KLQotdm9p
ZCBHcmFwaGljc0xheWVyQ0E6OnNldENBQW5pbWF0aW9uT25MYXllcihDQVByb3BlcnR5QW5pbWF0
aW9uKiBjYUFuaW0sIEFuaW1hdGVkUHJvcGVydHlJRCBwcm9wZXJ0eSwgY29uc3QgU3RyaW5nJiBh
bmltYXRpb25OYW1lLCBpbnQgaW5kZXgsIGRvdWJsZSB0aW1lT2Zmc2V0KQotewotICAgIFBsYXRm
b3JtTGF5ZXIqIGxheWVyID0gYW5pbWF0ZWRMYXllcihwcm9wZXJ0eSk7Ci0KLSAgICBpZiAodGlt
ZU9mZnNldCkgewotICAgICAgICBbY2FBbmltIHNldEJlZ2luVGltZTpDQUN1cnJlbnRNZWRpYVRp
bWUoKSAtIHRpbWVPZmZzZXRdOwotICAgICAgICBbY2FBbmltIHNldFZhbHVlOltOU051bWJlciBu
dW1iZXJXaXRoQm9vbDpZRVNdIGZvcktleTpXZWJLaXRBbmltYXRpb25CZWdpblRpbWVTZXRLZXld
OwotICAgIH0KLQotICAgIE5TU3RyaW5nICphbmltYXRpb25JRCA9IGFuaW1hdGlvbklkZW50aWZp
ZXIoYW5pbWF0aW9uTmFtZSwgcHJvcGVydHksIGluZGV4KTsKLQotICAgIFtsYXllciByZW1vdmVB
bmltYXRpb25Gb3JLZXk6YW5pbWF0aW9uSURdOwotICAgIFtsYXllciBhZGRBbmltYXRpb246Y2FB
bmltIGZvcktleTphbmltYXRpb25JRF07Ci0KLSAgICBpZiAoTGF5ZXJNYXAqIGxheWVyQ2xvbmVN
YXAgPSBhbmltYXRlZExheWVyQ2xvbmVzKHByb3BlcnR5KSkgewotICAgICAgICBMYXllck1hcDo6
Y29uc3RfaXRlcmF0b3IgZW5kID0gbGF5ZXJDbG9uZU1hcC0+ZW5kKCk7Ci0gICAgICAgIGZvciAo
TGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbGF5ZXJDbG9uZU1hcC0+YmVnaW4oKTsgaXQg
IT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICAvLyBTa2lwIGltbWVkaWF0ZSByZXBsaWNhcywg
c2luY2UgdGhleSBtb3ZlIHdpdGggdGhlIG9yaWdpbmFsLgotICAgICAgICAgICAgaWYgKG1fcmVw
bGljYUxheWVyICYmIGlzUmVwbGljYXRlZFJvb3RDbG9uZShpdC0+Zmlyc3QpKQotICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgQ0FMYXllciAqY3VyckxheWVyID0gaXQtPnNl
Y29uZC5nZXQoKTsKLSAgICAgICAgICAgIFtjdXJyTGF5ZXIgcmVtb3ZlQW5pbWF0aW9uRm9yS2V5
OmFuaW1hdGlvbklEXTsKLSAgICAgICAgICAgIFtjdXJyTGF5ZXIgYWRkQW5pbWF0aW9uOmNhQW5p
bSBmb3JLZXk6YW5pbWF0aW9uSURdOwotICAgICAgICB9Ci0gICAgfQotfQotCi0vLyBXb3JrYXJv
dW5kIGZvciA8cmRhcjovL3Byb2JsZW0vNzMxMTM2Nz4KLXN0YXRpYyB2b2lkIGJ1ZzczMTEzNjdX
b3JrYXJvdW5kKENBTGF5ZXIqIHRyYW5zZm9ybUxheWVyLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgdHJhbnNmb3JtKQotewotICAgIGlmICghdHJhbnNmb3JtTGF5ZXIpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIENBVHJhbnNmb3JtM0QgY2FUcmFuc2Zvcm07Ci0gICAgY29weVRyYW5zZm9y
bShjYVRyYW5zZm9ybSwgdHJhbnNmb3JtKTsKLSAgICBjYVRyYW5zZm9ybS5tNDEgKz0gMTsKLSAg
ICBbdHJhbnNmb3JtTGF5ZXIgc2V0VHJhbnNmb3JtOmNhVHJhbnNmb3JtXTsKLQotICAgIGNhVHJh
bnNmb3JtLm00MSAtPSAxOwotICAgIFt0cmFuc2Zvcm1MYXllciBzZXRUcmFuc2Zvcm06Y2FUcmFu
c2Zvcm1dOwotfQotCi1ib29sIEdyYXBoaWNzTGF5ZXJDQTo6cmVtb3ZlQ0FBbmltYXRpb25Gcm9t
TGF5ZXIoQW5pbWF0ZWRQcm9wZXJ0eUlEIHByb3BlcnR5LCBjb25zdCBTdHJpbmcmIGFuaW1hdGlv
bk5hbWUsIGludCBpbmRleCkKLXsKLSAgICBQbGF0Zm9ybUxheWVyKiBsYXllciA9IGFuaW1hdGVk
TGF5ZXIocHJvcGVydHkpOwotCi0gICAgTlNTdHJpbmcgKmFuaW1hdGlvbklEID0gYW5pbWF0aW9u
SWRlbnRpZmllcihhbmltYXRpb25OYW1lLCBwcm9wZXJ0eSwgaW5kZXgpOwotCi0gICAgaWYgKCFb
bGF5ZXIgYW5pbWF0aW9uRm9yS2V5OmFuaW1hdGlvbklEXSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIAotICAgIFtsYXllciByZW1vdmVBbmltYXRpb25Gb3JLZXk6YW5pbWF0aW9uSURdOwot
ICAgIGJ1ZzczMTEzNjdXb3JrYXJvdW5kKG1fc3RydWN0dXJhbExheWVyLmdldCgpLCBtX3RyYW5z
Zm9ybSk7Ci0KLSAgICBpZiAoTGF5ZXJNYXAqIGxheWVyQ2xvbmVNYXAgPSBhbmltYXRlZExheWVy
Q2xvbmVzKHByb3BlcnR5KSkgewotICAgICAgICBMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5k
ID0gbGF5ZXJDbG9uZU1hcC0+ZW5kKCk7Ci0gICAgICAgIGZvciAoTGF5ZXJNYXA6OmNvbnN0X2l0
ZXJhdG9yIGl0ID0gbGF5ZXJDbG9uZU1hcC0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0g
ICAgICAgICAgICAvLyBTa2lwIGltbWVkaWF0ZSByZXBsaWNhcywgc2luY2UgdGhleSBtb3ZlIHdp
dGggdGhlIG9yaWdpbmFsLgotICAgICAgICAgICAgaWYgKG1fcmVwbGljYUxheWVyICYmIGlzUmVw
bGljYXRlZFJvb3RDbG9uZShpdC0+Zmlyc3QpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwot
Ci0gICAgICAgICAgICBDQUxheWVyICpjdXJyTGF5ZXIgPSBpdC0+c2Vjb25kLmdldCgpOwotICAg
ICAgICAgICAgW2N1cnJMYXllciByZW1vdmVBbmltYXRpb25Gb3JLZXk6YW5pbWF0aW9uSURdOwot
ICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCi1zdGF0aWMgdm9pZCBjb3B5
QW5pbWF0aW9uUHJvcGVydGllcyhDQVByb3BlcnR5QW5pbWF0aW9uKiBmcm9tLCBDQVByb3BlcnR5
QW5pbWF0aW9uKiB0bykKLXsKLSAgICBbdG8gc2V0QmVnaW5UaW1lOltmcm9tIGJlZ2luVGltZV1d
OwotICAgIFt0byBzZXREdXJhdGlvbjpbZnJvbSBkdXJhdGlvbl1dOwotICAgIFt0byBzZXRSZXBl
YXRDb3VudDpbZnJvbSByZXBlYXRDb3VudF1dOwotICAgIFt0byBzZXRBdXRvcmV2ZXJzZXM6W2Zy
b20gYXV0b3JldmVyc2VzXV07Ci0gICAgW3RvIHNldEZpbGxNb2RlOltmcm9tIGZpbGxNb2RlXV07
Ci0gICAgW3RvIHNldFJlbW92ZWRPbkNvbXBsZXRpb246W2Zyb20gaXNSZW1vdmVkT25Db21wbGV0
aW9uXV07Ci0gICAgW3RvIHNldEFkZGl0aXZlOltmcm9tIGlzQWRkaXRpdmVdXTsKLSAgICBbdG8g
c2V0VGltaW5nRnVuY3Rpb246W2Zyb20gdGltaW5nRnVuY3Rpb25dXTsKLQotI2lmIEhBVkVfTU9E
RVJOX1FVQVJUWkNPUkUKLSAgICBbdG8gc2V0VmFsdWVGdW5jdGlvbjpbZnJvbSB2YWx1ZUZ1bmN0
aW9uXV07Ci0jZW5kaWYKLQotICAgIGlmIChpZCBvYmplY3QgPSBbZnJvbSB2YWx1ZUZvcktleTpX
ZWJLaXRBbmltYXRpb25CZWdpblRpbWVTZXRLZXldKQotICAgICAgICBbdG8gc2V0VmFsdWU6b2Jq
ZWN0IGZvcktleTpXZWJLaXRBbmltYXRpb25CZWdpblRpbWVTZXRLZXldOwotfQotCi12b2lkIEdy
YXBoaWNzTGF5ZXJDQTo6cGF1c2VDQUFuaW1hdGlvbk9uTGF5ZXIoQW5pbWF0ZWRQcm9wZXJ0eUlE
IHByb3BlcnR5LCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGludCBpbmRleCwgZG91Ymxl
IHRpbWVPZmZzZXQpCi17Ci0gICAgUGxhdGZvcm1MYXllciogbGF5ZXIgPSBhbmltYXRlZExheWVy
KHByb3BlcnR5KTsKLQotICAgIE5TU3RyaW5nICphbmltYXRpb25JRCA9IGFuaW1hdGlvbklkZW50
aWZpZXIoYW5pbWF0aW9uTmFtZSwgcHJvcGVydHksIGluZGV4KTsKLQotICAgIENBQW5pbWF0aW9u
ICpjYUFuaW0gPSBbbGF5ZXIgYW5pbWF0aW9uRm9yS2V5OmFuaW1hdGlvbklEXTsKLSAgICBpZiAo
IWNhQW5pbSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gQW5pbWF0aW9ucyBvbiB0aGUgbGF5
ZXIgYXJlIGltbXV0YWJsZSwgc28gd2UgaGF2ZSB0byBjbG9uZSBhbmQgbW9kaWZ5LgotICAgIENB
UHJvcGVydHlBbmltYXRpb24qIHBhdXNlZEFuaW0gPSBuaWw7Ci0gICAgaWYgKFtjYUFuaW0gaXNL
aW5kT2ZDbGFzczpbQ0FLZXlmcmFtZUFuaW1hdGlvbiBjbGFzc11dKSB7Ci0gICAgICAgIENBS2V5
ZnJhbWVBbmltYXRpb24qIGV4aXN0aW5nS2V5ZnJhbWVBbmltID0gc3RhdGljX2Nhc3Q8Q0FLZXlm
cmFtZUFuaW1hdGlvbio+KGNhQW5pbSk7Ci0gICAgICAgIENBS2V5ZnJhbWVBbmltYXRpb24qIG5l
d0FuaW0gPSBbQ0FLZXlmcmFtZUFuaW1hdGlvbiBhbmltYXRpb25XaXRoS2V5UGF0aDpbZXhpc3Rp
bmdLZXlmcmFtZUFuaW0ga2V5UGF0aF1dOwotICAgICAgICBjb3B5QW5pbWF0aW9uUHJvcGVydGll
cyhleGlzdGluZ0tleWZyYW1lQW5pbSwgbmV3QW5pbSk7Ci0gICAgICAgIFtuZXdBbmltIHNldFZh
bHVlczpbZXhpc3RpbmdLZXlmcmFtZUFuaW0gdmFsdWVzXV07Ci0gICAgICAgIFtuZXdBbmltIHNl
dEtleVRpbWVzOltleGlzdGluZ0tleWZyYW1lQW5pbSBrZXlUaW1lc11dOwotICAgICAgICBbbmV3
QW5pbSBzZXRUaW1pbmdGdW5jdGlvbnM6W2V4aXN0aW5nS2V5ZnJhbWVBbmltIHRpbWluZ0Z1bmN0
aW9uc11dOwotICAgICAgICBwYXVzZWRBbmltID0gbmV3QW5pbTsKLSAgICB9IGVsc2UgaWYgKFtj
YUFuaW0gaXNLaW5kT2ZDbGFzczpbQ0FCYXNpY0FuaW1hdGlvbiBjbGFzc11dKSB7Ci0gICAgICAg
IENBQmFzaWNBbmltYXRpb24qIGV4aXN0aW5nUHJvcGVydHlBbmltID0gc3RhdGljX2Nhc3Q8Q0FC
YXNpY0FuaW1hdGlvbio+KGNhQW5pbSk7Ci0gICAgICAgIENBQmFzaWNBbmltYXRpb24qIG5ld0Fu
aW0gPSBbQ0FCYXNpY0FuaW1hdGlvbiBhbmltYXRpb25XaXRoS2V5UGF0aDpbZXhpc3RpbmdQcm9w
ZXJ0eUFuaW0ga2V5UGF0aF1dOwotICAgICAgICBjb3B5QW5pbWF0aW9uUHJvcGVydGllcyhleGlz
dGluZ1Byb3BlcnR5QW5pbSwgbmV3QW5pbSk7Ci0gICAgICAgIFtuZXdBbmltIHNldEZyb21WYWx1
ZTpbZXhpc3RpbmdQcm9wZXJ0eUFuaW0gZnJvbVZhbHVlXV07Ci0gICAgICAgIFtuZXdBbmltIHNl
dFRvVmFsdWU6W2V4aXN0aW5nUHJvcGVydHlBbmltIHRvVmFsdWVdXTsKLSAgICAgICAgcGF1c2Vk
QW5pbSA9IG5ld0FuaW07Ci0gICAgfQotCi0gICAgLy8gcGF1c2VkQW5pbSBoYXMgdGhlIGJlZ2lu
VGltZSBvZiBjYUFuaW0gYWxyZWFkeS4KLSAgICBbcGF1c2VkQW5pbSBzZXRTcGVlZDowXTsKLSAg
ICBbcGF1c2VkQW5pbSBzZXRUaW1lT2Zmc2V0OnRpbWVPZmZzZXRdOwotICAgIAotICAgIFtsYXll
ciBhZGRBbmltYXRpb246cGF1c2VkQW5pbSBmb3JLZXk6YW5pbWF0aW9uSURdOyAgLy8gVGhpcyB3
aWxsIHJlcGxhY2UgdGhlIHJ1bm5pbmcgYW5pbWF0aW9uLgotCi0gICAgLy8gUGF1c2UgdGhlIGFu
aW1hdGlvbnMgb24gdGhlIGNsb25lcyB0b28uCi0gICAgaWYgKExheWVyTWFwKiBsYXllckNsb25l
TWFwID0gYW5pbWF0ZWRMYXllckNsb25lcyhwcm9wZXJ0eSkpIHsKLSAgICAgICAgTGF5ZXJNYXA6
OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGxheWVyQ2xvbmVNYXAtPmVuZCgpOwotICAgICAgICBmb3Ig
KExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGxheWVyQ2xvbmVNYXAtPmJlZ2luKCk7IGl0
ICE9IGVuZDsgKytpdCkgewotICAgICAgICAgICAgLy8gU2tpcCBpbW1lZGlhdGUgcmVwbGljYXMs
IHNpbmNlIHRoZXkgbW92ZSB3aXRoIHRoZSBvcmlnaW5hbC4KLSAgICAgICAgICAgIGlmIChtX3Jl
cGxpY2FMYXllciAmJiBpc1JlcGxpY2F0ZWRSb290Q2xvbmUoaXQtPmZpcnN0KSkKLSAgICAgICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIENBTGF5ZXIgKmN1cnJMYXllciA9IGl0LT5z
ZWNvbmQuZ2V0KCk7Ci0gICAgICAgICAgICBbY3VyckxheWVyIGFkZEFuaW1hdGlvbjpwYXVzZWRB
bmltIGZvcktleTphbmltYXRpb25JRF07Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXZvaWQgR3Jh
cGhpY3NMYXllckNBOjpzZXRDb250ZW50c1RvQ2FudmFzKFBsYXRmb3JtTGF5ZXIqIGNhbnZhc0xh
eWVyKQotewotICAgIGlmIChjYW52YXNMYXllciA9PSBtX2NvbnRlbnRzTGF5ZXIpCi0gICAgICAg
IHJldHVybjsKLSAgICAgICAgCi0gICAgbV9jb250ZW50c0xheWVyID0gY2FudmFzTGF5ZXI7Ci0g
ICAgaWYgKG1fY29udGVudHNMYXllciAmJiBbbV9jb250ZW50c0xheWVyLmdldCgpIHJlc3BvbmRz
VG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2V0TGF5ZXJPd25lcjopXSkKLSAgICAgICAgWyhpZCltX2Nv
bnRlbnRzTGF5ZXIuZ2V0KCkgc2V0TGF5ZXJPd25lcjp0aGlzXTsKLSAgICAKLSAgICBtX2NvbnRl
bnRzTGF5ZXJQdXJwb3NlID0gY2FudmFzTGF5ZXIgPyBDb250ZW50c0xheWVyRm9yQ2FudmFzIDog
Tm9Db250ZW50c0xheWVyOwotCi0gICAgbm90ZVN1YmxheWVyc0NoYW5nZWQoKTsKLSAgICBub3Rl
TGF5ZXJQcm9wZXJ0eUNoYW5nZWQoQ29udGVudHNDYW52YXNMYXllckNoYW5nZWQpOwotfQotICAg
IAotdm9pZCBHcmFwaGljc0xheWVyQ0E6OnJlcGFpbnRMYXllckRpcnR5UmVjdHMoKQotewotICAg
IGlmICghbV9kaXJ0eVJlY3RzLnNpemUoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBtX2RpcnR5UmVjdHMuc2l6ZSgpOyArK2kpCi0gICAgICAgIFttX2xh
eWVyLmdldCgpIHNldE5lZWRzRGlzcGxheUluUmVjdDptX2RpcnR5UmVjdHNbaV1dOwotICAgIAot
ICAgIG1fZGlydHlSZWN0cy5jbGVhcigpOwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBk
YXRlQ29udGVudHNOZWVkc0Rpc3BsYXkoKQotewotICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIpCi0g
ICAgICAgIFttX2NvbnRlbnRzTGF5ZXIuZ2V0KCkgc2V0TmVlZHNEaXNwbGF5XTsKLX0KLQotYm9v
bCBHcmFwaGljc0xheWVyQ0E6OmNyZWF0ZUFuaW1hdGlvbkZyb21LZXlmcmFtZXMoY29uc3QgS2V5
ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCwgY29uc3QgQW5pbWF0aW9uKiBhbmltYXRpb24sIGNv
bnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSwgZG91YmxlIHRpbWVPZmZzZXQpCi17Ci0gICAgQVNT
RVJUKHZhbHVlTGlzdC5wcm9wZXJ0eSgpICE9IEFuaW1hdGVkUHJvcGVydHlXZWJraXRUcmFuc2Zv
cm0pOwotCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotICAgIAotICAgIGJvb2wg
aXNLZXlmcmFtZSA9IHZhbHVlTGlzdC5zaXplKCkgPiAyOwotICAgIGJvb2wgdmFsdWVzT0s7Ci0g
ICAgCi0gICAgYm9vbCBhZGRpdGl2ZSA9IGZhbHNlOwotICAgIGludCBhbmltYXRpb25JbmRleCA9
IDA7Ci0gICAgCi0gICAgQ0FQcm9wZXJ0eUFuaW1hdGlvbiogY2FBbmltYXRpb247Ci0gICAgaWYg
KGlzS2V5ZnJhbWUpIHsKLSAgICAgICAgQ0FLZXlmcmFtZUFuaW1hdGlvbioga2V5ZnJhbWVBbmlt
ID0gY3JlYXRlS2V5ZnJhbWVBbmltYXRpb24oYW5pbWF0aW9uLCB2YWx1ZUxpc3QucHJvcGVydHko
KSwgYWRkaXRpdmUpOwotICAgICAgICB2YWx1ZXNPSyA9IHNldEFuaW1hdGlvbktleWZyYW1lcyh2
YWx1ZUxpc3QsIGFuaW1hdGlvbiwga2V5ZnJhbWVBbmltKTsKLSAgICAgICAgY2FBbmltYXRpb24g
PSBrZXlmcmFtZUFuaW07Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgQ0FCYXNpY0FuaW1hdGlvbiog
YmFzaWNBbmltID0gY3JlYXRlQmFzaWNBbmltYXRpb24oYW5pbWF0aW9uLCB2YWx1ZUxpc3QucHJv
cGVydHkoKSwgYWRkaXRpdmUpOwotICAgICAgICB2YWx1ZXNPSyA9IHNldEFuaW1hdGlvbkVuZHBv
aW50cyh2YWx1ZUxpc3QsIGFuaW1hdGlvbiwgYmFzaWNBbmltKTsKLSAgICAgICAgY2FBbmltYXRp
b24gPSBiYXNpY0FuaW07Ci0gICAgfQotICAgIAotICAgIGlmICghdmFsdWVzT0spCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgIG1fdW5jb21pdHRlZEFuaW1hdGlvbnMuYXBwZW5kKExheWVy
UHJvcGVydHlBbmltYXRpb24oY2FBbmltYXRpb24sIGFuaW1hdGlvbk5hbWUsIHZhbHVlTGlzdC5w
cm9wZXJ0eSgpLCBhbmltYXRpb25JbmRleCwgdGltZU9mZnNldCkpOwotICAgIAotICAgIEVORF9C
TE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBHcmFw
aGljc0xheWVyQ0E6OmNyZWF0ZVRyYW5zZm9ybUFuaW1hdGlvbnNGcm9tS2V5ZnJhbWVzKGNvbnN0
IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3QsIGNvbnN0IEFuaW1hdGlvbiogYW5pbWF0aW9u
LCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGRvdWJsZSB0aW1lT2Zmc2V0LCBjb25zdCBJ
bnRTaXplJiBib3hTaXplKQotewotICAgIEFTU0VSVCh2YWx1ZUxpc3QucHJvcGVydHkoKSA9PSBB
bmltYXRlZFByb3BlcnR5V2Via2l0VHJhbnNmb3JtKTsKLQotICAgIFRyYW5zZm9ybU9wZXJhdGlv
bkxpc3QgZnVuY3Rpb25MaXN0OwotICAgIGJvb2wgbGlzdHNNYXRjaCwgaGFzQmlnUm90YXRpb247
Ci0gICAgZmV0Y2hUcmFuc2Zvcm1PcGVyYXRpb25MaXN0KHZhbHVlTGlzdCwgZnVuY3Rpb25MaXN0
LCBsaXN0c01hdGNoLCBoYXNCaWdSb3RhdGlvbik7Ci0KLSAgICAvLyBXZSBuZWVkIHRvIGZhbGwg
YmFjayB0byBzb2Z0d2FyZSBhbmltYXRpb24gaWYgd2UgZG9uJ3QgaGF2ZSBzZXRWYWx1ZUZ1bmN0
aW9uOiwgYW5kCi0gICAgLy8gd2Ugd291bGQgbmVlZCB0byBhbmltYXRlIGVhY2ggaW5jb21pbmcg
dHJhbnNmb3JtIGZ1bmN0aW9uIHNlcGFyYXRlbHkuIFRoaXMgaXMgdGhlCi0gICAgLy8gY2FzZSBp
ZiB3ZSBoYXZlIGEgcm90YXRpb24gPj0gMTgwIG9yIHdlIGhhdmUgbW9yZSB0aGFuIG9uZSB0cmFu
c2Zvcm0gZnVuY3Rpb24uCi0gICAgaWYgKChoYXNCaWdSb3RhdGlvbiB8fCBmdW5jdGlvbkxpc3Qu
c2l6ZSgpID4gMSkgJiYgIWNhVmFsdWVGdW5jdGlvblN1cHBvcnRlZCgpKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgICBib29sIHZhbGlkTWF0cmljZXMgPSB0cnVlOwotCi0gICAgQkVHSU5f
QkxPQ0tfT0JKQ19FWENFUFRJT05TOwotCi0gICAgLy8gSWYgZnVuY3Rpb25MaXN0cyBkb24ndCBt
YXRjaCB3ZSBkbyBhIG1hdHJpeCBhbmltYXRpb24sIG90aGVyd2lzZSB3ZSBkbyBhIGNvbXBvbmVu
dCBoYXJkd2FyZSBhbmltYXRpb24uCi0gICAgLy8gQWxzbywgd2UgY2FuJ3QgZG8gY29tcG9uZW50
IGFuaW1hdGlvbiB1bmxlc3Mgd2UgaGF2ZSB2YWx1ZUZ1bmN0aW9uLCBzbyB3ZSBuZWVkIHRvIGRv
IG1hdHJpeCBhbmltYXRpb24KLSAgICAvLyBpZiB0aGF0J3Mgbm90IHRydWUgYXMgd2VsbC4KLSAg
ICBib29sIGlzTWF0cml4QW5pbWF0aW9uID0gIWxpc3RzTWF0Y2ggfHwgIWNhVmFsdWVGdW5jdGlv
blN1cHBvcnRlZCgpOwotICAgIAotICAgIHNpemVfdCBudW1BbmltYXRpb25zID0gaXNNYXRyaXhB
bmltYXRpb24gPyAxIDogZnVuY3Rpb25MaXN0LnNpemUoKTsKLSAgICBib29sIGlzS2V5ZnJhbWUg
PSB2YWx1ZUxpc3Quc2l6ZSgpID4gMjsKLSAgICAKLSAgICAvLyBJdGVyYXRlIHRocm91Z2ggdGhl
IHRyYW5zZm9ybSBmdW5jdGlvbnMsIHNlbmRpbmcgYW4gYW5pbWF0aW9uIGZvciBlYWNoIG9uZS4K
LSAgICBmb3IgKHNpemVfdCBhbmltYXRpb25JbmRleCA9IDA7IGFuaW1hdGlvbkluZGV4IDwgbnVt
QW5pbWF0aW9uczsgKythbmltYXRpb25JbmRleCkgewotICAgICAgICBUcmFuc2Zvcm1PcGVyYXRp
b246Ok9wZXJhdGlvblR5cGUgdHJhbnNmb3JtT3AgPSBpc01hdHJpeEFuaW1hdGlvbiA/IFRyYW5z
Zm9ybU9wZXJhdGlvbjo6TUFUUklYXzNEIDogZnVuY3Rpb25MaXN0W2FuaW1hdGlvbkluZGV4XTsK
LSAgICAgICAgQ0FQcm9wZXJ0eUFuaW1hdGlvbiogY2FBbmltYXRpb247Ci0KLSNpZiBkZWZpbmVk
KEJVSUxESU5HX09OX0xFT1BBUkQpIHx8IGRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJE
KQotICAgICAgICAvLyBDQSBhcHBsaWVzIGFuaW1hdGlvbnMgaW4gcmV2ZXJzZSBvcmRlciAoPHJk
YXI6Ly9wcm9ibGVtLzcwOTU2Mzg+KSBzbyB3ZSBuZWVkIHRoZSBsYXN0IG9uZSB3ZSBhZGQgKHBl
ciBwcm9wZXJ0eSkKLSAgICAgICAgLy8gdG8gYmUgbm9uLWFkZGl0aXZlLgotICAgICAgICBib29s
IGFkZGl0aXZlID0gYW5pbWF0aW9uSW5kZXggPCAobnVtQW5pbWF0aW9ucyAtIDEpOwotI2Vsc2UK
LSAgICAgICAgYm9vbCBhZGRpdGl2ZSA9IGFuaW1hdGlvbkluZGV4ID4gMDsKLSNlbmRpZgotICAg
ICAgICBpZiAoaXNLZXlmcmFtZSkgewotICAgICAgICAgICAgQ0FLZXlmcmFtZUFuaW1hdGlvbiog
a2V5ZnJhbWVBbmltID0gY3JlYXRlS2V5ZnJhbWVBbmltYXRpb24oYW5pbWF0aW9uLCB2YWx1ZUxp
c3QucHJvcGVydHkoKSwgYWRkaXRpdmUpOwotICAgICAgICAgICAgdmFsaWRNYXRyaWNlcyA9IHNl
dFRyYW5zZm9ybUFuaW1hdGlvbktleWZyYW1lcyh2YWx1ZUxpc3QsIGFuaW1hdGlvbiwga2V5ZnJh
bWVBbmltLCBhbmltYXRpb25JbmRleCwgdHJhbnNmb3JtT3AsIGlzTWF0cml4QW5pbWF0aW9uLCBi
b3hTaXplKTsKLSAgICAgICAgICAgIGNhQW5pbWF0aW9uID0ga2V5ZnJhbWVBbmltOwotICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgQ0FCYXNpY0FuaW1hdGlvbiogYmFzaWNBbmltID0gY3Jl
YXRlQmFzaWNBbmltYXRpb24oYW5pbWF0aW9uLCB2YWx1ZUxpc3QucHJvcGVydHkoKSwgYWRkaXRp
dmUpOwotICAgICAgICAgICAgdmFsaWRNYXRyaWNlcyA9IHNldFRyYW5zZm9ybUFuaW1hdGlvbkVu
ZHBvaW50cyh2YWx1ZUxpc3QsIGFuaW1hdGlvbiwgYmFzaWNBbmltLCBhbmltYXRpb25JbmRleCwg
dHJhbnNmb3JtT3AsIGlzTWF0cml4QW5pbWF0aW9uLCBib3hTaXplKTsKLSAgICAgICAgICAgIGNh
QW5pbWF0aW9uID0gYmFzaWNBbmltOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpZiAo
IXZhbGlkTWF0cmljZXMpCi0gICAgICAgICAgICBicmVhazsKLSAgICAKLSAgICAgICAgbV91bmNv
bWl0dGVkQW5pbWF0aW9ucy5hcHBlbmQoTGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbihjYUFuaW1hdGlv
biwgYW5pbWF0aW9uTmFtZSwgdmFsdWVMaXN0LnByb3BlcnR5KCksIGFuaW1hdGlvbkluZGV4LCB0
aW1lT2Zmc2V0KSk7Ci0gICAgfQotCi0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLQot
ICAgIHJldHVybiB2YWxpZE1hdHJpY2VzOwotfQotCi1DQUJhc2ljQW5pbWF0aW9uKiBHcmFwaGlj
c0xheWVyQ0E6OmNyZWF0ZUJhc2ljQW5pbWF0aW9uKGNvbnN0IEFuaW1hdGlvbiogYW5pbSwgQW5p
bWF0ZWRQcm9wZXJ0eUlEIHByb3BlcnR5LCBib29sIGFkZGl0aXZlKQotewotICAgIENBQmFzaWNB
bmltYXRpb24qIGJhc2ljQW5pbSA9IFtDQUJhc2ljQW5pbWF0aW9uIGFuaW1hdGlvbldpdGhLZXlQ
YXRoOnByb3BlcnR5SWRUb1N0cmluZyhwcm9wZXJ0eSldOwotICAgIHNldHVwQW5pbWF0aW9uKGJh
c2ljQW5pbSwgYW5pbSwgYWRkaXRpdmUpOwotICAgIHJldHVybiBiYXNpY0FuaW07Ci19Ci0KLUNB
S2V5ZnJhbWVBbmltYXRpb24qIEdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRlS2V5ZnJhbWVBbmltYXRp
b24oY29uc3QgQW5pbWF0aW9uKiBhbmltLCBBbmltYXRlZFByb3BlcnR5SUQgcHJvcGVydHksIGJv
b2wgYWRkaXRpdmUpCi17Ci0gICAgQ0FLZXlmcmFtZUFuaW1hdGlvbioga2V5ZnJhbWVBbmltID0g
W0NBS2V5ZnJhbWVBbmltYXRpb24gYW5pbWF0aW9uV2l0aEtleVBhdGg6cHJvcGVydHlJZFRvU3Ry
aW5nKHByb3BlcnR5KV07Ci0gICAgc2V0dXBBbmltYXRpb24oa2V5ZnJhbWVBbmltLCBhbmltLCBh
ZGRpdGl2ZSk7Ci0gICAgcmV0dXJuIGtleWZyYW1lQW5pbTsKLX0KLQotdm9pZCBHcmFwaGljc0xh
eWVyQ0E6OnNldHVwQW5pbWF0aW9uKENBUHJvcGVydHlBbmltYXRpb24qIHByb3BlcnR5QW5pbSwg
Y29uc3QgQW5pbWF0aW9uKiBhbmltLCBib29sIGFkZGl0aXZlKQotewotICAgIGRvdWJsZSBkdXJh
dGlvbiA9IGFuaW0tPmR1cmF0aW9uKCk7Ci0gICAgaWYgKGR1cmF0aW9uIDw9IDApCi0gICAgICAg
IGR1cmF0aW9uID0gY0FuaW1hdGlvbkFsbW9zdFplcm9EdXJhdGlvbjsKLQotICAgIGZsb2F0IHJl
cGVhdENvdW50ID0gYW5pbS0+aXRlcmF0aW9uQ291bnQoKTsKLSAgICBpZiAocmVwZWF0Q291bnQg
PT0gQW5pbWF0aW9uOjpJdGVyYXRpb25Db3VudEluZmluaXRlKQotICAgICAgICByZXBlYXRDb3Vu
dCA9IEZMVF9NQVg7Ci0gICAgZWxzZSBpZiAoYW5pbS0+ZGlyZWN0aW9uKCkgPT0gQW5pbWF0aW9u
OjpBbmltYXRpb25EaXJlY3Rpb25BbHRlcm5hdGUpCi0gICAgICAgIHJlcGVhdENvdW50IC89IDI7
Ci0KLSAgICBOU1N0cmluZyAqZmlsbE1vZGUgPSAwOwotICAgIHN3aXRjaCAoYW5pbS0+ZmlsbE1v
ZGUoKSkgewotICAgIGNhc2UgQW5pbWF0aW9uRmlsbE1vZGVOb25lOgotICAgICAgICBmaWxsTW9k
ZSA9IGtDQUZpbGxNb2RlRm9yd2FyZHM7IC8vIFVzZSAiZm9yd2FyZHMiIHJhdGhlciB0aGFuICJy
ZW1vdmVkIiBiZWNhdXNlIHRoZSBzdHlsZSBzeXN0ZW0gd2lsbCByZW1vdmUgdGhlIGFuaW1hdGlv
biB3aGVuIGl0IGlzIGZpbmlzaGVkLiBUaGlzIGF2b2lkcyBhIGZsYXNoLgotICAgICAgICBicmVh
azsKLSAgICBjYXNlIEFuaW1hdGlvbkZpbGxNb2RlQmFja3dhcmRzOgotICAgICAgICBmaWxsTW9k
ZSA9IGtDQUZpbGxNb2RlQm90aDsgLy8gVXNlICJib3RoIiByYXRoZXIgdGhhbiAiYmFja3dhcmRz
IiBiZWNhdXNlIHRoZSBzdHlsZSBzeXN0ZW0gd2lsbCByZW1vdmUgdGhlIGFuaW1hdGlvbiB3aGVu
IGl0IGlzIGZpbmlzaGVkLiBUaGlzIGF2b2lkcyBhIGZsYXNoLgotICAgICAgICBicmVhazsKLSAg
ICBjYXNlIEFuaW1hdGlvbkZpbGxNb2RlRm9yd2FyZHM6Ci0gICAgICAgZmlsbE1vZGUgPSBrQ0FG
aWxsTW9kZUZvcndhcmRzOwotICAgICAgIGJyZWFrOwotICAgIGNhc2UgQW5pbWF0aW9uRmlsbE1v
ZGVCb3RoOgotICAgICAgIGZpbGxNb2RlID0ga0NBRmlsbE1vZGVCb3RoOwotICAgICAgIGJyZWFr
OwotICAgIH0KLQotICAgIFtwcm9wZXJ0eUFuaW0gc2V0RHVyYXRpb246ZHVyYXRpb25dOwotICAg
IFtwcm9wZXJ0eUFuaW0gc2V0UmVwZWF0Q291bnQ6cmVwZWF0Q291bnRdOwotICAgIFtwcm9wZXJ0
eUFuaW0gc2V0QXV0b3JldmVyc2VzOmFuaW0tPmRpcmVjdGlvbigpXTsKLSAgICBbcHJvcGVydHlB
bmltIHNldFJlbW92ZWRPbkNvbXBsZXRpb246Tk9dOwotICAgIFtwcm9wZXJ0eUFuaW0gc2V0QWRk
aXRpdmU6YWRkaXRpdmVdOwotICAgIFtwcm9wZXJ0eUFuaW0gc2V0RmlsbE1vZGU6ZmlsbE1vZGVd
OwotCi0gICAgW3Byb3BlcnR5QW5pbSBzZXREZWxlZ2F0ZTptX2FuaW1hdGlvbkRlbGVnYXRlLmdl
dCgpXTsKLX0KLQotQ0FNZWRpYVRpbWluZ0Z1bmN0aW9uKiBHcmFwaGljc0xheWVyQ0E6OnRpbWlu
Z0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUoY29uc3QgQW5pbWF0aW9uVmFsdWUqIGFuaW1WYWx1
ZSwgY29uc3QgQW5pbWF0aW9uKiBhbmltKQotewotICAgIGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB0
ZiA9IDA7Ci0gICAgaWYgKGFuaW1WYWx1ZS0+dGltaW5nRnVuY3Rpb24oKSkKLSAgICAgICAgdGYg
PSBhbmltVmFsdWUtPnRpbWluZ0Z1bmN0aW9uKCk7Ci0gICAgZWxzZSBpZiAoYW5pbS0+aXNUaW1p
bmdGdW5jdGlvblNldCgpKQotICAgICAgICB0ZiA9IGFuaW0tPnRpbWluZ0Z1bmN0aW9uKCkuZ2V0
KCk7Ci0KLSAgICByZXR1cm4gZ2V0Q0FNZWRpYVRpbWluZ0Z1bmN0aW9uKHRmID8gdGYgOiBDdWJp
Y0JlemllclRpbWluZ0Z1bmN0aW9uOjpjcmVhdGUoKS5nZXQoKSk7Ci19Ci0KLWJvb2wgR3JhcGhp
Y3NMYXllckNBOjpzZXRBbmltYXRpb25FbmRwb2ludHMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3Qm
IHZhbHVlTGlzdCwgY29uc3QgQW5pbWF0aW9uKiBhbmltLCBDQUJhc2ljQW5pbWF0aW9uKiBiYXNp
Y0FuaW0pCi17Ci0gICAgaWQgZnJvbVZhbHVlID0gbmlsOwotICAgIGlkIHRvVmFsdWUgPSBuaWw7
Ci0KLSAgICBzd2l0Y2ggKHZhbHVlTGlzdC5wcm9wZXJ0eSgpKSB7Ci0gICAgICAgIGNhc2UgQW5p
bWF0ZWRQcm9wZXJ0eU9wYWNpdHk6IHsKLSAgICAgICAgICAgIGNvbnN0IEZsb2F0QW5pbWF0aW9u
VmFsdWUqIHN0YXJ0VmFsID0gc3RhdGljX2Nhc3Q8Y29uc3QgRmxvYXRBbmltYXRpb25WYWx1ZSo+
KHZhbHVlTGlzdC5hdCgwKSk7Ci0gICAgICAgICAgICBjb25zdCBGbG9hdEFuaW1hdGlvblZhbHVl
KiBlbmRWYWwgPSBzdGF0aWNfY2FzdDxjb25zdCBGbG9hdEFuaW1hdGlvblZhbHVlKj4odmFsdWVM
aXN0LmF0KDEpKTsKLSAgICAgICAgICAgIGZyb21WYWx1ZSA9IFtOU051bWJlciBudW1iZXJXaXRo
RmxvYXQ6c3RhcnRWYWwtPnZhbHVlKCldOwotICAgICAgICAgICAgdG9WYWx1ZSA9IFtOU051bWJl
ciBudW1iZXJXaXRoRmxvYXQ6ZW5kVmFsLT52YWx1ZSgpXTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICB9Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsgICAgIC8vIHdlIGRvbid0IGFuaW1hdGUgY29sb3IgeWV0Ci0gICAgICAgICAgICBicmVh
azsKLSAgICB9Ci0KLSAgICAvLyBUaGlzIGNvZGVwYXRoIGlzIHVzZWQgZm9yIDIta2V5ZnJhbWUg
YW5pbWF0aW9ucywgc28gd2Ugc3RpbGwgbmVlZCB0byBsb29rIGluIHRoZSBzdGFydAotICAgIC8v
IGZvciBhIHRpbWluZyBmdW5jdGlvbi4KLSAgICBDQU1lZGlhVGltaW5nRnVuY3Rpb24qIHRpbWlu
Z0Z1bmN0aW9uID0gdGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZSh2YWx1ZUxpc3QuYXQo
MCksIGFuaW0pOwotICAgIFtiYXNpY0FuaW0gc2V0VGltaW5nRnVuY3Rpb246dGltaW5nRnVuY3Rp
b25dOwotCi0gICAgW2Jhc2ljQW5pbSBzZXRGcm9tVmFsdWU6ZnJvbVZhbHVlXTsKLSAgICBbYmFz
aWNBbmltIHNldFRvVmFsdWU6dG9WYWx1ZV07Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9v
bCBHcmFwaGljc0xheWVyQ0E6OnNldEFuaW1hdGlvbktleWZyYW1lcyhjb25zdCBLZXlmcmFtZVZh
bHVlTGlzdCYgdmFsdWVMaXN0LCBjb25zdCBBbmltYXRpb24qIGFuaW0sIENBS2V5ZnJhbWVBbmlt
YXRpb24qIGtleWZyYW1lQW5pbSkKLXsKLSAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IGtl
eVRpbWVzKEFkb3B0TlMsIFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKLSAgICBSZXRh
aW5QdHI8TlNNdXRhYmxlQXJyYXk+IHZhbHVlcyhBZG9wdE5TLCBbW05TTXV0YWJsZUFycmF5IGFs
bG9jXSBpbml0XSk7Ci0gICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiB0aW1pbmdGdW5jdGlv
bnMoQWRvcHROUywgW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwotCi0gICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IHZhbHVlTGlzdC5zaXplKCk7ICsraSkgewotICAgICAgICBjb25z
dCBBbmltYXRpb25WYWx1ZSogY3VyVmFsdWUgPSB2YWx1ZUxpc3QuYXQoaSk7Ci0gICAgICAgIFtr
ZXlUaW1lcy5nZXQoKSBhZGRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhGbG9hdDpjdXJWYWx1
ZS0+a2V5VGltZSgpXV07Ci0KLSAgICAgICAgc3dpdGNoICh2YWx1ZUxpc3QucHJvcGVydHkoKSkg
ewotICAgICAgICAgICAgY2FzZSBBbmltYXRlZFByb3BlcnR5T3BhY2l0eTogewotICAgICAgICAg
ICAgICAgIGNvbnN0IEZsb2F0QW5pbWF0aW9uVmFsdWUqIGZsb2F0VmFsdWUgPSBzdGF0aWNfY2Fz
dDxjb25zdCBGbG9hdEFuaW1hdGlvblZhbHVlKj4oY3VyVmFsdWUpOwotICAgICAgICAgICAgICAg
IFt2YWx1ZXMuZ2V0KCkgYWRkT2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoRmxvYXQ6ZmxvYXRW
YWx1ZS0+dmFsdWUoKV1dOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsgICAgIC8vIHdlIGRvbid0IGFuaW1hdGUgY29sb3IgeWV0Ci0gICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIH0KLQotICAgICAgICBDQU1lZGlhVGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1
bmN0aW9uID0gdGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShjdXJWYWx1ZSwgYW5pbSk7
Ci0gICAgICAgIFt0aW1pbmdGdW5jdGlvbnMuZ2V0KCkgYWRkT2JqZWN0OnRpbWluZ0Z1bmN0aW9u
XTsKLSAgICB9Ci0gICAgCi0gICAgLy8gV2UgdG9zcyB0aGUgbGFzdCB0ZkFycmF5IHZhbHVlIGJl
Y2F1c2UgaXQgaGFzIHRvIG9uZSBzaG9ydGVyIHRoYW4gdGhlIG90aGVycy4KLSAgICBbdGltaW5n
RnVuY3Rpb25zLmdldCgpIHJlbW92ZUxhc3RPYmplY3RdOwotCi0gICAgW2tleWZyYW1lQW5pbSBz
ZXRLZXlUaW1lczprZXlUaW1lcy5nZXQoKV07Ci0gICAgW2tleWZyYW1lQW5pbSBzZXRWYWx1ZXM6
dmFsdWVzLmdldCgpXTsKLSAgICBba2V5ZnJhbWVBbmltIHNldFRpbWluZ0Z1bmN0aW9uczp0aW1p
bmdGdW5jdGlvbnMuZ2V0KCldOwotICAgIAotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIEdy
YXBoaWNzTGF5ZXJDQTo6c2V0VHJhbnNmb3JtQW5pbWF0aW9uRW5kcG9pbnRzKGNvbnN0IEtleWZy
YW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3QsIGNvbnN0IEFuaW1hdGlvbiogYW5pbSwgQ0FCYXNpY0Fu
aW1hdGlvbiogYmFzaWNBbmltLCBpbnQgZnVuY3Rpb25JbmRleCwgVHJhbnNmb3JtT3BlcmF0aW9u
OjpPcGVyYXRpb25UeXBlIHRyYW5zZm9ybU9wLCBib29sIGlzTWF0cml4QW5pbWF0aW9uLCBjb25z
dCBJbnRTaXplJiBib3hTaXplKQotewotICAgIGlkIGZyb21WYWx1ZTsKLSAgICBpZCB0b1ZhbHVl
OwotICAgIAotICAgIEFTU0VSVCh2YWx1ZUxpc3Quc2l6ZSgpID09IDIpOwotICAgIGNvbnN0IFRy
YW5zZm9ybUFuaW1hdGlvblZhbHVlKiBzdGFydFZhbHVlID0gc3RhdGljX2Nhc3Q8Y29uc3QgVHJh
bnNmb3JtQW5pbWF0aW9uVmFsdWUqPih2YWx1ZUxpc3QuYXQoMCkpOwotICAgIGNvbnN0IFRyYW5z
Zm9ybUFuaW1hdGlvblZhbHVlKiBlbmRWYWx1ZSA9IHN0YXRpY19jYXN0PGNvbnN0IFRyYW5zZm9y
bUFuaW1hdGlvblZhbHVlKj4odmFsdWVMaXN0LmF0KDEpKTsKLSAgICAKLSAgICBpZiAoaXNNYXRy
aXhBbmltYXRpb24pIHsKLSAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggZnJvbVRyYW5zZm9y
bSwgdG9UcmFuc2Zvcm07Ci0gICAgICAgIHN0YXJ0VmFsdWUtPnZhbHVlKCktPmFwcGx5KGJveFNp
emUsIGZyb21UcmFuc2Zvcm0pOwotICAgICAgICBlbmRWYWx1ZS0+dmFsdWUoKS0+YXBwbHkoYm94
U2l6ZSwgdG9UcmFuc2Zvcm0pOwotCi0gICAgICAgIC8vIElmIGFueSBtYXRyaXggaXMgc2luZ3Vs
YXIsIENBIHdvbid0IGFuaW1hdGUgaXQgY29ycmVjdGx5LiBTbyBmYWxsIGJhY2sgdG8gc29mdHdh
cmUgYW5pbWF0aW9uCi0gICAgICAgIGlmICghZnJvbVRyYW5zZm9ybS5pc0ludmVydGlibGUoKSB8
fCAhdG9UcmFuc2Zvcm0uaXNJbnZlcnRpYmxlKCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICAgICAgQ0FUcmFuc2Zvcm0zRCBjYVRyYW5zZm9ybTsKLSAgICAgICAgY29weVRyYW5z
Zm9ybShjYVRyYW5zZm9ybSwgZnJvbVRyYW5zZm9ybSk7Ci0gICAgICAgIGZyb21WYWx1ZSA9IFtO
U1ZhbHVlIHZhbHVlV2l0aENBVHJhbnNmb3JtM0Q6Y2FUcmFuc2Zvcm1dOwotCi0gICAgICAgIGNv
cHlUcmFuc2Zvcm0oY2FUcmFuc2Zvcm0sIHRvVHJhbnNmb3JtKTsKLSAgICAgICAgdG9WYWx1ZSA9
IFtOU1ZhbHVlIHZhbHVlV2l0aENBVHJhbnNmb3JtM0Q6Y2FUcmFuc2Zvcm1dOwotICAgIH0gZWxz
ZSB7Ci0gICAgICAgIGZyb21WYWx1ZSA9IGdldFRyYW5zZm9ybUZ1bmN0aW9uVmFsdWUoc3RhcnRW
YWx1ZS0+dmFsdWUoKS0+YXQoZnVuY3Rpb25JbmRleCksIHRyYW5zZm9ybU9wLCBib3hTaXplKTsK
LSAgICAgICAgdG9WYWx1ZSA9IGdldFRyYW5zZm9ybUZ1bmN0aW9uVmFsdWUoZW5kVmFsdWUtPnZh
bHVlKCktPmF0KGZ1bmN0aW9uSW5kZXgpLCB0cmFuc2Zvcm1PcCwgYm94U2l6ZSk7Ci0gICAgfQot
Ci0gICAgLy8gVGhpcyBjb2RlcGF0aCBpcyB1c2VkIGZvciAyLWtleWZyYW1lIGFuaW1hdGlvbnMs
IHNvIHdlIHN0aWxsIG5lZWQgdG8gbG9vayBpbiB0aGUgc3RhcnQKLSAgICAvLyBmb3IgYSB0aW1p
bmcgZnVuY3Rpb24uCi0gICAgQ0FNZWRpYVRpbWluZ0Z1bmN0aW9uKiB0aW1pbmdGdW5jdGlvbiA9
IHRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUodmFsdWVMaXN0LmF0KDApLCBhbmltKTsK
LSAgICBbYmFzaWNBbmltIHNldFRpbWluZ0Z1bmN0aW9uOnRpbWluZ0Z1bmN0aW9uXTsKLQotICAg
IFtiYXNpY0FuaW0gc2V0RnJvbVZhbHVlOmZyb21WYWx1ZV07Ci0gICAgW2Jhc2ljQW5pbSBzZXRU
b1ZhbHVlOnRvVmFsdWVdOwotCi0jaWYgSEFWRV9NT0RFUk5fUVVBUlRaQ09SRQotICAgIGlmIChO
U1N0cmluZyAqdmFsdWVGdW5jdGlvbk5hbWUgPSBnZXRWYWx1ZUZ1bmN0aW9uTmFtZUZvclRyYW5z
Zm9ybU9wZXJhdGlvbih0cmFuc2Zvcm1PcCkpCi0gICAgICAgIFtiYXNpY0FuaW0gc2V0VmFsdWVG
dW5jdGlvbjpbQ0FWYWx1ZUZ1bmN0aW9uIGZ1bmN0aW9uV2l0aE5hbWU6dmFsdWVGdW5jdGlvbk5h
bWVdXTsKLSNlbmRpZgotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgR3JhcGhpY3NMYXll
ckNBOjpzZXRUcmFuc2Zvcm1BbmltYXRpb25LZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxp
c3QmIHZhbHVlTGlzdCwgY29uc3QgQW5pbWF0aW9uKiBhbmltYXRpb24sIENBS2V5ZnJhbWVBbmlt
YXRpb24qIGtleWZyYW1lQW5pbSwgaW50IGZ1bmN0aW9uSW5kZXgsIFRyYW5zZm9ybU9wZXJhdGlv
bjo6T3BlcmF0aW9uVHlwZSB0cmFuc2Zvcm1PcFR5cGUsIGJvb2wgaXNNYXRyaXhBbmltYXRpb24s
IGNvbnN0IEludFNpemUmIGJveFNpemUpCi17Ci0gICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5
PiBrZXlUaW1lcyhBZG9wdE5TLCBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7Ci0gICAg
UmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiB2YWx1ZXMoQWRvcHROUywgW1tOU011dGFibGVBcnJh
eSBhbGxvY10gaW5pdF0pOwotICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gdGltaW5nRnVu
Y3Rpb25zKEFkb3B0TlMsIFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKLQotICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCB2YWx1ZUxpc3Quc2l6ZSgpOyArK2kpIHsKLSAgICAgICAg
Y29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUqIGN1clZhbHVlID0gc3RhdGljX2Nhc3Q8Y29u
c3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUqPih2YWx1ZUxpc3QuYXQoaSkpOwotICAgICAgICBb
a2V5VGltZXMuZ2V0KCkgYWRkT2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoRmxvYXQ6Y3VyVmFs
dWUtPmtleVRpbWUoKV1dOwotCi0gICAgICAgIGlmIChpc01hdHJpeEFuaW1hdGlvbikgewotICAg
ICAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtOwotICAgICAgICAgICAgY3Vy
VmFsdWUtPnZhbHVlKCktPmFwcGx5KGJveFNpemUsIHRyYW5zZm9ybSk7Ci0KLSAgICAgICAgICAg
IC8vIElmIGFueSBtYXRyaXggaXMgc2luZ3VsYXIsIENBIHdvbid0IGFuaW1hdGUgaXQgY29ycmVj
dGx5LiBTbyBmYWxsIGJhY2sgdG8gc29mdHdhcmUgYW5pbWF0aW9uCi0gICAgICAgICAgICBpZiAo
IXRyYW5zZm9ybS5pc0ludmVydGlibGUoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICAgICAgICAgIENBVHJhbnNmb3JtM0QgY2FUcmFuc2Zvcm07Ci0gICAgICAgICAgICBj
b3B5VHJhbnNmb3JtKGNhVHJhbnNmb3JtLCB0cmFuc2Zvcm0pOwotICAgICAgICAgICAgW3ZhbHVl
cy5nZXQoKSBhZGRPYmplY3Q6W05TVmFsdWUgdmFsdWVXaXRoQ0FUcmFuc2Zvcm0zRDpjYVRyYW5z
Zm9ybV1dOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgY29uc3QgVHJhbnNmb3JtT3Bl
cmF0aW9uKiB0cmFuc2Zvcm1PcCA9IGN1clZhbHVlLT52YWx1ZSgpLT5hdChmdW5jdGlvbkluZGV4
KTsKLSAgICAgICAgICAgIFt2YWx1ZXMuZ2V0KCkgYWRkT2JqZWN0OmdldFRyYW5zZm9ybUZ1bmN0
aW9uVmFsdWUodHJhbnNmb3JtT3AsIHRyYW5zZm9ybU9wVHlwZSwgYm94U2l6ZSldOwotICAgICAg
ICB9Ci0KLSAgICAgICAgQ0FNZWRpYVRpbWluZ0Z1bmN0aW9uKiB0aW1pbmdGdW5jdGlvbiA9IHRp
bWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUoY3VyVmFsdWUsIGFuaW1hdGlvbik7Ci0gICAg
ICAgIFt0aW1pbmdGdW5jdGlvbnMuZ2V0KCkgYWRkT2JqZWN0OnRpbWluZ0Z1bmN0aW9uXTsKLSAg
ICB9Ci0gICAgCi0gICAgLy8gV2UgdG9zcyB0aGUgbGFzdCB0ZkFycmF5IHZhbHVlIGJlY2F1c2Ug
aXQgaGFzIHRvIG9uZSBzaG9ydGVyIHRoYW4gdGhlIG90aGVycy4KLSAgICBbdGltaW5nRnVuY3Rp
b25zLmdldCgpIHJlbW92ZUxhc3RPYmplY3RdOwotCi0gICAgW2tleWZyYW1lQW5pbSBzZXRLZXlU
aW1lczprZXlUaW1lcy5nZXQoKV07Ci0gICAgW2tleWZyYW1lQW5pbSBzZXRWYWx1ZXM6dmFsdWVz
LmdldCgpXTsKLSAgICBba2V5ZnJhbWVBbmltIHNldFRpbWluZ0Z1bmN0aW9uczp0aW1pbmdGdW5j
dGlvbnMuZ2V0KCldOwotCi0jaWYgSEFWRV9NT0RFUk5fUVVBUlRaQ09SRQotICAgIGlmIChOU1N0
cmluZyAqdmFsdWVGdW5jdGlvbk5hbWUgPSBnZXRWYWx1ZUZ1bmN0aW9uTmFtZUZvclRyYW5zZm9y
bU9wZXJhdGlvbih0cmFuc2Zvcm1PcFR5cGUpKQotICAgICAgICBba2V5ZnJhbWVBbmltIHNldFZh
bHVlRnVuY3Rpb246W0NBVmFsdWVGdW5jdGlvbiBmdW5jdGlvbldpdGhOYW1lOnZhbHVlRnVuY3Rp
b25OYW1lXV07Ci0jZW5kaWYKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBHcmFwaGljc0xh
eWVyQ0E6OnN1c3BlbmRBbmltYXRpb25zKGRvdWJsZSB0aW1lKQotewotICAgIGRvdWJsZSB0ID0g
Y3VycmVudFRpbWVUb01lZGlhVGltZSh0aW1lID8gdGltZSA6IGN1cnJlbnRUaW1lKCkpOwotICAg
IFtwcmltYXJ5TGF5ZXIoKSBzZXRTcGVlZDowXTsKLSAgICBbcHJpbWFyeUxheWVyKCkgc2V0VGlt
ZU9mZnNldDp0XTsKLQotICAgIC8vIFN1c3BlbmQgdGhlIGFuaW1hdGlvbnMgb24gdGhlIGNsb25l
cyB0b28uCi0gICAgaWYgKExheWVyTWFwKiBsYXllckNsb25lTWFwID0gcHJpbWFyeUxheWVyQ2xv
bmVzKCkpIHsKLSAgICAgICAgTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGxheWVyQ2xv
bmVNYXAtPmVuZCgpOwotICAgICAgICBmb3IgKExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9
IGxheWVyQ2xvbmVNYXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICAgICAg
Q0FMYXllciAqY3VyckxheWVyID0gaXQtPnNlY29uZC5nZXQoKTsKLSAgICAgICAgICAgIFtjdXJy
TGF5ZXIgc2V0U3BlZWQ6MF07Ci0gICAgICAgICAgICBbY3VyckxheWVyIHNldFRpbWVPZmZzZXQ6
dF07Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllckNBOjpyZXN1bWVB
bmltYXRpb25zKCkKLXsKLSAgICBbcHJpbWFyeUxheWVyKCkgc2V0U3BlZWQ6MV07Ci0gICAgW3By
aW1hcnlMYXllcigpIHNldFRpbWVPZmZzZXQ6MF07Ci0KLSAgICAvLyBSZXN1bWUgdGhlIGFuaW1h
dGlvbnMgb24gdGhlIGNsb25lcyB0b28uCi0gICAgaWYgKExheWVyTWFwKiBsYXllckNsb25lTWFw
ID0gcHJpbWFyeUxheWVyQ2xvbmVzKCkpIHsKLSAgICAgICAgTGF5ZXJNYXA6OmNvbnN0X2l0ZXJh
dG9yIGVuZCA9IGxheWVyQ2xvbmVNYXAtPmVuZCgpOwotICAgICAgICBmb3IgKExheWVyTWFwOjpj
b25zdF9pdGVyYXRvciBpdCA9IGxheWVyQ2xvbmVNYXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytp
dCkgewotICAgICAgICAgICAgQ0FMYXllciAqY3VyckxheWVyID0gaXQtPnNlY29uZC5nZXQoKTsK
LSAgICAgICAgICAgIFtjdXJyTGF5ZXIgc2V0U3BlZWQ6MV07Ci0gICAgICAgICAgICBbY3Vyckxh
eWVyIHNldFRpbWVPZmZzZXQ6MF07Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLUNBTGF5ZXIqIEdy
YXBoaWNzTGF5ZXJDQTo6aG9zdExheWVyRm9yU3VibGF5ZXJzKCkgY29uc3QKLXsKLSAgICByZXR1
cm4gbV9zdHJ1Y3R1cmFsTGF5ZXIuZ2V0KCkgPyBtX3N0cnVjdHVyYWxMYXllci5nZXQoKSA6IG1f
bGF5ZXIuZ2V0KCk7IAotfQotCi1DQUxheWVyKiBHcmFwaGljc0xheWVyQ0E6OmxheWVyRm9yU3Vw
ZXJsYXllcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc3RydWN0dXJhbExheWVyID8gbV9zdHJ1
Y3R1cmFsTGF5ZXIuZ2V0KCkgOiBtX2xheWVyLmdldCgpOwotfQotCi1DQUxheWVyKiBHcmFwaGlj
c0xheWVyQ0E6OmFuaW1hdGVkTGF5ZXIoQW5pbWF0ZWRQcm9wZXJ0eUlEIHByb3BlcnR5KSBjb25z
dAotewotICAgIHJldHVybiAocHJvcGVydHkgPT0gQW5pbWF0ZWRQcm9wZXJ0eUJhY2tncm91bmRD
b2xvcikgPyBtX2NvbnRlbnRzTGF5ZXIuZ2V0KCkgOiBwcmltYXJ5TGF5ZXIoKTsKLX0KLQotR3Jh
cGhpY3NMYXllckNBOjpMYXllck1hcCogR3JhcGhpY3NMYXllckNBOjphbmltYXRlZExheWVyQ2xv
bmVzKEFuaW1hdGVkUHJvcGVydHlJRCBwcm9wZXJ0eSkgY29uc3QKLXsKLSAgICByZXR1cm4gKHBy
b3BlcnR5ID09IEFuaW1hdGVkUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpID8gbV9jb250ZW50c0xh
eWVyQ2xvbmVzLmdldCgpIDogcHJpbWFyeUxheWVyQ2xvbmVzKCk7Ci19Ci0KLVBsYXRmb3JtTGF5
ZXIqIEdyYXBoaWNzTGF5ZXJDQTo6cGxhdGZvcm1MYXllcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IHByaW1hcnlMYXllcigpOwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0RGVidWdCYWNr
Z3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQotewotICAgIEJFR0lOX0JMT0NLX09CSkNf
RVhDRVBUSU9OUwotICAgIAotICAgIGlmIChjb2xvci5pc1ZhbGlkKCkpCi0gICAgICAgIHNldExh
eWVyQmFja2dyb3VuZENvbG9yKG1fbGF5ZXIuZ2V0KCksIGNvbG9yKTsKLSAgICBlbHNlCi0gICAg
ICAgIGNsZWFyTGF5ZXJCYWNrZ3JvdW5kQ29sb3IobV9sYXllci5nZXQoKSk7Ci0gICAgCi0gICAg
RU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0
RGVidWdCb3JkZXIoY29uc3QgQ29sb3ImIGNvbG9yLCBmbG9hdCBib3JkZXJXaWR0aCkKLXsKLSAg
ICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICAKLSAgICBpZiAoY29sb3IuaXNWYWxp
ZCgpKSB7Ci0gICAgICAgIHNldExheWVyQm9yZGVyQ29sb3IobV9sYXllci5nZXQoKSwgY29sb3Ip
OwotICAgICAgICBbbV9sYXllci5nZXQoKSBzZXRCb3JkZXJXaWR0aDpib3JkZXJXaWR0aF07Ci0g
ICAgfSBlbHNlIHsKLSAgICAgICAgY2xlYXJCb3JkZXJDb2xvcihtX2xheWVyLmdldCgpKTsKLSAg
ICAgICAgW21fbGF5ZXIuZ2V0KCkgc2V0Qm9yZGVyV2lkdGg6MF07Ci0gICAgfQotICAgIAotICAg
IEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLX0KLQotRmxvYXRTaXplIEdyYXBoaWNzTGF5ZXJD
QTo6Y29uc3RyYWluZWRTaXplKCkgY29uc3QKLXsKLSAgICBmbG9hdCB0aWxlQ29sdW1ucyA9IGNl
aWxmKG1fc2l6ZS53aWR0aCgpIC8gY1RpbGVkTGF5ZXJUaWxlU2l6ZSk7Ci0gICAgZmxvYXQgdGls
ZVJvd3MgPSBjZWlsZihtX3NpemUuaGVpZ2h0KCkgLyBjVGlsZWRMYXllclRpbGVTaXplKTsKLSAg
ICBkb3VibGUgbnVtVGlsZXMgPSB0aWxlQ29sdW1ucyAqIHRpbGVSb3dzOwotICAgIAotICAgIEZs
b2F0U2l6ZSBjb25zdHJhaW5lZFNpemUgPSBtX3NpemU7Ci0gICAgY29uc3QgdW5zaWduZWQgY01h
eFRpbGVDb3VudCA9IDUxMjsKLSAgICB3aGlsZSAobnVtVGlsZXMgPiBjTWF4VGlsZUNvdW50KSB7
Ci0gICAgICAgIC8vIENvbnN0cmFpbiB0aGUgd2lkZXIgZGltZW5zaW9uLgotICAgICAgICBpZiAo
Y29uc3RyYWluZWRTaXplLndpZHRoKCkgPj0gY29uc3RyYWluZWRTaXplLmhlaWdodCgpKSB7Ci0g
ICAgICAgICAgICB0aWxlQ29sdW1ucyA9IG1heChmbG9vcmYoY01heFRpbGVDb3VudCAvIHRpbGVS
b3dzKSwgMS4wZik7Ci0gICAgICAgICAgICBjb25zdHJhaW5lZFNpemUuc2V0V2lkdGgodGlsZUNv
bHVtbnMgKiBjVGlsZWRMYXllclRpbGVTaXplKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgIHRpbGVSb3dzID0gbWF4KGZsb29yZihjTWF4VGlsZUNvdW50IC8gdGlsZUNvbHVtbnMpLCAx
LjBmKTsKLSAgICAgICAgICAgIGNvbnN0cmFpbmVkU2l6ZS5zZXRIZWlnaHQodGlsZVJvd3MgKiBj
VGlsZWRMYXllclRpbGVTaXplKTsKLSAgICAgICAgfQotICAgICAgICBudW1UaWxlcyA9IHRpbGVD
b2x1bW5zICogdGlsZVJvd3M7Ci0gICAgfQotICAgIAotICAgIHJldHVybiBjb25zdHJhaW5lZFNp
emU7Ci19Ci0KLWJvb2wgR3JhcGhpY3NMYXllckNBOjpyZXF1aXJlc1RpbGVkTGF5ZXIoY29uc3Qg
RmxvYXRTaXplJiBzaXplKSBjb25zdAotewotICAgIGlmICghbV9kcmF3c0NvbnRlbnQpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIEZJWE1FOiBjYXRjaCB6ZXJvLXNpemUgaGVpZ2h0
IG9yIHdpZHRoIGhlcmUgKG9yIGVhcmxpZXIpPwotICAgIHJldHVybiBzaXplLndpZHRoKCkgPiBj
TWF4UGl4ZWxEaW1lbnNpb24gfHwgc2l6ZS5oZWlnaHQoKSA+IGNNYXhQaXhlbERpbWVuc2lvbjsK
LX0KLQotdm9pZCBHcmFwaGljc0xheWVyQ0E6OnN3YXBGcm9tT3JUb1RpbGVkTGF5ZXIoYm9vbCB1
c2VUaWxlZExheWVyKQotewotICAgIGlmICh1c2VUaWxlZExheWVyID09IG1fdXNpbmdUaWxlZExh
eWVyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBDR1NpemUgdGlsZVNpemUgPSBDR1NpemVNYWtl
KGNUaWxlZExheWVyVGlsZVNpemUsIGNUaWxlZExheWVyVGlsZVNpemUpOwotCi0gICAgUmV0YWlu
UHRyPENBTGF5ZXI+IG9sZExheWVyID0gbV9sYXllci5nZXQoKTsKLSAgICAKLSAgICBDbGFzcyBs
YXllckNsYXNzID0gdXNlVGlsZWRMYXllciA/IFtXZWJUaWxlZExheWVyIHNlbGZdIDogW1dlYkxh
eWVyIHNlbGZdOwotICAgIG1fbGF5ZXIuYWRvcHROUyhbW2xheWVyQ2xhc3MgYWxsb2NdIGluaXRd
KTsKLQotICAgIG1fdXNpbmdUaWxlZExheWVyID0gdXNlVGlsZWRMYXllcjsKLQotICAgIGlmICh1
c2VUaWxlZExheWVyKSB7Ci0gICAgICAgIFdlYlRpbGVkTGF5ZXIqIHRpbGVkTGF5ZXIgPSAoV2Vi
VGlsZWRMYXllciopbV9sYXllci5nZXQoKTsKLSAgICAgICAgW3RpbGVkTGF5ZXIgc2V0VGlsZVNp
emU6dGlsZVNpemVdOwotICAgICAgICBbdGlsZWRMYXllciBzZXRMZXZlbHNPZkRldGFpbDoxXTsK
LSAgICAgICAgW3RpbGVkTGF5ZXIgc2V0TGV2ZWxzT2ZEZXRhaWxCaWFzOjBdOwotICAgICAgICBb
dGlsZWRMYXllciBzZXRDb250ZW50c0dyYXZpdHk6QCJib3R0b21MZWZ0Il07Ci0KLSNpZiAhSEFW
RV9NT0RFUk5fUVVBUlRaQ09SRQotICAgICAgICAvLyBUaWxlZCBsYXllciBoYXMgaXNzdWVzIHdp
dGggZmxpcHBlZCBjb29yZGluYXRlcy4KLSAgICAgICAgc2V0Q29udGVudHNPcmllbnRhdGlvbihD
b21wb3NpdGluZ0Nvb3JkaW5hdGVzVG9wRG93bik7Ci0jZW5kaWYKLSAgICB9IGVsc2UgewotI2lm
ICFIQVZFX01PREVSTl9RVUFSVFpDT1JFCi0gICAgICAgIHNldENvbnRlbnRzT3JpZW50YXRpb24o
ZGVmYXVsdENvbnRlbnRzT3JpZW50YXRpb24oKSk7Ci0jZW5kaWYKLSAgICB9Ci0gICAgCi0gICAg
W21fbGF5ZXIuZ2V0KCkgc2V0TGF5ZXJPd25lcjp0aGlzXTsKLSAgICBzYWZlU2V0U3VibGF5ZXJz
KG1fbGF5ZXIuZ2V0KCksIFtvbGRMYXllci5nZXQoKSBzdWJsYXllcnNdKTsKLSAgICAKLSAgICBb
W29sZExheWVyLmdldCgpIHN1cGVybGF5ZXJdIHJlcGxhY2VTdWJsYXllcjpvbGRMYXllci5nZXQo
KSB3aXRoOm1fbGF5ZXIuZ2V0KCldOwotCi0gICAgdXBkYXRlQ29udGVudHNUcmFuc2Zvcm0oKTsK
LQotICAgIHVwZGF0ZUxheWVyUG9zaXRpb24oKTsKLSAgICB1cGRhdGVMYXllclNpemUoKTsKLSAg
ICB1cGRhdGVBbmNob3JQb2ludCgpOwotICAgIHVwZGF0ZVRyYW5zZm9ybSgpOwotICAgIHVwZGF0
ZUNoaWxkcmVuVHJhbnNmb3JtKCk7Ci0gICAgdXBkYXRlTWFza3NUb0JvdW5kcygpOwotICAgIHVw
ZGF0ZUNvbnRlbnRzT3BhcXVlKCk7Ci0gICAgdXBkYXRlQmFja2ZhY2VWaXNpYmlsaXR5KCk7Ci0g
ICAgdXBkYXRlTGF5ZXJCYWNrZ3JvdW5kQ29sb3IoKTsKLSAgICAKLSAgICB1cGRhdGVPcGFjaXR5
T25MYXllcigpOwotICAgIAotI2lmbmRlZiBOREVCVUcKLSAgICBTdHJpbmcgbmFtZSA9IFN0cmlu
Zzo6Zm9ybWF0KCJDQUxheWVyKCVwKSBHcmFwaGljc0xheWVyKCVwKSAiLCBtX2xheWVyLmdldCgp
LCB0aGlzKSArIG1fbmFtZTsKLSAgICBbbV9sYXllci5nZXQoKSBzZXROYW1lOm5hbWVdOwotI2Vu
ZGlmCi0KLSAgICAvLyBtb3ZlIG92ZXIgYW5pbWF0aW9ucwotICAgIG1vdmVPckNvcHlBbmltYXRp
b25zRm9yUHJvcGVydHkoTW92ZSwgQW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybSwgb2xk
TGF5ZXIuZ2V0KCksIG1fbGF5ZXIuZ2V0KCkpOwotICAgIG1vdmVPckNvcHlBbmltYXRpb25zRm9y
UHJvcGVydHkoTW92ZSwgQW5pbWF0ZWRQcm9wZXJ0eU9wYWNpdHksIG9sZExheWVyLmdldCgpLCBt
X2xheWVyLmdldCgpKTsKLSAgICBtb3ZlT3JDb3B5QW5pbWF0aW9uc0ZvclByb3BlcnR5KE1vdmUs
IEFuaW1hdGVkUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsIG9sZExheWVyLmdldCgpLCBtX2xheWVy
LmdldCgpKTsKLSAgICAKLSAgICAvLyBuZWVkIHRvIHRlbGwgbmV3IGxheWVyIHRvIGRyYXcgaXRz
ZWxmCi0gICAgc2V0TmVlZHNEaXNwbGF5KCk7Ci0gICAgCi0gICAgdXBkYXRlRGVidWdJbmRpY2F0
b3JzKCk7Ci19Ci0KLUdyYXBoaWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRh
dGlvbiBHcmFwaGljc0xheWVyQ0E6OmRlZmF1bHRDb250ZW50c09yaWVudGF0aW9uKCkgY29uc3QK
LXsKLSNpZiAhSEFWRV9NT0RFUk5fUVVBUlRaQ09SRQotICAgIC8vIE9sZGVyIFF1YXJ0ekNvcmUg
ZG9lcyBub3Qgc3VwcG9ydCAtZ2VvbWV0cnlGbGlwcGVkLCBzbyB3ZSBtYW51YWxseSBmbGlwIHRo
ZSByb290Ci0gICAgLy8gbGF5ZXIgZ2VvbWV0cnksIGFuZCB0aGVuIGZsaXAgdGhlIGNvbnRlbnRz
IG9mIGVhY2ggbGF5ZXIgYmFjayBzbyB0aGF0IHRoZSBDVE0gZm9yIENHCi0gICAgLy8gaXMgdW5m
bGlwcGVkLCBhbGxvd2luZyBpdCB0byBkbyB0aGUgY29ycmVjdCBmb250IGF1dG8taGludGluZy4K
LSAgICByZXR1cm4gQ29tcG9zaXRpbmdDb29yZGluYXRlc0JvdHRvbVVwOwotI2Vsc2UKLSAgICBy
ZXR1cm4gQ29tcG9zaXRpbmdDb29yZGluYXRlc1RvcERvd247Ci0jZW5kaWYKLX0KLQotdm9pZCBH
cmFwaGljc0xheWVyQ0E6OnVwZGF0ZUNvbnRlbnRzVHJhbnNmb3JtKCkKLXsKLSNpZiAhSEFWRV9N
T0RFUk5fUVVBUlRaQ09SRQotICAgIGlmIChjb250ZW50c09yaWVudGF0aW9uKCkgPT0gQ29tcG9z
aXRpbmdDb29yZGluYXRlc0JvdHRvbVVwKSB7Ci0gICAgICAgIENHQWZmaW5lVHJhbnNmb3JtIGNv
bnRlbnRzVHJhbnNmb3JtID0gQ0dBZmZpbmVUcmFuc2Zvcm1NYWtlU2NhbGUoMSwgLTEpOwotICAg
ICAgICBjb250ZW50c1RyYW5zZm9ybSA9IENHQWZmaW5lVHJhbnNmb3JtVHJhbnNsYXRlKGNvbnRl
bnRzVHJhbnNmb3JtLCAwLCAtW21fbGF5ZXIuZ2V0KCkgYm91bmRzXS5zaXplLmhlaWdodCk7Ci0g
ICAgICAgIFttX2xheWVyLmdldCgpIHNldENvbnRlbnRzVHJhbnNmb3JtOmNvbnRlbnRzVHJhbnNm
b3JtXTsKLSAgICB9Ci0jZW5kaWYKLX0KLQotdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldHVwQ29u
dGVudHNMYXllcihDQUxheWVyKiBjb250ZW50c0xheWVyKQotewotICAgIC8vIFR1cm4gb2ZmIGlt
cGxpY2l0IGFuaW1hdGlvbnMgb24gdGhlIGlubmVyIGxheWVyLgotICAgIFtjb250ZW50c0xheWVy
IHNldFN0eWxlOltOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3Q6bnVsbEFjdGlvbnNE
aWN0aW9uYXJ5KCkgZm9yS2V5OkAiYWN0aW9ucyJdXTsKLSAgICBbY29udGVudHNMYXllciBzZXRN
YXNrc1RvQm91bmRzOllFU107Ci0KLSAgICBpZiAoZGVmYXVsdENvbnRlbnRzT3JpZW50YXRpb24o
KSA9PSBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzQm90dG9tVXApIHsKLSAgICAgICAgQ0FUcmFuc2Zv
cm0zRCBmbGlwcGVyID0gewotICAgICAgICAgICAgMS4wZiwgMC4wZiwgMC4wZiwgMC4wZiwKLSAg
ICAgICAgICAgIDAuMGYsIC0xLjBmLCAwLjBmLCAwLjBmLAotICAgICAgICAgICAgMC4wZiwgMC4w
ZiwgMS4wZiwgMC4wZiwKLSAgICAgICAgICAgIDAuMGYsIDAuMGYsIDAuMGYsIDEuMGZ9OwotICAg
ICAgICBbY29udGVudHNMYXllciBzZXRUcmFuc2Zvcm06ZmxpcHBlcl07Ci0gICAgICAgIFtjb250
ZW50c0xheWVyIHNldEFuY2hvclBvaW50OkNHUG9pbnRNYWtlKDAuMGYsIDEuMGYpXTsKLSAgICB9
IGVsc2UKLSAgICAgICAgW2NvbnRlbnRzTGF5ZXIgc2V0QW5jaG9yUG9pbnQ6Q0dQb2ludFplcm9d
OwotCi0gICAgaWYgKHNob3dEZWJ1Z0JvcmRlcnMoKSkgewotICAgICAgICBzZXRMYXllckJvcmRl
ckNvbG9yKGNvbnRlbnRzTGF5ZXIsIENvbG9yKDAsIDAsIDEyOCwgMTgwKSk7Ci0gICAgICAgIFtj
b250ZW50c0xheWVyIHNldEJvcmRlcldpZHRoOjEuMGZdOwotICAgIH0KLX0KLQotQ0FMYXllciAq
R3JhcGhpY3NMYXllckNBOjpmaW5kT3JNYWtlQ2xvbmUoQ2xvbmVJRCBjbG9uZUlELCBDQUxheWVy
ICpzb3VyY2VMYXllciwgTGF5ZXJNYXAqIGNsb25lcywgQ2xvbmVMZXZlbCBjbG9uZUxldmVsKQot
ewotICAgIGlmICghc291cmNlTGF5ZXIpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgQ0FMYXll
ciAqcmVzdWx0TGF5ZXI7Ci0KLSAgICAvLyBBZGQgd2l0aCBhIGR1bW15IHZhbHVlIHRvIGdldCBh
biBpdGVyYXRvciBmb3IgdGhlIGluc2VydGlvbiBwb3NpdGlvbiwgYW5kIGEgYm9vbGVhbiB0aGF0
IHRlbGxzCi0gICAgLy8gdXMgd2hldGhlciB0aGVyZSdzIGFuIGl0ZW0gdGhlcmUuIFRoaXMgdGVj
aG5pcXVlIGF2b2lkcyB0d28gaGFzaCBsb29rdXBzLgotICAgIFJldGFpblB0cjxDQUxheWVyPiBk
dW1teTsKLSAgICBwYWlyPExheWVyTWFwOjppdGVyYXRvciwgYm9vbD4gYWRkUmVzdWx0ID0gY2xv
bmVzLT5hZGQoY2xvbmVJRCwgZHVtbXkpOwotICAgIGlmICghYWRkUmVzdWx0LnNlY29uZCkgewot
ICAgICAgICAvLyBWYWx1ZSB3YXMgbm90IGFkZGVkLCBzbyBpdCBleGlzdHMgYWxyZWFkeS4KLSAg
ICAgICAgcmVzdWx0TGF5ZXIgPSBhZGRSZXN1bHQuZmlyc3QtPnNlY29uZC5nZXQoKTsKLSAgICB9
IGVsc2UgewotICAgICAgICByZXN1bHRMYXllciA9IGNsb25lTGF5ZXIoc291cmNlTGF5ZXIsIGNs
b25lTGV2ZWwpOwotI2lmbmRlZiBOREVCVUcKLSAgICAgICAgW3Jlc3VsdExheWVyIHNldE5hbWU6
W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJDbG9uZSAlZCBvZiBsYXllciAlQCIsIGNsb25l
SURbMFVdLCBzb3VyY2VMYXllcl1dOwotI2VuZGlmCi0gICAgICAgIGFkZFJlc3VsdC5maXJzdC0+
c2Vjb25kID0gcmVzdWx0TGF5ZXI7Ci0gICAgfQotCi0gICAgcmV0dXJuIHJlc3VsdExheWVyOwot
fSAgIAotCi12b2lkIEdyYXBoaWNzTGF5ZXJDQTo6ZW5zdXJlQ2xvbmVMYXllcnMoQ2xvbmVJRCBj
bG9uZUlELCBDQUxheWVyIComIHByaW1hcnlMYXllciwgQ0FMYXllciAqJiBzdHJ1Y3R1cmFsTGF5
ZXIsIENBTGF5ZXIgKiYgY29udGVudHNMYXllciwgQ2xvbmVMZXZlbCBjbG9uZUxldmVsKQotewot
ICAgIHN0cnVjdHVyYWxMYXllciA9IG5pbDsKLSAgICBjb250ZW50c0xheWVyID0gbmlsOwotCi0g
ICAgaWYgKCFtX2xheWVyQ2xvbmVzKQotICAgICAgICBtX2xheWVyQ2xvbmVzID0gbmV3IExheWVy
TWFwOwotCi0gICAgaWYgKCFtX3N0cnVjdHVyYWxMYXllckNsb25lcyAmJiBtX3N0cnVjdHVyYWxM
YXllcikKLSAgICAgICAgbV9zdHJ1Y3R1cmFsTGF5ZXJDbG9uZXMgPSBuZXcgTGF5ZXJNYXA7Ci0K
LSAgICBpZiAoIW1fY29udGVudHNMYXllckNsb25lcyAmJiBtX2NvbnRlbnRzTGF5ZXIpCi0gICAg
ICAgIG1fY29udGVudHNMYXllckNsb25lcyA9IG5ldyBMYXllck1hcDsKLQotICAgIHByaW1hcnlM
YXllciA9IGZpbmRPck1ha2VDbG9uZShjbG9uZUlELCBtX2xheWVyLmdldCgpLCBtX2xheWVyQ2xv
bmVzLmdldCgpLCBjbG9uZUxldmVsKTsKLSAgICBzdHJ1Y3R1cmFsTGF5ZXIgPSBmaW5kT3JNYWtl
Q2xvbmUoY2xvbmVJRCwgbV9zdHJ1Y3R1cmFsTGF5ZXIuZ2V0KCksIG1fc3RydWN0dXJhbExheWVy
Q2xvbmVzLmdldCgpLCBjbG9uZUxldmVsKTsKLSAgICBjb250ZW50c0xheWVyID0gZmluZE9yTWFr
ZUNsb25lKGNsb25lSUQsIG1fY29udGVudHNMYXllci5nZXQoKSwgbV9jb250ZW50c0xheWVyQ2xv
bmVzLmdldCgpLCBjbG9uZUxldmVsKTsKLX0KLQotdm9pZCBHcmFwaGljc0xheWVyQ0E6OnJlbW92
ZUNsb25lTGF5ZXJzKCkKLXsKLSAgICBtX2xheWVyQ2xvbmVzID0gMDsKLSAgICBtX3N0cnVjdHVy
YWxMYXllckNsb25lcyA9IDA7Ci0gICAgbV9jb250ZW50c0xheWVyQ2xvbmVzID0gMDsKLX0KLQot
RmxvYXRQb2ludCBHcmFwaGljc0xheWVyQ0E6OnBvc2l0aW9uRm9yQ2xvbmVSb290TGF5ZXIoKSBj
b25zdAotewotICAgIC8vIFRoaXMgY2FuIGdldCBjYWxsZWQgZHVyaW5nIGEgc3luYyB3aGVuIHdl
J3ZlIGp1c3QgcmVtb3ZlZCB0aGUgbV9yZXBsaWNhTGF5ZXIuCi0gICAgaWYgKCFtX3JlcGxpY2FM
YXllcikKLSAgICAgICAgcmV0dXJuIEZsb2F0UG9pbnQoKTsKLQotICAgIEZsb2F0UG9pbnQgcmVw
bGljYVBvc2l0aW9uID0gbV9yZXBsaWNhTGF5ZXItPnJlcGxpY2F0ZWRMYXllclBvc2l0aW9uKCk7
Ci0gICAgcmV0dXJuIEZsb2F0UG9pbnQocmVwbGljYVBvc2l0aW9uLngoKSArIG1fYW5jaG9yUG9p
bnQueCgpICogbV9zaXplLndpZHRoKCksCi0gICAgICAgICAgICAgICAgICAgICAgcmVwbGljYVBv
c2l0aW9uLnkoKSArIG1fYW5jaG9yUG9pbnQueSgpICogbV9zaXplLmhlaWdodCgpKTsKLX0KLQot
dm9pZCBHcmFwaGljc0xheWVyQ0E6OnByb3BhZ2F0ZUxheWVyQ2hhbmdlVG9SZXBsaWNhcygpCi17
Ci0gICAgZm9yIChHcmFwaGljc0xheWVyKiBjdXJyTGF5ZXIgPSB0aGlzOyBjdXJyTGF5ZXI7IGN1
cnJMYXllciA9IGN1cnJMYXllci0+cGFyZW50KCkpIHsKLSAgICAgICAgR3JhcGhpY3NMYXllckNB
KiBjdXJyTGF5ZXJDQSA9IHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXJDQSo+KGN1cnJMYXllcik7
Ci0gICAgICAgIGlmICghY3VyckxheWVyQ0EtPmhhc0Nsb25lTGF5ZXJzKCkpCi0gICAgICAgICAg
ICBicmVhazsKLQotICAgICAgICBpZiAoY3VyckxheWVyQ0EtPnJlcGxpY2FMYXllcigpKQotICAg
ICAgICAgICAgc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllckNBKj4oY3VyckxheWVyQ0EtPnJlcGxp
Y2FMYXllcigpKS0+bm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKFJlcGxpY2F0ZWRMYXllckNoYW5n
ZWQpOwotICAgIH0KLX0KLQotQ0FMYXllciAqR3JhcGhpY3NMYXllckNBOjpmZXRjaENsb25lTGF5
ZXJzKEdyYXBoaWNzTGF5ZXIqIHJlcGxpY2FSb290LCBSZXBsaWNhU3RhdGUmIHJlcGxpY2FTdGF0
ZSwgQ2xvbmVMZXZlbCBjbG9uZUxldmVsKQotewotICAgIENBTGF5ZXIgKnByaW1hcnlMYXllcjsK
LSAgICBDQUxheWVyICpzdHJ1Y3R1cmFsTGF5ZXI7Ci0gICAgQ0FMYXllciAqY29udGVudHNMYXll
cjsKLSAgICBlbnN1cmVDbG9uZUxheWVycyhyZXBsaWNhU3RhdGUuY2xvbmVJRCgpLCBwcmltYXJ5
TGF5ZXIsIHN0cnVjdHVyYWxMYXllciwgY29udGVudHNMYXllciwgY2xvbmVMZXZlbCk7Ci0KLSAg
ICBpZiAobV9tYXNrTGF5ZXIpIHsKLSAgICAgICAgQ0FMYXllciAqbWFza0Nsb25lID0gc3RhdGlj
X2Nhc3Q8R3JhcGhpY3NMYXllckNBKj4obV9tYXNrTGF5ZXIpLT5mZXRjaENsb25lTGF5ZXJzKHJl
cGxpY2FSb290LCByZXBsaWNhU3RhdGUsIEludGVybWVkaWF0ZUNsb25lTGV2ZWwpOwotICAgICAg
ICBbcHJpbWFyeUxheWVyIHNldE1hc2s6bWFza0Nsb25lXTsKLSAgICB9Ci0KLSAgICBpZiAobV9y
ZXBsaWNhdGVkTGF5ZXIpIHsKLSAgICAgICAgLy8gV2UgYXJlIGEgcmVwbGljYSBiZWluZyBhc2tl
ZCBmb3IgY2xvbmVzIG9mIG91ciBsYXllcnMuCi0gICAgICAgIENBTGF5ZXIgKnJlcGxpY2FSb290
ID0gcmVwbGljYXRlZExheWVyUm9vdChyZXBsaWNhU3RhdGUpOwotICAgICAgICBpZiAoIXJlcGxp
Y2FSb290KQotICAgICAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgICAgICBpZiAoc3RydWN0dXJh
bExheWVyKSB7Ci0gICAgICAgICAgICBbc3RydWN0dXJhbExheWVyIGluc2VydFN1YmxheWVyOnJl
cGxpY2FSb290IGF0SW5kZXg6MF07Ci0gICAgICAgICAgICByZXR1cm4gc3RydWN0dXJhbExheWVy
OwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBbcHJpbWFyeUxheWVyIGluc2VydFN1Ymxh
eWVyOnJlcGxpY2FSb290IGF0SW5kZXg6MF07Ci0gICAgICAgIHJldHVybiBwcmltYXJ5TGF5ZXI7
Ci0gICAgfQotCi0gICAgY29uc3QgVmVjdG9yPEdyYXBoaWNzTGF5ZXIqPiYgY2hpbGRMYXllcnMg
PSBjaGlsZHJlbigpOwotICAgIE5TTXV0YWJsZUFycmF5KiBjbG9uYWxTdWJsYXllcnMgPSBuaWw7
Ci0KLSAgICBDQUxheWVyICpyZXBsaWNhTGF5ZXIgPSBuaWw7Ci0gICAgaWYgKG1fcmVwbGljYUxh
eWVyICYmIG1fcmVwbGljYUxheWVyICE9IHJlcGxpY2FSb290KSB7Ci0gICAgICAgIC8vIFdlIGhh
dmUgbmVzdGVkIHJlcGxpY2FzLiBBc2sgdGhlIHJlcGxpY2EgbGF5ZXIgZm9yIGEgY2xvbmUgb2Yg
aXRzIGNvbnRlbnRzLgotICAgICAgICByZXBsaWNhU3RhdGUuc2V0QnJhbmNoVHlwZShSZXBsaWNh
U3RhdGU6OlJlcGxpY2FCcmFuY2gpOwotICAgICAgICByZXBsaWNhTGF5ZXIgPSBzdGF0aWNfY2Fz
dDxHcmFwaGljc0xheWVyQ0EqPihtX3JlcGxpY2FMYXllciktPmZldGNoQ2xvbmVMYXllcnMocmVw
bGljYVJvb3QsIHJlcGxpY2FTdGF0ZSwgUm9vdENsb25lTGV2ZWwpOwotICAgICAgICByZXBsaWNh
U3RhdGUuc2V0QnJhbmNoVHlwZShSZXBsaWNhU3RhdGU6OkNoaWxkQnJhbmNoKTsKLSAgICB9Ci0g
ICAgCi0gICAgaWYgKHJlcGxpY2FMYXllciB8fCBzdHJ1Y3R1cmFsTGF5ZXIgfHwgY29udGVudHNM
YXllciB8fCBjaGlsZExheWVycy5zaXplKCkgPiAwKSB7Ci0gICAgICAgIGNsb25hbFN1YmxheWVy
cyA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdOwotCi0gICAgICAgIGlmIChzdHJ1Y3R1
cmFsTGF5ZXIpIHsKLSAgICAgICAgICAgIC8vIFJlcGxpY2FzIHJlbmRlciBiZWhpbmQgdGhlIGFj
dHVhbCBsYXllciBjb250ZW50LgotICAgICAgICAgICAgaWYgKHJlcGxpY2FMYXllcikKLSAgICAg
ICAgICAgICAgICBbY2xvbmFsU3VibGF5ZXJzIGFkZE9iamVjdDpyZXBsaWNhTGF5ZXJdOwotICAg
ICAgICAgICAgICAgIAotICAgICAgICAgICAgLy8gQWRkIHRoZSBwcmltYXJ5IGxheWVyIG5leHQu
IEV2ZW4gaWYgd2UgaGF2ZSBuZWdhdGl2ZSB6LW9yZGVyIGNoaWxkcmVuLCB0aGUgcHJpbWFyeSBs
YXllciBhbHdheXMgY29tZXMgYmVoaW5kLgotICAgICAgICAgICAgW2Nsb25hbFN1YmxheWVycyBh
ZGRPYmplY3Q6cHJpbWFyeUxheWVyXTsKLSAgICAgICAgfSBlbHNlIGlmIChjb250ZW50c0xheWVy
KSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogYWRkIHRoZSBjb250ZW50cyBsYXllciBpbiB0aGUg
Y29ycmVjdCBvcmRlciB3aXRoIG5lZ2F0aXZlIHotb3JkZXIgY2hpbGRyZW4uCi0gICAgICAgICAg
ICAvLyBUaGlzIGRvZXMgbm90IGNhdXNlIHZpc2libGUgcmVuZGVyaW5nIGlzc3VlcyBiZWNhdXNl
IGN1cnJlbnRseSBjb250ZW50cyBsYXllcnMgYXJlIG9ubHkgdXNlZAotICAgICAgICAgICAgLy8g
Zm9yIHJlcGxhY2VkIGVsZW1lbnRzIHRoYXQgZG9uJ3QgaGF2ZSBjaGlsZHJlbi4KLSAgICAgICAg
ICAgIFtjbG9uYWxTdWJsYXllcnMgYWRkT2JqZWN0OmNvbnRlbnRzTGF5ZXJdOwotICAgICAgICB9
Ci0gICAgICAgIAotICAgICAgICByZXBsaWNhU3RhdGUucHVzaChSZXBsaWNhU3RhdGU6OkNoaWxk
QnJhbmNoKTsKLQotICAgICAgICBzaXplX3QgbnVtQ2hpbGRyZW4gPSBjaGlsZExheWVycy5zaXpl
KCk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtQ2hpbGRyZW47ICsraSkgewot
ICAgICAgICAgICAgR3JhcGhpY3NMYXllckNBKiBjdXJDaGlsZCA9IHN0YXRpY19jYXN0PEdyYXBo
aWNzTGF5ZXJDQSo+KGNoaWxkTGF5ZXJzW2ldKTsKLQotICAgICAgICAgICAgQ0FMYXllciAqY2hp
bGRMYXllciA9IGN1ckNoaWxkLT5mZXRjaENsb25lTGF5ZXJzKHJlcGxpY2FSb290LCByZXBsaWNh
U3RhdGUsIEludGVybWVkaWF0ZUNsb25lTGV2ZWwpOwotICAgICAgICAgICAgaWYgKGNoaWxkTGF5
ZXIpCi0gICAgICAgICAgICAgICAgW2Nsb25hbFN1YmxheWVycyBhZGRPYmplY3Q6Y2hpbGRMYXll
cl07Ci0gICAgICAgIH0KLQotICAgICAgICByZXBsaWNhU3RhdGUucG9wKCk7Ci0KLSAgICAgICAg
W2Nsb25hbFN1YmxheWVycyBtYWtlT2JqZWN0c1BlcmZvcm1TZWxlY3RvcjpAc2VsZWN0b3IocmVt
b3ZlRnJvbVN1cGVybGF5ZXIpXTsKLSAgICB9Ci0gICAgCi0gICAgQ0FMYXllciAqcmVzdWx0Owot
ICAgIGlmIChzdHJ1Y3R1cmFsTGF5ZXIpIHsKLSAgICAgICAgW3N0cnVjdHVyYWxMYXllciBzZXRT
dWJsYXllcnM6Y2xvbmFsU3VibGF5ZXJzXTsKLQotICAgICAgICBpZiAoY29udGVudHNMYXllcikg
ewotICAgICAgICAgICAgLy8gSWYgd2UgaGF2ZSBhIHRyYW5zZm9ybSBsYXllciwgdGhlbiB0aGUg
Y29udGVudHMgbGF5ZXIgaXMgcGFyZW50ZWQgaW4gdGhlIAotICAgICAgICAgICAgLy8gcHJpbWFy
eSBsYXllciAod2hpY2ggaXMgaXRzZWxmIGEgY2hpbGQgb2YgdGhlIHRyYW5zZm9ybSBsYXllciku
Ci0gICAgICAgICAgICBbcHJpbWFyeUxheWVyIHNldFN1YmxheWVyczpuaWxdOwotICAgICAgICAg
ICAgW3ByaW1hcnlMYXllciBhZGRTdWJsYXllcjpjb250ZW50c0xheWVyXTsKLSAgICAgICAgfQot
Ci0gICAgICAgIHJlc3VsdCA9IHN0cnVjdHVyYWxMYXllcjsKLSAgICB9IGVsc2UgewotICAgICAg
ICBbcHJpbWFyeUxheWVyIHNldFN1YmxheWVyczpjbG9uYWxTdWJsYXllcnNdOwotICAgICAgICBy
ZXN1bHQgPSBwcmltYXJ5TGF5ZXI7Ci0gICAgfQotCi0gICAgW2Nsb25hbFN1YmxheWVycyByZWxl
YXNlXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1DQUxheWVyICpHcmFwaGljc0xheWVyQ0E6
OmNsb25lTGF5ZXIoQ0FMYXllciAqbGF5ZXIsIENsb25lTGV2ZWwgY2xvbmVMZXZlbCkKLXsKLSAg
ICBzdGF0aWMgQ2xhc3MgdHJhbnNmb3JtTGF5ZXJDbGFzcyA9IE5TQ2xhc3NGcm9tU3RyaW5nKEAi
Q0FUcmFuc2Zvcm1MYXllciIpOwotICAgIENBTGF5ZXIgKm5ld0xheWVyID0gbmlsOwotICAgIGlm
IChbbGF5ZXIgaXNLaW5kT2ZDbGFzczp0cmFuc2Zvcm1MYXllckNsYXNzXSkKLSAgICAgICAgbmV3
TGF5ZXIgPSBbdHJhbnNmb3JtTGF5ZXJDbGFzcyBsYXllcl07Ci0gICAgZWxzZQotICAgICAgICBu
ZXdMYXllciA9IFtDQUxheWVyIGxheWVyXTsKLQotICAgIFtuZXdMYXllciBzZXRTdHlsZTpbTlNE
aWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0Om51bGxBY3Rpb25zRGljdGlvbmFyeSgpIGZv
cktleTpAImFjdGlvbnMiXV07Ci0gICAgCi0gICAgW25ld0xheWVyIHNldFBvc2l0aW9uOltsYXll
ciBwb3NpdGlvbl1dOwotICAgIFtuZXdMYXllciBzZXRCb3VuZHM6W2xheWVyIGJvdW5kc11dOwot
ICAgIFtuZXdMYXllciBzZXRBbmNob3JQb2ludDpbbGF5ZXIgYW5jaG9yUG9pbnRdXTsKLSNpZiBI
QVZFX01PREVSTl9RVUFSVFpDT1JFCi0gICAgW25ld0xheWVyIHNldEFuY2hvclBvaW50WjpbbGF5
ZXIgYW5jaG9yUG9pbnRaXV07Ci0jZW5kaWYKLSAgICBbbmV3TGF5ZXIgc2V0VHJhbnNmb3JtOlts
YXllciB0cmFuc2Zvcm1dXTsKLSAgICBbbmV3TGF5ZXIgc2V0U3VibGF5ZXJUcmFuc2Zvcm06W2xh
eWVyIHN1YmxheWVyVHJhbnNmb3JtXV07Ci0gICAgW25ld0xheWVyIHNldENvbnRlbnRzOltsYXll
ciBjb250ZW50c11dOwotICAgIFtuZXdMYXllciBzZXRNYXNrc1RvQm91bmRzOltsYXllciBtYXNr
c1RvQm91bmRzXV07Ci0gICAgW25ld0xheWVyIHNldERvdWJsZVNpZGVkOltsYXllciBpc0RvdWJs
ZVNpZGVkXV07Ci0gICAgW25ld0xheWVyIHNldE9wYXF1ZTpbbGF5ZXIgaXNPcGFxdWVdXTsKLSAg
ICBbbmV3TGF5ZXIgc2V0QmFja2dyb3VuZENvbG9yOltsYXllciBiYWNrZ3JvdW5kQ29sb3JdXTsK
LQotICAgIGlmIChjbG9uZUxldmVsID09IEludGVybWVkaWF0ZUNsb25lTGV2ZWwpIHsKLSAgICAg
ICAgW25ld0xheWVyIHNldE9wYWNpdHk6W2xheWVyIG9wYWNpdHldXTsKLSAgICAgICAgbW92ZU9y
Q29weUFuaW1hdGlvbnNGb3JQcm9wZXJ0eShDb3B5LCBBbmltYXRlZFByb3BlcnR5V2Via2l0VHJh
bnNmb3JtLCBsYXllciwgbmV3TGF5ZXIpOwotICAgICAgICBtb3ZlT3JDb3B5QW5pbWF0aW9uc0Zv
clByb3BlcnR5KENvcHksIEFuaW1hdGVkUHJvcGVydHlPcGFjaXR5LCBsYXllciwgbmV3TGF5ZXIp
OwotICAgIH0KLSAgICAKLSAgICBpZiAoc2hvd0RlYnVnQm9yZGVycygpKSB7Ci0gICAgICAgIHNl
dExheWVyQm9yZGVyQ29sb3IobmV3TGF5ZXIsIENvbG9yKDI1NSwgMTIyLCAyNTEpKTsKLSAgICAg
ICAgW25ld0xheWVyIHNldEJvcmRlcldpZHRoOjJdOwotICAgIH0KLSAgICAKLSAgICByZXR1cm4g
bmV3TGF5ZXI7Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRPcGFjaXR5SW50ZXJuYWwo
ZmxvYXQgYWNjdW11bGF0ZWRPcGFjaXR5KQotewotICAgIExheWVyTWFwKiBsYXllckNsb25lTWFw
ID0gMDsKLSAgICAKLSAgICBpZiAocHJlc2VydmVzM0QoKSkgewotICAgICAgICBbbV9sYXllci5n
ZXQoKSBzZXRPcGFjaXR5OmFjY3VtdWxhdGVkT3BhY2l0eV07Ci0gICAgICAgIGxheWVyQ2xvbmVN
YXAgPSBtX2xheWVyQ2xvbmVzLmdldCgpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIFtwcmltYXJ5
TGF5ZXIoKSBzZXRPcGFjaXR5OmFjY3VtdWxhdGVkT3BhY2l0eV07Ci0gICAgICAgIGxheWVyQ2xv
bmVNYXAgPSBwcmltYXJ5TGF5ZXJDbG9uZXMoKTsKLSAgICB9Ci0KLSAgICBpZiAobGF5ZXJDbG9u
ZU1hcCkgewotICAgICAgICBMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbGF5ZXJDbG9u
ZU1hcC0+ZW5kKCk7Ci0gICAgICAgIGZvciAoTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0g
bGF5ZXJDbG9uZU1hcC0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICBp
ZiAobV9yZXBsaWNhTGF5ZXIgJiYgaXNSZXBsaWNhdGVkUm9vdENsb25lKGl0LT5maXJzdCkpCi0g
ICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBDQUxheWVyICpjdXJyTGF5ZXIg
PSBpdC0+c2Vjb25kLmdldCgpOwotICAgICAgICAgICAgW2N1cnJMYXllciBzZXRPcGFjaXR5Om1f
b3BhY2l0eV07Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllckNBOjp1
cGRhdGVPcGFjaXR5T25MYXllcigpCi17Ci0jaWYgIUhBVkVfTU9ERVJOX1FVQVJUWkNPUkUKLSAg
ICAvLyBEaXN0cmlidXRlIG9wYWNpdHkgZWl0aGVyIHRvIG91ciBvd24gbGF5ZXIgb3IgdG8gb3Vy
IGNoaWxkcmVuLiBXZSBwYXNzIGluIHRoZSAKLSAgICAvLyBjb250cmlidXRpb24gZnJvbSBvdXIg
cGFyZW50KHMpLgotICAgIGRpc3RyaWJ1dGVPcGFjaXR5KHBhcmVudCgpID8gcGFyZW50KCktPmFj
Y3VtdWxhdGVkT3BhY2l0eSgpIDogMSk7Ci0jZWxzZQotICAgIFtwcmltYXJ5TGF5ZXIoKSBzZXRP
cGFjaXR5Om1fb3BhY2l0eV07Ci0KLSAgICBpZiAoTGF5ZXJNYXAqIGxheWVyQ2xvbmVNYXAgPSBw
cmltYXJ5TGF5ZXJDbG9uZXMoKSkgewotICAgICAgICBMYXllck1hcDo6Y29uc3RfaXRlcmF0b3Ig
ZW5kID0gbGF5ZXJDbG9uZU1hcC0+ZW5kKCk7Ci0gICAgICAgIGZvciAoTGF5ZXJNYXA6OmNvbnN0
X2l0ZXJhdG9yIGl0ID0gbGF5ZXJDbG9uZU1hcC0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7
Ci0gICAgICAgICAgICBpZiAobV9yZXBsaWNhTGF5ZXIgJiYgaXNSZXBsaWNhdGVkUm9vdENsb25l
KGl0LT5maXJzdCkpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgIENB
TGF5ZXIgKmN1cnJMYXllciA9IGl0LT5zZWNvbmQuZ2V0KCk7Ci0gICAgICAgICAgICBbY3Vyckxh
eWVyIHNldE9wYWNpdHk6bV9vcGFjaXR5XTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICB9Ci0j
ZW5kaWYKLX0KLQotdm9pZCBHcmFwaGljc0xheWVyQ0E6Om5vdGVTdWJsYXllcnNDaGFuZ2VkKCkK
LXsKLSAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoQ2hpbGRyZW5DaGFuZ2VkKTsKLSAgICBw
cm9wYWdhdGVMYXllckNoYW5nZVRvUmVwbGljYXMoKTsKLX0KLQotdm9pZCBHcmFwaGljc0xheWVy
Q0E6Om5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChMYXllckNoYW5nZUZsYWdzIGZsYWdzKQotewot
ICAgIGlmICghbV91bmNvbW1pdHRlZENoYW5nZXMgJiYgbV9jbGllbnQpCi0gICAgICAgIG1fY2xp
ZW50LT5ub3RpZnlTeW5jUmVxdWlyZWQodGhpcyk7Ci0KLSAgICBtX3VuY29tbWl0dGVkQ2hhbmdl
cyB8PSBmbGFnczsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gVVNF
KEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvR3JhcGhpY3NMYXllck1hYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0dyYXBoaWNzTGF5ZXJNYWMuaAkocmV2aXNpb24gNzE1NjcpCShmcm9tIFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzTGF5ZXJDQS5oOjcxNTY3KQorKysg
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NMYXllck1hYy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMzg4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEdyYXBoaWNzTGF5ZXJDQV9oCisjZGVm
aW5lIEdyYXBoaWNzTGF5ZXJDQV9oCisKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcp
CisKKyNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgiCisjaW5jbHVkZSAiV2ViTGF5ZXIuaCIKKyNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVk
ZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKwor
QGNsYXNzIENBQmFzaWNBbmltYXRpb247CitAY2xhc3MgQ0FLZXlmcmFtZUFuaW1hdGlvbjsKK0Bj
bGFzcyBDQU1lZGlhVGltaW5nRnVuY3Rpb247CitAY2xhc3MgQ0FQcm9wZXJ0eUFuaW1hdGlvbjsK
K0BjbGFzcyBXZWJBbmltYXRpb25EZWxlZ2F0ZTsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBHcmFwaGljc0xheWVyQ0EgOiBwdWJsaWMgR3JhcGhpY3NMYXllciB7CitwdWJsaWM6CisK
KyAgICBHcmFwaGljc0xheWVyQ0EoR3JhcGhpY3NMYXllckNsaWVudCopOworICAgIHZpcnR1YWwg
fkdyYXBoaWNzTGF5ZXJDQSgpOworCisgICAgdmlydHVhbCB2b2lkIHNldE5hbWUoY29uc3QgU3Ry
aW5nJik7CisKKyAgICAvLyBmb3IgaG9zdGluZyB0aGlzIEdyYXBoaWNzTGF5ZXIgaW4gYSBuYXRp
dmUgbGF5ZXIgaGllcmFyY2h5CisgICAgdmlydHVhbCBOYXRpdmVMYXllciBuYXRpdmVMYXllcigp
IGNvbnN0OworCisgICAgdmlydHVhbCBib29sIHNldENoaWxkcmVuKGNvbnN0IFZlY3RvcjxHcmFw
aGljc0xheWVyKj4mKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGQoR3JhcGhpY3NMYXllciop
OworICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZEF0SW5kZXgoR3JhcGhpY3NMYXllciosIGludCBp
bmRleCk7CisgICAgdmlydHVhbCB2b2lkIGFkZENoaWxkQWJvdmUoR3JhcGhpY3NMYXllciogbGF5
ZXIsIEdyYXBoaWNzTGF5ZXIqIHNpYmxpbmcpOworICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZEJl
bG93KEdyYXBoaWNzTGF5ZXIqIGxheWVyLCBHcmFwaGljc0xheWVyKiBzaWJsaW5nKTsKKyAgICB2
aXJ0dWFsIGJvb2wgcmVwbGFjZUNoaWxkKEdyYXBoaWNzTGF5ZXIqIG9sZENoaWxkLCBHcmFwaGlj
c0xheWVyKiBuZXdDaGlsZCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRnJvbVBhcmVudCgp
OworCisgICAgdmlydHVhbCB2b2lkIHNldE1hc2tMYXllcihHcmFwaGljc0xheWVyKik7CisgICAg
dmlydHVhbCB2b2lkIHNldFJlcGxpY2F0ZWRMYXllcihHcmFwaGljc0xheWVyKik7CisKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0UG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYpOworICAgIHZpcnR1YWwg
dm9pZCBzZXRBbmNob3JQb2ludChjb25zdCBGbG9hdFBvaW50M0QmKTsKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0U2l6ZShjb25zdCBGbG9hdFNpemUmKTsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRUcmFu
c2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKTsKKworICAgIHZpcnR1YWwgdm9pZCBz
ZXRDaGlsZHJlblRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpOworCisgICAg
dmlydHVhbCB2b2lkIHNldFByZXNlcnZlczNEKGJvb2wpOworICAgIHZpcnR1YWwgdm9pZCBzZXRN
YXNrc1RvQm91bmRzKGJvb2wpOworICAgIHZpcnR1YWwgdm9pZCBzZXREcmF3c0NvbnRlbnQoYm9v
bCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IENvbG9yJik7
CisgICAgdmlydHVhbCB2b2lkIGNsZWFyQmFja2dyb3VuZENvbG9yKCk7CisKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0Q29udGVudHNPcGFxdWUoYm9vbCk7CisgICAgdmlydHVhbCB2b2lkIHNldEJhY2tm
YWNlVmlzaWJpbGl0eShib29sKTsKKworICAgIC8vIHJldHVybiB0cnVlIGlmIHdlIHN0YXJ0ZWQg
YW4gYW5pbWF0aW9uCisgICAgdmlydHVhbCB2b2lkIHNldE9wYWNpdHkoZmxvYXQpOworCisgICAg
dmlydHVhbCB2b2lkIHNldE5lZWRzRGlzcGxheSgpOworICAgIHZpcnR1YWwgdm9pZCBzZXROZWVk
c0Rpc3BsYXlJblJlY3QoY29uc3QgRmxvYXRSZWN0Jik7CisgICAgdmlydHVhbCB2b2lkIHNldENv
bnRlbnRzTmVlZHNEaXNwbGF5KCk7CisgICAgCisgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRz
UmVjdChjb25zdCBJbnRSZWN0Jik7CisgICAgCisgICAgdmlydHVhbCB2b2lkIHN1c3BlbmRBbmlt
YXRpb25zKGRvdWJsZSB0aW1lKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzdW1lQW5pbWF0aW9ucygp
OworCisgICAgdmlydHVhbCBib29sIGFkZEFuaW1hdGlvbihjb25zdCBLZXlmcmFtZVZhbHVlTGlz
dCYsIGNvbnN0IEludFNpemUmIGJveFNpemUsIGNvbnN0IEFuaW1hdGlvbiosIGNvbnN0IFN0cmlu
ZyYgYW5pbWF0aW9uTmFtZSwgZG91YmxlIHRpbWVPZmZzZXQpOworICAgIHZpcnR1YWwgdm9pZCBw
YXVzZUFuaW1hdGlvbihjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGRvdWJsZSB0aW1lT2Zm
c2V0KTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQW5pbWF0aW9uKGNvbnN0IFN0cmluZyYgYW5p
bWF0aW9uTmFtZSk7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNUb0ltYWdlKEltYWdl
Kik7CisgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzVG9NZWRpYShQbGF0Zm9ybUxheWVyKik7
CisgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzVG9DYW52YXMoUGxhdGZvcm1MYXllciopOwor
CisgICAgdmlydHVhbCBib29sIGhhc0NvbnRlbnRzTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX2Nv
bnRlbnRzTGF5ZXI7IH0KKyAgICAKKyAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3Jt
TGF5ZXIoKSBjb25zdDsKKworICAgIHZpcnR1YWwgdm9pZCBzZXREZWJ1Z0JhY2tncm91bmRDb2xv
cihjb25zdCBDb2xvciYpOworICAgIHZpcnR1YWwgdm9pZCBzZXREZWJ1Z0JvcmRlcihjb25zdCBD
b2xvciYsIGZsb2F0IGJvcmRlcldpZHRoKTsKKworICAgIHZpcnR1YWwgdm9pZCBkaWREaXNwbGF5
KFBsYXRmb3JtTGF5ZXIqKTsKKworICAgIHZvaWQgcmVjdXJzaXZlQ29tbWl0Q2hhbmdlcygpOwor
CisgICAgdmlydHVhbCB2b2lkIHN5bmNDb21wb3NpdGluZ1N0YXRlKCk7CisgICAgdmlydHVhbCB2
b2lkIHN5bmNDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSgpOworCisgICAgLy8gU2hv
dWxkIG9ubHkgYmUgY2FsbGVkIGJ5IGFuaW1hdGlvbkRpZFN0YXJ0OiBjYWxsYmFjaworICAgIHZv
aWQgYW5pbWF0aW9uRGlkU3RhcnQoQ0FBbmltYXRpb24qKTsKKyAgICAKK3Byb3RlY3RlZDoKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0T3BhY2l0eUludGVybmFsKGZsb2F0KTsKKworcHJpdmF0ZToKKyAg
ICB2b2lkIHVwZGF0ZU9wYWNpdHlPbkxheWVyKCk7CisKKyAgICBDQUxheWVyKiBwcmltYXJ5TGF5
ZXIoKSBjb25zdCB7IHJldHVybiBtX3N0cnVjdHVyYWxMYXllci5nZXQoKSA/IG1fc3RydWN0dXJh
bExheWVyLmdldCgpIDogbV9sYXllci5nZXQoKTsgfQorICAgIENBTGF5ZXIqIGhvc3RMYXllckZv
clN1YmxheWVycygpIGNvbnN0OworICAgIENBTGF5ZXIqIGxheWVyRm9yU3VwZXJsYXllcigpIGNv
bnN0OworICAgIENBTGF5ZXIqIGFuaW1hdGVkTGF5ZXIoQW5pbWF0ZWRQcm9wZXJ0eUlEKSBjb25z
dDsKKworICAgIHR5cGVkZWYgU3RyaW5nIENsb25lSUQ7IC8vIElkZW50aWZpZXIgZm9yIGEgZ2l2
ZW4gY2xvbmUsIGJhc2VkIG9uIG9yaWdpbmFsL3JlcGxpY2EgYnJhbmNoaW5nIGRvd24gdGhlIHRy
ZWUuCisgICAgc3RhdGljIGJvb2wgaXNSZXBsaWNhdGVkUm9vdENsb25lKGNvbnN0IENsb25lSUQm
IGNsb25lSUQpIHsgcmV0dXJuIGNsb25lSURbMFVdICYgMTsgfQorCisgICAgdHlwZWRlZiBIYXNo
TWFwPENsb25lSUQsIFJldGFpblB0cjxDQUxheWVyPiA+IExheWVyTWFwOworICAgIExheWVyTWFw
KiBwcmltYXJ5TGF5ZXJDbG9uZXMoKSBjb25zdCB7IHJldHVybiBtX3N0cnVjdHVyYWxMYXllci5n
ZXQoKSA/IG1fc3RydWN0dXJhbExheWVyQ2xvbmVzLmdldCgpIDogbV9sYXllckNsb25lcy5nZXQo
KTsgfQorICAgIExheWVyTWFwKiBhbmltYXRlZExheWVyQ2xvbmVzKEFuaW1hdGVkUHJvcGVydHlJ
RCkgY29uc3Q7CisKKyAgICBib29sIGNyZWF0ZUFuaW1hdGlvbkZyb21LZXlmcmFtZXMoY29uc3Qg
S2V5ZnJhbWVWYWx1ZUxpc3QmLCBjb25zdCBBbmltYXRpb24qLCBjb25zdCBTdHJpbmcmIGFuaW1h
dGlvbk5hbWUsIGRvdWJsZSB0aW1lT2Zmc2V0KTsKKyAgICBib29sIGNyZWF0ZVRyYW5zZm9ybUFu
aW1hdGlvbnNGcm9tS2V5ZnJhbWVzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiwgY29uc3QgQW5p
bWF0aW9uKiwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBkb3VibGUgdGltZU9mZnNldCwg
Y29uc3QgSW50U2l6ZSYgYm94U2l6ZSk7CisKKyAgICAvLyBSZXR1cm4gYXV0b3JlbGVhc2VkIGFu
aW1hdGlvbiAodXNlIFJldGFpblB0cj8pCisgICAgQ0FCYXNpY0FuaW1hdGlvbiogY3JlYXRlQmFz
aWNBbmltYXRpb24oY29uc3QgQW5pbWF0aW9uKiwgQW5pbWF0ZWRQcm9wZXJ0eUlELCBib29sIGFk
ZGl0aXZlKTsKKyAgICBDQUtleWZyYW1lQW5pbWF0aW9uKiBjcmVhdGVLZXlmcmFtZUFuaW1hdGlv
bihjb25zdCBBbmltYXRpb24qLCBBbmltYXRlZFByb3BlcnR5SUQsIGJvb2wgYWRkaXRpdmUpOwor
ICAgIHZvaWQgc2V0dXBBbmltYXRpb24oQ0FQcm9wZXJ0eUFuaW1hdGlvbiosIGNvbnN0IEFuaW1h
dGlvbiosIGJvb2wgYWRkaXRpdmUpOworICAgIAorICAgIENBTWVkaWFUaW1pbmdGdW5jdGlvbiog
dGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShjb25zdCBBbmltYXRpb25WYWx1ZSosIGNv
bnN0IEFuaW1hdGlvbiopOworICAgIAorICAgIGJvb2wgc2V0QW5pbWF0aW9uRW5kcG9pbnRzKGNv
bnN0IEtleWZyYW1lVmFsdWVMaXN0JiwgY29uc3QgQW5pbWF0aW9uKiwgQ0FCYXNpY0FuaW1hdGlv
biopOworICAgIGJvb2wgc2V0QW5pbWF0aW9uS2V5ZnJhbWVzKGNvbnN0IEtleWZyYW1lVmFsdWVM
aXN0JiwgY29uc3QgQW5pbWF0aW9uKiwgQ0FLZXlmcmFtZUFuaW1hdGlvbiopOworCisgICAgYm9v
bCBzZXRUcmFuc2Zvcm1BbmltYXRpb25FbmRwb2ludHMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3Qm
LCBjb25zdCBBbmltYXRpb24qLCBDQUJhc2ljQW5pbWF0aW9uKiwgaW50IGZ1bmN0aW9uSW5kZXgs
IFRyYW5zZm9ybU9wZXJhdGlvbjo6T3BlcmF0aW9uVHlwZSwgYm9vbCBpc01hdHJpeEFuaW1hdGlv
biwgY29uc3QgSW50U2l6ZSYgYm94U2l6ZSk7CisgICAgYm9vbCBzZXRUcmFuc2Zvcm1BbmltYXRp
b25LZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmLCBjb25zdCBBbmltYXRpb24qLCBD
QUtleWZyYW1lQW5pbWF0aW9uKiwgaW50IGZ1bmN0aW9uSW5kZXgsIFRyYW5zZm9ybU9wZXJhdGlv
bjo6T3BlcmF0aW9uVHlwZSwgYm9vbCBpc01hdHJpeEFuaW1hdGlvbiwgY29uc3QgSW50U2l6ZSYg
Ym94U2l6ZSk7CisgICAgCisgICAgYm9vbCBhbmltYXRpb25Jc1J1bm5pbmcoY29uc3QgU3RyaW5n
JiBhbmltYXRpb25OYW1lKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fcnVubmluZ0Fu
aW1hdGlvbnMuZmluZChhbmltYXRpb25OYW1lKSAhPSBtX3J1bm5pbmdBbmltYXRpb25zLmVuZCgp
OworICAgIH0KKworICAgIHZvaWQgY29tbWl0TGF5ZXJDaGFuZ2VzQmVmb3JlU3VibGF5ZXJzKCk7
CisgICAgdm9pZCBjb21taXRMYXllckNoYW5nZXNBZnRlclN1YmxheWVycygpOworCisgICAgRmxv
YXRTaXplIGNvbnN0cmFpbmVkU2l6ZSgpIGNvbnN0OworCisgICAgYm9vbCByZXF1aXJlc1RpbGVk
TGF5ZXIoY29uc3QgRmxvYXRTaXplJikgY29uc3Q7CisgICAgdm9pZCBzd2FwRnJvbU9yVG9UaWxl
ZExheWVyKGJvb2wgdXNlVGlsZWRMYXllcik7CisKKyAgICBDb21wb3NpdGluZ0Nvb3JkaW5hdGVz
T3JpZW50YXRpb24gZGVmYXVsdENvbnRlbnRzT3JpZW50YXRpb24oKSBjb25zdDsKKyAgICB2b2lk
IHVwZGF0ZUNvbnRlbnRzVHJhbnNmb3JtKCk7CisgICAgCisgICAgdm9pZCBzZXR1cENvbnRlbnRz
TGF5ZXIoQ0FMYXllciopOworICAgIENBTGF5ZXIqIGNvbnRlbnRzTGF5ZXIoKSBjb25zdCB7IHJl
dHVybiBtX2NvbnRlbnRzTGF5ZXIuZ2V0KCk7IH0KKworICAgIHZpcnR1YWwgdm9pZCBzZXRSZXBs
aWNhdGVkQnlMYXllcihHcmFwaGljc0xheWVyKik7CisKKyAgICAvLyBVc2VkIHRvIHRyYWNrIHRo
ZSBwYXRoIGRvd24gdGhlIHRyZWUgZm9yIHJlcGxpY2EgbGF5ZXJzLgorICAgIHN0cnVjdCBSZXBs
aWNhU3RhdGUgeworICAgICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IG1heFJlcGxpY2FEZXB0aCA9
IDE2OworICAgICAgICBlbnVtIFJlcGxpY2FCcmFuY2hUeXBlIHsgQ2hpbGRCcmFuY2ggPSAwLCBS
ZXBsaWNhQnJhbmNoID0gMSB9OworICAgICAgICBSZXBsaWNhU3RhdGUoUmVwbGljYUJyYW5jaFR5
cGUgZmlyc3RCcmFuY2gpCisgICAgICAgICAgICA6IG1fcmVwbGljYURlcHRoKDApCisgICAgICAg
IHsKKyAgICAgICAgICAgIHB1c2goZmlyc3RCcmFuY2gpOworICAgICAgICB9CisgICAgICAgIAor
ICAgICAgICAvLyBDYWxsZWQgYXMgd2Ugd2FsayBkb3duIHRoZSB0cmVlIHRvIGJ1aWxkIHJlcGxp
Y2FzLgorICAgICAgICB2b2lkIHB1c2goUmVwbGljYUJyYW5jaFR5cGUgYnJhbmNoVHlwZSkKKyAg
ICAgICAgeworICAgICAgICAgICAgbV9yZXBsaWNhQnJhbmNoZXMuYXBwZW5kKGJyYW5jaFR5cGUp
OworICAgICAgICAgICAgaWYgKGJyYW5jaFR5cGUgPT0gUmVwbGljYUJyYW5jaCkKKyAgICAgICAg
ICAgICAgICArK21fcmVwbGljYURlcHRoOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB2
b2lkIHNldEJyYW5jaFR5cGUoUmVwbGljYUJyYW5jaFR5cGUgYnJhbmNoVHlwZSkKKyAgICAgICAg
eworICAgICAgICAgICAgQVNTRVJUKCFtX3JlcGxpY2FCcmFuY2hlcy5pc0VtcHR5KCkpOworCisg
ICAgICAgICAgICBpZiAobV9yZXBsaWNhQnJhbmNoZXMubGFzdCgpICE9IGJyYW5jaFR5cGUpIHsK
KyAgICAgICAgICAgICAgICBpZiAoYnJhbmNoVHlwZSA9PSBSZXBsaWNhQnJhbmNoKQorICAgICAg
ICAgICAgICAgICAgICArK21fcmVwbGljYURlcHRoOworICAgICAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICAgICAgLS1tX3JlcGxpY2FEZXB0aDsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgbV9yZXBsaWNhQnJhbmNoZXMubGFzdCgpID0gYnJhbmNoVHlwZTsKKyAgICAgICAg
fQorCisgICAgICAgIHZvaWQgcG9wKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKG1fcmVw
bGljYUJyYW5jaGVzLmxhc3QoKSA9PSBSZXBsaWNhQnJhbmNoKQorICAgICAgICAgICAgICAgIC0t
bV9yZXBsaWNhRGVwdGg7CisgICAgICAgICAgICBtX3JlcGxpY2FCcmFuY2hlcy5yZW1vdmVMYXN0
KCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHNpemVfdCBkZXB0aCgpIGNvbnN0IHsg
cmV0dXJuIG1fcmVwbGljYUJyYW5jaGVzLnNpemUoKTsgfQorICAgICAgICBzaXplX3QgcmVwbGlj
YURlcHRoKCkgY29uc3QgeyByZXR1cm4gbV9yZXBsaWNhRGVwdGg7IH0KKworICAgICAgICBDbG9u
ZUlEIGNsb25lSUQoKSBjb25zdDsgICAgICAgIAorCisgICAgcHJpdmF0ZToKKyAgICAgICAgVmVj
dG9yPFJlcGxpY2FCcmFuY2hUeXBlPiBtX3JlcGxpY2FCcmFuY2hlczsKKyAgICAgICAgc2l6ZV90
IG1fcmVwbGljYURlcHRoOworICAgIH07CisgICAgQ0FMYXllciAqcmVwbGljYXRlZExheWVyUm9v
dChSZXBsaWNhU3RhdGUmKTsKKworICAgIGVudW0gQ2xvbmVMZXZlbCB7IFJvb3RDbG9uZUxldmVs
LCBJbnRlcm1lZGlhdGVDbG9uZUxldmVsIH07CisgICAgQ0FMYXllciAqZmV0Y2hDbG9uZUxheWVy
cyhHcmFwaGljc0xheWVyKiByZXBsaWNhUm9vdCwgUmVwbGljYVN0YXRlJiwgQ2xvbmVMZXZlbCk7
CisgICAgCisgICAgQ0FMYXllciAqY2xvbmVMYXllcihDQUxheWVyICosIENsb25lTGV2ZWwpOwor
ICAgIENBTGF5ZXIgKmZpbmRPck1ha2VDbG9uZShDbG9uZUlELCBDQUxheWVyICosIExheWVyTWFw
KiwgQ2xvbmVMZXZlbCk7CisKKyAgICB2b2lkIGVuc3VyZUNsb25lTGF5ZXJzKENsb25lSUQgaW5k
ZXgsIENBTGF5ZXIgKiYgcHJpbWFyeUxheWVyLCBDQUxheWVyIComIHN0cnVjdHVyYWxMYXllciwg
Q0FMYXllciAqJiBjb250ZW50c0xheWVyLCBDbG9uZUxldmVsKTsKKworICAgIGJvb2wgaGFzQ2xv
bmVMYXllcnMoKSBjb25zdCB7IHJldHVybiBtX2xheWVyQ2xvbmVzOyB9CisgICAgdm9pZCByZW1v
dmVDbG9uZUxheWVycygpOworICAgIEZsb2F0UG9pbnQgcG9zaXRpb25Gb3JDbG9uZVJvb3RMYXll
cigpIGNvbnN0OworICAgIAorICAgIHZvaWQgcHJvcGFnYXRlTGF5ZXJDaGFuZ2VUb1JlcGxpY2Fz
KCk7CisgICAgCisgICAgLy8gQWxsIHRoZXNlICJ1cGRhdGUiIG1ldGhvZHMgd2lsbCBiZSBjYWxs
ZWQgaW5zaWRlIGEgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TL0VORF9CTE9DS19PQkpDX0VY
Q0VQVElPTlMgYmxvY2suCisgICAgdm9pZCB1cGRhdGVMYXllck5hbWVzKCk7CisgICAgdm9pZCB1
cGRhdGVTdWJsYXllckxpc3QoKTsKKyAgICB2b2lkIHVwZGF0ZUxheWVyUG9zaXRpb24oKTsKKyAg
ICB2b2lkIHVwZGF0ZUxheWVyU2l6ZSgpOworICAgIHZvaWQgdXBkYXRlQW5jaG9yUG9pbnQoKTsK
KyAgICB2b2lkIHVwZGF0ZVRyYW5zZm9ybSgpOworICAgIHZvaWQgdXBkYXRlQ2hpbGRyZW5UcmFu
c2Zvcm0oKTsKKyAgICB2b2lkIHVwZGF0ZU1hc2tzVG9Cb3VuZHMoKTsKKyAgICB2b2lkIHVwZGF0
ZUNvbnRlbnRzT3BhcXVlKCk7CisgICAgdm9pZCB1cGRhdGVCYWNrZmFjZVZpc2liaWxpdHkoKTsK
KyAgICB2b2lkIHVwZGF0ZVN0cnVjdHVyYWxMYXllcigpOworICAgIHZvaWQgdXBkYXRlTGF5ZXJE
cmF3c0NvbnRlbnQoKTsKKyAgICB2b2lkIHVwZGF0ZUxheWVyQmFja2dyb3VuZENvbG9yKCk7CisK
KyAgICB2b2lkIHVwZGF0ZUNvbnRlbnRzSW1hZ2UoKTsKKyAgICB2b2lkIHVwZGF0ZUNvbnRlbnRz
TWVkaWFMYXllcigpOworICAgIHZvaWQgdXBkYXRlQ29udGVudHNDYW52YXNMYXllcigpOworICAg
IHZvaWQgdXBkYXRlQ29udGVudHNSZWN0KCk7CisgICAgdm9pZCB1cGRhdGVNYXNrTGF5ZXIoKTsK
KyAgICB2b2lkIHVwZGF0ZVJlcGxpY2F0ZWRMYXllcnMoKTsKKworICAgIHZvaWQgdXBkYXRlTGF5
ZXJBbmltYXRpb25zKCk7CisgICAgdm9pZCB1cGRhdGVDb250ZW50c05lZWRzRGlzcGxheSgpOwor
ICAgIAorICAgIGVudW0gU3RydWN0dXJhbExheWVyUHVycG9zZSB7CisgICAgICAgIE5vU3RydWN0
dXJhbExheWVyID0gMCwKKyAgICAgICAgU3RydWN0dXJhbExheWVyRm9yUHJlc2VydmVzM0QsCisg
ICAgICAgIFN0cnVjdHVyYWxMYXllckZvclJlcGxpY2FGbGF0dGVuaW5nCisgICAgfTsKKyAgICB2
b2lkIGVuc3VyZVN0cnVjdHVyYWxMYXllcihTdHJ1Y3R1cmFsTGF5ZXJQdXJwb3NlKTsKKyAgICBT
dHJ1Y3R1cmFsTGF5ZXJQdXJwb3NlIHN0cnVjdHVyYWxMYXllclB1cnBvc2UoKSBjb25zdDsKKwor
ICAgIHZvaWQgc2V0Q0FBbmltYXRpb25PbkxheWVyKENBUHJvcGVydHlBbmltYXRpb24qLCBBbmlt
YXRlZFByb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSwgaW50IGluZGV4LCBk
b3VibGUgdGltZU9mZnNldCk7CisgICAgYm9vbCByZW1vdmVDQUFuaW1hdGlvbkZyb21MYXllcihB
bmltYXRlZFByb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSwgaW50IGluZGV4
KTsKKyAgICB2b2lkIHBhdXNlQ0FBbmltYXRpb25PbkxheWVyKEFuaW1hdGVkUHJvcGVydHlJRCwg
Y29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBpbnQgaW5kZXgsIGRvdWJsZSB0aW1lT2Zmc2V0
KTsKKworICAgIGVudW0gTW92ZU9yQ29weSB7IE1vdmUsIENvcHkgfTsKKyAgICBzdGF0aWMgdm9p
ZCBtb3ZlT3JDb3B5TGF5ZXJBbmltYXRpb24oTW92ZU9yQ29weSwgY29uc3QgU3RyaW5nJiBhbmlt
YXRpb25JZGVudGlmaWVyLCBDQUxheWVyICpmcm9tTGF5ZXIsIENBTGF5ZXIgKnRvTGF5ZXIpOwor
ICAgIHZvaWQgbW92ZU9yQ29weUFuaW1hdGlvbnNGb3JQcm9wZXJ0eShNb3ZlT3JDb3B5LCBBbmlt
YXRlZFByb3BlcnR5SUQsIENBTGF5ZXIgKiBmcm9tTGF5ZXIsIENBTGF5ZXIgKiB0b0xheWVyKTsK
KyAgICAKKyAgICBlbnVtIExheWVyQ2hhbmdlIHsKKyAgICAgICAgTm9DaGFuZ2UgPSAwLAorICAg
ICAgICBOYW1lQ2hhbmdlZCA9IDEgPDwgMSwKKyAgICAgICAgQ2hpbGRyZW5DaGFuZ2VkID0gMSA8
PCAyLCAgIC8vIGFsc28gdXNlZCBmb3IgY29udGVudCBsYXllciwgYW5kIHByZXNlcnZlcy0zZCwg
YW5kIHNpemUgaWYgdGlsaW5nIGNoYW5nZXM/CisgICAgICAgIFBvc2l0aW9uQ2hhbmdlZCA9IDEg
PDwgMywKKyAgICAgICAgQW5jaG9yUG9pbnRDaGFuZ2VkID0gMSA8PCA0LAorICAgICAgICBTaXpl
Q2hhbmdlZCA9IDEgPDwgNSwKKyAgICAgICAgVHJhbnNmb3JtQ2hhbmdlZCA9IDEgPDwgNiwKKyAg
ICAgICAgQ2hpbGRyZW5UcmFuc2Zvcm1DaGFuZ2VkID0gMSA8PCA3LAorICAgICAgICBQcmVzZXJ2
ZXMzRENoYW5nZWQgPSAxIDw8IDgsCisgICAgICAgIE1hc2tzVG9Cb3VuZHNDaGFuZ2VkID0gMSA8
PCA5LAorICAgICAgICBEcmF3c0NvbnRlbnRDaGFuZ2VkID0gMSA8PCAxMCwgIC8vIG5lZWQgdGhp
cz8KKyAgICAgICAgQmFja2dyb3VuZENvbG9yQ2hhbmdlZCA9IDEgPDwgMTEsCisgICAgICAgIENv
bnRlbnRzT3BhcXVlQ2hhbmdlZCA9IDEgPDwgMTIsCisgICAgICAgIEJhY2tmYWNlVmlzaWJpbGl0
eUNoYW5nZWQgPSAxIDw8IDEzLAorICAgICAgICBPcGFjaXR5Q2hhbmdlZCA9IDEgPDwgMTQsCisg
ICAgICAgIEFuaW1hdGlvbkNoYW5nZWQgPSAxIDw8IDE1LAorICAgICAgICBEaXJ0eVJlY3RzQ2hh
bmdlZCA9IDEgPDwgMTYsCisgICAgICAgIENvbnRlbnRzSW1hZ2VDaGFuZ2VkID0gMSA8PCAxNywK
KyAgICAgICAgQ29udGVudHNNZWRpYUxheWVyQ2hhbmdlZCA9IDEgPDwgMTgsCisgICAgICAgIENv
bnRlbnRzQ2FudmFzTGF5ZXJDaGFuZ2VkID0gMSA8PCAxOSwKKyAgICAgICAgQ29udGVudHNSZWN0
Q2hhbmdlZCA9IDEgPDwgMjAsCisgICAgICAgIE1hc2tMYXllckNoYW5nZWQgPSAxIDw8IDIxLAor
ICAgICAgICBSZXBsaWNhdGVkTGF5ZXJDaGFuZ2VkID0gMSA8PCAyMiwKKyAgICAgICAgQ29udGVu
dHNOZWVkc0Rpc3BsYXkgPSAxIDw8IDIzCisgICAgfTsKKyAgICB0eXBlZGVmIHVuc2lnbmVkIExh
eWVyQ2hhbmdlRmxhZ3M7CisgICAgdm9pZCBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoTGF5ZXJD
aGFuZ2VGbGFncyBmbGFncyk7CisgICAgdm9pZCBub3RlU3VibGF5ZXJzQ2hhbmdlZCgpOworCisg
ICAgdm9pZCByZXBhaW50TGF5ZXJEaXJ0eVJlY3RzKCk7CisKKyAgICBSZXRhaW5QdHI8V2ViTGF5
ZXI+IG1fbGF5ZXI7IC8vIFRoZSBtYWluIGxheWVyCisgICAgUmV0YWluUHRyPENBTGF5ZXI+IG1f
c3RydWN0dXJhbExheWVyOyAvLyBBIGxheWVyIHVzZWQgZm9yIHN0cnVjdHVyYWwgcmVhc29ucywg
bGlrZSBwcmVzZXJ2ZXMtM2Qgb3IgcmVwbGljYS1mbGF0dGVuaW5nLiBJcyB0aGUgcGFyZW50IG9m
IG1fbGF5ZXIuCisgICAgUmV0YWluUHRyPENBTGF5ZXI+IG1fY29udGVudHNMYXllcjsgLy8gQSBs
YXllciB1c2VkIGZvciBpbm5lciBjb250ZW50LCBsaWtlIGltYWdlIGFuZCB2aWRlbworCisgICAg
Ly8gUmVmZXJlbmNlcyB0byBjbG9uZXMgb2Ygb3VyIGxheWVycywgZm9yIHJlcGxpY2F0ZWQgbGF5
ZXJzLgorICAgIE93blB0cjxMYXllck1hcD4gbV9sYXllckNsb25lczsKKyAgICBPd25QdHI8TGF5
ZXJNYXA+IG1fc3RydWN0dXJhbExheWVyQ2xvbmVzOworICAgIE93blB0cjxMYXllck1hcD4gbV9j
b250ZW50c0xheWVyQ2xvbmVzOworICAgIAorICAgIGVudW0gQ29udGVudHNMYXllclB1cnBvc2Ug
eworICAgICAgICBOb0NvbnRlbnRzTGF5ZXIgPSAwLAorICAgICAgICBDb250ZW50c0xheWVyRm9y
SW1hZ2UsCisgICAgICAgIENvbnRlbnRzTGF5ZXJGb3JNZWRpYSwKKyAgICAgICAgQ29udGVudHNM
YXllckZvckNhbnZhcworICAgIH07CisgICAgCisgICAgQ29udGVudHNMYXllclB1cnBvc2UgbV9j
b250ZW50c0xheWVyUHVycG9zZTsKKyAgICBib29sIG1fY29udGVudHNMYXllckhhc0JhY2tncm91
bmRDb2xvciA6IDE7CisKKyAgICBSZXRhaW5QdHI8V2ViQW5pbWF0aW9uRGVsZWdhdGU+IG1fYW5p
bWF0aW9uRGVsZWdhdGU7CisKKyAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gbV91bmNvcnJlY3Rl
ZENvbnRlbnRzSW1hZ2U7CisgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IG1fcGVuZGluZ0NvbnRl
bnRzSW1hZ2U7CisgICAgCisgICAgLy8gVGhpcyByZXByZXNlbnRzIHRoZSBhbmltYXRpb24gb2Yg
YSBzaW5nbGUgcHJvcGVydHkuIFRoZXJlIG1heSBiZSBtdWx0aXBsZSB0cmFuc2Zvcm0gYW5pbWF0
aW9ucyBmb3IKKyAgICAvLyBhIHNpbmdsZSB0cmFuc2l0aW9uIG9yIGtleWZyYW1lIGFuaW1hdGlv
biwgc28gaW5kZXggaXMgdXNlZCB0byBkaXN0aW5ndWlzaCB0aGVzZS4KKyAgICBzdHJ1Y3QgTGF5
ZXJQcm9wZXJ0eUFuaW1hdGlvbiB7CisgICAgICAgIExheWVyUHJvcGVydHlBbmltYXRpb24oQ0FQ
cm9wZXJ0eUFuaW1hdGlvbiogY2FBbmltYXRpb24sIGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFt
ZSwgQW5pbWF0ZWRQcm9wZXJ0eUlEIHByb3BlcnR5LCBpbnQgaW5kZXgsIGRvdWJsZSB0aW1lT2Zm
c2V0KQorICAgICAgICA6IG1fYW5pbWF0aW9uKGNhQW5pbWF0aW9uKQorICAgICAgICAsIG1fbmFt
ZShhbmltYXRpb25OYW1lKQorICAgICAgICAsIG1fcHJvcGVydHkocHJvcGVydHkpCisgICAgICAg
ICwgbV9pbmRleChpbmRleCkKKyAgICAgICAgLCBtX3RpbWVPZmZzZXQodGltZU9mZnNldCkKKyAg
ICAgICAgeyB9CisKKyAgICAgICAgUmV0YWluUHRyPENBUHJvcGVydHlBbmltYXRpb24qPiBtX2Fu
aW1hdGlvbjsKKyAgICAgICAgU3RyaW5nIG1fbmFtZTsKKyAgICAgICAgQW5pbWF0ZWRQcm9wZXJ0
eUlEIG1fcHJvcGVydHk7CisgICAgICAgIGludCBtX2luZGV4OworICAgICAgICBkb3VibGUgbV90
aW1lT2Zmc2V0OworICAgIH07CisgICAgCisgICAgLy8gVW5jb21taXR0ZWQgdHJhbnNpdGlvbnMg
YW5kIGFuaW1hdGlvbnMuCisgICAgVmVjdG9yPExheWVyUHJvcGVydHlBbmltYXRpb24+IG1fdW5j
b21pdHRlZEFuaW1hdGlvbnM7CisgICAgCisgICAgZW51bSBBY3Rpb24geyBSZW1vdmUsIFBhdXNl
IH07CisgICAgc3RydWN0IEFuaW1hdGlvblByb2Nlc3NpbmdBY3Rpb24geworICAgICAgICBBbmlt
YXRpb25Qcm9jZXNzaW5nQWN0aW9uKEFjdGlvbiBhY3Rpb24gPSBSZW1vdmUsIGRvdWJsZSB0aW1l
T2Zmc2V0ID0gMCkKKyAgICAgICAgICAgIDogYWN0aW9uKGFjdGlvbikKKyAgICAgICAgICAgICwg
dGltZU9mZnNldCh0aW1lT2Zmc2V0KQorICAgICAgICB7CisgICAgICAgIH0KKyAgICAgICAgQWN0
aW9uIGFjdGlvbjsKKyAgICAgICAgZG91YmxlIHRpbWVPZmZzZXQ7IC8vIG9ubHkgdXNlZCBmb3Ig
cGF1c2UKKyAgICB9OworICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIEFuaW1hdGlvblByb2Nl
c3NpbmdBY3Rpb24+IEFuaW1hdGlvbnNUb1Byb2Nlc3NNYXA7CisgICAgQW5pbWF0aW9uc1RvUHJv
Y2Vzc01hcCBtX2FuaW1hdGlvbnNUb1Byb2Nlc3M7CisKKyAgICAvLyBNYXAgb2YgYW5pbWF0aW9u
IG5hbWVzIHRvIHRoZWlyIGFzc29jaWF0ZWQgbGlzdHMgb2YgcHJvcGVydHkgYW5pbWF0aW9ucywg
c28gd2UgY2FuIHJlbW92ZS9wYXVzZSB0aGVtLgorICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcs
IFZlY3RvcjxMYXllclByb3BlcnR5QW5pbWF0aW9uPiA+IEFuaW1hdGlvbnNNYXA7CisgICAgQW5p
bWF0aW9uc01hcCBtX3J1bm5pbmdBbmltYXRpb25zOworCisgICAgVmVjdG9yPEZsb2F0UmVjdD4g
bV9kaXJ0eVJlY3RzOworICAgIAorICAgIExheWVyQ2hhbmdlRmxhZ3MgbV91bmNvbW1pdHRlZENo
YW5nZXM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKworI2VuZGlmIC8vIFVTRShB
Q0NFTEVSQVRFRF9DT01QT1NJVElORykKKworI2VuZGlmIC8vIEdyYXBoaWNzTGF5ZXJDQV9oCklu
ZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0xheWVyTWFjLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NMYXllck1h
Yy5oCShyZXZpc2lvbiA3MTU2NykKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dy
YXBoaWNzTGF5ZXJNYWMuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsOCArMjMsOCBAQAogICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCiAgKi8KIAotI2lmbmRlZiBHcmFwaGljc0xheWVyQ0FfaAotI2RlZmluZSBHcmFw
aGljc0xheWVyQ0FfaAorI2lmbmRlZiBHcmFwaGljc0xheWVyTWFjX2gKKyNkZWZpbmUgR3JhcGhp
Y3NMYXllck1hY19oCiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAKQEAgLTQz
LDExICs0MywxMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEdyYXBoaWNzTGF5
ZXJDQSA6IHB1YmxpYyBHcmFwaGljc0xheWVyIHsKK2NsYXNzIEdyYXBoaWNzTGF5ZXJNYWMgOiBw
dWJsaWMgR3JhcGhpY3NMYXllciB7CiBwdWJsaWM6CiAKLSAgICBHcmFwaGljc0xheWVyQ0EoR3Jh
cGhpY3NMYXllckNsaWVudCopOwotICAgIHZpcnR1YWwgfkdyYXBoaWNzTGF5ZXJDQSgpOworICAg
IEdyYXBoaWNzTGF5ZXJNYWMoR3JhcGhpY3NMYXllckNsaWVudCopOworICAgIHZpcnR1YWwgfkdy
YXBoaWNzTGF5ZXJNYWMoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXROYW1lKGNvbnN0IFN0cmlu
ZyYpOwogCkBAIC0zODUsNCArMzg1LDQgQEAgcHJpdmF0ZToKIAogI2VuZGlmIC8vIFVTRShBQ0NF
TEVSQVRFRF9DT01QT1NJVElORykKIAotI2VuZGlmIC8vIEdyYXBoaWNzTGF5ZXJDQV9oCisjZW5k
aWYgLy8gR3JhcGhpY3NMYXllck1hY19oCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9HcmFwaGljc0xheWVyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0dyYXBoaWNzTGF5ZXJNYWMubW0JKHJldmlzaW9uIDcxNTY3KQkoZnJvbSBX
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0xheWVyQ0EubW06NzE1NjcpCisr
KyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0xheWVyTWFjLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMjUxNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisKKyNpZiBV
U0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisKKyNpbXBvcnQgIkdyYXBoaWNzTGF5ZXJDQS5o
IgorCisjaW1wb3J0ICJBbmltYXRpb24uaCIKKyNpbXBvcnQgIkJsb2NrRXhjZXB0aW9ucy5oIgor
I2ltcG9ydCAiRmxvYXRDb252ZXJzaW9uLmgiCisjaW1wb3J0ICJGbG9hdFJlY3QuaCIKKyNpbXBv
cnQgIkltYWdlLmgiCisjaW1wb3J0ICJQbGF0Zm9ybVN0cmluZy5oIgorI2ltcG9ydCA8UXVhcnR6
Q29yZS9RdWFydHpDb3JlLmg+CisjaW1wb3J0ICJSb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaCIK
KyNpbXBvcnQgIlNjYWxlVHJhbnNmb3JtT3BlcmF0aW9uLmgiCisjaW1wb3J0ICJTeXN0ZW1UaW1l
LmgiCisjaW1wb3J0ICJUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaCIKKyNpbXBvcnQgIldl
YkxheWVyLmgiCisjaW1wb3J0ICJXZWJUaWxlZExheWVyLmgiCisjaW1wb3J0IDxsaW1pdHMuaD4K
KyNpbXBvcnQgPG9iamMvb2JqYy1hdXRvLmg+CisjaW1wb3J0IDx3dGYvQ3VycmVudFRpbWUuaD4K
KyNpbXBvcnQgPHd0Zi9VbnVzZWRQYXJhbS5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgor
I2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KKwordXNpbmcgbmFtZXNwYWNl
IHN0ZDsKKworI2RlZmluZSBIQVZFX01PREVSTl9RVUFSVFpDT1JFICghZGVmaW5lZChCVUlMRElO
R19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkpCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworc3RhdGljIE5TU3RyaW5nICogY29uc3QgV2ViS2l0QW5pbWF0aW9uQmVn
aW5UaW1lU2V0S2V5ID0gQCJXZWJLaXRBbmltYXRpb25CZWdpblRpbWVTZXQiOworCisvLyBUaGUg
dGhyZXNob2xkIHdpZHRoIG9yIGhlaWdodCBhYm92ZSB3aGljaCBhIHRpbGVkIGxheWVyIHdpbGwg
YmUgdXNlZC4gVGhpcyBzaG91bGQgYmUKKy8vIGxhcmdlIGVub3VnaCB0byBhdm9pZCB0aWxlZCBs
YXllcnMgZm9yIG1vc3QgR3JhcGhpY3NMYXllcnMsIGJ1dCBsZXNzIHRoYW4gdGhlIE9wZW5HTAor
Ly8gdGV4dHVyZSBzaXplIGxpbWl0IG9uIGFsbCBzdXBwb3J0ZWQgaGFyZHdhcmUuCitzdGF0aWMg
Y29uc3QgaW50IGNNYXhQaXhlbERpbWVuc2lvbiA9IDIwMDA7CisKKy8vIFRoZSB3aWR0aCBhbmQg
aGVpZ2h0IG9mIGEgc2luZ2xlIHRpbGUgaW4gYSB0aWxlZCBsYXllci4gU2hvdWxkIGJlIGxhcmdl
IGVub3VnaCB0bworLy8gYXZvaWQgbG90cyBvZiBzbWFsbCB0aWxlcyAoYW5kIHRoZXJlZm9yZSBs
b3RzIG9mIGRyYXdpbmcgY2FsbGJhY2tzKSwgYnV0IHNtYWxsIGVub3VnaAorLy8gdG8ga2VlcCB0
aGUgb3ZlcmFsbCB0aWxlIGNvc3QgbG93Lgorc3RhdGljIGNvbnN0IGludCBjVGlsZWRMYXllclRp
bGVTaXplID0gNTEyOworCisvLyBJZiB3ZSBzZW5kIGEgZHVyYXRpb24gb2YgMCB0byBDQSwgdGhl
biBpdCB3aWxsIHVzZSB0aGUgZGVmYXVsdCBkdXJhdGlvbgorLy8gb2YgMjUwbXMuIFNvIHNlbmQg
YSB2ZXJ5IHNtYWxsIHZhbHVlIGluc3RlYWQuCitzdGF0aWMgY29uc3QgZmxvYXQgY0FuaW1hdGlv
bkFsbW9zdFplcm9EdXJhdGlvbiA9IDFlLTNmOworCisvLyBDQUN1cnJlbnRNZWRpYVRpbWUoKSBp
cyBhIHRpbWUgc2luY2UgYm9vdC4gVGhlc2UgbWV0aG9kcyBjb252ZXJ0IGJldHdlZW4gdGhhdCBh
bmQKKy8vIFdlYkNvcmUgdGltZSwgd2hpY2ggaXMgc3lzdGVtIHRpbWUgKFVUQykuCitzdGF0aWMg
Q0ZUaW1lSW50ZXJ2YWwgY3VycmVudFRpbWVUb01lZGlhVGltZShkb3VibGUgdCkKK3sKKyAgICBy
ZXR1cm4gQ0FDdXJyZW50TWVkaWFUaW1lKCkgKyB0IC0gV1RGOjpjdXJyZW50VGltZSgpOworfQor
CitzdGF0aWMgZG91YmxlIG1lZGlhVGltZVRvQ3VycmVudFRpbWUoQ0ZUaW1lSW50ZXJ2YWwgdCkK
K3sKKyAgICByZXR1cm4gV1RGOjpjdXJyZW50VGltZSgpICsgdCAtIENBQ3VycmVudE1lZGlhVGlt
ZSgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK0BpbnRlcmZhY2UgQ0FMYXllcihQ
cml2YXRlKQorLSAodm9pZClzZXRDb250ZW50c0NoYW5nZWQ7CitAZW5kCisKK0BpbnRlcmZhY2Ug
V2ViQW5pbWF0aW9uRGVsZWdhdGUgOiBOU09iamVjdCB7CisgICAgV2ViQ29yZTo6R3JhcGhpY3NM
YXllckNBKiBtX2dyYXBoaWNzTGF5ZXI7Cit9CisKKy0gKHZvaWQpYW5pbWF0aW9uRGlkU3RhcnQ6
KENBQW5pbWF0aW9uICopYW5pbTsKKy0gKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQSopZ3JhcGhp
Y3NMYXllcjsKKy0gKHZvaWQpc2V0TGF5ZXI6KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQSopZ3Jh
cGhpY3NMYXllcjsKKworQGVuZAorCitAaW1wbGVtZW50YXRpb24gV2ViQW5pbWF0aW9uRGVsZWdh
dGUKKworLSAodm9pZClhbmltYXRpb25EaWRTdGFydDooQ0FBbmltYXRpb24gKilhbmltYXRpb24K
K3sKKyAgICBpZiAobV9ncmFwaGljc0xheWVyKQorICAgICAgICBtX2dyYXBoaWNzTGF5ZXItPmFu
aW1hdGlvbkRpZFN0YXJ0KGFuaW1hdGlvbik7Cit9CisKKy0gKFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXJDQSopZ3JhcGhpY3NMYXllcgoreworICAgIHJldHVybiBtX2dyYXBoaWNzTGF5ZXI7Cit9CisK
Ky0gKHZvaWQpc2V0TGF5ZXI6KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQSopZ3JhcGhpY3NMYXll
cgoreworICAgIG1fZ3JhcGhpY3NMYXllciA9IGdyYXBoaWNzTGF5ZXI7Cit9CisKK0BlbmQKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgaW5saW5lIHZvaWQgY29weVRyYW5zZm9ybShD
QVRyYW5zZm9ybTNEJiB0b1QzRCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHQpCit7Cisg
ICAgdG9UM0QubTExID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCh0Lm0xMSgpKTsKKyAgICB0b1Qz
RC5tMTIgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHQubTEyKCkpOworICAgIHRvVDNELm0xMyA9
IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodC5tMTMoKSk7CisgICAgdG9UM0QubTE0ID0gbmFycm93
UHJlY2lzaW9uVG9GbG9hdCh0Lm0xNCgpKTsKKyAgICB0b1QzRC5tMjEgPSBuYXJyb3dQcmVjaXNp
b25Ub0Zsb2F0KHQubTIxKCkpOworICAgIHRvVDNELm0yMiA9IG5hcnJvd1ByZWNpc2lvblRvRmxv
YXQodC5tMjIoKSk7CisgICAgdG9UM0QubTIzID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCh0Lm0y
MygpKTsKKyAgICB0b1QzRC5tMjQgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHQubTI0KCkpOwor
ICAgIHRvVDNELm0zMSA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodC5tMzEoKSk7CisgICAgdG9U
M0QubTMyID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCh0Lm0zMigpKTsKKyAgICB0b1QzRC5tMzMg
PSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHQubTMzKCkpOworICAgIHRvVDNELm0zNCA9IG5hcnJv
d1ByZWNpc2lvblRvRmxvYXQodC5tMzQoKSk7CisgICAgdG9UM0QubTQxID0gbmFycm93UHJlY2lz
aW9uVG9GbG9hdCh0Lm00MSgpKTsKKyAgICB0b1QzRC5tNDIgPSBuYXJyb3dQcmVjaXNpb25Ub0Zs
b2F0KHQubTQyKCkpOworICAgIHRvVDNELm00MyA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodC5t
NDMoKSk7CisgICAgdG9UM0QubTQ0ID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCh0Lm00NCgpKTsK
K30KKworc3RhdGljIE5TVmFsdWUqIGdldFRyYW5zZm9ybUZ1bmN0aW9uVmFsdWUoY29uc3QgVHJh
bnNmb3JtT3BlcmF0aW9uKiB0cmFuc2Zvcm1PcCwgVHJhbnNmb3JtT3BlcmF0aW9uOjpPcGVyYXRp
b25UeXBlIHRyYW5zZm9ybVR5cGUsIGNvbnN0IEludFNpemUmIHNpemUpCit7CisgICAgc3dpdGNo
ICh0cmFuc2Zvcm1UeXBlKSB7CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpST1RB
VEU6CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpST1RBVEVfWDoKKyAgICAgICAg
Y2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlJPVEFURV9ZOgorICAgICAgICAgICAgcmV0dXJuIFtO
U051bWJlciBudW1iZXJXaXRoRG91YmxlOnRyYW5zZm9ybU9wID8gZGVnMnJhZChzdGF0aWNfY2Fz
dDxjb25zdCBSb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24qPih0cmFuc2Zvcm1PcCktPmFuZ2xlKCkp
IDogMF07CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpTQ0FMRV9YOgorICAgICAg
ICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOnRyYW5zZm9ybU9wID8gc3Rh
dGljX2Nhc3Q8Y29uc3QgU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24qPih0cmFuc2Zvcm1PcCktPngo
KSA6IDFdOworICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0NBTEVfWToKKyAgICAg
ICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTp0cmFuc2Zvcm1PcCA/IHN0
YXRpY19jYXN0PGNvbnN0IFNjYWxlVHJhbnNmb3JtT3BlcmF0aW9uKj4odHJhbnNmb3JtT3ApLT55
KCkgOiAxXTsKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlNDQUxFX1o6CisgICAg
ICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6dHJhbnNmb3JtT3AgPyBz
dGF0aWNfY2FzdDxjb25zdCBTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbio+KHRyYW5zZm9ybU9wKS0+
eigpIDogMV07CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfWDoK
KyAgICAgICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTp0cmFuc2Zvcm1P
cCA/IHN0YXRpY19jYXN0PGNvbnN0IFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbio+KHRyYW5z
Zm9ybU9wKS0+eChzaXplKSA6IDBdOworICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6
VFJBTlNMQVRFX1k6CisgICAgICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhEb3Vi
bGU6dHJhbnNmb3JtT3AgPyBzdGF0aWNfY2FzdDxjb25zdCBUcmFuc2xhdGVUcmFuc2Zvcm1PcGVy
YXRpb24qPih0cmFuc2Zvcm1PcCktPnkoc2l6ZSkgOiAwXTsKKyAgICAgICAgY2FzZSBUcmFuc2Zv
cm1PcGVyYXRpb246OlRSQU5TTEFURV9aOgorICAgICAgICAgICAgcmV0dXJuIFtOU051bWJlciBu
dW1iZXJXaXRoRG91YmxlOnRyYW5zZm9ybU9wID8gc3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNsYXRl
VHJhbnNmb3JtT3BlcmF0aW9uKj4odHJhbnNmb3JtT3ApLT56KHNpemUpIDogMF07CisgICAgICAg
IGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpTQ0FMRToKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1P
cGVyYXRpb246OlNDQUxFXzNEOgorICAgICAgICAgICAgcmV0dXJuIFtOU0FycmF5IGFycmF5V2l0
aE9iamVjdHM6CisgICAgICAgICAgICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aERv
dWJsZTp0cmFuc2Zvcm1PcCA/IHN0YXRpY19jYXN0PGNvbnN0IFNjYWxlVHJhbnNmb3JtT3BlcmF0
aW9uKj4odHJhbnNmb3JtT3ApLT54KCkgOiAxXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFtO
U051bWJlciBudW1iZXJXaXRoRG91YmxlOnRyYW5zZm9ybU9wID8gc3RhdGljX2Nhc3Q8Y29uc3Qg
U2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24qPih0cmFuc2Zvcm1PcCktPnkoKSA6IDFdLAorICAgICAg
ICAgICAgICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6dHJhbnNmb3JtT3Ag
PyBzdGF0aWNfY2FzdDxjb25zdCBTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbio+KHRyYW5zZm9ybU9w
KS0+eigpIDogMV0sCisgICAgICAgICAgICAgICAgICAgICAgICBuaWxdOworICAgICAgICBjYXNl
IFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFOgorICAgICAgICBjYXNlIFRyYW5zZm9ybU9w
ZXJhdGlvbjo6VFJBTlNMQVRFXzNEOgorICAgICAgICAgICAgcmV0dXJuIFtOU0FycmF5IGFycmF5
V2l0aE9iamVjdHM6CisgICAgICAgICAgICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0
aERvdWJsZTp0cmFuc2Zvcm1PcCA/IHN0YXRpY19jYXN0PGNvbnN0IFRyYW5zbGF0ZVRyYW5zZm9y
bU9wZXJhdGlvbio+KHRyYW5zZm9ybU9wKS0+eChzaXplKSA6IDBdLAorICAgICAgICAgICAgICAg
ICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6dHJhbnNmb3JtT3AgPyBzdGF0aWNf
Y2FzdDxjb25zdCBUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24qPih0cmFuc2Zvcm1PcCktPnko
c2l6ZSkgOiAwXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRo
RG91YmxlOnRyYW5zZm9ybU9wID8gc3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNsYXRlVHJhbnNmb3Jt
T3BlcmF0aW9uKj4odHJhbnNmb3JtT3ApLT56KHNpemUpIDogMF0sCisgICAgICAgICAgICAgICAg
ICAgICAgICBuaWxdOworICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0tFV19YOgor
ICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0tFV19ZOgorICAgICAgICBjYXNlIFRy
YW5zZm9ybU9wZXJhdGlvbjo6U0tFVzoKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246
Ok1BVFJJWDoKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlJPVEFURV8zRDoKKyAg
ICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246Ok1BVFJJWF8zRDoKKyAgICAgICAgY2FzZSBU
cmFuc2Zvcm1PcGVyYXRpb246OlBFUlNQRUNUSVZFOgorICAgICAgICBjYXNlIFRyYW5zZm9ybU9w
ZXJhdGlvbjo6SURFTlRJVFk6CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpOT05F
OiB7CisgICAgICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0cmFuc2Zvcm07CisgICAgICAg
ICAgICBpZiAodHJhbnNmb3JtT3ApCisgICAgICAgICAgICAgICAgdHJhbnNmb3JtT3AtPmFwcGx5
KHRyYW5zZm9ybSwgc2l6ZSk7CisgICAgICAgICAgICBDQVRyYW5zZm9ybTNEIGNhVHJhbnNmb3Jt
OworICAgICAgICAgICAgY29weVRyYW5zZm9ybShjYVRyYW5zZm9ybSwgdHJhbnNmb3JtKTsKKyAg
ICAgICAgICAgIHJldHVybiBbTlNWYWx1ZSB2YWx1ZVdpdGhDQVRyYW5zZm9ybTNEOmNhVHJhbnNm
b3JtXTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICByZXR1cm4gMDsKK30KKworI2lmIEhB
VkVfTU9ERVJOX1FVQVJUWkNPUkUKK3N0YXRpYyBOU1N0cmluZyAqZ2V0VmFsdWVGdW5jdGlvbk5h
bWVGb3JUcmFuc2Zvcm1PcGVyYXRpb24oVHJhbnNmb3JtT3BlcmF0aW9uOjpPcGVyYXRpb25UeXBl
IHRyYW5zZm9ybVR5cGUpCit7CisgICAgLy8gVXNlIGxpdGVyYWwgc3RyaW5ncyB0byBhdm9pZCBs
aW5rLXRpbWUgZGVwZW5kZW5jeSBvbiB0aG9zZSBzeW1ib2xzLgorICAgIHN3aXRjaCAodHJhbnNm
b3JtVHlwZSkgeworICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRFX1g6Cisg
ICAgICAgICAgICByZXR1cm4gQCJyb3RhdGVYIjsgLy8ga0NBVmFsdWVGdW5jdGlvblJvdGF0ZVg7
CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpST1RBVEVfWToKKyAgICAgICAgICAg
IHJldHVybiBAInJvdGF0ZVkiOyAvLyBrQ0FWYWx1ZUZ1bmN0aW9uUm90YXRlWTsKKyAgICAgICAg
Y2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlJPVEFURToKKyAgICAgICAgICAgIHJldHVybiBAInJv
dGF0ZVoiOyAvLyBrQ0FWYWx1ZUZ1bmN0aW9uUm90YXRlWjsKKyAgICAgICAgY2FzZSBUcmFuc2Zv
cm1PcGVyYXRpb246OlNDQUxFX1g6CisgICAgICAgICAgICByZXR1cm4gQCJzY2FsZVgiOyAvLyBr
Q0FWYWx1ZUZ1bmN0aW9uU2NhbGVYOworICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6
U0NBTEVfWToKKyAgICAgICAgICAgIHJldHVybiBAInNjYWxlWSI7IC8vIGtDQVZhbHVlRnVuY3Rp
b25TY2FsZVk7CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpTQ0FMRV9aOgorICAg
ICAgICAgICAgcmV0dXJuIEAic2NhbGVaIjsgLy8ga0NBVmFsdWVGdW5jdGlvblNjYWxlWjsKKyAg
ICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURV9YOgorICAgICAgICAgICAg
cmV0dXJuIEAidHJhbnNsYXRlWCI7IC8vIGtDQVZhbHVlRnVuY3Rpb25UcmFuc2xhdGVYOworICAg
ICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFX1k6CisgICAgICAgICAgICBy
ZXR1cm4gQCJ0cmFuc2xhdGVZIjsgLy8ga0NBVmFsdWVGdW5jdGlvblRyYW5zbGF0ZVk7CisgICAg
ICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfWjoKKyAgICAgICAgICAgIHJl
dHVybiBAInRyYW5zbGF0ZVoiOyAvLyBrQ0FWYWx1ZUZ1bmN0aW9uVHJhbnNsYXRlWjsKKyAgICAg
ICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlNDQUxFOgorICAgICAgICBjYXNlIFRyYW5zZm9y
bU9wZXJhdGlvbjo6U0NBTEVfM0Q6CisgICAgICAgICAgICByZXR1cm4gQCJzY2FsZSI7IC8vIGtD
QVZhbHVlRnVuY3Rpb25TY2FsZTsKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlRS
QU5TTEFURToKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURV8zRDoK
KyAgICAgICAgICAgIHJldHVybiBAInRyYW5zbGF0ZSI7IC8vIGtDQVZhbHVlRnVuY3Rpb25UcmFu
c2xhdGU7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gbmlsOworICAgIH0K
K30KKyNlbmRpZgorCitzdGF0aWMgU3RyaW5nIHByb3BlcnR5SWRUb1N0cmluZyhBbmltYXRlZFBy
b3BlcnR5SUQgcHJvcGVydHkpCit7CisgICAgc3dpdGNoIChwcm9wZXJ0eSkgeworICAgICAgICBj
YXNlIEFuaW1hdGVkUHJvcGVydHlXZWJraXRUcmFuc2Zvcm06CisgICAgICAgICAgICByZXR1cm4g
InRyYW5zZm9ybSI7CisgICAgICAgIGNhc2UgQW5pbWF0ZWRQcm9wZXJ0eU9wYWNpdHk6CisgICAg
ICAgICAgICByZXR1cm4gIm9wYWNpdHkiOworICAgICAgICBjYXNlIEFuaW1hdGVkUHJvcGVydHlC
YWNrZ3JvdW5kQ29sb3I6CisgICAgICAgICAgICByZXR1cm4gImJhY2tncm91bmRDb2xvciI7Cisg
ICAgICAgIGNhc2UgQW5pbWF0ZWRQcm9wZXJ0eUludmFsaWQ6CisgICAgICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0
dXJuICIiOworfQorCitzdGF0aWMgU3RyaW5nIGFuaW1hdGlvbklkZW50aWZpZXIoY29uc3QgU3Ry
aW5nJiBhbmltYXRpb25OYW1lLCBBbmltYXRlZFByb3BlcnR5SUQgcHJvcGVydHksIGludCBpbmRl
eCkKK3sKKyAgICByZXR1cm4gbWFrZVN0cmluZyhhbmltYXRpb25OYW1lLCAnXycsIFN0cmluZzo6
bnVtYmVyKHByb3BlcnR5KSwgJ18nLCBTdHJpbmc6Om51bWJlcihpbmRleCkpOworfQorCitzdGF0
aWMgQ0FNZWRpYVRpbWluZ0Z1bmN0aW9uKiBnZXRDQU1lZGlhVGltaW5nRnVuY3Rpb24oY29uc3Qg
VGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0aW9uKQoreworICAgIC8vIEJ5IHRoaXMgcG9pbnQs
IHRpbWluZyBmdW5jdGlvbnMgY2FuIG9ubHkgYmUgbGluZWFyIG9yIGN1YmljLCBub3Qgc3RlcHMu
CisgICAgQVNTRVJUKCF0aW1pbmdGdW5jdGlvbi0+aXNTdGVwc1RpbWluZ0Z1bmN0aW9uKCkpOwor
ICAgIGlmICh0aW1pbmdGdW5jdGlvbi0+aXNDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKCkpIHsK
KyAgICAgICAgY29uc3QgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbiogY3RmID0gc3RhdGljX2Nh
c3Q8Y29uc3QgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbio+KHRpbWluZ0Z1bmN0aW9uKTsKKyAg
ICAgICAgcmV0dXJuIFtDQU1lZGlhVGltaW5nRnVuY3Rpb24gZnVuY3Rpb25XaXRoQ29udHJvbFBv
aW50czpzdGF0aWNfY2FzdDxmbG9hdD4oY3RmLT54MSgpKSA6c3RhdGljX2Nhc3Q8ZmxvYXQ+KGN0
Zi0+eTEoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDpzdGF0aWNfY2FzdDxmbG9hdD4oY3RmLT54MigpKSA6c3RhdGljX2Nh
c3Q8ZmxvYXQ+KGN0Zi0+eTIoKSldOworICAgIH0gZWxzZQorICAgICAgICByZXR1cm4gW0NBTWVk
aWFUaW1pbmdGdW5jdGlvbiBmdW5jdGlvbldpdGhOYW1lOkAibGluZWFyIl07Cit9CisKK3N0YXRp
YyB2b2lkIHNldExheWVyQm9yZGVyQ29sb3IoUGxhdGZvcm1MYXllciogbGF5ZXIsIGNvbnN0IENv
bG9yJiBjb2xvcikKK3sKKyAgICBbbGF5ZXIgc2V0Qm9yZGVyQ29sb3I6Y2FjaGVkQ0dDb2xvcihj
b2xvciwgQ29sb3JTcGFjZURldmljZVJHQildOworfQorCitzdGF0aWMgdm9pZCBjbGVhckJvcmRl
ckNvbG9yKFBsYXRmb3JtTGF5ZXIqIGxheWVyKQoreworICAgIFtsYXllciBzZXRCb3JkZXJDb2xv
cjpuaWxdOworfQorCitzdGF0aWMgdm9pZCBzZXRMYXllckJhY2tncm91bmRDb2xvcihQbGF0Zm9y
bUxheWVyKiBsYXllciwgY29uc3QgQ29sb3ImIGNvbG9yKQoreworICAgIFtsYXllciBzZXRCYWNr
Z3JvdW5kQ29sb3I6Y2FjaGVkQ0dDb2xvcihjb2xvciwgQ29sb3JTcGFjZURldmljZVJHQildOwor
fQorCitzdGF0aWMgdm9pZCBjbGVhckxheWVyQmFja2dyb3VuZENvbG9yKFBsYXRmb3JtTGF5ZXIq
IGxheWVyKQoreworICAgIFtsYXllciBzZXRCYWNrZ3JvdW5kQ29sb3I6MF07Cit9CisKK3N0YXRp
YyB2b2lkIHNhZmVTZXRTdWJsYXllcnMoQ0FMYXllciogbGF5ZXIsIE5TQXJyYXkqIHN1YmxheWVy
cykKK3sKKyAgICAvLyBXb3JrYXJvdW5kIGZvciA8cmRhcjovL3Byb2JsZW0vNzM5MDcxNj46IC1b
Q0FMYXllciBzZXRTdWJsYXllcnM6XSBjcmFzaGVzIGlmIHN1YmxheWVycyBpcyBhbiBlbXB0eSBh
cnJheSwgb3IgbmlsLCB1bmRlciBHQy4KKyAgICBpZiAob2JqY19jb2xsZWN0aW5nRW5hYmxlZCgp
ICYmICFbc3VibGF5ZXJzIGNvdW50XSkgeworICAgICAgICB3aGlsZSAoW1tsYXllciBzdWJsYXll
cnNdIGNvdW50XSkKKyAgICAgICAgICAgIFtbW2xheWVyIHN1YmxheWVyc10gb2JqZWN0QXRJbmRl
eDowXSByZW1vdmVGcm9tU3VwZXJsYXllcl07CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
CisgICAgW2xheWVyIHNldFN1YmxheWVyczpzdWJsYXllcnNdOworfQorCitzdGF0aWMgYm9vbCBj
YVZhbHVlRnVuY3Rpb25TdXBwb3J0ZWQoKQoreworICAgIHN0YXRpYyBib29sIHNIYXZlVmFsdWVG
dW5jdGlvbiA9IFtDQVByb3BlcnR5QW5pbWF0aW9uIGluc3RhbmNlc1Jlc3BvbmRUb1NlbGVjdG9y
OkBzZWxlY3RvcihzZXRWYWx1ZUZ1bmN0aW9uOildOworICAgIHJldHVybiBzSGF2ZVZhbHVlRnVu
Y3Rpb247Cit9CisKK3N0YXRpYyBib29sIGZvcmNlU29mdHdhcmVBbmltYXRpb24oKQoreworICAg
IHN0YXRpYyBib29sIGZvcmNlU29mdHdhcmVBbmltYXRpb24gPSBbW05TVXNlckRlZmF1bHRzIHN0
YW5kYXJkVXNlckRlZmF1bHRzXSBib29sRm9yS2V5OkAiV2ViQ29yZUZvcmNlU29mdHdhcmVBbmlt
YXRpb24iXTsKKyAgICByZXR1cm4gZm9yY2VTb2Z0d2FyZUFuaW1hdGlvbjsKK30KKworc3RhdGlj
IE5TRGljdGlvbmFyeSogbnVsbEFjdGlvbnNEaWN0aW9uYXJ5KCkKK3sKKyAgICBOU051bGwqIG51
bGxWYWx1ZSA9IFtOU051bGwgbnVsbF07CisgICAgTlNEaWN0aW9uYXJ5KiBhY3Rpb25zID0gW05T
RGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBudWxsVmFsdWUsIEAiYW5jaG9yUG9pbnQiLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBudWxsVmFsdWUsIEAiYm91bmRzIiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbnVsbFZhbHVlLCBAImNvbnRlbnRzIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbnVsbFZhbHVlLCBAImNvbnRlbnRzUmVjdCIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG51bGxWYWx1ZSwgQCJvcGFjaXR5IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbnVsbFZhbHVlLCBAInBvc2l0aW9uIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bnVsbFZhbHVlLCBAInNoYWRvd0NvbG9yIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bnVsbFZhbHVlLCBAInN1YmxheWVyVHJhbnNmb3JtIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbnVsbFZhbHVlLCBAInN1YmxheWVycyIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG51bGxWYWx1ZSwgQCJ0cmFuc2Zvcm0iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBudWxsVmFsdWUsIEAielBvc2l0aW9uIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bmlsXTsKKyAgICByZXR1cm4gYWN0aW9uczsKK30KKworc3RhdGljIGJvb2wgYW5pbWF0aW9uSGFz
U3RlcHNUaW1pbmdGdW5jdGlvbihjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVMaXN0LCBj
b25zdCBBbmltYXRpb24qIGFuaW0pCit7CisgICAgaWYgKGFuaW0tPnRpbWluZ0Z1bmN0aW9uKCkt
PmlzU3RlcHNUaW1pbmdGdW5jdGlvbigpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAKKyAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdmFsdWVMaXN0LnNpemUoKTsgKytpKSB7CisgICAg
ICAgIGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB0aW1pbmdGdW5jdGlvbiA9IHZhbHVlTGlzdC5hdChp
KS0+dGltaW5nRnVuY3Rpb24oKTsKKyAgICAgICAgaWYgKHRpbWluZ0Z1bmN0aW9uICYmIHRpbWlu
Z0Z1bmN0aW9uLT5pc1N0ZXBzVGltaW5nRnVuY3Rpb24oKSkKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKworUGFzc093blB0cjxHcmFwaGlj
c0xheWVyPiBHcmFwaGljc0xheWVyOjpjcmVhdGUoR3JhcGhpY3NMYXllckNsaWVudCogY2xpZW50
KQoreworICAgIHJldHVybiBuZXcgR3JhcGhpY3NMYXllckNBKGNsaWVudCk7Cit9CisKK0dyYXBo
aWNzTGF5ZXJDQTo6R3JhcGhpY3NMYXllckNBKEdyYXBoaWNzTGF5ZXJDbGllbnQqIGNsaWVudCkK
KyAgICA6IEdyYXBoaWNzTGF5ZXIoY2xpZW50KQorICAgICwgbV9jb250ZW50c0xheWVyUHVycG9z
ZShOb0NvbnRlbnRzTGF5ZXIpCisgICAgLCBtX2NvbnRlbnRzTGF5ZXJIYXNCYWNrZ3JvdW5kQ29s
b3IoZmFsc2UpCisgICAgLCBtX3VuY29tbWl0dGVkQ2hhbmdlcyhOb0NoYW5nZSkKK3sKKyAgICBC
RUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICBtX2xheWVyLmFkb3B0TlMoW1tXZWJMYXll
ciBhbGxvY10gaW5pdF0pOworICAgIFttX2xheWVyLmdldCgpIHNldExheWVyT3duZXI6dGhpc107
CisKKyNpZiAhSEFWRV9NT0RFUk5fUVVBUlRaQ09SRQorICAgIHNldENvbnRlbnRzT3JpZW50YXRp
b24oZGVmYXVsdENvbnRlbnRzT3JpZW50YXRpb24oKSk7CisjZW5kaWYKKworICAgIHVwZGF0ZURl
YnVnSW5kaWNhdG9ycygpOworCisgICAgbV9hbmltYXRpb25EZWxlZ2F0ZS5hZG9wdE5TKFtbV2Vi
QW5pbWF0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICBbbV9hbmltYXRpb25EZWxlZ2F0
ZS5nZXQoKSBzZXRMYXllcjp0aGlzXTsKKyAgICAKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJ
T05TCit9CisKK0dyYXBoaWNzTGF5ZXJDQTo6fkdyYXBoaWNzTGF5ZXJDQSgpCit7CisgICAgLy8g
V2UgcmVsZWFzZSBvdXIgcmVmZXJlbmNlcyB0byB0aGUgQ0FMYXllcnMgaGVyZSwgYnV0IGRvIG5v
dCBhY3RpdmVseSB1bnBhcmVudCB0aGVtLAorICAgIC8vIHNpbmNlIHRoYXQgd2lsbCBjYXVzZSBh
IGNvbW1pdCBhbmQgYnJlYWsgb3VyIGJhdGNoZWQgY29tbWl0IG1vZGVsLiBUaGUgbGF5ZXJzIHdp
bGwKKyAgICAvLyBnZXQgcmVsZWFzZWQgd2hlbiB0aGUgcm9vdG1vc3QgbW9kaWZpZWQgR3JhcGhp
Y3NMYXllckNBIHJlYnVpbGRzIGl0cyBjaGlsZCBsYXllcnMuCisgICAgCisgICAgQkVHSU5fQkxP
Q0tfT0JKQ19FWENFUFRJT05TCisKKyAgICAvLyBDbGVhbiB1cCB0aGUgV0sgbGF5ZXIuCisgICAg
aWYgKG1fbGF5ZXIpIHsKKyAgICAgICAgV2ViTGF5ZXIqIGxheWVyID0gbV9sYXllci5nZXQoKTsK
KyAgICAgICAgW2xheWVyIHNldExheWVyT3duZXI6bmlsXTsKKyAgICB9CisgICAgCisgICAgaWYg
KG1fY29udGVudHNMYXllcikgeworICAgICAgICBpZiAoW21fY29udGVudHNMYXllci5nZXQoKSBy
ZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNldExheWVyT3duZXI6KV0pCisgICAgICAgICAg
ICBbKGlkKW1fY29udGVudHNMYXllci5nZXQoKSBzZXRMYXllck93bmVyOm5pbF07CisgICAgfQor
ICAgIAorICAgIC8vIGFuaW1hdGlvbkRpZFN0YXJ0OiBjYW4gZmlyZSBhZnRlciB0aGlzLCBzbyB3
ZSBuZWVkIHRvIGNsZWFyIG91dCB0aGUgbGF5ZXIgb24gdGhlIGRlbGVnYXRlLgorICAgIFttX2Fu
aW1hdGlvbkRlbGVnYXRlLmdldCgpIHNldExheWVyOjBdOworCisgICAgLy8gUmVsZWFzZSB0aGUg
Y2xvbmUgbGF5ZXJzIGluc2lkZSB0aGUgZXhjZXB0aW9uLWhhbmRsaW5nIGJsb2NrLgorICAgIHJl
bW92ZUNsb25lTGF5ZXJzKCk7CisgICAgCisgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwor
fQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0TmFtZShjb25zdCBTdHJpbmcmIG5hbWUpCit7
CisgICAgU3RyaW5nIGxvbmdOYW1lID0gU3RyaW5nOjpmb3JtYXQoIkNBTGF5ZXIoJXApIEdyYXBo
aWNzTGF5ZXIoJXApICIsIG1fbGF5ZXIuZ2V0KCksIHRoaXMpICsgbmFtZTsKKyAgICBHcmFwaGlj
c0xheWVyOjpzZXROYW1lKGxvbmdOYW1lKTsKKyAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQo
TmFtZUNoYW5nZWQpOworfQorCitOYXRpdmVMYXllciBHcmFwaGljc0xheWVyQ0E6Om5hdGl2ZUxh
eWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9sYXllci5nZXQoKTsKK30KKworYm9vbCBHcmFw
aGljc0xheWVyQ0E6OnNldENoaWxkcmVuKGNvbnN0IFZlY3RvcjxHcmFwaGljc0xheWVyKj4mIGNo
aWxkcmVuKQoreworICAgIGJvb2wgY2hpbGRyZW5DaGFuZ2VkID0gR3JhcGhpY3NMYXllcjo6c2V0
Q2hpbGRyZW4oY2hpbGRyZW4pOworICAgIGlmIChjaGlsZHJlbkNoYW5nZWQpCisgICAgICAgIG5v
dGVTdWJsYXllcnNDaGFuZ2VkKCk7CisgICAgCisgICAgcmV0dXJuIGNoaWxkcmVuQ2hhbmdlZDsK
K30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OmFkZENoaWxkKEdyYXBoaWNzTGF5ZXIqIGNoaWxk
TGF5ZXIpCit7CisgICAgR3JhcGhpY3NMYXllcjo6YWRkQ2hpbGQoY2hpbGRMYXllcik7CisgICAg
bm90ZVN1YmxheWVyc0NoYW5nZWQoKTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OmFkZENo
aWxkQXRJbmRleChHcmFwaGljc0xheWVyKiBjaGlsZExheWVyLCBpbnQgaW5kZXgpCit7CisgICAg
R3JhcGhpY3NMYXllcjo6YWRkQ2hpbGRBdEluZGV4KGNoaWxkTGF5ZXIsIGluZGV4KTsKKyAgICBu
b3RlU3VibGF5ZXJzQ2hhbmdlZCgpOworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6YWRkQ2hp
bGRCZWxvdyhHcmFwaGljc0xheWVyKiBjaGlsZExheWVyLCBHcmFwaGljc0xheWVyKiBzaWJsaW5n
KQoreworICAgIEdyYXBoaWNzTGF5ZXI6OmFkZENoaWxkQmVsb3coY2hpbGRMYXllciwgc2libGlu
Zyk7CisgICAgbm90ZVN1YmxheWVyc0NoYW5nZWQoKTsKK30KKwordm9pZCBHcmFwaGljc0xheWVy
Q0E6OmFkZENoaWxkQWJvdmUoR3JhcGhpY3NMYXllciogY2hpbGRMYXllciwgR3JhcGhpY3NMYXll
ciogc2libGluZykKK3sKKyAgICBHcmFwaGljc0xheWVyOjphZGRDaGlsZEFib3ZlKGNoaWxkTGF5
ZXIsIHNpYmxpbmcpOworICAgIG5vdGVTdWJsYXllcnNDaGFuZ2VkKCk7Cit9CisKK2Jvb2wgR3Jh
cGhpY3NMYXllckNBOjpyZXBsYWNlQ2hpbGQoR3JhcGhpY3NMYXllciogb2xkQ2hpbGQsIEdyYXBo
aWNzTGF5ZXIqIG5ld0NoaWxkKQoreworICAgIGlmIChHcmFwaGljc0xheWVyOjpyZXBsYWNlQ2hp
bGQob2xkQ2hpbGQsIG5ld0NoaWxkKSkgeworICAgICAgICBub3RlU3VibGF5ZXJzQ2hhbmdlZCgp
OworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2
b2lkIEdyYXBoaWNzTGF5ZXJDQTo6cmVtb3ZlRnJvbVBhcmVudCgpCit7CisgICAgaWYgKG1fcGFy
ZW50KQorICAgICAgICBzdGF0aWNfY2FzdDxHcmFwaGljc0xheWVyQ0EqPihtX3BhcmVudCktPm5v
dGVTdWJsYXllcnNDaGFuZ2VkKCk7CisgICAgR3JhcGhpY3NMYXllcjo6cmVtb3ZlRnJvbVBhcmVu
dCgpOworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0TWFza0xheWVyKEdyYXBoaWNzTGF5
ZXIqIGxheWVyKQoreworICAgIGlmIChsYXllciA9PSBtX21hc2tMYXllcikKKyAgICAgICAgcmV0
dXJuOworCisgICAgR3JhcGhpY3NMYXllcjo6c2V0TWFza0xheWVyKGxheWVyKTsKKyAgICBub3Rl
TGF5ZXJQcm9wZXJ0eUNoYW5nZWQoTWFza0xheWVyQ2hhbmdlZCk7CisKKyAgICBwcm9wYWdhdGVM
YXllckNoYW5nZVRvUmVwbGljYXMoKTsKKyAgICAKKyAgICBpZiAobV9yZXBsaWNhdGVkTGF5ZXIp
CisgICAgICAgIHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXJDQSo+KG1fcmVwbGljYXRlZExheWVy
KS0+cHJvcGFnYXRlTGF5ZXJDaGFuZ2VUb1JlcGxpY2FzKCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NM
YXllckNBOjpzZXRSZXBsaWNhdGVkTGF5ZXIoR3JhcGhpY3NMYXllciogbGF5ZXIpCit7CisgICAg
aWYgKGxheWVyID09IG1fcmVwbGljYXRlZExheWVyKQorICAgICAgICByZXR1cm47CisKKyAgICBH
cmFwaGljc0xheWVyOjpzZXRSZXBsaWNhdGVkTGF5ZXIobGF5ZXIpOworICAgIG5vdGVMYXllclBy
b3BlcnR5Q2hhbmdlZChSZXBsaWNhdGVkTGF5ZXJDaGFuZ2VkKTsKK30KKwordm9pZCBHcmFwaGlj
c0xheWVyQ0E6OnNldFJlcGxpY2F0ZWRCeUxheWVyKEdyYXBoaWNzTGF5ZXIqIGxheWVyKQorewor
ICAgIGlmIChsYXllciA9PSBtX3JlcGxpY2FMYXllcikKKyAgICAgICAgcmV0dXJuOworCisgICAg
R3JhcGhpY3NMYXllcjo6c2V0UmVwbGljYXRlZEJ5TGF5ZXIobGF5ZXIpOworICAgIG5vdGVTdWJs
YXllcnNDaGFuZ2VkKCk7CisgICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKFJlcGxpY2F0ZWRM
YXllckNoYW5nZWQpOworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0UG9zaXRpb24oY29u
c3QgRmxvYXRQb2ludCYgcG9pbnQpCit7CisgICAgaWYgKHBvaW50ID09IG1fcG9zaXRpb24pCisg
ICAgICAgIHJldHVybjsKKworICAgIEdyYXBoaWNzTGF5ZXI6OnNldFBvc2l0aW9uKHBvaW50KTsK
KyAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoUG9zaXRpb25DaGFuZ2VkKTsKK30KKwordm9p
ZCBHcmFwaGljc0xheWVyQ0E6OnNldEFuY2hvclBvaW50KGNvbnN0IEZsb2F0UG9pbnQzRCYgcG9p
bnQpCit7CisgICAgaWYgKHBvaW50ID09IG1fYW5jaG9yUG9pbnQpCisgICAgICAgIHJldHVybjsK
KworICAgIEdyYXBoaWNzTGF5ZXI6OnNldEFuY2hvclBvaW50KHBvaW50KTsKKyAgICBub3RlTGF5
ZXJQcm9wZXJ0eUNoYW5nZWQoQW5jaG9yUG9pbnRDaGFuZ2VkKTsKK30KKwordm9pZCBHcmFwaGlj
c0xheWVyQ0E6OnNldFNpemUoY29uc3QgRmxvYXRTaXplJiBzaXplKQoreworICAgIGlmIChzaXpl
ID09IG1fc2l6ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgR3JhcGhpY3NMYXllcjo6c2V0U2l6
ZShzaXplKTsKKyAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoU2l6ZUNoYW5nZWQpOworfQor
Cit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0VHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JiB0KQoreworICAgIGlmICh0ID09IG1fdHJhbnNmb3JtKQorICAgICAgICByZXR1cm47
CisKKyAgICBHcmFwaGljc0xheWVyOjpzZXRUcmFuc2Zvcm0odCk7CisgICAgbm90ZUxheWVyUHJv
cGVydHlDaGFuZ2VkKFRyYW5zZm9ybUNoYW5nZWQpOworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJD
QTo6c2V0Q2hpbGRyZW5UcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHQpCit7
CisgICAgaWYgKHQgPT0gbV9jaGlsZHJlblRyYW5zZm9ybSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgR3JhcGhpY3NMYXllcjo6c2V0Q2hpbGRyZW5UcmFuc2Zvcm0odCk7CisgICAgbm90ZUxheWVy
UHJvcGVydHlDaGFuZ2VkKENoaWxkcmVuVHJhbnNmb3JtQ2hhbmdlZCk7Cit9CisKK3ZvaWQgR3Jh
cGhpY3NMYXllckNBOjptb3ZlT3JDb3B5TGF5ZXJBbmltYXRpb24oTW92ZU9yQ29weSBvcGVyYXRp
b24sIGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uSWRlbnRpZmllciwgQ0FMYXllciAqZnJvbUxheWVy
LCBDQUxheWVyICp0b0xheWVyKQoreworICAgIE5TU3RyaW5nICphbmltYXRpb25JRCA9IGFuaW1h
dGlvbklkZW50aWZpZXI7CisgICAgQ0FBbmltYXRpb24gKmFuaW0gPSBbZnJvbUxheWVyIGFuaW1h
dGlvbkZvcktleTphbmltYXRpb25JRF07CisgICAgaWYgKCFhbmltKQorICAgICAgICByZXR1cm47
CisKKyAgICBzd2l0Y2ggKG9wZXJhdGlvbikgeworICAgICAgICBjYXNlIE1vdmU6CisgICAgICAg
ICAgICBbYW5pbSByZXRhaW5dOworICAgICAgICAgICAgW2Zyb21MYXllciByZW1vdmVBbmltYXRp
b25Gb3JLZXk6YW5pbWF0aW9uSURdOworICAgICAgICAgICAgW3RvTGF5ZXIgYWRkQW5pbWF0aW9u
OmFuaW0gZm9yS2V5OmFuaW1hdGlvbklEXTsKKyAgICAgICAgICAgIFthbmltIHJlbGVhc2VdOwor
ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBDb3B5OgorICAgICAgICAgICAgW3Rv
TGF5ZXIgYWRkQW5pbWF0aW9uOmFuaW0gZm9yS2V5OmFuaW1hdGlvbklEXTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgIH0KK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6Om1vdmVPckNvcHlBbmlt
YXRpb25zRm9yUHJvcGVydHkoTW92ZU9yQ29weSBvcGVyYXRpb24sIEFuaW1hdGVkUHJvcGVydHlJ
RCBwcm9wZXJ0eSwgQ0FMYXllciAqZnJvbUxheWVyLCBDQUxheWVyICp0b0xheWVyKQoreworICAg
IC8vIExvb2sgZm9yIHJ1bm5pbmcgYW5pbWF0aW9ucyBhZmZlY3RpbmcgdGhpcyBwcm9wZXJ0eS4K
KyAgICBBbmltYXRpb25zTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBtX3J1bm5pbmdBbmltYXRp
b25zLmVuZCgpOworICAgIGZvciAoQW5pbWF0aW9uc01hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBt
X3J1bm5pbmdBbmltYXRpb25zLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBj
b25zdCBWZWN0b3I8TGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbj4mIHByb3BlcnR5QW5pbWF0aW9ucyA9
IGl0LT5zZWNvbmQ7CisgICAgICAgIHNpemVfdCBudW1BbmltYXRpb25zID0gcHJvcGVydHlBbmlt
YXRpb25zLnNpemUoKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1BbmltYXRp
b25zOyArK2kpIHsKKyAgICAgICAgICAgIGNvbnN0IExheWVyUHJvcGVydHlBbmltYXRpb24mIGN1
cnJBbmltYXRpb24gPSBwcm9wZXJ0eUFuaW1hdGlvbnNbaV07CisgICAgICAgICAgICBpZiAoY3Vy
ckFuaW1hdGlvbi5tX3Byb3BlcnR5ID09IHByb3BlcnR5KQorICAgICAgICAgICAgICAgIG1vdmVP
ckNvcHlMYXllckFuaW1hdGlvbihvcGVyYXRpb24sIGFuaW1hdGlvbklkZW50aWZpZXIoY3VyckFu
aW1hdGlvbi5tX25hbWUsIGN1cnJBbmltYXRpb24ubV9wcm9wZXJ0eSwgY3VyckFuaW1hdGlvbi5t
X2luZGV4KSwgZnJvbUxheWVyLCB0b0xheWVyKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9p
ZCBHcmFwaGljc0xheWVyQ0E6OnNldFByZXNlcnZlczNEKGJvb2wgcHJlc2VydmVzM0QpCit7Cisg
ICAgaWYgKHByZXNlcnZlczNEID09IG1fcHJlc2VydmVzM0QpCisgICAgICAgIHJldHVybjsKKwor
ICAgIEdyYXBoaWNzTGF5ZXI6OnNldFByZXNlcnZlczNEKHByZXNlcnZlczNEKTsKKyAgICBub3Rl
TGF5ZXJQcm9wZXJ0eUNoYW5nZWQoUHJlc2VydmVzM0RDaGFuZ2VkKTsKK30KKwordm9pZCBHcmFw
aGljc0xheWVyQ0E6OnNldE1hc2tzVG9Cb3VuZHMoYm9vbCBtYXNrc1RvQm91bmRzKQoreworICAg
IGlmIChtYXNrc1RvQm91bmRzID09IG1fbWFza3NUb0JvdW5kcykKKyAgICAgICAgcmV0dXJuOwor
CisgICAgR3JhcGhpY3NMYXllcjo6c2V0TWFza3NUb0JvdW5kcyhtYXNrc1RvQm91bmRzKTsKKyAg
ICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoTWFza3NUb0JvdW5kc0NoYW5nZWQpOworfQorCit2
b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0RHJhd3NDb250ZW50KGJvb2wgZHJhd3NDb250ZW50KQor
eworICAgIGlmIChkcmF3c0NvbnRlbnQgPT0gbV9kcmF3c0NvbnRlbnQpCisgICAgICAgIHJldHVy
bjsKKworICAgIEdyYXBoaWNzTGF5ZXI6OnNldERyYXdzQ29udGVudChkcmF3c0NvbnRlbnQpOwor
ICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChEcmF3c0NvbnRlbnRDaGFuZ2VkKTsKK30KKwor
dm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldEJhY2tncm91bmRDb2xvcihjb25zdCBDb2xvciYgY29s
b3IpCit7CisgICAgaWYgKG1fYmFja2dyb3VuZENvbG9yU2V0ICYmIG1fYmFja2dyb3VuZENvbG9y
ID09IGNvbG9yKQorICAgICAgICByZXR1cm47CisKKyAgICBHcmFwaGljc0xheWVyOjpzZXRCYWNr
Z3JvdW5kQ29sb3IoY29sb3IpOworCisgICAgbV9jb250ZW50c0xheWVySGFzQmFja2dyb3VuZENv
bG9yID0gdHJ1ZTsKKyAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoQmFja2dyb3VuZENvbG9y
Q2hhbmdlZCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpjbGVhckJhY2tncm91bmRDb2xv
cigpCit7CisgICAgaWYgKCFtX2JhY2tncm91bmRDb2xvclNldCkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgR3JhcGhpY3NMYXllcjo6Y2xlYXJCYWNrZ3JvdW5kQ29sb3IoKTsKKyAgICBtX2NvbnRl
bnRzTGF5ZXJIYXNCYWNrZ3JvdW5kQ29sb3IgPSBmYWxzZTsKKyAgICBub3RlTGF5ZXJQcm9wZXJ0
eUNoYW5nZWQoQmFja2dyb3VuZENvbG9yQ2hhbmdlZCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXll
ckNBOjpzZXRDb250ZW50c09wYXF1ZShib29sIG9wYXF1ZSkKK3sKKyAgICBpZiAobV9jb250ZW50
c09wYXF1ZSA9PSBvcGFxdWUpCisgICAgICAgIHJldHVybjsKKworICAgIEdyYXBoaWNzTGF5ZXI6
OnNldENvbnRlbnRzT3BhcXVlKG9wYXF1ZSk7CisgICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2Vk
KENvbnRlbnRzT3BhcXVlQ2hhbmdlZCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRC
YWNrZmFjZVZpc2liaWxpdHkoYm9vbCB2aXNpYmxlKQoreworICAgIGlmIChtX2JhY2tmYWNlVmlz
aWJpbGl0eSA9PSB2aXNpYmxlKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgR3JhcGhpY3NM
YXllcjo6c2V0QmFja2ZhY2VWaXNpYmlsaXR5KHZpc2libGUpOworICAgIG5vdGVMYXllclByb3Bl
cnR5Q2hhbmdlZChCYWNrZmFjZVZpc2liaWxpdHlDaGFuZ2VkKTsKK30KKwordm9pZCBHcmFwaGlj
c0xheWVyQ0E6OnNldE9wYWNpdHkoZmxvYXQgb3BhY2l0eSkKK3sKKyAgICBmbG9hdCBjbGFtcGVk
T3BhY2l0eSA9IG1heCgwLjBmLCBtaW4ob3BhY2l0eSwgMS4wZikpOworCisgICAgaWYgKGNsYW1w
ZWRPcGFjaXR5ID09IG1fb3BhY2l0eSkKKyAgICAgICAgcmV0dXJuOworCisgICAgR3JhcGhpY3NM
YXllcjo6c2V0T3BhY2l0eShjbGFtcGVkT3BhY2l0eSk7CisgICAgbm90ZUxheWVyUHJvcGVydHlD
aGFuZ2VkKE9wYWNpdHlDaGFuZ2VkKTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldE5l
ZWRzRGlzcGxheSgpCit7CisgICAgRmxvYXRSZWN0IGh1Z2VSZWN0KC1udW1lcmljX2xpbWl0czxm
bG9hdD46Om1heCgpIC8gMiwgLW51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4KCkgLyAyLAorICAg
ICAgICAgICAgICAgICAgICAgICBudW1lcmljX2xpbWl0czxmbG9hdD46Om1heCgpLCBudW1lcmlj
X2xpbWl0czxmbG9hdD46Om1heCgpKTsKKworICAgIHNldE5lZWRzRGlzcGxheUluUmVjdChodWdl
UmVjdCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXROZWVkc0Rpc3BsYXlJblJlY3Qo
Y29uc3QgRmxvYXRSZWN0JiByZWN0KQoreworICAgIGlmICghZHJhd3NDb250ZW50KCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIGNvbnN0IHNpemVfdCBtYXhEaXJ0eVJlY3RzID0gMzI7CisgICAg
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2RpcnR5UmVjdHMuc2l6ZSgpOyArK2kpIHsK
KyAgICAgICAgaWYgKG1fZGlydHlSZWN0c1tpXS5jb250YWlucyhyZWN0KSkKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgCisgICAgaWYgKG1fZGlydHlSZWN0cy5zaXplKCkgPCBtYXhE
aXJ0eVJlY3RzKQorICAgICAgICBtX2RpcnR5UmVjdHMuYXBwZW5kKHJlY3QpOworICAgIGVsc2UK
KyAgICAgICAgbV9kaXJ0eVJlY3RzWzBdLnVuaXRlKHJlY3QpOworCisgICAgbm90ZUxheWVyUHJv
cGVydHlDaGFuZ2VkKERpcnR5UmVjdHNDaGFuZ2VkKTsKK30KKwordm9pZCBHcmFwaGljc0xheWVy
Q0E6OnNldENvbnRlbnRzTmVlZHNEaXNwbGF5KCkKK3sKKyAgICBub3RlTGF5ZXJQcm9wZXJ0eUNo
YW5nZWQoQ29udGVudHNOZWVkc0Rpc3BsYXkpOworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6
c2V0Q29udGVudHNSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpCit7CisgICAgaWYgKHJlY3QgPT0g
bV9jb250ZW50c1JlY3QpCisgICAgICAgIHJldHVybjsKKworICAgIEdyYXBoaWNzTGF5ZXI6OnNl
dENvbnRlbnRzUmVjdChyZWN0KTsKKyAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoQ29udGVu
dHNSZWN0Q2hhbmdlZCk7Cit9CisKK2Jvb2wgR3JhcGhpY3NMYXllckNBOjphZGRBbmltYXRpb24o
Y29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCwgY29uc3QgSW50U2l6ZSYgYm94U2l6
ZSwgY29uc3QgQW5pbWF0aW9uKiBhbmltLCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGRv
dWJsZSB0aW1lT2Zmc2V0KQoreworICAgIEFTU0VSVCghYW5pbWF0aW9uTmFtZS5pc0VtcHR5KCkp
OworCisgICAgaWYgKGZvcmNlU29mdHdhcmVBbmltYXRpb24oKSB8fCAhYW5pbSB8fCBhbmltLT5p
c0VtcHR5T3JaZXJvRHVyYXRpb24oKSB8fCB2YWx1ZUxpc3Quc2l6ZSgpIDwgMikKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisjaWYgIUhBVkVfTU9ERVJOX1FVQVJUWkNPUkUKKyAgICAvLyBPbGRl
ciB2ZXJzaW9ucyBvZiBRdWFydHpDb3JlIGRvIG5vdCBoYW5kbGUgb3BhY2l0eSBpbiB0cmFuc2Zv
cm0gbGF5ZXJzIHByb3Blcmx5LCBzbyB3ZSB3aWxsCisgICAgLy8gYWx3YXlzIGRvIHNvZnR3YXJl
IGFuaW1hdGlvbiBpbiB0aGF0IGNhc2UuCisgICAgaWYgKHZhbHVlTGlzdC5wcm9wZXJ0eSgpID09
IEFuaW1hdGVkUHJvcGVydHlPcGFjaXR5KQorICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYK
KworICAgIC8vIENvcmVBbmltYXRpb24gZG9lcyBub3QgaGFuZGxlIHRoZSBzdGVwcygpIHRpbWlu
ZyBmdW5jdGlvbi4gRmFsbCBiYWNrCisgICAgLy8gdG8gc29mdHdhcmUgYW5pbWF0aW9uIGluIHRo
YXQgY2FzZS4KKyAgICBpZiAoYW5pbWF0aW9uSGFzU3RlcHNUaW1pbmdGdW5jdGlvbih2YWx1ZUxp
c3QsIGFuaW0pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBib29sIGNyZWF0ZWRBbmlt
YXRpb25zID0gZmFsc2U7CisgICAgaWYgKHZhbHVlTGlzdC5wcm9wZXJ0eSgpID09IEFuaW1hdGVk
UHJvcGVydHlXZWJraXRUcmFuc2Zvcm0pCisgICAgICAgIGNyZWF0ZWRBbmltYXRpb25zID0gY3Jl
YXRlVHJhbnNmb3JtQW5pbWF0aW9uc0Zyb21LZXlmcmFtZXModmFsdWVMaXN0LCBhbmltLCBhbmlt
YXRpb25OYW1lLCB0aW1lT2Zmc2V0LCBib3hTaXplKTsKKyAgICBlbHNlCisgICAgICAgIGNyZWF0
ZWRBbmltYXRpb25zID0gY3JlYXRlQW5pbWF0aW9uRnJvbUtleWZyYW1lcyh2YWx1ZUxpc3QsIGFu
aW0sIGFuaW1hdGlvbk5hbWUsIHRpbWVPZmZzZXQpOworCisgICAgaWYgKGNyZWF0ZWRBbmltYXRp
b25zKQorICAgICAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoQW5pbWF0aW9uQ2hhbmdlZCk7
CisgICAgICAgIAorICAgIHJldHVybiBjcmVhdGVkQW5pbWF0aW9uczsKK30KKwordm9pZCBHcmFw
aGljc0xheWVyQ0E6OnBhdXNlQW5pbWF0aW9uKGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSwg
ZG91YmxlIHRpbWVPZmZzZXQpCit7CisgICAgaWYgKCFhbmltYXRpb25Jc1J1bm5pbmcoYW5pbWF0
aW9uTmFtZSkpCisgICAgICAgIHJldHVybjsKKworICAgIEFuaW1hdGlvbnNUb1Byb2Nlc3NNYXA6
Oml0ZXJhdG9yIGl0ID0gbV9hbmltYXRpb25zVG9Qcm9jZXNzLmZpbmQoYW5pbWF0aW9uTmFtZSk7
CisgICAgaWYgKGl0ICE9IG1fYW5pbWF0aW9uc1RvUHJvY2Vzcy5lbmQoKSkgeworICAgICAgICBB
bmltYXRpb25Qcm9jZXNzaW5nQWN0aW9uJiBwcm9jZXNzaW5nSW5mbyA9IGl0LT5zZWNvbmQ7Cisg
ICAgICAgIC8vIElmIGFuIGFuaW1hdGlvbiBpcyBzY2hlZHVsZWQgdG8gYmUgcmVtb3ZlZCwgZG9u
J3QgY2hhbmdlIHRoZSByZW1vdmUgdG8gYSBwYXVzZS4KKyAgICAgICAgaWYgKHByb2Nlc3NpbmdJ
bmZvLmFjdGlvbiAhPSBSZW1vdmUpCisgICAgICAgICAgICBwcm9jZXNzaW5nSW5mby5hY3Rpb24g
PSBQYXVzZTsKKyAgICB9IGVsc2UKKyAgICAgICAgbV9hbmltYXRpb25zVG9Qcm9jZXNzLmFkZChh
bmltYXRpb25OYW1lLCBBbmltYXRpb25Qcm9jZXNzaW5nQWN0aW9uKFBhdXNlLCB0aW1lT2Zmc2V0
KSk7CisKKyAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoQW5pbWF0aW9uQ2hhbmdlZCk7Cit9
CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpyZW1vdmVBbmltYXRpb24oY29uc3QgU3RyaW5nJiBh
bmltYXRpb25OYW1lKQoreworICAgIGlmICghYW5pbWF0aW9uSXNSdW5uaW5nKGFuaW1hdGlvbk5h
bWUpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2FuaW1hdGlvbnNUb1Byb2Nlc3MuYWRkKGFu
aW1hdGlvbk5hbWUsIEFuaW1hdGlvblByb2Nlc3NpbmdBY3Rpb24oUmVtb3ZlKSk7CisgICAgbm90
ZUxheWVyUHJvcGVydHlDaGFuZ2VkKEFuaW1hdGlvbkNoYW5nZWQpOworfQorCit2b2lkIEdyYXBo
aWNzTGF5ZXJDQTo6YW5pbWF0aW9uRGlkU3RhcnQoQ0FBbmltYXRpb24qIGNhQW5pbWF0aW9uKQor
eworICAgIGJvb2wgaGFkTm9uWmVyb0JlZ2luVGltZSA9IFtbY2FBbmltYXRpb24gdmFsdWVGb3JL
ZXk6V2ViS2l0QW5pbWF0aW9uQmVnaW5UaW1lU2V0S2V5XSBib29sVmFsdWVdOworCisgICAgZG91
YmxlIHN0YXJ0VGltZTsKKyAgICBpZiAoaGFkTm9uWmVyb0JlZ2luVGltZSkgeworICAgICAgICAv
LyBXZSBkb24ndCBrbm93IHdoYXQgdGltZSBDQSB1c2VkIHRvIGNvbW1pdCB0aGUgYW5pbWF0aW9u
LCBzbyBqdXN0IHVzZSB0aGUgY3VycmVudCB0aW1lCisgICAgICAgIC8vIChldmVuIHRob3VnaCB0
aGlzIHdpbGwgYmUgc2xpZ2h0bHkgb2ZmKS4KKyAgICAgICAgc3RhcnRUaW1lID0gV2ViQ29yZTo6
bWVkaWFUaW1lVG9DdXJyZW50VGltZShDQUN1cnJlbnRNZWRpYVRpbWUoKSk7CisgICAgfSBlbHNl
CisgICAgICAgIHN0YXJ0VGltZSA9IFdlYkNvcmU6Om1lZGlhVGltZVRvQ3VycmVudFRpbWUoW2Nh
QW5pbWF0aW9uIGJlZ2luVGltZV0pOworCisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2Ns
aWVudC0+bm90aWZ5QW5pbWF0aW9uU3RhcnRlZCh0aGlzLCBzdGFydFRpbWUpOworfQorCit2b2lk
IEdyYXBoaWNzTGF5ZXJDQTo6c2V0Q29udGVudHNUb0ltYWdlKEltYWdlKiBpbWFnZSkKK3sKKyAg
ICBpZiAoaW1hZ2UpIHsKKyAgICAgICAgQ0dJbWFnZVJlZiBuZXdJbWFnZSA9IGltYWdlLT5uYXRp
dmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgICAgICBpZiAoIW5ld0ltYWdlKQorICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgIC8vIENoZWNrIHRvIHNlZSBpZiB0aGUgaW1hZ2UgY2hh
bmdlZDsgd2UgaGF2ZSB0byBkbyB0aGlzIGJlY2F1c2UgdGhlIGNhbGwgdG8KKyAgICAgICAgLy8g
Q0dJbWFnZUNyZWF0ZUNvcHlXaXRoQ29sb3JTcGFjZSgpIGJlbG93IGNhbiBjcmVhdGUgYSBuZXcg
aW1hZ2UgZXZlcnkgdGltZS4KKyAgICAgICAgaWYgKG1fdW5jb3JyZWN0ZWRDb250ZW50c0ltYWdl
ICYmIG1fdW5jb3JyZWN0ZWRDb250ZW50c0ltYWdlLmdldCgpID09IG5ld0ltYWdlKQorICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICAgICAgbV91bmNvcnJlY3RlZENvbnRlbnRzSW1h
Z2UgPSBuZXdJbWFnZTsKKyAgICAgICAgbV9wZW5kaW5nQ29udGVudHNJbWFnZSA9IG5ld0ltYWdl
OworICAgICAgICBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSA9IENHSW1hZ2VHZXRDb2xvclNw
YWNlKG1fcGVuZGluZ0NvbnRlbnRzSW1hZ2UuZ2V0KCkpOworCisgICAgICAgIHN0YXRpYyBDR0Nv
bG9yU3BhY2VSZWYgZGV2aWNlUkdCID0gQ0dDb2xvclNwYWNlQ3JlYXRlRGV2aWNlUkdCKCk7Cisg
ICAgICAgIGlmIChjb2xvclNwYWNlICYmIENGRXF1YWwoY29sb3JTcGFjZSwgZGV2aWNlUkdCKSkg
eworICAgICAgICAgICAgLy8gQ29yZUdyYXBoaWNzIHJlbmRlcnMgaW1hZ2VzIHRhZ2dlZCB3aXRo
IERldmljZVJHQiB1c2luZyB0aGUgY29sb3Igc3BhY2Ugb2YgdGhlIG1haW4gZGlzcGxheS4gV2hl
biB3ZSBoYW5kIHN1Y2gKKyAgICAgICAgICAgIC8vIGltYWdlcyB0byBDQSB3ZSBuZWVkIHRvIHRh
ZyB0aGVtIHNpbWlsYXJseSBzbyBDQSByZW5kZXJpbmcgbWF0Y2hlcyBDRyByZW5kZXJpbmcuCisg
ICAgICAgICAgICBzdGF0aWMgQ0dDb2xvclNwYWNlUmVmIGdlbmVyaWNSR0IgPSBDR0Rpc3BsYXlD
b3B5Q29sb3JTcGFjZShrQ0dEaXJlY3RNYWluRGlzcGxheSk7CisgICAgICAgICAgICBtX3BlbmRp
bmdDb250ZW50c0ltYWdlLmFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZUNvcHlXaXRoQ29sb3JTcGFjZSht
X3BlbmRpbmdDb250ZW50c0ltYWdlLmdldCgpLCBnZW5lcmljUkdCKSk7CisgICAgICAgIH0KKyAg
ICAgICAgbV9jb250ZW50c0xheWVyUHVycG9zZSA9IENvbnRlbnRzTGF5ZXJGb3JJbWFnZTsKKyAg
ICAgICAgaWYgKCFtX2NvbnRlbnRzTGF5ZXIpCisgICAgICAgICAgICBub3RlU3VibGF5ZXJzQ2hh
bmdlZCgpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fdW5jb3JyZWN0ZWRDb250ZW50c0ltYWdl
ID0gMDsKKyAgICAgICAgbV9wZW5kaW5nQ29udGVudHNJbWFnZSA9IDA7CisgICAgICAgIG1fY29u
dGVudHNMYXllclB1cnBvc2UgPSBOb0NvbnRlbnRzTGF5ZXI7CisgICAgICAgIGlmIChtX2NvbnRl
bnRzTGF5ZXIpCisgICAgICAgICAgICBub3RlU3VibGF5ZXJzQ2hhbmdlZCgpOworICAgIH0KKwor
ICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChDb250ZW50c0ltYWdlQ2hhbmdlZCk7Cit9CisK
K3ZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRDb250ZW50c1RvTWVkaWEoUGxhdGZvcm1MYXllciog
bWVkaWFMYXllcikKK3sKKyAgICBpZiAobWVkaWFMYXllciA9PSBtX2NvbnRlbnRzTGF5ZXIpCisg
ICAgICAgIHJldHVybjsKKworICAgIG1fY29udGVudHNMYXllciA9IG1lZGlhTGF5ZXI7CisgICAg
bV9jb250ZW50c0xheWVyUHVycG9zZSA9IG1lZGlhTGF5ZXIgPyBDb250ZW50c0xheWVyRm9yTWVk
aWEgOiBOb0NvbnRlbnRzTGF5ZXI7CisKKyAgICBub3RlU3VibGF5ZXJzQ2hhbmdlZCgpOworICAg
IG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChDb250ZW50c01lZGlhTGF5ZXJDaGFuZ2VkKTsKK30K
Kwordm9pZCBHcmFwaGljc0xheWVyQ0E6OmRpZERpc3BsYXkoUGxhdGZvcm1MYXllciogbGF5ZXIp
Cit7CisgICAgQ0FMYXllciogc291cmNlTGF5ZXI7CisgICAgTGF5ZXJNYXAqIGxheWVyQ2xvbmVN
YXA7CisKKyAgICBpZiAobGF5ZXIgPT0gbV9sYXllcikgeworICAgICAgICBzb3VyY2VMYXllciA9
IG1fbGF5ZXIuZ2V0KCk7CisgICAgICAgIGxheWVyQ2xvbmVNYXAgPSBtX2xheWVyQ2xvbmVzLmdl
dCgpOworICAgIH0gZWxzZSBpZiAobGF5ZXIgPT0gbV9jb250ZW50c0xheWVyKSB7CisgICAgICAg
IHNvdXJjZUxheWVyID0gbV9jb250ZW50c0xheWVyLmdldCgpOworICAgICAgICBsYXllckNsb25l
TWFwID0gbV9jb250ZW50c0xheWVyQ2xvbmVzLmdldCgpOworICAgIH0gZWxzZQorICAgICAgICBy
ZXR1cm47CisKKyAgICBpZiAobGF5ZXJDbG9uZU1hcCkgeworICAgICAgICBMYXllck1hcDo6Y29u
c3RfaXRlcmF0b3IgZW5kID0gbGF5ZXJDbG9uZU1hcC0+ZW5kKCk7CisgICAgICAgIGZvciAoTGF5
ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbGF5ZXJDbG9uZU1hcC0+YmVnaW4oKTsgaXQgIT0g
ZW5kOyArK2l0KSB7CisgICAgICAgICAgICBDQUxheWVyICpjdXJyQ2xvbmUgPSBpdC0+c2Vjb25k
LmdldCgpOworICAgICAgICAgICAgaWYgKCFjdXJyQ2xvbmUpCisgICAgICAgICAgICAgICAgY29u
dGludWU7CisKKyAgICAgICAgICAgIGlmIChbY3VyckNsb25lIGNvbnRlbnRzXSAhPSBbc291cmNl
TGF5ZXIgY29udGVudHNdKQorICAgICAgICAgICAgICAgIFtjdXJyQ2xvbmUgc2V0Q29udGVudHM6
W3NvdXJjZUxheWVyIGNvbnRlbnRzXV07CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgW2N1cnJDbG9uZSBzZXRDb250ZW50c0NoYW5nZWRdOworICAgICAgICB9CisgICAgfQorfQor
Cit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c3luY0NvbXBvc2l0aW5nU3RhdGUoKQoreworICAgIHJl
Y3Vyc2l2ZUNvbW1pdENoYW5nZXMoKTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnN5bmND
b21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSgpCit7CisgICAgY29tbWl0TGF5ZXJDaGFu
Z2VzQmVmb3JlU3VibGF5ZXJzKCk7CisgICAgY29tbWl0TGF5ZXJDaGFuZ2VzQWZ0ZXJTdWJsYXll
cnMoKTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnJlY3Vyc2l2ZUNvbW1pdENoYW5nZXMo
KQoreworICAgIGNvbW1pdExheWVyQ2hhbmdlc0JlZm9yZVN1YmxheWVycygpOworCisgICAgaWYg
KG1fbWFza0xheWVyKQorICAgICAgICBzdGF0aWNfY2FzdDxHcmFwaGljc0xheWVyQ0EqPihtX21h
c2tMYXllciktPmNvbW1pdExheWVyQ2hhbmdlc0JlZm9yZVN1YmxheWVycygpOworCisgICAgY29u
c3QgVmVjdG9yPEdyYXBoaWNzTGF5ZXIqPiYgY2hpbGRMYXllcnMgPSBjaGlsZHJlbigpOworICAg
IHNpemVfdCBudW1DaGlsZHJlbiA9IGNoaWxkTGF5ZXJzLnNpemUoKTsKKyAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG51bUNoaWxkcmVuOyArK2kpIHsKKyAgICAgICAgR3JhcGhpY3NMYXllckNB
KiBjdXJDaGlsZCA9IHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXJDQSo+KGNoaWxkTGF5ZXJzW2ld
KTsKKyAgICAgICAgY3VyQ2hpbGQtPnJlY3Vyc2l2ZUNvbW1pdENoYW5nZXMoKTsKKyAgICB9CisK
KyAgICBpZiAobV9yZXBsaWNhTGF5ZXIpCisgICAgICAgIHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5
ZXJDQSo+KG1fcmVwbGljYUxheWVyKS0+cmVjdXJzaXZlQ29tbWl0Q2hhbmdlcygpOworCisgICAg
aWYgKG1fbWFza0xheWVyKQorICAgICAgICBzdGF0aWNfY2FzdDxHcmFwaGljc0xheWVyQ0EqPiht
X21hc2tMYXllciktPmNvbW1pdExheWVyQ2hhbmdlc0FmdGVyU3VibGF5ZXJzKCk7CisKKyAgICBj
b21taXRMYXllckNoYW5nZXNBZnRlclN1YmxheWVycygpOworfQorCit2b2lkIEdyYXBoaWNzTGF5
ZXJDQTo6Y29tbWl0TGF5ZXJDaGFuZ2VzQmVmb3JlU3VibGF5ZXJzKCkKK3sKKyAgICBpZiAoIW1f
dW5jb21taXR0ZWRDaGFuZ2VzKQorICAgICAgICByZXR1cm47CisKKyAgICBCRUdJTl9CTE9DS19P
QkpDX0VYQ0VQVElPTlMKKworICAgIC8vIE5lZWQgdG8gaGFuZGxlIFByZXNlcnZlczNEQ2hhbmdl
ZCBmaXJzdCwgYmVjYXVzZSBpdCBhZmZlY3RzIHdoaWNoIGxheWVycyBzdWJzZXF1ZW50IHByb3Bl
cnRpZXMgYXJlIGFwcGxpZWQgdG8KKyAgICBpZiAobV91bmNvbW1pdHRlZENoYW5nZXMgJiAoUHJl
c2VydmVzM0RDaGFuZ2VkIHwgUmVwbGljYXRlZExheWVyQ2hhbmdlZCkpCisgICAgICAgIHVwZGF0
ZVN0cnVjdHVyYWxMYXllcigpOworCisgICAgaWYgKG1fdW5jb21taXR0ZWRDaGFuZ2VzICYgTmFt
ZUNoYW5nZWQpCisgICAgICAgIHVwZGF0ZUxheWVyTmFtZXMoKTsKKworICAgIGlmIChtX3VuY29t
bWl0dGVkQ2hhbmdlcyAmIENvbnRlbnRzSW1hZ2VDaGFuZ2VkKSAvLyBOZWVkcyB0byBoYXBwZW4g
YmVmb3JlIENoaWxkcmVuQ2hhbmdlZAorICAgICAgICB1cGRhdGVDb250ZW50c0ltYWdlKCk7Cisg
ICAgICAgIAorICAgIGlmIChtX3VuY29tbWl0dGVkQ2hhbmdlcyAmIENvbnRlbnRzTWVkaWFMYXll
ckNoYW5nZWQpIC8vIE5lZWRzIHRvIGhhcHBlbiBiZWZvcmUgQ2hpbGRyZW5DaGFuZ2VkCisgICAg
ICAgIHVwZGF0ZUNvbnRlbnRzTWVkaWFMYXllcigpOworICAgIAorICAgIGlmIChtX3VuY29tbWl0
dGVkQ2hhbmdlcyAmIENvbnRlbnRzQ2FudmFzTGF5ZXJDaGFuZ2VkKSAvLyBOZWVkcyB0byBoYXBw
ZW4gYmVmb3JlIENoaWxkcmVuQ2hhbmdlZAorICAgICAgICB1cGRhdGVDb250ZW50c0NhbnZhc0xh
eWVyKCk7CisgICAgCisgICAgaWYgKG1fdW5jb21taXR0ZWRDaGFuZ2VzICYgQmFja2dyb3VuZENv
bG9yQ2hhbmdlZCkgIC8vIE5lZWRzIHRvIGhhcHBlbiBiZWZvcmUgQ2hpbGRyZW5DaGFuZ2VkLCBh
bmQgYWZ0ZXIgdXBkYXRpbmcgaW1hZ2Ugb3IgdmlkZW8KKyAgICAgICAgdXBkYXRlTGF5ZXJCYWNr
Z3JvdW5kQ29sb3IoKTsKKworICAgIGlmIChtX3VuY29tbWl0dGVkQ2hhbmdlcyAmIENoaWxkcmVu
Q2hhbmdlZCkKKyAgICAgICAgdXBkYXRlU3VibGF5ZXJMaXN0KCk7CisKKyAgICBpZiAobV91bmNv
bW1pdHRlZENoYW5nZXMgJiBQb3NpdGlvbkNoYW5nZWQpCisgICAgICAgIHVwZGF0ZUxheWVyUG9z
aXRpb24oKTsKKyAgICAKKyAgICBpZiAobV91bmNvbW1pdHRlZENoYW5nZXMgJiBBbmNob3JQb2lu
dENoYW5nZWQpCisgICAgICAgIHVwZGF0ZUFuY2hvclBvaW50KCk7CisgICAgCisgICAgaWYgKG1f
dW5jb21taXR0ZWRDaGFuZ2VzICYgU2l6ZUNoYW5nZWQpCisgICAgICAgIHVwZGF0ZUxheWVyU2l6
ZSgpOworCisgICAgaWYgKG1fdW5jb21taXR0ZWRDaGFuZ2VzICYgVHJhbnNmb3JtQ2hhbmdlZCkK
KyAgICAgICAgdXBkYXRlVHJhbnNmb3JtKCk7CisKKyAgICBpZiAobV91bmNvbW1pdHRlZENoYW5n
ZXMgJiBDaGlsZHJlblRyYW5zZm9ybUNoYW5nZWQpCisgICAgICAgIHVwZGF0ZUNoaWxkcmVuVHJh
bnNmb3JtKCk7CisgICAgCisgICAgaWYgKG1fdW5jb21taXR0ZWRDaGFuZ2VzICYgTWFza3NUb0Jv
dW5kc0NoYW5nZWQpCisgICAgICAgIHVwZGF0ZU1hc2tzVG9Cb3VuZHMoKTsKKyAgICAKKyAgICBp
ZiAobV91bmNvbW1pdHRlZENoYW5nZXMgJiBEcmF3c0NvbnRlbnRDaGFuZ2VkKQorICAgICAgICB1
cGRhdGVMYXllckRyYXdzQ29udGVudCgpOworCisgICAgaWYgKG1fdW5jb21taXR0ZWRDaGFuZ2Vz
ICYgQ29udGVudHNPcGFxdWVDaGFuZ2VkKQorICAgICAgICB1cGRhdGVDb250ZW50c09wYXF1ZSgp
OworCisgICAgaWYgKG1fdW5jb21taXR0ZWRDaGFuZ2VzICYgQmFja2ZhY2VWaXNpYmlsaXR5Q2hh
bmdlZCkKKyAgICAgICAgdXBkYXRlQmFja2ZhY2VWaXNpYmlsaXR5KCk7CisKKyAgICBpZiAobV91
bmNvbW1pdHRlZENoYW5nZXMgJiBPcGFjaXR5Q2hhbmdlZCkKKyAgICAgICAgdXBkYXRlT3BhY2l0
eU9uTGF5ZXIoKTsKKyAgICAKKyAgICBpZiAobV91bmNvbW1pdHRlZENoYW5nZXMgJiBBbmltYXRp
b25DaGFuZ2VkKQorICAgICAgICB1cGRhdGVMYXllckFuaW1hdGlvbnMoKTsKKyAgICAKKyAgICBp
ZiAobV91bmNvbW1pdHRlZENoYW5nZXMgJiBEaXJ0eVJlY3RzQ2hhbmdlZCkKKyAgICAgICAgcmVw
YWludExheWVyRGlydHlSZWN0cygpOworICAgIAorICAgIGlmIChtX3VuY29tbWl0dGVkQ2hhbmdl
cyAmIENvbnRlbnRzUmVjdENoYW5nZWQpCisgICAgICAgIHVwZGF0ZUNvbnRlbnRzUmVjdCgpOwor
CisgICAgaWYgKG1fdW5jb21taXR0ZWRDaGFuZ2VzICYgTWFza0xheWVyQ2hhbmdlZCkKKyAgICAg
ICAgdXBkYXRlTWFza0xheWVyKCk7CisKKyAgICBpZiAobV91bmNvbW1pdHRlZENoYW5nZXMgJiBD
b250ZW50c05lZWRzRGlzcGxheSkKKyAgICAgICAgdXBkYXRlQ29udGVudHNOZWVkc0Rpc3BsYXko
KTsKKworICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKK30KKwordm9pZCBHcmFwaGljc0xh
eWVyQ0E6OmNvbW1pdExheWVyQ2hhbmdlc0FmdGVyU3VibGF5ZXJzKCkKK3sKKyAgICBpZiAoIW1f
dW5jb21taXR0ZWRDaGFuZ2VzKQorICAgICAgICByZXR1cm47CisKKyAgICBCRUdJTl9CTE9DS19P
QkpDX0VYQ0VQVElPTlMKKworICAgIGlmIChtX3VuY29tbWl0dGVkQ2hhbmdlcyAmIFJlcGxpY2F0
ZWRMYXllckNoYW5nZWQpCisgICAgICAgIHVwZGF0ZVJlcGxpY2F0ZWRMYXllcnMoKTsKKworICAg
IG1fdW5jb21taXR0ZWRDaGFuZ2VzID0gTm9DaGFuZ2U7CisgICAgRU5EX0JMT0NLX09CSkNfRVhD
RVBUSU9OUworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlTGF5ZXJOYW1lcygpCit7
CisgICAgc3dpdGNoIChzdHJ1Y3R1cmFsTGF5ZXJQdXJwb3NlKCkpIHsKKyAgICAgICAgY2FzZSBT
dHJ1Y3R1cmFsTGF5ZXJGb3JQcmVzZXJ2ZXMzRDoKKyAgICAgICAgICAgIFttX3N0cnVjdHVyYWxM
YXllci5nZXQoKSBzZXROYW1lOigiVHJhbnNmb3JtIGxheWVyICIgKyBuYW1lKCkpXTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFN0cnVjdHVyYWxMYXllckZvclJlcGxpY2FGbGF0
dGVuaW5nOgorICAgICAgICAgICAgW21fc3RydWN0dXJhbExheWVyLmdldCgpIHNldE5hbWU6KCJS
ZXBsaWNhIGZsYXR0ZW5pbmcgbGF5ZXIgIiArIG5hbWUoKSldOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgTm9TdHJ1Y3R1cmFsTGF5ZXI6CisgICAgICAgICAgICBicmVhazsKKyAg
ICB9CisgICAgW21fbGF5ZXIuZ2V0KCkgc2V0TmFtZTpuYW1lKCldOworfQorCit2b2lkIEdyYXBo
aWNzTGF5ZXJDQTo6dXBkYXRlU3VibGF5ZXJMaXN0KCkKK3sKKyAgICBOU011dGFibGVBcnJheSog
bmV3U3VibGF5ZXJzID0gbmlsOworCisgICAgY29uc3QgVmVjdG9yPEdyYXBoaWNzTGF5ZXIqPiYg
Y2hpbGRMYXllcnMgPSBjaGlsZHJlbigpOworCisgICAgaWYgKG1fc3RydWN0dXJhbExheWVyIHx8
IG1fY29udGVudHNMYXllciB8fCBjaGlsZExheWVycy5zaXplKCkgPiAwKSB7CisgICAgICAgIG5l
d1N1YmxheWVycyA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdOworCisgICAgICAgIGlm
IChtX3N0cnVjdHVyYWxMYXllcikgeworICAgICAgICAgICAgLy8gQWRkIHRoZSByZXBsaWNhIGxh
eWVyIGZpcnN0LgorICAgICAgICAgICAgaWYgKG1fcmVwbGljYUxheWVyKQorICAgICAgICAgICAg
ICAgIFtuZXdTdWJsYXllcnMgYWRkT2JqZWN0OnN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXJDQSo+
KG1fcmVwbGljYUxheWVyKS0+cHJpbWFyeUxheWVyKCldOworICAgICAgICAgICAgLy8gQWRkIHRo
ZSBwcmltYXJ5IGxheWVyLiBFdmVuIGlmIHdlIGhhdmUgbmVnYXRpdmUgei1vcmRlciBjaGlsZHJl
biwgdGhlIHByaW1hcnkgbGF5ZXIgYWx3YXlzIGNvbWVzIGJlaGluZC4KKyAgICAgICAgICAgIFtu
ZXdTdWJsYXllcnMgYWRkT2JqZWN0Om1fbGF5ZXIuZ2V0KCldOworICAgICAgICB9IGVsc2UgaWYg
KG1fY29udGVudHNMYXllcikgeworICAgICAgICAgICAgLy8gRklYTUU6IGFkZCB0aGUgY29udGVu
dHMgbGF5ZXIgaW4gdGhlIGNvcnJlY3Qgb3JkZXIgd2l0aCBuZWdhdGl2ZSB6LW9yZGVyIGNoaWxk
cmVuLgorICAgICAgICAgICAgLy8gVGhpcyBkb2VzIG5vdCBjYXVzZSB2aXNpYmxlIHJlbmRlcmlu
ZyBpc3N1ZXMgYmVjYXVzZSBjdXJyZW50bHkgY29udGVudHMgbGF5ZXJzIGFyZSBvbmx5IHVzZWQK
KyAgICAgICAgICAgIC8vIGZvciByZXBsYWNlZCBlbGVtZW50cyB0aGF0IGRvbid0IGhhdmUgY2hp
bGRyZW4uCisgICAgICAgICAgICBbbmV3U3VibGF5ZXJzIGFkZE9iamVjdDptX2NvbnRlbnRzTGF5
ZXIuZ2V0KCldOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBzaXplX3QgbnVtQ2hpbGRy
ZW4gPSBjaGlsZExheWVycy5zaXplKCk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bnVtQ2hpbGRyZW47ICsraSkgeworICAgICAgICAgICAgR3JhcGhpY3NMYXllckNBKiBjdXJDaGls
ZCA9IHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXJDQSo+KGNoaWxkTGF5ZXJzW2ldKTsKKyAgICAg
ICAgICAgIENBTGF5ZXIgKmNoaWxkTGF5ZXIgPSBjdXJDaGlsZC0+bGF5ZXJGb3JTdXBlcmxheWVy
KCk7CisgICAgICAgICAgICBbbmV3U3VibGF5ZXJzIGFkZE9iamVjdDpjaGlsZExheWVyXTsKKyAg
ICAgICAgfQorCisgICAgICAgIFtuZXdTdWJsYXllcnMgbWFrZU9iamVjdHNQZXJmb3JtU2VsZWN0
b3I6QHNlbGVjdG9yKHJlbW92ZUZyb21TdXBlcmxheWVyKV07CisgICAgfQorCisgICAgaWYgKG1f
c3RydWN0dXJhbExheWVyKSB7CisgICAgICAgIHNhZmVTZXRTdWJsYXllcnMobV9zdHJ1Y3R1cmFs
TGF5ZXIuZ2V0KCksIG5ld1N1YmxheWVycyk7CisKKyAgICAgICAgaWYgKG1fY29udGVudHNMYXll
cikgeworICAgICAgICAgICAgLy8gSWYgd2UgaGF2ZSBhIHRyYW5zZm9ybSBsYXllciwgdGhlbiB0
aGUgY29udGVudHMgbGF5ZXIgaXMgcGFyZW50ZWQgaW4gdGhlIAorICAgICAgICAgICAgLy8gcHJp
bWFyeSBsYXllciAod2hpY2ggaXMgaXRzZWxmIGEgY2hpbGQgb2YgdGhlIHRyYW5zZm9ybSBsYXll
cikuCisgICAgICAgICAgICBzYWZlU2V0U3VibGF5ZXJzKG1fbGF5ZXIuZ2V0KCksIG5pbCk7Cisg
ICAgICAgICAgICBbbV9sYXllci5nZXQoKSBhZGRTdWJsYXllcjptX2NvbnRlbnRzTGF5ZXIuZ2V0
KCldOworICAgICAgICB9CisgICAgfSBlbHNlCisgICAgICAgIHNhZmVTZXRTdWJsYXllcnMobV9s
YXllci5nZXQoKSwgbmV3U3VibGF5ZXJzKTsKKworICAgIFtuZXdTdWJsYXllcnMgcmVsZWFzZV07
Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjp1cGRhdGVMYXllclBvc2l0aW9uKCkKK3sKKyAg
ICBGbG9hdFNpemUgdXNlZFNpemUgPSBtX3VzaW5nVGlsZWRMYXllciA/IGNvbnN0cmFpbmVkU2l6
ZSgpIDogbV9zaXplOworCisgICAgLy8gUG9zaXRpb24gaXMgb2Zmc2V0IG9uIHRoZSBsYXllciBi
eSB0aGUgbGF5ZXIgYW5jaG9yIHBvaW50LgorICAgIENHUG9pbnQgcG9zUG9pbnQgPSBDR1BvaW50
TWFrZShtX3Bvc2l0aW9uLngoKSArIG1fYW5jaG9yUG9pbnQueCgpICogdXNlZFNpemUud2lkdGgo
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9wb3NpdGlvbi55KCkgKyBt
X2FuY2hvclBvaW50LnkoKSAqIHVzZWRTaXplLmhlaWdodCgpKTsKKyAgICAKKyAgICBbcHJpbWFy
eUxheWVyKCkgc2V0UG9zaXRpb246cG9zUG9pbnRdOworCisgICAgaWYgKExheWVyTWFwKiBsYXll
ckNsb25lTWFwID0gcHJpbWFyeUxheWVyQ2xvbmVzKCkpIHsKKyAgICAgICAgTGF5ZXJNYXA6OmNv
bnN0X2l0ZXJhdG9yIGVuZCA9IGxheWVyQ2xvbmVNYXAtPmVuZCgpOworICAgICAgICBmb3IgKExh
eWVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGxheWVyQ2xvbmVNYXAtPmJlZ2luKCk7IGl0ICE9
IGVuZDsgKytpdCkgeworICAgICAgICAgICAgQ0dQb2ludCBjbG9uZVBvc2l0aW9uID0gcG9zUG9p
bnQ7CisgICAgICAgICAgICBpZiAobV9yZXBsaWNhTGF5ZXIgJiYgaXNSZXBsaWNhdGVkUm9vdENs
b25lKGl0LT5maXJzdCkpIHsKKyAgICAgICAgICAgICAgICAvLyBNYWludGFpbiB0aGUgc3BlY2lh
bC1jYXNlIHBvc2l0aW9uIGZvciB0aGUgcm9vdCBvZiBhIGNsb25lIHN1YnRyZWUsCisgICAgICAg
ICAgICAgICAgLy8gd2hpY2ggd2Ugc2V0IHVwIGluIHJlcGxpY2F0ZWRMYXllclJvb3QoKS4KKyAg
ICAgICAgICAgICAgICBjbG9uZVBvc2l0aW9uID0gcG9zaXRpb25Gb3JDbG9uZVJvb3RMYXllcigp
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgQ0FMYXllciAqY3VyckxheWVyID0gaXQtPnNl
Y29uZC5nZXQoKTsKKyAgICAgICAgICAgIFtjdXJyTGF5ZXIgc2V0UG9zaXRpb246Y2xvbmVQb3Np
dGlvbl07CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjp1cGRh
dGVMYXllclNpemUoKQoreworICAgIENHUmVjdCByZWN0ID0gQ0dSZWN0TWFrZSgwLCAwLCBtX3Np
emUud2lkdGgoKSwgbV9zaXplLmhlaWdodCgpKTsKKyAgICBpZiAobV9zdHJ1Y3R1cmFsTGF5ZXIp
IHsKKyAgICAgICAgW21fc3RydWN0dXJhbExheWVyLmdldCgpIHNldEJvdW5kczpyZWN0XTsKKyAg
ICAgICAgCisgICAgICAgIGlmIChMYXllck1hcCogbGF5ZXJDbG9uZU1hcCA9IG1fc3RydWN0dXJh
bExheWVyQ2xvbmVzLmdldCgpKSB7CisgICAgICAgICAgICBMYXllck1hcDo6Y29uc3RfaXRlcmF0
b3IgZW5kID0gbGF5ZXJDbG9uZU1hcC0+ZW5kKCk7CisgICAgICAgICAgICBmb3IgKExheWVyTWFw
Ojpjb25zdF9pdGVyYXRvciBpdCA9IGxheWVyQ2xvbmVNYXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsg
KytpdCkKKyAgICAgICAgICAgICAgICBbaXQtPnNlY29uZC5nZXQoKSBzZXRCb3VuZHM6cmVjdF07
CisgICAgICAgIH0KKworICAgICAgICAvLyBUaGUgYW5jaG9yIG9mIHRoZSBjb250ZW50cyBsYXll
ciBpcyBhbHdheXMgYXQgMC41LCAwLjUsIHNvIHRoZSBwb3NpdGlvbiBpcyBjZW50ZXItcmVsYXRp
dmUuCisgICAgICAgIENHUG9pbnQgY2VudGVyUG9pbnQgPSBDR1BvaW50TWFrZShtX3NpemUud2lk
dGgoKSAvIDIuMGYsIG1fc2l6ZS5oZWlnaHQoKSAvIDIuMGYpOworICAgICAgICBbbV9sYXllci5n
ZXQoKSBzZXRQb3NpdGlvbjpjZW50ZXJQb2ludF07CisKKyAgICAgICAgaWYgKExheWVyTWFwKiBs
YXllckNsb25lTWFwID0gbV9sYXllckNsb25lcy5nZXQoKSkgeworICAgICAgICAgICAgTGF5ZXJN
YXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGxheWVyQ2xvbmVNYXAtPmVuZCgpOworICAgICAgICAg
ICAgZm9yIChMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBsYXllckNsb25lTWFwLT5iZWdp
bigpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgICAgICAgICAgW2l0LT5zZWNvbmQuZ2V0KCkg
c2V0UG9zaXRpb246Y2VudGVyUG9pbnRdOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIGJv
b2wgbmVlZFRpbGVkTGF5ZXIgPSByZXF1aXJlc1RpbGVkTGF5ZXIobV9zaXplKTsKKyAgICBpZiAo
bmVlZFRpbGVkTGF5ZXIgIT0gbV91c2luZ1RpbGVkTGF5ZXIpCisgICAgICAgIHN3YXBGcm9tT3JU
b1RpbGVkTGF5ZXIobmVlZFRpbGVkTGF5ZXIpOworICAgIAorICAgIGlmIChtX3VzaW5nVGlsZWRM
YXllcikgeworICAgICAgICBGbG9hdFNpemUgc2l6ZVRvVXNlID0gY29uc3RyYWluZWRTaXplKCk7
CisgICAgICAgIHJlY3QgPSBDR1JlY3RNYWtlKDAsIDAsIHNpemVUb1VzZS53aWR0aCgpLCBzaXpl
VG9Vc2UuaGVpZ2h0KCkpOworICAgIH0KKyAgICAKKyAgICBbbV9sYXllci5nZXQoKSBzZXRCb3Vu
ZHM6cmVjdF07CisgICAgaWYgKExheWVyTWFwKiBsYXllckNsb25lTWFwID0gbV9sYXllckNsb25l
cy5nZXQoKSkgeworICAgICAgICBMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbGF5ZXJD
bG9uZU1hcC0+ZW5kKCk7CisgICAgICAgIGZvciAoTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0
ID0gbGF5ZXJDbG9uZU1hcC0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICAgICAg
W2l0LT5zZWNvbmQuZ2V0KCkgc2V0Qm91bmRzOnJlY3RdOworICAgIH0KKyAgICAKKyAgICAvLyBD
b250ZW50cyB0cmFuc2Zvcm0gbWF5IGRlcGVuZCBvbiBoZWlnaHQuCisgICAgdXBkYXRlQ29udGVu
dHNUcmFuc2Zvcm0oKTsKKworICAgIC8vIE5vdGUgdGhhdCB3ZSBkb24ndCByZXNpemUgbV9jb250
ZW50c0xheWVyLiBJdCdzIHVwIHRoZSBjYWxsZXIgdG8gZG8gdGhhdC4KKworICAgIC8vIGlmIHdl
J3ZlIGNoYW5nZWQgdGhlIGJvdW5kcywgd2UgbmVlZCB0byByZWNhbGN1bGF0ZSB0aGUgcG9zaXRp
b24KKyAgICAvLyBvZiB0aGUgbGF5ZXIsIHRha2luZyBhbmNob3IgcG9pbnQgaW50byBhY2NvdW50
LgorICAgIHVwZGF0ZUxheWVyUG9zaXRpb24oKTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6
OnVwZGF0ZUFuY2hvclBvaW50KCkKK3sKKyAgICBbcHJpbWFyeUxheWVyKCkgc2V0QW5jaG9yUG9p
bnQ6RmxvYXRQb2ludChtX2FuY2hvclBvaW50LngoKSwgbV9hbmNob3JQb2ludC55KCkpXTsKKyNp
ZiBIQVZFX01PREVSTl9RVUFSVFpDT1JFCisgICAgW3ByaW1hcnlMYXllcigpIHNldEFuY2hvclBv
aW50WjptX2FuY2hvclBvaW50LnooKV07CisjZW5kaWYKKworICAgIGlmIChMYXllck1hcCogbGF5
ZXJDbG9uZU1hcCA9IHByaW1hcnlMYXllckNsb25lcygpKSB7CisgICAgICAgIExheWVyTWFwOjpj
b25zdF9pdGVyYXRvciBlbmQgPSBsYXllckNsb25lTWFwLT5lbmQoKTsKKyAgICAgICAgZm9yIChM
YXllck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBsYXllckNsb25lTWFwLT5iZWdpbigpOyBpdCAh
PSBlbmQ7ICsraXQpIHsgICAKKyAgICAgICAgICAgIENBTGF5ZXIgKmN1cnJMYXllciA9IGl0LT5z
ZWNvbmQuZ2V0KCk7CisgICAgICAgICAgICBbY3VyckxheWVyIHNldEFuY2hvclBvaW50OkZsb2F0
UG9pbnQobV9hbmNob3JQb2ludC54KCksIG1fYW5jaG9yUG9pbnQueSgpKV07CisjaWYgSEFWRV9N
T0RFUk5fUVVBUlRaQ09SRQorICAgICAgICAgICAgW2N1cnJMYXllciBzZXRBbmNob3JQb2ludFo6
bV9hbmNob3JQb2ludC56KCldOworI2VuZGlmCisgICAgICAgIH0KKyAgICB9CisKKyAgICB1cGRh
dGVMYXllclBvc2l0aW9uKCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjp1cGRhdGVUcmFu
c2Zvcm0oKQoreworICAgIENBVHJhbnNmb3JtM0QgdHJhbnNmb3JtOworICAgIGNvcHlUcmFuc2Zv
cm0odHJhbnNmb3JtLCBtX3RyYW5zZm9ybSk7CisgICAgW3ByaW1hcnlMYXllcigpIHNldFRyYW5z
Zm9ybTp0cmFuc2Zvcm1dOworCisgICAgaWYgKExheWVyTWFwKiBsYXllckNsb25lTWFwID0gcHJp
bWFyeUxheWVyQ2xvbmVzKCkpIHsKKyAgICAgICAgTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVu
ZCA9IGxheWVyQ2xvbmVNYXAtPmVuZCgpOworICAgICAgICBmb3IgKExheWVyTWFwOjpjb25zdF9p
dGVyYXRvciBpdCA9IGxheWVyQ2xvbmVNYXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewor
ICAgICAgICAgICAgQ0FMYXllciAqY3VyckxheWVyID0gaXQtPnNlY29uZC5nZXQoKTsKKyAgICAg
ICAgICAgIGlmIChtX3JlcGxpY2FMYXllciAmJiBpc1JlcGxpY2F0ZWRSb290Q2xvbmUoaXQtPmZp
cnN0KSkgeworICAgICAgICAgICAgICAgIC8vIE1haW50YWluIHRoZSBzcGVjaWFsLWNhc2UgdHJh
bnNmb3JtIGZvciB0aGUgcm9vdCBvZiBhIGNsb25lIHN1YnRyZWUsCisgICAgICAgICAgICAgICAg
Ly8gd2hpY2ggd2Ugc2V0IHVwIGluIHJlcGxpY2F0ZWRMYXllclJvb3QoKS4KKyAgICAgICAgICAg
ICAgICBbY3VyckxheWVyIHNldFRyYW5zZm9ybTpDQVRyYW5zZm9ybTNESWRlbnRpdHldOworICAg
ICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgW2N1cnJMYXllciBzZXRUcmFuc2Zvcm06
dHJhbnNmb3JtXTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6
OnVwZGF0ZUNoaWxkcmVuVHJhbnNmb3JtKCkKK3sKKyAgICBDQVRyYW5zZm9ybTNEIHRyYW5zZm9y
bTsKKyAgICBjb3B5VHJhbnNmb3JtKHRyYW5zZm9ybSwgbV9jaGlsZHJlblRyYW5zZm9ybSk7Cisg
ICAgW3ByaW1hcnlMYXllcigpIHNldFN1YmxheWVyVHJhbnNmb3JtOnRyYW5zZm9ybV07CisKKyAg
ICBpZiAoTGF5ZXJNYXAqIGxheWVyQ2xvbmVNYXAgPSBwcmltYXJ5TGF5ZXJDbG9uZXMoKSkgewor
ICAgICAgICBMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbGF5ZXJDbG9uZU1hcC0+ZW5k
KCk7CisgICAgICAgIGZvciAoTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbGF5ZXJDbG9u
ZU1hcC0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgICAgICBDQUxheWVyICpj
dXJyTGF5ZXIgPSBpdC0+c2Vjb25kLmdldCgpOworICAgICAgICAgICAgW2N1cnJMYXllciBzZXRT
dWJsYXllclRyYW5zZm9ybTp0cmFuc2Zvcm1dOworICAgICAgICB9CisgICAgfQorfQorCit2b2lk
IEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlTWFza3NUb0JvdW5kcygpCit7CisgICAgW21fbGF5ZXIu
Z2V0KCkgc2V0TWFza3NUb0JvdW5kczptX21hc2tzVG9Cb3VuZHNdOworCisgICAgaWYgKExheWVy
TWFwKiBsYXllckNsb25lTWFwID0gbV9sYXllckNsb25lcy5nZXQoKSkgeworICAgICAgICBMYXll
ck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbGF5ZXJDbG9uZU1hcC0+ZW5kKCk7CisgICAgICAg
IGZvciAoTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbGF5ZXJDbG9uZU1hcC0+YmVnaW4o
KTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgICAgICBDQUxheWVyICpjdXJyTGF5ZXIgPSBp
dC0+c2Vjb25kLmdldCgpOworICAgICAgICAgICAgW2N1cnJMYXllciBzZXRNYXNrc1RvQm91bmRz
Om1fbWFza3NUb0JvdW5kc107CisgICAgICAgIH0KKyAgICB9CisKKyAgICB1cGRhdGVEZWJ1Z0lu
ZGljYXRvcnMoKTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUNvbnRlbnRzT3Bh
cXVlKCkKK3sKKyAgICBbbV9sYXllci5nZXQoKSBzZXRPcGFxdWU6bV9jb250ZW50c09wYXF1ZV07
CisKKyAgICBpZiAoTGF5ZXJNYXAqIGxheWVyQ2xvbmVNYXAgPSBtX2xheWVyQ2xvbmVzLmdldCgp
KSB7CisgICAgICAgIExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBsYXllckNsb25lTWFw
LT5lbmQoKTsKKyAgICAgICAgZm9yIChMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBsYXll
ckNsb25lTWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgICAgIENBTGF5
ZXIgKmN1cnJMYXllciA9IGl0LT5zZWNvbmQuZ2V0KCk7CisgICAgICAgICAgICBbY3VyckxheWVy
IHNldE9wYXF1ZTptX2NvbnRlbnRzT3BhcXVlXTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9p
ZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUJhY2tmYWNlVmlzaWJpbGl0eSgpCit7CisgICAgaWYg
KG1fc3RydWN0dXJhbExheWVyICYmIHN0cnVjdHVyYWxMYXllclB1cnBvc2UoKSA9PSBTdHJ1Y3R1
cmFsTGF5ZXJGb3JSZXBsaWNhRmxhdHRlbmluZykgeworICAgICAgICBbbV9zdHJ1Y3R1cmFsTGF5
ZXIuZ2V0KCkgc2V0RG91YmxlU2lkZWQ6bV9iYWNrZmFjZVZpc2liaWxpdHldOworCisgICAgICAg
IGlmIChMYXllck1hcCogbGF5ZXJDbG9uZU1hcCA9IG1fc3RydWN0dXJhbExheWVyQ2xvbmVzLmdl
dCgpKSB7CisgICAgICAgICAgICBMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbGF5ZXJD
bG9uZU1hcC0+ZW5kKCk7CisgICAgICAgICAgICBmb3IgKExheWVyTWFwOjpjb25zdF9pdGVyYXRv
ciBpdCA9IGxheWVyQ2xvbmVNYXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAg
ICAgICAgICAgIENBTGF5ZXIgKmN1cnJMYXllciA9IGl0LT5zZWNvbmQuZ2V0KCk7CisgICAgICAg
ICAgICAgICAgW2N1cnJMYXllciBzZXREb3VibGVTaWRlZDptX2JhY2tmYWNlVmlzaWJpbGl0eV07
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBbbV9sYXllci5nZXQoKSBz
ZXREb3VibGVTaWRlZDptX2JhY2tmYWNlVmlzaWJpbGl0eV07CisKKyAgICBpZiAoTGF5ZXJNYXAq
IGxheWVyQ2xvbmVNYXAgPSBtX2xheWVyQ2xvbmVzLmdldCgpKSB7CisgICAgICAgIExheWVyTWFw
Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBsYXllckNsb25lTWFwLT5lbmQoKTsKKyAgICAgICAgZm9y
IChMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBsYXllckNsb25lTWFwLT5iZWdpbigpOyBp
dCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgICAgIENBTGF5ZXIgKmN1cnJMYXllciA9IGl0LT5z
ZWNvbmQuZ2V0KCk7CisgICAgICAgICAgICBbY3VyckxheWVyIHNldERvdWJsZVNpZGVkOm1fYmFj
a2ZhY2VWaXNpYmlsaXR5XTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBHcmFwaGljc0xh
eWVyQ0E6OnVwZGF0ZVN0cnVjdHVyYWxMYXllcigpCit7CisgICAgZW5zdXJlU3RydWN0dXJhbExh
eWVyKHN0cnVjdHVyYWxMYXllclB1cnBvc2UoKSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNB
OjplbnN1cmVTdHJ1Y3R1cmFsTGF5ZXIoU3RydWN0dXJhbExheWVyUHVycG9zZSBwdXJwb3NlKQor
eworICAgIGlmIChwdXJwb3NlID09IE5vU3RydWN0dXJhbExheWVyKSB7CisgICAgICAgIGlmICht
X3N0cnVjdHVyYWxMYXllcikgeworICAgICAgICAgICAgLy8gUmVwbGFjZSB0aGUgdHJhbnNmb3Jt
TGF5ZXIgaW4gdGhlIHBhcmVudCB3aXRoIHRoaXMgbGF5ZXIuCisgICAgICAgICAgICBbbV9sYXll
ci5nZXQoKSByZW1vdmVGcm9tU3VwZXJsYXllcl07CisgICAgICAgICAgICBbW21fc3RydWN0dXJh
bExheWVyLmdldCgpIHN1cGVybGF5ZXJdIHJlcGxhY2VTdWJsYXllcjptX3N0cnVjdHVyYWxMYXll
ci5nZXQoKSB3aXRoOm1fbGF5ZXIuZ2V0KCldOworCisgICAgICAgICAgICBtb3ZlT3JDb3B5QW5p
bWF0aW9uc0ZvclByb3BlcnR5KE1vdmUsIEFuaW1hdGVkUHJvcGVydHlXZWJraXRUcmFuc2Zvcm0s
IG1fc3RydWN0dXJhbExheWVyLmdldCgpLCBtX2xheWVyLmdldCgpKTsKKyAgICAgICAgICAgIG1v
dmVPckNvcHlBbmltYXRpb25zRm9yUHJvcGVydHkoTW92ZSwgQW5pbWF0ZWRQcm9wZXJ0eU9wYWNp
dHksIG1fc3RydWN0dXJhbExheWVyLmdldCgpLCBtX2xheWVyLmdldCgpKTsKKworICAgICAgICAg
ICAgLy8gUmVsZWFzZSB0aGUgc3RydWN0dXJhbCBsYXllci4KKyAgICAgICAgICAgIG1fc3RydWN0
dXJhbExheWVyID0gMDsKKworICAgICAgICAgICAgLy8gVXBkYXRlIHRoZSBwcm9wZXJ0aWVzIG9m
IG1fbGF5ZXIgbm93IHRoYXQgd2Ugbm8gbG9uZ2VyIGhhdmUgYSBzdHJ1Y3R1cmFsIGxheWVyLgor
ICAgICAgICAgICAgdXBkYXRlTGF5ZXJQb3NpdGlvbigpOworICAgICAgICAgICAgdXBkYXRlTGF5
ZXJTaXplKCk7CisgICAgICAgICAgICB1cGRhdGVBbmNob3JQb2ludCgpOworICAgICAgICAgICAg
dXBkYXRlVHJhbnNmb3JtKCk7CisgICAgICAgICAgICB1cGRhdGVDaGlsZHJlblRyYW5zZm9ybSgp
OworCisgICAgICAgICAgICB1cGRhdGVTdWJsYXllckxpc3QoKTsKKyAgICAgICAgICAgIHVwZGF0
ZU9wYWNpdHlPbkxheWVyKCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICAKKyAgICBib29sIHN0cnVjdHVyYWxMYXllckNoYW5nZWQgPSBmYWxzZTsKKyAgICAKKyAgICBp
ZiAocHVycG9zZSA9PSBTdHJ1Y3R1cmFsTGF5ZXJGb3JQcmVzZXJ2ZXMzRCkgeworICAgICAgICBD
bGFzcyB0cmFuc2Zvcm1MYXllckNsYXNzID0gTlNDbGFzc0Zyb21TdHJpbmcoQCJDQVRyYW5zZm9y
bUxheWVyIik7CisgICAgICAgIGlmICghdHJhbnNmb3JtTGF5ZXJDbGFzcykKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICBpZiAobV9zdHJ1Y3R1cmFsTGF5ZXIgJiYgIVttX3N0cnVjdHVy
YWxMYXllci5nZXQoKSBpc0tpbmRPZkNsYXNzOnRyYW5zZm9ybUxheWVyQ2xhc3NdKQorICAgICAg
ICAgICAgbV9zdHJ1Y3R1cmFsTGF5ZXIgPSAwOworICAgICAgICAKKyAgICAgICAgaWYgKCFtX3N0
cnVjdHVyYWxMYXllcikgeworICAgICAgICAgICAgbV9zdHJ1Y3R1cmFsTGF5ZXIuYWRvcHROUyhb
W3RyYW5zZm9ybUxheWVyQ2xhc3MgYWxsb2NdIGluaXRdKTsKKyAgICAgICAgICAgIHN0cnVjdHVy
YWxMYXllckNoYW5nZWQgPSB0cnVlOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAg
aWYgKG1fc3RydWN0dXJhbExheWVyICYmICFbbV9zdHJ1Y3R1cmFsTGF5ZXIuZ2V0KCkgaXNNZW1i
ZXJPZkNsYXNzOltDQUxheWVyIHNlbGZdXSkKKyAgICAgICAgICAgIG1fc3RydWN0dXJhbExheWVy
ID0gMDsKKworICAgICAgICBpZiAoIW1fc3RydWN0dXJhbExheWVyKSB7CisgICAgICAgICAgICBt
X3N0cnVjdHVyYWxMYXllci5hZG9wdE5TKFtbQ0FMYXllciBhbGxvY10gaW5pdF0pOworICAgICAg
ICAgICAgc3RydWN0dXJhbExheWVyQ2hhbmdlZCA9IHRydWU7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgCisgICAgaWYgKCFzdHJ1Y3R1cmFsTGF5ZXJDaGFuZ2VkKQorICAgICAgICByZXR1cm47Cisg
ICAgCisgICAgLy8gVHVybiBvZmYgZGVmYXVsdCBhbmltYXRpb25zLgorICAgIFttX3N0cnVjdHVy
YWxMYXllci5nZXQoKSBzZXRTdHlsZTpbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0
Om51bGxBY3Rpb25zRGljdGlvbmFyeSgpIGZvcktleTpAImFjdGlvbnMiXV07CisKKyAgICB1cGRh
dGVMYXllck5hbWVzKCk7CisKKyAgICAvLyBVcGRhdGUgdGhlIHByb3BlcnRpZXMgb2YgdGhlIHN0
cnVjdHVyYWwgbGF5ZXIuCisgICAgdXBkYXRlTGF5ZXJQb3NpdGlvbigpOworICAgIHVwZGF0ZUxh
eWVyU2l6ZSgpOworICAgIHVwZGF0ZUFuY2hvclBvaW50KCk7CisgICAgdXBkYXRlVHJhbnNmb3Jt
KCk7CisgICAgdXBkYXRlQ2hpbGRyZW5UcmFuc2Zvcm0oKTsKKyAgICB1cGRhdGVCYWNrZmFjZVZp
c2liaWxpdHkoKTsKKyAgICAKKyAgICAvLyBTZXQgcHJvcGVydGllcyBvZiBtX2xheWVyIHRvIHRo
ZWlyIGRlZmF1bHQgdmFsdWVzLCBzaW5jZSB0aGVzZSBhcmUgZXhwcmVzc2VkIG9uIG9uIHRoZSBz
dHJ1Y3R1cmFsIGxheWVyLgorICAgIENHUG9pbnQgcG9pbnQgPSBDR1BvaW50TWFrZShtX3NpemUu
d2lkdGgoKSAvIDIuMGYsIG1fc2l6ZS5oZWlnaHQoKSAvIDIuMGYpOworICAgIFttX2xheWVyLmdl
dCgpIHNldFBvc2l0aW9uOnBvaW50XTsKKyAgICBbbV9sYXllci5nZXQoKSBzZXRBbmNob3JQb2lu
dDpDR1BvaW50TWFrZSgwLjVmLCAwLjVmKV07CisgICAgW21fbGF5ZXIuZ2V0KCkgc2V0VHJhbnNm
b3JtOkNBVHJhbnNmb3JtM0RJZGVudGl0eV07CisgICAgW21fbGF5ZXIuZ2V0KCkgc2V0T3BhY2l0
eToxXTsKKworICAgIC8vIE1vdmUgdGhpcyBsYXllciB0byBiZSBhIGNoaWxkIG9mIHRoZSB0cmFu
c2Zvcm0gbGF5ZXIuCisgICAgW1ttX2xheWVyLmdldCgpIHN1cGVybGF5ZXJdIHJlcGxhY2VTdWJs
YXllcjptX2xheWVyLmdldCgpIHdpdGg6bV9zdHJ1Y3R1cmFsTGF5ZXIuZ2V0KCldOworICAgIFtt
X3N0cnVjdHVyYWxMYXllci5nZXQoKSBhZGRTdWJsYXllcjptX2xheWVyLmdldCgpXTsKKworICAg
IG1vdmVPckNvcHlBbmltYXRpb25zRm9yUHJvcGVydHkoTW92ZSwgQW5pbWF0ZWRQcm9wZXJ0eVdl
YmtpdFRyYW5zZm9ybSwgbV9sYXllci5nZXQoKSwgbV9zdHJ1Y3R1cmFsTGF5ZXIuZ2V0KCkpOwor
ICAgIG1vdmVPckNvcHlBbmltYXRpb25zRm9yUHJvcGVydHkoTW92ZSwgQW5pbWF0ZWRQcm9wZXJ0
eU9wYWNpdHksIG1fbGF5ZXIuZ2V0KCksIG1fc3RydWN0dXJhbExheWVyLmdldCgpKTsKKyAgICAK
KyAgICB1cGRhdGVTdWJsYXllckxpc3QoKTsKKyAgICB1cGRhdGVPcGFjaXR5T25MYXllcigpOwor
fQorCitHcmFwaGljc0xheWVyQ0E6OlN0cnVjdHVyYWxMYXllclB1cnBvc2UgR3JhcGhpY3NMYXll
ckNBOjpzdHJ1Y3R1cmFsTGF5ZXJQdXJwb3NlKCkgY29uc3QKK3sKKyAgICBpZiAocHJlc2VydmVz
M0QoKSkKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyYWxMYXllckZvclByZXNlcnZlczNEOworICAg
IAorICAgIGlmIChpc1JlcGxpY2F0ZWQoKSkKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyYWxMYXll
ckZvclJlcGxpY2FGbGF0dGVuaW5nOworICAgIAorICAgIHJldHVybiBOb1N0cnVjdHVyYWxMYXll
cjsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUxheWVyRHJhd3NDb250ZW50KCkK
K3sKKyAgICBib29sIG5lZWRUaWxlZExheWVyID0gcmVxdWlyZXNUaWxlZExheWVyKG1fc2l6ZSk7
CisgICAgaWYgKG5lZWRUaWxlZExheWVyICE9IG1fdXNpbmdUaWxlZExheWVyKQorICAgICAgICBz
d2FwRnJvbU9yVG9UaWxlZExheWVyKG5lZWRUaWxlZExheWVyKTsKKworICAgIGlmIChtX2RyYXdz
Q29udGVudCkKKyAgICAgICAgW21fbGF5ZXIuZ2V0KCkgc2V0TmVlZHNEaXNwbGF5XTsKKyAgICBl
bHNlCisgICAgICAgIFttX2xheWVyLmdldCgpIHNldENvbnRlbnRzOm5pbF07CisKKyAgICB1cGRh
dGVEZWJ1Z0luZGljYXRvcnMoKTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUxh
eWVyQmFja2dyb3VuZENvbG9yKCkKK3sKKyAgICBpZiAoIW1fY29udGVudHNMYXllcikKKyAgICAg
ICAgcmV0dXJuOworCisgICAgLy8gV2UgbmV2ZXIgY3JlYXRlIHRoZSBjb250ZW50cyBsYXllciBq
dXN0IGZvciBiYWNrZ3JvdW5kIGNvbG9yIHlldC4KKyAgICBpZiAobV9iYWNrZ3JvdW5kQ29sb3JT
ZXQpCisgICAgICAgIHNldExheWVyQmFja2dyb3VuZENvbG9yKG1fY29udGVudHNMYXllci5nZXQo
KSwgbV9iYWNrZ3JvdW5kQ29sb3IpOworICAgIGVsc2UKKyAgICAgICAgY2xlYXJMYXllckJhY2tn
cm91bmRDb2xvcihtX2NvbnRlbnRzTGF5ZXIuZ2V0KCkpOworfQorCit2b2lkIEdyYXBoaWNzTGF5
ZXJDQTo6dXBkYXRlQ29udGVudHNJbWFnZSgpCit7CisgICAgaWYgKG1fcGVuZGluZ0NvbnRlbnRz
SW1hZ2UpIHsKKyAgICAgICAgaWYgKCFtX2NvbnRlbnRzTGF5ZXIuZ2V0KCkpIHsKKyAgICAgICAg
ICAgIFdlYkxheWVyKiBpbWFnZUxheWVyID0gW1dlYkxheWVyIGxheWVyXTsKKyNpZm5kZWYgTkRF
QlVHCisgICAgICAgICAgICBbaW1hZ2VMYXllciBzZXROYW1lOkAiSW1hZ2UgTGF5ZXIiXTsKKyNl
bmRpZgorICAgICAgICAgICAgc2V0dXBDb250ZW50c0xheWVyKGltYWdlTGF5ZXIpOworICAgICAg
ICAgICAgbV9jb250ZW50c0xheWVyLmFkb3B0TlMoW2ltYWdlTGF5ZXIgcmV0YWluXSk7CisgICAg
ICAgICAgICAvLyBtX2NvbnRlbnRzTGF5ZXIgd2lsbCBiZSBwYXJlbnRlZCBieSB1cGRhdGVTdWJs
YXllckxpc3QKKyAgICAgICAgfQorCisgICAgICAgIC8vIEZJWE1FOiBtYXliZSBvbmx5IGRvIHRy
aWxpbmVhciBpZiB0aGUgaW1hZ2UgaXMgYmVpbmcgc2NhbGVkIGRvd24sCisgICAgICAgIC8vIGJ1
dCB0aGVuIHdoYXQgaWYgdGhlIGxheWVyIHNpemUgY2hhbmdlcz8KKyNpZiAhZGVmaW5lZChCVUlM
RElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkKKyAgICAgICAg
W21fY29udGVudHNMYXllci5nZXQoKSBzZXRNaW5pZmljYXRpb25GaWx0ZXI6a0NBRmlsdGVyVHJp
bGluZWFyXTsKKyNlbmRpZgorICAgICAgICBbbV9jb250ZW50c0xheWVyLmdldCgpIHNldENvbnRl
bnRzOihpZCltX3BlbmRpbmdDb250ZW50c0ltYWdlLmdldCgpXTsKKyAgICAgICAgbV9wZW5kaW5n
Q29udGVudHNJbWFnZSA9IDA7CisKKyAgICAgICAgaWYgKG1fY29udGVudHNMYXllckNsb25lcykg
eworICAgICAgICAgICAgTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fY29udGVudHNM
YXllckNsb25lcy0+ZW5kKCk7CisgICAgICAgICAgICBmb3IgKExheWVyTWFwOjpjb25zdF9pdGVy
YXRvciBpdCA9IG1fY29udGVudHNMYXllckNsb25lcy0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0
KQorICAgICAgICAgICAgICAgIFtpdC0+c2Vjb25kLmdldCgpIHNldENvbnRlbnRzOlttX2NvbnRl
bnRzTGF5ZXIuZ2V0KCkgY29udGVudHNdXTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAg
dXBkYXRlQ29udGVudHNSZWN0KCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gTm8gaW1hZ2Uu
CisgICAgICAgIC8vIG1fY29udGVudHNMYXllciB3aWxsIGJlIHJlbW92ZWQgdmlhIHVwZGF0ZVN1
YmxheWVyTGlzdC4KKyAgICAgICAgbV9jb250ZW50c0xheWVyID0gMDsKKyAgICB9Cit9CisKK3Zv
aWQgR3JhcGhpY3NMYXllckNBOjp1cGRhdGVDb250ZW50c01lZGlhTGF5ZXIoKQoreworICAgIC8v
IFZpZGVvIGxheWVyIHdhcyBzZXQgYXMgbV9jb250ZW50c0xheWVyLCBhbmQgd2lsbCBnZXQgcGFy
ZW50ZWQgaW4gdXBkYXRlU3VibGF5ZXJMaXN0KCkuCisgICAgaWYgKG1fY29udGVudHNMYXllcikg
eworICAgICAgICBzZXR1cENvbnRlbnRzTGF5ZXIobV9jb250ZW50c0xheWVyLmdldCgpKTsKKyAg
ICAgICAgdXBkYXRlQ29udGVudHNSZWN0KCk7CisgICAgfQorfQorCit2b2lkIEdyYXBoaWNzTGF5
ZXJDQTo6dXBkYXRlQ29udGVudHNDYW52YXNMYXllcigpCit7CisgICAgLy8gQ2FudmFzTGF5ZXIg
d2FzIHNldCBhcyBtX2NvbnRlbnRzTGF5ZXIsIGFuZCB3aWxsIGdldCBwYXJlbnRlZCBpbiB1cGRh
dGVTdWJsYXllckxpc3QoKS4KKyAgICBpZiAobV9jb250ZW50c0xheWVyKSB7CisgICAgICAgIHNl
dHVwQ29udGVudHNMYXllcihtX2NvbnRlbnRzTGF5ZXIuZ2V0KCkpOworICAgICAgICBbbV9jb250
ZW50c0xheWVyLmdldCgpIHNldE5lZWRzRGlzcGxheV07CisgICAgICAgIHVwZGF0ZUNvbnRlbnRz
UmVjdCgpOworICAgIH0KK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUNvbnRlbnRz
UmVjdCgpCit7CisgICAgaWYgKCFtX2NvbnRlbnRzTGF5ZXIpCisgICAgICAgIHJldHVybjsKKwor
ICAgIENHUG9pbnQgcG9pbnQgPSBDR1BvaW50TWFrZShtX2NvbnRlbnRzUmVjdC54KCksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fY29udGVudHNSZWN0LnkoKSk7CisgICAgQ0dS
ZWN0IHJlY3QgPSBDR1JlY3RNYWtlKDAuMGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDAuMGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fY29udGVudHNSZWN0LndpZHRo
KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fY29udGVudHNSZWN0LmhlaWdodCgp
KTsKKworICAgIFttX2NvbnRlbnRzTGF5ZXIuZ2V0KCkgc2V0UG9zaXRpb246cG9pbnRdOworICAg
IFttX2NvbnRlbnRzTGF5ZXIuZ2V0KCkgc2V0Qm91bmRzOnJlY3RdOworCisgICAgaWYgKG1fY29u
dGVudHNMYXllckNsb25lcykgeworICAgICAgICBMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5k
ID0gbV9jb250ZW50c0xheWVyQ2xvbmVzLT5lbmQoKTsKKyAgICAgICAgZm9yIChMYXllck1hcDo6
Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2NvbnRlbnRzTGF5ZXJDbG9uZXMtPmJlZ2luKCk7IGl0ICE9
IGVuZDsgKytpdCkgeworICAgICAgICAgICAgQ0FMYXllciAqY3VyckxheWVyID0gaXQtPnNlY29u
ZC5nZXQoKTsKKyAgICAgICAgICAgIFtjdXJyTGF5ZXIgc2V0UG9zaXRpb246cG9pbnRdOworICAg
ICAgICAgICAgW2N1cnJMYXllciBzZXRCb3VuZHM6cmVjdF07CisgICAgICAgIH0KKyAgICB9Cit9
CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjp1cGRhdGVNYXNrTGF5ZXIoKQoreworICAgIENBTGF5
ZXIgKm1hc2tDQUxheWVyID0gbV9tYXNrTGF5ZXIgPyBtX21hc2tMYXllci0+cGxhdGZvcm1MYXll
cigpIDogMDsKKyAgICBbbV9sYXllci5nZXQoKSBzZXRNYXNrOm1hc2tDQUxheWVyXTsKKworICAg
IExheWVyTWFwKiBtYXNrTGF5ZXJDbG9uZU1hcCA9IG1fbWFza0xheWVyID8gc3RhdGljX2Nhc3Q8
R3JhcGhpY3NMYXllckNBKj4obV9tYXNrTGF5ZXIpLT5wcmltYXJ5TGF5ZXJDbG9uZXMoKSA6IDA7
CisgICAgCisgICAgaWYgKExheWVyTWFwKiBsYXllckNsb25lTWFwID0gbV9sYXllckNsb25lcy5n
ZXQoKSkgeworICAgICAgICBMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbGF5ZXJDbG9u
ZU1hcC0+ZW5kKCk7CisgICAgICAgIGZvciAoTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0g
bGF5ZXJDbG9uZU1hcC0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgICAgICBD
QUxheWVyICpjdXJyTGF5ZXIgPSBpdC0+c2Vjb25kLmdldCgpOworICAgICAgICAgICAgCisgICAg
ICAgICAgICBDQUxheWVyICptYXNrQ2xvbmUgPSBtYXNrTGF5ZXJDbG9uZU1hcCA/IG1hc2tMYXll
ckNsb25lTWFwLT5nZXQoaXQtPmZpcnN0KS5nZXQoKSA6IDA7CisgICAgICAgICAgICBbY3Vyckxh
eWVyIHNldE1hc2s6bWFza0Nsb25lXTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBHcmFw
aGljc0xheWVyQ0E6OnVwZGF0ZVJlcGxpY2F0ZWRMYXllcnMoKQoreworICAgIC8vIENsb25lIHRo
ZSBkZXNjZW5kYW50cyBvZiB0aGUgcmVwbGljYXRlZCBsYXllciwgYW5kIHBhcmVudCB1bmRlciB1
cy4KKyAgICBSZXBsaWNhU3RhdGUgcmVwbGljYVN0YXRlKFJlcGxpY2FTdGF0ZTo6UmVwbGljYUJy
YW5jaCk7CisKKyAgICBDQUxheWVyICpyZXBsaWNhUm9vdCA9IHJlcGxpY2F0ZWRMYXllclJvb3Qo
cmVwbGljYVN0YXRlKTsKKyAgICBpZiAoIXJlcGxpY2FSb290KQorICAgICAgICByZXR1cm47CisK
KyAgICBpZiAobV9zdHJ1Y3R1cmFsTGF5ZXIpCisgICAgICAgIFttX3N0cnVjdHVyYWxMYXllci5n
ZXQoKSBpbnNlcnRTdWJsYXllcjpyZXBsaWNhUm9vdCBhdEluZGV4OjBdOworICAgIGVsc2UKKyAg
ICAgICAgW21fbGF5ZXIuZ2V0KCkgaW5zZXJ0U3VibGF5ZXI6cmVwbGljYVJvb3QgYXRJbmRleDow
XTsKK30KKworLy8gRm9yIG5vdywgdGhpcyBhc3N1bWVzIHRoYXQgbGF5ZXJzIG9ubHkgZXZlciBo
YXZlIG9uZSByZXBsaWNhLCBzbyByZXBsaWNhSW5kaWNlcyBjb250YWlucyBvbmx5IDAgYW5kIDEu
CitHcmFwaGljc0xheWVyQ0E6OkNsb25lSUQgR3JhcGhpY3NMYXllckNBOjpSZXBsaWNhU3RhdGU6
OmNsb25lSUQoKSBjb25zdAoreworICAgIHNpemVfdCBkZXB0aCA9IG1fcmVwbGljYUJyYW5jaGVz
LnNpemUoKTsKKworICAgIGNvbnN0IHNpemVfdCBiaXRzUGVyVUNoYXIgPSBzaXplb2YoVUNoYXIp
ICogODsKKyAgICBzaXplX3QgdmVjdG9yU2l6ZSA9IChkZXB0aCArIGJpdHNQZXJVQ2hhciAtIDEp
IC8gYml0c1BlclVDaGFyOworICAgIAorICAgIFZlY3RvcjxVQ2hhcj4gcmVzdWx0KHZlY3RvclNp
emUpOworICAgIHJlc3VsdC5maWxsKDApOworCisgICAgLy8gQ3JlYXRlIGEgc3RyaW5nIGZyb20g
dGhlIGJpdCBzZXF1ZW5jZSB3aGljaCB3ZSBjYW4gdXNlIHRvIGlkZW50aWZ5IHRoZSBjbG9uZS4K
KyAgICAvLyBOb3RlIHRoYXQgdGhlIHN0cmluZyBtYXkgY29udGFpbiBlbWJlZGRlZCBudWxscywg
YnV0IHRoYXQncyBPSy4KKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGRlcHRoOyArK2kpIHsK
KyAgICAgICAgVUNoYXImIGN1cnJDaGFyID0gcmVzdWx0W2kgLyBiaXRzUGVyVUNoYXJdOworICAg
ICAgICBjdXJyQ2hhciA9IChjdXJyQ2hhciA8PCAxKSB8IG1fcmVwbGljYUJyYW5jaGVzW2ldOwor
ICAgIH0KKyAgICAKKyAgICByZXR1cm4gU3RyaW5nOjphZG9wdChyZXN1bHQpOworfQorCitDQUxh
eWVyICpHcmFwaGljc0xheWVyQ0E6OnJlcGxpY2F0ZWRMYXllclJvb3QoUmVwbGljYVN0YXRlJiBy
ZXBsaWNhU3RhdGUpCit7CisgICAgLy8gTGltaXQgcmVwbGljYSBuZXN0aW5nLCB0byBhdm9pZCAy
Xk4gZXhwbG9zaW9uIG9mIHJlcGxpY2EgbGF5ZXJzLgorICAgIGlmICghbV9yZXBsaWNhdGVkTGF5
ZXIgfHwgcmVwbGljYVN0YXRlLnJlcGxpY2FEZXB0aCgpID09IFJlcGxpY2FTdGF0ZTo6bWF4UmVw
bGljYURlcHRoKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgR3JhcGhpY3NMYXllckNBKiBy
ZXBsaWNhdGVkTGF5ZXIgPSBzdGF0aWNfY2FzdDxHcmFwaGljc0xheWVyQ0EqPihtX3JlcGxpY2F0
ZWRMYXllcik7CisgICAgCisgICAgQ0FMYXllciAqY2xvbmVkTGF5ZXJSb290ID0gcmVwbGljYXRl
ZExheWVyLT5mZXRjaENsb25lTGF5ZXJzKHRoaXMsIHJlcGxpY2FTdGF0ZSwgUm9vdENsb25lTGV2
ZWwpOworICAgIEZsb2F0UG9pbnQgY2xvbmVSb290UG9zaXRpb24gPSByZXBsaWNhdGVkTGF5ZXIt
PnBvc2l0aW9uRm9yQ2xvbmVSb290TGF5ZXIoKTsKKworICAgIC8vIFJlcGxpY2Egcm9vdCBoYXMg
bm8gb2Zmc2V0IG9yIHRyYW5zZm9ybQorICAgIFtjbG9uZWRMYXllclJvb3Qgc2V0UG9zaXRpb246
Y2xvbmVSb290UG9zaXRpb25dOworICAgIFtjbG9uZWRMYXllclJvb3Qgc2V0VHJhbnNmb3JtOkNB
VHJhbnNmb3JtM0RJZGVudGl0eV07CisKKyAgICByZXR1cm4gY2xvbmVkTGF5ZXJSb290OworfQor
Cit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlTGF5ZXJBbmltYXRpb25zKCkKK3sKKyAgICBp
ZiAobV9hbmltYXRpb25zVG9Qcm9jZXNzLnNpemUoKSkgeworICAgICAgICBBbmltYXRpb25zVG9Q
cm9jZXNzTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBtX2FuaW1hdGlvbnNUb1Byb2Nlc3MuZW5k
KCk7CisgICAgICAgIGZvciAoQW5pbWF0aW9uc1RvUHJvY2Vzc01hcDo6Y29uc3RfaXRlcmF0b3Ig
aXQgPSBtX2FuaW1hdGlvbnNUb1Byb2Nlc3MuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Cisg
ICAgICAgICAgICBjb25zdCBTdHJpbmcmIGN1cnJBbmltYXRpb25OYW1lID0gaXQtPmZpcnN0Owor
ICAgICAgICAgICAgQW5pbWF0aW9uc01hcDo6aXRlcmF0b3IgYW5pbWF0aW9uSXQgPSBtX3J1bm5p
bmdBbmltYXRpb25zLmZpbmQoY3VyckFuaW1hdGlvbk5hbWUpOworICAgICAgICAgICAgaWYgKGFu
aW1hdGlvbkl0ID09IG1fcnVubmluZ0FuaW1hdGlvbnMuZW5kKCkpCisgICAgICAgICAgICAgICAg
Y29udGludWU7CisKKyAgICAgICAgICAgIGNvbnN0IEFuaW1hdGlvblByb2Nlc3NpbmdBY3Rpb24m
IHByb2Nlc3NpbmdJbmZvID0gaXQtPnNlY29uZDsKKyAgICAgICAgICAgIGNvbnN0IFZlY3RvcjxM
YXllclByb3BlcnR5QW5pbWF0aW9uPiYgYW5pbWF0aW9ucyA9IGFuaW1hdGlvbkl0LT5zZWNvbmQ7
CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFuaW1hdGlvbnMuc2l6ZSgpOyAr
K2kpIHsKKyAgICAgICAgICAgICAgICBjb25zdCBMYXllclByb3BlcnR5QW5pbWF0aW9uJiBjdXJy
QW5pbWF0aW9uID0gYW5pbWF0aW9uc1tpXTsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKHByb2Nl
c3NpbmdJbmZvLmFjdGlvbikgeworICAgICAgICAgICAgICAgICAgICBjYXNlIFJlbW92ZToKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZUNBQW5pbWF0aW9uRnJvbUxheWVyKGN1cnJBbmlt
YXRpb24ubV9wcm9wZXJ0eSwgY3VyckFuaW1hdGlvbk5hbWUsIGN1cnJBbmltYXRpb24ubV9pbmRl
eCk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAg
Y2FzZSBQYXVzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhdXNlQ0FBbmltYXRpb25Pbkxh
eWVyKGN1cnJBbmltYXRpb24ubV9wcm9wZXJ0eSwgY3VyckFuaW1hdGlvbk5hbWUsIGN1cnJBbmlt
YXRpb24ubV9pbmRleCwgcHJvY2Vzc2luZ0luZm8udGltZU9mZnNldCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGlmIChwcm9jZXNzaW5nSW5mby5hY3Rpb24gPT0gUmVtb3ZlKQorICAgICAgICAg
ICAgICAgIG1fcnVubmluZ0FuaW1hdGlvbnMucmVtb3ZlKGN1cnJBbmltYXRpb25OYW1lKTsKKyAg
ICAgICAgfQorICAgIAorICAgICAgICBtX2FuaW1hdGlvbnNUb1Byb2Nlc3MuY2xlYXIoKTsKKyAg
ICB9CisgICAgCisgICAgc2l6ZV90IG51bUFuaW1hdGlvbnM7CisgICAgaWYgKChudW1BbmltYXRp
b25zID0gbV91bmNvbWl0dGVkQW5pbWF0aW9ucy5zaXplKCkpKSB7CisgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbnVtQW5pbWF0aW9uczsgKytpKSB7CisgICAgICAgICAgICBjb25zdCBM
YXllclByb3BlcnR5QW5pbWF0aW9uJiBwZW5kaW5nQW5pbWF0aW9uID0gbV91bmNvbWl0dGVkQW5p
bWF0aW9uc1tpXTsKKyAgICAgICAgICAgIHNldENBQW5pbWF0aW9uT25MYXllcihwZW5kaW5nQW5p
bWF0aW9uLm1fYW5pbWF0aW9uLmdldCgpLCBwZW5kaW5nQW5pbWF0aW9uLm1fcHJvcGVydHksIHBl
bmRpbmdBbmltYXRpb24ubV9uYW1lLCBwZW5kaW5nQW5pbWF0aW9uLm1faW5kZXgsIHBlbmRpbmdB
bmltYXRpb24ubV90aW1lT2Zmc2V0KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgQW5pbWF0
aW9uc01hcDo6aXRlcmF0b3IgaXQgPSBtX3J1bm5pbmdBbmltYXRpb25zLmZpbmQocGVuZGluZ0Fu
aW1hdGlvbi5tX25hbWUpOworICAgICAgICAgICAgaWYgKGl0ID09IG1fcnVubmluZ0FuaW1hdGlv
bnMuZW5kKCkpIHsKKyAgICAgICAgICAgICAgICBWZWN0b3I8TGF5ZXJQcm9wZXJ0eUFuaW1hdGlv
bj4gYW5pbWF0aW9uczsKKyAgICAgICAgICAgICAgICBhbmltYXRpb25zLmFwcGVuZChwZW5kaW5n
QW5pbWF0aW9uKTsKKyAgICAgICAgICAgICAgICBtX3J1bm5pbmdBbmltYXRpb25zLmFkZChwZW5k
aW5nQW5pbWF0aW9uLm1fbmFtZSwgYW5pbWF0aW9ucyk7CisgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgIFZlY3RvcjxMYXllclByb3BlcnR5QW5pbWF0aW9uPiYgYW5pbWF0aW9u
cyA9IGl0LT5zZWNvbmQ7CisgICAgICAgICAgICAgICAgYW5pbWF0aW9ucy5hcHBlbmQocGVuZGlu
Z0FuaW1hdGlvbik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAg
IG1fdW5jb21pdHRlZEFuaW1hdGlvbnMuY2xlYXIoKTsKKyAgICB9Cit9CisKK3ZvaWQgR3JhcGhp
Y3NMYXllckNBOjpzZXRDQUFuaW1hdGlvbk9uTGF5ZXIoQ0FQcm9wZXJ0eUFuaW1hdGlvbiogY2FB
bmltLCBBbmltYXRlZFByb3BlcnR5SUQgcHJvcGVydHksIGNvbnN0IFN0cmluZyYgYW5pbWF0aW9u
TmFtZSwgaW50IGluZGV4LCBkb3VibGUgdGltZU9mZnNldCkKK3sKKyAgICBQbGF0Zm9ybUxheWVy
KiBsYXllciA9IGFuaW1hdGVkTGF5ZXIocHJvcGVydHkpOworCisgICAgaWYgKHRpbWVPZmZzZXQp
IHsKKyAgICAgICAgW2NhQW5pbSBzZXRCZWdpblRpbWU6Q0FDdXJyZW50TWVkaWFUaW1lKCkgLSB0
aW1lT2Zmc2V0XTsKKyAgICAgICAgW2NhQW5pbSBzZXRWYWx1ZTpbTlNOdW1iZXIgbnVtYmVyV2l0
aEJvb2w6WUVTXSBmb3JLZXk6V2ViS2l0QW5pbWF0aW9uQmVnaW5UaW1lU2V0S2V5XTsKKyAgICB9
CisKKyAgICBOU1N0cmluZyAqYW5pbWF0aW9uSUQgPSBhbmltYXRpb25JZGVudGlmaWVyKGFuaW1h
dGlvbk5hbWUsIHByb3BlcnR5LCBpbmRleCk7CisKKyAgICBbbGF5ZXIgcmVtb3ZlQW5pbWF0aW9u
Rm9yS2V5OmFuaW1hdGlvbklEXTsKKyAgICBbbGF5ZXIgYWRkQW5pbWF0aW9uOmNhQW5pbSBmb3JL
ZXk6YW5pbWF0aW9uSURdOworCisgICAgaWYgKExheWVyTWFwKiBsYXllckNsb25lTWFwID0gYW5p
bWF0ZWRMYXllckNsb25lcyhwcm9wZXJ0eSkpIHsKKyAgICAgICAgTGF5ZXJNYXA6OmNvbnN0X2l0
ZXJhdG9yIGVuZCA9IGxheWVyQ2xvbmVNYXAtPmVuZCgpOworICAgICAgICBmb3IgKExheWVyTWFw
Ojpjb25zdF9pdGVyYXRvciBpdCA9IGxheWVyQ2xvbmVNYXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsg
KytpdCkgeworICAgICAgICAgICAgLy8gU2tpcCBpbW1lZGlhdGUgcmVwbGljYXMsIHNpbmNlIHRo
ZXkgbW92ZSB3aXRoIHRoZSBvcmlnaW5hbC4KKyAgICAgICAgICAgIGlmIChtX3JlcGxpY2FMYXll
ciAmJiBpc1JlcGxpY2F0ZWRSb290Q2xvbmUoaXQtPmZpcnN0KSkKKyAgICAgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgICAgIENBTGF5ZXIgKmN1cnJMYXllciA9IGl0LT5zZWNvbmQuZ2V0
KCk7CisgICAgICAgICAgICBbY3VyckxheWVyIHJlbW92ZUFuaW1hdGlvbkZvcktleTphbmltYXRp
b25JRF07CisgICAgICAgICAgICBbY3VyckxheWVyIGFkZEFuaW1hdGlvbjpjYUFuaW0gZm9yS2V5
OmFuaW1hdGlvbklEXTsKKyAgICAgICAgfQorICAgIH0KK30KKworLy8gV29ya2Fyb3VuZCBmb3Ig
PHJkYXI6Ly9wcm9ibGVtLzczMTEzNjc+CitzdGF0aWMgdm9pZCBidWc3MzExMzY3V29ya2Fyb3Vu
ZChDQUxheWVyKiB0cmFuc2Zvcm1MYXllciwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRy
YW5zZm9ybSkKK3sKKyAgICBpZiAoIXRyYW5zZm9ybUxheWVyKQorICAgICAgICByZXR1cm47CisK
KyAgICBDQVRyYW5zZm9ybTNEIGNhVHJhbnNmb3JtOworICAgIGNvcHlUcmFuc2Zvcm0oY2FUcmFu
c2Zvcm0sIHRyYW5zZm9ybSk7CisgICAgY2FUcmFuc2Zvcm0ubTQxICs9IDE7CisgICAgW3RyYW5z
Zm9ybUxheWVyIHNldFRyYW5zZm9ybTpjYVRyYW5zZm9ybV07CisKKyAgICBjYVRyYW5zZm9ybS5t
NDEgLT0gMTsKKyAgICBbdHJhbnNmb3JtTGF5ZXIgc2V0VHJhbnNmb3JtOmNhVHJhbnNmb3JtXTsK
K30KKworYm9vbCBHcmFwaGljc0xheWVyQ0E6OnJlbW92ZUNBQW5pbWF0aW9uRnJvbUxheWVyKEFu
aW1hdGVkUHJvcGVydHlJRCBwcm9wZXJ0eSwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBp
bnQgaW5kZXgpCit7CisgICAgUGxhdGZvcm1MYXllciogbGF5ZXIgPSBhbmltYXRlZExheWVyKHBy
b3BlcnR5KTsKKworICAgIE5TU3RyaW5nICphbmltYXRpb25JRCA9IGFuaW1hdGlvbklkZW50aWZp
ZXIoYW5pbWF0aW9uTmFtZSwgcHJvcGVydHksIGluZGV4KTsKKworICAgIGlmICghW2xheWVyIGFu
aW1hdGlvbkZvcktleTphbmltYXRpb25JRF0pCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAK
KyAgICBbbGF5ZXIgcmVtb3ZlQW5pbWF0aW9uRm9yS2V5OmFuaW1hdGlvbklEXTsKKyAgICBidWc3
MzExMzY3V29ya2Fyb3VuZChtX3N0cnVjdHVyYWxMYXllci5nZXQoKSwgbV90cmFuc2Zvcm0pOwor
CisgICAgaWYgKExheWVyTWFwKiBsYXllckNsb25lTWFwID0gYW5pbWF0ZWRMYXllckNsb25lcyhw
cm9wZXJ0eSkpIHsKKyAgICAgICAgTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGxheWVy
Q2xvbmVNYXAtPmVuZCgpOworICAgICAgICBmb3IgKExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBp
dCA9IGxheWVyQ2xvbmVNYXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICAg
ICAgLy8gU2tpcCBpbW1lZGlhdGUgcmVwbGljYXMsIHNpbmNlIHRoZXkgbW92ZSB3aXRoIHRoZSBv
cmlnaW5hbC4KKyAgICAgICAgICAgIGlmIChtX3JlcGxpY2FMYXllciAmJiBpc1JlcGxpY2F0ZWRS
b290Q2xvbmUoaXQtPmZpcnN0KSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAg
ICAgICAgQ0FMYXllciAqY3VyckxheWVyID0gaXQtPnNlY29uZC5nZXQoKTsKKyAgICAgICAgICAg
IFtjdXJyTGF5ZXIgcmVtb3ZlQW5pbWF0aW9uRm9yS2V5OmFuaW1hdGlvbklEXTsKKyAgICAgICAg
fQorICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIHZvaWQgY29weUFuaW1hdGlv
blByb3BlcnRpZXMoQ0FQcm9wZXJ0eUFuaW1hdGlvbiogZnJvbSwgQ0FQcm9wZXJ0eUFuaW1hdGlv
biogdG8pCit7CisgICAgW3RvIHNldEJlZ2luVGltZTpbZnJvbSBiZWdpblRpbWVdXTsKKyAgICBb
dG8gc2V0RHVyYXRpb246W2Zyb20gZHVyYXRpb25dXTsKKyAgICBbdG8gc2V0UmVwZWF0Q291bnQ6
W2Zyb20gcmVwZWF0Q291bnRdXTsKKyAgICBbdG8gc2V0QXV0b3JldmVyc2VzOltmcm9tIGF1dG9y
ZXZlcnNlc11dOworICAgIFt0byBzZXRGaWxsTW9kZTpbZnJvbSBmaWxsTW9kZV1dOworICAgIFt0
byBzZXRSZW1vdmVkT25Db21wbGV0aW9uOltmcm9tIGlzUmVtb3ZlZE9uQ29tcGxldGlvbl1dOwor
ICAgIFt0byBzZXRBZGRpdGl2ZTpbZnJvbSBpc0FkZGl0aXZlXV07CisgICAgW3RvIHNldFRpbWlu
Z0Z1bmN0aW9uOltmcm9tIHRpbWluZ0Z1bmN0aW9uXV07CisKKyNpZiBIQVZFX01PREVSTl9RVUFS
VFpDT1JFCisgICAgW3RvIHNldFZhbHVlRnVuY3Rpb246W2Zyb20gdmFsdWVGdW5jdGlvbl1dOwor
I2VuZGlmCisKKyAgICBpZiAoaWQgb2JqZWN0ID0gW2Zyb20gdmFsdWVGb3JLZXk6V2ViS2l0QW5p
bWF0aW9uQmVnaW5UaW1lU2V0S2V5XSkKKyAgICAgICAgW3RvIHNldFZhbHVlOm9iamVjdCBmb3JL
ZXk6V2ViS2l0QW5pbWF0aW9uQmVnaW5UaW1lU2V0S2V5XTsKK30KKwordm9pZCBHcmFwaGljc0xh
eWVyQ0E6OnBhdXNlQ0FBbmltYXRpb25PbkxheWVyKEFuaW1hdGVkUHJvcGVydHlJRCBwcm9wZXJ0
eSwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBpbnQgaW5kZXgsIGRvdWJsZSB0aW1lT2Zm
c2V0KQoreworICAgIFBsYXRmb3JtTGF5ZXIqIGxheWVyID0gYW5pbWF0ZWRMYXllcihwcm9wZXJ0
eSk7CisKKyAgICBOU1N0cmluZyAqYW5pbWF0aW9uSUQgPSBhbmltYXRpb25JZGVudGlmaWVyKGFu
aW1hdGlvbk5hbWUsIHByb3BlcnR5LCBpbmRleCk7CisKKyAgICBDQUFuaW1hdGlvbiAqY2FBbmlt
ID0gW2xheWVyIGFuaW1hdGlvbkZvcktleTphbmltYXRpb25JRF07CisgICAgaWYgKCFjYUFuaW0p
CisgICAgICAgIHJldHVybjsKKworICAgIC8vIEFuaW1hdGlvbnMgb24gdGhlIGxheWVyIGFyZSBp
bW11dGFibGUsIHNvIHdlIGhhdmUgdG8gY2xvbmUgYW5kIG1vZGlmeS4KKyAgICBDQVByb3BlcnR5
QW5pbWF0aW9uKiBwYXVzZWRBbmltID0gbmlsOworICAgIGlmIChbY2FBbmltIGlzS2luZE9mQ2xh
c3M6W0NBS2V5ZnJhbWVBbmltYXRpb24gY2xhc3NdXSkgeworICAgICAgICBDQUtleWZyYW1lQW5p
bWF0aW9uKiBleGlzdGluZ0tleWZyYW1lQW5pbSA9IHN0YXRpY19jYXN0PENBS2V5ZnJhbWVBbmlt
YXRpb24qPihjYUFuaW0pOworICAgICAgICBDQUtleWZyYW1lQW5pbWF0aW9uKiBuZXdBbmltID0g
W0NBS2V5ZnJhbWVBbmltYXRpb24gYW5pbWF0aW9uV2l0aEtleVBhdGg6W2V4aXN0aW5nS2V5ZnJh
bWVBbmltIGtleVBhdGhdXTsKKyAgICAgICAgY29weUFuaW1hdGlvblByb3BlcnRpZXMoZXhpc3Rp
bmdLZXlmcmFtZUFuaW0sIG5ld0FuaW0pOworICAgICAgICBbbmV3QW5pbSBzZXRWYWx1ZXM6W2V4
aXN0aW5nS2V5ZnJhbWVBbmltIHZhbHVlc11dOworICAgICAgICBbbmV3QW5pbSBzZXRLZXlUaW1l
czpbZXhpc3RpbmdLZXlmcmFtZUFuaW0ga2V5VGltZXNdXTsKKyAgICAgICAgW25ld0FuaW0gc2V0
VGltaW5nRnVuY3Rpb25zOltleGlzdGluZ0tleWZyYW1lQW5pbSB0aW1pbmdGdW5jdGlvbnNdXTsK
KyAgICAgICAgcGF1c2VkQW5pbSA9IG5ld0FuaW07CisgICAgfSBlbHNlIGlmIChbY2FBbmltIGlz
S2luZE9mQ2xhc3M6W0NBQmFzaWNBbmltYXRpb24gY2xhc3NdXSkgeworICAgICAgICBDQUJhc2lj
QW5pbWF0aW9uKiBleGlzdGluZ1Byb3BlcnR5QW5pbSA9IHN0YXRpY19jYXN0PENBQmFzaWNBbmlt
YXRpb24qPihjYUFuaW0pOworICAgICAgICBDQUJhc2ljQW5pbWF0aW9uKiBuZXdBbmltID0gW0NB
QmFzaWNBbmltYXRpb24gYW5pbWF0aW9uV2l0aEtleVBhdGg6W2V4aXN0aW5nUHJvcGVydHlBbmlt
IGtleVBhdGhdXTsKKyAgICAgICAgY29weUFuaW1hdGlvblByb3BlcnRpZXMoZXhpc3RpbmdQcm9w
ZXJ0eUFuaW0sIG5ld0FuaW0pOworICAgICAgICBbbmV3QW5pbSBzZXRGcm9tVmFsdWU6W2V4aXN0
aW5nUHJvcGVydHlBbmltIGZyb21WYWx1ZV1dOworICAgICAgICBbbmV3QW5pbSBzZXRUb1ZhbHVl
OltleGlzdGluZ1Byb3BlcnR5QW5pbSB0b1ZhbHVlXV07CisgICAgICAgIHBhdXNlZEFuaW0gPSBu
ZXdBbmltOworICAgIH0KKworICAgIC8vIHBhdXNlZEFuaW0gaGFzIHRoZSBiZWdpblRpbWUgb2Yg
Y2FBbmltIGFscmVhZHkuCisgICAgW3BhdXNlZEFuaW0gc2V0U3BlZWQ6MF07CisgICAgW3BhdXNl
ZEFuaW0gc2V0VGltZU9mZnNldDp0aW1lT2Zmc2V0XTsKKyAgICAKKyAgICBbbGF5ZXIgYWRkQW5p
bWF0aW9uOnBhdXNlZEFuaW0gZm9yS2V5OmFuaW1hdGlvbklEXTsgIC8vIFRoaXMgd2lsbCByZXBs
YWNlIHRoZSBydW5uaW5nIGFuaW1hdGlvbi4KKworICAgIC8vIFBhdXNlIHRoZSBhbmltYXRpb25z
IG9uIHRoZSBjbG9uZXMgdG9vLgorICAgIGlmIChMYXllck1hcCogbGF5ZXJDbG9uZU1hcCA9IGFu
aW1hdGVkTGF5ZXJDbG9uZXMocHJvcGVydHkpKSB7CisgICAgICAgIExheWVyTWFwOjpjb25zdF9p
dGVyYXRvciBlbmQgPSBsYXllckNsb25lTWFwLT5lbmQoKTsKKyAgICAgICAgZm9yIChMYXllck1h
cDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBsYXllckNsb25lTWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7
ICsraXQpIHsKKyAgICAgICAgICAgIC8vIFNraXAgaW1tZWRpYXRlIHJlcGxpY2FzLCBzaW5jZSB0
aGV5IG1vdmUgd2l0aCB0aGUgb3JpZ2luYWwuCisgICAgICAgICAgICBpZiAobV9yZXBsaWNhTGF5
ZXIgJiYgaXNSZXBsaWNhdGVkUm9vdENsb25lKGl0LT5maXJzdCkpCisgICAgICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgICAgICBDQUxheWVyICpjdXJyTGF5ZXIgPSBpdC0+c2Vjb25kLmdl
dCgpOworICAgICAgICAgICAgW2N1cnJMYXllciBhZGRBbmltYXRpb246cGF1c2VkQW5pbSBmb3JL
ZXk6YW5pbWF0aW9uSURdOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIEdyYXBoaWNzTGF5
ZXJDQTo6c2V0Q29udGVudHNUb0NhbnZhcyhQbGF0Zm9ybUxheWVyKiBjYW52YXNMYXllcikKK3sK
KyAgICBpZiAoY2FudmFzTGF5ZXIgPT0gbV9jb250ZW50c0xheWVyKQorICAgICAgICByZXR1cm47
CisgICAgICAgIAorICAgIG1fY29udGVudHNMYXllciA9IGNhbnZhc0xheWVyOworICAgIGlmICht
X2NvbnRlbnRzTGF5ZXIgJiYgW21fY29udGVudHNMYXllci5nZXQoKSByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKHNldExheWVyT3duZXI6KV0pCisgICAgICAgIFsoaWQpbV9jb250ZW50c0xh
eWVyLmdldCgpIHNldExheWVyT3duZXI6dGhpc107CisgICAgCisgICAgbV9jb250ZW50c0xheWVy
UHVycG9zZSA9IGNhbnZhc0xheWVyID8gQ29udGVudHNMYXllckZvckNhbnZhcyA6IE5vQ29udGVu
dHNMYXllcjsKKworICAgIG5vdGVTdWJsYXllcnNDaGFuZ2VkKCk7CisgICAgbm90ZUxheWVyUHJv
cGVydHlDaGFuZ2VkKENvbnRlbnRzQ2FudmFzTGF5ZXJDaGFuZ2VkKTsKK30KKyAgICAKK3ZvaWQg
R3JhcGhpY3NMYXllckNBOjpyZXBhaW50TGF5ZXJEaXJ0eVJlY3RzKCkKK3sKKyAgICBpZiAoIW1f
ZGlydHlSZWN0cy5zaXplKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbV9kaXJ0eVJlY3RzLnNpemUoKTsgKytpKQorICAgICAgICBbbV9sYXllci5nZXQo
KSBzZXROZWVkc0Rpc3BsYXlJblJlY3Q6bV9kaXJ0eVJlY3RzW2ldXTsKKyAgICAKKyAgICBtX2Rp
cnR5UmVjdHMuY2xlYXIoKTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUNvbnRl
bnRzTmVlZHNEaXNwbGF5KCkKK3sKKyAgICBpZiAobV9jb250ZW50c0xheWVyKQorICAgICAgICBb
bV9jb250ZW50c0xheWVyLmdldCgpIHNldE5lZWRzRGlzcGxheV07Cit9CisKK2Jvb2wgR3JhcGhp
Y3NMYXllckNBOjpjcmVhdGVBbmltYXRpb25Gcm9tS2V5ZnJhbWVzKGNvbnN0IEtleWZyYW1lVmFs
dWVMaXN0JiB2YWx1ZUxpc3QsIGNvbnN0IEFuaW1hdGlvbiogYW5pbWF0aW9uLCBjb25zdCBTdHJp
bmcmIGFuaW1hdGlvbk5hbWUsIGRvdWJsZSB0aW1lT2Zmc2V0KQoreworICAgIEFTU0VSVCh2YWx1
ZUxpc3QucHJvcGVydHkoKSAhPSBBbmltYXRlZFByb3BlcnR5V2Via2l0VHJhbnNmb3JtKTsKKwor
ICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKKyAgICAKKyAgICBib29sIGlzS2V5ZnJh
bWUgPSB2YWx1ZUxpc3Quc2l6ZSgpID4gMjsKKyAgICBib29sIHZhbHVlc09LOworICAgIAorICAg
IGJvb2wgYWRkaXRpdmUgPSBmYWxzZTsKKyAgICBpbnQgYW5pbWF0aW9uSW5kZXggPSAwOworICAg
IAorICAgIENBUHJvcGVydHlBbmltYXRpb24qIGNhQW5pbWF0aW9uOworICAgIGlmIChpc0tleWZy
YW1lKSB7CisgICAgICAgIENBS2V5ZnJhbWVBbmltYXRpb24qIGtleWZyYW1lQW5pbSA9IGNyZWF0
ZUtleWZyYW1lQW5pbWF0aW9uKGFuaW1hdGlvbiwgdmFsdWVMaXN0LnByb3BlcnR5KCksIGFkZGl0
aXZlKTsKKyAgICAgICAgdmFsdWVzT0sgPSBzZXRBbmltYXRpb25LZXlmcmFtZXModmFsdWVMaXN0
LCBhbmltYXRpb24sIGtleWZyYW1lQW5pbSk7CisgICAgICAgIGNhQW5pbWF0aW9uID0ga2V5ZnJh
bWVBbmltOworICAgIH0gZWxzZSB7CisgICAgICAgIENBQmFzaWNBbmltYXRpb24qIGJhc2ljQW5p
bSA9IGNyZWF0ZUJhc2ljQW5pbWF0aW9uKGFuaW1hdGlvbiwgdmFsdWVMaXN0LnByb3BlcnR5KCks
IGFkZGl0aXZlKTsKKyAgICAgICAgdmFsdWVzT0sgPSBzZXRBbmltYXRpb25FbmRwb2ludHModmFs
dWVMaXN0LCBhbmltYXRpb24sIGJhc2ljQW5pbSk7CisgICAgICAgIGNhQW5pbWF0aW9uID0gYmFz
aWNBbmltOworICAgIH0KKyAgICAKKyAgICBpZiAoIXZhbHVlc09LKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBtX3VuY29taXR0ZWRBbmltYXRpb25zLmFwcGVuZChMYXllclByb3BlcnR5
QW5pbWF0aW9uKGNhQW5pbWF0aW9uLCBhbmltYXRpb25OYW1lLCB2YWx1ZUxpc3QucHJvcGVydHko
KSwgYW5pbWF0aW9uSW5kZXgsIHRpbWVPZmZzZXQpKTsKKyAgICAKKyAgICBFTkRfQkxPQ0tfT0JK
Q19FWENFUFRJT05TOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgR3JhcGhpY3NMYXll
ckNBOjpjcmVhdGVUcmFuc2Zvcm1BbmltYXRpb25zRnJvbUtleWZyYW1lcyhjb25zdCBLZXlmcmFt
ZVZhbHVlTGlzdCYgdmFsdWVMaXN0LCBjb25zdCBBbmltYXRpb24qIGFuaW1hdGlvbiwgY29uc3Qg
U3RyaW5nJiBhbmltYXRpb25OYW1lLCBkb3VibGUgdGltZU9mZnNldCwgY29uc3QgSW50U2l6ZSYg
Ym94U2l6ZSkKK3sKKyAgICBBU1NFUlQodmFsdWVMaXN0LnByb3BlcnR5KCkgPT0gQW5pbWF0ZWRQ
cm9wZXJ0eVdlYmtpdFRyYW5zZm9ybSk7CisKKyAgICBUcmFuc2Zvcm1PcGVyYXRpb25MaXN0IGZ1
bmN0aW9uTGlzdDsKKyAgICBib29sIGxpc3RzTWF0Y2gsIGhhc0JpZ1JvdGF0aW9uOworICAgIGZl
dGNoVHJhbnNmb3JtT3BlcmF0aW9uTGlzdCh2YWx1ZUxpc3QsIGZ1bmN0aW9uTGlzdCwgbGlzdHNN
YXRjaCwgaGFzQmlnUm90YXRpb24pOworCisgICAgLy8gV2UgbmVlZCB0byBmYWxsIGJhY2sgdG8g
c29mdHdhcmUgYW5pbWF0aW9uIGlmIHdlIGRvbid0IGhhdmUgc2V0VmFsdWVGdW5jdGlvbjosIGFu
ZAorICAgIC8vIHdlIHdvdWxkIG5lZWQgdG8gYW5pbWF0ZSBlYWNoIGluY29taW5nIHRyYW5zZm9y
bSBmdW5jdGlvbiBzZXBhcmF0ZWx5LiBUaGlzIGlzIHRoZQorICAgIC8vIGNhc2UgaWYgd2UgaGF2
ZSBhIHJvdGF0aW9uID49IDE4MCBvciB3ZSBoYXZlIG1vcmUgdGhhbiBvbmUgdHJhbnNmb3JtIGZ1
bmN0aW9uLgorICAgIGlmICgoaGFzQmlnUm90YXRpb24gfHwgZnVuY3Rpb25MaXN0LnNpemUoKSA+
IDEpICYmICFjYVZhbHVlRnVuY3Rpb25TdXBwb3J0ZWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgYm9vbCB2YWxpZE1hdHJpY2VzID0gdHJ1ZTsKKworICAgIEJFR0lOX0JMT0NLX09C
SkNfRVhDRVBUSU9OUzsKKworICAgIC8vIElmIGZ1bmN0aW9uTGlzdHMgZG9uJ3QgbWF0Y2ggd2Ug
ZG8gYSBtYXRyaXggYW5pbWF0aW9uLCBvdGhlcndpc2Ugd2UgZG8gYSBjb21wb25lbnQgaGFyZHdh
cmUgYW5pbWF0aW9uLgorICAgIC8vIEFsc28sIHdlIGNhbid0IGRvIGNvbXBvbmVudCBhbmltYXRp
b24gdW5sZXNzIHdlIGhhdmUgdmFsdWVGdW5jdGlvbiwgc28gd2UgbmVlZCB0byBkbyBtYXRyaXgg
YW5pbWF0aW9uCisgICAgLy8gaWYgdGhhdCdzIG5vdCB0cnVlIGFzIHdlbGwuCisgICAgYm9vbCBp
c01hdHJpeEFuaW1hdGlvbiA9ICFsaXN0c01hdGNoIHx8ICFjYVZhbHVlRnVuY3Rpb25TdXBwb3J0
ZWQoKTsKKyAgICAKKyAgICBzaXplX3QgbnVtQW5pbWF0aW9ucyA9IGlzTWF0cml4QW5pbWF0aW9u
ID8gMSA6IGZ1bmN0aW9uTGlzdC5zaXplKCk7CisgICAgYm9vbCBpc0tleWZyYW1lID0gdmFsdWVM
aXN0LnNpemUoKSA+IDI7CisgICAgCisgICAgLy8gSXRlcmF0ZSB0aHJvdWdoIHRoZSB0cmFuc2Zv
cm0gZnVuY3Rpb25zLCBzZW5kaW5nIGFuIGFuaW1hdGlvbiBmb3IgZWFjaCBvbmUuCisgICAgZm9y
IChzaXplX3QgYW5pbWF0aW9uSW5kZXggPSAwOyBhbmltYXRpb25JbmRleCA8IG51bUFuaW1hdGlv
bnM7ICsrYW5pbWF0aW9uSW5kZXgpIHsKKyAgICAgICAgVHJhbnNmb3JtT3BlcmF0aW9uOjpPcGVy
YXRpb25UeXBlIHRyYW5zZm9ybU9wID0gaXNNYXRyaXhBbmltYXRpb24gPyBUcmFuc2Zvcm1PcGVy
YXRpb246Ok1BVFJJWF8zRCA6IGZ1bmN0aW9uTGlzdFthbmltYXRpb25JbmRleF07CisgICAgICAg
IENBUHJvcGVydHlBbmltYXRpb24qIGNhQW5pbWF0aW9uOworCisjaWYgZGVmaW5lZChCVUlMRElO
R19PTl9MRU9QQVJEKSB8fCBkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkKKyAgICAg
ICAgLy8gQ0EgYXBwbGllcyBhbmltYXRpb25zIGluIHJldmVyc2Ugb3JkZXIgKDxyZGFyOi8vcHJv
YmxlbS83MDk1NjM4Pikgc28gd2UgbmVlZCB0aGUgbGFzdCBvbmUgd2UgYWRkIChwZXIgcHJvcGVy
dHkpCisgICAgICAgIC8vIHRvIGJlIG5vbi1hZGRpdGl2ZS4KKyAgICAgICAgYm9vbCBhZGRpdGl2
ZSA9IGFuaW1hdGlvbkluZGV4IDwgKG51bUFuaW1hdGlvbnMgLSAxKTsKKyNlbHNlCisgICAgICAg
IGJvb2wgYWRkaXRpdmUgPSBhbmltYXRpb25JbmRleCA+IDA7CisjZW5kaWYKKyAgICAgICAgaWYg
KGlzS2V5ZnJhbWUpIHsKKyAgICAgICAgICAgIENBS2V5ZnJhbWVBbmltYXRpb24qIGtleWZyYW1l
QW5pbSA9IGNyZWF0ZUtleWZyYW1lQW5pbWF0aW9uKGFuaW1hdGlvbiwgdmFsdWVMaXN0LnByb3Bl
cnR5KCksIGFkZGl0aXZlKTsKKyAgICAgICAgICAgIHZhbGlkTWF0cmljZXMgPSBzZXRUcmFuc2Zv
cm1BbmltYXRpb25LZXlmcmFtZXModmFsdWVMaXN0LCBhbmltYXRpb24sIGtleWZyYW1lQW5pbSwg
YW5pbWF0aW9uSW5kZXgsIHRyYW5zZm9ybU9wLCBpc01hdHJpeEFuaW1hdGlvbiwgYm94U2l6ZSk7
CisgICAgICAgICAgICBjYUFuaW1hdGlvbiA9IGtleWZyYW1lQW5pbTsKKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIENBQmFzaWNBbmltYXRpb24qIGJhc2ljQW5pbSA9IGNyZWF0ZUJhc2lj
QW5pbWF0aW9uKGFuaW1hdGlvbiwgdmFsdWVMaXN0LnByb3BlcnR5KCksIGFkZGl0aXZlKTsKKyAg
ICAgICAgICAgIHZhbGlkTWF0cmljZXMgPSBzZXRUcmFuc2Zvcm1BbmltYXRpb25FbmRwb2ludHMo
dmFsdWVMaXN0LCBhbmltYXRpb24sIGJhc2ljQW5pbSwgYW5pbWF0aW9uSW5kZXgsIHRyYW5zZm9y
bU9wLCBpc01hdHJpeEFuaW1hdGlvbiwgYm94U2l6ZSk7CisgICAgICAgICAgICBjYUFuaW1hdGlv
biA9IGJhc2ljQW5pbTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKCF2YWxpZE1h
dHJpY2VzKQorICAgICAgICAgICAgYnJlYWs7CisgICAgCisgICAgICAgIG1fdW5jb21pdHRlZEFu
aW1hdGlvbnMuYXBwZW5kKExheWVyUHJvcGVydHlBbmltYXRpb24oY2FBbmltYXRpb24sIGFuaW1h
dGlvbk5hbWUsIHZhbHVlTGlzdC5wcm9wZXJ0eSgpLCBhbmltYXRpb25JbmRleCwgdGltZU9mZnNl
dCkpOworICAgIH0KKworICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CisKKyAgICByZXR1
cm4gdmFsaWRNYXRyaWNlczsKK30KKworQ0FCYXNpY0FuaW1hdGlvbiogR3JhcGhpY3NMYXllckNB
OjpjcmVhdGVCYXNpY0FuaW1hdGlvbihjb25zdCBBbmltYXRpb24qIGFuaW0sIEFuaW1hdGVkUHJv
cGVydHlJRCBwcm9wZXJ0eSwgYm9vbCBhZGRpdGl2ZSkKK3sKKyAgICBDQUJhc2ljQW5pbWF0aW9u
KiBiYXNpY0FuaW0gPSBbQ0FCYXNpY0FuaW1hdGlvbiBhbmltYXRpb25XaXRoS2V5UGF0aDpwcm9w
ZXJ0eUlkVG9TdHJpbmcocHJvcGVydHkpXTsKKyAgICBzZXR1cEFuaW1hdGlvbihiYXNpY0FuaW0s
IGFuaW0sIGFkZGl0aXZlKTsKKyAgICByZXR1cm4gYmFzaWNBbmltOworfQorCitDQUtleWZyYW1l
QW5pbWF0aW9uKiBHcmFwaGljc0xheWVyQ0E6OmNyZWF0ZUtleWZyYW1lQW5pbWF0aW9uKGNvbnN0
IEFuaW1hdGlvbiogYW5pbSwgQW5pbWF0ZWRQcm9wZXJ0eUlEIHByb3BlcnR5LCBib29sIGFkZGl0
aXZlKQoreworICAgIENBS2V5ZnJhbWVBbmltYXRpb24qIGtleWZyYW1lQW5pbSA9IFtDQUtleWZy
YW1lQW5pbWF0aW9uIGFuaW1hdGlvbldpdGhLZXlQYXRoOnByb3BlcnR5SWRUb1N0cmluZyhwcm9w
ZXJ0eSldOworICAgIHNldHVwQW5pbWF0aW9uKGtleWZyYW1lQW5pbSwgYW5pbSwgYWRkaXRpdmUp
OworICAgIHJldHVybiBrZXlmcmFtZUFuaW07Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpz
ZXR1cEFuaW1hdGlvbihDQVByb3BlcnR5QW5pbWF0aW9uKiBwcm9wZXJ0eUFuaW0sIGNvbnN0IEFu
aW1hdGlvbiogYW5pbSwgYm9vbCBhZGRpdGl2ZSkKK3sKKyAgICBkb3VibGUgZHVyYXRpb24gPSBh
bmltLT5kdXJhdGlvbigpOworICAgIGlmIChkdXJhdGlvbiA8PSAwKQorICAgICAgICBkdXJhdGlv
biA9IGNBbmltYXRpb25BbG1vc3RaZXJvRHVyYXRpb247CisKKyAgICBmbG9hdCByZXBlYXRDb3Vu
dCA9IGFuaW0tPml0ZXJhdGlvbkNvdW50KCk7CisgICAgaWYgKHJlcGVhdENvdW50ID09IEFuaW1h
dGlvbjo6SXRlcmF0aW9uQ291bnRJbmZpbml0ZSkKKyAgICAgICAgcmVwZWF0Q291bnQgPSBGTFRf
TUFYOworICAgIGVsc2UgaWYgKGFuaW0tPmRpcmVjdGlvbigpID09IEFuaW1hdGlvbjo6QW5pbWF0
aW9uRGlyZWN0aW9uQWx0ZXJuYXRlKQorICAgICAgICByZXBlYXRDb3VudCAvPSAyOworCisgICAg
TlNTdHJpbmcgKmZpbGxNb2RlID0gMDsKKyAgICBzd2l0Y2ggKGFuaW0tPmZpbGxNb2RlKCkpIHsK
KyAgICBjYXNlIEFuaW1hdGlvbkZpbGxNb2RlTm9uZToKKyAgICAgICAgZmlsbE1vZGUgPSBrQ0FG
aWxsTW9kZUZvcndhcmRzOyAvLyBVc2UgImZvcndhcmRzIiByYXRoZXIgdGhhbiAicmVtb3ZlZCIg
YmVjYXVzZSB0aGUgc3R5bGUgc3lzdGVtIHdpbGwgcmVtb3ZlIHRoZSBhbmltYXRpb24gd2hlbiBp
dCBpcyBmaW5pc2hlZC4gVGhpcyBhdm9pZHMgYSBmbGFzaC4KKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBBbmltYXRpb25GaWxsTW9kZUJhY2t3YXJkczoKKyAgICAgICAgZmlsbE1vZGUgPSBrQ0FG
aWxsTW9kZUJvdGg7IC8vIFVzZSAiYm90aCIgcmF0aGVyIHRoYW4gImJhY2t3YXJkcyIgYmVjYXVz
ZSB0aGUgc3R5bGUgc3lzdGVtIHdpbGwgcmVtb3ZlIHRoZSBhbmltYXRpb24gd2hlbiBpdCBpcyBm
aW5pc2hlZC4gVGhpcyBhdm9pZHMgYSBmbGFzaC4KKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBB
bmltYXRpb25GaWxsTW9kZUZvcndhcmRzOgorICAgICAgIGZpbGxNb2RlID0ga0NBRmlsbE1vZGVG
b3J3YXJkczsKKyAgICAgICBicmVhazsKKyAgICBjYXNlIEFuaW1hdGlvbkZpbGxNb2RlQm90aDoK
KyAgICAgICBmaWxsTW9kZSA9IGtDQUZpbGxNb2RlQm90aDsKKyAgICAgICBicmVhazsKKyAgICB9
CisKKyAgICBbcHJvcGVydHlBbmltIHNldER1cmF0aW9uOmR1cmF0aW9uXTsKKyAgICBbcHJvcGVy
dHlBbmltIHNldFJlcGVhdENvdW50OnJlcGVhdENvdW50XTsKKyAgICBbcHJvcGVydHlBbmltIHNl
dEF1dG9yZXZlcnNlczphbmltLT5kaXJlY3Rpb24oKV07CisgICAgW3Byb3BlcnR5QW5pbSBzZXRS
ZW1vdmVkT25Db21wbGV0aW9uOk5PXTsKKyAgICBbcHJvcGVydHlBbmltIHNldEFkZGl0aXZlOmFk
ZGl0aXZlXTsKKyAgICBbcHJvcGVydHlBbmltIHNldEZpbGxNb2RlOmZpbGxNb2RlXTsKKworICAg
IFtwcm9wZXJ0eUFuaW0gc2V0RGVsZWdhdGU6bV9hbmltYXRpb25EZWxlZ2F0ZS5nZXQoKV07Cit9
CisKK0NBTWVkaWFUaW1pbmdGdW5jdGlvbiogR3JhcGhpY3NMYXllckNBOjp0aW1pbmdGdW5jdGlv
bkZvckFuaW1hdGlvblZhbHVlKGNvbnN0IEFuaW1hdGlvblZhbHVlKiBhbmltVmFsdWUsIGNvbnN0
IEFuaW1hdGlvbiogYW5pbSkKK3sKKyAgICBjb25zdCBUaW1pbmdGdW5jdGlvbiogdGYgPSAwOwor
ICAgIGlmIChhbmltVmFsdWUtPnRpbWluZ0Z1bmN0aW9uKCkpCisgICAgICAgIHRmID0gYW5pbVZh
bHVlLT50aW1pbmdGdW5jdGlvbigpOworICAgIGVsc2UgaWYgKGFuaW0tPmlzVGltaW5nRnVuY3Rp
b25TZXQoKSkKKyAgICAgICAgdGYgPSBhbmltLT50aW1pbmdGdW5jdGlvbigpLmdldCgpOworCisg
ICAgcmV0dXJuIGdldENBTWVkaWFUaW1pbmdGdW5jdGlvbih0ZiA/IHRmIDogQ3ViaWNCZXppZXJU
aW1pbmdGdW5jdGlvbjo6Y3JlYXRlKCkuZ2V0KCkpOworfQorCitib29sIEdyYXBoaWNzTGF5ZXJD
QTo6c2V0QW5pbWF0aW9uRW5kcG9pbnRzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxp
c3QsIGNvbnN0IEFuaW1hdGlvbiogYW5pbSwgQ0FCYXNpY0FuaW1hdGlvbiogYmFzaWNBbmltKQor
eworICAgIGlkIGZyb21WYWx1ZSA9IG5pbDsKKyAgICBpZCB0b1ZhbHVlID0gbmlsOworCisgICAg
c3dpdGNoICh2YWx1ZUxpc3QucHJvcGVydHkoKSkgeworICAgICAgICBjYXNlIEFuaW1hdGVkUHJv
cGVydHlPcGFjaXR5OiB7CisgICAgICAgICAgICBjb25zdCBGbG9hdEFuaW1hdGlvblZhbHVlKiBz
dGFydFZhbCA9IHN0YXRpY19jYXN0PGNvbnN0IEZsb2F0QW5pbWF0aW9uVmFsdWUqPih2YWx1ZUxp
c3QuYXQoMCkpOworICAgICAgICAgICAgY29uc3QgRmxvYXRBbmltYXRpb25WYWx1ZSogZW5kVmFs
ID0gc3RhdGljX2Nhc3Q8Y29uc3QgRmxvYXRBbmltYXRpb25WYWx1ZSo+KHZhbHVlTGlzdC5hdCgx
KSk7CisgICAgICAgICAgICBmcm9tVmFsdWUgPSBbTlNOdW1iZXIgbnVtYmVyV2l0aEZsb2F0OnN0
YXJ0VmFsLT52YWx1ZSgpXTsKKyAgICAgICAgICAgIHRvVmFsdWUgPSBbTlNOdW1iZXIgbnVtYmVy
V2l0aEZsb2F0OmVuZFZhbC0+dmFsdWUoKV07CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7ICAg
ICAvLyB3ZSBkb24ndCBhbmltYXRlIGNvbG9yIHlldAorICAgICAgICAgICAgYnJlYWs7CisgICAg
fQorCisgICAgLy8gVGhpcyBjb2RlcGF0aCBpcyB1c2VkIGZvciAyLWtleWZyYW1lIGFuaW1hdGlv
bnMsIHNvIHdlIHN0aWxsIG5lZWQgdG8gbG9vayBpbiB0aGUgc3RhcnQKKyAgICAvLyBmb3IgYSB0
aW1pbmcgZnVuY3Rpb24uCisgICAgQ0FNZWRpYVRpbWluZ0Z1bmN0aW9uKiB0aW1pbmdGdW5jdGlv
biA9IHRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUodmFsdWVMaXN0LmF0KDApLCBhbmlt
KTsKKyAgICBbYmFzaWNBbmltIHNldFRpbWluZ0Z1bmN0aW9uOnRpbWluZ0Z1bmN0aW9uXTsKKwor
ICAgIFtiYXNpY0FuaW0gc2V0RnJvbVZhbHVlOmZyb21WYWx1ZV07CisgICAgW2Jhc2ljQW5pbSBz
ZXRUb1ZhbHVlOnRvVmFsdWVdOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgR3JhcGhp
Y3NMYXllckNBOjpzZXRBbmltYXRpb25LZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3Qm
IHZhbHVlTGlzdCwgY29uc3QgQW5pbWF0aW9uKiBhbmltLCBDQUtleWZyYW1lQW5pbWF0aW9uKiBr
ZXlmcmFtZUFuaW0pCit7CisgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBrZXlUaW1lcyhB
ZG9wdE5TLCBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CisgICAgUmV0YWluUHRyPE5T
TXV0YWJsZUFycmF5PiB2YWx1ZXMoQWRvcHROUywgW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5p
dF0pOworICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gdGltaW5nRnVuY3Rpb25zKEFkb3B0
TlMsIFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKKworICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCB2YWx1ZUxpc3Quc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgY29uc3QgQW5pbWF0
aW9uVmFsdWUqIGN1clZhbHVlID0gdmFsdWVMaXN0LmF0KGkpOworICAgICAgICBba2V5VGltZXMu
Z2V0KCkgYWRkT2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoRmxvYXQ6Y3VyVmFsdWUtPmtleVRp
bWUoKV1dOworCisgICAgICAgIHN3aXRjaCAodmFsdWVMaXN0LnByb3BlcnR5KCkpIHsKKyAgICAg
ICAgICAgIGNhc2UgQW5pbWF0ZWRQcm9wZXJ0eU9wYWNpdHk6IHsKKyAgICAgICAgICAgICAgICBj
b25zdCBGbG9hdEFuaW1hdGlvblZhbHVlKiBmbG9hdFZhbHVlID0gc3RhdGljX2Nhc3Q8Y29uc3Qg
RmxvYXRBbmltYXRpb25WYWx1ZSo+KGN1clZhbHVlKTsKKyAgICAgICAgICAgICAgICBbdmFsdWVz
LmdldCgpIGFkZE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aEZsb2F0OmZsb2F0VmFsdWUtPnZh
bHVlKCldXTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7ICAgICAv
LyB3ZSBkb24ndCBhbmltYXRlIGNvbG9yIHlldAorICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisKKyAgICAgICAgQ0FNZWRpYVRpbWluZ0Z1bmN0aW9uKiB0aW1pbmdGdW5jdGlvbiA9
IHRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUoY3VyVmFsdWUsIGFuaW0pOworICAgICAg
ICBbdGltaW5nRnVuY3Rpb25zLmdldCgpIGFkZE9iamVjdDp0aW1pbmdGdW5jdGlvbl07CisgICAg
fQorICAgIAorICAgIC8vIFdlIHRvc3MgdGhlIGxhc3QgdGZBcnJheSB2YWx1ZSBiZWNhdXNlIGl0
IGhhcyB0byBvbmUgc2hvcnRlciB0aGFuIHRoZSBvdGhlcnMuCisgICAgW3RpbWluZ0Z1bmN0aW9u
cy5nZXQoKSByZW1vdmVMYXN0T2JqZWN0XTsKKworICAgIFtrZXlmcmFtZUFuaW0gc2V0S2V5VGlt
ZXM6a2V5VGltZXMuZ2V0KCldOworICAgIFtrZXlmcmFtZUFuaW0gc2V0VmFsdWVzOnZhbHVlcy5n
ZXQoKV07CisgICAgW2tleWZyYW1lQW5pbSBzZXRUaW1pbmdGdW5jdGlvbnM6dGltaW5nRnVuY3Rp
b25zLmdldCgpXTsKKyAgICAKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBHcmFwaGljc0xh
eWVyQ0E6OnNldFRyYW5zZm9ybUFuaW1hdGlvbkVuZHBvaW50cyhjb25zdCBLZXlmcmFtZVZhbHVl
TGlzdCYgdmFsdWVMaXN0LCBjb25zdCBBbmltYXRpb24qIGFuaW0sIENBQmFzaWNBbmltYXRpb24q
IGJhc2ljQW5pbSwgaW50IGZ1bmN0aW9uSW5kZXgsIFRyYW5zZm9ybU9wZXJhdGlvbjo6T3BlcmF0
aW9uVHlwZSB0cmFuc2Zvcm1PcCwgYm9vbCBpc01hdHJpeEFuaW1hdGlvbiwgY29uc3QgSW50U2l6
ZSYgYm94U2l6ZSkKK3sKKyAgICBpZCBmcm9tVmFsdWU7CisgICAgaWQgdG9WYWx1ZTsKKyAgICAK
KyAgICBBU1NFUlQodmFsdWVMaXN0LnNpemUoKSA9PSAyKTsKKyAgICBjb25zdCBUcmFuc2Zvcm1B
bmltYXRpb25WYWx1ZSogc3RhcnRWYWx1ZSA9IHN0YXRpY19jYXN0PGNvbnN0IFRyYW5zZm9ybUFu
aW1hdGlvblZhbHVlKj4odmFsdWVMaXN0LmF0KDApKTsKKyAgICBjb25zdCBUcmFuc2Zvcm1Bbmlt
YXRpb25WYWx1ZSogZW5kVmFsdWUgPSBzdGF0aWNfY2FzdDxjb25zdCBUcmFuc2Zvcm1BbmltYXRp
b25WYWx1ZSo+KHZhbHVlTGlzdC5hdCgxKSk7CisgICAgCisgICAgaWYgKGlzTWF0cml4QW5pbWF0
aW9uKSB7CisgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGZyb21UcmFuc2Zvcm0sIHRvVHJh
bnNmb3JtOworICAgICAgICBzdGFydFZhbHVlLT52YWx1ZSgpLT5hcHBseShib3hTaXplLCBmcm9t
VHJhbnNmb3JtKTsKKyAgICAgICAgZW5kVmFsdWUtPnZhbHVlKCktPmFwcGx5KGJveFNpemUsIHRv
VHJhbnNmb3JtKTsKKworICAgICAgICAvLyBJZiBhbnkgbWF0cml4IGlzIHNpbmd1bGFyLCBDQSB3
b24ndCBhbmltYXRlIGl0IGNvcnJlY3RseS4gU28gZmFsbCBiYWNrIHRvIHNvZnR3YXJlIGFuaW1h
dGlvbgorICAgICAgICBpZiAoIWZyb21UcmFuc2Zvcm0uaXNJbnZlcnRpYmxlKCkgfHwgIXRvVHJh
bnNmb3JtLmlzSW52ZXJ0aWJsZSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
ICAgIENBVHJhbnNmb3JtM0QgY2FUcmFuc2Zvcm07CisgICAgICAgIGNvcHlUcmFuc2Zvcm0oY2FU
cmFuc2Zvcm0sIGZyb21UcmFuc2Zvcm0pOworICAgICAgICBmcm9tVmFsdWUgPSBbTlNWYWx1ZSB2
YWx1ZVdpdGhDQVRyYW5zZm9ybTNEOmNhVHJhbnNmb3JtXTsKKworICAgICAgICBjb3B5VHJhbnNm
b3JtKGNhVHJhbnNmb3JtLCB0b1RyYW5zZm9ybSk7CisgICAgICAgIHRvVmFsdWUgPSBbTlNWYWx1
ZSB2YWx1ZVdpdGhDQVRyYW5zZm9ybTNEOmNhVHJhbnNmb3JtXTsKKyAgICB9IGVsc2UgeworICAg
ICAgICBmcm9tVmFsdWUgPSBnZXRUcmFuc2Zvcm1GdW5jdGlvblZhbHVlKHN0YXJ0VmFsdWUtPnZh
bHVlKCktPmF0KGZ1bmN0aW9uSW5kZXgpLCB0cmFuc2Zvcm1PcCwgYm94U2l6ZSk7CisgICAgICAg
IHRvVmFsdWUgPSBnZXRUcmFuc2Zvcm1GdW5jdGlvblZhbHVlKGVuZFZhbHVlLT52YWx1ZSgpLT5h
dChmdW5jdGlvbkluZGV4KSwgdHJhbnNmb3JtT3AsIGJveFNpemUpOworICAgIH0KKworICAgIC8v
IFRoaXMgY29kZXBhdGggaXMgdXNlZCBmb3IgMi1rZXlmcmFtZSBhbmltYXRpb25zLCBzbyB3ZSBz
dGlsbCBuZWVkIHRvIGxvb2sgaW4gdGhlIHN0YXJ0CisgICAgLy8gZm9yIGEgdGltaW5nIGZ1bmN0
aW9uLgorICAgIENBTWVkaWFUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb24gPSB0aW1pbmdG
dW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKHZhbHVlTGlzdC5hdCgwKSwgYW5pbSk7CisgICAgW2Jh
c2ljQW5pbSBzZXRUaW1pbmdGdW5jdGlvbjp0aW1pbmdGdW5jdGlvbl07CisKKyAgICBbYmFzaWNB
bmltIHNldEZyb21WYWx1ZTpmcm9tVmFsdWVdOworICAgIFtiYXNpY0FuaW0gc2V0VG9WYWx1ZTp0
b1ZhbHVlXTsKKworI2lmIEhBVkVfTU9ERVJOX1FVQVJUWkNPUkUKKyAgICBpZiAoTlNTdHJpbmcg
KnZhbHVlRnVuY3Rpb25OYW1lID0gZ2V0VmFsdWVGdW5jdGlvbk5hbWVGb3JUcmFuc2Zvcm1PcGVy
YXRpb24odHJhbnNmb3JtT3ApKQorICAgICAgICBbYmFzaWNBbmltIHNldFZhbHVlRnVuY3Rpb246
W0NBVmFsdWVGdW5jdGlvbiBmdW5jdGlvbldpdGhOYW1lOnZhbHVlRnVuY3Rpb25OYW1lXV07Cisj
ZW5kaWYKKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIEdyYXBoaWNzTGF5ZXJDQTo6c2V0
VHJhbnNmb3JtQW5pbWF0aW9uS2V5ZnJhbWVzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1
ZUxpc3QsIGNvbnN0IEFuaW1hdGlvbiogYW5pbWF0aW9uLCBDQUtleWZyYW1lQW5pbWF0aW9uKiBr
ZXlmcmFtZUFuaW0sIGludCBmdW5jdGlvbkluZGV4LCBUcmFuc2Zvcm1PcGVyYXRpb246Ok9wZXJh
dGlvblR5cGUgdHJhbnNmb3JtT3BUeXBlLCBib29sIGlzTWF0cml4QW5pbWF0aW9uLCBjb25zdCBJ
bnRTaXplJiBib3hTaXplKQoreworICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4ga2V5VGlt
ZXMoQWRvcHROUywgW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOworICAgIFJldGFpblB0
cjxOU011dGFibGVBcnJheT4gdmFsdWVzKEFkb3B0TlMsIFtbTlNNdXRhYmxlQXJyYXkgYWxsb2Nd
IGluaXRdKTsKKyAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IHRpbWluZ0Z1bmN0aW9ucyhB
ZG9wdE5TLCBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CisKKyAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgdmFsdWVMaXN0LnNpemUoKTsgKytpKSB7CisgICAgICAgIGNvbnN0IFRy
YW5zZm9ybUFuaW1hdGlvblZhbHVlKiBjdXJWYWx1ZSA9IHN0YXRpY19jYXN0PGNvbnN0IFRyYW5z
Zm9ybUFuaW1hdGlvblZhbHVlKj4odmFsdWVMaXN0LmF0KGkpKTsKKyAgICAgICAgW2tleVRpbWVz
LmdldCgpIGFkZE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aEZsb2F0OmN1clZhbHVlLT5rZXlU
aW1lKCldXTsKKworICAgICAgICBpZiAoaXNNYXRyaXhBbmltYXRpb24pIHsKKyAgICAgICAgICAg
IFRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybTsKKyAgICAgICAgICAgIGN1clZhbHVlLT52
YWx1ZSgpLT5hcHBseShib3hTaXplLCB0cmFuc2Zvcm0pOworCisgICAgICAgICAgICAvLyBJZiBh
bnkgbWF0cml4IGlzIHNpbmd1bGFyLCBDQSB3b24ndCBhbmltYXRlIGl0IGNvcnJlY3RseS4gU28g
ZmFsbCBiYWNrIHRvIHNvZnR3YXJlIGFuaW1hdGlvbgorICAgICAgICAgICAgaWYgKCF0cmFuc2Zv
cm0uaXNJbnZlcnRpYmxlKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
ICAgICAgICBDQVRyYW5zZm9ybTNEIGNhVHJhbnNmb3JtOworICAgICAgICAgICAgY29weVRyYW5z
Zm9ybShjYVRyYW5zZm9ybSwgdHJhbnNmb3JtKTsKKyAgICAgICAgICAgIFt2YWx1ZXMuZ2V0KCkg
YWRkT2JqZWN0OltOU1ZhbHVlIHZhbHVlV2l0aENBVHJhbnNmb3JtM0Q6Y2FUcmFuc2Zvcm1dXTsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbiog
dHJhbnNmb3JtT3AgPSBjdXJWYWx1ZS0+dmFsdWUoKS0+YXQoZnVuY3Rpb25JbmRleCk7CisgICAg
ICAgICAgICBbdmFsdWVzLmdldCgpIGFkZE9iamVjdDpnZXRUcmFuc2Zvcm1GdW5jdGlvblZhbHVl
KHRyYW5zZm9ybU9wLCB0cmFuc2Zvcm1PcFR5cGUsIGJveFNpemUpXTsKKyAgICAgICAgfQorCisg
ICAgICAgIENBTWVkaWFUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb24gPSB0aW1pbmdGdW5j
dGlvbkZvckFuaW1hdGlvblZhbHVlKGN1clZhbHVlLCBhbmltYXRpb24pOworICAgICAgICBbdGlt
aW5nRnVuY3Rpb25zLmdldCgpIGFkZE9iamVjdDp0aW1pbmdGdW5jdGlvbl07CisgICAgfQorICAg
IAorICAgIC8vIFdlIHRvc3MgdGhlIGxhc3QgdGZBcnJheSB2YWx1ZSBiZWNhdXNlIGl0IGhhcyB0
byBvbmUgc2hvcnRlciB0aGFuIHRoZSBvdGhlcnMuCisgICAgW3RpbWluZ0Z1bmN0aW9ucy5nZXQo
KSByZW1vdmVMYXN0T2JqZWN0XTsKKworICAgIFtrZXlmcmFtZUFuaW0gc2V0S2V5VGltZXM6a2V5
VGltZXMuZ2V0KCldOworICAgIFtrZXlmcmFtZUFuaW0gc2V0VmFsdWVzOnZhbHVlcy5nZXQoKV07
CisgICAgW2tleWZyYW1lQW5pbSBzZXRUaW1pbmdGdW5jdGlvbnM6dGltaW5nRnVuY3Rpb25zLmdl
dCgpXTsKKworI2lmIEhBVkVfTU9ERVJOX1FVQVJUWkNPUkUKKyAgICBpZiAoTlNTdHJpbmcgKnZh
bHVlRnVuY3Rpb25OYW1lID0gZ2V0VmFsdWVGdW5jdGlvbk5hbWVGb3JUcmFuc2Zvcm1PcGVyYXRp
b24odHJhbnNmb3JtT3BUeXBlKSkKKyAgICAgICAgW2tleWZyYW1lQW5pbSBzZXRWYWx1ZUZ1bmN0
aW9uOltDQVZhbHVlRnVuY3Rpb24gZnVuY3Rpb25XaXRoTmFtZTp2YWx1ZUZ1bmN0aW9uTmFtZV1d
OworI2VuZGlmCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpz
dXNwZW5kQW5pbWF0aW9ucyhkb3VibGUgdGltZSkKK3sKKyAgICBkb3VibGUgdCA9IGN1cnJlbnRU
aW1lVG9NZWRpYVRpbWUodGltZSA/IHRpbWUgOiBjdXJyZW50VGltZSgpKTsKKyAgICBbcHJpbWFy
eUxheWVyKCkgc2V0U3BlZWQ6MF07CisgICAgW3ByaW1hcnlMYXllcigpIHNldFRpbWVPZmZzZXQ6
dF07CisKKyAgICAvLyBTdXNwZW5kIHRoZSBhbmltYXRpb25zIG9uIHRoZSBjbG9uZXMgdG9vLgor
ICAgIGlmIChMYXllck1hcCogbGF5ZXJDbG9uZU1hcCA9IHByaW1hcnlMYXllckNsb25lcygpKSB7
CisgICAgICAgIExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBsYXllckNsb25lTWFwLT5l
bmQoKTsKKyAgICAgICAgZm9yIChMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBsYXllckNs
b25lTWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgICAgIENBTGF5ZXIg
KmN1cnJMYXllciA9IGl0LT5zZWNvbmQuZ2V0KCk7CisgICAgICAgICAgICBbY3VyckxheWVyIHNl
dFNwZWVkOjBdOworICAgICAgICAgICAgW2N1cnJMYXllciBzZXRUaW1lT2Zmc2V0OnRdOworICAg
ICAgICB9CisgICAgfQorfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6cmVzdW1lQW5pbWF0aW9u
cygpCit7CisgICAgW3ByaW1hcnlMYXllcigpIHNldFNwZWVkOjFdOworICAgIFtwcmltYXJ5TGF5
ZXIoKSBzZXRUaW1lT2Zmc2V0OjBdOworCisgICAgLy8gUmVzdW1lIHRoZSBhbmltYXRpb25zIG9u
IHRoZSBjbG9uZXMgdG9vLgorICAgIGlmIChMYXllck1hcCogbGF5ZXJDbG9uZU1hcCA9IHByaW1h
cnlMYXllckNsb25lcygpKSB7CisgICAgICAgIExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQg
PSBsYXllckNsb25lTWFwLT5lbmQoKTsKKyAgICAgICAgZm9yIChMYXllck1hcDo6Y29uc3RfaXRl
cmF0b3IgaXQgPSBsYXllckNsb25lTWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAg
ICAgICAgICAgIENBTGF5ZXIgKmN1cnJMYXllciA9IGl0LT5zZWNvbmQuZ2V0KCk7CisgICAgICAg
ICAgICBbY3VyckxheWVyIHNldFNwZWVkOjFdOworICAgICAgICAgICAgW2N1cnJMYXllciBzZXRU
aW1lT2Zmc2V0OjBdOworICAgICAgICB9CisgICAgfQorfQorCitDQUxheWVyKiBHcmFwaGljc0xh
eWVyQ0E6Omhvc3RMYXllckZvclN1YmxheWVycygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc3Ry
dWN0dXJhbExheWVyLmdldCgpID8gbV9zdHJ1Y3R1cmFsTGF5ZXIuZ2V0KCkgOiBtX2xheWVyLmdl
dCgpOyAKK30KKworQ0FMYXllciogR3JhcGhpY3NMYXllckNBOjpsYXllckZvclN1cGVybGF5ZXIo
KSBjb25zdAoreworICAgIHJldHVybiBtX3N0cnVjdHVyYWxMYXllciA/IG1fc3RydWN0dXJhbExh
eWVyLmdldCgpIDogbV9sYXllci5nZXQoKTsKK30KKworQ0FMYXllciogR3JhcGhpY3NMYXllckNB
OjphbmltYXRlZExheWVyKEFuaW1hdGVkUHJvcGVydHlJRCBwcm9wZXJ0eSkgY29uc3QKK3sKKyAg
ICByZXR1cm4gKHByb3BlcnR5ID09IEFuaW1hdGVkUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpID8g
bV9jb250ZW50c0xheWVyLmdldCgpIDogcHJpbWFyeUxheWVyKCk7Cit9CisKK0dyYXBoaWNzTGF5
ZXJDQTo6TGF5ZXJNYXAqIEdyYXBoaWNzTGF5ZXJDQTo6YW5pbWF0ZWRMYXllckNsb25lcyhBbmlt
YXRlZFByb3BlcnR5SUQgcHJvcGVydHkpIGNvbnN0Cit7CisgICAgcmV0dXJuIChwcm9wZXJ0eSA9
PSBBbmltYXRlZFByb3BlcnR5QmFja2dyb3VuZENvbG9yKSA/IG1fY29udGVudHNMYXllckNsb25l
cy5nZXQoKSA6IHByaW1hcnlMYXllckNsb25lcygpOworfQorCitQbGF0Zm9ybUxheWVyKiBHcmFw
aGljc0xheWVyQ0E6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAoreworICAgIHJldHVybiBwcmltYXJ5
TGF5ZXIoKTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldERlYnVnQmFja2dyb3VuZENv
bG9yKGNvbnN0IENvbG9yJiBjb2xvcikKK3sKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElP
TlMKKyAgICAKKyAgICBpZiAoY29sb3IuaXNWYWxpZCgpKQorICAgICAgICBzZXRMYXllckJhY2tn
cm91bmRDb2xvcihtX2xheWVyLmdldCgpLCBjb2xvcik7CisgICAgZWxzZQorICAgICAgICBjbGVh
ckxheWVyQmFja2dyb3VuZENvbG9yKG1fbGF5ZXIuZ2V0KCkpOworICAgIAorICAgIEVORF9CTE9D
S19PQkpDX0VYQ0VQVElPTlMKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldERlYnVnQm9y
ZGVyKGNvbnN0IENvbG9yJiBjb2xvciwgZmxvYXQgYm9yZGVyV2lkdGgpCit7CisgICAgQkVHSU5f
QkxPQ0tfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAgaWYgKGNvbG9yLmlzVmFsaWQoKSkgewor
ICAgICAgICBzZXRMYXllckJvcmRlckNvbG9yKG1fbGF5ZXIuZ2V0KCksIGNvbG9yKTsKKyAgICAg
ICAgW21fbGF5ZXIuZ2V0KCkgc2V0Qm9yZGVyV2lkdGg6Ym9yZGVyV2lkdGhdOworICAgIH0gZWxz
ZSB7CisgICAgICAgIGNsZWFyQm9yZGVyQ29sb3IobV9sYXllci5nZXQoKSk7CisgICAgICAgIFtt
X2xheWVyLmdldCgpIHNldEJvcmRlcldpZHRoOjBdOworICAgIH0KKyAgICAKKyAgICBFTkRfQkxP
Q0tfT0JKQ19FWENFUFRJT05TCit9CisKK0Zsb2F0U2l6ZSBHcmFwaGljc0xheWVyQ0E6OmNvbnN0
cmFpbmVkU2l6ZSgpIGNvbnN0Cit7CisgICAgZmxvYXQgdGlsZUNvbHVtbnMgPSBjZWlsZihtX3Np
emUud2lkdGgoKSAvIGNUaWxlZExheWVyVGlsZVNpemUpOworICAgIGZsb2F0IHRpbGVSb3dzID0g
Y2VpbGYobV9zaXplLmhlaWdodCgpIC8gY1RpbGVkTGF5ZXJUaWxlU2l6ZSk7CisgICAgZG91Ymxl
IG51bVRpbGVzID0gdGlsZUNvbHVtbnMgKiB0aWxlUm93czsKKyAgICAKKyAgICBGbG9hdFNpemUg
Y29uc3RyYWluZWRTaXplID0gbV9zaXplOworICAgIGNvbnN0IHVuc2lnbmVkIGNNYXhUaWxlQ291
bnQgPSA1MTI7CisgICAgd2hpbGUgKG51bVRpbGVzID4gY01heFRpbGVDb3VudCkgeworICAgICAg
ICAvLyBDb25zdHJhaW4gdGhlIHdpZGVyIGRpbWVuc2lvbi4KKyAgICAgICAgaWYgKGNvbnN0cmFp
bmVkU2l6ZS53aWR0aCgpID49IGNvbnN0cmFpbmVkU2l6ZS5oZWlnaHQoKSkgeworICAgICAgICAg
ICAgdGlsZUNvbHVtbnMgPSBtYXgoZmxvb3JmKGNNYXhUaWxlQ291bnQgLyB0aWxlUm93cyksIDEu
MGYpOworICAgICAgICAgICAgY29uc3RyYWluZWRTaXplLnNldFdpZHRoKHRpbGVDb2x1bW5zICog
Y1RpbGVkTGF5ZXJUaWxlU2l6ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0aWxl
Um93cyA9IG1heChmbG9vcmYoY01heFRpbGVDb3VudCAvIHRpbGVDb2x1bW5zKSwgMS4wZik7Cisg
ICAgICAgICAgICBjb25zdHJhaW5lZFNpemUuc2V0SGVpZ2h0KHRpbGVSb3dzICogY1RpbGVkTGF5
ZXJUaWxlU2l6ZSk7CisgICAgICAgIH0KKyAgICAgICAgbnVtVGlsZXMgPSB0aWxlQ29sdW1ucyAq
IHRpbGVSb3dzOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gY29uc3RyYWluZWRTaXplOworfQor
Citib29sIEdyYXBoaWNzTGF5ZXJDQTo6cmVxdWlyZXNUaWxlZExheWVyKGNvbnN0IEZsb2F0U2l6
ZSYgc2l6ZSkgY29uc3QKK3sKKyAgICBpZiAoIW1fZHJhd3NDb250ZW50KQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICAvLyBGSVhNRTogY2F0Y2ggemVyby1zaXplIGhlaWdodCBvciB3aWR0
aCBoZXJlIChvciBlYXJsaWVyKT8KKyAgICByZXR1cm4gc2l6ZS53aWR0aCgpID4gY01heFBpeGVs
RGltZW5zaW9uIHx8IHNpemUuaGVpZ2h0KCkgPiBjTWF4UGl4ZWxEaW1lbnNpb247Cit9CisKK3Zv
aWQgR3JhcGhpY3NMYXllckNBOjpzd2FwRnJvbU9yVG9UaWxlZExheWVyKGJvb2wgdXNlVGlsZWRM
YXllcikKK3sKKyAgICBpZiAodXNlVGlsZWRMYXllciA9PSBtX3VzaW5nVGlsZWRMYXllcikKKyAg
ICAgICAgcmV0dXJuOworCisgICAgQ0dTaXplIHRpbGVTaXplID0gQ0dTaXplTWFrZShjVGlsZWRM
YXllclRpbGVTaXplLCBjVGlsZWRMYXllclRpbGVTaXplKTsKKworICAgIFJldGFpblB0cjxDQUxh
eWVyPiBvbGRMYXllciA9IG1fbGF5ZXIuZ2V0KCk7CisgICAgCisgICAgQ2xhc3MgbGF5ZXJDbGFz
cyA9IHVzZVRpbGVkTGF5ZXIgPyBbV2ViVGlsZWRMYXllciBzZWxmXSA6IFtXZWJMYXllciBzZWxm
XTsKKyAgICBtX2xheWVyLmFkb3B0TlMoW1tsYXllckNsYXNzIGFsbG9jXSBpbml0XSk7CisKKyAg
ICBtX3VzaW5nVGlsZWRMYXllciA9IHVzZVRpbGVkTGF5ZXI7CisKKyAgICBpZiAodXNlVGlsZWRM
YXllcikgeworICAgICAgICBXZWJUaWxlZExheWVyKiB0aWxlZExheWVyID0gKFdlYlRpbGVkTGF5
ZXIqKW1fbGF5ZXIuZ2V0KCk7CisgICAgICAgIFt0aWxlZExheWVyIHNldFRpbGVTaXplOnRpbGVT
aXplXTsKKyAgICAgICAgW3RpbGVkTGF5ZXIgc2V0TGV2ZWxzT2ZEZXRhaWw6MV07CisgICAgICAg
IFt0aWxlZExheWVyIHNldExldmVsc09mRGV0YWlsQmlhczowXTsKKyAgICAgICAgW3RpbGVkTGF5
ZXIgc2V0Q29udGVudHNHcmF2aXR5OkAiYm90dG9tTGVmdCJdOworCisjaWYgIUhBVkVfTU9ERVJO
X1FVQVJUWkNPUkUKKyAgICAgICAgLy8gVGlsZWQgbGF5ZXIgaGFzIGlzc3VlcyB3aXRoIGZsaXBw
ZWQgY29vcmRpbmF0ZXMuCisgICAgICAgIHNldENvbnRlbnRzT3JpZW50YXRpb24oQ29tcG9zaXRp
bmdDb29yZGluYXRlc1RvcERvd24pOworI2VuZGlmCisgICAgfSBlbHNlIHsKKyNpZiAhSEFWRV9N
T0RFUk5fUVVBUlRaQ09SRQorICAgICAgICBzZXRDb250ZW50c09yaWVudGF0aW9uKGRlZmF1bHRD
b250ZW50c09yaWVudGF0aW9uKCkpOworI2VuZGlmCisgICAgfQorICAgIAorICAgIFttX2xheWVy
LmdldCgpIHNldExheWVyT3duZXI6dGhpc107CisgICAgc2FmZVNldFN1YmxheWVycyhtX2xheWVy
LmdldCgpLCBbb2xkTGF5ZXIuZ2V0KCkgc3VibGF5ZXJzXSk7CisgICAgCisgICAgW1tvbGRMYXll
ci5nZXQoKSBzdXBlcmxheWVyXSByZXBsYWNlU3VibGF5ZXI6b2xkTGF5ZXIuZ2V0KCkgd2l0aDpt
X2xheWVyLmdldCgpXTsKKworICAgIHVwZGF0ZUNvbnRlbnRzVHJhbnNmb3JtKCk7CisKKyAgICB1
cGRhdGVMYXllclBvc2l0aW9uKCk7CisgICAgdXBkYXRlTGF5ZXJTaXplKCk7CisgICAgdXBkYXRl
QW5jaG9yUG9pbnQoKTsKKyAgICB1cGRhdGVUcmFuc2Zvcm0oKTsKKyAgICB1cGRhdGVDaGlsZHJl
blRyYW5zZm9ybSgpOworICAgIHVwZGF0ZU1hc2tzVG9Cb3VuZHMoKTsKKyAgICB1cGRhdGVDb250
ZW50c09wYXF1ZSgpOworICAgIHVwZGF0ZUJhY2tmYWNlVmlzaWJpbGl0eSgpOworICAgIHVwZGF0
ZUxheWVyQmFja2dyb3VuZENvbG9yKCk7CisgICAgCisgICAgdXBkYXRlT3BhY2l0eU9uTGF5ZXIo
KTsKKyAgICAKKyNpZm5kZWYgTkRFQlVHCisgICAgU3RyaW5nIG5hbWUgPSBTdHJpbmc6OmZvcm1h
dCgiQ0FMYXllciglcCkgR3JhcGhpY3NMYXllciglcCkgIiwgbV9sYXllci5nZXQoKSwgdGhpcykg
KyBtX25hbWU7CisgICAgW21fbGF5ZXIuZ2V0KCkgc2V0TmFtZTpuYW1lXTsKKyNlbmRpZgorCisg
ICAgLy8gbW92ZSBvdmVyIGFuaW1hdGlvbnMKKyAgICBtb3ZlT3JDb3B5QW5pbWF0aW9uc0ZvclBy
b3BlcnR5KE1vdmUsIEFuaW1hdGVkUHJvcGVydHlXZWJraXRUcmFuc2Zvcm0sIG9sZExheWVyLmdl
dCgpLCBtX2xheWVyLmdldCgpKTsKKyAgICBtb3ZlT3JDb3B5QW5pbWF0aW9uc0ZvclByb3BlcnR5
KE1vdmUsIEFuaW1hdGVkUHJvcGVydHlPcGFjaXR5LCBvbGRMYXllci5nZXQoKSwgbV9sYXllci5n
ZXQoKSk7CisgICAgbW92ZU9yQ29weUFuaW1hdGlvbnNGb3JQcm9wZXJ0eShNb3ZlLCBBbmltYXRl
ZFByb3BlcnR5QmFja2dyb3VuZENvbG9yLCBvbGRMYXllci5nZXQoKSwgbV9sYXllci5nZXQoKSk7
CisgICAgCisgICAgLy8gbmVlZCB0byB0ZWxsIG5ldyBsYXllciB0byBkcmF3IGl0c2VsZgorICAg
IHNldE5lZWRzRGlzcGxheSgpOworICAgIAorICAgIHVwZGF0ZURlYnVnSW5kaWNhdG9ycygpOwor
fQorCitHcmFwaGljc0xheWVyOjpDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRpb24gR3Jh
cGhpY3NMYXllckNBOjpkZWZhdWx0Q29udGVudHNPcmllbnRhdGlvbigpIGNvbnN0Cit7CisjaWYg
IUhBVkVfTU9ERVJOX1FVQVJUWkNPUkUKKyAgICAvLyBPbGRlciBRdWFydHpDb3JlIGRvZXMgbm90
IHN1cHBvcnQgLWdlb21ldHJ5RmxpcHBlZCwgc28gd2UgbWFudWFsbHkgZmxpcCB0aGUgcm9vdAor
ICAgIC8vIGxheWVyIGdlb21ldHJ5LCBhbmQgdGhlbiBmbGlwIHRoZSBjb250ZW50cyBvZiBlYWNo
IGxheWVyIGJhY2sgc28gdGhhdCB0aGUgQ1RNIGZvciBDRworICAgIC8vIGlzIHVuZmxpcHBlZCwg
YWxsb3dpbmcgaXQgdG8gZG8gdGhlIGNvcnJlY3QgZm9udCBhdXRvLWhpbnRpbmcuCisgICAgcmV0
dXJuIENvbXBvc2l0aW5nQ29vcmRpbmF0ZXNCb3R0b21VcDsKKyNlbHNlCisgICAgcmV0dXJuIENv
bXBvc2l0aW5nQ29vcmRpbmF0ZXNUb3BEb3duOworI2VuZGlmCit9CisKK3ZvaWQgR3JhcGhpY3NM
YXllckNBOjp1cGRhdGVDb250ZW50c1RyYW5zZm9ybSgpCit7CisjaWYgIUhBVkVfTU9ERVJOX1FV
QVJUWkNPUkUKKyAgICBpZiAoY29udGVudHNPcmllbnRhdGlvbigpID09IENvbXBvc2l0aW5nQ29v
cmRpbmF0ZXNCb3R0b21VcCkgeworICAgICAgICBDR0FmZmluZVRyYW5zZm9ybSBjb250ZW50c1Ry
YW5zZm9ybSA9IENHQWZmaW5lVHJhbnNmb3JtTWFrZVNjYWxlKDEsIC0xKTsKKyAgICAgICAgY29u
dGVudHNUcmFuc2Zvcm0gPSBDR0FmZmluZVRyYW5zZm9ybVRyYW5zbGF0ZShjb250ZW50c1RyYW5z
Zm9ybSwgMCwgLVttX2xheWVyLmdldCgpIGJvdW5kc10uc2l6ZS5oZWlnaHQpOworICAgICAgICBb
bV9sYXllci5nZXQoKSBzZXRDb250ZW50c1RyYW5zZm9ybTpjb250ZW50c1RyYW5zZm9ybV07Cisg
ICAgfQorI2VuZGlmCit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXR1cENvbnRlbnRzTGF5
ZXIoQ0FMYXllciogY29udGVudHNMYXllcikKK3sKKyAgICAvLyBUdXJuIG9mZiBpbXBsaWNpdCBh
bmltYXRpb25zIG9uIHRoZSBpbm5lciBsYXllci4KKyAgICBbY29udGVudHNMYXllciBzZXRTdHls
ZTpbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0Om51bGxBY3Rpb25zRGljdGlvbmFy
eSgpIGZvcktleTpAImFjdGlvbnMiXV07CisgICAgW2NvbnRlbnRzTGF5ZXIgc2V0TWFza3NUb0Jv
dW5kczpZRVNdOworCisgICAgaWYgKGRlZmF1bHRDb250ZW50c09yaWVudGF0aW9uKCkgPT0gQ29t
cG9zaXRpbmdDb29yZGluYXRlc0JvdHRvbVVwKSB7CisgICAgICAgIENBVHJhbnNmb3JtM0QgZmxp
cHBlciA9IHsKKyAgICAgICAgICAgIDEuMGYsIDAuMGYsIDAuMGYsIDAuMGYsCisgICAgICAgICAg
ICAwLjBmLCAtMS4wZiwgMC4wZiwgMC4wZiwKKyAgICAgICAgICAgIDAuMGYsIDAuMGYsIDEuMGYs
IDAuMGYsCisgICAgICAgICAgICAwLjBmLCAwLjBmLCAwLjBmLCAxLjBmfTsKKyAgICAgICAgW2Nv
bnRlbnRzTGF5ZXIgc2V0VHJhbnNmb3JtOmZsaXBwZXJdOworICAgICAgICBbY29udGVudHNMYXll
ciBzZXRBbmNob3JQb2ludDpDR1BvaW50TWFrZSgwLjBmLCAxLjBmKV07CisgICAgfSBlbHNlCisg
ICAgICAgIFtjb250ZW50c0xheWVyIHNldEFuY2hvclBvaW50OkNHUG9pbnRaZXJvXTsKKworICAg
IGlmIChzaG93RGVidWdCb3JkZXJzKCkpIHsKKyAgICAgICAgc2V0TGF5ZXJCb3JkZXJDb2xvcihj
b250ZW50c0xheWVyLCBDb2xvcigwLCAwLCAxMjgsIDE4MCkpOworICAgICAgICBbY29udGVudHNM
YXllciBzZXRCb3JkZXJXaWR0aDoxLjBmXTsKKyAgICB9Cit9CisKK0NBTGF5ZXIgKkdyYXBoaWNz
TGF5ZXJDQTo6ZmluZE9yTWFrZUNsb25lKENsb25lSUQgY2xvbmVJRCwgQ0FMYXllciAqc291cmNl
TGF5ZXIsIExheWVyTWFwKiBjbG9uZXMsIENsb25lTGV2ZWwgY2xvbmVMZXZlbCkKK3sKKyAgICBp
ZiAoIXNvdXJjZUxheWVyKQorICAgICAgICByZXR1cm4gMDsKKworICAgIENBTGF5ZXIgKnJlc3Vs
dExheWVyOworCisgICAgLy8gQWRkIHdpdGggYSBkdW1teSB2YWx1ZSB0byBnZXQgYW4gaXRlcmF0
b3IgZm9yIHRoZSBpbnNlcnRpb24gcG9zaXRpb24sIGFuZCBhIGJvb2xlYW4gdGhhdCB0ZWxscwor
ICAgIC8vIHVzIHdoZXRoZXIgdGhlcmUncyBhbiBpdGVtIHRoZXJlLiBUaGlzIHRlY2huaXF1ZSBh
dm9pZHMgdHdvIGhhc2ggbG9va3Vwcy4KKyAgICBSZXRhaW5QdHI8Q0FMYXllcj4gZHVtbXk7Cisg
ICAgcGFpcjxMYXllck1hcDo6aXRlcmF0b3IsIGJvb2w+IGFkZFJlc3VsdCA9IGNsb25lcy0+YWRk
KGNsb25lSUQsIGR1bW15KTsKKyAgICBpZiAoIWFkZFJlc3VsdC5zZWNvbmQpIHsKKyAgICAgICAg
Ly8gVmFsdWUgd2FzIG5vdCBhZGRlZCwgc28gaXQgZXhpc3RzIGFscmVhZHkuCisgICAgICAgIHJl
c3VsdExheWVyID0gYWRkUmVzdWx0LmZpcnN0LT5zZWNvbmQuZ2V0KCk7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgcmVzdWx0TGF5ZXIgPSBjbG9uZUxheWVyKHNvdXJjZUxheWVyLCBjbG9uZUxldmVs
KTsKKyNpZm5kZWYgTkRFQlVHCisgICAgICAgIFtyZXN1bHRMYXllciBzZXROYW1lOltOU1N0cmlu
ZyBzdHJpbmdXaXRoRm9ybWF0OkAiQ2xvbmUgJWQgb2YgbGF5ZXIgJUAiLCBjbG9uZUlEWzBVXSwg
c291cmNlTGF5ZXJdXTsKKyNlbmRpZgorICAgICAgICBhZGRSZXN1bHQuZmlyc3QtPnNlY29uZCA9
IHJlc3VsdExheWVyOworICAgIH0KKworICAgIHJldHVybiByZXN1bHRMYXllcjsKK30gICAKKwor
dm9pZCBHcmFwaGljc0xheWVyQ0E6OmVuc3VyZUNsb25lTGF5ZXJzKENsb25lSUQgY2xvbmVJRCwg
Q0FMYXllciAqJiBwcmltYXJ5TGF5ZXIsIENBTGF5ZXIgKiYgc3RydWN0dXJhbExheWVyLCBDQUxh
eWVyIComIGNvbnRlbnRzTGF5ZXIsIENsb25lTGV2ZWwgY2xvbmVMZXZlbCkKK3sKKyAgICBzdHJ1
Y3R1cmFsTGF5ZXIgPSBuaWw7CisgICAgY29udGVudHNMYXllciA9IG5pbDsKKworICAgIGlmICgh
bV9sYXllckNsb25lcykKKyAgICAgICAgbV9sYXllckNsb25lcyA9IG5ldyBMYXllck1hcDsKKwor
ICAgIGlmICghbV9zdHJ1Y3R1cmFsTGF5ZXJDbG9uZXMgJiYgbV9zdHJ1Y3R1cmFsTGF5ZXIpCisg
ICAgICAgIG1fc3RydWN0dXJhbExheWVyQ2xvbmVzID0gbmV3IExheWVyTWFwOworCisgICAgaWYg
KCFtX2NvbnRlbnRzTGF5ZXJDbG9uZXMgJiYgbV9jb250ZW50c0xheWVyKQorICAgICAgICBtX2Nv
bnRlbnRzTGF5ZXJDbG9uZXMgPSBuZXcgTGF5ZXJNYXA7CisKKyAgICBwcmltYXJ5TGF5ZXIgPSBm
aW5kT3JNYWtlQ2xvbmUoY2xvbmVJRCwgbV9sYXllci5nZXQoKSwgbV9sYXllckNsb25lcy5nZXQo
KSwgY2xvbmVMZXZlbCk7CisgICAgc3RydWN0dXJhbExheWVyID0gZmluZE9yTWFrZUNsb25lKGNs
b25lSUQsIG1fc3RydWN0dXJhbExheWVyLmdldCgpLCBtX3N0cnVjdHVyYWxMYXllckNsb25lcy5n
ZXQoKSwgY2xvbmVMZXZlbCk7CisgICAgY29udGVudHNMYXllciA9IGZpbmRPck1ha2VDbG9uZShj
bG9uZUlELCBtX2NvbnRlbnRzTGF5ZXIuZ2V0KCksIG1fY29udGVudHNMYXllckNsb25lcy5nZXQo
KSwgY2xvbmVMZXZlbCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpyZW1vdmVDbG9uZUxh
eWVycygpCit7CisgICAgbV9sYXllckNsb25lcyA9IDA7CisgICAgbV9zdHJ1Y3R1cmFsTGF5ZXJD
bG9uZXMgPSAwOworICAgIG1fY29udGVudHNMYXllckNsb25lcyA9IDA7Cit9CisKK0Zsb2F0UG9p
bnQgR3JhcGhpY3NMYXllckNBOjpwb3NpdGlvbkZvckNsb25lUm9vdExheWVyKCkgY29uc3QKK3sK
KyAgICAvLyBUaGlzIGNhbiBnZXQgY2FsbGVkIGR1cmluZyBhIHN5bmMgd2hlbiB3ZSd2ZSBqdXN0
IHJlbW92ZWQgdGhlIG1fcmVwbGljYUxheWVyLgorICAgIGlmICghbV9yZXBsaWNhTGF5ZXIpCisg
ICAgICAgIHJldHVybiBGbG9hdFBvaW50KCk7CisKKyAgICBGbG9hdFBvaW50IHJlcGxpY2FQb3Np
dGlvbiA9IG1fcmVwbGljYUxheWVyLT5yZXBsaWNhdGVkTGF5ZXJQb3NpdGlvbigpOworICAgIHJl
dHVybiBGbG9hdFBvaW50KHJlcGxpY2FQb3NpdGlvbi54KCkgKyBtX2FuY2hvclBvaW50LngoKSAq
IG1fc2l6ZS53aWR0aCgpLAorICAgICAgICAgICAgICAgICAgICAgIHJlcGxpY2FQb3NpdGlvbi55
KCkgKyBtX2FuY2hvclBvaW50LnkoKSAqIG1fc2l6ZS5oZWlnaHQoKSk7Cit9CisKK3ZvaWQgR3Jh
cGhpY3NMYXllckNBOjpwcm9wYWdhdGVMYXllckNoYW5nZVRvUmVwbGljYXMoKQoreworICAgIGZv
ciAoR3JhcGhpY3NMYXllciogY3VyckxheWVyID0gdGhpczsgY3VyckxheWVyOyBjdXJyTGF5ZXIg
PSBjdXJyTGF5ZXItPnBhcmVudCgpKSB7CisgICAgICAgIEdyYXBoaWNzTGF5ZXJDQSogY3Vyckxh
eWVyQ0EgPSBzdGF0aWNfY2FzdDxHcmFwaGljc0xheWVyQ0EqPihjdXJyTGF5ZXIpOworICAgICAg
ICBpZiAoIWN1cnJMYXllckNBLT5oYXNDbG9uZUxheWVycygpKQorICAgICAgICAgICAgYnJlYWs7
CisKKyAgICAgICAgaWYgKGN1cnJMYXllckNBLT5yZXBsaWNhTGF5ZXIoKSkKKyAgICAgICAgICAg
IHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXJDQSo+KGN1cnJMYXllckNBLT5yZXBsaWNhTGF5ZXIo
KSktPm5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChSZXBsaWNhdGVkTGF5ZXJDaGFuZ2VkKTsKKyAg
ICB9Cit9CisKK0NBTGF5ZXIgKkdyYXBoaWNzTGF5ZXJDQTo6ZmV0Y2hDbG9uZUxheWVycyhHcmFw
aGljc0xheWVyKiByZXBsaWNhUm9vdCwgUmVwbGljYVN0YXRlJiByZXBsaWNhU3RhdGUsIENsb25l
TGV2ZWwgY2xvbmVMZXZlbCkKK3sKKyAgICBDQUxheWVyICpwcmltYXJ5TGF5ZXI7CisgICAgQ0FM
YXllciAqc3RydWN0dXJhbExheWVyOworICAgIENBTGF5ZXIgKmNvbnRlbnRzTGF5ZXI7CisgICAg
ZW5zdXJlQ2xvbmVMYXllcnMocmVwbGljYVN0YXRlLmNsb25lSUQoKSwgcHJpbWFyeUxheWVyLCBz
dHJ1Y3R1cmFsTGF5ZXIsIGNvbnRlbnRzTGF5ZXIsIGNsb25lTGV2ZWwpOworCisgICAgaWYgKG1f
bWFza0xheWVyKSB7CisgICAgICAgIENBTGF5ZXIgKm1hc2tDbG9uZSA9IHN0YXRpY19jYXN0PEdy
YXBoaWNzTGF5ZXJDQSo+KG1fbWFza0xheWVyKS0+ZmV0Y2hDbG9uZUxheWVycyhyZXBsaWNhUm9v
dCwgcmVwbGljYVN0YXRlLCBJbnRlcm1lZGlhdGVDbG9uZUxldmVsKTsKKyAgICAgICAgW3ByaW1h
cnlMYXllciBzZXRNYXNrOm1hc2tDbG9uZV07CisgICAgfQorCisgICAgaWYgKG1fcmVwbGljYXRl
ZExheWVyKSB7CisgICAgICAgIC8vIFdlIGFyZSBhIHJlcGxpY2EgYmVpbmcgYXNrZWQgZm9yIGNs
b25lcyBvZiBvdXIgbGF5ZXJzLgorICAgICAgICBDQUxheWVyICpyZXBsaWNhUm9vdCA9IHJlcGxp
Y2F0ZWRMYXllclJvb3QocmVwbGljYVN0YXRlKTsKKyAgICAgICAgaWYgKCFyZXBsaWNhUm9vdCkK
KyAgICAgICAgICAgIHJldHVybiBuaWw7CisKKyAgICAgICAgaWYgKHN0cnVjdHVyYWxMYXllcikg
eworICAgICAgICAgICAgW3N0cnVjdHVyYWxMYXllciBpbnNlcnRTdWJsYXllcjpyZXBsaWNhUm9v
dCBhdEluZGV4OjBdOworICAgICAgICAgICAgcmV0dXJuIHN0cnVjdHVyYWxMYXllcjsKKyAgICAg
ICAgfQorICAgICAgICAKKyAgICAgICAgW3ByaW1hcnlMYXllciBpbnNlcnRTdWJsYXllcjpyZXBs
aWNhUm9vdCBhdEluZGV4OjBdOworICAgICAgICByZXR1cm4gcHJpbWFyeUxheWVyOworICAgIH0K
KworICAgIGNvbnN0IFZlY3RvcjxHcmFwaGljc0xheWVyKj4mIGNoaWxkTGF5ZXJzID0gY2hpbGRy
ZW4oKTsKKyAgICBOU011dGFibGVBcnJheSogY2xvbmFsU3VibGF5ZXJzID0gbmlsOworCisgICAg
Q0FMYXllciAqcmVwbGljYUxheWVyID0gbmlsOworICAgIGlmIChtX3JlcGxpY2FMYXllciAmJiBt
X3JlcGxpY2FMYXllciAhPSByZXBsaWNhUm9vdCkgeworICAgICAgICAvLyBXZSBoYXZlIG5lc3Rl
ZCByZXBsaWNhcy4gQXNrIHRoZSByZXBsaWNhIGxheWVyIGZvciBhIGNsb25lIG9mIGl0cyBjb250
ZW50cy4KKyAgICAgICAgcmVwbGljYVN0YXRlLnNldEJyYW5jaFR5cGUoUmVwbGljYVN0YXRlOjpS
ZXBsaWNhQnJhbmNoKTsKKyAgICAgICAgcmVwbGljYUxheWVyID0gc3RhdGljX2Nhc3Q8R3JhcGhp
Y3NMYXllckNBKj4obV9yZXBsaWNhTGF5ZXIpLT5mZXRjaENsb25lTGF5ZXJzKHJlcGxpY2FSb290
LCByZXBsaWNhU3RhdGUsIFJvb3RDbG9uZUxldmVsKTsKKyAgICAgICAgcmVwbGljYVN0YXRlLnNl
dEJyYW5jaFR5cGUoUmVwbGljYVN0YXRlOjpDaGlsZEJyYW5jaCk7CisgICAgfQorICAgIAorICAg
IGlmIChyZXBsaWNhTGF5ZXIgfHwgc3RydWN0dXJhbExheWVyIHx8IGNvbnRlbnRzTGF5ZXIgfHwg
Y2hpbGRMYXllcnMuc2l6ZSgpID4gMCkgeworICAgICAgICBjbG9uYWxTdWJsYXllcnMgPSBbW05T
TXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XTsKKworICAgICAgICBpZiAoc3RydWN0dXJhbExheWVy
KSB7CisgICAgICAgICAgICAvLyBSZXBsaWNhcyByZW5kZXIgYmVoaW5kIHRoZSBhY3R1YWwgbGF5
ZXIgY29udGVudC4KKyAgICAgICAgICAgIGlmIChyZXBsaWNhTGF5ZXIpCisgICAgICAgICAgICAg
ICAgW2Nsb25hbFN1YmxheWVycyBhZGRPYmplY3Q6cmVwbGljYUxheWVyXTsKKyAgICAgICAgICAg
ICAgICAKKyAgICAgICAgICAgIC8vIEFkZCB0aGUgcHJpbWFyeSBsYXllciBuZXh0LiBFdmVuIGlm
IHdlIGhhdmUgbmVnYXRpdmUgei1vcmRlciBjaGlsZHJlbiwgdGhlIHByaW1hcnkgbGF5ZXIgYWx3
YXlzIGNvbWVzIGJlaGluZC4KKyAgICAgICAgICAgIFtjbG9uYWxTdWJsYXllcnMgYWRkT2JqZWN0
OnByaW1hcnlMYXllcl07CisgICAgICAgIH0gZWxzZSBpZiAoY29udGVudHNMYXllcikgeworICAg
ICAgICAgICAgLy8gRklYTUU6IGFkZCB0aGUgY29udGVudHMgbGF5ZXIgaW4gdGhlIGNvcnJlY3Qg
b3JkZXIgd2l0aCBuZWdhdGl2ZSB6LW9yZGVyIGNoaWxkcmVuLgorICAgICAgICAgICAgLy8gVGhp
cyBkb2VzIG5vdCBjYXVzZSB2aXNpYmxlIHJlbmRlcmluZyBpc3N1ZXMgYmVjYXVzZSBjdXJyZW50
bHkgY29udGVudHMgbGF5ZXJzIGFyZSBvbmx5IHVzZWQKKyAgICAgICAgICAgIC8vIGZvciByZXBs
YWNlZCBlbGVtZW50cyB0aGF0IGRvbid0IGhhdmUgY2hpbGRyZW4uCisgICAgICAgICAgICBbY2xv
bmFsU3VibGF5ZXJzIGFkZE9iamVjdDpjb250ZW50c0xheWVyXTsKKyAgICAgICAgfQorICAgICAg
ICAKKyAgICAgICAgcmVwbGljYVN0YXRlLnB1c2goUmVwbGljYVN0YXRlOjpDaGlsZEJyYW5jaCk7
CisKKyAgICAgICAgc2l6ZV90IG51bUNoaWxkcmVuID0gY2hpbGRMYXllcnMuc2l6ZSgpOworICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bUNoaWxkcmVuOyArK2kpIHsKKyAgICAgICAg
ICAgIEdyYXBoaWNzTGF5ZXJDQSogY3VyQ2hpbGQgPSBzdGF0aWNfY2FzdDxHcmFwaGljc0xheWVy
Q0EqPihjaGlsZExheWVyc1tpXSk7CisKKyAgICAgICAgICAgIENBTGF5ZXIgKmNoaWxkTGF5ZXIg
PSBjdXJDaGlsZC0+ZmV0Y2hDbG9uZUxheWVycyhyZXBsaWNhUm9vdCwgcmVwbGljYVN0YXRlLCBJ
bnRlcm1lZGlhdGVDbG9uZUxldmVsKTsKKyAgICAgICAgICAgIGlmIChjaGlsZExheWVyKQorICAg
ICAgICAgICAgICAgIFtjbG9uYWxTdWJsYXllcnMgYWRkT2JqZWN0OmNoaWxkTGF5ZXJdOworICAg
ICAgICB9CisKKyAgICAgICAgcmVwbGljYVN0YXRlLnBvcCgpOworCisgICAgICAgIFtjbG9uYWxT
dWJsYXllcnMgbWFrZU9iamVjdHNQZXJmb3JtU2VsZWN0b3I6QHNlbGVjdG9yKHJlbW92ZUZyb21T
dXBlcmxheWVyKV07CisgICAgfQorICAgIAorICAgIENBTGF5ZXIgKnJlc3VsdDsKKyAgICBpZiAo
c3RydWN0dXJhbExheWVyKSB7CisgICAgICAgIFtzdHJ1Y3R1cmFsTGF5ZXIgc2V0U3VibGF5ZXJz
OmNsb25hbFN1YmxheWVyc107CisKKyAgICAgICAgaWYgKGNvbnRlbnRzTGF5ZXIpIHsKKyAgICAg
ICAgICAgIC8vIElmIHdlIGhhdmUgYSB0cmFuc2Zvcm0gbGF5ZXIsIHRoZW4gdGhlIGNvbnRlbnRz
IGxheWVyIGlzIHBhcmVudGVkIGluIHRoZSAKKyAgICAgICAgICAgIC8vIHByaW1hcnkgbGF5ZXIg
KHdoaWNoIGlzIGl0c2VsZiBhIGNoaWxkIG9mIHRoZSB0cmFuc2Zvcm0gbGF5ZXIpLgorICAgICAg
ICAgICAgW3ByaW1hcnlMYXllciBzZXRTdWJsYXllcnM6bmlsXTsKKyAgICAgICAgICAgIFtwcmlt
YXJ5TGF5ZXIgYWRkU3VibGF5ZXI6Y29udGVudHNMYXllcl07CisgICAgICAgIH0KKworICAgICAg
ICByZXN1bHQgPSBzdHJ1Y3R1cmFsTGF5ZXI7CisgICAgfSBlbHNlIHsKKyAgICAgICAgW3ByaW1h
cnlMYXllciBzZXRTdWJsYXllcnM6Y2xvbmFsU3VibGF5ZXJzXTsKKyAgICAgICAgcmVzdWx0ID0g
cHJpbWFyeUxheWVyOworICAgIH0KKworICAgIFtjbG9uYWxTdWJsYXllcnMgcmVsZWFzZV07Cisg
ICAgcmV0dXJuIHJlc3VsdDsKK30KKworQ0FMYXllciAqR3JhcGhpY3NMYXllckNBOjpjbG9uZUxh
eWVyKENBTGF5ZXIgKmxheWVyLCBDbG9uZUxldmVsIGNsb25lTGV2ZWwpCit7CisgICAgc3RhdGlj
IENsYXNzIHRyYW5zZm9ybUxheWVyQ2xhc3MgPSBOU0NsYXNzRnJvbVN0cmluZyhAIkNBVHJhbnNm
b3JtTGF5ZXIiKTsKKyAgICBDQUxheWVyICpuZXdMYXllciA9IG5pbDsKKyAgICBpZiAoW2xheWVy
IGlzS2luZE9mQ2xhc3M6dHJhbnNmb3JtTGF5ZXJDbGFzc10pCisgICAgICAgIG5ld0xheWVyID0g
W3RyYW5zZm9ybUxheWVyQ2xhc3MgbGF5ZXJdOworICAgIGVsc2UKKyAgICAgICAgbmV3TGF5ZXIg
PSBbQ0FMYXllciBsYXllcl07CisKKyAgICBbbmV3TGF5ZXIgc2V0U3R5bGU6W05TRGljdGlvbmFy
eSBkaWN0aW9uYXJ5V2l0aE9iamVjdDpudWxsQWN0aW9uc0RpY3Rpb25hcnkoKSBmb3JLZXk6QCJh
Y3Rpb25zIl1dOworICAgIAorICAgIFtuZXdMYXllciBzZXRQb3NpdGlvbjpbbGF5ZXIgcG9zaXRp
b25dXTsKKyAgICBbbmV3TGF5ZXIgc2V0Qm91bmRzOltsYXllciBib3VuZHNdXTsKKyAgICBbbmV3
TGF5ZXIgc2V0QW5jaG9yUG9pbnQ6W2xheWVyIGFuY2hvclBvaW50XV07CisjaWYgSEFWRV9NT0RF
Uk5fUVVBUlRaQ09SRQorICAgIFtuZXdMYXllciBzZXRBbmNob3JQb2ludFo6W2xheWVyIGFuY2hv
clBvaW50Wl1dOworI2VuZGlmCisgICAgW25ld0xheWVyIHNldFRyYW5zZm9ybTpbbGF5ZXIgdHJh
bnNmb3JtXV07CisgICAgW25ld0xheWVyIHNldFN1YmxheWVyVHJhbnNmb3JtOltsYXllciBzdWJs
YXllclRyYW5zZm9ybV1dOworICAgIFtuZXdMYXllciBzZXRDb250ZW50czpbbGF5ZXIgY29udGVu
dHNdXTsKKyAgICBbbmV3TGF5ZXIgc2V0TWFza3NUb0JvdW5kczpbbGF5ZXIgbWFza3NUb0JvdW5k
c11dOworICAgIFtuZXdMYXllciBzZXREb3VibGVTaWRlZDpbbGF5ZXIgaXNEb3VibGVTaWRlZF1d
OworICAgIFtuZXdMYXllciBzZXRPcGFxdWU6W2xheWVyIGlzT3BhcXVlXV07CisgICAgW25ld0xh
eWVyIHNldEJhY2tncm91bmRDb2xvcjpbbGF5ZXIgYmFja2dyb3VuZENvbG9yXV07CisKKyAgICBp
ZiAoY2xvbmVMZXZlbCA9PSBJbnRlcm1lZGlhdGVDbG9uZUxldmVsKSB7CisgICAgICAgIFtuZXdM
YXllciBzZXRPcGFjaXR5OltsYXllciBvcGFjaXR5XV07CisgICAgICAgIG1vdmVPckNvcHlBbmlt
YXRpb25zRm9yUHJvcGVydHkoQ29weSwgQW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybSwg
bGF5ZXIsIG5ld0xheWVyKTsKKyAgICAgICAgbW92ZU9yQ29weUFuaW1hdGlvbnNGb3JQcm9wZXJ0
eShDb3B5LCBBbmltYXRlZFByb3BlcnR5T3BhY2l0eSwgbGF5ZXIsIG5ld0xheWVyKTsKKyAgICB9
CisgICAgCisgICAgaWYgKHNob3dEZWJ1Z0JvcmRlcnMoKSkgeworICAgICAgICBzZXRMYXllckJv
cmRlckNvbG9yKG5ld0xheWVyLCBDb2xvcigyNTUsIDEyMiwgMjUxKSk7CisgICAgICAgIFtuZXdM
YXllciBzZXRCb3JkZXJXaWR0aDoyXTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIG5ld0xheWVy
OworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0T3BhY2l0eUludGVybmFsKGZsb2F0IGFj
Y3VtdWxhdGVkT3BhY2l0eSkKK3sKKyAgICBMYXllck1hcCogbGF5ZXJDbG9uZU1hcCA9IDA7Cisg
ICAgCisgICAgaWYgKHByZXNlcnZlczNEKCkpIHsKKyAgICAgICAgW21fbGF5ZXIuZ2V0KCkgc2V0
T3BhY2l0eTphY2N1bXVsYXRlZE9wYWNpdHldOworICAgICAgICBsYXllckNsb25lTWFwID0gbV9s
YXllckNsb25lcy5nZXQoKTsKKyAgICB9IGVsc2UgeworICAgICAgICBbcHJpbWFyeUxheWVyKCkg
c2V0T3BhY2l0eTphY2N1bXVsYXRlZE9wYWNpdHldOworICAgICAgICBsYXllckNsb25lTWFwID0g
cHJpbWFyeUxheWVyQ2xvbmVzKCk7CisgICAgfQorCisgICAgaWYgKGxheWVyQ2xvbmVNYXApIHsK
KyAgICAgICAgTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGxheWVyQ2xvbmVNYXAtPmVu
ZCgpOworICAgICAgICBmb3IgKExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGxheWVyQ2xv
bmVNYXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICAgICAgaWYgKG1fcmVw
bGljYUxheWVyICYmIGlzUmVwbGljYXRlZFJvb3RDbG9uZShpdC0+Zmlyc3QpKQorICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgQ0FMYXllciAqY3VyckxheWVyID0gaXQtPnNl
Y29uZC5nZXQoKTsKKyAgICAgICAgICAgIFtjdXJyTGF5ZXIgc2V0T3BhY2l0eTptX29wYWNpdHld
OworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlT3Bh
Y2l0eU9uTGF5ZXIoKQoreworI2lmICFIQVZFX01PREVSTl9RVUFSVFpDT1JFCisgICAgLy8gRGlz
dHJpYnV0ZSBvcGFjaXR5IGVpdGhlciB0byBvdXIgb3duIGxheWVyIG9yIHRvIG91ciBjaGlsZHJl
bi4gV2UgcGFzcyBpbiB0aGUgCisgICAgLy8gY29udHJpYnV0aW9uIGZyb20gb3VyIHBhcmVudChz
KS4KKyAgICBkaXN0cmlidXRlT3BhY2l0eShwYXJlbnQoKSA/IHBhcmVudCgpLT5hY2N1bXVsYXRl
ZE9wYWNpdHkoKSA6IDEpOworI2Vsc2UKKyAgICBbcHJpbWFyeUxheWVyKCkgc2V0T3BhY2l0eTpt
X29wYWNpdHldOworCisgICAgaWYgKExheWVyTWFwKiBsYXllckNsb25lTWFwID0gcHJpbWFyeUxh
eWVyQ2xvbmVzKCkpIHsKKyAgICAgICAgTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGxh
eWVyQ2xvbmVNYXAtPmVuZCgpOworICAgICAgICBmb3IgKExheWVyTWFwOjpjb25zdF9pdGVyYXRv
ciBpdCA9IGxheWVyQ2xvbmVNYXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAg
ICAgICAgaWYgKG1fcmVwbGljYUxheWVyICYmIGlzUmVwbGljYXRlZFJvb3RDbG9uZShpdC0+Zmly
c3QpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBDQUxheWVyICpj
dXJyTGF5ZXIgPSBpdC0+c2Vjb25kLmdldCgpOworICAgICAgICAgICAgW2N1cnJMYXllciBzZXRP
cGFjaXR5Om1fb3BhY2l0eV07CisgICAgICAgIH0KKyAgICAgICAgCisgICAgfQorI2VuZGlmCit9
CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpub3RlU3VibGF5ZXJzQ2hhbmdlZCgpCit7CisgICAg
bm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKENoaWxkcmVuQ2hhbmdlZCk7CisgICAgcHJvcGFnYXRl
TGF5ZXJDaGFuZ2VUb1JlcGxpY2FzKCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpub3Rl
TGF5ZXJQcm9wZXJ0eUNoYW5nZWQoTGF5ZXJDaGFuZ2VGbGFncyBmbGFncykKK3sKKyAgICBpZiAo
IW1fdW5jb21taXR0ZWRDaGFuZ2VzICYmIG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+bm90
aWZ5U3luY1JlcXVpcmVkKHRoaXMpOworCisgICAgbV91bmNvbW1pdHRlZENoYW5nZXMgfD0gZmxh
Z3M7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVTRShBQ0NFTEVS
QVRFRF9DT01QT1NJVElORykKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dy
YXBoaWNzTGF5ZXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvR3JhcGhpY3NMYXllck1hYy5tbQkocmV2aXNpb24gNzE1NjcpCisrKyBXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0xheWVyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0yNyw3ICsyNyw3IEBACiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAKLSNp
bXBvcnQgIkdyYXBoaWNzTGF5ZXJDQS5oIgorI2ltcG9ydCAiR3JhcGhpY3NMYXllck1hYy5oIgog
CiAjaW1wb3J0ICJBbmltYXRpb24uaCIKICNpbXBvcnQgIkJsb2NrRXhjZXB0aW9ucy5oIgpAQCAt
OTAsMTIgKzkwLDEyIEBAIC0gKHZvaWQpc2V0Q29udGVudHNDaGFuZ2VkOwogQGVuZAogCiBAaW50
ZXJmYWNlIFdlYkFuaW1hdGlvbkRlbGVnYXRlIDogTlNPYmplY3QgewotICAgIFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXJDQSogbV9ncmFwaGljc0xheWVyOworICAgIFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXJNYWMqIG1fZ3JhcGhpY3NMYXllcjsKIH0KIAogLSAodm9pZClhbmltYXRpb25EaWRTdGFydDoo
Q0FBbmltYXRpb24gKilhbmltOwotLSAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBKilncmFwaGlj
c0xheWVyOwotLSAodm9pZClzZXRMYXllcjooV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBKilncmFw
aGljc0xheWVyOworLSAoV2ViQ29yZTo6R3JhcGhpY3NMYXllck1hYyopZ3JhcGhpY3NMYXllcjsK
Ky0gKHZvaWQpc2V0TGF5ZXI6KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJNYWMqKWdyYXBoaWNzTGF5
ZXI7CiAKIEBlbmQKIApAQCAtMTA3LDEyICsxMDcsMTIgQEAgLSAodm9pZClhbmltYXRpb25EaWRT
dGFydDooQ0FBbmltYXRpb24gKgogICAgICAgICBtX2dyYXBoaWNzTGF5ZXItPmFuaW1hdGlvbkRp
ZFN0YXJ0KGFuaW1hdGlvbik7CiB9CiAKLS0gKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQSopZ3Jh
cGhpY3NMYXllcgorLSAoV2ViQ29yZTo6R3JhcGhpY3NMYXllck1hYyopZ3JhcGhpY3NMYXllcgog
ewogICAgIHJldHVybiBtX2dyYXBoaWNzTGF5ZXI7CiB9CiAKLS0gKHZvaWQpc2V0TGF5ZXI6KFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXJDQSopZ3JhcGhpY3NMYXllcgorLSAodm9pZClzZXRMYXllcjoo
V2ViQ29yZTo6R3JhcGhpY3NMYXllck1hYyopZ3JhcGhpY3NMYXllcgogewogICAgIG1fZ3JhcGhp
Y3NMYXllciA9IGdyYXBoaWNzTGF5ZXI7CiB9CkBAIC0zNDIsMTAgKzM0MiwxMCBAQCBzdGF0aWMg
Ym9vbCBhbmltYXRpb25IYXNTdGVwc1RpbWluZ0Z1bmN0CiAKIFBhc3NPd25QdHI8R3JhcGhpY3NM
YXllcj4gR3JhcGhpY3NMYXllcjo6Y3JlYXRlKEdyYXBoaWNzTGF5ZXJDbGllbnQqIGNsaWVudCkK
IHsKLSAgICByZXR1cm4gbmV3IEdyYXBoaWNzTGF5ZXJDQShjbGllbnQpOworICAgIHJldHVybiBu
ZXcgR3JhcGhpY3NMYXllck1hYyhjbGllbnQpOwogfQogCi1HcmFwaGljc0xheWVyQ0E6OkdyYXBo
aWNzTGF5ZXJDQShHcmFwaGljc0xheWVyQ2xpZW50KiBjbGllbnQpCitHcmFwaGljc0xheWVyTWFj
OjpHcmFwaGljc0xheWVyTWFjKEdyYXBoaWNzTGF5ZXJDbGllbnQqIGNsaWVudCkKICAgICA6IEdy
YXBoaWNzTGF5ZXIoY2xpZW50KQogICAgICwgbV9jb250ZW50c0xheWVyUHVycG9zZShOb0NvbnRl
bnRzTGF5ZXIpCiAgICAgLCBtX2NvbnRlbnRzTGF5ZXJIYXNCYWNrZ3JvdW5kQ29sb3IoZmFsc2Up
CkBAIC0zNjcsMTEgKzM2NywxMSBAQCBHcmFwaGljc0xheWVyQ0E6OkdyYXBoaWNzTGF5ZXJDQShH
cmFwaGljCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogfQogCi1HcmFwaGljc0xheWVy
Q0E6On5HcmFwaGljc0xheWVyQ0EoKQorR3JhcGhpY3NMYXllck1hYzo6fkdyYXBoaWNzTGF5ZXJN
YWMoKQogewogICAgIC8vIFdlIHJlbGVhc2Ugb3VyIHJlZmVyZW5jZXMgdG8gdGhlIENBTGF5ZXJz
IGhlcmUsIGJ1dCBkbyBub3QgYWN0aXZlbHkgdW5wYXJlbnQgdGhlbSwKICAgICAvLyBzaW5jZSB0
aGF0IHdpbGwgY2F1c2UgYSBjb21taXQgYW5kIGJyZWFrIG91ciBiYXRjaGVkIGNvbW1pdCBtb2Rl
bC4gVGhlIGxheWVycyB3aWxsCi0gICAgLy8gZ2V0IHJlbGVhc2VkIHdoZW4gdGhlIHJvb3Rtb3N0
IG1vZGlmaWVkIEdyYXBoaWNzTGF5ZXJDQSByZWJ1aWxkcyBpdHMgY2hpbGQgbGF5ZXJzLgorICAg
IC8vIGdldCByZWxlYXNlZCB3aGVuIHRoZSByb290bW9zdCBtb2RpZmllZCBHcmFwaGljc0xheWVy
TWFjIHJlYnVpbGRzIGl0cyBjaGlsZCBsYXllcnMuCiAgICAgCiAgICAgQkVHSU5fQkxPQ0tfT0JK
Q19FWENFUFRJT05TCiAKQEAgLTM5NSwxOSArMzk1LDE5IEBAIEdyYXBoaWNzTGF5ZXJDQTo6fkdy
YXBoaWNzTGF5ZXJDQSgpCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogfQogCi12b2lk
IEdyYXBoaWNzTGF5ZXJDQTo6c2V0TmFtZShjb25zdCBTdHJpbmcmIG5hbWUpCit2b2lkIEdyYXBo
aWNzTGF5ZXJNYWM6OnNldE5hbWUoY29uc3QgU3RyaW5nJiBuYW1lKQogewogICAgIFN0cmluZyBs
b25nTmFtZSA9IFN0cmluZzo6Zm9ybWF0KCJDQUxheWVyKCVwKSBHcmFwaGljc0xheWVyKCVwKSAi
LCBtX2xheWVyLmdldCgpLCB0aGlzKSArIG5hbWU7CiAgICAgR3JhcGhpY3NMYXllcjo6c2V0TmFt
ZShsb25nTmFtZSk7CiAgICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKE5hbWVDaGFuZ2VkKTsK
IH0KIAotTmF0aXZlTGF5ZXIgR3JhcGhpY3NMYXllckNBOjpuYXRpdmVMYXllcigpIGNvbnN0CitO
YXRpdmVMYXllciBHcmFwaGljc0xheWVyTWFjOjpuYXRpdmVMYXllcigpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIG1fbGF5ZXIuZ2V0KCk7CiB9CiAKLWJvb2wgR3JhcGhpY3NMYXllckNBOjpzZXRDaGls
ZHJlbihjb25zdCBWZWN0b3I8R3JhcGhpY3NMYXllcio+JiBjaGlsZHJlbikKK2Jvb2wgR3JhcGhp
Y3NMYXllck1hYzo6c2V0Q2hpbGRyZW4oY29uc3QgVmVjdG9yPEdyYXBoaWNzTGF5ZXIqPiYgY2hp
bGRyZW4pCiB7CiAgICAgYm9vbCBjaGlsZHJlbkNoYW5nZWQgPSBHcmFwaGljc0xheWVyOjpzZXRD
aGlsZHJlbihjaGlsZHJlbik7CiAgICAgaWYgKGNoaWxkcmVuQ2hhbmdlZCkKQEAgLTQxNiwzMSAr
NDE2LDMxIEBAIGJvb2wgR3JhcGhpY3NMYXllckNBOjpzZXRDaGlsZHJlbihjb25zdCAKICAgICBy
ZXR1cm4gY2hpbGRyZW5DaGFuZ2VkOwogfQogCi12b2lkIEdyYXBoaWNzTGF5ZXJDQTo6YWRkQ2hp
bGQoR3JhcGhpY3NMYXllciogY2hpbGRMYXllcikKK3ZvaWQgR3JhcGhpY3NMYXllck1hYzo6YWRk
Q2hpbGQoR3JhcGhpY3NMYXllciogY2hpbGRMYXllcikKIHsKICAgICBHcmFwaGljc0xheWVyOjph
ZGRDaGlsZChjaGlsZExheWVyKTsKICAgICBub3RlU3VibGF5ZXJzQ2hhbmdlZCgpOwogfQogCi12
b2lkIEdyYXBoaWNzTGF5ZXJDQTo6YWRkQ2hpbGRBdEluZGV4KEdyYXBoaWNzTGF5ZXIqIGNoaWxk
TGF5ZXIsIGludCBpbmRleCkKK3ZvaWQgR3JhcGhpY3NMYXllck1hYzo6YWRkQ2hpbGRBdEluZGV4
KEdyYXBoaWNzTGF5ZXIqIGNoaWxkTGF5ZXIsIGludCBpbmRleCkKIHsKICAgICBHcmFwaGljc0xh
eWVyOjphZGRDaGlsZEF0SW5kZXgoY2hpbGRMYXllciwgaW5kZXgpOwogICAgIG5vdGVTdWJsYXll
cnNDaGFuZ2VkKCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NMYXllckNBOjphZGRDaGlsZEJlbG93KEdy
YXBoaWNzTGF5ZXIqIGNoaWxkTGF5ZXIsIEdyYXBoaWNzTGF5ZXIqIHNpYmxpbmcpCit2b2lkIEdy
YXBoaWNzTGF5ZXJNYWM6OmFkZENoaWxkQmVsb3coR3JhcGhpY3NMYXllciogY2hpbGRMYXllciwg
R3JhcGhpY3NMYXllciogc2libGluZykKIHsKICAgICBHcmFwaGljc0xheWVyOjphZGRDaGlsZEJl
bG93KGNoaWxkTGF5ZXIsIHNpYmxpbmcpOwogICAgIG5vdGVTdWJsYXllcnNDaGFuZ2VkKCk7CiB9
CiAKLXZvaWQgR3JhcGhpY3NMYXllckNBOjphZGRDaGlsZEFib3ZlKEdyYXBoaWNzTGF5ZXIqIGNo
aWxkTGF5ZXIsIEdyYXBoaWNzTGF5ZXIqIHNpYmxpbmcpCit2b2lkIEdyYXBoaWNzTGF5ZXJNYWM6
OmFkZENoaWxkQWJvdmUoR3JhcGhpY3NMYXllciogY2hpbGRMYXllciwgR3JhcGhpY3NMYXllciog
c2libGluZykKIHsKICAgICBHcmFwaGljc0xheWVyOjphZGRDaGlsZEFib3ZlKGNoaWxkTGF5ZXIs
IHNpYmxpbmcpOwogICAgIG5vdGVTdWJsYXllcnNDaGFuZ2VkKCk7CiB9CiAKLWJvb2wgR3JhcGhp
Y3NMYXllckNBOjpyZXBsYWNlQ2hpbGQoR3JhcGhpY3NMYXllciogb2xkQ2hpbGQsIEdyYXBoaWNz
TGF5ZXIqIG5ld0NoaWxkKQorYm9vbCBHcmFwaGljc0xheWVyTWFjOjpyZXBsYWNlQ2hpbGQoR3Jh
cGhpY3NMYXllciogb2xkQ2hpbGQsIEdyYXBoaWNzTGF5ZXIqIG5ld0NoaWxkKQogewogICAgIGlm
IChHcmFwaGljc0xheWVyOjpyZXBsYWNlQ2hpbGQob2xkQ2hpbGQsIG5ld0NoaWxkKSkgewogICAg
ICAgICBub3RlU3VibGF5ZXJzQ2hhbmdlZCgpOwpAQCAtNDQ5LDE0ICs0NDksMTQgQEAgYm9vbCBH
cmFwaGljc0xheWVyQ0E6OnJlcGxhY2VDaGlsZChHcmFwaAogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotdm9pZCBHcmFwaGljc0xheWVyQ0E6OnJlbW92ZUZyb21QYXJlbnQoKQordm9pZCBHcmFwaGlj
c0xheWVyTWFjOjpyZW1vdmVGcm9tUGFyZW50KCkKIHsKICAgICBpZiAobV9wYXJlbnQpCi0gICAg
ICAgIHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXJDQSo+KG1fcGFyZW50KS0+bm90ZVN1YmxheWVy
c0NoYW5nZWQoKTsKKyAgICAgICAgc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllck1hYyo+KG1fcGFy
ZW50KS0+bm90ZVN1YmxheWVyc0NoYW5nZWQoKTsKICAgICBHcmFwaGljc0xheWVyOjpyZW1vdmVG
cm9tUGFyZW50KCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRNYXNrTGF5ZXIoR3Jh
cGhpY3NMYXllciogbGF5ZXIpCit2b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnNldE1hc2tMYXllcihH
cmFwaGljc0xheWVyKiBsYXllcikKIHsKICAgICBpZiAobGF5ZXIgPT0gbV9tYXNrTGF5ZXIpCiAg
ICAgICAgIHJldHVybjsKQEAgLTQ2NywxMCArNDY3LDEwIEBAIHZvaWQgR3JhcGhpY3NMYXllckNB
OjpzZXRNYXNrTGF5ZXIoR3JhcGgKICAgICBwcm9wYWdhdGVMYXllckNoYW5nZVRvUmVwbGljYXMo
KTsKICAgICAKICAgICBpZiAobV9yZXBsaWNhdGVkTGF5ZXIpCi0gICAgICAgIHN0YXRpY19jYXN0
PEdyYXBoaWNzTGF5ZXJDQSo+KG1fcmVwbGljYXRlZExheWVyKS0+cHJvcGFnYXRlTGF5ZXJDaGFu
Z2VUb1JlcGxpY2FzKCk7CisgICAgICAgIHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXJNYWMqPiht
X3JlcGxpY2F0ZWRMYXllciktPnByb3BhZ2F0ZUxheWVyQ2hhbmdlVG9SZXBsaWNhcygpOwogfQog
Ci12b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0UmVwbGljYXRlZExheWVyKEdyYXBoaWNzTGF5ZXIq
IGxheWVyKQordm9pZCBHcmFwaGljc0xheWVyTWFjOjpzZXRSZXBsaWNhdGVkTGF5ZXIoR3JhcGhp
Y3NMYXllciogbGF5ZXIpCiB7CiAgICAgaWYgKGxheWVyID09IG1fcmVwbGljYXRlZExheWVyKQog
ICAgICAgICByZXR1cm47CkBAIC00NzksNyArNDc5LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6
OnNldFJlcGxpY2F0ZWRMYXllcgogICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChSZXBsaWNh
dGVkTGF5ZXJDaGFuZ2VkKTsKIH0KIAotdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldFJlcGxpY2F0
ZWRCeUxheWVyKEdyYXBoaWNzTGF5ZXIqIGxheWVyKQordm9pZCBHcmFwaGljc0xheWVyTWFjOjpz
ZXRSZXBsaWNhdGVkQnlMYXllcihHcmFwaGljc0xheWVyKiBsYXllcikKIHsKICAgICBpZiAobGF5
ZXIgPT0gbV9yZXBsaWNhTGF5ZXIpCiAgICAgICAgIHJldHVybjsKQEAgLTQ4OSw3ICs0ODksNyBA
QCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0UmVwbGljYXRlZEJ5TGF5CiAgICAgbm90ZUxheWVy
UHJvcGVydHlDaGFuZ2VkKFJlcGxpY2F0ZWRMYXllckNoYW5nZWQpOwogfQogCi12b2lkIEdyYXBo
aWNzTGF5ZXJDQTo6c2V0UG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYgcG9pbnQpCit2b2lkIEdy
YXBoaWNzTGF5ZXJNYWM6OnNldFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50KQogewog
ICAgIGlmIChwb2ludCA9PSBtX3Bvc2l0aW9uKQogICAgICAgICByZXR1cm47CkBAIC00OTgsNyAr
NDk4LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldFBvc2l0aW9uKGNvbnN0IAogICAgIG5v
dGVMYXllclByb3BlcnR5Q2hhbmdlZChQb3NpdGlvbkNoYW5nZWQpOwogfQogCi12b2lkIEdyYXBo
aWNzTGF5ZXJDQTo6c2V0QW5jaG9yUG9pbnQoY29uc3QgRmxvYXRQb2ludDNEJiBwb2ludCkKK3Zv
aWQgR3JhcGhpY3NMYXllck1hYzo6c2V0QW5jaG9yUG9pbnQoY29uc3QgRmxvYXRQb2ludDNEJiBw
b2ludCkKIHsKICAgICBpZiAocG9pbnQgPT0gbV9hbmNob3JQb2ludCkKICAgICAgICAgcmV0dXJu
OwpAQCAtNTA3LDcgKzUwNyw3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRBbmNob3JQb2lu
dChjb24KICAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoQW5jaG9yUG9pbnRDaGFuZ2VkKTsK
IH0KIAotdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldFNpemUoY29uc3QgRmxvYXRTaXplJiBzaXpl
KQordm9pZCBHcmFwaGljc0xheWVyTWFjOjpzZXRTaXplKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkK
IHsKICAgICBpZiAoc2l6ZSA9PSBtX3NpemUpCiAgICAgICAgIHJldHVybjsKQEAgLTUxNiw3ICs1
MTYsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0U2l6ZShjb25zdCBGbG9hCiAgICAgbm90
ZUxheWVyUHJvcGVydHlDaGFuZ2VkKFNpemVDaGFuZ2VkKTsKIH0KIAotdm9pZCBHcmFwaGljc0xh
eWVyQ0E6OnNldFRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdCkKK3ZvaWQg
R3JhcGhpY3NMYXllck1hYzo6c2V0VHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
JiB0KQogewogICAgIGlmICh0ID09IG1fdHJhbnNmb3JtKQogICAgICAgICByZXR1cm47CkBAIC01
MjUsNyArNTI1LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldFRyYW5zZm9ybShjb25zdAog
ICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChUcmFuc2Zvcm1DaGFuZ2VkKTsKIH0KIAotdm9p
ZCBHcmFwaGljc0xheWVyQ0E6OnNldENoaWxkcmVuVHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiB0KQordm9pZCBHcmFwaGljc0xheWVyTWFjOjpzZXRDaGlsZHJlblRyYW5zZm9y
bShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdCkKIHsKICAgICBpZiAodCA9PSBtX2NoaWxk
cmVuVHJhbnNmb3JtKQogICAgICAgICByZXR1cm47CkBAIC01MzQsNyArNTM0LDcgQEAgdm9pZCBH
cmFwaGljc0xheWVyQ0E6OnNldENoaWxkcmVuVHJhbnNmbwogICAgIG5vdGVMYXllclByb3BlcnR5
Q2hhbmdlZChDaGlsZHJlblRyYW5zZm9ybUNoYW5nZWQpOwogfQogCi12b2lkIEdyYXBoaWNzTGF5
ZXJDQTo6bW92ZU9yQ29weUxheWVyQW5pbWF0aW9uKE1vdmVPckNvcHkgb3BlcmF0aW9uLCBjb25z
dCBTdHJpbmcmIGFuaW1hdGlvbklkZW50aWZpZXIsIENBTGF5ZXIgKmZyb21MYXllciwgQ0FMYXll
ciAqdG9MYXllcikKK3ZvaWQgR3JhcGhpY3NMYXllck1hYzo6bW92ZU9yQ29weUxheWVyQW5pbWF0
aW9uKE1vdmVPckNvcHkgb3BlcmF0aW9uLCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbklkZW50aWZp
ZXIsIENBTGF5ZXIgKmZyb21MYXllciwgQ0FMYXllciAqdG9MYXllcikKIHsKICAgICBOU1N0cmlu
ZyAqYW5pbWF0aW9uSUQgPSBhbmltYXRpb25JZGVudGlmaWVyOwogICAgIENBQW5pbWF0aW9uICph
bmltID0gW2Zyb21MYXllciBhbmltYXRpb25Gb3JLZXk6YW5pbWF0aW9uSURdOwpAQCAtNTU1LDcg
KzU1NSw3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjptb3ZlT3JDb3B5TGF5ZXJBbmkKICAgICB9
CiB9CiAKLXZvaWQgR3JhcGhpY3NMYXllckNBOjptb3ZlT3JDb3B5QW5pbWF0aW9uc0ZvclByb3Bl
cnR5KE1vdmVPckNvcHkgb3BlcmF0aW9uLCBBbmltYXRlZFByb3BlcnR5SUQgcHJvcGVydHksIENB
TGF5ZXIgKmZyb21MYXllciwgQ0FMYXllciAqdG9MYXllcikKK3ZvaWQgR3JhcGhpY3NMYXllck1h
Yzo6bW92ZU9yQ29weUFuaW1hdGlvbnNGb3JQcm9wZXJ0eShNb3ZlT3JDb3B5IG9wZXJhdGlvbiwg
QW5pbWF0ZWRQcm9wZXJ0eUlEIHByb3BlcnR5LCBDQUxheWVyICpmcm9tTGF5ZXIsIENBTGF5ZXIg
KnRvTGF5ZXIpCiB7CiAgICAgLy8gTG9vayBmb3IgcnVubmluZyBhbmltYXRpb25zIGFmZmVjdGlu
ZyB0aGlzIHByb3BlcnR5LgogICAgIEFuaW1hdGlvbnNNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9
IG1fcnVubmluZ0FuaW1hdGlvbnMuZW5kKCk7CkBAIC01NzAsNyArNTcwLDcgQEAgdm9pZCBHcmFw
aGljc0xheWVyQ0E6Om1vdmVPckNvcHlBbmltYXRpbwogICAgIH0KIH0KIAotdm9pZCBHcmFwaGlj
c0xheWVyQ0E6OnNldFByZXNlcnZlczNEKGJvb2wgcHJlc2VydmVzM0QpCit2b2lkIEdyYXBoaWNz
TGF5ZXJNYWM6OnNldFByZXNlcnZlczNEKGJvb2wgcHJlc2VydmVzM0QpCiB7CiAgICAgaWYgKHBy
ZXNlcnZlczNEID09IG1fcHJlc2VydmVzM0QpCiAgICAgICAgIHJldHVybjsKQEAgLTU3OSw3ICs1
NzksNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0UHJlc2VydmVzM0QoYm9vCiAgICAgbm90
ZUxheWVyUHJvcGVydHlDaGFuZ2VkKFByZXNlcnZlczNEQ2hhbmdlZCk7CiB9CiAKLXZvaWQgR3Jh
cGhpY3NMYXllckNBOjpzZXRNYXNrc1RvQm91bmRzKGJvb2wgbWFza3NUb0JvdW5kcykKK3ZvaWQg
R3JhcGhpY3NMYXllck1hYzo6c2V0TWFza3NUb0JvdW5kcyhib29sIG1hc2tzVG9Cb3VuZHMpCiB7
CiAgICAgaWYgKG1hc2tzVG9Cb3VuZHMgPT0gbV9tYXNrc1RvQm91bmRzKQogICAgICAgICByZXR1
cm47CkBAIC01ODgsNyArNTg4LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldE1hc2tzVG9C
b3VuZHMoYgogICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChNYXNrc1RvQm91bmRzQ2hhbmdl
ZCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXREcmF3c0NvbnRlbnQoYm9vbCBkcmF3
c0NvbnRlbnQpCit2b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnNldERyYXdzQ29udGVudChib29sIGRy
YXdzQ29udGVudCkKIHsKICAgICBpZiAoZHJhd3NDb250ZW50ID09IG1fZHJhd3NDb250ZW50KQog
ICAgICAgICByZXR1cm47CkBAIC01OTcsNyArNTk3LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6
OnNldERyYXdzQ29udGVudChibwogICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChEcmF3c0Nv
bnRlbnRDaGFuZ2VkKTsKIH0KIAotdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldEJhY2tncm91bmRD
b2xvcihjb25zdCBDb2xvciYgY29sb3IpCit2b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnNldEJhY2tn
cm91bmRDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiB7CiAgICAgaWYgKG1fYmFja2dyb3VuZENv
bG9yU2V0ICYmIG1fYmFja2dyb3VuZENvbG9yID09IGNvbG9yKQogICAgICAgICByZXR1cm47CkBA
IC02MDgsNyArNjA4LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldEJhY2tncm91bmRDb2xv
cgogICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChCYWNrZ3JvdW5kQ29sb3JDaGFuZ2VkKTsK
IH0KIAotdm9pZCBHcmFwaGljc0xheWVyQ0E6OmNsZWFyQmFja2dyb3VuZENvbG9yKCkKK3ZvaWQg
R3JhcGhpY3NMYXllck1hYzo6Y2xlYXJCYWNrZ3JvdW5kQ29sb3IoKQogewogICAgIGlmICghbV9i
YWNrZ3JvdW5kQ29sb3JTZXQpCiAgICAgICAgIHJldHVybjsKQEAgLTYxOCw3ICs2MTgsNyBAQCB2
b2lkIEdyYXBoaWNzTGF5ZXJDQTo6Y2xlYXJCYWNrZ3JvdW5kQ29sCiAgICAgbm90ZUxheWVyUHJv
cGVydHlDaGFuZ2VkKEJhY2tncm91bmRDb2xvckNoYW5nZWQpOwogfQogCi12b2lkIEdyYXBoaWNz
TGF5ZXJDQTo6c2V0Q29udGVudHNPcGFxdWUoYm9vbCBvcGFxdWUpCit2b2lkIEdyYXBoaWNzTGF5
ZXJNYWM6OnNldENvbnRlbnRzT3BhcXVlKGJvb2wgb3BhcXVlKQogewogICAgIGlmIChtX2NvbnRl
bnRzT3BhcXVlID09IG9wYXF1ZSkKICAgICAgICAgcmV0dXJuOwpAQCAtNjI3LDcgKzYyNyw3IEBA
IHZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRDb250ZW50c09wYXF1ZSgKICAgICBub3RlTGF5ZXJQ
cm9wZXJ0eUNoYW5nZWQoQ29udGVudHNPcGFxdWVDaGFuZ2VkKTsKIH0KIAotdm9pZCBHcmFwaGlj
c0xheWVyQ0E6OnNldEJhY2tmYWNlVmlzaWJpbGl0eShib29sIHZpc2libGUpCit2b2lkIEdyYXBo
aWNzTGF5ZXJNYWM6OnNldEJhY2tmYWNlVmlzaWJpbGl0eShib29sIHZpc2libGUpCiB7CiAgICAg
aWYgKG1fYmFja2ZhY2VWaXNpYmlsaXR5ID09IHZpc2libGUpCiAgICAgICAgIHJldHVybjsKQEAg
LTYzNiw3ICs2MzYsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0QmFja2ZhY2VWaXNpYmls
CiAgICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKEJhY2tmYWNlVmlzaWJpbGl0eUNoYW5nZWQp
OwogfQogCi12b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0T3BhY2l0eShmbG9hdCBvcGFjaXR5KQor
dm9pZCBHcmFwaGljc0xheWVyTWFjOjpzZXRPcGFjaXR5KGZsb2F0IG9wYWNpdHkpCiB7CiAgICAg
ZmxvYXQgY2xhbXBlZE9wYWNpdHkgPSBtYXgoMC4wZiwgbWluKG9wYWNpdHksIDEuMGYpKTsKIApA
QCAtNjQ3LDcgKzY0Nyw3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRPcGFjaXR5KGZsb2F0
IG8KICAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoT3BhY2l0eUNoYW5nZWQpOwogfQogCi12
b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0TmVlZHNEaXNwbGF5KCkKK3ZvaWQgR3JhcGhpY3NMYXll
ck1hYzo6c2V0TmVlZHNEaXNwbGF5KCkKIHsKICAgICBGbG9hdFJlY3QgaHVnZVJlY3QoLW51bWVy
aWNfbGltaXRzPGZsb2F0Pjo6bWF4KCkgLyAyLCAtbnVtZXJpY19saW1pdHM8ZmxvYXQ+OjptYXgo
KSAvIDIsCiAgICAgICAgICAgICAgICAgICAgICAgIG51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4
KCksIG51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4KCkpOwpAQCAtNjU1LDcgKzY1NSw3IEBAIHZv
aWQgR3JhcGhpY3NMYXllckNBOjpzZXROZWVkc0Rpc3BsYXkoKQogICAgIHNldE5lZWRzRGlzcGxh
eUluUmVjdChodWdlUmVjdCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXROZWVkc0Rp
c3BsYXlJblJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQordm9pZCBHcmFwaGljc0xheWVyTWFj
OjpzZXROZWVkc0Rpc3BsYXlJblJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewogICAgIGlm
ICghZHJhd3NDb250ZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTY3NSwxMiArNjc1LDEyIEBA
IHZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXROZWVkc0Rpc3BsYXlJblIKICAgICBub3RlTGF5ZXJQ
cm9wZXJ0eUNoYW5nZWQoRGlydHlSZWN0c0NoYW5nZWQpOwogfQogCi12b2lkIEdyYXBoaWNzTGF5
ZXJDQTo6c2V0Q29udGVudHNOZWVkc0Rpc3BsYXkoKQordm9pZCBHcmFwaGljc0xheWVyTWFjOjpz
ZXRDb250ZW50c05lZWRzRGlzcGxheSgpCiB7CiAgICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2Vk
KENvbnRlbnRzTmVlZHNEaXNwbGF5KTsKIH0KIAotdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldENv
bnRlbnRzUmVjdChjb25zdCBJbnRSZWN0JiByZWN0KQordm9pZCBHcmFwaGljc0xheWVyTWFjOjpz
ZXRDb250ZW50c1JlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICBpZiAocmVjdCA9PSBt
X2NvbnRlbnRzUmVjdCkKICAgICAgICAgcmV0dXJuOwpAQCAtNjg5LDcgKzY4OSw3IEBAIHZvaWQg
R3JhcGhpY3NMYXllckNBOjpzZXRDb250ZW50c1JlY3QoY28KICAgICBub3RlTGF5ZXJQcm9wZXJ0
eUNoYW5nZWQoQ29udGVudHNSZWN0Q2hhbmdlZCk7CiB9CiAKLWJvb2wgR3JhcGhpY3NMYXllckNB
OjphZGRBbmltYXRpb24oY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCwgY29uc3Qg
SW50U2l6ZSYgYm94U2l6ZSwgY29uc3QgQW5pbWF0aW9uKiBhbmltLCBjb25zdCBTdHJpbmcmIGFu
aW1hdGlvbk5hbWUsIGRvdWJsZSB0aW1lT2Zmc2V0KQorYm9vbCBHcmFwaGljc0xheWVyTWFjOjph
ZGRBbmltYXRpb24oY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCwgY29uc3QgSW50
U2l6ZSYgYm94U2l6ZSwgY29uc3QgQW5pbWF0aW9uKiBhbmltLCBjb25zdCBTdHJpbmcmIGFuaW1h
dGlvbk5hbWUsIGRvdWJsZSB0aW1lT2Zmc2V0KQogewogICAgIEFTU0VSVCghYW5pbWF0aW9uTmFt
ZS5pc0VtcHR5KCkpOwogCkBAIC03MjAsNyArNzIwLDcgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6
OmFkZEFuaW1hdGlvbihjb25zdAogICAgIHJldHVybiBjcmVhdGVkQW5pbWF0aW9uczsKIH0KIAot
dm9pZCBHcmFwaGljc0xheWVyQ0E6OnBhdXNlQW5pbWF0aW9uKGNvbnN0IFN0cmluZyYgYW5pbWF0
aW9uTmFtZSwgZG91YmxlIHRpbWVPZmZzZXQpCit2b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnBhdXNl
QW5pbWF0aW9uKGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSwgZG91YmxlIHRpbWVPZmZzZXQp
CiB7CiAgICAgaWYgKCFhbmltYXRpb25Jc1J1bm5pbmcoYW5pbWF0aW9uTmFtZSkpCiAgICAgICAg
IHJldHVybjsKQEAgLTczNyw3ICs3MzcsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6cGF1c2VB
bmltYXRpb24oY29uCiAgICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKEFuaW1hdGlvbkNoYW5n
ZWQpOwogfQogCi12b2lkIEdyYXBoaWNzTGF5ZXJDQTo6cmVtb3ZlQW5pbWF0aW9uKGNvbnN0IFN0
cmluZyYgYW5pbWF0aW9uTmFtZSkKK3ZvaWQgR3JhcGhpY3NMYXllck1hYzo6cmVtb3ZlQW5pbWF0
aW9uKGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSkKIHsKICAgICBpZiAoIWFuaW1hdGlvbklz
UnVubmluZyhhbmltYXRpb25OYW1lKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNzQ2LDcgKzc0Niw3
IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpyZW1vdmVBbmltYXRpb24oY28KICAgICBub3RlTGF5
ZXJQcm9wZXJ0eUNoYW5nZWQoQW5pbWF0aW9uQ2hhbmdlZCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NM
YXllckNBOjphbmltYXRpb25EaWRTdGFydChDQUFuaW1hdGlvbiogY2FBbmltYXRpb24pCit2b2lk
IEdyYXBoaWNzTGF5ZXJNYWM6OmFuaW1hdGlvbkRpZFN0YXJ0KENBQW5pbWF0aW9uKiBjYUFuaW1h
dGlvbikKIHsKICAgICBib29sIGhhZE5vblplcm9CZWdpblRpbWUgPSBbW2NhQW5pbWF0aW9uIHZh
bHVlRm9yS2V5OldlYktpdEFuaW1hdGlvbkJlZ2luVGltZVNldEtleV0gYm9vbFZhbHVlXTsKIApA
QCAtNzYyLDcgKzc2Miw3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjphbmltYXRpb25EaWRTdGFy
dCgKICAgICAgICAgbV9jbGllbnQtPm5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQodGhpcywgc3RhcnRU
aW1lKTsKIH0KIAotdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRzVG9JbWFnZShJbWFn
ZSogaW1hZ2UpCit2b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnNldENvbnRlbnRzVG9JbWFnZShJbWFn
ZSogaW1hZ2UpCiB7CiAgICAgaWYgKGltYWdlKSB7CiAgICAgICAgIENHSW1hZ2VSZWYgbmV3SW1h
Z2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKQEAgLTc5OSw3ICs3OTks
NyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0Q29udGVudHNUb0ltYWdlCiAgICAgbm90ZUxh
eWVyUHJvcGVydHlDaGFuZ2VkKENvbnRlbnRzSW1hZ2VDaGFuZ2VkKTsKIH0KIAotdm9pZCBHcmFw
aGljc0xheWVyQ0E6OnNldENvbnRlbnRzVG9NZWRpYShQbGF0Zm9ybUxheWVyKiBtZWRpYUxheWVy
KQordm9pZCBHcmFwaGljc0xheWVyTWFjOjpzZXRDb250ZW50c1RvTWVkaWEoUGxhdGZvcm1MYXll
ciogbWVkaWFMYXllcikKIHsKICAgICBpZiAobWVkaWFMYXllciA9PSBtX2NvbnRlbnRzTGF5ZXIp
CiAgICAgICAgIHJldHVybjsKQEAgLTgxMSw3ICs4MTEsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJD
QTo6c2V0Q29udGVudHNUb01lZGlhCiAgICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKENvbnRl
bnRzTWVkaWFMYXllckNoYW5nZWQpOwogfQogCi12b2lkIEdyYXBoaWNzTGF5ZXJDQTo6ZGlkRGlz
cGxheShQbGF0Zm9ybUxheWVyKiBsYXllcikKK3ZvaWQgR3JhcGhpY3NMYXllck1hYzo6ZGlkRGlz
cGxheShQbGF0Zm9ybUxheWVyKiBsYXllcikKIHsKICAgICBDQUxheWVyKiBzb3VyY2VMYXllcjsK
ICAgICBMYXllck1hcCogbGF5ZXJDbG9uZU1hcDsKQEAgLTg0MCw0MSArODQwLDQxIEBAIHZvaWQg
R3JhcGhpY3NMYXllckNBOjpkaWREaXNwbGF5KFBsYXRmb3IKICAgICB9CiB9CiAKLXZvaWQgR3Jh
cGhpY3NMYXllckNBOjpzeW5jQ29tcG9zaXRpbmdTdGF0ZSgpCit2b2lkIEdyYXBoaWNzTGF5ZXJN
YWM6OnN5bmNDb21wb3NpdGluZ1N0YXRlKCkKIHsKICAgICByZWN1cnNpdmVDb21taXRDaGFuZ2Vz
KCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NMYXllckNBOjpzeW5jQ29tcG9zaXRpbmdTdGF0ZUZvclRo
aXNMYXllck9ubHkoKQordm9pZCBHcmFwaGljc0xheWVyTWFjOjpzeW5jQ29tcG9zaXRpbmdTdGF0
ZUZvclRoaXNMYXllck9ubHkoKQogewogICAgIGNvbW1pdExheWVyQ2hhbmdlc0JlZm9yZVN1Ymxh
eWVycygpOwogICAgIGNvbW1pdExheWVyQ2hhbmdlc0FmdGVyU3VibGF5ZXJzKCk7CiB9CiAKLXZv
aWQgR3JhcGhpY3NMYXllckNBOjpyZWN1cnNpdmVDb21taXRDaGFuZ2VzKCkKK3ZvaWQgR3JhcGhp
Y3NMYXllck1hYzo6cmVjdXJzaXZlQ29tbWl0Q2hhbmdlcygpCiB7CiAgICAgY29tbWl0TGF5ZXJD
aGFuZ2VzQmVmb3JlU3VibGF5ZXJzKCk7CiAKICAgICBpZiAobV9tYXNrTGF5ZXIpCi0gICAgICAg
IHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXJDQSo+KG1fbWFza0xheWVyKS0+Y29tbWl0TGF5ZXJD
aGFuZ2VzQmVmb3JlU3VibGF5ZXJzKCk7CisgICAgICAgIHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5
ZXJNYWMqPihtX21hc2tMYXllciktPmNvbW1pdExheWVyQ2hhbmdlc0JlZm9yZVN1YmxheWVycygp
OwogCiAgICAgY29uc3QgVmVjdG9yPEdyYXBoaWNzTGF5ZXIqPiYgY2hpbGRMYXllcnMgPSBjaGls
ZHJlbigpOwogICAgIHNpemVfdCBudW1DaGlsZHJlbiA9IGNoaWxkTGF5ZXJzLnNpemUoKTsKICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bUNoaWxkcmVuOyArK2kpIHsKLSAgICAgICAgR3Jh
cGhpY3NMYXllckNBKiBjdXJDaGlsZCA9IHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXJDQSo+KGNo
aWxkTGF5ZXJzW2ldKTsKKyAgICAgICAgR3JhcGhpY3NMYXllck1hYyogY3VyQ2hpbGQgPSBzdGF0
aWNfY2FzdDxHcmFwaGljc0xheWVyTWFjKj4oY2hpbGRMYXllcnNbaV0pOwogICAgICAgICBjdXJD
aGlsZC0+cmVjdXJzaXZlQ29tbWl0Q2hhbmdlcygpOwogICAgIH0KIAogICAgIGlmIChtX3JlcGxp
Y2FMYXllcikKLSAgICAgICAgc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllckNBKj4obV9yZXBsaWNh
TGF5ZXIpLT5yZWN1cnNpdmVDb21taXRDaGFuZ2VzKCk7CisgICAgICAgIHN0YXRpY19jYXN0PEdy
YXBoaWNzTGF5ZXJNYWMqPihtX3JlcGxpY2FMYXllciktPnJlY3Vyc2l2ZUNvbW1pdENoYW5nZXMo
KTsKIAogICAgIGlmIChtX21hc2tMYXllcikKLSAgICAgICAgc3RhdGljX2Nhc3Q8R3JhcGhpY3NM
YXllckNBKj4obV9tYXNrTGF5ZXIpLT5jb21taXRMYXllckNoYW5nZXNBZnRlclN1YmxheWVycygp
OworICAgICAgICBzdGF0aWNfY2FzdDxHcmFwaGljc0xheWVyTWFjKj4obV9tYXNrTGF5ZXIpLT5j
b21taXRMYXllckNoYW5nZXNBZnRlclN1YmxheWVycygpOwogCiAgICAgY29tbWl0TGF5ZXJDaGFu
Z2VzQWZ0ZXJTdWJsYXllcnMoKTsKIH0KIAotdm9pZCBHcmFwaGljc0xheWVyQ0E6OmNvbW1pdExh
eWVyQ2hhbmdlc0JlZm9yZVN1YmxheWVycygpCit2b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OmNvbW1p
dExheWVyQ2hhbmdlc0JlZm9yZVN1YmxheWVycygpCiB7CiAgICAgaWYgKCFtX3VuY29tbWl0dGVk
Q2hhbmdlcykKICAgICAgICAgcmV0dXJuOwpAQCAtOTUxLDcgKzk1MSw3IEBAIHZvaWQgR3JhcGhp
Y3NMYXllckNBOjpjb21taXRMYXllckNoYW5nZXMKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJ
T05TCiB9CiAKLXZvaWQgR3JhcGhpY3NMYXllckNBOjpjb21taXRMYXllckNoYW5nZXNBZnRlclN1
YmxheWVycygpCit2b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OmNvbW1pdExheWVyQ2hhbmdlc0FmdGVy
U3VibGF5ZXJzKCkKIHsKICAgICBpZiAoIW1fdW5jb21taXR0ZWRDaGFuZ2VzKQogICAgICAgICBy
ZXR1cm47CkBAIC05NjUsNyArOTY1LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OmNvbW1pdExh
eWVyQ2hhbmdlcwogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKIH0KIAotdm9pZCBHcmFw
aGljc0xheWVyQ0E6OnVwZGF0ZUxheWVyTmFtZXMoKQordm9pZCBHcmFwaGljc0xheWVyTWFjOjp1
cGRhdGVMYXllck5hbWVzKCkKIHsKICAgICBzd2l0Y2ggKHN0cnVjdHVyYWxMYXllclB1cnBvc2Uo
KSkgewogICAgICAgICBjYXNlIFN0cnVjdHVyYWxMYXllckZvclByZXNlcnZlczNEOgpAQCAtOTgw
LDcgKzk4MCw3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjp1cGRhdGVMYXllck5hbWVzKCkKICAg
ICBbbV9sYXllci5nZXQoKSBzZXROYW1lOm5hbWUoKV07CiB9CiAKLXZvaWQgR3JhcGhpY3NMYXll
ckNBOjp1cGRhdGVTdWJsYXllckxpc3QoKQordm9pZCBHcmFwaGljc0xheWVyTWFjOjp1cGRhdGVT
dWJsYXllckxpc3QoKQogewogICAgIE5TTXV0YWJsZUFycmF5KiBuZXdTdWJsYXllcnMgPSBuaWw7
CiAKQEAgLTk5Miw3ICs5OTIsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlU3VibGF5
ZXJMaXN0CiAgICAgICAgIGlmIChtX3N0cnVjdHVyYWxMYXllcikgewogICAgICAgICAgICAgLy8g
QWRkIHRoZSByZXBsaWNhIGxheWVyIGZpcnN0LgogICAgICAgICAgICAgaWYgKG1fcmVwbGljYUxh
eWVyKQotICAgICAgICAgICAgICAgIFtuZXdTdWJsYXllcnMgYWRkT2JqZWN0OnN0YXRpY19jYXN0
PEdyYXBoaWNzTGF5ZXJDQSo+KG1fcmVwbGljYUxheWVyKS0+cHJpbWFyeUxheWVyKCldOworICAg
ICAgICAgICAgICAgIFtuZXdTdWJsYXllcnMgYWRkT2JqZWN0OnN0YXRpY19jYXN0PEdyYXBoaWNz
TGF5ZXJNYWMqPihtX3JlcGxpY2FMYXllciktPnByaW1hcnlMYXllcigpXTsKICAgICAgICAgICAg
IC8vIEFkZCB0aGUgcHJpbWFyeSBsYXllci4gRXZlbiBpZiB3ZSBoYXZlIG5lZ2F0aXZlIHotb3Jk
ZXIgY2hpbGRyZW4sIHRoZSBwcmltYXJ5IGxheWVyIGFsd2F5cyBjb21lcyBiZWhpbmQuCiAgICAg
ICAgICAgICBbbmV3U3VibGF5ZXJzIGFkZE9iamVjdDptX2xheWVyLmdldCgpXTsKICAgICAgICAg
fSBlbHNlIGlmIChtX2NvbnRlbnRzTGF5ZXIpIHsKQEAgLTEwMDQsNyArMTAwNCw3IEBAIHZvaWQg
R3JhcGhpY3NMYXllckNBOjp1cGRhdGVTdWJsYXllckxpc3QKICAgICAgICAgCiAgICAgICAgIHNp
emVfdCBudW1DaGlsZHJlbiA9IGNoaWxkTGF5ZXJzLnNpemUoKTsKICAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBudW1DaGlsZHJlbjsgKytpKSB7Ci0gICAgICAgICAgICBHcmFwaGljc0xh
eWVyQ0EqIGN1ckNoaWxkID0gc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllckNBKj4oY2hpbGRMYXll
cnNbaV0pOworICAgICAgICAgICAgR3JhcGhpY3NMYXllck1hYyogY3VyQ2hpbGQgPSBzdGF0aWNf
Y2FzdDxHcmFwaGljc0xheWVyTWFjKj4oY2hpbGRMYXllcnNbaV0pOwogICAgICAgICAgICAgQ0FM
YXllciAqY2hpbGRMYXllciA9IGN1ckNoaWxkLT5sYXllckZvclN1cGVybGF5ZXIoKTsKICAgICAg
ICAgICAgIFtuZXdTdWJsYXllcnMgYWRkT2JqZWN0OmNoaWxkTGF5ZXJdOwogICAgICAgICB9CkBA
IC0xMDI3LDcgKzEwMjcsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlU3VibGF5ZXJM
aXN0CiAgICAgW25ld1N1YmxheWVycyByZWxlYXNlXTsKIH0KIAotdm9pZCBHcmFwaGljc0xheWVy
Q0E6OnVwZGF0ZUxheWVyUG9zaXRpb24oKQordm9pZCBHcmFwaGljc0xheWVyTWFjOjp1cGRhdGVM
YXllclBvc2l0aW9uKCkKIHsKICAgICBGbG9hdFNpemUgdXNlZFNpemUgPSBtX3VzaW5nVGlsZWRM
YXllciA/IGNvbnN0cmFpbmVkU2l6ZSgpIDogbV9zaXplOwogCkBAIC0xMDUyLDcgKzEwNTIsNyBA
QCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlTGF5ZXJQb3NpdGlvCiAgICAgfQogfQogCi12
b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlTGF5ZXJTaXplKCkKK3ZvaWQgR3JhcGhpY3NMYXll
ck1hYzo6dXBkYXRlTGF5ZXJTaXplKCkKIHsKICAgICBDR1JlY3QgcmVjdCA9IENHUmVjdE1ha2Uo
MCwgMCwgbV9zaXplLndpZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSk7CiAgICAgaWYgKG1fc3RydWN0
dXJhbExheWVyKSB7CkBAIC0xMTAxLDcgKzExMDEsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6
dXBkYXRlTGF5ZXJTaXplKCkKICAgICB1cGRhdGVMYXllclBvc2l0aW9uKCk7CiB9CiAKLXZvaWQg
R3JhcGhpY3NMYXllckNBOjp1cGRhdGVBbmNob3JQb2ludCgpCit2b2lkIEdyYXBoaWNzTGF5ZXJN
YWM6OnVwZGF0ZUFuY2hvclBvaW50KCkKIHsKICAgICBbcHJpbWFyeUxheWVyKCkgc2V0QW5jaG9y
UG9pbnQ6RmxvYXRQb2ludChtX2FuY2hvclBvaW50LngoKSwgbV9hbmNob3JQb2ludC55KCkpXTsK
ICNpZiBIQVZFX01PREVSTl9RVUFSVFpDT1JFCkBAIC0xMTIyLDcgKzExMjIsNyBAQCB2b2lkIEdy
YXBoaWNzTGF5ZXJDQTo6dXBkYXRlQW5jaG9yUG9pbnQoCiAgICAgdXBkYXRlTGF5ZXJQb3NpdGlv
bigpOwogfQogCi12b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlVHJhbnNmb3JtKCkKK3ZvaWQg
R3JhcGhpY3NMYXllck1hYzo6dXBkYXRlVHJhbnNmb3JtKCkKIHsKICAgICBDQVRyYW5zZm9ybTNE
IHRyYW5zZm9ybTsKICAgICBjb3B5VHJhbnNmb3JtKHRyYW5zZm9ybSwgbV90cmFuc2Zvcm0pOwpA
QCAtMTE0Miw3ICsxMTQyLDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZVRyYW5zZm9y
bSgpCiAgICAgfQogfQogCi12b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlQ2hpbGRyZW5UcmFu
c2Zvcm0oKQordm9pZCBHcmFwaGljc0xheWVyTWFjOjp1cGRhdGVDaGlsZHJlblRyYW5zZm9ybSgp
CiB7CiAgICAgQ0FUcmFuc2Zvcm0zRCB0cmFuc2Zvcm07CiAgICAgY29weVRyYW5zZm9ybSh0cmFu
c2Zvcm0sIG1fY2hpbGRyZW5UcmFuc2Zvcm0pOwpAQCAtMTE1Nyw3ICsxMTU3LDcgQEAgdm9pZCBH
cmFwaGljc0xheWVyQ0E6OnVwZGF0ZUNoaWxkcmVuVHJhbgogICAgIH0KIH0KIAotdm9pZCBHcmFw
aGljc0xheWVyQ0E6OnVwZGF0ZU1hc2tzVG9Cb3VuZHMoKQordm9pZCBHcmFwaGljc0xheWVyTWFj
Ojp1cGRhdGVNYXNrc1RvQm91bmRzKCkKIHsKICAgICBbbV9sYXllci5nZXQoKSBzZXRNYXNrc1Rv
Qm91bmRzOm1fbWFza3NUb0JvdW5kc107CiAKQEAgLTExNzIsNyArMTE3Miw3IEBAIHZvaWQgR3Jh
cGhpY3NMYXllckNBOjp1cGRhdGVNYXNrc1RvQm91bmQKICAgICB1cGRhdGVEZWJ1Z0luZGljYXRv
cnMoKTsKIH0KIAotdm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUNvbnRlbnRzT3BhcXVlKCkK
K3ZvaWQgR3JhcGhpY3NMYXllck1hYzo6dXBkYXRlQ29udGVudHNPcGFxdWUoKQogewogICAgIFtt
X2xheWVyLmdldCgpIHNldE9wYXF1ZTptX2NvbnRlbnRzT3BhcXVlXTsKIApAQCAtMTE4NSw3ICsx
MTg1LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUNvbnRlbnRzT3BhcQogICAgIH0K
IH0KIAotdm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUJhY2tmYWNlVmlzaWJpbGl0eSgpCit2
b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnVwZGF0ZUJhY2tmYWNlVmlzaWJpbGl0eSgpCiB7CiAgICAg
aWYgKG1fc3RydWN0dXJhbExheWVyICYmIHN0cnVjdHVyYWxMYXllclB1cnBvc2UoKSA9PSBTdHJ1
Y3R1cmFsTGF5ZXJGb3JSZXBsaWNhRmxhdHRlbmluZykgewogICAgICAgICBbbV9zdHJ1Y3R1cmFs
TGF5ZXIuZ2V0KCkgc2V0RG91YmxlU2lkZWQ6bV9iYWNrZmFjZVZpc2liaWxpdHldOwpAQCAtMTIx
MCwxMiArMTIxMCwxMiBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlQmFja2ZhY2VWaXNp
CiAgICAgfQogfQogCi12b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlU3RydWN0dXJhbExheWVy
KCkKK3ZvaWQgR3JhcGhpY3NMYXllck1hYzo6dXBkYXRlU3RydWN0dXJhbExheWVyKCkKIHsKICAg
ICBlbnN1cmVTdHJ1Y3R1cmFsTGF5ZXIoc3RydWN0dXJhbExheWVyUHVycG9zZSgpKTsKIH0KIAot
dm9pZCBHcmFwaGljc0xheWVyQ0E6OmVuc3VyZVN0cnVjdHVyYWxMYXllcihTdHJ1Y3R1cmFsTGF5
ZXJQdXJwb3NlIHB1cnBvc2UpCit2b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OmVuc3VyZVN0cnVjdHVy
YWxMYXllcihTdHJ1Y3R1cmFsTGF5ZXJQdXJwb3NlIHB1cnBvc2UpCiB7CiAgICAgaWYgKHB1cnBv
c2UgPT0gTm9TdHJ1Y3R1cmFsTGF5ZXIpIHsKICAgICAgICAgaWYgKG1fc3RydWN0dXJhbExheWVy
KSB7CkBAIC0xMzAwLDcgKzEzMDAsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6ZW5zdXJlU3Ry
dWN0dXJhbExhCiAgICAgdXBkYXRlT3BhY2l0eU9uTGF5ZXIoKTsKIH0KIAotR3JhcGhpY3NMYXll
ckNBOjpTdHJ1Y3R1cmFsTGF5ZXJQdXJwb3NlIEdyYXBoaWNzTGF5ZXJDQTo6c3RydWN0dXJhbExh
eWVyUHVycG9zZSgpIGNvbnN0CitHcmFwaGljc0xheWVyTWFjOjpTdHJ1Y3R1cmFsTGF5ZXJQdXJw
b3NlIEdyYXBoaWNzTGF5ZXJNYWM6OnN0cnVjdHVyYWxMYXllclB1cnBvc2UoKSBjb25zdAogewog
ICAgIGlmIChwcmVzZXJ2ZXMzRCgpKQogICAgICAgICByZXR1cm4gU3RydWN0dXJhbExheWVyRm9y
UHJlc2VydmVzM0Q7CkBAIC0xMzExLDcgKzEzMTEsNyBAQCBHcmFwaGljc0xheWVyQ0E6OlN0cnVj
dHVyYWxMYXllclB1cnBvc2UgCiAgICAgcmV0dXJuIE5vU3RydWN0dXJhbExheWVyOwogfQogCi12
b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlTGF5ZXJEcmF3c0NvbnRlbnQoKQordm9pZCBHcmFw
aGljc0xheWVyTWFjOjp1cGRhdGVMYXllckRyYXdzQ29udGVudCgpCiB7CiAgICAgYm9vbCBuZWVk
VGlsZWRMYXllciA9IHJlcXVpcmVzVGlsZWRMYXllcihtX3NpemUpOwogICAgIGlmIChuZWVkVGls
ZWRMYXllciAhPSBtX3VzaW5nVGlsZWRMYXllcikKQEAgLTEzMjUsNyArMTMyNSw3IEBAIHZvaWQg
R3JhcGhpY3NMYXllckNBOjp1cGRhdGVMYXllckRyYXdzQ28KICAgICB1cGRhdGVEZWJ1Z0luZGlj
YXRvcnMoKTsKIH0KIAotdm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUxheWVyQmFja2dyb3Vu
ZENvbG9yKCkKK3ZvaWQgR3JhcGhpY3NMYXllck1hYzo6dXBkYXRlTGF5ZXJCYWNrZ3JvdW5kQ29s
b3IoKQogewogICAgIGlmICghbV9jb250ZW50c0xheWVyKQogICAgICAgICByZXR1cm47CkBAIC0x
MzM3LDcgKzEzMzcsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlTGF5ZXJCYWNrZ3Jv
CiAgICAgICAgIGNsZWFyTGF5ZXJCYWNrZ3JvdW5kQ29sb3IobV9jb250ZW50c0xheWVyLmdldCgp
KTsKIH0KIAotdm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUNvbnRlbnRzSW1hZ2UoKQordm9p
ZCBHcmFwaGljc0xheWVyTWFjOjp1cGRhdGVDb250ZW50c0ltYWdlKCkKIHsKICAgICBpZiAobV9w
ZW5kaW5nQ29udGVudHNJbWFnZSkgewogICAgICAgICBpZiAoIW1fY29udGVudHNMYXllci5nZXQo
KSkgewpAQCAtMTM3Miw3ICsxMzcyLDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUNv
bnRlbnRzSW1hZwogICAgIH0KIH0KIAotdm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUNvbnRl
bnRzTWVkaWFMYXllcigpCit2b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnVwZGF0ZUNvbnRlbnRzTWVk
aWFMYXllcigpCiB7CiAgICAgLy8gVmlkZW8gbGF5ZXIgd2FzIHNldCBhcyBtX2NvbnRlbnRzTGF5
ZXIsIGFuZCB3aWxsIGdldCBwYXJlbnRlZCBpbiB1cGRhdGVTdWJsYXllckxpc3QoKS4KICAgICBp
ZiAobV9jb250ZW50c0xheWVyKSB7CkBAIC0xMzgxLDcgKzEzODEsNyBAQCB2b2lkIEdyYXBoaWNz
TGF5ZXJDQTo6dXBkYXRlQ29udGVudHNNZWRpCiAgICAgfQogfQogCi12b2lkIEdyYXBoaWNzTGF5
ZXJDQTo6dXBkYXRlQ29udGVudHNDYW52YXNMYXllcigpCit2b2lkIEdyYXBoaWNzTGF5ZXJNYWM6
OnVwZGF0ZUNvbnRlbnRzQ2FudmFzTGF5ZXIoKQogewogICAgIC8vIENhbnZhc0xheWVyIHdhcyBz
ZXQgYXMgbV9jb250ZW50c0xheWVyLCBhbmQgd2lsbCBnZXQgcGFyZW50ZWQgaW4gdXBkYXRlU3Vi
bGF5ZXJMaXN0KCkuCiAgICAgaWYgKG1fY29udGVudHNMYXllcikgewpAQCAtMTM5MSw3ICsxMzkx
LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUNvbnRlbnRzQ2FudgogICAgIH0KIH0K
IAotdm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUNvbnRlbnRzUmVjdCgpCit2b2lkIEdyYXBo
aWNzTGF5ZXJNYWM6OnVwZGF0ZUNvbnRlbnRzUmVjdCgpCiB7CiAgICAgaWYgKCFtX2NvbnRlbnRz
TGF5ZXIpCiAgICAgICAgIHJldHVybjsKQEAgLTE0MTYsMTIgKzE0MTYsMTIgQEAgdm9pZCBHcmFw
aGljc0xheWVyQ0E6OnVwZGF0ZUNvbnRlbnRzUmVjdAogICAgIH0KIH0KIAotdm9pZCBHcmFwaGlj
c0xheWVyQ0E6OnVwZGF0ZU1hc2tMYXllcigpCit2b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnVwZGF0
ZU1hc2tMYXllcigpCiB7CiAgICAgQ0FMYXllciAqbWFza0NBTGF5ZXIgPSBtX21hc2tMYXllciA/
IG1fbWFza0xheWVyLT5wbGF0Zm9ybUxheWVyKCkgOiAwOwogICAgIFttX2xheWVyLmdldCgpIHNl
dE1hc2s6bWFza0NBTGF5ZXJdOwogCi0gICAgTGF5ZXJNYXAqIG1hc2tMYXllckNsb25lTWFwID0g
bV9tYXNrTGF5ZXIgPyBzdGF0aWNfY2FzdDxHcmFwaGljc0xheWVyQ0EqPihtX21hc2tMYXllcikt
PnByaW1hcnlMYXllckNsb25lcygpIDogMDsKKyAgICBMYXllck1hcCogbWFza0xheWVyQ2xvbmVN
YXAgPSBtX21hc2tMYXllciA/IHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXJNYWMqPihtX21hc2tM
YXllciktPnByaW1hcnlMYXllckNsb25lcygpIDogMDsKICAgICAKICAgICBpZiAoTGF5ZXJNYXAq
IGxheWVyQ2xvbmVNYXAgPSBtX2xheWVyQ2xvbmVzLmdldCgpKSB7CiAgICAgICAgIExheWVyTWFw
Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBsYXllckNsb25lTWFwLT5lbmQoKTsKQEAgLTE0MzQsNyAr
MTQzNCw3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjp1cGRhdGVNYXNrTGF5ZXIoKQogICAgIH0K
IH0KIAotdm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZVJlcGxpY2F0ZWRMYXllcnMoKQordm9p
ZCBHcmFwaGljc0xheWVyTWFjOjp1cGRhdGVSZXBsaWNhdGVkTGF5ZXJzKCkKIHsKICAgICAvLyBD
bG9uZSB0aGUgZGVzY2VuZGFudHMgb2YgdGhlIHJlcGxpY2F0ZWQgbGF5ZXIsIGFuZCBwYXJlbnQg
dW5kZXIgdXMuCiAgICAgUmVwbGljYVN0YXRlIHJlcGxpY2FTdGF0ZShSZXBsaWNhU3RhdGU6OlJl
cGxpY2FCcmFuY2gpOwpAQCAtMTQ1MCw3ICsxNDUwLDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6
OnVwZGF0ZVJlcGxpY2F0ZWRMYQogfQogCiAvLyBGb3Igbm93LCB0aGlzIGFzc3VtZXMgdGhhdCBs
YXllcnMgb25seSBldmVyIGhhdmUgb25lIHJlcGxpY2EsIHNvIHJlcGxpY2FJbmRpY2VzIGNvbnRh
aW5zIG9ubHkgMCBhbmQgMS4KLUdyYXBoaWNzTGF5ZXJDQTo6Q2xvbmVJRCBHcmFwaGljc0xheWVy
Q0E6OlJlcGxpY2FTdGF0ZTo6Y2xvbmVJRCgpIGNvbnN0CitHcmFwaGljc0xheWVyTWFjOjpDbG9u
ZUlEIEdyYXBoaWNzTGF5ZXJNYWM6OlJlcGxpY2FTdGF0ZTo6Y2xvbmVJRCgpIGNvbnN0CiB7CiAg
ICAgc2l6ZV90IGRlcHRoID0gbV9yZXBsaWNhQnJhbmNoZXMuc2l6ZSgpOwogCkBAIC0xNDcwLDEz
ICsxNDcwLDEzIEBAIEdyYXBoaWNzTGF5ZXJDQTo6Q2xvbmVJRCBHcmFwaGljc0xheWVyQ0EKICAg
ICByZXR1cm4gU3RyaW5nOjphZG9wdChyZXN1bHQpOwogfQogCi1DQUxheWVyICpHcmFwaGljc0xh
eWVyQ0E6OnJlcGxpY2F0ZWRMYXllclJvb3QoUmVwbGljYVN0YXRlJiByZXBsaWNhU3RhdGUpCitD
QUxheWVyICpHcmFwaGljc0xheWVyTWFjOjpyZXBsaWNhdGVkTGF5ZXJSb290KFJlcGxpY2FTdGF0
ZSYgcmVwbGljYVN0YXRlKQogewogICAgIC8vIExpbWl0IHJlcGxpY2EgbmVzdGluZywgdG8gYXZv
aWQgMl5OIGV4cGxvc2lvbiBvZiByZXBsaWNhIGxheWVycy4KICAgICBpZiAoIW1fcmVwbGljYXRl
ZExheWVyIHx8IHJlcGxpY2FTdGF0ZS5yZXBsaWNhRGVwdGgoKSA9PSBSZXBsaWNhU3RhdGU6Om1h
eFJlcGxpY2FEZXB0aCkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIEdyYXBoaWNzTGF5ZXJD
QSogcmVwbGljYXRlZExheWVyID0gc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllckNBKj4obV9yZXBs
aWNhdGVkTGF5ZXIpOworICAgIEdyYXBoaWNzTGF5ZXJNYWMqIHJlcGxpY2F0ZWRMYXllciA9IHN0
YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXJNYWMqPihtX3JlcGxpY2F0ZWRMYXllcik7CiAgICAgCiAg
ICAgQ0FMYXllciAqY2xvbmVkTGF5ZXJSb290ID0gcmVwbGljYXRlZExheWVyLT5mZXRjaENsb25l
TGF5ZXJzKHRoaXMsIHJlcGxpY2FTdGF0ZSwgUm9vdENsb25lTGV2ZWwpOwogICAgIEZsb2F0UG9p
bnQgY2xvbmVSb290UG9zaXRpb24gPSByZXBsaWNhdGVkTGF5ZXItPnBvc2l0aW9uRm9yQ2xvbmVS
b290TGF5ZXIoKTsKQEAgLTE0ODgsNyArMTQ4OCw3IEBAIENBTGF5ZXIgKkdyYXBoaWNzTGF5ZXJD
QTo6cmVwbGljYXRlZExheWUKICAgICByZXR1cm4gY2xvbmVkTGF5ZXJSb290OwogfQogCi12b2lk
IEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlTGF5ZXJBbmltYXRpb25zKCkKK3ZvaWQgR3JhcGhpY3NM
YXllck1hYzo6dXBkYXRlTGF5ZXJBbmltYXRpb25zKCkKIHsKICAgICBpZiAobV9hbmltYXRpb25z
VG9Qcm9jZXNzLnNpemUoKSkgewogICAgICAgICBBbmltYXRpb25zVG9Qcm9jZXNzTWFwOjpjb25z
dF9pdGVyYXRvciBlbmQgPSBtX2FuaW1hdGlvbnNUb1Byb2Nlc3MuZW5kKCk7CkBAIC0xNTQwLDcg
KzE1NDAsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlTGF5ZXJBbmltYXRpCiAgICAg
fQogfQogCi12b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0Q0FBbmltYXRpb25PbkxheWVyKENBUHJv
cGVydHlBbmltYXRpb24qIGNhQW5pbSwgQW5pbWF0ZWRQcm9wZXJ0eUlEIHByb3BlcnR5LCBjb25z
dCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGludCBpbmRleCwgZG91YmxlIHRpbWVPZmZzZXQpCit2
b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnNldENBQW5pbWF0aW9uT25MYXllcihDQVByb3BlcnR5QW5p
bWF0aW9uKiBjYUFuaW0sIEFuaW1hdGVkUHJvcGVydHlJRCBwcm9wZXJ0eSwgY29uc3QgU3RyaW5n
JiBhbmltYXRpb25OYW1lLCBpbnQgaW5kZXgsIGRvdWJsZSB0aW1lT2Zmc2V0KQogewogICAgIFBs
YXRmb3JtTGF5ZXIqIGxheWVyID0gYW5pbWF0ZWRMYXllcihwcm9wZXJ0eSk7CiAKQEAgLTE1ODIs
NyArMTU4Miw3IEBAIHN0YXRpYyB2b2lkIGJ1ZzczMTEzNjdXb3JrYXJvdW5kKENBTGF5ZXIKICAg
ICBbdHJhbnNmb3JtTGF5ZXIgc2V0VHJhbnNmb3JtOmNhVHJhbnNmb3JtXTsKIH0KIAotYm9vbCBH
cmFwaGljc0xheWVyQ0E6OnJlbW92ZUNBQW5pbWF0aW9uRnJvbUxheWVyKEFuaW1hdGVkUHJvcGVy
dHlJRCBwcm9wZXJ0eSwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBpbnQgaW5kZXgpCiti
b29sIEdyYXBoaWNzTGF5ZXJNYWM6OnJlbW92ZUNBQW5pbWF0aW9uRnJvbUxheWVyKEFuaW1hdGVk
UHJvcGVydHlJRCBwcm9wZXJ0eSwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBpbnQgaW5k
ZXgpCiB7CiAgICAgUGxhdGZvcm1MYXllciogbGF5ZXIgPSBhbmltYXRlZExheWVyKHByb3BlcnR5
KTsKIApAQCAtMTYyNyw3ICsxNjI3LDcgQEAgc3RhdGljIHZvaWQgY29weUFuaW1hdGlvblByb3Bl
cnRpZXMoQ0FQcgogICAgICAgICBbdG8gc2V0VmFsdWU6b2JqZWN0IGZvcktleTpXZWJLaXRBbmlt
YXRpb25CZWdpblRpbWVTZXRLZXldOwogfQogCi12b2lkIEdyYXBoaWNzTGF5ZXJDQTo6cGF1c2VD
QUFuaW1hdGlvbk9uTGF5ZXIoQW5pbWF0ZWRQcm9wZXJ0eUlEIHByb3BlcnR5LCBjb25zdCBTdHJp
bmcmIGFuaW1hdGlvbk5hbWUsIGludCBpbmRleCwgZG91YmxlIHRpbWVPZmZzZXQpCit2b2lkIEdy
YXBoaWNzTGF5ZXJNYWM6OnBhdXNlQ0FBbmltYXRpb25PbkxheWVyKEFuaW1hdGVkUHJvcGVydHlJ
RCBwcm9wZXJ0eSwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBpbnQgaW5kZXgsIGRvdWJs
ZSB0aW1lT2Zmc2V0KQogewogICAgIFBsYXRmb3JtTGF5ZXIqIGxheWVyID0gYW5pbWF0ZWRMYXll
cihwcm9wZXJ0eSk7CiAKQEAgLTE2NzUsNyArMTY3NSw3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNB
OjpwYXVzZUNBQW5pbWF0aW9uT24KICAgICB9CiB9CiAKLXZvaWQgR3JhcGhpY3NMYXllckNBOjpz
ZXRDb250ZW50c1RvQ2FudmFzKFBsYXRmb3JtTGF5ZXIqIGNhbnZhc0xheWVyKQordm9pZCBHcmFw
aGljc0xheWVyTWFjOjpzZXRDb250ZW50c1RvQ2FudmFzKFBsYXRmb3JtTGF5ZXIqIGNhbnZhc0xh
eWVyKQogewogICAgIGlmIChjYW52YXNMYXllciA9PSBtX2NvbnRlbnRzTGF5ZXIpCiAgICAgICAg
IHJldHVybjsKQEAgLTE2OTAsNyArMTY5MCw3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRD
b250ZW50c1RvQ2FudmEKICAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoQ29udGVudHNDYW52
YXNMYXllckNoYW5nZWQpOwogfQogICAgIAotdm9pZCBHcmFwaGljc0xheWVyQ0E6OnJlcGFpbnRM
YXllckRpcnR5UmVjdHMoKQordm9pZCBHcmFwaGljc0xheWVyTWFjOjpyZXBhaW50TGF5ZXJEaXJ0
eVJlY3RzKCkKIHsKICAgICBpZiAoIW1fZGlydHlSZWN0cy5zaXplKCkpCiAgICAgICAgIHJldHVy
bjsKQEAgLTE3MDEsMTMgKzE3MDEsMTMgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnJlcGFpbnRM
YXllckRpcnR5UgogICAgIG1fZGlydHlSZWN0cy5jbGVhcigpOwogfQogCi12b2lkIEdyYXBoaWNz
TGF5ZXJDQTo6dXBkYXRlQ29udGVudHNOZWVkc0Rpc3BsYXkoKQordm9pZCBHcmFwaGljc0xheWVy
TWFjOjp1cGRhdGVDb250ZW50c05lZWRzRGlzcGxheSgpCiB7CiAgICAgaWYgKG1fY29udGVudHNM
YXllcikKICAgICAgICAgW21fY29udGVudHNMYXllci5nZXQoKSBzZXROZWVkc0Rpc3BsYXldOwog
fQogCi1ib29sIEdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRlQW5pbWF0aW9uRnJvbUtleWZyYW1lcyhj
b25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVMaXN0LCBjb25zdCBBbmltYXRpb24qIGFuaW1h
dGlvbiwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBkb3VibGUgdGltZU9mZnNldCkKK2Jv
b2wgR3JhcGhpY3NMYXllck1hYzo6Y3JlYXRlQW5pbWF0aW9uRnJvbUtleWZyYW1lcyhjb25zdCBL
ZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVMaXN0LCBjb25zdCBBbmltYXRpb24qIGFuaW1hdGlvbiwg
Y29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBkb3VibGUgdGltZU9mZnNldCkKIHsKICAgICBB
U1NFUlQodmFsdWVMaXN0LnByb3BlcnR5KCkgIT0gQW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdFRyYW5z
Zm9ybSk7CiAKQEAgLTE3NDAsNyArMTc0MCw3IEBAIGJvb2wgR3JhcGhpY3NMYXllckNBOjpjcmVh
dGVBbmltYXRpb25Gcm8KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBHcmFwaGljc0xheWVy
Q0E6OmNyZWF0ZVRyYW5zZm9ybUFuaW1hdGlvbnNGcm9tS2V5ZnJhbWVzKGNvbnN0IEtleWZyYW1l
VmFsdWVMaXN0JiB2YWx1ZUxpc3QsIGNvbnN0IEFuaW1hdGlvbiogYW5pbWF0aW9uLCBjb25zdCBT
dHJpbmcmIGFuaW1hdGlvbk5hbWUsIGRvdWJsZSB0aW1lT2Zmc2V0LCBjb25zdCBJbnRTaXplJiBi
b3hTaXplKQorYm9vbCBHcmFwaGljc0xheWVyTWFjOjpjcmVhdGVUcmFuc2Zvcm1BbmltYXRpb25z
RnJvbUtleWZyYW1lcyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVMaXN0LCBjb25zdCBB
bmltYXRpb24qIGFuaW1hdGlvbiwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBkb3VibGUg
dGltZU9mZnNldCwgY29uc3QgSW50U2l6ZSYgYm94U2l6ZSkKIHsKICAgICBBU1NFUlQodmFsdWVM
aXN0LnByb3BlcnR5KCkgPT0gQW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybSk7CiAKQEAg
LTE3OTksMjEgKzE3OTksMjEgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OmNyZWF0ZVRyYW5zZm9y
bUFuaQogICAgIHJldHVybiB2YWxpZE1hdHJpY2VzOwogfQogCi1DQUJhc2ljQW5pbWF0aW9uKiBH
cmFwaGljc0xheWVyQ0E6OmNyZWF0ZUJhc2ljQW5pbWF0aW9uKGNvbnN0IEFuaW1hdGlvbiogYW5p
bSwgQW5pbWF0ZWRQcm9wZXJ0eUlEIHByb3BlcnR5LCBib29sIGFkZGl0aXZlKQorQ0FCYXNpY0Fu
aW1hdGlvbiogR3JhcGhpY3NMYXllck1hYzo6Y3JlYXRlQmFzaWNBbmltYXRpb24oY29uc3QgQW5p
bWF0aW9uKiBhbmltLCBBbmltYXRlZFByb3BlcnR5SUQgcHJvcGVydHksIGJvb2wgYWRkaXRpdmUp
CiB7CiAgICAgQ0FCYXNpY0FuaW1hdGlvbiogYmFzaWNBbmltID0gW0NBQmFzaWNBbmltYXRpb24g
YW5pbWF0aW9uV2l0aEtleVBhdGg6cHJvcGVydHlJZFRvU3RyaW5nKHByb3BlcnR5KV07CiAgICAg
c2V0dXBBbmltYXRpb24oYmFzaWNBbmltLCBhbmltLCBhZGRpdGl2ZSk7CiAgICAgcmV0dXJuIGJh
c2ljQW5pbTsKIH0KIAotQ0FLZXlmcmFtZUFuaW1hdGlvbiogR3JhcGhpY3NMYXllckNBOjpjcmVh
dGVLZXlmcmFtZUFuaW1hdGlvbihjb25zdCBBbmltYXRpb24qIGFuaW0sIEFuaW1hdGVkUHJvcGVy
dHlJRCBwcm9wZXJ0eSwgYm9vbCBhZGRpdGl2ZSkKK0NBS2V5ZnJhbWVBbmltYXRpb24qIEdyYXBo
aWNzTGF5ZXJNYWM6OmNyZWF0ZUtleWZyYW1lQW5pbWF0aW9uKGNvbnN0IEFuaW1hdGlvbiogYW5p
bSwgQW5pbWF0ZWRQcm9wZXJ0eUlEIHByb3BlcnR5LCBib29sIGFkZGl0aXZlKQogewogICAgIENB
S2V5ZnJhbWVBbmltYXRpb24qIGtleWZyYW1lQW5pbSA9IFtDQUtleWZyYW1lQW5pbWF0aW9uIGFu
aW1hdGlvbldpdGhLZXlQYXRoOnByb3BlcnR5SWRUb1N0cmluZyhwcm9wZXJ0eSldOwogICAgIHNl
dHVwQW5pbWF0aW9uKGtleWZyYW1lQW5pbSwgYW5pbSwgYWRkaXRpdmUpOwogICAgIHJldHVybiBr
ZXlmcmFtZUFuaW07CiB9CiAKLXZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXR1cEFuaW1hdGlvbihD
QVByb3BlcnR5QW5pbWF0aW9uKiBwcm9wZXJ0eUFuaW0sIGNvbnN0IEFuaW1hdGlvbiogYW5pbSwg
Ym9vbCBhZGRpdGl2ZSkKK3ZvaWQgR3JhcGhpY3NMYXllck1hYzo6c2V0dXBBbmltYXRpb24oQ0FQ
cm9wZXJ0eUFuaW1hdGlvbiogcHJvcGVydHlBbmltLCBjb25zdCBBbmltYXRpb24qIGFuaW0sIGJv
b2wgYWRkaXRpdmUpCiB7CiAgICAgZG91YmxlIGR1cmF0aW9uID0gYW5pbS0+ZHVyYXRpb24oKTsK
ICAgICBpZiAoZHVyYXRpb24gPD0gMCkKQEAgLTE4NTEsNyArMTg1MSw3IEBAIHZvaWQgR3JhcGhp
Y3NMYXllckNBOjpzZXR1cEFuaW1hdGlvbihDQVAKICAgICBbcHJvcGVydHlBbmltIHNldERlbGVn
YXRlOm1fYW5pbWF0aW9uRGVsZWdhdGUuZ2V0KCldOwogfQogCi1DQU1lZGlhVGltaW5nRnVuY3Rp
b24qIEdyYXBoaWNzTGF5ZXJDQTo6dGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShjb25z
dCBBbmltYXRpb25WYWx1ZSogYW5pbVZhbHVlLCBjb25zdCBBbmltYXRpb24qIGFuaW0pCitDQU1l
ZGlhVGltaW5nRnVuY3Rpb24qIEdyYXBoaWNzTGF5ZXJNYWM6OnRpbWluZ0Z1bmN0aW9uRm9yQW5p
bWF0aW9uVmFsdWUoY29uc3QgQW5pbWF0aW9uVmFsdWUqIGFuaW1WYWx1ZSwgY29uc3QgQW5pbWF0
aW9uKiBhbmltKQogewogICAgIGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB0ZiA9IDA7CiAgICAgaWYg
KGFuaW1WYWx1ZS0+dGltaW5nRnVuY3Rpb24oKSkKQEAgLTE4NjIsNyArMTg2Miw3IEBAIENBTWVk
aWFUaW1pbmdGdW5jdGlvbiogR3JhcGhpY3NMYXllckNBOjoKICAgICByZXR1cm4gZ2V0Q0FNZWRp
YVRpbWluZ0Z1bmN0aW9uKHRmID8gdGYgOiBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uOjpjcmVh
dGUoKS5nZXQoKSk7CiB9CiAKLWJvb2wgR3JhcGhpY3NMYXllckNBOjpzZXRBbmltYXRpb25FbmRw
b2ludHMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCwgY29uc3QgQW5pbWF0aW9u
KiBhbmltLCBDQUJhc2ljQW5pbWF0aW9uKiBiYXNpY0FuaW0pCitib29sIEdyYXBoaWNzTGF5ZXJN
YWM6OnNldEFuaW1hdGlvbkVuZHBvaW50cyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVM
aXN0LCBjb25zdCBBbmltYXRpb24qIGFuaW0sIENBQmFzaWNBbmltYXRpb24qIGJhc2ljQW5pbSkK
IHsKICAgICBpZCBmcm9tVmFsdWUgPSBuaWw7CiAgICAgaWQgdG9WYWx1ZSA9IG5pbDsKQEAgLTE4
OTEsNyArMTg5MSw3IEBAIGJvb2wgR3JhcGhpY3NMYXllckNBOjpzZXRBbmltYXRpb25FbmRwb2kK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBHcmFwaGljc0xheWVyQ0E6OnNldEFuaW1hdGlv
bktleWZyYW1lcyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVMaXN0LCBjb25zdCBBbmlt
YXRpb24qIGFuaW0sIENBS2V5ZnJhbWVBbmltYXRpb24qIGtleWZyYW1lQW5pbSkKK2Jvb2wgR3Jh
cGhpY3NMYXllck1hYzo6c2V0QW5pbWF0aW9uS2V5ZnJhbWVzKGNvbnN0IEtleWZyYW1lVmFsdWVM
aXN0JiB2YWx1ZUxpc3QsIGNvbnN0IEFuaW1hdGlvbiogYW5pbSwgQ0FLZXlmcmFtZUFuaW1hdGlv
bioga2V5ZnJhbWVBbmltKQogewogICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4ga2V5VGlt
ZXMoQWRvcHROUywgW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwogICAgIFJldGFpblB0
cjxOU011dGFibGVBcnJheT4gdmFsdWVzKEFkb3B0TlMsIFtbTlNNdXRhYmxlQXJyYXkgYWxsb2Nd
IGluaXRdKTsKQEAgLTE5MjYsNyArMTkyNiw3IEBAIGJvb2wgR3JhcGhpY3NMYXllckNBOjpzZXRB
bmltYXRpb25LZXlmcmEKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBHcmFwaGljc0xheWVy
Q0E6OnNldFRyYW5zZm9ybUFuaW1hdGlvbkVuZHBvaW50cyhjb25zdCBLZXlmcmFtZVZhbHVlTGlz
dCYgdmFsdWVMaXN0LCBjb25zdCBBbmltYXRpb24qIGFuaW0sIENBQmFzaWNBbmltYXRpb24qIGJh
c2ljQW5pbSwgaW50IGZ1bmN0aW9uSW5kZXgsIFRyYW5zZm9ybU9wZXJhdGlvbjo6T3BlcmF0aW9u
VHlwZSB0cmFuc2Zvcm1PcCwgYm9vbCBpc01hdHJpeEFuaW1hdGlvbiwgY29uc3QgSW50U2l6ZSYg
Ym94U2l6ZSkKK2Jvb2wgR3JhcGhpY3NMYXllck1hYzo6c2V0VHJhbnNmb3JtQW5pbWF0aW9uRW5k
cG9pbnRzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3QsIGNvbnN0IEFuaW1hdGlv
biogYW5pbSwgQ0FCYXNpY0FuaW1hdGlvbiogYmFzaWNBbmltLCBpbnQgZnVuY3Rpb25JbmRleCwg
VHJhbnNmb3JtT3BlcmF0aW9uOjpPcGVyYXRpb25UeXBlIHRyYW5zZm9ybU9wLCBib29sIGlzTWF0
cml4QW5pbWF0aW9uLCBjb25zdCBJbnRTaXplJiBib3hTaXplKQogewogICAgIGlkIGZyb21WYWx1
ZTsKICAgICBpZCB0b1ZhbHVlOwpAQCAtMTk3MSw3ICsxOTcxLDcgQEAgYm9vbCBHcmFwaGljc0xh
eWVyQ0E6OnNldFRyYW5zZm9ybUFuaW1hdAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEdy
YXBoaWNzTGF5ZXJDQTo6c2V0VHJhbnNmb3JtQW5pbWF0aW9uS2V5ZnJhbWVzKGNvbnN0IEtleWZy
YW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3QsIGNvbnN0IEFuaW1hdGlvbiogYW5pbWF0aW9uLCBDQUtl
eWZyYW1lQW5pbWF0aW9uKiBrZXlmcmFtZUFuaW0sIGludCBmdW5jdGlvbkluZGV4LCBUcmFuc2Zv
cm1PcGVyYXRpb246Ok9wZXJhdGlvblR5cGUgdHJhbnNmb3JtT3BUeXBlLCBib29sIGlzTWF0cml4
QW5pbWF0aW9uLCBjb25zdCBJbnRTaXplJiBib3hTaXplKQorYm9vbCBHcmFwaGljc0xheWVyTWFj
OjpzZXRUcmFuc2Zvcm1BbmltYXRpb25LZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3Qm
IHZhbHVlTGlzdCwgY29uc3QgQW5pbWF0aW9uKiBhbmltYXRpb24sIENBS2V5ZnJhbWVBbmltYXRp
b24qIGtleWZyYW1lQW5pbSwgaW50IGZ1bmN0aW9uSW5kZXgsIFRyYW5zZm9ybU9wZXJhdGlvbjo6
T3BlcmF0aW9uVHlwZSB0cmFuc2Zvcm1PcFR5cGUsIGJvb2wgaXNNYXRyaXhBbmltYXRpb24sIGNv
bnN0IEludFNpemUmIGJveFNpemUpCiB7CiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBr
ZXlUaW1lcyhBZG9wdE5TLCBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CiAgICAgUmV0
YWluUHRyPE5TTXV0YWJsZUFycmF5PiB2YWx1ZXMoQWRvcHROUywgW1tOU011dGFibGVBcnJheSBh
bGxvY10gaW5pdF0pOwpAQCAtMjAxNSw3ICsyMDE1LDcgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6
OnNldFRyYW5zZm9ybUFuaW1hdAogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEdyYXBoaWNz
TGF5ZXJDQTo6c3VzcGVuZEFuaW1hdGlvbnMoZG91YmxlIHRpbWUpCit2b2lkIEdyYXBoaWNzTGF5
ZXJNYWM6OnN1c3BlbmRBbmltYXRpb25zKGRvdWJsZSB0aW1lKQogewogICAgIGRvdWJsZSB0ID0g
Y3VycmVudFRpbWVUb01lZGlhVGltZSh0aW1lID8gdGltZSA6IGN1cnJlbnRUaW1lKCkpOwogICAg
IFtwcmltYXJ5TGF5ZXIoKSBzZXRTcGVlZDowXTsKQEAgLTIwMzIsNyArMjAzMiw3IEBAIHZvaWQg
R3JhcGhpY3NMYXllckNBOjpzdXNwZW5kQW5pbWF0aW9ucygKICAgICB9CiB9CiAKLXZvaWQgR3Jh
cGhpY3NMYXllckNBOjpyZXN1bWVBbmltYXRpb25zKCkKK3ZvaWQgR3JhcGhpY3NMYXllck1hYzo6
cmVzdW1lQW5pbWF0aW9ucygpCiB7CiAgICAgW3ByaW1hcnlMYXllcigpIHNldFNwZWVkOjFdOwog
ICAgIFtwcmltYXJ5TGF5ZXIoKSBzZXRUaW1lT2Zmc2V0OjBdOwpAQCAtMjA0OCwzMiArMjA0OCwz
MiBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6cmVzdW1lQW5pbWF0aW9ucygpCiAgICAgfQogfQog
Ci1DQUxheWVyKiBHcmFwaGljc0xheWVyQ0E6Omhvc3RMYXllckZvclN1YmxheWVycygpIGNvbnN0
CitDQUxheWVyKiBHcmFwaGljc0xheWVyTWFjOjpob3N0TGF5ZXJGb3JTdWJsYXllcnMoKSBjb25z
dAogewogICAgIHJldHVybiBtX3N0cnVjdHVyYWxMYXllci5nZXQoKSA/IG1fc3RydWN0dXJhbExh
eWVyLmdldCgpIDogbV9sYXllci5nZXQoKTsgCiB9CiAKLUNBTGF5ZXIqIEdyYXBoaWNzTGF5ZXJD
QTo6bGF5ZXJGb3JTdXBlcmxheWVyKCkgY29uc3QKK0NBTGF5ZXIqIEdyYXBoaWNzTGF5ZXJNYWM6
OmxheWVyRm9yU3VwZXJsYXllcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fc3RydWN0dXJhbExh
eWVyID8gbV9zdHJ1Y3R1cmFsTGF5ZXIuZ2V0KCkgOiBtX2xheWVyLmdldCgpOwogfQogCi1DQUxh
eWVyKiBHcmFwaGljc0xheWVyQ0E6OmFuaW1hdGVkTGF5ZXIoQW5pbWF0ZWRQcm9wZXJ0eUlEIHBy
b3BlcnR5KSBjb25zdAorQ0FMYXllciogR3JhcGhpY3NMYXllck1hYzo6YW5pbWF0ZWRMYXllcihB
bmltYXRlZFByb3BlcnR5SUQgcHJvcGVydHkpIGNvbnN0CiB7CiAgICAgcmV0dXJuIChwcm9wZXJ0
eSA9PSBBbmltYXRlZFByb3BlcnR5QmFja2dyb3VuZENvbG9yKSA/IG1fY29udGVudHNMYXllci5n
ZXQoKSA6IHByaW1hcnlMYXllcigpOwogfQogCi1HcmFwaGljc0xheWVyQ0E6OkxheWVyTWFwKiBH
cmFwaGljc0xheWVyQ0E6OmFuaW1hdGVkTGF5ZXJDbG9uZXMoQW5pbWF0ZWRQcm9wZXJ0eUlEIHBy
b3BlcnR5KSBjb25zdAorR3JhcGhpY3NMYXllck1hYzo6TGF5ZXJNYXAqIEdyYXBoaWNzTGF5ZXJN
YWM6OmFuaW1hdGVkTGF5ZXJDbG9uZXMoQW5pbWF0ZWRQcm9wZXJ0eUlEIHByb3BlcnR5KSBjb25z
dAogewogICAgIHJldHVybiAocHJvcGVydHkgPT0gQW5pbWF0ZWRQcm9wZXJ0eUJhY2tncm91bmRD
b2xvcikgPyBtX2NvbnRlbnRzTGF5ZXJDbG9uZXMuZ2V0KCkgOiBwcmltYXJ5TGF5ZXJDbG9uZXMo
KTsKIH0KIAotUGxhdGZvcm1MYXllciogR3JhcGhpY3NMYXllckNBOjpwbGF0Zm9ybUxheWVyKCkg
Y29uc3QKK1BsYXRmb3JtTGF5ZXIqIEdyYXBoaWNzTGF5ZXJNYWM6OnBsYXRmb3JtTGF5ZXIoKSBj
b25zdAogewogICAgIHJldHVybiBwcmltYXJ5TGF5ZXIoKTsKIH0KIAotdm9pZCBHcmFwaGljc0xh
eWVyQ0E6OnNldERlYnVnQmFja2dyb3VuZENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKK3ZvaWQg
R3JhcGhpY3NMYXllck1hYzo6c2V0RGVidWdCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImIGNv
bG9yKQogewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogICAgIApAQCAtMjA4NSw3
ICsyMDg1LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldERlYnVnQmFja2dyb3VuZAogICAg
IEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKIH0KIAotdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNl
dERlYnVnQm9yZGVyKGNvbnN0IENvbG9yJiBjb2xvciwgZmxvYXQgYm9yZGVyV2lkdGgpCit2b2lk
IEdyYXBoaWNzTGF5ZXJNYWM6OnNldERlYnVnQm9yZGVyKGNvbnN0IENvbG9yJiBjb2xvciwgZmxv
YXQgYm9yZGVyV2lkdGgpCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCiAgICAg
CkBAIC0yMTAwLDcgKzIxMDAsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0RGVidWdCb3Jk
ZXIoY29uCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogfQogCi1GbG9hdFNpemUgR3Jh
cGhpY3NMYXllckNBOjpjb25zdHJhaW5lZFNpemUoKSBjb25zdAorRmxvYXRTaXplIEdyYXBoaWNz
TGF5ZXJNYWM6OmNvbnN0cmFpbmVkU2l6ZSgpIGNvbnN0CiB7CiAgICAgZmxvYXQgdGlsZUNvbHVt
bnMgPSBjZWlsZihtX3NpemUud2lkdGgoKSAvIGNUaWxlZExheWVyVGlsZVNpemUpOwogICAgIGZs
b2F0IHRpbGVSb3dzID0gY2VpbGYobV9zaXplLmhlaWdodCgpIC8gY1RpbGVkTGF5ZXJUaWxlU2l6
ZSk7CkBAIC0yMTIzLDcgKzIxMjMsNyBAQCBGbG9hdFNpemUgR3JhcGhpY3NMYXllckNBOjpjb25z
dHJhaW5lZFNpCiAgICAgcmV0dXJuIGNvbnN0cmFpbmVkU2l6ZTsKIH0KIAotYm9vbCBHcmFwaGlj
c0xheWVyQ0E6OnJlcXVpcmVzVGlsZWRMYXllcihjb25zdCBGbG9hdFNpemUmIHNpemUpIGNvbnN0
Citib29sIEdyYXBoaWNzTGF5ZXJNYWM6OnJlcXVpcmVzVGlsZWRMYXllcihjb25zdCBGbG9hdFNp
emUmIHNpemUpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2RyYXdzQ29udGVudCkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwpAQCAtMjEzMiw3ICsyMTMyLDcgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OnJl
cXVpcmVzVGlsZWRMYXllcgogICAgIHJldHVybiBzaXplLndpZHRoKCkgPiBjTWF4UGl4ZWxEaW1l
bnNpb24gfHwgc2l6ZS5oZWlnaHQoKSA+IGNNYXhQaXhlbERpbWVuc2lvbjsKIH0KIAotdm9pZCBH
cmFwaGljc0xheWVyQ0E6OnN3YXBGcm9tT3JUb1RpbGVkTGF5ZXIoYm9vbCB1c2VUaWxlZExheWVy
KQordm9pZCBHcmFwaGljc0xheWVyTWFjOjpzd2FwRnJvbU9yVG9UaWxlZExheWVyKGJvb2wgdXNl
VGlsZWRMYXllcikKIHsKICAgICBpZiAodXNlVGlsZWRMYXllciA9PSBtX3VzaW5nVGlsZWRMYXll
cikKICAgICAgICAgcmV0dXJuOwpAQCAtMjE5OCw3ICsyMTk4LDcgQEAgdm9pZCBHcmFwaGljc0xh
eWVyQ0E6OnN3YXBGcm9tT3JUb1RpbGVkTAogICAgIHVwZGF0ZURlYnVnSW5kaWNhdG9ycygpOwog
fQogCi1HcmFwaGljc0xheWVyOjpDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRpb24gR3Jh
cGhpY3NMYXllckNBOjpkZWZhdWx0Q29udGVudHNPcmllbnRhdGlvbigpIGNvbnN0CitHcmFwaGlj
c0xheWVyOjpDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRpb24gR3JhcGhpY3NMYXllck1h
Yzo6ZGVmYXVsdENvbnRlbnRzT3JpZW50YXRpb24oKSBjb25zdAogewogI2lmICFIQVZFX01PREVS
Tl9RVUFSVFpDT1JFCiAgICAgLy8gT2xkZXIgUXVhcnR6Q29yZSBkb2VzIG5vdCBzdXBwb3J0IC1n
ZW9tZXRyeUZsaXBwZWQsIHNvIHdlIG1hbnVhbGx5IGZsaXAgdGhlIHJvb3QKQEAgLTIyMTAsNyAr
MjIxMCw3IEBAIEdyYXBoaWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmkKICNlbmRp
ZgogfQogCi12b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlQ29udGVudHNUcmFuc2Zvcm0oKQor
dm9pZCBHcmFwaGljc0xheWVyTWFjOjp1cGRhdGVDb250ZW50c1RyYW5zZm9ybSgpCiB7CiAjaWYg
IUhBVkVfTU9ERVJOX1FVQVJUWkNPUkUKICAgICBpZiAoY29udGVudHNPcmllbnRhdGlvbigpID09
IENvbXBvc2l0aW5nQ29vcmRpbmF0ZXNCb3R0b21VcCkgewpAQCAtMjIyMSw3ICsyMjIxLDcgQEAg
dm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUNvbnRlbnRzVHJhbgogI2VuZGlmCiB9CiAKLXZv
aWQgR3JhcGhpY3NMYXllckNBOjpzZXR1cENvbnRlbnRzTGF5ZXIoQ0FMYXllciogY29udGVudHNM
YXllcikKK3ZvaWQgR3JhcGhpY3NMYXllck1hYzo6c2V0dXBDb250ZW50c0xheWVyKENBTGF5ZXIq
IGNvbnRlbnRzTGF5ZXIpCiB7CiAgICAgLy8gVHVybiBvZmYgaW1wbGljaXQgYW5pbWF0aW9ucyBv
biB0aGUgaW5uZXIgbGF5ZXIuCiAgICAgW2NvbnRlbnRzTGF5ZXIgc2V0U3R5bGU6W05TRGljdGlv
bmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdDpudWxsQWN0aW9uc0RpY3Rpb25hcnkoKSBmb3JLZXk6
QCJhY3Rpb25zIl1dOwpAQCAtMjI0NCw3ICsyMjQ0LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6
OnNldHVwQ29udGVudHNMYXllcgogICAgIH0KIH0KIAotQ0FMYXllciAqR3JhcGhpY3NMYXllckNB
OjpmaW5kT3JNYWtlQ2xvbmUoQ2xvbmVJRCBjbG9uZUlELCBDQUxheWVyICpzb3VyY2VMYXllciwg
TGF5ZXJNYXAqIGNsb25lcywgQ2xvbmVMZXZlbCBjbG9uZUxldmVsKQorQ0FMYXllciAqR3JhcGhp
Y3NMYXllck1hYzo6ZmluZE9yTWFrZUNsb25lKENsb25lSUQgY2xvbmVJRCwgQ0FMYXllciAqc291
cmNlTGF5ZXIsIExheWVyTWFwKiBjbG9uZXMsIENsb25lTGV2ZWwgY2xvbmVMZXZlbCkKIHsKICAg
ICBpZiAoIXNvdXJjZUxheWVyKQogICAgICAgICByZXR1cm4gMDsKQEAgLTIyNjksNyArMjI2OSw3
IEBAIENBTGF5ZXIgKkdyYXBoaWNzTGF5ZXJDQTo6ZmluZE9yTWFrZUNsb24KICAgICByZXR1cm4g
cmVzdWx0TGF5ZXI7CiB9ICAgCiAKLXZvaWQgR3JhcGhpY3NMYXllckNBOjplbnN1cmVDbG9uZUxh
eWVycyhDbG9uZUlEIGNsb25lSUQsIENBTGF5ZXIgKiYgcHJpbWFyeUxheWVyLCBDQUxheWVyICom
IHN0cnVjdHVyYWxMYXllciwgQ0FMYXllciAqJiBjb250ZW50c0xheWVyLCBDbG9uZUxldmVsIGNs
b25lTGV2ZWwpCit2b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OmVuc3VyZUNsb25lTGF5ZXJzKENsb25l
SUQgY2xvbmVJRCwgQ0FMYXllciAqJiBwcmltYXJ5TGF5ZXIsIENBTGF5ZXIgKiYgc3RydWN0dXJh
bExheWVyLCBDQUxheWVyIComIGNvbnRlbnRzTGF5ZXIsIENsb25lTGV2ZWwgY2xvbmVMZXZlbCkK
IHsKICAgICBzdHJ1Y3R1cmFsTGF5ZXIgPSBuaWw7CiAgICAgY29udGVudHNMYXllciA9IG5pbDsK
QEAgLTIyODgsMTQgKzIyODgsMTQgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OmVuc3VyZUNsb25l
TGF5ZXJzKAogICAgIGNvbnRlbnRzTGF5ZXIgPSBmaW5kT3JNYWtlQ2xvbmUoY2xvbmVJRCwgbV9j
b250ZW50c0xheWVyLmdldCgpLCBtX2NvbnRlbnRzTGF5ZXJDbG9uZXMuZ2V0KCksIGNsb25lTGV2
ZWwpOwogfQogCi12b2lkIEdyYXBoaWNzTGF5ZXJDQTo6cmVtb3ZlQ2xvbmVMYXllcnMoKQordm9p
ZCBHcmFwaGljc0xheWVyTWFjOjpyZW1vdmVDbG9uZUxheWVycygpCiB7CiAgICAgbV9sYXllckNs
b25lcyA9IDA7CiAgICAgbV9zdHJ1Y3R1cmFsTGF5ZXJDbG9uZXMgPSAwOwogICAgIG1fY29udGVu
dHNMYXllckNsb25lcyA9IDA7CiB9CiAKLUZsb2F0UG9pbnQgR3JhcGhpY3NMYXllckNBOjpwb3Np
dGlvbkZvckNsb25lUm9vdExheWVyKCkgY29uc3QKK0Zsb2F0UG9pbnQgR3JhcGhpY3NMYXllck1h
Yzo6cG9zaXRpb25Gb3JDbG9uZVJvb3RMYXllcigpIGNvbnN0CiB7CiAgICAgLy8gVGhpcyBjYW4g
Z2V0IGNhbGxlZCBkdXJpbmcgYSBzeW5jIHdoZW4gd2UndmUganVzdCByZW1vdmVkIHRoZSBtX3Jl
cGxpY2FMYXllci4KICAgICBpZiAoIW1fcmVwbGljYUxheWVyKQpAQCAtMjMwNiwxOSArMjMwNiwx
OSBAQCBGbG9hdFBvaW50IEdyYXBoaWNzTGF5ZXJDQTo6cG9zaXRpb25Gb3JDCiAgICAgICAgICAg
ICAgICAgICAgICAgcmVwbGljYVBvc2l0aW9uLnkoKSArIG1fYW5jaG9yUG9pbnQueSgpICogbV9z
aXplLmhlaWdodCgpKTsKIH0KIAotdm9pZCBHcmFwaGljc0xheWVyQ0E6OnByb3BhZ2F0ZUxheWVy
Q2hhbmdlVG9SZXBsaWNhcygpCit2b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnByb3BhZ2F0ZUxheWVy
Q2hhbmdlVG9SZXBsaWNhcygpCiB7CiAgICAgZm9yIChHcmFwaGljc0xheWVyKiBjdXJyTGF5ZXIg
PSB0aGlzOyBjdXJyTGF5ZXI7IGN1cnJMYXllciA9IGN1cnJMYXllci0+cGFyZW50KCkpIHsKLSAg
ICAgICAgR3JhcGhpY3NMYXllckNBKiBjdXJyTGF5ZXJDQSA9IHN0YXRpY19jYXN0PEdyYXBoaWNz
TGF5ZXJDQSo+KGN1cnJMYXllcik7CisgICAgICAgIEdyYXBoaWNzTGF5ZXJNYWMqIGN1cnJMYXll
ckNBID0gc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllck1hYyo+KGN1cnJMYXllcik7CiAgICAgICAg
IGlmICghY3VyckxheWVyQ0EtPmhhc0Nsb25lTGF5ZXJzKCkpCiAgICAgICAgICAgICBicmVhazsK
IAogICAgICAgICBpZiAoY3VyckxheWVyQ0EtPnJlcGxpY2FMYXllcigpKQotICAgICAgICAgICAg
c3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllckNBKj4oY3VyckxheWVyQ0EtPnJlcGxpY2FMYXllcigp
KS0+bm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKFJlcGxpY2F0ZWRMYXllckNoYW5nZWQpOworICAg
ICAgICAgICAgc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllck1hYyo+KGN1cnJMYXllckNBLT5yZXBs
aWNhTGF5ZXIoKSktPm5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChSZXBsaWNhdGVkTGF5ZXJDaGFu
Z2VkKTsKICAgICB9CiB9CiAKLUNBTGF5ZXIgKkdyYXBoaWNzTGF5ZXJDQTo6ZmV0Y2hDbG9uZUxh
eWVycyhHcmFwaGljc0xheWVyKiByZXBsaWNhUm9vdCwgUmVwbGljYVN0YXRlJiByZXBsaWNhU3Rh
dGUsIENsb25lTGV2ZWwgY2xvbmVMZXZlbCkKK0NBTGF5ZXIgKkdyYXBoaWNzTGF5ZXJNYWM6OmZl
dGNoQ2xvbmVMYXllcnMoR3JhcGhpY3NMYXllciogcmVwbGljYVJvb3QsIFJlcGxpY2FTdGF0ZSYg
cmVwbGljYVN0YXRlLCBDbG9uZUxldmVsIGNsb25lTGV2ZWwpCiB7CiAgICAgQ0FMYXllciAqcHJp
bWFyeUxheWVyOwogICAgIENBTGF5ZXIgKnN0cnVjdHVyYWxMYXllcjsKQEAgLTIzMjYsNyArMjMy
Niw3IEBAIENBTGF5ZXIgKkdyYXBoaWNzTGF5ZXJDQTo6ZmV0Y2hDbG9uZUxheWUKICAgICBlbnN1
cmVDbG9uZUxheWVycyhyZXBsaWNhU3RhdGUuY2xvbmVJRCgpLCBwcmltYXJ5TGF5ZXIsIHN0cnVj
dHVyYWxMYXllciwgY29udGVudHNMYXllciwgY2xvbmVMZXZlbCk7CiAKICAgICBpZiAobV9tYXNr
TGF5ZXIpIHsKLSAgICAgICAgQ0FMYXllciAqbWFza0Nsb25lID0gc3RhdGljX2Nhc3Q8R3JhcGhp
Y3NMYXllckNBKj4obV9tYXNrTGF5ZXIpLT5mZXRjaENsb25lTGF5ZXJzKHJlcGxpY2FSb290LCBy
ZXBsaWNhU3RhdGUsIEludGVybWVkaWF0ZUNsb25lTGV2ZWwpOworICAgICAgICBDQUxheWVyICpt
YXNrQ2xvbmUgPSBzdGF0aWNfY2FzdDxHcmFwaGljc0xheWVyTWFjKj4obV9tYXNrTGF5ZXIpLT5m
ZXRjaENsb25lTGF5ZXJzKHJlcGxpY2FSb290LCByZXBsaWNhU3RhdGUsIEludGVybWVkaWF0ZUNs
b25lTGV2ZWwpOwogICAgICAgICBbcHJpbWFyeUxheWVyIHNldE1hc2s6bWFza0Nsb25lXTsKICAg
ICB9CiAKQEAgLTIzNTIsNyArMjM1Miw3IEBAIENBTGF5ZXIgKkdyYXBoaWNzTGF5ZXJDQTo6ZmV0
Y2hDbG9uZUxheWUKICAgICBpZiAobV9yZXBsaWNhTGF5ZXIgJiYgbV9yZXBsaWNhTGF5ZXIgIT0g
cmVwbGljYVJvb3QpIHsKICAgICAgICAgLy8gV2UgaGF2ZSBuZXN0ZWQgcmVwbGljYXMuIEFzayB0
aGUgcmVwbGljYSBsYXllciBmb3IgYSBjbG9uZSBvZiBpdHMgY29udGVudHMuCiAgICAgICAgIHJl
cGxpY2FTdGF0ZS5zZXRCcmFuY2hUeXBlKFJlcGxpY2FTdGF0ZTo6UmVwbGljYUJyYW5jaCk7Ci0g
ICAgICAgIHJlcGxpY2FMYXllciA9IHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXJDQSo+KG1fcmVw
bGljYUxheWVyKS0+ZmV0Y2hDbG9uZUxheWVycyhyZXBsaWNhUm9vdCwgcmVwbGljYVN0YXRlLCBS
b290Q2xvbmVMZXZlbCk7CisgICAgICAgIHJlcGxpY2FMYXllciA9IHN0YXRpY19jYXN0PEdyYXBo
aWNzTGF5ZXJNYWMqPihtX3JlcGxpY2FMYXllciktPmZldGNoQ2xvbmVMYXllcnMocmVwbGljYVJv
b3QsIHJlcGxpY2FTdGF0ZSwgUm9vdENsb25lTGV2ZWwpOwogICAgICAgICByZXBsaWNhU3RhdGUu
c2V0QnJhbmNoVHlwZShSZXBsaWNhU3RhdGU6OkNoaWxkQnJhbmNoKTsKICAgICB9CiAgICAgCkBA
IC0yMzc3LDcgKzIzNzcsNyBAQCBDQUxheWVyICpHcmFwaGljc0xheWVyQ0E6OmZldGNoQ2xvbmVM
YXllCiAKICAgICAgICAgc2l6ZV90IG51bUNoaWxkcmVuID0gY2hpbGRMYXllcnMuc2l6ZSgpOwog
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bUNoaWxkcmVuOyArK2kpIHsKLSAgICAg
ICAgICAgIEdyYXBoaWNzTGF5ZXJDQSogY3VyQ2hpbGQgPSBzdGF0aWNfY2FzdDxHcmFwaGljc0xh
eWVyQ0EqPihjaGlsZExheWVyc1tpXSk7CisgICAgICAgICAgICBHcmFwaGljc0xheWVyTWFjKiBj
dXJDaGlsZCA9IHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXJNYWMqPihjaGlsZExheWVyc1tpXSk7
CiAKICAgICAgICAgICAgIENBTGF5ZXIgKmNoaWxkTGF5ZXIgPSBjdXJDaGlsZC0+ZmV0Y2hDbG9u
ZUxheWVycyhyZXBsaWNhUm9vdCwgcmVwbGljYVN0YXRlLCBJbnRlcm1lZGlhdGVDbG9uZUxldmVs
KTsKICAgICAgICAgICAgIGlmIChjaGlsZExheWVyKQpAQCAtMjQxMCw3ICsyNDEwLDcgQEAgQ0FM
YXllciAqR3JhcGhpY3NMYXllckNBOjpmZXRjaENsb25lTGF5ZQogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKLUNBTGF5ZXIgKkdyYXBoaWNzTGF5ZXJDQTo6Y2xvbmVMYXllcihDQUxheWVyICpsYXll
ciwgQ2xvbmVMZXZlbCBjbG9uZUxldmVsKQorQ0FMYXllciAqR3JhcGhpY3NMYXllck1hYzo6Y2xv
bmVMYXllcihDQUxheWVyICpsYXllciwgQ2xvbmVMZXZlbCBjbG9uZUxldmVsKQogewogICAgIHN0
YXRpYyBDbGFzcyB0cmFuc2Zvcm1MYXllckNsYXNzID0gTlNDbGFzc0Zyb21TdHJpbmcoQCJDQVRy
YW5zZm9ybUxheWVyIik7CiAgICAgQ0FMYXllciAqbmV3TGF5ZXIgPSBuaWw7CkBAIC0yNDQ5LDcg
KzI0NDksNyBAQCBDQUxheWVyICpHcmFwaGljc0xheWVyQ0E6OmNsb25lTGF5ZXIoQ0FMCiAgICAg
cmV0dXJuIG5ld0xheWVyOwogfQogCi12b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0T3BhY2l0eUlu
dGVybmFsKGZsb2F0IGFjY3VtdWxhdGVkT3BhY2l0eSkKK3ZvaWQgR3JhcGhpY3NMYXllck1hYzo6
c2V0T3BhY2l0eUludGVybmFsKGZsb2F0IGFjY3VtdWxhdGVkT3BhY2l0eSkKIHsKICAgICBMYXll
ck1hcCogbGF5ZXJDbG9uZU1hcCA9IDA7CiAgICAgCkBAIC0yNDcyLDcgKzI0NzIsNyBAQCB2b2lk
IEdyYXBoaWNzTGF5ZXJDQTo6c2V0T3BhY2l0eUludGVybmFsCiAgICAgfQogfQogCi12b2lkIEdy
YXBoaWNzTGF5ZXJDQTo6dXBkYXRlT3BhY2l0eU9uTGF5ZXIoKQordm9pZCBHcmFwaGljc0xheWVy
TWFjOjp1cGRhdGVPcGFjaXR5T25MYXllcigpCiB7CiAjaWYgIUhBVkVfTU9ERVJOX1FVQVJUWkNP
UkUKICAgICAvLyBEaXN0cmlidXRlIG9wYWNpdHkgZWl0aGVyIHRvIG91ciBvd24gbGF5ZXIgb3Ig
dG8gb3VyIGNoaWxkcmVuLiBXZSBwYXNzIGluIHRoZSAKQEAgLTI0OTUsMTMgKzI0OTUsMTMgQEAg
dm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZU9wYWNpdHlPbkxheQogI2VuZGlmCiB9CiAKLXZv
aWQgR3JhcGhpY3NMYXllckNBOjpub3RlU3VibGF5ZXJzQ2hhbmdlZCgpCit2b2lkIEdyYXBoaWNz
TGF5ZXJNYWM6Om5vdGVTdWJsYXllcnNDaGFuZ2VkKCkKIHsKICAgICBub3RlTGF5ZXJQcm9wZXJ0
eUNoYW5nZWQoQ2hpbGRyZW5DaGFuZ2VkKTsKICAgICBwcm9wYWdhdGVMYXllckNoYW5nZVRvUmVw
bGljYXMoKTsKIH0KIAotdm9pZCBHcmFwaGljc0xheWVyQ0E6Om5vdGVMYXllclByb3BlcnR5Q2hh
bmdlZChMYXllckNoYW5nZUZsYWdzIGZsYWdzKQordm9pZCBHcmFwaGljc0xheWVyTWFjOjpub3Rl
TGF5ZXJQcm9wZXJ0eUNoYW5nZWQoTGF5ZXJDaGFuZ2VGbGFncyBmbGFncykKIHsKICAgICBpZiAo
IW1fdW5jb21taXR0ZWRDaGFuZ2VzICYmIG1fY2xpZW50KQogICAgICAgICBtX2NsaWVudC0+bm90
aWZ5U3luY1JlcXVpcmVkKHRoaXMpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75382</attachid>
            <date>2010-12-02 08:59:58 -0800</date>
            <delta_ts>2010-12-02 10:53:13 -0800</delta_ts>
            <desc>Patch with Mac Implementation</desc>
            <filename>bug-49388-20101202085958.patch</filename>
            <type>text/plain</type>
            <size>252152</size>
            <attacher name="Chris Marrin">cmarrin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MzA4OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDEgQEAKKzIwMTAtMTItMDEgIENocmlzIE1hcnJpbiAgPGNtYXJyaW5AYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNo
YXJlIGNvZGUgYmV0d2VlbiBNYWMgKENBKSBhbmQgV2luZG93cyAoQ0FDRikgR3JhcGhpY3NMYXll
ciBpbXBsZW1lbnRhdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQ5Mzg4CisKKyAgICAgICAgUmVwbGFjZWQgR3JhcGhpY3NMYXllck1hYyB3aXRo
IEdyYXBoaWNzTGF5ZXJDQS4gR3JhcGhpY3NMYXllckNBIGlzIGVzc2VudGlhbGx5IAorICAgICAg
ICBpZGVudGljYWwgdG8gR3JhcGhpY3NMYXllck1hYywgYnV0IHJlcGxhY2VzIGFsbCB0aGUgQ29y
ZUFuaW1hdGlvbiBzcGVjaWZpYyBjYWxscyAKKyAgICAgICAgd2l0aCBjYWxscyB0byBQbGF0Zm9y
bUNBTGF5ZXIgYW5kIFBsYXRmb3JtQ0FBbmltYXRpb24uIFRoaXMgbWFrZXMgR3JhcGhpY3NMYXll
ckNBIAorICAgICAgICBwbGF0Zm9ybSBuZXV0cmFsIGFzIGxvbmcgYXMgaW1wbGVtZW50YXRpb25z
IG9mIHRob3NlIHR3byBjbGFzc2VzIGFyZSBhdmFpbGFibGUuIAorICAgICAgICBBZGRlZCBpbXBs
ZW1lbnRhdGlvbnMgaW4gUGxhdGZvcm1DQUxheWVyTWFjIGFuZCBQbGF0Zm9ybUNBQW5pbWF0aW9u
TWFjLiBBbHNvIGdvdCAKKyAgICAgICAgcmlkIG9mIEdyYXBoaWNzTGF5ZXI6Om5hdGl2ZUxheWVy
KCkgYW5kIHJlcGxhY2VkIGl0IHdpdGggR3JhcGhpY3NMYXllcjo6cGxhdGZvcm1MYXllcigpIAor
ICAgICAgICB0byBhdm9pZCBjb25mdXNpb24gc2luY2UgYm90aCBuYW1lcyB3ZXJlIHVzZWQgdG8g
cmVmZXIgdG8gdGhlIHNhbWUgdGhpbmcuIAorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5
ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYTogQWRkZWQuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcDogQWRkZWQuCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmg6IEFkZGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FBbmltYXRpb24uaDogQWRkZWQuCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmNwcDogQWRkZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmg6IEFkZGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0xheWVyTWFjLmg6IFJl
bW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzTGF5ZXJNYWMu
bW06IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLm1tOgorICAgICAgICAo
LVtXZWJMYXllciBzZXROZWVkc0Rpc3BsYXldKToKKyAgICAgICAgKC1bV2ViTGF5ZXIgc2V0TmVl
ZHNEaXNwbGF5SW5SZWN0Ol0pOgorICAgICAgICAoLVtXZWJMYXllciBkaXNwbGF5XSk6CisgICAg
ICAgICgtW1dlYkxheWVyIGRyYXdJbkNvbnRleHQ6XSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL1dlYlRpbGVkTGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9t
YWMvV2ViVGlsZWRMYXllci5tbToKKyAgICAgICAgKC1bV2ViVGlsZWRMYXllciBzZXROZWVkc0Rp
c3BsYXldKToKKyAgICAgICAgKC1bV2ViVGlsZWRMYXllciBzZXROZWVkc0Rpc3BsYXlJblJlY3Q6
XSk6CisgICAgICAgICgtW1dlYlRpbGVkTGF5ZXIgZGlzcGxheV0pOgorICAgICAgICAoLVtXZWJU
aWxlZExheWVyIGRyYXdJbkNvbnRleHQ6XSk6CisKIDIwMTAtMTItMDEgIEppYSBQdSAgPGpwdUBh
cHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBXZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gNzE4NTApCisr
KyBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtOTk0LDYgKzk5NCw4IEBACiAJCTQ5NEJENzk1MEY1NUM4RUUwMDc0NzgyOCAvKiBXZWJL
aXRQb2ludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDk0QkQ3OTMwRjU1QzhFRTAwNzQ3ODI4IC8qIFdlYktpdFBvaW50LmggKi87IH07CiAJCTQ5NEJE
NzlEMEY1NUM5NEMwMDc0NzgyOCAvKiBKU1dlYktpdFBvaW50LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5NEJENzlCMEY1NUM5NEMwMDc0NzgyOCAv
KiBKU1dlYktpdFBvaW50LmNwcCAqLzsgfTsKIAkJNDk0QkQ3OUUwRjU1Qzk0QzAwNzQ3ODI4IC8q
IEpTV2ViS2l0UG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ5NEJENzlDMEY1NUM5NEMwMDc0NzgyOCAvKiBKU1dlYktpdFBvaW50LmggKi87IH07
CisJCTQ5NTg3ODIxMTJBNTdEREYwMDcyMzhBQyAvKiBQbGF0Zm9ybUNBQW5pbWF0aW9uTWFjLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDk1ODc4MUYx
MkE1N0RERjAwNzIzOEFDIC8qIFBsYXRmb3JtQ0FBbmltYXRpb25NYWMubW0gKi87IH07CisJCTQ5
NTg3ODIyMTJBNTdEREYwMDcyMzhBQyAvKiBQbGF0Zm9ybUNBTGF5ZXJNYWMubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTU4NzgyMDEyQTU3RERGMDA3
MjM4QUMgLyogUGxhdGZvcm1DQUxheWVyTWFjLm1tICovOyB9OwogCQk0OTgzOTEzRjBGMUU3Njc1
MDBDMjM3ODIgLyogSlNXZWJLaXRDU1NNYXRyaXguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDk4MzkxM0QwRjFFNzY3NTAwQzIzNzgyIC8qIEpTV2Vi
S2l0Q1NTTWF0cml4LmNwcCAqLzsgfTsKIAkJNDk4MzkxNDAwRjFFNzY3NTAwQzIzNzgyIC8qIEpT
V2ViS2l0Q1NTTWF0cml4LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0OTgzOTEzRTBGMUU3Njc1MDBDMjM3ODIgLyogSlNXZWJLaXRDU1NNYXRyaXguaCAq
LzsgfTsKIAkJNDk4MzkxNTAwRjFFNzZCNDAwQzIzNzgyIC8qIERPTVdlYktpdENTU01hdHJpeC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDk4MzkxNEQw
RjFFNzZCNDAwQzIzNzgyIC8qIERPTVdlYktpdENTU01hdHJpeC5oICovOyB9OwpAQCAtMTAyMCw4
ICsxMDIyLDEwIEBACiAJCTQ5ODc3MEYyMTI0MkM1MzUwMDIyMjZCQSAvKiBUaWxpbmdEYXRhLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5ODc3MEQ5
MTI0MkM1MzUwMDIyMjZCQSAvKiBUaWxpbmdEYXRhLmNwcCAqLzsgfTsKIAkJNDk4NzcwRjMxMjQy
QzUzNTAwMjIyNkJBIC8qIFRpbGluZ0RhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ5ODc3MERBMTI0MkM1MzUwMDIyMjZCQSAvKiBUaWxpbmdEYXRh
LmggKi87IH07CiAJCTQ5ODc3MTUzMTI0M0Y5RkEwMDIyMjZCQSAvKiBEcmF3aW5nQnVmZmVyTWFj
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDk4Nzcx
NTIxMjQzRjlGQTAwMjIyNkJBIC8qIERyYXdpbmdCdWZmZXJNYWMubW0gKi87IH07Ci0JCTQ5OUIz
QzU5MTI4QzY0MUUwMEU3MjZDMiAvKiBHcmFwaGljc0xheWVyTWFjLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTlCM0M1NzEyOEM2NDFFMDBFNzI2QzIg
LyogR3JhcGhpY3NMYXllck1hYy5oICovOyB9OwotCQk0OTlCM0M1QTEyOEM2NDFFMDBFNzI2QzIg
LyogR3JhcGhpY3NMYXllck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ5OUIzQzU4MTI4QzY0MUUwMEU3MjZDMiAvKiBHcmFwaGljc0xheWVyTWFj
Lm1tICovOyB9OworCQk0OTlCM0VDNTEyOENDQzQ3MDBFNzI2QzIgLyogUGxhdGZvcm1DQUxheWVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTlCM0VD
MzEyOENDQzQ3MDBFNzI2QzIgLyogUGxhdGZvcm1DQUxheWVyLmggKi87IH07CisJCTQ5OUIzRUQ2
MTI4Q0QzMTQwMEU3MjZDMiAvKiBHcmFwaGljc0xheWVyQ0EuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDk5QjNFRDQxMjhDRDMxNDAwRTcyNkMyIC8q
IEdyYXBoaWNzTGF5ZXJDQS5jcHAgKi87IH07CisJCTQ5OUIzRUQ3MTI4Q0QzMTQwMEU3MjZDMiAv
KiBHcmFwaGljc0xheWVyQ0EuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ5OUIzRUQ1MTI4Q0QzMTQwMEU3MjZDMiAvKiBHcmFwaGljc0xheWVyQ0EuaCAq
LzsgfTsKKwkJNDk5QjNFREQxMjhEQjUwMjAwRTcyNkMyIC8qIFBsYXRmb3JtQ0FBbmltYXRpb24u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5OUIzRURD
MTI4REI1MDEwMEU3MjZDMiAvKiBQbGF0Zm9ybUNBQW5pbWF0aW9uLmggKi87IH07CiAJCTQ5QjY5
RTVFMTI1NEZFRUQwMDdENTdFQiAvKiBMb29wQmxpbm5DbGFzc2lmaWVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5QjY5RTU1MTI1NEZFRUQwMDdE
NTdFQiAvKiBMb29wQmxpbm5DbGFzc2lmaWVyLmNwcCAqLzsgfTsKIAkJNDlCNjlFNUYxMjU0RkVF
RDAwN0Q1N0VCIC8qIExvb3BCbGlubkNsYXNzaWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5QjY5RTU2MTI1NEZFRUQwMDdENTdFQiAvKiBMb29w
Qmxpbm5DbGFzc2lmaWVyLmggKi87IH07CiAJCTQ5QjY5RTYwMTI1NEZFRUQwMDdENTdFQiAvKiBM
b29wQmxpbm5Db25zdGFudHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ5QjY5RTU3MTI1NEZFRUQwMDdENTdFQiAvKiBMb29wQmxpbm5Db25zdGFudHMu
aCAqLzsgfTsKQEAgLTcwOTgsNiArNzEwMiw4IEBACiAJCTQ5NEJENzk0MEY1NUM4RUUwMDc0Nzgy
OCAvKiBXZWJLaXRQb2ludC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViS2l0UG9pbnQu
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OTRCRDc5QjBGNTVDOTRDMDA3NDc4
MjggLyogSlNXZWJLaXRQb2ludC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU1dlYktpdFBvaW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDk0
QkQ3OUMwRjU1Qzk0QzAwNzQ3ODI4IC8qIEpTV2ViS2l0UG9pbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNXZWJLaXRQb2ludC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk0OTU4NzgxRjEyQTU3RERGMDA3MjM4QUMgLyogUGxhdGZvcm1DQUFuaW1hdGlvbk1h
Yy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFBsYXRmb3JtQ0FB
bmltYXRpb25NYWMubW07IHBhdGggPSBjYS9tYWMvUGxhdGZvcm1DQUFuaW1hdGlvbk1hYy5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDk1ODc4MjAxMkE1N0RERjAwNzIzOEFDIC8q
IFBsYXRmb3JtQ0FMYXllck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
bmFtZSA9IFBsYXRmb3JtQ0FMYXllck1hYy5tbTsgcGF0aCA9IGNhL21hYy9QbGF0Zm9ybUNBTGF5
ZXJNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5ODM5MTNEMEYxRTc2NzUw
MEMyMzc4MiAvKiBKU1dlYktpdENTU01hdHJpeC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU1dlYktpdENTU01hdHJpeC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQ5ODM5MTNFMEYxRTc2NzUwMEMyMzc4MiAvKiBKU1dlYktpdENTU01hdHJpeC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dlYktpdENTU01hdHJpeC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OTgzOTE0RDBGMUU3NkI0MDBDMjM3ODIgLyog
RE9NV2ViS2l0Q1NTTWF0cml4LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERP
TVdlYktpdENTU01hdHJpeC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzEyNSw4
ICs3MTMxLDEwIEBACiAJCTQ5ODc3MEQ5MTI0MkM1MzUwMDIyMjZCQSAvKiBUaWxpbmdEYXRhLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFRpbGluZ0RhdGEuY3BwOyBw
YXRoID0gZ3B1L1RpbGluZ0RhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
OTg3NzBEQTEyNDJDNTM1MDAyMjI2QkEgLyogVGlsaW5nRGF0YS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBUaWxpbmdEYXRhLmg7IHBhdGggPSBncHUvVGlsaW5nRGF0YS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OTg3NzE1MjEyNDNGOUZBMDAyMjI2QkEgLyog
RHJhd2luZ0J1ZmZlck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFt
ZSA9IERyYXdpbmdCdWZmZXJNYWMubW07IHBhdGggPSBncHUvbWFjL0RyYXdpbmdCdWZmZXJNYWMu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ5OUIzQzU3MTI4QzY0MUUwMEU3MjZD
MiAvKiBHcmFwaGljc0xheWVyTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEdyYXBoaWNzTGF5ZXJNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDk5QjND
NTgxMjhDNjQxRTAwRTcyNkMyIC8qIEdyYXBoaWNzTGF5ZXJNYWMubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHcmFwaGljc0xheWVyTWFjLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk0OTlCM0VDMzEyOENDQzQ3MDBFNzI2QzIgLyogUGxhdGZvcm1D
QUxheWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFBsYXRmb3JtQ0FMYXll
ci5oOyBwYXRoID0gY2EvUGxhdGZvcm1DQUxheWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTQ5OUIzRUQ0MTI4Q0QzMTQwMEU3MjZDMiAvKiBHcmFwaGljc0xheWVyQ0EuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gR3JhcGhpY3NMYXllckNBLmNwcDsg
cGF0aCA9IGNhL0dyYXBoaWNzTGF5ZXJDQS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTQ5OUIzRUQ1MTI4Q0QzMTQwMEU3MjZDMiAvKiBHcmFwaGljc0xheWVyQ0EuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gR3JhcGhpY3NMYXllckNBLmg7IHBhdGggPSBjYS9H
cmFwaGljc0xheWVyQ0EuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDk5QjNFREMx
MjhEQjUwMTAwRTcyNkMyIC8qIFBsYXRmb3JtQ0FBbmltYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gUGxhdGZvcm1DQUFuaW1hdGlvbi5oOyBwYXRoID0gY2EvUGxhdGZv
cm1DQUFuaW1hdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OUI2OUU1NTEy
NTRGRUVEMDA3RDU3RUIgLyogTG9vcEJsaW5uQ2xhc3NpZmllci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMb29wQmxpbm5DbGFzc2lmaWVyLmNwcDsgcGF0aCA9IGdw
dS9Mb29wQmxpbm5DbGFzc2lmaWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDlCNjlFNTYxMjU0RkVFRDAwN0Q1N0VCIC8qIExvb3BCbGlubkNsYXNzaWZpZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTG9vcEJsaW5uQ2xhc3NpZmllci5oOyBwYXRoID0g
Z3B1L0xvb3BCbGlubkNsYXNzaWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDlCNjlFNTcxMjU0RkVFRDAwN0Q1N0VCIC8qIExvb3BCbGlubkNvbnN0YW50cy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMb29wQmxpbm5Db25zdGFudHMuaDsgcGF0aCA9IGdw
dS9Mb29wQmxpbm5Db25zdGFudHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEy
NjY3LDYgKzEyNjc1LDE1IEBACiAJCQluYW1lID0gY2FudmFzOwogCQkJc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsKIAkJfTsKKwkJNDk1ODc4MUUxMkE1N0RCQzAwNzIzOEFDIC8qIG1hYyAqLyA9IHsK
KwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJNDk1ODc4MUYxMkE1N0RE
RjAwNzIzOEFDIC8qIFBsYXRmb3JtQ0FBbmltYXRpb25NYWMubW0gKi8sCisJCQkJNDk1ODc4MjAx
MkE1N0RERjAwNzIzOEFDIC8qIFBsYXRmb3JtQ0FMYXllck1hYy5tbSAqLywKKwkJCSk7CisJCQlu
YW1lID0gbWFjOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJNDk4NzcwQzEx
MjQyQzUwRDAwMjIyNkJBIC8qIGdwdSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCkBAIC0xMjcwOCw2ICsxMjcyNSwxOCBAQAogCQkJbmFtZSA9IG1hYzsKIAkJCXNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCTQ5OUIzRUMwMTI4Q0NDMTgwMEU3MjZDMiAv
KiBjYSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJNDk1
ODc4MUUxMkE1N0RCQzAwNzIzOEFDIC8qIG1hYyAqLywKKwkJCQk0OTlCM0VEQzEyOERCNTAxMDBF
NzI2QzIgLyogUGxhdGZvcm1DQUFuaW1hdGlvbi5oICovLAorCQkJCTQ5OUIzRUQ0MTI4Q0QzMTQw
MEU3MjZDMiAvKiBHcmFwaGljc0xheWVyQ0EuY3BwICovLAorCQkJCTQ5OUIzRUQ1MTI4Q0QzMTQw
MEU3MjZDMiAvKiBHcmFwaGljc0xheWVyQ0EuaCAqLywKKwkJCQk0OTlCM0VDMzEyOENDQzQ3MDBF
NzI2QzIgLyogUGxhdGZvcm1DQUxheWVyLmggKi8sCisJCQkpOworCQkJbmFtZSA9IGNhOworCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJNDlFOTExQjIwRUY4NkQyNzAwOUQwQ0FG
IC8qIHRyYW5zZm9ybXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0g
KApAQCAtMTY2NDUsOCArMTY2NzQsNiBAQAogCQkJCUIyQUZGQzdCMEQwMEE1QzEwMDMwMDc0RCAv
KiBHbHlwaFBhZ2VUcmVlTm9kZU1hYy5jcHAgKi8sCiAJCQkJNDlGRkJGMUMxMUM4NTUwRTAwNkE3
MTE4IC8qIEdyYXBoaWNzQ29udGV4dDNETWFjLm1tICovLAogCQkJCUIyNzdCNDAzMEIyMkYzN0Mw
MDA0QkVDNiAvKiBHcmFwaGljc0NvbnRleHRNYWMubW0gKi8sCi0JCQkJNDk5QjNDNTcxMjhDNjQx
RTAwRTcyNkMyIC8qIEdyYXBoaWNzTGF5ZXJNYWMuaCAqLywKLQkJCQk0OTlCM0M1ODEyOEM2NDFF
MDBFNzI2QzIgLyogR3JhcGhpY3NMYXllck1hYy5tbSAqLywKIAkJCQlCMjc1MzU4RDBCMDUzQTY2
MDAyQ0U2NEYgLyogSWNvbk1hYy5tbSAqLywKIAkJCQlCMjc1MzU0RTBCMDUzODE0MDAyQ0U2NEYg
LyogSW1hZ2VNYWMubW0gKi8sCiAJCQkJQjI3NTM1NEYwQjA1MzgxNDAwMkNFNjRGIC8qIEludFBv
aW50TWFjLm1tICovLApAQCAtMTY2NzIsNiArMTY2OTksNyBAQAogCQkJaXNhID0gUEJYR3JvdXA7
CiAJCQljaGlsZHJlbiA9ICgKIAkJCQlCMjc1MzUyOTBCMDUzODE0MDAyQ0U2NEYgLyogY2cgKi8s
CisJCQkJNDk5QjNFQzAxMjhDQ0MxODAwRTcyNkMyIC8qIGNhICovLAogCQkJCUI1MzIwRDY4MTIy
QTI0RTkwMDJEMTQ0MCAvKiBjb2NvYSAqLywKIAkJCQlBNzVFOEI3RjBFMURFMkIwMDA3RjI0ODEg
LyogZmlsdGVycyAqLywKIAkJCQk0OTg3NzBDMTEyNDJDNTBEMDAyMjI2QkEgLyogZ3B1ICovLApA
QCAtMjEzNjAsOCArMjEzODgsMTAgQEAKIAkJCQk5M0YxOTlFRDA4MjQ1RTU5MDAxRTlBQkMgLyog
WFNMVFByb2Nlc3Nvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFCRTUxMkUwQ0Y2QzUxMjAwMkVB
OTU5IC8qIFhTTFRVbmljb2RlU29ydC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdERDREODcwRkRG
NEQ2RTAwRUNGOUE0IC8qIFhTU0F1ZGl0b3IuaCBpbiBIZWFkZXJzICovLAotCQkJCTQ5OUIzQzU5
MTI4QzY0MUUwMEU3MjZDMiAvKiBHcmFwaGljc0xheWVyTWFjLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwODI1MDkzOTEyOEJENEQ4MDBFMkVEOEUgLyogU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQk0OTlCM0VDNTEyOENDQzQ3MDBFNzI2QzIgLyogUGxhdGZvcm1D
QUxheWVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk0OTlCM0VENzEyOENEMzE0MDBFNzI2QzIgLyog
R3JhcGhpY3NMYXllckNBLmggaW4gSGVhZGVycyAqLywKKwkJCQk0OTlCM0VERDEyOERCNTAyMDBF
NzI2QzIgLyogUGxhdGZvcm1DQUFuaW1hdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yMzkzMSw3
ICsyMzk2MSw5IEBACiAJCQkJOTNGMTlCMDUwODI0NUU1OTAwMUU5QUJDIC8qIFhTTFRQcm9jZXNz
b3JMaWJ4c2x0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxQkU1MTJEMENGNkM1MTIwMDJFQTk1
OSAvKiBYU0xUVW5pY29kZVNvcnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTdERDREODYwRkRG
NEQ2RTAwRUNGOUE0IC8qIFhTU0F1ZGl0b3IuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNDk5QjND
NUExMjhDNjQxRTAwRTcyNkMyIC8qIEdyYXBoaWNzTGF5ZXJNYWMubW0gaW4gU291cmNlcyAqLywK
KwkJCQk0OTlCM0VENjEyOENEMzE0MDBFNzI2QzIgLyogR3JhcGhpY3NMYXllckNBLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTQ5NTg3ODIxMTJBNTdEREYwMDcyMzhBQyAvKiBQbGF0Zm9ybUNBQW5p
bWF0aW9uTWFjLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNDk1ODc4MjIxMkE1N0RERjAwNzIzOEFD
IC8qIFBsYXRmb3JtQ0FMYXllck1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgJKHJldmlzaW9uIDcxODUwKQorKysgV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ5LDIzICs0OSwxOSBAQAogQGNsYXNzIFdlYkxheWVyOwogQGNsYXNzIENBTGF5ZXI7CiB0eXBl
ZGVmIENBTGF5ZXIgUGxhdGZvcm1MYXllcjsKLXR5cGVkZWYgQ0FMYXllciogTmF0aXZlTGF5ZXI7
CiAjZWxzZQogdHlwZWRlZiB2b2lkKiBQbGF0Zm9ybUxheWVyOwotdHlwZWRlZiB2b2lkKiBOYXRp
dmVMYXllcjsKICNlbmRpZgogI2VsaWYgUExBVEZPUk0oV0lOKQogbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgV0tDQUNGTGF5ZXI7CiB0eXBlZGVmIFdLQ0FDRkxheWVyIFBsYXRmb3JtTGF5ZXI7
Ci10eXBlZGVmIHZvaWQqIE5hdGl2ZUxheWVyOwogfQogI2VsaWYgUExBVEZPUk0oUVQpCiAjaWYg
VVNFKFRFWFRVUkVfTUFQUEVSKQogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgVGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXI7CiB0eXBlZGVmIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyIFBs
YXRmb3JtTGF5ZXI7Ci10eXBlZGVmIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyKiBOYXRpdmVM
YXllcjsKIH07CiAjZWxzZQogUVRfQkVHSU5fTkFNRVNQQUNFCkBAIC03MywxOCArNjksMTUgQEAg
Y2xhc3MgUUdyYXBoaWNzT2JqZWN0OwogUVRfRU5EX05BTUVTUEFDRQogbmFtZXNwYWNlIFdlYkNv
cmUgewogdHlwZWRlZiBRR3JhcGhpY3NPYmplY3QgUGxhdGZvcm1MYXllcjsKLXR5cGVkZWYgUUdy
YXBoaWNzT2JqZWN0KiBOYXRpdmVMYXllcjsKIH0KICNlbmRpZgogI2VsaWYgUExBVEZPUk0oQ0hS
T01JVU0pCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBMYXllckNocm9taXVtOwogdHlwZWRl
ZiBMYXllckNocm9taXVtIFBsYXRmb3JtTGF5ZXI7Ci10eXBlZGVmIHZvaWQqIE5hdGl2ZUxheWVy
OwogfQogI2Vsc2UKIHR5cGVkZWYgdm9pZCogUGxhdGZvcm1MYXllcjsKLXR5cGVkZWYgdm9pZCog
TmF0aXZlTGF5ZXI7CiAjZW5kaWYKIAogZW51bSBMYXllclRyZWVBc1RleHRCZWhhdmlvckZsYWdz
IHsKQEAgLTIwMCw5ICsxOTMsNiBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBuYW1lKCkg
Y29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CiAgICAgdmlydHVhbCB2b2lkIHNldE5hbWUoY29uc3Qg
U3RyaW5nJiBuYW1lKSB7IG1fbmFtZSA9IG5hbWU7IH0KIAotICAgIC8vIEZvciBob3N0aW5nIHRo
aXMgR3JhcGhpY3NMYXllciBpbiBhIG5hdGl2ZSBsYXllciBoaWVyYXJjaHkuCi0gICAgdmlydHVh
bCBOYXRpdmVMYXllciBuYXRpdmVMYXllcigpIGNvbnN0IHsgcmV0dXJuIDA7IH0KLQogICAgIEdy
YXBoaWNzTGF5ZXIqIHBhcmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyZW50OyB9OwogICAgIHZv
aWQgc2V0UGFyZW50KEdyYXBoaWNzTGF5ZXIqIGxheWVyKSB7IG1fcGFyZW50ID0gbGF5ZXI7IH0g
Ly8gSW50ZXJuYWwgdXNlIG9ubHkuCiAgICAgCkBAIC0zMjMsNiArMzEzLDcgQEAgcHVibGljOgog
ICAgIC8vIENhbGxiYWNrIGZyb20gdGhlIHVuZGVybHlpbmcgZ3JhcGhpY3Mgc3lzdGVtIHdoZW4g
dGhlIGxheWVyIGhhcyBiZWVuIGRpc3BsYXllZAogICAgIHZpcnR1YWwgdm9pZCBkaWREaXNwbGF5
KFBsYXRmb3JtTGF5ZXIqKSB7IH0KICAgICAKKyAgICAvLyBGb3IgaG9zdGluZyB0aGlzIEdyYXBo
aWNzTGF5ZXIgaW4gYSBuYXRpdmUgbGF5ZXIgaGllcmFyY2h5LgogICAgIHZpcnR1YWwgUGxhdGZv
cm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IHsgcmV0dXJuIDA7IH0KICAgICAKICAgICB2
b2lkIGR1bXBMYXllcihUZXh0U3RyZWFtJiwgaW50IGluZGVudCA9IDAsIExheWVyVHJlZUFzVGV4
dEJlaGF2aW9yID0gTGF5ZXJUcmVlQXNUZXh0QmVoYXZpb3JOb3JtYWwpIGNvbnN0OwpJbmRleDog
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAko
cmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXll
ckNBLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMzExIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisKKyNpbmNsdWRlICJHcmFw
aGljc0xheWVyQ0EuaCIKKworI2luY2x1ZGUgIkFuaW1hdGlvbi5oIgorI2luY2x1ZGUgIkZsb2F0
Q29udmVyc2lvbi5oIgorI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgorI2luY2x1ZGUgIlBsYXRmb3Jt
Q0FMYXllci5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSAiUm90YXRl
VHJhbnNmb3JtT3BlcmF0aW9uLmgiCisjaW5jbHVkZSAiU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24u
aCIKKyNpbmNsdWRlICJTeXN0ZW1UaW1lLmgiCisjaW5jbHVkZSAiVHJhbnNsYXRlVHJhbnNmb3Jt
T3BlcmF0aW9uLmgiCisjaW5jbHVkZSA8UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+CisjaW5jbHVk
ZSA8bGltaXRzLmg+CisjaW5jbHVkZSA8b2JqYy9vYmpjLWF1dG8uaD4KKyNpbmNsdWRlIDx3dGYv
Q3VycmVudFRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgorCit1c2luZyBuYW1lc3BhY2Ugc3RkOworCisj
ZGVmaW5lIEhBVkVfTU9ERVJOX1FVQVJUWkNPUkUgKCFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VS
KSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSkKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCisvLyBUaGUgdGhyZXNob2xkIHdpZHRoIG9yIGhlaWdodCBhYm92ZSB3aGljaCBhIHRpbGVk
IGxheWVyIHdpbGwgYmUgdXNlZC4gVGhpcyBzaG91bGQgYmUKKy8vIGxhcmdlIGVub3VnaCB0byBh
dm9pZCB0aWxlZCBsYXllcnMgZm9yIG1vc3QgR3JhcGhpY3NMYXllcnMsIGJ1dCBsZXNzIHRoYW4g
dGhlIE9wZW5HTAorLy8gdGV4dHVyZSBzaXplIGxpbWl0IG9uIGFsbCBzdXBwb3J0ZWQgaGFyZHdh
cmUuCitzdGF0aWMgY29uc3QgaW50IGNNYXhQaXhlbERpbWVuc2lvbiA9IDIwMDA7CisKKy8vIFRo
ZSB3aWR0aCBhbmQgaGVpZ2h0IG9mIGEgc2luZ2xlIHRpbGUgaW4gYSB0aWxlZCBsYXllci4gU2hv
dWxkIGJlIGxhcmdlIGVub3VnaCB0bworLy8gYXZvaWQgbG90cyBvZiBzbWFsbCB0aWxlcyAoYW5k
IHRoZXJlZm9yZSBsb3RzIG9mIGRyYXdpbmcgY2FsbGJhY2tzKSwgYnV0IHNtYWxsIGVub3VnaAor
Ly8gdG8ga2VlcCB0aGUgb3ZlcmFsbCB0aWxlIGNvc3QgbG93Lgorc3RhdGljIGNvbnN0IGludCBj
VGlsZWRMYXllclRpbGVTaXplID0gNTEyOworCisvLyBJZiB3ZSBzZW5kIGEgZHVyYXRpb24gb2Yg
MCB0byBDQSwgdGhlbiBpdCB3aWxsIHVzZSB0aGUgZGVmYXVsdCBkdXJhdGlvbgorLy8gb2YgMjUw
bXMuIFNvIHNlbmQgYSB2ZXJ5IHNtYWxsIHZhbHVlIGluc3RlYWQuCitzdGF0aWMgY29uc3QgZmxv
YXQgY0FuaW1hdGlvbkFsbW9zdFplcm9EdXJhdGlvbiA9IDFlLTNmOworCisvLyBDQUN1cnJlbnRN
ZWRpYVRpbWUoKSBpcyBhIHRpbWUgc2luY2UgYm9vdC4gVGhlc2UgbWV0aG9kcyBjb252ZXJ0IGJl
dHdlZW4gdGhhdCBhbmQKKy8vIFdlYkNvcmUgdGltZSwgd2hpY2ggaXMgc3lzdGVtIHRpbWUgKFVU
QykuCitzdGF0aWMgQ0ZUaW1lSW50ZXJ2YWwgY3VycmVudFRpbWVUb01lZGlhVGltZShkb3VibGUg
dCkKK3sKKyAgICByZXR1cm4gQ0FDdXJyZW50TWVkaWFUaW1lKCkgKyB0IC0gV1RGOjpjdXJyZW50
VGltZSgpOworfQorCitzdGF0aWMgYm9vbCBpc1RyYW5zZm9ybVR5cGVUcmFuc2Zvcm1hdGlvbk1h
dHJpeChUcmFuc2Zvcm1PcGVyYXRpb246Ok9wZXJhdGlvblR5cGUgdHJhbnNmb3JtVHlwZSkKK3sK
KyAgICBzd2l0Y2ggKHRyYW5zZm9ybVR5cGUpIHsKKyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlv
bjo6U0tFV19YOgorICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpTS0VXX1k6CisgICAgY2Fz
ZSBUcmFuc2Zvcm1PcGVyYXRpb246OlNLRVc6CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246
Ok1BVFJJWDoKKyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRFXzNEOgorICAgIGNh
c2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpNQVRSSVhfM0Q6CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVy
YXRpb246OlBFUlNQRUNUSVZFOgorICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpJREVOVElU
WToKKyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6Tk9ORToKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworc3Rh
dGljIGJvb2wgaXNUcmFuc2Zvcm1UeXBlRmxvYXRQb2ludDNEKFRyYW5zZm9ybU9wZXJhdGlvbjo6
T3BlcmF0aW9uVHlwZSB0cmFuc2Zvcm1UeXBlKQoreworICAgIHN3aXRjaCAodHJhbnNmb3JtVHlw
ZSkgeworICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpTQ0FMRToKKyAgICBjYXNlIFRyYW5z
Zm9ybU9wZXJhdGlvbjo6U0NBTEVfM0Q6CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlRS
QU5TTEFURToKKyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFXzNEOgorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorfQorCitzdGF0aWMgYm9vbCBpc1RyYW5zZm9ybVR5cGVOdW1iZXIoVHJhbnNmb3JtT3Bl
cmF0aW9uOjpPcGVyYXRpb25UeXBlIHRyYW5zZm9ybVR5cGUpCit7CisgICAgcmV0dXJuICFpc1Ry
YW5zZm9ybVR5cGVUcmFuc2Zvcm1hdGlvbk1hdHJpeCh0cmFuc2Zvcm1UeXBlKSAmJiAhaXNUcmFu
c2Zvcm1UeXBlRmxvYXRQb2ludDNEKHRyYW5zZm9ybVR5cGUpOworfQorCitzdGF0aWMgdm9pZCBn
ZXRUcmFuc2Zvcm1GdW5jdGlvblZhbHVlKGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbiogdHJhbnNm
b3JtT3AsIFRyYW5zZm9ybU9wZXJhdGlvbjo6T3BlcmF0aW9uVHlwZSB0cmFuc2Zvcm1UeXBlLCBj
b25zdCBJbnRTaXplJiBzaXplLCBmbG9hdCYgdmFsdWUpCit7CisgICAgc3dpdGNoICh0cmFuc2Zv
cm1UeXBlKSB7CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlJPVEFURToKKyAgICBjYXNl
IFRyYW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRFX1g6CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRp
b246OlJPVEFURV9ZOgorICAgICAgICB2YWx1ZSA9IHRyYW5zZm9ybU9wID8gZGVnMnJhZChzdGF0
aWNfY2FzdDxjb25zdCBSb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24qPih0cmFuc2Zvcm1PcCktPmFu
Z2xlKCkpIDogMDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246
OlNDQUxFX1g6CisgICAgICAgIHZhbHVlID0gdHJhbnNmb3JtT3AgPyBzdGF0aWNfY2FzdDxjb25z
dCBTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbio+KHRyYW5zZm9ybU9wKS0+eCgpIDogMTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlNDQUxFX1k6CisgICAgICAg
IHZhbHVlID0gdHJhbnNmb3JtT3AgPyBzdGF0aWNfY2FzdDxjb25zdCBTY2FsZVRyYW5zZm9ybU9w
ZXJhdGlvbio+KHRyYW5zZm9ybU9wKS0+eSgpIDogMTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBUcmFuc2Zvcm1PcGVyYXRpb246OlNDQUxFX1o6CisgICAgICAgIHZhbHVlID0gdHJhbnNmb3Jt
T3AgPyBzdGF0aWNfY2FzdDxjb25zdCBTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbio+KHRyYW5zZm9y
bU9wKS0+eigpIDogMTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRp
b246OlRSQU5TTEFURV9YOgorICAgICAgICB2YWx1ZSA9IHRyYW5zZm9ybU9wID8gc3RhdGljX2Nh
c3Q8Y29uc3QgVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uKj4odHJhbnNmb3JtT3ApLT54KHNp
emUpIDogMDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlRS
QU5TTEFURV9ZOgorICAgICAgICB2YWx1ZSA9IHRyYW5zZm9ybU9wID8gc3RhdGljX2Nhc3Q8Y29u
c3QgVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uKj4odHJhbnNmb3JtT3ApLT55KHNpemUpIDog
MDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFU
RV9aOgorICAgICAgICB2YWx1ZSA9IHRyYW5zZm9ybU9wID8gc3RhdGljX2Nhc3Q8Y29uc3QgVHJh
bnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uKj4odHJhbnNmb3JtT3ApLT56KHNpemUpIDogMDsKKyAg
ICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCitz
dGF0aWMgdm9pZCBnZXRUcmFuc2Zvcm1GdW5jdGlvblZhbHVlKGNvbnN0IFRyYW5zZm9ybU9wZXJh
dGlvbiogdHJhbnNmb3JtT3AsIFRyYW5zZm9ybU9wZXJhdGlvbjo6T3BlcmF0aW9uVHlwZSB0cmFu
c2Zvcm1UeXBlLCBjb25zdCBJbnRTaXplJiBzaXplLCBGbG9hdFBvaW50M0QmIHZhbHVlKQorewor
ICAgIHN3aXRjaCAodHJhbnNmb3JtVHlwZSkgeworICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9u
OjpTQ0FMRToKKyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0NBTEVfM0Q6CisgICAgICAg
IHZhbHVlLnNldFgodHJhbnNmb3JtT3AgPyBzdGF0aWNfY2FzdDxjb25zdCBTY2FsZVRyYW5zZm9y
bU9wZXJhdGlvbio+KHRyYW5zZm9ybU9wKS0+eCgpIDogMSk7CisgICAgICAgIHZhbHVlLnNldFko
dHJhbnNmb3JtT3AgPyBzdGF0aWNfY2FzdDxjb25zdCBTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbio+
KHRyYW5zZm9ybU9wKS0+eSgpIDogMSk7CisgICAgICAgIHZhbHVlLnNldFoodHJhbnNmb3JtT3Ag
PyBzdGF0aWNfY2FzdDxjb25zdCBTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbio+KHRyYW5zZm9ybU9w
KS0+eigpIDogMSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9u
OjpUUkFOU0xBVEU6CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURV8zRDoK
KyAgICAgICAgdmFsdWUuc2V0WCh0cmFuc2Zvcm1PcCA/IHN0YXRpY19jYXN0PGNvbnN0IFRyYW5z
bGF0ZVRyYW5zZm9ybU9wZXJhdGlvbio+KHRyYW5zZm9ybU9wKS0+eChzaXplKSA6IDApOworICAg
ICAgICB2YWx1ZS5zZXRZKHRyYW5zZm9ybU9wID8gc3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNsYXRl
VHJhbnNmb3JtT3BlcmF0aW9uKj4odHJhbnNmb3JtT3ApLT55KHNpemUpIDogMCk7CisgICAgICAg
IHZhbHVlLnNldFoodHJhbnNmb3JtT3AgPyBzdGF0aWNfY2FzdDxjb25zdCBUcmFuc2xhdGVUcmFu
c2Zvcm1PcGVyYXRpb24qPih0cmFuc2Zvcm1PcCktPnooc2l6ZSkgOiAwKTsKKyAgICAgICAgYnJl
YWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCitzdGF0aWMgdm9p
ZCBnZXRUcmFuc2Zvcm1GdW5jdGlvblZhbHVlKGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbiogdHJh
bnNmb3JtT3AsIFRyYW5zZm9ybU9wZXJhdGlvbjo6T3BlcmF0aW9uVHlwZSB0cmFuc2Zvcm1UeXBl
LCBjb25zdCBJbnRTaXplJiBzaXplLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdmFsdWUpCit7Cisg
ICAgc3dpdGNoICh0cmFuc2Zvcm1UeXBlKSB7CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246
OlNLRVdfWDoKKyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0tFV19ZOgorICAgIGNhc2Ug
VHJhbnNmb3JtT3BlcmF0aW9uOjpTS0VXOgorICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpN
QVRSSVg6CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlJPVEFURV8zRDoKKyAgICBjYXNl
IFRyYW5zZm9ybU9wZXJhdGlvbjo6TUFUUklYXzNEOgorICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0
aW9uOjpQRVJTUEVDVElWRToKKyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6SURFTlRJVFk6
CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246Ok5PTkU6CisgICAgICAgIGlmICh0cmFuc2Zv
cm1PcCkKKyAgICAgICAgICAgIHRyYW5zZm9ybU9wLT5hcHBseSh2YWx1ZSwgc2l6ZSk7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIHZhbHVlLm1ha2VJZGVudGl0eSgpOworICAgICAgICBicmVh
azsKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9Cit9CisKKyNpZiBIQVZFX01P
REVSTl9RVUFSVFpDT1JFCitzdGF0aWMgUGxhdGZvcm1DQUFuaW1hdGlvbjo6VmFsdWVGdW5jdGlv
blR5cGUgZ2V0VmFsdWVGdW5jdGlvbk5hbWVGb3JUcmFuc2Zvcm1PcGVyYXRpb24oVHJhbnNmb3Jt
T3BlcmF0aW9uOjpPcGVyYXRpb25UeXBlIHRyYW5zZm9ybVR5cGUpCit7CisgICAgLy8gVXNlIGxp
dGVyYWwgc3RyaW5ncyB0byBhdm9pZCBsaW5rLXRpbWUgZGVwZW5kZW5jeSBvbiB0aG9zZSBzeW1i
b2xzLgorICAgIHN3aXRjaCAodHJhbnNmb3JtVHlwZSkgeworICAgIGNhc2UgVHJhbnNmb3JtT3Bl
cmF0aW9uOjpST1RBVEVfWDoKKyAgICAgICAgcmV0dXJuIFBsYXRmb3JtQ0FBbmltYXRpb246OlJv
dGF0ZVg7CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlJPVEFURV9ZOgorICAgICAgICBy
ZXR1cm4gUGxhdGZvcm1DQUFuaW1hdGlvbjo6Um90YXRlWTsKKyAgICBjYXNlIFRyYW5zZm9ybU9w
ZXJhdGlvbjo6Uk9UQVRFOgorICAgICAgICByZXR1cm4gUGxhdGZvcm1DQUFuaW1hdGlvbjo6Um90
YXRlWjsKKyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0NBTEVfWDoKKyAgICAgICAgcmV0
dXJuIFBsYXRmb3JtQ0FBbmltYXRpb246OlNjYWxlWDsKKyAgICBjYXNlIFRyYW5zZm9ybU9wZXJh
dGlvbjo6U0NBTEVfWToKKyAgICAgICAgcmV0dXJuIFBsYXRmb3JtQ0FBbmltYXRpb246OlNjYWxl
WTsKKyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0NBTEVfWjoKKyAgICAgICAgcmV0dXJu
IFBsYXRmb3JtQ0FBbmltYXRpb246OlNjYWxlWjsKKyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlv
bjo6VFJBTlNMQVRFX1g6CisgICAgICAgIHJldHVybiBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpUcmFu
c2xhdGVYOworICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfWToKKyAgICAg
ICAgcmV0dXJuIFBsYXRmb3JtQ0FBbmltYXRpb246OlRyYW5zbGF0ZVk7CisgICAgY2FzZSBUcmFu
c2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURV9aOgorICAgICAgICByZXR1cm4gUGxhdGZvcm1DQUFu
aW1hdGlvbjo6VHJhbnNsYXRlWjsKKyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0NBTEU6
CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlNDQUxFXzNEOgorICAgICAgICByZXR1cm4g
UGxhdGZvcm1DQUFuaW1hdGlvbjo6U2NhbGU7CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246
OlRSQU5TTEFURToKKyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFXzNEOgor
ICAgICAgICByZXR1cm4gUGxhdGZvcm1DQUFuaW1hdGlvbjo6VHJhbnNsYXRlOworICAgIGRlZmF1
bHQ6CisgICAgICAgIHJldHVybiBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpOb1ZhbHVlRnVuY3Rpb247
CisgICAgfQorfQorI2VuZGlmCisKK3N0YXRpYyBTdHJpbmcgcHJvcGVydHlJZFRvU3RyaW5nKEFu
aW1hdGVkUHJvcGVydHlJRCBwcm9wZXJ0eSkKK3sKKyAgICBzd2l0Y2ggKHByb3BlcnR5KSB7Cisg
ICAgY2FzZSBBbmltYXRlZFByb3BlcnR5V2Via2l0VHJhbnNmb3JtOgorICAgICAgICByZXR1cm4g
InRyYW5zZm9ybSI7CisgICAgY2FzZSBBbmltYXRlZFByb3BlcnR5T3BhY2l0eToKKyAgICAgICAg
cmV0dXJuICJvcGFjaXR5IjsKKyAgICBjYXNlIEFuaW1hdGVkUHJvcGVydHlCYWNrZ3JvdW5kQ29s
b3I6CisgICAgICAgIHJldHVybiAiYmFja2dyb3VuZENvbG9yIjsKKyAgICBjYXNlIEFuaW1hdGVk
UHJvcGVydHlJbnZhbGlkOgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9Cisg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuICIiOworfQorCitzdGF0aWMgU3Ry
aW5nIGFuaW1hdGlvbklkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBBbmlt
YXRlZFByb3BlcnR5SUQgcHJvcGVydHksIGludCBpbmRleCkKK3sKKyAgICByZXR1cm4gbWFrZVN0
cmluZyhhbmltYXRpb25OYW1lLCAnXycsIFN0cmluZzo6bnVtYmVyKHByb3BlcnR5KSwgJ18nLCBT
dHJpbmc6Om51bWJlcihpbmRleCkpOworfQorCitzdGF0aWMgYm9vbCBhbmltYXRpb25IYXNTdGVw
c1RpbWluZ0Z1bmN0aW9uKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3QsIGNvbnN0
IEFuaW1hdGlvbiogYW5pbSkKK3sKKyAgICBpZiAoYW5pbS0+dGltaW5nRnVuY3Rpb24oKS0+aXNT
dGVwc1RpbWluZ0Z1bmN0aW9uKCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIAorICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCB2YWx1ZUxpc3Quc2l6ZSgpOyArK2kpIHsKKyAgICAgICAg
Y29uc3QgVGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0aW9uID0gdmFsdWVMaXN0LmF0KGkpLT50
aW1pbmdGdW5jdGlvbigpOworICAgICAgICBpZiAodGltaW5nRnVuY3Rpb24gJiYgdGltaW5nRnVu
Y3Rpb24tPmlzU3RlcHNUaW1pbmdGdW5jdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCitQYXNzT3duUHRyPEdyYXBoaWNzTGF5
ZXI+IEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZShHcmFwaGljc0xheWVyQ2xpZW50KiBjbGllbnQpCit7
CisgICAgcmV0dXJuIG5ldyBHcmFwaGljc0xheWVyQ0EoY2xpZW50KTsKK30KKworR3JhcGhpY3NM
YXllckNBOjpHcmFwaGljc0xheWVyQ0EoR3JhcGhpY3NMYXllckNsaWVudCogY2xpZW50KQorICAg
IDogR3JhcGhpY3NMYXllcihjbGllbnQpCisgICAgLCBtX2NvbnRlbnRzTGF5ZXJQdXJwb3NlKE5v
Q29udGVudHNMYXllcikKKyAgICAsIG1fY29udGVudHNMYXllckhhc0JhY2tncm91bmRDb2xvcihm
YWxzZSkKKyAgICAsIG1fdW5jb21taXR0ZWRDaGFuZ2VzKE5vQ2hhbmdlKQoreworICAgIG1fbGF5
ZXIgPSBQbGF0Zm9ybUNBTGF5ZXI6OmNyZWF0ZShQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVdl
YkxheWVyLCB0aGlzKTsKKworI2lmICFIQVZFX01PREVSTl9RVUFSVFpDT1JFCisgICAgc2V0Q29u
dGVudHNPcmllbnRhdGlvbihkZWZhdWx0Q29udGVudHNPcmllbnRhdGlvbigpKTsKKyNlbmRpZgor
CisgICAgdXBkYXRlRGVidWdJbmRpY2F0b3JzKCk7Cit9CisKK0dyYXBoaWNzTGF5ZXJDQTo6fkdy
YXBoaWNzTGF5ZXJDQSgpCit7CisgICAgLy8gV2UgcmVsZWFzZSBvdXIgcmVmZXJlbmNlcyB0byB0
aGUgUGxhdGZvcm1DQUxheWVycyBoZXJlLCBidXQgZG8gbm90IGFjdGl2ZWx5IHVucGFyZW50IHRo
ZW0sCisgICAgLy8gc2luY2UgdGhhdCB3aWxsIGNhdXNlIGEgY29tbWl0IGFuZCBicmVhayBvdXIg
YmF0Y2hlZCBjb21taXQgbW9kZWwuIFRoZSBsYXllcnMgd2lsbAorICAgIC8vIGdldCByZWxlYXNl
ZCB3aGVuIHRoZSByb290bW9zdCBtb2RpZmllZCBHcmFwaGljc0xheWVyQ0EgcmVidWlsZHMgaXRz
IGNoaWxkIGxheWVycy4KKyAgICAKKyAgICAvLyBDbGVhbiB1cCB0aGUgbGF5ZXIuCisgICAgaWYg
KG1fbGF5ZXIpCisgICAgICAgIG1fbGF5ZXItPnNldE93bmVyKDApOworICAgIAorICAgIGlmICht
X2NvbnRlbnRzTGF5ZXIpCisgICAgICAgIG1fY29udGVudHNMYXllci0+c2V0T3duZXIoMCk7Cisg
ICAgICAgIAorICAgIGlmIChtX3N0cnVjdHVyYWxMYXllcikKKyAgICAgICAgbV9zdHJ1Y3R1cmFs
TGF5ZXItPnNldE93bmVyKDApOworICAgIAorICAgIC8vIFJlbGVhc2UgdGhlIGNsb25lIGxheWVy
cyBpbnNpZGUgdGhlIGV4Y2VwdGlvbi1oYW5kbGluZyBibG9jay4KKyAgICByZW1vdmVDbG9uZUxh
eWVycygpOworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0TmFtZShjb25zdCBTdHJpbmcm
IG5hbWUpCit7CisgICAgU3RyaW5nIGxvbmdOYW1lID0gU3RyaW5nOjpmb3JtYXQoIkNBTGF5ZXIo
JXApIEdyYXBoaWNzTGF5ZXIoJXApICIsIG1fbGF5ZXIuZ2V0KCksIHRoaXMpICsgbmFtZTsKKyAg
ICBHcmFwaGljc0xheWVyOjpzZXROYW1lKGxvbmdOYW1lKTsKKyAgICBub3RlTGF5ZXJQcm9wZXJ0
eUNoYW5nZWQoTmFtZUNoYW5nZWQpOworfQorCitQbGF0Zm9ybUxheWVyKiBHcmFwaGljc0xheWVy
Q0E6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAoreworICAgIHJldHVybiBwcmltYXJ5TGF5ZXIoKS0+
cGxhdGZvcm1MYXllcigpOworfQorCitib29sIEdyYXBoaWNzTGF5ZXJDQTo6c2V0Q2hpbGRyZW4o
Y29uc3QgVmVjdG9yPEdyYXBoaWNzTGF5ZXIqPiYgY2hpbGRyZW4pCit7CisgICAgYm9vbCBjaGls
ZHJlbkNoYW5nZWQgPSBHcmFwaGljc0xheWVyOjpzZXRDaGlsZHJlbihjaGlsZHJlbik7CisgICAg
aWYgKGNoaWxkcmVuQ2hhbmdlZCkKKyAgICAgICAgbm90ZVN1YmxheWVyc0NoYW5nZWQoKTsKKyAg
ICAKKyAgICByZXR1cm4gY2hpbGRyZW5DaGFuZ2VkOworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJD
QTo6YWRkQ2hpbGQoR3JhcGhpY3NMYXllciogY2hpbGRMYXllcikKK3sKKyAgICBHcmFwaGljc0xh
eWVyOjphZGRDaGlsZChjaGlsZExheWVyKTsKKyAgICBub3RlU3VibGF5ZXJzQ2hhbmdlZCgpOwor
fQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6YWRkQ2hpbGRBdEluZGV4KEdyYXBoaWNzTGF5ZXIq
IGNoaWxkTGF5ZXIsIGludCBpbmRleCkKK3sKKyAgICBHcmFwaGljc0xheWVyOjphZGRDaGlsZEF0
SW5kZXgoY2hpbGRMYXllciwgaW5kZXgpOworICAgIG5vdGVTdWJsYXllcnNDaGFuZ2VkKCk7Cit9
CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjphZGRDaGlsZEJlbG93KEdyYXBoaWNzTGF5ZXIqIGNo
aWxkTGF5ZXIsIEdyYXBoaWNzTGF5ZXIqIHNpYmxpbmcpCit7CisgICAgR3JhcGhpY3NMYXllcjo6
YWRkQ2hpbGRCZWxvdyhjaGlsZExheWVyLCBzaWJsaW5nKTsKKyAgICBub3RlU3VibGF5ZXJzQ2hh
bmdlZCgpOworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6YWRkQ2hpbGRBYm92ZShHcmFwaGlj
c0xheWVyKiBjaGlsZExheWVyLCBHcmFwaGljc0xheWVyKiBzaWJsaW5nKQoreworICAgIEdyYXBo
aWNzTGF5ZXI6OmFkZENoaWxkQWJvdmUoY2hpbGRMYXllciwgc2libGluZyk7CisgICAgbm90ZVN1
YmxheWVyc0NoYW5nZWQoKTsKK30KKworYm9vbCBHcmFwaGljc0xheWVyQ0E6OnJlcGxhY2VDaGls
ZChHcmFwaGljc0xheWVyKiBvbGRDaGlsZCwgR3JhcGhpY3NMYXllciogbmV3Q2hpbGQpCit7Cisg
ICAgaWYgKEdyYXBoaWNzTGF5ZXI6OnJlcGxhY2VDaGlsZChvbGRDaGlsZCwgbmV3Q2hpbGQpKSB7
CisgICAgICAgIG5vdGVTdWJsYXllcnNDaGFuZ2VkKCk7CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpyZW1v
dmVGcm9tUGFyZW50KCkKK3sKKyAgICBpZiAobV9wYXJlbnQpCisgICAgICAgIHN0YXRpY19jYXN0
PEdyYXBoaWNzTGF5ZXJDQSo+KG1fcGFyZW50KS0+bm90ZVN1YmxheWVyc0NoYW5nZWQoKTsKKyAg
ICBHcmFwaGljc0xheWVyOjpyZW1vdmVGcm9tUGFyZW50KCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NM
YXllckNBOjpzZXRNYXNrTGF5ZXIoR3JhcGhpY3NMYXllciogbGF5ZXIpCit7CisgICAgaWYgKGxh
eWVyID09IG1fbWFza0xheWVyKQorICAgICAgICByZXR1cm47CisKKyAgICBHcmFwaGljc0xheWVy
OjpzZXRNYXNrTGF5ZXIobGF5ZXIpOworICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChNYXNr
TGF5ZXJDaGFuZ2VkKTsKKworICAgIHByb3BhZ2F0ZUxheWVyQ2hhbmdlVG9SZXBsaWNhcygpOwor
ICAgIAorICAgIGlmIChtX3JlcGxpY2F0ZWRMYXllcikKKyAgICAgICAgc3RhdGljX2Nhc3Q8R3Jh
cGhpY3NMYXllckNBKj4obV9yZXBsaWNhdGVkTGF5ZXIpLT5wcm9wYWdhdGVMYXllckNoYW5nZVRv
UmVwbGljYXMoKTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldFJlcGxpY2F0ZWRMYXll
cihHcmFwaGljc0xheWVyKiBsYXllcikKK3sKKyAgICBpZiAobGF5ZXIgPT0gbV9yZXBsaWNhdGVk
TGF5ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIEdyYXBoaWNzTGF5ZXI6OnNldFJlcGxpY2F0
ZWRMYXllcihsYXllcik7CisgICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKFJlcGxpY2F0ZWRM
YXllckNoYW5nZWQpOworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0UmVwbGljYXRlZEJ5
TGF5ZXIoR3JhcGhpY3NMYXllciogbGF5ZXIpCit7CisgICAgaWYgKGxheWVyID09IG1fcmVwbGlj
YUxheWVyKQorICAgICAgICByZXR1cm47CisKKyAgICBHcmFwaGljc0xheWVyOjpzZXRSZXBsaWNh
dGVkQnlMYXllcihsYXllcik7CisgICAgbm90ZVN1YmxheWVyc0NoYW5nZWQoKTsKKyAgICBub3Rl
TGF5ZXJQcm9wZXJ0eUNoYW5nZWQoUmVwbGljYXRlZExheWVyQ2hhbmdlZCk7Cit9CisKK3ZvaWQg
R3JhcGhpY3NMYXllckNBOjpzZXRQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50JiBwb2ludCkKK3sK
KyAgICBpZiAocG9pbnQgPT0gbV9wb3NpdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgR3Jh
cGhpY3NMYXllcjo6c2V0UG9zaXRpb24ocG9pbnQpOworICAgIG5vdGVMYXllclByb3BlcnR5Q2hh
bmdlZChQb3NpdGlvbkNoYW5nZWQpOworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0QW5j
aG9yUG9pbnQoY29uc3QgRmxvYXRQb2ludDNEJiBwb2ludCkKK3sKKyAgICBpZiAocG9pbnQgPT0g
bV9hbmNob3JQb2ludCkKKyAgICAgICAgcmV0dXJuOworCisgICAgR3JhcGhpY3NMYXllcjo6c2V0
QW5jaG9yUG9pbnQocG9pbnQpOworICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChBbmNob3JQ
b2ludENoYW5nZWQpOworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0U2l6ZShjb25zdCBG
bG9hdFNpemUmIHNpemUpCit7CisgICAgaWYgKHNpemUgPT0gbV9zaXplKQorICAgICAgICByZXR1
cm47CisKKyAgICBHcmFwaGljc0xheWVyOjpzZXRTaXplKHNpemUpOworICAgIG5vdGVMYXllclBy
b3BlcnR5Q2hhbmdlZChTaXplQ2hhbmdlZCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpz
ZXRUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHQpCit7CisgICAgaWYgKHQg
PT0gbV90cmFuc2Zvcm0pCisgICAgICAgIHJldHVybjsKKworICAgIEdyYXBoaWNzTGF5ZXI6OnNl
dFRyYW5zZm9ybSh0KTsKKyAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoVHJhbnNmb3JtQ2hh
bmdlZCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRDaGlsZHJlblRyYW5zZm9ybShj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdCkKK3sKKyAgICBpZiAodCA9PSBtX2NoaWxkcmVu
VHJhbnNmb3JtKQorICAgICAgICByZXR1cm47CisKKyAgICBHcmFwaGljc0xheWVyOjpzZXRDaGls
ZHJlblRyYW5zZm9ybSh0KTsKKyAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoQ2hpbGRyZW5U
cmFuc2Zvcm1DaGFuZ2VkKTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6Om1vdmVPckNvcHlM
YXllckFuaW1hdGlvbihNb3ZlT3JDb3B5IG9wZXJhdGlvbiwgY29uc3QgU3RyaW5nJiBhbmltYXRp
b25JZGVudGlmaWVyLCBQbGF0Zm9ybUNBTGF5ZXIgKmZyb21MYXllciwgUGxhdGZvcm1DQUxheWVy
ICp0b0xheWVyKQoreworICAgIFJlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBhbmltID0gZnJv
bUxheWVyLT5hbmltYXRpb25Gb3JLZXkoYW5pbWF0aW9uSWRlbnRpZmllcik7CisgICAgaWYgKCFh
bmltKQorICAgICAgICByZXR1cm47CisKKyAgICBzd2l0Y2ggKG9wZXJhdGlvbikgeworICAgIGNh
c2UgTW92ZToKKyAgICAgICAgZnJvbUxheWVyLT5yZW1vdmVBbmltYXRpb25Gb3JLZXkoYW5pbWF0
aW9uSWRlbnRpZmllcik7CisgICAgICAgIHRvTGF5ZXItPmFkZEFuaW1hdGlvbkZvcktleShhbmlt
YXRpb25JZGVudGlmaWVyLCBhbmltLmdldCgpKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNl
IENvcHk6CisgICAgICAgIHRvTGF5ZXItPmFkZEFuaW1hdGlvbkZvcktleShhbmltYXRpb25JZGVu
dGlmaWVyLCBhbmltLmdldCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCit2b2lkIEdy
YXBoaWNzTGF5ZXJDQTo6bW92ZU9yQ29weUFuaW1hdGlvbnNGb3JQcm9wZXJ0eShNb3ZlT3JDb3B5
IG9wZXJhdGlvbiwgQW5pbWF0ZWRQcm9wZXJ0eUlEIHByb3BlcnR5LCBQbGF0Zm9ybUNBTGF5ZXIg
KmZyb21MYXllciwgUGxhdGZvcm1DQUxheWVyICp0b0xheWVyKQoreworICAgIC8vIExvb2sgZm9y
IHJ1bm5pbmcgYW5pbWF0aW9ucyBhZmZlY3RpbmcgdGhpcyBwcm9wZXJ0eS4KKyAgICBBbmltYXRp
b25zTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBtX3J1bm5pbmdBbmltYXRpb25zLmVuZCgpOwor
ICAgIGZvciAoQW5pbWF0aW9uc01hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3J1bm5pbmdBbmlt
YXRpb25zLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBjb25zdCBWZWN0b3I8
TGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbj4mIHByb3BlcnR5QW5pbWF0aW9ucyA9IGl0LT5zZWNvbmQ7
CisgICAgICAgIHNpemVfdCBudW1BbmltYXRpb25zID0gcHJvcGVydHlBbmltYXRpb25zLnNpemUo
KTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1BbmltYXRpb25zOyArK2kpIHsK
KyAgICAgICAgICAgIGNvbnN0IExheWVyUHJvcGVydHlBbmltYXRpb24mIGN1cnJBbmltYXRpb24g
PSBwcm9wZXJ0eUFuaW1hdGlvbnNbaV07CisgICAgICAgICAgICBpZiAoY3VyckFuaW1hdGlvbi5t
X3Byb3BlcnR5ID09IHByb3BlcnR5KQorICAgICAgICAgICAgICAgIG1vdmVPckNvcHlMYXllckFu
aW1hdGlvbihvcGVyYXRpb24sIGFuaW1hdGlvbklkZW50aWZpZXIoY3VyckFuaW1hdGlvbi5tX25h
bWUsIGN1cnJBbmltYXRpb24ubV9wcm9wZXJ0eSwgY3VyckFuaW1hdGlvbi5tX2luZGV4KSwgZnJv
bUxheWVyLCB0b0xheWVyKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBHcmFwaGljc0xh
eWVyQ0E6OnNldFByZXNlcnZlczNEKGJvb2wgcHJlc2VydmVzM0QpCit7CisgICAgaWYgKHByZXNl
cnZlczNEID09IG1fcHJlc2VydmVzM0QpCisgICAgICAgIHJldHVybjsKKworICAgIEdyYXBoaWNz
TGF5ZXI6OnNldFByZXNlcnZlczNEKHByZXNlcnZlczNEKTsKKyAgICBub3RlTGF5ZXJQcm9wZXJ0
eUNoYW5nZWQoUHJlc2VydmVzM0RDaGFuZ2VkKTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6
OnNldE1hc2tzVG9Cb3VuZHMoYm9vbCBtYXNrc1RvQm91bmRzKQoreworICAgIGlmIChtYXNrc1Rv
Qm91bmRzID09IG1fbWFza3NUb0JvdW5kcykKKyAgICAgICAgcmV0dXJuOworCisgICAgR3JhcGhp
Y3NMYXllcjo6c2V0TWFza3NUb0JvdW5kcyhtYXNrc1RvQm91bmRzKTsKKyAgICBub3RlTGF5ZXJQ
cm9wZXJ0eUNoYW5nZWQoTWFza3NUb0JvdW5kc0NoYW5nZWQpOworfQorCit2b2lkIEdyYXBoaWNz
TGF5ZXJDQTo6c2V0RHJhd3NDb250ZW50KGJvb2wgZHJhd3NDb250ZW50KQoreworICAgIGlmIChk
cmF3c0NvbnRlbnQgPT0gbV9kcmF3c0NvbnRlbnQpCisgICAgICAgIHJldHVybjsKKworICAgIEdy
YXBoaWNzTGF5ZXI6OnNldERyYXdzQ29udGVudChkcmF3c0NvbnRlbnQpOworICAgIG5vdGVMYXll
clByb3BlcnR5Q2hhbmdlZChEcmF3c0NvbnRlbnRDaGFuZ2VkKTsKK30KKwordm9pZCBHcmFwaGlj
c0xheWVyQ0E6OnNldEJhY2tncm91bmRDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCit7CisgICAg
aWYgKG1fYmFja2dyb3VuZENvbG9yU2V0ICYmIG1fYmFja2dyb3VuZENvbG9yID09IGNvbG9yKQor
ICAgICAgICByZXR1cm47CisKKyAgICBHcmFwaGljc0xheWVyOjpzZXRCYWNrZ3JvdW5kQ29sb3Io
Y29sb3IpOworCisgICAgbV9jb250ZW50c0xheWVySGFzQmFja2dyb3VuZENvbG9yID0gdHJ1ZTsK
KyAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoQmFja2dyb3VuZENvbG9yQ2hhbmdlZCk7Cit9
CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpjbGVhckJhY2tncm91bmRDb2xvcigpCit7CisgICAg
aWYgKCFtX2JhY2tncm91bmRDb2xvclNldCkKKyAgICAgICAgcmV0dXJuOworCisgICAgR3JhcGhp
Y3NMYXllcjo6Y2xlYXJCYWNrZ3JvdW5kQ29sb3IoKTsKKyAgICBtX2NvbnRlbnRzTGF5ZXJIYXNC
YWNrZ3JvdW5kQ29sb3IgPSBmYWxzZTsKKyAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoQmFj
a2dyb3VuZENvbG9yQ2hhbmdlZCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRDb250
ZW50c09wYXF1ZShib29sIG9wYXF1ZSkKK3sKKyAgICBpZiAobV9jb250ZW50c09wYXF1ZSA9PSBv
cGFxdWUpCisgICAgICAgIHJldHVybjsKKworICAgIEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRz
T3BhcXVlKG9wYXF1ZSk7CisgICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKENvbnRlbnRzT3Bh
cXVlQ2hhbmdlZCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRCYWNrZmFjZVZpc2li
aWxpdHkoYm9vbCB2aXNpYmxlKQoreworICAgIGlmIChtX2JhY2tmYWNlVmlzaWJpbGl0eSA9PSB2
aXNpYmxlKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgR3JhcGhpY3NMYXllcjo6c2V0QmFj
a2ZhY2VWaXNpYmlsaXR5KHZpc2libGUpOworICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChC
YWNrZmFjZVZpc2liaWxpdHlDaGFuZ2VkKTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnNl
dE9wYWNpdHkoZmxvYXQgb3BhY2l0eSkKK3sKKyAgICBmbG9hdCBjbGFtcGVkT3BhY2l0eSA9IG1h
eCgwLjBmLCBtaW4ob3BhY2l0eSwgMS4wZikpOworCisgICAgaWYgKGNsYW1wZWRPcGFjaXR5ID09
IG1fb3BhY2l0eSkKKyAgICAgICAgcmV0dXJuOworCisgICAgR3JhcGhpY3NMYXllcjo6c2V0T3Bh
Y2l0eShjbGFtcGVkT3BhY2l0eSk7CisgICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKE9wYWNp
dHlDaGFuZ2VkKTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldE5lZWRzRGlzcGxheSgp
Cit7CisgICAgRmxvYXRSZWN0IGh1Z2VSZWN0KC1udW1lcmljX2xpbWl0czxmbG9hdD46Om1heCgp
IC8gMiwgLW51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4KCkgLyAyLAorICAgICAgICAgICAgICAg
ICAgICAgICBudW1lcmljX2xpbWl0czxmbG9hdD46Om1heCgpLCBudW1lcmljX2xpbWl0czxmbG9h
dD46Om1heCgpKTsKKworICAgIHNldE5lZWRzRGlzcGxheUluUmVjdChodWdlUmVjdCk7Cit9CisK
K3ZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXROZWVkc0Rpc3BsYXlJblJlY3QoY29uc3QgRmxvYXRS
ZWN0JiByZWN0KQoreworICAgIGlmICghZHJhd3NDb250ZW50KCkpCisgICAgICAgIHJldHVybjsK
KworICAgIGNvbnN0IHNpemVfdCBtYXhEaXJ0eVJlY3RzID0gMzI7CisgICAgCisgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBtX2RpcnR5UmVjdHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYg
KG1fZGlydHlSZWN0c1tpXS5jb250YWlucyhyZWN0KSkKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgCisgICAgaWYgKG1fZGlydHlSZWN0cy5zaXplKCkgPCBtYXhEaXJ0eVJlY3RzKQor
ICAgICAgICBtX2RpcnR5UmVjdHMuYXBwZW5kKHJlY3QpOworICAgIGVsc2UKKyAgICAgICAgbV9k
aXJ0eVJlY3RzWzBdLnVuaXRlKHJlY3QpOworCisgICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2Vk
KERpcnR5UmVjdHNDaGFuZ2VkKTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldENvbnRl
bnRzTmVlZHNEaXNwbGF5KCkKK3sKKyAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoQ29udGVu
dHNOZWVkc0Rpc3BsYXkpOworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0Q29udGVudHNS
ZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpCit7CisgICAgaWYgKHJlY3QgPT0gbV9jb250ZW50c1Jl
Y3QpCisgICAgICAgIHJldHVybjsKKworICAgIEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzUmVj
dChyZWN0KTsKKyAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoQ29udGVudHNSZWN0Q2hhbmdl
ZCk7Cit9CisKK2Jvb2wgR3JhcGhpY3NMYXllckNBOjphZGRBbmltYXRpb24oY29uc3QgS2V5ZnJh
bWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCwgY29uc3QgSW50U2l6ZSYgYm94U2l6ZSwgY29uc3QgQW5p
bWF0aW9uKiBhbmltLCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGRvdWJsZSB0aW1lT2Zm
c2V0KQoreworICAgIEFTU0VSVCghYW5pbWF0aW9uTmFtZS5pc0VtcHR5KCkpOworCisgICAgaWYg
KCFhbmltIHx8IGFuaW0tPmlzRW1wdHlPclplcm9EdXJhdGlvbigpIHx8IHZhbHVlTGlzdC5zaXpl
KCkgPCAyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyNpZiAhSEFWRV9NT0RFUk5fUVVBUlRa
Q09SRQorICAgIC8vIE9sZGVyIHZlcnNpb25zIG9mIFF1YXJ0ekNvcmUgZG8gbm90IGhhbmRsZSBv
cGFjaXR5IGluIHRyYW5zZm9ybSBsYXllcnMgcHJvcGVybHksIHNvIHdlIHdpbGwKKyAgICAvLyBh
bHdheXMgZG8gc29mdHdhcmUgYW5pbWF0aW9uIGluIHRoYXQgY2FzZS4KKyAgICBpZiAodmFsdWVM
aXN0LnByb3BlcnR5KCkgPT0gQW5pbWF0ZWRQcm9wZXJ0eU9wYWNpdHkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyNlbmRpZgorCisgICAgLy8gQ29yZUFuaW1hdGlvbiBkb2VzIG5vdCBoYW5kbGUg
dGhlIHN0ZXBzKCkgdGltaW5nIGZ1bmN0aW9uLiBGYWxsIGJhY2sKKyAgICAvLyB0byBzb2Z0d2Fy
ZSBhbmltYXRpb24gaW4gdGhhdCBjYXNlLgorICAgIGlmIChhbmltYXRpb25IYXNTdGVwc1RpbWlu
Z0Z1bmN0aW9uKHZhbHVlTGlzdCwgYW5pbSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IGJvb2wgY3JlYXRlZEFuaW1hdGlvbnMgPSBmYWxzZTsKKyAgICBpZiAodmFsdWVMaXN0LnByb3Bl
cnR5KCkgPT0gQW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybSkKKyAgICAgICAgY3JlYXRl
ZEFuaW1hdGlvbnMgPSBjcmVhdGVUcmFuc2Zvcm1BbmltYXRpb25zRnJvbUtleWZyYW1lcyh2YWx1
ZUxpc3QsIGFuaW0sIGFuaW1hdGlvbk5hbWUsIHRpbWVPZmZzZXQsIGJveFNpemUpOworICAgIGVs
c2UKKyAgICAgICAgY3JlYXRlZEFuaW1hdGlvbnMgPSBjcmVhdGVBbmltYXRpb25Gcm9tS2V5ZnJh
bWVzKHZhbHVlTGlzdCwgYW5pbSwgYW5pbWF0aW9uTmFtZSwgdGltZU9mZnNldCk7CisKKyAgICBp
ZiAoY3JlYXRlZEFuaW1hdGlvbnMpCisgICAgICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChB
bmltYXRpb25DaGFuZ2VkKTsKKyAgICAgICAgCisgICAgcmV0dXJuIGNyZWF0ZWRBbmltYXRpb25z
OworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6cGF1c2VBbmltYXRpb24oY29uc3QgU3RyaW5n
JiBhbmltYXRpb25OYW1lLCBkb3VibGUgdGltZU9mZnNldCkKK3sKKyAgICBpZiAoIWFuaW1hdGlv
bklzUnVubmluZyhhbmltYXRpb25OYW1lKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQW5pbWF0
aW9uc1RvUHJvY2Vzc01hcDo6aXRlcmF0b3IgaXQgPSBtX2FuaW1hdGlvbnNUb1Byb2Nlc3MuZmlu
ZChhbmltYXRpb25OYW1lKTsKKyAgICBpZiAoaXQgIT0gbV9hbmltYXRpb25zVG9Qcm9jZXNzLmVu
ZCgpKSB7CisgICAgICAgIEFuaW1hdGlvblByb2Nlc3NpbmdBY3Rpb24mIHByb2Nlc3NpbmdJbmZv
ID0gaXQtPnNlY29uZDsKKyAgICAgICAgLy8gSWYgYW4gYW5pbWF0aW9uIGlzIHNjaGVkdWxlZCB0
byBiZSByZW1vdmVkLCBkb24ndCBjaGFuZ2UgdGhlIHJlbW92ZSB0byBhIHBhdXNlLgorICAgICAg
ICBpZiAocHJvY2Vzc2luZ0luZm8uYWN0aW9uICE9IFJlbW92ZSkKKyAgICAgICAgICAgIHByb2Nl
c3NpbmdJbmZvLmFjdGlvbiA9IFBhdXNlOworICAgIH0gZWxzZQorICAgICAgICBtX2FuaW1hdGlv
bnNUb1Byb2Nlc3MuYWRkKGFuaW1hdGlvbk5hbWUsIEFuaW1hdGlvblByb2Nlc3NpbmdBY3Rpb24o
UGF1c2UsIHRpbWVPZmZzZXQpKTsKKworICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChBbmlt
YXRpb25DaGFuZ2VkKTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnJlbW92ZUFuaW1hdGlv
bihjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUpCit7CisgICAgaWYgKCFhbmltYXRpb25Jc1J1
bm5pbmcoYW5pbWF0aW9uTmFtZSkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fYW5pbWF0aW9u
c1RvUHJvY2Vzcy5hZGQoYW5pbWF0aW9uTmFtZSwgQW5pbWF0aW9uUHJvY2Vzc2luZ0FjdGlvbihS
ZW1vdmUpKTsKKyAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoQW5pbWF0aW9uQ2hhbmdlZCk7
Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjphbmltYXRpb25TdGFydGVkKENGVGltZUludGVy
dmFsIHN0YXJ0VGltZSkKK3sKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5u
b3RpZnlBbmltYXRpb25TdGFydGVkKHRoaXMsIHN0YXJ0VGltZSk7Cit9CisKK3ZvaWQgR3JhcGhp
Y3NMYXllckNBOjpzZXRDb250ZW50c1RvSW1hZ2UoSW1hZ2UqIGltYWdlKQoreworICAgIGlmIChp
bWFnZSkgeworICAgICAgICBDR0ltYWdlUmVmIG5ld0ltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKCk7CisgICAgICAgIGlmICghbmV3SW1hZ2UpCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHRoZSBpbWFnZSBjaGFuZ2VkOyB3
ZSBoYXZlIHRvIGRvIHRoaXMgYmVjYXVzZSB0aGUgY2FsbCB0bworICAgICAgICAvLyBDR0ltYWdl
Q3JlYXRlQ29weVdpdGhDb2xvclNwYWNlKCkgYmVsb3cgY2FuIGNyZWF0ZSBhIG5ldyBpbWFnZSBl
dmVyeSB0aW1lLgorICAgICAgICBpZiAobV91bmNvcnJlY3RlZENvbnRlbnRzSW1hZ2UgJiYgbV91
bmNvcnJlY3RlZENvbnRlbnRzSW1hZ2UuZ2V0KCkgPT0gbmV3SW1hZ2UpCisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIAorICAgICAgICBtX3VuY29ycmVjdGVkQ29udGVudHNJbWFnZSA9IG5l
d0ltYWdlOworICAgICAgICBtX3BlbmRpbmdDb250ZW50c0ltYWdlID0gbmV3SW1hZ2U7CisgICAg
ICAgIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlID0gQ0dJbWFnZUdldENvbG9yU3BhY2UobV9w
ZW5kaW5nQ29udGVudHNJbWFnZS5nZXQoKSk7CisKKyAgICAgICAgc3RhdGljIENHQ29sb3JTcGFj
ZVJlZiBkZXZpY2VSR0IgPSBDR0NvbG9yU3BhY2VDcmVhdGVEZXZpY2VSR0IoKTsKKyAgICAgICAg
aWYgKGNvbG9yU3BhY2UgJiYgQ0ZFcXVhbChjb2xvclNwYWNlLCBkZXZpY2VSR0IpKSB7CisgICAg
ICAgICAgICAvLyBDb3JlR3JhcGhpY3MgcmVuZGVycyBpbWFnZXMgdGFnZ2VkIHdpdGggRGV2aWNl
UkdCIHVzaW5nIHRoZSBjb2xvciBzcGFjZSBvZiB0aGUgbWFpbiBkaXNwbGF5LiBXaGVuIHdlIGhh
bmQgc3VjaAorICAgICAgICAgICAgLy8gaW1hZ2VzIHRvIENBIHdlIG5lZWQgdG8gdGFnIHRoZW0g
c2ltaWxhcmx5IHNvIENBIHJlbmRlcmluZyBtYXRjaGVzIENHIHJlbmRlcmluZy4KKyAgICAgICAg
ICAgIHN0YXRpYyBDR0NvbG9yU3BhY2VSZWYgZ2VuZXJpY1JHQiA9IENHRGlzcGxheUNvcHlDb2xv
clNwYWNlKGtDR0RpcmVjdE1haW5EaXNwbGF5KTsKKyAgICAgICAgICAgIG1fcGVuZGluZ0NvbnRl
bnRzSW1hZ2UuYWRvcHRDRihDR0ltYWdlQ3JlYXRlQ29weVdpdGhDb2xvclNwYWNlKG1fcGVuZGlu
Z0NvbnRlbnRzSW1hZ2UuZ2V0KCksIGdlbmVyaWNSR0IpKTsKKyAgICAgICAgfQorICAgICAgICBt
X2NvbnRlbnRzTGF5ZXJQdXJwb3NlID0gQ29udGVudHNMYXllckZvckltYWdlOworICAgICAgICBp
ZiAoIW1fY29udGVudHNMYXllcikKKyAgICAgICAgICAgIG5vdGVTdWJsYXllcnNDaGFuZ2VkKCk7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV91bmNvcnJlY3RlZENvbnRlbnRzSW1hZ2UgPSAwOwor
ICAgICAgICBtX3BlbmRpbmdDb250ZW50c0ltYWdlID0gMDsKKyAgICAgICAgbV9jb250ZW50c0xh
eWVyUHVycG9zZSA9IE5vQ29udGVudHNMYXllcjsKKyAgICAgICAgaWYgKG1fY29udGVudHNMYXll
cikKKyAgICAgICAgICAgIG5vdGVTdWJsYXllcnNDaGFuZ2VkKCk7CisgICAgfQorCisgICAgbm90
ZUxheWVyUHJvcGVydHlDaGFuZ2VkKENvbnRlbnRzSW1hZ2VDaGFuZ2VkKTsKK30KKwordm9pZCBH
cmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRzVG9NZWRpYShQbGF0Zm9ybUxheWVyKiBtZWRpYUxh
eWVyKQoreworICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIgJiYgbWVkaWFMYXllciA9PSBtX2NvbnRl
bnRzTGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSkKKyAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAg
ICAvLyBDcmVhdGUgdGhlIFBsYXRmb3JtQ0FMYXllciB0byB3cmFwIHRoZSBpbmNvbWluZyBsYXll
cgorICAgIG1fY29udGVudHNMYXllciA9IG1lZGlhTGF5ZXIgPyBQbGF0Zm9ybUNBTGF5ZXI6OmNy
ZWF0ZShtZWRpYUxheWVyLCB0aGlzKSA6IDA7CisKKyAgICBtX2NvbnRlbnRzTGF5ZXJQdXJwb3Nl
ID0gbWVkaWFMYXllciA/IENvbnRlbnRzTGF5ZXJGb3JNZWRpYSA6IE5vQ29udGVudHNMYXllcjsK
KworICAgIG5vdGVTdWJsYXllcnNDaGFuZ2VkKCk7CisgICAgbm90ZUxheWVyUHJvcGVydHlDaGFu
Z2VkKENvbnRlbnRzTWVkaWFMYXllckNoYW5nZWQpOworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJD
QTo6ZGlkRGlzcGxheShQbGF0Zm9ybUxheWVyKiBsYXllcikKK3sKKyAgICBQbGF0Zm9ybUNBTGF5
ZXIqIGN1cnJlbnRMYXllciA9IFBsYXRmb3JtQ0FMYXllcjo6cGxhdGZvcm1DQUxheWVyKGxheWVy
KTsKKyAgICBQbGF0Zm9ybUNBTGF5ZXIqIHNvdXJjZUxheWVyOworICAgIExheWVyTWFwKiBsYXll
ckNsb25lTWFwOworCisgICAgaWYgKGN1cnJlbnRMYXllciA9PSBtX2xheWVyKSB7CisgICAgICAg
IHNvdXJjZUxheWVyID0gbV9sYXllci5nZXQoKTsKKyAgICAgICAgbGF5ZXJDbG9uZU1hcCA9IG1f
bGF5ZXJDbG9uZXMuZ2V0KCk7CisgICAgfSBlbHNlIGlmIChjdXJyZW50TGF5ZXIgPT0gbV9jb250
ZW50c0xheWVyKSB7CisgICAgICAgIHNvdXJjZUxheWVyID0gbV9jb250ZW50c0xheWVyLmdldCgp
OworICAgICAgICBsYXllckNsb25lTWFwID0gbV9jb250ZW50c0xheWVyQ2xvbmVzLmdldCgpOwor
ICAgIH0gZWxzZQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobGF5ZXJDbG9uZU1hcCkgewor
ICAgICAgICBMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbGF5ZXJDbG9uZU1hcC0+ZW5k
KCk7CisgICAgICAgIGZvciAoTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbGF5ZXJDbG9u
ZU1hcC0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgICAgICBQbGF0Zm9ybUNB
TGF5ZXIqIGN1cnJDbG9uZSA9IGl0LT5zZWNvbmQuZ2V0KCk7CisgICAgICAgICAgICBpZiAoIWN1
cnJDbG9uZSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgaWYgKGN1
cnJDbG9uZS0+Y29udGVudHMoKSAhPSBzb3VyY2VMYXllci0+Y29udGVudHMoKSkKKyAgICAgICAg
ICAgICAgICBjdXJyQ2xvbmUtPnNldENvbnRlbnRzKHNvdXJjZUxheWVyLT5jb250ZW50cygpKTsK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBjdXJyQ2xvbmUtPnNldENvbnRlbnRz
Q2hhbmdlZCgpOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6
c3luY0NvbXBvc2l0aW5nU3RhdGUoKQoreworICAgIHJlY3Vyc2l2ZUNvbW1pdENoYW5nZXMoKTsK
K30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnN5bmNDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xh
eWVyT25seSgpCit7CisgICAgY29tbWl0TGF5ZXJDaGFuZ2VzQmVmb3JlU3VibGF5ZXJzKCk7Cisg
ICAgY29tbWl0TGF5ZXJDaGFuZ2VzQWZ0ZXJTdWJsYXllcnMoKTsKK30KKwordm9pZCBHcmFwaGlj
c0xheWVyQ0E6OnJlY3Vyc2l2ZUNvbW1pdENoYW5nZXMoKQoreworICAgIGNvbW1pdExheWVyQ2hh
bmdlc0JlZm9yZVN1YmxheWVycygpOworCisgICAgaWYgKG1fbWFza0xheWVyKQorICAgICAgICBz
dGF0aWNfY2FzdDxHcmFwaGljc0xheWVyQ0EqPihtX21hc2tMYXllciktPmNvbW1pdExheWVyQ2hh
bmdlc0JlZm9yZVN1YmxheWVycygpOworCisgICAgY29uc3QgVmVjdG9yPEdyYXBoaWNzTGF5ZXIq
PiYgY2hpbGRMYXllcnMgPSBjaGlsZHJlbigpOworICAgIHNpemVfdCBudW1DaGlsZHJlbiA9IGNo
aWxkTGF5ZXJzLnNpemUoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bUNoaWxkcmVu
OyArK2kpIHsKKyAgICAgICAgR3JhcGhpY3NMYXllckNBKiBjdXJDaGlsZCA9IHN0YXRpY19jYXN0
PEdyYXBoaWNzTGF5ZXJDQSo+KGNoaWxkTGF5ZXJzW2ldKTsKKyAgICAgICAgY3VyQ2hpbGQtPnJl
Y3Vyc2l2ZUNvbW1pdENoYW5nZXMoKTsKKyAgICB9CisKKyAgICBpZiAobV9yZXBsaWNhTGF5ZXIp
CisgICAgICAgIHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXJDQSo+KG1fcmVwbGljYUxheWVyKS0+
cmVjdXJzaXZlQ29tbWl0Q2hhbmdlcygpOworCisgICAgaWYgKG1fbWFza0xheWVyKQorICAgICAg
ICBzdGF0aWNfY2FzdDxHcmFwaGljc0xheWVyQ0EqPihtX21hc2tMYXllciktPmNvbW1pdExheWVy
Q2hhbmdlc0FmdGVyU3VibGF5ZXJzKCk7CisKKyAgICBjb21taXRMYXllckNoYW5nZXNBZnRlclN1
YmxheWVycygpOworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6Y29tbWl0TGF5ZXJDaGFuZ2Vz
QmVmb3JlU3VibGF5ZXJzKCkKK3sKKyAgICBpZiAoIW1fdW5jb21taXR0ZWRDaGFuZ2VzKQorICAg
ICAgICByZXR1cm47CisKKyAgICAvLyBOZWVkIHRvIGhhbmRsZSBQcmVzZXJ2ZXMzRENoYW5nZWQg
Zmlyc3QsIGJlY2F1c2UgaXQgYWZmZWN0cyB3aGljaCBsYXllcnMgc3Vic2VxdWVudCBwcm9wZXJ0
aWVzIGFyZSBhcHBsaWVkIHRvCisgICAgaWYgKG1fdW5jb21taXR0ZWRDaGFuZ2VzICYgKFByZXNl
cnZlczNEQ2hhbmdlZCB8IFJlcGxpY2F0ZWRMYXllckNoYW5nZWQpKQorICAgICAgICB1cGRhdGVT
dHJ1Y3R1cmFsTGF5ZXIoKTsKKworICAgIGlmIChtX3VuY29tbWl0dGVkQ2hhbmdlcyAmIE5hbWVD
aGFuZ2VkKQorICAgICAgICB1cGRhdGVMYXllck5hbWVzKCk7CisKKyAgICBpZiAobV91bmNvbW1p
dHRlZENoYW5nZXMgJiBDb250ZW50c0ltYWdlQ2hhbmdlZCkgLy8gTmVlZHMgdG8gaGFwcGVuIGJl
Zm9yZSBDaGlsZHJlbkNoYW5nZWQKKyAgICAgICAgdXBkYXRlQ29udGVudHNJbWFnZSgpOworICAg
ICAgICAKKyAgICBpZiAobV91bmNvbW1pdHRlZENoYW5nZXMgJiBDb250ZW50c01lZGlhTGF5ZXJD
aGFuZ2VkKSAvLyBOZWVkcyB0byBoYXBwZW4gYmVmb3JlIENoaWxkcmVuQ2hhbmdlZAorICAgICAg
ICB1cGRhdGVDb250ZW50c01lZGlhTGF5ZXIoKTsKKyAgICAKKyAgICBpZiAobV91bmNvbW1pdHRl
ZENoYW5nZXMgJiBDb250ZW50c0NhbnZhc0xheWVyQ2hhbmdlZCkgLy8gTmVlZHMgdG8gaGFwcGVu
IGJlZm9yZSBDaGlsZHJlbkNoYW5nZWQKKyAgICAgICAgdXBkYXRlQ29udGVudHNDYW52YXNMYXll
cigpOworICAgIAorICAgIGlmIChtX3VuY29tbWl0dGVkQ2hhbmdlcyAmIEJhY2tncm91bmRDb2xv
ckNoYW5nZWQpIC8vIE5lZWRzIHRvIGhhcHBlbiBiZWZvcmUgQ2hpbGRyZW5DaGFuZ2VkLCBhbmQg
YWZ0ZXIgdXBkYXRpbmcgaW1hZ2Ugb3IgdmlkZW8KKyAgICAgICAgdXBkYXRlTGF5ZXJCYWNrZ3Jv
dW5kQ29sb3IoKTsKKworICAgIGlmIChtX3VuY29tbWl0dGVkQ2hhbmdlcyAmIENoaWxkcmVuQ2hh
bmdlZCkKKyAgICAgICAgdXBkYXRlU3VibGF5ZXJMaXN0KCk7CisKKyAgICBpZiAobV91bmNvbW1p
dHRlZENoYW5nZXMgJiBQb3NpdGlvbkNoYW5nZWQpCisgICAgICAgIHVwZGF0ZUxheWVyUG9zaXRp
b24oKTsKKyAgICAKKyAgICBpZiAobV91bmNvbW1pdHRlZENoYW5nZXMgJiBBbmNob3JQb2ludENo
YW5nZWQpCisgICAgICAgIHVwZGF0ZUFuY2hvclBvaW50KCk7CisgICAgCisgICAgaWYgKG1fdW5j
b21taXR0ZWRDaGFuZ2VzICYgU2l6ZUNoYW5nZWQpCisgICAgICAgIHVwZGF0ZUxheWVyU2l6ZSgp
OworCisgICAgaWYgKG1fdW5jb21taXR0ZWRDaGFuZ2VzICYgVHJhbnNmb3JtQ2hhbmdlZCkKKyAg
ICAgICAgdXBkYXRlVHJhbnNmb3JtKCk7CisKKyAgICBpZiAobV91bmNvbW1pdHRlZENoYW5nZXMg
JiBDaGlsZHJlblRyYW5zZm9ybUNoYW5nZWQpCisgICAgICAgIHVwZGF0ZUNoaWxkcmVuVHJhbnNm
b3JtKCk7CisgICAgCisgICAgaWYgKG1fdW5jb21taXR0ZWRDaGFuZ2VzICYgTWFza3NUb0JvdW5k
c0NoYW5nZWQpCisgICAgICAgIHVwZGF0ZU1hc2tzVG9Cb3VuZHMoKTsKKyAgICAKKyAgICBpZiAo
bV91bmNvbW1pdHRlZENoYW5nZXMgJiBEcmF3c0NvbnRlbnRDaGFuZ2VkKQorICAgICAgICB1cGRh
dGVMYXllckRyYXdzQ29udGVudCgpOworCisgICAgaWYgKG1fdW5jb21taXR0ZWRDaGFuZ2VzICYg
Q29udGVudHNPcGFxdWVDaGFuZ2VkKQorICAgICAgICB1cGRhdGVDb250ZW50c09wYXF1ZSgpOwor
CisgICAgaWYgKG1fdW5jb21taXR0ZWRDaGFuZ2VzICYgQmFja2ZhY2VWaXNpYmlsaXR5Q2hhbmdl
ZCkKKyAgICAgICAgdXBkYXRlQmFja2ZhY2VWaXNpYmlsaXR5KCk7CisKKyAgICBpZiAobV91bmNv
bW1pdHRlZENoYW5nZXMgJiBPcGFjaXR5Q2hhbmdlZCkKKyAgICAgICAgdXBkYXRlT3BhY2l0eU9u
TGF5ZXIoKTsKKyAgICAKKyAgICBpZiAobV91bmNvbW1pdHRlZENoYW5nZXMgJiBBbmltYXRpb25D
aGFuZ2VkKQorICAgICAgICB1cGRhdGVMYXllckFuaW1hdGlvbnMoKTsKKyAgICAKKyAgICBpZiAo
bV91bmNvbW1pdHRlZENoYW5nZXMgJiBEaXJ0eVJlY3RzQ2hhbmdlZCkKKyAgICAgICAgcmVwYWlu
dExheWVyRGlydHlSZWN0cygpOworICAgIAorICAgIGlmIChtX3VuY29tbWl0dGVkQ2hhbmdlcyAm
IENvbnRlbnRzUmVjdENoYW5nZWQpCisgICAgICAgIHVwZGF0ZUNvbnRlbnRzUmVjdCgpOworCisg
ICAgaWYgKG1fdW5jb21taXR0ZWRDaGFuZ2VzICYgTWFza0xheWVyQ2hhbmdlZCkKKyAgICAgICAg
dXBkYXRlTWFza0xheWVyKCk7CisKKyAgICBpZiAobV91bmNvbW1pdHRlZENoYW5nZXMgJiBDb250
ZW50c05lZWRzRGlzcGxheSkKKyAgICAgICAgdXBkYXRlQ29udGVudHNOZWVkc0Rpc3BsYXkoKTsK
K30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OmNvbW1pdExheWVyQ2hhbmdlc0FmdGVyU3VibGF5
ZXJzKCkKK3sKKyAgICBpZiAoIW1fdW5jb21taXR0ZWRDaGFuZ2VzKQorICAgICAgICByZXR1cm47
CisKKyAgICBpZiAobV91bmNvbW1pdHRlZENoYW5nZXMgJiBSZXBsaWNhdGVkTGF5ZXJDaGFuZ2Vk
KQorICAgICAgICB1cGRhdGVSZXBsaWNhdGVkTGF5ZXJzKCk7CisKKyAgICBtX3VuY29tbWl0dGVk
Q2hhbmdlcyA9IE5vQ2hhbmdlOworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlTGF5
ZXJOYW1lcygpCit7CisgICAgc3dpdGNoIChzdHJ1Y3R1cmFsTGF5ZXJQdXJwb3NlKCkpIHsKKyAg
ICBjYXNlIFN0cnVjdHVyYWxMYXllckZvclByZXNlcnZlczNEOgorICAgICAgICBtX3N0cnVjdHVy
YWxMYXllci0+c2V0TmFtZSgiVHJhbnNmb3JtIGxheWVyICIgKyBuYW1lKCkpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFN0cnVjdHVyYWxMYXllckZvclJlcGxpY2FGbGF0dGVuaW5nOgorICAg
ICAgICBtX3N0cnVjdHVyYWxMYXllci0+c2V0TmFtZSgiUmVwbGljYSBmbGF0dGVuaW5nIGxheWVy
ICIgKyBuYW1lKCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIE5vU3RydWN0dXJhbExheWVy
OgorICAgICAgICBicmVhazsKKyAgICB9CisgICAgbV9sYXllci0+c2V0TmFtZShuYW1lKCkpOwor
fQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlU3VibGF5ZXJMaXN0KCkKK3sKKyAgICBQ
bGF0Zm9ybUNBTGF5ZXJMaXN0IG5ld1N1YmxheWVyczsKKyAgICBjb25zdCBWZWN0b3I8R3JhcGhp
Y3NMYXllcio+JiBjaGlsZExheWVycyA9IGNoaWxkcmVuKCk7CisKKyAgICBpZiAobV9zdHJ1Y3R1
cmFsTGF5ZXIgfHwgbV9jb250ZW50c0xheWVyIHx8IGNoaWxkTGF5ZXJzLnNpemUoKSA+IDApIHsK
KyAgICAgICAgaWYgKG1fc3RydWN0dXJhbExheWVyKSB7CisgICAgICAgICAgICAvLyBBZGQgdGhl
IHJlcGxpY2EgbGF5ZXIgZmlyc3QuCisgICAgICAgICAgICBpZiAobV9yZXBsaWNhTGF5ZXIpCisg
ICAgICAgICAgICAgICAgbmV3U3VibGF5ZXJzLmFwcGVuZChzdGF0aWNfY2FzdDxHcmFwaGljc0xh
eWVyQ0EqPihtX3JlcGxpY2FMYXllciktPnByaW1hcnlMYXllcigpKTsKKyAgICAgICAgICAgIC8v
IEFkZCB0aGUgcHJpbWFyeSBsYXllci4gRXZlbiBpZiB3ZSBoYXZlIG5lZ2F0aXZlIHotb3JkZXIg
Y2hpbGRyZW4sIHRoZSBwcmltYXJ5IGxheWVyIGFsd2F5cyBjb21lcyBiZWhpbmQuCisgICAgICAg
ICAgICBuZXdTdWJsYXllcnMuYXBwZW5kKG1fbGF5ZXIpOworICAgICAgICB9IGVsc2UgaWYgKG1f
Y29udGVudHNMYXllcikgeworICAgICAgICAgICAgLy8gRklYTUU6IGFkZCB0aGUgY29udGVudHMg
bGF5ZXIgaW4gdGhlIGNvcnJlY3Qgb3JkZXIgd2l0aCBuZWdhdGl2ZSB6LW9yZGVyIGNoaWxkcmVu
LgorICAgICAgICAgICAgLy8gVGhpcyBkb2VzIG5vdCBjYXVzZSB2aXNpYmxlIHJlbmRlcmluZyBp
c3N1ZXMgYmVjYXVzZSBjdXJyZW50bHkgY29udGVudHMgbGF5ZXJzIGFyZSBvbmx5IHVzZWQKKyAg
ICAgICAgICAgIC8vIGZvciByZXBsYWNlZCBlbGVtZW50cyB0aGF0IGRvbid0IGhhdmUgY2hpbGRy
ZW4uCisgICAgICAgICAgICBuZXdTdWJsYXllcnMuYXBwZW5kKG1fY29udGVudHNMYXllcik7Cisg
ICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHNpemVfdCBudW1DaGlsZHJlbiA9IGNoaWxkTGF5
ZXJzLnNpemUoKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1DaGlsZHJlbjsg
KytpKSB7CisgICAgICAgICAgICBHcmFwaGljc0xheWVyQ0EqIGN1ckNoaWxkID0gc3RhdGljX2Nh
c3Q8R3JhcGhpY3NMYXllckNBKj4oY2hpbGRMYXllcnNbaV0pOworICAgICAgICAgICAgUGxhdGZv
cm1DQUxheWVyKiBjaGlsZExheWVyID0gY3VyQ2hpbGQtPmxheWVyRm9yU3VwZXJsYXllcigpOwor
ICAgICAgICAgICAgbmV3U3VibGF5ZXJzLmFwcGVuZChjaGlsZExheWVyKTsKKyAgICAgICAgfQor
CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbmV3U3VibGF5ZXJzLnNpemUoKTsgKytp
KQorICAgICAgICAgICAgbmV3U3VibGF5ZXJzW2ldLT5yZW1vdmVGcm9tU3VwZXJsYXllcigpOwor
ICAgIH0KKworICAgIGlmIChtX3N0cnVjdHVyYWxMYXllcikgeworICAgICAgICBtX3N0cnVjdHVy
YWxMYXllci0+c2V0U3VibGF5ZXJzKG5ld1N1YmxheWVycyk7CisKKyAgICAgICAgaWYgKG1fY29u
dGVudHNMYXllcikgeworICAgICAgICAgICAgLy8gSWYgd2UgaGF2ZSBhIHRyYW5zZm9ybSBsYXll
ciwgdGhlbiB0aGUgY29udGVudHMgbGF5ZXIgaXMgcGFyZW50ZWQgaW4gdGhlIAorICAgICAgICAg
ICAgLy8gcHJpbWFyeSBsYXllciAod2hpY2ggaXMgaXRzZWxmIGEgY2hpbGQgb2YgdGhlIHRyYW5z
Zm9ybSBsYXllcikuCisgICAgICAgICAgICBtX2xheWVyLT5yZW1vdmVBbGxTdWJsYXllcnMoKTsK
KyAgICAgICAgICAgIG1fbGF5ZXItPmFwcGVuZFN1YmxheWVyKG1fY29udGVudHNMYXllci5nZXQo
KSk7CisgICAgICAgIH0KKyAgICB9IGVsc2UKKyAgICAgICAgbV9sYXllci0+c2V0U3VibGF5ZXJz
KG5ld1N1YmxheWVycyk7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjp1cGRhdGVMYXllclBv
c2l0aW9uKCkKK3sKKyAgICBGbG9hdFNpemUgdXNlZFNpemUgPSBtX3VzaW5nVGlsZWRMYXllciA/
IGNvbnN0cmFpbmVkU2l6ZSgpIDogbV9zaXplOworCisgICAgLy8gUG9zaXRpb24gaXMgb2Zmc2V0
IG9uIHRoZSBsYXllciBieSB0aGUgbGF5ZXIgYW5jaG9yIHBvaW50LgorICAgIEZsb2F0UG9pbnQg
cG9zUG9pbnQobV9wb3NpdGlvbi54KCkgKyBtX2FuY2hvclBvaW50LngoKSAqIHVzZWRTaXplLndp
ZHRoKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgIG1fcG9zaXRpb24ueSgpICsgbV9hbmNo
b3JQb2ludC55KCkgKiB1c2VkU2l6ZS5oZWlnaHQoKSk7CisgICAgCisgICAgcHJpbWFyeUxheWVy
KCktPnNldFBvc2l0aW9uKHBvc1BvaW50KTsKKworICAgIGlmIChMYXllck1hcCogbGF5ZXJDbG9u
ZU1hcCA9IHByaW1hcnlMYXllckNsb25lcygpKSB7CisgICAgICAgIExheWVyTWFwOjpjb25zdF9p
dGVyYXRvciBlbmQgPSBsYXllckNsb25lTWFwLT5lbmQoKTsKKyAgICAgICAgZm9yIChMYXllck1h
cDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBsYXllckNsb25lTWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7
ICsraXQpIHsKKyAgICAgICAgICAgIEZsb2F0UG9pbnQgY2xvbmVQb3NpdGlvbiA9IHBvc1BvaW50
OworICAgICAgICAgICAgaWYgKG1fcmVwbGljYUxheWVyICYmIGlzUmVwbGljYXRlZFJvb3RDbG9u
ZShpdC0+Zmlyc3QpKSB7CisgICAgICAgICAgICAgICAgLy8gTWFpbnRhaW4gdGhlIHNwZWNpYWwt
Y2FzZSBwb3NpdGlvbiBmb3IgdGhlIHJvb3Qgb2YgYSBjbG9uZSBzdWJ0cmVlLAorICAgICAgICAg
ICAgICAgIC8vIHdoaWNoIHdlIHNldCB1cCBpbiByZXBsaWNhdGVkTGF5ZXJSb290KCkuCisgICAg
ICAgICAgICAgICAgY2xvbmVQb3NpdGlvbiA9IHBvc2l0aW9uRm9yQ2xvbmVSb290TGF5ZXIoKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGl0LT5zZWNvbmQtPnNldFBvc2l0aW9uKGNsb25l
UG9zaXRpb24pOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6
dXBkYXRlTGF5ZXJTaXplKCkKK3sKKyAgICBGbG9hdFJlY3QgcmVjdCgwLCAwLCBtX3NpemUud2lk
dGgoKSwgbV9zaXplLmhlaWdodCgpKTsKKyAgICBpZiAobV9zdHJ1Y3R1cmFsTGF5ZXIpIHsKKyAg
ICAgICAgbV9zdHJ1Y3R1cmFsTGF5ZXItPnNldEJvdW5kcyhyZWN0KTsKKyAgICAgICAgCisgICAg
ICAgIGlmIChMYXllck1hcCogbGF5ZXJDbG9uZU1hcCA9IG1fc3RydWN0dXJhbExheWVyQ2xvbmVz
LmdldCgpKSB7CisgICAgICAgICAgICBMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbGF5
ZXJDbG9uZU1hcC0+ZW5kKCk7CisgICAgICAgICAgICBmb3IgKExheWVyTWFwOjpjb25zdF9pdGVy
YXRvciBpdCA9IGxheWVyQ2xvbmVNYXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAg
ICAgICAgICAgICBpdC0+c2Vjb25kLT5zZXRCb3VuZHMocmVjdCk7CisgICAgICAgIH0KKworICAg
ICAgICAvLyBUaGUgYW5jaG9yIG9mIHRoZSBjb250ZW50cyBsYXllciBpcyBhbHdheXMgYXQgMC41
LCAwLjUsIHNvIHRoZSBwb3NpdGlvbiBpcyBjZW50ZXItcmVsYXRpdmUuCisgICAgICAgIENHUG9p
bnQgY2VudGVyUG9pbnQgPSBDR1BvaW50TWFrZShtX3NpemUud2lkdGgoKSAvIDIuMGYsIG1fc2l6
ZS5oZWlnaHQoKSAvIDIuMGYpOworICAgICAgICBtX2xheWVyLT5zZXRQb3NpdGlvbihjZW50ZXJQ
b2ludCk7CisKKyAgICAgICAgaWYgKExheWVyTWFwKiBsYXllckNsb25lTWFwID0gbV9sYXllckNs
b25lcy5nZXQoKSkgeworICAgICAgICAgICAgTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9
IGxheWVyQ2xvbmVNYXAtPmVuZCgpOworICAgICAgICAgICAgZm9yIChMYXllck1hcDo6Y29uc3Rf
aXRlcmF0b3IgaXQgPSBsYXllckNsb25lTWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisg
ICAgICAgICAgICAgICAgaXQtPnNlY29uZC0+c2V0UG9zaXRpb24oY2VudGVyUG9pbnQpOworICAg
ICAgICB9CisgICAgfQorICAgIAorICAgIGJvb2wgbmVlZFRpbGVkTGF5ZXIgPSByZXF1aXJlc1Rp
bGVkTGF5ZXIobV9zaXplKTsKKyAgICBpZiAobmVlZFRpbGVkTGF5ZXIgIT0gbV91c2luZ1RpbGVk
TGF5ZXIpCisgICAgICAgIHN3YXBGcm9tT3JUb1RpbGVkTGF5ZXIobmVlZFRpbGVkTGF5ZXIpOwor
ICAgIAorICAgIGlmIChtX3VzaW5nVGlsZWRMYXllcikgeworICAgICAgICBGbG9hdFNpemUgc2l6
ZVRvVXNlID0gY29uc3RyYWluZWRTaXplKCk7CisgICAgICAgIHJlY3QgPSBDR1JlY3RNYWtlKDAs
IDAsIHNpemVUb1VzZS53aWR0aCgpLCBzaXplVG9Vc2UuaGVpZ2h0KCkpOworICAgIH0KKyAgICAK
KyAgICBtX2xheWVyLT5zZXRCb3VuZHMocmVjdCk7CisgICAgaWYgKExheWVyTWFwKiBsYXllckNs
b25lTWFwID0gbV9sYXllckNsb25lcy5nZXQoKSkgeworICAgICAgICBMYXllck1hcDo6Y29uc3Rf
aXRlcmF0b3IgZW5kID0gbGF5ZXJDbG9uZU1hcC0+ZW5kKCk7CisgICAgICAgIGZvciAoTGF5ZXJN
YXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbGF5ZXJDbG9uZU1hcC0+YmVnaW4oKTsgaXQgIT0gZW5k
OyArK2l0KQorICAgICAgICAgICAgaXQtPnNlY29uZC0+c2V0Qm91bmRzKHJlY3QpOworICAgIH0K
KyAgICAKKyAgICAvLyBDb250ZW50cyB0cmFuc2Zvcm0gbWF5IGRlcGVuZCBvbiBoZWlnaHQuCisg
ICAgdXBkYXRlQ29udGVudHNUcmFuc2Zvcm0oKTsKKworICAgIC8vIE5vdGUgdGhhdCB3ZSBkb24n
dCByZXNpemUgbV9jb250ZW50c0xheWVyLiBJdCdzIHVwIHRoZSBjYWxsZXIgdG8gZG8gdGhhdC4K
KworICAgIC8vIGlmIHdlJ3ZlIGNoYW5nZWQgdGhlIGJvdW5kcywgd2UgbmVlZCB0byByZWNhbGN1
bGF0ZSB0aGUgcG9zaXRpb24KKyAgICAvLyBvZiB0aGUgbGF5ZXIsIHRha2luZyBhbmNob3IgcG9p
bnQgaW50byBhY2NvdW50LgorICAgIHVwZGF0ZUxheWVyUG9zaXRpb24oKTsKK30KKwordm9pZCBH
cmFwaGljc0xheWVyQ0E6OnVwZGF0ZUFuY2hvclBvaW50KCkKK3sKKyAgICBwcmltYXJ5TGF5ZXIo
KS0+c2V0QW5jaG9yUG9pbnQobV9hbmNob3JQb2ludCk7CisKKyAgICBpZiAoTGF5ZXJNYXAqIGxh
eWVyQ2xvbmVNYXAgPSBwcmltYXJ5TGF5ZXJDbG9uZXMoKSkgeworICAgICAgICBMYXllck1hcDo6
Y29uc3RfaXRlcmF0b3IgZW5kID0gbGF5ZXJDbG9uZU1hcC0+ZW5kKCk7CisgICAgICAgIGZvciAo
TGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbGF5ZXJDbG9uZU1hcC0+YmVnaW4oKTsgaXQg
IT0gZW5kOyArK2l0KSB7ICAgCisgICAgICAgICAgICBQbGF0Zm9ybUNBTGF5ZXIqIGN1cnJMYXll
ciA9IGl0LT5zZWNvbmQuZ2V0KCk7CisgICAgICAgICAgICBjdXJyTGF5ZXItPnNldEFuY2hvclBv
aW50KG1fYW5jaG9yUG9pbnQpOworICAgICAgICB9CisgICAgfQorCisgICAgdXBkYXRlTGF5ZXJQ
b3NpdGlvbigpOworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlVHJhbnNmb3JtKCkK
K3sKKyAgICBwcmltYXJ5TGF5ZXIoKS0+c2V0VHJhbnNmb3JtKG1fdHJhbnNmb3JtKTsKKworICAg
IGlmIChMYXllck1hcCogbGF5ZXJDbG9uZU1hcCA9IHByaW1hcnlMYXllckNsb25lcygpKSB7Cisg
ICAgICAgIExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBsYXllckNsb25lTWFwLT5lbmQo
KTsKKyAgICAgICAgZm9yIChMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBsYXllckNsb25l
TWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgICAgIFBsYXRmb3JtQ0FM
YXllciogY3VyckxheWVyID0gaXQtPnNlY29uZC5nZXQoKTsKKyAgICAgICAgICAgIGlmIChtX3Jl
cGxpY2FMYXllciAmJiBpc1JlcGxpY2F0ZWRSb290Q2xvbmUoaXQtPmZpcnN0KSkgeworICAgICAg
ICAgICAgICAgIC8vIE1haW50YWluIHRoZSBzcGVjaWFsLWNhc2UgdHJhbnNmb3JtIGZvciB0aGUg
cm9vdCBvZiBhIGNsb25lIHN1YnRyZWUsCisgICAgICAgICAgICAgICAgLy8gd2hpY2ggd2Ugc2V0
IHVwIGluIHJlcGxpY2F0ZWRMYXllclJvb3QoKS4KKyAgICAgICAgICAgICAgICBjdXJyTGF5ZXIt
PnNldFRyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKTsKKyAgICAgICAgICAgIH0gZWxz
ZQorICAgICAgICAgICAgICAgIGN1cnJMYXllci0+c2V0VHJhbnNmb3JtKG1fdHJhbnNmb3JtKTsK
KyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUNoaWxk
cmVuVHJhbnNmb3JtKCkKK3sKKyAgICBwcmltYXJ5TGF5ZXIoKS0+c2V0U3VibGF5ZXJUcmFuc2Zv
cm0obV9jaGlsZHJlblRyYW5zZm9ybSk7CisKKyAgICBpZiAoTGF5ZXJNYXAqIGxheWVyQ2xvbmVN
YXAgPSBwcmltYXJ5TGF5ZXJDbG9uZXMoKSkgeworICAgICAgICBMYXllck1hcDo6Y29uc3RfaXRl
cmF0b3IgZW5kID0gbGF5ZXJDbG9uZU1hcC0+ZW5kKCk7CisgICAgICAgIGZvciAoTGF5ZXJNYXA6
OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbGF5ZXJDbG9uZU1hcC0+YmVnaW4oKTsgaXQgIT0gZW5kOyAr
K2l0KQorICAgICAgICAgICAgaXQtPnNlY29uZC0+c2V0U3VibGF5ZXJUcmFuc2Zvcm0obV9jaGls
ZHJlblRyYW5zZm9ybSk7CisgICAgfQorfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRl
TWFza3NUb0JvdW5kcygpCit7CisgICAgbV9sYXllci0+c2V0TWFza3NUb0JvdW5kcyhtX21hc2tz
VG9Cb3VuZHMpOworCisgICAgaWYgKExheWVyTWFwKiBsYXllckNsb25lTWFwID0gbV9sYXllckNs
b25lcy5nZXQoKSkgeworICAgICAgICBMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbGF5
ZXJDbG9uZU1hcC0+ZW5kKCk7CisgICAgICAgIGZvciAoTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9y
IGl0ID0gbGF5ZXJDbG9uZU1hcC0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICAg
ICAgaXQtPnNlY29uZC0+c2V0TWFza3NUb0JvdW5kcyhtX21hc2tzVG9Cb3VuZHMpOworICAgIH0K
KworICAgIHVwZGF0ZURlYnVnSW5kaWNhdG9ycygpOworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJD
QTo6dXBkYXRlQ29udGVudHNPcGFxdWUoKQoreworICAgIG1fbGF5ZXIuZ2V0KCktPnNldE9wYXF1
ZShtX2NvbnRlbnRzT3BhcXVlKTsKKworICAgIGlmIChMYXllck1hcCogbGF5ZXJDbG9uZU1hcCA9
IG1fbGF5ZXJDbG9uZXMuZ2V0KCkpIHsKKyAgICAgICAgTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9y
IGVuZCA9IGxheWVyQ2xvbmVNYXAtPmVuZCgpOworICAgICAgICBmb3IgKExheWVyTWFwOjpjb25z
dF9pdGVyYXRvciBpdCA9IGxheWVyQ2xvbmVNYXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkK
KyAgICAgICAgICAgIGl0LT5zZWNvbmQtPnNldE9wYXF1ZShtX2NvbnRlbnRzT3BhcXVlKTsKKyAg
ICB9Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjp1cGRhdGVCYWNrZmFjZVZpc2liaWxpdHko
KQoreworICAgIGlmIChtX3N0cnVjdHVyYWxMYXllciAmJiBzdHJ1Y3R1cmFsTGF5ZXJQdXJwb3Nl
KCkgPT0gU3RydWN0dXJhbExheWVyRm9yUmVwbGljYUZsYXR0ZW5pbmcpIHsKKyAgICAgICAgbV9z
dHJ1Y3R1cmFsTGF5ZXItPnNldERvdWJsZVNpZGVkKG1fYmFja2ZhY2VWaXNpYmlsaXR5KTsKKwor
ICAgICAgICBpZiAoTGF5ZXJNYXAqIGxheWVyQ2xvbmVNYXAgPSBtX3N0cnVjdHVyYWxMYXllckNs
b25lcy5nZXQoKSkgeworICAgICAgICAgICAgTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9
IGxheWVyQ2xvbmVNYXAtPmVuZCgpOworICAgICAgICAgICAgZm9yIChMYXllck1hcDo6Y29uc3Rf
aXRlcmF0b3IgaXQgPSBsYXllckNsb25lTWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisg
ICAgICAgICAgICAgICAgaXQtPnNlY29uZC0+c2V0RG91YmxlU2lkZWQobV9iYWNrZmFjZVZpc2li
aWxpdHkpOworICAgICAgICB9CisgICAgfQorCisgICAgbV9sYXllci0+c2V0RG91YmxlU2lkZWQo
bV9iYWNrZmFjZVZpc2liaWxpdHkpOworCisgICAgaWYgKExheWVyTWFwKiBsYXllckNsb25lTWFw
ID0gbV9sYXllckNsb25lcy5nZXQoKSkgeworICAgICAgICBMYXllck1hcDo6Y29uc3RfaXRlcmF0
b3IgZW5kID0gbGF5ZXJDbG9uZU1hcC0+ZW5kKCk7CisgICAgICAgIGZvciAoTGF5ZXJNYXA6OmNv
bnN0X2l0ZXJhdG9yIGl0ID0gbGF5ZXJDbG9uZU1hcC0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0
KQorICAgICAgICAgICAgaXQtPnNlY29uZC0+c2V0RG91YmxlU2lkZWQobV9iYWNrZmFjZVZpc2li
aWxpdHkpOworICAgIH0KK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZVN0cnVjdHVy
YWxMYXllcigpCit7CisgICAgZW5zdXJlU3RydWN0dXJhbExheWVyKHN0cnVjdHVyYWxMYXllclB1
cnBvc2UoKSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjplbnN1cmVTdHJ1Y3R1cmFsTGF5
ZXIoU3RydWN0dXJhbExheWVyUHVycG9zZSBwdXJwb3NlKQoreworICAgIGlmIChwdXJwb3NlID09
IE5vU3RydWN0dXJhbExheWVyKSB7CisgICAgICAgIGlmIChtX3N0cnVjdHVyYWxMYXllcikgewor
ICAgICAgICAgICAgLy8gUmVwbGFjZSB0aGUgdHJhbnNmb3JtTGF5ZXIgaW4gdGhlIHBhcmVudCB3
aXRoIHRoaXMgbGF5ZXIuCisgICAgICAgICAgICBtX2xheWVyLT5yZW1vdmVGcm9tU3VwZXJsYXll
cigpOworICAgICAgICAgICAgbV9zdHJ1Y3R1cmFsTGF5ZXItPnN1cGVybGF5ZXIoKS0+cmVwbGFj
ZVN1YmxheWVyKG1fc3RydWN0dXJhbExheWVyLmdldCgpLCBtX2xheWVyLmdldCgpKTsKKworICAg
ICAgICAgICAgbW92ZU9yQ29weUFuaW1hdGlvbnNGb3JQcm9wZXJ0eShNb3ZlLCBBbmltYXRlZFBy
b3BlcnR5V2Via2l0VHJhbnNmb3JtLCBtX3N0cnVjdHVyYWxMYXllci5nZXQoKSwgbV9sYXllci5n
ZXQoKSk7CisgICAgICAgICAgICBtb3ZlT3JDb3B5QW5pbWF0aW9uc0ZvclByb3BlcnR5KE1vdmUs
IEFuaW1hdGVkUHJvcGVydHlPcGFjaXR5LCBtX3N0cnVjdHVyYWxMYXllci5nZXQoKSwgbV9sYXll
ci5nZXQoKSk7CisKKyAgICAgICAgICAgIC8vIFJlbGVhc2UgdGhlIHN0cnVjdHVyYWwgbGF5ZXIu
CisgICAgICAgICAgICBtX3N0cnVjdHVyYWxMYXllciA9IDA7CisKKyAgICAgICAgICAgIC8vIFVw
ZGF0ZSB0aGUgcHJvcGVydGllcyBvZiBtX2xheWVyIG5vdyB0aGF0IHdlIG5vIGxvbmdlciBoYXZl
IGEgc3RydWN0dXJhbCBsYXllci4KKyAgICAgICAgICAgIHVwZGF0ZUxheWVyUG9zaXRpb24oKTsK
KyAgICAgICAgICAgIHVwZGF0ZUxheWVyU2l6ZSgpOworICAgICAgICAgICAgdXBkYXRlQW5jaG9y
UG9pbnQoKTsKKyAgICAgICAgICAgIHVwZGF0ZVRyYW5zZm9ybSgpOworICAgICAgICAgICAgdXBk
YXRlQ2hpbGRyZW5UcmFuc2Zvcm0oKTsKKworICAgICAgICAgICAgdXBkYXRlU3VibGF5ZXJMaXN0
KCk7CisgICAgICAgICAgICB1cGRhdGVPcGFjaXR5T25MYXllcigpOworICAgICAgICB9CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgYm9vbCBzdHJ1Y3R1cmFsTGF5ZXJDaGFuZ2Vk
ID0gZmFsc2U7CisgICAgCisgICAgaWYgKHB1cnBvc2UgPT0gU3RydWN0dXJhbExheWVyRm9yUHJl
c2VydmVzM0QpIHsKKyAgICAgICAgaWYgKG1fc3RydWN0dXJhbExheWVyICYmIG1fc3RydWN0dXJh
bExheWVyLT5sYXllclR5cGUoKSAhPSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVRyYW5zZm9y
bUxheWVyKQorICAgICAgICAgICAgbV9zdHJ1Y3R1cmFsTGF5ZXIgPSAwOworICAgICAgICAKKyAg
ICAgICAgaWYgKCFtX3N0cnVjdHVyYWxMYXllcikgeworICAgICAgICAgICAgbV9zdHJ1Y3R1cmFs
TGF5ZXIgPSBQbGF0Zm9ybUNBTGF5ZXI6OmNyZWF0ZShQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlw
ZVRyYW5zZm9ybUxheWVyLCB0aGlzKTsKKyAgICAgICAgICAgIHN0cnVjdHVyYWxMYXllckNoYW5n
ZWQgPSB0cnVlOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKG1fc3RydWN0
dXJhbExheWVyICYmIG1fc3RydWN0dXJhbExheWVyLT5sYXllclR5cGUoKSAhPSBQbGF0Zm9ybUNB
TGF5ZXI6OkxheWVyVHlwZUxheWVyKQorICAgICAgICAgICAgbV9zdHJ1Y3R1cmFsTGF5ZXIgPSAw
OworCisgICAgICAgIGlmICghbV9zdHJ1Y3R1cmFsTGF5ZXIpIHsKKyAgICAgICAgICAgIG1fc3Ry
dWN0dXJhbExheWVyID0gUGxhdGZvcm1DQUxheWVyOjpjcmVhdGUoUGxhdGZvcm1DQUxheWVyOjpM
YXllclR5cGVMYXllciwgdGhpcyk7CisgICAgICAgICAgICBzdHJ1Y3R1cmFsTGF5ZXJDaGFuZ2Vk
ID0gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBpZiAoIXN0cnVjdHVyYWxMYXll
ckNoYW5nZWQpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICB1cGRhdGVMYXllck5hbWVzKCk7
CisKKyAgICAvLyBVcGRhdGUgdGhlIHByb3BlcnRpZXMgb2YgdGhlIHN0cnVjdHVyYWwgbGF5ZXIu
CisgICAgdXBkYXRlTGF5ZXJQb3NpdGlvbigpOworICAgIHVwZGF0ZUxheWVyU2l6ZSgpOworICAg
IHVwZGF0ZUFuY2hvclBvaW50KCk7CisgICAgdXBkYXRlVHJhbnNmb3JtKCk7CisgICAgdXBkYXRl
Q2hpbGRyZW5UcmFuc2Zvcm0oKTsKKyAgICB1cGRhdGVCYWNrZmFjZVZpc2liaWxpdHkoKTsKKyAg
ICAKKyAgICAvLyBTZXQgcHJvcGVydGllcyBvZiBtX2xheWVyIHRvIHRoZWlyIGRlZmF1bHQgdmFs
dWVzLCBzaW5jZSB0aGVzZSBhcmUgZXhwcmVzc2VkIG9uIG9uIHRoZSBzdHJ1Y3R1cmFsIGxheWVy
LgorICAgIEZsb2F0UG9pbnQgcG9pbnQobV9zaXplLndpZHRoKCkgLyAyLjBmLCBtX3NpemUuaGVp
Z2h0KCkgLyAyLjBmKTsKKyAgICBtX2xheWVyLT5zZXRQb3NpdGlvbihwb2ludCk7CisgICAgbV9s
YXllci0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludDNEKDAuNWYsIDAuNWYsIDApKTsKKyAgICBt
X2xheWVyLT5zZXRUcmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRyaXgoKSk7CisgICAgbV9sYXll
ci0+c2V0T3BhY2l0eSgxKTsKKworICAgIC8vIE1vdmUgdGhpcyBsYXllciB0byBiZSBhIGNoaWxk
IG9mIHRoZSB0cmFuc2Zvcm0gbGF5ZXIuCisgICAgbV9sYXllci0+c3VwZXJsYXllcigpLT5yZXBs
YWNlU3VibGF5ZXIobV9sYXllci5nZXQoKSwgbV9zdHJ1Y3R1cmFsTGF5ZXIuZ2V0KCkpOworICAg
IG1fc3RydWN0dXJhbExheWVyLT5hcHBlbmRTdWJsYXllcihtX2xheWVyLmdldCgpKTsKKworICAg
IG1vdmVPckNvcHlBbmltYXRpb25zRm9yUHJvcGVydHkoTW92ZSwgQW5pbWF0ZWRQcm9wZXJ0eVdl
YmtpdFRyYW5zZm9ybSwgbV9sYXllci5nZXQoKSwgbV9zdHJ1Y3R1cmFsTGF5ZXIuZ2V0KCkpOwor
ICAgIG1vdmVPckNvcHlBbmltYXRpb25zRm9yUHJvcGVydHkoTW92ZSwgQW5pbWF0ZWRQcm9wZXJ0
eU9wYWNpdHksIG1fbGF5ZXIuZ2V0KCksIG1fc3RydWN0dXJhbExheWVyLmdldCgpKTsKKyAgICAK
KyAgICB1cGRhdGVTdWJsYXllckxpc3QoKTsKKyAgICB1cGRhdGVPcGFjaXR5T25MYXllcigpOwor
fQorCitHcmFwaGljc0xheWVyQ0E6OlN0cnVjdHVyYWxMYXllclB1cnBvc2UgR3JhcGhpY3NMYXll
ckNBOjpzdHJ1Y3R1cmFsTGF5ZXJQdXJwb3NlKCkgY29uc3QKK3sKKyAgICBpZiAocHJlc2VydmVz
M0QoKSkKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyYWxMYXllckZvclByZXNlcnZlczNEOworICAg
IAorICAgIGlmIChpc1JlcGxpY2F0ZWQoKSkKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyYWxMYXll
ckZvclJlcGxpY2FGbGF0dGVuaW5nOworICAgIAorICAgIHJldHVybiBOb1N0cnVjdHVyYWxMYXll
cjsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUxheWVyRHJhd3NDb250ZW50KCkK
K3sKKyAgICBib29sIG5lZWRUaWxlZExheWVyID0gcmVxdWlyZXNUaWxlZExheWVyKG1fc2l6ZSk7
CisgICAgaWYgKG5lZWRUaWxlZExheWVyICE9IG1fdXNpbmdUaWxlZExheWVyKQorICAgICAgICBz
d2FwRnJvbU9yVG9UaWxlZExheWVyKG5lZWRUaWxlZExheWVyKTsKKworICAgIGlmIChtX2RyYXdz
Q29udGVudCkKKyAgICAgICAgbV9sYXllci0+c2V0TmVlZHNEaXNwbGF5KCk7CisgICAgZWxzZQor
ICAgICAgICBtX2xheWVyLT5zZXRDb250ZW50cygwKTsKKworICAgIHVwZGF0ZURlYnVnSW5kaWNh
dG9ycygpOworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlTGF5ZXJCYWNrZ3JvdW5k
Q29sb3IoKQoreworICAgIGlmICghbV9jb250ZW50c0xheWVyKQorICAgICAgICByZXR1cm47CisK
KyAgICAvLyBXZSBuZXZlciBjcmVhdGUgdGhlIGNvbnRlbnRzIGxheWVyIGp1c3QgZm9yIGJhY2tn
cm91bmQgY29sb3IgeWV0LgorICAgIGlmIChtX2JhY2tncm91bmRDb2xvclNldCkKKyAgICAgICAg
bV9jb250ZW50c0xheWVyLT5zZXRCYWNrZ3JvdW5kQ29sb3IobV9iYWNrZ3JvdW5kQ29sb3IpOwor
ICAgIGVsc2UKKyAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRCYWNrZ3JvdW5kQ29sb3IoQ29s
b3I6OnRyYW5zcGFyZW50KTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUNvbnRl
bnRzSW1hZ2UoKQoreworICAgIGlmIChtX3BlbmRpbmdDb250ZW50c0ltYWdlKSB7CisgICAgICAg
IGlmICghbV9jb250ZW50c0xheWVyLmdldCgpKSB7CisgICAgICAgICAgICBtX2NvbnRlbnRzTGF5
ZXIgPSBQbGF0Zm9ybUNBTGF5ZXI6OmNyZWF0ZShQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUxh
eWVyLCB0aGlzKTsKKyNpZm5kZWYgTkRFQlVHCisgICAgICAgICAgICBtX2NvbnRlbnRzTGF5ZXIt
PnNldE5hbWUoIkltYWdlIExheWVyIik7CisjZW5kaWYKKyAgICAgICAgICAgIHNldHVwQ29udGVu
dHNMYXllcihtX2NvbnRlbnRzTGF5ZXIuZ2V0KCkpOworICAgICAgICAgICAgLy8gbV9jb250ZW50
c0xheWVyIHdpbGwgYmUgcGFyZW50ZWQgYnkgdXBkYXRlU3VibGF5ZXJMaXN0CisgICAgICAgIH0K
KworICAgICAgICAvLyBGSVhNRTogbWF5YmUgb25seSBkbyB0cmlsaW5lYXIgaWYgdGhlIGltYWdl
IGlzIGJlaW5nIHNjYWxlZCBkb3duLAorICAgICAgICAvLyBidXQgdGhlbiB3aGF0IGlmIHRoZSBs
YXllciBzaXplIGNoYW5nZXM/CisjaWYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFk
ZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpCisgICAgICAgIG1fY29udGVudHNMYXllci0+c2V0
TWluaWZpY2F0aW9uRmlsdGVyKFBsYXRmb3JtQ0FMYXllcjo6VHJpbGluZWFyKTsKKyNlbmRpZgor
ICAgICAgICBtX2NvbnRlbnRzTGF5ZXItPnNldENvbnRlbnRzKG1fcGVuZGluZ0NvbnRlbnRzSW1h
Z2UuZ2V0KCkpOworICAgICAgICBtX3BlbmRpbmdDb250ZW50c0ltYWdlID0gMDsKKworICAgICAg
ICBpZiAobV9jb250ZW50c0xheWVyQ2xvbmVzKSB7CisgICAgICAgICAgICBMYXllck1hcDo6Y29u
c3RfaXRlcmF0b3IgZW5kID0gbV9jb250ZW50c0xheWVyQ2xvbmVzLT5lbmQoKTsKKyAgICAgICAg
ICAgIGZvciAoTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9jb250ZW50c0xheWVyQ2xv
bmVzLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgICAgICAgICAgaXQtPnNlY29u
ZC0+c2V0Q29udGVudHMobV9jb250ZW50c0xheWVyLT5jb250ZW50cygpKTsKKyAgICAgICAgfQor
ICAgICAgICAKKyAgICAgICAgdXBkYXRlQ29udGVudHNSZWN0KCk7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgLy8gTm8gaW1hZ2UuCisgICAgICAgIC8vIG1fY29udGVudHNMYXllciB3aWxsIGJlIHJl
bW92ZWQgdmlhIHVwZGF0ZVN1YmxheWVyTGlzdC4KKyAgICAgICAgbV9jb250ZW50c0xheWVyID0g
MDsKKyAgICB9Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjp1cGRhdGVDb250ZW50c01lZGlh
TGF5ZXIoKQoreworICAgIC8vIFZpZGVvIGxheWVyIHdhcyBzZXQgYXMgbV9jb250ZW50c0xheWVy
LCBhbmQgd2lsbCBnZXQgcGFyZW50ZWQgaW4gdXBkYXRlU3VibGF5ZXJMaXN0KCkuCisgICAgaWYg
KG1fY29udGVudHNMYXllcikgeworICAgICAgICBzZXR1cENvbnRlbnRzTGF5ZXIobV9jb250ZW50
c0xheWVyLmdldCgpKTsKKyAgICAgICAgdXBkYXRlQ29udGVudHNSZWN0KCk7CisgICAgfQorfQor
Cit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlQ29udGVudHNDYW52YXNMYXllcigpCit7Cisg
ICAgLy8gQ2FudmFzTGF5ZXIgd2FzIHNldCBhcyBtX2NvbnRlbnRzTGF5ZXIsIGFuZCB3aWxsIGdl
dCBwYXJlbnRlZCBpbiB1cGRhdGVTdWJsYXllckxpc3QoKS4KKyAgICBpZiAobV9jb250ZW50c0xh
eWVyKSB7CisgICAgICAgIHNldHVwQ29udGVudHNMYXllcihtX2NvbnRlbnRzTGF5ZXIuZ2V0KCkp
OworICAgICAgICBtX2NvbnRlbnRzTGF5ZXItPnNldE5lZWRzRGlzcGxheSgpOworICAgICAgICB1
cGRhdGVDb250ZW50c1JlY3QoKTsKKyAgICB9Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjp1
cGRhdGVDb250ZW50c1JlY3QoKQoreworICAgIGlmICghbV9jb250ZW50c0xheWVyKQorICAgICAg
ICByZXR1cm47CisKKyAgICBGbG9hdFBvaW50IHBvaW50KG1fY29udGVudHNSZWN0LngoKSwgbV9j
b250ZW50c1JlY3QueSgpKTsKKyAgICBGbG9hdFJlY3QgcmVjdCgwLCAwLCBtX2NvbnRlbnRzUmVj
dC53aWR0aCgpLCBtX2NvbnRlbnRzUmVjdC5oZWlnaHQoKSk7CisKKyAgICBtX2NvbnRlbnRzTGF5
ZXItPnNldFBvc2l0aW9uKHBvaW50KTsKKyAgICBtX2NvbnRlbnRzTGF5ZXItPnNldEJvdW5kcyhy
ZWN0KTsKKworICAgIGlmIChtX2NvbnRlbnRzTGF5ZXJDbG9uZXMpIHsKKyAgICAgICAgTGF5ZXJN
YXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fY29udGVudHNMYXllckNsb25lcy0+ZW5kKCk7Cisg
ICAgICAgIGZvciAoTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9jb250ZW50c0xheWVy
Q2xvbmVzLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgICAgIGl0LT5zZWNv
bmQtPnNldFBvc2l0aW9uKHBvaW50KTsKKyAgICAgICAgICAgIGl0LT5zZWNvbmQtPnNldEJvdW5k
cyhyZWN0KTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnVw
ZGF0ZU1hc2tMYXllcigpCit7CisgICAgUGxhdGZvcm1DQUxheWVyKiBtYXNrQ0FMYXllciA9IG1f
bWFza0xheWVyID8gc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllckNBKj4obV9tYXNrTGF5ZXIpLT5w
cmltYXJ5TGF5ZXIoKSA6IDA7CisgICAgbV9sYXllci0+c2V0TWFzayhtYXNrQ0FMYXllcik7CisK
KyAgICBMYXllck1hcCogbWFza0xheWVyQ2xvbmVNYXAgPSBtX21hc2tMYXllciA/IHN0YXRpY19j
YXN0PEdyYXBoaWNzTGF5ZXJDQSo+KG1fbWFza0xheWVyKS0+cHJpbWFyeUxheWVyQ2xvbmVzKCkg
OiAwOworICAgIAorICAgIGlmIChMYXllck1hcCogbGF5ZXJDbG9uZU1hcCA9IG1fbGF5ZXJDbG9u
ZXMuZ2V0KCkpIHsKKyAgICAgICAgTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGxheWVy
Q2xvbmVNYXAtPmVuZCgpOworICAgICAgICBmb3IgKExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBp
dCA9IGxheWVyQ2xvbmVNYXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeyAgICAgICAgICAg
IAorICAgICAgICAgICAgUGxhdGZvcm1DQUxheWVyKiBtYXNrQ2xvbmUgPSBtYXNrTGF5ZXJDbG9u
ZU1hcCA/IG1hc2tMYXllckNsb25lTWFwLT5nZXQoaXQtPmZpcnN0KS5nZXQoKSA6IDA7CisgICAg
ICAgICAgICBpdC0+c2Vjb25kLT5zZXRNYXNrKG1hc2tDbG9uZSk7CisgICAgICAgIH0KKyAgICB9
Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjp1cGRhdGVSZXBsaWNhdGVkTGF5ZXJzKCkKK3sK
KyAgICAvLyBDbG9uZSB0aGUgZGVzY2VuZGFudHMgb2YgdGhlIHJlcGxpY2F0ZWQgbGF5ZXIsIGFu
ZCBwYXJlbnQgdW5kZXIgdXMuCisgICAgUmVwbGljYVN0YXRlIHJlcGxpY2FTdGF0ZShSZXBsaWNh
U3RhdGU6OlJlcGxpY2FCcmFuY2gpOworCisgICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj5yZXBs
aWNhUm9vdCA9IHJlcGxpY2F0ZWRMYXllclJvb3QocmVwbGljYVN0YXRlKTsKKyAgICBpZiAoIXJl
cGxpY2FSb290KQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9zdHJ1Y3R1cmFsTGF5ZXIp
CisgICAgICAgIG1fc3RydWN0dXJhbExheWVyLT5pbnNlcnRTdWJsYXllcihyZXBsaWNhUm9vdC5n
ZXQoKSwgMCk7CisgICAgZWxzZQorICAgICAgICBtX2xheWVyLT5pbnNlcnRTdWJsYXllcihyZXBs
aWNhUm9vdC5nZXQoKSwgMCk7Cit9CisKKy8vIEZvciBub3csIHRoaXMgYXNzdW1lcyB0aGF0IGxh
eWVycyBvbmx5IGV2ZXIgaGF2ZSBvbmUgcmVwbGljYSwgc28gcmVwbGljYUluZGljZXMgY29udGFp
bnMgb25seSAwIGFuZCAxLgorR3JhcGhpY3NMYXllckNBOjpDbG9uZUlEIEdyYXBoaWNzTGF5ZXJD
QTo6UmVwbGljYVN0YXRlOjpjbG9uZUlEKCkgY29uc3QKK3sKKyAgICBzaXplX3QgZGVwdGggPSBt
X3JlcGxpY2FCcmFuY2hlcy5zaXplKCk7CisKKyAgICBjb25zdCBzaXplX3QgYml0c1BlclVDaGFy
ID0gc2l6ZW9mKFVDaGFyKSAqIDg7CisgICAgc2l6ZV90IHZlY3RvclNpemUgPSAoZGVwdGggKyBi
aXRzUGVyVUNoYXIgLSAxKSAvIGJpdHNQZXJVQ2hhcjsKKyAgICAKKyAgICBWZWN0b3I8VUNoYXI+
IHJlc3VsdCh2ZWN0b3JTaXplKTsKKyAgICByZXN1bHQuZmlsbCgwKTsKKworICAgIC8vIENyZWF0
ZSBhIHN0cmluZyBmcm9tIHRoZSBiaXQgc2VxdWVuY2Ugd2hpY2ggd2UgY2FuIHVzZSB0byBpZGVu
dGlmeSB0aGUgY2xvbmUuCisgICAgLy8gTm90ZSB0aGF0IHRoZSBzdHJpbmcgbWF5IGNvbnRhaW4g
ZW1iZWRkZWQgbnVsbHMsIGJ1dCB0aGF0J3MgT0suCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBkZXB0aDsgKytpKSB7CisgICAgICAgIFVDaGFyJiBjdXJyQ2hhciA9IHJlc3VsdFtpIC8gYml0
c1BlclVDaGFyXTsKKyAgICAgICAgY3VyckNoYXIgPSAoY3VyckNoYXIgPDwgMSkgfCBtX3JlcGxp
Y2FCcmFuY2hlc1tpXTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIFN0cmluZzo6YWRvcHQocmVz
dWx0KTsKK30KKworUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IEdyYXBoaWNzTGF5ZXJDQTo6
cmVwbGljYXRlZExheWVyUm9vdChSZXBsaWNhU3RhdGUmIHJlcGxpY2FTdGF0ZSkKK3sKKyAgICAv
LyBMaW1pdCByZXBsaWNhIG5lc3RpbmcsIHRvIGF2b2lkIDJeTiBleHBsb3Npb24gb2YgcmVwbGlj
YSBsYXllcnMuCisgICAgaWYgKCFtX3JlcGxpY2F0ZWRMYXllciB8fCByZXBsaWNhU3RhdGUucmVw
bGljYURlcHRoKCkgPT0gUmVwbGljYVN0YXRlOjptYXhSZXBsaWNhRGVwdGgpCisgICAgICAgIHJl
dHVybiAwOworCisgICAgR3JhcGhpY3NMYXllckNBKiByZXBsaWNhdGVkTGF5ZXIgPSBzdGF0aWNf
Y2FzdDxHcmFwaGljc0xheWVyQ0EqPihtX3JlcGxpY2F0ZWRMYXllcik7CisgICAgCisgICAgUmVm
UHRyPFBsYXRmb3JtQ0FMYXllcj4gY2xvbmVkTGF5ZXJSb290ID0gcmVwbGljYXRlZExheWVyLT5m
ZXRjaENsb25lTGF5ZXJzKHRoaXMsIHJlcGxpY2FTdGF0ZSwgUm9vdENsb25lTGV2ZWwpOworICAg
IEZsb2F0UG9pbnQgY2xvbmVSb290UG9zaXRpb24gPSByZXBsaWNhdGVkTGF5ZXItPnBvc2l0aW9u
Rm9yQ2xvbmVSb290TGF5ZXIoKTsKKworICAgIC8vIFJlcGxpY2Egcm9vdCBoYXMgbm8gb2Zmc2V0
IG9yIHRyYW5zZm9ybQorICAgIGNsb25lZExheWVyUm9vdC0+c2V0UG9zaXRpb24oY2xvbmVSb290
UG9zaXRpb24pOworICAgIGNsb25lZExheWVyUm9vdC0+c2V0VHJhbnNmb3JtKFRyYW5zZm9ybWF0
aW9uTWF0cml4KCkpOworCisgICAgcmV0dXJuIGNsb25lZExheWVyUm9vdDsKK30KKwordm9pZCBH
cmFwaGljc0xheWVyQ0E6OnVwZGF0ZUxheWVyQW5pbWF0aW9ucygpCit7CisgICAgaWYgKG1fYW5p
bWF0aW9uc1RvUHJvY2Vzcy5zaXplKCkpIHsKKyAgICAgICAgQW5pbWF0aW9uc1RvUHJvY2Vzc01h
cDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9hbmltYXRpb25zVG9Qcm9jZXNzLmVuZCgpOworICAg
ICAgICBmb3IgKEFuaW1hdGlvbnNUb1Byb2Nlc3NNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9h
bmltYXRpb25zVG9Qcm9jZXNzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICAg
ICAgY29uc3QgU3RyaW5nJiBjdXJyQW5pbWF0aW9uTmFtZSA9IGl0LT5maXJzdDsKKyAgICAgICAg
ICAgIEFuaW1hdGlvbnNNYXA6Oml0ZXJhdG9yIGFuaW1hdGlvbkl0ID0gbV9ydW5uaW5nQW5pbWF0
aW9ucy5maW5kKGN1cnJBbmltYXRpb25OYW1lKTsKKyAgICAgICAgICAgIGlmIChhbmltYXRpb25J
dCA9PSBtX3J1bm5pbmdBbmltYXRpb25zLmVuZCgpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworCisgICAgICAgICAgICBjb25zdCBBbmltYXRpb25Qcm9jZXNzaW5nQWN0aW9uJiBwcm9jZXNz
aW5nSW5mbyA9IGl0LT5zZWNvbmQ7CisgICAgICAgICAgICBjb25zdCBWZWN0b3I8TGF5ZXJQcm9w
ZXJ0eUFuaW1hdGlvbj4mIGFuaW1hdGlvbnMgPSBhbmltYXRpb25JdC0+c2Vjb25kOworICAgICAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhbmltYXRpb25zLnNpemUoKTsgKytpKSB7Cisg
ICAgICAgICAgICAgICAgY29uc3QgTGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbiYgY3VyckFuaW1hdGlv
biA9IGFuaW1hdGlvbnNbaV07CisgICAgICAgICAgICAgICAgc3dpdGNoIChwcm9jZXNzaW5nSW5m
by5hY3Rpb24pIHsKKyAgICAgICAgICAgICAgICBjYXNlIFJlbW92ZToKKyAgICAgICAgICAgICAg
ICAgICAgcmVtb3ZlQ0FBbmltYXRpb25Gcm9tTGF5ZXIoY3VyckFuaW1hdGlvbi5tX3Byb3BlcnR5
LCBjdXJyQW5pbWF0aW9uTmFtZSwgY3VyckFuaW1hdGlvbi5tX2luZGV4KTsKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBQYXVzZToKKyAgICAgICAgICAg
ICAgICAgICAgcGF1c2VDQUFuaW1hdGlvbk9uTGF5ZXIoY3VyckFuaW1hdGlvbi5tX3Byb3BlcnR5
LCBjdXJyQW5pbWF0aW9uTmFtZSwgY3VyckFuaW1hdGlvbi5tX2luZGV4LCBwcm9jZXNzaW5nSW5m
by50aW1lT2Zmc2V0KTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAocHJvY2Vzc2luZ0luZm8uYWN0
aW9uID09IFJlbW92ZSkKKyAgICAgICAgICAgICAgICBtX3J1bm5pbmdBbmltYXRpb25zLnJlbW92
ZShjdXJyQW5pbWF0aW9uTmFtZSk7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgbV9hbmltYXRp
b25zVG9Qcm9jZXNzLmNsZWFyKCk7CisgICAgfQorICAgIAorICAgIHNpemVfdCBudW1BbmltYXRp
b25zOworICAgIGlmICgobnVtQW5pbWF0aW9ucyA9IG1fdW5jb21pdHRlZEFuaW1hdGlvbnMuc2l6
ZSgpKSkgeworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bUFuaW1hdGlvbnM7ICsr
aSkgeworICAgICAgICAgICAgY29uc3QgTGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbiYgcGVuZGluZ0Fu
aW1hdGlvbiA9IG1fdW5jb21pdHRlZEFuaW1hdGlvbnNbaV07CisgICAgICAgICAgICBzZXRBbmlt
YXRpb25PbkxheWVyKHBlbmRpbmdBbmltYXRpb24ubV9hbmltYXRpb24uZ2V0KCksIHBlbmRpbmdB
bmltYXRpb24ubV9wcm9wZXJ0eSwgcGVuZGluZ0FuaW1hdGlvbi5tX25hbWUsIHBlbmRpbmdBbmlt
YXRpb24ubV9pbmRleCwgcGVuZGluZ0FuaW1hdGlvbi5tX3RpbWVPZmZzZXQpOworICAgICAgICAg
ICAgCisgICAgICAgICAgICBBbmltYXRpb25zTWFwOjppdGVyYXRvciBpdCA9IG1fcnVubmluZ0Fu
aW1hdGlvbnMuZmluZChwZW5kaW5nQW5pbWF0aW9uLm1fbmFtZSk7CisgICAgICAgICAgICBpZiAo
aXQgPT0gbV9ydW5uaW5nQW5pbWF0aW9ucy5lbmQoKSkgeworICAgICAgICAgICAgICAgIFZlY3Rv
cjxMYXllclByb3BlcnR5QW5pbWF0aW9uPiBhbmltYXRpb25zOworICAgICAgICAgICAgICAgIGFu
aW1hdGlvbnMuYXBwZW5kKHBlbmRpbmdBbmltYXRpb24pOworICAgICAgICAgICAgICAgIG1fcnVu
bmluZ0FuaW1hdGlvbnMuYWRkKHBlbmRpbmdBbmltYXRpb24ubV9uYW1lLCBhbmltYXRpb25zKTsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgVmVjdG9yPExheWVyUHJvcGVy
dHlBbmltYXRpb24+JiBhbmltYXRpb25zID0gaXQtPnNlY29uZDsKKyAgICAgICAgICAgICAgICBh
bmltYXRpb25zLmFwcGVuZChwZW5kaW5nQW5pbWF0aW9uKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICAgICAKKyAgICAgICAgbV91bmNvbWl0dGVkQW5pbWF0aW9ucy5jbGVhcigpOwor
ICAgIH0KK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldEFuaW1hdGlvbk9uTGF5ZXIoUGxh
dGZvcm1DQUFuaW1hdGlvbiogY2FBbmltLCBBbmltYXRlZFByb3BlcnR5SUQgcHJvcGVydHksIGNv
bnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSwgaW50IGluZGV4LCBkb3VibGUgdGltZU9mZnNldCkK
K3sKKyAgICBQbGF0Zm9ybUNBTGF5ZXIqIGxheWVyID0gYW5pbWF0ZWRMYXllcihwcm9wZXJ0eSk7
CisgICAgCisgICAgaWYgKHRpbWVPZmZzZXQpIHsKKyAgICAgICAgY2FBbmltLT5zZXRCZWdpblRp
bWUoQ0FDdXJyZW50TWVkaWFUaW1lKCkgLSB0aW1lT2Zmc2V0KTsKKyAgICAgICAgY2FBbmltLT5z
ZXROb25aZXJvQmVnaW5UaW1lRmxhZyh0cnVlKTsKKyAgICB9CisKKyAgICBTdHJpbmcgYW5pbWF0
aW9uSUQgPSBhbmltYXRpb25JZGVudGlmaWVyKGFuaW1hdGlvbk5hbWUsIHByb3BlcnR5LCBpbmRl
eCk7CisKKyAgICBsYXllci0+cmVtb3ZlQW5pbWF0aW9uRm9yS2V5KGFuaW1hdGlvbklEKTsKKyAg
ICBsYXllci0+YWRkQW5pbWF0aW9uRm9yS2V5KGFuaW1hdGlvbklELCBjYUFuaW0pOworCisgICAg
aWYgKExheWVyTWFwKiBsYXllckNsb25lTWFwID0gYW5pbWF0ZWRMYXllckNsb25lcyhwcm9wZXJ0
eSkpIHsKKyAgICAgICAgTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGxheWVyQ2xvbmVN
YXAtPmVuZCgpOworICAgICAgICBmb3IgKExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGxh
eWVyQ2xvbmVNYXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICAgICAgLy8g
U2tpcCBpbW1lZGlhdGUgcmVwbGljYXMsIHNpbmNlIHRoZXkgbW92ZSB3aXRoIHRoZSBvcmlnaW5h
bC4KKyAgICAgICAgICAgIGlmIChtX3JlcGxpY2FMYXllciAmJiBpc1JlcGxpY2F0ZWRSb290Q2xv
bmUoaXQtPmZpcnN0KSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAg
aXQtPnNlY29uZC0+cmVtb3ZlQW5pbWF0aW9uRm9yS2V5KGFuaW1hdGlvbklEKTsKKyAgICAgICAg
ICAgIGl0LT5zZWNvbmQtPmFkZEFuaW1hdGlvbkZvcktleShhbmltYXRpb25JRCwgY2FBbmltKTsK
KyAgICAgICAgfQorICAgIH0KK30KKworLy8gV29ya2Fyb3VuZCBmb3IgPHJkYXI6Ly9wcm9ibGVt
LzczMTEzNjc+CitzdGF0aWMgdm9pZCBidWc3MzExMzY3V29ya2Fyb3VuZChQbGF0Zm9ybUNBTGF5
ZXIqIHRyYW5zZm9ybUxheWVyLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3Jt
KQoreworICAgIGlmICghdHJhbnNmb3JtTGF5ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIFRy
YW5zZm9ybWF0aW9uTWF0cml4IGNhVHJhbnNmb3JtID0gdHJhbnNmb3JtOworICAgIGNhVHJhbnNm
b3JtLnNldE00MShjYVRyYW5zZm9ybS5tNDEoKSArIDEpOworICAgIHRyYW5zZm9ybUxheWVyLT5z
ZXRUcmFuc2Zvcm0oY2FUcmFuc2Zvcm0pOworCisgICAgY2FUcmFuc2Zvcm0uc2V0TTQxKGNhVHJh
bnNmb3JtLm00MSgpIC0gMSk7CisgICAgdHJhbnNmb3JtTGF5ZXItPnNldFRyYW5zZm9ybShjYVRy
YW5zZm9ybSk7Cit9CisKK2Jvb2wgR3JhcGhpY3NMYXllckNBOjpyZW1vdmVDQUFuaW1hdGlvbkZy
b21MYXllcihBbmltYXRlZFByb3BlcnR5SUQgcHJvcGVydHksIGNvbnN0IFN0cmluZyYgYW5pbWF0
aW9uTmFtZSwgaW50IGluZGV4KQoreworICAgIFBsYXRmb3JtQ0FMYXllciogbGF5ZXIgPSBhbmlt
YXRlZExheWVyKHByb3BlcnR5KTsKKworICAgIFN0cmluZyBhbmltYXRpb25JRCA9IGFuaW1hdGlv
bklkZW50aWZpZXIoYW5pbWF0aW9uTmFtZSwgcHJvcGVydHksIGluZGV4KTsKKworICAgIGlmICgh
bGF5ZXItPmFuaW1hdGlvbkZvcktleShhbmltYXRpb25JRCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAKKyAgICBsYXllci0+cmVtb3ZlQW5pbWF0aW9uRm9yS2V5KGFuaW1hdGlvbklEKTsK
KyAgICBidWc3MzExMzY3V29ya2Fyb3VuZChtX3N0cnVjdHVyYWxMYXllci5nZXQoKSwgbV90cmFu
c2Zvcm0pOworCisgICAgaWYgKExheWVyTWFwKiBsYXllckNsb25lTWFwID0gYW5pbWF0ZWRMYXll
ckNsb25lcyhwcm9wZXJ0eSkpIHsKKyAgICAgICAgTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVu
ZCA9IGxheWVyQ2xvbmVNYXAtPmVuZCgpOworICAgICAgICBmb3IgKExheWVyTWFwOjpjb25zdF9p
dGVyYXRvciBpdCA9IGxheWVyQ2xvbmVNYXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewor
ICAgICAgICAgICAgLy8gU2tpcCBpbW1lZGlhdGUgcmVwbGljYXMsIHNpbmNlIHRoZXkgbW92ZSB3
aXRoIHRoZSBvcmlnaW5hbC4KKyAgICAgICAgICAgIGlmIChtX3JlcGxpY2FMYXllciAmJiBpc1Jl
cGxpY2F0ZWRSb290Q2xvbmUoaXQtPmZpcnN0KSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsK
KworICAgICAgICAgICAgaXQtPnNlY29uZCAtPnJlbW92ZUFuaW1hdGlvbkZvcktleShhbmltYXRp
b25JRCk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyB2
b2lkIGNvcHlBbmltYXRpb25Qcm9wZXJ0aWVzKGNvbnN0IFBsYXRmb3JtQ0FBbmltYXRpb24qIGZy
b20sIFBsYXRmb3JtQ0FBbmltYXRpb24qIHRvKQoreworICAgIHRvLT5zZXRCZWdpblRpbWUoZnJv
bS0+YmVnaW5UaW1lKCkpOworICAgIHRvLT5zZXREdXJhdGlvbihmcm9tLT5kdXJhdGlvbigpKTsK
KyAgICB0by0+c2V0UmVwZWF0Q291bnQoZnJvbS0+cmVwZWF0Q291bnQoKSk7CisgICAgdG8tPnNl
dEF1dG9yZXZlcnNlcyhmcm9tLT5hdXRvcmV2ZXJzZXMoKSk7CisgICAgdG8tPnNldEZpbGxNb2Rl
KGZyb20tPmZpbGxNb2RlKCkpOworICAgIHRvLT5zZXRSZW1vdmVkT25Db21wbGV0aW9uKGZyb20t
PmlzUmVtb3ZlZE9uQ29tcGxldGlvbigpKTsKKyAgICB0by0+c2V0QWRkaXRpdmUoZnJvbS0+aXNB
ZGRpdGl2ZSgpKTsKKyAgICB0by0+Y29weVRpbWluZ0Z1bmN0aW9uRnJvbShmcm9tKTsKKworI2lm
IEhBVkVfTU9ERVJOX1FVQVJUWkNPUkUKKyAgICB0by0+c2V0VmFsdWVGdW5jdGlvbihmcm9tLT52
YWx1ZUZ1bmN0aW9uKCkpOworI2VuZGlmCisKKyAgICB0by0+c2V0Tm9uWmVyb0JlZ2luVGltZUZs
YWcoZnJvbS0+bm9uWmVyb0JlZ2luVGltZUZsYWcoKSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXll
ckNBOjpwYXVzZUNBQW5pbWF0aW9uT25MYXllcihBbmltYXRlZFByb3BlcnR5SUQgcHJvcGVydHks
IGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSwgaW50IGluZGV4LCBkb3VibGUgdGltZU9mZnNl
dCkKK3sKKyAgICBQbGF0Zm9ybUNBTGF5ZXIqIGxheWVyID0gYW5pbWF0ZWRMYXllcihwcm9wZXJ0
eSk7CisKKyAgICBTdHJpbmcgYW5pbWF0aW9uSUQgPSBhbmltYXRpb25JZGVudGlmaWVyKGFuaW1h
dGlvbk5hbWUsIHByb3BlcnR5LCBpbmRleCk7CisKKyAgICBSZWZQdHI8UGxhdGZvcm1DQUFuaW1h
dGlvbj4gY3VyQW5pbSA9IGxheWVyLT5hbmltYXRpb25Gb3JLZXkoYW5pbWF0aW9uSUQpOworICAg
IGlmICghY3VyQW5pbSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gQW5pbWF0aW9ucyBvbiB0
aGUgbGF5ZXIgYXJlIGltbXV0YWJsZSwgc28gd2UgaGF2ZSB0byBjbG9uZSBhbmQgbW9kaWZ5Lgor
ICAgIFBsYXRmb3JtQ0FBbmltYXRpb24qIHBhdXNlZEFuaW0gPSAwOworICAgIAorICAgIGlmIChj
dXJBbmltLT5hbmltYXRpb25UeXBlKCkgPT0gUGxhdGZvcm1DQUFuaW1hdGlvbjo6S2V5ZnJhbWUp
IHsKKyAgICAgICAgUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IG5ld0FuaW0gPSBQbGF0Zm9y
bUNBQW5pbWF0aW9uOjpjcmVhdGUoUGxhdGZvcm1DQUFuaW1hdGlvbjo6S2V5ZnJhbWUsIGN1ckFu
aW0tPmtleVBhdGgoKSk7CisgICAgICAgIGNvcHlBbmltYXRpb25Qcm9wZXJ0aWVzKGN1ckFuaW0u
Z2V0KCksIG5ld0FuaW0uZ2V0KCkpOworICAgICAgICBuZXdBbmltLT5jb3B5VmFsdWVzRnJvbShj
dXJBbmltLmdldCgpKTsKKyAgICAgICAgbmV3QW5pbS0+Y29weUtleVRpbWVzRnJvbShjdXJBbmlt
LmdldCgpKTsKKyAgICAgICAgbmV3QW5pbS0+Y29weVRpbWluZ0Z1bmN0aW9uc0Zyb20oY3VyQW5p
bS5nZXQoKSk7CisgICAgICAgIHBhdXNlZEFuaW0gPSBuZXdBbmltLmdldCgpOworICAgIH0gZWxz
ZSBpZiAoY3VyQW5pbS0+YW5pbWF0aW9uVHlwZSgpID09IFBsYXRmb3JtQ0FBbmltYXRpb246OkJh
c2ljKSB7CisgICAgICAgIFJlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBuZXdBbmltID0gUGxh
dGZvcm1DQUFuaW1hdGlvbjo6Y3JlYXRlKFBsYXRmb3JtQ0FBbmltYXRpb246OkJhc2ljLCBjdXJB
bmltLT5rZXlQYXRoKCkpOworICAgICAgICBjb3B5QW5pbWF0aW9uUHJvcGVydGllcyhjdXJBbmlt
LmdldCgpLCBuZXdBbmltLmdldCgpKTsKKyAgICAgICAgbmV3QW5pbS0+Y29weUZyb21WYWx1ZUZy
b20oY3VyQW5pbS5nZXQoKSk7CisgICAgICAgIG5ld0FuaW0tPmNvcHlUb1ZhbHVlRnJvbShjdXJB
bmltLmdldCgpKTsKKyAgICAgICAgcGF1c2VkQW5pbSA9IG5ld0FuaW0uZ2V0KCk7CisgICAgfQor
CisgICAgLy8gcGF1c2VkQW5pbSBoYXMgdGhlIGJlZ2luVGltZSBvZiBjYUFuaW0gYWxyZWFkeS4K
KyAgICBwYXVzZWRBbmltLT5zZXRTcGVlZCgwKTsKKyAgICBwYXVzZWRBbmltLT5zZXRUaW1lT2Zm
c2V0KHRpbWVPZmZzZXQpOworICAgIAorICAgIGxheWVyLT5hZGRBbmltYXRpb25Gb3JLZXkoYW5p
bWF0aW9uSUQsIHBhdXNlZEFuaW0pOyAvLyBUaGlzIHdpbGwgcmVwbGFjZSB0aGUgcnVubmluZyBh
bmltYXRpb24uCisKKyAgICAvLyBQYXVzZSB0aGUgYW5pbWF0aW9ucyBvbiB0aGUgY2xvbmVzIHRv
by4KKyAgICBpZiAoTGF5ZXJNYXAqIGxheWVyQ2xvbmVNYXAgPSBhbmltYXRlZExheWVyQ2xvbmVz
KHByb3BlcnR5KSkgeworICAgICAgICBMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbGF5
ZXJDbG9uZU1hcC0+ZW5kKCk7CisgICAgICAgIGZvciAoTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9y
IGl0ID0gbGF5ZXJDbG9uZU1hcC0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAg
ICAgICAvLyBTa2lwIGltbWVkaWF0ZSByZXBsaWNhcywgc2luY2UgdGhleSBtb3ZlIHdpdGggdGhl
IG9yaWdpbmFsLgorICAgICAgICAgICAgaWYgKG1fcmVwbGljYUxheWVyICYmIGlzUmVwbGljYXRl
ZFJvb3RDbG9uZShpdC0+Zmlyc3QpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICAgICAgaXQtPnNlY29uZC0+YWRkQW5pbWF0aW9uRm9yS2V5KGFuaW1hdGlvbklELCBwYXVzZWRB
bmltKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldENv
bnRlbnRzVG9DYW52YXMoUGxhdGZvcm1MYXllciogY2FudmFzTGF5ZXIpCit7CisgICAgaWYgKG1f
Y29udGVudHNMYXllciAmJiBjYW52YXNMYXllciA9PSBtX2NvbnRlbnRzTGF5ZXItPnBsYXRmb3Jt
TGF5ZXIoKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIC8vIENyZWF0ZSB0aGUgUGxhdGZv
cm1DQUxheWVyIHRvIHdyYXAgdGhlIGluY29taW5nIGxheWVyCisgICAgbV9jb250ZW50c0xheWVy
ID0gY2FudmFzTGF5ZXIgPyBQbGF0Zm9ybUNBTGF5ZXI6OmNyZWF0ZShjYW52YXNMYXllciwgdGhp
cykgOiAwOworICAgIAorICAgIG1fY29udGVudHNMYXllclB1cnBvc2UgPSBjYW52YXNMYXllciA/
IENvbnRlbnRzTGF5ZXJGb3JDYW52YXMgOiBOb0NvbnRlbnRzTGF5ZXI7CisKKyAgICBub3RlU3Vi
bGF5ZXJzQ2hhbmdlZCgpOworICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChDb250ZW50c0Nh
bnZhc0xheWVyQ2hhbmdlZCk7Cit9CisgICAgCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6cmVwYWlu
dExheWVyRGlydHlSZWN0cygpCit7CisgICAgaWYgKCFtX2RpcnR5UmVjdHMuc2l6ZSgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZGlydHlSZWN0cy5z
aXplKCk7ICsraSkKKyAgICAgICAgbV9sYXllci0+c2V0TmVlZHNEaXNwbGF5KCYobV9kaXJ0eVJl
Y3RzW2ldKSk7CisgICAgCisgICAgbV9kaXJ0eVJlY3RzLmNsZWFyKCk7Cit9CisKK3ZvaWQgR3Jh
cGhpY3NMYXllckNBOjp1cGRhdGVDb250ZW50c05lZWRzRGlzcGxheSgpCit7CisgICAgaWYgKG1f
Y29udGVudHNMYXllcikKKyAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXROZWVkc0Rpc3BsYXko
KTsKK30KKworYm9vbCBHcmFwaGljc0xheWVyQ0E6OmNyZWF0ZUFuaW1hdGlvbkZyb21LZXlmcmFt
ZXMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCwgY29uc3QgQW5pbWF0aW9uKiBh
bmltYXRpb24sIGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSwgZG91YmxlIHRpbWVPZmZzZXQp
Cit7CisgICAgQVNTRVJUKHZhbHVlTGlzdC5wcm9wZXJ0eSgpICE9IEFuaW1hdGVkUHJvcGVydHlX
ZWJraXRUcmFuc2Zvcm0pOworICAgIAorICAgIGJvb2wgaXNLZXlmcmFtZSA9IHZhbHVlTGlzdC5z
aXplKCkgPiAyOworICAgIGJvb2wgdmFsdWVzT0s7CisgICAgCisgICAgYm9vbCBhZGRpdGl2ZSA9
IGZhbHNlOworICAgIGludCBhbmltYXRpb25JbmRleCA9IDA7CisgICAgCisgICAgUmVmUHRyPFBs
YXRmb3JtQ0FBbmltYXRpb24+IGNhQW5pbWF0aW9uOworICAgIAorICAgIGlmIChpc0tleWZyYW1l
KSB7CisgICAgICAgIGNhQW5pbWF0aW9uID0gY3JlYXRlS2V5ZnJhbWVBbmltYXRpb24oYW5pbWF0
aW9uLCB2YWx1ZUxpc3QucHJvcGVydHkoKSwgYWRkaXRpdmUpOworICAgICAgICB2YWx1ZXNPSyA9
IHNldEFuaW1hdGlvbktleWZyYW1lcyh2YWx1ZUxpc3QsIGFuaW1hdGlvbiwgY2FBbmltYXRpb24u
Z2V0KCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIGNhQW5pbWF0aW9uID0gY3JlYXRlQmFzaWNB
bmltYXRpb24oYW5pbWF0aW9uLCB2YWx1ZUxpc3QucHJvcGVydHkoKSwgYWRkaXRpdmUpOworICAg
ICAgICB2YWx1ZXNPSyA9IHNldEFuaW1hdGlvbkVuZHBvaW50cyh2YWx1ZUxpc3QsIGFuaW1hdGlv
biwgY2FBbmltYXRpb24uZ2V0KCkpOworICAgIH0KKyAgICAKKyAgICBpZiAoIXZhbHVlc09LKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBtX3VuY29taXR0ZWRBbmltYXRpb25zLmFwcGVu
ZChMYXllclByb3BlcnR5QW5pbWF0aW9uKGNhQW5pbWF0aW9uLCBhbmltYXRpb25OYW1lLCB2YWx1
ZUxpc3QucHJvcGVydHkoKSwgYW5pbWF0aW9uSW5kZXgsIHRpbWVPZmZzZXQpKTsKKworICAgIHJl
dHVybiB0cnVlOworfQorCitib29sIEdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRlVHJhbnNmb3JtQW5p
bWF0aW9uc0Zyb21LZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCwg
Y29uc3QgQW5pbWF0aW9uKiBhbmltYXRpb24sIGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSwg
ZG91YmxlIHRpbWVPZmZzZXQsIGNvbnN0IEludFNpemUmIGJveFNpemUpCit7CisgICAgQVNTRVJU
KHZhbHVlTGlzdC5wcm9wZXJ0eSgpID09IEFuaW1hdGVkUHJvcGVydHlXZWJraXRUcmFuc2Zvcm0p
OworCisgICAgVHJhbnNmb3JtT3BlcmF0aW9uTGlzdCBmdW5jdGlvbkxpc3Q7CisgICAgYm9vbCBs
aXN0c01hdGNoLCBoYXNCaWdSb3RhdGlvbjsKKyAgICBmZXRjaFRyYW5zZm9ybU9wZXJhdGlvbkxp
c3QodmFsdWVMaXN0LCBmdW5jdGlvbkxpc3QsIGxpc3RzTWF0Y2gsIGhhc0JpZ1JvdGF0aW9uKTsK
KworICAgIC8vIFdlIG5lZWQgdG8gZmFsbCBiYWNrIHRvIHNvZnR3YXJlIGFuaW1hdGlvbiBpZiB3
ZSBkb24ndCBoYXZlIHNldFZhbHVlRnVuY3Rpb246LCBhbmQKKyAgICAvLyB3ZSB3b3VsZCBuZWVk
IHRvIGFuaW1hdGUgZWFjaCBpbmNvbWluZyB0cmFuc2Zvcm0gZnVuY3Rpb24gc2VwYXJhdGVseS4g
VGhpcyBpcyB0aGUKKyAgICAvLyBjYXNlIGlmIHdlIGhhdmUgYSByb3RhdGlvbiA+PSAxODAgb3Ig
d2UgaGF2ZSBtb3JlIHRoYW4gb25lIHRyYW5zZm9ybSBmdW5jdGlvbi4KKyAgICBpZiAoKGhhc0Jp
Z1JvdGF0aW9uIHx8IGZ1bmN0aW9uTGlzdC5zaXplKCkgPiAxKSAmJiAhUGxhdGZvcm1DQUFuaW1h
dGlvbjo6c3VwcG9ydHNWYWx1ZUZ1bmN0aW9uKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGJvb2wgdmFsaWRNYXRyaWNlcyA9IHRydWU7CisKKyAgICAvLyBJZiBmdW5jdGlvbkxpc3Rz
IGRvbid0IG1hdGNoIHdlIGRvIGEgbWF0cml4IGFuaW1hdGlvbiwgb3RoZXJ3aXNlIHdlIGRvIGEg
Y29tcG9uZW50IGhhcmR3YXJlIGFuaW1hdGlvbi4KKyAgICAvLyBBbHNvLCB3ZSBjYW4ndCBkbyBj
b21wb25lbnQgYW5pbWF0aW9uIHVubGVzcyB3ZSBoYXZlIHZhbHVlRnVuY3Rpb24sIHNvIHdlIG5l
ZWQgdG8gZG8gbWF0cml4IGFuaW1hdGlvbgorICAgIC8vIGlmIHRoYXQncyBub3QgdHJ1ZSBhcyB3
ZWxsLgorICAgIGJvb2wgaXNNYXRyaXhBbmltYXRpb24gPSAhbGlzdHNNYXRjaCB8fCAhUGxhdGZv
cm1DQUFuaW1hdGlvbjo6c3VwcG9ydHNWYWx1ZUZ1bmN0aW9uKCk7CisgICAgCisgICAgc2l6ZV90
IG51bUFuaW1hdGlvbnMgPSBpc01hdHJpeEFuaW1hdGlvbiA/IDEgOiBmdW5jdGlvbkxpc3Quc2l6
ZSgpOworICAgIGJvb2wgaXNLZXlmcmFtZSA9IHZhbHVlTGlzdC5zaXplKCkgPiAyOworICAgIAor
ICAgIC8vIEl0ZXJhdGUgdGhyb3VnaCB0aGUgdHJhbnNmb3JtIGZ1bmN0aW9ucywgc2VuZGluZyBh
biBhbmltYXRpb24gZm9yIGVhY2ggb25lLgorICAgIGZvciAoc2l6ZV90IGFuaW1hdGlvbkluZGV4
ID0gMDsgYW5pbWF0aW9uSW5kZXggPCBudW1BbmltYXRpb25zOyArK2FuaW1hdGlvbkluZGV4KSB7
CisgICAgICAgIFRyYW5zZm9ybU9wZXJhdGlvbjo6T3BlcmF0aW9uVHlwZSB0cmFuc2Zvcm1PcCA9
IGlzTWF0cml4QW5pbWF0aW9uID8gVHJhbnNmb3JtT3BlcmF0aW9uOjpNQVRSSVhfM0QgOiBmdW5j
dGlvbkxpc3RbYW5pbWF0aW9uSW5kZXhdOworICAgICAgICBSZWZQdHI8UGxhdGZvcm1DQUFuaW1h
dGlvbj4gY2FBbmltYXRpb247CisKKyNpZiBkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpIHx8
IGRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQorICAgICAgICAvLyBDQSBhcHBsaWVz
IGFuaW1hdGlvbnMgaW4gcmV2ZXJzZSBvcmRlciAoPHJkYXI6Ly9wcm9ibGVtLzcwOTU2Mzg+KSBz
byB3ZSBuZWVkIHRoZSBsYXN0IG9uZSB3ZSBhZGQgKHBlciBwcm9wZXJ0eSkKKyAgICAgICAgLy8g
dG8gYmUgbm9uLWFkZGl0aXZlLgorICAgICAgICBib29sIGFkZGl0aXZlID0gYW5pbWF0aW9uSW5k
ZXggPCAobnVtQW5pbWF0aW9ucyAtIDEpOworI2Vsc2UKKyAgICAgICAgYm9vbCBhZGRpdGl2ZSA9
IGFuaW1hdGlvbkluZGV4ID4gMDsKKyNlbmRpZgorICAgICAgICBpZiAoaXNLZXlmcmFtZSkgewor
ICAgICAgICAgICAgY2FBbmltYXRpb24gPSBjcmVhdGVLZXlmcmFtZUFuaW1hdGlvbihhbmltYXRp
b24sIHZhbHVlTGlzdC5wcm9wZXJ0eSgpLCBhZGRpdGl2ZSk7CisgICAgICAgICAgICB2YWxpZE1h
dHJpY2VzID0gc2V0VHJhbnNmb3JtQW5pbWF0aW9uS2V5ZnJhbWVzKHZhbHVlTGlzdCwgYW5pbWF0
aW9uLCBjYUFuaW1hdGlvbi5nZXQoKSwgYW5pbWF0aW9uSW5kZXgsIHRyYW5zZm9ybU9wLCBpc01h
dHJpeEFuaW1hdGlvbiwgYm94U2l6ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBj
YUFuaW1hdGlvbiA9IGNyZWF0ZUJhc2ljQW5pbWF0aW9uKGFuaW1hdGlvbiwgdmFsdWVMaXN0LnBy
b3BlcnR5KCksIGFkZGl0aXZlKTsKKyAgICAgICAgICAgIHZhbGlkTWF0cmljZXMgPSBzZXRUcmFu
c2Zvcm1BbmltYXRpb25FbmRwb2ludHModmFsdWVMaXN0LCBhbmltYXRpb24sIGNhQW5pbWF0aW9u
LmdldCgpLCBhbmltYXRpb25JbmRleCwgdHJhbnNmb3JtT3AsIGlzTWF0cml4QW5pbWF0aW9uLCBi
b3hTaXplKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKCF2YWxpZE1hdHJpY2Vz
KQorICAgICAgICAgICAgYnJlYWs7CisgICAgCisgICAgICAgIG1fdW5jb21pdHRlZEFuaW1hdGlv
bnMuYXBwZW5kKExheWVyUHJvcGVydHlBbmltYXRpb24oY2FBbmltYXRpb24sIGFuaW1hdGlvbk5h
bWUsIHZhbHVlTGlzdC5wcm9wZXJ0eSgpLCBhbmltYXRpb25JbmRleCwgdGltZU9mZnNldCkpOwor
ICAgIH0KKworICAgIHJldHVybiB2YWxpZE1hdHJpY2VzOworfQorCitQYXNzUmVmUHRyPFBsYXRm
b3JtQ0FBbmltYXRpb24+IEdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRlQmFzaWNBbmltYXRpb24oY29u
c3QgQW5pbWF0aW9uKiBhbmltLCBBbmltYXRlZFByb3BlcnR5SUQgcHJvcGVydHksIGJvb2wgYWRk
aXRpdmUpCit7CisgICAgUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IGJhc2ljQW5pbSA9IFBs
YXRmb3JtQ0FBbmltYXRpb246OmNyZWF0ZShQbGF0Zm9ybUNBQW5pbWF0aW9uOjpCYXNpYywgcHJv
cGVydHlJZFRvU3RyaW5nKHByb3BlcnR5KSk7CisgICAgc2V0dXBBbmltYXRpb24oYmFzaWNBbmlt
LmdldCgpLCBhbmltLCBhZGRpdGl2ZSk7CisgICAgcmV0dXJuIGJhc2ljQW5pbTsKK30KKworUGFz
c1JlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPkdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRlS2V5ZnJh
bWVBbmltYXRpb24oY29uc3QgQW5pbWF0aW9uKiBhbmltLCBBbmltYXRlZFByb3BlcnR5SUQgcHJv
cGVydHksIGJvb2wgYWRkaXRpdmUpCit7CisgICAgUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+
IGtleWZyYW1lQW5pbSA9IFBsYXRmb3JtQ0FBbmltYXRpb246OmNyZWF0ZShQbGF0Zm9ybUNBQW5p
bWF0aW9uOjpLZXlmcmFtZSwgcHJvcGVydHlJZFRvU3RyaW5nKHByb3BlcnR5KSk7CisgICAgc2V0
dXBBbmltYXRpb24oa2V5ZnJhbWVBbmltLmdldCgpLCBhbmltLCBhZGRpdGl2ZSk7CisgICAgcmV0
dXJuIGtleWZyYW1lQW5pbTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldHVwQW5pbWF0
aW9uKFBsYXRmb3JtQ0FBbmltYXRpb24qIHByb3BlcnR5QW5pbSwgY29uc3QgQW5pbWF0aW9uKiBh
bmltLCBib29sIGFkZGl0aXZlKQoreworICAgIGRvdWJsZSBkdXJhdGlvbiA9IGFuaW0tPmR1cmF0
aW9uKCk7CisgICAgaWYgKGR1cmF0aW9uIDw9IDApCisgICAgICAgIGR1cmF0aW9uID0gY0FuaW1h
dGlvbkFsbW9zdFplcm9EdXJhdGlvbjsKKworICAgIGZsb2F0IHJlcGVhdENvdW50ID0gYW5pbS0+
aXRlcmF0aW9uQ291bnQoKTsKKyAgICBpZiAocmVwZWF0Q291bnQgPT0gQW5pbWF0aW9uOjpJdGVy
YXRpb25Db3VudEluZmluaXRlKQorICAgICAgICByZXBlYXRDb3VudCA9IEZMVF9NQVg7CisgICAg
ZWxzZSBpZiAoYW5pbS0+ZGlyZWN0aW9uKCkgPT0gQW5pbWF0aW9uOjpBbmltYXRpb25EaXJlY3Rp
b25BbHRlcm5hdGUpCisgICAgICAgIHJlcGVhdENvdW50IC89IDI7CisKKyAgICBQbGF0Zm9ybUNB
QW5pbWF0aW9uOjpGaWxsTW9kZVR5cGUgZmlsbE1vZGUgPSBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpO
b0ZpbGxNb2RlOworICAgIHN3aXRjaCAoYW5pbS0+ZmlsbE1vZGUoKSkgeworICAgIGNhc2UgQW5p
bWF0aW9uRmlsbE1vZGVOb25lOgorICAgICAgICBmaWxsTW9kZSA9IFBsYXRmb3JtQ0FBbmltYXRp
b246OkZvcndhcmRzOyAvLyBVc2UgImZvcndhcmRzIiByYXRoZXIgdGhhbiAicmVtb3ZlZCIgYmVj
YXVzZSB0aGUgc3R5bGUgc3lzdGVtIHdpbGwgcmVtb3ZlIHRoZSBhbmltYXRpb24gd2hlbiBpdCBp
cyBmaW5pc2hlZC4gVGhpcyBhdm9pZHMgYSBmbGFzaC4KKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBBbmltYXRpb25GaWxsTW9kZUJhY2t3YXJkczoKKyAgICAgICAgZmlsbE1vZGUgPSBQbGF0Zm9y
bUNBQW5pbWF0aW9uOjpCb3RoOyAvLyBVc2UgImJvdGgiIHJhdGhlciB0aGFuICJiYWNrd2FyZHMi
IGJlY2F1c2UgdGhlIHN0eWxlIHN5c3RlbSB3aWxsIHJlbW92ZSB0aGUgYW5pbWF0aW9uIHdoZW4g
aXQgaXMgZmluaXNoZWQuIFRoaXMgYXZvaWRzIGEgZmxhc2guCisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgQW5pbWF0aW9uRmlsbE1vZGVGb3J3YXJkczoKKyAgICAgICAgZmlsbE1vZGUgPSBQbGF0
Zm9ybUNBQW5pbWF0aW9uOjpGb3J3YXJkczsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBbmlt
YXRpb25GaWxsTW9kZUJvdGg6CisgICAgICAgIGZpbGxNb2RlID0gUGxhdGZvcm1DQUFuaW1hdGlv
bjo6Qm90aDsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgcHJvcGVydHlBbmltLT5zZXRE
dXJhdGlvbihkdXJhdGlvbik7CisgICAgcHJvcGVydHlBbmltLT5zZXRSZXBlYXRDb3VudChyZXBl
YXRDb3VudCk7CisgICAgcHJvcGVydHlBbmltLT5zZXRBdXRvcmV2ZXJzZXMoYW5pbS0+ZGlyZWN0
aW9uKCkpOworICAgIHByb3BlcnR5QW5pbS0+c2V0UmVtb3ZlZE9uQ29tcGxldGlvbihmYWxzZSk7
CisgICAgcHJvcGVydHlBbmltLT5zZXRBZGRpdGl2ZShhZGRpdGl2ZSk7CisgICAgcHJvcGVydHlB
bmltLT5zZXRGaWxsTW9kZShmaWxsTW9kZSk7Cit9CisKK2NvbnN0IFRpbWluZ0Z1bmN0aW9uKiBH
cmFwaGljc0xheWVyQ0E6OnRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUoY29uc3QgQW5p
bWF0aW9uVmFsdWUqIGFuaW1WYWx1ZSwgY29uc3QgQW5pbWF0aW9uKiBhbmltKQoreworICAgIGlm
IChhbmltVmFsdWUtPnRpbWluZ0Z1bmN0aW9uKCkpCisgICAgICAgIHJldHVybiBhbmltVmFsdWUt
PnRpbWluZ0Z1bmN0aW9uKCk7CisgICAgaWYgKGFuaW0tPmlzVGltaW5nRnVuY3Rpb25TZXQoKSkK
KyAgICAgICAgcmV0dXJuIGFuaW0tPnRpbWluZ0Z1bmN0aW9uKCkuZ2V0KCk7CisgICAgICAgIAor
ICAgIHJldHVybiAwOworfQorCitib29sIEdyYXBoaWNzTGF5ZXJDQTo6c2V0QW5pbWF0aW9uRW5k
cG9pbnRzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3QsIGNvbnN0IEFuaW1hdGlv
biogYW5pbSwgUGxhdGZvcm1DQUFuaW1hdGlvbiogYmFzaWNBbmltKQoreworICAgIHN3aXRjaCAo
dmFsdWVMaXN0LnByb3BlcnR5KCkpIHsKKyAgICBjYXNlIEFuaW1hdGVkUHJvcGVydHlPcGFjaXR5
OiB7CisgICAgICAgIGJhc2ljQW5pbS0+c2V0RnJvbVZhbHVlKHN0YXRpY19jYXN0PGNvbnN0IEZs
b2F0QW5pbWF0aW9uVmFsdWUqPih2YWx1ZUxpc3QuYXQoMCkpLT52YWx1ZSgpKTsKKyAgICAgICAg
YmFzaWNBbmltLT5zZXRUb1ZhbHVlKHN0YXRpY19jYXN0PGNvbnN0IEZsb2F0QW5pbWF0aW9uVmFs
dWUqPih2YWx1ZUxpc3QuYXQoMSkpLT52YWx1ZSgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQor
ICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyAvLyB3ZSBkb24ndCBh
bmltYXRlIGNvbG9yIHlldAorICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICAvLyBUaGlzIGNv
ZGVwYXRoIGlzIHVzZWQgZm9yIDIta2V5ZnJhbWUgYW5pbWF0aW9ucywgc28gd2Ugc3RpbGwgbmVl
ZCB0byBsb29rIGluIHRoZSBzdGFydAorICAgIC8vIGZvciBhIHRpbWluZyBmdW5jdGlvbi4KKyAg
ICBjb25zdCBUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb24gPSB0aW1pbmdGdW5jdGlvbkZv
ckFuaW1hdGlvblZhbHVlKHZhbHVlTGlzdC5hdCgwKSwgYW5pbSk7CisgICAgaWYgKHRpbWluZ0Z1
bmN0aW9uKQorICAgICAgICBiYXNpY0FuaW0tPnNldFRpbWluZ0Z1bmN0aW9uKHRpbWluZ0Z1bmN0
aW9uKTsKKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIEdyYXBoaWNzTGF5ZXJDQTo6c2V0
QW5pbWF0aW9uS2V5ZnJhbWVzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3QsIGNv
bnN0IEFuaW1hdGlvbiogYW5pbSwgUGxhdGZvcm1DQUFuaW1hdGlvbioga2V5ZnJhbWVBbmltKQor
eworICAgIFZlY3RvcjxmbG9hdD4ga2V5VGltZXM7CisgICAgVmVjdG9yPGZsb2F0PiB2YWx1ZXM7
CisgICAgVmVjdG9yPGNvbnN0IFRpbWluZ0Z1bmN0aW9uKj4gdGltaW5nRnVuY3Rpb25zOworICAg
IAorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB2YWx1ZUxpc3Quc2l6ZSgpOyArK2kpIHsK
KyAgICAgICAgY29uc3QgQW5pbWF0aW9uVmFsdWUqIGN1clZhbHVlID0gdmFsdWVMaXN0LmF0KGkp
OworICAgICAgICBrZXlUaW1lcy5hcHBlbmQoY3VyVmFsdWUtPmtleVRpbWUoKSk7CisKKyAgICAg
ICAgc3dpdGNoICh2YWx1ZUxpc3QucHJvcGVydHkoKSkgeworICAgICAgICBjYXNlIEFuaW1hdGVk
UHJvcGVydHlPcGFjaXR5OiB7CisgICAgICAgICAgICBjb25zdCBGbG9hdEFuaW1hdGlvblZhbHVl
KiBmbG9hdFZhbHVlID0gc3RhdGljX2Nhc3Q8Y29uc3QgRmxvYXRBbmltYXRpb25WYWx1ZSo+KGN1
clZhbHVlKTsKKyAgICAgICAgICAgIHZhbHVlcy5hcHBlbmQoZmxvYXRWYWx1ZS0+dmFsdWUoKSk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7IC8vIHdlIGRvbid0IGFuaW1hdGUgY29sb3IgeWV0
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIHRpbWluZ0Z1bmN0aW9u
cy5hcHBlbmQodGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShjdXJWYWx1ZSwgYW5pbSkp
OworICAgIH0KKyAgICAKKyAgICAvLyBXZSB0b3NzIHRoZSBsYXN0IHRmQXJyYXkgdmFsdWUgYmVj
YXVzZSBpdCBoYXMgdG8gb25lIHNob3J0ZXIgdGhhbiB0aGUgb3RoZXJzLgorICAgIHRpbWluZ0Z1
bmN0aW9ucy5yZW1vdmVMYXN0KCk7CisKKyAgICBrZXlmcmFtZUFuaW0tPnNldEtleVRpbWVzKGtl
eVRpbWVzKTsKKyAgICBrZXlmcmFtZUFuaW0tPnNldFZhbHVlcyh2YWx1ZXMpOworICAgIGtleWZy
YW1lQW5pbS0+c2V0VGltaW5nRnVuY3Rpb25zKHRpbWluZ0Z1bmN0aW9ucyk7CisgICAgCisgICAg
cmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgR3JhcGhpY3NMYXllckNBOjpzZXRUcmFuc2Zvcm1Bbmlt
YXRpb25FbmRwb2ludHMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCwgY29uc3Qg
QW5pbWF0aW9uKiBhbmltLCBQbGF0Zm9ybUNBQW5pbWF0aW9uKiBiYXNpY0FuaW0sIGludCBmdW5j
dGlvbkluZGV4LCBUcmFuc2Zvcm1PcGVyYXRpb246Ok9wZXJhdGlvblR5cGUgdHJhbnNmb3JtT3BU
eXBlLCBib29sIGlzTWF0cml4QW5pbWF0aW9uLCBjb25zdCBJbnRTaXplJiBib3hTaXplKQorewor
ICAgIEFTU0VSVCh2YWx1ZUxpc3Quc2l6ZSgpID09IDIpOworICAgIGNvbnN0IFRyYW5zZm9ybUFu
aW1hdGlvblZhbHVlKiBzdGFydFZhbHVlID0gc3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNmb3JtQW5p
bWF0aW9uVmFsdWUqPih2YWx1ZUxpc3QuYXQoMCkpOworICAgIGNvbnN0IFRyYW5zZm9ybUFuaW1h
dGlvblZhbHVlKiBlbmRWYWx1ZSA9IHN0YXRpY19jYXN0PGNvbnN0IFRyYW5zZm9ybUFuaW1hdGlv
blZhbHVlKj4odmFsdWVMaXN0LmF0KDEpKTsKKyAgICAKKyAgICBpZiAoaXNNYXRyaXhBbmltYXRp
b24pIHsKKyAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggZnJvbVRyYW5zZm9ybSwgdG9UcmFu
c2Zvcm07CisgICAgICAgIHN0YXJ0VmFsdWUtPnZhbHVlKCktPmFwcGx5KGJveFNpemUsIGZyb21U
cmFuc2Zvcm0pOworICAgICAgICBlbmRWYWx1ZS0+dmFsdWUoKS0+YXBwbHkoYm94U2l6ZSwgdG9U
cmFuc2Zvcm0pOworCisgICAgICAgIC8vIElmIGFueSBtYXRyaXggaXMgc2luZ3VsYXIsIENBIHdv
bid0IGFuaW1hdGUgaXQgY29ycmVjdGx5LiBTbyBmYWxsIGJhY2sgdG8gc29mdHdhcmUgYW5pbWF0
aW9uCisgICAgICAgIGlmICghZnJvbVRyYW5zZm9ybS5pc0ludmVydGlibGUoKSB8fCAhdG9UcmFu
c2Zvcm0uaXNJbnZlcnRpYmxlKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
ICAgICAKKyAgICAgICAgYmFzaWNBbmltLT5zZXRGcm9tVmFsdWUoZnJvbVRyYW5zZm9ybSk7Cisg
ICAgICAgIGJhc2ljQW5pbS0+c2V0VG9WYWx1ZSh0b1RyYW5zZm9ybSk7CisgICAgfSBlbHNlIHsK
KworCisKKworICAgICAgICBpZiAoaXNUcmFuc2Zvcm1UeXBlTnVtYmVyKHRyYW5zZm9ybU9wVHlw
ZSkpIHsKKyAgICAgICAgICAgIGZsb2F0IHZhbHVlOworICAgICAgICAgICAgZ2V0VHJhbnNmb3Jt
RnVuY3Rpb25WYWx1ZShzdGFydFZhbHVlLT52YWx1ZSgpLT5hdChmdW5jdGlvbkluZGV4KSwgdHJh
bnNmb3JtT3BUeXBlLCBib3hTaXplLCB2YWx1ZSk7CisgICAgICAgICAgICBiYXNpY0FuaW0tPnNl
dEZyb21WYWx1ZSh2YWx1ZSk7CisgICAgICAgICAgICBnZXRUcmFuc2Zvcm1GdW5jdGlvblZhbHVl
KGVuZFZhbHVlLT52YWx1ZSgpLT5hdChmdW5jdGlvbkluZGV4KSwgdHJhbnNmb3JtT3BUeXBlLCBi
b3hTaXplLCB2YWx1ZSk7CisgICAgICAgICAgICBiYXNpY0FuaW0tPnNldFRvVmFsdWUodmFsdWUp
OworICAgICAgICB9IGVsc2UgaWYgKGlzVHJhbnNmb3JtVHlwZUZsb2F0UG9pbnQzRCh0cmFuc2Zv
cm1PcFR5cGUpKSB7CisgICAgICAgICAgICBGbG9hdFBvaW50M0QgdmFsdWU7CisgICAgICAgICAg
ICBnZXRUcmFuc2Zvcm1GdW5jdGlvblZhbHVlKHN0YXJ0VmFsdWUtPnZhbHVlKCktPmF0KGZ1bmN0
aW9uSW5kZXgpLCB0cmFuc2Zvcm1PcFR5cGUsIGJveFNpemUsIHZhbHVlKTsKKyAgICAgICAgICAg
IGJhc2ljQW5pbS0+c2V0RnJvbVZhbHVlKHZhbHVlKTsKKyAgICAgICAgICAgIGdldFRyYW5zZm9y
bUZ1bmN0aW9uVmFsdWUoZW5kVmFsdWUtPnZhbHVlKCktPmF0KGZ1bmN0aW9uSW5kZXgpLCB0cmFu
c2Zvcm1PcFR5cGUsIGJveFNpemUsIHZhbHVlKTsKKyAgICAgICAgICAgIGJhc2ljQW5pbS0+c2V0
VG9WYWx1ZSh2YWx1ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCB2YWx1ZTsKKyAgICAgICAgICAgIGdldFRyYW5zZm9ybUZ1bmN0aW9uVmFsdWUo
c3RhcnRWYWx1ZS0+dmFsdWUoKS0+YXQoZnVuY3Rpb25JbmRleCksIHRyYW5zZm9ybU9wVHlwZSwg
Ym94U2l6ZSwgdmFsdWUpOworICAgICAgICAgICAgYmFzaWNBbmltLT5zZXRGcm9tVmFsdWUodmFs
dWUpOworICAgICAgICAgICAgZ2V0VHJhbnNmb3JtRnVuY3Rpb25WYWx1ZShlbmRWYWx1ZS0+dmFs
dWUoKS0+YXQoZnVuY3Rpb25JbmRleCksIHRyYW5zZm9ybU9wVHlwZSwgYm94U2l6ZSwgdmFsdWUp
OworICAgICAgICAgICAgYmFzaWNBbmltLT5zZXRUb1ZhbHVlKHZhbHVlKTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIC8vIFRoaXMgY29kZXBhdGggaXMgdXNlZCBmb3IgMi1rZXlmcmFtZSBhbmlt
YXRpb25zLCBzbyB3ZSBzdGlsbCBuZWVkIHRvIGxvb2sgaW4gdGhlIHN0YXJ0CisgICAgLy8gZm9y
IGEgdGltaW5nIGZ1bmN0aW9uLgorICAgIGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB0aW1pbmdGdW5j
dGlvbiA9IHRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUodmFsdWVMaXN0LmF0KDApLCBh
bmltKTsKKyAgICBiYXNpY0FuaW0tPnNldFRpbWluZ0Z1bmN0aW9uKHRpbWluZ0Z1bmN0aW9uKTsK
KworI2lmIEhBVkVfTU9ERVJOX1FVQVJUWkNPUkUKKyAgICBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpW
YWx1ZUZ1bmN0aW9uVHlwZSB2YWx1ZUZ1bmN0aW9uID0gZ2V0VmFsdWVGdW5jdGlvbk5hbWVGb3JU
cmFuc2Zvcm1PcGVyYXRpb24odHJhbnNmb3JtT3BUeXBlKTsKKyAgICBpZiAodmFsdWVGdW5jdGlv
biAhPSBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpOb1ZhbHVlRnVuY3Rpb24pCisgICAgICAgIGJhc2lj
QW5pbS0+c2V0VmFsdWVGdW5jdGlvbih2YWx1ZUZ1bmN0aW9uKTsKKyNlbmRpZgorCisgICAgcmV0
dXJuIHRydWU7Cit9CisKK2Jvb2wgR3JhcGhpY3NMYXllckNBOjpzZXRUcmFuc2Zvcm1BbmltYXRp
b25LZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCwgY29uc3QgQW5p
bWF0aW9uKiBhbmltYXRpb24sIFBsYXRmb3JtQ0FBbmltYXRpb24qIGtleWZyYW1lQW5pbSwgaW50
IGZ1bmN0aW9uSW5kZXgsIFRyYW5zZm9ybU9wZXJhdGlvbjo6T3BlcmF0aW9uVHlwZSB0cmFuc2Zv
cm1PcFR5cGUsIGJvb2wgaXNNYXRyaXhBbmltYXRpb24sIGNvbnN0IEludFNpemUmIGJveFNpemUp
Cit7CisgICAgVmVjdG9yPGZsb2F0PiBrZXlUaW1lczsKKyAgICBWZWN0b3I8ZmxvYXQ+IGZsb2F0
VmFsdWVzOworICAgIFZlY3RvcjxGbG9hdFBvaW50M0Q+IGZsb2F0UG9pbnQzRFZhbHVlczsKKyAg
ICBWZWN0b3I8VHJhbnNmb3JtYXRpb25NYXRyaXg+IHRyYW5zZm9ybWF0aW9uTWF0cml4VmFsdWVz
OworICAgIFZlY3Rvcjxjb25zdCBUaW1pbmdGdW5jdGlvbio+IHRpbWluZ0Z1bmN0aW9uczsKKwor
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB2YWx1ZUxpc3Quc2l6ZSgpOyArK2kpIHsKKyAg
ICAgICAgY29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUqIGN1clZhbHVlID0gc3RhdGljX2Nh
c3Q8Y29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUqPih2YWx1ZUxpc3QuYXQoaSkpOworICAg
ICAgICBrZXlUaW1lcy5hcHBlbmQoY3VyVmFsdWUtPmtleVRpbWUoKSk7CisKKyAgICAgICAgaWYg
KGlzTWF0cml4QW5pbWF0aW9uKSB7CisgICAgICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0
cmFuc2Zvcm07CisgICAgICAgICAgICBjdXJWYWx1ZS0+dmFsdWUoKS0+YXBwbHkoYm94U2l6ZSwg
dHJhbnNmb3JtKTsKKworICAgICAgICAgICAgLy8gSWYgYW55IG1hdHJpeCBpcyBzaW5ndWxhciwg
Q0Egd29uJ3QgYW5pbWF0ZSBpdCBjb3JyZWN0bHkuIFNvIGZhbGwgYmFjayB0byBzb2Z0d2FyZSBh
bmltYXRpb24KKyAgICAgICAgICAgIGlmICghdHJhbnNmb3JtLmlzSW52ZXJ0aWJsZSgpKQorICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAgdHJhbnNmb3JtYXRpb25N
YXRyaXhWYWx1ZXMuYXBwZW5kKHRyYW5zZm9ybSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICBjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb24qIHRyYW5zZm9ybU9wID0gY3VyVmFsdWUtPnZh
bHVlKCktPmF0KGZ1bmN0aW9uSW5kZXgpOworICAgICAgICAgICAgaWYgKGlzVHJhbnNmb3JtVHlw
ZU51bWJlcih0cmFuc2Zvcm1PcFR5cGUpKSB7CisgICAgICAgICAgICAgICAgZmxvYXQgdmFsdWU7
CisgICAgICAgICAgICAgICAgZ2V0VHJhbnNmb3JtRnVuY3Rpb25WYWx1ZSh0cmFuc2Zvcm1PcCwg
dHJhbnNmb3JtT3BUeXBlLCBib3hTaXplLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgZmxvYXRW
YWx1ZXMuYXBwZW5kKHZhbHVlKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNUcmFuc2Zvcm1U
eXBlRmxvYXRQb2ludDNEKHRyYW5zZm9ybU9wVHlwZSkpIHsKKyAgICAgICAgICAgICAgICBGbG9h
dFBvaW50M0QgdmFsdWU7CisgICAgICAgICAgICAgICAgZ2V0VHJhbnNmb3JtRnVuY3Rpb25WYWx1
ZSh0cmFuc2Zvcm1PcCwgdHJhbnNmb3JtT3BUeXBlLCBib3hTaXplLCB2YWx1ZSk7CisgICAgICAg
ICAgICAgICAgZmxvYXRQb2ludDNEVmFsdWVzLmFwcGVuZCh2YWx1ZSk7CisgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHZhbHVlOworICAg
ICAgICAgICAgICAgIGdldFRyYW5zZm9ybUZ1bmN0aW9uVmFsdWUodHJhbnNmb3JtT3AsIHRyYW5z
Zm9ybU9wVHlwZSwgYm94U2l6ZSwgdmFsdWUpOworICAgICAgICAgICAgICAgIHRyYW5zZm9ybWF0
aW9uTWF0cml4VmFsdWVzLmFwcGVuZCh2YWx1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KworICAgICAgICBjb25zdCBUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb24gPSB0aW1pbmdG
dW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKGN1clZhbHVlLCBhbmltYXRpb24pOworICAgICAgICB0
aW1pbmdGdW5jdGlvbnMuYXBwZW5kKHRpbWluZ0Z1bmN0aW9uKTsKKyAgICB9CisgICAgCisgICAg
Ly8gV2UgdG9zcyB0aGUgbGFzdCB0ZkFycmF5IHZhbHVlIGJlY2F1c2UgaXQgaGFzIHRvIG9uZSBz
aG9ydGVyIHRoYW4gdGhlIG90aGVycy4KKyAgICB0aW1pbmdGdW5jdGlvbnMucmVtb3ZlTGFzdCgp
OworCisgICAga2V5ZnJhbWVBbmltLT5zZXRLZXlUaW1lcyhrZXlUaW1lcyk7CisgICAgCisgICAg
aWYgKGlzVHJhbnNmb3JtVHlwZU51bWJlcih0cmFuc2Zvcm1PcFR5cGUpKQorICAgICAgICBrZXlm
cmFtZUFuaW0tPnNldFZhbHVlcyhmbG9hdFZhbHVlcyk7CisgICAgZWxzZSBpZiAoaXNUcmFuc2Zv
cm1UeXBlRmxvYXRQb2ludDNEKHRyYW5zZm9ybU9wVHlwZSkpCisgICAgICAgIGtleWZyYW1lQW5p
bS0+c2V0VmFsdWVzKGZsb2F0UG9pbnQzRFZhbHVlcyk7CisgICAgZWxzZQorICAgICAgICBrZXlm
cmFtZUFuaW0tPnNldFZhbHVlcyh0cmFuc2Zvcm1hdGlvbk1hdHJpeFZhbHVlcyk7CisgICAgICAg
IAorICAgIGtleWZyYW1lQW5pbS0+c2V0VGltaW5nRnVuY3Rpb25zKHRpbWluZ0Z1bmN0aW9ucyk7
CisKKyNpZiBIQVZFX01PREVSTl9RVUFSVFpDT1JFCisgICAgUGxhdGZvcm1DQUFuaW1hdGlvbjo6
VmFsdWVGdW5jdGlvblR5cGUgdmFsdWVGdW5jdGlvbiA9IGdldFZhbHVlRnVuY3Rpb25OYW1lRm9y
VHJhbnNmb3JtT3BlcmF0aW9uKHRyYW5zZm9ybU9wVHlwZSk7CisgICAgaWYgKHZhbHVlRnVuY3Rp
b24gIT0gUGxhdGZvcm1DQUFuaW1hdGlvbjo6Tm9WYWx1ZUZ1bmN0aW9uKQorICAgICAgICBrZXlm
cmFtZUFuaW0tPnNldFZhbHVlRnVuY3Rpb24odmFsdWVGdW5jdGlvbik7CisjZW5kaWYKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnN1c3BlbmRBbmltYXRpb25z
KGRvdWJsZSB0aW1lKQoreworICAgIGRvdWJsZSB0ID0gY3VycmVudFRpbWVUb01lZGlhVGltZSh0
aW1lID8gdGltZSA6IGN1cnJlbnRUaW1lKCkpOworICAgIHByaW1hcnlMYXllcigpLT5zZXRTcGVl
ZCgwKTsKKyAgICBwcmltYXJ5TGF5ZXIoKS0+c2V0VGltZU9mZnNldCh0KTsKKworICAgIC8vIFN1
c3BlbmQgdGhlIGFuaW1hdGlvbnMgb24gdGhlIGNsb25lcyB0b28uCisgICAgaWYgKExheWVyTWFw
KiBsYXllckNsb25lTWFwID0gcHJpbWFyeUxheWVyQ2xvbmVzKCkpIHsKKyAgICAgICAgTGF5ZXJN
YXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGxheWVyQ2xvbmVNYXAtPmVuZCgpOworICAgICAgICBm
b3IgKExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGxheWVyQ2xvbmVNYXAtPmJlZ2luKCk7
IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICAgICAgaXQtPnNlY29uZC0+c2V0U3BlZWQoMCk7
CisgICAgICAgICAgICBpdC0+c2Vjb25kLT5zZXRUaW1lT2Zmc2V0KHQpOworICAgICAgICB9Cisg
ICAgfQorfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6cmVzdW1lQW5pbWF0aW9ucygpCit7Cisg
ICAgcHJpbWFyeUxheWVyKCktPnNldFNwZWVkKDEpOworICAgIHByaW1hcnlMYXllcigpLT5zZXRU
aW1lT2Zmc2V0KDApOworCisgICAgLy8gUmVzdW1lIHRoZSBhbmltYXRpb25zIG9uIHRoZSBjbG9u
ZXMgdG9vLgorICAgIGlmIChMYXllck1hcCogbGF5ZXJDbG9uZU1hcCA9IHByaW1hcnlMYXllckNs
b25lcygpKSB7CisgICAgICAgIExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBsYXllckNs
b25lTWFwLT5lbmQoKTsKKyAgICAgICAgZm9yIChMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQg
PSBsYXllckNsb25lTWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgICAg
IGl0LT5zZWNvbmQtPnNldFNwZWVkKDEpOworICAgICAgICAgICAgaXQtPnNlY29uZC0+c2V0VGlt
ZU9mZnNldCgwKTsKKyAgICAgICAgfQorICAgIH0KK30KKworUGxhdGZvcm1DQUxheWVyKiBHcmFw
aGljc0xheWVyQ0E6Omhvc3RMYXllckZvclN1YmxheWVycygpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fc3RydWN0dXJhbExheWVyLmdldCgpID8gbV9zdHJ1Y3R1cmFsTGF5ZXIuZ2V0KCkgOiBtX2xh
eWVyLmdldCgpOyAKK30KKworUGxhdGZvcm1DQUxheWVyKiBHcmFwaGljc0xheWVyQ0E6OmxheWVy
Rm9yU3VwZXJsYXllcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc3RydWN0dXJhbExheWVyID8g
bV9zdHJ1Y3R1cmFsTGF5ZXIuZ2V0KCkgOiBtX2xheWVyLmdldCgpOworfQorCitQbGF0Zm9ybUNB
TGF5ZXIqIEdyYXBoaWNzTGF5ZXJDQTo6YW5pbWF0ZWRMYXllcihBbmltYXRlZFByb3BlcnR5SUQg
cHJvcGVydHkpIGNvbnN0Cit7CisgICAgcmV0dXJuIChwcm9wZXJ0eSA9PSBBbmltYXRlZFByb3Bl
cnR5QmFja2dyb3VuZENvbG9yKSA/IG1fY29udGVudHNMYXllci5nZXQoKSA6IHByaW1hcnlMYXll
cigpOworfQorCitHcmFwaGljc0xheWVyQ0E6OkxheWVyTWFwKiBHcmFwaGljc0xheWVyQ0E6OmFu
aW1hdGVkTGF5ZXJDbG9uZXMoQW5pbWF0ZWRQcm9wZXJ0eUlEIHByb3BlcnR5KSBjb25zdAorewor
ICAgIHJldHVybiAocHJvcGVydHkgPT0gQW5pbWF0ZWRQcm9wZXJ0eUJhY2tncm91bmRDb2xvcikg
PyBtX2NvbnRlbnRzTGF5ZXJDbG9uZXMuZ2V0KCkgOiBwcmltYXJ5TGF5ZXJDbG9uZXMoKTsKK30K
Kwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldERlYnVnQmFja2dyb3VuZENvbG9yKGNvbnN0IENv
bG9yJiBjb2xvcikKK3sgICAgCisgICAgaWYgKGNvbG9yLmlzVmFsaWQoKSkKKyAgICAgICAgbV9s
YXllci0+c2V0QmFja2dyb3VuZENvbG9yKGNvbG9yKTsKKyAgICBlbHNlCisgICAgICAgIG1fbGF5
ZXItPnNldEJhY2tncm91bmRDb2xvcihDb2xvcjo6dHJhbnNwYXJlbnQpOworfQorCit2b2lkIEdy
YXBoaWNzTGF5ZXJDQTo6c2V0RGVidWdCb3JkZXIoY29uc3QgQ29sb3ImIGNvbG9yLCBmbG9hdCBi
b3JkZXJXaWR0aCkKK3sgICAgCisgICAgaWYgKGNvbG9yLmlzVmFsaWQoKSkgeworICAgICAgICBt
X2xheWVyLT5zZXRCb3JkZXJDb2xvcihjb2xvcik7CisgICAgICAgIG1fbGF5ZXItPnNldEJvcmRl
cldpZHRoKGJvcmRlcldpZHRoKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2xheWVyLT5zZXRC
b3JkZXJDb2xvcihDb2xvcjo6dHJhbnNwYXJlbnQpOworICAgICAgICBtX2xheWVyLT5zZXRCb3Jk
ZXJXaWR0aCgwKTsKKyAgICB9Cit9CisKK0Zsb2F0U2l6ZSBHcmFwaGljc0xheWVyQ0E6OmNvbnN0
cmFpbmVkU2l6ZSgpIGNvbnN0Cit7CisgICAgZmxvYXQgdGlsZUNvbHVtbnMgPSBjZWlsZihtX3Np
emUud2lkdGgoKSAvIGNUaWxlZExheWVyVGlsZVNpemUpOworICAgIGZsb2F0IHRpbGVSb3dzID0g
Y2VpbGYobV9zaXplLmhlaWdodCgpIC8gY1RpbGVkTGF5ZXJUaWxlU2l6ZSk7CisgICAgZG91Ymxl
IG51bVRpbGVzID0gdGlsZUNvbHVtbnMgKiB0aWxlUm93czsKKyAgICAKKyAgICBGbG9hdFNpemUg
Y29uc3RyYWluZWRTaXplID0gbV9zaXplOworICAgIGNvbnN0IHVuc2lnbmVkIGNNYXhUaWxlQ291
bnQgPSA1MTI7CisgICAgd2hpbGUgKG51bVRpbGVzID4gY01heFRpbGVDb3VudCkgeworICAgICAg
ICAvLyBDb25zdHJhaW4gdGhlIHdpZGVyIGRpbWVuc2lvbi4KKyAgICAgICAgaWYgKGNvbnN0cmFp
bmVkU2l6ZS53aWR0aCgpID49IGNvbnN0cmFpbmVkU2l6ZS5oZWlnaHQoKSkgeworICAgICAgICAg
ICAgdGlsZUNvbHVtbnMgPSBtYXgoZmxvb3JmKGNNYXhUaWxlQ291bnQgLyB0aWxlUm93cyksIDEu
MGYpOworICAgICAgICAgICAgY29uc3RyYWluZWRTaXplLnNldFdpZHRoKHRpbGVDb2x1bW5zICog
Y1RpbGVkTGF5ZXJUaWxlU2l6ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0aWxl
Um93cyA9IG1heChmbG9vcmYoY01heFRpbGVDb3VudCAvIHRpbGVDb2x1bW5zKSwgMS4wZik7Cisg
ICAgICAgICAgICBjb25zdHJhaW5lZFNpemUuc2V0SGVpZ2h0KHRpbGVSb3dzICogY1RpbGVkTGF5
ZXJUaWxlU2l6ZSk7CisgICAgICAgIH0KKyAgICAgICAgbnVtVGlsZXMgPSB0aWxlQ29sdW1ucyAq
IHRpbGVSb3dzOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gY29uc3RyYWluZWRTaXplOworfQor
Citib29sIEdyYXBoaWNzTGF5ZXJDQTo6cmVxdWlyZXNUaWxlZExheWVyKGNvbnN0IEZsb2F0U2l6
ZSYgc2l6ZSkgY29uc3QKK3sKKyAgICBpZiAoIW1fZHJhd3NDb250ZW50KQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICAvLyBGSVhNRTogY2F0Y2ggemVyby1zaXplIGhlaWdodCBvciB3aWR0
aCBoZXJlIChvciBlYXJsaWVyKT8KKyAgICByZXR1cm4gc2l6ZS53aWR0aCgpID4gY01heFBpeGVs
RGltZW5zaW9uIHx8IHNpemUuaGVpZ2h0KCkgPiBjTWF4UGl4ZWxEaW1lbnNpb247Cit9CisKK3Zv
aWQgR3JhcGhpY3NMYXllckNBOjpzd2FwRnJvbU9yVG9UaWxlZExheWVyKGJvb2wgdXNlVGlsZWRM
YXllcikKK3sKKyAgICBpZiAodXNlVGlsZWRMYXllciA9PSBtX3VzaW5nVGlsZWRMYXllcikKKyAg
ICAgICAgcmV0dXJuOworCisgICAgQ0dTaXplIHRpbGVTaXplID0gQ0dTaXplTWFrZShjVGlsZWRM
YXllclRpbGVTaXplLCBjVGlsZWRMYXllclRpbGVTaXplKTsKKworICAgIFJlZlB0cjxQbGF0Zm9y
bUNBTGF5ZXI+IG9sZExheWVyID0gbV9sYXllcjsKKyAgICAKKyAgICBtX2xheWVyID0gUGxhdGZv
cm1DQUxheWVyOjpjcmVhdGUodXNlVGlsZWRMYXllciA/IFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJU
eXBlV2ViVGlsZWRMYXllciA6IFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlV2ViTGF5ZXIsIHRo
aXMpOworCisgICAgbV91c2luZ1RpbGVkTGF5ZXIgPSB1c2VUaWxlZExheWVyOworICAgIAorICAg
IG1fbGF5ZXItPmFkb3B0U3VibGF5ZXJzKG9sZExheWVyLmdldCgpKTsKKyAgICAKKyAgICBvbGRM
YXllci0+c3VwZXJsYXllcigpLT5yZXBsYWNlU3VibGF5ZXIob2xkTGF5ZXIuZ2V0KCksIG1fbGF5
ZXIuZ2V0KCkpOworCisgICAgdXBkYXRlQ29udGVudHNUcmFuc2Zvcm0oKTsKKworICAgIHVwZGF0
ZUxheWVyUG9zaXRpb24oKTsKKyAgICB1cGRhdGVMYXllclNpemUoKTsKKyAgICB1cGRhdGVBbmNo
b3JQb2ludCgpOworICAgIHVwZGF0ZVRyYW5zZm9ybSgpOworICAgIHVwZGF0ZUNoaWxkcmVuVHJh
bnNmb3JtKCk7CisgICAgdXBkYXRlTWFza3NUb0JvdW5kcygpOworICAgIHVwZGF0ZUNvbnRlbnRz
T3BhcXVlKCk7CisgICAgdXBkYXRlQmFja2ZhY2VWaXNpYmlsaXR5KCk7CisgICAgdXBkYXRlTGF5
ZXJCYWNrZ3JvdW5kQ29sb3IoKTsKKyAgICAKKyAgICB1cGRhdGVPcGFjaXR5T25MYXllcigpOwor
ICAgIAorI2lmbmRlZiBOREVCVUcKKyAgICBTdHJpbmcgbmFtZSA9IFN0cmluZzo6Zm9ybWF0KCJD
QUxheWVyKCVwKSBHcmFwaGljc0xheWVyKCVwKSAiLCBtX2xheWVyLmdldCgpLCB0aGlzKSArIG1f
bmFtZTsKKyAgICBtX2xheWVyLT5zZXROYW1lKG5hbWUpOworI2VuZGlmCisKKyAgICAvLyBtb3Zl
IG92ZXIgYW5pbWF0aW9ucworICAgIG1vdmVPckNvcHlBbmltYXRpb25zRm9yUHJvcGVydHkoTW92
ZSwgQW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybSwgb2xkTGF5ZXIuZ2V0KCksIG1fbGF5
ZXIuZ2V0KCkpOworICAgIG1vdmVPckNvcHlBbmltYXRpb25zRm9yUHJvcGVydHkoTW92ZSwgQW5p
bWF0ZWRQcm9wZXJ0eU9wYWNpdHksIG9sZExheWVyLmdldCgpLCBtX2xheWVyLmdldCgpKTsKKyAg
ICBtb3ZlT3JDb3B5QW5pbWF0aW9uc0ZvclByb3BlcnR5KE1vdmUsIEFuaW1hdGVkUHJvcGVydHlC
YWNrZ3JvdW5kQ29sb3IsIG9sZExheWVyLmdldCgpLCBtX2xheWVyLmdldCgpKTsKKyAgICAKKyAg
ICAvLyBuZWVkIHRvIHRlbGwgbmV3IGxheWVyIHRvIGRyYXcgaXRzZWxmCisgICAgc2V0TmVlZHNE
aXNwbGF5KCk7CisgICAgCisgICAgdXBkYXRlRGVidWdJbmRpY2F0b3JzKCk7Cit9CisKK0dyYXBo
aWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBHcmFwaGljc0xheWVy
Q0E6OmRlZmF1bHRDb250ZW50c09yaWVudGF0aW9uKCkgY29uc3QKK3sKKyNpZiAhSEFWRV9NT0RF
Uk5fUVVBUlRaQ09SRQorICAgIC8vIE9sZGVyIFF1YXJ0ekNvcmUgZG9lcyBub3Qgc3VwcG9ydCAt
Z2VvbWV0cnlGbGlwcGVkLCBzbyB3ZSBtYW51YWxseSBmbGlwIHRoZSByb290CisgICAgLy8gbGF5
ZXIgZ2VvbWV0cnksIGFuZCB0aGVuIGZsaXAgdGhlIGNvbnRlbnRzIG9mIGVhY2ggbGF5ZXIgYmFj
ayBzbyB0aGF0IHRoZSBDVE0gZm9yIENHCisgICAgLy8gaXMgdW5mbGlwcGVkLCBhbGxvd2luZyBp
dCB0byBkbyB0aGUgY29ycmVjdCBmb250IGF1dG8taGludGluZy4KKyAgICByZXR1cm4gQ29tcG9z
aXRpbmdDb29yZGluYXRlc0JvdHRvbVVwOworI2Vsc2UKKyAgICByZXR1cm4gQ29tcG9zaXRpbmdD
b29yZGluYXRlc1RvcERvd247CisjZW5kaWYKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnVw
ZGF0ZUNvbnRlbnRzVHJhbnNmb3JtKCkKK3sKKyNpZiAhSEFWRV9NT0RFUk5fUVVBUlRaQ09SRQor
ICAgIGlmIChjb250ZW50c09yaWVudGF0aW9uKCkgPT0gQ29tcG9zaXRpbmdDb29yZGluYXRlc0Jv
dHRvbVVwKSB7CisgICAgICAgIENHQWZmaW5lVHJhbnNmb3JtIGNvbnRlbnRzVHJhbnNmb3JtID0g
Q0dBZmZpbmVUcmFuc2Zvcm1NYWtlU2NhbGUoMSwgLTEpOworICAgICAgICBjb250ZW50c1RyYW5z
Zm9ybSA9IENHQWZmaW5lVHJhbnNmb3JtVHJhbnNsYXRlKGNvbnRlbnRzVHJhbnNmb3JtLCAwLCAt
W21fbGF5ZXIuZ2V0KCkgYm91bmRzXS5zaXplLmhlaWdodCk7CisgICAgICAgIFttX2xheWVyLmdl
dCgpIHNldENvbnRlbnRzVHJhbnNmb3JtOmNvbnRlbnRzVHJhbnNmb3JtXTsKKyAgICB9CisjZW5k
aWYKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldHVwQ29udGVudHNMYXllcihQbGF0Zm9y
bUNBTGF5ZXIqIGNvbnRlbnRzTGF5ZXIpCit7CisgICAgLy8gVHVybiBvZmYgaW1wbGljaXQgYW5p
bWF0aW9ucyBvbiB0aGUgaW5uZXIgbGF5ZXIuCisgICAgY29udGVudHNMYXllci0+c2V0TWFza3NU
b0JvdW5kcyh0cnVlKTsKKworICAgIGlmIChkZWZhdWx0Q29udGVudHNPcmllbnRhdGlvbigpID09
IENvbXBvc2l0aW5nQ29vcmRpbmF0ZXNCb3R0b21VcCkgeworICAgICAgICBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCBmbGlwcGVyKAorICAgICAgICAgICAgMS4wZiwgMC4wZiwgMC4wZiwgMC4wZiwKKyAg
ICAgICAgICAgIDAuMGYsIC0xLjBmLCAwLjBmLCAwLjBmLAorICAgICAgICAgICAgMC4wZiwgMC4w
ZiwgMS4wZiwgMC4wZiwKKyAgICAgICAgICAgIDAuMGYsIDAuMGYsIDAuMGYsIDEuMGYpOworICAg
ICAgICBjb250ZW50c0xheWVyLT5zZXRUcmFuc2Zvcm0oZmxpcHBlcik7CisgICAgICAgIGNvbnRl
bnRzTGF5ZXItPnNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQzRCgwLCAxLCAwKSk7CisgICAgfSBl
bHNlCisgICAgICAgIGNvbnRlbnRzTGF5ZXItPnNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQzRCgp
KTsKKworICAgIGlmIChzaG93RGVidWdCb3JkZXJzKCkpIHsKKyAgICAgICAgY29udGVudHNMYXll
ci0+c2V0Qm9yZGVyQ29sb3IoQ29sb3IoMCwgMCwgMTI4LCAxODApKTsKKyAgICAgICAgY29udGVu
dHNMYXllci0+c2V0Qm9yZGVyV2lkdGgoMS4wZik7CisgICAgfQorfQorCitQYXNzUmVmUHRyPFBs
YXRmb3JtQ0FMYXllcj4gR3JhcGhpY3NMYXllckNBOjpmaW5kT3JNYWtlQ2xvbmUoQ2xvbmVJRCBj
bG9uZUlELCBQbGF0Zm9ybUNBTGF5ZXIgKnNvdXJjZUxheWVyLCBMYXllck1hcCogY2xvbmVzLCBD
bG9uZUxldmVsIGNsb25lTGV2ZWwpCit7CisgICAgaWYgKCFzb3VyY2VMYXllcikKKyAgICAgICAg
cmV0dXJuIDA7CisKKyAgICBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiByZXN1bHRMYXllcjsKKwor
ICAgIC8vIEFkZCB3aXRoIGEgZHVtbXkgdmFsdWUgdG8gZ2V0IGFuIGl0ZXJhdG9yIGZvciB0aGUg
aW5zZXJ0aW9uIHBvc2l0aW9uLCBhbmQgYSBib29sZWFuIHRoYXQgdGVsbHMKKyAgICAvLyB1cyB3
aGV0aGVyIHRoZXJlJ3MgYW4gaXRlbSB0aGVyZS4gVGhpcyB0ZWNobmlxdWUgYXZvaWRzIHR3byBo
YXNoIGxvb2t1cHMuCisgICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gZHVtbXk7CisgICAgcGFp
cjxMYXllck1hcDo6aXRlcmF0b3IsIGJvb2w+IGFkZFJlc3VsdCA9IGNsb25lcy0+YWRkKGNsb25l
SUQsIGR1bW15KTsKKyAgICBpZiAoIWFkZFJlc3VsdC5zZWNvbmQpIHsKKyAgICAgICAgLy8gVmFs
dWUgd2FzIG5vdCBhZGRlZCwgc28gaXQgZXhpc3RzIGFscmVhZHkuCisgICAgICAgIHJlc3VsdExh
eWVyID0gYWRkUmVzdWx0LmZpcnN0LT5zZWNvbmQuZ2V0KCk7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgcmVzdWx0TGF5ZXIgPSBjbG9uZUxheWVyKHNvdXJjZUxheWVyLCBjbG9uZUxldmVsKTsKKyNp
Zm5kZWYgTkRFQlVHCisgICAgICAgIHJlc3VsdExheWVyLT5zZXROYW1lKFN0cmluZzo6Zm9ybWF0
KCJDbG9uZSAlZCBvZiBsYXllciAlcCIsIGNsb25lSURbMFVdLCBzb3VyY2VMYXllcikpOworI2Vu
ZGlmCisgICAgICAgIGFkZFJlc3VsdC5maXJzdC0+c2Vjb25kID0gcmVzdWx0TGF5ZXI7CisgICAg
fQorCisgICAgcmV0dXJuIHJlc3VsdExheWVyOworfSAgIAorCit2b2lkIEdyYXBoaWNzTGF5ZXJD
QTo6ZW5zdXJlQ2xvbmVMYXllcnMoQ2xvbmVJRCBjbG9uZUlELCBSZWZQdHI8UGxhdGZvcm1DQUxh
eWVyPiYgcHJpbWFyeUxheWVyLCBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiYgc3RydWN0dXJhbExh
eWVyLCBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiYgY29udGVudHNMYXllciwgQ2xvbmVMZXZlbCBj
bG9uZUxldmVsKQoreworICAgIHN0cnVjdHVyYWxMYXllciA9IG5pbDsKKyAgICBjb250ZW50c0xh
eWVyID0gbmlsOworCisgICAgaWYgKCFtX2xheWVyQ2xvbmVzKQorICAgICAgICBtX2xheWVyQ2xv
bmVzID0gbmV3IExheWVyTWFwOworCisgICAgaWYgKCFtX3N0cnVjdHVyYWxMYXllckNsb25lcyAm
JiBtX3N0cnVjdHVyYWxMYXllcikKKyAgICAgICAgbV9zdHJ1Y3R1cmFsTGF5ZXJDbG9uZXMgPSBu
ZXcgTGF5ZXJNYXA7CisKKyAgICBpZiAoIW1fY29udGVudHNMYXllckNsb25lcyAmJiBtX2NvbnRl
bnRzTGF5ZXIpCisgICAgICAgIG1fY29udGVudHNMYXllckNsb25lcyA9IG5ldyBMYXllck1hcDsK
KworICAgIHByaW1hcnlMYXllciA9IGZpbmRPck1ha2VDbG9uZShjbG9uZUlELCBtX2xheWVyLmdl
dCgpLCBtX2xheWVyQ2xvbmVzLmdldCgpLCBjbG9uZUxldmVsKTsKKyAgICBzdHJ1Y3R1cmFsTGF5
ZXIgPSBmaW5kT3JNYWtlQ2xvbmUoY2xvbmVJRCwgbV9zdHJ1Y3R1cmFsTGF5ZXIuZ2V0KCksIG1f
c3RydWN0dXJhbExheWVyQ2xvbmVzLmdldCgpLCBjbG9uZUxldmVsKTsKKyAgICBjb250ZW50c0xh
eWVyID0gZmluZE9yTWFrZUNsb25lKGNsb25lSUQsIG1fY29udGVudHNMYXllci5nZXQoKSwgbV9j
b250ZW50c0xheWVyQ2xvbmVzLmdldCgpLCBjbG9uZUxldmVsKTsKK30KKwordm9pZCBHcmFwaGlj
c0xheWVyQ0E6OnJlbW92ZUNsb25lTGF5ZXJzKCkKK3sKKyAgICBtX2xheWVyQ2xvbmVzID0gMDsK
KyAgICBtX3N0cnVjdHVyYWxMYXllckNsb25lcyA9IDA7CisgICAgbV9jb250ZW50c0xheWVyQ2xv
bmVzID0gMDsKK30KKworRmxvYXRQb2ludCBHcmFwaGljc0xheWVyQ0E6OnBvc2l0aW9uRm9yQ2xv
bmVSb290TGF5ZXIoKSBjb25zdAoreworICAgIC8vIFRoaXMgY2FuIGdldCBjYWxsZWQgZHVyaW5n
IGEgc3luYyB3aGVuIHdlJ3ZlIGp1c3QgcmVtb3ZlZCB0aGUgbV9yZXBsaWNhTGF5ZXIuCisgICAg
aWYgKCFtX3JlcGxpY2FMYXllcikKKyAgICAgICAgcmV0dXJuIEZsb2F0UG9pbnQoKTsKKworICAg
IEZsb2F0UG9pbnQgcmVwbGljYVBvc2l0aW9uID0gbV9yZXBsaWNhTGF5ZXItPnJlcGxpY2F0ZWRM
YXllclBvc2l0aW9uKCk7CisgICAgcmV0dXJuIEZsb2F0UG9pbnQocmVwbGljYVBvc2l0aW9uLngo
KSArIG1fYW5jaG9yUG9pbnQueCgpICogbV9zaXplLndpZHRoKCksCisgICAgICAgICAgICAgICAg
ICAgICAgcmVwbGljYVBvc2l0aW9uLnkoKSArIG1fYW5jaG9yUG9pbnQueSgpICogbV9zaXplLmhl
aWdodCgpKTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnByb3BhZ2F0ZUxheWVyQ2hhbmdl
VG9SZXBsaWNhcygpCit7CisgICAgZm9yIChHcmFwaGljc0xheWVyKiBjdXJyTGF5ZXIgPSB0aGlz
OyBjdXJyTGF5ZXI7IGN1cnJMYXllciA9IGN1cnJMYXllci0+cGFyZW50KCkpIHsKKyAgICAgICAg
R3JhcGhpY3NMYXllckNBKiBjdXJyTGF5ZXJDQSA9IHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXJD
QSo+KGN1cnJMYXllcik7CisgICAgICAgIGlmICghY3VyckxheWVyQ0EtPmhhc0Nsb25lTGF5ZXJz
KCkpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBpZiAoY3VyckxheWVyQ0EtPnJlcGxp
Y2FMYXllcigpKQorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllckNBKj4oY3Vy
ckxheWVyQ0EtPnJlcGxpY2FMYXllcigpKS0+bm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKFJlcGxp
Y2F0ZWRMYXllckNoYW5nZWQpOworICAgIH0KK30KKworUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5
ZXI+IEdyYXBoaWNzTGF5ZXJDQTo6ZmV0Y2hDbG9uZUxheWVycyhHcmFwaGljc0xheWVyKiByZXBs
aWNhUm9vdCwgUmVwbGljYVN0YXRlJiByZXBsaWNhU3RhdGUsIENsb25lTGV2ZWwgY2xvbmVMZXZl
bCkKK3sKKyAgICBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBwcmltYXJ5TGF5ZXI7CisgICAgUmVm
UHRyPFBsYXRmb3JtQ0FMYXllcj4gc3RydWN0dXJhbExheWVyOworICAgIFJlZlB0cjxQbGF0Zm9y
bUNBTGF5ZXI+IGNvbnRlbnRzTGF5ZXI7CisgICAgZW5zdXJlQ2xvbmVMYXllcnMocmVwbGljYVN0
YXRlLmNsb25lSUQoKSwgcHJpbWFyeUxheWVyLCBzdHJ1Y3R1cmFsTGF5ZXIsIGNvbnRlbnRzTGF5
ZXIsIGNsb25lTGV2ZWwpOworCisgICAgaWYgKG1fbWFza0xheWVyKSB7CisgICAgICAgIFJlZlB0
cjxQbGF0Zm9ybUNBTGF5ZXI+IG1hc2tDbG9uZSA9IHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXJD
QSo+KG1fbWFza0xheWVyKS0+ZmV0Y2hDbG9uZUxheWVycyhyZXBsaWNhUm9vdCwgcmVwbGljYVN0
YXRlLCBJbnRlcm1lZGlhdGVDbG9uZUxldmVsKTsKKyAgICAgICAgcHJpbWFyeUxheWVyLT5zZXRN
YXNrKG1hc2tDbG9uZS5nZXQoKSk7CisgICAgfQorCisgICAgaWYgKG1fcmVwbGljYXRlZExheWVy
KSB7CisgICAgICAgIC8vIFdlIGFyZSBhIHJlcGxpY2EgYmVpbmcgYXNrZWQgZm9yIGNsb25lcyBv
ZiBvdXIgbGF5ZXJzLgorICAgICAgICBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiByZXBsaWNhUm9v
dCA9IHJlcGxpY2F0ZWRMYXllclJvb3QocmVwbGljYVN0YXRlKTsKKyAgICAgICAgaWYgKCFyZXBs
aWNhUm9vdCkKKyAgICAgICAgICAgIHJldHVybiBuaWw7CisKKyAgICAgICAgaWYgKHN0cnVjdHVy
YWxMYXllcikgeworICAgICAgICAgICAgc3RydWN0dXJhbExheWVyLT5pbnNlcnRTdWJsYXllcihy
ZXBsaWNhUm9vdC5nZXQoKSwgMCk7CisgICAgICAgICAgICByZXR1cm4gc3RydWN0dXJhbExheWVy
OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBwcmltYXJ5TGF5ZXItPmluc2VydFN1Ymxh
eWVyKHJlcGxpY2FSb290LmdldCgpLCAwKTsKKyAgICAgICAgcmV0dXJuIHByaW1hcnlMYXllcjsK
KyAgICB9CisKKyAgICBjb25zdCBWZWN0b3I8R3JhcGhpY3NMYXllcio+JiBjaGlsZExheWVycyA9
IGNoaWxkcmVuKCk7CisgICAgVmVjdG9yPFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+ID4gY2xvbmFs
U3VibGF5ZXJzOworCisgICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gcmVwbGljYUxheWVyOwor
ICAgIAorICAgIGlmIChtX3JlcGxpY2FMYXllciAmJiBtX3JlcGxpY2FMYXllciAhPSByZXBsaWNh
Um9vdCkgeworICAgICAgICAvLyBXZSBoYXZlIG5lc3RlZCByZXBsaWNhcy4gQXNrIHRoZSByZXBs
aWNhIGxheWVyIGZvciBhIGNsb25lIG9mIGl0cyBjb250ZW50cy4KKyAgICAgICAgcmVwbGljYVN0
YXRlLnNldEJyYW5jaFR5cGUoUmVwbGljYVN0YXRlOjpSZXBsaWNhQnJhbmNoKTsKKyAgICAgICAg
cmVwbGljYUxheWVyID0gc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllckNBKj4obV9yZXBsaWNhTGF5
ZXIpLT5mZXRjaENsb25lTGF5ZXJzKHJlcGxpY2FSb290LCByZXBsaWNhU3RhdGUsIFJvb3RDbG9u
ZUxldmVsKTsKKyAgICAgICAgcmVwbGljYVN0YXRlLnNldEJyYW5jaFR5cGUoUmVwbGljYVN0YXRl
OjpDaGlsZEJyYW5jaCk7CisgICAgfQorICAgIAorICAgIGlmIChyZXBsaWNhTGF5ZXIgfHwgc3Ry
dWN0dXJhbExheWVyIHx8IGNvbnRlbnRzTGF5ZXIgfHwgY2hpbGRMYXllcnMuc2l6ZSgpID4gMCkg
eworICAgICAgICBpZiAoc3RydWN0dXJhbExheWVyKSB7CisgICAgICAgICAgICAvLyBSZXBsaWNh
cyByZW5kZXIgYmVoaW5kIHRoZSBhY3R1YWwgbGF5ZXIgY29udGVudC4KKyAgICAgICAgICAgIGlm
IChyZXBsaWNhTGF5ZXIpCisgICAgICAgICAgICAgICAgY2xvbmFsU3VibGF5ZXJzLmFwcGVuZChy
ZXBsaWNhTGF5ZXIpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gQWRkIHRoZSBw
cmltYXJ5IGxheWVyIG5leHQuIEV2ZW4gaWYgd2UgaGF2ZSBuZWdhdGl2ZSB6LW9yZGVyIGNoaWxk
cmVuLCB0aGUgcHJpbWFyeSBsYXllciBhbHdheXMgY29tZXMgYmVoaW5kLgorICAgICAgICAgICAg
Y2xvbmFsU3VibGF5ZXJzLmFwcGVuZChwcmltYXJ5TGF5ZXIpOworICAgICAgICB9IGVsc2UgaWYg
KGNvbnRlbnRzTGF5ZXIpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBhZGQgdGhlIGNvbnRlbnRz
IGxheWVyIGluIHRoZSBjb3JyZWN0IG9yZGVyIHdpdGggbmVnYXRpdmUgei1vcmRlciBjaGlsZHJl
bi4KKyAgICAgICAgICAgIC8vIFRoaXMgZG9lcyBub3QgY2F1c2UgdmlzaWJsZSByZW5kZXJpbmcg
aXNzdWVzIGJlY2F1c2UgY3VycmVudGx5IGNvbnRlbnRzIGxheWVycyBhcmUgb25seSB1c2VkCisg
ICAgICAgICAgICAvLyBmb3IgcmVwbGFjZWQgZWxlbWVudHMgdGhhdCBkb24ndCBoYXZlIGNoaWxk
cmVuLgorICAgICAgICAgICAgY2xvbmFsU3VibGF5ZXJzLmFwcGVuZChjb250ZW50c0xheWVyKTsK
KyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcmVwbGljYVN0YXRlLnB1c2goUmVwbGljYVN0
YXRlOjpDaGlsZEJyYW5jaCk7CisKKyAgICAgICAgc2l6ZV90IG51bUNoaWxkcmVuID0gY2hpbGRM
YXllcnMuc2l6ZSgpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bUNoaWxkcmVu
OyArK2kpIHsKKyAgICAgICAgICAgIEdyYXBoaWNzTGF5ZXJDQSogY3VyQ2hpbGQgPSBzdGF0aWNf
Y2FzdDxHcmFwaGljc0xheWVyQ0EqPihjaGlsZExheWVyc1tpXSk7CisKKyAgICAgICAgICAgIFJl
ZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IGNoaWxkTGF5ZXIgPSBjdXJDaGlsZC0+ZmV0Y2hDbG9uZUxh
eWVycyhyZXBsaWNhUm9vdCwgcmVwbGljYVN0YXRlLCBJbnRlcm1lZGlhdGVDbG9uZUxldmVsKTsK
KyAgICAgICAgICAgIGlmIChjaGlsZExheWVyKQorICAgICAgICAgICAgICAgIGNsb25hbFN1Ymxh
eWVycy5hcHBlbmQoY2hpbGRMYXllcik7CisgICAgICAgIH0KKworICAgICAgICByZXBsaWNhU3Rh
dGUucG9wKCk7CisKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjbG9uYWxTdWJsYXll
cnMuc2l6ZSgpOyArK2kpCisgICAgICAgICAgICBjbG9uYWxTdWJsYXllcnNbaV0tPnJlbW92ZUZy
b21TdXBlcmxheWVyKCk7CisgICAgfQorICAgIAorICAgIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+
IHJlc3VsdDsKKyAgICBpZiAoc3RydWN0dXJhbExheWVyKSB7CisgICAgICAgIHN0cnVjdHVyYWxM
YXllci0+c2V0U3VibGF5ZXJzKGNsb25hbFN1YmxheWVycyk7CisKKyAgICAgICAgaWYgKGNvbnRl
bnRzTGF5ZXIpIHsKKyAgICAgICAgICAgIC8vIElmIHdlIGhhdmUgYSB0cmFuc2Zvcm0gbGF5ZXIs
IHRoZW4gdGhlIGNvbnRlbnRzIGxheWVyIGlzIHBhcmVudGVkIGluIHRoZSAKKyAgICAgICAgICAg
IC8vIHByaW1hcnkgbGF5ZXIgKHdoaWNoIGlzIGl0c2VsZiBhIGNoaWxkIG9mIHRoZSB0cmFuc2Zv
cm0gbGF5ZXIpLgorICAgICAgICAgICAgcHJpbWFyeUxheWVyLT5yZW1vdmVBbGxTdWJsYXllcnMo
KTsKKyAgICAgICAgICAgIHByaW1hcnlMYXllci0+YXBwZW5kU3VibGF5ZXIoY29udGVudHNMYXll
ci5nZXQoKSk7CisgICAgICAgIH0KKworICAgICAgICByZXN1bHQgPSBzdHJ1Y3R1cmFsTGF5ZXI7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgcHJpbWFyeUxheWVyLT5zZXRTdWJsYXllcnMoY2xvbmFs
U3VibGF5ZXJzKTsKKyAgICAgICAgcmVzdWx0ID0gcHJpbWFyeUxheWVyOworICAgIH0KKworICAg
IHJldHVybiByZXN1bHQ7Cit9CisKK1Bhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBHcmFwaGlj
c0xheWVyQ0E6OmNsb25lTGF5ZXIoUGxhdGZvcm1DQUxheWVyICpsYXllciwgQ2xvbmVMZXZlbCBj
bG9uZUxldmVsKQoreworICAgIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlIGxheWVyVHlwZSA9
IChsYXllci0+bGF5ZXJUeXBlKCkgPT0gUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVUcmFuc2Zv
cm1MYXllcikgPyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlVHJhbnNmb3JtTGF5ZXIgOiBQbGF0Zm9ybUNB
TGF5ZXI6OkxheWVyVHlwZUxheWVyOworICAgIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IG5ld0xh
eWVyID0gUGxhdGZvcm1DQUxheWVyOjpjcmVhdGUobGF5ZXJUeXBlLCB0aGlzKTsKKyAgICAKKyAg
ICBuZXdMYXllci0+c2V0UG9zaXRpb24obGF5ZXItPnBvc2l0aW9uKCkpOworICAgIG5ld0xheWVy
LT5zZXRCb3VuZHMobGF5ZXItPmJvdW5kcygpKTsKKyAgICBuZXdMYXllci0+c2V0QW5jaG9yUG9p
bnQobGF5ZXItPmFuY2hvclBvaW50KCkpOworICAgIG5ld0xheWVyLT5zZXRUcmFuc2Zvcm0obGF5
ZXItPnRyYW5zZm9ybSgpKTsKKyAgICBuZXdMYXllci0+c2V0U3VibGF5ZXJUcmFuc2Zvcm0obGF5
ZXItPnN1YmxheWVyVHJhbnNmb3JtKCkpOworICAgIG5ld0xheWVyLT5zZXRDb250ZW50cyhsYXll
ci0+Y29udGVudHMoKSk7CisgICAgbmV3TGF5ZXItPnNldE1hc2tzVG9Cb3VuZHMobGF5ZXItPm1h
c2tzVG9Cb3VuZHMoKSk7CisgICAgbmV3TGF5ZXItPnNldERvdWJsZVNpZGVkKGxheWVyLT5pc0Rv
dWJsZVNpZGVkKCkpOworICAgIG5ld0xheWVyLT5zZXRPcGFxdWUobGF5ZXItPmlzT3BhcXVlKCkp
OworICAgIG5ld0xheWVyLT5zZXRCYWNrZ3JvdW5kQ29sb3IobGF5ZXItPmJhY2tncm91bmRDb2xv
cigpKTsKKworICAgIGlmIChjbG9uZUxldmVsID09IEludGVybWVkaWF0ZUNsb25lTGV2ZWwpIHsK
KyAgICAgICAgbmV3TGF5ZXItPnNldE9wYWNpdHkobGF5ZXItPm9wYWNpdHkoKSk7CisgICAgICAg
IG1vdmVPckNvcHlBbmltYXRpb25zRm9yUHJvcGVydHkoQ29weSwgQW5pbWF0ZWRQcm9wZXJ0eVdl
YmtpdFRyYW5zZm9ybSwgbGF5ZXIsIG5ld0xheWVyLmdldCgpKTsKKyAgICAgICAgbW92ZU9yQ29w
eUFuaW1hdGlvbnNGb3JQcm9wZXJ0eShDb3B5LCBBbmltYXRlZFByb3BlcnR5T3BhY2l0eSwgbGF5
ZXIsIG5ld0xheWVyLmdldCgpKTsKKyAgICB9CisgICAgCisgICAgaWYgKHNob3dEZWJ1Z0JvcmRl
cnMoKSkgeworICAgICAgICBuZXdMYXllci0+c2V0Qm9yZGVyQ29sb3IoQ29sb3IoMjU1LCAxMjIs
IDI1MSkpOworICAgICAgICBuZXdMYXllci0+c2V0Qm9yZGVyV2lkdGgoMik7CisgICAgfQorICAg
IAorICAgIHJldHVybiBuZXdMYXllcjsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldE9w
YWNpdHlJbnRlcm5hbChmbG9hdCBhY2N1bXVsYXRlZE9wYWNpdHkpCit7CisgICAgTGF5ZXJNYXAq
IGxheWVyQ2xvbmVNYXAgPSAwOworICAgIAorICAgIGlmIChwcmVzZXJ2ZXMzRCgpKSB7CisgICAg
ICAgIG1fbGF5ZXItPnNldE9wYWNpdHkoYWNjdW11bGF0ZWRPcGFjaXR5KTsKKyAgICAgICAgbGF5
ZXJDbG9uZU1hcCA9IG1fbGF5ZXJDbG9uZXMuZ2V0KCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAg
cHJpbWFyeUxheWVyKCktPnNldE9wYWNpdHkoYWNjdW11bGF0ZWRPcGFjaXR5KTsKKyAgICAgICAg
bGF5ZXJDbG9uZU1hcCA9IHByaW1hcnlMYXllckNsb25lcygpOworICAgIH0KKworICAgIGlmIChs
YXllckNsb25lTWFwKSB7CisgICAgICAgIExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBs
YXllckNsb25lTWFwLT5lbmQoKTsKKyAgICAgICAgZm9yIChMYXllck1hcDo6Y29uc3RfaXRlcmF0
b3IgaXQgPSBsYXllckNsb25lTWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAg
ICAgICAgIGlmIChtX3JlcGxpY2FMYXllciAmJiBpc1JlcGxpY2F0ZWRSb290Q2xvbmUoaXQtPmZp
cnN0KSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGl0LT5zZWNvbmQt
PnNldE9wYWNpdHkobV9vcGFjaXR5KTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBHcmFw
aGljc0xheWVyQ0E6OnVwZGF0ZU9wYWNpdHlPbkxheWVyKCkKK3sKKyNpZiAhSEFWRV9NT0RFUk5f
UVVBUlRaQ09SRQorICAgIC8vIERpc3RyaWJ1dGUgb3BhY2l0eSBlaXRoZXIgdG8gb3VyIG93biBs
YXllciBvciB0byBvdXIgY2hpbGRyZW4uIFdlIHBhc3MgaW4gdGhlIAorICAgIC8vIGNvbnRyaWJ1
dGlvbiBmcm9tIG91ciBwYXJlbnQocykuCisgICAgZGlzdHJpYnV0ZU9wYWNpdHkocGFyZW50KCkg
PyBwYXJlbnQoKS0+YWNjdW11bGF0ZWRPcGFjaXR5KCkgOiAxKTsKKyNlbHNlCisgICAgcHJpbWFy
eUxheWVyKCktPnNldE9wYWNpdHkobV9vcGFjaXR5KTsKKworICAgIGlmIChMYXllck1hcCogbGF5
ZXJDbG9uZU1hcCA9IHByaW1hcnlMYXllckNsb25lcygpKSB7CisgICAgICAgIExheWVyTWFwOjpj
b25zdF9pdGVyYXRvciBlbmQgPSBsYXllckNsb25lTWFwLT5lbmQoKTsKKyAgICAgICAgZm9yIChM
YXllck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBsYXllckNsb25lTWFwLT5iZWdpbigpOyBpdCAh
PSBlbmQ7ICsraXQpIHsKKyAgICAgICAgICAgIGlmIChtX3JlcGxpY2FMYXllciAmJiBpc1JlcGxp
Y2F0ZWRSb290Q2xvbmUoaXQtPmZpcnN0KSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKwor
ICAgICAgICAgICAgaXQtPnNlY29uZC0+c2V0T3BhY2l0eShtX29wYWNpdHkpOworICAgICAgICB9
CisgICAgICAgIAorICAgIH0KKyNlbmRpZgorfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6bm90
ZVN1YmxheWVyc0NoYW5nZWQoKQoreworICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChDaGls
ZHJlbkNoYW5nZWQpOworICAgIHByb3BhZ2F0ZUxheWVyQ2hhbmdlVG9SZXBsaWNhcygpOworfQor
Cit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6bm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKExheWVyQ2hh
bmdlRmxhZ3MgZmxhZ3MpCit7CisgICAgaWYgKCFtX3VuY29tbWl0dGVkQ2hhbmdlcyAmJiBtX2Ns
aWVudCkKKyAgICAgICAgbV9jbGllbnQtPm5vdGlmeVN5bmNSZXF1aXJlZCh0aGlzKTsKKworICAg
IG1fdW5jb21taXR0ZWRDaGFuZ2VzIHw9IGZsYWdzOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCkluZGV4OiBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgJKHJldmlzaW9u
IDApCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBHcmFwaGljc0xheWVyQ0FfaAor
I2RlZmluZSBHcmFwaGljc0xheWVyQ0FfaAorCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lU
SU5HKQorCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgorI2luY2x1ZGUgIkltYWdlLmgiCisj
aW5jbHVkZSAiUGxhdGZvcm1DQUFuaW1hdGlvbi5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIFBsYXRmb3JtQ0FMYXllcjsKKworY2xhc3MgR3JhcGhpY3NMYXllckNBIDogcHVibGlj
IEdyYXBoaWNzTGF5ZXIgeworcHVibGljOgorCisgICAgR3JhcGhpY3NMYXllckNBKEdyYXBoaWNz
TGF5ZXJDbGllbnQqKTsKKyAgICB2aXJ0dWFsIH5HcmFwaGljc0xheWVyQ0EoKTsKKyAgICAKKyAg
ICB2aXJ0dWFsIHZvaWQgYW5pbWF0aW9uU3RhcnRlZChDRlRpbWVJbnRlcnZhbCBiZWdpblRpbWUp
OworCisgICAgdmlydHVhbCB2b2lkIHNldE5hbWUoY29uc3QgU3RyaW5nJik7CisKKyAgICB2aXJ0
dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdDsKKworICAgIHZpcnR1YWwg
Ym9vbCBzZXRDaGlsZHJlbihjb25zdCBWZWN0b3I8R3JhcGhpY3NMYXllcio+Jik7CisgICAgdmly
dHVhbCB2b2lkIGFkZENoaWxkKEdyYXBoaWNzTGF5ZXIqKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRk
Q2hpbGRBdEluZGV4KEdyYXBoaWNzTGF5ZXIqLCBpbnQgaW5kZXgpOworICAgIHZpcnR1YWwgdm9p
ZCBhZGRDaGlsZEFib3ZlKEdyYXBoaWNzTGF5ZXIqIGxheWVyLCBHcmFwaGljc0xheWVyKiBzaWJs
aW5nKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGRCZWxvdyhHcmFwaGljc0xheWVyKiBsYXll
ciwgR3JhcGhpY3NMYXllciogc2libGluZyk7CisgICAgdmlydHVhbCBib29sIHJlcGxhY2VDaGls
ZChHcmFwaGljc0xheWVyKiBvbGRDaGlsZCwgR3JhcGhpY3NMYXllciogbmV3Q2hpbGQpOworCisg
ICAgdmlydHVhbCB2b2lkIHJlbW92ZUZyb21QYXJlbnQoKTsKKworICAgIHZpcnR1YWwgdm9pZCBz
ZXRNYXNrTGF5ZXIoR3JhcGhpY3NMYXllciopOworICAgIHZpcnR1YWwgdm9pZCBzZXRSZXBsaWNh
dGVkTGF5ZXIoR3JhcGhpY3NMYXllciopOworCisgICAgdmlydHVhbCB2b2lkIHNldFBvc2l0aW9u
KGNvbnN0IEZsb2F0UG9pbnQmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QW5jaG9yUG9pbnQoY29u
c3QgRmxvYXRQb2ludDNEJik7CisgICAgdmlydHVhbCB2b2lkIHNldFNpemUoY29uc3QgRmxvYXRT
aXplJik7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4Jik7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q2hpbGRyZW5UcmFuc2Zvcm0oY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKTsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRQcmVzZXJ2
ZXMzRChib29sKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0TWFza3NUb0JvdW5kcyhib29sKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0RHJhd3NDb250ZW50KGJvb2wpOworCisgICAgdmlydHVhbCB2b2lk
IHNldEJhY2tncm91bmRDb2xvcihjb25zdCBDb2xvciYpOworICAgIHZpcnR1YWwgdm9pZCBjbGVh
ckJhY2tncm91bmRDb2xvcigpOworCisgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzT3BhcXVl
KGJvb2wpOworICAgIHZpcnR1YWwgdm9pZCBzZXRCYWNrZmFjZVZpc2liaWxpdHkoYm9vbCk7CisK
KyAgICAvLyByZXR1cm4gdHJ1ZSBpZiB3ZSBzdGFydGVkIGFuIGFuaW1hdGlvbgorICAgIHZpcnR1
YWwgdm9pZCBzZXRPcGFjaXR5KGZsb2F0KTsKKworICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0Rp
c3BsYXkoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNEaXNwbGF5SW5SZWN0KGNvbnN0IEZs
b2F0UmVjdCYpOworICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c05lZWRzRGlzcGxheSgpOwor
ICAgIAorICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1JlY3QoY29uc3QgSW50UmVjdCYpOwor
ICAgIAorICAgIHZpcnR1YWwgdm9pZCBzdXNwZW5kQW5pbWF0aW9ucyhkb3VibGUgdGltZSk7Cisg
ICAgdmlydHVhbCB2b2lkIHJlc3VtZUFuaW1hdGlvbnMoKTsKKworICAgIHZpcnR1YWwgYm9vbCBh
ZGRBbmltYXRpb24oY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmLCBjb25zdCBJbnRTaXplJiBib3hT
aXplLCBjb25zdCBBbmltYXRpb24qLCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGRvdWJs
ZSB0aW1lT2Zmc2V0KTsKKyAgICB2aXJ0dWFsIHZvaWQgcGF1c2VBbmltYXRpb24oY29uc3QgU3Ry
aW5nJiBhbmltYXRpb25OYW1lLCBkb3VibGUgdGltZU9mZnNldCk7CisgICAgdmlydHVhbCB2b2lk
IHJlbW92ZUFuaW1hdGlvbihjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUpOworCisgICAgdmly
dHVhbCB2b2lkIHNldENvbnRlbnRzVG9JbWFnZShJbWFnZSopOworICAgIHZpcnR1YWwgdm9pZCBz
ZXRDb250ZW50c1RvTWVkaWEoUGxhdGZvcm1MYXllciopOworICAgIHZpcnR1YWwgdm9pZCBzZXRD
b250ZW50c1RvQ2FudmFzKFBsYXRmb3JtTGF5ZXIqKTsKKworICAgIHZpcnR1YWwgYm9vbCBoYXND
b250ZW50c0xheWVyKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50c0xheWVyOyB9CisgICAgCisg
ICAgdmlydHVhbCB2b2lkIHNldERlYnVnQmFja2dyb3VuZENvbG9yKGNvbnN0IENvbG9yJik7Cisg
ICAgdmlydHVhbCB2b2lkIHNldERlYnVnQm9yZGVyKGNvbnN0IENvbG9yJiwgZmxvYXQgYm9yZGVy
V2lkdGgpOworCisgICAgdmlydHVhbCB2b2lkIGRpZERpc3BsYXkoUGxhdGZvcm1MYXllciopOwor
CisgICAgdm9pZCByZWN1cnNpdmVDb21taXRDaGFuZ2VzKCk7CisKKyAgICB2aXJ0dWFsIHZvaWQg
c3luY0NvbXBvc2l0aW5nU3RhdGUoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3luY0NvbXBvc2l0aW5n
U3RhdGVGb3JUaGlzTGF5ZXJPbmx5KCk7CisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0T3BhY2l0eUludGVybmFsKGZsb2F0KTsKKworcHJpdmF0ZToKKyAgICB2b2lkIHVwZGF0ZU9w
YWNpdHlPbkxheWVyKCk7CisKKyAgICBQbGF0Zm9ybUNBTGF5ZXIqIHByaW1hcnlMYXllcigpIGNv
bnN0IHsgcmV0dXJuIG1fc3RydWN0dXJhbExheWVyLmdldCgpID8gbV9zdHJ1Y3R1cmFsTGF5ZXIu
Z2V0KCkgOiBtX2xheWVyLmdldCgpOyB9CisgICAgUGxhdGZvcm1DQUxheWVyKiBob3N0TGF5ZXJG
b3JTdWJsYXllcnMoKSBjb25zdDsKKyAgICBQbGF0Zm9ybUNBTGF5ZXIqIGxheWVyRm9yU3VwZXJs
YXllcigpIGNvbnN0OworICAgIFBsYXRmb3JtQ0FMYXllciogYW5pbWF0ZWRMYXllcihBbmltYXRl
ZFByb3BlcnR5SUQpIGNvbnN0OworCisgICAgdHlwZWRlZiBTdHJpbmcgQ2xvbmVJRDsgLy8gSWRl
bnRpZmllciBmb3IgYSBnaXZlbiBjbG9uZSwgYmFzZWQgb24gb3JpZ2luYWwvcmVwbGljYSBicmFu
Y2hpbmcgZG93biB0aGUgdHJlZS4KKyAgICBzdGF0aWMgYm9vbCBpc1JlcGxpY2F0ZWRSb290Q2xv
bmUoY29uc3QgQ2xvbmVJRCYgY2xvbmVJRCkgeyByZXR1cm4gY2xvbmVJRFswVV0gJiAxOyB9CisK
KyAgICB0eXBlZGVmIEhhc2hNYXA8Q2xvbmVJRCwgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gPiBM
YXllck1hcDsKKyAgICBMYXllck1hcCogcHJpbWFyeUxheWVyQ2xvbmVzKCkgY29uc3QgeyByZXR1
cm4gbV9zdHJ1Y3R1cmFsTGF5ZXIuZ2V0KCkgPyBtX3N0cnVjdHVyYWxMYXllckNsb25lcy5nZXQo
KSA6IG1fbGF5ZXJDbG9uZXMuZ2V0KCk7IH0KKyAgICBMYXllck1hcCogYW5pbWF0ZWRMYXllckNs
b25lcyhBbmltYXRlZFByb3BlcnR5SUQpIGNvbnN0OworCisgICAgYm9vbCBjcmVhdGVBbmltYXRp
b25Gcm9tS2V5ZnJhbWVzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiwgY29uc3QgQW5pbWF0aW9u
KiwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBkb3VibGUgdGltZU9mZnNldCk7CisgICAg
Ym9vbCBjcmVhdGVUcmFuc2Zvcm1BbmltYXRpb25zRnJvbUtleWZyYW1lcyhjb25zdCBLZXlmcmFt
ZVZhbHVlTGlzdCYsIGNvbnN0IEFuaW1hdGlvbiosIGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFt
ZSwgZG91YmxlIHRpbWVPZmZzZXQsIGNvbnN0IEludFNpemUmIGJveFNpemUpOworCisgICAgLy8g
UmV0dXJuIGF1dG9yZWxlYXNlZCBhbmltYXRpb24gKHVzZSBSZXRhaW5QdHI/KQorICAgIFBhc3NS
ZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gY3JlYXRlQmFzaWNBbmltYXRpb24oY29uc3QgQW5p
bWF0aW9uKiwgQW5pbWF0ZWRQcm9wZXJ0eUlELCBib29sIGFkZGl0aXZlKTsKKyAgICBQYXNzUmVm
UHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IGNyZWF0ZUtleWZyYW1lQW5pbWF0aW9uKGNvbnN0IEFu
aW1hdGlvbiosIEFuaW1hdGVkUHJvcGVydHlJRCwgYm9vbCBhZGRpdGl2ZSk7CisgICAgdm9pZCBz
ZXR1cEFuaW1hdGlvbihQbGF0Zm9ybUNBQW5pbWF0aW9uKiwgY29uc3QgQW5pbWF0aW9uKiwgYm9v
bCBhZGRpdGl2ZSk7CisgICAgCisgICAgY29uc3QgVGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0
aW9uRm9yQW5pbWF0aW9uVmFsdWUoY29uc3QgQW5pbWF0aW9uVmFsdWUqLCBjb25zdCBBbmltYXRp
b24qKTsKKyAgICAKKyAgICBib29sIHNldEFuaW1hdGlvbkVuZHBvaW50cyhjb25zdCBLZXlmcmFt
ZVZhbHVlTGlzdCYsIGNvbnN0IEFuaW1hdGlvbiosIFBsYXRmb3JtQ0FBbmltYXRpb24qKTsKKyAg
ICBib29sIHNldEFuaW1hdGlvbktleWZyYW1lcyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYsIGNv
bnN0IEFuaW1hdGlvbiosIFBsYXRmb3JtQ0FBbmltYXRpb24qKTsKKworICAgIGJvb2wgc2V0VHJh
bnNmb3JtQW5pbWF0aW9uRW5kcG9pbnRzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiwgY29uc3Qg
QW5pbWF0aW9uKiwgUGxhdGZvcm1DQUFuaW1hdGlvbiosIGludCBmdW5jdGlvbkluZGV4LCBUcmFu
c2Zvcm1PcGVyYXRpb246Ok9wZXJhdGlvblR5cGUsIGJvb2wgaXNNYXRyaXhBbmltYXRpb24sIGNv
bnN0IEludFNpemUmIGJveFNpemUpOworICAgIGJvb2wgc2V0VHJhbnNmb3JtQW5pbWF0aW9uS2V5
ZnJhbWVzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiwgY29uc3QgQW5pbWF0aW9uKiwgUGxhdGZv
cm1DQUFuaW1hdGlvbiosIGludCBmdW5jdGlvbkluZGV4LCBUcmFuc2Zvcm1PcGVyYXRpb246Ok9w
ZXJhdGlvblR5cGUsIGJvb2wgaXNNYXRyaXhBbmltYXRpb24sIGNvbnN0IEludFNpemUmIGJveFNp
emUpOworICAgIAorICAgIGJvb2wgYW5pbWF0aW9uSXNSdW5uaW5nKGNvbnN0IFN0cmluZyYgYW5p
bWF0aW9uTmFtZSkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3J1bm5pbmdBbmltYXRp
b25zLmZpbmQoYW5pbWF0aW9uTmFtZSkgIT0gbV9ydW5uaW5nQW5pbWF0aW9ucy5lbmQoKTsKKyAg
ICB9CisKKyAgICB2b2lkIGNvbW1pdExheWVyQ2hhbmdlc0JlZm9yZVN1YmxheWVycygpOworICAg
IHZvaWQgY29tbWl0TGF5ZXJDaGFuZ2VzQWZ0ZXJTdWJsYXllcnMoKTsKKworICAgIEZsb2F0U2l6
ZSBjb25zdHJhaW5lZFNpemUoKSBjb25zdDsKKworICAgIGJvb2wgcmVxdWlyZXNUaWxlZExheWVy
KGNvbnN0IEZsb2F0U2l6ZSYpIGNvbnN0OworICAgIHZvaWQgc3dhcEZyb21PclRvVGlsZWRMYXll
cihib29sIHVzZVRpbGVkTGF5ZXIpOworCisgICAgQ29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVu
dGF0aW9uIGRlZmF1bHRDb250ZW50c09yaWVudGF0aW9uKCkgY29uc3Q7CisgICAgdm9pZCB1cGRh
dGVDb250ZW50c1RyYW5zZm9ybSgpOworICAgIAorICAgIHZvaWQgc2V0dXBDb250ZW50c0xheWVy
KFBsYXRmb3JtQ0FMYXllciopOworICAgIFBsYXRmb3JtQ0FMYXllciogY29udGVudHNMYXllcigp
IGNvbnN0IHsgcmV0dXJuIG1fY29udGVudHNMYXllci5nZXQoKTsgfQorCisgICAgdmlydHVhbCB2
b2lkIHNldFJlcGxpY2F0ZWRCeUxheWVyKEdyYXBoaWNzTGF5ZXIqKTsKKworICAgIC8vIFVzZWQg
dG8gdHJhY2sgdGhlIHBhdGggZG93biB0aGUgdHJlZSBmb3IgcmVwbGljYSBsYXllcnMuCisgICAg
c3RydWN0IFJlcGxpY2FTdGF0ZSB7CisgICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbWF4UmVw
bGljYURlcHRoID0gMTY7CisgICAgICAgIGVudW0gUmVwbGljYUJyYW5jaFR5cGUgeyBDaGlsZEJy
YW5jaCA9IDAsIFJlcGxpY2FCcmFuY2ggPSAxIH07CisgICAgICAgIFJlcGxpY2FTdGF0ZShSZXBs
aWNhQnJhbmNoVHlwZSBmaXJzdEJyYW5jaCkKKyAgICAgICAgICAgIDogbV9yZXBsaWNhRGVwdGgo
MCkKKyAgICAgICAgeworICAgICAgICAgICAgcHVzaChmaXJzdEJyYW5jaCk7CisgICAgICAgIH0K
KyAgICAgICAgCisgICAgICAgIC8vIENhbGxlZCBhcyB3ZSB3YWxrIGRvd24gdGhlIHRyZWUgdG8g
YnVpbGQgcmVwbGljYXMuCisgICAgICAgIHZvaWQgcHVzaChSZXBsaWNhQnJhbmNoVHlwZSBicmFu
Y2hUeXBlKQorICAgICAgICB7CisgICAgICAgICAgICBtX3JlcGxpY2FCcmFuY2hlcy5hcHBlbmQo
YnJhbmNoVHlwZSk7CisgICAgICAgICAgICBpZiAoYnJhbmNoVHlwZSA9PSBSZXBsaWNhQnJhbmNo
KQorICAgICAgICAgICAgICAgICsrbV9yZXBsaWNhRGVwdGg7CisgICAgICAgIH0KKyAgICAgICAg
CisgICAgICAgIHZvaWQgc2V0QnJhbmNoVHlwZShSZXBsaWNhQnJhbmNoVHlwZSBicmFuY2hUeXBl
KQorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoIW1fcmVwbGljYUJyYW5jaGVzLmlzRW1w
dHkoKSk7CisKKyAgICAgICAgICAgIGlmIChtX3JlcGxpY2FCcmFuY2hlcy5sYXN0KCkgIT0gYnJh
bmNoVHlwZSkgeworICAgICAgICAgICAgICAgIGlmIChicmFuY2hUeXBlID09IFJlcGxpY2FCcmFu
Y2gpCisgICAgICAgICAgICAgICAgICAgICsrbV9yZXBsaWNhRGVwdGg7CisgICAgICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAtLW1fcmVwbGljYURlcHRoOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBtX3JlcGxpY2FCcmFuY2hlcy5sYXN0KCkgPSBicmFuY2hUeXBl
OworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBwb3AoKQorICAgICAgICB7CisgICAgICAgICAg
ICBpZiAobV9yZXBsaWNhQnJhbmNoZXMubGFzdCgpID09IFJlcGxpY2FCcmFuY2gpCisgICAgICAg
ICAgICAgICAgLS1tX3JlcGxpY2FEZXB0aDsKKyAgICAgICAgICAgIG1fcmVwbGljYUJyYW5jaGVz
LnJlbW92ZUxhc3QoKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgc2l6ZV90IGRlcHRo
KCkgY29uc3QgeyByZXR1cm4gbV9yZXBsaWNhQnJhbmNoZXMuc2l6ZSgpOyB9CisgICAgICAgIHNp
emVfdCByZXBsaWNhRGVwdGgoKSBjb25zdCB7IHJldHVybiBtX3JlcGxpY2FEZXB0aDsgfQorCisg
ICAgICAgIENsb25lSUQgY2xvbmVJRCgpIGNvbnN0OyAgICAgICAgCisKKyAgICBwcml2YXRlOgor
ICAgICAgICBWZWN0b3I8UmVwbGljYUJyYW5jaFR5cGU+IG1fcmVwbGljYUJyYW5jaGVzOworICAg
ICAgICBzaXplX3QgbV9yZXBsaWNhRGVwdGg7CisgICAgfTsKKyAgICBQYXNzUmVmUHRyPFBsYXRm
b3JtQ0FMYXllcj5yZXBsaWNhdGVkTGF5ZXJSb290KFJlcGxpY2FTdGF0ZSYpOworCisgICAgZW51
bSBDbG9uZUxldmVsIHsgUm9vdENsb25lTGV2ZWwsIEludGVybWVkaWF0ZUNsb25lTGV2ZWwgfTsK
KyAgICBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gZmV0Y2hDbG9uZUxheWVycyhHcmFwaGlj
c0xheWVyKiByZXBsaWNhUm9vdCwgUmVwbGljYVN0YXRlJiwgQ2xvbmVMZXZlbCk7CisgICAgCisg
ICAgUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IGNsb25lTGF5ZXIoUGxhdGZvcm1DQUxheWVy
ICosIENsb25lTGV2ZWwpOworICAgIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBmaW5kT3JN
YWtlQ2xvbmUoQ2xvbmVJRCwgUGxhdGZvcm1DQUxheWVyICosIExheWVyTWFwKiwgQ2xvbmVMZXZl
bCk7CisKKyAgICB2b2lkIGVuc3VyZUNsb25lTGF5ZXJzKENsb25lSUQgY2xvbmVJRCwgUmVmUHRy
PFBsYXRmb3JtQ0FMYXllcj4mIHByaW1hcnlMYXllciwgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4m
IHN0cnVjdHVyYWxMYXllciwgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4mIGNvbnRlbnRzTGF5ZXIs
IENsb25lTGV2ZWwgY2xvbmVMZXZlbCk7CisKKyAgICBib29sIGhhc0Nsb25lTGF5ZXJzKCkgY29u
c3QgeyByZXR1cm4gbV9sYXllckNsb25lczsgfQorICAgIHZvaWQgcmVtb3ZlQ2xvbmVMYXllcnMo
KTsKKyAgICBGbG9hdFBvaW50IHBvc2l0aW9uRm9yQ2xvbmVSb290TGF5ZXIoKSBjb25zdDsKKyAg
ICAKKyAgICB2b2lkIHByb3BhZ2F0ZUxheWVyQ2hhbmdlVG9SZXBsaWNhcygpOworICAgIAorICAg
IC8vIEFsbCB0aGVzZSAidXBkYXRlIiBtZXRob2RzIHdpbGwgYmUgY2FsbGVkIGluc2lkZSBhIEJF
R0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUy9FTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TIGJsb2Nr
LgorICAgIHZvaWQgdXBkYXRlTGF5ZXJOYW1lcygpOworICAgIHZvaWQgdXBkYXRlU3VibGF5ZXJM
aXN0KCk7CisgICAgdm9pZCB1cGRhdGVMYXllclBvc2l0aW9uKCk7CisgICAgdm9pZCB1cGRhdGVM
YXllclNpemUoKTsKKyAgICB2b2lkIHVwZGF0ZUFuY2hvclBvaW50KCk7CisgICAgdm9pZCB1cGRh
dGVUcmFuc2Zvcm0oKTsKKyAgICB2b2lkIHVwZGF0ZUNoaWxkcmVuVHJhbnNmb3JtKCk7CisgICAg
dm9pZCB1cGRhdGVNYXNrc1RvQm91bmRzKCk7CisgICAgdm9pZCB1cGRhdGVDb250ZW50c09wYXF1
ZSgpOworICAgIHZvaWQgdXBkYXRlQmFja2ZhY2VWaXNpYmlsaXR5KCk7CisgICAgdm9pZCB1cGRh
dGVTdHJ1Y3R1cmFsTGF5ZXIoKTsKKyAgICB2b2lkIHVwZGF0ZUxheWVyRHJhd3NDb250ZW50KCk7
CisgICAgdm9pZCB1cGRhdGVMYXllckJhY2tncm91bmRDb2xvcigpOworCisgICAgdm9pZCB1cGRh
dGVDb250ZW50c0ltYWdlKCk7CisgICAgdm9pZCB1cGRhdGVDb250ZW50c01lZGlhTGF5ZXIoKTsK
KyAgICB2b2lkIHVwZGF0ZUNvbnRlbnRzQ2FudmFzTGF5ZXIoKTsKKyAgICB2b2lkIHVwZGF0ZUNv
bnRlbnRzUmVjdCgpOworICAgIHZvaWQgdXBkYXRlTWFza0xheWVyKCk7CisgICAgdm9pZCB1cGRh
dGVSZXBsaWNhdGVkTGF5ZXJzKCk7CisKKyAgICB2b2lkIHVwZGF0ZUxheWVyQW5pbWF0aW9ucygp
OworICAgIHZvaWQgdXBkYXRlQ29udGVudHNOZWVkc0Rpc3BsYXkoKTsKKyAgICAKKyAgICBlbnVt
IFN0cnVjdHVyYWxMYXllclB1cnBvc2UgeworICAgICAgICBOb1N0cnVjdHVyYWxMYXllciA9IDAs
CisgICAgICAgIFN0cnVjdHVyYWxMYXllckZvclByZXNlcnZlczNELAorICAgICAgICBTdHJ1Y3R1
cmFsTGF5ZXJGb3JSZXBsaWNhRmxhdHRlbmluZworICAgIH07CisgICAgdm9pZCBlbnN1cmVTdHJ1
Y3R1cmFsTGF5ZXIoU3RydWN0dXJhbExheWVyUHVycG9zZSk7CisgICAgU3RydWN0dXJhbExheWVy
UHVycG9zZSBzdHJ1Y3R1cmFsTGF5ZXJQdXJwb3NlKCkgY29uc3Q7CisKKyAgICB2b2lkIHNldEFu
aW1hdGlvbk9uTGF5ZXIoUGxhdGZvcm1DQUFuaW1hdGlvbiosIEFuaW1hdGVkUHJvcGVydHlJRCwg
Y29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBpbnQgaW5kZXgsIGRvdWJsZSB0aW1lT2Zmc2V0
KTsKKyAgICBib29sIHJlbW92ZUNBQW5pbWF0aW9uRnJvbUxheWVyKEFuaW1hdGVkUHJvcGVydHlJ
RCwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBpbnQgaW5kZXgpOworICAgIHZvaWQgcGF1
c2VDQUFuaW1hdGlvbk9uTGF5ZXIoQW5pbWF0ZWRQcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIGFu
aW1hdGlvbk5hbWUsIGludCBpbmRleCwgZG91YmxlIHRpbWVPZmZzZXQpOworCisgICAgZW51bSBN
b3ZlT3JDb3B5IHsgTW92ZSwgQ29weSB9OworICAgIHN0YXRpYyB2b2lkIG1vdmVPckNvcHlMYXll
ckFuaW1hdGlvbihNb3ZlT3JDb3B5LCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbklkZW50aWZpZXIs
IFBsYXRmb3JtQ0FMYXllciAqZnJvbUxheWVyLCBQbGF0Zm9ybUNBTGF5ZXIgKnRvTGF5ZXIpOwor
ICAgIHZvaWQgbW92ZU9yQ29weUFuaW1hdGlvbnNGb3JQcm9wZXJ0eShNb3ZlT3JDb3B5LCBBbmlt
YXRlZFByb3BlcnR5SUQsIFBsYXRmb3JtQ0FMYXllciAqIGZyb21MYXllciwgUGxhdGZvcm1DQUxh
eWVyICogdG9MYXllcik7CisgICAgCisgICAgZW51bSBMYXllckNoYW5nZSB7CisgICAgICAgIE5v
Q2hhbmdlID0gMCwKKyAgICAgICAgTmFtZUNoYW5nZWQgPSAxIDw8IDEsCisgICAgICAgIENoaWxk
cmVuQ2hhbmdlZCA9IDEgPDwgMiwgLy8gYWxzbyB1c2VkIGZvciBjb250ZW50IGxheWVyLCBhbmQg
cHJlc2VydmVzLTNkLCBhbmQgc2l6ZSBpZiB0aWxpbmcgY2hhbmdlcz8KKyAgICAgICAgUG9zaXRp
b25DaGFuZ2VkID0gMSA8PCAzLAorICAgICAgICBBbmNob3JQb2ludENoYW5nZWQgPSAxIDw8IDQs
CisgICAgICAgIFNpemVDaGFuZ2VkID0gMSA8PCA1LAorICAgICAgICBUcmFuc2Zvcm1DaGFuZ2Vk
ID0gMSA8PCA2LAorICAgICAgICBDaGlsZHJlblRyYW5zZm9ybUNoYW5nZWQgPSAxIDw8IDcsCisg
ICAgICAgIFByZXNlcnZlczNEQ2hhbmdlZCA9IDEgPDwgOCwKKyAgICAgICAgTWFza3NUb0JvdW5k
c0NoYW5nZWQgPSAxIDw8IDksCisgICAgICAgIERyYXdzQ29udGVudENoYW5nZWQgPSAxIDw8IDEw
LCAvLyBuZWVkIHRoaXM/CisgICAgICAgIEJhY2tncm91bmRDb2xvckNoYW5nZWQgPSAxIDw8IDEx
LAorICAgICAgICBDb250ZW50c09wYXF1ZUNoYW5nZWQgPSAxIDw8IDEyLAorICAgICAgICBCYWNr
ZmFjZVZpc2liaWxpdHlDaGFuZ2VkID0gMSA8PCAxMywKKyAgICAgICAgT3BhY2l0eUNoYW5nZWQg
PSAxIDw8IDE0LAorICAgICAgICBBbmltYXRpb25DaGFuZ2VkID0gMSA8PCAxNSwKKyAgICAgICAg
RGlydHlSZWN0c0NoYW5nZWQgPSAxIDw8IDE2LAorICAgICAgICBDb250ZW50c0ltYWdlQ2hhbmdl
ZCA9IDEgPDwgMTcsCisgICAgICAgIENvbnRlbnRzTWVkaWFMYXllckNoYW5nZWQgPSAxIDw8IDE4
LAorICAgICAgICBDb250ZW50c0NhbnZhc0xheWVyQ2hhbmdlZCA9IDEgPDwgMTksCisgICAgICAg
IENvbnRlbnRzUmVjdENoYW5nZWQgPSAxIDw8IDIwLAorICAgICAgICBNYXNrTGF5ZXJDaGFuZ2Vk
ID0gMSA8PCAyMSwKKyAgICAgICAgUmVwbGljYXRlZExheWVyQ2hhbmdlZCA9IDEgPDwgMjIsCisg
ICAgICAgIENvbnRlbnRzTmVlZHNEaXNwbGF5ID0gMSA8PCAyMworICAgIH07CisgICAgdHlwZWRl
ZiB1bnNpZ25lZCBMYXllckNoYW5nZUZsYWdzOworICAgIHZvaWQgbm90ZUxheWVyUHJvcGVydHlD
aGFuZ2VkKExheWVyQ2hhbmdlRmxhZ3MgZmxhZ3MpOworICAgIHZvaWQgbm90ZVN1YmxheWVyc0No
YW5nZWQoKTsKKworICAgIHZvaWQgcmVwYWludExheWVyRGlydHlSZWN0cygpOworCisgICAgUmVm
UHRyPFBsYXRmb3JtQ0FMYXllcj4gbV9sYXllcjsgLy8gVGhlIG1haW4gbGF5ZXIKKyAgICBSZWZQ
dHI8UGxhdGZvcm1DQUxheWVyPiBtX3N0cnVjdHVyYWxMYXllcjsgLy8gQSBsYXllciB1c2VkIGZv
ciBzdHJ1Y3R1cmFsIHJlYXNvbnMsIGxpa2UgcHJlc2VydmVzLTNkIG9yIHJlcGxpY2EtZmxhdHRl
bmluZy4gSXMgdGhlIHBhcmVudCBvZiBtX2xheWVyLgorICAgIFJlZlB0cjxQbGF0Zm9ybUNBTGF5
ZXI+IG1fY29udGVudHNMYXllcjsgLy8gQSBsYXllciB1c2VkIGZvciBpbm5lciBjb250ZW50LCBs
aWtlIGltYWdlIGFuZCB2aWRlbworCisgICAgLy8gUmVmZXJlbmNlcyB0byBjbG9uZXMgb2Ygb3Vy
IGxheWVycywgZm9yIHJlcGxpY2F0ZWQgbGF5ZXJzLgorICAgIE93blB0cjxMYXllck1hcD4gbV9s
YXllckNsb25lczsKKyAgICBPd25QdHI8TGF5ZXJNYXA+IG1fc3RydWN0dXJhbExheWVyQ2xvbmVz
OworICAgIE93blB0cjxMYXllck1hcD4gbV9jb250ZW50c0xheWVyQ2xvbmVzOworICAgIAorICAg
IGVudW0gQ29udGVudHNMYXllclB1cnBvc2UgeworICAgICAgICBOb0NvbnRlbnRzTGF5ZXIgPSAw
LAorICAgICAgICBDb250ZW50c0xheWVyRm9ySW1hZ2UsCisgICAgICAgIENvbnRlbnRzTGF5ZXJG
b3JNZWRpYSwKKyAgICAgICAgQ29udGVudHNMYXllckZvckNhbnZhcworICAgIH07CisgICAgCisg
ICAgQ29udGVudHNMYXllclB1cnBvc2UgbV9jb250ZW50c0xheWVyUHVycG9zZTsKKyAgICBib29s
IG1fY29udGVudHNMYXllckhhc0JhY2tncm91bmRDb2xvciA6IDE7CisKKyAgICBSZXRhaW5QdHI8
Q0dJbWFnZVJlZj4gbV91bmNvcnJlY3RlZENvbnRlbnRzSW1hZ2U7CisgICAgUmV0YWluUHRyPENH
SW1hZ2VSZWY+IG1fcGVuZGluZ0NvbnRlbnRzSW1hZ2U7CisgICAgCisgICAgLy8gVGhpcyByZXBy
ZXNlbnRzIHRoZSBhbmltYXRpb24gb2YgYSBzaW5nbGUgcHJvcGVydHkuIFRoZXJlIG1heSBiZSBt
dWx0aXBsZSB0cmFuc2Zvcm0gYW5pbWF0aW9ucyBmb3IKKyAgICAvLyBhIHNpbmdsZSB0cmFuc2l0
aW9uIG9yIGtleWZyYW1lIGFuaW1hdGlvbiwgc28gaW5kZXggaXMgdXNlZCB0byBkaXN0aW5ndWlz
aCB0aGVzZS4KKyAgICBzdHJ1Y3QgTGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbiB7CisgICAgICAgIExh
eWVyUHJvcGVydHlBbmltYXRpb24oUGFzc1JlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBjYUFu
aW1hdGlvbiwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBBbmltYXRlZFByb3BlcnR5SUQg
cHJvcGVydHksIGludCBpbmRleCwgZG91YmxlIHRpbWVPZmZzZXQpCisgICAgICAgIDogbV9hbmlt
YXRpb24oY2FBbmltYXRpb24pCisgICAgICAgICwgbV9uYW1lKGFuaW1hdGlvbk5hbWUpCisgICAg
ICAgICwgbV9wcm9wZXJ0eShwcm9wZXJ0eSkKKyAgICAgICAgLCBtX2luZGV4KGluZGV4KQorICAg
ICAgICAsIG1fdGltZU9mZnNldCh0aW1lT2Zmc2V0KQorICAgICAgICB7IH0KKworICAgICAgICBS
ZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gbV9hbmltYXRpb247CisgICAgICAgIFN0cmluZyBt
X25hbWU7CisgICAgICAgIEFuaW1hdGVkUHJvcGVydHlJRCBtX3Byb3BlcnR5OworICAgICAgICBp
bnQgbV9pbmRleDsKKyAgICAgICAgZG91YmxlIG1fdGltZU9mZnNldDsKKyAgICB9OworICAgIAor
ICAgIC8vIFVuY29tbWl0dGVkIHRyYW5zaXRpb25zIGFuZCBhbmltYXRpb25zLgorICAgIFZlY3Rv
cjxMYXllclByb3BlcnR5QW5pbWF0aW9uPiBtX3VuY29taXR0ZWRBbmltYXRpb25zOworICAgIAor
ICAgIGVudW0gQWN0aW9uIHsgUmVtb3ZlLCBQYXVzZSB9OworICAgIHN0cnVjdCBBbmltYXRpb25Q
cm9jZXNzaW5nQWN0aW9uIHsKKyAgICAgICAgQW5pbWF0aW9uUHJvY2Vzc2luZ0FjdGlvbihBY3Rp
b24gYWN0aW9uID0gUmVtb3ZlLCBkb3VibGUgdGltZU9mZnNldCA9IDApCisgICAgICAgICAgICA6
IGFjdGlvbihhY3Rpb24pCisgICAgICAgICAgICAsIHRpbWVPZmZzZXQodGltZU9mZnNldCkKKyAg
ICAgICAgeworICAgICAgICB9CisgICAgICAgIEFjdGlvbiBhY3Rpb247CisgICAgICAgIGRvdWJs
ZSB0aW1lT2Zmc2V0OyAvLyBvbmx5IHVzZWQgZm9yIHBhdXNlCisgICAgfTsKKyAgICB0eXBlZGVm
IEhhc2hNYXA8U3RyaW5nLCBBbmltYXRpb25Qcm9jZXNzaW5nQWN0aW9uPiBBbmltYXRpb25zVG9Q
cm9jZXNzTWFwOworICAgIEFuaW1hdGlvbnNUb1Byb2Nlc3NNYXAgbV9hbmltYXRpb25zVG9Qcm9j
ZXNzOworCisgICAgLy8gTWFwIG9mIGFuaW1hdGlvbiBuYW1lcyB0byB0aGVpciBhc3NvY2lhdGVk
IGxpc3RzIG9mIHByb3BlcnR5IGFuaW1hdGlvbnMsIHNvIHdlIGNhbiByZW1vdmUvcGF1c2UgdGhl
bS4KKyAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBWZWN0b3I8TGF5ZXJQcm9wZXJ0eUFuaW1h
dGlvbj4gPiBBbmltYXRpb25zTWFwOworICAgIEFuaW1hdGlvbnNNYXAgbV9ydW5uaW5nQW5pbWF0
aW9uczsKKworICAgIFZlY3RvcjxGbG9hdFJlY3Q+IG1fZGlydHlSZWN0czsKKyAgICAKKyAgICBM
YXllckNoYW5nZUZsYWdzIG1fdW5jb21taXR0ZWRDaGFuZ2VzOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisKKyNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisK
KyNlbmRpZiAvLyBHcmFwaGljc0xheWVyQ0FfaApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9QbGF0Zm9ybUNBQW5pbWF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBQW5pbWF0aW9uLmgJKHJldmlzaW9uIDApCisrKyBX
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FBbmltYXRpb24uaAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwxNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgUGxhdGZvcm1DQUFuaW1hdGlvbl9oCisj
ZGVmaW5lIFBsYXRmb3JtQ0FBbmltYXRpb25faAorCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBP
U0lUSU5HKQorCisjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJGbG9hdFBvaW50M0QuaCIK
KyNpbmNsdWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgorI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KKworI2lmIFBMQVRGT1JNKE1BQykKKyNpZmRlZiBfX09CSkNfXworQGNsYXNzIENBUHJvcGVy
dHlBbmltYXRpb247CisjZWxzZQordHlwZWRlZiB2b2lkKiBDQVByb3BlcnR5QW5pbWF0aW9uOwor
I2VuZGlmCisjZWxpZiBQTEFURk9STShXSU4pCit0eXBlZGVmIHN0cnVjdCBfQ0FDRkFuaW1hdGlv
biAqQ0FDRkFuaW1hdGlvblJlZjsKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIEZsb2F0UmVjdDsKK2NsYXNzIFBsYXRmb3JtQ0FBbmltYXRpb247CitjbGFzcyBUaW1pbmdG
dW5jdGlvbjsKKworY2xhc3MgUGxhdGZvcm1DQUFuaW1hdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVk
PFBsYXRmb3JtQ0FBbmltYXRpb24+IHsKK3B1YmxpYzoKKyAgICBmcmllbmQgY2xhc3MgUGxhdGZv
cm1DQUxheWVyOworICAgIAorICAgIGVudW0gQW5pbWF0aW9uVHlwZSB7IEJhc2ljLCBLZXlmcmFt
ZSB9OworICAgIGVudW0gRmlsbE1vZGVUeXBlIHsgTm9GaWxsTW9kZSwgRm9yd2FyZHMsIEJhY2t3
YXJkcywgQm90aCB9OworICAgIGVudW0gVmFsdWVGdW5jdGlvblR5cGUgeyBOb1ZhbHVlRnVuY3Rp
b24sIFJvdGF0ZVgsIFJvdGF0ZVksIFJvdGF0ZVosIFNjYWxlWCwgU2NhbGVZLCBTY2FsZVosIFNj
YWxlLCBUcmFuc2xhdGVYLCBUcmFuc2xhdGVZLCBUcmFuc2xhdGVaLCBUcmFuc2xhdGUgfTsKKwor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IGNyZWF0ZShBbmltYXRp
b25UeXBlLCBjb25zdCBTdHJpbmcmIGtleVBhdGgpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBs
YXRmb3JtQ0FBbmltYXRpb24+IGNyZWF0ZSh2b2lkKiBhbmltYXRpb24pOworCisgICAgflBsYXRm
b3JtQ0FBbmltYXRpb24oKTsKKyAgICAKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c1ZhbHVlRnVu
Y3Rpb24oKTsKKyAgICAKKyAgICB2b2lkKiBwbGF0Zm9ybUFuaW1hdGlvbigpIGNvbnN0OworICAg
IAorICAgIEFuaW1hdGlvblR5cGUgYW5pbWF0aW9uVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlw
ZTsgfQorICAgIFN0cmluZyBrZXlQYXRoKCkgY29uc3Q7CisgICAgCisgICAgYm9vbCBub25aZXJv
QmVnaW5UaW1lRmxhZygpIGNvbnN0OworICAgIHZvaWQgc2V0Tm9uWmVyb0JlZ2luVGltZUZsYWco
Ym9vbCB2YWx1ZSk7CisgICAgCisgICAgQ0ZUaW1lSW50ZXJ2YWwgYmVnaW5UaW1lKCkgY29uc3Q7
CisgICAgdm9pZCBzZXRCZWdpblRpbWUoQ0ZUaW1lSW50ZXJ2YWwpOworICAgIAorICAgIENGVGlt
ZUludGVydmFsIGR1cmF0aW9uKCkgY29uc3Q7CisgICAgdm9pZCBzZXREdXJhdGlvbihDRlRpbWVJ
bnRlcnZhbCk7CisgICAgCisgICAgZmxvYXQgc3BlZWQoKSBjb25zdDsKKyAgICB2b2lkIHNldFNw
ZWVkKGZsb2F0KTsKKworICAgIENGVGltZUludGVydmFsIHRpbWVPZmZzZXQoKSBjb25zdDsKKyAg
ICB2b2lkIHNldFRpbWVPZmZzZXQoQ0ZUaW1lSW50ZXJ2YWwpOworCisgICAgZmxvYXQgcmVwZWF0
Q291bnQoKSBjb25zdDsKKyAgICB2b2lkIHNldFJlcGVhdENvdW50KGZsb2F0KTsKKworICAgIGJv
b2wgYXV0b3JldmVyc2VzKCkgY29uc3Q7CisgICAgdm9pZCBzZXRBdXRvcmV2ZXJzZXMoYm9vbCk7
CisKKyAgICBGaWxsTW9kZVR5cGUgZmlsbE1vZGUoKSBjb25zdDsKKyAgICB2b2lkIHNldEZpbGxN
b2RlKEZpbGxNb2RlVHlwZSk7CisgICAgCisgICAgdm9pZCBzZXRUaW1pbmdGdW5jdGlvbihjb25z
dCBUaW1pbmdGdW5jdGlvbiopOworICAgIHZvaWQgY29weVRpbWluZ0Z1bmN0aW9uRnJvbShjb25z
dCBQbGF0Zm9ybUNBQW5pbWF0aW9uKik7CisKKyAgICBib29sIGlzUmVtb3ZlZE9uQ29tcGxldGlv
bigpIGNvbnN0OworICAgIHZvaWQgc2V0UmVtb3ZlZE9uQ29tcGxldGlvbihib29sKTsKKworICAg
IGJvb2wgaXNBZGRpdGl2ZSgpIGNvbnN0OworICAgIHZvaWQgc2V0QWRkaXRpdmUoYm9vbCk7CisK
KyAgICBWYWx1ZUZ1bmN0aW9uVHlwZSB2YWx1ZUZ1bmN0aW9uKCkgY29uc3Q7CisgICAgdm9pZCBz
ZXRWYWx1ZUZ1bmN0aW9uKFZhbHVlRnVuY3Rpb25UeXBlKTsKKworICAgIC8vIEJhc2ljLWFuaW1h
dGlvbiBwcm9wZXJ0aWVzLgorICAgIHZvaWQgc2V0RnJvbVZhbHVlKGZsb2F0KTsKKyAgICB2b2lk
IHNldEZyb21WYWx1ZShjb25zdCBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpOworICAg
IHZvaWQgc2V0RnJvbVZhbHVlKGNvbnN0IEZsb2F0UG9pbnQzRCYpOworICAgIHZvaWQgc2V0RnJv
bVZhbHVlKGNvbnN0IFdlYkNvcmU6OkNvbG9yJik7CisgICAgdm9pZCBjb3B5RnJvbVZhbHVlRnJv
bShjb25zdCBQbGF0Zm9ybUNBQW5pbWF0aW9uKik7CisKKyAgICB2b2lkIHNldFRvVmFsdWUoZmxv
YXQpOworICAgIHZvaWQgc2V0VG9WYWx1ZShjb25zdCBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYpOworICAgIHZvaWQgc2V0VG9WYWx1ZShjb25zdCBGbG9hdFBvaW50M0QmKTsKKyAgICB2
b2lkIHNldFRvVmFsdWUoY29uc3QgV2ViQ29yZTo6Q29sb3ImKTsKKyAgICB2b2lkIGNvcHlUb1Zh
bHVlRnJvbShjb25zdCBQbGF0Zm9ybUNBQW5pbWF0aW9uKik7CisKKyAgICAvLyBLZXlmcmFtZS1h
bmltYXRpb24gcHJvcGVydGllcy4KKyAgICB2b2lkIHNldFZhbHVlcyhjb25zdCBWZWN0b3I8Zmxv
YXQ+Jik7CisgICAgdm9pZCBzZXRWYWx1ZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlRyYW5zZm9y
bWF0aW9uTWF0cml4PiYpOworICAgIHZvaWQgc2V0VmFsdWVzKGNvbnN0IFZlY3RvcjxGbG9hdFBv
aW50M0Q+Jik7CisgICAgdm9pZCBzZXRWYWx1ZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvbG9y
PiYpOworICAgIHZvaWQgY29weVZhbHVlc0Zyb20oY29uc3QgUGxhdGZvcm1DQUFuaW1hdGlvbiop
OworCisgICAgdm9pZCBzZXRLZXlUaW1lcyhjb25zdCBWZWN0b3I8ZmxvYXQ+Jik7CisgICAgdm9p
ZCBjb3B5S2V5VGltZXNGcm9tKGNvbnN0IFBsYXRmb3JtQ0FBbmltYXRpb24qKTsKKworICAgIHZv
aWQgc2V0VGltaW5nRnVuY3Rpb25zKGNvbnN0IFZlY3Rvcjxjb25zdCBUaW1pbmdGdW5jdGlvbio+
Jik7CisgICAgdm9pZCBjb3B5VGltaW5nRnVuY3Rpb25zRnJvbShjb25zdCBQbGF0Zm9ybUNBQW5p
bWF0aW9uKik7CisgICAgCitwcm90ZWN0ZWQ6CisgICAgUGxhdGZvcm1DQUFuaW1hdGlvbihBbmlt
YXRpb25UeXBlLCBjb25zdCBTdHJpbmcmIGtleVBhdGgpOworICAgIFBsYXRmb3JtQ0FBbmltYXRp
b24odm9pZCogYW5pbWF0aW9uKTsKKyAgICAKK3ByaXZhdGU6CisgICAgQW5pbWF0aW9uVHlwZSBt
X3R5cGU7CisgICAgCisjaWYgUExBVEZPUk0oTUFDKQorICAgIFJldGFpblB0cjxDQVByb3BlcnR5
QW5pbWF0aW9uPiBtX2FuaW1hdGlvbjsKKyNlbGlmIFBMQVRGT1JNKFdJTikKKyAgICBSZXRhaW5Q
dHI8Q0FDRkFuaW1hdGlvblJlZj4gbV9hbmltYXRpb247CisjZW5kaWYKK307CisKK30KKworI2Vu
ZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKworI2VuZGlmIC8vIFBsYXRmb3Jt
Q0FBbmltYXRpb25faApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9y
bUNBTGF5ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
UGxhdGZvcm1DQUxheWVyLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNTQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElO
RykKKworI2luY2x1ZGUgIlBsYXRmb3JtQ0FMYXllci5oIgorCisjaW5jbHVkZSA8c3RkaW8uaD4K
KyNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordXNpbmcgbmFtZXNwYWNlIHN0ZDsKKworUGxh
dGZvcm1DQUxheWVyKiBQbGF0Zm9ybUNBTGF5ZXI6OnJvb3RMYXllcigpIGNvbnN0Cit7CisgICAg
UGxhdGZvcm1DQUxheWVyKiBsYXllciA9IGNvbnN0X2Nhc3Q8UGxhdGZvcm1DQUxheWVyKj4odGhp
cyk7CisgICAgZm9yIChQbGF0Zm9ybUNBTGF5ZXIqIHN1cGVybGF5ZXIgPSBsYXllci0+c3VwZXJs
YXllcigpOyBzdXBlcmxheWVyOyBsYXllciA9IHN1cGVybGF5ZXIsIHN1cGVybGF5ZXIgPSBzdXBl
cmxheWVyLT5zdXBlcmxheWVyKCkpIHsgfQorICAgIHJldHVybiBsYXllcjsKK30KKworI2lmbmRl
ZiBOREVCVUcKK3N0YXRpYyB2b2lkIHByaW50SW5kZW50KGludCBpbmRlbnQpCit7CisgICAgZm9y
ICggOyBpbmRlbnQgPiAwOyAtLWluZGVudCkKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICIgICIp
OworfQorCitzdGF0aWMgdm9pZCBwcmludFRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgdHJhbnNmb3JtKQoreworICAgIGZwcmludGYoc3RkZXJyLCAiWyVnICVnICVnICVnOyAl
ZyAlZyAlZyAlZzsgJWcgJWcgJWcgJWc7ICVnICVnICVnICVnXSIsCisgICAgICAgICAgICAgICAg
ICAgIHRyYW5zZm9ybS5tMTEoKSwgdHJhbnNmb3JtLm0xMigpLCB0cmFuc2Zvcm0ubTEzKCksIHRy
YW5zZm9ybS5tMTQoKSwgCisgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybS5tMjEoKSwgdHJh
bnNmb3JtLm0yMigpLCB0cmFuc2Zvcm0ubTIzKCksIHRyYW5zZm9ybS5tMjQoKSwgCisgICAgICAg
ICAgICAgICAgICAgIHRyYW5zZm9ybS5tMzEoKSwgdHJhbnNmb3JtLm0zMigpLCB0cmFuc2Zvcm0u
bTMzKCksIHRyYW5zZm9ybS5tMzQoKSwgCisgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybS5t
NDEoKSwgdHJhbnNmb3JtLm00MigpLCB0cmFuc2Zvcm0ubTQzKCksIHRyYW5zZm9ybS5tNDQoKSk7
Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyOjpwcmludFRyZWUoKSBjb25zdAoreworICAgIC8v
IFByaW50IGhlYWRpbmcgaW5mbworICAgIENHUmVjdCByb290Qm91bmRzID0gYm91bmRzKCk7Cisg
ICAgZnByaW50ZihzdGRlcnIsICJcblxuKiogUmVuZGVyIHRyZWUgYXQgdGltZSAlZyAoYm91bmRz
ICVnLCAlZyAlZ3glZykgKipcblxuIiwgCisgICAgICAgIGN1cnJlbnRUaW1lKCksIHJvb3RCb3Vu
ZHMub3JpZ2luLngsIHJvb3RCb3VuZHMub3JpZ2luLnksIHJvb3RCb3VuZHMuc2l6ZS53aWR0aCwg
cm9vdEJvdW5kcy5zaXplLmhlaWdodCk7CisKKyAgICAvLyBQcmludCBsYXllciB0cmVlIGZyb20g
dGhlIHJvb3QKKyAgICBwcmludExheWVyKDApOworfQorCit2b2lkIFBsYXRmb3JtQ0FMYXllcjo6
cHJpbnRMYXllcihpbnQgaW5kZW50KSBjb25zdAoreworICAgIENHUG9pbnQgbGF5ZXJQb3NpdGlv
biA9IHBvc2l0aW9uKCk7CisgICAgQ0dQb2ludCBsYXllckFuY2hvclBvaW50ID0gYW5jaG9yUG9p
bnQoKTsKKyAgICBDR1JlY3QgbGF5ZXJCb3VuZHMgPSBib3VuZHMoKTsKKyAgICBwcmludEluZGVu
dChpbmRlbnQpOworICAgIGZwcmludGYoc3RkZXJyLCAiKCVzIFslZyAlZyAlZ10gWyVnICVnICVn
ICVnXSBbJWcgJWcgJWddIHN1cGVybGF5ZXI9JXBcbiIsCisgICAgICAgIGlzVHJhbnNmb3JtTGF5
ZXIoKSA/ICJ0cmFuc2Zvcm0tbGF5ZXIiIDogImxheWVyIiwKKyAgICAgICAgbGF5ZXJQb3NpdGlv
bi54LCBsYXllclBvc2l0aW9uLnksIHpQb3NpdGlvbigpLCAKKyAgICAgICAgbGF5ZXJCb3VuZHMu
b3JpZ2luLngsIGxheWVyQm91bmRzLm9yaWdpbi55LCBsYXllckJvdW5kcy5zaXplLndpZHRoLCBs
YXllckJvdW5kcy5zaXplLmhlaWdodCwKKyAgICAgICAgbGF5ZXJBbmNob3JQb2ludC54LCBsYXll
ckFuY2hvclBvaW50LnksIGFuY2hvclBvaW50WigpLCBzdXBlcmxheWVyKCkpOworCisgICAgLy8g
UHJpbnQgbmFtZSBpZiBuZWVkZWQKKyAgICBTdHJpbmcgbGF5ZXJOYW1lID0gbmFtZSgpOworICAg
IGlmICghbGF5ZXJOYW1lLmlzRW1wdHkoKSkgeworICAgICAgICBwcmludEluZGVudChpbmRlbnQg
KyAxKTsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICIobmFtZSAlcylcbiIsIGxheWVyTmFtZS51
dGY4KCkuZGF0YSgpKTsKKyAgICB9CisKKyAgICAvLyBQcmludCBtYXNrc1RvQm91bmRzIGlmIG5l
ZWRlZAorICAgIGJvb2wgbGF5ZXJNYXNrc1RvQm91bmRzID0gbWFza3NUb0JvdW5kcygpOworICAg
IGlmIChsYXllck1hc2tzVG9Cb3VuZHMpIHsKKyAgICAgICAgcHJpbnRJbmRlbnQoaW5kZW50ICsg
MSk7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiKG1hc2tzVG9Cb3VuZHMgdHJ1ZSlcbiIpOwor
ICAgIH0KKworICAgIC8vIFByaW50IG9wYWNpdHkgaWYgbmVlZGVkCisgICAgZmxvYXQgbGF5ZXJP
cGFjaXR5ID0gb3BhY2l0eSgpOworICAgIGlmIChsYXllck9wYWNpdHkgIT0gMSkgeworICAgICAg
ICBwcmludEluZGVudChpbmRlbnQgKyAxKTsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICIob3Bh
Y2l0eSAlZilcbiIsIGxheWVyT3BhY2l0eSk7CisgICAgfQorCisgICAgLy8gUHJpbnQgc3VibGF5
ZXJUcmFuc2Zvcm0gaWYgbmVlZGVkCisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbGF5ZXJUcmFu
c2Zvcm0gPSBzdWJsYXllclRyYW5zZm9ybSgpOworICAgIGlmICghbGF5ZXJUcmFuc2Zvcm0uaXNJ
ZGVudGl0eSgpKSB7CisgICAgICAgIHByaW50SW5kZW50KGluZGVudCArIDEpOworICAgICAgICBm
cHJpbnRmKHN0ZGVyciwgIihzdWJsYXllclRyYW5zZm9ybSAiKTsKKyAgICAgICAgcHJpbnRUcmFu
c2Zvcm0obGF5ZXJUcmFuc2Zvcm0pOworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIilcbiIpOwor
ICAgIH0KKworICAgIC8vIFByaW50IHRyYW5zZm9ybSBpZiBuZWVkZWQKKyAgICBsYXllclRyYW5z
Zm9ybSA9IHRyYW5zZm9ybSgpOworICAgIGlmICghbGF5ZXJUcmFuc2Zvcm0uaXNJZGVudGl0eSgp
KSB7CisgICAgICAgIHByaW50SW5kZW50KGluZGVudCArIDEpOworICAgICAgICBmcHJpbnRmKHN0
ZGVyciwgIih0cmFuc2Zvcm0gIik7CisgICAgICAgIHByaW50VHJhbnNmb3JtKGxheWVyVHJhbnNm
b3JtKTsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICIpXG4iKTsKKyAgICB9CisKKyAgICAvLyBQ
cmludCBjb250ZW50cyBpZiBuZWVkZWQKKyAgICBDRlR5cGVSZWYgbGF5ZXJDb250ZW50cyA9IGNv
bnRlbnRzKCk7CisgICAgaWYgKGxheWVyQ29udGVudHMpIHsKKyAgICAgICAgaWYgKENGR2V0VHlw
ZUlEKGxheWVyQ29udGVudHMpID09IENHSW1hZ2VHZXRUeXBlSUQoKSkgeworICAgICAgICAgICAg
Q0dJbWFnZVJlZiBpbWFnZUNvbnRlbnRzID0gc3RhdGljX2Nhc3Q8Q0dJbWFnZVJlZj4oY29uc3Rf
Y2FzdDx2b2lkKj4obGF5ZXJDb250ZW50cykpOworICAgICAgICAgICAgcHJpbnRJbmRlbnQoaW5k
ZW50ICsgMSk7CisgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIihjb250ZW50cyAoaW1hZ2Ug
WyVkICVkXSkpXG4iLAorICAgICAgICAgICAgICAgIENHSW1hZ2VHZXRXaWR0aChpbWFnZUNvbnRl
bnRzKSwgQ0dJbWFnZUdldEhlaWdodChpbWFnZUNvbnRlbnRzKSk7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICAvLyBQcmludCBzdWJsYXllcnMgaWYgbmVlZGVkCisgICAgaW50IG4gPSBzdWJsYXll
ckNvdW50KCk7CisgICAgaWYgKG4gPiAwKSB7CisgICAgICAgIHByaW50SW5kZW50KGluZGVudCAr
IDEpOworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIihzdWJsYXllcnNcbiIpOworICAgICAgICBm
b3IgKGludCBpID0gMDsgaSA8IG47ICsraSkKKyAgICAgICAgICAgIHN1YmxheWVyQXRJbmRleChp
KS0+cHJpbnRMYXllcihpbmRlbnQgKyAyKTsKKworICAgICAgICBwcmludEluZGVudChpbmRlbnQg
KyAxKTsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICIpXG4iKTsKKyAgICB9CisKKyAgICBwcmlu
dEluZGVudChpbmRlbnQpOworICAgIGZwcmludGYoc3RkZXJyLCAiKVxuIik7Cit9CisjZW5kaWYg
Ly8gI2lmbmRlZiBOREVCVUcKK30KKworI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJ
VElORykKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNB
TGF5ZXIuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxh
dGZvcm1DQUxheWVyLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjA5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFBs
YXRmb3JtQ0FMYXllcl9oCisjZGVmaW5lIFBsYXRmb3JtQ0FMYXllcl9oCisKKyNpZiBVU0UoQUND
RUxFUkFURURfQ09NUE9TSVRJTkcpCisKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNp
bmNsdWRlICJHcmFwaGljc0xheWVyQ0EuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUNBQW5pbWF0aW9u
LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgor
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBQbGF0Zm9ybUNBTGF5ZXI7CisKK3R5cGVkZWYgVmVjdG9yPFJlZlB0cjxQbGF0Zm9y
bUNBTGF5ZXI+ID4gUGxhdGZvcm1DQUxheWVyTGlzdDsKKworY2xhc3MgUGxhdGZvcm1DQUxheWVy
IDogcHVibGljIFJlZkNvdW50ZWQ8UGxhdGZvcm1DQUxheWVyPiB7CitwdWJsaWM6CisgICAgLy8g
RklYTUU6IFRoaXMgb2JqZWN0IHJlcHJlc2VudHMgYWxsIExheWVyIHR5cGVzIHVzZWQgaW4gR3Jh
cGhpY3NMYXllciwgYW5kIHRob3NlIHVzZWQgYnkgdmlkZW8gYW5kIGNhbnZhcy4KKyAgICAvLwor
ICAgIC8vIFRpbGVkTGF5ZXIgdXNlZCBpbiBHcmFwaGljc0xheWVyIGhhcyBjb25zdGFudCBzZXR0
aW5nczoKKyAgICAvLyAgICAgIGNUaWxlZExheWVyVGlsZVNpemUgPSA1MTIKKyAgICAvLyAgICAg
IHNldFRpbGVTaXplOihjVGlsZWRMYXllclRpbGVTaXplLCBjVGlsZWRMYXllclRpbGVTaXplKQor
ICAgIC8vICAgICAgc2V0TGV2ZWxzT2ZEZXRhaWw6MQorICAgIC8vICAgICAgc2V0TGV2ZWxzT2ZE
ZXRhaWxCaWFzOjAKKyAgICAvLyAgICAgIHNldENvbnRlbnRzR3Jhdml0eTpAImJvdHRvbUxlZnQi
CisgICAgLy8KKyAgICAvLyBUaWxlZExheWVyIGFsc28gaGFzIGRyYXdpbmcgZnVuY3Rpb25zIGxp
a2UgV2ViTGF5ZXIKKyAgICAvLworICAgIC8vIFdlYkxheWVyIGlzIGEgQ0FMYXllciB3aXRoIGRy
YXdpbmcgZnVuY3Rpb25zIHNwZWNpZmljIHRvIFdlYktpdAorICAgIC8vCisgICAgLy8gTGF5ZXIg
YW5kIFRyYW5zZm9ybUxheWVyIGFyZSB1c2VkIGFzIGlzCisgICAgLy8KKyAgICAvLyBGSVhNRTog
dHVybiBvZmYgaW1wbGljaXQgYW5pbWF0aW9uIGluIGN0b3IKKworICAgIGVudW0gTGF5ZXJUeXBl
IHsgTGF5ZXJUeXBlTGF5ZXIsIExheWVyVHlwZVdlYkxheWVyLCBMYXllclR5cGVUcmFuc2Zvcm1M
YXllciwgTGF5ZXJUeXBlV2ViVGlsZWRMYXllciwgTGF5ZXJUeXBlQ3VzdG9tIH07CisgICAgZW51
bSBGaWx0ZXJUeXBlIHsgTGluZWFyLCBOZWFyZXN0LCBUcmlsaW5lYXIgfTsKKworICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gY3JlYXRlKExheWVyVHlwZSwgR3JhcGhpY3NM
YXllckNBKik7CisgICAgCisgICAgLy8gVGhpcyBmdW5jdGlvbiBwYXNzZXMgdGhlIGxheWVyIGFz
IGEgdm9pZCogcmF0aGVyIHRoYW4gYSBQbGF0Zm9ybUxheWVyIGJlY2F1c2UgUGxhdGZvcm1MYXll
cgorICAgIC8vIGlzIGRlZmluZWQgZGlmZmVyZW50bHkgZm9yIE9iaiBDIGFuZCBDKysuIFRoaXMg
YWxsb3dzIGNhbGxlcnMgZnJvbSBib3RoIGxhbmd1YWdlcy4KKyAgICBzdGF0aWMgUGFzc1JlZlB0
cjxQbGF0Zm9ybUNBTGF5ZXI+IGNyZWF0ZSh2b2lkKiBwbGF0Zm9ybUxheWVyLCBHcmFwaGljc0xh
eWVyQ0EqKTsKKworICAgIH5QbGF0Zm9ybUNBTGF5ZXIoKTsKKyAgICAKKyAgICAvLyBUaGlzIGZ1
bmN0aW9uIHBhc3NlcyB0aGUgbGF5ZXIgYXMgYSB2b2lkKiByYXRoZXIgdGhhbiBhIFBsYXRmb3Jt
TGF5ZXIgYmVjYXVzZSBQbGF0Zm9ybUxheWVyCisgICAgLy8gaXMgZGVmaW5lZCBkaWZmZXJlbnRs
eSBmb3IgT2JqIEMgYW5kIEMrKy4gVGhpcyBhbGxvd3MgY2FsbGVycyBmcm9tIGJvdGggbGFuZ3Vh
Z2VzLgorICAgIHN0YXRpYyBQbGF0Zm9ybUNBTGF5ZXIqIHBsYXRmb3JtQ0FMYXllcih2b2lkKiBw
bGF0Zm9ybUxheWVyKTsKKyAgICAKKyAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkg
Y29uc3Q7CisgICAgCisgICAgc3RhdGljIGJvb2wgaXNWYWx1ZUZ1bmN0aW9uU3VwcG9ydGVkKCk7
CisgICAgCisgICAgR3JhcGhpY3NMYXllckNBKiBvd25lcigpIGNvbnN0IHsgcmV0dXJuIG1fb3du
ZXI7IH0KKyAgICB2b2lkIHNldE93bmVyKEdyYXBoaWNzTGF5ZXJDQSogb3duZXIpOworCisgICAg
dm9pZCBhbmltYXRpb25TdGFydGVkKENGVGltZUludGVydmFsIGJlZ2luVGltZSkKKyAgICB7Cisg
ICAgICAgIGlmIChtX293bmVyKQorICAgICAgICAgICAgbV9vd25lci0+YW5pbWF0aW9uU3RhcnRl
ZChiZWdpblRpbWUpOworICAgIH0KKworICAgIHZvaWQgc2V0TmVlZHNEaXNwbGF5KGNvbnN0IEZs
b2F0UmVjdCogZGlydHlSZWN0ID0gMCk7CisgICAgCisgICAgdm9pZCBzZXRDb250ZW50c0NoYW5n
ZWQoKTsKKyAgICAKKyAgICBMYXllclR5cGUgbGF5ZXJUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9s
YXllclR5cGU7IH0KKworICAgIFBsYXRmb3JtQ0FMYXllciogc3VwZXJsYXllcigpIGNvbnN0Owor
ICAgIHZvaWQgcmVtb3ZlRnJvbVN1cGVybGF5ZXIoKTsKKyAgICB2b2lkIHNldFN1YmxheWVycyhj
b25zdCBQbGF0Zm9ybUNBTGF5ZXJMaXN0Jik7CisgICAgdm9pZCByZW1vdmVBbGxTdWJsYXllcnMo
KTsKKyAgICB2b2lkIGFwcGVuZFN1YmxheWVyKFBsYXRmb3JtQ0FMYXllciopOworICAgIHZvaWQg
aW5zZXJ0U3VibGF5ZXIoUGxhdGZvcm1DQUxheWVyKiwgc2l6ZV90IGluZGV4KTsKKyAgICB2b2lk
IHJlcGxhY2VTdWJsYXllcihQbGF0Zm9ybUNBTGF5ZXIqIHJlZmVyZW5jZSwgUGxhdGZvcm1DQUxh
eWVyKik7CisgICAgc2l6ZV90IHN1YmxheWVyQ291bnQoKSBjb25zdDsKKworICAgIC8vIFRoaXMg
bWV0aG9kIHJlbW92ZXMgdGhlIHN1YmxheWVycyBmcm9tIHRoZSBzb3VyY2UgYW5kIHJlcGFyZW50
cyB0aGVtIHRvIHRoZSBjdXJyZW50IGxheWVyLgorICAgIHZvaWQgYWRvcHRTdWJsYXllcnMoUGxh
dGZvcm1DQUxheWVyKiBzb3VyY2UpOworICAgIAorICAgIHZvaWQgYWRkQW5pbWF0aW9uRm9yS2V5
KGNvbnN0IFN0cmluZyYga2V5LCBQbGF0Zm9ybUNBQW5pbWF0aW9uKiBhbmltYXRpb24pOyAgICAK
KyAgICB2b2lkIHJlbW92ZUFuaW1hdGlvbkZvcktleShjb25zdCBTdHJpbmcmIGtleSk7CisgICAg
UGFzc1JlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBhbmltYXRpb25Gb3JLZXkoY29uc3QgU3Ry
aW5nJiBrZXkpOworICAgIAorICAgIFBsYXRmb3JtQ0FMYXllciogbWFzaygpIGNvbnN0OworICAg
IHZvaWQgc2V0TWFzayhQbGF0Zm9ybUNBTGF5ZXIqKTsKKyAgICAKKyAgICBib29sIGlzT3BhcXVl
KCkgY29uc3Q7CisgICAgdm9pZCBzZXRPcGFxdWUoYm9vbCk7CisKKyAgICBGbG9hdFJlY3QgYm91
bmRzKCkgY29uc3Q7CisgICAgdm9pZCBzZXRCb3VuZHMoY29uc3QgRmxvYXRSZWN0Jik7CisKKyAg
ICBGbG9hdFBvaW50M0QgcG9zaXRpb24oKSBjb25zdDsKKyAgICB2b2lkIHNldFBvc2l0aW9uKGNv
bnN0IEZsb2F0UG9pbnQzRCYpOworICAgIHZvaWQgc2V0UG9zaXRpb24oY29uc3QgRmxvYXRQb2lu
dCYgcG9zKSB7IHNldFBvc2l0aW9uKEZsb2F0UG9pbnQzRChwb3MueCgpLCBwb3MueSgpLCAwKSk7
IH0KKworICAgIEZsb2F0UG9pbnQzRCBhbmNob3JQb2ludCgpIGNvbnN0OworICAgIHZvaWQgc2V0
QW5jaG9yUG9pbnQoY29uc3QgRmxvYXRQb2ludDNEJik7CisKKyAgICBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCB0cmFuc2Zvcm0oKSBjb25zdDsKKyAgICB2b2lkIHNldFRyYW5zZm9ybShjb25zdCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYpOworCisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggc3VibGF5ZXJU
cmFuc2Zvcm0oKSBjb25zdDsKKyAgICB2b2lkIHNldFN1YmxheWVyVHJhbnNmb3JtKGNvbnN0IFRy
YW5zZm9ybWF0aW9uTWF0cml4Jik7CisKKyAgICBib29sIGlzSGlkZGVuKCkgY29uc3Q7CisgICAg
dm9pZCBzZXRIaWRkZW4oYm9vbCk7CisKKyAgICBib29sIGlzR2VvbWV0cnlGbGlwcGVkKCkgY29u
c3Q7CisgICAgdm9pZCBzZXRHZW9tZXRyeUZsaXBwZWQoYm9vbCk7CisKKyAgICBib29sIGlzRG91
YmxlU2lkZWQoKSBjb25zdDsKKyAgICB2b2lkIHNldERvdWJsZVNpZGVkKGJvb2wpOworCisgICAg
Ym9vbCBtYXNrc1RvQm91bmRzKCkgY29uc3Q7CisgICAgdm9pZCBzZXRNYXNrc1RvQm91bmRzKGJv
b2wpOworCisgICAgdm9pZCogY29udGVudHMoKSBjb25zdDsKKyAgICB2b2lkIHNldENvbnRlbnRz
KHZvaWQqKTsKKworICAgIEZsb2F0UmVjdCBjb250ZW50c1JlY3QoKSBjb25zdDsKKyAgICB2b2lk
IHNldENvbnRlbnRzUmVjdChjb25zdCBGbG9hdFJlY3QmKTsKKworICAgIHZvaWQgc2V0TWluaWZp
Y2F0aW9uRmlsdGVyKEZpbHRlclR5cGUpOworICAgIHZvaWQgc2V0TWFnbmlmaWNhdGlvbkZpbHRl
cihGaWx0ZXJUeXBlKTsKKworICAgIENvbG9yIGJhY2tncm91bmRDb2xvcigpIGNvbnN0OworICAg
IHZvaWQgc2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IENvbG9yJik7CisKKyAgICBmbG9hdCBib3Jk
ZXJXaWR0aCgpIGNvbnN0OworICAgIHZvaWQgc2V0Qm9yZGVyV2lkdGgoZmxvYXQpOworCisgICAg
Q29sb3IgYm9yZGVyQ29sb3IoKSBjb25zdDsKKyAgICB2b2lkIHNldEJvcmRlckNvbG9yKGNvbnN0
IENvbG9yJik7CisKKyAgICBmbG9hdCBvcGFjaXR5KCkgY29uc3Q7CisgICAgdm9pZCBzZXRPcGFj
aXR5KGZsb2F0KTsKKworICAgIFN0cmluZyBuYW1lKCkgY29uc3Q7CisgICAgdm9pZCBzZXROYW1l
KGNvbnN0IFN0cmluZyYpOworCisgICAgRmxvYXRSZWN0IGZyYW1lKCkgY29uc3Q7CisgICAgdm9p
ZCBzZXRGcmFtZShjb25zdCBGbG9hdFJlY3QmKTsKKworICAgIGZsb2F0IHNwZWVkKCkgY29uc3Q7
CisgICAgdm9pZCBzZXRTcGVlZChmbG9hdCk7CisKKyAgICBDRlRpbWVJbnRlcnZhbCB0aW1lT2Zm
c2V0KCkgY29uc3Q7CisgICAgdm9pZCBzZXRUaW1lT2Zmc2V0KENGVGltZUludGVydmFsKTsKKwor
cHJvdGVjdGVkOgorICAgIFBsYXRmb3JtQ0FMYXllcihMYXllclR5cGUsIFBsYXRmb3JtTGF5ZXIq
LCBHcmFwaGljc0xheWVyQ0EqKTsKKyAgICAKK3ByaXZhdGU6CisgICAgCisgICAgR3JhcGhpY3NM
YXllckNBKiBtX293bmVyOworICAgIExheWVyVHlwZSBtX2xheWVyVHlwZTsKKyAgICAKKyNpZiBQ
TEFURk9STShNQUMpIHx8IFBMQVRGT1JNKFdJTikKKyAgICBSZXRhaW5QdHI8UGxhdGZvcm1MYXll
cj4gbV9sYXllcjsKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oTUFDKQorI2lmZGVmIF9fT0JKQ19f
CisgICAgUmV0YWluUHRyPE5TT2JqZWN0PiBtX2RlbGVnYXRlOworI2Vsc2UKKyAgICBSZXRhaW5Q
dHI8dm9pZD4gbV9kZWxlZ2F0ZTsKKyNlbmRpZgorI2VuZGlmCit9OworCit9CisKKyNlbmRpZiAv
LyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisKKyNlbmRpZiAvLyBQbGF0Zm9ybUNBTGF5
ZXJfaApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NMYXllck1h
Yy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNz
TGF5ZXJNYWMuaAkocmV2aXNpb24gNzE4NTApCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9HcmFwaGljc0xheWVyTWFjLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsMzg4ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMu
IE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0K
LSNpZm5kZWYgR3JhcGhpY3NMYXllck1hY19oCi0jZGVmaW5lIEdyYXBoaWNzTGF5ZXJNYWNfaAot
Ci0jaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotCi0jaW5jbHVkZSAiR3JhcGhpY3NM
YXllci5oIgotI2luY2x1ZGUgIldlYkxheWVyLmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
LSNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLSNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+Ci0KLUBjbGFzcyBDQUJhc2ljQW5pbWF0aW9u
OwotQGNsYXNzIENBS2V5ZnJhbWVBbmltYXRpb247Ci1AY2xhc3MgQ0FNZWRpYVRpbWluZ0Z1bmN0
aW9uOwotQGNsYXNzIENBUHJvcGVydHlBbmltYXRpb247Ci1AY2xhc3MgV2ViQW5pbWF0aW9uRGVs
ZWdhdGU7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgR3JhcGhpY3NMYXllck1hYyA6
IHB1YmxpYyBHcmFwaGljc0xheWVyIHsKLXB1YmxpYzoKLQotICAgIEdyYXBoaWNzTGF5ZXJNYWMo
R3JhcGhpY3NMYXllckNsaWVudCopOwotICAgIHZpcnR1YWwgfkdyYXBoaWNzTGF5ZXJNYWMoKTsK
LQotICAgIHZpcnR1YWwgdm9pZCBzZXROYW1lKGNvbnN0IFN0cmluZyYpOwotCi0gICAgLy8gZm9y
IGhvc3RpbmcgdGhpcyBHcmFwaGljc0xheWVyIGluIGEgbmF0aXZlIGxheWVyIGhpZXJhcmNoeQot
ICAgIHZpcnR1YWwgTmF0aXZlTGF5ZXIgbmF0aXZlTGF5ZXIoKSBjb25zdDsKLQotICAgIHZpcnR1
YWwgYm9vbCBzZXRDaGlsZHJlbihjb25zdCBWZWN0b3I8R3JhcGhpY3NMYXllcio+Jik7Ci0gICAg
dmlydHVhbCB2b2lkIGFkZENoaWxkKEdyYXBoaWNzTGF5ZXIqKTsKLSAgICB2aXJ0dWFsIHZvaWQg
YWRkQ2hpbGRBdEluZGV4KEdyYXBoaWNzTGF5ZXIqLCBpbnQgaW5kZXgpOwotICAgIHZpcnR1YWwg
dm9pZCBhZGRDaGlsZEFib3ZlKEdyYXBoaWNzTGF5ZXIqIGxheWVyLCBHcmFwaGljc0xheWVyKiBz
aWJsaW5nKTsKLSAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGRCZWxvdyhHcmFwaGljc0xheWVyKiBs
YXllciwgR3JhcGhpY3NMYXllciogc2libGluZyk7Ci0gICAgdmlydHVhbCBib29sIHJlcGxhY2VD
aGlsZChHcmFwaGljc0xheWVyKiBvbGRDaGlsZCwgR3JhcGhpY3NMYXllciogbmV3Q2hpbGQpOwot
Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZUZyb21QYXJlbnQoKTsKLQotICAgIHZpcnR1YWwgdm9p
ZCBzZXRNYXNrTGF5ZXIoR3JhcGhpY3NMYXllciopOwotICAgIHZpcnR1YWwgdm9pZCBzZXRSZXBs
aWNhdGVkTGF5ZXIoR3JhcGhpY3NMYXllciopOwotCi0gICAgdmlydHVhbCB2b2lkIHNldFBvc2l0
aW9uKGNvbnN0IEZsb2F0UG9pbnQmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0QW5jaG9yUG9pbnQo
Y29uc3QgRmxvYXRQb2ludDNEJik7Ci0gICAgdmlydHVhbCB2b2lkIHNldFNpemUoY29uc3QgRmxv
YXRTaXplJik7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0VHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4Jik7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q2hpbGRyZW5UcmFuc2Zvcm0o
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKTsKLQotICAgIHZpcnR1YWwgdm9pZCBzZXRQcmVz
ZXJ2ZXMzRChib29sKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0TWFza3NUb0JvdW5kcyhib29sKTsK
LSAgICB2aXJ0dWFsIHZvaWQgc2V0RHJhd3NDb250ZW50KGJvb2wpOwotCi0gICAgdmlydHVhbCB2
b2lkIHNldEJhY2tncm91bmRDb2xvcihjb25zdCBDb2xvciYpOwotICAgIHZpcnR1YWwgdm9pZCBj
bGVhckJhY2tncm91bmRDb2xvcigpOwotCi0gICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzT3Bh
cXVlKGJvb2wpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRCYWNrZmFjZVZpc2liaWxpdHkoYm9vbCk7
Ci0KLSAgICAvLyByZXR1cm4gdHJ1ZSBpZiB3ZSBzdGFydGVkIGFuIGFuaW1hdGlvbgotICAgIHZp
cnR1YWwgdm9pZCBzZXRPcGFjaXR5KGZsb2F0KTsKLQotICAgIHZpcnR1YWwgdm9pZCBzZXROZWVk
c0Rpc3BsYXkoKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNEaXNwbGF5SW5SZWN0KGNvbnN0
IEZsb2F0UmVjdCYpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c05lZWRzRGlzcGxheSgp
OwotICAgIAotICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1JlY3QoY29uc3QgSW50UmVjdCYp
OwotICAgIAotICAgIHZpcnR1YWwgdm9pZCBzdXNwZW5kQW5pbWF0aW9ucyhkb3VibGUgdGltZSk7
Ci0gICAgdmlydHVhbCB2b2lkIHJlc3VtZUFuaW1hdGlvbnMoKTsKLQotICAgIHZpcnR1YWwgYm9v
bCBhZGRBbmltYXRpb24oY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmLCBjb25zdCBJbnRTaXplJiBi
b3hTaXplLCBjb25zdCBBbmltYXRpb24qLCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGRv
dWJsZSB0aW1lT2Zmc2V0KTsKLSAgICB2aXJ0dWFsIHZvaWQgcGF1c2VBbmltYXRpb24oY29uc3Qg
U3RyaW5nJiBhbmltYXRpb25OYW1lLCBkb3VibGUgdGltZU9mZnNldCk7Ci0gICAgdmlydHVhbCB2
b2lkIHJlbW92ZUFuaW1hdGlvbihjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUpOwotCi0gICAg
dmlydHVhbCB2b2lkIHNldENvbnRlbnRzVG9JbWFnZShJbWFnZSopOwotICAgIHZpcnR1YWwgdm9p
ZCBzZXRDb250ZW50c1RvTWVkaWEoUGxhdGZvcm1MYXllciopOwotICAgIHZpcnR1YWwgdm9pZCBz
ZXRDb250ZW50c1RvQ2FudmFzKFBsYXRmb3JtTGF5ZXIqKTsKLQotICAgIHZpcnR1YWwgYm9vbCBo
YXNDb250ZW50c0xheWVyKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50c0xheWVyOyB9Ci0gICAg
Ci0gICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Q7Ci0KLSAg
ICB2aXJ0dWFsIHZvaWQgc2V0RGVidWdCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgc2V0RGVidWdCb3JkZXIoY29uc3QgQ29sb3ImLCBmbG9hdCBib3JkZXJX
aWR0aCk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkRGlzcGxheShQbGF0Zm9ybUxheWVyKik7Ci0K
LSAgICB2b2lkIHJlY3Vyc2l2ZUNvbW1pdENoYW5nZXMoKTsKLQotICAgIHZpcnR1YWwgdm9pZCBz
eW5jQ29tcG9zaXRpbmdTdGF0ZSgpOwotICAgIHZpcnR1YWwgdm9pZCBzeW5jQ29tcG9zaXRpbmdT
dGF0ZUZvclRoaXNMYXllck9ubHkoKTsKLQotICAgIC8vIFNob3VsZCBvbmx5IGJlIGNhbGxlZCBi
eSBhbmltYXRpb25EaWRTdGFydDogY2FsbGJhY2sKLSAgICB2b2lkIGFuaW1hdGlvbkRpZFN0YXJ0
KENBQW5pbWF0aW9uKik7Ci0gICAgCi1wcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB2b2lkIHNldE9w
YWNpdHlJbnRlcm5hbChmbG9hdCk7Ci0KLXByaXZhdGU6Ci0gICAgdm9pZCB1cGRhdGVPcGFjaXR5
T25MYXllcigpOwotCi0gICAgQ0FMYXllciogcHJpbWFyeUxheWVyKCkgY29uc3QgeyByZXR1cm4g
bV9zdHJ1Y3R1cmFsTGF5ZXIuZ2V0KCkgPyBtX3N0cnVjdHVyYWxMYXllci5nZXQoKSA6IG1fbGF5
ZXIuZ2V0KCk7IH0KLSAgICBDQUxheWVyKiBob3N0TGF5ZXJGb3JTdWJsYXllcnMoKSBjb25zdDsK
LSAgICBDQUxheWVyKiBsYXllckZvclN1cGVybGF5ZXIoKSBjb25zdDsKLSAgICBDQUxheWVyKiBh
bmltYXRlZExheWVyKEFuaW1hdGVkUHJvcGVydHlJRCkgY29uc3Q7Ci0KLSAgICB0eXBlZGVmIFN0
cmluZyBDbG9uZUlEOyAvLyBJZGVudGlmaWVyIGZvciBhIGdpdmVuIGNsb25lLCBiYXNlZCBvbiBv
cmlnaW5hbC9yZXBsaWNhIGJyYW5jaGluZyBkb3duIHRoZSB0cmVlLgotICAgIHN0YXRpYyBib29s
IGlzUmVwbGljYXRlZFJvb3RDbG9uZShjb25zdCBDbG9uZUlEJiBjbG9uZUlEKSB7IHJldHVybiBj
bG9uZUlEWzBVXSAmIDE7IH0KLQotICAgIHR5cGVkZWYgSGFzaE1hcDxDbG9uZUlELCBSZXRhaW5Q
dHI8Q0FMYXllcj4gPiBMYXllck1hcDsKLSAgICBMYXllck1hcCogcHJpbWFyeUxheWVyQ2xvbmVz
KCkgY29uc3QgeyByZXR1cm4gbV9zdHJ1Y3R1cmFsTGF5ZXIuZ2V0KCkgPyBtX3N0cnVjdHVyYWxM
YXllckNsb25lcy5nZXQoKSA6IG1fbGF5ZXJDbG9uZXMuZ2V0KCk7IH0KLSAgICBMYXllck1hcCog
YW5pbWF0ZWRMYXllckNsb25lcyhBbmltYXRlZFByb3BlcnR5SUQpIGNvbnN0OwotCi0gICAgYm9v
bCBjcmVhdGVBbmltYXRpb25Gcm9tS2V5ZnJhbWVzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0Jiwg
Y29uc3QgQW5pbWF0aW9uKiwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBkb3VibGUgdGlt
ZU9mZnNldCk7Ci0gICAgYm9vbCBjcmVhdGVUcmFuc2Zvcm1BbmltYXRpb25zRnJvbUtleWZyYW1l
cyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYsIGNvbnN0IEFuaW1hdGlvbiosIGNvbnN0IFN0cmlu
ZyYgYW5pbWF0aW9uTmFtZSwgZG91YmxlIHRpbWVPZmZzZXQsIGNvbnN0IEludFNpemUmIGJveFNp
emUpOwotCi0gICAgLy8gUmV0dXJuIGF1dG9yZWxlYXNlZCBhbmltYXRpb24gKHVzZSBSZXRhaW5Q
dHI/KQotICAgIENBQmFzaWNBbmltYXRpb24qIGNyZWF0ZUJhc2ljQW5pbWF0aW9uKGNvbnN0IEFu
aW1hdGlvbiosIEFuaW1hdGVkUHJvcGVydHlJRCwgYm9vbCBhZGRpdGl2ZSk7Ci0gICAgQ0FLZXlm
cmFtZUFuaW1hdGlvbiogY3JlYXRlS2V5ZnJhbWVBbmltYXRpb24oY29uc3QgQW5pbWF0aW9uKiwg
QW5pbWF0ZWRQcm9wZXJ0eUlELCBib29sIGFkZGl0aXZlKTsKLSAgICB2b2lkIHNldHVwQW5pbWF0
aW9uKENBUHJvcGVydHlBbmltYXRpb24qLCBjb25zdCBBbmltYXRpb24qLCBib29sIGFkZGl0aXZl
KTsKLSAgICAKLSAgICBDQU1lZGlhVGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0aW9uRm9yQW5p
bWF0aW9uVmFsdWUoY29uc3QgQW5pbWF0aW9uVmFsdWUqLCBjb25zdCBBbmltYXRpb24qKTsKLSAg
ICAKLSAgICBib29sIHNldEFuaW1hdGlvbkVuZHBvaW50cyhjb25zdCBLZXlmcmFtZVZhbHVlTGlz
dCYsIGNvbnN0IEFuaW1hdGlvbiosIENBQmFzaWNBbmltYXRpb24qKTsKLSAgICBib29sIHNldEFu
aW1hdGlvbktleWZyYW1lcyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYsIGNvbnN0IEFuaW1hdGlv
biosIENBS2V5ZnJhbWVBbmltYXRpb24qKTsKLQotICAgIGJvb2wgc2V0VHJhbnNmb3JtQW5pbWF0
aW9uRW5kcG9pbnRzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiwgY29uc3QgQW5pbWF0aW9uKiwg
Q0FCYXNpY0FuaW1hdGlvbiosIGludCBmdW5jdGlvbkluZGV4LCBUcmFuc2Zvcm1PcGVyYXRpb246
Ok9wZXJhdGlvblR5cGUsIGJvb2wgaXNNYXRyaXhBbmltYXRpb24sIGNvbnN0IEludFNpemUmIGJv
eFNpemUpOwotICAgIGJvb2wgc2V0VHJhbnNmb3JtQW5pbWF0aW9uS2V5ZnJhbWVzKGNvbnN0IEtl
eWZyYW1lVmFsdWVMaXN0JiwgY29uc3QgQW5pbWF0aW9uKiwgQ0FLZXlmcmFtZUFuaW1hdGlvbios
IGludCBmdW5jdGlvbkluZGV4LCBUcmFuc2Zvcm1PcGVyYXRpb246Ok9wZXJhdGlvblR5cGUsIGJv
b2wgaXNNYXRyaXhBbmltYXRpb24sIGNvbnN0IEludFNpemUmIGJveFNpemUpOwotICAgIAotICAg
IGJvb2wgYW5pbWF0aW9uSXNSdW5uaW5nKGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSkgY29u
c3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX3J1bm5pbmdBbmltYXRpb25zLmZpbmQoYW5pbWF0
aW9uTmFtZSkgIT0gbV9ydW5uaW5nQW5pbWF0aW9ucy5lbmQoKTsKLSAgICB9Ci0KLSAgICB2b2lk
IGNvbW1pdExheWVyQ2hhbmdlc0JlZm9yZVN1YmxheWVycygpOwotICAgIHZvaWQgY29tbWl0TGF5
ZXJDaGFuZ2VzQWZ0ZXJTdWJsYXllcnMoKTsKLQotICAgIEZsb2F0U2l6ZSBjb25zdHJhaW5lZFNp
emUoKSBjb25zdDsKLQotICAgIGJvb2wgcmVxdWlyZXNUaWxlZExheWVyKGNvbnN0IEZsb2F0U2l6
ZSYpIGNvbnN0OwotICAgIHZvaWQgc3dhcEZyb21PclRvVGlsZWRMYXllcihib29sIHVzZVRpbGVk
TGF5ZXIpOwotCi0gICAgQ29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uIGRlZmF1bHRD
b250ZW50c09yaWVudGF0aW9uKCkgY29uc3Q7Ci0gICAgdm9pZCB1cGRhdGVDb250ZW50c1RyYW5z
Zm9ybSgpOwotICAgIAotICAgIHZvaWQgc2V0dXBDb250ZW50c0xheWVyKENBTGF5ZXIqKTsKLSAg
ICBDQUxheWVyKiBjb250ZW50c0xheWVyKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50c0xheWVy
LmdldCgpOyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0UmVwbGljYXRlZEJ5TGF5ZXIoR3JhcGhp
Y3NMYXllciopOwotCi0gICAgLy8gVXNlZCB0byB0cmFjayB0aGUgcGF0aCBkb3duIHRoZSB0cmVl
IGZvciByZXBsaWNhIGxheWVycy4KLSAgICBzdHJ1Y3QgUmVwbGljYVN0YXRlIHsKLSAgICAgICAg
c3RhdGljIGNvbnN0IHNpemVfdCBtYXhSZXBsaWNhRGVwdGggPSAxNjsKLSAgICAgICAgZW51bSBS
ZXBsaWNhQnJhbmNoVHlwZSB7IENoaWxkQnJhbmNoID0gMCwgUmVwbGljYUJyYW5jaCA9IDEgfTsK
LSAgICAgICAgUmVwbGljYVN0YXRlKFJlcGxpY2FCcmFuY2hUeXBlIGZpcnN0QnJhbmNoKQotICAg
ICAgICAgICAgOiBtX3JlcGxpY2FEZXB0aCgwKQotICAgICAgICB7Ci0gICAgICAgICAgICBwdXNo
KGZpcnN0QnJhbmNoKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgLy8gQ2FsbGVkIGFz
IHdlIHdhbGsgZG93biB0aGUgdHJlZSB0byBidWlsZCByZXBsaWNhcy4KLSAgICAgICAgdm9pZCBw
dXNoKFJlcGxpY2FCcmFuY2hUeXBlIGJyYW5jaFR5cGUpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IG1fcmVwbGljYUJyYW5jaGVzLmFwcGVuZChicmFuY2hUeXBlKTsKLSAgICAgICAgICAgIGlmIChi
cmFuY2hUeXBlID09IFJlcGxpY2FCcmFuY2gpCi0gICAgICAgICAgICAgICAgKyttX3JlcGxpY2FE
ZXB0aDsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgdm9pZCBzZXRCcmFuY2hUeXBlKFJl
cGxpY2FCcmFuY2hUeXBlIGJyYW5jaFR5cGUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VS
VCghbV9yZXBsaWNhQnJhbmNoZXMuaXNFbXB0eSgpKTsKLQotICAgICAgICAgICAgaWYgKG1fcmVw
bGljYUJyYW5jaGVzLmxhc3QoKSAhPSBicmFuY2hUeXBlKSB7Ci0gICAgICAgICAgICAgICAgaWYg
KGJyYW5jaFR5cGUgPT0gUmVwbGljYUJyYW5jaCkKLSAgICAgICAgICAgICAgICAgICAgKyttX3Jl
cGxpY2FEZXB0aDsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIC0t
bV9yZXBsaWNhRGVwdGg7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIG1fcmVwbGljYUJy
YW5jaGVzLmxhc3QoKSA9IGJyYW5jaFR5cGU7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIHBv
cCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChtX3JlcGxpY2FCcmFuY2hlcy5sYXN0KCkg
PT0gUmVwbGljYUJyYW5jaCkKLSAgICAgICAgICAgICAgICAtLW1fcmVwbGljYURlcHRoOwotICAg
ICAgICAgICAgbV9yZXBsaWNhQnJhbmNoZXMucmVtb3ZlTGFzdCgpOwotICAgICAgICB9Ci0gICAg
ICAgIAotICAgICAgICBzaXplX3QgZGVwdGgoKSBjb25zdCB7IHJldHVybiBtX3JlcGxpY2FCcmFu
Y2hlcy5zaXplKCk7IH0KLSAgICAgICAgc2l6ZV90IHJlcGxpY2FEZXB0aCgpIGNvbnN0IHsgcmV0
dXJuIG1fcmVwbGljYURlcHRoOyB9Ci0KLSAgICAgICAgQ2xvbmVJRCBjbG9uZUlEKCkgY29uc3Q7
ICAgICAgICAKLQotICAgIHByaXZhdGU6Ci0gICAgICAgIFZlY3RvcjxSZXBsaWNhQnJhbmNoVHlw
ZT4gbV9yZXBsaWNhQnJhbmNoZXM7Ci0gICAgICAgIHNpemVfdCBtX3JlcGxpY2FEZXB0aDsKLSAg
ICB9OwotICAgIENBTGF5ZXIgKnJlcGxpY2F0ZWRMYXllclJvb3QoUmVwbGljYVN0YXRlJik7Ci0K
LSAgICBlbnVtIENsb25lTGV2ZWwgeyBSb290Q2xvbmVMZXZlbCwgSW50ZXJtZWRpYXRlQ2xvbmVM
ZXZlbCB9OwotICAgIENBTGF5ZXIgKmZldGNoQ2xvbmVMYXllcnMoR3JhcGhpY3NMYXllciogcmVw
bGljYVJvb3QsIFJlcGxpY2FTdGF0ZSYsIENsb25lTGV2ZWwpOwotICAgIAotICAgIENBTGF5ZXIg
KmNsb25lTGF5ZXIoQ0FMYXllciAqLCBDbG9uZUxldmVsKTsKLSAgICBDQUxheWVyICpmaW5kT3JN
YWtlQ2xvbmUoQ2xvbmVJRCwgQ0FMYXllciAqLCBMYXllck1hcCosIENsb25lTGV2ZWwpOwotCi0g
ICAgdm9pZCBlbnN1cmVDbG9uZUxheWVycyhDbG9uZUlEIGluZGV4LCBDQUxheWVyIComIHByaW1h
cnlMYXllciwgQ0FMYXllciAqJiBzdHJ1Y3R1cmFsTGF5ZXIsIENBTGF5ZXIgKiYgY29udGVudHNM
YXllciwgQ2xvbmVMZXZlbCk7Ci0KLSAgICBib29sIGhhc0Nsb25lTGF5ZXJzKCkgY29uc3QgeyBy
ZXR1cm4gbV9sYXllckNsb25lczsgfQotICAgIHZvaWQgcmVtb3ZlQ2xvbmVMYXllcnMoKTsKLSAg
ICBGbG9hdFBvaW50IHBvc2l0aW9uRm9yQ2xvbmVSb290TGF5ZXIoKSBjb25zdDsKLSAgICAKLSAg
ICB2b2lkIHByb3BhZ2F0ZUxheWVyQ2hhbmdlVG9SZXBsaWNhcygpOwotICAgIAotICAgIC8vIEFs
bCB0aGVzZSAidXBkYXRlIiBtZXRob2RzIHdpbGwgYmUgY2FsbGVkIGluc2lkZSBhIEJFR0lOX0JM
T0NLX09CSkNfRVhDRVBUSU9OUy9FTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TIGJsb2NrLgotICAg
IHZvaWQgdXBkYXRlTGF5ZXJOYW1lcygpOwotICAgIHZvaWQgdXBkYXRlU3VibGF5ZXJMaXN0KCk7
Ci0gICAgdm9pZCB1cGRhdGVMYXllclBvc2l0aW9uKCk7Ci0gICAgdm9pZCB1cGRhdGVMYXllclNp
emUoKTsKLSAgICB2b2lkIHVwZGF0ZUFuY2hvclBvaW50KCk7Ci0gICAgdm9pZCB1cGRhdGVUcmFu
c2Zvcm0oKTsKLSAgICB2b2lkIHVwZGF0ZUNoaWxkcmVuVHJhbnNmb3JtKCk7Ci0gICAgdm9pZCB1
cGRhdGVNYXNrc1RvQm91bmRzKCk7Ci0gICAgdm9pZCB1cGRhdGVDb250ZW50c09wYXF1ZSgpOwot
ICAgIHZvaWQgdXBkYXRlQmFja2ZhY2VWaXNpYmlsaXR5KCk7Ci0gICAgdm9pZCB1cGRhdGVTdHJ1
Y3R1cmFsTGF5ZXIoKTsKLSAgICB2b2lkIHVwZGF0ZUxheWVyRHJhd3NDb250ZW50KCk7Ci0gICAg
dm9pZCB1cGRhdGVMYXllckJhY2tncm91bmRDb2xvcigpOwotCi0gICAgdm9pZCB1cGRhdGVDb250
ZW50c0ltYWdlKCk7Ci0gICAgdm9pZCB1cGRhdGVDb250ZW50c01lZGlhTGF5ZXIoKTsKLSAgICB2
b2lkIHVwZGF0ZUNvbnRlbnRzQ2FudmFzTGF5ZXIoKTsKLSAgICB2b2lkIHVwZGF0ZUNvbnRlbnRz
UmVjdCgpOwotICAgIHZvaWQgdXBkYXRlTWFza0xheWVyKCk7Ci0gICAgdm9pZCB1cGRhdGVSZXBs
aWNhdGVkTGF5ZXJzKCk7Ci0KLSAgICB2b2lkIHVwZGF0ZUxheWVyQW5pbWF0aW9ucygpOwotICAg
IHZvaWQgdXBkYXRlQ29udGVudHNOZWVkc0Rpc3BsYXkoKTsKLSAgICAKLSAgICBlbnVtIFN0cnVj
dHVyYWxMYXllclB1cnBvc2UgewotICAgICAgICBOb1N0cnVjdHVyYWxMYXllciA9IDAsCi0gICAg
ICAgIFN0cnVjdHVyYWxMYXllckZvclByZXNlcnZlczNELAotICAgICAgICBTdHJ1Y3R1cmFsTGF5
ZXJGb3JSZXBsaWNhRmxhdHRlbmluZwotICAgIH07Ci0gICAgdm9pZCBlbnN1cmVTdHJ1Y3R1cmFs
TGF5ZXIoU3RydWN0dXJhbExheWVyUHVycG9zZSk7Ci0gICAgU3RydWN0dXJhbExheWVyUHVycG9z
ZSBzdHJ1Y3R1cmFsTGF5ZXJQdXJwb3NlKCkgY29uc3Q7Ci0KLSAgICB2b2lkIHNldENBQW5pbWF0
aW9uT25MYXllcihDQVByb3BlcnR5QW5pbWF0aW9uKiwgQW5pbWF0ZWRQcm9wZXJ0eUlELCBjb25z
dCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGludCBpbmRleCwgZG91YmxlIHRpbWVPZmZzZXQpOwot
ICAgIGJvb2wgcmVtb3ZlQ0FBbmltYXRpb25Gcm9tTGF5ZXIoQW5pbWF0ZWRQcm9wZXJ0eUlELCBj
b25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGludCBpbmRleCk7Ci0gICAgdm9pZCBwYXVzZUNB
QW5pbWF0aW9uT25MYXllcihBbmltYXRlZFByb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgYW5pbWF0
aW9uTmFtZSwgaW50IGluZGV4LCBkb3VibGUgdGltZU9mZnNldCk7Ci0KLSAgICBlbnVtIE1vdmVP
ckNvcHkgeyBNb3ZlLCBDb3B5IH07Ci0gICAgc3RhdGljIHZvaWQgbW92ZU9yQ29weUxheWVyQW5p
bWF0aW9uKE1vdmVPckNvcHksIGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uSWRlbnRpZmllciwgQ0FM
YXllciAqZnJvbUxheWVyLCBDQUxheWVyICp0b0xheWVyKTsKLSAgICB2b2lkIG1vdmVPckNvcHlB
bmltYXRpb25zRm9yUHJvcGVydHkoTW92ZU9yQ29weSwgQW5pbWF0ZWRQcm9wZXJ0eUlELCBDQUxh
eWVyICogZnJvbUxheWVyLCBDQUxheWVyICogdG9MYXllcik7Ci0gICAgCi0gICAgZW51bSBMYXll
ckNoYW5nZSB7Ci0gICAgICAgIE5vQ2hhbmdlID0gMCwKLSAgICAgICAgTmFtZUNoYW5nZWQgPSAx
IDw8IDEsCi0gICAgICAgIENoaWxkcmVuQ2hhbmdlZCA9IDEgPDwgMiwgICAvLyBhbHNvIHVzZWQg
Zm9yIGNvbnRlbnQgbGF5ZXIsIGFuZCBwcmVzZXJ2ZXMtM2QsIGFuZCBzaXplIGlmIHRpbGluZyBj
aGFuZ2VzPwotICAgICAgICBQb3NpdGlvbkNoYW5nZWQgPSAxIDw8IDMsCi0gICAgICAgIEFuY2hv
clBvaW50Q2hhbmdlZCA9IDEgPDwgNCwKLSAgICAgICAgU2l6ZUNoYW5nZWQgPSAxIDw8IDUsCi0g
ICAgICAgIFRyYW5zZm9ybUNoYW5nZWQgPSAxIDw8IDYsCi0gICAgICAgIENoaWxkcmVuVHJhbnNm
b3JtQ2hhbmdlZCA9IDEgPDwgNywKLSAgICAgICAgUHJlc2VydmVzM0RDaGFuZ2VkID0gMSA8PCA4
LAotICAgICAgICBNYXNrc1RvQm91bmRzQ2hhbmdlZCA9IDEgPDwgOSwKLSAgICAgICAgRHJhd3ND
b250ZW50Q2hhbmdlZCA9IDEgPDwgMTAsICAvLyBuZWVkIHRoaXM/Ci0gICAgICAgIEJhY2tncm91
bmRDb2xvckNoYW5nZWQgPSAxIDw8IDExLAotICAgICAgICBDb250ZW50c09wYXF1ZUNoYW5nZWQg
PSAxIDw8IDEyLAotICAgICAgICBCYWNrZmFjZVZpc2liaWxpdHlDaGFuZ2VkID0gMSA8PCAxMywK
LSAgICAgICAgT3BhY2l0eUNoYW5nZWQgPSAxIDw8IDE0LAotICAgICAgICBBbmltYXRpb25DaGFu
Z2VkID0gMSA8PCAxNSwKLSAgICAgICAgRGlydHlSZWN0c0NoYW5nZWQgPSAxIDw8IDE2LAotICAg
ICAgICBDb250ZW50c0ltYWdlQ2hhbmdlZCA9IDEgPDwgMTcsCi0gICAgICAgIENvbnRlbnRzTWVk
aWFMYXllckNoYW5nZWQgPSAxIDw8IDE4LAotICAgICAgICBDb250ZW50c0NhbnZhc0xheWVyQ2hh
bmdlZCA9IDEgPDwgMTksCi0gICAgICAgIENvbnRlbnRzUmVjdENoYW5nZWQgPSAxIDw8IDIwLAot
ICAgICAgICBNYXNrTGF5ZXJDaGFuZ2VkID0gMSA8PCAyMSwKLSAgICAgICAgUmVwbGljYXRlZExh
eWVyQ2hhbmdlZCA9IDEgPDwgMjIsCi0gICAgICAgIENvbnRlbnRzTmVlZHNEaXNwbGF5ID0gMSA8
PCAyMwotICAgIH07Ci0gICAgdHlwZWRlZiB1bnNpZ25lZCBMYXllckNoYW5nZUZsYWdzOwotICAg
IHZvaWQgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKExheWVyQ2hhbmdlRmxhZ3MgZmxhZ3MpOwot
ICAgIHZvaWQgbm90ZVN1YmxheWVyc0NoYW5nZWQoKTsKLQotICAgIHZvaWQgcmVwYWludExheWVy
RGlydHlSZWN0cygpOwotCi0gICAgUmV0YWluUHRyPFdlYkxheWVyPiBtX2xheWVyOyAvLyBUaGUg
bWFpbiBsYXllcgotICAgIFJldGFpblB0cjxDQUxheWVyPiBtX3N0cnVjdHVyYWxMYXllcjsgLy8g
QSBsYXllciB1c2VkIGZvciBzdHJ1Y3R1cmFsIHJlYXNvbnMsIGxpa2UgcHJlc2VydmVzLTNkIG9y
IHJlcGxpY2EtZmxhdHRlbmluZy4gSXMgdGhlIHBhcmVudCBvZiBtX2xheWVyLgotICAgIFJldGFp
blB0cjxDQUxheWVyPiBtX2NvbnRlbnRzTGF5ZXI7IC8vIEEgbGF5ZXIgdXNlZCBmb3IgaW5uZXIg
Y29udGVudCwgbGlrZSBpbWFnZSBhbmQgdmlkZW8KLQotICAgIC8vIFJlZmVyZW5jZXMgdG8gY2xv
bmVzIG9mIG91ciBsYXllcnMsIGZvciByZXBsaWNhdGVkIGxheWVycy4KLSAgICBPd25QdHI8TGF5
ZXJNYXA+IG1fbGF5ZXJDbG9uZXM7Ci0gICAgT3duUHRyPExheWVyTWFwPiBtX3N0cnVjdHVyYWxM
YXllckNsb25lczsKLSAgICBPd25QdHI8TGF5ZXJNYXA+IG1fY29udGVudHNMYXllckNsb25lczsK
LSAgICAKLSAgICBlbnVtIENvbnRlbnRzTGF5ZXJQdXJwb3NlIHsKLSAgICAgICAgTm9Db250ZW50
c0xheWVyID0gMCwKLSAgICAgICAgQ29udGVudHNMYXllckZvckltYWdlLAotICAgICAgICBDb250
ZW50c0xheWVyRm9yTWVkaWEsCi0gICAgICAgIENvbnRlbnRzTGF5ZXJGb3JDYW52YXMKLSAgICB9
OwotICAgIAotICAgIENvbnRlbnRzTGF5ZXJQdXJwb3NlIG1fY29udGVudHNMYXllclB1cnBvc2U7
Ci0gICAgYm9vbCBtX2NvbnRlbnRzTGF5ZXJIYXNCYWNrZ3JvdW5kQ29sb3IgOiAxOwotCi0gICAg
UmV0YWluUHRyPFdlYkFuaW1hdGlvbkRlbGVnYXRlPiBtX2FuaW1hdGlvbkRlbGVnYXRlOwotCi0g
ICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IG1fdW5jb3JyZWN0ZWRDb250ZW50c0ltYWdlOwotICAg
IFJldGFpblB0cjxDR0ltYWdlUmVmPiBtX3BlbmRpbmdDb250ZW50c0ltYWdlOwotICAgIAotICAg
IC8vIFRoaXMgcmVwcmVzZW50cyB0aGUgYW5pbWF0aW9uIG9mIGEgc2luZ2xlIHByb3BlcnR5LiBU
aGVyZSBtYXkgYmUgbXVsdGlwbGUgdHJhbnNmb3JtIGFuaW1hdGlvbnMgZm9yCi0gICAgLy8gYSBz
aW5nbGUgdHJhbnNpdGlvbiBvciBrZXlmcmFtZSBhbmltYXRpb24sIHNvIGluZGV4IGlzIHVzZWQg
dG8gZGlzdGluZ3Vpc2ggdGhlc2UuCi0gICAgc3RydWN0IExheWVyUHJvcGVydHlBbmltYXRpb24g
ewotICAgICAgICBMYXllclByb3BlcnR5QW5pbWF0aW9uKENBUHJvcGVydHlBbmltYXRpb24qIGNh
QW5pbWF0aW9uLCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIEFuaW1hdGVkUHJvcGVydHlJ
RCBwcm9wZXJ0eSwgaW50IGluZGV4LCBkb3VibGUgdGltZU9mZnNldCkKLSAgICAgICAgOiBtX2Fu
aW1hdGlvbihjYUFuaW1hdGlvbikKLSAgICAgICAgLCBtX25hbWUoYW5pbWF0aW9uTmFtZSkKLSAg
ICAgICAgLCBtX3Byb3BlcnR5KHByb3BlcnR5KQotICAgICAgICAsIG1faW5kZXgoaW5kZXgpCi0g
ICAgICAgICwgbV90aW1lT2Zmc2V0KHRpbWVPZmZzZXQpCi0gICAgICAgIHsgfQotCi0gICAgICAg
IFJldGFpblB0cjxDQVByb3BlcnR5QW5pbWF0aW9uKj4gbV9hbmltYXRpb247Ci0gICAgICAgIFN0
cmluZyBtX25hbWU7Ci0gICAgICAgIEFuaW1hdGVkUHJvcGVydHlJRCBtX3Byb3BlcnR5OwotICAg
ICAgICBpbnQgbV9pbmRleDsKLSAgICAgICAgZG91YmxlIG1fdGltZU9mZnNldDsKLSAgICB9Owot
ICAgIAotICAgIC8vIFVuY29tbWl0dGVkIHRyYW5zaXRpb25zIGFuZCBhbmltYXRpb25zLgotICAg
IFZlY3RvcjxMYXllclByb3BlcnR5QW5pbWF0aW9uPiBtX3VuY29taXR0ZWRBbmltYXRpb25zOwot
ICAgIAotICAgIGVudW0gQWN0aW9uIHsgUmVtb3ZlLCBQYXVzZSB9OwotICAgIHN0cnVjdCBBbmlt
YXRpb25Qcm9jZXNzaW5nQWN0aW9uIHsKLSAgICAgICAgQW5pbWF0aW9uUHJvY2Vzc2luZ0FjdGlv
bihBY3Rpb24gYWN0aW9uID0gUmVtb3ZlLCBkb3VibGUgdGltZU9mZnNldCA9IDApCi0gICAgICAg
ICAgICA6IGFjdGlvbihhY3Rpb24pCi0gICAgICAgICAgICAsIHRpbWVPZmZzZXQodGltZU9mZnNl
dCkKLSAgICAgICAgewotICAgICAgICB9Ci0gICAgICAgIEFjdGlvbiBhY3Rpb247Ci0gICAgICAg
IGRvdWJsZSB0aW1lT2Zmc2V0OyAvLyBvbmx5IHVzZWQgZm9yIHBhdXNlCi0gICAgfTsKLSAgICB0
eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBBbmltYXRpb25Qcm9jZXNzaW5nQWN0aW9uPiBBbmltYXRp
b25zVG9Qcm9jZXNzTWFwOwotICAgIEFuaW1hdGlvbnNUb1Byb2Nlc3NNYXAgbV9hbmltYXRpb25z
VG9Qcm9jZXNzOwotCi0gICAgLy8gTWFwIG9mIGFuaW1hdGlvbiBuYW1lcyB0byB0aGVpciBhc3Nv
Y2lhdGVkIGxpc3RzIG9mIHByb3BlcnR5IGFuaW1hdGlvbnMsIHNvIHdlIGNhbiByZW1vdmUvcGF1
c2UgdGhlbS4KLSAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBWZWN0b3I8TGF5ZXJQcm9wZXJ0
eUFuaW1hdGlvbj4gPiBBbmltYXRpb25zTWFwOwotICAgIEFuaW1hdGlvbnNNYXAgbV9ydW5uaW5n
QW5pbWF0aW9uczsKLQotICAgIFZlY3RvcjxGbG9hdFJlY3Q+IG1fZGlydHlSZWN0czsKLSAgICAK
LSAgICBMYXllckNoYW5nZUZsYWdzIG1fdW5jb21taXR0ZWRDaGFuZ2VzOwotfTsKLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi0KLSNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJ
TkcpCi0KLSNlbmRpZiAvLyBHcmFwaGljc0xheWVyTWFjX2gKSW5kZXg6IFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzTGF5ZXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NMYXllck1hYy5tbQkocmV2aXNpb24gNzE4
NTApCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0xheWVyTWFjLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDI1MTQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAot
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0K
LSNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0KLSNpbXBvcnQgIkdyYXBoaWNzTGF5
ZXJNYWMuaCIKLQotI2ltcG9ydCAiQW5pbWF0aW9uLmgiCi0jaW1wb3J0ICJCbG9ja0V4Y2VwdGlv
bnMuaCIKLSNpbXBvcnQgIkZsb2F0Q29udmVyc2lvbi5oIgotI2ltcG9ydCAiRmxvYXRSZWN0Lmgi
Ci0jaW1wb3J0ICJJbWFnZS5oIgotI2ltcG9ydCAiUGxhdGZvcm1TdHJpbmcuaCIKLSNpbXBvcnQg
PFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgotI2ltcG9ydCAiUm90YXRlVHJhbnNmb3JtT3BlcmF0
aW9uLmgiCi0jaW1wb3J0ICJTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbi5oIgotI2ltcG9ydCAiU3lz
dGVtVGltZS5oIgotI2ltcG9ydCAiVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uLmgiCi0jaW1w
b3J0ICJXZWJMYXllci5oIgotI2ltcG9ydCAiV2ViVGlsZWRMYXllci5oIgotI2ltcG9ydCA8bGlt
aXRzLmg+Ci0jaW1wb3J0IDxvYmpjL29iamMtYXV0by5oPgotI2ltcG9ydCA8d3RmL0N1cnJlbnRU
aW1lLmg+Ci0jaW1wb3J0IDx3dGYvVW51c2VkUGFyYW0uaD4KLSNpbXBvcnQgPHd0Zi9SZXRhaW5Q
dHIuaD4KLSNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+Ci0KLXVzaW5nIG5h
bWVzcGFjZSBzdGQ7Ci0KLSNkZWZpbmUgSEFWRV9NT0RFUk5fUVVBUlRaQ09SRSAoIWRlZmluZWQo
QlVJTERJTkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpKQotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IFdlYktpdEFuaW1h
dGlvbkJlZ2luVGltZVNldEtleSA9IEAiV2ViS2l0QW5pbWF0aW9uQmVnaW5UaW1lU2V0IjsKLQot
Ly8gVGhlIHRocmVzaG9sZCB3aWR0aCBvciBoZWlnaHQgYWJvdmUgd2hpY2ggYSB0aWxlZCBsYXll
ciB3aWxsIGJlIHVzZWQuIFRoaXMgc2hvdWxkIGJlCi0vLyBsYXJnZSBlbm91Z2ggdG8gYXZvaWQg
dGlsZWQgbGF5ZXJzIGZvciBtb3N0IEdyYXBoaWNzTGF5ZXJzLCBidXQgbGVzcyB0aGFuIHRoZSBP
cGVuR0wKLS8vIHRleHR1cmUgc2l6ZSBsaW1pdCBvbiBhbGwgc3VwcG9ydGVkIGhhcmR3YXJlLgot
c3RhdGljIGNvbnN0IGludCBjTWF4UGl4ZWxEaW1lbnNpb24gPSAyMDAwOwotCi0vLyBUaGUgd2lk
dGggYW5kIGhlaWdodCBvZiBhIHNpbmdsZSB0aWxlIGluIGEgdGlsZWQgbGF5ZXIuIFNob3VsZCBi
ZSBsYXJnZSBlbm91Z2ggdG8KLS8vIGF2b2lkIGxvdHMgb2Ygc21hbGwgdGlsZXMgKGFuZCB0aGVy
ZWZvcmUgbG90cyBvZiBkcmF3aW5nIGNhbGxiYWNrcyksIGJ1dCBzbWFsbCBlbm91Z2gKLS8vIHRv
IGtlZXAgdGhlIG92ZXJhbGwgdGlsZSBjb3N0IGxvdy4KLXN0YXRpYyBjb25zdCBpbnQgY1RpbGVk
TGF5ZXJUaWxlU2l6ZSA9IDUxMjsKLQotLy8gSWYgd2Ugc2VuZCBhIGR1cmF0aW9uIG9mIDAgdG8g
Q0EsIHRoZW4gaXQgd2lsbCB1c2UgdGhlIGRlZmF1bHQgZHVyYXRpb24KLS8vIG9mIDI1MG1zLiBT
byBzZW5kIGEgdmVyeSBzbWFsbCB2YWx1ZSBpbnN0ZWFkLgotc3RhdGljIGNvbnN0IGZsb2F0IGNB
bmltYXRpb25BbG1vc3RaZXJvRHVyYXRpb24gPSAxZS0zZjsKLQotLy8gQ0FDdXJyZW50TWVkaWFU
aW1lKCkgaXMgYSB0aW1lIHNpbmNlIGJvb3QuIFRoZXNlIG1ldGhvZHMgY29udmVydCBiZXR3ZWVu
IHRoYXQgYW5kCi0vLyBXZWJDb3JlIHRpbWUsIHdoaWNoIGlzIHN5c3RlbSB0aW1lIChVVEMpLgot
c3RhdGljIENGVGltZUludGVydmFsIGN1cnJlbnRUaW1lVG9NZWRpYVRpbWUoZG91YmxlIHQpCi17
Ci0gICAgcmV0dXJuIENBQ3VycmVudE1lZGlhVGltZSgpICsgdCAtIFdURjo6Y3VycmVudFRpbWUo
KTsKLX0KLQotc3RhdGljIGRvdWJsZSBtZWRpYVRpbWVUb0N1cnJlbnRUaW1lKENGVGltZUludGVy
dmFsIHQpCi17Ci0gICAgcmV0dXJuIFdURjo6Y3VycmVudFRpbWUoKSArIHQgLSBDQUN1cnJlbnRN
ZWRpYVRpbWUoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi1AaW50ZXJmYWNlIENB
TGF5ZXIoUHJpdmF0ZSkKLS0gKHZvaWQpc2V0Q29udGVudHNDaGFuZ2VkOwotQGVuZAotCi1AaW50
ZXJmYWNlIFdlYkFuaW1hdGlvbkRlbGVnYXRlIDogTlNPYmplY3QgewotICAgIFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXJNYWMqIG1fZ3JhcGhpY3NMYXllcjsKLX0KLQotLSAodm9pZClhbmltYXRpb25E
aWRTdGFydDooQ0FBbmltYXRpb24gKilhbmltOwotLSAoV2ViQ29yZTo6R3JhcGhpY3NMYXllck1h
YyopZ3JhcGhpY3NMYXllcjsKLS0gKHZvaWQpc2V0TGF5ZXI6KFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXJNYWMqKWdyYXBoaWNzTGF5ZXI7Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIFdlYkFuaW1h
dGlvbkRlbGVnYXRlCi0KLS0gKHZvaWQpYW5pbWF0aW9uRGlkU3RhcnQ6KENBQW5pbWF0aW9uICop
YW5pbWF0aW9uCi17Ci0gICAgaWYgKG1fZ3JhcGhpY3NMYXllcikKLSAgICAgICAgbV9ncmFwaGlj
c0xheWVyLT5hbmltYXRpb25EaWRTdGFydChhbmltYXRpb24pOwotfQotCi0tIChXZWJDb3JlOjpH
cmFwaGljc0xheWVyTWFjKilncmFwaGljc0xheWVyCi17Ci0gICAgcmV0dXJuIG1fZ3JhcGhpY3NM
YXllcjsKLX0KLQotLSAodm9pZClzZXRMYXllcjooV2ViQ29yZTo6R3JhcGhpY3NMYXllck1hYyop
Z3JhcGhpY3NMYXllcgotewotICAgIG1fZ3JhcGhpY3NMYXllciA9IGdyYXBoaWNzTGF5ZXI7Ci19
Ci0KLUBlbmQKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMgaW5saW5lIHZvaWQgY29w
eVRyYW5zZm9ybShDQVRyYW5zZm9ybTNEJiB0b1QzRCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmIHQpCi17Ci0gICAgdG9UM0QubTExID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCh0Lm0xMSgp
KTsKLSAgICB0b1QzRC5tMTIgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHQubTEyKCkpOwotICAg
IHRvVDNELm0xMyA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodC5tMTMoKSk7Ci0gICAgdG9UM0Qu
bTE0ID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCh0Lm0xNCgpKTsKLSAgICB0b1QzRC5tMjEgPSBu
YXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHQubTIxKCkpOwotICAgIHRvVDNELm0yMiA9IG5hcnJvd1By
ZWNpc2lvblRvRmxvYXQodC5tMjIoKSk7Ci0gICAgdG9UM0QubTIzID0gbmFycm93UHJlY2lzaW9u
VG9GbG9hdCh0Lm0yMygpKTsKLSAgICB0b1QzRC5tMjQgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0
KHQubTI0KCkpOwotICAgIHRvVDNELm0zMSA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodC5tMzEo
KSk7Ci0gICAgdG9UM0QubTMyID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCh0Lm0zMigpKTsKLSAg
ICB0b1QzRC5tMzMgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHQubTMzKCkpOwotICAgIHRvVDNE
Lm0zNCA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodC5tMzQoKSk7Ci0gICAgdG9UM0QubTQxID0g
bmFycm93UHJlY2lzaW9uVG9GbG9hdCh0Lm00MSgpKTsKLSAgICB0b1QzRC5tNDIgPSBuYXJyb3dQ
cmVjaXNpb25Ub0Zsb2F0KHQubTQyKCkpOwotICAgIHRvVDNELm00MyA9IG5hcnJvd1ByZWNpc2lv
blRvRmxvYXQodC5tNDMoKSk7Ci0gICAgdG9UM0QubTQ0ID0gbmFycm93UHJlY2lzaW9uVG9GbG9h
dCh0Lm00NCgpKTsKLX0KLQotc3RhdGljIE5TVmFsdWUqIGdldFRyYW5zZm9ybUZ1bmN0aW9uVmFs
dWUoY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9uKiB0cmFuc2Zvcm1PcCwgVHJhbnNmb3JtT3BlcmF0
aW9uOjpPcGVyYXRpb25UeXBlIHRyYW5zZm9ybVR5cGUsIGNvbnN0IEludFNpemUmIHNpemUpCi17
Ci0gICAgc3dpdGNoICh0cmFuc2Zvcm1UeXBlKSB7Ci0gICAgICAgIGNhc2UgVHJhbnNmb3JtT3Bl
cmF0aW9uOjpST1RBVEU6Ci0gICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpST1RBVEVf
WDoKLSAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlJPVEFURV9ZOgotICAgICAgICAg
ICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOnRyYW5zZm9ybU9wID8gZGVnMnJh
ZChzdGF0aWNfY2FzdDxjb25zdCBSb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24qPih0cmFuc2Zvcm1P
cCktPmFuZ2xlKCkpIDogMF07Ci0gICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpTQ0FM
RV9YOgotICAgICAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOnRyYW5z
Zm9ybU9wID8gc3RhdGljX2Nhc3Q8Y29uc3QgU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24qPih0cmFu
c2Zvcm1PcCktPngoKSA6IDFdOwotICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0NB
TEVfWToKLSAgICAgICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTp0cmFu
c2Zvcm1PcCA/IHN0YXRpY19jYXN0PGNvbnN0IFNjYWxlVHJhbnNmb3JtT3BlcmF0aW9uKj4odHJh
bnNmb3JtT3ApLT55KCkgOiAxXTsKLSAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlND
QUxFX1o6Ci0gICAgICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6dHJh
bnNmb3JtT3AgPyBzdGF0aWNfY2FzdDxjb25zdCBTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbio+KHRy
YW5zZm9ybU9wKS0+eigpIDogMV07Ci0gICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpU
UkFOU0xBVEVfWDoKLSAgICAgICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJs
ZTp0cmFuc2Zvcm1PcCA/IHN0YXRpY19jYXN0PGNvbnN0IFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJh
dGlvbio+KHRyYW5zZm9ybU9wKS0+eChzaXplKSA6IDBdOwotICAgICAgICBjYXNlIFRyYW5zZm9y
bU9wZXJhdGlvbjo6VFJBTlNMQVRFX1k6Ci0gICAgICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51
bWJlcldpdGhEb3VibGU6dHJhbnNmb3JtT3AgPyBzdGF0aWNfY2FzdDxjb25zdCBUcmFuc2xhdGVU
cmFuc2Zvcm1PcGVyYXRpb24qPih0cmFuc2Zvcm1PcCktPnkoc2l6ZSkgOiAwXTsKLSAgICAgICAg
Y2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURV9aOgotICAgICAgICAgICAgcmV0dXJu
IFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOnRyYW5zZm9ybU9wID8gc3RhdGljX2Nhc3Q8Y29u
c3QgVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uKj4odHJhbnNmb3JtT3ApLT56KHNpemUpIDog
MF07Ci0gICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpTQ0FMRToKLSAgICAgICAgY2Fz
ZSBUcmFuc2Zvcm1PcGVyYXRpb246OlNDQUxFXzNEOgotICAgICAgICAgICAgcmV0dXJuIFtOU0Fy
cmF5IGFycmF5V2l0aE9iamVjdHM6Ci0gICAgICAgICAgICAgICAgICAgICAgICBbTlNOdW1iZXIg
bnVtYmVyV2l0aERvdWJsZTp0cmFuc2Zvcm1PcCA/IHN0YXRpY19jYXN0PGNvbnN0IFNjYWxlVHJh
bnNmb3JtT3BlcmF0aW9uKj4odHJhbnNmb3JtT3ApLT54KCkgOiAxXSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOnRyYW5zZm9ybU9wID8gc3RhdGlj
X2Nhc3Q8Y29uc3QgU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24qPih0cmFuc2Zvcm1PcCktPnkoKSA6
IDFdLAotICAgICAgICAgICAgICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6
dHJhbnNmb3JtT3AgPyBzdGF0aWNfY2FzdDxjb25zdCBTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbio+
KHRyYW5zZm9ybU9wKS0+eigpIDogMV0sCi0gICAgICAgICAgICAgICAgICAgICAgICBuaWxdOwot
ICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFOgotICAgICAgICBjYXNl
IFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFXzNEOgotICAgICAgICAgICAgcmV0dXJuIFtO
U0FycmF5IGFycmF5V2l0aE9iamVjdHM6Ci0gICAgICAgICAgICAgICAgICAgICAgICBbTlNOdW1i
ZXIgbnVtYmVyV2l0aERvdWJsZTp0cmFuc2Zvcm1PcCA/IHN0YXRpY19jYXN0PGNvbnN0IFRyYW5z
bGF0ZVRyYW5zZm9ybU9wZXJhdGlvbio+KHRyYW5zZm9ybU9wKS0+eChzaXplKSA6IDBdLAotICAg
ICAgICAgICAgICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6dHJhbnNmb3Jt
T3AgPyBzdGF0aWNfY2FzdDxjb25zdCBUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24qPih0cmFu
c2Zvcm1PcCktPnkoc2l6ZSkgOiAwXSwKLSAgICAgICAgICAgICAgICAgICAgICAgIFtOU051bWJl
ciBudW1iZXJXaXRoRG91YmxlOnRyYW5zZm9ybU9wID8gc3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNs
YXRlVHJhbnNmb3JtT3BlcmF0aW9uKj4odHJhbnNmb3JtT3ApLT56KHNpemUpIDogMF0sCi0gICAg
ICAgICAgICAgICAgICAgICAgICBuaWxdOwotICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlv
bjo6U0tFV19YOgotICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0tFV19ZOgotICAg
ICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0tFVzoKLSAgICAgICAgY2FzZSBUcmFuc2Zv
cm1PcGVyYXRpb246Ok1BVFJJWDoKLSAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlJP
VEFURV8zRDoKLSAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246Ok1BVFJJWF8zRDoKLSAg
ICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlBFUlNQRUNUSVZFOgotICAgICAgICBjYXNl
IFRyYW5zZm9ybU9wZXJhdGlvbjo6SURFTlRJVFk6Ci0gICAgICAgIGNhc2UgVHJhbnNmb3JtT3Bl
cmF0aW9uOjpOT05FOiB7Ci0gICAgICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0cmFuc2Zv
cm07Ci0gICAgICAgICAgICBpZiAodHJhbnNmb3JtT3ApCi0gICAgICAgICAgICAgICAgdHJhbnNm
b3JtT3AtPmFwcGx5KHRyYW5zZm9ybSwgc2l6ZSk7Ci0gICAgICAgICAgICBDQVRyYW5zZm9ybTNE
IGNhVHJhbnNmb3JtOwotICAgICAgICAgICAgY29weVRyYW5zZm9ybShjYVRyYW5zZm9ybSwgdHJh
bnNmb3JtKTsKLSAgICAgICAgICAgIHJldHVybiBbTlNWYWx1ZSB2YWx1ZVdpdGhDQVRyYW5zZm9y
bTNEOmNhVHJhbnNmb3JtXTsKLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICByZXR1cm4gMDsK
LX0KLQotI2lmIEhBVkVfTU9ERVJOX1FVQVJUWkNPUkUKLXN0YXRpYyBOU1N0cmluZyAqZ2V0VmFs
dWVGdW5jdGlvbk5hbWVGb3JUcmFuc2Zvcm1PcGVyYXRpb24oVHJhbnNmb3JtT3BlcmF0aW9uOjpP
cGVyYXRpb25UeXBlIHRyYW5zZm9ybVR5cGUpCi17Ci0gICAgLy8gVXNlIGxpdGVyYWwgc3RyaW5n
cyB0byBhdm9pZCBsaW5rLXRpbWUgZGVwZW5kZW5jeSBvbiB0aG9zZSBzeW1ib2xzLgotICAgIHN3
aXRjaCAodHJhbnNmb3JtVHlwZSkgewotICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6
Uk9UQVRFX1g6Ci0gICAgICAgICAgICByZXR1cm4gQCJyb3RhdGVYIjsgLy8ga0NBVmFsdWVGdW5j
dGlvblJvdGF0ZVg7Ci0gICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpST1RBVEVfWToK
LSAgICAgICAgICAgIHJldHVybiBAInJvdGF0ZVkiOyAvLyBrQ0FWYWx1ZUZ1bmN0aW9uUm90YXRl
WTsKLSAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlJPVEFURToKLSAgICAgICAgICAg
IHJldHVybiBAInJvdGF0ZVoiOyAvLyBrQ0FWYWx1ZUZ1bmN0aW9uUm90YXRlWjsKLSAgICAgICAg
Y2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlNDQUxFX1g6Ci0gICAgICAgICAgICByZXR1cm4gQCJz
Y2FsZVgiOyAvLyBrQ0FWYWx1ZUZ1bmN0aW9uU2NhbGVYOwotICAgICAgICBjYXNlIFRyYW5zZm9y
bU9wZXJhdGlvbjo6U0NBTEVfWToKLSAgICAgICAgICAgIHJldHVybiBAInNjYWxlWSI7IC8vIGtD
QVZhbHVlRnVuY3Rpb25TY2FsZVk7Ci0gICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpT
Q0FMRV9aOgotICAgICAgICAgICAgcmV0dXJuIEAic2NhbGVaIjsgLy8ga0NBVmFsdWVGdW5jdGlv
blNjYWxlWjsKLSAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURV9YOgot
ICAgICAgICAgICAgcmV0dXJuIEAidHJhbnNsYXRlWCI7IC8vIGtDQVZhbHVlRnVuY3Rpb25UcmFu
c2xhdGVYOwotICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFX1k6Ci0g
ICAgICAgICAgICByZXR1cm4gQCJ0cmFuc2xhdGVZIjsgLy8ga0NBVmFsdWVGdW5jdGlvblRyYW5z
bGF0ZVk7Ci0gICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfWjoKLSAg
ICAgICAgICAgIHJldHVybiBAInRyYW5zbGF0ZVoiOyAvLyBrQ0FWYWx1ZUZ1bmN0aW9uVHJhbnNs
YXRlWjsKLSAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlNDQUxFOgotICAgICAgICBj
YXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0NBTEVfM0Q6Ci0gICAgICAgICAgICByZXR1cm4gQCJz
Y2FsZSI7IC8vIGtDQVZhbHVlRnVuY3Rpb25TY2FsZTsKLSAgICAgICAgY2FzZSBUcmFuc2Zvcm1P
cGVyYXRpb246OlRSQU5TTEFURToKLSAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlRS
QU5TTEFURV8zRDoKLSAgICAgICAgICAgIHJldHVybiBAInRyYW5zbGF0ZSI7IC8vIGtDQVZhbHVl
RnVuY3Rpb25UcmFuc2xhdGU7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4g
bmlsOwotICAgIH0KLX0KLSNlbmRpZgotCi1zdGF0aWMgU3RyaW5nIHByb3BlcnR5SWRUb1N0cmlu
ZyhBbmltYXRlZFByb3BlcnR5SUQgcHJvcGVydHkpCi17Ci0gICAgc3dpdGNoIChwcm9wZXJ0eSkg
ewotICAgICAgICBjYXNlIEFuaW1hdGVkUHJvcGVydHlXZWJraXRUcmFuc2Zvcm06Ci0gICAgICAg
ICAgICByZXR1cm4gInRyYW5zZm9ybSI7Ci0gICAgICAgIGNhc2UgQW5pbWF0ZWRQcm9wZXJ0eU9w
YWNpdHk6Ci0gICAgICAgICAgICByZXR1cm4gIm9wYWNpdHkiOwotICAgICAgICBjYXNlIEFuaW1h
dGVkUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3I6Ci0gICAgICAgICAgICByZXR1cm4gImJhY2tncm91
bmRDb2xvciI7Ci0gICAgICAgIGNhc2UgQW5pbWF0ZWRQcm9wZXJ0eUludmFsaWQ6Ci0gICAgICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgcmV0dXJuICIiOwotfQotCi1zdGF0aWMgU3RyaW5nIGFuaW1hdGlvbklkZW50aWZp
ZXIoY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBBbmltYXRlZFByb3BlcnR5SUQgcHJvcGVy
dHksIGludCBpbmRleCkKLXsKLSAgICByZXR1cm4gbWFrZVN0cmluZyhhbmltYXRpb25OYW1lLCAn
XycsIFN0cmluZzo6bnVtYmVyKHByb3BlcnR5KSwgJ18nLCBTdHJpbmc6Om51bWJlcihpbmRleCkp
OwotfQotCi1zdGF0aWMgQ0FNZWRpYVRpbWluZ0Z1bmN0aW9uKiBnZXRDQU1lZGlhVGltaW5nRnVu
Y3Rpb24oY29uc3QgVGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0aW9uKQotewotICAgIC8vIEJ5
IHRoaXMgcG9pbnQsIHRpbWluZyBmdW5jdGlvbnMgY2FuIG9ubHkgYmUgbGluZWFyIG9yIGN1Ymlj
LCBub3Qgc3RlcHMuCi0gICAgQVNTRVJUKCF0aW1pbmdGdW5jdGlvbi0+aXNTdGVwc1RpbWluZ0Z1
bmN0aW9uKCkpOwotICAgIGlmICh0aW1pbmdGdW5jdGlvbi0+aXNDdWJpY0JlemllclRpbWluZ0Z1
bmN0aW9uKCkpIHsKLSAgICAgICAgY29uc3QgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbiogY3Rm
ID0gc3RhdGljX2Nhc3Q8Y29uc3QgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbio+KHRpbWluZ0Z1
bmN0aW9uKTsKLSAgICAgICAgcmV0dXJuIFtDQU1lZGlhVGltaW5nRnVuY3Rpb24gZnVuY3Rpb25X
aXRoQ29udHJvbFBvaW50czpzdGF0aWNfY2FzdDxmbG9hdD4oY3RmLT54MSgpKSA6c3RhdGljX2Nh
c3Q8ZmxvYXQ+KGN0Zi0+eTEoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpzdGF0aWNfY2FzdDxmbG9hdD4oY3RmLT54Migp
KSA6c3RhdGljX2Nhc3Q8ZmxvYXQ+KGN0Zi0+eTIoKSldOwotICAgIH0gZWxzZQotICAgICAgICBy
ZXR1cm4gW0NBTWVkaWFUaW1pbmdGdW5jdGlvbiBmdW5jdGlvbldpdGhOYW1lOkAibGluZWFyIl07
Ci19Ci0KLXN0YXRpYyB2b2lkIHNldExheWVyQm9yZGVyQ29sb3IoUGxhdGZvcm1MYXllciogbGF5
ZXIsIGNvbnN0IENvbG9yJiBjb2xvcikKLXsKLSAgICBbbGF5ZXIgc2V0Qm9yZGVyQ29sb3I6Y2Fj
aGVkQ0dDb2xvcihjb2xvciwgQ29sb3JTcGFjZURldmljZVJHQildOwotfQotCi1zdGF0aWMgdm9p
ZCBjbGVhckJvcmRlckNvbG9yKFBsYXRmb3JtTGF5ZXIqIGxheWVyKQotewotICAgIFtsYXllciBz
ZXRCb3JkZXJDb2xvcjpuaWxdOwotfQotCi1zdGF0aWMgdm9pZCBzZXRMYXllckJhY2tncm91bmRD
b2xvcihQbGF0Zm9ybUxheWVyKiBsYXllciwgY29uc3QgQ29sb3ImIGNvbG9yKQotewotICAgIFts
YXllciBzZXRCYWNrZ3JvdW5kQ29sb3I6Y2FjaGVkQ0dDb2xvcihjb2xvciwgQ29sb3JTcGFjZURl
dmljZVJHQildOwotfQotCi1zdGF0aWMgdm9pZCBjbGVhckxheWVyQmFja2dyb3VuZENvbG9yKFBs
YXRmb3JtTGF5ZXIqIGxheWVyKQotewotICAgIFtsYXllciBzZXRCYWNrZ3JvdW5kQ29sb3I6MF07
Ci19Ci0KLXN0YXRpYyB2b2lkIHNhZmVTZXRTdWJsYXllcnMoQ0FMYXllciogbGF5ZXIsIE5TQXJy
YXkqIHN1YmxheWVycykKLXsKLSAgICAvLyBXb3JrYXJvdW5kIGZvciA8cmRhcjovL3Byb2JsZW0v
NzM5MDcxNj46IC1bQ0FMYXllciBzZXRTdWJsYXllcnM6XSBjcmFzaGVzIGlmIHN1YmxheWVycyBp
cyBhbiBlbXB0eSBhcnJheSwgb3IgbmlsLCB1bmRlciBHQy4KLSAgICBpZiAob2JqY19jb2xsZWN0
aW5nRW5hYmxlZCgpICYmICFbc3VibGF5ZXJzIGNvdW50XSkgewotICAgICAgICB3aGlsZSAoW1ts
YXllciBzdWJsYXllcnNdIGNvdW50XSkKLSAgICAgICAgICAgIFtbW2xheWVyIHN1YmxheWVyc10g
b2JqZWN0QXRJbmRleDowXSByZW1vdmVGcm9tU3VwZXJsYXllcl07Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0gICAgCi0gICAgW2xheWVyIHNldFN1YmxheWVyczpzdWJsYXllcnNdOwotfQotCi1z
dGF0aWMgYm9vbCBjYVZhbHVlRnVuY3Rpb25TdXBwb3J0ZWQoKQotewotICAgIHN0YXRpYyBib29s
IHNIYXZlVmFsdWVGdW5jdGlvbiA9IFtDQVByb3BlcnR5QW5pbWF0aW9uIGluc3RhbmNlc1Jlc3Bv
bmRUb1NlbGVjdG9yOkBzZWxlY3RvcihzZXRWYWx1ZUZ1bmN0aW9uOildOwotICAgIHJldHVybiBz
SGF2ZVZhbHVlRnVuY3Rpb247Ci19Ci0KLXN0YXRpYyBib29sIGZvcmNlU29mdHdhcmVBbmltYXRp
b24oKQotewotICAgIHN0YXRpYyBib29sIGZvcmNlU29mdHdhcmVBbmltYXRpb24gPSBbW05TVXNl
ckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBib29sRm9yS2V5OkAiV2ViQ29yZUZvcmNl
U29mdHdhcmVBbmltYXRpb24iXTsKLSAgICByZXR1cm4gZm9yY2VTb2Z0d2FyZUFuaW1hdGlvbjsK
LX0KLQotc3RhdGljIE5TRGljdGlvbmFyeSogbnVsbEFjdGlvbnNEaWN0aW9uYXJ5KCkKLXsKLSAg
ICBOU051bGwqIG51bGxWYWx1ZSA9IFtOU051bGwgbnVsbF07Ci0gICAgTlNEaWN0aW9uYXJ5KiBh
Y3Rpb25zID0gW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsVmFsdWUsIEAiYW5jaG9yUG9pbnQiLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsVmFsdWUsIEAiYm91bmRzIiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbnVsbFZhbHVlLCBAImNvbnRlbnRzIiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbnVsbFZhbHVlLCBAImNvbnRlbnRzUmVjdCIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG51bGxWYWx1ZSwgQCJvcGFjaXR5IiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbnVsbFZhbHVlLCBAInBvc2l0aW9uIiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbnVsbFZhbHVlLCBAInNoYWRvd0NvbG9yIiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbnVsbFZhbHVlLCBAInN1YmxheWVyVHJhbnNmb3JtIiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbnVsbFZhbHVlLCBAInN1YmxheWVycyIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG51bGxWYWx1ZSwgQCJ0cmFuc2Zvcm0iLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBudWxsVmFsdWUsIEAielBvc2l0aW9uIiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbmlsXTsKLSAgICByZXR1cm4gYWN0aW9uczsKLX0KLQotc3RhdGljIGJvb2wg
YW5pbWF0aW9uSGFzU3RlcHNUaW1pbmdGdW5jdGlvbihjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYg
dmFsdWVMaXN0LCBjb25zdCBBbmltYXRpb24qIGFuaW0pCi17Ci0gICAgaWYgKGFuaW0tPnRpbWlu
Z0Z1bmN0aW9uKCktPmlzU3RlcHNUaW1pbmdGdW5jdGlvbigpKQotICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdmFsdWVMaXN0LnNpemUoKTsg
KytpKSB7Ci0gICAgICAgIGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB0aW1pbmdGdW5jdGlvbiA9IHZh
bHVlTGlzdC5hdChpKS0+dGltaW5nRnVuY3Rpb24oKTsKLSAgICAgICAgaWYgKHRpbWluZ0Z1bmN0
aW9uICYmIHRpbWluZ0Z1bmN0aW9uLT5pc1N0ZXBzVGltaW5nRnVuY3Rpb24oKSkKLSAgICAgICAg
ICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotUGFzc093
blB0cjxHcmFwaGljc0xheWVyPiBHcmFwaGljc0xheWVyOjpjcmVhdGUoR3JhcGhpY3NMYXllckNs
aWVudCogY2xpZW50KQotewotICAgIHJldHVybiBuZXcgR3JhcGhpY3NMYXllck1hYyhjbGllbnQp
OwotfQotCi1HcmFwaGljc0xheWVyTWFjOjpHcmFwaGljc0xheWVyTWFjKEdyYXBoaWNzTGF5ZXJD
bGllbnQqIGNsaWVudCkKLSAgICA6IEdyYXBoaWNzTGF5ZXIoY2xpZW50KQotICAgICwgbV9jb250
ZW50c0xheWVyUHVycG9zZShOb0NvbnRlbnRzTGF5ZXIpCi0gICAgLCBtX2NvbnRlbnRzTGF5ZXJI
YXNCYWNrZ3JvdW5kQ29sb3IoZmFsc2UpCi0gICAgLCBtX3VuY29tbWl0dGVkQ2hhbmdlcyhOb0No
YW5nZSkKLXsKLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBtX2xheWVyLmFk
b3B0TlMoW1tXZWJMYXllciBhbGxvY10gaW5pdF0pOwotICAgIFttX2xheWVyLmdldCgpIHNldExh
eWVyT3duZXI6dGhpc107Ci0KLSNpZiAhSEFWRV9NT0RFUk5fUVVBUlRaQ09SRQotICAgIHNldENv
bnRlbnRzT3JpZW50YXRpb24oZGVmYXVsdENvbnRlbnRzT3JpZW50YXRpb24oKSk7Ci0jZW5kaWYK
LQotICAgIHVwZGF0ZURlYnVnSW5kaWNhdG9ycygpOwotCi0gICAgbV9hbmltYXRpb25EZWxlZ2F0
ZS5hZG9wdE5TKFtbV2ViQW5pbWF0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKLSAgICBbbV9h
bmltYXRpb25EZWxlZ2F0ZS5nZXQoKSBzZXRMYXllcjp0aGlzXTsKLSAgICAKLSAgICBFTkRfQkxP
Q0tfT0JKQ19FWENFUFRJT05TCi19Ci0KLUdyYXBoaWNzTGF5ZXJNYWM6On5HcmFwaGljc0xheWVy
TWFjKCkKLXsKLSAgICAvLyBXZSByZWxlYXNlIG91ciByZWZlcmVuY2VzIHRvIHRoZSBDQUxheWVy
cyBoZXJlLCBidXQgZG8gbm90IGFjdGl2ZWx5IHVucGFyZW50IHRoZW0sCi0gICAgLy8gc2luY2Ug
dGhhdCB3aWxsIGNhdXNlIGEgY29tbWl0IGFuZCBicmVhayBvdXIgYmF0Y2hlZCBjb21taXQgbW9k
ZWwuIFRoZSBsYXllcnMgd2lsbAotICAgIC8vIGdldCByZWxlYXNlZCB3aGVuIHRoZSByb290bW9z
dCBtb2RpZmllZCBHcmFwaGljc0xheWVyTWFjIHJlYnVpbGRzIGl0cyBjaGlsZCBsYXllcnMuCi0g
ICAgCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICAvLyBDbGVhbiB1cCB0
aGUgV0sgbGF5ZXIuCi0gICAgaWYgKG1fbGF5ZXIpIHsKLSAgICAgICAgV2ViTGF5ZXIqIGxheWVy
ID0gbV9sYXllci5nZXQoKTsKLSAgICAgICAgW2xheWVyIHNldExheWVyT3duZXI6bmlsXTsKLSAg
ICB9Ci0gICAgCi0gICAgaWYgKG1fY29udGVudHNMYXllcikgewotICAgICAgICBpZiAoW21fY29u
dGVudHNMYXllci5nZXQoKSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNldExheWVyT3du
ZXI6KV0pCi0gICAgICAgICAgICBbKGlkKW1fY29udGVudHNMYXllci5nZXQoKSBzZXRMYXllck93
bmVyOm5pbF07Ci0gICAgfQotICAgIAotICAgIC8vIGFuaW1hdGlvbkRpZFN0YXJ0OiBjYW4gZmly
ZSBhZnRlciB0aGlzLCBzbyB3ZSBuZWVkIHRvIGNsZWFyIG91dCB0aGUgbGF5ZXIgb24gdGhlIGRl
bGVnYXRlLgotICAgIFttX2FuaW1hdGlvbkRlbGVnYXRlLmdldCgpIHNldExheWVyOjBdOwotCi0g
ICAgLy8gUmVsZWFzZSB0aGUgY2xvbmUgbGF5ZXJzIGluc2lkZSB0aGUgZXhjZXB0aW9uLWhhbmRs
aW5nIGJsb2NrLgotICAgIHJlbW92ZUNsb25lTGF5ZXJzKCk7Ci0gICAgCi0gICAgRU5EX0JMT0NL
X09CSkNfRVhDRVBUSU9OUwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnNldE5hbWUoY29u
c3QgU3RyaW5nJiBuYW1lKQotewotICAgIFN0cmluZyBsb25nTmFtZSA9IFN0cmluZzo6Zm9ybWF0
KCJDQUxheWVyKCVwKSBHcmFwaGljc0xheWVyKCVwKSAiLCBtX2xheWVyLmdldCgpLCB0aGlzKSAr
IG5hbWU7Ci0gICAgR3JhcGhpY3NMYXllcjo6c2V0TmFtZShsb25nTmFtZSk7Ci0gICAgbm90ZUxh
eWVyUHJvcGVydHlDaGFuZ2VkKE5hbWVDaGFuZ2VkKTsKLX0KLQotTmF0aXZlTGF5ZXIgR3JhcGhp
Y3NMYXllck1hYzo6bmF0aXZlTGF5ZXIoKSBjb25zdAotewotICAgIHJldHVybiBtX2xheWVyLmdl
dCgpOwotfQotCi1ib29sIEdyYXBoaWNzTGF5ZXJNYWM6OnNldENoaWxkcmVuKGNvbnN0IFZlY3Rv
cjxHcmFwaGljc0xheWVyKj4mIGNoaWxkcmVuKQotewotICAgIGJvb2wgY2hpbGRyZW5DaGFuZ2Vk
ID0gR3JhcGhpY3NMYXllcjo6c2V0Q2hpbGRyZW4oY2hpbGRyZW4pOwotICAgIGlmIChjaGlsZHJl
bkNoYW5nZWQpCi0gICAgICAgIG5vdGVTdWJsYXllcnNDaGFuZ2VkKCk7Ci0gICAgCi0gICAgcmV0
dXJuIGNoaWxkcmVuQ2hhbmdlZDsKLX0KLQotdm9pZCBHcmFwaGljc0xheWVyTWFjOjphZGRDaGls
ZChHcmFwaGljc0xheWVyKiBjaGlsZExheWVyKQotewotICAgIEdyYXBoaWNzTGF5ZXI6OmFkZENo
aWxkKGNoaWxkTGF5ZXIpOwotICAgIG5vdGVTdWJsYXllcnNDaGFuZ2VkKCk7Ci19Ci0KLXZvaWQg
R3JhcGhpY3NMYXllck1hYzo6YWRkQ2hpbGRBdEluZGV4KEdyYXBoaWNzTGF5ZXIqIGNoaWxkTGF5
ZXIsIGludCBpbmRleCkKLXsKLSAgICBHcmFwaGljc0xheWVyOjphZGRDaGlsZEF0SW5kZXgoY2hp
bGRMYXllciwgaW5kZXgpOwotICAgIG5vdGVTdWJsYXllcnNDaGFuZ2VkKCk7Ci19Ci0KLXZvaWQg
R3JhcGhpY3NMYXllck1hYzo6YWRkQ2hpbGRCZWxvdyhHcmFwaGljc0xheWVyKiBjaGlsZExheWVy
LCBHcmFwaGljc0xheWVyKiBzaWJsaW5nKQotewotICAgIEdyYXBoaWNzTGF5ZXI6OmFkZENoaWxk
QmVsb3coY2hpbGRMYXllciwgc2libGluZyk7Ci0gICAgbm90ZVN1YmxheWVyc0NoYW5nZWQoKTsK
LX0KLQotdm9pZCBHcmFwaGljc0xheWVyTWFjOjphZGRDaGlsZEFib3ZlKEdyYXBoaWNzTGF5ZXIq
IGNoaWxkTGF5ZXIsIEdyYXBoaWNzTGF5ZXIqIHNpYmxpbmcpCi17Ci0gICAgR3JhcGhpY3NMYXll
cjo6YWRkQ2hpbGRBYm92ZShjaGlsZExheWVyLCBzaWJsaW5nKTsKLSAgICBub3RlU3VibGF5ZXJz
Q2hhbmdlZCgpOwotfQotCi1ib29sIEdyYXBoaWNzTGF5ZXJNYWM6OnJlcGxhY2VDaGlsZChHcmFw
aGljc0xheWVyKiBvbGRDaGlsZCwgR3JhcGhpY3NMYXllciogbmV3Q2hpbGQpCi17Ci0gICAgaWYg
KEdyYXBoaWNzTGF5ZXI6OnJlcGxhY2VDaGlsZChvbGRDaGlsZCwgbmV3Q2hpbGQpKSB7Ci0gICAg
ICAgIG5vdGVTdWJsYXllcnNDaGFuZ2VkKCk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0K
LSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6cmVtb3ZlRnJv
bVBhcmVudCgpCi17Ci0gICAgaWYgKG1fcGFyZW50KQotICAgICAgICBzdGF0aWNfY2FzdDxHcmFw
aGljc0xheWVyTWFjKj4obV9wYXJlbnQpLT5ub3RlU3VibGF5ZXJzQ2hhbmdlZCgpOwotICAgIEdy
YXBoaWNzTGF5ZXI6OnJlbW92ZUZyb21QYXJlbnQoKTsKLX0KLQotdm9pZCBHcmFwaGljc0xheWVy
TWFjOjpzZXRNYXNrTGF5ZXIoR3JhcGhpY3NMYXllciogbGF5ZXIpCi17Ci0gICAgaWYgKGxheWVy
ID09IG1fbWFza0xheWVyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBHcmFwaGljc0xheWVyOjpz
ZXRNYXNrTGF5ZXIobGF5ZXIpOwotICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChNYXNrTGF5
ZXJDaGFuZ2VkKTsKLQotICAgIHByb3BhZ2F0ZUxheWVyQ2hhbmdlVG9SZXBsaWNhcygpOwotICAg
IAotICAgIGlmIChtX3JlcGxpY2F0ZWRMYXllcikKLSAgICAgICAgc3RhdGljX2Nhc3Q8R3JhcGhp
Y3NMYXllck1hYyo+KG1fcmVwbGljYXRlZExheWVyKS0+cHJvcGFnYXRlTGF5ZXJDaGFuZ2VUb1Jl
cGxpY2FzKCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6c2V0UmVwbGljYXRlZExheWVy
KEdyYXBoaWNzTGF5ZXIqIGxheWVyKQotewotICAgIGlmIChsYXllciA9PSBtX3JlcGxpY2F0ZWRM
YXllcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgR3JhcGhpY3NMYXllcjo6c2V0UmVwbGljYXRl
ZExheWVyKGxheWVyKTsKLSAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoUmVwbGljYXRlZExh
eWVyQ2hhbmdlZCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6c2V0UmVwbGljYXRlZEJ5
TGF5ZXIoR3JhcGhpY3NMYXllciogbGF5ZXIpCi17Ci0gICAgaWYgKGxheWVyID09IG1fcmVwbGlj
YUxheWVyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBHcmFwaGljc0xheWVyOjpzZXRSZXBsaWNh
dGVkQnlMYXllcihsYXllcik7Ci0gICAgbm90ZVN1YmxheWVyc0NoYW5nZWQoKTsKLSAgICBub3Rl
TGF5ZXJQcm9wZXJ0eUNoYW5nZWQoUmVwbGljYXRlZExheWVyQ2hhbmdlZCk7Ci19Ci0KLXZvaWQg
R3JhcGhpY3NMYXllck1hYzo6c2V0UG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYgcG9pbnQpCi17
Ci0gICAgaWYgKHBvaW50ID09IG1fcG9zaXRpb24pCi0gICAgICAgIHJldHVybjsKLQotICAgIEdy
YXBoaWNzTGF5ZXI6OnNldFBvc2l0aW9uKHBvaW50KTsKLSAgICBub3RlTGF5ZXJQcm9wZXJ0eUNo
YW5nZWQoUG9zaXRpb25DaGFuZ2VkKTsKLX0KLQotdm9pZCBHcmFwaGljc0xheWVyTWFjOjpzZXRB
bmNob3JQb2ludChjb25zdCBGbG9hdFBvaW50M0QmIHBvaW50KQotewotICAgIGlmIChwb2ludCA9
PSBtX2FuY2hvclBvaW50KQotICAgICAgICByZXR1cm47Ci0KLSAgICBHcmFwaGljc0xheWVyOjpz
ZXRBbmNob3JQb2ludChwb2ludCk7Ci0gICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKEFuY2hv
clBvaW50Q2hhbmdlZCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6c2V0U2l6ZShjb25z
dCBGbG9hdFNpemUmIHNpemUpCi17Ci0gICAgaWYgKHNpemUgPT0gbV9zaXplKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBHcmFwaGljc0xheWVyOjpzZXRTaXplKHNpemUpOwotICAgIG5vdGVMYXll
clByb3BlcnR5Q2hhbmdlZChTaXplQ2hhbmdlZCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1h
Yzo6c2V0VHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0KQotewotICAgIGlm
ICh0ID09IG1fdHJhbnNmb3JtKQotICAgICAgICByZXR1cm47Ci0KLSAgICBHcmFwaGljc0xheWVy
OjpzZXRUcmFuc2Zvcm0odCk7Ci0gICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKFRyYW5zZm9y
bUNoYW5nZWQpOwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnNldENoaWxkcmVuVHJhbnNm
b3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0KQotewotICAgIGlmICh0ID09IG1fY2hp
bGRyZW5UcmFuc2Zvcm0pCi0gICAgICAgIHJldHVybjsKLQotICAgIEdyYXBoaWNzTGF5ZXI6OnNl
dENoaWxkcmVuVHJhbnNmb3JtKHQpOwotICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChDaGls
ZHJlblRyYW5zZm9ybUNoYW5nZWQpOwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6Om1vdmVP
ckNvcHlMYXllckFuaW1hdGlvbihNb3ZlT3JDb3B5IG9wZXJhdGlvbiwgY29uc3QgU3RyaW5nJiBh
bmltYXRpb25JZGVudGlmaWVyLCBDQUxheWVyICpmcm9tTGF5ZXIsIENBTGF5ZXIgKnRvTGF5ZXIp
Ci17Ci0gICAgTlNTdHJpbmcgKmFuaW1hdGlvbklEID0gYW5pbWF0aW9uSWRlbnRpZmllcjsKLSAg
ICBDQUFuaW1hdGlvbiAqYW5pbSA9IFtmcm9tTGF5ZXIgYW5pbWF0aW9uRm9yS2V5OmFuaW1hdGlv
bklEXTsKLSAgICBpZiAoIWFuaW0pCi0gICAgICAgIHJldHVybjsKLQotICAgIHN3aXRjaCAob3Bl
cmF0aW9uKSB7Ci0gICAgICAgIGNhc2UgTW92ZToKLSAgICAgICAgICAgIFthbmltIHJldGFpbl07
Ci0gICAgICAgICAgICBbZnJvbUxheWVyIHJlbW92ZUFuaW1hdGlvbkZvcktleTphbmltYXRpb25J
RF07Ci0gICAgICAgICAgICBbdG9MYXllciBhZGRBbmltYXRpb246YW5pbSBmb3JLZXk6YW5pbWF0
aW9uSURdOwotICAgICAgICAgICAgW2FuaW0gcmVsZWFzZV07Ci0gICAgICAgICAgICBicmVhazsK
LQotICAgICAgICBjYXNlIENvcHk6Ci0gICAgICAgICAgICBbdG9MYXllciBhZGRBbmltYXRpb246
YW5pbSBmb3JLZXk6YW5pbWF0aW9uSURdOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQotfQot
Ci12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6Om1vdmVPckNvcHlBbmltYXRpb25zRm9yUHJvcGVydHko
TW92ZU9yQ29weSBvcGVyYXRpb24sIEFuaW1hdGVkUHJvcGVydHlJRCBwcm9wZXJ0eSwgQ0FMYXll
ciAqZnJvbUxheWVyLCBDQUxheWVyICp0b0xheWVyKQotewotICAgIC8vIExvb2sgZm9yIHJ1bm5p
bmcgYW5pbWF0aW9ucyBhZmZlY3RpbmcgdGhpcyBwcm9wZXJ0eS4KLSAgICBBbmltYXRpb25zTWFw
Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBtX3J1bm5pbmdBbmltYXRpb25zLmVuZCgpOwotICAgIGZv
ciAoQW5pbWF0aW9uc01hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3J1bm5pbmdBbmltYXRpb25z
LmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBjb25zdCBWZWN0b3I8TGF5ZXJQ
cm9wZXJ0eUFuaW1hdGlvbj4mIHByb3BlcnR5QW5pbWF0aW9ucyA9IGl0LT5zZWNvbmQ7Ci0gICAg
ICAgIHNpemVfdCBudW1BbmltYXRpb25zID0gcHJvcGVydHlBbmltYXRpb25zLnNpemUoKTsKLSAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1BbmltYXRpb25zOyArK2kpIHsKLSAgICAg
ICAgICAgIGNvbnN0IExheWVyUHJvcGVydHlBbmltYXRpb24mIGN1cnJBbmltYXRpb24gPSBwcm9w
ZXJ0eUFuaW1hdGlvbnNbaV07Ci0gICAgICAgICAgICBpZiAoY3VyckFuaW1hdGlvbi5tX3Byb3Bl
cnR5ID09IHByb3BlcnR5KQotICAgICAgICAgICAgICAgIG1vdmVPckNvcHlMYXllckFuaW1hdGlv
bihvcGVyYXRpb24sIGFuaW1hdGlvbklkZW50aWZpZXIoY3VyckFuaW1hdGlvbi5tX25hbWUsIGN1
cnJBbmltYXRpb24ubV9wcm9wZXJ0eSwgY3VyckFuaW1hdGlvbi5tX2luZGV4KSwgZnJvbUxheWVy
LCB0b0xheWVyKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotdm9pZCBHcmFwaGljc0xheWVyTWFj
OjpzZXRQcmVzZXJ2ZXMzRChib29sIHByZXNlcnZlczNEKQotewotICAgIGlmIChwcmVzZXJ2ZXMz
RCA9PSBtX3ByZXNlcnZlczNEKQotICAgICAgICByZXR1cm47Ci0KLSAgICBHcmFwaGljc0xheWVy
OjpzZXRQcmVzZXJ2ZXMzRChwcmVzZXJ2ZXMzRCk7Ci0gICAgbm90ZUxheWVyUHJvcGVydHlDaGFu
Z2VkKFByZXNlcnZlczNEQ2hhbmdlZCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6c2V0
TWFza3NUb0JvdW5kcyhib29sIG1hc2tzVG9Cb3VuZHMpCi17Ci0gICAgaWYgKG1hc2tzVG9Cb3Vu
ZHMgPT0gbV9tYXNrc1RvQm91bmRzKQotICAgICAgICByZXR1cm47Ci0KLSAgICBHcmFwaGljc0xh
eWVyOjpzZXRNYXNrc1RvQm91bmRzKG1hc2tzVG9Cb3VuZHMpOwotICAgIG5vdGVMYXllclByb3Bl
cnR5Q2hhbmdlZChNYXNrc1RvQm91bmRzQ2hhbmdlZCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXll
ck1hYzo6c2V0RHJhd3NDb250ZW50KGJvb2wgZHJhd3NDb250ZW50KQotewotICAgIGlmIChkcmF3
c0NvbnRlbnQgPT0gbV9kcmF3c0NvbnRlbnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIEdyYXBo
aWNzTGF5ZXI6OnNldERyYXdzQ29udGVudChkcmF3c0NvbnRlbnQpOwotICAgIG5vdGVMYXllclBy
b3BlcnR5Q2hhbmdlZChEcmF3c0NvbnRlbnRDaGFuZ2VkKTsKLX0KLQotdm9pZCBHcmFwaGljc0xh
eWVyTWFjOjpzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQotewotICAgIGlm
IChtX2JhY2tncm91bmRDb2xvclNldCAmJiBtX2JhY2tncm91bmRDb2xvciA9PSBjb2xvcikKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgR3JhcGhpY3NMYXllcjo6c2V0QmFja2dyb3VuZENvbG9yKGNv
bG9yKTsKLQotICAgIG1fY29udGVudHNMYXllckhhc0JhY2tncm91bmRDb2xvciA9IHRydWU7Ci0g
ICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKEJhY2tncm91bmRDb2xvckNoYW5nZWQpOwotfQot
Ci12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OmNsZWFyQmFja2dyb3VuZENvbG9yKCkKLXsKLSAgICBp
ZiAoIW1fYmFja2dyb3VuZENvbG9yU2V0KQotICAgICAgICByZXR1cm47Ci0KLSAgICBHcmFwaGlj
c0xheWVyOjpjbGVhckJhY2tncm91bmRDb2xvcigpOwotICAgIG1fY29udGVudHNMYXllckhhc0Jh
Y2tncm91bmRDb2xvciA9IGZhbHNlOwotICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChCYWNr
Z3JvdW5kQ29sb3JDaGFuZ2VkKTsKLX0KLQotdm9pZCBHcmFwaGljc0xheWVyTWFjOjpzZXRDb250
ZW50c09wYXF1ZShib29sIG9wYXF1ZSkKLXsKLSAgICBpZiAobV9jb250ZW50c09wYXF1ZSA9PSBv
cGFxdWUpCi0gICAgICAgIHJldHVybjsKLQotICAgIEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRz
T3BhcXVlKG9wYXF1ZSk7Ci0gICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKENvbnRlbnRzT3Bh
cXVlQ2hhbmdlZCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6c2V0QmFja2ZhY2VWaXNp
YmlsaXR5KGJvb2wgdmlzaWJsZSkKLXsKLSAgICBpZiAobV9iYWNrZmFjZVZpc2liaWxpdHkgPT0g
dmlzaWJsZSkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIEdyYXBoaWNzTGF5ZXI6OnNldEJh
Y2tmYWNlVmlzaWJpbGl0eSh2aXNpYmxlKTsKLSAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQo
QmFja2ZhY2VWaXNpYmlsaXR5Q2hhbmdlZCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6
c2V0T3BhY2l0eShmbG9hdCBvcGFjaXR5KQotewotICAgIGZsb2F0IGNsYW1wZWRPcGFjaXR5ID0g
bWF4KDAuMGYsIG1pbihvcGFjaXR5LCAxLjBmKSk7Ci0KLSAgICBpZiAoY2xhbXBlZE9wYWNpdHkg
PT0gbV9vcGFjaXR5KQotICAgICAgICByZXR1cm47Ci0KLSAgICBHcmFwaGljc0xheWVyOjpzZXRP
cGFjaXR5KGNsYW1wZWRPcGFjaXR5KTsKLSAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoT3Bh
Y2l0eUNoYW5nZWQpOwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnNldE5lZWRzRGlzcGxh
eSgpCi17Ci0gICAgRmxvYXRSZWN0IGh1Z2VSZWN0KC1udW1lcmljX2xpbWl0czxmbG9hdD46Om1h
eCgpIC8gMiwgLW51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4KCkgLyAyLAotICAgICAgICAgICAg
ICAgICAgICAgICBudW1lcmljX2xpbWl0czxmbG9hdD46Om1heCgpLCBudW1lcmljX2xpbWl0czxm
bG9hdD46Om1heCgpKTsKLQotICAgIHNldE5lZWRzRGlzcGxheUluUmVjdChodWdlUmVjdCk7Ci19
Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6c2V0TmVlZHNEaXNwbGF5SW5SZWN0KGNvbnN0IEZs
b2F0UmVjdCYgcmVjdCkKLXsKLSAgICBpZiAoIWRyYXdzQ29udGVudCgpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBjb25zdCBzaXplX3QgbWF4RGlydHlSZWN0cyA9IDMyOwotICAgIAotICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9kaXJ0eVJlY3RzLnNpemUoKTsgKytpKSB7Ci0gICAgICAg
IGlmIChtX2RpcnR5UmVjdHNbaV0uY29udGFpbnMocmVjdCkpCi0gICAgICAgICAgICByZXR1cm47
Ci0gICAgfQotICAgIAotICAgIGlmIChtX2RpcnR5UmVjdHMuc2l6ZSgpIDwgbWF4RGlydHlSZWN0
cykKLSAgICAgICAgbV9kaXJ0eVJlY3RzLmFwcGVuZChyZWN0KTsKLSAgICBlbHNlCi0gICAgICAg
IG1fZGlydHlSZWN0c1swXS51bml0ZShyZWN0KTsKLQotICAgIG5vdGVMYXllclByb3BlcnR5Q2hh
bmdlZChEaXJ0eVJlY3RzQ2hhbmdlZCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6c2V0
Q29udGVudHNOZWVkc0Rpc3BsYXkoKQotewotICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChD
b250ZW50c05lZWRzRGlzcGxheSk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6c2V0Q29u
dGVudHNSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpCi17Ci0gICAgaWYgKHJlY3QgPT0gbV9jb250
ZW50c1JlY3QpCi0gICAgICAgIHJldHVybjsKLQotICAgIEdyYXBoaWNzTGF5ZXI6OnNldENvbnRl
bnRzUmVjdChyZWN0KTsKLSAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoQ29udGVudHNSZWN0
Q2hhbmdlZCk7Ci19Ci0KLWJvb2wgR3JhcGhpY3NMYXllck1hYzo6YWRkQW5pbWF0aW9uKGNvbnN0
IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3QsIGNvbnN0IEludFNpemUmIGJveFNpemUsIGNv
bnN0IEFuaW1hdGlvbiogYW5pbSwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBkb3VibGUg
dGltZU9mZnNldCkKLXsKLSAgICBBU1NFUlQoIWFuaW1hdGlvbk5hbWUuaXNFbXB0eSgpKTsKLQot
ICAgIGlmIChmb3JjZVNvZnR3YXJlQW5pbWF0aW9uKCkgfHwgIWFuaW0gfHwgYW5pbS0+aXNFbXB0
eU9yWmVyb0R1cmF0aW9uKCkgfHwgdmFsdWVMaXN0LnNpemUoKSA8IDIpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotI2lmICFIQVZFX01PREVSTl9RVUFSVFpDT1JFCi0gICAgLy8gT2xkZXIgdmVy
c2lvbnMgb2YgUXVhcnR6Q29yZSBkbyBub3QgaGFuZGxlIG9wYWNpdHkgaW4gdHJhbnNmb3JtIGxh
eWVycyBwcm9wZXJseSwgc28gd2Ugd2lsbAotICAgIC8vIGFsd2F5cyBkbyBzb2Z0d2FyZSBhbmlt
YXRpb24gaW4gdGhhdCBjYXNlLgotICAgIGlmICh2YWx1ZUxpc3QucHJvcGVydHkoKSA9PSBBbmlt
YXRlZFByb3BlcnR5T3BhY2l0eSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCi0KLSAg
ICAvLyBDb3JlQW5pbWF0aW9uIGRvZXMgbm90IGhhbmRsZSB0aGUgc3RlcHMoKSB0aW1pbmcgZnVu
Y3Rpb24uIEZhbGwgYmFjawotICAgIC8vIHRvIHNvZnR3YXJlIGFuaW1hdGlvbiBpbiB0aGF0IGNh
c2UuCi0gICAgaWYgKGFuaW1hdGlvbkhhc1N0ZXBzVGltaW5nRnVuY3Rpb24odmFsdWVMaXN0LCBh
bmltKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgYm9vbCBjcmVhdGVkQW5pbWF0aW9u
cyA9IGZhbHNlOwotICAgIGlmICh2YWx1ZUxpc3QucHJvcGVydHkoKSA9PSBBbmltYXRlZFByb3Bl
cnR5V2Via2l0VHJhbnNmb3JtKQotICAgICAgICBjcmVhdGVkQW5pbWF0aW9ucyA9IGNyZWF0ZVRy
YW5zZm9ybUFuaW1hdGlvbnNGcm9tS2V5ZnJhbWVzKHZhbHVlTGlzdCwgYW5pbSwgYW5pbWF0aW9u
TmFtZSwgdGltZU9mZnNldCwgYm94U2l6ZSk7Ci0gICAgZWxzZQotICAgICAgICBjcmVhdGVkQW5p
bWF0aW9ucyA9IGNyZWF0ZUFuaW1hdGlvbkZyb21LZXlmcmFtZXModmFsdWVMaXN0LCBhbmltLCBh
bmltYXRpb25OYW1lLCB0aW1lT2Zmc2V0KTsKLQotICAgIGlmIChjcmVhdGVkQW5pbWF0aW9ucykK
LSAgICAgICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKEFuaW1hdGlvbkNoYW5nZWQpOwotICAg
ICAgICAKLSAgICByZXR1cm4gY3JlYXRlZEFuaW1hdGlvbnM7Ci19Ci0KLXZvaWQgR3JhcGhpY3NM
YXllck1hYzo6cGF1c2VBbmltYXRpb24oY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBkb3Vi
bGUgdGltZU9mZnNldCkKLXsKLSAgICBpZiAoIWFuaW1hdGlvbklzUnVubmluZyhhbmltYXRpb25O
YW1lKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQW5pbWF0aW9uc1RvUHJvY2Vzc01hcDo6aXRl
cmF0b3IgaXQgPSBtX2FuaW1hdGlvbnNUb1Byb2Nlc3MuZmluZChhbmltYXRpb25OYW1lKTsKLSAg
ICBpZiAoaXQgIT0gbV9hbmltYXRpb25zVG9Qcm9jZXNzLmVuZCgpKSB7Ci0gICAgICAgIEFuaW1h
dGlvblByb2Nlc3NpbmdBY3Rpb24mIHByb2Nlc3NpbmdJbmZvID0gaXQtPnNlY29uZDsKLSAgICAg
ICAgLy8gSWYgYW4gYW5pbWF0aW9uIGlzIHNjaGVkdWxlZCB0byBiZSByZW1vdmVkLCBkb24ndCBj
aGFuZ2UgdGhlIHJlbW92ZSB0byBhIHBhdXNlLgotICAgICAgICBpZiAocHJvY2Vzc2luZ0luZm8u
YWN0aW9uICE9IFJlbW92ZSkKLSAgICAgICAgICAgIHByb2Nlc3NpbmdJbmZvLmFjdGlvbiA9IFBh
dXNlOwotICAgIH0gZWxzZQotICAgICAgICBtX2FuaW1hdGlvbnNUb1Byb2Nlc3MuYWRkKGFuaW1h
dGlvbk5hbWUsIEFuaW1hdGlvblByb2Nlc3NpbmdBY3Rpb24oUGF1c2UsIHRpbWVPZmZzZXQpKTsK
LQotICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChBbmltYXRpb25DaGFuZ2VkKTsKLX0KLQot
dm9pZCBHcmFwaGljc0xheWVyTWFjOjpyZW1vdmVBbmltYXRpb24oY29uc3QgU3RyaW5nJiBhbmlt
YXRpb25OYW1lKQotewotICAgIGlmICghYW5pbWF0aW9uSXNSdW5uaW5nKGFuaW1hdGlvbk5hbWUp
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2FuaW1hdGlvbnNUb1Byb2Nlc3MuYWRkKGFuaW1h
dGlvbk5hbWUsIEFuaW1hdGlvblByb2Nlc3NpbmdBY3Rpb24oUmVtb3ZlKSk7Ci0gICAgbm90ZUxh
eWVyUHJvcGVydHlDaGFuZ2VkKEFuaW1hdGlvbkNoYW5nZWQpOwotfQotCi12b2lkIEdyYXBoaWNz
TGF5ZXJNYWM6OmFuaW1hdGlvbkRpZFN0YXJ0KENBQW5pbWF0aW9uKiBjYUFuaW1hdGlvbikKLXsK
LSAgICBib29sIGhhZE5vblplcm9CZWdpblRpbWUgPSBbW2NhQW5pbWF0aW9uIHZhbHVlRm9yS2V5
OldlYktpdEFuaW1hdGlvbkJlZ2luVGltZVNldEtleV0gYm9vbFZhbHVlXTsKLQotICAgIGRvdWJs
ZSBzdGFydFRpbWU7Ci0gICAgaWYgKGhhZE5vblplcm9CZWdpblRpbWUpIHsKLSAgICAgICAgLy8g
V2UgZG9uJ3Qga25vdyB3aGF0IHRpbWUgQ0EgdXNlZCB0byBjb21taXQgdGhlIGFuaW1hdGlvbiwg
c28ganVzdCB1c2UgdGhlIGN1cnJlbnQgdGltZQotICAgICAgICAvLyAoZXZlbiB0aG91Z2ggdGhp
cyB3aWxsIGJlIHNsaWdodGx5IG9mZikuCi0gICAgICAgIHN0YXJ0VGltZSA9IFdlYkNvcmU6Om1l
ZGlhVGltZVRvQ3VycmVudFRpbWUoQ0FDdXJyZW50TWVkaWFUaW1lKCkpOwotICAgIH0gZWxzZQot
ICAgICAgICBzdGFydFRpbWUgPSBXZWJDb3JlOjptZWRpYVRpbWVUb0N1cnJlbnRUaW1lKFtjYUFu
aW1hdGlvbiBiZWdpblRpbWVdKTsKLQotICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgbV9jbGll
bnQtPm5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQodGhpcywgc3RhcnRUaW1lKTsKLX0KLQotdm9pZCBH
cmFwaGljc0xheWVyTWFjOjpzZXRDb250ZW50c1RvSW1hZ2UoSW1hZ2UqIGltYWdlKQotewotICAg
IGlmIChpbWFnZSkgewotICAgICAgICBDR0ltYWdlUmVmIG5ld0ltYWdlID0gaW1hZ2UtPm5hdGl2
ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7Ci0gICAgICAgIGlmICghbmV3SW1hZ2UpCi0gICAgICAg
ICAgICByZXR1cm47Ci0KLSAgICAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHRoZSBpbWFnZSBjaGFu
Z2VkOyB3ZSBoYXZlIHRvIGRvIHRoaXMgYmVjYXVzZSB0aGUgY2FsbCB0bwotICAgICAgICAvLyBD
R0ltYWdlQ3JlYXRlQ29weVdpdGhDb2xvclNwYWNlKCkgYmVsb3cgY2FuIGNyZWF0ZSBhIG5ldyBp
bWFnZSBldmVyeSB0aW1lLgotICAgICAgICBpZiAobV91bmNvcnJlY3RlZENvbnRlbnRzSW1hZ2Ug
JiYgbV91bmNvcnJlY3RlZENvbnRlbnRzSW1hZ2UuZ2V0KCkgPT0gbmV3SW1hZ2UpCi0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIAotICAgICAgICBtX3VuY29ycmVjdGVkQ29udGVudHNJbWFn
ZSA9IG5ld0ltYWdlOwotICAgICAgICBtX3BlbmRpbmdDb250ZW50c0ltYWdlID0gbmV3SW1hZ2U7
Ci0gICAgICAgIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlID0gQ0dJbWFnZUdldENvbG9yU3Bh
Y2UobV9wZW5kaW5nQ29udGVudHNJbWFnZS5nZXQoKSk7Ci0KLSAgICAgICAgc3RhdGljIENHQ29s
b3JTcGFjZVJlZiBkZXZpY2VSR0IgPSBDR0NvbG9yU3BhY2VDcmVhdGVEZXZpY2VSR0IoKTsKLSAg
ICAgICAgaWYgKGNvbG9yU3BhY2UgJiYgQ0ZFcXVhbChjb2xvclNwYWNlLCBkZXZpY2VSR0IpKSB7
Ci0gICAgICAgICAgICAvLyBDb3JlR3JhcGhpY3MgcmVuZGVycyBpbWFnZXMgdGFnZ2VkIHdpdGgg
RGV2aWNlUkdCIHVzaW5nIHRoZSBjb2xvciBzcGFjZSBvZiB0aGUgbWFpbiBkaXNwbGF5LiBXaGVu
IHdlIGhhbmQgc3VjaAotICAgICAgICAgICAgLy8gaW1hZ2VzIHRvIENBIHdlIG5lZWQgdG8gdGFn
IHRoZW0gc2ltaWxhcmx5IHNvIENBIHJlbmRlcmluZyBtYXRjaGVzIENHIHJlbmRlcmluZy4KLSAg
ICAgICAgICAgIHN0YXRpYyBDR0NvbG9yU3BhY2VSZWYgZ2VuZXJpY1JHQiA9IENHRGlzcGxheUNv
cHlDb2xvclNwYWNlKGtDR0RpcmVjdE1haW5EaXNwbGF5KTsKLSAgICAgICAgICAgIG1fcGVuZGlu
Z0NvbnRlbnRzSW1hZ2UuYWRvcHRDRihDR0ltYWdlQ3JlYXRlQ29weVdpdGhDb2xvclNwYWNlKG1f
cGVuZGluZ0NvbnRlbnRzSW1hZ2UuZ2V0KCksIGdlbmVyaWNSR0IpKTsKLSAgICAgICAgfQotICAg
ICAgICBtX2NvbnRlbnRzTGF5ZXJQdXJwb3NlID0gQ29udGVudHNMYXllckZvckltYWdlOwotICAg
ICAgICBpZiAoIW1fY29udGVudHNMYXllcikKLSAgICAgICAgICAgIG5vdGVTdWJsYXllcnNDaGFu
Z2VkKCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgbV91bmNvcnJlY3RlZENvbnRlbnRzSW1hZ2Ug
PSAwOwotICAgICAgICBtX3BlbmRpbmdDb250ZW50c0ltYWdlID0gMDsKLSAgICAgICAgbV9jb250
ZW50c0xheWVyUHVycG9zZSA9IE5vQ29udGVudHNMYXllcjsKLSAgICAgICAgaWYgKG1fY29udGVu
dHNMYXllcikKLSAgICAgICAgICAgIG5vdGVTdWJsYXllcnNDaGFuZ2VkKCk7Ci0gICAgfQotCi0g
ICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKENvbnRlbnRzSW1hZ2VDaGFuZ2VkKTsKLX0KLQot
dm9pZCBHcmFwaGljc0xheWVyTWFjOjpzZXRDb250ZW50c1RvTWVkaWEoUGxhdGZvcm1MYXllciog
bWVkaWFMYXllcikKLXsKLSAgICBpZiAobWVkaWFMYXllciA9PSBtX2NvbnRlbnRzTGF5ZXIpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIG1fY29udGVudHNMYXllciA9IG1lZGlhTGF5ZXI7Ci0gICAg
bV9jb250ZW50c0xheWVyUHVycG9zZSA9IG1lZGlhTGF5ZXIgPyBDb250ZW50c0xheWVyRm9yTWVk
aWEgOiBOb0NvbnRlbnRzTGF5ZXI7Ci0KLSAgICBub3RlU3VibGF5ZXJzQ2hhbmdlZCgpOwotICAg
IG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChDb250ZW50c01lZGlhTGF5ZXJDaGFuZ2VkKTsKLX0K
LQotdm9pZCBHcmFwaGljc0xheWVyTWFjOjpkaWREaXNwbGF5KFBsYXRmb3JtTGF5ZXIqIGxheWVy
KQotewotICAgIENBTGF5ZXIqIHNvdXJjZUxheWVyOwotICAgIExheWVyTWFwKiBsYXllckNsb25l
TWFwOwotCi0gICAgaWYgKGxheWVyID09IG1fbGF5ZXIpIHsKLSAgICAgICAgc291cmNlTGF5ZXIg
PSBtX2xheWVyLmdldCgpOwotICAgICAgICBsYXllckNsb25lTWFwID0gbV9sYXllckNsb25lcy5n
ZXQoKTsKLSAgICB9IGVsc2UgaWYgKGxheWVyID09IG1fY29udGVudHNMYXllcikgewotICAgICAg
ICBzb3VyY2VMYXllciA9IG1fY29udGVudHNMYXllci5nZXQoKTsKLSAgICAgICAgbGF5ZXJDbG9u
ZU1hcCA9IG1fY29udGVudHNMYXllckNsb25lcy5nZXQoKTsKLSAgICB9IGVsc2UKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgaWYgKGxheWVyQ2xvbmVNYXApIHsKLSAgICAgICAgTGF5ZXJNYXA6OmNv
bnN0X2l0ZXJhdG9yIGVuZCA9IGxheWVyQ2xvbmVNYXAtPmVuZCgpOwotICAgICAgICBmb3IgKExh
eWVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGxheWVyQ2xvbmVNYXAtPmJlZ2luKCk7IGl0ICE9
IGVuZDsgKytpdCkgewotICAgICAgICAgICAgQ0FMYXllciAqY3VyckNsb25lID0gaXQtPnNlY29u
ZC5nZXQoKTsKLSAgICAgICAgICAgIGlmICghY3VyckNsb25lKQotICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwotCi0gICAgICAgICAgICBpZiAoW2N1cnJDbG9uZSBjb250ZW50c10gIT0gW3NvdXJj
ZUxheWVyIGNvbnRlbnRzXSkKLSAgICAgICAgICAgICAgICBbY3VyckNsb25lIHNldENvbnRlbnRz
Oltzb3VyY2VMYXllciBjb250ZW50c11dOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgIFtjdXJyQ2xvbmUgc2V0Q29udGVudHNDaGFuZ2VkXTsKLSAgICAgICAgfQotICAgIH0KLX0K
LQotdm9pZCBHcmFwaGljc0xheWVyTWFjOjpzeW5jQ29tcG9zaXRpbmdTdGF0ZSgpCi17Ci0gICAg
cmVjdXJzaXZlQ29tbWl0Q2hhbmdlcygpOwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnN5
bmNDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSgpCi17Ci0gICAgY29tbWl0TGF5ZXJD
aGFuZ2VzQmVmb3JlU3VibGF5ZXJzKCk7Ci0gICAgY29tbWl0TGF5ZXJDaGFuZ2VzQWZ0ZXJTdWJs
YXllcnMoKTsKLX0KLQotdm9pZCBHcmFwaGljc0xheWVyTWFjOjpyZWN1cnNpdmVDb21taXRDaGFu
Z2VzKCkKLXsKLSAgICBjb21taXRMYXllckNoYW5nZXNCZWZvcmVTdWJsYXllcnMoKTsKLQotICAg
IGlmIChtX21hc2tMYXllcikKLSAgICAgICAgc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllck1hYyo+
KG1fbWFza0xheWVyKS0+Y29tbWl0TGF5ZXJDaGFuZ2VzQmVmb3JlU3VibGF5ZXJzKCk7Ci0KLSAg
ICBjb25zdCBWZWN0b3I8R3JhcGhpY3NMYXllcio+JiBjaGlsZExheWVycyA9IGNoaWxkcmVuKCk7
Ci0gICAgc2l6ZV90IG51bUNoaWxkcmVuID0gY2hpbGRMYXllcnMuc2l6ZSgpOwotICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbnVtQ2hpbGRyZW47ICsraSkgewotICAgICAgICBHcmFwaGljc0xh
eWVyTWFjKiBjdXJDaGlsZCA9IHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXJNYWMqPihjaGlsZExh
eWVyc1tpXSk7Ci0gICAgICAgIGN1ckNoaWxkLT5yZWN1cnNpdmVDb21taXRDaGFuZ2VzKCk7Ci0g
ICAgfQotCi0gICAgaWYgKG1fcmVwbGljYUxheWVyKQotICAgICAgICBzdGF0aWNfY2FzdDxHcmFw
aGljc0xheWVyTWFjKj4obV9yZXBsaWNhTGF5ZXIpLT5yZWN1cnNpdmVDb21taXRDaGFuZ2VzKCk7
Ci0KLSAgICBpZiAobV9tYXNrTGF5ZXIpCi0gICAgICAgIHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5
ZXJNYWMqPihtX21hc2tMYXllciktPmNvbW1pdExheWVyQ2hhbmdlc0FmdGVyU3VibGF5ZXJzKCk7
Ci0KLSAgICBjb21taXRMYXllckNoYW5nZXNBZnRlclN1YmxheWVycygpOwotfQotCi12b2lkIEdy
YXBoaWNzTGF5ZXJNYWM6OmNvbW1pdExheWVyQ2hhbmdlc0JlZm9yZVN1YmxheWVycygpCi17Ci0g
ICAgaWYgKCFtX3VuY29tbWl0dGVkQ2hhbmdlcykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQkVH
SU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICAvLyBOZWVkIHRvIGhhbmRsZSBQcmVzZXJ2
ZXMzRENoYW5nZWQgZmlyc3QsIGJlY2F1c2UgaXQgYWZmZWN0cyB3aGljaCBsYXllcnMgc3Vic2Vx
dWVudCBwcm9wZXJ0aWVzIGFyZSBhcHBsaWVkIHRvCi0gICAgaWYgKG1fdW5jb21taXR0ZWRDaGFu
Z2VzICYgKFByZXNlcnZlczNEQ2hhbmdlZCB8IFJlcGxpY2F0ZWRMYXllckNoYW5nZWQpKQotICAg
ICAgICB1cGRhdGVTdHJ1Y3R1cmFsTGF5ZXIoKTsKLQotICAgIGlmIChtX3VuY29tbWl0dGVkQ2hh
bmdlcyAmIE5hbWVDaGFuZ2VkKQotICAgICAgICB1cGRhdGVMYXllck5hbWVzKCk7Ci0KLSAgICBp
ZiAobV91bmNvbW1pdHRlZENoYW5nZXMgJiBDb250ZW50c0ltYWdlQ2hhbmdlZCkgLy8gTmVlZHMg
dG8gaGFwcGVuIGJlZm9yZSBDaGlsZHJlbkNoYW5nZWQKLSAgICAgICAgdXBkYXRlQ29udGVudHNJ
bWFnZSgpOwotICAgICAgICAKLSAgICBpZiAobV91bmNvbW1pdHRlZENoYW5nZXMgJiBDb250ZW50
c01lZGlhTGF5ZXJDaGFuZ2VkKSAvLyBOZWVkcyB0byBoYXBwZW4gYmVmb3JlIENoaWxkcmVuQ2hh
bmdlZAotICAgICAgICB1cGRhdGVDb250ZW50c01lZGlhTGF5ZXIoKTsKLSAgICAKLSAgICBpZiAo
bV91bmNvbW1pdHRlZENoYW5nZXMgJiBDb250ZW50c0NhbnZhc0xheWVyQ2hhbmdlZCkgLy8gTmVl
ZHMgdG8gaGFwcGVuIGJlZm9yZSBDaGlsZHJlbkNoYW5nZWQKLSAgICAgICAgdXBkYXRlQ29udGVu
dHNDYW52YXNMYXllcigpOwotICAgIAotICAgIGlmIChtX3VuY29tbWl0dGVkQ2hhbmdlcyAmIEJh
Y2tncm91bmRDb2xvckNoYW5nZWQpICAvLyBOZWVkcyB0byBoYXBwZW4gYmVmb3JlIENoaWxkcmVu
Q2hhbmdlZCwgYW5kIGFmdGVyIHVwZGF0aW5nIGltYWdlIG9yIHZpZGVvCi0gICAgICAgIHVwZGF0
ZUxheWVyQmFja2dyb3VuZENvbG9yKCk7Ci0KLSAgICBpZiAobV91bmNvbW1pdHRlZENoYW5nZXMg
JiBDaGlsZHJlbkNoYW5nZWQpCi0gICAgICAgIHVwZGF0ZVN1YmxheWVyTGlzdCgpOwotCi0gICAg
aWYgKG1fdW5jb21taXR0ZWRDaGFuZ2VzICYgUG9zaXRpb25DaGFuZ2VkKQotICAgICAgICB1cGRh
dGVMYXllclBvc2l0aW9uKCk7Ci0gICAgCi0gICAgaWYgKG1fdW5jb21taXR0ZWRDaGFuZ2VzICYg
QW5jaG9yUG9pbnRDaGFuZ2VkKQotICAgICAgICB1cGRhdGVBbmNob3JQb2ludCgpOwotICAgIAot
ICAgIGlmIChtX3VuY29tbWl0dGVkQ2hhbmdlcyAmIFNpemVDaGFuZ2VkKQotICAgICAgICB1cGRh
dGVMYXllclNpemUoKTsKLQotICAgIGlmIChtX3VuY29tbWl0dGVkQ2hhbmdlcyAmIFRyYW5zZm9y
bUNoYW5nZWQpCi0gICAgICAgIHVwZGF0ZVRyYW5zZm9ybSgpOwotCi0gICAgaWYgKG1fdW5jb21t
aXR0ZWRDaGFuZ2VzICYgQ2hpbGRyZW5UcmFuc2Zvcm1DaGFuZ2VkKQotICAgICAgICB1cGRhdGVD
aGlsZHJlblRyYW5zZm9ybSgpOwotICAgIAotICAgIGlmIChtX3VuY29tbWl0dGVkQ2hhbmdlcyAm
IE1hc2tzVG9Cb3VuZHNDaGFuZ2VkKQotICAgICAgICB1cGRhdGVNYXNrc1RvQm91bmRzKCk7Ci0g
ICAgCi0gICAgaWYgKG1fdW5jb21taXR0ZWRDaGFuZ2VzICYgRHJhd3NDb250ZW50Q2hhbmdlZCkK
LSAgICAgICAgdXBkYXRlTGF5ZXJEcmF3c0NvbnRlbnQoKTsKLQotICAgIGlmIChtX3VuY29tbWl0
dGVkQ2hhbmdlcyAmIENvbnRlbnRzT3BhcXVlQ2hhbmdlZCkKLSAgICAgICAgdXBkYXRlQ29udGVu
dHNPcGFxdWUoKTsKLQotICAgIGlmIChtX3VuY29tbWl0dGVkQ2hhbmdlcyAmIEJhY2tmYWNlVmlz
aWJpbGl0eUNoYW5nZWQpCi0gICAgICAgIHVwZGF0ZUJhY2tmYWNlVmlzaWJpbGl0eSgpOwotCi0g
ICAgaWYgKG1fdW5jb21taXR0ZWRDaGFuZ2VzICYgT3BhY2l0eUNoYW5nZWQpCi0gICAgICAgIHVw
ZGF0ZU9wYWNpdHlPbkxheWVyKCk7Ci0gICAgCi0gICAgaWYgKG1fdW5jb21taXR0ZWRDaGFuZ2Vz
ICYgQW5pbWF0aW9uQ2hhbmdlZCkKLSAgICAgICAgdXBkYXRlTGF5ZXJBbmltYXRpb25zKCk7Ci0g
ICAgCi0gICAgaWYgKG1fdW5jb21taXR0ZWRDaGFuZ2VzICYgRGlydHlSZWN0c0NoYW5nZWQpCi0g
ICAgICAgIHJlcGFpbnRMYXllckRpcnR5UmVjdHMoKTsKLSAgICAKLSAgICBpZiAobV91bmNvbW1p
dHRlZENoYW5nZXMgJiBDb250ZW50c1JlY3RDaGFuZ2VkKQotICAgICAgICB1cGRhdGVDb250ZW50
c1JlY3QoKTsKLQotICAgIGlmIChtX3VuY29tbWl0dGVkQ2hhbmdlcyAmIE1hc2tMYXllckNoYW5n
ZWQpCi0gICAgICAgIHVwZGF0ZU1hc2tMYXllcigpOwotCi0gICAgaWYgKG1fdW5jb21taXR0ZWRD
aGFuZ2VzICYgQ29udGVudHNOZWVkc0Rpc3BsYXkpCi0gICAgICAgIHVwZGF0ZUNvbnRlbnRzTmVl
ZHNEaXNwbGF5KCk7Ci0KLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi19Ci0KLXZvaWQg
R3JhcGhpY3NMYXllck1hYzo6Y29tbWl0TGF5ZXJDaGFuZ2VzQWZ0ZXJTdWJsYXllcnMoKQotewot
ICAgIGlmICghbV91bmNvbW1pdHRlZENoYW5nZXMpCi0gICAgICAgIHJldHVybjsKLQotICAgIEJF
R0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgaWYgKG1fdW5jb21taXR0ZWRDaGFuZ2Vz
ICYgUmVwbGljYXRlZExheWVyQ2hhbmdlZCkKLSAgICAgICAgdXBkYXRlUmVwbGljYXRlZExheWVy
cygpOwotCi0gICAgbV91bmNvbW1pdHRlZENoYW5nZXMgPSBOb0NoYW5nZTsKLSAgICBFTkRfQkxP
Q0tfT0JKQ19FWENFUFRJT05TCi19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6dXBkYXRlTGF5
ZXJOYW1lcygpCi17Ci0gICAgc3dpdGNoIChzdHJ1Y3R1cmFsTGF5ZXJQdXJwb3NlKCkpIHsKLSAg
ICAgICAgY2FzZSBTdHJ1Y3R1cmFsTGF5ZXJGb3JQcmVzZXJ2ZXMzRDoKLSAgICAgICAgICAgIFtt
X3N0cnVjdHVyYWxMYXllci5nZXQoKSBzZXROYW1lOigiVHJhbnNmb3JtIGxheWVyICIgKyBuYW1l
KCkpXTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFN0cnVjdHVyYWxMYXllckZv
clJlcGxpY2FGbGF0dGVuaW5nOgotICAgICAgICAgICAgW21fc3RydWN0dXJhbExheWVyLmdldCgp
IHNldE5hbWU6KCJSZXBsaWNhIGZsYXR0ZW5pbmcgbGF5ZXIgIiArIG5hbWUoKSldOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTm9TdHJ1Y3R1cmFsTGF5ZXI6Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICB9Ci0gICAgW21fbGF5ZXIuZ2V0KCkgc2V0TmFtZTpuYW1lKCldOwotfQot
Ci12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnVwZGF0ZVN1YmxheWVyTGlzdCgpCi17Ci0gICAgTlNN
dXRhYmxlQXJyYXkqIG5ld1N1YmxheWVycyA9IG5pbDsKLQotICAgIGNvbnN0IFZlY3RvcjxHcmFw
aGljc0xheWVyKj4mIGNoaWxkTGF5ZXJzID0gY2hpbGRyZW4oKTsKLQotICAgIGlmIChtX3N0cnVj
dHVyYWxMYXllciB8fCBtX2NvbnRlbnRzTGF5ZXIgfHwgY2hpbGRMYXllcnMuc2l6ZSgpID4gMCkg
ewotICAgICAgICBuZXdTdWJsYXllcnMgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XTsK
LQotICAgICAgICBpZiAobV9zdHJ1Y3R1cmFsTGF5ZXIpIHsKLSAgICAgICAgICAgIC8vIEFkZCB0
aGUgcmVwbGljYSBsYXllciBmaXJzdC4KLSAgICAgICAgICAgIGlmIChtX3JlcGxpY2FMYXllcikK
LSAgICAgICAgICAgICAgICBbbmV3U3VibGF5ZXJzIGFkZE9iamVjdDpzdGF0aWNfY2FzdDxHcmFw
aGljc0xheWVyTWFjKj4obV9yZXBsaWNhTGF5ZXIpLT5wcmltYXJ5TGF5ZXIoKV07Ci0gICAgICAg
ICAgICAvLyBBZGQgdGhlIHByaW1hcnkgbGF5ZXIuIEV2ZW4gaWYgd2UgaGF2ZSBuZWdhdGl2ZSB6
LW9yZGVyIGNoaWxkcmVuLCB0aGUgcHJpbWFyeSBsYXllciBhbHdheXMgY29tZXMgYmVoaW5kLgot
ICAgICAgICAgICAgW25ld1N1YmxheWVycyBhZGRPYmplY3Q6bV9sYXllci5nZXQoKV07Ci0gICAg
ICAgIH0gZWxzZSBpZiAobV9jb250ZW50c0xheWVyKSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTog
YWRkIHRoZSBjb250ZW50cyBsYXllciBpbiB0aGUgY29ycmVjdCBvcmRlciB3aXRoIG5lZ2F0aXZl
IHotb3JkZXIgY2hpbGRyZW4uCi0gICAgICAgICAgICAvLyBUaGlzIGRvZXMgbm90IGNhdXNlIHZp
c2libGUgcmVuZGVyaW5nIGlzc3VlcyBiZWNhdXNlIGN1cnJlbnRseSBjb250ZW50cyBsYXllcnMg
YXJlIG9ubHkgdXNlZAotICAgICAgICAgICAgLy8gZm9yIHJlcGxhY2VkIGVsZW1lbnRzIHRoYXQg
ZG9uJ3QgaGF2ZSBjaGlsZHJlbi4KLSAgICAgICAgICAgIFtuZXdTdWJsYXllcnMgYWRkT2JqZWN0
Om1fY29udGVudHNMYXllci5nZXQoKV07Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHNp
emVfdCBudW1DaGlsZHJlbiA9IGNoaWxkTGF5ZXJzLnNpemUoKTsKLSAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBudW1DaGlsZHJlbjsgKytpKSB7Ci0gICAgICAgICAgICBHcmFwaGljc0xh
eWVyTWFjKiBjdXJDaGlsZCA9IHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXJNYWMqPihjaGlsZExh
eWVyc1tpXSk7Ci0gICAgICAgICAgICBDQUxheWVyICpjaGlsZExheWVyID0gY3VyQ2hpbGQtPmxh
eWVyRm9yU3VwZXJsYXllcigpOwotICAgICAgICAgICAgW25ld1N1YmxheWVycyBhZGRPYmplY3Q6
Y2hpbGRMYXllcl07Ci0gICAgICAgIH0KLQotICAgICAgICBbbmV3U3VibGF5ZXJzIG1ha2VPYmpl
Y3RzUGVyZm9ybVNlbGVjdG9yOkBzZWxlY3RvcihyZW1vdmVGcm9tU3VwZXJsYXllcildOwotICAg
IH0KLQotICAgIGlmIChtX3N0cnVjdHVyYWxMYXllcikgewotICAgICAgICBzYWZlU2V0U3VibGF5
ZXJzKG1fc3RydWN0dXJhbExheWVyLmdldCgpLCBuZXdTdWJsYXllcnMpOwotCi0gICAgICAgIGlm
IChtX2NvbnRlbnRzTGF5ZXIpIHsKLSAgICAgICAgICAgIC8vIElmIHdlIGhhdmUgYSB0cmFuc2Zv
cm0gbGF5ZXIsIHRoZW4gdGhlIGNvbnRlbnRzIGxheWVyIGlzIHBhcmVudGVkIGluIHRoZSAKLSAg
ICAgICAgICAgIC8vIHByaW1hcnkgbGF5ZXIgKHdoaWNoIGlzIGl0c2VsZiBhIGNoaWxkIG9mIHRo
ZSB0cmFuc2Zvcm0gbGF5ZXIpLgotICAgICAgICAgICAgc2FmZVNldFN1YmxheWVycyhtX2xheWVy
LmdldCgpLCBuaWwpOwotICAgICAgICAgICAgW21fbGF5ZXIuZ2V0KCkgYWRkU3VibGF5ZXI6bV9j
b250ZW50c0xheWVyLmdldCgpXTsKLSAgICAgICAgfQotICAgIH0gZWxzZQotICAgICAgICBzYWZl
U2V0U3VibGF5ZXJzKG1fbGF5ZXIuZ2V0KCksIG5ld1N1YmxheWVycyk7Ci0KLSAgICBbbmV3U3Vi
bGF5ZXJzIHJlbGVhc2VdOwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnVwZGF0ZUxheWVy
UG9zaXRpb24oKQotewotICAgIEZsb2F0U2l6ZSB1c2VkU2l6ZSA9IG1fdXNpbmdUaWxlZExheWVy
ID8gY29uc3RyYWluZWRTaXplKCkgOiBtX3NpemU7Ci0KLSAgICAvLyBQb3NpdGlvbiBpcyBvZmZz
ZXQgb24gdGhlIGxheWVyIGJ5IHRoZSBsYXllciBhbmNob3IgcG9pbnQuCi0gICAgQ0dQb2ludCBw
b3NQb2ludCA9IENHUG9pbnRNYWtlKG1fcG9zaXRpb24ueCgpICsgbV9hbmNob3JQb2ludC54KCkg
KiB1c2VkU2l6ZS53aWR0aCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
X3Bvc2l0aW9uLnkoKSArIG1fYW5jaG9yUG9pbnQueSgpICogdXNlZFNpemUuaGVpZ2h0KCkpOwot
ICAgIAotICAgIFtwcmltYXJ5TGF5ZXIoKSBzZXRQb3NpdGlvbjpwb3NQb2ludF07Ci0KLSAgICBp
ZiAoTGF5ZXJNYXAqIGxheWVyQ2xvbmVNYXAgPSBwcmltYXJ5TGF5ZXJDbG9uZXMoKSkgewotICAg
ICAgICBMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbGF5ZXJDbG9uZU1hcC0+ZW5kKCk7
Ci0gICAgICAgIGZvciAoTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbGF5ZXJDbG9uZU1h
cC0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICBDR1BvaW50IGNsb25l
UG9zaXRpb24gPSBwb3NQb2ludDsKLSAgICAgICAgICAgIGlmIChtX3JlcGxpY2FMYXllciAmJiBp
c1JlcGxpY2F0ZWRSb290Q2xvbmUoaXQtPmZpcnN0KSkgewotICAgICAgICAgICAgICAgIC8vIE1h
aW50YWluIHRoZSBzcGVjaWFsLWNhc2UgcG9zaXRpb24gZm9yIHRoZSByb290IG9mIGEgY2xvbmUg
c3VidHJlZSwKLSAgICAgICAgICAgICAgICAvLyB3aGljaCB3ZSBzZXQgdXAgaW4gcmVwbGljYXRl
ZExheWVyUm9vdCgpLgotICAgICAgICAgICAgICAgIGNsb25lUG9zaXRpb24gPSBwb3NpdGlvbkZv
ckNsb25lUm9vdExheWVyKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBDQUxheWVyICpj
dXJyTGF5ZXIgPSBpdC0+c2Vjb25kLmdldCgpOwotICAgICAgICAgICAgW2N1cnJMYXllciBzZXRQ
b3NpdGlvbjpjbG9uZVBvc2l0aW9uXTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotdm9pZCBHcmFw
aGljc0xheWVyTWFjOjp1cGRhdGVMYXllclNpemUoKQotewotICAgIENHUmVjdCByZWN0ID0gQ0dS
ZWN0TWFrZSgwLCAwLCBtX3NpemUud2lkdGgoKSwgbV9zaXplLmhlaWdodCgpKTsKLSAgICBpZiAo
bV9zdHJ1Y3R1cmFsTGF5ZXIpIHsKLSAgICAgICAgW21fc3RydWN0dXJhbExheWVyLmdldCgpIHNl
dEJvdW5kczpyZWN0XTsKLSAgICAgICAgCi0gICAgICAgIGlmIChMYXllck1hcCogbGF5ZXJDbG9u
ZU1hcCA9IG1fc3RydWN0dXJhbExheWVyQ2xvbmVzLmdldCgpKSB7Ci0gICAgICAgICAgICBMYXll
ck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbGF5ZXJDbG9uZU1hcC0+ZW5kKCk7Ci0gICAgICAg
ICAgICBmb3IgKExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGxheWVyQ2xvbmVNYXAtPmJl
Z2luKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgICAgICAgICBbaXQtPnNlY29uZC5nZXQo
KSBzZXRCb3VuZHM6cmVjdF07Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBUaGUgYW5jaG9yIG9m
IHRoZSBjb250ZW50cyBsYXllciBpcyBhbHdheXMgYXQgMC41LCAwLjUsIHNvIHRoZSBwb3NpdGlv
biBpcyBjZW50ZXItcmVsYXRpdmUuCi0gICAgICAgIENHUG9pbnQgY2VudGVyUG9pbnQgPSBDR1Bv
aW50TWFrZShtX3NpemUud2lkdGgoKSAvIDIuMGYsIG1fc2l6ZS5oZWlnaHQoKSAvIDIuMGYpOwot
ICAgICAgICBbbV9sYXllci5nZXQoKSBzZXRQb3NpdGlvbjpjZW50ZXJQb2ludF07Ci0KLSAgICAg
ICAgaWYgKExheWVyTWFwKiBsYXllckNsb25lTWFwID0gbV9sYXllckNsb25lcy5nZXQoKSkgewot
ICAgICAgICAgICAgTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGxheWVyQ2xvbmVNYXAt
PmVuZCgpOwotICAgICAgICAgICAgZm9yIChMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBs
YXllckNsb25lTWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgICAgICAgICAg
W2l0LT5zZWNvbmQuZ2V0KCkgc2V0UG9zaXRpb246Y2VudGVyUG9pbnRdOwotICAgICAgICB9Ci0g
ICAgfQotICAgIAotICAgIGJvb2wgbmVlZFRpbGVkTGF5ZXIgPSByZXF1aXJlc1RpbGVkTGF5ZXIo
bV9zaXplKTsKLSAgICBpZiAobmVlZFRpbGVkTGF5ZXIgIT0gbV91c2luZ1RpbGVkTGF5ZXIpCi0g
ICAgICAgIHN3YXBGcm9tT3JUb1RpbGVkTGF5ZXIobmVlZFRpbGVkTGF5ZXIpOwotICAgIAotICAg
IGlmIChtX3VzaW5nVGlsZWRMYXllcikgewotICAgICAgICBGbG9hdFNpemUgc2l6ZVRvVXNlID0g
Y29uc3RyYWluZWRTaXplKCk7Ci0gICAgICAgIHJlY3QgPSBDR1JlY3RNYWtlKDAsIDAsIHNpemVU
b1VzZS53aWR0aCgpLCBzaXplVG9Vc2UuaGVpZ2h0KCkpOwotICAgIH0KLSAgICAKLSAgICBbbV9s
YXllci5nZXQoKSBzZXRCb3VuZHM6cmVjdF07Ci0gICAgaWYgKExheWVyTWFwKiBsYXllckNsb25l
TWFwID0gbV9sYXllckNsb25lcy5nZXQoKSkgewotICAgICAgICBMYXllck1hcDo6Y29uc3RfaXRl
cmF0b3IgZW5kID0gbGF5ZXJDbG9uZU1hcC0+ZW5kKCk7Ci0gICAgICAgIGZvciAoTGF5ZXJNYXA6
OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbGF5ZXJDbG9uZU1hcC0+YmVnaW4oKTsgaXQgIT0gZW5kOyAr
K2l0KQotICAgICAgICAgICAgW2l0LT5zZWNvbmQuZ2V0KCkgc2V0Qm91bmRzOnJlY3RdOwotICAg
IH0KLSAgICAKLSAgICAvLyBDb250ZW50cyB0cmFuc2Zvcm0gbWF5IGRlcGVuZCBvbiBoZWlnaHQu
Ci0gICAgdXBkYXRlQ29udGVudHNUcmFuc2Zvcm0oKTsKLQotICAgIC8vIE5vdGUgdGhhdCB3ZSBk
b24ndCByZXNpemUgbV9jb250ZW50c0xheWVyLiBJdCdzIHVwIHRoZSBjYWxsZXIgdG8gZG8gdGhh
dC4KLQotICAgIC8vIGlmIHdlJ3ZlIGNoYW5nZWQgdGhlIGJvdW5kcywgd2UgbmVlZCB0byByZWNh
bGN1bGF0ZSB0aGUgcG9zaXRpb24KLSAgICAvLyBvZiB0aGUgbGF5ZXIsIHRha2luZyBhbmNob3Ig
cG9pbnQgaW50byBhY2NvdW50LgotICAgIHVwZGF0ZUxheWVyUG9zaXRpb24oKTsKLX0KLQotdm9p
ZCBHcmFwaGljc0xheWVyTWFjOjp1cGRhdGVBbmNob3JQb2ludCgpCi17Ci0gICAgW3ByaW1hcnlM
YXllcigpIHNldEFuY2hvclBvaW50OkZsb2F0UG9pbnQobV9hbmNob3JQb2ludC54KCksIG1fYW5j
aG9yUG9pbnQueSgpKV07Ci0jaWYgSEFWRV9NT0RFUk5fUVVBUlRaQ09SRQotICAgIFtwcmltYXJ5
TGF5ZXIoKSBzZXRBbmNob3JQb2ludFo6bV9hbmNob3JQb2ludC56KCldOwotI2VuZGlmCi0KLSAg
ICBpZiAoTGF5ZXJNYXAqIGxheWVyQ2xvbmVNYXAgPSBwcmltYXJ5TGF5ZXJDbG9uZXMoKSkgewot
ICAgICAgICBMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbGF5ZXJDbG9uZU1hcC0+ZW5k
KCk7Ci0gICAgICAgIGZvciAoTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbGF5ZXJDbG9u
ZU1hcC0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7ICAgCi0gICAgICAgICAgICBDQUxheWVy
ICpjdXJyTGF5ZXIgPSBpdC0+c2Vjb25kLmdldCgpOwotICAgICAgICAgICAgW2N1cnJMYXllciBz
ZXRBbmNob3JQb2ludDpGbG9hdFBvaW50KG1fYW5jaG9yUG9pbnQueCgpLCBtX2FuY2hvclBvaW50
LnkoKSldOwotI2lmIEhBVkVfTU9ERVJOX1FVQVJUWkNPUkUKLSAgICAgICAgICAgIFtjdXJyTGF5
ZXIgc2V0QW5jaG9yUG9pbnRaOm1fYW5jaG9yUG9pbnQueigpXTsKLSNlbmRpZgotICAgICAgICB9
Ci0gICAgfQotCi0gICAgdXBkYXRlTGF5ZXJQb3NpdGlvbigpOwotfQotCi12b2lkIEdyYXBoaWNz
TGF5ZXJNYWM6OnVwZGF0ZVRyYW5zZm9ybSgpCi17Ci0gICAgQ0FUcmFuc2Zvcm0zRCB0cmFuc2Zv
cm07Ci0gICAgY29weVRyYW5zZm9ybSh0cmFuc2Zvcm0sIG1fdHJhbnNmb3JtKTsKLSAgICBbcHJp
bWFyeUxheWVyKCkgc2V0VHJhbnNmb3JtOnRyYW5zZm9ybV07Ci0KLSAgICBpZiAoTGF5ZXJNYXAq
IGxheWVyQ2xvbmVNYXAgPSBwcmltYXJ5TGF5ZXJDbG9uZXMoKSkgewotICAgICAgICBMYXllck1h
cDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbGF5ZXJDbG9uZU1hcC0+ZW5kKCk7Ci0gICAgICAgIGZv
ciAoTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbGF5ZXJDbG9uZU1hcC0+YmVnaW4oKTsg
aXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICBDQUxheWVyICpjdXJyTGF5ZXIgPSBpdC0+
c2Vjb25kLmdldCgpOwotICAgICAgICAgICAgaWYgKG1fcmVwbGljYUxheWVyICYmIGlzUmVwbGlj
YXRlZFJvb3RDbG9uZShpdC0+Zmlyc3QpKSB7Ci0gICAgICAgICAgICAgICAgLy8gTWFpbnRhaW4g
dGhlIHNwZWNpYWwtY2FzZSB0cmFuc2Zvcm0gZm9yIHRoZSByb290IG9mIGEgY2xvbmUgc3VidHJl
ZSwKLSAgICAgICAgICAgICAgICAvLyB3aGljaCB3ZSBzZXQgdXAgaW4gcmVwbGljYXRlZExheWVy
Um9vdCgpLgotICAgICAgICAgICAgICAgIFtjdXJyTGF5ZXIgc2V0VHJhbnNmb3JtOkNBVHJhbnNm
b3JtM0RJZGVudGl0eV07Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBbY3Vy
ckxheWVyIHNldFRyYW5zZm9ybTp0cmFuc2Zvcm1dOwotICAgICAgICB9Ci0gICAgfQotfQotCi12
b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnVwZGF0ZUNoaWxkcmVuVHJhbnNmb3JtKCkKLXsKLSAgICBD
QVRyYW5zZm9ybTNEIHRyYW5zZm9ybTsKLSAgICBjb3B5VHJhbnNmb3JtKHRyYW5zZm9ybSwgbV9j
aGlsZHJlblRyYW5zZm9ybSk7Ci0gICAgW3ByaW1hcnlMYXllcigpIHNldFN1YmxheWVyVHJhbnNm
b3JtOnRyYW5zZm9ybV07Ci0KLSAgICBpZiAoTGF5ZXJNYXAqIGxheWVyQ2xvbmVNYXAgPSBwcmlt
YXJ5TGF5ZXJDbG9uZXMoKSkgewotICAgICAgICBMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5k
ID0gbGF5ZXJDbG9uZU1hcC0+ZW5kKCk7Ci0gICAgICAgIGZvciAoTGF5ZXJNYXA6OmNvbnN0X2l0
ZXJhdG9yIGl0ID0gbGF5ZXJDbG9uZU1hcC0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0g
ICAgICAgICAgICBDQUxheWVyICpjdXJyTGF5ZXIgPSBpdC0+c2Vjb25kLmdldCgpOwotICAgICAg
ICAgICAgW2N1cnJMYXllciBzZXRTdWJsYXllclRyYW5zZm9ybTp0cmFuc2Zvcm1dOwotICAgICAg
ICB9Ci0gICAgfQotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnVwZGF0ZU1hc2tzVG9Cb3Vu
ZHMoKQotewotICAgIFttX2xheWVyLmdldCgpIHNldE1hc2tzVG9Cb3VuZHM6bV9tYXNrc1RvQm91
bmRzXTsKLQotICAgIGlmIChMYXllck1hcCogbGF5ZXJDbG9uZU1hcCA9IG1fbGF5ZXJDbG9uZXMu
Z2V0KCkpIHsKLSAgICAgICAgTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGxheWVyQ2xv
bmVNYXAtPmVuZCgpOwotICAgICAgICBmb3IgKExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9
IGxheWVyQ2xvbmVNYXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICAgICAg
Q0FMYXllciAqY3VyckxheWVyID0gaXQtPnNlY29uZC5nZXQoKTsKLSAgICAgICAgICAgIFtjdXJy
TGF5ZXIgc2V0TWFza3NUb0JvdW5kczptX21hc2tzVG9Cb3VuZHNdOwotICAgICAgICB9Ci0gICAg
fQotCi0gICAgdXBkYXRlRGVidWdJbmRpY2F0b3JzKCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXll
ck1hYzo6dXBkYXRlQ29udGVudHNPcGFxdWUoKQotewotICAgIFttX2xheWVyLmdldCgpIHNldE9w
YXF1ZTptX2NvbnRlbnRzT3BhcXVlXTsKLQotICAgIGlmIChMYXllck1hcCogbGF5ZXJDbG9uZU1h
cCA9IG1fbGF5ZXJDbG9uZXMuZ2V0KCkpIHsKLSAgICAgICAgTGF5ZXJNYXA6OmNvbnN0X2l0ZXJh
dG9yIGVuZCA9IGxheWVyQ2xvbmVNYXAtPmVuZCgpOwotICAgICAgICBmb3IgKExheWVyTWFwOjpj
b25zdF9pdGVyYXRvciBpdCA9IGxheWVyQ2xvbmVNYXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytp
dCkgewotICAgICAgICAgICAgQ0FMYXllciAqY3VyckxheWVyID0gaXQtPnNlY29uZC5nZXQoKTsK
LSAgICAgICAgICAgIFtjdXJyTGF5ZXIgc2V0T3BhcXVlOm1fY29udGVudHNPcGFxdWVdOwotICAg
ICAgICB9Ci0gICAgfQotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnVwZGF0ZUJhY2tmYWNl
VmlzaWJpbGl0eSgpCi17Ci0gICAgaWYgKG1fc3RydWN0dXJhbExheWVyICYmIHN0cnVjdHVyYWxM
YXllclB1cnBvc2UoKSA9PSBTdHJ1Y3R1cmFsTGF5ZXJGb3JSZXBsaWNhRmxhdHRlbmluZykgewot
ICAgICAgICBbbV9zdHJ1Y3R1cmFsTGF5ZXIuZ2V0KCkgc2V0RG91YmxlU2lkZWQ6bV9iYWNrZmFj
ZVZpc2liaWxpdHldOwotCi0gICAgICAgIGlmIChMYXllck1hcCogbGF5ZXJDbG9uZU1hcCA9IG1f
c3RydWN0dXJhbExheWVyQ2xvbmVzLmdldCgpKSB7Ci0gICAgICAgICAgICBMYXllck1hcDo6Y29u
c3RfaXRlcmF0b3IgZW5kID0gbGF5ZXJDbG9uZU1hcC0+ZW5kKCk7Ci0gICAgICAgICAgICBmb3Ig
KExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGxheWVyQ2xvbmVNYXAtPmJlZ2luKCk7IGl0
ICE9IGVuZDsgKytpdCkgewotICAgICAgICAgICAgICAgIENBTGF5ZXIgKmN1cnJMYXllciA9IGl0
LT5zZWNvbmQuZ2V0KCk7Ci0gICAgICAgICAgICAgICAgW2N1cnJMYXllciBzZXREb3VibGVTaWRl
ZDptX2JhY2tmYWNlVmlzaWJpbGl0eV07Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9
Ci0KLSAgICBbbV9sYXllci5nZXQoKSBzZXREb3VibGVTaWRlZDptX2JhY2tmYWNlVmlzaWJpbGl0
eV07Ci0KLSAgICBpZiAoTGF5ZXJNYXAqIGxheWVyQ2xvbmVNYXAgPSBtX2xheWVyQ2xvbmVzLmdl
dCgpKSB7Ci0gICAgICAgIExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBsYXllckNsb25l
TWFwLT5lbmQoKTsKLSAgICAgICAgZm9yIChMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBs
YXllckNsb25lTWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgICAgIENB
TGF5ZXIgKmN1cnJMYXllciA9IGl0LT5zZWNvbmQuZ2V0KCk7Ci0gICAgICAgICAgICBbY3Vyckxh
eWVyIHNldERvdWJsZVNpZGVkOm1fYmFja2ZhY2VWaXNpYmlsaXR5XTsKLSAgICAgICAgfQotICAg
IH0KLX0KLQotdm9pZCBHcmFwaGljc0xheWVyTWFjOjp1cGRhdGVTdHJ1Y3R1cmFsTGF5ZXIoKQot
ewotICAgIGVuc3VyZVN0cnVjdHVyYWxMYXllcihzdHJ1Y3R1cmFsTGF5ZXJQdXJwb3NlKCkpOwot
fQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OmVuc3VyZVN0cnVjdHVyYWxMYXllcihTdHJ1Y3R1
cmFsTGF5ZXJQdXJwb3NlIHB1cnBvc2UpCi17Ci0gICAgaWYgKHB1cnBvc2UgPT0gTm9TdHJ1Y3R1
cmFsTGF5ZXIpIHsKLSAgICAgICAgaWYgKG1fc3RydWN0dXJhbExheWVyKSB7Ci0gICAgICAgICAg
ICAvLyBSZXBsYWNlIHRoZSB0cmFuc2Zvcm1MYXllciBpbiB0aGUgcGFyZW50IHdpdGggdGhpcyBs
YXllci4KLSAgICAgICAgICAgIFttX2xheWVyLmdldCgpIHJlbW92ZUZyb21TdXBlcmxheWVyXTsK
LSAgICAgICAgICAgIFtbbV9zdHJ1Y3R1cmFsTGF5ZXIuZ2V0KCkgc3VwZXJsYXllcl0gcmVwbGFj
ZVN1YmxheWVyOm1fc3RydWN0dXJhbExheWVyLmdldCgpIHdpdGg6bV9sYXllci5nZXQoKV07Ci0K
LSAgICAgICAgICAgIG1vdmVPckNvcHlBbmltYXRpb25zRm9yUHJvcGVydHkoTW92ZSwgQW5pbWF0
ZWRQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybSwgbV9zdHJ1Y3R1cmFsTGF5ZXIuZ2V0KCksIG1fbGF5
ZXIuZ2V0KCkpOwotICAgICAgICAgICAgbW92ZU9yQ29weUFuaW1hdGlvbnNGb3JQcm9wZXJ0eShN
b3ZlLCBBbmltYXRlZFByb3BlcnR5T3BhY2l0eSwgbV9zdHJ1Y3R1cmFsTGF5ZXIuZ2V0KCksIG1f
bGF5ZXIuZ2V0KCkpOwotCi0gICAgICAgICAgICAvLyBSZWxlYXNlIHRoZSBzdHJ1Y3R1cmFsIGxh
eWVyLgotICAgICAgICAgICAgbV9zdHJ1Y3R1cmFsTGF5ZXIgPSAwOwotCi0gICAgICAgICAgICAv
LyBVcGRhdGUgdGhlIHByb3BlcnRpZXMgb2YgbV9sYXllciBub3cgdGhhdCB3ZSBubyBsb25nZXIg
aGF2ZSBhIHN0cnVjdHVyYWwgbGF5ZXIuCi0gICAgICAgICAgICB1cGRhdGVMYXllclBvc2l0aW9u
KCk7Ci0gICAgICAgICAgICB1cGRhdGVMYXllclNpemUoKTsKLSAgICAgICAgICAgIHVwZGF0ZUFu
Y2hvclBvaW50KCk7Ci0gICAgICAgICAgICB1cGRhdGVUcmFuc2Zvcm0oKTsKLSAgICAgICAgICAg
IHVwZGF0ZUNoaWxkcmVuVHJhbnNmb3JtKCk7Ci0KLSAgICAgICAgICAgIHVwZGF0ZVN1YmxheWVy
TGlzdCgpOwotICAgICAgICAgICAgdXBkYXRlT3BhY2l0eU9uTGF5ZXIoKTsKLSAgICAgICAgfQot
ICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAotICAgIGJvb2wgc3RydWN0dXJhbExheWVyQ2hh
bmdlZCA9IGZhbHNlOwotICAgIAotICAgIGlmIChwdXJwb3NlID09IFN0cnVjdHVyYWxMYXllckZv
clByZXNlcnZlczNEKSB7Ci0gICAgICAgIENsYXNzIHRyYW5zZm9ybUxheWVyQ2xhc3MgPSBOU0Ns
YXNzRnJvbVN0cmluZyhAIkNBVHJhbnNmb3JtTGF5ZXIiKTsKLSAgICAgICAgaWYgKCF0cmFuc2Zv
cm1MYXllckNsYXNzKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmIChtX3N0cnVj
dHVyYWxMYXllciAmJiAhW21fc3RydWN0dXJhbExheWVyLmdldCgpIGlzS2luZE9mQ2xhc3M6dHJh
bnNmb3JtTGF5ZXJDbGFzc10pCi0gICAgICAgICAgICBtX3N0cnVjdHVyYWxMYXllciA9IDA7Ci0g
ICAgICAgIAotICAgICAgICBpZiAoIW1fc3RydWN0dXJhbExheWVyKSB7Ci0gICAgICAgICAgICBt
X3N0cnVjdHVyYWxMYXllci5hZG9wdE5TKFtbdHJhbnNmb3JtTGF5ZXJDbGFzcyBhbGxvY10gaW5p
dF0pOwotICAgICAgICAgICAgc3RydWN0dXJhbExheWVyQ2hhbmdlZCA9IHRydWU7Ci0gICAgICAg
IH0KLSAgICB9IGVsc2UgewotICAgICAgICBpZiAobV9zdHJ1Y3R1cmFsTGF5ZXIgJiYgIVttX3N0
cnVjdHVyYWxMYXllci5nZXQoKSBpc01lbWJlck9mQ2xhc3M6W0NBTGF5ZXIgc2VsZl1dKQotICAg
ICAgICAgICAgbV9zdHJ1Y3R1cmFsTGF5ZXIgPSAwOwotCi0gICAgICAgIGlmICghbV9zdHJ1Y3R1
cmFsTGF5ZXIpIHsKLSAgICAgICAgICAgIG1fc3RydWN0dXJhbExheWVyLmFkb3B0TlMoW1tDQUxh
eWVyIGFsbG9jXSBpbml0XSk7Ci0gICAgICAgICAgICBzdHJ1Y3R1cmFsTGF5ZXJDaGFuZ2VkID0g
dHJ1ZTsKLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICBpZiAoIXN0cnVjdHVyYWxMYXllckNo
YW5nZWQpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICAvLyBUdXJuIG9mZiBkZWZhdWx0IGFu
aW1hdGlvbnMuCi0gICAgW21fc3RydWN0dXJhbExheWVyLmdldCgpIHNldFN0eWxlOltOU0RpY3Rp
b25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3Q6bnVsbEFjdGlvbnNEaWN0aW9uYXJ5KCkgZm9yS2V5
OkAiYWN0aW9ucyJdXTsKLQotICAgIHVwZGF0ZUxheWVyTmFtZXMoKTsKLQotICAgIC8vIFVwZGF0
ZSB0aGUgcHJvcGVydGllcyBvZiB0aGUgc3RydWN0dXJhbCBsYXllci4KLSAgICB1cGRhdGVMYXll
clBvc2l0aW9uKCk7Ci0gICAgdXBkYXRlTGF5ZXJTaXplKCk7Ci0gICAgdXBkYXRlQW5jaG9yUG9p
bnQoKTsKLSAgICB1cGRhdGVUcmFuc2Zvcm0oKTsKLSAgICB1cGRhdGVDaGlsZHJlblRyYW5zZm9y
bSgpOwotICAgIHVwZGF0ZUJhY2tmYWNlVmlzaWJpbGl0eSgpOwotICAgIAotICAgIC8vIFNldCBw
cm9wZXJ0aWVzIG9mIG1fbGF5ZXIgdG8gdGhlaXIgZGVmYXVsdCB2YWx1ZXMsIHNpbmNlIHRoZXNl
IGFyZSBleHByZXNzZWQgb24gb24gdGhlIHN0cnVjdHVyYWwgbGF5ZXIuCi0gICAgQ0dQb2ludCBw
b2ludCA9IENHUG9pbnRNYWtlKG1fc2l6ZS53aWR0aCgpIC8gMi4wZiwgbV9zaXplLmhlaWdodCgp
IC8gMi4wZik7Ci0gICAgW21fbGF5ZXIuZ2V0KCkgc2V0UG9zaXRpb246cG9pbnRdOwotICAgIFtt
X2xheWVyLmdldCgpIHNldEFuY2hvclBvaW50OkNHUG9pbnRNYWtlKDAuNWYsIDAuNWYpXTsKLSAg
ICBbbV9sYXllci5nZXQoKSBzZXRUcmFuc2Zvcm06Q0FUcmFuc2Zvcm0zRElkZW50aXR5XTsKLSAg
ICBbbV9sYXllci5nZXQoKSBzZXRPcGFjaXR5OjFdOwotCi0gICAgLy8gTW92ZSB0aGlzIGxheWVy
IHRvIGJlIGEgY2hpbGQgb2YgdGhlIHRyYW5zZm9ybSBsYXllci4KLSAgICBbW21fbGF5ZXIuZ2V0
KCkgc3VwZXJsYXllcl0gcmVwbGFjZVN1YmxheWVyOm1fbGF5ZXIuZ2V0KCkgd2l0aDptX3N0cnVj
dHVyYWxMYXllci5nZXQoKV07Ci0gICAgW21fc3RydWN0dXJhbExheWVyLmdldCgpIGFkZFN1Ymxh
eWVyOm1fbGF5ZXIuZ2V0KCldOwotCi0gICAgbW92ZU9yQ29weUFuaW1hdGlvbnNGb3JQcm9wZXJ0
eShNb3ZlLCBBbmltYXRlZFByb3BlcnR5V2Via2l0VHJhbnNmb3JtLCBtX2xheWVyLmdldCgpLCBt
X3N0cnVjdHVyYWxMYXllci5nZXQoKSk7Ci0gICAgbW92ZU9yQ29weUFuaW1hdGlvbnNGb3JQcm9w
ZXJ0eShNb3ZlLCBBbmltYXRlZFByb3BlcnR5T3BhY2l0eSwgbV9sYXllci5nZXQoKSwgbV9zdHJ1
Y3R1cmFsTGF5ZXIuZ2V0KCkpOwotICAgIAotICAgIHVwZGF0ZVN1YmxheWVyTGlzdCgpOwotICAg
IHVwZGF0ZU9wYWNpdHlPbkxheWVyKCk7Ci19Ci0KLUdyYXBoaWNzTGF5ZXJNYWM6OlN0cnVjdHVy
YWxMYXllclB1cnBvc2UgR3JhcGhpY3NMYXllck1hYzo6c3RydWN0dXJhbExheWVyUHVycG9zZSgp
IGNvbnN0Ci17Ci0gICAgaWYgKHByZXNlcnZlczNEKCkpCi0gICAgICAgIHJldHVybiBTdHJ1Y3R1
cmFsTGF5ZXJGb3JQcmVzZXJ2ZXMzRDsKLSAgICAKLSAgICBpZiAoaXNSZXBsaWNhdGVkKCkpCi0g
ICAgICAgIHJldHVybiBTdHJ1Y3R1cmFsTGF5ZXJGb3JSZXBsaWNhRmxhdHRlbmluZzsKLSAgICAK
LSAgICByZXR1cm4gTm9TdHJ1Y3R1cmFsTGF5ZXI7Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1h
Yzo6dXBkYXRlTGF5ZXJEcmF3c0NvbnRlbnQoKQotewotICAgIGJvb2wgbmVlZFRpbGVkTGF5ZXIg
PSByZXF1aXJlc1RpbGVkTGF5ZXIobV9zaXplKTsKLSAgICBpZiAobmVlZFRpbGVkTGF5ZXIgIT0g
bV91c2luZ1RpbGVkTGF5ZXIpCi0gICAgICAgIHN3YXBGcm9tT3JUb1RpbGVkTGF5ZXIobmVlZFRp
bGVkTGF5ZXIpOwotCi0gICAgaWYgKG1fZHJhd3NDb250ZW50KQotICAgICAgICBbbV9sYXllci5n
ZXQoKSBzZXROZWVkc0Rpc3BsYXldOwotICAgIGVsc2UKLSAgICAgICAgW21fbGF5ZXIuZ2V0KCkg
c2V0Q29udGVudHM6bmlsXTsKLQotICAgIHVwZGF0ZURlYnVnSW5kaWNhdG9ycygpOwotfQotCi12
b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnVwZGF0ZUxheWVyQmFja2dyb3VuZENvbG9yKCkKLXsKLSAg
ICBpZiAoIW1fY29udGVudHNMYXllcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gV2UgbmV2
ZXIgY3JlYXRlIHRoZSBjb250ZW50cyBsYXllciBqdXN0IGZvciBiYWNrZ3JvdW5kIGNvbG9yIHll
dC4KLSAgICBpZiAobV9iYWNrZ3JvdW5kQ29sb3JTZXQpCi0gICAgICAgIHNldExheWVyQmFja2dy
b3VuZENvbG9yKG1fY29udGVudHNMYXllci5nZXQoKSwgbV9iYWNrZ3JvdW5kQ29sb3IpOwotICAg
IGVsc2UKLSAgICAgICAgY2xlYXJMYXllckJhY2tncm91bmRDb2xvcihtX2NvbnRlbnRzTGF5ZXIu
Z2V0KCkpOwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnVwZGF0ZUNvbnRlbnRzSW1hZ2Uo
KQotewotICAgIGlmIChtX3BlbmRpbmdDb250ZW50c0ltYWdlKSB7Ci0gICAgICAgIGlmICghbV9j
b250ZW50c0xheWVyLmdldCgpKSB7Ci0gICAgICAgICAgICBXZWJMYXllciogaW1hZ2VMYXllciA9
IFtXZWJMYXllciBsYXllcl07Ci0jaWZuZGVmIE5ERUJVRwotICAgICAgICAgICAgW2ltYWdlTGF5
ZXIgc2V0TmFtZTpAIkltYWdlIExheWVyIl07Ci0jZW5kaWYKLSAgICAgICAgICAgIHNldHVwQ29u
dGVudHNMYXllcihpbWFnZUxheWVyKTsKLSAgICAgICAgICAgIG1fY29udGVudHNMYXllci5hZG9w
dE5TKFtpbWFnZUxheWVyIHJldGFpbl0pOwotICAgICAgICAgICAgLy8gbV9jb250ZW50c0xheWVy
IHdpbGwgYmUgcGFyZW50ZWQgYnkgdXBkYXRlU3VibGF5ZXJMaXN0Ci0gICAgICAgIH0KLQotICAg
ICAgICAvLyBGSVhNRTogbWF5YmUgb25seSBkbyB0cmlsaW5lYXIgaWYgdGhlIGltYWdlIGlzIGJl
aW5nIHNjYWxlZCBkb3duLAotICAgICAgICAvLyBidXQgdGhlbiB3aGF0IGlmIHRoZSBsYXllciBz
aXplIGNoYW5nZXM/Ci0jaWYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFkZWZpbmVk
KEJVSUxESU5HX09OX0xFT1BBUkQpCi0gICAgICAgIFttX2NvbnRlbnRzTGF5ZXIuZ2V0KCkgc2V0
TWluaWZpY2F0aW9uRmlsdGVyOmtDQUZpbHRlclRyaWxpbmVhcl07Ci0jZW5kaWYKLSAgICAgICAg
W21fY29udGVudHNMYXllci5nZXQoKSBzZXRDb250ZW50czooaWQpbV9wZW5kaW5nQ29udGVudHNJ
bWFnZS5nZXQoKV07Ci0gICAgICAgIG1fcGVuZGluZ0NvbnRlbnRzSW1hZ2UgPSAwOwotCi0gICAg
ICAgIGlmIChtX2NvbnRlbnRzTGF5ZXJDbG9uZXMpIHsKLSAgICAgICAgICAgIExheWVyTWFwOjpj
b25zdF9pdGVyYXRvciBlbmQgPSBtX2NvbnRlbnRzTGF5ZXJDbG9uZXMtPmVuZCgpOwotICAgICAg
ICAgICAgZm9yIChMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2NvbnRlbnRzTGF5ZXJD
bG9uZXMtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgICAgICAgICBbaXQtPnNl
Y29uZC5nZXQoKSBzZXRDb250ZW50czpbbV9jb250ZW50c0xheWVyLmdldCgpIGNvbnRlbnRzXV07
Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHVwZGF0ZUNvbnRlbnRzUmVjdCgpOwotICAg
IH0gZWxzZSB7Ci0gICAgICAgIC8vIE5vIGltYWdlLgotICAgICAgICAvLyBtX2NvbnRlbnRzTGF5
ZXIgd2lsbCBiZSByZW1vdmVkIHZpYSB1cGRhdGVTdWJsYXllckxpc3QuCi0gICAgICAgIG1fY29u
dGVudHNMYXllciA9IDA7Ci0gICAgfQotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnVwZGF0
ZUNvbnRlbnRzTWVkaWFMYXllcigpCi17Ci0gICAgLy8gVmlkZW8gbGF5ZXIgd2FzIHNldCBhcyBt
X2NvbnRlbnRzTGF5ZXIsIGFuZCB3aWxsIGdldCBwYXJlbnRlZCBpbiB1cGRhdGVTdWJsYXllckxp
c3QoKS4KLSAgICBpZiAobV9jb250ZW50c0xheWVyKSB7Ci0gICAgICAgIHNldHVwQ29udGVudHNM
YXllcihtX2NvbnRlbnRzTGF5ZXIuZ2V0KCkpOwotICAgICAgICB1cGRhdGVDb250ZW50c1JlY3Qo
KTsKLSAgICB9Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6dXBkYXRlQ29udGVudHNDYW52
YXNMYXllcigpCi17Ci0gICAgLy8gQ2FudmFzTGF5ZXIgd2FzIHNldCBhcyBtX2NvbnRlbnRzTGF5
ZXIsIGFuZCB3aWxsIGdldCBwYXJlbnRlZCBpbiB1cGRhdGVTdWJsYXllckxpc3QoKS4KLSAgICBp
ZiAobV9jb250ZW50c0xheWVyKSB7Ci0gICAgICAgIHNldHVwQ29udGVudHNMYXllcihtX2NvbnRl
bnRzTGF5ZXIuZ2V0KCkpOwotICAgICAgICBbbV9jb250ZW50c0xheWVyLmdldCgpIHNldE5lZWRz
RGlzcGxheV07Ci0gICAgICAgIHVwZGF0ZUNvbnRlbnRzUmVjdCgpOwotICAgIH0KLX0KLQotdm9p
ZCBHcmFwaGljc0xheWVyTWFjOjp1cGRhdGVDb250ZW50c1JlY3QoKQotewotICAgIGlmICghbV9j
b250ZW50c0xheWVyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBDR1BvaW50IHBvaW50ID0gQ0dQ
b2ludE1ha2UobV9jb250ZW50c1JlY3QueCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtX2NvbnRlbnRzUmVjdC55KCkpOwotICAgIENHUmVjdCByZWN0ID0gQ0dSZWN0TWFrZSgw
LjBmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjBmLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtX2NvbnRlbnRzUmVjdC53aWR0aCgpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtX2NvbnRlbnRzUmVjdC5oZWlnaHQoKSk7Ci0KLSAgICBbbV9jb250ZW50c0xh
eWVyLmdldCgpIHNldFBvc2l0aW9uOnBvaW50XTsKLSAgICBbbV9jb250ZW50c0xheWVyLmdldCgp
IHNldEJvdW5kczpyZWN0XTsKLQotICAgIGlmIChtX2NvbnRlbnRzTGF5ZXJDbG9uZXMpIHsKLSAg
ICAgICAgTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fY29udGVudHNMYXllckNsb25l
cy0+ZW5kKCk7Ci0gICAgICAgIGZvciAoTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9j
b250ZW50c0xheWVyQ2xvbmVzLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAg
ICAgIENBTGF5ZXIgKmN1cnJMYXllciA9IGl0LT5zZWNvbmQuZ2V0KCk7Ci0gICAgICAgICAgICBb
Y3VyckxheWVyIHNldFBvc2l0aW9uOnBvaW50XTsKLSAgICAgICAgICAgIFtjdXJyTGF5ZXIgc2V0
Qm91bmRzOnJlY3RdOwotICAgICAgICB9Ci0gICAgfQotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJN
YWM6OnVwZGF0ZU1hc2tMYXllcigpCi17Ci0gICAgQ0FMYXllciAqbWFza0NBTGF5ZXIgPSBtX21h
c2tMYXllciA/IG1fbWFza0xheWVyLT5wbGF0Zm9ybUxheWVyKCkgOiAwOwotICAgIFttX2xheWVy
LmdldCgpIHNldE1hc2s6bWFza0NBTGF5ZXJdOwotCi0gICAgTGF5ZXJNYXAqIG1hc2tMYXllckNs
b25lTWFwID0gbV9tYXNrTGF5ZXIgPyBzdGF0aWNfY2FzdDxHcmFwaGljc0xheWVyTWFjKj4obV9t
YXNrTGF5ZXIpLT5wcmltYXJ5TGF5ZXJDbG9uZXMoKSA6IDA7Ci0gICAgCi0gICAgaWYgKExheWVy
TWFwKiBsYXllckNsb25lTWFwID0gbV9sYXllckNsb25lcy5nZXQoKSkgewotICAgICAgICBMYXll
ck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbGF5ZXJDbG9uZU1hcC0+ZW5kKCk7Ci0gICAgICAg
IGZvciAoTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbGF5ZXJDbG9uZU1hcC0+YmVnaW4o
KTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICBDQUxheWVyICpjdXJyTGF5ZXIgPSBp
dC0+c2Vjb25kLmdldCgpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBDQUxheWVyICptYXNr
Q2xvbmUgPSBtYXNrTGF5ZXJDbG9uZU1hcCA/IG1hc2tMYXllckNsb25lTWFwLT5nZXQoaXQtPmZp
cnN0KS5nZXQoKSA6IDA7Ci0gICAgICAgICAgICBbY3VyckxheWVyIHNldE1hc2s6bWFza0Nsb25l
XTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotdm9pZCBHcmFwaGljc0xheWVyTWFjOjp1cGRhdGVS
ZXBsaWNhdGVkTGF5ZXJzKCkKLXsKLSAgICAvLyBDbG9uZSB0aGUgZGVzY2VuZGFudHMgb2YgdGhl
IHJlcGxpY2F0ZWQgbGF5ZXIsIGFuZCBwYXJlbnQgdW5kZXIgdXMuCi0gICAgUmVwbGljYVN0YXRl
IHJlcGxpY2FTdGF0ZShSZXBsaWNhU3RhdGU6OlJlcGxpY2FCcmFuY2gpOwotCi0gICAgQ0FMYXll
ciAqcmVwbGljYVJvb3QgPSByZXBsaWNhdGVkTGF5ZXJSb290KHJlcGxpY2FTdGF0ZSk7Ci0gICAg
aWYgKCFyZXBsaWNhUm9vdCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKG1fc3RydWN0dXJh
bExheWVyKQotICAgICAgICBbbV9zdHJ1Y3R1cmFsTGF5ZXIuZ2V0KCkgaW5zZXJ0U3VibGF5ZXI6
cmVwbGljYVJvb3QgYXRJbmRleDowXTsKLSAgICBlbHNlCi0gICAgICAgIFttX2xheWVyLmdldCgp
IGluc2VydFN1YmxheWVyOnJlcGxpY2FSb290IGF0SW5kZXg6MF07Ci19Ci0KLS8vIEZvciBub3cs
IHRoaXMgYXNzdW1lcyB0aGF0IGxheWVycyBvbmx5IGV2ZXIgaGF2ZSBvbmUgcmVwbGljYSwgc28g
cmVwbGljYUluZGljZXMgY29udGFpbnMgb25seSAwIGFuZCAxLgotR3JhcGhpY3NMYXllck1hYzo6
Q2xvbmVJRCBHcmFwaGljc0xheWVyTWFjOjpSZXBsaWNhU3RhdGU6OmNsb25lSUQoKSBjb25zdAot
ewotICAgIHNpemVfdCBkZXB0aCA9IG1fcmVwbGljYUJyYW5jaGVzLnNpemUoKTsKLQotICAgIGNv
bnN0IHNpemVfdCBiaXRzUGVyVUNoYXIgPSBzaXplb2YoVUNoYXIpICogODsKLSAgICBzaXplX3Qg
dmVjdG9yU2l6ZSA9IChkZXB0aCArIGJpdHNQZXJVQ2hhciAtIDEpIC8gYml0c1BlclVDaGFyOwot
ICAgIAotICAgIFZlY3RvcjxVQ2hhcj4gcmVzdWx0KHZlY3RvclNpemUpOwotICAgIHJlc3VsdC5m
aWxsKDApOwotCi0gICAgLy8gQ3JlYXRlIGEgc3RyaW5nIGZyb20gdGhlIGJpdCBzZXF1ZW5jZSB3
aGljaCB3ZSBjYW4gdXNlIHRvIGlkZW50aWZ5IHRoZSBjbG9uZS4KLSAgICAvLyBOb3RlIHRoYXQg
dGhlIHN0cmluZyBtYXkgY29udGFpbiBlbWJlZGRlZCBudWxscywgYnV0IHRoYXQncyBPSy4KLSAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGRlcHRoOyArK2kpIHsKLSAgICAgICAgVUNoYXImIGN1
cnJDaGFyID0gcmVzdWx0W2kgLyBiaXRzUGVyVUNoYXJdOwotICAgICAgICBjdXJyQ2hhciA9IChj
dXJyQ2hhciA8PCAxKSB8IG1fcmVwbGljYUJyYW5jaGVzW2ldOwotICAgIH0KLSAgICAKLSAgICBy
ZXR1cm4gU3RyaW5nOjphZG9wdChyZXN1bHQpOwotfQotCi1DQUxheWVyICpHcmFwaGljc0xheWVy
TWFjOjpyZXBsaWNhdGVkTGF5ZXJSb290KFJlcGxpY2FTdGF0ZSYgcmVwbGljYVN0YXRlKQotewot
ICAgIC8vIExpbWl0IHJlcGxpY2EgbmVzdGluZywgdG8gYXZvaWQgMl5OIGV4cGxvc2lvbiBvZiBy
ZXBsaWNhIGxheWVycy4KLSAgICBpZiAoIW1fcmVwbGljYXRlZExheWVyIHx8IHJlcGxpY2FTdGF0
ZS5yZXBsaWNhRGVwdGgoKSA9PSBSZXBsaWNhU3RhdGU6Om1heFJlcGxpY2FEZXB0aCkKLSAgICAg
ICAgcmV0dXJuIG5pbDsKLQotICAgIEdyYXBoaWNzTGF5ZXJNYWMqIHJlcGxpY2F0ZWRMYXllciA9
IHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXJNYWMqPihtX3JlcGxpY2F0ZWRMYXllcik7Ci0gICAg
Ci0gICAgQ0FMYXllciAqY2xvbmVkTGF5ZXJSb290ID0gcmVwbGljYXRlZExheWVyLT5mZXRjaENs
b25lTGF5ZXJzKHRoaXMsIHJlcGxpY2FTdGF0ZSwgUm9vdENsb25lTGV2ZWwpOwotICAgIEZsb2F0
UG9pbnQgY2xvbmVSb290UG9zaXRpb24gPSByZXBsaWNhdGVkTGF5ZXItPnBvc2l0aW9uRm9yQ2xv
bmVSb290TGF5ZXIoKTsKLQotICAgIC8vIFJlcGxpY2Egcm9vdCBoYXMgbm8gb2Zmc2V0IG9yIHRy
YW5zZm9ybQotICAgIFtjbG9uZWRMYXllclJvb3Qgc2V0UG9zaXRpb246Y2xvbmVSb290UG9zaXRp
b25dOwotICAgIFtjbG9uZWRMYXllclJvb3Qgc2V0VHJhbnNmb3JtOkNBVHJhbnNmb3JtM0RJZGVu
dGl0eV07Ci0KLSAgICByZXR1cm4gY2xvbmVkTGF5ZXJSb290OwotfQotCi12b2lkIEdyYXBoaWNz
TGF5ZXJNYWM6OnVwZGF0ZUxheWVyQW5pbWF0aW9ucygpCi17Ci0gICAgaWYgKG1fYW5pbWF0aW9u
c1RvUHJvY2Vzcy5zaXplKCkpIHsKLSAgICAgICAgQW5pbWF0aW9uc1RvUHJvY2Vzc01hcDo6Y29u
c3RfaXRlcmF0b3IgZW5kID0gbV9hbmltYXRpb25zVG9Qcm9jZXNzLmVuZCgpOwotICAgICAgICBm
b3IgKEFuaW1hdGlvbnNUb1Byb2Nlc3NNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9hbmltYXRp
b25zVG9Qcm9jZXNzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICAgICAgY29u
c3QgU3RyaW5nJiBjdXJyQW5pbWF0aW9uTmFtZSA9IGl0LT5maXJzdDsKLSAgICAgICAgICAgIEFu
aW1hdGlvbnNNYXA6Oml0ZXJhdG9yIGFuaW1hdGlvbkl0ID0gbV9ydW5uaW5nQW5pbWF0aW9ucy5m
aW5kKGN1cnJBbmltYXRpb25OYW1lKTsKLSAgICAgICAgICAgIGlmIChhbmltYXRpb25JdCA9PSBt
X3J1bm5pbmdBbmltYXRpb25zLmVuZCgpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0g
ICAgICAgICAgICBjb25zdCBBbmltYXRpb25Qcm9jZXNzaW5nQWN0aW9uJiBwcm9jZXNzaW5nSW5m
byA9IGl0LT5zZWNvbmQ7Ci0gICAgICAgICAgICBjb25zdCBWZWN0b3I8TGF5ZXJQcm9wZXJ0eUFu
aW1hdGlvbj4mIGFuaW1hdGlvbnMgPSBhbmltYXRpb25JdC0+c2Vjb25kOwotICAgICAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBhbmltYXRpb25zLnNpemUoKTsgKytpKSB7Ci0gICAgICAg
ICAgICAgICAgY29uc3QgTGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbiYgY3VyckFuaW1hdGlvbiA9IGFu
aW1hdGlvbnNbaV07Ci0gICAgICAgICAgICAgICAgc3dpdGNoIChwcm9jZXNzaW5nSW5mby5hY3Rp
b24pIHsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBSZW1vdmU6Ci0gICAgICAgICAgICAgICAg
ICAgICAgICByZW1vdmVDQUFuaW1hdGlvbkZyb21MYXllcihjdXJyQW5pbWF0aW9uLm1fcHJvcGVy
dHksIGN1cnJBbmltYXRpb25OYW1lLCBjdXJyQW5pbWF0aW9uLm1faW5kZXgpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgUGF1c2U6Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBwYXVzZUNBQW5pbWF0aW9uT25MYXllcihjdXJyQW5pbWF0
aW9uLm1fcHJvcGVydHksIGN1cnJBbmltYXRpb25OYW1lLCBjdXJyQW5pbWF0aW9uLm1faW5kZXgs
IHByb2Nlc3NpbmdJbmZvLnRpbWVPZmZzZXQpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAo
cHJvY2Vzc2luZ0luZm8uYWN0aW9uID09IFJlbW92ZSkKLSAgICAgICAgICAgICAgICBtX3J1bm5p
bmdBbmltYXRpb25zLnJlbW92ZShjdXJyQW5pbWF0aW9uTmFtZSk7Ci0gICAgICAgIH0KLSAgICAK
LSAgICAgICAgbV9hbmltYXRpb25zVG9Qcm9jZXNzLmNsZWFyKCk7Ci0gICAgfQotICAgIAotICAg
IHNpemVfdCBudW1BbmltYXRpb25zOwotICAgIGlmICgobnVtQW5pbWF0aW9ucyA9IG1fdW5jb21p
dHRlZEFuaW1hdGlvbnMuc2l6ZSgpKSkgewotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG51bUFuaW1hdGlvbnM7ICsraSkgewotICAgICAgICAgICAgY29uc3QgTGF5ZXJQcm9wZXJ0eUFu
aW1hdGlvbiYgcGVuZGluZ0FuaW1hdGlvbiA9IG1fdW5jb21pdHRlZEFuaW1hdGlvbnNbaV07Ci0g
ICAgICAgICAgICBzZXRDQUFuaW1hdGlvbk9uTGF5ZXIocGVuZGluZ0FuaW1hdGlvbi5tX2FuaW1h
dGlvbi5nZXQoKSwgcGVuZGluZ0FuaW1hdGlvbi5tX3Byb3BlcnR5LCBwZW5kaW5nQW5pbWF0aW9u
Lm1fbmFtZSwgcGVuZGluZ0FuaW1hdGlvbi5tX2luZGV4LCBwZW5kaW5nQW5pbWF0aW9uLm1fdGlt
ZU9mZnNldCk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIEFuaW1hdGlvbnNNYXA6Oml0ZXJh
dG9yIGl0ID0gbV9ydW5uaW5nQW5pbWF0aW9ucy5maW5kKHBlbmRpbmdBbmltYXRpb24ubV9uYW1l
KTsKLSAgICAgICAgICAgIGlmIChpdCA9PSBtX3J1bm5pbmdBbmltYXRpb25zLmVuZCgpKSB7Ci0g
ICAgICAgICAgICAgICAgVmVjdG9yPExheWVyUHJvcGVydHlBbmltYXRpb24+IGFuaW1hdGlvbnM7
Ci0gICAgICAgICAgICAgICAgYW5pbWF0aW9ucy5hcHBlbmQocGVuZGluZ0FuaW1hdGlvbik7Ci0g
ICAgICAgICAgICAgICAgbV9ydW5uaW5nQW5pbWF0aW9ucy5hZGQocGVuZGluZ0FuaW1hdGlvbi5t
X25hbWUsIGFuaW1hdGlvbnMpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAg
ICBWZWN0b3I8TGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbj4mIGFuaW1hdGlvbnMgPSBpdC0+c2Vjb25k
OwotICAgICAgICAgICAgICAgIGFuaW1hdGlvbnMuYXBwZW5kKHBlbmRpbmdBbmltYXRpb24pOwot
ICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBtX3VuY29taXR0ZWRB
bmltYXRpb25zLmNsZWFyKCk7Ci0gICAgfQotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnNl
dENBQW5pbWF0aW9uT25MYXllcihDQVByb3BlcnR5QW5pbWF0aW9uKiBjYUFuaW0sIEFuaW1hdGVk
UHJvcGVydHlJRCBwcm9wZXJ0eSwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBpbnQgaW5k
ZXgsIGRvdWJsZSB0aW1lT2Zmc2V0KQotewotICAgIFBsYXRmb3JtTGF5ZXIqIGxheWVyID0gYW5p
bWF0ZWRMYXllcihwcm9wZXJ0eSk7Ci0KLSAgICBpZiAodGltZU9mZnNldCkgewotICAgICAgICBb
Y2FBbmltIHNldEJlZ2luVGltZTpDQUN1cnJlbnRNZWRpYVRpbWUoKSAtIHRpbWVPZmZzZXRdOwot
ICAgICAgICBbY2FBbmltIHNldFZhbHVlOltOU051bWJlciBudW1iZXJXaXRoQm9vbDpZRVNdIGZv
cktleTpXZWJLaXRBbmltYXRpb25CZWdpblRpbWVTZXRLZXldOwotICAgIH0KLQotICAgIE5TU3Ry
aW5nICphbmltYXRpb25JRCA9IGFuaW1hdGlvbklkZW50aWZpZXIoYW5pbWF0aW9uTmFtZSwgcHJv
cGVydHksIGluZGV4KTsKLQotICAgIFtsYXllciByZW1vdmVBbmltYXRpb25Gb3JLZXk6YW5pbWF0
aW9uSURdOwotICAgIFtsYXllciBhZGRBbmltYXRpb246Y2FBbmltIGZvcktleTphbmltYXRpb25J
RF07Ci0KLSAgICBpZiAoTGF5ZXJNYXAqIGxheWVyQ2xvbmVNYXAgPSBhbmltYXRlZExheWVyQ2xv
bmVzKHByb3BlcnR5KSkgewotICAgICAgICBMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0g
bGF5ZXJDbG9uZU1hcC0+ZW5kKCk7Ci0gICAgICAgIGZvciAoTGF5ZXJNYXA6OmNvbnN0X2l0ZXJh
dG9yIGl0ID0gbGF5ZXJDbG9uZU1hcC0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAg
ICAgICAgICAvLyBTa2lwIGltbWVkaWF0ZSByZXBsaWNhcywgc2luY2UgdGhleSBtb3ZlIHdpdGgg
dGhlIG9yaWdpbmFsLgotICAgICAgICAgICAgaWYgKG1fcmVwbGljYUxheWVyICYmIGlzUmVwbGlj
YXRlZFJvb3RDbG9uZShpdC0+Zmlyc3QpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAg
ICAgICAgICAgQ0FMYXllciAqY3VyckxheWVyID0gaXQtPnNlY29uZC5nZXQoKTsKLSAgICAgICAg
ICAgIFtjdXJyTGF5ZXIgcmVtb3ZlQW5pbWF0aW9uRm9yS2V5OmFuaW1hdGlvbklEXTsKLSAgICAg
ICAgICAgIFtjdXJyTGF5ZXIgYWRkQW5pbWF0aW9uOmNhQW5pbSBmb3JLZXk6YW5pbWF0aW9uSURd
OwotICAgICAgICB9Ci0gICAgfQotfQotCi0vLyBXb3JrYXJvdW5kIGZvciA8cmRhcjovL3Byb2Js
ZW0vNzMxMTM2Nz4KLXN0YXRpYyB2b2lkIGJ1ZzczMTEzNjdXb3JrYXJvdW5kKENBTGF5ZXIqIHRy
YW5zZm9ybUxheWVyLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtKQotewot
ICAgIGlmICghdHJhbnNmb3JtTGF5ZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIENBVHJhbnNm
b3JtM0QgY2FUcmFuc2Zvcm07Ci0gICAgY29weVRyYW5zZm9ybShjYVRyYW5zZm9ybSwgdHJhbnNm
b3JtKTsKLSAgICBjYVRyYW5zZm9ybS5tNDEgKz0gMTsKLSAgICBbdHJhbnNmb3JtTGF5ZXIgc2V0
VHJhbnNmb3JtOmNhVHJhbnNmb3JtXTsKLQotICAgIGNhVHJhbnNmb3JtLm00MSAtPSAxOwotICAg
IFt0cmFuc2Zvcm1MYXllciBzZXRUcmFuc2Zvcm06Y2FUcmFuc2Zvcm1dOwotfQotCi1ib29sIEdy
YXBoaWNzTGF5ZXJNYWM6OnJlbW92ZUNBQW5pbWF0aW9uRnJvbUxheWVyKEFuaW1hdGVkUHJvcGVy
dHlJRCBwcm9wZXJ0eSwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBpbnQgaW5kZXgpCi17
Ci0gICAgUGxhdGZvcm1MYXllciogbGF5ZXIgPSBhbmltYXRlZExheWVyKHByb3BlcnR5KTsKLQot
ICAgIE5TU3RyaW5nICphbmltYXRpb25JRCA9IGFuaW1hdGlvbklkZW50aWZpZXIoYW5pbWF0aW9u
TmFtZSwgcHJvcGVydHksIGluZGV4KTsKLQotICAgIGlmICghW2xheWVyIGFuaW1hdGlvbkZvcktl
eTphbmltYXRpb25JRF0pCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKLSAgICBbbGF5ZXIg
cmVtb3ZlQW5pbWF0aW9uRm9yS2V5OmFuaW1hdGlvbklEXTsKLSAgICBidWc3MzExMzY3V29ya2Fy
b3VuZChtX3N0cnVjdHVyYWxMYXllci5nZXQoKSwgbV90cmFuc2Zvcm0pOwotCi0gICAgaWYgKExh
eWVyTWFwKiBsYXllckNsb25lTWFwID0gYW5pbWF0ZWRMYXllckNsb25lcyhwcm9wZXJ0eSkpIHsK
LSAgICAgICAgTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGxheWVyQ2xvbmVNYXAtPmVu
ZCgpOwotICAgICAgICBmb3IgKExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGxheWVyQ2xv
bmVNYXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICAgICAgLy8gU2tpcCBp
bW1lZGlhdGUgcmVwbGljYXMsIHNpbmNlIHRoZXkgbW92ZSB3aXRoIHRoZSBvcmlnaW5hbC4KLSAg
ICAgICAgICAgIGlmIChtX3JlcGxpY2FMYXllciAmJiBpc1JlcGxpY2F0ZWRSb290Q2xvbmUoaXQt
PmZpcnN0KSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgQ0FMYXll
ciAqY3VyckxheWVyID0gaXQtPnNlY29uZC5nZXQoKTsKLSAgICAgICAgICAgIFtjdXJyTGF5ZXIg
cmVtb3ZlQW5pbWF0aW9uRm9yS2V5OmFuaW1hdGlvbklEXTsKLSAgICAgICAgfQotICAgIH0KLSAg
ICByZXR1cm4gdHJ1ZTsKLX0KLQotc3RhdGljIHZvaWQgY29weUFuaW1hdGlvblByb3BlcnRpZXMo
Q0FQcm9wZXJ0eUFuaW1hdGlvbiogZnJvbSwgQ0FQcm9wZXJ0eUFuaW1hdGlvbiogdG8pCi17Ci0g
ICAgW3RvIHNldEJlZ2luVGltZTpbZnJvbSBiZWdpblRpbWVdXTsKLSAgICBbdG8gc2V0RHVyYXRp
b246W2Zyb20gZHVyYXRpb25dXTsKLSAgICBbdG8gc2V0UmVwZWF0Q291bnQ6W2Zyb20gcmVwZWF0
Q291bnRdXTsKLSAgICBbdG8gc2V0QXV0b3JldmVyc2VzOltmcm9tIGF1dG9yZXZlcnNlc11dOwot
ICAgIFt0byBzZXRGaWxsTW9kZTpbZnJvbSBmaWxsTW9kZV1dOwotICAgIFt0byBzZXRSZW1vdmVk
T25Db21wbGV0aW9uOltmcm9tIGlzUmVtb3ZlZE9uQ29tcGxldGlvbl1dOwotICAgIFt0byBzZXRB
ZGRpdGl2ZTpbZnJvbSBpc0FkZGl0aXZlXV07Ci0gICAgW3RvIHNldFRpbWluZ0Z1bmN0aW9uOltm
cm9tIHRpbWluZ0Z1bmN0aW9uXV07Ci0KLSNpZiBIQVZFX01PREVSTl9RVUFSVFpDT1JFCi0gICAg
W3RvIHNldFZhbHVlRnVuY3Rpb246W2Zyb20gdmFsdWVGdW5jdGlvbl1dOwotI2VuZGlmCi0KLSAg
ICBpZiAoaWQgb2JqZWN0ID0gW2Zyb20gdmFsdWVGb3JLZXk6V2ViS2l0QW5pbWF0aW9uQmVnaW5U
aW1lU2V0S2V5XSkKLSAgICAgICAgW3RvIHNldFZhbHVlOm9iamVjdCBmb3JLZXk6V2ViS2l0QW5p
bWF0aW9uQmVnaW5UaW1lU2V0S2V5XTsKLX0KLQotdm9pZCBHcmFwaGljc0xheWVyTWFjOjpwYXVz
ZUNBQW5pbWF0aW9uT25MYXllcihBbmltYXRlZFByb3BlcnR5SUQgcHJvcGVydHksIGNvbnN0IFN0
cmluZyYgYW5pbWF0aW9uTmFtZSwgaW50IGluZGV4LCBkb3VibGUgdGltZU9mZnNldCkKLXsKLSAg
ICBQbGF0Zm9ybUxheWVyKiBsYXllciA9IGFuaW1hdGVkTGF5ZXIocHJvcGVydHkpOwotCi0gICAg
TlNTdHJpbmcgKmFuaW1hdGlvbklEID0gYW5pbWF0aW9uSWRlbnRpZmllcihhbmltYXRpb25OYW1l
LCBwcm9wZXJ0eSwgaW5kZXgpOwotCi0gICAgQ0FBbmltYXRpb24gKmNhQW5pbSA9IFtsYXllciBh
bmltYXRpb25Gb3JLZXk6YW5pbWF0aW9uSURdOwotICAgIGlmICghY2FBbmltKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICAvLyBBbmltYXRpb25zIG9uIHRoZSBsYXllciBhcmUgaW1tdXRhYmxlLCBz
byB3ZSBoYXZlIHRvIGNsb25lIGFuZCBtb2RpZnkuCi0gICAgQ0FQcm9wZXJ0eUFuaW1hdGlvbiog
cGF1c2VkQW5pbSA9IG5pbDsKLSAgICBpZiAoW2NhQW5pbSBpc0tpbmRPZkNsYXNzOltDQUtleWZy
YW1lQW5pbWF0aW9uIGNsYXNzXV0pIHsKLSAgICAgICAgQ0FLZXlmcmFtZUFuaW1hdGlvbiogZXhp
c3RpbmdLZXlmcmFtZUFuaW0gPSBzdGF0aWNfY2FzdDxDQUtleWZyYW1lQW5pbWF0aW9uKj4oY2FB
bmltKTsKLSAgICAgICAgQ0FLZXlmcmFtZUFuaW1hdGlvbiogbmV3QW5pbSA9IFtDQUtleWZyYW1l
QW5pbWF0aW9uIGFuaW1hdGlvbldpdGhLZXlQYXRoOltleGlzdGluZ0tleWZyYW1lQW5pbSBrZXlQ
YXRoXV07Ci0gICAgICAgIGNvcHlBbmltYXRpb25Qcm9wZXJ0aWVzKGV4aXN0aW5nS2V5ZnJhbWVB
bmltLCBuZXdBbmltKTsKLSAgICAgICAgW25ld0FuaW0gc2V0VmFsdWVzOltleGlzdGluZ0tleWZy
YW1lQW5pbSB2YWx1ZXNdXTsKLSAgICAgICAgW25ld0FuaW0gc2V0S2V5VGltZXM6W2V4aXN0aW5n
S2V5ZnJhbWVBbmltIGtleVRpbWVzXV07Ci0gICAgICAgIFtuZXdBbmltIHNldFRpbWluZ0Z1bmN0
aW9uczpbZXhpc3RpbmdLZXlmcmFtZUFuaW0gdGltaW5nRnVuY3Rpb25zXV07Ci0gICAgICAgIHBh
dXNlZEFuaW0gPSBuZXdBbmltOwotICAgIH0gZWxzZSBpZiAoW2NhQW5pbSBpc0tpbmRPZkNsYXNz
OltDQUJhc2ljQW5pbWF0aW9uIGNsYXNzXV0pIHsKLSAgICAgICAgQ0FCYXNpY0FuaW1hdGlvbiog
ZXhpc3RpbmdQcm9wZXJ0eUFuaW0gPSBzdGF0aWNfY2FzdDxDQUJhc2ljQW5pbWF0aW9uKj4oY2FB
bmltKTsKLSAgICAgICAgQ0FCYXNpY0FuaW1hdGlvbiogbmV3QW5pbSA9IFtDQUJhc2ljQW5pbWF0
aW9uIGFuaW1hdGlvbldpdGhLZXlQYXRoOltleGlzdGluZ1Byb3BlcnR5QW5pbSBrZXlQYXRoXV07
Ci0gICAgICAgIGNvcHlBbmltYXRpb25Qcm9wZXJ0aWVzKGV4aXN0aW5nUHJvcGVydHlBbmltLCBu
ZXdBbmltKTsKLSAgICAgICAgW25ld0FuaW0gc2V0RnJvbVZhbHVlOltleGlzdGluZ1Byb3BlcnR5
QW5pbSBmcm9tVmFsdWVdXTsKLSAgICAgICAgW25ld0FuaW0gc2V0VG9WYWx1ZTpbZXhpc3RpbmdQ
cm9wZXJ0eUFuaW0gdG9WYWx1ZV1dOwotICAgICAgICBwYXVzZWRBbmltID0gbmV3QW5pbTsKLSAg
ICB9Ci0KLSAgICAvLyBwYXVzZWRBbmltIGhhcyB0aGUgYmVnaW5UaW1lIG9mIGNhQW5pbSBhbHJl
YWR5LgotICAgIFtwYXVzZWRBbmltIHNldFNwZWVkOjBdOwotICAgIFtwYXVzZWRBbmltIHNldFRp
bWVPZmZzZXQ6dGltZU9mZnNldF07Ci0gICAgCi0gICAgW2xheWVyIGFkZEFuaW1hdGlvbjpwYXVz
ZWRBbmltIGZvcktleTphbmltYXRpb25JRF07ICAvLyBUaGlzIHdpbGwgcmVwbGFjZSB0aGUgcnVu
bmluZyBhbmltYXRpb24uCi0KLSAgICAvLyBQYXVzZSB0aGUgYW5pbWF0aW9ucyBvbiB0aGUgY2xv
bmVzIHRvby4KLSAgICBpZiAoTGF5ZXJNYXAqIGxheWVyQ2xvbmVNYXAgPSBhbmltYXRlZExheWVy
Q2xvbmVzKHByb3BlcnR5KSkgewotICAgICAgICBMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5k
ID0gbGF5ZXJDbG9uZU1hcC0+ZW5kKCk7Ci0gICAgICAgIGZvciAoTGF5ZXJNYXA6OmNvbnN0X2l0
ZXJhdG9yIGl0ID0gbGF5ZXJDbG9uZU1hcC0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0g
ICAgICAgICAgICAvLyBTa2lwIGltbWVkaWF0ZSByZXBsaWNhcywgc2luY2UgdGhleSBtb3ZlIHdp
dGggdGhlIG9yaWdpbmFsLgotICAgICAgICAgICAgaWYgKG1fcmVwbGljYUxheWVyICYmIGlzUmVw
bGljYXRlZFJvb3RDbG9uZShpdC0+Zmlyc3QpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICAgICAgQ0FMYXllciAqY3VyckxheWVyID0gaXQtPnNlY29uZC5nZXQoKTsKLSAgICAg
ICAgICAgIFtjdXJyTGF5ZXIgYWRkQW5pbWF0aW9uOnBhdXNlZEFuaW0gZm9yS2V5OmFuaW1hdGlv
bklEXTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotdm9pZCBHcmFwaGljc0xheWVyTWFjOjpzZXRD
b250ZW50c1RvQ2FudmFzKFBsYXRmb3JtTGF5ZXIqIGNhbnZhc0xheWVyKQotewotICAgIGlmIChj
YW52YXNMYXllciA9PSBtX2NvbnRlbnRzTGF5ZXIpCi0gICAgICAgIHJldHVybjsKLSAgICAgICAg
Ci0gICAgbV9jb250ZW50c0xheWVyID0gY2FudmFzTGF5ZXI7Ci0gICAgaWYgKG1fY29udGVudHNM
YXllciAmJiBbbV9jb250ZW50c0xheWVyLmdldCgpIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0
b3Ioc2V0TGF5ZXJPd25lcjopXSkKLSAgICAgICAgWyhpZCltX2NvbnRlbnRzTGF5ZXIuZ2V0KCkg
c2V0TGF5ZXJPd25lcjp0aGlzXTsKLSAgICAKLSAgICBtX2NvbnRlbnRzTGF5ZXJQdXJwb3NlID0g
Y2FudmFzTGF5ZXIgPyBDb250ZW50c0xheWVyRm9yQ2FudmFzIDogTm9Db250ZW50c0xheWVyOwot
Ci0gICAgbm90ZVN1YmxheWVyc0NoYW5nZWQoKTsKLSAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5n
ZWQoQ29udGVudHNDYW52YXNMYXllckNoYW5nZWQpOwotfQotICAgIAotdm9pZCBHcmFwaGljc0xh
eWVyTWFjOjpyZXBhaW50TGF5ZXJEaXJ0eVJlY3RzKCkKLXsKLSAgICBpZiAoIW1fZGlydHlSZWN0
cy5zaXplKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bV9kaXJ0eVJlY3RzLnNpemUoKTsgKytpKQotICAgICAgICBbbV9sYXllci5nZXQoKSBzZXROZWVk
c0Rpc3BsYXlJblJlY3Q6bV9kaXJ0eVJlY3RzW2ldXTsKLSAgICAKLSAgICBtX2RpcnR5UmVjdHMu
Y2xlYXIoKTsKLX0KLQotdm9pZCBHcmFwaGljc0xheWVyTWFjOjp1cGRhdGVDb250ZW50c05lZWRz
RGlzcGxheSgpCi17Ci0gICAgaWYgKG1fY29udGVudHNMYXllcikKLSAgICAgICAgW21fY29udGVu
dHNMYXllci5nZXQoKSBzZXROZWVkc0Rpc3BsYXldOwotfQotCi1ib29sIEdyYXBoaWNzTGF5ZXJN
YWM6OmNyZWF0ZUFuaW1hdGlvbkZyb21LZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3Qm
IHZhbHVlTGlzdCwgY29uc3QgQW5pbWF0aW9uKiBhbmltYXRpb24sIGNvbnN0IFN0cmluZyYgYW5p
bWF0aW9uTmFtZSwgZG91YmxlIHRpbWVPZmZzZXQpCi17Ci0gICAgQVNTRVJUKHZhbHVlTGlzdC5w
cm9wZXJ0eSgpICE9IEFuaW1hdGVkUHJvcGVydHlXZWJraXRUcmFuc2Zvcm0pOwotCi0gICAgQkVH
SU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotICAgIAotICAgIGJvb2wgaXNLZXlmcmFtZSA9IHZh
bHVlTGlzdC5zaXplKCkgPiAyOwotICAgIGJvb2wgdmFsdWVzT0s7Ci0gICAgCi0gICAgYm9vbCBh
ZGRpdGl2ZSA9IGZhbHNlOwotICAgIGludCBhbmltYXRpb25JbmRleCA9IDA7Ci0gICAgCi0gICAg
Q0FQcm9wZXJ0eUFuaW1hdGlvbiogY2FBbmltYXRpb247Ci0gICAgaWYgKGlzS2V5ZnJhbWUpIHsK
LSAgICAgICAgQ0FLZXlmcmFtZUFuaW1hdGlvbioga2V5ZnJhbWVBbmltID0gY3JlYXRlS2V5ZnJh
bWVBbmltYXRpb24oYW5pbWF0aW9uLCB2YWx1ZUxpc3QucHJvcGVydHkoKSwgYWRkaXRpdmUpOwot
ICAgICAgICB2YWx1ZXNPSyA9IHNldEFuaW1hdGlvbktleWZyYW1lcyh2YWx1ZUxpc3QsIGFuaW1h
dGlvbiwga2V5ZnJhbWVBbmltKTsKLSAgICAgICAgY2FBbmltYXRpb24gPSBrZXlmcmFtZUFuaW07
Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgQ0FCYXNpY0FuaW1hdGlvbiogYmFzaWNBbmltID0gY3Jl
YXRlQmFzaWNBbmltYXRpb24oYW5pbWF0aW9uLCB2YWx1ZUxpc3QucHJvcGVydHkoKSwgYWRkaXRp
dmUpOwotICAgICAgICB2YWx1ZXNPSyA9IHNldEFuaW1hdGlvbkVuZHBvaW50cyh2YWx1ZUxpc3Qs
IGFuaW1hdGlvbiwgYmFzaWNBbmltKTsKLSAgICAgICAgY2FBbmltYXRpb24gPSBiYXNpY0FuaW07
Ci0gICAgfQotICAgIAotICAgIGlmICghdmFsdWVzT0spCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgIG1fdW5jb21pdHRlZEFuaW1hdGlvbnMuYXBwZW5kKExheWVyUHJvcGVydHlBbmltYXRp
b24oY2FBbmltYXRpb24sIGFuaW1hdGlvbk5hbWUsIHZhbHVlTGlzdC5wcm9wZXJ0eSgpLCBhbmlt
YXRpb25JbmRleCwgdGltZU9mZnNldCkpOwotICAgIAotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQ
VElPTlM7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBHcmFwaGljc0xheWVyTWFjOjpj
cmVhdGVUcmFuc2Zvcm1BbmltYXRpb25zRnJvbUtleWZyYW1lcyhjb25zdCBLZXlmcmFtZVZhbHVl
TGlzdCYgdmFsdWVMaXN0LCBjb25zdCBBbmltYXRpb24qIGFuaW1hdGlvbiwgY29uc3QgU3RyaW5n
JiBhbmltYXRpb25OYW1lLCBkb3VibGUgdGltZU9mZnNldCwgY29uc3QgSW50U2l6ZSYgYm94U2l6
ZSkKLXsKLSAgICBBU1NFUlQodmFsdWVMaXN0LnByb3BlcnR5KCkgPT0gQW5pbWF0ZWRQcm9wZXJ0
eVdlYmtpdFRyYW5zZm9ybSk7Ci0KLSAgICBUcmFuc2Zvcm1PcGVyYXRpb25MaXN0IGZ1bmN0aW9u
TGlzdDsKLSAgICBib29sIGxpc3RzTWF0Y2gsIGhhc0JpZ1JvdGF0aW9uOwotICAgIGZldGNoVHJh
bnNmb3JtT3BlcmF0aW9uTGlzdCh2YWx1ZUxpc3QsIGZ1bmN0aW9uTGlzdCwgbGlzdHNNYXRjaCwg
aGFzQmlnUm90YXRpb24pOwotCi0gICAgLy8gV2UgbmVlZCB0byBmYWxsIGJhY2sgdG8gc29mdHdh
cmUgYW5pbWF0aW9uIGlmIHdlIGRvbid0IGhhdmUgc2V0VmFsdWVGdW5jdGlvbjosIGFuZAotICAg
IC8vIHdlIHdvdWxkIG5lZWQgdG8gYW5pbWF0ZSBlYWNoIGluY29taW5nIHRyYW5zZm9ybSBmdW5j
dGlvbiBzZXBhcmF0ZWx5LiBUaGlzIGlzIHRoZQotICAgIC8vIGNhc2UgaWYgd2UgaGF2ZSBhIHJv
dGF0aW9uID49IDE4MCBvciB3ZSBoYXZlIG1vcmUgdGhhbiBvbmUgdHJhbnNmb3JtIGZ1bmN0aW9u
LgotICAgIGlmICgoaGFzQmlnUm90YXRpb24gfHwgZnVuY3Rpb25MaXN0LnNpemUoKSA+IDEpICYm
ICFjYVZhbHVlRnVuY3Rpb25TdXBwb3J0ZWQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgYm9vbCB2YWxpZE1hdHJpY2VzID0gdHJ1ZTsKLQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhD
RVBUSU9OUzsKLQotICAgIC8vIElmIGZ1bmN0aW9uTGlzdHMgZG9uJ3QgbWF0Y2ggd2UgZG8gYSBt
YXRyaXggYW5pbWF0aW9uLCBvdGhlcndpc2Ugd2UgZG8gYSBjb21wb25lbnQgaGFyZHdhcmUgYW5p
bWF0aW9uLgotICAgIC8vIEFsc28sIHdlIGNhbid0IGRvIGNvbXBvbmVudCBhbmltYXRpb24gdW5s
ZXNzIHdlIGhhdmUgdmFsdWVGdW5jdGlvbiwgc28gd2UgbmVlZCB0byBkbyBtYXRyaXggYW5pbWF0
aW9uCi0gICAgLy8gaWYgdGhhdCdzIG5vdCB0cnVlIGFzIHdlbGwuCi0gICAgYm9vbCBpc01hdHJp
eEFuaW1hdGlvbiA9ICFsaXN0c01hdGNoIHx8ICFjYVZhbHVlRnVuY3Rpb25TdXBwb3J0ZWQoKTsK
LSAgICAKLSAgICBzaXplX3QgbnVtQW5pbWF0aW9ucyA9IGlzTWF0cml4QW5pbWF0aW9uID8gMSA6
IGZ1bmN0aW9uTGlzdC5zaXplKCk7Ci0gICAgYm9vbCBpc0tleWZyYW1lID0gdmFsdWVMaXN0LnNp
emUoKSA+IDI7Ci0gICAgCi0gICAgLy8gSXRlcmF0ZSB0aHJvdWdoIHRoZSB0cmFuc2Zvcm0gZnVu
Y3Rpb25zLCBzZW5kaW5nIGFuIGFuaW1hdGlvbiBmb3IgZWFjaCBvbmUuCi0gICAgZm9yIChzaXpl
X3QgYW5pbWF0aW9uSW5kZXggPSAwOyBhbmltYXRpb25JbmRleCA8IG51bUFuaW1hdGlvbnM7ICsr
YW5pbWF0aW9uSW5kZXgpIHsKLSAgICAgICAgVHJhbnNmb3JtT3BlcmF0aW9uOjpPcGVyYXRpb25U
eXBlIHRyYW5zZm9ybU9wID0gaXNNYXRyaXhBbmltYXRpb24gPyBUcmFuc2Zvcm1PcGVyYXRpb246
Ok1BVFJJWF8zRCA6IGZ1bmN0aW9uTGlzdFthbmltYXRpb25JbmRleF07Ci0gICAgICAgIENBUHJv
cGVydHlBbmltYXRpb24qIGNhQW5pbWF0aW9uOwotCi0jaWYgZGVmaW5lZChCVUlMRElOR19PTl9M
RU9QQVJEKSB8fCBkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkKLSAgICAgICAgLy8g
Q0EgYXBwbGllcyBhbmltYXRpb25zIGluIHJldmVyc2Ugb3JkZXIgKDxyZGFyOi8vcHJvYmxlbS83
MDk1NjM4Pikgc28gd2UgbmVlZCB0aGUgbGFzdCBvbmUgd2UgYWRkIChwZXIgcHJvcGVydHkpCi0g
ICAgICAgIC8vIHRvIGJlIG5vbi1hZGRpdGl2ZS4KLSAgICAgICAgYm9vbCBhZGRpdGl2ZSA9IGFu
aW1hdGlvbkluZGV4IDwgKG51bUFuaW1hdGlvbnMgLSAxKTsKLSNlbHNlCi0gICAgICAgIGJvb2wg
YWRkaXRpdmUgPSBhbmltYXRpb25JbmRleCA+IDA7Ci0jZW5kaWYKLSAgICAgICAgaWYgKGlzS2V5
ZnJhbWUpIHsKLSAgICAgICAgICAgIENBS2V5ZnJhbWVBbmltYXRpb24qIGtleWZyYW1lQW5pbSA9
IGNyZWF0ZUtleWZyYW1lQW5pbWF0aW9uKGFuaW1hdGlvbiwgdmFsdWVMaXN0LnByb3BlcnR5KCks
IGFkZGl0aXZlKTsKLSAgICAgICAgICAgIHZhbGlkTWF0cmljZXMgPSBzZXRUcmFuc2Zvcm1Bbmlt
YXRpb25LZXlmcmFtZXModmFsdWVMaXN0LCBhbmltYXRpb24sIGtleWZyYW1lQW5pbSwgYW5pbWF0
aW9uSW5kZXgsIHRyYW5zZm9ybU9wLCBpc01hdHJpeEFuaW1hdGlvbiwgYm94U2l6ZSk7Ci0gICAg
ICAgICAgICBjYUFuaW1hdGlvbiA9IGtleWZyYW1lQW5pbTsKLSAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgIENBQmFzaWNBbmltYXRpb24qIGJhc2ljQW5pbSA9IGNyZWF0ZUJhc2ljQW5pbWF0
aW9uKGFuaW1hdGlvbiwgdmFsdWVMaXN0LnByb3BlcnR5KCksIGFkZGl0aXZlKTsKLSAgICAgICAg
ICAgIHZhbGlkTWF0cmljZXMgPSBzZXRUcmFuc2Zvcm1BbmltYXRpb25FbmRwb2ludHModmFsdWVM
aXN0LCBhbmltYXRpb24sIGJhc2ljQW5pbSwgYW5pbWF0aW9uSW5kZXgsIHRyYW5zZm9ybU9wLCBp
c01hdHJpeEFuaW1hdGlvbiwgYm94U2l6ZSk7Ci0gICAgICAgICAgICBjYUFuaW1hdGlvbiA9IGJh
c2ljQW5pbTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgaWYgKCF2YWxpZE1hdHJpY2Vz
KQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgCi0gICAgICAgIG1fdW5jb21pdHRlZEFuaW1hdGlv
bnMuYXBwZW5kKExheWVyUHJvcGVydHlBbmltYXRpb24oY2FBbmltYXRpb24sIGFuaW1hdGlvbk5h
bWUsIHZhbHVlTGlzdC5wcm9wZXJ0eSgpLCBhbmltYXRpb25JbmRleCwgdGltZU9mZnNldCkpOwot
ICAgIH0KLQotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0KLSAgICByZXR1cm4gdmFs
aWRNYXRyaWNlczsKLX0KLQotQ0FCYXNpY0FuaW1hdGlvbiogR3JhcGhpY3NMYXllck1hYzo6Y3Jl
YXRlQmFzaWNBbmltYXRpb24oY29uc3QgQW5pbWF0aW9uKiBhbmltLCBBbmltYXRlZFByb3BlcnR5
SUQgcHJvcGVydHksIGJvb2wgYWRkaXRpdmUpCi17Ci0gICAgQ0FCYXNpY0FuaW1hdGlvbiogYmFz
aWNBbmltID0gW0NBQmFzaWNBbmltYXRpb24gYW5pbWF0aW9uV2l0aEtleVBhdGg6cHJvcGVydHlJ
ZFRvU3RyaW5nKHByb3BlcnR5KV07Ci0gICAgc2V0dXBBbmltYXRpb24oYmFzaWNBbmltLCBhbmlt
LCBhZGRpdGl2ZSk7Ci0gICAgcmV0dXJuIGJhc2ljQW5pbTsKLX0KLQotQ0FLZXlmcmFtZUFuaW1h
dGlvbiogR3JhcGhpY3NMYXllck1hYzo6Y3JlYXRlS2V5ZnJhbWVBbmltYXRpb24oY29uc3QgQW5p
bWF0aW9uKiBhbmltLCBBbmltYXRlZFByb3BlcnR5SUQgcHJvcGVydHksIGJvb2wgYWRkaXRpdmUp
Ci17Ci0gICAgQ0FLZXlmcmFtZUFuaW1hdGlvbioga2V5ZnJhbWVBbmltID0gW0NBS2V5ZnJhbWVB
bmltYXRpb24gYW5pbWF0aW9uV2l0aEtleVBhdGg6cHJvcGVydHlJZFRvU3RyaW5nKHByb3BlcnR5
KV07Ci0gICAgc2V0dXBBbmltYXRpb24oa2V5ZnJhbWVBbmltLCBhbmltLCBhZGRpdGl2ZSk7Ci0g
ICAgcmV0dXJuIGtleWZyYW1lQW5pbTsKLX0KLQotdm9pZCBHcmFwaGljc0xheWVyTWFjOjpzZXR1
cEFuaW1hdGlvbihDQVByb3BlcnR5QW5pbWF0aW9uKiBwcm9wZXJ0eUFuaW0sIGNvbnN0IEFuaW1h
dGlvbiogYW5pbSwgYm9vbCBhZGRpdGl2ZSkKLXsKLSAgICBkb3VibGUgZHVyYXRpb24gPSBhbmlt
LT5kdXJhdGlvbigpOwotICAgIGlmIChkdXJhdGlvbiA8PSAwKQotICAgICAgICBkdXJhdGlvbiA9
IGNBbmltYXRpb25BbG1vc3RaZXJvRHVyYXRpb247Ci0KLSAgICBmbG9hdCByZXBlYXRDb3VudCA9
IGFuaW0tPml0ZXJhdGlvbkNvdW50KCk7Ci0gICAgaWYgKHJlcGVhdENvdW50ID09IEFuaW1hdGlv
bjo6SXRlcmF0aW9uQ291bnRJbmZpbml0ZSkKLSAgICAgICAgcmVwZWF0Q291bnQgPSBGTFRfTUFY
OwotICAgIGVsc2UgaWYgKGFuaW0tPmRpcmVjdGlvbigpID09IEFuaW1hdGlvbjo6QW5pbWF0aW9u
RGlyZWN0aW9uQWx0ZXJuYXRlKQotICAgICAgICByZXBlYXRDb3VudCAvPSAyOwotCi0gICAgTlNT
dHJpbmcgKmZpbGxNb2RlID0gMDsKLSAgICBzd2l0Y2ggKGFuaW0tPmZpbGxNb2RlKCkpIHsKLSAg
ICBjYXNlIEFuaW1hdGlvbkZpbGxNb2RlTm9uZToKLSAgICAgICAgZmlsbE1vZGUgPSBrQ0FGaWxs
TW9kZUZvcndhcmRzOyAvLyBVc2UgImZvcndhcmRzIiByYXRoZXIgdGhhbiAicmVtb3ZlZCIgYmVj
YXVzZSB0aGUgc3R5bGUgc3lzdGVtIHdpbGwgcmVtb3ZlIHRoZSBhbmltYXRpb24gd2hlbiBpdCBp
cyBmaW5pc2hlZC4gVGhpcyBhdm9pZHMgYSBmbGFzaC4KLSAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBBbmltYXRpb25GaWxsTW9kZUJhY2t3YXJkczoKLSAgICAgICAgZmlsbE1vZGUgPSBrQ0FGaWxs
TW9kZUJvdGg7IC8vIFVzZSAiYm90aCIgcmF0aGVyIHRoYW4gImJhY2t3YXJkcyIgYmVjYXVzZSB0
aGUgc3R5bGUgc3lzdGVtIHdpbGwgcmVtb3ZlIHRoZSBhbmltYXRpb24gd2hlbiBpdCBpcyBmaW5p
c2hlZC4gVGhpcyBhdm9pZHMgYSBmbGFzaC4KLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBbmlt
YXRpb25GaWxsTW9kZUZvcndhcmRzOgotICAgICAgIGZpbGxNb2RlID0ga0NBRmlsbE1vZGVGb3J3
YXJkczsKLSAgICAgICBicmVhazsKLSAgICBjYXNlIEFuaW1hdGlvbkZpbGxNb2RlQm90aDoKLSAg
ICAgICBmaWxsTW9kZSA9IGtDQUZpbGxNb2RlQm90aDsKLSAgICAgICBicmVhazsKLSAgICB9Ci0K
LSAgICBbcHJvcGVydHlBbmltIHNldER1cmF0aW9uOmR1cmF0aW9uXTsKLSAgICBbcHJvcGVydHlB
bmltIHNldFJlcGVhdENvdW50OnJlcGVhdENvdW50XTsKLSAgICBbcHJvcGVydHlBbmltIHNldEF1
dG9yZXZlcnNlczphbmltLT5kaXJlY3Rpb24oKV07Ci0gICAgW3Byb3BlcnR5QW5pbSBzZXRSZW1v
dmVkT25Db21wbGV0aW9uOk5PXTsKLSAgICBbcHJvcGVydHlBbmltIHNldEFkZGl0aXZlOmFkZGl0
aXZlXTsKLSAgICBbcHJvcGVydHlBbmltIHNldEZpbGxNb2RlOmZpbGxNb2RlXTsKLQotICAgIFtw
cm9wZXJ0eUFuaW0gc2V0RGVsZWdhdGU6bV9hbmltYXRpb25EZWxlZ2F0ZS5nZXQoKV07Ci19Ci0K
LUNBTWVkaWFUaW1pbmdGdW5jdGlvbiogR3JhcGhpY3NMYXllck1hYzo6dGltaW5nRnVuY3Rpb25G
b3JBbmltYXRpb25WYWx1ZShjb25zdCBBbmltYXRpb25WYWx1ZSogYW5pbVZhbHVlLCBjb25zdCBB
bmltYXRpb24qIGFuaW0pCi17Ci0gICAgY29uc3QgVGltaW5nRnVuY3Rpb24qIHRmID0gMDsKLSAg
ICBpZiAoYW5pbVZhbHVlLT50aW1pbmdGdW5jdGlvbigpKQotICAgICAgICB0ZiA9IGFuaW1WYWx1
ZS0+dGltaW5nRnVuY3Rpb24oKTsKLSAgICBlbHNlIGlmIChhbmltLT5pc1RpbWluZ0Z1bmN0aW9u
U2V0KCkpCi0gICAgICAgIHRmID0gYW5pbS0+dGltaW5nRnVuY3Rpb24oKS5nZXQoKTsKLQotICAg
IHJldHVybiBnZXRDQU1lZGlhVGltaW5nRnVuY3Rpb24odGYgPyB0ZiA6IEN1YmljQmV6aWVyVGlt
aW5nRnVuY3Rpb246OmNyZWF0ZSgpLmdldCgpKTsKLX0KLQotYm9vbCBHcmFwaGljc0xheWVyTWFj
OjpzZXRBbmltYXRpb25FbmRwb2ludHMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlz
dCwgY29uc3QgQW5pbWF0aW9uKiBhbmltLCBDQUJhc2ljQW5pbWF0aW9uKiBiYXNpY0FuaW0pCi17
Ci0gICAgaWQgZnJvbVZhbHVlID0gbmlsOwotICAgIGlkIHRvVmFsdWUgPSBuaWw7Ci0KLSAgICBz
d2l0Y2ggKHZhbHVlTGlzdC5wcm9wZXJ0eSgpKSB7Ci0gICAgICAgIGNhc2UgQW5pbWF0ZWRQcm9w
ZXJ0eU9wYWNpdHk6IHsKLSAgICAgICAgICAgIGNvbnN0IEZsb2F0QW5pbWF0aW9uVmFsdWUqIHN0
YXJ0VmFsID0gc3RhdGljX2Nhc3Q8Y29uc3QgRmxvYXRBbmltYXRpb25WYWx1ZSo+KHZhbHVlTGlz
dC5hdCgwKSk7Ci0gICAgICAgICAgICBjb25zdCBGbG9hdEFuaW1hdGlvblZhbHVlKiBlbmRWYWwg
PSBzdGF0aWNfY2FzdDxjb25zdCBGbG9hdEFuaW1hdGlvblZhbHVlKj4odmFsdWVMaXN0LmF0KDEp
KTsKLSAgICAgICAgICAgIGZyb21WYWx1ZSA9IFtOU051bWJlciBudW1iZXJXaXRoRmxvYXQ6c3Rh
cnRWYWwtPnZhbHVlKCldOwotICAgICAgICAgICAgdG9WYWx1ZSA9IFtOU051bWJlciBudW1iZXJX
aXRoRmxvYXQ6ZW5kVmFsLT52YWx1ZSgpXTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9
Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgICAg
IC8vIHdlIGRvbid0IGFuaW1hdGUgY29sb3IgeWV0Ci0gICAgICAgICAgICBicmVhazsKLSAgICB9
Ci0KLSAgICAvLyBUaGlzIGNvZGVwYXRoIGlzIHVzZWQgZm9yIDIta2V5ZnJhbWUgYW5pbWF0aW9u
cywgc28gd2Ugc3RpbGwgbmVlZCB0byBsb29rIGluIHRoZSBzdGFydAotICAgIC8vIGZvciBhIHRp
bWluZyBmdW5jdGlvbi4KLSAgICBDQU1lZGlhVGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0aW9u
ID0gdGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZSh2YWx1ZUxpc3QuYXQoMCksIGFuaW0p
OwotICAgIFtiYXNpY0FuaW0gc2V0VGltaW5nRnVuY3Rpb246dGltaW5nRnVuY3Rpb25dOwotCi0g
ICAgW2Jhc2ljQW5pbSBzZXRGcm9tVmFsdWU6ZnJvbVZhbHVlXTsKLSAgICBbYmFzaWNBbmltIHNl
dFRvVmFsdWU6dG9WYWx1ZV07Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBHcmFwaGlj
c0xheWVyTWFjOjpzZXRBbmltYXRpb25LZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3Qm
IHZhbHVlTGlzdCwgY29uc3QgQW5pbWF0aW9uKiBhbmltLCBDQUtleWZyYW1lQW5pbWF0aW9uKiBr
ZXlmcmFtZUFuaW0pCi17Ci0gICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBrZXlUaW1lcyhB
ZG9wdE5TLCBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7Ci0gICAgUmV0YWluUHRyPE5T
TXV0YWJsZUFycmF5PiB2YWx1ZXMoQWRvcHROUywgW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5p
dF0pOwotICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gdGltaW5nRnVuY3Rpb25zKEFkb3B0
TlMsIFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKLQotICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCB2YWx1ZUxpc3Quc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgY29uc3QgQW5pbWF0
aW9uVmFsdWUqIGN1clZhbHVlID0gdmFsdWVMaXN0LmF0KGkpOwotICAgICAgICBba2V5VGltZXMu
Z2V0KCkgYWRkT2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoRmxvYXQ6Y3VyVmFsdWUtPmtleVRp
bWUoKV1dOwotCi0gICAgICAgIHN3aXRjaCAodmFsdWVMaXN0LnByb3BlcnR5KCkpIHsKLSAgICAg
ICAgICAgIGNhc2UgQW5pbWF0ZWRQcm9wZXJ0eU9wYWNpdHk6IHsKLSAgICAgICAgICAgICAgICBj
b25zdCBGbG9hdEFuaW1hdGlvblZhbHVlKiBmbG9hdFZhbHVlID0gc3RhdGljX2Nhc3Q8Y29uc3Qg
RmxvYXRBbmltYXRpb25WYWx1ZSo+KGN1clZhbHVlKTsKLSAgICAgICAgICAgICAgICBbdmFsdWVz
LmdldCgpIGFkZE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aEZsb2F0OmZsb2F0VmFsdWUtPnZh
bHVlKCldXTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7ICAgICAv
LyB3ZSBkb24ndCBhbmltYXRlIGNvbG9yIHlldAotICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICB9Ci0KLSAgICAgICAgQ0FNZWRpYVRpbWluZ0Z1bmN0aW9uKiB0aW1pbmdGdW5jdGlvbiA9
IHRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUoY3VyVmFsdWUsIGFuaW0pOwotICAgICAg
ICBbdGltaW5nRnVuY3Rpb25zLmdldCgpIGFkZE9iamVjdDp0aW1pbmdGdW5jdGlvbl07Ci0gICAg
fQotICAgIAotICAgIC8vIFdlIHRvc3MgdGhlIGxhc3QgdGZBcnJheSB2YWx1ZSBiZWNhdXNlIGl0
IGhhcyB0byBvbmUgc2hvcnRlciB0aGFuIHRoZSBvdGhlcnMuCi0gICAgW3RpbWluZ0Z1bmN0aW9u
cy5nZXQoKSByZW1vdmVMYXN0T2JqZWN0XTsKLQotICAgIFtrZXlmcmFtZUFuaW0gc2V0S2V5VGlt
ZXM6a2V5VGltZXMuZ2V0KCldOwotICAgIFtrZXlmcmFtZUFuaW0gc2V0VmFsdWVzOnZhbHVlcy5n
ZXQoKV07Ci0gICAgW2tleWZyYW1lQW5pbSBzZXRUaW1pbmdGdW5jdGlvbnM6dGltaW5nRnVuY3Rp
b25zLmdldCgpXTsKLSAgICAKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBHcmFwaGljc0xh
eWVyTWFjOjpzZXRUcmFuc2Zvcm1BbmltYXRpb25FbmRwb2ludHMoY29uc3QgS2V5ZnJhbWVWYWx1
ZUxpc3QmIHZhbHVlTGlzdCwgY29uc3QgQW5pbWF0aW9uKiBhbmltLCBDQUJhc2ljQW5pbWF0aW9u
KiBiYXNpY0FuaW0sIGludCBmdW5jdGlvbkluZGV4LCBUcmFuc2Zvcm1PcGVyYXRpb246Ok9wZXJh
dGlvblR5cGUgdHJhbnNmb3JtT3AsIGJvb2wgaXNNYXRyaXhBbmltYXRpb24sIGNvbnN0IEludFNp
emUmIGJveFNpemUpCi17Ci0gICAgaWQgZnJvbVZhbHVlOwotICAgIGlkIHRvVmFsdWU7Ci0gICAg
Ci0gICAgQVNTRVJUKHZhbHVlTGlzdC5zaXplKCkgPT0gMik7Ci0gICAgY29uc3QgVHJhbnNmb3Jt
QW5pbWF0aW9uVmFsdWUqIHN0YXJ0VmFsdWUgPSBzdGF0aWNfY2FzdDxjb25zdCBUcmFuc2Zvcm1B
bmltYXRpb25WYWx1ZSo+KHZhbHVlTGlzdC5hdCgwKSk7Ci0gICAgY29uc3QgVHJhbnNmb3JtQW5p
bWF0aW9uVmFsdWUqIGVuZFZhbHVlID0gc3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNmb3JtQW5pbWF0
aW9uVmFsdWUqPih2YWx1ZUxpc3QuYXQoMSkpOwotICAgIAotICAgIGlmIChpc01hdHJpeEFuaW1h
dGlvbikgewotICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBmcm9tVHJhbnNmb3JtLCB0b1Ry
YW5zZm9ybTsKLSAgICAgICAgc3RhcnRWYWx1ZS0+dmFsdWUoKS0+YXBwbHkoYm94U2l6ZSwgZnJv
bVRyYW5zZm9ybSk7Ci0gICAgICAgIGVuZFZhbHVlLT52YWx1ZSgpLT5hcHBseShib3hTaXplLCB0
b1RyYW5zZm9ybSk7Ci0KLSAgICAgICAgLy8gSWYgYW55IG1hdHJpeCBpcyBzaW5ndWxhciwgQ0Eg
d29uJ3QgYW5pbWF0ZSBpdCBjb3JyZWN0bHkuIFNvIGZhbGwgYmFjayB0byBzb2Z0d2FyZSBhbmlt
YXRpb24KLSAgICAgICAgaWYgKCFmcm9tVHJhbnNmb3JtLmlzSW52ZXJ0aWJsZSgpIHx8ICF0b1Ry
YW5zZm9ybS5pc0ludmVydGlibGUoKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
ICAgICBDQVRyYW5zZm9ybTNEIGNhVHJhbnNmb3JtOwotICAgICAgICBjb3B5VHJhbnNmb3JtKGNh
VHJhbnNmb3JtLCBmcm9tVHJhbnNmb3JtKTsKLSAgICAgICAgZnJvbVZhbHVlID0gW05TVmFsdWUg
dmFsdWVXaXRoQ0FUcmFuc2Zvcm0zRDpjYVRyYW5zZm9ybV07Ci0KLSAgICAgICAgY29weVRyYW5z
Zm9ybShjYVRyYW5zZm9ybSwgdG9UcmFuc2Zvcm0pOwotICAgICAgICB0b1ZhbHVlID0gW05TVmFs
dWUgdmFsdWVXaXRoQ0FUcmFuc2Zvcm0zRDpjYVRyYW5zZm9ybV07Ci0gICAgfSBlbHNlIHsKLSAg
ICAgICAgZnJvbVZhbHVlID0gZ2V0VHJhbnNmb3JtRnVuY3Rpb25WYWx1ZShzdGFydFZhbHVlLT52
YWx1ZSgpLT5hdChmdW5jdGlvbkluZGV4KSwgdHJhbnNmb3JtT3AsIGJveFNpemUpOwotICAgICAg
ICB0b1ZhbHVlID0gZ2V0VHJhbnNmb3JtRnVuY3Rpb25WYWx1ZShlbmRWYWx1ZS0+dmFsdWUoKS0+
YXQoZnVuY3Rpb25JbmRleCksIHRyYW5zZm9ybU9wLCBib3hTaXplKTsKLSAgICB9Ci0KLSAgICAv
LyBUaGlzIGNvZGVwYXRoIGlzIHVzZWQgZm9yIDIta2V5ZnJhbWUgYW5pbWF0aW9ucywgc28gd2Ug
c3RpbGwgbmVlZCB0byBsb29rIGluIHRoZSBzdGFydAotICAgIC8vIGZvciBhIHRpbWluZyBmdW5j
dGlvbi4KLSAgICBDQU1lZGlhVGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0aW9uID0gdGltaW5n
RnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZSh2YWx1ZUxpc3QuYXQoMCksIGFuaW0pOwotICAgIFti
YXNpY0FuaW0gc2V0VGltaW5nRnVuY3Rpb246dGltaW5nRnVuY3Rpb25dOwotCi0gICAgW2Jhc2lj
QW5pbSBzZXRGcm9tVmFsdWU6ZnJvbVZhbHVlXTsKLSAgICBbYmFzaWNBbmltIHNldFRvVmFsdWU6
dG9WYWx1ZV07Ci0KLSNpZiBIQVZFX01PREVSTl9RVUFSVFpDT1JFCi0gICAgaWYgKE5TU3RyaW5n
ICp2YWx1ZUZ1bmN0aW9uTmFtZSA9IGdldFZhbHVlRnVuY3Rpb25OYW1lRm9yVHJhbnNmb3JtT3Bl
cmF0aW9uKHRyYW5zZm9ybU9wKSkKLSAgICAgICAgW2Jhc2ljQW5pbSBzZXRWYWx1ZUZ1bmN0aW9u
OltDQVZhbHVlRnVuY3Rpb24gZnVuY3Rpb25XaXRoTmFtZTp2YWx1ZUZ1bmN0aW9uTmFtZV1dOwot
I2VuZGlmCi0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBHcmFwaGljc0xheWVyTWFjOjpz
ZXRUcmFuc2Zvcm1BbmltYXRpb25LZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZh
bHVlTGlzdCwgY29uc3QgQW5pbWF0aW9uKiBhbmltYXRpb24sIENBS2V5ZnJhbWVBbmltYXRpb24q
IGtleWZyYW1lQW5pbSwgaW50IGZ1bmN0aW9uSW5kZXgsIFRyYW5zZm9ybU9wZXJhdGlvbjo6T3Bl
cmF0aW9uVHlwZSB0cmFuc2Zvcm1PcFR5cGUsIGJvb2wgaXNNYXRyaXhBbmltYXRpb24sIGNvbnN0
IEludFNpemUmIGJveFNpemUpCi17Ci0gICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBrZXlU
aW1lcyhBZG9wdE5TLCBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7Ci0gICAgUmV0YWlu
UHRyPE5TTXV0YWJsZUFycmF5PiB2YWx1ZXMoQWRvcHROUywgW1tOU011dGFibGVBcnJheSBhbGxv
Y10gaW5pdF0pOwotICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gdGltaW5nRnVuY3Rpb25z
KEFkb3B0TlMsIFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKLQotICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCB2YWx1ZUxpc3Quc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgY29uc3Qg
VHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUqIGN1clZhbHVlID0gc3RhdGljX2Nhc3Q8Y29uc3QgVHJh
bnNmb3JtQW5pbWF0aW9uVmFsdWUqPih2YWx1ZUxpc3QuYXQoaSkpOwotICAgICAgICBba2V5VGlt
ZXMuZ2V0KCkgYWRkT2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoRmxvYXQ6Y3VyVmFsdWUtPmtl
eVRpbWUoKV1dOwotCi0gICAgICAgIGlmIChpc01hdHJpeEFuaW1hdGlvbikgewotICAgICAgICAg
ICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtOwotICAgICAgICAgICAgY3VyVmFsdWUt
PnZhbHVlKCktPmFwcGx5KGJveFNpemUsIHRyYW5zZm9ybSk7Ci0KLSAgICAgICAgICAgIC8vIElm
IGFueSBtYXRyaXggaXMgc2luZ3VsYXIsIENBIHdvbid0IGFuaW1hdGUgaXQgY29ycmVjdGx5LiBT
byBmYWxsIGJhY2sgdG8gc29mdHdhcmUgYW5pbWF0aW9uCi0gICAgICAgICAgICBpZiAoIXRyYW5z
Zm9ybS5pc0ludmVydGlibGUoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICAgICAgICAgIENBVHJhbnNmb3JtM0QgY2FUcmFuc2Zvcm07Ci0gICAgICAgICAgICBjb3B5VHJh
bnNmb3JtKGNhVHJhbnNmb3JtLCB0cmFuc2Zvcm0pOwotICAgICAgICAgICAgW3ZhbHVlcy5nZXQo
KSBhZGRPYmplY3Q6W05TVmFsdWUgdmFsdWVXaXRoQ0FUcmFuc2Zvcm0zRDpjYVRyYW5zZm9ybV1d
OwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9u
KiB0cmFuc2Zvcm1PcCA9IGN1clZhbHVlLT52YWx1ZSgpLT5hdChmdW5jdGlvbkluZGV4KTsKLSAg
ICAgICAgICAgIFt2YWx1ZXMuZ2V0KCkgYWRkT2JqZWN0OmdldFRyYW5zZm9ybUZ1bmN0aW9uVmFs
dWUodHJhbnNmb3JtT3AsIHRyYW5zZm9ybU9wVHlwZSwgYm94U2l6ZSldOwotICAgICAgICB9Ci0K
LSAgICAgICAgQ0FNZWRpYVRpbWluZ0Z1bmN0aW9uKiB0aW1pbmdGdW5jdGlvbiA9IHRpbWluZ0Z1
bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUoY3VyVmFsdWUsIGFuaW1hdGlvbik7Ci0gICAgICAgIFt0
aW1pbmdGdW5jdGlvbnMuZ2V0KCkgYWRkT2JqZWN0OnRpbWluZ0Z1bmN0aW9uXTsKLSAgICB9Ci0g
ICAgCi0gICAgLy8gV2UgdG9zcyB0aGUgbGFzdCB0ZkFycmF5IHZhbHVlIGJlY2F1c2UgaXQgaGFz
IHRvIG9uZSBzaG9ydGVyIHRoYW4gdGhlIG90aGVycy4KLSAgICBbdGltaW5nRnVuY3Rpb25zLmdl
dCgpIHJlbW92ZUxhc3RPYmplY3RdOwotCi0gICAgW2tleWZyYW1lQW5pbSBzZXRLZXlUaW1lczpr
ZXlUaW1lcy5nZXQoKV07Ci0gICAgW2tleWZyYW1lQW5pbSBzZXRWYWx1ZXM6dmFsdWVzLmdldCgp
XTsKLSAgICBba2V5ZnJhbWVBbmltIHNldFRpbWluZ0Z1bmN0aW9uczp0aW1pbmdGdW5jdGlvbnMu
Z2V0KCldOwotCi0jaWYgSEFWRV9NT0RFUk5fUVVBUlRaQ09SRQotICAgIGlmIChOU1N0cmluZyAq
dmFsdWVGdW5jdGlvbk5hbWUgPSBnZXRWYWx1ZUZ1bmN0aW9uTmFtZUZvclRyYW5zZm9ybU9wZXJh
dGlvbih0cmFuc2Zvcm1PcFR5cGUpKQotICAgICAgICBba2V5ZnJhbWVBbmltIHNldFZhbHVlRnVu
Y3Rpb246W0NBVmFsdWVGdW5jdGlvbiBmdW5jdGlvbldpdGhOYW1lOnZhbHVlRnVuY3Rpb25OYW1l
XV07Ci0jZW5kaWYKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBHcmFwaGljc0xheWVyTWFj
OjpzdXNwZW5kQW5pbWF0aW9ucyhkb3VibGUgdGltZSkKLXsKLSAgICBkb3VibGUgdCA9IGN1cnJl
bnRUaW1lVG9NZWRpYVRpbWUodGltZSA/IHRpbWUgOiBjdXJyZW50VGltZSgpKTsKLSAgICBbcHJp
bWFyeUxheWVyKCkgc2V0U3BlZWQ6MF07Ci0gICAgW3ByaW1hcnlMYXllcigpIHNldFRpbWVPZmZz
ZXQ6dF07Ci0KLSAgICAvLyBTdXNwZW5kIHRoZSBhbmltYXRpb25zIG9uIHRoZSBjbG9uZXMgdG9v
LgotICAgIGlmIChMYXllck1hcCogbGF5ZXJDbG9uZU1hcCA9IHByaW1hcnlMYXllckNsb25lcygp
KSB7Ci0gICAgICAgIExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBsYXllckNsb25lTWFw
LT5lbmQoKTsKLSAgICAgICAgZm9yIChMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBsYXll
ckNsb25lTWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgICAgIENBTGF5
ZXIgKmN1cnJMYXllciA9IGl0LT5zZWNvbmQuZ2V0KCk7Ci0gICAgICAgICAgICBbY3VyckxheWVy
IHNldFNwZWVkOjBdOwotICAgICAgICAgICAgW2N1cnJMYXllciBzZXRUaW1lT2Zmc2V0OnRdOwot
ICAgICAgICB9Ci0gICAgfQotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnJlc3VtZUFuaW1h
dGlvbnMoKQotewotICAgIFtwcmltYXJ5TGF5ZXIoKSBzZXRTcGVlZDoxXTsKLSAgICBbcHJpbWFy
eUxheWVyKCkgc2V0VGltZU9mZnNldDowXTsKLQotICAgIC8vIFJlc3VtZSB0aGUgYW5pbWF0aW9u
cyBvbiB0aGUgY2xvbmVzIHRvby4KLSAgICBpZiAoTGF5ZXJNYXAqIGxheWVyQ2xvbmVNYXAgPSBw
cmltYXJ5TGF5ZXJDbG9uZXMoKSkgewotICAgICAgICBMYXllck1hcDo6Y29uc3RfaXRlcmF0b3Ig
ZW5kID0gbGF5ZXJDbG9uZU1hcC0+ZW5kKCk7Ci0gICAgICAgIGZvciAoTGF5ZXJNYXA6OmNvbnN0
X2l0ZXJhdG9yIGl0ID0gbGF5ZXJDbG9uZU1hcC0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7
Ci0gICAgICAgICAgICBDQUxheWVyICpjdXJyTGF5ZXIgPSBpdC0+c2Vjb25kLmdldCgpOwotICAg
ICAgICAgICAgW2N1cnJMYXllciBzZXRTcGVlZDoxXTsKLSAgICAgICAgICAgIFtjdXJyTGF5ZXIg
c2V0VGltZU9mZnNldDowXTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotQ0FMYXllciogR3JhcGhp
Y3NMYXllck1hYzo6aG9zdExheWVyRm9yU3VibGF5ZXJzKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
bV9zdHJ1Y3R1cmFsTGF5ZXIuZ2V0KCkgPyBtX3N0cnVjdHVyYWxMYXllci5nZXQoKSA6IG1fbGF5
ZXIuZ2V0KCk7IAotfQotCi1DQUxheWVyKiBHcmFwaGljc0xheWVyTWFjOjpsYXllckZvclN1cGVy
bGF5ZXIoKSBjb25zdAotewotICAgIHJldHVybiBtX3N0cnVjdHVyYWxMYXllciA/IG1fc3RydWN0
dXJhbExheWVyLmdldCgpIDogbV9sYXllci5nZXQoKTsKLX0KLQotQ0FMYXllciogR3JhcGhpY3NM
YXllck1hYzo6YW5pbWF0ZWRMYXllcihBbmltYXRlZFByb3BlcnR5SUQgcHJvcGVydHkpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIChwcm9wZXJ0eSA9PSBBbmltYXRlZFByb3BlcnR5QmFja2dyb3VuZENv
bG9yKSA/IG1fY29udGVudHNMYXllci5nZXQoKSA6IHByaW1hcnlMYXllcigpOwotfQotCi1HcmFw
aGljc0xheWVyTWFjOjpMYXllck1hcCogR3JhcGhpY3NMYXllck1hYzo6YW5pbWF0ZWRMYXllckNs
b25lcyhBbmltYXRlZFByb3BlcnR5SUQgcHJvcGVydHkpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIChw
cm9wZXJ0eSA9PSBBbmltYXRlZFByb3BlcnR5QmFja2dyb3VuZENvbG9yKSA/IG1fY29udGVudHNM
YXllckNsb25lcy5nZXQoKSA6IHByaW1hcnlMYXllckNsb25lcygpOwotfQotCi1QbGF0Zm9ybUxh
eWVyKiBHcmFwaGljc0xheWVyTWFjOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKLXsKLSAgICByZXR1
cm4gcHJpbWFyeUxheWVyKCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6c2V0RGVidWdC
YWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQotewotICAgIEJFR0lOX0JMT0NLX09C
SkNfRVhDRVBUSU9OUwotICAgIAotICAgIGlmIChjb2xvci5pc1ZhbGlkKCkpCi0gICAgICAgIHNl
dExheWVyQmFja2dyb3VuZENvbG9yKG1fbGF5ZXIuZ2V0KCksIGNvbG9yKTsKLSAgICBlbHNlCi0g
ICAgICAgIGNsZWFyTGF5ZXJCYWNrZ3JvdW5kQ29sb3IobV9sYXllci5nZXQoKSk7Ci0gICAgCi0g
ICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6
OnNldERlYnVnQm9yZGVyKGNvbnN0IENvbG9yJiBjb2xvciwgZmxvYXQgYm9yZGVyV2lkdGgpCi17
Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgCi0gICAgaWYgKGNvbG9yLmlz
VmFsaWQoKSkgewotICAgICAgICBzZXRMYXllckJvcmRlckNvbG9yKG1fbGF5ZXIuZ2V0KCksIGNv
bG9yKTsKLSAgICAgICAgW21fbGF5ZXIuZ2V0KCkgc2V0Qm9yZGVyV2lkdGg6Ym9yZGVyV2lkdGhd
OwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGNsZWFyQm9yZGVyQ29sb3IobV9sYXllci5nZXQoKSk7
Ci0gICAgICAgIFttX2xheWVyLmdldCgpIHNldEJvcmRlcldpZHRoOjBdOwotICAgIH0KLSAgICAK
LSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi19Ci0KLUZsb2F0U2l6ZSBHcmFwaGljc0xh
eWVyTWFjOjpjb25zdHJhaW5lZFNpemUoKSBjb25zdAotewotICAgIGZsb2F0IHRpbGVDb2x1bW5z
ID0gY2VpbGYobV9zaXplLndpZHRoKCkgLyBjVGlsZWRMYXllclRpbGVTaXplKTsKLSAgICBmbG9h
dCB0aWxlUm93cyA9IGNlaWxmKG1fc2l6ZS5oZWlnaHQoKSAvIGNUaWxlZExheWVyVGlsZVNpemUp
OwotICAgIGRvdWJsZSBudW1UaWxlcyA9IHRpbGVDb2x1bW5zICogdGlsZVJvd3M7Ci0gICAgCi0g
ICAgRmxvYXRTaXplIGNvbnN0cmFpbmVkU2l6ZSA9IG1fc2l6ZTsKLSAgICBjb25zdCB1bnNpZ25l
ZCBjTWF4VGlsZUNvdW50ID0gNTEyOwotICAgIHdoaWxlIChudW1UaWxlcyA+IGNNYXhUaWxlQ291
bnQpIHsKLSAgICAgICAgLy8gQ29uc3RyYWluIHRoZSB3aWRlciBkaW1lbnNpb24uCi0gICAgICAg
IGlmIChjb25zdHJhaW5lZFNpemUud2lkdGgoKSA+PSBjb25zdHJhaW5lZFNpemUuaGVpZ2h0KCkp
IHsKLSAgICAgICAgICAgIHRpbGVDb2x1bW5zID0gbWF4KGZsb29yZihjTWF4VGlsZUNvdW50IC8g
dGlsZVJvd3MpLCAxLjBmKTsKLSAgICAgICAgICAgIGNvbnN0cmFpbmVkU2l6ZS5zZXRXaWR0aCh0
aWxlQ29sdW1ucyAqIGNUaWxlZExheWVyVGlsZVNpemUpOwotICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgdGlsZVJvd3MgPSBtYXgoZmxvb3JmKGNNYXhUaWxlQ291bnQgLyB0aWxlQ29sdW1u
cyksIDEuMGYpOwotICAgICAgICAgICAgY29uc3RyYWluZWRTaXplLnNldEhlaWdodCh0aWxlUm93
cyAqIGNUaWxlZExheWVyVGlsZVNpemUpOwotICAgICAgICB9Ci0gICAgICAgIG51bVRpbGVzID0g
dGlsZUNvbHVtbnMgKiB0aWxlUm93czsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIGNvbnN0cmFp
bmVkU2l6ZTsKLX0KLQotYm9vbCBHcmFwaGljc0xheWVyTWFjOjpyZXF1aXJlc1RpbGVkTGF5ZXIo
Y29uc3QgRmxvYXRTaXplJiBzaXplKSBjb25zdAotewotICAgIGlmICghbV9kcmF3c0NvbnRlbnQp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIEZJWE1FOiBjYXRjaCB6ZXJvLXNpemUg
aGVpZ2h0IG9yIHdpZHRoIGhlcmUgKG9yIGVhcmxpZXIpPwotICAgIHJldHVybiBzaXplLndpZHRo
KCkgPiBjTWF4UGl4ZWxEaW1lbnNpb24gfHwgc2l6ZS5oZWlnaHQoKSA+IGNNYXhQaXhlbERpbWVu
c2lvbjsKLX0KLQotdm9pZCBHcmFwaGljc0xheWVyTWFjOjpzd2FwRnJvbU9yVG9UaWxlZExheWVy
KGJvb2wgdXNlVGlsZWRMYXllcikKLXsKLSAgICBpZiAodXNlVGlsZWRMYXllciA9PSBtX3VzaW5n
VGlsZWRMYXllcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQ0dTaXplIHRpbGVTaXplID0gQ0dT
aXplTWFrZShjVGlsZWRMYXllclRpbGVTaXplLCBjVGlsZWRMYXllclRpbGVTaXplKTsKLQotICAg
IFJldGFpblB0cjxDQUxheWVyPiBvbGRMYXllciA9IG1fbGF5ZXIuZ2V0KCk7Ci0gICAgCi0gICAg
Q2xhc3MgbGF5ZXJDbGFzcyA9IHVzZVRpbGVkTGF5ZXIgPyBbV2ViVGlsZWRMYXllciBzZWxmXSA6
IFtXZWJMYXllciBzZWxmXTsKLSAgICBtX2xheWVyLmFkb3B0TlMoW1tsYXllckNsYXNzIGFsbG9j
XSBpbml0XSk7Ci0KLSAgICBtX3VzaW5nVGlsZWRMYXllciA9IHVzZVRpbGVkTGF5ZXI7Ci0KLSAg
ICBpZiAodXNlVGlsZWRMYXllcikgewotICAgICAgICBXZWJUaWxlZExheWVyKiB0aWxlZExheWVy
ID0gKFdlYlRpbGVkTGF5ZXIqKW1fbGF5ZXIuZ2V0KCk7Ci0gICAgICAgIFt0aWxlZExheWVyIHNl
dFRpbGVTaXplOnRpbGVTaXplXTsKLSAgICAgICAgW3RpbGVkTGF5ZXIgc2V0TGV2ZWxzT2ZEZXRh
aWw6MV07Ci0gICAgICAgIFt0aWxlZExheWVyIHNldExldmVsc09mRGV0YWlsQmlhczowXTsKLSAg
ICAgICAgW3RpbGVkTGF5ZXIgc2V0Q29udGVudHNHcmF2aXR5OkAiYm90dG9tTGVmdCJdOwotCi0j
aWYgIUhBVkVfTU9ERVJOX1FVQVJUWkNPUkUKLSAgICAgICAgLy8gVGlsZWQgbGF5ZXIgaGFzIGlz
c3VlcyB3aXRoIGZsaXBwZWQgY29vcmRpbmF0ZXMuCi0gICAgICAgIHNldENvbnRlbnRzT3JpZW50
YXRpb24oQ29tcG9zaXRpbmdDb29yZGluYXRlc1RvcERvd24pOwotI2VuZGlmCi0gICAgfSBlbHNl
IHsKLSNpZiAhSEFWRV9NT0RFUk5fUVVBUlRaQ09SRQotICAgICAgICBzZXRDb250ZW50c09yaWVu
dGF0aW9uKGRlZmF1bHRDb250ZW50c09yaWVudGF0aW9uKCkpOwotI2VuZGlmCi0gICAgfQotICAg
IAotICAgIFttX2xheWVyLmdldCgpIHNldExheWVyT3duZXI6dGhpc107Ci0gICAgc2FmZVNldFN1
YmxheWVycyhtX2xheWVyLmdldCgpLCBbb2xkTGF5ZXIuZ2V0KCkgc3VibGF5ZXJzXSk7Ci0gICAg
Ci0gICAgW1tvbGRMYXllci5nZXQoKSBzdXBlcmxheWVyXSByZXBsYWNlU3VibGF5ZXI6b2xkTGF5
ZXIuZ2V0KCkgd2l0aDptX2xheWVyLmdldCgpXTsKLQotICAgIHVwZGF0ZUNvbnRlbnRzVHJhbnNm
b3JtKCk7Ci0KLSAgICB1cGRhdGVMYXllclBvc2l0aW9uKCk7Ci0gICAgdXBkYXRlTGF5ZXJTaXpl
KCk7Ci0gICAgdXBkYXRlQW5jaG9yUG9pbnQoKTsKLSAgICB1cGRhdGVUcmFuc2Zvcm0oKTsKLSAg
ICB1cGRhdGVDaGlsZHJlblRyYW5zZm9ybSgpOwotICAgIHVwZGF0ZU1hc2tzVG9Cb3VuZHMoKTsK
LSAgICB1cGRhdGVDb250ZW50c09wYXF1ZSgpOwotICAgIHVwZGF0ZUJhY2tmYWNlVmlzaWJpbGl0
eSgpOwotICAgIHVwZGF0ZUxheWVyQmFja2dyb3VuZENvbG9yKCk7Ci0gICAgCi0gICAgdXBkYXRl
T3BhY2l0eU9uTGF5ZXIoKTsKLSAgICAKLSNpZm5kZWYgTkRFQlVHCi0gICAgU3RyaW5nIG5hbWUg
PSBTdHJpbmc6OmZvcm1hdCgiQ0FMYXllciglcCkgR3JhcGhpY3NMYXllciglcCkgIiwgbV9sYXll
ci5nZXQoKSwgdGhpcykgKyBtX25hbWU7Ci0gICAgW21fbGF5ZXIuZ2V0KCkgc2V0TmFtZTpuYW1l
XTsKLSNlbmRpZgotCi0gICAgLy8gbW92ZSBvdmVyIGFuaW1hdGlvbnMKLSAgICBtb3ZlT3JDb3B5
QW5pbWF0aW9uc0ZvclByb3BlcnR5KE1vdmUsIEFuaW1hdGVkUHJvcGVydHlXZWJraXRUcmFuc2Zv
cm0sIG9sZExheWVyLmdldCgpLCBtX2xheWVyLmdldCgpKTsKLSAgICBtb3ZlT3JDb3B5QW5pbWF0
aW9uc0ZvclByb3BlcnR5KE1vdmUsIEFuaW1hdGVkUHJvcGVydHlPcGFjaXR5LCBvbGRMYXllci5n
ZXQoKSwgbV9sYXllci5nZXQoKSk7Ci0gICAgbW92ZU9yQ29weUFuaW1hdGlvbnNGb3JQcm9wZXJ0
eShNb3ZlLCBBbmltYXRlZFByb3BlcnR5QmFja2dyb3VuZENvbG9yLCBvbGRMYXllci5nZXQoKSwg
bV9sYXllci5nZXQoKSk7Ci0gICAgCi0gICAgLy8gbmVlZCB0byB0ZWxsIG5ldyBsYXllciB0byBk
cmF3IGl0c2VsZgotICAgIHNldE5lZWRzRGlzcGxheSgpOwotICAgIAotICAgIHVwZGF0ZURlYnVn
SW5kaWNhdG9ycygpOwotfQotCi1HcmFwaGljc0xheWVyOjpDb21wb3NpdGluZ0Nvb3JkaW5hdGVz
T3JpZW50YXRpb24gR3JhcGhpY3NMYXllck1hYzo6ZGVmYXVsdENvbnRlbnRzT3JpZW50YXRpb24o
KSBjb25zdAotewotI2lmICFIQVZFX01PREVSTl9RVUFSVFpDT1JFCi0gICAgLy8gT2xkZXIgUXVh
cnR6Q29yZSBkb2VzIG5vdCBzdXBwb3J0IC1nZW9tZXRyeUZsaXBwZWQsIHNvIHdlIG1hbnVhbGx5
IGZsaXAgdGhlIHJvb3QKLSAgICAvLyBsYXllciBnZW9tZXRyeSwgYW5kIHRoZW4gZmxpcCB0aGUg
Y29udGVudHMgb2YgZWFjaCBsYXllciBiYWNrIHNvIHRoYXQgdGhlIENUTSBmb3IgQ0cKLSAgICAv
LyBpcyB1bmZsaXBwZWQsIGFsbG93aW5nIGl0IHRvIGRvIHRoZSBjb3JyZWN0IGZvbnQgYXV0by1o
aW50aW5nLgotICAgIHJldHVybiBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzQm90dG9tVXA7Ci0jZWxz
ZQotICAgIHJldHVybiBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzVG9wRG93bjsKLSNlbmRpZgotfQot
Ci12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnVwZGF0ZUNvbnRlbnRzVHJhbnNmb3JtKCkKLXsKLSNp
ZiAhSEFWRV9NT0RFUk5fUVVBUlRaQ09SRQotICAgIGlmIChjb250ZW50c09yaWVudGF0aW9uKCkg
PT0gQ29tcG9zaXRpbmdDb29yZGluYXRlc0JvdHRvbVVwKSB7Ci0gICAgICAgIENHQWZmaW5lVHJh
bnNmb3JtIGNvbnRlbnRzVHJhbnNmb3JtID0gQ0dBZmZpbmVUcmFuc2Zvcm1NYWtlU2NhbGUoMSwg
LTEpOwotICAgICAgICBjb250ZW50c1RyYW5zZm9ybSA9IENHQWZmaW5lVHJhbnNmb3JtVHJhbnNs
YXRlKGNvbnRlbnRzVHJhbnNmb3JtLCAwLCAtW21fbGF5ZXIuZ2V0KCkgYm91bmRzXS5zaXplLmhl
aWdodCk7Ci0gICAgICAgIFttX2xheWVyLmdldCgpIHNldENvbnRlbnRzVHJhbnNmb3JtOmNvbnRl
bnRzVHJhbnNmb3JtXTsKLSAgICB9Ci0jZW5kaWYKLX0KLQotdm9pZCBHcmFwaGljc0xheWVyTWFj
OjpzZXR1cENvbnRlbnRzTGF5ZXIoQ0FMYXllciogY29udGVudHNMYXllcikKLXsKLSAgICAvLyBU
dXJuIG9mZiBpbXBsaWNpdCBhbmltYXRpb25zIG9uIHRoZSBpbm5lciBsYXllci4KLSAgICBbY29u
dGVudHNMYXllciBzZXRTdHlsZTpbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0Om51
bGxBY3Rpb25zRGljdGlvbmFyeSgpIGZvcktleTpAImFjdGlvbnMiXV07Ci0gICAgW2NvbnRlbnRz
TGF5ZXIgc2V0TWFza3NUb0JvdW5kczpZRVNdOwotCi0gICAgaWYgKGRlZmF1bHRDb250ZW50c09y
aWVudGF0aW9uKCkgPT0gQ29tcG9zaXRpbmdDb29yZGluYXRlc0JvdHRvbVVwKSB7Ci0gICAgICAg
IENBVHJhbnNmb3JtM0QgZmxpcHBlciA9IHsKLSAgICAgICAgICAgIDEuMGYsIDAuMGYsIDAuMGYs
IDAuMGYsCi0gICAgICAgICAgICAwLjBmLCAtMS4wZiwgMC4wZiwgMC4wZiwKLSAgICAgICAgICAg
IDAuMGYsIDAuMGYsIDEuMGYsIDAuMGYsCi0gICAgICAgICAgICAwLjBmLCAwLjBmLCAwLjBmLCAx
LjBmfTsKLSAgICAgICAgW2NvbnRlbnRzTGF5ZXIgc2V0VHJhbnNmb3JtOmZsaXBwZXJdOwotICAg
ICAgICBbY29udGVudHNMYXllciBzZXRBbmNob3JQb2ludDpDR1BvaW50TWFrZSgwLjBmLCAxLjBm
KV07Ci0gICAgfSBlbHNlCi0gICAgICAgIFtjb250ZW50c0xheWVyIHNldEFuY2hvclBvaW50OkNH
UG9pbnRaZXJvXTsKLQotICAgIGlmIChzaG93RGVidWdCb3JkZXJzKCkpIHsKLSAgICAgICAgc2V0
TGF5ZXJCb3JkZXJDb2xvcihjb250ZW50c0xheWVyLCBDb2xvcigwLCAwLCAxMjgsIDE4MCkpOwot
ICAgICAgICBbY29udGVudHNMYXllciBzZXRCb3JkZXJXaWR0aDoxLjBmXTsKLSAgICB9Ci19Ci0K
LUNBTGF5ZXIgKkdyYXBoaWNzTGF5ZXJNYWM6OmZpbmRPck1ha2VDbG9uZShDbG9uZUlEIGNsb25l
SUQsIENBTGF5ZXIgKnNvdXJjZUxheWVyLCBMYXllck1hcCogY2xvbmVzLCBDbG9uZUxldmVsIGNs
b25lTGV2ZWwpCi17Ci0gICAgaWYgKCFzb3VyY2VMYXllcikKLSAgICAgICAgcmV0dXJuIDA7Ci0K
LSAgICBDQUxheWVyICpyZXN1bHRMYXllcjsKLQotICAgIC8vIEFkZCB3aXRoIGEgZHVtbXkgdmFs
dWUgdG8gZ2V0IGFuIGl0ZXJhdG9yIGZvciB0aGUgaW5zZXJ0aW9uIHBvc2l0aW9uLCBhbmQgYSBi
b29sZWFuIHRoYXQgdGVsbHMKLSAgICAvLyB1cyB3aGV0aGVyIHRoZXJlJ3MgYW4gaXRlbSB0aGVy
ZS4gVGhpcyB0ZWNobmlxdWUgYXZvaWRzIHR3byBoYXNoIGxvb2t1cHMuCi0gICAgUmV0YWluUHRy
PENBTGF5ZXI+IGR1bW15OwotICAgIHBhaXI8TGF5ZXJNYXA6Oml0ZXJhdG9yLCBib29sPiBhZGRS
ZXN1bHQgPSBjbG9uZXMtPmFkZChjbG9uZUlELCBkdW1teSk7Ci0gICAgaWYgKCFhZGRSZXN1bHQu
c2Vjb25kKSB7Ci0gICAgICAgIC8vIFZhbHVlIHdhcyBub3QgYWRkZWQsIHNvIGl0IGV4aXN0cyBh
bHJlYWR5LgotICAgICAgICByZXN1bHRMYXllciA9IGFkZFJlc3VsdC5maXJzdC0+c2Vjb25kLmdl
dCgpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHJlc3VsdExheWVyID0gY2xvbmVMYXllcihzb3Vy
Y2VMYXllciwgY2xvbmVMZXZlbCk7Ci0jaWZuZGVmIE5ERUJVRwotICAgICAgICBbcmVzdWx0TGF5
ZXIgc2V0TmFtZTpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkNsb25lICVkIG9mIGxheWVy
ICVAIiwgY2xvbmVJRFswVV0sIHNvdXJjZUxheWVyXV07Ci0jZW5kaWYKLSAgICAgICAgYWRkUmVz
dWx0LmZpcnN0LT5zZWNvbmQgPSByZXN1bHRMYXllcjsKLSAgICB9Ci0KLSAgICByZXR1cm4gcmVz
dWx0TGF5ZXI7Ci19ICAgCi0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6ZW5zdXJlQ2xvbmVMYXll
cnMoQ2xvbmVJRCBjbG9uZUlELCBDQUxheWVyIComIHByaW1hcnlMYXllciwgQ0FMYXllciAqJiBz
dHJ1Y3R1cmFsTGF5ZXIsIENBTGF5ZXIgKiYgY29udGVudHNMYXllciwgQ2xvbmVMZXZlbCBjbG9u
ZUxldmVsKQotewotICAgIHN0cnVjdHVyYWxMYXllciA9IG5pbDsKLSAgICBjb250ZW50c0xheWVy
ID0gbmlsOwotCi0gICAgaWYgKCFtX2xheWVyQ2xvbmVzKQotICAgICAgICBtX2xheWVyQ2xvbmVz
ID0gbmV3IExheWVyTWFwOwotCi0gICAgaWYgKCFtX3N0cnVjdHVyYWxMYXllckNsb25lcyAmJiBt
X3N0cnVjdHVyYWxMYXllcikKLSAgICAgICAgbV9zdHJ1Y3R1cmFsTGF5ZXJDbG9uZXMgPSBuZXcg
TGF5ZXJNYXA7Ci0KLSAgICBpZiAoIW1fY29udGVudHNMYXllckNsb25lcyAmJiBtX2NvbnRlbnRz
TGF5ZXIpCi0gICAgICAgIG1fY29udGVudHNMYXllckNsb25lcyA9IG5ldyBMYXllck1hcDsKLQot
ICAgIHByaW1hcnlMYXllciA9IGZpbmRPck1ha2VDbG9uZShjbG9uZUlELCBtX2xheWVyLmdldCgp
LCBtX2xheWVyQ2xvbmVzLmdldCgpLCBjbG9uZUxldmVsKTsKLSAgICBzdHJ1Y3R1cmFsTGF5ZXIg
PSBmaW5kT3JNYWtlQ2xvbmUoY2xvbmVJRCwgbV9zdHJ1Y3R1cmFsTGF5ZXIuZ2V0KCksIG1fc3Ry
dWN0dXJhbExheWVyQ2xvbmVzLmdldCgpLCBjbG9uZUxldmVsKTsKLSAgICBjb250ZW50c0xheWVy
ID0gZmluZE9yTWFrZUNsb25lKGNsb25lSUQsIG1fY29udGVudHNMYXllci5nZXQoKSwgbV9jb250
ZW50c0xheWVyQ2xvbmVzLmdldCgpLCBjbG9uZUxldmVsKTsKLX0KLQotdm9pZCBHcmFwaGljc0xh
eWVyTWFjOjpyZW1vdmVDbG9uZUxheWVycygpCi17Ci0gICAgbV9sYXllckNsb25lcyA9IDA7Ci0g
ICAgbV9zdHJ1Y3R1cmFsTGF5ZXJDbG9uZXMgPSAwOwotICAgIG1fY29udGVudHNMYXllckNsb25l
cyA9IDA7Ci19Ci0KLUZsb2F0UG9pbnQgR3JhcGhpY3NMYXllck1hYzo6cG9zaXRpb25Gb3JDbG9u
ZVJvb3RMYXllcigpIGNvbnN0Ci17Ci0gICAgLy8gVGhpcyBjYW4gZ2V0IGNhbGxlZCBkdXJpbmcg
YSBzeW5jIHdoZW4gd2UndmUganVzdCByZW1vdmVkIHRoZSBtX3JlcGxpY2FMYXllci4KLSAgICBp
ZiAoIW1fcmVwbGljYUxheWVyKQotICAgICAgICByZXR1cm4gRmxvYXRQb2ludCgpOwotCi0gICAg
RmxvYXRQb2ludCByZXBsaWNhUG9zaXRpb24gPSBtX3JlcGxpY2FMYXllci0+cmVwbGljYXRlZExh
eWVyUG9zaXRpb24oKTsKLSAgICByZXR1cm4gRmxvYXRQb2ludChyZXBsaWNhUG9zaXRpb24ueCgp
ICsgbV9hbmNob3JQb2ludC54KCkgKiBtX3NpemUud2lkdGgoKSwKLSAgICAgICAgICAgICAgICAg
ICAgICByZXBsaWNhUG9zaXRpb24ueSgpICsgbV9hbmNob3JQb2ludC55KCkgKiBtX3NpemUuaGVp
Z2h0KCkpOwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnByb3BhZ2F0ZUxheWVyQ2hhbmdl
VG9SZXBsaWNhcygpCi17Ci0gICAgZm9yIChHcmFwaGljc0xheWVyKiBjdXJyTGF5ZXIgPSB0aGlz
OyBjdXJyTGF5ZXI7IGN1cnJMYXllciA9IGN1cnJMYXllci0+cGFyZW50KCkpIHsKLSAgICAgICAg
R3JhcGhpY3NMYXllck1hYyogY3VyckxheWVyQ0EgPSBzdGF0aWNfY2FzdDxHcmFwaGljc0xheWVy
TWFjKj4oY3VyckxheWVyKTsKLSAgICAgICAgaWYgKCFjdXJyTGF5ZXJDQS0+aGFzQ2xvbmVMYXll
cnMoKSkKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGlmIChjdXJyTGF5ZXJDQS0+cmVw
bGljYUxheWVyKCkpCi0gICAgICAgICAgICBzdGF0aWNfY2FzdDxHcmFwaGljc0xheWVyTWFjKj4o
Y3VyckxheWVyQ0EtPnJlcGxpY2FMYXllcigpKS0+bm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKFJl
cGxpY2F0ZWRMYXllckNoYW5nZWQpOwotICAgIH0KLX0KLQotQ0FMYXllciAqR3JhcGhpY3NMYXll
ck1hYzo6ZmV0Y2hDbG9uZUxheWVycyhHcmFwaGljc0xheWVyKiByZXBsaWNhUm9vdCwgUmVwbGlj
YVN0YXRlJiByZXBsaWNhU3RhdGUsIENsb25lTGV2ZWwgY2xvbmVMZXZlbCkKLXsKLSAgICBDQUxh
eWVyICpwcmltYXJ5TGF5ZXI7Ci0gICAgQ0FMYXllciAqc3RydWN0dXJhbExheWVyOwotICAgIENB
TGF5ZXIgKmNvbnRlbnRzTGF5ZXI7Ci0gICAgZW5zdXJlQ2xvbmVMYXllcnMocmVwbGljYVN0YXRl
LmNsb25lSUQoKSwgcHJpbWFyeUxheWVyLCBzdHJ1Y3R1cmFsTGF5ZXIsIGNvbnRlbnRzTGF5ZXIs
IGNsb25lTGV2ZWwpOwotCi0gICAgaWYgKG1fbWFza0xheWVyKSB7Ci0gICAgICAgIENBTGF5ZXIg
Km1hc2tDbG9uZSA9IHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXJNYWMqPihtX21hc2tMYXllcikt
PmZldGNoQ2xvbmVMYXllcnMocmVwbGljYVJvb3QsIHJlcGxpY2FTdGF0ZSwgSW50ZXJtZWRpYXRl
Q2xvbmVMZXZlbCk7Ci0gICAgICAgIFtwcmltYXJ5TGF5ZXIgc2V0TWFzazptYXNrQ2xvbmVdOwot
ICAgIH0KLQotICAgIGlmIChtX3JlcGxpY2F0ZWRMYXllcikgewotICAgICAgICAvLyBXZSBhcmUg
YSByZXBsaWNhIGJlaW5nIGFza2VkIGZvciBjbG9uZXMgb2Ygb3VyIGxheWVycy4KLSAgICAgICAg
Q0FMYXllciAqcmVwbGljYVJvb3QgPSByZXBsaWNhdGVkTGF5ZXJSb290KHJlcGxpY2FTdGF0ZSk7
Ci0gICAgICAgIGlmICghcmVwbGljYVJvb3QpCi0gICAgICAgICAgICByZXR1cm4gbmlsOwotCi0g
ICAgICAgIGlmIChzdHJ1Y3R1cmFsTGF5ZXIpIHsKLSAgICAgICAgICAgIFtzdHJ1Y3R1cmFsTGF5
ZXIgaW5zZXJ0U3VibGF5ZXI6cmVwbGljYVJvb3QgYXRJbmRleDowXTsKLSAgICAgICAgICAgIHJl
dHVybiBzdHJ1Y3R1cmFsTGF5ZXI7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIFtwcmlt
YXJ5TGF5ZXIgaW5zZXJ0U3VibGF5ZXI6cmVwbGljYVJvb3QgYXRJbmRleDowXTsKLSAgICAgICAg
cmV0dXJuIHByaW1hcnlMYXllcjsKLSAgICB9Ci0KLSAgICBjb25zdCBWZWN0b3I8R3JhcGhpY3NM
YXllcio+JiBjaGlsZExheWVycyA9IGNoaWxkcmVuKCk7Ci0gICAgTlNNdXRhYmxlQXJyYXkqIGNs
b25hbFN1YmxheWVycyA9IG5pbDsKLQotICAgIENBTGF5ZXIgKnJlcGxpY2FMYXllciA9IG5pbDsK
LSAgICBpZiAobV9yZXBsaWNhTGF5ZXIgJiYgbV9yZXBsaWNhTGF5ZXIgIT0gcmVwbGljYVJvb3Qp
IHsKLSAgICAgICAgLy8gV2UgaGF2ZSBuZXN0ZWQgcmVwbGljYXMuIEFzayB0aGUgcmVwbGljYSBs
YXllciBmb3IgYSBjbG9uZSBvZiBpdHMgY29udGVudHMuCi0gICAgICAgIHJlcGxpY2FTdGF0ZS5z
ZXRCcmFuY2hUeXBlKFJlcGxpY2FTdGF0ZTo6UmVwbGljYUJyYW5jaCk7Ci0gICAgICAgIHJlcGxp
Y2FMYXllciA9IHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXJNYWMqPihtX3JlcGxpY2FMYXllcikt
PmZldGNoQ2xvbmVMYXllcnMocmVwbGljYVJvb3QsIHJlcGxpY2FTdGF0ZSwgUm9vdENsb25lTGV2
ZWwpOwotICAgICAgICByZXBsaWNhU3RhdGUuc2V0QnJhbmNoVHlwZShSZXBsaWNhU3RhdGU6OkNo
aWxkQnJhbmNoKTsKLSAgICB9Ci0gICAgCi0gICAgaWYgKHJlcGxpY2FMYXllciB8fCBzdHJ1Y3R1
cmFsTGF5ZXIgfHwgY29udGVudHNMYXllciB8fCBjaGlsZExheWVycy5zaXplKCkgPiAwKSB7Ci0g
ICAgICAgIGNsb25hbFN1YmxheWVycyA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdOwot
Ci0gICAgICAgIGlmIChzdHJ1Y3R1cmFsTGF5ZXIpIHsKLSAgICAgICAgICAgIC8vIFJlcGxpY2Fz
IHJlbmRlciBiZWhpbmQgdGhlIGFjdHVhbCBsYXllciBjb250ZW50LgotICAgICAgICAgICAgaWYg
KHJlcGxpY2FMYXllcikKLSAgICAgICAgICAgICAgICBbY2xvbmFsU3VibGF5ZXJzIGFkZE9iamVj
dDpyZXBsaWNhTGF5ZXJdOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgLy8gQWRkIHRo
ZSBwcmltYXJ5IGxheWVyIG5leHQuIEV2ZW4gaWYgd2UgaGF2ZSBuZWdhdGl2ZSB6LW9yZGVyIGNo
aWxkcmVuLCB0aGUgcHJpbWFyeSBsYXllciBhbHdheXMgY29tZXMgYmVoaW5kLgotICAgICAgICAg
ICAgW2Nsb25hbFN1YmxheWVycyBhZGRPYmplY3Q6cHJpbWFyeUxheWVyXTsKLSAgICAgICAgfSBl
bHNlIGlmIChjb250ZW50c0xheWVyKSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogYWRkIHRoZSBj
b250ZW50cyBsYXllciBpbiB0aGUgY29ycmVjdCBvcmRlciB3aXRoIG5lZ2F0aXZlIHotb3JkZXIg
Y2hpbGRyZW4uCi0gICAgICAgICAgICAvLyBUaGlzIGRvZXMgbm90IGNhdXNlIHZpc2libGUgcmVu
ZGVyaW5nIGlzc3VlcyBiZWNhdXNlIGN1cnJlbnRseSBjb250ZW50cyBsYXllcnMgYXJlIG9ubHkg
dXNlZAotICAgICAgICAgICAgLy8gZm9yIHJlcGxhY2VkIGVsZW1lbnRzIHRoYXQgZG9uJ3QgaGF2
ZSBjaGlsZHJlbi4KLSAgICAgICAgICAgIFtjbG9uYWxTdWJsYXllcnMgYWRkT2JqZWN0OmNvbnRl
bnRzTGF5ZXJdOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICByZXBsaWNhU3RhdGUucHVz
aChSZXBsaWNhU3RhdGU6OkNoaWxkQnJhbmNoKTsKLQotICAgICAgICBzaXplX3QgbnVtQ2hpbGRy
ZW4gPSBjaGlsZExheWVycy5zaXplKCk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bnVtQ2hpbGRyZW47ICsraSkgewotICAgICAgICAgICAgR3JhcGhpY3NMYXllck1hYyogY3VyQ2hp
bGQgPSBzdGF0aWNfY2FzdDxHcmFwaGljc0xheWVyTWFjKj4oY2hpbGRMYXllcnNbaV0pOwotCi0g
ICAgICAgICAgICBDQUxheWVyICpjaGlsZExheWVyID0gY3VyQ2hpbGQtPmZldGNoQ2xvbmVMYXll
cnMocmVwbGljYVJvb3QsIHJlcGxpY2FTdGF0ZSwgSW50ZXJtZWRpYXRlQ2xvbmVMZXZlbCk7Ci0g
ICAgICAgICAgICBpZiAoY2hpbGRMYXllcikKLSAgICAgICAgICAgICAgICBbY2xvbmFsU3VibGF5
ZXJzIGFkZE9iamVjdDpjaGlsZExheWVyXTsKLSAgICAgICAgfQotCi0gICAgICAgIHJlcGxpY2FT
dGF0ZS5wb3AoKTsKLQotICAgICAgICBbY2xvbmFsU3VibGF5ZXJzIG1ha2VPYmplY3RzUGVyZm9y
bVNlbGVjdG9yOkBzZWxlY3RvcihyZW1vdmVGcm9tU3VwZXJsYXllcildOwotICAgIH0KLSAgICAK
LSAgICBDQUxheWVyICpyZXN1bHQ7Ci0gICAgaWYgKHN0cnVjdHVyYWxMYXllcikgewotICAgICAg
ICBbc3RydWN0dXJhbExheWVyIHNldFN1YmxheWVyczpjbG9uYWxTdWJsYXllcnNdOwotCi0gICAg
ICAgIGlmIChjb250ZW50c0xheWVyKSB7Ci0gICAgICAgICAgICAvLyBJZiB3ZSBoYXZlIGEgdHJh
bnNmb3JtIGxheWVyLCB0aGVuIHRoZSBjb250ZW50cyBsYXllciBpcyBwYXJlbnRlZCBpbiB0aGUg
Ci0gICAgICAgICAgICAvLyBwcmltYXJ5IGxheWVyICh3aGljaCBpcyBpdHNlbGYgYSBjaGlsZCBv
ZiB0aGUgdHJhbnNmb3JtIGxheWVyKS4KLSAgICAgICAgICAgIFtwcmltYXJ5TGF5ZXIgc2V0U3Vi
bGF5ZXJzOm5pbF07Ci0gICAgICAgICAgICBbcHJpbWFyeUxheWVyIGFkZFN1YmxheWVyOmNvbnRl
bnRzTGF5ZXJdOwotICAgICAgICB9Ci0KLSAgICAgICAgcmVzdWx0ID0gc3RydWN0dXJhbExheWVy
OwotICAgIH0gZWxzZSB7Ci0gICAgICAgIFtwcmltYXJ5TGF5ZXIgc2V0U3VibGF5ZXJzOmNsb25h
bFN1YmxheWVyc107Ci0gICAgICAgIHJlc3VsdCA9IHByaW1hcnlMYXllcjsKLSAgICB9Ci0KLSAg
ICBbY2xvbmFsU3VibGF5ZXJzIHJlbGVhc2VdOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLUNB
TGF5ZXIgKkdyYXBoaWNzTGF5ZXJNYWM6OmNsb25lTGF5ZXIoQ0FMYXllciAqbGF5ZXIsIENsb25l
TGV2ZWwgY2xvbmVMZXZlbCkKLXsKLSAgICBzdGF0aWMgQ2xhc3MgdHJhbnNmb3JtTGF5ZXJDbGFz
cyA9IE5TQ2xhc3NGcm9tU3RyaW5nKEAiQ0FUcmFuc2Zvcm1MYXllciIpOwotICAgIENBTGF5ZXIg
Km5ld0xheWVyID0gbmlsOwotICAgIGlmIChbbGF5ZXIgaXNLaW5kT2ZDbGFzczp0cmFuc2Zvcm1M
YXllckNsYXNzXSkKLSAgICAgICAgbmV3TGF5ZXIgPSBbdHJhbnNmb3JtTGF5ZXJDbGFzcyBsYXll
cl07Ci0gICAgZWxzZQotICAgICAgICBuZXdMYXllciA9IFtDQUxheWVyIGxheWVyXTsKLQotICAg
IFtuZXdMYXllciBzZXRTdHlsZTpbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0Om51
bGxBY3Rpb25zRGljdGlvbmFyeSgpIGZvcktleTpAImFjdGlvbnMiXV07Ci0gICAgCi0gICAgW25l
d0xheWVyIHNldFBvc2l0aW9uOltsYXllciBwb3NpdGlvbl1dOwotICAgIFtuZXdMYXllciBzZXRC
b3VuZHM6W2xheWVyIGJvdW5kc11dOwotICAgIFtuZXdMYXllciBzZXRBbmNob3JQb2ludDpbbGF5
ZXIgYW5jaG9yUG9pbnRdXTsKLSNpZiBIQVZFX01PREVSTl9RVUFSVFpDT1JFCi0gICAgW25ld0xh
eWVyIHNldEFuY2hvclBvaW50WjpbbGF5ZXIgYW5jaG9yUG9pbnRaXV07Ci0jZW5kaWYKLSAgICBb
bmV3TGF5ZXIgc2V0VHJhbnNmb3JtOltsYXllciB0cmFuc2Zvcm1dXTsKLSAgICBbbmV3TGF5ZXIg
c2V0U3VibGF5ZXJUcmFuc2Zvcm06W2xheWVyIHN1YmxheWVyVHJhbnNmb3JtXV07Ci0gICAgW25l
d0xheWVyIHNldENvbnRlbnRzOltsYXllciBjb250ZW50c11dOwotICAgIFtuZXdMYXllciBzZXRN
YXNrc1RvQm91bmRzOltsYXllciBtYXNrc1RvQm91bmRzXV07Ci0gICAgW25ld0xheWVyIHNldERv
dWJsZVNpZGVkOltsYXllciBpc0RvdWJsZVNpZGVkXV07Ci0gICAgW25ld0xheWVyIHNldE9wYXF1
ZTpbbGF5ZXIgaXNPcGFxdWVdXTsKLSAgICBbbmV3TGF5ZXIgc2V0QmFja2dyb3VuZENvbG9yOlts
YXllciBiYWNrZ3JvdW5kQ29sb3JdXTsKLQotICAgIGlmIChjbG9uZUxldmVsID09IEludGVybWVk
aWF0ZUNsb25lTGV2ZWwpIHsKLSAgICAgICAgW25ld0xheWVyIHNldE9wYWNpdHk6W2xheWVyIG9w
YWNpdHldXTsKLSAgICAgICAgbW92ZU9yQ29weUFuaW1hdGlvbnNGb3JQcm9wZXJ0eShDb3B5LCBB
bmltYXRlZFByb3BlcnR5V2Via2l0VHJhbnNmb3JtLCBsYXllciwgbmV3TGF5ZXIpOwotICAgICAg
ICBtb3ZlT3JDb3B5QW5pbWF0aW9uc0ZvclByb3BlcnR5KENvcHksIEFuaW1hdGVkUHJvcGVydHlP
cGFjaXR5LCBsYXllciwgbmV3TGF5ZXIpOwotICAgIH0KLSAgICAKLSAgICBpZiAoc2hvd0RlYnVn
Qm9yZGVycygpKSB7Ci0gICAgICAgIHNldExheWVyQm9yZGVyQ29sb3IobmV3TGF5ZXIsIENvbG9y
KDI1NSwgMTIyLCAyNTEpKTsKLSAgICAgICAgW25ld0xheWVyIHNldEJvcmRlcldpZHRoOjJdOwot
ICAgIH0KLSAgICAKLSAgICByZXR1cm4gbmV3TGF5ZXI7Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXll
ck1hYzo6c2V0T3BhY2l0eUludGVybmFsKGZsb2F0IGFjY3VtdWxhdGVkT3BhY2l0eSkKLXsKLSAg
ICBMYXllck1hcCogbGF5ZXJDbG9uZU1hcCA9IDA7Ci0gICAgCi0gICAgaWYgKHByZXNlcnZlczNE
KCkpIHsKLSAgICAgICAgW21fbGF5ZXIuZ2V0KCkgc2V0T3BhY2l0eTphY2N1bXVsYXRlZE9wYWNp
dHldOwotICAgICAgICBsYXllckNsb25lTWFwID0gbV9sYXllckNsb25lcy5nZXQoKTsKLSAgICB9
IGVsc2UgewotICAgICAgICBbcHJpbWFyeUxheWVyKCkgc2V0T3BhY2l0eTphY2N1bXVsYXRlZE9w
YWNpdHldOwotICAgICAgICBsYXllckNsb25lTWFwID0gcHJpbWFyeUxheWVyQ2xvbmVzKCk7Ci0g
ICAgfQotCi0gICAgaWYgKGxheWVyQ2xvbmVNYXApIHsKLSAgICAgICAgTGF5ZXJNYXA6OmNvbnN0
X2l0ZXJhdG9yIGVuZCA9IGxheWVyQ2xvbmVNYXAtPmVuZCgpOwotICAgICAgICBmb3IgKExheWVy
TWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGxheWVyQ2xvbmVNYXAtPmJlZ2luKCk7IGl0ICE9IGVu
ZDsgKytpdCkgewotICAgICAgICAgICAgaWYgKG1fcmVwbGljYUxheWVyICYmIGlzUmVwbGljYXRl
ZFJvb3RDbG9uZShpdC0+Zmlyc3QpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICAgICAgQ0FMYXllciAqY3VyckxheWVyID0gaXQtPnNlY29uZC5nZXQoKTsKLSAgICAgICAgICAg
IFtjdXJyTGF5ZXIgc2V0T3BhY2l0eTptX29wYWNpdHldOwotICAgICAgICB9Ci0gICAgfQotfQot
Ci12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnVwZGF0ZU9wYWNpdHlPbkxheWVyKCkKLXsKLSNpZiAh
SEFWRV9NT0RFUk5fUVVBUlRaQ09SRQotICAgIC8vIERpc3RyaWJ1dGUgb3BhY2l0eSBlaXRoZXIg
dG8gb3VyIG93biBsYXllciBvciB0byBvdXIgY2hpbGRyZW4uIFdlIHBhc3MgaW4gdGhlIAotICAg
IC8vIGNvbnRyaWJ1dGlvbiBmcm9tIG91ciBwYXJlbnQocykuCi0gICAgZGlzdHJpYnV0ZU9wYWNp
dHkocGFyZW50KCkgPyBwYXJlbnQoKS0+YWNjdW11bGF0ZWRPcGFjaXR5KCkgOiAxKTsKLSNlbHNl
Ci0gICAgW3ByaW1hcnlMYXllcigpIHNldE9wYWNpdHk6bV9vcGFjaXR5XTsKLQotICAgIGlmIChM
YXllck1hcCogbGF5ZXJDbG9uZU1hcCA9IHByaW1hcnlMYXllckNsb25lcygpKSB7Ci0gICAgICAg
IExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBsYXllckNsb25lTWFwLT5lbmQoKTsKLSAg
ICAgICAgZm9yIChMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBsYXllckNsb25lTWFwLT5i
ZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgICAgIGlmIChtX3JlcGxpY2FMYXll
ciAmJiBpc1JlcGxpY2F0ZWRSb290Q2xvbmUoaXQtPmZpcnN0KSkKLSAgICAgICAgICAgICAgICBj
b250aW51ZTsKLQotICAgICAgICAgICAgQ0FMYXllciAqY3VyckxheWVyID0gaXQtPnNlY29uZC5n
ZXQoKTsKLSAgICAgICAgICAgIFtjdXJyTGF5ZXIgc2V0T3BhY2l0eTptX29wYWNpdHldOwotICAg
ICAgICB9Ci0gICAgICAgIAotICAgIH0KLSNlbmRpZgotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJN
YWM6Om5vdGVTdWJsYXllcnNDaGFuZ2VkKCkKLXsKLSAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5n
ZWQoQ2hpbGRyZW5DaGFuZ2VkKTsKLSAgICBwcm9wYWdhdGVMYXllckNoYW5nZVRvUmVwbGljYXMo
KTsKLX0KLQotdm9pZCBHcmFwaGljc0xheWVyTWFjOjpub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQo
TGF5ZXJDaGFuZ2VGbGFncyBmbGFncykKLXsKLSAgICBpZiAoIW1fdW5jb21taXR0ZWRDaGFuZ2Vz
ICYmIG1fY2xpZW50KQotICAgICAgICBtX2NsaWVudC0+bm90aWZ5U3luY1JlcXVpcmVkKHRoaXMp
OwotCi0gICAgbV91bmNvbW1pdHRlZENoYW5nZXMgfD0gZmxhZ3M7Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKSW5k
ZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViTGF5ZXIuaAkocmV2aXNpb24gNzE4
NTApCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJMYXllci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNCwxNCArMzQsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3Mg
R3JhcGhpY3NMYXllcjsKIH0KIAotLy8gQ2F0ZWdvcnkgaW1wbGVtZW50ZWQgYnkgV2ViTGF5ZXIg
YW5kIFdlYlRpbGVkTGF5ZXIuCi1AaW50ZXJmYWNlIENBTGF5ZXIoV2ViTGF5ZXJBZGRpdGlvbnMp
Ci0KLS0gKHZvaWQpc2V0TGF5ZXJPd25lcjooV2ViQ29yZTo6R3JhcGhpY3NMYXllciopbGF5ZXI7
Ci0tIChXZWJDb3JlOjpHcmFwaGljc0xheWVyKilsYXllck93bmVyOwotCi1AZW5kCi0KICNpZiBk
ZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpCiBAaW50ZXJmYWNlIENBTGF5ZXIoV2ViTGF5ZXJJ
bnRlcm5hbCkKIC0gKENHQWZmaW5lVHJhbnNmb3JtKWNvbnRlbnRzVHJhbnNmb3JtOwpAQCAtNTEs
NyArNDMsNiBAQCBAaW50ZXJmYWNlIENBTGF5ZXIoV2ViTGF5ZXJJbnRlcm5hbCkKIAogQGludGVy
ZmFjZSBXZWJMYXllciA6IENBTGF5ZXIgCiB7Ci0gICAgV2ViQ29yZTo6R3JhcGhpY3NMYXllciog
bV9sYXllck93bmVyOwogfQogQGVuZAogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9XZWJMYXllci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9XZWJMYXllci5tbQkocmV2aXNpb24gNzE4NTApCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9XZWJMYXllci5tbQkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsOCBAQAog
I2ltcG9ydCAiV2ViTGF5ZXIuaCIKIAogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0LmgiCi0jaW1w
b3J0ICJHcmFwaGljc0xheWVyLmgiCisjaW1wb3J0ICJHcmFwaGljc0xheWVyQ0EuaCIKKyNpbXBv
cnQgIlBsYXRmb3JtQ0FMYXllci5oIgogI2ltcG9ydCA8b2JqYy9vYmpjLXJ1bnRpbWUuaD4KICNp
bXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgogI2ltcG9ydCA8d3RmL1VudXNlZFBhcmFt
Lmg+CkBAIC0xNDYsNTggKzE0NywzOSBAQCAtIChpZDxDQUFjdGlvbj4pYWN0aW9uRm9yS2V5OihO
U1N0cmluZyAqCiAgICAgcmV0dXJuIG5pbDsKIH0KIAotLy8gSW1wbGVtZW50IHRoaXMgc28gcHJl
c2VudGF0aW9uTGF5ZXIgY2FuIGdldCBvdXIgY3VzdG9tIGF0dHJpYnV0ZXMKLS0gKGlkKWluaXRX
aXRoTGF5ZXI6KGlkKWxheWVyCi17Ci0gICAgaWYgKChzZWxmID0gW3N1cGVyIGluaXRXaXRoTGF5
ZXI6bGF5ZXJdKSkKLSAgICAgICAgbV9sYXllck93bmVyID0gWyhXZWJMYXllciopbGF5ZXIgbGF5
ZXJPd25lcl07Ci0KLSAgICByZXR1cm4gc2VsZjsKLX0KLQogLSAodm9pZClzZXROZWVkc0Rpc3Bs
YXkKIHsKLSAgICBpZiAobV9sYXllck93bmVyICYmIG1fbGF5ZXJPd25lci0+Y2xpZW50KCkgJiYg
bV9sYXllck93bmVyLT5kcmF3c0NvbnRlbnQoKSkKKyAgICBQbGF0Zm9ybUNBTGF5ZXIqIGxheWVy
ID0gUGxhdGZvcm1DQUxheWVyOjpwbGF0Zm9ybUNBTGF5ZXIoc2VsZik7CisgICAgaWYgKGxheWVy
ICYmIGxheWVyLT5vd25lcigpICYmIGxheWVyLT5vd25lcigpLT5jbGllbnQoKSAmJiBsYXllci0+
b3duZXIoKS0+ZHJhd3NDb250ZW50KCkpCiAgICAgICAgIFtzdXBlciBzZXROZWVkc0Rpc3BsYXld
OwogfQogCiAtICh2b2lkKXNldE5lZWRzRGlzcGxheUluUmVjdDooQ0dSZWN0KWRpcnR5UmVjdAog
ewotICAgIHNldExheWVyTmVlZHNEaXNwbGF5SW5SZWN0KHNlbGYsIG1fbGF5ZXJPd25lciwgZGly
dHlSZWN0KTsKKyAgICBQbGF0Zm9ybUNBTGF5ZXIqIGxheWVyID0gUGxhdGZvcm1DQUxheWVyOjpw
bGF0Zm9ybUNBTGF5ZXIoc2VsZik7CisgICAgaWYgKGxheWVyKQorICAgICAgICBzZXRMYXllck5l
ZWRzRGlzcGxheUluUmVjdChzZWxmLCBsYXllci0+b3duZXIoKSwgZGlydHlSZWN0KTsKIH0KIAog
LSAodm9pZClkaXNwbGF5CiB7CiAgICAgW3N1cGVyIGRpc3BsYXldOwotICAgIGlmIChtX2xheWVy
T3duZXIpCi0gICAgICAgIG1fbGF5ZXJPd25lci0+ZGlkRGlzcGxheShzZWxmKTsKKyAgICBQbGF0
Zm9ybUNBTGF5ZXIqIGxheWVyID0gUGxhdGZvcm1DQUxheWVyOjpwbGF0Zm9ybUNBTGF5ZXIoc2Vs
Zik7CisgICAgaWYgKGxheWVyICYmIGxheWVyLT5vd25lcigpKQorICAgICAgICBsYXllci0+b3du
ZXIoKS0+ZGlkRGlzcGxheShzZWxmKTsKIH0KIAogLSAodm9pZClkcmF3SW5Db250ZXh0OihDR0Nv
bnRleHRSZWYpY29udGV4dAogewotICAgIGRyYXdMYXllckNvbnRlbnRzKGNvbnRleHQsIHNlbGYs
IG1fbGF5ZXJPd25lcik7CisgICAgUGxhdGZvcm1DQUxheWVyKiBsYXllciA9IFBsYXRmb3JtQ0FM
YXllcjo6cGxhdGZvcm1DQUxheWVyKHNlbGYpOworICAgIGlmIChsYXllcikKKyAgICAgICAgZHJh
d0xheWVyQ29udGVudHMoY29udGV4dCwgc2VsZiwgbGF5ZXItPm93bmVyKCkpOwogfQogCiBAZW5k
IC8vIGltcGxlbWVudGF0aW9uIFdlYkxheWVyCiAKICNwcmFnbWEgbWFyayAtCiAKLUBpbXBsZW1l
bnRhdGlvbiBXZWJMYXllcihXZWJMYXllckFkZGl0aW9ucykKLQotLSAodm9pZClzZXRMYXllck93
bmVyOihHcmFwaGljc0xheWVyKilhTGF5ZXIKLXsKLSAgICBtX2xheWVyT3duZXIgPSBhTGF5ZXI7
Ci19Ci0KLS0gKEdyYXBoaWNzTGF5ZXIqKWxheWVyT3duZXIKLXsKLSAgICByZXR1cm4gbV9sYXll
ck93bmVyOwotfQotCi1AZW5kCi0KLSNwcmFnbWEgbWFyayAtCi0KICNpZm5kZWYgTkRFQlVHCiAK
IEBpbXBsZW1lbnRhdGlvbiBDQUxheWVyKEV4dGVuZGVkRGVzY3JpcHRpb24pCkluZGV4OiBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJUaWxlZExheWVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViVGlsZWRMYXllci5oCShyZXZpc2lvbiA3
MTg1MCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYlRpbGVkTGF5ZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNiBAQAogCiBAaW50ZXJmYWNlIFdlYlRpbGVkTGF5
ZXIgOiBDQVRpbGVkTGF5ZXIgCiB7Ci0gICAgV2ViQ29yZTo6R3JhcGhpY3NMYXllciogbV9sYXll
ck93bmVyOwogfQogCiAvLyBpbXBsZW1lbnRzIFdlYkxheWVyQWRkaXRpb25zCkluZGV4OiBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJUaWxlZExheWVyLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYlRpbGVkTGF5ZXIubW0JKHJldmlzaW9u
IDcxODUwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViVGlsZWRMYXllci5t
bQkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsOCBAQAogI2ltcG9ydCAiV2ViVGlsZWRMYXll
ci5oIgogCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHQuaCIKLSNpbXBvcnQgIkdyYXBoaWNzTGF5
ZXIuaCIKKyNpbXBvcnQgIkdyYXBoaWNzTGF5ZXJDQS5oIgorI2ltcG9ydCAiUGxhdGZvcm1DQUxh
eWVyLmgiCiAjaW1wb3J0IDx3dGYvVW51c2VkUGFyYW0uaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CkBAIC01Niw1NCArNTcsMzUgQEAgLSAoaWQ8Q0FBY3Rpb24+KWFjdGlvbkZvcktleToo
TlNTdHJpbmcgKgogICAgIHJldHVybiBuaWw7CiB9CiAKLS8vIEltcGxlbWVudCB0aGlzIHNvIHBy
ZXNlbnRhdGlvbkxheWVyIGNhbiBnZXQgb3VyIGN1c3RvbSBhdHRyaWJ1dGVzCi0tIChpZClpbml0
V2l0aExheWVyOihpZClsYXllcgotewotICAgIGlmICgoc2VsZiA9IFtzdXBlciBpbml0V2l0aExh
eWVyOmxheWVyXSkpCi0gICAgICAgIG1fbGF5ZXJPd25lciA9IFsoV2ViTGF5ZXIqKWxheWVyIGxh
eWVyT3duZXJdOwotCi0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KIC0gKHZvaWQpc2V0TmVlZHNEaXNw
bGF5CiB7Ci0gICAgaWYgKG1fbGF5ZXJPd25lciAmJiBtX2xheWVyT3duZXItPmNsaWVudCgpICYm
IG1fbGF5ZXJPd25lci0+ZHJhd3NDb250ZW50KCkpCisgICAgUGxhdGZvcm1DQUxheWVyKiBsYXll
ciA9IFBsYXRmb3JtQ0FMYXllcjo6cGxhdGZvcm1DQUxheWVyKHNlbGYpOworICAgIGlmIChsYXll
ciAmJiBsYXllci0+b3duZXIoKSAmJiBsYXllci0+b3duZXIoKS0+Y2xpZW50KCkgJiYgbGF5ZXIt
Pm93bmVyKCktPmRyYXdzQ29udGVudCgpKQogICAgICAgICBbc3VwZXIgc2V0TmVlZHNEaXNwbGF5
XTsKIH0KIAogLSAodm9pZClzZXROZWVkc0Rpc3BsYXlJblJlY3Q6KENHUmVjdClkaXJ0eVJlY3QK
IHsKLSAgICBzZXRMYXllck5lZWRzRGlzcGxheUluUmVjdChzZWxmLCBtX2xheWVyT3duZXIsIGRp
cnR5UmVjdCk7CisgICAgUGxhdGZvcm1DQUxheWVyKiBsYXllciA9IFBsYXRmb3JtQ0FMYXllcjo6
cGxhdGZvcm1DQUxheWVyKHNlbGYpOworICAgIGlmIChsYXllcikKKyAgICAgICAgc2V0TGF5ZXJO
ZWVkc0Rpc3BsYXlJblJlY3Qoc2VsZiwgbGF5ZXItPm93bmVyKCksIGRpcnR5UmVjdCk7CiB9CiAK
IC0gKHZvaWQpZGlzcGxheQogewogICAgIFtzdXBlciBkaXNwbGF5XTsKLSAgICBpZiAobV9sYXll
ck93bmVyKQotICAgICAgICBtX2xheWVyT3duZXItPmRpZERpc3BsYXkoc2VsZik7CisgICAgUGxh
dGZvcm1DQUxheWVyKiBsYXllciA9IFBsYXRmb3JtQ0FMYXllcjo6cGxhdGZvcm1DQUxheWVyKHNl
bGYpOworICAgIGlmIChsYXllciAmJiBsYXllci0+b3duZXIoKSkKKyAgICAgICAgbGF5ZXItPm93
bmVyKCktPmRpZERpc3BsYXkoc2VsZik7CiB9CiAKIC0gKHZvaWQpZHJhd0luQ29udGV4dDooQ0dD
b250ZXh0UmVmKWNvbnRleHQKIHsKLSAgICBkcmF3TGF5ZXJDb250ZW50cyhjb250ZXh0LCBzZWxm
LCBtX2xheWVyT3duZXIpOworICAgIFBsYXRmb3JtQ0FMYXllciogbGF5ZXIgPSBQbGF0Zm9ybUNB
TGF5ZXI6OnBsYXRmb3JtQ0FMYXllcihzZWxmKTsKKyAgICBpZiAobGF5ZXIpCisgICAgICAgIGRy
YXdMYXllckNvbnRlbnRzKGNvbnRleHQsIHNlbGYsIGxheWVyLT5vd25lcigpKTsKIH0KIAogQGVu
ZCAvLyBpbXBsZW1lbnRhdGlvbiBXZWJUaWxlZExheWVyCiAKLSNwcmFnbWEgbWFyayAtCi0KLUBp
bXBsZW1lbnRhdGlvbiBXZWJUaWxlZExheWVyKExheWVyTWFjQWRkaXRpb25zKQotCi0tICh2b2lk
KXNldExheWVyT3duZXI6KEdyYXBoaWNzTGF5ZXIqKWFMYXllcgotewotICAgIG1fbGF5ZXJPd25l
ciA9IGFMYXllcjsKLX0KLQotLSAoR3JhcGhpY3NMYXllciopbGF5ZXJPd25lcgotewotICAgIHJl
dHVybiBtX2xheWVyT3duZXI7Ci19Ci0KLUBlbmQKLQogI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRF
RF9DT01QT1NJVElORykKSW5kZXg6IFdlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiA3MzA4OCkKKysrIFdlYktpdC9tYWMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTAtMTItMDEgIENocmlz
IE1hcnJpbiAgPGNtYXJyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFNoYXJlIGNvZGUgYmV0d2VlbiBNYWMgKENBKSBhbmQgV2lu
ZG93cyAoQ0FDRikgR3JhcGhpY3NMYXllciBpbXBsZW1lbnRhdGlvbnMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ5Mzg4CisKKyAgICAgICAgR290IHJp
ZCBvZiBHcmFwaGljc0xheWVyOjpuYXRpdmVMYXllcigpIGNhbGwsIHJlcGxhY2luZyBpdCB3aXRo
IAorICAgICAgICBHcmFwaGljc0xheWVyOjpwbGF0Zm9ybUxheWVyKCkuCisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW06CisgICAgICAgIChXZWJDaHJvbWVDbGll
bnQ6OmF0dGFjaFJvb3RHcmFwaGljc0xheWVyKToKKwogMjAxMC0xMi0wMSAgSmlhIFB1ICA8anB1
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6IFdl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCShyZXZpc2lvbiA3
MTg1MCkKKysrIFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCSh3
b3JraW5nIGNvcHkpCkBAIC03ODEsNyArNzgxLDcgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OmF0
dGFjaFJvb3RHcmFwaGljcwogCiAgICAgV2ViSFRNTFZpZXcgKndlYkhUTUxWaWV3ID0gKFdlYkhU
TUxWaWV3ICopZG9jdW1lbnRWaWV3OwogICAgIGlmIChncmFwaGljc0xheWVyKQotICAgICAgICBb
d2ViSFRNTFZpZXcgYXR0YWNoUm9vdExheWVyOmdyYXBoaWNzTGF5ZXItPm5hdGl2ZUxheWVyKCld
OworICAgICAgICBbd2ViSFRNTFZpZXcgYXR0YWNoUm9vdExheWVyOmdyYXBoaWNzTGF5ZXItPnBs
YXRmb3JtTGF5ZXIoKV07CiAgICAgZWxzZQogICAgICAgICBbd2ViSFRNTFZpZXcgZGV0YWNoUm9v
dExheWVyXTsKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75394</attachid>
            <date>2010-12-02 10:52:40 -0800</date>
            <delta_ts>2010-12-02 15:42:59 -0800</delta_ts>
            <desc>Fix merge issue with last patch</desc>
            <filename>bug-49388-20101202105240.patch</filename>
            <type>text/plain</type>
            <size>253042</size>
            <attacher name="Chris Marrin">cmarrin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MzE1MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDMgQEAKKzIwMTAtMTItMDEgIENocmlzIE1hcnJpbiAgPGNtYXJyaW5AYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNo
YXJlIGNvZGUgYmV0d2VlbiBNYWMgKENBKSBhbmQgV2luZG93cyAoQ0FDRikgR3JhcGhpY3NMYXll
ciBpbXBsZW1lbnRhdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQ5Mzg4CisKKyAgICAgICAgUmVwbGFjZWQgR3JhcGhpY3NMYXllck1hYyB3aXRo
IEdyYXBoaWNzTGF5ZXJDQS4gR3JhcGhpY3NMYXllckNBIGlzIGVzc2VudGlhbGx5IAorICAgICAg
ICBpZGVudGljYWwgdG8gR3JhcGhpY3NMYXllck1hYywgYnV0IHJlcGxhY2VzIGFsbCB0aGUgQ29y
ZUFuaW1hdGlvbiBzcGVjaWZpYyBjYWxscyAKKyAgICAgICAgd2l0aCBjYWxscyB0byBQbGF0Zm9y
bUNBTGF5ZXIgYW5kIFBsYXRmb3JtQ0FBbmltYXRpb24uIFRoaXMgbWFrZXMgR3JhcGhpY3NMYXll
ckNBIAorICAgICAgICBwbGF0Zm9ybSBuZXV0cmFsIGFzIGxvbmcgYXMgaW1wbGVtZW50YXRpb25z
IG9mIHRob3NlIHR3byBjbGFzc2VzIGFyZSBhdmFpbGFibGUuIAorICAgICAgICBBZGRlZCBpbXBs
ZW1lbnRhdGlvbnMgaW4gUGxhdGZvcm1DQUxheWVyTWFjIGFuZCBQbGF0Zm9ybUNBQW5pbWF0aW9u
TWFjLiBBbHNvIGdvdCAKKyAgICAgICAgcmlkIG9mIEdyYXBoaWNzTGF5ZXI6Om5hdGl2ZUxheWVy
KCkgYW5kIHJlcGxhY2VkIGl0IHdpdGggR3JhcGhpY3NMYXllcjo6cGxhdGZvcm1MYXllcigpIAor
ICAgICAgICB0byBhdm9pZCBjb25mdXNpb24gc2luY2UgYm90aCBuYW1lcyB3ZXJlIHVzZWQgdG8g
cmVmZXIgdG8gdGhlIHNhbWUgdGhpbmcuIAorCisgICAgICAgIFRoaXMgcGF0Y2ggaXMgb25seSBm
b3IgTWFjLiBXaW5kb3dzIGltcGxlbWVudGF0aW9uIGhhcyBub3QgY2hhbmdlZC4KKworICAgICAg
ICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2E6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJD
QS5jcHA6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5
ZXJDQS5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNB
QW5pbWF0aW9uLmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRm
b3JtQ0FMYXllci5jcHA6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1Bs
YXRmb3JtQ0FMYXllci5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMv
R3JhcGhpY3NMYXllck1hYy5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L21hYy9HcmFwaGljc0xheWVyTWFjLm1tOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL21hYy9XZWJMYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9X
ZWJMYXllci5tbToKKyAgICAgICAgKC1bV2ViTGF5ZXIgc2V0TmVlZHNEaXNwbGF5XSk6CisgICAg
ICAgICgtW1dlYkxheWVyIHNldE5lZWRzRGlzcGxheUluUmVjdDpdKToKKyAgICAgICAgKC1bV2Vi
TGF5ZXIgZGlzcGxheV0pOgorICAgICAgICAoLVtXZWJMYXllciBkcmF3SW5Db250ZXh0Ol0pOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJUaWxlZExheWVyLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYlRpbGVkTGF5ZXIubW06CisgICAgICAgICgtW1dl
YlRpbGVkTGF5ZXIgc2V0TmVlZHNEaXNwbGF5XSk6CisgICAgICAgICgtW1dlYlRpbGVkTGF5ZXIg
c2V0TmVlZHNEaXNwbGF5SW5SZWN0Ol0pOgorICAgICAgICAoLVtXZWJUaWxlZExheWVyIGRpc3Bs
YXldKToKKyAgICAgICAgKC1bV2ViVGlsZWRMYXllciBkcmF3SW5Db250ZXh0Ol0pOgorCiAyMDEw
LTEyLTAxICBBbmRyZXkgS29zeWFrb3YgIDxjYXNlcUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA3MzE1MCkKKysrIFdlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEyLDYgKzEwMTIs
OCBAQAogCQk0OTRCRDc5NTBGNTVDOEVFMDA3NDc4MjggLyogV2ViS2l0UG9pbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5NEJENzkzMEY1NUM4RUUw
MDc0NzgyOCAvKiBXZWJLaXRQb2ludC5oICovOyB9OwogCQk0OTRCRDc5RDBGNTVDOTRDMDA3NDc4
MjggLyogSlNXZWJLaXRQb2ludC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0OTRCRDc5QjBGNTVDOTRDMDA3NDc4MjggLyogSlNXZWJLaXRQb2ludC5j
cHAgKi87IH07CiAJCTQ5NEJENzlFMEY1NUM5NEMwMDc0NzgyOCAvKiBKU1dlYktpdFBvaW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTRCRDc5QzBG
NTVDOTRDMDA3NDc4MjggLyogSlNXZWJLaXRQb2ludC5oICovOyB9OworCQk0OTU4NzgyMTEyQTU3
RERGMDA3MjM4QUMgLyogUGxhdGZvcm1DQUFuaW1hdGlvbk1hYy5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5NTg3ODFGMTJBNTdEREYwMDcyMzhBQyAv
KiBQbGF0Zm9ybUNBQW5pbWF0aW9uTWFjLm1tICovOyB9OworCQk0OTU4NzgyMjEyQTU3RERGMDA3
MjM4QUMgLyogUGxhdGZvcm1DQUxheWVyTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDk1ODc4MjAxMkE1N0RERjAwNzIzOEFDIC8qIFBsYXRmb3Jt
Q0FMYXllck1hYy5tbSAqLzsgfTsKIAkJNDk4MzkxM0YwRjFFNzY3NTAwQzIzNzgyIC8qIEpTV2Vi
S2l0Q1NTTWF0cml4LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ5ODM5MTNEMEYxRTc2NzUwMEMyMzc4MiAvKiBKU1dlYktpdENTU01hdHJpeC5jcHAg
Ki87IH07CiAJCTQ5ODM5MTQwMEYxRTc2NzUwMEMyMzc4MiAvKiBKU1dlYktpdENTU01hdHJpeC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDk4MzkxM0Uw
RjFFNzY3NTAwQzIzNzgyIC8qIEpTV2ViS2l0Q1NTTWF0cml4LmggKi87IH07CiAJCTQ5ODM5MTUw
MEYxRTc2QjQwMEMyMzc4MiAvKiBET01XZWJLaXRDU1NNYXRyaXguaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5ODM5MTREMEYxRTc2QjQwMEMyMzc4MiAv
KiBET01XZWJLaXRDU1NNYXRyaXguaCAqLzsgfTsKQEAgLTEwMzgsOCArMTA0MCwxMCBAQAogCQk0
OTg3NzBGMjEyNDJDNTM1MDAyMjI2QkEgLyogVGlsaW5nRGF0YS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTg3NzBEOTEyNDJDNTM1MDAyMjI2QkEg
LyogVGlsaW5nRGF0YS5jcHAgKi87IH07CiAJCTQ5ODc3MEYzMTI0MkM1MzUwMDIyMjZCQSAvKiBU
aWxpbmdEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0OTg3NzBEQTEyNDJDNTM1MDAyMjI2QkEgLyogVGlsaW5nRGF0YS5oICovOyB9OwogCQk0OTg3
NzE1MzEyNDNGOUZBMDAyMjI2QkEgLyogRHJhd2luZ0J1ZmZlck1hYy5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5ODc3MTUyMTI0M0Y5RkEwMDIyMjZC
QSAvKiBEcmF3aW5nQnVmZmVyTWFjLm1tICovOyB9OwotCQk0OTlCM0M1OTEyOEM2NDFFMDBFNzI2
QzIgLyogR3JhcGhpY3NMYXllck1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDk5QjNDNTcxMjhDNjQxRTAwRTcyNkMyIC8qIEdyYXBoaWNzTGF5ZXJN
YWMuaCAqLzsgfTsKLQkJNDk5QjNDNUExMjhDNjQxRTAwRTcyNkMyIC8qIEdyYXBoaWNzTGF5ZXJN
YWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTlC
M0M1ODEyOEM2NDFFMDBFNzI2QzIgLyogR3JhcGhpY3NMYXllck1hYy5tbSAqLzsgfTsKKwkJNDk5
QjNFQzUxMjhDQ0M0NzAwRTcyNkMyIC8qIFBsYXRmb3JtQ0FMYXllci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDk5QjNFQzMxMjhDQ0M0NzAwRTcyNkMy
IC8qIFBsYXRmb3JtQ0FMYXllci5oICovOyB9OworCQk0OTlCM0VENjEyOENEMzE0MDBFNzI2QzIg
LyogR3JhcGhpY3NMYXllckNBLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ5OUIzRUQ0MTI4Q0QzMTQwMEU3MjZDMiAvKiBHcmFwaGljc0xheWVyQ0Eu
Y3BwICovOyB9OworCQk0OTlCM0VENzEyOENEMzE0MDBFNzI2QzIgLyogR3JhcGhpY3NMYXllckNB
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTlCM0VE
NTEyOENEMzE0MDBFNzI2QzIgLyogR3JhcGhpY3NMYXllckNBLmggKi87IH07CisJCTQ5OUIzRURE
MTI4REI1MDIwMEU3MjZDMiAvKiBQbGF0Zm9ybUNBQW5pbWF0aW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTlCM0VEQzEyOERCNTAxMDBFNzI2QzIg
LyogUGxhdGZvcm1DQUFuaW1hdGlvbi5oICovOyB9OwogCQk0OUI2OUU1RTEyNTRGRUVEMDA3RDU3
RUIgLyogTG9vcEJsaW5uQ2xhc3NpZmllci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0OUI2OUU1NTEyNTRGRUVEMDA3RDU3RUIgLyogTG9vcEJsaW5u
Q2xhc3NpZmllci5jcHAgKi87IH07CiAJCTQ5QjY5RTVGMTI1NEZFRUQwMDdENTdFQiAvKiBMb29w
Qmxpbm5DbGFzc2lmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0OUI2OUU1NjEyNTRGRUVEMDA3RDU3RUIgLyogTG9vcEJsaW5uQ2xhc3NpZmllci5o
ICovOyB9OwogCQk0OUI2OUU2MDEyNTRGRUVEMDA3RDU3RUIgLyogTG9vcEJsaW5uQ29uc3RhbnRz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUI2OUU1
NzEyNTRGRUVEMDA3RDU3RUIgLyogTG9vcEJsaW5uQ29uc3RhbnRzLmggKi87IH07CkBAIC03MTMy
LDYgKzcxMzYsOCBAQAogCQk0OTRCRDc5NDBGNTVDOEVFMDA3NDc4MjggLyogV2ViS2l0UG9pbnQu
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYktpdFBvaW50LmlkbDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDk0QkQ3OUIwRjU1Qzk0QzAwNzQ3ODI4IC8qIEpTV2ViS2l0UG9p
bnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXZWJLaXRQb2lu
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5NEJENzlDMEY1NUM5NEMwMDc0
NzgyOCAvKiBKU1dlYktpdFBvaW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTV2ViS2l0UG9pbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDk1ODc4MUYx
MkE1N0RERjAwNzIzOEFDIC8qIFBsYXRmb3JtQ0FBbmltYXRpb25NYWMubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBQbGF0Zm9ybUNBQW5pbWF0aW9uTWFjLm1tOyBw
YXRoID0gY2EvbWFjL1BsYXRmb3JtQ0FBbmltYXRpb25NYWMubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTQ5NTg3ODIwMTJBNTdEREYwMDcyMzhBQyAvKiBQbGF0Zm9ybUNBTGF5ZXJN
YWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBQbGF0Zm9ybUNB
TGF5ZXJNYWMubW07IHBhdGggPSBjYS9tYWMvUGxhdGZvcm1DQUxheWVyTWFjLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0OTgzOTEzRDBGMUU3Njc1MDBDMjM3ODIgLyogSlNXZWJL
aXRDU1NNYXRyaXguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNX
ZWJLaXRDU1NNYXRyaXguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OTgzOTEz
RTBGMUU3Njc1MDBDMjM3ODIgLyogSlNXZWJLaXRDU1NNYXRyaXguaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNXZWJLaXRDU1NNYXRyaXguaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDk4MzkxNEQwRjFFNzZCNDAwQzIzNzgyIC8qIERPTVdlYktpdENTU01hdHJp
eC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01XZWJLaXRDU1NNYXRyaXgu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTcxNTksOCArNzE2NSwxMCBAQAogCQk0
OTg3NzBEOTEyNDJDNTM1MDAyMjI2QkEgLyogVGlsaW5nRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBUaWxpbmdEYXRhLmNwcDsgcGF0aCA9IGdwdS9UaWxpbmdE
YXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDk4NzcwREExMjQyQzUzNTAw
MjIyNkJBIC8qIFRpbGluZ0RhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
VGlsaW5nRGF0YS5oOyBwYXRoID0gZ3B1L1RpbGluZ0RhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDk4NzcxNTIxMjQzRjlGQTAwMjIyNkJBIC8qIERyYXdpbmdCdWZmZXJNYWMu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBEcmF3aW5nQnVmZmVy
TWFjLm1tOyBwYXRoID0gZ3B1L21hYy9EcmF3aW5nQnVmZmVyTWFjLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQk0OTlCM0M1NzEyOEM2NDFFMDBFNzI2QzIgLyogR3JhcGhpY3NMYXll
ck1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0xheWVyTWFj
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ5OUIzQzU4MTI4QzY0MUUwMEU3MjZD
MiAvKiBHcmFwaGljc0xheWVyTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gR3JhcGhpY3NMYXllck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNDk5QjNFQzMxMjhDQ0M0NzAwRTcyNkMyIC8qIFBsYXRmb3JtQ0FMYXllci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBQbGF0Zm9ybUNBTGF5ZXIuaDsgcGF0aCA9IGNhL1Bs
YXRmb3JtQ0FMYXllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0OTlCM0VENDEy
OENEMzE0MDBFNzI2QzIgLyogR3JhcGhpY3NMYXllckNBLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IEdyYXBoaWNzTGF5ZXJDQS5jcHA7IHBhdGggPSBjYS9HcmFwaGlj
c0xheWVyQ0EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0OTlCM0VENTEyOENE
MzE0MDBFNzI2QzIgLyogR3JhcGhpY3NMYXllckNBLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IEdyYXBoaWNzTGF5ZXJDQS5oOyBwYXRoID0gY2EvR3JhcGhpY3NMYXllckNBLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ5OUIzRURDMTI4REI1MDEwMEU3MjZDMiAv
KiBQbGF0Zm9ybUNBQW5pbWF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IFBsYXRmb3JtQ0FBbmltYXRpb24uaDsgcGF0aCA9IGNhL1BsYXRmb3JtQ0FBbmltYXRpb24uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDlCNjlFNTUxMjU0RkVFRDAwN0Q1N0VCIC8q
IExvb3BCbGlubkNsYXNzaWZpZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gTG9vcEJsaW5uQ2xhc3NpZmllci5jcHA7IHBhdGggPSBncHUvTG9vcEJsaW5uQ2xhc3Np
Zmllci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5QjY5RTU2MTI1NEZFRUQw
MDdENTdFQiAvKiBMb29wQmxpbm5DbGFzc2lmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IExvb3BCbGlubkNsYXNzaWZpZXIuaDsgcGF0aCA9IGdwdS9Mb29wQmxpbm5DbGFz
c2lmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5QjY5RTU3MTI1NEZFRUQw
MDdENTdFQiAvKiBMb29wQmxpbm5Db25zdGFudHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gTG9vcEJsaW5uQ29uc3RhbnRzLmg7IHBhdGggPSBncHUvTG9vcEJsaW5uQ29uc3Rh
bnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMjcxMCw2ICsxMjcxOCwxNSBA
QAogCQkJbmFtZSA9IGNhbnZhczsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJ
CTQ5NTg3ODFFMTJBNTdEQkMwMDcyMzhBQyAvKiBtYWMgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91
cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTQ5NTg3ODFGMTJBNTdEREYwMDcyMzhBQyAvKiBQbGF0
Zm9ybUNBQW5pbWF0aW9uTWFjLm1tICovLAorCQkJCTQ5NTg3ODIwMTJBNTdEREYwMDcyMzhBQyAv
KiBQbGF0Zm9ybUNBTGF5ZXJNYWMubW0gKi8sCisJCQkpOworCQkJbmFtZSA9IG1hYzsKKwkJCXNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTQ5ODc3MEMxMTI0MkM1MEQwMDIyMjZCQSAv
KiBncHUgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMTI3
NTEsNiArMTI3NjgsMTggQEAKIAkJCW5hbWUgPSBtYWM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91
cD4iOwogCQl9OworCQk0OTlCM0VDMDEyOENDQzE4MDBFNzI2QzIgLyogY2EgKi8gPSB7CisJCQlp
c2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTQ5NTg3ODFFMTJBNTdEQkMwMDcy
MzhBQyAvKiBtYWMgKi8sCisJCQkJNDk5QjNFREMxMjhEQjUwMTAwRTcyNkMyIC8qIFBsYXRmb3Jt
Q0FBbmltYXRpb24uaCAqLywKKwkJCQk0OTlCM0VENDEyOENEMzE0MDBFNzI2QzIgLyogR3JhcGhp
Y3NMYXllckNBLmNwcCAqLywKKwkJCQk0OTlCM0VENTEyOENEMzE0MDBFNzI2QzIgLyogR3JhcGhp
Y3NMYXllckNBLmggKi8sCisJCQkJNDk5QjNFQzMxMjhDQ0M0NzAwRTcyNkMyIC8qIFBsYXRmb3Jt
Q0FMYXllci5oICovLAorCQkJKTsKKwkJCW5hbWUgPSBjYTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7CisJCX07CiAJCTQ5RTkxMUIyMEVGODZEMjcwMDlEMENBRiAvKiB0cmFuc2Zvcm1zICov
ID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTE2Njg1LDggKzE2
NzE0LDYgQEAKIAkJCQlCMkFGRkM3QjBEMDBBNUMxMDAzMDA3NEQgLyogR2x5cGhQYWdlVHJlZU5v
ZGVNYWMuY3BwICovLAogCQkJCTQ5RkZCRjFDMTFDODU1MEUwMDZBNzExOCAvKiBHcmFwaGljc0Nv
bnRleHQzRE1hYy5tbSAqLywKIAkJCQlCMjc3QjQwMzBCMjJGMzdDMDAwNEJFQzYgLyogR3JhcGhp
Y3NDb250ZXh0TWFjLm1tICovLAotCQkJCTQ5OUIzQzU3MTI4QzY0MUUwMEU3MjZDMiAvKiBHcmFw
aGljc0xheWVyTWFjLmggKi8sCi0JCQkJNDk5QjNDNTgxMjhDNjQxRTAwRTcyNkMyIC8qIEdyYXBo
aWNzTGF5ZXJNYWMubW0gKi8sCiAJCQkJQjI3NTM1OEQwQjA1M0E2NjAwMkNFNjRGIC8qIEljb25N
YWMubW0gKi8sCiAJCQkJQjI3NTM1NEUwQjA1MzgxNDAwMkNFNjRGIC8qIEltYWdlTWFjLm1tICov
LAogCQkJCUIyNzUzNTRGMEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRQb2ludE1hYy5tbSAqLywKQEAg
LTE2NzEyLDYgKzE2NzM5LDcgQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
CiAJCQkJQjI3NTM1MjkwQjA1MzgxNDAwMkNFNjRGIC8qIGNnICovLAorCQkJCTQ5OUIzRUMwMTI4
Q0NDMTgwMEU3MjZDMiAvKiBjYSAqLywKIAkJCQlCNTMyMEQ2ODEyMkEyNEU5MDAyRDE0NDAgLyog
Y29jb2EgKi8sCiAJCQkJQTc1RThCN0YwRTFERTJCMDAwN0YyNDgxIC8qIGZpbHRlcnMgKi8sCiAJ
CQkJNDk4NzcwQzExMjQyQzUwRDAwMjIyNkJBIC8qIGdwdSAqLywKQEAgLTE5NzcxLDcgKzE5Nzk5
LDYgQEAKIAkJCQlBODhGRTMzNDBFNUVFRTg3MDA4RDhDMEYgLyogR3JhcGhpY3NDb250ZXh0UHJp
dmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1ODBCMEQwRjEyQTI2OTAwNTFENjg5IC8qIEdy
YXBoaWNzTGF5ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNTgwQjBFMEYxMkEyNjkwMDUxRDY4
OSAvKiBHcmFwaGljc0xheWVyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQk0OTlCM0M1OTEy
OEM2NDFFMDBFNzI2QzIgLyogR3JhcGhpY3NMYXllck1hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QjJBMDE1QUIwQUY2Q0Q1MzAwNkJDRTBFIC8qIEdyYXBoaWNzVHlwZXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCUM1MEI1NjE3MTIxMTlEMjMwMDhCNDZFMCAvKiBHcm91cFNldHRpbmdzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk3NjkzQkFEMjEwNkMyRENBMDA3QjA4MjMgLyogSGFsdGFibGVQbHVnaW4u
aCBpbiBIZWFkZXJzICovLApAQCAtMjE0MzAsNiArMjE0NTcsOSBAQAogCQkJCTkzRjE5OUVEMDgy
NDVFNTkwMDFFOUFCQyAvKiBYU0xUUHJvY2Vzc29yLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUJF
NTEyRTBDRjZDNTEyMDAyRUE5NTkgLyogWFNMVFVuaWNvZGVTb3J0LmggaW4gSGVhZGVycyAqLywK
IAkJCQk5N0RENEQ4NzBGREY0RDZFMDBFQ0Y5QTQgLyogWFNTQXVkaXRvci5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNDk5QjNFQzUxMjhDQ0M0NzAwRTcyNkMyIC8qIFBsYXRmb3JtQ0FMYXllci5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNDk5QjNFRDcxMjhDRDMxNDAwRTcyNkMyIC8qIEdyYXBoaWNzTGF5
ZXJDQS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDk5QjNFREQxMjhEQjUwMjAwRTcyNkMyIC8qIFBs
YXRmb3JtQ0FBbmltYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjI0MTUsNyArMjI0NDUsNiBA
QAogCQkJCUIyRUQ5NzcxMEIxRjU1Q0UwMDI1N0QwRiAvKiBHcmFwaGljc0NvbnRleHRDRy5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlCMjc3QjQwNDBCMjJGMzdDMDAwNEJFQzYgLyogR3JhcGhpY3ND
b250ZXh0TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY1ODBCMEMwRjEyQTI2OTAwNTFENjg5
IC8qIEdyYXBoaWNzTGF5ZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNDk5QjNDNUExMjhDNjQx
RTAwRTcyNkMyIC8qIEdyYXBoaWNzTGF5ZXJNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlCMkEw
MTVBQTBBRjZDRDUzMDA2QkNFMEUgLyogR3JhcGhpY3NUeXBlcy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlDNTBCNTYxNjEyMTE5RDIzMDA4QjQ2RTAgLyogR3JvdXBTZXR0aW5ncy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlGNTVCM0RCRjEyNTFGMTJEMDAzRUYyNjkgLyogSGlkZGVuSW5wdXRUeXBl
LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjQwMDgsNiArMjQwMzcsOSBAQAogCQkJCTkzRjE5QjA1
MDgyNDVFNTkwMDFFOUFCQyAvKiBYU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlFMUJFNTEyRDBDRjZDNTEyMDAyRUE5NTkgLyogWFNMVFVuaWNvZGVTb3J0LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTk3REQ0RDg2MEZERjRENkUwMEVDRjlBNCAvKiBYU1NBdWRpdG9y
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQ5OUIzRUQ2MTI4Q0QzMTQwMEU3MjZDMiAvKiBHcmFw
aGljc0xheWVyQ0EuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDk1ODc4MjExMkE1N0RERjAwNzIz
OEFDIC8qIFBsYXRmb3JtQ0FBbmltYXRpb25NYWMubW0gaW4gU291cmNlcyAqLywKKwkJCQk0OTU4
NzgyMjEyQTU3RERGMDA3MjM4QUMgLyogUGxhdGZvcm1DQUxheWVyTWFjLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJ
CX07CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAkocmV2
aXNpb24gNzMxNTApCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtNDksMjMgKzQ5LDE5IEBACiBAY2xhc3MgV2ViTGF5ZXI7CiBA
Y2xhc3MgQ0FMYXllcjsKIHR5cGVkZWYgQ0FMYXllciBQbGF0Zm9ybUxheWVyOwotdHlwZWRlZiBD
QUxheWVyKiBOYXRpdmVMYXllcjsKICNlbHNlCiB0eXBlZGVmIHZvaWQqIFBsYXRmb3JtTGF5ZXI7
Ci10eXBlZGVmIHZvaWQqIE5hdGl2ZUxheWVyOwogI2VuZGlmCiAjZWxpZiBQTEFURk9STShXSU4p
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBXS0NBQ0ZMYXllcjsKIHR5cGVkZWYgV0tDQUNG
TGF5ZXIgUGxhdGZvcm1MYXllcjsKLXR5cGVkZWYgdm9pZCogTmF0aXZlTGF5ZXI7CiB9CiAjZWxp
ZiBQTEFURk9STShRVCkKICNpZiBVU0UoVEVYVFVSRV9NQVBQRVIpCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllcjsKIHR5cGVkZWYgVGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXIgUGxhdGZvcm1MYXllcjsKLXR5cGVkZWYgVGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXIqIE5hdGl2ZUxheWVyOwogfTsKICNlbHNlCiBRVF9CRUdJTl9OQU1FU1BBQ0UK
QEAgLTczLDE4ICs2OSwxNSBAQCBjbGFzcyBRR3JhcGhpY3NPYmplY3Q7CiBRVF9FTkRfTkFNRVNQ
QUNFCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiB0eXBlZGVmIFFHcmFwaGljc09iamVjdCBQbGF0Zm9y
bUxheWVyOwotdHlwZWRlZiBRR3JhcGhpY3NPYmplY3QqIE5hdGl2ZUxheWVyOwogfQogI2VuZGlm
CiAjZWxpZiBQTEFURk9STShDSFJPTUlVTSkKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIExh
eWVyQ2hyb21pdW07CiB0eXBlZGVmIExheWVyQ2hyb21pdW0gUGxhdGZvcm1MYXllcjsKLXR5cGVk
ZWYgdm9pZCogTmF0aXZlTGF5ZXI7CiB9CiAjZWxzZQogdHlwZWRlZiB2b2lkKiBQbGF0Zm9ybUxh
eWVyOwotdHlwZWRlZiB2b2lkKiBOYXRpdmVMYXllcjsKICNlbmRpZgogCiBlbnVtIExheWVyVHJl
ZUFzVGV4dEJlaGF2aW9yRmxhZ3MgewpAQCAtMjAwLDkgKzE5Myw2IEBAIHB1YmxpYzoKICAgICBj
b25zdCBTdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KICAgICB2aXJ0dWFs
IHZvaWQgc2V0TmFtZShjb25zdCBTdHJpbmcmIG5hbWUpIHsgbV9uYW1lID0gbmFtZTsgfQogCi0g
ICAgLy8gRm9yIGhvc3RpbmcgdGhpcyBHcmFwaGljc0xheWVyIGluIGEgbmF0aXZlIGxheWVyIGhp
ZXJhcmNoeS4KLSAgICB2aXJ0dWFsIE5hdGl2ZUxheWVyIG5hdGl2ZUxheWVyKCkgY29uc3QgeyBy
ZXR1cm4gMDsgfQotCiAgICAgR3JhcGhpY3NMYXllciogcGFyZW50KCkgY29uc3QgeyByZXR1cm4g
bV9wYXJlbnQ7IH07CiAgICAgdm9pZCBzZXRQYXJlbnQoR3JhcGhpY3NMYXllciogbGF5ZXIpIHsg
bV9wYXJlbnQgPSBsYXllcjsgfSAvLyBJbnRlcm5hbCB1c2Ugb25seS4KICAgICAKQEAgLTMyMyw2
ICszMTMsNyBAQCBwdWJsaWM6CiAgICAgLy8gQ2FsbGJhY2sgZnJvbSB0aGUgdW5kZXJseWluZyBn
cmFwaGljcyBzeXN0ZW0gd2hlbiB0aGUgbGF5ZXIgaGFzIGJlZW4gZGlzcGxheWVkCiAgICAgdmly
dHVhbCB2b2lkIGRpZERpc3BsYXkoUGxhdGZvcm1MYXllciopIHsgfQogICAgIAorICAgIC8vIEZv
ciBob3N0aW5nIHRoaXMgR3JhcGhpY3NMYXllciBpbiBhIG5hdGl2ZSBsYXllciBoaWVyYXJjaHku
CiAgICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgeyByZXR1
cm4gMDsgfQogICAgIAogICAgIHZvaWQgZHVtcExheWVyKFRleHRTdHJlYW0mLCBpbnQgaW5kZW50
ID0gMCwgTGF5ZXJUcmVlQXNUZXh0QmVoYXZpb3IgPSBMYXllclRyZWVBc1RleHRCZWhhdmlvck5v
cm1hbCkgY29uc3Q7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNz
TGF5ZXJDQS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9H
cmFwaGljc0xheWVyQ0EuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIzMTEg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElO
RykKKworI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDQS5oIgorCisjaW5jbHVkZSAiQW5pbWF0aW9u
LmgiCisjaW5jbHVkZSAiRmxvYXRDb252ZXJzaW9uLmgiCisjaW5jbHVkZSAiRmxvYXRSZWN0Lmgi
CisjaW5jbHVkZSAiUGxhdGZvcm1DQUxheWVyLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcu
aCIKKyNpbmNsdWRlICJSb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaCIKKyNpbmNsdWRlICJTY2Fs
ZVRyYW5zZm9ybU9wZXJhdGlvbi5oIgorI2luY2x1ZGUgIlN5c3RlbVRpbWUuaCIKKyNpbmNsdWRl
ICJUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaCIKKyNpbmNsdWRlIDxRdWFydHpDb3JlL1F1
YXJ0ekNvcmUuaD4KKyNpbmNsdWRlIDxsaW1pdHMuaD4KKyNpbmNsdWRlIDxvYmpjL29iamMtYXV0
by5oPgorI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgorI2luY2x1ZGUgPHd0Zi9VbnVzZWRQ
YXJhbS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CisKK3VzaW5n
IG5hbWVzcGFjZSBzdGQ7CisKKyNkZWZpbmUgSEFWRV9NT0RFUk5fUVVBUlRaQ09SRSAoIWRlZmlu
ZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpKQor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIFRoZSB0aHJlc2hvbGQgd2lkdGggb3IgaGVpZ2h0
IGFib3ZlIHdoaWNoIGEgdGlsZWQgbGF5ZXIgd2lsbCBiZSB1c2VkLiBUaGlzIHNob3VsZCBiZQor
Ly8gbGFyZ2UgZW5vdWdoIHRvIGF2b2lkIHRpbGVkIGxheWVycyBmb3IgbW9zdCBHcmFwaGljc0xh
eWVycywgYnV0IGxlc3MgdGhhbiB0aGUgT3BlbkdMCisvLyB0ZXh0dXJlIHNpemUgbGltaXQgb24g
YWxsIHN1cHBvcnRlZCBoYXJkd2FyZS4KK3N0YXRpYyBjb25zdCBpbnQgY01heFBpeGVsRGltZW5z
aW9uID0gMjAwMDsKKworLy8gVGhlIHdpZHRoIGFuZCBoZWlnaHQgb2YgYSBzaW5nbGUgdGlsZSBp
biBhIHRpbGVkIGxheWVyLiBTaG91bGQgYmUgbGFyZ2UgZW5vdWdoIHRvCisvLyBhdm9pZCBsb3Rz
IG9mIHNtYWxsIHRpbGVzIChhbmQgdGhlcmVmb3JlIGxvdHMgb2YgZHJhd2luZyBjYWxsYmFja3Mp
LCBidXQgc21hbGwgZW5vdWdoCisvLyB0byBrZWVwIHRoZSBvdmVyYWxsIHRpbGUgY29zdCBsb3cu
CitzdGF0aWMgY29uc3QgaW50IGNUaWxlZExheWVyVGlsZVNpemUgPSA1MTI7CisKKy8vIElmIHdl
IHNlbmQgYSBkdXJhdGlvbiBvZiAwIHRvIENBLCB0aGVuIGl0IHdpbGwgdXNlIHRoZSBkZWZhdWx0
IGR1cmF0aW9uCisvLyBvZiAyNTBtcy4gU28gc2VuZCBhIHZlcnkgc21hbGwgdmFsdWUgaW5zdGVh
ZC4KK3N0YXRpYyBjb25zdCBmbG9hdCBjQW5pbWF0aW9uQWxtb3N0WmVyb0R1cmF0aW9uID0gMWUt
M2Y7CisKKy8vIENBQ3VycmVudE1lZGlhVGltZSgpIGlzIGEgdGltZSBzaW5jZSBib290LiBUaGVz
ZSBtZXRob2RzIGNvbnZlcnQgYmV0d2VlbiB0aGF0IGFuZAorLy8gV2ViQ29yZSB0aW1lLCB3aGlj
aCBpcyBzeXN0ZW0gdGltZSAoVVRDKS4KK3N0YXRpYyBDRlRpbWVJbnRlcnZhbCBjdXJyZW50VGlt
ZVRvTWVkaWFUaW1lKGRvdWJsZSB0KQoreworICAgIHJldHVybiBDQUN1cnJlbnRNZWRpYVRpbWUo
KSArIHQgLSBXVEY6OmN1cnJlbnRUaW1lKCk7Cit9CisKK3N0YXRpYyBib29sIGlzVHJhbnNmb3Jt
VHlwZVRyYW5zZm9ybWF0aW9uTWF0cml4KFRyYW5zZm9ybU9wZXJhdGlvbjo6T3BlcmF0aW9uVHlw
ZSB0cmFuc2Zvcm1UeXBlKQoreworICAgIHN3aXRjaCAodHJhbnNmb3JtVHlwZSkgeworICAgIGNh
c2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpTS0VXX1g6CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRp
b246OlNLRVdfWToKKyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0tFVzoKKyAgICBjYXNl
IFRyYW5zZm9ybU9wZXJhdGlvbjo6TUFUUklYOgorICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9u
OjpST1RBVEVfM0Q6CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246Ok1BVFJJWF8zRDoKKyAg
ICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6UEVSU1BFQ1RJVkU6CisgICAgY2FzZSBUcmFuc2Zv
cm1PcGVyYXRpb246OklERU5USVRZOgorICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpOT05F
OgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorfQorCitzdGF0aWMgYm9vbCBpc1RyYW5zZm9ybVR5cGVGbG9hdFBvaW50M0Qo
VHJhbnNmb3JtT3BlcmF0aW9uOjpPcGVyYXRpb25UeXBlIHRyYW5zZm9ybVR5cGUpCit7CisgICAg
c3dpdGNoICh0cmFuc2Zvcm1UeXBlKSB7CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlND
QUxFOgorICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpTQ0FMRV8zRDoKKyAgICBjYXNlIFRy
YW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFOgorICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9u
OjpUUkFOU0xBVEVfM0Q6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGRlZmF1bHQ6CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK3N0YXRpYyBib29sIGlzVHJhbnNmb3JtVHlw
ZU51bWJlcihUcmFuc2Zvcm1PcGVyYXRpb246Ok9wZXJhdGlvblR5cGUgdHJhbnNmb3JtVHlwZSkK
K3sKKyAgICByZXR1cm4gIWlzVHJhbnNmb3JtVHlwZVRyYW5zZm9ybWF0aW9uTWF0cml4KHRyYW5z
Zm9ybVR5cGUpICYmICFpc1RyYW5zZm9ybVR5cGVGbG9hdFBvaW50M0QodHJhbnNmb3JtVHlwZSk7
Cit9CisKK3N0YXRpYyB2b2lkIGdldFRyYW5zZm9ybUZ1bmN0aW9uVmFsdWUoY29uc3QgVHJhbnNm
b3JtT3BlcmF0aW9uKiB0cmFuc2Zvcm1PcCwgVHJhbnNmb3JtT3BlcmF0aW9uOjpPcGVyYXRpb25U
eXBlIHRyYW5zZm9ybVR5cGUsIGNvbnN0IEludFNpemUmIHNpemUsIGZsb2F0JiB2YWx1ZSkKK3sK
KyAgICBzd2l0Y2ggKHRyYW5zZm9ybVR5cGUpIHsKKyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlv
bjo6Uk9UQVRFOgorICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpST1RBVEVfWDoKKyAgICBj
YXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRFX1k6CisgICAgICAgIHZhbHVlID0gdHJhbnNm
b3JtT3AgPyBkZWcycmFkKHN0YXRpY19jYXN0PGNvbnN0IFJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlv
bio+KHRyYW5zZm9ybU9wKS0+YW5nbGUoKSkgOiAwOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IFRyYW5zZm9ybU9wZXJhdGlvbjo6U0NBTEVfWDoKKyAgICAgICAgdmFsdWUgPSB0cmFuc2Zvcm1P
cCA/IHN0YXRpY19jYXN0PGNvbnN0IFNjYWxlVHJhbnNmb3JtT3BlcmF0aW9uKj4odHJhbnNmb3Jt
T3ApLT54KCkgOiAxOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlv
bjo6U0NBTEVfWToKKyAgICAgICAgdmFsdWUgPSB0cmFuc2Zvcm1PcCA/IHN0YXRpY19jYXN0PGNv
bnN0IFNjYWxlVHJhbnNmb3JtT3BlcmF0aW9uKj4odHJhbnNmb3JtT3ApLT55KCkgOiAxOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0NBTEVfWjoKKyAgICAg
ICAgdmFsdWUgPSB0cmFuc2Zvcm1PcCA/IHN0YXRpY19jYXN0PGNvbnN0IFNjYWxlVHJhbnNmb3Jt
T3BlcmF0aW9uKj4odHJhbnNmb3JtT3ApLT56KCkgOiAxOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFX1g6CisgICAgICAgIHZhbHVlID0gdHJh
bnNmb3JtT3AgPyBzdGF0aWNfY2FzdDxjb25zdCBUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24q
Pih0cmFuc2Zvcm1PcCktPngoc2l6ZSkgOiAwOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFRy
YW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFX1k6CisgICAgICAgIHZhbHVlID0gdHJhbnNmb3Jt
T3AgPyBzdGF0aWNfY2FzdDxjb25zdCBUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24qPih0cmFu
c2Zvcm1PcCktPnkoc2l6ZSkgOiAwOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFRyYW5zZm9y
bU9wZXJhdGlvbjo6VFJBTlNMQVRFX1o6CisgICAgICAgIHZhbHVlID0gdHJhbnNmb3JtT3AgPyBz
dGF0aWNfY2FzdDxjb25zdCBUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24qPih0cmFuc2Zvcm1P
cCktPnooc2l6ZSkgOiAwOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBi
cmVhazsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIGdldFRyYW5zZm9ybUZ1bmN0aW9uVmFsdWUo
Y29uc3QgVHJhbnNmb3JtT3BlcmF0aW9uKiB0cmFuc2Zvcm1PcCwgVHJhbnNmb3JtT3BlcmF0aW9u
OjpPcGVyYXRpb25UeXBlIHRyYW5zZm9ybVR5cGUsIGNvbnN0IEludFNpemUmIHNpemUsIEZsb2F0
UG9pbnQzRCYgdmFsdWUpCit7CisgICAgc3dpdGNoICh0cmFuc2Zvcm1UeXBlKSB7CisgICAgY2Fz
ZSBUcmFuc2Zvcm1PcGVyYXRpb246OlNDQUxFOgorICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9u
OjpTQ0FMRV8zRDoKKyAgICAgICAgdmFsdWUuc2V0WCh0cmFuc2Zvcm1PcCA/IHN0YXRpY19jYXN0
PGNvbnN0IFNjYWxlVHJhbnNmb3JtT3BlcmF0aW9uKj4odHJhbnNmb3JtT3ApLT54KCkgOiAxKTsK
KyAgICAgICAgdmFsdWUuc2V0WSh0cmFuc2Zvcm1PcCA/IHN0YXRpY19jYXN0PGNvbnN0IFNjYWxl
VHJhbnNmb3JtT3BlcmF0aW9uKj4odHJhbnNmb3JtT3ApLT55KCkgOiAxKTsKKyAgICAgICAgdmFs
dWUuc2V0Wih0cmFuc2Zvcm1PcCA/IHN0YXRpY19jYXN0PGNvbnN0IFNjYWxlVHJhbnNmb3JtT3Bl
cmF0aW9uKj4odHJhbnNmb3JtT3ApLT56KCkgOiAxKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURToKKyAgICBjYXNlIFRyYW5zZm9ybU9wZXJh
dGlvbjo6VFJBTlNMQVRFXzNEOgorICAgICAgICB2YWx1ZS5zZXRYKHRyYW5zZm9ybU9wID8gc3Rh
dGljX2Nhc3Q8Y29uc3QgVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uKj4odHJhbnNmb3JtT3Ap
LT54KHNpemUpIDogMCk7CisgICAgICAgIHZhbHVlLnNldFkodHJhbnNmb3JtT3AgPyBzdGF0aWNf
Y2FzdDxjb25zdCBUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24qPih0cmFuc2Zvcm1PcCktPnko
c2l6ZSkgOiAwKTsKKyAgICAgICAgdmFsdWUuc2V0Wih0cmFuc2Zvcm1PcCA/IHN0YXRpY19jYXN0
PGNvbnN0IFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbio+KHRyYW5zZm9ybU9wKS0+eihzaXpl
KSA6IDApOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAg
ICB9Cit9CisKK3N0YXRpYyB2b2lkIGdldFRyYW5zZm9ybUZ1bmN0aW9uVmFsdWUoY29uc3QgVHJh
bnNmb3JtT3BlcmF0aW9uKiB0cmFuc2Zvcm1PcCwgVHJhbnNmb3JtT3BlcmF0aW9uOjpPcGVyYXRp
b25UeXBlIHRyYW5zZm9ybVR5cGUsIGNvbnN0IEludFNpemUmIHNpemUsIFRyYW5zZm9ybWF0aW9u
TWF0cml4JiB2YWx1ZSkKK3sKKyAgICBzd2l0Y2ggKHRyYW5zZm9ybVR5cGUpIHsKKyAgICBjYXNl
IFRyYW5zZm9ybU9wZXJhdGlvbjo6U0tFV19YOgorICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9u
OjpTS0VXX1k6CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlNLRVc6CisgICAgY2FzZSBU
cmFuc2Zvcm1PcGVyYXRpb246Ok1BVFJJWDoKKyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6
Uk9UQVRFXzNEOgorICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpNQVRSSVhfM0Q6CisgICAg
Y2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlBFUlNQRUNUSVZFOgorICAgIGNhc2UgVHJhbnNmb3Jt
T3BlcmF0aW9uOjpJREVOVElUWToKKyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6Tk9ORToK
KyAgICAgICAgaWYgKHRyYW5zZm9ybU9wKQorICAgICAgICAgICAgdHJhbnNmb3JtT3AtPmFwcGx5
KHZhbHVlLCBzaXplKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdmFsdWUubWFrZUlkZW50
aXR5KCk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAg
IH0KK30KKworI2lmIEhBVkVfTU9ERVJOX1FVQVJUWkNPUkUKK3N0YXRpYyBQbGF0Zm9ybUNBQW5p
bWF0aW9uOjpWYWx1ZUZ1bmN0aW9uVHlwZSBnZXRWYWx1ZUZ1bmN0aW9uTmFtZUZvclRyYW5zZm9y
bU9wZXJhdGlvbihUcmFuc2Zvcm1PcGVyYXRpb246Ok9wZXJhdGlvblR5cGUgdHJhbnNmb3JtVHlw
ZSkKK3sKKyAgICAvLyBVc2UgbGl0ZXJhbCBzdHJpbmdzIHRvIGF2b2lkIGxpbmstdGltZSBkZXBl
bmRlbmN5IG9uIHRob3NlIHN5bWJvbHMuCisgICAgc3dpdGNoICh0cmFuc2Zvcm1UeXBlKSB7Cisg
ICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlJPVEFURV9YOgorICAgICAgICByZXR1cm4gUGxh
dGZvcm1DQUFuaW1hdGlvbjo6Um90YXRlWDsKKyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6
Uk9UQVRFX1k6CisgICAgICAgIHJldHVybiBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpSb3RhdGVZOwor
ICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpST1RBVEU6CisgICAgICAgIHJldHVybiBQbGF0
Zm9ybUNBQW5pbWF0aW9uOjpSb3RhdGVaOworICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpT
Q0FMRV9YOgorICAgICAgICByZXR1cm4gUGxhdGZvcm1DQUFuaW1hdGlvbjo6U2NhbGVYOworICAg
IGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpTQ0FMRV9ZOgorICAgICAgICByZXR1cm4gUGxhdGZv
cm1DQUFuaW1hdGlvbjo6U2NhbGVZOworICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpTQ0FM
RV9aOgorICAgICAgICByZXR1cm4gUGxhdGZvcm1DQUFuaW1hdGlvbjo6U2NhbGVaOworICAgIGNh
c2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfWDoKKyAgICAgICAgcmV0dXJuIFBsYXRm
b3JtQ0FBbmltYXRpb246OlRyYW5zbGF0ZVg7CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246
OlRSQU5TTEFURV9ZOgorICAgICAgICByZXR1cm4gUGxhdGZvcm1DQUFuaW1hdGlvbjo6VHJhbnNs
YXRlWTsKKyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFX1o6CisgICAgICAg
IHJldHVybiBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpUcmFuc2xhdGVaOworICAgIGNhc2UgVHJhbnNm
b3JtT3BlcmF0aW9uOjpTQ0FMRToKKyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0NBTEVf
M0Q6CisgICAgICAgIHJldHVybiBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpTY2FsZTsKKyAgICBjYXNl
IFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFOgorICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0
aW9uOjpUUkFOU0xBVEVfM0Q6CisgICAgICAgIHJldHVybiBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpU
cmFuc2xhdGU7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIFBsYXRmb3JtQ0FBbmltYXRp
b246Ok5vVmFsdWVGdW5jdGlvbjsKKyAgICB9Cit9CisjZW5kaWYKKworc3RhdGljIFN0cmluZyBw
cm9wZXJ0eUlkVG9TdHJpbmcoQW5pbWF0ZWRQcm9wZXJ0eUlEIHByb3BlcnR5KQoreworICAgIHN3
aXRjaCAocHJvcGVydHkpIHsKKyAgICBjYXNlIEFuaW1hdGVkUHJvcGVydHlXZWJraXRUcmFuc2Zv
cm06CisgICAgICAgIHJldHVybiAidHJhbnNmb3JtIjsKKyAgICBjYXNlIEFuaW1hdGVkUHJvcGVy
dHlPcGFjaXR5OgorICAgICAgICByZXR1cm4gIm9wYWNpdHkiOworICAgIGNhc2UgQW5pbWF0ZWRQ
cm9wZXJ0eUJhY2tncm91bmRDb2xvcjoKKyAgICAgICAgcmV0dXJuICJiYWNrZ3JvdW5kQ29sb3Ii
OworICAgIGNhc2UgQW5pbWF0ZWRQcm9wZXJ0eUludmFsaWQ6CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4g
IiI7Cit9CisKK3N0YXRpYyBTdHJpbmcgYW5pbWF0aW9uSWRlbnRpZmllcihjb25zdCBTdHJpbmcm
IGFuaW1hdGlvbk5hbWUsIEFuaW1hdGVkUHJvcGVydHlJRCBwcm9wZXJ0eSwgaW50IGluZGV4KQor
eworICAgIHJldHVybiBtYWtlU3RyaW5nKGFuaW1hdGlvbk5hbWUsICdfJywgU3RyaW5nOjpudW1i
ZXIocHJvcGVydHkpLCAnXycsIFN0cmluZzo6bnVtYmVyKGluZGV4KSk7Cit9CisKK3N0YXRpYyBi
b29sIGFuaW1hdGlvbkhhc1N0ZXBzVGltaW5nRnVuY3Rpb24oY29uc3QgS2V5ZnJhbWVWYWx1ZUxp
c3QmIHZhbHVlTGlzdCwgY29uc3QgQW5pbWF0aW9uKiBhbmltKQoreworICAgIGlmIChhbmltLT50
aW1pbmdGdW5jdGlvbigpLT5pc1N0ZXBzVGltaW5nRnVuY3Rpb24oKSkKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHZhbHVlTGlzdC5zaXpl
KCk7ICsraSkgeworICAgICAgICBjb25zdCBUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb24g
PSB2YWx1ZUxpc3QuYXQoaSktPnRpbWluZ0Z1bmN0aW9uKCk7CisgICAgICAgIGlmICh0aW1pbmdG
dW5jdGlvbiAmJiB0aW1pbmdGdW5jdGlvbi0+aXNTdGVwc1RpbWluZ0Z1bmN0aW9uKCkpCisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK1Bh
c3NPd25QdHI8R3JhcGhpY3NMYXllcj4gR3JhcGhpY3NMYXllcjo6Y3JlYXRlKEdyYXBoaWNzTGF5
ZXJDbGllbnQqIGNsaWVudCkKK3sKKyAgICByZXR1cm4gbmV3IEdyYXBoaWNzTGF5ZXJDQShjbGll
bnQpOworfQorCitHcmFwaGljc0xheWVyQ0E6OkdyYXBoaWNzTGF5ZXJDQShHcmFwaGljc0xheWVy
Q2xpZW50KiBjbGllbnQpCisgICAgOiBHcmFwaGljc0xheWVyKGNsaWVudCkKKyAgICAsIG1fY29u
dGVudHNMYXllclB1cnBvc2UoTm9Db250ZW50c0xheWVyKQorICAgICwgbV9jb250ZW50c0xheWVy
SGFzQmFja2dyb3VuZENvbG9yKGZhbHNlKQorICAgICwgbV91bmNvbW1pdHRlZENoYW5nZXMoTm9D
aGFuZ2UpCit7CisgICAgbV9sYXllciA9IFBsYXRmb3JtQ0FMYXllcjo6Y3JlYXRlKFBsYXRmb3Jt
Q0FMYXllcjo6TGF5ZXJUeXBlV2ViTGF5ZXIsIHRoaXMpOworCisjaWYgIUhBVkVfTU9ERVJOX1FV
QVJUWkNPUkUKKyAgICBzZXRDb250ZW50c09yaWVudGF0aW9uKGRlZmF1bHRDb250ZW50c09yaWVu
dGF0aW9uKCkpOworI2VuZGlmCisKKyAgICB1cGRhdGVEZWJ1Z0luZGljYXRvcnMoKTsKK30KKwor
R3JhcGhpY3NMYXllckNBOjp+R3JhcGhpY3NMYXllckNBKCkKK3sKKyAgICAvLyBXZSByZWxlYXNl
IG91ciByZWZlcmVuY2VzIHRvIHRoZSBQbGF0Zm9ybUNBTGF5ZXJzIGhlcmUsIGJ1dCBkbyBub3Qg
YWN0aXZlbHkgdW5wYXJlbnQgdGhlbSwKKyAgICAvLyBzaW5jZSB0aGF0IHdpbGwgY2F1c2UgYSBj
b21taXQgYW5kIGJyZWFrIG91ciBiYXRjaGVkIGNvbW1pdCBtb2RlbC4gVGhlIGxheWVycyB3aWxs
CisgICAgLy8gZ2V0IHJlbGVhc2VkIHdoZW4gdGhlIHJvb3Rtb3N0IG1vZGlmaWVkIEdyYXBoaWNz
TGF5ZXJDQSByZWJ1aWxkcyBpdHMgY2hpbGQgbGF5ZXJzLgorICAgIAorICAgIC8vIENsZWFuIHVw
IHRoZSBsYXllci4KKyAgICBpZiAobV9sYXllcikKKyAgICAgICAgbV9sYXllci0+c2V0T3duZXIo
MCk7CisgICAgCisgICAgaWYgKG1fY29udGVudHNMYXllcikKKyAgICAgICAgbV9jb250ZW50c0xh
eWVyLT5zZXRPd25lcigwKTsKKyAgICAgICAgCisgICAgaWYgKG1fc3RydWN0dXJhbExheWVyKQor
ICAgICAgICBtX3N0cnVjdHVyYWxMYXllci0+c2V0T3duZXIoMCk7CisgICAgCisgICAgLy8gUmVs
ZWFzZSB0aGUgY2xvbmUgbGF5ZXJzIGluc2lkZSB0aGUgZXhjZXB0aW9uLWhhbmRsaW5nIGJsb2Nr
LgorICAgIHJlbW92ZUNsb25lTGF5ZXJzKCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpz
ZXROYW1lKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBTdHJpbmcgbG9uZ05hbWUgPSBTdHJp
bmc6OmZvcm1hdCgiQ0FMYXllciglcCkgR3JhcGhpY3NMYXllciglcCkgIiwgbV9sYXllci5nZXQo
KSwgdGhpcykgKyBuYW1lOworICAgIEdyYXBoaWNzTGF5ZXI6OnNldE5hbWUobG9uZ05hbWUpOwor
ICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChOYW1lQ2hhbmdlZCk7Cit9CisKK1BsYXRmb3Jt
TGF5ZXIqIEdyYXBoaWNzTGF5ZXJDQTo6cGxhdGZvcm1MYXllcigpIGNvbnN0Cit7CisgICAgcmV0
dXJuIHByaW1hcnlMYXllcigpLT5wbGF0Zm9ybUxheWVyKCk7Cit9CisKK2Jvb2wgR3JhcGhpY3NM
YXllckNBOjpzZXRDaGlsZHJlbihjb25zdCBWZWN0b3I8R3JhcGhpY3NMYXllcio+JiBjaGlsZHJl
bikKK3sKKyAgICBib29sIGNoaWxkcmVuQ2hhbmdlZCA9IEdyYXBoaWNzTGF5ZXI6OnNldENoaWxk
cmVuKGNoaWxkcmVuKTsKKyAgICBpZiAoY2hpbGRyZW5DaGFuZ2VkKQorICAgICAgICBub3RlU3Vi
bGF5ZXJzQ2hhbmdlZCgpOworICAgIAorICAgIHJldHVybiBjaGlsZHJlbkNoYW5nZWQ7Cit9CisK
K3ZvaWQgR3JhcGhpY3NMYXllckNBOjphZGRDaGlsZChHcmFwaGljc0xheWVyKiBjaGlsZExheWVy
KQoreworICAgIEdyYXBoaWNzTGF5ZXI6OmFkZENoaWxkKGNoaWxkTGF5ZXIpOworICAgIG5vdGVT
dWJsYXllcnNDaGFuZ2VkKCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjphZGRDaGlsZEF0
SW5kZXgoR3JhcGhpY3NMYXllciogY2hpbGRMYXllciwgaW50IGluZGV4KQoreworICAgIEdyYXBo
aWNzTGF5ZXI6OmFkZENoaWxkQXRJbmRleChjaGlsZExheWVyLCBpbmRleCk7CisgICAgbm90ZVN1
YmxheWVyc0NoYW5nZWQoKTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OmFkZENoaWxkQmVs
b3coR3JhcGhpY3NMYXllciogY2hpbGRMYXllciwgR3JhcGhpY3NMYXllciogc2libGluZykKK3sK
KyAgICBHcmFwaGljc0xheWVyOjphZGRDaGlsZEJlbG93KGNoaWxkTGF5ZXIsIHNpYmxpbmcpOwor
ICAgIG5vdGVTdWJsYXllcnNDaGFuZ2VkKCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjph
ZGRDaGlsZEFib3ZlKEdyYXBoaWNzTGF5ZXIqIGNoaWxkTGF5ZXIsIEdyYXBoaWNzTGF5ZXIqIHNp
YmxpbmcpCit7CisgICAgR3JhcGhpY3NMYXllcjo6YWRkQ2hpbGRBYm92ZShjaGlsZExheWVyLCBz
aWJsaW5nKTsKKyAgICBub3RlU3VibGF5ZXJzQ2hhbmdlZCgpOworfQorCitib29sIEdyYXBoaWNz
TGF5ZXJDQTo6cmVwbGFjZUNoaWxkKEdyYXBoaWNzTGF5ZXIqIG9sZENoaWxkLCBHcmFwaGljc0xh
eWVyKiBuZXdDaGlsZCkKK3sKKyAgICBpZiAoR3JhcGhpY3NMYXllcjo6cmVwbGFjZUNoaWxkKG9s
ZENoaWxkLCBuZXdDaGlsZCkpIHsKKyAgICAgICAgbm90ZVN1YmxheWVyc0NoYW5nZWQoKTsKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBH
cmFwaGljc0xheWVyQ0E6OnJlbW92ZUZyb21QYXJlbnQoKQoreworICAgIGlmIChtX3BhcmVudCkK
KyAgICAgICAgc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllckNBKj4obV9wYXJlbnQpLT5ub3RlU3Vi
bGF5ZXJzQ2hhbmdlZCgpOworICAgIEdyYXBoaWNzTGF5ZXI6OnJlbW92ZUZyb21QYXJlbnQoKTsK
K30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldE1hc2tMYXllcihHcmFwaGljc0xheWVyKiBs
YXllcikKK3sKKyAgICBpZiAobGF5ZXIgPT0gbV9tYXNrTGF5ZXIpCisgICAgICAgIHJldHVybjsK
KworICAgIEdyYXBoaWNzTGF5ZXI6OnNldE1hc2tMYXllcihsYXllcik7CisgICAgbm90ZUxheWVy
UHJvcGVydHlDaGFuZ2VkKE1hc2tMYXllckNoYW5nZWQpOworCisgICAgcHJvcGFnYXRlTGF5ZXJD
aGFuZ2VUb1JlcGxpY2FzKCk7CisgICAgCisgICAgaWYgKG1fcmVwbGljYXRlZExheWVyKQorICAg
ICAgICBzdGF0aWNfY2FzdDxHcmFwaGljc0xheWVyQ0EqPihtX3JlcGxpY2F0ZWRMYXllciktPnBy
b3BhZ2F0ZUxheWVyQ2hhbmdlVG9SZXBsaWNhcygpOworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJD
QTo6c2V0UmVwbGljYXRlZExheWVyKEdyYXBoaWNzTGF5ZXIqIGxheWVyKQoreworICAgIGlmIChs
YXllciA9PSBtX3JlcGxpY2F0ZWRMYXllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgR3JhcGhp
Y3NMYXllcjo6c2V0UmVwbGljYXRlZExheWVyKGxheWVyKTsKKyAgICBub3RlTGF5ZXJQcm9wZXJ0
eUNoYW5nZWQoUmVwbGljYXRlZExheWVyQ2hhbmdlZCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXll
ckNBOjpzZXRSZXBsaWNhdGVkQnlMYXllcihHcmFwaGljc0xheWVyKiBsYXllcikKK3sKKyAgICBp
ZiAobGF5ZXIgPT0gbV9yZXBsaWNhTGF5ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIEdyYXBo
aWNzTGF5ZXI6OnNldFJlcGxpY2F0ZWRCeUxheWVyKGxheWVyKTsKKyAgICBub3RlU3VibGF5ZXJz
Q2hhbmdlZCgpOworICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChSZXBsaWNhdGVkTGF5ZXJD
aGFuZ2VkKTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldFBvc2l0aW9uKGNvbnN0IEZs
b2F0UG9pbnQmIHBvaW50KQoreworICAgIGlmIChwb2ludCA9PSBtX3Bvc2l0aW9uKQorICAgICAg
ICByZXR1cm47CisKKyAgICBHcmFwaGljc0xheWVyOjpzZXRQb3NpdGlvbihwb2ludCk7CisgICAg
bm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKFBvc2l0aW9uQ2hhbmdlZCk7Cit9CisKK3ZvaWQgR3Jh
cGhpY3NMYXllckNBOjpzZXRBbmNob3JQb2ludChjb25zdCBGbG9hdFBvaW50M0QmIHBvaW50KQor
eworICAgIGlmIChwb2ludCA9PSBtX2FuY2hvclBvaW50KQorICAgICAgICByZXR1cm47CisKKyAg
ICBHcmFwaGljc0xheWVyOjpzZXRBbmNob3JQb2ludChwb2ludCk7CisgICAgbm90ZUxheWVyUHJv
cGVydHlDaGFuZ2VkKEFuY2hvclBvaW50Q2hhbmdlZCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXll
ckNBOjpzZXRTaXplKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKK3sKKyAgICBpZiAoc2l6ZSA9PSBt
X3NpemUpCisgICAgICAgIHJldHVybjsKKworICAgIEdyYXBoaWNzTGF5ZXI6OnNldFNpemUoc2l6
ZSk7CisgICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKFNpemVDaGFuZ2VkKTsKK30KKwordm9p
ZCBHcmFwaGljc0xheWVyQ0E6OnNldFRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgdCkKK3sKKyAgICBpZiAodCA9PSBtX3RyYW5zZm9ybSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgR3JhcGhpY3NMYXllcjo6c2V0VHJhbnNmb3JtKHQpOworICAgIG5vdGVMYXllclByb3BlcnR5
Q2hhbmdlZChUcmFuc2Zvcm1DaGFuZ2VkKTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnNl
dENoaWxkcmVuVHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0KQoreworICAg
IGlmICh0ID09IG1fY2hpbGRyZW5UcmFuc2Zvcm0pCisgICAgICAgIHJldHVybjsKKworICAgIEdy
YXBoaWNzTGF5ZXI6OnNldENoaWxkcmVuVHJhbnNmb3JtKHQpOworICAgIG5vdGVMYXllclByb3Bl
cnR5Q2hhbmdlZChDaGlsZHJlblRyYW5zZm9ybUNoYW5nZWQpOworfQorCit2b2lkIEdyYXBoaWNz
TGF5ZXJDQTo6bW92ZU9yQ29weUxheWVyQW5pbWF0aW9uKE1vdmVPckNvcHkgb3BlcmF0aW9uLCBj
b25zdCBTdHJpbmcmIGFuaW1hdGlvbklkZW50aWZpZXIsIFBsYXRmb3JtQ0FMYXllciAqZnJvbUxh
eWVyLCBQbGF0Zm9ybUNBTGF5ZXIgKnRvTGF5ZXIpCit7CisgICAgUmVmUHRyPFBsYXRmb3JtQ0FB
bmltYXRpb24+IGFuaW0gPSBmcm9tTGF5ZXItPmFuaW1hdGlvbkZvcktleShhbmltYXRpb25JZGVu
dGlmaWVyKTsKKyAgICBpZiAoIWFuaW0pCisgICAgICAgIHJldHVybjsKKworICAgIHN3aXRjaCAo
b3BlcmF0aW9uKSB7CisgICAgY2FzZSBNb3ZlOgorICAgICAgICBmcm9tTGF5ZXItPnJlbW92ZUFu
aW1hdGlvbkZvcktleShhbmltYXRpb25JZGVudGlmaWVyKTsKKyAgICAgICAgdG9MYXllci0+YWRk
QW5pbWF0aW9uRm9yS2V5KGFuaW1hdGlvbklkZW50aWZpZXIsIGFuaW0uZ2V0KCkpOworICAgICAg
ICBicmVhazsKKworICAgIGNhc2UgQ29weToKKyAgICAgICAgdG9MYXllci0+YWRkQW5pbWF0aW9u
Rm9yS2V5KGFuaW1hdGlvbklkZW50aWZpZXIsIGFuaW0uZ2V0KCkpOworICAgICAgICBicmVhazsK
KyAgICB9Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjptb3ZlT3JDb3B5QW5pbWF0aW9uc0Zv
clByb3BlcnR5KE1vdmVPckNvcHkgb3BlcmF0aW9uLCBBbmltYXRlZFByb3BlcnR5SUQgcHJvcGVy
dHksIFBsYXRmb3JtQ0FMYXllciAqZnJvbUxheWVyLCBQbGF0Zm9ybUNBTGF5ZXIgKnRvTGF5ZXIp
Cit7CisgICAgLy8gTG9vayBmb3IgcnVubmluZyBhbmltYXRpb25zIGFmZmVjdGluZyB0aGlzIHBy
b3BlcnR5LgorICAgIEFuaW1hdGlvbnNNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fcnVubmlu
Z0FuaW1hdGlvbnMuZW5kKCk7CisgICAgZm9yIChBbmltYXRpb25zTWFwOjpjb25zdF9pdGVyYXRv
ciBpdCA9IG1fcnVubmluZ0FuaW1hdGlvbnMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Cisg
ICAgICAgIGNvbnN0IFZlY3RvcjxMYXllclByb3BlcnR5QW5pbWF0aW9uPiYgcHJvcGVydHlBbmlt
YXRpb25zID0gaXQtPnNlY29uZDsKKyAgICAgICAgc2l6ZV90IG51bUFuaW1hdGlvbnMgPSBwcm9w
ZXJ0eUFuaW1hdGlvbnMuc2l6ZSgpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51
bUFuaW1hdGlvbnM7ICsraSkgeworICAgICAgICAgICAgY29uc3QgTGF5ZXJQcm9wZXJ0eUFuaW1h
dGlvbiYgY3VyckFuaW1hdGlvbiA9IHByb3BlcnR5QW5pbWF0aW9uc1tpXTsKKyAgICAgICAgICAg
IGlmIChjdXJyQW5pbWF0aW9uLm1fcHJvcGVydHkgPT0gcHJvcGVydHkpCisgICAgICAgICAgICAg
ICAgbW92ZU9yQ29weUxheWVyQW5pbWF0aW9uKG9wZXJhdGlvbiwgYW5pbWF0aW9uSWRlbnRpZmll
cihjdXJyQW5pbWF0aW9uLm1fbmFtZSwgY3VyckFuaW1hdGlvbi5tX3Byb3BlcnR5LCBjdXJyQW5p
bWF0aW9uLm1faW5kZXgpLCBmcm9tTGF5ZXIsIHRvTGF5ZXIpOworICAgICAgICB9CisgICAgfQor
fQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0UHJlc2VydmVzM0QoYm9vbCBwcmVzZXJ2ZXMz
RCkKK3sKKyAgICBpZiAocHJlc2VydmVzM0QgPT0gbV9wcmVzZXJ2ZXMzRCkKKyAgICAgICAgcmV0
dXJuOworCisgICAgR3JhcGhpY3NMYXllcjo6c2V0UHJlc2VydmVzM0QocHJlc2VydmVzM0QpOwor
ICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChQcmVzZXJ2ZXMzRENoYW5nZWQpOworfQorCit2
b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0TWFza3NUb0JvdW5kcyhib29sIG1hc2tzVG9Cb3VuZHMp
Cit7CisgICAgaWYgKG1hc2tzVG9Cb3VuZHMgPT0gbV9tYXNrc1RvQm91bmRzKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBHcmFwaGljc0xheWVyOjpzZXRNYXNrc1RvQm91bmRzKG1hc2tzVG9Cb3Vu
ZHMpOworICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChNYXNrc1RvQm91bmRzQ2hhbmdlZCk7
Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXREcmF3c0NvbnRlbnQoYm9vbCBkcmF3c0Nv
bnRlbnQpCit7CisgICAgaWYgKGRyYXdzQ29udGVudCA9PSBtX2RyYXdzQ29udGVudCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgR3JhcGhpY3NMYXllcjo6c2V0RHJhd3NDb250ZW50KGRyYXdzQ29u
dGVudCk7CisgICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKERyYXdzQ29udGVudENoYW5nZWQp
OworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IENv
bG9yJiBjb2xvcikKK3sKKyAgICBpZiAobV9iYWNrZ3JvdW5kQ29sb3JTZXQgJiYgbV9iYWNrZ3Jv
dW5kQ29sb3IgPT0gY29sb3IpCisgICAgICAgIHJldHVybjsKKworICAgIEdyYXBoaWNzTGF5ZXI6
OnNldEJhY2tncm91bmRDb2xvcihjb2xvcik7CisKKyAgICBtX2NvbnRlbnRzTGF5ZXJIYXNCYWNr
Z3JvdW5kQ29sb3IgPSB0cnVlOworICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChCYWNrZ3Jv
dW5kQ29sb3JDaGFuZ2VkKTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OmNsZWFyQmFja2dy
b3VuZENvbG9yKCkKK3sKKyAgICBpZiAoIW1fYmFja2dyb3VuZENvbG9yU2V0KQorICAgICAgICBy
ZXR1cm47CisKKyAgICBHcmFwaGljc0xheWVyOjpjbGVhckJhY2tncm91bmRDb2xvcigpOworICAg
IG1fY29udGVudHNMYXllckhhc0JhY2tncm91bmRDb2xvciA9IGZhbHNlOworICAgIG5vdGVMYXll
clByb3BlcnR5Q2hhbmdlZChCYWNrZ3JvdW5kQ29sb3JDaGFuZ2VkKTsKK30KKwordm9pZCBHcmFw
aGljc0xheWVyQ0E6OnNldENvbnRlbnRzT3BhcXVlKGJvb2wgb3BhcXVlKQoreworICAgIGlmICht
X2NvbnRlbnRzT3BhcXVlID09IG9wYXF1ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgR3JhcGhp
Y3NMYXllcjo6c2V0Q29udGVudHNPcGFxdWUob3BhcXVlKTsKKyAgICBub3RlTGF5ZXJQcm9wZXJ0
eUNoYW5nZWQoQ29udGVudHNPcGFxdWVDaGFuZ2VkKTsKK30KKwordm9pZCBHcmFwaGljc0xheWVy
Q0E6OnNldEJhY2tmYWNlVmlzaWJpbGl0eShib29sIHZpc2libGUpCit7CisgICAgaWYgKG1fYmFj
a2ZhY2VWaXNpYmlsaXR5ID09IHZpc2libGUpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBH
cmFwaGljc0xheWVyOjpzZXRCYWNrZmFjZVZpc2liaWxpdHkodmlzaWJsZSk7CisgICAgbm90ZUxh
eWVyUHJvcGVydHlDaGFuZ2VkKEJhY2tmYWNlVmlzaWJpbGl0eUNoYW5nZWQpOworfQorCit2b2lk
IEdyYXBoaWNzTGF5ZXJDQTo6c2V0T3BhY2l0eShmbG9hdCBvcGFjaXR5KQoreworICAgIGZsb2F0
IGNsYW1wZWRPcGFjaXR5ID0gbWF4KDAuMGYsIG1pbihvcGFjaXR5LCAxLjBmKSk7CisKKyAgICBp
ZiAoY2xhbXBlZE9wYWNpdHkgPT0gbV9vcGFjaXR5KQorICAgICAgICByZXR1cm47CisKKyAgICBH
cmFwaGljc0xheWVyOjpzZXRPcGFjaXR5KGNsYW1wZWRPcGFjaXR5KTsKKyAgICBub3RlTGF5ZXJQ
cm9wZXJ0eUNoYW5nZWQoT3BhY2l0eUNoYW5nZWQpOworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJD
QTo6c2V0TmVlZHNEaXNwbGF5KCkKK3sKKyAgICBGbG9hdFJlY3QgaHVnZVJlY3QoLW51bWVyaWNf
bGltaXRzPGZsb2F0Pjo6bWF4KCkgLyAyLCAtbnVtZXJpY19saW1pdHM8ZmxvYXQ+OjptYXgoKSAv
IDIsCisgICAgICAgICAgICAgICAgICAgICAgIG51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4KCks
IG51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4KCkpOworCisgICAgc2V0TmVlZHNEaXNwbGF5SW5S
ZWN0KGh1Z2VSZWN0KTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldE5lZWRzRGlzcGxh
eUluUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCit7CisgICAgaWYgKCFkcmF3c0NvbnRlbnQo
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgY29uc3Qgc2l6ZV90IG1heERpcnR5UmVjdHMgPSAz
MjsKKyAgICAKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZGlydHlSZWN0cy5zaXplKCk7
ICsraSkgeworICAgICAgICBpZiAobV9kaXJ0eVJlY3RzW2ldLmNvbnRhaW5zKHJlY3QpKQorICAg
ICAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBpZiAobV9kaXJ0eVJlY3RzLnNpemUo
KSA8IG1heERpcnR5UmVjdHMpCisgICAgICAgIG1fZGlydHlSZWN0cy5hcHBlbmQocmVjdCk7Cisg
ICAgZWxzZQorICAgICAgICBtX2RpcnR5UmVjdHNbMF0udW5pdGUocmVjdCk7CisKKyAgICBub3Rl
TGF5ZXJQcm9wZXJ0eUNoYW5nZWQoRGlydHlSZWN0c0NoYW5nZWQpOworfQorCit2b2lkIEdyYXBo
aWNzTGF5ZXJDQTo6c2V0Q29udGVudHNOZWVkc0Rpc3BsYXkoKQoreworICAgIG5vdGVMYXllclBy
b3BlcnR5Q2hhbmdlZChDb250ZW50c05lZWRzRGlzcGxheSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NM
YXllckNBOjpzZXRDb250ZW50c1JlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkKK3sKKyAgICBpZiAo
cmVjdCA9PSBtX2NvbnRlbnRzUmVjdCkKKyAgICAgICAgcmV0dXJuOworCisgICAgR3JhcGhpY3NM
YXllcjo6c2V0Q29udGVudHNSZWN0KHJlY3QpOworICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdl
ZChDb250ZW50c1JlY3RDaGFuZ2VkKTsKK30KKworYm9vbCBHcmFwaGljc0xheWVyQ0E6OmFkZEFu
aW1hdGlvbihjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVMaXN0LCBjb25zdCBJbnRTaXpl
JiBib3hTaXplLCBjb25zdCBBbmltYXRpb24qIGFuaW0sIGNvbnN0IFN0cmluZyYgYW5pbWF0aW9u
TmFtZSwgZG91YmxlIHRpbWVPZmZzZXQpCit7CisgICAgQVNTRVJUKCFhbmltYXRpb25OYW1lLmlz
RW1wdHkoKSk7CisKKyAgICBpZiAoIWFuaW0gfHwgYW5pbS0+aXNFbXB0eU9yWmVyb0R1cmF0aW9u
KCkgfHwgdmFsdWVMaXN0LnNpemUoKSA8IDIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworI2lm
ICFIQVZFX01PREVSTl9RVUFSVFpDT1JFCisgICAgLy8gT2xkZXIgdmVyc2lvbnMgb2YgUXVhcnR6
Q29yZSBkbyBub3QgaGFuZGxlIG9wYWNpdHkgaW4gdHJhbnNmb3JtIGxheWVycyBwcm9wZXJseSwg
c28gd2Ugd2lsbAorICAgIC8vIGFsd2F5cyBkbyBzb2Z0d2FyZSBhbmltYXRpb24gaW4gdGhhdCBj
YXNlLgorICAgIGlmICh2YWx1ZUxpc3QucHJvcGVydHkoKSA9PSBBbmltYXRlZFByb3BlcnR5T3Bh
Y2l0eSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCisKKyAgICAvLyBDb3JlQW5pbWF0
aW9uIGRvZXMgbm90IGhhbmRsZSB0aGUgc3RlcHMoKSB0aW1pbmcgZnVuY3Rpb24uIEZhbGwgYmFj
aworICAgIC8vIHRvIHNvZnR3YXJlIGFuaW1hdGlvbiBpbiB0aGF0IGNhc2UuCisgICAgaWYgKGFu
aW1hdGlvbkhhc1N0ZXBzVGltaW5nRnVuY3Rpb24odmFsdWVMaXN0LCBhbmltKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgYm9vbCBjcmVhdGVkQW5pbWF0aW9ucyA9IGZhbHNlOworICAg
IGlmICh2YWx1ZUxpc3QucHJvcGVydHkoKSA9PSBBbmltYXRlZFByb3BlcnR5V2Via2l0VHJhbnNm
b3JtKQorICAgICAgICBjcmVhdGVkQW5pbWF0aW9ucyA9IGNyZWF0ZVRyYW5zZm9ybUFuaW1hdGlv
bnNGcm9tS2V5ZnJhbWVzKHZhbHVlTGlzdCwgYW5pbSwgYW5pbWF0aW9uTmFtZSwgdGltZU9mZnNl
dCwgYm94U2l6ZSk7CisgICAgZWxzZQorICAgICAgICBjcmVhdGVkQW5pbWF0aW9ucyA9IGNyZWF0
ZUFuaW1hdGlvbkZyb21LZXlmcmFtZXModmFsdWVMaXN0LCBhbmltLCBhbmltYXRpb25OYW1lLCB0
aW1lT2Zmc2V0KTsKKworICAgIGlmIChjcmVhdGVkQW5pbWF0aW9ucykKKyAgICAgICAgbm90ZUxh
eWVyUHJvcGVydHlDaGFuZ2VkKEFuaW1hdGlvbkNoYW5nZWQpOworICAgICAgICAKKyAgICByZXR1
cm4gY3JlYXRlZEFuaW1hdGlvbnM7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpwYXVzZUFu
aW1hdGlvbihjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGRvdWJsZSB0aW1lT2Zmc2V0KQor
eworICAgIGlmICghYW5pbWF0aW9uSXNSdW5uaW5nKGFuaW1hdGlvbk5hbWUpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBBbmltYXRpb25zVG9Qcm9jZXNzTWFwOjppdGVyYXRvciBpdCA9IG1fYW5p
bWF0aW9uc1RvUHJvY2Vzcy5maW5kKGFuaW1hdGlvbk5hbWUpOworICAgIGlmIChpdCAhPSBtX2Fu
aW1hdGlvbnNUb1Byb2Nlc3MuZW5kKCkpIHsKKyAgICAgICAgQW5pbWF0aW9uUHJvY2Vzc2luZ0Fj
dGlvbiYgcHJvY2Vzc2luZ0luZm8gPSBpdC0+c2Vjb25kOworICAgICAgICAvLyBJZiBhbiBhbmlt
YXRpb24gaXMgc2NoZWR1bGVkIHRvIGJlIHJlbW92ZWQsIGRvbid0IGNoYW5nZSB0aGUgcmVtb3Zl
IHRvIGEgcGF1c2UuCisgICAgICAgIGlmIChwcm9jZXNzaW5nSW5mby5hY3Rpb24gIT0gUmVtb3Zl
KQorICAgICAgICAgICAgcHJvY2Vzc2luZ0luZm8uYWN0aW9uID0gUGF1c2U7CisgICAgfSBlbHNl
CisgICAgICAgIG1fYW5pbWF0aW9uc1RvUHJvY2Vzcy5hZGQoYW5pbWF0aW9uTmFtZSwgQW5pbWF0
aW9uUHJvY2Vzc2luZ0FjdGlvbihQYXVzZSwgdGltZU9mZnNldCkpOworCisgICAgbm90ZUxheWVy
UHJvcGVydHlDaGFuZ2VkKEFuaW1hdGlvbkNoYW5nZWQpOworfQorCit2b2lkIEdyYXBoaWNzTGF5
ZXJDQTo6cmVtb3ZlQW5pbWF0aW9uKGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSkKK3sKKyAg
ICBpZiAoIWFuaW1hdGlvbklzUnVubmluZyhhbmltYXRpb25OYW1lKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgbV9hbmltYXRpb25zVG9Qcm9jZXNzLmFkZChhbmltYXRpb25OYW1lLCBBbmltYXRp
b25Qcm9jZXNzaW5nQWN0aW9uKFJlbW92ZSkpOworICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdl
ZChBbmltYXRpb25DaGFuZ2VkKTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OmFuaW1hdGlv
blN0YXJ0ZWQoQ0ZUaW1lSW50ZXJ2YWwgc3RhcnRUaW1lKQoreworICAgIGlmIChtX2NsaWVudCkK
KyAgICAgICAgbV9jbGllbnQtPm5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQodGhpcywgc3RhcnRUaW1l
KTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRzVG9JbWFnZShJbWFnZSog
aW1hZ2UpCit7CisgICAgaWYgKGltYWdlKSB7CisgICAgICAgIENHSW1hZ2VSZWYgbmV3SW1hZ2Ug
PSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICAgICAgaWYgKCFuZXdJ
bWFnZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAvLyBDaGVjayB0byBzZWUgaWYg
dGhlIGltYWdlIGNoYW5nZWQ7IHdlIGhhdmUgdG8gZG8gdGhpcyBiZWNhdXNlIHRoZSBjYWxsIHRv
CisgICAgICAgIC8vIENHSW1hZ2VDcmVhdGVDb3B5V2l0aENvbG9yU3BhY2UoKSBiZWxvdyBjYW4g
Y3JlYXRlIGEgbmV3IGltYWdlIGV2ZXJ5IHRpbWUuCisgICAgICAgIGlmIChtX3VuY29ycmVjdGVk
Q29udGVudHNJbWFnZSAmJiBtX3VuY29ycmVjdGVkQ29udGVudHNJbWFnZS5nZXQoKSA9PSBuZXdJ
bWFnZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgICAgIG1fdW5jb3JyZWN0
ZWRDb250ZW50c0ltYWdlID0gbmV3SW1hZ2U7CisgICAgICAgIG1fcGVuZGluZ0NvbnRlbnRzSW1h
Z2UgPSBuZXdJbWFnZTsKKyAgICAgICAgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UgPSBDR0lt
YWdlR2V0Q29sb3JTcGFjZShtX3BlbmRpbmdDb250ZW50c0ltYWdlLmdldCgpKTsKKworICAgICAg
ICBzdGF0aWMgQ0dDb2xvclNwYWNlUmVmIGRldmljZVJHQiA9IENHQ29sb3JTcGFjZUNyZWF0ZURl
dmljZVJHQigpOworICAgICAgICBpZiAoY29sb3JTcGFjZSAmJiBDRkVxdWFsKGNvbG9yU3BhY2Us
IGRldmljZVJHQikpIHsKKyAgICAgICAgICAgIC8vIENvcmVHcmFwaGljcyByZW5kZXJzIGltYWdl
cyB0YWdnZWQgd2l0aCBEZXZpY2VSR0IgdXNpbmcgdGhlIGNvbG9yIHNwYWNlIG9mIHRoZSBtYWlu
IGRpc3BsYXkuIFdoZW4gd2UgaGFuZCBzdWNoCisgICAgICAgICAgICAvLyBpbWFnZXMgdG8gQ0Eg
d2UgbmVlZCB0byB0YWcgdGhlbSBzaW1pbGFybHkgc28gQ0EgcmVuZGVyaW5nIG1hdGNoZXMgQ0cg
cmVuZGVyaW5nLgorICAgICAgICAgICAgc3RhdGljIENHQ29sb3JTcGFjZVJlZiBnZW5lcmljUkdC
ID0gQ0dEaXNwbGF5Q29weUNvbG9yU3BhY2Uoa0NHRGlyZWN0TWFpbkRpc3BsYXkpOworICAgICAg
ICAgICAgbV9wZW5kaW5nQ29udGVudHNJbWFnZS5hZG9wdENGKENHSW1hZ2VDcmVhdGVDb3B5V2l0
aENvbG9yU3BhY2UobV9wZW5kaW5nQ29udGVudHNJbWFnZS5nZXQoKSwgZ2VuZXJpY1JHQikpOwor
ICAgICAgICB9CisgICAgICAgIG1fY29udGVudHNMYXllclB1cnBvc2UgPSBDb250ZW50c0xheWVy
Rm9ySW1hZ2U7CisgICAgICAgIGlmICghbV9jb250ZW50c0xheWVyKQorICAgICAgICAgICAgbm90
ZVN1YmxheWVyc0NoYW5nZWQoKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX3VuY29ycmVjdGVk
Q29udGVudHNJbWFnZSA9IDA7CisgICAgICAgIG1fcGVuZGluZ0NvbnRlbnRzSW1hZ2UgPSAwOwor
ICAgICAgICBtX2NvbnRlbnRzTGF5ZXJQdXJwb3NlID0gTm9Db250ZW50c0xheWVyOworICAgICAg
ICBpZiAobV9jb250ZW50c0xheWVyKQorICAgICAgICAgICAgbm90ZVN1YmxheWVyc0NoYW5nZWQo
KTsKKyAgICB9CisKKyAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoQ29udGVudHNJbWFnZUNo
YW5nZWQpOworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0Q29udGVudHNUb01lZGlhKFBs
YXRmb3JtTGF5ZXIqIG1lZGlhTGF5ZXIpCit7CisgICAgaWYgKG1fY29udGVudHNMYXllciAmJiBt
ZWRpYUxheWVyID09IG1fY29udGVudHNMYXllci0+cGxhdGZvcm1MYXllcigpKQorICAgICAgICBy
ZXR1cm47CisgICAgICAgIAorICAgIC8vIENyZWF0ZSB0aGUgUGxhdGZvcm1DQUxheWVyIHRvIHdy
YXAgdGhlIGluY29taW5nIGxheWVyCisgICAgbV9jb250ZW50c0xheWVyID0gbWVkaWFMYXllciA/
IFBsYXRmb3JtQ0FMYXllcjo6Y3JlYXRlKG1lZGlhTGF5ZXIsIHRoaXMpIDogMDsKKworICAgIG1f
Y29udGVudHNMYXllclB1cnBvc2UgPSBtZWRpYUxheWVyID8gQ29udGVudHNMYXllckZvck1lZGlh
IDogTm9Db250ZW50c0xheWVyOworCisgICAgbm90ZVN1YmxheWVyc0NoYW5nZWQoKTsKKyAgICBu
b3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoQ29udGVudHNNZWRpYUxheWVyQ2hhbmdlZCk7Cit9CisK
K3ZvaWQgR3JhcGhpY3NMYXllckNBOjpkaWREaXNwbGF5KFBsYXRmb3JtTGF5ZXIqIGxheWVyKQor
eworICAgIFBsYXRmb3JtQ0FMYXllciogY3VycmVudExheWVyID0gUGxhdGZvcm1DQUxheWVyOjpw
bGF0Zm9ybUNBTGF5ZXIobGF5ZXIpOworICAgIFBsYXRmb3JtQ0FMYXllciogc291cmNlTGF5ZXI7
CisgICAgTGF5ZXJNYXAqIGxheWVyQ2xvbmVNYXA7CisKKyAgICBpZiAoY3VycmVudExheWVyID09
IG1fbGF5ZXIpIHsKKyAgICAgICAgc291cmNlTGF5ZXIgPSBtX2xheWVyLmdldCgpOworICAgICAg
ICBsYXllckNsb25lTWFwID0gbV9sYXllckNsb25lcy5nZXQoKTsKKyAgICB9IGVsc2UgaWYgKGN1
cnJlbnRMYXllciA9PSBtX2NvbnRlbnRzTGF5ZXIpIHsKKyAgICAgICAgc291cmNlTGF5ZXIgPSBt
X2NvbnRlbnRzTGF5ZXIuZ2V0KCk7CisgICAgICAgIGxheWVyQ2xvbmVNYXAgPSBtX2NvbnRlbnRz
TGF5ZXJDbG9uZXMuZ2V0KCk7CisgICAgfSBlbHNlCisgICAgICAgIHJldHVybjsKKworICAgIGlm
IChsYXllckNsb25lTWFwKSB7CisgICAgICAgIExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQg
PSBsYXllckNsb25lTWFwLT5lbmQoKTsKKyAgICAgICAgZm9yIChMYXllck1hcDo6Y29uc3RfaXRl
cmF0b3IgaXQgPSBsYXllckNsb25lTWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAg
ICAgICAgICAgIFBsYXRmb3JtQ0FMYXllciogY3VyckNsb25lID0gaXQtPnNlY29uZC5nZXQoKTsK
KyAgICAgICAgICAgIGlmICghY3VyckNsb25lKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor
CisgICAgICAgICAgICBpZiAoY3VyckNsb25lLT5jb250ZW50cygpICE9IHNvdXJjZUxheWVyLT5j
b250ZW50cygpKQorICAgICAgICAgICAgICAgIGN1cnJDbG9uZS0+c2V0Q29udGVudHMoc291cmNl
TGF5ZXItPmNvbnRlbnRzKCkpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGN1
cnJDbG9uZS0+c2V0Q29udGVudHNDaGFuZ2VkKCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3Zv
aWQgR3JhcGhpY3NMYXllckNBOjpzeW5jQ29tcG9zaXRpbmdTdGF0ZSgpCit7CisgICAgcmVjdXJz
aXZlQ29tbWl0Q2hhbmdlcygpOworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c3luY0NvbXBv
c2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KCkKK3sKKyAgICBjb21taXRMYXllckNoYW5nZXNC
ZWZvcmVTdWJsYXllcnMoKTsKKyAgICBjb21taXRMYXllckNoYW5nZXNBZnRlclN1YmxheWVycygp
OworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6cmVjdXJzaXZlQ29tbWl0Q2hhbmdlcygpCit7
CisgICAgY29tbWl0TGF5ZXJDaGFuZ2VzQmVmb3JlU3VibGF5ZXJzKCk7CisKKyAgICBpZiAobV9t
YXNrTGF5ZXIpCisgICAgICAgIHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXJDQSo+KG1fbWFza0xh
eWVyKS0+Y29tbWl0TGF5ZXJDaGFuZ2VzQmVmb3JlU3VibGF5ZXJzKCk7CisKKyAgICBjb25zdCBW
ZWN0b3I8R3JhcGhpY3NMYXllcio+JiBjaGlsZExheWVycyA9IGNoaWxkcmVuKCk7CisgICAgc2l6
ZV90IG51bUNoaWxkcmVuID0gY2hpbGRMYXllcnMuc2l6ZSgpOworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbnVtQ2hpbGRyZW47ICsraSkgeworICAgICAgICBHcmFwaGljc0xheWVyQ0EqIGN1
ckNoaWxkID0gc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllckNBKj4oY2hpbGRMYXllcnNbaV0pOwor
ICAgICAgICBjdXJDaGlsZC0+cmVjdXJzaXZlQ29tbWl0Q2hhbmdlcygpOworICAgIH0KKworICAg
IGlmIChtX3JlcGxpY2FMYXllcikKKyAgICAgICAgc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllckNB
Kj4obV9yZXBsaWNhTGF5ZXIpLT5yZWN1cnNpdmVDb21taXRDaGFuZ2VzKCk7CisKKyAgICBpZiAo
bV9tYXNrTGF5ZXIpCisgICAgICAgIHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXJDQSo+KG1fbWFz
a0xheWVyKS0+Y29tbWl0TGF5ZXJDaGFuZ2VzQWZ0ZXJTdWJsYXllcnMoKTsKKworICAgIGNvbW1p
dExheWVyQ2hhbmdlc0FmdGVyU3VibGF5ZXJzKCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNB
Ojpjb21taXRMYXllckNoYW5nZXNCZWZvcmVTdWJsYXllcnMoKQoreworICAgIGlmICghbV91bmNv
bW1pdHRlZENoYW5nZXMpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIE5lZWQgdG8gaGFuZGxl
IFByZXNlcnZlczNEQ2hhbmdlZCBmaXJzdCwgYmVjYXVzZSBpdCBhZmZlY3RzIHdoaWNoIGxheWVy
cyBzdWJzZXF1ZW50IHByb3BlcnRpZXMgYXJlIGFwcGxpZWQgdG8KKyAgICBpZiAobV91bmNvbW1p
dHRlZENoYW5nZXMgJiAoUHJlc2VydmVzM0RDaGFuZ2VkIHwgUmVwbGljYXRlZExheWVyQ2hhbmdl
ZCkpCisgICAgICAgIHVwZGF0ZVN0cnVjdHVyYWxMYXllcigpOworCisgICAgaWYgKG1fdW5jb21t
aXR0ZWRDaGFuZ2VzICYgTmFtZUNoYW5nZWQpCisgICAgICAgIHVwZGF0ZUxheWVyTmFtZXMoKTsK
KworICAgIGlmIChtX3VuY29tbWl0dGVkQ2hhbmdlcyAmIENvbnRlbnRzSW1hZ2VDaGFuZ2VkKSAv
LyBOZWVkcyB0byBoYXBwZW4gYmVmb3JlIENoaWxkcmVuQ2hhbmdlZAorICAgICAgICB1cGRhdGVD
b250ZW50c0ltYWdlKCk7CisgICAgICAgIAorICAgIGlmIChtX3VuY29tbWl0dGVkQ2hhbmdlcyAm
IENvbnRlbnRzTWVkaWFMYXllckNoYW5nZWQpIC8vIE5lZWRzIHRvIGhhcHBlbiBiZWZvcmUgQ2hp
bGRyZW5DaGFuZ2VkCisgICAgICAgIHVwZGF0ZUNvbnRlbnRzTWVkaWFMYXllcigpOworICAgIAor
ICAgIGlmIChtX3VuY29tbWl0dGVkQ2hhbmdlcyAmIENvbnRlbnRzQ2FudmFzTGF5ZXJDaGFuZ2Vk
KSAvLyBOZWVkcyB0byBoYXBwZW4gYmVmb3JlIENoaWxkcmVuQ2hhbmdlZAorICAgICAgICB1cGRh
dGVDb250ZW50c0NhbnZhc0xheWVyKCk7CisgICAgCisgICAgaWYgKG1fdW5jb21taXR0ZWRDaGFu
Z2VzICYgQmFja2dyb3VuZENvbG9yQ2hhbmdlZCkgLy8gTmVlZHMgdG8gaGFwcGVuIGJlZm9yZSBD
aGlsZHJlbkNoYW5nZWQsIGFuZCBhZnRlciB1cGRhdGluZyBpbWFnZSBvciB2aWRlbworICAgICAg
ICB1cGRhdGVMYXllckJhY2tncm91bmRDb2xvcigpOworCisgICAgaWYgKG1fdW5jb21taXR0ZWRD
aGFuZ2VzICYgQ2hpbGRyZW5DaGFuZ2VkKQorICAgICAgICB1cGRhdGVTdWJsYXllckxpc3QoKTsK
KworICAgIGlmIChtX3VuY29tbWl0dGVkQ2hhbmdlcyAmIFBvc2l0aW9uQ2hhbmdlZCkKKyAgICAg
ICAgdXBkYXRlTGF5ZXJQb3NpdGlvbigpOworICAgIAorICAgIGlmIChtX3VuY29tbWl0dGVkQ2hh
bmdlcyAmIEFuY2hvclBvaW50Q2hhbmdlZCkKKyAgICAgICAgdXBkYXRlQW5jaG9yUG9pbnQoKTsK
KyAgICAKKyAgICBpZiAobV91bmNvbW1pdHRlZENoYW5nZXMgJiBTaXplQ2hhbmdlZCkKKyAgICAg
ICAgdXBkYXRlTGF5ZXJTaXplKCk7CisKKyAgICBpZiAobV91bmNvbW1pdHRlZENoYW5nZXMgJiBU
cmFuc2Zvcm1DaGFuZ2VkKQorICAgICAgICB1cGRhdGVUcmFuc2Zvcm0oKTsKKworICAgIGlmICht
X3VuY29tbWl0dGVkQ2hhbmdlcyAmIENoaWxkcmVuVHJhbnNmb3JtQ2hhbmdlZCkKKyAgICAgICAg
dXBkYXRlQ2hpbGRyZW5UcmFuc2Zvcm0oKTsKKyAgICAKKyAgICBpZiAobV91bmNvbW1pdHRlZENo
YW5nZXMgJiBNYXNrc1RvQm91bmRzQ2hhbmdlZCkKKyAgICAgICAgdXBkYXRlTWFza3NUb0JvdW5k
cygpOworICAgIAorICAgIGlmIChtX3VuY29tbWl0dGVkQ2hhbmdlcyAmIERyYXdzQ29udGVudENo
YW5nZWQpCisgICAgICAgIHVwZGF0ZUxheWVyRHJhd3NDb250ZW50KCk7CisKKyAgICBpZiAobV91
bmNvbW1pdHRlZENoYW5nZXMgJiBDb250ZW50c09wYXF1ZUNoYW5nZWQpCisgICAgICAgIHVwZGF0
ZUNvbnRlbnRzT3BhcXVlKCk7CisKKyAgICBpZiAobV91bmNvbW1pdHRlZENoYW5nZXMgJiBCYWNr
ZmFjZVZpc2liaWxpdHlDaGFuZ2VkKQorICAgICAgICB1cGRhdGVCYWNrZmFjZVZpc2liaWxpdHko
KTsKKworICAgIGlmIChtX3VuY29tbWl0dGVkQ2hhbmdlcyAmIE9wYWNpdHlDaGFuZ2VkKQorICAg
ICAgICB1cGRhdGVPcGFjaXR5T25MYXllcigpOworICAgIAorICAgIGlmIChtX3VuY29tbWl0dGVk
Q2hhbmdlcyAmIEFuaW1hdGlvbkNoYW5nZWQpCisgICAgICAgIHVwZGF0ZUxheWVyQW5pbWF0aW9u
cygpOworICAgIAorICAgIGlmIChtX3VuY29tbWl0dGVkQ2hhbmdlcyAmIERpcnR5UmVjdHNDaGFu
Z2VkKQorICAgICAgICByZXBhaW50TGF5ZXJEaXJ0eVJlY3RzKCk7CisgICAgCisgICAgaWYgKG1f
dW5jb21taXR0ZWRDaGFuZ2VzICYgQ29udGVudHNSZWN0Q2hhbmdlZCkKKyAgICAgICAgdXBkYXRl
Q29udGVudHNSZWN0KCk7CisKKyAgICBpZiAobV91bmNvbW1pdHRlZENoYW5nZXMgJiBNYXNrTGF5
ZXJDaGFuZ2VkKQorICAgICAgICB1cGRhdGVNYXNrTGF5ZXIoKTsKKworICAgIGlmIChtX3VuY29t
bWl0dGVkQ2hhbmdlcyAmIENvbnRlbnRzTmVlZHNEaXNwbGF5KQorICAgICAgICB1cGRhdGVDb250
ZW50c05lZWRzRGlzcGxheSgpOworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6Y29tbWl0TGF5
ZXJDaGFuZ2VzQWZ0ZXJTdWJsYXllcnMoKQoreworICAgIGlmICghbV91bmNvbW1pdHRlZENoYW5n
ZXMpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX3VuY29tbWl0dGVkQ2hhbmdlcyAmIFJl
cGxpY2F0ZWRMYXllckNoYW5nZWQpCisgICAgICAgIHVwZGF0ZVJlcGxpY2F0ZWRMYXllcnMoKTsK
KworICAgIG1fdW5jb21taXR0ZWRDaGFuZ2VzID0gTm9DaGFuZ2U7Cit9CisKK3ZvaWQgR3JhcGhp
Y3NMYXllckNBOjp1cGRhdGVMYXllck5hbWVzKCkKK3sKKyAgICBzd2l0Y2ggKHN0cnVjdHVyYWxM
YXllclB1cnBvc2UoKSkgeworICAgIGNhc2UgU3RydWN0dXJhbExheWVyRm9yUHJlc2VydmVzM0Q6
CisgICAgICAgIG1fc3RydWN0dXJhbExheWVyLT5zZXROYW1lKCJUcmFuc2Zvcm0gbGF5ZXIgIiAr
IG5hbWUoKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3RydWN0dXJhbExheWVyRm9yUmVw
bGljYUZsYXR0ZW5pbmc6CisgICAgICAgIG1fc3RydWN0dXJhbExheWVyLT5zZXROYW1lKCJSZXBs
aWNhIGZsYXR0ZW5pbmcgbGF5ZXIgIiArIG5hbWUoKSk7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgTm9TdHJ1Y3R1cmFsTGF5ZXI6CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBtX2xheWVy
LT5zZXROYW1lKG5hbWUoKSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjp1cGRhdGVTdWJs
YXllckxpc3QoKQoreworICAgIFBsYXRmb3JtQ0FMYXllckxpc3QgbmV3U3VibGF5ZXJzOworICAg
IGNvbnN0IFZlY3RvcjxHcmFwaGljc0xheWVyKj4mIGNoaWxkTGF5ZXJzID0gY2hpbGRyZW4oKTsK
KworICAgIGlmIChtX3N0cnVjdHVyYWxMYXllciB8fCBtX2NvbnRlbnRzTGF5ZXIgfHwgY2hpbGRM
YXllcnMuc2l6ZSgpID4gMCkgeworICAgICAgICBpZiAobV9zdHJ1Y3R1cmFsTGF5ZXIpIHsKKyAg
ICAgICAgICAgIC8vIEFkZCB0aGUgcmVwbGljYSBsYXllciBmaXJzdC4KKyAgICAgICAgICAgIGlm
IChtX3JlcGxpY2FMYXllcikKKyAgICAgICAgICAgICAgICBuZXdTdWJsYXllcnMuYXBwZW5kKHN0
YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXJDQSo+KG1fcmVwbGljYUxheWVyKS0+cHJpbWFyeUxheWVy
KCkpOworICAgICAgICAgICAgLy8gQWRkIHRoZSBwcmltYXJ5IGxheWVyLiBFdmVuIGlmIHdlIGhh
dmUgbmVnYXRpdmUgei1vcmRlciBjaGlsZHJlbiwgdGhlIHByaW1hcnkgbGF5ZXIgYWx3YXlzIGNv
bWVzIGJlaGluZC4KKyAgICAgICAgICAgIG5ld1N1YmxheWVycy5hcHBlbmQobV9sYXllcik7Cisg
ICAgICAgIH0gZWxzZSBpZiAobV9jb250ZW50c0xheWVyKSB7CisgICAgICAgICAgICAvLyBGSVhN
RTogYWRkIHRoZSBjb250ZW50cyBsYXllciBpbiB0aGUgY29ycmVjdCBvcmRlciB3aXRoIG5lZ2F0
aXZlIHotb3JkZXIgY2hpbGRyZW4uCisgICAgICAgICAgICAvLyBUaGlzIGRvZXMgbm90IGNhdXNl
IHZpc2libGUgcmVuZGVyaW5nIGlzc3VlcyBiZWNhdXNlIGN1cnJlbnRseSBjb250ZW50cyBsYXll
cnMgYXJlIG9ubHkgdXNlZAorICAgICAgICAgICAgLy8gZm9yIHJlcGxhY2VkIGVsZW1lbnRzIHRo
YXQgZG9uJ3QgaGF2ZSBjaGlsZHJlbi4KKyAgICAgICAgICAgIG5ld1N1YmxheWVycy5hcHBlbmQo
bV9jb250ZW50c0xheWVyKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgc2l6ZV90IG51
bUNoaWxkcmVuID0gY2hpbGRMYXllcnMuc2l6ZSgpOworICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG51bUNoaWxkcmVuOyArK2kpIHsKKyAgICAgICAgICAgIEdyYXBoaWNzTGF5ZXJDQSog
Y3VyQ2hpbGQgPSBzdGF0aWNfY2FzdDxHcmFwaGljc0xheWVyQ0EqPihjaGlsZExheWVyc1tpXSk7
CisgICAgICAgICAgICBQbGF0Zm9ybUNBTGF5ZXIqIGNoaWxkTGF5ZXIgPSBjdXJDaGlsZC0+bGF5
ZXJGb3JTdXBlcmxheWVyKCk7CisgICAgICAgICAgICBuZXdTdWJsYXllcnMuYXBwZW5kKGNoaWxk
TGF5ZXIpOworICAgICAgICB9CisKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBuZXdT
dWJsYXllcnMuc2l6ZSgpOyArK2kpCisgICAgICAgICAgICBuZXdTdWJsYXllcnNbaV0tPnJlbW92
ZUZyb21TdXBlcmxheWVyKCk7CisgICAgfQorCisgICAgaWYgKG1fc3RydWN0dXJhbExheWVyKSB7
CisgICAgICAgIG1fc3RydWN0dXJhbExheWVyLT5zZXRTdWJsYXllcnMobmV3U3VibGF5ZXJzKTsK
KworICAgICAgICBpZiAobV9jb250ZW50c0xheWVyKSB7CisgICAgICAgICAgICAvLyBJZiB3ZSBo
YXZlIGEgdHJhbnNmb3JtIGxheWVyLCB0aGVuIHRoZSBjb250ZW50cyBsYXllciBpcyBwYXJlbnRl
ZCBpbiB0aGUgCisgICAgICAgICAgICAvLyBwcmltYXJ5IGxheWVyICh3aGljaCBpcyBpdHNlbGYg
YSBjaGlsZCBvZiB0aGUgdHJhbnNmb3JtIGxheWVyKS4KKyAgICAgICAgICAgIG1fbGF5ZXItPnJl
bW92ZUFsbFN1YmxheWVycygpOworICAgICAgICAgICAgbV9sYXllci0+YXBwZW5kU3VibGF5ZXIo
bV9jb250ZW50c0xheWVyLmdldCgpKTsKKyAgICAgICAgfQorICAgIH0gZWxzZQorICAgICAgICBt
X2xheWVyLT5zZXRTdWJsYXllcnMobmV3U3VibGF5ZXJzKTsKK30KKwordm9pZCBHcmFwaGljc0xh
eWVyQ0E6OnVwZGF0ZUxheWVyUG9zaXRpb24oKQoreworICAgIEZsb2F0U2l6ZSB1c2VkU2l6ZSA9
IG1fdXNpbmdUaWxlZExheWVyID8gY29uc3RyYWluZWRTaXplKCkgOiBtX3NpemU7CisKKyAgICAv
LyBQb3NpdGlvbiBpcyBvZmZzZXQgb24gdGhlIGxheWVyIGJ5IHRoZSBsYXllciBhbmNob3IgcG9p
bnQuCisgICAgRmxvYXRQb2ludCBwb3NQb2ludChtX3Bvc2l0aW9uLngoKSArIG1fYW5jaG9yUG9p
bnQueCgpICogdXNlZFNpemUud2lkdGgoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbV9w
b3NpdGlvbi55KCkgKyBtX2FuY2hvclBvaW50LnkoKSAqIHVzZWRTaXplLmhlaWdodCgpKTsKKyAg
ICAKKyAgICBwcmltYXJ5TGF5ZXIoKS0+c2V0UG9zaXRpb24ocG9zUG9pbnQpOworCisgICAgaWYg
KExheWVyTWFwKiBsYXllckNsb25lTWFwID0gcHJpbWFyeUxheWVyQ2xvbmVzKCkpIHsKKyAgICAg
ICAgTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGxheWVyQ2xvbmVNYXAtPmVuZCgpOwor
ICAgICAgICBmb3IgKExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGxheWVyQ2xvbmVNYXAt
PmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICAgICAgRmxvYXRQb2ludCBjbG9u
ZVBvc2l0aW9uID0gcG9zUG9pbnQ7CisgICAgICAgICAgICBpZiAobV9yZXBsaWNhTGF5ZXIgJiYg
aXNSZXBsaWNhdGVkUm9vdENsb25lKGl0LT5maXJzdCkpIHsKKyAgICAgICAgICAgICAgICAvLyBN
YWludGFpbiB0aGUgc3BlY2lhbC1jYXNlIHBvc2l0aW9uIGZvciB0aGUgcm9vdCBvZiBhIGNsb25l
IHN1YnRyZWUsCisgICAgICAgICAgICAgICAgLy8gd2hpY2ggd2Ugc2V0IHVwIGluIHJlcGxpY2F0
ZWRMYXllclJvb3QoKS4KKyAgICAgICAgICAgICAgICBjbG9uZVBvc2l0aW9uID0gcG9zaXRpb25G
b3JDbG9uZVJvb3RMYXllcigpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaXQtPnNlY29u
ZC0+c2V0UG9zaXRpb24oY2xvbmVQb3NpdGlvbik7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3Zv
aWQgR3JhcGhpY3NMYXllckNBOjp1cGRhdGVMYXllclNpemUoKQoreworICAgIEZsb2F0UmVjdCBy
ZWN0KDAsIDAsIG1fc2l6ZS53aWR0aCgpLCBtX3NpemUuaGVpZ2h0KCkpOworICAgIGlmIChtX3N0
cnVjdHVyYWxMYXllcikgeworICAgICAgICBtX3N0cnVjdHVyYWxMYXllci0+c2V0Qm91bmRzKHJl
Y3QpOworICAgICAgICAKKyAgICAgICAgaWYgKExheWVyTWFwKiBsYXllckNsb25lTWFwID0gbV9z
dHJ1Y3R1cmFsTGF5ZXJDbG9uZXMuZ2V0KCkpIHsKKyAgICAgICAgICAgIExheWVyTWFwOjpjb25z
dF9pdGVyYXRvciBlbmQgPSBsYXllckNsb25lTWFwLT5lbmQoKTsKKyAgICAgICAgICAgIGZvciAo
TGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbGF5ZXJDbG9uZU1hcC0+YmVnaW4oKTsgaXQg
IT0gZW5kOyArK2l0KQorICAgICAgICAgICAgICAgIGl0LT5zZWNvbmQtPnNldEJvdW5kcyhyZWN0
KTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFRoZSBhbmNob3Igb2YgdGhlIGNvbnRlbnRzIGxh
eWVyIGlzIGFsd2F5cyBhdCAwLjUsIDAuNSwgc28gdGhlIHBvc2l0aW9uIGlzIGNlbnRlci1yZWxh
dGl2ZS4KKyAgICAgICAgQ0dQb2ludCBjZW50ZXJQb2ludCA9IENHUG9pbnRNYWtlKG1fc2l6ZS53
aWR0aCgpIC8gMi4wZiwgbV9zaXplLmhlaWdodCgpIC8gMi4wZik7CisgICAgICAgIG1fbGF5ZXIt
PnNldFBvc2l0aW9uKGNlbnRlclBvaW50KTsKKworICAgICAgICBpZiAoTGF5ZXJNYXAqIGxheWVy
Q2xvbmVNYXAgPSBtX2xheWVyQ2xvbmVzLmdldCgpKSB7CisgICAgICAgICAgICBMYXllck1hcDo6
Y29uc3RfaXRlcmF0b3IgZW5kID0gbGF5ZXJDbG9uZU1hcC0+ZW5kKCk7CisgICAgICAgICAgICBm
b3IgKExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGxheWVyQ2xvbmVNYXAtPmJlZ2luKCk7
IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgICAgICAgICBpdC0+c2Vjb25kLT5zZXRQb3NpdGlv
bihjZW50ZXJQb2ludCk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgYm9vbCBuZWVkVGls
ZWRMYXllciA9IHJlcXVpcmVzVGlsZWRMYXllcihtX3NpemUpOworICAgIGlmIChuZWVkVGlsZWRM
YXllciAhPSBtX3VzaW5nVGlsZWRMYXllcikKKyAgICAgICAgc3dhcEZyb21PclRvVGlsZWRMYXll
cihuZWVkVGlsZWRMYXllcik7CisgICAgCisgICAgaWYgKG1fdXNpbmdUaWxlZExheWVyKSB7Cisg
ICAgICAgIEZsb2F0U2l6ZSBzaXplVG9Vc2UgPSBjb25zdHJhaW5lZFNpemUoKTsKKyAgICAgICAg
cmVjdCA9IENHUmVjdE1ha2UoMCwgMCwgc2l6ZVRvVXNlLndpZHRoKCksIHNpemVUb1VzZS5oZWln
aHQoKSk7CisgICAgfQorICAgIAorICAgIG1fbGF5ZXItPnNldEJvdW5kcyhyZWN0KTsKKyAgICBp
ZiAoTGF5ZXJNYXAqIGxheWVyQ2xvbmVNYXAgPSBtX2xheWVyQ2xvbmVzLmdldCgpKSB7CisgICAg
ICAgIExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBsYXllckNsb25lTWFwLT5lbmQoKTsK
KyAgICAgICAgZm9yIChMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBsYXllckNsb25lTWFw
LT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgICAgICBpdC0+c2Vjb25kLT5zZXRC
b3VuZHMocmVjdCk7CisgICAgfQorICAgIAorICAgIC8vIENvbnRlbnRzIHRyYW5zZm9ybSBtYXkg
ZGVwZW5kIG9uIGhlaWdodC4KKyAgICB1cGRhdGVDb250ZW50c1RyYW5zZm9ybSgpOworCisgICAg
Ly8gTm90ZSB0aGF0IHdlIGRvbid0IHJlc2l6ZSBtX2NvbnRlbnRzTGF5ZXIuIEl0J3MgdXAgdGhl
IGNhbGxlciB0byBkbyB0aGF0LgorCisgICAgLy8gaWYgd2UndmUgY2hhbmdlZCB0aGUgYm91bmRz
LCB3ZSBuZWVkIHRvIHJlY2FsY3VsYXRlIHRoZSBwb3NpdGlvbgorICAgIC8vIG9mIHRoZSBsYXll
ciwgdGFraW5nIGFuY2hvciBwb2ludCBpbnRvIGFjY291bnQuCisgICAgdXBkYXRlTGF5ZXJQb3Np
dGlvbigpOworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlQW5jaG9yUG9pbnQoKQor
eworICAgIHByaW1hcnlMYXllcigpLT5zZXRBbmNob3JQb2ludChtX2FuY2hvclBvaW50KTsKKwor
ICAgIGlmIChMYXllck1hcCogbGF5ZXJDbG9uZU1hcCA9IHByaW1hcnlMYXllckNsb25lcygpKSB7
CisgICAgICAgIExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBsYXllckNsb25lTWFwLT5l
bmQoKTsKKyAgICAgICAgZm9yIChMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBsYXllckNs
b25lTWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsgICAKKyAgICAgICAgICAgIFBsYXRm
b3JtQ0FMYXllciogY3VyckxheWVyID0gaXQtPnNlY29uZC5nZXQoKTsKKyAgICAgICAgICAgIGN1
cnJMYXllci0+c2V0QW5jaG9yUG9pbnQobV9hbmNob3JQb2ludCk7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICB1cGRhdGVMYXllclBvc2l0aW9uKCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNB
Ojp1cGRhdGVUcmFuc2Zvcm0oKQoreworICAgIHByaW1hcnlMYXllcigpLT5zZXRUcmFuc2Zvcm0o
bV90cmFuc2Zvcm0pOworCisgICAgaWYgKExheWVyTWFwKiBsYXllckNsb25lTWFwID0gcHJpbWFy
eUxheWVyQ2xvbmVzKCkpIHsKKyAgICAgICAgTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9
IGxheWVyQ2xvbmVNYXAtPmVuZCgpOworICAgICAgICBmb3IgKExheWVyTWFwOjpjb25zdF9pdGVy
YXRvciBpdCA9IGxheWVyQ2xvbmVNYXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAg
ICAgICAgICAgUGxhdGZvcm1DQUxheWVyKiBjdXJyTGF5ZXIgPSBpdC0+c2Vjb25kLmdldCgpOwor
ICAgICAgICAgICAgaWYgKG1fcmVwbGljYUxheWVyICYmIGlzUmVwbGljYXRlZFJvb3RDbG9uZShp
dC0+Zmlyc3QpKSB7CisgICAgICAgICAgICAgICAgLy8gTWFpbnRhaW4gdGhlIHNwZWNpYWwtY2Fz
ZSB0cmFuc2Zvcm0gZm9yIHRoZSByb290IG9mIGEgY2xvbmUgc3VidHJlZSwKKyAgICAgICAgICAg
ICAgICAvLyB3aGljaCB3ZSBzZXQgdXAgaW4gcmVwbGljYXRlZExheWVyUm9vdCgpLgorICAgICAg
ICAgICAgICAgIGN1cnJMYXllci0+c2V0VHJhbnNmb3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4KCkp
OworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgY3VyckxheWVyLT5zZXRUcmFu
c2Zvcm0obV90cmFuc2Zvcm0pOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIEdyYXBoaWNz
TGF5ZXJDQTo6dXBkYXRlQ2hpbGRyZW5UcmFuc2Zvcm0oKQoreworICAgIHByaW1hcnlMYXllcigp
LT5zZXRTdWJsYXllclRyYW5zZm9ybShtX2NoaWxkcmVuVHJhbnNmb3JtKTsKKworICAgIGlmIChM
YXllck1hcCogbGF5ZXJDbG9uZU1hcCA9IHByaW1hcnlMYXllckNsb25lcygpKSB7CisgICAgICAg
IExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBsYXllckNsb25lTWFwLT5lbmQoKTsKKyAg
ICAgICAgZm9yIChMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBsYXllckNsb25lTWFwLT5i
ZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgICAgICBpdC0+c2Vjb25kLT5zZXRTdWJs
YXllclRyYW5zZm9ybShtX2NoaWxkcmVuVHJhbnNmb3JtKTsKKyAgICB9Cit9CisKK3ZvaWQgR3Jh
cGhpY3NMYXllckNBOjp1cGRhdGVNYXNrc1RvQm91bmRzKCkKK3sKKyAgICBtX2xheWVyLT5zZXRN
YXNrc1RvQm91bmRzKG1fbWFza3NUb0JvdW5kcyk7CisKKyAgICBpZiAoTGF5ZXJNYXAqIGxheWVy
Q2xvbmVNYXAgPSBtX2xheWVyQ2xvbmVzLmdldCgpKSB7CisgICAgICAgIExheWVyTWFwOjpjb25z
dF9pdGVyYXRvciBlbmQgPSBsYXllckNsb25lTWFwLT5lbmQoKTsKKyAgICAgICAgZm9yIChMYXll
ck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBsYXllckNsb25lTWFwLT5iZWdpbigpOyBpdCAhPSBl
bmQ7ICsraXQpCisgICAgICAgICAgICBpdC0+c2Vjb25kLT5zZXRNYXNrc1RvQm91bmRzKG1fbWFz
a3NUb0JvdW5kcyk7CisgICAgfQorCisgICAgdXBkYXRlRGVidWdJbmRpY2F0b3JzKCk7Cit9CisK
K3ZvaWQgR3JhcGhpY3NMYXllckNBOjp1cGRhdGVDb250ZW50c09wYXF1ZSgpCit7CisgICAgbV9s
YXllci5nZXQoKS0+c2V0T3BhcXVlKG1fY29udGVudHNPcGFxdWUpOworCisgICAgaWYgKExheWVy
TWFwKiBsYXllckNsb25lTWFwID0gbV9sYXllckNsb25lcy5nZXQoKSkgeworICAgICAgICBMYXll
ck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbGF5ZXJDbG9uZU1hcC0+ZW5kKCk7CisgICAgICAg
IGZvciAoTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbGF5ZXJDbG9uZU1hcC0+YmVnaW4o
KTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICAgICAgaXQtPnNlY29uZC0+c2V0T3BhcXVlKG1f
Y29udGVudHNPcGFxdWUpOworICAgIH0KK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0
ZUJhY2tmYWNlVmlzaWJpbGl0eSgpCit7CisgICAgaWYgKG1fc3RydWN0dXJhbExheWVyICYmIHN0
cnVjdHVyYWxMYXllclB1cnBvc2UoKSA9PSBTdHJ1Y3R1cmFsTGF5ZXJGb3JSZXBsaWNhRmxhdHRl
bmluZykgeworICAgICAgICBtX3N0cnVjdHVyYWxMYXllci0+c2V0RG91YmxlU2lkZWQobV9iYWNr
ZmFjZVZpc2liaWxpdHkpOworCisgICAgICAgIGlmIChMYXllck1hcCogbGF5ZXJDbG9uZU1hcCA9
IG1fc3RydWN0dXJhbExheWVyQ2xvbmVzLmdldCgpKSB7CisgICAgICAgICAgICBMYXllck1hcDo6
Y29uc3RfaXRlcmF0b3IgZW5kID0gbGF5ZXJDbG9uZU1hcC0+ZW5kKCk7CisgICAgICAgICAgICBm
b3IgKExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGxheWVyQ2xvbmVNYXAtPmJlZ2luKCk7
IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgICAgICAgICBpdC0+c2Vjb25kLT5zZXREb3VibGVT
aWRlZChtX2JhY2tmYWNlVmlzaWJpbGl0eSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtX2xh
eWVyLT5zZXREb3VibGVTaWRlZChtX2JhY2tmYWNlVmlzaWJpbGl0eSk7CisKKyAgICBpZiAoTGF5
ZXJNYXAqIGxheWVyQ2xvbmVNYXAgPSBtX2xheWVyQ2xvbmVzLmdldCgpKSB7CisgICAgICAgIExh
eWVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBsYXllckNsb25lTWFwLT5lbmQoKTsKKyAgICAg
ICAgZm9yIChMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBsYXllckNsb25lTWFwLT5iZWdp
bigpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgICAgICBpdC0+c2Vjb25kLT5zZXREb3VibGVT
aWRlZChtX2JhY2tmYWNlVmlzaWJpbGl0eSk7CisgICAgfQorfQorCit2b2lkIEdyYXBoaWNzTGF5
ZXJDQTo6dXBkYXRlU3RydWN0dXJhbExheWVyKCkKK3sKKyAgICBlbnN1cmVTdHJ1Y3R1cmFsTGF5
ZXIoc3RydWN0dXJhbExheWVyUHVycG9zZSgpKTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6
OmVuc3VyZVN0cnVjdHVyYWxMYXllcihTdHJ1Y3R1cmFsTGF5ZXJQdXJwb3NlIHB1cnBvc2UpCit7
CisgICAgaWYgKHB1cnBvc2UgPT0gTm9TdHJ1Y3R1cmFsTGF5ZXIpIHsKKyAgICAgICAgaWYgKG1f
c3RydWN0dXJhbExheWVyKSB7CisgICAgICAgICAgICAvLyBSZXBsYWNlIHRoZSB0cmFuc2Zvcm1M
YXllciBpbiB0aGUgcGFyZW50IHdpdGggdGhpcyBsYXllci4KKyAgICAgICAgICAgIG1fbGF5ZXIt
PnJlbW92ZUZyb21TdXBlcmxheWVyKCk7CisgICAgICAgICAgICBtX3N0cnVjdHVyYWxMYXllci0+
c3VwZXJsYXllcigpLT5yZXBsYWNlU3VibGF5ZXIobV9zdHJ1Y3R1cmFsTGF5ZXIuZ2V0KCksIG1f
bGF5ZXIuZ2V0KCkpOworCisgICAgICAgICAgICBtb3ZlT3JDb3B5QW5pbWF0aW9uc0ZvclByb3Bl
cnR5KE1vdmUsIEFuaW1hdGVkUHJvcGVydHlXZWJraXRUcmFuc2Zvcm0sIG1fc3RydWN0dXJhbExh
eWVyLmdldCgpLCBtX2xheWVyLmdldCgpKTsKKyAgICAgICAgICAgIG1vdmVPckNvcHlBbmltYXRp
b25zRm9yUHJvcGVydHkoTW92ZSwgQW5pbWF0ZWRQcm9wZXJ0eU9wYWNpdHksIG1fc3RydWN0dXJh
bExheWVyLmdldCgpLCBtX2xheWVyLmdldCgpKTsKKworICAgICAgICAgICAgLy8gUmVsZWFzZSB0
aGUgc3RydWN0dXJhbCBsYXllci4KKyAgICAgICAgICAgIG1fc3RydWN0dXJhbExheWVyID0gMDsK
KworICAgICAgICAgICAgLy8gVXBkYXRlIHRoZSBwcm9wZXJ0aWVzIG9mIG1fbGF5ZXIgbm93IHRo
YXQgd2Ugbm8gbG9uZ2VyIGhhdmUgYSBzdHJ1Y3R1cmFsIGxheWVyLgorICAgICAgICAgICAgdXBk
YXRlTGF5ZXJQb3NpdGlvbigpOworICAgICAgICAgICAgdXBkYXRlTGF5ZXJTaXplKCk7CisgICAg
ICAgICAgICB1cGRhdGVBbmNob3JQb2ludCgpOworICAgICAgICAgICAgdXBkYXRlVHJhbnNmb3Jt
KCk7CisgICAgICAgICAgICB1cGRhdGVDaGlsZHJlblRyYW5zZm9ybSgpOworCisgICAgICAgICAg
ICB1cGRhdGVTdWJsYXllckxpc3QoKTsKKyAgICAgICAgICAgIHVwZGF0ZU9wYWNpdHlPbkxheWVy
KCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBib29sIHN0
cnVjdHVyYWxMYXllckNoYW5nZWQgPSBmYWxzZTsKKyAgICAKKyAgICBpZiAocHVycG9zZSA9PSBT
dHJ1Y3R1cmFsTGF5ZXJGb3JQcmVzZXJ2ZXMzRCkgeworICAgICAgICBpZiAobV9zdHJ1Y3R1cmFs
TGF5ZXIgJiYgbV9zdHJ1Y3R1cmFsTGF5ZXItPmxheWVyVHlwZSgpICE9IFBsYXRmb3JtQ0FMYXll
cjo6TGF5ZXJUeXBlVHJhbnNmb3JtTGF5ZXIpCisgICAgICAgICAgICBtX3N0cnVjdHVyYWxMYXll
ciA9IDA7CisgICAgICAgIAorICAgICAgICBpZiAoIW1fc3RydWN0dXJhbExheWVyKSB7CisgICAg
ICAgICAgICBtX3N0cnVjdHVyYWxMYXllciA9IFBsYXRmb3JtQ0FMYXllcjo6Y3JlYXRlKFBsYXRm
b3JtQ0FMYXllcjo6TGF5ZXJUeXBlVHJhbnNmb3JtTGF5ZXIsIHRoaXMpOworICAgICAgICAgICAg
c3RydWN0dXJhbExheWVyQ2hhbmdlZCA9IHRydWU7CisgICAgICAgIH0KKyAgICB9IGVsc2Ugewor
ICAgICAgICBpZiAobV9zdHJ1Y3R1cmFsTGF5ZXIgJiYgbV9zdHJ1Y3R1cmFsTGF5ZXItPmxheWVy
VHlwZSgpICE9IFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlTGF5ZXIpCisgICAgICAgICAgICBt
X3N0cnVjdHVyYWxMYXllciA9IDA7CisKKyAgICAgICAgaWYgKCFtX3N0cnVjdHVyYWxMYXllcikg
eworICAgICAgICAgICAgbV9zdHJ1Y3R1cmFsTGF5ZXIgPSBQbGF0Zm9ybUNBTGF5ZXI6OmNyZWF0
ZShQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUxheWVyLCB0aGlzKTsKKyAgICAgICAgICAgIHN0
cnVjdHVyYWxMYXllckNoYW5nZWQgPSB0cnVlOworICAgICAgICB9CisgICAgfQorICAgIAorICAg
IGlmICghc3RydWN0dXJhbExheWVyQ2hhbmdlZCkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAg
IHVwZGF0ZUxheWVyTmFtZXMoKTsKKworICAgIC8vIFVwZGF0ZSB0aGUgcHJvcGVydGllcyBvZiB0
aGUgc3RydWN0dXJhbCBsYXllci4KKyAgICB1cGRhdGVMYXllclBvc2l0aW9uKCk7CisgICAgdXBk
YXRlTGF5ZXJTaXplKCk7CisgICAgdXBkYXRlQW5jaG9yUG9pbnQoKTsKKyAgICB1cGRhdGVUcmFu
c2Zvcm0oKTsKKyAgICB1cGRhdGVDaGlsZHJlblRyYW5zZm9ybSgpOworICAgIHVwZGF0ZUJhY2tm
YWNlVmlzaWJpbGl0eSgpOworICAgIAorICAgIC8vIFNldCBwcm9wZXJ0aWVzIG9mIG1fbGF5ZXIg
dG8gdGhlaXIgZGVmYXVsdCB2YWx1ZXMsIHNpbmNlIHRoZXNlIGFyZSBleHByZXNzZWQgb24gb24g
dGhlIHN0cnVjdHVyYWwgbGF5ZXIuCisgICAgRmxvYXRQb2ludCBwb2ludChtX3NpemUud2lkdGgo
KSAvIDIuMGYsIG1fc2l6ZS5oZWlnaHQoKSAvIDIuMGYpOworICAgIG1fbGF5ZXItPnNldFBvc2l0
aW9uKHBvaW50KTsKKyAgICBtX2xheWVyLT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50M0QoMC41
ZiwgMC41ZiwgMCkpOworICAgIG1fbGF5ZXItPnNldFRyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1h
dHJpeCgpKTsKKyAgICBtX2xheWVyLT5zZXRPcGFjaXR5KDEpOworCisgICAgLy8gTW92ZSB0aGlz
IGxheWVyIHRvIGJlIGEgY2hpbGQgb2YgdGhlIHRyYW5zZm9ybSBsYXllci4KKyAgICBtX2xheWVy
LT5zdXBlcmxheWVyKCktPnJlcGxhY2VTdWJsYXllcihtX2xheWVyLmdldCgpLCBtX3N0cnVjdHVy
YWxMYXllci5nZXQoKSk7CisgICAgbV9zdHJ1Y3R1cmFsTGF5ZXItPmFwcGVuZFN1YmxheWVyKG1f
bGF5ZXIuZ2V0KCkpOworCisgICAgbW92ZU9yQ29weUFuaW1hdGlvbnNGb3JQcm9wZXJ0eShNb3Zl
LCBBbmltYXRlZFByb3BlcnR5V2Via2l0VHJhbnNmb3JtLCBtX2xheWVyLmdldCgpLCBtX3N0cnVj
dHVyYWxMYXllci5nZXQoKSk7CisgICAgbW92ZU9yQ29weUFuaW1hdGlvbnNGb3JQcm9wZXJ0eShN
b3ZlLCBBbmltYXRlZFByb3BlcnR5T3BhY2l0eSwgbV9sYXllci5nZXQoKSwgbV9zdHJ1Y3R1cmFs
TGF5ZXIuZ2V0KCkpOworICAgIAorICAgIHVwZGF0ZVN1YmxheWVyTGlzdCgpOworICAgIHVwZGF0
ZU9wYWNpdHlPbkxheWVyKCk7Cit9CisKK0dyYXBoaWNzTGF5ZXJDQTo6U3RydWN0dXJhbExheWVy
UHVycG9zZSBHcmFwaGljc0xheWVyQ0E6OnN0cnVjdHVyYWxMYXllclB1cnBvc2UoKSBjb25zdAor
eworICAgIGlmIChwcmVzZXJ2ZXMzRCgpKQorICAgICAgICByZXR1cm4gU3RydWN0dXJhbExheWVy
Rm9yUHJlc2VydmVzM0Q7CisgICAgCisgICAgaWYgKGlzUmVwbGljYXRlZCgpKQorICAgICAgICBy
ZXR1cm4gU3RydWN0dXJhbExheWVyRm9yUmVwbGljYUZsYXR0ZW5pbmc7CisgICAgCisgICAgcmV0
dXJuIE5vU3RydWN0dXJhbExheWVyOworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRl
TGF5ZXJEcmF3c0NvbnRlbnQoKQoreworICAgIGJvb2wgbmVlZFRpbGVkTGF5ZXIgPSByZXF1aXJl
c1RpbGVkTGF5ZXIobV9zaXplKTsKKyAgICBpZiAobmVlZFRpbGVkTGF5ZXIgIT0gbV91c2luZ1Rp
bGVkTGF5ZXIpCisgICAgICAgIHN3YXBGcm9tT3JUb1RpbGVkTGF5ZXIobmVlZFRpbGVkTGF5ZXIp
OworCisgICAgaWYgKG1fZHJhd3NDb250ZW50KQorICAgICAgICBtX2xheWVyLT5zZXROZWVkc0Rp
c3BsYXkoKTsKKyAgICBlbHNlCisgICAgICAgIG1fbGF5ZXItPnNldENvbnRlbnRzKDApOworCisg
ICAgdXBkYXRlRGVidWdJbmRpY2F0b3JzKCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjp1
cGRhdGVMYXllckJhY2tncm91bmRDb2xvcigpCit7CisgICAgaWYgKCFtX2NvbnRlbnRzTGF5ZXIp
CisgICAgICAgIHJldHVybjsKKworICAgIC8vIFdlIG5ldmVyIGNyZWF0ZSB0aGUgY29udGVudHMg
bGF5ZXIganVzdCBmb3IgYmFja2dyb3VuZCBjb2xvciB5ZXQuCisgICAgaWYgKG1fYmFja2dyb3Vu
ZENvbG9yU2V0KQorICAgICAgICBtX2NvbnRlbnRzTGF5ZXItPnNldEJhY2tncm91bmRDb2xvciht
X2JhY2tncm91bmRDb2xvcik7CisgICAgZWxzZQorICAgICAgICBtX2NvbnRlbnRzTGF5ZXItPnNl
dEJhY2tncm91bmRDb2xvcihDb2xvcjo6dHJhbnNwYXJlbnQpOworfQorCit2b2lkIEdyYXBoaWNz
TGF5ZXJDQTo6dXBkYXRlQ29udGVudHNJbWFnZSgpCit7CisgICAgaWYgKG1fcGVuZGluZ0NvbnRl
bnRzSW1hZ2UpIHsKKyAgICAgICAgaWYgKCFtX2NvbnRlbnRzTGF5ZXIuZ2V0KCkpIHsKKyAgICAg
ICAgICAgIG1fY29udGVudHNMYXllciA9IFBsYXRmb3JtQ0FMYXllcjo6Y3JlYXRlKFBsYXRmb3Jt
Q0FMYXllcjo6TGF5ZXJUeXBlTGF5ZXIsIHRoaXMpOworI2lmbmRlZiBOREVCVUcKKyAgICAgICAg
ICAgIG1fY29udGVudHNMYXllci0+c2V0TmFtZSgiSW1hZ2UgTGF5ZXIiKTsKKyNlbmRpZgorICAg
ICAgICAgICAgc2V0dXBDb250ZW50c0xheWVyKG1fY29udGVudHNMYXllci5nZXQoKSk7CisgICAg
ICAgICAgICAvLyBtX2NvbnRlbnRzTGF5ZXIgd2lsbCBiZSBwYXJlbnRlZCBieSB1cGRhdGVTdWJs
YXllckxpc3QKKyAgICAgICAgfQorCisgICAgICAgIC8vIEZJWE1FOiBtYXliZSBvbmx5IGRvIHRy
aWxpbmVhciBpZiB0aGUgaW1hZ2UgaXMgYmVpbmcgc2NhbGVkIGRvd24sCisgICAgICAgIC8vIGJ1
dCB0aGVuIHdoYXQgaWYgdGhlIGxheWVyIHNpemUgY2hhbmdlcz8KKyNpZiAhZGVmaW5lZChCVUlM
RElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkKKyAgICAgICAg
bV9jb250ZW50c0xheWVyLT5zZXRNaW5pZmljYXRpb25GaWx0ZXIoUGxhdGZvcm1DQUxheWVyOjpU
cmlsaW5lYXIpOworI2VuZGlmCisgICAgICAgIG1fY29udGVudHNMYXllci0+c2V0Q29udGVudHMo
bV9wZW5kaW5nQ29udGVudHNJbWFnZS5nZXQoKSk7CisgICAgICAgIG1fcGVuZGluZ0NvbnRlbnRz
SW1hZ2UgPSAwOworCisgICAgICAgIGlmIChtX2NvbnRlbnRzTGF5ZXJDbG9uZXMpIHsKKyAgICAg
ICAgICAgIExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBtX2NvbnRlbnRzTGF5ZXJDbG9u
ZXMtPmVuZCgpOworICAgICAgICAgICAgZm9yIChMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQg
PSBtX2NvbnRlbnRzTGF5ZXJDbG9uZXMtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAg
ICAgICAgICAgICBpdC0+c2Vjb25kLT5zZXRDb250ZW50cyhtX2NvbnRlbnRzTGF5ZXItPmNvbnRl
bnRzKCkpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB1cGRhdGVDb250ZW50c1JlY3Qo
KTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBObyBpbWFnZS4KKyAgICAgICAgLy8gbV9jb250
ZW50c0xheWVyIHdpbGwgYmUgcmVtb3ZlZCB2aWEgdXBkYXRlU3VibGF5ZXJMaXN0LgorICAgICAg
ICBtX2NvbnRlbnRzTGF5ZXIgPSAwOworICAgIH0KK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6
OnVwZGF0ZUNvbnRlbnRzTWVkaWFMYXllcigpCit7CisgICAgLy8gVmlkZW8gbGF5ZXIgd2FzIHNl
dCBhcyBtX2NvbnRlbnRzTGF5ZXIsIGFuZCB3aWxsIGdldCBwYXJlbnRlZCBpbiB1cGRhdGVTdWJs
YXllckxpc3QoKS4KKyAgICBpZiAobV9jb250ZW50c0xheWVyKSB7CisgICAgICAgIHNldHVwQ29u
dGVudHNMYXllcihtX2NvbnRlbnRzTGF5ZXIuZ2V0KCkpOworICAgICAgICB1cGRhdGVDb250ZW50
c1JlY3QoKTsKKyAgICB9Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjp1cGRhdGVDb250ZW50
c0NhbnZhc0xheWVyKCkKK3sKKyAgICAvLyBDYW52YXNMYXllciB3YXMgc2V0IGFzIG1fY29udGVu
dHNMYXllciwgYW5kIHdpbGwgZ2V0IHBhcmVudGVkIGluIHVwZGF0ZVN1YmxheWVyTGlzdCgpLgor
ICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIpIHsKKyAgICAgICAgc2V0dXBDb250ZW50c0xheWVyKG1f
Y29udGVudHNMYXllci5nZXQoKSk7CisgICAgICAgIG1fY29udGVudHNMYXllci0+c2V0TmVlZHNE
aXNwbGF5KCk7CisgICAgICAgIHVwZGF0ZUNvbnRlbnRzUmVjdCgpOworICAgIH0KK30KKwordm9p
ZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUNvbnRlbnRzUmVjdCgpCit7CisgICAgaWYgKCFtX2Nv
bnRlbnRzTGF5ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIEZsb2F0UG9pbnQgcG9pbnQobV9j
b250ZW50c1JlY3QueCgpLCBtX2NvbnRlbnRzUmVjdC55KCkpOworICAgIEZsb2F0UmVjdCByZWN0
KDAsIDAsIG1fY29udGVudHNSZWN0LndpZHRoKCksIG1fY29udGVudHNSZWN0LmhlaWdodCgpKTsK
KworICAgIG1fY29udGVudHNMYXllci0+c2V0UG9zaXRpb24ocG9pbnQpOworICAgIG1fY29udGVu
dHNMYXllci0+c2V0Qm91bmRzKHJlY3QpOworCisgICAgaWYgKG1fY29udGVudHNMYXllckNsb25l
cykgeworICAgICAgICBMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9jb250ZW50c0xh
eWVyQ2xvbmVzLT5lbmQoKTsKKyAgICAgICAgZm9yIChMYXllck1hcDo6Y29uc3RfaXRlcmF0b3Ig
aXQgPSBtX2NvbnRlbnRzTGF5ZXJDbG9uZXMtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewor
ICAgICAgICAgICAgaXQtPnNlY29uZC0+c2V0UG9zaXRpb24ocG9pbnQpOworICAgICAgICAgICAg
aXQtPnNlY29uZC0+c2V0Qm91bmRzKHJlY3QpOworICAgICAgICB9CisgICAgfQorfQorCit2b2lk
IEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlTWFza0xheWVyKCkKK3sKKyAgICBQbGF0Zm9ybUNBTGF5
ZXIqIG1hc2tDQUxheWVyID0gbV9tYXNrTGF5ZXIgPyBzdGF0aWNfY2FzdDxHcmFwaGljc0xheWVy
Q0EqPihtX21hc2tMYXllciktPnByaW1hcnlMYXllcigpIDogMDsKKyAgICBtX2xheWVyLT5zZXRN
YXNrKG1hc2tDQUxheWVyKTsKKworICAgIExheWVyTWFwKiBtYXNrTGF5ZXJDbG9uZU1hcCA9IG1f
bWFza0xheWVyID8gc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllckNBKj4obV9tYXNrTGF5ZXIpLT5w
cmltYXJ5TGF5ZXJDbG9uZXMoKSA6IDA7CisgICAgCisgICAgaWYgKExheWVyTWFwKiBsYXllckNs
b25lTWFwID0gbV9sYXllckNsb25lcy5nZXQoKSkgeworICAgICAgICBMYXllck1hcDo6Y29uc3Rf
aXRlcmF0b3IgZW5kID0gbGF5ZXJDbG9uZU1hcC0+ZW5kKCk7CisgICAgICAgIGZvciAoTGF5ZXJN
YXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbGF5ZXJDbG9uZU1hcC0+YmVnaW4oKTsgaXQgIT0gZW5k
OyArK2l0KSB7ICAgICAgICAgICAgCisgICAgICAgICAgICBQbGF0Zm9ybUNBTGF5ZXIqIG1hc2tD
bG9uZSA9IG1hc2tMYXllckNsb25lTWFwID8gbWFza0xheWVyQ2xvbmVNYXAtPmdldChpdC0+Zmly
c3QpLmdldCgpIDogMDsKKyAgICAgICAgICAgIGl0LT5zZWNvbmQtPnNldE1hc2sobWFza0Nsb25l
KTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZVJl
cGxpY2F0ZWRMYXllcnMoKQoreworICAgIC8vIENsb25lIHRoZSBkZXNjZW5kYW50cyBvZiB0aGUg
cmVwbGljYXRlZCBsYXllciwgYW5kIHBhcmVudCB1bmRlciB1cy4KKyAgICBSZXBsaWNhU3RhdGUg
cmVwbGljYVN0YXRlKFJlcGxpY2FTdGF0ZTo6UmVwbGljYUJyYW5jaCk7CisKKyAgICBSZWZQdHI8
UGxhdGZvcm1DQUxheWVyPnJlcGxpY2FSb290ID0gcmVwbGljYXRlZExheWVyUm9vdChyZXBsaWNh
U3RhdGUpOworICAgIGlmICghcmVwbGljYVJvb3QpCisgICAgICAgIHJldHVybjsKKworICAgIGlm
IChtX3N0cnVjdHVyYWxMYXllcikKKyAgICAgICAgbV9zdHJ1Y3R1cmFsTGF5ZXItPmluc2VydFN1
YmxheWVyKHJlcGxpY2FSb290LmdldCgpLCAwKTsKKyAgICBlbHNlCisgICAgICAgIG1fbGF5ZXIt
Pmluc2VydFN1YmxheWVyKHJlcGxpY2FSb290LmdldCgpLCAwKTsKK30KKworLy8gRm9yIG5vdywg
dGhpcyBhc3N1bWVzIHRoYXQgbGF5ZXJzIG9ubHkgZXZlciBoYXZlIG9uZSByZXBsaWNhLCBzbyBy
ZXBsaWNhSW5kaWNlcyBjb250YWlucyBvbmx5IDAgYW5kIDEuCitHcmFwaGljc0xheWVyQ0E6OkNs
b25lSUQgR3JhcGhpY3NMYXllckNBOjpSZXBsaWNhU3RhdGU6OmNsb25lSUQoKSBjb25zdAorewor
ICAgIHNpemVfdCBkZXB0aCA9IG1fcmVwbGljYUJyYW5jaGVzLnNpemUoKTsKKworICAgIGNvbnN0
IHNpemVfdCBiaXRzUGVyVUNoYXIgPSBzaXplb2YoVUNoYXIpICogODsKKyAgICBzaXplX3QgdmVj
dG9yU2l6ZSA9IChkZXB0aCArIGJpdHNQZXJVQ2hhciAtIDEpIC8gYml0c1BlclVDaGFyOworICAg
IAorICAgIFZlY3RvcjxVQ2hhcj4gcmVzdWx0KHZlY3RvclNpemUpOworICAgIHJlc3VsdC5maWxs
KDApOworCisgICAgLy8gQ3JlYXRlIGEgc3RyaW5nIGZyb20gdGhlIGJpdCBzZXF1ZW5jZSB3aGlj
aCB3ZSBjYW4gdXNlIHRvIGlkZW50aWZ5IHRoZSBjbG9uZS4KKyAgICAvLyBOb3RlIHRoYXQgdGhl
IHN0cmluZyBtYXkgY29udGFpbiBlbWJlZGRlZCBudWxscywgYnV0IHRoYXQncyBPSy4KKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGRlcHRoOyArK2kpIHsKKyAgICAgICAgVUNoYXImIGN1cnJD
aGFyID0gcmVzdWx0W2kgLyBiaXRzUGVyVUNoYXJdOworICAgICAgICBjdXJyQ2hhciA9IChjdXJy
Q2hhciA8PCAxKSB8IG1fcmVwbGljYUJyYW5jaGVzW2ldOworICAgIH0KKyAgICAKKyAgICByZXR1
cm4gU3RyaW5nOjphZG9wdChyZXN1bHQpOworfQorCitQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXll
cj4gR3JhcGhpY3NMYXllckNBOjpyZXBsaWNhdGVkTGF5ZXJSb290KFJlcGxpY2FTdGF0ZSYgcmVw
bGljYVN0YXRlKQoreworICAgIC8vIExpbWl0IHJlcGxpY2EgbmVzdGluZywgdG8gYXZvaWQgMl5O
IGV4cGxvc2lvbiBvZiByZXBsaWNhIGxheWVycy4KKyAgICBpZiAoIW1fcmVwbGljYXRlZExheWVy
IHx8IHJlcGxpY2FTdGF0ZS5yZXBsaWNhRGVwdGgoKSA9PSBSZXBsaWNhU3RhdGU6Om1heFJlcGxp
Y2FEZXB0aCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBHcmFwaGljc0xheWVyQ0EqIHJlcGxp
Y2F0ZWRMYXllciA9IHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXJDQSo+KG1fcmVwbGljYXRlZExh
eWVyKTsKKyAgICAKKyAgICBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBjbG9uZWRMYXllclJvb3Qg
PSByZXBsaWNhdGVkTGF5ZXItPmZldGNoQ2xvbmVMYXllcnModGhpcywgcmVwbGljYVN0YXRlLCBS
b290Q2xvbmVMZXZlbCk7CisgICAgRmxvYXRQb2ludCBjbG9uZVJvb3RQb3NpdGlvbiA9IHJlcGxp
Y2F0ZWRMYXllci0+cG9zaXRpb25Gb3JDbG9uZVJvb3RMYXllcigpOworCisgICAgLy8gUmVwbGlj
YSByb290IGhhcyBubyBvZmZzZXQgb3IgdHJhbnNmb3JtCisgICAgY2xvbmVkTGF5ZXJSb290LT5z
ZXRQb3NpdGlvbihjbG9uZVJvb3RQb3NpdGlvbik7CisgICAgY2xvbmVkTGF5ZXJSb290LT5zZXRU
cmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRyaXgoKSk7CisKKyAgICByZXR1cm4gY2xvbmVkTGF5
ZXJSb290OworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlTGF5ZXJBbmltYXRpb25z
KCkKK3sKKyAgICBpZiAobV9hbmltYXRpb25zVG9Qcm9jZXNzLnNpemUoKSkgeworICAgICAgICBB
bmltYXRpb25zVG9Qcm9jZXNzTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBtX2FuaW1hdGlvbnNU
b1Byb2Nlc3MuZW5kKCk7CisgICAgICAgIGZvciAoQW5pbWF0aW9uc1RvUHJvY2Vzc01hcDo6Y29u
c3RfaXRlcmF0b3IgaXQgPSBtX2FuaW1hdGlvbnNUb1Byb2Nlc3MuYmVnaW4oKTsgaXQgIT0gZW5k
OyArK2l0KSB7CisgICAgICAgICAgICBjb25zdCBTdHJpbmcmIGN1cnJBbmltYXRpb25OYW1lID0g
aXQtPmZpcnN0OworICAgICAgICAgICAgQW5pbWF0aW9uc01hcDo6aXRlcmF0b3IgYW5pbWF0aW9u
SXQgPSBtX3J1bm5pbmdBbmltYXRpb25zLmZpbmQoY3VyckFuaW1hdGlvbk5hbWUpOworICAgICAg
ICAgICAgaWYgKGFuaW1hdGlvbkl0ID09IG1fcnVubmluZ0FuaW1hdGlvbnMuZW5kKCkpCisgICAg
ICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIGNvbnN0IEFuaW1hdGlvblByb2Nl
c3NpbmdBY3Rpb24mIHByb2Nlc3NpbmdJbmZvID0gaXQtPnNlY29uZDsKKyAgICAgICAgICAgIGNv
bnN0IFZlY3RvcjxMYXllclByb3BlcnR5QW5pbWF0aW9uPiYgYW5pbWF0aW9ucyA9IGFuaW1hdGlv
bkl0LT5zZWNvbmQ7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFuaW1hdGlv
bnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgICAgICBjb25zdCBMYXllclByb3BlcnR5QW5p
bWF0aW9uJiBjdXJyQW5pbWF0aW9uID0gYW5pbWF0aW9uc1tpXTsKKyAgICAgICAgICAgICAgICBz
d2l0Y2ggKHByb2Nlc3NpbmdJbmZvLmFjdGlvbikgeworICAgICAgICAgICAgICAgIGNhc2UgUmVt
b3ZlOgorICAgICAgICAgICAgICAgICAgICByZW1vdmVDQUFuaW1hdGlvbkZyb21MYXllcihjdXJy
QW5pbWF0aW9uLm1fcHJvcGVydHksIGN1cnJBbmltYXRpb25OYW1lLCBjdXJyQW5pbWF0aW9uLm1f
aW5kZXgpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNl
IFBhdXNlOgorICAgICAgICAgICAgICAgICAgICBwYXVzZUNBQW5pbWF0aW9uT25MYXllcihjdXJy
QW5pbWF0aW9uLm1fcHJvcGVydHksIGN1cnJBbmltYXRpb25OYW1lLCBjdXJyQW5pbWF0aW9uLm1f
aW5kZXgsIHByb2Nlc3NpbmdJbmZvLnRpbWVPZmZzZXQpOworICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlm
IChwcm9jZXNzaW5nSW5mby5hY3Rpb24gPT0gUmVtb3ZlKQorICAgICAgICAgICAgICAgIG1fcnVu
bmluZ0FuaW1hdGlvbnMucmVtb3ZlKGN1cnJBbmltYXRpb25OYW1lKTsKKyAgICAgICAgfQorICAg
IAorICAgICAgICBtX2FuaW1hdGlvbnNUb1Byb2Nlc3MuY2xlYXIoKTsKKyAgICB9CisgICAgCisg
ICAgc2l6ZV90IG51bUFuaW1hdGlvbnM7CisgICAgaWYgKChudW1BbmltYXRpb25zID0gbV91bmNv
bWl0dGVkQW5pbWF0aW9ucy5zaXplKCkpKSB7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbnVtQW5pbWF0aW9uczsgKytpKSB7CisgICAgICAgICAgICBjb25zdCBMYXllclByb3BlcnR5
QW5pbWF0aW9uJiBwZW5kaW5nQW5pbWF0aW9uID0gbV91bmNvbWl0dGVkQW5pbWF0aW9uc1tpXTsK
KyAgICAgICAgICAgIHNldEFuaW1hdGlvbk9uTGF5ZXIocGVuZGluZ0FuaW1hdGlvbi5tX2FuaW1h
dGlvbi5nZXQoKSwgcGVuZGluZ0FuaW1hdGlvbi5tX3Byb3BlcnR5LCBwZW5kaW5nQW5pbWF0aW9u
Lm1fbmFtZSwgcGVuZGluZ0FuaW1hdGlvbi5tX2luZGV4LCBwZW5kaW5nQW5pbWF0aW9uLm1fdGlt
ZU9mZnNldCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIEFuaW1hdGlvbnNNYXA6Oml0ZXJh
dG9yIGl0ID0gbV9ydW5uaW5nQW5pbWF0aW9ucy5maW5kKHBlbmRpbmdBbmltYXRpb24ubV9uYW1l
KTsKKyAgICAgICAgICAgIGlmIChpdCA9PSBtX3J1bm5pbmdBbmltYXRpb25zLmVuZCgpKSB7Cisg
ICAgICAgICAgICAgICAgVmVjdG9yPExheWVyUHJvcGVydHlBbmltYXRpb24+IGFuaW1hdGlvbnM7
CisgICAgICAgICAgICAgICAgYW5pbWF0aW9ucy5hcHBlbmQocGVuZGluZ0FuaW1hdGlvbik7Cisg
ICAgICAgICAgICAgICAgbV9ydW5uaW5nQW5pbWF0aW9ucy5hZGQocGVuZGluZ0FuaW1hdGlvbi5t
X25hbWUsIGFuaW1hdGlvbnMpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICBWZWN0b3I8TGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbj4mIGFuaW1hdGlvbnMgPSBpdC0+c2Vjb25k
OworICAgICAgICAgICAgICAgIGFuaW1hdGlvbnMuYXBwZW5kKHBlbmRpbmdBbmltYXRpb24pOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICBtX3VuY29taXR0ZWRB
bmltYXRpb25zLmNsZWFyKCk7CisgICAgfQorfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0
QW5pbWF0aW9uT25MYXllcihQbGF0Zm9ybUNBQW5pbWF0aW9uKiBjYUFuaW0sIEFuaW1hdGVkUHJv
cGVydHlJRCBwcm9wZXJ0eSwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBpbnQgaW5kZXgs
IGRvdWJsZSB0aW1lT2Zmc2V0KQoreworICAgIFBsYXRmb3JtQ0FMYXllciogbGF5ZXIgPSBhbmlt
YXRlZExheWVyKHByb3BlcnR5KTsKKyAgICAKKyAgICBpZiAodGltZU9mZnNldCkgeworICAgICAg
ICBjYUFuaW0tPnNldEJlZ2luVGltZShDQUN1cnJlbnRNZWRpYVRpbWUoKSAtIHRpbWVPZmZzZXQp
OworICAgICAgICBjYUFuaW0tPnNldE5vblplcm9CZWdpblRpbWVGbGFnKHRydWUpOworICAgIH0K
KworICAgIFN0cmluZyBhbmltYXRpb25JRCA9IGFuaW1hdGlvbklkZW50aWZpZXIoYW5pbWF0aW9u
TmFtZSwgcHJvcGVydHksIGluZGV4KTsKKworICAgIGxheWVyLT5yZW1vdmVBbmltYXRpb25Gb3JL
ZXkoYW5pbWF0aW9uSUQpOworICAgIGxheWVyLT5hZGRBbmltYXRpb25Gb3JLZXkoYW5pbWF0aW9u
SUQsIGNhQW5pbSk7CisKKyAgICBpZiAoTGF5ZXJNYXAqIGxheWVyQ2xvbmVNYXAgPSBhbmltYXRl
ZExheWVyQ2xvbmVzKHByb3BlcnR5KSkgeworICAgICAgICBMYXllck1hcDo6Y29uc3RfaXRlcmF0
b3IgZW5kID0gbGF5ZXJDbG9uZU1hcC0+ZW5kKCk7CisgICAgICAgIGZvciAoTGF5ZXJNYXA6OmNv
bnN0X2l0ZXJhdG9yIGl0ID0gbGF5ZXJDbG9uZU1hcC0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0
KSB7CisgICAgICAgICAgICAvLyBTa2lwIGltbWVkaWF0ZSByZXBsaWNhcywgc2luY2UgdGhleSBt
b3ZlIHdpdGggdGhlIG9yaWdpbmFsLgorICAgICAgICAgICAgaWYgKG1fcmVwbGljYUxheWVyICYm
IGlzUmVwbGljYXRlZFJvb3RDbG9uZShpdC0+Zmlyc3QpKQorICAgICAgICAgICAgICAgIGNvbnRp
bnVlOworCisgICAgICAgICAgICBpdC0+c2Vjb25kLT5yZW1vdmVBbmltYXRpb25Gb3JLZXkoYW5p
bWF0aW9uSUQpOworICAgICAgICAgICAgaXQtPnNlY29uZC0+YWRkQW5pbWF0aW9uRm9yS2V5KGFu
aW1hdGlvbklELCBjYUFuaW0pOworICAgICAgICB9CisgICAgfQorfQorCisvLyBXb3JrYXJvdW5k
IGZvciA8cmRhcjovL3Byb2JsZW0vNzMxMTM2Nz4KK3N0YXRpYyB2b2lkIGJ1ZzczMTEzNjdXb3Jr
YXJvdW5kKFBsYXRmb3JtQ0FMYXllciogdHJhbnNmb3JtTGF5ZXIsIGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiB0cmFuc2Zvcm0pCit7CisgICAgaWYgKCF0cmFuc2Zvcm1MYXllcikKKyAgICAg
ICAgcmV0dXJuOworCisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggY2FUcmFuc2Zvcm0gPSB0cmFu
c2Zvcm07CisgICAgY2FUcmFuc2Zvcm0uc2V0TTQxKGNhVHJhbnNmb3JtLm00MSgpICsgMSk7Cisg
ICAgdHJhbnNmb3JtTGF5ZXItPnNldFRyYW5zZm9ybShjYVRyYW5zZm9ybSk7CisKKyAgICBjYVRy
YW5zZm9ybS5zZXRNNDEoY2FUcmFuc2Zvcm0ubTQxKCkgLSAxKTsKKyAgICB0cmFuc2Zvcm1MYXll
ci0+c2V0VHJhbnNmb3JtKGNhVHJhbnNmb3JtKTsKK30KKworYm9vbCBHcmFwaGljc0xheWVyQ0E6
OnJlbW92ZUNBQW5pbWF0aW9uRnJvbUxheWVyKEFuaW1hdGVkUHJvcGVydHlJRCBwcm9wZXJ0eSwg
Y29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBpbnQgaW5kZXgpCit7CisgICAgUGxhdGZvcm1D
QUxheWVyKiBsYXllciA9IGFuaW1hdGVkTGF5ZXIocHJvcGVydHkpOworCisgICAgU3RyaW5nIGFu
aW1hdGlvbklEID0gYW5pbWF0aW9uSWRlbnRpZmllcihhbmltYXRpb25OYW1lLCBwcm9wZXJ0eSwg
aW5kZXgpOworCisgICAgaWYgKCFsYXllci0+YW5pbWF0aW9uRm9yS2V5KGFuaW1hdGlvbklEKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGxheWVyLT5yZW1vdmVBbmltYXRpb25G
b3JLZXkoYW5pbWF0aW9uSUQpOworICAgIGJ1ZzczMTEzNjdXb3JrYXJvdW5kKG1fc3RydWN0dXJh
bExheWVyLmdldCgpLCBtX3RyYW5zZm9ybSk7CisKKyAgICBpZiAoTGF5ZXJNYXAqIGxheWVyQ2xv
bmVNYXAgPSBhbmltYXRlZExheWVyQ2xvbmVzKHByb3BlcnR5KSkgeworICAgICAgICBMYXllck1h
cDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbGF5ZXJDbG9uZU1hcC0+ZW5kKCk7CisgICAgICAgIGZv
ciAoTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbGF5ZXJDbG9uZU1hcC0+YmVnaW4oKTsg
aXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgICAgICAvLyBTa2lwIGltbWVkaWF0ZSByZXBsaWNh
cywgc2luY2UgdGhleSBtb3ZlIHdpdGggdGhlIG9yaWdpbmFsLgorICAgICAgICAgICAgaWYgKG1f
cmVwbGljYUxheWVyICYmIGlzUmVwbGljYXRlZFJvb3RDbG9uZShpdC0+Zmlyc3QpKQorICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBpdC0+c2Vjb25kIC0+cmVtb3ZlQW5p
bWF0aW9uRm9yS2V5KGFuaW1hdGlvbklEKTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworc3RhdGljIHZvaWQgY29weUFuaW1hdGlvblByb3BlcnRpZXMoY29uc3QgUGxh
dGZvcm1DQUFuaW1hdGlvbiogZnJvbSwgUGxhdGZvcm1DQUFuaW1hdGlvbiogdG8pCit7CisgICAg
dG8tPnNldEJlZ2luVGltZShmcm9tLT5iZWdpblRpbWUoKSk7CisgICAgdG8tPnNldER1cmF0aW9u
KGZyb20tPmR1cmF0aW9uKCkpOworICAgIHRvLT5zZXRSZXBlYXRDb3VudChmcm9tLT5yZXBlYXRD
b3VudCgpKTsKKyAgICB0by0+c2V0QXV0b3JldmVyc2VzKGZyb20tPmF1dG9yZXZlcnNlcygpKTsK
KyAgICB0by0+c2V0RmlsbE1vZGUoZnJvbS0+ZmlsbE1vZGUoKSk7CisgICAgdG8tPnNldFJlbW92
ZWRPbkNvbXBsZXRpb24oZnJvbS0+aXNSZW1vdmVkT25Db21wbGV0aW9uKCkpOworICAgIHRvLT5z
ZXRBZGRpdGl2ZShmcm9tLT5pc0FkZGl0aXZlKCkpOworICAgIHRvLT5jb3B5VGltaW5nRnVuY3Rp
b25Gcm9tKGZyb20pOworCisjaWYgSEFWRV9NT0RFUk5fUVVBUlRaQ09SRQorICAgIHRvLT5zZXRW
YWx1ZUZ1bmN0aW9uKGZyb20tPnZhbHVlRnVuY3Rpb24oKSk7CisjZW5kaWYKKworICAgIHRvLT5z
ZXROb25aZXJvQmVnaW5UaW1lRmxhZyhmcm9tLT5ub25aZXJvQmVnaW5UaW1lRmxhZygpKTsKK30K
Kwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnBhdXNlQ0FBbmltYXRpb25PbkxheWVyKEFuaW1hdGVk
UHJvcGVydHlJRCBwcm9wZXJ0eSwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBpbnQgaW5k
ZXgsIGRvdWJsZSB0aW1lT2Zmc2V0KQoreworICAgIFBsYXRmb3JtQ0FMYXllciogbGF5ZXIgPSBh
bmltYXRlZExheWVyKHByb3BlcnR5KTsKKworICAgIFN0cmluZyBhbmltYXRpb25JRCA9IGFuaW1h
dGlvbklkZW50aWZpZXIoYW5pbWF0aW9uTmFtZSwgcHJvcGVydHksIGluZGV4KTsKKworICAgIFJl
ZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBjdXJBbmltID0gbGF5ZXItPmFuaW1hdGlvbkZvcktl
eShhbmltYXRpb25JRCk7CisgICAgaWYgKCFjdXJBbmltKQorICAgICAgICByZXR1cm47CisKKyAg
ICAvLyBBbmltYXRpb25zIG9uIHRoZSBsYXllciBhcmUgaW1tdXRhYmxlLCBzbyB3ZSBoYXZlIHRv
IGNsb25lIGFuZCBtb2RpZnkuCisgICAgUGxhdGZvcm1DQUFuaW1hdGlvbiogcGF1c2VkQW5pbSA9
IDA7CisgICAgCisgICAgaWYgKGN1ckFuaW0tPmFuaW1hdGlvblR5cGUoKSA9PSBQbGF0Zm9ybUNB
QW5pbWF0aW9uOjpLZXlmcmFtZSkgeworICAgICAgICBSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlv
bj4gbmV3QW5pbSA9IFBsYXRmb3JtQ0FBbmltYXRpb246OmNyZWF0ZShQbGF0Zm9ybUNBQW5pbWF0
aW9uOjpLZXlmcmFtZSwgY3VyQW5pbS0+a2V5UGF0aCgpKTsKKyAgICAgICAgY29weUFuaW1hdGlv
blByb3BlcnRpZXMoY3VyQW5pbS5nZXQoKSwgbmV3QW5pbS5nZXQoKSk7CisgICAgICAgIG5ld0Fu
aW0tPmNvcHlWYWx1ZXNGcm9tKGN1ckFuaW0uZ2V0KCkpOworICAgICAgICBuZXdBbmltLT5jb3B5
S2V5VGltZXNGcm9tKGN1ckFuaW0uZ2V0KCkpOworICAgICAgICBuZXdBbmltLT5jb3B5VGltaW5n
RnVuY3Rpb25zRnJvbShjdXJBbmltLmdldCgpKTsKKyAgICAgICAgcGF1c2VkQW5pbSA9IG5ld0Fu
aW0uZ2V0KCk7CisgICAgfSBlbHNlIGlmIChjdXJBbmltLT5hbmltYXRpb25UeXBlKCkgPT0gUGxh
dGZvcm1DQUFuaW1hdGlvbjo6QmFzaWMpIHsKKyAgICAgICAgUmVmUHRyPFBsYXRmb3JtQ0FBbmlt
YXRpb24+IG5ld0FuaW0gPSBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpjcmVhdGUoUGxhdGZvcm1DQUFu
aW1hdGlvbjo6QmFzaWMsIGN1ckFuaW0tPmtleVBhdGgoKSk7CisgICAgICAgIGNvcHlBbmltYXRp
b25Qcm9wZXJ0aWVzKGN1ckFuaW0uZ2V0KCksIG5ld0FuaW0uZ2V0KCkpOworICAgICAgICBuZXdB
bmltLT5jb3B5RnJvbVZhbHVlRnJvbShjdXJBbmltLmdldCgpKTsKKyAgICAgICAgbmV3QW5pbS0+
Y29weVRvVmFsdWVGcm9tKGN1ckFuaW0uZ2V0KCkpOworICAgICAgICBwYXVzZWRBbmltID0gbmV3
QW5pbS5nZXQoKTsKKyAgICB9CisKKyAgICAvLyBwYXVzZWRBbmltIGhhcyB0aGUgYmVnaW5UaW1l
IG9mIGNhQW5pbSBhbHJlYWR5LgorICAgIHBhdXNlZEFuaW0tPnNldFNwZWVkKDApOworICAgIHBh
dXNlZEFuaW0tPnNldFRpbWVPZmZzZXQodGltZU9mZnNldCk7CisgICAgCisgICAgbGF5ZXItPmFk
ZEFuaW1hdGlvbkZvcktleShhbmltYXRpb25JRCwgcGF1c2VkQW5pbSk7IC8vIFRoaXMgd2lsbCBy
ZXBsYWNlIHRoZSBydW5uaW5nIGFuaW1hdGlvbi4KKworICAgIC8vIFBhdXNlIHRoZSBhbmltYXRp
b25zIG9uIHRoZSBjbG9uZXMgdG9vLgorICAgIGlmIChMYXllck1hcCogbGF5ZXJDbG9uZU1hcCA9
IGFuaW1hdGVkTGF5ZXJDbG9uZXMocHJvcGVydHkpKSB7CisgICAgICAgIExheWVyTWFwOjpjb25z
dF9pdGVyYXRvciBlbmQgPSBsYXllckNsb25lTWFwLT5lbmQoKTsKKyAgICAgICAgZm9yIChMYXll
ck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBsYXllckNsb25lTWFwLT5iZWdpbigpOyBpdCAhPSBl
bmQ7ICsraXQpIHsKKyAgICAgICAgICAgIC8vIFNraXAgaW1tZWRpYXRlIHJlcGxpY2FzLCBzaW5j
ZSB0aGV5IG1vdmUgd2l0aCB0aGUgb3JpZ2luYWwuCisgICAgICAgICAgICBpZiAobV9yZXBsaWNh
TGF5ZXIgJiYgaXNSZXBsaWNhdGVkUm9vdENsb25lKGl0LT5maXJzdCkpCisgICAgICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgICAgICBpdC0+c2Vjb25kLT5hZGRBbmltYXRpb25Gb3JLZXko
YW5pbWF0aW9uSUQsIHBhdXNlZEFuaW0pOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIEdy
YXBoaWNzTGF5ZXJDQTo6c2V0Q29udGVudHNUb0NhbnZhcyhQbGF0Zm9ybUxheWVyKiBjYW52YXNM
YXllcikKK3sKKyAgICBpZiAobV9jb250ZW50c0xheWVyICYmIGNhbnZhc0xheWVyID09IG1fY29u
dGVudHNMYXllci0+cGxhdGZvcm1MYXllcigpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAg
Ly8gQ3JlYXRlIHRoZSBQbGF0Zm9ybUNBTGF5ZXIgdG8gd3JhcCB0aGUgaW5jb21pbmcgbGF5ZXIK
KyAgICBtX2NvbnRlbnRzTGF5ZXIgPSBjYW52YXNMYXllciA/IFBsYXRmb3JtQ0FMYXllcjo6Y3Jl
YXRlKGNhbnZhc0xheWVyLCB0aGlzKSA6IDA7CisgICAgCisgICAgbV9jb250ZW50c0xheWVyUHVy
cG9zZSA9IGNhbnZhc0xheWVyID8gQ29udGVudHNMYXllckZvckNhbnZhcyA6IE5vQ29udGVudHNM
YXllcjsKKworICAgIG5vdGVTdWJsYXllcnNDaGFuZ2VkKCk7CisgICAgbm90ZUxheWVyUHJvcGVy
dHlDaGFuZ2VkKENvbnRlbnRzQ2FudmFzTGF5ZXJDaGFuZ2VkKTsKK30KKyAgICAKK3ZvaWQgR3Jh
cGhpY3NMYXllckNBOjpyZXBhaW50TGF5ZXJEaXJ0eVJlY3RzKCkKK3sKKyAgICBpZiAoIW1fZGly
dHlSZWN0cy5zaXplKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbV9kaXJ0eVJlY3RzLnNpemUoKTsgKytpKQorICAgICAgICBtX2xheWVyLT5zZXROZWVk
c0Rpc3BsYXkoJihtX2RpcnR5UmVjdHNbaV0pKTsKKyAgICAKKyAgICBtX2RpcnR5UmVjdHMuY2xl
YXIoKTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUNvbnRlbnRzTmVlZHNEaXNw
bGF5KCkKK3sKKyAgICBpZiAobV9jb250ZW50c0xheWVyKQorICAgICAgICBtX2NvbnRlbnRzTGF5
ZXItPnNldE5lZWRzRGlzcGxheSgpOworfQorCitib29sIEdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRl
QW5pbWF0aW9uRnJvbUtleWZyYW1lcyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVMaXN0
LCBjb25zdCBBbmltYXRpb24qIGFuaW1hdGlvbiwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1l
LCBkb3VibGUgdGltZU9mZnNldCkKK3sKKyAgICBBU1NFUlQodmFsdWVMaXN0LnByb3BlcnR5KCkg
IT0gQW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybSk7CisgICAgCisgICAgYm9vbCBpc0tl
eWZyYW1lID0gdmFsdWVMaXN0LnNpemUoKSA+IDI7CisgICAgYm9vbCB2YWx1ZXNPSzsKKyAgICAK
KyAgICBib29sIGFkZGl0aXZlID0gZmFsc2U7CisgICAgaW50IGFuaW1hdGlvbkluZGV4ID0gMDsK
KyAgICAKKyAgICBSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gY2FBbmltYXRpb247CisgICAg
CisgICAgaWYgKGlzS2V5ZnJhbWUpIHsKKyAgICAgICAgY2FBbmltYXRpb24gPSBjcmVhdGVLZXlm
cmFtZUFuaW1hdGlvbihhbmltYXRpb24sIHZhbHVlTGlzdC5wcm9wZXJ0eSgpLCBhZGRpdGl2ZSk7
CisgICAgICAgIHZhbHVlc09LID0gc2V0QW5pbWF0aW9uS2V5ZnJhbWVzKHZhbHVlTGlzdCwgYW5p
bWF0aW9uLCBjYUFuaW1hdGlvbi5nZXQoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgY2FBbmlt
YXRpb24gPSBjcmVhdGVCYXNpY0FuaW1hdGlvbihhbmltYXRpb24sIHZhbHVlTGlzdC5wcm9wZXJ0
eSgpLCBhZGRpdGl2ZSk7CisgICAgICAgIHZhbHVlc09LID0gc2V0QW5pbWF0aW9uRW5kcG9pbnRz
KHZhbHVlTGlzdCwgYW5pbWF0aW9uLCBjYUFuaW1hdGlvbi5nZXQoKSk7CisgICAgfQorICAgIAor
ICAgIGlmICghdmFsdWVzT0spCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIG1fdW5jb21p
dHRlZEFuaW1hdGlvbnMuYXBwZW5kKExheWVyUHJvcGVydHlBbmltYXRpb24oY2FBbmltYXRpb24s
IGFuaW1hdGlvbk5hbWUsIHZhbHVlTGlzdC5wcm9wZXJ0eSgpLCBhbmltYXRpb25JbmRleCwgdGlt
ZU9mZnNldCkpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgR3JhcGhpY3NMYXllckNB
OjpjcmVhdGVUcmFuc2Zvcm1BbmltYXRpb25zRnJvbUtleWZyYW1lcyhjb25zdCBLZXlmcmFtZVZh
bHVlTGlzdCYgdmFsdWVMaXN0LCBjb25zdCBBbmltYXRpb24qIGFuaW1hdGlvbiwgY29uc3QgU3Ry
aW5nJiBhbmltYXRpb25OYW1lLCBkb3VibGUgdGltZU9mZnNldCwgY29uc3QgSW50U2l6ZSYgYm94
U2l6ZSkKK3sKKyAgICBBU1NFUlQodmFsdWVMaXN0LnByb3BlcnR5KCkgPT0gQW5pbWF0ZWRQcm9w
ZXJ0eVdlYmtpdFRyYW5zZm9ybSk7CisKKyAgICBUcmFuc2Zvcm1PcGVyYXRpb25MaXN0IGZ1bmN0
aW9uTGlzdDsKKyAgICBib29sIGxpc3RzTWF0Y2gsIGhhc0JpZ1JvdGF0aW9uOworICAgIGZldGNo
VHJhbnNmb3JtT3BlcmF0aW9uTGlzdCh2YWx1ZUxpc3QsIGZ1bmN0aW9uTGlzdCwgbGlzdHNNYXRj
aCwgaGFzQmlnUm90YXRpb24pOworCisgICAgLy8gV2UgbmVlZCB0byBmYWxsIGJhY2sgdG8gc29m
dHdhcmUgYW5pbWF0aW9uIGlmIHdlIGRvbid0IGhhdmUgc2V0VmFsdWVGdW5jdGlvbjosIGFuZAor
ICAgIC8vIHdlIHdvdWxkIG5lZWQgdG8gYW5pbWF0ZSBlYWNoIGluY29taW5nIHRyYW5zZm9ybSBm
dW5jdGlvbiBzZXBhcmF0ZWx5LiBUaGlzIGlzIHRoZQorICAgIC8vIGNhc2UgaWYgd2UgaGF2ZSBh
IHJvdGF0aW9uID49IDE4MCBvciB3ZSBoYXZlIG1vcmUgdGhhbiBvbmUgdHJhbnNmb3JtIGZ1bmN0
aW9uLgorICAgIGlmICgoaGFzQmlnUm90YXRpb24gfHwgZnVuY3Rpb25MaXN0LnNpemUoKSA+IDEp
ICYmICFQbGF0Zm9ybUNBQW5pbWF0aW9uOjpzdXBwb3J0c1ZhbHVlRnVuY3Rpb24oKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgYm9vbCB2YWxpZE1hdHJpY2VzID0gdHJ1ZTsKKworICAg
IC8vIElmIGZ1bmN0aW9uTGlzdHMgZG9uJ3QgbWF0Y2ggd2UgZG8gYSBtYXRyaXggYW5pbWF0aW9u
LCBvdGhlcndpc2Ugd2UgZG8gYSBjb21wb25lbnQgaGFyZHdhcmUgYW5pbWF0aW9uLgorICAgIC8v
IEFsc28sIHdlIGNhbid0IGRvIGNvbXBvbmVudCBhbmltYXRpb24gdW5sZXNzIHdlIGhhdmUgdmFs
dWVGdW5jdGlvbiwgc28gd2UgbmVlZCB0byBkbyBtYXRyaXggYW5pbWF0aW9uCisgICAgLy8gaWYg
dGhhdCdzIG5vdCB0cnVlIGFzIHdlbGwuCisgICAgYm9vbCBpc01hdHJpeEFuaW1hdGlvbiA9ICFs
aXN0c01hdGNoIHx8ICFQbGF0Zm9ybUNBQW5pbWF0aW9uOjpzdXBwb3J0c1ZhbHVlRnVuY3Rpb24o
KTsKKyAgICAKKyAgICBzaXplX3QgbnVtQW5pbWF0aW9ucyA9IGlzTWF0cml4QW5pbWF0aW9uID8g
MSA6IGZ1bmN0aW9uTGlzdC5zaXplKCk7CisgICAgYm9vbCBpc0tleWZyYW1lID0gdmFsdWVMaXN0
LnNpemUoKSA+IDI7CisgICAgCisgICAgLy8gSXRlcmF0ZSB0aHJvdWdoIHRoZSB0cmFuc2Zvcm0g
ZnVuY3Rpb25zLCBzZW5kaW5nIGFuIGFuaW1hdGlvbiBmb3IgZWFjaCBvbmUuCisgICAgZm9yIChz
aXplX3QgYW5pbWF0aW9uSW5kZXggPSAwOyBhbmltYXRpb25JbmRleCA8IG51bUFuaW1hdGlvbnM7
ICsrYW5pbWF0aW9uSW5kZXgpIHsKKyAgICAgICAgVHJhbnNmb3JtT3BlcmF0aW9uOjpPcGVyYXRp
b25UeXBlIHRyYW5zZm9ybU9wID0gaXNNYXRyaXhBbmltYXRpb24gPyBUcmFuc2Zvcm1PcGVyYXRp
b246Ok1BVFJJWF8zRCA6IGZ1bmN0aW9uTGlzdFthbmltYXRpb25JbmRleF07CisgICAgICAgIFJl
ZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBjYUFuaW1hdGlvbjsKKworI2lmIGRlZmluZWQoQlVJ
TERJTkdfT05fTEVPUEFSRCkgfHwgZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCisg
ICAgICAgIC8vIENBIGFwcGxpZXMgYW5pbWF0aW9ucyBpbiByZXZlcnNlIG9yZGVyICg8cmRhcjov
L3Byb2JsZW0vNzA5NTYzOD4pIHNvIHdlIG5lZWQgdGhlIGxhc3Qgb25lIHdlIGFkZCAocGVyIHBy
b3BlcnR5KQorICAgICAgICAvLyB0byBiZSBub24tYWRkaXRpdmUuCisgICAgICAgIGJvb2wgYWRk
aXRpdmUgPSBhbmltYXRpb25JbmRleCA8IChudW1BbmltYXRpb25zIC0gMSk7CisjZWxzZQorICAg
ICAgICBib29sIGFkZGl0aXZlID0gYW5pbWF0aW9uSW5kZXggPiAwOworI2VuZGlmCisgICAgICAg
IGlmIChpc0tleWZyYW1lKSB7CisgICAgICAgICAgICBjYUFuaW1hdGlvbiA9IGNyZWF0ZUtleWZy
YW1lQW5pbWF0aW9uKGFuaW1hdGlvbiwgdmFsdWVMaXN0LnByb3BlcnR5KCksIGFkZGl0aXZlKTsK
KyAgICAgICAgICAgIHZhbGlkTWF0cmljZXMgPSBzZXRUcmFuc2Zvcm1BbmltYXRpb25LZXlmcmFt
ZXModmFsdWVMaXN0LCBhbmltYXRpb24sIGNhQW5pbWF0aW9uLmdldCgpLCBhbmltYXRpb25JbmRl
eCwgdHJhbnNmb3JtT3AsIGlzTWF0cml4QW5pbWF0aW9uLCBib3hTaXplKTsKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIGNhQW5pbWF0aW9uID0gY3JlYXRlQmFzaWNBbmltYXRpb24oYW5p
bWF0aW9uLCB2YWx1ZUxpc3QucHJvcGVydHkoKSwgYWRkaXRpdmUpOworICAgICAgICAgICAgdmFs
aWRNYXRyaWNlcyA9IHNldFRyYW5zZm9ybUFuaW1hdGlvbkVuZHBvaW50cyh2YWx1ZUxpc3QsIGFu
aW1hdGlvbiwgY2FBbmltYXRpb24uZ2V0KCksIGFuaW1hdGlvbkluZGV4LCB0cmFuc2Zvcm1PcCwg
aXNNYXRyaXhBbmltYXRpb24sIGJveFNpemUpOworICAgICAgICB9CisgICAgICAgIAorICAgICAg
ICBpZiAoIXZhbGlkTWF0cmljZXMpCisgICAgICAgICAgICBicmVhazsKKyAgICAKKyAgICAgICAg
bV91bmNvbWl0dGVkQW5pbWF0aW9ucy5hcHBlbmQoTGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbihjYUFu
aW1hdGlvbiwgYW5pbWF0aW9uTmFtZSwgdmFsdWVMaXN0LnByb3BlcnR5KCksIGFuaW1hdGlvbklu
ZGV4LCB0aW1lT2Zmc2V0KSk7CisgICAgfQorCisgICAgcmV0dXJuIHZhbGlkTWF0cmljZXM7Cit9
CisKK1Bhc3NSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gR3JhcGhpY3NMYXllckNBOjpjcmVh
dGVCYXNpY0FuaW1hdGlvbihjb25zdCBBbmltYXRpb24qIGFuaW0sIEFuaW1hdGVkUHJvcGVydHlJ
RCBwcm9wZXJ0eSwgYm9vbCBhZGRpdGl2ZSkKK3sKKyAgICBSZWZQdHI8UGxhdGZvcm1DQUFuaW1h
dGlvbj4gYmFzaWNBbmltID0gUGxhdGZvcm1DQUFuaW1hdGlvbjo6Y3JlYXRlKFBsYXRmb3JtQ0FB
bmltYXRpb246OkJhc2ljLCBwcm9wZXJ0eUlkVG9TdHJpbmcocHJvcGVydHkpKTsKKyAgICBzZXR1
cEFuaW1hdGlvbihiYXNpY0FuaW0uZ2V0KCksIGFuaW0sIGFkZGl0aXZlKTsKKyAgICByZXR1cm4g
YmFzaWNBbmltOworfQorCitQYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+R3JhcGhpY3NM
YXllckNBOjpjcmVhdGVLZXlmcmFtZUFuaW1hdGlvbihjb25zdCBBbmltYXRpb24qIGFuaW0sIEFu
aW1hdGVkUHJvcGVydHlJRCBwcm9wZXJ0eSwgYm9vbCBhZGRpdGl2ZSkKK3sKKyAgICBSZWZQdHI8
UGxhdGZvcm1DQUFuaW1hdGlvbj4ga2V5ZnJhbWVBbmltID0gUGxhdGZvcm1DQUFuaW1hdGlvbjo6
Y3JlYXRlKFBsYXRmb3JtQ0FBbmltYXRpb246OktleWZyYW1lLCBwcm9wZXJ0eUlkVG9TdHJpbmco
cHJvcGVydHkpKTsKKyAgICBzZXR1cEFuaW1hdGlvbihrZXlmcmFtZUFuaW0uZ2V0KCksIGFuaW0s
IGFkZGl0aXZlKTsKKyAgICByZXR1cm4ga2V5ZnJhbWVBbmltOworfQorCit2b2lkIEdyYXBoaWNz
TGF5ZXJDQTo6c2V0dXBBbmltYXRpb24oUGxhdGZvcm1DQUFuaW1hdGlvbiogcHJvcGVydHlBbmlt
LCBjb25zdCBBbmltYXRpb24qIGFuaW0sIGJvb2wgYWRkaXRpdmUpCit7CisgICAgZG91YmxlIGR1
cmF0aW9uID0gYW5pbS0+ZHVyYXRpb24oKTsKKyAgICBpZiAoZHVyYXRpb24gPD0gMCkKKyAgICAg
ICAgZHVyYXRpb24gPSBjQW5pbWF0aW9uQWxtb3N0WmVyb0R1cmF0aW9uOworCisgICAgZmxvYXQg
cmVwZWF0Q291bnQgPSBhbmltLT5pdGVyYXRpb25Db3VudCgpOworICAgIGlmIChyZXBlYXRDb3Vu
dCA9PSBBbmltYXRpb246Okl0ZXJhdGlvbkNvdW50SW5maW5pdGUpCisgICAgICAgIHJlcGVhdENv
dW50ID0gRkxUX01BWDsKKyAgICBlbHNlIGlmIChhbmltLT5kaXJlY3Rpb24oKSA9PSBBbmltYXRp
b246OkFuaW1hdGlvbkRpcmVjdGlvbkFsdGVybmF0ZSkKKyAgICAgICAgcmVwZWF0Q291bnQgLz0g
MjsKKworICAgIFBsYXRmb3JtQ0FBbmltYXRpb246OkZpbGxNb2RlVHlwZSBmaWxsTW9kZSA9IFBs
YXRmb3JtQ0FBbmltYXRpb246Ok5vRmlsbE1vZGU7CisgICAgc3dpdGNoIChhbmltLT5maWxsTW9k
ZSgpKSB7CisgICAgY2FzZSBBbmltYXRpb25GaWxsTW9kZU5vbmU6CisgICAgICAgIGZpbGxNb2Rl
ID0gUGxhdGZvcm1DQUFuaW1hdGlvbjo6Rm9yd2FyZHM7IC8vIFVzZSAiZm9yd2FyZHMiIHJhdGhl
ciB0aGFuICJyZW1vdmVkIiBiZWNhdXNlIHRoZSBzdHlsZSBzeXN0ZW0gd2lsbCByZW1vdmUgdGhl
IGFuaW1hdGlvbiB3aGVuIGl0IGlzIGZpbmlzaGVkLiBUaGlzIGF2b2lkcyBhIGZsYXNoLgorICAg
ICAgICBicmVhazsKKyAgICBjYXNlIEFuaW1hdGlvbkZpbGxNb2RlQmFja3dhcmRzOgorICAgICAg
ICBmaWxsTW9kZSA9IFBsYXRmb3JtQ0FBbmltYXRpb246OkJvdGg7IC8vIFVzZSAiYm90aCIgcmF0
aGVyIHRoYW4gImJhY2t3YXJkcyIgYmVjYXVzZSB0aGUgc3R5bGUgc3lzdGVtIHdpbGwgcmVtb3Zl
IHRoZSBhbmltYXRpb24gd2hlbiBpdCBpcyBmaW5pc2hlZC4gVGhpcyBhdm9pZHMgYSBmbGFzaC4K
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBbmltYXRpb25GaWxsTW9kZUZvcndhcmRzOgorICAg
ICAgICBmaWxsTW9kZSA9IFBsYXRmb3JtQ0FBbmltYXRpb246OkZvcndhcmRzOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIEFuaW1hdGlvbkZpbGxNb2RlQm90aDoKKyAgICAgICAgZmlsbE1vZGUg
PSBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpCb3RoOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAg
ICBwcm9wZXJ0eUFuaW0tPnNldER1cmF0aW9uKGR1cmF0aW9uKTsKKyAgICBwcm9wZXJ0eUFuaW0t
PnNldFJlcGVhdENvdW50KHJlcGVhdENvdW50KTsKKyAgICBwcm9wZXJ0eUFuaW0tPnNldEF1dG9y
ZXZlcnNlcyhhbmltLT5kaXJlY3Rpb24oKSk7CisgICAgcHJvcGVydHlBbmltLT5zZXRSZW1vdmVk
T25Db21wbGV0aW9uKGZhbHNlKTsKKyAgICBwcm9wZXJ0eUFuaW0tPnNldEFkZGl0aXZlKGFkZGl0
aXZlKTsKKyAgICBwcm9wZXJ0eUFuaW0tPnNldEZpbGxNb2RlKGZpbGxNb2RlKTsKK30KKworY29u
c3QgVGltaW5nRnVuY3Rpb24qIEdyYXBoaWNzTGF5ZXJDQTo6dGltaW5nRnVuY3Rpb25Gb3JBbmlt
YXRpb25WYWx1ZShjb25zdCBBbmltYXRpb25WYWx1ZSogYW5pbVZhbHVlLCBjb25zdCBBbmltYXRp
b24qIGFuaW0pCit7CisgICAgaWYgKGFuaW1WYWx1ZS0+dGltaW5nRnVuY3Rpb24oKSkKKyAgICAg
ICAgcmV0dXJuIGFuaW1WYWx1ZS0+dGltaW5nRnVuY3Rpb24oKTsKKyAgICBpZiAoYW5pbS0+aXNU
aW1pbmdGdW5jdGlvblNldCgpKQorICAgICAgICByZXR1cm4gYW5pbS0+dGltaW5nRnVuY3Rpb24o
KS5nZXQoKTsKKyAgICAgICAgCisgICAgcmV0dXJuIDA7Cit9CisKK2Jvb2wgR3JhcGhpY3NMYXll
ckNBOjpzZXRBbmltYXRpb25FbmRwb2ludHMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVl
TGlzdCwgY29uc3QgQW5pbWF0aW9uKiBhbmltLCBQbGF0Zm9ybUNBQW5pbWF0aW9uKiBiYXNpY0Fu
aW0pCit7CisgICAgc3dpdGNoICh2YWx1ZUxpc3QucHJvcGVydHkoKSkgeworICAgIGNhc2UgQW5p
bWF0ZWRQcm9wZXJ0eU9wYWNpdHk6IHsKKyAgICAgICAgYmFzaWNBbmltLT5zZXRGcm9tVmFsdWUo
c3RhdGljX2Nhc3Q8Y29uc3QgRmxvYXRBbmltYXRpb25WYWx1ZSo+KHZhbHVlTGlzdC5hdCgwKSkt
PnZhbHVlKCkpOworICAgICAgICBiYXNpY0FuaW0tPnNldFRvVmFsdWUoc3RhdGljX2Nhc3Q8Y29u
c3QgRmxvYXRBbmltYXRpb25WYWx1ZSo+KHZhbHVlTGlzdC5hdCgxKSktPnZhbHVlKCkpOworICAg
ICAgICBicmVhazsKKyAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7IC8vIHdlIGRvbid0IGFuaW1hdGUgY29sb3IgeWV0CisgICAgICAgIGJyZWFrOworICAg
IH0KKworICAgIC8vIFRoaXMgY29kZXBhdGggaXMgdXNlZCBmb3IgMi1rZXlmcmFtZSBhbmltYXRp
b25zLCBzbyB3ZSBzdGlsbCBuZWVkIHRvIGxvb2sgaW4gdGhlIHN0YXJ0CisgICAgLy8gZm9yIGEg
dGltaW5nIGZ1bmN0aW9uLgorICAgIGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB0aW1pbmdGdW5jdGlv
biA9IHRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUodmFsdWVMaXN0LmF0KDApLCBhbmlt
KTsKKyAgICBpZiAodGltaW5nRnVuY3Rpb24pCisgICAgICAgIGJhc2ljQW5pbS0+c2V0VGltaW5n
RnVuY3Rpb24odGltaW5nRnVuY3Rpb24pOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wg
R3JhcGhpY3NMYXllckNBOjpzZXRBbmltYXRpb25LZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1
ZUxpc3QmIHZhbHVlTGlzdCwgY29uc3QgQW5pbWF0aW9uKiBhbmltLCBQbGF0Zm9ybUNBQW5pbWF0
aW9uKiBrZXlmcmFtZUFuaW0pCit7CisgICAgVmVjdG9yPGZsb2F0PiBrZXlUaW1lczsKKyAgICBW
ZWN0b3I8ZmxvYXQ+IHZhbHVlczsKKyAgICBWZWN0b3I8Y29uc3QgVGltaW5nRnVuY3Rpb24qPiB0
aW1pbmdGdW5jdGlvbnM7CisgICAgCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHZhbHVl
TGlzdC5zaXplKCk7ICsraSkgeworICAgICAgICBjb25zdCBBbmltYXRpb25WYWx1ZSogY3VyVmFs
dWUgPSB2YWx1ZUxpc3QuYXQoaSk7CisgICAgICAgIGtleVRpbWVzLmFwcGVuZChjdXJWYWx1ZS0+
a2V5VGltZSgpKTsKKworICAgICAgICBzd2l0Y2ggKHZhbHVlTGlzdC5wcm9wZXJ0eSgpKSB7Cisg
ICAgICAgIGNhc2UgQW5pbWF0ZWRQcm9wZXJ0eU9wYWNpdHk6IHsKKyAgICAgICAgICAgIGNvbnN0
IEZsb2F0QW5pbWF0aW9uVmFsdWUqIGZsb2F0VmFsdWUgPSBzdGF0aWNfY2FzdDxjb25zdCBGbG9h
dEFuaW1hdGlvblZhbHVlKj4oY3VyVmFsdWUpOworICAgICAgICAgICAgdmFsdWVzLmFwcGVuZChm
bG9hdFZhbHVlLT52YWx1ZSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgLy8gd2UgZG9u
J3QgYW5pbWF0ZSBjb2xvciB5ZXQKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAg
ICAgICAgdGltaW5nRnVuY3Rpb25zLmFwcGVuZCh0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZh
bHVlKGN1clZhbHVlLCBhbmltKSk7CisgICAgfQorICAgIAorICAgIC8vIFdlIHRvc3MgdGhlIGxh
c3QgdGZBcnJheSB2YWx1ZSBiZWNhdXNlIGl0IGhhcyB0byBvbmUgc2hvcnRlciB0aGFuIHRoZSBv
dGhlcnMuCisgICAgdGltaW5nRnVuY3Rpb25zLnJlbW92ZUxhc3QoKTsKKworICAgIGtleWZyYW1l
QW5pbS0+c2V0S2V5VGltZXMoa2V5VGltZXMpOworICAgIGtleWZyYW1lQW5pbS0+c2V0VmFsdWVz
KHZhbHVlcyk7CisgICAga2V5ZnJhbWVBbmltLT5zZXRUaW1pbmdGdW5jdGlvbnModGltaW5nRnVu
Y3Rpb25zKTsKKyAgICAKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBHcmFwaGljc0xheWVy
Q0E6OnNldFRyYW5zZm9ybUFuaW1hdGlvbkVuZHBvaW50cyhjb25zdCBLZXlmcmFtZVZhbHVlTGlz
dCYgdmFsdWVMaXN0LCBjb25zdCBBbmltYXRpb24qIGFuaW0sIFBsYXRmb3JtQ0FBbmltYXRpb24q
IGJhc2ljQW5pbSwgaW50IGZ1bmN0aW9uSW5kZXgsIFRyYW5zZm9ybU9wZXJhdGlvbjo6T3BlcmF0
aW9uVHlwZSB0cmFuc2Zvcm1PcFR5cGUsIGJvb2wgaXNNYXRyaXhBbmltYXRpb24sIGNvbnN0IElu
dFNpemUmIGJveFNpemUpCit7CisgICAgQVNTRVJUKHZhbHVlTGlzdC5zaXplKCkgPT0gMik7Cisg
ICAgY29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUqIHN0YXJ0VmFsdWUgPSBzdGF0aWNfY2Fz
dDxjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSo+KHZhbHVlTGlzdC5hdCgwKSk7CisgICAg
Y29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUqIGVuZFZhbHVlID0gc3RhdGljX2Nhc3Q8Y29u
c3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUqPih2YWx1ZUxpc3QuYXQoMSkpOworICAgIAorICAg
IGlmIChpc01hdHJpeEFuaW1hdGlvbikgeworICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBm
cm9tVHJhbnNmb3JtLCB0b1RyYW5zZm9ybTsKKyAgICAgICAgc3RhcnRWYWx1ZS0+dmFsdWUoKS0+
YXBwbHkoYm94U2l6ZSwgZnJvbVRyYW5zZm9ybSk7CisgICAgICAgIGVuZFZhbHVlLT52YWx1ZSgp
LT5hcHBseShib3hTaXplLCB0b1RyYW5zZm9ybSk7CisKKyAgICAgICAgLy8gSWYgYW55IG1hdHJp
eCBpcyBzaW5ndWxhciwgQ0Egd29uJ3QgYW5pbWF0ZSBpdCBjb3JyZWN0bHkuIFNvIGZhbGwgYmFj
ayB0byBzb2Z0d2FyZSBhbmltYXRpb24KKyAgICAgICAgaWYgKCFmcm9tVHJhbnNmb3JtLmlzSW52
ZXJ0aWJsZSgpIHx8ICF0b1RyYW5zZm9ybS5pc0ludmVydGlibGUoKSkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgICAgIAorICAgICAgICBiYXNpY0FuaW0tPnNldEZyb21WYWx1
ZShmcm9tVHJhbnNmb3JtKTsKKyAgICAgICAgYmFzaWNBbmltLT5zZXRUb1ZhbHVlKHRvVHJhbnNm
b3JtKTsKKyAgICB9IGVsc2UgeworCisKKworCisgICAgICAgIGlmIChpc1RyYW5zZm9ybVR5cGVO
dW1iZXIodHJhbnNmb3JtT3BUeXBlKSkgeworICAgICAgICAgICAgZmxvYXQgdmFsdWU7CisgICAg
ICAgICAgICBnZXRUcmFuc2Zvcm1GdW5jdGlvblZhbHVlKHN0YXJ0VmFsdWUtPnZhbHVlKCktPmF0
KGZ1bmN0aW9uSW5kZXgpLCB0cmFuc2Zvcm1PcFR5cGUsIGJveFNpemUsIHZhbHVlKTsKKyAgICAg
ICAgICAgIGJhc2ljQW5pbS0+c2V0RnJvbVZhbHVlKHZhbHVlKTsKKyAgICAgICAgICAgIGdldFRy
YW5zZm9ybUZ1bmN0aW9uVmFsdWUoZW5kVmFsdWUtPnZhbHVlKCktPmF0KGZ1bmN0aW9uSW5kZXgp
LCB0cmFuc2Zvcm1PcFR5cGUsIGJveFNpemUsIHZhbHVlKTsKKyAgICAgICAgICAgIGJhc2ljQW5p
bS0+c2V0VG9WYWx1ZSh2YWx1ZSk7CisgICAgICAgIH0gZWxzZSBpZiAoaXNUcmFuc2Zvcm1UeXBl
RmxvYXRQb2ludDNEKHRyYW5zZm9ybU9wVHlwZSkpIHsKKyAgICAgICAgICAgIEZsb2F0UG9pbnQz
RCB2YWx1ZTsKKyAgICAgICAgICAgIGdldFRyYW5zZm9ybUZ1bmN0aW9uVmFsdWUoc3RhcnRWYWx1
ZS0+dmFsdWUoKS0+YXQoZnVuY3Rpb25JbmRleCksIHRyYW5zZm9ybU9wVHlwZSwgYm94U2l6ZSwg
dmFsdWUpOworICAgICAgICAgICAgYmFzaWNBbmltLT5zZXRGcm9tVmFsdWUodmFsdWUpOworICAg
ICAgICAgICAgZ2V0VHJhbnNmb3JtRnVuY3Rpb25WYWx1ZShlbmRWYWx1ZS0+dmFsdWUoKS0+YXQo
ZnVuY3Rpb25JbmRleCksIHRyYW5zZm9ybU9wVHlwZSwgYm94U2l6ZSwgdmFsdWUpOworICAgICAg
ICAgICAgYmFzaWNBbmltLT5zZXRUb1ZhbHVlKHZhbHVlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHZhbHVlOworICAgICAgICAgICAgZ2V0VHJh
bnNmb3JtRnVuY3Rpb25WYWx1ZShzdGFydFZhbHVlLT52YWx1ZSgpLT5hdChmdW5jdGlvbkluZGV4
KSwgdHJhbnNmb3JtT3BUeXBlLCBib3hTaXplLCB2YWx1ZSk7CisgICAgICAgICAgICBiYXNpY0Fu
aW0tPnNldEZyb21WYWx1ZSh2YWx1ZSk7CisgICAgICAgICAgICBnZXRUcmFuc2Zvcm1GdW5jdGlv
blZhbHVlKGVuZFZhbHVlLT52YWx1ZSgpLT5hdChmdW5jdGlvbkluZGV4KSwgdHJhbnNmb3JtT3BU
eXBlLCBib3hTaXplLCB2YWx1ZSk7CisgICAgICAgICAgICBiYXNpY0FuaW0tPnNldFRvVmFsdWUo
dmFsdWUpOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gVGhpcyBjb2RlcGF0aCBpcyB1c2Vk
IGZvciAyLWtleWZyYW1lIGFuaW1hdGlvbnMsIHNvIHdlIHN0aWxsIG5lZWQgdG8gbG9vayBpbiB0
aGUgc3RhcnQKKyAgICAvLyBmb3IgYSB0aW1pbmcgZnVuY3Rpb24uCisgICAgY29uc3QgVGltaW5n
RnVuY3Rpb24qIHRpbWluZ0Z1bmN0aW9uID0gdGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1
ZSh2YWx1ZUxpc3QuYXQoMCksIGFuaW0pOworICAgIGJhc2ljQW5pbS0+c2V0VGltaW5nRnVuY3Rp
b24odGltaW5nRnVuY3Rpb24pOworCisjaWYgSEFWRV9NT0RFUk5fUVVBUlRaQ09SRQorICAgIFBs
YXRmb3JtQ0FBbmltYXRpb246OlZhbHVlRnVuY3Rpb25UeXBlIHZhbHVlRnVuY3Rpb24gPSBnZXRW
YWx1ZUZ1bmN0aW9uTmFtZUZvclRyYW5zZm9ybU9wZXJhdGlvbih0cmFuc2Zvcm1PcFR5cGUpOwor
ICAgIGlmICh2YWx1ZUZ1bmN0aW9uICE9IFBsYXRmb3JtQ0FBbmltYXRpb246Ok5vVmFsdWVGdW5j
dGlvbikKKyAgICAgICAgYmFzaWNBbmltLT5zZXRWYWx1ZUZ1bmN0aW9uKHZhbHVlRnVuY3Rpb24p
OworI2VuZGlmCisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBHcmFwaGljc0xheWVyQ0E6
OnNldFRyYW5zZm9ybUFuaW1hdGlvbktleWZyYW1lcyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYg
dmFsdWVMaXN0LCBjb25zdCBBbmltYXRpb24qIGFuaW1hdGlvbiwgUGxhdGZvcm1DQUFuaW1hdGlv
bioga2V5ZnJhbWVBbmltLCBpbnQgZnVuY3Rpb25JbmRleCwgVHJhbnNmb3JtT3BlcmF0aW9uOjpP
cGVyYXRpb25UeXBlIHRyYW5zZm9ybU9wVHlwZSwgYm9vbCBpc01hdHJpeEFuaW1hdGlvbiwgY29u
c3QgSW50U2l6ZSYgYm94U2l6ZSkKK3sKKyAgICBWZWN0b3I8ZmxvYXQ+IGtleVRpbWVzOworICAg
IFZlY3RvcjxmbG9hdD4gZmxvYXRWYWx1ZXM7CisgICAgVmVjdG9yPEZsb2F0UG9pbnQzRD4gZmxv
YXRQb2ludDNEVmFsdWVzOworICAgIFZlY3RvcjxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4gdHJhbnNm
b3JtYXRpb25NYXRyaXhWYWx1ZXM7CisgICAgVmVjdG9yPGNvbnN0IFRpbWluZ0Z1bmN0aW9uKj4g
dGltaW5nRnVuY3Rpb25zOworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHZhbHVlTGlz
dC5zaXplKCk7ICsraSkgeworICAgICAgICBjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSog
Y3VyVmFsdWUgPSBzdGF0aWNfY2FzdDxjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSo+KHZh
bHVlTGlzdC5hdChpKSk7CisgICAgICAgIGtleVRpbWVzLmFwcGVuZChjdXJWYWx1ZS0+a2V5VGlt
ZSgpKTsKKworICAgICAgICBpZiAoaXNNYXRyaXhBbmltYXRpb24pIHsKKyAgICAgICAgICAgIFRy
YW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybTsKKyAgICAgICAgICAgIGN1clZhbHVlLT52YWx1
ZSgpLT5hcHBseShib3hTaXplLCB0cmFuc2Zvcm0pOworCisgICAgICAgICAgICAvLyBJZiBhbnkg
bWF0cml4IGlzIHNpbmd1bGFyLCBDQSB3b24ndCBhbmltYXRlIGl0IGNvcnJlY3RseS4gU28gZmFs
bCBiYWNrIHRvIHNvZnR3YXJlIGFuaW1hdGlvbgorICAgICAgICAgICAgaWYgKCF0cmFuc2Zvcm0u
aXNJbnZlcnRpYmxlKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAg
ICAgICB0cmFuc2Zvcm1hdGlvbk1hdHJpeFZhbHVlcy5hcHBlbmQodHJhbnNmb3JtKTsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbiogdHJhbnNm
b3JtT3AgPSBjdXJWYWx1ZS0+dmFsdWUoKS0+YXQoZnVuY3Rpb25JbmRleCk7CisgICAgICAgICAg
ICBpZiAoaXNUcmFuc2Zvcm1UeXBlTnVtYmVyKHRyYW5zZm9ybU9wVHlwZSkpIHsKKyAgICAgICAg
ICAgICAgICBmbG9hdCB2YWx1ZTsKKyAgICAgICAgICAgICAgICBnZXRUcmFuc2Zvcm1GdW5jdGlv
blZhbHVlKHRyYW5zZm9ybU9wLCB0cmFuc2Zvcm1PcFR5cGUsIGJveFNpemUsIHZhbHVlKTsKKyAg
ICAgICAgICAgICAgICBmbG9hdFZhbHVlcy5hcHBlbmQodmFsdWUpOworICAgICAgICAgICAgfSBl
bHNlIGlmIChpc1RyYW5zZm9ybVR5cGVGbG9hdFBvaW50M0QodHJhbnNmb3JtT3BUeXBlKSkgewor
ICAgICAgICAgICAgICAgIEZsb2F0UG9pbnQzRCB2YWx1ZTsKKyAgICAgICAgICAgICAgICBnZXRU
cmFuc2Zvcm1GdW5jdGlvblZhbHVlKHRyYW5zZm9ybU9wLCB0cmFuc2Zvcm1PcFR5cGUsIGJveFNp
emUsIHZhbHVlKTsKKyAgICAgICAgICAgICAgICBmbG9hdFBvaW50M0RWYWx1ZXMuYXBwZW5kKHZh
bHVlKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgVHJhbnNmb3JtYXRp
b25NYXRyaXggdmFsdWU7CisgICAgICAgICAgICAgICAgZ2V0VHJhbnNmb3JtRnVuY3Rpb25WYWx1
ZSh0cmFuc2Zvcm1PcCwgdHJhbnNmb3JtT3BUeXBlLCBib3hTaXplLCB2YWx1ZSk7CisgICAgICAg
ICAgICAgICAgdHJhbnNmb3JtYXRpb25NYXRyaXhWYWx1ZXMuYXBwZW5kKHZhbHVlKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB0aW1p
bmdGdW5jdGlvbiA9IHRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUoY3VyVmFsdWUsIGFu
aW1hdGlvbik7CisgICAgICAgIHRpbWluZ0Z1bmN0aW9ucy5hcHBlbmQodGltaW5nRnVuY3Rpb24p
OworICAgIH0KKyAgICAKKyAgICAvLyBXZSB0b3NzIHRoZSBsYXN0IHRmQXJyYXkgdmFsdWUgYmVj
YXVzZSBpdCBoYXMgdG8gb25lIHNob3J0ZXIgdGhhbiB0aGUgb3RoZXJzLgorICAgIHRpbWluZ0Z1
bmN0aW9ucy5yZW1vdmVMYXN0KCk7CisKKyAgICBrZXlmcmFtZUFuaW0tPnNldEtleVRpbWVzKGtl
eVRpbWVzKTsKKyAgICAKKyAgICBpZiAoaXNUcmFuc2Zvcm1UeXBlTnVtYmVyKHRyYW5zZm9ybU9w
VHlwZSkpCisgICAgICAgIGtleWZyYW1lQW5pbS0+c2V0VmFsdWVzKGZsb2F0VmFsdWVzKTsKKyAg
ICBlbHNlIGlmIChpc1RyYW5zZm9ybVR5cGVGbG9hdFBvaW50M0QodHJhbnNmb3JtT3BUeXBlKSkK
KyAgICAgICAga2V5ZnJhbWVBbmltLT5zZXRWYWx1ZXMoZmxvYXRQb2ludDNEVmFsdWVzKTsKKyAg
ICBlbHNlCisgICAgICAgIGtleWZyYW1lQW5pbS0+c2V0VmFsdWVzKHRyYW5zZm9ybWF0aW9uTWF0
cml4VmFsdWVzKTsKKyAgICAgICAgCisgICAga2V5ZnJhbWVBbmltLT5zZXRUaW1pbmdGdW5jdGlv
bnModGltaW5nRnVuY3Rpb25zKTsKKworI2lmIEhBVkVfTU9ERVJOX1FVQVJUWkNPUkUKKyAgICBQ
bGF0Zm9ybUNBQW5pbWF0aW9uOjpWYWx1ZUZ1bmN0aW9uVHlwZSB2YWx1ZUZ1bmN0aW9uID0gZ2V0
VmFsdWVGdW5jdGlvbk5hbWVGb3JUcmFuc2Zvcm1PcGVyYXRpb24odHJhbnNmb3JtT3BUeXBlKTsK
KyAgICBpZiAodmFsdWVGdW5jdGlvbiAhPSBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpOb1ZhbHVlRnVu
Y3Rpb24pCisgICAgICAgIGtleWZyYW1lQW5pbS0+c2V0VmFsdWVGdW5jdGlvbih2YWx1ZUZ1bmN0
aW9uKTsKKyNlbmRpZgorICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJD
QTo6c3VzcGVuZEFuaW1hdGlvbnMoZG91YmxlIHRpbWUpCit7CisgICAgZG91YmxlIHQgPSBjdXJy
ZW50VGltZVRvTWVkaWFUaW1lKHRpbWUgPyB0aW1lIDogY3VycmVudFRpbWUoKSk7CisgICAgcHJp
bWFyeUxheWVyKCktPnNldFNwZWVkKDApOworICAgIHByaW1hcnlMYXllcigpLT5zZXRUaW1lT2Zm
c2V0KHQpOworCisgICAgLy8gU3VzcGVuZCB0aGUgYW5pbWF0aW9ucyBvbiB0aGUgY2xvbmVzIHRv
by4KKyAgICBpZiAoTGF5ZXJNYXAqIGxheWVyQ2xvbmVNYXAgPSBwcmltYXJ5TGF5ZXJDbG9uZXMo
KSkgeworICAgICAgICBMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbGF5ZXJDbG9uZU1h
cC0+ZW5kKCk7CisgICAgICAgIGZvciAoTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbGF5
ZXJDbG9uZU1hcC0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgICAgICBpdC0+
c2Vjb25kLT5zZXRTcGVlZCgwKTsKKyAgICAgICAgICAgIGl0LT5zZWNvbmQtPnNldFRpbWVPZmZz
ZXQodCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpyZXN1
bWVBbmltYXRpb25zKCkKK3sKKyAgICBwcmltYXJ5TGF5ZXIoKS0+c2V0U3BlZWQoMSk7CisgICAg
cHJpbWFyeUxheWVyKCktPnNldFRpbWVPZmZzZXQoMCk7CisKKyAgICAvLyBSZXN1bWUgdGhlIGFu
aW1hdGlvbnMgb24gdGhlIGNsb25lcyB0b28uCisgICAgaWYgKExheWVyTWFwKiBsYXllckNsb25l
TWFwID0gcHJpbWFyeUxheWVyQ2xvbmVzKCkpIHsKKyAgICAgICAgTGF5ZXJNYXA6OmNvbnN0X2l0
ZXJhdG9yIGVuZCA9IGxheWVyQ2xvbmVNYXAtPmVuZCgpOworICAgICAgICBmb3IgKExheWVyTWFw
Ojpjb25zdF9pdGVyYXRvciBpdCA9IGxheWVyQ2xvbmVNYXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsg
KytpdCkgeworICAgICAgICAgICAgaXQtPnNlY29uZC0+c2V0U3BlZWQoMSk7CisgICAgICAgICAg
ICBpdC0+c2Vjb25kLT5zZXRUaW1lT2Zmc2V0KDApOworICAgICAgICB9CisgICAgfQorfQorCitQ
bGF0Zm9ybUNBTGF5ZXIqIEdyYXBoaWNzTGF5ZXJDQTo6aG9zdExheWVyRm9yU3VibGF5ZXJzKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9zdHJ1Y3R1cmFsTGF5ZXIuZ2V0KCkgPyBtX3N0cnVjdHVy
YWxMYXllci5nZXQoKSA6IG1fbGF5ZXIuZ2V0KCk7IAorfQorCitQbGF0Zm9ybUNBTGF5ZXIqIEdy
YXBoaWNzTGF5ZXJDQTo6bGF5ZXJGb3JTdXBlcmxheWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9zdHJ1Y3R1cmFsTGF5ZXIgPyBtX3N0cnVjdHVyYWxMYXllci5nZXQoKSA6IG1fbGF5ZXIuZ2V0
KCk7Cit9CisKK1BsYXRmb3JtQ0FMYXllciogR3JhcGhpY3NMYXllckNBOjphbmltYXRlZExheWVy
KEFuaW1hdGVkUHJvcGVydHlJRCBwcm9wZXJ0eSkgY29uc3QKK3sKKyAgICByZXR1cm4gKHByb3Bl
cnR5ID09IEFuaW1hdGVkUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpID8gbV9jb250ZW50c0xheWVy
LmdldCgpIDogcHJpbWFyeUxheWVyKCk7Cit9CisKK0dyYXBoaWNzTGF5ZXJDQTo6TGF5ZXJNYXAq
IEdyYXBoaWNzTGF5ZXJDQTo6YW5pbWF0ZWRMYXllckNsb25lcyhBbmltYXRlZFByb3BlcnR5SUQg
cHJvcGVydHkpIGNvbnN0Cit7CisgICAgcmV0dXJuIChwcm9wZXJ0eSA9PSBBbmltYXRlZFByb3Bl
cnR5QmFja2dyb3VuZENvbG9yKSA/IG1fY29udGVudHNMYXllckNsb25lcy5nZXQoKSA6IHByaW1h
cnlMYXllckNsb25lcygpOworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0RGVidWdCYWNr
Z3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQoreyAgICAKKyAgICBpZiAoY29sb3IuaXNW
YWxpZCgpKQorICAgICAgICBtX2xheWVyLT5zZXRCYWNrZ3JvdW5kQ29sb3IoY29sb3IpOworICAg
IGVsc2UKKyAgICAgICAgbV9sYXllci0+c2V0QmFja2dyb3VuZENvbG9yKENvbG9yOjp0cmFuc3Bh
cmVudCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXREZWJ1Z0JvcmRlcihjb25zdCBD
b2xvciYgY29sb3IsIGZsb2F0IGJvcmRlcldpZHRoKQoreyAgICAKKyAgICBpZiAoY29sb3IuaXNW
YWxpZCgpKSB7CisgICAgICAgIG1fbGF5ZXItPnNldEJvcmRlckNvbG9yKGNvbG9yKTsKKyAgICAg
ICAgbV9sYXllci0+c2V0Qm9yZGVyV2lkdGgoYm9yZGVyV2lkdGgpOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIG1fbGF5ZXItPnNldEJvcmRlckNvbG9yKENvbG9yOjp0cmFuc3BhcmVudCk7CisgICAg
ICAgIG1fbGF5ZXItPnNldEJvcmRlcldpZHRoKDApOworICAgIH0KK30KKworRmxvYXRTaXplIEdy
YXBoaWNzTGF5ZXJDQTo6Y29uc3RyYWluZWRTaXplKCkgY29uc3QKK3sKKyAgICBmbG9hdCB0aWxl
Q29sdW1ucyA9IGNlaWxmKG1fc2l6ZS53aWR0aCgpIC8gY1RpbGVkTGF5ZXJUaWxlU2l6ZSk7Cisg
ICAgZmxvYXQgdGlsZVJvd3MgPSBjZWlsZihtX3NpemUuaGVpZ2h0KCkgLyBjVGlsZWRMYXllclRp
bGVTaXplKTsKKyAgICBkb3VibGUgbnVtVGlsZXMgPSB0aWxlQ29sdW1ucyAqIHRpbGVSb3dzOwor
ICAgIAorICAgIEZsb2F0U2l6ZSBjb25zdHJhaW5lZFNpemUgPSBtX3NpemU7CisgICAgY29uc3Qg
dW5zaWduZWQgY01heFRpbGVDb3VudCA9IDUxMjsKKyAgICB3aGlsZSAobnVtVGlsZXMgPiBjTWF4
VGlsZUNvdW50KSB7CisgICAgICAgIC8vIENvbnN0cmFpbiB0aGUgd2lkZXIgZGltZW5zaW9uLgor
ICAgICAgICBpZiAoY29uc3RyYWluZWRTaXplLndpZHRoKCkgPj0gY29uc3RyYWluZWRTaXplLmhl
aWdodCgpKSB7CisgICAgICAgICAgICB0aWxlQ29sdW1ucyA9IG1heChmbG9vcmYoY01heFRpbGVD
b3VudCAvIHRpbGVSb3dzKSwgMS4wZik7CisgICAgICAgICAgICBjb25zdHJhaW5lZFNpemUuc2V0
V2lkdGgodGlsZUNvbHVtbnMgKiBjVGlsZWRMYXllclRpbGVTaXplKTsKKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIHRpbGVSb3dzID0gbWF4KGZsb29yZihjTWF4VGlsZUNvdW50IC8gdGls
ZUNvbHVtbnMpLCAxLjBmKTsKKyAgICAgICAgICAgIGNvbnN0cmFpbmVkU2l6ZS5zZXRIZWlnaHQo
dGlsZVJvd3MgKiBjVGlsZWRMYXllclRpbGVTaXplKTsKKyAgICAgICAgfQorICAgICAgICBudW1U
aWxlcyA9IHRpbGVDb2x1bW5zICogdGlsZVJvd3M7CisgICAgfQorICAgIAorICAgIHJldHVybiBj
b25zdHJhaW5lZFNpemU7Cit9CisKK2Jvb2wgR3JhcGhpY3NMYXllckNBOjpyZXF1aXJlc1RpbGVk
TGF5ZXIoY29uc3QgRmxvYXRTaXplJiBzaXplKSBjb25zdAoreworICAgIGlmICghbV9kcmF3c0Nv
bnRlbnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIEZJWE1FOiBjYXRjaCB6ZXJv
LXNpemUgaGVpZ2h0IG9yIHdpZHRoIGhlcmUgKG9yIGVhcmxpZXIpPworICAgIHJldHVybiBzaXpl
LndpZHRoKCkgPiBjTWF4UGl4ZWxEaW1lbnNpb24gfHwgc2l6ZS5oZWlnaHQoKSA+IGNNYXhQaXhl
bERpbWVuc2lvbjsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnN3YXBGcm9tT3JUb1RpbGVk
TGF5ZXIoYm9vbCB1c2VUaWxlZExheWVyKQoreworICAgIGlmICh1c2VUaWxlZExheWVyID09IG1f
dXNpbmdUaWxlZExheWVyKQorICAgICAgICByZXR1cm47CisKKyAgICBDR1NpemUgdGlsZVNpemUg
PSBDR1NpemVNYWtlKGNUaWxlZExheWVyVGlsZVNpemUsIGNUaWxlZExheWVyVGlsZVNpemUpOwor
CisgICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gb2xkTGF5ZXIgPSBtX2xheWVyOworICAgIAor
ICAgIG1fbGF5ZXIgPSBQbGF0Zm9ybUNBTGF5ZXI6OmNyZWF0ZSh1c2VUaWxlZExheWVyID8gUGxh
dGZvcm1DQUxheWVyOjpMYXllclR5cGVXZWJUaWxlZExheWVyIDogUGxhdGZvcm1DQUxheWVyOjpM
YXllclR5cGVXZWJMYXllciwgdGhpcyk7CisKKyAgICBtX3VzaW5nVGlsZWRMYXllciA9IHVzZVRp
bGVkTGF5ZXI7CisgICAgCisgICAgbV9sYXllci0+YWRvcHRTdWJsYXllcnMob2xkTGF5ZXIuZ2V0
KCkpOworICAgIAorICAgIG9sZExheWVyLT5zdXBlcmxheWVyKCktPnJlcGxhY2VTdWJsYXllcihv
bGRMYXllci5nZXQoKSwgbV9sYXllci5nZXQoKSk7CisKKyAgICB1cGRhdGVDb250ZW50c1RyYW5z
Zm9ybSgpOworCisgICAgdXBkYXRlTGF5ZXJQb3NpdGlvbigpOworICAgIHVwZGF0ZUxheWVyU2l6
ZSgpOworICAgIHVwZGF0ZUFuY2hvclBvaW50KCk7CisgICAgdXBkYXRlVHJhbnNmb3JtKCk7Cisg
ICAgdXBkYXRlQ2hpbGRyZW5UcmFuc2Zvcm0oKTsKKyAgICB1cGRhdGVNYXNrc1RvQm91bmRzKCk7
CisgICAgdXBkYXRlQ29udGVudHNPcGFxdWUoKTsKKyAgICB1cGRhdGVCYWNrZmFjZVZpc2liaWxp
dHkoKTsKKyAgICB1cGRhdGVMYXllckJhY2tncm91bmRDb2xvcigpOworICAgIAorICAgIHVwZGF0
ZU9wYWNpdHlPbkxheWVyKCk7CisgICAgCisjaWZuZGVmIE5ERUJVRworICAgIFN0cmluZyBuYW1l
ID0gU3RyaW5nOjpmb3JtYXQoIkNBTGF5ZXIoJXApIEdyYXBoaWNzTGF5ZXIoJXApICIsIG1fbGF5
ZXIuZ2V0KCksIHRoaXMpICsgbV9uYW1lOworICAgIG1fbGF5ZXItPnNldE5hbWUobmFtZSk7Cisj
ZW5kaWYKKworICAgIC8vIG1vdmUgb3ZlciBhbmltYXRpb25zCisgICAgbW92ZU9yQ29weUFuaW1h
dGlvbnNGb3JQcm9wZXJ0eShNb3ZlLCBBbmltYXRlZFByb3BlcnR5V2Via2l0VHJhbnNmb3JtLCBv
bGRMYXllci5nZXQoKSwgbV9sYXllci5nZXQoKSk7CisgICAgbW92ZU9yQ29weUFuaW1hdGlvbnNG
b3JQcm9wZXJ0eShNb3ZlLCBBbmltYXRlZFByb3BlcnR5T3BhY2l0eSwgb2xkTGF5ZXIuZ2V0KCks
IG1fbGF5ZXIuZ2V0KCkpOworICAgIG1vdmVPckNvcHlBbmltYXRpb25zRm9yUHJvcGVydHkoTW92
ZSwgQW5pbWF0ZWRQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwgb2xkTGF5ZXIuZ2V0KCksIG1fbGF5
ZXIuZ2V0KCkpOworICAgIAorICAgIC8vIG5lZWQgdG8gdGVsbCBuZXcgbGF5ZXIgdG8gZHJhdyBp
dHNlbGYKKyAgICBzZXROZWVkc0Rpc3BsYXkoKTsKKyAgICAKKyAgICB1cGRhdGVEZWJ1Z0luZGlj
YXRvcnMoKTsKK30KKworR3JhcGhpY3NMYXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVu
dGF0aW9uIEdyYXBoaWNzTGF5ZXJDQTo6ZGVmYXVsdENvbnRlbnRzT3JpZW50YXRpb24oKSBjb25z
dAoreworI2lmICFIQVZFX01PREVSTl9RVUFSVFpDT1JFCisgICAgLy8gT2xkZXIgUXVhcnR6Q29y
ZSBkb2VzIG5vdCBzdXBwb3J0IC1nZW9tZXRyeUZsaXBwZWQsIHNvIHdlIG1hbnVhbGx5IGZsaXAg
dGhlIHJvb3QKKyAgICAvLyBsYXllciBnZW9tZXRyeSwgYW5kIHRoZW4gZmxpcCB0aGUgY29udGVu
dHMgb2YgZWFjaCBsYXllciBiYWNrIHNvIHRoYXQgdGhlIENUTSBmb3IgQ0cKKyAgICAvLyBpcyB1
bmZsaXBwZWQsIGFsbG93aW5nIGl0IHRvIGRvIHRoZSBjb3JyZWN0IGZvbnQgYXV0by1oaW50aW5n
LgorICAgIHJldHVybiBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzQm90dG9tVXA7CisjZWxzZQorICAg
IHJldHVybiBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzVG9wRG93bjsKKyNlbmRpZgorfQorCit2b2lk
IEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlQ29udGVudHNUcmFuc2Zvcm0oKQoreworI2lmICFIQVZF
X01PREVSTl9RVUFSVFpDT1JFCisgICAgaWYgKGNvbnRlbnRzT3JpZW50YXRpb24oKSA9PSBDb21w
b3NpdGluZ0Nvb3JkaW5hdGVzQm90dG9tVXApIHsKKyAgICAgICAgQ0dBZmZpbmVUcmFuc2Zvcm0g
Y29udGVudHNUcmFuc2Zvcm0gPSBDR0FmZmluZVRyYW5zZm9ybU1ha2VTY2FsZSgxLCAtMSk7Cisg
ICAgICAgIGNvbnRlbnRzVHJhbnNmb3JtID0gQ0dBZmZpbmVUcmFuc2Zvcm1UcmFuc2xhdGUoY29u
dGVudHNUcmFuc2Zvcm0sIDAsIC1bbV9sYXllci5nZXQoKSBib3VuZHNdLnNpemUuaGVpZ2h0KTsK
KyAgICAgICAgW21fbGF5ZXIuZ2V0KCkgc2V0Q29udGVudHNUcmFuc2Zvcm06Y29udGVudHNUcmFu
c2Zvcm1dOworICAgIH0KKyNlbmRpZgorfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0dXBD
b250ZW50c0xheWVyKFBsYXRmb3JtQ0FMYXllciogY29udGVudHNMYXllcikKK3sKKyAgICAvLyBU
dXJuIG9mZiBpbXBsaWNpdCBhbmltYXRpb25zIG9uIHRoZSBpbm5lciBsYXllci4KKyAgICBjb250
ZW50c0xheWVyLT5zZXRNYXNrc1RvQm91bmRzKHRydWUpOworCisgICAgaWYgKGRlZmF1bHRDb250
ZW50c09yaWVudGF0aW9uKCkgPT0gQ29tcG9zaXRpbmdDb29yZGluYXRlc0JvdHRvbVVwKSB7Cisg
ICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGZsaXBwZXIoCisgICAgICAgICAgICAxLjBmLCAw
LjBmLCAwLjBmLCAwLjBmLAorICAgICAgICAgICAgMC4wZiwgLTEuMGYsIDAuMGYsIDAuMGYsCisg
ICAgICAgICAgICAwLjBmLCAwLjBmLCAxLjBmLCAwLjBmLAorICAgICAgICAgICAgMC4wZiwgMC4w
ZiwgMC4wZiwgMS4wZik7CisgICAgICAgIGNvbnRlbnRzTGF5ZXItPnNldFRyYW5zZm9ybShmbGlw
cGVyKTsKKyAgICAgICAgY29udGVudHNMYXllci0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludDNE
KDAsIDEsIDApKTsKKyAgICB9IGVsc2UKKyAgICAgICAgY29udGVudHNMYXllci0+c2V0QW5jaG9y
UG9pbnQoRmxvYXRQb2ludDNEKCkpOworCisgICAgaWYgKHNob3dEZWJ1Z0JvcmRlcnMoKSkgewor
ICAgICAgICBjb250ZW50c0xheWVyLT5zZXRCb3JkZXJDb2xvcihDb2xvcigwLCAwLCAxMjgsIDE4
MCkpOworICAgICAgICBjb250ZW50c0xheWVyLT5zZXRCb3JkZXJXaWR0aCgxLjBmKTsKKyAgICB9
Cit9CisKK1Bhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBHcmFwaGljc0xheWVyQ0E6OmZpbmRP
ck1ha2VDbG9uZShDbG9uZUlEIGNsb25lSUQsIFBsYXRmb3JtQ0FMYXllciAqc291cmNlTGF5ZXIs
IExheWVyTWFwKiBjbG9uZXMsIENsb25lTGV2ZWwgY2xvbmVMZXZlbCkKK3sKKyAgICBpZiAoIXNv
dXJjZUxheWVyKQorICAgICAgICByZXR1cm4gMDsKKworICAgIFJlZlB0cjxQbGF0Zm9ybUNBTGF5
ZXI+IHJlc3VsdExheWVyOworCisgICAgLy8gQWRkIHdpdGggYSBkdW1teSB2YWx1ZSB0byBnZXQg
YW4gaXRlcmF0b3IgZm9yIHRoZSBpbnNlcnRpb24gcG9zaXRpb24sIGFuZCBhIGJvb2xlYW4gdGhh
dCB0ZWxscworICAgIC8vIHVzIHdoZXRoZXIgdGhlcmUncyBhbiBpdGVtIHRoZXJlLiBUaGlzIHRl
Y2huaXF1ZSBhdm9pZHMgdHdvIGhhc2ggbG9va3Vwcy4KKyAgICBSZWZQdHI8UGxhdGZvcm1DQUxh
eWVyPiBkdW1teTsKKyAgICBwYWlyPExheWVyTWFwOjppdGVyYXRvciwgYm9vbD4gYWRkUmVzdWx0
ID0gY2xvbmVzLT5hZGQoY2xvbmVJRCwgZHVtbXkpOworICAgIGlmICghYWRkUmVzdWx0LnNlY29u
ZCkgeworICAgICAgICAvLyBWYWx1ZSB3YXMgbm90IGFkZGVkLCBzbyBpdCBleGlzdHMgYWxyZWFk
eS4KKyAgICAgICAgcmVzdWx0TGF5ZXIgPSBhZGRSZXN1bHQuZmlyc3QtPnNlY29uZC5nZXQoKTsK
KyAgICB9IGVsc2UgeworICAgICAgICByZXN1bHRMYXllciA9IGNsb25lTGF5ZXIoc291cmNlTGF5
ZXIsIGNsb25lTGV2ZWwpOworI2lmbmRlZiBOREVCVUcKKyAgICAgICAgcmVzdWx0TGF5ZXItPnNl
dE5hbWUoU3RyaW5nOjpmb3JtYXQoIkNsb25lICVkIG9mIGxheWVyICVwIiwgY2xvbmVJRFswVV0s
IHNvdXJjZUxheWVyKSk7CisjZW5kaWYKKyAgICAgICAgYWRkUmVzdWx0LmZpcnN0LT5zZWNvbmQg
PSByZXN1bHRMYXllcjsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0TGF5ZXI7Cit9ICAgCisK
K3ZvaWQgR3JhcGhpY3NMYXllckNBOjplbnN1cmVDbG9uZUxheWVycyhDbG9uZUlEIGNsb25lSUQs
IFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+JiBwcmltYXJ5TGF5ZXIsIFJlZlB0cjxQbGF0Zm9ybUNB
TGF5ZXI+JiBzdHJ1Y3R1cmFsTGF5ZXIsIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+JiBjb250ZW50
c0xheWVyLCBDbG9uZUxldmVsIGNsb25lTGV2ZWwpCit7CisgICAgc3RydWN0dXJhbExheWVyID0g
bmlsOworICAgIGNvbnRlbnRzTGF5ZXIgPSBuaWw7CisKKyAgICBpZiAoIW1fbGF5ZXJDbG9uZXMp
CisgICAgICAgIG1fbGF5ZXJDbG9uZXMgPSBuZXcgTGF5ZXJNYXA7CisKKyAgICBpZiAoIW1fc3Ry
dWN0dXJhbExheWVyQ2xvbmVzICYmIG1fc3RydWN0dXJhbExheWVyKQorICAgICAgICBtX3N0cnVj
dHVyYWxMYXllckNsb25lcyA9IG5ldyBMYXllck1hcDsKKworICAgIGlmICghbV9jb250ZW50c0xh
eWVyQ2xvbmVzICYmIG1fY29udGVudHNMYXllcikKKyAgICAgICAgbV9jb250ZW50c0xheWVyQ2xv
bmVzID0gbmV3IExheWVyTWFwOworCisgICAgcHJpbWFyeUxheWVyID0gZmluZE9yTWFrZUNsb25l
KGNsb25lSUQsIG1fbGF5ZXIuZ2V0KCksIG1fbGF5ZXJDbG9uZXMuZ2V0KCksIGNsb25lTGV2ZWwp
OworICAgIHN0cnVjdHVyYWxMYXllciA9IGZpbmRPck1ha2VDbG9uZShjbG9uZUlELCBtX3N0cnVj
dHVyYWxMYXllci5nZXQoKSwgbV9zdHJ1Y3R1cmFsTGF5ZXJDbG9uZXMuZ2V0KCksIGNsb25lTGV2
ZWwpOworICAgIGNvbnRlbnRzTGF5ZXIgPSBmaW5kT3JNYWtlQ2xvbmUoY2xvbmVJRCwgbV9jb250
ZW50c0xheWVyLmdldCgpLCBtX2NvbnRlbnRzTGF5ZXJDbG9uZXMuZ2V0KCksIGNsb25lTGV2ZWwp
OworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6cmVtb3ZlQ2xvbmVMYXllcnMoKQoreworICAg
IG1fbGF5ZXJDbG9uZXMgPSAwOworICAgIG1fc3RydWN0dXJhbExheWVyQ2xvbmVzID0gMDsKKyAg
ICBtX2NvbnRlbnRzTGF5ZXJDbG9uZXMgPSAwOworfQorCitGbG9hdFBvaW50IEdyYXBoaWNzTGF5
ZXJDQTo6cG9zaXRpb25Gb3JDbG9uZVJvb3RMYXllcigpIGNvbnN0Cit7CisgICAgLy8gVGhpcyBj
YW4gZ2V0IGNhbGxlZCBkdXJpbmcgYSBzeW5jIHdoZW4gd2UndmUganVzdCByZW1vdmVkIHRoZSBt
X3JlcGxpY2FMYXllci4KKyAgICBpZiAoIW1fcmVwbGljYUxheWVyKQorICAgICAgICByZXR1cm4g
RmxvYXRQb2ludCgpOworCisgICAgRmxvYXRQb2ludCByZXBsaWNhUG9zaXRpb24gPSBtX3JlcGxp
Y2FMYXllci0+cmVwbGljYXRlZExheWVyUG9zaXRpb24oKTsKKyAgICByZXR1cm4gRmxvYXRQb2lu
dChyZXBsaWNhUG9zaXRpb24ueCgpICsgbV9hbmNob3JQb2ludC54KCkgKiBtX3NpemUud2lkdGgo
KSwKKyAgICAgICAgICAgICAgICAgICAgICByZXBsaWNhUG9zaXRpb24ueSgpICsgbV9hbmNob3JQ
b2ludC55KCkgKiBtX3NpemUuaGVpZ2h0KCkpOworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6
cHJvcGFnYXRlTGF5ZXJDaGFuZ2VUb1JlcGxpY2FzKCkKK3sKKyAgICBmb3IgKEdyYXBoaWNzTGF5
ZXIqIGN1cnJMYXllciA9IHRoaXM7IGN1cnJMYXllcjsgY3VyckxheWVyID0gY3VyckxheWVyLT5w
YXJlbnQoKSkgeworICAgICAgICBHcmFwaGljc0xheWVyQ0EqIGN1cnJMYXllckNBID0gc3RhdGlj
X2Nhc3Q8R3JhcGhpY3NMYXllckNBKj4oY3VyckxheWVyKTsKKyAgICAgICAgaWYgKCFjdXJyTGF5
ZXJDQS0+aGFzQ2xvbmVMYXllcnMoKSkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGlm
IChjdXJyTGF5ZXJDQS0+cmVwbGljYUxheWVyKCkpCisgICAgICAgICAgICBzdGF0aWNfY2FzdDxH
cmFwaGljc0xheWVyQ0EqPihjdXJyTGF5ZXJDQS0+cmVwbGljYUxheWVyKCkpLT5ub3RlTGF5ZXJQ
cm9wZXJ0eUNoYW5nZWQoUmVwbGljYXRlZExheWVyQ2hhbmdlZCk7CisgICAgfQorfQorCitQYXNz
UmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gR3JhcGhpY3NMYXllckNBOjpmZXRjaENsb25lTGF5ZXJz
KEdyYXBoaWNzTGF5ZXIqIHJlcGxpY2FSb290LCBSZXBsaWNhU3RhdGUmIHJlcGxpY2FTdGF0ZSwg
Q2xvbmVMZXZlbCBjbG9uZUxldmVsKQoreworICAgIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IHBy
aW1hcnlMYXllcjsKKyAgICBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBzdHJ1Y3R1cmFsTGF5ZXI7
CisgICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gY29udGVudHNMYXllcjsKKyAgICBlbnN1cmVD
bG9uZUxheWVycyhyZXBsaWNhU3RhdGUuY2xvbmVJRCgpLCBwcmltYXJ5TGF5ZXIsIHN0cnVjdHVy
YWxMYXllciwgY29udGVudHNMYXllciwgY2xvbmVMZXZlbCk7CisKKyAgICBpZiAobV9tYXNrTGF5
ZXIpIHsKKyAgICAgICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gbWFza0Nsb25lID0gc3RhdGlj
X2Nhc3Q8R3JhcGhpY3NMYXllckNBKj4obV9tYXNrTGF5ZXIpLT5mZXRjaENsb25lTGF5ZXJzKHJl
cGxpY2FSb290LCByZXBsaWNhU3RhdGUsIEludGVybWVkaWF0ZUNsb25lTGV2ZWwpOworICAgICAg
ICBwcmltYXJ5TGF5ZXItPnNldE1hc2sobWFza0Nsb25lLmdldCgpKTsKKyAgICB9CisKKyAgICBp
ZiAobV9yZXBsaWNhdGVkTGF5ZXIpIHsKKyAgICAgICAgLy8gV2UgYXJlIGEgcmVwbGljYSBiZWlu
ZyBhc2tlZCBmb3IgY2xvbmVzIG9mIG91ciBsYXllcnMuCisgICAgICAgIFJlZlB0cjxQbGF0Zm9y
bUNBTGF5ZXI+IHJlcGxpY2FSb290ID0gcmVwbGljYXRlZExheWVyUm9vdChyZXBsaWNhU3RhdGUp
OworICAgICAgICBpZiAoIXJlcGxpY2FSb290KQorICAgICAgICAgICAgcmV0dXJuIG5pbDsKKwor
ICAgICAgICBpZiAoc3RydWN0dXJhbExheWVyKSB7CisgICAgICAgICAgICBzdHJ1Y3R1cmFsTGF5
ZXItPmluc2VydFN1YmxheWVyKHJlcGxpY2FSb290LmdldCgpLCAwKTsKKyAgICAgICAgICAgIHJl
dHVybiBzdHJ1Y3R1cmFsTGF5ZXI7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHByaW1h
cnlMYXllci0+aW5zZXJ0U3VibGF5ZXIocmVwbGljYVJvb3QuZ2V0KCksIDApOworICAgICAgICBy
ZXR1cm4gcHJpbWFyeUxheWVyOworICAgIH0KKworICAgIGNvbnN0IFZlY3RvcjxHcmFwaGljc0xh
eWVyKj4mIGNoaWxkTGF5ZXJzID0gY2hpbGRyZW4oKTsKKyAgICBWZWN0b3I8UmVmUHRyPFBsYXRm
b3JtQ0FMYXllcj4gPiBjbG9uYWxTdWJsYXllcnM7CisKKyAgICBSZWZQdHI8UGxhdGZvcm1DQUxh
eWVyPiByZXBsaWNhTGF5ZXI7CisgICAgCisgICAgaWYgKG1fcmVwbGljYUxheWVyICYmIG1fcmVw
bGljYUxheWVyICE9IHJlcGxpY2FSb290KSB7CisgICAgICAgIC8vIFdlIGhhdmUgbmVzdGVkIHJl
cGxpY2FzLiBBc2sgdGhlIHJlcGxpY2EgbGF5ZXIgZm9yIGEgY2xvbmUgb2YgaXRzIGNvbnRlbnRz
LgorICAgICAgICByZXBsaWNhU3RhdGUuc2V0QnJhbmNoVHlwZShSZXBsaWNhU3RhdGU6OlJlcGxp
Y2FCcmFuY2gpOworICAgICAgICByZXBsaWNhTGF5ZXIgPSBzdGF0aWNfY2FzdDxHcmFwaGljc0xh
eWVyQ0EqPihtX3JlcGxpY2FMYXllciktPmZldGNoQ2xvbmVMYXllcnMocmVwbGljYVJvb3QsIHJl
cGxpY2FTdGF0ZSwgUm9vdENsb25lTGV2ZWwpOworICAgICAgICByZXBsaWNhU3RhdGUuc2V0QnJh
bmNoVHlwZShSZXBsaWNhU3RhdGU6OkNoaWxkQnJhbmNoKTsKKyAgICB9CisgICAgCisgICAgaWYg
KHJlcGxpY2FMYXllciB8fCBzdHJ1Y3R1cmFsTGF5ZXIgfHwgY29udGVudHNMYXllciB8fCBjaGls
ZExheWVycy5zaXplKCkgPiAwKSB7CisgICAgICAgIGlmIChzdHJ1Y3R1cmFsTGF5ZXIpIHsKKyAg
ICAgICAgICAgIC8vIFJlcGxpY2FzIHJlbmRlciBiZWhpbmQgdGhlIGFjdHVhbCBsYXllciBjb250
ZW50LgorICAgICAgICAgICAgaWYgKHJlcGxpY2FMYXllcikKKyAgICAgICAgICAgICAgICBjbG9u
YWxTdWJsYXllcnMuYXBwZW5kKHJlcGxpY2FMYXllcik7CisgICAgICAgICAgICAgICAgCisgICAg
ICAgICAgICAvLyBBZGQgdGhlIHByaW1hcnkgbGF5ZXIgbmV4dC4gRXZlbiBpZiB3ZSBoYXZlIG5l
Z2F0aXZlIHotb3JkZXIgY2hpbGRyZW4sIHRoZSBwcmltYXJ5IGxheWVyIGFsd2F5cyBjb21lcyBi
ZWhpbmQuCisgICAgICAgICAgICBjbG9uYWxTdWJsYXllcnMuYXBwZW5kKHByaW1hcnlMYXllcik7
CisgICAgICAgIH0gZWxzZSBpZiAoY29udGVudHNMYXllcikgeworICAgICAgICAgICAgLy8gRklY
TUU6IGFkZCB0aGUgY29udGVudHMgbGF5ZXIgaW4gdGhlIGNvcnJlY3Qgb3JkZXIgd2l0aCBuZWdh
dGl2ZSB6LW9yZGVyIGNoaWxkcmVuLgorICAgICAgICAgICAgLy8gVGhpcyBkb2VzIG5vdCBjYXVz
ZSB2aXNpYmxlIHJlbmRlcmluZyBpc3N1ZXMgYmVjYXVzZSBjdXJyZW50bHkgY29udGVudHMgbGF5
ZXJzIGFyZSBvbmx5IHVzZWQKKyAgICAgICAgICAgIC8vIGZvciByZXBsYWNlZCBlbGVtZW50cyB0
aGF0IGRvbid0IGhhdmUgY2hpbGRyZW4uCisgICAgICAgICAgICBjbG9uYWxTdWJsYXllcnMuYXBw
ZW5kKGNvbnRlbnRzTGF5ZXIpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICByZXBsaWNh
U3RhdGUucHVzaChSZXBsaWNhU3RhdGU6OkNoaWxkQnJhbmNoKTsKKworICAgICAgICBzaXplX3Qg
bnVtQ2hpbGRyZW4gPSBjaGlsZExheWVycy5zaXplKCk7CisgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbnVtQ2hpbGRyZW47ICsraSkgeworICAgICAgICAgICAgR3JhcGhpY3NMYXllckNB
KiBjdXJDaGlsZCA9IHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXJDQSo+KGNoaWxkTGF5ZXJzW2ld
KTsKKworICAgICAgICAgICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gY2hpbGRMYXllciA9IGN1
ckNoaWxkLT5mZXRjaENsb25lTGF5ZXJzKHJlcGxpY2FSb290LCByZXBsaWNhU3RhdGUsIEludGVy
bWVkaWF0ZUNsb25lTGV2ZWwpOworICAgICAgICAgICAgaWYgKGNoaWxkTGF5ZXIpCisgICAgICAg
ICAgICAgICAgY2xvbmFsU3VibGF5ZXJzLmFwcGVuZChjaGlsZExheWVyKTsKKyAgICAgICAgfQor
CisgICAgICAgIHJlcGxpY2FTdGF0ZS5wb3AoKTsKKworICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGNsb25hbFN1YmxheWVycy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIGNsb25hbFN1
YmxheWVyc1tpXS0+cmVtb3ZlRnJvbVN1cGVybGF5ZXIoKTsKKyAgICB9CisgICAgCisgICAgUmVm
UHRyPFBsYXRmb3JtQ0FMYXllcj4gcmVzdWx0OworICAgIGlmIChzdHJ1Y3R1cmFsTGF5ZXIpIHsK
KyAgICAgICAgc3RydWN0dXJhbExheWVyLT5zZXRTdWJsYXllcnMoY2xvbmFsU3VibGF5ZXJzKTsK
KworICAgICAgICBpZiAoY29udGVudHNMYXllcikgeworICAgICAgICAgICAgLy8gSWYgd2UgaGF2
ZSBhIHRyYW5zZm9ybSBsYXllciwgdGhlbiB0aGUgY29udGVudHMgbGF5ZXIgaXMgcGFyZW50ZWQg
aW4gdGhlIAorICAgICAgICAgICAgLy8gcHJpbWFyeSBsYXllciAod2hpY2ggaXMgaXRzZWxmIGEg
Y2hpbGQgb2YgdGhlIHRyYW5zZm9ybSBsYXllcikuCisgICAgICAgICAgICBwcmltYXJ5TGF5ZXIt
PnJlbW92ZUFsbFN1YmxheWVycygpOworICAgICAgICAgICAgcHJpbWFyeUxheWVyLT5hcHBlbmRT
dWJsYXllcihjb250ZW50c0xheWVyLmdldCgpKTsKKyAgICAgICAgfQorCisgICAgICAgIHJlc3Vs
dCA9IHN0cnVjdHVyYWxMYXllcjsKKyAgICB9IGVsc2UgeworICAgICAgICBwcmltYXJ5TGF5ZXIt
PnNldFN1YmxheWVycyhjbG9uYWxTdWJsYXllcnMpOworICAgICAgICByZXN1bHQgPSBwcmltYXJ5
TGF5ZXI7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworUGFzc1JlZlB0cjxQbGF0
Zm9ybUNBTGF5ZXI+IEdyYXBoaWNzTGF5ZXJDQTo6Y2xvbmVMYXllcihQbGF0Zm9ybUNBTGF5ZXIg
KmxheWVyLCBDbG9uZUxldmVsIGNsb25lTGV2ZWwpCit7CisgICAgUGxhdGZvcm1DQUxheWVyOjpM
YXllclR5cGUgbGF5ZXJUeXBlID0gKGxheWVyLT5sYXllclR5cGUoKSA9PSBQbGF0Zm9ybUNBTGF5
ZXI6OkxheWVyVHlwZVRyYW5zZm9ybUxheWVyKSA/IAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVUcmFuc2Zv
cm1MYXllciA6IFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlTGF5ZXI7CisgICAgUmVmUHRyPFBs
YXRmb3JtQ0FMYXllcj4gbmV3TGF5ZXIgPSBQbGF0Zm9ybUNBTGF5ZXI6OmNyZWF0ZShsYXllclR5
cGUsIHRoaXMpOworICAgIAorICAgIG5ld0xheWVyLT5zZXRQb3NpdGlvbihsYXllci0+cG9zaXRp
b24oKSk7CisgICAgbmV3TGF5ZXItPnNldEJvdW5kcyhsYXllci0+Ym91bmRzKCkpOworICAgIG5l
d0xheWVyLT5zZXRBbmNob3JQb2ludChsYXllci0+YW5jaG9yUG9pbnQoKSk7CisgICAgbmV3TGF5
ZXItPnNldFRyYW5zZm9ybShsYXllci0+dHJhbnNmb3JtKCkpOworICAgIG5ld0xheWVyLT5zZXRT
dWJsYXllclRyYW5zZm9ybShsYXllci0+c3VibGF5ZXJUcmFuc2Zvcm0oKSk7CisgICAgbmV3TGF5
ZXItPnNldENvbnRlbnRzKGxheWVyLT5jb250ZW50cygpKTsKKyAgICBuZXdMYXllci0+c2V0TWFz
a3NUb0JvdW5kcyhsYXllci0+bWFza3NUb0JvdW5kcygpKTsKKyAgICBuZXdMYXllci0+c2V0RG91
YmxlU2lkZWQobGF5ZXItPmlzRG91YmxlU2lkZWQoKSk7CisgICAgbmV3TGF5ZXItPnNldE9wYXF1
ZShsYXllci0+aXNPcGFxdWUoKSk7CisgICAgbmV3TGF5ZXItPnNldEJhY2tncm91bmRDb2xvcihs
YXllci0+YmFja2dyb3VuZENvbG9yKCkpOworCisgICAgaWYgKGNsb25lTGV2ZWwgPT0gSW50ZXJt
ZWRpYXRlQ2xvbmVMZXZlbCkgeworICAgICAgICBuZXdMYXllci0+c2V0T3BhY2l0eShsYXllci0+
b3BhY2l0eSgpKTsKKyAgICAgICAgbW92ZU9yQ29weUFuaW1hdGlvbnNGb3JQcm9wZXJ0eShDb3B5
LCBBbmltYXRlZFByb3BlcnR5V2Via2l0VHJhbnNmb3JtLCBsYXllciwgbmV3TGF5ZXIuZ2V0KCkp
OworICAgICAgICBtb3ZlT3JDb3B5QW5pbWF0aW9uc0ZvclByb3BlcnR5KENvcHksIEFuaW1hdGVk
UHJvcGVydHlPcGFjaXR5LCBsYXllciwgbmV3TGF5ZXIuZ2V0KCkpOworICAgIH0KKyAgICAKKyAg
ICBpZiAoc2hvd0RlYnVnQm9yZGVycygpKSB7CisgICAgICAgIG5ld0xheWVyLT5zZXRCb3JkZXJD
b2xvcihDb2xvcigyNTUsIDEyMiwgMjUxKSk7CisgICAgICAgIG5ld0xheWVyLT5zZXRCb3JkZXJX
aWR0aCgyKTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIG5ld0xheWVyOworfQorCit2b2lkIEdy
YXBoaWNzTGF5ZXJDQTo6c2V0T3BhY2l0eUludGVybmFsKGZsb2F0IGFjY3VtdWxhdGVkT3BhY2l0
eSkKK3sKKyAgICBMYXllck1hcCogbGF5ZXJDbG9uZU1hcCA9IDA7CisgICAgCisgICAgaWYgKHBy
ZXNlcnZlczNEKCkpIHsKKyAgICAgICAgbV9sYXllci0+c2V0T3BhY2l0eShhY2N1bXVsYXRlZE9w
YWNpdHkpOworICAgICAgICBsYXllckNsb25lTWFwID0gbV9sYXllckNsb25lcy5nZXQoKTsKKyAg
ICB9IGVsc2UgeworICAgICAgICBwcmltYXJ5TGF5ZXIoKS0+c2V0T3BhY2l0eShhY2N1bXVsYXRl
ZE9wYWNpdHkpOworICAgICAgICBsYXllckNsb25lTWFwID0gcHJpbWFyeUxheWVyQ2xvbmVzKCk7
CisgICAgfQorCisgICAgaWYgKGxheWVyQ2xvbmVNYXApIHsKKyAgICAgICAgTGF5ZXJNYXA6OmNv
bnN0X2l0ZXJhdG9yIGVuZCA9IGxheWVyQ2xvbmVNYXAtPmVuZCgpOworICAgICAgICBmb3IgKExh
eWVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGxheWVyQ2xvbmVNYXAtPmJlZ2luKCk7IGl0ICE9
IGVuZDsgKytpdCkgeworICAgICAgICAgICAgaWYgKG1fcmVwbGljYUxheWVyICYmIGlzUmVwbGlj
YXRlZFJvb3RDbG9uZShpdC0+Zmlyc3QpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICAgICAgaXQtPnNlY29uZC0+c2V0T3BhY2l0eShtX29wYWNpdHkpOworICAgICAgICB9Cisg
ICAgfQorfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlT3BhY2l0eU9uTGF5ZXIoKQor
eworI2lmICFIQVZFX01PREVSTl9RVUFSVFpDT1JFCisgICAgLy8gRGlzdHJpYnV0ZSBvcGFjaXR5
IGVpdGhlciB0byBvdXIgb3duIGxheWVyIG9yIHRvIG91ciBjaGlsZHJlbi4gV2UgcGFzcyBpbiB0
aGUgCisgICAgLy8gY29udHJpYnV0aW9uIGZyb20gb3VyIHBhcmVudChzKS4KKyAgICBkaXN0cmli
dXRlT3BhY2l0eShwYXJlbnQoKSA/IHBhcmVudCgpLT5hY2N1bXVsYXRlZE9wYWNpdHkoKSA6IDEp
OworI2Vsc2UKKyAgICBwcmltYXJ5TGF5ZXIoKS0+c2V0T3BhY2l0eShtX29wYWNpdHkpOworCisg
ICAgaWYgKExheWVyTWFwKiBsYXllckNsb25lTWFwID0gcHJpbWFyeUxheWVyQ2xvbmVzKCkpIHsK
KyAgICAgICAgTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGxheWVyQ2xvbmVNYXAtPmVu
ZCgpOworICAgICAgICBmb3IgKExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGxheWVyQ2xv
bmVNYXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICAgICAgaWYgKG1fcmVw
bGljYUxheWVyICYmIGlzUmVwbGljYXRlZFJvb3RDbG9uZShpdC0+Zmlyc3QpKQorICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBpdC0+c2Vjb25kLT5zZXRPcGFjaXR5KG1f
b3BhY2l0eSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgfQorI2VuZGlmCit9CisKK3ZvaWQg
R3JhcGhpY3NMYXllckNBOjpub3RlU3VibGF5ZXJzQ2hhbmdlZCgpCit7CisgICAgbm90ZUxheWVy
UHJvcGVydHlDaGFuZ2VkKENoaWxkcmVuQ2hhbmdlZCk7CisgICAgcHJvcGFnYXRlTGF5ZXJDaGFu
Z2VUb1JlcGxpY2FzKCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpub3RlTGF5ZXJQcm9w
ZXJ0eUNoYW5nZWQoTGF5ZXJDaGFuZ2VGbGFncyBmbGFncykKK3sKKyAgICBpZiAoIW1fdW5jb21t
aXR0ZWRDaGFuZ2VzICYmIG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+bm90aWZ5U3luY1Jl
cXVpcmVkKHRoaXMpOworCisgICAgbV91bmNvbW1pdHRlZENoYW5nZXMgfD0gZmxhZ3M7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01Q
T1NJVElORykKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXll
ckNBLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGlj
c0xheWVyQ0EuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
R3JhcGhpY3NMYXllckNBLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzc5IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVm
IEdyYXBoaWNzTGF5ZXJDQV9oCisjZGVmaW5lIEdyYXBoaWNzTGF5ZXJDQV9oCisKKyNpZiBVU0Uo
QUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisKKyNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgiCisj
aW5jbHVkZSAiSW1hZ2UuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUNBQW5pbWF0aW9uLmgiCisjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUg
PHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUGxhdGZvcm1DQUxheWVyOworCitjbGFzcyBHcmFw
aGljc0xheWVyQ0EgOiBwdWJsaWMgR3JhcGhpY3NMYXllciB7CitwdWJsaWM6CisKKyAgICBHcmFw
aGljc0xheWVyQ0EoR3JhcGhpY3NMYXllckNsaWVudCopOworICAgIHZpcnR1YWwgfkdyYXBoaWNz
TGF5ZXJDQSgpOworICAgIAorICAgIHZpcnR1YWwgdm9pZCBhbmltYXRpb25TdGFydGVkKENGVGlt
ZUludGVydmFsIGJlZ2luVGltZSk7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0TmFtZShjb25zdCBT
dHJpbmcmKTsKKworICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNv
bnN0OworCisgICAgdmlydHVhbCBib29sIHNldENoaWxkcmVuKGNvbnN0IFZlY3RvcjxHcmFwaGlj
c0xheWVyKj4mKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGQoR3JhcGhpY3NMYXllciopOwor
ICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZEF0SW5kZXgoR3JhcGhpY3NMYXllciosIGludCBpbmRl
eCk7CisgICAgdmlydHVhbCB2b2lkIGFkZENoaWxkQWJvdmUoR3JhcGhpY3NMYXllciogbGF5ZXIs
IEdyYXBoaWNzTGF5ZXIqIHNpYmxpbmcpOworICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZEJlbG93
KEdyYXBoaWNzTGF5ZXIqIGxheWVyLCBHcmFwaGljc0xheWVyKiBzaWJsaW5nKTsKKyAgICB2aXJ0
dWFsIGJvb2wgcmVwbGFjZUNoaWxkKEdyYXBoaWNzTGF5ZXIqIG9sZENoaWxkLCBHcmFwaGljc0xh
eWVyKiBuZXdDaGlsZCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRnJvbVBhcmVudCgpOwor
CisgICAgdmlydHVhbCB2b2lkIHNldE1hc2tMYXllcihHcmFwaGljc0xheWVyKik7CisgICAgdmly
dHVhbCB2b2lkIHNldFJlcGxpY2F0ZWRMYXllcihHcmFwaGljc0xheWVyKik7CisKKyAgICB2aXJ0
dWFsIHZvaWQgc2V0UG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYpOworICAgIHZpcnR1YWwgdm9p
ZCBzZXRBbmNob3JQb2ludChjb25zdCBGbG9hdFBvaW50M0QmKTsKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0U2l6ZShjb25zdCBGbG9hdFNpemUmKTsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRUcmFuc2Zv
cm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKTsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRD
aGlsZHJlblRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpOworCisgICAgdmly
dHVhbCB2b2lkIHNldFByZXNlcnZlczNEKGJvb2wpOworICAgIHZpcnR1YWwgdm9pZCBzZXRNYXNr
c1RvQm91bmRzKGJvb2wpOworICAgIHZpcnR1YWwgdm9pZCBzZXREcmF3c0NvbnRlbnQoYm9vbCk7
CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IENvbG9yJik7Cisg
ICAgdmlydHVhbCB2b2lkIGNsZWFyQmFja2dyb3VuZENvbG9yKCk7CisKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0Q29udGVudHNPcGFxdWUoYm9vbCk7CisgICAgdmlydHVhbCB2b2lkIHNldEJhY2tmYWNl
VmlzaWJpbGl0eShib29sKTsKKworICAgIC8vIHJldHVybiB0cnVlIGlmIHdlIHN0YXJ0ZWQgYW4g
YW5pbWF0aW9uCisgICAgdmlydHVhbCB2b2lkIHNldE9wYWNpdHkoZmxvYXQpOworCisgICAgdmly
dHVhbCB2b2lkIHNldE5lZWRzRGlzcGxheSgpOworICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0Rp
c3BsYXlJblJlY3QoY29uc3QgRmxvYXRSZWN0Jik7CisgICAgdmlydHVhbCB2b2lkIHNldENvbnRl
bnRzTmVlZHNEaXNwbGF5KCk7CisgICAgCisgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzUmVj
dChjb25zdCBJbnRSZWN0Jik7CisgICAgCisgICAgdmlydHVhbCB2b2lkIHN1c3BlbmRBbmltYXRp
b25zKGRvdWJsZSB0aW1lKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzdW1lQW5pbWF0aW9ucygpOwor
CisgICAgdmlydHVhbCBib29sIGFkZEFuaW1hdGlvbihjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYs
IGNvbnN0IEludFNpemUmIGJveFNpemUsIGNvbnN0IEFuaW1hdGlvbiosIGNvbnN0IFN0cmluZyYg
YW5pbWF0aW9uTmFtZSwgZG91YmxlIHRpbWVPZmZzZXQpOworICAgIHZpcnR1YWwgdm9pZCBwYXVz
ZUFuaW1hdGlvbihjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGRvdWJsZSB0aW1lT2Zmc2V0
KTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQW5pbWF0aW9uKGNvbnN0IFN0cmluZyYgYW5pbWF0
aW9uTmFtZSk7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNUb0ltYWdlKEltYWdlKik7
CisgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzVG9NZWRpYShQbGF0Zm9ybUxheWVyKik7Cisg
ICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzVG9DYW52YXMoUGxhdGZvcm1MYXllciopOworCisg
ICAgdmlydHVhbCBib29sIGhhc0NvbnRlbnRzTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX2NvbnRl
bnRzTGF5ZXI7IH0KKyAgICAKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RGVidWdCYWNrZ3JvdW5kQ29s
b3IoY29uc3QgQ29sb3ImKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RGVidWdCb3JkZXIoY29uc3Qg
Q29sb3ImLCBmbG9hdCBib3JkZXJXaWR0aCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRGlzcGxh
eShQbGF0Zm9ybUxheWVyKik7CisKKyAgICB2b2lkIHJlY3Vyc2l2ZUNvbW1pdENoYW5nZXMoKTsK
KworICAgIHZpcnR1YWwgdm9pZCBzeW5jQ29tcG9zaXRpbmdTdGF0ZSgpOworICAgIHZpcnR1YWwg
dm9pZCBzeW5jQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKTsKKworcHJvdGVjdGVk
OgorICAgIHZpcnR1YWwgdm9pZCBzZXRPcGFjaXR5SW50ZXJuYWwoZmxvYXQpOworCitwcml2YXRl
OgorICAgIHZvaWQgdXBkYXRlT3BhY2l0eU9uTGF5ZXIoKTsKKworICAgIFBsYXRmb3JtQ0FMYXll
ciogcHJpbWFyeUxheWVyKCkgY29uc3QgeyByZXR1cm4gbV9zdHJ1Y3R1cmFsTGF5ZXIuZ2V0KCkg
PyBtX3N0cnVjdHVyYWxMYXllci5nZXQoKSA6IG1fbGF5ZXIuZ2V0KCk7IH0KKyAgICBQbGF0Zm9y
bUNBTGF5ZXIqIGhvc3RMYXllckZvclN1YmxheWVycygpIGNvbnN0OworICAgIFBsYXRmb3JtQ0FM
YXllciogbGF5ZXJGb3JTdXBlcmxheWVyKCkgY29uc3Q7CisgICAgUGxhdGZvcm1DQUxheWVyKiBh
bmltYXRlZExheWVyKEFuaW1hdGVkUHJvcGVydHlJRCkgY29uc3Q7CisKKyAgICB0eXBlZGVmIFN0
cmluZyBDbG9uZUlEOyAvLyBJZGVudGlmaWVyIGZvciBhIGdpdmVuIGNsb25lLCBiYXNlZCBvbiBv
cmlnaW5hbC9yZXBsaWNhIGJyYW5jaGluZyBkb3duIHRoZSB0cmVlLgorICAgIHN0YXRpYyBib29s
IGlzUmVwbGljYXRlZFJvb3RDbG9uZShjb25zdCBDbG9uZUlEJiBjbG9uZUlEKSB7IHJldHVybiBj
bG9uZUlEWzBVXSAmIDE7IH0KKworICAgIHR5cGVkZWYgSGFzaE1hcDxDbG9uZUlELCBSZWZQdHI8
UGxhdGZvcm1DQUxheWVyPiA+IExheWVyTWFwOworICAgIExheWVyTWFwKiBwcmltYXJ5TGF5ZXJD
bG9uZXMoKSBjb25zdCB7IHJldHVybiBtX3N0cnVjdHVyYWxMYXllci5nZXQoKSA/IG1fc3RydWN0
dXJhbExheWVyQ2xvbmVzLmdldCgpIDogbV9sYXllckNsb25lcy5nZXQoKTsgfQorICAgIExheWVy
TWFwKiBhbmltYXRlZExheWVyQ2xvbmVzKEFuaW1hdGVkUHJvcGVydHlJRCkgY29uc3Q7CisKKyAg
ICBib29sIGNyZWF0ZUFuaW1hdGlvbkZyb21LZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxp
c3QmLCBjb25zdCBBbmltYXRpb24qLCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGRvdWJs
ZSB0aW1lT2Zmc2V0KTsKKyAgICBib29sIGNyZWF0ZVRyYW5zZm9ybUFuaW1hdGlvbnNGcm9tS2V5
ZnJhbWVzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiwgY29uc3QgQW5pbWF0aW9uKiwgY29uc3Qg
U3RyaW5nJiBhbmltYXRpb25OYW1lLCBkb3VibGUgdGltZU9mZnNldCwgY29uc3QgSW50U2l6ZSYg
Ym94U2l6ZSk7CisKKyAgICAvLyBSZXR1cm4gYXV0b3JlbGVhc2VkIGFuaW1hdGlvbiAodXNlIFJl
dGFpblB0cj8pCisgICAgUGFzc1JlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBjcmVhdGVCYXNp
Y0FuaW1hdGlvbihjb25zdCBBbmltYXRpb24qLCBBbmltYXRlZFByb3BlcnR5SUQsIGJvb2wgYWRk
aXRpdmUpOworICAgIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gY3JlYXRlS2V5ZnJh
bWVBbmltYXRpb24oY29uc3QgQW5pbWF0aW9uKiwgQW5pbWF0ZWRQcm9wZXJ0eUlELCBib29sIGFk
ZGl0aXZlKTsKKyAgICB2b2lkIHNldHVwQW5pbWF0aW9uKFBsYXRmb3JtQ0FBbmltYXRpb24qLCBj
b25zdCBBbmltYXRpb24qLCBib29sIGFkZGl0aXZlKTsKKyAgICAKKyAgICBjb25zdCBUaW1pbmdG
dW5jdGlvbiogdGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShjb25zdCBBbmltYXRpb25W
YWx1ZSosIGNvbnN0IEFuaW1hdGlvbiopOworICAgIAorICAgIGJvb2wgc2V0QW5pbWF0aW9uRW5k
cG9pbnRzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiwgY29uc3QgQW5pbWF0aW9uKiwgUGxhdGZv
cm1DQUFuaW1hdGlvbiopOworICAgIGJvb2wgc2V0QW5pbWF0aW9uS2V5ZnJhbWVzKGNvbnN0IEtl
eWZyYW1lVmFsdWVMaXN0JiwgY29uc3QgQW5pbWF0aW9uKiwgUGxhdGZvcm1DQUFuaW1hdGlvbiop
OworCisgICAgYm9vbCBzZXRUcmFuc2Zvcm1BbmltYXRpb25FbmRwb2ludHMoY29uc3QgS2V5ZnJh
bWVWYWx1ZUxpc3QmLCBjb25zdCBBbmltYXRpb24qLCBQbGF0Zm9ybUNBQW5pbWF0aW9uKiwgaW50
IGZ1bmN0aW9uSW5kZXgsIFRyYW5zZm9ybU9wZXJhdGlvbjo6T3BlcmF0aW9uVHlwZSwgYm9vbCBp
c01hdHJpeEFuaW1hdGlvbiwgY29uc3QgSW50U2l6ZSYgYm94U2l6ZSk7CisgICAgYm9vbCBzZXRU
cmFuc2Zvcm1BbmltYXRpb25LZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmLCBjb25z
dCBBbmltYXRpb24qLCBQbGF0Zm9ybUNBQW5pbWF0aW9uKiwgaW50IGZ1bmN0aW9uSW5kZXgsIFRy
YW5zZm9ybU9wZXJhdGlvbjo6T3BlcmF0aW9uVHlwZSwgYm9vbCBpc01hdHJpeEFuaW1hdGlvbiwg
Y29uc3QgSW50U2l6ZSYgYm94U2l6ZSk7CisgICAgCisgICAgYm9vbCBhbmltYXRpb25Jc1J1bm5p
bmcoY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1fcnVubmluZ0FuaW1hdGlvbnMuZmluZChhbmltYXRpb25OYW1lKSAhPSBtX3J1bm5pbmdB
bmltYXRpb25zLmVuZCgpOworICAgIH0KKworICAgIHZvaWQgY29tbWl0TGF5ZXJDaGFuZ2VzQmVm
b3JlU3VibGF5ZXJzKCk7CisgICAgdm9pZCBjb21taXRMYXllckNoYW5nZXNBZnRlclN1YmxheWVy
cygpOworCisgICAgRmxvYXRTaXplIGNvbnN0cmFpbmVkU2l6ZSgpIGNvbnN0OworCisgICAgYm9v
bCByZXF1aXJlc1RpbGVkTGF5ZXIoY29uc3QgRmxvYXRTaXplJikgY29uc3Q7CisgICAgdm9pZCBz
d2FwRnJvbU9yVG9UaWxlZExheWVyKGJvb2wgdXNlVGlsZWRMYXllcik7CisKKyAgICBDb21wb3Np
dGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRpb24gZGVmYXVsdENvbnRlbnRzT3JpZW50YXRpb24oKSBj
b25zdDsKKyAgICB2b2lkIHVwZGF0ZUNvbnRlbnRzVHJhbnNmb3JtKCk7CisgICAgCisgICAgdm9p
ZCBzZXR1cENvbnRlbnRzTGF5ZXIoUGxhdGZvcm1DQUxheWVyKik7CisgICAgUGxhdGZvcm1DQUxh
eWVyKiBjb250ZW50c0xheWVyKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50c0xheWVyLmdldCgp
OyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UmVwbGljYXRlZEJ5TGF5ZXIoR3JhcGhpY3NMYXll
ciopOworCisgICAgLy8gVXNlZCB0byB0cmFjayB0aGUgcGF0aCBkb3duIHRoZSB0cmVlIGZvciBy
ZXBsaWNhIGxheWVycy4KKyAgICBzdHJ1Y3QgUmVwbGljYVN0YXRlIHsKKyAgICAgICAgc3RhdGlj
IGNvbnN0IHNpemVfdCBtYXhSZXBsaWNhRGVwdGggPSAxNjsKKyAgICAgICAgZW51bSBSZXBsaWNh
QnJhbmNoVHlwZSB7IENoaWxkQnJhbmNoID0gMCwgUmVwbGljYUJyYW5jaCA9IDEgfTsKKyAgICAg
ICAgUmVwbGljYVN0YXRlKFJlcGxpY2FCcmFuY2hUeXBlIGZpcnN0QnJhbmNoKQorICAgICAgICAg
ICAgOiBtX3JlcGxpY2FEZXB0aCgwKQorICAgICAgICB7CisgICAgICAgICAgICBwdXNoKGZpcnN0
QnJhbmNoKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLy8gQ2FsbGVkIGFzIHdlIHdh
bGsgZG93biB0aGUgdHJlZSB0byBidWlsZCByZXBsaWNhcy4KKyAgICAgICAgdm9pZCBwdXNoKFJl
cGxpY2FCcmFuY2hUeXBlIGJyYW5jaFR5cGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fcmVw
bGljYUJyYW5jaGVzLmFwcGVuZChicmFuY2hUeXBlKTsKKyAgICAgICAgICAgIGlmIChicmFuY2hU
eXBlID09IFJlcGxpY2FCcmFuY2gpCisgICAgICAgICAgICAgICAgKyttX3JlcGxpY2FEZXB0aDsK
KyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdm9pZCBzZXRCcmFuY2hUeXBlKFJlcGxpY2FC
cmFuY2hUeXBlIGJyYW5jaFR5cGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVCghbV9y
ZXBsaWNhQnJhbmNoZXMuaXNFbXB0eSgpKTsKKworICAgICAgICAgICAgaWYgKG1fcmVwbGljYUJy
YW5jaGVzLmxhc3QoKSAhPSBicmFuY2hUeXBlKSB7CisgICAgICAgICAgICAgICAgaWYgKGJyYW5j
aFR5cGUgPT0gUmVwbGljYUJyYW5jaCkKKyAgICAgICAgICAgICAgICAgICAgKyttX3JlcGxpY2FE
ZXB0aDsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIC0tbV9yZXBs
aWNhRGVwdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG1fcmVwbGljYUJyYW5jaGVz
Lmxhc3QoKSA9IGJyYW5jaFR5cGU7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIHBvcCgpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGlmIChtX3JlcGxpY2FCcmFuY2hlcy5sYXN0KCkgPT0gUmVw
bGljYUJyYW5jaCkKKyAgICAgICAgICAgICAgICAtLW1fcmVwbGljYURlcHRoOworICAgICAgICAg
ICAgbV9yZXBsaWNhQnJhbmNoZXMucmVtb3ZlTGFzdCgpOworICAgICAgICB9CisgICAgICAgIAor
ICAgICAgICBzaXplX3QgZGVwdGgoKSBjb25zdCB7IHJldHVybiBtX3JlcGxpY2FCcmFuY2hlcy5z
aXplKCk7IH0KKyAgICAgICAgc2l6ZV90IHJlcGxpY2FEZXB0aCgpIGNvbnN0IHsgcmV0dXJuIG1f
cmVwbGljYURlcHRoOyB9CisKKyAgICAgICAgQ2xvbmVJRCBjbG9uZUlEKCkgY29uc3Q7ICAgICAg
ICAKKworICAgIHByaXZhdGU6CisgICAgICAgIFZlY3RvcjxSZXBsaWNhQnJhbmNoVHlwZT4gbV9y
ZXBsaWNhQnJhbmNoZXM7CisgICAgICAgIHNpemVfdCBtX3JlcGxpY2FEZXB0aDsKKyAgICB9Owor
ICAgIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPnJlcGxpY2F0ZWRMYXllclJvb3QoUmVwbGlj
YVN0YXRlJik7CisKKyAgICBlbnVtIENsb25lTGV2ZWwgeyBSb290Q2xvbmVMZXZlbCwgSW50ZXJt
ZWRpYXRlQ2xvbmVMZXZlbCB9OworICAgIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBmZXRj
aENsb25lTGF5ZXJzKEdyYXBoaWNzTGF5ZXIqIHJlcGxpY2FSb290LCBSZXBsaWNhU3RhdGUmLCBD
bG9uZUxldmVsKTsKKyAgICAKKyAgICBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gY2xvbmVM
YXllcihQbGF0Zm9ybUNBTGF5ZXIgKiwgQ2xvbmVMZXZlbCk7CisgICAgUGFzc1JlZlB0cjxQbGF0
Zm9ybUNBTGF5ZXI+IGZpbmRPck1ha2VDbG9uZShDbG9uZUlELCBQbGF0Zm9ybUNBTGF5ZXIgKiwg
TGF5ZXJNYXAqLCBDbG9uZUxldmVsKTsKKworICAgIHZvaWQgZW5zdXJlQ2xvbmVMYXllcnMoQ2xv
bmVJRCBjbG9uZUlELCBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiYgcHJpbWFyeUxheWVyLCBSZWZQ
dHI8UGxhdGZvcm1DQUxheWVyPiYgc3RydWN0dXJhbExheWVyLCBSZWZQdHI8UGxhdGZvcm1DQUxh
eWVyPiYgY29udGVudHNMYXllciwgQ2xvbmVMZXZlbCBjbG9uZUxldmVsKTsKKworICAgIGJvb2wg
aGFzQ2xvbmVMYXllcnMoKSBjb25zdCB7IHJldHVybiBtX2xheWVyQ2xvbmVzOyB9CisgICAgdm9p
ZCByZW1vdmVDbG9uZUxheWVycygpOworICAgIEZsb2F0UG9pbnQgcG9zaXRpb25Gb3JDbG9uZVJv
b3RMYXllcigpIGNvbnN0OworICAgIAorICAgIHZvaWQgcHJvcGFnYXRlTGF5ZXJDaGFuZ2VUb1Jl
cGxpY2FzKCk7CisgICAgCisgICAgLy8gQWxsIHRoZXNlICJ1cGRhdGUiIG1ldGhvZHMgd2lsbCBi
ZSBjYWxsZWQgaW5zaWRlIGEgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TL0VORF9CTE9DS19P
QkpDX0VYQ0VQVElPTlMgYmxvY2suCisgICAgdm9pZCB1cGRhdGVMYXllck5hbWVzKCk7CisgICAg
dm9pZCB1cGRhdGVTdWJsYXllckxpc3QoKTsKKyAgICB2b2lkIHVwZGF0ZUxheWVyUG9zaXRpb24o
KTsKKyAgICB2b2lkIHVwZGF0ZUxheWVyU2l6ZSgpOworICAgIHZvaWQgdXBkYXRlQW5jaG9yUG9p
bnQoKTsKKyAgICB2b2lkIHVwZGF0ZVRyYW5zZm9ybSgpOworICAgIHZvaWQgdXBkYXRlQ2hpbGRy
ZW5UcmFuc2Zvcm0oKTsKKyAgICB2b2lkIHVwZGF0ZU1hc2tzVG9Cb3VuZHMoKTsKKyAgICB2b2lk
IHVwZGF0ZUNvbnRlbnRzT3BhcXVlKCk7CisgICAgdm9pZCB1cGRhdGVCYWNrZmFjZVZpc2liaWxp
dHkoKTsKKyAgICB2b2lkIHVwZGF0ZVN0cnVjdHVyYWxMYXllcigpOworICAgIHZvaWQgdXBkYXRl
TGF5ZXJEcmF3c0NvbnRlbnQoKTsKKyAgICB2b2lkIHVwZGF0ZUxheWVyQmFja2dyb3VuZENvbG9y
KCk7CisKKyAgICB2b2lkIHVwZGF0ZUNvbnRlbnRzSW1hZ2UoKTsKKyAgICB2b2lkIHVwZGF0ZUNv
bnRlbnRzTWVkaWFMYXllcigpOworICAgIHZvaWQgdXBkYXRlQ29udGVudHNDYW52YXNMYXllcigp
OworICAgIHZvaWQgdXBkYXRlQ29udGVudHNSZWN0KCk7CisgICAgdm9pZCB1cGRhdGVNYXNrTGF5
ZXIoKTsKKyAgICB2b2lkIHVwZGF0ZVJlcGxpY2F0ZWRMYXllcnMoKTsKKworICAgIHZvaWQgdXBk
YXRlTGF5ZXJBbmltYXRpb25zKCk7CisgICAgdm9pZCB1cGRhdGVDb250ZW50c05lZWRzRGlzcGxh
eSgpOworICAgIAorICAgIGVudW0gU3RydWN0dXJhbExheWVyUHVycG9zZSB7CisgICAgICAgIE5v
U3RydWN0dXJhbExheWVyID0gMCwKKyAgICAgICAgU3RydWN0dXJhbExheWVyRm9yUHJlc2VydmVz
M0QsCisgICAgICAgIFN0cnVjdHVyYWxMYXllckZvclJlcGxpY2FGbGF0dGVuaW5nCisgICAgfTsK
KyAgICB2b2lkIGVuc3VyZVN0cnVjdHVyYWxMYXllcihTdHJ1Y3R1cmFsTGF5ZXJQdXJwb3NlKTsK
KyAgICBTdHJ1Y3R1cmFsTGF5ZXJQdXJwb3NlIHN0cnVjdHVyYWxMYXllclB1cnBvc2UoKSBjb25z
dDsKKworICAgIHZvaWQgc2V0QW5pbWF0aW9uT25MYXllcihQbGF0Zm9ybUNBQW5pbWF0aW9uKiwg
QW5pbWF0ZWRQcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGludCBpbmRl
eCwgZG91YmxlIHRpbWVPZmZzZXQpOworICAgIGJvb2wgcmVtb3ZlQ0FBbmltYXRpb25Gcm9tTGF5
ZXIoQW5pbWF0ZWRQcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGludCBp
bmRleCk7CisgICAgdm9pZCBwYXVzZUNBQW5pbWF0aW9uT25MYXllcihBbmltYXRlZFByb3BlcnR5
SUQsIGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSwgaW50IGluZGV4LCBkb3VibGUgdGltZU9m
ZnNldCk7CisKKyAgICBlbnVtIE1vdmVPckNvcHkgeyBNb3ZlLCBDb3B5IH07CisgICAgc3RhdGlj
IHZvaWQgbW92ZU9yQ29weUxheWVyQW5pbWF0aW9uKE1vdmVPckNvcHksIGNvbnN0IFN0cmluZyYg
YW5pbWF0aW9uSWRlbnRpZmllciwgUGxhdGZvcm1DQUxheWVyICpmcm9tTGF5ZXIsIFBsYXRmb3Jt
Q0FMYXllciAqdG9MYXllcik7CisgICAgdm9pZCBtb3ZlT3JDb3B5QW5pbWF0aW9uc0ZvclByb3Bl
cnR5KE1vdmVPckNvcHksIEFuaW1hdGVkUHJvcGVydHlJRCwgUGxhdGZvcm1DQUxheWVyICogZnJv
bUxheWVyLCBQbGF0Zm9ybUNBTGF5ZXIgKiB0b0xheWVyKTsKKyAgICAKKyAgICBlbnVtIExheWVy
Q2hhbmdlIHsKKyAgICAgICAgTm9DaGFuZ2UgPSAwLAorICAgICAgICBOYW1lQ2hhbmdlZCA9IDEg
PDwgMSwKKyAgICAgICAgQ2hpbGRyZW5DaGFuZ2VkID0gMSA8PCAyLCAvLyBhbHNvIHVzZWQgZm9y
IGNvbnRlbnQgbGF5ZXIsIGFuZCBwcmVzZXJ2ZXMtM2QsIGFuZCBzaXplIGlmIHRpbGluZyBjaGFu
Z2VzPworICAgICAgICBQb3NpdGlvbkNoYW5nZWQgPSAxIDw8IDMsCisgICAgICAgIEFuY2hvclBv
aW50Q2hhbmdlZCA9IDEgPDwgNCwKKyAgICAgICAgU2l6ZUNoYW5nZWQgPSAxIDw8IDUsCisgICAg
ICAgIFRyYW5zZm9ybUNoYW5nZWQgPSAxIDw8IDYsCisgICAgICAgIENoaWxkcmVuVHJhbnNmb3Jt
Q2hhbmdlZCA9IDEgPDwgNywKKyAgICAgICAgUHJlc2VydmVzM0RDaGFuZ2VkID0gMSA8PCA4LAor
ICAgICAgICBNYXNrc1RvQm91bmRzQ2hhbmdlZCA9IDEgPDwgOSwKKyAgICAgICAgRHJhd3NDb250
ZW50Q2hhbmdlZCA9IDEgPDwgMTAsIC8vIG5lZWQgdGhpcz8KKyAgICAgICAgQmFja2dyb3VuZENv
bG9yQ2hhbmdlZCA9IDEgPDwgMTEsCisgICAgICAgIENvbnRlbnRzT3BhcXVlQ2hhbmdlZCA9IDEg
PDwgMTIsCisgICAgICAgIEJhY2tmYWNlVmlzaWJpbGl0eUNoYW5nZWQgPSAxIDw8IDEzLAorICAg
ICAgICBPcGFjaXR5Q2hhbmdlZCA9IDEgPDwgMTQsCisgICAgICAgIEFuaW1hdGlvbkNoYW5nZWQg
PSAxIDw8IDE1LAorICAgICAgICBEaXJ0eVJlY3RzQ2hhbmdlZCA9IDEgPDwgMTYsCisgICAgICAg
IENvbnRlbnRzSW1hZ2VDaGFuZ2VkID0gMSA8PCAxNywKKyAgICAgICAgQ29udGVudHNNZWRpYUxh
eWVyQ2hhbmdlZCA9IDEgPDwgMTgsCisgICAgICAgIENvbnRlbnRzQ2FudmFzTGF5ZXJDaGFuZ2Vk
ID0gMSA8PCAxOSwKKyAgICAgICAgQ29udGVudHNSZWN0Q2hhbmdlZCA9IDEgPDwgMjAsCisgICAg
ICAgIE1hc2tMYXllckNoYW5nZWQgPSAxIDw8IDIxLAorICAgICAgICBSZXBsaWNhdGVkTGF5ZXJD
aGFuZ2VkID0gMSA8PCAyMiwKKyAgICAgICAgQ29udGVudHNOZWVkc0Rpc3BsYXkgPSAxIDw8IDIz
CisgICAgfTsKKyAgICB0eXBlZGVmIHVuc2lnbmVkIExheWVyQ2hhbmdlRmxhZ3M7CisgICAgdm9p
ZCBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoTGF5ZXJDaGFuZ2VGbGFncyBmbGFncyk7CisgICAg
dm9pZCBub3RlU3VibGF5ZXJzQ2hhbmdlZCgpOworCisgICAgdm9pZCByZXBhaW50TGF5ZXJEaXJ0
eVJlY3RzKCk7CisKKyAgICBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBtX2xheWVyOyAvLyBUaGUg
bWFpbiBsYXllcgorICAgIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IG1fc3RydWN0dXJhbExheWVy
OyAvLyBBIGxheWVyIHVzZWQgZm9yIHN0cnVjdHVyYWwgcmVhc29ucywgbGlrZSBwcmVzZXJ2ZXMt
M2Qgb3IgcmVwbGljYS1mbGF0dGVuaW5nLiBJcyB0aGUgcGFyZW50IG9mIG1fbGF5ZXIuCisgICAg
UmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gbV9jb250ZW50c0xheWVyOyAvLyBBIGxheWVyIHVzZWQg
Zm9yIGlubmVyIGNvbnRlbnQsIGxpa2UgaW1hZ2UgYW5kIHZpZGVvCisKKyAgICAvLyBSZWZlcmVu
Y2VzIHRvIGNsb25lcyBvZiBvdXIgbGF5ZXJzLCBmb3IgcmVwbGljYXRlZCBsYXllcnMuCisgICAg
T3duUHRyPExheWVyTWFwPiBtX2xheWVyQ2xvbmVzOworICAgIE93blB0cjxMYXllck1hcD4gbV9z
dHJ1Y3R1cmFsTGF5ZXJDbG9uZXM7CisgICAgT3duUHRyPExheWVyTWFwPiBtX2NvbnRlbnRzTGF5
ZXJDbG9uZXM7CisgICAgCisgICAgZW51bSBDb250ZW50c0xheWVyUHVycG9zZSB7CisgICAgICAg
IE5vQ29udGVudHNMYXllciA9IDAsCisgICAgICAgIENvbnRlbnRzTGF5ZXJGb3JJbWFnZSwKKyAg
ICAgICAgQ29udGVudHNMYXllckZvck1lZGlhLAorICAgICAgICBDb250ZW50c0xheWVyRm9yQ2Fu
dmFzCisgICAgfTsKKyAgICAKKyAgICBDb250ZW50c0xheWVyUHVycG9zZSBtX2NvbnRlbnRzTGF5
ZXJQdXJwb3NlOworICAgIGJvb2wgbV9jb250ZW50c0xheWVySGFzQmFja2dyb3VuZENvbG9yIDog
MTsKKworICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBtX3VuY29ycmVjdGVkQ29udGVudHNJbWFn
ZTsKKyAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gbV9wZW5kaW5nQ29udGVudHNJbWFnZTsKKyAg
ICAKKyAgICAvLyBUaGlzIHJlcHJlc2VudHMgdGhlIGFuaW1hdGlvbiBvZiBhIHNpbmdsZSBwcm9w
ZXJ0eS4gVGhlcmUgbWF5IGJlIG11bHRpcGxlIHRyYW5zZm9ybSBhbmltYXRpb25zIGZvcgorICAg
IC8vIGEgc2luZ2xlIHRyYW5zaXRpb24gb3Iga2V5ZnJhbWUgYW5pbWF0aW9uLCBzbyBpbmRleCBp
cyB1c2VkIHRvIGRpc3Rpbmd1aXNoIHRoZXNlLgorICAgIHN0cnVjdCBMYXllclByb3BlcnR5QW5p
bWF0aW9uIHsKKyAgICAgICAgTGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbihQYXNzUmVmUHRyPFBsYXRm
b3JtQ0FBbmltYXRpb24+IGNhQW5pbWF0aW9uLCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUs
IEFuaW1hdGVkUHJvcGVydHlJRCBwcm9wZXJ0eSwgaW50IGluZGV4LCBkb3VibGUgdGltZU9mZnNl
dCkKKyAgICAgICAgOiBtX2FuaW1hdGlvbihjYUFuaW1hdGlvbikKKyAgICAgICAgLCBtX25hbWUo
YW5pbWF0aW9uTmFtZSkKKyAgICAgICAgLCBtX3Byb3BlcnR5KHByb3BlcnR5KQorICAgICAgICAs
IG1faW5kZXgoaW5kZXgpCisgICAgICAgICwgbV90aW1lT2Zmc2V0KHRpbWVPZmZzZXQpCisgICAg
ICAgIHsgfQorCisgICAgICAgIFJlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBtX2FuaW1hdGlv
bjsKKyAgICAgICAgU3RyaW5nIG1fbmFtZTsKKyAgICAgICAgQW5pbWF0ZWRQcm9wZXJ0eUlEIG1f
cHJvcGVydHk7CisgICAgICAgIGludCBtX2luZGV4OworICAgICAgICBkb3VibGUgbV90aW1lT2Zm
c2V0OworICAgIH07CisgICAgCisgICAgLy8gVW5jb21taXR0ZWQgdHJhbnNpdGlvbnMgYW5kIGFu
aW1hdGlvbnMuCisgICAgVmVjdG9yPExheWVyUHJvcGVydHlBbmltYXRpb24+IG1fdW5jb21pdHRl
ZEFuaW1hdGlvbnM7CisgICAgCisgICAgZW51bSBBY3Rpb24geyBSZW1vdmUsIFBhdXNlIH07Cisg
ICAgc3RydWN0IEFuaW1hdGlvblByb2Nlc3NpbmdBY3Rpb24geworICAgICAgICBBbmltYXRpb25Q
cm9jZXNzaW5nQWN0aW9uKEFjdGlvbiBhY3Rpb24gPSBSZW1vdmUsIGRvdWJsZSB0aW1lT2Zmc2V0
ID0gMCkKKyAgICAgICAgICAgIDogYWN0aW9uKGFjdGlvbikKKyAgICAgICAgICAgICwgdGltZU9m
ZnNldCh0aW1lT2Zmc2V0KQorICAgICAgICB7CisgICAgICAgIH0KKyAgICAgICAgQWN0aW9uIGFj
dGlvbjsKKyAgICAgICAgZG91YmxlIHRpbWVPZmZzZXQ7IC8vIG9ubHkgdXNlZCBmb3IgcGF1c2UK
KyAgICB9OworICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIEFuaW1hdGlvblByb2Nlc3NpbmdB
Y3Rpb24+IEFuaW1hdGlvbnNUb1Byb2Nlc3NNYXA7CisgICAgQW5pbWF0aW9uc1RvUHJvY2Vzc01h
cCBtX2FuaW1hdGlvbnNUb1Byb2Nlc3M7CisKKyAgICAvLyBNYXAgb2YgYW5pbWF0aW9uIG5hbWVz
IHRvIHRoZWlyIGFzc29jaWF0ZWQgbGlzdHMgb2YgcHJvcGVydHkgYW5pbWF0aW9ucywgc28gd2Ug
Y2FuIHJlbW92ZS9wYXVzZSB0aGVtLgorICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFZlY3Rv
cjxMYXllclByb3BlcnR5QW5pbWF0aW9uPiA+IEFuaW1hdGlvbnNNYXA7CisgICAgQW5pbWF0aW9u
c01hcCBtX3J1bm5pbmdBbmltYXRpb25zOworCisgICAgVmVjdG9yPEZsb2F0UmVjdD4gbV9kaXJ0
eVJlY3RzOworICAgIAorICAgIExheWVyQ2hhbmdlRmxhZ3MgbV91bmNvbW1pdHRlZENoYW5nZXM7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKworI2VuZGlmIC8vIFVTRShBQ0NFTEVS
QVRFRF9DT01QT1NJVElORykKKworI2VuZGlmIC8vIEdyYXBoaWNzTGF5ZXJDQV9oCkluZGV4OiBX
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FBbmltYXRpb24uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FBbmltYXRpb24u
aAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1D
QUFuaW1hdGlvbi5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1NCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBQbGF0
Zm9ybUNBQW5pbWF0aW9uX2gKKyNkZWZpbmUgUGxhdGZvcm1DQUFuaW1hdGlvbl9oCisKKyNpZiBV
U0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisKKyNpbmNsdWRlICJDb2xvci5oIgorI2luY2x1
ZGUgIkZsb2F0UG9pbnQzRC5oIgorI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCisj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Cisj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCisjaWYgUExBVEZPUk0oTUFDKQorI2lmZGVmIF9fT0JK
Q19fCitAY2xhc3MgQ0FQcm9wZXJ0eUFuaW1hdGlvbjsKKyNlbHNlCit0eXBlZGVmIHZvaWQqIENB
UHJvcGVydHlBbmltYXRpb247CisjZW5kaWYKKyNlbGlmIFBMQVRGT1JNKFdJTikKK3R5cGVkZWYg
c3RydWN0IF9DQUNGQW5pbWF0aW9uICpDQUNGQW5pbWF0aW9uUmVmOworI2VuZGlmCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRmxvYXRSZWN0OworY2xhc3MgUGxhdGZvcm1DQUFuaW1h
dGlvbjsKK2NsYXNzIFRpbWluZ0Z1bmN0aW9uOworCitjbGFzcyBQbGF0Zm9ybUNBQW5pbWF0aW9u
IDogcHVibGljIFJlZkNvdW50ZWQ8UGxhdGZvcm1DQUFuaW1hdGlvbj4geworcHVibGljOgorICAg
IGZyaWVuZCBjbGFzcyBQbGF0Zm9ybUNBTGF5ZXI7CisgICAgCisgICAgZW51bSBBbmltYXRpb25U
eXBlIHsgQmFzaWMsIEtleWZyYW1lIH07CisgICAgZW51bSBGaWxsTW9kZVR5cGUgeyBOb0ZpbGxN
b2RlLCBGb3J3YXJkcywgQmFja3dhcmRzLCBCb3RoIH07CisgICAgZW51bSBWYWx1ZUZ1bmN0aW9u
VHlwZSB7IE5vVmFsdWVGdW5jdGlvbiwgUm90YXRlWCwgUm90YXRlWSwgUm90YXRlWiwgU2NhbGVY
LCBTY2FsZVksIFNjYWxlWiwgU2NhbGUsIFRyYW5zbGF0ZVgsIFRyYW5zbGF0ZVksIFRyYW5zbGF0
ZVosIFRyYW5zbGF0ZSB9OworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUFuaW1h
dGlvbj4gY3JlYXRlKEFuaW1hdGlvblR5cGUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCk7CisgICAg
c3RhdGljIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gY3JlYXRlKHZvaWQqIGFuaW1h
dGlvbik7CisKKyAgICB+UGxhdGZvcm1DQUFuaW1hdGlvbigpOworICAgIAorICAgIHN0YXRpYyBi
b29sIHN1cHBvcnRzVmFsdWVGdW5jdGlvbigpOworICAgIAorICAgIHZvaWQqIHBsYXRmb3JtQW5p
bWF0aW9uKCkgY29uc3Q7CisgICAgCisgICAgQW5pbWF0aW9uVHlwZSBhbmltYXRpb25UeXBlKCkg
Y29uc3QgeyByZXR1cm4gbV90eXBlOyB9CisgICAgU3RyaW5nIGtleVBhdGgoKSBjb25zdDsKKyAg
ICAKKyAgICBib29sIG5vblplcm9CZWdpblRpbWVGbGFnKCkgY29uc3Q7CisgICAgdm9pZCBzZXRO
b25aZXJvQmVnaW5UaW1lRmxhZyhib29sIHZhbHVlKTsKKyAgICAKKyAgICBDRlRpbWVJbnRlcnZh
bCBiZWdpblRpbWUoKSBjb25zdDsKKyAgICB2b2lkIHNldEJlZ2luVGltZShDRlRpbWVJbnRlcnZh
bCk7CisgICAgCisgICAgQ0ZUaW1lSW50ZXJ2YWwgZHVyYXRpb24oKSBjb25zdDsKKyAgICB2b2lk
IHNldER1cmF0aW9uKENGVGltZUludGVydmFsKTsKKyAgICAKKyAgICBmbG9hdCBzcGVlZCgpIGNv
bnN0OworICAgIHZvaWQgc2V0U3BlZWQoZmxvYXQpOworCisgICAgQ0ZUaW1lSW50ZXJ2YWwgdGlt
ZU9mZnNldCgpIGNvbnN0OworICAgIHZvaWQgc2V0VGltZU9mZnNldChDRlRpbWVJbnRlcnZhbCk7
CisKKyAgICBmbG9hdCByZXBlYXRDb3VudCgpIGNvbnN0OworICAgIHZvaWQgc2V0UmVwZWF0Q291
bnQoZmxvYXQpOworCisgICAgYm9vbCBhdXRvcmV2ZXJzZXMoKSBjb25zdDsKKyAgICB2b2lkIHNl
dEF1dG9yZXZlcnNlcyhib29sKTsKKworICAgIEZpbGxNb2RlVHlwZSBmaWxsTW9kZSgpIGNvbnN0
OworICAgIHZvaWQgc2V0RmlsbE1vZGUoRmlsbE1vZGVUeXBlKTsKKyAgICAKKyAgICB2b2lkIHNl
dFRpbWluZ0Z1bmN0aW9uKGNvbnN0IFRpbWluZ0Z1bmN0aW9uKik7CisgICAgdm9pZCBjb3B5VGlt
aW5nRnVuY3Rpb25Gcm9tKGNvbnN0IFBsYXRmb3JtQ0FBbmltYXRpb24qKTsKKworICAgIGJvb2wg
aXNSZW1vdmVkT25Db21wbGV0aW9uKCkgY29uc3Q7CisgICAgdm9pZCBzZXRSZW1vdmVkT25Db21w
bGV0aW9uKGJvb2wpOworCisgICAgYm9vbCBpc0FkZGl0aXZlKCkgY29uc3Q7CisgICAgdm9pZCBz
ZXRBZGRpdGl2ZShib29sKTsKKworICAgIFZhbHVlRnVuY3Rpb25UeXBlIHZhbHVlRnVuY3Rpb24o
KSBjb25zdDsKKyAgICB2b2lkIHNldFZhbHVlRnVuY3Rpb24oVmFsdWVGdW5jdGlvblR5cGUpOwor
CisgICAgLy8gQmFzaWMtYW5pbWF0aW9uIHByb3BlcnRpZXMuCisgICAgdm9pZCBzZXRGcm9tVmFs
dWUoZmxvYXQpOworICAgIHZvaWQgc2V0RnJvbVZhbHVlKGNvbnN0IFdlYkNvcmU6OlRyYW5zZm9y
bWF0aW9uTWF0cml4Jik7CisgICAgdm9pZCBzZXRGcm9tVmFsdWUoY29uc3QgRmxvYXRQb2ludDNE
Jik7CisgICAgdm9pZCBzZXRGcm9tVmFsdWUoY29uc3QgV2ViQ29yZTo6Q29sb3ImKTsKKyAgICB2
b2lkIGNvcHlGcm9tVmFsdWVGcm9tKGNvbnN0IFBsYXRmb3JtQ0FBbmltYXRpb24qKTsKKworICAg
IHZvaWQgc2V0VG9WYWx1ZShmbG9hdCk7CisgICAgdm9pZCBzZXRUb1ZhbHVlKGNvbnN0IFdlYkNv
cmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4Jik7CisgICAgdm9pZCBzZXRUb1ZhbHVlKGNvbnN0IEZs
b2F0UG9pbnQzRCYpOworICAgIHZvaWQgc2V0VG9WYWx1ZShjb25zdCBXZWJDb3JlOjpDb2xvciYp
OworICAgIHZvaWQgY29weVRvVmFsdWVGcm9tKGNvbnN0IFBsYXRmb3JtQ0FBbmltYXRpb24qKTsK
KworICAgIC8vIEtleWZyYW1lLWFuaW1hdGlvbiBwcm9wZXJ0aWVzLgorICAgIHZvaWQgc2V0VmFs
dWVzKGNvbnN0IFZlY3RvcjxmbG9hdD4mKTsKKyAgICB2b2lkIHNldFZhbHVlcyhjb25zdCBWZWN0
b3I8V2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg+Jik7CisgICAgdm9pZCBzZXRWYWx1ZXMo
Y29uc3QgVmVjdG9yPEZsb2F0UG9pbnQzRD4mKTsKKyAgICB2b2lkIHNldFZhbHVlcyhjb25zdCBW
ZWN0b3I8V2ViQ29yZTo6Q29sb3I+Jik7CisgICAgdm9pZCBjb3B5VmFsdWVzRnJvbShjb25zdCBQ
bGF0Zm9ybUNBQW5pbWF0aW9uKik7CisKKyAgICB2b2lkIHNldEtleVRpbWVzKGNvbnN0IFZlY3Rv
cjxmbG9hdD4mKTsKKyAgICB2b2lkIGNvcHlLZXlUaW1lc0Zyb20oY29uc3QgUGxhdGZvcm1DQUFu
aW1hdGlvbiopOworCisgICAgdm9pZCBzZXRUaW1pbmdGdW5jdGlvbnMoY29uc3QgVmVjdG9yPGNv
bnN0IFRpbWluZ0Z1bmN0aW9uKj4mKTsKKyAgICB2b2lkIGNvcHlUaW1pbmdGdW5jdGlvbnNGcm9t
KGNvbnN0IFBsYXRmb3JtQ0FBbmltYXRpb24qKTsKKyAgICAKK3Byb3RlY3RlZDoKKyAgICBQbGF0
Zm9ybUNBQW5pbWF0aW9uKEFuaW1hdGlvblR5cGUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCk7Cisg
ICAgUGxhdGZvcm1DQUFuaW1hdGlvbih2b2lkKiBhbmltYXRpb24pOworICAgIAorcHJpdmF0ZToK
KyAgICBBbmltYXRpb25UeXBlIG1fdHlwZTsKKyAgICAKKyNpZiBQTEFURk9STShNQUMpCisgICAg
UmV0YWluUHRyPENBUHJvcGVydHlBbmltYXRpb24+IG1fYW5pbWF0aW9uOworI2VsaWYgUExBVEZP
Uk0oV0lOKQorICAgIFJldGFpblB0cjxDQUNGQW5pbWF0aW9uUmVmPiBtX2FuaW1hdGlvbjsKKyNl
bmRpZgorfTsKKworfQorCisjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQor
CisjZW5kaWYgLy8gUGxhdGZvcm1DQUFuaW1hdGlvbl9oCkluZGV4OiBXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuY3BwCShyZXZpc2lvbiAwKQorKysg
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuY3BwCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDE1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgVVNFKEFD
Q0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorCisjaW5jbHVkZSAiUGxhdGZvcm1DQUxheWVyLmgiCisK
KyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit1c2luZyBu
YW1lc3BhY2Ugc3RkOworCitQbGF0Zm9ybUNBTGF5ZXIqIFBsYXRmb3JtQ0FMYXllcjo6cm9vdExh
eWVyKCkgY29uc3QKK3sKKyAgICBQbGF0Zm9ybUNBTGF5ZXIqIGxheWVyID0gY29uc3RfY2FzdDxQ
bGF0Zm9ybUNBTGF5ZXIqPih0aGlzKTsKKyAgICBmb3IgKFBsYXRmb3JtQ0FMYXllciogc3VwZXJs
YXllciA9IGxheWVyLT5zdXBlcmxheWVyKCk7IHN1cGVybGF5ZXI7IGxheWVyID0gc3VwZXJsYXll
ciwgc3VwZXJsYXllciA9IHN1cGVybGF5ZXItPnN1cGVybGF5ZXIoKSkgeyB9CisgICAgcmV0dXJu
IGxheWVyOworfQorCisjaWZuZGVmIE5ERUJVRworc3RhdGljIHZvaWQgcHJpbnRJbmRlbnQoaW50
IGluZGVudCkKK3sKKyAgICBmb3IgKCA7IGluZGVudCA+IDA7IC0taW5kZW50KQorICAgICAgICBm
cHJpbnRmKHN0ZGVyciwgIiAgIik7Cit9CisKK3N0YXRpYyB2b2lkIHByaW50VHJhbnNmb3JtKGNv
bnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0pCit7CisgICAgZnByaW50ZihzdGRl
cnIsICJbJWcgJWcgJWcgJWc7ICVnICVnICVnICVnOyAlZyAlZyAlZyAlZzsgJWcgJWcgJWcgJWdd
IiwKKyAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtLm0xMSgpLCB0cmFuc2Zvcm0ubTEyKCks
IHRyYW5zZm9ybS5tMTMoKSwgdHJhbnNmb3JtLm0xNCgpLCAKKyAgICAgICAgICAgICAgICAgICAg
dHJhbnNmb3JtLm0yMSgpLCB0cmFuc2Zvcm0ubTIyKCksIHRyYW5zZm9ybS5tMjMoKSwgdHJhbnNm
b3JtLm0yNCgpLCAKKyAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtLm0zMSgpLCB0cmFuc2Zv
cm0ubTMyKCksIHRyYW5zZm9ybS5tMzMoKSwgdHJhbnNmb3JtLm0zNCgpLCAKKyAgICAgICAgICAg
ICAgICAgICAgdHJhbnNmb3JtLm00MSgpLCB0cmFuc2Zvcm0ubTQyKCksIHRyYW5zZm9ybS5tNDMo
KSwgdHJhbnNmb3JtLm00NCgpKTsKK30KKwordm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OnByaW50VHJl
ZSgpIGNvbnN0Cit7CisgICAgLy8gUHJpbnQgaGVhZGluZyBpbmZvCisgICAgQ0dSZWN0IHJvb3RC
b3VuZHMgPSBib3VuZHMoKTsKKyAgICBmcHJpbnRmKHN0ZGVyciwgIlxuXG4qKiBSZW5kZXIgdHJl
ZSBhdCB0aW1lICVnIChib3VuZHMgJWcsICVnICVneCVnKSAqKlxuXG4iLCAKKyAgICAgICAgY3Vy
cmVudFRpbWUoKSwgcm9vdEJvdW5kcy5vcmlnaW4ueCwgcm9vdEJvdW5kcy5vcmlnaW4ueSwgcm9v
dEJvdW5kcy5zaXplLndpZHRoLCByb290Qm91bmRzLnNpemUuaGVpZ2h0KTsKKworICAgIC8vIFBy
aW50IGxheWVyIHRyZWUgZnJvbSB0aGUgcm9vdAorICAgIHByaW50TGF5ZXIoMCk7Cit9CisKK3Zv
aWQgUGxhdGZvcm1DQUxheWVyOjpwcmludExheWVyKGludCBpbmRlbnQpIGNvbnN0Cit7CisgICAg
Q0dQb2ludCBsYXllclBvc2l0aW9uID0gcG9zaXRpb24oKTsKKyAgICBDR1BvaW50IGxheWVyQW5j
aG9yUG9pbnQgPSBhbmNob3JQb2ludCgpOworICAgIENHUmVjdCBsYXllckJvdW5kcyA9IGJvdW5k
cygpOworICAgIHByaW50SW5kZW50KGluZGVudCk7CisgICAgZnByaW50ZihzdGRlcnIsICIoJXMg
WyVnICVnICVnXSBbJWcgJWcgJWcgJWddIFslZyAlZyAlZ10gc3VwZXJsYXllcj0lcFxuIiwKKyAg
ICAgICAgaXNUcmFuc2Zvcm1MYXllcigpID8gInRyYW5zZm9ybS1sYXllciIgOiAibGF5ZXIiLAor
ICAgICAgICBsYXllclBvc2l0aW9uLngsIGxheWVyUG9zaXRpb24ueSwgelBvc2l0aW9uKCksIAor
ICAgICAgICBsYXllckJvdW5kcy5vcmlnaW4ueCwgbGF5ZXJCb3VuZHMub3JpZ2luLnksIGxheWVy
Qm91bmRzLnNpemUud2lkdGgsIGxheWVyQm91bmRzLnNpemUuaGVpZ2h0LAorICAgICAgICBsYXll
ckFuY2hvclBvaW50LngsIGxheWVyQW5jaG9yUG9pbnQueSwgYW5jaG9yUG9pbnRaKCksIHN1cGVy
bGF5ZXIoKSk7CisKKyAgICAvLyBQcmludCBuYW1lIGlmIG5lZWRlZAorICAgIFN0cmluZyBsYXll
ck5hbWUgPSBuYW1lKCk7CisgICAgaWYgKCFsYXllck5hbWUuaXNFbXB0eSgpKSB7CisgICAgICAg
IHByaW50SW5kZW50KGluZGVudCArIDEpOworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIihuYW1l
ICVzKVxuIiwgbGF5ZXJOYW1lLnV0ZjgoKS5kYXRhKCkpOworICAgIH0KKworICAgIC8vIFByaW50
IG1hc2tzVG9Cb3VuZHMgaWYgbmVlZGVkCisgICAgYm9vbCBsYXllck1hc2tzVG9Cb3VuZHMgPSBt
YXNrc1RvQm91bmRzKCk7CisgICAgaWYgKGxheWVyTWFza3NUb0JvdW5kcykgeworICAgICAgICBw
cmludEluZGVudChpbmRlbnQgKyAxKTsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICIobWFza3NU
b0JvdW5kcyB0cnVlKVxuIik7CisgICAgfQorCisgICAgLy8gUHJpbnQgb3BhY2l0eSBpZiBuZWVk
ZWQKKyAgICBmbG9hdCBsYXllck9wYWNpdHkgPSBvcGFjaXR5KCk7CisgICAgaWYgKGxheWVyT3Bh
Y2l0eSAhPSAxKSB7CisgICAgICAgIHByaW50SW5kZW50KGluZGVudCArIDEpOworICAgICAgICBm
cHJpbnRmKHN0ZGVyciwgIihvcGFjaXR5ICVmKVxuIiwgbGF5ZXJPcGFjaXR5KTsKKyAgICB9CisK
KyAgICAvLyBQcmludCBzdWJsYXllclRyYW5zZm9ybSBpZiBuZWVkZWQKKyAgICBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCBsYXllclRyYW5zZm9ybSA9IHN1YmxheWVyVHJhbnNmb3JtKCk7CisgICAgaWYg
KCFsYXllclRyYW5zZm9ybS5pc0lkZW50aXR5KCkpIHsKKyAgICAgICAgcHJpbnRJbmRlbnQoaW5k
ZW50ICsgMSk7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiKHN1YmxheWVyVHJhbnNmb3JtICIp
OworICAgICAgICBwcmludFRyYW5zZm9ybShsYXllclRyYW5zZm9ybSk7CisgICAgICAgIGZwcmlu
dGYoc3RkZXJyLCAiKVxuIik7CisgICAgfQorCisgICAgLy8gUHJpbnQgdHJhbnNmb3JtIGlmIG5l
ZWRlZAorICAgIGxheWVyVHJhbnNmb3JtID0gdHJhbnNmb3JtKCk7CisgICAgaWYgKCFsYXllclRy
YW5zZm9ybS5pc0lkZW50aXR5KCkpIHsKKyAgICAgICAgcHJpbnRJbmRlbnQoaW5kZW50ICsgMSk7
CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiKHRyYW5zZm9ybSAiKTsKKyAgICAgICAgcHJpbnRU
cmFuc2Zvcm0obGF5ZXJUcmFuc2Zvcm0pOworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIilcbiIp
OworICAgIH0KKworICAgIC8vIFByaW50IGNvbnRlbnRzIGlmIG5lZWRlZAorICAgIENGVHlwZVJl
ZiBsYXllckNvbnRlbnRzID0gY29udGVudHMoKTsKKyAgICBpZiAobGF5ZXJDb250ZW50cykgewor
ICAgICAgICBpZiAoQ0ZHZXRUeXBlSUQobGF5ZXJDb250ZW50cykgPT0gQ0dJbWFnZUdldFR5cGVJ
RCgpKSB7CisgICAgICAgICAgICBDR0ltYWdlUmVmIGltYWdlQ29udGVudHMgPSBzdGF0aWNfY2Fz
dDxDR0ltYWdlUmVmPihjb25zdF9jYXN0PHZvaWQqPihsYXllckNvbnRlbnRzKSk7CisgICAgICAg
ICAgICBwcmludEluZGVudChpbmRlbnQgKyAxKTsKKyAgICAgICAgICAgIGZwcmludGYoc3RkZXJy
LCAiKGNvbnRlbnRzIChpbWFnZSBbJWQgJWRdKSlcbiIsCisgICAgICAgICAgICAgICAgQ0dJbWFn
ZUdldFdpZHRoKGltYWdlQ29udGVudHMpLCBDR0ltYWdlR2V0SGVpZ2h0KGltYWdlQ29udGVudHMp
KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIFByaW50IHN1YmxheWVycyBpZiBuZWVkZWQK
KyAgICBpbnQgbiA9IHN1YmxheWVyQ291bnQoKTsKKyAgICBpZiAobiA+IDApIHsKKyAgICAgICAg
cHJpbnRJbmRlbnQoaW5kZW50ICsgMSk7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiKHN1Ymxh
eWVyc1xuIik7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgKytpKQorICAgICAgICAg
ICAgc3VibGF5ZXJBdEluZGV4KGkpLT5wcmludExheWVyKGluZGVudCArIDIpOworCisgICAgICAg
IHByaW50SW5kZW50KGluZGVudCArIDEpOworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIilcbiIp
OworICAgIH0KKworICAgIHByaW50SW5kZW50KGluZGVudCk7CisgICAgZnByaW50ZihzdGRlcnIs
ICIpXG4iKTsKK30KKyNlbmRpZiAvLyAjaWZuZGVmIE5ERUJVRworfQorCisjZW5kaWYgLy8gVVNF
KEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwyMDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBV
VEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICovCisKKyNpZm5kZWYgUGxhdGZvcm1DQUxheWVyX2gKKyNkZWZpbmUgUGxhdGZvcm1DQUxh
eWVyX2gKKworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKworI2luY2x1ZGUgIkdy
YXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDQS5oIgorI2luY2x1ZGUg
IlBsYXRmb3JtQ0FBbmltYXRpb24uaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFBsYXRmb3JtQ0FMYXllcjsKKwordHlwZWRlZiBW
ZWN0b3I8UmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gPiBQbGF0Zm9ybUNBTGF5ZXJMaXN0OworCitj
bGFzcyBQbGF0Zm9ybUNBTGF5ZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxQbGF0Zm9ybUNBTGF5ZXI+
IHsKK3B1YmxpYzoKKyAgICAvLyBGSVhNRTogVGhpcyBvYmplY3QgcmVwcmVzZW50cyBhbGwgTGF5
ZXIgdHlwZXMgdXNlZCBpbiBHcmFwaGljc0xheWVyLCBhbmQgdGhvc2UgdXNlZCBieSB2aWRlbyBh
bmQgY2FudmFzLgorICAgIC8vCisgICAgLy8gVGlsZWRMYXllciB1c2VkIGluIEdyYXBoaWNzTGF5
ZXIgaGFzIGNvbnN0YW50IHNldHRpbmdzOgorICAgIC8vICAgICAgY1RpbGVkTGF5ZXJUaWxlU2l6
ZSA9IDUxMgorICAgIC8vICAgICAgc2V0VGlsZVNpemU6KGNUaWxlZExheWVyVGlsZVNpemUsIGNU
aWxlZExheWVyVGlsZVNpemUpCisgICAgLy8gICAgICBzZXRMZXZlbHNPZkRldGFpbDoxCisgICAg
Ly8gICAgICBzZXRMZXZlbHNPZkRldGFpbEJpYXM6MAorICAgIC8vICAgICAgc2V0Q29udGVudHNH
cmF2aXR5OkAiYm90dG9tTGVmdCIKKyAgICAvLworICAgIC8vIFRpbGVkTGF5ZXIgYWxzbyBoYXMg
ZHJhd2luZyBmdW5jdGlvbnMgbGlrZSBXZWJMYXllcgorICAgIC8vCisgICAgLy8gV2ViTGF5ZXIg
aXMgYSBDQUxheWVyIHdpdGggZHJhd2luZyBmdW5jdGlvbnMgc3BlY2lmaWMgdG8gV2ViS2l0Cisg
ICAgLy8KKyAgICAvLyBMYXllciBhbmQgVHJhbnNmb3JtTGF5ZXIgYXJlIHVzZWQgYXMgaXMKKyAg
ICAvLworICAgIC8vIEZJWE1FOiB0dXJuIG9mZiBpbXBsaWNpdCBhbmltYXRpb24gaW4gY3Rvcgor
CisgICAgZW51bSBMYXllclR5cGUgeyBMYXllclR5cGVMYXllciwgTGF5ZXJUeXBlV2ViTGF5ZXIs
IExheWVyVHlwZVRyYW5zZm9ybUxheWVyLCBMYXllclR5cGVXZWJUaWxlZExheWVyLCBMYXllclR5
cGVDdXN0b20gfTsKKyAgICBlbnVtIEZpbHRlclR5cGUgeyBMaW5lYXIsIE5lYXJlc3QsIFRyaWxp
bmVhciB9OworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBjcmVhdGUo
TGF5ZXJUeXBlLCBHcmFwaGljc0xheWVyQ0EqKTsKKyAgICAKKyAgICAvLyBUaGlzIGZ1bmN0aW9u
IHBhc3NlcyB0aGUgbGF5ZXIgYXMgYSB2b2lkKiByYXRoZXIgdGhhbiBhIFBsYXRmb3JtTGF5ZXIg
YmVjYXVzZSBQbGF0Zm9ybUxheWVyCisgICAgLy8gaXMgZGVmaW5lZCBkaWZmZXJlbnRseSBmb3Ig
T2JqIEMgYW5kIEMrKy4gVGhpcyBhbGxvd3MgY2FsbGVycyBmcm9tIGJvdGggbGFuZ3VhZ2VzLgor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gY3JlYXRlKHZvaWQqIHBsYXRm
b3JtTGF5ZXIsIEdyYXBoaWNzTGF5ZXJDQSopOworCisgICAgflBsYXRmb3JtQ0FMYXllcigpOwor
ICAgIAorICAgIC8vIFRoaXMgZnVuY3Rpb24gcGFzc2VzIHRoZSBsYXllciBhcyBhIHZvaWQqIHJh
dGhlciB0aGFuIGEgUGxhdGZvcm1MYXllciBiZWNhdXNlIFBsYXRmb3JtTGF5ZXIKKyAgICAvLyBp
cyBkZWZpbmVkIGRpZmZlcmVudGx5IGZvciBPYmogQyBhbmQgQysrLiBUaGlzIGFsbG93cyBjYWxs
ZXJzIGZyb20gYm90aCBsYW5ndWFnZXMuCisgICAgc3RhdGljIFBsYXRmb3JtQ0FMYXllciogcGxh
dGZvcm1DQUxheWVyKHZvaWQqIHBsYXRmb3JtTGF5ZXIpOworICAgIAorICAgIFBsYXRmb3JtTGF5
ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdDsKKyAgICAKKyAgICBzdGF0aWMgYm9vbCBpc1ZhbHVl
RnVuY3Rpb25TdXBwb3J0ZWQoKTsKKyAgICAKKyAgICBHcmFwaGljc0xheWVyQ0EqIG93bmVyKCkg
Y29uc3QgeyByZXR1cm4gbV9vd25lcjsgfQorICAgIHZvaWQgc2V0T3duZXIoR3JhcGhpY3NMYXll
ckNBKiBvd25lcik7CisKKyAgICB2b2lkIGFuaW1hdGlvblN0YXJ0ZWQoQ0ZUaW1lSW50ZXJ2YWwg
YmVnaW5UaW1lKQorICAgIHsKKyAgICAgICAgaWYgKG1fb3duZXIpCisgICAgICAgICAgICBtX293
bmVyLT5hbmltYXRpb25TdGFydGVkKGJlZ2luVGltZSk7CisgICAgfQorCisgICAgdm9pZCBzZXRO
ZWVkc0Rpc3BsYXkoY29uc3QgRmxvYXRSZWN0KiBkaXJ0eVJlY3QgPSAwKTsKKyAgICAKKyAgICB2
b2lkIHNldENvbnRlbnRzQ2hhbmdlZCgpOworICAgIAorICAgIExheWVyVHlwZSBsYXllclR5cGUo
KSBjb25zdCB7IHJldHVybiBtX2xheWVyVHlwZTsgfQorCisgICAgUGxhdGZvcm1DQUxheWVyKiBz
dXBlcmxheWVyKCkgY29uc3Q7CisgICAgdm9pZCByZW1vdmVGcm9tU3VwZXJsYXllcigpOworICAg
IHZvaWQgc2V0U3VibGF5ZXJzKGNvbnN0IFBsYXRmb3JtQ0FMYXllckxpc3QmKTsKKyAgICB2b2lk
IHJlbW92ZUFsbFN1YmxheWVycygpOworICAgIHZvaWQgYXBwZW5kU3VibGF5ZXIoUGxhdGZvcm1D
QUxheWVyKik7CisgICAgdm9pZCBpbnNlcnRTdWJsYXllcihQbGF0Zm9ybUNBTGF5ZXIqLCBzaXpl
X3QgaW5kZXgpOworICAgIHZvaWQgcmVwbGFjZVN1YmxheWVyKFBsYXRmb3JtQ0FMYXllciogcmVm
ZXJlbmNlLCBQbGF0Zm9ybUNBTGF5ZXIqKTsKKyAgICBzaXplX3Qgc3VibGF5ZXJDb3VudCgpIGNv
bnN0OworCisgICAgLy8gVGhpcyBtZXRob2QgcmVtb3ZlcyB0aGUgc3VibGF5ZXJzIGZyb20gdGhl
IHNvdXJjZSBhbmQgcmVwYXJlbnRzIHRoZW0gdG8gdGhlIGN1cnJlbnQgbGF5ZXIuCisgICAgdm9p
ZCBhZG9wdFN1YmxheWVycyhQbGF0Zm9ybUNBTGF5ZXIqIHNvdXJjZSk7CisgICAgCisgICAgdm9p
ZCBhZGRBbmltYXRpb25Gb3JLZXkoY29uc3QgU3RyaW5nJiBrZXksIFBsYXRmb3JtQ0FBbmltYXRp
b24qIGFuaW1hdGlvbik7ICAgIAorICAgIHZvaWQgcmVtb3ZlQW5pbWF0aW9uRm9yS2V5KGNvbnN0
IFN0cmluZyYga2V5KTsKKyAgICBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IGFuaW1h
dGlvbkZvcktleShjb25zdCBTdHJpbmcmIGtleSk7CisgICAgCisgICAgUGxhdGZvcm1DQUxheWVy
KiBtYXNrKCkgY29uc3Q7CisgICAgdm9pZCBzZXRNYXNrKFBsYXRmb3JtQ0FMYXllciopOworICAg
IAorICAgIGJvb2wgaXNPcGFxdWUoKSBjb25zdDsKKyAgICB2b2lkIHNldE9wYXF1ZShib29sKTsK
KworICAgIEZsb2F0UmVjdCBib3VuZHMoKSBjb25zdDsKKyAgICB2b2lkIHNldEJvdW5kcyhjb25z
dCBGbG9hdFJlY3QmKTsKKworICAgIEZsb2F0UG9pbnQzRCBwb3NpdGlvbigpIGNvbnN0OworICAg
IHZvaWQgc2V0UG9zaXRpb24oY29uc3QgRmxvYXRQb2ludDNEJik7CisgICAgdm9pZCBzZXRQb3Np
dGlvbihjb25zdCBGbG9hdFBvaW50JiBwb3MpIHsgc2V0UG9zaXRpb24oRmxvYXRQb2ludDNEKHBv
cy54KCksIHBvcy55KCksIDApKTsgfQorCisgICAgRmxvYXRQb2ludDNEIGFuY2hvclBvaW50KCkg
Y29uc3Q7CisgICAgdm9pZCBzZXRBbmNob3JQb2ludChjb25zdCBGbG9hdFBvaW50M0QmKTsKKwor
ICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybSgpIGNvbnN0OworICAgIHZvaWQgc2V0
VHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4Jik7CisKKyAgICBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCBzdWJsYXllclRyYW5zZm9ybSgpIGNvbnN0OworICAgIHZvaWQgc2V0U3VibGF5
ZXJUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKTsKKworICAgIGJvb2wgaXNI
aWRkZW4oKSBjb25zdDsKKyAgICB2b2lkIHNldEhpZGRlbihib29sKTsKKworICAgIGJvb2wgaXNH
ZW9tZXRyeUZsaXBwZWQoKSBjb25zdDsKKyAgICB2b2lkIHNldEdlb21ldHJ5RmxpcHBlZChib29s
KTsKKworICAgIGJvb2wgaXNEb3VibGVTaWRlZCgpIGNvbnN0OworICAgIHZvaWQgc2V0RG91Ymxl
U2lkZWQoYm9vbCk7CisKKyAgICBib29sIG1hc2tzVG9Cb3VuZHMoKSBjb25zdDsKKyAgICB2b2lk
IHNldE1hc2tzVG9Cb3VuZHMoYm9vbCk7CisKKyAgICB2b2lkKiBjb250ZW50cygpIGNvbnN0Owor
ICAgIHZvaWQgc2V0Q29udGVudHModm9pZCopOworCisgICAgRmxvYXRSZWN0IGNvbnRlbnRzUmVj
dCgpIGNvbnN0OworICAgIHZvaWQgc2V0Q29udGVudHNSZWN0KGNvbnN0IEZsb2F0UmVjdCYpOwor
CisgICAgdm9pZCBzZXRNaW5pZmljYXRpb25GaWx0ZXIoRmlsdGVyVHlwZSk7CisgICAgdm9pZCBz
ZXRNYWduaWZpY2F0aW9uRmlsdGVyKEZpbHRlclR5cGUpOworCisgICAgQ29sb3IgYmFja2dyb3Vu
ZENvbG9yKCkgY29uc3Q7CisgICAgdm9pZCBzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3Im
KTsKKworICAgIGZsb2F0IGJvcmRlcldpZHRoKCkgY29uc3Q7CisgICAgdm9pZCBzZXRCb3JkZXJX
aWR0aChmbG9hdCk7CisKKyAgICBDb2xvciBib3JkZXJDb2xvcigpIGNvbnN0OworICAgIHZvaWQg
c2V0Qm9yZGVyQ29sb3IoY29uc3QgQ29sb3ImKTsKKworICAgIGZsb2F0IG9wYWNpdHkoKSBjb25z
dDsKKyAgICB2b2lkIHNldE9wYWNpdHkoZmxvYXQpOworCisgICAgU3RyaW5nIG5hbWUoKSBjb25z
dDsKKyAgICB2b2lkIHNldE5hbWUoY29uc3QgU3RyaW5nJik7CisKKyAgICBGbG9hdFJlY3QgZnJh
bWUoKSBjb25zdDsKKyAgICB2b2lkIHNldEZyYW1lKGNvbnN0IEZsb2F0UmVjdCYpOworCisgICAg
ZmxvYXQgc3BlZWQoKSBjb25zdDsKKyAgICB2b2lkIHNldFNwZWVkKGZsb2F0KTsKKworICAgIENG
VGltZUludGVydmFsIHRpbWVPZmZzZXQoKSBjb25zdDsKKyAgICB2b2lkIHNldFRpbWVPZmZzZXQo
Q0ZUaW1lSW50ZXJ2YWwpOworCitwcm90ZWN0ZWQ6CisgICAgUGxhdGZvcm1DQUxheWVyKExheWVy
VHlwZSwgUGxhdGZvcm1MYXllciosIEdyYXBoaWNzTGF5ZXJDQSopOworICAgIAorcHJpdmF0ZToK
KyAgICAKKyAgICBHcmFwaGljc0xheWVyQ0EqIG1fb3duZXI7CisgICAgTGF5ZXJUeXBlIG1fbGF5
ZXJUeXBlOworICAgIAorI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oV0lOKQorICAgIFJl
dGFpblB0cjxQbGF0Zm9ybUxheWVyPiBtX2xheWVyOworI2VuZGlmCisKKyNpZiBQTEFURk9STShN
QUMpCisjaWZkZWYgX19PQkpDX18KKyAgICBSZXRhaW5QdHI8TlNPYmplY3Q+IG1fZGVsZWdhdGU7
CisjZWxzZQorICAgIFJldGFpblB0cjx2b2lkPiBtX2RlbGVnYXRlOworI2VuZGlmCisjZW5kaWYK
K307CisKK30KKworI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKworI2Vu
ZGlmIC8vIFBsYXRmb3JtQ0FMYXllcl9oCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9HcmFwaGljc0xheWVyTWFjLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvR3JhcGhpY3NMYXllck1hYy5oCShyZXZpc2lvbiA3MzE1MCkKKysrIFdlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzTGF5ZXJNYWMuaAkod29ya2luZyBjb3B5
KQpAQCAtMSwzODggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBHcmFwaGljc0xheWVyTWFjX2gKLSNkZWZpbmUg
R3JhcGhpY3NMYXllck1hY19oCi0KLSNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0K
LSNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgiCi0jaW5jbHVkZSAiV2ViTGF5ZXIuaCIKLSNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8
d3RmL1JldGFpblB0ci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KLQotQGNs
YXNzIENBQmFzaWNBbmltYXRpb247Ci1AY2xhc3MgQ0FLZXlmcmFtZUFuaW1hdGlvbjsKLUBjbGFz
cyBDQU1lZGlhVGltaW5nRnVuY3Rpb247Ci1AY2xhc3MgQ0FQcm9wZXJ0eUFuaW1hdGlvbjsKLUBj
bGFzcyBXZWJBbmltYXRpb25EZWxlZ2F0ZTsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFz
cyBHcmFwaGljc0xheWVyTWFjIDogcHVibGljIEdyYXBoaWNzTGF5ZXIgewotcHVibGljOgotCi0g
ICAgR3JhcGhpY3NMYXllck1hYyhHcmFwaGljc0xheWVyQ2xpZW50Kik7Ci0gICAgdmlydHVhbCB+
R3JhcGhpY3NMYXllck1hYygpOwotCi0gICAgdmlydHVhbCB2b2lkIHNldE5hbWUoY29uc3QgU3Ry
aW5nJik7Ci0KLSAgICAvLyBmb3IgaG9zdGluZyB0aGlzIEdyYXBoaWNzTGF5ZXIgaW4gYSBuYXRp
dmUgbGF5ZXIgaGllcmFyY2h5Ci0gICAgdmlydHVhbCBOYXRpdmVMYXllciBuYXRpdmVMYXllcigp
IGNvbnN0OwotCi0gICAgdmlydHVhbCBib29sIHNldENoaWxkcmVuKGNvbnN0IFZlY3RvcjxHcmFw
aGljc0xheWVyKj4mKTsKLSAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGQoR3JhcGhpY3NMYXllciop
OwotICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZEF0SW5kZXgoR3JhcGhpY3NMYXllciosIGludCBp
bmRleCk7Ci0gICAgdmlydHVhbCB2b2lkIGFkZENoaWxkQWJvdmUoR3JhcGhpY3NMYXllciogbGF5
ZXIsIEdyYXBoaWNzTGF5ZXIqIHNpYmxpbmcpOwotICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZEJl
bG93KEdyYXBoaWNzTGF5ZXIqIGxheWVyLCBHcmFwaGljc0xheWVyKiBzaWJsaW5nKTsKLSAgICB2
aXJ0dWFsIGJvb2wgcmVwbGFjZUNoaWxkKEdyYXBoaWNzTGF5ZXIqIG9sZENoaWxkLCBHcmFwaGlj
c0xheWVyKiBuZXdDaGlsZCk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRnJvbVBhcmVudCgp
OwotCi0gICAgdmlydHVhbCB2b2lkIHNldE1hc2tMYXllcihHcmFwaGljc0xheWVyKik7Ci0gICAg
dmlydHVhbCB2b2lkIHNldFJlcGxpY2F0ZWRMYXllcihHcmFwaGljc0xheWVyKik7Ci0KLSAgICB2
aXJ0dWFsIHZvaWQgc2V0UG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYpOwotICAgIHZpcnR1YWwg
dm9pZCBzZXRBbmNob3JQb2ludChjb25zdCBGbG9hdFBvaW50M0QmKTsKLSAgICB2aXJ0dWFsIHZv
aWQgc2V0U2l6ZShjb25zdCBGbG9hdFNpemUmKTsKLQotICAgIHZpcnR1YWwgdm9pZCBzZXRUcmFu
c2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKTsKLQotICAgIHZpcnR1YWwgdm9pZCBz
ZXRDaGlsZHJlblRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpOwotCi0gICAg
dmlydHVhbCB2b2lkIHNldFByZXNlcnZlczNEKGJvb2wpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRN
YXNrc1RvQm91bmRzKGJvb2wpOwotICAgIHZpcnR1YWwgdm9pZCBzZXREcmF3c0NvbnRlbnQoYm9v
bCk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IENvbG9yJik7
Ci0gICAgdmlydHVhbCB2b2lkIGNsZWFyQmFja2dyb3VuZENvbG9yKCk7Ci0KLSAgICB2aXJ0dWFs
IHZvaWQgc2V0Q29udGVudHNPcGFxdWUoYm9vbCk7Ci0gICAgdmlydHVhbCB2b2lkIHNldEJhY2tm
YWNlVmlzaWJpbGl0eShib29sKTsKLQotICAgIC8vIHJldHVybiB0cnVlIGlmIHdlIHN0YXJ0ZWQg
YW4gYW5pbWF0aW9uCi0gICAgdmlydHVhbCB2b2lkIHNldE9wYWNpdHkoZmxvYXQpOwotCi0gICAg
dmlydHVhbCB2b2lkIHNldE5lZWRzRGlzcGxheSgpOwotICAgIHZpcnR1YWwgdm9pZCBzZXROZWVk
c0Rpc3BsYXlJblJlY3QoY29uc3QgRmxvYXRSZWN0Jik7Ci0gICAgdmlydHVhbCB2b2lkIHNldENv
bnRlbnRzTmVlZHNEaXNwbGF5KCk7Ci0gICAgCi0gICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRz
UmVjdChjb25zdCBJbnRSZWN0Jik7Ci0gICAgCi0gICAgdmlydHVhbCB2b2lkIHN1c3BlbmRBbmlt
YXRpb25zKGRvdWJsZSB0aW1lKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVzdW1lQW5pbWF0aW9ucygp
OwotCi0gICAgdmlydHVhbCBib29sIGFkZEFuaW1hdGlvbihjb25zdCBLZXlmcmFtZVZhbHVlTGlz
dCYsIGNvbnN0IEludFNpemUmIGJveFNpemUsIGNvbnN0IEFuaW1hdGlvbiosIGNvbnN0IFN0cmlu
ZyYgYW5pbWF0aW9uTmFtZSwgZG91YmxlIHRpbWVPZmZzZXQpOwotICAgIHZpcnR1YWwgdm9pZCBw
YXVzZUFuaW1hdGlvbihjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGRvdWJsZSB0aW1lT2Zm
c2V0KTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQW5pbWF0aW9uKGNvbnN0IFN0cmluZyYgYW5p
bWF0aW9uTmFtZSk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNUb0ltYWdlKEltYWdl
Kik7Ci0gICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzVG9NZWRpYShQbGF0Zm9ybUxheWVyKik7
Ci0gICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzVG9DYW52YXMoUGxhdGZvcm1MYXllciopOwot
Ci0gICAgdmlydHVhbCBib29sIGhhc0NvbnRlbnRzTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX2Nv
bnRlbnRzTGF5ZXI7IH0KLSAgICAKLSAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3Jt
TGF5ZXIoKSBjb25zdDsKLQotICAgIHZpcnR1YWwgdm9pZCBzZXREZWJ1Z0JhY2tncm91bmRDb2xv
cihjb25zdCBDb2xvciYpOwotICAgIHZpcnR1YWwgdm9pZCBzZXREZWJ1Z0JvcmRlcihjb25zdCBD
b2xvciYsIGZsb2F0IGJvcmRlcldpZHRoKTsKLQotICAgIHZpcnR1YWwgdm9pZCBkaWREaXNwbGF5
KFBsYXRmb3JtTGF5ZXIqKTsKLQotICAgIHZvaWQgcmVjdXJzaXZlQ29tbWl0Q2hhbmdlcygpOwot
Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNDb21wb3NpdGluZ1N0YXRlKCk7Ci0gICAgdmlydHVhbCB2
b2lkIHN5bmNDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSgpOwotCi0gICAgLy8gU2hv
dWxkIG9ubHkgYmUgY2FsbGVkIGJ5IGFuaW1hdGlvbkRpZFN0YXJ0OiBjYWxsYmFjawotICAgIHZv
aWQgYW5pbWF0aW9uRGlkU3RhcnQoQ0FBbmltYXRpb24qKTsKLSAgICAKLXByb3RlY3RlZDoKLSAg
ICB2aXJ0dWFsIHZvaWQgc2V0T3BhY2l0eUludGVybmFsKGZsb2F0KTsKLQotcHJpdmF0ZToKLSAg
ICB2b2lkIHVwZGF0ZU9wYWNpdHlPbkxheWVyKCk7Ci0KLSAgICBDQUxheWVyKiBwcmltYXJ5TGF5
ZXIoKSBjb25zdCB7IHJldHVybiBtX3N0cnVjdHVyYWxMYXllci5nZXQoKSA/IG1fc3RydWN0dXJh
bExheWVyLmdldCgpIDogbV9sYXllci5nZXQoKTsgfQotICAgIENBTGF5ZXIqIGhvc3RMYXllckZv
clN1YmxheWVycygpIGNvbnN0OwotICAgIENBTGF5ZXIqIGxheWVyRm9yU3VwZXJsYXllcigpIGNv
bnN0OwotICAgIENBTGF5ZXIqIGFuaW1hdGVkTGF5ZXIoQW5pbWF0ZWRQcm9wZXJ0eUlEKSBjb25z
dDsKLQotICAgIHR5cGVkZWYgU3RyaW5nIENsb25lSUQ7IC8vIElkZW50aWZpZXIgZm9yIGEgZ2l2
ZW4gY2xvbmUsIGJhc2VkIG9uIG9yaWdpbmFsL3JlcGxpY2EgYnJhbmNoaW5nIGRvd24gdGhlIHRy
ZWUuCi0gICAgc3RhdGljIGJvb2wgaXNSZXBsaWNhdGVkUm9vdENsb25lKGNvbnN0IENsb25lSUQm
IGNsb25lSUQpIHsgcmV0dXJuIGNsb25lSURbMFVdICYgMTsgfQotCi0gICAgdHlwZWRlZiBIYXNo
TWFwPENsb25lSUQsIFJldGFpblB0cjxDQUxheWVyPiA+IExheWVyTWFwOwotICAgIExheWVyTWFw
KiBwcmltYXJ5TGF5ZXJDbG9uZXMoKSBjb25zdCB7IHJldHVybiBtX3N0cnVjdHVyYWxMYXllci5n
ZXQoKSA/IG1fc3RydWN0dXJhbExheWVyQ2xvbmVzLmdldCgpIDogbV9sYXllckNsb25lcy5nZXQo
KTsgfQotICAgIExheWVyTWFwKiBhbmltYXRlZExheWVyQ2xvbmVzKEFuaW1hdGVkUHJvcGVydHlJ
RCkgY29uc3Q7Ci0KLSAgICBib29sIGNyZWF0ZUFuaW1hdGlvbkZyb21LZXlmcmFtZXMoY29uc3Qg
S2V5ZnJhbWVWYWx1ZUxpc3QmLCBjb25zdCBBbmltYXRpb24qLCBjb25zdCBTdHJpbmcmIGFuaW1h
dGlvbk5hbWUsIGRvdWJsZSB0aW1lT2Zmc2V0KTsKLSAgICBib29sIGNyZWF0ZVRyYW5zZm9ybUFu
aW1hdGlvbnNGcm9tS2V5ZnJhbWVzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiwgY29uc3QgQW5p
bWF0aW9uKiwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBkb3VibGUgdGltZU9mZnNldCwg
Y29uc3QgSW50U2l6ZSYgYm94U2l6ZSk7Ci0KLSAgICAvLyBSZXR1cm4gYXV0b3JlbGVhc2VkIGFu
aW1hdGlvbiAodXNlIFJldGFpblB0cj8pCi0gICAgQ0FCYXNpY0FuaW1hdGlvbiogY3JlYXRlQmFz
aWNBbmltYXRpb24oY29uc3QgQW5pbWF0aW9uKiwgQW5pbWF0ZWRQcm9wZXJ0eUlELCBib29sIGFk
ZGl0aXZlKTsKLSAgICBDQUtleWZyYW1lQW5pbWF0aW9uKiBjcmVhdGVLZXlmcmFtZUFuaW1hdGlv
bihjb25zdCBBbmltYXRpb24qLCBBbmltYXRlZFByb3BlcnR5SUQsIGJvb2wgYWRkaXRpdmUpOwot
ICAgIHZvaWQgc2V0dXBBbmltYXRpb24oQ0FQcm9wZXJ0eUFuaW1hdGlvbiosIGNvbnN0IEFuaW1h
dGlvbiosIGJvb2wgYWRkaXRpdmUpOwotICAgIAotICAgIENBTWVkaWFUaW1pbmdGdW5jdGlvbiog
dGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShjb25zdCBBbmltYXRpb25WYWx1ZSosIGNv
bnN0IEFuaW1hdGlvbiopOwotICAgIAotICAgIGJvb2wgc2V0QW5pbWF0aW9uRW5kcG9pbnRzKGNv
bnN0IEtleWZyYW1lVmFsdWVMaXN0JiwgY29uc3QgQW5pbWF0aW9uKiwgQ0FCYXNpY0FuaW1hdGlv
biopOwotICAgIGJvb2wgc2V0QW5pbWF0aW9uS2V5ZnJhbWVzKGNvbnN0IEtleWZyYW1lVmFsdWVM
aXN0JiwgY29uc3QgQW5pbWF0aW9uKiwgQ0FLZXlmcmFtZUFuaW1hdGlvbiopOwotCi0gICAgYm9v
bCBzZXRUcmFuc2Zvcm1BbmltYXRpb25FbmRwb2ludHMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3Qm
LCBjb25zdCBBbmltYXRpb24qLCBDQUJhc2ljQW5pbWF0aW9uKiwgaW50IGZ1bmN0aW9uSW5kZXgs
IFRyYW5zZm9ybU9wZXJhdGlvbjo6T3BlcmF0aW9uVHlwZSwgYm9vbCBpc01hdHJpeEFuaW1hdGlv
biwgY29uc3QgSW50U2l6ZSYgYm94U2l6ZSk7Ci0gICAgYm9vbCBzZXRUcmFuc2Zvcm1BbmltYXRp
b25LZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmLCBjb25zdCBBbmltYXRpb24qLCBD
QUtleWZyYW1lQW5pbWF0aW9uKiwgaW50IGZ1bmN0aW9uSW5kZXgsIFRyYW5zZm9ybU9wZXJhdGlv
bjo6T3BlcmF0aW9uVHlwZSwgYm9vbCBpc01hdHJpeEFuaW1hdGlvbiwgY29uc3QgSW50U2l6ZSYg
Ym94U2l6ZSk7Ci0gICAgCi0gICAgYm9vbCBhbmltYXRpb25Jc1J1bm5pbmcoY29uc3QgU3RyaW5n
JiBhbmltYXRpb25OYW1lKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fcnVubmluZ0Fu
aW1hdGlvbnMuZmluZChhbmltYXRpb25OYW1lKSAhPSBtX3J1bm5pbmdBbmltYXRpb25zLmVuZCgp
OwotICAgIH0KLQotICAgIHZvaWQgY29tbWl0TGF5ZXJDaGFuZ2VzQmVmb3JlU3VibGF5ZXJzKCk7
Ci0gICAgdm9pZCBjb21taXRMYXllckNoYW5nZXNBZnRlclN1YmxheWVycygpOwotCi0gICAgRmxv
YXRTaXplIGNvbnN0cmFpbmVkU2l6ZSgpIGNvbnN0OwotCi0gICAgYm9vbCByZXF1aXJlc1RpbGVk
TGF5ZXIoY29uc3QgRmxvYXRTaXplJikgY29uc3Q7Ci0gICAgdm9pZCBzd2FwRnJvbU9yVG9UaWxl
ZExheWVyKGJvb2wgdXNlVGlsZWRMYXllcik7Ci0KLSAgICBDb21wb3NpdGluZ0Nvb3JkaW5hdGVz
T3JpZW50YXRpb24gZGVmYXVsdENvbnRlbnRzT3JpZW50YXRpb24oKSBjb25zdDsKLSAgICB2b2lk
IHVwZGF0ZUNvbnRlbnRzVHJhbnNmb3JtKCk7Ci0gICAgCi0gICAgdm9pZCBzZXR1cENvbnRlbnRz
TGF5ZXIoQ0FMYXllciopOwotICAgIENBTGF5ZXIqIGNvbnRlbnRzTGF5ZXIoKSBjb25zdCB7IHJl
dHVybiBtX2NvbnRlbnRzTGF5ZXIuZ2V0KCk7IH0KLQotICAgIHZpcnR1YWwgdm9pZCBzZXRSZXBs
aWNhdGVkQnlMYXllcihHcmFwaGljc0xheWVyKik7Ci0KLSAgICAvLyBVc2VkIHRvIHRyYWNrIHRo
ZSBwYXRoIGRvd24gdGhlIHRyZWUgZm9yIHJlcGxpY2EgbGF5ZXJzLgotICAgIHN0cnVjdCBSZXBs
aWNhU3RhdGUgewotICAgICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IG1heFJlcGxpY2FEZXB0aCA9
IDE2OwotICAgICAgICBlbnVtIFJlcGxpY2FCcmFuY2hUeXBlIHsgQ2hpbGRCcmFuY2ggPSAwLCBS
ZXBsaWNhQnJhbmNoID0gMSB9OwotICAgICAgICBSZXBsaWNhU3RhdGUoUmVwbGljYUJyYW5jaFR5
cGUgZmlyc3RCcmFuY2gpCi0gICAgICAgICAgICA6IG1fcmVwbGljYURlcHRoKDApCi0gICAgICAg
IHsKLSAgICAgICAgICAgIHB1c2goZmlyc3RCcmFuY2gpOwotICAgICAgICB9Ci0gICAgICAgIAot
ICAgICAgICAvLyBDYWxsZWQgYXMgd2Ugd2FsayBkb3duIHRoZSB0cmVlIHRvIGJ1aWxkIHJlcGxp
Y2FzLgotICAgICAgICB2b2lkIHB1c2goUmVwbGljYUJyYW5jaFR5cGUgYnJhbmNoVHlwZSkKLSAg
ICAgICAgewotICAgICAgICAgICAgbV9yZXBsaWNhQnJhbmNoZXMuYXBwZW5kKGJyYW5jaFR5cGUp
OwotICAgICAgICAgICAgaWYgKGJyYW5jaFR5cGUgPT0gUmVwbGljYUJyYW5jaCkKLSAgICAgICAg
ICAgICAgICArK21fcmVwbGljYURlcHRoOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICB2
b2lkIHNldEJyYW5jaFR5cGUoUmVwbGljYUJyYW5jaFR5cGUgYnJhbmNoVHlwZSkKLSAgICAgICAg
ewotICAgICAgICAgICAgQVNTRVJUKCFtX3JlcGxpY2FCcmFuY2hlcy5pc0VtcHR5KCkpOwotCi0g
ICAgICAgICAgICBpZiAobV9yZXBsaWNhQnJhbmNoZXMubGFzdCgpICE9IGJyYW5jaFR5cGUpIHsK
LSAgICAgICAgICAgICAgICBpZiAoYnJhbmNoVHlwZSA9PSBSZXBsaWNhQnJhbmNoKQotICAgICAg
ICAgICAgICAgICAgICArK21fcmVwbGljYURlcHRoOwotICAgICAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICAgICAgLS1tX3JlcGxpY2FEZXB0aDsKLSAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgbV9yZXBsaWNhQnJhbmNoZXMubGFzdCgpID0gYnJhbmNoVHlwZTsKLSAgICAgICAg
fQotCi0gICAgICAgIHZvaWQgcG9wKCkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKG1fcmVw
bGljYUJyYW5jaGVzLmxhc3QoKSA9PSBSZXBsaWNhQnJhbmNoKQotICAgICAgICAgICAgICAgIC0t
bV9yZXBsaWNhRGVwdGg7Ci0gICAgICAgICAgICBtX3JlcGxpY2FCcmFuY2hlcy5yZW1vdmVMYXN0
KCk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHNpemVfdCBkZXB0aCgpIGNvbnN0IHsg
cmV0dXJuIG1fcmVwbGljYUJyYW5jaGVzLnNpemUoKTsgfQotICAgICAgICBzaXplX3QgcmVwbGlj
YURlcHRoKCkgY29uc3QgeyByZXR1cm4gbV9yZXBsaWNhRGVwdGg7IH0KLQotICAgICAgICBDbG9u
ZUlEIGNsb25lSUQoKSBjb25zdDsgICAgICAgIAotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgVmVj
dG9yPFJlcGxpY2FCcmFuY2hUeXBlPiBtX3JlcGxpY2FCcmFuY2hlczsKLSAgICAgICAgc2l6ZV90
IG1fcmVwbGljYURlcHRoOwotICAgIH07Ci0gICAgQ0FMYXllciAqcmVwbGljYXRlZExheWVyUm9v
dChSZXBsaWNhU3RhdGUmKTsKLQotICAgIGVudW0gQ2xvbmVMZXZlbCB7IFJvb3RDbG9uZUxldmVs
LCBJbnRlcm1lZGlhdGVDbG9uZUxldmVsIH07Ci0gICAgQ0FMYXllciAqZmV0Y2hDbG9uZUxheWVy
cyhHcmFwaGljc0xheWVyKiByZXBsaWNhUm9vdCwgUmVwbGljYVN0YXRlJiwgQ2xvbmVMZXZlbCk7
Ci0gICAgCi0gICAgQ0FMYXllciAqY2xvbmVMYXllcihDQUxheWVyICosIENsb25lTGV2ZWwpOwot
ICAgIENBTGF5ZXIgKmZpbmRPck1ha2VDbG9uZShDbG9uZUlELCBDQUxheWVyICosIExheWVyTWFw
KiwgQ2xvbmVMZXZlbCk7Ci0KLSAgICB2b2lkIGVuc3VyZUNsb25lTGF5ZXJzKENsb25lSUQgaW5k
ZXgsIENBTGF5ZXIgKiYgcHJpbWFyeUxheWVyLCBDQUxheWVyIComIHN0cnVjdHVyYWxMYXllciwg
Q0FMYXllciAqJiBjb250ZW50c0xheWVyLCBDbG9uZUxldmVsKTsKLQotICAgIGJvb2wgaGFzQ2xv
bmVMYXllcnMoKSBjb25zdCB7IHJldHVybiBtX2xheWVyQ2xvbmVzOyB9Ci0gICAgdm9pZCByZW1v
dmVDbG9uZUxheWVycygpOwotICAgIEZsb2F0UG9pbnQgcG9zaXRpb25Gb3JDbG9uZVJvb3RMYXll
cigpIGNvbnN0OwotICAgIAotICAgIHZvaWQgcHJvcGFnYXRlTGF5ZXJDaGFuZ2VUb1JlcGxpY2Fz
KCk7Ci0gICAgCi0gICAgLy8gQWxsIHRoZXNlICJ1cGRhdGUiIG1ldGhvZHMgd2lsbCBiZSBjYWxs
ZWQgaW5zaWRlIGEgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TL0VORF9CTE9DS19PQkpDX0VY
Q0VQVElPTlMgYmxvY2suCi0gICAgdm9pZCB1cGRhdGVMYXllck5hbWVzKCk7Ci0gICAgdm9pZCB1
cGRhdGVTdWJsYXllckxpc3QoKTsKLSAgICB2b2lkIHVwZGF0ZUxheWVyUG9zaXRpb24oKTsKLSAg
ICB2b2lkIHVwZGF0ZUxheWVyU2l6ZSgpOwotICAgIHZvaWQgdXBkYXRlQW5jaG9yUG9pbnQoKTsK
LSAgICB2b2lkIHVwZGF0ZVRyYW5zZm9ybSgpOwotICAgIHZvaWQgdXBkYXRlQ2hpbGRyZW5UcmFu
c2Zvcm0oKTsKLSAgICB2b2lkIHVwZGF0ZU1hc2tzVG9Cb3VuZHMoKTsKLSAgICB2b2lkIHVwZGF0
ZUNvbnRlbnRzT3BhcXVlKCk7Ci0gICAgdm9pZCB1cGRhdGVCYWNrZmFjZVZpc2liaWxpdHkoKTsK
LSAgICB2b2lkIHVwZGF0ZVN0cnVjdHVyYWxMYXllcigpOwotICAgIHZvaWQgdXBkYXRlTGF5ZXJE
cmF3c0NvbnRlbnQoKTsKLSAgICB2b2lkIHVwZGF0ZUxheWVyQmFja2dyb3VuZENvbG9yKCk7Ci0K
LSAgICB2b2lkIHVwZGF0ZUNvbnRlbnRzSW1hZ2UoKTsKLSAgICB2b2lkIHVwZGF0ZUNvbnRlbnRz
TWVkaWFMYXllcigpOwotICAgIHZvaWQgdXBkYXRlQ29udGVudHNDYW52YXNMYXllcigpOwotICAg
IHZvaWQgdXBkYXRlQ29udGVudHNSZWN0KCk7Ci0gICAgdm9pZCB1cGRhdGVNYXNrTGF5ZXIoKTsK
LSAgICB2b2lkIHVwZGF0ZVJlcGxpY2F0ZWRMYXllcnMoKTsKLQotICAgIHZvaWQgdXBkYXRlTGF5
ZXJBbmltYXRpb25zKCk7Ci0gICAgdm9pZCB1cGRhdGVDb250ZW50c05lZWRzRGlzcGxheSgpOwot
ICAgIAotICAgIGVudW0gU3RydWN0dXJhbExheWVyUHVycG9zZSB7Ci0gICAgICAgIE5vU3RydWN0
dXJhbExheWVyID0gMCwKLSAgICAgICAgU3RydWN0dXJhbExheWVyRm9yUHJlc2VydmVzM0QsCi0g
ICAgICAgIFN0cnVjdHVyYWxMYXllckZvclJlcGxpY2FGbGF0dGVuaW5nCi0gICAgfTsKLSAgICB2
b2lkIGVuc3VyZVN0cnVjdHVyYWxMYXllcihTdHJ1Y3R1cmFsTGF5ZXJQdXJwb3NlKTsKLSAgICBT
dHJ1Y3R1cmFsTGF5ZXJQdXJwb3NlIHN0cnVjdHVyYWxMYXllclB1cnBvc2UoKSBjb25zdDsKLQot
ICAgIHZvaWQgc2V0Q0FBbmltYXRpb25PbkxheWVyKENBUHJvcGVydHlBbmltYXRpb24qLCBBbmlt
YXRlZFByb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSwgaW50IGluZGV4LCBk
b3VibGUgdGltZU9mZnNldCk7Ci0gICAgYm9vbCByZW1vdmVDQUFuaW1hdGlvbkZyb21MYXllcihB
bmltYXRlZFByb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSwgaW50IGluZGV4
KTsKLSAgICB2b2lkIHBhdXNlQ0FBbmltYXRpb25PbkxheWVyKEFuaW1hdGVkUHJvcGVydHlJRCwg
Y29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBpbnQgaW5kZXgsIGRvdWJsZSB0aW1lT2Zmc2V0
KTsKLQotICAgIGVudW0gTW92ZU9yQ29weSB7IE1vdmUsIENvcHkgfTsKLSAgICBzdGF0aWMgdm9p
ZCBtb3ZlT3JDb3B5TGF5ZXJBbmltYXRpb24oTW92ZU9yQ29weSwgY29uc3QgU3RyaW5nJiBhbmlt
YXRpb25JZGVudGlmaWVyLCBDQUxheWVyICpmcm9tTGF5ZXIsIENBTGF5ZXIgKnRvTGF5ZXIpOwot
ICAgIHZvaWQgbW92ZU9yQ29weUFuaW1hdGlvbnNGb3JQcm9wZXJ0eShNb3ZlT3JDb3B5LCBBbmlt
YXRlZFByb3BlcnR5SUQsIENBTGF5ZXIgKiBmcm9tTGF5ZXIsIENBTGF5ZXIgKiB0b0xheWVyKTsK
LSAgICAKLSAgICBlbnVtIExheWVyQ2hhbmdlIHsKLSAgICAgICAgTm9DaGFuZ2UgPSAwLAotICAg
ICAgICBOYW1lQ2hhbmdlZCA9IDEgPDwgMSwKLSAgICAgICAgQ2hpbGRyZW5DaGFuZ2VkID0gMSA8
PCAyLCAgIC8vIGFsc28gdXNlZCBmb3IgY29udGVudCBsYXllciwgYW5kIHByZXNlcnZlcy0zZCwg
YW5kIHNpemUgaWYgdGlsaW5nIGNoYW5nZXM/Ci0gICAgICAgIFBvc2l0aW9uQ2hhbmdlZCA9IDEg
PDwgMywKLSAgICAgICAgQW5jaG9yUG9pbnRDaGFuZ2VkID0gMSA8PCA0LAotICAgICAgICBTaXpl
Q2hhbmdlZCA9IDEgPDwgNSwKLSAgICAgICAgVHJhbnNmb3JtQ2hhbmdlZCA9IDEgPDwgNiwKLSAg
ICAgICAgQ2hpbGRyZW5UcmFuc2Zvcm1DaGFuZ2VkID0gMSA8PCA3LAotICAgICAgICBQcmVzZXJ2
ZXMzRENoYW5nZWQgPSAxIDw8IDgsCi0gICAgICAgIE1hc2tzVG9Cb3VuZHNDaGFuZ2VkID0gMSA8
PCA5LAotICAgICAgICBEcmF3c0NvbnRlbnRDaGFuZ2VkID0gMSA8PCAxMCwgIC8vIG5lZWQgdGhp
cz8KLSAgICAgICAgQmFja2dyb3VuZENvbG9yQ2hhbmdlZCA9IDEgPDwgMTEsCi0gICAgICAgIENv
bnRlbnRzT3BhcXVlQ2hhbmdlZCA9IDEgPDwgMTIsCi0gICAgICAgIEJhY2tmYWNlVmlzaWJpbGl0
eUNoYW5nZWQgPSAxIDw8IDEzLAotICAgICAgICBPcGFjaXR5Q2hhbmdlZCA9IDEgPDwgMTQsCi0g
ICAgICAgIEFuaW1hdGlvbkNoYW5nZWQgPSAxIDw8IDE1LAotICAgICAgICBEaXJ0eVJlY3RzQ2hh
bmdlZCA9IDEgPDwgMTYsCi0gICAgICAgIENvbnRlbnRzSW1hZ2VDaGFuZ2VkID0gMSA8PCAxNywK
LSAgICAgICAgQ29udGVudHNNZWRpYUxheWVyQ2hhbmdlZCA9IDEgPDwgMTgsCi0gICAgICAgIENv
bnRlbnRzQ2FudmFzTGF5ZXJDaGFuZ2VkID0gMSA8PCAxOSwKLSAgICAgICAgQ29udGVudHNSZWN0
Q2hhbmdlZCA9IDEgPDwgMjAsCi0gICAgICAgIE1hc2tMYXllckNoYW5nZWQgPSAxIDw8IDIxLAot
ICAgICAgICBSZXBsaWNhdGVkTGF5ZXJDaGFuZ2VkID0gMSA8PCAyMiwKLSAgICAgICAgQ29udGVu
dHNOZWVkc0Rpc3BsYXkgPSAxIDw8IDIzCi0gICAgfTsKLSAgICB0eXBlZGVmIHVuc2lnbmVkIExh
eWVyQ2hhbmdlRmxhZ3M7Ci0gICAgdm9pZCBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoTGF5ZXJD
aGFuZ2VGbGFncyBmbGFncyk7Ci0gICAgdm9pZCBub3RlU3VibGF5ZXJzQ2hhbmdlZCgpOwotCi0g
ICAgdm9pZCByZXBhaW50TGF5ZXJEaXJ0eVJlY3RzKCk7Ci0KLSAgICBSZXRhaW5QdHI8V2ViTGF5
ZXI+IG1fbGF5ZXI7IC8vIFRoZSBtYWluIGxheWVyCi0gICAgUmV0YWluUHRyPENBTGF5ZXI+IG1f
c3RydWN0dXJhbExheWVyOyAvLyBBIGxheWVyIHVzZWQgZm9yIHN0cnVjdHVyYWwgcmVhc29ucywg
bGlrZSBwcmVzZXJ2ZXMtM2Qgb3IgcmVwbGljYS1mbGF0dGVuaW5nLiBJcyB0aGUgcGFyZW50IG9m
IG1fbGF5ZXIuCi0gICAgUmV0YWluUHRyPENBTGF5ZXI+IG1fY29udGVudHNMYXllcjsgLy8gQSBs
YXllciB1c2VkIGZvciBpbm5lciBjb250ZW50LCBsaWtlIGltYWdlIGFuZCB2aWRlbwotCi0gICAg
Ly8gUmVmZXJlbmNlcyB0byBjbG9uZXMgb2Ygb3VyIGxheWVycywgZm9yIHJlcGxpY2F0ZWQgbGF5
ZXJzLgotICAgIE93blB0cjxMYXllck1hcD4gbV9sYXllckNsb25lczsKLSAgICBPd25QdHI8TGF5
ZXJNYXA+IG1fc3RydWN0dXJhbExheWVyQ2xvbmVzOwotICAgIE93blB0cjxMYXllck1hcD4gbV9j
b250ZW50c0xheWVyQ2xvbmVzOwotICAgIAotICAgIGVudW0gQ29udGVudHNMYXllclB1cnBvc2Ug
ewotICAgICAgICBOb0NvbnRlbnRzTGF5ZXIgPSAwLAotICAgICAgICBDb250ZW50c0xheWVyRm9y
SW1hZ2UsCi0gICAgICAgIENvbnRlbnRzTGF5ZXJGb3JNZWRpYSwKLSAgICAgICAgQ29udGVudHNM
YXllckZvckNhbnZhcwotICAgIH07Ci0gICAgCi0gICAgQ29udGVudHNMYXllclB1cnBvc2UgbV9j
b250ZW50c0xheWVyUHVycG9zZTsKLSAgICBib29sIG1fY29udGVudHNMYXllckhhc0JhY2tncm91
bmRDb2xvciA6IDE7Ci0KLSAgICBSZXRhaW5QdHI8V2ViQW5pbWF0aW9uRGVsZWdhdGU+IG1fYW5p
bWF0aW9uRGVsZWdhdGU7Ci0KLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gbV91bmNvcnJlY3Rl
ZENvbnRlbnRzSW1hZ2U7Ci0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IG1fcGVuZGluZ0NvbnRl
bnRzSW1hZ2U7Ci0gICAgCi0gICAgLy8gVGhpcyByZXByZXNlbnRzIHRoZSBhbmltYXRpb24gb2Yg
YSBzaW5nbGUgcHJvcGVydHkuIFRoZXJlIG1heSBiZSBtdWx0aXBsZSB0cmFuc2Zvcm0gYW5pbWF0
aW9ucyBmb3IKLSAgICAvLyBhIHNpbmdsZSB0cmFuc2l0aW9uIG9yIGtleWZyYW1lIGFuaW1hdGlv
biwgc28gaW5kZXggaXMgdXNlZCB0byBkaXN0aW5ndWlzaCB0aGVzZS4KLSAgICBzdHJ1Y3QgTGF5
ZXJQcm9wZXJ0eUFuaW1hdGlvbiB7Ci0gICAgICAgIExheWVyUHJvcGVydHlBbmltYXRpb24oQ0FQ
cm9wZXJ0eUFuaW1hdGlvbiogY2FBbmltYXRpb24sIGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFt
ZSwgQW5pbWF0ZWRQcm9wZXJ0eUlEIHByb3BlcnR5LCBpbnQgaW5kZXgsIGRvdWJsZSB0aW1lT2Zm
c2V0KQotICAgICAgICA6IG1fYW5pbWF0aW9uKGNhQW5pbWF0aW9uKQotICAgICAgICAsIG1fbmFt
ZShhbmltYXRpb25OYW1lKQotICAgICAgICAsIG1fcHJvcGVydHkocHJvcGVydHkpCi0gICAgICAg
ICwgbV9pbmRleChpbmRleCkKLSAgICAgICAgLCBtX3RpbWVPZmZzZXQodGltZU9mZnNldCkKLSAg
ICAgICAgeyB9Ci0KLSAgICAgICAgUmV0YWluUHRyPENBUHJvcGVydHlBbmltYXRpb24qPiBtX2Fu
aW1hdGlvbjsKLSAgICAgICAgU3RyaW5nIG1fbmFtZTsKLSAgICAgICAgQW5pbWF0ZWRQcm9wZXJ0
eUlEIG1fcHJvcGVydHk7Ci0gICAgICAgIGludCBtX2luZGV4OwotICAgICAgICBkb3VibGUgbV90
aW1lT2Zmc2V0OwotICAgIH07Ci0gICAgCi0gICAgLy8gVW5jb21taXR0ZWQgdHJhbnNpdGlvbnMg
YW5kIGFuaW1hdGlvbnMuCi0gICAgVmVjdG9yPExheWVyUHJvcGVydHlBbmltYXRpb24+IG1fdW5j
b21pdHRlZEFuaW1hdGlvbnM7Ci0gICAgCi0gICAgZW51bSBBY3Rpb24geyBSZW1vdmUsIFBhdXNl
IH07Ci0gICAgc3RydWN0IEFuaW1hdGlvblByb2Nlc3NpbmdBY3Rpb24gewotICAgICAgICBBbmlt
YXRpb25Qcm9jZXNzaW5nQWN0aW9uKEFjdGlvbiBhY3Rpb24gPSBSZW1vdmUsIGRvdWJsZSB0aW1l
T2Zmc2V0ID0gMCkKLSAgICAgICAgICAgIDogYWN0aW9uKGFjdGlvbikKLSAgICAgICAgICAgICwg
dGltZU9mZnNldCh0aW1lT2Zmc2V0KQotICAgICAgICB7Ci0gICAgICAgIH0KLSAgICAgICAgQWN0
aW9uIGFjdGlvbjsKLSAgICAgICAgZG91YmxlIHRpbWVPZmZzZXQ7IC8vIG9ubHkgdXNlZCBmb3Ig
cGF1c2UKLSAgICB9OwotICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIEFuaW1hdGlvblByb2Nl
c3NpbmdBY3Rpb24+IEFuaW1hdGlvbnNUb1Byb2Nlc3NNYXA7Ci0gICAgQW5pbWF0aW9uc1RvUHJv
Y2Vzc01hcCBtX2FuaW1hdGlvbnNUb1Byb2Nlc3M7Ci0KLSAgICAvLyBNYXAgb2YgYW5pbWF0aW9u
IG5hbWVzIHRvIHRoZWlyIGFzc29jaWF0ZWQgbGlzdHMgb2YgcHJvcGVydHkgYW5pbWF0aW9ucywg
c28gd2UgY2FuIHJlbW92ZS9wYXVzZSB0aGVtLgotICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcs
IFZlY3RvcjxMYXllclByb3BlcnR5QW5pbWF0aW9uPiA+IEFuaW1hdGlvbnNNYXA7Ci0gICAgQW5p
bWF0aW9uc01hcCBtX3J1bm5pbmdBbmltYXRpb25zOwotCi0gICAgVmVjdG9yPEZsb2F0UmVjdD4g
bV9kaXJ0eVJlY3RzOwotICAgIAotICAgIExheWVyQ2hhbmdlRmxhZ3MgbV91bmNvbW1pdHRlZENo
YW5nZXM7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLQotI2VuZGlmIC8vIFVTRShB
Q0NFTEVSQVRFRF9DT01QT1NJVElORykKLQotI2VuZGlmIC8vIEdyYXBoaWNzTGF5ZXJNYWNfaApJ
bmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NMYXllck1hYy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0xheWVy
TWFjLm1tCShyZXZpc2lvbiA3MzE1MCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L0dyYXBoaWNzTGF5ZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsMjUxNCArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBP
UgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0j
aW1wb3J0ICJjb25maWcuaCIKLQotI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLQot
I2ltcG9ydCAiR3JhcGhpY3NMYXllck1hYy5oIgotCi0jaW1wb3J0ICJBbmltYXRpb24uaCIKLSNp
bXBvcnQgIkJsb2NrRXhjZXB0aW9ucy5oIgotI2ltcG9ydCAiRmxvYXRDb252ZXJzaW9uLmgiCi0j
aW1wb3J0ICJGbG9hdFJlY3QuaCIKLSNpbXBvcnQgIkltYWdlLmgiCi0jaW1wb3J0ICJQbGF0Zm9y
bVN0cmluZy5oIgotI2ltcG9ydCA8UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+Ci0jaW1wb3J0ICJS
b3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaCIKLSNpbXBvcnQgIlNjYWxlVHJhbnNmb3JtT3BlcmF0
aW9uLmgiCi0jaW1wb3J0ICJTeXN0ZW1UaW1lLmgiCi0jaW1wb3J0ICJUcmFuc2xhdGVUcmFuc2Zv
cm1PcGVyYXRpb24uaCIKLSNpbXBvcnQgIldlYkxheWVyLmgiCi0jaW1wb3J0ICJXZWJUaWxlZExh
eWVyLmgiCi0jaW1wb3J0IDxsaW1pdHMuaD4KLSNpbXBvcnQgPG9iamMvb2JqYy1hdXRvLmg+Ci0j
aW1wb3J0IDx3dGYvQ3VycmVudFRpbWUuaD4KLSNpbXBvcnQgPHd0Zi9VbnVzZWRQYXJhbS5oPgot
I2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgotI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nQ29uY2F0
ZW5hdGUuaD4KLQotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQotI2RlZmluZSBIQVZFX01PREVSTl9R
VUFSVFpDT1JFICghZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJ
TkdfT05fTEVPUEFSRCkpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RhdGljIE5TU3RyaW5n
ICogY29uc3QgV2ViS2l0QW5pbWF0aW9uQmVnaW5UaW1lU2V0S2V5ID0gQCJXZWJLaXRBbmltYXRp
b25CZWdpblRpbWVTZXQiOwotCi0vLyBUaGUgdGhyZXNob2xkIHdpZHRoIG9yIGhlaWdodCBhYm92
ZSB3aGljaCBhIHRpbGVkIGxheWVyIHdpbGwgYmUgdXNlZC4gVGhpcyBzaG91bGQgYmUKLS8vIGxh
cmdlIGVub3VnaCB0byBhdm9pZCB0aWxlZCBsYXllcnMgZm9yIG1vc3QgR3JhcGhpY3NMYXllcnMs
IGJ1dCBsZXNzIHRoYW4gdGhlIE9wZW5HTAotLy8gdGV4dHVyZSBzaXplIGxpbWl0IG9uIGFsbCBz
dXBwb3J0ZWQgaGFyZHdhcmUuCi1zdGF0aWMgY29uc3QgaW50IGNNYXhQaXhlbERpbWVuc2lvbiA9
IDIwMDA7Ci0KLS8vIFRoZSB3aWR0aCBhbmQgaGVpZ2h0IG9mIGEgc2luZ2xlIHRpbGUgaW4gYSB0
aWxlZCBsYXllci4gU2hvdWxkIGJlIGxhcmdlIGVub3VnaCB0bwotLy8gYXZvaWQgbG90cyBvZiBz
bWFsbCB0aWxlcyAoYW5kIHRoZXJlZm9yZSBsb3RzIG9mIGRyYXdpbmcgY2FsbGJhY2tzKSwgYnV0
IHNtYWxsIGVub3VnaAotLy8gdG8ga2VlcCB0aGUgb3ZlcmFsbCB0aWxlIGNvc3QgbG93Lgotc3Rh
dGljIGNvbnN0IGludCBjVGlsZWRMYXllclRpbGVTaXplID0gNTEyOwotCi0vLyBJZiB3ZSBzZW5k
IGEgZHVyYXRpb24gb2YgMCB0byBDQSwgdGhlbiBpdCB3aWxsIHVzZSB0aGUgZGVmYXVsdCBkdXJh
dGlvbgotLy8gb2YgMjUwbXMuIFNvIHNlbmQgYSB2ZXJ5IHNtYWxsIHZhbHVlIGluc3RlYWQuCi1z
dGF0aWMgY29uc3QgZmxvYXQgY0FuaW1hdGlvbkFsbW9zdFplcm9EdXJhdGlvbiA9IDFlLTNmOwot
Ci0vLyBDQUN1cnJlbnRNZWRpYVRpbWUoKSBpcyBhIHRpbWUgc2luY2UgYm9vdC4gVGhlc2UgbWV0
aG9kcyBjb252ZXJ0IGJldHdlZW4gdGhhdCBhbmQKLS8vIFdlYkNvcmUgdGltZSwgd2hpY2ggaXMg
c3lzdGVtIHRpbWUgKFVUQykuCi1zdGF0aWMgQ0ZUaW1lSW50ZXJ2YWwgY3VycmVudFRpbWVUb01l
ZGlhVGltZShkb3VibGUgdCkKLXsKLSAgICByZXR1cm4gQ0FDdXJyZW50TWVkaWFUaW1lKCkgKyB0
IC0gV1RGOjpjdXJyZW50VGltZSgpOwotfQotCi1zdGF0aWMgZG91YmxlIG1lZGlhVGltZVRvQ3Vy
cmVudFRpbWUoQ0ZUaW1lSW50ZXJ2YWwgdCkKLXsKLSAgICByZXR1cm4gV1RGOjpjdXJyZW50VGlt
ZSgpICsgdCAtIENBQ3VycmVudE1lZGlhVGltZSgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0KLUBpbnRlcmZhY2UgQ0FMYXllcihQcml2YXRlKQotLSAodm9pZClzZXRDb250ZW50c0No
YW5nZWQ7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgV2ViQW5pbWF0aW9uRGVsZWdhdGUgOiBOU09iamVj
dCB7Ci0gICAgV2ViQ29yZTo6R3JhcGhpY3NMYXllck1hYyogbV9ncmFwaGljc0xheWVyOwotfQot
Ci0tICh2b2lkKWFuaW1hdGlvbkRpZFN0YXJ0OihDQUFuaW1hdGlvbiAqKWFuaW07Ci0tIChXZWJD
b3JlOjpHcmFwaGljc0xheWVyTWFjKilncmFwaGljc0xheWVyOwotLSAodm9pZClzZXRMYXllcjoo
V2ViQ29yZTo6R3JhcGhpY3NMYXllck1hYyopZ3JhcGhpY3NMYXllcjsKLQotQGVuZAotCi1AaW1w
bGVtZW50YXRpb24gV2ViQW5pbWF0aW9uRGVsZWdhdGUKLQotLSAodm9pZClhbmltYXRpb25EaWRT
dGFydDooQ0FBbmltYXRpb24gKilhbmltYXRpb24KLXsKLSAgICBpZiAobV9ncmFwaGljc0xheWVy
KQotICAgICAgICBtX2dyYXBoaWNzTGF5ZXItPmFuaW1hdGlvbkRpZFN0YXJ0KGFuaW1hdGlvbik7
Ci19Ci0KLS0gKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJNYWMqKWdyYXBoaWNzTGF5ZXIKLXsKLSAg
ICByZXR1cm4gbV9ncmFwaGljc0xheWVyOwotfQotCi0tICh2b2lkKXNldExheWVyOihXZWJDb3Jl
OjpHcmFwaGljc0xheWVyTWFjKilncmFwaGljc0xheWVyCi17Ci0gICAgbV9ncmFwaGljc0xheWVy
ID0gZ3JhcGhpY3NMYXllcjsKLX0KLQotQGVuZAotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0
YXRpYyBpbmxpbmUgdm9pZCBjb3B5VHJhbnNmb3JtKENBVHJhbnNmb3JtM0QmIHRvVDNELCBjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdCkKLXsKLSAgICB0b1QzRC5tMTEgPSBuYXJyb3dQcmVj
aXNpb25Ub0Zsb2F0KHQubTExKCkpOwotICAgIHRvVDNELm0xMiA9IG5hcnJvd1ByZWNpc2lvblRv
RmxvYXQodC5tMTIoKSk7Ci0gICAgdG9UM0QubTEzID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCh0
Lm0xMygpKTsKLSAgICB0b1QzRC5tMTQgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHQubTE0KCkp
OwotICAgIHRvVDNELm0yMSA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodC5tMjEoKSk7Ci0gICAg
dG9UM0QubTIyID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCh0Lm0yMigpKTsKLSAgICB0b1QzRC5t
MjMgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHQubTIzKCkpOwotICAgIHRvVDNELm0yNCA9IG5h
cnJvd1ByZWNpc2lvblRvRmxvYXQodC5tMjQoKSk7Ci0gICAgdG9UM0QubTMxID0gbmFycm93UHJl
Y2lzaW9uVG9GbG9hdCh0Lm0zMSgpKTsKLSAgICB0b1QzRC5tMzIgPSBuYXJyb3dQcmVjaXNpb25U
b0Zsb2F0KHQubTMyKCkpOwotICAgIHRvVDNELm0zMyA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQo
dC5tMzMoKSk7Ci0gICAgdG9UM0QubTM0ID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCh0Lm0zNCgp
KTsKLSAgICB0b1QzRC5tNDEgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHQubTQxKCkpOwotICAg
IHRvVDNELm00MiA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodC5tNDIoKSk7Ci0gICAgdG9UM0Qu
bTQzID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCh0Lm00MygpKTsKLSAgICB0b1QzRC5tNDQgPSBu
YXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHQubTQ0KCkpOwotfQotCi1zdGF0aWMgTlNWYWx1ZSogZ2V0
VHJhbnNmb3JtRnVuY3Rpb25WYWx1ZShjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb24qIHRyYW5zZm9y
bU9wLCBUcmFuc2Zvcm1PcGVyYXRpb246Ok9wZXJhdGlvblR5cGUgdHJhbnNmb3JtVHlwZSwgY29u
c3QgSW50U2l6ZSYgc2l6ZSkKLXsKLSAgICBzd2l0Y2ggKHRyYW5zZm9ybVR5cGUpIHsKLSAgICAg
ICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlJPVEFURToKLSAgICAgICAgY2FzZSBUcmFuc2Zv
cm1PcGVyYXRpb246OlJPVEFURV9YOgotICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6
Uk9UQVRFX1k6Ci0gICAgICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6
dHJhbnNmb3JtT3AgPyBkZWcycmFkKHN0YXRpY19jYXN0PGNvbnN0IFJvdGF0ZVRyYW5zZm9ybU9w
ZXJhdGlvbio+KHRyYW5zZm9ybU9wKS0+YW5nbGUoKSkgOiAwXTsKLSAgICAgICAgY2FzZSBUcmFu
c2Zvcm1PcGVyYXRpb246OlNDQUxFX1g6Ci0gICAgICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51
bWJlcldpdGhEb3VibGU6dHJhbnNmb3JtT3AgPyBzdGF0aWNfY2FzdDxjb25zdCBTY2FsZVRyYW5z
Zm9ybU9wZXJhdGlvbio+KHRyYW5zZm9ybU9wKS0+eCgpIDogMV07Ci0gICAgICAgIGNhc2UgVHJh
bnNmb3JtT3BlcmF0aW9uOjpTQ0FMRV9ZOgotICAgICAgICAgICAgcmV0dXJuIFtOU051bWJlciBu
dW1iZXJXaXRoRG91YmxlOnRyYW5zZm9ybU9wID8gc3RhdGljX2Nhc3Q8Y29uc3QgU2NhbGVUcmFu
c2Zvcm1PcGVyYXRpb24qPih0cmFuc2Zvcm1PcCktPnkoKSA6IDFdOwotICAgICAgICBjYXNlIFRy
YW5zZm9ybU9wZXJhdGlvbjo6U0NBTEVfWjoKLSAgICAgICAgICAgIHJldHVybiBbTlNOdW1iZXIg
bnVtYmVyV2l0aERvdWJsZTp0cmFuc2Zvcm1PcCA/IHN0YXRpY19jYXN0PGNvbnN0IFNjYWxlVHJh
bnNmb3JtT3BlcmF0aW9uKj4odHJhbnNmb3JtT3ApLT56KCkgOiAxXTsKLSAgICAgICAgY2FzZSBU
cmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURV9YOgotICAgICAgICAgICAgcmV0dXJuIFtOU051
bWJlciBudW1iZXJXaXRoRG91YmxlOnRyYW5zZm9ybU9wID8gc3RhdGljX2Nhc3Q8Y29uc3QgVHJh
bnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uKj4odHJhbnNmb3JtT3ApLT54KHNpemUpIDogMF07Ci0g
ICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfWToKLSAgICAgICAgICAg
IHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTp0cmFuc2Zvcm1PcCA/IHN0YXRpY19j
YXN0PGNvbnN0IFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbio+KHRyYW5zZm9ybU9wKS0+eShz
aXplKSA6IDBdOwotICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFX1o6
Ci0gICAgICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6dHJhbnNmb3Jt
T3AgPyBzdGF0aWNfY2FzdDxjb25zdCBUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24qPih0cmFu
c2Zvcm1PcCktPnooc2l6ZSkgOiAwXTsKLSAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246
OlNDQUxFOgotICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0NBTEVfM0Q6Ci0gICAg
ICAgICAgICByZXR1cm4gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czoKLSAgICAgICAgICAgICAg
ICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOnRyYW5zZm9ybU9wID8gc3RhdGlj
X2Nhc3Q8Y29uc3QgU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24qPih0cmFuc2Zvcm1PcCktPngoKSA6
IDFdLAotICAgICAgICAgICAgICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6
dHJhbnNmb3JtT3AgPyBzdGF0aWNfY2FzdDxjb25zdCBTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbio+
KHRyYW5zZm9ybU9wKS0+eSgpIDogMV0sCi0gICAgICAgICAgICAgICAgICAgICAgICBbTlNOdW1i
ZXIgbnVtYmVyV2l0aERvdWJsZTp0cmFuc2Zvcm1PcCA/IHN0YXRpY19jYXN0PGNvbnN0IFNjYWxl
VHJhbnNmb3JtT3BlcmF0aW9uKj4odHJhbnNmb3JtT3ApLT56KCkgOiAxXSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIG5pbF07Ci0gICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFO
U0xBVEU6Ci0gICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfM0Q6Ci0g
ICAgICAgICAgICByZXR1cm4gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czoKLSAgICAgICAgICAg
ICAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOnRyYW5zZm9ybU9wID8gc3Rh
dGljX2Nhc3Q8Y29uc3QgVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uKj4odHJhbnNmb3JtT3Ap
LT54KHNpemUpIDogMF0sCi0gICAgICAgICAgICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVy
V2l0aERvdWJsZTp0cmFuc2Zvcm1PcCA/IHN0YXRpY19jYXN0PGNvbnN0IFRyYW5zbGF0ZVRyYW5z
Zm9ybU9wZXJhdGlvbio+KHRyYW5zZm9ybU9wKS0+eShzaXplKSA6IDBdLAotICAgICAgICAgICAg
ICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6dHJhbnNmb3JtT3AgPyBzdGF0
aWNfY2FzdDxjb25zdCBUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24qPih0cmFuc2Zvcm1PcCkt
Pnooc2l6ZSkgOiAwXSwKLSAgICAgICAgICAgICAgICAgICAgICAgIG5pbF07Ci0gICAgICAgIGNh
c2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpTS0VXX1g6Ci0gICAgICAgIGNhc2UgVHJhbnNmb3JtT3Bl
cmF0aW9uOjpTS0VXX1k6Ci0gICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpTS0VXOgot
ICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6TUFUUklYOgotICAgICAgICBjYXNlIFRy
YW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRFXzNEOgotICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJh
dGlvbjo6TUFUUklYXzNEOgotICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6UEVSU1BF
Q1RJVkU6Ci0gICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpJREVOVElUWToKLSAgICAg
ICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246Ok5PTkU6IHsKLSAgICAgICAgICAgIFRyYW5zZm9y
bWF0aW9uTWF0cml4IHRyYW5zZm9ybTsKLSAgICAgICAgICAgIGlmICh0cmFuc2Zvcm1PcCkKLSAg
ICAgICAgICAgICAgICB0cmFuc2Zvcm1PcC0+YXBwbHkodHJhbnNmb3JtLCBzaXplKTsKLSAgICAg
ICAgICAgIENBVHJhbnNmb3JtM0QgY2FUcmFuc2Zvcm07Ci0gICAgICAgICAgICBjb3B5VHJhbnNm
b3JtKGNhVHJhbnNmb3JtLCB0cmFuc2Zvcm0pOwotICAgICAgICAgICAgcmV0dXJuIFtOU1ZhbHVl
IHZhbHVlV2l0aENBVHJhbnNmb3JtM0Q6Y2FUcmFuc2Zvcm1dOwotICAgICAgICB9Ci0gICAgfQot
ICAgIAotICAgIHJldHVybiAwOwotfQotCi0jaWYgSEFWRV9NT0RFUk5fUVVBUlRaQ09SRQotc3Rh
dGljIE5TU3RyaW5nICpnZXRWYWx1ZUZ1bmN0aW9uTmFtZUZvclRyYW5zZm9ybU9wZXJhdGlvbihU
cmFuc2Zvcm1PcGVyYXRpb246Ok9wZXJhdGlvblR5cGUgdHJhbnNmb3JtVHlwZSkKLXsKLSAgICAv
LyBVc2UgbGl0ZXJhbCBzdHJpbmdzIHRvIGF2b2lkIGxpbmstdGltZSBkZXBlbmRlbmN5IG9uIHRo
b3NlIHN5bWJvbHMuCi0gICAgc3dpdGNoICh0cmFuc2Zvcm1UeXBlKSB7Ci0gICAgICAgIGNhc2Ug
VHJhbnNmb3JtT3BlcmF0aW9uOjpST1RBVEVfWDoKLSAgICAgICAgICAgIHJldHVybiBAInJvdGF0
ZVgiOyAvLyBrQ0FWYWx1ZUZ1bmN0aW9uUm90YXRlWDsKLSAgICAgICAgY2FzZSBUcmFuc2Zvcm1P
cGVyYXRpb246OlJPVEFURV9ZOgotICAgICAgICAgICAgcmV0dXJuIEAicm90YXRlWSI7IC8vIGtD
QVZhbHVlRnVuY3Rpb25Sb3RhdGVZOwotICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6
Uk9UQVRFOgotICAgICAgICAgICAgcmV0dXJuIEAicm90YXRlWiI7IC8vIGtDQVZhbHVlRnVuY3Rp
b25Sb3RhdGVaOwotICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0NBTEVfWDoKLSAg
ICAgICAgICAgIHJldHVybiBAInNjYWxlWCI7IC8vIGtDQVZhbHVlRnVuY3Rpb25TY2FsZVg7Ci0g
ICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpTQ0FMRV9ZOgotICAgICAgICAgICAgcmV0
dXJuIEAic2NhbGVZIjsgLy8ga0NBVmFsdWVGdW5jdGlvblNjYWxlWTsKLSAgICAgICAgY2FzZSBU
cmFuc2Zvcm1PcGVyYXRpb246OlNDQUxFX1o6Ci0gICAgICAgICAgICByZXR1cm4gQCJzY2FsZVoi
OyAvLyBrQ0FWYWx1ZUZ1bmN0aW9uU2NhbGVaOwotICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJh
dGlvbjo6VFJBTlNMQVRFX1g6Ci0gICAgICAgICAgICByZXR1cm4gQCJ0cmFuc2xhdGVYIjsgLy8g
a0NBVmFsdWVGdW5jdGlvblRyYW5zbGF0ZVg7Ci0gICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0
aW9uOjpUUkFOU0xBVEVfWToKLSAgICAgICAgICAgIHJldHVybiBAInRyYW5zbGF0ZVkiOyAvLyBr
Q0FWYWx1ZUZ1bmN0aW9uVHJhbnNsYXRlWTsKLSAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRp
b246OlRSQU5TTEFURV9aOgotICAgICAgICAgICAgcmV0dXJuIEAidHJhbnNsYXRlWiI7IC8vIGtD
QVZhbHVlRnVuY3Rpb25UcmFuc2xhdGVaOwotICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlv
bjo6U0NBTEU6Ci0gICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpTQ0FMRV8zRDoKLSAg
ICAgICAgICAgIHJldHVybiBAInNjYWxlIjsgLy8ga0NBVmFsdWVGdW5jdGlvblNjYWxlOwotICAg
ICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFOgotICAgICAgICBjYXNlIFRy
YW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFXzNEOgotICAgICAgICAgICAgcmV0dXJuIEAidHJh
bnNsYXRlIjsgLy8ga0NBVmFsdWVGdW5jdGlvblRyYW5zbGF0ZTsKLSAgICAgICAgZGVmYXVsdDoK
LSAgICAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgfQotfQotI2VuZGlmCi0KLXN0YXRpYyBTdHJp
bmcgcHJvcGVydHlJZFRvU3RyaW5nKEFuaW1hdGVkUHJvcGVydHlJRCBwcm9wZXJ0eSkKLXsKLSAg
ICBzd2l0Y2ggKHByb3BlcnR5KSB7Ci0gICAgICAgIGNhc2UgQW5pbWF0ZWRQcm9wZXJ0eVdlYmtp
dFRyYW5zZm9ybToKLSAgICAgICAgICAgIHJldHVybiAidHJhbnNmb3JtIjsKLSAgICAgICAgY2Fz
ZSBBbmltYXRlZFByb3BlcnR5T3BhY2l0eToKLSAgICAgICAgICAgIHJldHVybiAib3BhY2l0eSI7
Ci0gICAgICAgIGNhc2UgQW5pbWF0ZWRQcm9wZXJ0eUJhY2tncm91bmRDb2xvcjoKLSAgICAgICAg
ICAgIHJldHVybiAiYmFja2dyb3VuZENvbG9yIjsKLSAgICAgICAgY2FzZSBBbmltYXRlZFByb3Bl
cnR5SW52YWxpZDoKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KLSAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gIiI7Ci19Ci0KLXN0YXRpYyBTdHJp
bmcgYW5pbWF0aW9uSWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIEFuaW1h
dGVkUHJvcGVydHlJRCBwcm9wZXJ0eSwgaW50IGluZGV4KQotewotICAgIHJldHVybiBtYWtlU3Ry
aW5nKGFuaW1hdGlvbk5hbWUsICdfJywgU3RyaW5nOjpudW1iZXIocHJvcGVydHkpLCAnXycsIFN0
cmluZzo6bnVtYmVyKGluZGV4KSk7Ci19Ci0KLXN0YXRpYyBDQU1lZGlhVGltaW5nRnVuY3Rpb24q
IGdldENBTWVkaWFUaW1pbmdGdW5jdGlvbihjb25zdCBUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVu
Y3Rpb24pCi17Ci0gICAgLy8gQnkgdGhpcyBwb2ludCwgdGltaW5nIGZ1bmN0aW9ucyBjYW4gb25s
eSBiZSBsaW5lYXIgb3IgY3ViaWMsIG5vdCBzdGVwcy4KLSAgICBBU1NFUlQoIXRpbWluZ0Z1bmN0
aW9uLT5pc1N0ZXBzVGltaW5nRnVuY3Rpb24oKSk7Ci0gICAgaWYgKHRpbWluZ0Z1bmN0aW9uLT5p
c0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24oKSkgewotICAgICAgICBjb25zdCBDdWJpY0Jlemll
clRpbWluZ0Z1bmN0aW9uKiBjdGYgPSBzdGF0aWNfY2FzdDxjb25zdCBDdWJpY0JlemllclRpbWlu
Z0Z1bmN0aW9uKj4odGltaW5nRnVuY3Rpb24pOwotICAgICAgICByZXR1cm4gW0NBTWVkaWFUaW1p
bmdGdW5jdGlvbiBmdW5jdGlvbldpdGhDb250cm9sUG9pbnRzOnN0YXRpY19jYXN0PGZsb2F0Pihj
dGYtPngxKCkpIDpzdGF0aWNfY2FzdDxmbG9hdD4oY3RmLT55MSgpKQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOnN0YXRpY19j
YXN0PGZsb2F0PihjdGYtPngyKCkpIDpzdGF0aWNfY2FzdDxmbG9hdD4oY3RmLT55MigpKV07Ci0g
ICAgfSBlbHNlCi0gICAgICAgIHJldHVybiBbQ0FNZWRpYVRpbWluZ0Z1bmN0aW9uIGZ1bmN0aW9u
V2l0aE5hbWU6QCJsaW5lYXIiXTsKLX0KLQotc3RhdGljIHZvaWQgc2V0TGF5ZXJCb3JkZXJDb2xv
cihQbGF0Zm9ybUxheWVyKiBsYXllciwgY29uc3QgQ29sb3ImIGNvbG9yKQotewotICAgIFtsYXll
ciBzZXRCb3JkZXJDb2xvcjpjYWNoZWRDR0NvbG9yKGNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdC
KV07Ci19Ci0KLXN0YXRpYyB2b2lkIGNsZWFyQm9yZGVyQ29sb3IoUGxhdGZvcm1MYXllciogbGF5
ZXIpCi17Ci0gICAgW2xheWVyIHNldEJvcmRlckNvbG9yOm5pbF07Ci19Ci0KLXN0YXRpYyB2b2lk
IHNldExheWVyQmFja2dyb3VuZENvbG9yKFBsYXRmb3JtTGF5ZXIqIGxheWVyLCBjb25zdCBDb2xv
ciYgY29sb3IpCi17Ci0gICAgW2xheWVyIHNldEJhY2tncm91bmRDb2xvcjpjYWNoZWRDR0NvbG9y
KGNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKV07Ci19Ci0KLXN0YXRpYyB2b2lkIGNsZWFyTGF5
ZXJCYWNrZ3JvdW5kQ29sb3IoUGxhdGZvcm1MYXllciogbGF5ZXIpCi17Ci0gICAgW2xheWVyIHNl
dEJhY2tncm91bmRDb2xvcjowXTsKLX0KLQotc3RhdGljIHZvaWQgc2FmZVNldFN1YmxheWVycyhD
QUxheWVyKiBsYXllciwgTlNBcnJheSogc3VibGF5ZXJzKQotewotICAgIC8vIFdvcmthcm91bmQg
Zm9yIDxyZGFyOi8vcHJvYmxlbS83MzkwNzE2PjogLVtDQUxheWVyIHNldFN1YmxheWVyczpdIGNy
YXNoZXMgaWYgc3VibGF5ZXJzIGlzIGFuIGVtcHR5IGFycmF5LCBvciBuaWwsIHVuZGVyIEdDLgot
ICAgIGlmIChvYmpjX2NvbGxlY3RpbmdFbmFibGVkKCkgJiYgIVtzdWJsYXllcnMgY291bnRdKSB7
Ci0gICAgICAgIHdoaWxlIChbW2xheWVyIHN1YmxheWVyc10gY291bnRdKQotICAgICAgICAgICAg
W1tbbGF5ZXIgc3VibGF5ZXJzXSBvYmplY3RBdEluZGV4OjBdIHJlbW92ZUZyb21TdXBlcmxheWVy
XTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBbbGF5ZXIgc2V0U3VibGF5ZXJz
OnN1YmxheWVyc107Ci19Ci0KLXN0YXRpYyBib29sIGNhVmFsdWVGdW5jdGlvblN1cHBvcnRlZCgp
Ci17Ci0gICAgc3RhdGljIGJvb2wgc0hhdmVWYWx1ZUZ1bmN0aW9uID0gW0NBUHJvcGVydHlBbmlt
YXRpb24gaW5zdGFuY2VzUmVzcG9uZFRvU2VsZWN0b3I6QHNlbGVjdG9yKHNldFZhbHVlRnVuY3Rp
b246KV07Ci0gICAgcmV0dXJuIHNIYXZlVmFsdWVGdW5jdGlvbjsKLX0KLQotc3RhdGljIGJvb2wg
Zm9yY2VTb2Z0d2FyZUFuaW1hdGlvbigpCi17Ci0gICAgc3RhdGljIGJvb2wgZm9yY2VTb2Z0d2Fy
ZUFuaW1hdGlvbiA9IFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIGJvb2xG
b3JLZXk6QCJXZWJDb3JlRm9yY2VTb2Z0d2FyZUFuaW1hdGlvbiJdOwotICAgIHJldHVybiBmb3Jj
ZVNvZnR3YXJlQW5pbWF0aW9uOwotfQotCi1zdGF0aWMgTlNEaWN0aW9uYXJ5KiBudWxsQWN0aW9u
c0RpY3Rpb25hcnkoKQotewotICAgIE5TTnVsbCogbnVsbFZhbHVlID0gW05TTnVsbCBudWxsXTsK
LSAgICBOU0RpY3Rpb25hcnkqIGFjdGlvbnMgPSBbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRo
T2JqZWN0c0FuZEtleXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxWYWx1ZSwg
QCJhbmNob3JQb2ludCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxWYWx1ZSwg
QCJib3VuZHMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsVmFsdWUsIEAiY29u
dGVudHMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsVmFsdWUsIEAiY29udGVu
dHNSZWN0IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbFZhbHVlLCBAIm9wYWNp
dHkiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsVmFsdWUsIEAicG9zaXRpb24i
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsVmFsdWUsIEAic2hhZG93Q29sb3Ii
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsVmFsdWUsIEAic3VibGF5ZXJUcmFu
c2Zvcm0iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsVmFsdWUsIEAic3VibGF5
ZXJzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbFZhbHVlLCBAInRyYW5zZm9y
bSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxWYWx1ZSwgQCJ6UG9zaXRpb24i
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWxdOwotICAgIHJldHVybiBhY3Rpb25z
OwotfQotCi1zdGF0aWMgYm9vbCBhbmltYXRpb25IYXNTdGVwc1RpbWluZ0Z1bmN0aW9uKGNvbnN0
IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3QsIGNvbnN0IEFuaW1hdGlvbiogYW5pbSkKLXsK
LSAgICBpZiAoYW5pbS0+dGltaW5nRnVuY3Rpb24oKS0+aXNTdGVwc1RpbWluZ0Z1bmN0aW9uKCkp
Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIAotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCB2YWx1ZUxpc3Quc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgY29uc3QgVGltaW5nRnVuY3Rpb24q
IHRpbWluZ0Z1bmN0aW9uID0gdmFsdWVMaXN0LmF0KGkpLT50aW1pbmdGdW5jdGlvbigpOwotICAg
ICAgICBpZiAodGltaW5nRnVuY3Rpb24gJiYgdGltaW5nRnVuY3Rpb24tPmlzU3RlcHNUaW1pbmdG
dW5jdGlvbigpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgcmV0dXJu
IGZhbHNlOwotfQotCi1QYXNzT3duUHRyPEdyYXBoaWNzTGF5ZXI+IEdyYXBoaWNzTGF5ZXI6OmNy
ZWF0ZShHcmFwaGljc0xheWVyQ2xpZW50KiBjbGllbnQpCi17Ci0gICAgcmV0dXJuIG5ldyBHcmFw
aGljc0xheWVyTWFjKGNsaWVudCk7Ci19Ci0KLUdyYXBoaWNzTGF5ZXJNYWM6OkdyYXBoaWNzTGF5
ZXJNYWMoR3JhcGhpY3NMYXllckNsaWVudCogY2xpZW50KQotICAgIDogR3JhcGhpY3NMYXllcihj
bGllbnQpCi0gICAgLCBtX2NvbnRlbnRzTGF5ZXJQdXJwb3NlKE5vQ29udGVudHNMYXllcikKLSAg
ICAsIG1fY29udGVudHNMYXllckhhc0JhY2tncm91bmRDb2xvcihmYWxzZSkKLSAgICAsIG1fdW5j
b21taXR0ZWRDaGFuZ2VzKE5vQ2hhbmdlKQotewotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBU
SU9OUwotICAgIG1fbGF5ZXIuYWRvcHROUyhbW1dlYkxheWVyIGFsbG9jXSBpbml0XSk7Ci0gICAg
W21fbGF5ZXIuZ2V0KCkgc2V0TGF5ZXJPd25lcjp0aGlzXTsKLQotI2lmICFIQVZFX01PREVSTl9R
VUFSVFpDT1JFCi0gICAgc2V0Q29udGVudHNPcmllbnRhdGlvbihkZWZhdWx0Q29udGVudHNPcmll
bnRhdGlvbigpKTsKLSNlbmRpZgotCi0gICAgdXBkYXRlRGVidWdJbmRpY2F0b3JzKCk7Ci0KLSAg
ICBtX2FuaW1hdGlvbkRlbGVnYXRlLmFkb3B0TlMoW1tXZWJBbmltYXRpb25EZWxlZ2F0ZSBhbGxv
Y10gaW5pdF0pOwotICAgIFttX2FuaW1hdGlvbkRlbGVnYXRlLmdldCgpIHNldExheWVyOnRoaXNd
OwotICAgIAotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLX0KLQotR3JhcGhpY3NMYXll
ck1hYzo6fkdyYXBoaWNzTGF5ZXJNYWMoKQotewotICAgIC8vIFdlIHJlbGVhc2Ugb3VyIHJlZmVy
ZW5jZXMgdG8gdGhlIENBTGF5ZXJzIGhlcmUsIGJ1dCBkbyBub3QgYWN0aXZlbHkgdW5wYXJlbnQg
dGhlbSwKLSAgICAvLyBzaW5jZSB0aGF0IHdpbGwgY2F1c2UgYSBjb21taXQgYW5kIGJyZWFrIG91
ciBiYXRjaGVkIGNvbW1pdCBtb2RlbC4gVGhlIGxheWVycyB3aWxsCi0gICAgLy8gZ2V0IHJlbGVh
c2VkIHdoZW4gdGhlIHJvb3Rtb3N0IG1vZGlmaWVkIEdyYXBoaWNzTGF5ZXJNYWMgcmVidWlsZHMg
aXRzIGNoaWxkIGxheWVycy4KLSAgICAKLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMK
LQotICAgIC8vIENsZWFuIHVwIHRoZSBXSyBsYXllci4KLSAgICBpZiAobV9sYXllcikgewotICAg
ICAgICBXZWJMYXllciogbGF5ZXIgPSBtX2xheWVyLmdldCgpOwotICAgICAgICBbbGF5ZXIgc2V0
TGF5ZXJPd25lcjpuaWxdOwotICAgIH0KLSAgICAKLSAgICBpZiAobV9jb250ZW50c0xheWVyKSB7
Ci0gICAgICAgIGlmIChbbV9jb250ZW50c0xheWVyLmdldCgpIHJlc3BvbmRzVG9TZWxlY3RvcjpA
c2VsZWN0b3Ioc2V0TGF5ZXJPd25lcjopXSkKLSAgICAgICAgICAgIFsoaWQpbV9jb250ZW50c0xh
eWVyLmdldCgpIHNldExheWVyT3duZXI6bmlsXTsKLSAgICB9Ci0gICAgCi0gICAgLy8gYW5pbWF0
aW9uRGlkU3RhcnQ6IGNhbiBmaXJlIGFmdGVyIHRoaXMsIHNvIHdlIG5lZWQgdG8gY2xlYXIgb3V0
IHRoZSBsYXllciBvbiB0aGUgZGVsZWdhdGUuCi0gICAgW21fYW5pbWF0aW9uRGVsZWdhdGUuZ2V0
KCkgc2V0TGF5ZXI6MF07Ci0KLSAgICAvLyBSZWxlYXNlIHRoZSBjbG9uZSBsYXllcnMgaW5zaWRl
IHRoZSBleGNlcHRpb24taGFuZGxpbmcgYmxvY2suCi0gICAgcmVtb3ZlQ2xvbmVMYXllcnMoKTsK
LSAgICAKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi19Ci0KLXZvaWQgR3JhcGhpY3NM
YXllck1hYzo6c2V0TmFtZShjb25zdCBTdHJpbmcmIG5hbWUpCi17Ci0gICAgU3RyaW5nIGxvbmdO
YW1lID0gU3RyaW5nOjpmb3JtYXQoIkNBTGF5ZXIoJXApIEdyYXBoaWNzTGF5ZXIoJXApICIsIG1f
bGF5ZXIuZ2V0KCksIHRoaXMpICsgbmFtZTsKLSAgICBHcmFwaGljc0xheWVyOjpzZXROYW1lKGxv
bmdOYW1lKTsKLSAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoTmFtZUNoYW5nZWQpOwotfQot
Ci1OYXRpdmVMYXllciBHcmFwaGljc0xheWVyTWFjOjpuYXRpdmVMYXllcigpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIG1fbGF5ZXIuZ2V0KCk7Ci19Ci0KLWJvb2wgR3JhcGhpY3NMYXllck1hYzo6c2V0
Q2hpbGRyZW4oY29uc3QgVmVjdG9yPEdyYXBoaWNzTGF5ZXIqPiYgY2hpbGRyZW4pCi17Ci0gICAg
Ym9vbCBjaGlsZHJlbkNoYW5nZWQgPSBHcmFwaGljc0xheWVyOjpzZXRDaGlsZHJlbihjaGlsZHJl
bik7Ci0gICAgaWYgKGNoaWxkcmVuQ2hhbmdlZCkKLSAgICAgICAgbm90ZVN1YmxheWVyc0NoYW5n
ZWQoKTsKLSAgICAKLSAgICByZXR1cm4gY2hpbGRyZW5DaGFuZ2VkOwotfQotCi12b2lkIEdyYXBo
aWNzTGF5ZXJNYWM6OmFkZENoaWxkKEdyYXBoaWNzTGF5ZXIqIGNoaWxkTGF5ZXIpCi17Ci0gICAg
R3JhcGhpY3NMYXllcjo6YWRkQ2hpbGQoY2hpbGRMYXllcik7Ci0gICAgbm90ZVN1YmxheWVyc0No
YW5nZWQoKTsKLX0KLQotdm9pZCBHcmFwaGljc0xheWVyTWFjOjphZGRDaGlsZEF0SW5kZXgoR3Jh
cGhpY3NMYXllciogY2hpbGRMYXllciwgaW50IGluZGV4KQotewotICAgIEdyYXBoaWNzTGF5ZXI6
OmFkZENoaWxkQXRJbmRleChjaGlsZExheWVyLCBpbmRleCk7Ci0gICAgbm90ZVN1YmxheWVyc0No
YW5nZWQoKTsKLX0KLQotdm9pZCBHcmFwaGljc0xheWVyTWFjOjphZGRDaGlsZEJlbG93KEdyYXBo
aWNzTGF5ZXIqIGNoaWxkTGF5ZXIsIEdyYXBoaWNzTGF5ZXIqIHNpYmxpbmcpCi17Ci0gICAgR3Jh
cGhpY3NMYXllcjo6YWRkQ2hpbGRCZWxvdyhjaGlsZExheWVyLCBzaWJsaW5nKTsKLSAgICBub3Rl
U3VibGF5ZXJzQ2hhbmdlZCgpOwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OmFkZENoaWxk
QWJvdmUoR3JhcGhpY3NMYXllciogY2hpbGRMYXllciwgR3JhcGhpY3NMYXllciogc2libGluZykK
LXsKLSAgICBHcmFwaGljc0xheWVyOjphZGRDaGlsZEFib3ZlKGNoaWxkTGF5ZXIsIHNpYmxpbmcp
OwotICAgIG5vdGVTdWJsYXllcnNDaGFuZ2VkKCk7Ci19Ci0KLWJvb2wgR3JhcGhpY3NMYXllck1h
Yzo6cmVwbGFjZUNoaWxkKEdyYXBoaWNzTGF5ZXIqIG9sZENoaWxkLCBHcmFwaGljc0xheWVyKiBu
ZXdDaGlsZCkKLXsKLSAgICBpZiAoR3JhcGhpY3NMYXllcjo6cmVwbGFjZUNoaWxkKG9sZENoaWxk
LCBuZXdDaGlsZCkpIHsKLSAgICAgICAgbm90ZVN1YmxheWVyc0NoYW5nZWQoKTsKLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotdm9pZCBHcmFwaGlj
c0xheWVyTWFjOjpyZW1vdmVGcm9tUGFyZW50KCkKLXsKLSAgICBpZiAobV9wYXJlbnQpCi0gICAg
ICAgIHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXJNYWMqPihtX3BhcmVudCktPm5vdGVTdWJsYXll
cnNDaGFuZ2VkKCk7Ci0gICAgR3JhcGhpY3NMYXllcjo6cmVtb3ZlRnJvbVBhcmVudCgpOwotfQot
Ci12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnNldE1hc2tMYXllcihHcmFwaGljc0xheWVyKiBsYXll
cikKLXsKLSAgICBpZiAobGF5ZXIgPT0gbV9tYXNrTGF5ZXIpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIEdyYXBoaWNzTGF5ZXI6OnNldE1hc2tMYXllcihsYXllcik7Ci0gICAgbm90ZUxheWVyUHJv
cGVydHlDaGFuZ2VkKE1hc2tMYXllckNoYW5nZWQpOwotCi0gICAgcHJvcGFnYXRlTGF5ZXJDaGFu
Z2VUb1JlcGxpY2FzKCk7Ci0gICAgCi0gICAgaWYgKG1fcmVwbGljYXRlZExheWVyKQotICAgICAg
ICBzdGF0aWNfY2FzdDxHcmFwaGljc0xheWVyTWFjKj4obV9yZXBsaWNhdGVkTGF5ZXIpLT5wcm9w
YWdhdGVMYXllckNoYW5nZVRvUmVwbGljYXMoKTsKLX0KLQotdm9pZCBHcmFwaGljc0xheWVyTWFj
OjpzZXRSZXBsaWNhdGVkTGF5ZXIoR3JhcGhpY3NMYXllciogbGF5ZXIpCi17Ci0gICAgaWYgKGxh
eWVyID09IG1fcmVwbGljYXRlZExheWVyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBHcmFwaGlj
c0xheWVyOjpzZXRSZXBsaWNhdGVkTGF5ZXIobGF5ZXIpOwotICAgIG5vdGVMYXllclByb3BlcnR5
Q2hhbmdlZChSZXBsaWNhdGVkTGF5ZXJDaGFuZ2VkKTsKLX0KLQotdm9pZCBHcmFwaGljc0xheWVy
TWFjOjpzZXRSZXBsaWNhdGVkQnlMYXllcihHcmFwaGljc0xheWVyKiBsYXllcikKLXsKLSAgICBp
ZiAobGF5ZXIgPT0gbV9yZXBsaWNhTGF5ZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIEdyYXBo
aWNzTGF5ZXI6OnNldFJlcGxpY2F0ZWRCeUxheWVyKGxheWVyKTsKLSAgICBub3RlU3VibGF5ZXJz
Q2hhbmdlZCgpOwotICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChSZXBsaWNhdGVkTGF5ZXJD
aGFuZ2VkKTsKLX0KLQotdm9pZCBHcmFwaGljc0xheWVyTWFjOjpzZXRQb3NpdGlvbihjb25zdCBG
bG9hdFBvaW50JiBwb2ludCkKLXsKLSAgICBpZiAocG9pbnQgPT0gbV9wb3NpdGlvbikKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgR3JhcGhpY3NMYXllcjo6c2V0UG9zaXRpb24ocG9pbnQpOwotICAg
IG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChQb3NpdGlvbkNoYW5nZWQpOwotfQotCi12b2lkIEdy
YXBoaWNzTGF5ZXJNYWM6OnNldEFuY2hvclBvaW50KGNvbnN0IEZsb2F0UG9pbnQzRCYgcG9pbnQp
Ci17Ci0gICAgaWYgKHBvaW50ID09IG1fYW5jaG9yUG9pbnQpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIEdyYXBoaWNzTGF5ZXI6OnNldEFuY2hvclBvaW50KHBvaW50KTsKLSAgICBub3RlTGF5ZXJQ
cm9wZXJ0eUNoYW5nZWQoQW5jaG9yUG9pbnRDaGFuZ2VkKTsKLX0KLQotdm9pZCBHcmFwaGljc0xh
eWVyTWFjOjpzZXRTaXplKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKLXsKLSAgICBpZiAoc2l6ZSA9
PSBtX3NpemUpCi0gICAgICAgIHJldHVybjsKLQotICAgIEdyYXBoaWNzTGF5ZXI6OnNldFNpemUo
c2l6ZSk7Ci0gICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKFNpemVDaGFuZ2VkKTsKLX0KLQot
dm9pZCBHcmFwaGljc0xheWVyTWFjOjpzZXRUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXgmIHQpCi17Ci0gICAgaWYgKHQgPT0gbV90cmFuc2Zvcm0pCi0gICAgICAgIHJldHVybjsK
LQotICAgIEdyYXBoaWNzTGF5ZXI6OnNldFRyYW5zZm9ybSh0KTsKLSAgICBub3RlTGF5ZXJQcm9w
ZXJ0eUNoYW5nZWQoVHJhbnNmb3JtQ2hhbmdlZCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1h
Yzo6c2V0Q2hpbGRyZW5UcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHQpCi17
Ci0gICAgaWYgKHQgPT0gbV9jaGlsZHJlblRyYW5zZm9ybSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgR3JhcGhpY3NMYXllcjo6c2V0Q2hpbGRyZW5UcmFuc2Zvcm0odCk7Ci0gICAgbm90ZUxheWVy
UHJvcGVydHlDaGFuZ2VkKENoaWxkcmVuVHJhbnNmb3JtQ2hhbmdlZCk7Ci19Ci0KLXZvaWQgR3Jh
cGhpY3NMYXllck1hYzo6bW92ZU9yQ29weUxheWVyQW5pbWF0aW9uKE1vdmVPckNvcHkgb3BlcmF0
aW9uLCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbklkZW50aWZpZXIsIENBTGF5ZXIgKmZyb21MYXll
ciwgQ0FMYXllciAqdG9MYXllcikKLXsKLSAgICBOU1N0cmluZyAqYW5pbWF0aW9uSUQgPSBhbmlt
YXRpb25JZGVudGlmaWVyOwotICAgIENBQW5pbWF0aW9uICphbmltID0gW2Zyb21MYXllciBhbmlt
YXRpb25Gb3JLZXk6YW5pbWF0aW9uSURdOwotICAgIGlmICghYW5pbSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgc3dpdGNoIChvcGVyYXRpb24pIHsKLSAgICAgICAgY2FzZSBNb3ZlOgotICAgICAg
ICAgICAgW2FuaW0gcmV0YWluXTsKLSAgICAgICAgICAgIFtmcm9tTGF5ZXIgcmVtb3ZlQW5pbWF0
aW9uRm9yS2V5OmFuaW1hdGlvbklEXTsKLSAgICAgICAgICAgIFt0b0xheWVyIGFkZEFuaW1hdGlv
bjphbmltIGZvcktleTphbmltYXRpb25JRF07Ci0gICAgICAgICAgICBbYW5pbSByZWxlYXNlXTsK
LSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgQ29weToKLSAgICAgICAgICAgIFt0
b0xheWVyIGFkZEFuaW1hdGlvbjphbmltIGZvcktleTphbmltYXRpb25JRF07Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICB9Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6bW92ZU9yQ29weUFu
aW1hdGlvbnNGb3JQcm9wZXJ0eShNb3ZlT3JDb3B5IG9wZXJhdGlvbiwgQW5pbWF0ZWRQcm9wZXJ0
eUlEIHByb3BlcnR5LCBDQUxheWVyICpmcm9tTGF5ZXIsIENBTGF5ZXIgKnRvTGF5ZXIpCi17Ci0g
ICAgLy8gTG9vayBmb3IgcnVubmluZyBhbmltYXRpb25zIGFmZmVjdGluZyB0aGlzIHByb3BlcnR5
LgotICAgIEFuaW1hdGlvbnNNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fcnVubmluZ0FuaW1h
dGlvbnMuZW5kKCk7Ci0gICAgZm9yIChBbmltYXRpb25zTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9
IG1fcnVubmluZ0FuaW1hdGlvbnMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAg
IGNvbnN0IFZlY3RvcjxMYXllclByb3BlcnR5QW5pbWF0aW9uPiYgcHJvcGVydHlBbmltYXRpb25z
ID0gaXQtPnNlY29uZDsKLSAgICAgICAgc2l6ZV90IG51bUFuaW1hdGlvbnMgPSBwcm9wZXJ0eUFu
aW1hdGlvbnMuc2l6ZSgpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bUFuaW1h
dGlvbnM7ICsraSkgewotICAgICAgICAgICAgY29uc3QgTGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbiYg
Y3VyckFuaW1hdGlvbiA9IHByb3BlcnR5QW5pbWF0aW9uc1tpXTsKLSAgICAgICAgICAgIGlmIChj
dXJyQW5pbWF0aW9uLm1fcHJvcGVydHkgPT0gcHJvcGVydHkpCi0gICAgICAgICAgICAgICAgbW92
ZU9yQ29weUxheWVyQW5pbWF0aW9uKG9wZXJhdGlvbiwgYW5pbWF0aW9uSWRlbnRpZmllcihjdXJy
QW5pbWF0aW9uLm1fbmFtZSwgY3VyckFuaW1hdGlvbi5tX3Byb3BlcnR5LCBjdXJyQW5pbWF0aW9u
Lm1faW5kZXgpLCBmcm9tTGF5ZXIsIHRvTGF5ZXIpOwotICAgICAgICB9Ci0gICAgfQotfQotCi12
b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnNldFByZXNlcnZlczNEKGJvb2wgcHJlc2VydmVzM0QpCi17
Ci0gICAgaWYgKHByZXNlcnZlczNEID09IG1fcHJlc2VydmVzM0QpCi0gICAgICAgIHJldHVybjsK
LQotICAgIEdyYXBoaWNzTGF5ZXI6OnNldFByZXNlcnZlczNEKHByZXNlcnZlczNEKTsKLSAgICBu
b3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoUHJlc2VydmVzM0RDaGFuZ2VkKTsKLX0KLQotdm9pZCBH
cmFwaGljc0xheWVyTWFjOjpzZXRNYXNrc1RvQm91bmRzKGJvb2wgbWFza3NUb0JvdW5kcykKLXsK
LSAgICBpZiAobWFza3NUb0JvdW5kcyA9PSBtX21hc2tzVG9Cb3VuZHMpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIEdyYXBoaWNzTGF5ZXI6OnNldE1hc2tzVG9Cb3VuZHMobWFza3NUb0JvdW5kcyk7
Ci0gICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKE1hc2tzVG9Cb3VuZHNDaGFuZ2VkKTsKLX0K
LQotdm9pZCBHcmFwaGljc0xheWVyTWFjOjpzZXREcmF3c0NvbnRlbnQoYm9vbCBkcmF3c0NvbnRl
bnQpCi17Ci0gICAgaWYgKGRyYXdzQ29udGVudCA9PSBtX2RyYXdzQ29udGVudCkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgR3JhcGhpY3NMYXllcjo6c2V0RHJhd3NDb250ZW50KGRyYXdzQ29udGVu
dCk7Ci0gICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKERyYXdzQ29udGVudENoYW5nZWQpOwot
fQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnNldEJhY2tncm91bmRDb2xvcihjb25zdCBDb2xv
ciYgY29sb3IpCi17Ci0gICAgaWYgKG1fYmFja2dyb3VuZENvbG9yU2V0ICYmIG1fYmFja2dyb3Vu
ZENvbG9yID09IGNvbG9yKQotICAgICAgICByZXR1cm47Ci0KLSAgICBHcmFwaGljc0xheWVyOjpz
ZXRCYWNrZ3JvdW5kQ29sb3IoY29sb3IpOwotCi0gICAgbV9jb250ZW50c0xheWVySGFzQmFja2dy
b3VuZENvbG9yID0gdHJ1ZTsKLSAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoQmFja2dyb3Vu
ZENvbG9yQ2hhbmdlZCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6Y2xlYXJCYWNrZ3Jv
dW5kQ29sb3IoKQotewotICAgIGlmICghbV9iYWNrZ3JvdW5kQ29sb3JTZXQpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIEdyYXBoaWNzTGF5ZXI6OmNsZWFyQmFja2dyb3VuZENvbG9yKCk7Ci0gICAg
bV9jb250ZW50c0xheWVySGFzQmFja2dyb3VuZENvbG9yID0gZmFsc2U7Ci0gICAgbm90ZUxheWVy
UHJvcGVydHlDaGFuZ2VkKEJhY2tncm91bmRDb2xvckNoYW5nZWQpOwotfQotCi12b2lkIEdyYXBo
aWNzTGF5ZXJNYWM6OnNldENvbnRlbnRzT3BhcXVlKGJvb2wgb3BhcXVlKQotewotICAgIGlmICht
X2NvbnRlbnRzT3BhcXVlID09IG9wYXF1ZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgR3JhcGhp
Y3NMYXllcjo6c2V0Q29udGVudHNPcGFxdWUob3BhcXVlKTsKLSAgICBub3RlTGF5ZXJQcm9wZXJ0
eUNoYW5nZWQoQ29udGVudHNPcGFxdWVDaGFuZ2VkKTsKLX0KLQotdm9pZCBHcmFwaGljc0xheWVy
TWFjOjpzZXRCYWNrZmFjZVZpc2liaWxpdHkoYm9vbCB2aXNpYmxlKQotewotICAgIGlmIChtX2Jh
Y2tmYWNlVmlzaWJpbGl0eSA9PSB2aXNpYmxlKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAg
R3JhcGhpY3NMYXllcjo6c2V0QmFja2ZhY2VWaXNpYmlsaXR5KHZpc2libGUpOwotICAgIG5vdGVM
YXllclByb3BlcnR5Q2hhbmdlZChCYWNrZmFjZVZpc2liaWxpdHlDaGFuZ2VkKTsKLX0KLQotdm9p
ZCBHcmFwaGljc0xheWVyTWFjOjpzZXRPcGFjaXR5KGZsb2F0IG9wYWNpdHkpCi17Ci0gICAgZmxv
YXQgY2xhbXBlZE9wYWNpdHkgPSBtYXgoMC4wZiwgbWluKG9wYWNpdHksIDEuMGYpKTsKLQotICAg
IGlmIChjbGFtcGVkT3BhY2l0eSA9PSBtX29wYWNpdHkpCi0gICAgICAgIHJldHVybjsKLQotICAg
IEdyYXBoaWNzTGF5ZXI6OnNldE9wYWNpdHkoY2xhbXBlZE9wYWNpdHkpOwotICAgIG5vdGVMYXll
clByb3BlcnR5Q2hhbmdlZChPcGFjaXR5Q2hhbmdlZCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXll
ck1hYzo6c2V0TmVlZHNEaXNwbGF5KCkKLXsKLSAgICBGbG9hdFJlY3QgaHVnZVJlY3QoLW51bWVy
aWNfbGltaXRzPGZsb2F0Pjo6bWF4KCkgLyAyLCAtbnVtZXJpY19saW1pdHM8ZmxvYXQ+OjptYXgo
KSAvIDIsCi0gICAgICAgICAgICAgICAgICAgICAgIG51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4
KCksIG51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4KCkpOwotCi0gICAgc2V0TmVlZHNEaXNwbGF5
SW5SZWN0KGh1Z2VSZWN0KTsKLX0KLQotdm9pZCBHcmFwaGljc0xheWVyTWFjOjpzZXROZWVkc0Rp
c3BsYXlJblJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQotewotICAgIGlmICghZHJhd3NDb250
ZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGNvbnN0IHNpemVfdCBtYXhEaXJ0eVJlY3Rz
ID0gMzI7Ci0gICAgCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2RpcnR5UmVjdHMuc2l6
ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKG1fZGlydHlSZWN0c1tpXS5jb250YWlucyhyZWN0KSkK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgaWYgKG1fZGlydHlSZWN0cy5z
aXplKCkgPCBtYXhEaXJ0eVJlY3RzKQotICAgICAgICBtX2RpcnR5UmVjdHMuYXBwZW5kKHJlY3Qp
OwotICAgIGVsc2UKLSAgICAgICAgbV9kaXJ0eVJlY3RzWzBdLnVuaXRlKHJlY3QpOwotCi0gICAg
bm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKERpcnR5UmVjdHNDaGFuZ2VkKTsKLX0KLQotdm9pZCBH
cmFwaGljc0xheWVyTWFjOjpzZXRDb250ZW50c05lZWRzRGlzcGxheSgpCi17Ci0gICAgbm90ZUxh
eWVyUHJvcGVydHlDaGFuZ2VkKENvbnRlbnRzTmVlZHNEaXNwbGF5KTsKLX0KLQotdm9pZCBHcmFw
aGljc0xheWVyTWFjOjpzZXRDb250ZW50c1JlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkKLXsKLSAg
ICBpZiAocmVjdCA9PSBtX2NvbnRlbnRzUmVjdCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgR3Jh
cGhpY3NMYXllcjo6c2V0Q29udGVudHNSZWN0KHJlY3QpOwotICAgIG5vdGVMYXllclByb3BlcnR5
Q2hhbmdlZChDb250ZW50c1JlY3RDaGFuZ2VkKTsKLX0KLQotYm9vbCBHcmFwaGljc0xheWVyTWFj
OjphZGRBbmltYXRpb24oY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCwgY29uc3Qg
SW50U2l6ZSYgYm94U2l6ZSwgY29uc3QgQW5pbWF0aW9uKiBhbmltLCBjb25zdCBTdHJpbmcmIGFu
aW1hdGlvbk5hbWUsIGRvdWJsZSB0aW1lT2Zmc2V0KQotewotICAgIEFTU0VSVCghYW5pbWF0aW9u
TmFtZS5pc0VtcHR5KCkpOwotCi0gICAgaWYgKGZvcmNlU29mdHdhcmVBbmltYXRpb24oKSB8fCAh
YW5pbSB8fCBhbmltLT5pc0VtcHR5T3JaZXJvRHVyYXRpb24oKSB8fCB2YWx1ZUxpc3Quc2l6ZSgp
IDwgMikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0jaWYgIUhBVkVfTU9ERVJOX1FVQVJUWkNP
UkUKLSAgICAvLyBPbGRlciB2ZXJzaW9ucyBvZiBRdWFydHpDb3JlIGRvIG5vdCBoYW5kbGUgb3Bh
Y2l0eSBpbiB0cmFuc2Zvcm0gbGF5ZXJzIHByb3Blcmx5LCBzbyB3ZSB3aWxsCi0gICAgLy8gYWx3
YXlzIGRvIHNvZnR3YXJlIGFuaW1hdGlvbiBpbiB0aGF0IGNhc2UuCi0gICAgaWYgKHZhbHVlTGlz
dC5wcm9wZXJ0eSgpID09IEFuaW1hdGVkUHJvcGVydHlPcGFjaXR5KQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0jZW5kaWYKLQotICAgIC8vIENvcmVBbmltYXRpb24gZG9lcyBub3QgaGFuZGxlIHRo
ZSBzdGVwcygpIHRpbWluZyBmdW5jdGlvbi4gRmFsbCBiYWNrCi0gICAgLy8gdG8gc29mdHdhcmUg
YW5pbWF0aW9uIGluIHRoYXQgY2FzZS4KLSAgICBpZiAoYW5pbWF0aW9uSGFzU3RlcHNUaW1pbmdG
dW5jdGlvbih2YWx1ZUxpc3QsIGFuaW0pKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBi
b29sIGNyZWF0ZWRBbmltYXRpb25zID0gZmFsc2U7Ci0gICAgaWYgKHZhbHVlTGlzdC5wcm9wZXJ0
eSgpID09IEFuaW1hdGVkUHJvcGVydHlXZWJraXRUcmFuc2Zvcm0pCi0gICAgICAgIGNyZWF0ZWRB
bmltYXRpb25zID0gY3JlYXRlVHJhbnNmb3JtQW5pbWF0aW9uc0Zyb21LZXlmcmFtZXModmFsdWVM
aXN0LCBhbmltLCBhbmltYXRpb25OYW1lLCB0aW1lT2Zmc2V0LCBib3hTaXplKTsKLSAgICBlbHNl
Ci0gICAgICAgIGNyZWF0ZWRBbmltYXRpb25zID0gY3JlYXRlQW5pbWF0aW9uRnJvbUtleWZyYW1l
cyh2YWx1ZUxpc3QsIGFuaW0sIGFuaW1hdGlvbk5hbWUsIHRpbWVPZmZzZXQpOwotCi0gICAgaWYg
KGNyZWF0ZWRBbmltYXRpb25zKQotICAgICAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoQW5p
bWF0aW9uQ2hhbmdlZCk7Ci0gICAgICAgIAotICAgIHJldHVybiBjcmVhdGVkQW5pbWF0aW9uczsK
LX0KLQotdm9pZCBHcmFwaGljc0xheWVyTWFjOjpwYXVzZUFuaW1hdGlvbihjb25zdCBTdHJpbmcm
IGFuaW1hdGlvbk5hbWUsIGRvdWJsZSB0aW1lT2Zmc2V0KQotewotICAgIGlmICghYW5pbWF0aW9u
SXNSdW5uaW5nKGFuaW1hdGlvbk5hbWUpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBBbmltYXRp
b25zVG9Qcm9jZXNzTWFwOjppdGVyYXRvciBpdCA9IG1fYW5pbWF0aW9uc1RvUHJvY2Vzcy5maW5k
KGFuaW1hdGlvbk5hbWUpOwotICAgIGlmIChpdCAhPSBtX2FuaW1hdGlvbnNUb1Byb2Nlc3MuZW5k
KCkpIHsKLSAgICAgICAgQW5pbWF0aW9uUHJvY2Vzc2luZ0FjdGlvbiYgcHJvY2Vzc2luZ0luZm8g
PSBpdC0+c2Vjb25kOwotICAgICAgICAvLyBJZiBhbiBhbmltYXRpb24gaXMgc2NoZWR1bGVkIHRv
IGJlIHJlbW92ZWQsIGRvbid0IGNoYW5nZSB0aGUgcmVtb3ZlIHRvIGEgcGF1c2UuCi0gICAgICAg
IGlmIChwcm9jZXNzaW5nSW5mby5hY3Rpb24gIT0gUmVtb3ZlKQotICAgICAgICAgICAgcHJvY2Vz
c2luZ0luZm8uYWN0aW9uID0gUGF1c2U7Ci0gICAgfSBlbHNlCi0gICAgICAgIG1fYW5pbWF0aW9u
c1RvUHJvY2Vzcy5hZGQoYW5pbWF0aW9uTmFtZSwgQW5pbWF0aW9uUHJvY2Vzc2luZ0FjdGlvbihQ
YXVzZSwgdGltZU9mZnNldCkpOwotCi0gICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKEFuaW1h
dGlvbkNoYW5nZWQpOwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnJlbW92ZUFuaW1hdGlv
bihjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUpCi17Ci0gICAgaWYgKCFhbmltYXRpb25Jc1J1
bm5pbmcoYW5pbWF0aW9uTmFtZSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fYW5pbWF0aW9u
c1RvUHJvY2Vzcy5hZGQoYW5pbWF0aW9uTmFtZSwgQW5pbWF0aW9uUHJvY2Vzc2luZ0FjdGlvbihS
ZW1vdmUpKTsKLSAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoQW5pbWF0aW9uQ2hhbmdlZCk7
Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6YW5pbWF0aW9uRGlkU3RhcnQoQ0FBbmltYXRp
b24qIGNhQW5pbWF0aW9uKQotewotICAgIGJvb2wgaGFkTm9uWmVyb0JlZ2luVGltZSA9IFtbY2FB
bmltYXRpb24gdmFsdWVGb3JLZXk6V2ViS2l0QW5pbWF0aW9uQmVnaW5UaW1lU2V0S2V5XSBib29s
VmFsdWVdOwotCi0gICAgZG91YmxlIHN0YXJ0VGltZTsKLSAgICBpZiAoaGFkTm9uWmVyb0JlZ2lu
VGltZSkgewotICAgICAgICAvLyBXZSBkb24ndCBrbm93IHdoYXQgdGltZSBDQSB1c2VkIHRvIGNv
bW1pdCB0aGUgYW5pbWF0aW9uLCBzbyBqdXN0IHVzZSB0aGUgY3VycmVudCB0aW1lCi0gICAgICAg
IC8vIChldmVuIHRob3VnaCB0aGlzIHdpbGwgYmUgc2xpZ2h0bHkgb2ZmKS4KLSAgICAgICAgc3Rh
cnRUaW1lID0gV2ViQ29yZTo6bWVkaWFUaW1lVG9DdXJyZW50VGltZShDQUN1cnJlbnRNZWRpYVRp
bWUoKSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIHN0YXJ0VGltZSA9IFdlYkNvcmU6Om1lZGlhVGlt
ZVRvQ3VycmVudFRpbWUoW2NhQW5pbWF0aW9uIGJlZ2luVGltZV0pOwotCi0gICAgaWYgKG1fY2xp
ZW50KQotICAgICAgICBtX2NsaWVudC0+bm90aWZ5QW5pbWF0aW9uU3RhcnRlZCh0aGlzLCBzdGFy
dFRpbWUpOwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnNldENvbnRlbnRzVG9JbWFnZShJ
bWFnZSogaW1hZ2UpCi17Ci0gICAgaWYgKGltYWdlKSB7Ci0gICAgICAgIENHSW1hZ2VSZWYgbmV3
SW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKLSAgICAgICAgaWYg
KCFuZXdJbWFnZSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAvLyBDaGVjayB0byBz
ZWUgaWYgdGhlIGltYWdlIGNoYW5nZWQ7IHdlIGhhdmUgdG8gZG8gdGhpcyBiZWNhdXNlIHRoZSBj
YWxsIHRvCi0gICAgICAgIC8vIENHSW1hZ2VDcmVhdGVDb3B5V2l0aENvbG9yU3BhY2UoKSBiZWxv
dyBjYW4gY3JlYXRlIGEgbmV3IGltYWdlIGV2ZXJ5IHRpbWUuCi0gICAgICAgIGlmIChtX3VuY29y
cmVjdGVkQ29udGVudHNJbWFnZSAmJiBtX3VuY29ycmVjdGVkQ29udGVudHNJbWFnZS5nZXQoKSA9
PSBuZXdJbWFnZSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgCi0gICAgICAgIG1fdW5j
b3JyZWN0ZWRDb250ZW50c0ltYWdlID0gbmV3SW1hZ2U7Ci0gICAgICAgIG1fcGVuZGluZ0NvbnRl
bnRzSW1hZ2UgPSBuZXdJbWFnZTsKLSAgICAgICAgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2Ug
PSBDR0ltYWdlR2V0Q29sb3JTcGFjZShtX3BlbmRpbmdDb250ZW50c0ltYWdlLmdldCgpKTsKLQot
ICAgICAgICBzdGF0aWMgQ0dDb2xvclNwYWNlUmVmIGRldmljZVJHQiA9IENHQ29sb3JTcGFjZUNy
ZWF0ZURldmljZVJHQigpOwotICAgICAgICBpZiAoY29sb3JTcGFjZSAmJiBDRkVxdWFsKGNvbG9y
U3BhY2UsIGRldmljZVJHQikpIHsKLSAgICAgICAgICAgIC8vIENvcmVHcmFwaGljcyByZW5kZXJz
IGltYWdlcyB0YWdnZWQgd2l0aCBEZXZpY2VSR0IgdXNpbmcgdGhlIGNvbG9yIHNwYWNlIG9mIHRo
ZSBtYWluIGRpc3BsYXkuIFdoZW4gd2UgaGFuZCBzdWNoCi0gICAgICAgICAgICAvLyBpbWFnZXMg
dG8gQ0Egd2UgbmVlZCB0byB0YWcgdGhlbSBzaW1pbGFybHkgc28gQ0EgcmVuZGVyaW5nIG1hdGNo
ZXMgQ0cgcmVuZGVyaW5nLgotICAgICAgICAgICAgc3RhdGljIENHQ29sb3JTcGFjZVJlZiBnZW5l
cmljUkdCID0gQ0dEaXNwbGF5Q29weUNvbG9yU3BhY2Uoa0NHRGlyZWN0TWFpbkRpc3BsYXkpOwot
ICAgICAgICAgICAgbV9wZW5kaW5nQ29udGVudHNJbWFnZS5hZG9wdENGKENHSW1hZ2VDcmVhdGVD
b3B5V2l0aENvbG9yU3BhY2UobV9wZW5kaW5nQ29udGVudHNJbWFnZS5nZXQoKSwgZ2VuZXJpY1JH
QikpOwotICAgICAgICB9Ci0gICAgICAgIG1fY29udGVudHNMYXllclB1cnBvc2UgPSBDb250ZW50
c0xheWVyRm9ySW1hZ2U7Ci0gICAgICAgIGlmICghbV9jb250ZW50c0xheWVyKQotICAgICAgICAg
ICAgbm90ZVN1YmxheWVyc0NoYW5nZWQoKTsKLSAgICB9IGVsc2UgewotICAgICAgICBtX3VuY29y
cmVjdGVkQ29udGVudHNJbWFnZSA9IDA7Ci0gICAgICAgIG1fcGVuZGluZ0NvbnRlbnRzSW1hZ2Ug
PSAwOwotICAgICAgICBtX2NvbnRlbnRzTGF5ZXJQdXJwb3NlID0gTm9Db250ZW50c0xheWVyOwot
ICAgICAgICBpZiAobV9jb250ZW50c0xheWVyKQotICAgICAgICAgICAgbm90ZVN1YmxheWVyc0No
YW5nZWQoKTsKLSAgICB9Ci0KLSAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoQ29udGVudHNJ
bWFnZUNoYW5nZWQpOwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnNldENvbnRlbnRzVG9N
ZWRpYShQbGF0Zm9ybUxheWVyKiBtZWRpYUxheWVyKQotewotICAgIGlmIChtZWRpYUxheWVyID09
IG1fY29udGVudHNMYXllcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9jb250ZW50c0xheWVy
ID0gbWVkaWFMYXllcjsKLSAgICBtX2NvbnRlbnRzTGF5ZXJQdXJwb3NlID0gbWVkaWFMYXllciA/
IENvbnRlbnRzTGF5ZXJGb3JNZWRpYSA6IE5vQ29udGVudHNMYXllcjsKLQotICAgIG5vdGVTdWJs
YXllcnNDaGFuZ2VkKCk7Ci0gICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKENvbnRlbnRzTWVk
aWFMYXllckNoYW5nZWQpOwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OmRpZERpc3BsYXko
UGxhdGZvcm1MYXllciogbGF5ZXIpCi17Ci0gICAgQ0FMYXllciogc291cmNlTGF5ZXI7Ci0gICAg
TGF5ZXJNYXAqIGxheWVyQ2xvbmVNYXA7Ci0KLSAgICBpZiAobGF5ZXIgPT0gbV9sYXllcikgewot
ICAgICAgICBzb3VyY2VMYXllciA9IG1fbGF5ZXIuZ2V0KCk7Ci0gICAgICAgIGxheWVyQ2xvbmVN
YXAgPSBtX2xheWVyQ2xvbmVzLmdldCgpOwotICAgIH0gZWxzZSBpZiAobGF5ZXIgPT0gbV9jb250
ZW50c0xheWVyKSB7Ci0gICAgICAgIHNvdXJjZUxheWVyID0gbV9jb250ZW50c0xheWVyLmdldCgp
OwotICAgICAgICBsYXllckNsb25lTWFwID0gbV9jb250ZW50c0xheWVyQ2xvbmVzLmdldCgpOwot
ICAgIH0gZWxzZQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAobGF5ZXJDbG9uZU1hcCkgewot
ICAgICAgICBMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbGF5ZXJDbG9uZU1hcC0+ZW5k
KCk7Ci0gICAgICAgIGZvciAoTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbGF5ZXJDbG9u
ZU1hcC0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICBDQUxheWVyICpj
dXJyQ2xvbmUgPSBpdC0+c2Vjb25kLmdldCgpOwotICAgICAgICAgICAgaWYgKCFjdXJyQ2xvbmUp
Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgIGlmIChbY3VyckNsb25l
IGNvbnRlbnRzXSAhPSBbc291cmNlTGF5ZXIgY29udGVudHNdKQotICAgICAgICAgICAgICAgIFtj
dXJyQ2xvbmUgc2V0Q29udGVudHM6W3NvdXJjZUxheWVyIGNvbnRlbnRzXV07Ci0gICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgW2N1cnJDbG9uZSBzZXRDb250ZW50c0NoYW5nZWRdOwot
ICAgICAgICB9Ci0gICAgfQotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnN5bmNDb21wb3Np
dGluZ1N0YXRlKCkKLXsKLSAgICByZWN1cnNpdmVDb21taXRDaGFuZ2VzKCk7Ci19Ci0KLXZvaWQg
R3JhcGhpY3NMYXllck1hYzo6c3luY0NvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KCkK
LXsKLSAgICBjb21taXRMYXllckNoYW5nZXNCZWZvcmVTdWJsYXllcnMoKTsKLSAgICBjb21taXRM
YXllckNoYW5nZXNBZnRlclN1YmxheWVycygpOwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6
OnJlY3Vyc2l2ZUNvbW1pdENoYW5nZXMoKQotewotICAgIGNvbW1pdExheWVyQ2hhbmdlc0JlZm9y
ZVN1YmxheWVycygpOwotCi0gICAgaWYgKG1fbWFza0xheWVyKQotICAgICAgICBzdGF0aWNfY2Fz
dDxHcmFwaGljc0xheWVyTWFjKj4obV9tYXNrTGF5ZXIpLT5jb21taXRMYXllckNoYW5nZXNCZWZv
cmVTdWJsYXllcnMoKTsKLQotICAgIGNvbnN0IFZlY3RvcjxHcmFwaGljc0xheWVyKj4mIGNoaWxk
TGF5ZXJzID0gY2hpbGRyZW4oKTsKLSAgICBzaXplX3QgbnVtQ2hpbGRyZW4gPSBjaGlsZExheWVy
cy5zaXplKCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1DaGlsZHJlbjsgKytpKSB7
Ci0gICAgICAgIEdyYXBoaWNzTGF5ZXJNYWMqIGN1ckNoaWxkID0gc3RhdGljX2Nhc3Q8R3JhcGhp
Y3NMYXllck1hYyo+KGNoaWxkTGF5ZXJzW2ldKTsKLSAgICAgICAgY3VyQ2hpbGQtPnJlY3Vyc2l2
ZUNvbW1pdENoYW5nZXMoKTsKLSAgICB9Ci0KLSAgICBpZiAobV9yZXBsaWNhTGF5ZXIpCi0gICAg
ICAgIHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXJNYWMqPihtX3JlcGxpY2FMYXllciktPnJlY3Vy
c2l2ZUNvbW1pdENoYW5nZXMoKTsKLQotICAgIGlmIChtX21hc2tMYXllcikKLSAgICAgICAgc3Rh
dGljX2Nhc3Q8R3JhcGhpY3NMYXllck1hYyo+KG1fbWFza0xheWVyKS0+Y29tbWl0TGF5ZXJDaGFu
Z2VzQWZ0ZXJTdWJsYXllcnMoKTsKLQotICAgIGNvbW1pdExheWVyQ2hhbmdlc0FmdGVyU3VibGF5
ZXJzKCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6Y29tbWl0TGF5ZXJDaGFuZ2VzQmVm
b3JlU3VibGF5ZXJzKCkKLXsKLSAgICBpZiAoIW1fdW5jb21taXR0ZWRDaGFuZ2VzKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIC8vIE5l
ZWQgdG8gaGFuZGxlIFByZXNlcnZlczNEQ2hhbmdlZCBmaXJzdCwgYmVjYXVzZSBpdCBhZmZlY3Rz
IHdoaWNoIGxheWVycyBzdWJzZXF1ZW50IHByb3BlcnRpZXMgYXJlIGFwcGxpZWQgdG8KLSAgICBp
ZiAobV91bmNvbW1pdHRlZENoYW5nZXMgJiAoUHJlc2VydmVzM0RDaGFuZ2VkIHwgUmVwbGljYXRl
ZExheWVyQ2hhbmdlZCkpCi0gICAgICAgIHVwZGF0ZVN0cnVjdHVyYWxMYXllcigpOwotCi0gICAg
aWYgKG1fdW5jb21taXR0ZWRDaGFuZ2VzICYgTmFtZUNoYW5nZWQpCi0gICAgICAgIHVwZGF0ZUxh
eWVyTmFtZXMoKTsKLQotICAgIGlmIChtX3VuY29tbWl0dGVkQ2hhbmdlcyAmIENvbnRlbnRzSW1h
Z2VDaGFuZ2VkKSAvLyBOZWVkcyB0byBoYXBwZW4gYmVmb3JlIENoaWxkcmVuQ2hhbmdlZAotICAg
ICAgICB1cGRhdGVDb250ZW50c0ltYWdlKCk7Ci0gICAgICAgIAotICAgIGlmIChtX3VuY29tbWl0
dGVkQ2hhbmdlcyAmIENvbnRlbnRzTWVkaWFMYXllckNoYW5nZWQpIC8vIE5lZWRzIHRvIGhhcHBl
biBiZWZvcmUgQ2hpbGRyZW5DaGFuZ2VkCi0gICAgICAgIHVwZGF0ZUNvbnRlbnRzTWVkaWFMYXll
cigpOwotICAgIAotICAgIGlmIChtX3VuY29tbWl0dGVkQ2hhbmdlcyAmIENvbnRlbnRzQ2FudmFz
TGF5ZXJDaGFuZ2VkKSAvLyBOZWVkcyB0byBoYXBwZW4gYmVmb3JlIENoaWxkcmVuQ2hhbmdlZAot
ICAgICAgICB1cGRhdGVDb250ZW50c0NhbnZhc0xheWVyKCk7Ci0gICAgCi0gICAgaWYgKG1fdW5j
b21taXR0ZWRDaGFuZ2VzICYgQmFja2dyb3VuZENvbG9yQ2hhbmdlZCkgIC8vIE5lZWRzIHRvIGhh
cHBlbiBiZWZvcmUgQ2hpbGRyZW5DaGFuZ2VkLCBhbmQgYWZ0ZXIgdXBkYXRpbmcgaW1hZ2Ugb3Ig
dmlkZW8KLSAgICAgICAgdXBkYXRlTGF5ZXJCYWNrZ3JvdW5kQ29sb3IoKTsKLQotICAgIGlmICht
X3VuY29tbWl0dGVkQ2hhbmdlcyAmIENoaWxkcmVuQ2hhbmdlZCkKLSAgICAgICAgdXBkYXRlU3Vi
bGF5ZXJMaXN0KCk7Ci0KLSAgICBpZiAobV91bmNvbW1pdHRlZENoYW5nZXMgJiBQb3NpdGlvbkNo
YW5nZWQpCi0gICAgICAgIHVwZGF0ZUxheWVyUG9zaXRpb24oKTsKLSAgICAKLSAgICBpZiAobV91
bmNvbW1pdHRlZENoYW5nZXMgJiBBbmNob3JQb2ludENoYW5nZWQpCi0gICAgICAgIHVwZGF0ZUFu
Y2hvclBvaW50KCk7Ci0gICAgCi0gICAgaWYgKG1fdW5jb21taXR0ZWRDaGFuZ2VzICYgU2l6ZUNo
YW5nZWQpCi0gICAgICAgIHVwZGF0ZUxheWVyU2l6ZSgpOwotCi0gICAgaWYgKG1fdW5jb21taXR0
ZWRDaGFuZ2VzICYgVHJhbnNmb3JtQ2hhbmdlZCkKLSAgICAgICAgdXBkYXRlVHJhbnNmb3JtKCk7
Ci0KLSAgICBpZiAobV91bmNvbW1pdHRlZENoYW5nZXMgJiBDaGlsZHJlblRyYW5zZm9ybUNoYW5n
ZWQpCi0gICAgICAgIHVwZGF0ZUNoaWxkcmVuVHJhbnNmb3JtKCk7Ci0gICAgCi0gICAgaWYgKG1f
dW5jb21taXR0ZWRDaGFuZ2VzICYgTWFza3NUb0JvdW5kc0NoYW5nZWQpCi0gICAgICAgIHVwZGF0
ZU1hc2tzVG9Cb3VuZHMoKTsKLSAgICAKLSAgICBpZiAobV91bmNvbW1pdHRlZENoYW5nZXMgJiBE
cmF3c0NvbnRlbnRDaGFuZ2VkKQotICAgICAgICB1cGRhdGVMYXllckRyYXdzQ29udGVudCgpOwot
Ci0gICAgaWYgKG1fdW5jb21taXR0ZWRDaGFuZ2VzICYgQ29udGVudHNPcGFxdWVDaGFuZ2VkKQot
ICAgICAgICB1cGRhdGVDb250ZW50c09wYXF1ZSgpOwotCi0gICAgaWYgKG1fdW5jb21taXR0ZWRD
aGFuZ2VzICYgQmFja2ZhY2VWaXNpYmlsaXR5Q2hhbmdlZCkKLSAgICAgICAgdXBkYXRlQmFja2Zh
Y2VWaXNpYmlsaXR5KCk7Ci0KLSAgICBpZiAobV91bmNvbW1pdHRlZENoYW5nZXMgJiBPcGFjaXR5
Q2hhbmdlZCkKLSAgICAgICAgdXBkYXRlT3BhY2l0eU9uTGF5ZXIoKTsKLSAgICAKLSAgICBpZiAo
bV91bmNvbW1pdHRlZENoYW5nZXMgJiBBbmltYXRpb25DaGFuZ2VkKQotICAgICAgICB1cGRhdGVM
YXllckFuaW1hdGlvbnMoKTsKLSAgICAKLSAgICBpZiAobV91bmNvbW1pdHRlZENoYW5nZXMgJiBE
aXJ0eVJlY3RzQ2hhbmdlZCkKLSAgICAgICAgcmVwYWludExheWVyRGlydHlSZWN0cygpOwotICAg
IAotICAgIGlmIChtX3VuY29tbWl0dGVkQ2hhbmdlcyAmIENvbnRlbnRzUmVjdENoYW5nZWQpCi0g
ICAgICAgIHVwZGF0ZUNvbnRlbnRzUmVjdCgpOwotCi0gICAgaWYgKG1fdW5jb21taXR0ZWRDaGFu
Z2VzICYgTWFza0xheWVyQ2hhbmdlZCkKLSAgICAgICAgdXBkYXRlTWFza0xheWVyKCk7Ci0KLSAg
ICBpZiAobV91bmNvbW1pdHRlZENoYW5nZXMgJiBDb250ZW50c05lZWRzRGlzcGxheSkKLSAgICAg
ICAgdXBkYXRlQ29udGVudHNOZWVkc0Rpc3BsYXkoKTsKLQotICAgIEVORF9CTE9DS19PQkpDX0VY
Q0VQVElPTlMKLX0KLQotdm9pZCBHcmFwaGljc0xheWVyTWFjOjpjb21taXRMYXllckNoYW5nZXNB
ZnRlclN1YmxheWVycygpCi17Ci0gICAgaWYgKCFtX3VuY29tbWl0dGVkQ2hhbmdlcykKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBpZiAo
bV91bmNvbW1pdHRlZENoYW5nZXMgJiBSZXBsaWNhdGVkTGF5ZXJDaGFuZ2VkKQotICAgICAgICB1
cGRhdGVSZXBsaWNhdGVkTGF5ZXJzKCk7Ci0KLSAgICBtX3VuY29tbWl0dGVkQ2hhbmdlcyA9IE5v
Q2hhbmdlOwotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLX0KLQotdm9pZCBHcmFwaGlj
c0xheWVyTWFjOjp1cGRhdGVMYXllck5hbWVzKCkKLXsKLSAgICBzd2l0Y2ggKHN0cnVjdHVyYWxM
YXllclB1cnBvc2UoKSkgewotICAgICAgICBjYXNlIFN0cnVjdHVyYWxMYXllckZvclByZXNlcnZl
czNEOgotICAgICAgICAgICAgW21fc3RydWN0dXJhbExheWVyLmdldCgpIHNldE5hbWU6KCJUcmFu
c2Zvcm0gbGF5ZXIgIiArIG5hbWUoKSldOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNh
c2UgU3RydWN0dXJhbExheWVyRm9yUmVwbGljYUZsYXR0ZW5pbmc6Ci0gICAgICAgICAgICBbbV9z
dHJ1Y3R1cmFsTGF5ZXIuZ2V0KCkgc2V0TmFtZTooIlJlcGxpY2EgZmxhdHRlbmluZyBsYXllciAi
ICsgbmFtZSgpKV07Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBOb1N0cnVjdHVy
YWxMYXllcjoKLSAgICAgICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBbbV9sYXllci5nZXQoKSBz
ZXROYW1lOm5hbWUoKV07Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6dXBkYXRlU3VibGF5
ZXJMaXN0KCkKLXsKLSAgICBOU011dGFibGVBcnJheSogbmV3U3VibGF5ZXJzID0gbmlsOwotCi0g
ICAgY29uc3QgVmVjdG9yPEdyYXBoaWNzTGF5ZXIqPiYgY2hpbGRMYXllcnMgPSBjaGlsZHJlbigp
OwotCi0gICAgaWYgKG1fc3RydWN0dXJhbExheWVyIHx8IG1fY29udGVudHNMYXllciB8fCBjaGls
ZExheWVycy5zaXplKCkgPiAwKSB7Ci0gICAgICAgIG5ld1N1YmxheWVycyA9IFtbTlNNdXRhYmxl
QXJyYXkgYWxsb2NdIGluaXRdOwotCi0gICAgICAgIGlmIChtX3N0cnVjdHVyYWxMYXllcikgewot
ICAgICAgICAgICAgLy8gQWRkIHRoZSByZXBsaWNhIGxheWVyIGZpcnN0LgotICAgICAgICAgICAg
aWYgKG1fcmVwbGljYUxheWVyKQotICAgICAgICAgICAgICAgIFtuZXdTdWJsYXllcnMgYWRkT2Jq
ZWN0OnN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXJNYWMqPihtX3JlcGxpY2FMYXllciktPnByaW1h
cnlMYXllcigpXTsKLSAgICAgICAgICAgIC8vIEFkZCB0aGUgcHJpbWFyeSBsYXllci4gRXZlbiBp
ZiB3ZSBoYXZlIG5lZ2F0aXZlIHotb3JkZXIgY2hpbGRyZW4sIHRoZSBwcmltYXJ5IGxheWVyIGFs
d2F5cyBjb21lcyBiZWhpbmQuCi0gICAgICAgICAgICBbbmV3U3VibGF5ZXJzIGFkZE9iamVjdDpt
X2xheWVyLmdldCgpXTsKLSAgICAgICAgfSBlbHNlIGlmIChtX2NvbnRlbnRzTGF5ZXIpIHsKLSAg
ICAgICAgICAgIC8vIEZJWE1FOiBhZGQgdGhlIGNvbnRlbnRzIGxheWVyIGluIHRoZSBjb3JyZWN0
IG9yZGVyIHdpdGggbmVnYXRpdmUgei1vcmRlciBjaGlsZHJlbi4KLSAgICAgICAgICAgIC8vIFRo
aXMgZG9lcyBub3QgY2F1c2UgdmlzaWJsZSByZW5kZXJpbmcgaXNzdWVzIGJlY2F1c2UgY3VycmVu
dGx5IGNvbnRlbnRzIGxheWVycyBhcmUgb25seSB1c2VkCi0gICAgICAgICAgICAvLyBmb3IgcmVw
bGFjZWQgZWxlbWVudHMgdGhhdCBkb24ndCBoYXZlIGNoaWxkcmVuLgotICAgICAgICAgICAgW25l
d1N1YmxheWVycyBhZGRPYmplY3Q6bV9jb250ZW50c0xheWVyLmdldCgpXTsKLSAgICAgICAgfQot
ICAgICAgICAKLSAgICAgICAgc2l6ZV90IG51bUNoaWxkcmVuID0gY2hpbGRMYXllcnMuc2l6ZSgp
OwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bUNoaWxkcmVuOyArK2kpIHsKLSAg
ICAgICAgICAgIEdyYXBoaWNzTGF5ZXJNYWMqIGN1ckNoaWxkID0gc3RhdGljX2Nhc3Q8R3JhcGhp
Y3NMYXllck1hYyo+KGNoaWxkTGF5ZXJzW2ldKTsKLSAgICAgICAgICAgIENBTGF5ZXIgKmNoaWxk
TGF5ZXIgPSBjdXJDaGlsZC0+bGF5ZXJGb3JTdXBlcmxheWVyKCk7Ci0gICAgICAgICAgICBbbmV3
U3VibGF5ZXJzIGFkZE9iamVjdDpjaGlsZExheWVyXTsKLSAgICAgICAgfQotCi0gICAgICAgIFtu
ZXdTdWJsYXllcnMgbWFrZU9iamVjdHNQZXJmb3JtU2VsZWN0b3I6QHNlbGVjdG9yKHJlbW92ZUZy
b21TdXBlcmxheWVyKV07Ci0gICAgfQotCi0gICAgaWYgKG1fc3RydWN0dXJhbExheWVyKSB7Ci0g
ICAgICAgIHNhZmVTZXRTdWJsYXllcnMobV9zdHJ1Y3R1cmFsTGF5ZXIuZ2V0KCksIG5ld1N1Ymxh
eWVycyk7Ci0KLSAgICAgICAgaWYgKG1fY29udGVudHNMYXllcikgewotICAgICAgICAgICAgLy8g
SWYgd2UgaGF2ZSBhIHRyYW5zZm9ybSBsYXllciwgdGhlbiB0aGUgY29udGVudHMgbGF5ZXIgaXMg
cGFyZW50ZWQgaW4gdGhlIAotICAgICAgICAgICAgLy8gcHJpbWFyeSBsYXllciAod2hpY2ggaXMg
aXRzZWxmIGEgY2hpbGQgb2YgdGhlIHRyYW5zZm9ybSBsYXllcikuCi0gICAgICAgICAgICBzYWZl
U2V0U3VibGF5ZXJzKG1fbGF5ZXIuZ2V0KCksIG5pbCk7Ci0gICAgICAgICAgICBbbV9sYXllci5n
ZXQoKSBhZGRTdWJsYXllcjptX2NvbnRlbnRzTGF5ZXIuZ2V0KCldOwotICAgICAgICB9Ci0gICAg
fSBlbHNlCi0gICAgICAgIHNhZmVTZXRTdWJsYXllcnMobV9sYXllci5nZXQoKSwgbmV3U3VibGF5
ZXJzKTsKLQotICAgIFtuZXdTdWJsYXllcnMgcmVsZWFzZV07Ci19Ci0KLXZvaWQgR3JhcGhpY3NM
YXllck1hYzo6dXBkYXRlTGF5ZXJQb3NpdGlvbigpCi17Ci0gICAgRmxvYXRTaXplIHVzZWRTaXpl
ID0gbV91c2luZ1RpbGVkTGF5ZXIgPyBjb25zdHJhaW5lZFNpemUoKSA6IG1fc2l6ZTsKLQotICAg
IC8vIFBvc2l0aW9uIGlzIG9mZnNldCBvbiB0aGUgbGF5ZXIgYnkgdGhlIGxheWVyIGFuY2hvciBw
b2ludC4KLSAgICBDR1BvaW50IHBvc1BvaW50ID0gQ0dQb2ludE1ha2UobV9wb3NpdGlvbi54KCkg
KyBtX2FuY2hvclBvaW50LngoKSAqIHVzZWRTaXplLndpZHRoKCksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1fcG9zaXRpb24ueSgpICsgbV9hbmNob3JQb2ludC55KCkgKiB1
c2VkU2l6ZS5oZWlnaHQoKSk7Ci0gICAgCi0gICAgW3ByaW1hcnlMYXllcigpIHNldFBvc2l0aW9u
OnBvc1BvaW50XTsKLQotICAgIGlmIChMYXllck1hcCogbGF5ZXJDbG9uZU1hcCA9IHByaW1hcnlM
YXllckNsb25lcygpKSB7Ci0gICAgICAgIExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBs
YXllckNsb25lTWFwLT5lbmQoKTsKLSAgICAgICAgZm9yIChMYXllck1hcDo6Y29uc3RfaXRlcmF0
b3IgaXQgPSBsYXllckNsb25lTWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAg
ICAgICAgIENHUG9pbnQgY2xvbmVQb3NpdGlvbiA9IHBvc1BvaW50OwotICAgICAgICAgICAgaWYg
KG1fcmVwbGljYUxheWVyICYmIGlzUmVwbGljYXRlZFJvb3RDbG9uZShpdC0+Zmlyc3QpKSB7Ci0g
ICAgICAgICAgICAgICAgLy8gTWFpbnRhaW4gdGhlIHNwZWNpYWwtY2FzZSBwb3NpdGlvbiBmb3Ig
dGhlIHJvb3Qgb2YgYSBjbG9uZSBzdWJ0cmVlLAotICAgICAgICAgICAgICAgIC8vIHdoaWNoIHdl
IHNldCB1cCBpbiByZXBsaWNhdGVkTGF5ZXJSb290KCkuCi0gICAgICAgICAgICAgICAgY2xvbmVQ
b3NpdGlvbiA9IHBvc2l0aW9uRm9yQ2xvbmVSb290TGF5ZXIoKTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIENBTGF5ZXIgKmN1cnJMYXllciA9IGl0LT5zZWNvbmQuZ2V0KCk7Ci0gICAgICAg
ICAgICBbY3VyckxheWVyIHNldFBvc2l0aW9uOmNsb25lUG9zaXRpb25dOwotICAgICAgICB9Ci0g
ICAgfQotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnVwZGF0ZUxheWVyU2l6ZSgpCi17Ci0g
ICAgQ0dSZWN0IHJlY3QgPSBDR1JlY3RNYWtlKDAsIDAsIG1fc2l6ZS53aWR0aCgpLCBtX3NpemUu
aGVpZ2h0KCkpOwotICAgIGlmIChtX3N0cnVjdHVyYWxMYXllcikgewotICAgICAgICBbbV9zdHJ1
Y3R1cmFsTGF5ZXIuZ2V0KCkgc2V0Qm91bmRzOnJlY3RdOwotICAgICAgICAKLSAgICAgICAgaWYg
KExheWVyTWFwKiBsYXllckNsb25lTWFwID0gbV9zdHJ1Y3R1cmFsTGF5ZXJDbG9uZXMuZ2V0KCkp
IHsKLSAgICAgICAgICAgIExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBsYXllckNsb25l
TWFwLT5lbmQoKTsKLSAgICAgICAgICAgIGZvciAoTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0
ID0gbGF5ZXJDbG9uZU1hcC0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICAgICAg
ICAgIFtpdC0+c2Vjb25kLmdldCgpIHNldEJvdW5kczpyZWN0XTsKLSAgICAgICAgfQotCi0gICAg
ICAgIC8vIFRoZSBhbmNob3Igb2YgdGhlIGNvbnRlbnRzIGxheWVyIGlzIGFsd2F5cyBhdCAwLjUs
IDAuNSwgc28gdGhlIHBvc2l0aW9uIGlzIGNlbnRlci1yZWxhdGl2ZS4KLSAgICAgICAgQ0dQb2lu
dCBjZW50ZXJQb2ludCA9IENHUG9pbnRNYWtlKG1fc2l6ZS53aWR0aCgpIC8gMi4wZiwgbV9zaXpl
LmhlaWdodCgpIC8gMi4wZik7Ci0gICAgICAgIFttX2xheWVyLmdldCgpIHNldFBvc2l0aW9uOmNl
bnRlclBvaW50XTsKLQotICAgICAgICBpZiAoTGF5ZXJNYXAqIGxheWVyQ2xvbmVNYXAgPSBtX2xh
eWVyQ2xvbmVzLmdldCgpKSB7Ci0gICAgICAgICAgICBMYXllck1hcDo6Y29uc3RfaXRlcmF0b3Ig
ZW5kID0gbGF5ZXJDbG9uZU1hcC0+ZW5kKCk7Ci0gICAgICAgICAgICBmb3IgKExheWVyTWFwOjpj
b25zdF9pdGVyYXRvciBpdCA9IGxheWVyQ2xvbmVNYXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytp
dCkKLSAgICAgICAgICAgICAgICBbaXQtPnNlY29uZC5nZXQoKSBzZXRQb3NpdGlvbjpjZW50ZXJQ
b2ludF07Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgYm9vbCBuZWVkVGlsZWRMYXllciA9
IHJlcXVpcmVzVGlsZWRMYXllcihtX3NpemUpOwotICAgIGlmIChuZWVkVGlsZWRMYXllciAhPSBt
X3VzaW5nVGlsZWRMYXllcikKLSAgICAgICAgc3dhcEZyb21PclRvVGlsZWRMYXllcihuZWVkVGls
ZWRMYXllcik7Ci0gICAgCi0gICAgaWYgKG1fdXNpbmdUaWxlZExheWVyKSB7Ci0gICAgICAgIEZs
b2F0U2l6ZSBzaXplVG9Vc2UgPSBjb25zdHJhaW5lZFNpemUoKTsKLSAgICAgICAgcmVjdCA9IENH
UmVjdE1ha2UoMCwgMCwgc2l6ZVRvVXNlLndpZHRoKCksIHNpemVUb1VzZS5oZWlnaHQoKSk7Ci0g
ICAgfQotICAgIAotICAgIFttX2xheWVyLmdldCgpIHNldEJvdW5kczpyZWN0XTsKLSAgICBpZiAo
TGF5ZXJNYXAqIGxheWVyQ2xvbmVNYXAgPSBtX2xheWVyQ2xvbmVzLmdldCgpKSB7Ci0gICAgICAg
IExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBsYXllckNsb25lTWFwLT5lbmQoKTsKLSAg
ICAgICAgZm9yIChMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBsYXllckNsb25lTWFwLT5i
ZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgICAgICBbaXQtPnNlY29uZC5nZXQoKSBz
ZXRCb3VuZHM6cmVjdF07Ci0gICAgfQotICAgIAotICAgIC8vIENvbnRlbnRzIHRyYW5zZm9ybSBt
YXkgZGVwZW5kIG9uIGhlaWdodC4KLSAgICB1cGRhdGVDb250ZW50c1RyYW5zZm9ybSgpOwotCi0g
ICAgLy8gTm90ZSB0aGF0IHdlIGRvbid0IHJlc2l6ZSBtX2NvbnRlbnRzTGF5ZXIuIEl0J3MgdXAg
dGhlIGNhbGxlciB0byBkbyB0aGF0LgotCi0gICAgLy8gaWYgd2UndmUgY2hhbmdlZCB0aGUgYm91
bmRzLCB3ZSBuZWVkIHRvIHJlY2FsY3VsYXRlIHRoZSBwb3NpdGlvbgotICAgIC8vIG9mIHRoZSBs
YXllciwgdGFraW5nIGFuY2hvciBwb2ludCBpbnRvIGFjY291bnQuCi0gICAgdXBkYXRlTGF5ZXJQ
b3NpdGlvbigpOwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnVwZGF0ZUFuY2hvclBvaW50
KCkKLXsKLSAgICBbcHJpbWFyeUxheWVyKCkgc2V0QW5jaG9yUG9pbnQ6RmxvYXRQb2ludChtX2Fu
Y2hvclBvaW50LngoKSwgbV9hbmNob3JQb2ludC55KCkpXTsKLSNpZiBIQVZFX01PREVSTl9RVUFS
VFpDT1JFCi0gICAgW3ByaW1hcnlMYXllcigpIHNldEFuY2hvclBvaW50WjptX2FuY2hvclBvaW50
LnooKV07Ci0jZW5kaWYKLQotICAgIGlmIChMYXllck1hcCogbGF5ZXJDbG9uZU1hcCA9IHByaW1h
cnlMYXllckNsb25lcygpKSB7Ci0gICAgICAgIExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQg
PSBsYXllckNsb25lTWFwLT5lbmQoKTsKLSAgICAgICAgZm9yIChMYXllck1hcDo6Y29uc3RfaXRl
cmF0b3IgaXQgPSBsYXllckNsb25lTWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsgICAK
LSAgICAgICAgICAgIENBTGF5ZXIgKmN1cnJMYXllciA9IGl0LT5zZWNvbmQuZ2V0KCk7Ci0gICAg
ICAgICAgICBbY3VyckxheWVyIHNldEFuY2hvclBvaW50OkZsb2F0UG9pbnQobV9hbmNob3JQb2lu
dC54KCksIG1fYW5jaG9yUG9pbnQueSgpKV07Ci0jaWYgSEFWRV9NT0RFUk5fUVVBUlRaQ09SRQot
ICAgICAgICAgICAgW2N1cnJMYXllciBzZXRBbmNob3JQb2ludFo6bV9hbmNob3JQb2ludC56KCld
OwotI2VuZGlmCi0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB1cGRhdGVMYXllclBvc2l0aW9uKCk7
Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6dXBkYXRlVHJhbnNmb3JtKCkKLXsKLSAgICBD
QVRyYW5zZm9ybTNEIHRyYW5zZm9ybTsKLSAgICBjb3B5VHJhbnNmb3JtKHRyYW5zZm9ybSwgbV90
cmFuc2Zvcm0pOwotICAgIFtwcmltYXJ5TGF5ZXIoKSBzZXRUcmFuc2Zvcm06dHJhbnNmb3JtXTsK
LQotICAgIGlmIChMYXllck1hcCogbGF5ZXJDbG9uZU1hcCA9IHByaW1hcnlMYXllckNsb25lcygp
KSB7Ci0gICAgICAgIExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBsYXllckNsb25lTWFw
LT5lbmQoKTsKLSAgICAgICAgZm9yIChMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBsYXll
ckNsb25lTWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgICAgIENBTGF5
ZXIgKmN1cnJMYXllciA9IGl0LT5zZWNvbmQuZ2V0KCk7Ci0gICAgICAgICAgICBpZiAobV9yZXBs
aWNhTGF5ZXIgJiYgaXNSZXBsaWNhdGVkUm9vdENsb25lKGl0LT5maXJzdCkpIHsKLSAgICAgICAg
ICAgICAgICAvLyBNYWludGFpbiB0aGUgc3BlY2lhbC1jYXNlIHRyYW5zZm9ybSBmb3IgdGhlIHJv
b3Qgb2YgYSBjbG9uZSBzdWJ0cmVlLAotICAgICAgICAgICAgICAgIC8vIHdoaWNoIHdlIHNldCB1
cCBpbiByZXBsaWNhdGVkTGF5ZXJSb290KCkuCi0gICAgICAgICAgICAgICAgW2N1cnJMYXllciBz
ZXRUcmFuc2Zvcm06Q0FUcmFuc2Zvcm0zRElkZW50aXR5XTsKLSAgICAgICAgICAgIH0gZWxzZQot
ICAgICAgICAgICAgICAgIFtjdXJyTGF5ZXIgc2V0VHJhbnNmb3JtOnRyYW5zZm9ybV07Ci0gICAg
ICAgIH0KLSAgICB9Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6dXBkYXRlQ2hpbGRyZW5U
cmFuc2Zvcm0oKQotewotICAgIENBVHJhbnNmb3JtM0QgdHJhbnNmb3JtOwotICAgIGNvcHlUcmFu
c2Zvcm0odHJhbnNmb3JtLCBtX2NoaWxkcmVuVHJhbnNmb3JtKTsKLSAgICBbcHJpbWFyeUxheWVy
KCkgc2V0U3VibGF5ZXJUcmFuc2Zvcm06dHJhbnNmb3JtXTsKLQotICAgIGlmIChMYXllck1hcCog
bGF5ZXJDbG9uZU1hcCA9IHByaW1hcnlMYXllckNsb25lcygpKSB7Ci0gICAgICAgIExheWVyTWFw
Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBsYXllckNsb25lTWFwLT5lbmQoKTsKLSAgICAgICAgZm9y
IChMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBsYXllckNsb25lTWFwLT5iZWdpbigpOyBp
dCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgICAgIENBTGF5ZXIgKmN1cnJMYXllciA9IGl0LT5z
ZWNvbmQuZ2V0KCk7Ci0gICAgICAgICAgICBbY3VyckxheWVyIHNldFN1YmxheWVyVHJhbnNmb3Jt
OnRyYW5zZm9ybV07Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1h
Yzo6dXBkYXRlTWFza3NUb0JvdW5kcygpCi17Ci0gICAgW21fbGF5ZXIuZ2V0KCkgc2V0TWFza3NU
b0JvdW5kczptX21hc2tzVG9Cb3VuZHNdOwotCi0gICAgaWYgKExheWVyTWFwKiBsYXllckNsb25l
TWFwID0gbV9sYXllckNsb25lcy5nZXQoKSkgewotICAgICAgICBMYXllck1hcDo6Y29uc3RfaXRl
cmF0b3IgZW5kID0gbGF5ZXJDbG9uZU1hcC0+ZW5kKCk7Ci0gICAgICAgIGZvciAoTGF5ZXJNYXA6
OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbGF5ZXJDbG9uZU1hcC0+YmVnaW4oKTsgaXQgIT0gZW5kOyAr
K2l0KSB7Ci0gICAgICAgICAgICBDQUxheWVyICpjdXJyTGF5ZXIgPSBpdC0+c2Vjb25kLmdldCgp
OwotICAgICAgICAgICAgW2N1cnJMYXllciBzZXRNYXNrc1RvQm91bmRzOm1fbWFza3NUb0JvdW5k
c107Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB1cGRhdGVEZWJ1Z0luZGljYXRvcnMoKTsKLX0K
LQotdm9pZCBHcmFwaGljc0xheWVyTWFjOjp1cGRhdGVDb250ZW50c09wYXF1ZSgpCi17Ci0gICAg
W21fbGF5ZXIuZ2V0KCkgc2V0T3BhcXVlOm1fY29udGVudHNPcGFxdWVdOwotCi0gICAgaWYgKExh
eWVyTWFwKiBsYXllckNsb25lTWFwID0gbV9sYXllckNsb25lcy5nZXQoKSkgewotICAgICAgICBM
YXllck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbGF5ZXJDbG9uZU1hcC0+ZW5kKCk7Ci0gICAg
ICAgIGZvciAoTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbGF5ZXJDbG9uZU1hcC0+YmVn
aW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICBDQUxheWVyICpjdXJyTGF5ZXIg
PSBpdC0+c2Vjb25kLmdldCgpOwotICAgICAgICAgICAgW2N1cnJMYXllciBzZXRPcGFxdWU6bV9j
b250ZW50c09wYXF1ZV07Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXll
ck1hYzo6dXBkYXRlQmFja2ZhY2VWaXNpYmlsaXR5KCkKLXsKLSAgICBpZiAobV9zdHJ1Y3R1cmFs
TGF5ZXIgJiYgc3RydWN0dXJhbExheWVyUHVycG9zZSgpID09IFN0cnVjdHVyYWxMYXllckZvclJl
cGxpY2FGbGF0dGVuaW5nKSB7Ci0gICAgICAgIFttX3N0cnVjdHVyYWxMYXllci5nZXQoKSBzZXRE
b3VibGVTaWRlZDptX2JhY2tmYWNlVmlzaWJpbGl0eV07Ci0KLSAgICAgICAgaWYgKExheWVyTWFw
KiBsYXllckNsb25lTWFwID0gbV9zdHJ1Y3R1cmFsTGF5ZXJDbG9uZXMuZ2V0KCkpIHsKLSAgICAg
ICAgICAgIExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBsYXllckNsb25lTWFwLT5lbmQo
KTsKLSAgICAgICAgICAgIGZvciAoTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbGF5ZXJD
bG9uZU1hcC0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICAgICAgQ0FM
YXllciAqY3VyckxheWVyID0gaXQtPnNlY29uZC5nZXQoKTsKLSAgICAgICAgICAgICAgICBbY3Vy
ckxheWVyIHNldERvdWJsZVNpZGVkOm1fYmFja2ZhY2VWaXNpYmlsaXR5XTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIFttX2xheWVyLmdldCgpIHNldERvdWJsZVNpZGVk
Om1fYmFja2ZhY2VWaXNpYmlsaXR5XTsKLQotICAgIGlmIChMYXllck1hcCogbGF5ZXJDbG9uZU1h
cCA9IG1fbGF5ZXJDbG9uZXMuZ2V0KCkpIHsKLSAgICAgICAgTGF5ZXJNYXA6OmNvbnN0X2l0ZXJh
dG9yIGVuZCA9IGxheWVyQ2xvbmVNYXAtPmVuZCgpOwotICAgICAgICBmb3IgKExheWVyTWFwOjpj
b25zdF9pdGVyYXRvciBpdCA9IGxheWVyQ2xvbmVNYXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytp
dCkgewotICAgICAgICAgICAgQ0FMYXllciAqY3VyckxheWVyID0gaXQtPnNlY29uZC5nZXQoKTsK
LSAgICAgICAgICAgIFtjdXJyTGF5ZXIgc2V0RG91YmxlU2lkZWQ6bV9iYWNrZmFjZVZpc2liaWxp
dHldOwotICAgICAgICB9Ci0gICAgfQotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnVwZGF0
ZVN0cnVjdHVyYWxMYXllcigpCi17Ci0gICAgZW5zdXJlU3RydWN0dXJhbExheWVyKHN0cnVjdHVy
YWxMYXllclB1cnBvc2UoKSk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6ZW5zdXJlU3Ry
dWN0dXJhbExheWVyKFN0cnVjdHVyYWxMYXllclB1cnBvc2UgcHVycG9zZSkKLXsKLSAgICBpZiAo
cHVycG9zZSA9PSBOb1N0cnVjdHVyYWxMYXllcikgewotICAgICAgICBpZiAobV9zdHJ1Y3R1cmFs
TGF5ZXIpIHsKLSAgICAgICAgICAgIC8vIFJlcGxhY2UgdGhlIHRyYW5zZm9ybUxheWVyIGluIHRo
ZSBwYXJlbnQgd2l0aCB0aGlzIGxheWVyLgotICAgICAgICAgICAgW21fbGF5ZXIuZ2V0KCkgcmVt
b3ZlRnJvbVN1cGVybGF5ZXJdOwotICAgICAgICAgICAgW1ttX3N0cnVjdHVyYWxMYXllci5nZXQo
KSBzdXBlcmxheWVyXSByZXBsYWNlU3VibGF5ZXI6bV9zdHJ1Y3R1cmFsTGF5ZXIuZ2V0KCkgd2l0
aDptX2xheWVyLmdldCgpXTsKLQotICAgICAgICAgICAgbW92ZU9yQ29weUFuaW1hdGlvbnNGb3JQ
cm9wZXJ0eShNb3ZlLCBBbmltYXRlZFByb3BlcnR5V2Via2l0VHJhbnNmb3JtLCBtX3N0cnVjdHVy
YWxMYXllci5nZXQoKSwgbV9sYXllci5nZXQoKSk7Ci0gICAgICAgICAgICBtb3ZlT3JDb3B5QW5p
bWF0aW9uc0ZvclByb3BlcnR5KE1vdmUsIEFuaW1hdGVkUHJvcGVydHlPcGFjaXR5LCBtX3N0cnVj
dHVyYWxMYXllci5nZXQoKSwgbV9sYXllci5nZXQoKSk7Ci0KLSAgICAgICAgICAgIC8vIFJlbGVh
c2UgdGhlIHN0cnVjdHVyYWwgbGF5ZXIuCi0gICAgICAgICAgICBtX3N0cnVjdHVyYWxMYXllciA9
IDA7Ci0KLSAgICAgICAgICAgIC8vIFVwZGF0ZSB0aGUgcHJvcGVydGllcyBvZiBtX2xheWVyIG5v
dyB0aGF0IHdlIG5vIGxvbmdlciBoYXZlIGEgc3RydWN0dXJhbCBsYXllci4KLSAgICAgICAgICAg
IHVwZGF0ZUxheWVyUG9zaXRpb24oKTsKLSAgICAgICAgICAgIHVwZGF0ZUxheWVyU2l6ZSgpOwot
ICAgICAgICAgICAgdXBkYXRlQW5jaG9yUG9pbnQoKTsKLSAgICAgICAgICAgIHVwZGF0ZVRyYW5z
Zm9ybSgpOwotICAgICAgICAgICAgdXBkYXRlQ2hpbGRyZW5UcmFuc2Zvcm0oKTsKLQotICAgICAg
ICAgICAgdXBkYXRlU3VibGF5ZXJMaXN0KCk7Ci0gICAgICAgICAgICB1cGRhdGVPcGFjaXR5T25M
YXllcigpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgYm9v
bCBzdHJ1Y3R1cmFsTGF5ZXJDaGFuZ2VkID0gZmFsc2U7Ci0gICAgCi0gICAgaWYgKHB1cnBvc2Ug
PT0gU3RydWN0dXJhbExheWVyRm9yUHJlc2VydmVzM0QpIHsKLSAgICAgICAgQ2xhc3MgdHJhbnNm
b3JtTGF5ZXJDbGFzcyA9IE5TQ2xhc3NGcm9tU3RyaW5nKEAiQ0FUcmFuc2Zvcm1MYXllciIpOwot
ICAgICAgICBpZiAoIXRyYW5zZm9ybUxheWVyQ2xhc3MpCi0gICAgICAgICAgICByZXR1cm47Ci0K
LSAgICAgICAgaWYgKG1fc3RydWN0dXJhbExheWVyICYmICFbbV9zdHJ1Y3R1cmFsTGF5ZXIuZ2V0
KCkgaXNLaW5kT2ZDbGFzczp0cmFuc2Zvcm1MYXllckNsYXNzXSkKLSAgICAgICAgICAgIG1fc3Ry
dWN0dXJhbExheWVyID0gMDsKLSAgICAgICAgCi0gICAgICAgIGlmICghbV9zdHJ1Y3R1cmFsTGF5
ZXIpIHsKLSAgICAgICAgICAgIG1fc3RydWN0dXJhbExheWVyLmFkb3B0TlMoW1t0cmFuc2Zvcm1M
YXllckNsYXNzIGFsbG9jXSBpbml0XSk7Ci0gICAgICAgICAgICBzdHJ1Y3R1cmFsTGF5ZXJDaGFu
Z2VkID0gdHJ1ZTsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChtX3N0cnVj
dHVyYWxMYXllciAmJiAhW21fc3RydWN0dXJhbExheWVyLmdldCgpIGlzTWVtYmVyT2ZDbGFzczpb
Q0FMYXllciBzZWxmXV0pCi0gICAgICAgICAgICBtX3N0cnVjdHVyYWxMYXllciA9IDA7Ci0KLSAg
ICAgICAgaWYgKCFtX3N0cnVjdHVyYWxMYXllcikgewotICAgICAgICAgICAgbV9zdHJ1Y3R1cmFs
TGF5ZXIuYWRvcHROUyhbW0NBTGF5ZXIgYWxsb2NdIGluaXRdKTsKLSAgICAgICAgICAgIHN0cnVj
dHVyYWxMYXllckNoYW5nZWQgPSB0cnVlOwotICAgICAgICB9Ci0gICAgfQotICAgIAotICAgIGlm
ICghc3RydWN0dXJhbExheWVyQ2hhbmdlZCkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIC8v
IFR1cm4gb2ZmIGRlZmF1bHQgYW5pbWF0aW9ucy4KLSAgICBbbV9zdHJ1Y3R1cmFsTGF5ZXIuZ2V0
KCkgc2V0U3R5bGU6W05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdDpudWxsQWN0aW9u
c0RpY3Rpb25hcnkoKSBmb3JLZXk6QCJhY3Rpb25zIl1dOwotCi0gICAgdXBkYXRlTGF5ZXJOYW1l
cygpOwotCi0gICAgLy8gVXBkYXRlIHRoZSBwcm9wZXJ0aWVzIG9mIHRoZSBzdHJ1Y3R1cmFsIGxh
eWVyLgotICAgIHVwZGF0ZUxheWVyUG9zaXRpb24oKTsKLSAgICB1cGRhdGVMYXllclNpemUoKTsK
LSAgICB1cGRhdGVBbmNob3JQb2ludCgpOwotICAgIHVwZGF0ZVRyYW5zZm9ybSgpOwotICAgIHVw
ZGF0ZUNoaWxkcmVuVHJhbnNmb3JtKCk7Ci0gICAgdXBkYXRlQmFja2ZhY2VWaXNpYmlsaXR5KCk7
Ci0gICAgCi0gICAgLy8gU2V0IHByb3BlcnRpZXMgb2YgbV9sYXllciB0byB0aGVpciBkZWZhdWx0
IHZhbHVlcywgc2luY2UgdGhlc2UgYXJlIGV4cHJlc3NlZCBvbiBvbiB0aGUgc3RydWN0dXJhbCBs
YXllci4KLSAgICBDR1BvaW50IHBvaW50ID0gQ0dQb2ludE1ha2UobV9zaXplLndpZHRoKCkgLyAy
LjBmLCBtX3NpemUuaGVpZ2h0KCkgLyAyLjBmKTsKLSAgICBbbV9sYXllci5nZXQoKSBzZXRQb3Np
dGlvbjpwb2ludF07Ci0gICAgW21fbGF5ZXIuZ2V0KCkgc2V0QW5jaG9yUG9pbnQ6Q0dQb2ludE1h
a2UoMC41ZiwgMC41ZildOwotICAgIFttX2xheWVyLmdldCgpIHNldFRyYW5zZm9ybTpDQVRyYW5z
Zm9ybTNESWRlbnRpdHldOwotICAgIFttX2xheWVyLmdldCgpIHNldE9wYWNpdHk6MV07Ci0KLSAg
ICAvLyBNb3ZlIHRoaXMgbGF5ZXIgdG8gYmUgYSBjaGlsZCBvZiB0aGUgdHJhbnNmb3JtIGxheWVy
LgotICAgIFtbbV9sYXllci5nZXQoKSBzdXBlcmxheWVyXSByZXBsYWNlU3VibGF5ZXI6bV9sYXll
ci5nZXQoKSB3aXRoOm1fc3RydWN0dXJhbExheWVyLmdldCgpXTsKLSAgICBbbV9zdHJ1Y3R1cmFs
TGF5ZXIuZ2V0KCkgYWRkU3VibGF5ZXI6bV9sYXllci5nZXQoKV07Ci0KLSAgICBtb3ZlT3JDb3B5
QW5pbWF0aW9uc0ZvclByb3BlcnR5KE1vdmUsIEFuaW1hdGVkUHJvcGVydHlXZWJraXRUcmFuc2Zv
cm0sIG1fbGF5ZXIuZ2V0KCksIG1fc3RydWN0dXJhbExheWVyLmdldCgpKTsKLSAgICBtb3ZlT3JD
b3B5QW5pbWF0aW9uc0ZvclByb3BlcnR5KE1vdmUsIEFuaW1hdGVkUHJvcGVydHlPcGFjaXR5LCBt
X2xheWVyLmdldCgpLCBtX3N0cnVjdHVyYWxMYXllci5nZXQoKSk7Ci0gICAgCi0gICAgdXBkYXRl
U3VibGF5ZXJMaXN0KCk7Ci0gICAgdXBkYXRlT3BhY2l0eU9uTGF5ZXIoKTsKLX0KLQotR3JhcGhp
Y3NMYXllck1hYzo6U3RydWN0dXJhbExheWVyUHVycG9zZSBHcmFwaGljc0xheWVyTWFjOjpzdHJ1
Y3R1cmFsTGF5ZXJQdXJwb3NlKCkgY29uc3QKLXsKLSAgICBpZiAocHJlc2VydmVzM0QoKSkKLSAg
ICAgICAgcmV0dXJuIFN0cnVjdHVyYWxMYXllckZvclByZXNlcnZlczNEOwotICAgIAotICAgIGlm
IChpc1JlcGxpY2F0ZWQoKSkKLSAgICAgICAgcmV0dXJuIFN0cnVjdHVyYWxMYXllckZvclJlcGxp
Y2FGbGF0dGVuaW5nOwotICAgIAotICAgIHJldHVybiBOb1N0cnVjdHVyYWxMYXllcjsKLX0KLQot
dm9pZCBHcmFwaGljc0xheWVyTWFjOjp1cGRhdGVMYXllckRyYXdzQ29udGVudCgpCi17Ci0gICAg
Ym9vbCBuZWVkVGlsZWRMYXllciA9IHJlcXVpcmVzVGlsZWRMYXllcihtX3NpemUpOwotICAgIGlm
IChuZWVkVGlsZWRMYXllciAhPSBtX3VzaW5nVGlsZWRMYXllcikKLSAgICAgICAgc3dhcEZyb21P
clRvVGlsZWRMYXllcihuZWVkVGlsZWRMYXllcik7Ci0KLSAgICBpZiAobV9kcmF3c0NvbnRlbnQp
Ci0gICAgICAgIFttX2xheWVyLmdldCgpIHNldE5lZWRzRGlzcGxheV07Ci0gICAgZWxzZQotICAg
ICAgICBbbV9sYXllci5nZXQoKSBzZXRDb250ZW50czpuaWxdOwotCi0gICAgdXBkYXRlRGVidWdJ
bmRpY2F0b3JzKCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6dXBkYXRlTGF5ZXJCYWNr
Z3JvdW5kQ29sb3IoKQotewotICAgIGlmICghbV9jb250ZW50c0xheWVyKQotICAgICAgICByZXR1
cm47Ci0KLSAgICAvLyBXZSBuZXZlciBjcmVhdGUgdGhlIGNvbnRlbnRzIGxheWVyIGp1c3QgZm9y
IGJhY2tncm91bmQgY29sb3IgeWV0LgotICAgIGlmIChtX2JhY2tncm91bmRDb2xvclNldCkKLSAg
ICAgICAgc2V0TGF5ZXJCYWNrZ3JvdW5kQ29sb3IobV9jb250ZW50c0xheWVyLmdldCgpLCBtX2Jh
Y2tncm91bmRDb2xvcik7Ci0gICAgZWxzZQotICAgICAgICBjbGVhckxheWVyQmFja2dyb3VuZENv
bG9yKG1fY29udGVudHNMYXllci5nZXQoKSk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6
dXBkYXRlQ29udGVudHNJbWFnZSgpCi17Ci0gICAgaWYgKG1fcGVuZGluZ0NvbnRlbnRzSW1hZ2Up
IHsKLSAgICAgICAgaWYgKCFtX2NvbnRlbnRzTGF5ZXIuZ2V0KCkpIHsKLSAgICAgICAgICAgIFdl
YkxheWVyKiBpbWFnZUxheWVyID0gW1dlYkxheWVyIGxheWVyXTsKLSNpZm5kZWYgTkRFQlVHCi0g
ICAgICAgICAgICBbaW1hZ2VMYXllciBzZXROYW1lOkAiSW1hZ2UgTGF5ZXIiXTsKLSNlbmRpZgot
ICAgICAgICAgICAgc2V0dXBDb250ZW50c0xheWVyKGltYWdlTGF5ZXIpOwotICAgICAgICAgICAg
bV9jb250ZW50c0xheWVyLmFkb3B0TlMoW2ltYWdlTGF5ZXIgcmV0YWluXSk7Ci0gICAgICAgICAg
ICAvLyBtX2NvbnRlbnRzTGF5ZXIgd2lsbCBiZSBwYXJlbnRlZCBieSB1cGRhdGVTdWJsYXllckxp
c3QKLSAgICAgICAgfQotCi0gICAgICAgIC8vIEZJWE1FOiBtYXliZSBvbmx5IGRvIHRyaWxpbmVh
ciBpZiB0aGUgaW1hZ2UgaXMgYmVpbmcgc2NhbGVkIGRvd24sCi0gICAgICAgIC8vIGJ1dCB0aGVu
IHdoYXQgaWYgdGhlIGxheWVyIHNpemUgY2hhbmdlcz8KLSNpZiAhZGVmaW5lZChCVUlMRElOR19P
Tl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkKLSAgICAgICAgW21fY29u
dGVudHNMYXllci5nZXQoKSBzZXRNaW5pZmljYXRpb25GaWx0ZXI6a0NBRmlsdGVyVHJpbGluZWFy
XTsKLSNlbmRpZgotICAgICAgICBbbV9jb250ZW50c0xheWVyLmdldCgpIHNldENvbnRlbnRzOihp
ZCltX3BlbmRpbmdDb250ZW50c0ltYWdlLmdldCgpXTsKLSAgICAgICAgbV9wZW5kaW5nQ29udGVu
dHNJbWFnZSA9IDA7Ci0KLSAgICAgICAgaWYgKG1fY29udGVudHNMYXllckNsb25lcykgewotICAg
ICAgICAgICAgTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fY29udGVudHNMYXllckNs
b25lcy0+ZW5kKCk7Ci0gICAgICAgICAgICBmb3IgKExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBp
dCA9IG1fY29udGVudHNMYXllckNsb25lcy0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQotICAg
ICAgICAgICAgICAgIFtpdC0+c2Vjb25kLmdldCgpIHNldENvbnRlbnRzOlttX2NvbnRlbnRzTGF5
ZXIuZ2V0KCkgY29udGVudHNdXTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgdXBkYXRl
Q29udGVudHNSZWN0KCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLy8gTm8gaW1hZ2UuCi0gICAg
ICAgIC8vIG1fY29udGVudHNMYXllciB3aWxsIGJlIHJlbW92ZWQgdmlhIHVwZGF0ZVN1YmxheWVy
TGlzdC4KLSAgICAgICAgbV9jb250ZW50c0xheWVyID0gMDsKLSAgICB9Ci19Ci0KLXZvaWQgR3Jh
cGhpY3NMYXllck1hYzo6dXBkYXRlQ29udGVudHNNZWRpYUxheWVyKCkKLXsKLSAgICAvLyBWaWRl
byBsYXllciB3YXMgc2V0IGFzIG1fY29udGVudHNMYXllciwgYW5kIHdpbGwgZ2V0IHBhcmVudGVk
IGluIHVwZGF0ZVN1YmxheWVyTGlzdCgpLgotICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIpIHsKLSAg
ICAgICAgc2V0dXBDb250ZW50c0xheWVyKG1fY29udGVudHNMYXllci5nZXQoKSk7Ci0gICAgICAg
IHVwZGF0ZUNvbnRlbnRzUmVjdCgpOwotICAgIH0KLX0KLQotdm9pZCBHcmFwaGljc0xheWVyTWFj
Ojp1cGRhdGVDb250ZW50c0NhbnZhc0xheWVyKCkKLXsKLSAgICAvLyBDYW52YXNMYXllciB3YXMg
c2V0IGFzIG1fY29udGVudHNMYXllciwgYW5kIHdpbGwgZ2V0IHBhcmVudGVkIGluIHVwZGF0ZVN1
YmxheWVyTGlzdCgpLgotICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIpIHsKLSAgICAgICAgc2V0dXBD
b250ZW50c0xheWVyKG1fY29udGVudHNMYXllci5nZXQoKSk7Ci0gICAgICAgIFttX2NvbnRlbnRz
TGF5ZXIuZ2V0KCkgc2V0TmVlZHNEaXNwbGF5XTsKLSAgICAgICAgdXBkYXRlQ29udGVudHNSZWN0
KCk7Ci0gICAgfQotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnVwZGF0ZUNvbnRlbnRzUmVj
dCgpCi17Ci0gICAgaWYgKCFtX2NvbnRlbnRzTGF5ZXIpCi0gICAgICAgIHJldHVybjsKLQotICAg
IENHUG9pbnQgcG9pbnQgPSBDR1BvaW50TWFrZShtX2NvbnRlbnRzUmVjdC54KCksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1fY29udGVudHNSZWN0LnkoKSk7Ci0gICAgQ0dSZWN0
IHJlY3QgPSBDR1JlY3RNYWtlKDAuMGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAu
MGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fY29udGVudHNSZWN0LndpZHRoKCks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fY29udGVudHNSZWN0LmhlaWdodCgpKTsK
LQotICAgIFttX2NvbnRlbnRzTGF5ZXIuZ2V0KCkgc2V0UG9zaXRpb246cG9pbnRdOwotICAgIFtt
X2NvbnRlbnRzTGF5ZXIuZ2V0KCkgc2V0Qm91bmRzOnJlY3RdOwotCi0gICAgaWYgKG1fY29udGVu
dHNMYXllckNsb25lcykgewotICAgICAgICBMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0g
bV9jb250ZW50c0xheWVyQ2xvbmVzLT5lbmQoKTsKLSAgICAgICAgZm9yIChMYXllck1hcDo6Y29u
c3RfaXRlcmF0b3IgaXQgPSBtX2NvbnRlbnRzTGF5ZXJDbG9uZXMtPmJlZ2luKCk7IGl0ICE9IGVu
ZDsgKytpdCkgewotICAgICAgICAgICAgQ0FMYXllciAqY3VyckxheWVyID0gaXQtPnNlY29uZC5n
ZXQoKTsKLSAgICAgICAgICAgIFtjdXJyTGF5ZXIgc2V0UG9zaXRpb246cG9pbnRdOwotICAgICAg
ICAgICAgW2N1cnJMYXllciBzZXRCb3VuZHM6cmVjdF07Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0K
LXZvaWQgR3JhcGhpY3NMYXllck1hYzo6dXBkYXRlTWFza0xheWVyKCkKLXsKLSAgICBDQUxheWVy
ICptYXNrQ0FMYXllciA9IG1fbWFza0xheWVyID8gbV9tYXNrTGF5ZXItPnBsYXRmb3JtTGF5ZXIo
KSA6IDA7Ci0gICAgW21fbGF5ZXIuZ2V0KCkgc2V0TWFzazptYXNrQ0FMYXllcl07Ci0KLSAgICBM
YXllck1hcCogbWFza0xheWVyQ2xvbmVNYXAgPSBtX21hc2tMYXllciA/IHN0YXRpY19jYXN0PEdy
YXBoaWNzTGF5ZXJNYWMqPihtX21hc2tMYXllciktPnByaW1hcnlMYXllckNsb25lcygpIDogMDsK
LSAgICAKLSAgICBpZiAoTGF5ZXJNYXAqIGxheWVyQ2xvbmVNYXAgPSBtX2xheWVyQ2xvbmVzLmdl
dCgpKSB7Ci0gICAgICAgIExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBsYXllckNsb25l
TWFwLT5lbmQoKTsKLSAgICAgICAgZm9yIChMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBs
YXllckNsb25lTWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgICAgIENB
TGF5ZXIgKmN1cnJMYXllciA9IGl0LT5zZWNvbmQuZ2V0KCk7Ci0gICAgICAgICAgICAKLSAgICAg
ICAgICAgIENBTGF5ZXIgKm1hc2tDbG9uZSA9IG1hc2tMYXllckNsb25lTWFwID8gbWFza0xheWVy
Q2xvbmVNYXAtPmdldChpdC0+Zmlyc3QpLmdldCgpIDogMDsKLSAgICAgICAgICAgIFtjdXJyTGF5
ZXIgc2V0TWFzazptYXNrQ2xvbmVdOwotICAgICAgICB9Ci0gICAgfQotfQotCi12b2lkIEdyYXBo
aWNzTGF5ZXJNYWM6OnVwZGF0ZVJlcGxpY2F0ZWRMYXllcnMoKQotewotICAgIC8vIENsb25lIHRo
ZSBkZXNjZW5kYW50cyBvZiB0aGUgcmVwbGljYXRlZCBsYXllciwgYW5kIHBhcmVudCB1bmRlciB1
cy4KLSAgICBSZXBsaWNhU3RhdGUgcmVwbGljYVN0YXRlKFJlcGxpY2FTdGF0ZTo6UmVwbGljYUJy
YW5jaCk7Ci0KLSAgICBDQUxheWVyICpyZXBsaWNhUm9vdCA9IHJlcGxpY2F0ZWRMYXllclJvb3Qo
cmVwbGljYVN0YXRlKTsKLSAgICBpZiAoIXJlcGxpY2FSb290KQotICAgICAgICByZXR1cm47Ci0K
LSAgICBpZiAobV9zdHJ1Y3R1cmFsTGF5ZXIpCi0gICAgICAgIFttX3N0cnVjdHVyYWxMYXllci5n
ZXQoKSBpbnNlcnRTdWJsYXllcjpyZXBsaWNhUm9vdCBhdEluZGV4OjBdOwotICAgIGVsc2UKLSAg
ICAgICAgW21fbGF5ZXIuZ2V0KCkgaW5zZXJ0U3VibGF5ZXI6cmVwbGljYVJvb3QgYXRJbmRleDow
XTsKLX0KLQotLy8gRm9yIG5vdywgdGhpcyBhc3N1bWVzIHRoYXQgbGF5ZXJzIG9ubHkgZXZlciBo
YXZlIG9uZSByZXBsaWNhLCBzbyByZXBsaWNhSW5kaWNlcyBjb250YWlucyBvbmx5IDAgYW5kIDEu
Ci1HcmFwaGljc0xheWVyTWFjOjpDbG9uZUlEIEdyYXBoaWNzTGF5ZXJNYWM6OlJlcGxpY2FTdGF0
ZTo6Y2xvbmVJRCgpIGNvbnN0Ci17Ci0gICAgc2l6ZV90IGRlcHRoID0gbV9yZXBsaWNhQnJhbmNo
ZXMuc2l6ZSgpOwotCi0gICAgY29uc3Qgc2l6ZV90IGJpdHNQZXJVQ2hhciA9IHNpemVvZihVQ2hh
cikgKiA4OwotICAgIHNpemVfdCB2ZWN0b3JTaXplID0gKGRlcHRoICsgYml0c1BlclVDaGFyIC0g
MSkgLyBiaXRzUGVyVUNoYXI7Ci0gICAgCi0gICAgVmVjdG9yPFVDaGFyPiByZXN1bHQodmVjdG9y
U2l6ZSk7Ci0gICAgcmVzdWx0LmZpbGwoMCk7Ci0KLSAgICAvLyBDcmVhdGUgYSBzdHJpbmcgZnJv
bSB0aGUgYml0IHNlcXVlbmNlIHdoaWNoIHdlIGNhbiB1c2UgdG8gaWRlbnRpZnkgdGhlIGNsb25l
LgotICAgIC8vIE5vdGUgdGhhdCB0aGUgc3RyaW5nIG1heSBjb250YWluIGVtYmVkZGVkIG51bGxz
LCBidXQgdGhhdCdzIE9LLgotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZGVwdGg7ICsraSkg
ewotICAgICAgICBVQ2hhciYgY3VyckNoYXIgPSByZXN1bHRbaSAvIGJpdHNQZXJVQ2hhcl07Ci0g
ICAgICAgIGN1cnJDaGFyID0gKGN1cnJDaGFyIDw8IDEpIHwgbV9yZXBsaWNhQnJhbmNoZXNbaV07
Ci0gICAgfQotICAgIAotICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KHJlc3VsdCk7Ci19Ci0KLUNB
TGF5ZXIgKkdyYXBoaWNzTGF5ZXJNYWM6OnJlcGxpY2F0ZWRMYXllclJvb3QoUmVwbGljYVN0YXRl
JiByZXBsaWNhU3RhdGUpCi17Ci0gICAgLy8gTGltaXQgcmVwbGljYSBuZXN0aW5nLCB0byBhdm9p
ZCAyXk4gZXhwbG9zaW9uIG9mIHJlcGxpY2EgbGF5ZXJzLgotICAgIGlmICghbV9yZXBsaWNhdGVk
TGF5ZXIgfHwgcmVwbGljYVN0YXRlLnJlcGxpY2FEZXB0aCgpID09IFJlcGxpY2FTdGF0ZTo6bWF4
UmVwbGljYURlcHRoKQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgR3JhcGhpY3NMYXllck1h
YyogcmVwbGljYXRlZExheWVyID0gc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllck1hYyo+KG1fcmVw
bGljYXRlZExheWVyKTsKLSAgICAKLSAgICBDQUxheWVyICpjbG9uZWRMYXllclJvb3QgPSByZXBs
aWNhdGVkTGF5ZXItPmZldGNoQ2xvbmVMYXllcnModGhpcywgcmVwbGljYVN0YXRlLCBSb290Q2xv
bmVMZXZlbCk7Ci0gICAgRmxvYXRQb2ludCBjbG9uZVJvb3RQb3NpdGlvbiA9IHJlcGxpY2F0ZWRM
YXllci0+cG9zaXRpb25Gb3JDbG9uZVJvb3RMYXllcigpOwotCi0gICAgLy8gUmVwbGljYSByb290
IGhhcyBubyBvZmZzZXQgb3IgdHJhbnNmb3JtCi0gICAgW2Nsb25lZExheWVyUm9vdCBzZXRQb3Np
dGlvbjpjbG9uZVJvb3RQb3NpdGlvbl07Ci0gICAgW2Nsb25lZExheWVyUm9vdCBzZXRUcmFuc2Zv
cm06Q0FUcmFuc2Zvcm0zRElkZW50aXR5XTsKLQotICAgIHJldHVybiBjbG9uZWRMYXllclJvb3Q7
Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6dXBkYXRlTGF5ZXJBbmltYXRpb25zKCkKLXsK
LSAgICBpZiAobV9hbmltYXRpb25zVG9Qcm9jZXNzLnNpemUoKSkgewotICAgICAgICBBbmltYXRp
b25zVG9Qcm9jZXNzTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBtX2FuaW1hdGlvbnNUb1Byb2Nl
c3MuZW5kKCk7Ci0gICAgICAgIGZvciAoQW5pbWF0aW9uc1RvUHJvY2Vzc01hcDo6Y29uc3RfaXRl
cmF0b3IgaXQgPSBtX2FuaW1hdGlvbnNUb1Byb2Nlc3MuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0
KSB7Ci0gICAgICAgICAgICBjb25zdCBTdHJpbmcmIGN1cnJBbmltYXRpb25OYW1lID0gaXQtPmZp
cnN0OwotICAgICAgICAgICAgQW5pbWF0aW9uc01hcDo6aXRlcmF0b3IgYW5pbWF0aW9uSXQgPSBt
X3J1bm5pbmdBbmltYXRpb25zLmZpbmQoY3VyckFuaW1hdGlvbk5hbWUpOwotICAgICAgICAgICAg
aWYgKGFuaW1hdGlvbkl0ID09IG1fcnVubmluZ0FuaW1hdGlvbnMuZW5kKCkpCi0gICAgICAgICAg
ICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgIGNvbnN0IEFuaW1hdGlvblByb2Nlc3NpbmdB
Y3Rpb24mIHByb2Nlc3NpbmdJbmZvID0gaXQtPnNlY29uZDsKLSAgICAgICAgICAgIGNvbnN0IFZl
Y3RvcjxMYXllclByb3BlcnR5QW5pbWF0aW9uPiYgYW5pbWF0aW9ucyA9IGFuaW1hdGlvbkl0LT5z
ZWNvbmQ7Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFuaW1hdGlvbnMuc2l6
ZSgpOyArK2kpIHsKLSAgICAgICAgICAgICAgICBjb25zdCBMYXllclByb3BlcnR5QW5pbWF0aW9u
JiBjdXJyQW5pbWF0aW9uID0gYW5pbWF0aW9uc1tpXTsKLSAgICAgICAgICAgICAgICBzd2l0Y2gg
KHByb2Nlc3NpbmdJbmZvLmFjdGlvbikgewotICAgICAgICAgICAgICAgICAgICBjYXNlIFJlbW92
ZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZUNBQW5pbWF0aW9uRnJvbUxheWVyKGN1
cnJBbmltYXRpb24ubV9wcm9wZXJ0eSwgY3VyckFuaW1hdGlvbk5hbWUsIGN1cnJBbmltYXRpb24u
bV9pbmRleCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ICAgICAgY2FzZSBQYXVzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHBhdXNlQ0FBbmltYXRp
b25PbkxheWVyKGN1cnJBbmltYXRpb24ubV9wcm9wZXJ0eSwgY3VyckFuaW1hdGlvbk5hbWUsIGN1
cnJBbmltYXRpb24ubV9pbmRleCwgcHJvY2Vzc2luZ0luZm8udGltZU9mZnNldCk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgIGlmIChwcm9jZXNzaW5nSW5mby5hY3Rpb24gPT0gUmVtb3ZlKQotICAg
ICAgICAgICAgICAgIG1fcnVubmluZ0FuaW1hdGlvbnMucmVtb3ZlKGN1cnJBbmltYXRpb25OYW1l
KTsKLSAgICAgICAgfQotICAgIAotICAgICAgICBtX2FuaW1hdGlvbnNUb1Byb2Nlc3MuY2xlYXIo
KTsKLSAgICB9Ci0gICAgCi0gICAgc2l6ZV90IG51bUFuaW1hdGlvbnM7Ci0gICAgaWYgKChudW1B
bmltYXRpb25zID0gbV91bmNvbWl0dGVkQW5pbWF0aW9ucy5zaXplKCkpKSB7Ci0gICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtQW5pbWF0aW9uczsgKytpKSB7Ci0gICAgICAgICAgICBj
b25zdCBMYXllclByb3BlcnR5QW5pbWF0aW9uJiBwZW5kaW5nQW5pbWF0aW9uID0gbV91bmNvbWl0
dGVkQW5pbWF0aW9uc1tpXTsKLSAgICAgICAgICAgIHNldENBQW5pbWF0aW9uT25MYXllcihwZW5k
aW5nQW5pbWF0aW9uLm1fYW5pbWF0aW9uLmdldCgpLCBwZW5kaW5nQW5pbWF0aW9uLm1fcHJvcGVy
dHksIHBlbmRpbmdBbmltYXRpb24ubV9uYW1lLCBwZW5kaW5nQW5pbWF0aW9uLm1faW5kZXgsIHBl
bmRpbmdBbmltYXRpb24ubV90aW1lT2Zmc2V0KTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAg
QW5pbWF0aW9uc01hcDo6aXRlcmF0b3IgaXQgPSBtX3J1bm5pbmdBbmltYXRpb25zLmZpbmQocGVu
ZGluZ0FuaW1hdGlvbi5tX25hbWUpOwotICAgICAgICAgICAgaWYgKGl0ID09IG1fcnVubmluZ0Fu
aW1hdGlvbnMuZW5kKCkpIHsKLSAgICAgICAgICAgICAgICBWZWN0b3I8TGF5ZXJQcm9wZXJ0eUFu
aW1hdGlvbj4gYW5pbWF0aW9uczsKLSAgICAgICAgICAgICAgICBhbmltYXRpb25zLmFwcGVuZChw
ZW5kaW5nQW5pbWF0aW9uKTsKLSAgICAgICAgICAgICAgICBtX3J1bm5pbmdBbmltYXRpb25zLmFk
ZChwZW5kaW5nQW5pbWF0aW9uLm1fbmFtZSwgYW5pbWF0aW9ucyk7Ci0gICAgICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgICAgIFZlY3RvcjxMYXllclByb3BlcnR5QW5pbWF0aW9uPiYgYW5p
bWF0aW9ucyA9IGl0LT5zZWNvbmQ7Ci0gICAgICAgICAgICAgICAgYW5pbWF0aW9ucy5hcHBlbmQo
cGVuZGluZ0FuaW1hdGlvbik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgCi0g
ICAgICAgIG1fdW5jb21pdHRlZEFuaW1hdGlvbnMuY2xlYXIoKTsKLSAgICB9Ci19Ci0KLXZvaWQg
R3JhcGhpY3NMYXllck1hYzo6c2V0Q0FBbmltYXRpb25PbkxheWVyKENBUHJvcGVydHlBbmltYXRp
b24qIGNhQW5pbSwgQW5pbWF0ZWRQcm9wZXJ0eUlEIHByb3BlcnR5LCBjb25zdCBTdHJpbmcmIGFu
aW1hdGlvbk5hbWUsIGludCBpbmRleCwgZG91YmxlIHRpbWVPZmZzZXQpCi17Ci0gICAgUGxhdGZv
cm1MYXllciogbGF5ZXIgPSBhbmltYXRlZExheWVyKHByb3BlcnR5KTsKLQotICAgIGlmICh0aW1l
T2Zmc2V0KSB7Ci0gICAgICAgIFtjYUFuaW0gc2V0QmVnaW5UaW1lOkNBQ3VycmVudE1lZGlhVGlt
ZSgpIC0gdGltZU9mZnNldF07Ci0gICAgICAgIFtjYUFuaW0gc2V0VmFsdWU6W05TTnVtYmVyIG51
bWJlcldpdGhCb29sOllFU10gZm9yS2V5OldlYktpdEFuaW1hdGlvbkJlZ2luVGltZVNldEtleV07
Ci0gICAgfQotCi0gICAgTlNTdHJpbmcgKmFuaW1hdGlvbklEID0gYW5pbWF0aW9uSWRlbnRpZmll
cihhbmltYXRpb25OYW1lLCBwcm9wZXJ0eSwgaW5kZXgpOwotCi0gICAgW2xheWVyIHJlbW92ZUFu
aW1hdGlvbkZvcktleTphbmltYXRpb25JRF07Ci0gICAgW2xheWVyIGFkZEFuaW1hdGlvbjpjYUFu
aW0gZm9yS2V5OmFuaW1hdGlvbklEXTsKLQotICAgIGlmIChMYXllck1hcCogbGF5ZXJDbG9uZU1h
cCA9IGFuaW1hdGVkTGF5ZXJDbG9uZXMocHJvcGVydHkpKSB7Ci0gICAgICAgIExheWVyTWFwOjpj
b25zdF9pdGVyYXRvciBlbmQgPSBsYXllckNsb25lTWFwLT5lbmQoKTsKLSAgICAgICAgZm9yIChM
YXllck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBsYXllckNsb25lTWFwLT5iZWdpbigpOyBpdCAh
PSBlbmQ7ICsraXQpIHsKLSAgICAgICAgICAgIC8vIFNraXAgaW1tZWRpYXRlIHJlcGxpY2FzLCBz
aW5jZSB0aGV5IG1vdmUgd2l0aCB0aGUgb3JpZ2luYWwuCi0gICAgICAgICAgICBpZiAobV9yZXBs
aWNhTGF5ZXIgJiYgaXNSZXBsaWNhdGVkUm9vdENsb25lKGl0LT5maXJzdCkpCi0gICAgICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBDQUxheWVyICpjdXJyTGF5ZXIgPSBpdC0+c2Vj
b25kLmdldCgpOwotICAgICAgICAgICAgW2N1cnJMYXllciByZW1vdmVBbmltYXRpb25Gb3JLZXk6
YW5pbWF0aW9uSURdOwotICAgICAgICAgICAgW2N1cnJMYXllciBhZGRBbmltYXRpb246Y2FBbmlt
IGZvcktleTphbmltYXRpb25JRF07Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLS8vIFdvcmthcm91
bmQgZm9yIDxyZGFyOi8vcHJvYmxlbS83MzExMzY3Pgotc3RhdGljIHZvaWQgYnVnNzMxMTM2N1dv
cmthcm91bmQoQ0FMYXllciogdHJhbnNmb3JtTGF5ZXIsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0
cml4JiB0cmFuc2Zvcm0pCi17Ci0gICAgaWYgKCF0cmFuc2Zvcm1MYXllcikKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgQ0FUcmFuc2Zvcm0zRCBjYVRyYW5zZm9ybTsKLSAgICBjb3B5VHJhbnNmb3Jt
KGNhVHJhbnNmb3JtLCB0cmFuc2Zvcm0pOwotICAgIGNhVHJhbnNmb3JtLm00MSArPSAxOwotICAg
IFt0cmFuc2Zvcm1MYXllciBzZXRUcmFuc2Zvcm06Y2FUcmFuc2Zvcm1dOwotCi0gICAgY2FUcmFu
c2Zvcm0ubTQxIC09IDE7Ci0gICAgW3RyYW5zZm9ybUxheWVyIHNldFRyYW5zZm9ybTpjYVRyYW5z
Zm9ybV07Ci19Ci0KLWJvb2wgR3JhcGhpY3NMYXllck1hYzo6cmVtb3ZlQ0FBbmltYXRpb25Gcm9t
TGF5ZXIoQW5pbWF0ZWRQcm9wZXJ0eUlEIHByb3BlcnR5LCBjb25zdCBTdHJpbmcmIGFuaW1hdGlv
bk5hbWUsIGludCBpbmRleCkKLXsKLSAgICBQbGF0Zm9ybUxheWVyKiBsYXllciA9IGFuaW1hdGVk
TGF5ZXIocHJvcGVydHkpOwotCi0gICAgTlNTdHJpbmcgKmFuaW1hdGlvbklEID0gYW5pbWF0aW9u
SWRlbnRpZmllcihhbmltYXRpb25OYW1lLCBwcm9wZXJ0eSwgaW5kZXgpOwotCi0gICAgaWYgKCFb
bGF5ZXIgYW5pbWF0aW9uRm9yS2V5OmFuaW1hdGlvbklEXSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIAotICAgIFtsYXllciByZW1vdmVBbmltYXRpb25Gb3JLZXk6YW5pbWF0aW9uSURdOwot
ICAgIGJ1ZzczMTEzNjdXb3JrYXJvdW5kKG1fc3RydWN0dXJhbExheWVyLmdldCgpLCBtX3RyYW5z
Zm9ybSk7Ci0KLSAgICBpZiAoTGF5ZXJNYXAqIGxheWVyQ2xvbmVNYXAgPSBhbmltYXRlZExheWVy
Q2xvbmVzKHByb3BlcnR5KSkgewotICAgICAgICBMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5k
ID0gbGF5ZXJDbG9uZU1hcC0+ZW5kKCk7Ci0gICAgICAgIGZvciAoTGF5ZXJNYXA6OmNvbnN0X2l0
ZXJhdG9yIGl0ID0gbGF5ZXJDbG9uZU1hcC0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0g
ICAgICAgICAgICAvLyBTa2lwIGltbWVkaWF0ZSByZXBsaWNhcywgc2luY2UgdGhleSBtb3ZlIHdp
dGggdGhlIG9yaWdpbmFsLgotICAgICAgICAgICAgaWYgKG1fcmVwbGljYUxheWVyICYmIGlzUmVw
bGljYXRlZFJvb3RDbG9uZShpdC0+Zmlyc3QpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwot
Ci0gICAgICAgICAgICBDQUxheWVyICpjdXJyTGF5ZXIgPSBpdC0+c2Vjb25kLmdldCgpOwotICAg
ICAgICAgICAgW2N1cnJMYXllciByZW1vdmVBbmltYXRpb25Gb3JLZXk6YW5pbWF0aW9uSURdOwot
ICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCi1zdGF0aWMgdm9pZCBjb3B5
QW5pbWF0aW9uUHJvcGVydGllcyhDQVByb3BlcnR5QW5pbWF0aW9uKiBmcm9tLCBDQVByb3BlcnR5
QW5pbWF0aW9uKiB0bykKLXsKLSAgICBbdG8gc2V0QmVnaW5UaW1lOltmcm9tIGJlZ2luVGltZV1d
OwotICAgIFt0byBzZXREdXJhdGlvbjpbZnJvbSBkdXJhdGlvbl1dOwotICAgIFt0byBzZXRSZXBl
YXRDb3VudDpbZnJvbSByZXBlYXRDb3VudF1dOwotICAgIFt0byBzZXRBdXRvcmV2ZXJzZXM6W2Zy
b20gYXV0b3JldmVyc2VzXV07Ci0gICAgW3RvIHNldEZpbGxNb2RlOltmcm9tIGZpbGxNb2RlXV07
Ci0gICAgW3RvIHNldFJlbW92ZWRPbkNvbXBsZXRpb246W2Zyb20gaXNSZW1vdmVkT25Db21wbGV0
aW9uXV07Ci0gICAgW3RvIHNldEFkZGl0aXZlOltmcm9tIGlzQWRkaXRpdmVdXTsKLSAgICBbdG8g
c2V0VGltaW5nRnVuY3Rpb246W2Zyb20gdGltaW5nRnVuY3Rpb25dXTsKLQotI2lmIEhBVkVfTU9E
RVJOX1FVQVJUWkNPUkUKLSAgICBbdG8gc2V0VmFsdWVGdW5jdGlvbjpbZnJvbSB2YWx1ZUZ1bmN0
aW9uXV07Ci0jZW5kaWYKLQotICAgIGlmIChpZCBvYmplY3QgPSBbZnJvbSB2YWx1ZUZvcktleTpX
ZWJLaXRBbmltYXRpb25CZWdpblRpbWVTZXRLZXldKQotICAgICAgICBbdG8gc2V0VmFsdWU6b2Jq
ZWN0IGZvcktleTpXZWJLaXRBbmltYXRpb25CZWdpblRpbWVTZXRLZXldOwotfQotCi12b2lkIEdy
YXBoaWNzTGF5ZXJNYWM6OnBhdXNlQ0FBbmltYXRpb25PbkxheWVyKEFuaW1hdGVkUHJvcGVydHlJ
RCBwcm9wZXJ0eSwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBpbnQgaW5kZXgsIGRvdWJs
ZSB0aW1lT2Zmc2V0KQotewotICAgIFBsYXRmb3JtTGF5ZXIqIGxheWVyID0gYW5pbWF0ZWRMYXll
cihwcm9wZXJ0eSk7Ci0KLSAgICBOU1N0cmluZyAqYW5pbWF0aW9uSUQgPSBhbmltYXRpb25JZGVu
dGlmaWVyKGFuaW1hdGlvbk5hbWUsIHByb3BlcnR5LCBpbmRleCk7Ci0KLSAgICBDQUFuaW1hdGlv
biAqY2FBbmltID0gW2xheWVyIGFuaW1hdGlvbkZvcktleTphbmltYXRpb25JRF07Ci0gICAgaWYg
KCFjYUFuaW0pCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIEFuaW1hdGlvbnMgb24gdGhlIGxh
eWVyIGFyZSBpbW11dGFibGUsIHNvIHdlIGhhdmUgdG8gY2xvbmUgYW5kIG1vZGlmeS4KLSAgICBD
QVByb3BlcnR5QW5pbWF0aW9uKiBwYXVzZWRBbmltID0gbmlsOwotICAgIGlmIChbY2FBbmltIGlz
S2luZE9mQ2xhc3M6W0NBS2V5ZnJhbWVBbmltYXRpb24gY2xhc3NdXSkgewotICAgICAgICBDQUtl
eWZyYW1lQW5pbWF0aW9uKiBleGlzdGluZ0tleWZyYW1lQW5pbSA9IHN0YXRpY19jYXN0PENBS2V5
ZnJhbWVBbmltYXRpb24qPihjYUFuaW0pOwotICAgICAgICBDQUtleWZyYW1lQW5pbWF0aW9uKiBu
ZXdBbmltID0gW0NBS2V5ZnJhbWVBbmltYXRpb24gYW5pbWF0aW9uV2l0aEtleVBhdGg6W2V4aXN0
aW5nS2V5ZnJhbWVBbmltIGtleVBhdGhdXTsKLSAgICAgICAgY29weUFuaW1hdGlvblByb3BlcnRp
ZXMoZXhpc3RpbmdLZXlmcmFtZUFuaW0sIG5ld0FuaW0pOwotICAgICAgICBbbmV3QW5pbSBzZXRW
YWx1ZXM6W2V4aXN0aW5nS2V5ZnJhbWVBbmltIHZhbHVlc11dOwotICAgICAgICBbbmV3QW5pbSBz
ZXRLZXlUaW1lczpbZXhpc3RpbmdLZXlmcmFtZUFuaW0ga2V5VGltZXNdXTsKLSAgICAgICAgW25l
d0FuaW0gc2V0VGltaW5nRnVuY3Rpb25zOltleGlzdGluZ0tleWZyYW1lQW5pbSB0aW1pbmdGdW5j
dGlvbnNdXTsKLSAgICAgICAgcGF1c2VkQW5pbSA9IG5ld0FuaW07Ci0gICAgfSBlbHNlIGlmIChb
Y2FBbmltIGlzS2luZE9mQ2xhc3M6W0NBQmFzaWNBbmltYXRpb24gY2xhc3NdXSkgewotICAgICAg
ICBDQUJhc2ljQW5pbWF0aW9uKiBleGlzdGluZ1Byb3BlcnR5QW5pbSA9IHN0YXRpY19jYXN0PENB
QmFzaWNBbmltYXRpb24qPihjYUFuaW0pOwotICAgICAgICBDQUJhc2ljQW5pbWF0aW9uKiBuZXdB
bmltID0gW0NBQmFzaWNBbmltYXRpb24gYW5pbWF0aW9uV2l0aEtleVBhdGg6W2V4aXN0aW5nUHJv
cGVydHlBbmltIGtleVBhdGhdXTsKLSAgICAgICAgY29weUFuaW1hdGlvblByb3BlcnRpZXMoZXhp
c3RpbmdQcm9wZXJ0eUFuaW0sIG5ld0FuaW0pOwotICAgICAgICBbbmV3QW5pbSBzZXRGcm9tVmFs
dWU6W2V4aXN0aW5nUHJvcGVydHlBbmltIGZyb21WYWx1ZV1dOwotICAgICAgICBbbmV3QW5pbSBz
ZXRUb1ZhbHVlOltleGlzdGluZ1Byb3BlcnR5QW5pbSB0b1ZhbHVlXV07Ci0gICAgICAgIHBhdXNl
ZEFuaW0gPSBuZXdBbmltOwotICAgIH0KLQotICAgIC8vIHBhdXNlZEFuaW0gaGFzIHRoZSBiZWdp
blRpbWUgb2YgY2FBbmltIGFscmVhZHkuCi0gICAgW3BhdXNlZEFuaW0gc2V0U3BlZWQ6MF07Ci0g
ICAgW3BhdXNlZEFuaW0gc2V0VGltZU9mZnNldDp0aW1lT2Zmc2V0XTsKLSAgICAKLSAgICBbbGF5
ZXIgYWRkQW5pbWF0aW9uOnBhdXNlZEFuaW0gZm9yS2V5OmFuaW1hdGlvbklEXTsgIC8vIFRoaXMg
d2lsbCByZXBsYWNlIHRoZSBydW5uaW5nIGFuaW1hdGlvbi4KLQotICAgIC8vIFBhdXNlIHRoZSBh
bmltYXRpb25zIG9uIHRoZSBjbG9uZXMgdG9vLgotICAgIGlmIChMYXllck1hcCogbGF5ZXJDbG9u
ZU1hcCA9IGFuaW1hdGVkTGF5ZXJDbG9uZXMocHJvcGVydHkpKSB7Ci0gICAgICAgIExheWVyTWFw
Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBsYXllckNsb25lTWFwLT5lbmQoKTsKLSAgICAgICAgZm9y
IChMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBsYXllckNsb25lTWFwLT5iZWdpbigpOyBp
dCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgICAgIC8vIFNraXAgaW1tZWRpYXRlIHJlcGxpY2Fz
LCBzaW5jZSB0aGV5IG1vdmUgd2l0aCB0aGUgb3JpZ2luYWwuCi0gICAgICAgICAgICBpZiAobV9y
ZXBsaWNhTGF5ZXIgJiYgaXNSZXBsaWNhdGVkUm9vdENsb25lKGl0LT5maXJzdCkpCi0gICAgICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBDQUxheWVyICpjdXJyTGF5ZXIgPSBpdC0+
c2Vjb25kLmdldCgpOwotICAgICAgICAgICAgW2N1cnJMYXllciBhZGRBbmltYXRpb246cGF1c2Vk
QW5pbSBmb3JLZXk6YW5pbWF0aW9uSURdOwotICAgICAgICB9Ci0gICAgfQotfQotCi12b2lkIEdy
YXBoaWNzTGF5ZXJNYWM6OnNldENvbnRlbnRzVG9DYW52YXMoUGxhdGZvcm1MYXllciogY2FudmFz
TGF5ZXIpCi17Ci0gICAgaWYgKGNhbnZhc0xheWVyID09IG1fY29udGVudHNMYXllcikKLSAgICAg
ICAgcmV0dXJuOwotICAgICAgICAKLSAgICBtX2NvbnRlbnRzTGF5ZXIgPSBjYW52YXNMYXllcjsK
LSAgICBpZiAobV9jb250ZW50c0xheWVyICYmIFttX2NvbnRlbnRzTGF5ZXIuZ2V0KCkgcmVzcG9u
ZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzZXRMYXllck93bmVyOildKQotICAgICAgICBbKGlkKW1f
Y29udGVudHNMYXllci5nZXQoKSBzZXRMYXllck93bmVyOnRoaXNdOwotICAgIAotICAgIG1fY29u
dGVudHNMYXllclB1cnBvc2UgPSBjYW52YXNMYXllciA/IENvbnRlbnRzTGF5ZXJGb3JDYW52YXMg
OiBOb0NvbnRlbnRzTGF5ZXI7Ci0KLSAgICBub3RlU3VibGF5ZXJzQ2hhbmdlZCgpOwotICAgIG5v
dGVMYXllclByb3BlcnR5Q2hhbmdlZChDb250ZW50c0NhbnZhc0xheWVyQ2hhbmdlZCk7Ci19Ci0g
ICAgCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnJlcGFpbnRMYXllckRpcnR5UmVjdHMoKQotewot
ICAgIGlmICghbV9kaXJ0eVJlY3RzLnNpemUoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBtX2RpcnR5UmVjdHMuc2l6ZSgpOyArK2kpCi0gICAgICAgIFtt
X2xheWVyLmdldCgpIHNldE5lZWRzRGlzcGxheUluUmVjdDptX2RpcnR5UmVjdHNbaV1dOwotICAg
IAotICAgIG1fZGlydHlSZWN0cy5jbGVhcigpOwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6
OnVwZGF0ZUNvbnRlbnRzTmVlZHNEaXNwbGF5KCkKLXsKLSAgICBpZiAobV9jb250ZW50c0xheWVy
KQotICAgICAgICBbbV9jb250ZW50c0xheWVyLmdldCgpIHNldE5lZWRzRGlzcGxheV07Ci19Ci0K
LWJvb2wgR3JhcGhpY3NMYXllck1hYzo6Y3JlYXRlQW5pbWF0aW9uRnJvbUtleWZyYW1lcyhjb25z
dCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVMaXN0LCBjb25zdCBBbmltYXRpb24qIGFuaW1hdGlv
biwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBkb3VibGUgdGltZU9mZnNldCkKLXsKLSAg
ICBBU1NFUlQodmFsdWVMaXN0LnByb3BlcnR5KCkgIT0gQW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdFRy
YW5zZm9ybSk7Ci0KLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0gICAgCi0gICAg
Ym9vbCBpc0tleWZyYW1lID0gdmFsdWVMaXN0LnNpemUoKSA+IDI7Ci0gICAgYm9vbCB2YWx1ZXNP
SzsKLSAgICAKLSAgICBib29sIGFkZGl0aXZlID0gZmFsc2U7Ci0gICAgaW50IGFuaW1hdGlvbklu
ZGV4ID0gMDsKLSAgICAKLSAgICBDQVByb3BlcnR5QW5pbWF0aW9uKiBjYUFuaW1hdGlvbjsKLSAg
ICBpZiAoaXNLZXlmcmFtZSkgewotICAgICAgICBDQUtleWZyYW1lQW5pbWF0aW9uKiBrZXlmcmFt
ZUFuaW0gPSBjcmVhdGVLZXlmcmFtZUFuaW1hdGlvbihhbmltYXRpb24sIHZhbHVlTGlzdC5wcm9w
ZXJ0eSgpLCBhZGRpdGl2ZSk7Ci0gICAgICAgIHZhbHVlc09LID0gc2V0QW5pbWF0aW9uS2V5ZnJh
bWVzKHZhbHVlTGlzdCwgYW5pbWF0aW9uLCBrZXlmcmFtZUFuaW0pOwotICAgICAgICBjYUFuaW1h
dGlvbiA9IGtleWZyYW1lQW5pbTsKLSAgICB9IGVsc2UgewotICAgICAgICBDQUJhc2ljQW5pbWF0
aW9uKiBiYXNpY0FuaW0gPSBjcmVhdGVCYXNpY0FuaW1hdGlvbihhbmltYXRpb24sIHZhbHVlTGlz
dC5wcm9wZXJ0eSgpLCBhZGRpdGl2ZSk7Ci0gICAgICAgIHZhbHVlc09LID0gc2V0QW5pbWF0aW9u
RW5kcG9pbnRzKHZhbHVlTGlzdCwgYW5pbWF0aW9uLCBiYXNpY0FuaW0pOwotICAgICAgICBjYUFu
aW1hdGlvbiA9IGJhc2ljQW5pbTsKLSAgICB9Ci0gICAgCi0gICAgaWYgKCF2YWx1ZXNPSykKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgbV91bmNvbWl0dGVkQW5pbWF0aW9ucy5hcHBlbmQo
TGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbihjYUFuaW1hdGlvbiwgYW5pbWF0aW9uTmFtZSwgdmFsdWVM
aXN0LnByb3BlcnR5KCksIGFuaW1hdGlvbkluZGV4LCB0aW1lT2Zmc2V0KSk7Ci0gICAgCi0gICAg
RU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLQotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29s
IEdyYXBoaWNzTGF5ZXJNYWM6OmNyZWF0ZVRyYW5zZm9ybUFuaW1hdGlvbnNGcm9tS2V5ZnJhbWVz
KGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3QsIGNvbnN0IEFuaW1hdGlvbiogYW5p
bWF0aW9uLCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGRvdWJsZSB0aW1lT2Zmc2V0LCBj
b25zdCBJbnRTaXplJiBib3hTaXplKQotewotICAgIEFTU0VSVCh2YWx1ZUxpc3QucHJvcGVydHko
KSA9PSBBbmltYXRlZFByb3BlcnR5V2Via2l0VHJhbnNmb3JtKTsKLQotICAgIFRyYW5zZm9ybU9w
ZXJhdGlvbkxpc3QgZnVuY3Rpb25MaXN0OwotICAgIGJvb2wgbGlzdHNNYXRjaCwgaGFzQmlnUm90
YXRpb247Ci0gICAgZmV0Y2hUcmFuc2Zvcm1PcGVyYXRpb25MaXN0KHZhbHVlTGlzdCwgZnVuY3Rp
b25MaXN0LCBsaXN0c01hdGNoLCBoYXNCaWdSb3RhdGlvbik7Ci0KLSAgICAvLyBXZSBuZWVkIHRv
IGZhbGwgYmFjayB0byBzb2Z0d2FyZSBhbmltYXRpb24gaWYgd2UgZG9uJ3QgaGF2ZSBzZXRWYWx1
ZUZ1bmN0aW9uOiwgYW5kCi0gICAgLy8gd2Ugd291bGQgbmVlZCB0byBhbmltYXRlIGVhY2ggaW5j
b21pbmcgdHJhbnNmb3JtIGZ1bmN0aW9uIHNlcGFyYXRlbHkuIFRoaXMgaXMgdGhlCi0gICAgLy8g
Y2FzZSBpZiB3ZSBoYXZlIGEgcm90YXRpb24gPj0gMTgwIG9yIHdlIGhhdmUgbW9yZSB0aGFuIG9u
ZSB0cmFuc2Zvcm0gZnVuY3Rpb24uCi0gICAgaWYgKChoYXNCaWdSb3RhdGlvbiB8fCBmdW5jdGlv
bkxpc3Quc2l6ZSgpID4gMSkgJiYgIWNhVmFsdWVGdW5jdGlvblN1cHBvcnRlZCgpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICBib29sIHZhbGlkTWF0cmljZXMgPSB0cnVlOwotCi0gICAg
QkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotCi0gICAgLy8gSWYgZnVuY3Rpb25MaXN0cyBk
b24ndCBtYXRjaCB3ZSBkbyBhIG1hdHJpeCBhbmltYXRpb24sIG90aGVyd2lzZSB3ZSBkbyBhIGNv
bXBvbmVudCBoYXJkd2FyZSBhbmltYXRpb24uCi0gICAgLy8gQWxzbywgd2UgY2FuJ3QgZG8gY29t
cG9uZW50IGFuaW1hdGlvbiB1bmxlc3Mgd2UgaGF2ZSB2YWx1ZUZ1bmN0aW9uLCBzbyB3ZSBuZWVk
IHRvIGRvIG1hdHJpeCBhbmltYXRpb24KLSAgICAvLyBpZiB0aGF0J3Mgbm90IHRydWUgYXMgd2Vs
bC4KLSAgICBib29sIGlzTWF0cml4QW5pbWF0aW9uID0gIWxpc3RzTWF0Y2ggfHwgIWNhVmFsdWVG
dW5jdGlvblN1cHBvcnRlZCgpOwotICAgIAotICAgIHNpemVfdCBudW1BbmltYXRpb25zID0gaXNN
YXRyaXhBbmltYXRpb24gPyAxIDogZnVuY3Rpb25MaXN0LnNpemUoKTsKLSAgICBib29sIGlzS2V5
ZnJhbWUgPSB2YWx1ZUxpc3Quc2l6ZSgpID4gMjsKLSAgICAKLSAgICAvLyBJdGVyYXRlIHRocm91
Z2ggdGhlIHRyYW5zZm9ybSBmdW5jdGlvbnMsIHNlbmRpbmcgYW4gYW5pbWF0aW9uIGZvciBlYWNo
IG9uZS4KLSAgICBmb3IgKHNpemVfdCBhbmltYXRpb25JbmRleCA9IDA7IGFuaW1hdGlvbkluZGV4
IDwgbnVtQW5pbWF0aW9uczsgKythbmltYXRpb25JbmRleCkgewotICAgICAgICBUcmFuc2Zvcm1P
cGVyYXRpb246Ok9wZXJhdGlvblR5cGUgdHJhbnNmb3JtT3AgPSBpc01hdHJpeEFuaW1hdGlvbiA/
IFRyYW5zZm9ybU9wZXJhdGlvbjo6TUFUUklYXzNEIDogZnVuY3Rpb25MaXN0W2FuaW1hdGlvbklu
ZGV4XTsKLSAgICAgICAgQ0FQcm9wZXJ0eUFuaW1hdGlvbiogY2FBbmltYXRpb247Ci0KLSNpZiBk
ZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpIHx8IGRlZmluZWQoQlVJTERJTkdfT05fU05PV19M
RU9QQVJEKQotICAgICAgICAvLyBDQSBhcHBsaWVzIGFuaW1hdGlvbnMgaW4gcmV2ZXJzZSBvcmRl
ciAoPHJkYXI6Ly9wcm9ibGVtLzcwOTU2Mzg+KSBzbyB3ZSBuZWVkIHRoZSBsYXN0IG9uZSB3ZSBh
ZGQgKHBlciBwcm9wZXJ0eSkKLSAgICAgICAgLy8gdG8gYmUgbm9uLWFkZGl0aXZlLgotICAgICAg
ICBib29sIGFkZGl0aXZlID0gYW5pbWF0aW9uSW5kZXggPCAobnVtQW5pbWF0aW9ucyAtIDEpOwot
I2Vsc2UKLSAgICAgICAgYm9vbCBhZGRpdGl2ZSA9IGFuaW1hdGlvbkluZGV4ID4gMDsKLSNlbmRp
ZgotICAgICAgICBpZiAoaXNLZXlmcmFtZSkgewotICAgICAgICAgICAgQ0FLZXlmcmFtZUFuaW1h
dGlvbioga2V5ZnJhbWVBbmltID0gY3JlYXRlS2V5ZnJhbWVBbmltYXRpb24oYW5pbWF0aW9uLCB2
YWx1ZUxpc3QucHJvcGVydHkoKSwgYWRkaXRpdmUpOwotICAgICAgICAgICAgdmFsaWRNYXRyaWNl
cyA9IHNldFRyYW5zZm9ybUFuaW1hdGlvbktleWZyYW1lcyh2YWx1ZUxpc3QsIGFuaW1hdGlvbiwg
a2V5ZnJhbWVBbmltLCBhbmltYXRpb25JbmRleCwgdHJhbnNmb3JtT3AsIGlzTWF0cml4QW5pbWF0
aW9uLCBib3hTaXplKTsKLSAgICAgICAgICAgIGNhQW5pbWF0aW9uID0ga2V5ZnJhbWVBbmltOwot
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgQ0FCYXNpY0FuaW1hdGlvbiogYmFzaWNBbmlt
ID0gY3JlYXRlQmFzaWNBbmltYXRpb24oYW5pbWF0aW9uLCB2YWx1ZUxpc3QucHJvcGVydHkoKSwg
YWRkaXRpdmUpOwotICAgICAgICAgICAgdmFsaWRNYXRyaWNlcyA9IHNldFRyYW5zZm9ybUFuaW1h
dGlvbkVuZHBvaW50cyh2YWx1ZUxpc3QsIGFuaW1hdGlvbiwgYmFzaWNBbmltLCBhbmltYXRpb25J
bmRleCwgdHJhbnNmb3JtT3AsIGlzTWF0cml4QW5pbWF0aW9uLCBib3hTaXplKTsKLSAgICAgICAg
ICAgIGNhQW5pbWF0aW9uID0gYmFzaWNBbmltOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAg
ICBpZiAoIXZhbGlkTWF0cmljZXMpCi0gICAgICAgICAgICBicmVhazsKLSAgICAKLSAgICAgICAg
bV91bmNvbWl0dGVkQW5pbWF0aW9ucy5hcHBlbmQoTGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbihjYUFu
aW1hdGlvbiwgYW5pbWF0aW9uTmFtZSwgdmFsdWVMaXN0LnByb3BlcnR5KCksIGFuaW1hdGlvbklu
ZGV4LCB0aW1lT2Zmc2V0KSk7Ci0gICAgfQotCi0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9O
UzsKLQotICAgIHJldHVybiB2YWxpZE1hdHJpY2VzOwotfQotCi1DQUJhc2ljQW5pbWF0aW9uKiBH
cmFwaGljc0xheWVyTWFjOjpjcmVhdGVCYXNpY0FuaW1hdGlvbihjb25zdCBBbmltYXRpb24qIGFu
aW0sIEFuaW1hdGVkUHJvcGVydHlJRCBwcm9wZXJ0eSwgYm9vbCBhZGRpdGl2ZSkKLXsKLSAgICBD
QUJhc2ljQW5pbWF0aW9uKiBiYXNpY0FuaW0gPSBbQ0FCYXNpY0FuaW1hdGlvbiBhbmltYXRpb25X
aXRoS2V5UGF0aDpwcm9wZXJ0eUlkVG9TdHJpbmcocHJvcGVydHkpXTsKLSAgICBzZXR1cEFuaW1h
dGlvbihiYXNpY0FuaW0sIGFuaW0sIGFkZGl0aXZlKTsKLSAgICByZXR1cm4gYmFzaWNBbmltOwot
fQotCi1DQUtleWZyYW1lQW5pbWF0aW9uKiBHcmFwaGljc0xheWVyTWFjOjpjcmVhdGVLZXlmcmFt
ZUFuaW1hdGlvbihjb25zdCBBbmltYXRpb24qIGFuaW0sIEFuaW1hdGVkUHJvcGVydHlJRCBwcm9w
ZXJ0eSwgYm9vbCBhZGRpdGl2ZSkKLXsKLSAgICBDQUtleWZyYW1lQW5pbWF0aW9uKiBrZXlmcmFt
ZUFuaW0gPSBbQ0FLZXlmcmFtZUFuaW1hdGlvbiBhbmltYXRpb25XaXRoS2V5UGF0aDpwcm9wZXJ0
eUlkVG9TdHJpbmcocHJvcGVydHkpXTsKLSAgICBzZXR1cEFuaW1hdGlvbihrZXlmcmFtZUFuaW0s
IGFuaW0sIGFkZGl0aXZlKTsKLSAgICByZXR1cm4ga2V5ZnJhbWVBbmltOwotfQotCi12b2lkIEdy
YXBoaWNzTGF5ZXJNYWM6OnNldHVwQW5pbWF0aW9uKENBUHJvcGVydHlBbmltYXRpb24qIHByb3Bl
cnR5QW5pbSwgY29uc3QgQW5pbWF0aW9uKiBhbmltLCBib29sIGFkZGl0aXZlKQotewotICAgIGRv
dWJsZSBkdXJhdGlvbiA9IGFuaW0tPmR1cmF0aW9uKCk7Ci0gICAgaWYgKGR1cmF0aW9uIDw9IDAp
Ci0gICAgICAgIGR1cmF0aW9uID0gY0FuaW1hdGlvbkFsbW9zdFplcm9EdXJhdGlvbjsKLQotICAg
IGZsb2F0IHJlcGVhdENvdW50ID0gYW5pbS0+aXRlcmF0aW9uQ291bnQoKTsKLSAgICBpZiAocmVw
ZWF0Q291bnQgPT0gQW5pbWF0aW9uOjpJdGVyYXRpb25Db3VudEluZmluaXRlKQotICAgICAgICBy
ZXBlYXRDb3VudCA9IEZMVF9NQVg7Ci0gICAgZWxzZSBpZiAoYW5pbS0+ZGlyZWN0aW9uKCkgPT0g
QW5pbWF0aW9uOjpBbmltYXRpb25EaXJlY3Rpb25BbHRlcm5hdGUpCi0gICAgICAgIHJlcGVhdENv
dW50IC89IDI7Ci0KLSAgICBOU1N0cmluZyAqZmlsbE1vZGUgPSAwOwotICAgIHN3aXRjaCAoYW5p
bS0+ZmlsbE1vZGUoKSkgewotICAgIGNhc2UgQW5pbWF0aW9uRmlsbE1vZGVOb25lOgotICAgICAg
ICBmaWxsTW9kZSA9IGtDQUZpbGxNb2RlRm9yd2FyZHM7IC8vIFVzZSAiZm9yd2FyZHMiIHJhdGhl
ciB0aGFuICJyZW1vdmVkIiBiZWNhdXNlIHRoZSBzdHlsZSBzeXN0ZW0gd2lsbCByZW1vdmUgdGhl
IGFuaW1hdGlvbiB3aGVuIGl0IGlzIGZpbmlzaGVkLiBUaGlzIGF2b2lkcyBhIGZsYXNoLgotICAg
ICAgICBicmVhazsKLSAgICBjYXNlIEFuaW1hdGlvbkZpbGxNb2RlQmFja3dhcmRzOgotICAgICAg
ICBmaWxsTW9kZSA9IGtDQUZpbGxNb2RlQm90aDsgLy8gVXNlICJib3RoIiByYXRoZXIgdGhhbiAi
YmFja3dhcmRzIiBiZWNhdXNlIHRoZSBzdHlsZSBzeXN0ZW0gd2lsbCByZW1vdmUgdGhlIGFuaW1h
dGlvbiB3aGVuIGl0IGlzIGZpbmlzaGVkLiBUaGlzIGF2b2lkcyBhIGZsYXNoLgotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIEFuaW1hdGlvbkZpbGxNb2RlRm9yd2FyZHM6Ci0gICAgICAgZmlsbE1v
ZGUgPSBrQ0FGaWxsTW9kZUZvcndhcmRzOwotICAgICAgIGJyZWFrOwotICAgIGNhc2UgQW5pbWF0
aW9uRmlsbE1vZGVCb3RoOgotICAgICAgIGZpbGxNb2RlID0ga0NBRmlsbE1vZGVCb3RoOwotICAg
ICAgIGJyZWFrOwotICAgIH0KLQotICAgIFtwcm9wZXJ0eUFuaW0gc2V0RHVyYXRpb246ZHVyYXRp
b25dOwotICAgIFtwcm9wZXJ0eUFuaW0gc2V0UmVwZWF0Q291bnQ6cmVwZWF0Q291bnRdOwotICAg
IFtwcm9wZXJ0eUFuaW0gc2V0QXV0b3JldmVyc2VzOmFuaW0tPmRpcmVjdGlvbigpXTsKLSAgICBb
cHJvcGVydHlBbmltIHNldFJlbW92ZWRPbkNvbXBsZXRpb246Tk9dOwotICAgIFtwcm9wZXJ0eUFu
aW0gc2V0QWRkaXRpdmU6YWRkaXRpdmVdOwotICAgIFtwcm9wZXJ0eUFuaW0gc2V0RmlsbE1vZGU6
ZmlsbE1vZGVdOwotCi0gICAgW3Byb3BlcnR5QW5pbSBzZXREZWxlZ2F0ZTptX2FuaW1hdGlvbkRl
bGVnYXRlLmdldCgpXTsKLX0KLQotQ0FNZWRpYVRpbWluZ0Z1bmN0aW9uKiBHcmFwaGljc0xheWVy
TWFjOjp0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKGNvbnN0IEFuaW1hdGlvblZhbHVl
KiBhbmltVmFsdWUsIGNvbnN0IEFuaW1hdGlvbiogYW5pbSkKLXsKLSAgICBjb25zdCBUaW1pbmdG
dW5jdGlvbiogdGYgPSAwOwotICAgIGlmIChhbmltVmFsdWUtPnRpbWluZ0Z1bmN0aW9uKCkpCi0g
ICAgICAgIHRmID0gYW5pbVZhbHVlLT50aW1pbmdGdW5jdGlvbigpOwotICAgIGVsc2UgaWYgKGFu
aW0tPmlzVGltaW5nRnVuY3Rpb25TZXQoKSkKLSAgICAgICAgdGYgPSBhbmltLT50aW1pbmdGdW5j
dGlvbigpLmdldCgpOwotCi0gICAgcmV0dXJuIGdldENBTWVkaWFUaW1pbmdGdW5jdGlvbih0ZiA/
IHRmIDogQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbjo6Y3JlYXRlKCkuZ2V0KCkpOwotfQotCi1i
b29sIEdyYXBoaWNzTGF5ZXJNYWM6OnNldEFuaW1hdGlvbkVuZHBvaW50cyhjb25zdCBLZXlmcmFt
ZVZhbHVlTGlzdCYgdmFsdWVMaXN0LCBjb25zdCBBbmltYXRpb24qIGFuaW0sIENBQmFzaWNBbmlt
YXRpb24qIGJhc2ljQW5pbSkKLXsKLSAgICBpZCBmcm9tVmFsdWUgPSBuaWw7Ci0gICAgaWQgdG9W
YWx1ZSA9IG5pbDsKLQotICAgIHN3aXRjaCAodmFsdWVMaXN0LnByb3BlcnR5KCkpIHsKLSAgICAg
ICAgY2FzZSBBbmltYXRlZFByb3BlcnR5T3BhY2l0eTogewotICAgICAgICAgICAgY29uc3QgRmxv
YXRBbmltYXRpb25WYWx1ZSogc3RhcnRWYWwgPSBzdGF0aWNfY2FzdDxjb25zdCBGbG9hdEFuaW1h
dGlvblZhbHVlKj4odmFsdWVMaXN0LmF0KDApKTsKLSAgICAgICAgICAgIGNvbnN0IEZsb2F0QW5p
bWF0aW9uVmFsdWUqIGVuZFZhbCA9IHN0YXRpY19jYXN0PGNvbnN0IEZsb2F0QW5pbWF0aW9uVmFs
dWUqPih2YWx1ZUxpc3QuYXQoMSkpOwotICAgICAgICAgICAgZnJvbVZhbHVlID0gW05TTnVtYmVy
IG51bWJlcldpdGhGbG9hdDpzdGFydFZhbC0+dmFsdWUoKV07Ci0gICAgICAgICAgICB0b1ZhbHVl
ID0gW05TTnVtYmVyIG51bWJlcldpdGhGbG9hdDplbmRWYWwtPnZhbHVlKCldOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOyAgICAgLy8gd2UgZG9uJ3QgYW5pbWF0ZSBjb2xvciB5ZXQKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIC8vIFRoaXMgY29kZXBhdGggaXMgdXNlZCBmb3Ig
Mi1rZXlmcmFtZSBhbmltYXRpb25zLCBzbyB3ZSBzdGlsbCBuZWVkIHRvIGxvb2sgaW4gdGhlIHN0
YXJ0Ci0gICAgLy8gZm9yIGEgdGltaW5nIGZ1bmN0aW9uLgotICAgIENBTWVkaWFUaW1pbmdGdW5j
dGlvbiogdGltaW5nRnVuY3Rpb24gPSB0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKHZh
bHVlTGlzdC5hdCgwKSwgYW5pbSk7Ci0gICAgW2Jhc2ljQW5pbSBzZXRUaW1pbmdGdW5jdGlvbjp0
aW1pbmdGdW5jdGlvbl07Ci0KLSAgICBbYmFzaWNBbmltIHNldEZyb21WYWx1ZTpmcm9tVmFsdWVd
OwotICAgIFtiYXNpY0FuaW0gc2V0VG9WYWx1ZTp0b1ZhbHVlXTsKLQotICAgIHJldHVybiB0cnVl
OwotfQotCi1ib29sIEdyYXBoaWNzTGF5ZXJNYWM6OnNldEFuaW1hdGlvbktleWZyYW1lcyhjb25z
dCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVMaXN0LCBjb25zdCBBbmltYXRpb24qIGFuaW0sIENB
S2V5ZnJhbWVBbmltYXRpb24qIGtleWZyYW1lQW5pbSkKLXsKLSAgICBSZXRhaW5QdHI8TlNNdXRh
YmxlQXJyYXk+IGtleVRpbWVzKEFkb3B0TlMsIFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRd
KTsKLSAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IHZhbHVlcyhBZG9wdE5TLCBbW05TTXV0
YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7Ci0gICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiB0
aW1pbmdGdW5jdGlvbnMoQWRvcHROUywgW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwot
Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHZhbHVlTGlzdC5zaXplKCk7ICsraSkgewot
ICAgICAgICBjb25zdCBBbmltYXRpb25WYWx1ZSogY3VyVmFsdWUgPSB2YWx1ZUxpc3QuYXQoaSk7
Ci0gICAgICAgIFtrZXlUaW1lcy5nZXQoKSBhZGRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhG
bG9hdDpjdXJWYWx1ZS0+a2V5VGltZSgpXV07Ci0KLSAgICAgICAgc3dpdGNoICh2YWx1ZUxpc3Qu
cHJvcGVydHkoKSkgewotICAgICAgICAgICAgY2FzZSBBbmltYXRlZFByb3BlcnR5T3BhY2l0eTog
ewotICAgICAgICAgICAgICAgIGNvbnN0IEZsb2F0QW5pbWF0aW9uVmFsdWUqIGZsb2F0VmFsdWUg
PSBzdGF0aWNfY2FzdDxjb25zdCBGbG9hdEFuaW1hdGlvblZhbHVlKj4oY3VyVmFsdWUpOwotICAg
ICAgICAgICAgICAgIFt2YWx1ZXMuZ2V0KCkgYWRkT2JqZWN0OltOU051bWJlciBudW1iZXJXaXRo
RmxvYXQ6ZmxvYXRWYWx1ZS0+dmFsdWUoKV1dOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsgICAgIC8vIHdlIGRvbid0IGFuaW1hdGUgY29sb3IgeWV0Ci0gICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQotICAgICAgICBDQU1lZGlhVGltaW5nRnVuY3Rp
b24qIHRpbWluZ0Z1bmN0aW9uID0gdGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShjdXJW
YWx1ZSwgYW5pbSk7Ci0gICAgICAgIFt0aW1pbmdGdW5jdGlvbnMuZ2V0KCkgYWRkT2JqZWN0OnRp
bWluZ0Z1bmN0aW9uXTsKLSAgICB9Ci0gICAgCi0gICAgLy8gV2UgdG9zcyB0aGUgbGFzdCB0ZkFy
cmF5IHZhbHVlIGJlY2F1c2UgaXQgaGFzIHRvIG9uZSBzaG9ydGVyIHRoYW4gdGhlIG90aGVycy4K
LSAgICBbdGltaW5nRnVuY3Rpb25zLmdldCgpIHJlbW92ZUxhc3RPYmplY3RdOwotCi0gICAgW2tl
eWZyYW1lQW5pbSBzZXRLZXlUaW1lczprZXlUaW1lcy5nZXQoKV07Ci0gICAgW2tleWZyYW1lQW5p
bSBzZXRWYWx1ZXM6dmFsdWVzLmdldCgpXTsKLSAgICBba2V5ZnJhbWVBbmltIHNldFRpbWluZ0Z1
bmN0aW9uczp0aW1pbmdGdW5jdGlvbnMuZ2V0KCldOwotICAgIAotICAgIHJldHVybiB0cnVlOwot
fQotCi1ib29sIEdyYXBoaWNzTGF5ZXJNYWM6OnNldFRyYW5zZm9ybUFuaW1hdGlvbkVuZHBvaW50
cyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVMaXN0LCBjb25zdCBBbmltYXRpb24qIGFu
aW0sIENBQmFzaWNBbmltYXRpb24qIGJhc2ljQW5pbSwgaW50IGZ1bmN0aW9uSW5kZXgsIFRyYW5z
Zm9ybU9wZXJhdGlvbjo6T3BlcmF0aW9uVHlwZSB0cmFuc2Zvcm1PcCwgYm9vbCBpc01hdHJpeEFu
aW1hdGlvbiwgY29uc3QgSW50U2l6ZSYgYm94U2l6ZSkKLXsKLSAgICBpZCBmcm9tVmFsdWU7Ci0g
ICAgaWQgdG9WYWx1ZTsKLSAgICAKLSAgICBBU1NFUlQodmFsdWVMaXN0LnNpemUoKSA9PSAyKTsK
LSAgICBjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSogc3RhcnRWYWx1ZSA9IHN0YXRpY19j
YXN0PGNvbnN0IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKj4odmFsdWVMaXN0LmF0KDApKTsKLSAg
ICBjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSogZW5kVmFsdWUgPSBzdGF0aWNfY2FzdDxj
b25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSo+KHZhbHVlTGlzdC5hdCgxKSk7Ci0gICAgCi0g
ICAgaWYgKGlzTWF0cml4QW5pbWF0aW9uKSB7Ci0gICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4
IGZyb21UcmFuc2Zvcm0sIHRvVHJhbnNmb3JtOwotICAgICAgICBzdGFydFZhbHVlLT52YWx1ZSgp
LT5hcHBseShib3hTaXplLCBmcm9tVHJhbnNmb3JtKTsKLSAgICAgICAgZW5kVmFsdWUtPnZhbHVl
KCktPmFwcGx5KGJveFNpemUsIHRvVHJhbnNmb3JtKTsKLQotICAgICAgICAvLyBJZiBhbnkgbWF0
cml4IGlzIHNpbmd1bGFyLCBDQSB3b24ndCBhbmltYXRlIGl0IGNvcnJlY3RseS4gU28gZmFsbCBi
YWNrIHRvIHNvZnR3YXJlIGFuaW1hdGlvbgotICAgICAgICBpZiAoIWZyb21UcmFuc2Zvcm0uaXNJ
bnZlcnRpYmxlKCkgfHwgIXRvVHJhbnNmb3JtLmlzSW52ZXJ0aWJsZSgpKQotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgICAgIENBVHJhbnNmb3JtM0QgY2FUcmFuc2Zvcm07Ci0gICAg
ICAgIGNvcHlUcmFuc2Zvcm0oY2FUcmFuc2Zvcm0sIGZyb21UcmFuc2Zvcm0pOwotICAgICAgICBm
cm9tVmFsdWUgPSBbTlNWYWx1ZSB2YWx1ZVdpdGhDQVRyYW5zZm9ybTNEOmNhVHJhbnNmb3JtXTsK
LQotICAgICAgICBjb3B5VHJhbnNmb3JtKGNhVHJhbnNmb3JtLCB0b1RyYW5zZm9ybSk7Ci0gICAg
ICAgIHRvVmFsdWUgPSBbTlNWYWx1ZSB2YWx1ZVdpdGhDQVRyYW5zZm9ybTNEOmNhVHJhbnNmb3Jt
XTsKLSAgICB9IGVsc2UgewotICAgICAgICBmcm9tVmFsdWUgPSBnZXRUcmFuc2Zvcm1GdW5jdGlv
blZhbHVlKHN0YXJ0VmFsdWUtPnZhbHVlKCktPmF0KGZ1bmN0aW9uSW5kZXgpLCB0cmFuc2Zvcm1P
cCwgYm94U2l6ZSk7Ci0gICAgICAgIHRvVmFsdWUgPSBnZXRUcmFuc2Zvcm1GdW5jdGlvblZhbHVl
KGVuZFZhbHVlLT52YWx1ZSgpLT5hdChmdW5jdGlvbkluZGV4KSwgdHJhbnNmb3JtT3AsIGJveFNp
emUpOwotICAgIH0KLQotICAgIC8vIFRoaXMgY29kZXBhdGggaXMgdXNlZCBmb3IgMi1rZXlmcmFt
ZSBhbmltYXRpb25zLCBzbyB3ZSBzdGlsbCBuZWVkIHRvIGxvb2sgaW4gdGhlIHN0YXJ0Ci0gICAg
Ly8gZm9yIGEgdGltaW5nIGZ1bmN0aW9uLgotICAgIENBTWVkaWFUaW1pbmdGdW5jdGlvbiogdGlt
aW5nRnVuY3Rpb24gPSB0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKHZhbHVlTGlzdC5h
dCgwKSwgYW5pbSk7Ci0gICAgW2Jhc2ljQW5pbSBzZXRUaW1pbmdGdW5jdGlvbjp0aW1pbmdGdW5j
dGlvbl07Ci0KLSAgICBbYmFzaWNBbmltIHNldEZyb21WYWx1ZTpmcm9tVmFsdWVdOwotICAgIFti
YXNpY0FuaW0gc2V0VG9WYWx1ZTp0b1ZhbHVlXTsKLQotI2lmIEhBVkVfTU9ERVJOX1FVQVJUWkNP
UkUKLSAgICBpZiAoTlNTdHJpbmcgKnZhbHVlRnVuY3Rpb25OYW1lID0gZ2V0VmFsdWVGdW5jdGlv
bk5hbWVGb3JUcmFuc2Zvcm1PcGVyYXRpb24odHJhbnNmb3JtT3ApKQotICAgICAgICBbYmFzaWNB
bmltIHNldFZhbHVlRnVuY3Rpb246W0NBVmFsdWVGdW5jdGlvbiBmdW5jdGlvbldpdGhOYW1lOnZh
bHVlRnVuY3Rpb25OYW1lXV07Ci0jZW5kaWYKLQotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29s
IEdyYXBoaWNzTGF5ZXJNYWM6OnNldFRyYW5zZm9ybUFuaW1hdGlvbktleWZyYW1lcyhjb25zdCBL
ZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVMaXN0LCBjb25zdCBBbmltYXRpb24qIGFuaW1hdGlvbiwg
Q0FLZXlmcmFtZUFuaW1hdGlvbioga2V5ZnJhbWVBbmltLCBpbnQgZnVuY3Rpb25JbmRleCwgVHJh
bnNmb3JtT3BlcmF0aW9uOjpPcGVyYXRpb25UeXBlIHRyYW5zZm9ybU9wVHlwZSwgYm9vbCBpc01h
dHJpeEFuaW1hdGlvbiwgY29uc3QgSW50U2l6ZSYgYm94U2l6ZSkKLXsKLSAgICBSZXRhaW5QdHI8
TlNNdXRhYmxlQXJyYXk+IGtleVRpbWVzKEFkb3B0TlMsIFtbTlNNdXRhYmxlQXJyYXkgYWxsb2Nd
IGluaXRdKTsKLSAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IHZhbHVlcyhBZG9wdE5TLCBb
W05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7Ci0gICAgUmV0YWluUHRyPE5TTXV0YWJsZUFy
cmF5PiB0aW1pbmdGdW5jdGlvbnMoQWRvcHROUywgW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5p
dF0pOwotCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHZhbHVlTGlzdC5zaXplKCk7ICsr
aSkgewotICAgICAgICBjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSogY3VyVmFsdWUgPSBz
dGF0aWNfY2FzdDxjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSo+KHZhbHVlTGlzdC5hdChp
KSk7Ci0gICAgICAgIFtrZXlUaW1lcy5nZXQoKSBhZGRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldp
dGhGbG9hdDpjdXJWYWx1ZS0+a2V5VGltZSgpXV07Ci0KLSAgICAgICAgaWYgKGlzTWF0cml4QW5p
bWF0aW9uKSB7Ci0gICAgICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0cmFuc2Zvcm07Ci0g
ICAgICAgICAgICBjdXJWYWx1ZS0+dmFsdWUoKS0+YXBwbHkoYm94U2l6ZSwgdHJhbnNmb3JtKTsK
LQotICAgICAgICAgICAgLy8gSWYgYW55IG1hdHJpeCBpcyBzaW5ndWxhciwgQ0Egd29uJ3QgYW5p
bWF0ZSBpdCBjb3JyZWN0bHkuIFNvIGZhbGwgYmFjayB0byBzb2Z0d2FyZSBhbmltYXRpb24KLSAg
ICAgICAgICAgIGlmICghdHJhbnNmb3JtLmlzSW52ZXJ0aWJsZSgpKQotICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgICAgICAgICAgQ0FUcmFuc2Zvcm0zRCBjYVRyYW5zZm9ybTsK
LSAgICAgICAgICAgIGNvcHlUcmFuc2Zvcm0oY2FUcmFuc2Zvcm0sIHRyYW5zZm9ybSk7Ci0gICAg
ICAgICAgICBbdmFsdWVzLmdldCgpIGFkZE9iamVjdDpbTlNWYWx1ZSB2YWx1ZVdpdGhDQVRyYW5z
Zm9ybTNEOmNhVHJhbnNmb3JtXV07Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBjb25z
dCBUcmFuc2Zvcm1PcGVyYXRpb24qIHRyYW5zZm9ybU9wID0gY3VyVmFsdWUtPnZhbHVlKCktPmF0
KGZ1bmN0aW9uSW5kZXgpOwotICAgICAgICAgICAgW3ZhbHVlcy5nZXQoKSBhZGRPYmplY3Q6Z2V0
VHJhbnNmb3JtRnVuY3Rpb25WYWx1ZSh0cmFuc2Zvcm1PcCwgdHJhbnNmb3JtT3BUeXBlLCBib3hT
aXplKV07Ci0gICAgICAgIH0KLQotICAgICAgICBDQU1lZGlhVGltaW5nRnVuY3Rpb24qIHRpbWlu
Z0Z1bmN0aW9uID0gdGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShjdXJWYWx1ZSwgYW5p
bWF0aW9uKTsKLSAgICAgICAgW3RpbWluZ0Z1bmN0aW9ucy5nZXQoKSBhZGRPYmplY3Q6dGltaW5n
RnVuY3Rpb25dOwotICAgIH0KLSAgICAKLSAgICAvLyBXZSB0b3NzIHRoZSBsYXN0IHRmQXJyYXkg
dmFsdWUgYmVjYXVzZSBpdCBoYXMgdG8gb25lIHNob3J0ZXIgdGhhbiB0aGUgb3RoZXJzLgotICAg
IFt0aW1pbmdGdW5jdGlvbnMuZ2V0KCkgcmVtb3ZlTGFzdE9iamVjdF07Ci0KLSAgICBba2V5ZnJh
bWVBbmltIHNldEtleVRpbWVzOmtleVRpbWVzLmdldCgpXTsKLSAgICBba2V5ZnJhbWVBbmltIHNl
dFZhbHVlczp2YWx1ZXMuZ2V0KCldOwotICAgIFtrZXlmcmFtZUFuaW0gc2V0VGltaW5nRnVuY3Rp
b25zOnRpbWluZ0Z1bmN0aW9ucy5nZXQoKV07Ci0KLSNpZiBIQVZFX01PREVSTl9RVUFSVFpDT1JF
Ci0gICAgaWYgKE5TU3RyaW5nICp2YWx1ZUZ1bmN0aW9uTmFtZSA9IGdldFZhbHVlRnVuY3Rpb25O
YW1lRm9yVHJhbnNmb3JtT3BlcmF0aW9uKHRyYW5zZm9ybU9wVHlwZSkpCi0gICAgICAgIFtrZXlm
cmFtZUFuaW0gc2V0VmFsdWVGdW5jdGlvbjpbQ0FWYWx1ZUZ1bmN0aW9uIGZ1bmN0aW9uV2l0aE5h
bWU6dmFsdWVGdW5jdGlvbk5hbWVdXTsKLSNlbmRpZgotICAgIHJldHVybiB0cnVlOwotfQotCi12
b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnN1c3BlbmRBbmltYXRpb25zKGRvdWJsZSB0aW1lKQotewot
ICAgIGRvdWJsZSB0ID0gY3VycmVudFRpbWVUb01lZGlhVGltZSh0aW1lID8gdGltZSA6IGN1cnJl
bnRUaW1lKCkpOwotICAgIFtwcmltYXJ5TGF5ZXIoKSBzZXRTcGVlZDowXTsKLSAgICBbcHJpbWFy
eUxheWVyKCkgc2V0VGltZU9mZnNldDp0XTsKLQotICAgIC8vIFN1c3BlbmQgdGhlIGFuaW1hdGlv
bnMgb24gdGhlIGNsb25lcyB0b28uCi0gICAgaWYgKExheWVyTWFwKiBsYXllckNsb25lTWFwID0g
cHJpbWFyeUxheWVyQ2xvbmVzKCkpIHsKLSAgICAgICAgTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9y
IGVuZCA9IGxheWVyQ2xvbmVNYXAtPmVuZCgpOwotICAgICAgICBmb3IgKExheWVyTWFwOjpjb25z
dF9pdGVyYXRvciBpdCA9IGxheWVyQ2xvbmVNYXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkg
ewotICAgICAgICAgICAgQ0FMYXllciAqY3VyckxheWVyID0gaXQtPnNlY29uZC5nZXQoKTsKLSAg
ICAgICAgICAgIFtjdXJyTGF5ZXIgc2V0U3BlZWQ6MF07Ci0gICAgICAgICAgICBbY3VyckxheWVy
IHNldFRpbWVPZmZzZXQ6dF07Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXZvaWQgR3JhcGhpY3NM
YXllck1hYzo6cmVzdW1lQW5pbWF0aW9ucygpCi17Ci0gICAgW3ByaW1hcnlMYXllcigpIHNldFNw
ZWVkOjFdOwotICAgIFtwcmltYXJ5TGF5ZXIoKSBzZXRUaW1lT2Zmc2V0OjBdOwotCi0gICAgLy8g
UmVzdW1lIHRoZSBhbmltYXRpb25zIG9uIHRoZSBjbG9uZXMgdG9vLgotICAgIGlmIChMYXllck1h
cCogbGF5ZXJDbG9uZU1hcCA9IHByaW1hcnlMYXllckNsb25lcygpKSB7Ci0gICAgICAgIExheWVy
TWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBsYXllckNsb25lTWFwLT5lbmQoKTsKLSAgICAgICAg
Zm9yIChMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBsYXllckNsb25lTWFwLT5iZWdpbigp
OyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgICAgIENBTGF5ZXIgKmN1cnJMYXllciA9IGl0
LT5zZWNvbmQuZ2V0KCk7Ci0gICAgICAgICAgICBbY3VyckxheWVyIHNldFNwZWVkOjFdOwotICAg
ICAgICAgICAgW2N1cnJMYXllciBzZXRUaW1lT2Zmc2V0OjBdOwotICAgICAgICB9Ci0gICAgfQot
fQotCi1DQUxheWVyKiBHcmFwaGljc0xheWVyTWFjOjpob3N0TGF5ZXJGb3JTdWJsYXllcnMoKSBj
b25zdAotewotICAgIHJldHVybiBtX3N0cnVjdHVyYWxMYXllci5nZXQoKSA/IG1fc3RydWN0dXJh
bExheWVyLmdldCgpIDogbV9sYXllci5nZXQoKTsgCi19Ci0KLUNBTGF5ZXIqIEdyYXBoaWNzTGF5
ZXJNYWM6OmxheWVyRm9yU3VwZXJsYXllcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc3RydWN0
dXJhbExheWVyID8gbV9zdHJ1Y3R1cmFsTGF5ZXIuZ2V0KCkgOiBtX2xheWVyLmdldCgpOwotfQot
Ci1DQUxheWVyKiBHcmFwaGljc0xheWVyTWFjOjphbmltYXRlZExheWVyKEFuaW1hdGVkUHJvcGVy
dHlJRCBwcm9wZXJ0eSkgY29uc3QKLXsKLSAgICByZXR1cm4gKHByb3BlcnR5ID09IEFuaW1hdGVk
UHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpID8gbV9jb250ZW50c0xheWVyLmdldCgpIDogcHJpbWFy
eUxheWVyKCk7Ci19Ci0KLUdyYXBoaWNzTGF5ZXJNYWM6OkxheWVyTWFwKiBHcmFwaGljc0xheWVy
TWFjOjphbmltYXRlZExheWVyQ2xvbmVzKEFuaW1hdGVkUHJvcGVydHlJRCBwcm9wZXJ0eSkgY29u
c3QKLXsKLSAgICByZXR1cm4gKHByb3BlcnR5ID09IEFuaW1hdGVkUHJvcGVydHlCYWNrZ3JvdW5k
Q29sb3IpID8gbV9jb250ZW50c0xheWVyQ2xvbmVzLmdldCgpIDogcHJpbWFyeUxheWVyQ2xvbmVz
KCk7Ci19Ci0KLVBsYXRmb3JtTGF5ZXIqIEdyYXBoaWNzTGF5ZXJNYWM6OnBsYXRmb3JtTGF5ZXIo
KSBjb25zdAotewotICAgIHJldHVybiBwcmltYXJ5TGF5ZXIoKTsKLX0KLQotdm9pZCBHcmFwaGlj
c0xheWVyTWFjOjpzZXREZWJ1Z0JhY2tncm91bmRDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCi17
Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgCi0gICAgaWYgKGNvbG9yLmlz
VmFsaWQoKSkKLSAgICAgICAgc2V0TGF5ZXJCYWNrZ3JvdW5kQ29sb3IobV9sYXllci5nZXQoKSwg
Y29sb3IpOwotICAgIGVsc2UKLSAgICAgICAgY2xlYXJMYXllckJhY2tncm91bmRDb2xvcihtX2xh
eWVyLmdldCgpKTsKLSAgICAKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi19Ci0KLXZv
aWQgR3JhcGhpY3NMYXllck1hYzo6c2V0RGVidWdCb3JkZXIoY29uc3QgQ29sb3ImIGNvbG9yLCBm
bG9hdCBib3JkZXJXaWR0aCkKLXsKLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAg
ICAKLSAgICBpZiAoY29sb3IuaXNWYWxpZCgpKSB7Ci0gICAgICAgIHNldExheWVyQm9yZGVyQ29s
b3IobV9sYXllci5nZXQoKSwgY29sb3IpOwotICAgICAgICBbbV9sYXllci5nZXQoKSBzZXRCb3Jk
ZXJXaWR0aDpib3JkZXJXaWR0aF07Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgY2xlYXJCb3JkZXJD
b2xvcihtX2xheWVyLmdldCgpKTsKLSAgICAgICAgW21fbGF5ZXIuZ2V0KCkgc2V0Qm9yZGVyV2lk
dGg6MF07Ci0gICAgfQotICAgIAotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLX0KLQot
RmxvYXRTaXplIEdyYXBoaWNzTGF5ZXJNYWM6OmNvbnN0cmFpbmVkU2l6ZSgpIGNvbnN0Ci17Ci0g
ICAgZmxvYXQgdGlsZUNvbHVtbnMgPSBjZWlsZihtX3NpemUud2lkdGgoKSAvIGNUaWxlZExheWVy
VGlsZVNpemUpOwotICAgIGZsb2F0IHRpbGVSb3dzID0gY2VpbGYobV9zaXplLmhlaWdodCgpIC8g
Y1RpbGVkTGF5ZXJUaWxlU2l6ZSk7Ci0gICAgZG91YmxlIG51bVRpbGVzID0gdGlsZUNvbHVtbnMg
KiB0aWxlUm93czsKLSAgICAKLSAgICBGbG9hdFNpemUgY29uc3RyYWluZWRTaXplID0gbV9zaXpl
OwotICAgIGNvbnN0IHVuc2lnbmVkIGNNYXhUaWxlQ291bnQgPSA1MTI7Ci0gICAgd2hpbGUgKG51
bVRpbGVzID4gY01heFRpbGVDb3VudCkgewotICAgICAgICAvLyBDb25zdHJhaW4gdGhlIHdpZGVy
IGRpbWVuc2lvbi4KLSAgICAgICAgaWYgKGNvbnN0cmFpbmVkU2l6ZS53aWR0aCgpID49IGNvbnN0
cmFpbmVkU2l6ZS5oZWlnaHQoKSkgewotICAgICAgICAgICAgdGlsZUNvbHVtbnMgPSBtYXgoZmxv
b3JmKGNNYXhUaWxlQ291bnQgLyB0aWxlUm93cyksIDEuMGYpOwotICAgICAgICAgICAgY29uc3Ry
YWluZWRTaXplLnNldFdpZHRoKHRpbGVDb2x1bW5zICogY1RpbGVkTGF5ZXJUaWxlU2l6ZSk7Ci0g
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICB0aWxlUm93cyA9IG1heChmbG9vcmYoY01heFRp
bGVDb3VudCAvIHRpbGVDb2x1bW5zKSwgMS4wZik7Ci0gICAgICAgICAgICBjb25zdHJhaW5lZFNp
emUuc2V0SGVpZ2h0KHRpbGVSb3dzICogY1RpbGVkTGF5ZXJUaWxlU2l6ZSk7Ci0gICAgICAgIH0K
LSAgICAgICAgbnVtVGlsZXMgPSB0aWxlQ29sdW1ucyAqIHRpbGVSb3dzOwotICAgIH0KLSAgICAK
LSAgICByZXR1cm4gY29uc3RyYWluZWRTaXplOwotfQotCi1ib29sIEdyYXBoaWNzTGF5ZXJNYWM6
OnJlcXVpcmVzVGlsZWRMYXllcihjb25zdCBGbG9hdFNpemUmIHNpemUpIGNvbnN0Ci17Ci0gICAg
aWYgKCFtX2RyYXdzQ29udGVudCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gRklY
TUU6IGNhdGNoIHplcm8tc2l6ZSBoZWlnaHQgb3Igd2lkdGggaGVyZSAob3IgZWFybGllcik/Ci0g
ICAgcmV0dXJuIHNpemUud2lkdGgoKSA+IGNNYXhQaXhlbERpbWVuc2lvbiB8fCBzaXplLmhlaWdo
dCgpID4gY01heFBpeGVsRGltZW5zaW9uOwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnN3
YXBGcm9tT3JUb1RpbGVkTGF5ZXIoYm9vbCB1c2VUaWxlZExheWVyKQotewotICAgIGlmICh1c2VU
aWxlZExheWVyID09IG1fdXNpbmdUaWxlZExheWVyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBD
R1NpemUgdGlsZVNpemUgPSBDR1NpemVNYWtlKGNUaWxlZExheWVyVGlsZVNpemUsIGNUaWxlZExh
eWVyVGlsZVNpemUpOwotCi0gICAgUmV0YWluUHRyPENBTGF5ZXI+IG9sZExheWVyID0gbV9sYXll
ci5nZXQoKTsKLSAgICAKLSAgICBDbGFzcyBsYXllckNsYXNzID0gdXNlVGlsZWRMYXllciA/IFtX
ZWJUaWxlZExheWVyIHNlbGZdIDogW1dlYkxheWVyIHNlbGZdOwotICAgIG1fbGF5ZXIuYWRvcHRO
UyhbW2xheWVyQ2xhc3MgYWxsb2NdIGluaXRdKTsKLQotICAgIG1fdXNpbmdUaWxlZExheWVyID0g
dXNlVGlsZWRMYXllcjsKLQotICAgIGlmICh1c2VUaWxlZExheWVyKSB7Ci0gICAgICAgIFdlYlRp
bGVkTGF5ZXIqIHRpbGVkTGF5ZXIgPSAoV2ViVGlsZWRMYXllciopbV9sYXllci5nZXQoKTsKLSAg
ICAgICAgW3RpbGVkTGF5ZXIgc2V0VGlsZVNpemU6dGlsZVNpemVdOwotICAgICAgICBbdGlsZWRM
YXllciBzZXRMZXZlbHNPZkRldGFpbDoxXTsKLSAgICAgICAgW3RpbGVkTGF5ZXIgc2V0TGV2ZWxz
T2ZEZXRhaWxCaWFzOjBdOwotICAgICAgICBbdGlsZWRMYXllciBzZXRDb250ZW50c0dyYXZpdHk6
QCJib3R0b21MZWZ0Il07Ci0KLSNpZiAhSEFWRV9NT0RFUk5fUVVBUlRaQ09SRQotICAgICAgICAv
LyBUaWxlZCBsYXllciBoYXMgaXNzdWVzIHdpdGggZmxpcHBlZCBjb29yZGluYXRlcy4KLSAgICAg
ICAgc2V0Q29udGVudHNPcmllbnRhdGlvbihDb21wb3NpdGluZ0Nvb3JkaW5hdGVzVG9wRG93bik7
Ci0jZW5kaWYKLSAgICB9IGVsc2UgewotI2lmICFIQVZFX01PREVSTl9RVUFSVFpDT1JFCi0gICAg
ICAgIHNldENvbnRlbnRzT3JpZW50YXRpb24oZGVmYXVsdENvbnRlbnRzT3JpZW50YXRpb24oKSk7
Ci0jZW5kaWYKLSAgICB9Ci0gICAgCi0gICAgW21fbGF5ZXIuZ2V0KCkgc2V0TGF5ZXJPd25lcjp0
aGlzXTsKLSAgICBzYWZlU2V0U3VibGF5ZXJzKG1fbGF5ZXIuZ2V0KCksIFtvbGRMYXllci5nZXQo
KSBzdWJsYXllcnNdKTsKLSAgICAKLSAgICBbW29sZExheWVyLmdldCgpIHN1cGVybGF5ZXJdIHJl
cGxhY2VTdWJsYXllcjpvbGRMYXllci5nZXQoKSB3aXRoOm1fbGF5ZXIuZ2V0KCldOwotCi0gICAg
dXBkYXRlQ29udGVudHNUcmFuc2Zvcm0oKTsKLQotICAgIHVwZGF0ZUxheWVyUG9zaXRpb24oKTsK
LSAgICB1cGRhdGVMYXllclNpemUoKTsKLSAgICB1cGRhdGVBbmNob3JQb2ludCgpOwotICAgIHVw
ZGF0ZVRyYW5zZm9ybSgpOwotICAgIHVwZGF0ZUNoaWxkcmVuVHJhbnNmb3JtKCk7Ci0gICAgdXBk
YXRlTWFza3NUb0JvdW5kcygpOwotICAgIHVwZGF0ZUNvbnRlbnRzT3BhcXVlKCk7Ci0gICAgdXBk
YXRlQmFja2ZhY2VWaXNpYmlsaXR5KCk7Ci0gICAgdXBkYXRlTGF5ZXJCYWNrZ3JvdW5kQ29sb3Io
KTsKLSAgICAKLSAgICB1cGRhdGVPcGFjaXR5T25MYXllcigpOwotICAgIAotI2lmbmRlZiBOREVC
VUcKLSAgICBTdHJpbmcgbmFtZSA9IFN0cmluZzo6Zm9ybWF0KCJDQUxheWVyKCVwKSBHcmFwaGlj
c0xheWVyKCVwKSAiLCBtX2xheWVyLmdldCgpLCB0aGlzKSArIG1fbmFtZTsKLSAgICBbbV9sYXll
ci5nZXQoKSBzZXROYW1lOm5hbWVdOwotI2VuZGlmCi0KLSAgICAvLyBtb3ZlIG92ZXIgYW5pbWF0
aW9ucwotICAgIG1vdmVPckNvcHlBbmltYXRpb25zRm9yUHJvcGVydHkoTW92ZSwgQW5pbWF0ZWRQ
cm9wZXJ0eVdlYmtpdFRyYW5zZm9ybSwgb2xkTGF5ZXIuZ2V0KCksIG1fbGF5ZXIuZ2V0KCkpOwot
ICAgIG1vdmVPckNvcHlBbmltYXRpb25zRm9yUHJvcGVydHkoTW92ZSwgQW5pbWF0ZWRQcm9wZXJ0
eU9wYWNpdHksIG9sZExheWVyLmdldCgpLCBtX2xheWVyLmdldCgpKTsKLSAgICBtb3ZlT3JDb3B5
QW5pbWF0aW9uc0ZvclByb3BlcnR5KE1vdmUsIEFuaW1hdGVkUHJvcGVydHlCYWNrZ3JvdW5kQ29s
b3IsIG9sZExheWVyLmdldCgpLCBtX2xheWVyLmdldCgpKTsKLSAgICAKLSAgICAvLyBuZWVkIHRv
IHRlbGwgbmV3IGxheWVyIHRvIGRyYXcgaXRzZWxmCi0gICAgc2V0TmVlZHNEaXNwbGF5KCk7Ci0g
ICAgCi0gICAgdXBkYXRlRGVidWdJbmRpY2F0b3JzKCk7Ci19Ci0KLUdyYXBoaWNzTGF5ZXI6OkNv
bXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBHcmFwaGljc0xheWVyTWFjOjpkZWZhdWx0
Q29udGVudHNPcmllbnRhdGlvbigpIGNvbnN0Ci17Ci0jaWYgIUhBVkVfTU9ERVJOX1FVQVJUWkNP
UkUKLSAgICAvLyBPbGRlciBRdWFydHpDb3JlIGRvZXMgbm90IHN1cHBvcnQgLWdlb21ldHJ5Rmxp
cHBlZCwgc28gd2UgbWFudWFsbHkgZmxpcCB0aGUgcm9vdAotICAgIC8vIGxheWVyIGdlb21ldHJ5
LCBhbmQgdGhlbiBmbGlwIHRoZSBjb250ZW50cyBvZiBlYWNoIGxheWVyIGJhY2sgc28gdGhhdCB0
aGUgQ1RNIGZvciBDRwotICAgIC8vIGlzIHVuZmxpcHBlZCwgYWxsb3dpbmcgaXQgdG8gZG8gdGhl
IGNvcnJlY3QgZm9udCBhdXRvLWhpbnRpbmcuCi0gICAgcmV0dXJuIENvbXBvc2l0aW5nQ29vcmRp
bmF0ZXNCb3R0b21VcDsKLSNlbHNlCi0gICAgcmV0dXJuIENvbXBvc2l0aW5nQ29vcmRpbmF0ZXNU
b3BEb3duOwotI2VuZGlmCi19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6dXBkYXRlQ29udGVu
dHNUcmFuc2Zvcm0oKQotewotI2lmICFIQVZFX01PREVSTl9RVUFSVFpDT1JFCi0gICAgaWYgKGNv
bnRlbnRzT3JpZW50YXRpb24oKSA9PSBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzQm90dG9tVXApIHsK
LSAgICAgICAgQ0dBZmZpbmVUcmFuc2Zvcm0gY29udGVudHNUcmFuc2Zvcm0gPSBDR0FmZmluZVRy
YW5zZm9ybU1ha2VTY2FsZSgxLCAtMSk7Ci0gICAgICAgIGNvbnRlbnRzVHJhbnNmb3JtID0gQ0dB
ZmZpbmVUcmFuc2Zvcm1UcmFuc2xhdGUoY29udGVudHNUcmFuc2Zvcm0sIDAsIC1bbV9sYXllci5n
ZXQoKSBib3VuZHNdLnNpemUuaGVpZ2h0KTsKLSAgICAgICAgW21fbGF5ZXIuZ2V0KCkgc2V0Q29u
dGVudHNUcmFuc2Zvcm06Y29udGVudHNUcmFuc2Zvcm1dOwotICAgIH0KLSNlbmRpZgotfQotCi12
b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnNldHVwQ29udGVudHNMYXllcihDQUxheWVyKiBjb250ZW50
c0xheWVyKQotewotICAgIC8vIFR1cm4gb2ZmIGltcGxpY2l0IGFuaW1hdGlvbnMgb24gdGhlIGlu
bmVyIGxheWVyLgotICAgIFtjb250ZW50c0xheWVyIHNldFN0eWxlOltOU0RpY3Rpb25hcnkgZGlj
dGlvbmFyeVdpdGhPYmplY3Q6bnVsbEFjdGlvbnNEaWN0aW9uYXJ5KCkgZm9yS2V5OkAiYWN0aW9u
cyJdXTsKLSAgICBbY29udGVudHNMYXllciBzZXRNYXNrc1RvQm91bmRzOllFU107Ci0KLSAgICBp
ZiAoZGVmYXVsdENvbnRlbnRzT3JpZW50YXRpb24oKSA9PSBDb21wb3NpdGluZ0Nvb3JkaW5hdGVz
Qm90dG9tVXApIHsKLSAgICAgICAgQ0FUcmFuc2Zvcm0zRCBmbGlwcGVyID0gewotICAgICAgICAg
ICAgMS4wZiwgMC4wZiwgMC4wZiwgMC4wZiwKLSAgICAgICAgICAgIDAuMGYsIC0xLjBmLCAwLjBm
LCAwLjBmLAotICAgICAgICAgICAgMC4wZiwgMC4wZiwgMS4wZiwgMC4wZiwKLSAgICAgICAgICAg
IDAuMGYsIDAuMGYsIDAuMGYsIDEuMGZ9OwotICAgICAgICBbY29udGVudHNMYXllciBzZXRUcmFu
c2Zvcm06ZmxpcHBlcl07Ci0gICAgICAgIFtjb250ZW50c0xheWVyIHNldEFuY2hvclBvaW50OkNH
UG9pbnRNYWtlKDAuMGYsIDEuMGYpXTsKLSAgICB9IGVsc2UKLSAgICAgICAgW2NvbnRlbnRzTGF5
ZXIgc2V0QW5jaG9yUG9pbnQ6Q0dQb2ludFplcm9dOwotCi0gICAgaWYgKHNob3dEZWJ1Z0JvcmRl
cnMoKSkgewotICAgICAgICBzZXRMYXllckJvcmRlckNvbG9yKGNvbnRlbnRzTGF5ZXIsIENvbG9y
KDAsIDAsIDEyOCwgMTgwKSk7Ci0gICAgICAgIFtjb250ZW50c0xheWVyIHNldEJvcmRlcldpZHRo
OjEuMGZdOwotICAgIH0KLX0KLQotQ0FMYXllciAqR3JhcGhpY3NMYXllck1hYzo6ZmluZE9yTWFr
ZUNsb25lKENsb25lSUQgY2xvbmVJRCwgQ0FMYXllciAqc291cmNlTGF5ZXIsIExheWVyTWFwKiBj
bG9uZXMsIENsb25lTGV2ZWwgY2xvbmVMZXZlbCkKLXsKLSAgICBpZiAoIXNvdXJjZUxheWVyKQot
ICAgICAgICByZXR1cm4gMDsKLQotICAgIENBTGF5ZXIgKnJlc3VsdExheWVyOwotCi0gICAgLy8g
QWRkIHdpdGggYSBkdW1teSB2YWx1ZSB0byBnZXQgYW4gaXRlcmF0b3IgZm9yIHRoZSBpbnNlcnRp
b24gcG9zaXRpb24sIGFuZCBhIGJvb2xlYW4gdGhhdCB0ZWxscwotICAgIC8vIHVzIHdoZXRoZXIg
dGhlcmUncyBhbiBpdGVtIHRoZXJlLiBUaGlzIHRlY2huaXF1ZSBhdm9pZHMgdHdvIGhhc2ggbG9v
a3Vwcy4KLSAgICBSZXRhaW5QdHI8Q0FMYXllcj4gZHVtbXk7Ci0gICAgcGFpcjxMYXllck1hcDo6
aXRlcmF0b3IsIGJvb2w+IGFkZFJlc3VsdCA9IGNsb25lcy0+YWRkKGNsb25lSUQsIGR1bW15KTsK
LSAgICBpZiAoIWFkZFJlc3VsdC5zZWNvbmQpIHsKLSAgICAgICAgLy8gVmFsdWUgd2FzIG5vdCBh
ZGRlZCwgc28gaXQgZXhpc3RzIGFscmVhZHkuCi0gICAgICAgIHJlc3VsdExheWVyID0gYWRkUmVz
dWx0LmZpcnN0LT5zZWNvbmQuZ2V0KCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgcmVzdWx0TGF5
ZXIgPSBjbG9uZUxheWVyKHNvdXJjZUxheWVyLCBjbG9uZUxldmVsKTsKLSNpZm5kZWYgTkRFQlVH
Ci0gICAgICAgIFtyZXN1bHRMYXllciBzZXROYW1lOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0
OkAiQ2xvbmUgJWQgb2YgbGF5ZXIgJUAiLCBjbG9uZUlEWzBVXSwgc291cmNlTGF5ZXJdXTsKLSNl
bmRpZgotICAgICAgICBhZGRSZXN1bHQuZmlyc3QtPnNlY29uZCA9IHJlc3VsdExheWVyOwotICAg
IH0KLQotICAgIHJldHVybiByZXN1bHRMYXllcjsKLX0gICAKLQotdm9pZCBHcmFwaGljc0xheWVy
TWFjOjplbnN1cmVDbG9uZUxheWVycyhDbG9uZUlEIGNsb25lSUQsIENBTGF5ZXIgKiYgcHJpbWFy
eUxheWVyLCBDQUxheWVyIComIHN0cnVjdHVyYWxMYXllciwgQ0FMYXllciAqJiBjb250ZW50c0xh
eWVyLCBDbG9uZUxldmVsIGNsb25lTGV2ZWwpCi17Ci0gICAgc3RydWN0dXJhbExheWVyID0gbmls
OwotICAgIGNvbnRlbnRzTGF5ZXIgPSBuaWw7Ci0KLSAgICBpZiAoIW1fbGF5ZXJDbG9uZXMpCi0g
ICAgICAgIG1fbGF5ZXJDbG9uZXMgPSBuZXcgTGF5ZXJNYXA7Ci0KLSAgICBpZiAoIW1fc3RydWN0
dXJhbExheWVyQ2xvbmVzICYmIG1fc3RydWN0dXJhbExheWVyKQotICAgICAgICBtX3N0cnVjdHVy
YWxMYXllckNsb25lcyA9IG5ldyBMYXllck1hcDsKLQotICAgIGlmICghbV9jb250ZW50c0xheWVy
Q2xvbmVzICYmIG1fY29udGVudHNMYXllcikKLSAgICAgICAgbV9jb250ZW50c0xheWVyQ2xvbmVz
ID0gbmV3IExheWVyTWFwOwotCi0gICAgcHJpbWFyeUxheWVyID0gZmluZE9yTWFrZUNsb25lKGNs
b25lSUQsIG1fbGF5ZXIuZ2V0KCksIG1fbGF5ZXJDbG9uZXMuZ2V0KCksIGNsb25lTGV2ZWwpOwot
ICAgIHN0cnVjdHVyYWxMYXllciA9IGZpbmRPck1ha2VDbG9uZShjbG9uZUlELCBtX3N0cnVjdHVy
YWxMYXllci5nZXQoKSwgbV9zdHJ1Y3R1cmFsTGF5ZXJDbG9uZXMuZ2V0KCksIGNsb25lTGV2ZWwp
OwotICAgIGNvbnRlbnRzTGF5ZXIgPSBmaW5kT3JNYWtlQ2xvbmUoY2xvbmVJRCwgbV9jb250ZW50
c0xheWVyLmdldCgpLCBtX2NvbnRlbnRzTGF5ZXJDbG9uZXMuZ2V0KCksIGNsb25lTGV2ZWwpOwot
fQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnJlbW92ZUNsb25lTGF5ZXJzKCkKLXsKLSAgICBt
X2xheWVyQ2xvbmVzID0gMDsKLSAgICBtX3N0cnVjdHVyYWxMYXllckNsb25lcyA9IDA7Ci0gICAg
bV9jb250ZW50c0xheWVyQ2xvbmVzID0gMDsKLX0KLQotRmxvYXRQb2ludCBHcmFwaGljc0xheWVy
TWFjOjpwb3NpdGlvbkZvckNsb25lUm9vdExheWVyKCkgY29uc3QKLXsKLSAgICAvLyBUaGlzIGNh
biBnZXQgY2FsbGVkIGR1cmluZyBhIHN5bmMgd2hlbiB3ZSd2ZSBqdXN0IHJlbW92ZWQgdGhlIG1f
cmVwbGljYUxheWVyLgotICAgIGlmICghbV9yZXBsaWNhTGF5ZXIpCi0gICAgICAgIHJldHVybiBG
bG9hdFBvaW50KCk7Ci0KLSAgICBGbG9hdFBvaW50IHJlcGxpY2FQb3NpdGlvbiA9IG1fcmVwbGlj
YUxheWVyLT5yZXBsaWNhdGVkTGF5ZXJQb3NpdGlvbigpOwotICAgIHJldHVybiBGbG9hdFBvaW50
KHJlcGxpY2FQb3NpdGlvbi54KCkgKyBtX2FuY2hvclBvaW50LngoKSAqIG1fc2l6ZS53aWR0aCgp
LAotICAgICAgICAgICAgICAgICAgICAgIHJlcGxpY2FQb3NpdGlvbi55KCkgKyBtX2FuY2hvclBv
aW50LnkoKSAqIG1fc2l6ZS5oZWlnaHQoKSk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6
cHJvcGFnYXRlTGF5ZXJDaGFuZ2VUb1JlcGxpY2FzKCkKLXsKLSAgICBmb3IgKEdyYXBoaWNzTGF5
ZXIqIGN1cnJMYXllciA9IHRoaXM7IGN1cnJMYXllcjsgY3VyckxheWVyID0gY3VyckxheWVyLT5w
YXJlbnQoKSkgewotICAgICAgICBHcmFwaGljc0xheWVyTWFjKiBjdXJyTGF5ZXJDQSA9IHN0YXRp
Y19jYXN0PEdyYXBoaWNzTGF5ZXJNYWMqPihjdXJyTGF5ZXIpOwotICAgICAgICBpZiAoIWN1cnJM
YXllckNBLT5oYXNDbG9uZUxheWVycygpKQotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAg
aWYgKGN1cnJMYXllckNBLT5yZXBsaWNhTGF5ZXIoKSkKLSAgICAgICAgICAgIHN0YXRpY19jYXN0
PEdyYXBoaWNzTGF5ZXJNYWMqPihjdXJyTGF5ZXJDQS0+cmVwbGljYUxheWVyKCkpLT5ub3RlTGF5
ZXJQcm9wZXJ0eUNoYW5nZWQoUmVwbGljYXRlZExheWVyQ2hhbmdlZCk7Ci0gICAgfQotfQotCi1D
QUxheWVyICpHcmFwaGljc0xheWVyTWFjOjpmZXRjaENsb25lTGF5ZXJzKEdyYXBoaWNzTGF5ZXIq
IHJlcGxpY2FSb290LCBSZXBsaWNhU3RhdGUmIHJlcGxpY2FTdGF0ZSwgQ2xvbmVMZXZlbCBjbG9u
ZUxldmVsKQotewotICAgIENBTGF5ZXIgKnByaW1hcnlMYXllcjsKLSAgICBDQUxheWVyICpzdHJ1
Y3R1cmFsTGF5ZXI7Ci0gICAgQ0FMYXllciAqY29udGVudHNMYXllcjsKLSAgICBlbnN1cmVDbG9u
ZUxheWVycyhyZXBsaWNhU3RhdGUuY2xvbmVJRCgpLCBwcmltYXJ5TGF5ZXIsIHN0cnVjdHVyYWxM
YXllciwgY29udGVudHNMYXllciwgY2xvbmVMZXZlbCk7Ci0KLSAgICBpZiAobV9tYXNrTGF5ZXIp
IHsKLSAgICAgICAgQ0FMYXllciAqbWFza0Nsb25lID0gc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXll
ck1hYyo+KG1fbWFza0xheWVyKS0+ZmV0Y2hDbG9uZUxheWVycyhyZXBsaWNhUm9vdCwgcmVwbGlj
YVN0YXRlLCBJbnRlcm1lZGlhdGVDbG9uZUxldmVsKTsKLSAgICAgICAgW3ByaW1hcnlMYXllciBz
ZXRNYXNrOm1hc2tDbG9uZV07Ci0gICAgfQotCi0gICAgaWYgKG1fcmVwbGljYXRlZExheWVyKSB7
Ci0gICAgICAgIC8vIFdlIGFyZSBhIHJlcGxpY2EgYmVpbmcgYXNrZWQgZm9yIGNsb25lcyBvZiBv
dXIgbGF5ZXJzLgotICAgICAgICBDQUxheWVyICpyZXBsaWNhUm9vdCA9IHJlcGxpY2F0ZWRMYXll
clJvb3QocmVwbGljYVN0YXRlKTsKLSAgICAgICAgaWYgKCFyZXBsaWNhUm9vdCkKLSAgICAgICAg
ICAgIHJldHVybiBuaWw7Ci0KLSAgICAgICAgaWYgKHN0cnVjdHVyYWxMYXllcikgewotICAgICAg
ICAgICAgW3N0cnVjdHVyYWxMYXllciBpbnNlcnRTdWJsYXllcjpyZXBsaWNhUm9vdCBhdEluZGV4
OjBdOwotICAgICAgICAgICAgcmV0dXJuIHN0cnVjdHVyYWxMYXllcjsKLSAgICAgICAgfQotICAg
ICAgICAKLSAgICAgICAgW3ByaW1hcnlMYXllciBpbnNlcnRTdWJsYXllcjpyZXBsaWNhUm9vdCBh
dEluZGV4OjBdOwotICAgICAgICByZXR1cm4gcHJpbWFyeUxheWVyOwotICAgIH0KLQotICAgIGNv
bnN0IFZlY3RvcjxHcmFwaGljc0xheWVyKj4mIGNoaWxkTGF5ZXJzID0gY2hpbGRyZW4oKTsKLSAg
ICBOU011dGFibGVBcnJheSogY2xvbmFsU3VibGF5ZXJzID0gbmlsOwotCi0gICAgQ0FMYXllciAq
cmVwbGljYUxheWVyID0gbmlsOwotICAgIGlmIChtX3JlcGxpY2FMYXllciAmJiBtX3JlcGxpY2FM
YXllciAhPSByZXBsaWNhUm9vdCkgewotICAgICAgICAvLyBXZSBoYXZlIG5lc3RlZCByZXBsaWNh
cy4gQXNrIHRoZSByZXBsaWNhIGxheWVyIGZvciBhIGNsb25lIG9mIGl0cyBjb250ZW50cy4KLSAg
ICAgICAgcmVwbGljYVN0YXRlLnNldEJyYW5jaFR5cGUoUmVwbGljYVN0YXRlOjpSZXBsaWNhQnJh
bmNoKTsKLSAgICAgICAgcmVwbGljYUxheWVyID0gc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllck1h
Yyo+KG1fcmVwbGljYUxheWVyKS0+ZmV0Y2hDbG9uZUxheWVycyhyZXBsaWNhUm9vdCwgcmVwbGlj
YVN0YXRlLCBSb290Q2xvbmVMZXZlbCk7Ci0gICAgICAgIHJlcGxpY2FTdGF0ZS5zZXRCcmFuY2hU
eXBlKFJlcGxpY2FTdGF0ZTo6Q2hpbGRCcmFuY2gpOwotICAgIH0KLSAgICAKLSAgICBpZiAocmVw
bGljYUxheWVyIHx8IHN0cnVjdHVyYWxMYXllciB8fCBjb250ZW50c0xheWVyIHx8IGNoaWxkTGF5
ZXJzLnNpemUoKSA+IDApIHsKLSAgICAgICAgY2xvbmFsU3VibGF5ZXJzID0gW1tOU011dGFibGVB
cnJheSBhbGxvY10gaW5pdF07Ci0KLSAgICAgICAgaWYgKHN0cnVjdHVyYWxMYXllcikgewotICAg
ICAgICAgICAgLy8gUmVwbGljYXMgcmVuZGVyIGJlaGluZCB0aGUgYWN0dWFsIGxheWVyIGNvbnRl
bnQuCi0gICAgICAgICAgICBpZiAocmVwbGljYUxheWVyKQotICAgICAgICAgICAgICAgIFtjbG9u
YWxTdWJsYXllcnMgYWRkT2JqZWN0OnJlcGxpY2FMYXllcl07Ci0gICAgICAgICAgICAgICAgCi0g
ICAgICAgICAgICAvLyBBZGQgdGhlIHByaW1hcnkgbGF5ZXIgbmV4dC4gRXZlbiBpZiB3ZSBoYXZl
IG5lZ2F0aXZlIHotb3JkZXIgY2hpbGRyZW4sIHRoZSBwcmltYXJ5IGxheWVyIGFsd2F5cyBjb21l
cyBiZWhpbmQuCi0gICAgICAgICAgICBbY2xvbmFsU3VibGF5ZXJzIGFkZE9iamVjdDpwcmltYXJ5
TGF5ZXJdOwotICAgICAgICB9IGVsc2UgaWYgKGNvbnRlbnRzTGF5ZXIpIHsKLSAgICAgICAgICAg
IC8vIEZJWE1FOiBhZGQgdGhlIGNvbnRlbnRzIGxheWVyIGluIHRoZSBjb3JyZWN0IG9yZGVyIHdp
dGggbmVnYXRpdmUgei1vcmRlciBjaGlsZHJlbi4KLSAgICAgICAgICAgIC8vIFRoaXMgZG9lcyBu
b3QgY2F1c2UgdmlzaWJsZSByZW5kZXJpbmcgaXNzdWVzIGJlY2F1c2UgY3VycmVudGx5IGNvbnRl
bnRzIGxheWVycyBhcmUgb25seSB1c2VkCi0gICAgICAgICAgICAvLyBmb3IgcmVwbGFjZWQgZWxl
bWVudHMgdGhhdCBkb24ndCBoYXZlIGNoaWxkcmVuLgotICAgICAgICAgICAgW2Nsb25hbFN1Ymxh
eWVycyBhZGRPYmplY3Q6Y29udGVudHNMYXllcl07Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAg
ICAgIHJlcGxpY2FTdGF0ZS5wdXNoKFJlcGxpY2FTdGF0ZTo6Q2hpbGRCcmFuY2gpOwotCi0gICAg
ICAgIHNpemVfdCBudW1DaGlsZHJlbiA9IGNoaWxkTGF5ZXJzLnNpemUoKTsKLSAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBudW1DaGlsZHJlbjsgKytpKSB7Ci0gICAgICAgICAgICBHcmFw
aGljc0xheWVyTWFjKiBjdXJDaGlsZCA9IHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXJNYWMqPihj
aGlsZExheWVyc1tpXSk7Ci0KLSAgICAgICAgICAgIENBTGF5ZXIgKmNoaWxkTGF5ZXIgPSBjdXJD
aGlsZC0+ZmV0Y2hDbG9uZUxheWVycyhyZXBsaWNhUm9vdCwgcmVwbGljYVN0YXRlLCBJbnRlcm1l
ZGlhdGVDbG9uZUxldmVsKTsKLSAgICAgICAgICAgIGlmIChjaGlsZExheWVyKQotICAgICAgICAg
ICAgICAgIFtjbG9uYWxTdWJsYXllcnMgYWRkT2JqZWN0OmNoaWxkTGF5ZXJdOwotICAgICAgICB9
Ci0KLSAgICAgICAgcmVwbGljYVN0YXRlLnBvcCgpOwotCi0gICAgICAgIFtjbG9uYWxTdWJsYXll
cnMgbWFrZU9iamVjdHNQZXJmb3JtU2VsZWN0b3I6QHNlbGVjdG9yKHJlbW92ZUZyb21TdXBlcmxh
eWVyKV07Ci0gICAgfQotICAgIAotICAgIENBTGF5ZXIgKnJlc3VsdDsKLSAgICBpZiAoc3RydWN0
dXJhbExheWVyKSB7Ci0gICAgICAgIFtzdHJ1Y3R1cmFsTGF5ZXIgc2V0U3VibGF5ZXJzOmNsb25h
bFN1YmxheWVyc107Ci0KLSAgICAgICAgaWYgKGNvbnRlbnRzTGF5ZXIpIHsKLSAgICAgICAgICAg
IC8vIElmIHdlIGhhdmUgYSB0cmFuc2Zvcm0gbGF5ZXIsIHRoZW4gdGhlIGNvbnRlbnRzIGxheWVy
IGlzIHBhcmVudGVkIGluIHRoZSAKLSAgICAgICAgICAgIC8vIHByaW1hcnkgbGF5ZXIgKHdoaWNo
IGlzIGl0c2VsZiBhIGNoaWxkIG9mIHRoZSB0cmFuc2Zvcm0gbGF5ZXIpLgotICAgICAgICAgICAg
W3ByaW1hcnlMYXllciBzZXRTdWJsYXllcnM6bmlsXTsKLSAgICAgICAgICAgIFtwcmltYXJ5TGF5
ZXIgYWRkU3VibGF5ZXI6Y29udGVudHNMYXllcl07Ci0gICAgICAgIH0KLQotICAgICAgICByZXN1
bHQgPSBzdHJ1Y3R1cmFsTGF5ZXI7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgW3ByaW1hcnlMYXll
ciBzZXRTdWJsYXllcnM6Y2xvbmFsU3VibGF5ZXJzXTsKLSAgICAgICAgcmVzdWx0ID0gcHJpbWFy
eUxheWVyOwotICAgIH0KLQotICAgIFtjbG9uYWxTdWJsYXllcnMgcmVsZWFzZV07Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLQotQ0FMYXllciAqR3JhcGhpY3NMYXllck1hYzo6Y2xvbmVMYXllcihD
QUxheWVyICpsYXllciwgQ2xvbmVMZXZlbCBjbG9uZUxldmVsKQotewotICAgIHN0YXRpYyBDbGFz
cyB0cmFuc2Zvcm1MYXllckNsYXNzID0gTlNDbGFzc0Zyb21TdHJpbmcoQCJDQVRyYW5zZm9ybUxh
eWVyIik7Ci0gICAgQ0FMYXllciAqbmV3TGF5ZXIgPSBuaWw7Ci0gICAgaWYgKFtsYXllciBpc0tp
bmRPZkNsYXNzOnRyYW5zZm9ybUxheWVyQ2xhc3NdKQotICAgICAgICBuZXdMYXllciA9IFt0cmFu
c2Zvcm1MYXllckNsYXNzIGxheWVyXTsKLSAgICBlbHNlCi0gICAgICAgIG5ld0xheWVyID0gW0NB
TGF5ZXIgbGF5ZXJdOwotCi0gICAgW25ld0xheWVyIHNldFN0eWxlOltOU0RpY3Rpb25hcnkgZGlj
dGlvbmFyeVdpdGhPYmplY3Q6bnVsbEFjdGlvbnNEaWN0aW9uYXJ5KCkgZm9yS2V5OkAiYWN0aW9u
cyJdXTsKLSAgICAKLSAgICBbbmV3TGF5ZXIgc2V0UG9zaXRpb246W2xheWVyIHBvc2l0aW9uXV07
Ci0gICAgW25ld0xheWVyIHNldEJvdW5kczpbbGF5ZXIgYm91bmRzXV07Ci0gICAgW25ld0xheWVy
IHNldEFuY2hvclBvaW50OltsYXllciBhbmNob3JQb2ludF1dOwotI2lmIEhBVkVfTU9ERVJOX1FV
QVJUWkNPUkUKLSAgICBbbmV3TGF5ZXIgc2V0QW5jaG9yUG9pbnRaOltsYXllciBhbmNob3JQb2lu
dFpdXTsKLSNlbmRpZgotICAgIFtuZXdMYXllciBzZXRUcmFuc2Zvcm06W2xheWVyIHRyYW5zZm9y
bV1dOwotICAgIFtuZXdMYXllciBzZXRTdWJsYXllclRyYW5zZm9ybTpbbGF5ZXIgc3VibGF5ZXJU
cmFuc2Zvcm1dXTsKLSAgICBbbmV3TGF5ZXIgc2V0Q29udGVudHM6W2xheWVyIGNvbnRlbnRzXV07
Ci0gICAgW25ld0xheWVyIHNldE1hc2tzVG9Cb3VuZHM6W2xheWVyIG1hc2tzVG9Cb3VuZHNdXTsK
LSAgICBbbmV3TGF5ZXIgc2V0RG91YmxlU2lkZWQ6W2xheWVyIGlzRG91YmxlU2lkZWRdXTsKLSAg
ICBbbmV3TGF5ZXIgc2V0T3BhcXVlOltsYXllciBpc09wYXF1ZV1dOwotICAgIFtuZXdMYXllciBz
ZXRCYWNrZ3JvdW5kQ29sb3I6W2xheWVyIGJhY2tncm91bmRDb2xvcl1dOwotCi0gICAgaWYgKGNs
b25lTGV2ZWwgPT0gSW50ZXJtZWRpYXRlQ2xvbmVMZXZlbCkgewotICAgICAgICBbbmV3TGF5ZXIg
c2V0T3BhY2l0eTpbbGF5ZXIgb3BhY2l0eV1dOwotICAgICAgICBtb3ZlT3JDb3B5QW5pbWF0aW9u
c0ZvclByb3BlcnR5KENvcHksIEFuaW1hdGVkUHJvcGVydHlXZWJraXRUcmFuc2Zvcm0sIGxheWVy
LCBuZXdMYXllcik7Ci0gICAgICAgIG1vdmVPckNvcHlBbmltYXRpb25zRm9yUHJvcGVydHkoQ29w
eSwgQW5pbWF0ZWRQcm9wZXJ0eU9wYWNpdHksIGxheWVyLCBuZXdMYXllcik7Ci0gICAgfQotICAg
IAotICAgIGlmIChzaG93RGVidWdCb3JkZXJzKCkpIHsKLSAgICAgICAgc2V0TGF5ZXJCb3JkZXJD
b2xvcihuZXdMYXllciwgQ29sb3IoMjU1LCAxMjIsIDI1MSkpOwotICAgICAgICBbbmV3TGF5ZXIg
c2V0Qm9yZGVyV2lkdGg6Ml07Ci0gICAgfQotICAgIAotICAgIHJldHVybiBuZXdMYXllcjsKLX0K
LQotdm9pZCBHcmFwaGljc0xheWVyTWFjOjpzZXRPcGFjaXR5SW50ZXJuYWwoZmxvYXQgYWNjdW11
bGF0ZWRPcGFjaXR5KQotewotICAgIExheWVyTWFwKiBsYXllckNsb25lTWFwID0gMDsKLSAgICAK
LSAgICBpZiAocHJlc2VydmVzM0QoKSkgewotICAgICAgICBbbV9sYXllci5nZXQoKSBzZXRPcGFj
aXR5OmFjY3VtdWxhdGVkT3BhY2l0eV07Ci0gICAgICAgIGxheWVyQ2xvbmVNYXAgPSBtX2xheWVy
Q2xvbmVzLmdldCgpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIFtwcmltYXJ5TGF5ZXIoKSBzZXRP
cGFjaXR5OmFjY3VtdWxhdGVkT3BhY2l0eV07Ci0gICAgICAgIGxheWVyQ2xvbmVNYXAgPSBwcmlt
YXJ5TGF5ZXJDbG9uZXMoKTsKLSAgICB9Ci0KLSAgICBpZiAobGF5ZXJDbG9uZU1hcCkgewotICAg
ICAgICBMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbGF5ZXJDbG9uZU1hcC0+ZW5kKCk7
Ci0gICAgICAgIGZvciAoTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbGF5ZXJDbG9uZU1h
cC0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICBpZiAobV9yZXBsaWNh
TGF5ZXIgJiYgaXNSZXBsaWNhdGVkUm9vdENsb25lKGl0LT5maXJzdCkpCi0gICAgICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgICAgICBDQUxheWVyICpjdXJyTGF5ZXIgPSBpdC0+c2Vjb25k
LmdldCgpOwotICAgICAgICAgICAgW2N1cnJMYXllciBzZXRPcGFjaXR5Om1fb3BhY2l0eV07Ci0g
ICAgICAgIH0KLSAgICB9Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6dXBkYXRlT3BhY2l0
eU9uTGF5ZXIoKQotewotI2lmICFIQVZFX01PREVSTl9RVUFSVFpDT1JFCi0gICAgLy8gRGlzdHJp
YnV0ZSBvcGFjaXR5IGVpdGhlciB0byBvdXIgb3duIGxheWVyIG9yIHRvIG91ciBjaGlsZHJlbi4g
V2UgcGFzcyBpbiB0aGUgCi0gICAgLy8gY29udHJpYnV0aW9uIGZyb20gb3VyIHBhcmVudChzKS4K
LSAgICBkaXN0cmlidXRlT3BhY2l0eShwYXJlbnQoKSA/IHBhcmVudCgpLT5hY2N1bXVsYXRlZE9w
YWNpdHkoKSA6IDEpOwotI2Vsc2UKLSAgICBbcHJpbWFyeUxheWVyKCkgc2V0T3BhY2l0eTptX29w
YWNpdHldOwotCi0gICAgaWYgKExheWVyTWFwKiBsYXllckNsb25lTWFwID0gcHJpbWFyeUxheWVy
Q2xvbmVzKCkpIHsKLSAgICAgICAgTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGxheWVy
Q2xvbmVNYXAtPmVuZCgpOwotICAgICAgICBmb3IgKExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBp
dCA9IGxheWVyQ2xvbmVNYXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICAg
ICAgaWYgKG1fcmVwbGljYUxheWVyICYmIGlzUmVwbGljYXRlZFJvb3RDbG9uZShpdC0+Zmlyc3Qp
KQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICBDQUxheWVyICpjdXJy
TGF5ZXIgPSBpdC0+c2Vjb25kLmdldCgpOwotICAgICAgICAgICAgW2N1cnJMYXllciBzZXRPcGFj
aXR5Om1fb3BhY2l0eV07Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgfQotI2VuZGlmCi19Ci0K
LXZvaWQgR3JhcGhpY3NMYXllck1hYzo6bm90ZVN1YmxheWVyc0NoYW5nZWQoKQotewotICAgIG5v
dGVMYXllclByb3BlcnR5Q2hhbmdlZChDaGlsZHJlbkNoYW5nZWQpOwotICAgIHByb3BhZ2F0ZUxh
eWVyQ2hhbmdlVG9SZXBsaWNhcygpOwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6Om5vdGVM
YXllclByb3BlcnR5Q2hhbmdlZChMYXllckNoYW5nZUZsYWdzIGZsYWdzKQotewotICAgIGlmICgh
bV91bmNvbW1pdHRlZENoYW5nZXMgJiYgbV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT5ub3Rp
ZnlTeW5jUmVxdWlyZWQodGhpcyk7Ci0KLSAgICBtX3VuY29tbWl0dGVkQ2hhbmdlcyB8PSBmbGFn
czsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gVVNFKEFDQ0VMRVJB
VEVEX0NPTVBPU0lUSU5HKQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2Vi
TGF5ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJM
YXllci5oCShyZXZpc2lvbiA3MzE1MCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L1dlYkxheWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDE0ICszNCw2IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICBjbGFzcyBHcmFwaGljc0xheWVyOwogfQogCi0vLyBDYXRlZ29yeSBpbXBs
ZW1lbnRlZCBieSBXZWJMYXllciBhbmQgV2ViVGlsZWRMYXllci4KLUBpbnRlcmZhY2UgQ0FMYXll
cihXZWJMYXllckFkZGl0aW9ucykKLQotLSAodm9pZClzZXRMYXllck93bmVyOihXZWJDb3JlOjpH
cmFwaGljc0xheWVyKilsYXllcjsKLS0gKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKWxheWVyT3du
ZXI7Ci0KLUBlbmQKLQogI2lmIGRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkKIEBpbnRlcmZh
Y2UgQ0FMYXllcihXZWJMYXllckludGVybmFsKQogLSAoQ0dBZmZpbmVUcmFuc2Zvcm0pY29udGVu
dHNUcmFuc2Zvcm07CkBAIC01MSw3ICs0Myw2IEBAIEBpbnRlcmZhY2UgQ0FMYXllcihXZWJMYXll
ckludGVybmFsKQogCiBAaW50ZXJmYWNlIFdlYkxheWVyIDogQ0FMYXllciAKIHsKLSAgICBXZWJD
b3JlOjpHcmFwaGljc0xheWVyKiBtX2xheWVyT3duZXI7CiB9CiBAZW5kCiAKSW5kZXg6IFdlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLm1tCShyZXZpc2lvbiA3MzE1MCkKKysr
IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0zMCw3ICszMCw4IEBACiAjaW1wb3J0ICJXZWJMYXllci5oIgogCiAjaW1wb3J0ICJHcmFw
aGljc0NvbnRleHQuaCIKLSNpbXBvcnQgIkdyYXBoaWNzTGF5ZXIuaCIKKyNpbXBvcnQgIkdyYXBo
aWNzTGF5ZXJDQS5oIgorI2ltcG9ydCAiUGxhdGZvcm1DQUxheWVyLmgiCiAjaW1wb3J0IDxvYmpj
L29iamMtcnVudGltZS5oPgogI2ltcG9ydCA8UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+CiAjaW1w
b3J0IDx3dGYvVW51c2VkUGFyYW0uaD4KQEAgLTE0Niw1OCArMTQ3LDM5IEBAIC0gKGlkPENBQWN0
aW9uPilhY3Rpb25Gb3JLZXk6KE5TU3RyaW5nICoKICAgICByZXR1cm4gbmlsOwogfQogCi0vLyBJ
bXBsZW1lbnQgdGhpcyBzbyBwcmVzZW50YXRpb25MYXllciBjYW4gZ2V0IG91ciBjdXN0b20gYXR0
cmlidXRlcwotLSAoaWQpaW5pdFdpdGhMYXllcjooaWQpbGF5ZXIKLXsKLSAgICBpZiAoKHNlbGYg
PSBbc3VwZXIgaW5pdFdpdGhMYXllcjpsYXllcl0pKQotICAgICAgICBtX2xheWVyT3duZXIgPSBb
KFdlYkxheWVyKilsYXllciBsYXllck93bmVyXTsKLQotICAgIHJldHVybiBzZWxmOwotfQotCiAt
ICh2b2lkKXNldE5lZWRzRGlzcGxheQogewotICAgIGlmIChtX2xheWVyT3duZXIgJiYgbV9sYXll
ck93bmVyLT5jbGllbnQoKSAmJiBtX2xheWVyT3duZXItPmRyYXdzQ29udGVudCgpKQorICAgIFBs
YXRmb3JtQ0FMYXllciogbGF5ZXIgPSBQbGF0Zm9ybUNBTGF5ZXI6OnBsYXRmb3JtQ0FMYXllcihz
ZWxmKTsKKyAgICBpZiAobGF5ZXIgJiYgbGF5ZXItPm93bmVyKCkgJiYgbGF5ZXItPm93bmVyKCkt
PmNsaWVudCgpICYmIGxheWVyLT5vd25lcigpLT5kcmF3c0NvbnRlbnQoKSkKICAgICAgICAgW3N1
cGVyIHNldE5lZWRzRGlzcGxheV07CiB9CiAKIC0gKHZvaWQpc2V0TmVlZHNEaXNwbGF5SW5SZWN0
OihDR1JlY3QpZGlydHlSZWN0CiB7Ci0gICAgc2V0TGF5ZXJOZWVkc0Rpc3BsYXlJblJlY3Qoc2Vs
ZiwgbV9sYXllck93bmVyLCBkaXJ0eVJlY3QpOworICAgIFBsYXRmb3JtQ0FMYXllciogbGF5ZXIg
PSBQbGF0Zm9ybUNBTGF5ZXI6OnBsYXRmb3JtQ0FMYXllcihzZWxmKTsKKyAgICBpZiAobGF5ZXIp
CisgICAgICAgIHNldExheWVyTmVlZHNEaXNwbGF5SW5SZWN0KHNlbGYsIGxheWVyLT5vd25lcigp
LCBkaXJ0eVJlY3QpOwogfQogCiAtICh2b2lkKWRpc3BsYXkKIHsKICAgICBbc3VwZXIgZGlzcGxh
eV07Ci0gICAgaWYgKG1fbGF5ZXJPd25lcikKLSAgICAgICAgbV9sYXllck93bmVyLT5kaWREaXNw
bGF5KHNlbGYpOworICAgIFBsYXRmb3JtQ0FMYXllciogbGF5ZXIgPSBQbGF0Zm9ybUNBTGF5ZXI6
OnBsYXRmb3JtQ0FMYXllcihzZWxmKTsKKyAgICBpZiAobGF5ZXIgJiYgbGF5ZXItPm93bmVyKCkp
CisgICAgICAgIGxheWVyLT5vd25lcigpLT5kaWREaXNwbGF5KHNlbGYpOwogfQogCiAtICh2b2lk
KWRyYXdJbkNvbnRleHQ6KENHQ29udGV4dFJlZiljb250ZXh0CiB7Ci0gICAgZHJhd0xheWVyQ29u
dGVudHMoY29udGV4dCwgc2VsZiwgbV9sYXllck93bmVyKTsKKyAgICBQbGF0Zm9ybUNBTGF5ZXIq
IGxheWVyID0gUGxhdGZvcm1DQUxheWVyOjpwbGF0Zm9ybUNBTGF5ZXIoc2VsZik7CisgICAgaWYg
KGxheWVyKQorICAgICAgICBkcmF3TGF5ZXJDb250ZW50cyhjb250ZXh0LCBzZWxmLCBsYXllci0+
b3duZXIoKSk7CiB9CiAKIEBlbmQgLy8gaW1wbGVtZW50YXRpb24gV2ViTGF5ZXIKIAogI3ByYWdt
YSBtYXJrIC0KIAotQGltcGxlbWVudGF0aW9uIFdlYkxheWVyKFdlYkxheWVyQWRkaXRpb25zKQot
Ci0tICh2b2lkKXNldExheWVyT3duZXI6KEdyYXBoaWNzTGF5ZXIqKWFMYXllcgotewotICAgIG1f
bGF5ZXJPd25lciA9IGFMYXllcjsKLX0KLQotLSAoR3JhcGhpY3NMYXllciopbGF5ZXJPd25lcgot
ewotICAgIHJldHVybiBtX2xheWVyT3duZXI7Ci19Ci0KLUBlbmQKLQotI3ByYWdtYSBtYXJrIC0K
LQogI2lmbmRlZiBOREVCVUcKIAogQGltcGxlbWVudGF0aW9uIENBTGF5ZXIoRXh0ZW5kZWREZXNj
cmlwdGlvbikKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYlRpbGVkTGF5
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJUaWxl
ZExheWVyLmgJKHJldmlzaW9uIDczMTUwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvV2ViVGlsZWRMYXllci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw2IEBACiAKIEBp
bnRlcmZhY2UgV2ViVGlsZWRMYXllciA6IENBVGlsZWRMYXllciAKIHsKLSAgICBXZWJDb3JlOjpH
cmFwaGljc0xheWVyKiBtX2xheWVyT3duZXI7CiB9CiAKIC8vIGltcGxlbWVudHMgV2ViTGF5ZXJB
ZGRpdGlvbnMKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYlRpbGVkTGF5
ZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViVGls
ZWRMYXllci5tbQkocmV2aXNpb24gNzMxNTApCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9XZWJUaWxlZExheWVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw4IEBACiAj
aW1wb3J0ICJXZWJUaWxlZExheWVyLmgiCiAKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dC5oIgot
I2ltcG9ydCAiR3JhcGhpY3NMYXllci5oIgorI2ltcG9ydCAiR3JhcGhpY3NMYXllckNBLmgiCisj
aW1wb3J0ICJQbGF0Zm9ybUNBTGF5ZXIuaCIKICNpbXBvcnQgPHd0Zi9VbnVzZWRQYXJhbS5oPgog
CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTU2LDU0ICs1NywzNSBAQCAtIChpZDxDQUFj
dGlvbj4pYWN0aW9uRm9yS2V5OihOU1N0cmluZyAqCiAgICAgcmV0dXJuIG5pbDsKIH0KIAotLy8g
SW1wbGVtZW50IHRoaXMgc28gcHJlc2VudGF0aW9uTGF5ZXIgY2FuIGdldCBvdXIgY3VzdG9tIGF0
dHJpYnV0ZXMKLS0gKGlkKWluaXRXaXRoTGF5ZXI6KGlkKWxheWVyCi17Ci0gICAgaWYgKChzZWxm
ID0gW3N1cGVyIGluaXRXaXRoTGF5ZXI6bGF5ZXJdKSkKLSAgICAgICAgbV9sYXllck93bmVyID0g
WyhXZWJMYXllciopbGF5ZXIgbGF5ZXJPd25lcl07Ci0KLSAgICByZXR1cm4gc2VsZjsKLX0KLQog
LSAodm9pZClzZXROZWVkc0Rpc3BsYXkKIHsKLSAgICBpZiAobV9sYXllck93bmVyICYmIG1fbGF5
ZXJPd25lci0+Y2xpZW50KCkgJiYgbV9sYXllck93bmVyLT5kcmF3c0NvbnRlbnQoKSkKKyAgICBQ
bGF0Zm9ybUNBTGF5ZXIqIGxheWVyID0gUGxhdGZvcm1DQUxheWVyOjpwbGF0Zm9ybUNBTGF5ZXIo
c2VsZik7CisgICAgaWYgKGxheWVyICYmIGxheWVyLT5vd25lcigpICYmIGxheWVyLT5vd25lcigp
LT5jbGllbnQoKSAmJiBsYXllci0+b3duZXIoKS0+ZHJhd3NDb250ZW50KCkpCiAgICAgICAgIFtz
dXBlciBzZXROZWVkc0Rpc3BsYXldOwogfQogCiAtICh2b2lkKXNldE5lZWRzRGlzcGxheUluUmVj
dDooQ0dSZWN0KWRpcnR5UmVjdAogewotICAgIHNldExheWVyTmVlZHNEaXNwbGF5SW5SZWN0KHNl
bGYsIG1fbGF5ZXJPd25lciwgZGlydHlSZWN0KTsKKyAgICBQbGF0Zm9ybUNBTGF5ZXIqIGxheWVy
ID0gUGxhdGZvcm1DQUxheWVyOjpwbGF0Zm9ybUNBTGF5ZXIoc2VsZik7CisgICAgaWYgKGxheWVy
KQorICAgICAgICBzZXRMYXllck5lZWRzRGlzcGxheUluUmVjdChzZWxmLCBsYXllci0+b3duZXIo
KSwgZGlydHlSZWN0KTsKIH0KIAogLSAodm9pZClkaXNwbGF5CiB7CiAgICAgW3N1cGVyIGRpc3Bs
YXldOwotICAgIGlmIChtX2xheWVyT3duZXIpCi0gICAgICAgIG1fbGF5ZXJPd25lci0+ZGlkRGlz
cGxheShzZWxmKTsKKyAgICBQbGF0Zm9ybUNBTGF5ZXIqIGxheWVyID0gUGxhdGZvcm1DQUxheWVy
OjpwbGF0Zm9ybUNBTGF5ZXIoc2VsZik7CisgICAgaWYgKGxheWVyICYmIGxheWVyLT5vd25lcigp
KQorICAgICAgICBsYXllci0+b3duZXIoKS0+ZGlkRGlzcGxheShzZWxmKTsKIH0KIAogLSAodm9p
ZClkcmF3SW5Db250ZXh0OihDR0NvbnRleHRSZWYpY29udGV4dAogewotICAgIGRyYXdMYXllckNv
bnRlbnRzKGNvbnRleHQsIHNlbGYsIG1fbGF5ZXJPd25lcik7CisgICAgUGxhdGZvcm1DQUxheWVy
KiBsYXllciA9IFBsYXRmb3JtQ0FMYXllcjo6cGxhdGZvcm1DQUxheWVyKHNlbGYpOworICAgIGlm
IChsYXllcikKKyAgICAgICAgZHJhd0xheWVyQ29udGVudHMoY29udGV4dCwgc2VsZiwgbGF5ZXIt
Pm93bmVyKCkpOwogfQogCiBAZW5kIC8vIGltcGxlbWVudGF0aW9uIFdlYlRpbGVkTGF5ZXIKIAot
I3ByYWdtYSBtYXJrIC0KLQotQGltcGxlbWVudGF0aW9uIFdlYlRpbGVkTGF5ZXIoTGF5ZXJNYWNB
ZGRpdGlvbnMpCi0KLS0gKHZvaWQpc2V0TGF5ZXJPd25lcjooR3JhcGhpY3NMYXllciopYUxheWVy
Ci17Ci0gICAgbV9sYXllck93bmVyID0gYUxheWVyOwotfQotCi0tIChHcmFwaGljc0xheWVyKils
YXllck93bmVyCi17Ci0gICAgcmV0dXJuIG1fbGF5ZXJPd25lcjsKLX0KLQotQGVuZAotCiAjZW5k
aWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpJbmRleDogV2ViS2l0L21hYy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDczMTUw
KQorKysgV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBA
QAorMjAxMC0xMi0wMSAgQ2hyaXMgTWFycmluICA8Y21hcnJpbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2hhcmUgY29kZSBiZXR3
ZWVuIE1hYyAoQ0EpIGFuZCBXaW5kb3dzIChDQUNGKSBHcmFwaGljc0xheWVyIGltcGxlbWVudGF0
aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDkz
ODgKKworICAgICAgICBHb3QgcmlkIG9mIEdyYXBoaWNzTGF5ZXI6Om5hdGl2ZUxheWVyKCkgY2Fs
bCwgcmVwbGFjaW5nIGl0IHdpdGggCisgICAgICAgIEdyYXBoaWNzTGF5ZXI6OnBsYXRmb3JtTGF5
ZXIoKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbToKKyAg
ICAgICAgKFdlYkNocm9tZUNsaWVudDo6YXR0YWNoUm9vdEdyYXBoaWNzTGF5ZXIpOgorCiAyMDEw
LTEyLTAyICBKb3NlcGggUGVjb3Jhcm8gIDxqb2VwZWNrQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgpJbmRleDogV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQubW0JKHJldmlzaW9uIDczMTUwKQorKysgV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTc4MSw3
ICs3ODEsNyBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6YXR0YWNoUm9vdEdyYXBoaWNzCiAKICAg
ICBXZWJIVE1MVmlldyAqd2ViSFRNTFZpZXcgPSAoV2ViSFRNTFZpZXcgKilkb2N1bWVudFZpZXc7
CiAgICAgaWYgKGdyYXBoaWNzTGF5ZXIpCi0gICAgICAgIFt3ZWJIVE1MVmlldyBhdHRhY2hSb290
TGF5ZXI6Z3JhcGhpY3NMYXllci0+bmF0aXZlTGF5ZXIoKV07CisgICAgICAgIFt3ZWJIVE1MVmll
dyBhdHRhY2hSb290TGF5ZXI6Z3JhcGhpY3NMYXllci0+cGxhdGZvcm1MYXllcigpXTsKICAgICBl
bHNlCiAgICAgICAgIFt3ZWJIVE1MVmlldyBkZXRhY2hSb290TGF5ZXJdOwogICAgIEVORF9CTE9D
S19PQkpDX0VYQ0VQVElPTlM7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75422</attachid>
            <date>2010-12-02 15:43:03 -0800</date>
            <delta_ts>2010-12-03 11:57:15 -0800</delta_ts>
            <desc>Patch fixing issues from the review and add 2 files</desc>
            <filename>bug-49388-20101202154302.patch</filename>
            <type>text/plain</type>
            <size>292083</size>
            <attacher name="Chris Marrin">cmarrin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MzIwNykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDMgQEAKKzIwMTAtMTItMDIgIENocmlzIE1hcnJpbiAgPGNtYXJyaW5AYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNo
YXJlIGNvZGUgYmV0d2VlbiBNYWMgKENBKSBhbmQgV2luZG93cyAoQ0FDRikgR3JhcGhpY3NMYXll
ciBpbXBsZW1lbnRhdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQ5Mzg4CisKKyAgICAgICAgUmVwbGFjZWQgR3JhcGhpY3NMYXllck1hYyB3aXRo
IEdyYXBoaWNzTGF5ZXJDQS4gR3JhcGhpY3NMYXllckNBIGlzIGVzc2VudGlhbGx5IAorICAgICAg
ICBpZGVudGljYWwgdG8gR3JhcGhpY3NMYXllck1hYywgYnV0IHJlcGxhY2VzIGFsbCB0aGUgQ29y
ZUFuaW1hdGlvbiBzcGVjaWZpYyBjYWxscyAKKyAgICAgICAgd2l0aCBjYWxscyB0byBQbGF0Zm9y
bUNBTGF5ZXIgYW5kIFBsYXRmb3JtQ0FBbmltYXRpb24uIFRoaXMgbWFrZXMgR3JhcGhpY3NMYXll
ckNBIAorICAgICAgICBwbGF0Zm9ybSBuZXV0cmFsIGFzIGxvbmcgYXMgaW1wbGVtZW50YXRpb25z
IG9mIHRob3NlIHR3byBjbGFzc2VzIGFyZSBhdmFpbGFibGUuIAorICAgICAgICBBZGRlZCBpbXBs
ZW1lbnRhdGlvbnMgaW4gUGxhdGZvcm1DQUxheWVyTWFjIGFuZCBQbGF0Zm9ybUNBQW5pbWF0aW9u
TWFjLiBBbHNvIGdvdCAKKyAgICAgICAgcmlkIG9mIEdyYXBoaWNzTGF5ZXI6Om5hdGl2ZUxheWVy
KCkgYW5kIHJlcGxhY2VkIGl0IHdpdGggR3JhcGhpY3NMYXllcjo6cGxhdGZvcm1MYXllcigpIAor
ICAgICAgICB0byBhdm9pZCBjb25mdXNpb24gc2luY2UgYm90aCBuYW1lcyB3ZXJlIHVzZWQgdG8g
cmVmZXIgdG8gdGhlIHNhbWUgdGhpbmcuIAorCisgICAgICAgIFRoaXMgcGF0Y2ggaXMgb25seSBm
b3IgTWFjLiBXaW5kb3dzIGltcGxlbWVudGF0aW9uIGhhcyBub3QgY2hhbmdlZC4KKworICAgICAg
ICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2E6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJD
QS5jcHA6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5
ZXJDQS5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNB
QW5pbWF0aW9uLmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRm
b3JtQ0FMYXllci5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWM6
IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9QbGF0Zm9ybUNBQW5p
bWF0aW9uTWFjLm1tOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMv
UGxhdGZvcm1DQUxheWVyTWFjLm1tOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0xheWVyTWFjLmg6IFJlbW92ZWQuCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzTGF5ZXJNYWMubW06IFJlbW92ZWQuCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL21hYy9XZWJUaWxlZExheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L1dlYlRpbGVkTGF5ZXIubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhp
Y3NMYXllclF0LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0xh
eWVyUXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NMYXllckNB
Q0YuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0xheWVyQ0FD
Ri5oOgorCiAyMDEwLTEyLTAyICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDczMTUwKQorKysgV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEw
MTIsNiArMTAxMiw4IEBACiAJCTQ5NEJENzk1MEY1NUM4RUUwMDc0NzgyOCAvKiBXZWJLaXRQb2lu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDk0QkQ3
OTMwRjU1QzhFRTAwNzQ3ODI4IC8qIFdlYktpdFBvaW50LmggKi87IH07CiAJCTQ5NEJENzlEMEY1
NUM5NEMwMDc0NzgyOCAvKiBKU1dlYktpdFBvaW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5NEJENzlCMEY1NUM5NEMwMDc0NzgyOCAvKiBKU1dl
YktpdFBvaW50LmNwcCAqLzsgfTsKIAkJNDk0QkQ3OUUwRjU1Qzk0QzAwNzQ3ODI4IC8qIEpTV2Vi
S2l0UG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ5NEJENzlDMEY1NUM5NEMwMDc0NzgyOCAvKiBKU1dlYktpdFBvaW50LmggKi87IH07CisJCTQ5
NTg3ODIxMTJBNTdEREYwMDcyMzhBQyAvKiBQbGF0Zm9ybUNBQW5pbWF0aW9uTWFjLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDk1ODc4MUYxMkE1N0RE
RjAwNzIzOEFDIC8qIFBsYXRmb3JtQ0FBbmltYXRpb25NYWMubW0gKi87IH07CisJCTQ5NTg3ODIy
MTJBNTdEREYwMDcyMzhBQyAvKiBQbGF0Zm9ybUNBTGF5ZXJNYWMubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTU4NzgyMDEyQTU3RERGMDA3MjM4QUMg
LyogUGxhdGZvcm1DQUxheWVyTWFjLm1tICovOyB9OwogCQk0OTgzOTEzRjBGMUU3Njc1MDBDMjM3
ODIgLyogSlNXZWJLaXRDU1NNYXRyaXguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDk4MzkxM0QwRjFFNzY3NTAwQzIzNzgyIC8qIEpTV2ViS2l0Q1NT
TWF0cml4LmNwcCAqLzsgfTsKIAkJNDk4MzkxNDAwRjFFNzY3NTAwQzIzNzgyIC8qIEpTV2ViS2l0
Q1NTTWF0cml4LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0OTgzOTEzRTBGMUU3Njc1MDBDMjM3ODIgLyogSlNXZWJLaXRDU1NNYXRyaXguaCAqLzsgfTsK
IAkJNDk4MzkxNTAwRjFFNzZCNDAwQzIzNzgyIC8qIERPTVdlYktpdENTU01hdHJpeC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDk4MzkxNEQwRjFFNzZC
NDAwQzIzNzgyIC8qIERPTVdlYktpdENTU01hdHJpeC5oICovOyB9OwpAQCAtMTAzOCw4ICsxMDQw
LDEwIEBACiAJCTQ5ODc3MEYyMTI0MkM1MzUwMDIyMjZCQSAvKiBUaWxpbmdEYXRhLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5ODc3MEQ5MTI0MkM1
MzUwMDIyMjZCQSAvKiBUaWxpbmdEYXRhLmNwcCAqLzsgfTsKIAkJNDk4NzcwRjMxMjQyQzUzNTAw
MjIyNkJBIC8qIFRpbGluZ0RhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ5ODc3MERBMTI0MkM1MzUwMDIyMjZCQSAvKiBUaWxpbmdEYXRhLmggKi87
IH07CiAJCTQ5ODc3MTUzMTI0M0Y5RkEwMDIyMjZCQSAvKiBEcmF3aW5nQnVmZmVyTWFjLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDk4NzcxNTIxMjQz
RjlGQTAwMjIyNkJBIC8qIERyYXdpbmdCdWZmZXJNYWMubW0gKi87IH07Ci0JCTQ5OUIzQzU5MTI4
QzY0MUUwMEU3MjZDMiAvKiBHcmFwaGljc0xheWVyTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTlCM0M1NzEyOEM2NDFFMDBFNzI2QzIgLyogR3Jh
cGhpY3NMYXllck1hYy5oICovOyB9OwotCQk0OTlCM0M1QTEyOEM2NDFFMDBFNzI2QzIgLyogR3Jh
cGhpY3NMYXllck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ5OUIzQzU4MTI4QzY0MUUwMEU3MjZDMiAvKiBHcmFwaGljc0xheWVyTWFjLm1tICov
OyB9OworCQk0OTlCM0VDNTEyOENDQzQ3MDBFNzI2QzIgLyogUGxhdGZvcm1DQUxheWVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTlCM0VDMzEyOEND
QzQ3MDBFNzI2QzIgLyogUGxhdGZvcm1DQUxheWVyLmggKi87IH07CisJCTQ5OUIzRUQ2MTI4Q0Qz
MTQwMEU3MjZDMiAvKiBHcmFwaGljc0xheWVyQ0EuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDk5QjNFRDQxMjhDRDMxNDAwRTcyNkMyIC8qIEdyYXBo
aWNzTGF5ZXJDQS5jcHAgKi87IH07CisJCTQ5OUIzRUQ3MTI4Q0QzMTQwMEU3MjZDMiAvKiBHcmFw
aGljc0xheWVyQ0EuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ5OUIzRUQ1MTI4Q0QzMTQwMEU3MjZDMiAvKiBHcmFwaGljc0xheWVyQ0EuaCAqLzsgfTsK
KwkJNDk5QjNFREQxMjhEQjUwMjAwRTcyNkMyIC8qIFBsYXRmb3JtQ0FBbmltYXRpb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5OUIzRURDMTI4REI1
MDEwMEU3MjZDMiAvKiBQbGF0Zm9ybUNBQW5pbWF0aW9uLmggKi87IH07CiAJCTQ5QjY5RTVFMTI1
NEZFRUQwMDdENTdFQiAvKiBMb29wQmxpbm5DbGFzc2lmaWVyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5QjY5RTU1MTI1NEZFRUQwMDdENTdFQiAv
KiBMb29wQmxpbm5DbGFzc2lmaWVyLmNwcCAqLzsgfTsKIAkJNDlCNjlFNUYxMjU0RkVFRDAwN0Q1
N0VCIC8qIExvb3BCbGlubkNsYXNzaWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ5QjY5RTU2MTI1NEZFRUQwMDdENTdFQiAvKiBMb29wQmxpbm5D
bGFzc2lmaWVyLmggKi87IH07CiAJCTQ5QjY5RTYwMTI1NEZFRUQwMDdENTdFQiAvKiBMb29wQmxp
bm5Db25zdGFudHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ5QjY5RTU3MTI1NEZFRUQwMDdENTdFQiAvKiBMb29wQmxpbm5Db25zdGFudHMuaCAqLzsg
fTsKQEAgLTcxMzIsNiArNzEzNiw4IEBACiAJCTQ5NEJENzk0MEY1NUM4RUUwMDc0NzgyOCAvKiBX
ZWJLaXRQb2ludC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViS2l0UG9pbnQuaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OTRCRDc5QjBGNTVDOTRDMDA3NDc4MjggLyog
SlNXZWJLaXRQb2ludC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U1dlYktpdFBvaW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDk0QkQ3OUMw
RjU1Qzk0QzAwNzQ3ODI4IC8qIEpTV2ViS2l0UG9pbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNXZWJLaXRQb2ludC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk0OTU4NzgxRjEyQTU3RERGMDA3MjM4QUMgLyogUGxhdGZvcm1DQUFuaW1hdGlvbk1hYy5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFBsYXRmb3JtQ0FBbmltYXRp
b25NYWMubW07IHBhdGggPSBjYS9tYWMvUGxhdGZvcm1DQUFuaW1hdGlvbk1hYy5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDk1ODc4MjAxMkE1N0RERjAwNzIzOEFDIC8qIFBsYXRm
b3JtQ0FMYXllck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9
IFBsYXRmb3JtQ0FMYXllck1hYy5tbTsgcGF0aCA9IGNhL21hYy9QbGF0Zm9ybUNBTGF5ZXJNYWMu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5ODM5MTNEMEYxRTc2NzUwMEMyMzc4
MiAvKiBKU1dlYktpdENTU01hdHJpeC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU1dlYktpdENTU01hdHJpeC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQ5ODM5MTNFMEYxRTc2NzUwMEMyMzc4MiAvKiBKU1dlYktpdENTU01hdHJpeC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dlYktpdENTU01hdHJpeC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0OTgzOTE0RDBGMUU3NkI0MDBDMjM3ODIgLyogRE9NV2Vi
S2l0Q1NTTWF0cml4LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTVdlYktp
dENTU01hdHJpeC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzE1OSw4ICs3MTY1
LDEwIEBACiAJCTQ5ODc3MEQ5MTI0MkM1MzUwMDIyMjZCQSAvKiBUaWxpbmdEYXRhLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFRpbGluZ0RhdGEuY3BwOyBwYXRoID0g
Z3B1L1RpbGluZ0RhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OTg3NzBE
QTEyNDJDNTM1MDAyMjI2QkEgLyogVGlsaW5nRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBUaWxpbmdEYXRhLmg7IHBhdGggPSBncHUvVGlsaW5nRGF0YS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0OTg3NzE1MjEyNDNGOUZBMDAyMjI2QkEgLyogRHJhd2lu
Z0J1ZmZlck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IERy
YXdpbmdCdWZmZXJNYWMubW07IHBhdGggPSBncHUvbWFjL0RyYXdpbmdCdWZmZXJNYWMubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ5OUIzQzU3MTI4QzY0MUUwMEU3MjZDMiAvKiBH
cmFwaGljc0xheWVyTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBo
aWNzTGF5ZXJNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDk5QjNDNTgxMjhD
NjQxRTAwRTcyNkMyIC8qIEdyYXBoaWNzTGF5ZXJNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBHcmFwaGljc0xheWVyTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk0OTlCM0VDMzEyOENDQzQ3MDBFNzI2QzIgLyogUGxhdGZvcm1DQUxheWVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFBsYXRmb3JtQ0FMYXllci5oOyBw
YXRoID0gY2EvUGxhdGZvcm1DQUxheWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTQ5OUIzRUQ0MTI4Q0QzMTQwMEU3MjZDMiAvKiBHcmFwaGljc0xheWVyQ0EuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gR3JhcGhpY3NMYXllckNBLmNwcDsgcGF0aCA9
IGNhL0dyYXBoaWNzTGF5ZXJDQS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ5
OUIzRUQ1MTI4Q0QzMTQwMEU3MjZDMiAvKiBHcmFwaGljc0xheWVyQ0EuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gR3JhcGhpY3NMYXllckNBLmg7IHBhdGggPSBjYS9HcmFwaGlj
c0xheWVyQ0EuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDk5QjNFREMxMjhEQjUw
MTAwRTcyNkMyIC8qIFBsYXRmb3JtQ0FBbmltYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gUGxhdGZvcm1DQUFuaW1hdGlvbi5oOyBwYXRoID0gY2EvUGxhdGZvcm1DQUFu
aW1hdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OUI2OUU1NTEyNTRGRUVE
MDA3RDU3RUIgLyogTG9vcEJsaW5uQ2xhc3NpZmllci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBMb29wQmxpbm5DbGFzc2lmaWVyLmNwcDsgcGF0aCA9IGdwdS9Mb29w
Qmxpbm5DbGFzc2lmaWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDlCNjlF
NTYxMjU0RkVFRDAwN0Q1N0VCIC8qIExvb3BCbGlubkNsYXNzaWZpZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gTG9vcEJsaW5uQ2xhc3NpZmllci5oOyBwYXRoID0gZ3B1L0xv
b3BCbGlubkNsYXNzaWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDlCNjlF
NTcxMjU0RkVFRDAwN0Q1N0VCIC8qIExvb3BCbGlubkNvbnN0YW50cy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBMb29wQmxpbm5Db25zdGFudHMuaDsgcGF0aCA9IGdwdS9Mb29w
Qmxpbm5Db25zdGFudHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEyNzEwLDYg
KzEyNzE4LDE1IEBACiAJCQluYW1lID0gY2FudmFzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsKIAkJfTsKKwkJNDk1ODc4MUUxMkE1N0RCQzAwNzIzOEFDIC8qIG1hYyAqLyA9IHsKKwkJCWlz
YSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJNDk1ODc4MUYxMkE1N0RERjAwNzIz
OEFDIC8qIFBsYXRmb3JtQ0FBbmltYXRpb25NYWMubW0gKi8sCisJCQkJNDk1ODc4MjAxMkE1N0RE
RjAwNzIzOEFDIC8qIFBsYXRmb3JtQ0FMYXllck1hYy5tbSAqLywKKwkJCSk7CisJCQluYW1lID0g
bWFjOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJNDk4NzcwQzExMjQyQzUw
RDAwMjIyNkJBIC8qIGdwdSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4g
PSAoCkBAIC0xMjc1MSw2ICsxMjc2OCwxOCBAQAogCQkJbmFtZSA9IG1hYzsKIAkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCTQ5OUIzRUMwMTI4Q0NDMTgwMEU3MjZDMiAvKiBjYSAq
LyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJNDk1ODc4MUUx
MkE1N0RCQzAwNzIzOEFDIC8qIG1hYyAqLywKKwkJCQk0OTlCM0VEQzEyOERCNTAxMDBFNzI2QzIg
LyogUGxhdGZvcm1DQUFuaW1hdGlvbi5oICovLAorCQkJCTQ5OUIzRUQ0MTI4Q0QzMTQwMEU3MjZD
MiAvKiBHcmFwaGljc0xheWVyQ0EuY3BwICovLAorCQkJCTQ5OUIzRUQ1MTI4Q0QzMTQwMEU3MjZD
MiAvKiBHcmFwaGljc0xheWVyQ0EuaCAqLywKKwkJCQk0OTlCM0VDMzEyOENDQzQ3MDBFNzI2QzIg
LyogUGxhdGZvcm1DQUxheWVyLmggKi8sCisJCQkpOworCQkJbmFtZSA9IGNhOworCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJNDlFOTExQjIwRUY4NkQyNzAwOUQwQ0FGIC8qIHRy
YW5zZm9ybXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAt
MTY2ODUsOCArMTY3MTQsNiBAQAogCQkJCUIyQUZGQzdCMEQwMEE1QzEwMDMwMDc0RCAvKiBHbHlw
aFBhZ2VUcmVlTm9kZU1hYy5jcHAgKi8sCiAJCQkJNDlGRkJGMUMxMUM4NTUwRTAwNkE3MTE4IC8q
IEdyYXBoaWNzQ29udGV4dDNETWFjLm1tICovLAogCQkJCUIyNzdCNDAzMEIyMkYzN0MwMDA0QkVD
NiAvKiBHcmFwaGljc0NvbnRleHRNYWMubW0gKi8sCi0JCQkJNDk5QjNDNTcxMjhDNjQxRTAwRTcy
NkMyIC8qIEdyYXBoaWNzTGF5ZXJNYWMuaCAqLywKLQkJCQk0OTlCM0M1ODEyOEM2NDFFMDBFNzI2
QzIgLyogR3JhcGhpY3NMYXllck1hYy5tbSAqLywKIAkJCQlCMjc1MzU4RDBCMDUzQTY2MDAyQ0U2
NEYgLyogSWNvbk1hYy5tbSAqLywKIAkJCQlCMjc1MzU0RTBCMDUzODE0MDAyQ0U2NEYgLyogSW1h
Z2VNYWMubW0gKi8sCiAJCQkJQjI3NTM1NEYwQjA1MzgxNDAwMkNFNjRGIC8qIEludFBvaW50TWFj
Lm1tICovLApAQCAtMTY3MTIsNiArMTY3MzksNyBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQlj
aGlsZHJlbiA9ICgKIAkJCQlCMjc1MzUyOTBCMDUzODE0MDAyQ0U2NEYgLyogY2cgKi8sCisJCQkJ
NDk5QjNFQzAxMjhDQ0MxODAwRTcyNkMyIC8qIGNhICovLAogCQkJCUI1MzIwRDY4MTIyQTI0RTkw
MDJEMTQ0MCAvKiBjb2NvYSAqLywKIAkJCQlBNzVFOEI3RjBFMURFMkIwMDA3RjI0ODEgLyogZmls
dGVycyAqLywKIAkJCQk0OTg3NzBDMTEyNDJDNTBEMDAyMjI2QkEgLyogZ3B1ICovLApAQCAtMTk3
NzEsNyArMTk3OTksNiBAQAogCQkJCUE4OEZFMzM0MEU1RUVFODcwMDhEOEMwRiAvKiBHcmFwaGlj
c0NvbnRleHRQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU4MEIwRDBGMTJBMjY5MDA1
MUQ2ODkgLyogR3JhcGhpY3NMYXllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1ODBCMEUwRjEy
QTI2OTAwNTFENjg5IC8qIEdyYXBoaWNzTGF5ZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAotCQkJ
CTQ5OUIzQzU5MTI4QzY0MUUwMEU3MjZDMiAvKiBHcmFwaGljc0xheWVyTWFjLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCMkEwMTVBQjBBRjZDRDUzMDA2QkNFMEUgLyogR3JhcGhpY3NUeXBlcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQzUwQjU2MTcxMjExOUQyMzAwOEI0NkUwIC8qIEdyb3VwU2V0dGlu
Z3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTc2OTNCQUQyMTA2QzJEQ0EwMDdCMDgyMyAvKiBIYWx0
YWJsZVBsdWdpbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMTQzMCw2ICsyMTQ1Nyw5IEBACiAJCQkJ
OTNGMTk5RUQwODI0NUU1OTAwMUU5QUJDIC8qIFhTTFRQcm9jZXNzb3IuaCBpbiBIZWFkZXJzICov
LAogCQkJCUUxQkU1MTJFMENGNkM1MTIwMDJFQTk1OSAvKiBYU0xUVW5pY29kZVNvcnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTk3REQ0RDg3MEZERjRENkUwMEVDRjlBNCAvKiBYU1NBdWRpdG9yLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk0OTlCM0VDNTEyOENDQzQ3MDBFNzI2QzIgLyogUGxhdGZvcm1D
QUxheWVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk0OTlCM0VENzEyOENEMzE0MDBFNzI2QzIgLyog
R3JhcGhpY3NMYXllckNBLmggaW4gSGVhZGVycyAqLywKKwkJCQk0OTlCM0VERDEyOERCNTAyMDBF
NzI2QzIgLyogUGxhdGZvcm1DQUFuaW1hdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yMjQxNSw3
ICsyMjQ0NSw2IEBACiAJCQkJQjJFRDk3NzEwQjFGNTVDRTAwMjU3RDBGIC8qIEdyYXBoaWNzQ29u
dGV4dENHLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyNzdCNDA0MEIyMkYzN0MwMDA0QkVDNiAv
KiBHcmFwaGljc0NvbnRleHRNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQkwRjU4MEIwQzBGMTJB
MjY5MDA1MUQ2ODkgLyogR3JhcGhpY3NMYXllci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk0OTlC
M0M1QTEyOEM2NDFFMDBFNzI2QzIgLyogR3JhcGhpY3NMYXllck1hYy5tbSBpbiBTb3VyY2VzICov
LAogCQkJCUIyQTAxNUFBMEFGNkNENTMwMDZCQ0UwRSAvKiBHcmFwaGljc1R5cGVzLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUM1MEI1NjE2MTIxMTlEMjMwMDhCNDZFMCAvKiBHcm91cFNldHRpbmdz
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUY1NUIzREJGMTI1MUYxMkQwMDNFRjI2OSAvKiBIaWRk
ZW5JbnB1dFR5cGUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNDAwOCw2ICsyNDAzNyw5IEBACiAJ
CQkJOTNGMTlCMDUwODI0NUU1OTAwMUU5QUJDIC8qIFhTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUUxQkU1MTJEMENGNkM1MTIwMDJFQTk1OSAvKiBYU0xUVW5pY29k
ZVNvcnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTdERDREODYwRkRGNEQ2RTAwRUNGOUE0IC8q
IFhTU0F1ZGl0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDk5QjNFRDYxMjhDRDMxNDAwRTcy
NkMyIC8qIEdyYXBoaWNzTGF5ZXJDQS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0OTU4NzgyMTEy
QTU3RERGMDA3MjM4QUMgLyogUGxhdGZvcm1DQUFuaW1hdGlvbk1hYy5tbSBpbiBTb3VyY2VzICov
LAorCQkJCTQ5NTg3ODIyMTJBNTdEREYwMDcyMzhBQyAvKiBQbGF0Zm9ybUNBTGF5ZXJNYWMubW0g
aW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNz
aW5nID0gMDsKIAkJfTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NM
YXllci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NM
YXllci5oCShyZXZpc2lvbiA3MzE1MCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NMYXllci5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSwyMyArNDksMTkgQEAKIEBjbGFzcyBX
ZWJMYXllcjsKIEBjbGFzcyBDQUxheWVyOwogdHlwZWRlZiBDQUxheWVyIFBsYXRmb3JtTGF5ZXI7
Ci10eXBlZGVmIENBTGF5ZXIqIE5hdGl2ZUxheWVyOwogI2Vsc2UKIHR5cGVkZWYgdm9pZCogUGxh
dGZvcm1MYXllcjsKLXR5cGVkZWYgdm9pZCogTmF0aXZlTGF5ZXI7CiAjZW5kaWYKICNlbGlmIFBM
QVRGT1JNKFdJTikKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFdLQ0FDRkxheWVyOwogdHlw
ZWRlZiBXS0NBQ0ZMYXllciBQbGF0Zm9ybUxheWVyOwotdHlwZWRlZiB2b2lkKiBOYXRpdmVMYXll
cjsKIH0KICNlbGlmIFBMQVRGT1JNKFFUKQogI2lmIFVTRShURVhUVVJFX01BUFBFUikKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyOwogdHlwZWRl
ZiBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllciBQbGF0Zm9ybUxheWVyOwotdHlwZWRlZiBUZXh0
dXJlTWFwcGVyUGxhdGZvcm1MYXllciogTmF0aXZlTGF5ZXI7CiB9OwogI2Vsc2UKIFFUX0JFR0lO
X05BTUVTUEFDRQpAQCAtNzMsMTggKzY5LDE1IEBAIGNsYXNzIFFHcmFwaGljc09iamVjdDsKIFFU
X0VORF9OQU1FU1BBQ0UKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHR5cGVkZWYgUUdyYXBoaWNzT2Jq
ZWN0IFBsYXRmb3JtTGF5ZXI7Ci10eXBlZGVmIFFHcmFwaGljc09iamVjdCogTmF0aXZlTGF5ZXI7
CiB9CiAjZW5kaWYKICNlbGlmIFBMQVRGT1JNKENIUk9NSVVNKQogbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgTGF5ZXJDaHJvbWl1bTsKIHR5cGVkZWYgTGF5ZXJDaHJvbWl1bSBQbGF0Zm9ybUxh
eWVyOwotdHlwZWRlZiB2b2lkKiBOYXRpdmVMYXllcjsKIH0KICNlbHNlCiB0eXBlZGVmIHZvaWQq
IFBsYXRmb3JtTGF5ZXI7Ci10eXBlZGVmIHZvaWQqIE5hdGl2ZUxheWVyOwogI2VuZGlmCiAKIGVu
dW0gTGF5ZXJUcmVlQXNUZXh0QmVoYXZpb3JGbGFncyB7CkBAIC0yMDAsOSArMTkzLDYgQEAgcHVi
bGljOgogICAgIGNvbnN0IFN0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQog
ICAgIHZpcnR1YWwgdm9pZCBzZXROYW1lKGNvbnN0IFN0cmluZyYgbmFtZSkgeyBtX25hbWUgPSBu
YW1lOyB9CiAKLSAgICAvLyBGb3IgaG9zdGluZyB0aGlzIEdyYXBoaWNzTGF5ZXIgaW4gYSBuYXRp
dmUgbGF5ZXIgaGllcmFyY2h5LgotICAgIHZpcnR1YWwgTmF0aXZlTGF5ZXIgbmF0aXZlTGF5ZXIo
KSBjb25zdCB7IHJldHVybiAwOyB9Ci0KICAgICBHcmFwaGljc0xheWVyKiBwYXJlbnQoKSBjb25z
dCB7IHJldHVybiBtX3BhcmVudDsgfTsKICAgICB2b2lkIHNldFBhcmVudChHcmFwaGljc0xheWVy
KiBsYXllcikgeyBtX3BhcmVudCA9IGxheWVyOyB9IC8vIEludGVybmFsIHVzZSBvbmx5LgogICAg
IApAQCAtMzIzLDYgKzMxMyw3IEBAIHB1YmxpYzoKICAgICAvLyBDYWxsYmFjayBmcm9tIHRoZSB1
bmRlcmx5aW5nIGdyYXBoaWNzIHN5c3RlbSB3aGVuIHRoZSBsYXllciBoYXMgYmVlbiBkaXNwbGF5
ZWQKICAgICB2aXJ0dWFsIHZvaWQgZGlkRGlzcGxheShQbGF0Zm9ybUxheWVyKikgeyB9CiAgICAg
CisgICAgLy8gRm9yIGhvc3RpbmcgdGhpcyBHcmFwaGljc0xheWVyIGluIGEgbmF0aXZlIGxheWVy
IGhpZXJhcmNoeS4KICAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBj
b25zdCB7IHJldHVybiAwOyB9CiAgICAgCiAgICAgdm9pZCBkdW1wTGF5ZXIoVGV4dFN0cmVhbSYs
IGludCBpbmRlbnQgPSAwLCBMYXllclRyZWVBc1RleHRCZWhhdmlvciA9IExheWVyVHJlZUFzVGV4
dEJlaGF2aW9yTm9ybWFsKSBjb25zdDsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvR3JhcGhpY3NMYXllckNBLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMjI3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
Q09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgVVNFKEFDQ0VMRVJBVEVE
X0NPTVBPU0lUSU5HKQorCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNBLmgiCisKKyNpbmNsdWRl
ICJBbmltYXRpb24uaCIKKyNpbmNsdWRlICJGbG9hdENvbnZlcnNpb24uaCIKKyNpbmNsdWRlICJG
bG9hdFJlY3QuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUNBTGF5ZXIuaCIKKyNpbmNsdWRlICJQbGF0
Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgIlJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oIgorI2lu
Y2x1ZGUgIlNjYWxlVHJhbnNmb3JtT3BlcmF0aW9uLmgiCisjaW5jbHVkZSAiU3lzdGVtVGltZS5o
IgorI2luY2x1ZGUgIlRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oIgorI2luY2x1ZGUgPFF1
YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgorI2luY2x1ZGUgPGxpbWl0cy5oPgorI2luY2x1ZGUgPG9i
amMvb2JqYy1hdXRvLmg+CisjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CisjaW5jbHVkZSA8
d3RmL1VudXNlZFBhcmFtLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUu
aD4KKwordXNpbmcgbmFtZXNwYWNlIHN0ZDsKKworI2RlZmluZSBIQVZFX01PREVSTl9RVUFSVFpD
T1JFICghZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05f
TEVPUEFSRCkpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8gVGhlIHRocmVzaG9sZCB3aWR0
aCBvciBoZWlnaHQgYWJvdmUgd2hpY2ggYSB0aWxlZCBsYXllciB3aWxsIGJlIHVzZWQuIFRoaXMg
c2hvdWxkIGJlCisvLyBsYXJnZSBlbm91Z2ggdG8gYXZvaWQgdGlsZWQgbGF5ZXJzIGZvciBtb3N0
IEdyYXBoaWNzTGF5ZXJzLCBidXQgbGVzcyB0aGFuIHRoZSBPcGVuR0wKKy8vIHRleHR1cmUgc2l6
ZSBsaW1pdCBvbiBhbGwgc3VwcG9ydGVkIGhhcmR3YXJlLgorc3RhdGljIGNvbnN0IGludCBjTWF4
UGl4ZWxEaW1lbnNpb24gPSAyMDAwOworCisvLyBJZiB3ZSBzZW5kIGEgZHVyYXRpb24gb2YgMCB0
byBDQSwgdGhlbiBpdCB3aWxsIHVzZSB0aGUgZGVmYXVsdCBkdXJhdGlvbgorLy8gb2YgMjUwbXMu
IFNvIHNlbmQgYSB2ZXJ5IHNtYWxsIHZhbHVlIGluc3RlYWQuCitzdGF0aWMgY29uc3QgZmxvYXQg
Y0FuaW1hdGlvbkFsbW9zdFplcm9EdXJhdGlvbiA9IDFlLTNmOworCisvLyBDQUN1cnJlbnRNZWRp
YVRpbWUoKSBpcyBhIHRpbWUgc2luY2UgYm9vdC4gVGhlc2UgbWV0aG9kcyBjb252ZXJ0IGJldHdl
ZW4gdGhhdCBhbmQKKy8vIFdlYkNvcmUgdGltZSwgd2hpY2ggaXMgc3lzdGVtIHRpbWUgKFVUQyku
CitzdGF0aWMgQ0ZUaW1lSW50ZXJ2YWwgY3VycmVudFRpbWVUb01lZGlhVGltZShkb3VibGUgdCkK
K3sKKyAgICByZXR1cm4gQ0FDdXJyZW50TWVkaWFUaW1lKCkgKyB0IC0gV1RGOjpjdXJyZW50VGlt
ZSgpOworfQorCitzdGF0aWMgYm9vbCBpc1RyYW5zZm9ybVR5cGVUcmFuc2Zvcm1hdGlvbk1hdHJp
eChUcmFuc2Zvcm1PcGVyYXRpb246Ok9wZXJhdGlvblR5cGUgdHJhbnNmb3JtVHlwZSkKK3sKKyAg
ICBzd2l0Y2ggKHRyYW5zZm9ybVR5cGUpIHsKKyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6
U0tFV19YOgorICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpTS0VXX1k6CisgICAgY2FzZSBU
cmFuc2Zvcm1PcGVyYXRpb246OlNLRVc6CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246Ok1B
VFJJWDoKKyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRFXzNEOgorICAgIGNhc2Ug
VHJhbnNmb3JtT3BlcmF0aW9uOjpNQVRSSVhfM0Q6CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRp
b246OlBFUlNQRUNUSVZFOgorICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpJREVOVElUWToK
KyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6Tk9ORToKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworc3RhdGlj
IGJvb2wgaXNUcmFuc2Zvcm1UeXBlRmxvYXRQb2ludDNEKFRyYW5zZm9ybU9wZXJhdGlvbjo6T3Bl
cmF0aW9uVHlwZSB0cmFuc2Zvcm1UeXBlKQoreworICAgIHN3aXRjaCAodHJhbnNmb3JtVHlwZSkg
eworICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpTQ0FMRToKKyAgICBjYXNlIFRyYW5zZm9y
bU9wZXJhdGlvbjo6U0NBTEVfM0Q6CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5T
TEFURToKKyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFXzNEOgorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorfQorCitzdGF0aWMgYm9vbCBpc1RyYW5zZm9ybVR5cGVOdW1iZXIoVHJhbnNmb3JtT3BlcmF0
aW9uOjpPcGVyYXRpb25UeXBlIHRyYW5zZm9ybVR5cGUpCit7CisgICAgcmV0dXJuICFpc1RyYW5z
Zm9ybVR5cGVUcmFuc2Zvcm1hdGlvbk1hdHJpeCh0cmFuc2Zvcm1UeXBlKSAmJiAhaXNUcmFuc2Zv
cm1UeXBlRmxvYXRQb2ludDNEKHRyYW5zZm9ybVR5cGUpOworfQorCitzdGF0aWMgdm9pZCBnZXRU
cmFuc2Zvcm1GdW5jdGlvblZhbHVlKGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbiogdHJhbnNmb3Jt
T3AsIFRyYW5zZm9ybU9wZXJhdGlvbjo6T3BlcmF0aW9uVHlwZSB0cmFuc2Zvcm1UeXBlLCBjb25z
dCBJbnRTaXplJiBzaXplLCBmbG9hdCYgdmFsdWUpCit7CisgICAgc3dpdGNoICh0cmFuc2Zvcm1U
eXBlKSB7CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlJPVEFURToKKyAgICBjYXNlIFRy
YW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRFX1g6CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246
OlJPVEFURV9ZOgorICAgICAgICB2YWx1ZSA9IHRyYW5zZm9ybU9wID8gZGVnMnJhZChzdGF0aWNf
Y2FzdDxjb25zdCBSb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24qPih0cmFuc2Zvcm1PcCktPmFuZ2xl
KCkpIDogMDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlND
QUxFX1g6CisgICAgICAgIHZhbHVlID0gdHJhbnNmb3JtT3AgPyBzdGF0aWNfY2FzdDxjb25zdCBT
Y2FsZVRyYW5zZm9ybU9wZXJhdGlvbio+KHRyYW5zZm9ybU9wKS0+eCgpIDogMTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlNDQUxFX1k6CisgICAgICAgIHZh
bHVlID0gdHJhbnNmb3JtT3AgPyBzdGF0aWNfY2FzdDxjb25zdCBTY2FsZVRyYW5zZm9ybU9wZXJh
dGlvbio+KHRyYW5zZm9ybU9wKS0+eSgpIDogMTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBU
cmFuc2Zvcm1PcGVyYXRpb246OlNDQUxFX1o6CisgICAgICAgIHZhbHVlID0gdHJhbnNmb3JtT3Ag
PyBzdGF0aWNfY2FzdDxjb25zdCBTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbio+KHRyYW5zZm9ybU9w
KS0+eigpIDogMTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246
OlRSQU5TTEFURV9YOgorICAgICAgICB2YWx1ZSA9IHRyYW5zZm9ybU9wID8gc3RhdGljX2Nhc3Q8
Y29uc3QgVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uKj4odHJhbnNmb3JtT3ApLT54KHNpemUp
IDogMDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5T
TEFURV9ZOgorICAgICAgICB2YWx1ZSA9IHRyYW5zZm9ybU9wID8gc3RhdGljX2Nhc3Q8Y29uc3Qg
VHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uKj4odHJhbnNmb3JtT3ApLT55KHNpemUpIDogMDsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURV9a
OgorICAgICAgICB2YWx1ZSA9IHRyYW5zZm9ybU9wID8gc3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNs
YXRlVHJhbnNmb3JtT3BlcmF0aW9uKj4odHJhbnNmb3JtT3ApLT56KHNpemUpIDogMDsKKyAgICAg
ICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCitzdGF0
aWMgdm9pZCBnZXRUcmFuc2Zvcm1GdW5jdGlvblZhbHVlKGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlv
biogdHJhbnNmb3JtT3AsIFRyYW5zZm9ybU9wZXJhdGlvbjo6T3BlcmF0aW9uVHlwZSB0cmFuc2Zv
cm1UeXBlLCBjb25zdCBJbnRTaXplJiBzaXplLCBGbG9hdFBvaW50M0QmIHZhbHVlKQoreworICAg
IHN3aXRjaCAodHJhbnNmb3JtVHlwZSkgeworICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpT
Q0FMRToKKyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0NBTEVfM0Q6CisgICAgICAgIHZh
bHVlLnNldFgodHJhbnNmb3JtT3AgPyBzdGF0aWNfY2FzdDxjb25zdCBTY2FsZVRyYW5zZm9ybU9w
ZXJhdGlvbio+KHRyYW5zZm9ybU9wKS0+eCgpIDogMSk7CisgICAgICAgIHZhbHVlLnNldFkodHJh
bnNmb3JtT3AgPyBzdGF0aWNfY2FzdDxjb25zdCBTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbio+KHRy
YW5zZm9ybU9wKS0+eSgpIDogMSk7CisgICAgICAgIHZhbHVlLnNldFoodHJhbnNmb3JtT3AgPyBz
dGF0aWNfY2FzdDxjb25zdCBTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbio+KHRyYW5zZm9ybU9wKS0+
eigpIDogMSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpU
UkFOU0xBVEU6CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURV8zRDoKKyAg
ICAgICAgdmFsdWUuc2V0WCh0cmFuc2Zvcm1PcCA/IHN0YXRpY19jYXN0PGNvbnN0IFRyYW5zbGF0
ZVRyYW5zZm9ybU9wZXJhdGlvbio+KHRyYW5zZm9ybU9wKS0+eChzaXplKSA6IDApOworICAgICAg
ICB2YWx1ZS5zZXRZKHRyYW5zZm9ybU9wID8gc3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNsYXRlVHJh
bnNmb3JtT3BlcmF0aW9uKj4odHJhbnNmb3JtT3ApLT55KHNpemUpIDogMCk7CisgICAgICAgIHZh
bHVlLnNldFoodHJhbnNmb3JtT3AgPyBzdGF0aWNfY2FzdDxjb25zdCBUcmFuc2xhdGVUcmFuc2Zv
cm1PcGVyYXRpb24qPih0cmFuc2Zvcm1PcCktPnooc2l6ZSkgOiAwKTsKKyAgICAgICAgYnJlYWs7
CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCBn
ZXRUcmFuc2Zvcm1GdW5jdGlvblZhbHVlKGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbiogdHJhbnNm
b3JtT3AsIFRyYW5zZm9ybU9wZXJhdGlvbjo6T3BlcmF0aW9uVHlwZSB0cmFuc2Zvcm1UeXBlLCBj
b25zdCBJbnRTaXplJiBzaXplLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdmFsdWUpCit7CisgICAg
c3dpdGNoICh0cmFuc2Zvcm1UeXBlKSB7CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlNL
RVdfWDoKKyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0tFV19ZOgorICAgIGNhc2UgVHJh
bnNmb3JtT3BlcmF0aW9uOjpTS0VXOgorICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpNQVRS
SVg6CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlJPVEFURV8zRDoKKyAgICBjYXNlIFRy
YW5zZm9ybU9wZXJhdGlvbjo6TUFUUklYXzNEOgorICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9u
OjpQRVJTUEVDVElWRToKKyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6SURFTlRJVFk6Cisg
ICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246Ok5PTkU6CisgICAgICAgIGlmICh0cmFuc2Zvcm1P
cCkKKyAgICAgICAgICAgIHRyYW5zZm9ybU9wLT5hcHBseSh2YWx1ZSwgc2l6ZSk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIHZhbHVlLm1ha2VJZGVudGl0eSgpOworICAgICAgICBicmVhazsK
KyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9Cit9CisKKyNpZiBIQVZFX01PREVS
Tl9RVUFSVFpDT1JFCitzdGF0aWMgUGxhdGZvcm1DQUFuaW1hdGlvbjo6VmFsdWVGdW5jdGlvblR5
cGUgZ2V0VmFsdWVGdW5jdGlvbk5hbWVGb3JUcmFuc2Zvcm1PcGVyYXRpb24oVHJhbnNmb3JtT3Bl
cmF0aW9uOjpPcGVyYXRpb25UeXBlIHRyYW5zZm9ybVR5cGUpCit7CisgICAgLy8gVXNlIGxpdGVy
YWwgc3RyaW5ncyB0byBhdm9pZCBsaW5rLXRpbWUgZGVwZW5kZW5jeSBvbiB0aG9zZSBzeW1ib2xz
LgorICAgIHN3aXRjaCAodHJhbnNmb3JtVHlwZSkgeworICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0
aW9uOjpST1RBVEVfWDoKKyAgICAgICAgcmV0dXJuIFBsYXRmb3JtQ0FBbmltYXRpb246OlJvdGF0
ZVg7CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlJPVEFURV9ZOgorICAgICAgICByZXR1
cm4gUGxhdGZvcm1DQUFuaW1hdGlvbjo6Um90YXRlWTsKKyAgICBjYXNlIFRyYW5zZm9ybU9wZXJh
dGlvbjo6Uk9UQVRFOgorICAgICAgICByZXR1cm4gUGxhdGZvcm1DQUFuaW1hdGlvbjo6Um90YXRl
WjsKKyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0NBTEVfWDoKKyAgICAgICAgcmV0dXJu
IFBsYXRmb3JtQ0FBbmltYXRpb246OlNjYWxlWDsKKyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlv
bjo6U0NBTEVfWToKKyAgICAgICAgcmV0dXJuIFBsYXRmb3JtQ0FBbmltYXRpb246OlNjYWxlWTsK
KyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0NBTEVfWjoKKyAgICAgICAgcmV0dXJuIFBs
YXRmb3JtQ0FBbmltYXRpb246OlNjYWxlWjsKKyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6
VFJBTlNMQVRFX1g6CisgICAgICAgIHJldHVybiBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpUcmFuc2xh
dGVYOworICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfWToKKyAgICAgICAg
cmV0dXJuIFBsYXRmb3JtQ0FBbmltYXRpb246OlRyYW5zbGF0ZVk7CisgICAgY2FzZSBUcmFuc2Zv
cm1PcGVyYXRpb246OlRSQU5TTEFURV9aOgorICAgICAgICByZXR1cm4gUGxhdGZvcm1DQUFuaW1h
dGlvbjo6VHJhbnNsYXRlWjsKKyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0NBTEU6Cisg
ICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlNDQUxFXzNEOgorICAgICAgICByZXR1cm4gUGxh
dGZvcm1DQUFuaW1hdGlvbjo6U2NhbGU7CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlRS
QU5TTEFURToKKyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFXzNEOgorICAg
ICAgICByZXR1cm4gUGxhdGZvcm1DQUFuaW1hdGlvbjo6VHJhbnNsYXRlOworICAgIGRlZmF1bHQ6
CisgICAgICAgIHJldHVybiBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpOb1ZhbHVlRnVuY3Rpb247Cisg
ICAgfQorfQorI2VuZGlmCisKK3N0YXRpYyBTdHJpbmcgcHJvcGVydHlJZFRvU3RyaW5nKEFuaW1h
dGVkUHJvcGVydHlJRCBwcm9wZXJ0eSkKK3sKKyAgICBzd2l0Y2ggKHByb3BlcnR5KSB7CisgICAg
Y2FzZSBBbmltYXRlZFByb3BlcnR5V2Via2l0VHJhbnNmb3JtOgorICAgICAgICByZXR1cm4gInRy
YW5zZm9ybSI7CisgICAgY2FzZSBBbmltYXRlZFByb3BlcnR5T3BhY2l0eToKKyAgICAgICAgcmV0
dXJuICJvcGFjaXR5IjsKKyAgICBjYXNlIEFuaW1hdGVkUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3I6
CisgICAgICAgIHJldHVybiAiYmFja2dyb3VuZENvbG9yIjsKKyAgICBjYXNlIEFuaW1hdGVkUHJv
cGVydHlJbnZhbGlkOgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuICIiOworfQorCitzdGF0aWMgU3RyaW5n
IGFuaW1hdGlvbklkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBBbmltYXRl
ZFByb3BlcnR5SUQgcHJvcGVydHksIGludCBpbmRleCkKK3sKKyAgICByZXR1cm4gbWFrZVN0cmlu
ZyhhbmltYXRpb25OYW1lLCAnXycsIFN0cmluZzo6bnVtYmVyKHByb3BlcnR5KSwgJ18nLCBTdHJp
bmc6Om51bWJlcihpbmRleCkpOworfQorCitzdGF0aWMgYm9vbCBhbmltYXRpb25IYXNTdGVwc1Rp
bWluZ0Z1bmN0aW9uKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3QsIGNvbnN0IEFu
aW1hdGlvbiogYW5pbSkKK3sKKyAgICBpZiAoYW5pbS0+dGltaW5nRnVuY3Rpb24oKS0+aXNTdGVw
c1RpbWluZ0Z1bmN0aW9uKCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIAorICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCB2YWx1ZUxpc3Quc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgY29u
c3QgVGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0aW9uID0gdmFsdWVMaXN0LmF0KGkpLT50aW1p
bmdGdW5jdGlvbigpOworICAgICAgICBpZiAodGltaW5nRnVuY3Rpb24gJiYgdGltaW5nRnVuY3Rp
b24tPmlzU3RlcHNUaW1pbmdGdW5jdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCitQYXNzT3duUHRyPEdyYXBoaWNzTGF5ZXI+
IEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZShHcmFwaGljc0xheWVyQ2xpZW50KiBjbGllbnQpCit7Cisg
ICAgcmV0dXJuIG5ldyBHcmFwaGljc0xheWVyQ0EoY2xpZW50KTsKK30KKworR3JhcGhpY3NMYXll
ckNBOjpHcmFwaGljc0xheWVyQ0EoR3JhcGhpY3NMYXllckNsaWVudCogY2xpZW50KQorICAgIDog
R3JhcGhpY3NMYXllcihjbGllbnQpCisgICAgLCBtX2NvbnRlbnRzTGF5ZXJQdXJwb3NlKE5vQ29u
dGVudHNMYXllcikKKyAgICAsIG1fY29udGVudHNMYXllckhhc0JhY2tncm91bmRDb2xvcihmYWxz
ZSkKKyAgICAsIG1fdW5jb21taXR0ZWRDaGFuZ2VzKE5vQ2hhbmdlKQoreworICAgIG1fbGF5ZXIg
PSBQbGF0Zm9ybUNBTGF5ZXI6OmNyZWF0ZShQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVdlYkxh
eWVyLCB0aGlzKTsKKworI2lmICFIQVZFX01PREVSTl9RVUFSVFpDT1JFCisgICAgc2V0Q29udGVu
dHNPcmllbnRhdGlvbihkZWZhdWx0Q29udGVudHNPcmllbnRhdGlvbigpKTsKKyNlbmRpZgorCisg
ICAgdXBkYXRlRGVidWdJbmRpY2F0b3JzKCk7Cit9CisKK0dyYXBoaWNzTGF5ZXJDQTo6fkdyYXBo
aWNzTGF5ZXJDQSgpCit7CisgICAgLy8gV2UgcmVsZWFzZSBvdXIgcmVmZXJlbmNlcyB0byB0aGUg
UGxhdGZvcm1DQUxheWVycyBoZXJlLCBidXQgZG8gbm90IGFjdGl2ZWx5IHVucGFyZW50IHRoZW0s
CisgICAgLy8gc2luY2UgdGhhdCB3aWxsIGNhdXNlIGEgY29tbWl0IGFuZCBicmVhayBvdXIgYmF0
Y2hlZCBjb21taXQgbW9kZWwuIFRoZSBsYXllcnMgd2lsbAorICAgIC8vIGdldCByZWxlYXNlZCB3
aGVuIHRoZSByb290bW9zdCBtb2RpZmllZCBHcmFwaGljc0xheWVyQ0EgcmVidWlsZHMgaXRzIGNo
aWxkIGxheWVycy4KKyAgICAKKyAgICAvLyBDbGVhbiB1cCB0aGUgbGF5ZXIuCisgICAgaWYgKG1f
bGF5ZXIpCisgICAgICAgIG1fbGF5ZXItPnNldE93bmVyKDApOworICAgIAorICAgIGlmIChtX2Nv
bnRlbnRzTGF5ZXIpCisgICAgICAgIG1fY29udGVudHNMYXllci0+c2V0T3duZXIoMCk7CisgICAg
ICAgIAorICAgIGlmIChtX3N0cnVjdHVyYWxMYXllcikKKyAgICAgICAgbV9zdHJ1Y3R1cmFsTGF5
ZXItPnNldE93bmVyKDApOworICAgIAorICAgIHJlbW92ZUNsb25lTGF5ZXJzKCk7Cit9CisKK3Zv
aWQgR3JhcGhpY3NMYXllckNBOjpzZXROYW1lKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBT
dHJpbmcgbG9uZ05hbWUgPSBTdHJpbmc6OmZvcm1hdCgiQ0FMYXllciglcCkgR3JhcGhpY3NMYXll
ciglcCkgIiwgbV9sYXllci5nZXQoKSwgdGhpcykgKyBuYW1lOworICAgIEdyYXBoaWNzTGF5ZXI6
OnNldE5hbWUobG9uZ05hbWUpOworICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChOYW1lQ2hh
bmdlZCk7Cit9CisKK1BsYXRmb3JtTGF5ZXIqIEdyYXBoaWNzTGF5ZXJDQTo6cGxhdGZvcm1MYXll
cigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHByaW1hcnlMYXllcigpLT5wbGF0Zm9ybUxheWVyKCk7
Cit9CisKK2Jvb2wgR3JhcGhpY3NMYXllckNBOjpzZXRDaGlsZHJlbihjb25zdCBWZWN0b3I8R3Jh
cGhpY3NMYXllcio+JiBjaGlsZHJlbikKK3sKKyAgICBib29sIGNoaWxkcmVuQ2hhbmdlZCA9IEdy
YXBoaWNzTGF5ZXI6OnNldENoaWxkcmVuKGNoaWxkcmVuKTsKKyAgICBpZiAoY2hpbGRyZW5DaGFu
Z2VkKQorICAgICAgICBub3RlU3VibGF5ZXJzQ2hhbmdlZCgpOworICAgIAorICAgIHJldHVybiBj
aGlsZHJlbkNoYW5nZWQ7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjphZGRDaGlsZChHcmFw
aGljc0xheWVyKiBjaGlsZExheWVyKQoreworICAgIEdyYXBoaWNzTGF5ZXI6OmFkZENoaWxkKGNo
aWxkTGF5ZXIpOworICAgIG5vdGVTdWJsYXllcnNDaGFuZ2VkKCk7Cit9CisKK3ZvaWQgR3JhcGhp
Y3NMYXllckNBOjphZGRDaGlsZEF0SW5kZXgoR3JhcGhpY3NMYXllciogY2hpbGRMYXllciwgaW50
IGluZGV4KQoreworICAgIEdyYXBoaWNzTGF5ZXI6OmFkZENoaWxkQXRJbmRleChjaGlsZExheWVy
LCBpbmRleCk7CisgICAgbm90ZVN1YmxheWVyc0NoYW5nZWQoKTsKK30KKwordm9pZCBHcmFwaGlj
c0xheWVyQ0E6OmFkZENoaWxkQmVsb3coR3JhcGhpY3NMYXllciogY2hpbGRMYXllciwgR3JhcGhp
Y3NMYXllciogc2libGluZykKK3sKKyAgICBHcmFwaGljc0xheWVyOjphZGRDaGlsZEJlbG93KGNo
aWxkTGF5ZXIsIHNpYmxpbmcpOworICAgIG5vdGVTdWJsYXllcnNDaGFuZ2VkKCk7Cit9CisKK3Zv
aWQgR3JhcGhpY3NMYXllckNBOjphZGRDaGlsZEFib3ZlKEdyYXBoaWNzTGF5ZXIqIGNoaWxkTGF5
ZXIsIEdyYXBoaWNzTGF5ZXIqIHNpYmxpbmcpCit7CisgICAgR3JhcGhpY3NMYXllcjo6YWRkQ2hp
bGRBYm92ZShjaGlsZExheWVyLCBzaWJsaW5nKTsKKyAgICBub3RlU3VibGF5ZXJzQ2hhbmdlZCgp
OworfQorCitib29sIEdyYXBoaWNzTGF5ZXJDQTo6cmVwbGFjZUNoaWxkKEdyYXBoaWNzTGF5ZXIq
IG9sZENoaWxkLCBHcmFwaGljc0xheWVyKiBuZXdDaGlsZCkKK3sKKyAgICBpZiAoR3JhcGhpY3NM
YXllcjo6cmVwbGFjZUNoaWxkKG9sZENoaWxkLCBuZXdDaGlsZCkpIHsKKyAgICAgICAgbm90ZVN1
YmxheWVyc0NoYW5nZWQoKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVy
biBmYWxzZTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnJlbW92ZUZyb21QYXJlbnQoKQor
eworICAgIGlmIChtX3BhcmVudCkKKyAgICAgICAgc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllckNB
Kj4obV9wYXJlbnQpLT5ub3RlU3VibGF5ZXJzQ2hhbmdlZCgpOworICAgIEdyYXBoaWNzTGF5ZXI6
OnJlbW92ZUZyb21QYXJlbnQoKTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldE1hc2tM
YXllcihHcmFwaGljc0xheWVyKiBsYXllcikKK3sKKyAgICBpZiAobGF5ZXIgPT0gbV9tYXNrTGF5
ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIEdyYXBoaWNzTGF5ZXI6OnNldE1hc2tMYXllcihs
YXllcik7CisgICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKE1hc2tMYXllckNoYW5nZWQpOwor
CisgICAgcHJvcGFnYXRlTGF5ZXJDaGFuZ2VUb1JlcGxpY2FzKCk7CisgICAgCisgICAgaWYgKG1f
cmVwbGljYXRlZExheWVyKQorICAgICAgICBzdGF0aWNfY2FzdDxHcmFwaGljc0xheWVyQ0EqPiht
X3JlcGxpY2F0ZWRMYXllciktPnByb3BhZ2F0ZUxheWVyQ2hhbmdlVG9SZXBsaWNhcygpOworfQor
Cit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0UmVwbGljYXRlZExheWVyKEdyYXBoaWNzTGF5ZXIq
IGxheWVyKQoreworICAgIGlmIChsYXllciA9PSBtX3JlcGxpY2F0ZWRMYXllcikKKyAgICAgICAg
cmV0dXJuOworCisgICAgR3JhcGhpY3NMYXllcjo6c2V0UmVwbGljYXRlZExheWVyKGxheWVyKTsK
KyAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoUmVwbGljYXRlZExheWVyQ2hhbmdlZCk7Cit9
CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRSZXBsaWNhdGVkQnlMYXllcihHcmFwaGljc0xh
eWVyKiBsYXllcikKK3sKKyAgICBpZiAobGF5ZXIgPT0gbV9yZXBsaWNhTGF5ZXIpCisgICAgICAg
IHJldHVybjsKKworICAgIEdyYXBoaWNzTGF5ZXI6OnNldFJlcGxpY2F0ZWRCeUxheWVyKGxheWVy
KTsKKyAgICBub3RlU3VibGF5ZXJzQ2hhbmdlZCgpOworICAgIG5vdGVMYXllclByb3BlcnR5Q2hh
bmdlZChSZXBsaWNhdGVkTGF5ZXJDaGFuZ2VkKTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6
OnNldFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50KQoreworICAgIGlmIChwb2ludCA9
PSBtX3Bvc2l0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBHcmFwaGljc0xheWVyOjpzZXRQ
b3NpdGlvbihwb2ludCk7CisgICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKFBvc2l0aW9uQ2hh
bmdlZCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRBbmNob3JQb2ludChjb25zdCBG
bG9hdFBvaW50M0QmIHBvaW50KQoreworICAgIGlmIChwb2ludCA9PSBtX2FuY2hvclBvaW50KQor
ICAgICAgICByZXR1cm47CisKKyAgICBHcmFwaGljc0xheWVyOjpzZXRBbmNob3JQb2ludChwb2lu
dCk7CisgICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKEFuY2hvclBvaW50Q2hhbmdlZCk7Cit9
CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRTaXplKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkK
K3sKKyAgICBpZiAoc2l6ZSA9PSBtX3NpemUpCisgICAgICAgIHJldHVybjsKKworICAgIEdyYXBo
aWNzTGF5ZXI6OnNldFNpemUoc2l6ZSk7CisgICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKFNp
emVDaGFuZ2VkKTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldFRyYW5zZm9ybShjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdCkKK3sKKyAgICBpZiAodCA9PSBtX3RyYW5zZm9ybSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgR3JhcGhpY3NMYXllcjo6c2V0VHJhbnNmb3JtKHQpOwor
ICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChUcmFuc2Zvcm1DaGFuZ2VkKTsKK30KKwordm9p
ZCBHcmFwaGljc0xheWVyQ0E6OnNldENoaWxkcmVuVHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiB0KQoreworICAgIGlmICh0ID09IG1fY2hpbGRyZW5UcmFuc2Zvcm0pCisgICAg
ICAgIHJldHVybjsKKworICAgIEdyYXBoaWNzTGF5ZXI6OnNldENoaWxkcmVuVHJhbnNmb3JtKHQp
OworICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChDaGlsZHJlblRyYW5zZm9ybUNoYW5nZWQp
OworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6bW92ZU9yQ29weUxheWVyQW5pbWF0aW9uKE1v
dmVPckNvcHkgb3BlcmF0aW9uLCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbklkZW50aWZpZXIsIFBs
YXRmb3JtQ0FMYXllciAqZnJvbUxheWVyLCBQbGF0Zm9ybUNBTGF5ZXIgKnRvTGF5ZXIpCit7Cisg
ICAgUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IGFuaW0gPSBmcm9tTGF5ZXItPmFuaW1hdGlv
bkZvcktleShhbmltYXRpb25JZGVudGlmaWVyKTsKKyAgICBpZiAoIWFuaW0pCisgICAgICAgIHJl
dHVybjsKKworICAgIHN3aXRjaCAob3BlcmF0aW9uKSB7CisgICAgY2FzZSBNb3ZlOgorICAgICAg
ICBmcm9tTGF5ZXItPnJlbW92ZUFuaW1hdGlvbkZvcktleShhbmltYXRpb25JZGVudGlmaWVyKTsK
KyAgICAgICAgdG9MYXllci0+YWRkQW5pbWF0aW9uRm9yS2V5KGFuaW1hdGlvbklkZW50aWZpZXIs
IGFuaW0uZ2V0KCkpOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgQ29weToKKyAgICAgICAg
dG9MYXllci0+YWRkQW5pbWF0aW9uRm9yS2V5KGFuaW1hdGlvbklkZW50aWZpZXIsIGFuaW0uZ2V0
KCkpOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpt
b3ZlT3JDb3B5QW5pbWF0aW9uc0ZvclByb3BlcnR5KE1vdmVPckNvcHkgb3BlcmF0aW9uLCBBbmlt
YXRlZFByb3BlcnR5SUQgcHJvcGVydHksIFBsYXRmb3JtQ0FMYXllciAqZnJvbUxheWVyLCBQbGF0
Zm9ybUNBTGF5ZXIgKnRvTGF5ZXIpCit7CisgICAgLy8gTG9vayBmb3IgcnVubmluZyBhbmltYXRp
b25zIGFmZmVjdGluZyB0aGlzIHByb3BlcnR5LgorICAgIEFuaW1hdGlvbnNNYXA6OmNvbnN0X2l0
ZXJhdG9yIGVuZCA9IG1fcnVubmluZ0FuaW1hdGlvbnMuZW5kKCk7CisgICAgZm9yIChBbmltYXRp
b25zTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fcnVubmluZ0FuaW1hdGlvbnMuYmVnaW4oKTsg
aXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgIGNvbnN0IFZlY3RvcjxMYXllclByb3BlcnR5QW5p
bWF0aW9uPiYgcHJvcGVydHlBbmltYXRpb25zID0gaXQtPnNlY29uZDsKKyAgICAgICAgc2l6ZV90
IG51bUFuaW1hdGlvbnMgPSBwcm9wZXJ0eUFuaW1hdGlvbnMuc2l6ZSgpOworICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG51bUFuaW1hdGlvbnM7ICsraSkgeworICAgICAgICAgICAgY29u
c3QgTGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbiYgY3VyckFuaW1hdGlvbiA9IHByb3BlcnR5QW5pbWF0
aW9uc1tpXTsKKyAgICAgICAgICAgIGlmIChjdXJyQW5pbWF0aW9uLm1fcHJvcGVydHkgPT0gcHJv
cGVydHkpCisgICAgICAgICAgICAgICAgbW92ZU9yQ29weUxheWVyQW5pbWF0aW9uKG9wZXJhdGlv
biwgYW5pbWF0aW9uSWRlbnRpZmllcihjdXJyQW5pbWF0aW9uLm1fbmFtZSwgY3VyckFuaW1hdGlv
bi5tX3Byb3BlcnR5LCBjdXJyQW5pbWF0aW9uLm1faW5kZXgpLCBmcm9tTGF5ZXIsIHRvTGF5ZXIp
OworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0UHJlc2Vy
dmVzM0QoYm9vbCBwcmVzZXJ2ZXMzRCkKK3sKKyAgICBpZiAocHJlc2VydmVzM0QgPT0gbV9wcmVz
ZXJ2ZXMzRCkKKyAgICAgICAgcmV0dXJuOworCisgICAgR3JhcGhpY3NMYXllcjo6c2V0UHJlc2Vy
dmVzM0QocHJlc2VydmVzM0QpOworICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChQcmVzZXJ2
ZXMzRENoYW5nZWQpOworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0TWFza3NUb0JvdW5k
cyhib29sIG1hc2tzVG9Cb3VuZHMpCit7CisgICAgaWYgKG1hc2tzVG9Cb3VuZHMgPT0gbV9tYXNr
c1RvQm91bmRzKQorICAgICAgICByZXR1cm47CisKKyAgICBHcmFwaGljc0xheWVyOjpzZXRNYXNr
c1RvQm91bmRzKG1hc2tzVG9Cb3VuZHMpOworICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChN
YXNrc1RvQm91bmRzQ2hhbmdlZCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXREcmF3
c0NvbnRlbnQoYm9vbCBkcmF3c0NvbnRlbnQpCit7CisgICAgaWYgKGRyYXdzQ29udGVudCA9PSBt
X2RyYXdzQ29udGVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgR3JhcGhpY3NMYXllcjo6c2V0
RHJhd3NDb250ZW50KGRyYXdzQ29udGVudCk7CisgICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2Vk
KERyYXdzQ29udGVudENoYW5nZWQpOworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0QmFj
a2dyb3VuZENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKK3sKKyAgICBpZiAobV9iYWNrZ3JvdW5k
Q29sb3JTZXQgJiYgbV9iYWNrZ3JvdW5kQ29sb3IgPT0gY29sb3IpCisgICAgICAgIHJldHVybjsK
KworICAgIEdyYXBoaWNzTGF5ZXI6OnNldEJhY2tncm91bmRDb2xvcihjb2xvcik7CisKKyAgICBt
X2NvbnRlbnRzTGF5ZXJIYXNCYWNrZ3JvdW5kQ29sb3IgPSB0cnVlOworICAgIG5vdGVMYXllclBy
b3BlcnR5Q2hhbmdlZChCYWNrZ3JvdW5kQ29sb3JDaGFuZ2VkKTsKK30KKwordm9pZCBHcmFwaGlj
c0xheWVyQ0E6OmNsZWFyQmFja2dyb3VuZENvbG9yKCkKK3sKKyAgICBpZiAoIW1fYmFja2dyb3Vu
ZENvbG9yU2V0KQorICAgICAgICByZXR1cm47CisKKyAgICBHcmFwaGljc0xheWVyOjpjbGVhckJh
Y2tncm91bmRDb2xvcigpOworICAgIG1fY29udGVudHNMYXllckhhc0JhY2tncm91bmRDb2xvciA9
IGZhbHNlOworICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChCYWNrZ3JvdW5kQ29sb3JDaGFu
Z2VkKTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRzT3BhcXVlKGJvb2wg
b3BhcXVlKQoreworICAgIGlmIChtX2NvbnRlbnRzT3BhcXVlID09IG9wYXF1ZSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgR3JhcGhpY3NMYXllcjo6c2V0Q29udGVudHNPcGFxdWUob3BhcXVlKTsK
KyAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoQ29udGVudHNPcGFxdWVDaGFuZ2VkKTsKK30K
Kwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldEJhY2tmYWNlVmlzaWJpbGl0eShib29sIHZpc2li
bGUpCit7CisgICAgaWYgKG1fYmFja2ZhY2VWaXNpYmlsaXR5ID09IHZpc2libGUpCisgICAgICAg
IHJldHVybjsKKyAgICAKKyAgICBHcmFwaGljc0xheWVyOjpzZXRCYWNrZmFjZVZpc2liaWxpdHko
dmlzaWJsZSk7CisgICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKEJhY2tmYWNlVmlzaWJpbGl0
eUNoYW5nZWQpOworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0T3BhY2l0eShmbG9hdCBv
cGFjaXR5KQoreworICAgIGZsb2F0IGNsYW1wZWRPcGFjaXR5ID0gbWF4KDAuMGYsIG1pbihvcGFj
aXR5LCAxLjBmKSk7CisKKyAgICBpZiAoY2xhbXBlZE9wYWNpdHkgPT0gbV9vcGFjaXR5KQorICAg
ICAgICByZXR1cm47CisKKyAgICBHcmFwaGljc0xheWVyOjpzZXRPcGFjaXR5KGNsYW1wZWRPcGFj
aXR5KTsKKyAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoT3BhY2l0eUNoYW5nZWQpOworfQor
Cit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0TmVlZHNEaXNwbGF5KCkKK3sKKyAgICBGbG9hdFJl
Y3QgaHVnZVJlY3QoLW51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4KCkgLyAyLCAtbnVtZXJpY19s
aW1pdHM8ZmxvYXQ+OjptYXgoKSAvIDIsCisgICAgICAgICAgICAgICAgICAgICAgIG51bWVyaWNf
bGltaXRzPGZsb2F0Pjo6bWF4KCksIG51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4KCkpOworCisg
ICAgc2V0TmVlZHNEaXNwbGF5SW5SZWN0KGh1Z2VSZWN0KTsKK30KKwordm9pZCBHcmFwaGljc0xh
eWVyQ0E6OnNldE5lZWRzRGlzcGxheUluUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCit7Cisg
ICAgaWYgKCFkcmF3c0NvbnRlbnQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgY29uc3Qgc2l6
ZV90IG1heERpcnR5UmVjdHMgPSAzMjsKKyAgICAKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG1fZGlydHlSZWN0cy5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAobV9kaXJ0eVJlY3RzW2ld
LmNvbnRhaW5zKHJlY3QpKQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBp
ZiAobV9kaXJ0eVJlY3RzLnNpemUoKSA8IG1heERpcnR5UmVjdHMpCisgICAgICAgIG1fZGlydHlS
ZWN0cy5hcHBlbmQocmVjdCk7CisgICAgZWxzZQorICAgICAgICBtX2RpcnR5UmVjdHNbMF0udW5p
dGUocmVjdCk7CisKKyAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoRGlydHlSZWN0c0NoYW5n
ZWQpOworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0Q29udGVudHNOZWVkc0Rpc3BsYXko
KQoreworICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChDb250ZW50c05lZWRzRGlzcGxheSk7
Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRDb250ZW50c1JlY3QoY29uc3QgSW50UmVj
dCYgcmVjdCkKK3sKKyAgICBpZiAocmVjdCA9PSBtX2NvbnRlbnRzUmVjdCkKKyAgICAgICAgcmV0
dXJuOworCisgICAgR3JhcGhpY3NMYXllcjo6c2V0Q29udGVudHNSZWN0KHJlY3QpOworICAgIG5v
dGVMYXllclByb3BlcnR5Q2hhbmdlZChDb250ZW50c1JlY3RDaGFuZ2VkKTsKK30KKworYm9vbCBH
cmFwaGljc0xheWVyQ0E6OmFkZEFuaW1hdGlvbihjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFs
dWVMaXN0LCBjb25zdCBJbnRTaXplJiBib3hTaXplLCBjb25zdCBBbmltYXRpb24qIGFuaW0sIGNv
bnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSwgZG91YmxlIHRpbWVPZmZzZXQpCit7CisgICAgQVNT
RVJUKCFhbmltYXRpb25OYW1lLmlzRW1wdHkoKSk7CisKKyAgICBpZiAoIWFuaW0gfHwgYW5pbS0+
aXNFbXB0eU9yWmVyb0R1cmF0aW9uKCkgfHwgdmFsdWVMaXN0LnNpemUoKSA8IDIpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworI2lmICFIQVZFX01PREVSTl9RVUFSVFpDT1JFCisgICAgLy8gT2xk
ZXIgdmVyc2lvbnMgb2YgUXVhcnR6Q29yZSBkbyBub3QgaGFuZGxlIG9wYWNpdHkgaW4gdHJhbnNm
b3JtIGxheWVycyBwcm9wZXJseSwgc28gd2Ugd2lsbAorICAgIC8vIGFsd2F5cyBkbyBzb2Z0d2Fy
ZSBhbmltYXRpb24gaW4gdGhhdCBjYXNlLgorICAgIGlmICh2YWx1ZUxpc3QucHJvcGVydHkoKSA9
PSBBbmltYXRlZFByb3BlcnR5T3BhY2l0eSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlm
CisKKyAgICAvLyBDb3JlQW5pbWF0aW9uIGRvZXMgbm90IGhhbmRsZSB0aGUgc3RlcHMoKSB0aW1p
bmcgZnVuY3Rpb24uIEZhbGwgYmFjaworICAgIC8vIHRvIHNvZnR3YXJlIGFuaW1hdGlvbiBpbiB0
aGF0IGNhc2UuCisgICAgaWYgKGFuaW1hdGlvbkhhc1N0ZXBzVGltaW5nRnVuY3Rpb24odmFsdWVM
aXN0LCBhbmltKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYm9vbCBjcmVhdGVkQW5p
bWF0aW9ucyA9IGZhbHNlOworICAgIGlmICh2YWx1ZUxpc3QucHJvcGVydHkoKSA9PSBBbmltYXRl
ZFByb3BlcnR5V2Via2l0VHJhbnNmb3JtKQorICAgICAgICBjcmVhdGVkQW5pbWF0aW9ucyA9IGNy
ZWF0ZVRyYW5zZm9ybUFuaW1hdGlvbnNGcm9tS2V5ZnJhbWVzKHZhbHVlTGlzdCwgYW5pbSwgYW5p
bWF0aW9uTmFtZSwgdGltZU9mZnNldCwgYm94U2l6ZSk7CisgICAgZWxzZQorICAgICAgICBjcmVh
dGVkQW5pbWF0aW9ucyA9IGNyZWF0ZUFuaW1hdGlvbkZyb21LZXlmcmFtZXModmFsdWVMaXN0LCBh
bmltLCBhbmltYXRpb25OYW1lLCB0aW1lT2Zmc2V0KTsKKworICAgIGlmIChjcmVhdGVkQW5pbWF0
aW9ucykKKyAgICAgICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKEFuaW1hdGlvbkNoYW5nZWQp
OworICAgICAgICAKKyAgICByZXR1cm4gY3JlYXRlZEFuaW1hdGlvbnM7Cit9CisKK3ZvaWQgR3Jh
cGhpY3NMYXllckNBOjpwYXVzZUFuaW1hdGlvbihjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUs
IGRvdWJsZSB0aW1lT2Zmc2V0KQoreworICAgIGlmICghYW5pbWF0aW9uSXNSdW5uaW5nKGFuaW1h
dGlvbk5hbWUpKQorICAgICAgICByZXR1cm47CisKKyAgICBBbmltYXRpb25zVG9Qcm9jZXNzTWFw
OjppdGVyYXRvciBpdCA9IG1fYW5pbWF0aW9uc1RvUHJvY2Vzcy5maW5kKGFuaW1hdGlvbk5hbWUp
OworICAgIGlmIChpdCAhPSBtX2FuaW1hdGlvbnNUb1Byb2Nlc3MuZW5kKCkpIHsKKyAgICAgICAg
QW5pbWF0aW9uUHJvY2Vzc2luZ0FjdGlvbiYgcHJvY2Vzc2luZ0luZm8gPSBpdC0+c2Vjb25kOwor
ICAgICAgICAvLyBJZiBhbiBhbmltYXRpb24gaXMgc2NoZWR1bGVkIHRvIGJlIHJlbW92ZWQsIGRv
bid0IGNoYW5nZSB0aGUgcmVtb3ZlIHRvIGEgcGF1c2UuCisgICAgICAgIGlmIChwcm9jZXNzaW5n
SW5mby5hY3Rpb24gIT0gUmVtb3ZlKQorICAgICAgICAgICAgcHJvY2Vzc2luZ0luZm8uYWN0aW9u
ID0gUGF1c2U7CisgICAgfSBlbHNlCisgICAgICAgIG1fYW5pbWF0aW9uc1RvUHJvY2Vzcy5hZGQo
YW5pbWF0aW9uTmFtZSwgQW5pbWF0aW9uUHJvY2Vzc2luZ0FjdGlvbihQYXVzZSwgdGltZU9mZnNl
dCkpOworCisgICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKEFuaW1hdGlvbkNoYW5nZWQpOwor
fQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6cmVtb3ZlQW5pbWF0aW9uKGNvbnN0IFN0cmluZyYg
YW5pbWF0aW9uTmFtZSkKK3sKKyAgICBpZiAoIWFuaW1hdGlvbklzUnVubmluZyhhbmltYXRpb25O
YW1lKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9hbmltYXRpb25zVG9Qcm9jZXNzLmFkZChh
bmltYXRpb25OYW1lLCBBbmltYXRpb25Qcm9jZXNzaW5nQWN0aW9uKFJlbW92ZSkpOworICAgIG5v
dGVMYXllclByb3BlcnR5Q2hhbmdlZChBbmltYXRpb25DaGFuZ2VkKTsKK30KKwordm9pZCBHcmFw
aGljc0xheWVyQ0E6OmFuaW1hdGlvblN0YXJ0ZWQoQ0ZUaW1lSW50ZXJ2YWwgc3RhcnRUaW1lKQor
eworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPm5vdGlmeUFuaW1hdGlvblN0
YXJ0ZWQodGhpcywgc3RhcnRUaW1lKTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldENv
bnRlbnRzVG9JbWFnZShJbWFnZSogaW1hZ2UpCit7CisgICAgaWYgKGltYWdlKSB7CisgICAgICAg
IENHSW1hZ2VSZWYgbmV3SW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUo
KTsKKyAgICAgICAgaWYgKCFuZXdJbWFnZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICAvLyBDaGVjayB0byBzZWUgaWYgdGhlIGltYWdlIGNoYW5nZWQ7IHdlIGhhdmUgdG8gZG8gdGhp
cyBiZWNhdXNlIHRoZSBjYWxsIHRvCisgICAgICAgIC8vIENHSW1hZ2VDcmVhdGVDb3B5V2l0aENv
bG9yU3BhY2UoKSBiZWxvdyBjYW4gY3JlYXRlIGEgbmV3IGltYWdlIGV2ZXJ5IHRpbWUuCisgICAg
ICAgIGlmIChtX3VuY29ycmVjdGVkQ29udGVudHNJbWFnZSAmJiBtX3VuY29ycmVjdGVkQ29udGVu
dHNJbWFnZS5nZXQoKSA9PSBuZXdJbWFnZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
CisgICAgICAgIG1fdW5jb3JyZWN0ZWRDb250ZW50c0ltYWdlID0gbmV3SW1hZ2U7CisgICAgICAg
IG1fcGVuZGluZ0NvbnRlbnRzSW1hZ2UgPSBuZXdJbWFnZTsKKyAgICAgICAgQ0dDb2xvclNwYWNl
UmVmIGNvbG9yU3BhY2UgPSBDR0ltYWdlR2V0Q29sb3JTcGFjZShtX3BlbmRpbmdDb250ZW50c0lt
YWdlLmdldCgpKTsKKworICAgICAgICBzdGF0aWMgQ0dDb2xvclNwYWNlUmVmIGRldmljZVJHQiA9
IENHQ29sb3JTcGFjZUNyZWF0ZURldmljZVJHQigpOworICAgICAgICBpZiAoY29sb3JTcGFjZSAm
JiBDRkVxdWFsKGNvbG9yU3BhY2UsIGRldmljZVJHQikpIHsKKyAgICAgICAgICAgIC8vIENvcmVH
cmFwaGljcyByZW5kZXJzIGltYWdlcyB0YWdnZWQgd2l0aCBEZXZpY2VSR0IgdXNpbmcgdGhlIGNv
bG9yIHNwYWNlIG9mIHRoZSBtYWluIGRpc3BsYXkuIFdoZW4gd2UgaGFuZCBzdWNoCisgICAgICAg
ICAgICAvLyBpbWFnZXMgdG8gQ0Egd2UgbmVlZCB0byB0YWcgdGhlbSBzaW1pbGFybHkgc28gQ0Eg
cmVuZGVyaW5nIG1hdGNoZXMgQ0cgcmVuZGVyaW5nLgorICAgICAgICAgICAgc3RhdGljIENHQ29s
b3JTcGFjZVJlZiBnZW5lcmljUkdCID0gQ0dEaXNwbGF5Q29weUNvbG9yU3BhY2Uoa0NHRGlyZWN0
TWFpbkRpc3BsYXkpOworICAgICAgICAgICAgbV9wZW5kaW5nQ29udGVudHNJbWFnZS5hZG9wdENG
KENHSW1hZ2VDcmVhdGVDb3B5V2l0aENvbG9yU3BhY2UobV9wZW5kaW5nQ29udGVudHNJbWFnZS5n
ZXQoKSwgZ2VuZXJpY1JHQikpOworICAgICAgICB9CisgICAgICAgIG1fY29udGVudHNMYXllclB1
cnBvc2UgPSBDb250ZW50c0xheWVyRm9ySW1hZ2U7CisgICAgICAgIGlmICghbV9jb250ZW50c0xh
eWVyKQorICAgICAgICAgICAgbm90ZVN1YmxheWVyc0NoYW5nZWQoKTsKKyAgICB9IGVsc2Ugewor
ICAgICAgICBtX3VuY29ycmVjdGVkQ29udGVudHNJbWFnZSA9IDA7CisgICAgICAgIG1fcGVuZGlu
Z0NvbnRlbnRzSW1hZ2UgPSAwOworICAgICAgICBtX2NvbnRlbnRzTGF5ZXJQdXJwb3NlID0gTm9D
b250ZW50c0xheWVyOworICAgICAgICBpZiAobV9jb250ZW50c0xheWVyKQorICAgICAgICAgICAg
bm90ZVN1YmxheWVyc0NoYW5nZWQoKTsKKyAgICB9CisKKyAgICBub3RlTGF5ZXJQcm9wZXJ0eUNo
YW5nZWQoQ29udGVudHNJbWFnZUNoYW5nZWQpOworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6
c2V0Q29udGVudHNUb01lZGlhKFBsYXRmb3JtTGF5ZXIqIG1lZGlhTGF5ZXIpCit7CisgICAgaWYg
KG1fY29udGVudHNMYXllciAmJiBtZWRpYUxheWVyID09IG1fY29udGVudHNMYXllci0+cGxhdGZv
cm1MYXllcigpKQorICAgICAgICByZXR1cm47CisgICAgICAgIAorICAgIC8vIENyZWF0ZSB0aGUg
UGxhdGZvcm1DQUxheWVyIHRvIHdyYXAgdGhlIGluY29taW5nIGxheWVyCisgICAgbV9jb250ZW50
c0xheWVyID0gbWVkaWFMYXllciA/IFBsYXRmb3JtQ0FMYXllcjo6Y3JlYXRlKG1lZGlhTGF5ZXIs
IHRoaXMpIDogMDsKKworICAgIG1fY29udGVudHNMYXllclB1cnBvc2UgPSBtZWRpYUxheWVyID8g
Q29udGVudHNMYXllckZvck1lZGlhIDogTm9Db250ZW50c0xheWVyOworCisgICAgbm90ZVN1Ymxh
eWVyc0NoYW5nZWQoKTsKKyAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoQ29udGVudHNNZWRp
YUxheWVyQ2hhbmdlZCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRDb250ZW50c1Rv
Q2FudmFzKFBsYXRmb3JtTGF5ZXIqIGNhbnZhc0xheWVyKQoreworICAgIGlmIChtX2NvbnRlbnRz
TGF5ZXIgJiYgY2FudmFzTGF5ZXIgPT0gbV9jb250ZW50c0xheWVyLT5wbGF0Zm9ybUxheWVyKCkp
CisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICAvLyBDcmVhdGUgdGhlIFBsYXRmb3JtQ0FMYXll
ciB0byB3cmFwIHRoZSBpbmNvbWluZyBsYXllcgorICAgIG1fY29udGVudHNMYXllciA9IGNhbnZh
c0xheWVyID8gUGxhdGZvcm1DQUxheWVyOjpjcmVhdGUoY2FudmFzTGF5ZXIsIHRoaXMpIDogMDsK
KyAgICAKKyAgICBtX2NvbnRlbnRzTGF5ZXJQdXJwb3NlID0gY2FudmFzTGF5ZXIgPyBDb250ZW50
c0xheWVyRm9yQ2FudmFzIDogTm9Db250ZW50c0xheWVyOworCisgICAgbm90ZVN1YmxheWVyc0No
YW5nZWQoKTsKKyAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoQ29udGVudHNDYW52YXNMYXll
ckNoYW5nZWQpOworfQorICAgIAordm9pZCBHcmFwaGljc0xheWVyQ0E6OmRpZERpc3BsYXkoUGxh
dGZvcm1MYXllciogbGF5ZXIpCit7CisgICAgUGxhdGZvcm1DQUxheWVyKiBjdXJyZW50TGF5ZXIg
PSBQbGF0Zm9ybUNBTGF5ZXI6OnBsYXRmb3JtQ0FMYXllcihsYXllcik7CisgICAgUGxhdGZvcm1D
QUxheWVyKiBzb3VyY2VMYXllcjsKKyAgICBMYXllck1hcCogbGF5ZXJDbG9uZU1hcDsKKworICAg
IGlmIChjdXJyZW50TGF5ZXIgPT0gbV9sYXllcikgeworICAgICAgICBzb3VyY2VMYXllciA9IG1f
bGF5ZXIuZ2V0KCk7CisgICAgICAgIGxheWVyQ2xvbmVNYXAgPSBtX2xheWVyQ2xvbmVzLmdldCgp
OworICAgIH0gZWxzZSBpZiAoY3VycmVudExheWVyID09IG1fY29udGVudHNMYXllcikgeworICAg
ICAgICBzb3VyY2VMYXllciA9IG1fY29udGVudHNMYXllci5nZXQoKTsKKyAgICAgICAgbGF5ZXJD
bG9uZU1hcCA9IG1fY29udGVudHNMYXllckNsb25lcy5nZXQoKTsKKyAgICB9IGVsc2UKKyAgICAg
ICAgcmV0dXJuOworCisgICAgaWYgKGxheWVyQ2xvbmVNYXApIHsKKyAgICAgICAgTGF5ZXJNYXA6
OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGxheWVyQ2xvbmVNYXAtPmVuZCgpOworICAgICAgICBmb3Ig
KExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGxheWVyQ2xvbmVNYXAtPmJlZ2luKCk7IGl0
ICE9IGVuZDsgKytpdCkgeworICAgICAgICAgICAgUGxhdGZvcm1DQUxheWVyKiBjdXJyQ2xvbmUg
PSBpdC0+c2Vjb25kLmdldCgpOworICAgICAgICAgICAgaWYgKCFjdXJyQ2xvbmUpCisgICAgICAg
ICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIGlmIChjdXJyQ2xvbmUtPmNvbnRlbnRz
KCkgIT0gc291cmNlTGF5ZXItPmNvbnRlbnRzKCkpCisgICAgICAgICAgICAgICAgY3VyckNsb25l
LT5zZXRDb250ZW50cyhzb3VyY2VMYXllci0+Y29udGVudHMoKSk7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgY3VyckNsb25lLT5zZXRDb250ZW50c0NoYW5nZWQoKTsKKyAgICAg
ICAgfQorICAgIH0KK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnN5bmNDb21wb3NpdGluZ1N0
YXRlKCkKK3sKKyAgICByZWN1cnNpdmVDb21taXRDaGFuZ2VzKCk7Cit9CisKK3ZvaWQgR3JhcGhp
Y3NMYXllckNBOjpzeW5jQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKQoreworICAg
IGNvbW1pdExheWVyQ2hhbmdlc0JlZm9yZVN1YmxheWVycygpOworICAgIGNvbW1pdExheWVyQ2hh
bmdlc0FmdGVyU3VibGF5ZXJzKCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpyZWN1cnNp
dmVDb21taXRDaGFuZ2VzKCkKK3sKKyAgICBjb21taXRMYXllckNoYW5nZXNCZWZvcmVTdWJsYXll
cnMoKTsKKworICAgIGlmIChtX21hc2tMYXllcikKKyAgICAgICAgc3RhdGljX2Nhc3Q8R3JhcGhp
Y3NMYXllckNBKj4obV9tYXNrTGF5ZXIpLT5jb21taXRMYXllckNoYW5nZXNCZWZvcmVTdWJsYXll
cnMoKTsKKworICAgIGNvbnN0IFZlY3RvcjxHcmFwaGljc0xheWVyKj4mIGNoaWxkTGF5ZXJzID0g
Y2hpbGRyZW4oKTsKKyAgICBzaXplX3QgbnVtQ2hpbGRyZW4gPSBjaGlsZExheWVycy5zaXplKCk7
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1DaGlsZHJlbjsgKytpKSB7CisgICAgICAg
IEdyYXBoaWNzTGF5ZXJDQSogY3VyQ2hpbGQgPSBzdGF0aWNfY2FzdDxHcmFwaGljc0xheWVyQ0Eq
PihjaGlsZExheWVyc1tpXSk7CisgICAgICAgIGN1ckNoaWxkLT5yZWN1cnNpdmVDb21taXRDaGFu
Z2VzKCk7CisgICAgfQorCisgICAgaWYgKG1fcmVwbGljYUxheWVyKQorICAgICAgICBzdGF0aWNf
Y2FzdDxHcmFwaGljc0xheWVyQ0EqPihtX3JlcGxpY2FMYXllciktPnJlY3Vyc2l2ZUNvbW1pdENo
YW5nZXMoKTsKKworICAgIGlmIChtX21hc2tMYXllcikKKyAgICAgICAgc3RhdGljX2Nhc3Q8R3Jh
cGhpY3NMYXllckNBKj4obV9tYXNrTGF5ZXIpLT5jb21taXRMYXllckNoYW5nZXNBZnRlclN1Ymxh
eWVycygpOworCisgICAgY29tbWl0TGF5ZXJDaGFuZ2VzQWZ0ZXJTdWJsYXllcnMoKTsKK30KKwor
dm9pZCBHcmFwaGljc0xheWVyQ0E6OmNvbW1pdExheWVyQ2hhbmdlc0JlZm9yZVN1YmxheWVycygp
Cit7CisgICAgaWYgKCFtX3VuY29tbWl0dGVkQ2hhbmdlcykKKyAgICAgICAgcmV0dXJuOworCisg
ICAgLy8gTmVlZCB0byBoYW5kbGUgUHJlc2VydmVzM0RDaGFuZ2VkIGZpcnN0LCBiZWNhdXNlIGl0
IGFmZmVjdHMgd2hpY2ggbGF5ZXJzIHN1YnNlcXVlbnQgcHJvcGVydGllcyBhcmUgYXBwbGllZCB0
bworICAgIGlmIChtX3VuY29tbWl0dGVkQ2hhbmdlcyAmIChQcmVzZXJ2ZXMzRENoYW5nZWQgfCBS
ZXBsaWNhdGVkTGF5ZXJDaGFuZ2VkKSkKKyAgICAgICAgdXBkYXRlU3RydWN0dXJhbExheWVyKCk7
CisKKyAgICBpZiAobV91bmNvbW1pdHRlZENoYW5nZXMgJiBOYW1lQ2hhbmdlZCkKKyAgICAgICAg
dXBkYXRlTGF5ZXJOYW1lcygpOworCisgICAgaWYgKG1fdW5jb21taXR0ZWRDaGFuZ2VzICYgQ29u
dGVudHNJbWFnZUNoYW5nZWQpIC8vIE5lZWRzIHRvIGhhcHBlbiBiZWZvcmUgQ2hpbGRyZW5DaGFu
Z2VkCisgICAgICAgIHVwZGF0ZUNvbnRlbnRzSW1hZ2UoKTsKKyAgICAgICAgCisgICAgaWYgKG1f
dW5jb21taXR0ZWRDaGFuZ2VzICYgQ29udGVudHNNZWRpYUxheWVyQ2hhbmdlZCkgLy8gTmVlZHMg
dG8gaGFwcGVuIGJlZm9yZSBDaGlsZHJlbkNoYW5nZWQKKyAgICAgICAgdXBkYXRlQ29udGVudHNN
ZWRpYUxheWVyKCk7CisgICAgCisgICAgaWYgKG1fdW5jb21taXR0ZWRDaGFuZ2VzICYgQ29udGVu
dHNDYW52YXNMYXllckNoYW5nZWQpIC8vIE5lZWRzIHRvIGhhcHBlbiBiZWZvcmUgQ2hpbGRyZW5D
aGFuZ2VkCisgICAgICAgIHVwZGF0ZUNvbnRlbnRzQ2FudmFzTGF5ZXIoKTsKKyAgICAKKyAgICBp
ZiAobV91bmNvbW1pdHRlZENoYW5nZXMgJiBCYWNrZ3JvdW5kQ29sb3JDaGFuZ2VkKSAvLyBOZWVk
cyB0byBoYXBwZW4gYmVmb3JlIENoaWxkcmVuQ2hhbmdlZCwgYW5kIGFmdGVyIHVwZGF0aW5nIGlt
YWdlIG9yIHZpZGVvCisgICAgICAgIHVwZGF0ZUxheWVyQmFja2dyb3VuZENvbG9yKCk7CisKKyAg
ICBpZiAobV91bmNvbW1pdHRlZENoYW5nZXMgJiBDaGlsZHJlbkNoYW5nZWQpCisgICAgICAgIHVw
ZGF0ZVN1YmxheWVyTGlzdCgpOworCisgICAgaWYgKG1fdW5jb21taXR0ZWRDaGFuZ2VzICYgUG9z
aXRpb25DaGFuZ2VkKQorICAgICAgICB1cGRhdGVMYXllclBvc2l0aW9uKCk7CisgICAgCisgICAg
aWYgKG1fdW5jb21taXR0ZWRDaGFuZ2VzICYgQW5jaG9yUG9pbnRDaGFuZ2VkKQorICAgICAgICB1
cGRhdGVBbmNob3JQb2ludCgpOworICAgIAorICAgIGlmIChtX3VuY29tbWl0dGVkQ2hhbmdlcyAm
IFNpemVDaGFuZ2VkKQorICAgICAgICB1cGRhdGVMYXllclNpemUoKTsKKworICAgIGlmIChtX3Vu
Y29tbWl0dGVkQ2hhbmdlcyAmIFRyYW5zZm9ybUNoYW5nZWQpCisgICAgICAgIHVwZGF0ZVRyYW5z
Zm9ybSgpOworCisgICAgaWYgKG1fdW5jb21taXR0ZWRDaGFuZ2VzICYgQ2hpbGRyZW5UcmFuc2Zv
cm1DaGFuZ2VkKQorICAgICAgICB1cGRhdGVDaGlsZHJlblRyYW5zZm9ybSgpOworICAgIAorICAg
IGlmIChtX3VuY29tbWl0dGVkQ2hhbmdlcyAmIE1hc2tzVG9Cb3VuZHNDaGFuZ2VkKQorICAgICAg
ICB1cGRhdGVNYXNrc1RvQm91bmRzKCk7CisgICAgCisgICAgaWYgKG1fdW5jb21taXR0ZWRDaGFu
Z2VzICYgRHJhd3NDb250ZW50Q2hhbmdlZCkKKyAgICAgICAgdXBkYXRlTGF5ZXJEcmF3c0NvbnRl
bnQoKTsKKworICAgIGlmIChtX3VuY29tbWl0dGVkQ2hhbmdlcyAmIENvbnRlbnRzT3BhcXVlQ2hh
bmdlZCkKKyAgICAgICAgdXBkYXRlQ29udGVudHNPcGFxdWUoKTsKKworICAgIGlmIChtX3VuY29t
bWl0dGVkQ2hhbmdlcyAmIEJhY2tmYWNlVmlzaWJpbGl0eUNoYW5nZWQpCisgICAgICAgIHVwZGF0
ZUJhY2tmYWNlVmlzaWJpbGl0eSgpOworCisgICAgaWYgKG1fdW5jb21taXR0ZWRDaGFuZ2VzICYg
T3BhY2l0eUNoYW5nZWQpCisgICAgICAgIHVwZGF0ZU9wYWNpdHlPbkxheWVyKCk7CisgICAgCisg
ICAgaWYgKG1fdW5jb21taXR0ZWRDaGFuZ2VzICYgQW5pbWF0aW9uQ2hhbmdlZCkKKyAgICAgICAg
dXBkYXRlTGF5ZXJBbmltYXRpb25zKCk7CisgICAgCisgICAgaWYgKG1fdW5jb21taXR0ZWRDaGFu
Z2VzICYgRGlydHlSZWN0c0NoYW5nZWQpCisgICAgICAgIHJlcGFpbnRMYXllckRpcnR5UmVjdHMo
KTsKKyAgICAKKyAgICBpZiAobV91bmNvbW1pdHRlZENoYW5nZXMgJiBDb250ZW50c1JlY3RDaGFu
Z2VkKQorICAgICAgICB1cGRhdGVDb250ZW50c1JlY3QoKTsKKworICAgIGlmIChtX3VuY29tbWl0
dGVkQ2hhbmdlcyAmIE1hc2tMYXllckNoYW5nZWQpCisgICAgICAgIHVwZGF0ZU1hc2tMYXllcigp
OworCisgICAgaWYgKG1fdW5jb21taXR0ZWRDaGFuZ2VzICYgQ29udGVudHNOZWVkc0Rpc3BsYXkp
CisgICAgICAgIHVwZGF0ZUNvbnRlbnRzTmVlZHNEaXNwbGF5KCk7Cit9CisKK3ZvaWQgR3JhcGhp
Y3NMYXllckNBOjpjb21taXRMYXllckNoYW5nZXNBZnRlclN1YmxheWVycygpCit7CisgICAgaWYg
KCFtX3VuY29tbWl0dGVkQ2hhbmdlcykKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fdW5j
b21taXR0ZWRDaGFuZ2VzICYgUmVwbGljYXRlZExheWVyQ2hhbmdlZCkKKyAgICAgICAgdXBkYXRl
UmVwbGljYXRlZExheWVycygpOworCisgICAgbV91bmNvbW1pdHRlZENoYW5nZXMgPSBOb0NoYW5n
ZTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUxheWVyTmFtZXMoKQoreworICAg
IHN3aXRjaCAoc3RydWN0dXJhbExheWVyUHVycG9zZSgpKSB7CisgICAgY2FzZSBTdHJ1Y3R1cmFs
TGF5ZXJGb3JQcmVzZXJ2ZXMzRDoKKyAgICAgICAgbV9zdHJ1Y3R1cmFsTGF5ZXItPnNldE5hbWUo
IlRyYW5zZm9ybSBsYXllciAiICsgbmFtZSgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBT
dHJ1Y3R1cmFsTGF5ZXJGb3JSZXBsaWNhRmxhdHRlbmluZzoKKyAgICAgICAgbV9zdHJ1Y3R1cmFs
TGF5ZXItPnNldE5hbWUoIlJlcGxpY2EgZmxhdHRlbmluZyBsYXllciAiICsgbmFtZSgpKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBOb1N0cnVjdHVyYWxMYXllcjoKKyAgICAgICAgYnJlYWs7
CisgICAgfQorICAgIG1fbGF5ZXItPnNldE5hbWUobmFtZSgpKTsKK30KKwordm9pZCBHcmFwaGlj
c0xheWVyQ0E6OnVwZGF0ZVN1YmxheWVyTGlzdCgpCit7CisgICAgUGxhdGZvcm1DQUxheWVyTGlz
dCBuZXdTdWJsYXllcnM7CisgICAgY29uc3QgVmVjdG9yPEdyYXBoaWNzTGF5ZXIqPiYgY2hpbGRM
YXllcnMgPSBjaGlsZHJlbigpOworCisgICAgaWYgKG1fc3RydWN0dXJhbExheWVyIHx8IG1fY29u
dGVudHNMYXllciB8fCBjaGlsZExheWVycy5zaXplKCkgPiAwKSB7CisgICAgICAgIGlmIChtX3N0
cnVjdHVyYWxMYXllcikgeworICAgICAgICAgICAgLy8gQWRkIHRoZSByZXBsaWNhIGxheWVyIGZp
cnN0LgorICAgICAgICAgICAgaWYgKG1fcmVwbGljYUxheWVyKQorICAgICAgICAgICAgICAgIG5l
d1N1YmxheWVycy5hcHBlbmQoc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllckNBKj4obV9yZXBsaWNh
TGF5ZXIpLT5wcmltYXJ5TGF5ZXIoKSk7CisgICAgICAgICAgICAvLyBBZGQgdGhlIHByaW1hcnkg
bGF5ZXIuIEV2ZW4gaWYgd2UgaGF2ZSBuZWdhdGl2ZSB6LW9yZGVyIGNoaWxkcmVuLCB0aGUgcHJp
bWFyeSBsYXllciBhbHdheXMgY29tZXMgYmVoaW5kLgorICAgICAgICAgICAgbmV3U3VibGF5ZXJz
LmFwcGVuZChtX2xheWVyKTsKKyAgICAgICAgfSBlbHNlIGlmIChtX2NvbnRlbnRzTGF5ZXIpIHsK
KyAgICAgICAgICAgIC8vIEZJWE1FOiBhZGQgdGhlIGNvbnRlbnRzIGxheWVyIGluIHRoZSBjb3Jy
ZWN0IG9yZGVyIHdpdGggbmVnYXRpdmUgei1vcmRlciBjaGlsZHJlbi4KKyAgICAgICAgICAgIC8v
IFRoaXMgZG9lcyBub3QgY2F1c2UgdmlzaWJsZSByZW5kZXJpbmcgaXNzdWVzIGJlY2F1c2UgY3Vy
cmVudGx5IGNvbnRlbnRzIGxheWVycyBhcmUgb25seSB1c2VkCisgICAgICAgICAgICAvLyBmb3Ig
cmVwbGFjZWQgZWxlbWVudHMgdGhhdCBkb24ndCBoYXZlIGNoaWxkcmVuLgorICAgICAgICAgICAg
bmV3U3VibGF5ZXJzLmFwcGVuZChtX2NvbnRlbnRzTGF5ZXIpOworICAgICAgICB9CisgICAgICAg
IAorICAgICAgICBzaXplX3QgbnVtQ2hpbGRyZW4gPSBjaGlsZExheWVycy5zaXplKCk7CisgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtQ2hpbGRyZW47ICsraSkgeworICAgICAgICAg
ICAgR3JhcGhpY3NMYXllckNBKiBjdXJDaGlsZCA9IHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXJD
QSo+KGNoaWxkTGF5ZXJzW2ldKTsKKyAgICAgICAgICAgIFBsYXRmb3JtQ0FMYXllciogY2hpbGRM
YXllciA9IGN1ckNoaWxkLT5sYXllckZvclN1cGVybGF5ZXIoKTsKKyAgICAgICAgICAgIG5ld1N1
YmxheWVycy5hcHBlbmQoY2hpbGRMYXllcik7CisgICAgICAgIH0KKworICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG5ld1N1YmxheWVycy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIG5l
d1N1YmxheWVyc1tpXS0+cmVtb3ZlRnJvbVN1cGVybGF5ZXIoKTsKKyAgICB9CisKKyAgICBpZiAo
bV9zdHJ1Y3R1cmFsTGF5ZXIpIHsKKyAgICAgICAgbV9zdHJ1Y3R1cmFsTGF5ZXItPnNldFN1Ymxh
eWVycyhuZXdTdWJsYXllcnMpOworCisgICAgICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIpIHsKKyAg
ICAgICAgICAgIC8vIElmIHdlIGhhdmUgYSB0cmFuc2Zvcm0gbGF5ZXIsIHRoZW4gdGhlIGNvbnRl
bnRzIGxheWVyIGlzIHBhcmVudGVkIGluIHRoZSAKKyAgICAgICAgICAgIC8vIHByaW1hcnkgbGF5
ZXIgKHdoaWNoIGlzIGl0c2VsZiBhIGNoaWxkIG9mIHRoZSB0cmFuc2Zvcm0gbGF5ZXIpLgorICAg
ICAgICAgICAgbV9sYXllci0+cmVtb3ZlQWxsU3VibGF5ZXJzKCk7CisgICAgICAgICAgICBtX2xh
eWVyLT5hcHBlbmRTdWJsYXllcihtX2NvbnRlbnRzTGF5ZXIuZ2V0KCkpOworICAgICAgICB9Cisg
ICAgfSBlbHNlCisgICAgICAgIG1fbGF5ZXItPnNldFN1YmxheWVycyhuZXdTdWJsYXllcnMpOwor
fQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlTGF5ZXJQb3NpdGlvbigpCit7CisgICAg
RmxvYXRTaXplIHVzZWRTaXplID0gbV91c2luZ1RpbGVkTGF5ZXIgPyBjb25zdHJhaW5lZFNpemUo
KSA6IG1fc2l6ZTsKKworICAgIC8vIFBvc2l0aW9uIGlzIG9mZnNldCBvbiB0aGUgbGF5ZXIgYnkg
dGhlIGxheWVyIGFuY2hvciBwb2ludC4KKyAgICBGbG9hdFBvaW50IHBvc1BvaW50KG1fcG9zaXRp
b24ueCgpICsgbV9hbmNob3JQb2ludC54KCkgKiB1c2VkU2l6ZS53aWR0aCgpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICBtX3Bvc2l0aW9uLnkoKSArIG1fYW5jaG9yUG9pbnQueSgpICogdXNl
ZFNpemUuaGVpZ2h0KCkpOworICAgIAorICAgIHByaW1hcnlMYXllcigpLT5zZXRQb3NpdGlvbihw
b3NQb2ludCk7CisKKyAgICBpZiAoTGF5ZXJNYXAqIGxheWVyQ2xvbmVNYXAgPSBwcmltYXJ5TGF5
ZXJDbG9uZXMoKSkgeworICAgICAgICBMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbGF5
ZXJDbG9uZU1hcC0+ZW5kKCk7CisgICAgICAgIGZvciAoTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9y
IGl0ID0gbGF5ZXJDbG9uZU1hcC0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAg
ICAgICBGbG9hdFBvaW50IGNsb25lUG9zaXRpb24gPSBwb3NQb2ludDsKKyAgICAgICAgICAgIGlm
IChtX3JlcGxpY2FMYXllciAmJiBpc1JlcGxpY2F0ZWRSb290Q2xvbmUoaXQtPmZpcnN0KSkgewor
ICAgICAgICAgICAgICAgIC8vIE1haW50YWluIHRoZSBzcGVjaWFsLWNhc2UgcG9zaXRpb24gZm9y
IHRoZSByb290IG9mIGEgY2xvbmUgc3VidHJlZSwKKyAgICAgICAgICAgICAgICAvLyB3aGljaCB3
ZSBzZXQgdXAgaW4gcmVwbGljYXRlZExheWVyUm9vdCgpLgorICAgICAgICAgICAgICAgIGNsb25l
UG9zaXRpb24gPSBwb3NpdGlvbkZvckNsb25lUm9vdExheWVyKCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBpdC0+c2Vjb25kLT5zZXRQb3NpdGlvbihjbG9uZVBvc2l0aW9uKTsKKyAgICAg
ICAgfQorICAgIH0KK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUxheWVyU2l6ZSgp
Cit7CisgICAgRmxvYXRSZWN0IHJlY3QoMCwgMCwgbV9zaXplLndpZHRoKCksIG1fc2l6ZS5oZWln
aHQoKSk7CisgICAgaWYgKG1fc3RydWN0dXJhbExheWVyKSB7CisgICAgICAgIG1fc3RydWN0dXJh
bExheWVyLT5zZXRCb3VuZHMocmVjdCk7CisgICAgICAgIAorICAgICAgICBpZiAoTGF5ZXJNYXAq
IGxheWVyQ2xvbmVNYXAgPSBtX3N0cnVjdHVyYWxMYXllckNsb25lcy5nZXQoKSkgeworICAgICAg
ICAgICAgTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGxheWVyQ2xvbmVNYXAtPmVuZCgp
OworICAgICAgICAgICAgZm9yIChMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBsYXllckNs
b25lTWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgICAgICAgICAgaXQtPnNl
Y29uZC0+c2V0Qm91bmRzKHJlY3QpOworICAgICAgICB9CisKKyAgICAgICAgLy8gVGhlIGFuY2hv
ciBvZiB0aGUgY29udGVudHMgbGF5ZXIgaXMgYWx3YXlzIGF0IDAuNSwgMC41LCBzbyB0aGUgcG9z
aXRpb24gaXMgY2VudGVyLXJlbGF0aXZlLgorICAgICAgICBDR1BvaW50IGNlbnRlclBvaW50ID0g
Q0dQb2ludE1ha2UobV9zaXplLndpZHRoKCkgLyAyLjBmLCBtX3NpemUuaGVpZ2h0KCkgLyAyLjBm
KTsKKyAgICAgICAgbV9sYXllci0+c2V0UG9zaXRpb24oY2VudGVyUG9pbnQpOworCisgICAgICAg
IGlmIChMYXllck1hcCogbGF5ZXJDbG9uZU1hcCA9IG1fbGF5ZXJDbG9uZXMuZ2V0KCkpIHsKKyAg
ICAgICAgICAgIExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBsYXllckNsb25lTWFwLT5l
bmQoKTsKKyAgICAgICAgICAgIGZvciAoTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbGF5
ZXJDbG9uZU1hcC0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICAgICAgICAgIGl0
LT5zZWNvbmQtPnNldFBvc2l0aW9uKGNlbnRlclBvaW50KTsKKyAgICAgICAgfQorICAgIH0KKyAg
ICAKKyAgICBib29sIG5lZWRUaWxlZExheWVyID0gcmVxdWlyZXNUaWxlZExheWVyKG1fc2l6ZSk7
CisgICAgaWYgKG5lZWRUaWxlZExheWVyICE9IG1fdXNpbmdUaWxlZExheWVyKQorICAgICAgICBz
d2FwRnJvbU9yVG9UaWxlZExheWVyKG5lZWRUaWxlZExheWVyKTsKKyAgICAKKyAgICBpZiAobV91
c2luZ1RpbGVkTGF5ZXIpIHsKKyAgICAgICAgRmxvYXRTaXplIHNpemVUb1VzZSA9IGNvbnN0cmFp
bmVkU2l6ZSgpOworICAgICAgICByZWN0ID0gQ0dSZWN0TWFrZSgwLCAwLCBzaXplVG9Vc2Uud2lk
dGgoKSwgc2l6ZVRvVXNlLmhlaWdodCgpKTsKKyAgICB9CisgICAgCisgICAgbV9sYXllci0+c2V0
Qm91bmRzKHJlY3QpOworICAgIGlmIChMYXllck1hcCogbGF5ZXJDbG9uZU1hcCA9IG1fbGF5ZXJD
bG9uZXMuZ2V0KCkpIHsKKyAgICAgICAgTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGxh
eWVyQ2xvbmVNYXAtPmVuZCgpOworICAgICAgICBmb3IgKExheWVyTWFwOjpjb25zdF9pdGVyYXRv
ciBpdCA9IGxheWVyQ2xvbmVNYXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAg
ICAgIGl0LT5zZWNvbmQtPnNldEJvdW5kcyhyZWN0KTsKKyAgICB9CisgICAgCisgICAgLy8gQ29u
dGVudHMgdHJhbnNmb3JtIG1heSBkZXBlbmQgb24gaGVpZ2h0LgorICAgIHVwZGF0ZUNvbnRlbnRz
VHJhbnNmb3JtKCk7CisKKyAgICAvLyBOb3RlIHRoYXQgd2UgZG9uJ3QgcmVzaXplIG1fY29udGVu
dHNMYXllci4gSXQncyB1cCB0aGUgY2FsbGVyIHRvIGRvIHRoYXQuCisKKyAgICAvLyBpZiB3ZSd2
ZSBjaGFuZ2VkIHRoZSBib3VuZHMsIHdlIG5lZWQgdG8gcmVjYWxjdWxhdGUgdGhlIHBvc2l0aW9u
CisgICAgLy8gb2YgdGhlIGxheWVyLCB0YWtpbmcgYW5jaG9yIHBvaW50IGludG8gYWNjb3VudC4K
KyAgICB1cGRhdGVMYXllclBvc2l0aW9uKCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjp1
cGRhdGVBbmNob3JQb2ludCgpCit7CisgICAgcHJpbWFyeUxheWVyKCktPnNldEFuY2hvclBvaW50
KG1fYW5jaG9yUG9pbnQpOworCisgICAgaWYgKExheWVyTWFwKiBsYXllckNsb25lTWFwID0gcHJp
bWFyeUxheWVyQ2xvbmVzKCkpIHsKKyAgICAgICAgTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVu
ZCA9IGxheWVyQ2xvbmVNYXAtPmVuZCgpOworICAgICAgICBmb3IgKExheWVyTWFwOjpjb25zdF9p
dGVyYXRvciBpdCA9IGxheWVyQ2xvbmVNYXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeyAg
IAorICAgICAgICAgICAgUGxhdGZvcm1DQUxheWVyKiBjdXJyTGF5ZXIgPSBpdC0+c2Vjb25kLmdl
dCgpOworICAgICAgICAgICAgY3VyckxheWVyLT5zZXRBbmNob3JQb2ludChtX2FuY2hvclBvaW50
KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHVwZGF0ZUxheWVyUG9zaXRpb24oKTsKK30KKwor
dm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZVRyYW5zZm9ybSgpCit7CisgICAgcHJpbWFyeUxh
eWVyKCktPnNldFRyYW5zZm9ybShtX3RyYW5zZm9ybSk7CisKKyAgICBpZiAoTGF5ZXJNYXAqIGxh
eWVyQ2xvbmVNYXAgPSBwcmltYXJ5TGF5ZXJDbG9uZXMoKSkgeworICAgICAgICBMYXllck1hcDo6
Y29uc3RfaXRlcmF0b3IgZW5kID0gbGF5ZXJDbG9uZU1hcC0+ZW5kKCk7CisgICAgICAgIGZvciAo
TGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbGF5ZXJDbG9uZU1hcC0+YmVnaW4oKTsgaXQg
IT0gZW5kOyArK2l0KSB7CisgICAgICAgICAgICBQbGF0Zm9ybUNBTGF5ZXIqIGN1cnJMYXllciA9
IGl0LT5zZWNvbmQuZ2V0KCk7CisgICAgICAgICAgICBpZiAobV9yZXBsaWNhTGF5ZXIgJiYgaXNS
ZXBsaWNhdGVkUm9vdENsb25lKGl0LT5maXJzdCkpIHsKKyAgICAgICAgICAgICAgICAvLyBNYWlu
dGFpbiB0aGUgc3BlY2lhbC1jYXNlIHRyYW5zZm9ybSBmb3IgdGhlIHJvb3Qgb2YgYSBjbG9uZSBz
dWJ0cmVlLAorICAgICAgICAgICAgICAgIC8vIHdoaWNoIHdlIHNldCB1cCBpbiByZXBsaWNhdGVk
TGF5ZXJSb290KCkuCisgICAgICAgICAgICAgICAgY3VyckxheWVyLT5zZXRUcmFuc2Zvcm0oVHJh
bnNmb3JtYXRpb25NYXRyaXgoKSk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAg
ICBjdXJyTGF5ZXItPnNldFRyYW5zZm9ybShtX3RyYW5zZm9ybSk7CisgICAgICAgIH0KKyAgICB9
Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjp1cGRhdGVDaGlsZHJlblRyYW5zZm9ybSgpCit7
CisgICAgcHJpbWFyeUxheWVyKCktPnNldFN1YmxheWVyVHJhbnNmb3JtKG1fY2hpbGRyZW5UcmFu
c2Zvcm0pOworCisgICAgaWYgKExheWVyTWFwKiBsYXllckNsb25lTWFwID0gcHJpbWFyeUxheWVy
Q2xvbmVzKCkpIHsKKyAgICAgICAgTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGxheWVy
Q2xvbmVNYXAtPmVuZCgpOworICAgICAgICBmb3IgKExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBp
dCA9IGxheWVyQ2xvbmVNYXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgICAg
IGl0LT5zZWNvbmQtPnNldFN1YmxheWVyVHJhbnNmb3JtKG1fY2hpbGRyZW5UcmFuc2Zvcm0pOwor
ICAgIH0KK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZU1hc2tzVG9Cb3VuZHMoKQor
eworICAgIG1fbGF5ZXItPnNldE1hc2tzVG9Cb3VuZHMobV9tYXNrc1RvQm91bmRzKTsKKworICAg
IGlmIChMYXllck1hcCogbGF5ZXJDbG9uZU1hcCA9IG1fbGF5ZXJDbG9uZXMuZ2V0KCkpIHsKKyAg
ICAgICAgTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGxheWVyQ2xvbmVNYXAtPmVuZCgp
OworICAgICAgICBmb3IgKExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGxheWVyQ2xvbmVN
YXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgICAgIGl0LT5zZWNvbmQtPnNl
dE1hc2tzVG9Cb3VuZHMobV9tYXNrc1RvQm91bmRzKTsKKyAgICB9CisKKyAgICB1cGRhdGVEZWJ1
Z0luZGljYXRvcnMoKTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUNvbnRlbnRz
T3BhcXVlKCkKK3sKKyAgICBtX2xheWVyLmdldCgpLT5zZXRPcGFxdWUobV9jb250ZW50c09wYXF1
ZSk7CisKKyAgICBpZiAoTGF5ZXJNYXAqIGxheWVyQ2xvbmVNYXAgPSBtX2xheWVyQ2xvbmVzLmdl
dCgpKSB7CisgICAgICAgIExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBsYXllckNsb25l
TWFwLT5lbmQoKTsKKyAgICAgICAgZm9yIChMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBs
YXllckNsb25lTWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgICAgICBpdC0+
c2Vjb25kLT5zZXRPcGFxdWUobV9jb250ZW50c09wYXF1ZSk7CisgICAgfQorfQorCit2b2lkIEdy
YXBoaWNzTGF5ZXJDQTo6dXBkYXRlQmFja2ZhY2VWaXNpYmlsaXR5KCkKK3sKKyAgICBpZiAobV9z
dHJ1Y3R1cmFsTGF5ZXIgJiYgc3RydWN0dXJhbExheWVyUHVycG9zZSgpID09IFN0cnVjdHVyYWxM
YXllckZvclJlcGxpY2FGbGF0dGVuaW5nKSB7CisgICAgICAgIG1fc3RydWN0dXJhbExheWVyLT5z
ZXREb3VibGVTaWRlZChtX2JhY2tmYWNlVmlzaWJpbGl0eSk7CisKKyAgICAgICAgaWYgKExheWVy
TWFwKiBsYXllckNsb25lTWFwID0gbV9zdHJ1Y3R1cmFsTGF5ZXJDbG9uZXMuZ2V0KCkpIHsKKyAg
ICAgICAgICAgIExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBsYXllckNsb25lTWFwLT5l
bmQoKTsKKyAgICAgICAgICAgIGZvciAoTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbGF5
ZXJDbG9uZU1hcC0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICAgICAgICAgIGl0
LT5zZWNvbmQtPnNldERvdWJsZVNpZGVkKG1fYmFja2ZhY2VWaXNpYmlsaXR5KTsKKyAgICAgICAg
fQorICAgIH0KKworICAgIG1fbGF5ZXItPnNldERvdWJsZVNpZGVkKG1fYmFja2ZhY2VWaXNpYmls
aXR5KTsKKworICAgIGlmIChMYXllck1hcCogbGF5ZXJDbG9uZU1hcCA9IG1fbGF5ZXJDbG9uZXMu
Z2V0KCkpIHsKKyAgICAgICAgTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGxheWVyQ2xv
bmVNYXAtPmVuZCgpOworICAgICAgICBmb3IgKExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9
IGxheWVyQ2xvbmVNYXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgICAgIGl0
LT5zZWNvbmQtPnNldERvdWJsZVNpZGVkKG1fYmFja2ZhY2VWaXNpYmlsaXR5KTsKKyAgICB9Cit9
CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjp1cGRhdGVTdHJ1Y3R1cmFsTGF5ZXIoKQoreworICAg
IGVuc3VyZVN0cnVjdHVyYWxMYXllcihzdHJ1Y3R1cmFsTGF5ZXJQdXJwb3NlKCkpOworfQorCit2
b2lkIEdyYXBoaWNzTGF5ZXJDQTo6ZW5zdXJlU3RydWN0dXJhbExheWVyKFN0cnVjdHVyYWxMYXll
clB1cnBvc2UgcHVycG9zZSkKK3sKKyAgICBpZiAocHVycG9zZSA9PSBOb1N0cnVjdHVyYWxMYXll
cikgeworICAgICAgICBpZiAobV9zdHJ1Y3R1cmFsTGF5ZXIpIHsKKyAgICAgICAgICAgIC8vIFJl
cGxhY2UgdGhlIHRyYW5zZm9ybUxheWVyIGluIHRoZSBwYXJlbnQgd2l0aCB0aGlzIGxheWVyLgor
ICAgICAgICAgICAgbV9sYXllci0+cmVtb3ZlRnJvbVN1cGVybGF5ZXIoKTsKKyAgICAgICAgICAg
IG1fc3RydWN0dXJhbExheWVyLT5zdXBlcmxheWVyKCktPnJlcGxhY2VTdWJsYXllcihtX3N0cnVj
dHVyYWxMYXllci5nZXQoKSwgbV9sYXllci5nZXQoKSk7CisKKyAgICAgICAgICAgIG1vdmVPckNv
cHlBbmltYXRpb25zRm9yUHJvcGVydHkoTW92ZSwgQW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdFRyYW5z
Zm9ybSwgbV9zdHJ1Y3R1cmFsTGF5ZXIuZ2V0KCksIG1fbGF5ZXIuZ2V0KCkpOworICAgICAgICAg
ICAgbW92ZU9yQ29weUFuaW1hdGlvbnNGb3JQcm9wZXJ0eShNb3ZlLCBBbmltYXRlZFByb3BlcnR5
T3BhY2l0eSwgbV9zdHJ1Y3R1cmFsTGF5ZXIuZ2V0KCksIG1fbGF5ZXIuZ2V0KCkpOworCisgICAg
ICAgICAgICAvLyBSZWxlYXNlIHRoZSBzdHJ1Y3R1cmFsIGxheWVyLgorICAgICAgICAgICAgbV9z
dHJ1Y3R1cmFsTGF5ZXIgPSAwOworCisgICAgICAgICAgICAvLyBVcGRhdGUgdGhlIHByb3BlcnRp
ZXMgb2YgbV9sYXllciBub3cgdGhhdCB3ZSBubyBsb25nZXIgaGF2ZSBhIHN0cnVjdHVyYWwgbGF5
ZXIuCisgICAgICAgICAgICB1cGRhdGVMYXllclBvc2l0aW9uKCk7CisgICAgICAgICAgICB1cGRh
dGVMYXllclNpemUoKTsKKyAgICAgICAgICAgIHVwZGF0ZUFuY2hvclBvaW50KCk7CisgICAgICAg
ICAgICB1cGRhdGVUcmFuc2Zvcm0oKTsKKyAgICAgICAgICAgIHVwZGF0ZUNoaWxkcmVuVHJhbnNm
b3JtKCk7CisKKyAgICAgICAgICAgIHVwZGF0ZVN1YmxheWVyTGlzdCgpOworICAgICAgICAgICAg
dXBkYXRlT3BhY2l0eU9uTGF5ZXIoKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm47CisgICAg
fQorICAgIAorICAgIGJvb2wgc3RydWN0dXJhbExheWVyQ2hhbmdlZCA9IGZhbHNlOworICAgIAor
ICAgIGlmIChwdXJwb3NlID09IFN0cnVjdHVyYWxMYXllckZvclByZXNlcnZlczNEKSB7CisgICAg
ICAgIGlmIChtX3N0cnVjdHVyYWxMYXllciAmJiBtX3N0cnVjdHVyYWxMYXllci0+bGF5ZXJUeXBl
KCkgIT0gUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVUcmFuc2Zvcm1MYXllcikKKyAgICAgICAg
ICAgIG1fc3RydWN0dXJhbExheWVyID0gMDsKKyAgICAgICAgCisgICAgICAgIGlmICghbV9zdHJ1
Y3R1cmFsTGF5ZXIpIHsKKyAgICAgICAgICAgIG1fc3RydWN0dXJhbExheWVyID0gUGxhdGZvcm1D
QUxheWVyOjpjcmVhdGUoUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVUcmFuc2Zvcm1MYXllciwg
dGhpcyk7CisgICAgICAgICAgICBzdHJ1Y3R1cmFsTGF5ZXJDaGFuZ2VkID0gdHJ1ZTsKKyAgICAg
ICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChtX3N0cnVjdHVyYWxMYXllciAmJiBtX3N0
cnVjdHVyYWxMYXllci0+bGF5ZXJUeXBlKCkgIT0gUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVM
YXllcikKKyAgICAgICAgICAgIG1fc3RydWN0dXJhbExheWVyID0gMDsKKworICAgICAgICBpZiAo
IW1fc3RydWN0dXJhbExheWVyKSB7CisgICAgICAgICAgICBtX3N0cnVjdHVyYWxMYXllciA9IFBs
YXRmb3JtQ0FMYXllcjo6Y3JlYXRlKFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlTGF5ZXIsIHRo
aXMpOworICAgICAgICAgICAgc3RydWN0dXJhbExheWVyQ2hhbmdlZCA9IHRydWU7CisgICAgICAg
IH0KKyAgICB9CisgICAgCisgICAgaWYgKCFzdHJ1Y3R1cmFsTGF5ZXJDaGFuZ2VkKQorICAgICAg
ICByZXR1cm47CisgICAgCisgICAgdXBkYXRlTGF5ZXJOYW1lcygpOworCisgICAgLy8gVXBkYXRl
IHRoZSBwcm9wZXJ0aWVzIG9mIHRoZSBzdHJ1Y3R1cmFsIGxheWVyLgorICAgIHVwZGF0ZUxheWVy
UG9zaXRpb24oKTsKKyAgICB1cGRhdGVMYXllclNpemUoKTsKKyAgICB1cGRhdGVBbmNob3JQb2lu
dCgpOworICAgIHVwZGF0ZVRyYW5zZm9ybSgpOworICAgIHVwZGF0ZUNoaWxkcmVuVHJhbnNmb3Jt
KCk7CisgICAgdXBkYXRlQmFja2ZhY2VWaXNpYmlsaXR5KCk7CisgICAgCisgICAgLy8gU2V0IHBy
b3BlcnRpZXMgb2YgbV9sYXllciB0byB0aGVpciBkZWZhdWx0IHZhbHVlcywgc2luY2UgdGhlc2Ug
YXJlIGV4cHJlc3NlZCBvbiBvbiB0aGUgc3RydWN0dXJhbCBsYXllci4KKyAgICBGbG9hdFBvaW50
IHBvaW50KG1fc2l6ZS53aWR0aCgpIC8gMi4wZiwgbV9zaXplLmhlaWdodCgpIC8gMi4wZik7Cisg
ICAgbV9sYXllci0+c2V0UG9zaXRpb24ocG9pbnQpOworICAgIG1fbGF5ZXItPnNldEFuY2hvclBv
aW50KEZsb2F0UG9pbnQzRCgwLjVmLCAwLjVmLCAwKSk7CisgICAgbV9sYXllci0+c2V0VHJhbnNm
b3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpOworICAgIG1fbGF5ZXItPnNldE9wYWNpdHkoMSk7
CisKKyAgICAvLyBNb3ZlIHRoaXMgbGF5ZXIgdG8gYmUgYSBjaGlsZCBvZiB0aGUgdHJhbnNmb3Jt
IGxheWVyLgorICAgIG1fbGF5ZXItPnN1cGVybGF5ZXIoKS0+cmVwbGFjZVN1YmxheWVyKG1fbGF5
ZXIuZ2V0KCksIG1fc3RydWN0dXJhbExheWVyLmdldCgpKTsKKyAgICBtX3N0cnVjdHVyYWxMYXll
ci0+YXBwZW5kU3VibGF5ZXIobV9sYXllci5nZXQoKSk7CisKKyAgICBtb3ZlT3JDb3B5QW5pbWF0
aW9uc0ZvclByb3BlcnR5KE1vdmUsIEFuaW1hdGVkUHJvcGVydHlXZWJraXRUcmFuc2Zvcm0sIG1f
bGF5ZXIuZ2V0KCksIG1fc3RydWN0dXJhbExheWVyLmdldCgpKTsKKyAgICBtb3ZlT3JDb3B5QW5p
bWF0aW9uc0ZvclByb3BlcnR5KE1vdmUsIEFuaW1hdGVkUHJvcGVydHlPcGFjaXR5LCBtX2xheWVy
LmdldCgpLCBtX3N0cnVjdHVyYWxMYXllci5nZXQoKSk7CisgICAgCisgICAgdXBkYXRlU3VibGF5
ZXJMaXN0KCk7CisgICAgdXBkYXRlT3BhY2l0eU9uTGF5ZXIoKTsKK30KKworR3JhcGhpY3NMYXll
ckNBOjpTdHJ1Y3R1cmFsTGF5ZXJQdXJwb3NlIEdyYXBoaWNzTGF5ZXJDQTo6c3RydWN0dXJhbExh
eWVyUHVycG9zZSgpIGNvbnN0Cit7CisgICAgaWYgKHByZXNlcnZlczNEKCkpCisgICAgICAgIHJl
dHVybiBTdHJ1Y3R1cmFsTGF5ZXJGb3JQcmVzZXJ2ZXMzRDsKKyAgICAKKyAgICBpZiAoaXNSZXBs
aWNhdGVkKCkpCisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmFsTGF5ZXJGb3JSZXBsaWNhRmxhdHRl
bmluZzsKKyAgICAKKyAgICByZXR1cm4gTm9TdHJ1Y3R1cmFsTGF5ZXI7Cit9CisKK3ZvaWQgR3Jh
cGhpY3NMYXllckNBOjp1cGRhdGVMYXllckRyYXdzQ29udGVudCgpCit7CisgICAgYm9vbCBuZWVk
VGlsZWRMYXllciA9IHJlcXVpcmVzVGlsZWRMYXllcihtX3NpemUpOworICAgIGlmIChuZWVkVGls
ZWRMYXllciAhPSBtX3VzaW5nVGlsZWRMYXllcikKKyAgICAgICAgc3dhcEZyb21PclRvVGlsZWRM
YXllcihuZWVkVGlsZWRMYXllcik7CisKKyAgICBpZiAobV9kcmF3c0NvbnRlbnQpCisgICAgICAg
IG1fbGF5ZXItPnNldE5lZWRzRGlzcGxheSgpOworICAgIGVsc2UKKyAgICAgICAgbV9sYXllci0+
c2V0Q29udGVudHMoMCk7CisKKyAgICB1cGRhdGVEZWJ1Z0luZGljYXRvcnMoKTsKK30KKwordm9p
ZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUxheWVyQmFja2dyb3VuZENvbG9yKCkKK3sKKyAgICBp
ZiAoIW1fY29udGVudHNMYXllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gV2UgbmV2ZXIg
Y3JlYXRlIHRoZSBjb250ZW50cyBsYXllciBqdXN0IGZvciBiYWNrZ3JvdW5kIGNvbG9yIHlldC4K
KyAgICBpZiAobV9iYWNrZ3JvdW5kQ29sb3JTZXQpCisgICAgICAgIG1fY29udGVudHNMYXllci0+
c2V0QmFja2dyb3VuZENvbG9yKG1fYmFja2dyb3VuZENvbG9yKTsKKyAgICBlbHNlCisgICAgICAg
IG1fY29udGVudHNMYXllci0+c2V0QmFja2dyb3VuZENvbG9yKENvbG9yOjp0cmFuc3BhcmVudCk7
Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjp1cGRhdGVDb250ZW50c0ltYWdlKCkKK3sKKyAg
ICBpZiAobV9wZW5kaW5nQ29udGVudHNJbWFnZSkgeworICAgICAgICBpZiAoIW1fY29udGVudHNM
YXllci5nZXQoKSkgeworICAgICAgICAgICAgbV9jb250ZW50c0xheWVyID0gUGxhdGZvcm1DQUxh
eWVyOjpjcmVhdGUoUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVMYXllciwgdGhpcyk7CisjaWZu
ZGVmIE5ERUJVRworICAgICAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXROYW1lKCJJbWFnZSBM
YXllciIpOworI2VuZGlmCisgICAgICAgICAgICBzZXR1cENvbnRlbnRzTGF5ZXIobV9jb250ZW50
c0xheWVyLmdldCgpKTsKKyAgICAgICAgICAgIC8vIG1fY29udGVudHNMYXllciB3aWxsIGJlIHBh
cmVudGVkIGJ5IHVwZGF0ZVN1YmxheWVyTGlzdAorICAgICAgICB9CisKKyAgICAgICAgLy8gRklY
TUU6IG1heWJlIG9ubHkgZG8gdHJpbGluZWFyIGlmIHRoZSBpbWFnZSBpcyBiZWluZyBzY2FsZWQg
ZG93biwKKyAgICAgICAgLy8gYnV0IHRoZW4gd2hhdCBpZiB0aGUgbGF5ZXIgc2l6ZSBjaGFuZ2Vz
PworI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19P
Tl9MRU9QQVJEKQorICAgICAgICBtX2NvbnRlbnRzTGF5ZXItPnNldE1pbmlmaWNhdGlvbkZpbHRl
cihQbGF0Zm9ybUNBTGF5ZXI6OlRyaWxpbmVhcik7CisjZW5kaWYKKyAgICAgICAgbV9jb250ZW50
c0xheWVyLT5zZXRDb250ZW50cyhtX3BlbmRpbmdDb250ZW50c0ltYWdlLmdldCgpKTsKKyAgICAg
ICAgbV9wZW5kaW5nQ29udGVudHNJbWFnZSA9IDA7CisKKyAgICAgICAgaWYgKG1fY29udGVudHNM
YXllckNsb25lcykgeworICAgICAgICAgICAgTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9
IG1fY29udGVudHNMYXllckNsb25lcy0+ZW5kKCk7CisgICAgICAgICAgICBmb3IgKExheWVyTWFw
Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fY29udGVudHNMYXllckNsb25lcy0+YmVnaW4oKTsgaXQg
IT0gZW5kOyArK2l0KQorICAgICAgICAgICAgICAgIGl0LT5zZWNvbmQtPnNldENvbnRlbnRzKG1f
Y29udGVudHNMYXllci0+Y29udGVudHMoKSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAg
IHVwZGF0ZUNvbnRlbnRzUmVjdCgpOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIE5vIGltYWdl
LgorICAgICAgICAvLyBtX2NvbnRlbnRzTGF5ZXIgd2lsbCBiZSByZW1vdmVkIHZpYSB1cGRhdGVT
dWJsYXllckxpc3QuCisgICAgICAgIG1fY29udGVudHNMYXllciA9IDA7CisgICAgfQorfQorCit2
b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlQ29udGVudHNNZWRpYUxheWVyKCkKK3sKKyAgICAv
LyBWaWRlbyBsYXllciB3YXMgc2V0IGFzIG1fY29udGVudHNMYXllciwgYW5kIHdpbGwgZ2V0IHBh
cmVudGVkIGluIHVwZGF0ZVN1YmxheWVyTGlzdCgpLgorICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIp
IHsKKyAgICAgICAgc2V0dXBDb250ZW50c0xheWVyKG1fY29udGVudHNMYXllci5nZXQoKSk7Cisg
ICAgICAgIHVwZGF0ZUNvbnRlbnRzUmVjdCgpOworICAgIH0KK30KKwordm9pZCBHcmFwaGljc0xh
eWVyQ0E6OnVwZGF0ZUNvbnRlbnRzQ2FudmFzTGF5ZXIoKQoreworICAgIC8vIENhbnZhc0xheWVy
IHdhcyBzZXQgYXMgbV9jb250ZW50c0xheWVyLCBhbmQgd2lsbCBnZXQgcGFyZW50ZWQgaW4gdXBk
YXRlU3VibGF5ZXJMaXN0KCkuCisgICAgaWYgKG1fY29udGVudHNMYXllcikgeworICAgICAgICBz
ZXR1cENvbnRlbnRzTGF5ZXIobV9jb250ZW50c0xheWVyLmdldCgpKTsKKyAgICAgICAgbV9jb250
ZW50c0xheWVyLT5zZXROZWVkc0Rpc3BsYXkoKTsKKyAgICAgICAgdXBkYXRlQ29udGVudHNSZWN0
KCk7CisgICAgfQorfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlQ29udGVudHNSZWN0
KCkKK3sKKyAgICBpZiAoIW1fY29udGVudHNMYXllcikKKyAgICAgICAgcmV0dXJuOworCisgICAg
RmxvYXRQb2ludCBwb2ludChtX2NvbnRlbnRzUmVjdC54KCksIG1fY29udGVudHNSZWN0LnkoKSk7
CisgICAgRmxvYXRSZWN0IHJlY3QoMCwgMCwgbV9jb250ZW50c1JlY3Qud2lkdGgoKSwgbV9jb250
ZW50c1JlY3QuaGVpZ2h0KCkpOworCisgICAgbV9jb250ZW50c0xheWVyLT5zZXRQb3NpdGlvbihw
b2ludCk7CisgICAgbV9jb250ZW50c0xheWVyLT5zZXRCb3VuZHMocmVjdCk7CisKKyAgICBpZiAo
bV9jb250ZW50c0xheWVyQ2xvbmVzKSB7CisgICAgICAgIExheWVyTWFwOjpjb25zdF9pdGVyYXRv
ciBlbmQgPSBtX2NvbnRlbnRzTGF5ZXJDbG9uZXMtPmVuZCgpOworICAgICAgICBmb3IgKExheWVy
TWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fY29udGVudHNMYXllckNsb25lcy0+YmVnaW4oKTsg
aXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgICAgICBpdC0+c2Vjb25kLT5zZXRQb3NpdGlvbihw
b2ludCk7CisgICAgICAgICAgICBpdC0+c2Vjb25kLT5zZXRCb3VuZHMocmVjdCk7CisgICAgICAg
IH0KKyAgICB9Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjp1cGRhdGVNYXNrTGF5ZXIoKQor
eworICAgIFBsYXRmb3JtQ0FMYXllciogbWFza0NBTGF5ZXIgPSBtX21hc2tMYXllciA/IHN0YXRp
Y19jYXN0PEdyYXBoaWNzTGF5ZXJDQSo+KG1fbWFza0xheWVyKS0+cHJpbWFyeUxheWVyKCkgOiAw
OworICAgIG1fbGF5ZXItPnNldE1hc2sobWFza0NBTGF5ZXIpOworCisgICAgTGF5ZXJNYXAqIG1h
c2tMYXllckNsb25lTWFwID0gbV9tYXNrTGF5ZXIgPyBzdGF0aWNfY2FzdDxHcmFwaGljc0xheWVy
Q0EqPihtX21hc2tMYXllciktPnByaW1hcnlMYXllckNsb25lcygpIDogMDsKKyAgICAKKyAgICBp
ZiAoTGF5ZXJNYXAqIGxheWVyQ2xvbmVNYXAgPSBtX2xheWVyQ2xvbmVzLmdldCgpKSB7CisgICAg
ICAgIExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBsYXllckNsb25lTWFwLT5lbmQoKTsK
KyAgICAgICAgZm9yIChMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBsYXllckNsb25lTWFw
LT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsgICAgICAgICAgICAKKyAgICAgICAgICAgIFBs
YXRmb3JtQ0FMYXllciogbWFza0Nsb25lID0gbWFza0xheWVyQ2xvbmVNYXAgPyBtYXNrTGF5ZXJD
bG9uZU1hcC0+Z2V0KGl0LT5maXJzdCkuZ2V0KCkgOiAwOworICAgICAgICAgICAgaXQtPnNlY29u
ZC0+c2V0TWFzayhtYXNrQ2xvbmUpOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIEdyYXBo
aWNzTGF5ZXJDQTo6dXBkYXRlUmVwbGljYXRlZExheWVycygpCit7CisgICAgLy8gQ2xvbmUgdGhl
IGRlc2NlbmRhbnRzIG9mIHRoZSByZXBsaWNhdGVkIGxheWVyLCBhbmQgcGFyZW50IHVuZGVyIHVz
LgorICAgIFJlcGxpY2FTdGF0ZSByZXBsaWNhU3RhdGUoUmVwbGljYVN0YXRlOjpSZXBsaWNhQnJh
bmNoKTsKKworICAgIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+cmVwbGljYVJvb3QgPSByZXBsaWNh
dGVkTGF5ZXJSb290KHJlcGxpY2FTdGF0ZSk7CisgICAgaWYgKCFyZXBsaWNhUm9vdCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgaWYgKG1fc3RydWN0dXJhbExheWVyKQorICAgICAgICBtX3N0cnVj
dHVyYWxMYXllci0+aW5zZXJ0U3VibGF5ZXIocmVwbGljYVJvb3QuZ2V0KCksIDApOworICAgIGVs
c2UKKyAgICAgICAgbV9sYXllci0+aW5zZXJ0U3VibGF5ZXIocmVwbGljYVJvb3QuZ2V0KCksIDAp
OworfQorCisvLyBGb3Igbm93LCB0aGlzIGFzc3VtZXMgdGhhdCBsYXllcnMgb25seSBldmVyIGhh
dmUgb25lIHJlcGxpY2EsIHNvIHJlcGxpY2FJbmRpY2VzIGNvbnRhaW5zIG9ubHkgMCBhbmQgMS4K
K0dyYXBoaWNzTGF5ZXJDQTo6Q2xvbmVJRCBHcmFwaGljc0xheWVyQ0E6OlJlcGxpY2FTdGF0ZTo6
Y2xvbmVJRCgpIGNvbnN0Cit7CisgICAgc2l6ZV90IGRlcHRoID0gbV9yZXBsaWNhQnJhbmNoZXMu
c2l6ZSgpOworCisgICAgY29uc3Qgc2l6ZV90IGJpdHNQZXJVQ2hhciA9IHNpemVvZihVQ2hhcikg
KiA4OworICAgIHNpemVfdCB2ZWN0b3JTaXplID0gKGRlcHRoICsgYml0c1BlclVDaGFyIC0gMSkg
LyBiaXRzUGVyVUNoYXI7CisgICAgCisgICAgVmVjdG9yPFVDaGFyPiByZXN1bHQodmVjdG9yU2l6
ZSk7CisgICAgcmVzdWx0LmZpbGwoMCk7CisKKyAgICAvLyBDcmVhdGUgYSBzdHJpbmcgZnJvbSB0
aGUgYml0IHNlcXVlbmNlIHdoaWNoIHdlIGNhbiB1c2UgdG8gaWRlbnRpZnkgdGhlIGNsb25lLgor
ICAgIC8vIE5vdGUgdGhhdCB0aGUgc3RyaW5nIG1heSBjb250YWluIGVtYmVkZGVkIG51bGxzLCBi
dXQgdGhhdCdzIE9LLgorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZGVwdGg7ICsraSkgewor
ICAgICAgICBVQ2hhciYgY3VyckNoYXIgPSByZXN1bHRbaSAvIGJpdHNQZXJVQ2hhcl07CisgICAg
ICAgIGN1cnJDaGFyID0gKGN1cnJDaGFyIDw8IDEpIHwgbV9yZXBsaWNhQnJhbmNoZXNbaV07Cisg
ICAgfQorICAgIAorICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KHJlc3VsdCk7Cit9CisKK1Bhc3NS
ZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBHcmFwaGljc0xheWVyQ0E6OnJlcGxpY2F0ZWRMYXllclJv
b3QoUmVwbGljYVN0YXRlJiByZXBsaWNhU3RhdGUpCit7CisgICAgLy8gTGltaXQgcmVwbGljYSBu
ZXN0aW5nLCB0byBhdm9pZCAyXk4gZXhwbG9zaW9uIG9mIHJlcGxpY2EgbGF5ZXJzLgorICAgIGlm
ICghbV9yZXBsaWNhdGVkTGF5ZXIgfHwgcmVwbGljYVN0YXRlLnJlcGxpY2FEZXB0aCgpID09IFJl
cGxpY2FTdGF0ZTo6bWF4UmVwbGljYURlcHRoKQorICAgICAgICByZXR1cm4gMDsKKworICAgIEdy
YXBoaWNzTGF5ZXJDQSogcmVwbGljYXRlZExheWVyID0gc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXll
ckNBKj4obV9yZXBsaWNhdGVkTGF5ZXIpOworICAgIAorICAgIFJlZlB0cjxQbGF0Zm9ybUNBTGF5
ZXI+IGNsb25lZExheWVyUm9vdCA9IHJlcGxpY2F0ZWRMYXllci0+ZmV0Y2hDbG9uZUxheWVycyh0
aGlzLCByZXBsaWNhU3RhdGUsIFJvb3RDbG9uZUxldmVsKTsKKyAgICBGbG9hdFBvaW50IGNsb25l
Um9vdFBvc2l0aW9uID0gcmVwbGljYXRlZExheWVyLT5wb3NpdGlvbkZvckNsb25lUm9vdExheWVy
KCk7CisKKyAgICAvLyBSZXBsaWNhIHJvb3QgaGFzIG5vIG9mZnNldCBvciB0cmFuc2Zvcm0KKyAg
ICBjbG9uZWRMYXllclJvb3QtPnNldFBvc2l0aW9uKGNsb25lUm9vdFBvc2l0aW9uKTsKKyAgICBj
bG9uZWRMYXllclJvb3QtPnNldFRyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKTsKKwor
ICAgIHJldHVybiBjbG9uZWRMYXllclJvb3Q7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjp1
cGRhdGVMYXllckFuaW1hdGlvbnMoKQoreworICAgIGlmIChtX2FuaW1hdGlvbnNUb1Byb2Nlc3Mu
c2l6ZSgpKSB7CisgICAgICAgIEFuaW1hdGlvbnNUb1Byb2Nlc3NNYXA6OmNvbnN0X2l0ZXJhdG9y
IGVuZCA9IG1fYW5pbWF0aW9uc1RvUHJvY2Vzcy5lbmQoKTsKKyAgICAgICAgZm9yIChBbmltYXRp
b25zVG9Qcm9jZXNzTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fYW5pbWF0aW9uc1RvUHJvY2Vz
cy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgICAgIGNvbnN0IFN0cmluZyYg
Y3VyckFuaW1hdGlvbk5hbWUgPSBpdC0+Zmlyc3Q7CisgICAgICAgICAgICBBbmltYXRpb25zTWFw
OjppdGVyYXRvciBhbmltYXRpb25JdCA9IG1fcnVubmluZ0FuaW1hdGlvbnMuZmluZChjdXJyQW5p
bWF0aW9uTmFtZSk7CisgICAgICAgICAgICBpZiAoYW5pbWF0aW9uSXQgPT0gbV9ydW5uaW5nQW5p
bWF0aW9ucy5lbmQoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAg
Y29uc3QgQW5pbWF0aW9uUHJvY2Vzc2luZ0FjdGlvbiYgcHJvY2Vzc2luZ0luZm8gPSBpdC0+c2Vj
b25kOworICAgICAgICAgICAgY29uc3QgVmVjdG9yPExheWVyUHJvcGVydHlBbmltYXRpb24+JiBh
bmltYXRpb25zID0gYW5pbWF0aW9uSXQtPnNlY29uZDsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgYW5pbWF0aW9ucy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgICAgIGNv
bnN0IExheWVyUHJvcGVydHlBbmltYXRpb24mIGN1cnJBbmltYXRpb24gPSBhbmltYXRpb25zW2ld
OworICAgICAgICAgICAgICAgIHN3aXRjaCAocHJvY2Vzc2luZ0luZm8uYWN0aW9uKSB7CisgICAg
ICAgICAgICAgICAgY2FzZSBSZW1vdmU6CisgICAgICAgICAgICAgICAgICAgIHJlbW92ZUNBQW5p
bWF0aW9uRnJvbUxheWVyKGN1cnJBbmltYXRpb24ubV9wcm9wZXJ0eSwgY3VyckFuaW1hdGlvbk5h
bWUsIGN1cnJBbmltYXRpb24ubV9pbmRleCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgIGNhc2UgUGF1c2U6CisgICAgICAgICAgICAgICAgICAgIHBhdXNlQ0FB
bmltYXRpb25PbkxheWVyKGN1cnJBbmltYXRpb24ubV9wcm9wZXJ0eSwgY3VyckFuaW1hdGlvbk5h
bWUsIGN1cnJBbmltYXRpb24ubV9pbmRleCwgcHJvY2Vzc2luZ0luZm8udGltZU9mZnNldCk7Cisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgaWYgKHByb2Nlc3NpbmdJbmZvLmFjdGlvbiA9PSBSZW1vdmUpCisg
ICAgICAgICAgICAgICAgbV9ydW5uaW5nQW5pbWF0aW9ucy5yZW1vdmUoY3VyckFuaW1hdGlvbk5h
bWUpOworICAgICAgICB9CisgICAgCisgICAgICAgIG1fYW5pbWF0aW9uc1RvUHJvY2Vzcy5jbGVh
cigpOworICAgIH0KKyAgICAKKyAgICBzaXplX3QgbnVtQW5pbWF0aW9uczsKKyAgICBpZiAoKG51
bUFuaW1hdGlvbnMgPSBtX3VuY29taXR0ZWRBbmltYXRpb25zLnNpemUoKSkpIHsKKyAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1BbmltYXRpb25zOyArK2kpIHsKKyAgICAgICAgICAg
IGNvbnN0IExheWVyUHJvcGVydHlBbmltYXRpb24mIHBlbmRpbmdBbmltYXRpb24gPSBtX3VuY29t
aXR0ZWRBbmltYXRpb25zW2ldOworICAgICAgICAgICAgc2V0QW5pbWF0aW9uT25MYXllcihwZW5k
aW5nQW5pbWF0aW9uLm1fYW5pbWF0aW9uLmdldCgpLCBwZW5kaW5nQW5pbWF0aW9uLm1fcHJvcGVy
dHksIHBlbmRpbmdBbmltYXRpb24ubV9uYW1lLCBwZW5kaW5nQW5pbWF0aW9uLm1faW5kZXgsIHBl
bmRpbmdBbmltYXRpb24ubV90aW1lT2Zmc2V0KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAg
QW5pbWF0aW9uc01hcDo6aXRlcmF0b3IgaXQgPSBtX3J1bm5pbmdBbmltYXRpb25zLmZpbmQocGVu
ZGluZ0FuaW1hdGlvbi5tX25hbWUpOworICAgICAgICAgICAgaWYgKGl0ID09IG1fcnVubmluZ0Fu
aW1hdGlvbnMuZW5kKCkpIHsKKyAgICAgICAgICAgICAgICBWZWN0b3I8TGF5ZXJQcm9wZXJ0eUFu
aW1hdGlvbj4gYW5pbWF0aW9uczsKKyAgICAgICAgICAgICAgICBhbmltYXRpb25zLmFwcGVuZChw
ZW5kaW5nQW5pbWF0aW9uKTsKKyAgICAgICAgICAgICAgICBtX3J1bm5pbmdBbmltYXRpb25zLmFk
ZChwZW5kaW5nQW5pbWF0aW9uLm1fbmFtZSwgYW5pbWF0aW9ucyk7CisgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgIFZlY3RvcjxMYXllclByb3BlcnR5QW5pbWF0aW9uPiYgYW5p
bWF0aW9ucyA9IGl0LT5zZWNvbmQ7CisgICAgICAgICAgICAgICAgYW5pbWF0aW9ucy5hcHBlbmQo
cGVuZGluZ0FuaW1hdGlvbik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisg
ICAgICAgIG1fdW5jb21pdHRlZEFuaW1hdGlvbnMuY2xlYXIoKTsKKyAgICB9Cit9CisKK3ZvaWQg
R3JhcGhpY3NMYXllckNBOjpzZXRBbmltYXRpb25PbkxheWVyKFBsYXRmb3JtQ0FBbmltYXRpb24q
IGNhQW5pbSwgQW5pbWF0ZWRQcm9wZXJ0eUlEIHByb3BlcnR5LCBjb25zdCBTdHJpbmcmIGFuaW1h
dGlvbk5hbWUsIGludCBpbmRleCwgZG91YmxlIHRpbWVPZmZzZXQpCit7CisgICAgUGxhdGZvcm1D
QUxheWVyKiBsYXllciA9IGFuaW1hdGVkTGF5ZXIocHJvcGVydHkpOworICAgIAorICAgIGlmICh0
aW1lT2Zmc2V0KSB7CisgICAgICAgIGNhQW5pbS0+c2V0QmVnaW5UaW1lKENBQ3VycmVudE1lZGlh
VGltZSgpIC0gdGltZU9mZnNldCk7CisgICAgICAgIGNhQW5pbS0+c2V0Tm9uWmVyb0JlZ2luVGlt
ZUZsYWcodHJ1ZSk7CisgICAgfQorCisgICAgU3RyaW5nIGFuaW1hdGlvbklEID0gYW5pbWF0aW9u
SWRlbnRpZmllcihhbmltYXRpb25OYW1lLCBwcm9wZXJ0eSwgaW5kZXgpOworCisgICAgbGF5ZXIt
PnJlbW92ZUFuaW1hdGlvbkZvcktleShhbmltYXRpb25JRCk7CisgICAgbGF5ZXItPmFkZEFuaW1h
dGlvbkZvcktleShhbmltYXRpb25JRCwgY2FBbmltKTsKKworICAgIGlmIChMYXllck1hcCogbGF5
ZXJDbG9uZU1hcCA9IGFuaW1hdGVkTGF5ZXJDbG9uZXMocHJvcGVydHkpKSB7CisgICAgICAgIExh
eWVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBsYXllckNsb25lTWFwLT5lbmQoKTsKKyAgICAg
ICAgZm9yIChMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBsYXllckNsb25lTWFwLT5iZWdp
bigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgICAgIC8vIFNraXAgaW1tZWRpYXRlIHJl
cGxpY2FzLCBzaW5jZSB0aGV5IG1vdmUgd2l0aCB0aGUgb3JpZ2luYWwuCisgICAgICAgICAgICBp
ZiAobV9yZXBsaWNhTGF5ZXIgJiYgaXNSZXBsaWNhdGVkUm9vdENsb25lKGl0LT5maXJzdCkpCisg
ICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIGl0LT5zZWNvbmQtPnJlbW92
ZUFuaW1hdGlvbkZvcktleShhbmltYXRpb25JRCk7CisgICAgICAgICAgICBpdC0+c2Vjb25kLT5h
ZGRBbmltYXRpb25Gb3JLZXkoYW5pbWF0aW9uSUQsIGNhQW5pbSk7CisgICAgICAgIH0KKyAgICB9
Cit9CisKKy8vIFdvcmthcm91bmQgZm9yIDxyZGFyOi8vcHJvYmxlbS83MzExMzY3Pgorc3RhdGlj
IHZvaWQgYnVnNzMxMTM2N1dvcmthcm91bmQoUGxhdGZvcm1DQUxheWVyKiB0cmFuc2Zvcm1MYXll
ciwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSkKK3sKKyAgICBpZiAoIXRy
YW5zZm9ybUxheWVyKQorICAgICAgICByZXR1cm47CisKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCBjYVRyYW5zZm9ybSA9IHRyYW5zZm9ybTsKKyAgICBjYVRyYW5zZm9ybS5zZXRNNDEoY2FUcmFu
c2Zvcm0ubTQxKCkgKyAxKTsKKyAgICB0cmFuc2Zvcm1MYXllci0+c2V0VHJhbnNmb3JtKGNhVHJh
bnNmb3JtKTsKKworICAgIGNhVHJhbnNmb3JtLnNldE00MShjYVRyYW5zZm9ybS5tNDEoKSAtIDEp
OworICAgIHRyYW5zZm9ybUxheWVyLT5zZXRUcmFuc2Zvcm0oY2FUcmFuc2Zvcm0pOworfQorCiti
b29sIEdyYXBoaWNzTGF5ZXJDQTo6cmVtb3ZlQ0FBbmltYXRpb25Gcm9tTGF5ZXIoQW5pbWF0ZWRQ
cm9wZXJ0eUlEIHByb3BlcnR5LCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGludCBpbmRl
eCkKK3sKKyAgICBQbGF0Zm9ybUNBTGF5ZXIqIGxheWVyID0gYW5pbWF0ZWRMYXllcihwcm9wZXJ0
eSk7CisKKyAgICBTdHJpbmcgYW5pbWF0aW9uSUQgPSBhbmltYXRpb25JZGVudGlmaWVyKGFuaW1h
dGlvbk5hbWUsIHByb3BlcnR5LCBpbmRleCk7CisKKyAgICBpZiAoIWxheWVyLT5hbmltYXRpb25G
b3JLZXkoYW5pbWF0aW9uSUQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgbGF5
ZXItPnJlbW92ZUFuaW1hdGlvbkZvcktleShhbmltYXRpb25JRCk7CisgICAgYnVnNzMxMTM2N1dv
cmthcm91bmQobV9zdHJ1Y3R1cmFsTGF5ZXIuZ2V0KCksIG1fdHJhbnNmb3JtKTsKKworICAgIGlm
IChMYXllck1hcCogbGF5ZXJDbG9uZU1hcCA9IGFuaW1hdGVkTGF5ZXJDbG9uZXMocHJvcGVydHkp
KSB7CisgICAgICAgIExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBsYXllckNsb25lTWFw
LT5lbmQoKTsKKyAgICAgICAgZm9yIChMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBsYXll
ckNsb25lTWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgICAgIC8vIFNr
aXAgaW1tZWRpYXRlIHJlcGxpY2FzLCBzaW5jZSB0aGV5IG1vdmUgd2l0aCB0aGUgb3JpZ2luYWwu
CisgICAgICAgICAgICBpZiAobV9yZXBsaWNhTGF5ZXIgJiYgaXNSZXBsaWNhdGVkUm9vdENsb25l
KGl0LT5maXJzdCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIGl0
LT5zZWNvbmQgLT5yZW1vdmVBbmltYXRpb25Gb3JLZXkoYW5pbWF0aW9uSUQpOworICAgICAgICB9
CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6cGF1
c2VDQUFuaW1hdGlvbk9uTGF5ZXIoQW5pbWF0ZWRQcm9wZXJ0eUlEIHByb3BlcnR5LCBjb25zdCBT
dHJpbmcmIGFuaW1hdGlvbk5hbWUsIGludCBpbmRleCwgZG91YmxlIHRpbWVPZmZzZXQpCit7Cisg
ICAgUGxhdGZvcm1DQUxheWVyKiBsYXllciA9IGFuaW1hdGVkTGF5ZXIocHJvcGVydHkpOworCisg
ICAgU3RyaW5nIGFuaW1hdGlvbklEID0gYW5pbWF0aW9uSWRlbnRpZmllcihhbmltYXRpb25OYW1l
LCBwcm9wZXJ0eSwgaW5kZXgpOworCisgICAgUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IGN1
ckFuaW0gPSBsYXllci0+YW5pbWF0aW9uRm9yS2V5KGFuaW1hdGlvbklEKTsKKyAgICBpZiAoIWN1
ckFuaW0pCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEFuaW1hdGlvbnMgb24gdGhlIGxheWVy
IGFyZSBpbW11dGFibGUsIHNvIHdlIGhhdmUgdG8gY2xvbmUgYW5kIG1vZGlmeS4KKyAgICBSZWZQ
dHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gbmV3QW5pbSA9IFBsYXRmb3JtQ0FBbmltYXRpb246OmNy
ZWF0ZShjdXJBbmltLmdldCgpKTsKKworICAgIG5ld0FuaW0tPnNldFNwZWVkKDApOworICAgIG5l
d0FuaW0tPnNldFRpbWVPZmZzZXQodGltZU9mZnNldCk7CisgICAgCisgICAgbGF5ZXItPmFkZEFu
aW1hdGlvbkZvcktleShhbmltYXRpb25JRCwgbmV3QW5pbS5nZXQoKSk7IC8vIFRoaXMgd2lsbCBy
ZXBsYWNlIHRoZSBydW5uaW5nIGFuaW1hdGlvbi4KKworICAgIC8vIFBhdXNlIHRoZSBhbmltYXRp
b25zIG9uIHRoZSBjbG9uZXMgdG9vLgorICAgIGlmIChMYXllck1hcCogbGF5ZXJDbG9uZU1hcCA9
IGFuaW1hdGVkTGF5ZXJDbG9uZXMocHJvcGVydHkpKSB7CisgICAgICAgIExheWVyTWFwOjpjb25z
dF9pdGVyYXRvciBlbmQgPSBsYXllckNsb25lTWFwLT5lbmQoKTsKKyAgICAgICAgZm9yIChMYXll
ck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBsYXllckNsb25lTWFwLT5iZWdpbigpOyBpdCAhPSBl
bmQ7ICsraXQpIHsKKyAgICAgICAgICAgIC8vIFNraXAgaW1tZWRpYXRlIHJlcGxpY2FzLCBzaW5j
ZSB0aGV5IG1vdmUgd2l0aCB0aGUgb3JpZ2luYWwuCisgICAgICAgICAgICBpZiAobV9yZXBsaWNh
TGF5ZXIgJiYgaXNSZXBsaWNhdGVkUm9vdENsb25lKGl0LT5maXJzdCkpCisgICAgICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgICAgICBpdC0+c2Vjb25kLT5hZGRBbmltYXRpb25Gb3JLZXko
YW5pbWF0aW9uSUQsIG5ld0FuaW0uZ2V0KCkpOworICAgICAgICB9CisgICAgfQorfQorCit2b2lk
IEdyYXBoaWNzTGF5ZXJDQTo6cmVwYWludExheWVyRGlydHlSZWN0cygpCit7CisgICAgaWYgKCFt
X2RpcnR5UmVjdHMuc2l6ZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG1fZGlydHlSZWN0cy5zaXplKCk7ICsraSkKKyAgICAgICAgbV9sYXllci0+c2V0
TmVlZHNEaXNwbGF5KCYobV9kaXJ0eVJlY3RzW2ldKSk7CisgICAgCisgICAgbV9kaXJ0eVJlY3Rz
LmNsZWFyKCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjp1cGRhdGVDb250ZW50c05lZWRz
RGlzcGxheSgpCit7CisgICAgaWYgKG1fY29udGVudHNMYXllcikKKyAgICAgICAgbV9jb250ZW50
c0xheWVyLT5zZXROZWVkc0Rpc3BsYXkoKTsKK30KKworYm9vbCBHcmFwaGljc0xheWVyQ0E6OmNy
ZWF0ZUFuaW1hdGlvbkZyb21LZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVl
TGlzdCwgY29uc3QgQW5pbWF0aW9uKiBhbmltYXRpb24sIGNvbnN0IFN0cmluZyYgYW5pbWF0aW9u
TmFtZSwgZG91YmxlIHRpbWVPZmZzZXQpCit7CisgICAgQVNTRVJUKHZhbHVlTGlzdC5wcm9wZXJ0
eSgpICE9IEFuaW1hdGVkUHJvcGVydHlXZWJraXRUcmFuc2Zvcm0pOworICAgIAorICAgIGJvb2wg
aXNLZXlmcmFtZSA9IHZhbHVlTGlzdC5zaXplKCkgPiAyOworICAgIGJvb2wgdmFsdWVzT0s7Cisg
ICAgCisgICAgYm9vbCBhZGRpdGl2ZSA9IGZhbHNlOworICAgIGludCBhbmltYXRpb25JbmRleCA9
IDA7CisgICAgCisgICAgUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IGNhQW5pbWF0aW9uOwor
ICAgIAorICAgIGlmIChpc0tleWZyYW1lKSB7CisgICAgICAgIGNhQW5pbWF0aW9uID0gY3JlYXRl
S2V5ZnJhbWVBbmltYXRpb24oYW5pbWF0aW9uLCB2YWx1ZUxpc3QucHJvcGVydHkoKSwgYWRkaXRp
dmUpOworICAgICAgICB2YWx1ZXNPSyA9IHNldEFuaW1hdGlvbktleWZyYW1lcyh2YWx1ZUxpc3Qs
IGFuaW1hdGlvbiwgY2FBbmltYXRpb24uZ2V0KCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIGNh
QW5pbWF0aW9uID0gY3JlYXRlQmFzaWNBbmltYXRpb24oYW5pbWF0aW9uLCB2YWx1ZUxpc3QucHJv
cGVydHkoKSwgYWRkaXRpdmUpOworICAgICAgICB2YWx1ZXNPSyA9IHNldEFuaW1hdGlvbkVuZHBv
aW50cyh2YWx1ZUxpc3QsIGFuaW1hdGlvbiwgY2FBbmltYXRpb24uZ2V0KCkpOworICAgIH0KKyAg
ICAKKyAgICBpZiAoIXZhbHVlc09LKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBtX3Vu
Y29taXR0ZWRBbmltYXRpb25zLmFwcGVuZChMYXllclByb3BlcnR5QW5pbWF0aW9uKGNhQW5pbWF0
aW9uLCBhbmltYXRpb25OYW1lLCB2YWx1ZUxpc3QucHJvcGVydHkoKSwgYW5pbWF0aW9uSW5kZXgs
IHRpbWVPZmZzZXQpKTsKKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIEdyYXBoaWNzTGF5
ZXJDQTo6Y3JlYXRlVHJhbnNmb3JtQW5pbWF0aW9uc0Zyb21LZXlmcmFtZXMoY29uc3QgS2V5ZnJh
bWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCwgY29uc3QgQW5pbWF0aW9uKiBhbmltYXRpb24sIGNvbnN0
IFN0cmluZyYgYW5pbWF0aW9uTmFtZSwgZG91YmxlIHRpbWVPZmZzZXQsIGNvbnN0IEludFNpemUm
IGJveFNpemUpCit7CisgICAgQVNTRVJUKHZhbHVlTGlzdC5wcm9wZXJ0eSgpID09IEFuaW1hdGVk
UHJvcGVydHlXZWJraXRUcmFuc2Zvcm0pOworCisgICAgVHJhbnNmb3JtT3BlcmF0aW9uTGlzdCBm
dW5jdGlvbkxpc3Q7CisgICAgYm9vbCBsaXN0c01hdGNoLCBoYXNCaWdSb3RhdGlvbjsKKyAgICBm
ZXRjaFRyYW5zZm9ybU9wZXJhdGlvbkxpc3QodmFsdWVMaXN0LCBmdW5jdGlvbkxpc3QsIGxpc3Rz
TWF0Y2gsIGhhc0JpZ1JvdGF0aW9uKTsKKworICAgIC8vIFdlIG5lZWQgdG8gZmFsbCBiYWNrIHRv
IHNvZnR3YXJlIGFuaW1hdGlvbiBpZiB3ZSBkb24ndCBoYXZlIHNldFZhbHVlRnVuY3Rpb246LCBh
bmQKKyAgICAvLyB3ZSB3b3VsZCBuZWVkIHRvIGFuaW1hdGUgZWFjaCBpbmNvbWluZyB0cmFuc2Zv
cm0gZnVuY3Rpb24gc2VwYXJhdGVseS4gVGhpcyBpcyB0aGUKKyAgICAvLyBjYXNlIGlmIHdlIGhh
dmUgYSByb3RhdGlvbiA+PSAxODAgb3Igd2UgaGF2ZSBtb3JlIHRoYW4gb25lIHRyYW5zZm9ybSBm
dW5jdGlvbi4KKyAgICBpZiAoKGhhc0JpZ1JvdGF0aW9uIHx8IGZ1bmN0aW9uTGlzdC5zaXplKCkg
PiAxKSAmJiAhUGxhdGZvcm1DQUFuaW1hdGlvbjo6c3VwcG9ydHNWYWx1ZUZ1bmN0aW9uKCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGJvb2wgdmFsaWRNYXRyaWNlcyA9IHRydWU7CisK
KyAgICAvLyBJZiBmdW5jdGlvbkxpc3RzIGRvbid0IG1hdGNoIHdlIGRvIGEgbWF0cml4IGFuaW1h
dGlvbiwgb3RoZXJ3aXNlIHdlIGRvIGEgY29tcG9uZW50IGhhcmR3YXJlIGFuaW1hdGlvbi4KKyAg
ICAvLyBBbHNvLCB3ZSBjYW4ndCBkbyBjb21wb25lbnQgYW5pbWF0aW9uIHVubGVzcyB3ZSBoYXZl
IHZhbHVlRnVuY3Rpb24sIHNvIHdlIG5lZWQgdG8gZG8gbWF0cml4IGFuaW1hdGlvbgorICAgIC8v
IGlmIHRoYXQncyBub3QgdHJ1ZSBhcyB3ZWxsLgorICAgIGJvb2wgaXNNYXRyaXhBbmltYXRpb24g
PSAhbGlzdHNNYXRjaCB8fCAhUGxhdGZvcm1DQUFuaW1hdGlvbjo6c3VwcG9ydHNWYWx1ZUZ1bmN0
aW9uKCk7CisgICAgCisgICAgc2l6ZV90IG51bUFuaW1hdGlvbnMgPSBpc01hdHJpeEFuaW1hdGlv
biA/IDEgOiBmdW5jdGlvbkxpc3Quc2l6ZSgpOworICAgIGJvb2wgaXNLZXlmcmFtZSA9IHZhbHVl
TGlzdC5zaXplKCkgPiAyOworICAgIAorICAgIC8vIEl0ZXJhdGUgdGhyb3VnaCB0aGUgdHJhbnNm
b3JtIGZ1bmN0aW9ucywgc2VuZGluZyBhbiBhbmltYXRpb24gZm9yIGVhY2ggb25lLgorICAgIGZv
ciAoc2l6ZV90IGFuaW1hdGlvbkluZGV4ID0gMDsgYW5pbWF0aW9uSW5kZXggPCBudW1BbmltYXRp
b25zOyArK2FuaW1hdGlvbkluZGV4KSB7CisgICAgICAgIFRyYW5zZm9ybU9wZXJhdGlvbjo6T3Bl
cmF0aW9uVHlwZSB0cmFuc2Zvcm1PcCA9IGlzTWF0cml4QW5pbWF0aW9uID8gVHJhbnNmb3JtT3Bl
cmF0aW9uOjpNQVRSSVhfM0QgOiBmdW5jdGlvbkxpc3RbYW5pbWF0aW9uSW5kZXhdOworICAgICAg
ICBSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gY2FBbmltYXRpb247CisKKyNpZiBkZWZpbmVk
KEJVSUxESU5HX09OX0xFT1BBUkQpIHx8IGRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJE
KQorICAgICAgICAvLyBDQSBhcHBsaWVzIGFuaW1hdGlvbnMgaW4gcmV2ZXJzZSBvcmRlciAoPHJk
YXI6Ly9wcm9ibGVtLzcwOTU2Mzg+KSBzbyB3ZSBuZWVkIHRoZSBsYXN0IG9uZSB3ZSBhZGQgKHBl
ciBwcm9wZXJ0eSkKKyAgICAgICAgLy8gdG8gYmUgbm9uLWFkZGl0aXZlLgorICAgICAgICBib29s
IGFkZGl0aXZlID0gYW5pbWF0aW9uSW5kZXggPCAobnVtQW5pbWF0aW9ucyAtIDEpOworI2Vsc2UK
KyAgICAgICAgYm9vbCBhZGRpdGl2ZSA9IGFuaW1hdGlvbkluZGV4ID4gMDsKKyNlbmRpZgorICAg
ICAgICBpZiAoaXNLZXlmcmFtZSkgeworICAgICAgICAgICAgY2FBbmltYXRpb24gPSBjcmVhdGVL
ZXlmcmFtZUFuaW1hdGlvbihhbmltYXRpb24sIHZhbHVlTGlzdC5wcm9wZXJ0eSgpLCBhZGRpdGl2
ZSk7CisgICAgICAgICAgICB2YWxpZE1hdHJpY2VzID0gc2V0VHJhbnNmb3JtQW5pbWF0aW9uS2V5
ZnJhbWVzKHZhbHVlTGlzdCwgYW5pbWF0aW9uLCBjYUFuaW1hdGlvbi5nZXQoKSwgYW5pbWF0aW9u
SW5kZXgsIHRyYW5zZm9ybU9wLCBpc01hdHJpeEFuaW1hdGlvbiwgYm94U2l6ZSk7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBjYUFuaW1hdGlvbiA9IGNyZWF0ZUJhc2ljQW5pbWF0aW9u
KGFuaW1hdGlvbiwgdmFsdWVMaXN0LnByb3BlcnR5KCksIGFkZGl0aXZlKTsKKyAgICAgICAgICAg
IHZhbGlkTWF0cmljZXMgPSBzZXRUcmFuc2Zvcm1BbmltYXRpb25FbmRwb2ludHModmFsdWVMaXN0
LCBhbmltYXRpb24sIGNhQW5pbWF0aW9uLmdldCgpLCBhbmltYXRpb25JbmRleCwgdHJhbnNmb3Jt
T3AsIGlzTWF0cml4QW5pbWF0aW9uLCBib3hTaXplKTsKKyAgICAgICAgfQorICAgICAgICAKKyAg
ICAgICAgaWYgKCF2YWxpZE1hdHJpY2VzKQorICAgICAgICAgICAgYnJlYWs7CisgICAgCisgICAg
ICAgIG1fdW5jb21pdHRlZEFuaW1hdGlvbnMuYXBwZW5kKExheWVyUHJvcGVydHlBbmltYXRpb24o
Y2FBbmltYXRpb24sIGFuaW1hdGlvbk5hbWUsIHZhbHVlTGlzdC5wcm9wZXJ0eSgpLCBhbmltYXRp
b25JbmRleCwgdGltZU9mZnNldCkpOworICAgIH0KKworICAgIHJldHVybiB2YWxpZE1hdHJpY2Vz
OworfQorCitQYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IEdyYXBoaWNzTGF5ZXJDQTo6
Y3JlYXRlQmFzaWNBbmltYXRpb24oY29uc3QgQW5pbWF0aW9uKiBhbmltLCBBbmltYXRlZFByb3Bl
cnR5SUQgcHJvcGVydHksIGJvb2wgYWRkaXRpdmUpCit7CisgICAgUmVmUHRyPFBsYXRmb3JtQ0FB
bmltYXRpb24+IGJhc2ljQW5pbSA9IFBsYXRmb3JtQ0FBbmltYXRpb246OmNyZWF0ZShQbGF0Zm9y
bUNBQW5pbWF0aW9uOjpCYXNpYywgcHJvcGVydHlJZFRvU3RyaW5nKHByb3BlcnR5KSk7CisgICAg
c2V0dXBBbmltYXRpb24oYmFzaWNBbmltLmdldCgpLCBhbmltLCBhZGRpdGl2ZSk7CisgICAgcmV0
dXJuIGJhc2ljQW5pbTsKK30KKworUGFzc1JlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPkdyYXBo
aWNzTGF5ZXJDQTo6Y3JlYXRlS2V5ZnJhbWVBbmltYXRpb24oY29uc3QgQW5pbWF0aW9uKiBhbmlt
LCBBbmltYXRlZFByb3BlcnR5SUQgcHJvcGVydHksIGJvb2wgYWRkaXRpdmUpCit7CisgICAgUmVm
UHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IGtleWZyYW1lQW5pbSA9IFBsYXRmb3JtQ0FBbmltYXRp
b246OmNyZWF0ZShQbGF0Zm9ybUNBQW5pbWF0aW9uOjpLZXlmcmFtZSwgcHJvcGVydHlJZFRvU3Ry
aW5nKHByb3BlcnR5KSk7CisgICAgc2V0dXBBbmltYXRpb24oa2V5ZnJhbWVBbmltLmdldCgpLCBh
bmltLCBhZGRpdGl2ZSk7CisgICAgcmV0dXJuIGtleWZyYW1lQW5pbTsKK30KKwordm9pZCBHcmFw
aGljc0xheWVyQ0E6OnNldHVwQW5pbWF0aW9uKFBsYXRmb3JtQ0FBbmltYXRpb24qIHByb3BlcnR5
QW5pbSwgY29uc3QgQW5pbWF0aW9uKiBhbmltLCBib29sIGFkZGl0aXZlKQoreworICAgIGRvdWJs
ZSBkdXJhdGlvbiA9IGFuaW0tPmR1cmF0aW9uKCk7CisgICAgaWYgKGR1cmF0aW9uIDw9IDApCisg
ICAgICAgIGR1cmF0aW9uID0gY0FuaW1hdGlvbkFsbW9zdFplcm9EdXJhdGlvbjsKKworICAgIGZs
b2F0IHJlcGVhdENvdW50ID0gYW5pbS0+aXRlcmF0aW9uQ291bnQoKTsKKyAgICBpZiAocmVwZWF0
Q291bnQgPT0gQW5pbWF0aW9uOjpJdGVyYXRpb25Db3VudEluZmluaXRlKQorICAgICAgICByZXBl
YXRDb3VudCA9IEZMVF9NQVg7CisgICAgZWxzZSBpZiAoYW5pbS0+ZGlyZWN0aW9uKCkgPT0gQW5p
bWF0aW9uOjpBbmltYXRpb25EaXJlY3Rpb25BbHRlcm5hdGUpCisgICAgICAgIHJlcGVhdENvdW50
IC89IDI7CisKKyAgICBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpGaWxsTW9kZVR5cGUgZmlsbE1vZGUg
PSBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpOb0ZpbGxNb2RlOworICAgIHN3aXRjaCAoYW5pbS0+Zmls
bE1vZGUoKSkgeworICAgIGNhc2UgQW5pbWF0aW9uRmlsbE1vZGVOb25lOgorICAgICAgICBmaWxs
TW9kZSA9IFBsYXRmb3JtQ0FBbmltYXRpb246OkZvcndhcmRzOyAvLyBVc2UgImZvcndhcmRzIiBy
YXRoZXIgdGhhbiAicmVtb3ZlZCIgYmVjYXVzZSB0aGUgc3R5bGUgc3lzdGVtIHdpbGwgcmVtb3Zl
IHRoZSBhbmltYXRpb24gd2hlbiBpdCBpcyBmaW5pc2hlZC4gVGhpcyBhdm9pZHMgYSBmbGFzaC4K
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBbmltYXRpb25GaWxsTW9kZUJhY2t3YXJkczoKKyAg
ICAgICAgZmlsbE1vZGUgPSBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpCb3RoOyAvLyBVc2UgImJvdGgi
IHJhdGhlciB0aGFuICJiYWNrd2FyZHMiIGJlY2F1c2UgdGhlIHN0eWxlIHN5c3RlbSB3aWxsIHJl
bW92ZSB0aGUgYW5pbWF0aW9uIHdoZW4gaXQgaXMgZmluaXNoZWQuIFRoaXMgYXZvaWRzIGEgZmxh
c2guCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQW5pbWF0aW9uRmlsbE1vZGVGb3J3YXJkczoK
KyAgICAgICAgZmlsbE1vZGUgPSBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpGb3J3YXJkczsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBBbmltYXRpb25GaWxsTW9kZUJvdGg6CisgICAgICAgIGZpbGxN
b2RlID0gUGxhdGZvcm1DQUFuaW1hdGlvbjo6Qm90aDsKKyAgICAgICAgYnJlYWs7CisgICAgfQor
CisgICAgcHJvcGVydHlBbmltLT5zZXREdXJhdGlvbihkdXJhdGlvbik7CisgICAgcHJvcGVydHlB
bmltLT5zZXRSZXBlYXRDb3VudChyZXBlYXRDb3VudCk7CisgICAgcHJvcGVydHlBbmltLT5zZXRB
dXRvcmV2ZXJzZXMoYW5pbS0+ZGlyZWN0aW9uKCkpOworICAgIHByb3BlcnR5QW5pbS0+c2V0UmVt
b3ZlZE9uQ29tcGxldGlvbihmYWxzZSk7CisgICAgcHJvcGVydHlBbmltLT5zZXRBZGRpdGl2ZShh
ZGRpdGl2ZSk7CisgICAgcHJvcGVydHlBbmltLT5zZXRGaWxsTW9kZShmaWxsTW9kZSk7Cit9CisK
K2NvbnN0IFRpbWluZ0Z1bmN0aW9uKiBHcmFwaGljc0xheWVyQ0E6OnRpbWluZ0Z1bmN0aW9uRm9y
QW5pbWF0aW9uVmFsdWUoY29uc3QgQW5pbWF0aW9uVmFsdWUqIGFuaW1WYWx1ZSwgY29uc3QgQW5p
bWF0aW9uKiBhbmltKQoreworICAgIGlmIChhbmltVmFsdWUtPnRpbWluZ0Z1bmN0aW9uKCkpCisg
ICAgICAgIHJldHVybiBhbmltVmFsdWUtPnRpbWluZ0Z1bmN0aW9uKCk7CisgICAgaWYgKGFuaW0t
PmlzVGltaW5nRnVuY3Rpb25TZXQoKSkKKyAgICAgICAgcmV0dXJuIGFuaW0tPnRpbWluZ0Z1bmN0
aW9uKCkuZ2V0KCk7CisgICAgICAgIAorICAgIHJldHVybiAwOworfQorCitib29sIEdyYXBoaWNz
TGF5ZXJDQTo6c2V0QW5pbWF0aW9uRW5kcG9pbnRzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2
YWx1ZUxpc3QsIGNvbnN0IEFuaW1hdGlvbiogYW5pbSwgUGxhdGZvcm1DQUFuaW1hdGlvbiogYmFz
aWNBbmltKQoreworICAgIHN3aXRjaCAodmFsdWVMaXN0LnByb3BlcnR5KCkpIHsKKyAgICBjYXNl
IEFuaW1hdGVkUHJvcGVydHlPcGFjaXR5OiB7CisgICAgICAgIGJhc2ljQW5pbS0+c2V0RnJvbVZh
bHVlKHN0YXRpY19jYXN0PGNvbnN0IEZsb2F0QW5pbWF0aW9uVmFsdWUqPih2YWx1ZUxpc3QuYXQo
MCkpLT52YWx1ZSgpKTsKKyAgICAgICAgYmFzaWNBbmltLT5zZXRUb1ZhbHVlKHN0YXRpY19jYXN0
PGNvbnN0IEZsb2F0QW5pbWF0aW9uVmFsdWUqPih2YWx1ZUxpc3QuYXQoMSkpLT52YWx1ZSgpKTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOyAvLyB3ZSBkb24ndCBhbmltYXRlIGNvbG9yIHlldAorICAgICAgICBicmVhazsK
KyAgICB9CisKKyAgICAvLyBUaGlzIGNvZGVwYXRoIGlzIHVzZWQgZm9yIDIta2V5ZnJhbWUgYW5p
bWF0aW9ucywgc28gd2Ugc3RpbGwgbmVlZCB0byBsb29rIGluIHRoZSBzdGFydAorICAgIC8vIGZv
ciBhIHRpbWluZyBmdW5jdGlvbi4KKyAgICBjb25zdCBUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVu
Y3Rpb24gPSB0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKHZhbHVlTGlzdC5hdCgwKSwg
YW5pbSk7CisgICAgaWYgKHRpbWluZ0Z1bmN0aW9uKQorICAgICAgICBiYXNpY0FuaW0tPnNldFRp
bWluZ0Z1bmN0aW9uKHRpbWluZ0Z1bmN0aW9uKTsKKworICAgIHJldHVybiB0cnVlOworfQorCiti
b29sIEdyYXBoaWNzTGF5ZXJDQTo6c2V0QW5pbWF0aW9uS2V5ZnJhbWVzKGNvbnN0IEtleWZyYW1l
VmFsdWVMaXN0JiB2YWx1ZUxpc3QsIGNvbnN0IEFuaW1hdGlvbiogYW5pbSwgUGxhdGZvcm1DQUFu
aW1hdGlvbioga2V5ZnJhbWVBbmltKQoreworICAgIFZlY3RvcjxmbG9hdD4ga2V5VGltZXM7Cisg
ICAgVmVjdG9yPGZsb2F0PiB2YWx1ZXM7CisgICAgVmVjdG9yPGNvbnN0IFRpbWluZ0Z1bmN0aW9u
Kj4gdGltaW5nRnVuY3Rpb25zOworICAgIAorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB2
YWx1ZUxpc3Quc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgY29uc3QgQW5pbWF0aW9uVmFsdWUqIGN1
clZhbHVlID0gdmFsdWVMaXN0LmF0KGkpOworICAgICAgICBrZXlUaW1lcy5hcHBlbmQoY3VyVmFs
dWUtPmtleVRpbWUoKSk7CisKKyAgICAgICAgc3dpdGNoICh2YWx1ZUxpc3QucHJvcGVydHkoKSkg
eworICAgICAgICBjYXNlIEFuaW1hdGVkUHJvcGVydHlPcGFjaXR5OiB7CisgICAgICAgICAgICBj
b25zdCBGbG9hdEFuaW1hdGlvblZhbHVlKiBmbG9hdFZhbHVlID0gc3RhdGljX2Nhc3Q8Y29uc3Qg
RmxvYXRBbmltYXRpb25WYWx1ZSo+KGN1clZhbHVlKTsKKyAgICAgICAgICAgIHZhbHVlcy5hcHBl
bmQoZmxvYXRWYWx1ZS0+dmFsdWUoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7IC8vIHdl
IGRvbid0IGFuaW1hdGUgY29sb3IgeWV0CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
CisgICAgICAgIHRpbWluZ0Z1bmN0aW9ucy5hcHBlbmQodGltaW5nRnVuY3Rpb25Gb3JBbmltYXRp
b25WYWx1ZShjdXJWYWx1ZSwgYW5pbSkpOworICAgIH0KKyAgICAKKyAgICAvLyBXZSB0b3NzIHRo
ZSBsYXN0IHRmQXJyYXkgdmFsdWUgYmVjYXVzZSBpdCBoYXMgdG8gb25lIHNob3J0ZXIgdGhhbiB0
aGUgb3RoZXJzLgorICAgIHRpbWluZ0Z1bmN0aW9ucy5yZW1vdmVMYXN0KCk7CisKKyAgICBrZXlm
cmFtZUFuaW0tPnNldEtleVRpbWVzKGtleVRpbWVzKTsKKyAgICBrZXlmcmFtZUFuaW0tPnNldFZh
bHVlcyh2YWx1ZXMpOworICAgIGtleWZyYW1lQW5pbS0+c2V0VGltaW5nRnVuY3Rpb25zKHRpbWlu
Z0Z1bmN0aW9ucyk7CisgICAgCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgR3JhcGhpY3NM
YXllckNBOjpzZXRUcmFuc2Zvcm1BbmltYXRpb25FbmRwb2ludHMoY29uc3QgS2V5ZnJhbWVWYWx1
ZUxpc3QmIHZhbHVlTGlzdCwgY29uc3QgQW5pbWF0aW9uKiBhbmltLCBQbGF0Zm9ybUNBQW5pbWF0
aW9uKiBiYXNpY0FuaW0sIGludCBmdW5jdGlvbkluZGV4LCBUcmFuc2Zvcm1PcGVyYXRpb246Ok9w
ZXJhdGlvblR5cGUgdHJhbnNmb3JtT3BUeXBlLCBib29sIGlzTWF0cml4QW5pbWF0aW9uLCBjb25z
dCBJbnRTaXplJiBib3hTaXplKQoreworICAgIEFTU0VSVCh2YWx1ZUxpc3Quc2l6ZSgpID09IDIp
OworICAgIGNvbnN0IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKiBzdGFydFZhbHVlID0gc3RhdGlj
X2Nhc3Q8Y29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUqPih2YWx1ZUxpc3QuYXQoMCkpOwor
ICAgIGNvbnN0IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKiBlbmRWYWx1ZSA9IHN0YXRpY19jYXN0
PGNvbnN0IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKj4odmFsdWVMaXN0LmF0KDEpKTsKKyAgICAK
KyAgICBpZiAoaXNNYXRyaXhBbmltYXRpb24pIHsKKyAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRy
aXggZnJvbVRyYW5zZm9ybSwgdG9UcmFuc2Zvcm07CisgICAgICAgIHN0YXJ0VmFsdWUtPnZhbHVl
KCktPmFwcGx5KGJveFNpemUsIGZyb21UcmFuc2Zvcm0pOworICAgICAgICBlbmRWYWx1ZS0+dmFs
dWUoKS0+YXBwbHkoYm94U2l6ZSwgdG9UcmFuc2Zvcm0pOworCisgICAgICAgIC8vIElmIGFueSBt
YXRyaXggaXMgc2luZ3VsYXIsIENBIHdvbid0IGFuaW1hdGUgaXQgY29ycmVjdGx5LiBTbyBmYWxs
IGJhY2sgdG8gc29mdHdhcmUgYW5pbWF0aW9uCisgICAgICAgIGlmICghZnJvbVRyYW5zZm9ybS5p
c0ludmVydGlibGUoKSB8fCAhdG9UcmFuc2Zvcm0uaXNJbnZlcnRpYmxlKCkpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAKKyAgICAgICAgYmFzaWNBbmltLT5zZXRGcm9t
VmFsdWUoZnJvbVRyYW5zZm9ybSk7CisgICAgICAgIGJhc2ljQW5pbS0+c2V0VG9WYWx1ZSh0b1Ry
YW5zZm9ybSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKGlzVHJhbnNmb3JtVHlwZU51bWJl
cih0cmFuc2Zvcm1PcFR5cGUpKSB7CisgICAgICAgICAgICBmbG9hdCB2YWx1ZTsKKyAgICAgICAg
ICAgIGdldFRyYW5zZm9ybUZ1bmN0aW9uVmFsdWUoc3RhcnRWYWx1ZS0+dmFsdWUoKS0+YXQoZnVu
Y3Rpb25JbmRleCksIHRyYW5zZm9ybU9wVHlwZSwgYm94U2l6ZSwgdmFsdWUpOworICAgICAgICAg
ICAgYmFzaWNBbmltLT5zZXRGcm9tVmFsdWUodmFsdWUpOworICAgICAgICAgICAgZ2V0VHJhbnNm
b3JtRnVuY3Rpb25WYWx1ZShlbmRWYWx1ZS0+dmFsdWUoKS0+YXQoZnVuY3Rpb25JbmRleCksIHRy
YW5zZm9ybU9wVHlwZSwgYm94U2l6ZSwgdmFsdWUpOworICAgICAgICAgICAgYmFzaWNBbmltLT5z
ZXRUb1ZhbHVlKHZhbHVlKTsKKyAgICAgICAgfSBlbHNlIGlmIChpc1RyYW5zZm9ybVR5cGVGbG9h
dFBvaW50M0QodHJhbnNmb3JtT3BUeXBlKSkgeworICAgICAgICAgICAgRmxvYXRQb2ludDNEIHZh
bHVlOworICAgICAgICAgICAgZ2V0VHJhbnNmb3JtRnVuY3Rpb25WYWx1ZShzdGFydFZhbHVlLT52
YWx1ZSgpLT5hdChmdW5jdGlvbkluZGV4KSwgdHJhbnNmb3JtT3BUeXBlLCBib3hTaXplLCB2YWx1
ZSk7CisgICAgICAgICAgICBiYXNpY0FuaW0tPnNldEZyb21WYWx1ZSh2YWx1ZSk7CisgICAgICAg
ICAgICBnZXRUcmFuc2Zvcm1GdW5jdGlvblZhbHVlKGVuZFZhbHVlLT52YWx1ZSgpLT5hdChmdW5j
dGlvbkluZGV4KSwgdHJhbnNmb3JtT3BUeXBlLCBib3hTaXplLCB2YWx1ZSk7CisgICAgICAgICAg
ICBiYXNpY0FuaW0tPnNldFRvVmFsdWUodmFsdWUpOworICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdmFsdWU7CisgICAgICAgICAgICBnZXRUcmFuc2Zv
cm1GdW5jdGlvblZhbHVlKHN0YXJ0VmFsdWUtPnZhbHVlKCktPmF0KGZ1bmN0aW9uSW5kZXgpLCB0
cmFuc2Zvcm1PcFR5cGUsIGJveFNpemUsIHZhbHVlKTsKKyAgICAgICAgICAgIGJhc2ljQW5pbS0+
c2V0RnJvbVZhbHVlKHZhbHVlKTsKKyAgICAgICAgICAgIGdldFRyYW5zZm9ybUZ1bmN0aW9uVmFs
dWUoZW5kVmFsdWUtPnZhbHVlKCktPmF0KGZ1bmN0aW9uSW5kZXgpLCB0cmFuc2Zvcm1PcFR5cGUs
IGJveFNpemUsIHZhbHVlKTsKKyAgICAgICAgICAgIGJhc2ljQW5pbS0+c2V0VG9WYWx1ZSh2YWx1
ZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBUaGlzIGNvZGVwYXRoIGlzIHVzZWQgZm9y
IDIta2V5ZnJhbWUgYW5pbWF0aW9ucywgc28gd2Ugc3RpbGwgbmVlZCB0byBsb29rIGluIHRoZSBz
dGFydAorICAgIC8vIGZvciBhIHRpbWluZyBmdW5jdGlvbi4KKyAgICBjb25zdCBUaW1pbmdGdW5j
dGlvbiogdGltaW5nRnVuY3Rpb24gPSB0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKHZh
bHVlTGlzdC5hdCgwKSwgYW5pbSk7CisgICAgYmFzaWNBbmltLT5zZXRUaW1pbmdGdW5jdGlvbih0
aW1pbmdGdW5jdGlvbik7CisKKyNpZiBIQVZFX01PREVSTl9RVUFSVFpDT1JFCisgICAgUGxhdGZv
cm1DQUFuaW1hdGlvbjo6VmFsdWVGdW5jdGlvblR5cGUgdmFsdWVGdW5jdGlvbiA9IGdldFZhbHVl
RnVuY3Rpb25OYW1lRm9yVHJhbnNmb3JtT3BlcmF0aW9uKHRyYW5zZm9ybU9wVHlwZSk7CisgICAg
aWYgKHZhbHVlRnVuY3Rpb24gIT0gUGxhdGZvcm1DQUFuaW1hdGlvbjo6Tm9WYWx1ZUZ1bmN0aW9u
KQorICAgICAgICBiYXNpY0FuaW0tPnNldFZhbHVlRnVuY3Rpb24odmFsdWVGdW5jdGlvbik7Cisj
ZW5kaWYKKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIEdyYXBoaWNzTGF5ZXJDQTo6c2V0
VHJhbnNmb3JtQW5pbWF0aW9uS2V5ZnJhbWVzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1
ZUxpc3QsIGNvbnN0IEFuaW1hdGlvbiogYW5pbWF0aW9uLCBQbGF0Zm9ybUNBQW5pbWF0aW9uKiBr
ZXlmcmFtZUFuaW0sIGludCBmdW5jdGlvbkluZGV4LCBUcmFuc2Zvcm1PcGVyYXRpb246Ok9wZXJh
dGlvblR5cGUgdHJhbnNmb3JtT3BUeXBlLCBib29sIGlzTWF0cml4QW5pbWF0aW9uLCBjb25zdCBJ
bnRTaXplJiBib3hTaXplKQoreworICAgIFZlY3RvcjxmbG9hdD4ga2V5VGltZXM7CisgICAgVmVj
dG9yPGZsb2F0PiBmbG9hdFZhbHVlczsKKyAgICBWZWN0b3I8RmxvYXRQb2ludDNEPiBmbG9hdFBv
aW50M0RWYWx1ZXM7CisgICAgVmVjdG9yPFRyYW5zZm9ybWF0aW9uTWF0cml4PiB0cmFuc2Zvcm1h
dGlvbk1hdHJpeFZhbHVlczsKKyAgICBWZWN0b3I8Y29uc3QgVGltaW5nRnVuY3Rpb24qPiB0aW1p
bmdGdW5jdGlvbnM7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdmFsdWVMaXN0LnNp
emUoKTsgKytpKSB7CisgICAgICAgIGNvbnN0IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKiBjdXJW
YWx1ZSA9IHN0YXRpY19jYXN0PGNvbnN0IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKj4odmFsdWVM
aXN0LmF0KGkpKTsKKyAgICAgICAga2V5VGltZXMuYXBwZW5kKGN1clZhbHVlLT5rZXlUaW1lKCkp
OworCisgICAgICAgIGlmIChpc01hdHJpeEFuaW1hdGlvbikgeworICAgICAgICAgICAgVHJhbnNm
b3JtYXRpb25NYXRyaXggdHJhbnNmb3JtOworICAgICAgICAgICAgY3VyVmFsdWUtPnZhbHVlKCkt
PmFwcGx5KGJveFNpemUsIHRyYW5zZm9ybSk7CisKKyAgICAgICAgICAgIC8vIElmIGFueSBtYXRy
aXggaXMgc2luZ3VsYXIsIENBIHdvbid0IGFuaW1hdGUgaXQgY29ycmVjdGx5LiBTbyBmYWxsIGJh
Y2sgdG8gc29mdHdhcmUgYW5pbWF0aW9uCisgICAgICAgICAgICBpZiAoIXRyYW5zZm9ybS5pc0lu
dmVydGlibGUoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAg
IHRyYW5zZm9ybWF0aW9uTWF0cml4VmFsdWVzLmFwcGVuZCh0cmFuc2Zvcm0pOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9uKiB0cmFuc2Zvcm1P
cCA9IGN1clZhbHVlLT52YWx1ZSgpLT5hdChmdW5jdGlvbkluZGV4KTsKKyAgICAgICAgICAgIGlm
IChpc1RyYW5zZm9ybVR5cGVOdW1iZXIodHJhbnNmb3JtT3BUeXBlKSkgeworICAgICAgICAgICAg
ICAgIGZsb2F0IHZhbHVlOworICAgICAgICAgICAgICAgIGdldFRyYW5zZm9ybUZ1bmN0aW9uVmFs
dWUodHJhbnNmb3JtT3AsIHRyYW5zZm9ybU9wVHlwZSwgYm94U2l6ZSwgdmFsdWUpOworICAgICAg
ICAgICAgICAgIGZsb2F0VmFsdWVzLmFwcGVuZCh2YWx1ZSk7CisgICAgICAgICAgICB9IGVsc2Ug
aWYgKGlzVHJhbnNmb3JtVHlwZUZsb2F0UG9pbnQzRCh0cmFuc2Zvcm1PcFR5cGUpKSB7CisgICAg
ICAgICAgICAgICAgRmxvYXRQb2ludDNEIHZhbHVlOworICAgICAgICAgICAgICAgIGdldFRyYW5z
Zm9ybUZ1bmN0aW9uVmFsdWUodHJhbnNmb3JtT3AsIHRyYW5zZm9ybU9wVHlwZSwgYm94U2l6ZSwg
dmFsdWUpOworICAgICAgICAgICAgICAgIGZsb2F0UG9pbnQzRFZhbHVlcy5hcHBlbmQodmFsdWUp
OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCB2YWx1ZTsKKyAgICAgICAgICAgICAgICBnZXRUcmFuc2Zvcm1GdW5jdGlvblZhbHVlKHRy
YW5zZm9ybU9wLCB0cmFuc2Zvcm1PcFR5cGUsIGJveFNpemUsIHZhbHVlKTsKKyAgICAgICAgICAg
ICAgICB0cmFuc2Zvcm1hdGlvbk1hdHJpeFZhbHVlcy5hcHBlbmQodmFsdWUpOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisKKyAgICAgICAgY29uc3QgVGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1
bmN0aW9uID0gdGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShjdXJWYWx1ZSwgYW5pbWF0
aW9uKTsKKyAgICAgICAgdGltaW5nRnVuY3Rpb25zLmFwcGVuZCh0aW1pbmdGdW5jdGlvbik7Cisg
ICAgfQorICAgIAorICAgIC8vIFdlIHRvc3MgdGhlIGxhc3QgdGZBcnJheSB2YWx1ZSBiZWNhdXNl
IGl0IGhhcyB0byBvbmUgc2hvcnRlciB0aGFuIHRoZSBvdGhlcnMuCisgICAgdGltaW5nRnVuY3Rp
b25zLnJlbW92ZUxhc3QoKTsKKworICAgIGtleWZyYW1lQW5pbS0+c2V0S2V5VGltZXMoa2V5VGlt
ZXMpOworICAgIAorICAgIGlmIChpc1RyYW5zZm9ybVR5cGVOdW1iZXIodHJhbnNmb3JtT3BUeXBl
KSkKKyAgICAgICAga2V5ZnJhbWVBbmltLT5zZXRWYWx1ZXMoZmxvYXRWYWx1ZXMpOworICAgIGVs
c2UgaWYgKGlzVHJhbnNmb3JtVHlwZUZsb2F0UG9pbnQzRCh0cmFuc2Zvcm1PcFR5cGUpKQorICAg
ICAgICBrZXlmcmFtZUFuaW0tPnNldFZhbHVlcyhmbG9hdFBvaW50M0RWYWx1ZXMpOworICAgIGVs
c2UKKyAgICAgICAga2V5ZnJhbWVBbmltLT5zZXRWYWx1ZXModHJhbnNmb3JtYXRpb25NYXRyaXhW
YWx1ZXMpOworICAgICAgICAKKyAgICBrZXlmcmFtZUFuaW0tPnNldFRpbWluZ0Z1bmN0aW9ucyh0
aW1pbmdGdW5jdGlvbnMpOworCisjaWYgSEFWRV9NT0RFUk5fUVVBUlRaQ09SRQorICAgIFBsYXRm
b3JtQ0FBbmltYXRpb246OlZhbHVlRnVuY3Rpb25UeXBlIHZhbHVlRnVuY3Rpb24gPSBnZXRWYWx1
ZUZ1bmN0aW9uTmFtZUZvclRyYW5zZm9ybU9wZXJhdGlvbih0cmFuc2Zvcm1PcFR5cGUpOworICAg
IGlmICh2YWx1ZUZ1bmN0aW9uICE9IFBsYXRmb3JtQ0FBbmltYXRpb246Ok5vVmFsdWVGdW5jdGlv
bikKKyAgICAgICAga2V5ZnJhbWVBbmltLT5zZXRWYWx1ZUZ1bmN0aW9uKHZhbHVlRnVuY3Rpb24p
OworI2VuZGlmCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpz
dXNwZW5kQW5pbWF0aW9ucyhkb3VibGUgdGltZSkKK3sKKyAgICBkb3VibGUgdCA9IGN1cnJlbnRU
aW1lVG9NZWRpYVRpbWUodGltZSA/IHRpbWUgOiBjdXJyZW50VGltZSgpKTsKKyAgICBwcmltYXJ5
TGF5ZXIoKS0+c2V0U3BlZWQoMCk7CisgICAgcHJpbWFyeUxheWVyKCktPnNldFRpbWVPZmZzZXQo
dCk7CisKKyAgICAvLyBTdXNwZW5kIHRoZSBhbmltYXRpb25zIG9uIHRoZSBjbG9uZXMgdG9vLgor
ICAgIGlmIChMYXllck1hcCogbGF5ZXJDbG9uZU1hcCA9IHByaW1hcnlMYXllckNsb25lcygpKSB7
CisgICAgICAgIExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBsYXllckNsb25lTWFwLT5l
bmQoKTsKKyAgICAgICAgZm9yIChMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBsYXllckNs
b25lTWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgICAgIGl0LT5zZWNv
bmQtPnNldFNwZWVkKDApOworICAgICAgICAgICAgaXQtPnNlY29uZC0+c2V0VGltZU9mZnNldCh0
KTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnJlc3VtZUFu
aW1hdGlvbnMoKQoreworICAgIHByaW1hcnlMYXllcigpLT5zZXRTcGVlZCgxKTsKKyAgICBwcmlt
YXJ5TGF5ZXIoKS0+c2V0VGltZU9mZnNldCgwKTsKKworICAgIC8vIFJlc3VtZSB0aGUgYW5pbWF0
aW9ucyBvbiB0aGUgY2xvbmVzIHRvby4KKyAgICBpZiAoTGF5ZXJNYXAqIGxheWVyQ2xvbmVNYXAg
PSBwcmltYXJ5TGF5ZXJDbG9uZXMoKSkgeworICAgICAgICBMYXllck1hcDo6Y29uc3RfaXRlcmF0
b3IgZW5kID0gbGF5ZXJDbG9uZU1hcC0+ZW5kKCk7CisgICAgICAgIGZvciAoTGF5ZXJNYXA6OmNv
bnN0X2l0ZXJhdG9yIGl0ID0gbGF5ZXJDbG9uZU1hcC0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0
KSB7CisgICAgICAgICAgICBpdC0+c2Vjb25kLT5zZXRTcGVlZCgxKTsKKyAgICAgICAgICAgIGl0
LT5zZWNvbmQtPnNldFRpbWVPZmZzZXQoMCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK1BsYXRm
b3JtQ0FMYXllciogR3JhcGhpY3NMYXllckNBOjpob3N0TGF5ZXJGb3JTdWJsYXllcnMoKSBjb25z
dAoreworICAgIHJldHVybiBtX3N0cnVjdHVyYWxMYXllci5nZXQoKSA/IG1fc3RydWN0dXJhbExh
eWVyLmdldCgpIDogbV9sYXllci5nZXQoKTsgCit9CisKK1BsYXRmb3JtQ0FMYXllciogR3JhcGhp
Y3NMYXllckNBOjpsYXllckZvclN1cGVybGF5ZXIoKSBjb25zdAoreworICAgIHJldHVybiBtX3N0
cnVjdHVyYWxMYXllciA/IG1fc3RydWN0dXJhbExheWVyLmdldCgpIDogbV9sYXllci5nZXQoKTsK
K30KKworUGxhdGZvcm1DQUxheWVyKiBHcmFwaGljc0xheWVyQ0E6OmFuaW1hdGVkTGF5ZXIoQW5p
bWF0ZWRQcm9wZXJ0eUlEIHByb3BlcnR5KSBjb25zdAoreworICAgIHJldHVybiAocHJvcGVydHkg
PT0gQW5pbWF0ZWRQcm9wZXJ0eUJhY2tncm91bmRDb2xvcikgPyBtX2NvbnRlbnRzTGF5ZXIuZ2V0
KCkgOiBwcmltYXJ5TGF5ZXIoKTsKK30KKworR3JhcGhpY3NMYXllckNBOjpMYXllck1hcCogR3Jh
cGhpY3NMYXllckNBOjphbmltYXRlZExheWVyQ2xvbmVzKEFuaW1hdGVkUHJvcGVydHlJRCBwcm9w
ZXJ0eSkgY29uc3QKK3sKKyAgICByZXR1cm4gKHByb3BlcnR5ID09IEFuaW1hdGVkUHJvcGVydHlC
YWNrZ3JvdW5kQ29sb3IpID8gbV9jb250ZW50c0xheWVyQ2xvbmVzLmdldCgpIDogcHJpbWFyeUxh
eWVyQ2xvbmVzKCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXREZWJ1Z0JhY2tncm91
bmRDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCit7ICAgIAorICAgIGlmIChjb2xvci5pc1ZhbGlk
KCkpCisgICAgICAgIG1fbGF5ZXItPnNldEJhY2tncm91bmRDb2xvcihjb2xvcik7CisgICAgZWxz
ZQorICAgICAgICBtX2xheWVyLT5zZXRCYWNrZ3JvdW5kQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50
KTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldERlYnVnQm9yZGVyKGNvbnN0IENvbG9y
JiBjb2xvciwgZmxvYXQgYm9yZGVyV2lkdGgpCit7ICAgIAorICAgIGlmIChjb2xvci5pc1ZhbGlk
KCkpIHsKKyAgICAgICAgbV9sYXllci0+c2V0Qm9yZGVyQ29sb3IoY29sb3IpOworICAgICAgICBt
X2xheWVyLT5zZXRCb3JkZXJXaWR0aChib3JkZXJXaWR0aCk7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgbV9sYXllci0+c2V0Qm9yZGVyQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50KTsKKyAgICAgICAg
bV9sYXllci0+c2V0Qm9yZGVyV2lkdGgoMCk7CisgICAgfQorfQorCitGbG9hdFNpemUgR3JhcGhp
Y3NMYXllckNBOjpjb25zdHJhaW5lZFNpemUoKSBjb25zdAoreworICAgIGZsb2F0IHRpbGVDb2x1
bW5zID0gY2VpbGYobV9zaXplLndpZHRoKCkgLyBrVGlsZWRMYXllclRpbGVTaXplKTsKKyAgICBm
bG9hdCB0aWxlUm93cyA9IGNlaWxmKG1fc2l6ZS5oZWlnaHQoKSAvIGtUaWxlZExheWVyVGlsZVNp
emUpOworICAgIGRvdWJsZSBudW1UaWxlcyA9IHRpbGVDb2x1bW5zICogdGlsZVJvd3M7CisgICAg
CisgICAgRmxvYXRTaXplIGNvbnN0cmFpbmVkU2l6ZSA9IG1fc2l6ZTsKKyAgICBjb25zdCB1bnNp
Z25lZCBjTWF4VGlsZUNvdW50ID0gNTEyOworICAgIHdoaWxlIChudW1UaWxlcyA+IGNNYXhUaWxl
Q291bnQpIHsKKyAgICAgICAgLy8gQ29uc3RyYWluIHRoZSB3aWRlciBkaW1lbnNpb24uCisgICAg
ICAgIGlmIChjb25zdHJhaW5lZFNpemUud2lkdGgoKSA+PSBjb25zdHJhaW5lZFNpemUuaGVpZ2h0
KCkpIHsKKyAgICAgICAgICAgIHRpbGVDb2x1bW5zID0gbWF4KGZsb29yZihjTWF4VGlsZUNvdW50
IC8gdGlsZVJvd3MpLCAxLjBmKTsKKyAgICAgICAgICAgIGNvbnN0cmFpbmVkU2l6ZS5zZXRXaWR0
aCh0aWxlQ29sdW1ucyAqIGtUaWxlZExheWVyVGlsZVNpemUpOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgdGlsZVJvd3MgPSBtYXgoZmxvb3JmKGNNYXhUaWxlQ291bnQgLyB0aWxlQ29s
dW1ucyksIDEuMGYpOworICAgICAgICAgICAgY29uc3RyYWluZWRTaXplLnNldEhlaWdodCh0aWxl
Um93cyAqIGtUaWxlZExheWVyVGlsZVNpemUpOworICAgICAgICB9CisgICAgICAgIG51bVRpbGVz
ID0gdGlsZUNvbHVtbnMgKiB0aWxlUm93czsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIGNvbnN0
cmFpbmVkU2l6ZTsKK30KKworYm9vbCBHcmFwaGljc0xheWVyQ0E6OnJlcXVpcmVzVGlsZWRMYXll
cihjb25zdCBGbG9hdFNpemUmIHNpemUpIGNvbnN0Cit7CisgICAgaWYgKCFtX2RyYXdzQ29udGVu
dCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gRklYTUU6IGNhdGNoIHplcm8tc2l6
ZSBoZWlnaHQgb3Igd2lkdGggaGVyZSAob3IgZWFybGllcik/CisgICAgcmV0dXJuIHNpemUud2lk
dGgoKSA+IGNNYXhQaXhlbERpbWVuc2lvbiB8fCBzaXplLmhlaWdodCgpID4gY01heFBpeGVsRGlt
ZW5zaW9uOworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c3dhcEZyb21PclRvVGlsZWRMYXll
cihib29sIHVzZVRpbGVkTGF5ZXIpCit7CisgICAgaWYgKHVzZVRpbGVkTGF5ZXIgPT0gbV91c2lu
Z1RpbGVkTGF5ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIENHU2l6ZSB0aWxlU2l6ZSA9IENH
U2l6ZU1ha2Uoa1RpbGVkTGF5ZXJUaWxlU2l6ZSwga1RpbGVkTGF5ZXJUaWxlU2l6ZSk7CisKKyAg
ICBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBvbGRMYXllciA9IG1fbGF5ZXI7CisgICAgCisgICAg
bV9sYXllciA9IFBsYXRmb3JtQ0FMYXllcjo6Y3JlYXRlKHVzZVRpbGVkTGF5ZXIgPyBQbGF0Zm9y
bUNBTGF5ZXI6OkxheWVyVHlwZVdlYlRpbGVkTGF5ZXIgOiBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVy
VHlwZVdlYkxheWVyLCB0aGlzKTsKKworICAgIG1fdXNpbmdUaWxlZExheWVyID0gdXNlVGlsZWRM
YXllcjsKKyAgICAKKyAgICBpZiAodXNlVGlsZWRMYXllcikgeworI2lmICFIQVZFX01PREVSTl9R
VUFSVFpDT1JFCisgICAgICAgIC8vIFRpbGVkIGxheWVyIGhhcyBpc3N1ZXMgd2l0aCBmbGlwcGVk
IGNvb3JkaW5hdGVzLgorICAgICAgICBzZXRDb250ZW50c09yaWVudGF0aW9uKENvbXBvc2l0aW5n
Q29vcmRpbmF0ZXNUb3BEb3duKTsKKyNlbmRpZgorICAgIH0gZWxzZSB7CisjaWYgIUhBVkVfTU9E
RVJOX1FVQVJUWkNPUkUKKyAgICAgICAgc2V0Q29udGVudHNPcmllbnRhdGlvbihHcmFwaGljc0xh
eWVyQ0E6OmRlZmF1bHRDb250ZW50c09yaWVudGF0aW9uKCkpOworI2VuZGlmCisgICAgfQorCisg
ICAgbV9sYXllci0+YWRvcHRTdWJsYXllcnMob2xkTGF5ZXIuZ2V0KCkpOworICAgIAorICAgIG9s
ZExheWVyLT5zdXBlcmxheWVyKCktPnJlcGxhY2VTdWJsYXllcihvbGRMYXllci5nZXQoKSwgbV9s
YXllci5nZXQoKSk7CisKKyAgICB1cGRhdGVDb250ZW50c1RyYW5zZm9ybSgpOworCisgICAgdXBk
YXRlTGF5ZXJQb3NpdGlvbigpOworICAgIHVwZGF0ZUxheWVyU2l6ZSgpOworICAgIHVwZGF0ZUFu
Y2hvclBvaW50KCk7CisgICAgdXBkYXRlVHJhbnNmb3JtKCk7CisgICAgdXBkYXRlQ2hpbGRyZW5U
cmFuc2Zvcm0oKTsKKyAgICB1cGRhdGVNYXNrc1RvQm91bmRzKCk7CisgICAgdXBkYXRlQ29udGVu
dHNPcGFxdWUoKTsKKyAgICB1cGRhdGVCYWNrZmFjZVZpc2liaWxpdHkoKTsKKyAgICB1cGRhdGVM
YXllckJhY2tncm91bmRDb2xvcigpOworICAgIAorICAgIHVwZGF0ZU9wYWNpdHlPbkxheWVyKCk7
CisgICAgCisjaWZuZGVmIE5ERUJVRworICAgIFN0cmluZyBuYW1lID0gU3RyaW5nOjpmb3JtYXQo
IkNBTGF5ZXIoJXApIEdyYXBoaWNzTGF5ZXIoJXApICIsIG1fbGF5ZXIuZ2V0KCksIHRoaXMpICsg
bV9uYW1lOworICAgIG1fbGF5ZXItPnNldE5hbWUobmFtZSk7CisjZW5kaWYKKworICAgIC8vIG1v
dmUgb3ZlciBhbmltYXRpb25zCisgICAgbW92ZU9yQ29weUFuaW1hdGlvbnNGb3JQcm9wZXJ0eShN
b3ZlLCBBbmltYXRlZFByb3BlcnR5V2Via2l0VHJhbnNmb3JtLCBvbGRMYXllci5nZXQoKSwgbV9s
YXllci5nZXQoKSk7CisgICAgbW92ZU9yQ29weUFuaW1hdGlvbnNGb3JQcm9wZXJ0eShNb3ZlLCBB
bmltYXRlZFByb3BlcnR5T3BhY2l0eSwgb2xkTGF5ZXIuZ2V0KCksIG1fbGF5ZXIuZ2V0KCkpOwor
ICAgIG1vdmVPckNvcHlBbmltYXRpb25zRm9yUHJvcGVydHkoTW92ZSwgQW5pbWF0ZWRQcm9wZXJ0
eUJhY2tncm91bmRDb2xvciwgb2xkTGF5ZXIuZ2V0KCksIG1fbGF5ZXIuZ2V0KCkpOworICAgIAor
ICAgIC8vIG5lZWQgdG8gdGVsbCBuZXcgbGF5ZXIgdG8gZHJhdyBpdHNlbGYKKyAgICBzZXROZWVk
c0Rpc3BsYXkoKTsKKyAgICAKKyAgICB1cGRhdGVEZWJ1Z0luZGljYXRvcnMoKTsKK30KKworR3Jh
cGhpY3NMYXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uIEdyYXBoaWNzTGF5
ZXJDQTo6ZGVmYXVsdENvbnRlbnRzT3JpZW50YXRpb24oKSBjb25zdAoreworI2lmICFIQVZFX01P
REVSTl9RVUFSVFpDT1JFCisgICAgLy8gT2xkZXIgUXVhcnR6Q29yZSBkb2VzIG5vdCBzdXBwb3J0
IC1nZW9tZXRyeUZsaXBwZWQsIHNvIHdlIG1hbnVhbGx5IGZsaXAgdGhlIHJvb3QKKyAgICAvLyBs
YXllciBnZW9tZXRyeSwgYW5kIHRoZW4gZmxpcCB0aGUgY29udGVudHMgb2YgZWFjaCBsYXllciBi
YWNrIHNvIHRoYXQgdGhlIENUTSBmb3IgQ0cKKyAgICAvLyBpcyB1bmZsaXBwZWQsIGFsbG93aW5n
IGl0IHRvIGRvIHRoZSBjb3JyZWN0IGZvbnQgYXV0by1oaW50aW5nLgorICAgIHJldHVybiBDb21w
b3NpdGluZ0Nvb3JkaW5hdGVzQm90dG9tVXA7CisjZWxzZQorICAgIHJldHVybiBDb21wb3NpdGlu
Z0Nvb3JkaW5hdGVzVG9wRG93bjsKKyNlbmRpZgorfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6
dXBkYXRlQ29udGVudHNUcmFuc2Zvcm0oKQoreworI2lmICFIQVZFX01PREVSTl9RVUFSVFpDT1JF
CisgICAgaWYgKGNvbnRlbnRzT3JpZW50YXRpb24oKSA9PSBDb21wb3NpdGluZ0Nvb3JkaW5hdGVz
Qm90dG9tVXApIHsKKyAgICAgICAgQ0dBZmZpbmVUcmFuc2Zvcm0gY29udGVudHNUcmFuc2Zvcm0g
PSBDR0FmZmluZVRyYW5zZm9ybU1ha2VTY2FsZSgxLCAtMSk7CisgICAgICAgIGNvbnRlbnRzVHJh
bnNmb3JtID0gQ0dBZmZpbmVUcmFuc2Zvcm1UcmFuc2xhdGUoY29udGVudHNUcmFuc2Zvcm0sIDAs
IC1bbV9sYXllci5nZXQoKSBib3VuZHNdLnNpemUuaGVpZ2h0KTsKKyAgICAgICAgW21fbGF5ZXIu
Z2V0KCkgc2V0Q29udGVudHNUcmFuc2Zvcm06Y29udGVudHNUcmFuc2Zvcm1dOworICAgIH0KKyNl
bmRpZgorfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0dXBDb250ZW50c0xheWVyKFBsYXRm
b3JtQ0FMYXllciogY29udGVudHNMYXllcikKK3sKKyAgICAvLyBUdXJuIG9mZiBpbXBsaWNpdCBh
bmltYXRpb25zIG9uIHRoZSBpbm5lciBsYXllci4KKyAgICBjb250ZW50c0xheWVyLT5zZXRNYXNr
c1RvQm91bmRzKHRydWUpOworCisgICAgaWYgKGRlZmF1bHRDb250ZW50c09yaWVudGF0aW9uKCkg
PT0gQ29tcG9zaXRpbmdDb29yZGluYXRlc0JvdHRvbVVwKSB7CisgICAgICAgIFRyYW5zZm9ybWF0
aW9uTWF0cml4IGZsaXBwZXIoCisgICAgICAgICAgICAxLjBmLCAwLjBmLCAwLjBmLCAwLjBmLAor
ICAgICAgICAgICAgMC4wZiwgLTEuMGYsIDAuMGYsIDAuMGYsCisgICAgICAgICAgICAwLjBmLCAw
LjBmLCAxLjBmLCAwLjBmLAorICAgICAgICAgICAgMC4wZiwgMC4wZiwgMC4wZiwgMS4wZik7Cisg
ICAgICAgIGNvbnRlbnRzTGF5ZXItPnNldFRyYW5zZm9ybShmbGlwcGVyKTsKKyAgICAgICAgY29u
dGVudHNMYXllci0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludDNEKDAsIDEsIDApKTsKKyAgICB9
IGVsc2UKKyAgICAgICAgY29udGVudHNMYXllci0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludDNE
KCkpOworCisgICAgaWYgKHNob3dEZWJ1Z0JvcmRlcnMoKSkgeworICAgICAgICBjb250ZW50c0xh
eWVyLT5zZXRCb3JkZXJDb2xvcihDb2xvcigwLCAwLCAxMjgsIDE4MCkpOworICAgICAgICBjb250
ZW50c0xheWVyLT5zZXRCb3JkZXJXaWR0aCgxLjBmKTsKKyAgICB9Cit9CisKK1Bhc3NSZWZQdHI8
UGxhdGZvcm1DQUxheWVyPiBHcmFwaGljc0xheWVyQ0E6OmZpbmRPck1ha2VDbG9uZShDbG9uZUlE
IGNsb25lSUQsIFBsYXRmb3JtQ0FMYXllciAqc291cmNlTGF5ZXIsIExheWVyTWFwKiBjbG9uZXMs
IENsb25lTGV2ZWwgY2xvbmVMZXZlbCkKK3sKKyAgICBpZiAoIXNvdXJjZUxheWVyKQorICAgICAg
ICByZXR1cm4gMDsKKworICAgIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IHJlc3VsdExheWVyOwor
CisgICAgLy8gQWRkIHdpdGggYSBkdW1teSB2YWx1ZSB0byBnZXQgYW4gaXRlcmF0b3IgZm9yIHRo
ZSBpbnNlcnRpb24gcG9zaXRpb24sIGFuZCBhIGJvb2xlYW4gdGhhdCB0ZWxscworICAgIC8vIHVz
IHdoZXRoZXIgdGhlcmUncyBhbiBpdGVtIHRoZXJlLiBUaGlzIHRlY2huaXF1ZSBhdm9pZHMgdHdv
IGhhc2ggbG9va3Vwcy4KKyAgICBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBkdW1teTsKKyAgICBw
YWlyPExheWVyTWFwOjppdGVyYXRvciwgYm9vbD4gYWRkUmVzdWx0ID0gY2xvbmVzLT5hZGQoY2xv
bmVJRCwgZHVtbXkpOworICAgIGlmICghYWRkUmVzdWx0LnNlY29uZCkgeworICAgICAgICAvLyBW
YWx1ZSB3YXMgbm90IGFkZGVkLCBzbyBpdCBleGlzdHMgYWxyZWFkeS4KKyAgICAgICAgcmVzdWx0
TGF5ZXIgPSBhZGRSZXN1bHQuZmlyc3QtPnNlY29uZC5nZXQoKTsKKyAgICB9IGVsc2UgeworICAg
ICAgICByZXN1bHRMYXllciA9IGNsb25lTGF5ZXIoc291cmNlTGF5ZXIsIGNsb25lTGV2ZWwpOwor
I2lmbmRlZiBOREVCVUcKKyAgICAgICAgcmVzdWx0TGF5ZXItPnNldE5hbWUoU3RyaW5nOjpmb3Jt
YXQoIkNsb25lICVkIG9mIGxheWVyICVwIiwgY2xvbmVJRFswVV0sIHNvdXJjZUxheWVyKSk7Cisj
ZW5kaWYKKyAgICAgICAgYWRkUmVzdWx0LmZpcnN0LT5zZWNvbmQgPSByZXN1bHRMYXllcjsKKyAg
ICB9CisKKyAgICByZXR1cm4gcmVzdWx0TGF5ZXI7Cit9ICAgCisKK3ZvaWQgR3JhcGhpY3NMYXll
ckNBOjplbnN1cmVDbG9uZUxheWVycyhDbG9uZUlEIGNsb25lSUQsIFJlZlB0cjxQbGF0Zm9ybUNB
TGF5ZXI+JiBwcmltYXJ5TGF5ZXIsIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+JiBzdHJ1Y3R1cmFs
TGF5ZXIsIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+JiBjb250ZW50c0xheWVyLCBDbG9uZUxldmVs
IGNsb25lTGV2ZWwpCit7CisgICAgc3RydWN0dXJhbExheWVyID0gbmlsOworICAgIGNvbnRlbnRz
TGF5ZXIgPSBuaWw7CisKKyAgICBpZiAoIW1fbGF5ZXJDbG9uZXMpCisgICAgICAgIG1fbGF5ZXJD
bG9uZXMgPSBuZXcgTGF5ZXJNYXA7CisKKyAgICBpZiAoIW1fc3RydWN0dXJhbExheWVyQ2xvbmVz
ICYmIG1fc3RydWN0dXJhbExheWVyKQorICAgICAgICBtX3N0cnVjdHVyYWxMYXllckNsb25lcyA9
IG5ldyBMYXllck1hcDsKKworICAgIGlmICghbV9jb250ZW50c0xheWVyQ2xvbmVzICYmIG1fY29u
dGVudHNMYXllcikKKyAgICAgICAgbV9jb250ZW50c0xheWVyQ2xvbmVzID0gbmV3IExheWVyTWFw
OworCisgICAgcHJpbWFyeUxheWVyID0gZmluZE9yTWFrZUNsb25lKGNsb25lSUQsIG1fbGF5ZXIu
Z2V0KCksIG1fbGF5ZXJDbG9uZXMuZ2V0KCksIGNsb25lTGV2ZWwpOworICAgIHN0cnVjdHVyYWxM
YXllciA9IGZpbmRPck1ha2VDbG9uZShjbG9uZUlELCBtX3N0cnVjdHVyYWxMYXllci5nZXQoKSwg
bV9zdHJ1Y3R1cmFsTGF5ZXJDbG9uZXMuZ2V0KCksIGNsb25lTGV2ZWwpOworICAgIGNvbnRlbnRz
TGF5ZXIgPSBmaW5kT3JNYWtlQ2xvbmUoY2xvbmVJRCwgbV9jb250ZW50c0xheWVyLmdldCgpLCBt
X2NvbnRlbnRzTGF5ZXJDbG9uZXMuZ2V0KCksIGNsb25lTGV2ZWwpOworfQorCit2b2lkIEdyYXBo
aWNzTGF5ZXJDQTo6cmVtb3ZlQ2xvbmVMYXllcnMoKQoreworICAgIG1fbGF5ZXJDbG9uZXMgPSAw
OworICAgIG1fc3RydWN0dXJhbExheWVyQ2xvbmVzID0gMDsKKyAgICBtX2NvbnRlbnRzTGF5ZXJD
bG9uZXMgPSAwOworfQorCitGbG9hdFBvaW50IEdyYXBoaWNzTGF5ZXJDQTo6cG9zaXRpb25Gb3JD
bG9uZVJvb3RMYXllcigpIGNvbnN0Cit7CisgICAgLy8gVGhpcyBjYW4gZ2V0IGNhbGxlZCBkdXJp
bmcgYSBzeW5jIHdoZW4gd2UndmUganVzdCByZW1vdmVkIHRoZSBtX3JlcGxpY2FMYXllci4KKyAg
ICBpZiAoIW1fcmVwbGljYUxheWVyKQorICAgICAgICByZXR1cm4gRmxvYXRQb2ludCgpOworCisg
ICAgRmxvYXRQb2ludCByZXBsaWNhUG9zaXRpb24gPSBtX3JlcGxpY2FMYXllci0+cmVwbGljYXRl
ZExheWVyUG9zaXRpb24oKTsKKyAgICByZXR1cm4gRmxvYXRQb2ludChyZXBsaWNhUG9zaXRpb24u
eCgpICsgbV9hbmNob3JQb2ludC54KCkgKiBtX3NpemUud2lkdGgoKSwKKyAgICAgICAgICAgICAg
ICAgICAgICByZXBsaWNhUG9zaXRpb24ueSgpICsgbV9hbmNob3JQb2ludC55KCkgKiBtX3NpemUu
aGVpZ2h0KCkpOworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6cHJvcGFnYXRlTGF5ZXJDaGFu
Z2VUb1JlcGxpY2FzKCkKK3sKKyAgICBmb3IgKEdyYXBoaWNzTGF5ZXIqIGN1cnJMYXllciA9IHRo
aXM7IGN1cnJMYXllcjsgY3VyckxheWVyID0gY3VyckxheWVyLT5wYXJlbnQoKSkgeworICAgICAg
ICBHcmFwaGljc0xheWVyQ0EqIGN1cnJMYXllckNBID0gc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXll
ckNBKj4oY3VyckxheWVyKTsKKyAgICAgICAgaWYgKCFjdXJyTGF5ZXJDQS0+aGFzQ2xvbmVMYXll
cnMoKSkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGlmIChjdXJyTGF5ZXJDQS0+cmVw
bGljYUxheWVyKCkpCisgICAgICAgICAgICBzdGF0aWNfY2FzdDxHcmFwaGljc0xheWVyQ0EqPihj
dXJyTGF5ZXJDQS0+cmVwbGljYUxheWVyKCkpLT5ub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoUmVw
bGljYXRlZExheWVyQ2hhbmdlZCk7CisgICAgfQorfQorCitQYXNzUmVmUHRyPFBsYXRmb3JtQ0FM
YXllcj4gR3JhcGhpY3NMYXllckNBOjpmZXRjaENsb25lTGF5ZXJzKEdyYXBoaWNzTGF5ZXIqIHJl
cGxpY2FSb290LCBSZXBsaWNhU3RhdGUmIHJlcGxpY2FTdGF0ZSwgQ2xvbmVMZXZlbCBjbG9uZUxl
dmVsKQoreworICAgIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IHByaW1hcnlMYXllcjsKKyAgICBS
ZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBzdHJ1Y3R1cmFsTGF5ZXI7CisgICAgUmVmUHRyPFBsYXRm
b3JtQ0FMYXllcj4gY29udGVudHNMYXllcjsKKyAgICBlbnN1cmVDbG9uZUxheWVycyhyZXBsaWNh
U3RhdGUuY2xvbmVJRCgpLCBwcmltYXJ5TGF5ZXIsIHN0cnVjdHVyYWxMYXllciwgY29udGVudHNM
YXllciwgY2xvbmVMZXZlbCk7CisKKyAgICBpZiAobV9tYXNrTGF5ZXIpIHsKKyAgICAgICAgUmVm
UHRyPFBsYXRmb3JtQ0FMYXllcj4gbWFza0Nsb25lID0gc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXll
ckNBKj4obV9tYXNrTGF5ZXIpLT5mZXRjaENsb25lTGF5ZXJzKHJlcGxpY2FSb290LCByZXBsaWNh
U3RhdGUsIEludGVybWVkaWF0ZUNsb25lTGV2ZWwpOworICAgICAgICBwcmltYXJ5TGF5ZXItPnNl
dE1hc2sobWFza0Nsb25lLmdldCgpKTsKKyAgICB9CisKKyAgICBpZiAobV9yZXBsaWNhdGVkTGF5
ZXIpIHsKKyAgICAgICAgLy8gV2UgYXJlIGEgcmVwbGljYSBiZWluZyBhc2tlZCBmb3IgY2xvbmVz
IG9mIG91ciBsYXllcnMuCisgICAgICAgIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IHJlcGxpY2FS
b290ID0gcmVwbGljYXRlZExheWVyUm9vdChyZXBsaWNhU3RhdGUpOworICAgICAgICBpZiAoIXJl
cGxpY2FSb290KQorICAgICAgICAgICAgcmV0dXJuIG5pbDsKKworICAgICAgICBpZiAoc3RydWN0
dXJhbExheWVyKSB7CisgICAgICAgICAgICBzdHJ1Y3R1cmFsTGF5ZXItPmluc2VydFN1YmxheWVy
KHJlcGxpY2FSb290LmdldCgpLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBzdHJ1Y3R1cmFsTGF5
ZXI7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHByaW1hcnlMYXllci0+aW5zZXJ0U3Vi
bGF5ZXIocmVwbGljYVJvb3QuZ2V0KCksIDApOworICAgICAgICByZXR1cm4gcHJpbWFyeUxheWVy
OworICAgIH0KKworICAgIGNvbnN0IFZlY3RvcjxHcmFwaGljc0xheWVyKj4mIGNoaWxkTGF5ZXJz
ID0gY2hpbGRyZW4oKTsKKyAgICBWZWN0b3I8UmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gPiBjbG9u
YWxTdWJsYXllcnM7CisKKyAgICBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiByZXBsaWNhTGF5ZXI7
CisgICAgCisgICAgaWYgKG1fcmVwbGljYUxheWVyICYmIG1fcmVwbGljYUxheWVyICE9IHJlcGxp
Y2FSb290KSB7CisgICAgICAgIC8vIFdlIGhhdmUgbmVzdGVkIHJlcGxpY2FzLiBBc2sgdGhlIHJl
cGxpY2EgbGF5ZXIgZm9yIGEgY2xvbmUgb2YgaXRzIGNvbnRlbnRzLgorICAgICAgICByZXBsaWNh
U3RhdGUuc2V0QnJhbmNoVHlwZShSZXBsaWNhU3RhdGU6OlJlcGxpY2FCcmFuY2gpOworICAgICAg
ICByZXBsaWNhTGF5ZXIgPSBzdGF0aWNfY2FzdDxHcmFwaGljc0xheWVyQ0EqPihtX3JlcGxpY2FM
YXllciktPmZldGNoQ2xvbmVMYXllcnMocmVwbGljYVJvb3QsIHJlcGxpY2FTdGF0ZSwgUm9vdENs
b25lTGV2ZWwpOworICAgICAgICByZXBsaWNhU3RhdGUuc2V0QnJhbmNoVHlwZShSZXBsaWNhU3Rh
dGU6OkNoaWxkQnJhbmNoKTsKKyAgICB9CisgICAgCisgICAgaWYgKHJlcGxpY2FMYXllciB8fCBz
dHJ1Y3R1cmFsTGF5ZXIgfHwgY29udGVudHNMYXllciB8fCBjaGlsZExheWVycy5zaXplKCkgPiAw
KSB7CisgICAgICAgIGlmIChzdHJ1Y3R1cmFsTGF5ZXIpIHsKKyAgICAgICAgICAgIC8vIFJlcGxp
Y2FzIHJlbmRlciBiZWhpbmQgdGhlIGFjdHVhbCBsYXllciBjb250ZW50LgorICAgICAgICAgICAg
aWYgKHJlcGxpY2FMYXllcikKKyAgICAgICAgICAgICAgICBjbG9uYWxTdWJsYXllcnMuYXBwZW5k
KHJlcGxpY2FMYXllcik7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBBZGQgdGhl
IHByaW1hcnkgbGF5ZXIgbmV4dC4gRXZlbiBpZiB3ZSBoYXZlIG5lZ2F0aXZlIHotb3JkZXIgY2hp
bGRyZW4sIHRoZSBwcmltYXJ5IGxheWVyIGFsd2F5cyBjb21lcyBiZWhpbmQuCisgICAgICAgICAg
ICBjbG9uYWxTdWJsYXllcnMuYXBwZW5kKHByaW1hcnlMYXllcik7CisgICAgICAgIH0gZWxzZSBp
ZiAoY29udGVudHNMYXllcikgeworICAgICAgICAgICAgLy8gRklYTUU6IGFkZCB0aGUgY29udGVu
dHMgbGF5ZXIgaW4gdGhlIGNvcnJlY3Qgb3JkZXIgd2l0aCBuZWdhdGl2ZSB6LW9yZGVyIGNoaWxk
cmVuLgorICAgICAgICAgICAgLy8gVGhpcyBkb2VzIG5vdCBjYXVzZSB2aXNpYmxlIHJlbmRlcmlu
ZyBpc3N1ZXMgYmVjYXVzZSBjdXJyZW50bHkgY29udGVudHMgbGF5ZXJzIGFyZSBvbmx5IHVzZWQK
KyAgICAgICAgICAgIC8vIGZvciByZXBsYWNlZCBlbGVtZW50cyB0aGF0IGRvbid0IGhhdmUgY2hp
bGRyZW4uCisgICAgICAgICAgICBjbG9uYWxTdWJsYXllcnMuYXBwZW5kKGNvbnRlbnRzTGF5ZXIp
OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICByZXBsaWNhU3RhdGUucHVzaChSZXBsaWNh
U3RhdGU6OkNoaWxkQnJhbmNoKTsKKworICAgICAgICBzaXplX3QgbnVtQ2hpbGRyZW4gPSBjaGls
ZExheWVycy5zaXplKCk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtQ2hpbGRy
ZW47ICsraSkgeworICAgICAgICAgICAgR3JhcGhpY3NMYXllckNBKiBjdXJDaGlsZCA9IHN0YXRp
Y19jYXN0PEdyYXBoaWNzTGF5ZXJDQSo+KGNoaWxkTGF5ZXJzW2ldKTsKKworICAgICAgICAgICAg
UmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gY2hpbGRMYXllciA9IGN1ckNoaWxkLT5mZXRjaENsb25l
TGF5ZXJzKHJlcGxpY2FSb290LCByZXBsaWNhU3RhdGUsIEludGVybWVkaWF0ZUNsb25lTGV2ZWwp
OworICAgICAgICAgICAgaWYgKGNoaWxkTGF5ZXIpCisgICAgICAgICAgICAgICAgY2xvbmFsU3Vi
bGF5ZXJzLmFwcGVuZChjaGlsZExheWVyKTsKKyAgICAgICAgfQorCisgICAgICAgIHJlcGxpY2FT
dGF0ZS5wb3AoKTsKKworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNsb25hbFN1Ymxh
eWVycy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIGNsb25hbFN1YmxheWVyc1tpXS0+cmVtb3Zl
RnJvbVN1cGVybGF5ZXIoKTsKKyAgICB9CisgICAgCisgICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXll
cj4gcmVzdWx0OworICAgIGlmIChzdHJ1Y3R1cmFsTGF5ZXIpIHsKKyAgICAgICAgc3RydWN0dXJh
bExheWVyLT5zZXRTdWJsYXllcnMoY2xvbmFsU3VibGF5ZXJzKTsKKworICAgICAgICBpZiAoY29u
dGVudHNMYXllcikgeworICAgICAgICAgICAgLy8gSWYgd2UgaGF2ZSBhIHRyYW5zZm9ybSBsYXll
ciwgdGhlbiB0aGUgY29udGVudHMgbGF5ZXIgaXMgcGFyZW50ZWQgaW4gdGhlIAorICAgICAgICAg
ICAgLy8gcHJpbWFyeSBsYXllciAod2hpY2ggaXMgaXRzZWxmIGEgY2hpbGQgb2YgdGhlIHRyYW5z
Zm9ybSBsYXllcikuCisgICAgICAgICAgICBwcmltYXJ5TGF5ZXItPnJlbW92ZUFsbFN1YmxheWVy
cygpOworICAgICAgICAgICAgcHJpbWFyeUxheWVyLT5hcHBlbmRTdWJsYXllcihjb250ZW50c0xh
eWVyLmdldCgpKTsKKyAgICAgICAgfQorCisgICAgICAgIHJlc3VsdCA9IHN0cnVjdHVyYWxMYXll
cjsKKyAgICB9IGVsc2UgeworICAgICAgICBwcmltYXJ5TGF5ZXItPnNldFN1YmxheWVycyhjbG9u
YWxTdWJsYXllcnMpOworICAgICAgICByZXN1bHQgPSBwcmltYXJ5TGF5ZXI7CisgICAgfQorCisg
ICAgcmV0dXJuIHJlc3VsdDsKK30KKworUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IEdyYXBo
aWNzTGF5ZXJDQTo6Y2xvbmVMYXllcihQbGF0Zm9ybUNBTGF5ZXIgKmxheWVyLCBDbG9uZUxldmVs
IGNsb25lTGV2ZWwpCit7CisgICAgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGUgbGF5ZXJUeXBl
ID0gKGxheWVyLT5sYXllclR5cGUoKSA9PSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVRyYW5z
Zm9ybUxheWVyKSA/IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVUcmFuc2Zvcm1MYXllciA6IFBsYXRmb3Jt
Q0FMYXllcjo6TGF5ZXJUeXBlTGF5ZXI7CisgICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gbmV3
TGF5ZXIgPSBQbGF0Zm9ybUNBTGF5ZXI6OmNyZWF0ZShsYXllclR5cGUsIHRoaXMpOworICAgIAor
ICAgIG5ld0xheWVyLT5zZXRQb3NpdGlvbihsYXllci0+cG9zaXRpb24oKSk7CisgICAgbmV3TGF5
ZXItPnNldEJvdW5kcyhsYXllci0+Ym91bmRzKCkpOworICAgIG5ld0xheWVyLT5zZXRBbmNob3JQ
b2ludChsYXllci0+YW5jaG9yUG9pbnQoKSk7CisgICAgbmV3TGF5ZXItPnNldFRyYW5zZm9ybShs
YXllci0+dHJhbnNmb3JtKCkpOworICAgIG5ld0xheWVyLT5zZXRTdWJsYXllclRyYW5zZm9ybShs
YXllci0+c3VibGF5ZXJUcmFuc2Zvcm0oKSk7CisgICAgbmV3TGF5ZXItPnNldENvbnRlbnRzKGxh
eWVyLT5jb250ZW50cygpKTsKKyAgICBuZXdMYXllci0+c2V0TWFza3NUb0JvdW5kcyhsYXllci0+
bWFza3NUb0JvdW5kcygpKTsKKyAgICBuZXdMYXllci0+c2V0RG91YmxlU2lkZWQobGF5ZXItPmlz
RG91YmxlU2lkZWQoKSk7CisgICAgbmV3TGF5ZXItPnNldE9wYXF1ZShsYXllci0+aXNPcGFxdWUo
KSk7CisgICAgbmV3TGF5ZXItPnNldEJhY2tncm91bmRDb2xvcihsYXllci0+YmFja2dyb3VuZENv
bG9yKCkpOworCisgICAgaWYgKGNsb25lTGV2ZWwgPT0gSW50ZXJtZWRpYXRlQ2xvbmVMZXZlbCkg
eworICAgICAgICBuZXdMYXllci0+c2V0T3BhY2l0eShsYXllci0+b3BhY2l0eSgpKTsKKyAgICAg
ICAgbW92ZU9yQ29weUFuaW1hdGlvbnNGb3JQcm9wZXJ0eShDb3B5LCBBbmltYXRlZFByb3BlcnR5
V2Via2l0VHJhbnNmb3JtLCBsYXllciwgbmV3TGF5ZXIuZ2V0KCkpOworICAgICAgICBtb3ZlT3JD
b3B5QW5pbWF0aW9uc0ZvclByb3BlcnR5KENvcHksIEFuaW1hdGVkUHJvcGVydHlPcGFjaXR5LCBs
YXllciwgbmV3TGF5ZXIuZ2V0KCkpOworICAgIH0KKyAgICAKKyAgICBpZiAoc2hvd0RlYnVnQm9y
ZGVycygpKSB7CisgICAgICAgIG5ld0xheWVyLT5zZXRCb3JkZXJDb2xvcihDb2xvcigyNTUsIDEy
MiwgMjUxKSk7CisgICAgICAgIG5ld0xheWVyLT5zZXRCb3JkZXJXaWR0aCgyKTsKKyAgICB9Cisg
ICAgCisgICAgcmV0dXJuIG5ld0xheWVyOworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0
T3BhY2l0eUludGVybmFsKGZsb2F0IGFjY3VtdWxhdGVkT3BhY2l0eSkKK3sKKyAgICBMYXllck1h
cCogbGF5ZXJDbG9uZU1hcCA9IDA7CisgICAgCisgICAgaWYgKHByZXNlcnZlczNEKCkpIHsKKyAg
ICAgICAgbV9sYXllci0+c2V0T3BhY2l0eShhY2N1bXVsYXRlZE9wYWNpdHkpOworICAgICAgICBs
YXllckNsb25lTWFwID0gbV9sYXllckNsb25lcy5nZXQoKTsKKyAgICB9IGVsc2UgeworICAgICAg
ICBwcmltYXJ5TGF5ZXIoKS0+c2V0T3BhY2l0eShhY2N1bXVsYXRlZE9wYWNpdHkpOworICAgICAg
ICBsYXllckNsb25lTWFwID0gcHJpbWFyeUxheWVyQ2xvbmVzKCk7CisgICAgfQorCisgICAgaWYg
KGxheWVyQ2xvbmVNYXApIHsKKyAgICAgICAgTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9
IGxheWVyQ2xvbmVNYXAtPmVuZCgpOworICAgICAgICBmb3IgKExheWVyTWFwOjpjb25zdF9pdGVy
YXRvciBpdCA9IGxheWVyQ2xvbmVNYXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAg
ICAgICAgICAgaWYgKG1fcmVwbGljYUxheWVyICYmIGlzUmVwbGljYXRlZFJvb3RDbG9uZShpdC0+
Zmlyc3QpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgaXQtPnNlY29u
ZC0+c2V0T3BhY2l0eShtX29wYWNpdHkpOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIEdy
YXBoaWNzTGF5ZXJDQTo6dXBkYXRlT3BhY2l0eU9uTGF5ZXIoKQoreworI2lmICFIQVZFX01PREVS
Tl9RVUFSVFpDT1JFCisgICAgLy8gRGlzdHJpYnV0ZSBvcGFjaXR5IGVpdGhlciB0byBvdXIgb3du
IGxheWVyIG9yIHRvIG91ciBjaGlsZHJlbi4gV2UgcGFzcyBpbiB0aGUgCisgICAgLy8gY29udHJp
YnV0aW9uIGZyb20gb3VyIHBhcmVudChzKS4KKyAgICBkaXN0cmlidXRlT3BhY2l0eShwYXJlbnQo
KSA/IHBhcmVudCgpLT5hY2N1bXVsYXRlZE9wYWNpdHkoKSA6IDEpOworI2Vsc2UKKyAgICBwcmlt
YXJ5TGF5ZXIoKS0+c2V0T3BhY2l0eShtX29wYWNpdHkpOworCisgICAgaWYgKExheWVyTWFwKiBs
YXllckNsb25lTWFwID0gcHJpbWFyeUxheWVyQ2xvbmVzKCkpIHsKKyAgICAgICAgTGF5ZXJNYXA6
OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGxheWVyQ2xvbmVNYXAtPmVuZCgpOworICAgICAgICBmb3Ig
KExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGxheWVyQ2xvbmVNYXAtPmJlZ2luKCk7IGl0
ICE9IGVuZDsgKytpdCkgeworICAgICAgICAgICAgaWYgKG1fcmVwbGljYUxheWVyICYmIGlzUmVw
bGljYXRlZFJvb3RDbG9uZShpdC0+Zmlyc3QpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor
CisgICAgICAgICAgICBpdC0+c2Vjb25kLT5zZXRPcGFjaXR5KG1fb3BhY2l0eSk7CisgICAgICAg
IH0KKyAgICAgICAgCisgICAgfQorI2VuZGlmCit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpu
b3RlU3VibGF5ZXJzQ2hhbmdlZCgpCit7CisgICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKENo
aWxkcmVuQ2hhbmdlZCk7CisgICAgcHJvcGFnYXRlTGF5ZXJDaGFuZ2VUb1JlcGxpY2FzKCk7Cit9
CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoTGF5ZXJD
aGFuZ2VGbGFncyBmbGFncykKK3sKKyAgICBpZiAoIW1fdW5jb21taXR0ZWRDaGFuZ2VzICYmIG1f
Y2xpZW50KQorICAgICAgICBtX2NsaWVudC0+bm90aWZ5U3luY1JlcXVpcmVkKHRoaXMpOworCisg
ICAgbV91bmNvbW1pdHRlZENoYW5nZXMgfD0gZmxhZ3M7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKSW5kZXg6IFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaAkocmV2aXNp
b24gMCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzgzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEdyYXBoaWNzTGF5ZXJDQV9o
CisjZGVmaW5lIEdyYXBoaWNzTGF5ZXJDQV9oCisKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9T
SVRJTkcpCisKKyNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgiCisjaW5jbHVkZSAiSW1hZ2UuaCIK
KyNpbmNsdWRlICJQbGF0Zm9ybUNBQW5pbWF0aW9uLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4K
KyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgUGxhdGZvcm1DQUxheWVyOworCitjbGFzcyBHcmFwaGljc0xheWVyQ0EgOiBwdWJs
aWMgR3JhcGhpY3NMYXllciB7CitwdWJsaWM6CisgICAgLy8gVGhlIHdpZHRoIGFuZCBoZWlnaHQg
b2YgYSBzaW5nbGUgdGlsZSBpbiBhIHRpbGVkIGxheWVyLiBTaG91bGQgYmUgbGFyZ2UgZW5vdWdo
IHRvCisgICAgLy8gYXZvaWQgbG90cyBvZiBzbWFsbCB0aWxlcyAoYW5kIHRoZXJlZm9yZSBsb3Rz
IG9mIGRyYXdpbmcgY2FsbGJhY2tzKSwgYnV0IHNtYWxsIGVub3VnaAorICAgIC8vIHRvIGtlZXAg
dGhlIG92ZXJhbGwgdGlsZSBjb3N0IGxvdy4KKyAgICBzdGF0aWMgY29uc3QgaW50IGtUaWxlZExh
eWVyVGlsZVNpemUgPSA1MTI7CisKKyAgICBHcmFwaGljc0xheWVyQ0EoR3JhcGhpY3NMYXllckNs
aWVudCopOworICAgIHZpcnR1YWwgfkdyYXBoaWNzTGF5ZXJDQSgpOworICAgIAorICAgIHZpcnR1
YWwgdm9pZCBhbmltYXRpb25TdGFydGVkKENGVGltZUludGVydmFsIGJlZ2luVGltZSk7CisKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0TmFtZShjb25zdCBTdHJpbmcmKTsKKworICAgIHZpcnR1YWwgUGxh
dGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0OworCisgICAgdmlydHVhbCBib29sIHNl
dENoaWxkcmVuKGNvbnN0IFZlY3RvcjxHcmFwaGljc0xheWVyKj4mKTsKKyAgICB2aXJ0dWFsIHZv
aWQgYWRkQ2hpbGQoR3JhcGhpY3NMYXllciopOworICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZEF0
SW5kZXgoR3JhcGhpY3NMYXllciosIGludCBpbmRleCk7CisgICAgdmlydHVhbCB2b2lkIGFkZENo
aWxkQWJvdmUoR3JhcGhpY3NMYXllciogbGF5ZXIsIEdyYXBoaWNzTGF5ZXIqIHNpYmxpbmcpOwor
ICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZEJlbG93KEdyYXBoaWNzTGF5ZXIqIGxheWVyLCBHcmFw
aGljc0xheWVyKiBzaWJsaW5nKTsKKyAgICB2aXJ0dWFsIGJvb2wgcmVwbGFjZUNoaWxkKEdyYXBo
aWNzTGF5ZXIqIG9sZENoaWxkLCBHcmFwaGljc0xheWVyKiBuZXdDaGlsZCk7CisKKyAgICB2aXJ0
dWFsIHZvaWQgcmVtb3ZlRnJvbVBhcmVudCgpOworCisgICAgdmlydHVhbCB2b2lkIHNldE1hc2tM
YXllcihHcmFwaGljc0xheWVyKik7CisgICAgdmlydHVhbCB2b2lkIHNldFJlcGxpY2F0ZWRMYXll
cihHcmFwaGljc0xheWVyKik7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UG9zaXRpb24oY29uc3Qg
RmxvYXRQb2ludCYpOworICAgIHZpcnR1YWwgdm9pZCBzZXRBbmNob3JQb2ludChjb25zdCBGbG9h
dFBvaW50M0QmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2l6ZShjb25zdCBGbG9hdFNpemUmKTsK
KworICAgIHZpcnR1YWwgdm9pZCBzZXRUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmKTsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRDaGlsZHJlblRyYW5zZm9ybShjb25zdCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYpOworCisgICAgdmlydHVhbCB2b2lkIHNldFByZXNlcnZlczNEKGJv
b2wpOworICAgIHZpcnR1YWwgdm9pZCBzZXRNYXNrc1RvQm91bmRzKGJvb2wpOworICAgIHZpcnR1
YWwgdm9pZCBzZXREcmF3c0NvbnRlbnQoYm9vbCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QmFj
a2dyb3VuZENvbG9yKGNvbnN0IENvbG9yJik7CisgICAgdmlydHVhbCB2b2lkIGNsZWFyQmFja2dy
b3VuZENvbG9yKCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNPcGFxdWUoYm9vbCk7
CisgICAgdmlydHVhbCB2b2lkIHNldEJhY2tmYWNlVmlzaWJpbGl0eShib29sKTsKKworICAgIC8v
IHJldHVybiB0cnVlIGlmIHdlIHN0YXJ0ZWQgYW4gYW5pbWF0aW9uCisgICAgdmlydHVhbCB2b2lk
IHNldE9wYWNpdHkoZmxvYXQpOworCisgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzRGlzcGxheSgp
OworICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0Rpc3BsYXlJblJlY3QoY29uc3QgRmxvYXRSZWN0
Jik7CisgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzTmVlZHNEaXNwbGF5KCk7CisgICAgCisg
ICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzUmVjdChjb25zdCBJbnRSZWN0Jik7CisgICAgCisg
ICAgdmlydHVhbCB2b2lkIHN1c3BlbmRBbmltYXRpb25zKGRvdWJsZSB0aW1lKTsKKyAgICB2aXJ0
dWFsIHZvaWQgcmVzdW1lQW5pbWF0aW9ucygpOworCisgICAgdmlydHVhbCBib29sIGFkZEFuaW1h
dGlvbihjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYsIGNvbnN0IEludFNpemUmIGJveFNpemUsIGNv
bnN0IEFuaW1hdGlvbiosIGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSwgZG91YmxlIHRpbWVP
ZmZzZXQpOworICAgIHZpcnR1YWwgdm9pZCBwYXVzZUFuaW1hdGlvbihjb25zdCBTdHJpbmcmIGFu
aW1hdGlvbk5hbWUsIGRvdWJsZSB0aW1lT2Zmc2V0KTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3Zl
QW5pbWF0aW9uKGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSk7CisKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0Q29udGVudHNUb0ltYWdlKEltYWdlKik7CisgICAgdmlydHVhbCB2b2lkIHNldENvbnRl
bnRzVG9NZWRpYShQbGF0Zm9ybUxheWVyKik7CisgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRz
VG9DYW52YXMoUGxhdGZvcm1MYXllciopOworCisgICAgdmlydHVhbCBib29sIGhhc0NvbnRlbnRz
TGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRzTGF5ZXI7IH0KKyAgICAKKyAgICB2aXJ0
dWFsIHZvaWQgc2V0RGVidWdCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImKTsKKyAgICB2aXJ0
dWFsIHZvaWQgc2V0RGVidWdCb3JkZXIoY29uc3QgQ29sb3ImLCBmbG9hdCBib3JkZXJXaWR0aCk7
CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRGlzcGxheShQbGF0Zm9ybUxheWVyKik7CisKKyAgICB2
b2lkIHJlY3Vyc2l2ZUNvbW1pdENoYW5nZXMoKTsKKworICAgIHZpcnR1YWwgdm9pZCBzeW5jQ29t
cG9zaXRpbmdTdGF0ZSgpOworICAgIHZpcnR1YWwgdm9pZCBzeW5jQ29tcG9zaXRpbmdTdGF0ZUZv
clRoaXNMYXllck9ubHkoKTsKKworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgdm9pZCBzZXRPcGFj
aXR5SW50ZXJuYWwoZmxvYXQpOworCitwcml2YXRlOgorICAgIHZvaWQgdXBkYXRlT3BhY2l0eU9u
TGF5ZXIoKTsKKworICAgIFBsYXRmb3JtQ0FMYXllciogcHJpbWFyeUxheWVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdHJ1Y3R1cmFsTGF5ZXIuZ2V0KCkgPyBtX3N0cnVjdHVyYWxMYXllci5nZXQoKSA6
IG1fbGF5ZXIuZ2V0KCk7IH0KKyAgICBQbGF0Zm9ybUNBTGF5ZXIqIGhvc3RMYXllckZvclN1Ymxh
eWVycygpIGNvbnN0OworICAgIFBsYXRmb3JtQ0FMYXllciogbGF5ZXJGb3JTdXBlcmxheWVyKCkg
Y29uc3Q7CisgICAgUGxhdGZvcm1DQUxheWVyKiBhbmltYXRlZExheWVyKEFuaW1hdGVkUHJvcGVy
dHlJRCkgY29uc3Q7CisKKyAgICB0eXBlZGVmIFN0cmluZyBDbG9uZUlEOyAvLyBJZGVudGlmaWVy
IGZvciBhIGdpdmVuIGNsb25lLCBiYXNlZCBvbiBvcmlnaW5hbC9yZXBsaWNhIGJyYW5jaGluZyBk
b3duIHRoZSB0cmVlLgorICAgIHN0YXRpYyBib29sIGlzUmVwbGljYXRlZFJvb3RDbG9uZShjb25z
dCBDbG9uZUlEJiBjbG9uZUlEKSB7IHJldHVybiBjbG9uZUlEWzBVXSAmIDE7IH0KKworICAgIHR5
cGVkZWYgSGFzaE1hcDxDbG9uZUlELCBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiA+IExheWVyTWFw
OworICAgIExheWVyTWFwKiBwcmltYXJ5TGF5ZXJDbG9uZXMoKSBjb25zdCB7IHJldHVybiBtX3N0
cnVjdHVyYWxMYXllci5nZXQoKSA/IG1fc3RydWN0dXJhbExheWVyQ2xvbmVzLmdldCgpIDogbV9s
YXllckNsb25lcy5nZXQoKTsgfQorICAgIExheWVyTWFwKiBhbmltYXRlZExheWVyQ2xvbmVzKEFu
aW1hdGVkUHJvcGVydHlJRCkgY29uc3Q7CisKKyAgICBib29sIGNyZWF0ZUFuaW1hdGlvbkZyb21L
ZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmLCBjb25zdCBBbmltYXRpb24qLCBjb25z
dCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGRvdWJsZSB0aW1lT2Zmc2V0KTsKKyAgICBib29sIGNy
ZWF0ZVRyYW5zZm9ybUFuaW1hdGlvbnNGcm9tS2V5ZnJhbWVzKGNvbnN0IEtleWZyYW1lVmFsdWVM
aXN0JiwgY29uc3QgQW5pbWF0aW9uKiwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBkb3Vi
bGUgdGltZU9mZnNldCwgY29uc3QgSW50U2l6ZSYgYm94U2l6ZSk7CisKKyAgICAvLyBSZXR1cm4g
YXV0b3JlbGVhc2VkIGFuaW1hdGlvbiAodXNlIFJldGFpblB0cj8pCisgICAgUGFzc1JlZlB0cjxQ
bGF0Zm9ybUNBQW5pbWF0aW9uPiBjcmVhdGVCYXNpY0FuaW1hdGlvbihjb25zdCBBbmltYXRpb24q
LCBBbmltYXRlZFByb3BlcnR5SUQsIGJvb2wgYWRkaXRpdmUpOworICAgIFBhc3NSZWZQdHI8UGxh
dGZvcm1DQUFuaW1hdGlvbj4gY3JlYXRlS2V5ZnJhbWVBbmltYXRpb24oY29uc3QgQW5pbWF0aW9u
KiwgQW5pbWF0ZWRQcm9wZXJ0eUlELCBib29sIGFkZGl0aXZlKTsKKyAgICB2b2lkIHNldHVwQW5p
bWF0aW9uKFBsYXRmb3JtQ0FBbmltYXRpb24qLCBjb25zdCBBbmltYXRpb24qLCBib29sIGFkZGl0
aXZlKTsKKyAgICAKKyAgICBjb25zdCBUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb25Gb3JB
bmltYXRpb25WYWx1ZShjb25zdCBBbmltYXRpb25WYWx1ZSosIGNvbnN0IEFuaW1hdGlvbiopOwor
ICAgIAorICAgIGJvb2wgc2V0QW5pbWF0aW9uRW5kcG9pbnRzKGNvbnN0IEtleWZyYW1lVmFsdWVM
aXN0JiwgY29uc3QgQW5pbWF0aW9uKiwgUGxhdGZvcm1DQUFuaW1hdGlvbiopOworICAgIGJvb2wg
c2V0QW5pbWF0aW9uS2V5ZnJhbWVzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiwgY29uc3QgQW5p
bWF0aW9uKiwgUGxhdGZvcm1DQUFuaW1hdGlvbiopOworCisgICAgYm9vbCBzZXRUcmFuc2Zvcm1B
bmltYXRpb25FbmRwb2ludHMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmLCBjb25zdCBBbmltYXRp
b24qLCBQbGF0Zm9ybUNBQW5pbWF0aW9uKiwgaW50IGZ1bmN0aW9uSW5kZXgsIFRyYW5zZm9ybU9w
ZXJhdGlvbjo6T3BlcmF0aW9uVHlwZSwgYm9vbCBpc01hdHJpeEFuaW1hdGlvbiwgY29uc3QgSW50
U2l6ZSYgYm94U2l6ZSk7CisgICAgYm9vbCBzZXRUcmFuc2Zvcm1BbmltYXRpb25LZXlmcmFtZXMo
Y29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmLCBjb25zdCBBbmltYXRpb24qLCBQbGF0Zm9ybUNBQW5p
bWF0aW9uKiwgaW50IGZ1bmN0aW9uSW5kZXgsIFRyYW5zZm9ybU9wZXJhdGlvbjo6T3BlcmF0aW9u
VHlwZSwgYm9vbCBpc01hdHJpeEFuaW1hdGlvbiwgY29uc3QgSW50U2l6ZSYgYm94U2l6ZSk7Cisg
ICAgCisgICAgYm9vbCBhbmltYXRpb25Jc1J1bm5pbmcoY29uc3QgU3RyaW5nJiBhbmltYXRpb25O
YW1lKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fcnVubmluZ0FuaW1hdGlvbnMuZmlu
ZChhbmltYXRpb25OYW1lKSAhPSBtX3J1bm5pbmdBbmltYXRpb25zLmVuZCgpOworICAgIH0KKwor
ICAgIHZvaWQgY29tbWl0TGF5ZXJDaGFuZ2VzQmVmb3JlU3VibGF5ZXJzKCk7CisgICAgdm9pZCBj
b21taXRMYXllckNoYW5nZXNBZnRlclN1YmxheWVycygpOworCisgICAgRmxvYXRTaXplIGNvbnN0
cmFpbmVkU2l6ZSgpIGNvbnN0OworCisgICAgYm9vbCByZXF1aXJlc1RpbGVkTGF5ZXIoY29uc3Qg
RmxvYXRTaXplJikgY29uc3Q7CisgICAgdm9pZCBzd2FwRnJvbU9yVG9UaWxlZExheWVyKGJvb2wg
dXNlVGlsZWRMYXllcik7CisKKyAgICBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRpb24g
ZGVmYXVsdENvbnRlbnRzT3JpZW50YXRpb24oKSBjb25zdDsKKyAgICB2b2lkIHVwZGF0ZUNvbnRl
bnRzVHJhbnNmb3JtKCk7CisgICAgCisgICAgdm9pZCBzZXR1cENvbnRlbnRzTGF5ZXIoUGxhdGZv
cm1DQUxheWVyKik7CisgICAgUGxhdGZvcm1DQUxheWVyKiBjb250ZW50c0xheWVyKCkgY29uc3Qg
eyByZXR1cm4gbV9jb250ZW50c0xheWVyLmdldCgpOyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
UmVwbGljYXRlZEJ5TGF5ZXIoR3JhcGhpY3NMYXllciopOworCisgICAgLy8gVXNlZCB0byB0cmFj
ayB0aGUgcGF0aCBkb3duIHRoZSB0cmVlIGZvciByZXBsaWNhIGxheWVycy4KKyAgICBzdHJ1Y3Qg
UmVwbGljYVN0YXRlIHsKKyAgICAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBtYXhSZXBsaWNhRGVw
dGggPSAxNjsKKyAgICAgICAgZW51bSBSZXBsaWNhQnJhbmNoVHlwZSB7IENoaWxkQnJhbmNoID0g
MCwgUmVwbGljYUJyYW5jaCA9IDEgfTsKKyAgICAgICAgUmVwbGljYVN0YXRlKFJlcGxpY2FCcmFu
Y2hUeXBlIGZpcnN0QnJhbmNoKQorICAgICAgICAgICAgOiBtX3JlcGxpY2FEZXB0aCgwKQorICAg
ICAgICB7CisgICAgICAgICAgICBwdXNoKGZpcnN0QnJhbmNoKTsKKyAgICAgICAgfQorICAgICAg
ICAKKyAgICAgICAgLy8gQ2FsbGVkIGFzIHdlIHdhbGsgZG93biB0aGUgdHJlZSB0byBidWlsZCBy
ZXBsaWNhcy4KKyAgICAgICAgdm9pZCBwdXNoKFJlcGxpY2FCcmFuY2hUeXBlIGJyYW5jaFR5cGUp
CisgICAgICAgIHsKKyAgICAgICAgICAgIG1fcmVwbGljYUJyYW5jaGVzLmFwcGVuZChicmFuY2hU
eXBlKTsKKyAgICAgICAgICAgIGlmIChicmFuY2hUeXBlID09IFJlcGxpY2FCcmFuY2gpCisgICAg
ICAgICAgICAgICAgKyttX3JlcGxpY2FEZXB0aDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAg
ICAgdm9pZCBzZXRCcmFuY2hUeXBlKFJlcGxpY2FCcmFuY2hUeXBlIGJyYW5jaFR5cGUpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIEFTU0VSVCghbV9yZXBsaWNhQnJhbmNoZXMuaXNFbXB0eSgpKTsK
KworICAgICAgICAgICAgaWYgKG1fcmVwbGljYUJyYW5jaGVzLmxhc3QoKSAhPSBicmFuY2hUeXBl
KSB7CisgICAgICAgICAgICAgICAgaWYgKGJyYW5jaFR5cGUgPT0gUmVwbGljYUJyYW5jaCkKKyAg
ICAgICAgICAgICAgICAgICAgKyttX3JlcGxpY2FEZXB0aDsKKyAgICAgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgICAgIC0tbV9yZXBsaWNhRGVwdGg7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIG1fcmVwbGljYUJyYW5jaGVzLmxhc3QoKSA9IGJyYW5jaFR5cGU7CisgICAg
ICAgIH0KKworICAgICAgICB2b2lkIHBvcCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICht
X3JlcGxpY2FCcmFuY2hlcy5sYXN0KCkgPT0gUmVwbGljYUJyYW5jaCkKKyAgICAgICAgICAgICAg
ICAtLW1fcmVwbGljYURlcHRoOworICAgICAgICAgICAgbV9yZXBsaWNhQnJhbmNoZXMucmVtb3Zl
TGFzdCgpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBzaXplX3QgZGVwdGgoKSBjb25z
dCB7IHJldHVybiBtX3JlcGxpY2FCcmFuY2hlcy5zaXplKCk7IH0KKyAgICAgICAgc2l6ZV90IHJl
cGxpY2FEZXB0aCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVwbGljYURlcHRoOyB9CisKKyAgICAgICAg
Q2xvbmVJRCBjbG9uZUlEKCkgY29uc3Q7ICAgICAgICAKKworICAgIHByaXZhdGU6CisgICAgICAg
IFZlY3RvcjxSZXBsaWNhQnJhbmNoVHlwZT4gbV9yZXBsaWNhQnJhbmNoZXM7CisgICAgICAgIHNp
emVfdCBtX3JlcGxpY2FEZXB0aDsKKyAgICB9OworICAgIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUxh
eWVyPnJlcGxpY2F0ZWRMYXllclJvb3QoUmVwbGljYVN0YXRlJik7CisKKyAgICBlbnVtIENsb25l
TGV2ZWwgeyBSb290Q2xvbmVMZXZlbCwgSW50ZXJtZWRpYXRlQ2xvbmVMZXZlbCB9OworICAgIFBh
c3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBmZXRjaENsb25lTGF5ZXJzKEdyYXBoaWNzTGF5ZXIq
IHJlcGxpY2FSb290LCBSZXBsaWNhU3RhdGUmLCBDbG9uZUxldmVsKTsKKyAgICAKKyAgICBQYXNz
UmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gY2xvbmVMYXllcihQbGF0Zm9ybUNBTGF5ZXIgKiwgQ2xv
bmVMZXZlbCk7CisgICAgUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IGZpbmRPck1ha2VDbG9u
ZShDbG9uZUlELCBQbGF0Zm9ybUNBTGF5ZXIgKiwgTGF5ZXJNYXAqLCBDbG9uZUxldmVsKTsKKwor
ICAgIHZvaWQgZW5zdXJlQ2xvbmVMYXllcnMoQ2xvbmVJRCBjbG9uZUlELCBSZWZQdHI8UGxhdGZv
cm1DQUxheWVyPiYgcHJpbWFyeUxheWVyLCBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiYgc3RydWN0
dXJhbExheWVyLCBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiYgY29udGVudHNMYXllciwgQ2xvbmVM
ZXZlbCBjbG9uZUxldmVsKTsKKworICAgIGJvb2wgaGFzQ2xvbmVMYXllcnMoKSBjb25zdCB7IHJl
dHVybiBtX2xheWVyQ2xvbmVzOyB9CisgICAgdm9pZCByZW1vdmVDbG9uZUxheWVycygpOworICAg
IEZsb2F0UG9pbnQgcG9zaXRpb25Gb3JDbG9uZVJvb3RMYXllcigpIGNvbnN0OworICAgIAorICAg
IHZvaWQgcHJvcGFnYXRlTGF5ZXJDaGFuZ2VUb1JlcGxpY2FzKCk7CisgICAgCisgICAgLy8gQWxs
IHRoZXNlICJ1cGRhdGUiIG1ldGhvZHMgd2lsbCBiZSBjYWxsZWQgaW5zaWRlIGEgQkVHSU5fQkxP
Q0tfT0JKQ19FWENFUFRJT05TL0VORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMgYmxvY2suCisgICAg
dm9pZCB1cGRhdGVMYXllck5hbWVzKCk7CisgICAgdm9pZCB1cGRhdGVTdWJsYXllckxpc3QoKTsK
KyAgICB2b2lkIHVwZGF0ZUxheWVyUG9zaXRpb24oKTsKKyAgICB2b2lkIHVwZGF0ZUxheWVyU2l6
ZSgpOworICAgIHZvaWQgdXBkYXRlQW5jaG9yUG9pbnQoKTsKKyAgICB2b2lkIHVwZGF0ZVRyYW5z
Zm9ybSgpOworICAgIHZvaWQgdXBkYXRlQ2hpbGRyZW5UcmFuc2Zvcm0oKTsKKyAgICB2b2lkIHVw
ZGF0ZU1hc2tzVG9Cb3VuZHMoKTsKKyAgICB2b2lkIHVwZGF0ZUNvbnRlbnRzT3BhcXVlKCk7Cisg
ICAgdm9pZCB1cGRhdGVCYWNrZmFjZVZpc2liaWxpdHkoKTsKKyAgICB2b2lkIHVwZGF0ZVN0cnVj
dHVyYWxMYXllcigpOworICAgIHZvaWQgdXBkYXRlTGF5ZXJEcmF3c0NvbnRlbnQoKTsKKyAgICB2
b2lkIHVwZGF0ZUxheWVyQmFja2dyb3VuZENvbG9yKCk7CisKKyAgICB2b2lkIHVwZGF0ZUNvbnRl
bnRzSW1hZ2UoKTsKKyAgICB2b2lkIHVwZGF0ZUNvbnRlbnRzTWVkaWFMYXllcigpOworICAgIHZv
aWQgdXBkYXRlQ29udGVudHNDYW52YXNMYXllcigpOworICAgIHZvaWQgdXBkYXRlQ29udGVudHNS
ZWN0KCk7CisgICAgdm9pZCB1cGRhdGVNYXNrTGF5ZXIoKTsKKyAgICB2b2lkIHVwZGF0ZVJlcGxp
Y2F0ZWRMYXllcnMoKTsKKworICAgIHZvaWQgdXBkYXRlTGF5ZXJBbmltYXRpb25zKCk7CisgICAg
dm9pZCB1cGRhdGVDb250ZW50c05lZWRzRGlzcGxheSgpOworICAgIAorICAgIGVudW0gU3RydWN0
dXJhbExheWVyUHVycG9zZSB7CisgICAgICAgIE5vU3RydWN0dXJhbExheWVyID0gMCwKKyAgICAg
ICAgU3RydWN0dXJhbExheWVyRm9yUHJlc2VydmVzM0QsCisgICAgICAgIFN0cnVjdHVyYWxMYXll
ckZvclJlcGxpY2FGbGF0dGVuaW5nCisgICAgfTsKKyAgICB2b2lkIGVuc3VyZVN0cnVjdHVyYWxM
YXllcihTdHJ1Y3R1cmFsTGF5ZXJQdXJwb3NlKTsKKyAgICBTdHJ1Y3R1cmFsTGF5ZXJQdXJwb3Nl
IHN0cnVjdHVyYWxMYXllclB1cnBvc2UoKSBjb25zdDsKKworICAgIHZvaWQgc2V0QW5pbWF0aW9u
T25MYXllcihQbGF0Zm9ybUNBQW5pbWF0aW9uKiwgQW5pbWF0ZWRQcm9wZXJ0eUlELCBjb25zdCBT
dHJpbmcmIGFuaW1hdGlvbk5hbWUsIGludCBpbmRleCwgZG91YmxlIHRpbWVPZmZzZXQpOworICAg
IGJvb2wgcmVtb3ZlQ0FBbmltYXRpb25Gcm9tTGF5ZXIoQW5pbWF0ZWRQcm9wZXJ0eUlELCBjb25z
dCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGludCBpbmRleCk7CisgICAgdm9pZCBwYXVzZUNBQW5p
bWF0aW9uT25MYXllcihBbmltYXRlZFByb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgYW5pbWF0aW9u
TmFtZSwgaW50IGluZGV4LCBkb3VibGUgdGltZU9mZnNldCk7CisKKyAgICBlbnVtIE1vdmVPckNv
cHkgeyBNb3ZlLCBDb3B5IH07CisgICAgc3RhdGljIHZvaWQgbW92ZU9yQ29weUxheWVyQW5pbWF0
aW9uKE1vdmVPckNvcHksIGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uSWRlbnRpZmllciwgUGxhdGZv
cm1DQUxheWVyICpmcm9tTGF5ZXIsIFBsYXRmb3JtQ0FMYXllciAqdG9MYXllcik7CisgICAgdm9p
ZCBtb3ZlT3JDb3B5QW5pbWF0aW9uc0ZvclByb3BlcnR5KE1vdmVPckNvcHksIEFuaW1hdGVkUHJv
cGVydHlJRCwgUGxhdGZvcm1DQUxheWVyICogZnJvbUxheWVyLCBQbGF0Zm9ybUNBTGF5ZXIgKiB0
b0xheWVyKTsKKyAgICAKKyAgICBlbnVtIExheWVyQ2hhbmdlIHsKKyAgICAgICAgTm9DaGFuZ2Ug
PSAwLAorICAgICAgICBOYW1lQ2hhbmdlZCA9IDEgPDwgMSwKKyAgICAgICAgQ2hpbGRyZW5DaGFu
Z2VkID0gMSA8PCAyLCAvLyBhbHNvIHVzZWQgZm9yIGNvbnRlbnQgbGF5ZXIsIGFuZCBwcmVzZXJ2
ZXMtM2QsIGFuZCBzaXplIGlmIHRpbGluZyBjaGFuZ2VzPworICAgICAgICBQb3NpdGlvbkNoYW5n
ZWQgPSAxIDw8IDMsCisgICAgICAgIEFuY2hvclBvaW50Q2hhbmdlZCA9IDEgPDwgNCwKKyAgICAg
ICAgU2l6ZUNoYW5nZWQgPSAxIDw8IDUsCisgICAgICAgIFRyYW5zZm9ybUNoYW5nZWQgPSAxIDw8
IDYsCisgICAgICAgIENoaWxkcmVuVHJhbnNmb3JtQ2hhbmdlZCA9IDEgPDwgNywKKyAgICAgICAg
UHJlc2VydmVzM0RDaGFuZ2VkID0gMSA8PCA4LAorICAgICAgICBNYXNrc1RvQm91bmRzQ2hhbmdl
ZCA9IDEgPDwgOSwKKyAgICAgICAgRHJhd3NDb250ZW50Q2hhbmdlZCA9IDEgPDwgMTAsIC8vIG5l
ZWQgdGhpcz8KKyAgICAgICAgQmFja2dyb3VuZENvbG9yQ2hhbmdlZCA9IDEgPDwgMTEsCisgICAg
ICAgIENvbnRlbnRzT3BhcXVlQ2hhbmdlZCA9IDEgPDwgMTIsCisgICAgICAgIEJhY2tmYWNlVmlz
aWJpbGl0eUNoYW5nZWQgPSAxIDw8IDEzLAorICAgICAgICBPcGFjaXR5Q2hhbmdlZCA9IDEgPDwg
MTQsCisgICAgICAgIEFuaW1hdGlvbkNoYW5nZWQgPSAxIDw8IDE1LAorICAgICAgICBEaXJ0eVJl
Y3RzQ2hhbmdlZCA9IDEgPDwgMTYsCisgICAgICAgIENvbnRlbnRzSW1hZ2VDaGFuZ2VkID0gMSA8
PCAxNywKKyAgICAgICAgQ29udGVudHNNZWRpYUxheWVyQ2hhbmdlZCA9IDEgPDwgMTgsCisgICAg
ICAgIENvbnRlbnRzQ2FudmFzTGF5ZXJDaGFuZ2VkID0gMSA8PCAxOSwKKyAgICAgICAgQ29udGVu
dHNSZWN0Q2hhbmdlZCA9IDEgPDwgMjAsCisgICAgICAgIE1hc2tMYXllckNoYW5nZWQgPSAxIDw8
IDIxLAorICAgICAgICBSZXBsaWNhdGVkTGF5ZXJDaGFuZ2VkID0gMSA8PCAyMiwKKyAgICAgICAg
Q29udGVudHNOZWVkc0Rpc3BsYXkgPSAxIDw8IDIzCisgICAgfTsKKyAgICB0eXBlZGVmIHVuc2ln
bmVkIExheWVyQ2hhbmdlRmxhZ3M7CisgICAgdm9pZCBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQo
TGF5ZXJDaGFuZ2VGbGFncyBmbGFncyk7CisgICAgdm9pZCBub3RlU3VibGF5ZXJzQ2hhbmdlZCgp
OworCisgICAgdm9pZCByZXBhaW50TGF5ZXJEaXJ0eVJlY3RzKCk7CisKKyAgICBSZWZQdHI8UGxh
dGZvcm1DQUxheWVyPiBtX2xheWVyOyAvLyBUaGUgbWFpbiBsYXllcgorICAgIFJlZlB0cjxQbGF0
Zm9ybUNBTGF5ZXI+IG1fc3RydWN0dXJhbExheWVyOyAvLyBBIGxheWVyIHVzZWQgZm9yIHN0cnVj
dHVyYWwgcmVhc29ucywgbGlrZSBwcmVzZXJ2ZXMtM2Qgb3IgcmVwbGljYS1mbGF0dGVuaW5nLiBJ
cyB0aGUgcGFyZW50IG9mIG1fbGF5ZXIuCisgICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gbV9j
b250ZW50c0xheWVyOyAvLyBBIGxheWVyIHVzZWQgZm9yIGlubmVyIGNvbnRlbnQsIGxpa2UgaW1h
Z2UgYW5kIHZpZGVvCisKKyAgICAvLyBSZWZlcmVuY2VzIHRvIGNsb25lcyBvZiBvdXIgbGF5ZXJz
LCBmb3IgcmVwbGljYXRlZCBsYXllcnMuCisgICAgT3duUHRyPExheWVyTWFwPiBtX2xheWVyQ2xv
bmVzOworICAgIE93blB0cjxMYXllck1hcD4gbV9zdHJ1Y3R1cmFsTGF5ZXJDbG9uZXM7CisgICAg
T3duUHRyPExheWVyTWFwPiBtX2NvbnRlbnRzTGF5ZXJDbG9uZXM7CisgICAgCisgICAgZW51bSBD
b250ZW50c0xheWVyUHVycG9zZSB7CisgICAgICAgIE5vQ29udGVudHNMYXllciA9IDAsCisgICAg
ICAgIENvbnRlbnRzTGF5ZXJGb3JJbWFnZSwKKyAgICAgICAgQ29udGVudHNMYXllckZvck1lZGlh
LAorICAgICAgICBDb250ZW50c0xheWVyRm9yQ2FudmFzCisgICAgfTsKKyAgICAKKyAgICBDb250
ZW50c0xheWVyUHVycG9zZSBtX2NvbnRlbnRzTGF5ZXJQdXJwb3NlOworICAgIGJvb2wgbV9jb250
ZW50c0xheWVySGFzQmFja2dyb3VuZENvbG9yIDogMTsKKworICAgIFJldGFpblB0cjxDR0ltYWdl
UmVmPiBtX3VuY29ycmVjdGVkQ29udGVudHNJbWFnZTsKKyAgICBSZXRhaW5QdHI8Q0dJbWFnZVJl
Zj4gbV9wZW5kaW5nQ29udGVudHNJbWFnZTsKKyAgICAKKyAgICAvLyBUaGlzIHJlcHJlc2VudHMg
dGhlIGFuaW1hdGlvbiBvZiBhIHNpbmdsZSBwcm9wZXJ0eS4gVGhlcmUgbWF5IGJlIG11bHRpcGxl
IHRyYW5zZm9ybSBhbmltYXRpb25zIGZvcgorICAgIC8vIGEgc2luZ2xlIHRyYW5zaXRpb24gb3Ig
a2V5ZnJhbWUgYW5pbWF0aW9uLCBzbyBpbmRleCBpcyB1c2VkIHRvIGRpc3Rpbmd1aXNoIHRoZXNl
LgorICAgIHN0cnVjdCBMYXllclByb3BlcnR5QW5pbWF0aW9uIHsKKyAgICAgICAgTGF5ZXJQcm9w
ZXJ0eUFuaW1hdGlvbihQYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IGNhQW5pbWF0aW9u
LCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIEFuaW1hdGVkUHJvcGVydHlJRCBwcm9wZXJ0
eSwgaW50IGluZGV4LCBkb3VibGUgdGltZU9mZnNldCkKKyAgICAgICAgOiBtX2FuaW1hdGlvbihj
YUFuaW1hdGlvbikKKyAgICAgICAgLCBtX25hbWUoYW5pbWF0aW9uTmFtZSkKKyAgICAgICAgLCBt
X3Byb3BlcnR5KHByb3BlcnR5KQorICAgICAgICAsIG1faW5kZXgoaW5kZXgpCisgICAgICAgICwg
bV90aW1lT2Zmc2V0KHRpbWVPZmZzZXQpCisgICAgICAgIHsgfQorCisgICAgICAgIFJlZlB0cjxQ
bGF0Zm9ybUNBQW5pbWF0aW9uPiBtX2FuaW1hdGlvbjsKKyAgICAgICAgU3RyaW5nIG1fbmFtZTsK
KyAgICAgICAgQW5pbWF0ZWRQcm9wZXJ0eUlEIG1fcHJvcGVydHk7CisgICAgICAgIGludCBtX2lu
ZGV4OworICAgICAgICBkb3VibGUgbV90aW1lT2Zmc2V0OworICAgIH07CisgICAgCisgICAgLy8g
VW5jb21taXR0ZWQgdHJhbnNpdGlvbnMgYW5kIGFuaW1hdGlvbnMuCisgICAgVmVjdG9yPExheWVy
UHJvcGVydHlBbmltYXRpb24+IG1fdW5jb21pdHRlZEFuaW1hdGlvbnM7CisgICAgCisgICAgZW51
bSBBY3Rpb24geyBSZW1vdmUsIFBhdXNlIH07CisgICAgc3RydWN0IEFuaW1hdGlvblByb2Nlc3Np
bmdBY3Rpb24geworICAgICAgICBBbmltYXRpb25Qcm9jZXNzaW5nQWN0aW9uKEFjdGlvbiBhY3Rp
b24gPSBSZW1vdmUsIGRvdWJsZSB0aW1lT2Zmc2V0ID0gMCkKKyAgICAgICAgICAgIDogYWN0aW9u
KGFjdGlvbikKKyAgICAgICAgICAgICwgdGltZU9mZnNldCh0aW1lT2Zmc2V0KQorICAgICAgICB7
CisgICAgICAgIH0KKyAgICAgICAgQWN0aW9uIGFjdGlvbjsKKyAgICAgICAgZG91YmxlIHRpbWVP
ZmZzZXQ7IC8vIG9ubHkgdXNlZCBmb3IgcGF1c2UKKyAgICB9OworICAgIHR5cGVkZWYgSGFzaE1h
cDxTdHJpbmcsIEFuaW1hdGlvblByb2Nlc3NpbmdBY3Rpb24+IEFuaW1hdGlvbnNUb1Byb2Nlc3NN
YXA7CisgICAgQW5pbWF0aW9uc1RvUHJvY2Vzc01hcCBtX2FuaW1hdGlvbnNUb1Byb2Nlc3M7CisK
KyAgICAvLyBNYXAgb2YgYW5pbWF0aW9uIG5hbWVzIHRvIHRoZWlyIGFzc29jaWF0ZWQgbGlzdHMg
b2YgcHJvcGVydHkgYW5pbWF0aW9ucywgc28gd2UgY2FuIHJlbW92ZS9wYXVzZSB0aGVtLgorICAg
IHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxMYXllclByb3BlcnR5QW5pbWF0aW9uPiA+
IEFuaW1hdGlvbnNNYXA7CisgICAgQW5pbWF0aW9uc01hcCBtX3J1bm5pbmdBbmltYXRpb25zOwor
CisgICAgVmVjdG9yPEZsb2F0UmVjdD4gbV9kaXJ0eVJlY3RzOworICAgIAorICAgIExheWVyQ2hh
bmdlRmxhZ3MgbV91bmNvbW1pdHRlZENoYW5nZXM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKworI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKworI2VuZGlm
IC8vIEdyYXBoaWNzTGF5ZXJDQV9oCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L1BsYXRmb3JtQ0FBbmltYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL1BsYXRmb3JtQ0FBbmltYXRpb24uaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUFuaW1hdGlvbi5oCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDE2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBQbGF0Zm9ybUNBQW5pbWF0aW9uX2gKKyNkZWZpbmUg
UGxhdGZvcm1DQUFuaW1hdGlvbl9oCisKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcp
CisKKyNpbmNsdWRlICJDb2xvci5oIgorI2luY2x1ZGUgIkZsb2F0UG9pbnQzRC5oIgorI2luY2x1
ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
KyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCisj
aWYgUExBVEZPUk0oTUFDKQorI2lmZGVmIF9fT0JKQ19fCitAY2xhc3MgQ0FQcm9wZXJ0eUFuaW1h
dGlvbjsKK3R5cGVkZWYgQ0FQcm9wZXJ0eUFuaW1hdGlvbiogUGxhdGZvcm1BbmltYXRpb25SZWY7
CisjZWxzZQordHlwZWRlZiB2b2lkKiBDQVByb3BlcnR5QW5pbWF0aW9uOyAvLyBTbyB0aGUgbV9h
bmltYXRpb24gZGVjbGFyYXRpb24gd29ya3MKK3R5cGVkZWYgdm9pZCogUGxhdGZvcm1BbmltYXRp
b25SZWY7CisjZW5kaWYKKyNlbGlmIFBMQVRGT1JNKFdJTikKK25hbWVzcGFjZSBXZWJDb3JlIHsK
K2NsYXNzIFdLQ0FDRkFuaW1hdGlvbjsKK3R5cGVkZWYgV0tDQUNGQW5pbWF0aW9uKiBQbGF0Zm9y
bUFuaW1hdGlvblJlZjsKK30KKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IEZsb2F0UmVjdDsKK2NsYXNzIFBsYXRmb3JtQ0FBbmltYXRpb247CitjbGFzcyBUaW1pbmdGdW5j
dGlvbjsKKworY2xhc3MgUGxhdGZvcm1DQUFuaW1hdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPFBs
YXRmb3JtQ0FBbmltYXRpb24+IHsKK3B1YmxpYzoKKyAgICBmcmllbmQgY2xhc3MgUGxhdGZvcm1D
QUxheWVyOworICAgIAorICAgIGVudW0gQW5pbWF0aW9uVHlwZSB7IEJhc2ljLCBLZXlmcmFtZSB9
OworICAgIGVudW0gRmlsbE1vZGVUeXBlIHsgTm9GaWxsTW9kZSwgRm9yd2FyZHMsIEJhY2t3YXJk
cywgQm90aCB9OworICAgIGVudW0gVmFsdWVGdW5jdGlvblR5cGUgeyBOb1ZhbHVlRnVuY3Rpb24s
IFJvdGF0ZVgsIFJvdGF0ZVksIFJvdGF0ZVosIFNjYWxlWCwgU2NhbGVZLCBTY2FsZVosIFNjYWxl
LCBUcmFuc2xhdGVYLCBUcmFuc2xhdGVZLCBUcmFuc2xhdGVaLCBUcmFuc2xhdGUgfTsKKworICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IGNyZWF0ZShBbmltYXRpb25U
eXBlLCBjb25zdCBTdHJpbmcmIGtleVBhdGgpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsYXRm
b3JtQ0FBbmltYXRpb24+IGNyZWF0ZShQbGF0Zm9ybUFuaW1hdGlvblJlZiBhbmltYXRpb24pOwor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IGNyZWF0ZShjb25zdCBQ
bGF0Zm9ybUNBQW5pbWF0aW9uKiBhbmltYXRpb24pOworCisgICAgflBsYXRmb3JtQ0FBbmltYXRp
b24oKTsKKyAgICAKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c1ZhbHVlRnVuY3Rpb24oKTsKKyAg
ICAKKyAgICBQbGF0Zm9ybUFuaW1hdGlvblJlZiBwbGF0Zm9ybUFuaW1hdGlvbigpIGNvbnN0Owor
ICAgIAorICAgIEFuaW1hdGlvblR5cGUgYW5pbWF0aW9uVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dHlwZTsgfQorICAgIFN0cmluZyBrZXlQYXRoKCkgY29uc3Q7CisgICAgCisgICAgYm9vbCBub25a
ZXJvQmVnaW5UaW1lRmxhZygpIGNvbnN0OworICAgIHZvaWQgc2V0Tm9uWmVyb0JlZ2luVGltZUZs
YWcoYm9vbCB2YWx1ZSk7CisgICAgCisgICAgQ0ZUaW1lSW50ZXJ2YWwgYmVnaW5UaW1lKCkgY29u
c3Q7CisgICAgdm9pZCBzZXRCZWdpblRpbWUoQ0ZUaW1lSW50ZXJ2YWwpOworICAgIAorICAgIENG
VGltZUludGVydmFsIGR1cmF0aW9uKCkgY29uc3Q7CisgICAgdm9pZCBzZXREdXJhdGlvbihDRlRp
bWVJbnRlcnZhbCk7CisgICAgCisgICAgZmxvYXQgc3BlZWQoKSBjb25zdDsKKyAgICB2b2lkIHNl
dFNwZWVkKGZsb2F0KTsKKworICAgIENGVGltZUludGVydmFsIHRpbWVPZmZzZXQoKSBjb25zdDsK
KyAgICB2b2lkIHNldFRpbWVPZmZzZXQoQ0ZUaW1lSW50ZXJ2YWwpOworCisgICAgZmxvYXQgcmVw
ZWF0Q291bnQoKSBjb25zdDsKKyAgICB2b2lkIHNldFJlcGVhdENvdW50KGZsb2F0KTsKKworICAg
IGJvb2wgYXV0b3JldmVyc2VzKCkgY29uc3Q7CisgICAgdm9pZCBzZXRBdXRvcmV2ZXJzZXMoYm9v
bCk7CisKKyAgICBGaWxsTW9kZVR5cGUgZmlsbE1vZGUoKSBjb25zdDsKKyAgICB2b2lkIHNldEZp
bGxNb2RlKEZpbGxNb2RlVHlwZSk7CisgICAgCisgICAgdm9pZCBzZXRUaW1pbmdGdW5jdGlvbihj
b25zdCBUaW1pbmdGdW5jdGlvbiopOworICAgIHZvaWQgY29weVRpbWluZ0Z1bmN0aW9uRnJvbShj
b25zdCBQbGF0Zm9ybUNBQW5pbWF0aW9uKik7CisKKyAgICBib29sIGlzUmVtb3ZlZE9uQ29tcGxl
dGlvbigpIGNvbnN0OworICAgIHZvaWQgc2V0UmVtb3ZlZE9uQ29tcGxldGlvbihib29sKTsKKwor
ICAgIGJvb2wgaXNBZGRpdGl2ZSgpIGNvbnN0OworICAgIHZvaWQgc2V0QWRkaXRpdmUoYm9vbCk7
CisKKyAgICBWYWx1ZUZ1bmN0aW9uVHlwZSB2YWx1ZUZ1bmN0aW9uKCkgY29uc3Q7CisgICAgdm9p
ZCBzZXRWYWx1ZUZ1bmN0aW9uKFZhbHVlRnVuY3Rpb25UeXBlKTsKKworICAgIC8vIEJhc2ljLWFu
aW1hdGlvbiBwcm9wZXJ0aWVzLgorICAgIHZvaWQgc2V0RnJvbVZhbHVlKGZsb2F0KTsKKyAgICB2
b2lkIHNldEZyb21WYWx1ZShjb25zdCBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpOwor
ICAgIHZvaWQgc2V0RnJvbVZhbHVlKGNvbnN0IEZsb2F0UG9pbnQzRCYpOworICAgIHZvaWQgc2V0
RnJvbVZhbHVlKGNvbnN0IFdlYkNvcmU6OkNvbG9yJik7CisgICAgdm9pZCBjb3B5RnJvbVZhbHVl
RnJvbShjb25zdCBQbGF0Zm9ybUNBQW5pbWF0aW9uKik7CisKKyAgICB2b2lkIHNldFRvVmFsdWUo
ZmxvYXQpOworICAgIHZvaWQgc2V0VG9WYWx1ZShjb25zdCBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYpOworICAgIHZvaWQgc2V0VG9WYWx1ZShjb25zdCBGbG9hdFBvaW50M0QmKTsKKyAg
ICB2b2lkIHNldFRvVmFsdWUoY29uc3QgV2ViQ29yZTo6Q29sb3ImKTsKKyAgICB2b2lkIGNvcHlU
b1ZhbHVlRnJvbShjb25zdCBQbGF0Zm9ybUNBQW5pbWF0aW9uKik7CisKKyAgICAvLyBLZXlmcmFt
ZS1hbmltYXRpb24gcHJvcGVydGllcy4KKyAgICB2b2lkIHNldFZhbHVlcyhjb25zdCBWZWN0b3I8
ZmxvYXQ+Jik7CisgICAgdm9pZCBzZXRWYWx1ZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlRyYW5z
Zm9ybWF0aW9uTWF0cml4PiYpOworICAgIHZvaWQgc2V0VmFsdWVzKGNvbnN0IFZlY3RvcjxGbG9h
dFBvaW50M0Q+Jik7CisgICAgdm9pZCBzZXRWYWx1ZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNv
bG9yPiYpOworICAgIHZvaWQgY29weVZhbHVlc0Zyb20oY29uc3QgUGxhdGZvcm1DQUFuaW1hdGlv
biopOworCisgICAgdm9pZCBzZXRLZXlUaW1lcyhjb25zdCBWZWN0b3I8ZmxvYXQ+Jik7CisgICAg
dm9pZCBjb3B5S2V5VGltZXNGcm9tKGNvbnN0IFBsYXRmb3JtQ0FBbmltYXRpb24qKTsKKworICAg
IHZvaWQgc2V0VGltaW5nRnVuY3Rpb25zKGNvbnN0IFZlY3Rvcjxjb25zdCBUaW1pbmdGdW5jdGlv
bio+Jik7CisgICAgdm9pZCBjb3B5VGltaW5nRnVuY3Rpb25zRnJvbShjb25zdCBQbGF0Zm9ybUNB
QW5pbWF0aW9uKik7CisgICAgCitwcm90ZWN0ZWQ6CisgICAgUGxhdGZvcm1DQUFuaW1hdGlvbihB
bmltYXRpb25UeXBlLCBjb25zdCBTdHJpbmcmIGtleVBhdGgpOworICAgIFBsYXRmb3JtQ0FBbmlt
YXRpb24oUGxhdGZvcm1BbmltYXRpb25SZWYgYW5pbWF0aW9uKTsKKyAgICBQbGF0Zm9ybUNBQW5p
bWF0aW9uKGNvbnN0IFBsYXRmb3JtQ0FBbmltYXRpb24qIGFuaW1hdGlvbik7CisgICAgCitwcml2
YXRlOgorICAgIEFuaW1hdGlvblR5cGUgbV90eXBlOworICAgIAorI2lmIFBMQVRGT1JNKE1BQykK
KyAgICBSZXRhaW5QdHI8Q0FQcm9wZXJ0eUFuaW1hdGlvbj4gbV9hbmltYXRpb247CisjZWxpZiBQ
TEFURk9STShXSU4pCisgICAgUmV0YWluUHRyPENBQ0ZBbmltYXRpb25SZWY+IG1fYW5pbWF0aW9u
OworI2VuZGlmCit9OworCit9CisKKyNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJ
TkcpCisKKyNlbmRpZiAvLyBQbGF0Zm9ybUNBQW5pbWF0aW9uX2gKSW5kZXg6IFdlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaAkocmV2aXNpb24gMCkKKysr
IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmgJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMjA1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFBsYXRmb3JtQ0FMYXllcl9oCisjZGVmaW5l
IFBsYXRmb3JtQ0FMYXllcl9oCisKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisK
KyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJHcmFwaGljc0xheWVyQ0Eu
aCIKKyNpbmNsdWRlICJQbGF0Zm9ybUNBQW5pbWF0aW9uLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1T
dHJpbmcuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVm
UHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0hhc2guaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBQbGF0Zm9ybUNBTGF5ZXI7
CisKK3R5cGVkZWYgVmVjdG9yPFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+ID4gUGxhdGZvcm1DQUxh
eWVyTGlzdDsKKworY2xhc3MgUGxhdGZvcm1DQUxheWVyIDogcHVibGljIFJlZkNvdW50ZWQ8UGxh
dGZvcm1DQUxheWVyPiB7CitwdWJsaWM6CisgICAgLy8gVGlsZWRMYXllciB1c2VkIGluIEdyYXBo
aWNzTGF5ZXIgaGFzIGNvbnN0YW50IHNldHRpbmdzOgorICAgIC8vICAgICAgY1RpbGVkTGF5ZXJU
aWxlU2l6ZSA9IDUxMgorICAgIC8vICAgICAgc2V0VGlsZVNpemU6KGNUaWxlZExheWVyVGlsZVNp
emUsIGNUaWxlZExheWVyVGlsZVNpemUpCisgICAgLy8gICAgICBzZXRMZXZlbHNPZkRldGFpbDox
CisgICAgLy8gICAgICBzZXRMZXZlbHNPZkRldGFpbEJpYXM6MAorICAgIC8vICAgICAgc2V0Q29u
dGVudHNHcmF2aXR5OkAiYm90dG9tTGVmdCIKKyAgICAvLworICAgIC8vIFRpbGVkTGF5ZXIgYWxz
byBoYXMgZHJhd2luZyBmdW5jdGlvbnMgbGlrZSBXZWJMYXllcgorICAgIC8vCisgICAgLy8gV2Vi
TGF5ZXIgaXMgYSBDQUxheWVyIHdpdGggZHJhd2luZyBmdW5jdGlvbnMgc3BlY2lmaWMgdG8gV2Vi
S2l0CisgICAgLy8KKyAgICAvLyBMYXllciBhbmQgVHJhbnNmb3JtTGF5ZXIgYXJlIHVzZWQgYXMg
aXMKKworICAgIGVudW0gTGF5ZXJUeXBlIHsgTGF5ZXJUeXBlTGF5ZXIsIExheWVyVHlwZVdlYkxh
eWVyLCBMYXllclR5cGVUcmFuc2Zvcm1MYXllciwgTGF5ZXJUeXBlV2ViVGlsZWRMYXllciwgTGF5
ZXJUeXBlQ3VzdG9tIH07CisgICAgZW51bSBGaWx0ZXJUeXBlIHsgTGluZWFyLCBOZWFyZXN0LCBU
cmlsaW5lYXIgfTsKKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gY3Jl
YXRlKExheWVyVHlwZSwgR3JhcGhpY3NMYXllckNBKik7CisgICAgCisgICAgLy8gVGhpcyBmdW5j
dGlvbiBwYXNzZXMgdGhlIGxheWVyIGFzIGEgdm9pZCogcmF0aGVyIHRoYW4gYSBQbGF0Zm9ybUxh
eWVyIGJlY2F1c2UgUGxhdGZvcm1MYXllcgorICAgIC8vIGlzIGRlZmluZWQgZGlmZmVyZW50bHkg
Zm9yIE9iaiBDIGFuZCBDKysuIFRoaXMgYWxsb3dzIGNhbGxlcnMgZnJvbSBib3RoIGxhbmd1YWdl
cy4KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IGNyZWF0ZSh2b2lkKiBw
bGF0Zm9ybUxheWVyLCBHcmFwaGljc0xheWVyQ0EqKTsKKworICAgIH5QbGF0Zm9ybUNBTGF5ZXIo
KTsKKyAgICAKKyAgICAvLyBUaGlzIGZ1bmN0aW9uIHBhc3NlcyB0aGUgbGF5ZXIgYXMgYSB2b2lk
KiByYXRoZXIgdGhhbiBhIFBsYXRmb3JtTGF5ZXIgYmVjYXVzZSBQbGF0Zm9ybUxheWVyCisgICAg
Ly8gaXMgZGVmaW5lZCBkaWZmZXJlbnRseSBmb3IgT2JqIEMgYW5kIEMrKy4gVGhpcyBhbGxvd3Mg
Y2FsbGVycyBmcm9tIGJvdGggbGFuZ3VhZ2VzLgorICAgIHN0YXRpYyBQbGF0Zm9ybUNBTGF5ZXIq
IHBsYXRmb3JtQ0FMYXllcih2b2lkKiBwbGF0Zm9ybUxheWVyKTsKKyAgICAKKyAgICBQbGF0Zm9y
bUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Q7CisgICAgCisgICAgc3RhdGljIGJvb2wgaXNW
YWx1ZUZ1bmN0aW9uU3VwcG9ydGVkKCk7CisgICAgCisgICAgR3JhcGhpY3NMYXllckNBKiBvd25l
cigpIGNvbnN0IHsgcmV0dXJuIG1fb3duZXI7IH0KKyAgICB2b2lkIHNldE93bmVyKEdyYXBoaWNz
TGF5ZXJDQSogb3duZXIpOworCisgICAgdm9pZCBhbmltYXRpb25TdGFydGVkKENGVGltZUludGVy
dmFsIGJlZ2luVGltZSkKKyAgICB7CisgICAgICAgIGlmIChtX293bmVyKQorICAgICAgICAgICAg
bV9vd25lci0+YW5pbWF0aW9uU3RhcnRlZChiZWdpblRpbWUpOworICAgIH0KKworICAgIHZvaWQg
c2V0TmVlZHNEaXNwbGF5KGNvbnN0IEZsb2F0UmVjdCogZGlydHlSZWN0ID0gMCk7CisgICAgCisg
ICAgdm9pZCBzZXRDb250ZW50c0NoYW5nZWQoKTsKKyAgICAKKyAgICBMYXllclR5cGUgbGF5ZXJU
eXBlKCkgY29uc3QgeyByZXR1cm4gbV9sYXllclR5cGU7IH0KKworICAgIFBsYXRmb3JtQ0FMYXll
ciogc3VwZXJsYXllcigpIGNvbnN0OworICAgIHZvaWQgcmVtb3ZlRnJvbVN1cGVybGF5ZXIoKTsK
KyAgICB2b2lkIHNldFN1YmxheWVycyhjb25zdCBQbGF0Zm9ybUNBTGF5ZXJMaXN0Jik7CisgICAg
dm9pZCByZW1vdmVBbGxTdWJsYXllcnMoKTsKKyAgICB2b2lkIGFwcGVuZFN1YmxheWVyKFBsYXRm
b3JtQ0FMYXllciopOworICAgIHZvaWQgaW5zZXJ0U3VibGF5ZXIoUGxhdGZvcm1DQUxheWVyKiwg
c2l6ZV90IGluZGV4KTsKKyAgICB2b2lkIHJlcGxhY2VTdWJsYXllcihQbGF0Zm9ybUNBTGF5ZXIq
IHJlZmVyZW5jZSwgUGxhdGZvcm1DQUxheWVyKik7CisgICAgc2l6ZV90IHN1YmxheWVyQ291bnQo
KSBjb25zdDsKKworICAgIC8vIFRoaXMgbWV0aG9kIHJlbW92ZXMgdGhlIHN1YmxheWVycyBmcm9t
IHRoZSBzb3VyY2UgYW5kIHJlcGFyZW50cyB0aGVtIHRvIHRoZSBjdXJyZW50IGxheWVyLgorICAg
IHZvaWQgYWRvcHRTdWJsYXllcnMoUGxhdGZvcm1DQUxheWVyKiBzb3VyY2UpOworICAgIAorICAg
IHZvaWQgYWRkQW5pbWF0aW9uRm9yS2V5KGNvbnN0IFN0cmluZyYga2V5LCBQbGF0Zm9ybUNBQW5p
bWF0aW9uKiBhbmltYXRpb24pOyAgICAKKyAgICB2b2lkIHJlbW92ZUFuaW1hdGlvbkZvcktleShj
b25zdCBTdHJpbmcmIGtleSk7CisgICAgUGFzc1JlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBh
bmltYXRpb25Gb3JLZXkoY29uc3QgU3RyaW5nJiBrZXkpOworICAgIAorICAgIFBsYXRmb3JtQ0FM
YXllciogbWFzaygpIGNvbnN0OworICAgIHZvaWQgc2V0TWFzayhQbGF0Zm9ybUNBTGF5ZXIqKTsK
KyAgICAKKyAgICBib29sIGlzT3BhcXVlKCkgY29uc3Q7CisgICAgdm9pZCBzZXRPcGFxdWUoYm9v
bCk7CisKKyAgICBGbG9hdFJlY3QgYm91bmRzKCkgY29uc3Q7CisgICAgdm9pZCBzZXRCb3VuZHMo
Y29uc3QgRmxvYXRSZWN0Jik7CisKKyAgICBGbG9hdFBvaW50M0QgcG9zaXRpb24oKSBjb25zdDsK
KyAgICB2b2lkIHNldFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQzRCYpOworICAgIHZvaWQgc2V0
UG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYgcG9zKSB7IHNldFBvc2l0aW9uKEZsb2F0UG9pbnQz
RChwb3MueCgpLCBwb3MueSgpLCAwKSk7IH0KKworICAgIEZsb2F0UG9pbnQzRCBhbmNob3JQb2lu
dCgpIGNvbnN0OworICAgIHZvaWQgc2V0QW5jaG9yUG9pbnQoY29uc3QgRmxvYXRQb2ludDNEJik7
CisKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0cmFuc2Zvcm0oKSBjb25zdDsKKyAgICB2b2lk
IHNldFRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpOworCisgICAgVHJhbnNm
b3JtYXRpb25NYXRyaXggc3VibGF5ZXJUcmFuc2Zvcm0oKSBjb25zdDsKKyAgICB2b2lkIHNldFN1
YmxheWVyVHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4Jik7CisKKyAgICBib29s
IGlzSGlkZGVuKCkgY29uc3Q7CisgICAgdm9pZCBzZXRIaWRkZW4oYm9vbCk7CisKKyAgICBib29s
IGlzR2VvbWV0cnlGbGlwcGVkKCkgY29uc3Q7CisgICAgdm9pZCBzZXRHZW9tZXRyeUZsaXBwZWQo
Ym9vbCk7CisKKyAgICBib29sIGlzRG91YmxlU2lkZWQoKSBjb25zdDsKKyAgICB2b2lkIHNldERv
dWJsZVNpZGVkKGJvb2wpOworCisgICAgYm9vbCBtYXNrc1RvQm91bmRzKCkgY29uc3Q7CisgICAg
dm9pZCBzZXRNYXNrc1RvQm91bmRzKGJvb2wpOworCisgICAgdm9pZCogY29udGVudHMoKSBjb25z
dDsKKyAgICB2b2lkIHNldENvbnRlbnRzKHZvaWQqKTsKKworICAgIEZsb2F0UmVjdCBjb250ZW50
c1JlY3QoKSBjb25zdDsKKyAgICB2b2lkIHNldENvbnRlbnRzUmVjdChjb25zdCBGbG9hdFJlY3Qm
KTsKKworICAgIHZvaWQgc2V0TWluaWZpY2F0aW9uRmlsdGVyKEZpbHRlclR5cGUpOworICAgIHZv
aWQgc2V0TWFnbmlmaWNhdGlvbkZpbHRlcihGaWx0ZXJUeXBlKTsKKworICAgIENvbG9yIGJhY2tn
cm91bmRDb2xvcigpIGNvbnN0OworICAgIHZvaWQgc2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IENv
bG9yJik7CisKKyAgICBmbG9hdCBib3JkZXJXaWR0aCgpIGNvbnN0OworICAgIHZvaWQgc2V0Qm9y
ZGVyV2lkdGgoZmxvYXQpOworCisgICAgQ29sb3IgYm9yZGVyQ29sb3IoKSBjb25zdDsKKyAgICB2
b2lkIHNldEJvcmRlckNvbG9yKGNvbnN0IENvbG9yJik7CisKKyAgICBmbG9hdCBvcGFjaXR5KCkg
Y29uc3Q7CisgICAgdm9pZCBzZXRPcGFjaXR5KGZsb2F0KTsKKworICAgIFN0cmluZyBuYW1lKCkg
Y29uc3Q7CisgICAgdm9pZCBzZXROYW1lKGNvbnN0IFN0cmluZyYpOworCisgICAgRmxvYXRSZWN0
IGZyYW1lKCkgY29uc3Q7CisgICAgdm9pZCBzZXRGcmFtZShjb25zdCBGbG9hdFJlY3QmKTsKKwor
ICAgIGZsb2F0IHNwZWVkKCkgY29uc3Q7CisgICAgdm9pZCBzZXRTcGVlZChmbG9hdCk7CisKKyAg
ICBDRlRpbWVJbnRlcnZhbCB0aW1lT2Zmc2V0KCkgY29uc3Q7CisgICAgdm9pZCBzZXRUaW1lT2Zm
c2V0KENGVGltZUludGVydmFsKTsKKworcHJvdGVjdGVkOgorICAgIFBsYXRmb3JtQ0FMYXllcihM
YXllclR5cGUsIFBsYXRmb3JtTGF5ZXIqLCBHcmFwaGljc0xheWVyQ0EqKTsKKyAgICAKK3ByaXZh
dGU6CisgICAgCisgICAgR3JhcGhpY3NMYXllckNBKiBtX293bmVyOworICAgIExheWVyVHlwZSBt
X2xheWVyVHlwZTsKKyAgICAKKyNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKFdJTikKKyAg
ICBSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gbV9sYXllcjsKKyNlbmRpZgorCisjaWYgUExBVEZP
Uk0oTUFDKQorI2lmZGVmIF9fT0JKQ19fCisgICAgUmV0YWluUHRyPE5TT2JqZWN0PiBtX2RlbGVn
YXRlOworI2Vsc2UKKyAgICBSZXRhaW5QdHI8dm9pZD4gbV9kZWxlZ2F0ZTsKKyNlbmRpZgorI2Vu
ZGlmCit9OworCit9CisKKyNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisK
KyNlbmRpZiAvLyBQbGF0Zm9ybUNBTGF5ZXJfaApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9tYWMvUGxhdGZvcm1DQUFuaW1hdGlvbk1hYy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9uTWFjLm1tCShy
ZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvUGxhdGZvcm1D
QUFuaW1hdGlvbk1hYy5tbQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1ODQgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKworI2ltcG9y
dCAiUGxhdGZvcm1DQUFuaW1hdGlvbi5oIgorCisjaW1wb3J0ICJGbG9hdENvbnZlcnNpb24uaCIK
KyNpbXBvcnQgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW1wb3J0ICJUaW1pbmdGdW5jdGlvbi5oIgor
I2ltcG9ydCA8UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+CisKKyNkZWZpbmUgSEFWRV9NT0RFUk5f
UVVBUlRaQ09SRSAoIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxE
SU5HX09OX0xFT1BBUkQpKQorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworLy8gVGhpcyB2
YWx1ZSBtdXN0IGJlIHRoZSBzYW1lIGFzIGluIFBsYXRmb3JtQ0FMYXllck1hYy5tbQorc3RhdGlj
IGNvbnN0IE5TU3RyaW5nKiBXS05vblplcm9CZWdpblRpbWVGbGFnID0gQCJXS1BsYXRmb3JtQ0FB
bmltYXRpb25Ob25aZXJvQmVnaW5UaW1lRmxhZyI7CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBjb3B5
VHJhbnNmb3JtKENBVHJhbnNmb3JtM0QmIHRvVDNELCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgdCkKK3sKKyAgICB0b1QzRC5tMTEgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHQubTExKCkp
OworICAgIHRvVDNELm0xMiA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodC5tMTIoKSk7CisgICAg
dG9UM0QubTEzID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCh0Lm0xMygpKTsKKyAgICB0b1QzRC5t
MTQgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHQubTE0KCkpOworICAgIHRvVDNELm0yMSA9IG5h
cnJvd1ByZWNpc2lvblRvRmxvYXQodC5tMjEoKSk7CisgICAgdG9UM0QubTIyID0gbmFycm93UHJl
Y2lzaW9uVG9GbG9hdCh0Lm0yMigpKTsKKyAgICB0b1QzRC5tMjMgPSBuYXJyb3dQcmVjaXNpb25U
b0Zsb2F0KHQubTIzKCkpOworICAgIHRvVDNELm0yNCA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQo
dC5tMjQoKSk7CisgICAgdG9UM0QubTMxID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCh0Lm0zMSgp
KTsKKyAgICB0b1QzRC5tMzIgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHQubTMyKCkpOworICAg
IHRvVDNELm0zMyA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodC5tMzMoKSk7CisgICAgdG9UM0Qu
bTM0ID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCh0Lm0zNCgpKTsKKyAgICB0b1QzRC5tNDEgPSBu
YXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHQubTQxKCkpOworICAgIHRvVDNELm00MiA9IG5hcnJvd1By
ZWNpc2lvblRvRmxvYXQodC5tNDIoKSk7CisgICAgdG9UM0QubTQzID0gbmFycm93UHJlY2lzaW9u
VG9GbG9hdCh0Lm00MygpKTsKKyAgICB0b1QzRC5tNDQgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0
KHQubTQ0KCkpOworfQorCitzdGF0aWMgTlNTdHJpbmcqIHRvQ0FGaWxsTW9kZVR5cGUoUGxhdGZv
cm1DQUFuaW1hdGlvbjo6RmlsbE1vZGVUeXBlIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKSB7
CisgICAgY2FzZSBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpOb0ZpbGxNb2RlOgorICAgIGNhc2UgUGxh
dGZvcm1DQUFuaW1hdGlvbjo6Rm9yd2FyZHM6IHJldHVybiBrQ0FGaWxsTW9kZUZvcndhcmRzOwor
ICAgIGNhc2UgUGxhdGZvcm1DQUFuaW1hdGlvbjo6QmFja3dhcmRzOiByZXR1cm4ga0NBRmlsbE1v
ZGVCYWNrd2FyZHM7CisgICAgY2FzZSBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpCb3RoOiByZXR1cm4g
a0NBRmlsbE1vZGVCb3RoOworICAgIH0KKyAgICByZXR1cm4gQCIiOworfQorCitzdGF0aWMgUGxh
dGZvcm1DQUFuaW1hdGlvbjo6RmlsbE1vZGVUeXBlIGZyb21DQUZpbGxNb2RlVHlwZShOU1N0cmlu
Zyogc3RyaW5nKQoreworICAgIGlmIChbc3RyaW5nIGlzRXF1YWxUb1N0cmluZzprQ0FGaWxsTW9k
ZUJhY2t3YXJkc10pCisgICAgICAgIHJldHVybiBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpCYWNrd2Fy
ZHM7CisKKyAgICBpZiAoW3N0cmluZyBpc0VxdWFsVG9TdHJpbmc6a0NBRmlsbE1vZGVCb3RoXSkK
KyAgICAgICAgcmV0dXJuIFBsYXRmb3JtQ0FBbmltYXRpb246OkJvdGg7CisKKyAgICByZXR1cm4g
UGxhdGZvcm1DQUFuaW1hdGlvbjo6Rm9yd2FyZHM7Cit9CisKK3N0YXRpYyBOU1N0cmluZyogdG9D
QVZhbHVlRnVuY3Rpb25UeXBlKFBsYXRmb3JtQ0FBbmltYXRpb246OlZhbHVlRnVuY3Rpb25UeXBl
IHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBQbGF0Zm9ybUNBQW5pbWF0
aW9uOjpOb1ZhbHVlRnVuY3Rpb246IHJldHVybiBAIiI7CisgICAgY2FzZSBQbGF0Zm9ybUNBQW5p
bWF0aW9uOjpSb3RhdGVYOiByZXR1cm4ga0NBVmFsdWVGdW5jdGlvblJvdGF0ZVg7CisgICAgY2Fz
ZSBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpSb3RhdGVZOiByZXR1cm4ga0NBVmFsdWVGdW5jdGlvblJv
dGF0ZVk7CisgICAgY2FzZSBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpSb3RhdGVaOiByZXR1cm4ga0NB
VmFsdWVGdW5jdGlvblJvdGF0ZVo7CisgICAgY2FzZSBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpTY2Fs
ZVg6IHJldHVybiBrQ0FWYWx1ZUZ1bmN0aW9uU2NhbGVYOworICAgIGNhc2UgUGxhdGZvcm1DQUFu
aW1hdGlvbjo6U2NhbGVZOiByZXR1cm4ga0NBVmFsdWVGdW5jdGlvblNjYWxlWTsKKyAgICBjYXNl
IFBsYXRmb3JtQ0FBbmltYXRpb246OlNjYWxlWjogcmV0dXJuIGtDQVZhbHVlRnVuY3Rpb25TY2Fs
ZVo7CisgICAgY2FzZSBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpTY2FsZTogcmV0dXJuIGtDQVZhbHVl
RnVuY3Rpb25TY2FsZTsKKyAgICBjYXNlIFBsYXRmb3JtQ0FBbmltYXRpb246OlRyYW5zbGF0ZVg6
IHJldHVybiBrQ0FWYWx1ZUZ1bmN0aW9uVHJhbnNsYXRlWDsKKyAgICBjYXNlIFBsYXRmb3JtQ0FB
bmltYXRpb246OlRyYW5zbGF0ZVk6IHJldHVybiBrQ0FWYWx1ZUZ1bmN0aW9uVHJhbnNsYXRlWTsK
KyAgICBjYXNlIFBsYXRmb3JtQ0FBbmltYXRpb246OlRyYW5zbGF0ZVo6IHJldHVybiBrQ0FWYWx1
ZUZ1bmN0aW9uVHJhbnNsYXRlWjsKKyAgICBjYXNlIFBsYXRmb3JtQ0FBbmltYXRpb246OlRyYW5z
bGF0ZTogcmV0dXJuIGtDQVZhbHVlRnVuY3Rpb25UcmFuc2xhdGU7CisgICAgfQorICAgIHJldHVy
biBAIiI7Cit9CisKK3N0YXRpYyBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpWYWx1ZUZ1bmN0aW9uVHlw
ZSBmcm9tQ0FWYWx1ZUZ1bmN0aW9uVHlwZShOU1N0cmluZyogc3RyaW5nKQoreworICAgIGlmIChb
c3RyaW5nIGlzRXF1YWxUb1N0cmluZzprQ0FWYWx1ZUZ1bmN0aW9uUm90YXRlWF0pCisgICAgICAg
IHJldHVybiBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpSb3RhdGVYOworCisgICAgaWYgKFtzdHJpbmcg
aXNFcXVhbFRvU3RyaW5nOmtDQVZhbHVlRnVuY3Rpb25Sb3RhdGVZXSkKKyAgICAgICAgcmV0dXJu
IFBsYXRmb3JtQ0FBbmltYXRpb246OlJvdGF0ZVk7CisKKyAgICBpZiAoW3N0cmluZyBpc0VxdWFs
VG9TdHJpbmc6a0NBVmFsdWVGdW5jdGlvblJvdGF0ZVpdKQorICAgICAgICByZXR1cm4gUGxhdGZv
cm1DQUFuaW1hdGlvbjo6Um90YXRlWjsKKworICAgIGlmIChbc3RyaW5nIGlzRXF1YWxUb1N0cmlu
ZzprQ0FWYWx1ZUZ1bmN0aW9uU2NhbGVYXSkKKyAgICAgICAgcmV0dXJuIFBsYXRmb3JtQ0FBbmlt
YXRpb246OlNjYWxlWDsKKworICAgIGlmIChbc3RyaW5nIGlzRXF1YWxUb1N0cmluZzprQ0FWYWx1
ZUZ1bmN0aW9uU2NhbGVZXSkKKyAgICAgICAgcmV0dXJuIFBsYXRmb3JtQ0FBbmltYXRpb246OlNj
YWxlWTsKKworICAgIGlmIChbc3RyaW5nIGlzRXF1YWxUb1N0cmluZzprQ0FWYWx1ZUZ1bmN0aW9u
U2NhbGVaXSkKKyAgICAgICAgcmV0dXJuIFBsYXRmb3JtQ0FBbmltYXRpb246OlNjYWxlWjsKKwor
ICAgIGlmIChbc3RyaW5nIGlzRXF1YWxUb1N0cmluZzprQ0FWYWx1ZUZ1bmN0aW9uU2NhbGVdKQor
ICAgICAgICByZXR1cm4gUGxhdGZvcm1DQUFuaW1hdGlvbjo6U2NhbGU7CisKKyAgICBpZiAoW3N0
cmluZyBpc0VxdWFsVG9TdHJpbmc6a0NBVmFsdWVGdW5jdGlvblRyYW5zbGF0ZVhdKQorICAgICAg
ICByZXR1cm4gUGxhdGZvcm1DQUFuaW1hdGlvbjo6VHJhbnNsYXRlWDsKKworICAgIGlmIChbc3Ry
aW5nIGlzRXF1YWxUb1N0cmluZzprQ0FWYWx1ZUZ1bmN0aW9uVHJhbnNsYXRlWV0pCisgICAgICAg
IHJldHVybiBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpUcmFuc2xhdGVZOworCisgICAgaWYgKFtzdHJp
bmcgaXNFcXVhbFRvU3RyaW5nOmtDQVZhbHVlRnVuY3Rpb25UcmFuc2xhdGVaXSkKKyAgICAgICAg
cmV0dXJuIFBsYXRmb3JtQ0FBbmltYXRpb246OlRyYW5zbGF0ZVo7CisKKyAgICBpZiAoW3N0cmlu
ZyBpc0VxdWFsVG9TdHJpbmc6a0NBVmFsdWVGdW5jdGlvblRyYW5zbGF0ZV0pCisgICAgICAgIHJl
dHVybiBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpUcmFuc2xhdGU7CisKKyAgICByZXR1cm4gUGxhdGZv
cm1DQUFuaW1hdGlvbjo6Tm9WYWx1ZUZ1bmN0aW9uOworfQorCitzdGF0aWMgQ0FNZWRpYVRpbWlu
Z0Z1bmN0aW9uKiB0b0NBTWVkaWFUaW1pbmdGdW5jdGlvbihjb25zdCBUaW1pbmdGdW5jdGlvbiog
dGltaW5nRnVuY3Rpb24pCit7CisgICAgaWYgKCF0aW1pbmdGdW5jdGlvbikKKyAgICAgICAgcmV0
dXJuIFtDQU1lZGlhVGltaW5nRnVuY3Rpb24gZnVuY3Rpb25XaXRoTmFtZTprQ0FNZWRpYVRpbWlu
Z0Z1bmN0aW9uRGVmYXVsdF07CisgICAgICAgICAgICAKKyAgICBpZiAodGltaW5nRnVuY3Rpb24t
PmlzQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbigpKSB7CisgICAgICAgIGNvbnN0IEN1YmljQmV6
aWVyVGltaW5nRnVuY3Rpb24qIGN0ZiA9IHN0YXRpY19jYXN0PGNvbnN0IEN1YmljQmV6aWVyVGlt
aW5nRnVuY3Rpb24qPih0aW1pbmdGdW5jdGlvbik7CisgICAgICAgIHJldHVybiBbQ0FNZWRpYVRp
bWluZ0Z1bmN0aW9uIGZ1bmN0aW9uV2l0aENvbnRyb2xQb2ludHM6c3RhdGljX2Nhc3Q8ZmxvYXQ+
KGN0Zi0+eDEoKSkgOnN0YXRpY19jYXN0PGZsb2F0PihjdGYtPnkxKCkpCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6c3RhdGlj
X2Nhc3Q8ZmxvYXQ+KGN0Zi0+eDIoKSkgOnN0YXRpY19jYXN0PGZsb2F0PihjdGYtPnkyKCkpXTsK
KyAgICB9CisgICAgCisgICAgcmV0dXJuIFtDQU1lZGlhVGltaW5nRnVuY3Rpb24gZnVuY3Rpb25X
aXRoTmFtZTprQ0FNZWRpYVRpbWluZ0Z1bmN0aW9uTGluZWFyXTsKKworICAgIHJldHVybiAwOwor
fQorCitQYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IFBsYXRmb3JtQ0FBbmltYXRpb246
OmNyZWF0ZShBbmltYXRpb25UeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCkKK3sKKyAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFBsYXRmb3JtQ0FBbmltYXRpb24odHlwZSwga2V5UGF0aCkp
OworfQorCitQYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IFBsYXRmb3JtQ0FBbmltYXRp
b246OmNyZWF0ZShQbGF0Zm9ybUFuaW1hdGlvblJlZiBhbmltYXRpb24pCit7CisgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBQbGF0Zm9ybUNBQW5pbWF0aW9uKGFuaW1hdGlvbikpOworfQorCitQYXNz
UmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IFBsYXRmb3JtQ0FBbmltYXRpb246OmNyZWF0ZShj
b25zdCBQbGF0Zm9ybUNBQW5pbWF0aW9uKiBhbmltYXRpb24pCit7CisgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBQbGF0Zm9ybUNBQW5pbWF0aW9uKGFuaW1hdGlvbikpOworfQorCitQbGF0Zm9ybUNB
QW5pbWF0aW9uOjpQbGF0Zm9ybUNBQW5pbWF0aW9uKEFuaW1hdGlvblR5cGUgdHlwZSwgY29uc3Qg
U3RyaW5nJiBrZXlQYXRoKQorICAgIDogbV90eXBlKHR5cGUpCit7CisgICAgaWYgKHR5cGUgPT0g
QmFzaWMpCisgICAgICAgIG1fYW5pbWF0aW9uLmFkb3B0TlMoW1tDQUJhc2ljQW5pbWF0aW9uIGFu
aW1hdGlvbldpdGhLZXlQYXRoOmtleVBhdGhdIHJldGFpbl0pOworICAgIGVsc2UKKyAgICAgICAg
bV9hbmltYXRpb24uYWRvcHROUyhbW0NBS2V5ZnJhbWVBbmltYXRpb24gYW5pbWF0aW9uV2l0aEtl
eVBhdGg6a2V5UGF0aF0gcmV0YWluXSk7Cit9CisKK1BsYXRmb3JtQ0FBbmltYXRpb246OlBsYXRm
b3JtQ0FBbmltYXRpb24oUGxhdGZvcm1BbmltYXRpb25SZWYgYW5pbWF0aW9uKQoreworICAgIGlm
IChbc3RhdGljX2Nhc3Q8Q0FBbmltYXRpb24qPihhbmltYXRpb24pIGlzS2luZE9mQ2xhc3M6W0NB
QmFzaWNBbmltYXRpb24gY2xhc3NdXSkKKyAgICAgICAgbV90eXBlID0gQmFzaWM7CisgICAgZWxz
ZSBpZiAoW3N0YXRpY19jYXN0PENBQW5pbWF0aW9uKj4oYW5pbWF0aW9uKSBpc0tpbmRPZkNsYXNz
OltDQUtleWZyYW1lQW5pbWF0aW9uIGNsYXNzXV0pCisgICAgICAgIG1fdHlwZSA9IEtleWZyYW1l
OworICAgIGVsc2UgeworICAgICAgICBBU1NFUlQoMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgCisgICAgbV9hbmltYXRpb24gPSBzdGF0aWNfY2FzdDxDQVByb3BlcnR5QW5pbWF0aW9u
Kj4oYW5pbWF0aW9uKTsKK30KKworUGxhdGZvcm1DQUFuaW1hdGlvbjo6UGxhdGZvcm1DQUFuaW1h
dGlvbihjb25zdCBQbGF0Zm9ybUNBQW5pbWF0aW9uKiBhbmltYXRpb24pCit7CisgICAgUGxhdGZv
cm1DQUFuaW1hdGlvbiogbmV3QW5pbWF0aW9uID0gbmV3IFBsYXRmb3JtQ0FBbmltYXRpb24oYW5p
bWF0aW9uLT5hbmltYXRpb25UeXBlKCksIGFuaW1hdGlvbi0+a2V5UGF0aCgpKTsKKworICAgIG5l
d0FuaW1hdGlvbi0+c2V0QmVnaW5UaW1lKGFuaW1hdGlvbi0+YmVnaW5UaW1lKCkpOworICAgIG5l
d0FuaW1hdGlvbi0+c2V0RHVyYXRpb24oYW5pbWF0aW9uLT5kdXJhdGlvbigpKTsKKyAgICBuZXdB
bmltYXRpb24tPnNldFNwZWVkKGFuaW1hdGlvbi0+c3BlZWQoKSk7CisgICAgbmV3QW5pbWF0aW9u
LT5zZXRUaW1lT2Zmc2V0KGFuaW1hdGlvbi0+dGltZU9mZnNldCgpKTsKKyAgICBuZXdBbmltYXRp
b24tPnNldFJlcGVhdENvdW50KGFuaW1hdGlvbi0+cmVwZWF0Q291bnQoKSk7CisgICAgbmV3QW5p
bWF0aW9uLT5zZXRBdXRvcmV2ZXJzZXMoYW5pbWF0aW9uLT5hdXRvcmV2ZXJzZXMoKSk7CisgICAg
bmV3QW5pbWF0aW9uLT5zZXRGaWxsTW9kZShhbmltYXRpb24tPmZpbGxNb2RlKCkpOworICAgIG5l
d0FuaW1hdGlvbi0+c2V0UmVtb3ZlZE9uQ29tcGxldGlvbihhbmltYXRpb24tPmlzUmVtb3ZlZE9u
Q29tcGxldGlvbigpKTsKKyAgICBuZXdBbmltYXRpb24tPnNldEFkZGl0aXZlKGFuaW1hdGlvbi0+
aXNBZGRpdGl2ZSgpKTsKKyAgICBuZXdBbmltYXRpb24tPmNvcHlUaW1pbmdGdW5jdGlvbkZyb20o
YW5pbWF0aW9uKTsKKworI2lmIEhBVkVfTU9ERVJOX1FVQVJUWkNPUkUKKyAgICBuZXdBbmltYXRp
b24tPnNldFZhbHVlRnVuY3Rpb24oYW5pbWF0aW9uLT52YWx1ZUZ1bmN0aW9uKCkpOworI2VuZGlm
CisKKyAgICBuZXdBbmltYXRpb24tPnNldE5vblplcm9CZWdpblRpbWVGbGFnKGFuaW1hdGlvbi0+
bm9uWmVyb0JlZ2luVGltZUZsYWcoKSk7CisgICAgCisgICAgLy8gQ29weSB0aGUgc3BlY2lmaWMg
QmFzaWMgb3IgS2V5ZnJhbWUgdmFsdWVzCisgICAgaWYgKGFuaW1hdGlvbi0+YW5pbWF0aW9uVHlw
ZSgpID09IEtleWZyYW1lKSB7CisgICAgICAgIG5ld0FuaW1hdGlvbi0+Y29weVZhbHVlc0Zyb20o
YW5pbWF0aW9uKTsKKyAgICAgICAgbmV3QW5pbWF0aW9uLT5jb3B5S2V5VGltZXNGcm9tKGFuaW1h
dGlvbik7CisgICAgICAgIG5ld0FuaW1hdGlvbi0+Y29weVRpbWluZ0Z1bmN0aW9uc0Zyb20oYW5p
bWF0aW9uKTsKKyAgICB9IGVsc2UgeworICAgICAgICBuZXdBbmltYXRpb24tPmNvcHlGcm9tVmFs
dWVGcm9tKGFuaW1hdGlvbik7CisgICAgICAgIG5ld0FuaW1hdGlvbi0+Y29weVRvVmFsdWVGcm9t
KGFuaW1hdGlvbik7CisgICAgfQorICAgIAorfQorCitQbGF0Zm9ybUNBQW5pbWF0aW9uOjp+UGxh
dGZvcm1DQUFuaW1hdGlvbigpCit7Cit9CisKK2Jvb2wgUGxhdGZvcm1DQUFuaW1hdGlvbjo6bm9u
WmVyb0JlZ2luVGltZUZsYWcoKSBjb25zdAoreworICAgIHJldHVybiBbW21fYW5pbWF0aW9uLmdl
dCgpIHZhbHVlRm9yS2V5OldLTm9uWmVyb0JlZ2luVGltZUZsYWddIGJvb2xWYWx1ZV07Cit9CisK
K3ZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbjo6c2V0Tm9uWmVyb0JlZ2luVGltZUZsYWcoYm9vbCB2
YWx1ZSkKK3sKKyAgICBbbV9hbmltYXRpb24uZ2V0KCkgc2V0VmFsdWU6W05TTnVtYmVyIG51bWJl
cldpdGhCb29sOnZhbHVlXSBmb3JLZXk6V0tOb25aZXJvQmVnaW5UaW1lRmxhZ107CisKK30KKyAg
ICAKK2Jvb2wgUGxhdGZvcm1DQUFuaW1hdGlvbjo6c3VwcG9ydHNWYWx1ZUZ1bmN0aW9uKCkKK3sK
KyAgICBzdGF0aWMgYm9vbCBzSGF2ZVZhbHVlRnVuY3Rpb24gPSBbQ0FQcm9wZXJ0eUFuaW1hdGlv
biBpbnN0YW5jZXNSZXNwb25kVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2V0VmFsdWVGdW5jdGlvbjop
XTsKKyAgICByZXR1cm4gc0hhdmVWYWx1ZUZ1bmN0aW9uOworfQorCitQbGF0Zm9ybUFuaW1hdGlv
blJlZiBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpwbGF0Zm9ybUFuaW1hdGlvbigpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fYW5pbWF0aW9uLmdldCgpOworfQorCitTdHJpbmcgUGxhdGZvcm1DQUFuaW1h
dGlvbjo6a2V5UGF0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFttX2FuaW1hdGlvbi5nZXQoKSBr
ZXlQYXRoXTsKK30KKworQ0ZUaW1lSW50ZXJ2YWwgUGxhdGZvcm1DQUFuaW1hdGlvbjo6YmVnaW5U
aW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gW21fYW5pbWF0aW9uLmdldCgpIGJlZ2luVGltZV07
Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbjo6c2V0QmVnaW5UaW1lKENGVGltZUludGVy
dmFsIHZhbHVlKQoreworICAgIFttX2FuaW1hdGlvbi5nZXQoKSBzZXRCZWdpblRpbWU6dmFsdWVd
OworfQorCitDRlRpbWVJbnRlcnZhbCBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpkdXJhdGlvbigpIGNv
bnN0Cit7CisgICAgcmV0dXJuIFttX2FuaW1hdGlvbi5nZXQoKSBkdXJhdGlvbl07Cit9CisKK3Zv
aWQgUGxhdGZvcm1DQUFuaW1hdGlvbjo6c2V0RHVyYXRpb24oQ0ZUaW1lSW50ZXJ2YWwgdmFsdWUp
Cit7CisgICAgW21fYW5pbWF0aW9uLmdldCgpIHNldER1cmF0aW9uOnZhbHVlXTsKK30KKworZmxv
YXQgUGxhdGZvcm1DQUFuaW1hdGlvbjo6c3BlZWQoKSBjb25zdAoreworICAgIHJldHVybiBbbV9h
bmltYXRpb24uZ2V0KCkgc3BlZWRdOworfQorCit2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb246OnNl
dFNwZWVkKGZsb2F0IHZhbHVlKQoreworICAgIFttX2FuaW1hdGlvbi5nZXQoKSBzZXRTcGVlZDp2
YWx1ZV07Cit9CisKK0NGVGltZUludGVydmFsIFBsYXRmb3JtQ0FBbmltYXRpb246OnRpbWVPZmZz
ZXQoKSBjb25zdAoreworICAgIHJldHVybiBbbV9hbmltYXRpb24uZ2V0KCkgdGltZU9mZnNldF07
Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbjo6c2V0VGltZU9mZnNldChDRlRpbWVJbnRl
cnZhbCB2YWx1ZSkKK3sKKyAgICBbbV9hbmltYXRpb24uZ2V0KCkgc2V0VGltZU9mZnNldDp2YWx1
ZV07Cit9CisKK2Zsb2F0IFBsYXRmb3JtQ0FBbmltYXRpb246OnJlcGVhdENvdW50KCkgY29uc3QK
K3sKKyAgICByZXR1cm4gW21fYW5pbWF0aW9uLmdldCgpIHJlcGVhdENvdW50XTsKK30KKwordm9p
ZCBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpzZXRSZXBlYXRDb3VudChmbG9hdCB2YWx1ZSkKK3sKKyAg
ICBbbV9hbmltYXRpb24uZ2V0KCkgc2V0UmVwZWF0Q291bnQ6dmFsdWVdOworfQorCitib29sIFBs
YXRmb3JtQ0FBbmltYXRpb246OmF1dG9yZXZlcnNlcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIFtt
X2FuaW1hdGlvbi5nZXQoKSBhdXRvcmV2ZXJzZXNdOworfQorCit2b2lkIFBsYXRmb3JtQ0FBbmlt
YXRpb246OnNldEF1dG9yZXZlcnNlcyhib29sIHZhbHVlKQoreworICAgIFttX2FuaW1hdGlvbi5n
ZXQoKSBzZXRBdXRvcmV2ZXJzZXM6dmFsdWVdOworfQorCitQbGF0Zm9ybUNBQW5pbWF0aW9uOjpG
aWxsTW9kZVR5cGUgUGxhdGZvcm1DQUFuaW1hdGlvbjo6ZmlsbE1vZGUoKSBjb25zdAoreworICAg
IHJldHVybiBmcm9tQ0FGaWxsTW9kZVR5cGUoW21fYW5pbWF0aW9uLmdldCgpIGZpbGxNb2RlXSk7
Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbjo6c2V0RmlsbE1vZGUoRmlsbE1vZGVUeXBl
IHZhbHVlKQoreworICAgIFttX2FuaW1hdGlvbi5nZXQoKSBzZXRGaWxsTW9kZTp0b0NBRmlsbE1v
ZGVUeXBlKHZhbHVlKV07Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbjo6c2V0VGltaW5n
RnVuY3Rpb24oY29uc3QgVGltaW5nRnVuY3Rpb24qIHZhbHVlKQoreworICAgIFttX2FuaW1hdGlv
bi5nZXQoKSBzZXRUaW1pbmdGdW5jdGlvbjp0b0NBTWVkaWFUaW1pbmdGdW5jdGlvbih2YWx1ZSld
OworfQorCit2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb246OmNvcHlUaW1pbmdGdW5jdGlvbkZyb20o
Y29uc3QgUGxhdGZvcm1DQUFuaW1hdGlvbiogdmFsdWUpCit7CisgICAgW21fYW5pbWF0aW9uLmdl
dCgpIHNldFRpbWluZ0Z1bmN0aW9uOlt2YWx1ZS0+bV9hbmltYXRpb24uZ2V0KCkgdGltaW5nRnVu
Y3Rpb25dXTsKK30KKworYm9vbCBQbGF0Zm9ybUNBQW5pbWF0aW9uOjppc1JlbW92ZWRPbkNvbXBs
ZXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBbbV9hbmltYXRpb24uZ2V0KCkgaXNSZW1vdmVk
T25Db21wbGV0aW9uXTsKK30KKwordm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpzZXRSZW1vdmVk
T25Db21wbGV0aW9uKGJvb2wgdmFsdWUpCit7CisgICAgW21fYW5pbWF0aW9uLmdldCgpIHNldFJl
bW92ZWRPbkNvbXBsZXRpb246dmFsdWVdOworfQorCitib29sIFBsYXRmb3JtQ0FBbmltYXRpb246
OmlzQWRkaXRpdmUoKSBjb25zdAoreworICAgIHJldHVybiBbbV9hbmltYXRpb24uZ2V0KCkgaXNB
ZGRpdGl2ZV07Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbjo6c2V0QWRkaXRpdmUoYm9v
bCB2YWx1ZSkKK3sKKyAgICBbbV9hbmltYXRpb24uZ2V0KCkgc2V0QWRkaXRpdmU6dmFsdWVdOwor
fQorCitQbGF0Zm9ybUNBQW5pbWF0aW9uOjpWYWx1ZUZ1bmN0aW9uVHlwZSBQbGF0Zm9ybUNBQW5p
bWF0aW9uOjp2YWx1ZUZ1bmN0aW9uKCkgY29uc3QKK3sKKyAgICBDQVZhbHVlRnVuY3Rpb24qIHZm
ID0gW21fYW5pbWF0aW9uLmdldCgpIHZhbHVlRnVuY3Rpb25dOworICAgIHJldHVybiBmcm9tQ0FW
YWx1ZUZ1bmN0aW9uVHlwZShbdmYgbmFtZV0pOworfQorCit2b2lkIFBsYXRmb3JtQ0FBbmltYXRp
b246OnNldFZhbHVlRnVuY3Rpb24oVmFsdWVGdW5jdGlvblR5cGUgdmFsdWUpCit7CisgICAgW21f
YW5pbWF0aW9uLmdldCgpIHNldFZhbHVlRnVuY3Rpb246W0NBVmFsdWVGdW5jdGlvbiBmdW5jdGlv
bldpdGhOYW1lOnRvQ0FWYWx1ZUZ1bmN0aW9uVHlwZSh2YWx1ZSldXTsKK30KKwordm9pZCBQbGF0
Zm9ybUNBQW5pbWF0aW9uOjpzZXRGcm9tVmFsdWUoZmxvYXQgdmFsdWUpCit7CisgICAgaWYgKGFu
aW1hdGlvblR5cGUoKSAhPSBCYXNpYykKKyAgICAgICAgcmV0dXJuOworICAgIFtzdGF0aWNfY2Fz
dDxDQUJhc2ljQW5pbWF0aW9uKj4obV9hbmltYXRpb24uZ2V0KCkpIHNldEZyb21WYWx1ZTpbTlNO
dW1iZXIgbnVtYmVyV2l0aERvdWJsZTp2YWx1ZV1dOworfQorCit2b2lkIFBsYXRmb3JtQ0FBbmlt
YXRpb246OnNldEZyb21WYWx1ZShjb25zdCBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCYg
dmFsdWUpCit7CisgICAgaWYgKGFuaW1hdGlvblR5cGUoKSAhPSBCYXNpYykKKyAgICAgICAgcmV0
dXJuOworCisgICAgQ0FUcmFuc2Zvcm0zRCBjYVRyYW5zZm9ybTsKKyAgICBjb3B5VHJhbnNmb3Jt
KGNhVHJhbnNmb3JtLCB2YWx1ZSk7CisgICAgW3N0YXRpY19jYXN0PENBQmFzaWNBbmltYXRpb24q
PihtX2FuaW1hdGlvbi5nZXQoKSkgc2V0RnJvbVZhbHVlOltOU1ZhbHVlIHZhbHVlV2l0aENBVHJh
bnNmb3JtM0Q6Y2FUcmFuc2Zvcm1dXTsKK30KKwordm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpz
ZXRGcm9tVmFsdWUoY29uc3QgRmxvYXRQb2ludDNEJiB2YWx1ZSkKK3sKKyAgICBpZiAoYW5pbWF0
aW9uVHlwZSgpICE9IEJhc2ljKQorICAgICAgICByZXR1cm47CisKKyAgICBOU0FycmF5KiBhcnJh
eSA9IFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6CisgICAgICAgICAgICAgICAgICAgICAgICBb
TlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTp2YWx1ZS54KCldLAorICAgICAgICAgICAgICAgICAg
ICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6dmFsdWUueSgpXSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOnZhbHVlLnooKV0sCisgICAg
ICAgICAgICAgICAgICAgICAgICBuaWxdOworICAgIFtzdGF0aWNfY2FzdDxDQUJhc2ljQW5pbWF0
aW9uKj4obV9hbmltYXRpb24uZ2V0KCkpIHNldEZyb21WYWx1ZTphcnJheV07Cit9CisKK3ZvaWQg
UGxhdGZvcm1DQUFuaW1hdGlvbjo6c2V0RnJvbVZhbHVlKGNvbnN0IFdlYkNvcmU6OkNvbG9yJiB2
YWx1ZSkKK3sKKyAgICBpZiAoYW5pbWF0aW9uVHlwZSgpICE9IEJhc2ljKQorICAgICAgICByZXR1
cm47CisKKyAgICBOU0FycmF5KiBhcnJheSA9IFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6Cisg
ICAgICAgICAgICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTp2YWx1ZS5y
ZWQoKV0sCisgICAgICAgICAgICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJs
ZTp2YWx1ZS5ncmVlbigpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFtOU051bWJlciBudW1i
ZXJXaXRoRG91YmxlOnZhbHVlLmJsdWUoKV0sCisgICAgICAgICAgICAgICAgICAgICAgICBbTlNO
dW1iZXIgbnVtYmVyV2l0aERvdWJsZTp2YWx1ZS5hbHBoYSgpXSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIG5pbF07CisgICAgW3N0YXRpY19jYXN0PENBQmFzaWNBbmltYXRpb24qPihtX2FuaW1h
dGlvbi5nZXQoKSkgc2V0RnJvbVZhbHVlOmFycmF5XTsKK30KKwordm9pZCBQbGF0Zm9ybUNBQW5p
bWF0aW9uOjpjb3B5RnJvbVZhbHVlRnJvbShjb25zdCBQbGF0Zm9ybUNBQW5pbWF0aW9uKiB2YWx1
ZSkKK3sKKyAgICBpZiAoYW5pbWF0aW9uVHlwZSgpICE9IEJhc2ljIHx8IHZhbHVlLT5hbmltYXRp
b25UeXBlKCkgIT0gQmFzaWMpCisgICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgQ0FCYXNp
Y0FuaW1hdGlvbiogb3RoZXJBbmltYXRpb24gPSBzdGF0aWNfY2FzdDxDQUJhc2ljQW5pbWF0aW9u
Kj4odmFsdWUtPm1fYW5pbWF0aW9uLmdldCgpKTsKKyAgICBbc3RhdGljX2Nhc3Q8Q0FCYXNpY0Fu
aW1hdGlvbio+KG1fYW5pbWF0aW9uLmdldCgpKSBzZXRGcm9tVmFsdWU6W290aGVyQW5pbWF0aW9u
IGZyb21WYWx1ZV1dOworfQorCit2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb246OnNldFRvVmFsdWUo
ZmxvYXQgdmFsdWUpCit7CisgICAgaWYgKGFuaW1hdGlvblR5cGUoKSAhPSBCYXNpYykKKyAgICAg
ICAgcmV0dXJuOworICAgIFtzdGF0aWNfY2FzdDxDQUJhc2ljQW5pbWF0aW9uKj4obV9hbmltYXRp
b24uZ2V0KCkpIHNldFRvVmFsdWU6W05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6dmFsdWVdXTsK
K30KKwordm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpzZXRUb1ZhbHVlKGNvbnN0IFdlYkNvcmU6
OlRyYW5zZm9ybWF0aW9uTWF0cml4JiB2YWx1ZSkKK3sKKyAgICBpZiAoYW5pbWF0aW9uVHlwZSgp
ICE9IEJhc2ljKQorICAgICAgICByZXR1cm47CisKKyAgICBDQVRyYW5zZm9ybTNEIGNhVHJhbnNm
b3JtOworICAgIGNvcHlUcmFuc2Zvcm0oY2FUcmFuc2Zvcm0sIHZhbHVlKTsKKyAgICBbc3RhdGlj
X2Nhc3Q8Q0FCYXNpY0FuaW1hdGlvbio+KG1fYW5pbWF0aW9uLmdldCgpKSBzZXRUb1ZhbHVlOltO
U1ZhbHVlIHZhbHVlV2l0aENBVHJhbnNmb3JtM0Q6Y2FUcmFuc2Zvcm1dXTsKK30KKwordm9pZCBQ
bGF0Zm9ybUNBQW5pbWF0aW9uOjpzZXRUb1ZhbHVlKGNvbnN0IEZsb2F0UG9pbnQzRCYgdmFsdWUp
Cit7CisgICAgaWYgKGFuaW1hdGlvblR5cGUoKSAhPSBCYXNpYykKKyAgICAgICAgcmV0dXJuOwor
CisgICAgTlNBcnJheSogYXJyYXkgPSBbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOgorICAgICAg
ICAgICAgICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6dmFsdWUueCgpXSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOnZhbHVl
LnkoKV0sCisgICAgICAgICAgICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJs
ZTp2YWx1ZS56KCldLAorICAgICAgICAgICAgICAgICAgICAgICAgbmlsXTsKKyAgICBbc3RhdGlj
X2Nhc3Q8Q0FCYXNpY0FuaW1hdGlvbio+KG1fYW5pbWF0aW9uLmdldCgpKSBzZXRUb1ZhbHVlOmFy
cmF5XTsKK30KKwordm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpzZXRUb1ZhbHVlKGNvbnN0IFdl
YkNvcmU6OkNvbG9yJiB2YWx1ZSkKK3sKKyAgICBpZiAoYW5pbWF0aW9uVHlwZSgpICE9IEJhc2lj
KQorICAgICAgICByZXR1cm47CisKKyAgICBOU0FycmF5KiBhcnJheSA9IFtOU0FycmF5IGFycmF5
V2l0aE9iamVjdHM6CisgICAgICAgICAgICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0
aERvdWJsZTp2YWx1ZS5yZWQoKV0sCisgICAgICAgICAgICAgICAgICAgICAgICBbTlNOdW1iZXIg
bnVtYmVyV2l0aERvdWJsZTp2YWx1ZS5ncmVlbigpXSwKKyAgICAgICAgICAgICAgICAgICAgICAg
IFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOnZhbHVlLmJsdWUoKV0sCisgICAgICAgICAgICAg
ICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTp2YWx1ZS5hbHBoYSgpXSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG5pbF07CisgICAgW3N0YXRpY19jYXN0PENBQmFzaWNBbmlt
YXRpb24qPihtX2FuaW1hdGlvbi5nZXQoKSkgc2V0VG9WYWx1ZTphcnJheV07Cit9CisKK3ZvaWQg
UGxhdGZvcm1DQUFuaW1hdGlvbjo6Y29weVRvVmFsdWVGcm9tKGNvbnN0IFBsYXRmb3JtQ0FBbmlt
YXRpb24qIHZhbHVlKQoreworICAgIGlmIChhbmltYXRpb25UeXBlKCkgIT0gQmFzaWMgfHwgdmFs
dWUtPmFuaW1hdGlvblR5cGUoKSAhPSBCYXNpYykKKyAgICAgICAgcmV0dXJuOworICAgICAgICAK
KyAgICBDQUJhc2ljQW5pbWF0aW9uKiBvdGhlckFuaW1hdGlvbiA9IHN0YXRpY19jYXN0PENBQmFz
aWNBbmltYXRpb24qPih2YWx1ZS0+bV9hbmltYXRpb24uZ2V0KCkpOworICAgIFtzdGF0aWNfY2Fz
dDxDQUJhc2ljQW5pbWF0aW9uKj4obV9hbmltYXRpb24uZ2V0KCkpIHNldFRvVmFsdWU6W290aGVy
QW5pbWF0aW9uIHRvVmFsdWVdXTsKK30KKworCisvLyBLZXlmcmFtZS1hbmltYXRpb24gcHJvcGVy
dGllcy4KK3ZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbjo6c2V0VmFsdWVzKGNvbnN0IFZlY3Rvcjxm
bG9hdD4mIHZhbHVlKQoreworICAgIGlmIChhbmltYXRpb25UeXBlKCkgIT0gS2V5ZnJhbWUpCisg
ICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgTlNNdXRhYmxlQXJyYXkqIGFycmF5ID0gW05T
TXV0YWJsZUFycmF5IGFycmF5XTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHZhbHVlLnNp
emUoKTsgKytpKQorICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OltOU051bWJlciBudW1iZXJXaXRo
RG91YmxlOnZhbHVlW2ldXV07CisgICAgW3N0YXRpY19jYXN0PENBS2V5ZnJhbWVBbmltYXRpb24q
PihtX2FuaW1hdGlvbi5nZXQoKSkgc2V0VmFsdWVzOmFycmF5XTsKK30KKwordm9pZCBQbGF0Zm9y
bUNBQW5pbWF0aW9uOjpzZXRWYWx1ZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlRyYW5zZm9ybWF0
aW9uTWF0cml4PiYgdmFsdWUpCit7CisgICAgaWYgKGFuaW1hdGlvblR5cGUoKSAhPSBLZXlmcmFt
ZSkKKyAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICBOU011dGFibGVBcnJheSogYXJyYXkg
PSBbTlNNdXRhYmxlQXJyYXkgYXJyYXldOworICAgIENBVHJhbnNmb3JtM0QgY2FUcmFuc2Zvcm07
CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHZhbHVlLnNpemUoKTsgKytpKSB7CisgICAg
ICAgIGNvcHlUcmFuc2Zvcm0oY2FUcmFuc2Zvcm0sIHZhbHVlW2ldKTsKKyAgICAgICAgW2FycmF5
IGFkZE9iamVjdDpbTlNWYWx1ZSB2YWx1ZVdpdGhDQVRyYW5zZm9ybTNEOmNhVHJhbnNmb3JtXV07
CisgICAgfQorICAgIFtzdGF0aWNfY2FzdDxDQUtleWZyYW1lQW5pbWF0aW9uKj4obV9hbmltYXRp
b24uZ2V0KCkpIHNldFZhbHVlczphcnJheV07Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUFuaW1hdGlv
bjo6c2V0VmFsdWVzKGNvbnN0IFZlY3RvcjxGbG9hdFBvaW50M0Q+JiB2YWx1ZSkKK3sKKyAgICBp
ZiAoYW5pbWF0aW9uVHlwZSgpICE9IEtleWZyYW1lKQorICAgICAgICByZXR1cm47CisgICAgICAg
IAorICAgIE5TTXV0YWJsZUFycmF5KiBhcnJheSA9IFtOU011dGFibGVBcnJheSBhcnJheV07CisK
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHZhbHVlLnNpemUoKTsgKytpKSB7CisgICAgICAg
IE5TQXJyYXkqIG9iamVjdCA9IFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6CisgICAgICAgICAg
ICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTp2YWx1ZVtpXS54KCldLAor
ICAgICAgICAgICAgICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6dmFsdWVb
aV0ueSgpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRG91
YmxlOnZhbHVlW2ldLnooKV0sCisgICAgICAgICAgICAgICAgICAgICAgICBuaWxdOworICAgICAg
ICBbYXJyYXkgYWRkT2JqZWN0Om9iamVjdF07CisgICAgfQorICAgIFtzdGF0aWNfY2FzdDxDQUtl
eWZyYW1lQW5pbWF0aW9uKj4obV9hbmltYXRpb24uZ2V0KCkpIHNldFZhbHVlczphcnJheV07Cit9
CisKK3ZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbjo6c2V0VmFsdWVzKGNvbnN0IFZlY3RvcjxXZWJD
b3JlOjpDb2xvcj4mIHZhbHVlKQoreworICAgIGlmIChhbmltYXRpb25UeXBlKCkgIT0gS2V5ZnJh
bWUpCisgICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgTlNNdXRhYmxlQXJyYXkqIGFycmF5
ID0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
dmFsdWUuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgTlNBcnJheSogb2JqZWN0ID0gW05TQXJyYXkg
YXJyYXlXaXRoT2JqZWN0czoKKyAgICAgICAgICAgICAgICAgICAgICAgIFtOU051bWJlciBudW1i
ZXJXaXRoRG91YmxlOnZhbHVlW2ldLnJlZCgpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFtO
U051bWJlciBudW1iZXJXaXRoRG91YmxlOnZhbHVlW2ldLmdyZWVuKCldLAorICAgICAgICAgICAg
ICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6dmFsdWVbaV0uYmx1ZSgpXSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOnZhbHVl
W2ldLmFscGhhKCldLAorICAgICAgICAgICAgICAgICAgICAgICAgbmlsXTsKKyAgICAgICAgW2Fy
cmF5IGFkZE9iamVjdDpvYmplY3RdOworICAgIH0KKyAgICBbc3RhdGljX2Nhc3Q8Q0FLZXlmcmFt
ZUFuaW1hdGlvbio+KG1fYW5pbWF0aW9uLmdldCgpKSBzZXRWYWx1ZXM6YXJyYXldOworfQorCit2
b2lkIFBsYXRmb3JtQ0FBbmltYXRpb246OmNvcHlWYWx1ZXNGcm9tKGNvbnN0IFBsYXRmb3JtQ0FB
bmltYXRpb24qIHZhbHVlKQoreworICAgIGlmIChhbmltYXRpb25UeXBlKCkgIT0gS2V5ZnJhbWUg
fHwgdmFsdWUtPmFuaW1hdGlvblR5cGUoKSAhPSBLZXlmcmFtZSkKKyAgICAgICAgcmV0dXJuOwor
ICAgICAgICAKKyAgICBDQUtleWZyYW1lQW5pbWF0aW9uKiBvdGhlckFuaW1hdGlvbiA9IHN0YXRp
Y19jYXN0PENBS2V5ZnJhbWVBbmltYXRpb24qPih2YWx1ZS0+bV9hbmltYXRpb24uZ2V0KCkpOwor
ICAgIFtzdGF0aWNfY2FzdDxDQUtleWZyYW1lQW5pbWF0aW9uKj4obV9hbmltYXRpb24uZ2V0KCkp
IHNldFZhbHVlczpbb3RoZXJBbmltYXRpb24gdmFsdWVzXV07Cit9CisKK3ZvaWQgUGxhdGZvcm1D
QUFuaW1hdGlvbjo6c2V0S2V5VGltZXMoY29uc3QgVmVjdG9yPGZsb2F0PiYgdmFsdWUpCit7Cisg
ICAgTlNNdXRhYmxlQXJyYXkqIGFycmF5ID0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsKKworICAg
IGZvciAoc2l6ZV90IGk7IGkgPCB2YWx1ZS5zaXplKCk7ICsraSkKKyAgICAgICAgW2FycmF5IGFk
ZE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aEZsb2F0OnZhbHVlW2ldXV07CisgICAgCisgICAg
W3N0YXRpY19jYXN0PENBS2V5ZnJhbWVBbmltYXRpb24qPihtX2FuaW1hdGlvbi5nZXQoKSkgc2V0
S2V5VGltZXM6YXJyYXldOworfQorCit2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb246OmNvcHlLZXlU
aW1lc0Zyb20oY29uc3QgUGxhdGZvcm1DQUFuaW1hdGlvbiogdmFsdWUpCit7CisgICAgQ0FLZXlm
cmFtZUFuaW1hdGlvbiogb3RoZXIgPSBzdGF0aWNfY2FzdDxDQUtleWZyYW1lQW5pbWF0aW9uKj4o
dmFsdWUtPm1fYW5pbWF0aW9uLmdldCgpKTsKKyAgICBbc3RhdGljX2Nhc3Q8Q0FLZXlmcmFtZUFu
aW1hdGlvbio+KG1fYW5pbWF0aW9uLmdldCgpKSBzZXRLZXlUaW1lczpbb3RoZXIga2V5VGltZXNd
XTsKK30KKwordm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpzZXRUaW1pbmdGdW5jdGlvbnMoY29u
c3QgVmVjdG9yPGNvbnN0IFRpbWluZ0Z1bmN0aW9uKj4mIHZhbHVlKQoreworICAgIE5TTXV0YWJs
ZUFycmF5KiBhcnJheSA9IFtOU011dGFibGVBcnJheSBhcnJheV07CisKKyAgICBmb3IgKHNpemVf
dCBpOyBpIDwgdmFsdWUuc2l6ZSgpOyArK2kpCisgICAgICAgIFthcnJheSBhZGRPYmplY3Q6dG9D
QU1lZGlhVGltaW5nRnVuY3Rpb24odmFsdWVbaV0pXTsKKyAgICAKKyAgICBbc3RhdGljX2Nhc3Q8
Q0FLZXlmcmFtZUFuaW1hdGlvbio+KG1fYW5pbWF0aW9uLmdldCgpKSBzZXRUaW1pbmdGdW5jdGlv
bnM6YXJyYXldOworfQorCit2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb246OmNvcHlUaW1pbmdGdW5j
dGlvbnNGcm9tKGNvbnN0IFBsYXRmb3JtQ0FBbmltYXRpb24qIHZhbHVlKQoreworICAgIENBS2V5
ZnJhbWVBbmltYXRpb24qIG90aGVyID0gc3RhdGljX2Nhc3Q8Q0FLZXlmcmFtZUFuaW1hdGlvbio+
KHZhbHVlLT5tX2FuaW1hdGlvbi5nZXQoKSk7CisgICAgW3N0YXRpY19jYXN0PENBS2V5ZnJhbWVB
bmltYXRpb24qPihtX2FuaW1hdGlvbi5nZXQoKSkgc2V0VGltaW5nRnVuY3Rpb25zOltvdGhlciB0
aW1pbmdGdW5jdGlvbnNdXTsKK30KKworI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJ
VElORykKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1BsYXRmb3JtQ0FM
YXllck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21h
Yy9QbGF0Zm9ybUNBTGF5ZXJNYWMubW0JKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL21hYy9QbGF0Zm9ybUNBTGF5ZXJNYWMubW0JKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNjY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBD
T01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBVU0UoQUNDRUxFUkFURURf
Q09NUE9TSVRJTkcpCisKKyNpbXBvcnQgIlBsYXRmb3JtQ0FMYXllci5oIgorCisjaW1wb3J0ICJC
bG9ja0V4Y2VwdGlvbnMuaCIKKyNpbXBvcnQgIkZsb2F0Q29udmVyc2lvbi5oIgorI2ltcG9ydCAi
R3JhcGhpY3NDb250ZXh0LmgiCisjaW1wb3J0ICJHcmFwaGljc0xheWVyQ0EuaCIKKyNpbXBvcnQg
IldlYkxheWVyLmgiCisjaW1wb3J0ICJXZWJUaWxlZExheWVyLmgiCisjaW1wb3J0IDxvYmpjL29i
amMtYXV0by5oPgorI2ltcG9ydCA8b2JqYy9vYmpjLXJ1bnRpbWUuaD4KKyNpbXBvcnQgPFF1YXJ0
ekNvcmUvUXVhcnR6Q29yZS5oPgorI2ltcG9ydCA8d3RmL0N1cnJlbnRUaW1lLmg+CisKK3VzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOworCisvLyBUaGlzIHZhbHVlIG11c3QgYmUgdGhlIHNhbWUgYXMg
aW4gUGxhdGZvcm1DQUFuaW1hdGlvbk1hYy5tbQorc3RhdGljIGNvbnN0IE5TU3RyaW5nKiBXS05v
blplcm9CZWdpblRpbWVGbGFnID0gQCJXS1BsYXRmb3JtQ0FBbmltYXRpb25Ob25aZXJvQmVnaW5U
aW1lRmxhZyI7CisKK3N0YXRpYyBkb3VibGUgbWVkaWFUaW1lVG9DdXJyZW50VGltZShDRlRpbWVJ
bnRlcnZhbCB0KQoreworICAgIHJldHVybiBXVEY6OmN1cnJlbnRUaW1lKCkgKyB0IC0gQ0FDdXJy
ZW50TWVkaWFUaW1lKCk7Cit9CisKKy8vIERlbGVnYXRlIGZvciBhbmltYXRpb25EaWRTdGFydCBj
YWxsYmFjaworQGludGVyZmFjZSBXZWJBbmltYXRpb25EZWxlZ2F0ZSA6IE5TT2JqZWN0IHsKKyAg
ICBQbGF0Zm9ybUNBTGF5ZXIqIG1fb3duZXI7Cit9CisKKy0gKHZvaWQpYW5pbWF0aW9uRGlkU3Rh
cnQ6KENBQW5pbWF0aW9uICopYW5pbTsKKy0gKHZvaWQpc2V0T3duZXI6KFBsYXRmb3JtQ0FMYXll
ciopb3duZXI7CisKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdlYkFuaW1hdGlvbkRlbGVnYXRl
CisKKy0gKHZvaWQpYW5pbWF0aW9uRGlkU3RhcnQ6KENBQW5pbWF0aW9uICopYW5pbWF0aW9uCit7
CisgICAgLy8gaGFkTm9uWmVyb0JlZ2luVGltZSBpcyBzdG9yZWQgaW4gYSBrZXkgaW4gdGhlIGFu
aW1hdGlvbgorICAgIGJvb2wgaGFkTm9uWmVyb0JlZ2luVGltZSA9IFtbYW5pbWF0aW9uIHZhbHVl
Rm9yS2V5OldLTm9uWmVyb0JlZ2luVGltZUZsYWddIGJvb2xWYWx1ZV07CisgICAgQ0ZUaW1lSW50
ZXJ2YWwgc3RhcnRUaW1lOworICAgIAorICAgIGlmIChoYWROb25aZXJvQmVnaW5UaW1lKSB7Cisg
ICAgICAgIC8vIFdlIGRvbid0IGtub3cgd2hhdCB0aW1lIENBIHVzZWQgdG8gY29tbWl0IHRoZSBh
bmltYXRpb24sIHNvIGp1c3QgdXNlIHRoZSBjdXJyZW50IHRpbWUKKyAgICAgICAgLy8gKGV2ZW4g
dGhvdWdoIHRoaXMgd2lsbCBiZSBzbGlnaHRseSBvZmYpLgorICAgICAgICBzdGFydFRpbWUgPSBt
ZWRpYVRpbWVUb0N1cnJlbnRUaW1lKENBQ3VycmVudE1lZGlhVGltZSgpKTsKKyAgICB9IGVsc2UK
KyAgICAgICAgc3RhcnRUaW1lID0gbWVkaWFUaW1lVG9DdXJyZW50VGltZShbYW5pbWF0aW9uIGJl
Z2luVGltZV0pOworCisgICAgaWYgKG1fb3duZXIpCisgICAgICAgIG1fb3duZXItPmFuaW1hdGlv
blN0YXJ0ZWQoc3RhcnRUaW1lKTsKK30KKworLSAodm9pZClzZXRPd25lcjooUGxhdGZvcm1DQUxh
eWVyKilvd25lcgoreworICAgIG1fb3duZXIgPSBvd25lcjsKK30KKworQGVuZAorCitAaW50ZXJm
YWNlIENBTGF5ZXIoUHJpdmF0ZSkKKy0gKHZvaWQpc2V0Q29udGVudHNDaGFuZ2VkOworQGVuZAor
CitzdGF0aWMgY29uc3QgTlNTdHJpbmcqIHBsYXRmb3JtQ0FMYXllclBvaW50ZXIgPSBAIldLUGxh
dGZvcm1DQUxheWVyIjsKKworc3RhdGljIGlubGluZSB2b2lkIGNvcHlUcmFuc2Zvcm0oQ0FUcmFu
c2Zvcm0zRCYgdG9UM0QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0KQoreworICAgIHRv
VDNELm0xMSA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodC5tMTEoKSk7CisgICAgdG9UM0QubTEy
ID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCh0Lm0xMigpKTsKKyAgICB0b1QzRC5tMTMgPSBuYXJy
b3dQcmVjaXNpb25Ub0Zsb2F0KHQubTEzKCkpOworICAgIHRvVDNELm0xNCA9IG5hcnJvd1ByZWNp
c2lvblRvRmxvYXQodC5tMTQoKSk7CisgICAgdG9UM0QubTIxID0gbmFycm93UHJlY2lzaW9uVG9G
bG9hdCh0Lm0yMSgpKTsKKyAgICB0b1QzRC5tMjIgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHQu
bTIyKCkpOworICAgIHRvVDNELm0yMyA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodC5tMjMoKSk7
CisgICAgdG9UM0QubTI0ID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCh0Lm0yNCgpKTsKKyAgICB0
b1QzRC5tMzEgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHQubTMxKCkpOworICAgIHRvVDNELm0z
MiA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodC5tMzIoKSk7CisgICAgdG9UM0QubTMzID0gbmFy
cm93UHJlY2lzaW9uVG9GbG9hdCh0Lm0zMygpKTsKKyAgICB0b1QzRC5tMzQgPSBuYXJyb3dQcmVj
aXNpb25Ub0Zsb2F0KHQubTM0KCkpOworICAgIHRvVDNELm00MSA9IG5hcnJvd1ByZWNpc2lvblRv
RmxvYXQodC5tNDEoKSk7CisgICAgdG9UM0QubTQyID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCh0
Lm00MigpKTsKKyAgICB0b1QzRC5tNDMgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHQubTQzKCkp
OworICAgIHRvVDNELm00NCA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodC5tNDQoKSk7Cit9CisK
K2Jvb2wgUGxhdGZvcm1DQUxheWVyOjppc1ZhbHVlRnVuY3Rpb25TdXBwb3J0ZWQoKQoreworICAg
IHN0YXRpYyBib29sIHNIYXZlVmFsdWVGdW5jdGlvbiA9IFtDQVByb3BlcnR5QW5pbWF0aW9uIGlu
c3RhbmNlc1Jlc3BvbmRUb1NlbGVjdG9yOkBzZWxlY3RvcihzZXRWYWx1ZUZ1bmN0aW9uOildOwor
ICAgIHJldHVybiBzSGF2ZVZhbHVlRnVuY3Rpb247Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVy
OjpzZXRPd25lcihHcmFwaGljc0xheWVyQ0EqIG93bmVyKQoreworICAgIG1fb3duZXIgPSBvd25l
cjsKKyAgICAKKyAgICAvLyBDaGFuZ2UgdGhlIGRlbGVnYXRlJ3Mgb3duZXIgaWYgbmVlZGVkCisg
ICAgaWYgKG1fZGVsZWdhdGUpCisgICAgICAgIFtzdGF0aWNfY2FzdDxXZWJBbmltYXRpb25EZWxl
Z2F0ZSo+KG1fZGVsZWdhdGUuZ2V0KCkpIHNldE93bmVyOnRoaXNdOyAgICAgICAgCit9CisKK3N0
YXRpYyBOU0RpY3Rpb25hcnkqIG51bGxBY3Rpb25zRGljdGlvbmFyeSgpCit7CisgICAgTlNOdWxs
KiBudWxsVmFsdWUgPSBbTlNOdWxsIG51bGxdOworICAgIE5TRGljdGlvbmFyeSogYWN0aW9ucyA9
IFtOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5czoKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbnVsbFZhbHVlLCBAImFuY2hvclBvaW50IiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbnVsbFZhbHVlLCBAImJvdW5kcyIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG51bGxWYWx1ZSwgQCJjb250ZW50cyIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG51bGxWYWx1ZSwgQCJjb250ZW50c1JlY3QiLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBudWxsVmFsdWUsIEAib3BhY2l0eSIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG51bGxWYWx1ZSwgQCJwb3NpdGlvbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG51bGxWYWx1ZSwgQCJzaGFkb3dDb2xvciIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG51bGxWYWx1ZSwgQCJzdWJsYXllclRyYW5zZm9ybSIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG51bGxWYWx1ZSwgQCJzdWJsYXllcnMiLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBudWxsVmFsdWUsIEAidHJhbnNmb3JtIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbnVsbFZhbHVlLCBAInpQb3NpdGlvbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG5pbF07CisgICAgcmV0dXJuIGFjdGlvbnM7Cit9CisKK3N0YXRpYyBOU1N0cmluZyogdG9D
QUZpbHRlclR5cGUoUGxhdGZvcm1DQUxheWVyOjpGaWx0ZXJUeXBlIHR5cGUpCit7CisgICAgc3dp
dGNoICh0eXBlKSB7CisgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxpbmVhcjogcmV0dXJuIGtD
QUZpbHRlckxpbmVhcjsKKyAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TmVhcmVzdDogcmV0dXJu
IGtDQUZpbHRlck5lYXJlc3Q7CisgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OlRyaWxpbmVhcjog
cmV0dXJuIGtDQUZpbHRlclRyaWxpbmVhcjsKKyAgICBkZWZhdWx0OiByZXR1cm4gMDsKKyAgICB9
Cit9CisKK1Bhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBQbGF0Zm9ybUNBTGF5ZXI6OmNyZWF0
ZShMYXllclR5cGUgbGF5ZXJUeXBlLCBHcmFwaGljc0xheWVyQ0EqIG93bmVyKQoreworICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgUGxhdGZvcm1DQUxheWVyKGxheWVyVHlwZSwgMCwgb3duZXIpKTsK
K30KKworUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IFBsYXRmb3JtQ0FMYXllcjo6Y3JlYXRl
KHZvaWQqIHBsYXRmb3JtTGF5ZXIsIEdyYXBoaWNzTGF5ZXJDQSogb3duZXIpCit7CisgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBQbGF0Zm9ybUNBTGF5ZXIoTGF5ZXJUeXBlQ3VzdG9tLCBzdGF0aWNf
Y2FzdDxQbGF0Zm9ybUxheWVyKj4ocGxhdGZvcm1MYXllciksIG93bmVyKSk7Cit9CisKK1BsYXRm
b3JtQ0FMYXllcjo6UGxhdGZvcm1DQUxheWVyKExheWVyVHlwZSBsYXllclR5cGUsIFBsYXRmb3Jt
TGF5ZXIqIGxheWVyLCBHcmFwaGljc0xheWVyQ0EqIG93bmVyKQorICAgIDogbV9vd25lcihvd25l
cikKK3sKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICBpZiAobGF5ZXIpIHsK
KyAgICAgICAgbV9sYXllclR5cGUgPSBMYXllclR5cGVDdXN0b207CisgICAgICAgIG1fbGF5ZXIg
PSBsYXllcjsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2xheWVyVHlwZSA9IGxheWVyVHlwZTsK
KyAgICAKKyAgICAgICAgQ2xhc3MgbGF5ZXJDbGFzczsKKyAgICAgICAgc3dpdGNoKGxheWVyVHlw
ZSkgeworICAgICAgICAgICAgY2FzZSBMYXllclR5cGVMYXllcjoKKyAgICAgICAgICAgICAgICBs
YXllckNsYXNzID0gTlNDbGFzc0Zyb21TdHJpbmcoQCJDQUxheWVyIik7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIExheWVyVHlwZVdlYkxheWVyOgorICAgICAgICAg
ICAgICAgIGxheWVyQ2xhc3MgPSBbV2ViTGF5ZXIgY2xhc3NdOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgY2FzZSBMYXllclR5cGVUcmFuc2Zvcm1MYXllcjoKKyAgICAgICAg
ICAgICAgICBsYXllckNsYXNzID0gTlNDbGFzc0Zyb21TdHJpbmcoQCJDQVRyYW5zZm9ybUxheWVy
Iik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIExheWVyVHlwZVdl
YlRpbGVkTGF5ZXI6CisgICAgICAgICAgICAgICAgbGF5ZXJDbGFzcyA9IFtXZWJUaWxlZExheWVy
IGNsYXNzXTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgTGF5ZXJU
eXBlQ3VzdG9tOgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAg
aWYgKGxheWVyQ2xhc3MpCisgICAgICAgICAgICBtX2xheWVyLmFkb3B0TlMoW1tsYXllckNsYXNz
IGFsbG9jXSBpbml0XSk7CisgICAgfQorICAgIAorICAgIC8vIFNhdmUgYSBwb2ludGVyIHRvICd0
aGlzJyBpbiB0aGUgQ0FMYXllcgorICAgIFttX2xheWVyLmdldCgpIHNldFZhbHVlOltOU1ZhbHVl
IHZhbHVlV2l0aFBvaW50ZXI6dGhpc10gZm9yS2V5OnBsYXRmb3JtQ0FMYXllclBvaW50ZXJdOwor
ICAgIAorICAgIC8vIENsZWFyIGFsbCB0aGUgaW1wbGljaXQgYW5pbWF0aW9ucyBvbiB0aGUgQ0FM
YXllcgorICAgIFttX2xheWVyLmdldCgpIHNldFN0eWxlOltOU0RpY3Rpb25hcnkgZGljdGlvbmFy
eVdpdGhPYmplY3Q6bnVsbEFjdGlvbnNEaWN0aW9uYXJ5KCkgZm9yS2V5OkAiYWN0aW9ucyJdXTsK
KyAgICAKKyAgICAvLyBJZiB0aGlzIGlzIGEgVGlsZWRMYXllciwgc2V0IHNvbWUgaW5pdGlhbCB2
YWx1ZXMKKyAgICBpZiAobV9sYXllclR5cGUgPT0gTGF5ZXJUeXBlV2ViVGlsZWRMYXllcikgewor
ICAgICAgICBXZWJUaWxlZExheWVyKiB0aWxlZExheWVyID0gc3RhdGljX2Nhc3Q8V2ViVGlsZWRM
YXllcio+KG1fbGF5ZXIuZ2V0KCkpOworICAgICAgICBbdGlsZWRMYXllciBzZXRUaWxlU2l6ZTpD
R1NpemVNYWtlKEdyYXBoaWNzTGF5ZXJDQTo6a1RpbGVkTGF5ZXJUaWxlU2l6ZSwgR3JhcGhpY3NM
YXllckNBOjprVGlsZWRMYXllclRpbGVTaXplKV07CisgICAgICAgIFt0aWxlZExheWVyIHNldExl
dmVsc09mRGV0YWlsOjFdOworICAgICAgICBbdGlsZWRMYXllciBzZXRMZXZlbHNPZkRldGFpbEJp
YXM6MF07CisgICAgICAgIFt0aWxlZExheWVyIHNldENvbnRlbnRzR3Jhdml0eTpAImJvdHRvbUxl
ZnQiXTsKKyAgICB9CisgICAgCisgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUworfQorCitQ
bGF0Zm9ybUNBTGF5ZXI6On5QbGF0Zm9ybUNBTGF5ZXIoKQoreworICAgIC8vIENsZWFyIHRoZSBv
d25lciwgd2hpY2ggYWxzbyBjbGVhcnMgaXQgaW4gdGhlIGRlbGVnYXRlIHRvIHByZXZlbnQgYXR0
ZW1wdHMgCisgICAgLy8gdG8gdXNlIHRoZSBHcmFwaGljc0xheWVyQ0EgYWZ0ZXIgaXQgaGFzIGJl
ZW4gZGVzdHJveWVkLgorICAgIHNldE93bmVyKDApOworICAgIAorICAgIC8vIFJlbW92ZSB0aGUg
b3duZXIgcG9pbnRlciBmcm9tIHRoZSBkZWxlZ2F0ZSBpbiBjYXNlIHRoZXJlIGlzIGEgcGVuZGlu
ZyBhbmltYXRpb25TdGFydGVkIGV2ZW50LgorICAgIFtzdGF0aWNfY2FzdDxXZWJBbmltYXRpb25E
ZWxlZ2F0ZSo+KG1fZGVsZWdhdGUuZ2V0KCkpIHNldE93bmVyOm5pbF07ICAgICAgICAKK30KKwor
UGxhdGZvcm1DQUxheWVyKiBQbGF0Zm9ybUNBTGF5ZXI6OnBsYXRmb3JtQ0FMYXllcih2b2lkKiBw
bGF0Zm9ybUxheWVyKQoreworICAgIGlmICghcGxhdGZvcm1MYXllcikKKyAgICAgICAgcmV0dXJu
IDA7CisgICAgICAgIAorICAgIC8vIFBvaW50ZXIgdG8gUGxhdGZvcm1DQUxheWVyIGlzIGtlcHQg
aW4gYSBrZXkgb2YgdGhlIENBTGF5ZXIKKyAgICBQbGF0Zm9ybUNBTGF5ZXIqIHBsYXRmb3JtQ0FM
YXllcjsKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICBwbGF0Zm9ybUNBTGF5
ZXIgPSBzdGF0aWNfY2FzdDxQbGF0Zm9ybUNBTGF5ZXIqPihbW3N0YXRpY19jYXN0PENBTGF5ZXIq
PihwbGF0Zm9ybUxheWVyKSB2YWx1ZUZvcktleTpwbGF0Zm9ybUNBTGF5ZXJQb2ludGVyXSBwb2lu
dGVyVmFsdWVdKTsKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCisgICAgcmV0dXJuIHBs
YXRmb3JtQ0FMYXllcjsKK30KKworUGxhdGZvcm1MYXllciogUGxhdGZvcm1DQUxheWVyOjpwbGF0
Zm9ybUxheWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9sYXllci5nZXQoKTsKK30KKwordm9p
ZCBQbGF0Zm9ybUNBTGF5ZXI6OnNldE5lZWRzRGlzcGxheShjb25zdCBGbG9hdFJlY3QqIGRpcnR5
UmVjdCkKK3sKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICBpZiAoZGlydHlS
ZWN0KQorICAgICAgICBbbV9sYXllci5nZXQoKSBzZXROZWVkc0Rpc3BsYXlJblJlY3Q6KmRpcnR5
UmVjdF07CisgICAgZWxzZQorICAgICAgICBbbV9sYXllci5nZXQoKSBzZXROZWVkc0Rpc3BsYXld
OworICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKK30KKyAgICAKK3ZvaWQgUGxhdGZvcm1D
QUxheWVyOjpzZXRDb250ZW50c0NoYW5nZWQoKQoreworICAgIEJFR0lOX0JMT0NLX09CSkNfRVhD
RVBUSU9OUworICAgIFttX2xheWVyLmdldCgpIHNldENvbnRlbnRzQ2hhbmdlZF07CisgICAgRU5E
X0JMT0NLX09CSkNfRVhDRVBUSU9OUworfQorCitQbGF0Zm9ybUNBTGF5ZXIqIFBsYXRmb3JtQ0FM
YXllcjo6c3VwZXJsYXllcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHBsYXRmb3JtQ0FMYXllcihb
bV9sYXllci5nZXQoKSBzdXBlcmxheWVyXSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyOjpy
ZW1vdmVGcm9tU3VwZXJsYXllcigpCit7CisgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05T
CisgICAgW21fbGF5ZXIuZ2V0KCkgcmVtb3ZlRnJvbVN1cGVybGF5ZXJdOworICAgIEVORF9CTE9D
S19PQkpDX0VYQ0VQVElPTlMKK30KKwordm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OnNldFN1YmxheWVy
cyhjb25zdCBQbGF0Zm9ybUNBTGF5ZXJMaXN0JiBsaXN0KQoreworICAgIC8vIFNob3J0IGNpcmN1
aXRpbmcgaGVyZSBub3Qgb25seSBhdm9pZHMgdGhlIGFsbG9jYXRpb24gb2Ygc3VibGF5ZXJzLCBi
dXQgYXZvaWRzIDxyZGFyOi8vcHJvYmxlbS83MzkwNzE2PiAoc2VlIGJlbG93KQorICAgIGlmIChs
aXN0LnNpemUoKSA9PSAwKSB7CisgICAgICAgIHJlbW92ZUFsbFN1YmxheWVycygpOworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIAorICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwor
ICAgIE5TTXV0YWJsZUFycmF5KiBzdWJsYXllcnMgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBp
bml0XTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxpc3Quc2l6ZSgpOyArK2kpCisgICAg
ICAgIFtzdWJsYXllcnMgYWRkT2JqZWN0Omxpc3RbaV0tPm1fbGF5ZXIuZ2V0KCldOworICAgICAg
ICAKKyAgICBbbV9sYXllci5nZXQoKSBzZXRTdWJsYXllcnM6c3VibGF5ZXJzXTsKKyAgICBbc3Vi
bGF5ZXJzIHJlbGVhc2VdOworICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKK30KKwordm9p
ZCBQbGF0Zm9ybUNBTGF5ZXI6OnJlbW92ZUFsbFN1YmxheWVycygpCit7CisgICAgLy8gV29ya2Fy
b3VuZCBmb3IgPHJkYXI6Ly9wcm9ibGVtLzczOTA3MTY+OiAtW0NBTGF5ZXIgc2V0U3VibGF5ZXJz
Ol0gY3Jhc2hlcyBpZiBzdWJsYXllcnMgaXMgYW4gZW1wdHkgYXJyYXksIG9yIG5pbCwgdW5kZXIg
R0MuCisgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCisgICAgaWYgKG9iamNfY29sbGVj
dGluZ0VuYWJsZWQoKSkKKyAgICAgICAgd2hpbGUgKFtbbV9sYXllci5nZXQoKSBzdWJsYXllcnNd
IGNvdW50XSkKKyAgICAgICAgICAgIFtbW21fbGF5ZXIuZ2V0KCkgc3VibGF5ZXJzXSBvYmplY3RB
dEluZGV4OjBdIHJlbW92ZUZyb21TdXBlcmxheWVyXTsKKyAgICBlbHNlCisgICAgICAgIFttX2xh
eWVyLmdldCgpIHNldFN1YmxheWVyczpuaWxdOworICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElP
TlMKK30KKwordm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OmFwcGVuZFN1YmxheWVyKFBsYXRmb3JtQ0FM
YXllciogbGF5ZXIpCit7CisgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCisgICAgW21f
bGF5ZXIuZ2V0KCkgYWRkU3VibGF5ZXI6bGF5ZXItPm1fbGF5ZXIuZ2V0KCldOworICAgIEVORF9C
TE9DS19PQkpDX0VYQ0VQVElPTlMKK30KKwordm9pZCBQbGF0Zm9ybUNBTGF5ZXI6Omluc2VydFN1
YmxheWVyKFBsYXRmb3JtQ0FMYXllciogbGF5ZXIsIHNpemVfdCBpbmRleCkKK3sKKyAgICBCRUdJ
Tl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICBbbV9sYXllci5nZXQoKSBpbnNlcnRTdWJsYXll
cjpsYXllci0+bV9sYXllci5nZXQoKSBhdEluZGV4OmluZGV4XTsKKyAgICBFTkRfQkxPQ0tfT0JK
Q19FWENFUFRJT05TCit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyOjpyZXBsYWNlU3VibGF5ZXIo
UGxhdGZvcm1DQUxheWVyKiByZWZlcmVuY2UsIFBsYXRmb3JtQ0FMYXllciogbGF5ZXIpCit7Cisg
ICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCisgICAgW21fbGF5ZXIuZ2V0KCkgcmVwbGFj
ZVN1YmxheWVyOnJlZmVyZW5jZS0+bV9sYXllci5nZXQoKSB3aXRoOmxheWVyLT5tX2xheWVyLmdl
dCgpXTsKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCit9CisKK3NpemVfdCBQbGF0Zm9y
bUNBTGF5ZXI6OnN1YmxheWVyQ291bnQoKSBjb25zdAoreworICAgIHJldHVybiBbW21fbGF5ZXIu
Z2V0KCkgc3VibGF5ZXJzXSBjb3VudF07Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyOjphZG9w
dFN1YmxheWVycyhQbGF0Zm9ybUNBTGF5ZXIqIHNvdXJjZSkKK3sKKyAgICAvLyBXb3JrYXJvdW5k
IGZvciA8cmRhcjovL3Byb2JsZW0vNzM5MDcxNj46IC1bQ0FMYXllciBzZXRTdWJsYXllcnM6XSBj
cmFzaGVzIGlmIHN1YmxheWVycyBpcyBhbiBlbXB0eSBhcnJheSwgb3IgbmlsLCB1bmRlciBHQy4K
KyAgICBOU0FycmF5KiBzdWJsYXllcnMgPSBbc291cmNlLT5tX2xheWVyLmdldCgpIHN1YmxheWVy
c107CisgICAgCisgICAgaWYgKG9iamNfY29sbGVjdGluZ0VuYWJsZWQoKSAmJiAhW3N1YmxheWVy
cyBjb3VudF0pIHsKKyAgICAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCisgICAgICAg
IHdoaWxlIChbW21fbGF5ZXIuZ2V0KCkgc3VibGF5ZXJzXSBjb3VudF0pCisgICAgICAgICAgICBb
W1ttX2xheWVyLmdldCgpIHN1YmxheWVyc10gb2JqZWN0QXRJbmRleDowXSByZW1vdmVGcm9tU3Vw
ZXJsYXllcl07CisgICAgICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICAKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICBb
bV9sYXllci5nZXQoKSBzZXRTdWJsYXllcnM6c3VibGF5ZXJzXTsKKyAgICBFTkRfQkxPQ0tfT0JK
Q19FWENFUFRJT05TCit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyOjphZGRBbmltYXRpb25Gb3JL
ZXkoY29uc3QgU3RyaW5nJiBrZXksIFBsYXRmb3JtQ0FBbmltYXRpb24qIGFuaW1hdGlvbikKK3sK
KyAgICAvLyBBZGQgdGhlIGRlbGVnYXRlCisgICAgaWYgKCFtX2RlbGVnYXRlKSB7CisgICAgICAg
IFdlYkFuaW1hdGlvbkRlbGVnYXRlKiB3ZWJBbmltYXRpb25EZWxlZ2F0ZSA9IFtbV2ViQW5pbWF0
aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdOworICAgICAgICBtX2RlbGVnYXRlLmFkb3B0TlMod2Vi
QW5pbWF0aW9uRGVsZWdhdGUpOworICAgICAgICBbd2ViQW5pbWF0aW9uRGVsZWdhdGUgc2V0T3du
ZXI6dGhpc107CisgICAgfQorICAgIAorICAgIENBUHJvcGVydHlBbmltYXRpb24qIHByb3BlcnR5
QW5pbWF0aW9uID0gc3RhdGljX2Nhc3Q8Q0FQcm9wZXJ0eUFuaW1hdGlvbio+KGFuaW1hdGlvbi0+
cGxhdGZvcm1BbmltYXRpb24oKSk7CisKKyAgICBpZiAoIVtwcm9wZXJ0eUFuaW1hdGlvbiBkZWxl
Z2F0ZV0pCisgICAgICAgIFtwcm9wZXJ0eUFuaW1hdGlvbiBzZXREZWxlZ2F0ZTpzdGF0aWNfY2Fz
dDxpZD4obV9kZWxlZ2F0ZS5nZXQoKSldOworICAgICAKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VY
Q0VQVElPTlMKKyAgICBbbV9sYXllci5nZXQoKSBhZGRBbmltYXRpb246YW5pbWF0aW9uLT5tX2Fu
aW1hdGlvbi5nZXQoKSBmb3JLZXk6a2V5XTsKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05T
Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyOjpyZW1vdmVBbmltYXRpb25Gb3JLZXkoY29uc3Qg
U3RyaW5nJiBrZXkpCit7CisgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCisgICAgW21f
bGF5ZXIuZ2V0KCkgcmVtb3ZlQW5pbWF0aW9uRm9yS2V5OmtleV07CisgICAgRU5EX0JMT0NLX09C
SkNfRVhDRVBUSU9OUworfQorCitQYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IFBsYXRm
b3JtQ0FMYXllcjo6YW5pbWF0aW9uRm9yS2V5KGNvbnN0IFN0cmluZyYga2V5KQoreworICAgIENB
QW5pbWF0aW9uKiBhbmltID0gW21fbGF5ZXIuZ2V0KCkgYW5pbWF0aW9uRm9yS2V5OmtleV07Cisg
ICAgaWYgKCFhbmltKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gUGxhdGZvcm1DQUFu
aW1hdGlvbjo6Y3JlYXRlKGFuaW0pOworfQorCitQbGF0Zm9ybUNBTGF5ZXIqIFBsYXRmb3JtQ0FM
YXllcjo6bWFzaygpIGNvbnN0Cit7CisgICAgcmV0dXJuIHBsYXRmb3JtQ0FMYXllcihbbV9sYXll
ci5nZXQoKSBtYXNrXSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyOjpzZXRNYXNrKFBsYXRm
b3JtQ0FMYXllciogbGF5ZXIpCit7CisgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCisg
ICAgW21fbGF5ZXIuZ2V0KCkgc2V0TWFzazpsYXllciA/IGxheWVyLT5wbGF0Zm9ybUxheWVyKCkg
OiAwXTsKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCit9CisKK2Jvb2wgUGxhdGZvcm1D
QUxheWVyOjppc09wYXF1ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFttX2xheWVyLmdldCgpIGlz
T3BhcXVlXTsKK30KKwordm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OnNldE9wYXF1ZShib29sIHZhbHVl
KQoreworICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUworICAgIFttX2xheWVyLmdldCgp
IHNldE9wYXF1ZTp2YWx1ZV07CisgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUworfQorCitG
bG9hdFJlY3QgUGxhdGZvcm1DQUxheWVyOjpib3VuZHMoKSBjb25zdAoreworICAgIHJldHVybiBb
bV9sYXllci5nZXQoKSBib3VuZHNdOworfQorCit2b2lkIFBsYXRmb3JtQ0FMYXllcjo6c2V0Qm91
bmRzKGNvbnN0IEZsb2F0UmVjdCYgdmFsdWUpCit7CisgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENF
UFRJT05TCisgICAgW21fbGF5ZXIuZ2V0KCkgc2V0Qm91bmRzOnZhbHVlXTsKKyAgICBFTkRfQkxP
Q0tfT0JKQ19FWENFUFRJT05TCit9CisKK0Zsb2F0UG9pbnQzRCBQbGF0Zm9ybUNBTGF5ZXI6OnBv
c2l0aW9uKCkgY29uc3QKK3sKKyAgICBDR1BvaW50IHBvaW50ID0gW21fbGF5ZXIuZ2V0KCkgcG9z
aXRpb25dOworICAgIHJldHVybiBGbG9hdFBvaW50M0QocG9pbnQueCwgcG9pbnQueSwgW21fbGF5
ZXIuZ2V0KCkgelBvc2l0aW9uXSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyOjpzZXRQb3Np
dGlvbihjb25zdCBGbG9hdFBvaW50M0QmIHZhbHVlKQoreworICAgIEJFR0lOX0JMT0NLX09CSkNf
RVhDRVBUSU9OUworICAgIFttX2xheWVyLmdldCgpIHNldFBvc2l0aW9uOkNHUG9pbnRNYWtlKHZh
bHVlLngoKSwgdmFsdWUueSgpKV07CisgICAgW21fbGF5ZXIuZ2V0KCkgc2V0WlBvc2l0aW9uOnZh
bHVlLnooKV07CisgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUworfQorCitGbG9hdFBvaW50
M0QgUGxhdGZvcm1DQUxheWVyOjphbmNob3JQb2ludCgpIGNvbnN0Cit7CisgICAgQ0dQb2ludCBw
b2ludCA9IFttX2xheWVyLmdldCgpIGFuY2hvclBvaW50XTsKKyAgICByZXR1cm4gRmxvYXRQb2lu
dDNEKHBvaW50LngsIHBvaW50LnksIFttX2xheWVyLmdldCgpIGFuY2hvclBvaW50Wl0pOworfQor
Cit2b2lkIFBsYXRmb3JtQ0FMYXllcjo6c2V0QW5jaG9yUG9pbnQoY29uc3QgRmxvYXRQb2ludDNE
JiB2YWx1ZSkKK3sKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICBbbV9sYXll
ci5nZXQoKSBzZXRBbmNob3JQb2ludDpDR1BvaW50TWFrZSh2YWx1ZS54KCksIHZhbHVlLnkoKSld
OworICAgIFttX2xheWVyLmdldCgpIHNldEFuY2hvclBvaW50Wjp2YWx1ZS56KCldOworICAgIEVO
RF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKK30KKworVHJhbnNmb3JtYXRpb25NYXRyaXggUGxhdGZv
cm1DQUxheWVyOjp0cmFuc2Zvcm0oKSBjb25zdAoreworICAgIENBVHJhbnNmb3JtM0QgdCA9IFtt
X2xheWVyLmdldCgpIHRyYW5zZm9ybV07CisgICAgcmV0dXJuIFRyYW5zZm9ybWF0aW9uTWF0cml4
KHQubTExLCB0Lm0xMiwgdC5tMTMsIHQubTE0LCB0Lm0yMSwgdC5tMjIsIHQubTIzLCB0Lm0yNCwg
dC5tMzEsIHQubTMyLCB0Lm0zMywgdC5tMzQsIHQubTQxLCB0Lm00MiwgdC5tNDMsIHQubTQ0KTsK
K30KKwordm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OnNldFRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgdmFsdWUpCit7CisgICAgQ0FUcmFuc2Zvcm0zRCB0cmFuc2Zvcm07CisgICAg
Y29weVRyYW5zZm9ybSh0cmFuc2Zvcm0sIHZhbHVlKTsKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VY
Q0VQVElPTlMKKyAgICBbbV9sYXllci5nZXQoKSBzZXRUcmFuc2Zvcm06dHJhbnNmb3JtXTsKKyAg
ICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCit9CisKK1RyYW5zZm9ybWF0aW9uTWF0cml4IFBs
YXRmb3JtQ0FMYXllcjo6c3VibGF5ZXJUcmFuc2Zvcm0oKSBjb25zdAoreworICAgIENBVHJhbnNm
b3JtM0QgdCA9IFttX2xheWVyLmdldCgpIHN1YmxheWVyVHJhbnNmb3JtXTsKKyAgICByZXR1cm4g
VHJhbnNmb3JtYXRpb25NYXRyaXgodC5tMTEsIHQubTEyLCB0Lm0xMywgdC5tMTQsIHQubTIxLCB0
Lm0yMiwgdC5tMjMsIHQubTI0LCB0Lm0zMSwgdC5tMzIsIHQubTMzLCB0Lm0zNCwgdC5tNDEsIHQu
bTQyLCB0Lm00MywgdC5tNDQpOworfQorCit2b2lkIFBsYXRmb3JtQ0FMYXllcjo6c2V0U3VibGF5
ZXJUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHZhbHVlKQoreworICAgIENB
VHJhbnNmb3JtM0QgdHJhbnNmb3JtOworICAgIGNvcHlUcmFuc2Zvcm0odHJhbnNmb3JtLCB2YWx1
ZSk7CisgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCisgICAgW21fbGF5ZXIuZ2V0KCkg
c2V0U3VibGF5ZXJUcmFuc2Zvcm06dHJhbnNmb3JtXTsKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENF
UFRJT05TCit9CisKK2Jvb2wgUGxhdGZvcm1DQUxheWVyOjppc0hpZGRlbigpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIFttX2xheWVyLmdldCgpIGlzSGlkZGVuXTsKK30KKwordm9pZCBQbGF0Zm9ybUNB
TGF5ZXI6OnNldEhpZGRlbihib29sIHZhbHVlKQoreworICAgIEJFR0lOX0JMT0NLX09CSkNfRVhD
RVBUSU9OUworICAgIFttX2xheWVyLmdldCgpIHNldEhpZGRlbjp2YWx1ZV07CisgICAgRU5EX0JM
T0NLX09CSkNfRVhDRVBUSU9OUworfQorCitib29sIFBsYXRmb3JtQ0FMYXllcjo6aXNHZW9tZXRy
eUZsaXBwZWQoKSBjb25zdAoreworICAgIHJldHVybiBbbV9sYXllci5nZXQoKSBpc0dlb21ldHJ5
RmxpcHBlZF07Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyOjpzZXRHZW9tZXRyeUZsaXBwZWQo
Ym9vbCB2YWx1ZSkKK3sKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICBbbV9s
YXllci5nZXQoKSBzZXRHZW9tZXRyeUZsaXBwZWQ6dmFsdWVdOworICAgIEVORF9CTE9DS19PQkpD
X0VYQ0VQVElPTlMKK30KKworYm9vbCBQbGF0Zm9ybUNBTGF5ZXI6OmlzRG91YmxlU2lkZWQoKSBj
b25zdAoreworICAgIHJldHVybiBbbV9sYXllci5nZXQoKSBpc0RvdWJsZVNpZGVkXTsKK30KKwor
dm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OnNldERvdWJsZVNpZGVkKGJvb2wgdmFsdWUpCit7CisgICAg
QkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCisgICAgW21fbGF5ZXIuZ2V0KCkgc2V0RG91Ymxl
U2lkZWQ6dmFsdWVdOworICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKK30KKworYm9vbCBQ
bGF0Zm9ybUNBTGF5ZXI6Om1hc2tzVG9Cb3VuZHMoKSBjb25zdAoreworICAgIHJldHVybiBbbV9s
YXllci5nZXQoKSBtYXNrc1RvQm91bmRzXTsKK30KKwordm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OnNl
dE1hc2tzVG9Cb3VuZHMoYm9vbCB2YWx1ZSkKK3sKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQ
VElPTlMKKyAgICBbbV9sYXllci5nZXQoKSBzZXRNYXNrc1RvQm91bmRzOnZhbHVlXTsKKyAgICBF
TkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCit9CisKK3ZvaWQqIFBsYXRmb3JtQ0FMYXllcjo6Y29u
dGVudHMoKSBjb25zdAoreworICAgIHJldHVybiBbbV9sYXllci5nZXQoKSBjb250ZW50c107Cit9
CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyOjpzZXRDb250ZW50cyh2b2lkKiB2YWx1ZSkKK3sKKyAg
ICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICBbbV9sYXllci5nZXQoKSBzZXRDb250
ZW50czpzdGF0aWNfY2FzdDxpZD4odmFsdWUpXTsKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJ
T05TCit9CisKK0Zsb2F0UmVjdCBQbGF0Zm9ybUNBTGF5ZXI6OmNvbnRlbnRzUmVjdCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIFttX2xheWVyLmdldCgpIGNvbnRlbnRzUmVjdF07Cit9CisKK3ZvaWQg
UGxhdGZvcm1DQUxheWVyOjpzZXRDb250ZW50c1JlY3QoY29uc3QgRmxvYXRSZWN0JiB2YWx1ZSkK
K3sKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICBbbV9sYXllci5nZXQoKSBz
ZXRDb250ZW50c1JlY3Q6dmFsdWVdOworICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKK30K
Kwordm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OnNldE1pbmlmaWNhdGlvbkZpbHRlcihGaWx0ZXJUeXBl
IHZhbHVlKQoreworICAgIFttX2xheWVyLmdldCgpIHNldE1pbmlmaWNhdGlvbkZpbHRlcjp0b0NB
RmlsdGVyVHlwZSh2YWx1ZSldOworfQorCit2b2lkIFBsYXRmb3JtQ0FMYXllcjo6c2V0TWFnbmlm
aWNhdGlvbkZpbHRlcihGaWx0ZXJUeXBlIHZhbHVlKQoreworICAgIEJFR0lOX0JMT0NLX09CSkNf
RVhDRVBUSU9OUworICAgIFttX2xheWVyLmdldCgpIHNldE1hZ25pZmljYXRpb25GaWx0ZXI6dG9D
QUZpbHRlclR5cGUodmFsdWUpXTsKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCit9CisK
K0NvbG9yIFBsYXRmb3JtQ0FMYXllcjo6YmFja2dyb3VuZENvbG9yKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gW21fbGF5ZXIuZ2V0KCkgYmFja2dyb3VuZENvbG9yXTsKK30KKwordm9pZCBQbGF0Zm9y
bUNBTGF5ZXI6OnNldEJhY2tncm91bmRDb2xvcihjb25zdCBDb2xvciYgdmFsdWUpCit7CisgICAg
Y29uc3QgQ0dGbG9hdCBjb21wb25lbnRzWzVdID0geyB2YWx1ZS5yZWQoKSwgdmFsdWUuZ3JlZW4o
KSwgdmFsdWUuYmx1ZSgpLCB2YWx1ZS5hbHBoYSgpIH07CisgICAgQ0dDb2xvclNwYWNlUmVmIGNv
bG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVEZXZpY2VSR0IoKTsKKyAgICBDR0NvbG9yUmVm
IGNvbG9yID0gQ0dDb2xvckNyZWF0ZShjb2xvclNwYWNlLCBjb21wb25lbnRzKTsKKyAgICBDR0Nv
bG9yU3BhY2VSZWxlYXNlKGNvbG9yU3BhY2UpOworICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBU
SU9OUworICAgIFttX2xheWVyLmdldCgpIHNldEJhY2tncm91bmRDb2xvcjpjb2xvcl07CisgICAg
RU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUworICAgIENHQ29sb3JSZWxlYXNlKGNvbG9yKTsKK30K
KworZmxvYXQgUGxhdGZvcm1DQUxheWVyOjpib3JkZXJXaWR0aCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIFttX2xheWVyLmdldCgpIGJvcmRlcldpZHRoXTsKK30KKwordm9pZCBQbGF0Zm9ybUNBTGF5
ZXI6OnNldEJvcmRlcldpZHRoKGZsb2F0IHZhbHVlKQoreworICAgIEJFR0lOX0JMT0NLX09CSkNf
RVhDRVBUSU9OUworICAgIFttX2xheWVyLmdldCgpIHNldEJvcmRlcldpZHRoOnZhbHVlXTsKKyAg
ICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCit9CisKK0NvbG9yIFBsYXRmb3JtQ0FMYXllcjo6
Ym9yZGVyQ29sb3IoKSBjb25zdAoreworICAgIHJldHVybiBbbV9sYXllci5nZXQoKSBib3JkZXJD
b2xvcl07Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyOjpzZXRCb3JkZXJDb2xvcihjb25zdCBD
b2xvciYgdmFsdWUpCit7CisgICAgY29uc3QgQ0dGbG9hdCBjb21wb25lbnRzWzVdID0geyB2YWx1
ZS5yZWQoKSwgdmFsdWUuZ3JlZW4oKSwgdmFsdWUuYmx1ZSgpLCB2YWx1ZS5hbHBoYSgpIH07Cisg
ICAgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVEZXZpY2VS
R0IoKTsKKyAgICBDR0NvbG9yUmVmIGNvbG9yID0gQ0dDb2xvckNyZWF0ZShjb2xvclNwYWNlLCBj
b21wb25lbnRzKTsKKyAgICBDR0NvbG9yU3BhY2VSZWxlYXNlKGNvbG9yU3BhY2UpOworICAgIEJF
R0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUworICAgIFttX2xheWVyLmdldCgpIHNldEJvcmRlckNv
bG9yOmNvbG9yXTsKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCisgICAgQ0dDb2xvclJl
bGVhc2UoY29sb3IpOworfQorCitmbG9hdCBQbGF0Zm9ybUNBTGF5ZXI6Om9wYWNpdHkoKSBjb25z
dAoreworICAgIHJldHVybiBbbV9sYXllci5nZXQoKSBvcGFjaXR5XTsKK30KKwordm9pZCBQbGF0
Zm9ybUNBTGF5ZXI6OnNldE9wYWNpdHkoZmxvYXQgdmFsdWUpCit7CisgICAgQkVHSU5fQkxPQ0tf
T0JKQ19FWENFUFRJT05TCisgICAgW21fbGF5ZXIuZ2V0KCkgc2V0T3BhY2l0eTp2YWx1ZV07Cisg
ICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUworfQorCitTdHJpbmcgUGxhdGZvcm1DQUxheWVy
OjpuYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gW21fbGF5ZXIuZ2V0KCkgbmFtZV07Cit9CisK
K3ZvaWQgUGxhdGZvcm1DQUxheWVyOjpzZXROYW1lKGNvbnN0IFN0cmluZyYgdmFsdWUpCit7Cisg
ICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCisgICAgW21fbGF5ZXIuZ2V0KCkgc2V0TmFt
ZTp2YWx1ZV07CisgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUworfQorCitGbG9hdFJlY3Qg
UGxhdGZvcm1DQUxheWVyOjpmcmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFttX2xheWVyLmdl
dCgpIGZyYW1lXTsKK30KKwordm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OnNldEZyYW1lKGNvbnN0IEZs
b2F0UmVjdCYgdmFsdWUpCit7CisgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCisgICAg
W21fbGF5ZXIuZ2V0KCkgc2V0RnJhbWU6dmFsdWVdOworICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQ
VElPTlMKK30KKworZmxvYXQgUGxhdGZvcm1DQUxheWVyOjpzcGVlZCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIFttX2xheWVyLmdldCgpIHNwZWVkXTsKK30KKwordm9pZCBQbGF0Zm9ybUNBTGF5ZXI6
OnNldFNwZWVkKGZsb2F0IHZhbHVlKQoreworICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9O
UworICAgIFttX2xheWVyLmdldCgpIHNldFNwZWVkOnZhbHVlXTsKKyAgICBFTkRfQkxPQ0tfT0JK
Q19FWENFUFRJT05TCit9CisKK0NGVGltZUludGVydmFsIFBsYXRmb3JtQ0FMYXllcjo6dGltZU9m
ZnNldCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFttX2xheWVyLmdldCgpIHRpbWVPZmZzZXRdOwor
fQorCit2b2lkIFBsYXRmb3JtQ0FMYXllcjo6c2V0VGltZU9mZnNldChDRlRpbWVJbnRlcnZhbCB2
YWx1ZSkKK3sKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICBbbV9sYXllci5n
ZXQoKSBzZXRUaW1lT2Zmc2V0OnZhbHVlXTsKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05T
Cit9CisKKyNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCkluZGV4OiBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGlj
c0xheWVyQ2hyb21pdW0uY3BwCShyZXZpc2lvbiA3MzE1MCkKKysrIFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTE1LDExICsxMTUsNiBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0TmFt
ZShjb25zCiAgICAgR3JhcGhpY3NMYXllcjo6c2V0TmFtZShuYW1lKTsKIH0KIAotTmF0aXZlTGF5
ZXIgR3JhcGhpY3NMYXllckNocm9taXVtOjpuYXRpdmVMYXllcigpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIG1fbGF5ZXIuZ2V0KCk7Ci19Ci0KIGJvb2wgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRD
aGlsZHJlbihjb25zdCBWZWN0b3I8R3JhcGhpY3NMYXllcio+JiBjaGlsZHJlbikKIHsKICAgICBi
b29sIGNoaWxkcmVuQ2hhbmdlZCA9IEdyYXBoaWNzTGF5ZXI6OnNldENoaWxkcmVuKGNoaWxkcmVu
KTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXll
ckNocm9taXVtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uaAkocmV2aXNpb24gNzMxNTApCisrKyBXZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Nyw5ICs0Nyw2IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBz
ZXROYW1lKGNvbnN0IFN0cmluZyYpOwogCi0gICAgLy8gZm9yIGhvc3RpbmcgdGhpcyBHcmFwaGlj
c0xheWVyIGluIGEgbmF0aXZlIGxheWVyIGhpZXJhcmNoeQotICAgIHZpcnR1YWwgTmF0aXZlTGF5
ZXIgbmF0aXZlTGF5ZXIoKSBjb25zdDsKLQogICAgIHZpcnR1YWwgYm9vbCBzZXRDaGlsZHJlbihj
b25zdCBWZWN0b3I8R3JhcGhpY3NMYXllcio+Jik7CiAgICAgdmlydHVhbCB2b2lkIGFkZENoaWxk
KEdyYXBoaWNzTGF5ZXIqKTsKICAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGRBdEluZGV4KEdyYXBo
aWNzTGF5ZXIqLCBpbnQgaW5kZXgpOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvR3JhcGhpY3NMYXllck1hYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL0dyYXBoaWNzTGF5ZXJNYWMuaAkocmV2aXNpb24gNzMxNTApCisrKyBXZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0xheWVyTWFjLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsMzg4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAotICovCi0KLSNpZm5kZWYgR3JhcGhpY3NMYXllck1hY19oCi0jZGVmaW5lIEdy
YXBoaWNzTGF5ZXJNYWNfaAotCi0jaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotCi0j
aW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgotI2luY2x1ZGUgIldlYkxheWVyLmgiCi0jaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgotI2luY2x1ZGUgPHd0
Zi9SZXRhaW5QdHIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+Ci0KLUBjbGFz
cyBDQUJhc2ljQW5pbWF0aW9uOwotQGNsYXNzIENBS2V5ZnJhbWVBbmltYXRpb247Ci1AY2xhc3Mg
Q0FNZWRpYVRpbWluZ0Z1bmN0aW9uOwotQGNsYXNzIENBUHJvcGVydHlBbmltYXRpb247Ci1AY2xh
c3MgV2ViQW5pbWF0aW9uRGVsZWdhdGU7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3Mg
R3JhcGhpY3NMYXllck1hYyA6IHB1YmxpYyBHcmFwaGljc0xheWVyIHsKLXB1YmxpYzoKLQotICAg
IEdyYXBoaWNzTGF5ZXJNYWMoR3JhcGhpY3NMYXllckNsaWVudCopOwotICAgIHZpcnR1YWwgfkdy
YXBoaWNzTGF5ZXJNYWMoKTsKLQotICAgIHZpcnR1YWwgdm9pZCBzZXROYW1lKGNvbnN0IFN0cmlu
ZyYpOwotCi0gICAgLy8gZm9yIGhvc3RpbmcgdGhpcyBHcmFwaGljc0xheWVyIGluIGEgbmF0aXZl
IGxheWVyIGhpZXJhcmNoeQotICAgIHZpcnR1YWwgTmF0aXZlTGF5ZXIgbmF0aXZlTGF5ZXIoKSBj
b25zdDsKLQotICAgIHZpcnR1YWwgYm9vbCBzZXRDaGlsZHJlbihjb25zdCBWZWN0b3I8R3JhcGhp
Y3NMYXllcio+Jik7Ci0gICAgdmlydHVhbCB2b2lkIGFkZENoaWxkKEdyYXBoaWNzTGF5ZXIqKTsK
LSAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGRBdEluZGV4KEdyYXBoaWNzTGF5ZXIqLCBpbnQgaW5k
ZXgpOwotICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZEFib3ZlKEdyYXBoaWNzTGF5ZXIqIGxheWVy
LCBHcmFwaGljc0xheWVyKiBzaWJsaW5nKTsKLSAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGRCZWxv
dyhHcmFwaGljc0xheWVyKiBsYXllciwgR3JhcGhpY3NMYXllciogc2libGluZyk7Ci0gICAgdmly
dHVhbCBib29sIHJlcGxhY2VDaGlsZChHcmFwaGljc0xheWVyKiBvbGRDaGlsZCwgR3JhcGhpY3NM
YXllciogbmV3Q2hpbGQpOwotCi0gICAgdmlydHVhbCB2b2lkIHJlbW92ZUZyb21QYXJlbnQoKTsK
LQotICAgIHZpcnR1YWwgdm9pZCBzZXRNYXNrTGF5ZXIoR3JhcGhpY3NMYXllciopOwotICAgIHZp
cnR1YWwgdm9pZCBzZXRSZXBsaWNhdGVkTGF5ZXIoR3JhcGhpY3NMYXllciopOwotCi0gICAgdmly
dHVhbCB2b2lkIHNldFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmKTsKLSAgICB2aXJ0dWFsIHZv
aWQgc2V0QW5jaG9yUG9pbnQoY29uc3QgRmxvYXRQb2ludDNEJik7Ci0gICAgdmlydHVhbCB2b2lk
IHNldFNpemUoY29uc3QgRmxvYXRTaXplJik7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0VHJhbnNm
b3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4Jik7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0
Q2hpbGRyZW5UcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKTsKLQotICAgIHZp
cnR1YWwgdm9pZCBzZXRQcmVzZXJ2ZXMzRChib29sKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0TWFz
a3NUb0JvdW5kcyhib29sKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0RHJhd3NDb250ZW50KGJvb2wp
OwotCi0gICAgdmlydHVhbCB2b2lkIHNldEJhY2tncm91bmRDb2xvcihjb25zdCBDb2xvciYpOwot
ICAgIHZpcnR1YWwgdm9pZCBjbGVhckJhY2tncm91bmRDb2xvcigpOwotCi0gICAgdmlydHVhbCB2
b2lkIHNldENvbnRlbnRzT3BhcXVlKGJvb2wpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRCYWNrZmFj
ZVZpc2liaWxpdHkoYm9vbCk7Ci0KLSAgICAvLyByZXR1cm4gdHJ1ZSBpZiB3ZSBzdGFydGVkIGFu
IGFuaW1hdGlvbgotICAgIHZpcnR1YWwgdm9pZCBzZXRPcGFjaXR5KGZsb2F0KTsKLQotICAgIHZp
cnR1YWwgdm9pZCBzZXROZWVkc0Rpc3BsYXkoKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNE
aXNwbGF5SW5SZWN0KGNvbnN0IEZsb2F0UmVjdCYpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRDb250
ZW50c05lZWRzRGlzcGxheSgpOwotICAgIAotICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1Jl
Y3QoY29uc3QgSW50UmVjdCYpOwotICAgIAotICAgIHZpcnR1YWwgdm9pZCBzdXNwZW5kQW5pbWF0
aW9ucyhkb3VibGUgdGltZSk7Ci0gICAgdmlydHVhbCB2b2lkIHJlc3VtZUFuaW1hdGlvbnMoKTsK
LQotICAgIHZpcnR1YWwgYm9vbCBhZGRBbmltYXRpb24oY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3Qm
LCBjb25zdCBJbnRTaXplJiBib3hTaXplLCBjb25zdCBBbmltYXRpb24qLCBjb25zdCBTdHJpbmcm
IGFuaW1hdGlvbk5hbWUsIGRvdWJsZSB0aW1lT2Zmc2V0KTsKLSAgICB2aXJ0dWFsIHZvaWQgcGF1
c2VBbmltYXRpb24oY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBkb3VibGUgdGltZU9mZnNl
dCk7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZUFuaW1hdGlvbihjb25zdCBTdHJpbmcmIGFuaW1h
dGlvbk5hbWUpOwotCi0gICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzVG9JbWFnZShJbWFnZSop
OwotICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1RvTWVkaWEoUGxhdGZvcm1MYXllciopOwot
ICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1RvQ2FudmFzKFBsYXRmb3JtTGF5ZXIqKTsKLQot
ICAgIHZpcnR1YWwgYm9vbCBoYXNDb250ZW50c0xheWVyKCkgY29uc3QgeyByZXR1cm4gbV9jb250
ZW50c0xheWVyOyB9Ci0gICAgCi0gICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxh
eWVyKCkgY29uc3Q7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0RGVidWdCYWNrZ3JvdW5kQ29sb3Io
Y29uc3QgQ29sb3ImKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0RGVidWdCb3JkZXIoY29uc3QgQ29s
b3ImLCBmbG9hdCBib3JkZXJXaWR0aCk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkRGlzcGxheShQ
bGF0Zm9ybUxheWVyKik7Ci0KLSAgICB2b2lkIHJlY3Vyc2l2ZUNvbW1pdENoYW5nZXMoKTsKLQot
ICAgIHZpcnR1YWwgdm9pZCBzeW5jQ29tcG9zaXRpbmdTdGF0ZSgpOwotICAgIHZpcnR1YWwgdm9p
ZCBzeW5jQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKTsKLQotICAgIC8vIFNob3Vs
ZCBvbmx5IGJlIGNhbGxlZCBieSBhbmltYXRpb25EaWRTdGFydDogY2FsbGJhY2sKLSAgICB2b2lk
IGFuaW1hdGlvbkRpZFN0YXJ0KENBQW5pbWF0aW9uKik7Ci0gICAgCi1wcm90ZWN0ZWQ6Ci0gICAg
dmlydHVhbCB2b2lkIHNldE9wYWNpdHlJbnRlcm5hbChmbG9hdCk7Ci0KLXByaXZhdGU6Ci0gICAg
dm9pZCB1cGRhdGVPcGFjaXR5T25MYXllcigpOwotCi0gICAgQ0FMYXllciogcHJpbWFyeUxheWVy
KCkgY29uc3QgeyByZXR1cm4gbV9zdHJ1Y3R1cmFsTGF5ZXIuZ2V0KCkgPyBtX3N0cnVjdHVyYWxM
YXllci5nZXQoKSA6IG1fbGF5ZXIuZ2V0KCk7IH0KLSAgICBDQUxheWVyKiBob3N0TGF5ZXJGb3JT
dWJsYXllcnMoKSBjb25zdDsKLSAgICBDQUxheWVyKiBsYXllckZvclN1cGVybGF5ZXIoKSBjb25z
dDsKLSAgICBDQUxheWVyKiBhbmltYXRlZExheWVyKEFuaW1hdGVkUHJvcGVydHlJRCkgY29uc3Q7
Ci0KLSAgICB0eXBlZGVmIFN0cmluZyBDbG9uZUlEOyAvLyBJZGVudGlmaWVyIGZvciBhIGdpdmVu
IGNsb25lLCBiYXNlZCBvbiBvcmlnaW5hbC9yZXBsaWNhIGJyYW5jaGluZyBkb3duIHRoZSB0cmVl
LgotICAgIHN0YXRpYyBib29sIGlzUmVwbGljYXRlZFJvb3RDbG9uZShjb25zdCBDbG9uZUlEJiBj
bG9uZUlEKSB7IHJldHVybiBjbG9uZUlEWzBVXSAmIDE7IH0KLQotICAgIHR5cGVkZWYgSGFzaE1h
cDxDbG9uZUlELCBSZXRhaW5QdHI8Q0FMYXllcj4gPiBMYXllck1hcDsKLSAgICBMYXllck1hcCog
cHJpbWFyeUxheWVyQ2xvbmVzKCkgY29uc3QgeyByZXR1cm4gbV9zdHJ1Y3R1cmFsTGF5ZXIuZ2V0
KCkgPyBtX3N0cnVjdHVyYWxMYXllckNsb25lcy5nZXQoKSA6IG1fbGF5ZXJDbG9uZXMuZ2V0KCk7
IH0KLSAgICBMYXllck1hcCogYW5pbWF0ZWRMYXllckNsb25lcyhBbmltYXRlZFByb3BlcnR5SUQp
IGNvbnN0OwotCi0gICAgYm9vbCBjcmVhdGVBbmltYXRpb25Gcm9tS2V5ZnJhbWVzKGNvbnN0IEtl
eWZyYW1lVmFsdWVMaXN0JiwgY29uc3QgQW5pbWF0aW9uKiwgY29uc3QgU3RyaW5nJiBhbmltYXRp
b25OYW1lLCBkb3VibGUgdGltZU9mZnNldCk7Ci0gICAgYm9vbCBjcmVhdGVUcmFuc2Zvcm1Bbmlt
YXRpb25zRnJvbUtleWZyYW1lcyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYsIGNvbnN0IEFuaW1h
dGlvbiosIGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSwgZG91YmxlIHRpbWVPZmZzZXQsIGNv
bnN0IEludFNpemUmIGJveFNpemUpOwotCi0gICAgLy8gUmV0dXJuIGF1dG9yZWxlYXNlZCBhbmlt
YXRpb24gKHVzZSBSZXRhaW5QdHI/KQotICAgIENBQmFzaWNBbmltYXRpb24qIGNyZWF0ZUJhc2lj
QW5pbWF0aW9uKGNvbnN0IEFuaW1hdGlvbiosIEFuaW1hdGVkUHJvcGVydHlJRCwgYm9vbCBhZGRp
dGl2ZSk7Ci0gICAgQ0FLZXlmcmFtZUFuaW1hdGlvbiogY3JlYXRlS2V5ZnJhbWVBbmltYXRpb24o
Y29uc3QgQW5pbWF0aW9uKiwgQW5pbWF0ZWRQcm9wZXJ0eUlELCBib29sIGFkZGl0aXZlKTsKLSAg
ICB2b2lkIHNldHVwQW5pbWF0aW9uKENBUHJvcGVydHlBbmltYXRpb24qLCBjb25zdCBBbmltYXRp
b24qLCBib29sIGFkZGl0aXZlKTsKLSAgICAKLSAgICBDQU1lZGlhVGltaW5nRnVuY3Rpb24qIHRp
bWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUoY29uc3QgQW5pbWF0aW9uVmFsdWUqLCBjb25z
dCBBbmltYXRpb24qKTsKLSAgICAKLSAgICBib29sIHNldEFuaW1hdGlvbkVuZHBvaW50cyhjb25z
dCBLZXlmcmFtZVZhbHVlTGlzdCYsIGNvbnN0IEFuaW1hdGlvbiosIENBQmFzaWNBbmltYXRpb24q
KTsKLSAgICBib29sIHNldEFuaW1hdGlvbktleWZyYW1lcyhjb25zdCBLZXlmcmFtZVZhbHVlTGlz
dCYsIGNvbnN0IEFuaW1hdGlvbiosIENBS2V5ZnJhbWVBbmltYXRpb24qKTsKLQotICAgIGJvb2wg
c2V0VHJhbnNmb3JtQW5pbWF0aW9uRW5kcG9pbnRzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0Jiwg
Y29uc3QgQW5pbWF0aW9uKiwgQ0FCYXNpY0FuaW1hdGlvbiosIGludCBmdW5jdGlvbkluZGV4LCBU
cmFuc2Zvcm1PcGVyYXRpb246Ok9wZXJhdGlvblR5cGUsIGJvb2wgaXNNYXRyaXhBbmltYXRpb24s
IGNvbnN0IEludFNpemUmIGJveFNpemUpOwotICAgIGJvb2wgc2V0VHJhbnNmb3JtQW5pbWF0aW9u
S2V5ZnJhbWVzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiwgY29uc3QgQW5pbWF0aW9uKiwgQ0FL
ZXlmcmFtZUFuaW1hdGlvbiosIGludCBmdW5jdGlvbkluZGV4LCBUcmFuc2Zvcm1PcGVyYXRpb246
Ok9wZXJhdGlvblR5cGUsIGJvb2wgaXNNYXRyaXhBbmltYXRpb24sIGNvbnN0IEludFNpemUmIGJv
eFNpemUpOwotICAgIAotICAgIGJvb2wgYW5pbWF0aW9uSXNSdW5uaW5nKGNvbnN0IFN0cmluZyYg
YW5pbWF0aW9uTmFtZSkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX3J1bm5pbmdBbmlt
YXRpb25zLmZpbmQoYW5pbWF0aW9uTmFtZSkgIT0gbV9ydW5uaW5nQW5pbWF0aW9ucy5lbmQoKTsK
LSAgICB9Ci0KLSAgICB2b2lkIGNvbW1pdExheWVyQ2hhbmdlc0JlZm9yZVN1YmxheWVycygpOwot
ICAgIHZvaWQgY29tbWl0TGF5ZXJDaGFuZ2VzQWZ0ZXJTdWJsYXllcnMoKTsKLQotICAgIEZsb2F0
U2l6ZSBjb25zdHJhaW5lZFNpemUoKSBjb25zdDsKLQotICAgIGJvb2wgcmVxdWlyZXNUaWxlZExh
eWVyKGNvbnN0IEZsb2F0U2l6ZSYpIGNvbnN0OwotICAgIHZvaWQgc3dhcEZyb21PclRvVGlsZWRM
YXllcihib29sIHVzZVRpbGVkTGF5ZXIpOwotCi0gICAgQ29tcG9zaXRpbmdDb29yZGluYXRlc09y
aWVudGF0aW9uIGRlZmF1bHRDb250ZW50c09yaWVudGF0aW9uKCkgY29uc3Q7Ci0gICAgdm9pZCB1
cGRhdGVDb250ZW50c1RyYW5zZm9ybSgpOwotICAgIAotICAgIHZvaWQgc2V0dXBDb250ZW50c0xh
eWVyKENBTGF5ZXIqKTsKLSAgICBDQUxheWVyKiBjb250ZW50c0xheWVyKCkgY29uc3QgeyByZXR1
cm4gbV9jb250ZW50c0xheWVyLmdldCgpOyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0UmVwbGlj
YXRlZEJ5TGF5ZXIoR3JhcGhpY3NMYXllciopOwotCi0gICAgLy8gVXNlZCB0byB0cmFjayB0aGUg
cGF0aCBkb3duIHRoZSB0cmVlIGZvciByZXBsaWNhIGxheWVycy4KLSAgICBzdHJ1Y3QgUmVwbGlj
YVN0YXRlIHsKLSAgICAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBtYXhSZXBsaWNhRGVwdGggPSAx
NjsKLSAgICAgICAgZW51bSBSZXBsaWNhQnJhbmNoVHlwZSB7IENoaWxkQnJhbmNoID0gMCwgUmVw
bGljYUJyYW5jaCA9IDEgfTsKLSAgICAgICAgUmVwbGljYVN0YXRlKFJlcGxpY2FCcmFuY2hUeXBl
IGZpcnN0QnJhbmNoKQotICAgICAgICAgICAgOiBtX3JlcGxpY2FEZXB0aCgwKQotICAgICAgICB7
Ci0gICAgICAgICAgICBwdXNoKGZpcnN0QnJhbmNoKTsKLSAgICAgICAgfQotICAgICAgICAKLSAg
ICAgICAgLy8gQ2FsbGVkIGFzIHdlIHdhbGsgZG93biB0aGUgdHJlZSB0byBidWlsZCByZXBsaWNh
cy4KLSAgICAgICAgdm9pZCBwdXNoKFJlcGxpY2FCcmFuY2hUeXBlIGJyYW5jaFR5cGUpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIG1fcmVwbGljYUJyYW5jaGVzLmFwcGVuZChicmFuY2hUeXBlKTsK
LSAgICAgICAgICAgIGlmIChicmFuY2hUeXBlID09IFJlcGxpY2FCcmFuY2gpCi0gICAgICAgICAg
ICAgICAgKyttX3JlcGxpY2FEZXB0aDsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgdm9p
ZCBzZXRCcmFuY2hUeXBlKFJlcGxpY2FCcmFuY2hUeXBlIGJyYW5jaFR5cGUpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIEFTU0VSVCghbV9yZXBsaWNhQnJhbmNoZXMuaXNFbXB0eSgpKTsKLQotICAg
ICAgICAgICAgaWYgKG1fcmVwbGljYUJyYW5jaGVzLmxhc3QoKSAhPSBicmFuY2hUeXBlKSB7Ci0g
ICAgICAgICAgICAgICAgaWYgKGJyYW5jaFR5cGUgPT0gUmVwbGljYUJyYW5jaCkKLSAgICAgICAg
ICAgICAgICAgICAgKyttX3JlcGxpY2FEZXB0aDsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgICAgIC0tbV9yZXBsaWNhRGVwdGg7Ci0gICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgIG1fcmVwbGljYUJyYW5jaGVzLmxhc3QoKSA9IGJyYW5jaFR5cGU7Ci0gICAgICAgIH0K
LQotICAgICAgICB2b2lkIHBvcCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChtX3JlcGxp
Y2FCcmFuY2hlcy5sYXN0KCkgPT0gUmVwbGljYUJyYW5jaCkKLSAgICAgICAgICAgICAgICAtLW1f
cmVwbGljYURlcHRoOwotICAgICAgICAgICAgbV9yZXBsaWNhQnJhbmNoZXMucmVtb3ZlTGFzdCgp
OwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBzaXplX3QgZGVwdGgoKSBjb25zdCB7IHJl
dHVybiBtX3JlcGxpY2FCcmFuY2hlcy5zaXplKCk7IH0KLSAgICAgICAgc2l6ZV90IHJlcGxpY2FE
ZXB0aCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVwbGljYURlcHRoOyB9Ci0KLSAgICAgICAgQ2xvbmVJ
RCBjbG9uZUlEKCkgY29uc3Q7ICAgICAgICAKLQotICAgIHByaXZhdGU6Ci0gICAgICAgIFZlY3Rv
cjxSZXBsaWNhQnJhbmNoVHlwZT4gbV9yZXBsaWNhQnJhbmNoZXM7Ci0gICAgICAgIHNpemVfdCBt
X3JlcGxpY2FEZXB0aDsKLSAgICB9OwotICAgIENBTGF5ZXIgKnJlcGxpY2F0ZWRMYXllclJvb3Qo
UmVwbGljYVN0YXRlJik7Ci0KLSAgICBlbnVtIENsb25lTGV2ZWwgeyBSb290Q2xvbmVMZXZlbCwg
SW50ZXJtZWRpYXRlQ2xvbmVMZXZlbCB9OwotICAgIENBTGF5ZXIgKmZldGNoQ2xvbmVMYXllcnMo
R3JhcGhpY3NMYXllciogcmVwbGljYVJvb3QsIFJlcGxpY2FTdGF0ZSYsIENsb25lTGV2ZWwpOwot
ICAgIAotICAgIENBTGF5ZXIgKmNsb25lTGF5ZXIoQ0FMYXllciAqLCBDbG9uZUxldmVsKTsKLSAg
ICBDQUxheWVyICpmaW5kT3JNYWtlQ2xvbmUoQ2xvbmVJRCwgQ0FMYXllciAqLCBMYXllck1hcCos
IENsb25lTGV2ZWwpOwotCi0gICAgdm9pZCBlbnN1cmVDbG9uZUxheWVycyhDbG9uZUlEIGluZGV4
LCBDQUxheWVyIComIHByaW1hcnlMYXllciwgQ0FMYXllciAqJiBzdHJ1Y3R1cmFsTGF5ZXIsIENB
TGF5ZXIgKiYgY29udGVudHNMYXllciwgQ2xvbmVMZXZlbCk7Ci0KLSAgICBib29sIGhhc0Nsb25l
TGF5ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9sYXllckNsb25lczsgfQotICAgIHZvaWQgcmVtb3Zl
Q2xvbmVMYXllcnMoKTsKLSAgICBGbG9hdFBvaW50IHBvc2l0aW9uRm9yQ2xvbmVSb290TGF5ZXIo
KSBjb25zdDsKLSAgICAKLSAgICB2b2lkIHByb3BhZ2F0ZUxheWVyQ2hhbmdlVG9SZXBsaWNhcygp
OwotICAgIAotICAgIC8vIEFsbCB0aGVzZSAidXBkYXRlIiBtZXRob2RzIHdpbGwgYmUgY2FsbGVk
IGluc2lkZSBhIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUy9FTkRfQkxPQ0tfT0JKQ19FWENF
UFRJT05TIGJsb2NrLgotICAgIHZvaWQgdXBkYXRlTGF5ZXJOYW1lcygpOwotICAgIHZvaWQgdXBk
YXRlU3VibGF5ZXJMaXN0KCk7Ci0gICAgdm9pZCB1cGRhdGVMYXllclBvc2l0aW9uKCk7Ci0gICAg
dm9pZCB1cGRhdGVMYXllclNpemUoKTsKLSAgICB2b2lkIHVwZGF0ZUFuY2hvclBvaW50KCk7Ci0g
ICAgdm9pZCB1cGRhdGVUcmFuc2Zvcm0oKTsKLSAgICB2b2lkIHVwZGF0ZUNoaWxkcmVuVHJhbnNm
b3JtKCk7Ci0gICAgdm9pZCB1cGRhdGVNYXNrc1RvQm91bmRzKCk7Ci0gICAgdm9pZCB1cGRhdGVD
b250ZW50c09wYXF1ZSgpOwotICAgIHZvaWQgdXBkYXRlQmFja2ZhY2VWaXNpYmlsaXR5KCk7Ci0g
ICAgdm9pZCB1cGRhdGVTdHJ1Y3R1cmFsTGF5ZXIoKTsKLSAgICB2b2lkIHVwZGF0ZUxheWVyRHJh
d3NDb250ZW50KCk7Ci0gICAgdm9pZCB1cGRhdGVMYXllckJhY2tncm91bmRDb2xvcigpOwotCi0g
ICAgdm9pZCB1cGRhdGVDb250ZW50c0ltYWdlKCk7Ci0gICAgdm9pZCB1cGRhdGVDb250ZW50c01l
ZGlhTGF5ZXIoKTsKLSAgICB2b2lkIHVwZGF0ZUNvbnRlbnRzQ2FudmFzTGF5ZXIoKTsKLSAgICB2
b2lkIHVwZGF0ZUNvbnRlbnRzUmVjdCgpOwotICAgIHZvaWQgdXBkYXRlTWFza0xheWVyKCk7Ci0g
ICAgdm9pZCB1cGRhdGVSZXBsaWNhdGVkTGF5ZXJzKCk7Ci0KLSAgICB2b2lkIHVwZGF0ZUxheWVy
QW5pbWF0aW9ucygpOwotICAgIHZvaWQgdXBkYXRlQ29udGVudHNOZWVkc0Rpc3BsYXkoKTsKLSAg
ICAKLSAgICBlbnVtIFN0cnVjdHVyYWxMYXllclB1cnBvc2UgewotICAgICAgICBOb1N0cnVjdHVy
YWxMYXllciA9IDAsCi0gICAgICAgIFN0cnVjdHVyYWxMYXllckZvclByZXNlcnZlczNELAotICAg
ICAgICBTdHJ1Y3R1cmFsTGF5ZXJGb3JSZXBsaWNhRmxhdHRlbmluZwotICAgIH07Ci0gICAgdm9p
ZCBlbnN1cmVTdHJ1Y3R1cmFsTGF5ZXIoU3RydWN0dXJhbExheWVyUHVycG9zZSk7Ci0gICAgU3Ry
dWN0dXJhbExheWVyUHVycG9zZSBzdHJ1Y3R1cmFsTGF5ZXJQdXJwb3NlKCkgY29uc3Q7Ci0KLSAg
ICB2b2lkIHNldENBQW5pbWF0aW9uT25MYXllcihDQVByb3BlcnR5QW5pbWF0aW9uKiwgQW5pbWF0
ZWRQcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGludCBpbmRleCwgZG91
YmxlIHRpbWVPZmZzZXQpOwotICAgIGJvb2wgcmVtb3ZlQ0FBbmltYXRpb25Gcm9tTGF5ZXIoQW5p
bWF0ZWRQcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGludCBpbmRleCk7
Ci0gICAgdm9pZCBwYXVzZUNBQW5pbWF0aW9uT25MYXllcihBbmltYXRlZFByb3BlcnR5SUQsIGNv
bnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSwgaW50IGluZGV4LCBkb3VibGUgdGltZU9mZnNldCk7
Ci0KLSAgICBlbnVtIE1vdmVPckNvcHkgeyBNb3ZlLCBDb3B5IH07Ci0gICAgc3RhdGljIHZvaWQg
bW92ZU9yQ29weUxheWVyQW5pbWF0aW9uKE1vdmVPckNvcHksIGNvbnN0IFN0cmluZyYgYW5pbWF0
aW9uSWRlbnRpZmllciwgQ0FMYXllciAqZnJvbUxheWVyLCBDQUxheWVyICp0b0xheWVyKTsKLSAg
ICB2b2lkIG1vdmVPckNvcHlBbmltYXRpb25zRm9yUHJvcGVydHkoTW92ZU9yQ29weSwgQW5pbWF0
ZWRQcm9wZXJ0eUlELCBDQUxheWVyICogZnJvbUxheWVyLCBDQUxheWVyICogdG9MYXllcik7Ci0g
ICAgCi0gICAgZW51bSBMYXllckNoYW5nZSB7Ci0gICAgICAgIE5vQ2hhbmdlID0gMCwKLSAgICAg
ICAgTmFtZUNoYW5nZWQgPSAxIDw8IDEsCi0gICAgICAgIENoaWxkcmVuQ2hhbmdlZCA9IDEgPDwg
MiwgICAvLyBhbHNvIHVzZWQgZm9yIGNvbnRlbnQgbGF5ZXIsIGFuZCBwcmVzZXJ2ZXMtM2QsIGFu
ZCBzaXplIGlmIHRpbGluZyBjaGFuZ2VzPwotICAgICAgICBQb3NpdGlvbkNoYW5nZWQgPSAxIDw8
IDMsCi0gICAgICAgIEFuY2hvclBvaW50Q2hhbmdlZCA9IDEgPDwgNCwKLSAgICAgICAgU2l6ZUNo
YW5nZWQgPSAxIDw8IDUsCi0gICAgICAgIFRyYW5zZm9ybUNoYW5nZWQgPSAxIDw8IDYsCi0gICAg
ICAgIENoaWxkcmVuVHJhbnNmb3JtQ2hhbmdlZCA9IDEgPDwgNywKLSAgICAgICAgUHJlc2VydmVz
M0RDaGFuZ2VkID0gMSA8PCA4LAotICAgICAgICBNYXNrc1RvQm91bmRzQ2hhbmdlZCA9IDEgPDwg
OSwKLSAgICAgICAgRHJhd3NDb250ZW50Q2hhbmdlZCA9IDEgPDwgMTAsICAvLyBuZWVkIHRoaXM/
Ci0gICAgICAgIEJhY2tncm91bmRDb2xvckNoYW5nZWQgPSAxIDw8IDExLAotICAgICAgICBDb250
ZW50c09wYXF1ZUNoYW5nZWQgPSAxIDw8IDEyLAotICAgICAgICBCYWNrZmFjZVZpc2liaWxpdHlD
aGFuZ2VkID0gMSA8PCAxMywKLSAgICAgICAgT3BhY2l0eUNoYW5nZWQgPSAxIDw8IDE0LAotICAg
ICAgICBBbmltYXRpb25DaGFuZ2VkID0gMSA8PCAxNSwKLSAgICAgICAgRGlydHlSZWN0c0NoYW5n
ZWQgPSAxIDw8IDE2LAotICAgICAgICBDb250ZW50c0ltYWdlQ2hhbmdlZCA9IDEgPDwgMTcsCi0g
ICAgICAgIENvbnRlbnRzTWVkaWFMYXllckNoYW5nZWQgPSAxIDw8IDE4LAotICAgICAgICBDb250
ZW50c0NhbnZhc0xheWVyQ2hhbmdlZCA9IDEgPDwgMTksCi0gICAgICAgIENvbnRlbnRzUmVjdENo
YW5nZWQgPSAxIDw8IDIwLAotICAgICAgICBNYXNrTGF5ZXJDaGFuZ2VkID0gMSA8PCAyMSwKLSAg
ICAgICAgUmVwbGljYXRlZExheWVyQ2hhbmdlZCA9IDEgPDwgMjIsCi0gICAgICAgIENvbnRlbnRz
TmVlZHNEaXNwbGF5ID0gMSA8PCAyMwotICAgIH07Ci0gICAgdHlwZWRlZiB1bnNpZ25lZCBMYXll
ckNoYW5nZUZsYWdzOwotICAgIHZvaWQgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKExheWVyQ2hh
bmdlRmxhZ3MgZmxhZ3MpOwotICAgIHZvaWQgbm90ZVN1YmxheWVyc0NoYW5nZWQoKTsKLQotICAg
IHZvaWQgcmVwYWludExheWVyRGlydHlSZWN0cygpOwotCi0gICAgUmV0YWluUHRyPFdlYkxheWVy
PiBtX2xheWVyOyAvLyBUaGUgbWFpbiBsYXllcgotICAgIFJldGFpblB0cjxDQUxheWVyPiBtX3N0
cnVjdHVyYWxMYXllcjsgLy8gQSBsYXllciB1c2VkIGZvciBzdHJ1Y3R1cmFsIHJlYXNvbnMsIGxp
a2UgcHJlc2VydmVzLTNkIG9yIHJlcGxpY2EtZmxhdHRlbmluZy4gSXMgdGhlIHBhcmVudCBvZiBt
X2xheWVyLgotICAgIFJldGFpblB0cjxDQUxheWVyPiBtX2NvbnRlbnRzTGF5ZXI7IC8vIEEgbGF5
ZXIgdXNlZCBmb3IgaW5uZXIgY29udGVudCwgbGlrZSBpbWFnZSBhbmQgdmlkZW8KLQotICAgIC8v
IFJlZmVyZW5jZXMgdG8gY2xvbmVzIG9mIG91ciBsYXllcnMsIGZvciByZXBsaWNhdGVkIGxheWVy
cy4KLSAgICBPd25QdHI8TGF5ZXJNYXA+IG1fbGF5ZXJDbG9uZXM7Ci0gICAgT3duUHRyPExheWVy
TWFwPiBtX3N0cnVjdHVyYWxMYXllckNsb25lczsKLSAgICBPd25QdHI8TGF5ZXJNYXA+IG1fY29u
dGVudHNMYXllckNsb25lczsKLSAgICAKLSAgICBlbnVtIENvbnRlbnRzTGF5ZXJQdXJwb3NlIHsK
LSAgICAgICAgTm9Db250ZW50c0xheWVyID0gMCwKLSAgICAgICAgQ29udGVudHNMYXllckZvcklt
YWdlLAotICAgICAgICBDb250ZW50c0xheWVyRm9yTWVkaWEsCi0gICAgICAgIENvbnRlbnRzTGF5
ZXJGb3JDYW52YXMKLSAgICB9OwotICAgIAotICAgIENvbnRlbnRzTGF5ZXJQdXJwb3NlIG1fY29u
dGVudHNMYXllclB1cnBvc2U7Ci0gICAgYm9vbCBtX2NvbnRlbnRzTGF5ZXJIYXNCYWNrZ3JvdW5k
Q29sb3IgOiAxOwotCi0gICAgUmV0YWluUHRyPFdlYkFuaW1hdGlvbkRlbGVnYXRlPiBtX2FuaW1h
dGlvbkRlbGVnYXRlOwotCi0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IG1fdW5jb3JyZWN0ZWRD
b250ZW50c0ltYWdlOwotICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBtX3BlbmRpbmdDb250ZW50
c0ltYWdlOwotICAgIAotICAgIC8vIFRoaXMgcmVwcmVzZW50cyB0aGUgYW5pbWF0aW9uIG9mIGEg
c2luZ2xlIHByb3BlcnR5LiBUaGVyZSBtYXkgYmUgbXVsdGlwbGUgdHJhbnNmb3JtIGFuaW1hdGlv
bnMgZm9yCi0gICAgLy8gYSBzaW5nbGUgdHJhbnNpdGlvbiBvciBrZXlmcmFtZSBhbmltYXRpb24s
IHNvIGluZGV4IGlzIHVzZWQgdG8gZGlzdGluZ3Vpc2ggdGhlc2UuCi0gICAgc3RydWN0IExheWVy
UHJvcGVydHlBbmltYXRpb24gewotICAgICAgICBMYXllclByb3BlcnR5QW5pbWF0aW9uKENBUHJv
cGVydHlBbmltYXRpb24qIGNhQW5pbWF0aW9uLCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUs
IEFuaW1hdGVkUHJvcGVydHlJRCBwcm9wZXJ0eSwgaW50IGluZGV4LCBkb3VibGUgdGltZU9mZnNl
dCkKLSAgICAgICAgOiBtX2FuaW1hdGlvbihjYUFuaW1hdGlvbikKLSAgICAgICAgLCBtX25hbWUo
YW5pbWF0aW9uTmFtZSkKLSAgICAgICAgLCBtX3Byb3BlcnR5KHByb3BlcnR5KQotICAgICAgICAs
IG1faW5kZXgoaW5kZXgpCi0gICAgICAgICwgbV90aW1lT2Zmc2V0KHRpbWVPZmZzZXQpCi0gICAg
ICAgIHsgfQotCi0gICAgICAgIFJldGFpblB0cjxDQVByb3BlcnR5QW5pbWF0aW9uKj4gbV9hbmlt
YXRpb247Ci0gICAgICAgIFN0cmluZyBtX25hbWU7Ci0gICAgICAgIEFuaW1hdGVkUHJvcGVydHlJ
RCBtX3Byb3BlcnR5OwotICAgICAgICBpbnQgbV9pbmRleDsKLSAgICAgICAgZG91YmxlIG1fdGlt
ZU9mZnNldDsKLSAgICB9OwotICAgIAotICAgIC8vIFVuY29tbWl0dGVkIHRyYW5zaXRpb25zIGFu
ZCBhbmltYXRpb25zLgotICAgIFZlY3RvcjxMYXllclByb3BlcnR5QW5pbWF0aW9uPiBtX3VuY29t
aXR0ZWRBbmltYXRpb25zOwotICAgIAotICAgIGVudW0gQWN0aW9uIHsgUmVtb3ZlLCBQYXVzZSB9
OwotICAgIHN0cnVjdCBBbmltYXRpb25Qcm9jZXNzaW5nQWN0aW9uIHsKLSAgICAgICAgQW5pbWF0
aW9uUHJvY2Vzc2luZ0FjdGlvbihBY3Rpb24gYWN0aW9uID0gUmVtb3ZlLCBkb3VibGUgdGltZU9m
ZnNldCA9IDApCi0gICAgICAgICAgICA6IGFjdGlvbihhY3Rpb24pCi0gICAgICAgICAgICAsIHRp
bWVPZmZzZXQodGltZU9mZnNldCkKLSAgICAgICAgewotICAgICAgICB9Ci0gICAgICAgIEFjdGlv
biBhY3Rpb247Ci0gICAgICAgIGRvdWJsZSB0aW1lT2Zmc2V0OyAvLyBvbmx5IHVzZWQgZm9yIHBh
dXNlCi0gICAgfTsKLSAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBBbmltYXRpb25Qcm9jZXNz
aW5nQWN0aW9uPiBBbmltYXRpb25zVG9Qcm9jZXNzTWFwOwotICAgIEFuaW1hdGlvbnNUb1Byb2Nl
c3NNYXAgbV9hbmltYXRpb25zVG9Qcm9jZXNzOwotCi0gICAgLy8gTWFwIG9mIGFuaW1hdGlvbiBu
YW1lcyB0byB0aGVpciBhc3NvY2lhdGVkIGxpc3RzIG9mIHByb3BlcnR5IGFuaW1hdGlvbnMsIHNv
IHdlIGNhbiByZW1vdmUvcGF1c2UgdGhlbS4KLSAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBW
ZWN0b3I8TGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbj4gPiBBbmltYXRpb25zTWFwOwotICAgIEFuaW1h
dGlvbnNNYXAgbV9ydW5uaW5nQW5pbWF0aW9uczsKLQotICAgIFZlY3RvcjxGbG9hdFJlY3Q+IG1f
ZGlydHlSZWN0czsKLSAgICAKLSAgICBMYXllckNoYW5nZUZsYWdzIG1fdW5jb21taXR0ZWRDaGFu
Z2VzOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0KLSNlbmRpZiAvLyBVU0UoQUND
RUxFUkFURURfQ09NUE9TSVRJTkcpCi0KLSNlbmRpZiAvLyBHcmFwaGljc0xheWVyTWFjX2gKSW5k
ZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzTGF5ZXJNYWMubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NMYXllck1h
Yy5tbQkocmV2aXNpb24gNzMxNTApCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9H
cmFwaGljc0xheWVyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDI1MTQgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IK
LSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lt
cG9ydCAiY29uZmlnLmgiCi0KLSNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0KLSNp
bXBvcnQgIkdyYXBoaWNzTGF5ZXJNYWMuaCIKLQotI2ltcG9ydCAiQW5pbWF0aW9uLmgiCi0jaW1w
b3J0ICJCbG9ja0V4Y2VwdGlvbnMuaCIKLSNpbXBvcnQgIkZsb2F0Q29udmVyc2lvbi5oIgotI2lt
cG9ydCAiRmxvYXRSZWN0LmgiCi0jaW1wb3J0ICJJbWFnZS5oIgotI2ltcG9ydCAiUGxhdGZvcm1T
dHJpbmcuaCIKLSNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgotI2ltcG9ydCAiUm90
YXRlVHJhbnNmb3JtT3BlcmF0aW9uLmgiCi0jaW1wb3J0ICJTY2FsZVRyYW5zZm9ybU9wZXJhdGlv
bi5oIgotI2ltcG9ydCAiU3lzdGVtVGltZS5oIgotI2ltcG9ydCAiVHJhbnNsYXRlVHJhbnNmb3Jt
T3BlcmF0aW9uLmgiCi0jaW1wb3J0ICJXZWJMYXllci5oIgotI2ltcG9ydCAiV2ViVGlsZWRMYXll
ci5oIgotI2ltcG9ydCA8bGltaXRzLmg+Ci0jaW1wb3J0IDxvYmpjL29iamMtYXV0by5oPgotI2lt
cG9ydCA8d3RmL0N1cnJlbnRUaW1lLmg+Ci0jaW1wb3J0IDx3dGYvVW51c2VkUGFyYW0uaD4KLSNp
bXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KLSNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVu
YXRlLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KLSNkZWZpbmUgSEFWRV9NT0RFUk5fUVVB
UlRaQ09SRSAoIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxESU5H
X09OX0xFT1BBUkQpKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0YXRpYyBOU1N0cmluZyAq
IGNvbnN0IFdlYktpdEFuaW1hdGlvbkJlZ2luVGltZVNldEtleSA9IEAiV2ViS2l0QW5pbWF0aW9u
QmVnaW5UaW1lU2V0IjsKLQotLy8gVGhlIHRocmVzaG9sZCB3aWR0aCBvciBoZWlnaHQgYWJvdmUg
d2hpY2ggYSB0aWxlZCBsYXllciB3aWxsIGJlIHVzZWQuIFRoaXMgc2hvdWxkIGJlCi0vLyBsYXJn
ZSBlbm91Z2ggdG8gYXZvaWQgdGlsZWQgbGF5ZXJzIGZvciBtb3N0IEdyYXBoaWNzTGF5ZXJzLCBi
dXQgbGVzcyB0aGFuIHRoZSBPcGVuR0wKLS8vIHRleHR1cmUgc2l6ZSBsaW1pdCBvbiBhbGwgc3Vw
cG9ydGVkIGhhcmR3YXJlLgotc3RhdGljIGNvbnN0IGludCBjTWF4UGl4ZWxEaW1lbnNpb24gPSAy
MDAwOwotCi0vLyBUaGUgd2lkdGggYW5kIGhlaWdodCBvZiBhIHNpbmdsZSB0aWxlIGluIGEgdGls
ZWQgbGF5ZXIuIFNob3VsZCBiZSBsYXJnZSBlbm91Z2ggdG8KLS8vIGF2b2lkIGxvdHMgb2Ygc21h
bGwgdGlsZXMgKGFuZCB0aGVyZWZvcmUgbG90cyBvZiBkcmF3aW5nIGNhbGxiYWNrcyksIGJ1dCBz
bWFsbCBlbm91Z2gKLS8vIHRvIGtlZXAgdGhlIG92ZXJhbGwgdGlsZSBjb3N0IGxvdy4KLXN0YXRp
YyBjb25zdCBpbnQgY1RpbGVkTGF5ZXJUaWxlU2l6ZSA9IDUxMjsKLQotLy8gSWYgd2Ugc2VuZCBh
IGR1cmF0aW9uIG9mIDAgdG8gQ0EsIHRoZW4gaXQgd2lsbCB1c2UgdGhlIGRlZmF1bHQgZHVyYXRp
b24KLS8vIG9mIDI1MG1zLiBTbyBzZW5kIGEgdmVyeSBzbWFsbCB2YWx1ZSBpbnN0ZWFkLgotc3Rh
dGljIGNvbnN0IGZsb2F0IGNBbmltYXRpb25BbG1vc3RaZXJvRHVyYXRpb24gPSAxZS0zZjsKLQot
Ly8gQ0FDdXJyZW50TWVkaWFUaW1lKCkgaXMgYSB0aW1lIHNpbmNlIGJvb3QuIFRoZXNlIG1ldGhv
ZHMgY29udmVydCBiZXR3ZWVuIHRoYXQgYW5kCi0vLyBXZWJDb3JlIHRpbWUsIHdoaWNoIGlzIHN5
c3RlbSB0aW1lIChVVEMpLgotc3RhdGljIENGVGltZUludGVydmFsIGN1cnJlbnRUaW1lVG9NZWRp
YVRpbWUoZG91YmxlIHQpCi17Ci0gICAgcmV0dXJuIENBQ3VycmVudE1lZGlhVGltZSgpICsgdCAt
IFdURjo6Y3VycmVudFRpbWUoKTsKLX0KLQotc3RhdGljIGRvdWJsZSBtZWRpYVRpbWVUb0N1cnJl
bnRUaW1lKENGVGltZUludGVydmFsIHQpCi17Ci0gICAgcmV0dXJuIFdURjo6Y3VycmVudFRpbWUo
KSArIHQgLSBDQUN1cnJlbnRNZWRpYVRpbWUoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQotCi1AaW50ZXJmYWNlIENBTGF5ZXIoUHJpdmF0ZSkKLS0gKHZvaWQpc2V0Q29udGVudHNDaGFu
Z2VkOwotQGVuZAotCi1AaW50ZXJmYWNlIFdlYkFuaW1hdGlvbkRlbGVnYXRlIDogTlNPYmplY3Qg
ewotICAgIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJNYWMqIG1fZ3JhcGhpY3NMYXllcjsKLX0KLQot
LSAodm9pZClhbmltYXRpb25EaWRTdGFydDooQ0FBbmltYXRpb24gKilhbmltOwotLSAoV2ViQ29y
ZTo6R3JhcGhpY3NMYXllck1hYyopZ3JhcGhpY3NMYXllcjsKLS0gKHZvaWQpc2V0TGF5ZXI6KFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXJNYWMqKWdyYXBoaWNzTGF5ZXI7Ci0KLUBlbmQKLQotQGltcGxl
bWVudGF0aW9uIFdlYkFuaW1hdGlvbkRlbGVnYXRlCi0KLS0gKHZvaWQpYW5pbWF0aW9uRGlkU3Rh
cnQ6KENBQW5pbWF0aW9uICopYW5pbWF0aW9uCi17Ci0gICAgaWYgKG1fZ3JhcGhpY3NMYXllcikK
LSAgICAgICAgbV9ncmFwaGljc0xheWVyLT5hbmltYXRpb25EaWRTdGFydChhbmltYXRpb24pOwot
fQotCi0tIChXZWJDb3JlOjpHcmFwaGljc0xheWVyTWFjKilncmFwaGljc0xheWVyCi17Ci0gICAg
cmV0dXJuIG1fZ3JhcGhpY3NMYXllcjsKLX0KLQotLSAodm9pZClzZXRMYXllcjooV2ViQ29yZTo6
R3JhcGhpY3NMYXllck1hYyopZ3JhcGhpY3NMYXllcgotewotICAgIG1fZ3JhcGhpY3NMYXllciA9
IGdyYXBoaWNzTGF5ZXI7Ci19Ci0KLUBlbmQKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0
aWMgaW5saW5lIHZvaWQgY29weVRyYW5zZm9ybShDQVRyYW5zZm9ybTNEJiB0b1QzRCwgY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXgmIHQpCi17Ci0gICAgdG9UM0QubTExID0gbmFycm93UHJlY2lz
aW9uVG9GbG9hdCh0Lm0xMSgpKTsKLSAgICB0b1QzRC5tMTIgPSBuYXJyb3dQcmVjaXNpb25Ub0Zs
b2F0KHQubTEyKCkpOwotICAgIHRvVDNELm0xMyA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodC5t
MTMoKSk7Ci0gICAgdG9UM0QubTE0ID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCh0Lm0xNCgpKTsK
LSAgICB0b1QzRC5tMjEgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHQubTIxKCkpOwotICAgIHRv
VDNELm0yMiA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodC5tMjIoKSk7Ci0gICAgdG9UM0QubTIz
ID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCh0Lm0yMygpKTsKLSAgICB0b1QzRC5tMjQgPSBuYXJy
b3dQcmVjaXNpb25Ub0Zsb2F0KHQubTI0KCkpOwotICAgIHRvVDNELm0zMSA9IG5hcnJvd1ByZWNp
c2lvblRvRmxvYXQodC5tMzEoKSk7Ci0gICAgdG9UM0QubTMyID0gbmFycm93UHJlY2lzaW9uVG9G
bG9hdCh0Lm0zMigpKTsKLSAgICB0b1QzRC5tMzMgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHQu
bTMzKCkpOwotICAgIHRvVDNELm0zNCA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodC5tMzQoKSk7
Ci0gICAgdG9UM0QubTQxID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCh0Lm00MSgpKTsKLSAgICB0
b1QzRC5tNDIgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHQubTQyKCkpOwotICAgIHRvVDNELm00
MyA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodC5tNDMoKSk7Ci0gICAgdG9UM0QubTQ0ID0gbmFy
cm93UHJlY2lzaW9uVG9GbG9hdCh0Lm00NCgpKTsKLX0KLQotc3RhdGljIE5TVmFsdWUqIGdldFRy
YW5zZm9ybUZ1bmN0aW9uVmFsdWUoY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9uKiB0cmFuc2Zvcm1P
cCwgVHJhbnNmb3JtT3BlcmF0aW9uOjpPcGVyYXRpb25UeXBlIHRyYW5zZm9ybVR5cGUsIGNvbnN0
IEludFNpemUmIHNpemUpCi17Ci0gICAgc3dpdGNoICh0cmFuc2Zvcm1UeXBlKSB7Ci0gICAgICAg
IGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpST1RBVEU6Ci0gICAgICAgIGNhc2UgVHJhbnNmb3Jt
T3BlcmF0aW9uOjpST1RBVEVfWDoKLSAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlJP
VEFURV9ZOgotICAgICAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOnRy
YW5zZm9ybU9wID8gZGVnMnJhZChzdGF0aWNfY2FzdDxjb25zdCBSb3RhdGVUcmFuc2Zvcm1PcGVy
YXRpb24qPih0cmFuc2Zvcm1PcCktPmFuZ2xlKCkpIDogMF07Ci0gICAgICAgIGNhc2UgVHJhbnNm
b3JtT3BlcmF0aW9uOjpTQ0FMRV9YOgotICAgICAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1i
ZXJXaXRoRG91YmxlOnRyYW5zZm9ybU9wID8gc3RhdGljX2Nhc3Q8Y29uc3QgU2NhbGVUcmFuc2Zv
cm1PcGVyYXRpb24qPih0cmFuc2Zvcm1PcCktPngoKSA6IDFdOwotICAgICAgICBjYXNlIFRyYW5z
Zm9ybU9wZXJhdGlvbjo6U0NBTEVfWToKLSAgICAgICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVt
YmVyV2l0aERvdWJsZTp0cmFuc2Zvcm1PcCA/IHN0YXRpY19jYXN0PGNvbnN0IFNjYWxlVHJhbnNm
b3JtT3BlcmF0aW9uKj4odHJhbnNmb3JtT3ApLT55KCkgOiAxXTsKLSAgICAgICAgY2FzZSBUcmFu
c2Zvcm1PcGVyYXRpb246OlNDQUxFX1o6Ci0gICAgICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51
bWJlcldpdGhEb3VibGU6dHJhbnNmb3JtT3AgPyBzdGF0aWNfY2FzdDxjb25zdCBTY2FsZVRyYW5z
Zm9ybU9wZXJhdGlvbio+KHRyYW5zZm9ybU9wKS0+eigpIDogMV07Ci0gICAgICAgIGNhc2UgVHJh
bnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfWDoKLSAgICAgICAgICAgIHJldHVybiBbTlNOdW1i
ZXIgbnVtYmVyV2l0aERvdWJsZTp0cmFuc2Zvcm1PcCA/IHN0YXRpY19jYXN0PGNvbnN0IFRyYW5z
bGF0ZVRyYW5zZm9ybU9wZXJhdGlvbio+KHRyYW5zZm9ybU9wKS0+eChzaXplKSA6IDBdOwotICAg
ICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFX1k6Ci0gICAgICAgICAgICBy
ZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6dHJhbnNmb3JtT3AgPyBzdGF0aWNfY2Fz
dDxjb25zdCBUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24qPih0cmFuc2Zvcm1PcCktPnkoc2l6
ZSkgOiAwXTsKLSAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURV9aOgot
ICAgICAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOnRyYW5zZm9ybU9w
ID8gc3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uKj4odHJhbnNm
b3JtT3ApLT56KHNpemUpIDogMF07Ci0gICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpT
Q0FMRToKLSAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlNDQUxFXzNEOgotICAgICAg
ICAgICAgcmV0dXJuIFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTp0cmFuc2Zvcm1PcCA/IHN0YXRpY19j
YXN0PGNvbnN0IFNjYWxlVHJhbnNmb3JtT3BlcmF0aW9uKj4odHJhbnNmb3JtT3ApLT54KCkgOiAx
XSwKLSAgICAgICAgICAgICAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOnRy
YW5zZm9ybU9wID8gc3RhdGljX2Nhc3Q8Y29uc3QgU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24qPih0
cmFuc2Zvcm1PcCktPnkoKSA6IDFdLAotICAgICAgICAgICAgICAgICAgICAgICAgW05TTnVtYmVy
IG51bWJlcldpdGhEb3VibGU6dHJhbnNmb3JtT3AgPyBzdGF0aWNfY2FzdDxjb25zdCBTY2FsZVRy
YW5zZm9ybU9wZXJhdGlvbio+KHRyYW5zZm9ybU9wKS0+eigpIDogMV0sCi0gICAgICAgICAgICAg
ICAgICAgICAgICBuaWxdOwotICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNM
QVRFOgotICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFXzNEOgotICAg
ICAgICAgICAgcmV0dXJuIFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTp0cmFuc2Zvcm1PcCA/IHN0YXRp
Y19jYXN0PGNvbnN0IFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbio+KHRyYW5zZm9ybU9wKS0+
eChzaXplKSA6IDBdLAotICAgICAgICAgICAgICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldp
dGhEb3VibGU6dHJhbnNmb3JtT3AgPyBzdGF0aWNfY2FzdDxjb25zdCBUcmFuc2xhdGVUcmFuc2Zv
cm1PcGVyYXRpb24qPih0cmFuc2Zvcm1PcCktPnkoc2l6ZSkgOiAwXSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOnRyYW5zZm9ybU9wID8gc3RhdGlj
X2Nhc3Q8Y29uc3QgVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uKj4odHJhbnNmb3JtT3ApLT56
KHNpemUpIDogMF0sCi0gICAgICAgICAgICAgICAgICAgICAgICBuaWxdOwotICAgICAgICBjYXNl
IFRyYW5zZm9ybU9wZXJhdGlvbjo6U0tFV19YOgotICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJh
dGlvbjo6U0tFV19ZOgotICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0tFVzoKLSAg
ICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246Ok1BVFJJWDoKLSAgICAgICAgY2FzZSBUcmFu
c2Zvcm1PcGVyYXRpb246OlJPVEFURV8zRDoKLSAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRp
b246Ok1BVFJJWF8zRDoKLSAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlBFUlNQRUNU
SVZFOgotICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6SURFTlRJVFk6Ci0gICAgICAg
IGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpOT05FOiB7Ci0gICAgICAgICAgICBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCB0cmFuc2Zvcm07Ci0gICAgICAgICAgICBpZiAodHJhbnNmb3JtT3ApCi0gICAg
ICAgICAgICAgICAgdHJhbnNmb3JtT3AtPmFwcGx5KHRyYW5zZm9ybSwgc2l6ZSk7Ci0gICAgICAg
ICAgICBDQVRyYW5zZm9ybTNEIGNhVHJhbnNmb3JtOwotICAgICAgICAgICAgY29weVRyYW5zZm9y
bShjYVRyYW5zZm9ybSwgdHJhbnNmb3JtKTsKLSAgICAgICAgICAgIHJldHVybiBbTlNWYWx1ZSB2
YWx1ZVdpdGhDQVRyYW5zZm9ybTNEOmNhVHJhbnNmb3JtXTsKLSAgICAgICAgfQotICAgIH0KLSAg
ICAKLSAgICByZXR1cm4gMDsKLX0KLQotI2lmIEhBVkVfTU9ERVJOX1FVQVJUWkNPUkUKLXN0YXRp
YyBOU1N0cmluZyAqZ2V0VmFsdWVGdW5jdGlvbk5hbWVGb3JUcmFuc2Zvcm1PcGVyYXRpb24oVHJh
bnNmb3JtT3BlcmF0aW9uOjpPcGVyYXRpb25UeXBlIHRyYW5zZm9ybVR5cGUpCi17Ci0gICAgLy8g
VXNlIGxpdGVyYWwgc3RyaW5ncyB0byBhdm9pZCBsaW5rLXRpbWUgZGVwZW5kZW5jeSBvbiB0aG9z
ZSBzeW1ib2xzLgotICAgIHN3aXRjaCAodHJhbnNmb3JtVHlwZSkgewotICAgICAgICBjYXNlIFRy
YW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRFX1g6Ci0gICAgICAgICAgICByZXR1cm4gQCJyb3RhdGVY
IjsgLy8ga0NBVmFsdWVGdW5jdGlvblJvdGF0ZVg7Ci0gICAgICAgIGNhc2UgVHJhbnNmb3JtT3Bl
cmF0aW9uOjpST1RBVEVfWToKLSAgICAgICAgICAgIHJldHVybiBAInJvdGF0ZVkiOyAvLyBrQ0FW
YWx1ZUZ1bmN0aW9uUm90YXRlWTsKLSAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlJP
VEFURToKLSAgICAgICAgICAgIHJldHVybiBAInJvdGF0ZVoiOyAvLyBrQ0FWYWx1ZUZ1bmN0aW9u
Um90YXRlWjsKLSAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlNDQUxFX1g6Ci0gICAg
ICAgICAgICByZXR1cm4gQCJzY2FsZVgiOyAvLyBrQ0FWYWx1ZUZ1bmN0aW9uU2NhbGVYOwotICAg
ICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0NBTEVfWToKLSAgICAgICAgICAgIHJldHVy
biBAInNjYWxlWSI7IC8vIGtDQVZhbHVlRnVuY3Rpb25TY2FsZVk7Ci0gICAgICAgIGNhc2UgVHJh
bnNmb3JtT3BlcmF0aW9uOjpTQ0FMRV9aOgotICAgICAgICAgICAgcmV0dXJuIEAic2NhbGVaIjsg
Ly8ga0NBVmFsdWVGdW5jdGlvblNjYWxlWjsKLSAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRp
b246OlRSQU5TTEFURV9YOgotICAgICAgICAgICAgcmV0dXJuIEAidHJhbnNsYXRlWCI7IC8vIGtD
QVZhbHVlRnVuY3Rpb25UcmFuc2xhdGVYOwotICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlv
bjo6VFJBTlNMQVRFX1k6Ci0gICAgICAgICAgICByZXR1cm4gQCJ0cmFuc2xhdGVZIjsgLy8ga0NB
VmFsdWVGdW5jdGlvblRyYW5zbGF0ZVk7Ci0gICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9u
OjpUUkFOU0xBVEVfWjoKLSAgICAgICAgICAgIHJldHVybiBAInRyYW5zbGF0ZVoiOyAvLyBrQ0FW
YWx1ZUZ1bmN0aW9uVHJhbnNsYXRlWjsKLSAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246
OlNDQUxFOgotICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0NBTEVfM0Q6Ci0gICAg
ICAgICAgICByZXR1cm4gQCJzY2FsZSI7IC8vIGtDQVZhbHVlRnVuY3Rpb25TY2FsZTsKLSAgICAg
ICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURToKLSAgICAgICAgY2FzZSBUcmFu
c2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURV8zRDoKLSAgICAgICAgICAgIHJldHVybiBAInRyYW5z
bGF0ZSI7IC8vIGtDQVZhbHVlRnVuY3Rpb25UcmFuc2xhdGU7Ci0gICAgICAgIGRlZmF1bHQ6Ci0g
ICAgICAgICAgICByZXR1cm4gbmlsOwotICAgIH0KLX0KLSNlbmRpZgotCi1zdGF0aWMgU3RyaW5n
IHByb3BlcnR5SWRUb1N0cmluZyhBbmltYXRlZFByb3BlcnR5SUQgcHJvcGVydHkpCi17Ci0gICAg
c3dpdGNoIChwcm9wZXJ0eSkgewotICAgICAgICBjYXNlIEFuaW1hdGVkUHJvcGVydHlXZWJraXRU
cmFuc2Zvcm06Ci0gICAgICAgICAgICByZXR1cm4gInRyYW5zZm9ybSI7Ci0gICAgICAgIGNhc2Ug
QW5pbWF0ZWRQcm9wZXJ0eU9wYWNpdHk6Ci0gICAgICAgICAgICByZXR1cm4gIm9wYWNpdHkiOwot
ICAgICAgICBjYXNlIEFuaW1hdGVkUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3I6Ci0gICAgICAgICAg
ICByZXR1cm4gImJhY2tncm91bmRDb2xvciI7Ci0gICAgICAgIGNhc2UgQW5pbWF0ZWRQcm9wZXJ0
eUludmFsaWQ6Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9Ci0gICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuICIiOwotfQotCi1zdGF0aWMgU3RyaW5n
IGFuaW1hdGlvbklkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBBbmltYXRl
ZFByb3BlcnR5SUQgcHJvcGVydHksIGludCBpbmRleCkKLXsKLSAgICByZXR1cm4gbWFrZVN0cmlu
ZyhhbmltYXRpb25OYW1lLCAnXycsIFN0cmluZzo6bnVtYmVyKHByb3BlcnR5KSwgJ18nLCBTdHJp
bmc6Om51bWJlcihpbmRleCkpOwotfQotCi1zdGF0aWMgQ0FNZWRpYVRpbWluZ0Z1bmN0aW9uKiBn
ZXRDQU1lZGlhVGltaW5nRnVuY3Rpb24oY29uc3QgVGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0
aW9uKQotewotICAgIC8vIEJ5IHRoaXMgcG9pbnQsIHRpbWluZyBmdW5jdGlvbnMgY2FuIG9ubHkg
YmUgbGluZWFyIG9yIGN1YmljLCBub3Qgc3RlcHMuCi0gICAgQVNTRVJUKCF0aW1pbmdGdW5jdGlv
bi0+aXNTdGVwc1RpbWluZ0Z1bmN0aW9uKCkpOwotICAgIGlmICh0aW1pbmdGdW5jdGlvbi0+aXND
dWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKCkpIHsKLSAgICAgICAgY29uc3QgQ3ViaWNCZXppZXJU
aW1pbmdGdW5jdGlvbiogY3RmID0gc3RhdGljX2Nhc3Q8Y29uc3QgQ3ViaWNCZXppZXJUaW1pbmdG
dW5jdGlvbio+KHRpbWluZ0Z1bmN0aW9uKTsKLSAgICAgICAgcmV0dXJuIFtDQU1lZGlhVGltaW5n
RnVuY3Rpb24gZnVuY3Rpb25XaXRoQ29udHJvbFBvaW50czpzdGF0aWNfY2FzdDxmbG9hdD4oY3Rm
LT54MSgpKSA6c3RhdGljX2Nhc3Q8ZmxvYXQ+KGN0Zi0+eTEoKSkKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpzdGF0aWNfY2Fz
dDxmbG9hdD4oY3RmLT54MigpKSA6c3RhdGljX2Nhc3Q8ZmxvYXQ+KGN0Zi0+eTIoKSldOwotICAg
IH0gZWxzZQotICAgICAgICByZXR1cm4gW0NBTWVkaWFUaW1pbmdGdW5jdGlvbiBmdW5jdGlvbldp
dGhOYW1lOkAibGluZWFyIl07Ci19Ci0KLXN0YXRpYyB2b2lkIHNldExheWVyQm9yZGVyQ29sb3Io
UGxhdGZvcm1MYXllciogbGF5ZXIsIGNvbnN0IENvbG9yJiBjb2xvcikKLXsKLSAgICBbbGF5ZXIg
c2V0Qm9yZGVyQ29sb3I6Y2FjaGVkQ0dDb2xvcihjb2xvciwgQ29sb3JTcGFjZURldmljZVJHQild
OwotfQotCi1zdGF0aWMgdm9pZCBjbGVhckJvcmRlckNvbG9yKFBsYXRmb3JtTGF5ZXIqIGxheWVy
KQotewotICAgIFtsYXllciBzZXRCb3JkZXJDb2xvcjpuaWxdOwotfQotCi1zdGF0aWMgdm9pZCBz
ZXRMYXllckJhY2tncm91bmRDb2xvcihQbGF0Zm9ybUxheWVyKiBsYXllciwgY29uc3QgQ29sb3Im
IGNvbG9yKQotewotICAgIFtsYXllciBzZXRCYWNrZ3JvdW5kQ29sb3I6Y2FjaGVkQ0dDb2xvcihj
b2xvciwgQ29sb3JTcGFjZURldmljZVJHQildOwotfQotCi1zdGF0aWMgdm9pZCBjbGVhckxheWVy
QmFja2dyb3VuZENvbG9yKFBsYXRmb3JtTGF5ZXIqIGxheWVyKQotewotICAgIFtsYXllciBzZXRC
YWNrZ3JvdW5kQ29sb3I6MF07Ci19Ci0KLXN0YXRpYyB2b2lkIHNhZmVTZXRTdWJsYXllcnMoQ0FM
YXllciogbGF5ZXIsIE5TQXJyYXkqIHN1YmxheWVycykKLXsKLSAgICAvLyBXb3JrYXJvdW5kIGZv
ciA8cmRhcjovL3Byb2JsZW0vNzM5MDcxNj46IC1bQ0FMYXllciBzZXRTdWJsYXllcnM6XSBjcmFz
aGVzIGlmIHN1YmxheWVycyBpcyBhbiBlbXB0eSBhcnJheSwgb3IgbmlsLCB1bmRlciBHQy4KLSAg
ICBpZiAob2JqY19jb2xsZWN0aW5nRW5hYmxlZCgpICYmICFbc3VibGF5ZXJzIGNvdW50XSkgewot
ICAgICAgICB3aGlsZSAoW1tsYXllciBzdWJsYXllcnNdIGNvdW50XSkKLSAgICAgICAgICAgIFtb
W2xheWVyIHN1YmxheWVyc10gb2JqZWN0QXRJbmRleDowXSByZW1vdmVGcm9tU3VwZXJsYXllcl07
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgW2xheWVyIHNldFN1YmxheWVyczpz
dWJsYXllcnNdOwotfQotCi1zdGF0aWMgYm9vbCBjYVZhbHVlRnVuY3Rpb25TdXBwb3J0ZWQoKQot
ewotICAgIHN0YXRpYyBib29sIHNIYXZlVmFsdWVGdW5jdGlvbiA9IFtDQVByb3BlcnR5QW5pbWF0
aW9uIGluc3RhbmNlc1Jlc3BvbmRUb1NlbGVjdG9yOkBzZWxlY3RvcihzZXRWYWx1ZUZ1bmN0aW9u
OildOwotICAgIHJldHVybiBzSGF2ZVZhbHVlRnVuY3Rpb247Ci19Ci0KLXN0YXRpYyBib29sIGZv
cmNlU29mdHdhcmVBbmltYXRpb24oKQotewotICAgIHN0YXRpYyBib29sIGZvcmNlU29mdHdhcmVB
bmltYXRpb24gPSBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBib29sRm9y
S2V5OkAiV2ViQ29yZUZvcmNlU29mdHdhcmVBbmltYXRpb24iXTsKLSAgICByZXR1cm4gZm9yY2VT
b2Z0d2FyZUFuaW1hdGlvbjsKLX0KLQotc3RhdGljIE5TRGljdGlvbmFyeSogbnVsbEFjdGlvbnNE
aWN0aW9uYXJ5KCkKLXsKLSAgICBOU051bGwqIG51bGxWYWx1ZSA9IFtOU051bGwgbnVsbF07Ci0g
ICAgTlNEaWN0aW9uYXJ5KiBhY3Rpb25zID0gW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9i
amVjdHNBbmRLZXlzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsVmFsdWUsIEAi
YW5jaG9yUG9pbnQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsVmFsdWUsIEAi
Ym91bmRzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbFZhbHVlLCBAImNvbnRl
bnRzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbFZhbHVlLCBAImNvbnRlbnRz
UmVjdCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxWYWx1ZSwgQCJvcGFjaXR5
IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbFZhbHVlLCBAInBvc2l0aW9uIiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbFZhbHVlLCBAInNoYWRvd0NvbG9yIiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbFZhbHVlLCBAInN1YmxheWVyVHJhbnNm
b3JtIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbFZhbHVlLCBAInN1YmxheWVy
cyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxWYWx1ZSwgQCJ0cmFuc2Zvcm0i
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsVmFsdWUsIEAielBvc2l0aW9uIiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlsXTsKLSAgICByZXR1cm4gYWN0aW9uczsK
LX0KLQotc3RhdGljIGJvb2wgYW5pbWF0aW9uSGFzU3RlcHNUaW1pbmdGdW5jdGlvbihjb25zdCBL
ZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVMaXN0LCBjb25zdCBBbmltYXRpb24qIGFuaW0pCi17Ci0g
ICAgaWYgKGFuaW0tPnRpbWluZ0Z1bmN0aW9uKCktPmlzU3RlcHNUaW1pbmdGdW5jdGlvbigpKQot
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
dmFsdWVMaXN0LnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB0
aW1pbmdGdW5jdGlvbiA9IHZhbHVlTGlzdC5hdChpKS0+dGltaW5nRnVuY3Rpb24oKTsKLSAgICAg
ICAgaWYgKHRpbWluZ0Z1bmN0aW9uICYmIHRpbWluZ0Z1bmN0aW9uLT5pc1N0ZXBzVGltaW5nRnVu
Y3Rpb24oKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIHJldHVybiBm
YWxzZTsKLX0KLQotUGFzc093blB0cjxHcmFwaGljc0xheWVyPiBHcmFwaGljc0xheWVyOjpjcmVh
dGUoR3JhcGhpY3NMYXllckNsaWVudCogY2xpZW50KQotewotICAgIHJldHVybiBuZXcgR3JhcGhp
Y3NMYXllck1hYyhjbGllbnQpOwotfQotCi1HcmFwaGljc0xheWVyTWFjOjpHcmFwaGljc0xheWVy
TWFjKEdyYXBoaWNzTGF5ZXJDbGllbnQqIGNsaWVudCkKLSAgICA6IEdyYXBoaWNzTGF5ZXIoY2xp
ZW50KQotICAgICwgbV9jb250ZW50c0xheWVyUHVycG9zZShOb0NvbnRlbnRzTGF5ZXIpCi0gICAg
LCBtX2NvbnRlbnRzTGF5ZXJIYXNCYWNrZ3JvdW5kQ29sb3IoZmFsc2UpCi0gICAgLCBtX3VuY29t
bWl0dGVkQ2hhbmdlcyhOb0NoYW5nZSkKLXsKLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElP
TlMKLSAgICBtX2xheWVyLmFkb3B0TlMoW1tXZWJMYXllciBhbGxvY10gaW5pdF0pOwotICAgIFtt
X2xheWVyLmdldCgpIHNldExheWVyT3duZXI6dGhpc107Ci0KLSNpZiAhSEFWRV9NT0RFUk5fUVVB
UlRaQ09SRQotICAgIHNldENvbnRlbnRzT3JpZW50YXRpb24oZGVmYXVsdENvbnRlbnRzT3JpZW50
YXRpb24oKSk7Ci0jZW5kaWYKLQotICAgIHVwZGF0ZURlYnVnSW5kaWNhdG9ycygpOwotCi0gICAg
bV9hbmltYXRpb25EZWxlZ2F0ZS5hZG9wdE5TKFtbV2ViQW5pbWF0aW9uRGVsZWdhdGUgYWxsb2Nd
IGluaXRdKTsKLSAgICBbbV9hbmltYXRpb25EZWxlZ2F0ZS5nZXQoKSBzZXRMYXllcjp0aGlzXTsK
LSAgICAKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi19Ci0KLUdyYXBoaWNzTGF5ZXJN
YWM6On5HcmFwaGljc0xheWVyTWFjKCkKLXsKLSAgICAvLyBXZSByZWxlYXNlIG91ciByZWZlcmVu
Y2VzIHRvIHRoZSBDQUxheWVycyBoZXJlLCBidXQgZG8gbm90IGFjdGl2ZWx5IHVucGFyZW50IHRo
ZW0sCi0gICAgLy8gc2luY2UgdGhhdCB3aWxsIGNhdXNlIGEgY29tbWl0IGFuZCBicmVhayBvdXIg
YmF0Y2hlZCBjb21taXQgbW9kZWwuIFRoZSBsYXllcnMgd2lsbAotICAgIC8vIGdldCByZWxlYXNl
ZCB3aGVuIHRoZSByb290bW9zdCBtb2RpZmllZCBHcmFwaGljc0xheWVyTWFjIHJlYnVpbGRzIGl0
cyBjaGlsZCBsYXllcnMuCi0gICAgCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0K
LSAgICAvLyBDbGVhbiB1cCB0aGUgV0sgbGF5ZXIuCi0gICAgaWYgKG1fbGF5ZXIpIHsKLSAgICAg
ICAgV2ViTGF5ZXIqIGxheWVyID0gbV9sYXllci5nZXQoKTsKLSAgICAgICAgW2xheWVyIHNldExh
eWVyT3duZXI6bmlsXTsKLSAgICB9Ci0gICAgCi0gICAgaWYgKG1fY29udGVudHNMYXllcikgewot
ICAgICAgICBpZiAoW21fY29udGVudHNMYXllci5nZXQoKSByZXNwb25kc1RvU2VsZWN0b3I6QHNl
bGVjdG9yKHNldExheWVyT3duZXI6KV0pCi0gICAgICAgICAgICBbKGlkKW1fY29udGVudHNMYXll
ci5nZXQoKSBzZXRMYXllck93bmVyOm5pbF07Ci0gICAgfQotICAgIAotICAgIC8vIGFuaW1hdGlv
bkRpZFN0YXJ0OiBjYW4gZmlyZSBhZnRlciB0aGlzLCBzbyB3ZSBuZWVkIHRvIGNsZWFyIG91dCB0
aGUgbGF5ZXIgb24gdGhlIGRlbGVnYXRlLgotICAgIFttX2FuaW1hdGlvbkRlbGVnYXRlLmdldCgp
IHNldExheWVyOjBdOwotCi0gICAgLy8gUmVsZWFzZSB0aGUgY2xvbmUgbGF5ZXJzIGluc2lkZSB0
aGUgZXhjZXB0aW9uLWhhbmRsaW5nIGJsb2NrLgotICAgIHJlbW92ZUNsb25lTGF5ZXJzKCk7Ci0g
ICAgCi0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotfQotCi12b2lkIEdyYXBoaWNzTGF5
ZXJNYWM6OnNldE5hbWUoY29uc3QgU3RyaW5nJiBuYW1lKQotewotICAgIFN0cmluZyBsb25nTmFt
ZSA9IFN0cmluZzo6Zm9ybWF0KCJDQUxheWVyKCVwKSBHcmFwaGljc0xheWVyKCVwKSAiLCBtX2xh
eWVyLmdldCgpLCB0aGlzKSArIG5hbWU7Ci0gICAgR3JhcGhpY3NMYXllcjo6c2V0TmFtZShsb25n
TmFtZSk7Ci0gICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKE5hbWVDaGFuZ2VkKTsKLX0KLQot
TmF0aXZlTGF5ZXIgR3JhcGhpY3NMYXllck1hYzo6bmF0aXZlTGF5ZXIoKSBjb25zdAotewotICAg
IHJldHVybiBtX2xheWVyLmdldCgpOwotfQotCi1ib29sIEdyYXBoaWNzTGF5ZXJNYWM6OnNldENo
aWxkcmVuKGNvbnN0IFZlY3RvcjxHcmFwaGljc0xheWVyKj4mIGNoaWxkcmVuKQotewotICAgIGJv
b2wgY2hpbGRyZW5DaGFuZ2VkID0gR3JhcGhpY3NMYXllcjo6c2V0Q2hpbGRyZW4oY2hpbGRyZW4p
OwotICAgIGlmIChjaGlsZHJlbkNoYW5nZWQpCi0gICAgICAgIG5vdGVTdWJsYXllcnNDaGFuZ2Vk
KCk7Ci0gICAgCi0gICAgcmV0dXJuIGNoaWxkcmVuQ2hhbmdlZDsKLX0KLQotdm9pZCBHcmFwaGlj
c0xheWVyTWFjOjphZGRDaGlsZChHcmFwaGljc0xheWVyKiBjaGlsZExheWVyKQotewotICAgIEdy
YXBoaWNzTGF5ZXI6OmFkZENoaWxkKGNoaWxkTGF5ZXIpOwotICAgIG5vdGVTdWJsYXllcnNDaGFu
Z2VkKCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6YWRkQ2hpbGRBdEluZGV4KEdyYXBo
aWNzTGF5ZXIqIGNoaWxkTGF5ZXIsIGludCBpbmRleCkKLXsKLSAgICBHcmFwaGljc0xheWVyOjph
ZGRDaGlsZEF0SW5kZXgoY2hpbGRMYXllciwgaW5kZXgpOwotICAgIG5vdGVTdWJsYXllcnNDaGFu
Z2VkKCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6YWRkQ2hpbGRCZWxvdyhHcmFwaGlj
c0xheWVyKiBjaGlsZExheWVyLCBHcmFwaGljc0xheWVyKiBzaWJsaW5nKQotewotICAgIEdyYXBo
aWNzTGF5ZXI6OmFkZENoaWxkQmVsb3coY2hpbGRMYXllciwgc2libGluZyk7Ci0gICAgbm90ZVN1
YmxheWVyc0NoYW5nZWQoKTsKLX0KLQotdm9pZCBHcmFwaGljc0xheWVyTWFjOjphZGRDaGlsZEFi
b3ZlKEdyYXBoaWNzTGF5ZXIqIGNoaWxkTGF5ZXIsIEdyYXBoaWNzTGF5ZXIqIHNpYmxpbmcpCi17
Ci0gICAgR3JhcGhpY3NMYXllcjo6YWRkQ2hpbGRBYm92ZShjaGlsZExheWVyLCBzaWJsaW5nKTsK
LSAgICBub3RlU3VibGF5ZXJzQ2hhbmdlZCgpOwotfQotCi1ib29sIEdyYXBoaWNzTGF5ZXJNYWM6
OnJlcGxhY2VDaGlsZChHcmFwaGljc0xheWVyKiBvbGRDaGlsZCwgR3JhcGhpY3NMYXllciogbmV3
Q2hpbGQpCi17Ci0gICAgaWYgKEdyYXBoaWNzTGF5ZXI6OnJlcGxhY2VDaGlsZChvbGRDaGlsZCwg
bmV3Q2hpbGQpKSB7Ci0gICAgICAgIG5vdGVTdWJsYXllcnNDaGFuZ2VkKCk7Ci0gICAgICAgIHJl
dHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXZvaWQgR3JhcGhpY3NM
YXllck1hYzo6cmVtb3ZlRnJvbVBhcmVudCgpCi17Ci0gICAgaWYgKG1fcGFyZW50KQotICAgICAg
ICBzdGF0aWNfY2FzdDxHcmFwaGljc0xheWVyTWFjKj4obV9wYXJlbnQpLT5ub3RlU3VibGF5ZXJz
Q2hhbmdlZCgpOwotICAgIEdyYXBoaWNzTGF5ZXI6OnJlbW92ZUZyb21QYXJlbnQoKTsKLX0KLQot
dm9pZCBHcmFwaGljc0xheWVyTWFjOjpzZXRNYXNrTGF5ZXIoR3JhcGhpY3NMYXllciogbGF5ZXIp
Ci17Ci0gICAgaWYgKGxheWVyID09IG1fbWFza0xheWVyKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBHcmFwaGljc0xheWVyOjpzZXRNYXNrTGF5ZXIobGF5ZXIpOwotICAgIG5vdGVMYXllclByb3Bl
cnR5Q2hhbmdlZChNYXNrTGF5ZXJDaGFuZ2VkKTsKLQotICAgIHByb3BhZ2F0ZUxheWVyQ2hhbmdl
VG9SZXBsaWNhcygpOwotICAgIAotICAgIGlmIChtX3JlcGxpY2F0ZWRMYXllcikKLSAgICAgICAg
c3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllck1hYyo+KG1fcmVwbGljYXRlZExheWVyKS0+cHJvcGFn
YXRlTGF5ZXJDaGFuZ2VUb1JlcGxpY2FzKCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6
c2V0UmVwbGljYXRlZExheWVyKEdyYXBoaWNzTGF5ZXIqIGxheWVyKQotewotICAgIGlmIChsYXll
ciA9PSBtX3JlcGxpY2F0ZWRMYXllcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgR3JhcGhpY3NM
YXllcjo6c2V0UmVwbGljYXRlZExheWVyKGxheWVyKTsKLSAgICBub3RlTGF5ZXJQcm9wZXJ0eUNo
YW5nZWQoUmVwbGljYXRlZExheWVyQ2hhbmdlZCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1h
Yzo6c2V0UmVwbGljYXRlZEJ5TGF5ZXIoR3JhcGhpY3NMYXllciogbGF5ZXIpCi17Ci0gICAgaWYg
KGxheWVyID09IG1fcmVwbGljYUxheWVyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBHcmFwaGlj
c0xheWVyOjpzZXRSZXBsaWNhdGVkQnlMYXllcihsYXllcik7Ci0gICAgbm90ZVN1YmxheWVyc0No
YW5nZWQoKTsKLSAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoUmVwbGljYXRlZExheWVyQ2hh
bmdlZCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6c2V0UG9zaXRpb24oY29uc3QgRmxv
YXRQb2ludCYgcG9pbnQpCi17Ci0gICAgaWYgKHBvaW50ID09IG1fcG9zaXRpb24pCi0gICAgICAg
IHJldHVybjsKLQotICAgIEdyYXBoaWNzTGF5ZXI6OnNldFBvc2l0aW9uKHBvaW50KTsKLSAgICBu
b3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoUG9zaXRpb25DaGFuZ2VkKTsKLX0KLQotdm9pZCBHcmFw
aGljc0xheWVyTWFjOjpzZXRBbmNob3JQb2ludChjb25zdCBGbG9hdFBvaW50M0QmIHBvaW50KQot
ewotICAgIGlmIChwb2ludCA9PSBtX2FuY2hvclBvaW50KQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBHcmFwaGljc0xheWVyOjpzZXRBbmNob3JQb2ludChwb2ludCk7Ci0gICAgbm90ZUxheWVyUHJv
cGVydHlDaGFuZ2VkKEFuY2hvclBvaW50Q2hhbmdlZCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXll
ck1hYzo6c2V0U2l6ZShjb25zdCBGbG9hdFNpemUmIHNpemUpCi17Ci0gICAgaWYgKHNpemUgPT0g
bV9zaXplKQotICAgICAgICByZXR1cm47Ci0KLSAgICBHcmFwaGljc0xheWVyOjpzZXRTaXplKHNp
emUpOwotICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChTaXplQ2hhbmdlZCk7Ci19Ci0KLXZv
aWQgR3JhcGhpY3NMYXllck1hYzo6c2V0VHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0
cml4JiB0KQotewotICAgIGlmICh0ID09IG1fdHJhbnNmb3JtKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBHcmFwaGljc0xheWVyOjpzZXRUcmFuc2Zvcm0odCk7Ci0gICAgbm90ZUxheWVyUHJvcGVy
dHlDaGFuZ2VkKFRyYW5zZm9ybUNoYW5nZWQpOwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6
OnNldENoaWxkcmVuVHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0KQotewot
ICAgIGlmICh0ID09IG1fY2hpbGRyZW5UcmFuc2Zvcm0pCi0gICAgICAgIHJldHVybjsKLQotICAg
IEdyYXBoaWNzTGF5ZXI6OnNldENoaWxkcmVuVHJhbnNmb3JtKHQpOwotICAgIG5vdGVMYXllclBy
b3BlcnR5Q2hhbmdlZChDaGlsZHJlblRyYW5zZm9ybUNoYW5nZWQpOwotfQotCi12b2lkIEdyYXBo
aWNzTGF5ZXJNYWM6Om1vdmVPckNvcHlMYXllckFuaW1hdGlvbihNb3ZlT3JDb3B5IG9wZXJhdGlv
biwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25JZGVudGlmaWVyLCBDQUxheWVyICpmcm9tTGF5ZXIs
IENBTGF5ZXIgKnRvTGF5ZXIpCi17Ci0gICAgTlNTdHJpbmcgKmFuaW1hdGlvbklEID0gYW5pbWF0
aW9uSWRlbnRpZmllcjsKLSAgICBDQUFuaW1hdGlvbiAqYW5pbSA9IFtmcm9tTGF5ZXIgYW5pbWF0
aW9uRm9yS2V5OmFuaW1hdGlvbklEXTsKLSAgICBpZiAoIWFuaW0pCi0gICAgICAgIHJldHVybjsK
LQotICAgIHN3aXRjaCAob3BlcmF0aW9uKSB7Ci0gICAgICAgIGNhc2UgTW92ZToKLSAgICAgICAg
ICAgIFthbmltIHJldGFpbl07Ci0gICAgICAgICAgICBbZnJvbUxheWVyIHJlbW92ZUFuaW1hdGlv
bkZvcktleTphbmltYXRpb25JRF07Ci0gICAgICAgICAgICBbdG9MYXllciBhZGRBbmltYXRpb246
YW5pbSBmb3JLZXk6YW5pbWF0aW9uSURdOwotICAgICAgICAgICAgW2FuaW0gcmVsZWFzZV07Ci0g
ICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIENvcHk6Ci0gICAgICAgICAgICBbdG9M
YXllciBhZGRBbmltYXRpb246YW5pbSBmb3JLZXk6YW5pbWF0aW9uSURdOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgfQotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6Om1vdmVPckNvcHlBbmlt
YXRpb25zRm9yUHJvcGVydHkoTW92ZU9yQ29weSBvcGVyYXRpb24sIEFuaW1hdGVkUHJvcGVydHlJ
RCBwcm9wZXJ0eSwgQ0FMYXllciAqZnJvbUxheWVyLCBDQUxheWVyICp0b0xheWVyKQotewotICAg
IC8vIExvb2sgZm9yIHJ1bm5pbmcgYW5pbWF0aW9ucyBhZmZlY3RpbmcgdGhpcyBwcm9wZXJ0eS4K
LSAgICBBbmltYXRpb25zTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBtX3J1bm5pbmdBbmltYXRp
b25zLmVuZCgpOwotICAgIGZvciAoQW5pbWF0aW9uc01hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBt
X3J1bm5pbmdBbmltYXRpb25zLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBj
b25zdCBWZWN0b3I8TGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbj4mIHByb3BlcnR5QW5pbWF0aW9ucyA9
IGl0LT5zZWNvbmQ7Ci0gICAgICAgIHNpemVfdCBudW1BbmltYXRpb25zID0gcHJvcGVydHlBbmlt
YXRpb25zLnNpemUoKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1BbmltYXRp
b25zOyArK2kpIHsKLSAgICAgICAgICAgIGNvbnN0IExheWVyUHJvcGVydHlBbmltYXRpb24mIGN1
cnJBbmltYXRpb24gPSBwcm9wZXJ0eUFuaW1hdGlvbnNbaV07Ci0gICAgICAgICAgICBpZiAoY3Vy
ckFuaW1hdGlvbi5tX3Byb3BlcnR5ID09IHByb3BlcnR5KQotICAgICAgICAgICAgICAgIG1vdmVP
ckNvcHlMYXllckFuaW1hdGlvbihvcGVyYXRpb24sIGFuaW1hdGlvbklkZW50aWZpZXIoY3VyckFu
aW1hdGlvbi5tX25hbWUsIGN1cnJBbmltYXRpb24ubV9wcm9wZXJ0eSwgY3VyckFuaW1hdGlvbi5t
X2luZGV4KSwgZnJvbUxheWVyLCB0b0xheWVyKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotdm9p
ZCBHcmFwaGljc0xheWVyTWFjOjpzZXRQcmVzZXJ2ZXMzRChib29sIHByZXNlcnZlczNEKQotewot
ICAgIGlmIChwcmVzZXJ2ZXMzRCA9PSBtX3ByZXNlcnZlczNEKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBHcmFwaGljc0xheWVyOjpzZXRQcmVzZXJ2ZXMzRChwcmVzZXJ2ZXMzRCk7Ci0gICAgbm90
ZUxheWVyUHJvcGVydHlDaGFuZ2VkKFByZXNlcnZlczNEQ2hhbmdlZCk7Ci19Ci0KLXZvaWQgR3Jh
cGhpY3NMYXllck1hYzo6c2V0TWFza3NUb0JvdW5kcyhib29sIG1hc2tzVG9Cb3VuZHMpCi17Ci0g
ICAgaWYgKG1hc2tzVG9Cb3VuZHMgPT0gbV9tYXNrc1RvQm91bmRzKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBHcmFwaGljc0xheWVyOjpzZXRNYXNrc1RvQm91bmRzKG1hc2tzVG9Cb3VuZHMpOwot
ICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChNYXNrc1RvQm91bmRzQ2hhbmdlZCk7Ci19Ci0K
LXZvaWQgR3JhcGhpY3NMYXllck1hYzo6c2V0RHJhd3NDb250ZW50KGJvb2wgZHJhd3NDb250ZW50
KQotewotICAgIGlmIChkcmF3c0NvbnRlbnQgPT0gbV9kcmF3c0NvbnRlbnQpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIEdyYXBoaWNzTGF5ZXI6OnNldERyYXdzQ29udGVudChkcmF3c0NvbnRlbnQp
OwotICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChEcmF3c0NvbnRlbnRDaGFuZ2VkKTsKLX0K
LQotdm9pZCBHcmFwaGljc0xheWVyTWFjOjpzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3Im
IGNvbG9yKQotewotICAgIGlmIChtX2JhY2tncm91bmRDb2xvclNldCAmJiBtX2JhY2tncm91bmRD
b2xvciA9PSBjb2xvcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgR3JhcGhpY3NMYXllcjo6c2V0
QmFja2dyb3VuZENvbG9yKGNvbG9yKTsKLQotICAgIG1fY29udGVudHNMYXllckhhc0JhY2tncm91
bmRDb2xvciA9IHRydWU7Ci0gICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKEJhY2tncm91bmRD
b2xvckNoYW5nZWQpOwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OmNsZWFyQmFja2dyb3Vu
ZENvbG9yKCkKLXsKLSAgICBpZiAoIW1fYmFja2dyb3VuZENvbG9yU2V0KQotICAgICAgICByZXR1
cm47Ci0KLSAgICBHcmFwaGljc0xheWVyOjpjbGVhckJhY2tncm91bmRDb2xvcigpOwotICAgIG1f
Y29udGVudHNMYXllckhhc0JhY2tncm91bmRDb2xvciA9IGZhbHNlOwotICAgIG5vdGVMYXllclBy
b3BlcnR5Q2hhbmdlZChCYWNrZ3JvdW5kQ29sb3JDaGFuZ2VkKTsKLX0KLQotdm9pZCBHcmFwaGlj
c0xheWVyTWFjOjpzZXRDb250ZW50c09wYXF1ZShib29sIG9wYXF1ZSkKLXsKLSAgICBpZiAobV9j
b250ZW50c09wYXF1ZSA9PSBvcGFxdWUpCi0gICAgICAgIHJldHVybjsKLQotICAgIEdyYXBoaWNz
TGF5ZXI6OnNldENvbnRlbnRzT3BhcXVlKG9wYXF1ZSk7Ci0gICAgbm90ZUxheWVyUHJvcGVydHlD
aGFuZ2VkKENvbnRlbnRzT3BhcXVlQ2hhbmdlZCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1h
Yzo6c2V0QmFja2ZhY2VWaXNpYmlsaXR5KGJvb2wgdmlzaWJsZSkKLXsKLSAgICBpZiAobV9iYWNr
ZmFjZVZpc2liaWxpdHkgPT0gdmlzaWJsZSkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIEdy
YXBoaWNzTGF5ZXI6OnNldEJhY2tmYWNlVmlzaWJpbGl0eSh2aXNpYmxlKTsKLSAgICBub3RlTGF5
ZXJQcm9wZXJ0eUNoYW5nZWQoQmFja2ZhY2VWaXNpYmlsaXR5Q2hhbmdlZCk7Ci19Ci0KLXZvaWQg
R3JhcGhpY3NMYXllck1hYzo6c2V0T3BhY2l0eShmbG9hdCBvcGFjaXR5KQotewotICAgIGZsb2F0
IGNsYW1wZWRPcGFjaXR5ID0gbWF4KDAuMGYsIG1pbihvcGFjaXR5LCAxLjBmKSk7Ci0KLSAgICBp
ZiAoY2xhbXBlZE9wYWNpdHkgPT0gbV9vcGFjaXR5KQotICAgICAgICByZXR1cm47Ci0KLSAgICBH
cmFwaGljc0xheWVyOjpzZXRPcGFjaXR5KGNsYW1wZWRPcGFjaXR5KTsKLSAgICBub3RlTGF5ZXJQ
cm9wZXJ0eUNoYW5nZWQoT3BhY2l0eUNoYW5nZWQpOwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJN
YWM6OnNldE5lZWRzRGlzcGxheSgpCi17Ci0gICAgRmxvYXRSZWN0IGh1Z2VSZWN0KC1udW1lcmlj
X2xpbWl0czxmbG9hdD46Om1heCgpIC8gMiwgLW51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4KCkg
LyAyLAotICAgICAgICAgICAgICAgICAgICAgICBudW1lcmljX2xpbWl0czxmbG9hdD46Om1heCgp
LCBudW1lcmljX2xpbWl0czxmbG9hdD46Om1heCgpKTsKLQotICAgIHNldE5lZWRzRGlzcGxheUlu
UmVjdChodWdlUmVjdCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6c2V0TmVlZHNEaXNw
bGF5SW5SZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKLXsKLSAgICBpZiAoIWRyYXdzQ29udGVu
dCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBjb25zdCBzaXplX3QgbWF4RGlydHlSZWN0cyA9
IDMyOwotICAgIAotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9kaXJ0eVJlY3RzLnNpemUo
KTsgKytpKSB7Ci0gICAgICAgIGlmIChtX2RpcnR5UmVjdHNbaV0uY29udGFpbnMocmVjdCkpCi0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAotICAgIGlmIChtX2RpcnR5UmVjdHMuc2l6
ZSgpIDwgbWF4RGlydHlSZWN0cykKLSAgICAgICAgbV9kaXJ0eVJlY3RzLmFwcGVuZChyZWN0KTsK
LSAgICBlbHNlCi0gICAgICAgIG1fZGlydHlSZWN0c1swXS51bml0ZShyZWN0KTsKLQotICAgIG5v
dGVMYXllclByb3BlcnR5Q2hhbmdlZChEaXJ0eVJlY3RzQ2hhbmdlZCk7Ci19Ci0KLXZvaWQgR3Jh
cGhpY3NMYXllck1hYzo6c2V0Q29udGVudHNOZWVkc0Rpc3BsYXkoKQotewotICAgIG5vdGVMYXll
clByb3BlcnR5Q2hhbmdlZChDb250ZW50c05lZWRzRGlzcGxheSk7Ci19Ci0KLXZvaWQgR3JhcGhp
Y3NMYXllck1hYzo6c2V0Q29udGVudHNSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpCi17Ci0gICAg
aWYgKHJlY3QgPT0gbV9jb250ZW50c1JlY3QpCi0gICAgICAgIHJldHVybjsKLQotICAgIEdyYXBo
aWNzTGF5ZXI6OnNldENvbnRlbnRzUmVjdChyZWN0KTsKLSAgICBub3RlTGF5ZXJQcm9wZXJ0eUNo
YW5nZWQoQ29udGVudHNSZWN0Q2hhbmdlZCk7Ci19Ci0KLWJvb2wgR3JhcGhpY3NMYXllck1hYzo6
YWRkQW5pbWF0aW9uKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3QsIGNvbnN0IElu
dFNpemUmIGJveFNpemUsIGNvbnN0IEFuaW1hdGlvbiogYW5pbSwgY29uc3QgU3RyaW5nJiBhbmlt
YXRpb25OYW1lLCBkb3VibGUgdGltZU9mZnNldCkKLXsKLSAgICBBU1NFUlQoIWFuaW1hdGlvbk5h
bWUuaXNFbXB0eSgpKTsKLQotICAgIGlmIChmb3JjZVNvZnR3YXJlQW5pbWF0aW9uKCkgfHwgIWFu
aW0gfHwgYW5pbS0+aXNFbXB0eU9yWmVyb0R1cmF0aW9uKCkgfHwgdmFsdWVMaXN0LnNpemUoKSA8
IDIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotI2lmICFIQVZFX01PREVSTl9RVUFSVFpDT1JF
Ci0gICAgLy8gT2xkZXIgdmVyc2lvbnMgb2YgUXVhcnR6Q29yZSBkbyBub3QgaGFuZGxlIG9wYWNp
dHkgaW4gdHJhbnNmb3JtIGxheWVycyBwcm9wZXJseSwgc28gd2Ugd2lsbAotICAgIC8vIGFsd2F5
cyBkbyBzb2Z0d2FyZSBhbmltYXRpb24gaW4gdGhhdCBjYXNlLgotICAgIGlmICh2YWx1ZUxpc3Qu
cHJvcGVydHkoKSA9PSBBbmltYXRlZFByb3BlcnR5T3BhY2l0eSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotI2VuZGlmCi0KLSAgICAvLyBDb3JlQW5pbWF0aW9uIGRvZXMgbm90IGhhbmRsZSB0aGUg
c3RlcHMoKSB0aW1pbmcgZnVuY3Rpb24uIEZhbGwgYmFjawotICAgIC8vIHRvIHNvZnR3YXJlIGFu
aW1hdGlvbiBpbiB0aGF0IGNhc2UuCi0gICAgaWYgKGFuaW1hdGlvbkhhc1N0ZXBzVGltaW5nRnVu
Y3Rpb24odmFsdWVMaXN0LCBhbmltKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgYm9v
bCBjcmVhdGVkQW5pbWF0aW9ucyA9IGZhbHNlOwotICAgIGlmICh2YWx1ZUxpc3QucHJvcGVydHko
KSA9PSBBbmltYXRlZFByb3BlcnR5V2Via2l0VHJhbnNmb3JtKQotICAgICAgICBjcmVhdGVkQW5p
bWF0aW9ucyA9IGNyZWF0ZVRyYW5zZm9ybUFuaW1hdGlvbnNGcm9tS2V5ZnJhbWVzKHZhbHVlTGlz
dCwgYW5pbSwgYW5pbWF0aW9uTmFtZSwgdGltZU9mZnNldCwgYm94U2l6ZSk7Ci0gICAgZWxzZQot
ICAgICAgICBjcmVhdGVkQW5pbWF0aW9ucyA9IGNyZWF0ZUFuaW1hdGlvbkZyb21LZXlmcmFtZXMo
dmFsdWVMaXN0LCBhbmltLCBhbmltYXRpb25OYW1lLCB0aW1lT2Zmc2V0KTsKLQotICAgIGlmIChj
cmVhdGVkQW5pbWF0aW9ucykKLSAgICAgICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKEFuaW1h
dGlvbkNoYW5nZWQpOwotICAgICAgICAKLSAgICByZXR1cm4gY3JlYXRlZEFuaW1hdGlvbnM7Ci19
Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6cGF1c2VBbmltYXRpb24oY29uc3QgU3RyaW5nJiBh
bmltYXRpb25OYW1lLCBkb3VibGUgdGltZU9mZnNldCkKLXsKLSAgICBpZiAoIWFuaW1hdGlvbklz
UnVubmluZyhhbmltYXRpb25OYW1lKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQW5pbWF0aW9u
c1RvUHJvY2Vzc01hcDo6aXRlcmF0b3IgaXQgPSBtX2FuaW1hdGlvbnNUb1Byb2Nlc3MuZmluZChh
bmltYXRpb25OYW1lKTsKLSAgICBpZiAoaXQgIT0gbV9hbmltYXRpb25zVG9Qcm9jZXNzLmVuZCgp
KSB7Ci0gICAgICAgIEFuaW1hdGlvblByb2Nlc3NpbmdBY3Rpb24mIHByb2Nlc3NpbmdJbmZvID0g
aXQtPnNlY29uZDsKLSAgICAgICAgLy8gSWYgYW4gYW5pbWF0aW9uIGlzIHNjaGVkdWxlZCB0byBi
ZSByZW1vdmVkLCBkb24ndCBjaGFuZ2UgdGhlIHJlbW92ZSB0byBhIHBhdXNlLgotICAgICAgICBp
ZiAocHJvY2Vzc2luZ0luZm8uYWN0aW9uICE9IFJlbW92ZSkKLSAgICAgICAgICAgIHByb2Nlc3Np
bmdJbmZvLmFjdGlvbiA9IFBhdXNlOwotICAgIH0gZWxzZQotICAgICAgICBtX2FuaW1hdGlvbnNU
b1Byb2Nlc3MuYWRkKGFuaW1hdGlvbk5hbWUsIEFuaW1hdGlvblByb2Nlc3NpbmdBY3Rpb24oUGF1
c2UsIHRpbWVPZmZzZXQpKTsKLQotICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChBbmltYXRp
b25DaGFuZ2VkKTsKLX0KLQotdm9pZCBHcmFwaGljc0xheWVyTWFjOjpyZW1vdmVBbmltYXRpb24o
Y29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lKQotewotICAgIGlmICghYW5pbWF0aW9uSXNSdW5u
aW5nKGFuaW1hdGlvbk5hbWUpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2FuaW1hdGlvbnNU
b1Byb2Nlc3MuYWRkKGFuaW1hdGlvbk5hbWUsIEFuaW1hdGlvblByb2Nlc3NpbmdBY3Rpb24oUmVt
b3ZlKSk7Ci0gICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKEFuaW1hdGlvbkNoYW5nZWQpOwot
fQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OmFuaW1hdGlvbkRpZFN0YXJ0KENBQW5pbWF0aW9u
KiBjYUFuaW1hdGlvbikKLXsKLSAgICBib29sIGhhZE5vblplcm9CZWdpblRpbWUgPSBbW2NhQW5p
bWF0aW9uIHZhbHVlRm9yS2V5OldlYktpdEFuaW1hdGlvbkJlZ2luVGltZVNldEtleV0gYm9vbFZh
bHVlXTsKLQotICAgIGRvdWJsZSBzdGFydFRpbWU7Ci0gICAgaWYgKGhhZE5vblplcm9CZWdpblRp
bWUpIHsKLSAgICAgICAgLy8gV2UgZG9uJ3Qga25vdyB3aGF0IHRpbWUgQ0EgdXNlZCB0byBjb21t
aXQgdGhlIGFuaW1hdGlvbiwgc28ganVzdCB1c2UgdGhlIGN1cnJlbnQgdGltZQotICAgICAgICAv
LyAoZXZlbiB0aG91Z2ggdGhpcyB3aWxsIGJlIHNsaWdodGx5IG9mZikuCi0gICAgICAgIHN0YXJ0
VGltZSA9IFdlYkNvcmU6Om1lZGlhVGltZVRvQ3VycmVudFRpbWUoQ0FDdXJyZW50TWVkaWFUaW1l
KCkpOwotICAgIH0gZWxzZQotICAgICAgICBzdGFydFRpbWUgPSBXZWJDb3JlOjptZWRpYVRpbWVU
b0N1cnJlbnRUaW1lKFtjYUFuaW1hdGlvbiBiZWdpblRpbWVdKTsKLQotICAgIGlmIChtX2NsaWVu
dCkKLSAgICAgICAgbV9jbGllbnQtPm5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQodGhpcywgc3RhcnRU
aW1lKTsKLX0KLQotdm9pZCBHcmFwaGljc0xheWVyTWFjOjpzZXRDb250ZW50c1RvSW1hZ2UoSW1h
Z2UqIGltYWdlKQotewotICAgIGlmIChpbWFnZSkgewotICAgICAgICBDR0ltYWdlUmVmIG5ld0lt
YWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7Ci0gICAgICAgIGlmICgh
bmV3SW1hZ2UpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgLy8gQ2hlY2sgdG8gc2Vl
IGlmIHRoZSBpbWFnZSBjaGFuZ2VkOyB3ZSBoYXZlIHRvIGRvIHRoaXMgYmVjYXVzZSB0aGUgY2Fs
bCB0bwotICAgICAgICAvLyBDR0ltYWdlQ3JlYXRlQ29weVdpdGhDb2xvclNwYWNlKCkgYmVsb3cg
Y2FuIGNyZWF0ZSBhIG5ldyBpbWFnZSBldmVyeSB0aW1lLgotICAgICAgICBpZiAobV91bmNvcnJl
Y3RlZENvbnRlbnRzSW1hZ2UgJiYgbV91bmNvcnJlY3RlZENvbnRlbnRzSW1hZ2UuZ2V0KCkgPT0g
bmV3SW1hZ2UpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIAotICAgICAgICBtX3VuY29y
cmVjdGVkQ29udGVudHNJbWFnZSA9IG5ld0ltYWdlOwotICAgICAgICBtX3BlbmRpbmdDb250ZW50
c0ltYWdlID0gbmV3SW1hZ2U7Ci0gICAgICAgIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlID0g
Q0dJbWFnZUdldENvbG9yU3BhY2UobV9wZW5kaW5nQ29udGVudHNJbWFnZS5nZXQoKSk7Ci0KLSAg
ICAgICAgc3RhdGljIENHQ29sb3JTcGFjZVJlZiBkZXZpY2VSR0IgPSBDR0NvbG9yU3BhY2VDcmVh
dGVEZXZpY2VSR0IoKTsKLSAgICAgICAgaWYgKGNvbG9yU3BhY2UgJiYgQ0ZFcXVhbChjb2xvclNw
YWNlLCBkZXZpY2VSR0IpKSB7Ci0gICAgICAgICAgICAvLyBDb3JlR3JhcGhpY3MgcmVuZGVycyBp
bWFnZXMgdGFnZ2VkIHdpdGggRGV2aWNlUkdCIHVzaW5nIHRoZSBjb2xvciBzcGFjZSBvZiB0aGUg
bWFpbiBkaXNwbGF5LiBXaGVuIHdlIGhhbmQgc3VjaAotICAgICAgICAgICAgLy8gaW1hZ2VzIHRv
IENBIHdlIG5lZWQgdG8gdGFnIHRoZW0gc2ltaWxhcmx5IHNvIENBIHJlbmRlcmluZyBtYXRjaGVz
IENHIHJlbmRlcmluZy4KLSAgICAgICAgICAgIHN0YXRpYyBDR0NvbG9yU3BhY2VSZWYgZ2VuZXJp
Y1JHQiA9IENHRGlzcGxheUNvcHlDb2xvclNwYWNlKGtDR0RpcmVjdE1haW5EaXNwbGF5KTsKLSAg
ICAgICAgICAgIG1fcGVuZGluZ0NvbnRlbnRzSW1hZ2UuYWRvcHRDRihDR0ltYWdlQ3JlYXRlQ29w
eVdpdGhDb2xvclNwYWNlKG1fcGVuZGluZ0NvbnRlbnRzSW1hZ2UuZ2V0KCksIGdlbmVyaWNSR0Ip
KTsKLSAgICAgICAgfQotICAgICAgICBtX2NvbnRlbnRzTGF5ZXJQdXJwb3NlID0gQ29udGVudHNM
YXllckZvckltYWdlOwotICAgICAgICBpZiAoIW1fY29udGVudHNMYXllcikKLSAgICAgICAgICAg
IG5vdGVTdWJsYXllcnNDaGFuZ2VkKCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgbV91bmNvcnJl
Y3RlZENvbnRlbnRzSW1hZ2UgPSAwOwotICAgICAgICBtX3BlbmRpbmdDb250ZW50c0ltYWdlID0g
MDsKLSAgICAgICAgbV9jb250ZW50c0xheWVyUHVycG9zZSA9IE5vQ29udGVudHNMYXllcjsKLSAg
ICAgICAgaWYgKG1fY29udGVudHNMYXllcikKLSAgICAgICAgICAgIG5vdGVTdWJsYXllcnNDaGFu
Z2VkKCk7Ci0gICAgfQotCi0gICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKENvbnRlbnRzSW1h
Z2VDaGFuZ2VkKTsKLX0KLQotdm9pZCBHcmFwaGljc0xheWVyTWFjOjpzZXRDb250ZW50c1RvTWVk
aWEoUGxhdGZvcm1MYXllciogbWVkaWFMYXllcikKLXsKLSAgICBpZiAobWVkaWFMYXllciA9PSBt
X2NvbnRlbnRzTGF5ZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fY29udGVudHNMYXllciA9
IG1lZGlhTGF5ZXI7Ci0gICAgbV9jb250ZW50c0xheWVyUHVycG9zZSA9IG1lZGlhTGF5ZXIgPyBD
b250ZW50c0xheWVyRm9yTWVkaWEgOiBOb0NvbnRlbnRzTGF5ZXI7Ci0KLSAgICBub3RlU3VibGF5
ZXJzQ2hhbmdlZCgpOwotICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChDb250ZW50c01lZGlh
TGF5ZXJDaGFuZ2VkKTsKLX0KLQotdm9pZCBHcmFwaGljc0xheWVyTWFjOjpkaWREaXNwbGF5KFBs
YXRmb3JtTGF5ZXIqIGxheWVyKQotewotICAgIENBTGF5ZXIqIHNvdXJjZUxheWVyOwotICAgIExh
eWVyTWFwKiBsYXllckNsb25lTWFwOwotCi0gICAgaWYgKGxheWVyID09IG1fbGF5ZXIpIHsKLSAg
ICAgICAgc291cmNlTGF5ZXIgPSBtX2xheWVyLmdldCgpOwotICAgICAgICBsYXllckNsb25lTWFw
ID0gbV9sYXllckNsb25lcy5nZXQoKTsKLSAgICB9IGVsc2UgaWYgKGxheWVyID09IG1fY29udGVu
dHNMYXllcikgewotICAgICAgICBzb3VyY2VMYXllciA9IG1fY29udGVudHNMYXllci5nZXQoKTsK
LSAgICAgICAgbGF5ZXJDbG9uZU1hcCA9IG1fY29udGVudHNMYXllckNsb25lcy5nZXQoKTsKLSAg
ICB9IGVsc2UKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKGxheWVyQ2xvbmVNYXApIHsKLSAg
ICAgICAgTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGxheWVyQ2xvbmVNYXAtPmVuZCgp
OwotICAgICAgICBmb3IgKExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGxheWVyQ2xvbmVN
YXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICAgICAgQ0FMYXllciAqY3Vy
ckNsb25lID0gaXQtPnNlY29uZC5nZXQoKTsKLSAgICAgICAgICAgIGlmICghY3VyckNsb25lKQot
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICBpZiAoW2N1cnJDbG9uZSBj
b250ZW50c10gIT0gW3NvdXJjZUxheWVyIGNvbnRlbnRzXSkKLSAgICAgICAgICAgICAgICBbY3Vy
ckNsb25lIHNldENvbnRlbnRzOltzb3VyY2VMYXllciBjb250ZW50c11dOwotICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgIFtjdXJyQ2xvbmUgc2V0Q29udGVudHNDaGFuZ2VkXTsKLSAg
ICAgICAgfQotICAgIH0KLX0KLQotdm9pZCBHcmFwaGljc0xheWVyTWFjOjpzeW5jQ29tcG9zaXRp
bmdTdGF0ZSgpCi17Ci0gICAgcmVjdXJzaXZlQ29tbWl0Q2hhbmdlcygpOwotfQotCi12b2lkIEdy
YXBoaWNzTGF5ZXJNYWM6OnN5bmNDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSgpCi17
Ci0gICAgY29tbWl0TGF5ZXJDaGFuZ2VzQmVmb3JlU3VibGF5ZXJzKCk7Ci0gICAgY29tbWl0TGF5
ZXJDaGFuZ2VzQWZ0ZXJTdWJsYXllcnMoKTsKLX0KLQotdm9pZCBHcmFwaGljc0xheWVyTWFjOjpy
ZWN1cnNpdmVDb21taXRDaGFuZ2VzKCkKLXsKLSAgICBjb21taXRMYXllckNoYW5nZXNCZWZvcmVT
dWJsYXllcnMoKTsKLQotICAgIGlmIChtX21hc2tMYXllcikKLSAgICAgICAgc3RhdGljX2Nhc3Q8
R3JhcGhpY3NMYXllck1hYyo+KG1fbWFza0xheWVyKS0+Y29tbWl0TGF5ZXJDaGFuZ2VzQmVmb3Jl
U3VibGF5ZXJzKCk7Ci0KLSAgICBjb25zdCBWZWN0b3I8R3JhcGhpY3NMYXllcio+JiBjaGlsZExh
eWVycyA9IGNoaWxkcmVuKCk7Ci0gICAgc2l6ZV90IG51bUNoaWxkcmVuID0gY2hpbGRMYXllcnMu
c2l6ZSgpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtQ2hpbGRyZW47ICsraSkgewot
ICAgICAgICBHcmFwaGljc0xheWVyTWFjKiBjdXJDaGlsZCA9IHN0YXRpY19jYXN0PEdyYXBoaWNz
TGF5ZXJNYWMqPihjaGlsZExheWVyc1tpXSk7Ci0gICAgICAgIGN1ckNoaWxkLT5yZWN1cnNpdmVD
b21taXRDaGFuZ2VzKCk7Ci0gICAgfQotCi0gICAgaWYgKG1fcmVwbGljYUxheWVyKQotICAgICAg
ICBzdGF0aWNfY2FzdDxHcmFwaGljc0xheWVyTWFjKj4obV9yZXBsaWNhTGF5ZXIpLT5yZWN1cnNp
dmVDb21taXRDaGFuZ2VzKCk7Ci0KLSAgICBpZiAobV9tYXNrTGF5ZXIpCi0gICAgICAgIHN0YXRp
Y19jYXN0PEdyYXBoaWNzTGF5ZXJNYWMqPihtX21hc2tMYXllciktPmNvbW1pdExheWVyQ2hhbmdl
c0FmdGVyU3VibGF5ZXJzKCk7Ci0KLSAgICBjb21taXRMYXllckNoYW5nZXNBZnRlclN1YmxheWVy
cygpOwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OmNvbW1pdExheWVyQ2hhbmdlc0JlZm9y
ZVN1YmxheWVycygpCi17Ci0gICAgaWYgKCFtX3VuY29tbWl0dGVkQ2hhbmdlcykKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICAvLyBOZWVk
IHRvIGhhbmRsZSBQcmVzZXJ2ZXMzRENoYW5nZWQgZmlyc3QsIGJlY2F1c2UgaXQgYWZmZWN0cyB3
aGljaCBsYXllcnMgc3Vic2VxdWVudCBwcm9wZXJ0aWVzIGFyZSBhcHBsaWVkIHRvCi0gICAgaWYg
KG1fdW5jb21taXR0ZWRDaGFuZ2VzICYgKFByZXNlcnZlczNEQ2hhbmdlZCB8IFJlcGxpY2F0ZWRM
YXllckNoYW5nZWQpKQotICAgICAgICB1cGRhdGVTdHJ1Y3R1cmFsTGF5ZXIoKTsKLQotICAgIGlm
IChtX3VuY29tbWl0dGVkQ2hhbmdlcyAmIE5hbWVDaGFuZ2VkKQotICAgICAgICB1cGRhdGVMYXll
ck5hbWVzKCk7Ci0KLSAgICBpZiAobV91bmNvbW1pdHRlZENoYW5nZXMgJiBDb250ZW50c0ltYWdl
Q2hhbmdlZCkgLy8gTmVlZHMgdG8gaGFwcGVuIGJlZm9yZSBDaGlsZHJlbkNoYW5nZWQKLSAgICAg
ICAgdXBkYXRlQ29udGVudHNJbWFnZSgpOwotICAgICAgICAKLSAgICBpZiAobV91bmNvbW1pdHRl
ZENoYW5nZXMgJiBDb250ZW50c01lZGlhTGF5ZXJDaGFuZ2VkKSAvLyBOZWVkcyB0byBoYXBwZW4g
YmVmb3JlIENoaWxkcmVuQ2hhbmdlZAotICAgICAgICB1cGRhdGVDb250ZW50c01lZGlhTGF5ZXIo
KTsKLSAgICAKLSAgICBpZiAobV91bmNvbW1pdHRlZENoYW5nZXMgJiBDb250ZW50c0NhbnZhc0xh
eWVyQ2hhbmdlZCkgLy8gTmVlZHMgdG8gaGFwcGVuIGJlZm9yZSBDaGlsZHJlbkNoYW5nZWQKLSAg
ICAgICAgdXBkYXRlQ29udGVudHNDYW52YXNMYXllcigpOwotICAgIAotICAgIGlmIChtX3VuY29t
bWl0dGVkQ2hhbmdlcyAmIEJhY2tncm91bmRDb2xvckNoYW5nZWQpICAvLyBOZWVkcyB0byBoYXBw
ZW4gYmVmb3JlIENoaWxkcmVuQ2hhbmdlZCwgYW5kIGFmdGVyIHVwZGF0aW5nIGltYWdlIG9yIHZp
ZGVvCi0gICAgICAgIHVwZGF0ZUxheWVyQmFja2dyb3VuZENvbG9yKCk7Ci0KLSAgICBpZiAobV91
bmNvbW1pdHRlZENoYW5nZXMgJiBDaGlsZHJlbkNoYW5nZWQpCi0gICAgICAgIHVwZGF0ZVN1Ymxh
eWVyTGlzdCgpOwotCi0gICAgaWYgKG1fdW5jb21taXR0ZWRDaGFuZ2VzICYgUG9zaXRpb25DaGFu
Z2VkKQotICAgICAgICB1cGRhdGVMYXllclBvc2l0aW9uKCk7Ci0gICAgCi0gICAgaWYgKG1fdW5j
b21taXR0ZWRDaGFuZ2VzICYgQW5jaG9yUG9pbnRDaGFuZ2VkKQotICAgICAgICB1cGRhdGVBbmNo
b3JQb2ludCgpOwotICAgIAotICAgIGlmIChtX3VuY29tbWl0dGVkQ2hhbmdlcyAmIFNpemVDaGFu
Z2VkKQotICAgICAgICB1cGRhdGVMYXllclNpemUoKTsKLQotICAgIGlmIChtX3VuY29tbWl0dGVk
Q2hhbmdlcyAmIFRyYW5zZm9ybUNoYW5nZWQpCi0gICAgICAgIHVwZGF0ZVRyYW5zZm9ybSgpOwot
Ci0gICAgaWYgKG1fdW5jb21taXR0ZWRDaGFuZ2VzICYgQ2hpbGRyZW5UcmFuc2Zvcm1DaGFuZ2Vk
KQotICAgICAgICB1cGRhdGVDaGlsZHJlblRyYW5zZm9ybSgpOwotICAgIAotICAgIGlmIChtX3Vu
Y29tbWl0dGVkQ2hhbmdlcyAmIE1hc2tzVG9Cb3VuZHNDaGFuZ2VkKQotICAgICAgICB1cGRhdGVN
YXNrc1RvQm91bmRzKCk7Ci0gICAgCi0gICAgaWYgKG1fdW5jb21taXR0ZWRDaGFuZ2VzICYgRHJh
d3NDb250ZW50Q2hhbmdlZCkKLSAgICAgICAgdXBkYXRlTGF5ZXJEcmF3c0NvbnRlbnQoKTsKLQot
ICAgIGlmIChtX3VuY29tbWl0dGVkQ2hhbmdlcyAmIENvbnRlbnRzT3BhcXVlQ2hhbmdlZCkKLSAg
ICAgICAgdXBkYXRlQ29udGVudHNPcGFxdWUoKTsKLQotICAgIGlmIChtX3VuY29tbWl0dGVkQ2hh
bmdlcyAmIEJhY2tmYWNlVmlzaWJpbGl0eUNoYW5nZWQpCi0gICAgICAgIHVwZGF0ZUJhY2tmYWNl
VmlzaWJpbGl0eSgpOwotCi0gICAgaWYgKG1fdW5jb21taXR0ZWRDaGFuZ2VzICYgT3BhY2l0eUNo
YW5nZWQpCi0gICAgICAgIHVwZGF0ZU9wYWNpdHlPbkxheWVyKCk7Ci0gICAgCi0gICAgaWYgKG1f
dW5jb21taXR0ZWRDaGFuZ2VzICYgQW5pbWF0aW9uQ2hhbmdlZCkKLSAgICAgICAgdXBkYXRlTGF5
ZXJBbmltYXRpb25zKCk7Ci0gICAgCi0gICAgaWYgKG1fdW5jb21taXR0ZWRDaGFuZ2VzICYgRGly
dHlSZWN0c0NoYW5nZWQpCi0gICAgICAgIHJlcGFpbnRMYXllckRpcnR5UmVjdHMoKTsKLSAgICAK
LSAgICBpZiAobV91bmNvbW1pdHRlZENoYW5nZXMgJiBDb250ZW50c1JlY3RDaGFuZ2VkKQotICAg
ICAgICB1cGRhdGVDb250ZW50c1JlY3QoKTsKLQotICAgIGlmIChtX3VuY29tbWl0dGVkQ2hhbmdl
cyAmIE1hc2tMYXllckNoYW5nZWQpCi0gICAgICAgIHVwZGF0ZU1hc2tMYXllcigpOwotCi0gICAg
aWYgKG1fdW5jb21taXR0ZWRDaGFuZ2VzICYgQ29udGVudHNOZWVkc0Rpc3BsYXkpCi0gICAgICAg
IHVwZGF0ZUNvbnRlbnRzTmVlZHNEaXNwbGF5KCk7Ci0KLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENF
UFRJT05TCi19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6Y29tbWl0TGF5ZXJDaGFuZ2VzQWZ0
ZXJTdWJsYXllcnMoKQotewotICAgIGlmICghbV91bmNvbW1pdHRlZENoYW5nZXMpCi0gICAgICAg
IHJldHVybjsKLQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgaWYgKG1f
dW5jb21taXR0ZWRDaGFuZ2VzICYgUmVwbGljYXRlZExheWVyQ2hhbmdlZCkKLSAgICAgICAgdXBk
YXRlUmVwbGljYXRlZExheWVycygpOwotCi0gICAgbV91bmNvbW1pdHRlZENoYW5nZXMgPSBOb0No
YW5nZTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi19Ci0KLXZvaWQgR3JhcGhpY3NM
YXllck1hYzo6dXBkYXRlTGF5ZXJOYW1lcygpCi17Ci0gICAgc3dpdGNoIChzdHJ1Y3R1cmFsTGF5
ZXJQdXJwb3NlKCkpIHsKLSAgICAgICAgY2FzZSBTdHJ1Y3R1cmFsTGF5ZXJGb3JQcmVzZXJ2ZXMz
RDoKLSAgICAgICAgICAgIFttX3N0cnVjdHVyYWxMYXllci5nZXQoKSBzZXROYW1lOigiVHJhbnNm
b3JtIGxheWVyICIgKyBuYW1lKCkpXTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNl
IFN0cnVjdHVyYWxMYXllckZvclJlcGxpY2FGbGF0dGVuaW5nOgotICAgICAgICAgICAgW21fc3Ry
dWN0dXJhbExheWVyLmdldCgpIHNldE5hbWU6KCJSZXBsaWNhIGZsYXR0ZW5pbmcgbGF5ZXIgIiAr
IG5hbWUoKSldOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTm9TdHJ1Y3R1cmFs
TGF5ZXI6Ci0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgW21fbGF5ZXIuZ2V0KCkgc2V0
TmFtZTpuYW1lKCldOwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnVwZGF0ZVN1YmxheWVy
TGlzdCgpCi17Ci0gICAgTlNNdXRhYmxlQXJyYXkqIG5ld1N1YmxheWVycyA9IG5pbDsKLQotICAg
IGNvbnN0IFZlY3RvcjxHcmFwaGljc0xheWVyKj4mIGNoaWxkTGF5ZXJzID0gY2hpbGRyZW4oKTsK
LQotICAgIGlmIChtX3N0cnVjdHVyYWxMYXllciB8fCBtX2NvbnRlbnRzTGF5ZXIgfHwgY2hpbGRM
YXllcnMuc2l6ZSgpID4gMCkgewotICAgICAgICBuZXdTdWJsYXllcnMgPSBbW05TTXV0YWJsZUFy
cmF5IGFsbG9jXSBpbml0XTsKLQotICAgICAgICBpZiAobV9zdHJ1Y3R1cmFsTGF5ZXIpIHsKLSAg
ICAgICAgICAgIC8vIEFkZCB0aGUgcmVwbGljYSBsYXllciBmaXJzdC4KLSAgICAgICAgICAgIGlm
IChtX3JlcGxpY2FMYXllcikKLSAgICAgICAgICAgICAgICBbbmV3U3VibGF5ZXJzIGFkZE9iamVj
dDpzdGF0aWNfY2FzdDxHcmFwaGljc0xheWVyTWFjKj4obV9yZXBsaWNhTGF5ZXIpLT5wcmltYXJ5
TGF5ZXIoKV07Ci0gICAgICAgICAgICAvLyBBZGQgdGhlIHByaW1hcnkgbGF5ZXIuIEV2ZW4gaWYg
d2UgaGF2ZSBuZWdhdGl2ZSB6LW9yZGVyIGNoaWxkcmVuLCB0aGUgcHJpbWFyeSBsYXllciBhbHdh
eXMgY29tZXMgYmVoaW5kLgotICAgICAgICAgICAgW25ld1N1YmxheWVycyBhZGRPYmplY3Q6bV9s
YXllci5nZXQoKV07Ci0gICAgICAgIH0gZWxzZSBpZiAobV9jb250ZW50c0xheWVyKSB7Ci0gICAg
ICAgICAgICAvLyBGSVhNRTogYWRkIHRoZSBjb250ZW50cyBsYXllciBpbiB0aGUgY29ycmVjdCBv
cmRlciB3aXRoIG5lZ2F0aXZlIHotb3JkZXIgY2hpbGRyZW4uCi0gICAgICAgICAgICAvLyBUaGlz
IGRvZXMgbm90IGNhdXNlIHZpc2libGUgcmVuZGVyaW5nIGlzc3VlcyBiZWNhdXNlIGN1cnJlbnRs
eSBjb250ZW50cyBsYXllcnMgYXJlIG9ubHkgdXNlZAotICAgICAgICAgICAgLy8gZm9yIHJlcGxh
Y2VkIGVsZW1lbnRzIHRoYXQgZG9uJ3QgaGF2ZSBjaGlsZHJlbi4KLSAgICAgICAgICAgIFtuZXdT
dWJsYXllcnMgYWRkT2JqZWN0Om1fY29udGVudHNMYXllci5nZXQoKV07Ci0gICAgICAgIH0KLSAg
ICAgICAgCi0gICAgICAgIHNpemVfdCBudW1DaGlsZHJlbiA9IGNoaWxkTGF5ZXJzLnNpemUoKTsK
LSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1DaGlsZHJlbjsgKytpKSB7Ci0gICAg
ICAgICAgICBHcmFwaGljc0xheWVyTWFjKiBjdXJDaGlsZCA9IHN0YXRpY19jYXN0PEdyYXBoaWNz
TGF5ZXJNYWMqPihjaGlsZExheWVyc1tpXSk7Ci0gICAgICAgICAgICBDQUxheWVyICpjaGlsZExh
eWVyID0gY3VyQ2hpbGQtPmxheWVyRm9yU3VwZXJsYXllcigpOwotICAgICAgICAgICAgW25ld1N1
YmxheWVycyBhZGRPYmplY3Q6Y2hpbGRMYXllcl07Ci0gICAgICAgIH0KLQotICAgICAgICBbbmV3
U3VibGF5ZXJzIG1ha2VPYmplY3RzUGVyZm9ybVNlbGVjdG9yOkBzZWxlY3RvcihyZW1vdmVGcm9t
U3VwZXJsYXllcildOwotICAgIH0KLQotICAgIGlmIChtX3N0cnVjdHVyYWxMYXllcikgewotICAg
ICAgICBzYWZlU2V0U3VibGF5ZXJzKG1fc3RydWN0dXJhbExheWVyLmdldCgpLCBuZXdTdWJsYXll
cnMpOwotCi0gICAgICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIpIHsKLSAgICAgICAgICAgIC8vIElm
IHdlIGhhdmUgYSB0cmFuc2Zvcm0gbGF5ZXIsIHRoZW4gdGhlIGNvbnRlbnRzIGxheWVyIGlzIHBh
cmVudGVkIGluIHRoZSAKLSAgICAgICAgICAgIC8vIHByaW1hcnkgbGF5ZXIgKHdoaWNoIGlzIGl0
c2VsZiBhIGNoaWxkIG9mIHRoZSB0cmFuc2Zvcm0gbGF5ZXIpLgotICAgICAgICAgICAgc2FmZVNl
dFN1YmxheWVycyhtX2xheWVyLmdldCgpLCBuaWwpOwotICAgICAgICAgICAgW21fbGF5ZXIuZ2V0
KCkgYWRkU3VibGF5ZXI6bV9jb250ZW50c0xheWVyLmdldCgpXTsKLSAgICAgICAgfQotICAgIH0g
ZWxzZQotICAgICAgICBzYWZlU2V0U3VibGF5ZXJzKG1fbGF5ZXIuZ2V0KCksIG5ld1N1YmxheWVy
cyk7Ci0KLSAgICBbbmV3U3VibGF5ZXJzIHJlbGVhc2VdOwotfQotCi12b2lkIEdyYXBoaWNzTGF5
ZXJNYWM6OnVwZGF0ZUxheWVyUG9zaXRpb24oKQotewotICAgIEZsb2F0U2l6ZSB1c2VkU2l6ZSA9
IG1fdXNpbmdUaWxlZExheWVyID8gY29uc3RyYWluZWRTaXplKCkgOiBtX3NpemU7Ci0KLSAgICAv
LyBQb3NpdGlvbiBpcyBvZmZzZXQgb24gdGhlIGxheWVyIGJ5IHRoZSBsYXllciBhbmNob3IgcG9p
bnQuCi0gICAgQ0dQb2ludCBwb3NQb2ludCA9IENHUG9pbnRNYWtlKG1fcG9zaXRpb24ueCgpICsg
bV9hbmNob3JQb2ludC54KCkgKiB1c2VkU2l6ZS53aWR0aCgpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtX3Bvc2l0aW9uLnkoKSArIG1fYW5jaG9yUG9pbnQueSgpICogdXNl
ZFNpemUuaGVpZ2h0KCkpOwotICAgIAotICAgIFtwcmltYXJ5TGF5ZXIoKSBzZXRQb3NpdGlvbjpw
b3NQb2ludF07Ci0KLSAgICBpZiAoTGF5ZXJNYXAqIGxheWVyQ2xvbmVNYXAgPSBwcmltYXJ5TGF5
ZXJDbG9uZXMoKSkgewotICAgICAgICBMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbGF5
ZXJDbG9uZU1hcC0+ZW5kKCk7Ci0gICAgICAgIGZvciAoTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9y
IGl0ID0gbGF5ZXJDbG9uZU1hcC0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAg
ICAgICBDR1BvaW50IGNsb25lUG9zaXRpb24gPSBwb3NQb2ludDsKLSAgICAgICAgICAgIGlmICht
X3JlcGxpY2FMYXllciAmJiBpc1JlcGxpY2F0ZWRSb290Q2xvbmUoaXQtPmZpcnN0KSkgewotICAg
ICAgICAgICAgICAgIC8vIE1haW50YWluIHRoZSBzcGVjaWFsLWNhc2UgcG9zaXRpb24gZm9yIHRo
ZSByb290IG9mIGEgY2xvbmUgc3VidHJlZSwKLSAgICAgICAgICAgICAgICAvLyB3aGljaCB3ZSBz
ZXQgdXAgaW4gcmVwbGljYXRlZExheWVyUm9vdCgpLgotICAgICAgICAgICAgICAgIGNsb25lUG9z
aXRpb24gPSBwb3NpdGlvbkZvckNsb25lUm9vdExheWVyKCk7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBDQUxheWVyICpjdXJyTGF5ZXIgPSBpdC0+c2Vjb25kLmdldCgpOwotICAgICAgICAg
ICAgW2N1cnJMYXllciBzZXRQb3NpdGlvbjpjbG9uZVBvc2l0aW9uXTsKLSAgICAgICAgfQotICAg
IH0KLX0KLQotdm9pZCBHcmFwaGljc0xheWVyTWFjOjp1cGRhdGVMYXllclNpemUoKQotewotICAg
IENHUmVjdCByZWN0ID0gQ0dSZWN0TWFrZSgwLCAwLCBtX3NpemUud2lkdGgoKSwgbV9zaXplLmhl
aWdodCgpKTsKLSAgICBpZiAobV9zdHJ1Y3R1cmFsTGF5ZXIpIHsKLSAgICAgICAgW21fc3RydWN0
dXJhbExheWVyLmdldCgpIHNldEJvdW5kczpyZWN0XTsKLSAgICAgICAgCi0gICAgICAgIGlmIChM
YXllck1hcCogbGF5ZXJDbG9uZU1hcCA9IG1fc3RydWN0dXJhbExheWVyQ2xvbmVzLmdldCgpKSB7
Ci0gICAgICAgICAgICBMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbGF5ZXJDbG9uZU1h
cC0+ZW5kKCk7Ci0gICAgICAgICAgICBmb3IgKExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9
IGxheWVyQ2xvbmVNYXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgICAgICAg
ICBbaXQtPnNlY29uZC5nZXQoKSBzZXRCb3VuZHM6cmVjdF07Ci0gICAgICAgIH0KLQotICAgICAg
ICAvLyBUaGUgYW5jaG9yIG9mIHRoZSBjb250ZW50cyBsYXllciBpcyBhbHdheXMgYXQgMC41LCAw
LjUsIHNvIHRoZSBwb3NpdGlvbiBpcyBjZW50ZXItcmVsYXRpdmUuCi0gICAgICAgIENHUG9pbnQg
Y2VudGVyUG9pbnQgPSBDR1BvaW50TWFrZShtX3NpemUud2lkdGgoKSAvIDIuMGYsIG1fc2l6ZS5o
ZWlnaHQoKSAvIDIuMGYpOwotICAgICAgICBbbV9sYXllci5nZXQoKSBzZXRQb3NpdGlvbjpjZW50
ZXJQb2ludF07Ci0KLSAgICAgICAgaWYgKExheWVyTWFwKiBsYXllckNsb25lTWFwID0gbV9sYXll
ckNsb25lcy5nZXQoKSkgewotICAgICAgICAgICAgTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVu
ZCA9IGxheWVyQ2xvbmVNYXAtPmVuZCgpOwotICAgICAgICAgICAgZm9yIChMYXllck1hcDo6Y29u
c3RfaXRlcmF0b3IgaXQgPSBsYXllckNsb25lTWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQp
Ci0gICAgICAgICAgICAgICAgW2l0LT5zZWNvbmQuZ2V0KCkgc2V0UG9zaXRpb246Y2VudGVyUG9p
bnRdOwotICAgICAgICB9Ci0gICAgfQotICAgIAotICAgIGJvb2wgbmVlZFRpbGVkTGF5ZXIgPSBy
ZXF1aXJlc1RpbGVkTGF5ZXIobV9zaXplKTsKLSAgICBpZiAobmVlZFRpbGVkTGF5ZXIgIT0gbV91
c2luZ1RpbGVkTGF5ZXIpCi0gICAgICAgIHN3YXBGcm9tT3JUb1RpbGVkTGF5ZXIobmVlZFRpbGVk
TGF5ZXIpOwotICAgIAotICAgIGlmIChtX3VzaW5nVGlsZWRMYXllcikgewotICAgICAgICBGbG9h
dFNpemUgc2l6ZVRvVXNlID0gY29uc3RyYWluZWRTaXplKCk7Ci0gICAgICAgIHJlY3QgPSBDR1Jl
Y3RNYWtlKDAsIDAsIHNpemVUb1VzZS53aWR0aCgpLCBzaXplVG9Vc2UuaGVpZ2h0KCkpOwotICAg
IH0KLSAgICAKLSAgICBbbV9sYXllci5nZXQoKSBzZXRCb3VuZHM6cmVjdF07Ci0gICAgaWYgKExh
eWVyTWFwKiBsYXllckNsb25lTWFwID0gbV9sYXllckNsb25lcy5nZXQoKSkgewotICAgICAgICBM
YXllck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbGF5ZXJDbG9uZU1hcC0+ZW5kKCk7Ci0gICAg
ICAgIGZvciAoTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbGF5ZXJDbG9uZU1hcC0+YmVn
aW4oKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICAgICAgW2l0LT5zZWNvbmQuZ2V0KCkgc2V0
Qm91bmRzOnJlY3RdOwotICAgIH0KLSAgICAKLSAgICAvLyBDb250ZW50cyB0cmFuc2Zvcm0gbWF5
IGRlcGVuZCBvbiBoZWlnaHQuCi0gICAgdXBkYXRlQ29udGVudHNUcmFuc2Zvcm0oKTsKLQotICAg
IC8vIE5vdGUgdGhhdCB3ZSBkb24ndCByZXNpemUgbV9jb250ZW50c0xheWVyLiBJdCdzIHVwIHRo
ZSBjYWxsZXIgdG8gZG8gdGhhdC4KLQotICAgIC8vIGlmIHdlJ3ZlIGNoYW5nZWQgdGhlIGJvdW5k
cywgd2UgbmVlZCB0byByZWNhbGN1bGF0ZSB0aGUgcG9zaXRpb24KLSAgICAvLyBvZiB0aGUgbGF5
ZXIsIHRha2luZyBhbmNob3IgcG9pbnQgaW50byBhY2NvdW50LgotICAgIHVwZGF0ZUxheWVyUG9z
aXRpb24oKTsKLX0KLQotdm9pZCBHcmFwaGljc0xheWVyTWFjOjp1cGRhdGVBbmNob3JQb2ludCgp
Ci17Ci0gICAgW3ByaW1hcnlMYXllcigpIHNldEFuY2hvclBvaW50OkZsb2F0UG9pbnQobV9hbmNo
b3JQb2ludC54KCksIG1fYW5jaG9yUG9pbnQueSgpKV07Ci0jaWYgSEFWRV9NT0RFUk5fUVVBUlRa
Q09SRQotICAgIFtwcmltYXJ5TGF5ZXIoKSBzZXRBbmNob3JQb2ludFo6bV9hbmNob3JQb2ludC56
KCldOwotI2VuZGlmCi0KLSAgICBpZiAoTGF5ZXJNYXAqIGxheWVyQ2xvbmVNYXAgPSBwcmltYXJ5
TGF5ZXJDbG9uZXMoKSkgewotICAgICAgICBMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0g
bGF5ZXJDbG9uZU1hcC0+ZW5kKCk7Ci0gICAgICAgIGZvciAoTGF5ZXJNYXA6OmNvbnN0X2l0ZXJh
dG9yIGl0ID0gbGF5ZXJDbG9uZU1hcC0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7ICAgCi0g
ICAgICAgICAgICBDQUxheWVyICpjdXJyTGF5ZXIgPSBpdC0+c2Vjb25kLmdldCgpOwotICAgICAg
ICAgICAgW2N1cnJMYXllciBzZXRBbmNob3JQb2ludDpGbG9hdFBvaW50KG1fYW5jaG9yUG9pbnQu
eCgpLCBtX2FuY2hvclBvaW50LnkoKSldOwotI2lmIEhBVkVfTU9ERVJOX1FVQVJUWkNPUkUKLSAg
ICAgICAgICAgIFtjdXJyTGF5ZXIgc2V0QW5jaG9yUG9pbnRaOm1fYW5jaG9yUG9pbnQueigpXTsK
LSNlbmRpZgotICAgICAgICB9Ci0gICAgfQotCi0gICAgdXBkYXRlTGF5ZXJQb3NpdGlvbigpOwot
fQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnVwZGF0ZVRyYW5zZm9ybSgpCi17Ci0gICAgQ0FU
cmFuc2Zvcm0zRCB0cmFuc2Zvcm07Ci0gICAgY29weVRyYW5zZm9ybSh0cmFuc2Zvcm0sIG1fdHJh
bnNmb3JtKTsKLSAgICBbcHJpbWFyeUxheWVyKCkgc2V0VHJhbnNmb3JtOnRyYW5zZm9ybV07Ci0K
LSAgICBpZiAoTGF5ZXJNYXAqIGxheWVyQ2xvbmVNYXAgPSBwcmltYXJ5TGF5ZXJDbG9uZXMoKSkg
ewotICAgICAgICBMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbGF5ZXJDbG9uZU1hcC0+
ZW5kKCk7Ci0gICAgICAgIGZvciAoTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbGF5ZXJD
bG9uZU1hcC0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICBDQUxheWVy
ICpjdXJyTGF5ZXIgPSBpdC0+c2Vjb25kLmdldCgpOwotICAgICAgICAgICAgaWYgKG1fcmVwbGlj
YUxheWVyICYmIGlzUmVwbGljYXRlZFJvb3RDbG9uZShpdC0+Zmlyc3QpKSB7Ci0gICAgICAgICAg
ICAgICAgLy8gTWFpbnRhaW4gdGhlIHNwZWNpYWwtY2FzZSB0cmFuc2Zvcm0gZm9yIHRoZSByb290
IG9mIGEgY2xvbmUgc3VidHJlZSwKLSAgICAgICAgICAgICAgICAvLyB3aGljaCB3ZSBzZXQgdXAg
aW4gcmVwbGljYXRlZExheWVyUm9vdCgpLgotICAgICAgICAgICAgICAgIFtjdXJyTGF5ZXIgc2V0
VHJhbnNmb3JtOkNBVHJhbnNmb3JtM0RJZGVudGl0eV07Ci0gICAgICAgICAgICB9IGVsc2UKLSAg
ICAgICAgICAgICAgICBbY3VyckxheWVyIHNldFRyYW5zZm9ybTp0cmFuc2Zvcm1dOwotICAgICAg
ICB9Ci0gICAgfQotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnVwZGF0ZUNoaWxkcmVuVHJh
bnNmb3JtKCkKLXsKLSAgICBDQVRyYW5zZm9ybTNEIHRyYW5zZm9ybTsKLSAgICBjb3B5VHJhbnNm
b3JtKHRyYW5zZm9ybSwgbV9jaGlsZHJlblRyYW5zZm9ybSk7Ci0gICAgW3ByaW1hcnlMYXllcigp
IHNldFN1YmxheWVyVHJhbnNmb3JtOnRyYW5zZm9ybV07Ci0KLSAgICBpZiAoTGF5ZXJNYXAqIGxh
eWVyQ2xvbmVNYXAgPSBwcmltYXJ5TGF5ZXJDbG9uZXMoKSkgewotICAgICAgICBMYXllck1hcDo6
Y29uc3RfaXRlcmF0b3IgZW5kID0gbGF5ZXJDbG9uZU1hcC0+ZW5kKCk7Ci0gICAgICAgIGZvciAo
TGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbGF5ZXJDbG9uZU1hcC0+YmVnaW4oKTsgaXQg
IT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICBDQUxheWVyICpjdXJyTGF5ZXIgPSBpdC0+c2Vj
b25kLmdldCgpOwotICAgICAgICAgICAgW2N1cnJMYXllciBzZXRTdWJsYXllclRyYW5zZm9ybTp0
cmFuc2Zvcm1dOwotICAgICAgICB9Ci0gICAgfQotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6
OnVwZGF0ZU1hc2tzVG9Cb3VuZHMoKQotewotICAgIFttX2xheWVyLmdldCgpIHNldE1hc2tzVG9C
b3VuZHM6bV9tYXNrc1RvQm91bmRzXTsKLQotICAgIGlmIChMYXllck1hcCogbGF5ZXJDbG9uZU1h
cCA9IG1fbGF5ZXJDbG9uZXMuZ2V0KCkpIHsKLSAgICAgICAgTGF5ZXJNYXA6OmNvbnN0X2l0ZXJh
dG9yIGVuZCA9IGxheWVyQ2xvbmVNYXAtPmVuZCgpOwotICAgICAgICBmb3IgKExheWVyTWFwOjpj
b25zdF9pdGVyYXRvciBpdCA9IGxheWVyQ2xvbmVNYXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytp
dCkgewotICAgICAgICAgICAgQ0FMYXllciAqY3VyckxheWVyID0gaXQtPnNlY29uZC5nZXQoKTsK
LSAgICAgICAgICAgIFtjdXJyTGF5ZXIgc2V0TWFza3NUb0JvdW5kczptX21hc2tzVG9Cb3VuZHNd
OwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdXBkYXRlRGVidWdJbmRpY2F0b3JzKCk7Ci19Ci0K
LXZvaWQgR3JhcGhpY3NMYXllck1hYzo6dXBkYXRlQ29udGVudHNPcGFxdWUoKQotewotICAgIFtt
X2xheWVyLmdldCgpIHNldE9wYXF1ZTptX2NvbnRlbnRzT3BhcXVlXTsKLQotICAgIGlmIChMYXll
ck1hcCogbGF5ZXJDbG9uZU1hcCA9IG1fbGF5ZXJDbG9uZXMuZ2V0KCkpIHsKLSAgICAgICAgTGF5
ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGxheWVyQ2xvbmVNYXAtPmVuZCgpOwotICAgICAg
ICBmb3IgKExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGxheWVyQ2xvbmVNYXAtPmJlZ2lu
KCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICAgICAgQ0FMYXllciAqY3VyckxheWVyID0g
aXQtPnNlY29uZC5nZXQoKTsKLSAgICAgICAgICAgIFtjdXJyTGF5ZXIgc2V0T3BhcXVlOm1fY29u
dGVudHNPcGFxdWVdOwotICAgICAgICB9Ci0gICAgfQotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJN
YWM6OnVwZGF0ZUJhY2tmYWNlVmlzaWJpbGl0eSgpCi17Ci0gICAgaWYgKG1fc3RydWN0dXJhbExh
eWVyICYmIHN0cnVjdHVyYWxMYXllclB1cnBvc2UoKSA9PSBTdHJ1Y3R1cmFsTGF5ZXJGb3JSZXBs
aWNhRmxhdHRlbmluZykgewotICAgICAgICBbbV9zdHJ1Y3R1cmFsTGF5ZXIuZ2V0KCkgc2V0RG91
YmxlU2lkZWQ6bV9iYWNrZmFjZVZpc2liaWxpdHldOwotCi0gICAgICAgIGlmIChMYXllck1hcCog
bGF5ZXJDbG9uZU1hcCA9IG1fc3RydWN0dXJhbExheWVyQ2xvbmVzLmdldCgpKSB7Ci0gICAgICAg
ICAgICBMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbGF5ZXJDbG9uZU1hcC0+ZW5kKCk7
Ci0gICAgICAgICAgICBmb3IgKExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGxheWVyQ2xv
bmVNYXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICAgICAgICAgIENBTGF5
ZXIgKmN1cnJMYXllciA9IGl0LT5zZWNvbmQuZ2V0KCk7Ci0gICAgICAgICAgICAgICAgW2N1cnJM
YXllciBzZXREb3VibGVTaWRlZDptX2JhY2tmYWNlVmlzaWJpbGl0eV07Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBbbV9sYXllci5nZXQoKSBzZXREb3VibGVTaWRlZDpt
X2JhY2tmYWNlVmlzaWJpbGl0eV07Ci0KLSAgICBpZiAoTGF5ZXJNYXAqIGxheWVyQ2xvbmVNYXAg
PSBtX2xheWVyQ2xvbmVzLmdldCgpKSB7Ci0gICAgICAgIExheWVyTWFwOjpjb25zdF9pdGVyYXRv
ciBlbmQgPSBsYXllckNsb25lTWFwLT5lbmQoKTsKLSAgICAgICAgZm9yIChMYXllck1hcDo6Y29u
c3RfaXRlcmF0b3IgaXQgPSBsYXllckNsb25lTWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQp
IHsKLSAgICAgICAgICAgIENBTGF5ZXIgKmN1cnJMYXllciA9IGl0LT5zZWNvbmQuZ2V0KCk7Ci0g
ICAgICAgICAgICBbY3VyckxheWVyIHNldERvdWJsZVNpZGVkOm1fYmFja2ZhY2VWaXNpYmlsaXR5
XTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotdm9pZCBHcmFwaGljc0xheWVyTWFjOjp1cGRhdGVT
dHJ1Y3R1cmFsTGF5ZXIoKQotewotICAgIGVuc3VyZVN0cnVjdHVyYWxMYXllcihzdHJ1Y3R1cmFs
TGF5ZXJQdXJwb3NlKCkpOwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OmVuc3VyZVN0cnVj
dHVyYWxMYXllcihTdHJ1Y3R1cmFsTGF5ZXJQdXJwb3NlIHB1cnBvc2UpCi17Ci0gICAgaWYgKHB1
cnBvc2UgPT0gTm9TdHJ1Y3R1cmFsTGF5ZXIpIHsKLSAgICAgICAgaWYgKG1fc3RydWN0dXJhbExh
eWVyKSB7Ci0gICAgICAgICAgICAvLyBSZXBsYWNlIHRoZSB0cmFuc2Zvcm1MYXllciBpbiB0aGUg
cGFyZW50IHdpdGggdGhpcyBsYXllci4KLSAgICAgICAgICAgIFttX2xheWVyLmdldCgpIHJlbW92
ZUZyb21TdXBlcmxheWVyXTsKLSAgICAgICAgICAgIFtbbV9zdHJ1Y3R1cmFsTGF5ZXIuZ2V0KCkg
c3VwZXJsYXllcl0gcmVwbGFjZVN1YmxheWVyOm1fc3RydWN0dXJhbExheWVyLmdldCgpIHdpdGg6
bV9sYXllci5nZXQoKV07Ci0KLSAgICAgICAgICAgIG1vdmVPckNvcHlBbmltYXRpb25zRm9yUHJv
cGVydHkoTW92ZSwgQW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybSwgbV9zdHJ1Y3R1cmFs
TGF5ZXIuZ2V0KCksIG1fbGF5ZXIuZ2V0KCkpOwotICAgICAgICAgICAgbW92ZU9yQ29weUFuaW1h
dGlvbnNGb3JQcm9wZXJ0eShNb3ZlLCBBbmltYXRlZFByb3BlcnR5T3BhY2l0eSwgbV9zdHJ1Y3R1
cmFsTGF5ZXIuZ2V0KCksIG1fbGF5ZXIuZ2V0KCkpOwotCi0gICAgICAgICAgICAvLyBSZWxlYXNl
IHRoZSBzdHJ1Y3R1cmFsIGxheWVyLgotICAgICAgICAgICAgbV9zdHJ1Y3R1cmFsTGF5ZXIgPSAw
OwotCi0gICAgICAgICAgICAvLyBVcGRhdGUgdGhlIHByb3BlcnRpZXMgb2YgbV9sYXllciBub3cg
dGhhdCB3ZSBubyBsb25nZXIgaGF2ZSBhIHN0cnVjdHVyYWwgbGF5ZXIuCi0gICAgICAgICAgICB1
cGRhdGVMYXllclBvc2l0aW9uKCk7Ci0gICAgICAgICAgICB1cGRhdGVMYXllclNpemUoKTsKLSAg
ICAgICAgICAgIHVwZGF0ZUFuY2hvclBvaW50KCk7Ci0gICAgICAgICAgICB1cGRhdGVUcmFuc2Zv
cm0oKTsKLSAgICAgICAgICAgIHVwZGF0ZUNoaWxkcmVuVHJhbnNmb3JtKCk7Ci0KLSAgICAgICAg
ICAgIHVwZGF0ZVN1YmxheWVyTGlzdCgpOwotICAgICAgICAgICAgdXBkYXRlT3BhY2l0eU9uTGF5
ZXIoKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAotICAgIGJvb2wg
c3RydWN0dXJhbExheWVyQ2hhbmdlZCA9IGZhbHNlOwotICAgIAotICAgIGlmIChwdXJwb3NlID09
IFN0cnVjdHVyYWxMYXllckZvclByZXNlcnZlczNEKSB7Ci0gICAgICAgIENsYXNzIHRyYW5zZm9y
bUxheWVyQ2xhc3MgPSBOU0NsYXNzRnJvbVN0cmluZyhAIkNBVHJhbnNmb3JtTGF5ZXIiKTsKLSAg
ICAgICAgaWYgKCF0cmFuc2Zvcm1MYXllckNsYXNzKQotICAgICAgICAgICAgcmV0dXJuOwotCi0g
ICAgICAgIGlmIChtX3N0cnVjdHVyYWxMYXllciAmJiAhW21fc3RydWN0dXJhbExheWVyLmdldCgp
IGlzS2luZE9mQ2xhc3M6dHJhbnNmb3JtTGF5ZXJDbGFzc10pCi0gICAgICAgICAgICBtX3N0cnVj
dHVyYWxMYXllciA9IDA7Ci0gICAgICAgIAotICAgICAgICBpZiAoIW1fc3RydWN0dXJhbExheWVy
KSB7Ci0gICAgICAgICAgICBtX3N0cnVjdHVyYWxMYXllci5hZG9wdE5TKFtbdHJhbnNmb3JtTGF5
ZXJDbGFzcyBhbGxvY10gaW5pdF0pOwotICAgICAgICAgICAgc3RydWN0dXJhbExheWVyQ2hhbmdl
ZCA9IHRydWU7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICBpZiAobV9zdHJ1Y3R1
cmFsTGF5ZXIgJiYgIVttX3N0cnVjdHVyYWxMYXllci5nZXQoKSBpc01lbWJlck9mQ2xhc3M6W0NB
TGF5ZXIgc2VsZl1dKQotICAgICAgICAgICAgbV9zdHJ1Y3R1cmFsTGF5ZXIgPSAwOwotCi0gICAg
ICAgIGlmICghbV9zdHJ1Y3R1cmFsTGF5ZXIpIHsKLSAgICAgICAgICAgIG1fc3RydWN0dXJhbExh
eWVyLmFkb3B0TlMoW1tDQUxheWVyIGFsbG9jXSBpbml0XSk7Ci0gICAgICAgICAgICBzdHJ1Y3R1
cmFsTGF5ZXJDaGFuZ2VkID0gdHJ1ZTsKLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICBpZiAo
IXN0cnVjdHVyYWxMYXllckNoYW5nZWQpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICAvLyBU
dXJuIG9mZiBkZWZhdWx0IGFuaW1hdGlvbnMuCi0gICAgW21fc3RydWN0dXJhbExheWVyLmdldCgp
IHNldFN0eWxlOltOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3Q6bnVsbEFjdGlvbnNE
aWN0aW9uYXJ5KCkgZm9yS2V5OkAiYWN0aW9ucyJdXTsKLQotICAgIHVwZGF0ZUxheWVyTmFtZXMo
KTsKLQotICAgIC8vIFVwZGF0ZSB0aGUgcHJvcGVydGllcyBvZiB0aGUgc3RydWN0dXJhbCBsYXll
ci4KLSAgICB1cGRhdGVMYXllclBvc2l0aW9uKCk7Ci0gICAgdXBkYXRlTGF5ZXJTaXplKCk7Ci0g
ICAgdXBkYXRlQW5jaG9yUG9pbnQoKTsKLSAgICB1cGRhdGVUcmFuc2Zvcm0oKTsKLSAgICB1cGRh
dGVDaGlsZHJlblRyYW5zZm9ybSgpOwotICAgIHVwZGF0ZUJhY2tmYWNlVmlzaWJpbGl0eSgpOwot
ICAgIAotICAgIC8vIFNldCBwcm9wZXJ0aWVzIG9mIG1fbGF5ZXIgdG8gdGhlaXIgZGVmYXVsdCB2
YWx1ZXMsIHNpbmNlIHRoZXNlIGFyZSBleHByZXNzZWQgb24gb24gdGhlIHN0cnVjdHVyYWwgbGF5
ZXIuCi0gICAgQ0dQb2ludCBwb2ludCA9IENHUG9pbnRNYWtlKG1fc2l6ZS53aWR0aCgpIC8gMi4w
ZiwgbV9zaXplLmhlaWdodCgpIC8gMi4wZik7Ci0gICAgW21fbGF5ZXIuZ2V0KCkgc2V0UG9zaXRp
b246cG9pbnRdOwotICAgIFttX2xheWVyLmdldCgpIHNldEFuY2hvclBvaW50OkNHUG9pbnRNYWtl
KDAuNWYsIDAuNWYpXTsKLSAgICBbbV9sYXllci5nZXQoKSBzZXRUcmFuc2Zvcm06Q0FUcmFuc2Zv
cm0zRElkZW50aXR5XTsKLSAgICBbbV9sYXllci5nZXQoKSBzZXRPcGFjaXR5OjFdOwotCi0gICAg
Ly8gTW92ZSB0aGlzIGxheWVyIHRvIGJlIGEgY2hpbGQgb2YgdGhlIHRyYW5zZm9ybSBsYXllci4K
LSAgICBbW21fbGF5ZXIuZ2V0KCkgc3VwZXJsYXllcl0gcmVwbGFjZVN1YmxheWVyOm1fbGF5ZXIu
Z2V0KCkgd2l0aDptX3N0cnVjdHVyYWxMYXllci5nZXQoKV07Ci0gICAgW21fc3RydWN0dXJhbExh
eWVyLmdldCgpIGFkZFN1YmxheWVyOm1fbGF5ZXIuZ2V0KCldOwotCi0gICAgbW92ZU9yQ29weUFu
aW1hdGlvbnNGb3JQcm9wZXJ0eShNb3ZlLCBBbmltYXRlZFByb3BlcnR5V2Via2l0VHJhbnNmb3Jt
LCBtX2xheWVyLmdldCgpLCBtX3N0cnVjdHVyYWxMYXllci5nZXQoKSk7Ci0gICAgbW92ZU9yQ29w
eUFuaW1hdGlvbnNGb3JQcm9wZXJ0eShNb3ZlLCBBbmltYXRlZFByb3BlcnR5T3BhY2l0eSwgbV9s
YXllci5nZXQoKSwgbV9zdHJ1Y3R1cmFsTGF5ZXIuZ2V0KCkpOwotICAgIAotICAgIHVwZGF0ZVN1
YmxheWVyTGlzdCgpOwotICAgIHVwZGF0ZU9wYWNpdHlPbkxheWVyKCk7Ci19Ci0KLUdyYXBoaWNz
TGF5ZXJNYWM6OlN0cnVjdHVyYWxMYXllclB1cnBvc2UgR3JhcGhpY3NMYXllck1hYzo6c3RydWN0
dXJhbExheWVyUHVycG9zZSgpIGNvbnN0Ci17Ci0gICAgaWYgKHByZXNlcnZlczNEKCkpCi0gICAg
ICAgIHJldHVybiBTdHJ1Y3R1cmFsTGF5ZXJGb3JQcmVzZXJ2ZXMzRDsKLSAgICAKLSAgICBpZiAo
aXNSZXBsaWNhdGVkKCkpCi0gICAgICAgIHJldHVybiBTdHJ1Y3R1cmFsTGF5ZXJGb3JSZXBsaWNh
RmxhdHRlbmluZzsKLSAgICAKLSAgICByZXR1cm4gTm9TdHJ1Y3R1cmFsTGF5ZXI7Ci19Ci0KLXZv
aWQgR3JhcGhpY3NMYXllck1hYzo6dXBkYXRlTGF5ZXJEcmF3c0NvbnRlbnQoKQotewotICAgIGJv
b2wgbmVlZFRpbGVkTGF5ZXIgPSByZXF1aXJlc1RpbGVkTGF5ZXIobV9zaXplKTsKLSAgICBpZiAo
bmVlZFRpbGVkTGF5ZXIgIT0gbV91c2luZ1RpbGVkTGF5ZXIpCi0gICAgICAgIHN3YXBGcm9tT3JU
b1RpbGVkTGF5ZXIobmVlZFRpbGVkTGF5ZXIpOwotCi0gICAgaWYgKG1fZHJhd3NDb250ZW50KQot
ICAgICAgICBbbV9sYXllci5nZXQoKSBzZXROZWVkc0Rpc3BsYXldOwotICAgIGVsc2UKLSAgICAg
ICAgW21fbGF5ZXIuZ2V0KCkgc2V0Q29udGVudHM6bmlsXTsKLQotICAgIHVwZGF0ZURlYnVnSW5k
aWNhdG9ycygpOwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnVwZGF0ZUxheWVyQmFja2dy
b3VuZENvbG9yKCkKLXsKLSAgICBpZiAoIW1fY29udGVudHNMYXllcikKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgLy8gV2UgbmV2ZXIgY3JlYXRlIHRoZSBjb250ZW50cyBsYXllciBqdXN0IGZvciBi
YWNrZ3JvdW5kIGNvbG9yIHlldC4KLSAgICBpZiAobV9iYWNrZ3JvdW5kQ29sb3JTZXQpCi0gICAg
ICAgIHNldExheWVyQmFja2dyb3VuZENvbG9yKG1fY29udGVudHNMYXllci5nZXQoKSwgbV9iYWNr
Z3JvdW5kQ29sb3IpOwotICAgIGVsc2UKLSAgICAgICAgY2xlYXJMYXllckJhY2tncm91bmRDb2xv
cihtX2NvbnRlbnRzTGF5ZXIuZ2V0KCkpOwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnVw
ZGF0ZUNvbnRlbnRzSW1hZ2UoKQotewotICAgIGlmIChtX3BlbmRpbmdDb250ZW50c0ltYWdlKSB7
Ci0gICAgICAgIGlmICghbV9jb250ZW50c0xheWVyLmdldCgpKSB7Ci0gICAgICAgICAgICBXZWJM
YXllciogaW1hZ2VMYXllciA9IFtXZWJMYXllciBsYXllcl07Ci0jaWZuZGVmIE5ERUJVRwotICAg
ICAgICAgICAgW2ltYWdlTGF5ZXIgc2V0TmFtZTpAIkltYWdlIExheWVyIl07Ci0jZW5kaWYKLSAg
ICAgICAgICAgIHNldHVwQ29udGVudHNMYXllcihpbWFnZUxheWVyKTsKLSAgICAgICAgICAgIG1f
Y29udGVudHNMYXllci5hZG9wdE5TKFtpbWFnZUxheWVyIHJldGFpbl0pOwotICAgICAgICAgICAg
Ly8gbV9jb250ZW50c0xheWVyIHdpbGwgYmUgcGFyZW50ZWQgYnkgdXBkYXRlU3VibGF5ZXJMaXN0
Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBGSVhNRTogbWF5YmUgb25seSBkbyB0cmlsaW5lYXIg
aWYgdGhlIGltYWdlIGlzIGJlaW5nIHNjYWxlZCBkb3duLAotICAgICAgICAvLyBidXQgdGhlbiB3
aGF0IGlmIHRoZSBsYXllciBzaXplIGNoYW5nZXM/Ci0jaWYgIWRlZmluZWQoQlVJTERJTkdfT05f
VElHRVIpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpCi0gICAgICAgIFttX2NvbnRl
bnRzTGF5ZXIuZ2V0KCkgc2V0TWluaWZpY2F0aW9uRmlsdGVyOmtDQUZpbHRlclRyaWxpbmVhcl07
Ci0jZW5kaWYKLSAgICAgICAgW21fY29udGVudHNMYXllci5nZXQoKSBzZXRDb250ZW50czooaWQp
bV9wZW5kaW5nQ29udGVudHNJbWFnZS5nZXQoKV07Ci0gICAgICAgIG1fcGVuZGluZ0NvbnRlbnRz
SW1hZ2UgPSAwOwotCi0gICAgICAgIGlmIChtX2NvbnRlbnRzTGF5ZXJDbG9uZXMpIHsKLSAgICAg
ICAgICAgIExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBtX2NvbnRlbnRzTGF5ZXJDbG9u
ZXMtPmVuZCgpOwotICAgICAgICAgICAgZm9yIChMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQg
PSBtX2NvbnRlbnRzTGF5ZXJDbG9uZXMtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAg
ICAgICAgICAgICBbaXQtPnNlY29uZC5nZXQoKSBzZXRDb250ZW50czpbbV9jb250ZW50c0xheWVy
LmdldCgpIGNvbnRlbnRzXV07Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHVwZGF0ZUNv
bnRlbnRzUmVjdCgpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8vIE5vIGltYWdlLgotICAgICAg
ICAvLyBtX2NvbnRlbnRzTGF5ZXIgd2lsbCBiZSByZW1vdmVkIHZpYSB1cGRhdGVTdWJsYXllckxp
c3QuCi0gICAgICAgIG1fY29udGVudHNMYXllciA9IDA7Ci0gICAgfQotfQotCi12b2lkIEdyYXBo
aWNzTGF5ZXJNYWM6OnVwZGF0ZUNvbnRlbnRzTWVkaWFMYXllcigpCi17Ci0gICAgLy8gVmlkZW8g
bGF5ZXIgd2FzIHNldCBhcyBtX2NvbnRlbnRzTGF5ZXIsIGFuZCB3aWxsIGdldCBwYXJlbnRlZCBp
biB1cGRhdGVTdWJsYXllckxpc3QoKS4KLSAgICBpZiAobV9jb250ZW50c0xheWVyKSB7Ci0gICAg
ICAgIHNldHVwQ29udGVudHNMYXllcihtX2NvbnRlbnRzTGF5ZXIuZ2V0KCkpOwotICAgICAgICB1
cGRhdGVDb250ZW50c1JlY3QoKTsKLSAgICB9Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6
dXBkYXRlQ29udGVudHNDYW52YXNMYXllcigpCi17Ci0gICAgLy8gQ2FudmFzTGF5ZXIgd2FzIHNl
dCBhcyBtX2NvbnRlbnRzTGF5ZXIsIGFuZCB3aWxsIGdldCBwYXJlbnRlZCBpbiB1cGRhdGVTdWJs
YXllckxpc3QoKS4KLSAgICBpZiAobV9jb250ZW50c0xheWVyKSB7Ci0gICAgICAgIHNldHVwQ29u
dGVudHNMYXllcihtX2NvbnRlbnRzTGF5ZXIuZ2V0KCkpOwotICAgICAgICBbbV9jb250ZW50c0xh
eWVyLmdldCgpIHNldE5lZWRzRGlzcGxheV07Ci0gICAgICAgIHVwZGF0ZUNvbnRlbnRzUmVjdCgp
OwotICAgIH0KLX0KLQotdm9pZCBHcmFwaGljc0xheWVyTWFjOjp1cGRhdGVDb250ZW50c1JlY3Qo
KQotewotICAgIGlmICghbV9jb250ZW50c0xheWVyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBD
R1BvaW50IHBvaW50ID0gQ0dQb2ludE1ha2UobV9jb250ZW50c1JlY3QueCgpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtX2NvbnRlbnRzUmVjdC55KCkpOwotICAgIENHUmVjdCBy
ZWN0ID0gQ0dSZWN0TWFrZSgwLjBmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjBm
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2NvbnRlbnRzUmVjdC53aWR0aCgpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2NvbnRlbnRzUmVjdC5oZWlnaHQoKSk7Ci0K
LSAgICBbbV9jb250ZW50c0xheWVyLmdldCgpIHNldFBvc2l0aW9uOnBvaW50XTsKLSAgICBbbV9j
b250ZW50c0xheWVyLmdldCgpIHNldEJvdW5kczpyZWN0XTsKLQotICAgIGlmIChtX2NvbnRlbnRz
TGF5ZXJDbG9uZXMpIHsKLSAgICAgICAgTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1f
Y29udGVudHNMYXllckNsb25lcy0+ZW5kKCk7Ci0gICAgICAgIGZvciAoTGF5ZXJNYXA6OmNvbnN0
X2l0ZXJhdG9yIGl0ID0gbV9jb250ZW50c0xheWVyQ2xvbmVzLT5iZWdpbigpOyBpdCAhPSBlbmQ7
ICsraXQpIHsKLSAgICAgICAgICAgIENBTGF5ZXIgKmN1cnJMYXllciA9IGl0LT5zZWNvbmQuZ2V0
KCk7Ci0gICAgICAgICAgICBbY3VyckxheWVyIHNldFBvc2l0aW9uOnBvaW50XTsKLSAgICAgICAg
ICAgIFtjdXJyTGF5ZXIgc2V0Qm91bmRzOnJlY3RdOwotICAgICAgICB9Ci0gICAgfQotfQotCi12
b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnVwZGF0ZU1hc2tMYXllcigpCi17Ci0gICAgQ0FMYXllciAq
bWFza0NBTGF5ZXIgPSBtX21hc2tMYXllciA/IG1fbWFza0xheWVyLT5wbGF0Zm9ybUxheWVyKCkg
OiAwOwotICAgIFttX2xheWVyLmdldCgpIHNldE1hc2s6bWFza0NBTGF5ZXJdOwotCi0gICAgTGF5
ZXJNYXAqIG1hc2tMYXllckNsb25lTWFwID0gbV9tYXNrTGF5ZXIgPyBzdGF0aWNfY2FzdDxHcmFw
aGljc0xheWVyTWFjKj4obV9tYXNrTGF5ZXIpLT5wcmltYXJ5TGF5ZXJDbG9uZXMoKSA6IDA7Ci0g
ICAgCi0gICAgaWYgKExheWVyTWFwKiBsYXllckNsb25lTWFwID0gbV9sYXllckNsb25lcy5nZXQo
KSkgewotICAgICAgICBMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbGF5ZXJDbG9uZU1h
cC0+ZW5kKCk7Ci0gICAgICAgIGZvciAoTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbGF5
ZXJDbG9uZU1hcC0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICBDQUxh
eWVyICpjdXJyTGF5ZXIgPSBpdC0+c2Vjb25kLmdldCgpOwotICAgICAgICAgICAgCi0gICAgICAg
ICAgICBDQUxheWVyICptYXNrQ2xvbmUgPSBtYXNrTGF5ZXJDbG9uZU1hcCA/IG1hc2tMYXllckNs
b25lTWFwLT5nZXQoaXQtPmZpcnN0KS5nZXQoKSA6IDA7Ci0gICAgICAgICAgICBbY3VyckxheWVy
IHNldE1hc2s6bWFza0Nsb25lXTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotdm9pZCBHcmFwaGlj
c0xheWVyTWFjOjp1cGRhdGVSZXBsaWNhdGVkTGF5ZXJzKCkKLXsKLSAgICAvLyBDbG9uZSB0aGUg
ZGVzY2VuZGFudHMgb2YgdGhlIHJlcGxpY2F0ZWQgbGF5ZXIsIGFuZCBwYXJlbnQgdW5kZXIgdXMu
Ci0gICAgUmVwbGljYVN0YXRlIHJlcGxpY2FTdGF0ZShSZXBsaWNhU3RhdGU6OlJlcGxpY2FCcmFu
Y2gpOwotCi0gICAgQ0FMYXllciAqcmVwbGljYVJvb3QgPSByZXBsaWNhdGVkTGF5ZXJSb290KHJl
cGxpY2FTdGF0ZSk7Ci0gICAgaWYgKCFyZXBsaWNhUm9vdCkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgaWYgKG1fc3RydWN0dXJhbExheWVyKQotICAgICAgICBbbV9zdHJ1Y3R1cmFsTGF5ZXIuZ2V0
KCkgaW5zZXJ0U3VibGF5ZXI6cmVwbGljYVJvb3QgYXRJbmRleDowXTsKLSAgICBlbHNlCi0gICAg
ICAgIFttX2xheWVyLmdldCgpIGluc2VydFN1YmxheWVyOnJlcGxpY2FSb290IGF0SW5kZXg6MF07
Ci19Ci0KLS8vIEZvciBub3csIHRoaXMgYXNzdW1lcyB0aGF0IGxheWVycyBvbmx5IGV2ZXIgaGF2
ZSBvbmUgcmVwbGljYSwgc28gcmVwbGljYUluZGljZXMgY29udGFpbnMgb25seSAwIGFuZCAxLgot
R3JhcGhpY3NMYXllck1hYzo6Q2xvbmVJRCBHcmFwaGljc0xheWVyTWFjOjpSZXBsaWNhU3RhdGU6
OmNsb25lSUQoKSBjb25zdAotewotICAgIHNpemVfdCBkZXB0aCA9IG1fcmVwbGljYUJyYW5jaGVz
LnNpemUoKTsKLQotICAgIGNvbnN0IHNpemVfdCBiaXRzUGVyVUNoYXIgPSBzaXplb2YoVUNoYXIp
ICogODsKLSAgICBzaXplX3QgdmVjdG9yU2l6ZSA9IChkZXB0aCArIGJpdHNQZXJVQ2hhciAtIDEp
IC8gYml0c1BlclVDaGFyOwotICAgIAotICAgIFZlY3RvcjxVQ2hhcj4gcmVzdWx0KHZlY3RvclNp
emUpOwotICAgIHJlc3VsdC5maWxsKDApOwotCi0gICAgLy8gQ3JlYXRlIGEgc3RyaW5nIGZyb20g
dGhlIGJpdCBzZXF1ZW5jZSB3aGljaCB3ZSBjYW4gdXNlIHRvIGlkZW50aWZ5IHRoZSBjbG9uZS4K
LSAgICAvLyBOb3RlIHRoYXQgdGhlIHN0cmluZyBtYXkgY29udGFpbiBlbWJlZGRlZCBudWxscywg
YnV0IHRoYXQncyBPSy4KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGRlcHRoOyArK2kpIHsK
LSAgICAgICAgVUNoYXImIGN1cnJDaGFyID0gcmVzdWx0W2kgLyBiaXRzUGVyVUNoYXJdOwotICAg
ICAgICBjdXJyQ2hhciA9IChjdXJyQ2hhciA8PCAxKSB8IG1fcmVwbGljYUJyYW5jaGVzW2ldOwot
ICAgIH0KLSAgICAKLSAgICByZXR1cm4gU3RyaW5nOjphZG9wdChyZXN1bHQpOwotfQotCi1DQUxh
eWVyICpHcmFwaGljc0xheWVyTWFjOjpyZXBsaWNhdGVkTGF5ZXJSb290KFJlcGxpY2FTdGF0ZSYg
cmVwbGljYVN0YXRlKQotewotICAgIC8vIExpbWl0IHJlcGxpY2EgbmVzdGluZywgdG8gYXZvaWQg
Ml5OIGV4cGxvc2lvbiBvZiByZXBsaWNhIGxheWVycy4KLSAgICBpZiAoIW1fcmVwbGljYXRlZExh
eWVyIHx8IHJlcGxpY2FTdGF0ZS5yZXBsaWNhRGVwdGgoKSA9PSBSZXBsaWNhU3RhdGU6Om1heFJl
cGxpY2FEZXB0aCkKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIEdyYXBoaWNzTGF5ZXJNYWMq
IHJlcGxpY2F0ZWRMYXllciA9IHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXJNYWMqPihtX3JlcGxp
Y2F0ZWRMYXllcik7Ci0gICAgCi0gICAgQ0FMYXllciAqY2xvbmVkTGF5ZXJSb290ID0gcmVwbGlj
YXRlZExheWVyLT5mZXRjaENsb25lTGF5ZXJzKHRoaXMsIHJlcGxpY2FTdGF0ZSwgUm9vdENsb25l
TGV2ZWwpOwotICAgIEZsb2F0UG9pbnQgY2xvbmVSb290UG9zaXRpb24gPSByZXBsaWNhdGVkTGF5
ZXItPnBvc2l0aW9uRm9yQ2xvbmVSb290TGF5ZXIoKTsKLQotICAgIC8vIFJlcGxpY2Egcm9vdCBo
YXMgbm8gb2Zmc2V0IG9yIHRyYW5zZm9ybQotICAgIFtjbG9uZWRMYXllclJvb3Qgc2V0UG9zaXRp
b246Y2xvbmVSb290UG9zaXRpb25dOwotICAgIFtjbG9uZWRMYXllclJvb3Qgc2V0VHJhbnNmb3Jt
OkNBVHJhbnNmb3JtM0RJZGVudGl0eV07Ci0KLSAgICByZXR1cm4gY2xvbmVkTGF5ZXJSb290Owot
fQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnVwZGF0ZUxheWVyQW5pbWF0aW9ucygpCi17Ci0g
ICAgaWYgKG1fYW5pbWF0aW9uc1RvUHJvY2Vzcy5zaXplKCkpIHsKLSAgICAgICAgQW5pbWF0aW9u
c1RvUHJvY2Vzc01hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9hbmltYXRpb25zVG9Qcm9jZXNz
LmVuZCgpOwotICAgICAgICBmb3IgKEFuaW1hdGlvbnNUb1Byb2Nlc3NNYXA6OmNvbnN0X2l0ZXJh
dG9yIGl0ID0gbV9hbmltYXRpb25zVG9Qcm9jZXNzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkg
ewotICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBjdXJyQW5pbWF0aW9uTmFtZSA9IGl0LT5maXJz
dDsKLSAgICAgICAgICAgIEFuaW1hdGlvbnNNYXA6Oml0ZXJhdG9yIGFuaW1hdGlvbkl0ID0gbV9y
dW5uaW5nQW5pbWF0aW9ucy5maW5kKGN1cnJBbmltYXRpb25OYW1lKTsKLSAgICAgICAgICAgIGlm
IChhbmltYXRpb25JdCA9PSBtX3J1bm5pbmdBbmltYXRpb25zLmVuZCgpKQotICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICBjb25zdCBBbmltYXRpb25Qcm9jZXNzaW5nQWN0
aW9uJiBwcm9jZXNzaW5nSW5mbyA9IGl0LT5zZWNvbmQ7Ci0gICAgICAgICAgICBjb25zdCBWZWN0
b3I8TGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbj4mIGFuaW1hdGlvbnMgPSBhbmltYXRpb25JdC0+c2Vj
b25kOwotICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhbmltYXRpb25zLnNpemUo
KTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgY29uc3QgTGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbiYg
Y3VyckFuaW1hdGlvbiA9IGFuaW1hdGlvbnNbaV07Ci0gICAgICAgICAgICAgICAgc3dpdGNoIChw
cm9jZXNzaW5nSW5mby5hY3Rpb24pIHsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBSZW1vdmU6
Ci0gICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVDQUFuaW1hdGlvbkZyb21MYXllcihjdXJy
QW5pbWF0aW9uLm1fcHJvcGVydHksIGN1cnJBbmltYXRpb25OYW1lLCBjdXJyQW5pbWF0aW9uLm1f
aW5kZXgpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
ICAgIGNhc2UgUGF1c2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBwYXVzZUNBQW5pbWF0aW9u
T25MYXllcihjdXJyQW5pbWF0aW9uLm1fcHJvcGVydHksIGN1cnJBbmltYXRpb25OYW1lLCBjdXJy
QW5pbWF0aW9uLm1faW5kZXgsIHByb2Nlc3NpbmdJbmZvLnRpbWVPZmZzZXQpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQot
Ci0gICAgICAgICAgICBpZiAocHJvY2Vzc2luZ0luZm8uYWN0aW9uID09IFJlbW92ZSkKLSAgICAg
ICAgICAgICAgICBtX3J1bm5pbmdBbmltYXRpb25zLnJlbW92ZShjdXJyQW5pbWF0aW9uTmFtZSk7
Ci0gICAgICAgIH0KLSAgICAKLSAgICAgICAgbV9hbmltYXRpb25zVG9Qcm9jZXNzLmNsZWFyKCk7
Ci0gICAgfQotICAgIAotICAgIHNpemVfdCBudW1BbmltYXRpb25zOwotICAgIGlmICgobnVtQW5p
bWF0aW9ucyA9IG1fdW5jb21pdHRlZEFuaW1hdGlvbnMuc2l6ZSgpKSkgewotICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG51bUFuaW1hdGlvbnM7ICsraSkgewotICAgICAgICAgICAgY29u
c3QgTGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbiYgcGVuZGluZ0FuaW1hdGlvbiA9IG1fdW5jb21pdHRl
ZEFuaW1hdGlvbnNbaV07Ci0gICAgICAgICAgICBzZXRDQUFuaW1hdGlvbk9uTGF5ZXIocGVuZGlu
Z0FuaW1hdGlvbi5tX2FuaW1hdGlvbi5nZXQoKSwgcGVuZGluZ0FuaW1hdGlvbi5tX3Byb3BlcnR5
LCBwZW5kaW5nQW5pbWF0aW9uLm1fbmFtZSwgcGVuZGluZ0FuaW1hdGlvbi5tX2luZGV4LCBwZW5k
aW5nQW5pbWF0aW9uLm1fdGltZU9mZnNldCk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIEFu
aW1hdGlvbnNNYXA6Oml0ZXJhdG9yIGl0ID0gbV9ydW5uaW5nQW5pbWF0aW9ucy5maW5kKHBlbmRp
bmdBbmltYXRpb24ubV9uYW1lKTsKLSAgICAgICAgICAgIGlmIChpdCA9PSBtX3J1bm5pbmdBbmlt
YXRpb25zLmVuZCgpKSB7Ci0gICAgICAgICAgICAgICAgVmVjdG9yPExheWVyUHJvcGVydHlBbmlt
YXRpb24+IGFuaW1hdGlvbnM7Ci0gICAgICAgICAgICAgICAgYW5pbWF0aW9ucy5hcHBlbmQocGVu
ZGluZ0FuaW1hdGlvbik7Ci0gICAgICAgICAgICAgICAgbV9ydW5uaW5nQW5pbWF0aW9ucy5hZGQo
cGVuZGluZ0FuaW1hdGlvbi5tX25hbWUsIGFuaW1hdGlvbnMpOwotICAgICAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgICAgICBWZWN0b3I8TGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbj4mIGFuaW1h
dGlvbnMgPSBpdC0+c2Vjb25kOwotICAgICAgICAgICAgICAgIGFuaW1hdGlvbnMuYXBwZW5kKHBl
bmRpbmdBbmltYXRpb24pOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIAotICAg
ICAgICBtX3VuY29taXR0ZWRBbmltYXRpb25zLmNsZWFyKCk7Ci0gICAgfQotfQotCi12b2lkIEdy
YXBoaWNzTGF5ZXJNYWM6OnNldENBQW5pbWF0aW9uT25MYXllcihDQVByb3BlcnR5QW5pbWF0aW9u
KiBjYUFuaW0sIEFuaW1hdGVkUHJvcGVydHlJRCBwcm9wZXJ0eSwgY29uc3QgU3RyaW5nJiBhbmlt
YXRpb25OYW1lLCBpbnQgaW5kZXgsIGRvdWJsZSB0aW1lT2Zmc2V0KQotewotICAgIFBsYXRmb3Jt
TGF5ZXIqIGxheWVyID0gYW5pbWF0ZWRMYXllcihwcm9wZXJ0eSk7Ci0KLSAgICBpZiAodGltZU9m
ZnNldCkgewotICAgICAgICBbY2FBbmltIHNldEJlZ2luVGltZTpDQUN1cnJlbnRNZWRpYVRpbWUo
KSAtIHRpbWVPZmZzZXRdOwotICAgICAgICBbY2FBbmltIHNldFZhbHVlOltOU051bWJlciBudW1i
ZXJXaXRoQm9vbDpZRVNdIGZvcktleTpXZWJLaXRBbmltYXRpb25CZWdpblRpbWVTZXRLZXldOwot
ICAgIH0KLQotICAgIE5TU3RyaW5nICphbmltYXRpb25JRCA9IGFuaW1hdGlvbklkZW50aWZpZXIo
YW5pbWF0aW9uTmFtZSwgcHJvcGVydHksIGluZGV4KTsKLQotICAgIFtsYXllciByZW1vdmVBbmlt
YXRpb25Gb3JLZXk6YW5pbWF0aW9uSURdOwotICAgIFtsYXllciBhZGRBbmltYXRpb246Y2FBbmlt
IGZvcktleTphbmltYXRpb25JRF07Ci0KLSAgICBpZiAoTGF5ZXJNYXAqIGxheWVyQ2xvbmVNYXAg
PSBhbmltYXRlZExheWVyQ2xvbmVzKHByb3BlcnR5KSkgewotICAgICAgICBMYXllck1hcDo6Y29u
c3RfaXRlcmF0b3IgZW5kID0gbGF5ZXJDbG9uZU1hcC0+ZW5kKCk7Ci0gICAgICAgIGZvciAoTGF5
ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbGF5ZXJDbG9uZU1hcC0+YmVnaW4oKTsgaXQgIT0g
ZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICAvLyBTa2lwIGltbWVkaWF0ZSByZXBsaWNhcywgc2lu
Y2UgdGhleSBtb3ZlIHdpdGggdGhlIG9yaWdpbmFsLgotICAgICAgICAgICAgaWYgKG1fcmVwbGlj
YUxheWVyICYmIGlzUmVwbGljYXRlZFJvb3RDbG9uZShpdC0+Zmlyc3QpKQotICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgQ0FMYXllciAqY3VyckxheWVyID0gaXQtPnNlY29u
ZC5nZXQoKTsKLSAgICAgICAgICAgIFtjdXJyTGF5ZXIgcmVtb3ZlQW5pbWF0aW9uRm9yS2V5OmFu
aW1hdGlvbklEXTsKLSAgICAgICAgICAgIFtjdXJyTGF5ZXIgYWRkQW5pbWF0aW9uOmNhQW5pbSBm
b3JLZXk6YW5pbWF0aW9uSURdOwotICAgICAgICB9Ci0gICAgfQotfQotCi0vLyBXb3JrYXJvdW5k
IGZvciA8cmRhcjovL3Byb2JsZW0vNzMxMTM2Nz4KLXN0YXRpYyB2b2lkIGJ1ZzczMTEzNjdXb3Jr
YXJvdW5kKENBTGF5ZXIqIHRyYW5zZm9ybUxheWVyLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgdHJhbnNmb3JtKQotewotICAgIGlmICghdHJhbnNmb3JtTGF5ZXIpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIENBVHJhbnNmb3JtM0QgY2FUcmFuc2Zvcm07Ci0gICAgY29weVRyYW5zZm9ybShj
YVRyYW5zZm9ybSwgdHJhbnNmb3JtKTsKLSAgICBjYVRyYW5zZm9ybS5tNDEgKz0gMTsKLSAgICBb
dHJhbnNmb3JtTGF5ZXIgc2V0VHJhbnNmb3JtOmNhVHJhbnNmb3JtXTsKLQotICAgIGNhVHJhbnNm
b3JtLm00MSAtPSAxOwotICAgIFt0cmFuc2Zvcm1MYXllciBzZXRUcmFuc2Zvcm06Y2FUcmFuc2Zv
cm1dOwotfQotCi1ib29sIEdyYXBoaWNzTGF5ZXJNYWM6OnJlbW92ZUNBQW5pbWF0aW9uRnJvbUxh
eWVyKEFuaW1hdGVkUHJvcGVydHlJRCBwcm9wZXJ0eSwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25O
YW1lLCBpbnQgaW5kZXgpCi17Ci0gICAgUGxhdGZvcm1MYXllciogbGF5ZXIgPSBhbmltYXRlZExh
eWVyKHByb3BlcnR5KTsKLQotICAgIE5TU3RyaW5nICphbmltYXRpb25JRCA9IGFuaW1hdGlvbklk
ZW50aWZpZXIoYW5pbWF0aW9uTmFtZSwgcHJvcGVydHksIGluZGV4KTsKLQotICAgIGlmICghW2xh
eWVyIGFuaW1hdGlvbkZvcktleTphbmltYXRpb25JRF0pCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAKLSAgICBbbGF5ZXIgcmVtb3ZlQW5pbWF0aW9uRm9yS2V5OmFuaW1hdGlvbklEXTsKLSAg
ICBidWc3MzExMzY3V29ya2Fyb3VuZChtX3N0cnVjdHVyYWxMYXllci5nZXQoKSwgbV90cmFuc2Zv
cm0pOwotCi0gICAgaWYgKExheWVyTWFwKiBsYXllckNsb25lTWFwID0gYW5pbWF0ZWRMYXllckNs
b25lcyhwcm9wZXJ0eSkpIHsKLSAgICAgICAgTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9
IGxheWVyQ2xvbmVNYXAtPmVuZCgpOwotICAgICAgICBmb3IgKExheWVyTWFwOjpjb25zdF9pdGVy
YXRvciBpdCA9IGxheWVyQ2xvbmVNYXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAg
ICAgICAgICAgLy8gU2tpcCBpbW1lZGlhdGUgcmVwbGljYXMsIHNpbmNlIHRoZXkgbW92ZSB3aXRo
IHRoZSBvcmlnaW5hbC4KLSAgICAgICAgICAgIGlmIChtX3JlcGxpY2FMYXllciAmJiBpc1JlcGxp
Y2F0ZWRSb290Q2xvbmUoaXQtPmZpcnN0KSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLQot
ICAgICAgICAgICAgQ0FMYXllciAqY3VyckxheWVyID0gaXQtPnNlY29uZC5nZXQoKTsKLSAgICAg
ICAgICAgIFtjdXJyTGF5ZXIgcmVtb3ZlQW5pbWF0aW9uRm9yS2V5OmFuaW1hdGlvbklEXTsKLSAg
ICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotc3RhdGljIHZvaWQgY29weUFu
aW1hdGlvblByb3BlcnRpZXMoQ0FQcm9wZXJ0eUFuaW1hdGlvbiogZnJvbSwgQ0FQcm9wZXJ0eUFu
aW1hdGlvbiogdG8pCi17Ci0gICAgW3RvIHNldEJlZ2luVGltZTpbZnJvbSBiZWdpblRpbWVdXTsK
LSAgICBbdG8gc2V0RHVyYXRpb246W2Zyb20gZHVyYXRpb25dXTsKLSAgICBbdG8gc2V0UmVwZWF0
Q291bnQ6W2Zyb20gcmVwZWF0Q291bnRdXTsKLSAgICBbdG8gc2V0QXV0b3JldmVyc2VzOltmcm9t
IGF1dG9yZXZlcnNlc11dOwotICAgIFt0byBzZXRGaWxsTW9kZTpbZnJvbSBmaWxsTW9kZV1dOwot
ICAgIFt0byBzZXRSZW1vdmVkT25Db21wbGV0aW9uOltmcm9tIGlzUmVtb3ZlZE9uQ29tcGxldGlv
bl1dOwotICAgIFt0byBzZXRBZGRpdGl2ZTpbZnJvbSBpc0FkZGl0aXZlXV07Ci0gICAgW3RvIHNl
dFRpbWluZ0Z1bmN0aW9uOltmcm9tIHRpbWluZ0Z1bmN0aW9uXV07Ci0KLSNpZiBIQVZFX01PREVS
Tl9RVUFSVFpDT1JFCi0gICAgW3RvIHNldFZhbHVlRnVuY3Rpb246W2Zyb20gdmFsdWVGdW5jdGlv
bl1dOwotI2VuZGlmCi0KLSAgICBpZiAoaWQgb2JqZWN0ID0gW2Zyb20gdmFsdWVGb3JLZXk6V2Vi
S2l0QW5pbWF0aW9uQmVnaW5UaW1lU2V0S2V5XSkKLSAgICAgICAgW3RvIHNldFZhbHVlOm9iamVj
dCBmb3JLZXk6V2ViS2l0QW5pbWF0aW9uQmVnaW5UaW1lU2V0S2V5XTsKLX0KLQotdm9pZCBHcmFw
aGljc0xheWVyTWFjOjpwYXVzZUNBQW5pbWF0aW9uT25MYXllcihBbmltYXRlZFByb3BlcnR5SUQg
cHJvcGVydHksIGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSwgaW50IGluZGV4LCBkb3VibGUg
dGltZU9mZnNldCkKLXsKLSAgICBQbGF0Zm9ybUxheWVyKiBsYXllciA9IGFuaW1hdGVkTGF5ZXIo
cHJvcGVydHkpOwotCi0gICAgTlNTdHJpbmcgKmFuaW1hdGlvbklEID0gYW5pbWF0aW9uSWRlbnRp
ZmllcihhbmltYXRpb25OYW1lLCBwcm9wZXJ0eSwgaW5kZXgpOwotCi0gICAgQ0FBbmltYXRpb24g
KmNhQW5pbSA9IFtsYXllciBhbmltYXRpb25Gb3JLZXk6YW5pbWF0aW9uSURdOwotICAgIGlmICgh
Y2FBbmltKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBBbmltYXRpb25zIG9uIHRoZSBsYXll
ciBhcmUgaW1tdXRhYmxlLCBzbyB3ZSBoYXZlIHRvIGNsb25lIGFuZCBtb2RpZnkuCi0gICAgQ0FQ
cm9wZXJ0eUFuaW1hdGlvbiogcGF1c2VkQW5pbSA9IG5pbDsKLSAgICBpZiAoW2NhQW5pbSBpc0tp
bmRPZkNsYXNzOltDQUtleWZyYW1lQW5pbWF0aW9uIGNsYXNzXV0pIHsKLSAgICAgICAgQ0FLZXlm
cmFtZUFuaW1hdGlvbiogZXhpc3RpbmdLZXlmcmFtZUFuaW0gPSBzdGF0aWNfY2FzdDxDQUtleWZy
YW1lQW5pbWF0aW9uKj4oY2FBbmltKTsKLSAgICAgICAgQ0FLZXlmcmFtZUFuaW1hdGlvbiogbmV3
QW5pbSA9IFtDQUtleWZyYW1lQW5pbWF0aW9uIGFuaW1hdGlvbldpdGhLZXlQYXRoOltleGlzdGlu
Z0tleWZyYW1lQW5pbSBrZXlQYXRoXV07Ci0gICAgICAgIGNvcHlBbmltYXRpb25Qcm9wZXJ0aWVz
KGV4aXN0aW5nS2V5ZnJhbWVBbmltLCBuZXdBbmltKTsKLSAgICAgICAgW25ld0FuaW0gc2V0VmFs
dWVzOltleGlzdGluZ0tleWZyYW1lQW5pbSB2YWx1ZXNdXTsKLSAgICAgICAgW25ld0FuaW0gc2V0
S2V5VGltZXM6W2V4aXN0aW5nS2V5ZnJhbWVBbmltIGtleVRpbWVzXV07Ci0gICAgICAgIFtuZXdB
bmltIHNldFRpbWluZ0Z1bmN0aW9uczpbZXhpc3RpbmdLZXlmcmFtZUFuaW0gdGltaW5nRnVuY3Rp
b25zXV07Ci0gICAgICAgIHBhdXNlZEFuaW0gPSBuZXdBbmltOwotICAgIH0gZWxzZSBpZiAoW2Nh
QW5pbSBpc0tpbmRPZkNsYXNzOltDQUJhc2ljQW5pbWF0aW9uIGNsYXNzXV0pIHsKLSAgICAgICAg
Q0FCYXNpY0FuaW1hdGlvbiogZXhpc3RpbmdQcm9wZXJ0eUFuaW0gPSBzdGF0aWNfY2FzdDxDQUJh
c2ljQW5pbWF0aW9uKj4oY2FBbmltKTsKLSAgICAgICAgQ0FCYXNpY0FuaW1hdGlvbiogbmV3QW5p
bSA9IFtDQUJhc2ljQW5pbWF0aW9uIGFuaW1hdGlvbldpdGhLZXlQYXRoOltleGlzdGluZ1Byb3Bl
cnR5QW5pbSBrZXlQYXRoXV07Ci0gICAgICAgIGNvcHlBbmltYXRpb25Qcm9wZXJ0aWVzKGV4aXN0
aW5nUHJvcGVydHlBbmltLCBuZXdBbmltKTsKLSAgICAgICAgW25ld0FuaW0gc2V0RnJvbVZhbHVl
OltleGlzdGluZ1Byb3BlcnR5QW5pbSBmcm9tVmFsdWVdXTsKLSAgICAgICAgW25ld0FuaW0gc2V0
VG9WYWx1ZTpbZXhpc3RpbmdQcm9wZXJ0eUFuaW0gdG9WYWx1ZV1dOwotICAgICAgICBwYXVzZWRB
bmltID0gbmV3QW5pbTsKLSAgICB9Ci0KLSAgICAvLyBwYXVzZWRBbmltIGhhcyB0aGUgYmVnaW5U
aW1lIG9mIGNhQW5pbSBhbHJlYWR5LgotICAgIFtwYXVzZWRBbmltIHNldFNwZWVkOjBdOwotICAg
IFtwYXVzZWRBbmltIHNldFRpbWVPZmZzZXQ6dGltZU9mZnNldF07Ci0gICAgCi0gICAgW2xheWVy
IGFkZEFuaW1hdGlvbjpwYXVzZWRBbmltIGZvcktleTphbmltYXRpb25JRF07ICAvLyBUaGlzIHdp
bGwgcmVwbGFjZSB0aGUgcnVubmluZyBhbmltYXRpb24uCi0KLSAgICAvLyBQYXVzZSB0aGUgYW5p
bWF0aW9ucyBvbiB0aGUgY2xvbmVzIHRvby4KLSAgICBpZiAoTGF5ZXJNYXAqIGxheWVyQ2xvbmVN
YXAgPSBhbmltYXRlZExheWVyQ2xvbmVzKHByb3BlcnR5KSkgewotICAgICAgICBMYXllck1hcDo6
Y29uc3RfaXRlcmF0b3IgZW5kID0gbGF5ZXJDbG9uZU1hcC0+ZW5kKCk7Ci0gICAgICAgIGZvciAo
TGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbGF5ZXJDbG9uZU1hcC0+YmVnaW4oKTsgaXQg
IT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICAvLyBTa2lwIGltbWVkaWF0ZSByZXBsaWNhcywg
c2luY2UgdGhleSBtb3ZlIHdpdGggdGhlIG9yaWdpbmFsLgotICAgICAgICAgICAgaWYgKG1fcmVw
bGljYUxheWVyICYmIGlzUmVwbGljYXRlZFJvb3RDbG9uZShpdC0+Zmlyc3QpKQotICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgQ0FMYXllciAqY3VyckxheWVyID0gaXQtPnNl
Y29uZC5nZXQoKTsKLSAgICAgICAgICAgIFtjdXJyTGF5ZXIgYWRkQW5pbWF0aW9uOnBhdXNlZEFu
aW0gZm9yS2V5OmFuaW1hdGlvbklEXTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotdm9pZCBHcmFw
aGljc0xheWVyTWFjOjpzZXRDb250ZW50c1RvQ2FudmFzKFBsYXRmb3JtTGF5ZXIqIGNhbnZhc0xh
eWVyKQotewotICAgIGlmIChjYW52YXNMYXllciA9PSBtX2NvbnRlbnRzTGF5ZXIpCi0gICAgICAg
IHJldHVybjsKLSAgICAgICAgCi0gICAgbV9jb250ZW50c0xheWVyID0gY2FudmFzTGF5ZXI7Ci0g
ICAgaWYgKG1fY29udGVudHNMYXllciAmJiBbbV9jb250ZW50c0xheWVyLmdldCgpIHJlc3BvbmRz
VG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2V0TGF5ZXJPd25lcjopXSkKLSAgICAgICAgWyhpZCltX2Nv
bnRlbnRzTGF5ZXIuZ2V0KCkgc2V0TGF5ZXJPd25lcjp0aGlzXTsKLSAgICAKLSAgICBtX2NvbnRl
bnRzTGF5ZXJQdXJwb3NlID0gY2FudmFzTGF5ZXIgPyBDb250ZW50c0xheWVyRm9yQ2FudmFzIDog
Tm9Db250ZW50c0xheWVyOwotCi0gICAgbm90ZVN1YmxheWVyc0NoYW5nZWQoKTsKLSAgICBub3Rl
TGF5ZXJQcm9wZXJ0eUNoYW5nZWQoQ29udGVudHNDYW52YXNMYXllckNoYW5nZWQpOwotfQotICAg
IAotdm9pZCBHcmFwaGljc0xheWVyTWFjOjpyZXBhaW50TGF5ZXJEaXJ0eVJlY3RzKCkKLXsKLSAg
ICBpZiAoIW1fZGlydHlSZWN0cy5zaXplKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbV9kaXJ0eVJlY3RzLnNpemUoKTsgKytpKQotICAgICAgICBbbV9s
YXllci5nZXQoKSBzZXROZWVkc0Rpc3BsYXlJblJlY3Q6bV9kaXJ0eVJlY3RzW2ldXTsKLSAgICAK
LSAgICBtX2RpcnR5UmVjdHMuY2xlYXIoKTsKLX0KLQotdm9pZCBHcmFwaGljc0xheWVyTWFjOjp1
cGRhdGVDb250ZW50c05lZWRzRGlzcGxheSgpCi17Ci0gICAgaWYgKG1fY29udGVudHNMYXllcikK
LSAgICAgICAgW21fY29udGVudHNMYXllci5nZXQoKSBzZXROZWVkc0Rpc3BsYXldOwotfQotCi1i
b29sIEdyYXBoaWNzTGF5ZXJNYWM6OmNyZWF0ZUFuaW1hdGlvbkZyb21LZXlmcmFtZXMoY29uc3Qg
S2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCwgY29uc3QgQW5pbWF0aW9uKiBhbmltYXRpb24s
IGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSwgZG91YmxlIHRpbWVPZmZzZXQpCi17Ci0gICAg
QVNTRVJUKHZhbHVlTGlzdC5wcm9wZXJ0eSgpICE9IEFuaW1hdGVkUHJvcGVydHlXZWJraXRUcmFu
c2Zvcm0pOwotCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotICAgIAotICAgIGJv
b2wgaXNLZXlmcmFtZSA9IHZhbHVlTGlzdC5zaXplKCkgPiAyOwotICAgIGJvb2wgdmFsdWVzT0s7
Ci0gICAgCi0gICAgYm9vbCBhZGRpdGl2ZSA9IGZhbHNlOwotICAgIGludCBhbmltYXRpb25JbmRl
eCA9IDA7Ci0gICAgCi0gICAgQ0FQcm9wZXJ0eUFuaW1hdGlvbiogY2FBbmltYXRpb247Ci0gICAg
aWYgKGlzS2V5ZnJhbWUpIHsKLSAgICAgICAgQ0FLZXlmcmFtZUFuaW1hdGlvbioga2V5ZnJhbWVB
bmltID0gY3JlYXRlS2V5ZnJhbWVBbmltYXRpb24oYW5pbWF0aW9uLCB2YWx1ZUxpc3QucHJvcGVy
dHkoKSwgYWRkaXRpdmUpOwotICAgICAgICB2YWx1ZXNPSyA9IHNldEFuaW1hdGlvbktleWZyYW1l
cyh2YWx1ZUxpc3QsIGFuaW1hdGlvbiwga2V5ZnJhbWVBbmltKTsKLSAgICAgICAgY2FBbmltYXRp
b24gPSBrZXlmcmFtZUFuaW07Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgQ0FCYXNpY0FuaW1hdGlv
biogYmFzaWNBbmltID0gY3JlYXRlQmFzaWNBbmltYXRpb24oYW5pbWF0aW9uLCB2YWx1ZUxpc3Qu
cHJvcGVydHkoKSwgYWRkaXRpdmUpOwotICAgICAgICB2YWx1ZXNPSyA9IHNldEFuaW1hdGlvbkVu
ZHBvaW50cyh2YWx1ZUxpc3QsIGFuaW1hdGlvbiwgYmFzaWNBbmltKTsKLSAgICAgICAgY2FBbmlt
YXRpb24gPSBiYXNpY0FuaW07Ci0gICAgfQotICAgIAotICAgIGlmICghdmFsdWVzT0spCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgIG1fdW5jb21pdHRlZEFuaW1hdGlvbnMuYXBwZW5kKExh
eWVyUHJvcGVydHlBbmltYXRpb24oY2FBbmltYXRpb24sIGFuaW1hdGlvbk5hbWUsIHZhbHVlTGlz
dC5wcm9wZXJ0eSgpLCBhbmltYXRpb25JbmRleCwgdGltZU9mZnNldCkpOwotICAgIAotICAgIEVO
RF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBH
cmFwaGljc0xheWVyTWFjOjpjcmVhdGVUcmFuc2Zvcm1BbmltYXRpb25zRnJvbUtleWZyYW1lcyhj
b25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVMaXN0LCBjb25zdCBBbmltYXRpb24qIGFuaW1h
dGlvbiwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBkb3VibGUgdGltZU9mZnNldCwgY29u
c3QgSW50U2l6ZSYgYm94U2l6ZSkKLXsKLSAgICBBU1NFUlQodmFsdWVMaXN0LnByb3BlcnR5KCkg
PT0gQW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybSk7Ci0KLSAgICBUcmFuc2Zvcm1PcGVy
YXRpb25MaXN0IGZ1bmN0aW9uTGlzdDsKLSAgICBib29sIGxpc3RzTWF0Y2gsIGhhc0JpZ1JvdGF0
aW9uOwotICAgIGZldGNoVHJhbnNmb3JtT3BlcmF0aW9uTGlzdCh2YWx1ZUxpc3QsIGZ1bmN0aW9u
TGlzdCwgbGlzdHNNYXRjaCwgaGFzQmlnUm90YXRpb24pOwotCi0gICAgLy8gV2UgbmVlZCB0byBm
YWxsIGJhY2sgdG8gc29mdHdhcmUgYW5pbWF0aW9uIGlmIHdlIGRvbid0IGhhdmUgc2V0VmFsdWVG
dW5jdGlvbjosIGFuZAotICAgIC8vIHdlIHdvdWxkIG5lZWQgdG8gYW5pbWF0ZSBlYWNoIGluY29t
aW5nIHRyYW5zZm9ybSBmdW5jdGlvbiBzZXBhcmF0ZWx5LiBUaGlzIGlzIHRoZQotICAgIC8vIGNh
c2UgaWYgd2UgaGF2ZSBhIHJvdGF0aW9uID49IDE4MCBvciB3ZSBoYXZlIG1vcmUgdGhhbiBvbmUg
dHJhbnNmb3JtIGZ1bmN0aW9uLgotICAgIGlmICgoaGFzQmlnUm90YXRpb24gfHwgZnVuY3Rpb25M
aXN0LnNpemUoKSA+IDEpICYmICFjYVZhbHVlRnVuY3Rpb25TdXBwb3J0ZWQoKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgYm9vbCB2YWxpZE1hdHJpY2VzID0gdHJ1ZTsKLQotICAgIEJF
R0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLQotICAgIC8vIElmIGZ1bmN0aW9uTGlzdHMgZG9u
J3QgbWF0Y2ggd2UgZG8gYSBtYXRyaXggYW5pbWF0aW9uLCBvdGhlcndpc2Ugd2UgZG8gYSBjb21w
b25lbnQgaGFyZHdhcmUgYW5pbWF0aW9uLgotICAgIC8vIEFsc28sIHdlIGNhbid0IGRvIGNvbXBv
bmVudCBhbmltYXRpb24gdW5sZXNzIHdlIGhhdmUgdmFsdWVGdW5jdGlvbiwgc28gd2UgbmVlZCB0
byBkbyBtYXRyaXggYW5pbWF0aW9uCi0gICAgLy8gaWYgdGhhdCdzIG5vdCB0cnVlIGFzIHdlbGwu
Ci0gICAgYm9vbCBpc01hdHJpeEFuaW1hdGlvbiA9ICFsaXN0c01hdGNoIHx8ICFjYVZhbHVlRnVu
Y3Rpb25TdXBwb3J0ZWQoKTsKLSAgICAKLSAgICBzaXplX3QgbnVtQW5pbWF0aW9ucyA9IGlzTWF0
cml4QW5pbWF0aW9uID8gMSA6IGZ1bmN0aW9uTGlzdC5zaXplKCk7Ci0gICAgYm9vbCBpc0tleWZy
YW1lID0gdmFsdWVMaXN0LnNpemUoKSA+IDI7Ci0gICAgCi0gICAgLy8gSXRlcmF0ZSB0aHJvdWdo
IHRoZSB0cmFuc2Zvcm0gZnVuY3Rpb25zLCBzZW5kaW5nIGFuIGFuaW1hdGlvbiBmb3IgZWFjaCBv
bmUuCi0gICAgZm9yIChzaXplX3QgYW5pbWF0aW9uSW5kZXggPSAwOyBhbmltYXRpb25JbmRleCA8
IG51bUFuaW1hdGlvbnM7ICsrYW5pbWF0aW9uSW5kZXgpIHsKLSAgICAgICAgVHJhbnNmb3JtT3Bl
cmF0aW9uOjpPcGVyYXRpb25UeXBlIHRyYW5zZm9ybU9wID0gaXNNYXRyaXhBbmltYXRpb24gPyBU
cmFuc2Zvcm1PcGVyYXRpb246Ok1BVFJJWF8zRCA6IGZ1bmN0aW9uTGlzdFthbmltYXRpb25JbmRl
eF07Ci0gICAgICAgIENBUHJvcGVydHlBbmltYXRpb24qIGNhQW5pbWF0aW9uOwotCi0jaWYgZGVm
aW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSB8fCBkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVP
UEFSRCkKLSAgICAgICAgLy8gQ0EgYXBwbGllcyBhbmltYXRpb25zIGluIHJldmVyc2Ugb3JkZXIg
KDxyZGFyOi8vcHJvYmxlbS83MDk1NjM4Pikgc28gd2UgbmVlZCB0aGUgbGFzdCBvbmUgd2UgYWRk
IChwZXIgcHJvcGVydHkpCi0gICAgICAgIC8vIHRvIGJlIG5vbi1hZGRpdGl2ZS4KLSAgICAgICAg
Ym9vbCBhZGRpdGl2ZSA9IGFuaW1hdGlvbkluZGV4IDwgKG51bUFuaW1hdGlvbnMgLSAxKTsKLSNl
bHNlCi0gICAgICAgIGJvb2wgYWRkaXRpdmUgPSBhbmltYXRpb25JbmRleCA+IDA7Ci0jZW5kaWYK
LSAgICAgICAgaWYgKGlzS2V5ZnJhbWUpIHsKLSAgICAgICAgICAgIENBS2V5ZnJhbWVBbmltYXRp
b24qIGtleWZyYW1lQW5pbSA9IGNyZWF0ZUtleWZyYW1lQW5pbWF0aW9uKGFuaW1hdGlvbiwgdmFs
dWVMaXN0LnByb3BlcnR5KCksIGFkZGl0aXZlKTsKLSAgICAgICAgICAgIHZhbGlkTWF0cmljZXMg
PSBzZXRUcmFuc2Zvcm1BbmltYXRpb25LZXlmcmFtZXModmFsdWVMaXN0LCBhbmltYXRpb24sIGtl
eWZyYW1lQW5pbSwgYW5pbWF0aW9uSW5kZXgsIHRyYW5zZm9ybU9wLCBpc01hdHJpeEFuaW1hdGlv
biwgYm94U2l6ZSk7Ci0gICAgICAgICAgICBjYUFuaW1hdGlvbiA9IGtleWZyYW1lQW5pbTsKLSAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIENBQmFzaWNBbmltYXRpb24qIGJhc2ljQW5pbSA9
IGNyZWF0ZUJhc2ljQW5pbWF0aW9uKGFuaW1hdGlvbiwgdmFsdWVMaXN0LnByb3BlcnR5KCksIGFk
ZGl0aXZlKTsKLSAgICAgICAgICAgIHZhbGlkTWF0cmljZXMgPSBzZXRUcmFuc2Zvcm1BbmltYXRp
b25FbmRwb2ludHModmFsdWVMaXN0LCBhbmltYXRpb24sIGJhc2ljQW5pbSwgYW5pbWF0aW9uSW5k
ZXgsIHRyYW5zZm9ybU9wLCBpc01hdHJpeEFuaW1hdGlvbiwgYm94U2l6ZSk7Ci0gICAgICAgICAg
ICBjYUFuaW1hdGlvbiA9IGJhc2ljQW5pbTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAg
aWYgKCF2YWxpZE1hdHJpY2VzKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgCi0gICAgICAgIG1f
dW5jb21pdHRlZEFuaW1hdGlvbnMuYXBwZW5kKExheWVyUHJvcGVydHlBbmltYXRpb24oY2FBbmlt
YXRpb24sIGFuaW1hdGlvbk5hbWUsIHZhbHVlTGlzdC5wcm9wZXJ0eSgpLCBhbmltYXRpb25JbmRl
eCwgdGltZU9mZnNldCkpOwotICAgIH0KLQotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7
Ci0KLSAgICByZXR1cm4gdmFsaWRNYXRyaWNlczsKLX0KLQotQ0FCYXNpY0FuaW1hdGlvbiogR3Jh
cGhpY3NMYXllck1hYzo6Y3JlYXRlQmFzaWNBbmltYXRpb24oY29uc3QgQW5pbWF0aW9uKiBhbmlt
LCBBbmltYXRlZFByb3BlcnR5SUQgcHJvcGVydHksIGJvb2wgYWRkaXRpdmUpCi17Ci0gICAgQ0FC
YXNpY0FuaW1hdGlvbiogYmFzaWNBbmltID0gW0NBQmFzaWNBbmltYXRpb24gYW5pbWF0aW9uV2l0
aEtleVBhdGg6cHJvcGVydHlJZFRvU3RyaW5nKHByb3BlcnR5KV07Ci0gICAgc2V0dXBBbmltYXRp
b24oYmFzaWNBbmltLCBhbmltLCBhZGRpdGl2ZSk7Ci0gICAgcmV0dXJuIGJhc2ljQW5pbTsKLX0K
LQotQ0FLZXlmcmFtZUFuaW1hdGlvbiogR3JhcGhpY3NMYXllck1hYzo6Y3JlYXRlS2V5ZnJhbWVB
bmltYXRpb24oY29uc3QgQW5pbWF0aW9uKiBhbmltLCBBbmltYXRlZFByb3BlcnR5SUQgcHJvcGVy
dHksIGJvb2wgYWRkaXRpdmUpCi17Ci0gICAgQ0FLZXlmcmFtZUFuaW1hdGlvbioga2V5ZnJhbWVB
bmltID0gW0NBS2V5ZnJhbWVBbmltYXRpb24gYW5pbWF0aW9uV2l0aEtleVBhdGg6cHJvcGVydHlJ
ZFRvU3RyaW5nKHByb3BlcnR5KV07Ci0gICAgc2V0dXBBbmltYXRpb24oa2V5ZnJhbWVBbmltLCBh
bmltLCBhZGRpdGl2ZSk7Ci0gICAgcmV0dXJuIGtleWZyYW1lQW5pbTsKLX0KLQotdm9pZCBHcmFw
aGljc0xheWVyTWFjOjpzZXR1cEFuaW1hdGlvbihDQVByb3BlcnR5QW5pbWF0aW9uKiBwcm9wZXJ0
eUFuaW0sIGNvbnN0IEFuaW1hdGlvbiogYW5pbSwgYm9vbCBhZGRpdGl2ZSkKLXsKLSAgICBkb3Vi
bGUgZHVyYXRpb24gPSBhbmltLT5kdXJhdGlvbigpOwotICAgIGlmIChkdXJhdGlvbiA8PSAwKQot
ICAgICAgICBkdXJhdGlvbiA9IGNBbmltYXRpb25BbG1vc3RaZXJvRHVyYXRpb247Ci0KLSAgICBm
bG9hdCByZXBlYXRDb3VudCA9IGFuaW0tPml0ZXJhdGlvbkNvdW50KCk7Ci0gICAgaWYgKHJlcGVh
dENvdW50ID09IEFuaW1hdGlvbjo6SXRlcmF0aW9uQ291bnRJbmZpbml0ZSkKLSAgICAgICAgcmVw
ZWF0Q291bnQgPSBGTFRfTUFYOwotICAgIGVsc2UgaWYgKGFuaW0tPmRpcmVjdGlvbigpID09IEFu
aW1hdGlvbjo6QW5pbWF0aW9uRGlyZWN0aW9uQWx0ZXJuYXRlKQotICAgICAgICByZXBlYXRDb3Vu
dCAvPSAyOwotCi0gICAgTlNTdHJpbmcgKmZpbGxNb2RlID0gMDsKLSAgICBzd2l0Y2ggKGFuaW0t
PmZpbGxNb2RlKCkpIHsKLSAgICBjYXNlIEFuaW1hdGlvbkZpbGxNb2RlTm9uZToKLSAgICAgICAg
ZmlsbE1vZGUgPSBrQ0FGaWxsTW9kZUZvcndhcmRzOyAvLyBVc2UgImZvcndhcmRzIiByYXRoZXIg
dGhhbiAicmVtb3ZlZCIgYmVjYXVzZSB0aGUgc3R5bGUgc3lzdGVtIHdpbGwgcmVtb3ZlIHRoZSBh
bmltYXRpb24gd2hlbiBpdCBpcyBmaW5pc2hlZC4gVGhpcyBhdm9pZHMgYSBmbGFzaC4KLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBBbmltYXRpb25GaWxsTW9kZUJhY2t3YXJkczoKLSAgICAgICAg
ZmlsbE1vZGUgPSBrQ0FGaWxsTW9kZUJvdGg7IC8vIFVzZSAiYm90aCIgcmF0aGVyIHRoYW4gImJh
Y2t3YXJkcyIgYmVjYXVzZSB0aGUgc3R5bGUgc3lzdGVtIHdpbGwgcmVtb3ZlIHRoZSBhbmltYXRp
b24gd2hlbiBpdCBpcyBmaW5pc2hlZC4gVGhpcyBhdm9pZHMgYSBmbGFzaC4KLSAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBBbmltYXRpb25GaWxsTW9kZUZvcndhcmRzOgotICAgICAgIGZpbGxNb2Rl
ID0ga0NBRmlsbE1vZGVGb3J3YXJkczsKLSAgICAgICBicmVhazsKLSAgICBjYXNlIEFuaW1hdGlv
bkZpbGxNb2RlQm90aDoKLSAgICAgICBmaWxsTW9kZSA9IGtDQUZpbGxNb2RlQm90aDsKLSAgICAg
ICBicmVhazsKLSAgICB9Ci0KLSAgICBbcHJvcGVydHlBbmltIHNldER1cmF0aW9uOmR1cmF0aW9u
XTsKLSAgICBbcHJvcGVydHlBbmltIHNldFJlcGVhdENvdW50OnJlcGVhdENvdW50XTsKLSAgICBb
cHJvcGVydHlBbmltIHNldEF1dG9yZXZlcnNlczphbmltLT5kaXJlY3Rpb24oKV07Ci0gICAgW3By
b3BlcnR5QW5pbSBzZXRSZW1vdmVkT25Db21wbGV0aW9uOk5PXTsKLSAgICBbcHJvcGVydHlBbmlt
IHNldEFkZGl0aXZlOmFkZGl0aXZlXTsKLSAgICBbcHJvcGVydHlBbmltIHNldEZpbGxNb2RlOmZp
bGxNb2RlXTsKLQotICAgIFtwcm9wZXJ0eUFuaW0gc2V0RGVsZWdhdGU6bV9hbmltYXRpb25EZWxl
Z2F0ZS5nZXQoKV07Ci19Ci0KLUNBTWVkaWFUaW1pbmdGdW5jdGlvbiogR3JhcGhpY3NMYXllck1h
Yzo6dGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShjb25zdCBBbmltYXRpb25WYWx1ZSog
YW5pbVZhbHVlLCBjb25zdCBBbmltYXRpb24qIGFuaW0pCi17Ci0gICAgY29uc3QgVGltaW5nRnVu
Y3Rpb24qIHRmID0gMDsKLSAgICBpZiAoYW5pbVZhbHVlLT50aW1pbmdGdW5jdGlvbigpKQotICAg
ICAgICB0ZiA9IGFuaW1WYWx1ZS0+dGltaW5nRnVuY3Rpb24oKTsKLSAgICBlbHNlIGlmIChhbmlt
LT5pc1RpbWluZ0Z1bmN0aW9uU2V0KCkpCi0gICAgICAgIHRmID0gYW5pbS0+dGltaW5nRnVuY3Rp
b24oKS5nZXQoKTsKLQotICAgIHJldHVybiBnZXRDQU1lZGlhVGltaW5nRnVuY3Rpb24odGYgPyB0
ZiA6IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb246OmNyZWF0ZSgpLmdldCgpKTsKLX0KLQotYm9v
bCBHcmFwaGljc0xheWVyTWFjOjpzZXRBbmltYXRpb25FbmRwb2ludHMoY29uc3QgS2V5ZnJhbWVW
YWx1ZUxpc3QmIHZhbHVlTGlzdCwgY29uc3QgQW5pbWF0aW9uKiBhbmltLCBDQUJhc2ljQW5pbWF0
aW9uKiBiYXNpY0FuaW0pCi17Ci0gICAgaWQgZnJvbVZhbHVlID0gbmlsOwotICAgIGlkIHRvVmFs
dWUgPSBuaWw7Ci0KLSAgICBzd2l0Y2ggKHZhbHVlTGlzdC5wcm9wZXJ0eSgpKSB7Ci0gICAgICAg
IGNhc2UgQW5pbWF0ZWRQcm9wZXJ0eU9wYWNpdHk6IHsKLSAgICAgICAgICAgIGNvbnN0IEZsb2F0
QW5pbWF0aW9uVmFsdWUqIHN0YXJ0VmFsID0gc3RhdGljX2Nhc3Q8Y29uc3QgRmxvYXRBbmltYXRp
b25WYWx1ZSo+KHZhbHVlTGlzdC5hdCgwKSk7Ci0gICAgICAgICAgICBjb25zdCBGbG9hdEFuaW1h
dGlvblZhbHVlKiBlbmRWYWwgPSBzdGF0aWNfY2FzdDxjb25zdCBGbG9hdEFuaW1hdGlvblZhbHVl
Kj4odmFsdWVMaXN0LmF0KDEpKTsKLSAgICAgICAgICAgIGZyb21WYWx1ZSA9IFtOU051bWJlciBu
dW1iZXJXaXRoRmxvYXQ6c3RhcnRWYWwtPnZhbHVlKCldOwotICAgICAgICAgICAgdG9WYWx1ZSA9
IFtOU051bWJlciBudW1iZXJXaXRoRmxvYXQ6ZW5kVmFsLT52YWx1ZSgpXTsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsgICAgIC8vIHdlIGRvbid0IGFuaW1hdGUgY29sb3IgeWV0Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICB9Ci0KLSAgICAvLyBUaGlzIGNvZGVwYXRoIGlzIHVzZWQgZm9yIDIt
a2V5ZnJhbWUgYW5pbWF0aW9ucywgc28gd2Ugc3RpbGwgbmVlZCB0byBsb29rIGluIHRoZSBzdGFy
dAotICAgIC8vIGZvciBhIHRpbWluZyBmdW5jdGlvbi4KLSAgICBDQU1lZGlhVGltaW5nRnVuY3Rp
b24qIHRpbWluZ0Z1bmN0aW9uID0gdGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZSh2YWx1
ZUxpc3QuYXQoMCksIGFuaW0pOwotICAgIFtiYXNpY0FuaW0gc2V0VGltaW5nRnVuY3Rpb246dGlt
aW5nRnVuY3Rpb25dOwotCi0gICAgW2Jhc2ljQW5pbSBzZXRGcm9tVmFsdWU6ZnJvbVZhbHVlXTsK
LSAgICBbYmFzaWNBbmltIHNldFRvVmFsdWU6dG9WYWx1ZV07Ci0KLSAgICByZXR1cm4gdHJ1ZTsK
LX0KLQotYm9vbCBHcmFwaGljc0xheWVyTWFjOjpzZXRBbmltYXRpb25LZXlmcmFtZXMoY29uc3Qg
S2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCwgY29uc3QgQW5pbWF0aW9uKiBhbmltLCBDQUtl
eWZyYW1lQW5pbWF0aW9uKiBrZXlmcmFtZUFuaW0pCi17Ci0gICAgUmV0YWluUHRyPE5TTXV0YWJs
ZUFycmF5PiBrZXlUaW1lcyhBZG9wdE5TLCBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7
Ci0gICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiB2YWx1ZXMoQWRvcHROUywgW1tOU011dGFi
bGVBcnJheSBhbGxvY10gaW5pdF0pOwotICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gdGlt
aW5nRnVuY3Rpb25zKEFkb3B0TlMsIFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKLQot
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB2YWx1ZUxpc3Quc2l6ZSgpOyArK2kpIHsKLSAg
ICAgICAgY29uc3QgQW5pbWF0aW9uVmFsdWUqIGN1clZhbHVlID0gdmFsdWVMaXN0LmF0KGkpOwot
ICAgICAgICBba2V5VGltZXMuZ2V0KCkgYWRkT2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoRmxv
YXQ6Y3VyVmFsdWUtPmtleVRpbWUoKV1dOwotCi0gICAgICAgIHN3aXRjaCAodmFsdWVMaXN0LnBy
b3BlcnR5KCkpIHsKLSAgICAgICAgICAgIGNhc2UgQW5pbWF0ZWRQcm9wZXJ0eU9wYWNpdHk6IHsK
LSAgICAgICAgICAgICAgICBjb25zdCBGbG9hdEFuaW1hdGlvblZhbHVlKiBmbG9hdFZhbHVlID0g
c3RhdGljX2Nhc3Q8Y29uc3QgRmxvYXRBbmltYXRpb25WYWx1ZSo+KGN1clZhbHVlKTsKLSAgICAg
ICAgICAgICAgICBbdmFsdWVzLmdldCgpIGFkZE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aEZs
b2F0OmZsb2F0VmFsdWUtPnZhbHVlKCldXTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7ICAgICAvLyB3ZSBkb24ndCBhbmltYXRlIGNvbG9yIHlldAotICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0KLSAgICAgICAgQ0FNZWRpYVRpbWluZ0Z1bmN0aW9u
KiB0aW1pbmdGdW5jdGlvbiA9IHRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUoY3VyVmFs
dWUsIGFuaW0pOwotICAgICAgICBbdGltaW5nRnVuY3Rpb25zLmdldCgpIGFkZE9iamVjdDp0aW1p
bmdGdW5jdGlvbl07Ci0gICAgfQotICAgIAotICAgIC8vIFdlIHRvc3MgdGhlIGxhc3QgdGZBcnJh
eSB2YWx1ZSBiZWNhdXNlIGl0IGhhcyB0byBvbmUgc2hvcnRlciB0aGFuIHRoZSBvdGhlcnMuCi0g
ICAgW3RpbWluZ0Z1bmN0aW9ucy5nZXQoKSByZW1vdmVMYXN0T2JqZWN0XTsKLQotICAgIFtrZXlm
cmFtZUFuaW0gc2V0S2V5VGltZXM6a2V5VGltZXMuZ2V0KCldOwotICAgIFtrZXlmcmFtZUFuaW0g
c2V0VmFsdWVzOnZhbHVlcy5nZXQoKV07Ci0gICAgW2tleWZyYW1lQW5pbSBzZXRUaW1pbmdGdW5j
dGlvbnM6dGltaW5nRnVuY3Rpb25zLmdldCgpXTsKLSAgICAKLSAgICByZXR1cm4gdHJ1ZTsKLX0K
LQotYm9vbCBHcmFwaGljc0xheWVyTWFjOjpzZXRUcmFuc2Zvcm1BbmltYXRpb25FbmRwb2ludHMo
Y29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCwgY29uc3QgQW5pbWF0aW9uKiBhbmlt
LCBDQUJhc2ljQW5pbWF0aW9uKiBiYXNpY0FuaW0sIGludCBmdW5jdGlvbkluZGV4LCBUcmFuc2Zv
cm1PcGVyYXRpb246Ok9wZXJhdGlvblR5cGUgdHJhbnNmb3JtT3AsIGJvb2wgaXNNYXRyaXhBbmlt
YXRpb24sIGNvbnN0IEludFNpemUmIGJveFNpemUpCi17Ci0gICAgaWQgZnJvbVZhbHVlOwotICAg
IGlkIHRvVmFsdWU7Ci0gICAgCi0gICAgQVNTRVJUKHZhbHVlTGlzdC5zaXplKCkgPT0gMik7Ci0g
ICAgY29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUqIHN0YXJ0VmFsdWUgPSBzdGF0aWNfY2Fz
dDxjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSo+KHZhbHVlTGlzdC5hdCgwKSk7Ci0gICAg
Y29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUqIGVuZFZhbHVlID0gc3RhdGljX2Nhc3Q8Y29u
c3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUqPih2YWx1ZUxpc3QuYXQoMSkpOwotICAgIAotICAg
IGlmIChpc01hdHJpeEFuaW1hdGlvbikgewotICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBm
cm9tVHJhbnNmb3JtLCB0b1RyYW5zZm9ybTsKLSAgICAgICAgc3RhcnRWYWx1ZS0+dmFsdWUoKS0+
YXBwbHkoYm94U2l6ZSwgZnJvbVRyYW5zZm9ybSk7Ci0gICAgICAgIGVuZFZhbHVlLT52YWx1ZSgp
LT5hcHBseShib3hTaXplLCB0b1RyYW5zZm9ybSk7Ci0KLSAgICAgICAgLy8gSWYgYW55IG1hdHJp
eCBpcyBzaW5ndWxhciwgQ0Egd29uJ3QgYW5pbWF0ZSBpdCBjb3JyZWN0bHkuIFNvIGZhbGwgYmFj
ayB0byBzb2Z0d2FyZSBhbmltYXRpb24KLSAgICAgICAgaWYgKCFmcm9tVHJhbnNmb3JtLmlzSW52
ZXJ0aWJsZSgpIHx8ICF0b1RyYW5zZm9ybS5pc0ludmVydGlibGUoKSkKLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgICAgICBDQVRyYW5zZm9ybTNEIGNhVHJhbnNmb3JtOwotICAgICAg
ICBjb3B5VHJhbnNmb3JtKGNhVHJhbnNmb3JtLCBmcm9tVHJhbnNmb3JtKTsKLSAgICAgICAgZnJv
bVZhbHVlID0gW05TVmFsdWUgdmFsdWVXaXRoQ0FUcmFuc2Zvcm0zRDpjYVRyYW5zZm9ybV07Ci0K
LSAgICAgICAgY29weVRyYW5zZm9ybShjYVRyYW5zZm9ybSwgdG9UcmFuc2Zvcm0pOwotICAgICAg
ICB0b1ZhbHVlID0gW05TVmFsdWUgdmFsdWVXaXRoQ0FUcmFuc2Zvcm0zRDpjYVRyYW5zZm9ybV07
Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgZnJvbVZhbHVlID0gZ2V0VHJhbnNmb3JtRnVuY3Rpb25W
YWx1ZShzdGFydFZhbHVlLT52YWx1ZSgpLT5hdChmdW5jdGlvbkluZGV4KSwgdHJhbnNmb3JtT3As
IGJveFNpemUpOwotICAgICAgICB0b1ZhbHVlID0gZ2V0VHJhbnNmb3JtRnVuY3Rpb25WYWx1ZShl
bmRWYWx1ZS0+dmFsdWUoKS0+YXQoZnVuY3Rpb25JbmRleCksIHRyYW5zZm9ybU9wLCBib3hTaXpl
KTsKLSAgICB9Ci0KLSAgICAvLyBUaGlzIGNvZGVwYXRoIGlzIHVzZWQgZm9yIDIta2V5ZnJhbWUg
YW5pbWF0aW9ucywgc28gd2Ugc3RpbGwgbmVlZCB0byBsb29rIGluIHRoZSBzdGFydAotICAgIC8v
IGZvciBhIHRpbWluZyBmdW5jdGlvbi4KLSAgICBDQU1lZGlhVGltaW5nRnVuY3Rpb24qIHRpbWlu
Z0Z1bmN0aW9uID0gdGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZSh2YWx1ZUxpc3QuYXQo
MCksIGFuaW0pOwotICAgIFtiYXNpY0FuaW0gc2V0VGltaW5nRnVuY3Rpb246dGltaW5nRnVuY3Rp
b25dOwotCi0gICAgW2Jhc2ljQW5pbSBzZXRGcm9tVmFsdWU6ZnJvbVZhbHVlXTsKLSAgICBbYmFz
aWNBbmltIHNldFRvVmFsdWU6dG9WYWx1ZV07Ci0KLSNpZiBIQVZFX01PREVSTl9RVUFSVFpDT1JF
Ci0gICAgaWYgKE5TU3RyaW5nICp2YWx1ZUZ1bmN0aW9uTmFtZSA9IGdldFZhbHVlRnVuY3Rpb25O
YW1lRm9yVHJhbnNmb3JtT3BlcmF0aW9uKHRyYW5zZm9ybU9wKSkKLSAgICAgICAgW2Jhc2ljQW5p
bSBzZXRWYWx1ZUZ1bmN0aW9uOltDQVZhbHVlRnVuY3Rpb24gZnVuY3Rpb25XaXRoTmFtZTp2YWx1
ZUZ1bmN0aW9uTmFtZV1dOwotI2VuZGlmCi0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBH
cmFwaGljc0xheWVyTWFjOjpzZXRUcmFuc2Zvcm1BbmltYXRpb25LZXlmcmFtZXMoY29uc3QgS2V5
ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCwgY29uc3QgQW5pbWF0aW9uKiBhbmltYXRpb24sIENB
S2V5ZnJhbWVBbmltYXRpb24qIGtleWZyYW1lQW5pbSwgaW50IGZ1bmN0aW9uSW5kZXgsIFRyYW5z
Zm9ybU9wZXJhdGlvbjo6T3BlcmF0aW9uVHlwZSB0cmFuc2Zvcm1PcFR5cGUsIGJvb2wgaXNNYXRy
aXhBbmltYXRpb24sIGNvbnN0IEludFNpemUmIGJveFNpemUpCi17Ci0gICAgUmV0YWluUHRyPE5T
TXV0YWJsZUFycmF5PiBrZXlUaW1lcyhBZG9wdE5TLCBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBp
bml0XSk7Ci0gICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiB2YWx1ZXMoQWRvcHROUywgW1tO
U011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwotICAgIFJldGFpblB0cjxOU011dGFibGVBcnJh
eT4gdGltaW5nRnVuY3Rpb25zKEFkb3B0TlMsIFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRd
KTsKLQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB2YWx1ZUxpc3Quc2l6ZSgpOyArK2kp
IHsKLSAgICAgICAgY29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUqIGN1clZhbHVlID0gc3Rh
dGljX2Nhc3Q8Y29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUqPih2YWx1ZUxpc3QuYXQoaSkp
OwotICAgICAgICBba2V5VGltZXMuZ2V0KCkgYWRkT2JqZWN0OltOU051bWJlciBudW1iZXJXaXRo
RmxvYXQ6Y3VyVmFsdWUtPmtleVRpbWUoKV1dOwotCi0gICAgICAgIGlmIChpc01hdHJpeEFuaW1h
dGlvbikgewotICAgICAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtOwotICAg
ICAgICAgICAgY3VyVmFsdWUtPnZhbHVlKCktPmFwcGx5KGJveFNpemUsIHRyYW5zZm9ybSk7Ci0K
LSAgICAgICAgICAgIC8vIElmIGFueSBtYXRyaXggaXMgc2luZ3VsYXIsIENBIHdvbid0IGFuaW1h
dGUgaXQgY29ycmVjdGx5LiBTbyBmYWxsIGJhY2sgdG8gc29mdHdhcmUgYW5pbWF0aW9uCi0gICAg
ICAgICAgICBpZiAoIXRyYW5zZm9ybS5pc0ludmVydGlibGUoKSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgICAgIENBVHJhbnNmb3JtM0QgY2FUcmFuc2Zvcm07Ci0g
ICAgICAgICAgICBjb3B5VHJhbnNmb3JtKGNhVHJhbnNmb3JtLCB0cmFuc2Zvcm0pOwotICAgICAg
ICAgICAgW3ZhbHVlcy5nZXQoKSBhZGRPYmplY3Q6W05TVmFsdWUgdmFsdWVXaXRoQ0FUcmFuc2Zv
cm0zRDpjYVRyYW5zZm9ybV1dOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgY29uc3Qg
VHJhbnNmb3JtT3BlcmF0aW9uKiB0cmFuc2Zvcm1PcCA9IGN1clZhbHVlLT52YWx1ZSgpLT5hdChm
dW5jdGlvbkluZGV4KTsKLSAgICAgICAgICAgIFt2YWx1ZXMuZ2V0KCkgYWRkT2JqZWN0OmdldFRy
YW5zZm9ybUZ1bmN0aW9uVmFsdWUodHJhbnNmb3JtT3AsIHRyYW5zZm9ybU9wVHlwZSwgYm94U2l6
ZSldOwotICAgICAgICB9Ci0KLSAgICAgICAgQ0FNZWRpYVRpbWluZ0Z1bmN0aW9uKiB0aW1pbmdG
dW5jdGlvbiA9IHRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUoY3VyVmFsdWUsIGFuaW1h
dGlvbik7Ci0gICAgICAgIFt0aW1pbmdGdW5jdGlvbnMuZ2V0KCkgYWRkT2JqZWN0OnRpbWluZ0Z1
bmN0aW9uXTsKLSAgICB9Ci0gICAgCi0gICAgLy8gV2UgdG9zcyB0aGUgbGFzdCB0ZkFycmF5IHZh
bHVlIGJlY2F1c2UgaXQgaGFzIHRvIG9uZSBzaG9ydGVyIHRoYW4gdGhlIG90aGVycy4KLSAgICBb
dGltaW5nRnVuY3Rpb25zLmdldCgpIHJlbW92ZUxhc3RPYmplY3RdOwotCi0gICAgW2tleWZyYW1l
QW5pbSBzZXRLZXlUaW1lczprZXlUaW1lcy5nZXQoKV07Ci0gICAgW2tleWZyYW1lQW5pbSBzZXRW
YWx1ZXM6dmFsdWVzLmdldCgpXTsKLSAgICBba2V5ZnJhbWVBbmltIHNldFRpbWluZ0Z1bmN0aW9u
czp0aW1pbmdGdW5jdGlvbnMuZ2V0KCldOwotCi0jaWYgSEFWRV9NT0RFUk5fUVVBUlRaQ09SRQot
ICAgIGlmIChOU1N0cmluZyAqdmFsdWVGdW5jdGlvbk5hbWUgPSBnZXRWYWx1ZUZ1bmN0aW9uTmFt
ZUZvclRyYW5zZm9ybU9wZXJhdGlvbih0cmFuc2Zvcm1PcFR5cGUpKQotICAgICAgICBba2V5ZnJh
bWVBbmltIHNldFZhbHVlRnVuY3Rpb246W0NBVmFsdWVGdW5jdGlvbiBmdW5jdGlvbldpdGhOYW1l
OnZhbHVlRnVuY3Rpb25OYW1lXV07Ci0jZW5kaWYKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9p
ZCBHcmFwaGljc0xheWVyTWFjOjpzdXNwZW5kQW5pbWF0aW9ucyhkb3VibGUgdGltZSkKLXsKLSAg
ICBkb3VibGUgdCA9IGN1cnJlbnRUaW1lVG9NZWRpYVRpbWUodGltZSA/IHRpbWUgOiBjdXJyZW50
VGltZSgpKTsKLSAgICBbcHJpbWFyeUxheWVyKCkgc2V0U3BlZWQ6MF07Ci0gICAgW3ByaW1hcnlM
YXllcigpIHNldFRpbWVPZmZzZXQ6dF07Ci0KLSAgICAvLyBTdXNwZW5kIHRoZSBhbmltYXRpb25z
IG9uIHRoZSBjbG9uZXMgdG9vLgotICAgIGlmIChMYXllck1hcCogbGF5ZXJDbG9uZU1hcCA9IHBy
aW1hcnlMYXllckNsb25lcygpKSB7Ci0gICAgICAgIExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBl
bmQgPSBsYXllckNsb25lTWFwLT5lbmQoKTsKLSAgICAgICAgZm9yIChMYXllck1hcDo6Y29uc3Rf
aXRlcmF0b3IgaXQgPSBsYXllckNsb25lTWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsK
LSAgICAgICAgICAgIENBTGF5ZXIgKmN1cnJMYXllciA9IGl0LT5zZWNvbmQuZ2V0KCk7Ci0gICAg
ICAgICAgICBbY3VyckxheWVyIHNldFNwZWVkOjBdOwotICAgICAgICAgICAgW2N1cnJMYXllciBz
ZXRUaW1lT2Zmc2V0OnRdOwotICAgICAgICB9Ci0gICAgfQotfQotCi12b2lkIEdyYXBoaWNzTGF5
ZXJNYWM6OnJlc3VtZUFuaW1hdGlvbnMoKQotewotICAgIFtwcmltYXJ5TGF5ZXIoKSBzZXRTcGVl
ZDoxXTsKLSAgICBbcHJpbWFyeUxheWVyKCkgc2V0VGltZU9mZnNldDowXTsKLQotICAgIC8vIFJl
c3VtZSB0aGUgYW5pbWF0aW9ucyBvbiB0aGUgY2xvbmVzIHRvby4KLSAgICBpZiAoTGF5ZXJNYXAq
IGxheWVyQ2xvbmVNYXAgPSBwcmltYXJ5TGF5ZXJDbG9uZXMoKSkgewotICAgICAgICBMYXllck1h
cDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbGF5ZXJDbG9uZU1hcC0+ZW5kKCk7Ci0gICAgICAgIGZv
ciAoTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbGF5ZXJDbG9uZU1hcC0+YmVnaW4oKTsg
aXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICBDQUxheWVyICpjdXJyTGF5ZXIgPSBpdC0+
c2Vjb25kLmdldCgpOwotICAgICAgICAgICAgW2N1cnJMYXllciBzZXRTcGVlZDoxXTsKLSAgICAg
ICAgICAgIFtjdXJyTGF5ZXIgc2V0VGltZU9mZnNldDowXTsKLSAgICAgICAgfQotICAgIH0KLX0K
LQotQ0FMYXllciogR3JhcGhpY3NMYXllck1hYzo6aG9zdExheWVyRm9yU3VibGF5ZXJzKCkgY29u
c3QKLXsKLSAgICByZXR1cm4gbV9zdHJ1Y3R1cmFsTGF5ZXIuZ2V0KCkgPyBtX3N0cnVjdHVyYWxM
YXllci5nZXQoKSA6IG1fbGF5ZXIuZ2V0KCk7IAotfQotCi1DQUxheWVyKiBHcmFwaGljc0xheWVy
TWFjOjpsYXllckZvclN1cGVybGF5ZXIoKSBjb25zdAotewotICAgIHJldHVybiBtX3N0cnVjdHVy
YWxMYXllciA/IG1fc3RydWN0dXJhbExheWVyLmdldCgpIDogbV9sYXllci5nZXQoKTsKLX0KLQot
Q0FMYXllciogR3JhcGhpY3NMYXllck1hYzo6YW5pbWF0ZWRMYXllcihBbmltYXRlZFByb3BlcnR5
SUQgcHJvcGVydHkpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIChwcm9wZXJ0eSA9PSBBbmltYXRlZFBy
b3BlcnR5QmFja2dyb3VuZENvbG9yKSA/IG1fY29udGVudHNMYXllci5nZXQoKSA6IHByaW1hcnlM
YXllcigpOwotfQotCi1HcmFwaGljc0xheWVyTWFjOjpMYXllck1hcCogR3JhcGhpY3NMYXllck1h
Yzo6YW5pbWF0ZWRMYXllckNsb25lcyhBbmltYXRlZFByb3BlcnR5SUQgcHJvcGVydHkpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIChwcm9wZXJ0eSA9PSBBbmltYXRlZFByb3BlcnR5QmFja2dyb3VuZENv
bG9yKSA/IG1fY29udGVudHNMYXllckNsb25lcy5nZXQoKSA6IHByaW1hcnlMYXllckNsb25lcygp
OwotfQotCi1QbGF0Zm9ybUxheWVyKiBHcmFwaGljc0xheWVyTWFjOjpwbGF0Zm9ybUxheWVyKCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gcHJpbWFyeUxheWVyKCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NM
YXllck1hYzo6c2V0RGVidWdCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQotewot
ICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIAotICAgIGlmIChjb2xvci5pc1Zh
bGlkKCkpCi0gICAgICAgIHNldExheWVyQmFja2dyb3VuZENvbG9yKG1fbGF5ZXIuZ2V0KCksIGNv
bG9yKTsKLSAgICBlbHNlCi0gICAgICAgIGNsZWFyTGF5ZXJCYWNrZ3JvdW5kQ29sb3IobV9sYXll
ci5nZXQoKSk7Ci0gICAgCi0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotfQotCi12b2lk
IEdyYXBoaWNzTGF5ZXJNYWM6OnNldERlYnVnQm9yZGVyKGNvbnN0IENvbG9yJiBjb2xvciwgZmxv
YXQgYm9yZGVyV2lkdGgpCi17Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAg
Ci0gICAgaWYgKGNvbG9yLmlzVmFsaWQoKSkgewotICAgICAgICBzZXRMYXllckJvcmRlckNvbG9y
KG1fbGF5ZXIuZ2V0KCksIGNvbG9yKTsKLSAgICAgICAgW21fbGF5ZXIuZ2V0KCkgc2V0Qm9yZGVy
V2lkdGg6Ym9yZGVyV2lkdGhdOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGNsZWFyQm9yZGVyQ29s
b3IobV9sYXllci5nZXQoKSk7Ci0gICAgICAgIFttX2xheWVyLmdldCgpIHNldEJvcmRlcldpZHRo
OjBdOwotICAgIH0KLSAgICAKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi19Ci0KLUZs
b2F0U2l6ZSBHcmFwaGljc0xheWVyTWFjOjpjb25zdHJhaW5lZFNpemUoKSBjb25zdAotewotICAg
IGZsb2F0IHRpbGVDb2x1bW5zID0gY2VpbGYobV9zaXplLndpZHRoKCkgLyBjVGlsZWRMYXllclRp
bGVTaXplKTsKLSAgICBmbG9hdCB0aWxlUm93cyA9IGNlaWxmKG1fc2l6ZS5oZWlnaHQoKSAvIGNU
aWxlZExheWVyVGlsZVNpemUpOwotICAgIGRvdWJsZSBudW1UaWxlcyA9IHRpbGVDb2x1bW5zICog
dGlsZVJvd3M7Ci0gICAgCi0gICAgRmxvYXRTaXplIGNvbnN0cmFpbmVkU2l6ZSA9IG1fc2l6ZTsK
LSAgICBjb25zdCB1bnNpZ25lZCBjTWF4VGlsZUNvdW50ID0gNTEyOwotICAgIHdoaWxlIChudW1U
aWxlcyA+IGNNYXhUaWxlQ291bnQpIHsKLSAgICAgICAgLy8gQ29uc3RyYWluIHRoZSB3aWRlciBk
aW1lbnNpb24uCi0gICAgICAgIGlmIChjb25zdHJhaW5lZFNpemUud2lkdGgoKSA+PSBjb25zdHJh
aW5lZFNpemUuaGVpZ2h0KCkpIHsKLSAgICAgICAgICAgIHRpbGVDb2x1bW5zID0gbWF4KGZsb29y
ZihjTWF4VGlsZUNvdW50IC8gdGlsZVJvd3MpLCAxLjBmKTsKLSAgICAgICAgICAgIGNvbnN0cmFp
bmVkU2l6ZS5zZXRXaWR0aCh0aWxlQ29sdW1ucyAqIGNUaWxlZExheWVyVGlsZVNpemUpOwotICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgdGlsZVJvd3MgPSBtYXgoZmxvb3JmKGNNYXhUaWxl
Q291bnQgLyB0aWxlQ29sdW1ucyksIDEuMGYpOwotICAgICAgICAgICAgY29uc3RyYWluZWRTaXpl
LnNldEhlaWdodCh0aWxlUm93cyAqIGNUaWxlZExheWVyVGlsZVNpemUpOwotICAgICAgICB9Ci0g
ICAgICAgIG51bVRpbGVzID0gdGlsZUNvbHVtbnMgKiB0aWxlUm93czsKLSAgICB9Ci0gICAgCi0g
ICAgcmV0dXJuIGNvbnN0cmFpbmVkU2l6ZTsKLX0KLQotYm9vbCBHcmFwaGljc0xheWVyTWFjOjpy
ZXF1aXJlc1RpbGVkTGF5ZXIoY29uc3QgRmxvYXRTaXplJiBzaXplKSBjb25zdAotewotICAgIGlm
ICghbV9kcmF3c0NvbnRlbnQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIEZJWE1F
OiBjYXRjaCB6ZXJvLXNpemUgaGVpZ2h0IG9yIHdpZHRoIGhlcmUgKG9yIGVhcmxpZXIpPwotICAg
IHJldHVybiBzaXplLndpZHRoKCkgPiBjTWF4UGl4ZWxEaW1lbnNpb24gfHwgc2l6ZS5oZWlnaHQo
KSA+IGNNYXhQaXhlbERpbWVuc2lvbjsKLX0KLQotdm9pZCBHcmFwaGljc0xheWVyTWFjOjpzd2Fw
RnJvbU9yVG9UaWxlZExheWVyKGJvb2wgdXNlVGlsZWRMYXllcikKLXsKLSAgICBpZiAodXNlVGls
ZWRMYXllciA9PSBtX3VzaW5nVGlsZWRMYXllcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQ0dT
aXplIHRpbGVTaXplID0gQ0dTaXplTWFrZShjVGlsZWRMYXllclRpbGVTaXplLCBjVGlsZWRMYXll
clRpbGVTaXplKTsKLQotICAgIFJldGFpblB0cjxDQUxheWVyPiBvbGRMYXllciA9IG1fbGF5ZXIu
Z2V0KCk7Ci0gICAgCi0gICAgQ2xhc3MgbGF5ZXJDbGFzcyA9IHVzZVRpbGVkTGF5ZXIgPyBbV2Vi
VGlsZWRMYXllciBzZWxmXSA6IFtXZWJMYXllciBzZWxmXTsKLSAgICBtX2xheWVyLmFkb3B0TlMo
W1tsYXllckNsYXNzIGFsbG9jXSBpbml0XSk7Ci0KLSAgICBtX3VzaW5nVGlsZWRMYXllciA9IHVz
ZVRpbGVkTGF5ZXI7Ci0KLSAgICBpZiAodXNlVGlsZWRMYXllcikgewotICAgICAgICBXZWJUaWxl
ZExheWVyKiB0aWxlZExheWVyID0gKFdlYlRpbGVkTGF5ZXIqKW1fbGF5ZXIuZ2V0KCk7Ci0gICAg
ICAgIFt0aWxlZExheWVyIHNldFRpbGVTaXplOnRpbGVTaXplXTsKLSAgICAgICAgW3RpbGVkTGF5
ZXIgc2V0TGV2ZWxzT2ZEZXRhaWw6MV07Ci0gICAgICAgIFt0aWxlZExheWVyIHNldExldmVsc09m
RGV0YWlsQmlhczowXTsKLSAgICAgICAgW3RpbGVkTGF5ZXIgc2V0Q29udGVudHNHcmF2aXR5OkAi
Ym90dG9tTGVmdCJdOwotCi0jaWYgIUhBVkVfTU9ERVJOX1FVQVJUWkNPUkUKLSAgICAgICAgLy8g
VGlsZWQgbGF5ZXIgaGFzIGlzc3VlcyB3aXRoIGZsaXBwZWQgY29vcmRpbmF0ZXMuCi0gICAgICAg
IHNldENvbnRlbnRzT3JpZW50YXRpb24oQ29tcG9zaXRpbmdDb29yZGluYXRlc1RvcERvd24pOwot
I2VuZGlmCi0gICAgfSBlbHNlIHsKLSNpZiAhSEFWRV9NT0RFUk5fUVVBUlRaQ09SRQotICAgICAg
ICBzZXRDb250ZW50c09yaWVudGF0aW9uKGRlZmF1bHRDb250ZW50c09yaWVudGF0aW9uKCkpOwot
I2VuZGlmCi0gICAgfQotICAgIAotICAgIFttX2xheWVyLmdldCgpIHNldExheWVyT3duZXI6dGhp
c107Ci0gICAgc2FmZVNldFN1YmxheWVycyhtX2xheWVyLmdldCgpLCBbb2xkTGF5ZXIuZ2V0KCkg
c3VibGF5ZXJzXSk7Ci0gICAgCi0gICAgW1tvbGRMYXllci5nZXQoKSBzdXBlcmxheWVyXSByZXBs
YWNlU3VibGF5ZXI6b2xkTGF5ZXIuZ2V0KCkgd2l0aDptX2xheWVyLmdldCgpXTsKLQotICAgIHVw
ZGF0ZUNvbnRlbnRzVHJhbnNmb3JtKCk7Ci0KLSAgICB1cGRhdGVMYXllclBvc2l0aW9uKCk7Ci0g
ICAgdXBkYXRlTGF5ZXJTaXplKCk7Ci0gICAgdXBkYXRlQW5jaG9yUG9pbnQoKTsKLSAgICB1cGRh
dGVUcmFuc2Zvcm0oKTsKLSAgICB1cGRhdGVDaGlsZHJlblRyYW5zZm9ybSgpOwotICAgIHVwZGF0
ZU1hc2tzVG9Cb3VuZHMoKTsKLSAgICB1cGRhdGVDb250ZW50c09wYXF1ZSgpOwotICAgIHVwZGF0
ZUJhY2tmYWNlVmlzaWJpbGl0eSgpOwotICAgIHVwZGF0ZUxheWVyQmFja2dyb3VuZENvbG9yKCk7
Ci0gICAgCi0gICAgdXBkYXRlT3BhY2l0eU9uTGF5ZXIoKTsKLSAgICAKLSNpZm5kZWYgTkRFQlVH
Ci0gICAgU3RyaW5nIG5hbWUgPSBTdHJpbmc6OmZvcm1hdCgiQ0FMYXllciglcCkgR3JhcGhpY3NM
YXllciglcCkgIiwgbV9sYXllci5nZXQoKSwgdGhpcykgKyBtX25hbWU7Ci0gICAgW21fbGF5ZXIu
Z2V0KCkgc2V0TmFtZTpuYW1lXTsKLSNlbmRpZgotCi0gICAgLy8gbW92ZSBvdmVyIGFuaW1hdGlv
bnMKLSAgICBtb3ZlT3JDb3B5QW5pbWF0aW9uc0ZvclByb3BlcnR5KE1vdmUsIEFuaW1hdGVkUHJv
cGVydHlXZWJraXRUcmFuc2Zvcm0sIG9sZExheWVyLmdldCgpLCBtX2xheWVyLmdldCgpKTsKLSAg
ICBtb3ZlT3JDb3B5QW5pbWF0aW9uc0ZvclByb3BlcnR5KE1vdmUsIEFuaW1hdGVkUHJvcGVydHlP
cGFjaXR5LCBvbGRMYXllci5nZXQoKSwgbV9sYXllci5nZXQoKSk7Ci0gICAgbW92ZU9yQ29weUFu
aW1hdGlvbnNGb3JQcm9wZXJ0eShNb3ZlLCBBbmltYXRlZFByb3BlcnR5QmFja2dyb3VuZENvbG9y
LCBvbGRMYXllci5nZXQoKSwgbV9sYXllci5nZXQoKSk7Ci0gICAgCi0gICAgLy8gbmVlZCB0byB0
ZWxsIG5ldyBsYXllciB0byBkcmF3IGl0c2VsZgotICAgIHNldE5lZWRzRGlzcGxheSgpOwotICAg
IAotICAgIHVwZGF0ZURlYnVnSW5kaWNhdG9ycygpOwotfQotCi1HcmFwaGljc0xheWVyOjpDb21w
b3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRpb24gR3JhcGhpY3NMYXllck1hYzo6ZGVmYXVsdENv
bnRlbnRzT3JpZW50YXRpb24oKSBjb25zdAotewotI2lmICFIQVZFX01PREVSTl9RVUFSVFpDT1JF
Ci0gICAgLy8gT2xkZXIgUXVhcnR6Q29yZSBkb2VzIG5vdCBzdXBwb3J0IC1nZW9tZXRyeUZsaXBw
ZWQsIHNvIHdlIG1hbnVhbGx5IGZsaXAgdGhlIHJvb3QKLSAgICAvLyBsYXllciBnZW9tZXRyeSwg
YW5kIHRoZW4gZmxpcCB0aGUgY29udGVudHMgb2YgZWFjaCBsYXllciBiYWNrIHNvIHRoYXQgdGhl
IENUTSBmb3IgQ0cKLSAgICAvLyBpcyB1bmZsaXBwZWQsIGFsbG93aW5nIGl0IHRvIGRvIHRoZSBj
b3JyZWN0IGZvbnQgYXV0by1oaW50aW5nLgotICAgIHJldHVybiBDb21wb3NpdGluZ0Nvb3JkaW5h
dGVzQm90dG9tVXA7Ci0jZWxzZQotICAgIHJldHVybiBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzVG9w
RG93bjsKLSNlbmRpZgotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnVwZGF0ZUNvbnRlbnRz
VHJhbnNmb3JtKCkKLXsKLSNpZiAhSEFWRV9NT0RFUk5fUVVBUlRaQ09SRQotICAgIGlmIChjb250
ZW50c09yaWVudGF0aW9uKCkgPT0gQ29tcG9zaXRpbmdDb29yZGluYXRlc0JvdHRvbVVwKSB7Ci0g
ICAgICAgIENHQWZmaW5lVHJhbnNmb3JtIGNvbnRlbnRzVHJhbnNmb3JtID0gQ0dBZmZpbmVUcmFu
c2Zvcm1NYWtlU2NhbGUoMSwgLTEpOwotICAgICAgICBjb250ZW50c1RyYW5zZm9ybSA9IENHQWZm
aW5lVHJhbnNmb3JtVHJhbnNsYXRlKGNvbnRlbnRzVHJhbnNmb3JtLCAwLCAtW21fbGF5ZXIuZ2V0
KCkgYm91bmRzXS5zaXplLmhlaWdodCk7Ci0gICAgICAgIFttX2xheWVyLmdldCgpIHNldENvbnRl
bnRzVHJhbnNmb3JtOmNvbnRlbnRzVHJhbnNmb3JtXTsKLSAgICB9Ci0jZW5kaWYKLX0KLQotdm9p
ZCBHcmFwaGljc0xheWVyTWFjOjpzZXR1cENvbnRlbnRzTGF5ZXIoQ0FMYXllciogY29udGVudHNM
YXllcikKLXsKLSAgICAvLyBUdXJuIG9mZiBpbXBsaWNpdCBhbmltYXRpb25zIG9uIHRoZSBpbm5l
ciBsYXllci4KLSAgICBbY29udGVudHNMYXllciBzZXRTdHlsZTpbTlNEaWN0aW9uYXJ5IGRpY3Rp
b25hcnlXaXRoT2JqZWN0Om51bGxBY3Rpb25zRGljdGlvbmFyeSgpIGZvcktleTpAImFjdGlvbnMi
XV07Ci0gICAgW2NvbnRlbnRzTGF5ZXIgc2V0TWFza3NUb0JvdW5kczpZRVNdOwotCi0gICAgaWYg
KGRlZmF1bHRDb250ZW50c09yaWVudGF0aW9uKCkgPT0gQ29tcG9zaXRpbmdDb29yZGluYXRlc0Jv
dHRvbVVwKSB7Ci0gICAgICAgIENBVHJhbnNmb3JtM0QgZmxpcHBlciA9IHsKLSAgICAgICAgICAg
IDEuMGYsIDAuMGYsIDAuMGYsIDAuMGYsCi0gICAgICAgICAgICAwLjBmLCAtMS4wZiwgMC4wZiwg
MC4wZiwKLSAgICAgICAgICAgIDAuMGYsIDAuMGYsIDEuMGYsIDAuMGYsCi0gICAgICAgICAgICAw
LjBmLCAwLjBmLCAwLjBmLCAxLjBmfTsKLSAgICAgICAgW2NvbnRlbnRzTGF5ZXIgc2V0VHJhbnNm
b3JtOmZsaXBwZXJdOwotICAgICAgICBbY29udGVudHNMYXllciBzZXRBbmNob3JQb2ludDpDR1Bv
aW50TWFrZSgwLjBmLCAxLjBmKV07Ci0gICAgfSBlbHNlCi0gICAgICAgIFtjb250ZW50c0xheWVy
IHNldEFuY2hvclBvaW50OkNHUG9pbnRaZXJvXTsKLQotICAgIGlmIChzaG93RGVidWdCb3JkZXJz
KCkpIHsKLSAgICAgICAgc2V0TGF5ZXJCb3JkZXJDb2xvcihjb250ZW50c0xheWVyLCBDb2xvcigw
LCAwLCAxMjgsIDE4MCkpOwotICAgICAgICBbY29udGVudHNMYXllciBzZXRCb3JkZXJXaWR0aDox
LjBmXTsKLSAgICB9Ci19Ci0KLUNBTGF5ZXIgKkdyYXBoaWNzTGF5ZXJNYWM6OmZpbmRPck1ha2VD
bG9uZShDbG9uZUlEIGNsb25lSUQsIENBTGF5ZXIgKnNvdXJjZUxheWVyLCBMYXllck1hcCogY2xv
bmVzLCBDbG9uZUxldmVsIGNsb25lTGV2ZWwpCi17Ci0gICAgaWYgKCFzb3VyY2VMYXllcikKLSAg
ICAgICAgcmV0dXJuIDA7Ci0KLSAgICBDQUxheWVyICpyZXN1bHRMYXllcjsKLQotICAgIC8vIEFk
ZCB3aXRoIGEgZHVtbXkgdmFsdWUgdG8gZ2V0IGFuIGl0ZXJhdG9yIGZvciB0aGUgaW5zZXJ0aW9u
IHBvc2l0aW9uLCBhbmQgYSBib29sZWFuIHRoYXQgdGVsbHMKLSAgICAvLyB1cyB3aGV0aGVyIHRo
ZXJlJ3MgYW4gaXRlbSB0aGVyZS4gVGhpcyB0ZWNobmlxdWUgYXZvaWRzIHR3byBoYXNoIGxvb2t1
cHMuCi0gICAgUmV0YWluUHRyPENBTGF5ZXI+IGR1bW15OwotICAgIHBhaXI8TGF5ZXJNYXA6Oml0
ZXJhdG9yLCBib29sPiBhZGRSZXN1bHQgPSBjbG9uZXMtPmFkZChjbG9uZUlELCBkdW1teSk7Ci0g
ICAgaWYgKCFhZGRSZXN1bHQuc2Vjb25kKSB7Ci0gICAgICAgIC8vIFZhbHVlIHdhcyBub3QgYWRk
ZWQsIHNvIGl0IGV4aXN0cyBhbHJlYWR5LgotICAgICAgICByZXN1bHRMYXllciA9IGFkZFJlc3Vs
dC5maXJzdC0+c2Vjb25kLmdldCgpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHJlc3VsdExheWVy
ID0gY2xvbmVMYXllcihzb3VyY2VMYXllciwgY2xvbmVMZXZlbCk7Ci0jaWZuZGVmIE5ERUJVRwot
ICAgICAgICBbcmVzdWx0TGF5ZXIgc2V0TmFtZTpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpA
IkNsb25lICVkIG9mIGxheWVyICVAIiwgY2xvbmVJRFswVV0sIHNvdXJjZUxheWVyXV07Ci0jZW5k
aWYKLSAgICAgICAgYWRkUmVzdWx0LmZpcnN0LT5zZWNvbmQgPSByZXN1bHRMYXllcjsKLSAgICB9
Ci0KLSAgICByZXR1cm4gcmVzdWx0TGF5ZXI7Ci19ICAgCi0KLXZvaWQgR3JhcGhpY3NMYXllck1h
Yzo6ZW5zdXJlQ2xvbmVMYXllcnMoQ2xvbmVJRCBjbG9uZUlELCBDQUxheWVyIComIHByaW1hcnlM
YXllciwgQ0FMYXllciAqJiBzdHJ1Y3R1cmFsTGF5ZXIsIENBTGF5ZXIgKiYgY29udGVudHNMYXll
ciwgQ2xvbmVMZXZlbCBjbG9uZUxldmVsKQotewotICAgIHN0cnVjdHVyYWxMYXllciA9IG5pbDsK
LSAgICBjb250ZW50c0xheWVyID0gbmlsOwotCi0gICAgaWYgKCFtX2xheWVyQ2xvbmVzKQotICAg
ICAgICBtX2xheWVyQ2xvbmVzID0gbmV3IExheWVyTWFwOwotCi0gICAgaWYgKCFtX3N0cnVjdHVy
YWxMYXllckNsb25lcyAmJiBtX3N0cnVjdHVyYWxMYXllcikKLSAgICAgICAgbV9zdHJ1Y3R1cmFs
TGF5ZXJDbG9uZXMgPSBuZXcgTGF5ZXJNYXA7Ci0KLSAgICBpZiAoIW1fY29udGVudHNMYXllckNs
b25lcyAmJiBtX2NvbnRlbnRzTGF5ZXIpCi0gICAgICAgIG1fY29udGVudHNMYXllckNsb25lcyA9
IG5ldyBMYXllck1hcDsKLQotICAgIHByaW1hcnlMYXllciA9IGZpbmRPck1ha2VDbG9uZShjbG9u
ZUlELCBtX2xheWVyLmdldCgpLCBtX2xheWVyQ2xvbmVzLmdldCgpLCBjbG9uZUxldmVsKTsKLSAg
ICBzdHJ1Y3R1cmFsTGF5ZXIgPSBmaW5kT3JNYWtlQ2xvbmUoY2xvbmVJRCwgbV9zdHJ1Y3R1cmFs
TGF5ZXIuZ2V0KCksIG1fc3RydWN0dXJhbExheWVyQ2xvbmVzLmdldCgpLCBjbG9uZUxldmVsKTsK
LSAgICBjb250ZW50c0xheWVyID0gZmluZE9yTWFrZUNsb25lKGNsb25lSUQsIG1fY29udGVudHNM
YXllci5nZXQoKSwgbV9jb250ZW50c0xheWVyQ2xvbmVzLmdldCgpLCBjbG9uZUxldmVsKTsKLX0K
LQotdm9pZCBHcmFwaGljc0xheWVyTWFjOjpyZW1vdmVDbG9uZUxheWVycygpCi17Ci0gICAgbV9s
YXllckNsb25lcyA9IDA7Ci0gICAgbV9zdHJ1Y3R1cmFsTGF5ZXJDbG9uZXMgPSAwOwotICAgIG1f
Y29udGVudHNMYXllckNsb25lcyA9IDA7Ci19Ci0KLUZsb2F0UG9pbnQgR3JhcGhpY3NMYXllck1h
Yzo6cG9zaXRpb25Gb3JDbG9uZVJvb3RMYXllcigpIGNvbnN0Ci17Ci0gICAgLy8gVGhpcyBjYW4g
Z2V0IGNhbGxlZCBkdXJpbmcgYSBzeW5jIHdoZW4gd2UndmUganVzdCByZW1vdmVkIHRoZSBtX3Jl
cGxpY2FMYXllci4KLSAgICBpZiAoIW1fcmVwbGljYUxheWVyKQotICAgICAgICByZXR1cm4gRmxv
YXRQb2ludCgpOwotCi0gICAgRmxvYXRQb2ludCByZXBsaWNhUG9zaXRpb24gPSBtX3JlcGxpY2FM
YXllci0+cmVwbGljYXRlZExheWVyUG9zaXRpb24oKTsKLSAgICByZXR1cm4gRmxvYXRQb2ludChy
ZXBsaWNhUG9zaXRpb24ueCgpICsgbV9hbmNob3JQb2ludC54KCkgKiBtX3NpemUud2lkdGgoKSwK
LSAgICAgICAgICAgICAgICAgICAgICByZXBsaWNhUG9zaXRpb24ueSgpICsgbV9hbmNob3JQb2lu
dC55KCkgKiBtX3NpemUuaGVpZ2h0KCkpOwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnBy
b3BhZ2F0ZUxheWVyQ2hhbmdlVG9SZXBsaWNhcygpCi17Ci0gICAgZm9yIChHcmFwaGljc0xheWVy
KiBjdXJyTGF5ZXIgPSB0aGlzOyBjdXJyTGF5ZXI7IGN1cnJMYXllciA9IGN1cnJMYXllci0+cGFy
ZW50KCkpIHsKLSAgICAgICAgR3JhcGhpY3NMYXllck1hYyogY3VyckxheWVyQ0EgPSBzdGF0aWNf
Y2FzdDxHcmFwaGljc0xheWVyTWFjKj4oY3VyckxheWVyKTsKLSAgICAgICAgaWYgKCFjdXJyTGF5
ZXJDQS0+aGFzQ2xvbmVMYXllcnMoKSkKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGlm
IChjdXJyTGF5ZXJDQS0+cmVwbGljYUxheWVyKCkpCi0gICAgICAgICAgICBzdGF0aWNfY2FzdDxH
cmFwaGljc0xheWVyTWFjKj4oY3VyckxheWVyQ0EtPnJlcGxpY2FMYXllcigpKS0+bm90ZUxheWVy
UHJvcGVydHlDaGFuZ2VkKFJlcGxpY2F0ZWRMYXllckNoYW5nZWQpOwotICAgIH0KLX0KLQotQ0FM
YXllciAqR3JhcGhpY3NMYXllck1hYzo6ZmV0Y2hDbG9uZUxheWVycyhHcmFwaGljc0xheWVyKiBy
ZXBsaWNhUm9vdCwgUmVwbGljYVN0YXRlJiByZXBsaWNhU3RhdGUsIENsb25lTGV2ZWwgY2xvbmVM
ZXZlbCkKLXsKLSAgICBDQUxheWVyICpwcmltYXJ5TGF5ZXI7Ci0gICAgQ0FMYXllciAqc3RydWN0
dXJhbExheWVyOwotICAgIENBTGF5ZXIgKmNvbnRlbnRzTGF5ZXI7Ci0gICAgZW5zdXJlQ2xvbmVM
YXllcnMocmVwbGljYVN0YXRlLmNsb25lSUQoKSwgcHJpbWFyeUxheWVyLCBzdHJ1Y3R1cmFsTGF5
ZXIsIGNvbnRlbnRzTGF5ZXIsIGNsb25lTGV2ZWwpOwotCi0gICAgaWYgKG1fbWFza0xheWVyKSB7
Ci0gICAgICAgIENBTGF5ZXIgKm1hc2tDbG9uZSA9IHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXJN
YWMqPihtX21hc2tMYXllciktPmZldGNoQ2xvbmVMYXllcnMocmVwbGljYVJvb3QsIHJlcGxpY2FT
dGF0ZSwgSW50ZXJtZWRpYXRlQ2xvbmVMZXZlbCk7Ci0gICAgICAgIFtwcmltYXJ5TGF5ZXIgc2V0
TWFzazptYXNrQ2xvbmVdOwotICAgIH0KLQotICAgIGlmIChtX3JlcGxpY2F0ZWRMYXllcikgewot
ICAgICAgICAvLyBXZSBhcmUgYSByZXBsaWNhIGJlaW5nIGFza2VkIGZvciBjbG9uZXMgb2Ygb3Vy
IGxheWVycy4KLSAgICAgICAgQ0FMYXllciAqcmVwbGljYVJvb3QgPSByZXBsaWNhdGVkTGF5ZXJS
b290KHJlcGxpY2FTdGF0ZSk7Ci0gICAgICAgIGlmICghcmVwbGljYVJvb3QpCi0gICAgICAgICAg
ICByZXR1cm4gbmlsOwotCi0gICAgICAgIGlmIChzdHJ1Y3R1cmFsTGF5ZXIpIHsKLSAgICAgICAg
ICAgIFtzdHJ1Y3R1cmFsTGF5ZXIgaW5zZXJ0U3VibGF5ZXI6cmVwbGljYVJvb3QgYXRJbmRleDow
XTsKLSAgICAgICAgICAgIHJldHVybiBzdHJ1Y3R1cmFsTGF5ZXI7Ci0gICAgICAgIH0KLSAgICAg
ICAgCi0gICAgICAgIFtwcmltYXJ5TGF5ZXIgaW5zZXJ0U3VibGF5ZXI6cmVwbGljYVJvb3QgYXRJ
bmRleDowXTsKLSAgICAgICAgcmV0dXJuIHByaW1hcnlMYXllcjsKLSAgICB9Ci0KLSAgICBjb25z
dCBWZWN0b3I8R3JhcGhpY3NMYXllcio+JiBjaGlsZExheWVycyA9IGNoaWxkcmVuKCk7Ci0gICAg
TlNNdXRhYmxlQXJyYXkqIGNsb25hbFN1YmxheWVycyA9IG5pbDsKLQotICAgIENBTGF5ZXIgKnJl
cGxpY2FMYXllciA9IG5pbDsKLSAgICBpZiAobV9yZXBsaWNhTGF5ZXIgJiYgbV9yZXBsaWNhTGF5
ZXIgIT0gcmVwbGljYVJvb3QpIHsKLSAgICAgICAgLy8gV2UgaGF2ZSBuZXN0ZWQgcmVwbGljYXMu
IEFzayB0aGUgcmVwbGljYSBsYXllciBmb3IgYSBjbG9uZSBvZiBpdHMgY29udGVudHMuCi0gICAg
ICAgIHJlcGxpY2FTdGF0ZS5zZXRCcmFuY2hUeXBlKFJlcGxpY2FTdGF0ZTo6UmVwbGljYUJyYW5j
aCk7Ci0gICAgICAgIHJlcGxpY2FMYXllciA9IHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXJNYWMq
PihtX3JlcGxpY2FMYXllciktPmZldGNoQ2xvbmVMYXllcnMocmVwbGljYVJvb3QsIHJlcGxpY2FT
dGF0ZSwgUm9vdENsb25lTGV2ZWwpOwotICAgICAgICByZXBsaWNhU3RhdGUuc2V0QnJhbmNoVHlw
ZShSZXBsaWNhU3RhdGU6OkNoaWxkQnJhbmNoKTsKLSAgICB9Ci0gICAgCi0gICAgaWYgKHJlcGxp
Y2FMYXllciB8fCBzdHJ1Y3R1cmFsTGF5ZXIgfHwgY29udGVudHNMYXllciB8fCBjaGlsZExheWVy
cy5zaXplKCkgPiAwKSB7Ci0gICAgICAgIGNsb25hbFN1YmxheWVycyA9IFtbTlNNdXRhYmxlQXJy
YXkgYWxsb2NdIGluaXRdOwotCi0gICAgICAgIGlmIChzdHJ1Y3R1cmFsTGF5ZXIpIHsKLSAgICAg
ICAgICAgIC8vIFJlcGxpY2FzIHJlbmRlciBiZWhpbmQgdGhlIGFjdHVhbCBsYXllciBjb250ZW50
LgotICAgICAgICAgICAgaWYgKHJlcGxpY2FMYXllcikKLSAgICAgICAgICAgICAgICBbY2xvbmFs
U3VibGF5ZXJzIGFkZE9iamVjdDpyZXBsaWNhTGF5ZXJdOwotICAgICAgICAgICAgICAgIAotICAg
ICAgICAgICAgLy8gQWRkIHRoZSBwcmltYXJ5IGxheWVyIG5leHQuIEV2ZW4gaWYgd2UgaGF2ZSBu
ZWdhdGl2ZSB6LW9yZGVyIGNoaWxkcmVuLCB0aGUgcHJpbWFyeSBsYXllciBhbHdheXMgY29tZXMg
YmVoaW5kLgotICAgICAgICAgICAgW2Nsb25hbFN1YmxheWVycyBhZGRPYmplY3Q6cHJpbWFyeUxh
eWVyXTsKLSAgICAgICAgfSBlbHNlIGlmIChjb250ZW50c0xheWVyKSB7Ci0gICAgICAgICAgICAv
LyBGSVhNRTogYWRkIHRoZSBjb250ZW50cyBsYXllciBpbiB0aGUgY29ycmVjdCBvcmRlciB3aXRo
IG5lZ2F0aXZlIHotb3JkZXIgY2hpbGRyZW4uCi0gICAgICAgICAgICAvLyBUaGlzIGRvZXMgbm90
IGNhdXNlIHZpc2libGUgcmVuZGVyaW5nIGlzc3VlcyBiZWNhdXNlIGN1cnJlbnRseSBjb250ZW50
cyBsYXllcnMgYXJlIG9ubHkgdXNlZAotICAgICAgICAgICAgLy8gZm9yIHJlcGxhY2VkIGVsZW1l
bnRzIHRoYXQgZG9uJ3QgaGF2ZSBjaGlsZHJlbi4KLSAgICAgICAgICAgIFtjbG9uYWxTdWJsYXll
cnMgYWRkT2JqZWN0OmNvbnRlbnRzTGF5ZXJdOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAg
ICByZXBsaWNhU3RhdGUucHVzaChSZXBsaWNhU3RhdGU6OkNoaWxkQnJhbmNoKTsKLQotICAgICAg
ICBzaXplX3QgbnVtQ2hpbGRyZW4gPSBjaGlsZExheWVycy5zaXplKCk7Ci0gICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbnVtQ2hpbGRyZW47ICsraSkgewotICAgICAgICAgICAgR3JhcGhp
Y3NMYXllck1hYyogY3VyQ2hpbGQgPSBzdGF0aWNfY2FzdDxHcmFwaGljc0xheWVyTWFjKj4oY2hp
bGRMYXllcnNbaV0pOwotCi0gICAgICAgICAgICBDQUxheWVyICpjaGlsZExheWVyID0gY3VyQ2hp
bGQtPmZldGNoQ2xvbmVMYXllcnMocmVwbGljYVJvb3QsIHJlcGxpY2FTdGF0ZSwgSW50ZXJtZWRp
YXRlQ2xvbmVMZXZlbCk7Ci0gICAgICAgICAgICBpZiAoY2hpbGRMYXllcikKLSAgICAgICAgICAg
ICAgICBbY2xvbmFsU3VibGF5ZXJzIGFkZE9iamVjdDpjaGlsZExheWVyXTsKLSAgICAgICAgfQot
Ci0gICAgICAgIHJlcGxpY2FTdGF0ZS5wb3AoKTsKLQotICAgICAgICBbY2xvbmFsU3VibGF5ZXJz
IG1ha2VPYmplY3RzUGVyZm9ybVNlbGVjdG9yOkBzZWxlY3RvcihyZW1vdmVGcm9tU3VwZXJsYXll
cildOwotICAgIH0KLSAgICAKLSAgICBDQUxheWVyICpyZXN1bHQ7Ci0gICAgaWYgKHN0cnVjdHVy
YWxMYXllcikgewotICAgICAgICBbc3RydWN0dXJhbExheWVyIHNldFN1YmxheWVyczpjbG9uYWxT
dWJsYXllcnNdOwotCi0gICAgICAgIGlmIChjb250ZW50c0xheWVyKSB7Ci0gICAgICAgICAgICAv
LyBJZiB3ZSBoYXZlIGEgdHJhbnNmb3JtIGxheWVyLCB0aGVuIHRoZSBjb250ZW50cyBsYXllciBp
cyBwYXJlbnRlZCBpbiB0aGUgCi0gICAgICAgICAgICAvLyBwcmltYXJ5IGxheWVyICh3aGljaCBp
cyBpdHNlbGYgYSBjaGlsZCBvZiB0aGUgdHJhbnNmb3JtIGxheWVyKS4KLSAgICAgICAgICAgIFtw
cmltYXJ5TGF5ZXIgc2V0U3VibGF5ZXJzOm5pbF07Ci0gICAgICAgICAgICBbcHJpbWFyeUxheWVy
IGFkZFN1YmxheWVyOmNvbnRlbnRzTGF5ZXJdOwotICAgICAgICB9Ci0KLSAgICAgICAgcmVzdWx0
ID0gc3RydWN0dXJhbExheWVyOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIFtwcmltYXJ5TGF5ZXIg
c2V0U3VibGF5ZXJzOmNsb25hbFN1YmxheWVyc107Ci0gICAgICAgIHJlc3VsdCA9IHByaW1hcnlM
YXllcjsKLSAgICB9Ci0KLSAgICBbY2xvbmFsU3VibGF5ZXJzIHJlbGVhc2VdOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci0KLUNBTGF5ZXIgKkdyYXBoaWNzTGF5ZXJNYWM6OmNsb25lTGF5ZXIoQ0FM
YXllciAqbGF5ZXIsIENsb25lTGV2ZWwgY2xvbmVMZXZlbCkKLXsKLSAgICBzdGF0aWMgQ2xhc3Mg
dHJhbnNmb3JtTGF5ZXJDbGFzcyA9IE5TQ2xhc3NGcm9tU3RyaW5nKEAiQ0FUcmFuc2Zvcm1MYXll
ciIpOwotICAgIENBTGF5ZXIgKm5ld0xheWVyID0gbmlsOwotICAgIGlmIChbbGF5ZXIgaXNLaW5k
T2ZDbGFzczp0cmFuc2Zvcm1MYXllckNsYXNzXSkKLSAgICAgICAgbmV3TGF5ZXIgPSBbdHJhbnNm
b3JtTGF5ZXJDbGFzcyBsYXllcl07Ci0gICAgZWxzZQotICAgICAgICBuZXdMYXllciA9IFtDQUxh
eWVyIGxheWVyXTsKLQotICAgIFtuZXdMYXllciBzZXRTdHlsZTpbTlNEaWN0aW9uYXJ5IGRpY3Rp
b25hcnlXaXRoT2JqZWN0Om51bGxBY3Rpb25zRGljdGlvbmFyeSgpIGZvcktleTpAImFjdGlvbnMi
XV07Ci0gICAgCi0gICAgW25ld0xheWVyIHNldFBvc2l0aW9uOltsYXllciBwb3NpdGlvbl1dOwot
ICAgIFtuZXdMYXllciBzZXRCb3VuZHM6W2xheWVyIGJvdW5kc11dOwotICAgIFtuZXdMYXllciBz
ZXRBbmNob3JQb2ludDpbbGF5ZXIgYW5jaG9yUG9pbnRdXTsKLSNpZiBIQVZFX01PREVSTl9RVUFS
VFpDT1JFCi0gICAgW25ld0xheWVyIHNldEFuY2hvclBvaW50WjpbbGF5ZXIgYW5jaG9yUG9pbnRa
XV07Ci0jZW5kaWYKLSAgICBbbmV3TGF5ZXIgc2V0VHJhbnNmb3JtOltsYXllciB0cmFuc2Zvcm1d
XTsKLSAgICBbbmV3TGF5ZXIgc2V0U3VibGF5ZXJUcmFuc2Zvcm06W2xheWVyIHN1YmxheWVyVHJh
bnNmb3JtXV07Ci0gICAgW25ld0xheWVyIHNldENvbnRlbnRzOltsYXllciBjb250ZW50c11dOwot
ICAgIFtuZXdMYXllciBzZXRNYXNrc1RvQm91bmRzOltsYXllciBtYXNrc1RvQm91bmRzXV07Ci0g
ICAgW25ld0xheWVyIHNldERvdWJsZVNpZGVkOltsYXllciBpc0RvdWJsZVNpZGVkXV07Ci0gICAg
W25ld0xheWVyIHNldE9wYXF1ZTpbbGF5ZXIgaXNPcGFxdWVdXTsKLSAgICBbbmV3TGF5ZXIgc2V0
QmFja2dyb3VuZENvbG9yOltsYXllciBiYWNrZ3JvdW5kQ29sb3JdXTsKLQotICAgIGlmIChjbG9u
ZUxldmVsID09IEludGVybWVkaWF0ZUNsb25lTGV2ZWwpIHsKLSAgICAgICAgW25ld0xheWVyIHNl
dE9wYWNpdHk6W2xheWVyIG9wYWNpdHldXTsKLSAgICAgICAgbW92ZU9yQ29weUFuaW1hdGlvbnNG
b3JQcm9wZXJ0eShDb3B5LCBBbmltYXRlZFByb3BlcnR5V2Via2l0VHJhbnNmb3JtLCBsYXllciwg
bmV3TGF5ZXIpOwotICAgICAgICBtb3ZlT3JDb3B5QW5pbWF0aW9uc0ZvclByb3BlcnR5KENvcHks
IEFuaW1hdGVkUHJvcGVydHlPcGFjaXR5LCBsYXllciwgbmV3TGF5ZXIpOwotICAgIH0KLSAgICAK
LSAgICBpZiAoc2hvd0RlYnVnQm9yZGVycygpKSB7Ci0gICAgICAgIHNldExheWVyQm9yZGVyQ29s
b3IobmV3TGF5ZXIsIENvbG9yKDI1NSwgMTIyLCAyNTEpKTsKLSAgICAgICAgW25ld0xheWVyIHNl
dEJvcmRlcldpZHRoOjJdOwotICAgIH0KLSAgICAKLSAgICByZXR1cm4gbmV3TGF5ZXI7Ci19Ci0K
LXZvaWQgR3JhcGhpY3NMYXllck1hYzo6c2V0T3BhY2l0eUludGVybmFsKGZsb2F0IGFjY3VtdWxh
dGVkT3BhY2l0eSkKLXsKLSAgICBMYXllck1hcCogbGF5ZXJDbG9uZU1hcCA9IDA7Ci0gICAgCi0g
ICAgaWYgKHByZXNlcnZlczNEKCkpIHsKLSAgICAgICAgW21fbGF5ZXIuZ2V0KCkgc2V0T3BhY2l0
eTphY2N1bXVsYXRlZE9wYWNpdHldOwotICAgICAgICBsYXllckNsb25lTWFwID0gbV9sYXllckNs
b25lcy5nZXQoKTsKLSAgICB9IGVsc2UgewotICAgICAgICBbcHJpbWFyeUxheWVyKCkgc2V0T3Bh
Y2l0eTphY2N1bXVsYXRlZE9wYWNpdHldOwotICAgICAgICBsYXllckNsb25lTWFwID0gcHJpbWFy
eUxheWVyQ2xvbmVzKCk7Ci0gICAgfQotCi0gICAgaWYgKGxheWVyQ2xvbmVNYXApIHsKLSAgICAg
ICAgTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGxheWVyQ2xvbmVNYXAtPmVuZCgpOwot
ICAgICAgICBmb3IgKExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGxheWVyQ2xvbmVNYXAt
PmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICAgICAgaWYgKG1fcmVwbGljYUxh
eWVyICYmIGlzUmVwbGljYXRlZFJvb3RDbG9uZShpdC0+Zmlyc3QpKQotICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwotICAgICAgICAgICAgQ0FMYXllciAqY3VyckxheWVyID0gaXQtPnNlY29uZC5n
ZXQoKTsKLSAgICAgICAgICAgIFtjdXJyTGF5ZXIgc2V0T3BhY2l0eTptX29wYWNpdHldOwotICAg
ICAgICB9Ci0gICAgfQotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnVwZGF0ZU9wYWNpdHlP
bkxheWVyKCkKLXsKLSNpZiAhSEFWRV9NT0RFUk5fUVVBUlRaQ09SRQotICAgIC8vIERpc3RyaWJ1
dGUgb3BhY2l0eSBlaXRoZXIgdG8gb3VyIG93biBsYXllciBvciB0byBvdXIgY2hpbGRyZW4uIFdl
IHBhc3MgaW4gdGhlIAotICAgIC8vIGNvbnRyaWJ1dGlvbiBmcm9tIG91ciBwYXJlbnQocykuCi0g
ICAgZGlzdHJpYnV0ZU9wYWNpdHkocGFyZW50KCkgPyBwYXJlbnQoKS0+YWNjdW11bGF0ZWRPcGFj
aXR5KCkgOiAxKTsKLSNlbHNlCi0gICAgW3ByaW1hcnlMYXllcigpIHNldE9wYWNpdHk6bV9vcGFj
aXR5XTsKLQotICAgIGlmIChMYXllck1hcCogbGF5ZXJDbG9uZU1hcCA9IHByaW1hcnlMYXllckNs
b25lcygpKSB7Ci0gICAgICAgIExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBsYXllckNs
b25lTWFwLT5lbmQoKTsKLSAgICAgICAgZm9yIChMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQg
PSBsYXllckNsb25lTWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgICAg
IGlmIChtX3JlcGxpY2FMYXllciAmJiBpc1JlcGxpY2F0ZWRSb290Q2xvbmUoaXQtPmZpcnN0KSkK
LSAgICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgQ0FMYXllciAqY3Vyckxh
eWVyID0gaXQtPnNlY29uZC5nZXQoKTsKLSAgICAgICAgICAgIFtjdXJyTGF5ZXIgc2V0T3BhY2l0
eTptX29wYWNpdHldOwotICAgICAgICB9Ci0gICAgICAgIAotICAgIH0KLSNlbmRpZgotfQotCi12
b2lkIEdyYXBoaWNzTGF5ZXJNYWM6Om5vdGVTdWJsYXllcnNDaGFuZ2VkKCkKLXsKLSAgICBub3Rl
TGF5ZXJQcm9wZXJ0eUNoYW5nZWQoQ2hpbGRyZW5DaGFuZ2VkKTsKLSAgICBwcm9wYWdhdGVMYXll
ckNoYW5nZVRvUmVwbGljYXMoKTsKLX0KLQotdm9pZCBHcmFwaGljc0xheWVyTWFjOjpub3RlTGF5
ZXJQcm9wZXJ0eUNoYW5nZWQoTGF5ZXJDaGFuZ2VGbGFncyBmbGFncykKLXsKLSAgICBpZiAoIW1f
dW5jb21taXR0ZWRDaGFuZ2VzICYmIG1fY2xpZW50KQotICAgICAgICBtX2NsaWVudC0+bm90aWZ5
U3luY1JlcXVpcmVkKHRoaXMpOwotCi0gICAgbV91bmNvbW1pdHRlZENoYW5nZXMgfD0gZmxhZ3M7
Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRF
RF9DT01QT1NJVElORykKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxh
eWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViTGF5
ZXIuaAkocmV2aXNpb24gNzMxNTApCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9X
ZWJMYXllci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxNCArMzQsNiBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgY2xhc3MgR3JhcGhpY3NMYXllcjsKIH0KIAotLy8gQ2F0ZWdvcnkgaW1wbGVt
ZW50ZWQgYnkgV2ViTGF5ZXIgYW5kIFdlYlRpbGVkTGF5ZXIuCi1AaW50ZXJmYWNlIENBTGF5ZXIo
V2ViTGF5ZXJBZGRpdGlvbnMpCi0KLS0gKHZvaWQpc2V0TGF5ZXJPd25lcjooV2ViQ29yZTo6R3Jh
cGhpY3NMYXllciopbGF5ZXI7Ci0tIChXZWJDb3JlOjpHcmFwaGljc0xheWVyKilsYXllck93bmVy
OwotCi1AZW5kCi0KICNpZiBkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpCiBAaW50ZXJmYWNl
IENBTGF5ZXIoV2ViTGF5ZXJJbnRlcm5hbCkKIC0gKENHQWZmaW5lVHJhbnNmb3JtKWNvbnRlbnRz
VHJhbnNmb3JtOwpAQCAtNTEsNyArNDMsNiBAQCBAaW50ZXJmYWNlIENBTGF5ZXIoV2ViTGF5ZXJJ
bnRlcm5hbCkKIAogQGludGVyZmFjZSBXZWJMYXllciA6IENBTGF5ZXIgCiB7Ci0gICAgV2ViQ29y
ZTo6R3JhcGhpY3NMYXllciogbV9sYXllck93bmVyOwogfQogQGVuZAogCkluZGV4OiBXZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJMYXllci5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJMYXllci5tbQkocmV2aXNpb24gNzMxNTApCisrKyBX
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJMYXllci5tbQkod29ya2luZyBjb3B5KQpA
QCAtMzAsNyArMzAsOCBAQAogI2ltcG9ydCAiV2ViTGF5ZXIuaCIKIAogI2ltcG9ydCAiR3JhcGhp
Y3NDb250ZXh0LmgiCi0jaW1wb3J0ICJHcmFwaGljc0xheWVyLmgiCisjaW1wb3J0ICJHcmFwaGlj
c0xheWVyQ0EuaCIKKyNpbXBvcnQgIlBsYXRmb3JtQ0FMYXllci5oIgogI2ltcG9ydCA8b2JqYy9v
YmpjLXJ1bnRpbWUuaD4KICNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgogI2ltcG9y
dCA8d3RmL1VudXNlZFBhcmFtLmg+CkBAIC0xNDYsNTggKzE0NywzOSBAQCAtIChpZDxDQUFjdGlv
bj4pYWN0aW9uRm9yS2V5OihOU1N0cmluZyAqCiAgICAgcmV0dXJuIG5pbDsKIH0KIAotLy8gSW1w
bGVtZW50IHRoaXMgc28gcHJlc2VudGF0aW9uTGF5ZXIgY2FuIGdldCBvdXIgY3VzdG9tIGF0dHJp
YnV0ZXMKLS0gKGlkKWluaXRXaXRoTGF5ZXI6KGlkKWxheWVyCi17Ci0gICAgaWYgKChzZWxmID0g
W3N1cGVyIGluaXRXaXRoTGF5ZXI6bGF5ZXJdKSkKLSAgICAgICAgbV9sYXllck93bmVyID0gWyhX
ZWJMYXllciopbGF5ZXIgbGF5ZXJPd25lcl07Ci0KLSAgICByZXR1cm4gc2VsZjsKLX0KLQogLSAo
dm9pZClzZXROZWVkc0Rpc3BsYXkKIHsKLSAgICBpZiAobV9sYXllck93bmVyICYmIG1fbGF5ZXJP
d25lci0+Y2xpZW50KCkgJiYgbV9sYXllck93bmVyLT5kcmF3c0NvbnRlbnQoKSkKKyAgICBQbGF0
Zm9ybUNBTGF5ZXIqIGxheWVyID0gUGxhdGZvcm1DQUxheWVyOjpwbGF0Zm9ybUNBTGF5ZXIoc2Vs
Zik7CisgICAgaWYgKGxheWVyICYmIGxheWVyLT5vd25lcigpICYmIGxheWVyLT5vd25lcigpLT5j
bGllbnQoKSAmJiBsYXllci0+b3duZXIoKS0+ZHJhd3NDb250ZW50KCkpCiAgICAgICAgIFtzdXBl
ciBzZXROZWVkc0Rpc3BsYXldOwogfQogCiAtICh2b2lkKXNldE5lZWRzRGlzcGxheUluUmVjdDoo
Q0dSZWN0KWRpcnR5UmVjdAogewotICAgIHNldExheWVyTmVlZHNEaXNwbGF5SW5SZWN0KHNlbGYs
IG1fbGF5ZXJPd25lciwgZGlydHlSZWN0KTsKKyAgICBQbGF0Zm9ybUNBTGF5ZXIqIGxheWVyID0g
UGxhdGZvcm1DQUxheWVyOjpwbGF0Zm9ybUNBTGF5ZXIoc2VsZik7CisgICAgaWYgKGxheWVyKQor
ICAgICAgICBzZXRMYXllck5lZWRzRGlzcGxheUluUmVjdChzZWxmLCBsYXllci0+b3duZXIoKSwg
ZGlydHlSZWN0KTsKIH0KIAogLSAodm9pZClkaXNwbGF5CiB7CiAgICAgW3N1cGVyIGRpc3BsYXld
OwotICAgIGlmIChtX2xheWVyT3duZXIpCi0gICAgICAgIG1fbGF5ZXJPd25lci0+ZGlkRGlzcGxh
eShzZWxmKTsKKyAgICBQbGF0Zm9ybUNBTGF5ZXIqIGxheWVyID0gUGxhdGZvcm1DQUxheWVyOjpw
bGF0Zm9ybUNBTGF5ZXIoc2VsZik7CisgICAgaWYgKGxheWVyICYmIGxheWVyLT5vd25lcigpKQor
ICAgICAgICBsYXllci0+b3duZXIoKS0+ZGlkRGlzcGxheShzZWxmKTsKIH0KIAogLSAodm9pZClk
cmF3SW5Db250ZXh0OihDR0NvbnRleHRSZWYpY29udGV4dAogewotICAgIGRyYXdMYXllckNvbnRl
bnRzKGNvbnRleHQsIHNlbGYsIG1fbGF5ZXJPd25lcik7CisgICAgUGxhdGZvcm1DQUxheWVyKiBs
YXllciA9IFBsYXRmb3JtQ0FMYXllcjo6cGxhdGZvcm1DQUxheWVyKHNlbGYpOworICAgIGlmIChs
YXllcikKKyAgICAgICAgZHJhd0xheWVyQ29udGVudHMoY29udGV4dCwgc2VsZiwgbGF5ZXItPm93
bmVyKCkpOwogfQogCiBAZW5kIC8vIGltcGxlbWVudGF0aW9uIFdlYkxheWVyCiAKICNwcmFnbWEg
bWFyayAtCiAKLUBpbXBsZW1lbnRhdGlvbiBXZWJMYXllcihXZWJMYXllckFkZGl0aW9ucykKLQot
LSAodm9pZClzZXRMYXllck93bmVyOihHcmFwaGljc0xheWVyKilhTGF5ZXIKLXsKLSAgICBtX2xh
eWVyT3duZXIgPSBhTGF5ZXI7Ci19Ci0KLS0gKEdyYXBoaWNzTGF5ZXIqKWxheWVyT3duZXIKLXsK
LSAgICByZXR1cm4gbV9sYXllck93bmVyOwotfQotCi1AZW5kCi0KLSNwcmFnbWEgbWFyayAtCi0K
ICNpZm5kZWYgTkRFQlVHCiAKIEBpbXBsZW1lbnRhdGlvbiBDQUxheWVyKEV4dGVuZGVkRGVzY3Jp
cHRpb24pCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJUaWxlZExheWVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViVGlsZWRM
YXllci5oCShyZXZpc2lvbiA3MzE1MCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L1dlYlRpbGVkTGF5ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNiBAQAogCiBAaW50
ZXJmYWNlIFdlYlRpbGVkTGF5ZXIgOiBDQVRpbGVkTGF5ZXIgCiB7Ci0gICAgV2ViQ29yZTo6R3Jh
cGhpY3NMYXllciogbV9sYXllck93bmVyOwogfQogCiAvLyBpbXBsZW1lbnRzIFdlYkxheWVyQWRk
aXRpb25zCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJUaWxlZExheWVy
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYlRpbGVk
TGF5ZXIubW0JKHJldmlzaW9uIDczMTUwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvV2ViVGlsZWRMYXllci5tbQkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsOCBAQAogI2lt
cG9ydCAiV2ViVGlsZWRMYXllci5oIgogCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHQuaCIKLSNp
bXBvcnQgIkdyYXBoaWNzTGF5ZXIuaCIKKyNpbXBvcnQgIkdyYXBoaWNzTGF5ZXJDQS5oIgorI2lt
cG9ydCAiUGxhdGZvcm1DQUxheWVyLmgiCiAjaW1wb3J0IDx3dGYvVW51c2VkUGFyYW0uaD4KIAog
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC01Niw1NCArNTcsMzUgQEAgLSAoaWQ8Q0FBY3Rp
b24+KWFjdGlvbkZvcktleTooTlNTdHJpbmcgKgogICAgIHJldHVybiBuaWw7CiB9CiAKLS8vIElt
cGxlbWVudCB0aGlzIHNvIHByZXNlbnRhdGlvbkxheWVyIGNhbiBnZXQgb3VyIGN1c3RvbSBhdHRy
aWJ1dGVzCi0tIChpZClpbml0V2l0aExheWVyOihpZClsYXllcgotewotICAgIGlmICgoc2VsZiA9
IFtzdXBlciBpbml0V2l0aExheWVyOmxheWVyXSkpCi0gICAgICAgIG1fbGF5ZXJPd25lciA9IFso
V2ViTGF5ZXIqKWxheWVyIGxheWVyT3duZXJdOwotCi0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KIC0g
KHZvaWQpc2V0TmVlZHNEaXNwbGF5CiB7Ci0gICAgaWYgKG1fbGF5ZXJPd25lciAmJiBtX2xheWVy
T3duZXItPmNsaWVudCgpICYmIG1fbGF5ZXJPd25lci0+ZHJhd3NDb250ZW50KCkpCisgICAgUGxh
dGZvcm1DQUxheWVyKiBsYXllciA9IFBsYXRmb3JtQ0FMYXllcjo6cGxhdGZvcm1DQUxheWVyKHNl
bGYpOworICAgIGlmIChsYXllciAmJiBsYXllci0+b3duZXIoKSAmJiBsYXllci0+b3duZXIoKS0+
Y2xpZW50KCkgJiYgbGF5ZXItPm93bmVyKCktPmRyYXdzQ29udGVudCgpKQogICAgICAgICBbc3Vw
ZXIgc2V0TmVlZHNEaXNwbGF5XTsKIH0KIAogLSAodm9pZClzZXROZWVkc0Rpc3BsYXlJblJlY3Q6
KENHUmVjdClkaXJ0eVJlY3QKIHsKLSAgICBzZXRMYXllck5lZWRzRGlzcGxheUluUmVjdChzZWxm
LCBtX2xheWVyT3duZXIsIGRpcnR5UmVjdCk7CisgICAgUGxhdGZvcm1DQUxheWVyKiBsYXllciA9
IFBsYXRmb3JtQ0FMYXllcjo6cGxhdGZvcm1DQUxheWVyKHNlbGYpOworICAgIGlmIChsYXllcikK
KyAgICAgICAgc2V0TGF5ZXJOZWVkc0Rpc3BsYXlJblJlY3Qoc2VsZiwgbGF5ZXItPm93bmVyKCks
IGRpcnR5UmVjdCk7CiB9CiAKIC0gKHZvaWQpZGlzcGxheQogewogICAgIFtzdXBlciBkaXNwbGF5
XTsKLSAgICBpZiAobV9sYXllck93bmVyKQotICAgICAgICBtX2xheWVyT3duZXItPmRpZERpc3Bs
YXkoc2VsZik7CisgICAgUGxhdGZvcm1DQUxheWVyKiBsYXllciA9IFBsYXRmb3JtQ0FMYXllcjo6
cGxhdGZvcm1DQUxheWVyKHNlbGYpOworICAgIGlmIChsYXllciAmJiBsYXllci0+b3duZXIoKSkK
KyAgICAgICAgbGF5ZXItPm93bmVyKCktPmRpZERpc3BsYXkoc2VsZik7CiB9CiAKIC0gKHZvaWQp
ZHJhd0luQ29udGV4dDooQ0dDb250ZXh0UmVmKWNvbnRleHQKIHsKLSAgICBkcmF3TGF5ZXJDb250
ZW50cyhjb250ZXh0LCBzZWxmLCBtX2xheWVyT3duZXIpOworICAgIFBsYXRmb3JtQ0FMYXllciog
bGF5ZXIgPSBQbGF0Zm9ybUNBTGF5ZXI6OnBsYXRmb3JtQ0FMYXllcihzZWxmKTsKKyAgICBpZiAo
bGF5ZXIpCisgICAgICAgIGRyYXdMYXllckNvbnRlbnRzKGNvbnRleHQsIHNlbGYsIGxheWVyLT5v
d25lcigpKTsKIH0KIAogQGVuZCAvLyBpbXBsZW1lbnRhdGlvbiBXZWJUaWxlZExheWVyCiAKLSNw
cmFnbWEgbWFyayAtCi0KLUBpbXBsZW1lbnRhdGlvbiBXZWJUaWxlZExheWVyKExheWVyTWFjQWRk
aXRpb25zKQotCi0tICh2b2lkKXNldExheWVyT3duZXI6KEdyYXBoaWNzTGF5ZXIqKWFMYXllcgot
ewotICAgIG1fbGF5ZXJPd25lciA9IGFMYXllcjsKLX0KLQotLSAoR3JhcGhpY3NMYXllciopbGF5
ZXJPd25lcgotewotICAgIHJldHVybiBtX2xheWVyT3duZXI7Ci19Ci0KLUBlbmQKLQogI2VuZGlm
IC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvcXQvR3JhcGhpY3NMYXllclF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzTGF5ZXJRdC5jcHAJKHJldmlzaW9uIDczMTUwKQor
KysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0xheWVyUXQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02ODYsNyArNjg2LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyUXRJbXBsOjpm
bHVzaENoYW5nZXMoYgogICAgICAgICAvLyB0cnkgdG8gc25hdGNoIHRoYXQgb3duZXJzaGlwLgog
ICAgICAgICBpZiAoIW1fbGF5ZXItPnBhcmVudCgpICYmICFwYXJlbnRJdGVtKCkpCiAgICAgICAg
ICAgICBzZXRQYXJlbnRJdGVtKDApOwotICAgICAgICBlbHNlIGlmIChtX2xheWVyICYmIG1fbGF5
ZXItPnBhcmVudCgpICYmIG1fbGF5ZXItPnBhcmVudCgpLT5uYXRpdmVMYXllcigpICE9IHBhcmVu
dEl0ZW0oKSkKKyAgICAgICAgZWxzZSBpZiAobV9sYXllciAmJiBtX2xheWVyLT5wYXJlbnQoKSAm
JiBtX2xheWVyLT5wYXJlbnQoKS0+cGxhdGZvcm1MYXllcigpICE9IHBhcmVudEl0ZW0oKSkKICAg
ICAgICAgICAgIHNldFBhcmVudEl0ZW0obV9sYXllci0+cGFyZW50KCktPnBsYXRmb3JtTGF5ZXIo
KSk7CiAgICAgfQogCkBAIC0xMzE4LDEzICsxMzE4LDYgQEAgdm9pZCBHcmFwaGljc0xheWVyUXQ6
OnN5bmNDb21wb3NpdGluZ1N0YQogfQogCiAvKiBccmVpbXAgKEdyYXBoaWNzTGF5ZXIuaCkKLSAq
LwotTmF0aXZlTGF5ZXIgR3JhcGhpY3NMYXllclF0OjpuYXRpdmVMYXllcigpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIG1faW1wbC5nZXQoKTsKLX0KLQotLyogXHJlaW1wIChHcmFwaGljc0xheWVyLmgp
CiAqLwogUGxhdGZvcm1MYXllciogR3JhcGhpY3NMYXllclF0OjpwbGF0Zm9ybUxheWVyKCkgY29u
c3QKIHsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NMYXllclF0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0xh
eWVyUXQuaAkocmV2aXNpb24gNzMxNTApCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0
L0dyYXBoaWNzTGF5ZXJRdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw2IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIH5HcmFwaGljc0xheWVyUXQoKTsKIAogICAgIC8vIHJlaW1wcyBmcm9t
IEdyYXBoaWNzTGF5ZXIuaAotICAgIHZpcnR1YWwgTmF0aXZlTGF5ZXIgbmF0aXZlTGF5ZXIoKSBj
b25zdDsKICAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdDsK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNEaXNwbGF5KCk7CiAgICAgdmlydHVhbCB2b2lkIHNl
dE5lZWRzRGlzcGxheUluUmVjdChjb25zdCBGbG9hdFJlY3QmKTsKSW5kZXg6IFdlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzTGF5ZXJDQUNGLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0xheWVyQ0FDRi5jcHAJKHJldmlz
aW9uIDczMTUwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NMYXll
ckNBQ0YuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTMsMTEgKzE1Myw2IEBAIHZvaWQgR3JhcGhp
Y3NMYXllckNBQ0Y6OnNldE5hbWUoY29uc3QgU3QKICAgICBtX2xheWVyLT5zZXROYW1lKGxvbmdO
YW1lKTsKIH0KIAotTmF0aXZlTGF5ZXIgR3JhcGhpY3NMYXllckNBQ0Y6Om5hdGl2ZUxheWVyKCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gbV9sYXllci5nZXQoKTsKLX0KLQogYm9vbCBHcmFwaGljc0xh
eWVyQ0FDRjo6c2V0Q2hpbGRyZW4oY29uc3QgVmVjdG9yPEdyYXBoaWNzTGF5ZXIqPiYgY2hpbGRy
ZW4pCiB7CiAgICAgYm9vbCBjaGlsZHJlbkNoYW5nZWQgPSBHcmFwaGljc0xheWVyOjpzZXRDaGls
ZHJlbihjaGlsZHJlbik7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFw
aGljc0xheWVyQ0FDRi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0dyYXBoaWNzTGF5ZXJDQUNGLmgJKHJldmlzaW9uIDczMTUwKQorKysgV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NMYXllckNBQ0YuaAkod29ya2luZyBjb3B5KQpAQCAt
NDQsOSArNDQsNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmFtZShjb25zdCBT
dHJpbmcmIGluTmFtZSk7CiAKLSAgICAvLyBmb3IgaG9zdGluZyB0aGlzIEdyYXBoaWNzTGF5ZXIg
aW4gYSBuYXRpdmUgbGF5ZXIgaGllcmFyY2h5Ci0gICAgdmlydHVhbCBOYXRpdmVMYXllciBuYXRp
dmVMYXllcigpIGNvbnN0OwotCiAgICAgdmlydHVhbCBib29sIHNldENoaWxkcmVuKGNvbnN0IFZl
Y3RvcjxHcmFwaGljc0xheWVyKj4mKTsKICAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGQoR3JhcGhp
Y3NMYXllciAqbGF5ZXIpOwogICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZEF0SW5kZXgoR3JhcGhp
Y3NMYXllciAqbGF5ZXIsIGludCBpbmRleCk7CkluZGV4OiBXZWJLaXQvbWFjL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gNzMyMDcpCisrKyBX
ZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDEw
LTEyLTAyICBDaHJpcyBNYXJyaW4gIDxjbWFycmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaGFyZSBjb2RlIGJldHdlZW4gTWFj
IChDQSkgYW5kIFdpbmRvd3MgKENBQ0YpIEdyYXBoaWNzTGF5ZXIgaW1wbGVtZW50YXRpb25zCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00OTM4OAorCisg
ICAgICAgIEdvdCByaWQgb2YgR3JhcGhpY3NMYXllcjo6bmF0aXZlTGF5ZXIoKSBjYWxsLCByZXBs
YWNpbmcgaXQgd2l0aCAKKyAgICAgICAgR3JhcGhpY3NMYXllcjo6cGxhdGZvcm1MYXllcigpLgor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tOgorICAgICAgICAo
V2ViQ2hyb21lQ2xpZW50OjphdHRhY2hSb290R3JhcGhpY3NMYXllcik6CisKIDIwMTAtMTItMDIg
IEpvaG4gS25vdHRlbmJlbHQgIDxqa25vdHRlbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgU3RldmUgQmxvY2suCkluZGV4OiBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5tbQkocmV2aXNpb24gNzMxNTApCisrKyBXZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtNzgxLDcgKzc4
MSw3IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjphdHRhY2hSb290R3JhcGhpY3MKIAogICAgIFdl
YkhUTUxWaWV3ICp3ZWJIVE1MVmlldyA9IChXZWJIVE1MVmlldyAqKWRvY3VtZW50VmlldzsKICAg
ICBpZiAoZ3JhcGhpY3NMYXllcikKLSAgICAgICAgW3dlYkhUTUxWaWV3IGF0dGFjaFJvb3RMYXll
cjpncmFwaGljc0xheWVyLT5uYXRpdmVMYXllcigpXTsKKyAgICAgICAgW3dlYkhUTUxWaWV3IGF0
dGFjaFJvb3RMYXllcjpncmFwaGljc0xheWVyLT5wbGF0Zm9ybUxheWVyKCldOwogICAgIGVsc2UK
ICAgICAgICAgW3dlYkhUTUxWaWV3IGRldGFjaFJvb3RMYXllcl07CiAgICAgRU5EX0JMT0NLX09C
SkNfRVhDRVBUSU9OUzsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75522</attachid>
            <date>2010-12-03 11:57:20 -0800</date>
            <delta_ts>2010-12-03 13:01:25 -0800</delta_ts>
            <desc>Please do not review. Just submitting to see the errors on the bots
</desc>
            <filename>bug-49388-20101203115721.patch</filename>
            <type>text/plain</type>
            <size>294836</size>
            <attacher name="Chris Marrin">cmarrin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MzI4MikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDQgQEAKKzIwMTAtMTItMDMgIENocmlzIE1hcnJpbiAgPGNtYXJyaW5AYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNo
YXJlIGNvZGUgYmV0d2VlbiBNYWMgKENBKSBhbmQgV2luZG93cyAoQ0FDRikgR3JhcGhpY3NMYXll
ciBpbXBsZW1lbnRhdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQ5Mzg4CisKKyAgICAgICAgQ29tcG9zaXRlIHBhdGNoIGZyb20gY2hhbmdlczoK
KyAgICAgICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzczMjE3CisgICAg
ICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC83MzIyNworCisgICAgICAg
ICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
YS9HcmFwaGljc0xheWVyQ0EuY3BwOiBDb3BpZWQgZnJvbSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvR3JhcGhpY3NMYXllckNBLmg6IENvcGllZCBmcm9tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvR3JhcGhpY3NMYXllckNBLmguCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
UGxhdGZvcm1DQUFuaW1hdGlvbi5oOiBDb3BpZWQgZnJvbSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL1BsYXRmb3JtQ0FBbmltYXRpb24uaC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaDogQ29waWVkIGZyb20gV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
YS9tYWMvUGxhdGZvcm1DQUFuaW1hdGlvbk1hYy5tbTogQ29waWVkIGZyb20gV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9tYWMvUGxhdGZvcm1DQUFuaW1hdGlvbk1hYy5tbS4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvUGxhdGZvcm1DQUxheWVyTWFjLm1tOiBDb3BpZWQg
ZnJvbSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9QbGF0Zm9ybUNBTGF5ZXJNYWMu
bW0uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNo
cm9taXVtLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGlj
c0xheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhp
Y3NMYXllck1hYy5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9H
cmFwaGljc0xheWVyTWFjLm1tOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L21hYy9XZWJMYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJMYXll
ci5tbToKKyAgICAgICAgKC1bV2ViTGF5ZXIgc2V0TmVlZHNEaXNwbGF5XSk6CisgICAgICAgICgt
W1dlYkxheWVyIHNldE5lZWRzRGlzcGxheUluUmVjdDpdKToKKyAgICAgICAgKC1bV2ViTGF5ZXIg
ZGlzcGxheV0pOgorICAgICAgICAoLVtXZWJMYXllciBkcmF3SW5Db250ZXh0Ol0pOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJUaWxlZExheWVyLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL1dlYlRpbGVkTGF5ZXIubW06CisgICAgICAgICgtW1dlYlRpbGVk
TGF5ZXIgc2V0TmVlZHNEaXNwbGF5XSk6CisgICAgICAgICgtW1dlYlRpbGVkTGF5ZXIgc2V0TmVl
ZHNEaXNwbGF5SW5SZWN0Ol0pOgorICAgICAgICAoLVtXZWJUaWxlZExheWVyIGRpc3BsYXldKToK
KyAgICAgICAgKC1bV2ViVGlsZWRMYXllciBkcmF3SW5Db250ZXh0Ol0pOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzTGF5ZXJRdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0xheWVyUXRJbXBsOjpmbHVzaENoYW5nZXMpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3F0L0dyYXBoaWNzTGF5ZXJRdC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3dpbi9HcmFwaGljc0xheWVyQ0FDRi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0dyYXBoaWNzTGF5ZXJDQUNGLmg6CisKIDIwMTAtMTItMDMgIFBhdHJpY2sgR2Fuc3Rl
cmVyICA8cGFyb2dhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQgTGV2
aW4uCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2
aXNpb24gNzMyNzMpCisrKyBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkod29ya2luZyBjb3B5KQpAQCAtMTAxMiw2ICsxMDEyLDggQEAKIAkJNDk0QkQ3OTUwRjU1QzhF
RTAwNzQ3ODI4IC8qIFdlYktpdFBvaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0OTRCRDc5MzBGNTVDOEVFMDA3NDc4MjggLyogV2ViS2l0UG9pbnQu
aCAqLzsgfTsKIAkJNDk0QkQ3OUQwRjU1Qzk0QzAwNzQ3ODI4IC8qIEpTV2ViS2l0UG9pbnQuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDk0QkQ3OUIw
RjU1Qzk0QzAwNzQ3ODI4IC8qIEpTV2ViS2l0UG9pbnQuY3BwICovOyB9OwogCQk0OTRCRDc5RTBG
NTVDOTRDMDA3NDc4MjggLyogSlNXZWJLaXRQb2ludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDk0QkQ3OUMwRjU1Qzk0QzAwNzQ3ODI4IC8qIEpTV2Vi
S2l0UG9pbnQuaCAqLzsgfTsKKwkJNDk1ODc4MjExMkE1N0RERjAwNzIzOEFDIC8qIFBsYXRmb3Jt
Q0FBbmltYXRpb25NYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0OTU4NzgxRjEyQTU3RERGMDA3MjM4QUMgLyogUGxhdGZvcm1DQUFuaW1hdGlvbk1h
Yy5tbSAqLzsgfTsKKwkJNDk1ODc4MjIxMkE1N0RERjAwNzIzOEFDIC8qIFBsYXRmb3JtQ0FMYXll
ck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5
NTg3ODIwMTJBNTdEREYwMDcyMzhBQyAvKiBQbGF0Zm9ybUNBTGF5ZXJNYWMubW0gKi87IH07CiAJ
CTQ5ODM5MTNGMEYxRTc2NzUwMEMyMzc4MiAvKiBKU1dlYktpdENTU01hdHJpeC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTgzOTEzRDBGMUU3Njc1
MDBDMjM3ODIgLyogSlNXZWJLaXRDU1NNYXRyaXguY3BwICovOyB9OwogCQk0OTgzOTE0MDBGMUU3
Njc1MDBDMjM3ODIgLyogSlNXZWJLaXRDU1NNYXRyaXguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5ODM5MTNFMEYxRTc2NzUwMEMyMzc4MiAvKiBKU1dl
YktpdENTU01hdHJpeC5oICovOyB9OwogCQk0OTgzOTE1MDBGMUU3NkI0MDBDMjM3ODIgLyogRE9N
V2ViS2l0Q1NTTWF0cml4LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0OTgzOTE0RDBGMUU3NkI0MDBDMjM3ODIgLyogRE9NV2ViS2l0Q1NTTWF0cml4Lmgg
Ki87IH07CkBAIC0xMDM4LDggKzEwNDAsMTAgQEAKIAkJNDk4NzcwRjIxMjQyQzUzNTAwMjIyNkJB
IC8qIFRpbGluZ0RhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDk4NzcwRDkxMjQyQzUzNTAwMjIyNkJBIC8qIFRpbGluZ0RhdGEuY3BwICovOyB9
OwogCQk0OTg3NzBGMzEyNDJDNTM1MDAyMjI2QkEgLyogVGlsaW5nRGF0YS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDk4NzcwREExMjQyQzUzNTAwMjIy
NkJBIC8qIFRpbGluZ0RhdGEuaCAqLzsgfTsKIAkJNDk4NzcxNTMxMjQzRjlGQTAwMjIyNkJBIC8q
IERyYXdpbmdCdWZmZXJNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0OTg3NzE1MjEyNDNGOUZBMDAyMjI2QkEgLyogRHJhd2luZ0J1ZmZlck1hYy5t
bSAqLzsgfTsKLQkJNDk5QjNDNTkxMjhDNjQxRTAwRTcyNkMyIC8qIEdyYXBoaWNzTGF5ZXJNYWMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5OUIzQzU3
MTI4QzY0MUUwMEU3MjZDMiAvKiBHcmFwaGljc0xheWVyTWFjLmggKi87IH07Ci0JCTQ5OUIzQzVB
MTI4QzY0MUUwMEU3MjZDMiAvKiBHcmFwaGljc0xheWVyTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDk5QjNDNTgxMjhDNjQxRTAwRTcyNkMyIC8q
IEdyYXBoaWNzTGF5ZXJNYWMubW0gKi87IH07CisJCTQ5OUIzRUM1MTI4Q0NDNDcwMEU3MjZDMiAv
KiBQbGF0Zm9ybUNBTGF5ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ5OUIzRUMzMTI4Q0NDNDcwMEU3MjZDMiAvKiBQbGF0Zm9ybUNBTGF5ZXIuaCAq
LzsgfTsKKwkJNDk5QjNFRDYxMjhDRDMxNDAwRTcyNkMyIC8qIEdyYXBoaWNzTGF5ZXJDQS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTlCM0VENDEy
OENEMzE0MDBFNzI2QzIgLyogR3JhcGhpY3NMYXllckNBLmNwcCAqLzsgfTsKKwkJNDk5QjNFRDcx
MjhDRDMxNDAwRTcyNkMyIC8qIEdyYXBoaWNzTGF5ZXJDQS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDk5QjNFRDUxMjhDRDMxNDAwRTcyNkMyIC8qIEdy
YXBoaWNzTGF5ZXJDQS5oICovOyB9OworCQk0OTlCM0VERDEyOERCNTAyMDBFNzI2QzIgLyogUGxh
dGZvcm1DQUFuaW1hdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDk5QjNFREMxMjhEQjUwMTAwRTcyNkMyIC8qIFBsYXRmb3JtQ0FBbmltYXRpb24u
aCAqLzsgfTsKIAkJNDlCNjlFNUUxMjU0RkVFRDAwN0Q1N0VCIC8qIExvb3BCbGlubkNsYXNzaWZp
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlC
NjlFNTUxMjU0RkVFRDAwN0Q1N0VCIC8qIExvb3BCbGlubkNsYXNzaWZpZXIuY3BwICovOyB9Owog
CQk0OUI2OUU1RjEyNTRGRUVEMDA3RDU3RUIgLyogTG9vcEJsaW5uQ2xhc3NpZmllci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlCNjlFNTYxMjU0RkVF
RDAwN0Q1N0VCIC8qIExvb3BCbGlubkNsYXNzaWZpZXIuaCAqLzsgfTsKIAkJNDlCNjlFNjAxMjU0
RkVFRDAwN0Q1N0VCIC8qIExvb3BCbGlubkNvbnN0YW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlCNjlFNTcxMjU0RkVFRDAwN0Q1N0VCIC8qIExv
b3BCbGlubkNvbnN0YW50cy5oICovOyB9OwpAQCAtNzEzMiw2ICs3MTM2LDggQEAKIAkJNDk0QkQ3
OTQwRjU1QzhFRTAwNzQ3ODI4IC8qIFdlYktpdFBvaW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBXZWJLaXRQb2ludC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5NEJE
NzlCMEY1NUM5NEMwMDc0NzgyOCAvKiBKU1dlYktpdFBvaW50LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2ViS2l0UG9pbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0OTRCRDc5QzBGNTVDOTRDMDA3NDc4MjggLyogSlNXZWJLaXRQb2ludC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dlYktpdFBvaW50Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ5NTg3ODFGMTJBNTdEREYwMDcyMzhBQyAvKiBQbGF0
Zm9ybUNBQW5pbWF0aW9uTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBu
YW1lID0gUGxhdGZvcm1DQUFuaW1hdGlvbk1hYy5tbTsgcGF0aCA9IGNhL21hYy9QbGF0Zm9ybUNB
QW5pbWF0aW9uTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0OTU4NzgyMDEy
QTU3RERGMDA3MjM4QUMgLyogUGxhdGZvcm1DQUxheWVyTWFjLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBuYW1lID0gUGxhdGZvcm1DQUxheWVyTWFjLm1tOyBwYXRoID0gY2Ev
bWFjL1BsYXRmb3JtQ0FMYXllck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDk4MzkxM0QwRjFFNzY3NTAwQzIzNzgyIC8qIEpTV2ViS2l0Q1NTTWF0cml4LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2ViS2l0Q1NTTWF0cml4LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDk4MzkxM0UwRjFFNzY3NTAwQzIzNzgyIC8qIEpT
V2ViS2l0Q1NTTWF0cml4LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTV2Vi
S2l0Q1NTTWF0cml4Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5ODM5MTREMEYx
RTc2QjQwMEMyMzc4MiAvKiBET01XZWJLaXRDU1NNYXRyaXguaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRE9NV2ViS2l0Q1NTTWF0cml4Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC03MTU5LDggKzcxNjUsMTAgQEAKIAkJNDk4NzcwRDkxMjQyQzUzNTAwMjIyNkJB
IC8qIFRpbGluZ0RhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
VGlsaW5nRGF0YS5jcHA7IHBhdGggPSBncHUvVGlsaW5nRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQ5ODc3MERBMTI0MkM1MzUwMDIyMjZCQSAvKiBUaWxpbmdEYXRhLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFRpbGluZ0RhdGEuaDsgcGF0aCA9IGdw
dS9UaWxpbmdEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5ODc3MTUyMTI0
M0Y5RkEwMDIyMjZCQSAvKiBEcmF3aW5nQnVmZmVyTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBuYW1lID0gRHJhd2luZ0J1ZmZlck1hYy5tbTsgcGF0aCA9IGdwdS9tYWMv
RHJhd2luZ0J1ZmZlck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDk5QjND
NTcxMjhDNjQxRTAwRTcyNkMyIC8qIEdyYXBoaWNzTGF5ZXJNYWMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NMYXllck1hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQk0OTlCM0M1ODEyOEM2NDFFMDBFNzI2QzIgLyogR3JhcGhpY3NMYXllck1hYy5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdyYXBoaWNzTGF5ZXJN
YWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ5OUIzRUMzMTI4Q0NDNDcwMEU3
MjZDMiAvKiBQbGF0Zm9ybUNBTGF5ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gUGxhdGZvcm1DQUxheWVyLmg7IHBhdGggPSBjYS9QbGF0Zm9ybUNBTGF5ZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDk5QjNFRDQxMjhDRDMxNDAwRTcyNkMyIC8qIEdyYXBo
aWNzTGF5ZXJDQS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBHcmFw
aGljc0xheWVyQ0EuY3BwOyBwYXRoID0gY2EvR3JhcGhpY3NMYXllckNBLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDk5QjNFRDUxMjhDRDMxNDAwRTcyNkMyIC8qIEdyYXBoaWNz
TGF5ZXJDQS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBHcmFwaGljc0xheWVy
Q0EuaDsgcGF0aCA9IGNhL0dyYXBoaWNzTGF5ZXJDQS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk0OTlCM0VEQzEyOERCNTAxMDBFNzI2QzIgLyogUGxhdGZvcm1DQUFuaW1hdGlvbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBQbGF0Zm9ybUNBQW5pbWF0aW9uLmg7
IHBhdGggPSBjYS9QbGF0Zm9ybUNBQW5pbWF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQ5QjY5RTU1MTI1NEZFRUQwMDdENTdFQiAvKiBMb29wQmxpbm5DbGFzc2lmaWVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExvb3BCbGlubkNsYXNzaWZp
ZXIuY3BwOyBwYXRoID0gZ3B1L0xvb3BCbGlubkNsYXNzaWZpZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0OUI2OUU1NjEyNTRGRUVEMDA3RDU3RUIgLyogTG9vcEJsaW5uQ2xh
c3NpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMb29wQmxpbm5DbGFz
c2lmaWVyLmg7IHBhdGggPSBncHUvTG9vcEJsaW5uQ2xhc3NpZmllci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0OUI2OUU1NzEyNTRGRUVEMDA3RDU3RUIgLyogTG9vcEJsaW5uQ29u
c3RhbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExvb3BCbGlubkNvbnN0
YW50cy5oOyBwYXRoID0gZ3B1L0xvb3BCbGlubkNvbnN0YW50cy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTI3MTAsNiArMTI3MTgsMTUgQEAKIAkJCW5hbWUgPSBjYW52YXM7CiAJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQk0OTU4NzgxRTEyQTU3REJDMDA3MjM4
QUMgLyogbWFjICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJ
CQk0OTU4NzgxRjEyQTU3RERGMDA3MjM4QUMgLyogUGxhdGZvcm1DQUFuaW1hdGlvbk1hYy5tbSAq
LywKKwkJCQk0OTU4NzgyMDEyQTU3RERGMDA3MjM4QUMgLyogUGxhdGZvcm1DQUxheWVyTWFjLm1t
ICovLAorCQkJKTsKKwkJCW5hbWUgPSBtYWM7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwor
CQl9OwogCQk0OTg3NzBDMTEyNDJDNTBEMDAyMjI2QkEgLyogZ3B1ICovID0gewogCQkJaXNhID0g
UEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTEyNzUxLDYgKzEyNzY4LDE4IEBACiAJCQlu
YW1lID0gbWFjOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJNDk5QjNFQzAx
MjhDQ0MxODAwRTcyNkMyIC8qIGNhICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGls
ZHJlbiA9ICgKKwkJCQk0OTU4NzgxRTEyQTU3REJDMDA3MjM4QUMgLyogbWFjICovLAorCQkJCTQ5
OUIzRURDMTI4REI1MDEwMEU3MjZDMiAvKiBQbGF0Zm9ybUNBQW5pbWF0aW9uLmggKi8sCisJCQkJ
NDk5QjNFRDQxMjhDRDMxNDAwRTcyNkMyIC8qIEdyYXBoaWNzTGF5ZXJDQS5jcHAgKi8sCisJCQkJ
NDk5QjNFRDUxMjhDRDMxNDAwRTcyNkMyIC8qIEdyYXBoaWNzTGF5ZXJDQS5oICovLAorCQkJCTQ5
OUIzRUMzMTI4Q0NDNDcwMEU3MjZDMiAvKiBQbGF0Zm9ybUNBTGF5ZXIuaCAqLywKKwkJCSk7CisJ
CQluYW1lID0gY2E7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQk0OUU5MTFC
MjBFRjg2RDI3MDA5RDBDQUYgLyogdHJhbnNmb3JtcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3Vw
OwogCQkJY2hpbGRyZW4gPSAoCkBAIC0xNjY4NSw4ICsxNjcxNCw2IEBACiAJCQkJQjJBRkZDN0Iw
RDAwQTVDMTAwMzAwNzREIC8qIEdseXBoUGFnZVRyZWVOb2RlTWFjLmNwcCAqLywKIAkJCQk0OUZG
QkYxQzExQzg1NTBFMDA2QTcxMTggLyogR3JhcGhpY3NDb250ZXh0M0RNYWMubW0gKi8sCiAJCQkJ
QjI3N0I0MDMwQjIyRjM3QzAwMDRCRUM2IC8qIEdyYXBoaWNzQ29udGV4dE1hYy5tbSAqLywKLQkJ
CQk0OTlCM0M1NzEyOEM2NDFFMDBFNzI2QzIgLyogR3JhcGhpY3NMYXllck1hYy5oICovLAotCQkJ
CTQ5OUIzQzU4MTI4QzY0MUUwMEU3MjZDMiAvKiBHcmFwaGljc0xheWVyTWFjLm1tICovLAogCQkJ
CUIyNzUzNThEMEIwNTNBNjYwMDJDRTY0RiAvKiBJY29uTWFjLm1tICovLAogCQkJCUIyNzUzNTRF
MEIwNTM4MTQwMDJDRTY0RiAvKiBJbWFnZU1hYy5tbSAqLywKIAkJCQlCMjc1MzU0RjBCMDUzODE0
MDAyQ0U2NEYgLyogSW50UG9pbnRNYWMubW0gKi8sCkBAIC0xNjcxMiw2ICsxNjczOSw3IEBACiAJ
CQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCUIyNzUzNTI5MEIwNTM4MTQw
MDJDRTY0RiAvKiBjZyAqLywKKwkJCQk0OTlCM0VDMDEyOENDQzE4MDBFNzI2QzIgLyogY2EgKi8s
CiAJCQkJQjUzMjBENjgxMjJBMjRFOTAwMkQxNDQwIC8qIGNvY29hICovLAogCQkJCUE3NUU4QjdG
MEUxREUyQjAwMDdGMjQ4MSAvKiBmaWx0ZXJzICovLAogCQkJCTQ5ODc3MEMxMTI0MkM1MEQwMDIy
MjZCQSAvKiBncHUgKi8sCkBAIC0xOTc3MSw3ICsxOTc5OSw2IEBACiAJCQkJQTg4RkUzMzQwRTVF
RUU4NzAwOEQ4QzBGIC8qIEdyYXBoaWNzQ29udGV4dFByaXZhdGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGNTgwQjBEMEYxMkEyNjkwMDUxRDY4OSAvKiBHcmFwaGljc0xheWVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjU4MEIwRTBGMTJBMjY5MDA1MUQ2ODkgLyogR3JhcGhpY3NMYXllckNsaWVu
dC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDk5QjNDNTkxMjhDNjQxRTAwRTcyNkMyIC8qIEdyYXBo
aWNzTGF5ZXJNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyQTAxNUFCMEFGNkNENTMwMDZCQ0Uw
RSAvKiBHcmFwaGljc1R5cGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlDNTBCNTYxNzEyMTE5RDIz
MDA4QjQ2RTAgLyogR3JvdXBTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzY5M0JBRDIx
MDZDMkRDQTAwN0IwODIzIC8qIEhhbHRhYmxlUGx1Z2luLmggaW4gSGVhZGVycyAqLywKQEAgLTIx
NDMwLDYgKzIxNDU3LDkgQEAKIAkJCQk5M0YxOTlFRDA4MjQ1RTU5MDAxRTlBQkMgLyogWFNMVFBy
b2Nlc3Nvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFCRTUxMkUwQ0Y2QzUxMjAwMkVBOTU5IC8q
IFhTTFRVbmljb2RlU29ydC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdERDREODcwRkRGNEQ2RTAw
RUNGOUE0IC8qIFhTU0F1ZGl0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ5OUIzRUM1MTI4Q0ND
NDcwMEU3MjZDMiAvKiBQbGF0Zm9ybUNBTGF5ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ5OUIz
RUQ3MTI4Q0QzMTQwMEU3MjZDMiAvKiBHcmFwaGljc0xheWVyQ0EuaCBpbiBIZWFkZXJzICovLAor
CQkJCTQ5OUIzRUREMTI4REI1MDIwMEU3MjZDMiAvKiBQbGF0Zm9ybUNBQW5pbWF0aW9uLmggaW4g
SGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5n
ID0gMDsKIAkJfTsKQEAgLTIyNDE1LDcgKzIyNDQ1LDYgQEAKIAkJCQlCMkVEOTc3MTBCMUY1NUNF
MDAyNTdEMEYgLyogR3JhcGhpY3NDb250ZXh0Q0cuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjI3
N0I0MDQwQjIyRjM3QzAwMDRCRUM2IC8qIEdyYXBoaWNzQ29udGV4dE1hYy5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGNTgwQjBDMEYxMkEyNjkwMDUxRDY4OSAvKiBHcmFwaGljc0xheWVyLmNwcCBp
biBTb3VyY2VzICovLAotCQkJCTQ5OUIzQzVBMTI4QzY0MUUwMEU3MjZDMiAvKiBHcmFwaGljc0xh
eWVyTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJBMDE1QUEwQUY2Q0Q1MzAwNkJDRTBFIC8q
IEdyYXBoaWNzVHlwZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzUwQjU2MTYxMjExOUQyMzAw
OEI0NkUwIC8qIEdyb3VwU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjU1QjNEQkYx
MjUxRjEyRDAwM0VGMjY5IC8qIEhpZGRlbklucHV0VHlwZS5jcHAgaW4gU291cmNlcyAqLywKQEAg
LTI0MDA4LDYgKzI0MDM3LDkgQEAKIAkJCQk5M0YxOUIwNTA4MjQ1RTU5MDAxRTlBQkMgLyogWFNM
VFByb2Nlc3NvckxpYnhzbHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFCRTUxMkQwQ0Y2QzUx
MjAwMkVBOTU5IC8qIFhTTFRVbmljb2RlU29ydC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5N0RE
NEQ4NjBGREY0RDZFMDBFQ0Y5QTQgLyogWFNTQXVkaXRvci5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQk0OTlCM0VENjEyOENEMzE0MDBFNzI2QzIgLyogR3JhcGhpY3NMYXllckNBLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTQ5NTg3ODIxMTJBNTdEREYwMDcyMzhBQyAvKiBQbGF0Zm9ybUNBQW5pbWF0
aW9uTWFjLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNDk1ODc4MjIxMkE1N0RERjAwNzIzOEFDIC8q
IFBsYXRmb3JtQ0FMYXllck1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlG
b3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgJKHJldmlzaW9uIDczMjczKQorKysgV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5
LDIzICs0OSwxOSBAQAogQGNsYXNzIFdlYkxheWVyOwogQGNsYXNzIENBTGF5ZXI7CiB0eXBlZGVm
IENBTGF5ZXIgUGxhdGZvcm1MYXllcjsKLXR5cGVkZWYgQ0FMYXllciogTmF0aXZlTGF5ZXI7CiAj
ZWxzZQogdHlwZWRlZiB2b2lkKiBQbGF0Zm9ybUxheWVyOwotdHlwZWRlZiB2b2lkKiBOYXRpdmVM
YXllcjsKICNlbmRpZgogI2VsaWYgUExBVEZPUk0oV0lOKQogbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgV0tDQUNGTGF5ZXI7CiB0eXBlZGVmIFdLQ0FDRkxheWVyIFBsYXRmb3JtTGF5ZXI7Ci10
eXBlZGVmIHZvaWQqIE5hdGl2ZUxheWVyOwogfQogI2VsaWYgUExBVEZPUk0oUVQpCiAjaWYgVVNF
KFRFWFRVUkVfTUFQUEVSKQogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgVGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXI7CiB0eXBlZGVmIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyIFBsYXRm
b3JtTGF5ZXI7Ci10eXBlZGVmIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyKiBOYXRpdmVMYXll
cjsKIH07CiAjZWxzZQogUVRfQkVHSU5fTkFNRVNQQUNFCkBAIC03MywxOCArNjksMTUgQEAgY2xh
c3MgUUdyYXBoaWNzT2JqZWN0OwogUVRfRU5EX05BTUVTUEFDRQogbmFtZXNwYWNlIFdlYkNvcmUg
ewogdHlwZWRlZiBRR3JhcGhpY3NPYmplY3QgUGxhdGZvcm1MYXllcjsKLXR5cGVkZWYgUUdyYXBo
aWNzT2JqZWN0KiBOYXRpdmVMYXllcjsKIH0KICNlbmRpZgogI2VsaWYgUExBVEZPUk0oQ0hST01J
VU0pCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBMYXllckNocm9taXVtOwogdHlwZWRlZiBM
YXllckNocm9taXVtIFBsYXRmb3JtTGF5ZXI7Ci10eXBlZGVmIHZvaWQqIE5hdGl2ZUxheWVyOwog
fQogI2Vsc2UKIHR5cGVkZWYgdm9pZCogUGxhdGZvcm1MYXllcjsKLXR5cGVkZWYgdm9pZCogTmF0
aXZlTGF5ZXI7CiAjZW5kaWYKIAogZW51bSBMYXllclRyZWVBc1RleHRCZWhhdmlvckZsYWdzIHsK
QEAgLTIwMCw5ICsxOTMsNiBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBuYW1lKCkgY29u
c3QgeyByZXR1cm4gbV9uYW1lOyB9CiAgICAgdmlydHVhbCB2b2lkIHNldE5hbWUoY29uc3QgU3Ry
aW5nJiBuYW1lKSB7IG1fbmFtZSA9IG5hbWU7IH0KIAotICAgIC8vIEZvciBob3N0aW5nIHRoaXMg
R3JhcGhpY3NMYXllciBpbiBhIG5hdGl2ZSBsYXllciBoaWVyYXJjaHkuCi0gICAgdmlydHVhbCBO
YXRpdmVMYXllciBuYXRpdmVMYXllcigpIGNvbnN0IHsgcmV0dXJuIDA7IH0KLQogICAgIEdyYXBo
aWNzTGF5ZXIqIHBhcmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyZW50OyB9OwogICAgIHZvaWQg
c2V0UGFyZW50KEdyYXBoaWNzTGF5ZXIqIGxheWVyKSB7IG1fcGFyZW50ID0gbGF5ZXI7IH0gLy8g
SW50ZXJuYWwgdXNlIG9ubHkuCiAgICAgCkBAIC0zMjMsNiArMzEzLDcgQEAgcHVibGljOgogICAg
IC8vIENhbGxiYWNrIGZyb20gdGhlIHVuZGVybHlpbmcgZ3JhcGhpY3Mgc3lzdGVtIHdoZW4gdGhl
IGxheWVyIGhhcyBiZWVuIGRpc3BsYXllZAogICAgIHZpcnR1YWwgdm9pZCBkaWREaXNwbGF5KFBs
YXRmb3JtTGF5ZXIqKSB7IH0KICAgICAKKyAgICAvLyBGb3IgaG9zdGluZyB0aGlzIEdyYXBoaWNz
TGF5ZXIgaW4gYSBuYXRpdmUgbGF5ZXIgaGllcmFyY2h5LgogICAgIHZpcnR1YWwgUGxhdGZvcm1M
YXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IHsgcmV0dXJuIDA7IH0KICAgICAKICAgICB2b2lk
IGR1bXBMYXllcihUZXh0U3RyZWFtJiwgaW50IGluZGVudCA9IDAsIExheWVyVHJlZUFzVGV4dEJl
aGF2aW9yID0gTGF5ZXJUcmVlQXNUZXh0QmVoYXZpb3JOb3JtYWwpIGNvbnN0OwpJbmRleDogV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAkocmV2
aXNpb24gNzMyMzYpCShmcm9tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NM
YXllckNBLmNwcDo3MzIzNikKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhp
Y3NMYXllckNBLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIyNzkgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKworI2luY2x1
ZGUgIkdyYXBoaWNzTGF5ZXJDQS5oIgorCisjaW5jbHVkZSAiQW5pbWF0aW9uLmgiCisjaW5jbHVk
ZSAiRmxvYXRDb252ZXJzaW9uLmgiCisjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSAi
UGxhdGZvcm1DQUxheWVyLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRl
ICJSb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaCIKKyNpbmNsdWRlICJTY2FsZVRyYW5zZm9ybU9w
ZXJhdGlvbi5oIgorI2luY2x1ZGUgIlN5c3RlbVRpbWUuaCIKKyNpbmNsdWRlICJUcmFuc2xhdGVU
cmFuc2Zvcm1PcGVyYXRpb24uaCIKKyNpbmNsdWRlIDxRdWFydHpDb3JlL1F1YXJ0ekNvcmUuaD4K
KyNpbmNsdWRlIDxsaW1pdHMuaD4KKyNpbmNsdWRlIDxvYmpjL29iamMtYXV0by5oPgorI2luY2x1
ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgorI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBz
dGQ7CisKKyNkZWZpbmUgSEFWRV9NT0RFUk5fUVVBUlRaQ09SRSAoIWRlZmluZWQoQlVJTERJTkdf
T05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpKQorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKKy8vIFRoZSB0aHJlc2hvbGQgd2lkdGggb3IgaGVpZ2h0IGFib3ZlIHdoaWNo
IGEgdGlsZWQgbGF5ZXIgd2lsbCBiZSB1c2VkLiBUaGlzIHNob3VsZCBiZQorLy8gbGFyZ2UgZW5v
dWdoIHRvIGF2b2lkIHRpbGVkIGxheWVycyBmb3IgbW9zdCBHcmFwaGljc0xheWVycywgYnV0IGxl
c3MgdGhhbiB0aGUgT3BlbkdMCisvLyB0ZXh0dXJlIHNpemUgbGltaXQgb24gYWxsIHN1cHBvcnRl
ZCBoYXJkd2FyZS4KK3N0YXRpYyBjb25zdCBpbnQgY01heFBpeGVsRGltZW5zaW9uID0gMjAwMDsK
KworLy8gSWYgd2Ugc2VuZCBhIGR1cmF0aW9uIG9mIDAgdG8gQ0EsIHRoZW4gaXQgd2lsbCB1c2Ug
dGhlIGRlZmF1bHQgZHVyYXRpb24KKy8vIG9mIDI1MG1zLiBTbyBzZW5kIGEgdmVyeSBzbWFsbCB2
YWx1ZSBpbnN0ZWFkLgorc3RhdGljIGNvbnN0IGZsb2F0IGNBbmltYXRpb25BbG1vc3RaZXJvRHVy
YXRpb24gPSAxZS0zZjsKKworLy8gQ0FDdXJyZW50TWVkaWFUaW1lKCkgaXMgYSB0aW1lIHNpbmNl
IGJvb3QuIFRoZXNlIG1ldGhvZHMgY29udmVydCBiZXR3ZWVuIHRoYXQgYW5kCisvLyBXZWJDb3Jl
IHRpbWUsIHdoaWNoIGlzIHN5c3RlbSB0aW1lIChVVEMpLgorc3RhdGljIENGVGltZUludGVydmFs
IGN1cnJlbnRUaW1lVG9NZWRpYVRpbWUoZG91YmxlIHQpCit7CisgICAgcmV0dXJuIENBQ3VycmVu
dE1lZGlhVGltZSgpICsgdCAtIFdURjo6Y3VycmVudFRpbWUoKTsKK30KKworc3RhdGljIGJvb2wg
aXNUcmFuc2Zvcm1UeXBlVHJhbnNmb3JtYXRpb25NYXRyaXgoVHJhbnNmb3JtT3BlcmF0aW9uOjpP
cGVyYXRpb25UeXBlIHRyYW5zZm9ybVR5cGUpCit7CisgICAgc3dpdGNoICh0cmFuc2Zvcm1UeXBl
KSB7CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlNLRVdfWDoKKyAgICBjYXNlIFRyYW5z
Zm9ybU9wZXJhdGlvbjo6U0tFV19ZOgorICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpTS0VX
OgorICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpNQVRSSVg6CisgICAgY2FzZSBUcmFuc2Zv
cm1PcGVyYXRpb246OlJPVEFURV8zRDoKKyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6TUFU
UklYXzNEOgorICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpQRVJTUEVDVElWRToKKyAgICBj
YXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6SURFTlRJVFk6CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVy
YXRpb246Ok5PTkU6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGRlZmF1bHQ6CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK3N0YXRpYyBib29sIGlzVHJhbnNmb3JtVHlwZUZs
b2F0UG9pbnQzRChUcmFuc2Zvcm1PcGVyYXRpb246Ok9wZXJhdGlvblR5cGUgdHJhbnNmb3JtVHlw
ZSkKK3sKKyAgICBzd2l0Y2ggKHRyYW5zZm9ybVR5cGUpIHsKKyAgICBjYXNlIFRyYW5zZm9ybU9w
ZXJhdGlvbjo6U0NBTEU6CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlNDQUxFXzNEOgor
ICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEU6CisgICAgY2FzZSBUcmFuc2Zv
cm1PcGVyYXRpb246OlRSQU5TTEFURV8zRDoKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgZGVm
YXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworc3RhdGljIGJvb2wgaXNU
cmFuc2Zvcm1UeXBlTnVtYmVyKFRyYW5zZm9ybU9wZXJhdGlvbjo6T3BlcmF0aW9uVHlwZSB0cmFu
c2Zvcm1UeXBlKQoreworICAgIHJldHVybiAhaXNUcmFuc2Zvcm1UeXBlVHJhbnNmb3JtYXRpb25N
YXRyaXgodHJhbnNmb3JtVHlwZSkgJiYgIWlzVHJhbnNmb3JtVHlwZUZsb2F0UG9pbnQzRCh0cmFu
c2Zvcm1UeXBlKTsKK30KKworc3RhdGljIHZvaWQgZ2V0VHJhbnNmb3JtRnVuY3Rpb25WYWx1ZShj
b25zdCBUcmFuc2Zvcm1PcGVyYXRpb24qIHRyYW5zZm9ybU9wLCBUcmFuc2Zvcm1PcGVyYXRpb246
Ok9wZXJhdGlvblR5cGUgdHJhbnNmb3JtVHlwZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgZmxvYXQm
IHZhbHVlKQoreworICAgIHN3aXRjaCAodHJhbnNmb3JtVHlwZSkgeworICAgIGNhc2UgVHJhbnNm
b3JtT3BlcmF0aW9uOjpST1RBVEU6CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlJPVEFU
RV9YOgorICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpST1RBVEVfWToKKyAgICAgICAgdmFs
dWUgPSB0cmFuc2Zvcm1PcCA/IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoZGVnMnJhZChzdGF0aWNf
Y2FzdDxjb25zdCBSb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24qPih0cmFuc2Zvcm1PcCktPmFuZ2xl
KCkpKSA6IDA7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpT
Q0FMRV9YOgorICAgICAgICB2YWx1ZSA9IHRyYW5zZm9ybU9wID8gbmFycm93UHJlY2lzaW9uVG9G
bG9hdChzdGF0aWNfY2FzdDxjb25zdCBTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbio+KHRyYW5zZm9y
bU9wKS0+eCgpKSA6IDE7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0
aW9uOjpTQ0FMRV9ZOgorICAgICAgICB2YWx1ZSA9IHRyYW5zZm9ybU9wID8gbmFycm93UHJlY2lz
aW9uVG9GbG9hdChzdGF0aWNfY2FzdDxjb25zdCBTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbio+KHRy
YW5zZm9ybU9wKS0+eSgpKSA6IDE7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVHJhbnNmb3Jt
T3BlcmF0aW9uOjpTQ0FMRV9aOgorICAgICAgICB2YWx1ZSA9IHRyYW5zZm9ybU9wID8gbmFycm93
UHJlY2lzaW9uVG9GbG9hdChzdGF0aWNfY2FzdDxjb25zdCBTY2FsZVRyYW5zZm9ybU9wZXJhdGlv
bio+KHRyYW5zZm9ybU9wKS0+eigpKSA6IDE7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVHJh
bnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfWDoKKyAgICAgICAgdmFsdWUgPSB0cmFuc2Zvcm1P
cCA/IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoc3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNsYXRlVHJh
bnNmb3JtT3BlcmF0aW9uKj4odHJhbnNmb3JtT3ApLT54KHNpemUpKSA6IDA7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfWToKKyAgICAgICAg
dmFsdWUgPSB0cmFuc2Zvcm1PcCA/IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoc3RhdGljX2Nhc3Q8
Y29uc3QgVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uKj4odHJhbnNmb3JtT3ApLT55KHNpemUp
KSA6IDA7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFO
U0xBVEVfWjoKKyAgICAgICAgdmFsdWUgPSB0cmFuc2Zvcm1PcCA/IG5hcnJvd1ByZWNpc2lvblRv
RmxvYXQoc3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uKj4odHJh
bnNmb3JtT3ApLT56KHNpemUpKSA6IDA7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6Cisg
ICAgICAgIGJyZWFrOworICAgIH0KK30KKworc3RhdGljIHZvaWQgZ2V0VHJhbnNmb3JtRnVuY3Rp
b25WYWx1ZShjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb24qIHRyYW5zZm9ybU9wLCBUcmFuc2Zvcm1P
cGVyYXRpb246Ok9wZXJhdGlvblR5cGUgdHJhbnNmb3JtVHlwZSwgY29uc3QgSW50U2l6ZSYgc2l6
ZSwgRmxvYXRQb2ludDNEJiB2YWx1ZSkKK3sKKyAgICBzd2l0Y2ggKHRyYW5zZm9ybVR5cGUpIHsK
KyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0NBTEU6CisgICAgY2FzZSBUcmFuc2Zvcm1P
cGVyYXRpb246OlNDQUxFXzNEOgorICAgICAgICB2YWx1ZS5zZXRYKHRyYW5zZm9ybU9wID8gbmFy
cm93UHJlY2lzaW9uVG9GbG9hdChzdGF0aWNfY2FzdDxjb25zdCBTY2FsZVRyYW5zZm9ybU9wZXJh
dGlvbio+KHRyYW5zZm9ybU9wKS0+eCgpKSA6IDEpOworICAgICAgICB2YWx1ZS5zZXRZKHRyYW5z
Zm9ybU9wID8gbmFycm93UHJlY2lzaW9uVG9GbG9hdChzdGF0aWNfY2FzdDxjb25zdCBTY2FsZVRy
YW5zZm9ybU9wZXJhdGlvbio+KHRyYW5zZm9ybU9wKS0+eSgpKSA6IDEpOworICAgICAgICB2YWx1
ZS5zZXRaKHRyYW5zZm9ybU9wID8gbmFycm93UHJlY2lzaW9uVG9GbG9hdChzdGF0aWNfY2FzdDxj
b25zdCBTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbio+KHRyYW5zZm9ybU9wKS0+eigpKSA6IDEpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFOgor
ICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfM0Q6CisgICAgICAgIHZhbHVl
LnNldFgodHJhbnNmb3JtT3AgPyBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHN0YXRpY19jYXN0PGNv
bnN0IFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbio+KHRyYW5zZm9ybU9wKS0+eChzaXplKSkg
OiAwKTsKKyAgICAgICAgdmFsdWUuc2V0WSh0cmFuc2Zvcm1PcCA/IG5hcnJvd1ByZWNpc2lvblRv
RmxvYXQoc3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uKj4odHJh
bnNmb3JtT3ApLT55KHNpemUpKSA6IDApOworICAgICAgICB2YWx1ZS5zZXRaKHRyYW5zZm9ybU9w
ID8gbmFycm93UHJlY2lzaW9uVG9GbG9hdChzdGF0aWNfY2FzdDxjb25zdCBUcmFuc2xhdGVUcmFu
c2Zvcm1PcGVyYXRpb24qPih0cmFuc2Zvcm1PcCktPnooc2l6ZSkpIDogMCk7CisgICAgICAgIGJy
ZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworc3RhdGljIHZv
aWQgZ2V0VHJhbnNmb3JtRnVuY3Rpb25WYWx1ZShjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb24qIHRy
YW5zZm9ybU9wLCBUcmFuc2Zvcm1PcGVyYXRpb246Ok9wZXJhdGlvblR5cGUgdHJhbnNmb3JtVHlw
ZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHZhbHVlKQorewor
ICAgIHN3aXRjaCAodHJhbnNmb3JtVHlwZSkgeworICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9u
OjpTS0VXX1g6CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlNLRVdfWToKKyAgICBjYXNl
IFRyYW5zZm9ybU9wZXJhdGlvbjo6U0tFVzoKKyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6
TUFUUklYOgorICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpST1RBVEVfM0Q6CisgICAgY2Fz
ZSBUcmFuc2Zvcm1PcGVyYXRpb246Ok1BVFJJWF8zRDoKKyAgICBjYXNlIFRyYW5zZm9ybU9wZXJh
dGlvbjo6UEVSU1BFQ1RJVkU6CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OklERU5USVRZ
OgorICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpOT05FOgorICAgICAgICBpZiAodHJhbnNm
b3JtT3ApCisgICAgICAgICAgICB0cmFuc2Zvcm1PcC0+YXBwbHkodmFsdWUsIHNpemUpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICB2YWx1ZS5tYWtlSWRlbnRpdHkoKTsKKyAgICAgICAgYnJl
YWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCisjaWYgSEFWRV9N
T0RFUk5fUVVBUlRaQ09SRQorc3RhdGljIFBsYXRmb3JtQ0FBbmltYXRpb246OlZhbHVlRnVuY3Rp
b25UeXBlIGdldFZhbHVlRnVuY3Rpb25OYW1lRm9yVHJhbnNmb3JtT3BlcmF0aW9uKFRyYW5zZm9y
bU9wZXJhdGlvbjo6T3BlcmF0aW9uVHlwZSB0cmFuc2Zvcm1UeXBlKQoreworICAgIC8vIFVzZSBs
aXRlcmFsIHN0cmluZ3MgdG8gYXZvaWQgbGluay10aW1lIGRlcGVuZGVuY3kgb24gdGhvc2Ugc3lt
Ym9scy4KKyAgICBzd2l0Y2ggKHRyYW5zZm9ybVR5cGUpIHsKKyAgICBjYXNlIFRyYW5zZm9ybU9w
ZXJhdGlvbjo6Uk9UQVRFX1g6CisgICAgICAgIHJldHVybiBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpS
b3RhdGVYOworICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpST1RBVEVfWToKKyAgICAgICAg
cmV0dXJuIFBsYXRmb3JtQ0FBbmltYXRpb246OlJvdGF0ZVk7CisgICAgY2FzZSBUcmFuc2Zvcm1P
cGVyYXRpb246OlJPVEFURToKKyAgICAgICAgcmV0dXJuIFBsYXRmb3JtQ0FBbmltYXRpb246OlJv
dGF0ZVo7CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlNDQUxFX1g6CisgICAgICAgIHJl
dHVybiBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpTY2FsZVg7CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVy
YXRpb246OlNDQUxFX1k6CisgICAgICAgIHJldHVybiBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpTY2Fs
ZVk7CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlNDQUxFX1o6CisgICAgICAgIHJldHVy
biBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpTY2FsZVo7CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRp
b246OlRSQU5TTEFURV9YOgorICAgICAgICByZXR1cm4gUGxhdGZvcm1DQUFuaW1hdGlvbjo6VHJh
bnNsYXRlWDsKKyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFX1k6CisgICAg
ICAgIHJldHVybiBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpUcmFuc2xhdGVZOworICAgIGNhc2UgVHJh
bnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfWjoKKyAgICAgICAgcmV0dXJuIFBsYXRmb3JtQ0FB
bmltYXRpb246OlRyYW5zbGF0ZVo7CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlNDQUxF
OgorICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpTQ0FMRV8zRDoKKyAgICAgICAgcmV0dXJu
IFBsYXRmb3JtQ0FBbmltYXRpb246OlNjYWxlOworICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9u
OjpUUkFOU0xBVEU6CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURV8zRDoK
KyAgICAgICAgcmV0dXJuIFBsYXRmb3JtQ0FBbmltYXRpb246OlRyYW5zbGF0ZTsKKyAgICBkZWZh
dWx0OgorICAgICAgICByZXR1cm4gUGxhdGZvcm1DQUFuaW1hdGlvbjo6Tm9WYWx1ZUZ1bmN0aW9u
OworICAgIH0KK30KKyNlbmRpZgorCitzdGF0aWMgU3RyaW5nIHByb3BlcnR5SWRUb1N0cmluZyhB
bmltYXRlZFByb3BlcnR5SUQgcHJvcGVydHkpCit7CisgICAgc3dpdGNoIChwcm9wZXJ0eSkgewor
ICAgIGNhc2UgQW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybToKKyAgICAgICAgcmV0dXJu
ICJ0cmFuc2Zvcm0iOworICAgIGNhc2UgQW5pbWF0ZWRQcm9wZXJ0eU9wYWNpdHk6CisgICAgICAg
IHJldHVybiAib3BhY2l0eSI7CisgICAgY2FzZSBBbmltYXRlZFByb3BlcnR5QmFja2dyb3VuZENv
bG9yOgorICAgICAgICByZXR1cm4gImJhY2tncm91bmRDb2xvciI7CisgICAgY2FzZSBBbmltYXRl
ZFByb3BlcnR5SW52YWxpZDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQor
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAiIjsKK30KKworc3RhdGljIFN0
cmluZyBhbmltYXRpb25JZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSwgQW5p
bWF0ZWRQcm9wZXJ0eUlEIHByb3BlcnR5LCBpbnQgaW5kZXgpCit7CisgICAgcmV0dXJuIG1ha2VT
dHJpbmcoYW5pbWF0aW9uTmFtZSwgJ18nLCBTdHJpbmc6Om51bWJlcihwcm9wZXJ0eSksICdfJywg
U3RyaW5nOjpudW1iZXIoaW5kZXgpKTsKK30KKworc3RhdGljIGJvb2wgYW5pbWF0aW9uSGFzU3Rl
cHNUaW1pbmdGdW5jdGlvbihjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVMaXN0LCBjb25z
dCBBbmltYXRpb24qIGFuaW0pCit7CisgICAgaWYgKGFuaW0tPnRpbWluZ0Z1bmN0aW9uKCktPmlz
U3RlcHNUaW1pbmdGdW5jdGlvbigpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAKKyAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdmFsdWVMaXN0LnNpemUoKTsgKytpKSB7CisgICAgICAg
IGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB0aW1pbmdGdW5jdGlvbiA9IHZhbHVlTGlzdC5hdChpKS0+
dGltaW5nRnVuY3Rpb24oKTsKKyAgICAgICAgaWYgKHRpbWluZ0Z1bmN0aW9uICYmIHRpbWluZ0Z1
bmN0aW9uLT5pc1N0ZXBzVGltaW5nRnVuY3Rpb24oKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKworUGFzc093blB0cjxHcmFwaGljc0xh
eWVyPiBHcmFwaGljc0xheWVyOjpjcmVhdGUoR3JhcGhpY3NMYXllckNsaWVudCogY2xpZW50KQor
eworICAgIHJldHVybiBuZXcgR3JhcGhpY3NMYXllckNBKGNsaWVudCk7Cit9CisKK0dyYXBoaWNz
TGF5ZXJDQTo6R3JhcGhpY3NMYXllckNBKEdyYXBoaWNzTGF5ZXJDbGllbnQqIGNsaWVudCkKKyAg
ICA6IEdyYXBoaWNzTGF5ZXIoY2xpZW50KQorICAgICwgbV9jb250ZW50c0xheWVyUHVycG9zZShO
b0NvbnRlbnRzTGF5ZXIpCisgICAgLCBtX2NvbnRlbnRzTGF5ZXJIYXNCYWNrZ3JvdW5kQ29sb3Io
ZmFsc2UpCisgICAgLCBtX3VuY29tbWl0dGVkQ2hhbmdlcyhOb0NoYW5nZSkKK3sKKyAgICBtX2xh
eWVyID0gUGxhdGZvcm1DQUxheWVyOjpjcmVhdGUoUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVX
ZWJMYXllciwgdGhpcyk7CisKKyNpZiAhSEFWRV9NT0RFUk5fUVVBUlRaQ09SRQorICAgIHNldENv
bnRlbnRzT3JpZW50YXRpb24oZGVmYXVsdENvbnRlbnRzT3JpZW50YXRpb24oKSk7CisjZW5kaWYK
KworICAgIHVwZGF0ZURlYnVnSW5kaWNhdG9ycygpOworfQorCitHcmFwaGljc0xheWVyQ0E6On5H
cmFwaGljc0xheWVyQ0EoKQoreworICAgIC8vIFdlIHJlbGVhc2Ugb3VyIHJlZmVyZW5jZXMgdG8g
dGhlIFBsYXRmb3JtQ0FMYXllcnMgaGVyZSwgYnV0IGRvIG5vdCBhY3RpdmVseSB1bnBhcmVudCB0
aGVtLAorICAgIC8vIHNpbmNlIHRoYXQgd2lsbCBjYXVzZSBhIGNvbW1pdCBhbmQgYnJlYWsgb3Vy
IGJhdGNoZWQgY29tbWl0IG1vZGVsLiBUaGUgbGF5ZXJzIHdpbGwKKyAgICAvLyBnZXQgcmVsZWFz
ZWQgd2hlbiB0aGUgcm9vdG1vc3QgbW9kaWZpZWQgR3JhcGhpY3NMYXllckNBIHJlYnVpbGRzIGl0
cyBjaGlsZCBsYXllcnMuCisgICAgCisgICAgLy8gQ2xlYW4gdXAgdGhlIGxheWVyLgorICAgIGlm
IChtX2xheWVyKQorICAgICAgICBtX2xheWVyLT5zZXRPd25lcigwKTsKKyAgICAKKyAgICBpZiAo
bV9jb250ZW50c0xheWVyKQorICAgICAgICBtX2NvbnRlbnRzTGF5ZXItPnNldE93bmVyKDApOwor
ICAgICAgICAKKyAgICBpZiAobV9zdHJ1Y3R1cmFsTGF5ZXIpCisgICAgICAgIG1fc3RydWN0dXJh
bExheWVyLT5zZXRPd25lcigwKTsKKyAgICAKKyAgICByZW1vdmVDbG9uZUxheWVycygpOworfQor
Cit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0TmFtZShjb25zdCBTdHJpbmcmIG5hbWUpCit7Cisg
ICAgU3RyaW5nIGxvbmdOYW1lID0gU3RyaW5nOjpmb3JtYXQoIkNBTGF5ZXIoJXApIEdyYXBoaWNz
TGF5ZXIoJXApICIsIG1fbGF5ZXIuZ2V0KCksIHRoaXMpICsgbmFtZTsKKyAgICBHcmFwaGljc0xh
eWVyOjpzZXROYW1lKGxvbmdOYW1lKTsKKyAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoTmFt
ZUNoYW5nZWQpOworfQorCitQbGF0Zm9ybUxheWVyKiBHcmFwaGljc0xheWVyQ0E6OnBsYXRmb3Jt
TGF5ZXIoKSBjb25zdAoreworICAgIHJldHVybiBwcmltYXJ5TGF5ZXIoKS0+cGxhdGZvcm1MYXll
cigpOworfQorCitib29sIEdyYXBoaWNzTGF5ZXJDQTo6c2V0Q2hpbGRyZW4oY29uc3QgVmVjdG9y
PEdyYXBoaWNzTGF5ZXIqPiYgY2hpbGRyZW4pCit7CisgICAgYm9vbCBjaGlsZHJlbkNoYW5nZWQg
PSBHcmFwaGljc0xheWVyOjpzZXRDaGlsZHJlbihjaGlsZHJlbik7CisgICAgaWYgKGNoaWxkcmVu
Q2hhbmdlZCkKKyAgICAgICAgbm90ZVN1YmxheWVyc0NoYW5nZWQoKTsKKyAgICAKKyAgICByZXR1
cm4gY2hpbGRyZW5DaGFuZ2VkOworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6YWRkQ2hpbGQo
R3JhcGhpY3NMYXllciogY2hpbGRMYXllcikKK3sKKyAgICBHcmFwaGljc0xheWVyOjphZGRDaGls
ZChjaGlsZExheWVyKTsKKyAgICBub3RlU3VibGF5ZXJzQ2hhbmdlZCgpOworfQorCit2b2lkIEdy
YXBoaWNzTGF5ZXJDQTo6YWRkQ2hpbGRBdEluZGV4KEdyYXBoaWNzTGF5ZXIqIGNoaWxkTGF5ZXIs
IGludCBpbmRleCkKK3sKKyAgICBHcmFwaGljc0xheWVyOjphZGRDaGlsZEF0SW5kZXgoY2hpbGRM
YXllciwgaW5kZXgpOworICAgIG5vdGVTdWJsYXllcnNDaGFuZ2VkKCk7Cit9CisKK3ZvaWQgR3Jh
cGhpY3NMYXllckNBOjphZGRDaGlsZEJlbG93KEdyYXBoaWNzTGF5ZXIqIGNoaWxkTGF5ZXIsIEdy
YXBoaWNzTGF5ZXIqIHNpYmxpbmcpCit7CisgICAgR3JhcGhpY3NMYXllcjo6YWRkQ2hpbGRCZWxv
dyhjaGlsZExheWVyLCBzaWJsaW5nKTsKKyAgICBub3RlU3VibGF5ZXJzQ2hhbmdlZCgpOworfQor
Cit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6YWRkQ2hpbGRBYm92ZShHcmFwaGljc0xheWVyKiBjaGls
ZExheWVyLCBHcmFwaGljc0xheWVyKiBzaWJsaW5nKQoreworICAgIEdyYXBoaWNzTGF5ZXI6OmFk
ZENoaWxkQWJvdmUoY2hpbGRMYXllciwgc2libGluZyk7CisgICAgbm90ZVN1YmxheWVyc0NoYW5n
ZWQoKTsKK30KKworYm9vbCBHcmFwaGljc0xheWVyQ0E6OnJlcGxhY2VDaGlsZChHcmFwaGljc0xh
eWVyKiBvbGRDaGlsZCwgR3JhcGhpY3NMYXllciogbmV3Q2hpbGQpCit7CisgICAgaWYgKEdyYXBo
aWNzTGF5ZXI6OnJlcGxhY2VDaGlsZChvbGRDaGlsZCwgbmV3Q2hpbGQpKSB7CisgICAgICAgIG5v
dGVTdWJsYXllcnNDaGFuZ2VkKCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpyZW1vdmVGcm9tUGFyZW50
KCkKK3sKKyAgICBpZiAobV9wYXJlbnQpCisgICAgICAgIHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5
ZXJDQSo+KG1fcGFyZW50KS0+bm90ZVN1YmxheWVyc0NoYW5nZWQoKTsKKyAgICBHcmFwaGljc0xh
eWVyOjpyZW1vdmVGcm9tUGFyZW50KCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRN
YXNrTGF5ZXIoR3JhcGhpY3NMYXllciogbGF5ZXIpCit7CisgICAgaWYgKGxheWVyID09IG1fbWFz
a0xheWVyKQorICAgICAgICByZXR1cm47CisKKyAgICBHcmFwaGljc0xheWVyOjpzZXRNYXNrTGF5
ZXIobGF5ZXIpOworICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChNYXNrTGF5ZXJDaGFuZ2Vk
KTsKKworICAgIHByb3BhZ2F0ZUxheWVyQ2hhbmdlVG9SZXBsaWNhcygpOworICAgIAorICAgIGlm
IChtX3JlcGxpY2F0ZWRMYXllcikKKyAgICAgICAgc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllckNB
Kj4obV9yZXBsaWNhdGVkTGF5ZXIpLT5wcm9wYWdhdGVMYXllckNoYW5nZVRvUmVwbGljYXMoKTsK
K30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldFJlcGxpY2F0ZWRMYXllcihHcmFwaGljc0xh
eWVyKiBsYXllcikKK3sKKyAgICBpZiAobGF5ZXIgPT0gbV9yZXBsaWNhdGVkTGF5ZXIpCisgICAg
ICAgIHJldHVybjsKKworICAgIEdyYXBoaWNzTGF5ZXI6OnNldFJlcGxpY2F0ZWRMYXllcihsYXll
cik7CisgICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKFJlcGxpY2F0ZWRMYXllckNoYW5nZWQp
OworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0UmVwbGljYXRlZEJ5TGF5ZXIoR3JhcGhp
Y3NMYXllciogbGF5ZXIpCit7CisgICAgaWYgKGxheWVyID09IG1fcmVwbGljYUxheWVyKQorICAg
ICAgICByZXR1cm47CisKKyAgICBHcmFwaGljc0xheWVyOjpzZXRSZXBsaWNhdGVkQnlMYXllcihs
YXllcik7CisgICAgbm90ZVN1YmxheWVyc0NoYW5nZWQoKTsKKyAgICBub3RlTGF5ZXJQcm9wZXJ0
eUNoYW5nZWQoUmVwbGljYXRlZExheWVyQ2hhbmdlZCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXll
ckNBOjpzZXRQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50JiBwb2ludCkKK3sKKyAgICBpZiAocG9p
bnQgPT0gbV9wb3NpdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgR3JhcGhpY3NMYXllcjo6
c2V0UG9zaXRpb24ocG9pbnQpOworICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChQb3NpdGlv
bkNoYW5nZWQpOworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0QW5jaG9yUG9pbnQoY29u
c3QgRmxvYXRQb2ludDNEJiBwb2ludCkKK3sKKyAgICBpZiAocG9pbnQgPT0gbV9hbmNob3JQb2lu
dCkKKyAgICAgICAgcmV0dXJuOworCisgICAgR3JhcGhpY3NMYXllcjo6c2V0QW5jaG9yUG9pbnQo
cG9pbnQpOworICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChBbmNob3JQb2ludENoYW5nZWQp
OworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0U2l6ZShjb25zdCBGbG9hdFNpemUmIHNp
emUpCit7CisgICAgaWYgKHNpemUgPT0gbV9zaXplKQorICAgICAgICByZXR1cm47CisKKyAgICBH
cmFwaGljc0xheWVyOjpzZXRTaXplKHNpemUpOworICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdl
ZChTaXplQ2hhbmdlZCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRUcmFuc2Zvcm0o
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHQpCit7CisgICAgaWYgKHQgPT0gbV90cmFuc2Zv
cm0pCisgICAgICAgIHJldHVybjsKKworICAgIEdyYXBoaWNzTGF5ZXI6OnNldFRyYW5zZm9ybSh0
KTsKKyAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoVHJhbnNmb3JtQ2hhbmdlZCk7Cit9CisK
K3ZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRDaGlsZHJlblRyYW5zZm9ybShjb25zdCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYgdCkKK3sKKyAgICBpZiAodCA9PSBtX2NoaWxkcmVuVHJhbnNmb3JtKQor
ICAgICAgICByZXR1cm47CisKKyAgICBHcmFwaGljc0xheWVyOjpzZXRDaGlsZHJlblRyYW5zZm9y
bSh0KTsKKyAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoQ2hpbGRyZW5UcmFuc2Zvcm1DaGFu
Z2VkKTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6Om1vdmVPckNvcHlMYXllckFuaW1hdGlv
bihNb3ZlT3JDb3B5IG9wZXJhdGlvbiwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25JZGVudGlmaWVy
LCBQbGF0Zm9ybUNBTGF5ZXIgKmZyb21MYXllciwgUGxhdGZvcm1DQUxheWVyICp0b0xheWVyKQor
eworICAgIFJlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBhbmltID0gZnJvbUxheWVyLT5hbmlt
YXRpb25Gb3JLZXkoYW5pbWF0aW9uSWRlbnRpZmllcik7CisgICAgaWYgKCFhbmltKQorICAgICAg
ICByZXR1cm47CisKKyAgICBzd2l0Y2ggKG9wZXJhdGlvbikgeworICAgIGNhc2UgTW92ZToKKyAg
ICAgICAgZnJvbUxheWVyLT5yZW1vdmVBbmltYXRpb25Gb3JLZXkoYW5pbWF0aW9uSWRlbnRpZmll
cik7CisgICAgICAgIHRvTGF5ZXItPmFkZEFuaW1hdGlvbkZvcktleShhbmltYXRpb25JZGVudGlm
aWVyLCBhbmltLmdldCgpKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIENvcHk6CisgICAg
ICAgIHRvTGF5ZXItPmFkZEFuaW1hdGlvbkZvcktleShhbmltYXRpb25JZGVudGlmaWVyLCBhbmlt
LmdldCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJD
QTo6bW92ZU9yQ29weUFuaW1hdGlvbnNGb3JQcm9wZXJ0eShNb3ZlT3JDb3B5IG9wZXJhdGlvbiwg
QW5pbWF0ZWRQcm9wZXJ0eUlEIHByb3BlcnR5LCBQbGF0Zm9ybUNBTGF5ZXIgKmZyb21MYXllciwg
UGxhdGZvcm1DQUxheWVyICp0b0xheWVyKQoreworICAgIC8vIExvb2sgZm9yIHJ1bm5pbmcgYW5p
bWF0aW9ucyBhZmZlY3RpbmcgdGhpcyBwcm9wZXJ0eS4KKyAgICBBbmltYXRpb25zTWFwOjpjb25z
dF9pdGVyYXRvciBlbmQgPSBtX3J1bm5pbmdBbmltYXRpb25zLmVuZCgpOworICAgIGZvciAoQW5p
bWF0aW9uc01hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3J1bm5pbmdBbmltYXRpb25zLmJlZ2lu
KCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBjb25zdCBWZWN0b3I8TGF5ZXJQcm9wZXJ0
eUFuaW1hdGlvbj4mIHByb3BlcnR5QW5pbWF0aW9ucyA9IGl0LT5zZWNvbmQ7CisgICAgICAgIHNp
emVfdCBudW1BbmltYXRpb25zID0gcHJvcGVydHlBbmltYXRpb25zLnNpemUoKTsKKyAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1BbmltYXRpb25zOyArK2kpIHsKKyAgICAgICAgICAg
IGNvbnN0IExheWVyUHJvcGVydHlBbmltYXRpb24mIGN1cnJBbmltYXRpb24gPSBwcm9wZXJ0eUFu
aW1hdGlvbnNbaV07CisgICAgICAgICAgICBpZiAoY3VyckFuaW1hdGlvbi5tX3Byb3BlcnR5ID09
IHByb3BlcnR5KQorICAgICAgICAgICAgICAgIG1vdmVPckNvcHlMYXllckFuaW1hdGlvbihvcGVy
YXRpb24sIGFuaW1hdGlvbklkZW50aWZpZXIoY3VyckFuaW1hdGlvbi5tX25hbWUsIGN1cnJBbmlt
YXRpb24ubV9wcm9wZXJ0eSwgY3VyckFuaW1hdGlvbi5tX2luZGV4KSwgZnJvbUxheWVyLCB0b0xh
eWVyKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldFBy
ZXNlcnZlczNEKGJvb2wgcHJlc2VydmVzM0QpCit7CisgICAgaWYgKHByZXNlcnZlczNEID09IG1f
cHJlc2VydmVzM0QpCisgICAgICAgIHJldHVybjsKKworICAgIEdyYXBoaWNzTGF5ZXI6OnNldFBy
ZXNlcnZlczNEKHByZXNlcnZlczNEKTsKKyAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoUHJl
c2VydmVzM0RDaGFuZ2VkKTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldE1hc2tzVG9C
b3VuZHMoYm9vbCBtYXNrc1RvQm91bmRzKQoreworICAgIGlmIChtYXNrc1RvQm91bmRzID09IG1f
bWFza3NUb0JvdW5kcykKKyAgICAgICAgcmV0dXJuOworCisgICAgR3JhcGhpY3NMYXllcjo6c2V0
TWFza3NUb0JvdW5kcyhtYXNrc1RvQm91bmRzKTsKKyAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5n
ZWQoTWFza3NUb0JvdW5kc0NoYW5nZWQpOworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0
RHJhd3NDb250ZW50KGJvb2wgZHJhd3NDb250ZW50KQoreworICAgIGlmIChkcmF3c0NvbnRlbnQg
PT0gbV9kcmF3c0NvbnRlbnQpCisgICAgICAgIHJldHVybjsKKworICAgIEdyYXBoaWNzTGF5ZXI6
OnNldERyYXdzQ29udGVudChkcmF3c0NvbnRlbnQpOworICAgIG5vdGVMYXllclByb3BlcnR5Q2hh
bmdlZChEcmF3c0NvbnRlbnRDaGFuZ2VkKTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnNl
dEJhY2tncm91bmRDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCit7CisgICAgaWYgKG1fYmFja2dy
b3VuZENvbG9yU2V0ICYmIG1fYmFja2dyb3VuZENvbG9yID09IGNvbG9yKQorICAgICAgICByZXR1
cm47CisKKyAgICBHcmFwaGljc0xheWVyOjpzZXRCYWNrZ3JvdW5kQ29sb3IoY29sb3IpOworCisg
ICAgbV9jb250ZW50c0xheWVySGFzQmFja2dyb3VuZENvbG9yID0gdHJ1ZTsKKyAgICBub3RlTGF5
ZXJQcm9wZXJ0eUNoYW5nZWQoQmFja2dyb3VuZENvbG9yQ2hhbmdlZCk7Cit9CisKK3ZvaWQgR3Jh
cGhpY3NMYXllckNBOjpjbGVhckJhY2tncm91bmRDb2xvcigpCit7CisgICAgaWYgKCFtX2JhY2tn
cm91bmRDb2xvclNldCkKKyAgICAgICAgcmV0dXJuOworCisgICAgR3JhcGhpY3NMYXllcjo6Y2xl
YXJCYWNrZ3JvdW5kQ29sb3IoKTsKKyAgICBtX2NvbnRlbnRzTGF5ZXJIYXNCYWNrZ3JvdW5kQ29s
b3IgPSBmYWxzZTsKKyAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoQmFja2dyb3VuZENvbG9y
Q2hhbmdlZCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRDb250ZW50c09wYXF1ZShi
b29sIG9wYXF1ZSkKK3sKKyAgICBpZiAobV9jb250ZW50c09wYXF1ZSA9PSBvcGFxdWUpCisgICAg
ICAgIHJldHVybjsKKworICAgIEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzT3BhcXVlKG9wYXF1
ZSk7CisgICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKENvbnRlbnRzT3BhcXVlQ2hhbmdlZCk7
Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRCYWNrZmFjZVZpc2liaWxpdHkoYm9vbCB2
aXNpYmxlKQoreworICAgIGlmIChtX2JhY2tmYWNlVmlzaWJpbGl0eSA9PSB2aXNpYmxlKQorICAg
ICAgICByZXR1cm47CisgICAgCisgICAgR3JhcGhpY3NMYXllcjo6c2V0QmFja2ZhY2VWaXNpYmls
aXR5KHZpc2libGUpOworICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChCYWNrZmFjZVZpc2li
aWxpdHlDaGFuZ2VkKTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldE9wYWNpdHkoZmxv
YXQgb3BhY2l0eSkKK3sKKyAgICBmbG9hdCBjbGFtcGVkT3BhY2l0eSA9IG1heCgwLjBmLCBtaW4o
b3BhY2l0eSwgMS4wZikpOworCisgICAgaWYgKGNsYW1wZWRPcGFjaXR5ID09IG1fb3BhY2l0eSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgR3JhcGhpY3NMYXllcjo6c2V0T3BhY2l0eShjbGFtcGVk
T3BhY2l0eSk7CisgICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKE9wYWNpdHlDaGFuZ2VkKTsK
K30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldE5lZWRzRGlzcGxheSgpCit7CisgICAgRmxv
YXRSZWN0IGh1Z2VSZWN0KC1udW1lcmljX2xpbWl0czxmbG9hdD46Om1heCgpIC8gMiwgLW51bWVy
aWNfbGltaXRzPGZsb2F0Pjo6bWF4KCkgLyAyLAorICAgICAgICAgICAgICAgICAgICAgICBudW1l
cmljX2xpbWl0czxmbG9hdD46Om1heCgpLCBudW1lcmljX2xpbWl0czxmbG9hdD46Om1heCgpKTsK
KworICAgIHNldE5lZWRzRGlzcGxheUluUmVjdChodWdlUmVjdCk7Cit9CisKK3ZvaWQgR3JhcGhp
Y3NMYXllckNBOjpzZXROZWVkc0Rpc3BsYXlJblJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQor
eworICAgIGlmICghZHJhd3NDb250ZW50KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGNvbnN0
IHNpemVfdCBtYXhEaXJ0eVJlY3RzID0gMzI7CisgICAgCisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBtX2RpcnR5UmVjdHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKG1fZGlydHlSZWN0
c1tpXS5jb250YWlucyhyZWN0KSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisg
ICAgaWYgKG1fZGlydHlSZWN0cy5zaXplKCkgPCBtYXhEaXJ0eVJlY3RzKQorICAgICAgICBtX2Rp
cnR5UmVjdHMuYXBwZW5kKHJlY3QpOworICAgIGVsc2UKKyAgICAgICAgbV9kaXJ0eVJlY3RzWzBd
LnVuaXRlKHJlY3QpOworCisgICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKERpcnR5UmVjdHND
aGFuZ2VkKTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRzTmVlZHNEaXNw
bGF5KCkKK3sKKyAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoQ29udGVudHNOZWVkc0Rpc3Bs
YXkpOworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0Q29udGVudHNSZWN0KGNvbnN0IElu
dFJlY3QmIHJlY3QpCit7CisgICAgaWYgKHJlY3QgPT0gbV9jb250ZW50c1JlY3QpCisgICAgICAg
IHJldHVybjsKKworICAgIEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzUmVjdChyZWN0KTsKKyAg
ICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoQ29udGVudHNSZWN0Q2hhbmdlZCk7Cit9CisKK2Jv
b2wgR3JhcGhpY3NMYXllckNBOjphZGRBbmltYXRpb24oY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3Qm
IHZhbHVlTGlzdCwgY29uc3QgSW50U2l6ZSYgYm94U2l6ZSwgY29uc3QgQW5pbWF0aW9uKiBhbmlt
LCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGRvdWJsZSB0aW1lT2Zmc2V0KQoreworICAg
IEFTU0VSVCghYW5pbWF0aW9uTmFtZS5pc0VtcHR5KCkpOworCisgICAgaWYgKCFhbmltIHx8IGFu
aW0tPmlzRW1wdHlPclplcm9EdXJhdGlvbigpIHx8IHZhbHVlTGlzdC5zaXplKCkgPCAyKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyNpZiAhSEFWRV9NT0RFUk5fUVVBUlRaQ09SRQorICAgIC8v
IE9sZGVyIHZlcnNpb25zIG9mIFF1YXJ0ekNvcmUgZG8gbm90IGhhbmRsZSBvcGFjaXR5IGluIHRy
YW5zZm9ybSBsYXllcnMgcHJvcGVybHksIHNvIHdlIHdpbGwKKyAgICAvLyBhbHdheXMgZG8gc29m
dHdhcmUgYW5pbWF0aW9uIGluIHRoYXQgY2FzZS4KKyAgICBpZiAodmFsdWVMaXN0LnByb3BlcnR5
KCkgPT0gQW5pbWF0ZWRQcm9wZXJ0eU9wYWNpdHkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyNl
bmRpZgorCisgICAgLy8gQ29yZUFuaW1hdGlvbiBkb2VzIG5vdCBoYW5kbGUgdGhlIHN0ZXBzKCkg
dGltaW5nIGZ1bmN0aW9uLiBGYWxsIGJhY2sKKyAgICAvLyB0byBzb2Z0d2FyZSBhbmltYXRpb24g
aW4gdGhhdCBjYXNlLgorICAgIGlmIChhbmltYXRpb25IYXNTdGVwc1RpbWluZ0Z1bmN0aW9uKHZh
bHVlTGlzdCwgYW5pbSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGJvb2wgY3JlYXRl
ZEFuaW1hdGlvbnMgPSBmYWxzZTsKKyAgICBpZiAodmFsdWVMaXN0LnByb3BlcnR5KCkgPT0gQW5p
bWF0ZWRQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybSkKKyAgICAgICAgY3JlYXRlZEFuaW1hdGlvbnMg
PSBjcmVhdGVUcmFuc2Zvcm1BbmltYXRpb25zRnJvbUtleWZyYW1lcyh2YWx1ZUxpc3QsIGFuaW0s
IGFuaW1hdGlvbk5hbWUsIHRpbWVPZmZzZXQsIGJveFNpemUpOworICAgIGVsc2UKKyAgICAgICAg
Y3JlYXRlZEFuaW1hdGlvbnMgPSBjcmVhdGVBbmltYXRpb25Gcm9tS2V5ZnJhbWVzKHZhbHVlTGlz
dCwgYW5pbSwgYW5pbWF0aW9uTmFtZSwgdGltZU9mZnNldCk7CisKKyAgICBpZiAoY3JlYXRlZEFu
aW1hdGlvbnMpCisgICAgICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChBbmltYXRpb25DaGFu
Z2VkKTsKKyAgICAgICAgCisgICAgcmV0dXJuIGNyZWF0ZWRBbmltYXRpb25zOworfQorCit2b2lk
IEdyYXBoaWNzTGF5ZXJDQTo6cGF1c2VBbmltYXRpb24oY29uc3QgU3RyaW5nJiBhbmltYXRpb25O
YW1lLCBkb3VibGUgdGltZU9mZnNldCkKK3sKKyAgICBpZiAoIWFuaW1hdGlvbklzUnVubmluZyhh
bmltYXRpb25OYW1lKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQW5pbWF0aW9uc1RvUHJvY2Vz
c01hcDo6aXRlcmF0b3IgaXQgPSBtX2FuaW1hdGlvbnNUb1Byb2Nlc3MuZmluZChhbmltYXRpb25O
YW1lKTsKKyAgICBpZiAoaXQgIT0gbV9hbmltYXRpb25zVG9Qcm9jZXNzLmVuZCgpKSB7CisgICAg
ICAgIEFuaW1hdGlvblByb2Nlc3NpbmdBY3Rpb24mIHByb2Nlc3NpbmdJbmZvID0gaXQtPnNlY29u
ZDsKKyAgICAgICAgLy8gSWYgYW4gYW5pbWF0aW9uIGlzIHNjaGVkdWxlZCB0byBiZSByZW1vdmVk
LCBkb24ndCBjaGFuZ2UgdGhlIHJlbW92ZSB0byBhIHBhdXNlLgorICAgICAgICBpZiAocHJvY2Vz
c2luZ0luZm8uYWN0aW9uICE9IFJlbW92ZSkKKyAgICAgICAgICAgIHByb2Nlc3NpbmdJbmZvLmFj
dGlvbiA9IFBhdXNlOworICAgIH0gZWxzZQorICAgICAgICBtX2FuaW1hdGlvbnNUb1Byb2Nlc3Mu
YWRkKGFuaW1hdGlvbk5hbWUsIEFuaW1hdGlvblByb2Nlc3NpbmdBY3Rpb24oUGF1c2UsIHRpbWVP
ZmZzZXQpKTsKKworICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChBbmltYXRpb25DaGFuZ2Vk
KTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnJlbW92ZUFuaW1hdGlvbihjb25zdCBTdHJp
bmcmIGFuaW1hdGlvbk5hbWUpCit7CisgICAgaWYgKCFhbmltYXRpb25Jc1J1bm5pbmcoYW5pbWF0
aW9uTmFtZSkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fYW5pbWF0aW9uc1RvUHJvY2Vzcy5h
ZGQoYW5pbWF0aW9uTmFtZSwgQW5pbWF0aW9uUHJvY2Vzc2luZ0FjdGlvbihSZW1vdmUpKTsKKyAg
ICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoQW5pbWF0aW9uQ2hhbmdlZCk7Cit9CisKK3ZvaWQg
R3JhcGhpY3NMYXllckNBOjphbmltYXRpb25TdGFydGVkKENGVGltZUludGVydmFsIHN0YXJ0VGlt
ZSkKK3sKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5ub3RpZnlBbmltYXRp
b25TdGFydGVkKHRoaXMsIHN0YXJ0VGltZSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpz
ZXRDb250ZW50c1RvSW1hZ2UoSW1hZ2UqIGltYWdlKQoreworICAgIGlmIChpbWFnZSkgeworICAg
ICAgICBDR0ltYWdlUmVmIG5ld0ltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZy
YW1lKCk7CisgICAgICAgIGlmICghbmV3SW1hZ2UpCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHRoZSBpbWFnZSBjaGFuZ2VkOyB3ZSBoYXZlIHRvIGRv
IHRoaXMgYmVjYXVzZSB0aGUgY2FsbCB0bworICAgICAgICAvLyBDR0ltYWdlQ3JlYXRlQ29weVdp
dGhDb2xvclNwYWNlKCkgYmVsb3cgY2FuIGNyZWF0ZSBhIG5ldyBpbWFnZSBldmVyeSB0aW1lLgor
ICAgICAgICBpZiAobV91bmNvcnJlY3RlZENvbnRlbnRzSW1hZ2UgJiYgbV91bmNvcnJlY3RlZENv
bnRlbnRzSW1hZ2UuZ2V0KCkgPT0gbmV3SW1hZ2UpCisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIAorICAgICAgICBtX3VuY29ycmVjdGVkQ29udGVudHNJbWFnZSA9IG5ld0ltYWdlOworICAg
ICAgICBtX3BlbmRpbmdDb250ZW50c0ltYWdlID0gbmV3SW1hZ2U7CisgICAgICAgIENHQ29sb3JT
cGFjZVJlZiBjb2xvclNwYWNlID0gQ0dJbWFnZUdldENvbG9yU3BhY2UobV9wZW5kaW5nQ29udGVu
dHNJbWFnZS5nZXQoKSk7CisKKyAgICAgICAgc3RhdGljIENHQ29sb3JTcGFjZVJlZiBkZXZpY2VS
R0IgPSBDR0NvbG9yU3BhY2VDcmVhdGVEZXZpY2VSR0IoKTsKKyAgICAgICAgaWYgKGNvbG9yU3Bh
Y2UgJiYgQ0ZFcXVhbChjb2xvclNwYWNlLCBkZXZpY2VSR0IpKSB7CisgICAgICAgICAgICAvLyBD
b3JlR3JhcGhpY3MgcmVuZGVycyBpbWFnZXMgdGFnZ2VkIHdpdGggRGV2aWNlUkdCIHVzaW5nIHRo
ZSBjb2xvciBzcGFjZSBvZiB0aGUgbWFpbiBkaXNwbGF5LiBXaGVuIHdlIGhhbmQgc3VjaAorICAg
ICAgICAgICAgLy8gaW1hZ2VzIHRvIENBIHdlIG5lZWQgdG8gdGFnIHRoZW0gc2ltaWxhcmx5IHNv
IENBIHJlbmRlcmluZyBtYXRjaGVzIENHIHJlbmRlcmluZy4KKyAgICAgICAgICAgIHN0YXRpYyBD
R0NvbG9yU3BhY2VSZWYgZ2VuZXJpY1JHQiA9IENHRGlzcGxheUNvcHlDb2xvclNwYWNlKGtDR0Rp
cmVjdE1haW5EaXNwbGF5KTsKKyAgICAgICAgICAgIG1fcGVuZGluZ0NvbnRlbnRzSW1hZ2UuYWRv
cHRDRihDR0ltYWdlQ3JlYXRlQ29weVdpdGhDb2xvclNwYWNlKG1fcGVuZGluZ0NvbnRlbnRzSW1h
Z2UuZ2V0KCksIGdlbmVyaWNSR0IpKTsKKyAgICAgICAgfQorICAgICAgICBtX2NvbnRlbnRzTGF5
ZXJQdXJwb3NlID0gQ29udGVudHNMYXllckZvckltYWdlOworICAgICAgICBpZiAoIW1fY29udGVu
dHNMYXllcikKKyAgICAgICAgICAgIG5vdGVTdWJsYXllcnNDaGFuZ2VkKCk7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgbV91bmNvcnJlY3RlZENvbnRlbnRzSW1hZ2UgPSAwOworICAgICAgICBtX3Bl
bmRpbmdDb250ZW50c0ltYWdlID0gMDsKKyAgICAgICAgbV9jb250ZW50c0xheWVyUHVycG9zZSA9
IE5vQ29udGVudHNMYXllcjsKKyAgICAgICAgaWYgKG1fY29udGVudHNMYXllcikKKyAgICAgICAg
ICAgIG5vdGVTdWJsYXllcnNDaGFuZ2VkKCk7CisgICAgfQorCisgICAgbm90ZUxheWVyUHJvcGVy
dHlDaGFuZ2VkKENvbnRlbnRzSW1hZ2VDaGFuZ2VkKTsKK30KKwordm9pZCBHcmFwaGljc0xheWVy
Q0E6OnNldENvbnRlbnRzVG9NZWRpYShQbGF0Zm9ybUxheWVyKiBtZWRpYUxheWVyKQoreworICAg
IGlmIChtX2NvbnRlbnRzTGF5ZXIgJiYgbWVkaWFMYXllciA9PSBtX2NvbnRlbnRzTGF5ZXItPnBs
YXRmb3JtTGF5ZXIoKSkKKyAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICAvLyBDcmVhdGUg
dGhlIFBsYXRmb3JtQ0FMYXllciB0byB3cmFwIHRoZSBpbmNvbWluZyBsYXllcgorICAgIG1fY29u
dGVudHNMYXllciA9IG1lZGlhTGF5ZXIgPyBQbGF0Zm9ybUNBTGF5ZXI6OmNyZWF0ZShtZWRpYUxh
eWVyLCB0aGlzKSA6IDA7CisKKyAgICBtX2NvbnRlbnRzTGF5ZXJQdXJwb3NlID0gbWVkaWFMYXll
ciA/IENvbnRlbnRzTGF5ZXJGb3JNZWRpYSA6IE5vQ29udGVudHNMYXllcjsKKworICAgIG5vdGVT
dWJsYXllcnNDaGFuZ2VkKCk7CisgICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKENvbnRlbnRz
TWVkaWFMYXllckNoYW5nZWQpOworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0Q29udGVu
dHNUb0NhbnZhcyhQbGF0Zm9ybUxheWVyKiBjYW52YXNMYXllcikKK3sKKyAgICBpZiAobV9jb250
ZW50c0xheWVyICYmIGNhbnZhc0xheWVyID09IG1fY29udGVudHNMYXllci0+cGxhdGZvcm1MYXll
cigpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgLy8gQ3JlYXRlIHRoZSBQbGF0Zm9ybUNB
TGF5ZXIgdG8gd3JhcCB0aGUgaW5jb21pbmcgbGF5ZXIKKyAgICBtX2NvbnRlbnRzTGF5ZXIgPSBj
YW52YXNMYXllciA/IFBsYXRmb3JtQ0FMYXllcjo6Y3JlYXRlKGNhbnZhc0xheWVyLCB0aGlzKSA6
IDA7CisgICAgCisgICAgbV9jb250ZW50c0xheWVyUHVycG9zZSA9IGNhbnZhc0xheWVyID8gQ29u
dGVudHNMYXllckZvckNhbnZhcyA6IE5vQ29udGVudHNMYXllcjsKKworICAgIG5vdGVTdWJsYXll
cnNDaGFuZ2VkKCk7CisgICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKENvbnRlbnRzQ2FudmFz
TGF5ZXJDaGFuZ2VkKTsKK30KKyAgICAKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpkaWREaXNwbGF5
KFBsYXRmb3JtTGF5ZXIqIGxheWVyKQoreworICAgIFBsYXRmb3JtQ0FMYXllciogY3VycmVudExh
eWVyID0gUGxhdGZvcm1DQUxheWVyOjpwbGF0Zm9ybUNBTGF5ZXIobGF5ZXIpOworICAgIFBsYXRm
b3JtQ0FMYXllciogc291cmNlTGF5ZXI7CisgICAgTGF5ZXJNYXAqIGxheWVyQ2xvbmVNYXA7CisK
KyAgICBpZiAoY3VycmVudExheWVyID09IG1fbGF5ZXIpIHsKKyAgICAgICAgc291cmNlTGF5ZXIg
PSBtX2xheWVyLmdldCgpOworICAgICAgICBsYXllckNsb25lTWFwID0gbV9sYXllckNsb25lcy5n
ZXQoKTsKKyAgICB9IGVsc2UgaWYgKGN1cnJlbnRMYXllciA9PSBtX2NvbnRlbnRzTGF5ZXIpIHsK
KyAgICAgICAgc291cmNlTGF5ZXIgPSBtX2NvbnRlbnRzTGF5ZXIuZ2V0KCk7CisgICAgICAgIGxh
eWVyQ2xvbmVNYXAgPSBtX2NvbnRlbnRzTGF5ZXJDbG9uZXMuZ2V0KCk7CisgICAgfSBlbHNlCisg
ICAgICAgIHJldHVybjsKKworICAgIGlmIChsYXllckNsb25lTWFwKSB7CisgICAgICAgIExheWVy
TWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBsYXllckNsb25lTWFwLT5lbmQoKTsKKyAgICAgICAg
Zm9yIChMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBsYXllckNsb25lTWFwLT5iZWdpbigp
OyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgICAgIFBsYXRmb3JtQ0FMYXllciogY3VyckNs
b25lID0gaXQtPnNlY29uZC5nZXQoKTsKKyAgICAgICAgICAgIGlmICghY3VyckNsb25lKQorICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBpZiAoY3VyckNsb25lLT5jb250
ZW50cygpICE9IHNvdXJjZUxheWVyLT5jb250ZW50cygpKQorICAgICAgICAgICAgICAgIGN1cnJD
bG9uZS0+c2V0Q29udGVudHMoc291cmNlTGF5ZXItPmNvbnRlbnRzKCkpOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIGN1cnJDbG9uZS0+c2V0Q29udGVudHNDaGFuZ2VkKCk7Cisg
ICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpzeW5jQ29tcG9zaXRp
bmdTdGF0ZSgpCit7CisgICAgcmVjdXJzaXZlQ29tbWl0Q2hhbmdlcygpOworfQorCit2b2lkIEdy
YXBoaWNzTGF5ZXJDQTo6c3luY0NvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KCkKK3sK
KyAgICBjb21taXRMYXllckNoYW5nZXNCZWZvcmVTdWJsYXllcnMoKTsKKyAgICBjb21taXRMYXll
ckNoYW5nZXNBZnRlclN1YmxheWVycygpOworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6cmVj
dXJzaXZlQ29tbWl0Q2hhbmdlcygpCit7CisgICAgY29tbWl0TGF5ZXJDaGFuZ2VzQmVmb3JlU3Vi
bGF5ZXJzKCk7CisKKyAgICBpZiAobV9tYXNrTGF5ZXIpCisgICAgICAgIHN0YXRpY19jYXN0PEdy
YXBoaWNzTGF5ZXJDQSo+KG1fbWFza0xheWVyKS0+Y29tbWl0TGF5ZXJDaGFuZ2VzQmVmb3JlU3Vi
bGF5ZXJzKCk7CisKKyAgICBjb25zdCBWZWN0b3I8R3JhcGhpY3NMYXllcio+JiBjaGlsZExheWVy
cyA9IGNoaWxkcmVuKCk7CisgICAgc2l6ZV90IG51bUNoaWxkcmVuID0gY2hpbGRMYXllcnMuc2l6
ZSgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtQ2hpbGRyZW47ICsraSkgeworICAg
ICAgICBHcmFwaGljc0xheWVyQ0EqIGN1ckNoaWxkID0gc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXll
ckNBKj4oY2hpbGRMYXllcnNbaV0pOworICAgICAgICBjdXJDaGlsZC0+cmVjdXJzaXZlQ29tbWl0
Q2hhbmdlcygpOworICAgIH0KKworICAgIGlmIChtX3JlcGxpY2FMYXllcikKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8R3JhcGhpY3NMYXllckNBKj4obV9yZXBsaWNhTGF5ZXIpLT5yZWN1cnNpdmVDb21t
aXRDaGFuZ2VzKCk7CisKKyAgICBpZiAobV9tYXNrTGF5ZXIpCisgICAgICAgIHN0YXRpY19jYXN0
PEdyYXBoaWNzTGF5ZXJDQSo+KG1fbWFza0xheWVyKS0+Y29tbWl0TGF5ZXJDaGFuZ2VzQWZ0ZXJT
dWJsYXllcnMoKTsKKworICAgIGNvbW1pdExheWVyQ2hhbmdlc0FmdGVyU3VibGF5ZXJzKCk7Cit9
CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpjb21taXRMYXllckNoYW5nZXNCZWZvcmVTdWJsYXll
cnMoKQoreworICAgIGlmICghbV91bmNvbW1pdHRlZENoYW5nZXMpCisgICAgICAgIHJldHVybjsK
KworICAgIC8vIE5lZWQgdG8gaGFuZGxlIFByZXNlcnZlczNEQ2hhbmdlZCBmaXJzdCwgYmVjYXVz
ZSBpdCBhZmZlY3RzIHdoaWNoIGxheWVycyBzdWJzZXF1ZW50IHByb3BlcnRpZXMgYXJlIGFwcGxp
ZWQgdG8KKyAgICBpZiAobV91bmNvbW1pdHRlZENoYW5nZXMgJiAoUHJlc2VydmVzM0RDaGFuZ2Vk
IHwgUmVwbGljYXRlZExheWVyQ2hhbmdlZCkpCisgICAgICAgIHVwZGF0ZVN0cnVjdHVyYWxMYXll
cigpOworCisgICAgaWYgKG1fdW5jb21taXR0ZWRDaGFuZ2VzICYgTmFtZUNoYW5nZWQpCisgICAg
ICAgIHVwZGF0ZUxheWVyTmFtZXMoKTsKKworICAgIGlmIChtX3VuY29tbWl0dGVkQ2hhbmdlcyAm
IENvbnRlbnRzSW1hZ2VDaGFuZ2VkKSAvLyBOZWVkcyB0byBoYXBwZW4gYmVmb3JlIENoaWxkcmVu
Q2hhbmdlZAorICAgICAgICB1cGRhdGVDb250ZW50c0ltYWdlKCk7CisgICAgICAgIAorICAgIGlm
IChtX3VuY29tbWl0dGVkQ2hhbmdlcyAmIENvbnRlbnRzTWVkaWFMYXllckNoYW5nZWQpIC8vIE5l
ZWRzIHRvIGhhcHBlbiBiZWZvcmUgQ2hpbGRyZW5DaGFuZ2VkCisgICAgICAgIHVwZGF0ZUNvbnRl
bnRzTWVkaWFMYXllcigpOworICAgIAorICAgIGlmIChtX3VuY29tbWl0dGVkQ2hhbmdlcyAmIENv
bnRlbnRzQ2FudmFzTGF5ZXJDaGFuZ2VkKSAvLyBOZWVkcyB0byBoYXBwZW4gYmVmb3JlIENoaWxk
cmVuQ2hhbmdlZAorICAgICAgICB1cGRhdGVDb250ZW50c0NhbnZhc0xheWVyKCk7CisgICAgCisg
ICAgaWYgKG1fdW5jb21taXR0ZWRDaGFuZ2VzICYgQmFja2dyb3VuZENvbG9yQ2hhbmdlZCkgLy8g
TmVlZHMgdG8gaGFwcGVuIGJlZm9yZSBDaGlsZHJlbkNoYW5nZWQsIGFuZCBhZnRlciB1cGRhdGlu
ZyBpbWFnZSBvciB2aWRlbworICAgICAgICB1cGRhdGVMYXllckJhY2tncm91bmRDb2xvcigpOwor
CisgICAgaWYgKG1fdW5jb21taXR0ZWRDaGFuZ2VzICYgQ2hpbGRyZW5DaGFuZ2VkKQorICAgICAg
ICB1cGRhdGVTdWJsYXllckxpc3QoKTsKKworICAgIGlmIChtX3VuY29tbWl0dGVkQ2hhbmdlcyAm
IFBvc2l0aW9uQ2hhbmdlZCkKKyAgICAgICAgdXBkYXRlTGF5ZXJQb3NpdGlvbigpOworICAgIAor
ICAgIGlmIChtX3VuY29tbWl0dGVkQ2hhbmdlcyAmIEFuY2hvclBvaW50Q2hhbmdlZCkKKyAgICAg
ICAgdXBkYXRlQW5jaG9yUG9pbnQoKTsKKyAgICAKKyAgICBpZiAobV91bmNvbW1pdHRlZENoYW5n
ZXMgJiBTaXplQ2hhbmdlZCkKKyAgICAgICAgdXBkYXRlTGF5ZXJTaXplKCk7CisKKyAgICBpZiAo
bV91bmNvbW1pdHRlZENoYW5nZXMgJiBUcmFuc2Zvcm1DaGFuZ2VkKQorICAgICAgICB1cGRhdGVU
cmFuc2Zvcm0oKTsKKworICAgIGlmIChtX3VuY29tbWl0dGVkQ2hhbmdlcyAmIENoaWxkcmVuVHJh
bnNmb3JtQ2hhbmdlZCkKKyAgICAgICAgdXBkYXRlQ2hpbGRyZW5UcmFuc2Zvcm0oKTsKKyAgICAK
KyAgICBpZiAobV91bmNvbW1pdHRlZENoYW5nZXMgJiBNYXNrc1RvQm91bmRzQ2hhbmdlZCkKKyAg
ICAgICAgdXBkYXRlTWFza3NUb0JvdW5kcygpOworICAgIAorICAgIGlmIChtX3VuY29tbWl0dGVk
Q2hhbmdlcyAmIERyYXdzQ29udGVudENoYW5nZWQpCisgICAgICAgIHVwZGF0ZUxheWVyRHJhd3ND
b250ZW50KCk7CisKKyAgICBpZiAobV91bmNvbW1pdHRlZENoYW5nZXMgJiBDb250ZW50c09wYXF1
ZUNoYW5nZWQpCisgICAgICAgIHVwZGF0ZUNvbnRlbnRzT3BhcXVlKCk7CisKKyAgICBpZiAobV91
bmNvbW1pdHRlZENoYW5nZXMgJiBCYWNrZmFjZVZpc2liaWxpdHlDaGFuZ2VkKQorICAgICAgICB1
cGRhdGVCYWNrZmFjZVZpc2liaWxpdHkoKTsKKworICAgIGlmIChtX3VuY29tbWl0dGVkQ2hhbmdl
cyAmIE9wYWNpdHlDaGFuZ2VkKQorICAgICAgICB1cGRhdGVPcGFjaXR5T25MYXllcigpOworICAg
IAorICAgIGlmIChtX3VuY29tbWl0dGVkQ2hhbmdlcyAmIEFuaW1hdGlvbkNoYW5nZWQpCisgICAg
ICAgIHVwZGF0ZUxheWVyQW5pbWF0aW9ucygpOworICAgIAorICAgIGlmIChtX3VuY29tbWl0dGVk
Q2hhbmdlcyAmIERpcnR5UmVjdHNDaGFuZ2VkKQorICAgICAgICByZXBhaW50TGF5ZXJEaXJ0eVJl
Y3RzKCk7CisgICAgCisgICAgaWYgKG1fdW5jb21taXR0ZWRDaGFuZ2VzICYgQ29udGVudHNSZWN0
Q2hhbmdlZCkKKyAgICAgICAgdXBkYXRlQ29udGVudHNSZWN0KCk7CisKKyAgICBpZiAobV91bmNv
bW1pdHRlZENoYW5nZXMgJiBNYXNrTGF5ZXJDaGFuZ2VkKQorICAgICAgICB1cGRhdGVNYXNrTGF5
ZXIoKTsKKworICAgIGlmIChtX3VuY29tbWl0dGVkQ2hhbmdlcyAmIENvbnRlbnRzTmVlZHNEaXNw
bGF5KQorICAgICAgICB1cGRhdGVDb250ZW50c05lZWRzRGlzcGxheSgpOworfQorCit2b2lkIEdy
YXBoaWNzTGF5ZXJDQTo6Y29tbWl0TGF5ZXJDaGFuZ2VzQWZ0ZXJTdWJsYXllcnMoKQoreworICAg
IGlmICghbV91bmNvbW1pdHRlZENoYW5nZXMpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICht
X3VuY29tbWl0dGVkQ2hhbmdlcyAmIFJlcGxpY2F0ZWRMYXllckNoYW5nZWQpCisgICAgICAgIHVw
ZGF0ZVJlcGxpY2F0ZWRMYXllcnMoKTsKKworICAgIG1fdW5jb21taXR0ZWRDaGFuZ2VzID0gTm9D
aGFuZ2U7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjp1cGRhdGVMYXllck5hbWVzKCkKK3sK
KyAgICBzd2l0Y2ggKHN0cnVjdHVyYWxMYXllclB1cnBvc2UoKSkgeworICAgIGNhc2UgU3RydWN0
dXJhbExheWVyRm9yUHJlc2VydmVzM0Q6CisgICAgICAgIG1fc3RydWN0dXJhbExheWVyLT5zZXRO
YW1lKCJUcmFuc2Zvcm0gbGF5ZXIgIiArIG5hbWUoKSk7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgU3RydWN0dXJhbExheWVyRm9yUmVwbGljYUZsYXR0ZW5pbmc6CisgICAgICAgIG1fc3RydWN0
dXJhbExheWVyLT5zZXROYW1lKCJSZXBsaWNhIGZsYXR0ZW5pbmcgbGF5ZXIgIiArIG5hbWUoKSk7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTm9TdHJ1Y3R1cmFsTGF5ZXI6CisgICAgICAgIGJy
ZWFrOworICAgIH0KKyAgICBtX2xheWVyLT5zZXROYW1lKG5hbWUoKSk7Cit9CisKK3ZvaWQgR3Jh
cGhpY3NMYXllckNBOjp1cGRhdGVTdWJsYXllckxpc3QoKQoreworICAgIFBsYXRmb3JtQ0FMYXll
ckxpc3QgbmV3U3VibGF5ZXJzOworICAgIGNvbnN0IFZlY3RvcjxHcmFwaGljc0xheWVyKj4mIGNo
aWxkTGF5ZXJzID0gY2hpbGRyZW4oKTsKKworICAgIGlmIChtX3N0cnVjdHVyYWxMYXllciB8fCBt
X2NvbnRlbnRzTGF5ZXIgfHwgY2hpbGRMYXllcnMuc2l6ZSgpID4gMCkgeworICAgICAgICBpZiAo
bV9zdHJ1Y3R1cmFsTGF5ZXIpIHsKKyAgICAgICAgICAgIC8vIEFkZCB0aGUgcmVwbGljYSBsYXll
ciBmaXJzdC4KKyAgICAgICAgICAgIGlmIChtX3JlcGxpY2FMYXllcikKKyAgICAgICAgICAgICAg
ICBuZXdTdWJsYXllcnMuYXBwZW5kKHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXJDQSo+KG1fcmVw
bGljYUxheWVyKS0+cHJpbWFyeUxheWVyKCkpOworICAgICAgICAgICAgLy8gQWRkIHRoZSBwcmlt
YXJ5IGxheWVyLiBFdmVuIGlmIHdlIGhhdmUgbmVnYXRpdmUgei1vcmRlciBjaGlsZHJlbiwgdGhl
IHByaW1hcnkgbGF5ZXIgYWx3YXlzIGNvbWVzIGJlaGluZC4KKyAgICAgICAgICAgIG5ld1N1Ymxh
eWVycy5hcHBlbmQobV9sYXllcik7CisgICAgICAgIH0gZWxzZSBpZiAobV9jb250ZW50c0xheWVy
KSB7CisgICAgICAgICAgICAvLyBGSVhNRTogYWRkIHRoZSBjb250ZW50cyBsYXllciBpbiB0aGUg
Y29ycmVjdCBvcmRlciB3aXRoIG5lZ2F0aXZlIHotb3JkZXIgY2hpbGRyZW4uCisgICAgICAgICAg
ICAvLyBUaGlzIGRvZXMgbm90IGNhdXNlIHZpc2libGUgcmVuZGVyaW5nIGlzc3VlcyBiZWNhdXNl
IGN1cnJlbnRseSBjb250ZW50cyBsYXllcnMgYXJlIG9ubHkgdXNlZAorICAgICAgICAgICAgLy8g
Zm9yIHJlcGxhY2VkIGVsZW1lbnRzIHRoYXQgZG9uJ3QgaGF2ZSBjaGlsZHJlbi4KKyAgICAgICAg
ICAgIG5ld1N1YmxheWVycy5hcHBlbmQobV9jb250ZW50c0xheWVyKTsKKyAgICAgICAgfQorICAg
ICAgICAKKyAgICAgICAgc2l6ZV90IG51bUNoaWxkcmVuID0gY2hpbGRMYXllcnMuc2l6ZSgpOwor
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bUNoaWxkcmVuOyArK2kpIHsKKyAgICAg
ICAgICAgIEdyYXBoaWNzTGF5ZXJDQSogY3VyQ2hpbGQgPSBzdGF0aWNfY2FzdDxHcmFwaGljc0xh
eWVyQ0EqPihjaGlsZExheWVyc1tpXSk7CisgICAgICAgICAgICBQbGF0Zm9ybUNBTGF5ZXIqIGNo
aWxkTGF5ZXIgPSBjdXJDaGlsZC0+bGF5ZXJGb3JTdXBlcmxheWVyKCk7CisgICAgICAgICAgICBu
ZXdTdWJsYXllcnMuYXBwZW5kKGNoaWxkTGF5ZXIpOworICAgICAgICB9CisKKyAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBuZXdTdWJsYXllcnMuc2l6ZSgpOyArK2kpCisgICAgICAgICAg
ICBuZXdTdWJsYXllcnNbaV0tPnJlbW92ZUZyb21TdXBlcmxheWVyKCk7CisgICAgfQorCisgICAg
aWYgKG1fc3RydWN0dXJhbExheWVyKSB7CisgICAgICAgIG1fc3RydWN0dXJhbExheWVyLT5zZXRT
dWJsYXllcnMobmV3U3VibGF5ZXJzKTsKKworICAgICAgICBpZiAobV9jb250ZW50c0xheWVyKSB7
CisgICAgICAgICAgICAvLyBJZiB3ZSBoYXZlIGEgdHJhbnNmb3JtIGxheWVyLCB0aGVuIHRoZSBj
b250ZW50cyBsYXllciBpcyBwYXJlbnRlZCBpbiB0aGUgCisgICAgICAgICAgICAvLyBwcmltYXJ5
IGxheWVyICh3aGljaCBpcyBpdHNlbGYgYSBjaGlsZCBvZiB0aGUgdHJhbnNmb3JtIGxheWVyKS4K
KyAgICAgICAgICAgIG1fbGF5ZXItPnJlbW92ZUFsbFN1YmxheWVycygpOworICAgICAgICAgICAg
bV9sYXllci0+YXBwZW5kU3VibGF5ZXIobV9jb250ZW50c0xheWVyLmdldCgpKTsKKyAgICAgICAg
fQorICAgIH0gZWxzZQorICAgICAgICBtX2xheWVyLT5zZXRTdWJsYXllcnMobmV3U3VibGF5ZXJz
KTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUxheWVyUG9zaXRpb24oKQorewor
ICAgIEZsb2F0U2l6ZSB1c2VkU2l6ZSA9IG1fdXNpbmdUaWxlZExheWVyID8gY29uc3RyYWluZWRT
aXplKCkgOiBtX3NpemU7CisKKyAgICAvLyBQb3NpdGlvbiBpcyBvZmZzZXQgb24gdGhlIGxheWVy
IGJ5IHRoZSBsYXllciBhbmNob3IgcG9pbnQuCisgICAgRmxvYXRQb2ludCBwb3NQb2ludChtX3Bv
c2l0aW9uLngoKSArIG1fYW5jaG9yUG9pbnQueCgpICogdXNlZFNpemUud2lkdGgoKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgbV9wb3NpdGlvbi55KCkgKyBtX2FuY2hvclBvaW50LnkoKSAq
IHVzZWRTaXplLmhlaWdodCgpKTsKKyAgICAKKyAgICBwcmltYXJ5TGF5ZXIoKS0+c2V0UG9zaXRp
b24ocG9zUG9pbnQpOworCisgICAgaWYgKExheWVyTWFwKiBsYXllckNsb25lTWFwID0gcHJpbWFy
eUxheWVyQ2xvbmVzKCkpIHsKKyAgICAgICAgTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9
IGxheWVyQ2xvbmVNYXAtPmVuZCgpOworICAgICAgICBmb3IgKExheWVyTWFwOjpjb25zdF9pdGVy
YXRvciBpdCA9IGxheWVyQ2xvbmVNYXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAg
ICAgICAgICAgRmxvYXRQb2ludCBjbG9uZVBvc2l0aW9uID0gcG9zUG9pbnQ7CisgICAgICAgICAg
ICBpZiAobV9yZXBsaWNhTGF5ZXIgJiYgaXNSZXBsaWNhdGVkUm9vdENsb25lKGl0LT5maXJzdCkp
IHsKKyAgICAgICAgICAgICAgICAvLyBNYWludGFpbiB0aGUgc3BlY2lhbC1jYXNlIHBvc2l0aW9u
IGZvciB0aGUgcm9vdCBvZiBhIGNsb25lIHN1YnRyZWUsCisgICAgICAgICAgICAgICAgLy8gd2hp
Y2ggd2Ugc2V0IHVwIGluIHJlcGxpY2F0ZWRMYXllclJvb3QoKS4KKyAgICAgICAgICAgICAgICBj
bG9uZVBvc2l0aW9uID0gcG9zaXRpb25Gb3JDbG9uZVJvb3RMYXllcigpOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgaXQtPnNlY29uZC0+c2V0UG9zaXRpb24oY2xvbmVQb3NpdGlvbik7Cisg
ICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjp1cGRhdGVMYXllclNp
emUoKQoreworICAgIEZsb2F0UmVjdCByZWN0KDAsIDAsIG1fc2l6ZS53aWR0aCgpLCBtX3NpemUu
aGVpZ2h0KCkpOworICAgIGlmIChtX3N0cnVjdHVyYWxMYXllcikgeworICAgICAgICBtX3N0cnVj
dHVyYWxMYXllci0+c2V0Qm91bmRzKHJlY3QpOworICAgICAgICAKKyAgICAgICAgaWYgKExheWVy
TWFwKiBsYXllckNsb25lTWFwID0gbV9zdHJ1Y3R1cmFsTGF5ZXJDbG9uZXMuZ2V0KCkpIHsKKyAg
ICAgICAgICAgIExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBsYXllckNsb25lTWFwLT5l
bmQoKTsKKyAgICAgICAgICAgIGZvciAoTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbGF5
ZXJDbG9uZU1hcC0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICAgICAgICAgIGl0
LT5zZWNvbmQtPnNldEJvdW5kcyhyZWN0KTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFRoZSBh
bmNob3Igb2YgdGhlIGNvbnRlbnRzIGxheWVyIGlzIGFsd2F5cyBhdCAwLjUsIDAuNSwgc28gdGhl
IHBvc2l0aW9uIGlzIGNlbnRlci1yZWxhdGl2ZS4KKyAgICAgICAgQ0dQb2ludCBjZW50ZXJQb2lu
dCA9IENHUG9pbnRNYWtlKG1fc2l6ZS53aWR0aCgpIC8gMi4wZiwgbV9zaXplLmhlaWdodCgpIC8g
Mi4wZik7CisgICAgICAgIG1fbGF5ZXItPnNldFBvc2l0aW9uKGNlbnRlclBvaW50KTsKKworICAg
ICAgICBpZiAoTGF5ZXJNYXAqIGxheWVyQ2xvbmVNYXAgPSBtX2xheWVyQ2xvbmVzLmdldCgpKSB7
CisgICAgICAgICAgICBMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbGF5ZXJDbG9uZU1h
cC0+ZW5kKCk7CisgICAgICAgICAgICBmb3IgKExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9
IGxheWVyQ2xvbmVNYXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgICAgICAg
ICBpdC0+c2Vjb25kLT5zZXRQb3NpdGlvbihjZW50ZXJQb2ludCk7CisgICAgICAgIH0KKyAgICB9
CisgICAgCisgICAgYm9vbCBuZWVkVGlsZWRMYXllciA9IHJlcXVpcmVzVGlsZWRMYXllcihtX3Np
emUpOworICAgIGlmIChuZWVkVGlsZWRMYXllciAhPSBtX3VzaW5nVGlsZWRMYXllcikKKyAgICAg
ICAgc3dhcEZyb21PclRvVGlsZWRMYXllcihuZWVkVGlsZWRMYXllcik7CisgICAgCisgICAgaWYg
KG1fdXNpbmdUaWxlZExheWVyKSB7CisgICAgICAgIEZsb2F0U2l6ZSBzaXplVG9Vc2UgPSBjb25z
dHJhaW5lZFNpemUoKTsKKyAgICAgICAgcmVjdCA9IENHUmVjdE1ha2UoMCwgMCwgc2l6ZVRvVXNl
LndpZHRoKCksIHNpemVUb1VzZS5oZWlnaHQoKSk7CisgICAgfQorICAgIAorICAgIG1fbGF5ZXIt
PnNldEJvdW5kcyhyZWN0KTsKKyAgICBpZiAoTGF5ZXJNYXAqIGxheWVyQ2xvbmVNYXAgPSBtX2xh
eWVyQ2xvbmVzLmdldCgpKSB7CisgICAgICAgIExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQg
PSBsYXllckNsb25lTWFwLT5lbmQoKTsKKyAgICAgICAgZm9yIChMYXllck1hcDo6Y29uc3RfaXRl
cmF0b3IgaXQgPSBsYXllckNsb25lTWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAg
ICAgICAgICBpdC0+c2Vjb25kLT5zZXRCb3VuZHMocmVjdCk7CisgICAgfQorICAgIAorICAgIC8v
IENvbnRlbnRzIHRyYW5zZm9ybSBtYXkgZGVwZW5kIG9uIGhlaWdodC4KKyAgICB1cGRhdGVDb250
ZW50c1RyYW5zZm9ybSgpOworCisgICAgLy8gTm90ZSB0aGF0IHdlIGRvbid0IHJlc2l6ZSBtX2Nv
bnRlbnRzTGF5ZXIuIEl0J3MgdXAgdGhlIGNhbGxlciB0byBkbyB0aGF0LgorCisgICAgLy8gaWYg
d2UndmUgY2hhbmdlZCB0aGUgYm91bmRzLCB3ZSBuZWVkIHRvIHJlY2FsY3VsYXRlIHRoZSBwb3Np
dGlvbgorICAgIC8vIG9mIHRoZSBsYXllciwgdGFraW5nIGFuY2hvciBwb2ludCBpbnRvIGFjY291
bnQuCisgICAgdXBkYXRlTGF5ZXJQb3NpdGlvbigpOworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJD
QTo6dXBkYXRlQW5jaG9yUG9pbnQoKQoreworICAgIHByaW1hcnlMYXllcigpLT5zZXRBbmNob3JQ
b2ludChtX2FuY2hvclBvaW50KTsKKworICAgIGlmIChMYXllck1hcCogbGF5ZXJDbG9uZU1hcCA9
IHByaW1hcnlMYXllckNsb25lcygpKSB7CisgICAgICAgIExheWVyTWFwOjpjb25zdF9pdGVyYXRv
ciBlbmQgPSBsYXllckNsb25lTWFwLT5lbmQoKTsKKyAgICAgICAgZm9yIChMYXllck1hcDo6Y29u
c3RfaXRlcmF0b3IgaXQgPSBsYXllckNsb25lTWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQp
IHsgICAKKyAgICAgICAgICAgIFBsYXRmb3JtQ0FMYXllciogY3VyckxheWVyID0gaXQtPnNlY29u
ZC5nZXQoKTsKKyAgICAgICAgICAgIGN1cnJMYXllci0+c2V0QW5jaG9yUG9pbnQobV9hbmNob3JQ
b2ludCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB1cGRhdGVMYXllclBvc2l0aW9uKCk7Cit9
CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjp1cGRhdGVUcmFuc2Zvcm0oKQoreworICAgIHByaW1h
cnlMYXllcigpLT5zZXRUcmFuc2Zvcm0obV90cmFuc2Zvcm0pOworCisgICAgaWYgKExheWVyTWFw
KiBsYXllckNsb25lTWFwID0gcHJpbWFyeUxheWVyQ2xvbmVzKCkpIHsKKyAgICAgICAgTGF5ZXJN
YXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGxheWVyQ2xvbmVNYXAtPmVuZCgpOworICAgICAgICBm
b3IgKExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGxheWVyQ2xvbmVNYXAtPmJlZ2luKCk7
IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICAgICAgUGxhdGZvcm1DQUxheWVyKiBjdXJyTGF5
ZXIgPSBpdC0+c2Vjb25kLmdldCgpOworICAgICAgICAgICAgaWYgKG1fcmVwbGljYUxheWVyICYm
IGlzUmVwbGljYXRlZFJvb3RDbG9uZShpdC0+Zmlyc3QpKSB7CisgICAgICAgICAgICAgICAgLy8g
TWFpbnRhaW4gdGhlIHNwZWNpYWwtY2FzZSB0cmFuc2Zvcm0gZm9yIHRoZSByb290IG9mIGEgY2xv
bmUgc3VidHJlZSwKKyAgICAgICAgICAgICAgICAvLyB3aGljaCB3ZSBzZXQgdXAgaW4gcmVwbGlj
YXRlZExheWVyUm9vdCgpLgorICAgICAgICAgICAgICAgIGN1cnJMYXllci0+c2V0VHJhbnNmb3Jt
KFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAg
ICAgICAgY3VyckxheWVyLT5zZXRUcmFuc2Zvcm0obV90cmFuc2Zvcm0pOworICAgICAgICB9Cisg
ICAgfQorfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlQ2hpbGRyZW5UcmFuc2Zvcm0o
KQoreworICAgIHByaW1hcnlMYXllcigpLT5zZXRTdWJsYXllclRyYW5zZm9ybShtX2NoaWxkcmVu
VHJhbnNmb3JtKTsKKworICAgIGlmIChMYXllck1hcCogbGF5ZXJDbG9uZU1hcCA9IHByaW1hcnlM
YXllckNsb25lcygpKSB7CisgICAgICAgIExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBs
YXllckNsb25lTWFwLT5lbmQoKTsKKyAgICAgICAgZm9yIChMYXllck1hcDo6Y29uc3RfaXRlcmF0
b3IgaXQgPSBsYXllckNsb25lTWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAg
ICAgICBpdC0+c2Vjb25kLT5zZXRTdWJsYXllclRyYW5zZm9ybShtX2NoaWxkcmVuVHJhbnNmb3Jt
KTsKKyAgICB9Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjp1cGRhdGVNYXNrc1RvQm91bmRz
KCkKK3sKKyAgICBtX2xheWVyLT5zZXRNYXNrc1RvQm91bmRzKG1fbWFza3NUb0JvdW5kcyk7CisK
KyAgICBpZiAoTGF5ZXJNYXAqIGxheWVyQ2xvbmVNYXAgPSBtX2xheWVyQ2xvbmVzLmdldCgpKSB7
CisgICAgICAgIExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBsYXllckNsb25lTWFwLT5l
bmQoKTsKKyAgICAgICAgZm9yIChMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBsYXllckNs
b25lTWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgICAgICBpdC0+c2Vjb25k
LT5zZXRNYXNrc1RvQm91bmRzKG1fbWFza3NUb0JvdW5kcyk7CisgICAgfQorCisgICAgdXBkYXRl
RGVidWdJbmRpY2F0b3JzKCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjp1cGRhdGVDb250
ZW50c09wYXF1ZSgpCit7CisgICAgbV9sYXllci5nZXQoKS0+c2V0T3BhcXVlKG1fY29udGVudHNP
cGFxdWUpOworCisgICAgaWYgKExheWVyTWFwKiBsYXllckNsb25lTWFwID0gbV9sYXllckNsb25l
cy5nZXQoKSkgeworICAgICAgICBMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbGF5ZXJD
bG9uZU1hcC0+ZW5kKCk7CisgICAgICAgIGZvciAoTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0
ID0gbGF5ZXJDbG9uZU1hcC0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICAgICAg
aXQtPnNlY29uZC0+c2V0T3BhcXVlKG1fY29udGVudHNPcGFxdWUpOworICAgIH0KK30KKwordm9p
ZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUJhY2tmYWNlVmlzaWJpbGl0eSgpCit7CisgICAgaWYg
KG1fc3RydWN0dXJhbExheWVyICYmIHN0cnVjdHVyYWxMYXllclB1cnBvc2UoKSA9PSBTdHJ1Y3R1
cmFsTGF5ZXJGb3JSZXBsaWNhRmxhdHRlbmluZykgeworICAgICAgICBtX3N0cnVjdHVyYWxMYXll
ci0+c2V0RG91YmxlU2lkZWQobV9iYWNrZmFjZVZpc2liaWxpdHkpOworCisgICAgICAgIGlmIChM
YXllck1hcCogbGF5ZXJDbG9uZU1hcCA9IG1fc3RydWN0dXJhbExheWVyQ2xvbmVzLmdldCgpKSB7
CisgICAgICAgICAgICBMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbGF5ZXJDbG9uZU1h
cC0+ZW5kKCk7CisgICAgICAgICAgICBmb3IgKExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9
IGxheWVyQ2xvbmVNYXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgICAgICAg
ICBpdC0+c2Vjb25kLT5zZXREb3VibGVTaWRlZChtX2JhY2tmYWNlVmlzaWJpbGl0eSk7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBtX2xheWVyLT5zZXREb3VibGVTaWRlZChtX2JhY2tmYWNlVmlz
aWJpbGl0eSk7CisKKyAgICBpZiAoTGF5ZXJNYXAqIGxheWVyQ2xvbmVNYXAgPSBtX2xheWVyQ2xv
bmVzLmdldCgpKSB7CisgICAgICAgIExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBsYXll
ckNsb25lTWFwLT5lbmQoKTsKKyAgICAgICAgZm9yIChMYXllck1hcDo6Y29uc3RfaXRlcmF0b3Ig
aXQgPSBsYXllckNsb25lTWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgICAg
ICBpdC0+c2Vjb25kLT5zZXREb3VibGVTaWRlZChtX2JhY2tmYWNlVmlzaWJpbGl0eSk7CisgICAg
fQorfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlU3RydWN0dXJhbExheWVyKCkKK3sK
KyAgICBlbnN1cmVTdHJ1Y3R1cmFsTGF5ZXIoc3RydWN0dXJhbExheWVyUHVycG9zZSgpKTsKK30K
Kwordm9pZCBHcmFwaGljc0xheWVyQ0E6OmVuc3VyZVN0cnVjdHVyYWxMYXllcihTdHJ1Y3R1cmFs
TGF5ZXJQdXJwb3NlIHB1cnBvc2UpCit7CisgICAgaWYgKHB1cnBvc2UgPT0gTm9TdHJ1Y3R1cmFs
TGF5ZXIpIHsKKyAgICAgICAgaWYgKG1fc3RydWN0dXJhbExheWVyKSB7CisgICAgICAgICAgICAv
LyBSZXBsYWNlIHRoZSB0cmFuc2Zvcm1MYXllciBpbiB0aGUgcGFyZW50IHdpdGggdGhpcyBsYXll
ci4KKyAgICAgICAgICAgIG1fbGF5ZXItPnJlbW92ZUZyb21TdXBlcmxheWVyKCk7CisgICAgICAg
ICAgICBtX3N0cnVjdHVyYWxMYXllci0+c3VwZXJsYXllcigpLT5yZXBsYWNlU3VibGF5ZXIobV9z
dHJ1Y3R1cmFsTGF5ZXIuZ2V0KCksIG1fbGF5ZXIuZ2V0KCkpOworCisgICAgICAgICAgICBtb3Zl
T3JDb3B5QW5pbWF0aW9uc0ZvclByb3BlcnR5KE1vdmUsIEFuaW1hdGVkUHJvcGVydHlXZWJraXRU
cmFuc2Zvcm0sIG1fc3RydWN0dXJhbExheWVyLmdldCgpLCBtX2xheWVyLmdldCgpKTsKKyAgICAg
ICAgICAgIG1vdmVPckNvcHlBbmltYXRpb25zRm9yUHJvcGVydHkoTW92ZSwgQW5pbWF0ZWRQcm9w
ZXJ0eU9wYWNpdHksIG1fc3RydWN0dXJhbExheWVyLmdldCgpLCBtX2xheWVyLmdldCgpKTsKKwor
ICAgICAgICAgICAgLy8gUmVsZWFzZSB0aGUgc3RydWN0dXJhbCBsYXllci4KKyAgICAgICAgICAg
IG1fc3RydWN0dXJhbExheWVyID0gMDsKKworICAgICAgICAgICAgLy8gVXBkYXRlIHRoZSBwcm9w
ZXJ0aWVzIG9mIG1fbGF5ZXIgbm93IHRoYXQgd2Ugbm8gbG9uZ2VyIGhhdmUgYSBzdHJ1Y3R1cmFs
IGxheWVyLgorICAgICAgICAgICAgdXBkYXRlTGF5ZXJQb3NpdGlvbigpOworICAgICAgICAgICAg
dXBkYXRlTGF5ZXJTaXplKCk7CisgICAgICAgICAgICB1cGRhdGVBbmNob3JQb2ludCgpOworICAg
ICAgICAgICAgdXBkYXRlVHJhbnNmb3JtKCk7CisgICAgICAgICAgICB1cGRhdGVDaGlsZHJlblRy
YW5zZm9ybSgpOworCisgICAgICAgICAgICB1cGRhdGVTdWJsYXllckxpc3QoKTsKKyAgICAgICAg
ICAgIHVwZGF0ZU9wYWNpdHlPbkxheWVyKCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICAKKyAgICBib29sIHN0cnVjdHVyYWxMYXllckNoYW5nZWQgPSBmYWxzZTsKKyAg
ICAKKyAgICBpZiAocHVycG9zZSA9PSBTdHJ1Y3R1cmFsTGF5ZXJGb3JQcmVzZXJ2ZXMzRCkgewor
ICAgICAgICBpZiAobV9zdHJ1Y3R1cmFsTGF5ZXIgJiYgbV9zdHJ1Y3R1cmFsTGF5ZXItPmxheWVy
VHlwZSgpICE9IFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlVHJhbnNmb3JtTGF5ZXIpCisgICAg
ICAgICAgICBtX3N0cnVjdHVyYWxMYXllciA9IDA7CisgICAgICAgIAorICAgICAgICBpZiAoIW1f
c3RydWN0dXJhbExheWVyKSB7CisgICAgICAgICAgICBtX3N0cnVjdHVyYWxMYXllciA9IFBsYXRm
b3JtQ0FMYXllcjo6Y3JlYXRlKFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlVHJhbnNmb3JtTGF5
ZXIsIHRoaXMpOworICAgICAgICAgICAgc3RydWN0dXJhbExheWVyQ2hhbmdlZCA9IHRydWU7Cisg
ICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBpZiAobV9zdHJ1Y3R1cmFsTGF5ZXIgJiYg
bV9zdHJ1Y3R1cmFsTGF5ZXItPmxheWVyVHlwZSgpICE9IFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJU
eXBlTGF5ZXIpCisgICAgICAgICAgICBtX3N0cnVjdHVyYWxMYXllciA9IDA7CisKKyAgICAgICAg
aWYgKCFtX3N0cnVjdHVyYWxMYXllcikgeworICAgICAgICAgICAgbV9zdHJ1Y3R1cmFsTGF5ZXIg
PSBQbGF0Zm9ybUNBTGF5ZXI6OmNyZWF0ZShQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUxheWVy
LCB0aGlzKTsKKyAgICAgICAgICAgIHN0cnVjdHVyYWxMYXllckNoYW5nZWQgPSB0cnVlOworICAg
ICAgICB9CisgICAgfQorICAgIAorICAgIGlmICghc3RydWN0dXJhbExheWVyQ2hhbmdlZCkKKyAg
ICAgICAgcmV0dXJuOworICAgIAorICAgIHVwZGF0ZUxheWVyTmFtZXMoKTsKKworICAgIC8vIFVw
ZGF0ZSB0aGUgcHJvcGVydGllcyBvZiB0aGUgc3RydWN0dXJhbCBsYXllci4KKyAgICB1cGRhdGVM
YXllclBvc2l0aW9uKCk7CisgICAgdXBkYXRlTGF5ZXJTaXplKCk7CisgICAgdXBkYXRlQW5jaG9y
UG9pbnQoKTsKKyAgICB1cGRhdGVUcmFuc2Zvcm0oKTsKKyAgICB1cGRhdGVDaGlsZHJlblRyYW5z
Zm9ybSgpOworICAgIHVwZGF0ZUJhY2tmYWNlVmlzaWJpbGl0eSgpOworICAgIAorICAgIC8vIFNl
dCBwcm9wZXJ0aWVzIG9mIG1fbGF5ZXIgdG8gdGhlaXIgZGVmYXVsdCB2YWx1ZXMsIHNpbmNlIHRo
ZXNlIGFyZSBleHByZXNzZWQgb24gb24gdGhlIHN0cnVjdHVyYWwgbGF5ZXIuCisgICAgRmxvYXRQ
b2ludCBwb2ludChtX3NpemUud2lkdGgoKSAvIDIuMGYsIG1fc2l6ZS5oZWlnaHQoKSAvIDIuMGYp
OworICAgIG1fbGF5ZXItPnNldFBvc2l0aW9uKHBvaW50KTsKKyAgICBtX2xheWVyLT5zZXRBbmNo
b3JQb2ludChGbG9hdFBvaW50M0QoMC41ZiwgMC41ZiwgMCkpOworICAgIG1fbGF5ZXItPnNldFRy
YW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKTsKKyAgICBtX2xheWVyLT5zZXRPcGFjaXR5
KDEpOworCisgICAgLy8gTW92ZSB0aGlzIGxheWVyIHRvIGJlIGEgY2hpbGQgb2YgdGhlIHRyYW5z
Zm9ybSBsYXllci4KKyAgICBtX2xheWVyLT5zdXBlcmxheWVyKCktPnJlcGxhY2VTdWJsYXllciht
X2xheWVyLmdldCgpLCBtX3N0cnVjdHVyYWxMYXllci5nZXQoKSk7CisgICAgbV9zdHJ1Y3R1cmFs
TGF5ZXItPmFwcGVuZFN1YmxheWVyKG1fbGF5ZXIuZ2V0KCkpOworCisgICAgbW92ZU9yQ29weUFu
aW1hdGlvbnNGb3JQcm9wZXJ0eShNb3ZlLCBBbmltYXRlZFByb3BlcnR5V2Via2l0VHJhbnNmb3Jt
LCBtX2xheWVyLmdldCgpLCBtX3N0cnVjdHVyYWxMYXllci5nZXQoKSk7CisgICAgbW92ZU9yQ29w
eUFuaW1hdGlvbnNGb3JQcm9wZXJ0eShNb3ZlLCBBbmltYXRlZFByb3BlcnR5T3BhY2l0eSwgbV9s
YXllci5nZXQoKSwgbV9zdHJ1Y3R1cmFsTGF5ZXIuZ2V0KCkpOworICAgIAorICAgIHVwZGF0ZVN1
YmxheWVyTGlzdCgpOworICAgIHVwZGF0ZU9wYWNpdHlPbkxheWVyKCk7Cit9CisKK0dyYXBoaWNz
TGF5ZXJDQTo6U3RydWN0dXJhbExheWVyUHVycG9zZSBHcmFwaGljc0xheWVyQ0E6OnN0cnVjdHVy
YWxMYXllclB1cnBvc2UoKSBjb25zdAoreworICAgIGlmIChwcmVzZXJ2ZXMzRCgpKQorICAgICAg
ICByZXR1cm4gU3RydWN0dXJhbExheWVyRm9yUHJlc2VydmVzM0Q7CisgICAgCisgICAgaWYgKGlz
UmVwbGljYXRlZCgpKQorICAgICAgICByZXR1cm4gU3RydWN0dXJhbExheWVyRm9yUmVwbGljYUZs
YXR0ZW5pbmc7CisgICAgCisgICAgcmV0dXJuIE5vU3RydWN0dXJhbExheWVyOworfQorCit2b2lk
IEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlTGF5ZXJEcmF3c0NvbnRlbnQoKQoreworICAgIGJvb2wg
bmVlZFRpbGVkTGF5ZXIgPSByZXF1aXJlc1RpbGVkTGF5ZXIobV9zaXplKTsKKyAgICBpZiAobmVl
ZFRpbGVkTGF5ZXIgIT0gbV91c2luZ1RpbGVkTGF5ZXIpCisgICAgICAgIHN3YXBGcm9tT3JUb1Rp
bGVkTGF5ZXIobmVlZFRpbGVkTGF5ZXIpOworCisgICAgaWYgKG1fZHJhd3NDb250ZW50KQorICAg
ICAgICBtX2xheWVyLT5zZXROZWVkc0Rpc3BsYXkoKTsKKyAgICBlbHNlCisgICAgICAgIG1fbGF5
ZXItPnNldENvbnRlbnRzKDApOworCisgICAgdXBkYXRlRGVidWdJbmRpY2F0b3JzKCk7Cit9CisK
K3ZvaWQgR3JhcGhpY3NMYXllckNBOjp1cGRhdGVMYXllckJhY2tncm91bmRDb2xvcigpCit7Cisg
ICAgaWYgKCFtX2NvbnRlbnRzTGF5ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFdlIG5l
dmVyIGNyZWF0ZSB0aGUgY29udGVudHMgbGF5ZXIganVzdCBmb3IgYmFja2dyb3VuZCBjb2xvciB5
ZXQuCisgICAgaWYgKG1fYmFja2dyb3VuZENvbG9yU2V0KQorICAgICAgICBtX2NvbnRlbnRzTGF5
ZXItPnNldEJhY2tncm91bmRDb2xvcihtX2JhY2tncm91bmRDb2xvcik7CisgICAgZWxzZQorICAg
ICAgICBtX2NvbnRlbnRzTGF5ZXItPnNldEJhY2tncm91bmRDb2xvcihDb2xvcjo6dHJhbnNwYXJl
bnQpOworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlQ29udGVudHNJbWFnZSgpCit7
CisgICAgaWYgKG1fcGVuZGluZ0NvbnRlbnRzSW1hZ2UpIHsKKyAgICAgICAgaWYgKCFtX2NvbnRl
bnRzTGF5ZXIuZ2V0KCkpIHsKKyAgICAgICAgICAgIG1fY29udGVudHNMYXllciA9IFBsYXRmb3Jt
Q0FMYXllcjo6Y3JlYXRlKFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlTGF5ZXIsIHRoaXMpOwor
I2lmbmRlZiBOREVCVUcKKyAgICAgICAgICAgIG1fY29udGVudHNMYXllci0+c2V0TmFtZSgiSW1h
Z2UgTGF5ZXIiKTsKKyNlbmRpZgorICAgICAgICAgICAgc2V0dXBDb250ZW50c0xheWVyKG1fY29u
dGVudHNMYXllci5nZXQoKSk7CisgICAgICAgICAgICAvLyBtX2NvbnRlbnRzTGF5ZXIgd2lsbCBi
ZSBwYXJlbnRlZCBieSB1cGRhdGVTdWJsYXllckxpc3QKKyAgICAgICAgfQorCisgICAgICAgIC8v
IEZJWE1FOiBtYXliZSBvbmx5IGRvIHRyaWxpbmVhciBpZiB0aGUgaW1hZ2UgaXMgYmVpbmcgc2Nh
bGVkIGRvd24sCisgICAgICAgIC8vIGJ1dCB0aGVuIHdoYXQgaWYgdGhlIGxheWVyIHNpemUgY2hh
bmdlcz8KKyNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJ
TkdfT05fTEVPUEFSRCkKKyAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRNaW5pZmljYXRpb25G
aWx0ZXIoUGxhdGZvcm1DQUxheWVyOjpUcmlsaW5lYXIpOworI2VuZGlmCisgICAgICAgIG1fY29u
dGVudHNMYXllci0+c2V0Q29udGVudHMobV9wZW5kaW5nQ29udGVudHNJbWFnZS5nZXQoKSk7Cisg
ICAgICAgIG1fcGVuZGluZ0NvbnRlbnRzSW1hZ2UgPSAwOworCisgICAgICAgIGlmIChtX2NvbnRl
bnRzTGF5ZXJDbG9uZXMpIHsKKyAgICAgICAgICAgIExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBl
bmQgPSBtX2NvbnRlbnRzTGF5ZXJDbG9uZXMtPmVuZCgpOworICAgICAgICAgICAgZm9yIChMYXll
ck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2NvbnRlbnRzTGF5ZXJDbG9uZXMtPmJlZ2luKCk7
IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgICAgICAgICBpdC0+c2Vjb25kLT5zZXRDb250ZW50
cyhtX2NvbnRlbnRzTGF5ZXItPmNvbnRlbnRzKCkpOworICAgICAgICB9CisgICAgICAgIAorICAg
ICAgICB1cGRhdGVDb250ZW50c1JlY3QoKTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBObyBp
bWFnZS4KKyAgICAgICAgLy8gbV9jb250ZW50c0xheWVyIHdpbGwgYmUgcmVtb3ZlZCB2aWEgdXBk
YXRlU3VibGF5ZXJMaXN0LgorICAgICAgICBtX2NvbnRlbnRzTGF5ZXIgPSAwOworICAgIH0KK30K
Kwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUNvbnRlbnRzTWVkaWFMYXllcigpCit7Cisg
ICAgLy8gVmlkZW8gbGF5ZXIgd2FzIHNldCBhcyBtX2NvbnRlbnRzTGF5ZXIsIGFuZCB3aWxsIGdl
dCBwYXJlbnRlZCBpbiB1cGRhdGVTdWJsYXllckxpc3QoKS4KKyAgICBpZiAobV9jb250ZW50c0xh
eWVyKSB7CisgICAgICAgIHNldHVwQ29udGVudHNMYXllcihtX2NvbnRlbnRzTGF5ZXIuZ2V0KCkp
OworICAgICAgICB1cGRhdGVDb250ZW50c1JlY3QoKTsKKyAgICB9Cit9CisKK3ZvaWQgR3JhcGhp
Y3NMYXllckNBOjp1cGRhdGVDb250ZW50c0NhbnZhc0xheWVyKCkKK3sKKyAgICAvLyBDYW52YXNM
YXllciB3YXMgc2V0IGFzIG1fY29udGVudHNMYXllciwgYW5kIHdpbGwgZ2V0IHBhcmVudGVkIGlu
IHVwZGF0ZVN1YmxheWVyTGlzdCgpLgorICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIpIHsKKyAgICAg
ICAgc2V0dXBDb250ZW50c0xheWVyKG1fY29udGVudHNMYXllci5nZXQoKSk7CisgICAgICAgIG1f
Y29udGVudHNMYXllci0+c2V0TmVlZHNEaXNwbGF5KCk7CisgICAgICAgIHVwZGF0ZUNvbnRlbnRz
UmVjdCgpOworICAgIH0KK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUNvbnRlbnRz
UmVjdCgpCit7CisgICAgaWYgKCFtX2NvbnRlbnRzTGF5ZXIpCisgICAgICAgIHJldHVybjsKKwor
ICAgIEZsb2F0UG9pbnQgcG9pbnQobV9jb250ZW50c1JlY3QueCgpLCBtX2NvbnRlbnRzUmVjdC55
KCkpOworICAgIEZsb2F0UmVjdCByZWN0KDAsIDAsIG1fY29udGVudHNSZWN0LndpZHRoKCksIG1f
Y29udGVudHNSZWN0LmhlaWdodCgpKTsKKworICAgIG1fY29udGVudHNMYXllci0+c2V0UG9zaXRp
b24ocG9pbnQpOworICAgIG1fY29udGVudHNMYXllci0+c2V0Qm91bmRzKHJlY3QpOworCisgICAg
aWYgKG1fY29udGVudHNMYXllckNsb25lcykgeworICAgICAgICBMYXllck1hcDo6Y29uc3RfaXRl
cmF0b3IgZW5kID0gbV9jb250ZW50c0xheWVyQ2xvbmVzLT5lbmQoKTsKKyAgICAgICAgZm9yIChM
YXllck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2NvbnRlbnRzTGF5ZXJDbG9uZXMtPmJlZ2lu
KCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICAgICAgaXQtPnNlY29uZC0+c2V0UG9zaXRp
b24ocG9pbnQpOworICAgICAgICAgICAgaXQtPnNlY29uZC0+c2V0Qm91bmRzKHJlY3QpOworICAg
ICAgICB9CisgICAgfQorfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlTWFza0xheWVy
KCkKK3sKKyAgICBQbGF0Zm9ybUNBTGF5ZXIqIG1hc2tDQUxheWVyID0gbV9tYXNrTGF5ZXIgPyBz
dGF0aWNfY2FzdDxHcmFwaGljc0xheWVyQ0EqPihtX21hc2tMYXllciktPnByaW1hcnlMYXllcigp
IDogMDsKKyAgICBtX2xheWVyLT5zZXRNYXNrKG1hc2tDQUxheWVyKTsKKworICAgIExheWVyTWFw
KiBtYXNrTGF5ZXJDbG9uZU1hcCA9IG1fbWFza0xheWVyID8gc3RhdGljX2Nhc3Q8R3JhcGhpY3NM
YXllckNBKj4obV9tYXNrTGF5ZXIpLT5wcmltYXJ5TGF5ZXJDbG9uZXMoKSA6IDA7CisgICAgCisg
ICAgaWYgKExheWVyTWFwKiBsYXllckNsb25lTWFwID0gbV9sYXllckNsb25lcy5nZXQoKSkgewor
ICAgICAgICBMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbGF5ZXJDbG9uZU1hcC0+ZW5k
KCk7CisgICAgICAgIGZvciAoTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbGF5ZXJDbG9u
ZU1hcC0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7ICAgICAgICAgICAgCisgICAgICAgICAg
ICBQbGF0Zm9ybUNBTGF5ZXIqIG1hc2tDbG9uZSA9IG1hc2tMYXllckNsb25lTWFwID8gbWFza0xh
eWVyQ2xvbmVNYXAtPmdldChpdC0+Zmlyc3QpLmdldCgpIDogMDsKKyAgICAgICAgICAgIGl0LT5z
ZWNvbmQtPnNldE1hc2sobWFza0Nsb25lKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBH
cmFwaGljc0xheWVyQ0E6OnVwZGF0ZVJlcGxpY2F0ZWRMYXllcnMoKQoreworICAgIC8vIENsb25l
IHRoZSBkZXNjZW5kYW50cyBvZiB0aGUgcmVwbGljYXRlZCBsYXllciwgYW5kIHBhcmVudCB1bmRl
ciB1cy4KKyAgICBSZXBsaWNhU3RhdGUgcmVwbGljYVN0YXRlKFJlcGxpY2FTdGF0ZTo6UmVwbGlj
YUJyYW5jaCk7CisKKyAgICBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPnJlcGxpY2FSb290ID0gcmVw
bGljYXRlZExheWVyUm9vdChyZXBsaWNhU3RhdGUpOworICAgIGlmICghcmVwbGljYVJvb3QpCisg
ICAgICAgIHJldHVybjsKKworICAgIGlmIChtX3N0cnVjdHVyYWxMYXllcikKKyAgICAgICAgbV9z
dHJ1Y3R1cmFsTGF5ZXItPmluc2VydFN1YmxheWVyKHJlcGxpY2FSb290LmdldCgpLCAwKTsKKyAg
ICBlbHNlCisgICAgICAgIG1fbGF5ZXItPmluc2VydFN1YmxheWVyKHJlcGxpY2FSb290LmdldCgp
LCAwKTsKK30KKworLy8gRm9yIG5vdywgdGhpcyBhc3N1bWVzIHRoYXQgbGF5ZXJzIG9ubHkgZXZl
ciBoYXZlIG9uZSByZXBsaWNhLCBzbyByZXBsaWNhSW5kaWNlcyBjb250YWlucyBvbmx5IDAgYW5k
IDEuCitHcmFwaGljc0xheWVyQ0E6OkNsb25lSUQgR3JhcGhpY3NMYXllckNBOjpSZXBsaWNhU3Rh
dGU6OmNsb25lSUQoKSBjb25zdAoreworICAgIHNpemVfdCBkZXB0aCA9IG1fcmVwbGljYUJyYW5j
aGVzLnNpemUoKTsKKworICAgIGNvbnN0IHNpemVfdCBiaXRzUGVyVUNoYXIgPSBzaXplb2YoVUNo
YXIpICogODsKKyAgICBzaXplX3QgdmVjdG9yU2l6ZSA9IChkZXB0aCArIGJpdHNQZXJVQ2hhciAt
IDEpIC8gYml0c1BlclVDaGFyOworICAgIAorICAgIFZlY3RvcjxVQ2hhcj4gcmVzdWx0KHZlY3Rv
clNpemUpOworICAgIHJlc3VsdC5maWxsKDApOworCisgICAgLy8gQ3JlYXRlIGEgc3RyaW5nIGZy
b20gdGhlIGJpdCBzZXF1ZW5jZSB3aGljaCB3ZSBjYW4gdXNlIHRvIGlkZW50aWZ5IHRoZSBjbG9u
ZS4KKyAgICAvLyBOb3RlIHRoYXQgdGhlIHN0cmluZyBtYXkgY29udGFpbiBlbWJlZGRlZCBudWxs
cywgYnV0IHRoYXQncyBPSy4KKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGRlcHRoOyArK2kp
IHsKKyAgICAgICAgVUNoYXImIGN1cnJDaGFyID0gcmVzdWx0W2kgLyBiaXRzUGVyVUNoYXJdOwor
ICAgICAgICBjdXJyQ2hhciA9IChjdXJyQ2hhciA8PCAxKSB8IG1fcmVwbGljYUJyYW5jaGVzW2ld
OworICAgIH0KKyAgICAKKyAgICByZXR1cm4gU3RyaW5nOjphZG9wdChyZXN1bHQpOworfQorCitQ
YXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gR3JhcGhpY3NMYXllckNBOjpyZXBsaWNhdGVkTGF5
ZXJSb290KFJlcGxpY2FTdGF0ZSYgcmVwbGljYVN0YXRlKQoreworICAgIC8vIExpbWl0IHJlcGxp
Y2EgbmVzdGluZywgdG8gYXZvaWQgMl5OIGV4cGxvc2lvbiBvZiByZXBsaWNhIGxheWVycy4KKyAg
ICBpZiAoIW1fcmVwbGljYXRlZExheWVyIHx8IHJlcGxpY2FTdGF0ZS5yZXBsaWNhRGVwdGgoKSA9
PSBSZXBsaWNhU3RhdGU6Om1heFJlcGxpY2FEZXB0aCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAg
ICBHcmFwaGljc0xheWVyQ0EqIHJlcGxpY2F0ZWRMYXllciA9IHN0YXRpY19jYXN0PEdyYXBoaWNz
TGF5ZXJDQSo+KG1fcmVwbGljYXRlZExheWVyKTsKKyAgICAKKyAgICBSZWZQdHI8UGxhdGZvcm1D
QUxheWVyPiBjbG9uZWRMYXllclJvb3QgPSByZXBsaWNhdGVkTGF5ZXItPmZldGNoQ2xvbmVMYXll
cnModGhpcywgcmVwbGljYVN0YXRlLCBSb290Q2xvbmVMZXZlbCk7CisgICAgRmxvYXRQb2ludCBj
bG9uZVJvb3RQb3NpdGlvbiA9IHJlcGxpY2F0ZWRMYXllci0+cG9zaXRpb25Gb3JDbG9uZVJvb3RM
YXllcigpOworCisgICAgLy8gUmVwbGljYSByb290IGhhcyBubyBvZmZzZXQgb3IgdHJhbnNmb3Jt
CisgICAgY2xvbmVkTGF5ZXJSb290LT5zZXRQb3NpdGlvbihjbG9uZVJvb3RQb3NpdGlvbik7Cisg
ICAgY2xvbmVkTGF5ZXJSb290LT5zZXRUcmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRyaXgoKSk7
CisKKyAgICByZXR1cm4gY2xvbmVkTGF5ZXJSb290OworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJD
QTo6dXBkYXRlTGF5ZXJBbmltYXRpb25zKCkKK3sKKyAgICBpZiAobV9hbmltYXRpb25zVG9Qcm9j
ZXNzLnNpemUoKSkgeworICAgICAgICBBbmltYXRpb25zVG9Qcm9jZXNzTWFwOjpjb25zdF9pdGVy
YXRvciBlbmQgPSBtX2FuaW1hdGlvbnNUb1Byb2Nlc3MuZW5kKCk7CisgICAgICAgIGZvciAoQW5p
bWF0aW9uc1RvUHJvY2Vzc01hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2FuaW1hdGlvbnNUb1By
b2Nlc3MuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgICAgICBjb25zdCBTdHJp
bmcmIGN1cnJBbmltYXRpb25OYW1lID0gaXQtPmZpcnN0OworICAgICAgICAgICAgQW5pbWF0aW9u
c01hcDo6aXRlcmF0b3IgYW5pbWF0aW9uSXQgPSBtX3J1bm5pbmdBbmltYXRpb25zLmZpbmQoY3Vy
ckFuaW1hdGlvbk5hbWUpOworICAgICAgICAgICAgaWYgKGFuaW1hdGlvbkl0ID09IG1fcnVubmlu
Z0FuaW1hdGlvbnMuZW5kKCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAg
ICAgIGNvbnN0IEFuaW1hdGlvblByb2Nlc3NpbmdBY3Rpb24mIHByb2Nlc3NpbmdJbmZvID0gaXQt
PnNlY29uZDsKKyAgICAgICAgICAgIGNvbnN0IFZlY3RvcjxMYXllclByb3BlcnR5QW5pbWF0aW9u
PiYgYW5pbWF0aW9ucyA9IGFuaW1hdGlvbkl0LT5zZWNvbmQ7CisgICAgICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGFuaW1hdGlvbnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgICAg
ICBjb25zdCBMYXllclByb3BlcnR5QW5pbWF0aW9uJiBjdXJyQW5pbWF0aW9uID0gYW5pbWF0aW9u
c1tpXTsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKHByb2Nlc3NpbmdJbmZvLmFjdGlvbikgewor
ICAgICAgICAgICAgICAgIGNhc2UgUmVtb3ZlOgorICAgICAgICAgICAgICAgICAgICByZW1vdmVD
QUFuaW1hdGlvbkZyb21MYXllcihjdXJyQW5pbWF0aW9uLm1fcHJvcGVydHksIGN1cnJBbmltYXRp
b25OYW1lLCBjdXJyQW5pbWF0aW9uLm1faW5kZXgpOworICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICBjYXNlIFBhdXNlOgorICAgICAgICAgICAgICAgICAgICBwYXVz
ZUNBQW5pbWF0aW9uT25MYXllcihjdXJyQW5pbWF0aW9uLm1fcHJvcGVydHksIGN1cnJBbmltYXRp
b25OYW1lLCBjdXJyQW5pbWF0aW9uLm1faW5kZXgsIHByb2Nlc3NpbmdJbmZvLnRpbWVPZmZzZXQp
OworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGlmIChwcm9jZXNzaW5nSW5mby5hY3Rpb24gPT0gUmVtb3Zl
KQorICAgICAgICAgICAgICAgIG1fcnVubmluZ0FuaW1hdGlvbnMucmVtb3ZlKGN1cnJBbmltYXRp
b25OYW1lKTsKKyAgICAgICAgfQorICAgIAorICAgICAgICBtX2FuaW1hdGlvbnNUb1Byb2Nlc3Mu
Y2xlYXIoKTsKKyAgICB9CisgICAgCisgICAgc2l6ZV90IG51bUFuaW1hdGlvbnM7CisgICAgaWYg
KChudW1BbmltYXRpb25zID0gbV91bmNvbWl0dGVkQW5pbWF0aW9ucy5zaXplKCkpKSB7CisgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtQW5pbWF0aW9uczsgKytpKSB7CisgICAgICAg
ICAgICBjb25zdCBMYXllclByb3BlcnR5QW5pbWF0aW9uJiBwZW5kaW5nQW5pbWF0aW9uID0gbV91
bmNvbWl0dGVkQW5pbWF0aW9uc1tpXTsKKyAgICAgICAgICAgIHNldEFuaW1hdGlvbk9uTGF5ZXIo
cGVuZGluZ0FuaW1hdGlvbi5tX2FuaW1hdGlvbi5nZXQoKSwgcGVuZGluZ0FuaW1hdGlvbi5tX3By
b3BlcnR5LCBwZW5kaW5nQW5pbWF0aW9uLm1fbmFtZSwgcGVuZGluZ0FuaW1hdGlvbi5tX2luZGV4
LCBwZW5kaW5nQW5pbWF0aW9uLm1fdGltZU9mZnNldCk7CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIEFuaW1hdGlvbnNNYXA6Oml0ZXJhdG9yIGl0ID0gbV9ydW5uaW5nQW5pbWF0aW9ucy5maW5k
KHBlbmRpbmdBbmltYXRpb24ubV9uYW1lKTsKKyAgICAgICAgICAgIGlmIChpdCA9PSBtX3J1bm5p
bmdBbmltYXRpb25zLmVuZCgpKSB7CisgICAgICAgICAgICAgICAgVmVjdG9yPExheWVyUHJvcGVy
dHlBbmltYXRpb24+IGFuaW1hdGlvbnM7CisgICAgICAgICAgICAgICAgYW5pbWF0aW9ucy5hcHBl
bmQocGVuZGluZ0FuaW1hdGlvbik7CisgICAgICAgICAgICAgICAgbV9ydW5uaW5nQW5pbWF0aW9u
cy5hZGQocGVuZGluZ0FuaW1hdGlvbi5tX25hbWUsIGFuaW1hdGlvbnMpOworICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICBWZWN0b3I8TGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbj4m
IGFuaW1hdGlvbnMgPSBpdC0+c2Vjb25kOworICAgICAgICAgICAgICAgIGFuaW1hdGlvbnMuYXBw
ZW5kKHBlbmRpbmdBbmltYXRpb24pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IAorICAgICAgICBtX3VuY29taXR0ZWRBbmltYXRpb25zLmNsZWFyKCk7CisgICAgfQorfQorCit2
b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0QW5pbWF0aW9uT25MYXllcihQbGF0Zm9ybUNBQW5pbWF0
aW9uKiBjYUFuaW0sIEFuaW1hdGVkUHJvcGVydHlJRCBwcm9wZXJ0eSwgY29uc3QgU3RyaW5nJiBh
bmltYXRpb25OYW1lLCBpbnQgaW5kZXgsIGRvdWJsZSB0aW1lT2Zmc2V0KQoreworICAgIFBsYXRm
b3JtQ0FMYXllciogbGF5ZXIgPSBhbmltYXRlZExheWVyKHByb3BlcnR5KTsKKyAgICAKKyAgICBp
ZiAodGltZU9mZnNldCkgeworICAgICAgICBjYUFuaW0tPnNldEJlZ2luVGltZShDQUN1cnJlbnRN
ZWRpYVRpbWUoKSAtIHRpbWVPZmZzZXQpOworICAgICAgICBjYUFuaW0tPnNldE5vblplcm9CZWdp
blRpbWVGbGFnKHRydWUpOworICAgIH0KKworICAgIFN0cmluZyBhbmltYXRpb25JRCA9IGFuaW1h
dGlvbklkZW50aWZpZXIoYW5pbWF0aW9uTmFtZSwgcHJvcGVydHksIGluZGV4KTsKKworICAgIGxh
eWVyLT5yZW1vdmVBbmltYXRpb25Gb3JLZXkoYW5pbWF0aW9uSUQpOworICAgIGxheWVyLT5hZGRB
bmltYXRpb25Gb3JLZXkoYW5pbWF0aW9uSUQsIGNhQW5pbSk7CisKKyAgICBpZiAoTGF5ZXJNYXAq
IGxheWVyQ2xvbmVNYXAgPSBhbmltYXRlZExheWVyQ2xvbmVzKHByb3BlcnR5KSkgeworICAgICAg
ICBMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbGF5ZXJDbG9uZU1hcC0+ZW5kKCk7Cisg
ICAgICAgIGZvciAoTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbGF5ZXJDbG9uZU1hcC0+
YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgICAgICAvLyBTa2lwIGltbWVkaWF0
ZSByZXBsaWNhcywgc2luY2UgdGhleSBtb3ZlIHdpdGggdGhlIG9yaWdpbmFsLgorICAgICAgICAg
ICAgaWYgKG1fcmVwbGljYUxheWVyICYmIGlzUmVwbGljYXRlZFJvb3RDbG9uZShpdC0+Zmlyc3Qp
KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBpdC0+c2Vjb25kLT5y
ZW1vdmVBbmltYXRpb25Gb3JLZXkoYW5pbWF0aW9uSUQpOworICAgICAgICAgICAgaXQtPnNlY29u
ZC0+YWRkQW5pbWF0aW9uRm9yS2V5KGFuaW1hdGlvbklELCBjYUFuaW0pOworICAgICAgICB9Cisg
ICAgfQorfQorCisvLyBXb3JrYXJvdW5kIGZvciA8cmRhcjovL3Byb2JsZW0vNzMxMTM2Nz4KK3N0
YXRpYyB2b2lkIGJ1ZzczMTEzNjdXb3JrYXJvdW5kKFBsYXRmb3JtQ0FMYXllciogdHJhbnNmb3Jt
TGF5ZXIsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0pCit7CisgICAgaWYg
KCF0cmFuc2Zvcm1MYXllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgVHJhbnNmb3JtYXRpb25N
YXRyaXggY2FUcmFuc2Zvcm0gPSB0cmFuc2Zvcm07CisgICAgY2FUcmFuc2Zvcm0uc2V0TTQxKGNh
VHJhbnNmb3JtLm00MSgpICsgMSk7CisgICAgdHJhbnNmb3JtTGF5ZXItPnNldFRyYW5zZm9ybShj
YVRyYW5zZm9ybSk7CisKKyAgICBjYVRyYW5zZm9ybS5zZXRNNDEoY2FUcmFuc2Zvcm0ubTQxKCkg
LSAxKTsKKyAgICB0cmFuc2Zvcm1MYXllci0+c2V0VHJhbnNmb3JtKGNhVHJhbnNmb3JtKTsKK30K
KworYm9vbCBHcmFwaGljc0xheWVyQ0E6OnJlbW92ZUNBQW5pbWF0aW9uRnJvbUxheWVyKEFuaW1h
dGVkUHJvcGVydHlJRCBwcm9wZXJ0eSwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBpbnQg
aW5kZXgpCit7CisgICAgUGxhdGZvcm1DQUxheWVyKiBsYXllciA9IGFuaW1hdGVkTGF5ZXIocHJv
cGVydHkpOworCisgICAgU3RyaW5nIGFuaW1hdGlvbklEID0gYW5pbWF0aW9uSWRlbnRpZmllcihh
bmltYXRpb25OYW1lLCBwcm9wZXJ0eSwgaW5kZXgpOworCisgICAgaWYgKCFsYXllci0+YW5pbWF0
aW9uRm9yS2V5KGFuaW1hdGlvbklEKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAg
IGxheWVyLT5yZW1vdmVBbmltYXRpb25Gb3JLZXkoYW5pbWF0aW9uSUQpOworICAgIGJ1ZzczMTEz
NjdXb3JrYXJvdW5kKG1fc3RydWN0dXJhbExheWVyLmdldCgpLCBtX3RyYW5zZm9ybSk7CisKKyAg
ICBpZiAoTGF5ZXJNYXAqIGxheWVyQ2xvbmVNYXAgPSBhbmltYXRlZExheWVyQ2xvbmVzKHByb3Bl
cnR5KSkgeworICAgICAgICBMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbGF5ZXJDbG9u
ZU1hcC0+ZW5kKCk7CisgICAgICAgIGZvciAoTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0g
bGF5ZXJDbG9uZU1hcC0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgICAgICAv
LyBTa2lwIGltbWVkaWF0ZSByZXBsaWNhcywgc2luY2UgdGhleSBtb3ZlIHdpdGggdGhlIG9yaWdp
bmFsLgorICAgICAgICAgICAgaWYgKG1fcmVwbGljYUxheWVyICYmIGlzUmVwbGljYXRlZFJvb3RD
bG9uZShpdC0+Zmlyc3QpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAg
ICBpdC0+c2Vjb25kIC0+cmVtb3ZlQW5pbWF0aW9uRm9yS2V5KGFuaW1hdGlvbklEKTsKKyAgICAg
ICAgfQorICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6
OnBhdXNlQ0FBbmltYXRpb25PbkxheWVyKEFuaW1hdGVkUHJvcGVydHlJRCBwcm9wZXJ0eSwgY29u
c3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBpbnQgaW5kZXgsIGRvdWJsZSB0aW1lT2Zmc2V0KQor
eworICAgIFBsYXRmb3JtQ0FMYXllciogbGF5ZXIgPSBhbmltYXRlZExheWVyKHByb3BlcnR5KTsK
KworICAgIFN0cmluZyBhbmltYXRpb25JRCA9IGFuaW1hdGlvbklkZW50aWZpZXIoYW5pbWF0aW9u
TmFtZSwgcHJvcGVydHksIGluZGV4KTsKKworICAgIFJlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9u
PiBjdXJBbmltID0gbGF5ZXItPmFuaW1hdGlvbkZvcktleShhbmltYXRpb25JRCk7CisgICAgaWYg
KCFjdXJBbmltKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBBbmltYXRpb25zIG9uIHRoZSBs
YXllciBhcmUgaW1tdXRhYmxlLCBzbyB3ZSBoYXZlIHRvIGNsb25lIGFuZCBtb2RpZnkuCisgICAg
UmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IG5ld0FuaW0gPSBQbGF0Zm9ybUNBQW5pbWF0aW9u
OjpjcmVhdGUoY3VyQW5pbS5nZXQoKSk7CisKKyAgICBuZXdBbmltLT5zZXRTcGVlZCgwKTsKKyAg
ICBuZXdBbmltLT5zZXRUaW1lT2Zmc2V0KHRpbWVPZmZzZXQpOworICAgIAorICAgIGxheWVyLT5h
ZGRBbmltYXRpb25Gb3JLZXkoYW5pbWF0aW9uSUQsIG5ld0FuaW0uZ2V0KCkpOyAvLyBUaGlzIHdp
bGwgcmVwbGFjZSB0aGUgcnVubmluZyBhbmltYXRpb24uCisKKyAgICAvLyBQYXVzZSB0aGUgYW5p
bWF0aW9ucyBvbiB0aGUgY2xvbmVzIHRvby4KKyAgICBpZiAoTGF5ZXJNYXAqIGxheWVyQ2xvbmVN
YXAgPSBhbmltYXRlZExheWVyQ2xvbmVzKHByb3BlcnR5KSkgeworICAgICAgICBMYXllck1hcDo6
Y29uc3RfaXRlcmF0b3IgZW5kID0gbGF5ZXJDbG9uZU1hcC0+ZW5kKCk7CisgICAgICAgIGZvciAo
TGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbGF5ZXJDbG9uZU1hcC0+YmVnaW4oKTsgaXQg
IT0gZW5kOyArK2l0KSB7CisgICAgICAgICAgICAvLyBTa2lwIGltbWVkaWF0ZSByZXBsaWNhcywg
c2luY2UgdGhleSBtb3ZlIHdpdGggdGhlIG9yaWdpbmFsLgorICAgICAgICAgICAgaWYgKG1fcmVw
bGljYUxheWVyICYmIGlzUmVwbGljYXRlZFJvb3RDbG9uZShpdC0+Zmlyc3QpKQorICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgaXQtPnNlY29uZC0+YWRkQW5pbWF0aW9uRm9y
S2V5KGFuaW1hdGlvbklELCBuZXdBbmltLmdldCgpKTsKKyAgICAgICAgfQorICAgIH0KK30KKwor
dm9pZCBHcmFwaGljc0xheWVyQ0E6OnJlcGFpbnRMYXllckRpcnR5UmVjdHMoKQoreworICAgIGlm
ICghbV9kaXJ0eVJlY3RzLnNpemUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBtX2RpcnR5UmVjdHMuc2l6ZSgpOyArK2kpCisgICAgICAgIG1fbGF5ZXIt
PnNldE5lZWRzRGlzcGxheSgmKG1fZGlydHlSZWN0c1tpXSkpOworICAgIAorICAgIG1fZGlydHlS
ZWN0cy5jbGVhcigpOworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlQ29udGVudHNO
ZWVkc0Rpc3BsYXkoKQoreworICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIpCisgICAgICAgIG1fY29u
dGVudHNMYXllci0+c2V0TmVlZHNEaXNwbGF5KCk7Cit9CisKK2Jvb2wgR3JhcGhpY3NMYXllckNB
OjpjcmVhdGVBbmltYXRpb25Gcm9tS2V5ZnJhbWVzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2
YWx1ZUxpc3QsIGNvbnN0IEFuaW1hdGlvbiogYW5pbWF0aW9uLCBjb25zdCBTdHJpbmcmIGFuaW1h
dGlvbk5hbWUsIGRvdWJsZSB0aW1lT2Zmc2V0KQoreworICAgIEFTU0VSVCh2YWx1ZUxpc3QucHJv
cGVydHkoKSAhPSBBbmltYXRlZFByb3BlcnR5V2Via2l0VHJhbnNmb3JtKTsKKyAgICAKKyAgICBi
b29sIGlzS2V5ZnJhbWUgPSB2YWx1ZUxpc3Quc2l6ZSgpID4gMjsKKyAgICBib29sIHZhbHVlc09L
OworICAgIAorICAgIGJvb2wgYWRkaXRpdmUgPSBmYWxzZTsKKyAgICBpbnQgYW5pbWF0aW9uSW5k
ZXggPSAwOworICAgIAorICAgIFJlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBjYUFuaW1hdGlv
bjsKKyAgICAKKyAgICBpZiAoaXNLZXlmcmFtZSkgeworICAgICAgICBjYUFuaW1hdGlvbiA9IGNy
ZWF0ZUtleWZyYW1lQW5pbWF0aW9uKGFuaW1hdGlvbiwgdmFsdWVMaXN0LnByb3BlcnR5KCksIGFk
ZGl0aXZlKTsKKyAgICAgICAgdmFsdWVzT0sgPSBzZXRBbmltYXRpb25LZXlmcmFtZXModmFsdWVM
aXN0LCBhbmltYXRpb24sIGNhQW5pbWF0aW9uLmdldCgpKTsKKyAgICB9IGVsc2UgeworICAgICAg
ICBjYUFuaW1hdGlvbiA9IGNyZWF0ZUJhc2ljQW5pbWF0aW9uKGFuaW1hdGlvbiwgdmFsdWVMaXN0
LnByb3BlcnR5KCksIGFkZGl0aXZlKTsKKyAgICAgICAgdmFsdWVzT0sgPSBzZXRBbmltYXRpb25F
bmRwb2ludHModmFsdWVMaXN0LCBhbmltYXRpb24sIGNhQW5pbWF0aW9uLmdldCgpKTsKKyAgICB9
CisgICAgCisgICAgaWYgKCF2YWx1ZXNPSykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
bV91bmNvbWl0dGVkQW5pbWF0aW9ucy5hcHBlbmQoTGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbihjYUFu
aW1hdGlvbiwgYW5pbWF0aW9uTmFtZSwgdmFsdWVMaXN0LnByb3BlcnR5KCksIGFuaW1hdGlvbklu
ZGV4LCB0aW1lT2Zmc2V0KSk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBHcmFwaGlj
c0xheWVyQ0E6OmNyZWF0ZVRyYW5zZm9ybUFuaW1hdGlvbnNGcm9tS2V5ZnJhbWVzKGNvbnN0IEtl
eWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3QsIGNvbnN0IEFuaW1hdGlvbiogYW5pbWF0aW9uLCBj
b25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGRvdWJsZSB0aW1lT2Zmc2V0LCBjb25zdCBJbnRT
aXplJiBib3hTaXplKQoreworICAgIEFTU0VSVCh2YWx1ZUxpc3QucHJvcGVydHkoKSA9PSBBbmlt
YXRlZFByb3BlcnR5V2Via2l0VHJhbnNmb3JtKTsKKworICAgIFRyYW5zZm9ybU9wZXJhdGlvbkxp
c3QgZnVuY3Rpb25MaXN0OworICAgIGJvb2wgbGlzdHNNYXRjaCwgaGFzQmlnUm90YXRpb247Cisg
ICAgZmV0Y2hUcmFuc2Zvcm1PcGVyYXRpb25MaXN0KHZhbHVlTGlzdCwgZnVuY3Rpb25MaXN0LCBs
aXN0c01hdGNoLCBoYXNCaWdSb3RhdGlvbik7CisKKyAgICAvLyBXZSBuZWVkIHRvIGZhbGwgYmFj
ayB0byBzb2Z0d2FyZSBhbmltYXRpb24gaWYgd2UgZG9uJ3QgaGF2ZSBzZXRWYWx1ZUZ1bmN0aW9u
OiwgYW5kCisgICAgLy8gd2Ugd291bGQgbmVlZCB0byBhbmltYXRlIGVhY2ggaW5jb21pbmcgdHJh
bnNmb3JtIGZ1bmN0aW9uIHNlcGFyYXRlbHkuIFRoaXMgaXMgdGhlCisgICAgLy8gY2FzZSBpZiB3
ZSBoYXZlIGEgcm90YXRpb24gPj0gMTgwIG9yIHdlIGhhdmUgbW9yZSB0aGFuIG9uZSB0cmFuc2Zv
cm0gZnVuY3Rpb24uCisgICAgaWYgKChoYXNCaWdSb3RhdGlvbiB8fCBmdW5jdGlvbkxpc3Quc2l6
ZSgpID4gMSkgJiYgIVBsYXRmb3JtQ0FBbmltYXRpb246OnN1cHBvcnRzVmFsdWVGdW5jdGlvbigp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBib29sIHZhbGlkTWF0cmljZXMgPSB0cnVl
OworCisgICAgLy8gSWYgZnVuY3Rpb25MaXN0cyBkb24ndCBtYXRjaCB3ZSBkbyBhIG1hdHJpeCBh
bmltYXRpb24sIG90aGVyd2lzZSB3ZSBkbyBhIGNvbXBvbmVudCBoYXJkd2FyZSBhbmltYXRpb24u
CisgICAgLy8gQWxzbywgd2UgY2FuJ3QgZG8gY29tcG9uZW50IGFuaW1hdGlvbiB1bmxlc3Mgd2Ug
aGF2ZSB2YWx1ZUZ1bmN0aW9uLCBzbyB3ZSBuZWVkIHRvIGRvIG1hdHJpeCBhbmltYXRpb24KKyAg
ICAvLyBpZiB0aGF0J3Mgbm90IHRydWUgYXMgd2VsbC4KKyAgICBib29sIGlzTWF0cml4QW5pbWF0
aW9uID0gIWxpc3RzTWF0Y2ggfHwgIVBsYXRmb3JtQ0FBbmltYXRpb246OnN1cHBvcnRzVmFsdWVG
dW5jdGlvbigpOworICAgIAorICAgIHNpemVfdCBudW1BbmltYXRpb25zID0gaXNNYXRyaXhBbmlt
YXRpb24gPyAxIDogZnVuY3Rpb25MaXN0LnNpemUoKTsKKyAgICBib29sIGlzS2V5ZnJhbWUgPSB2
YWx1ZUxpc3Quc2l6ZSgpID4gMjsKKyAgICAKKyAgICAvLyBJdGVyYXRlIHRocm91Z2ggdGhlIHRy
YW5zZm9ybSBmdW5jdGlvbnMsIHNlbmRpbmcgYW4gYW5pbWF0aW9uIGZvciBlYWNoIG9uZS4KKyAg
ICBmb3IgKHNpemVfdCBhbmltYXRpb25JbmRleCA9IDA7IGFuaW1hdGlvbkluZGV4IDwgbnVtQW5p
bWF0aW9uczsgKythbmltYXRpb25JbmRleCkgeworICAgICAgICBUcmFuc2Zvcm1PcGVyYXRpb246
Ok9wZXJhdGlvblR5cGUgdHJhbnNmb3JtT3AgPSBpc01hdHJpeEFuaW1hdGlvbiA/IFRyYW5zZm9y
bU9wZXJhdGlvbjo6TUFUUklYXzNEIDogZnVuY3Rpb25MaXN0W2FuaW1hdGlvbkluZGV4XTsKKyAg
ICAgICAgUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IGNhQW5pbWF0aW9uOworCisjaWYgZGVm
aW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSB8fCBkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVP
UEFSRCkKKyAgICAgICAgLy8gQ0EgYXBwbGllcyBhbmltYXRpb25zIGluIHJldmVyc2Ugb3JkZXIg
KDxyZGFyOi8vcHJvYmxlbS83MDk1NjM4Pikgc28gd2UgbmVlZCB0aGUgbGFzdCBvbmUgd2UgYWRk
IChwZXIgcHJvcGVydHkpCisgICAgICAgIC8vIHRvIGJlIG5vbi1hZGRpdGl2ZS4KKyAgICAgICAg
Ym9vbCBhZGRpdGl2ZSA9IGFuaW1hdGlvbkluZGV4IDwgKG51bUFuaW1hdGlvbnMgLSAxKTsKKyNl
bHNlCisgICAgICAgIGJvb2wgYWRkaXRpdmUgPSBhbmltYXRpb25JbmRleCA+IDA7CisjZW5kaWYK
KyAgICAgICAgaWYgKGlzS2V5ZnJhbWUpIHsKKyAgICAgICAgICAgIGNhQW5pbWF0aW9uID0gY3Jl
YXRlS2V5ZnJhbWVBbmltYXRpb24oYW5pbWF0aW9uLCB2YWx1ZUxpc3QucHJvcGVydHkoKSwgYWRk
aXRpdmUpOworICAgICAgICAgICAgdmFsaWRNYXRyaWNlcyA9IHNldFRyYW5zZm9ybUFuaW1hdGlv
bktleWZyYW1lcyh2YWx1ZUxpc3QsIGFuaW1hdGlvbiwgY2FBbmltYXRpb24uZ2V0KCksIGFuaW1h
dGlvbkluZGV4LCB0cmFuc2Zvcm1PcCwgaXNNYXRyaXhBbmltYXRpb24sIGJveFNpemUpOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgY2FBbmltYXRpb24gPSBjcmVhdGVCYXNpY0FuaW1h
dGlvbihhbmltYXRpb24sIHZhbHVlTGlzdC5wcm9wZXJ0eSgpLCBhZGRpdGl2ZSk7CisgICAgICAg
ICAgICB2YWxpZE1hdHJpY2VzID0gc2V0VHJhbnNmb3JtQW5pbWF0aW9uRW5kcG9pbnRzKHZhbHVl
TGlzdCwgYW5pbWF0aW9uLCBjYUFuaW1hdGlvbi5nZXQoKSwgYW5pbWF0aW9uSW5kZXgsIHRyYW5z
Zm9ybU9wLCBpc01hdHJpeEFuaW1hdGlvbiwgYm94U2l6ZSk7CisgICAgICAgIH0KKyAgICAgICAg
CisgICAgICAgIGlmICghdmFsaWRNYXRyaWNlcykKKyAgICAgICAgICAgIGJyZWFrOworICAgIAor
ICAgICAgICBtX3VuY29taXR0ZWRBbmltYXRpb25zLmFwcGVuZChMYXllclByb3BlcnR5QW5pbWF0
aW9uKGNhQW5pbWF0aW9uLCBhbmltYXRpb25OYW1lLCB2YWx1ZUxpc3QucHJvcGVydHkoKSwgYW5p
bWF0aW9uSW5kZXgsIHRpbWVPZmZzZXQpKTsKKyAgICB9CisKKyAgICByZXR1cm4gdmFsaWRNYXRy
aWNlczsKK30KKworUGFzc1JlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBHcmFwaGljc0xheWVy
Q0E6OmNyZWF0ZUJhc2ljQW5pbWF0aW9uKGNvbnN0IEFuaW1hdGlvbiogYW5pbSwgQW5pbWF0ZWRQ
cm9wZXJ0eUlEIHByb3BlcnR5LCBib29sIGFkZGl0aXZlKQoreworICAgIFJlZlB0cjxQbGF0Zm9y
bUNBQW5pbWF0aW9uPiBiYXNpY0FuaW0gPSBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpjcmVhdGUoUGxh
dGZvcm1DQUFuaW1hdGlvbjo6QmFzaWMsIHByb3BlcnR5SWRUb1N0cmluZyhwcm9wZXJ0eSkpOwor
ICAgIHNldHVwQW5pbWF0aW9uKGJhc2ljQW5pbS5nZXQoKSwgYW5pbSwgYWRkaXRpdmUpOworICAg
IHJldHVybiBiYXNpY0FuaW07Cit9CisKK1Bhc3NSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj5H
cmFwaGljc0xheWVyQ0E6OmNyZWF0ZUtleWZyYW1lQW5pbWF0aW9uKGNvbnN0IEFuaW1hdGlvbiog
YW5pbSwgQW5pbWF0ZWRQcm9wZXJ0eUlEIHByb3BlcnR5LCBib29sIGFkZGl0aXZlKQoreworICAg
IFJlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBrZXlmcmFtZUFuaW0gPSBQbGF0Zm9ybUNBQW5p
bWF0aW9uOjpjcmVhdGUoUGxhdGZvcm1DQUFuaW1hdGlvbjo6S2V5ZnJhbWUsIHByb3BlcnR5SWRU
b1N0cmluZyhwcm9wZXJ0eSkpOworICAgIHNldHVwQW5pbWF0aW9uKGtleWZyYW1lQW5pbS5nZXQo
KSwgYW5pbSwgYWRkaXRpdmUpOworICAgIHJldHVybiBrZXlmcmFtZUFuaW07Cit9CisKK3ZvaWQg
R3JhcGhpY3NMYXllckNBOjpzZXR1cEFuaW1hdGlvbihQbGF0Zm9ybUNBQW5pbWF0aW9uKiBwcm9w
ZXJ0eUFuaW0sIGNvbnN0IEFuaW1hdGlvbiogYW5pbSwgYm9vbCBhZGRpdGl2ZSkKK3sKKyAgICBk
b3VibGUgZHVyYXRpb24gPSBhbmltLT5kdXJhdGlvbigpOworICAgIGlmIChkdXJhdGlvbiA8PSAw
KQorICAgICAgICBkdXJhdGlvbiA9IGNBbmltYXRpb25BbG1vc3RaZXJvRHVyYXRpb247CisKKyAg
ICBmbG9hdCByZXBlYXRDb3VudCA9IGFuaW0tPml0ZXJhdGlvbkNvdW50KCk7CisgICAgaWYgKHJl
cGVhdENvdW50ID09IEFuaW1hdGlvbjo6SXRlcmF0aW9uQ291bnRJbmZpbml0ZSkKKyAgICAgICAg
cmVwZWF0Q291bnQgPSBGTFRfTUFYOworICAgIGVsc2UgaWYgKGFuaW0tPmRpcmVjdGlvbigpID09
IEFuaW1hdGlvbjo6QW5pbWF0aW9uRGlyZWN0aW9uQWx0ZXJuYXRlKQorICAgICAgICByZXBlYXRD
b3VudCAvPSAyOworCisgICAgUGxhdGZvcm1DQUFuaW1hdGlvbjo6RmlsbE1vZGVUeXBlIGZpbGxN
b2RlID0gUGxhdGZvcm1DQUFuaW1hdGlvbjo6Tm9GaWxsTW9kZTsKKyAgICBzd2l0Y2ggKGFuaW0t
PmZpbGxNb2RlKCkpIHsKKyAgICBjYXNlIEFuaW1hdGlvbkZpbGxNb2RlTm9uZToKKyAgICAgICAg
ZmlsbE1vZGUgPSBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpGb3J3YXJkczsgLy8gVXNlICJmb3J3YXJk
cyIgcmF0aGVyIHRoYW4gInJlbW92ZWQiIGJlY2F1c2UgdGhlIHN0eWxlIHN5c3RlbSB3aWxsIHJl
bW92ZSB0aGUgYW5pbWF0aW9uIHdoZW4gaXQgaXMgZmluaXNoZWQuIFRoaXMgYXZvaWRzIGEgZmxh
c2guCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQW5pbWF0aW9uRmlsbE1vZGVCYWNrd2FyZHM6
CisgICAgICAgIGZpbGxNb2RlID0gUGxhdGZvcm1DQUFuaW1hdGlvbjo6Qm90aDsgLy8gVXNlICJi
b3RoIiByYXRoZXIgdGhhbiAiYmFja3dhcmRzIiBiZWNhdXNlIHRoZSBzdHlsZSBzeXN0ZW0gd2ls
bCByZW1vdmUgdGhlIGFuaW1hdGlvbiB3aGVuIGl0IGlzIGZpbmlzaGVkLiBUaGlzIGF2b2lkcyBh
IGZsYXNoLgorICAgICAgICBicmVhazsKKyAgICBjYXNlIEFuaW1hdGlvbkZpbGxNb2RlRm9yd2Fy
ZHM6CisgICAgICAgIGZpbGxNb2RlID0gUGxhdGZvcm1DQUFuaW1hdGlvbjo6Rm9yd2FyZHM7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgQW5pbWF0aW9uRmlsbE1vZGVCb3RoOgorICAgICAgICBm
aWxsTW9kZSA9IFBsYXRmb3JtQ0FBbmltYXRpb246OkJvdGg7CisgICAgICAgIGJyZWFrOworICAg
IH0KKworICAgIHByb3BlcnR5QW5pbS0+c2V0RHVyYXRpb24oZHVyYXRpb24pOworICAgIHByb3Bl
cnR5QW5pbS0+c2V0UmVwZWF0Q291bnQocmVwZWF0Q291bnQpOworICAgIHByb3BlcnR5QW5pbS0+
c2V0QXV0b3JldmVyc2VzKGFuaW0tPmRpcmVjdGlvbigpKTsKKyAgICBwcm9wZXJ0eUFuaW0tPnNl
dFJlbW92ZWRPbkNvbXBsZXRpb24oZmFsc2UpOworICAgIHByb3BlcnR5QW5pbS0+c2V0QWRkaXRp
dmUoYWRkaXRpdmUpOworICAgIHByb3BlcnR5QW5pbS0+c2V0RmlsbE1vZGUoZmlsbE1vZGUpOwor
fQorCitjb25zdCBUaW1pbmdGdW5jdGlvbiogR3JhcGhpY3NMYXllckNBOjp0aW1pbmdGdW5jdGlv
bkZvckFuaW1hdGlvblZhbHVlKGNvbnN0IEFuaW1hdGlvblZhbHVlKiBhbmltVmFsdWUsIGNvbnN0
IEFuaW1hdGlvbiogYW5pbSkKK3sKKyAgICBpZiAoYW5pbVZhbHVlLT50aW1pbmdGdW5jdGlvbigp
KQorICAgICAgICByZXR1cm4gYW5pbVZhbHVlLT50aW1pbmdGdW5jdGlvbigpOworICAgIGlmIChh
bmltLT5pc1RpbWluZ0Z1bmN0aW9uU2V0KCkpCisgICAgICAgIHJldHVybiBhbmltLT50aW1pbmdG
dW5jdGlvbigpLmdldCgpOworICAgICAgICAKKyAgICByZXR1cm4gMDsKK30KKworYm9vbCBHcmFw
aGljc0xheWVyQ0E6OnNldEFuaW1hdGlvbkVuZHBvaW50cyhjb25zdCBLZXlmcmFtZVZhbHVlTGlz
dCYgdmFsdWVMaXN0LCBjb25zdCBBbmltYXRpb24qIGFuaW0sIFBsYXRmb3JtQ0FBbmltYXRpb24q
IGJhc2ljQW5pbSkKK3sKKyAgICBzd2l0Y2ggKHZhbHVlTGlzdC5wcm9wZXJ0eSgpKSB7CisgICAg
Y2FzZSBBbmltYXRlZFByb3BlcnR5T3BhY2l0eTogeworICAgICAgICBiYXNpY0FuaW0tPnNldEZy
b21WYWx1ZShzdGF0aWNfY2FzdDxjb25zdCBGbG9hdEFuaW1hdGlvblZhbHVlKj4odmFsdWVMaXN0
LmF0KDApKS0+dmFsdWUoKSk7CisgICAgICAgIGJhc2ljQW5pbS0+c2V0VG9WYWx1ZShzdGF0aWNf
Y2FzdDxjb25zdCBGbG9hdEFuaW1hdGlvblZhbHVlKj4odmFsdWVMaXN0LmF0KDEpKS0+dmFsdWUo
KSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsgLy8gd2UgZG9uJ3QgYW5pbWF0ZSBjb2xvciB5ZXQKKyAgICAgICAgYnJl
YWs7CisgICAgfQorCisgICAgLy8gVGhpcyBjb2RlcGF0aCBpcyB1c2VkIGZvciAyLWtleWZyYW1l
IGFuaW1hdGlvbnMsIHNvIHdlIHN0aWxsIG5lZWQgdG8gbG9vayBpbiB0aGUgc3RhcnQKKyAgICAv
LyBmb3IgYSB0aW1pbmcgZnVuY3Rpb24uCisgICAgY29uc3QgVGltaW5nRnVuY3Rpb24qIHRpbWlu
Z0Z1bmN0aW9uID0gdGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZSh2YWx1ZUxpc3QuYXQo
MCksIGFuaW0pOworICAgIGlmICh0aW1pbmdGdW5jdGlvbikKKyAgICAgICAgYmFzaWNBbmltLT5z
ZXRUaW1pbmdGdW5jdGlvbih0aW1pbmdGdW5jdGlvbik7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworYm9vbCBHcmFwaGljc0xheWVyQ0E6OnNldEFuaW1hdGlvbktleWZyYW1lcyhjb25zdCBLZXlm
cmFtZVZhbHVlTGlzdCYgdmFsdWVMaXN0LCBjb25zdCBBbmltYXRpb24qIGFuaW0sIFBsYXRmb3Jt
Q0FBbmltYXRpb24qIGtleWZyYW1lQW5pbSkKK3sKKyAgICBWZWN0b3I8ZmxvYXQ+IGtleVRpbWVz
OworICAgIFZlY3RvcjxmbG9hdD4gdmFsdWVzOworICAgIFZlY3Rvcjxjb25zdCBUaW1pbmdGdW5j
dGlvbio+IHRpbWluZ0Z1bmN0aW9uczsKKyAgICAKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgdmFsdWVMaXN0LnNpemUoKTsgKytpKSB7CisgICAgICAgIGNvbnN0IEFuaW1hdGlvblZhbHVl
KiBjdXJWYWx1ZSA9IHZhbHVlTGlzdC5hdChpKTsKKyAgICAgICAga2V5VGltZXMuYXBwZW5kKGN1
clZhbHVlLT5rZXlUaW1lKCkpOworCisgICAgICAgIHN3aXRjaCAodmFsdWVMaXN0LnByb3BlcnR5
KCkpIHsKKyAgICAgICAgY2FzZSBBbmltYXRlZFByb3BlcnR5T3BhY2l0eTogeworICAgICAgICAg
ICAgY29uc3QgRmxvYXRBbmltYXRpb25WYWx1ZSogZmxvYXRWYWx1ZSA9IHN0YXRpY19jYXN0PGNv
bnN0IEZsb2F0QW5pbWF0aW9uVmFsdWUqPihjdXJWYWx1ZSk7CisgICAgICAgICAgICB2YWx1ZXMu
YXBwZW5kKGZsb2F0VmFsdWUtPnZhbHVlKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyAv
LyB3ZSBkb24ndCBhbmltYXRlIGNvbG9yIHlldAorICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKworICAgICAgICB0aW1pbmdGdW5jdGlvbnMuYXBwZW5kKHRpbWluZ0Z1bmN0aW9uRm9yQW5p
bWF0aW9uVmFsdWUoY3VyVmFsdWUsIGFuaW0pKTsKKyAgICB9CisgICAgCisgICAgLy8gV2UgdG9z
cyB0aGUgbGFzdCB0ZkFycmF5IHZhbHVlIGJlY2F1c2UgaXQgaGFzIHRvIG9uZSBzaG9ydGVyIHRo
YW4gdGhlIG90aGVycy4KKyAgICB0aW1pbmdGdW5jdGlvbnMucmVtb3ZlTGFzdCgpOworCisgICAg
a2V5ZnJhbWVBbmltLT5zZXRLZXlUaW1lcyhrZXlUaW1lcyk7CisgICAga2V5ZnJhbWVBbmltLT5z
ZXRWYWx1ZXModmFsdWVzKTsKKyAgICBrZXlmcmFtZUFuaW0tPnNldFRpbWluZ0Z1bmN0aW9ucyh0
aW1pbmdGdW5jdGlvbnMpOworICAgIAorICAgIHJldHVybiB0cnVlOworfQorCitib29sIEdyYXBo
aWNzTGF5ZXJDQTo6c2V0VHJhbnNmb3JtQW5pbWF0aW9uRW5kcG9pbnRzKGNvbnN0IEtleWZyYW1l
VmFsdWVMaXN0JiB2YWx1ZUxpc3QsIGNvbnN0IEFuaW1hdGlvbiogYW5pbSwgUGxhdGZvcm1DQUFu
aW1hdGlvbiogYmFzaWNBbmltLCBpbnQgZnVuY3Rpb25JbmRleCwgVHJhbnNmb3JtT3BlcmF0aW9u
OjpPcGVyYXRpb25UeXBlIHRyYW5zZm9ybU9wVHlwZSwgYm9vbCBpc01hdHJpeEFuaW1hdGlvbiwg
Y29uc3QgSW50U2l6ZSYgYm94U2l6ZSkKK3sKKyAgICBBU1NFUlQodmFsdWVMaXN0LnNpemUoKSA9
PSAyKTsKKyAgICBjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSogc3RhcnRWYWx1ZSA9IHN0
YXRpY19jYXN0PGNvbnN0IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKj4odmFsdWVMaXN0LmF0KDAp
KTsKKyAgICBjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSogZW5kVmFsdWUgPSBzdGF0aWNf
Y2FzdDxjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSo+KHZhbHVlTGlzdC5hdCgxKSk7Cisg
ICAgCisgICAgaWYgKGlzTWF0cml4QW5pbWF0aW9uKSB7CisgICAgICAgIFRyYW5zZm9ybWF0aW9u
TWF0cml4IGZyb21UcmFuc2Zvcm0sIHRvVHJhbnNmb3JtOworICAgICAgICBzdGFydFZhbHVlLT52
YWx1ZSgpLT5hcHBseShib3hTaXplLCBmcm9tVHJhbnNmb3JtKTsKKyAgICAgICAgZW5kVmFsdWUt
PnZhbHVlKCktPmFwcGx5KGJveFNpemUsIHRvVHJhbnNmb3JtKTsKKworICAgICAgICAvLyBJZiBh
bnkgbWF0cml4IGlzIHNpbmd1bGFyLCBDQSB3b24ndCBhbmltYXRlIGl0IGNvcnJlY3RseS4gU28g
ZmFsbCBiYWNrIHRvIHNvZnR3YXJlIGFuaW1hdGlvbgorICAgICAgICBpZiAoIWZyb21UcmFuc2Zv
cm0uaXNJbnZlcnRpYmxlKCkgfHwgIXRvVHJhbnNmb3JtLmlzSW52ZXJ0aWJsZSgpKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgCisgICAgICAgIGJhc2ljQW5pbS0+c2V0
RnJvbVZhbHVlKGZyb21UcmFuc2Zvcm0pOworICAgICAgICBiYXNpY0FuaW0tPnNldFRvVmFsdWUo
dG9UcmFuc2Zvcm0pOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChpc1RyYW5zZm9ybVR5cGVO
dW1iZXIodHJhbnNmb3JtT3BUeXBlKSkgeworICAgICAgICAgICAgZmxvYXQgdmFsdWU7CisgICAg
ICAgICAgICBnZXRUcmFuc2Zvcm1GdW5jdGlvblZhbHVlKHN0YXJ0VmFsdWUtPnZhbHVlKCktPmF0
KGZ1bmN0aW9uSW5kZXgpLCB0cmFuc2Zvcm1PcFR5cGUsIGJveFNpemUsIHZhbHVlKTsKKyAgICAg
ICAgICAgIGJhc2ljQW5pbS0+c2V0RnJvbVZhbHVlKHZhbHVlKTsKKyAgICAgICAgICAgIGdldFRy
YW5zZm9ybUZ1bmN0aW9uVmFsdWUoZW5kVmFsdWUtPnZhbHVlKCktPmF0KGZ1bmN0aW9uSW5kZXgp
LCB0cmFuc2Zvcm1PcFR5cGUsIGJveFNpemUsIHZhbHVlKTsKKyAgICAgICAgICAgIGJhc2ljQW5p
bS0+c2V0VG9WYWx1ZSh2YWx1ZSk7CisgICAgICAgIH0gZWxzZSBpZiAoaXNUcmFuc2Zvcm1UeXBl
RmxvYXRQb2ludDNEKHRyYW5zZm9ybU9wVHlwZSkpIHsKKyAgICAgICAgICAgIEZsb2F0UG9pbnQz
RCB2YWx1ZTsKKyAgICAgICAgICAgIGdldFRyYW5zZm9ybUZ1bmN0aW9uVmFsdWUoc3RhcnRWYWx1
ZS0+dmFsdWUoKS0+YXQoZnVuY3Rpb25JbmRleCksIHRyYW5zZm9ybU9wVHlwZSwgYm94U2l6ZSwg
dmFsdWUpOworICAgICAgICAgICAgYmFzaWNBbmltLT5zZXRGcm9tVmFsdWUodmFsdWUpOworICAg
ICAgICAgICAgZ2V0VHJhbnNmb3JtRnVuY3Rpb25WYWx1ZShlbmRWYWx1ZS0+dmFsdWUoKS0+YXQo
ZnVuY3Rpb25JbmRleCksIHRyYW5zZm9ybU9wVHlwZSwgYm94U2l6ZSwgdmFsdWUpOworICAgICAg
ICAgICAgYmFzaWNBbmltLT5zZXRUb1ZhbHVlKHZhbHVlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHZhbHVlOworICAgICAgICAgICAgZ2V0VHJh
bnNmb3JtRnVuY3Rpb25WYWx1ZShzdGFydFZhbHVlLT52YWx1ZSgpLT5hdChmdW5jdGlvbkluZGV4
KSwgdHJhbnNmb3JtT3BUeXBlLCBib3hTaXplLCB2YWx1ZSk7CisgICAgICAgICAgICBiYXNpY0Fu
aW0tPnNldEZyb21WYWx1ZSh2YWx1ZSk7CisgICAgICAgICAgICBnZXRUcmFuc2Zvcm1GdW5jdGlv
blZhbHVlKGVuZFZhbHVlLT52YWx1ZSgpLT5hdChmdW5jdGlvbkluZGV4KSwgdHJhbnNmb3JtT3BU
eXBlLCBib3hTaXplLCB2YWx1ZSk7CisgICAgICAgICAgICBiYXNpY0FuaW0tPnNldFRvVmFsdWUo
dmFsdWUpOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gVGhpcyBjb2RlcGF0aCBpcyB1c2Vk
IGZvciAyLWtleWZyYW1lIGFuaW1hdGlvbnMsIHNvIHdlIHN0aWxsIG5lZWQgdG8gbG9vayBpbiB0
aGUgc3RhcnQKKyAgICAvLyBmb3IgYSB0aW1pbmcgZnVuY3Rpb24uCisgICAgY29uc3QgVGltaW5n
RnVuY3Rpb24qIHRpbWluZ0Z1bmN0aW9uID0gdGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1
ZSh2YWx1ZUxpc3QuYXQoMCksIGFuaW0pOworICAgIGJhc2ljQW5pbS0+c2V0VGltaW5nRnVuY3Rp
b24odGltaW5nRnVuY3Rpb24pOworCisjaWYgSEFWRV9NT0RFUk5fUVVBUlRaQ09SRQorICAgIFBs
YXRmb3JtQ0FBbmltYXRpb246OlZhbHVlRnVuY3Rpb25UeXBlIHZhbHVlRnVuY3Rpb24gPSBnZXRW
YWx1ZUZ1bmN0aW9uTmFtZUZvclRyYW5zZm9ybU9wZXJhdGlvbih0cmFuc2Zvcm1PcFR5cGUpOwor
ICAgIGlmICh2YWx1ZUZ1bmN0aW9uICE9IFBsYXRmb3JtQ0FBbmltYXRpb246Ok5vVmFsdWVGdW5j
dGlvbikKKyAgICAgICAgYmFzaWNBbmltLT5zZXRWYWx1ZUZ1bmN0aW9uKHZhbHVlRnVuY3Rpb24p
OworI2VuZGlmCisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBHcmFwaGljc0xheWVyQ0E6
OnNldFRyYW5zZm9ybUFuaW1hdGlvbktleWZyYW1lcyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYg
dmFsdWVMaXN0LCBjb25zdCBBbmltYXRpb24qIGFuaW1hdGlvbiwgUGxhdGZvcm1DQUFuaW1hdGlv
bioga2V5ZnJhbWVBbmltLCBpbnQgZnVuY3Rpb25JbmRleCwgVHJhbnNmb3JtT3BlcmF0aW9uOjpP
cGVyYXRpb25UeXBlIHRyYW5zZm9ybU9wVHlwZSwgYm9vbCBpc01hdHJpeEFuaW1hdGlvbiwgY29u
c3QgSW50U2l6ZSYgYm94U2l6ZSkKK3sKKyAgICBWZWN0b3I8ZmxvYXQ+IGtleVRpbWVzOworICAg
IFZlY3RvcjxmbG9hdD4gZmxvYXRWYWx1ZXM7CisgICAgVmVjdG9yPEZsb2F0UG9pbnQzRD4gZmxv
YXRQb2ludDNEVmFsdWVzOworICAgIFZlY3RvcjxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4gdHJhbnNm
b3JtYXRpb25NYXRyaXhWYWx1ZXM7CisgICAgVmVjdG9yPGNvbnN0IFRpbWluZ0Z1bmN0aW9uKj4g
dGltaW5nRnVuY3Rpb25zOworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHZhbHVlTGlz
dC5zaXplKCk7ICsraSkgeworICAgICAgICBjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSog
Y3VyVmFsdWUgPSBzdGF0aWNfY2FzdDxjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSo+KHZh
bHVlTGlzdC5hdChpKSk7CisgICAgICAgIGtleVRpbWVzLmFwcGVuZChjdXJWYWx1ZS0+a2V5VGlt
ZSgpKTsKKworICAgICAgICBpZiAoaXNNYXRyaXhBbmltYXRpb24pIHsKKyAgICAgICAgICAgIFRy
YW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybTsKKyAgICAgICAgICAgIGN1clZhbHVlLT52YWx1
ZSgpLT5hcHBseShib3hTaXplLCB0cmFuc2Zvcm0pOworCisgICAgICAgICAgICAvLyBJZiBhbnkg
bWF0cml4IGlzIHNpbmd1bGFyLCBDQSB3b24ndCBhbmltYXRlIGl0IGNvcnJlY3RseS4gU28gZmFs
bCBiYWNrIHRvIHNvZnR3YXJlIGFuaW1hdGlvbgorICAgICAgICAgICAgaWYgKCF0cmFuc2Zvcm0u
aXNJbnZlcnRpYmxlKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAg
ICAgICB0cmFuc2Zvcm1hdGlvbk1hdHJpeFZhbHVlcy5hcHBlbmQodHJhbnNmb3JtKTsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbiogdHJhbnNm
b3JtT3AgPSBjdXJWYWx1ZS0+dmFsdWUoKS0+YXQoZnVuY3Rpb25JbmRleCk7CisgICAgICAgICAg
ICBpZiAoaXNUcmFuc2Zvcm1UeXBlTnVtYmVyKHRyYW5zZm9ybU9wVHlwZSkpIHsKKyAgICAgICAg
ICAgICAgICBmbG9hdCB2YWx1ZTsKKyAgICAgICAgICAgICAgICBnZXRUcmFuc2Zvcm1GdW5jdGlv
blZhbHVlKHRyYW5zZm9ybU9wLCB0cmFuc2Zvcm1PcFR5cGUsIGJveFNpemUsIHZhbHVlKTsKKyAg
ICAgICAgICAgICAgICBmbG9hdFZhbHVlcy5hcHBlbmQodmFsdWUpOworICAgICAgICAgICAgfSBl
bHNlIGlmIChpc1RyYW5zZm9ybVR5cGVGbG9hdFBvaW50M0QodHJhbnNmb3JtT3BUeXBlKSkgewor
ICAgICAgICAgICAgICAgIEZsb2F0UG9pbnQzRCB2YWx1ZTsKKyAgICAgICAgICAgICAgICBnZXRU
cmFuc2Zvcm1GdW5jdGlvblZhbHVlKHRyYW5zZm9ybU9wLCB0cmFuc2Zvcm1PcFR5cGUsIGJveFNp
emUsIHZhbHVlKTsKKyAgICAgICAgICAgICAgICBmbG9hdFBvaW50M0RWYWx1ZXMuYXBwZW5kKHZh
bHVlKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgVHJhbnNmb3JtYXRp
b25NYXRyaXggdmFsdWU7CisgICAgICAgICAgICAgICAgZ2V0VHJhbnNmb3JtRnVuY3Rpb25WYWx1
ZSh0cmFuc2Zvcm1PcCwgdHJhbnNmb3JtT3BUeXBlLCBib3hTaXplLCB2YWx1ZSk7CisgICAgICAg
ICAgICAgICAgdHJhbnNmb3JtYXRpb25NYXRyaXhWYWx1ZXMuYXBwZW5kKHZhbHVlKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB0aW1p
bmdGdW5jdGlvbiA9IHRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUoY3VyVmFsdWUsIGFu
aW1hdGlvbik7CisgICAgICAgIHRpbWluZ0Z1bmN0aW9ucy5hcHBlbmQodGltaW5nRnVuY3Rpb24p
OworICAgIH0KKyAgICAKKyAgICAvLyBXZSB0b3NzIHRoZSBsYXN0IHRmQXJyYXkgdmFsdWUgYmVj
YXVzZSBpdCBoYXMgdG8gb25lIHNob3J0ZXIgdGhhbiB0aGUgb3RoZXJzLgorICAgIHRpbWluZ0Z1
bmN0aW9ucy5yZW1vdmVMYXN0KCk7CisKKyAgICBrZXlmcmFtZUFuaW0tPnNldEtleVRpbWVzKGtl
eVRpbWVzKTsKKyAgICAKKyAgICBpZiAoaXNUcmFuc2Zvcm1UeXBlTnVtYmVyKHRyYW5zZm9ybU9w
VHlwZSkpCisgICAgICAgIGtleWZyYW1lQW5pbS0+c2V0VmFsdWVzKGZsb2F0VmFsdWVzKTsKKyAg
ICBlbHNlIGlmIChpc1RyYW5zZm9ybVR5cGVGbG9hdFBvaW50M0QodHJhbnNmb3JtT3BUeXBlKSkK
KyAgICAgICAga2V5ZnJhbWVBbmltLT5zZXRWYWx1ZXMoZmxvYXRQb2ludDNEVmFsdWVzKTsKKyAg
ICBlbHNlCisgICAgICAgIGtleWZyYW1lQW5pbS0+c2V0VmFsdWVzKHRyYW5zZm9ybWF0aW9uTWF0
cml4VmFsdWVzKTsKKyAgICAgICAgCisgICAga2V5ZnJhbWVBbmltLT5zZXRUaW1pbmdGdW5jdGlv
bnModGltaW5nRnVuY3Rpb25zKTsKKworI2lmIEhBVkVfTU9ERVJOX1FVQVJUWkNPUkUKKyAgICBQ
bGF0Zm9ybUNBQW5pbWF0aW9uOjpWYWx1ZUZ1bmN0aW9uVHlwZSB2YWx1ZUZ1bmN0aW9uID0gZ2V0
VmFsdWVGdW5jdGlvbk5hbWVGb3JUcmFuc2Zvcm1PcGVyYXRpb24odHJhbnNmb3JtT3BUeXBlKTsK
KyAgICBpZiAodmFsdWVGdW5jdGlvbiAhPSBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpOb1ZhbHVlRnVu
Y3Rpb24pCisgICAgICAgIGtleWZyYW1lQW5pbS0+c2V0VmFsdWVGdW5jdGlvbih2YWx1ZUZ1bmN0
aW9uKTsKKyNlbmRpZgorICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJD
QTo6c3VzcGVuZEFuaW1hdGlvbnMoZG91YmxlIHRpbWUpCit7CisgICAgZG91YmxlIHQgPSBjdXJy
ZW50VGltZVRvTWVkaWFUaW1lKHRpbWUgPyB0aW1lIDogY3VycmVudFRpbWUoKSk7CisgICAgcHJp
bWFyeUxheWVyKCktPnNldFNwZWVkKDApOworICAgIHByaW1hcnlMYXllcigpLT5zZXRUaW1lT2Zm
c2V0KHQpOworCisgICAgLy8gU3VzcGVuZCB0aGUgYW5pbWF0aW9ucyBvbiB0aGUgY2xvbmVzIHRv
by4KKyAgICBpZiAoTGF5ZXJNYXAqIGxheWVyQ2xvbmVNYXAgPSBwcmltYXJ5TGF5ZXJDbG9uZXMo
KSkgeworICAgICAgICBMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbGF5ZXJDbG9uZU1h
cC0+ZW5kKCk7CisgICAgICAgIGZvciAoTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbGF5
ZXJDbG9uZU1hcC0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgICAgICBpdC0+
c2Vjb25kLT5zZXRTcGVlZCgwKTsKKyAgICAgICAgICAgIGl0LT5zZWNvbmQtPnNldFRpbWVPZmZz
ZXQodCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpyZXN1
bWVBbmltYXRpb25zKCkKK3sKKyAgICBwcmltYXJ5TGF5ZXIoKS0+c2V0U3BlZWQoMSk7CisgICAg
cHJpbWFyeUxheWVyKCktPnNldFRpbWVPZmZzZXQoMCk7CisKKyAgICAvLyBSZXN1bWUgdGhlIGFu
aW1hdGlvbnMgb24gdGhlIGNsb25lcyB0b28uCisgICAgaWYgKExheWVyTWFwKiBsYXllckNsb25l
TWFwID0gcHJpbWFyeUxheWVyQ2xvbmVzKCkpIHsKKyAgICAgICAgTGF5ZXJNYXA6OmNvbnN0X2l0
ZXJhdG9yIGVuZCA9IGxheWVyQ2xvbmVNYXAtPmVuZCgpOworICAgICAgICBmb3IgKExheWVyTWFw
Ojpjb25zdF9pdGVyYXRvciBpdCA9IGxheWVyQ2xvbmVNYXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsg
KytpdCkgeworICAgICAgICAgICAgaXQtPnNlY29uZC0+c2V0U3BlZWQoMSk7CisgICAgICAgICAg
ICBpdC0+c2Vjb25kLT5zZXRUaW1lT2Zmc2V0KDApOworICAgICAgICB9CisgICAgfQorfQorCitQ
bGF0Zm9ybUNBTGF5ZXIqIEdyYXBoaWNzTGF5ZXJDQTo6aG9zdExheWVyRm9yU3VibGF5ZXJzKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9zdHJ1Y3R1cmFsTGF5ZXIuZ2V0KCkgPyBtX3N0cnVjdHVy
YWxMYXllci5nZXQoKSA6IG1fbGF5ZXIuZ2V0KCk7IAorfQorCitQbGF0Zm9ybUNBTGF5ZXIqIEdy
YXBoaWNzTGF5ZXJDQTo6bGF5ZXJGb3JTdXBlcmxheWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9zdHJ1Y3R1cmFsTGF5ZXIgPyBtX3N0cnVjdHVyYWxMYXllci5nZXQoKSA6IG1fbGF5ZXIuZ2V0
KCk7Cit9CisKK1BsYXRmb3JtQ0FMYXllciogR3JhcGhpY3NMYXllckNBOjphbmltYXRlZExheWVy
KEFuaW1hdGVkUHJvcGVydHlJRCBwcm9wZXJ0eSkgY29uc3QKK3sKKyAgICByZXR1cm4gKHByb3Bl
cnR5ID09IEFuaW1hdGVkUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpID8gbV9jb250ZW50c0xheWVy
LmdldCgpIDogcHJpbWFyeUxheWVyKCk7Cit9CisKK0dyYXBoaWNzTGF5ZXJDQTo6TGF5ZXJNYXAq
IEdyYXBoaWNzTGF5ZXJDQTo6YW5pbWF0ZWRMYXllckNsb25lcyhBbmltYXRlZFByb3BlcnR5SUQg
cHJvcGVydHkpIGNvbnN0Cit7CisgICAgcmV0dXJuIChwcm9wZXJ0eSA9PSBBbmltYXRlZFByb3Bl
cnR5QmFja2dyb3VuZENvbG9yKSA/IG1fY29udGVudHNMYXllckNsb25lcy5nZXQoKSA6IHByaW1h
cnlMYXllckNsb25lcygpOworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0RGVidWdCYWNr
Z3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQoreyAgICAKKyAgICBpZiAoY29sb3IuaXNW
YWxpZCgpKQorICAgICAgICBtX2xheWVyLT5zZXRCYWNrZ3JvdW5kQ29sb3IoY29sb3IpOworICAg
IGVsc2UKKyAgICAgICAgbV9sYXllci0+c2V0QmFja2dyb3VuZENvbG9yKENvbG9yOjp0cmFuc3Bh
cmVudCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXREZWJ1Z0JvcmRlcihjb25zdCBD
b2xvciYgY29sb3IsIGZsb2F0IGJvcmRlcldpZHRoKQoreyAgICAKKyAgICBpZiAoY29sb3IuaXNW
YWxpZCgpKSB7CisgICAgICAgIG1fbGF5ZXItPnNldEJvcmRlckNvbG9yKGNvbG9yKTsKKyAgICAg
ICAgbV9sYXllci0+c2V0Qm9yZGVyV2lkdGgoYm9yZGVyV2lkdGgpOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIG1fbGF5ZXItPnNldEJvcmRlckNvbG9yKENvbG9yOjp0cmFuc3BhcmVudCk7CisgICAg
ICAgIG1fbGF5ZXItPnNldEJvcmRlcldpZHRoKDApOworICAgIH0KK30KKworRmxvYXRTaXplIEdy
YXBoaWNzTGF5ZXJDQTo6Y29uc3RyYWluZWRTaXplKCkgY29uc3QKK3sKKyAgICBmbG9hdCB0aWxl
Q29sdW1ucyA9IGNlaWxmKG1fc2l6ZS53aWR0aCgpIC8ga1RpbGVkTGF5ZXJUaWxlU2l6ZSk7Cisg
ICAgZmxvYXQgdGlsZVJvd3MgPSBjZWlsZihtX3NpemUuaGVpZ2h0KCkgLyBrVGlsZWRMYXllclRp
bGVTaXplKTsKKyAgICBkb3VibGUgbnVtVGlsZXMgPSB0aWxlQ29sdW1ucyAqIHRpbGVSb3dzOwor
ICAgIAorICAgIEZsb2F0U2l6ZSBjb25zdHJhaW5lZFNpemUgPSBtX3NpemU7CisgICAgY29uc3Qg
dW5zaWduZWQgY01heFRpbGVDb3VudCA9IDUxMjsKKyAgICB3aGlsZSAobnVtVGlsZXMgPiBjTWF4
VGlsZUNvdW50KSB7CisgICAgICAgIC8vIENvbnN0cmFpbiB0aGUgd2lkZXIgZGltZW5zaW9uLgor
ICAgICAgICBpZiAoY29uc3RyYWluZWRTaXplLndpZHRoKCkgPj0gY29uc3RyYWluZWRTaXplLmhl
aWdodCgpKSB7CisgICAgICAgICAgICB0aWxlQ29sdW1ucyA9IG1heChmbG9vcmYoY01heFRpbGVD
b3VudCAvIHRpbGVSb3dzKSwgMS4wZik7CisgICAgICAgICAgICBjb25zdHJhaW5lZFNpemUuc2V0
V2lkdGgodGlsZUNvbHVtbnMgKiBrVGlsZWRMYXllclRpbGVTaXplKTsKKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIHRpbGVSb3dzID0gbWF4KGZsb29yZihjTWF4VGlsZUNvdW50IC8gdGls
ZUNvbHVtbnMpLCAxLjBmKTsKKyAgICAgICAgICAgIGNvbnN0cmFpbmVkU2l6ZS5zZXRIZWlnaHQo
dGlsZVJvd3MgKiBrVGlsZWRMYXllclRpbGVTaXplKTsKKyAgICAgICAgfQorICAgICAgICBudW1U
aWxlcyA9IHRpbGVDb2x1bW5zICogdGlsZVJvd3M7CisgICAgfQorICAgIAorICAgIHJldHVybiBj
b25zdHJhaW5lZFNpemU7Cit9CisKK2Jvb2wgR3JhcGhpY3NMYXllckNBOjpyZXF1aXJlc1RpbGVk
TGF5ZXIoY29uc3QgRmxvYXRTaXplJiBzaXplKSBjb25zdAoreworICAgIGlmICghbV9kcmF3c0Nv
bnRlbnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIEZJWE1FOiBjYXRjaCB6ZXJv
LXNpemUgaGVpZ2h0IG9yIHdpZHRoIGhlcmUgKG9yIGVhcmxpZXIpPworICAgIHJldHVybiBzaXpl
LndpZHRoKCkgPiBjTWF4UGl4ZWxEaW1lbnNpb24gfHwgc2l6ZS5oZWlnaHQoKSA+IGNNYXhQaXhl
bERpbWVuc2lvbjsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnN3YXBGcm9tT3JUb1RpbGVk
TGF5ZXIoYm9vbCB1c2VUaWxlZExheWVyKQoreworICAgIGlmICh1c2VUaWxlZExheWVyID09IG1f
dXNpbmdUaWxlZExheWVyKQorICAgICAgICByZXR1cm47CisKKyAgICBDR1NpemUgdGlsZVNpemUg
PSBDR1NpemVNYWtlKGtUaWxlZExheWVyVGlsZVNpemUsIGtUaWxlZExheWVyVGlsZVNpemUpOwor
CisgICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gb2xkTGF5ZXIgPSBtX2xheWVyOworICAgIAor
ICAgIG1fbGF5ZXIgPSBQbGF0Zm9ybUNBTGF5ZXI6OmNyZWF0ZSh1c2VUaWxlZExheWVyID8gUGxh
dGZvcm1DQUxheWVyOjpMYXllclR5cGVXZWJUaWxlZExheWVyIDogUGxhdGZvcm1DQUxheWVyOjpM
YXllclR5cGVXZWJMYXllciwgdGhpcyk7CisKKyAgICBtX3VzaW5nVGlsZWRMYXllciA9IHVzZVRp
bGVkTGF5ZXI7CisgICAgCisgICAgaWYgKHVzZVRpbGVkTGF5ZXIpIHsKKyNpZiAhSEFWRV9NT0RF
Uk5fUVVBUlRaQ09SRQorICAgICAgICAvLyBUaWxlZCBsYXllciBoYXMgaXNzdWVzIHdpdGggZmxp
cHBlZCBjb29yZGluYXRlcy4KKyAgICAgICAgc2V0Q29udGVudHNPcmllbnRhdGlvbihDb21wb3Np
dGluZ0Nvb3JkaW5hdGVzVG9wRG93bik7CisjZW5kaWYKKyAgICB9IGVsc2UgeworI2lmICFIQVZF
X01PREVSTl9RVUFSVFpDT1JFCisgICAgICAgIHNldENvbnRlbnRzT3JpZW50YXRpb24oR3JhcGhp
Y3NMYXllckNBOjpkZWZhdWx0Q29udGVudHNPcmllbnRhdGlvbigpKTsKKyNlbmRpZgorICAgIH0K
KworICAgIG1fbGF5ZXItPmFkb3B0U3VibGF5ZXJzKG9sZExheWVyLmdldCgpKTsKKyAgICAKKyAg
ICBvbGRMYXllci0+c3VwZXJsYXllcigpLT5yZXBsYWNlU3VibGF5ZXIob2xkTGF5ZXIuZ2V0KCks
IG1fbGF5ZXIuZ2V0KCkpOworCisgICAgdXBkYXRlQ29udGVudHNUcmFuc2Zvcm0oKTsKKworICAg
IHVwZGF0ZUxheWVyUG9zaXRpb24oKTsKKyAgICB1cGRhdGVMYXllclNpemUoKTsKKyAgICB1cGRh
dGVBbmNob3JQb2ludCgpOworICAgIHVwZGF0ZVRyYW5zZm9ybSgpOworICAgIHVwZGF0ZUNoaWxk
cmVuVHJhbnNmb3JtKCk7CisgICAgdXBkYXRlTWFza3NUb0JvdW5kcygpOworICAgIHVwZGF0ZUNv
bnRlbnRzT3BhcXVlKCk7CisgICAgdXBkYXRlQmFja2ZhY2VWaXNpYmlsaXR5KCk7CisgICAgdXBk
YXRlTGF5ZXJCYWNrZ3JvdW5kQ29sb3IoKTsKKyAgICAKKyAgICB1cGRhdGVPcGFjaXR5T25MYXll
cigpOworICAgIAorI2lmbmRlZiBOREVCVUcKKyAgICBTdHJpbmcgbmFtZSA9IFN0cmluZzo6Zm9y
bWF0KCJDQUxheWVyKCVwKSBHcmFwaGljc0xheWVyKCVwKSAiLCBtX2xheWVyLmdldCgpLCB0aGlz
KSArIG1fbmFtZTsKKyAgICBtX2xheWVyLT5zZXROYW1lKG5hbWUpOworI2VuZGlmCisKKyAgICAv
LyBtb3ZlIG92ZXIgYW5pbWF0aW9ucworICAgIG1vdmVPckNvcHlBbmltYXRpb25zRm9yUHJvcGVy
dHkoTW92ZSwgQW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybSwgb2xkTGF5ZXIuZ2V0KCks
IG1fbGF5ZXIuZ2V0KCkpOworICAgIG1vdmVPckNvcHlBbmltYXRpb25zRm9yUHJvcGVydHkoTW92
ZSwgQW5pbWF0ZWRQcm9wZXJ0eU9wYWNpdHksIG9sZExheWVyLmdldCgpLCBtX2xheWVyLmdldCgp
KTsKKyAgICBtb3ZlT3JDb3B5QW5pbWF0aW9uc0ZvclByb3BlcnR5KE1vdmUsIEFuaW1hdGVkUHJv
cGVydHlCYWNrZ3JvdW5kQ29sb3IsIG9sZExheWVyLmdldCgpLCBtX2xheWVyLmdldCgpKTsKKyAg
ICAKKyAgICAvLyBuZWVkIHRvIHRlbGwgbmV3IGxheWVyIHRvIGRyYXcgaXRzZWxmCisgICAgc2V0
TmVlZHNEaXNwbGF5KCk7CisgICAgCisgICAgdXBkYXRlRGVidWdJbmRpY2F0b3JzKCk7Cit9CisK
K0dyYXBoaWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBHcmFwaGlj
c0xheWVyQ0E6OmRlZmF1bHRDb250ZW50c09yaWVudGF0aW9uKCkgY29uc3QKK3sKKyNpZiAhSEFW
RV9NT0RFUk5fUVVBUlRaQ09SRQorICAgIC8vIE9sZGVyIFF1YXJ0ekNvcmUgZG9lcyBub3Qgc3Vw
cG9ydCAtZ2VvbWV0cnlGbGlwcGVkLCBzbyB3ZSBtYW51YWxseSBmbGlwIHRoZSByb290CisgICAg
Ly8gbGF5ZXIgZ2VvbWV0cnksIGFuZCB0aGVuIGZsaXAgdGhlIGNvbnRlbnRzIG9mIGVhY2ggbGF5
ZXIgYmFjayBzbyB0aGF0IHRoZSBDVE0gZm9yIENHCisgICAgLy8gaXMgdW5mbGlwcGVkLCBhbGxv
d2luZyBpdCB0byBkbyB0aGUgY29ycmVjdCBmb250IGF1dG8taGludGluZy4KKyAgICByZXR1cm4g
Q29tcG9zaXRpbmdDb29yZGluYXRlc0JvdHRvbVVwOworI2Vsc2UKKyAgICByZXR1cm4gQ29tcG9z
aXRpbmdDb29yZGluYXRlc1RvcERvd247CisjZW5kaWYKK30KKwordm9pZCBHcmFwaGljc0xheWVy
Q0E6OnVwZGF0ZUNvbnRlbnRzVHJhbnNmb3JtKCkKK3sKKyNpZiAhSEFWRV9NT0RFUk5fUVVBUlRa
Q09SRQorICAgIGlmIChjb250ZW50c09yaWVudGF0aW9uKCkgPT0gQ29tcG9zaXRpbmdDb29yZGlu
YXRlc0JvdHRvbVVwKSB7CisgICAgICAgIENHQWZmaW5lVHJhbnNmb3JtIGNvbnRlbnRzVHJhbnNm
b3JtID0gQ0dBZmZpbmVUcmFuc2Zvcm1NYWtlU2NhbGUoMSwgLTEpOworICAgICAgICBjb250ZW50
c1RyYW5zZm9ybSA9IENHQWZmaW5lVHJhbnNmb3JtVHJhbnNsYXRlKGNvbnRlbnRzVHJhbnNmb3Jt
LCAwLCAtbV9sYXllci0+Ym91bmRzKCkuc2l6ZSgpLmhlaWdodCgpKTsKKyAgICAgICAgVHJhbnNm
b3JtYXRpb25NYXRyaXggdHJhbnNmb3JtM0QoY29udGVudHNUcmFuc2Zvcm0uYSwgY29udGVudHNU
cmFuc2Zvcm0uYiwgY29udGVudHNUcmFuc2Zvcm0uYywgY29udGVudHNUcmFuc2Zvcm0uZCwgY29u
dGVudHNUcmFuc2Zvcm0udHgsIGNvbnRlbnRzVHJhbnNmb3JtLnR5KTsKKyAgICAgICAgbV9sYXll
ci0+c2V0Q29udGVudHNUcmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRyaXgodHJhbnNmb3JtM0Qp
KTsKKyAgICB9CisjZW5kaWYKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldHVwQ29udGVu
dHNMYXllcihQbGF0Zm9ybUNBTGF5ZXIqIGNvbnRlbnRzTGF5ZXIpCit7CisgICAgLy8gVHVybiBv
ZmYgaW1wbGljaXQgYW5pbWF0aW9ucyBvbiB0aGUgaW5uZXIgbGF5ZXIuCisgICAgY29udGVudHNM
YXllci0+c2V0TWFza3NUb0JvdW5kcyh0cnVlKTsKKworICAgIGlmIChkZWZhdWx0Q29udGVudHNP
cmllbnRhdGlvbigpID09IENvbXBvc2l0aW5nQ29vcmRpbmF0ZXNCb3R0b21VcCkgeworICAgICAg
ICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBmbGlwcGVyKAorICAgICAgICAgICAgMS4wZiwgMC4wZiwg
MC4wZiwgMC4wZiwKKyAgICAgICAgICAgIDAuMGYsIC0xLjBmLCAwLjBmLCAwLjBmLAorICAgICAg
ICAgICAgMC4wZiwgMC4wZiwgMS4wZiwgMC4wZiwKKyAgICAgICAgICAgIDAuMGYsIDAuMGYsIDAu
MGYsIDEuMGYpOworICAgICAgICBjb250ZW50c0xheWVyLT5zZXRUcmFuc2Zvcm0oZmxpcHBlcik7
CisgICAgICAgIGNvbnRlbnRzTGF5ZXItPnNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQzRCgwLCAx
LCAwKSk7CisgICAgfSBlbHNlCisgICAgICAgIGNvbnRlbnRzTGF5ZXItPnNldEFuY2hvclBvaW50
KEZsb2F0UG9pbnQzRCgpKTsKKworICAgIGlmIChzaG93RGVidWdCb3JkZXJzKCkpIHsKKyAgICAg
ICAgY29udGVudHNMYXllci0+c2V0Qm9yZGVyQ29sb3IoQ29sb3IoMCwgMCwgMTI4LCAxODApKTsK
KyAgICAgICAgY29udGVudHNMYXllci0+c2V0Qm9yZGVyV2lkdGgoMS4wZik7CisgICAgfQorfQor
CitQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gR3JhcGhpY3NMYXllckNBOjpmaW5kT3JNYWtl
Q2xvbmUoQ2xvbmVJRCBjbG9uZUlELCBQbGF0Zm9ybUNBTGF5ZXIgKnNvdXJjZUxheWVyLCBMYXll
ck1hcCogY2xvbmVzLCBDbG9uZUxldmVsIGNsb25lTGV2ZWwpCit7CisgICAgaWYgKCFzb3VyY2VM
YXllcikKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBy
ZXN1bHRMYXllcjsKKworICAgIC8vIEFkZCB3aXRoIGEgZHVtbXkgdmFsdWUgdG8gZ2V0IGFuIGl0
ZXJhdG9yIGZvciB0aGUgaW5zZXJ0aW9uIHBvc2l0aW9uLCBhbmQgYSBib29sZWFuIHRoYXQgdGVs
bHMKKyAgICAvLyB1cyB3aGV0aGVyIHRoZXJlJ3MgYW4gaXRlbSB0aGVyZS4gVGhpcyB0ZWNobmlx
dWUgYXZvaWRzIHR3byBoYXNoIGxvb2t1cHMuCisgICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4g
ZHVtbXk7CisgICAgcGFpcjxMYXllck1hcDo6aXRlcmF0b3IsIGJvb2w+IGFkZFJlc3VsdCA9IGNs
b25lcy0+YWRkKGNsb25lSUQsIGR1bW15KTsKKyAgICBpZiAoIWFkZFJlc3VsdC5zZWNvbmQpIHsK
KyAgICAgICAgLy8gVmFsdWUgd2FzIG5vdCBhZGRlZCwgc28gaXQgZXhpc3RzIGFscmVhZHkuCisg
ICAgICAgIHJlc3VsdExheWVyID0gYWRkUmVzdWx0LmZpcnN0LT5zZWNvbmQuZ2V0KCk7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgcmVzdWx0TGF5ZXIgPSBjbG9uZUxheWVyKHNvdXJjZUxheWVyLCBj
bG9uZUxldmVsKTsKKyNpZm5kZWYgTkRFQlVHCisgICAgICAgIHJlc3VsdExheWVyLT5zZXROYW1l
KFN0cmluZzo6Zm9ybWF0KCJDbG9uZSAlZCBvZiBsYXllciAlcCIsIGNsb25lSURbMFVdLCBzb3Vy
Y2VMYXllcikpOworI2VuZGlmCisgICAgICAgIGFkZFJlc3VsdC5maXJzdC0+c2Vjb25kID0gcmVz
dWx0TGF5ZXI7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdExheWVyOworfSAgIAorCit2b2lk
IEdyYXBoaWNzTGF5ZXJDQTo6ZW5zdXJlQ2xvbmVMYXllcnMoQ2xvbmVJRCBjbG9uZUlELCBSZWZQ
dHI8UGxhdGZvcm1DQUxheWVyPiYgcHJpbWFyeUxheWVyLCBSZWZQdHI8UGxhdGZvcm1DQUxheWVy
PiYgc3RydWN0dXJhbExheWVyLCBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiYgY29udGVudHNMYXll
ciwgQ2xvbmVMZXZlbCBjbG9uZUxldmVsKQoreworICAgIHN0cnVjdHVyYWxMYXllciA9IG5pbDsK
KyAgICBjb250ZW50c0xheWVyID0gbmlsOworCisgICAgaWYgKCFtX2xheWVyQ2xvbmVzKQorICAg
ICAgICBtX2xheWVyQ2xvbmVzID0gbmV3IExheWVyTWFwOworCisgICAgaWYgKCFtX3N0cnVjdHVy
YWxMYXllckNsb25lcyAmJiBtX3N0cnVjdHVyYWxMYXllcikKKyAgICAgICAgbV9zdHJ1Y3R1cmFs
TGF5ZXJDbG9uZXMgPSBuZXcgTGF5ZXJNYXA7CisKKyAgICBpZiAoIW1fY29udGVudHNMYXllckNs
b25lcyAmJiBtX2NvbnRlbnRzTGF5ZXIpCisgICAgICAgIG1fY29udGVudHNMYXllckNsb25lcyA9
IG5ldyBMYXllck1hcDsKKworICAgIHByaW1hcnlMYXllciA9IGZpbmRPck1ha2VDbG9uZShjbG9u
ZUlELCBtX2xheWVyLmdldCgpLCBtX2xheWVyQ2xvbmVzLmdldCgpLCBjbG9uZUxldmVsKTsKKyAg
ICBzdHJ1Y3R1cmFsTGF5ZXIgPSBmaW5kT3JNYWtlQ2xvbmUoY2xvbmVJRCwgbV9zdHJ1Y3R1cmFs
TGF5ZXIuZ2V0KCksIG1fc3RydWN0dXJhbExheWVyQ2xvbmVzLmdldCgpLCBjbG9uZUxldmVsKTsK
KyAgICBjb250ZW50c0xheWVyID0gZmluZE9yTWFrZUNsb25lKGNsb25lSUQsIG1fY29udGVudHNM
YXllci5nZXQoKSwgbV9jb250ZW50c0xheWVyQ2xvbmVzLmdldCgpLCBjbG9uZUxldmVsKTsKK30K
Kwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnJlbW92ZUNsb25lTGF5ZXJzKCkKK3sKKyAgICBtX2xh
eWVyQ2xvbmVzID0gMDsKKyAgICBtX3N0cnVjdHVyYWxMYXllckNsb25lcyA9IDA7CisgICAgbV9j
b250ZW50c0xheWVyQ2xvbmVzID0gMDsKK30KKworRmxvYXRQb2ludCBHcmFwaGljc0xheWVyQ0E6
OnBvc2l0aW9uRm9yQ2xvbmVSb290TGF5ZXIoKSBjb25zdAoreworICAgIC8vIFRoaXMgY2FuIGdl
dCBjYWxsZWQgZHVyaW5nIGEgc3luYyB3aGVuIHdlJ3ZlIGp1c3QgcmVtb3ZlZCB0aGUgbV9yZXBs
aWNhTGF5ZXIuCisgICAgaWYgKCFtX3JlcGxpY2FMYXllcikKKyAgICAgICAgcmV0dXJuIEZsb2F0
UG9pbnQoKTsKKworICAgIEZsb2F0UG9pbnQgcmVwbGljYVBvc2l0aW9uID0gbV9yZXBsaWNhTGF5
ZXItPnJlcGxpY2F0ZWRMYXllclBvc2l0aW9uKCk7CisgICAgcmV0dXJuIEZsb2F0UG9pbnQocmVw
bGljYVBvc2l0aW9uLngoKSArIG1fYW5jaG9yUG9pbnQueCgpICogbV9zaXplLndpZHRoKCksCisg
ICAgICAgICAgICAgICAgICAgICAgcmVwbGljYVBvc2l0aW9uLnkoKSArIG1fYW5jaG9yUG9pbnQu
eSgpICogbV9zaXplLmhlaWdodCgpKTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnByb3Bh
Z2F0ZUxheWVyQ2hhbmdlVG9SZXBsaWNhcygpCit7CisgICAgZm9yIChHcmFwaGljc0xheWVyKiBj
dXJyTGF5ZXIgPSB0aGlzOyBjdXJyTGF5ZXI7IGN1cnJMYXllciA9IGN1cnJMYXllci0+cGFyZW50
KCkpIHsKKyAgICAgICAgR3JhcGhpY3NMYXllckNBKiBjdXJyTGF5ZXJDQSA9IHN0YXRpY19jYXN0
PEdyYXBoaWNzTGF5ZXJDQSo+KGN1cnJMYXllcik7CisgICAgICAgIGlmICghY3VyckxheWVyQ0Et
Pmhhc0Nsb25lTGF5ZXJzKCkpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBpZiAoY3Vy
ckxheWVyQ0EtPnJlcGxpY2FMYXllcigpKQorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R3JhcGhp
Y3NMYXllckNBKj4oY3VyckxheWVyQ0EtPnJlcGxpY2FMYXllcigpKS0+bm90ZUxheWVyUHJvcGVy
dHlDaGFuZ2VkKFJlcGxpY2F0ZWRMYXllckNoYW5nZWQpOworICAgIH0KK30KKworUGFzc1JlZlB0
cjxQbGF0Zm9ybUNBTGF5ZXI+IEdyYXBoaWNzTGF5ZXJDQTo6ZmV0Y2hDbG9uZUxheWVycyhHcmFw
aGljc0xheWVyKiByZXBsaWNhUm9vdCwgUmVwbGljYVN0YXRlJiByZXBsaWNhU3RhdGUsIENsb25l
TGV2ZWwgY2xvbmVMZXZlbCkKK3sKKyAgICBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBwcmltYXJ5
TGF5ZXI7CisgICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gc3RydWN0dXJhbExheWVyOworICAg
IFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IGNvbnRlbnRzTGF5ZXI7CisgICAgZW5zdXJlQ2xvbmVM
YXllcnMocmVwbGljYVN0YXRlLmNsb25lSUQoKSwgcHJpbWFyeUxheWVyLCBzdHJ1Y3R1cmFsTGF5
ZXIsIGNvbnRlbnRzTGF5ZXIsIGNsb25lTGV2ZWwpOworCisgICAgaWYgKG1fbWFza0xheWVyKSB7
CisgICAgICAgIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IG1hc2tDbG9uZSA9IHN0YXRpY19jYXN0
PEdyYXBoaWNzTGF5ZXJDQSo+KG1fbWFza0xheWVyKS0+ZmV0Y2hDbG9uZUxheWVycyhyZXBsaWNh
Um9vdCwgcmVwbGljYVN0YXRlLCBJbnRlcm1lZGlhdGVDbG9uZUxldmVsKTsKKyAgICAgICAgcHJp
bWFyeUxheWVyLT5zZXRNYXNrKG1hc2tDbG9uZS5nZXQoKSk7CisgICAgfQorCisgICAgaWYgKG1f
cmVwbGljYXRlZExheWVyKSB7CisgICAgICAgIC8vIFdlIGFyZSBhIHJlcGxpY2EgYmVpbmcgYXNr
ZWQgZm9yIGNsb25lcyBvZiBvdXIgbGF5ZXJzLgorICAgICAgICBSZWZQdHI8UGxhdGZvcm1DQUxh
eWVyPiByZXBsaWNhUm9vdCA9IHJlcGxpY2F0ZWRMYXllclJvb3QocmVwbGljYVN0YXRlKTsKKyAg
ICAgICAgaWYgKCFyZXBsaWNhUm9vdCkKKyAgICAgICAgICAgIHJldHVybiBuaWw7CisKKyAgICAg
ICAgaWYgKHN0cnVjdHVyYWxMYXllcikgeworICAgICAgICAgICAgc3RydWN0dXJhbExheWVyLT5p
bnNlcnRTdWJsYXllcihyZXBsaWNhUm9vdC5nZXQoKSwgMCk7CisgICAgICAgICAgICByZXR1cm4g
c3RydWN0dXJhbExheWVyOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBwcmltYXJ5TGF5
ZXItPmluc2VydFN1YmxheWVyKHJlcGxpY2FSb290LmdldCgpLCAwKTsKKyAgICAgICAgcmV0dXJu
IHByaW1hcnlMYXllcjsKKyAgICB9CisKKyAgICBjb25zdCBWZWN0b3I8R3JhcGhpY3NMYXllcio+
JiBjaGlsZExheWVycyA9IGNoaWxkcmVuKCk7CisgICAgVmVjdG9yPFJlZlB0cjxQbGF0Zm9ybUNB
TGF5ZXI+ID4gY2xvbmFsU3VibGF5ZXJzOworCisgICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4g
cmVwbGljYUxheWVyOworICAgIAorICAgIGlmIChtX3JlcGxpY2FMYXllciAmJiBtX3JlcGxpY2FM
YXllciAhPSByZXBsaWNhUm9vdCkgeworICAgICAgICAvLyBXZSBoYXZlIG5lc3RlZCByZXBsaWNh
cy4gQXNrIHRoZSByZXBsaWNhIGxheWVyIGZvciBhIGNsb25lIG9mIGl0cyBjb250ZW50cy4KKyAg
ICAgICAgcmVwbGljYVN0YXRlLnNldEJyYW5jaFR5cGUoUmVwbGljYVN0YXRlOjpSZXBsaWNhQnJh
bmNoKTsKKyAgICAgICAgcmVwbGljYUxheWVyID0gc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllckNB
Kj4obV9yZXBsaWNhTGF5ZXIpLT5mZXRjaENsb25lTGF5ZXJzKHJlcGxpY2FSb290LCByZXBsaWNh
U3RhdGUsIFJvb3RDbG9uZUxldmVsKTsKKyAgICAgICAgcmVwbGljYVN0YXRlLnNldEJyYW5jaFR5
cGUoUmVwbGljYVN0YXRlOjpDaGlsZEJyYW5jaCk7CisgICAgfQorICAgIAorICAgIGlmIChyZXBs
aWNhTGF5ZXIgfHwgc3RydWN0dXJhbExheWVyIHx8IGNvbnRlbnRzTGF5ZXIgfHwgY2hpbGRMYXll
cnMuc2l6ZSgpID4gMCkgeworICAgICAgICBpZiAoc3RydWN0dXJhbExheWVyKSB7CisgICAgICAg
ICAgICAvLyBSZXBsaWNhcyByZW5kZXIgYmVoaW5kIHRoZSBhY3R1YWwgbGF5ZXIgY29udGVudC4K
KyAgICAgICAgICAgIGlmIChyZXBsaWNhTGF5ZXIpCisgICAgICAgICAgICAgICAgY2xvbmFsU3Vi
bGF5ZXJzLmFwcGVuZChyZXBsaWNhTGF5ZXIpOworICAgICAgICAgICAgICAgIAorICAgICAgICAg
ICAgLy8gQWRkIHRoZSBwcmltYXJ5IGxheWVyIG5leHQuIEV2ZW4gaWYgd2UgaGF2ZSBuZWdhdGl2
ZSB6LW9yZGVyIGNoaWxkcmVuLCB0aGUgcHJpbWFyeSBsYXllciBhbHdheXMgY29tZXMgYmVoaW5k
LgorICAgICAgICAgICAgY2xvbmFsU3VibGF5ZXJzLmFwcGVuZChwcmltYXJ5TGF5ZXIpOworICAg
ICAgICB9IGVsc2UgaWYgKGNvbnRlbnRzTGF5ZXIpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBh
ZGQgdGhlIGNvbnRlbnRzIGxheWVyIGluIHRoZSBjb3JyZWN0IG9yZGVyIHdpdGggbmVnYXRpdmUg
ei1vcmRlciBjaGlsZHJlbi4KKyAgICAgICAgICAgIC8vIFRoaXMgZG9lcyBub3QgY2F1c2Ugdmlz
aWJsZSByZW5kZXJpbmcgaXNzdWVzIGJlY2F1c2UgY3VycmVudGx5IGNvbnRlbnRzIGxheWVycyBh
cmUgb25seSB1c2VkCisgICAgICAgICAgICAvLyBmb3IgcmVwbGFjZWQgZWxlbWVudHMgdGhhdCBk
b24ndCBoYXZlIGNoaWxkcmVuLgorICAgICAgICAgICAgY2xvbmFsU3VibGF5ZXJzLmFwcGVuZChj
b250ZW50c0xheWVyKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcmVwbGljYVN0YXRl
LnB1c2goUmVwbGljYVN0YXRlOjpDaGlsZEJyYW5jaCk7CisKKyAgICAgICAgc2l6ZV90IG51bUNo
aWxkcmVuID0gY2hpbGRMYXllcnMuc2l6ZSgpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IG51bUNoaWxkcmVuOyArK2kpIHsKKyAgICAgICAgICAgIEdyYXBoaWNzTGF5ZXJDQSogY3Vy
Q2hpbGQgPSBzdGF0aWNfY2FzdDxHcmFwaGljc0xheWVyQ0EqPihjaGlsZExheWVyc1tpXSk7CisK
KyAgICAgICAgICAgIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IGNoaWxkTGF5ZXIgPSBjdXJDaGls
ZC0+ZmV0Y2hDbG9uZUxheWVycyhyZXBsaWNhUm9vdCwgcmVwbGljYVN0YXRlLCBJbnRlcm1lZGlh
dGVDbG9uZUxldmVsKTsKKyAgICAgICAgICAgIGlmIChjaGlsZExheWVyKQorICAgICAgICAgICAg
ICAgIGNsb25hbFN1YmxheWVycy5hcHBlbmQoY2hpbGRMYXllcik7CisgICAgICAgIH0KKworICAg
ICAgICByZXBsaWNhU3RhdGUucG9wKCk7CisKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBjbG9uYWxTdWJsYXllcnMuc2l6ZSgpOyArK2kpCisgICAgICAgICAgICBjbG9uYWxTdWJsYXll
cnNbaV0tPnJlbW92ZUZyb21TdXBlcmxheWVyKCk7CisgICAgfQorICAgIAorICAgIFJlZlB0cjxQ
bGF0Zm9ybUNBTGF5ZXI+IHJlc3VsdDsKKyAgICBpZiAoc3RydWN0dXJhbExheWVyKSB7CisgICAg
ICAgIHN0cnVjdHVyYWxMYXllci0+c2V0U3VibGF5ZXJzKGNsb25hbFN1YmxheWVycyk7CisKKyAg
ICAgICAgaWYgKGNvbnRlbnRzTGF5ZXIpIHsKKyAgICAgICAgICAgIC8vIElmIHdlIGhhdmUgYSB0
cmFuc2Zvcm0gbGF5ZXIsIHRoZW4gdGhlIGNvbnRlbnRzIGxheWVyIGlzIHBhcmVudGVkIGluIHRo
ZSAKKyAgICAgICAgICAgIC8vIHByaW1hcnkgbGF5ZXIgKHdoaWNoIGlzIGl0c2VsZiBhIGNoaWxk
IG9mIHRoZSB0cmFuc2Zvcm0gbGF5ZXIpLgorICAgICAgICAgICAgcHJpbWFyeUxheWVyLT5yZW1v
dmVBbGxTdWJsYXllcnMoKTsKKyAgICAgICAgICAgIHByaW1hcnlMYXllci0+YXBwZW5kU3VibGF5
ZXIoY29udGVudHNMYXllci5nZXQoKSk7CisgICAgICAgIH0KKworICAgICAgICByZXN1bHQgPSBz
dHJ1Y3R1cmFsTGF5ZXI7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcHJpbWFyeUxheWVyLT5zZXRT
dWJsYXllcnMoY2xvbmFsU3VibGF5ZXJzKTsKKyAgICAgICAgcmVzdWx0ID0gcHJpbWFyeUxheWVy
OworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK1Bhc3NSZWZQdHI8UGxhdGZvcm1D
QUxheWVyPiBHcmFwaGljc0xheWVyQ0E6OmNsb25lTGF5ZXIoUGxhdGZvcm1DQUxheWVyICpsYXll
ciwgQ2xvbmVMZXZlbCBjbG9uZUxldmVsKQoreworICAgIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJU
eXBlIGxheWVyVHlwZSA9IChsYXllci0+bGF5ZXJUeXBlKCkgPT0gUGxhdGZvcm1DQUxheWVyOjpM
YXllclR5cGVUcmFuc2Zvcm1MYXllcikgPyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlVHJhbnNmb3JtTGF5
ZXIgOiBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUxheWVyOworICAgIFJlZlB0cjxQbGF0Zm9y
bUNBTGF5ZXI+IG5ld0xheWVyID0gUGxhdGZvcm1DQUxheWVyOjpjcmVhdGUobGF5ZXJUeXBlLCB0
aGlzKTsKKyAgICAKKyAgICBuZXdMYXllci0+c2V0UG9zaXRpb24obGF5ZXItPnBvc2l0aW9uKCkp
OworICAgIG5ld0xheWVyLT5zZXRCb3VuZHMobGF5ZXItPmJvdW5kcygpKTsKKyAgICBuZXdMYXll
ci0+c2V0QW5jaG9yUG9pbnQobGF5ZXItPmFuY2hvclBvaW50KCkpOworICAgIG5ld0xheWVyLT5z
ZXRUcmFuc2Zvcm0obGF5ZXItPnRyYW5zZm9ybSgpKTsKKyAgICBuZXdMYXllci0+c2V0U3VibGF5
ZXJUcmFuc2Zvcm0obGF5ZXItPnN1YmxheWVyVHJhbnNmb3JtKCkpOworICAgIG5ld0xheWVyLT5z
ZXRDb250ZW50cyhsYXllci0+Y29udGVudHMoKSk7CisgICAgbmV3TGF5ZXItPnNldE1hc2tzVG9C
b3VuZHMobGF5ZXItPm1hc2tzVG9Cb3VuZHMoKSk7CisgICAgbmV3TGF5ZXItPnNldERvdWJsZVNp
ZGVkKGxheWVyLT5pc0RvdWJsZVNpZGVkKCkpOworICAgIG5ld0xheWVyLT5zZXRPcGFxdWUobGF5
ZXItPmlzT3BhcXVlKCkpOworICAgIG5ld0xheWVyLT5zZXRCYWNrZ3JvdW5kQ29sb3IobGF5ZXIt
PmJhY2tncm91bmRDb2xvcigpKTsKKworICAgIGlmIChjbG9uZUxldmVsID09IEludGVybWVkaWF0
ZUNsb25lTGV2ZWwpIHsKKyAgICAgICAgbmV3TGF5ZXItPnNldE9wYWNpdHkobGF5ZXItPm9wYWNp
dHkoKSk7CisgICAgICAgIG1vdmVPckNvcHlBbmltYXRpb25zRm9yUHJvcGVydHkoQ29weSwgQW5p
bWF0ZWRQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybSwgbGF5ZXIsIG5ld0xheWVyLmdldCgpKTsKKyAg
ICAgICAgbW92ZU9yQ29weUFuaW1hdGlvbnNGb3JQcm9wZXJ0eShDb3B5LCBBbmltYXRlZFByb3Bl
cnR5T3BhY2l0eSwgbGF5ZXIsIG5ld0xheWVyLmdldCgpKTsKKyAgICB9CisgICAgCisgICAgaWYg
KHNob3dEZWJ1Z0JvcmRlcnMoKSkgeworICAgICAgICBuZXdMYXllci0+c2V0Qm9yZGVyQ29sb3Io
Q29sb3IoMjU1LCAxMjIsIDI1MSkpOworICAgICAgICBuZXdMYXllci0+c2V0Qm9yZGVyV2lkdGgo
Mik7CisgICAgfQorICAgIAorICAgIHJldHVybiBuZXdMYXllcjsKK30KKwordm9pZCBHcmFwaGlj
c0xheWVyQ0E6OnNldE9wYWNpdHlJbnRlcm5hbChmbG9hdCBhY2N1bXVsYXRlZE9wYWNpdHkpCit7
CisgICAgTGF5ZXJNYXAqIGxheWVyQ2xvbmVNYXAgPSAwOworICAgIAorICAgIGlmIChwcmVzZXJ2
ZXMzRCgpKSB7CisgICAgICAgIG1fbGF5ZXItPnNldE9wYWNpdHkoYWNjdW11bGF0ZWRPcGFjaXR5
KTsKKyAgICAgICAgbGF5ZXJDbG9uZU1hcCA9IG1fbGF5ZXJDbG9uZXMuZ2V0KCk7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgcHJpbWFyeUxheWVyKCktPnNldE9wYWNpdHkoYWNjdW11bGF0ZWRPcGFj
aXR5KTsKKyAgICAgICAgbGF5ZXJDbG9uZU1hcCA9IHByaW1hcnlMYXllckNsb25lcygpOworICAg
IH0KKworICAgIGlmIChsYXllckNsb25lTWFwKSB7CisgICAgICAgIExheWVyTWFwOjpjb25zdF9p
dGVyYXRvciBlbmQgPSBsYXllckNsb25lTWFwLT5lbmQoKTsKKyAgICAgICAgZm9yIChMYXllck1h
cDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBsYXllckNsb25lTWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7
ICsraXQpIHsKKyAgICAgICAgICAgIGlmIChtX3JlcGxpY2FMYXllciAmJiBpc1JlcGxpY2F0ZWRS
b290Q2xvbmUoaXQtPmZpcnN0KSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
ICAgIGl0LT5zZWNvbmQtPnNldE9wYWNpdHkobV9vcGFjaXR5KTsKKyAgICAgICAgfQorICAgIH0K
K30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZU9wYWNpdHlPbkxheWVyKCkKK3sKKyNp
ZiAhSEFWRV9NT0RFUk5fUVVBUlRaQ09SRQorICAgIC8vIERpc3RyaWJ1dGUgb3BhY2l0eSBlaXRo
ZXIgdG8gb3VyIG93biBsYXllciBvciB0byBvdXIgY2hpbGRyZW4uIFdlIHBhc3MgaW4gdGhlIAor
ICAgIC8vIGNvbnRyaWJ1dGlvbiBmcm9tIG91ciBwYXJlbnQocykuCisgICAgZGlzdHJpYnV0ZU9w
YWNpdHkocGFyZW50KCkgPyBwYXJlbnQoKS0+YWNjdW11bGF0ZWRPcGFjaXR5KCkgOiAxKTsKKyNl
bHNlCisgICAgcHJpbWFyeUxheWVyKCktPnNldE9wYWNpdHkobV9vcGFjaXR5KTsKKworICAgIGlm
IChMYXllck1hcCogbGF5ZXJDbG9uZU1hcCA9IHByaW1hcnlMYXllckNsb25lcygpKSB7CisgICAg
ICAgIExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBsYXllckNsb25lTWFwLT5lbmQoKTsK
KyAgICAgICAgZm9yIChMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBsYXllckNsb25lTWFw
LT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgICAgIGlmIChtX3JlcGxpY2FM
YXllciAmJiBpc1JlcGxpY2F0ZWRSb290Q2xvbmUoaXQtPmZpcnN0KSkKKyAgICAgICAgICAgICAg
ICBjb250aW51ZTsKKworICAgICAgICAgICAgaXQtPnNlY29uZC0+c2V0T3BhY2l0eShtX29wYWNp
dHkpOworICAgICAgICB9CisgICAgICAgIAorICAgIH0KKyNlbmRpZgorfQorCit2b2lkIEdyYXBo
aWNzTGF5ZXJDQTo6bm90ZVN1YmxheWVyc0NoYW5nZWQoKQoreworICAgIG5vdGVMYXllclByb3Bl
cnR5Q2hhbmdlZChDaGlsZHJlbkNoYW5nZWQpOworICAgIHByb3BhZ2F0ZUxheWVyQ2hhbmdlVG9S
ZXBsaWNhcygpOworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6bm90ZUxheWVyUHJvcGVydHlD
aGFuZ2VkKExheWVyQ2hhbmdlRmxhZ3MgZmxhZ3MpCit7CisgICAgaWYgKCFtX3VuY29tbWl0dGVk
Q2hhbmdlcyAmJiBtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPm5vdGlmeVN5bmNSZXF1aXJl
ZCh0aGlzKTsKKworICAgIG1fdW5jb21taXR0ZWRDaGFuZ2VzIHw9IGZsYWdzOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJ
TkcpCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXll
ckNBLmgJKHJldmlzaW9uIDczMjM2KQkoZnJvbSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L0dyYXBoaWNzTGF5ZXJDQS5oOjczMjM2KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS9HcmFwaGljc0xheWVyQ0EuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM4MyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lm
bmRlZiBHcmFwaGljc0xheWVyQ0FfaAorI2RlZmluZSBHcmFwaGljc0xheWVyQ0FfaAorCisjaWYg
VVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5o
IgorI2luY2x1ZGUgIkltYWdlLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1DQUFuaW1hdGlvbi5oIgor
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNs
dWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFBsYXRmb3JtQ0FMYXllcjsKKworY2xhc3Mg
R3JhcGhpY3NMYXllckNBIDogcHVibGljIEdyYXBoaWNzTGF5ZXIgeworcHVibGljOgorICAgIC8v
IFRoZSB3aWR0aCBhbmQgaGVpZ2h0IG9mIGEgc2luZ2xlIHRpbGUgaW4gYSB0aWxlZCBsYXllci4g
U2hvdWxkIGJlIGxhcmdlIGVub3VnaCB0bworICAgIC8vIGF2b2lkIGxvdHMgb2Ygc21hbGwgdGls
ZXMgKGFuZCB0aGVyZWZvcmUgbG90cyBvZiBkcmF3aW5nIGNhbGxiYWNrcyksIGJ1dCBzbWFsbCBl
bm91Z2gKKyAgICAvLyB0byBrZWVwIHRoZSBvdmVyYWxsIHRpbGUgY29zdCBsb3cuCisgICAgc3Rh
dGljIGNvbnN0IGludCBrVGlsZWRMYXllclRpbGVTaXplID0gNTEyOworCisgICAgR3JhcGhpY3NM
YXllckNBKEdyYXBoaWNzTGF5ZXJDbGllbnQqKTsKKyAgICB2aXJ0dWFsIH5HcmFwaGljc0xheWVy
Q0EoKTsKKyAgICAKKyAgICB2aXJ0dWFsIHZvaWQgYW5pbWF0aW9uU3RhcnRlZChDRlRpbWVJbnRl
cnZhbCBiZWdpblRpbWUpOworCisgICAgdmlydHVhbCB2b2lkIHNldE5hbWUoY29uc3QgU3RyaW5n
Jik7CisKKyAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdDsK
KworICAgIHZpcnR1YWwgYm9vbCBzZXRDaGlsZHJlbihjb25zdCBWZWN0b3I8R3JhcGhpY3NMYXll
cio+Jik7CisgICAgdmlydHVhbCB2b2lkIGFkZENoaWxkKEdyYXBoaWNzTGF5ZXIqKTsKKyAgICB2
aXJ0dWFsIHZvaWQgYWRkQ2hpbGRBdEluZGV4KEdyYXBoaWNzTGF5ZXIqLCBpbnQgaW5kZXgpOwor
ICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZEFib3ZlKEdyYXBoaWNzTGF5ZXIqIGxheWVyLCBHcmFw
aGljc0xheWVyKiBzaWJsaW5nKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGRCZWxvdyhHcmFw
aGljc0xheWVyKiBsYXllciwgR3JhcGhpY3NMYXllciogc2libGluZyk7CisgICAgdmlydHVhbCBi
b29sIHJlcGxhY2VDaGlsZChHcmFwaGljc0xheWVyKiBvbGRDaGlsZCwgR3JhcGhpY3NMYXllciog
bmV3Q2hpbGQpOworCisgICAgdmlydHVhbCB2b2lkIHJlbW92ZUZyb21QYXJlbnQoKTsKKworICAg
IHZpcnR1YWwgdm9pZCBzZXRNYXNrTGF5ZXIoR3JhcGhpY3NMYXllciopOworICAgIHZpcnR1YWwg
dm9pZCBzZXRSZXBsaWNhdGVkTGF5ZXIoR3JhcGhpY3NMYXllciopOworCisgICAgdmlydHVhbCB2
b2lkIHNldFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
QW5jaG9yUG9pbnQoY29uc3QgRmxvYXRQb2ludDNEJik7CisgICAgdmlydHVhbCB2b2lkIHNldFNp
emUoY29uc3QgRmxvYXRTaXplJik7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VHJhbnNmb3JtKGNv
bnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4Jik7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q2hpbGRy
ZW5UcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKTsKKworICAgIHZpcnR1YWwg
dm9pZCBzZXRQcmVzZXJ2ZXMzRChib29sKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0TWFza3NUb0Jv
dW5kcyhib29sKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RHJhd3NDb250ZW50KGJvb2wpOworCisg
ICAgdmlydHVhbCB2b2lkIHNldEJhY2tncm91bmRDb2xvcihjb25zdCBDb2xvciYpOworICAgIHZp
cnR1YWwgdm9pZCBjbGVhckJhY2tncm91bmRDb2xvcigpOworCisgICAgdmlydHVhbCB2b2lkIHNl
dENvbnRlbnRzT3BhcXVlKGJvb2wpOworICAgIHZpcnR1YWwgdm9pZCBzZXRCYWNrZmFjZVZpc2li
aWxpdHkoYm9vbCk7CisKKyAgICAvLyByZXR1cm4gdHJ1ZSBpZiB3ZSBzdGFydGVkIGFuIGFuaW1h
dGlvbgorICAgIHZpcnR1YWwgdm9pZCBzZXRPcGFjaXR5KGZsb2F0KTsKKworICAgIHZpcnR1YWwg
dm9pZCBzZXROZWVkc0Rpc3BsYXkoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNEaXNwbGF5
SW5SZWN0KGNvbnN0IEZsb2F0UmVjdCYpOworICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c05l
ZWRzRGlzcGxheSgpOworICAgIAorICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1JlY3QoY29u
c3QgSW50UmVjdCYpOworICAgIAorICAgIHZpcnR1YWwgdm9pZCBzdXNwZW5kQW5pbWF0aW9ucyhk
b3VibGUgdGltZSk7CisgICAgdmlydHVhbCB2b2lkIHJlc3VtZUFuaW1hdGlvbnMoKTsKKworICAg
IHZpcnR1YWwgYm9vbCBhZGRBbmltYXRpb24oY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmLCBjb25z
dCBJbnRTaXplJiBib3hTaXplLCBjb25zdCBBbmltYXRpb24qLCBjb25zdCBTdHJpbmcmIGFuaW1h
dGlvbk5hbWUsIGRvdWJsZSB0aW1lT2Zmc2V0KTsKKyAgICB2aXJ0dWFsIHZvaWQgcGF1c2VBbmlt
YXRpb24oY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBkb3VibGUgdGltZU9mZnNldCk7Cisg
ICAgdmlydHVhbCB2b2lkIHJlbW92ZUFuaW1hdGlvbihjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5h
bWUpOworCisgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzVG9JbWFnZShJbWFnZSopOworICAg
IHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1RvTWVkaWEoUGxhdGZvcm1MYXllciopOworICAgIHZp
cnR1YWwgdm9pZCBzZXRDb250ZW50c1RvQ2FudmFzKFBsYXRmb3JtTGF5ZXIqKTsKKworICAgIHZp
cnR1YWwgYm9vbCBoYXNDb250ZW50c0xheWVyKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50c0xh
eWVyOyB9CisgICAgCisgICAgdmlydHVhbCB2b2lkIHNldERlYnVnQmFja2dyb3VuZENvbG9yKGNv
bnN0IENvbG9yJik7CisgICAgdmlydHVhbCB2b2lkIHNldERlYnVnQm9yZGVyKGNvbnN0IENvbG9y
JiwgZmxvYXQgYm9yZGVyV2lkdGgpOworCisgICAgdmlydHVhbCB2b2lkIGRpZERpc3BsYXkoUGxh
dGZvcm1MYXllciopOworCisgICAgdm9pZCByZWN1cnNpdmVDb21taXRDaGFuZ2VzKCk7CisKKyAg
ICB2aXJ0dWFsIHZvaWQgc3luY0NvbXBvc2l0aW5nU3RhdGUoKTsKKyAgICB2aXJ0dWFsIHZvaWQg
c3luY0NvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KCk7CisKK3Byb3RlY3RlZDoKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0T3BhY2l0eUludGVybmFsKGZsb2F0KTsKKworcHJpdmF0ZToKKyAg
ICB2b2lkIHVwZGF0ZU9wYWNpdHlPbkxheWVyKCk7CisKKyAgICBQbGF0Zm9ybUNBTGF5ZXIqIHBy
aW1hcnlMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fc3RydWN0dXJhbExheWVyLmdldCgpID8gbV9z
dHJ1Y3R1cmFsTGF5ZXIuZ2V0KCkgOiBtX2xheWVyLmdldCgpOyB9CisgICAgUGxhdGZvcm1DQUxh
eWVyKiBob3N0TGF5ZXJGb3JTdWJsYXllcnMoKSBjb25zdDsKKyAgICBQbGF0Zm9ybUNBTGF5ZXIq
IGxheWVyRm9yU3VwZXJsYXllcigpIGNvbnN0OworICAgIFBsYXRmb3JtQ0FMYXllciogYW5pbWF0
ZWRMYXllcihBbmltYXRlZFByb3BlcnR5SUQpIGNvbnN0OworCisgICAgdHlwZWRlZiBTdHJpbmcg
Q2xvbmVJRDsgLy8gSWRlbnRpZmllciBmb3IgYSBnaXZlbiBjbG9uZSwgYmFzZWQgb24gb3JpZ2lu
YWwvcmVwbGljYSBicmFuY2hpbmcgZG93biB0aGUgdHJlZS4KKyAgICBzdGF0aWMgYm9vbCBpc1Jl
cGxpY2F0ZWRSb290Q2xvbmUoY29uc3QgQ2xvbmVJRCYgY2xvbmVJRCkgeyByZXR1cm4gY2xvbmVJ
RFswVV0gJiAxOyB9CisKKyAgICB0eXBlZGVmIEhhc2hNYXA8Q2xvbmVJRCwgUmVmUHRyPFBsYXRm
b3JtQ0FMYXllcj4gPiBMYXllck1hcDsKKyAgICBMYXllck1hcCogcHJpbWFyeUxheWVyQ2xvbmVz
KCkgY29uc3QgeyByZXR1cm4gbV9zdHJ1Y3R1cmFsTGF5ZXIuZ2V0KCkgPyBtX3N0cnVjdHVyYWxM
YXllckNsb25lcy5nZXQoKSA6IG1fbGF5ZXJDbG9uZXMuZ2V0KCk7IH0KKyAgICBMYXllck1hcCog
YW5pbWF0ZWRMYXllckNsb25lcyhBbmltYXRlZFByb3BlcnR5SUQpIGNvbnN0OworCisgICAgYm9v
bCBjcmVhdGVBbmltYXRpb25Gcm9tS2V5ZnJhbWVzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0Jiwg
Y29uc3QgQW5pbWF0aW9uKiwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBkb3VibGUgdGlt
ZU9mZnNldCk7CisgICAgYm9vbCBjcmVhdGVUcmFuc2Zvcm1BbmltYXRpb25zRnJvbUtleWZyYW1l
cyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYsIGNvbnN0IEFuaW1hdGlvbiosIGNvbnN0IFN0cmlu
ZyYgYW5pbWF0aW9uTmFtZSwgZG91YmxlIHRpbWVPZmZzZXQsIGNvbnN0IEludFNpemUmIGJveFNp
emUpOworCisgICAgLy8gUmV0dXJuIGF1dG9yZWxlYXNlZCBhbmltYXRpb24gKHVzZSBSZXRhaW5Q
dHI/KQorICAgIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gY3JlYXRlQmFzaWNBbmlt
YXRpb24oY29uc3QgQW5pbWF0aW9uKiwgQW5pbWF0ZWRQcm9wZXJ0eUlELCBib29sIGFkZGl0aXZl
KTsKKyAgICBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IGNyZWF0ZUtleWZyYW1lQW5p
bWF0aW9uKGNvbnN0IEFuaW1hdGlvbiosIEFuaW1hdGVkUHJvcGVydHlJRCwgYm9vbCBhZGRpdGl2
ZSk7CisgICAgdm9pZCBzZXR1cEFuaW1hdGlvbihQbGF0Zm9ybUNBQW5pbWF0aW9uKiwgY29uc3Qg
QW5pbWF0aW9uKiwgYm9vbCBhZGRpdGl2ZSk7CisgICAgCisgICAgY29uc3QgVGltaW5nRnVuY3Rp
b24qIHRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUoY29uc3QgQW5pbWF0aW9uVmFsdWUq
LCBjb25zdCBBbmltYXRpb24qKTsKKyAgICAKKyAgICBib29sIHNldEFuaW1hdGlvbkVuZHBvaW50
cyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYsIGNvbnN0IEFuaW1hdGlvbiosIFBsYXRmb3JtQ0FB
bmltYXRpb24qKTsKKyAgICBib29sIHNldEFuaW1hdGlvbktleWZyYW1lcyhjb25zdCBLZXlmcmFt
ZVZhbHVlTGlzdCYsIGNvbnN0IEFuaW1hdGlvbiosIFBsYXRmb3JtQ0FBbmltYXRpb24qKTsKKwor
ICAgIGJvb2wgc2V0VHJhbnNmb3JtQW5pbWF0aW9uRW5kcG9pbnRzKGNvbnN0IEtleWZyYW1lVmFs
dWVMaXN0JiwgY29uc3QgQW5pbWF0aW9uKiwgUGxhdGZvcm1DQUFuaW1hdGlvbiosIGludCBmdW5j
dGlvbkluZGV4LCBUcmFuc2Zvcm1PcGVyYXRpb246Ok9wZXJhdGlvblR5cGUsIGJvb2wgaXNNYXRy
aXhBbmltYXRpb24sIGNvbnN0IEludFNpemUmIGJveFNpemUpOworICAgIGJvb2wgc2V0VHJhbnNm
b3JtQW5pbWF0aW9uS2V5ZnJhbWVzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiwgY29uc3QgQW5p
bWF0aW9uKiwgUGxhdGZvcm1DQUFuaW1hdGlvbiosIGludCBmdW5jdGlvbkluZGV4LCBUcmFuc2Zv
cm1PcGVyYXRpb246Ok9wZXJhdGlvblR5cGUsIGJvb2wgaXNNYXRyaXhBbmltYXRpb24sIGNvbnN0
IEludFNpemUmIGJveFNpemUpOworICAgIAorICAgIGJvb2wgYW5pbWF0aW9uSXNSdW5uaW5nKGNv
bnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBt
X3J1bm5pbmdBbmltYXRpb25zLmZpbmQoYW5pbWF0aW9uTmFtZSkgIT0gbV9ydW5uaW5nQW5pbWF0
aW9ucy5lbmQoKTsKKyAgICB9CisKKyAgICB2b2lkIGNvbW1pdExheWVyQ2hhbmdlc0JlZm9yZVN1
YmxheWVycygpOworICAgIHZvaWQgY29tbWl0TGF5ZXJDaGFuZ2VzQWZ0ZXJTdWJsYXllcnMoKTsK
KworICAgIEZsb2F0U2l6ZSBjb25zdHJhaW5lZFNpemUoKSBjb25zdDsKKworICAgIGJvb2wgcmVx
dWlyZXNUaWxlZExheWVyKGNvbnN0IEZsb2F0U2l6ZSYpIGNvbnN0OworICAgIHZvaWQgc3dhcEZy
b21PclRvVGlsZWRMYXllcihib29sIHVzZVRpbGVkTGF5ZXIpOworCisgICAgQ29tcG9zaXRpbmdD
b29yZGluYXRlc09yaWVudGF0aW9uIGRlZmF1bHRDb250ZW50c09yaWVudGF0aW9uKCkgY29uc3Q7
CisgICAgdm9pZCB1cGRhdGVDb250ZW50c1RyYW5zZm9ybSgpOworICAgIAorICAgIHZvaWQgc2V0
dXBDb250ZW50c0xheWVyKFBsYXRmb3JtQ0FMYXllciopOworICAgIFBsYXRmb3JtQ0FMYXllciog
Y29udGVudHNMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudHNMYXllci5nZXQoKTsgfQor
CisgICAgdmlydHVhbCB2b2lkIHNldFJlcGxpY2F0ZWRCeUxheWVyKEdyYXBoaWNzTGF5ZXIqKTsK
KworICAgIC8vIFVzZWQgdG8gdHJhY2sgdGhlIHBhdGggZG93biB0aGUgdHJlZSBmb3IgcmVwbGlj
YSBsYXllcnMuCisgICAgc3RydWN0IFJlcGxpY2FTdGF0ZSB7CisgICAgICAgIHN0YXRpYyBjb25z
dCBzaXplX3QgbWF4UmVwbGljYURlcHRoID0gMTY7CisgICAgICAgIGVudW0gUmVwbGljYUJyYW5j
aFR5cGUgeyBDaGlsZEJyYW5jaCA9IDAsIFJlcGxpY2FCcmFuY2ggPSAxIH07CisgICAgICAgIFJl
cGxpY2FTdGF0ZShSZXBsaWNhQnJhbmNoVHlwZSBmaXJzdEJyYW5jaCkKKyAgICAgICAgICAgIDog
bV9yZXBsaWNhRGVwdGgoMCkKKyAgICAgICAgeworICAgICAgICAgICAgcHVzaChmaXJzdEJyYW5j
aCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8vIENhbGxlZCBhcyB3ZSB3YWxrIGRv
d24gdGhlIHRyZWUgdG8gYnVpbGQgcmVwbGljYXMuCisgICAgICAgIHZvaWQgcHVzaChSZXBsaWNh
QnJhbmNoVHlwZSBicmFuY2hUeXBlKQorICAgICAgICB7CisgICAgICAgICAgICBtX3JlcGxpY2FC
cmFuY2hlcy5hcHBlbmQoYnJhbmNoVHlwZSk7CisgICAgICAgICAgICBpZiAoYnJhbmNoVHlwZSA9
PSBSZXBsaWNhQnJhbmNoKQorICAgICAgICAgICAgICAgICsrbV9yZXBsaWNhRGVwdGg7CisgICAg
ICAgIH0KKyAgICAgICAgCisgICAgICAgIHZvaWQgc2V0QnJhbmNoVHlwZShSZXBsaWNhQnJhbmNo
VHlwZSBicmFuY2hUeXBlKQorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoIW1fcmVwbGlj
YUJyYW5jaGVzLmlzRW1wdHkoKSk7CisKKyAgICAgICAgICAgIGlmIChtX3JlcGxpY2FCcmFuY2hl
cy5sYXN0KCkgIT0gYnJhbmNoVHlwZSkgeworICAgICAgICAgICAgICAgIGlmIChicmFuY2hUeXBl
ID09IFJlcGxpY2FCcmFuY2gpCisgICAgICAgICAgICAgICAgICAgICsrbV9yZXBsaWNhRGVwdGg7
CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAtLW1fcmVwbGljYURl
cHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBtX3JlcGxpY2FCcmFuY2hlcy5sYXN0
KCkgPSBicmFuY2hUeXBlOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBwb3AoKQorICAgICAg
ICB7CisgICAgICAgICAgICBpZiAobV9yZXBsaWNhQnJhbmNoZXMubGFzdCgpID09IFJlcGxpY2FC
cmFuY2gpCisgICAgICAgICAgICAgICAgLS1tX3JlcGxpY2FEZXB0aDsKKyAgICAgICAgICAgIG1f
cmVwbGljYUJyYW5jaGVzLnJlbW92ZUxhc3QoKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAg
ICAgc2l6ZV90IGRlcHRoKCkgY29uc3QgeyByZXR1cm4gbV9yZXBsaWNhQnJhbmNoZXMuc2l6ZSgp
OyB9CisgICAgICAgIHNpemVfdCByZXBsaWNhRGVwdGgoKSBjb25zdCB7IHJldHVybiBtX3JlcGxp
Y2FEZXB0aDsgfQorCisgICAgICAgIENsb25lSUQgY2xvbmVJRCgpIGNvbnN0OyAgICAgICAgCisK
KyAgICBwcml2YXRlOgorICAgICAgICBWZWN0b3I8UmVwbGljYUJyYW5jaFR5cGU+IG1fcmVwbGlj
YUJyYW5jaGVzOworICAgICAgICBzaXplX3QgbV9yZXBsaWNhRGVwdGg7CisgICAgfTsKKyAgICBQ
YXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj5yZXBsaWNhdGVkTGF5ZXJSb290KFJlcGxpY2FTdGF0
ZSYpOworCisgICAgZW51bSBDbG9uZUxldmVsIHsgUm9vdENsb25lTGV2ZWwsIEludGVybWVkaWF0
ZUNsb25lTGV2ZWwgfTsKKyAgICBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gZmV0Y2hDbG9u
ZUxheWVycyhHcmFwaGljc0xheWVyKiByZXBsaWNhUm9vdCwgUmVwbGljYVN0YXRlJiwgQ2xvbmVM
ZXZlbCk7CisgICAgCisgICAgUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IGNsb25lTGF5ZXIo
UGxhdGZvcm1DQUxheWVyICosIENsb25lTGV2ZWwpOworICAgIFBhc3NSZWZQdHI8UGxhdGZvcm1D
QUxheWVyPiBmaW5kT3JNYWtlQ2xvbmUoQ2xvbmVJRCwgUGxhdGZvcm1DQUxheWVyICosIExheWVy
TWFwKiwgQ2xvbmVMZXZlbCk7CisKKyAgICB2b2lkIGVuc3VyZUNsb25lTGF5ZXJzKENsb25lSUQg
Y2xvbmVJRCwgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4mIHByaW1hcnlMYXllciwgUmVmUHRyPFBs
YXRmb3JtQ0FMYXllcj4mIHN0cnVjdHVyYWxMYXllciwgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4m
IGNvbnRlbnRzTGF5ZXIsIENsb25lTGV2ZWwgY2xvbmVMZXZlbCk7CisKKyAgICBib29sIGhhc0Ns
b25lTGF5ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9sYXllckNsb25lczsgfQorICAgIHZvaWQgcmVt
b3ZlQ2xvbmVMYXllcnMoKTsKKyAgICBGbG9hdFBvaW50IHBvc2l0aW9uRm9yQ2xvbmVSb290TGF5
ZXIoKSBjb25zdDsKKyAgICAKKyAgICB2b2lkIHByb3BhZ2F0ZUxheWVyQ2hhbmdlVG9SZXBsaWNh
cygpOworICAgIAorICAgIC8vIEFsbCB0aGVzZSAidXBkYXRlIiBtZXRob2RzIHdpbGwgYmUgY2Fs
bGVkIGluc2lkZSBhIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUy9FTkRfQkxPQ0tfT0JKQ19F
WENFUFRJT05TIGJsb2NrLgorICAgIHZvaWQgdXBkYXRlTGF5ZXJOYW1lcygpOworICAgIHZvaWQg
dXBkYXRlU3VibGF5ZXJMaXN0KCk7CisgICAgdm9pZCB1cGRhdGVMYXllclBvc2l0aW9uKCk7Cisg
ICAgdm9pZCB1cGRhdGVMYXllclNpemUoKTsKKyAgICB2b2lkIHVwZGF0ZUFuY2hvclBvaW50KCk7
CisgICAgdm9pZCB1cGRhdGVUcmFuc2Zvcm0oKTsKKyAgICB2b2lkIHVwZGF0ZUNoaWxkcmVuVHJh
bnNmb3JtKCk7CisgICAgdm9pZCB1cGRhdGVNYXNrc1RvQm91bmRzKCk7CisgICAgdm9pZCB1cGRh
dGVDb250ZW50c09wYXF1ZSgpOworICAgIHZvaWQgdXBkYXRlQmFja2ZhY2VWaXNpYmlsaXR5KCk7
CisgICAgdm9pZCB1cGRhdGVTdHJ1Y3R1cmFsTGF5ZXIoKTsKKyAgICB2b2lkIHVwZGF0ZUxheWVy
RHJhd3NDb250ZW50KCk7CisgICAgdm9pZCB1cGRhdGVMYXllckJhY2tncm91bmRDb2xvcigpOwor
CisgICAgdm9pZCB1cGRhdGVDb250ZW50c0ltYWdlKCk7CisgICAgdm9pZCB1cGRhdGVDb250ZW50
c01lZGlhTGF5ZXIoKTsKKyAgICB2b2lkIHVwZGF0ZUNvbnRlbnRzQ2FudmFzTGF5ZXIoKTsKKyAg
ICB2b2lkIHVwZGF0ZUNvbnRlbnRzUmVjdCgpOworICAgIHZvaWQgdXBkYXRlTWFza0xheWVyKCk7
CisgICAgdm9pZCB1cGRhdGVSZXBsaWNhdGVkTGF5ZXJzKCk7CisKKyAgICB2b2lkIHVwZGF0ZUxh
eWVyQW5pbWF0aW9ucygpOworICAgIHZvaWQgdXBkYXRlQ29udGVudHNOZWVkc0Rpc3BsYXkoKTsK
KyAgICAKKyAgICBlbnVtIFN0cnVjdHVyYWxMYXllclB1cnBvc2UgeworICAgICAgICBOb1N0cnVj
dHVyYWxMYXllciA9IDAsCisgICAgICAgIFN0cnVjdHVyYWxMYXllckZvclByZXNlcnZlczNELAor
ICAgICAgICBTdHJ1Y3R1cmFsTGF5ZXJGb3JSZXBsaWNhRmxhdHRlbmluZworICAgIH07CisgICAg
dm9pZCBlbnN1cmVTdHJ1Y3R1cmFsTGF5ZXIoU3RydWN0dXJhbExheWVyUHVycG9zZSk7CisgICAg
U3RydWN0dXJhbExheWVyUHVycG9zZSBzdHJ1Y3R1cmFsTGF5ZXJQdXJwb3NlKCkgY29uc3Q7CisK
KyAgICB2b2lkIHNldEFuaW1hdGlvbk9uTGF5ZXIoUGxhdGZvcm1DQUFuaW1hdGlvbiosIEFuaW1h
dGVkUHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBpbnQgaW5kZXgsIGRv
dWJsZSB0aW1lT2Zmc2V0KTsKKyAgICBib29sIHJlbW92ZUNBQW5pbWF0aW9uRnJvbUxheWVyKEFu
aW1hdGVkUHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBpbnQgaW5kZXgp
OworICAgIHZvaWQgcGF1c2VDQUFuaW1hdGlvbk9uTGF5ZXIoQW5pbWF0ZWRQcm9wZXJ0eUlELCBj
b25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGludCBpbmRleCwgZG91YmxlIHRpbWVPZmZzZXQp
OworCisgICAgZW51bSBNb3ZlT3JDb3B5IHsgTW92ZSwgQ29weSB9OworICAgIHN0YXRpYyB2b2lk
IG1vdmVPckNvcHlMYXllckFuaW1hdGlvbihNb3ZlT3JDb3B5LCBjb25zdCBTdHJpbmcmIGFuaW1h
dGlvbklkZW50aWZpZXIsIFBsYXRmb3JtQ0FMYXllciAqZnJvbUxheWVyLCBQbGF0Zm9ybUNBTGF5
ZXIgKnRvTGF5ZXIpOworICAgIHZvaWQgbW92ZU9yQ29weUFuaW1hdGlvbnNGb3JQcm9wZXJ0eShN
b3ZlT3JDb3B5LCBBbmltYXRlZFByb3BlcnR5SUQsIFBsYXRmb3JtQ0FMYXllciAqIGZyb21MYXll
ciwgUGxhdGZvcm1DQUxheWVyICogdG9MYXllcik7CisgICAgCisgICAgZW51bSBMYXllckNoYW5n
ZSB7CisgICAgICAgIE5vQ2hhbmdlID0gMCwKKyAgICAgICAgTmFtZUNoYW5nZWQgPSAxIDw8IDEs
CisgICAgICAgIENoaWxkcmVuQ2hhbmdlZCA9IDEgPDwgMiwgLy8gYWxzbyB1c2VkIGZvciBjb250
ZW50IGxheWVyLCBhbmQgcHJlc2VydmVzLTNkLCBhbmQgc2l6ZSBpZiB0aWxpbmcgY2hhbmdlcz8K
KyAgICAgICAgUG9zaXRpb25DaGFuZ2VkID0gMSA8PCAzLAorICAgICAgICBBbmNob3JQb2ludENo
YW5nZWQgPSAxIDw8IDQsCisgICAgICAgIFNpemVDaGFuZ2VkID0gMSA8PCA1LAorICAgICAgICBU
cmFuc2Zvcm1DaGFuZ2VkID0gMSA8PCA2LAorICAgICAgICBDaGlsZHJlblRyYW5zZm9ybUNoYW5n
ZWQgPSAxIDw8IDcsCisgICAgICAgIFByZXNlcnZlczNEQ2hhbmdlZCA9IDEgPDwgOCwKKyAgICAg
ICAgTWFza3NUb0JvdW5kc0NoYW5nZWQgPSAxIDw8IDksCisgICAgICAgIERyYXdzQ29udGVudENo
YW5nZWQgPSAxIDw8IDEwLCAvLyBuZWVkIHRoaXM/CisgICAgICAgIEJhY2tncm91bmRDb2xvckNo
YW5nZWQgPSAxIDw8IDExLAorICAgICAgICBDb250ZW50c09wYXF1ZUNoYW5nZWQgPSAxIDw8IDEy
LAorICAgICAgICBCYWNrZmFjZVZpc2liaWxpdHlDaGFuZ2VkID0gMSA8PCAxMywKKyAgICAgICAg
T3BhY2l0eUNoYW5nZWQgPSAxIDw8IDE0LAorICAgICAgICBBbmltYXRpb25DaGFuZ2VkID0gMSA8
PCAxNSwKKyAgICAgICAgRGlydHlSZWN0c0NoYW5nZWQgPSAxIDw8IDE2LAorICAgICAgICBDb250
ZW50c0ltYWdlQ2hhbmdlZCA9IDEgPDwgMTcsCisgICAgICAgIENvbnRlbnRzTWVkaWFMYXllckNo
YW5nZWQgPSAxIDw8IDE4LAorICAgICAgICBDb250ZW50c0NhbnZhc0xheWVyQ2hhbmdlZCA9IDEg
PDwgMTksCisgICAgICAgIENvbnRlbnRzUmVjdENoYW5nZWQgPSAxIDw8IDIwLAorICAgICAgICBN
YXNrTGF5ZXJDaGFuZ2VkID0gMSA8PCAyMSwKKyAgICAgICAgUmVwbGljYXRlZExheWVyQ2hhbmdl
ZCA9IDEgPDwgMjIsCisgICAgICAgIENvbnRlbnRzTmVlZHNEaXNwbGF5ID0gMSA8PCAyMworICAg
IH07CisgICAgdHlwZWRlZiB1bnNpZ25lZCBMYXllckNoYW5nZUZsYWdzOworICAgIHZvaWQgbm90
ZUxheWVyUHJvcGVydHlDaGFuZ2VkKExheWVyQ2hhbmdlRmxhZ3MgZmxhZ3MpOworICAgIHZvaWQg
bm90ZVN1YmxheWVyc0NoYW5nZWQoKTsKKworICAgIHZvaWQgcmVwYWludExheWVyRGlydHlSZWN0
cygpOworCisgICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gbV9sYXllcjsgLy8gVGhlIG1haW4g
bGF5ZXIKKyAgICBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBtX3N0cnVjdHVyYWxMYXllcjsgLy8g
QSBsYXllciB1c2VkIGZvciBzdHJ1Y3R1cmFsIHJlYXNvbnMsIGxpa2UgcHJlc2VydmVzLTNkIG9y
IHJlcGxpY2EtZmxhdHRlbmluZy4gSXMgdGhlIHBhcmVudCBvZiBtX2xheWVyLgorICAgIFJlZlB0
cjxQbGF0Zm9ybUNBTGF5ZXI+IG1fY29udGVudHNMYXllcjsgLy8gQSBsYXllciB1c2VkIGZvciBp
bm5lciBjb250ZW50LCBsaWtlIGltYWdlIGFuZCB2aWRlbworCisgICAgLy8gUmVmZXJlbmNlcyB0
byBjbG9uZXMgb2Ygb3VyIGxheWVycywgZm9yIHJlcGxpY2F0ZWQgbGF5ZXJzLgorICAgIE93blB0
cjxMYXllck1hcD4gbV9sYXllckNsb25lczsKKyAgICBPd25QdHI8TGF5ZXJNYXA+IG1fc3RydWN0
dXJhbExheWVyQ2xvbmVzOworICAgIE93blB0cjxMYXllck1hcD4gbV9jb250ZW50c0xheWVyQ2xv
bmVzOworICAgIAorICAgIGVudW0gQ29udGVudHNMYXllclB1cnBvc2UgeworICAgICAgICBOb0Nv
bnRlbnRzTGF5ZXIgPSAwLAorICAgICAgICBDb250ZW50c0xheWVyRm9ySW1hZ2UsCisgICAgICAg
IENvbnRlbnRzTGF5ZXJGb3JNZWRpYSwKKyAgICAgICAgQ29udGVudHNMYXllckZvckNhbnZhcwor
ICAgIH07CisgICAgCisgICAgQ29udGVudHNMYXllclB1cnBvc2UgbV9jb250ZW50c0xheWVyUHVy
cG9zZTsKKyAgICBib29sIG1fY29udGVudHNMYXllckhhc0JhY2tncm91bmRDb2xvciA6IDE7CisK
KyAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gbV91bmNvcnJlY3RlZENvbnRlbnRzSW1hZ2U7Cisg
ICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IG1fcGVuZGluZ0NvbnRlbnRzSW1hZ2U7CisgICAgCisg
ICAgLy8gVGhpcyByZXByZXNlbnRzIHRoZSBhbmltYXRpb24gb2YgYSBzaW5nbGUgcHJvcGVydHku
IFRoZXJlIG1heSBiZSBtdWx0aXBsZSB0cmFuc2Zvcm0gYW5pbWF0aW9ucyBmb3IKKyAgICAvLyBh
IHNpbmdsZSB0cmFuc2l0aW9uIG9yIGtleWZyYW1lIGFuaW1hdGlvbiwgc28gaW5kZXggaXMgdXNl
ZCB0byBkaXN0aW5ndWlzaCB0aGVzZS4KKyAgICBzdHJ1Y3QgTGF5ZXJQcm9wZXJ0eUFuaW1hdGlv
biB7CisgICAgICAgIExheWVyUHJvcGVydHlBbmltYXRpb24oUGFzc1JlZlB0cjxQbGF0Zm9ybUNB
QW5pbWF0aW9uPiBjYUFuaW1hdGlvbiwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBBbmlt
YXRlZFByb3BlcnR5SUQgcHJvcGVydHksIGludCBpbmRleCwgZG91YmxlIHRpbWVPZmZzZXQpCisg
ICAgICAgIDogbV9hbmltYXRpb24oY2FBbmltYXRpb24pCisgICAgICAgICwgbV9uYW1lKGFuaW1h
dGlvbk5hbWUpCisgICAgICAgICwgbV9wcm9wZXJ0eShwcm9wZXJ0eSkKKyAgICAgICAgLCBtX2lu
ZGV4KGluZGV4KQorICAgICAgICAsIG1fdGltZU9mZnNldCh0aW1lT2Zmc2V0KQorICAgICAgICB7
IH0KKworICAgICAgICBSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gbV9hbmltYXRpb247Cisg
ICAgICAgIFN0cmluZyBtX25hbWU7CisgICAgICAgIEFuaW1hdGVkUHJvcGVydHlJRCBtX3Byb3Bl
cnR5OworICAgICAgICBpbnQgbV9pbmRleDsKKyAgICAgICAgZG91YmxlIG1fdGltZU9mZnNldDsK
KyAgICB9OworICAgIAorICAgIC8vIFVuY29tbWl0dGVkIHRyYW5zaXRpb25zIGFuZCBhbmltYXRp
b25zLgorICAgIFZlY3RvcjxMYXllclByb3BlcnR5QW5pbWF0aW9uPiBtX3VuY29taXR0ZWRBbmlt
YXRpb25zOworICAgIAorICAgIGVudW0gQWN0aW9uIHsgUmVtb3ZlLCBQYXVzZSB9OworICAgIHN0
cnVjdCBBbmltYXRpb25Qcm9jZXNzaW5nQWN0aW9uIHsKKyAgICAgICAgQW5pbWF0aW9uUHJvY2Vz
c2luZ0FjdGlvbihBY3Rpb24gYWN0aW9uID0gUmVtb3ZlLCBkb3VibGUgdGltZU9mZnNldCA9IDAp
CisgICAgICAgICAgICA6IGFjdGlvbihhY3Rpb24pCisgICAgICAgICAgICAsIHRpbWVPZmZzZXQo
dGltZU9mZnNldCkKKyAgICAgICAgeworICAgICAgICB9CisgICAgICAgIEFjdGlvbiBhY3Rpb247
CisgICAgICAgIGRvdWJsZSB0aW1lT2Zmc2V0OyAvLyBvbmx5IHVzZWQgZm9yIHBhdXNlCisgICAg
fTsKKyAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBBbmltYXRpb25Qcm9jZXNzaW5nQWN0aW9u
PiBBbmltYXRpb25zVG9Qcm9jZXNzTWFwOworICAgIEFuaW1hdGlvbnNUb1Byb2Nlc3NNYXAgbV9h
bmltYXRpb25zVG9Qcm9jZXNzOworCisgICAgLy8gTWFwIG9mIGFuaW1hdGlvbiBuYW1lcyB0byB0
aGVpciBhc3NvY2lhdGVkIGxpc3RzIG9mIHByb3BlcnR5IGFuaW1hdGlvbnMsIHNvIHdlIGNhbiBy
ZW1vdmUvcGF1c2UgdGhlbS4KKyAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBWZWN0b3I8TGF5
ZXJQcm9wZXJ0eUFuaW1hdGlvbj4gPiBBbmltYXRpb25zTWFwOworICAgIEFuaW1hdGlvbnNNYXAg
bV9ydW5uaW5nQW5pbWF0aW9uczsKKworICAgIFZlY3RvcjxGbG9hdFJlY3Q+IG1fZGlydHlSZWN0
czsKKyAgICAKKyAgICBMYXllckNoYW5nZUZsYWdzIG1fdW5jb21taXR0ZWRDaGFuZ2VzOworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisKKyNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURf
Q09NUE9TSVRJTkcpCisKKyNlbmRpZiAvLyBHcmFwaGljc0xheWVyQ0FfaApJbmRleDogV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBQW5pbWF0aW9uLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBQW5pbWF0aW9uLmgJKHJl
dmlzaW9uIDczMjM2KQkoZnJvbSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3Jt
Q0FBbmltYXRpb24uaDo3MzIzNikKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxh
dGZvcm1DQUFuaW1hdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTYxIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZu
ZGVmIFBsYXRmb3JtQ0FBbmltYXRpb25faAorI2RlZmluZSBQbGF0Zm9ybUNBQW5pbWF0aW9uX2gK
KworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKworI2luY2x1ZGUgIkNvbG9yLmgi
CisjaW5jbHVkZSAiRmxvYXRQb2ludDNELmgiCisjaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRy
aXguaCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5Q
dHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKKyNpZiBQTEFURk9STShNQUMpCisjaWZk
ZWYgX19PQkpDX18KK0BjbGFzcyBDQVByb3BlcnR5QW5pbWF0aW9uOwordHlwZWRlZiBDQVByb3Bl
cnR5QW5pbWF0aW9uKiBQbGF0Zm9ybUFuaW1hdGlvblJlZjsKKyNlbHNlCit0eXBlZGVmIHZvaWQq
IENBUHJvcGVydHlBbmltYXRpb247IC8vIFNvIHRoZSBtX2FuaW1hdGlvbiBkZWNsYXJhdGlvbiB3
b3JrcwordHlwZWRlZiB2b2lkKiBQbGF0Zm9ybUFuaW1hdGlvblJlZjsKKyNlbmRpZgorI2VsaWYg
UExBVEZPUk0oV0lOKQorbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgV0tDQUNGQW5pbWF0aW9u
OwordHlwZWRlZiBXS0NBQ0ZBbmltYXRpb24qIFBsYXRmb3JtQW5pbWF0aW9uUmVmOworfQorI2Vu
ZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRmxvYXRSZWN0OworY2xhc3MgUGxh
dGZvcm1DQUFuaW1hdGlvbjsKK2NsYXNzIFRpbWluZ0Z1bmN0aW9uOworCitjbGFzcyBQbGF0Zm9y
bUNBQW5pbWF0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8UGxhdGZvcm1DQUFuaW1hdGlvbj4gewor
cHVibGljOgorICAgIGZyaWVuZCBjbGFzcyBQbGF0Zm9ybUNBTGF5ZXI7CisgICAgCisgICAgZW51
bSBBbmltYXRpb25UeXBlIHsgQmFzaWMsIEtleWZyYW1lIH07CisgICAgZW51bSBGaWxsTW9kZVR5
cGUgeyBOb0ZpbGxNb2RlLCBGb3J3YXJkcywgQmFja3dhcmRzLCBCb3RoIH07CisgICAgZW51bSBW
YWx1ZUZ1bmN0aW9uVHlwZSB7IE5vVmFsdWVGdW5jdGlvbiwgUm90YXRlWCwgUm90YXRlWSwgUm90
YXRlWiwgU2NhbGVYLCBTY2FsZVksIFNjYWxlWiwgU2NhbGUsIFRyYW5zbGF0ZVgsIFRyYW5zbGF0
ZVksIFRyYW5zbGF0ZVosIFRyYW5zbGF0ZSB9OworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8UGxh
dGZvcm1DQUFuaW1hdGlvbj4gY3JlYXRlKEFuaW1hdGlvblR5cGUsIGNvbnN0IFN0cmluZyYga2V5
UGF0aCk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gY3JlYXRl
KFBsYXRmb3JtQW5pbWF0aW9uUmVmIGFuaW1hdGlvbik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8
UGxhdGZvcm1DQUFuaW1hdGlvbj4gY3JlYXRlKGNvbnN0IFBsYXRmb3JtQ0FBbmltYXRpb24qIGFu
aW1hdGlvbik7CisKKyAgICB+UGxhdGZvcm1DQUFuaW1hdGlvbigpOworICAgIAorICAgIHN0YXRp
YyBib29sIHN1cHBvcnRzVmFsdWVGdW5jdGlvbigpOworICAgIAorICAgIFBsYXRmb3JtQW5pbWF0
aW9uUmVmIHBsYXRmb3JtQW5pbWF0aW9uKCkgY29uc3Q7CisgICAgCisgICAgQW5pbWF0aW9uVHlw
ZSBhbmltYXRpb25UeXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CisgICAgU3RyaW5nIGtl
eVBhdGgoKSBjb25zdDsKKyAgICAKKyAgICBib29sIGhhc05vblplcm9CZWdpblRpbWVGbGFnKCkg
Y29uc3Q7CisgICAgdm9pZCBzZXROb25aZXJvQmVnaW5UaW1lRmxhZyhib29sIHZhbHVlKTsKKyAg
ICAKKyAgICBDRlRpbWVJbnRlcnZhbCBiZWdpblRpbWUoKSBjb25zdDsKKyAgICB2b2lkIHNldEJl
Z2luVGltZShDRlRpbWVJbnRlcnZhbCk7CisgICAgCisgICAgQ0ZUaW1lSW50ZXJ2YWwgZHVyYXRp
b24oKSBjb25zdDsKKyAgICB2b2lkIHNldER1cmF0aW9uKENGVGltZUludGVydmFsKTsKKyAgICAK
KyAgICBmbG9hdCBzcGVlZCgpIGNvbnN0OworICAgIHZvaWQgc2V0U3BlZWQoZmxvYXQpOworCisg
ICAgQ0ZUaW1lSW50ZXJ2YWwgdGltZU9mZnNldCgpIGNvbnN0OworICAgIHZvaWQgc2V0VGltZU9m
ZnNldChDRlRpbWVJbnRlcnZhbCk7CisKKyAgICBmbG9hdCByZXBlYXRDb3VudCgpIGNvbnN0Owor
ICAgIHZvaWQgc2V0UmVwZWF0Q291bnQoZmxvYXQpOworCisgICAgYm9vbCBhdXRvcmV2ZXJzZXMo
KSBjb25zdDsKKyAgICB2b2lkIHNldEF1dG9yZXZlcnNlcyhib29sKTsKKworICAgIEZpbGxNb2Rl
VHlwZSBmaWxsTW9kZSgpIGNvbnN0OworICAgIHZvaWQgc2V0RmlsbE1vZGUoRmlsbE1vZGVUeXBl
KTsKKyAgICAKKyAgICB2b2lkIHNldFRpbWluZ0Z1bmN0aW9uKGNvbnN0IFRpbWluZ0Z1bmN0aW9u
Kik7CisgICAgdm9pZCBjb3B5VGltaW5nRnVuY3Rpb25Gcm9tKGNvbnN0IFBsYXRmb3JtQ0FBbmlt
YXRpb24qKTsKKworICAgIGJvb2wgaXNSZW1vdmVkT25Db21wbGV0aW9uKCkgY29uc3Q7CisgICAg
dm9pZCBzZXRSZW1vdmVkT25Db21wbGV0aW9uKGJvb2wpOworCisgICAgYm9vbCBpc0FkZGl0aXZl
KCkgY29uc3Q7CisgICAgdm9pZCBzZXRBZGRpdGl2ZShib29sKTsKKworICAgIFZhbHVlRnVuY3Rp
b25UeXBlIHZhbHVlRnVuY3Rpb24oKSBjb25zdDsKKyAgICB2b2lkIHNldFZhbHVlRnVuY3Rpb24o
VmFsdWVGdW5jdGlvblR5cGUpOworCisgICAgLy8gQmFzaWMtYW5pbWF0aW9uIHByb3BlcnRpZXMu
CisgICAgdm9pZCBzZXRGcm9tVmFsdWUoZmxvYXQpOworICAgIHZvaWQgc2V0RnJvbVZhbHVlKGNv
bnN0IFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4Jik7CisgICAgdm9pZCBzZXRGcm9tVmFs
dWUoY29uc3QgRmxvYXRQb2ludDNEJik7CisgICAgdm9pZCBzZXRGcm9tVmFsdWUoY29uc3QgV2Vi
Q29yZTo6Q29sb3ImKTsKKyAgICB2b2lkIGNvcHlGcm9tVmFsdWVGcm9tKGNvbnN0IFBsYXRmb3Jt
Q0FBbmltYXRpb24qKTsKKworICAgIHZvaWQgc2V0VG9WYWx1ZShmbG9hdCk7CisgICAgdm9pZCBz
ZXRUb1ZhbHVlKGNvbnN0IFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4Jik7CisgICAgdm9p
ZCBzZXRUb1ZhbHVlKGNvbnN0IEZsb2F0UG9pbnQzRCYpOworICAgIHZvaWQgc2V0VG9WYWx1ZShj
b25zdCBXZWJDb3JlOjpDb2xvciYpOworICAgIHZvaWQgY29weVRvVmFsdWVGcm9tKGNvbnN0IFBs
YXRmb3JtQ0FBbmltYXRpb24qKTsKKworICAgIC8vIEtleWZyYW1lLWFuaW1hdGlvbiBwcm9wZXJ0
aWVzLgorICAgIHZvaWQgc2V0VmFsdWVzKGNvbnN0IFZlY3RvcjxmbG9hdD4mKTsKKyAgICB2b2lk
IHNldFZhbHVlcyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg+Jik7
CisgICAgdm9pZCBzZXRWYWx1ZXMoY29uc3QgVmVjdG9yPEZsb2F0UG9pbnQzRD4mKTsKKyAgICB2
b2lkIHNldFZhbHVlcyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29sb3I+Jik7CisgICAgdm9pZCBj
b3B5VmFsdWVzRnJvbShjb25zdCBQbGF0Zm9ybUNBQW5pbWF0aW9uKik7CisKKyAgICB2b2lkIHNl
dEtleVRpbWVzKGNvbnN0IFZlY3RvcjxmbG9hdD4mKTsKKyAgICB2b2lkIGNvcHlLZXlUaW1lc0Zy
b20oY29uc3QgUGxhdGZvcm1DQUFuaW1hdGlvbiopOworCisgICAgdm9pZCBzZXRUaW1pbmdGdW5j
dGlvbnMoY29uc3QgVmVjdG9yPGNvbnN0IFRpbWluZ0Z1bmN0aW9uKj4mKTsKKyAgICB2b2lkIGNv
cHlUaW1pbmdGdW5jdGlvbnNGcm9tKGNvbnN0IFBsYXRmb3JtQ0FBbmltYXRpb24qKTsKKyAgICAK
K3Byb3RlY3RlZDoKKyAgICBQbGF0Zm9ybUNBQW5pbWF0aW9uKEFuaW1hdGlvblR5cGUsIGNvbnN0
IFN0cmluZyYga2V5UGF0aCk7CisgICAgUGxhdGZvcm1DQUFuaW1hdGlvbihQbGF0Zm9ybUFuaW1h
dGlvblJlZiBhbmltYXRpb24pOworICAgIFBsYXRmb3JtQ0FBbmltYXRpb24oY29uc3QgUGxhdGZv
cm1DQUFuaW1hdGlvbiogYW5pbWF0aW9uKTsKKyAgICAKK3ByaXZhdGU6CisgICAgQW5pbWF0aW9u
VHlwZSBtX3R5cGU7CisgICAgCisjaWYgUExBVEZPUk0oTUFDKQorICAgIFJldGFpblB0cjxDQVBy
b3BlcnR5QW5pbWF0aW9uPiBtX2FuaW1hdGlvbjsKKyNlbGlmIFBMQVRGT1JNKFdJTikKKyAgICBS
ZXRhaW5QdHI8Q0FDRkFuaW1hdGlvblJlZj4gbV9hbmltYXRpb247CisjZW5kaWYKK307CisKK30K
KworI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKworI2VuZGlmIC8vIFBs
YXRmb3JtQ0FBbmltYXRpb25faApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9Q
bGF0Zm9ybUNBTGF5ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL1BsYXRmb3JtQ0FMYXllci5oCShyZXZpc2lvbiA3MzIzNikJKGZyb20gV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaDo3MzIzNikKKysrIFdlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwyMDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENP
TVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNpZm5kZWYgUGxhdGZvcm1DQUxheWVyX2gKKyNkZWZpbmUgUGxhdGZvcm1D
QUxheWVyX2gKKworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKworI2luY2x1ZGUg
IkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDQS5oIgorI2luY2x1
ZGUgIlBsYXRmb3JtQ0FBbmltYXRpb24uaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgor
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFBsYXRmb3JtQ0FMYXllcjsKKwordHlwZWRl
ZiBWZWN0b3I8UmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gPiBQbGF0Zm9ybUNBTGF5ZXJMaXN0Owor
CitjbGFzcyBQbGF0Zm9ybUNBTGF5ZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxQbGF0Zm9ybUNBTGF5
ZXI+IHsKK3B1YmxpYzoKKyAgICAvLyBUaWxlZExheWVyIHVzZWQgaW4gR3JhcGhpY3NMYXllciBo
YXMgY29uc3RhbnQgc2V0dGluZ3M6CisgICAgLy8gICAgICBjVGlsZWRMYXllclRpbGVTaXplID0g
NTEyCisgICAgLy8gICAgICBzZXRUaWxlU2l6ZTooY1RpbGVkTGF5ZXJUaWxlU2l6ZSwgY1RpbGVk
TGF5ZXJUaWxlU2l6ZSkKKyAgICAvLyAgICAgIHNldExldmVsc09mRGV0YWlsOjEKKyAgICAvLyAg
ICAgIHNldExldmVsc09mRGV0YWlsQmlhczowCisgICAgLy8gICAgICBzZXRDb250ZW50c0dyYXZp
dHk6QCJib3R0b21MZWZ0IgorICAgIC8vCisgICAgLy8gVGlsZWRMYXllciBhbHNvIGhhcyBkcmF3
aW5nIGZ1bmN0aW9ucyBsaWtlIFdlYkxheWVyCisgICAgLy8KKyAgICAvLyBXZWJMYXllciBpcyBh
IENBTGF5ZXIgd2l0aCBkcmF3aW5nIGZ1bmN0aW9ucyBzcGVjaWZpYyB0byBXZWJLaXQKKyAgICAv
LworICAgIC8vIExheWVyIGFuZCBUcmFuc2Zvcm1MYXllciBhcmUgdXNlZCBhcyBpcworCisgICAg
ZW51bSBMYXllclR5cGUgeyBMYXllclR5cGVMYXllciwgTGF5ZXJUeXBlV2ViTGF5ZXIsIExheWVy
VHlwZVRyYW5zZm9ybUxheWVyLCBMYXllclR5cGVXZWJUaWxlZExheWVyLCBMYXllclR5cGVDdXN0
b20gfTsKKyAgICBlbnVtIEZpbHRlclR5cGUgeyBMaW5lYXIsIE5lYXJlc3QsIFRyaWxpbmVhciB9
OworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBjcmVhdGUoTGF5ZXJU
eXBlLCBHcmFwaGljc0xheWVyQ0EqKTsKKyAgICAKKyAgICAvLyBUaGlzIGZ1bmN0aW9uIHBhc3Nl
cyB0aGUgbGF5ZXIgYXMgYSB2b2lkKiByYXRoZXIgdGhhbiBhIFBsYXRmb3JtTGF5ZXIgYmVjYXVz
ZSBQbGF0Zm9ybUxheWVyCisgICAgLy8gaXMgZGVmaW5lZCBkaWZmZXJlbnRseSBmb3IgT2JqIEMg
YW5kIEMrKy4gVGhpcyBhbGxvd3MgY2FsbGVycyBmcm9tIGJvdGggbGFuZ3VhZ2VzLgorICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gY3JlYXRlKHZvaWQqIHBsYXRmb3JtTGF5
ZXIsIEdyYXBoaWNzTGF5ZXJDQSopOworCisgICAgflBsYXRmb3JtQ0FMYXllcigpOworICAgIAor
ICAgIC8vIFRoaXMgZnVuY3Rpb24gcGFzc2VzIHRoZSBsYXllciBhcyBhIHZvaWQqIHJhdGhlciB0
aGFuIGEgUGxhdGZvcm1MYXllciBiZWNhdXNlIFBsYXRmb3JtTGF5ZXIKKyAgICAvLyBpcyBkZWZp
bmVkIGRpZmZlcmVudGx5IGZvciBPYmogQyBhbmQgQysrLiBUaGlzIGFsbG93cyBjYWxsZXJzIGZy
b20gYm90aCBsYW5ndWFnZXMuCisgICAgc3RhdGljIFBsYXRmb3JtQ0FMYXllciogcGxhdGZvcm1D
QUxheWVyKHZvaWQqIHBsYXRmb3JtTGF5ZXIpOworICAgIAorICAgIFBsYXRmb3JtTGF5ZXIqIHBs
YXRmb3JtTGF5ZXIoKSBjb25zdDsKKyAgICAKKyAgICBzdGF0aWMgYm9vbCBpc1ZhbHVlRnVuY3Rp
b25TdXBwb3J0ZWQoKTsKKyAgICAKKyAgICBHcmFwaGljc0xheWVyQ0EqIG93bmVyKCkgY29uc3Qg
eyByZXR1cm4gbV9vd25lcjsgfQorICAgIHZvaWQgc2V0T3duZXIoR3JhcGhpY3NMYXllckNBKiBv
d25lcik7CisKKyAgICB2b2lkIGFuaW1hdGlvblN0YXJ0ZWQoQ0ZUaW1lSW50ZXJ2YWwgYmVnaW5U
aW1lKQorICAgIHsKKyAgICAgICAgaWYgKG1fb3duZXIpCisgICAgICAgICAgICBtX293bmVyLT5h
bmltYXRpb25TdGFydGVkKGJlZ2luVGltZSk7CisgICAgfQorCisgICAgdm9pZCBzZXROZWVkc0Rp
c3BsYXkoY29uc3QgRmxvYXRSZWN0KiBkaXJ0eVJlY3QgPSAwKTsKKyAgICAKKyAgICB2b2lkIHNl
dENvbnRlbnRzQ2hhbmdlZCgpOworICAgIAorICAgIExheWVyVHlwZSBsYXllclR5cGUoKSBjb25z
dCB7IHJldHVybiBtX2xheWVyVHlwZTsgfQorCisgICAgUGxhdGZvcm1DQUxheWVyKiBzdXBlcmxh
eWVyKCkgY29uc3Q7CisgICAgdm9pZCByZW1vdmVGcm9tU3VwZXJsYXllcigpOworICAgIHZvaWQg
c2V0U3VibGF5ZXJzKGNvbnN0IFBsYXRmb3JtQ0FMYXllckxpc3QmKTsKKyAgICB2b2lkIHJlbW92
ZUFsbFN1YmxheWVycygpOworICAgIHZvaWQgYXBwZW5kU3VibGF5ZXIoUGxhdGZvcm1DQUxheWVy
Kik7CisgICAgdm9pZCBpbnNlcnRTdWJsYXllcihQbGF0Zm9ybUNBTGF5ZXIqLCBzaXplX3QgaW5k
ZXgpOworICAgIHZvaWQgcmVwbGFjZVN1YmxheWVyKFBsYXRmb3JtQ0FMYXllciogcmVmZXJlbmNl
LCBQbGF0Zm9ybUNBTGF5ZXIqKTsKKyAgICBzaXplX3Qgc3VibGF5ZXJDb3VudCgpIGNvbnN0Owor
CisgICAgLy8gVGhpcyBtZXRob2QgcmVtb3ZlcyB0aGUgc3VibGF5ZXJzIGZyb20gdGhlIHNvdXJj
ZSBhbmQgcmVwYXJlbnRzIHRoZW0gdG8gdGhlIGN1cnJlbnQgbGF5ZXIuCisgICAgdm9pZCBhZG9w
dFN1YmxheWVycyhQbGF0Zm9ybUNBTGF5ZXIqIHNvdXJjZSk7CisgICAgCisgICAgdm9pZCBhZGRB
bmltYXRpb25Gb3JLZXkoY29uc3QgU3RyaW5nJiBrZXksIFBsYXRmb3JtQ0FBbmltYXRpb24qIGFu
aW1hdGlvbik7ICAgIAorICAgIHZvaWQgcmVtb3ZlQW5pbWF0aW9uRm9yS2V5KGNvbnN0IFN0cmlu
ZyYga2V5KTsKKyAgICBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IGFuaW1hdGlvbkZv
cktleShjb25zdCBTdHJpbmcmIGtleSk7CisgICAgCisgICAgUGxhdGZvcm1DQUxheWVyKiBtYXNr
KCkgY29uc3Q7CisgICAgdm9pZCBzZXRNYXNrKFBsYXRmb3JtQ0FMYXllciopOworICAgIAorICAg
IGJvb2wgaXNPcGFxdWUoKSBjb25zdDsKKyAgICB2b2lkIHNldE9wYXF1ZShib29sKTsKKworICAg
IEZsb2F0UmVjdCBib3VuZHMoKSBjb25zdDsKKyAgICB2b2lkIHNldEJvdW5kcyhjb25zdCBGbG9h
dFJlY3QmKTsKKworICAgIEZsb2F0UG9pbnQzRCBwb3NpdGlvbigpIGNvbnN0OworICAgIHZvaWQg
c2V0UG9zaXRpb24oY29uc3QgRmxvYXRQb2ludDNEJik7CisgICAgdm9pZCBzZXRQb3NpdGlvbihj
b25zdCBGbG9hdFBvaW50JiBwb3MpIHsgc2V0UG9zaXRpb24oRmxvYXRQb2ludDNEKHBvcy54KCks
IHBvcy55KCksIDApKTsgfQorCisgICAgRmxvYXRQb2ludDNEIGFuY2hvclBvaW50KCkgY29uc3Q7
CisgICAgdm9pZCBzZXRBbmNob3JQb2ludChjb25zdCBGbG9hdFBvaW50M0QmKTsKKworICAgIFRy
YW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybSgpIGNvbnN0OworICAgIHZvaWQgc2V0VHJhbnNm
b3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4Jik7CisKKyAgICBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCBzdWJsYXllclRyYW5zZm9ybSgpIGNvbnN0OworICAgIHZvaWQgc2V0U3VibGF5ZXJUcmFu
c2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKTsKKworICAgIFRyYW5zZm9ybWF0aW9u
TWF0cml4IGNvbnRlbnRzVHJhbnNmb3JtKCkgY29uc3Q7CisgICAgdm9pZCBzZXRDb250ZW50c1Ry
YW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpOworCisgICAgYm9vbCBpc0hpZGRl
bigpIGNvbnN0OworICAgIHZvaWQgc2V0SGlkZGVuKGJvb2wpOworCisgICAgYm9vbCBpc0dlb21l
dHJ5RmxpcHBlZCgpIGNvbnN0OworICAgIHZvaWQgc2V0R2VvbWV0cnlGbGlwcGVkKGJvb2wpOwor
CisgICAgYm9vbCBpc0RvdWJsZVNpZGVkKCkgY29uc3Q7CisgICAgdm9pZCBzZXREb3VibGVTaWRl
ZChib29sKTsKKworICAgIGJvb2wgbWFza3NUb0JvdW5kcygpIGNvbnN0OworICAgIHZvaWQgc2V0
TWFza3NUb0JvdW5kcyhib29sKTsKKworICAgIHZvaWQqIGNvbnRlbnRzKCkgY29uc3Q7CisgICAg
dm9pZCBzZXRDb250ZW50cyh2b2lkKik7CisKKyAgICBGbG9hdFJlY3QgY29udGVudHNSZWN0KCkg
Y29uc3Q7CisgICAgdm9pZCBzZXRDb250ZW50c1JlY3QoY29uc3QgRmxvYXRSZWN0Jik7CisKKyAg
ICB2b2lkIHNldE1pbmlmaWNhdGlvbkZpbHRlcihGaWx0ZXJUeXBlKTsKKyAgICB2b2lkIHNldE1h
Z25pZmljYXRpb25GaWx0ZXIoRmlsdGVyVHlwZSk7CisKKyAgICBDb2xvciBiYWNrZ3JvdW5kQ29s
b3IoKSBjb25zdDsKKyAgICB2b2lkIHNldEJhY2tncm91bmRDb2xvcihjb25zdCBDb2xvciYpOwor
CisgICAgZmxvYXQgYm9yZGVyV2lkdGgoKSBjb25zdDsKKyAgICB2b2lkIHNldEJvcmRlcldpZHRo
KGZsb2F0KTsKKworICAgIENvbG9yIGJvcmRlckNvbG9yKCkgY29uc3Q7CisgICAgdm9pZCBzZXRC
b3JkZXJDb2xvcihjb25zdCBDb2xvciYpOworCisgICAgZmxvYXQgb3BhY2l0eSgpIGNvbnN0Owor
ICAgIHZvaWQgc2V0T3BhY2l0eShmbG9hdCk7CisKKyAgICBTdHJpbmcgbmFtZSgpIGNvbnN0Owor
ICAgIHZvaWQgc2V0TmFtZShjb25zdCBTdHJpbmcmKTsKKworICAgIEZsb2F0UmVjdCBmcmFtZSgp
IGNvbnN0OworICAgIHZvaWQgc2V0RnJhbWUoY29uc3QgRmxvYXRSZWN0Jik7CisKKyAgICBmbG9h
dCBzcGVlZCgpIGNvbnN0OworICAgIHZvaWQgc2V0U3BlZWQoZmxvYXQpOworCisgICAgQ0ZUaW1l
SW50ZXJ2YWwgdGltZU9mZnNldCgpIGNvbnN0OworICAgIHZvaWQgc2V0VGltZU9mZnNldChDRlRp
bWVJbnRlcnZhbCk7CisKK3Byb3RlY3RlZDoKKyAgICBQbGF0Zm9ybUNBTGF5ZXIoTGF5ZXJUeXBl
LCBQbGF0Zm9ybUxheWVyKiwgR3JhcGhpY3NMYXllckNBKik7CisgICAgCitwcml2YXRlOgorICAg
IAorICAgIEdyYXBoaWNzTGF5ZXJDQSogbV9vd25lcjsKKyAgICBMYXllclR5cGUgbV9sYXllclR5
cGU7CisgICAgCisjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShXSU4pCisgICAgUmV0YWlu
UHRyPFBsYXRmb3JtTGF5ZXI+IG1fbGF5ZXI7CisjZW5kaWYKKworI2lmIFBMQVRGT1JNKE1BQykK
KyNpZmRlZiBfX09CSkNfXworICAgIFJldGFpblB0cjxOU09iamVjdD4gbV9kZWxlZ2F0ZTsKKyNl
bHNlCisgICAgUmV0YWluUHRyPHZvaWQ+IG1fZGVsZWdhdGU7CisjZW5kaWYKKyNlbmRpZgorfTsK
KworfQorCisjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorCisjZW5kaWYg
Ly8gUGxhdGZvcm1DQUxheWVyX2gKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
bWFjL1BsYXRmb3JtQ0FBbmltYXRpb25NYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9tYWMvUGxhdGZvcm1DQUFuaW1hdGlvbk1hYy5tbQkocmV2aXNpb24g
NzMyMzYpCShmcm9tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1BsYXRmb3JtQ0FB
bmltYXRpb25NYWMubW06NzMyMzYpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21h
Yy9QbGF0Zm9ybUNBQW5pbWF0aW9uTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTkz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJ
TkcpCisKKyNpbXBvcnQgIlBsYXRmb3JtQ0FBbmltYXRpb24uaCIKKworI2ltcG9ydCAiRmxvYXRD
b252ZXJzaW9uLmgiCisjaW1wb3J0ICJQbGF0Zm9ybVN0cmluZy5oIgorI2ltcG9ydCAiVGltaW5n
RnVuY3Rpb24uaCIKKyNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgorI2ltcG9ydCA8
d3RmL1VudXNlZFBhcmFtLmg+CisKKyNkZWZpbmUgSEFWRV9NT0RFUk5fUVVBUlRaQ09SRSAoIWRl
ZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQp
KQorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworLy8gVGhpcyB2YWx1ZSBtdXN0IGJlIHRo
ZSBzYW1lIGFzIGluIFBsYXRmb3JtQ0FMYXllck1hYy5tbQorc3RhdGljIGNvbnN0IE5TU3RyaW5n
KiBXS05vblplcm9CZWdpblRpbWVGbGFnID0gQCJXS1BsYXRmb3JtQ0FBbmltYXRpb25Ob25aZXJv
QmVnaW5UaW1lRmxhZyI7CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBjb3B5VHJhbnNmb3JtKENBVHJh
bnNmb3JtM0QmIHRvVDNELCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdCkKK3sKKyAgICB0
b1QzRC5tMTEgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHQubTExKCkpOworICAgIHRvVDNELm0x
MiA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodC5tMTIoKSk7CisgICAgdG9UM0QubTEzID0gbmFy
cm93UHJlY2lzaW9uVG9GbG9hdCh0Lm0xMygpKTsKKyAgICB0b1QzRC5tMTQgPSBuYXJyb3dQcmVj
aXNpb25Ub0Zsb2F0KHQubTE0KCkpOworICAgIHRvVDNELm0yMSA9IG5hcnJvd1ByZWNpc2lvblRv
RmxvYXQodC5tMjEoKSk7CisgICAgdG9UM0QubTIyID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCh0
Lm0yMigpKTsKKyAgICB0b1QzRC5tMjMgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHQubTIzKCkp
OworICAgIHRvVDNELm0yNCA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodC5tMjQoKSk7CisgICAg
dG9UM0QubTMxID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCh0Lm0zMSgpKTsKKyAgICB0b1QzRC5t
MzIgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHQubTMyKCkpOworICAgIHRvVDNELm0zMyA9IG5h
cnJvd1ByZWNpc2lvblRvRmxvYXQodC5tMzMoKSk7CisgICAgdG9UM0QubTM0ID0gbmFycm93UHJl
Y2lzaW9uVG9GbG9hdCh0Lm0zNCgpKTsKKyAgICB0b1QzRC5tNDEgPSBuYXJyb3dQcmVjaXNpb25U
b0Zsb2F0KHQubTQxKCkpOworICAgIHRvVDNELm00MiA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQo
dC5tNDIoKSk7CisgICAgdG9UM0QubTQzID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCh0Lm00Mygp
KTsKKyAgICB0b1QzRC5tNDQgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHQubTQ0KCkpOworfQor
CitzdGF0aWMgTlNTdHJpbmcqIHRvQ0FGaWxsTW9kZVR5cGUoUGxhdGZvcm1DQUFuaW1hdGlvbjo6
RmlsbE1vZGVUeXBlIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBQbGF0
Zm9ybUNBQW5pbWF0aW9uOjpOb0ZpbGxNb2RlOgorICAgIGNhc2UgUGxhdGZvcm1DQUFuaW1hdGlv
bjo6Rm9yd2FyZHM6IHJldHVybiBrQ0FGaWxsTW9kZUZvcndhcmRzOworICAgIGNhc2UgUGxhdGZv
cm1DQUFuaW1hdGlvbjo6QmFja3dhcmRzOiByZXR1cm4ga0NBRmlsbE1vZGVCYWNrd2FyZHM7Cisg
ICAgY2FzZSBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpCb3RoOiByZXR1cm4ga0NBRmlsbE1vZGVCb3Ro
OworICAgIH0KKyAgICByZXR1cm4gQCIiOworfQorCitzdGF0aWMgUGxhdGZvcm1DQUFuaW1hdGlv
bjo6RmlsbE1vZGVUeXBlIGZyb21DQUZpbGxNb2RlVHlwZShOU1N0cmluZyogc3RyaW5nKQorewor
ICAgIGlmIChbc3RyaW5nIGlzRXF1YWxUb1N0cmluZzprQ0FGaWxsTW9kZUJhY2t3YXJkc10pCisg
ICAgICAgIHJldHVybiBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpCYWNrd2FyZHM7CisKKyAgICBpZiAo
W3N0cmluZyBpc0VxdWFsVG9TdHJpbmc6a0NBRmlsbE1vZGVCb3RoXSkKKyAgICAgICAgcmV0dXJu
IFBsYXRmb3JtQ0FBbmltYXRpb246OkJvdGg7CisKKyAgICByZXR1cm4gUGxhdGZvcm1DQUFuaW1h
dGlvbjo6Rm9yd2FyZHM7Cit9CisKKyNpZiBIQVZFX01PREVSTl9RVUFSVFpDT1JFCitzdGF0aWMg
TlNTdHJpbmcqIHRvQ0FWYWx1ZUZ1bmN0aW9uVHlwZShQbGF0Zm9ybUNBQW5pbWF0aW9uOjpWYWx1
ZUZ1bmN0aW9uVHlwZSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgUGxh
dGZvcm1DQUFuaW1hdGlvbjo6Tm9WYWx1ZUZ1bmN0aW9uOiByZXR1cm4gQCIiOworICAgIGNhc2Ug
UGxhdGZvcm1DQUFuaW1hdGlvbjo6Um90YXRlWDogcmV0dXJuIGtDQVZhbHVlRnVuY3Rpb25Sb3Rh
dGVYOworICAgIGNhc2UgUGxhdGZvcm1DQUFuaW1hdGlvbjo6Um90YXRlWTogcmV0dXJuIGtDQVZh
bHVlRnVuY3Rpb25Sb3RhdGVZOworICAgIGNhc2UgUGxhdGZvcm1DQUFuaW1hdGlvbjo6Um90YXRl
WjogcmV0dXJuIGtDQVZhbHVlRnVuY3Rpb25Sb3RhdGVaOworICAgIGNhc2UgUGxhdGZvcm1DQUFu
aW1hdGlvbjo6U2NhbGVYOiByZXR1cm4ga0NBVmFsdWVGdW5jdGlvblNjYWxlWDsKKyAgICBjYXNl
IFBsYXRmb3JtQ0FBbmltYXRpb246OlNjYWxlWTogcmV0dXJuIGtDQVZhbHVlRnVuY3Rpb25TY2Fs
ZVk7CisgICAgY2FzZSBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpTY2FsZVo6IHJldHVybiBrQ0FWYWx1
ZUZ1bmN0aW9uU2NhbGVaOworICAgIGNhc2UgUGxhdGZvcm1DQUFuaW1hdGlvbjo6U2NhbGU6IHJl
dHVybiBrQ0FWYWx1ZUZ1bmN0aW9uU2NhbGU7CisgICAgY2FzZSBQbGF0Zm9ybUNBQW5pbWF0aW9u
OjpUcmFuc2xhdGVYOiByZXR1cm4ga0NBVmFsdWVGdW5jdGlvblRyYW5zbGF0ZVg7CisgICAgY2Fz
ZSBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpUcmFuc2xhdGVZOiByZXR1cm4ga0NBVmFsdWVGdW5jdGlv
blRyYW5zbGF0ZVk7CisgICAgY2FzZSBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpUcmFuc2xhdGVaOiBy
ZXR1cm4ga0NBVmFsdWVGdW5jdGlvblRyYW5zbGF0ZVo7CisgICAgY2FzZSBQbGF0Zm9ybUNBQW5p
bWF0aW9uOjpUcmFuc2xhdGU6IHJldHVybiBrQ0FWYWx1ZUZ1bmN0aW9uVHJhbnNsYXRlOworICAg
IH0KKyAgICByZXR1cm4gQCIiOworfQorCitzdGF0aWMgUGxhdGZvcm1DQUFuaW1hdGlvbjo6VmFs
dWVGdW5jdGlvblR5cGUgZnJvbUNBVmFsdWVGdW5jdGlvblR5cGUoTlNTdHJpbmcqIHN0cmluZykK
K3sKKyAgICBpZiAoW3N0cmluZyBpc0VxdWFsVG9TdHJpbmc6a0NBVmFsdWVGdW5jdGlvblJvdGF0
ZVhdKQorICAgICAgICByZXR1cm4gUGxhdGZvcm1DQUFuaW1hdGlvbjo6Um90YXRlWDsKKworICAg
IGlmIChbc3RyaW5nIGlzRXF1YWxUb1N0cmluZzprQ0FWYWx1ZUZ1bmN0aW9uUm90YXRlWV0pCisg
ICAgICAgIHJldHVybiBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpSb3RhdGVZOworCisgICAgaWYgKFtz
dHJpbmcgaXNFcXVhbFRvU3RyaW5nOmtDQVZhbHVlRnVuY3Rpb25Sb3RhdGVaXSkKKyAgICAgICAg
cmV0dXJuIFBsYXRmb3JtQ0FBbmltYXRpb246OlJvdGF0ZVo7CisKKyAgICBpZiAoW3N0cmluZyBp
c0VxdWFsVG9TdHJpbmc6a0NBVmFsdWVGdW5jdGlvblNjYWxlWF0pCisgICAgICAgIHJldHVybiBQ
bGF0Zm9ybUNBQW5pbWF0aW9uOjpTY2FsZVg7CisKKyAgICBpZiAoW3N0cmluZyBpc0VxdWFsVG9T
dHJpbmc6a0NBVmFsdWVGdW5jdGlvblNjYWxlWV0pCisgICAgICAgIHJldHVybiBQbGF0Zm9ybUNB
QW5pbWF0aW9uOjpTY2FsZVk7CisKKyAgICBpZiAoW3N0cmluZyBpc0VxdWFsVG9TdHJpbmc6a0NB
VmFsdWVGdW5jdGlvblNjYWxlWl0pCisgICAgICAgIHJldHVybiBQbGF0Zm9ybUNBQW5pbWF0aW9u
OjpTY2FsZVo7CisKKyAgICBpZiAoW3N0cmluZyBpc0VxdWFsVG9TdHJpbmc6a0NBVmFsdWVGdW5j
dGlvblNjYWxlXSkKKyAgICAgICAgcmV0dXJuIFBsYXRmb3JtQ0FBbmltYXRpb246OlNjYWxlOwor
CisgICAgaWYgKFtzdHJpbmcgaXNFcXVhbFRvU3RyaW5nOmtDQVZhbHVlRnVuY3Rpb25UcmFuc2xh
dGVYXSkKKyAgICAgICAgcmV0dXJuIFBsYXRmb3JtQ0FBbmltYXRpb246OlRyYW5zbGF0ZVg7CisK
KyAgICBpZiAoW3N0cmluZyBpc0VxdWFsVG9TdHJpbmc6a0NBVmFsdWVGdW5jdGlvblRyYW5zbGF0
ZVldKQorICAgICAgICByZXR1cm4gUGxhdGZvcm1DQUFuaW1hdGlvbjo6VHJhbnNsYXRlWTsKKwor
ICAgIGlmIChbc3RyaW5nIGlzRXF1YWxUb1N0cmluZzprQ0FWYWx1ZUZ1bmN0aW9uVHJhbnNsYXRl
Wl0pCisgICAgICAgIHJldHVybiBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpUcmFuc2xhdGVaOworCisg
ICAgaWYgKFtzdHJpbmcgaXNFcXVhbFRvU3RyaW5nOmtDQVZhbHVlRnVuY3Rpb25UcmFuc2xhdGVd
KQorICAgICAgICByZXR1cm4gUGxhdGZvcm1DQUFuaW1hdGlvbjo6VHJhbnNsYXRlOworCisgICAg
cmV0dXJuIFBsYXRmb3JtQ0FBbmltYXRpb246Ok5vVmFsdWVGdW5jdGlvbjsKK30KKyNlbmRpZgor
CitzdGF0aWMgQ0FNZWRpYVRpbWluZ0Z1bmN0aW9uKiB0b0NBTWVkaWFUaW1pbmdGdW5jdGlvbihj
b25zdCBUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb24pCit7CisgICAgaWYgKCF0aW1pbmdG
dW5jdGlvbikKKyAgICAgICAgcmV0dXJuIFtDQU1lZGlhVGltaW5nRnVuY3Rpb24gZnVuY3Rpb25X
aXRoTmFtZTprQ0FNZWRpYVRpbWluZ0Z1bmN0aW9uRGVmYXVsdF07CisgICAgICAgICAgICAKKyAg
ICBpZiAodGltaW5nRnVuY3Rpb24tPmlzQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbigpKSB7Cisg
ICAgICAgIGNvbnN0IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24qIGN0ZiA9IHN0YXRpY19jYXN0
PGNvbnN0IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24qPih0aW1pbmdGdW5jdGlvbik7CisgICAg
ICAgIHJldHVybiBbQ0FNZWRpYVRpbWluZ0Z1bmN0aW9uIGZ1bmN0aW9uV2l0aENvbnRyb2xQb2lu
dHM6c3RhdGljX2Nhc3Q8ZmxvYXQ+KGN0Zi0+eDEoKSkgOnN0YXRpY19jYXN0PGZsb2F0PihjdGYt
PnkxKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA6c3RhdGljX2Nhc3Q8ZmxvYXQ+KGN0Zi0+eDIoKSkgOnN0YXRpY19jYXN0
PGZsb2F0PihjdGYtPnkyKCkpXTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIFtDQU1lZGlhVGlt
aW5nRnVuY3Rpb24gZnVuY3Rpb25XaXRoTmFtZTprQ0FNZWRpYVRpbWluZ0Z1bmN0aW9uTGluZWFy
XTsKKworICAgIHJldHVybiAwOworfQorCitQYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+
IFBsYXRmb3JtQ0FBbmltYXRpb246OmNyZWF0ZShBbmltYXRpb25UeXBlIHR5cGUsIGNvbnN0IFN0
cmluZyYga2V5UGF0aCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBsYXRmb3JtQ0FBbmlt
YXRpb24odHlwZSwga2V5UGF0aCkpOworfQorCitQYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRp
b24+IFBsYXRmb3JtQ0FBbmltYXRpb246OmNyZWF0ZShQbGF0Zm9ybUFuaW1hdGlvblJlZiBhbmlt
YXRpb24pCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQbGF0Zm9ybUNBQW5pbWF0aW9uKGFu
aW1hdGlvbikpOworfQorCitQYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IFBsYXRmb3Jt
Q0FBbmltYXRpb246OmNyZWF0ZShjb25zdCBQbGF0Zm9ybUNBQW5pbWF0aW9uKiBhbmltYXRpb24p
Cit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQbGF0Zm9ybUNBQW5pbWF0aW9uKGFuaW1hdGlv
bikpOworfQorCitQbGF0Zm9ybUNBQW5pbWF0aW9uOjpQbGF0Zm9ybUNBQW5pbWF0aW9uKEFuaW1h
dGlvblR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoKQorICAgIDogbV90eXBlKHR5cGUp
Cit7CisgICAgaWYgKHR5cGUgPT0gQmFzaWMpCisgICAgICAgIG1fYW5pbWF0aW9uLmFkb3B0TlMo
W1tDQUJhc2ljQW5pbWF0aW9uIGFuaW1hdGlvbldpdGhLZXlQYXRoOmtleVBhdGhdIHJldGFpbl0p
OworICAgIGVsc2UKKyAgICAgICAgbV9hbmltYXRpb24uYWRvcHROUyhbW0NBS2V5ZnJhbWVBbmlt
YXRpb24gYW5pbWF0aW9uV2l0aEtleVBhdGg6a2V5UGF0aF0gcmV0YWluXSk7Cit9CisKK1BsYXRm
b3JtQ0FBbmltYXRpb246OlBsYXRmb3JtQ0FBbmltYXRpb24oUGxhdGZvcm1BbmltYXRpb25SZWYg
YW5pbWF0aW9uKQoreworICAgIGlmIChbc3RhdGljX2Nhc3Q8Q0FBbmltYXRpb24qPihhbmltYXRp
b24pIGlzS2luZE9mQ2xhc3M6W0NBQmFzaWNBbmltYXRpb24gY2xhc3NdXSkKKyAgICAgICAgbV90
eXBlID0gQmFzaWM7CisgICAgZWxzZSBpZiAoW3N0YXRpY19jYXN0PENBQW5pbWF0aW9uKj4oYW5p
bWF0aW9uKSBpc0tpbmRPZkNsYXNzOltDQUtleWZyYW1lQW5pbWF0aW9uIGNsYXNzXV0pCisgICAg
ICAgIG1fdHlwZSA9IEtleWZyYW1lOworICAgIGVsc2UgeworICAgICAgICBBU1NFUlQoMCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgbV9hbmltYXRpb24gPSBzdGF0aWNfY2Fz
dDxDQVByb3BlcnR5QW5pbWF0aW9uKj4oYW5pbWF0aW9uKTsKK30KKworUGxhdGZvcm1DQUFuaW1h
dGlvbjo6UGxhdGZvcm1DQUFuaW1hdGlvbihjb25zdCBQbGF0Zm9ybUNBQW5pbWF0aW9uKiBhbmlt
YXRpb24pCit7CisgICAgUGxhdGZvcm1DQUFuaW1hdGlvbiogbmV3QW5pbWF0aW9uID0gbmV3IFBs
YXRmb3JtQ0FBbmltYXRpb24oYW5pbWF0aW9uLT5hbmltYXRpb25UeXBlKCksIGFuaW1hdGlvbi0+
a2V5UGF0aCgpKTsKKworICAgIG5ld0FuaW1hdGlvbi0+c2V0QmVnaW5UaW1lKGFuaW1hdGlvbi0+
YmVnaW5UaW1lKCkpOworICAgIG5ld0FuaW1hdGlvbi0+c2V0RHVyYXRpb24oYW5pbWF0aW9uLT5k
dXJhdGlvbigpKTsKKyAgICBuZXdBbmltYXRpb24tPnNldFNwZWVkKGFuaW1hdGlvbi0+c3BlZWQo
KSk7CisgICAgbmV3QW5pbWF0aW9uLT5zZXRUaW1lT2Zmc2V0KGFuaW1hdGlvbi0+dGltZU9mZnNl
dCgpKTsKKyAgICBuZXdBbmltYXRpb24tPnNldFJlcGVhdENvdW50KGFuaW1hdGlvbi0+cmVwZWF0
Q291bnQoKSk7CisgICAgbmV3QW5pbWF0aW9uLT5zZXRBdXRvcmV2ZXJzZXMoYW5pbWF0aW9uLT5h
dXRvcmV2ZXJzZXMoKSk7CisgICAgbmV3QW5pbWF0aW9uLT5zZXRGaWxsTW9kZShhbmltYXRpb24t
PmZpbGxNb2RlKCkpOworICAgIG5ld0FuaW1hdGlvbi0+c2V0UmVtb3ZlZE9uQ29tcGxldGlvbihh
bmltYXRpb24tPmlzUmVtb3ZlZE9uQ29tcGxldGlvbigpKTsKKyAgICBuZXdBbmltYXRpb24tPnNl
dEFkZGl0aXZlKGFuaW1hdGlvbi0+aXNBZGRpdGl2ZSgpKTsKKyAgICBuZXdBbmltYXRpb24tPmNv
cHlUaW1pbmdGdW5jdGlvbkZyb20oYW5pbWF0aW9uKTsKKworI2lmIEhBVkVfTU9ERVJOX1FVQVJU
WkNPUkUKKyAgICBuZXdBbmltYXRpb24tPnNldFZhbHVlRnVuY3Rpb24oYW5pbWF0aW9uLT52YWx1
ZUZ1bmN0aW9uKCkpOworI2VuZGlmCisKKyAgICBuZXdBbmltYXRpb24tPnNldE5vblplcm9CZWdp
blRpbWVGbGFnKGFuaW1hdGlvbi0+aGFzTm9uWmVyb0JlZ2luVGltZUZsYWcoKSk7CisgICAgCisg
ICAgLy8gQ29weSB0aGUgc3BlY2lmaWMgQmFzaWMgb3IgS2V5ZnJhbWUgdmFsdWVzCisgICAgaWYg
KGFuaW1hdGlvbi0+YW5pbWF0aW9uVHlwZSgpID09IEtleWZyYW1lKSB7CisgICAgICAgIG5ld0Fu
aW1hdGlvbi0+Y29weVZhbHVlc0Zyb20oYW5pbWF0aW9uKTsKKyAgICAgICAgbmV3QW5pbWF0aW9u
LT5jb3B5S2V5VGltZXNGcm9tKGFuaW1hdGlvbik7CisgICAgICAgIG5ld0FuaW1hdGlvbi0+Y29w
eVRpbWluZ0Z1bmN0aW9uc0Zyb20oYW5pbWF0aW9uKTsKKyAgICB9IGVsc2UgeworICAgICAgICBu
ZXdBbmltYXRpb24tPmNvcHlGcm9tVmFsdWVGcm9tKGFuaW1hdGlvbik7CisgICAgICAgIG5ld0Fu
aW1hdGlvbi0+Y29weVRvVmFsdWVGcm9tKGFuaW1hdGlvbik7CisgICAgfQorfQorCitQbGF0Zm9y
bUNBQW5pbWF0aW9uOjp+UGxhdGZvcm1DQUFuaW1hdGlvbigpCit7Cit9CisKK2Jvb2wgUGxhdGZv
cm1DQUFuaW1hdGlvbjo6aGFzTm9uWmVyb0JlZ2luVGltZUZsYWcoKSBjb25zdAoreworICAgIHJl
dHVybiBbW21fYW5pbWF0aW9uLmdldCgpIHZhbHVlRm9yS2V5OldLTm9uWmVyb0JlZ2luVGltZUZs
YWddIGJvb2xWYWx1ZV07Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbjo6c2V0Tm9uWmVy
b0JlZ2luVGltZUZsYWcoYm9vbCB2YWx1ZSkKK3sKKyAgICBbbV9hbmltYXRpb24uZ2V0KCkgc2V0
VmFsdWU6W05TTnVtYmVyIG51bWJlcldpdGhCb29sOnZhbHVlXSBmb3JLZXk6V0tOb25aZXJvQmVn
aW5UaW1lRmxhZ107Cit9CisgICAgCitib29sIFBsYXRmb3JtQ0FBbmltYXRpb246OnN1cHBvcnRz
VmFsdWVGdW5jdGlvbigpCit7CisgICAgc3RhdGljIGJvb2wgc0hhdmVWYWx1ZUZ1bmN0aW9uID0g
W0NBUHJvcGVydHlBbmltYXRpb24gaW5zdGFuY2VzUmVzcG9uZFRvU2VsZWN0b3I6QHNlbGVjdG9y
KHNldFZhbHVlRnVuY3Rpb246KV07CisgICAgcmV0dXJuIHNIYXZlVmFsdWVGdW5jdGlvbjsKK30K
KworUGxhdGZvcm1BbmltYXRpb25SZWYgUGxhdGZvcm1DQUFuaW1hdGlvbjo6cGxhdGZvcm1Bbmlt
YXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBtX2FuaW1hdGlvbi5nZXQoKTsKK30KKworU3Ry
aW5nIFBsYXRmb3JtQ0FBbmltYXRpb246OmtleVBhdGgoKSBjb25zdAoreworICAgIHJldHVybiBb
bV9hbmltYXRpb24uZ2V0KCkga2V5UGF0aF07Cit9CisKK0NGVGltZUludGVydmFsIFBsYXRmb3Jt
Q0FBbmltYXRpb246OmJlZ2luVGltZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFttX2FuaW1hdGlv
bi5nZXQoKSBiZWdpblRpbWVdOworfQorCit2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb246OnNldEJl
Z2luVGltZShDRlRpbWVJbnRlcnZhbCB2YWx1ZSkKK3sKKyAgICBbbV9hbmltYXRpb24uZ2V0KCkg
c2V0QmVnaW5UaW1lOnZhbHVlXTsKK30KKworQ0ZUaW1lSW50ZXJ2YWwgUGxhdGZvcm1DQUFuaW1h
dGlvbjo6ZHVyYXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBbbV9hbmltYXRpb24uZ2V0KCkg
ZHVyYXRpb25dOworfQorCit2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb246OnNldER1cmF0aW9uKENG
VGltZUludGVydmFsIHZhbHVlKQoreworICAgIFttX2FuaW1hdGlvbi5nZXQoKSBzZXREdXJhdGlv
bjp2YWx1ZV07Cit9CisKK2Zsb2F0IFBsYXRmb3JtQ0FBbmltYXRpb246OnNwZWVkKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gW21fYW5pbWF0aW9uLmdldCgpIHNwZWVkXTsKK30KKwordm9pZCBQbGF0
Zm9ybUNBQW5pbWF0aW9uOjpzZXRTcGVlZChmbG9hdCB2YWx1ZSkKK3sKKyAgICBbbV9hbmltYXRp
b24uZ2V0KCkgc2V0U3BlZWQ6dmFsdWVdOworfQorCitDRlRpbWVJbnRlcnZhbCBQbGF0Zm9ybUNB
QW5pbWF0aW9uOjp0aW1lT2Zmc2V0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gW21fYW5pbWF0aW9u
LmdldCgpIHRpbWVPZmZzZXRdOworfQorCit2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb246OnNldFRp
bWVPZmZzZXQoQ0ZUaW1lSW50ZXJ2YWwgdmFsdWUpCit7CisgICAgW21fYW5pbWF0aW9uLmdldCgp
IHNldFRpbWVPZmZzZXQ6dmFsdWVdOworfQorCitmbG9hdCBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpy
ZXBlYXRDb3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFttX2FuaW1hdGlvbi5nZXQoKSByZXBl
YXRDb3VudF07Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbjo6c2V0UmVwZWF0Q291bnQo
ZmxvYXQgdmFsdWUpCit7CisgICAgW21fYW5pbWF0aW9uLmdldCgpIHNldFJlcGVhdENvdW50OnZh
bHVlXTsKK30KKworYm9vbCBQbGF0Zm9ybUNBQW5pbWF0aW9uOjphdXRvcmV2ZXJzZXMoKSBjb25z
dAoreworICAgIHJldHVybiBbbV9hbmltYXRpb24uZ2V0KCkgYXV0b3JldmVyc2VzXTsKK30KKwor
dm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpzZXRBdXRvcmV2ZXJzZXMoYm9vbCB2YWx1ZSkKK3sK
KyAgICBbbV9hbmltYXRpb24uZ2V0KCkgc2V0QXV0b3JldmVyc2VzOnZhbHVlXTsKK30KKworUGxh
dGZvcm1DQUFuaW1hdGlvbjo6RmlsbE1vZGVUeXBlIFBsYXRmb3JtQ0FBbmltYXRpb246OmZpbGxN
b2RlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZnJvbUNBRmlsbE1vZGVUeXBlKFttX2FuaW1hdGlv
bi5nZXQoKSBmaWxsTW9kZV0pOworfQorCit2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb246OnNldEZp
bGxNb2RlKEZpbGxNb2RlVHlwZSB2YWx1ZSkKK3sKKyAgICBbbV9hbmltYXRpb24uZ2V0KCkgc2V0
RmlsbE1vZGU6dG9DQUZpbGxNb2RlVHlwZSh2YWx1ZSldOworfQorCit2b2lkIFBsYXRmb3JtQ0FB
bmltYXRpb246OnNldFRpbWluZ0Z1bmN0aW9uKGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB2YWx1ZSkK
K3sKKyAgICBbbV9hbmltYXRpb24uZ2V0KCkgc2V0VGltaW5nRnVuY3Rpb246dG9DQU1lZGlhVGlt
aW5nRnVuY3Rpb24odmFsdWUpXTsKK30KKwordm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpjb3B5
VGltaW5nRnVuY3Rpb25Gcm9tKGNvbnN0IFBsYXRmb3JtQ0FBbmltYXRpb24qIHZhbHVlKQorewor
ICAgIFttX2FuaW1hdGlvbi5nZXQoKSBzZXRUaW1pbmdGdW5jdGlvbjpbdmFsdWUtPm1fYW5pbWF0
aW9uLmdldCgpIHRpbWluZ0Z1bmN0aW9uXV07Cit9CisKK2Jvb2wgUGxhdGZvcm1DQUFuaW1hdGlv
bjo6aXNSZW1vdmVkT25Db21wbGV0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gW21fYW5pbWF0
aW9uLmdldCgpIGlzUmVtb3ZlZE9uQ29tcGxldGlvbl07Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUFu
aW1hdGlvbjo6c2V0UmVtb3ZlZE9uQ29tcGxldGlvbihib29sIHZhbHVlKQoreworICAgIFttX2Fu
aW1hdGlvbi5nZXQoKSBzZXRSZW1vdmVkT25Db21wbGV0aW9uOnZhbHVlXTsKK30KKworYm9vbCBQ
bGF0Zm9ybUNBQW5pbWF0aW9uOjppc0FkZGl0aXZlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gW21f
YW5pbWF0aW9uLmdldCgpIGlzQWRkaXRpdmVdOworfQorCit2b2lkIFBsYXRmb3JtQ0FBbmltYXRp
b246OnNldEFkZGl0aXZlKGJvb2wgdmFsdWUpCit7CisgICAgW21fYW5pbWF0aW9uLmdldCgpIHNl
dEFkZGl0aXZlOnZhbHVlXTsKK30KKworUGxhdGZvcm1DQUFuaW1hdGlvbjo6VmFsdWVGdW5jdGlv
blR5cGUgUGxhdGZvcm1DQUFuaW1hdGlvbjo6dmFsdWVGdW5jdGlvbigpIGNvbnN0Cit7CisjaWYg
SEFWRV9NT0RFUk5fUVVBUlRaQ09SRQorICAgIENBVmFsdWVGdW5jdGlvbiogdmYgPSBbbV9hbmlt
YXRpb24uZ2V0KCkgdmFsdWVGdW5jdGlvbl07CisgICAgcmV0dXJuIGZyb21DQVZhbHVlRnVuY3Rp
b25UeXBlKFt2ZiBuYW1lXSk7CisjZWxzZQorICAgIHJldHVybiBOb1ZhbHVlRnVuY3Rpb247Cisj
ZW5kaWYKK30KKwordm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpzZXRWYWx1ZUZ1bmN0aW9uKFZh
bHVlRnVuY3Rpb25UeXBlIHZhbHVlKQoreworI2lmIEhBVkVfTU9ERVJOX1FVQVJUWkNPUkUKKyAg
ICBbbV9hbmltYXRpb24uZ2V0KCkgc2V0VmFsdWVGdW5jdGlvbjpbQ0FWYWx1ZUZ1bmN0aW9uIGZ1
bmN0aW9uV2l0aE5hbWU6dG9DQVZhbHVlRnVuY3Rpb25UeXBlKHZhbHVlKV1dOworI2Vsc2UKKyAg
ICBVTlVTRURfUEFSQU0odmFsdWUpOworI2VuZGlmCit9CisKK3ZvaWQgUGxhdGZvcm1DQUFuaW1h
dGlvbjo6c2V0RnJvbVZhbHVlKGZsb2F0IHZhbHVlKQoreworICAgIGlmIChhbmltYXRpb25UeXBl
KCkgIT0gQmFzaWMpCisgICAgICAgIHJldHVybjsKKyAgICBbc3RhdGljX2Nhc3Q8Q0FCYXNpY0Fu
aW1hdGlvbio+KG1fYW5pbWF0aW9uLmdldCgpKSBzZXRGcm9tVmFsdWU6W05TTnVtYmVyIG51bWJl
cldpdGhEb3VibGU6dmFsdWVdXTsKK30KKwordm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpzZXRG
cm9tVmFsdWUoY29uc3QgV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXgmIHZhbHVlKQorewor
ICAgIGlmIChhbmltYXRpb25UeXBlKCkgIT0gQmFzaWMpCisgICAgICAgIHJldHVybjsKKworICAg
IENBVHJhbnNmb3JtM0QgY2FUcmFuc2Zvcm07CisgICAgY29weVRyYW5zZm9ybShjYVRyYW5zZm9y
bSwgdmFsdWUpOworICAgIFtzdGF0aWNfY2FzdDxDQUJhc2ljQW5pbWF0aW9uKj4obV9hbmltYXRp
b24uZ2V0KCkpIHNldEZyb21WYWx1ZTpbTlNWYWx1ZSB2YWx1ZVdpdGhDQVRyYW5zZm9ybTNEOmNh
VHJhbnNmb3JtXV07Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbjo6c2V0RnJvbVZhbHVl
KGNvbnN0IEZsb2F0UG9pbnQzRCYgdmFsdWUpCit7CisgICAgaWYgKGFuaW1hdGlvblR5cGUoKSAh
PSBCYXNpYykKKyAgICAgICAgcmV0dXJuOworCisgICAgTlNBcnJheSogYXJyYXkgPSBbTlNBcnJh
eSBhcnJheVdpdGhPYmplY3RzOgorICAgICAgICAgICAgICAgICAgICAgICAgW05TTnVtYmVyIG51
bWJlcldpdGhEb3VibGU6dmFsdWUueCgpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFtOU051
bWJlciBudW1iZXJXaXRoRG91YmxlOnZhbHVlLnkoKV0sCisgICAgICAgICAgICAgICAgICAgICAg
ICBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTp2YWx1ZS56KCldLAorICAgICAgICAgICAgICAg
ICAgICAgICAgbmlsXTsKKyAgICBbc3RhdGljX2Nhc3Q8Q0FCYXNpY0FuaW1hdGlvbio+KG1fYW5p
bWF0aW9uLmdldCgpKSBzZXRGcm9tVmFsdWU6YXJyYXldOworfQorCit2b2lkIFBsYXRmb3JtQ0FB
bmltYXRpb246OnNldEZyb21WYWx1ZShjb25zdCBXZWJDb3JlOjpDb2xvciYgdmFsdWUpCit7Cisg
ICAgaWYgKGFuaW1hdGlvblR5cGUoKSAhPSBCYXNpYykKKyAgICAgICAgcmV0dXJuOworCisgICAg
TlNBcnJheSogYXJyYXkgPSBbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOgorICAgICAgICAgICAg
ICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6dmFsdWUucmVkKCldLAorICAg
ICAgICAgICAgICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6dmFsdWUuZ3Jl
ZW4oKV0sCisgICAgICAgICAgICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJs
ZTp2YWx1ZS5ibHVlKCldLAorICAgICAgICAgICAgICAgICAgICAgICAgW05TTnVtYmVyIG51bWJl
cldpdGhEb3VibGU6dmFsdWUuYWxwaGEoKV0sCisgICAgICAgICAgICAgICAgICAgICAgICBuaWxd
OworICAgIFtzdGF0aWNfY2FzdDxDQUJhc2ljQW5pbWF0aW9uKj4obV9hbmltYXRpb24uZ2V0KCkp
IHNldEZyb21WYWx1ZTphcnJheV07Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbjo6Y29w
eUZyb21WYWx1ZUZyb20oY29uc3QgUGxhdGZvcm1DQUFuaW1hdGlvbiogdmFsdWUpCit7CisgICAg
aWYgKGFuaW1hdGlvblR5cGUoKSAhPSBCYXNpYyB8fCB2YWx1ZS0+YW5pbWF0aW9uVHlwZSgpICE9
IEJhc2ljKQorICAgICAgICByZXR1cm47CisgICAgICAgIAorICAgIENBQmFzaWNBbmltYXRpb24q
IG90aGVyQW5pbWF0aW9uID0gc3RhdGljX2Nhc3Q8Q0FCYXNpY0FuaW1hdGlvbio+KHZhbHVlLT5t
X2FuaW1hdGlvbi5nZXQoKSk7CisgICAgW3N0YXRpY19jYXN0PENBQmFzaWNBbmltYXRpb24qPiht
X2FuaW1hdGlvbi5nZXQoKSkgc2V0RnJvbVZhbHVlOltvdGhlckFuaW1hdGlvbiBmcm9tVmFsdWVd
XTsKK30KKwordm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpzZXRUb1ZhbHVlKGZsb2F0IHZhbHVl
KQoreworICAgIGlmIChhbmltYXRpb25UeXBlKCkgIT0gQmFzaWMpCisgICAgICAgIHJldHVybjsK
KyAgICBbc3RhdGljX2Nhc3Q8Q0FCYXNpY0FuaW1hdGlvbio+KG1fYW5pbWF0aW9uLmdldCgpKSBz
ZXRUb1ZhbHVlOltOU051bWJlciBudW1iZXJXaXRoRG91YmxlOnZhbHVlXV07Cit9CisKK3ZvaWQg
UGxhdGZvcm1DQUFuaW1hdGlvbjo6c2V0VG9WYWx1ZShjb25zdCBXZWJDb3JlOjpUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgdmFsdWUpCit7CisgICAgaWYgKGFuaW1hdGlvblR5cGUoKSAhPSBCYXNpYykK
KyAgICAgICAgcmV0dXJuOworCisgICAgQ0FUcmFuc2Zvcm0zRCBjYVRyYW5zZm9ybTsKKyAgICBj
b3B5VHJhbnNmb3JtKGNhVHJhbnNmb3JtLCB2YWx1ZSk7CisgICAgW3N0YXRpY19jYXN0PENBQmFz
aWNBbmltYXRpb24qPihtX2FuaW1hdGlvbi5nZXQoKSkgc2V0VG9WYWx1ZTpbTlNWYWx1ZSB2YWx1
ZVdpdGhDQVRyYW5zZm9ybTNEOmNhVHJhbnNmb3JtXV07Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUFu
aW1hdGlvbjo6c2V0VG9WYWx1ZShjb25zdCBGbG9hdFBvaW50M0QmIHZhbHVlKQoreworICAgIGlm
IChhbmltYXRpb25UeXBlKCkgIT0gQmFzaWMpCisgICAgICAgIHJldHVybjsKKworICAgIE5TQXJy
YXkqIGFycmF5ID0gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czoKKyAgICAgICAgICAgICAgICAg
ICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOnZhbHVlLngoKV0sCisgICAgICAgICAg
ICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTp2YWx1ZS55KCldLAorICAg
ICAgICAgICAgICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6dmFsdWUueigp
XSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG5pbF07CisgICAgW3N0YXRpY19jYXN0PENBQmFz
aWNBbmltYXRpb24qPihtX2FuaW1hdGlvbi5nZXQoKSkgc2V0VG9WYWx1ZTphcnJheV07Cit9CisK
K3ZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbjo6c2V0VG9WYWx1ZShjb25zdCBXZWJDb3JlOjpDb2xv
ciYgdmFsdWUpCit7CisgICAgaWYgKGFuaW1hdGlvblR5cGUoKSAhPSBCYXNpYykKKyAgICAgICAg
cmV0dXJuOworCisgICAgTlNBcnJheSogYXJyYXkgPSBbTlNBcnJheSBhcnJheVdpdGhPYmplY3Rz
OgorICAgICAgICAgICAgICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6dmFs
dWUucmVkKCldLAorICAgICAgICAgICAgICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhE
b3VibGU6dmFsdWUuZ3JlZW4oKV0sCisgICAgICAgICAgICAgICAgICAgICAgICBbTlNOdW1iZXIg
bnVtYmVyV2l0aERvdWJsZTp2YWx1ZS5ibHVlKCldLAorICAgICAgICAgICAgICAgICAgICAgICAg
W05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6dmFsdWUuYWxwaGEoKV0sCisgICAgICAgICAgICAg
ICAgICAgICAgICBuaWxdOworICAgIFtzdGF0aWNfY2FzdDxDQUJhc2ljQW5pbWF0aW9uKj4obV9h
bmltYXRpb24uZ2V0KCkpIHNldFRvVmFsdWU6YXJyYXldOworfQorCit2b2lkIFBsYXRmb3JtQ0FB
bmltYXRpb246OmNvcHlUb1ZhbHVlRnJvbShjb25zdCBQbGF0Zm9ybUNBQW5pbWF0aW9uKiB2YWx1
ZSkKK3sKKyAgICBpZiAoYW5pbWF0aW9uVHlwZSgpICE9IEJhc2ljIHx8IHZhbHVlLT5hbmltYXRp
b25UeXBlKCkgIT0gQmFzaWMpCisgICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgQ0FCYXNp
Y0FuaW1hdGlvbiogb3RoZXJBbmltYXRpb24gPSBzdGF0aWNfY2FzdDxDQUJhc2ljQW5pbWF0aW9u
Kj4odmFsdWUtPm1fYW5pbWF0aW9uLmdldCgpKTsKKyAgICBbc3RhdGljX2Nhc3Q8Q0FCYXNpY0Fu
aW1hdGlvbio+KG1fYW5pbWF0aW9uLmdldCgpKSBzZXRUb1ZhbHVlOltvdGhlckFuaW1hdGlvbiB0
b1ZhbHVlXV07Cit9CisKKworLy8gS2V5ZnJhbWUtYW5pbWF0aW9uIHByb3BlcnRpZXMuCit2b2lk
IFBsYXRmb3JtQ0FBbmltYXRpb246OnNldFZhbHVlcyhjb25zdCBWZWN0b3I8ZmxvYXQ+JiB2YWx1
ZSkKK3sKKyAgICBpZiAoYW5pbWF0aW9uVHlwZSgpICE9IEtleWZyYW1lKQorICAgICAgICByZXR1
cm47CisgICAgICAgIAorICAgIE5TTXV0YWJsZUFycmF5KiBhcnJheSA9IFtOU011dGFibGVBcnJh
eSBhcnJheV07CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2YWx1ZS5zaXplKCk7ICsraSkK
KyAgICAgICAgW2FycmF5IGFkZE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTp2YWx1
ZVtpXV1dOworICAgIFtzdGF0aWNfY2FzdDxDQUtleWZyYW1lQW5pbWF0aW9uKj4obV9hbmltYXRp
b24uZ2V0KCkpIHNldFZhbHVlczphcnJheV07Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUFuaW1hdGlv
bjo6c2V0VmFsdWVzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeD4m
IHZhbHVlKQoreworICAgIGlmIChhbmltYXRpb25UeXBlKCkgIT0gS2V5ZnJhbWUpCisgICAgICAg
IHJldHVybjsKKyAgICAgICAgCisgICAgTlNNdXRhYmxlQXJyYXkqIGFycmF5ID0gW05TTXV0YWJs
ZUFycmF5IGFycmF5XTsKKyAgICBDQVRyYW5zZm9ybTNEIGNhVHJhbnNmb3JtOworCisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCB2YWx1ZS5zaXplKCk7ICsraSkgeworICAgICAgICBjb3B5VHJh
bnNmb3JtKGNhVHJhbnNmb3JtLCB2YWx1ZVtpXSk7CisgICAgICAgIFthcnJheSBhZGRPYmplY3Q6
W05TVmFsdWUgdmFsdWVXaXRoQ0FUcmFuc2Zvcm0zRDpjYVRyYW5zZm9ybV1dOworICAgIH0KKyAg
ICBbc3RhdGljX2Nhc3Q8Q0FLZXlmcmFtZUFuaW1hdGlvbio+KG1fYW5pbWF0aW9uLmdldCgpKSBz
ZXRWYWx1ZXM6YXJyYXldOworfQorCit2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb246OnNldFZhbHVl
cyhjb25zdCBWZWN0b3I8RmxvYXRQb2ludDNEPiYgdmFsdWUpCit7CisgICAgaWYgKGFuaW1hdGlv
blR5cGUoKSAhPSBLZXlmcmFtZSkKKyAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICBOU011
dGFibGVBcnJheSogYXJyYXkgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXldOworCisgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCB2YWx1ZS5zaXplKCk7ICsraSkgeworICAgICAgICBOU0FycmF5KiBv
YmplY3QgPSBbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOgorICAgICAgICAgICAgICAgICAgICAg
ICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6dmFsdWVbaV0ueCgpXSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOnZhbHVlW2ldLnkoKV0sCisg
ICAgICAgICAgICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTp2YWx1ZVtp
XS56KCldLAorICAgICAgICAgICAgICAgICAgICAgICAgbmlsXTsKKyAgICAgICAgW2FycmF5IGFk
ZE9iamVjdDpvYmplY3RdOworICAgIH0KKyAgICBbc3RhdGljX2Nhc3Q8Q0FLZXlmcmFtZUFuaW1h
dGlvbio+KG1fYW5pbWF0aW9uLmdldCgpKSBzZXRWYWx1ZXM6YXJyYXldOworfQorCit2b2lkIFBs
YXRmb3JtQ0FBbmltYXRpb246OnNldFZhbHVlcyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29sb3I+
JiB2YWx1ZSkKK3sKKyAgICBpZiAoYW5pbWF0aW9uVHlwZSgpICE9IEtleWZyYW1lKQorICAgICAg
ICByZXR1cm47CisgICAgICAgIAorICAgIE5TTXV0YWJsZUFycmF5KiBhcnJheSA9IFtOU011dGFi
bGVBcnJheSBhcnJheV07CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHZhbHVlLnNpemUo
KTsgKytpKSB7CisgICAgICAgIE5TQXJyYXkqIG9iamVjdCA9IFtOU0FycmF5IGFycmF5V2l0aE9i
amVjdHM6CisgICAgICAgICAgICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJs
ZTp2YWx1ZVtpXS5yZWQoKV0sCisgICAgICAgICAgICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVt
YmVyV2l0aERvdWJsZTp2YWx1ZVtpXS5ncmVlbigpXSwKKyAgICAgICAgICAgICAgICAgICAgICAg
IFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOnZhbHVlW2ldLmJsdWUoKV0sCisgICAgICAgICAg
ICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTp2YWx1ZVtpXS5hbHBoYSgp
XSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG5pbF07CisgICAgICAgIFthcnJheSBhZGRPYmpl
Y3Q6b2JqZWN0XTsKKyAgICB9CisgICAgW3N0YXRpY19jYXN0PENBS2V5ZnJhbWVBbmltYXRpb24q
PihtX2FuaW1hdGlvbi5nZXQoKSkgc2V0VmFsdWVzOmFycmF5XTsKK30KKwordm9pZCBQbGF0Zm9y
bUNBQW5pbWF0aW9uOjpjb3B5VmFsdWVzRnJvbShjb25zdCBQbGF0Zm9ybUNBQW5pbWF0aW9uKiB2
YWx1ZSkKK3sKKyAgICBpZiAoYW5pbWF0aW9uVHlwZSgpICE9IEtleWZyYW1lIHx8IHZhbHVlLT5h
bmltYXRpb25UeXBlKCkgIT0gS2V5ZnJhbWUpCisgICAgICAgIHJldHVybjsKKyAgICAgICAgCisg
ICAgQ0FLZXlmcmFtZUFuaW1hdGlvbiogb3RoZXJBbmltYXRpb24gPSBzdGF0aWNfY2FzdDxDQUtl
eWZyYW1lQW5pbWF0aW9uKj4odmFsdWUtPm1fYW5pbWF0aW9uLmdldCgpKTsKKyAgICBbc3RhdGlj
X2Nhc3Q8Q0FLZXlmcmFtZUFuaW1hdGlvbio+KG1fYW5pbWF0aW9uLmdldCgpKSBzZXRWYWx1ZXM6
W290aGVyQW5pbWF0aW9uIHZhbHVlc11dOworfQorCit2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb246
OnNldEtleVRpbWVzKGNvbnN0IFZlY3RvcjxmbG9hdD4mIHZhbHVlKQoreworICAgIE5TTXV0YWJs
ZUFycmF5KiBhcnJheSA9IFtOU011dGFibGVBcnJheSBhcnJheV07CisKKyAgICBmb3IgKHNpemVf
dCBpOyBpIDwgdmFsdWUuc2l6ZSgpOyArK2kpCisgICAgICAgIFthcnJheSBhZGRPYmplY3Q6W05T
TnVtYmVyIG51bWJlcldpdGhGbG9hdDp2YWx1ZVtpXV1dOworICAgIAorICAgIFtzdGF0aWNfY2Fz
dDxDQUtleWZyYW1lQW5pbWF0aW9uKj4obV9hbmltYXRpb24uZ2V0KCkpIHNldEtleVRpbWVzOmFy
cmF5XTsKK30KKwordm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpjb3B5S2V5VGltZXNGcm9tKGNv
bnN0IFBsYXRmb3JtQ0FBbmltYXRpb24qIHZhbHVlKQoreworICAgIENBS2V5ZnJhbWVBbmltYXRp
b24qIG90aGVyID0gc3RhdGljX2Nhc3Q8Q0FLZXlmcmFtZUFuaW1hdGlvbio+KHZhbHVlLT5tX2Fu
aW1hdGlvbi5nZXQoKSk7CisgICAgW3N0YXRpY19jYXN0PENBS2V5ZnJhbWVBbmltYXRpb24qPiht
X2FuaW1hdGlvbi5nZXQoKSkgc2V0S2V5VGltZXM6W290aGVyIGtleVRpbWVzXV07Cit9CisKK3Zv
aWQgUGxhdGZvcm1DQUFuaW1hdGlvbjo6c2V0VGltaW5nRnVuY3Rpb25zKGNvbnN0IFZlY3Rvcjxj
b25zdCBUaW1pbmdGdW5jdGlvbio+JiB2YWx1ZSkKK3sKKyAgICBOU011dGFibGVBcnJheSogYXJy
YXkgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXldOworCisgICAgZm9yIChzaXplX3QgaTsgaSA8IHZh
bHVlLnNpemUoKTsgKytpKQorICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OnRvQ0FNZWRpYVRpbWlu
Z0Z1bmN0aW9uKHZhbHVlW2ldKV07CisgICAgCisgICAgW3N0YXRpY19jYXN0PENBS2V5ZnJhbWVB
bmltYXRpb24qPihtX2FuaW1hdGlvbi5nZXQoKSkgc2V0VGltaW5nRnVuY3Rpb25zOmFycmF5XTsK
K30KKwordm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpjb3B5VGltaW5nRnVuY3Rpb25zRnJvbShj
b25zdCBQbGF0Zm9ybUNBQW5pbWF0aW9uKiB2YWx1ZSkKK3sKKyAgICBDQUtleWZyYW1lQW5pbWF0
aW9uKiBvdGhlciA9IHN0YXRpY19jYXN0PENBS2V5ZnJhbWVBbmltYXRpb24qPih2YWx1ZS0+bV9h
bmltYXRpb24uZ2V0KCkpOworICAgIFtzdGF0aWNfY2FzdDxDQUtleWZyYW1lQW5pbWF0aW9uKj4o
bV9hbmltYXRpb24uZ2V0KCkpIHNldFRpbWluZ0Z1bmN0aW9uczpbb3RoZXIgdGltaW5nRnVuY3Rp
b25zXV07Cit9CisKKyNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCkluZGV4
OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9QbGF0Zm9ybUNBTGF5ZXJNYWMubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvUGxhdGZvcm1D
QUxheWVyTWFjLm1tCShyZXZpc2lvbiA3MzIzNikJKGZyb20gV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9tYWMvUGxhdGZvcm1DQUxheWVyTWFjLm1tOjczMjM2KQorKysgV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9tYWMvUGxhdGZvcm1DQUxheWVyTWFjLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNzI3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBVU0UoQUNDRUxF
UkFURURfQ09NUE9TSVRJTkcpCisKKyNpbXBvcnQgIlBsYXRmb3JtQ0FMYXllci5oIgorCisjaW1w
b3J0ICJCbG9ja0V4Y2VwdGlvbnMuaCIKKyNpbXBvcnQgIkZsb2F0Q29udmVyc2lvbi5oIgorI2lt
cG9ydCAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW1wb3J0ICJHcmFwaGljc0xheWVyQ0EuaCIKKyNp
bXBvcnQgIldlYkxheWVyLmgiCisjaW1wb3J0ICJXZWJUaWxlZExheWVyLmgiCisjaW1wb3J0IDxv
YmpjL29iamMtYXV0by5oPgorI2ltcG9ydCA8b2JqYy9vYmpjLXJ1bnRpbWUuaD4KKyNpbXBvcnQg
PFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgorI2ltcG9ydCA8d3RmL0N1cnJlbnRUaW1lLmg+Cisj
aW1wb3J0IDx3dGYvVW51c2VkUGFyYW0uaD4KKworI2RlZmluZSBIQVZFX01PREVSTl9RVUFSVFpD
T1JFICghZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05f
TEVPUEFSRCkpCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCisvLyBUaGlzIHZhbHVlIG11
c3QgYmUgdGhlIHNhbWUgYXMgaW4gUGxhdGZvcm1DQUFuaW1hdGlvbk1hYy5tbQorc3RhdGljIGNv
bnN0IE5TU3RyaW5nKiBXS05vblplcm9CZWdpblRpbWVGbGFnID0gQCJXS1BsYXRmb3JtQ0FBbmlt
YXRpb25Ob25aZXJvQmVnaW5UaW1lRmxhZyI7CisKK3N0YXRpYyBkb3VibGUgbWVkaWFUaW1lVG9D
dXJyZW50VGltZShDRlRpbWVJbnRlcnZhbCB0KQoreworICAgIHJldHVybiBXVEY6OmN1cnJlbnRU
aW1lKCkgKyB0IC0gQ0FDdXJyZW50TWVkaWFUaW1lKCk7Cit9CisKKy8vIERlbGVnYXRlIGZvciBh
bmltYXRpb25EaWRTdGFydCBjYWxsYmFjaworQGludGVyZmFjZSBXZWJBbmltYXRpb25EZWxlZ2F0
ZSA6IE5TT2JqZWN0IHsKKyAgICBQbGF0Zm9ybUNBTGF5ZXIqIG1fb3duZXI7Cit9CisKKy0gKHZv
aWQpYW5pbWF0aW9uRGlkU3RhcnQ6KENBQW5pbWF0aW9uICopYW5pbTsKKy0gKHZvaWQpc2V0T3du
ZXI6KFBsYXRmb3JtQ0FMYXllciopb3duZXI7CisKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdl
YkFuaW1hdGlvbkRlbGVnYXRlCisKKy0gKHZvaWQpYW5pbWF0aW9uRGlkU3RhcnQ6KENBQW5pbWF0
aW9uICopYW5pbWF0aW9uCit7CisgICAgLy8gaGFzTm9uWmVyb0JlZ2luVGltZSBpcyBzdG9yZWQg
aW4gYSBrZXkgaW4gdGhlIGFuaW1hdGlvbgorICAgIGJvb2wgaGFzTm9uWmVyb0JlZ2luVGltZSA9
IFtbYW5pbWF0aW9uIHZhbHVlRm9yS2V5OldLTm9uWmVyb0JlZ2luVGltZUZsYWddIGJvb2xWYWx1
ZV07CisgICAgQ0ZUaW1lSW50ZXJ2YWwgc3RhcnRUaW1lOworICAgIAorICAgIGlmIChoYXNOb25a
ZXJvQmVnaW5UaW1lKSB7CisgICAgICAgIC8vIFdlIGRvbid0IGtub3cgd2hhdCB0aW1lIENBIHVz
ZWQgdG8gY29tbWl0IHRoZSBhbmltYXRpb24sIHNvIGp1c3QgdXNlIHRoZSBjdXJyZW50IHRpbWUK
KyAgICAgICAgLy8gKGV2ZW4gdGhvdWdoIHRoaXMgd2lsbCBiZSBzbGlnaHRseSBvZmYpLgorICAg
ICAgICBzdGFydFRpbWUgPSBtZWRpYVRpbWVUb0N1cnJlbnRUaW1lKENBQ3VycmVudE1lZGlhVGlt
ZSgpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgc3RhcnRUaW1lID0gbWVkaWFUaW1lVG9DdXJyZW50
VGltZShbYW5pbWF0aW9uIGJlZ2luVGltZV0pOworCisgICAgaWYgKG1fb3duZXIpCisgICAgICAg
IG1fb3duZXItPmFuaW1hdGlvblN0YXJ0ZWQoc3RhcnRUaW1lKTsKK30KKworLSAodm9pZClzZXRP
d25lcjooUGxhdGZvcm1DQUxheWVyKilvd25lcgoreworICAgIG1fb3duZXIgPSBvd25lcjsKK30K
KworQGVuZAorCitAaW50ZXJmYWNlIENBTGF5ZXIoUHJpdmF0ZSkKKy0gKHZvaWQpc2V0Q29udGVu
dHNDaGFuZ2VkOworQGVuZAorCitzdGF0aWMgY29uc3QgTlNTdHJpbmcqIHBsYXRmb3JtQ0FMYXll
clBvaW50ZXIgPSBAIldLUGxhdGZvcm1DQUxheWVyIjsKKworc3RhdGljIGlubGluZSB2b2lkIGNv
cHlUcmFuc2Zvcm0oQ0FUcmFuc2Zvcm0zRCYgdG9UM0QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0
cml4JiB0KQoreworICAgIHRvVDNELm0xMSA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodC5tMTEo
KSk7CisgICAgdG9UM0QubTEyID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCh0Lm0xMigpKTsKKyAg
ICB0b1QzRC5tMTMgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHQubTEzKCkpOworICAgIHRvVDNE
Lm0xNCA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodC5tMTQoKSk7CisgICAgdG9UM0QubTIxID0g
bmFycm93UHJlY2lzaW9uVG9GbG9hdCh0Lm0yMSgpKTsKKyAgICB0b1QzRC5tMjIgPSBuYXJyb3dQ
cmVjaXNpb25Ub0Zsb2F0KHQubTIyKCkpOworICAgIHRvVDNELm0yMyA9IG5hcnJvd1ByZWNpc2lv
blRvRmxvYXQodC5tMjMoKSk7CisgICAgdG9UM0QubTI0ID0gbmFycm93UHJlY2lzaW9uVG9GbG9h
dCh0Lm0yNCgpKTsKKyAgICB0b1QzRC5tMzEgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHQubTMx
KCkpOworICAgIHRvVDNELm0zMiA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodC5tMzIoKSk7Cisg
ICAgdG9UM0QubTMzID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCh0Lm0zMygpKTsKKyAgICB0b1Qz
RC5tMzQgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHQubTM0KCkpOworICAgIHRvVDNELm00MSA9
IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodC5tNDEoKSk7CisgICAgdG9UM0QubTQyID0gbmFycm93
UHJlY2lzaW9uVG9GbG9hdCh0Lm00MigpKTsKKyAgICB0b1QzRC5tNDMgPSBuYXJyb3dQcmVjaXNp
b25Ub0Zsb2F0KHQubTQzKCkpOworICAgIHRvVDNELm00NCA9IG5hcnJvd1ByZWNpc2lvblRvRmxv
YXQodC5tNDQoKSk7Cit9CisKK2Jvb2wgUGxhdGZvcm1DQUxheWVyOjppc1ZhbHVlRnVuY3Rpb25T
dXBwb3J0ZWQoKQoreworICAgIHN0YXRpYyBib29sIHNIYXZlVmFsdWVGdW5jdGlvbiA9IFtDQVBy
b3BlcnR5QW5pbWF0aW9uIGluc3RhbmNlc1Jlc3BvbmRUb1NlbGVjdG9yOkBzZWxlY3RvcihzZXRW
YWx1ZUZ1bmN0aW9uOildOworICAgIHJldHVybiBzSGF2ZVZhbHVlRnVuY3Rpb247Cit9CisKK3Zv
aWQgUGxhdGZvcm1DQUxheWVyOjpzZXRPd25lcihHcmFwaGljc0xheWVyQ0EqIG93bmVyKQorewor
ICAgIG1fb3duZXIgPSBvd25lcjsKKyAgICAKKyAgICAvLyBDaGFuZ2UgdGhlIGRlbGVnYXRlJ3Mg
b3duZXIgaWYgbmVlZGVkCisgICAgaWYgKG1fZGVsZWdhdGUpCisgICAgICAgIFtzdGF0aWNfY2Fz
dDxXZWJBbmltYXRpb25EZWxlZ2F0ZSo+KG1fZGVsZWdhdGUuZ2V0KCkpIHNldE93bmVyOnRoaXNd
OyAgICAgICAgCit9CisKK3N0YXRpYyBOU0RpY3Rpb25hcnkqIG51bGxBY3Rpb25zRGljdGlvbmFy
eSgpCit7CisgICAgTlNOdWxsKiBudWxsVmFsdWUgPSBbTlNOdWxsIG51bGxdOworICAgIE5TRGlj
dGlvbmFyeSogYWN0aW9ucyA9IFtOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3RzQW5k
S2V5czoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbFZhbHVlLCBAImFuY2hvclBv
aW50IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbFZhbHVlLCBAImJvdW5kcyIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxWYWx1ZSwgQCJjb250ZW50cyIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxWYWx1ZSwgQCJjb250ZW50c1JlY3QiLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsVmFsdWUsIEAib3BhY2l0eSIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxWYWx1ZSwgQCJwb3NpdGlvbiIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG51bGxWYWx1ZSwgQCJzaGFkb3dDb2xvciIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG51bGxWYWx1ZSwgQCJzdWJsYXllclRyYW5zZm9ybSIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxWYWx1ZSwgQCJzdWJsYXllcnMiLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsVmFsdWUsIEAidHJhbnNmb3JtIiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbnVsbFZhbHVlLCBAInpQb3NpdGlvbiIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG5pbF07CisgICAgcmV0dXJuIGFjdGlvbnM7Cit9CisKKyNp
ZiBIQVZFX01PREVSTl9RVUFSVFpDT1JFCitzdGF0aWMgTlNTdHJpbmcqIHRvQ0FGaWx0ZXJUeXBl
KFBsYXRmb3JtQ0FMYXllcjo6RmlsdGVyVHlwZSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkg
eworICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMaW5lYXI6IHJldHVybiBrQ0FGaWx0ZXJMaW5l
YXI7CisgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6Ok5lYXJlc3Q6IHJldHVybiBrQ0FGaWx0ZXJO
ZWFyZXN0OworICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpUcmlsaW5lYXI6IHJldHVybiBrQ0FG
aWx0ZXJUcmlsaW5lYXI7CisgICAgZGVmYXVsdDogcmV0dXJuIDA7CisgICAgfQorfQorI2VuZGlm
CisKK1Bhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBQbGF0Zm9ybUNBTGF5ZXI6OmNyZWF0ZShM
YXllclR5cGUgbGF5ZXJUeXBlLCBHcmFwaGljc0xheWVyQ0EqIG93bmVyKQoreworICAgIHJldHVy
biBhZG9wdFJlZihuZXcgUGxhdGZvcm1DQUxheWVyKGxheWVyVHlwZSwgMCwgb3duZXIpKTsKK30K
KworUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IFBsYXRmb3JtQ0FMYXllcjo6Y3JlYXRlKHZv
aWQqIHBsYXRmb3JtTGF5ZXIsIEdyYXBoaWNzTGF5ZXJDQSogb3duZXIpCit7CisgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBQbGF0Zm9ybUNBTGF5ZXIoTGF5ZXJUeXBlQ3VzdG9tLCBzdGF0aWNfY2Fz
dDxQbGF0Zm9ybUxheWVyKj4ocGxhdGZvcm1MYXllciksIG93bmVyKSk7Cit9CisKK1BsYXRmb3Jt
Q0FMYXllcjo6UGxhdGZvcm1DQUxheWVyKExheWVyVHlwZSBsYXllclR5cGUsIFBsYXRmb3JtTGF5
ZXIqIGxheWVyLCBHcmFwaGljc0xheWVyQ0EqIG93bmVyKQorICAgIDogbV9vd25lcihvd25lcikK
K3sKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICBpZiAobGF5ZXIpIHsKKyAg
ICAgICAgbV9sYXllclR5cGUgPSBMYXllclR5cGVDdXN0b207CisgICAgICAgIG1fbGF5ZXIgPSBs
YXllcjsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2xheWVyVHlwZSA9IGxheWVyVHlwZTsKKyAg
ICAKKyAgICAgICAgQ2xhc3MgbGF5ZXJDbGFzczsKKyAgICAgICAgc3dpdGNoKGxheWVyVHlwZSkg
eworICAgICAgICAgICAgY2FzZSBMYXllclR5cGVMYXllcjoKKyAgICAgICAgICAgICAgICBsYXll
ckNsYXNzID0gW0NBTGF5ZXIgY2xhc3NdOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgY2FzZSBMYXllclR5cGVXZWJMYXllcjoKKyAgICAgICAgICAgICAgICBsYXllckNsYXNz
ID0gW1dlYkxheWVyIGNsYXNzXTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyNpZiBIQVZFX01P
REVSTl9RVUFSVFpDT1JFCisgICAgICAgICAgICBjYXNlIExheWVyVHlwZVRyYW5zZm9ybUxheWVy
OgorICAgICAgICAgICAgICAgIGxheWVyQ2xhc3MgPSBbQ0FUcmFuc2Zvcm1MYXllciBjbGFzc107
CisgICAgICAgICAgICAgICAgYnJlYWs7CisjZW5kaWYKKyAgICAgICAgICAgIGNhc2UgTGF5ZXJU
eXBlV2ViVGlsZWRMYXllcjoKKyAgICAgICAgICAgICAgICBsYXllckNsYXNzID0gW1dlYlRpbGVk
TGF5ZXIgY2xhc3NdOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBM
YXllclR5cGVDdXN0b206CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAg
ICAgICBpZiAobGF5ZXJDbGFzcykKKyAgICAgICAgICAgIG1fbGF5ZXIuYWRvcHROUyhbW2xheWVy
Q2xhc3MgYWxsb2NdIGluaXRdKTsKKyAgICB9CisgICAgCisgICAgLy8gU2F2ZSBhIHBvaW50ZXIg
dG8gJ3RoaXMnIGluIHRoZSBDQUxheWVyCisgICAgW21fbGF5ZXIuZ2V0KCkgc2V0VmFsdWU6W05T
VmFsdWUgdmFsdWVXaXRoUG9pbnRlcjp0aGlzXSBmb3JLZXk6cGxhdGZvcm1DQUxheWVyUG9pbnRl
cl07CisgICAgCisgICAgLy8gQ2xlYXIgYWxsIHRoZSBpbXBsaWNpdCBhbmltYXRpb25zIG9uIHRo
ZSBDQUxheWVyCisgICAgW21fbGF5ZXIuZ2V0KCkgc2V0U3R5bGU6W05TRGljdGlvbmFyeSBkaWN0
aW9uYXJ5V2l0aE9iamVjdDpudWxsQWN0aW9uc0RpY3Rpb25hcnkoKSBmb3JLZXk6QCJhY3Rpb25z
Il1dOworICAgIAorICAgIC8vIElmIHRoaXMgaXMgYSBUaWxlZExheWVyLCBzZXQgc29tZSBpbml0
aWFsIHZhbHVlcworICAgIGlmIChtX2xheWVyVHlwZSA9PSBMYXllclR5cGVXZWJUaWxlZExheWVy
KSB7CisgICAgICAgIFdlYlRpbGVkTGF5ZXIqIHRpbGVkTGF5ZXIgPSBzdGF0aWNfY2FzdDxXZWJU
aWxlZExheWVyKj4obV9sYXllci5nZXQoKSk7CisgICAgICAgIFt0aWxlZExheWVyIHNldFRpbGVT
aXplOkNHU2l6ZU1ha2UoR3JhcGhpY3NMYXllckNBOjprVGlsZWRMYXllclRpbGVTaXplLCBHcmFw
aGljc0xheWVyQ0E6OmtUaWxlZExheWVyVGlsZVNpemUpXTsKKyAgICAgICAgW3RpbGVkTGF5ZXIg
c2V0TGV2ZWxzT2ZEZXRhaWw6MV07CisgICAgICAgIFt0aWxlZExheWVyIHNldExldmVsc09mRGV0
YWlsQmlhczowXTsKKyAgICAgICAgW3RpbGVkTGF5ZXIgc2V0Q29udGVudHNHcmF2aXR5OkAiYm90
dG9tTGVmdCJdOworICAgIH0KKyAgICAKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCit9
CisKK1BsYXRmb3JtQ0FMYXllcjo6flBsYXRmb3JtQ0FMYXllcigpCit7CisgICAgLy8gQ2xlYXIg
dGhlIG93bmVyLCB3aGljaCBhbHNvIGNsZWFycyBpdCBpbiB0aGUgZGVsZWdhdGUgdG8gcHJldmVu
dCBhdHRlbXB0cyAKKyAgICAvLyB0byB1c2UgdGhlIEdyYXBoaWNzTGF5ZXJDQSBhZnRlciBpdCBo
YXMgYmVlbiBkZXN0cm95ZWQuCisgICAgc2V0T3duZXIoMCk7CisgICAgCisgICAgLy8gUmVtb3Zl
IHRoZSBvd25lciBwb2ludGVyIGZyb20gdGhlIGRlbGVnYXRlIGluIGNhc2UgdGhlcmUgaXMgYSBw
ZW5kaW5nIGFuaW1hdGlvblN0YXJ0ZWQgZXZlbnQuCisgICAgW3N0YXRpY19jYXN0PFdlYkFuaW1h
dGlvbkRlbGVnYXRlKj4obV9kZWxlZ2F0ZS5nZXQoKSkgc2V0T3duZXI6bmlsXTsgICAgICAgIAor
fQorCitQbGF0Zm9ybUNBTGF5ZXIqIFBsYXRmb3JtQ0FMYXllcjo6cGxhdGZvcm1DQUxheWVyKHZv
aWQqIHBsYXRmb3JtTGF5ZXIpCit7CisgICAgaWYgKCFwbGF0Zm9ybUxheWVyKQorICAgICAgICBy
ZXR1cm4gMDsKKyAgICAgICAgCisgICAgLy8gUG9pbnRlciB0byBQbGF0Zm9ybUNBTGF5ZXIgaXMg
a2VwdCBpbiBhIGtleSBvZiB0aGUgQ0FMYXllcgorICAgIFBsYXRmb3JtQ0FMYXllciogcGxhdGZv
cm1DQUxheWVyOworICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUworICAgIHBsYXRmb3Jt
Q0FMYXllciA9IHN0YXRpY19jYXN0PFBsYXRmb3JtQ0FMYXllcio+KFtbc3RhdGljX2Nhc3Q8Q0FM
YXllcio+KHBsYXRmb3JtTGF5ZXIpIHZhbHVlRm9yS2V5OnBsYXRmb3JtQ0FMYXllclBvaW50ZXJd
IHBvaW50ZXJWYWx1ZV0pOworICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICByZXR1
cm4gcGxhdGZvcm1DQUxheWVyOworfQorCitQbGF0Zm9ybUxheWVyKiBQbGF0Zm9ybUNBTGF5ZXI6
OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAoreworICAgIHJldHVybiBtX2xheWVyLmdldCgpOworfQor
Cit2b2lkIFBsYXRmb3JtQ0FMYXllcjo6c2V0TmVlZHNEaXNwbGF5KGNvbnN0IEZsb2F0UmVjdCog
ZGlydHlSZWN0KQoreworICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUworICAgIGlmIChk
aXJ0eVJlY3QpCisgICAgICAgIFttX2xheWVyLmdldCgpIHNldE5lZWRzRGlzcGxheUluUmVjdDoq
ZGlydHlSZWN0XTsKKyAgICBlbHNlCisgICAgICAgIFttX2xheWVyLmdldCgpIHNldE5lZWRzRGlz
cGxheV07CisgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUworfQorICAgIAordm9pZCBQbGF0
Zm9ybUNBTGF5ZXI6OnNldENvbnRlbnRzQ2hhbmdlZCgpCit7CisgICAgQkVHSU5fQkxPQ0tfT0JK
Q19FWENFUFRJT05TCisgICAgW21fbGF5ZXIuZ2V0KCkgc2V0Q29udGVudHNDaGFuZ2VkXTsKKyAg
ICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCit9CisKK1BsYXRmb3JtQ0FMYXllciogUGxhdGZv
cm1DQUxheWVyOjpzdXBlcmxheWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gcGxhdGZvcm1DQUxh
eWVyKFttX2xheWVyLmdldCgpIHN1cGVybGF5ZXJdKTsKK30KKwordm9pZCBQbGF0Zm9ybUNBTGF5
ZXI6OnJlbW92ZUZyb21TdXBlcmxheWVyKCkKK3sKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQ
VElPTlMKKyAgICBbbV9sYXllci5nZXQoKSByZW1vdmVGcm9tU3VwZXJsYXllcl07CisgICAgRU5E
X0JMT0NLX09CSkNfRVhDRVBUSU9OUworfQorCit2b2lkIFBsYXRmb3JtQ0FMYXllcjo6c2V0U3Vi
bGF5ZXJzKGNvbnN0IFBsYXRmb3JtQ0FMYXllckxpc3QmIGxpc3QpCit7CisgICAgLy8gU2hvcnQg
Y2lyY3VpdGluZyBoZXJlIG5vdCBvbmx5IGF2b2lkcyB0aGUgYWxsb2NhdGlvbiBvZiBzdWJsYXll
cnMsIGJ1dCBhdm9pZHMgPHJkYXI6Ly9wcm9ibGVtLzczOTA3MTY+IChzZWUgYmVsb3cpCisgICAg
aWYgKGxpc3Quc2l6ZSgpID09IDApIHsKKyAgICAgICAgcmVtb3ZlQWxsU3VibGF5ZXJzKCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJ
T05TCisgICAgTlNNdXRhYmxlQXJyYXkqIHN1YmxheWVycyA9IFtbTlNNdXRhYmxlQXJyYXkgYWxs
b2NdIGluaXRdOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGlzdC5zaXplKCk7ICsraSkK
KyAgICAgICAgW3N1YmxheWVycyBhZGRPYmplY3Q6bGlzdFtpXS0+bV9sYXllci5nZXQoKV07Cisg
ICAgICAgIAorICAgIFttX2xheWVyLmdldCgpIHNldFN1YmxheWVyczpzdWJsYXllcnNdOworICAg
IFtzdWJsYXllcnMgcmVsZWFzZV07CisgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUworfQor
Cit2b2lkIFBsYXRmb3JtQ0FMYXllcjo6cmVtb3ZlQWxsU3VibGF5ZXJzKCkKK3sKKyAgICAvLyBX
b3JrYXJvdW5kIGZvciA8cmRhcjovL3Byb2JsZW0vNzM5MDcxNj46IC1bQ0FMYXllciBzZXRTdWJs
YXllcnM6XSBjcmFzaGVzIGlmIHN1YmxheWVycyBpcyBhbiBlbXB0eSBhcnJheSwgb3IgbmlsLCB1
bmRlciBHQy4KKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICBpZiAob2JqY19j
b2xsZWN0aW5nRW5hYmxlZCgpKQorICAgICAgICB3aGlsZSAoW1ttX2xheWVyLmdldCgpIHN1Ymxh
eWVyc10gY291bnRdKQorICAgICAgICAgICAgW1tbbV9sYXllci5nZXQoKSBzdWJsYXllcnNdIG9i
amVjdEF0SW5kZXg6MF0gcmVtb3ZlRnJvbVN1cGVybGF5ZXJdOworICAgIGVsc2UKKyAgICAgICAg
W21fbGF5ZXIuZ2V0KCkgc2V0U3VibGF5ZXJzOm5pbF07CisgICAgRU5EX0JMT0NLX09CSkNfRVhD
RVBUSU9OUworfQorCit2b2lkIFBsYXRmb3JtQ0FMYXllcjo6YXBwZW5kU3VibGF5ZXIoUGxhdGZv
cm1DQUxheWVyKiBsYXllcikKK3sKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAg
ICBbbV9sYXllci5nZXQoKSBhZGRTdWJsYXllcjpsYXllci0+bV9sYXllci5nZXQoKV07CisgICAg
RU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUworfQorCit2b2lkIFBsYXRmb3JtQ0FMYXllcjo6aW5z
ZXJ0U3VibGF5ZXIoUGxhdGZvcm1DQUxheWVyKiBsYXllciwgc2l6ZV90IGluZGV4KQoreworICAg
IEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUworICAgIFttX2xheWVyLmdldCgpIGluc2VydFN1
YmxheWVyOmxheWVyLT5tX2xheWVyLmdldCgpIGF0SW5kZXg6aW5kZXhdOworICAgIEVORF9CTE9D
S19PQkpDX0VYQ0VQVElPTlMKK30KKwordm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OnJlcGxhY2VTdWJs
YXllcihQbGF0Zm9ybUNBTGF5ZXIqIHJlZmVyZW5jZSwgUGxhdGZvcm1DQUxheWVyKiBsYXllcikK
K3sKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICBbbV9sYXllci5nZXQoKSBy
ZXBsYWNlU3VibGF5ZXI6cmVmZXJlbmNlLT5tX2xheWVyLmdldCgpIHdpdGg6bGF5ZXItPm1fbGF5
ZXIuZ2V0KCldOworICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKK30KKworc2l6ZV90IFBs
YXRmb3JtQ0FMYXllcjo6c3VibGF5ZXJDb3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFtbbV9s
YXllci5nZXQoKSBzdWJsYXllcnNdIGNvdW50XTsKK30KKwordm9pZCBQbGF0Zm9ybUNBTGF5ZXI6
OmFkb3B0U3VibGF5ZXJzKFBsYXRmb3JtQ0FMYXllciogc291cmNlKQoreworICAgIC8vIFdvcmth
cm91bmQgZm9yIDxyZGFyOi8vcHJvYmxlbS83MzkwNzE2PjogLVtDQUxheWVyIHNldFN1YmxheWVy
czpdIGNyYXNoZXMgaWYgc3VibGF5ZXJzIGlzIGFuIGVtcHR5IGFycmF5LCBvciBuaWwsIHVuZGVy
IEdDLgorICAgIE5TQXJyYXkqIHN1YmxheWVycyA9IFtzb3VyY2UtPm1fbGF5ZXIuZ2V0KCkgc3Vi
bGF5ZXJzXTsKKyAgICAKKyAgICBpZiAob2JqY19jb2xsZWN0aW5nRW5hYmxlZCgpICYmICFbc3Vi
bGF5ZXJzIGNvdW50XSkgeworICAgICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAg
ICAgICAgd2hpbGUgKFtbbV9sYXllci5nZXQoKSBzdWJsYXllcnNdIGNvdW50XSkKKyAgICAgICAg
ICAgIFtbW21fbGF5ZXIuZ2V0KCkgc3VibGF5ZXJzXSBvYmplY3RBdEluZGV4OjBdIHJlbW92ZUZy
b21TdXBlcmxheWVyXTsKKyAgICAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIAorICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwor
ICAgIFttX2xheWVyLmdldCgpIHNldFN1YmxheWVyczpzdWJsYXllcnNdOworICAgIEVORF9CTE9D
S19PQkpDX0VYQ0VQVElPTlMKK30KKwordm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OmFkZEFuaW1hdGlv
bkZvcktleShjb25zdCBTdHJpbmcmIGtleSwgUGxhdGZvcm1DQUFuaW1hdGlvbiogYW5pbWF0aW9u
KQoreworICAgIC8vIEFkZCB0aGUgZGVsZWdhdGUKKyAgICBpZiAoIW1fZGVsZWdhdGUpIHsKKyAg
ICAgICAgV2ViQW5pbWF0aW9uRGVsZWdhdGUqIHdlYkFuaW1hdGlvbkRlbGVnYXRlID0gW1tXZWJB
bmltYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF07CisgICAgICAgIG1fZGVsZWdhdGUuYWRvcHRO
Uyh3ZWJBbmltYXRpb25EZWxlZ2F0ZSk7CisgICAgICAgIFt3ZWJBbmltYXRpb25EZWxlZ2F0ZSBz
ZXRPd25lcjp0aGlzXTsKKyAgICB9CisgICAgCisgICAgQ0FQcm9wZXJ0eUFuaW1hdGlvbiogcHJv
cGVydHlBbmltYXRpb24gPSBzdGF0aWNfY2FzdDxDQVByb3BlcnR5QW5pbWF0aW9uKj4oYW5pbWF0
aW9uLT5wbGF0Zm9ybUFuaW1hdGlvbigpKTsKKworICAgIGlmICghW3Byb3BlcnR5QW5pbWF0aW9u
IGRlbGVnYXRlXSkKKyAgICAgICAgW3Byb3BlcnR5QW5pbWF0aW9uIHNldERlbGVnYXRlOnN0YXRp
Y19jYXN0PGlkPihtX2RlbGVnYXRlLmdldCgpKV07CisgICAgIAorICAgIEJFR0lOX0JMT0NLX09C
SkNfRVhDRVBUSU9OUworICAgIFttX2xheWVyLmdldCgpIGFkZEFuaW1hdGlvbjphbmltYXRpb24t
Pm1fYW5pbWF0aW9uLmdldCgpIGZvcktleTprZXldOworICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQ
VElPTlMKK30KKwordm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OnJlbW92ZUFuaW1hdGlvbkZvcktleShj
b25zdCBTdHJpbmcmIGtleSkKK3sKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAg
ICBbbV9sYXllci5nZXQoKSByZW1vdmVBbmltYXRpb25Gb3JLZXk6a2V5XTsKKyAgICBFTkRfQkxP
Q0tfT0JKQ19FWENFUFRJT05TCit9CisKK1Bhc3NSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4g
UGxhdGZvcm1DQUxheWVyOjphbmltYXRpb25Gb3JLZXkoY29uc3QgU3RyaW5nJiBrZXkpCit7Cisg
ICAgQ0FBbmltYXRpb24qIGFuaW0gPSBbbV9sYXllci5nZXQoKSBhbmltYXRpb25Gb3JLZXk6a2V5
XTsKKyAgICBpZiAoIWFuaW0pCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBQbGF0Zm9y
bUNBQW5pbWF0aW9uOjpjcmVhdGUoYW5pbSk7Cit9CisKK1BsYXRmb3JtQ0FMYXllciogUGxhdGZv
cm1DQUxheWVyOjptYXNrKCkgY29uc3QKK3sKKyAgICByZXR1cm4gcGxhdGZvcm1DQUxheWVyKFtt
X2xheWVyLmdldCgpIG1hc2tdKTsKK30KKwordm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OnNldE1hc2so
UGxhdGZvcm1DQUxheWVyKiBsYXllcikKK3sKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElP
TlMKKyAgICBbbV9sYXllci5nZXQoKSBzZXRNYXNrOmxheWVyID8gbGF5ZXItPnBsYXRmb3JtTGF5
ZXIoKSA6IDBdOworICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKK30KKworYm9vbCBQbGF0
Zm9ybUNBTGF5ZXI6OmlzT3BhcXVlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gW21fbGF5ZXIuZ2V0
KCkgaXNPcGFxdWVdOworfQorCit2b2lkIFBsYXRmb3JtQ0FMYXllcjo6c2V0T3BhcXVlKGJvb2wg
dmFsdWUpCit7CisgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCisgICAgW21fbGF5ZXIu
Z2V0KCkgc2V0T3BhcXVlOnZhbHVlXTsKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCit9
CisKK0Zsb2F0UmVjdCBQbGF0Zm9ybUNBTGF5ZXI6OmJvdW5kcygpIGNvbnN0Cit7CisgICAgcmV0
dXJuIFttX2xheWVyLmdldCgpIGJvdW5kc107Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyOjpz
ZXRCb3VuZHMoY29uc3QgRmxvYXRSZWN0JiB2YWx1ZSkKK3sKKyAgICBCRUdJTl9CTE9DS19PQkpD
X0VYQ0VQVElPTlMKKyAgICBbbV9sYXllci5nZXQoKSBzZXRCb3VuZHM6dmFsdWVdOworICAgIEVO
RF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKK30KKworRmxvYXRQb2ludDNEIFBsYXRmb3JtQ0FMYXll
cjo6cG9zaXRpb24oKSBjb25zdAoreworICAgIENHUG9pbnQgcG9pbnQgPSBbbV9sYXllci5nZXQo
KSBwb3NpdGlvbl07CisgICAgcmV0dXJuIEZsb2F0UG9pbnQzRChwb2ludC54LCBwb2ludC55LCBb
bV9sYXllci5nZXQoKSB6UG9zaXRpb25dKTsKK30KKwordm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OnNl
dFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQzRCYgdmFsdWUpCit7CisgICAgQkVHSU5fQkxPQ0tf
T0JKQ19FWENFUFRJT05TCisgICAgW21fbGF5ZXIuZ2V0KCkgc2V0UG9zaXRpb246Q0dQb2ludE1h
a2UodmFsdWUueCgpLCB2YWx1ZS55KCkpXTsKKyAgICBbbV9sYXllci5nZXQoKSBzZXRaUG9zaXRp
b246dmFsdWUueigpXTsKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCit9CisKK0Zsb2F0
UG9pbnQzRCBQbGF0Zm9ybUNBTGF5ZXI6OmFuY2hvclBvaW50KCkgY29uc3QKK3sKKyAgICBDR1Bv
aW50IHBvaW50ID0gW21fbGF5ZXIuZ2V0KCkgYW5jaG9yUG9pbnRdOworICAgIGZsb2F0IHogPSAw
OworI2lmIEhBVkVfTU9ERVJOX1FVQVJUWkNPUkUKKyAgICB6ID0gW21fbGF5ZXIuZ2V0KCkgYW5j
aG9yUG9pbnRaXTsKKyNlbmRpZgorICAgIHJldHVybiBGbG9hdFBvaW50M0QocG9pbnQueCwgcG9p
bnQueSwgeik7Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyOjpzZXRBbmNob3JQb2ludChjb25z
dCBGbG9hdFBvaW50M0QmIHZhbHVlKQoreworICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9O
UworICAgIFttX2xheWVyLmdldCgpIHNldEFuY2hvclBvaW50OkNHUG9pbnRNYWtlKHZhbHVlLngo
KSwgdmFsdWUueSgpKV07CisjaWYgSEFWRV9NT0RFUk5fUVVBUlRaQ09SRQorICAgIFttX2xheWVy
LmdldCgpIHNldEFuY2hvclBvaW50Wjp2YWx1ZS56KCldOworI2VuZGlmCisgICAgRU5EX0JMT0NL
X09CSkNfRVhDRVBUSU9OUworfQorCitUcmFuc2Zvcm1hdGlvbk1hdHJpeCBQbGF0Zm9ybUNBTGF5
ZXI6OnRyYW5zZm9ybSgpIGNvbnN0Cit7CisgICAgQ0FUcmFuc2Zvcm0zRCB0ID0gW21fbGF5ZXIu
Z2V0KCkgdHJhbnNmb3JtXTsKKyAgICByZXR1cm4gVHJhbnNmb3JtYXRpb25NYXRyaXgodC5tMTEs
IHQubTEyLCB0Lm0xMywgdC5tMTQsIHQubTIxLCB0Lm0yMiwgdC5tMjMsIHQubTI0LCB0Lm0zMSwg
dC5tMzIsIHQubTMzLCB0Lm0zNCwgdC5tNDEsIHQubTQyLCB0Lm00MywgdC5tNDQpOworfQorCit2
b2lkIFBsYXRmb3JtQ0FMYXllcjo6c2V0VHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0
cml4JiB2YWx1ZSkKK3sKKyAgICBDQVRyYW5zZm9ybTNEIHRyYW5zZm9ybTsKKyAgICBjb3B5VHJh
bnNmb3JtKHRyYW5zZm9ybSwgdmFsdWUpOworICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9O
UworICAgIFttX2xheWVyLmdldCgpIHNldFRyYW5zZm9ybTp0cmFuc2Zvcm1dOworICAgIEVORF9C
TE9DS19PQkpDX0VYQ0VQVElPTlMKK30KKworVHJhbnNmb3JtYXRpb25NYXRyaXggUGxhdGZvcm1D
QUxheWVyOjpzdWJsYXllclRyYW5zZm9ybSgpIGNvbnN0Cit7CisgICAgQ0FUcmFuc2Zvcm0zRCB0
ID0gW21fbGF5ZXIuZ2V0KCkgc3VibGF5ZXJUcmFuc2Zvcm1dOworICAgIHJldHVybiBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCh0Lm0xMSwgdC5tMTIsIHQubTEzLCB0Lm0xNCwgdC5tMjEsIHQubTIyLCB0
Lm0yMywgdC5tMjQsIHQubTMxLCB0Lm0zMiwgdC5tMzMsIHQubTM0LCB0Lm00MSwgdC5tNDIsIHQu
bTQzLCB0Lm00NCk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyOjpzZXRTdWJsYXllclRyYW5z
Zm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdmFsdWUpCit7CisgICAgQ0FUcmFuc2Zv
cm0zRCB0cmFuc2Zvcm07CisgICAgY29weVRyYW5zZm9ybSh0cmFuc2Zvcm0sIHZhbHVlKTsKKyAg
ICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICBbbV9sYXllci5nZXQoKSBzZXRTdWJs
YXllclRyYW5zZm9ybTp0cmFuc2Zvcm1dOworICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMK
K30KKworVHJhbnNmb3JtYXRpb25NYXRyaXggUGxhdGZvcm1DQUxheWVyOjpjb250ZW50c1RyYW5z
Zm9ybSgpIGNvbnN0Cit7CisjaWYgIUhBVkVfTU9ERVJOX1FVQVJUWkNPUkUKKyAgICBpZiAobV9s
YXllclR5cGUgIT0gTGF5ZXJUeXBlV2ViTGF5ZXIpCisgICAgICAgIHJldHVybiBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCgpOworICAgICAgICAKKyAgICBDR0FmZmluZVRyYW5zZm9ybSB0ID0gW3N0YXRp
Y19jYXN0PFdlYkxheWVyKj4obV9sYXllci5nZXQoKSkgY29udGVudHNUcmFuc2Zvcm1dOworICAg
IHJldHVybiBUcmFuc2Zvcm1hdGlvbk1hdHJpeCh0LmEsIHQuYiwgdC5jLCB0LmQsIHQudHgsIHQu
dHkpOworI2Vsc2UKKyAgICByZXR1cm4gVHJhbnNmb3JtYXRpb25NYXRyaXgoKTsKKyNlbmRpZgor
fQorCit2b2lkIFBsYXRmb3JtQ0FMYXllcjo6c2V0Q29udGVudHNUcmFuc2Zvcm0oY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXgmIHZhbHVlKQoreworI2lmICFIQVZFX01PREVSTl9RVUFSVFpDT1JF
CisgICAgaWYgKG1fbGF5ZXJUeXBlICE9IExheWVyVHlwZVdlYkxheWVyKQorICAgICAgICByZXR1
cm47CisKKyAgICBDR0FmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm0gPSB2YWx1ZTsKKyAgICBCRUdJ
Tl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICBbbV9sYXllci5nZXQoKSBzZXRDb250ZW50c1Ry
YW5zZm9ybTp0cmFuc2Zvcm1dOworICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyNlbHNl
CisgICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsKKyNlbmRpZgorfQorCitib29sIFBsYXRmb3JtQ0FM
YXllcjo6aXNIaWRkZW4oKSBjb25zdAoreworICAgIHJldHVybiBbbV9sYXllci5nZXQoKSBpc0hp
ZGRlbl07Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyOjpzZXRIaWRkZW4oYm9vbCB2YWx1ZSkK
K3sKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICBbbV9sYXllci5nZXQoKSBz
ZXRIaWRkZW46dmFsdWVdOworICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKK30KKworYm9v
bCBQbGF0Zm9ybUNBTGF5ZXI6OmlzR2VvbWV0cnlGbGlwcGVkKCkgY29uc3QKK3sKKyNpZiBIQVZF
X01PREVSTl9RVUFSVFpDT1JFCisgICAgcmV0dXJuIFttX2xheWVyLmdldCgpIGlzR2VvbWV0cnlG
bGlwcGVkXTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisKK3ZvaWQgUGxh
dGZvcm1DQUxheWVyOjpzZXRHZW9tZXRyeUZsaXBwZWQoYm9vbCB2YWx1ZSkKK3sKKyNpZiBIQVZF
X01PREVSTl9RVUFSVFpDT1JFCisgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCisgICAg
W21fbGF5ZXIuZ2V0KCkgc2V0R2VvbWV0cnlGbGlwcGVkOnZhbHVlXTsKKyAgICBFTkRfQkxPQ0tf
T0JKQ19FWENFUFRJT05TCisjZWxzZQorICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7CisjZW5kaWYK
K30KKworYm9vbCBQbGF0Zm9ybUNBTGF5ZXI6OmlzRG91YmxlU2lkZWQoKSBjb25zdAoreworICAg
IHJldHVybiBbbV9sYXllci5nZXQoKSBpc0RvdWJsZVNpZGVkXTsKK30KKwordm9pZCBQbGF0Zm9y
bUNBTGF5ZXI6OnNldERvdWJsZVNpZGVkKGJvb2wgdmFsdWUpCit7CisgICAgQkVHSU5fQkxPQ0tf
T0JKQ19FWENFUFRJT05TCisgICAgW21fbGF5ZXIuZ2V0KCkgc2V0RG91YmxlU2lkZWQ6dmFsdWVd
OworICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKK30KKworYm9vbCBQbGF0Zm9ybUNBTGF5
ZXI6Om1hc2tzVG9Cb3VuZHMoKSBjb25zdAoreworICAgIHJldHVybiBbbV9sYXllci5nZXQoKSBt
YXNrc1RvQm91bmRzXTsKK30KKwordm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OnNldE1hc2tzVG9Cb3Vu
ZHMoYm9vbCB2YWx1ZSkKK3sKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICBb
bV9sYXllci5nZXQoKSBzZXRNYXNrc1RvQm91bmRzOnZhbHVlXTsKKyAgICBFTkRfQkxPQ0tfT0JK
Q19FWENFUFRJT05TCit9CisKK3ZvaWQqIFBsYXRmb3JtQ0FMYXllcjo6Y29udGVudHMoKSBjb25z
dAoreworICAgIHJldHVybiBbbV9sYXllci5nZXQoKSBjb250ZW50c107Cit9CisKK3ZvaWQgUGxh
dGZvcm1DQUxheWVyOjpzZXRDb250ZW50cyh2b2lkKiB2YWx1ZSkKK3sKKyAgICBCRUdJTl9CTE9D
S19PQkpDX0VYQ0VQVElPTlMKKyAgICBbbV9sYXllci5nZXQoKSBzZXRDb250ZW50czpzdGF0aWNf
Y2FzdDxpZD4odmFsdWUpXTsKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCit9CisKK0Zs
b2F0UmVjdCBQbGF0Zm9ybUNBTGF5ZXI6OmNvbnRlbnRzUmVjdCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIFttX2xheWVyLmdldCgpIGNvbnRlbnRzUmVjdF07Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxh
eWVyOjpzZXRDb250ZW50c1JlY3QoY29uc3QgRmxvYXRSZWN0JiB2YWx1ZSkKK3sKKyAgICBCRUdJ
Tl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICBbbV9sYXllci5nZXQoKSBzZXRDb250ZW50c1Jl
Y3Q6dmFsdWVdOworICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKK30KKwordm9pZCBQbGF0
Zm9ybUNBTGF5ZXI6OnNldE1pbmlmaWNhdGlvbkZpbHRlcihGaWx0ZXJUeXBlIHZhbHVlKQorewor
I2lmIEhBVkVfTU9ERVJOX1FVQVJUWkNPUkUKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElP
TlMKKyAgICBbbV9sYXllci5nZXQoKSBzZXRNaW5pZmljYXRpb25GaWx0ZXI6dG9DQUZpbHRlclR5
cGUodmFsdWUpXTsKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCisjZWxzZQorICAgIFVO
VVNFRF9QQVJBTSh2YWx1ZSk7CisjZW5kaWYKK30KKwordm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OnNl
dE1hZ25pZmljYXRpb25GaWx0ZXIoRmlsdGVyVHlwZSB2YWx1ZSkKK3sKKyNpZiBIQVZFX01PREVS
Tl9RVUFSVFpDT1JFCisgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCisgICAgW21fbGF5
ZXIuZ2V0KCkgc2V0TWFnbmlmaWNhdGlvbkZpbHRlcjp0b0NBRmlsdGVyVHlwZSh2YWx1ZSldOwor
ICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHZh
bHVlKTsKKyNlbmRpZgorfQorCitDb2xvciBQbGF0Zm9ybUNBTGF5ZXI6OmJhY2tncm91bmRDb2xv
cigpIGNvbnN0Cit7CisgICAgcmV0dXJuIFttX2xheWVyLmdldCgpIGJhY2tncm91bmRDb2xvcl07
Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyOjpzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29s
b3ImIHZhbHVlKQoreworICAgIGNvbnN0IENHRmxvYXQgY29tcG9uZW50c1s1XSA9IHsgdmFsdWUu
cmVkKCksIHZhbHVlLmdyZWVuKCksIHZhbHVlLmJsdWUoKSwgdmFsdWUuYWxwaGEoKSB9OworICAg
IENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlRGV2aWNlUkdC
KCk7CisgICAgQ0dDb2xvclJlZiBjb2xvciA9IENHQ29sb3JDcmVhdGUoY29sb3JTcGFjZSwgY29t
cG9uZW50cyk7CisgICAgQ0dDb2xvclNwYWNlUmVsZWFzZShjb2xvclNwYWNlKTsKKyAgICBCRUdJ
Tl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICBbbV9sYXllci5nZXQoKSBzZXRCYWNrZ3JvdW5k
Q29sb3I6Y29sb3JdOworICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICBDR0NvbG9y
UmVsZWFzZShjb2xvcik7Cit9CisKK2Zsb2F0IFBsYXRmb3JtQ0FMYXllcjo6Ym9yZGVyV2lkdGgo
KSBjb25zdAoreworICAgIHJldHVybiBbbV9sYXllci5nZXQoKSBib3JkZXJXaWR0aF07Cit9CisK
K3ZvaWQgUGxhdGZvcm1DQUxheWVyOjpzZXRCb3JkZXJXaWR0aChmbG9hdCB2YWx1ZSkKK3sKKyAg
ICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICBbbV9sYXllci5nZXQoKSBzZXRCb3Jk
ZXJXaWR0aDp2YWx1ZV07CisgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUworfQorCitDb2xv
ciBQbGF0Zm9ybUNBTGF5ZXI6OmJvcmRlckNvbG9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4gW21f
bGF5ZXIuZ2V0KCkgYm9yZGVyQ29sb3JdOworfQorCit2b2lkIFBsYXRmb3JtQ0FMYXllcjo6c2V0
Qm9yZGVyQ29sb3IoY29uc3QgQ29sb3ImIHZhbHVlKQoreworICAgIGNvbnN0IENHRmxvYXQgY29t
cG9uZW50c1s1XSA9IHsgdmFsdWUucmVkKCksIHZhbHVlLmdyZWVuKCksIHZhbHVlLmJsdWUoKSwg
dmFsdWUuYWxwaGEoKSB9OworICAgIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlID0gQ0dDb2xv
clNwYWNlQ3JlYXRlRGV2aWNlUkdCKCk7CisgICAgQ0dDb2xvclJlZiBjb2xvciA9IENHQ29sb3JD
cmVhdGUoY29sb3JTcGFjZSwgY29tcG9uZW50cyk7CisgICAgQ0dDb2xvclNwYWNlUmVsZWFzZShj
b2xvclNwYWNlKTsKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICBbbV9sYXll
ci5nZXQoKSBzZXRCb3JkZXJDb2xvcjpjb2xvcl07CisgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBU
SU9OUworICAgIENHQ29sb3JSZWxlYXNlKGNvbG9yKTsKK30KKworZmxvYXQgUGxhdGZvcm1DQUxh
eWVyOjpvcGFjaXR5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gW21fbGF5ZXIuZ2V0KCkgb3BhY2l0
eV07Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyOjpzZXRPcGFjaXR5KGZsb2F0IHZhbHVlKQor
eworICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUworICAgIFttX2xheWVyLmdldCgpIHNl
dE9wYWNpdHk6dmFsdWVdOworICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKK30KKworU3Ry
aW5nIFBsYXRmb3JtQ0FMYXllcjo6bmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFttX2xheWVy
LmdldCgpIG5hbWVdOworfQorCit2b2lkIFBsYXRmb3JtQ0FMYXllcjo6c2V0TmFtZShjb25zdCBT
dHJpbmcmIHZhbHVlKQoreworICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUworICAgIFtt
X2xheWVyLmdldCgpIHNldE5hbWU6dmFsdWVdOworICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElP
TlMKK30KKworRmxvYXRSZWN0IFBsYXRmb3JtQ0FMYXllcjo6ZnJhbWUoKSBjb25zdAoreworICAg
IHJldHVybiBbbV9sYXllci5nZXQoKSBmcmFtZV07Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVy
OjpzZXRGcmFtZShjb25zdCBGbG9hdFJlY3QmIHZhbHVlKQoreworICAgIEJFR0lOX0JMT0NLX09C
SkNfRVhDRVBUSU9OUworICAgIFttX2xheWVyLmdldCgpIHNldEZyYW1lOnZhbHVlXTsKKyAgICBF
TkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCit9CisKK2Zsb2F0IFBsYXRmb3JtQ0FMYXllcjo6c3Bl
ZWQoKSBjb25zdAoreworICAgIHJldHVybiBbbV9sYXllci5nZXQoKSBzcGVlZF07Cit9CisKK3Zv
aWQgUGxhdGZvcm1DQUxheWVyOjpzZXRTcGVlZChmbG9hdCB2YWx1ZSkKK3sKKyAgICBCRUdJTl9C
TE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICBbbV9sYXllci5nZXQoKSBzZXRTcGVlZDp2YWx1ZV07
CisgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUworfQorCitDRlRpbWVJbnRlcnZhbCBQbGF0
Zm9ybUNBTGF5ZXI6OnRpbWVPZmZzZXQoKSBjb25zdAoreworICAgIHJldHVybiBbbV9sYXllci5n
ZXQoKSB0aW1lT2Zmc2V0XTsKK30KKwordm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OnNldFRpbWVPZmZz
ZXQoQ0ZUaW1lSW50ZXJ2YWwgdmFsdWUpCit7CisgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJ
T05TCisgICAgW21fbGF5ZXIuZ2V0KCkgc2V0VGltZU9mZnNldDp2YWx1ZV07CisgICAgRU5EX0JM
T0NLX09CSkNfRVhDRVBUSU9OUworfQorCisjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBP
U0lUSU5HKQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGlj
c0xheWVyQ2hyb21pdW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcAkocmV2aXNpb24gNzMyNzMpCisr
KyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1
bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNSwxMSArMTE1LDYgQEAgdm9pZCBHcmFwaGljc0xh
eWVyQ2hyb21pdW06OnNldE5hbWUoY29ucwogICAgIEdyYXBoaWNzTGF5ZXI6OnNldE5hbWUobmFt
ZSk7CiB9CiAKLU5hdGl2ZUxheWVyIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6bmF0aXZlTGF5ZXIo
KSBjb25zdAotewotICAgIHJldHVybiBtX2xheWVyLmdldCgpOwotfQotCiBib29sIEdyYXBoaWNz
TGF5ZXJDaHJvbWl1bTo6c2V0Q2hpbGRyZW4oY29uc3QgVmVjdG9yPEdyYXBoaWNzTGF5ZXIqPiYg
Y2hpbGRyZW4pCiB7CiAgICAgYm9vbCBjaGlsZHJlbkNoYW5nZWQgPSBHcmFwaGljc0xheWVyOjpz
ZXRDaGlsZHJlbihjaGlsZHJlbik7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmgJKHJldmlzaW9u
IDczMjczKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xh
eWVyQ2hyb21pdW0uaAkod29ya2luZyBjb3B5KQpAQCAtNDcsOSArNDcsNiBAQCBwdWJsaWM6CiAK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0TmFtZShjb25zdCBTdHJpbmcmKTsKIAotICAgIC8vIGZvciBo
b3N0aW5nIHRoaXMgR3JhcGhpY3NMYXllciBpbiBhIG5hdGl2ZSBsYXllciBoaWVyYXJjaHkKLSAg
ICB2aXJ0dWFsIE5hdGl2ZUxheWVyIG5hdGl2ZUxheWVyKCkgY29uc3Q7Ci0KICAgICB2aXJ0dWFs
IGJvb2wgc2V0Q2hpbGRyZW4oY29uc3QgVmVjdG9yPEdyYXBoaWNzTGF5ZXIqPiYpOwogICAgIHZp
cnR1YWwgdm9pZCBhZGRDaGlsZChHcmFwaGljc0xheWVyKik7CiAgICAgdmlydHVhbCB2b2lkIGFk
ZENoaWxkQXRJbmRleChHcmFwaGljc0xheWVyKiwgaW50IGluZGV4KTsKSW5kZXg6IFdlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzTGF5ZXJNYWMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0xheWVyTWFjLmgJKHJldmlzaW9u
IDczMjczKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NMYXllck1h
Yy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDM4OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIEdyYXBoaWNzTGF5
ZXJNYWNfaAotI2RlZmluZSBHcmFwaGljc0xheWVyTWFjX2gKLQotI2lmIFVTRShBQ0NFTEVSQVRF
RF9DT01QT1NJVElORykKLQotI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKLSNpbmNsdWRlICJX
ZWJMYXllci5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hT
ZXQuaD4KLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nSGFzaC5oPgotCi1AY2xhc3MgQ0FCYXNpY0FuaW1hdGlvbjsKLUBjbGFzcyBDQUtleWZyYW1l
QW5pbWF0aW9uOwotQGNsYXNzIENBTWVkaWFUaW1pbmdGdW5jdGlvbjsKLUBjbGFzcyBDQVByb3Bl
cnR5QW5pbWF0aW9uOwotQGNsYXNzIFdlYkFuaW1hdGlvbkRlbGVnYXRlOwotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLWNsYXNzIEdyYXBoaWNzTGF5ZXJNYWMgOiBwdWJsaWMgR3JhcGhpY3NMYXll
ciB7Ci1wdWJsaWM6Ci0KLSAgICBHcmFwaGljc0xheWVyTWFjKEdyYXBoaWNzTGF5ZXJDbGllbnQq
KTsKLSAgICB2aXJ0dWFsIH5HcmFwaGljc0xheWVyTWFjKCk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQg
c2V0TmFtZShjb25zdCBTdHJpbmcmKTsKLQotICAgIC8vIGZvciBob3N0aW5nIHRoaXMgR3JhcGhp
Y3NMYXllciBpbiBhIG5hdGl2ZSBsYXllciBoaWVyYXJjaHkKLSAgICB2aXJ0dWFsIE5hdGl2ZUxh
eWVyIG5hdGl2ZUxheWVyKCkgY29uc3Q7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgc2V0Q2hpbGRyZW4o
Y29uc3QgVmVjdG9yPEdyYXBoaWNzTGF5ZXIqPiYpOwotICAgIHZpcnR1YWwgdm9pZCBhZGRDaGls
ZChHcmFwaGljc0xheWVyKik7Ci0gICAgdmlydHVhbCB2b2lkIGFkZENoaWxkQXRJbmRleChHcmFw
aGljc0xheWVyKiwgaW50IGluZGV4KTsKLSAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGRBYm92ZShH
cmFwaGljc0xheWVyKiBsYXllciwgR3JhcGhpY3NMYXllciogc2libGluZyk7Ci0gICAgdmlydHVh
bCB2b2lkIGFkZENoaWxkQmVsb3coR3JhcGhpY3NMYXllciogbGF5ZXIsIEdyYXBoaWNzTGF5ZXIq
IHNpYmxpbmcpOwotICAgIHZpcnR1YWwgYm9vbCByZXBsYWNlQ2hpbGQoR3JhcGhpY3NMYXllciog
b2xkQ2hpbGQsIEdyYXBoaWNzTGF5ZXIqIG5ld0NoaWxkKTsKLQotICAgIHZpcnR1YWwgdm9pZCBy
ZW1vdmVGcm9tUGFyZW50KCk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0TWFza0xheWVyKEdyYXBo
aWNzTGF5ZXIqKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0UmVwbGljYXRlZExheWVyKEdyYXBoaWNz
TGF5ZXIqKTsKLQotICAgIHZpcnR1YWwgdm9pZCBzZXRQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50
Jik7Ci0gICAgdmlydHVhbCB2b2lkIHNldEFuY2hvclBvaW50KGNvbnN0IEZsb2F0UG9pbnQzRCYp
OwotICAgIHZpcnR1YWwgdm9pZCBzZXRTaXplKGNvbnN0IEZsb2F0U2l6ZSYpOwotCi0gICAgdmly
dHVhbCB2b2lkIHNldFRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpOwotCi0g
ICAgdmlydHVhbCB2b2lkIHNldENoaWxkcmVuVHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4Jik7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0UHJlc2VydmVzM0QoYm9vbCk7Ci0gICAg
dmlydHVhbCB2b2lkIHNldE1hc2tzVG9Cb3VuZHMoYm9vbCk7Ci0gICAgdmlydHVhbCB2b2lkIHNl
dERyYXdzQ29udGVudChib29sKTsKLQotICAgIHZpcnR1YWwgdm9pZCBzZXRCYWNrZ3JvdW5kQ29s
b3IoY29uc3QgQ29sb3ImKTsKLSAgICB2aXJ0dWFsIHZvaWQgY2xlYXJCYWNrZ3JvdW5kQ29sb3Io
KTsKLQotICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c09wYXF1ZShib29sKTsKLSAgICB2aXJ0
dWFsIHZvaWQgc2V0QmFja2ZhY2VWaXNpYmlsaXR5KGJvb2wpOwotCi0gICAgLy8gcmV0dXJuIHRy
dWUgaWYgd2Ugc3RhcnRlZCBhbiBhbmltYXRpb24KLSAgICB2aXJ0dWFsIHZvaWQgc2V0T3BhY2l0
eShmbG9hdCk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNEaXNwbGF5KCk7Ci0gICAgdmly
dHVhbCB2b2lkIHNldE5lZWRzRGlzcGxheUluUmVjdChjb25zdCBGbG9hdFJlY3QmKTsKLSAgICB2
aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNOZWVkc0Rpc3BsYXkoKTsKLSAgICAKLSAgICB2aXJ0dWFs
IHZvaWQgc2V0Q29udGVudHNSZWN0KGNvbnN0IEludFJlY3QmKTsKLSAgICAKLSAgICB2aXJ0dWFs
IHZvaWQgc3VzcGVuZEFuaW1hdGlvbnMoZG91YmxlIHRpbWUpOwotICAgIHZpcnR1YWwgdm9pZCBy
ZXN1bWVBbmltYXRpb25zKCk7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgYWRkQW5pbWF0aW9uKGNvbnN0
IEtleWZyYW1lVmFsdWVMaXN0JiwgY29uc3QgSW50U2l6ZSYgYm94U2l6ZSwgY29uc3QgQW5pbWF0
aW9uKiwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBkb3VibGUgdGltZU9mZnNldCk7Ci0g
ICAgdmlydHVhbCB2b2lkIHBhdXNlQW5pbWF0aW9uKGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFt
ZSwgZG91YmxlIHRpbWVPZmZzZXQpOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVBbmltYXRpb24o
Y29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lKTsKLQotICAgIHZpcnR1YWwgdm9pZCBzZXRDb250
ZW50c1RvSW1hZ2UoSW1hZ2UqKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNUb01lZGlh
KFBsYXRmb3JtTGF5ZXIqKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNUb0NhbnZhcyhQ
bGF0Zm9ybUxheWVyKik7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgaGFzQ29udGVudHNMYXllcigpIGNv
bnN0IHsgcmV0dXJuIG1fY29udGVudHNMYXllcjsgfQotICAgIAotICAgIHZpcnR1YWwgUGxhdGZv
cm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0OwotCi0gICAgdmlydHVhbCB2b2lkIHNldERl
YnVnQmFja2dyb3VuZENvbG9yKGNvbnN0IENvbG9yJik7Ci0gICAgdmlydHVhbCB2b2lkIHNldERl
YnVnQm9yZGVyKGNvbnN0IENvbG9yJiwgZmxvYXQgYm9yZGVyV2lkdGgpOwotCi0gICAgdmlydHVh
bCB2b2lkIGRpZERpc3BsYXkoUGxhdGZvcm1MYXllciopOwotCi0gICAgdm9pZCByZWN1cnNpdmVD
b21taXRDaGFuZ2VzKCk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgc3luY0NvbXBvc2l0aW5nU3RhdGUo
KTsKLSAgICB2aXJ0dWFsIHZvaWQgc3luY0NvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5
KCk7Ci0KLSAgICAvLyBTaG91bGQgb25seSBiZSBjYWxsZWQgYnkgYW5pbWF0aW9uRGlkU3RhcnQ6
IGNhbGxiYWNrCi0gICAgdm9pZCBhbmltYXRpb25EaWRTdGFydChDQUFuaW1hdGlvbiopOwotICAg
IAotcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgdm9pZCBzZXRPcGFjaXR5SW50ZXJuYWwoZmxvYXQp
OwotCi1wcml2YXRlOgotICAgIHZvaWQgdXBkYXRlT3BhY2l0eU9uTGF5ZXIoKTsKLQotICAgIENB
TGF5ZXIqIHByaW1hcnlMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fc3RydWN0dXJhbExheWVyLmdl
dCgpID8gbV9zdHJ1Y3R1cmFsTGF5ZXIuZ2V0KCkgOiBtX2xheWVyLmdldCgpOyB9Ci0gICAgQ0FM
YXllciogaG9zdExheWVyRm9yU3VibGF5ZXJzKCkgY29uc3Q7Ci0gICAgQ0FMYXllciogbGF5ZXJG
b3JTdXBlcmxheWVyKCkgY29uc3Q7Ci0gICAgQ0FMYXllciogYW5pbWF0ZWRMYXllcihBbmltYXRl
ZFByb3BlcnR5SUQpIGNvbnN0OwotCi0gICAgdHlwZWRlZiBTdHJpbmcgQ2xvbmVJRDsgLy8gSWRl
bnRpZmllciBmb3IgYSBnaXZlbiBjbG9uZSwgYmFzZWQgb24gb3JpZ2luYWwvcmVwbGljYSBicmFu
Y2hpbmcgZG93biB0aGUgdHJlZS4KLSAgICBzdGF0aWMgYm9vbCBpc1JlcGxpY2F0ZWRSb290Q2xv
bmUoY29uc3QgQ2xvbmVJRCYgY2xvbmVJRCkgeyByZXR1cm4gY2xvbmVJRFswVV0gJiAxOyB9Ci0K
LSAgICB0eXBlZGVmIEhhc2hNYXA8Q2xvbmVJRCwgUmV0YWluUHRyPENBTGF5ZXI+ID4gTGF5ZXJN
YXA7Ci0gICAgTGF5ZXJNYXAqIHByaW1hcnlMYXllckNsb25lcygpIGNvbnN0IHsgcmV0dXJuIG1f
c3RydWN0dXJhbExheWVyLmdldCgpID8gbV9zdHJ1Y3R1cmFsTGF5ZXJDbG9uZXMuZ2V0KCkgOiBt
X2xheWVyQ2xvbmVzLmdldCgpOyB9Ci0gICAgTGF5ZXJNYXAqIGFuaW1hdGVkTGF5ZXJDbG9uZXMo
QW5pbWF0ZWRQcm9wZXJ0eUlEKSBjb25zdDsKLQotICAgIGJvb2wgY3JlYXRlQW5pbWF0aW9uRnJv
bUtleWZyYW1lcyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYsIGNvbnN0IEFuaW1hdGlvbiosIGNv
bnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSwgZG91YmxlIHRpbWVPZmZzZXQpOwotICAgIGJvb2wg
Y3JlYXRlVHJhbnNmb3JtQW5pbWF0aW9uc0Zyb21LZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1
ZUxpc3QmLCBjb25zdCBBbmltYXRpb24qLCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGRv
dWJsZSB0aW1lT2Zmc2V0LCBjb25zdCBJbnRTaXplJiBib3hTaXplKTsKLQotICAgIC8vIFJldHVy
biBhdXRvcmVsZWFzZWQgYW5pbWF0aW9uICh1c2UgUmV0YWluUHRyPykKLSAgICBDQUJhc2ljQW5p
bWF0aW9uKiBjcmVhdGVCYXNpY0FuaW1hdGlvbihjb25zdCBBbmltYXRpb24qLCBBbmltYXRlZFBy
b3BlcnR5SUQsIGJvb2wgYWRkaXRpdmUpOwotICAgIENBS2V5ZnJhbWVBbmltYXRpb24qIGNyZWF0
ZUtleWZyYW1lQW5pbWF0aW9uKGNvbnN0IEFuaW1hdGlvbiosIEFuaW1hdGVkUHJvcGVydHlJRCwg
Ym9vbCBhZGRpdGl2ZSk7Ci0gICAgdm9pZCBzZXR1cEFuaW1hdGlvbihDQVByb3BlcnR5QW5pbWF0
aW9uKiwgY29uc3QgQW5pbWF0aW9uKiwgYm9vbCBhZGRpdGl2ZSk7Ci0gICAgCi0gICAgQ0FNZWRp
YVRpbWluZ0Z1bmN0aW9uKiB0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKGNvbnN0IEFu
aW1hdGlvblZhbHVlKiwgY29uc3QgQW5pbWF0aW9uKik7Ci0gICAgCi0gICAgYm9vbCBzZXRBbmlt
YXRpb25FbmRwb2ludHMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmLCBjb25zdCBBbmltYXRpb24q
LCBDQUJhc2ljQW5pbWF0aW9uKik7Ci0gICAgYm9vbCBzZXRBbmltYXRpb25LZXlmcmFtZXMoY29u
c3QgS2V5ZnJhbWVWYWx1ZUxpc3QmLCBjb25zdCBBbmltYXRpb24qLCBDQUtleWZyYW1lQW5pbWF0
aW9uKik7Ci0KLSAgICBib29sIHNldFRyYW5zZm9ybUFuaW1hdGlvbkVuZHBvaW50cyhjb25zdCBL
ZXlmcmFtZVZhbHVlTGlzdCYsIGNvbnN0IEFuaW1hdGlvbiosIENBQmFzaWNBbmltYXRpb24qLCBp
bnQgZnVuY3Rpb25JbmRleCwgVHJhbnNmb3JtT3BlcmF0aW9uOjpPcGVyYXRpb25UeXBlLCBib29s
IGlzTWF0cml4QW5pbWF0aW9uLCBjb25zdCBJbnRTaXplJiBib3hTaXplKTsKLSAgICBib29sIHNl
dFRyYW5zZm9ybUFuaW1hdGlvbktleWZyYW1lcyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYsIGNv
bnN0IEFuaW1hdGlvbiosIENBS2V5ZnJhbWVBbmltYXRpb24qLCBpbnQgZnVuY3Rpb25JbmRleCwg
VHJhbnNmb3JtT3BlcmF0aW9uOjpPcGVyYXRpb25UeXBlLCBib29sIGlzTWF0cml4QW5pbWF0aW9u
LCBjb25zdCBJbnRTaXplJiBib3hTaXplKTsKLSAgICAKLSAgICBib29sIGFuaW1hdGlvbklzUnVu
bmluZyhjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUpIGNvbnN0Ci0gICAgewotICAgICAgICBy
ZXR1cm4gbV9ydW5uaW5nQW5pbWF0aW9ucy5maW5kKGFuaW1hdGlvbk5hbWUpICE9IG1fcnVubmlu
Z0FuaW1hdGlvbnMuZW5kKCk7Ci0gICAgfQotCi0gICAgdm9pZCBjb21taXRMYXllckNoYW5nZXNC
ZWZvcmVTdWJsYXllcnMoKTsKLSAgICB2b2lkIGNvbW1pdExheWVyQ2hhbmdlc0FmdGVyU3VibGF5
ZXJzKCk7Ci0KLSAgICBGbG9hdFNpemUgY29uc3RyYWluZWRTaXplKCkgY29uc3Q7Ci0KLSAgICBi
b29sIHJlcXVpcmVzVGlsZWRMYXllcihjb25zdCBGbG9hdFNpemUmKSBjb25zdDsKLSAgICB2b2lk
IHN3YXBGcm9tT3JUb1RpbGVkTGF5ZXIoYm9vbCB1c2VUaWxlZExheWVyKTsKLQotICAgIENvbXBv
c2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBkZWZhdWx0Q29udGVudHNPcmllbnRhdGlvbigp
IGNvbnN0OwotICAgIHZvaWQgdXBkYXRlQ29udGVudHNUcmFuc2Zvcm0oKTsKLSAgICAKLSAgICB2
b2lkIHNldHVwQ29udGVudHNMYXllcihDQUxheWVyKik7Ci0gICAgQ0FMYXllciogY29udGVudHNM
YXllcigpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudHNMYXllci5nZXQoKTsgfQotCi0gICAgdmly
dHVhbCB2b2lkIHNldFJlcGxpY2F0ZWRCeUxheWVyKEdyYXBoaWNzTGF5ZXIqKTsKLQotICAgIC8v
IFVzZWQgdG8gdHJhY2sgdGhlIHBhdGggZG93biB0aGUgdHJlZSBmb3IgcmVwbGljYSBsYXllcnMu
Ci0gICAgc3RydWN0IFJlcGxpY2FTdGF0ZSB7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3Qg
bWF4UmVwbGljYURlcHRoID0gMTY7Ci0gICAgICAgIGVudW0gUmVwbGljYUJyYW5jaFR5cGUgeyBD
aGlsZEJyYW5jaCA9IDAsIFJlcGxpY2FCcmFuY2ggPSAxIH07Ci0gICAgICAgIFJlcGxpY2FTdGF0
ZShSZXBsaWNhQnJhbmNoVHlwZSBmaXJzdEJyYW5jaCkKLSAgICAgICAgICAgIDogbV9yZXBsaWNh
RGVwdGgoMCkKLSAgICAgICAgewotICAgICAgICAgICAgcHVzaChmaXJzdEJyYW5jaCk7Ci0gICAg
ICAgIH0KLSAgICAgICAgCi0gICAgICAgIC8vIENhbGxlZCBhcyB3ZSB3YWxrIGRvd24gdGhlIHRy
ZWUgdG8gYnVpbGQgcmVwbGljYXMuCi0gICAgICAgIHZvaWQgcHVzaChSZXBsaWNhQnJhbmNoVHlw
ZSBicmFuY2hUeXBlKQotICAgICAgICB7Ci0gICAgICAgICAgICBtX3JlcGxpY2FCcmFuY2hlcy5h
cHBlbmQoYnJhbmNoVHlwZSk7Ci0gICAgICAgICAgICBpZiAoYnJhbmNoVHlwZSA9PSBSZXBsaWNh
QnJhbmNoKQotICAgICAgICAgICAgICAgICsrbV9yZXBsaWNhRGVwdGg7Ci0gICAgICAgIH0KLSAg
ICAgICAgCi0gICAgICAgIHZvaWQgc2V0QnJhbmNoVHlwZShSZXBsaWNhQnJhbmNoVHlwZSBicmFu
Y2hUeXBlKQotICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQoIW1fcmVwbGljYUJyYW5jaGVz
LmlzRW1wdHkoKSk7Ci0KLSAgICAgICAgICAgIGlmIChtX3JlcGxpY2FCcmFuY2hlcy5sYXN0KCkg
IT0gYnJhbmNoVHlwZSkgewotICAgICAgICAgICAgICAgIGlmIChicmFuY2hUeXBlID09IFJlcGxp
Y2FCcmFuY2gpCi0gICAgICAgICAgICAgICAgICAgICsrbV9yZXBsaWNhRGVwdGg7Ci0gICAgICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAtLW1fcmVwbGljYURlcHRoOwotICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICBtX3JlcGxpY2FCcmFuY2hlcy5sYXN0KCkgPSBicmFu
Y2hUeXBlOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBwb3AoKQotICAgICAgICB7Ci0gICAg
ICAgICAgICBpZiAobV9yZXBsaWNhQnJhbmNoZXMubGFzdCgpID09IFJlcGxpY2FCcmFuY2gpCi0g
ICAgICAgICAgICAgICAgLS1tX3JlcGxpY2FEZXB0aDsKLSAgICAgICAgICAgIG1fcmVwbGljYUJy
YW5jaGVzLnJlbW92ZUxhc3QoKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgc2l6ZV90
IGRlcHRoKCkgY29uc3QgeyByZXR1cm4gbV9yZXBsaWNhQnJhbmNoZXMuc2l6ZSgpOyB9Ci0gICAg
ICAgIHNpemVfdCByZXBsaWNhRGVwdGgoKSBjb25zdCB7IHJldHVybiBtX3JlcGxpY2FEZXB0aDsg
fQotCi0gICAgICAgIENsb25lSUQgY2xvbmVJRCgpIGNvbnN0OyAgICAgICAgCi0KLSAgICBwcml2
YXRlOgotICAgICAgICBWZWN0b3I8UmVwbGljYUJyYW5jaFR5cGU+IG1fcmVwbGljYUJyYW5jaGVz
OwotICAgICAgICBzaXplX3QgbV9yZXBsaWNhRGVwdGg7Ci0gICAgfTsKLSAgICBDQUxheWVyICpy
ZXBsaWNhdGVkTGF5ZXJSb290KFJlcGxpY2FTdGF0ZSYpOwotCi0gICAgZW51bSBDbG9uZUxldmVs
IHsgUm9vdENsb25lTGV2ZWwsIEludGVybWVkaWF0ZUNsb25lTGV2ZWwgfTsKLSAgICBDQUxheWVy
ICpmZXRjaENsb25lTGF5ZXJzKEdyYXBoaWNzTGF5ZXIqIHJlcGxpY2FSb290LCBSZXBsaWNhU3Rh
dGUmLCBDbG9uZUxldmVsKTsKLSAgICAKLSAgICBDQUxheWVyICpjbG9uZUxheWVyKENBTGF5ZXIg
KiwgQ2xvbmVMZXZlbCk7Ci0gICAgQ0FMYXllciAqZmluZE9yTWFrZUNsb25lKENsb25lSUQsIENB
TGF5ZXIgKiwgTGF5ZXJNYXAqLCBDbG9uZUxldmVsKTsKLQotICAgIHZvaWQgZW5zdXJlQ2xvbmVM
YXllcnMoQ2xvbmVJRCBpbmRleCwgQ0FMYXllciAqJiBwcmltYXJ5TGF5ZXIsIENBTGF5ZXIgKiYg
c3RydWN0dXJhbExheWVyLCBDQUxheWVyIComIGNvbnRlbnRzTGF5ZXIsIENsb25lTGV2ZWwpOwot
Ci0gICAgYm9vbCBoYXNDbG9uZUxheWVycygpIGNvbnN0IHsgcmV0dXJuIG1fbGF5ZXJDbG9uZXM7
IH0KLSAgICB2b2lkIHJlbW92ZUNsb25lTGF5ZXJzKCk7Ci0gICAgRmxvYXRQb2ludCBwb3NpdGlv
bkZvckNsb25lUm9vdExheWVyKCkgY29uc3Q7Ci0gICAgCi0gICAgdm9pZCBwcm9wYWdhdGVMYXll
ckNoYW5nZVRvUmVwbGljYXMoKTsKLSAgICAKLSAgICAvLyBBbGwgdGhlc2UgInVwZGF0ZSIgbWV0
aG9kcyB3aWxsIGJlIGNhbGxlZCBpbnNpZGUgYSBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMv
RU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUyBibG9jay4KLSAgICB2b2lkIHVwZGF0ZUxheWVyTmFt
ZXMoKTsKLSAgICB2b2lkIHVwZGF0ZVN1YmxheWVyTGlzdCgpOwotICAgIHZvaWQgdXBkYXRlTGF5
ZXJQb3NpdGlvbigpOwotICAgIHZvaWQgdXBkYXRlTGF5ZXJTaXplKCk7Ci0gICAgdm9pZCB1cGRh
dGVBbmNob3JQb2ludCgpOwotICAgIHZvaWQgdXBkYXRlVHJhbnNmb3JtKCk7Ci0gICAgdm9pZCB1
cGRhdGVDaGlsZHJlblRyYW5zZm9ybSgpOwotICAgIHZvaWQgdXBkYXRlTWFza3NUb0JvdW5kcygp
OwotICAgIHZvaWQgdXBkYXRlQ29udGVudHNPcGFxdWUoKTsKLSAgICB2b2lkIHVwZGF0ZUJhY2tm
YWNlVmlzaWJpbGl0eSgpOwotICAgIHZvaWQgdXBkYXRlU3RydWN0dXJhbExheWVyKCk7Ci0gICAg
dm9pZCB1cGRhdGVMYXllckRyYXdzQ29udGVudCgpOwotICAgIHZvaWQgdXBkYXRlTGF5ZXJCYWNr
Z3JvdW5kQ29sb3IoKTsKLQotICAgIHZvaWQgdXBkYXRlQ29udGVudHNJbWFnZSgpOwotICAgIHZv
aWQgdXBkYXRlQ29udGVudHNNZWRpYUxheWVyKCk7Ci0gICAgdm9pZCB1cGRhdGVDb250ZW50c0Nh
bnZhc0xheWVyKCk7Ci0gICAgdm9pZCB1cGRhdGVDb250ZW50c1JlY3QoKTsKLSAgICB2b2lkIHVw
ZGF0ZU1hc2tMYXllcigpOwotICAgIHZvaWQgdXBkYXRlUmVwbGljYXRlZExheWVycygpOwotCi0g
ICAgdm9pZCB1cGRhdGVMYXllckFuaW1hdGlvbnMoKTsKLSAgICB2b2lkIHVwZGF0ZUNvbnRlbnRz
TmVlZHNEaXNwbGF5KCk7Ci0gICAgCi0gICAgZW51bSBTdHJ1Y3R1cmFsTGF5ZXJQdXJwb3NlIHsK
LSAgICAgICAgTm9TdHJ1Y3R1cmFsTGF5ZXIgPSAwLAotICAgICAgICBTdHJ1Y3R1cmFsTGF5ZXJG
b3JQcmVzZXJ2ZXMzRCwKLSAgICAgICAgU3RydWN0dXJhbExheWVyRm9yUmVwbGljYUZsYXR0ZW5p
bmcKLSAgICB9OwotICAgIHZvaWQgZW5zdXJlU3RydWN0dXJhbExheWVyKFN0cnVjdHVyYWxMYXll
clB1cnBvc2UpOwotICAgIFN0cnVjdHVyYWxMYXllclB1cnBvc2Ugc3RydWN0dXJhbExheWVyUHVy
cG9zZSgpIGNvbnN0OwotCi0gICAgdm9pZCBzZXRDQUFuaW1hdGlvbk9uTGF5ZXIoQ0FQcm9wZXJ0
eUFuaW1hdGlvbiosIEFuaW1hdGVkUHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25O
YW1lLCBpbnQgaW5kZXgsIGRvdWJsZSB0aW1lT2Zmc2V0KTsKLSAgICBib29sIHJlbW92ZUNBQW5p
bWF0aW9uRnJvbUxheWVyKEFuaW1hdGVkUHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiBhbmltYXRp
b25OYW1lLCBpbnQgaW5kZXgpOwotICAgIHZvaWQgcGF1c2VDQUFuaW1hdGlvbk9uTGF5ZXIoQW5p
bWF0ZWRQcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGludCBpbmRleCwg
ZG91YmxlIHRpbWVPZmZzZXQpOwotCi0gICAgZW51bSBNb3ZlT3JDb3B5IHsgTW92ZSwgQ29weSB9
OwotICAgIHN0YXRpYyB2b2lkIG1vdmVPckNvcHlMYXllckFuaW1hdGlvbihNb3ZlT3JDb3B5LCBj
b25zdCBTdHJpbmcmIGFuaW1hdGlvbklkZW50aWZpZXIsIENBTGF5ZXIgKmZyb21MYXllciwgQ0FM
YXllciAqdG9MYXllcik7Ci0gICAgdm9pZCBtb3ZlT3JDb3B5QW5pbWF0aW9uc0ZvclByb3BlcnR5
KE1vdmVPckNvcHksIEFuaW1hdGVkUHJvcGVydHlJRCwgQ0FMYXllciAqIGZyb21MYXllciwgQ0FM
YXllciAqIHRvTGF5ZXIpOwotICAgIAotICAgIGVudW0gTGF5ZXJDaGFuZ2UgewotICAgICAgICBO
b0NoYW5nZSA9IDAsCi0gICAgICAgIE5hbWVDaGFuZ2VkID0gMSA8PCAxLAotICAgICAgICBDaGls
ZHJlbkNoYW5nZWQgPSAxIDw8IDIsICAgLy8gYWxzbyB1c2VkIGZvciBjb250ZW50IGxheWVyLCBh
bmQgcHJlc2VydmVzLTNkLCBhbmQgc2l6ZSBpZiB0aWxpbmcgY2hhbmdlcz8KLSAgICAgICAgUG9z
aXRpb25DaGFuZ2VkID0gMSA8PCAzLAotICAgICAgICBBbmNob3JQb2ludENoYW5nZWQgPSAxIDw8
IDQsCi0gICAgICAgIFNpemVDaGFuZ2VkID0gMSA8PCA1LAotICAgICAgICBUcmFuc2Zvcm1DaGFu
Z2VkID0gMSA8PCA2LAotICAgICAgICBDaGlsZHJlblRyYW5zZm9ybUNoYW5nZWQgPSAxIDw8IDcs
Ci0gICAgICAgIFByZXNlcnZlczNEQ2hhbmdlZCA9IDEgPDwgOCwKLSAgICAgICAgTWFza3NUb0Jv
dW5kc0NoYW5nZWQgPSAxIDw8IDksCi0gICAgICAgIERyYXdzQ29udGVudENoYW5nZWQgPSAxIDw8
IDEwLCAgLy8gbmVlZCB0aGlzPwotICAgICAgICBCYWNrZ3JvdW5kQ29sb3JDaGFuZ2VkID0gMSA8
PCAxMSwKLSAgICAgICAgQ29udGVudHNPcGFxdWVDaGFuZ2VkID0gMSA8PCAxMiwKLSAgICAgICAg
QmFja2ZhY2VWaXNpYmlsaXR5Q2hhbmdlZCA9IDEgPDwgMTMsCi0gICAgICAgIE9wYWNpdHlDaGFu
Z2VkID0gMSA8PCAxNCwKLSAgICAgICAgQW5pbWF0aW9uQ2hhbmdlZCA9IDEgPDwgMTUsCi0gICAg
ICAgIERpcnR5UmVjdHNDaGFuZ2VkID0gMSA8PCAxNiwKLSAgICAgICAgQ29udGVudHNJbWFnZUNo
YW5nZWQgPSAxIDw8IDE3LAotICAgICAgICBDb250ZW50c01lZGlhTGF5ZXJDaGFuZ2VkID0gMSA8
PCAxOCwKLSAgICAgICAgQ29udGVudHNDYW52YXNMYXllckNoYW5nZWQgPSAxIDw8IDE5LAotICAg
ICAgICBDb250ZW50c1JlY3RDaGFuZ2VkID0gMSA8PCAyMCwKLSAgICAgICAgTWFza0xheWVyQ2hh
bmdlZCA9IDEgPDwgMjEsCi0gICAgICAgIFJlcGxpY2F0ZWRMYXllckNoYW5nZWQgPSAxIDw8IDIy
LAotICAgICAgICBDb250ZW50c05lZWRzRGlzcGxheSA9IDEgPDwgMjMKLSAgICB9OwotICAgIHR5
cGVkZWYgdW5zaWduZWQgTGF5ZXJDaGFuZ2VGbGFnczsKLSAgICB2b2lkIG5vdGVMYXllclByb3Bl
cnR5Q2hhbmdlZChMYXllckNoYW5nZUZsYWdzIGZsYWdzKTsKLSAgICB2b2lkIG5vdGVTdWJsYXll
cnNDaGFuZ2VkKCk7Ci0KLSAgICB2b2lkIHJlcGFpbnRMYXllckRpcnR5UmVjdHMoKTsKLQotICAg
IFJldGFpblB0cjxXZWJMYXllcj4gbV9sYXllcjsgLy8gVGhlIG1haW4gbGF5ZXIKLSAgICBSZXRh
aW5QdHI8Q0FMYXllcj4gbV9zdHJ1Y3R1cmFsTGF5ZXI7IC8vIEEgbGF5ZXIgdXNlZCBmb3Igc3Ry
dWN0dXJhbCByZWFzb25zLCBsaWtlIHByZXNlcnZlcy0zZCBvciByZXBsaWNhLWZsYXR0ZW5pbmcu
IElzIHRoZSBwYXJlbnQgb2YgbV9sYXllci4KLSAgICBSZXRhaW5QdHI8Q0FMYXllcj4gbV9jb250
ZW50c0xheWVyOyAvLyBBIGxheWVyIHVzZWQgZm9yIGlubmVyIGNvbnRlbnQsIGxpa2UgaW1hZ2Ug
YW5kIHZpZGVvCi0KLSAgICAvLyBSZWZlcmVuY2VzIHRvIGNsb25lcyBvZiBvdXIgbGF5ZXJzLCBm
b3IgcmVwbGljYXRlZCBsYXllcnMuCi0gICAgT3duUHRyPExheWVyTWFwPiBtX2xheWVyQ2xvbmVz
OwotICAgIE93blB0cjxMYXllck1hcD4gbV9zdHJ1Y3R1cmFsTGF5ZXJDbG9uZXM7Ci0gICAgT3du
UHRyPExheWVyTWFwPiBtX2NvbnRlbnRzTGF5ZXJDbG9uZXM7Ci0gICAgCi0gICAgZW51bSBDb250
ZW50c0xheWVyUHVycG9zZSB7Ci0gICAgICAgIE5vQ29udGVudHNMYXllciA9IDAsCi0gICAgICAg
IENvbnRlbnRzTGF5ZXJGb3JJbWFnZSwKLSAgICAgICAgQ29udGVudHNMYXllckZvck1lZGlhLAot
ICAgICAgICBDb250ZW50c0xheWVyRm9yQ2FudmFzCi0gICAgfTsKLSAgICAKLSAgICBDb250ZW50
c0xheWVyUHVycG9zZSBtX2NvbnRlbnRzTGF5ZXJQdXJwb3NlOwotICAgIGJvb2wgbV9jb250ZW50
c0xheWVySGFzQmFja2dyb3VuZENvbG9yIDogMTsKLQotICAgIFJldGFpblB0cjxXZWJBbmltYXRp
b25EZWxlZ2F0ZT4gbV9hbmltYXRpb25EZWxlZ2F0ZTsKLQotICAgIFJldGFpblB0cjxDR0ltYWdl
UmVmPiBtX3VuY29ycmVjdGVkQ29udGVudHNJbWFnZTsKLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJl
Zj4gbV9wZW5kaW5nQ29udGVudHNJbWFnZTsKLSAgICAKLSAgICAvLyBUaGlzIHJlcHJlc2VudHMg
dGhlIGFuaW1hdGlvbiBvZiBhIHNpbmdsZSBwcm9wZXJ0eS4gVGhlcmUgbWF5IGJlIG11bHRpcGxl
IHRyYW5zZm9ybSBhbmltYXRpb25zIGZvcgotICAgIC8vIGEgc2luZ2xlIHRyYW5zaXRpb24gb3Ig
a2V5ZnJhbWUgYW5pbWF0aW9uLCBzbyBpbmRleCBpcyB1c2VkIHRvIGRpc3Rpbmd1aXNoIHRoZXNl
LgotICAgIHN0cnVjdCBMYXllclByb3BlcnR5QW5pbWF0aW9uIHsKLSAgICAgICAgTGF5ZXJQcm9w
ZXJ0eUFuaW1hdGlvbihDQVByb3BlcnR5QW5pbWF0aW9uKiBjYUFuaW1hdGlvbiwgY29uc3QgU3Ry
aW5nJiBhbmltYXRpb25OYW1lLCBBbmltYXRlZFByb3BlcnR5SUQgcHJvcGVydHksIGludCBpbmRl
eCwgZG91YmxlIHRpbWVPZmZzZXQpCi0gICAgICAgIDogbV9hbmltYXRpb24oY2FBbmltYXRpb24p
Ci0gICAgICAgICwgbV9uYW1lKGFuaW1hdGlvbk5hbWUpCi0gICAgICAgICwgbV9wcm9wZXJ0eShw
cm9wZXJ0eSkKLSAgICAgICAgLCBtX2luZGV4KGluZGV4KQotICAgICAgICAsIG1fdGltZU9mZnNl
dCh0aW1lT2Zmc2V0KQotICAgICAgICB7IH0KLQotICAgICAgICBSZXRhaW5QdHI8Q0FQcm9wZXJ0
eUFuaW1hdGlvbio+IG1fYW5pbWF0aW9uOwotICAgICAgICBTdHJpbmcgbV9uYW1lOwotICAgICAg
ICBBbmltYXRlZFByb3BlcnR5SUQgbV9wcm9wZXJ0eTsKLSAgICAgICAgaW50IG1faW5kZXg7Ci0g
ICAgICAgIGRvdWJsZSBtX3RpbWVPZmZzZXQ7Ci0gICAgfTsKLSAgICAKLSAgICAvLyBVbmNvbW1p
dHRlZCB0cmFuc2l0aW9ucyBhbmQgYW5pbWF0aW9ucy4KLSAgICBWZWN0b3I8TGF5ZXJQcm9wZXJ0
eUFuaW1hdGlvbj4gbV91bmNvbWl0dGVkQW5pbWF0aW9uczsKLSAgICAKLSAgICBlbnVtIEFjdGlv
biB7IFJlbW92ZSwgUGF1c2UgfTsKLSAgICBzdHJ1Y3QgQW5pbWF0aW9uUHJvY2Vzc2luZ0FjdGlv
biB7Ci0gICAgICAgIEFuaW1hdGlvblByb2Nlc3NpbmdBY3Rpb24oQWN0aW9uIGFjdGlvbiA9IFJl
bW92ZSwgZG91YmxlIHRpbWVPZmZzZXQgPSAwKQotICAgICAgICAgICAgOiBhY3Rpb24oYWN0aW9u
KQotICAgICAgICAgICAgLCB0aW1lT2Zmc2V0KHRpbWVPZmZzZXQpCi0gICAgICAgIHsKLSAgICAg
ICAgfQotICAgICAgICBBY3Rpb24gYWN0aW9uOwotICAgICAgICBkb3VibGUgdGltZU9mZnNldDsg
Ly8gb25seSB1c2VkIGZvciBwYXVzZQotICAgIH07Ci0gICAgdHlwZWRlZiBIYXNoTWFwPFN0cmlu
ZywgQW5pbWF0aW9uUHJvY2Vzc2luZ0FjdGlvbj4gQW5pbWF0aW9uc1RvUHJvY2Vzc01hcDsKLSAg
ICBBbmltYXRpb25zVG9Qcm9jZXNzTWFwIG1fYW5pbWF0aW9uc1RvUHJvY2VzczsKLQotICAgIC8v
IE1hcCBvZiBhbmltYXRpb24gbmFtZXMgdG8gdGhlaXIgYXNzb2NpYXRlZCBsaXN0cyBvZiBwcm9w
ZXJ0eSBhbmltYXRpb25zLCBzbyB3ZSBjYW4gcmVtb3ZlL3BhdXNlIHRoZW0uCi0gICAgdHlwZWRl
ZiBIYXNoTWFwPFN0cmluZywgVmVjdG9yPExheWVyUHJvcGVydHlBbmltYXRpb24+ID4gQW5pbWF0
aW9uc01hcDsKLSAgICBBbmltYXRpb25zTWFwIG1fcnVubmluZ0FuaW1hdGlvbnM7Ci0KLSAgICBW
ZWN0b3I8RmxvYXRSZWN0PiBtX2RpcnR5UmVjdHM7Ci0gICAgCi0gICAgTGF5ZXJDaGFuZ2VGbGFn
cyBtX3VuY29tbWl0dGVkQ2hhbmdlczsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQot
Ci0jZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotCi0jZW5kaWYgLy8gR3Jh
cGhpY3NMYXllck1hY19oCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFw
aGljc0xheWVyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL0dyYXBoaWNzTGF5ZXJNYWMubW0JKHJldmlzaW9uIDczMjczKQorKysgV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NMYXllck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAt
MSwyNTE0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotCi0jaWYgVVNFKEFDQ0VMRVJBVEVE
X0NPTVBPU0lUSU5HKQotCi0jaW1wb3J0ICJHcmFwaGljc0xheWVyTWFjLmgiCi0KLSNpbXBvcnQg
IkFuaW1hdGlvbi5oIgotI2ltcG9ydCAiQmxvY2tFeGNlcHRpb25zLmgiCi0jaW1wb3J0ICJGbG9h
dENvbnZlcnNpb24uaCIKLSNpbXBvcnQgIkZsb2F0UmVjdC5oIgotI2ltcG9ydCAiSW1hZ2UuaCIK
LSNpbXBvcnQgIlBsYXRmb3JtU3RyaW5nLmgiCi0jaW1wb3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNv
cmUuaD4KLSNpbXBvcnQgIlJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oIgotI2ltcG9ydCAiU2Nh
bGVUcmFuc2Zvcm1PcGVyYXRpb24uaCIKLSNpbXBvcnQgIlN5c3RlbVRpbWUuaCIKLSNpbXBvcnQg
IlRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oIgotI2ltcG9ydCAiV2ViTGF5ZXIuaCIKLSNp
bXBvcnQgIldlYlRpbGVkTGF5ZXIuaCIKLSNpbXBvcnQgPGxpbWl0cy5oPgotI2ltcG9ydCA8b2Jq
Yy9vYmpjLWF1dG8uaD4KLSNpbXBvcnQgPHd0Zi9DdXJyZW50VGltZS5oPgotI2ltcG9ydCA8d3Rm
L1VudXNlZFBhcmFtLmg+Ci0jaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+Ci0jaW1wb3J0IDx3dGYv
dGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgotCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCi0jZGVm
aW5lIEhBVkVfTU9ERVJOX1FVQVJUWkNPUkUgKCFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAm
JiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSkKLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1zdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBXZWJLaXRBbmltYXRpb25CZWdpblRpbWVTZXRLZXkg
PSBAIldlYktpdEFuaW1hdGlvbkJlZ2luVGltZVNldCI7Ci0KLS8vIFRoZSB0aHJlc2hvbGQgd2lk
dGggb3IgaGVpZ2h0IGFib3ZlIHdoaWNoIGEgdGlsZWQgbGF5ZXIgd2lsbCBiZSB1c2VkLiBUaGlz
IHNob3VsZCBiZQotLy8gbGFyZ2UgZW5vdWdoIHRvIGF2b2lkIHRpbGVkIGxheWVycyBmb3IgbW9z
dCBHcmFwaGljc0xheWVycywgYnV0IGxlc3MgdGhhbiB0aGUgT3BlbkdMCi0vLyB0ZXh0dXJlIHNp
emUgbGltaXQgb24gYWxsIHN1cHBvcnRlZCBoYXJkd2FyZS4KLXN0YXRpYyBjb25zdCBpbnQgY01h
eFBpeGVsRGltZW5zaW9uID0gMjAwMDsKLQotLy8gVGhlIHdpZHRoIGFuZCBoZWlnaHQgb2YgYSBz
aW5nbGUgdGlsZSBpbiBhIHRpbGVkIGxheWVyLiBTaG91bGQgYmUgbGFyZ2UgZW5vdWdoIHRvCi0v
LyBhdm9pZCBsb3RzIG9mIHNtYWxsIHRpbGVzIChhbmQgdGhlcmVmb3JlIGxvdHMgb2YgZHJhd2lu
ZyBjYWxsYmFja3MpLCBidXQgc21hbGwgZW5vdWdoCi0vLyB0byBrZWVwIHRoZSBvdmVyYWxsIHRp
bGUgY29zdCBsb3cuCi1zdGF0aWMgY29uc3QgaW50IGNUaWxlZExheWVyVGlsZVNpemUgPSA1MTI7
Ci0KLS8vIElmIHdlIHNlbmQgYSBkdXJhdGlvbiBvZiAwIHRvIENBLCB0aGVuIGl0IHdpbGwgdXNl
IHRoZSBkZWZhdWx0IGR1cmF0aW9uCi0vLyBvZiAyNTBtcy4gU28gc2VuZCBhIHZlcnkgc21hbGwg
dmFsdWUgaW5zdGVhZC4KLXN0YXRpYyBjb25zdCBmbG9hdCBjQW5pbWF0aW9uQWxtb3N0WmVyb0R1
cmF0aW9uID0gMWUtM2Y7Ci0KLS8vIENBQ3VycmVudE1lZGlhVGltZSgpIGlzIGEgdGltZSBzaW5j
ZSBib290LiBUaGVzZSBtZXRob2RzIGNvbnZlcnQgYmV0d2VlbiB0aGF0IGFuZAotLy8gV2ViQ29y
ZSB0aW1lLCB3aGljaCBpcyBzeXN0ZW0gdGltZSAoVVRDKS4KLXN0YXRpYyBDRlRpbWVJbnRlcnZh
bCBjdXJyZW50VGltZVRvTWVkaWFUaW1lKGRvdWJsZSB0KQotewotICAgIHJldHVybiBDQUN1cnJl
bnRNZWRpYVRpbWUoKSArIHQgLSBXVEY6OmN1cnJlbnRUaW1lKCk7Ci19Ci0KLXN0YXRpYyBkb3Vi
bGUgbWVkaWFUaW1lVG9DdXJyZW50VGltZShDRlRpbWVJbnRlcnZhbCB0KQotewotICAgIHJldHVy
biBXVEY6OmN1cnJlbnRUaW1lKCkgKyB0IC0gQ0FDdXJyZW50TWVkaWFUaW1lKCk7Ci19Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKLQotQGludGVyZmFjZSBDQUxheWVyKFByaXZhdGUpCi0tICh2
b2lkKXNldENvbnRlbnRzQ2hhbmdlZDsKLUBlbmQKLQotQGludGVyZmFjZSBXZWJBbmltYXRpb25E
ZWxlZ2F0ZSA6IE5TT2JqZWN0IHsKLSAgICBXZWJDb3JlOjpHcmFwaGljc0xheWVyTWFjKiBtX2dy
YXBoaWNzTGF5ZXI7Ci19Ci0KLS0gKHZvaWQpYW5pbWF0aW9uRGlkU3RhcnQ6KENBQW5pbWF0aW9u
ICopYW5pbTsKLS0gKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJNYWMqKWdyYXBoaWNzTGF5ZXI7Ci0t
ICh2b2lkKXNldExheWVyOihXZWJDb3JlOjpHcmFwaGljc0xheWVyTWFjKilncmFwaGljc0xheWVy
OwotCi1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBXZWJBbmltYXRpb25EZWxlZ2F0ZQotCi0tICh2
b2lkKWFuaW1hdGlvbkRpZFN0YXJ0OihDQUFuaW1hdGlvbiAqKWFuaW1hdGlvbgotewotICAgIGlm
IChtX2dyYXBoaWNzTGF5ZXIpCi0gICAgICAgIG1fZ3JhcGhpY3NMYXllci0+YW5pbWF0aW9uRGlk
U3RhcnQoYW5pbWF0aW9uKTsKLX0KLQotLSAoV2ViQ29yZTo6R3JhcGhpY3NMYXllck1hYyopZ3Jh
cGhpY3NMYXllcgotewotICAgIHJldHVybiBtX2dyYXBoaWNzTGF5ZXI7Ci19Ci0KLS0gKHZvaWQp
c2V0TGF5ZXI6KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJNYWMqKWdyYXBoaWNzTGF5ZXIKLXsKLSAg
ICBtX2dyYXBoaWNzTGF5ZXIgPSBncmFwaGljc0xheWVyOwotfQotCi1AZW5kCi0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotc3RhdGljIGlubGluZSB2b2lkIGNvcHlUcmFuc2Zvcm0oQ0FUcmFuc2Zv
cm0zRCYgdG9UM0QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0KQotewotICAgIHRvVDNE
Lm0xMSA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodC5tMTEoKSk7Ci0gICAgdG9UM0QubTEyID0g
bmFycm93UHJlY2lzaW9uVG9GbG9hdCh0Lm0xMigpKTsKLSAgICB0b1QzRC5tMTMgPSBuYXJyb3dQ
cmVjaXNpb25Ub0Zsb2F0KHQubTEzKCkpOwotICAgIHRvVDNELm0xNCA9IG5hcnJvd1ByZWNpc2lv
blRvRmxvYXQodC5tMTQoKSk7Ci0gICAgdG9UM0QubTIxID0gbmFycm93UHJlY2lzaW9uVG9GbG9h
dCh0Lm0yMSgpKTsKLSAgICB0b1QzRC5tMjIgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHQubTIy
KCkpOwotICAgIHRvVDNELm0yMyA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodC5tMjMoKSk7Ci0g
ICAgdG9UM0QubTI0ID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCh0Lm0yNCgpKTsKLSAgICB0b1Qz
RC5tMzEgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHQubTMxKCkpOwotICAgIHRvVDNELm0zMiA9
IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodC5tMzIoKSk7Ci0gICAgdG9UM0QubTMzID0gbmFycm93
UHJlY2lzaW9uVG9GbG9hdCh0Lm0zMygpKTsKLSAgICB0b1QzRC5tMzQgPSBuYXJyb3dQcmVjaXNp
b25Ub0Zsb2F0KHQubTM0KCkpOwotICAgIHRvVDNELm00MSA9IG5hcnJvd1ByZWNpc2lvblRvRmxv
YXQodC5tNDEoKSk7Ci0gICAgdG9UM0QubTQyID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCh0Lm00
MigpKTsKLSAgICB0b1QzRC5tNDMgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHQubTQzKCkpOwot
ICAgIHRvVDNELm00NCA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodC5tNDQoKSk7Ci19Ci0KLXN0
YXRpYyBOU1ZhbHVlKiBnZXRUcmFuc2Zvcm1GdW5jdGlvblZhbHVlKGNvbnN0IFRyYW5zZm9ybU9w
ZXJhdGlvbiogdHJhbnNmb3JtT3AsIFRyYW5zZm9ybU9wZXJhdGlvbjo6T3BlcmF0aW9uVHlwZSB0
cmFuc2Zvcm1UeXBlLCBjb25zdCBJbnRTaXplJiBzaXplKQotewotICAgIHN3aXRjaCAodHJhbnNm
b3JtVHlwZSkgewotICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRFOgotICAg
ICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRFX1g6Ci0gICAgICAgIGNhc2UgVHJh
bnNmb3JtT3BlcmF0aW9uOjpST1RBVEVfWToKLSAgICAgICAgICAgIHJldHVybiBbTlNOdW1iZXIg
bnVtYmVyV2l0aERvdWJsZTp0cmFuc2Zvcm1PcCA/IGRlZzJyYWQoc3RhdGljX2Nhc3Q8Y29uc3Qg
Um90YXRlVHJhbnNmb3JtT3BlcmF0aW9uKj4odHJhbnNmb3JtT3ApLT5hbmdsZSgpKSA6IDBdOwot
ICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0NBTEVfWDoKLSAgICAgICAgICAgIHJl
dHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTp0cmFuc2Zvcm1PcCA/IHN0YXRpY19jYXN0
PGNvbnN0IFNjYWxlVHJhbnNmb3JtT3BlcmF0aW9uKj4odHJhbnNmb3JtT3ApLT54KCkgOiAxXTsK
LSAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlNDQUxFX1k6Ci0gICAgICAgICAgICBy
ZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6dHJhbnNmb3JtT3AgPyBzdGF0aWNfY2Fz
dDxjb25zdCBTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbio+KHRyYW5zZm9ybU9wKS0+eSgpIDogMV07
Ci0gICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpTQ0FMRV9aOgotICAgICAgICAgICAg
cmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOnRyYW5zZm9ybU9wID8gc3RhdGljX2Nh
c3Q8Y29uc3QgU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24qPih0cmFuc2Zvcm1PcCktPnooKSA6IDFd
OwotICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFX1g6Ci0gICAgICAg
ICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6dHJhbnNmb3JtT3AgPyBzdGF0
aWNfY2FzdDxjb25zdCBUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24qPih0cmFuc2Zvcm1PcCkt
Pngoc2l6ZSkgOiAwXTsKLSAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFU
RV9ZOgotICAgICAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOnRyYW5z
Zm9ybU9wID8gc3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uKj4o
dHJhbnNmb3JtT3ApLT55KHNpemUpIDogMF07Ci0gICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0
aW9uOjpUUkFOU0xBVEVfWjoKLSAgICAgICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0
aERvdWJsZTp0cmFuc2Zvcm1PcCA/IHN0YXRpY19jYXN0PGNvbnN0IFRyYW5zbGF0ZVRyYW5zZm9y
bU9wZXJhdGlvbio+KHRyYW5zZm9ybU9wKS0+eihzaXplKSA6IDBdOwotICAgICAgICBjYXNlIFRy
YW5zZm9ybU9wZXJhdGlvbjo6U0NBTEU6Ci0gICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9u
OjpTQ0FMRV8zRDoKLSAgICAgICAgICAgIHJldHVybiBbTlNBcnJheSBhcnJheVdpdGhPYmplY3Rz
OgotICAgICAgICAgICAgICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6dHJh
bnNmb3JtT3AgPyBzdGF0aWNfY2FzdDxjb25zdCBTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbio+KHRy
YW5zZm9ybU9wKS0+eCgpIDogMV0sCi0gICAgICAgICAgICAgICAgICAgICAgICBbTlNOdW1iZXIg
bnVtYmVyV2l0aERvdWJsZTp0cmFuc2Zvcm1PcCA/IHN0YXRpY19jYXN0PGNvbnN0IFNjYWxlVHJh
bnNmb3JtT3BlcmF0aW9uKj4odHJhbnNmb3JtT3ApLT55KCkgOiAxXSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOnRyYW5zZm9ybU9wID8gc3RhdGlj
X2Nhc3Q8Y29uc3QgU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24qPih0cmFuc2Zvcm1PcCktPnooKSA6
IDFdLAotICAgICAgICAgICAgICAgICAgICAgICAgbmlsXTsKLSAgICAgICAgY2FzZSBUcmFuc2Zv
cm1PcGVyYXRpb246OlRSQU5TTEFURToKLSAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246
OlRSQU5TTEFURV8zRDoKLSAgICAgICAgICAgIHJldHVybiBbTlNBcnJheSBhcnJheVdpdGhPYmpl
Y3RzOgotICAgICAgICAgICAgICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6
dHJhbnNmb3JtT3AgPyBzdGF0aWNfY2FzdDxjb25zdCBUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRp
b24qPih0cmFuc2Zvcm1PcCktPngoc2l6ZSkgOiAwXSwKLSAgICAgICAgICAgICAgICAgICAgICAg
IFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOnRyYW5zZm9ybU9wID8gc3RhdGljX2Nhc3Q8Y29u
c3QgVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uKj4odHJhbnNmb3JtT3ApLT55KHNpemUpIDog
MF0sCi0gICAgICAgICAgICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTp0
cmFuc2Zvcm1PcCA/IHN0YXRpY19jYXN0PGNvbnN0IFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlv
bio+KHRyYW5zZm9ybU9wKS0+eihzaXplKSA6IDBdLAotICAgICAgICAgICAgICAgICAgICAgICAg
bmlsXTsKLSAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlNLRVdfWDoKLSAgICAgICAg
Y2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlNLRVdfWToKLSAgICAgICAgY2FzZSBUcmFuc2Zvcm1P
cGVyYXRpb246OlNLRVc6Ci0gICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpNQVRSSVg6
Ci0gICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpST1RBVEVfM0Q6Ci0gICAgICAgIGNh
c2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpNQVRSSVhfM0Q6Ci0gICAgICAgIGNhc2UgVHJhbnNmb3Jt
T3BlcmF0aW9uOjpQRVJTUEVDVElWRToKLSAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246
OklERU5USVRZOgotICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6Tk9ORTogewotICAg
ICAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtOwotICAgICAgICAgICAgaWYg
KHRyYW5zZm9ybU9wKQotICAgICAgICAgICAgICAgIHRyYW5zZm9ybU9wLT5hcHBseSh0cmFuc2Zv
cm0sIHNpemUpOwotICAgICAgICAgICAgQ0FUcmFuc2Zvcm0zRCBjYVRyYW5zZm9ybTsKLSAgICAg
ICAgICAgIGNvcHlUcmFuc2Zvcm0oY2FUcmFuc2Zvcm0sIHRyYW5zZm9ybSk7Ci0gICAgICAgICAg
ICByZXR1cm4gW05TVmFsdWUgdmFsdWVXaXRoQ0FUcmFuc2Zvcm0zRDpjYVRyYW5zZm9ybV07Ci0g
ICAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIDA7Ci19Ci0KLSNpZiBIQVZFX01PREVS
Tl9RVUFSVFpDT1JFCi1zdGF0aWMgTlNTdHJpbmcgKmdldFZhbHVlRnVuY3Rpb25OYW1lRm9yVHJh
bnNmb3JtT3BlcmF0aW9uKFRyYW5zZm9ybU9wZXJhdGlvbjo6T3BlcmF0aW9uVHlwZSB0cmFuc2Zv
cm1UeXBlKQotewotICAgIC8vIFVzZSBsaXRlcmFsIHN0cmluZ3MgdG8gYXZvaWQgbGluay10aW1l
IGRlcGVuZGVuY3kgb24gdGhvc2Ugc3ltYm9scy4KLSAgICBzd2l0Y2ggKHRyYW5zZm9ybVR5cGUp
IHsKLSAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlJPVEFURV9YOgotICAgICAgICAg
ICAgcmV0dXJuIEAicm90YXRlWCI7IC8vIGtDQVZhbHVlRnVuY3Rpb25Sb3RhdGVYOwotICAgICAg
ICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRFX1k6Ci0gICAgICAgICAgICByZXR1cm4g
QCJyb3RhdGVZIjsgLy8ga0NBVmFsdWVGdW5jdGlvblJvdGF0ZVk7Ci0gICAgICAgIGNhc2UgVHJh
bnNmb3JtT3BlcmF0aW9uOjpST1RBVEU6Ci0gICAgICAgICAgICByZXR1cm4gQCJyb3RhdGVaIjsg
Ly8ga0NBVmFsdWVGdW5jdGlvblJvdGF0ZVo7Ci0gICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0
aW9uOjpTQ0FMRV9YOgotICAgICAgICAgICAgcmV0dXJuIEAic2NhbGVYIjsgLy8ga0NBVmFsdWVG
dW5jdGlvblNjYWxlWDsKLSAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlNDQUxFX1k6
Ci0gICAgICAgICAgICByZXR1cm4gQCJzY2FsZVkiOyAvLyBrQ0FWYWx1ZUZ1bmN0aW9uU2NhbGVZ
OwotICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0NBTEVfWjoKLSAgICAgICAgICAg
IHJldHVybiBAInNjYWxlWiI7IC8vIGtDQVZhbHVlRnVuY3Rpb25TY2FsZVo7Ci0gICAgICAgIGNh
c2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfWDoKLSAgICAgICAgICAgIHJldHVybiBA
InRyYW5zbGF0ZVgiOyAvLyBrQ0FWYWx1ZUZ1bmN0aW9uVHJhbnNsYXRlWDsKLSAgICAgICAgY2Fz
ZSBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURV9ZOgotICAgICAgICAgICAgcmV0dXJuIEAi
dHJhbnNsYXRlWSI7IC8vIGtDQVZhbHVlRnVuY3Rpb25UcmFuc2xhdGVZOwotICAgICAgICBjYXNl
IFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFX1o6Ci0gICAgICAgICAgICByZXR1cm4gQCJ0
cmFuc2xhdGVaIjsgLy8ga0NBVmFsdWVGdW5jdGlvblRyYW5zbGF0ZVo7Ci0gICAgICAgIGNhc2Ug
VHJhbnNmb3JtT3BlcmF0aW9uOjpTQ0FMRToKLSAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRp
b246OlNDQUxFXzNEOgotICAgICAgICAgICAgcmV0dXJuIEAic2NhbGUiOyAvLyBrQ0FWYWx1ZUZ1
bmN0aW9uU2NhbGU7Ci0gICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEU6
Ci0gICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfM0Q6Ci0gICAgICAg
ICAgICByZXR1cm4gQCJ0cmFuc2xhdGUiOyAvLyBrQ0FWYWx1ZUZ1bmN0aW9uVHJhbnNsYXRlOwot
ICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICB9Ci19Ci0jZW5k
aWYKLQotc3RhdGljIFN0cmluZyBwcm9wZXJ0eUlkVG9TdHJpbmcoQW5pbWF0ZWRQcm9wZXJ0eUlE
IHByb3BlcnR5KQotewotICAgIHN3aXRjaCAocHJvcGVydHkpIHsKLSAgICAgICAgY2FzZSBBbmlt
YXRlZFByb3BlcnR5V2Via2l0VHJhbnNmb3JtOgotICAgICAgICAgICAgcmV0dXJuICJ0cmFuc2Zv
cm0iOwotICAgICAgICBjYXNlIEFuaW1hdGVkUHJvcGVydHlPcGFjaXR5OgotICAgICAgICAgICAg
cmV0dXJuICJvcGFjaXR5IjsKLSAgICAgICAgY2FzZSBBbmltYXRlZFByb3BlcnR5QmFja2dyb3Vu
ZENvbG9yOgotICAgICAgICAgICAgcmV0dXJuICJiYWNrZ3JvdW5kQ29sb3IiOwotICAgICAgICBj
YXNlIEFuaW1hdGVkUHJvcGVydHlJbnZhbGlkOgotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgfQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiAiIjsK
LX0KLQotc3RhdGljIFN0cmluZyBhbmltYXRpb25JZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgYW5p
bWF0aW9uTmFtZSwgQW5pbWF0ZWRQcm9wZXJ0eUlEIHByb3BlcnR5LCBpbnQgaW5kZXgpCi17Ci0g
ICAgcmV0dXJuIG1ha2VTdHJpbmcoYW5pbWF0aW9uTmFtZSwgJ18nLCBTdHJpbmc6Om51bWJlcihw
cm9wZXJ0eSksICdfJywgU3RyaW5nOjpudW1iZXIoaW5kZXgpKTsKLX0KLQotc3RhdGljIENBTWVk
aWFUaW1pbmdGdW5jdGlvbiogZ2V0Q0FNZWRpYVRpbWluZ0Z1bmN0aW9uKGNvbnN0IFRpbWluZ0Z1
bmN0aW9uKiB0aW1pbmdGdW5jdGlvbikKLXsKLSAgICAvLyBCeSB0aGlzIHBvaW50LCB0aW1pbmcg
ZnVuY3Rpb25zIGNhbiBvbmx5IGJlIGxpbmVhciBvciBjdWJpYywgbm90IHN0ZXBzLgotICAgIEFT
U0VSVCghdGltaW5nRnVuY3Rpb24tPmlzU3RlcHNUaW1pbmdGdW5jdGlvbigpKTsKLSAgICBpZiAo
dGltaW5nRnVuY3Rpb24tPmlzQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbigpKSB7Ci0gICAgICAg
IGNvbnN0IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24qIGN0ZiA9IHN0YXRpY19jYXN0PGNvbnN0
IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24qPih0aW1pbmdGdW5jdGlvbik7Ci0gICAgICAgIHJl
dHVybiBbQ0FNZWRpYVRpbWluZ0Z1bmN0aW9uIGZ1bmN0aW9uV2l0aENvbnRyb2xQb2ludHM6c3Rh
dGljX2Nhc3Q8ZmxvYXQ+KGN0Zi0+eDEoKSkgOnN0YXRpY19jYXN0PGZsb2F0PihjdGYtPnkxKCkp
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA6c3RhdGljX2Nhc3Q8ZmxvYXQ+KGN0Zi0+eDIoKSkgOnN0YXRpY19jYXN0PGZsb2F0
PihjdGYtPnkyKCkpXTsKLSAgICB9IGVsc2UKLSAgICAgICAgcmV0dXJuIFtDQU1lZGlhVGltaW5n
RnVuY3Rpb24gZnVuY3Rpb25XaXRoTmFtZTpAImxpbmVhciJdOwotfQotCi1zdGF0aWMgdm9pZCBz
ZXRMYXllckJvcmRlckNvbG9yKFBsYXRmb3JtTGF5ZXIqIGxheWVyLCBjb25zdCBDb2xvciYgY29s
b3IpCi17Ci0gICAgW2xheWVyIHNldEJvcmRlckNvbG9yOmNhY2hlZENHQ29sb3IoY29sb3IsIENv
bG9yU3BhY2VEZXZpY2VSR0IpXTsKLX0KLQotc3RhdGljIHZvaWQgY2xlYXJCb3JkZXJDb2xvcihQ
bGF0Zm9ybUxheWVyKiBsYXllcikKLXsKLSAgICBbbGF5ZXIgc2V0Qm9yZGVyQ29sb3I6bmlsXTsK
LX0KLQotc3RhdGljIHZvaWQgc2V0TGF5ZXJCYWNrZ3JvdW5kQ29sb3IoUGxhdGZvcm1MYXllciog
bGF5ZXIsIGNvbnN0IENvbG9yJiBjb2xvcikKLXsKLSAgICBbbGF5ZXIgc2V0QmFja2dyb3VuZENv
bG9yOmNhY2hlZENHQ29sb3IoY29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpXTsKLX0KLQotc3Rh
dGljIHZvaWQgY2xlYXJMYXllckJhY2tncm91bmRDb2xvcihQbGF0Zm9ybUxheWVyKiBsYXllcikK
LXsKLSAgICBbbGF5ZXIgc2V0QmFja2dyb3VuZENvbG9yOjBdOwotfQotCi1zdGF0aWMgdm9pZCBz
YWZlU2V0U3VibGF5ZXJzKENBTGF5ZXIqIGxheWVyLCBOU0FycmF5KiBzdWJsYXllcnMpCi17Ci0g
ICAgLy8gV29ya2Fyb3VuZCBmb3IgPHJkYXI6Ly9wcm9ibGVtLzczOTA3MTY+OiAtW0NBTGF5ZXIg
c2V0U3VibGF5ZXJzOl0gY3Jhc2hlcyBpZiBzdWJsYXllcnMgaXMgYW4gZW1wdHkgYXJyYXksIG9y
IG5pbCwgdW5kZXIgR0MuCi0gICAgaWYgKG9iamNfY29sbGVjdGluZ0VuYWJsZWQoKSAmJiAhW3N1
YmxheWVycyBjb3VudF0pIHsKLSAgICAgICAgd2hpbGUgKFtbbGF5ZXIgc3VibGF5ZXJzXSBjb3Vu
dF0pCi0gICAgICAgICAgICBbW1tsYXllciBzdWJsYXllcnNdIG9iamVjdEF0SW5kZXg6MF0gcmVt
b3ZlRnJvbVN1cGVybGF5ZXJdOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAotICAgIFts
YXllciBzZXRTdWJsYXllcnM6c3VibGF5ZXJzXTsKLX0KLQotc3RhdGljIGJvb2wgY2FWYWx1ZUZ1
bmN0aW9uU3VwcG9ydGVkKCkKLXsKLSAgICBzdGF0aWMgYm9vbCBzSGF2ZVZhbHVlRnVuY3Rpb24g
PSBbQ0FQcm9wZXJ0eUFuaW1hdGlvbiBpbnN0YW5jZXNSZXNwb25kVG9TZWxlY3RvcjpAc2VsZWN0
b3Ioc2V0VmFsdWVGdW5jdGlvbjopXTsKLSAgICByZXR1cm4gc0hhdmVWYWx1ZUZ1bmN0aW9uOwot
fQotCi1zdGF0aWMgYm9vbCBmb3JjZVNvZnR3YXJlQW5pbWF0aW9uKCkKLXsKLSAgICBzdGF0aWMg
Ym9vbCBmb3JjZVNvZnR3YXJlQW5pbWF0aW9uID0gW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVz
ZXJEZWZhdWx0c10gYm9vbEZvcktleTpAIldlYkNvcmVGb3JjZVNvZnR3YXJlQW5pbWF0aW9uIl07
Ci0gICAgcmV0dXJuIGZvcmNlU29mdHdhcmVBbmltYXRpb247Ci19Ci0KLXN0YXRpYyBOU0RpY3Rp
b25hcnkqIG51bGxBY3Rpb25zRGljdGlvbmFyeSgpCi17Ci0gICAgTlNOdWxsKiBudWxsVmFsdWUg
PSBbTlNOdWxsIG51bGxdOwotICAgIE5TRGljdGlvbmFyeSogYWN0aW9ucyA9IFtOU0RpY3Rpb25h
cnkgZGljdGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5czoKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbnVsbFZhbHVlLCBAImFuY2hvclBvaW50IiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbnVsbFZhbHVlLCBAImJvdW5kcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG51bGxWYWx1ZSwgQCJjb250ZW50cyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51
bGxWYWx1ZSwgQCJjb250ZW50c1JlY3QiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
dWxsVmFsdWUsIEAib3BhY2l0eSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxW
YWx1ZSwgQCJwb3NpdGlvbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxWYWx1
ZSwgQCJzaGFkb3dDb2xvciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxWYWx1
ZSwgQCJzdWJsYXllclRyYW5zZm9ybSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51
bGxWYWx1ZSwgQCJzdWJsYXllcnMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxs
VmFsdWUsIEAidHJhbnNmb3JtIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbFZh
bHVlLCBAInpQb3NpdGlvbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pbF07Ci0g
ICAgcmV0dXJuIGFjdGlvbnM7Ci19Ci0KLXN0YXRpYyBib29sIGFuaW1hdGlvbkhhc1N0ZXBzVGlt
aW5nRnVuY3Rpb24oY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCwgY29uc3QgQW5p
bWF0aW9uKiBhbmltKQotewotICAgIGlmIChhbmltLT50aW1pbmdGdW5jdGlvbigpLT5pc1N0ZXBz
VGltaW5nRnVuY3Rpb24oKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgCi0gICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IHZhbHVlTGlzdC5zaXplKCk7ICsraSkgewotICAgICAgICBjb25z
dCBUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb24gPSB2YWx1ZUxpc3QuYXQoaSktPnRpbWlu
Z0Z1bmN0aW9uKCk7Ci0gICAgICAgIGlmICh0aW1pbmdGdW5jdGlvbiAmJiB0aW1pbmdGdW5jdGlv
bi0+aXNTdGVwc1RpbWluZ0Z1bmN0aW9uKCkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICB9Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLVBhc3NPd25QdHI8R3JhcGhpY3NMYXllcj4g
R3JhcGhpY3NMYXllcjo6Y3JlYXRlKEdyYXBoaWNzTGF5ZXJDbGllbnQqIGNsaWVudCkKLXsKLSAg
ICByZXR1cm4gbmV3IEdyYXBoaWNzTGF5ZXJNYWMoY2xpZW50KTsKLX0KLQotR3JhcGhpY3NMYXll
ck1hYzo6R3JhcGhpY3NMYXllck1hYyhHcmFwaGljc0xheWVyQ2xpZW50KiBjbGllbnQpCi0gICAg
OiBHcmFwaGljc0xheWVyKGNsaWVudCkKLSAgICAsIG1fY29udGVudHNMYXllclB1cnBvc2UoTm9D
b250ZW50c0xheWVyKQotICAgICwgbV9jb250ZW50c0xheWVySGFzQmFja2dyb3VuZENvbG9yKGZh
bHNlKQotICAgICwgbV91bmNvbW1pdHRlZENoYW5nZXMoTm9DaGFuZ2UpCi17Ci0gICAgQkVHSU5f
QkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgbV9sYXllci5hZG9wdE5TKFtbV2ViTGF5ZXIgYWxs
b2NdIGluaXRdKTsKLSAgICBbbV9sYXllci5nZXQoKSBzZXRMYXllck93bmVyOnRoaXNdOwotCi0j
aWYgIUhBVkVfTU9ERVJOX1FVQVJUWkNPUkUKLSAgICBzZXRDb250ZW50c09yaWVudGF0aW9uKGRl
ZmF1bHRDb250ZW50c09yaWVudGF0aW9uKCkpOwotI2VuZGlmCi0KLSAgICB1cGRhdGVEZWJ1Z0lu
ZGljYXRvcnMoKTsKLQotICAgIG1fYW5pbWF0aW9uRGVsZWdhdGUuYWRvcHROUyhbW1dlYkFuaW1h
dGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7Ci0gICAgW21fYW5pbWF0aW9uRGVsZWdhdGUuZ2V0
KCkgc2V0TGF5ZXI6dGhpc107Ci0gICAgCi0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwot
fQotCi1HcmFwaGljc0xheWVyTWFjOjp+R3JhcGhpY3NMYXllck1hYygpCi17Ci0gICAgLy8gV2Ug
cmVsZWFzZSBvdXIgcmVmZXJlbmNlcyB0byB0aGUgQ0FMYXllcnMgaGVyZSwgYnV0IGRvIG5vdCBh
Y3RpdmVseSB1bnBhcmVudCB0aGVtLAotICAgIC8vIHNpbmNlIHRoYXQgd2lsbCBjYXVzZSBhIGNv
bW1pdCBhbmQgYnJlYWsgb3VyIGJhdGNoZWQgY29tbWl0IG1vZGVsLiBUaGUgbGF5ZXJzIHdpbGwK
LSAgICAvLyBnZXQgcmVsZWFzZWQgd2hlbiB0aGUgcm9vdG1vc3QgbW9kaWZpZWQgR3JhcGhpY3NM
YXllck1hYyByZWJ1aWxkcyBpdHMgY2hpbGQgbGF5ZXJzLgotICAgIAotICAgIEJFR0lOX0JMT0NL
X09CSkNfRVhDRVBUSU9OUwotCi0gICAgLy8gQ2xlYW4gdXAgdGhlIFdLIGxheWVyLgotICAgIGlm
IChtX2xheWVyKSB7Ci0gICAgICAgIFdlYkxheWVyKiBsYXllciA9IG1fbGF5ZXIuZ2V0KCk7Ci0g
ICAgICAgIFtsYXllciBzZXRMYXllck93bmVyOm5pbF07Ci0gICAgfQotICAgIAotICAgIGlmICht
X2NvbnRlbnRzTGF5ZXIpIHsKLSAgICAgICAgaWYgKFttX2NvbnRlbnRzTGF5ZXIuZ2V0KCkgcmVz
cG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzZXRMYXllck93bmVyOildKQotICAgICAgICAgICAg
WyhpZCltX2NvbnRlbnRzTGF5ZXIuZ2V0KCkgc2V0TGF5ZXJPd25lcjpuaWxdOwotICAgIH0KLSAg
ICAKLSAgICAvLyBhbmltYXRpb25EaWRTdGFydDogY2FuIGZpcmUgYWZ0ZXIgdGhpcywgc28gd2Ug
bmVlZCB0byBjbGVhciBvdXQgdGhlIGxheWVyIG9uIHRoZSBkZWxlZ2F0ZS4KLSAgICBbbV9hbmlt
YXRpb25EZWxlZ2F0ZS5nZXQoKSBzZXRMYXllcjowXTsKLQotICAgIC8vIFJlbGVhc2UgdGhlIGNs
b25lIGxheWVycyBpbnNpZGUgdGhlIGV4Y2VwdGlvbi1oYW5kbGluZyBibG9jay4KLSAgICByZW1v
dmVDbG9uZUxheWVycygpOwotICAgIAotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLX0K
LQotdm9pZCBHcmFwaGljc0xheWVyTWFjOjpzZXROYW1lKGNvbnN0IFN0cmluZyYgbmFtZSkKLXsK
LSAgICBTdHJpbmcgbG9uZ05hbWUgPSBTdHJpbmc6OmZvcm1hdCgiQ0FMYXllciglcCkgR3JhcGhp
Y3NMYXllciglcCkgIiwgbV9sYXllci5nZXQoKSwgdGhpcykgKyBuYW1lOwotICAgIEdyYXBoaWNz
TGF5ZXI6OnNldE5hbWUobG9uZ05hbWUpOwotICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChO
YW1lQ2hhbmdlZCk7Ci19Ci0KLU5hdGl2ZUxheWVyIEdyYXBoaWNzTGF5ZXJNYWM6Om5hdGl2ZUxh
eWVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9sYXllci5nZXQoKTsKLX0KLQotYm9vbCBHcmFw
aGljc0xheWVyTWFjOjpzZXRDaGlsZHJlbihjb25zdCBWZWN0b3I8R3JhcGhpY3NMYXllcio+JiBj
aGlsZHJlbikKLXsKLSAgICBib29sIGNoaWxkcmVuQ2hhbmdlZCA9IEdyYXBoaWNzTGF5ZXI6OnNl
dENoaWxkcmVuKGNoaWxkcmVuKTsKLSAgICBpZiAoY2hpbGRyZW5DaGFuZ2VkKQotICAgICAgICBu
b3RlU3VibGF5ZXJzQ2hhbmdlZCgpOwotICAgIAotICAgIHJldHVybiBjaGlsZHJlbkNoYW5nZWQ7
Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6YWRkQ2hpbGQoR3JhcGhpY3NMYXllciogY2hp
bGRMYXllcikKLXsKLSAgICBHcmFwaGljc0xheWVyOjphZGRDaGlsZChjaGlsZExheWVyKTsKLSAg
ICBub3RlU3VibGF5ZXJzQ2hhbmdlZCgpOwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OmFk
ZENoaWxkQXRJbmRleChHcmFwaGljc0xheWVyKiBjaGlsZExheWVyLCBpbnQgaW5kZXgpCi17Ci0g
ICAgR3JhcGhpY3NMYXllcjo6YWRkQ2hpbGRBdEluZGV4KGNoaWxkTGF5ZXIsIGluZGV4KTsKLSAg
ICBub3RlU3VibGF5ZXJzQ2hhbmdlZCgpOwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OmFk
ZENoaWxkQmVsb3coR3JhcGhpY3NMYXllciogY2hpbGRMYXllciwgR3JhcGhpY3NMYXllciogc2li
bGluZykKLXsKLSAgICBHcmFwaGljc0xheWVyOjphZGRDaGlsZEJlbG93KGNoaWxkTGF5ZXIsIHNp
YmxpbmcpOwotICAgIG5vdGVTdWJsYXllcnNDaGFuZ2VkKCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NM
YXllck1hYzo6YWRkQ2hpbGRBYm92ZShHcmFwaGljc0xheWVyKiBjaGlsZExheWVyLCBHcmFwaGlj
c0xheWVyKiBzaWJsaW5nKQotewotICAgIEdyYXBoaWNzTGF5ZXI6OmFkZENoaWxkQWJvdmUoY2hp
bGRMYXllciwgc2libGluZyk7Ci0gICAgbm90ZVN1YmxheWVyc0NoYW5nZWQoKTsKLX0KLQotYm9v
bCBHcmFwaGljc0xheWVyTWFjOjpyZXBsYWNlQ2hpbGQoR3JhcGhpY3NMYXllciogb2xkQ2hpbGQs
IEdyYXBoaWNzTGF5ZXIqIG5ld0NoaWxkKQotewotICAgIGlmIChHcmFwaGljc0xheWVyOjpyZXBs
YWNlQ2hpbGQob2xkQ2hpbGQsIG5ld0NoaWxkKSkgewotICAgICAgICBub3RlU3VibGF5ZXJzQ2hh
bmdlZCgpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwot
fQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnJlbW92ZUZyb21QYXJlbnQoKQotewotICAgIGlm
IChtX3BhcmVudCkKLSAgICAgICAgc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllck1hYyo+KG1fcGFy
ZW50KS0+bm90ZVN1YmxheWVyc0NoYW5nZWQoKTsKLSAgICBHcmFwaGljc0xheWVyOjpyZW1vdmVG
cm9tUGFyZW50KCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6c2V0TWFza0xheWVyKEdy
YXBoaWNzTGF5ZXIqIGxheWVyKQotewotICAgIGlmIChsYXllciA9PSBtX21hc2tMYXllcikKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgR3JhcGhpY3NMYXllcjo6c2V0TWFza0xheWVyKGxheWVyKTsK
LSAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoTWFza0xheWVyQ2hhbmdlZCk7Ci0KLSAgICBw
cm9wYWdhdGVMYXllckNoYW5nZVRvUmVwbGljYXMoKTsKLSAgICAKLSAgICBpZiAobV9yZXBsaWNh
dGVkTGF5ZXIpCi0gICAgICAgIHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXJNYWMqPihtX3JlcGxp
Y2F0ZWRMYXllciktPnByb3BhZ2F0ZUxheWVyQ2hhbmdlVG9SZXBsaWNhcygpOwotfQotCi12b2lk
IEdyYXBoaWNzTGF5ZXJNYWM6OnNldFJlcGxpY2F0ZWRMYXllcihHcmFwaGljc0xheWVyKiBsYXll
cikKLXsKLSAgICBpZiAobGF5ZXIgPT0gbV9yZXBsaWNhdGVkTGF5ZXIpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIEdyYXBoaWNzTGF5ZXI6OnNldFJlcGxpY2F0ZWRMYXllcihsYXllcik7Ci0gICAg
bm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKFJlcGxpY2F0ZWRMYXllckNoYW5nZWQpOwotfQotCi12
b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnNldFJlcGxpY2F0ZWRCeUxheWVyKEdyYXBoaWNzTGF5ZXIq
IGxheWVyKQotewotICAgIGlmIChsYXllciA9PSBtX3JlcGxpY2FMYXllcikKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgR3JhcGhpY3NMYXllcjo6c2V0UmVwbGljYXRlZEJ5TGF5ZXIobGF5ZXIpOwot
ICAgIG5vdGVTdWJsYXllcnNDaGFuZ2VkKCk7Ci0gICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2Vk
KFJlcGxpY2F0ZWRMYXllckNoYW5nZWQpOwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnNl
dFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50KQotewotICAgIGlmIChwb2ludCA9PSBt
X3Bvc2l0aW9uKQotICAgICAgICByZXR1cm47Ci0KLSAgICBHcmFwaGljc0xheWVyOjpzZXRQb3Np
dGlvbihwb2ludCk7Ci0gICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKFBvc2l0aW9uQ2hhbmdl
ZCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6c2V0QW5jaG9yUG9pbnQoY29uc3QgRmxv
YXRQb2ludDNEJiBwb2ludCkKLXsKLSAgICBpZiAocG9pbnQgPT0gbV9hbmNob3JQb2ludCkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgR3JhcGhpY3NMYXllcjo6c2V0QW5jaG9yUG9pbnQocG9pbnQp
OwotICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChBbmNob3JQb2ludENoYW5nZWQpOwotfQot
Ci12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnNldFNpemUoY29uc3QgRmxvYXRTaXplJiBzaXplKQot
ewotICAgIGlmIChzaXplID09IG1fc2l6ZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgR3JhcGhp
Y3NMYXllcjo6c2V0U2l6ZShzaXplKTsKLSAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoU2l6
ZUNoYW5nZWQpOwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnNldFRyYW5zZm9ybShjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdCkKLXsKLSAgICBpZiAodCA9PSBtX3RyYW5zZm9ybSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgR3JhcGhpY3NMYXllcjo6c2V0VHJhbnNmb3JtKHQpOwot
ICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChUcmFuc2Zvcm1DaGFuZ2VkKTsKLX0KLQotdm9p
ZCBHcmFwaGljc0xheWVyTWFjOjpzZXRDaGlsZHJlblRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgdCkKLXsKLSAgICBpZiAodCA9PSBtX2NoaWxkcmVuVHJhbnNmb3JtKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBHcmFwaGljc0xheWVyOjpzZXRDaGlsZHJlblRyYW5zZm9ybSh0
KTsKLSAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoQ2hpbGRyZW5UcmFuc2Zvcm1DaGFuZ2Vk
KTsKLX0KLQotdm9pZCBHcmFwaGljc0xheWVyTWFjOjptb3ZlT3JDb3B5TGF5ZXJBbmltYXRpb24o
TW92ZU9yQ29weSBvcGVyYXRpb24sIGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uSWRlbnRpZmllciwg
Q0FMYXllciAqZnJvbUxheWVyLCBDQUxheWVyICp0b0xheWVyKQotewotICAgIE5TU3RyaW5nICph
bmltYXRpb25JRCA9IGFuaW1hdGlvbklkZW50aWZpZXI7Ci0gICAgQ0FBbmltYXRpb24gKmFuaW0g
PSBbZnJvbUxheWVyIGFuaW1hdGlvbkZvcktleTphbmltYXRpb25JRF07Ci0gICAgaWYgKCFhbmlt
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBzd2l0Y2ggKG9wZXJhdGlvbikgewotICAgICAgICBj
YXNlIE1vdmU6Ci0gICAgICAgICAgICBbYW5pbSByZXRhaW5dOwotICAgICAgICAgICAgW2Zyb21M
YXllciByZW1vdmVBbmltYXRpb25Gb3JLZXk6YW5pbWF0aW9uSURdOwotICAgICAgICAgICAgW3Rv
TGF5ZXIgYWRkQW5pbWF0aW9uOmFuaW0gZm9yS2V5OmFuaW1hdGlvbklEXTsKLSAgICAgICAgICAg
IFthbmltIHJlbGVhc2VdOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBDb3B5
OgotICAgICAgICAgICAgW3RvTGF5ZXIgYWRkQW5pbWF0aW9uOmFuaW0gZm9yS2V5OmFuaW1hdGlv
bklEXTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgIH0KLX0KLQotdm9pZCBHcmFwaGljc0xheWVy
TWFjOjptb3ZlT3JDb3B5QW5pbWF0aW9uc0ZvclByb3BlcnR5KE1vdmVPckNvcHkgb3BlcmF0aW9u
LCBBbmltYXRlZFByb3BlcnR5SUQgcHJvcGVydHksIENBTGF5ZXIgKmZyb21MYXllciwgQ0FMYXll
ciAqdG9MYXllcikKLXsKLSAgICAvLyBMb29rIGZvciBydW5uaW5nIGFuaW1hdGlvbnMgYWZmZWN0
aW5nIHRoaXMgcHJvcGVydHkuCi0gICAgQW5pbWF0aW9uc01hcDo6Y29uc3RfaXRlcmF0b3IgZW5k
ID0gbV9ydW5uaW5nQW5pbWF0aW9ucy5lbmQoKTsKLSAgICBmb3IgKEFuaW1hdGlvbnNNYXA6OmNv
bnN0X2l0ZXJhdG9yIGl0ID0gbV9ydW5uaW5nQW5pbWF0aW9ucy5iZWdpbigpOyBpdCAhPSBlbmQ7
ICsraXQpIHsKLSAgICAgICAgY29uc3QgVmVjdG9yPExheWVyUHJvcGVydHlBbmltYXRpb24+JiBw
cm9wZXJ0eUFuaW1hdGlvbnMgPSBpdC0+c2Vjb25kOwotICAgICAgICBzaXplX3QgbnVtQW5pbWF0
aW9ucyA9IHByb3BlcnR5QW5pbWF0aW9ucy5zaXplKCk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbnVtQW5pbWF0aW9uczsgKytpKSB7Ci0gICAgICAgICAgICBjb25zdCBMYXllclBy
b3BlcnR5QW5pbWF0aW9uJiBjdXJyQW5pbWF0aW9uID0gcHJvcGVydHlBbmltYXRpb25zW2ldOwot
ICAgICAgICAgICAgaWYgKGN1cnJBbmltYXRpb24ubV9wcm9wZXJ0eSA9PSBwcm9wZXJ0eSkKLSAg
ICAgICAgICAgICAgICBtb3ZlT3JDb3B5TGF5ZXJBbmltYXRpb24ob3BlcmF0aW9uLCBhbmltYXRp
b25JZGVudGlmaWVyKGN1cnJBbmltYXRpb24ubV9uYW1lLCBjdXJyQW5pbWF0aW9uLm1fcHJvcGVy
dHksIGN1cnJBbmltYXRpb24ubV9pbmRleCksIGZyb21MYXllciwgdG9MYXllcik7Ci0gICAgICAg
IH0KLSAgICB9Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6c2V0UHJlc2VydmVzM0QoYm9v
bCBwcmVzZXJ2ZXMzRCkKLXsKLSAgICBpZiAocHJlc2VydmVzM0QgPT0gbV9wcmVzZXJ2ZXMzRCkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgR3JhcGhpY3NMYXllcjo6c2V0UHJlc2VydmVzM0QocHJl
c2VydmVzM0QpOwotICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChQcmVzZXJ2ZXMzRENoYW5n
ZWQpOwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnNldE1hc2tzVG9Cb3VuZHMoYm9vbCBt
YXNrc1RvQm91bmRzKQotewotICAgIGlmIChtYXNrc1RvQm91bmRzID09IG1fbWFza3NUb0JvdW5k
cykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgR3JhcGhpY3NMYXllcjo6c2V0TWFza3NUb0JvdW5k
cyhtYXNrc1RvQm91bmRzKTsKLSAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoTWFza3NUb0Jv
dW5kc0NoYW5nZWQpOwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnNldERyYXdzQ29udGVu
dChib29sIGRyYXdzQ29udGVudCkKLXsKLSAgICBpZiAoZHJhd3NDb250ZW50ID09IG1fZHJhd3ND
b250ZW50KQotICAgICAgICByZXR1cm47Ci0KLSAgICBHcmFwaGljc0xheWVyOjpzZXREcmF3c0Nv
bnRlbnQoZHJhd3NDb250ZW50KTsKLSAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoRHJhd3ND
b250ZW50Q2hhbmdlZCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6c2V0QmFja2dyb3Vu
ZENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKLXsKLSAgICBpZiAobV9iYWNrZ3JvdW5kQ29sb3JT
ZXQgJiYgbV9iYWNrZ3JvdW5kQ29sb3IgPT0gY29sb3IpCi0gICAgICAgIHJldHVybjsKLQotICAg
IEdyYXBoaWNzTGF5ZXI6OnNldEJhY2tncm91bmRDb2xvcihjb2xvcik7Ci0KLSAgICBtX2NvbnRl
bnRzTGF5ZXJIYXNCYWNrZ3JvdW5kQ29sb3IgPSB0cnVlOwotICAgIG5vdGVMYXllclByb3BlcnR5
Q2hhbmdlZChCYWNrZ3JvdW5kQ29sb3JDaGFuZ2VkKTsKLX0KLQotdm9pZCBHcmFwaGljc0xheWVy
TWFjOjpjbGVhckJhY2tncm91bmRDb2xvcigpCi17Ci0gICAgaWYgKCFtX2JhY2tncm91bmRDb2xv
clNldCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgR3JhcGhpY3NMYXllcjo6Y2xlYXJCYWNrZ3Jv
dW5kQ29sb3IoKTsKLSAgICBtX2NvbnRlbnRzTGF5ZXJIYXNCYWNrZ3JvdW5kQ29sb3IgPSBmYWxz
ZTsKLSAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoQmFja2dyb3VuZENvbG9yQ2hhbmdlZCk7
Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6c2V0Q29udGVudHNPcGFxdWUoYm9vbCBvcGFx
dWUpCi17Ci0gICAgaWYgKG1fY29udGVudHNPcGFxdWUgPT0gb3BhcXVlKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBHcmFwaGljc0xheWVyOjpzZXRDb250ZW50c09wYXF1ZShvcGFxdWUpOwotICAg
IG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChDb250ZW50c09wYXF1ZUNoYW5nZWQpOwotfQotCi12
b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnNldEJhY2tmYWNlVmlzaWJpbGl0eShib29sIHZpc2libGUp
Ci17Ci0gICAgaWYgKG1fYmFja2ZhY2VWaXNpYmlsaXR5ID09IHZpc2libGUpCi0gICAgICAgIHJl
dHVybjsKLSAgICAKLSAgICBHcmFwaGljc0xheWVyOjpzZXRCYWNrZmFjZVZpc2liaWxpdHkodmlz
aWJsZSk7Ci0gICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKEJhY2tmYWNlVmlzaWJpbGl0eUNo
YW5nZWQpOwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnNldE9wYWNpdHkoZmxvYXQgb3Bh
Y2l0eSkKLXsKLSAgICBmbG9hdCBjbGFtcGVkT3BhY2l0eSA9IG1heCgwLjBmLCBtaW4ob3BhY2l0
eSwgMS4wZikpOwotCi0gICAgaWYgKGNsYW1wZWRPcGFjaXR5ID09IG1fb3BhY2l0eSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgR3JhcGhpY3NMYXllcjo6c2V0T3BhY2l0eShjbGFtcGVkT3BhY2l0
eSk7Ci0gICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKE9wYWNpdHlDaGFuZ2VkKTsKLX0KLQot
dm9pZCBHcmFwaGljc0xheWVyTWFjOjpzZXROZWVkc0Rpc3BsYXkoKQotewotICAgIEZsb2F0UmVj
dCBodWdlUmVjdCgtbnVtZXJpY19saW1pdHM8ZmxvYXQ+OjptYXgoKSAvIDIsIC1udW1lcmljX2xp
bWl0czxmbG9hdD46Om1heCgpIC8gMiwKLSAgICAgICAgICAgICAgICAgICAgICAgbnVtZXJpY19s
aW1pdHM8ZmxvYXQ+OjptYXgoKSwgbnVtZXJpY19saW1pdHM8ZmxvYXQ+OjptYXgoKSk7Ci0KLSAg
ICBzZXROZWVkc0Rpc3BsYXlJblJlY3QoaHVnZVJlY3QpOwotfQotCi12b2lkIEdyYXBoaWNzTGF5
ZXJNYWM6OnNldE5lZWRzRGlzcGxheUluUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCi17Ci0g
ICAgaWYgKCFkcmF3c0NvbnRlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgY29uc3Qgc2l6
ZV90IG1heERpcnR5UmVjdHMgPSAzMjsKLSAgICAKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG1fZGlydHlSZWN0cy5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAobV9kaXJ0eVJlY3RzW2ld
LmNvbnRhaW5zKHJlY3QpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBp
ZiAobV9kaXJ0eVJlY3RzLnNpemUoKSA8IG1heERpcnR5UmVjdHMpCi0gICAgICAgIG1fZGlydHlS
ZWN0cy5hcHBlbmQocmVjdCk7Ci0gICAgZWxzZQotICAgICAgICBtX2RpcnR5UmVjdHNbMF0udW5p
dGUocmVjdCk7Ci0KLSAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoRGlydHlSZWN0c0NoYW5n
ZWQpOwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnNldENvbnRlbnRzTmVlZHNEaXNwbGF5
KCkKLXsKLSAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoQ29udGVudHNOZWVkc0Rpc3BsYXkp
OwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnNldENvbnRlbnRzUmVjdChjb25zdCBJbnRS
ZWN0JiByZWN0KQotewotICAgIGlmIChyZWN0ID09IG1fY29udGVudHNSZWN0KQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBHcmFwaGljc0xheWVyOjpzZXRDb250ZW50c1JlY3QocmVjdCk7Ci0gICAg
bm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKENvbnRlbnRzUmVjdENoYW5nZWQpOwotfQotCi1ib29s
IEdyYXBoaWNzTGF5ZXJNYWM6OmFkZEFuaW1hdGlvbihjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYg
dmFsdWVMaXN0LCBjb25zdCBJbnRTaXplJiBib3hTaXplLCBjb25zdCBBbmltYXRpb24qIGFuaW0s
IGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSwgZG91YmxlIHRpbWVPZmZzZXQpCi17Ci0gICAg
QVNTRVJUKCFhbmltYXRpb25OYW1lLmlzRW1wdHkoKSk7Ci0KLSAgICBpZiAoZm9yY2VTb2Z0d2Fy
ZUFuaW1hdGlvbigpIHx8ICFhbmltIHx8IGFuaW0tPmlzRW1wdHlPclplcm9EdXJhdGlvbigpIHx8
IHZhbHVlTGlzdC5zaXplKCkgPCAyKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSNpZiAhSEFW
RV9NT0RFUk5fUVVBUlRaQ09SRQotICAgIC8vIE9sZGVyIHZlcnNpb25zIG9mIFF1YXJ0ekNvcmUg
ZG8gbm90IGhhbmRsZSBvcGFjaXR5IGluIHRyYW5zZm9ybSBsYXllcnMgcHJvcGVybHksIHNvIHdl
IHdpbGwKLSAgICAvLyBhbHdheXMgZG8gc29mdHdhcmUgYW5pbWF0aW9uIGluIHRoYXQgY2FzZS4K
LSAgICBpZiAodmFsdWVMaXN0LnByb3BlcnR5KCkgPT0gQW5pbWF0ZWRQcm9wZXJ0eU9wYWNpdHkp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgotCi0gICAgLy8gQ29yZUFuaW1hdGlvbiBk
b2VzIG5vdCBoYW5kbGUgdGhlIHN0ZXBzKCkgdGltaW5nIGZ1bmN0aW9uLiBGYWxsIGJhY2sKLSAg
ICAvLyB0byBzb2Z0d2FyZSBhbmltYXRpb24gaW4gdGhhdCBjYXNlLgotICAgIGlmIChhbmltYXRp
b25IYXNTdGVwc1RpbWluZ0Z1bmN0aW9uKHZhbHVlTGlzdCwgYW5pbSkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIGJvb2wgY3JlYXRlZEFuaW1hdGlvbnMgPSBmYWxzZTsKLSAgICBpZiAo
dmFsdWVMaXN0LnByb3BlcnR5KCkgPT0gQW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybSkK
LSAgICAgICAgY3JlYXRlZEFuaW1hdGlvbnMgPSBjcmVhdGVUcmFuc2Zvcm1BbmltYXRpb25zRnJv
bUtleWZyYW1lcyh2YWx1ZUxpc3QsIGFuaW0sIGFuaW1hdGlvbk5hbWUsIHRpbWVPZmZzZXQsIGJv
eFNpemUpOwotICAgIGVsc2UKLSAgICAgICAgY3JlYXRlZEFuaW1hdGlvbnMgPSBjcmVhdGVBbmlt
YXRpb25Gcm9tS2V5ZnJhbWVzKHZhbHVlTGlzdCwgYW5pbSwgYW5pbWF0aW9uTmFtZSwgdGltZU9m
ZnNldCk7Ci0KLSAgICBpZiAoY3JlYXRlZEFuaW1hdGlvbnMpCi0gICAgICAgIG5vdGVMYXllclBy
b3BlcnR5Q2hhbmdlZChBbmltYXRpb25DaGFuZ2VkKTsKLSAgICAgICAgCi0gICAgcmV0dXJuIGNy
ZWF0ZWRBbmltYXRpb25zOwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnBhdXNlQW5pbWF0
aW9uKGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSwgZG91YmxlIHRpbWVPZmZzZXQpCi17Ci0g
ICAgaWYgKCFhbmltYXRpb25Jc1J1bm5pbmcoYW5pbWF0aW9uTmFtZSkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIEFuaW1hdGlvbnNUb1Byb2Nlc3NNYXA6Oml0ZXJhdG9yIGl0ID0gbV9hbmltYXRp
b25zVG9Qcm9jZXNzLmZpbmQoYW5pbWF0aW9uTmFtZSk7Ci0gICAgaWYgKGl0ICE9IG1fYW5pbWF0
aW9uc1RvUHJvY2Vzcy5lbmQoKSkgewotICAgICAgICBBbmltYXRpb25Qcm9jZXNzaW5nQWN0aW9u
JiBwcm9jZXNzaW5nSW5mbyA9IGl0LT5zZWNvbmQ7Ci0gICAgICAgIC8vIElmIGFuIGFuaW1hdGlv
biBpcyBzY2hlZHVsZWQgdG8gYmUgcmVtb3ZlZCwgZG9uJ3QgY2hhbmdlIHRoZSByZW1vdmUgdG8g
YSBwYXVzZS4KLSAgICAgICAgaWYgKHByb2Nlc3NpbmdJbmZvLmFjdGlvbiAhPSBSZW1vdmUpCi0g
ICAgICAgICAgICBwcm9jZXNzaW5nSW5mby5hY3Rpb24gPSBQYXVzZTsKLSAgICB9IGVsc2UKLSAg
ICAgICAgbV9hbmltYXRpb25zVG9Qcm9jZXNzLmFkZChhbmltYXRpb25OYW1lLCBBbmltYXRpb25Q
cm9jZXNzaW5nQWN0aW9uKFBhdXNlLCB0aW1lT2Zmc2V0KSk7Ci0KLSAgICBub3RlTGF5ZXJQcm9w
ZXJ0eUNoYW5nZWQoQW5pbWF0aW9uQ2hhbmdlZCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1h
Yzo6cmVtb3ZlQW5pbWF0aW9uKGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSkKLXsKLSAgICBp
ZiAoIWFuaW1hdGlvbklzUnVubmluZyhhbmltYXRpb25OYW1lKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgbV9hbmltYXRpb25zVG9Qcm9jZXNzLmFkZChhbmltYXRpb25OYW1lLCBBbmltYXRpb25Q
cm9jZXNzaW5nQWN0aW9uKFJlbW92ZSkpOwotICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChB
bmltYXRpb25DaGFuZ2VkKTsKLX0KLQotdm9pZCBHcmFwaGljc0xheWVyTWFjOjphbmltYXRpb25E
aWRTdGFydChDQUFuaW1hdGlvbiogY2FBbmltYXRpb24pCi17Ci0gICAgYm9vbCBoYWROb25aZXJv
QmVnaW5UaW1lID0gW1tjYUFuaW1hdGlvbiB2YWx1ZUZvcktleTpXZWJLaXRBbmltYXRpb25CZWdp
blRpbWVTZXRLZXldIGJvb2xWYWx1ZV07Ci0KLSAgICBkb3VibGUgc3RhcnRUaW1lOwotICAgIGlm
IChoYWROb25aZXJvQmVnaW5UaW1lKSB7Ci0gICAgICAgIC8vIFdlIGRvbid0IGtub3cgd2hhdCB0
aW1lIENBIHVzZWQgdG8gY29tbWl0IHRoZSBhbmltYXRpb24sIHNvIGp1c3QgdXNlIHRoZSBjdXJy
ZW50IHRpbWUKLSAgICAgICAgLy8gKGV2ZW4gdGhvdWdoIHRoaXMgd2lsbCBiZSBzbGlnaHRseSBv
ZmYpLgotICAgICAgICBzdGFydFRpbWUgPSBXZWJDb3JlOjptZWRpYVRpbWVUb0N1cnJlbnRUaW1l
KENBQ3VycmVudE1lZGlhVGltZSgpKTsKLSAgICB9IGVsc2UKLSAgICAgICAgc3RhcnRUaW1lID0g
V2ViQ29yZTo6bWVkaWFUaW1lVG9DdXJyZW50VGltZShbY2FBbmltYXRpb24gYmVnaW5UaW1lXSk7
Ci0KLSAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT5ub3RpZnlBbmltYXRpb25T
dGFydGVkKHRoaXMsIHN0YXJ0VGltZSk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6c2V0
Q29udGVudHNUb0ltYWdlKEltYWdlKiBpbWFnZSkKLXsKLSAgICBpZiAoaW1hZ2UpIHsKLSAgICAg
ICAgQ0dJbWFnZVJlZiBuZXdJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZSgpOwotICAgICAgICBpZiAoIW5ld0ltYWdlKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAg
ICAgIC8vIENoZWNrIHRvIHNlZSBpZiB0aGUgaW1hZ2UgY2hhbmdlZDsgd2UgaGF2ZSB0byBkbyB0
aGlzIGJlY2F1c2UgdGhlIGNhbGwgdG8KLSAgICAgICAgLy8gQ0dJbWFnZUNyZWF0ZUNvcHlXaXRo
Q29sb3JTcGFjZSgpIGJlbG93IGNhbiBjcmVhdGUgYSBuZXcgaW1hZ2UgZXZlcnkgdGltZS4KLSAg
ICAgICAgaWYgKG1fdW5jb3JyZWN0ZWRDb250ZW50c0ltYWdlICYmIG1fdW5jb3JyZWN0ZWRDb250
ZW50c0ltYWdlLmdldCgpID09IG5ld0ltYWdlKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAKLSAgICAgICAgbV91bmNvcnJlY3RlZENvbnRlbnRzSW1hZ2UgPSBuZXdJbWFnZTsKLSAgICAg
ICAgbV9wZW5kaW5nQ29udGVudHNJbWFnZSA9IG5ld0ltYWdlOwotICAgICAgICBDR0NvbG9yU3Bh
Y2VSZWYgY29sb3JTcGFjZSA9IENHSW1hZ2VHZXRDb2xvclNwYWNlKG1fcGVuZGluZ0NvbnRlbnRz
SW1hZ2UuZ2V0KCkpOwotCi0gICAgICAgIHN0YXRpYyBDR0NvbG9yU3BhY2VSZWYgZGV2aWNlUkdC
ID0gQ0dDb2xvclNwYWNlQ3JlYXRlRGV2aWNlUkdCKCk7Ci0gICAgICAgIGlmIChjb2xvclNwYWNl
ICYmIENGRXF1YWwoY29sb3JTcGFjZSwgZGV2aWNlUkdCKSkgewotICAgICAgICAgICAgLy8gQ29y
ZUdyYXBoaWNzIHJlbmRlcnMgaW1hZ2VzIHRhZ2dlZCB3aXRoIERldmljZVJHQiB1c2luZyB0aGUg
Y29sb3Igc3BhY2Ugb2YgdGhlIG1haW4gZGlzcGxheS4gV2hlbiB3ZSBoYW5kIHN1Y2gKLSAgICAg
ICAgICAgIC8vIGltYWdlcyB0byBDQSB3ZSBuZWVkIHRvIHRhZyB0aGVtIHNpbWlsYXJseSBzbyBD
QSByZW5kZXJpbmcgbWF0Y2hlcyBDRyByZW5kZXJpbmcuCi0gICAgICAgICAgICBzdGF0aWMgQ0dD
b2xvclNwYWNlUmVmIGdlbmVyaWNSR0IgPSBDR0Rpc3BsYXlDb3B5Q29sb3JTcGFjZShrQ0dEaXJl
Y3RNYWluRGlzcGxheSk7Ci0gICAgICAgICAgICBtX3BlbmRpbmdDb250ZW50c0ltYWdlLmFkb3B0
Q0YoQ0dJbWFnZUNyZWF0ZUNvcHlXaXRoQ29sb3JTcGFjZShtX3BlbmRpbmdDb250ZW50c0ltYWdl
LmdldCgpLCBnZW5lcmljUkdCKSk7Ci0gICAgICAgIH0KLSAgICAgICAgbV9jb250ZW50c0xheWVy
UHVycG9zZSA9IENvbnRlbnRzTGF5ZXJGb3JJbWFnZTsKLSAgICAgICAgaWYgKCFtX2NvbnRlbnRz
TGF5ZXIpCi0gICAgICAgICAgICBub3RlU3VibGF5ZXJzQ2hhbmdlZCgpOwotICAgIH0gZWxzZSB7
Ci0gICAgICAgIG1fdW5jb3JyZWN0ZWRDb250ZW50c0ltYWdlID0gMDsKLSAgICAgICAgbV9wZW5k
aW5nQ29udGVudHNJbWFnZSA9IDA7Ci0gICAgICAgIG1fY29udGVudHNMYXllclB1cnBvc2UgPSBO
b0NvbnRlbnRzTGF5ZXI7Ci0gICAgICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIpCi0gICAgICAgICAg
ICBub3RlU3VibGF5ZXJzQ2hhbmdlZCgpOwotICAgIH0KLQotICAgIG5vdGVMYXllclByb3BlcnR5
Q2hhbmdlZChDb250ZW50c0ltYWdlQ2hhbmdlZCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1h
Yzo6c2V0Q29udGVudHNUb01lZGlhKFBsYXRmb3JtTGF5ZXIqIG1lZGlhTGF5ZXIpCi17Ci0gICAg
aWYgKG1lZGlhTGF5ZXIgPT0gbV9jb250ZW50c0xheWVyKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBtX2NvbnRlbnRzTGF5ZXIgPSBtZWRpYUxheWVyOwotICAgIG1fY29udGVudHNMYXllclB1cnBv
c2UgPSBtZWRpYUxheWVyID8gQ29udGVudHNMYXllckZvck1lZGlhIDogTm9Db250ZW50c0xheWVy
OwotCi0gICAgbm90ZVN1YmxheWVyc0NoYW5nZWQoKTsKLSAgICBub3RlTGF5ZXJQcm9wZXJ0eUNo
YW5nZWQoQ29udGVudHNNZWRpYUxheWVyQ2hhbmdlZCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXll
ck1hYzo6ZGlkRGlzcGxheShQbGF0Zm9ybUxheWVyKiBsYXllcikKLXsKLSAgICBDQUxheWVyKiBz
b3VyY2VMYXllcjsKLSAgICBMYXllck1hcCogbGF5ZXJDbG9uZU1hcDsKLQotICAgIGlmIChsYXll
ciA9PSBtX2xheWVyKSB7Ci0gICAgICAgIHNvdXJjZUxheWVyID0gbV9sYXllci5nZXQoKTsKLSAg
ICAgICAgbGF5ZXJDbG9uZU1hcCA9IG1fbGF5ZXJDbG9uZXMuZ2V0KCk7Ci0gICAgfSBlbHNlIGlm
IChsYXllciA9PSBtX2NvbnRlbnRzTGF5ZXIpIHsKLSAgICAgICAgc291cmNlTGF5ZXIgPSBtX2Nv
bnRlbnRzTGF5ZXIuZ2V0KCk7Ci0gICAgICAgIGxheWVyQ2xvbmVNYXAgPSBtX2NvbnRlbnRzTGF5
ZXJDbG9uZXMuZ2V0KCk7Ci0gICAgfSBlbHNlCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChs
YXllckNsb25lTWFwKSB7Ci0gICAgICAgIExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBs
YXllckNsb25lTWFwLT5lbmQoKTsKLSAgICAgICAgZm9yIChMYXllck1hcDo6Y29uc3RfaXRlcmF0
b3IgaXQgPSBsYXllckNsb25lTWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAg
ICAgICAgIENBTGF5ZXIgKmN1cnJDbG9uZSA9IGl0LT5zZWNvbmQuZ2V0KCk7Ci0gICAgICAgICAg
ICBpZiAoIWN1cnJDbG9uZSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAg
ICAgaWYgKFtjdXJyQ2xvbmUgY29udGVudHNdICE9IFtzb3VyY2VMYXllciBjb250ZW50c10pCi0g
ICAgICAgICAgICAgICAgW2N1cnJDbG9uZSBzZXRDb250ZW50czpbc291cmNlTGF5ZXIgY29udGVu
dHNdXTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBbY3VyckNsb25lIHNldENv
bnRlbnRzQ2hhbmdlZF07Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXll
ck1hYzo6c3luY0NvbXBvc2l0aW5nU3RhdGUoKQotewotICAgIHJlY3Vyc2l2ZUNvbW1pdENoYW5n
ZXMoKTsKLX0KLQotdm9pZCBHcmFwaGljc0xheWVyTWFjOjpzeW5jQ29tcG9zaXRpbmdTdGF0ZUZv
clRoaXNMYXllck9ubHkoKQotewotICAgIGNvbW1pdExheWVyQ2hhbmdlc0JlZm9yZVN1YmxheWVy
cygpOwotICAgIGNvbW1pdExheWVyQ2hhbmdlc0FmdGVyU3VibGF5ZXJzKCk7Ci19Ci0KLXZvaWQg
R3JhcGhpY3NMYXllck1hYzo6cmVjdXJzaXZlQ29tbWl0Q2hhbmdlcygpCi17Ci0gICAgY29tbWl0
TGF5ZXJDaGFuZ2VzQmVmb3JlU3VibGF5ZXJzKCk7Ci0KLSAgICBpZiAobV9tYXNrTGF5ZXIpCi0g
ICAgICAgIHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXJNYWMqPihtX21hc2tMYXllciktPmNvbW1p
dExheWVyQ2hhbmdlc0JlZm9yZVN1YmxheWVycygpOwotCi0gICAgY29uc3QgVmVjdG9yPEdyYXBo
aWNzTGF5ZXIqPiYgY2hpbGRMYXllcnMgPSBjaGlsZHJlbigpOwotICAgIHNpemVfdCBudW1DaGls
ZHJlbiA9IGNoaWxkTGF5ZXJzLnNpemUoKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51
bUNoaWxkcmVuOyArK2kpIHsKLSAgICAgICAgR3JhcGhpY3NMYXllck1hYyogY3VyQ2hpbGQgPSBz
dGF0aWNfY2FzdDxHcmFwaGljc0xheWVyTWFjKj4oY2hpbGRMYXllcnNbaV0pOwotICAgICAgICBj
dXJDaGlsZC0+cmVjdXJzaXZlQ29tbWl0Q2hhbmdlcygpOwotICAgIH0KLQotICAgIGlmIChtX3Jl
cGxpY2FMYXllcikKLSAgICAgICAgc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllck1hYyo+KG1fcmVw
bGljYUxheWVyKS0+cmVjdXJzaXZlQ29tbWl0Q2hhbmdlcygpOwotCi0gICAgaWYgKG1fbWFza0xh
eWVyKQotICAgICAgICBzdGF0aWNfY2FzdDxHcmFwaGljc0xheWVyTWFjKj4obV9tYXNrTGF5ZXIp
LT5jb21taXRMYXllckNoYW5nZXNBZnRlclN1YmxheWVycygpOwotCi0gICAgY29tbWl0TGF5ZXJD
aGFuZ2VzQWZ0ZXJTdWJsYXllcnMoKTsKLX0KLQotdm9pZCBHcmFwaGljc0xheWVyTWFjOjpjb21t
aXRMYXllckNoYW5nZXNCZWZvcmVTdWJsYXllcnMoKQotewotICAgIGlmICghbV91bmNvbW1pdHRl
ZENoYW5nZXMpCi0gICAgICAgIHJldHVybjsKLQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBU
SU9OUwotCi0gICAgLy8gTmVlZCB0byBoYW5kbGUgUHJlc2VydmVzM0RDaGFuZ2VkIGZpcnN0LCBi
ZWNhdXNlIGl0IGFmZmVjdHMgd2hpY2ggbGF5ZXJzIHN1YnNlcXVlbnQgcHJvcGVydGllcyBhcmUg
YXBwbGllZCB0bwotICAgIGlmIChtX3VuY29tbWl0dGVkQ2hhbmdlcyAmIChQcmVzZXJ2ZXMzRENo
YW5nZWQgfCBSZXBsaWNhdGVkTGF5ZXJDaGFuZ2VkKSkKLSAgICAgICAgdXBkYXRlU3RydWN0dXJh
bExheWVyKCk7Ci0KLSAgICBpZiAobV91bmNvbW1pdHRlZENoYW5nZXMgJiBOYW1lQ2hhbmdlZCkK
LSAgICAgICAgdXBkYXRlTGF5ZXJOYW1lcygpOwotCi0gICAgaWYgKG1fdW5jb21taXR0ZWRDaGFu
Z2VzICYgQ29udGVudHNJbWFnZUNoYW5nZWQpIC8vIE5lZWRzIHRvIGhhcHBlbiBiZWZvcmUgQ2hp
bGRyZW5DaGFuZ2VkCi0gICAgICAgIHVwZGF0ZUNvbnRlbnRzSW1hZ2UoKTsKLSAgICAgICAgCi0g
ICAgaWYgKG1fdW5jb21taXR0ZWRDaGFuZ2VzICYgQ29udGVudHNNZWRpYUxheWVyQ2hhbmdlZCkg
Ly8gTmVlZHMgdG8gaGFwcGVuIGJlZm9yZSBDaGlsZHJlbkNoYW5nZWQKLSAgICAgICAgdXBkYXRl
Q29udGVudHNNZWRpYUxheWVyKCk7Ci0gICAgCi0gICAgaWYgKG1fdW5jb21taXR0ZWRDaGFuZ2Vz
ICYgQ29udGVudHNDYW52YXNMYXllckNoYW5nZWQpIC8vIE5lZWRzIHRvIGhhcHBlbiBiZWZvcmUg
Q2hpbGRyZW5DaGFuZ2VkCi0gICAgICAgIHVwZGF0ZUNvbnRlbnRzQ2FudmFzTGF5ZXIoKTsKLSAg
ICAKLSAgICBpZiAobV91bmNvbW1pdHRlZENoYW5nZXMgJiBCYWNrZ3JvdW5kQ29sb3JDaGFuZ2Vk
KSAgLy8gTmVlZHMgdG8gaGFwcGVuIGJlZm9yZSBDaGlsZHJlbkNoYW5nZWQsIGFuZCBhZnRlciB1
cGRhdGluZyBpbWFnZSBvciB2aWRlbwotICAgICAgICB1cGRhdGVMYXllckJhY2tncm91bmRDb2xv
cigpOwotCi0gICAgaWYgKG1fdW5jb21taXR0ZWRDaGFuZ2VzICYgQ2hpbGRyZW5DaGFuZ2VkKQot
ICAgICAgICB1cGRhdGVTdWJsYXllckxpc3QoKTsKLQotICAgIGlmIChtX3VuY29tbWl0dGVkQ2hh
bmdlcyAmIFBvc2l0aW9uQ2hhbmdlZCkKLSAgICAgICAgdXBkYXRlTGF5ZXJQb3NpdGlvbigpOwot
ICAgIAotICAgIGlmIChtX3VuY29tbWl0dGVkQ2hhbmdlcyAmIEFuY2hvclBvaW50Q2hhbmdlZCkK
LSAgICAgICAgdXBkYXRlQW5jaG9yUG9pbnQoKTsKLSAgICAKLSAgICBpZiAobV91bmNvbW1pdHRl
ZENoYW5nZXMgJiBTaXplQ2hhbmdlZCkKLSAgICAgICAgdXBkYXRlTGF5ZXJTaXplKCk7Ci0KLSAg
ICBpZiAobV91bmNvbW1pdHRlZENoYW5nZXMgJiBUcmFuc2Zvcm1DaGFuZ2VkKQotICAgICAgICB1
cGRhdGVUcmFuc2Zvcm0oKTsKLQotICAgIGlmIChtX3VuY29tbWl0dGVkQ2hhbmdlcyAmIENoaWxk
cmVuVHJhbnNmb3JtQ2hhbmdlZCkKLSAgICAgICAgdXBkYXRlQ2hpbGRyZW5UcmFuc2Zvcm0oKTsK
LSAgICAKLSAgICBpZiAobV91bmNvbW1pdHRlZENoYW5nZXMgJiBNYXNrc1RvQm91bmRzQ2hhbmdl
ZCkKLSAgICAgICAgdXBkYXRlTWFza3NUb0JvdW5kcygpOwotICAgIAotICAgIGlmIChtX3VuY29t
bWl0dGVkQ2hhbmdlcyAmIERyYXdzQ29udGVudENoYW5nZWQpCi0gICAgICAgIHVwZGF0ZUxheWVy
RHJhd3NDb250ZW50KCk7Ci0KLSAgICBpZiAobV91bmNvbW1pdHRlZENoYW5nZXMgJiBDb250ZW50
c09wYXF1ZUNoYW5nZWQpCi0gICAgICAgIHVwZGF0ZUNvbnRlbnRzT3BhcXVlKCk7Ci0KLSAgICBp
ZiAobV91bmNvbW1pdHRlZENoYW5nZXMgJiBCYWNrZmFjZVZpc2liaWxpdHlDaGFuZ2VkKQotICAg
ICAgICB1cGRhdGVCYWNrZmFjZVZpc2liaWxpdHkoKTsKLQotICAgIGlmIChtX3VuY29tbWl0dGVk
Q2hhbmdlcyAmIE9wYWNpdHlDaGFuZ2VkKQotICAgICAgICB1cGRhdGVPcGFjaXR5T25MYXllcigp
OwotICAgIAotICAgIGlmIChtX3VuY29tbWl0dGVkQ2hhbmdlcyAmIEFuaW1hdGlvbkNoYW5nZWQp
Ci0gICAgICAgIHVwZGF0ZUxheWVyQW5pbWF0aW9ucygpOwotICAgIAotICAgIGlmIChtX3VuY29t
bWl0dGVkQ2hhbmdlcyAmIERpcnR5UmVjdHNDaGFuZ2VkKQotICAgICAgICByZXBhaW50TGF5ZXJE
aXJ0eVJlY3RzKCk7Ci0gICAgCi0gICAgaWYgKG1fdW5jb21taXR0ZWRDaGFuZ2VzICYgQ29udGVu
dHNSZWN0Q2hhbmdlZCkKLSAgICAgICAgdXBkYXRlQ29udGVudHNSZWN0KCk7Ci0KLSAgICBpZiAo
bV91bmNvbW1pdHRlZENoYW5nZXMgJiBNYXNrTGF5ZXJDaGFuZ2VkKQotICAgICAgICB1cGRhdGVN
YXNrTGF5ZXIoKTsKLQotICAgIGlmIChtX3VuY29tbWl0dGVkQ2hhbmdlcyAmIENvbnRlbnRzTmVl
ZHNEaXNwbGF5KQotICAgICAgICB1cGRhdGVDb250ZW50c05lZWRzRGlzcGxheSgpOwotCi0gICAg
RU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OmNv
bW1pdExheWVyQ2hhbmdlc0FmdGVyU3VibGF5ZXJzKCkKLXsKLSAgICBpZiAoIW1fdW5jb21taXR0
ZWRDaGFuZ2VzKQotICAgICAgICByZXR1cm47Ci0KLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQ
VElPTlMKLQotICAgIGlmIChtX3VuY29tbWl0dGVkQ2hhbmdlcyAmIFJlcGxpY2F0ZWRMYXllckNo
YW5nZWQpCi0gICAgICAgIHVwZGF0ZVJlcGxpY2F0ZWRMYXllcnMoKTsKLQotICAgIG1fdW5jb21t
aXR0ZWRDaGFuZ2VzID0gTm9DaGFuZ2U7Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwot
fQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnVwZGF0ZUxheWVyTmFtZXMoKQotewotICAgIHN3
aXRjaCAoc3RydWN0dXJhbExheWVyUHVycG9zZSgpKSB7Ci0gICAgICAgIGNhc2UgU3RydWN0dXJh
bExheWVyRm9yUHJlc2VydmVzM0Q6Ci0gICAgICAgICAgICBbbV9zdHJ1Y3R1cmFsTGF5ZXIuZ2V0
KCkgc2V0TmFtZTooIlRyYW5zZm9ybSBsYXllciAiICsgbmFtZSgpKV07Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSBTdHJ1Y3R1cmFsTGF5ZXJGb3JSZXBsaWNhRmxhdHRlbmluZzoK
LSAgICAgICAgICAgIFttX3N0cnVjdHVyYWxMYXllci5nZXQoKSBzZXROYW1lOigiUmVwbGljYSBm
bGF0dGVuaW5nIGxheWVyICIgKyBuYW1lKCkpXTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIE5vU3RydWN0dXJhbExheWVyOgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQotICAg
IFttX2xheWVyLmdldCgpIHNldE5hbWU6bmFtZSgpXTsKLX0KLQotdm9pZCBHcmFwaGljc0xheWVy
TWFjOjp1cGRhdGVTdWJsYXllckxpc3QoKQotewotICAgIE5TTXV0YWJsZUFycmF5KiBuZXdTdWJs
YXllcnMgPSBuaWw7Ci0KLSAgICBjb25zdCBWZWN0b3I8R3JhcGhpY3NMYXllcio+JiBjaGlsZExh
eWVycyA9IGNoaWxkcmVuKCk7Ci0KLSAgICBpZiAobV9zdHJ1Y3R1cmFsTGF5ZXIgfHwgbV9jb250
ZW50c0xheWVyIHx8IGNoaWxkTGF5ZXJzLnNpemUoKSA+IDApIHsKLSAgICAgICAgbmV3U3VibGF5
ZXJzID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF07Ci0KLSAgICAgICAgaWYgKG1fc3Ry
dWN0dXJhbExheWVyKSB7Ci0gICAgICAgICAgICAvLyBBZGQgdGhlIHJlcGxpY2EgbGF5ZXIgZmly
c3QuCi0gICAgICAgICAgICBpZiAobV9yZXBsaWNhTGF5ZXIpCi0gICAgICAgICAgICAgICAgW25l
d1N1YmxheWVycyBhZGRPYmplY3Q6c3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllck1hYyo+KG1fcmVw
bGljYUxheWVyKS0+cHJpbWFyeUxheWVyKCldOwotICAgICAgICAgICAgLy8gQWRkIHRoZSBwcmlt
YXJ5IGxheWVyLiBFdmVuIGlmIHdlIGhhdmUgbmVnYXRpdmUgei1vcmRlciBjaGlsZHJlbiwgdGhl
IHByaW1hcnkgbGF5ZXIgYWx3YXlzIGNvbWVzIGJlaGluZC4KLSAgICAgICAgICAgIFtuZXdTdWJs
YXllcnMgYWRkT2JqZWN0Om1fbGF5ZXIuZ2V0KCldOwotICAgICAgICB9IGVsc2UgaWYgKG1fY29u
dGVudHNMYXllcikgewotICAgICAgICAgICAgLy8gRklYTUU6IGFkZCB0aGUgY29udGVudHMgbGF5
ZXIgaW4gdGhlIGNvcnJlY3Qgb3JkZXIgd2l0aCBuZWdhdGl2ZSB6LW9yZGVyIGNoaWxkcmVuLgot
ICAgICAgICAgICAgLy8gVGhpcyBkb2VzIG5vdCBjYXVzZSB2aXNpYmxlIHJlbmRlcmluZyBpc3N1
ZXMgYmVjYXVzZSBjdXJyZW50bHkgY29udGVudHMgbGF5ZXJzIGFyZSBvbmx5IHVzZWQKLSAgICAg
ICAgICAgIC8vIGZvciByZXBsYWNlZCBlbGVtZW50cyB0aGF0IGRvbid0IGhhdmUgY2hpbGRyZW4u
Ci0gICAgICAgICAgICBbbmV3U3VibGF5ZXJzIGFkZE9iamVjdDptX2NvbnRlbnRzTGF5ZXIuZ2V0
KCldOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBzaXplX3QgbnVtQ2hpbGRyZW4gPSBj
aGlsZExheWVycy5zaXplKCk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtQ2hp
bGRyZW47ICsraSkgewotICAgICAgICAgICAgR3JhcGhpY3NMYXllck1hYyogY3VyQ2hpbGQgPSBz
dGF0aWNfY2FzdDxHcmFwaGljc0xheWVyTWFjKj4oY2hpbGRMYXllcnNbaV0pOwotICAgICAgICAg
ICAgQ0FMYXllciAqY2hpbGRMYXllciA9IGN1ckNoaWxkLT5sYXllckZvclN1cGVybGF5ZXIoKTsK
LSAgICAgICAgICAgIFtuZXdTdWJsYXllcnMgYWRkT2JqZWN0OmNoaWxkTGF5ZXJdOwotICAgICAg
ICB9Ci0KLSAgICAgICAgW25ld1N1YmxheWVycyBtYWtlT2JqZWN0c1BlcmZvcm1TZWxlY3RvcjpA
c2VsZWN0b3IocmVtb3ZlRnJvbVN1cGVybGF5ZXIpXTsKLSAgICB9Ci0KLSAgICBpZiAobV9zdHJ1
Y3R1cmFsTGF5ZXIpIHsKLSAgICAgICAgc2FmZVNldFN1YmxheWVycyhtX3N0cnVjdHVyYWxMYXll
ci5nZXQoKSwgbmV3U3VibGF5ZXJzKTsKLQotICAgICAgICBpZiAobV9jb250ZW50c0xheWVyKSB7
Ci0gICAgICAgICAgICAvLyBJZiB3ZSBoYXZlIGEgdHJhbnNmb3JtIGxheWVyLCB0aGVuIHRoZSBj
b250ZW50cyBsYXllciBpcyBwYXJlbnRlZCBpbiB0aGUgCi0gICAgICAgICAgICAvLyBwcmltYXJ5
IGxheWVyICh3aGljaCBpcyBpdHNlbGYgYSBjaGlsZCBvZiB0aGUgdHJhbnNmb3JtIGxheWVyKS4K
LSAgICAgICAgICAgIHNhZmVTZXRTdWJsYXllcnMobV9sYXllci5nZXQoKSwgbmlsKTsKLSAgICAg
ICAgICAgIFttX2xheWVyLmdldCgpIGFkZFN1YmxheWVyOm1fY29udGVudHNMYXllci5nZXQoKV07
Ci0gICAgICAgIH0KLSAgICB9IGVsc2UKLSAgICAgICAgc2FmZVNldFN1YmxheWVycyhtX2xheWVy
LmdldCgpLCBuZXdTdWJsYXllcnMpOwotCi0gICAgW25ld1N1YmxheWVycyByZWxlYXNlXTsKLX0K
LQotdm9pZCBHcmFwaGljc0xheWVyTWFjOjp1cGRhdGVMYXllclBvc2l0aW9uKCkKLXsKLSAgICBG
bG9hdFNpemUgdXNlZFNpemUgPSBtX3VzaW5nVGlsZWRMYXllciA/IGNvbnN0cmFpbmVkU2l6ZSgp
IDogbV9zaXplOwotCi0gICAgLy8gUG9zaXRpb24gaXMgb2Zmc2V0IG9uIHRoZSBsYXllciBieSB0
aGUgbGF5ZXIgYW5jaG9yIHBvaW50LgotICAgIENHUG9pbnQgcG9zUG9pbnQgPSBDR1BvaW50TWFr
ZShtX3Bvc2l0aW9uLngoKSArIG1fYW5jaG9yUG9pbnQueCgpICogdXNlZFNpemUud2lkdGgoKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9wb3NpdGlvbi55KCkgKyBtX2Fu
Y2hvclBvaW50LnkoKSAqIHVzZWRTaXplLmhlaWdodCgpKTsKLSAgICAKLSAgICBbcHJpbWFyeUxh
eWVyKCkgc2V0UG9zaXRpb246cG9zUG9pbnRdOwotCi0gICAgaWYgKExheWVyTWFwKiBsYXllckNs
b25lTWFwID0gcHJpbWFyeUxheWVyQ2xvbmVzKCkpIHsKLSAgICAgICAgTGF5ZXJNYXA6OmNvbnN0
X2l0ZXJhdG9yIGVuZCA9IGxheWVyQ2xvbmVNYXAtPmVuZCgpOwotICAgICAgICBmb3IgKExheWVy
TWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGxheWVyQ2xvbmVNYXAtPmJlZ2luKCk7IGl0ICE9IGVu
ZDsgKytpdCkgewotICAgICAgICAgICAgQ0dQb2ludCBjbG9uZVBvc2l0aW9uID0gcG9zUG9pbnQ7
Ci0gICAgICAgICAgICBpZiAobV9yZXBsaWNhTGF5ZXIgJiYgaXNSZXBsaWNhdGVkUm9vdENsb25l
KGl0LT5maXJzdCkpIHsKLSAgICAgICAgICAgICAgICAvLyBNYWludGFpbiB0aGUgc3BlY2lhbC1j
YXNlIHBvc2l0aW9uIGZvciB0aGUgcm9vdCBvZiBhIGNsb25lIHN1YnRyZWUsCi0gICAgICAgICAg
ICAgICAgLy8gd2hpY2ggd2Ugc2V0IHVwIGluIHJlcGxpY2F0ZWRMYXllclJvb3QoKS4KLSAgICAg
ICAgICAgICAgICBjbG9uZVBvc2l0aW9uID0gcG9zaXRpb25Gb3JDbG9uZVJvb3RMYXllcigpOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgQ0FMYXllciAqY3VyckxheWVyID0gaXQtPnNlY29u
ZC5nZXQoKTsKLSAgICAgICAgICAgIFtjdXJyTGF5ZXIgc2V0UG9zaXRpb246Y2xvbmVQb3NpdGlv
bl07Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6dXBkYXRl
TGF5ZXJTaXplKCkKLXsKLSAgICBDR1JlY3QgcmVjdCA9IENHUmVjdE1ha2UoMCwgMCwgbV9zaXpl
LndpZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSk7Ci0gICAgaWYgKG1fc3RydWN0dXJhbExheWVyKSB7
Ci0gICAgICAgIFttX3N0cnVjdHVyYWxMYXllci5nZXQoKSBzZXRCb3VuZHM6cmVjdF07Ci0gICAg
ICAgIAotICAgICAgICBpZiAoTGF5ZXJNYXAqIGxheWVyQ2xvbmVNYXAgPSBtX3N0cnVjdHVyYWxM
YXllckNsb25lcy5nZXQoKSkgewotICAgICAgICAgICAgTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9y
IGVuZCA9IGxheWVyQ2xvbmVNYXAtPmVuZCgpOwotICAgICAgICAgICAgZm9yIChMYXllck1hcDo6
Y29uc3RfaXRlcmF0b3IgaXQgPSBsYXllckNsb25lTWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsr
aXQpCi0gICAgICAgICAgICAgICAgW2l0LT5zZWNvbmQuZ2V0KCkgc2V0Qm91bmRzOnJlY3RdOwot
ICAgICAgICB9Ci0KLSAgICAgICAgLy8gVGhlIGFuY2hvciBvZiB0aGUgY29udGVudHMgbGF5ZXIg
aXMgYWx3YXlzIGF0IDAuNSwgMC41LCBzbyB0aGUgcG9zaXRpb24gaXMgY2VudGVyLXJlbGF0aXZl
LgotICAgICAgICBDR1BvaW50IGNlbnRlclBvaW50ID0gQ0dQb2ludE1ha2UobV9zaXplLndpZHRo
KCkgLyAyLjBmLCBtX3NpemUuaGVpZ2h0KCkgLyAyLjBmKTsKLSAgICAgICAgW21fbGF5ZXIuZ2V0
KCkgc2V0UG9zaXRpb246Y2VudGVyUG9pbnRdOwotCi0gICAgICAgIGlmIChMYXllck1hcCogbGF5
ZXJDbG9uZU1hcCA9IG1fbGF5ZXJDbG9uZXMuZ2V0KCkpIHsKLSAgICAgICAgICAgIExheWVyTWFw
Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBsYXllckNsb25lTWFwLT5lbmQoKTsKLSAgICAgICAgICAg
IGZvciAoTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbGF5ZXJDbG9uZU1hcC0+YmVnaW4o
KTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICAgICAgICAgIFtpdC0+c2Vjb25kLmdldCgpIHNl
dFBvc2l0aW9uOmNlbnRlclBvaW50XTsKLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICBib29s
IG5lZWRUaWxlZExheWVyID0gcmVxdWlyZXNUaWxlZExheWVyKG1fc2l6ZSk7Ci0gICAgaWYgKG5l
ZWRUaWxlZExheWVyICE9IG1fdXNpbmdUaWxlZExheWVyKQotICAgICAgICBzd2FwRnJvbU9yVG9U
aWxlZExheWVyKG5lZWRUaWxlZExheWVyKTsKLSAgICAKLSAgICBpZiAobV91c2luZ1RpbGVkTGF5
ZXIpIHsKLSAgICAgICAgRmxvYXRTaXplIHNpemVUb1VzZSA9IGNvbnN0cmFpbmVkU2l6ZSgpOwot
ICAgICAgICByZWN0ID0gQ0dSZWN0TWFrZSgwLCAwLCBzaXplVG9Vc2Uud2lkdGgoKSwgc2l6ZVRv
VXNlLmhlaWdodCgpKTsKLSAgICB9Ci0gICAgCi0gICAgW21fbGF5ZXIuZ2V0KCkgc2V0Qm91bmRz
OnJlY3RdOwotICAgIGlmIChMYXllck1hcCogbGF5ZXJDbG9uZU1hcCA9IG1fbGF5ZXJDbG9uZXMu
Z2V0KCkpIHsKLSAgICAgICAgTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGxheWVyQ2xv
bmVNYXAtPmVuZCgpOwotICAgICAgICBmb3IgKExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9
IGxheWVyQ2xvbmVNYXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgICAgIFtp
dC0+c2Vjb25kLmdldCgpIHNldEJvdW5kczpyZWN0XTsKLSAgICB9Ci0gICAgCi0gICAgLy8gQ29u
dGVudHMgdHJhbnNmb3JtIG1heSBkZXBlbmQgb24gaGVpZ2h0LgotICAgIHVwZGF0ZUNvbnRlbnRz
VHJhbnNmb3JtKCk7Ci0KLSAgICAvLyBOb3RlIHRoYXQgd2UgZG9uJ3QgcmVzaXplIG1fY29udGVu
dHNMYXllci4gSXQncyB1cCB0aGUgY2FsbGVyIHRvIGRvIHRoYXQuCi0KLSAgICAvLyBpZiB3ZSd2
ZSBjaGFuZ2VkIHRoZSBib3VuZHMsIHdlIG5lZWQgdG8gcmVjYWxjdWxhdGUgdGhlIHBvc2l0aW9u
Ci0gICAgLy8gb2YgdGhlIGxheWVyLCB0YWtpbmcgYW5jaG9yIHBvaW50IGludG8gYWNjb3VudC4K
LSAgICB1cGRhdGVMYXllclBvc2l0aW9uKCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6
dXBkYXRlQW5jaG9yUG9pbnQoKQotewotICAgIFtwcmltYXJ5TGF5ZXIoKSBzZXRBbmNob3JQb2lu
dDpGbG9hdFBvaW50KG1fYW5jaG9yUG9pbnQueCgpLCBtX2FuY2hvclBvaW50LnkoKSldOwotI2lm
IEhBVkVfTU9ERVJOX1FVQVJUWkNPUkUKLSAgICBbcHJpbWFyeUxheWVyKCkgc2V0QW5jaG9yUG9p
bnRaOm1fYW5jaG9yUG9pbnQueigpXTsKLSNlbmRpZgotCi0gICAgaWYgKExheWVyTWFwKiBsYXll
ckNsb25lTWFwID0gcHJpbWFyeUxheWVyQ2xvbmVzKCkpIHsKLSAgICAgICAgTGF5ZXJNYXA6OmNv
bnN0X2l0ZXJhdG9yIGVuZCA9IGxheWVyQ2xvbmVNYXAtPmVuZCgpOwotICAgICAgICBmb3IgKExh
eWVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGxheWVyQ2xvbmVNYXAtPmJlZ2luKCk7IGl0ICE9
IGVuZDsgKytpdCkgeyAgIAotICAgICAgICAgICAgQ0FMYXllciAqY3VyckxheWVyID0gaXQtPnNl
Y29uZC5nZXQoKTsKLSAgICAgICAgICAgIFtjdXJyTGF5ZXIgc2V0QW5jaG9yUG9pbnQ6RmxvYXRQ
b2ludChtX2FuY2hvclBvaW50LngoKSwgbV9hbmNob3JQb2ludC55KCkpXTsKLSNpZiBIQVZFX01P
REVSTl9RVUFSVFpDT1JFCi0gICAgICAgICAgICBbY3VyckxheWVyIHNldEFuY2hvclBvaW50Wjpt
X2FuY2hvclBvaW50LnooKV07Ci0jZW5kaWYKLSAgICAgICAgfQotICAgIH0KLQotICAgIHVwZGF0
ZUxheWVyUG9zaXRpb24oKTsKLX0KLQotdm9pZCBHcmFwaGljc0xheWVyTWFjOjp1cGRhdGVUcmFu
c2Zvcm0oKQotewotICAgIENBVHJhbnNmb3JtM0QgdHJhbnNmb3JtOwotICAgIGNvcHlUcmFuc2Zv
cm0odHJhbnNmb3JtLCBtX3RyYW5zZm9ybSk7Ci0gICAgW3ByaW1hcnlMYXllcigpIHNldFRyYW5z
Zm9ybTp0cmFuc2Zvcm1dOwotCi0gICAgaWYgKExheWVyTWFwKiBsYXllckNsb25lTWFwID0gcHJp
bWFyeUxheWVyQ2xvbmVzKCkpIHsKLSAgICAgICAgTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVu
ZCA9IGxheWVyQ2xvbmVNYXAtPmVuZCgpOwotICAgICAgICBmb3IgKExheWVyTWFwOjpjb25zdF9p
dGVyYXRvciBpdCA9IGxheWVyQ2xvbmVNYXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewot
ICAgICAgICAgICAgQ0FMYXllciAqY3VyckxheWVyID0gaXQtPnNlY29uZC5nZXQoKTsKLSAgICAg
ICAgICAgIGlmIChtX3JlcGxpY2FMYXllciAmJiBpc1JlcGxpY2F0ZWRSb290Q2xvbmUoaXQtPmZp
cnN0KSkgewotICAgICAgICAgICAgICAgIC8vIE1haW50YWluIHRoZSBzcGVjaWFsLWNhc2UgdHJh
bnNmb3JtIGZvciB0aGUgcm9vdCBvZiBhIGNsb25lIHN1YnRyZWUsCi0gICAgICAgICAgICAgICAg
Ly8gd2hpY2ggd2Ugc2V0IHVwIGluIHJlcGxpY2F0ZWRMYXllclJvb3QoKS4KLSAgICAgICAgICAg
ICAgICBbY3VyckxheWVyIHNldFRyYW5zZm9ybTpDQVRyYW5zZm9ybTNESWRlbnRpdHldOwotICAg
ICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgW2N1cnJMYXllciBzZXRUcmFuc2Zvcm06
dHJhbnNmb3JtXTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotdm9pZCBHcmFwaGljc0xheWVyTWFj
Ojp1cGRhdGVDaGlsZHJlblRyYW5zZm9ybSgpCi17Ci0gICAgQ0FUcmFuc2Zvcm0zRCB0cmFuc2Zv
cm07Ci0gICAgY29weVRyYW5zZm9ybSh0cmFuc2Zvcm0sIG1fY2hpbGRyZW5UcmFuc2Zvcm0pOwot
ICAgIFtwcmltYXJ5TGF5ZXIoKSBzZXRTdWJsYXllclRyYW5zZm9ybTp0cmFuc2Zvcm1dOwotCi0g
ICAgaWYgKExheWVyTWFwKiBsYXllckNsb25lTWFwID0gcHJpbWFyeUxheWVyQ2xvbmVzKCkpIHsK
LSAgICAgICAgTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGxheWVyQ2xvbmVNYXAtPmVu
ZCgpOwotICAgICAgICBmb3IgKExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGxheWVyQ2xv
bmVNYXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICAgICAgQ0FMYXllciAq
Y3VyckxheWVyID0gaXQtPnNlY29uZC5nZXQoKTsKLSAgICAgICAgICAgIFtjdXJyTGF5ZXIgc2V0
U3VibGF5ZXJUcmFuc2Zvcm06dHJhbnNmb3JtXTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotdm9p
ZCBHcmFwaGljc0xheWVyTWFjOjp1cGRhdGVNYXNrc1RvQm91bmRzKCkKLXsKLSAgICBbbV9sYXll
ci5nZXQoKSBzZXRNYXNrc1RvQm91bmRzOm1fbWFza3NUb0JvdW5kc107Ci0KLSAgICBpZiAoTGF5
ZXJNYXAqIGxheWVyQ2xvbmVNYXAgPSBtX2xheWVyQ2xvbmVzLmdldCgpKSB7Ci0gICAgICAgIExh
eWVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBsYXllckNsb25lTWFwLT5lbmQoKTsKLSAgICAg
ICAgZm9yIChMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBsYXllckNsb25lTWFwLT5iZWdp
bigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgICAgIENBTGF5ZXIgKmN1cnJMYXllciA9
IGl0LT5zZWNvbmQuZ2V0KCk7Ci0gICAgICAgICAgICBbY3VyckxheWVyIHNldE1hc2tzVG9Cb3Vu
ZHM6bV9tYXNrc1RvQm91bmRzXTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHVwZGF0ZURlYnVn
SW5kaWNhdG9ycygpOwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnVwZGF0ZUNvbnRlbnRz
T3BhcXVlKCkKLXsKLSAgICBbbV9sYXllci5nZXQoKSBzZXRPcGFxdWU6bV9jb250ZW50c09wYXF1
ZV07Ci0KLSAgICBpZiAoTGF5ZXJNYXAqIGxheWVyQ2xvbmVNYXAgPSBtX2xheWVyQ2xvbmVzLmdl
dCgpKSB7Ci0gICAgICAgIExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBsYXllckNsb25l
TWFwLT5lbmQoKTsKLSAgICAgICAgZm9yIChMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBs
YXllckNsb25lTWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgICAgIENB
TGF5ZXIgKmN1cnJMYXllciA9IGl0LT5zZWNvbmQuZ2V0KCk7Ci0gICAgICAgICAgICBbY3Vyckxh
eWVyIHNldE9wYXF1ZTptX2NvbnRlbnRzT3BhcXVlXTsKLSAgICAgICAgfQotICAgIH0KLX0KLQot
dm9pZCBHcmFwaGljc0xheWVyTWFjOjp1cGRhdGVCYWNrZmFjZVZpc2liaWxpdHkoKQotewotICAg
IGlmIChtX3N0cnVjdHVyYWxMYXllciAmJiBzdHJ1Y3R1cmFsTGF5ZXJQdXJwb3NlKCkgPT0gU3Ry
dWN0dXJhbExheWVyRm9yUmVwbGljYUZsYXR0ZW5pbmcpIHsKLSAgICAgICAgW21fc3RydWN0dXJh
bExheWVyLmdldCgpIHNldERvdWJsZVNpZGVkOm1fYmFja2ZhY2VWaXNpYmlsaXR5XTsKLQotICAg
ICAgICBpZiAoTGF5ZXJNYXAqIGxheWVyQ2xvbmVNYXAgPSBtX3N0cnVjdHVyYWxMYXllckNsb25l
cy5nZXQoKSkgewotICAgICAgICAgICAgTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGxh
eWVyQ2xvbmVNYXAtPmVuZCgpOwotICAgICAgICAgICAgZm9yIChMYXllck1hcDo6Y29uc3RfaXRl
cmF0b3IgaXQgPSBsYXllckNsb25lTWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAg
ICAgICAgICAgICAgICBDQUxheWVyICpjdXJyTGF5ZXIgPSBpdC0+c2Vjb25kLmdldCgpOwotICAg
ICAgICAgICAgICAgIFtjdXJyTGF5ZXIgc2V0RG91YmxlU2lkZWQ6bV9iYWNrZmFjZVZpc2liaWxp
dHldOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgW21fbGF5ZXIuZ2V0
KCkgc2V0RG91YmxlU2lkZWQ6bV9iYWNrZmFjZVZpc2liaWxpdHldOwotCi0gICAgaWYgKExheWVy
TWFwKiBsYXllckNsb25lTWFwID0gbV9sYXllckNsb25lcy5nZXQoKSkgewotICAgICAgICBMYXll
ck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbGF5ZXJDbG9uZU1hcC0+ZW5kKCk7Ci0gICAgICAg
IGZvciAoTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbGF5ZXJDbG9uZU1hcC0+YmVnaW4o
KTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICBDQUxheWVyICpjdXJyTGF5ZXIgPSBp
dC0+c2Vjb25kLmdldCgpOwotICAgICAgICAgICAgW2N1cnJMYXllciBzZXREb3VibGVTaWRlZDpt
X2JhY2tmYWNlVmlzaWJpbGl0eV07Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXZvaWQgR3JhcGhp
Y3NMYXllck1hYzo6dXBkYXRlU3RydWN0dXJhbExheWVyKCkKLXsKLSAgICBlbnN1cmVTdHJ1Y3R1
cmFsTGF5ZXIoc3RydWN0dXJhbExheWVyUHVycG9zZSgpKTsKLX0KLQotdm9pZCBHcmFwaGljc0xh
eWVyTWFjOjplbnN1cmVTdHJ1Y3R1cmFsTGF5ZXIoU3RydWN0dXJhbExheWVyUHVycG9zZSBwdXJw
b3NlKQotewotICAgIGlmIChwdXJwb3NlID09IE5vU3RydWN0dXJhbExheWVyKSB7Ci0gICAgICAg
IGlmIChtX3N0cnVjdHVyYWxMYXllcikgewotICAgICAgICAgICAgLy8gUmVwbGFjZSB0aGUgdHJh
bnNmb3JtTGF5ZXIgaW4gdGhlIHBhcmVudCB3aXRoIHRoaXMgbGF5ZXIuCi0gICAgICAgICAgICBb
bV9sYXllci5nZXQoKSByZW1vdmVGcm9tU3VwZXJsYXllcl07Ci0gICAgICAgICAgICBbW21fc3Ry
dWN0dXJhbExheWVyLmdldCgpIHN1cGVybGF5ZXJdIHJlcGxhY2VTdWJsYXllcjptX3N0cnVjdHVy
YWxMYXllci5nZXQoKSB3aXRoOm1fbGF5ZXIuZ2V0KCldOwotCi0gICAgICAgICAgICBtb3ZlT3JD
b3B5QW5pbWF0aW9uc0ZvclByb3BlcnR5KE1vdmUsIEFuaW1hdGVkUHJvcGVydHlXZWJraXRUcmFu
c2Zvcm0sIG1fc3RydWN0dXJhbExheWVyLmdldCgpLCBtX2xheWVyLmdldCgpKTsKLSAgICAgICAg
ICAgIG1vdmVPckNvcHlBbmltYXRpb25zRm9yUHJvcGVydHkoTW92ZSwgQW5pbWF0ZWRQcm9wZXJ0
eU9wYWNpdHksIG1fc3RydWN0dXJhbExheWVyLmdldCgpLCBtX2xheWVyLmdldCgpKTsKLQotICAg
ICAgICAgICAgLy8gUmVsZWFzZSB0aGUgc3RydWN0dXJhbCBsYXllci4KLSAgICAgICAgICAgIG1f
c3RydWN0dXJhbExheWVyID0gMDsKLQotICAgICAgICAgICAgLy8gVXBkYXRlIHRoZSBwcm9wZXJ0
aWVzIG9mIG1fbGF5ZXIgbm93IHRoYXQgd2Ugbm8gbG9uZ2VyIGhhdmUgYSBzdHJ1Y3R1cmFsIGxh
eWVyLgotICAgICAgICAgICAgdXBkYXRlTGF5ZXJQb3NpdGlvbigpOwotICAgICAgICAgICAgdXBk
YXRlTGF5ZXJTaXplKCk7Ci0gICAgICAgICAgICB1cGRhdGVBbmNob3JQb2ludCgpOwotICAgICAg
ICAgICAgdXBkYXRlVHJhbnNmb3JtKCk7Ci0gICAgICAgICAgICB1cGRhdGVDaGlsZHJlblRyYW5z
Zm9ybSgpOwotCi0gICAgICAgICAgICB1cGRhdGVTdWJsYXllckxpc3QoKTsKLSAgICAgICAgICAg
IHVwZGF0ZU9wYWNpdHlPbkxheWVyKCk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLSAgICAKLSAgICBib29sIHN0cnVjdHVyYWxMYXllckNoYW5nZWQgPSBmYWxzZTsKLSAgICAK
LSAgICBpZiAocHVycG9zZSA9PSBTdHJ1Y3R1cmFsTGF5ZXJGb3JQcmVzZXJ2ZXMzRCkgewotICAg
ICAgICBDbGFzcyB0cmFuc2Zvcm1MYXllckNsYXNzID0gTlNDbGFzc0Zyb21TdHJpbmcoQCJDQVRy
YW5zZm9ybUxheWVyIik7Ci0gICAgICAgIGlmICghdHJhbnNmb3JtTGF5ZXJDbGFzcykKLSAgICAg
ICAgICAgIHJldHVybjsKLQotICAgICAgICBpZiAobV9zdHJ1Y3R1cmFsTGF5ZXIgJiYgIVttX3N0
cnVjdHVyYWxMYXllci5nZXQoKSBpc0tpbmRPZkNsYXNzOnRyYW5zZm9ybUxheWVyQ2xhc3NdKQot
ICAgICAgICAgICAgbV9zdHJ1Y3R1cmFsTGF5ZXIgPSAwOwotICAgICAgICAKLSAgICAgICAgaWYg
KCFtX3N0cnVjdHVyYWxMYXllcikgewotICAgICAgICAgICAgbV9zdHJ1Y3R1cmFsTGF5ZXIuYWRv
cHROUyhbW3RyYW5zZm9ybUxheWVyQ2xhc3MgYWxsb2NdIGluaXRdKTsKLSAgICAgICAgICAgIHN0
cnVjdHVyYWxMYXllckNoYW5nZWQgPSB0cnVlOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAg
ICAgICAgaWYgKG1fc3RydWN0dXJhbExheWVyICYmICFbbV9zdHJ1Y3R1cmFsTGF5ZXIuZ2V0KCkg
aXNNZW1iZXJPZkNsYXNzOltDQUxheWVyIHNlbGZdXSkKLSAgICAgICAgICAgIG1fc3RydWN0dXJh
bExheWVyID0gMDsKLQotICAgICAgICBpZiAoIW1fc3RydWN0dXJhbExheWVyKSB7Ci0gICAgICAg
ICAgICBtX3N0cnVjdHVyYWxMYXllci5hZG9wdE5TKFtbQ0FMYXllciBhbGxvY10gaW5pdF0pOwot
ICAgICAgICAgICAgc3RydWN0dXJhbExheWVyQ2hhbmdlZCA9IHRydWU7Ci0gICAgICAgIH0KLSAg
ICB9Ci0gICAgCi0gICAgaWYgKCFzdHJ1Y3R1cmFsTGF5ZXJDaGFuZ2VkKQotICAgICAgICByZXR1
cm47Ci0gICAgCi0gICAgLy8gVHVybiBvZmYgZGVmYXVsdCBhbmltYXRpb25zLgotICAgIFttX3N0
cnVjdHVyYWxMYXllci5nZXQoKSBzZXRTdHlsZTpbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRo
T2JqZWN0Om51bGxBY3Rpb25zRGljdGlvbmFyeSgpIGZvcktleTpAImFjdGlvbnMiXV07Ci0KLSAg
ICB1cGRhdGVMYXllck5hbWVzKCk7Ci0KLSAgICAvLyBVcGRhdGUgdGhlIHByb3BlcnRpZXMgb2Yg
dGhlIHN0cnVjdHVyYWwgbGF5ZXIuCi0gICAgdXBkYXRlTGF5ZXJQb3NpdGlvbigpOwotICAgIHVw
ZGF0ZUxheWVyU2l6ZSgpOwotICAgIHVwZGF0ZUFuY2hvclBvaW50KCk7Ci0gICAgdXBkYXRlVHJh
bnNmb3JtKCk7Ci0gICAgdXBkYXRlQ2hpbGRyZW5UcmFuc2Zvcm0oKTsKLSAgICB1cGRhdGVCYWNr
ZmFjZVZpc2liaWxpdHkoKTsKLSAgICAKLSAgICAvLyBTZXQgcHJvcGVydGllcyBvZiBtX2xheWVy
IHRvIHRoZWlyIGRlZmF1bHQgdmFsdWVzLCBzaW5jZSB0aGVzZSBhcmUgZXhwcmVzc2VkIG9uIG9u
IHRoZSBzdHJ1Y3R1cmFsIGxheWVyLgotICAgIENHUG9pbnQgcG9pbnQgPSBDR1BvaW50TWFrZSht
X3NpemUud2lkdGgoKSAvIDIuMGYsIG1fc2l6ZS5oZWlnaHQoKSAvIDIuMGYpOwotICAgIFttX2xh
eWVyLmdldCgpIHNldFBvc2l0aW9uOnBvaW50XTsKLSAgICBbbV9sYXllci5nZXQoKSBzZXRBbmNo
b3JQb2ludDpDR1BvaW50TWFrZSgwLjVmLCAwLjVmKV07Ci0gICAgW21fbGF5ZXIuZ2V0KCkgc2V0
VHJhbnNmb3JtOkNBVHJhbnNmb3JtM0RJZGVudGl0eV07Ci0gICAgW21fbGF5ZXIuZ2V0KCkgc2V0
T3BhY2l0eToxXTsKLQotICAgIC8vIE1vdmUgdGhpcyBsYXllciB0byBiZSBhIGNoaWxkIG9mIHRo
ZSB0cmFuc2Zvcm0gbGF5ZXIuCi0gICAgW1ttX2xheWVyLmdldCgpIHN1cGVybGF5ZXJdIHJlcGxh
Y2VTdWJsYXllcjptX2xheWVyLmdldCgpIHdpdGg6bV9zdHJ1Y3R1cmFsTGF5ZXIuZ2V0KCldOwot
ICAgIFttX3N0cnVjdHVyYWxMYXllci5nZXQoKSBhZGRTdWJsYXllcjptX2xheWVyLmdldCgpXTsK
LQotICAgIG1vdmVPckNvcHlBbmltYXRpb25zRm9yUHJvcGVydHkoTW92ZSwgQW5pbWF0ZWRQcm9w
ZXJ0eVdlYmtpdFRyYW5zZm9ybSwgbV9sYXllci5nZXQoKSwgbV9zdHJ1Y3R1cmFsTGF5ZXIuZ2V0
KCkpOwotICAgIG1vdmVPckNvcHlBbmltYXRpb25zRm9yUHJvcGVydHkoTW92ZSwgQW5pbWF0ZWRQ
cm9wZXJ0eU9wYWNpdHksIG1fbGF5ZXIuZ2V0KCksIG1fc3RydWN0dXJhbExheWVyLmdldCgpKTsK
LSAgICAKLSAgICB1cGRhdGVTdWJsYXllckxpc3QoKTsKLSAgICB1cGRhdGVPcGFjaXR5T25MYXll
cigpOwotfQotCi1HcmFwaGljc0xheWVyTWFjOjpTdHJ1Y3R1cmFsTGF5ZXJQdXJwb3NlIEdyYXBo
aWNzTGF5ZXJNYWM6OnN0cnVjdHVyYWxMYXllclB1cnBvc2UoKSBjb25zdAotewotICAgIGlmIChw
cmVzZXJ2ZXMzRCgpKQotICAgICAgICByZXR1cm4gU3RydWN0dXJhbExheWVyRm9yUHJlc2VydmVz
M0Q7Ci0gICAgCi0gICAgaWYgKGlzUmVwbGljYXRlZCgpKQotICAgICAgICByZXR1cm4gU3RydWN0
dXJhbExheWVyRm9yUmVwbGljYUZsYXR0ZW5pbmc7Ci0gICAgCi0gICAgcmV0dXJuIE5vU3RydWN0
dXJhbExheWVyOwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnVwZGF0ZUxheWVyRHJhd3ND
b250ZW50KCkKLXsKLSAgICBib29sIG5lZWRUaWxlZExheWVyID0gcmVxdWlyZXNUaWxlZExheWVy
KG1fc2l6ZSk7Ci0gICAgaWYgKG5lZWRUaWxlZExheWVyICE9IG1fdXNpbmdUaWxlZExheWVyKQot
ICAgICAgICBzd2FwRnJvbU9yVG9UaWxlZExheWVyKG5lZWRUaWxlZExheWVyKTsKLQotICAgIGlm
IChtX2RyYXdzQ29udGVudCkKLSAgICAgICAgW21fbGF5ZXIuZ2V0KCkgc2V0TmVlZHNEaXNwbGF5
XTsKLSAgICBlbHNlCi0gICAgICAgIFttX2xheWVyLmdldCgpIHNldENvbnRlbnRzOm5pbF07Ci0K
LSAgICB1cGRhdGVEZWJ1Z0luZGljYXRvcnMoKTsKLX0KLQotdm9pZCBHcmFwaGljc0xheWVyTWFj
Ojp1cGRhdGVMYXllckJhY2tncm91bmRDb2xvcigpCi17Ci0gICAgaWYgKCFtX2NvbnRlbnRzTGF5
ZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIFdlIG5ldmVyIGNyZWF0ZSB0aGUgY29udGVu
dHMgbGF5ZXIganVzdCBmb3IgYmFja2dyb3VuZCBjb2xvciB5ZXQuCi0gICAgaWYgKG1fYmFja2dy
b3VuZENvbG9yU2V0KQotICAgICAgICBzZXRMYXllckJhY2tncm91bmRDb2xvcihtX2NvbnRlbnRz
TGF5ZXIuZ2V0KCksIG1fYmFja2dyb3VuZENvbG9yKTsKLSAgICBlbHNlCi0gICAgICAgIGNsZWFy
TGF5ZXJCYWNrZ3JvdW5kQ29sb3IobV9jb250ZW50c0xheWVyLmdldCgpKTsKLX0KLQotdm9pZCBH
cmFwaGljc0xheWVyTWFjOjp1cGRhdGVDb250ZW50c0ltYWdlKCkKLXsKLSAgICBpZiAobV9wZW5k
aW5nQ29udGVudHNJbWFnZSkgewotICAgICAgICBpZiAoIW1fY29udGVudHNMYXllci5nZXQoKSkg
ewotICAgICAgICAgICAgV2ViTGF5ZXIqIGltYWdlTGF5ZXIgPSBbV2ViTGF5ZXIgbGF5ZXJdOwot
I2lmbmRlZiBOREVCVUcKLSAgICAgICAgICAgIFtpbWFnZUxheWVyIHNldE5hbWU6QCJJbWFnZSBM
YXllciJdOwotI2VuZGlmCi0gICAgICAgICAgICBzZXR1cENvbnRlbnRzTGF5ZXIoaW1hZ2VMYXll
cik7Ci0gICAgICAgICAgICBtX2NvbnRlbnRzTGF5ZXIuYWRvcHROUyhbaW1hZ2VMYXllciByZXRh
aW5dKTsKLSAgICAgICAgICAgIC8vIG1fY29udGVudHNMYXllciB3aWxsIGJlIHBhcmVudGVkIGJ5
IHVwZGF0ZVN1YmxheWVyTGlzdAotICAgICAgICB9Ci0KLSAgICAgICAgLy8gRklYTUU6IG1heWJl
IG9ubHkgZG8gdHJpbGluZWFyIGlmIHRoZSBpbWFnZSBpcyBiZWluZyBzY2FsZWQgZG93biwKLSAg
ICAgICAgLy8gYnV0IHRoZW4gd2hhdCBpZiB0aGUgbGF5ZXIgc2l6ZSBjaGFuZ2VzPwotI2lmICFk
ZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJE
KQotICAgICAgICBbbV9jb250ZW50c0xheWVyLmdldCgpIHNldE1pbmlmaWNhdGlvbkZpbHRlcjpr
Q0FGaWx0ZXJUcmlsaW5lYXJdOwotI2VuZGlmCi0gICAgICAgIFttX2NvbnRlbnRzTGF5ZXIuZ2V0
KCkgc2V0Q29udGVudHM6KGlkKW1fcGVuZGluZ0NvbnRlbnRzSW1hZ2UuZ2V0KCldOwotICAgICAg
ICBtX3BlbmRpbmdDb250ZW50c0ltYWdlID0gMDsKLQotICAgICAgICBpZiAobV9jb250ZW50c0xh
eWVyQ2xvbmVzKSB7Ci0gICAgICAgICAgICBMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0g
bV9jb250ZW50c0xheWVyQ2xvbmVzLT5lbmQoKTsKLSAgICAgICAgICAgIGZvciAoTGF5ZXJNYXA6
OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9jb250ZW50c0xheWVyQ2xvbmVzLT5iZWdpbigpOyBpdCAh
PSBlbmQ7ICsraXQpCi0gICAgICAgICAgICAgICAgW2l0LT5zZWNvbmQuZ2V0KCkgc2V0Q29udGVu
dHM6W21fY29udGVudHNMYXllci5nZXQoKSBjb250ZW50c11dOwotICAgICAgICB9Ci0gICAgICAg
IAotICAgICAgICB1cGRhdGVDb250ZW50c1JlY3QoKTsKLSAgICB9IGVsc2UgewotICAgICAgICAv
LyBObyBpbWFnZS4KLSAgICAgICAgLy8gbV9jb250ZW50c0xheWVyIHdpbGwgYmUgcmVtb3ZlZCB2
aWEgdXBkYXRlU3VibGF5ZXJMaXN0LgotICAgICAgICBtX2NvbnRlbnRzTGF5ZXIgPSAwOwotICAg
IH0KLX0KLQotdm9pZCBHcmFwaGljc0xheWVyTWFjOjp1cGRhdGVDb250ZW50c01lZGlhTGF5ZXIo
KQotewotICAgIC8vIFZpZGVvIGxheWVyIHdhcyBzZXQgYXMgbV9jb250ZW50c0xheWVyLCBhbmQg
d2lsbCBnZXQgcGFyZW50ZWQgaW4gdXBkYXRlU3VibGF5ZXJMaXN0KCkuCi0gICAgaWYgKG1fY29u
dGVudHNMYXllcikgewotICAgICAgICBzZXR1cENvbnRlbnRzTGF5ZXIobV9jb250ZW50c0xheWVy
LmdldCgpKTsKLSAgICAgICAgdXBkYXRlQ29udGVudHNSZWN0KCk7Ci0gICAgfQotfQotCi12b2lk
IEdyYXBoaWNzTGF5ZXJNYWM6OnVwZGF0ZUNvbnRlbnRzQ2FudmFzTGF5ZXIoKQotewotICAgIC8v
IENhbnZhc0xheWVyIHdhcyBzZXQgYXMgbV9jb250ZW50c0xheWVyLCBhbmQgd2lsbCBnZXQgcGFy
ZW50ZWQgaW4gdXBkYXRlU3VibGF5ZXJMaXN0KCkuCi0gICAgaWYgKG1fY29udGVudHNMYXllcikg
ewotICAgICAgICBzZXR1cENvbnRlbnRzTGF5ZXIobV9jb250ZW50c0xheWVyLmdldCgpKTsKLSAg
ICAgICAgW21fY29udGVudHNMYXllci5nZXQoKSBzZXROZWVkc0Rpc3BsYXldOwotICAgICAgICB1
cGRhdGVDb250ZW50c1JlY3QoKTsKLSAgICB9Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6
dXBkYXRlQ29udGVudHNSZWN0KCkKLXsKLSAgICBpZiAoIW1fY29udGVudHNMYXllcikKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgQ0dQb2ludCBwb2ludCA9IENHUG9pbnRNYWtlKG1fY29udGVudHNS
ZWN0LngoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9jb250ZW50c1JlY3Qu
eSgpKTsKLSAgICBDR1JlY3QgcmVjdCA9IENHUmVjdE1ha2UoMC4wZiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMC4wZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9jb250
ZW50c1JlY3Qud2lkdGgoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9jb250ZW50
c1JlY3QuaGVpZ2h0KCkpOwotCi0gICAgW21fY29udGVudHNMYXllci5nZXQoKSBzZXRQb3NpdGlv
bjpwb2ludF07Ci0gICAgW21fY29udGVudHNMYXllci5nZXQoKSBzZXRCb3VuZHM6cmVjdF07Ci0K
LSAgICBpZiAobV9jb250ZW50c0xheWVyQ2xvbmVzKSB7Ci0gICAgICAgIExheWVyTWFwOjpjb25z
dF9pdGVyYXRvciBlbmQgPSBtX2NvbnRlbnRzTGF5ZXJDbG9uZXMtPmVuZCgpOwotICAgICAgICBm
b3IgKExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fY29udGVudHNMYXllckNsb25lcy0+
YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICBDQUxheWVyICpjdXJyTGF5
ZXIgPSBpdC0+c2Vjb25kLmdldCgpOwotICAgICAgICAgICAgW2N1cnJMYXllciBzZXRQb3NpdGlv
bjpwb2ludF07Ci0gICAgICAgICAgICBbY3VyckxheWVyIHNldEJvdW5kczpyZWN0XTsKLSAgICAg
ICAgfQotICAgIH0KLX0KLQotdm9pZCBHcmFwaGljc0xheWVyTWFjOjp1cGRhdGVNYXNrTGF5ZXIo
KQotewotICAgIENBTGF5ZXIgKm1hc2tDQUxheWVyID0gbV9tYXNrTGF5ZXIgPyBtX21hc2tMYXll
ci0+cGxhdGZvcm1MYXllcigpIDogMDsKLSAgICBbbV9sYXllci5nZXQoKSBzZXRNYXNrOm1hc2tD
QUxheWVyXTsKLQotICAgIExheWVyTWFwKiBtYXNrTGF5ZXJDbG9uZU1hcCA9IG1fbWFza0xheWVy
ID8gc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllck1hYyo+KG1fbWFza0xheWVyKS0+cHJpbWFyeUxh
eWVyQ2xvbmVzKCkgOiAwOwotICAgIAotICAgIGlmIChMYXllck1hcCogbGF5ZXJDbG9uZU1hcCA9
IG1fbGF5ZXJDbG9uZXMuZ2V0KCkpIHsKLSAgICAgICAgTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9y
IGVuZCA9IGxheWVyQ2xvbmVNYXAtPmVuZCgpOwotICAgICAgICBmb3IgKExheWVyTWFwOjpjb25z
dF9pdGVyYXRvciBpdCA9IGxheWVyQ2xvbmVNYXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkg
ewotICAgICAgICAgICAgQ0FMYXllciAqY3VyckxheWVyID0gaXQtPnNlY29uZC5nZXQoKTsKLSAg
ICAgICAgICAgIAotICAgICAgICAgICAgQ0FMYXllciAqbWFza0Nsb25lID0gbWFza0xheWVyQ2xv
bmVNYXAgPyBtYXNrTGF5ZXJDbG9uZU1hcC0+Z2V0KGl0LT5maXJzdCkuZ2V0KCkgOiAwOwotICAg
ICAgICAgICAgW2N1cnJMYXllciBzZXRNYXNrOm1hc2tDbG9uZV07Ci0gICAgICAgIH0KLSAgICB9
Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6dXBkYXRlUmVwbGljYXRlZExheWVycygpCi17
Ci0gICAgLy8gQ2xvbmUgdGhlIGRlc2NlbmRhbnRzIG9mIHRoZSByZXBsaWNhdGVkIGxheWVyLCBh
bmQgcGFyZW50IHVuZGVyIHVzLgotICAgIFJlcGxpY2FTdGF0ZSByZXBsaWNhU3RhdGUoUmVwbGlj
YVN0YXRlOjpSZXBsaWNhQnJhbmNoKTsKLQotICAgIENBTGF5ZXIgKnJlcGxpY2FSb290ID0gcmVw
bGljYXRlZExheWVyUm9vdChyZXBsaWNhU3RhdGUpOwotICAgIGlmICghcmVwbGljYVJvb3QpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGlmIChtX3N0cnVjdHVyYWxMYXllcikKLSAgICAgICAgW21f
c3RydWN0dXJhbExheWVyLmdldCgpIGluc2VydFN1YmxheWVyOnJlcGxpY2FSb290IGF0SW5kZXg6
MF07Ci0gICAgZWxzZQotICAgICAgICBbbV9sYXllci5nZXQoKSBpbnNlcnRTdWJsYXllcjpyZXBs
aWNhUm9vdCBhdEluZGV4OjBdOwotfQotCi0vLyBGb3Igbm93LCB0aGlzIGFzc3VtZXMgdGhhdCBs
YXllcnMgb25seSBldmVyIGhhdmUgb25lIHJlcGxpY2EsIHNvIHJlcGxpY2FJbmRpY2VzIGNvbnRh
aW5zIG9ubHkgMCBhbmQgMS4KLUdyYXBoaWNzTGF5ZXJNYWM6OkNsb25lSUQgR3JhcGhpY3NMYXll
ck1hYzo6UmVwbGljYVN0YXRlOjpjbG9uZUlEKCkgY29uc3QKLXsKLSAgICBzaXplX3QgZGVwdGgg
PSBtX3JlcGxpY2FCcmFuY2hlcy5zaXplKCk7Ci0KLSAgICBjb25zdCBzaXplX3QgYml0c1BlclVD
aGFyID0gc2l6ZW9mKFVDaGFyKSAqIDg7Ci0gICAgc2l6ZV90IHZlY3RvclNpemUgPSAoZGVwdGgg
KyBiaXRzUGVyVUNoYXIgLSAxKSAvIGJpdHNQZXJVQ2hhcjsKLSAgICAKLSAgICBWZWN0b3I8VUNo
YXI+IHJlc3VsdCh2ZWN0b3JTaXplKTsKLSAgICByZXN1bHQuZmlsbCgwKTsKLQotICAgIC8vIENy
ZWF0ZSBhIHN0cmluZyBmcm9tIHRoZSBiaXQgc2VxdWVuY2Ugd2hpY2ggd2UgY2FuIHVzZSB0byBp
ZGVudGlmeSB0aGUgY2xvbmUuCi0gICAgLy8gTm90ZSB0aGF0IHRoZSBzdHJpbmcgbWF5IGNvbnRh
aW4gZW1iZWRkZWQgbnVsbHMsIGJ1dCB0aGF0J3MgT0suCi0gICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBkZXB0aDsgKytpKSB7Ci0gICAgICAgIFVDaGFyJiBjdXJyQ2hhciA9IHJlc3VsdFtpIC8g
Yml0c1BlclVDaGFyXTsKLSAgICAgICAgY3VyckNoYXIgPSAoY3VyckNoYXIgPDwgMSkgfCBtX3Jl
cGxpY2FCcmFuY2hlc1tpXTsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIFN0cmluZzo6YWRvcHQo
cmVzdWx0KTsKLX0KLQotQ0FMYXllciAqR3JhcGhpY3NMYXllck1hYzo6cmVwbGljYXRlZExheWVy
Um9vdChSZXBsaWNhU3RhdGUmIHJlcGxpY2FTdGF0ZSkKLXsKLSAgICAvLyBMaW1pdCByZXBsaWNh
IG5lc3RpbmcsIHRvIGF2b2lkIDJeTiBleHBsb3Npb24gb2YgcmVwbGljYSBsYXllcnMuCi0gICAg
aWYgKCFtX3JlcGxpY2F0ZWRMYXllciB8fCByZXBsaWNhU3RhdGUucmVwbGljYURlcHRoKCkgPT0g
UmVwbGljYVN0YXRlOjptYXhSZXBsaWNhRGVwdGgpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAg
ICBHcmFwaGljc0xheWVyTWFjKiByZXBsaWNhdGVkTGF5ZXIgPSBzdGF0aWNfY2FzdDxHcmFwaGlj
c0xheWVyTWFjKj4obV9yZXBsaWNhdGVkTGF5ZXIpOwotICAgIAotICAgIENBTGF5ZXIgKmNsb25l
ZExheWVyUm9vdCA9IHJlcGxpY2F0ZWRMYXllci0+ZmV0Y2hDbG9uZUxheWVycyh0aGlzLCByZXBs
aWNhU3RhdGUsIFJvb3RDbG9uZUxldmVsKTsKLSAgICBGbG9hdFBvaW50IGNsb25lUm9vdFBvc2l0
aW9uID0gcmVwbGljYXRlZExheWVyLT5wb3NpdGlvbkZvckNsb25lUm9vdExheWVyKCk7Ci0KLSAg
ICAvLyBSZXBsaWNhIHJvb3QgaGFzIG5vIG9mZnNldCBvciB0cmFuc2Zvcm0KLSAgICBbY2xvbmVk
TGF5ZXJSb290IHNldFBvc2l0aW9uOmNsb25lUm9vdFBvc2l0aW9uXTsKLSAgICBbY2xvbmVkTGF5
ZXJSb290IHNldFRyYW5zZm9ybTpDQVRyYW5zZm9ybTNESWRlbnRpdHldOwotCi0gICAgcmV0dXJu
IGNsb25lZExheWVyUm9vdDsKLX0KLQotdm9pZCBHcmFwaGljc0xheWVyTWFjOjp1cGRhdGVMYXll
ckFuaW1hdGlvbnMoKQotewotICAgIGlmIChtX2FuaW1hdGlvbnNUb1Byb2Nlc3Muc2l6ZSgpKSB7
Ci0gICAgICAgIEFuaW1hdGlvbnNUb1Byb2Nlc3NNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1f
YW5pbWF0aW9uc1RvUHJvY2Vzcy5lbmQoKTsKLSAgICAgICAgZm9yIChBbmltYXRpb25zVG9Qcm9j
ZXNzTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fYW5pbWF0aW9uc1RvUHJvY2Vzcy5iZWdpbigp
OyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgY3VyckFuaW1h
dGlvbk5hbWUgPSBpdC0+Zmlyc3Q7Ci0gICAgICAgICAgICBBbmltYXRpb25zTWFwOjppdGVyYXRv
ciBhbmltYXRpb25JdCA9IG1fcnVubmluZ0FuaW1hdGlvbnMuZmluZChjdXJyQW5pbWF0aW9uTmFt
ZSk7Ci0gICAgICAgICAgICBpZiAoYW5pbWF0aW9uSXQgPT0gbV9ydW5uaW5nQW5pbWF0aW9ucy5l
bmQoKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgY29uc3QgQW5p
bWF0aW9uUHJvY2Vzc2luZ0FjdGlvbiYgcHJvY2Vzc2luZ0luZm8gPSBpdC0+c2Vjb25kOwotICAg
ICAgICAgICAgY29uc3QgVmVjdG9yPExheWVyUHJvcGVydHlBbmltYXRpb24+JiBhbmltYXRpb25z
ID0gYW5pbWF0aW9uSXQtPnNlY29uZDsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgYW5pbWF0aW9ucy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgICAgIGNvbnN0IExheWVy
UHJvcGVydHlBbmltYXRpb24mIGN1cnJBbmltYXRpb24gPSBhbmltYXRpb25zW2ldOwotICAgICAg
ICAgICAgICAgIHN3aXRjaCAocHJvY2Vzc2luZ0luZm8uYWN0aW9uKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGNhc2UgUmVtb3ZlOgotICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlQ0FBbmlt
YXRpb25Gcm9tTGF5ZXIoY3VyckFuaW1hdGlvbi5tX3Byb3BlcnR5LCBjdXJyQW5pbWF0aW9uTmFt
ZSwgY3VyckFuaW1hdGlvbi5tX2luZGV4KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgICAgICAgICBjYXNlIFBhdXNlOgotICAgICAgICAgICAgICAgICAgICAg
ICAgcGF1c2VDQUFuaW1hdGlvbk9uTGF5ZXIoY3VyckFuaW1hdGlvbi5tX3Byb3BlcnR5LCBjdXJy
QW5pbWF0aW9uTmFtZSwgY3VyckFuaW1hdGlvbi5tX2luZGV4LCBwcm9jZXNzaW5nSW5mby50aW1l
T2Zmc2V0KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKHByb2Nlc3NpbmdJbmZvLmFjdGlv
biA9PSBSZW1vdmUpCi0gICAgICAgICAgICAgICAgbV9ydW5uaW5nQW5pbWF0aW9ucy5yZW1vdmUo
Y3VyckFuaW1hdGlvbk5hbWUpOwotICAgICAgICB9Ci0gICAgCi0gICAgICAgIG1fYW5pbWF0aW9u
c1RvUHJvY2Vzcy5jbGVhcigpOwotICAgIH0KLSAgICAKLSAgICBzaXplX3QgbnVtQW5pbWF0aW9u
czsKLSAgICBpZiAoKG51bUFuaW1hdGlvbnMgPSBtX3VuY29taXR0ZWRBbmltYXRpb25zLnNpemUo
KSkpIHsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1BbmltYXRpb25zOyArK2kp
IHsKLSAgICAgICAgICAgIGNvbnN0IExheWVyUHJvcGVydHlBbmltYXRpb24mIHBlbmRpbmdBbmlt
YXRpb24gPSBtX3VuY29taXR0ZWRBbmltYXRpb25zW2ldOwotICAgICAgICAgICAgc2V0Q0FBbmlt
YXRpb25PbkxheWVyKHBlbmRpbmdBbmltYXRpb24ubV9hbmltYXRpb24uZ2V0KCksIHBlbmRpbmdB
bmltYXRpb24ubV9wcm9wZXJ0eSwgcGVuZGluZ0FuaW1hdGlvbi5tX25hbWUsIHBlbmRpbmdBbmlt
YXRpb24ubV9pbmRleCwgcGVuZGluZ0FuaW1hdGlvbi5tX3RpbWVPZmZzZXQpOwotICAgICAgICAg
ICAgCi0gICAgICAgICAgICBBbmltYXRpb25zTWFwOjppdGVyYXRvciBpdCA9IG1fcnVubmluZ0Fu
aW1hdGlvbnMuZmluZChwZW5kaW5nQW5pbWF0aW9uLm1fbmFtZSk7Ci0gICAgICAgICAgICBpZiAo
aXQgPT0gbV9ydW5uaW5nQW5pbWF0aW9ucy5lbmQoKSkgewotICAgICAgICAgICAgICAgIFZlY3Rv
cjxMYXllclByb3BlcnR5QW5pbWF0aW9uPiBhbmltYXRpb25zOwotICAgICAgICAgICAgICAgIGFu
aW1hdGlvbnMuYXBwZW5kKHBlbmRpbmdBbmltYXRpb24pOwotICAgICAgICAgICAgICAgIG1fcnVu
bmluZ0FuaW1hdGlvbnMuYWRkKHBlbmRpbmdBbmltYXRpb24ubV9uYW1lLCBhbmltYXRpb25zKTsK
LSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgVmVjdG9yPExheWVyUHJvcGVy
dHlBbmltYXRpb24+JiBhbmltYXRpb25zID0gaXQtPnNlY29uZDsKLSAgICAgICAgICAgICAgICBh
bmltYXRpb25zLmFwcGVuZChwZW5kaW5nQW5pbWF0aW9uKTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotICAgICAgICAKLSAgICAgICAgbV91bmNvbWl0dGVkQW5pbWF0aW9ucy5jbGVhcigpOwot
ICAgIH0KLX0KLQotdm9pZCBHcmFwaGljc0xheWVyTWFjOjpzZXRDQUFuaW1hdGlvbk9uTGF5ZXIo
Q0FQcm9wZXJ0eUFuaW1hdGlvbiogY2FBbmltLCBBbmltYXRlZFByb3BlcnR5SUQgcHJvcGVydHks
IGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSwgaW50IGluZGV4LCBkb3VibGUgdGltZU9mZnNl
dCkKLXsKLSAgICBQbGF0Zm9ybUxheWVyKiBsYXllciA9IGFuaW1hdGVkTGF5ZXIocHJvcGVydHkp
OwotCi0gICAgaWYgKHRpbWVPZmZzZXQpIHsKLSAgICAgICAgW2NhQW5pbSBzZXRCZWdpblRpbWU6
Q0FDdXJyZW50TWVkaWFUaW1lKCkgLSB0aW1lT2Zmc2V0XTsKLSAgICAgICAgW2NhQW5pbSBzZXRW
YWx1ZTpbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6WUVTXSBmb3JLZXk6V2ViS2l0QW5pbWF0aW9u
QmVnaW5UaW1lU2V0S2V5XTsKLSAgICB9Ci0KLSAgICBOU1N0cmluZyAqYW5pbWF0aW9uSUQgPSBh
bmltYXRpb25JZGVudGlmaWVyKGFuaW1hdGlvbk5hbWUsIHByb3BlcnR5LCBpbmRleCk7Ci0KLSAg
ICBbbGF5ZXIgcmVtb3ZlQW5pbWF0aW9uRm9yS2V5OmFuaW1hdGlvbklEXTsKLSAgICBbbGF5ZXIg
YWRkQW5pbWF0aW9uOmNhQW5pbSBmb3JLZXk6YW5pbWF0aW9uSURdOwotCi0gICAgaWYgKExheWVy
TWFwKiBsYXllckNsb25lTWFwID0gYW5pbWF0ZWRMYXllckNsb25lcyhwcm9wZXJ0eSkpIHsKLSAg
ICAgICAgTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGxheWVyQ2xvbmVNYXAtPmVuZCgp
OwotICAgICAgICBmb3IgKExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGxheWVyQ2xvbmVN
YXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICAgICAgLy8gU2tpcCBpbW1l
ZGlhdGUgcmVwbGljYXMsIHNpbmNlIHRoZXkgbW92ZSB3aXRoIHRoZSBvcmlnaW5hbC4KLSAgICAg
ICAgICAgIGlmIChtX3JlcGxpY2FMYXllciAmJiBpc1JlcGxpY2F0ZWRSb290Q2xvbmUoaXQtPmZp
cnN0KSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIENBTGF5ZXIgKmN1
cnJMYXllciA9IGl0LT5zZWNvbmQuZ2V0KCk7Ci0gICAgICAgICAgICBbY3VyckxheWVyIHJlbW92
ZUFuaW1hdGlvbkZvcktleTphbmltYXRpb25JRF07Ci0gICAgICAgICAgICBbY3VyckxheWVyIGFk
ZEFuaW1hdGlvbjpjYUFuaW0gZm9yS2V5OmFuaW1hdGlvbklEXTsKLSAgICAgICAgfQotICAgIH0K
LX0KLQotLy8gV29ya2Fyb3VuZCBmb3IgPHJkYXI6Ly9wcm9ibGVtLzczMTEzNjc+Ci1zdGF0aWMg
dm9pZCBidWc3MzExMzY3V29ya2Fyb3VuZChDQUxheWVyKiB0cmFuc2Zvcm1MYXllciwgY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSkKLXsKLSAgICBpZiAoIXRyYW5zZm9ybUxh
eWVyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBDQVRyYW5zZm9ybTNEIGNhVHJhbnNmb3JtOwot
ICAgIGNvcHlUcmFuc2Zvcm0oY2FUcmFuc2Zvcm0sIHRyYW5zZm9ybSk7Ci0gICAgY2FUcmFuc2Zv
cm0ubTQxICs9IDE7Ci0gICAgW3RyYW5zZm9ybUxheWVyIHNldFRyYW5zZm9ybTpjYVRyYW5zZm9y
bV07Ci0KLSAgICBjYVRyYW5zZm9ybS5tNDEgLT0gMTsKLSAgICBbdHJhbnNmb3JtTGF5ZXIgc2V0
VHJhbnNmb3JtOmNhVHJhbnNmb3JtXTsKLX0KLQotYm9vbCBHcmFwaGljc0xheWVyTWFjOjpyZW1v
dmVDQUFuaW1hdGlvbkZyb21MYXllcihBbmltYXRlZFByb3BlcnR5SUQgcHJvcGVydHksIGNvbnN0
IFN0cmluZyYgYW5pbWF0aW9uTmFtZSwgaW50IGluZGV4KQotewotICAgIFBsYXRmb3JtTGF5ZXIq
IGxheWVyID0gYW5pbWF0ZWRMYXllcihwcm9wZXJ0eSk7Ci0KLSAgICBOU1N0cmluZyAqYW5pbWF0
aW9uSUQgPSBhbmltYXRpb25JZGVudGlmaWVyKGFuaW1hdGlvbk5hbWUsIHByb3BlcnR5LCBpbmRl
eCk7Ci0KLSAgICBpZiAoIVtsYXllciBhbmltYXRpb25Gb3JLZXk6YW5pbWF0aW9uSURdKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAgW2xheWVyIHJlbW92ZUFuaW1hdGlvbkZvcktl
eTphbmltYXRpb25JRF07Ci0gICAgYnVnNzMxMTM2N1dvcmthcm91bmQobV9zdHJ1Y3R1cmFsTGF5
ZXIuZ2V0KCksIG1fdHJhbnNmb3JtKTsKLQotICAgIGlmIChMYXllck1hcCogbGF5ZXJDbG9uZU1h
cCA9IGFuaW1hdGVkTGF5ZXJDbG9uZXMocHJvcGVydHkpKSB7Ci0gICAgICAgIExheWVyTWFwOjpj
b25zdF9pdGVyYXRvciBlbmQgPSBsYXllckNsb25lTWFwLT5lbmQoKTsKLSAgICAgICAgZm9yIChM
YXllck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBsYXllckNsb25lTWFwLT5iZWdpbigpOyBpdCAh
PSBlbmQ7ICsraXQpIHsKLSAgICAgICAgICAgIC8vIFNraXAgaW1tZWRpYXRlIHJlcGxpY2FzLCBz
aW5jZSB0aGV5IG1vdmUgd2l0aCB0aGUgb3JpZ2luYWwuCi0gICAgICAgICAgICBpZiAobV9yZXBs
aWNhTGF5ZXIgJiYgaXNSZXBsaWNhdGVkUm9vdENsb25lKGl0LT5maXJzdCkpCi0gICAgICAgICAg
ICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgIENBTGF5ZXIgKmN1cnJMYXllciA9IGl0LT5z
ZWNvbmQuZ2V0KCk7Ci0gICAgICAgICAgICBbY3VyckxheWVyIHJlbW92ZUFuaW1hdGlvbkZvcktl
eTphbmltYXRpb25JRF07Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0K
LXN0YXRpYyB2b2lkIGNvcHlBbmltYXRpb25Qcm9wZXJ0aWVzKENBUHJvcGVydHlBbmltYXRpb24q
IGZyb20sIENBUHJvcGVydHlBbmltYXRpb24qIHRvKQotewotICAgIFt0byBzZXRCZWdpblRpbWU6
W2Zyb20gYmVnaW5UaW1lXV07Ci0gICAgW3RvIHNldER1cmF0aW9uOltmcm9tIGR1cmF0aW9uXV07
Ci0gICAgW3RvIHNldFJlcGVhdENvdW50Oltmcm9tIHJlcGVhdENvdW50XV07Ci0gICAgW3RvIHNl
dEF1dG9yZXZlcnNlczpbZnJvbSBhdXRvcmV2ZXJzZXNdXTsKLSAgICBbdG8gc2V0RmlsbE1vZGU6
W2Zyb20gZmlsbE1vZGVdXTsKLSAgICBbdG8gc2V0UmVtb3ZlZE9uQ29tcGxldGlvbjpbZnJvbSBp
c1JlbW92ZWRPbkNvbXBsZXRpb25dXTsKLSAgICBbdG8gc2V0QWRkaXRpdmU6W2Zyb20gaXNBZGRp
dGl2ZV1dOwotICAgIFt0byBzZXRUaW1pbmdGdW5jdGlvbjpbZnJvbSB0aW1pbmdGdW5jdGlvbl1d
OwotCi0jaWYgSEFWRV9NT0RFUk5fUVVBUlRaQ09SRQotICAgIFt0byBzZXRWYWx1ZUZ1bmN0aW9u
Oltmcm9tIHZhbHVlRnVuY3Rpb25dXTsKLSNlbmRpZgotCi0gICAgaWYgKGlkIG9iamVjdCA9IFtm
cm9tIHZhbHVlRm9yS2V5OldlYktpdEFuaW1hdGlvbkJlZ2luVGltZVNldEtleV0pCi0gICAgICAg
IFt0byBzZXRWYWx1ZTpvYmplY3QgZm9yS2V5OldlYktpdEFuaW1hdGlvbkJlZ2luVGltZVNldEtl
eV07Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6cGF1c2VDQUFuaW1hdGlvbk9uTGF5ZXIo
QW5pbWF0ZWRQcm9wZXJ0eUlEIHByb3BlcnR5LCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUs
IGludCBpbmRleCwgZG91YmxlIHRpbWVPZmZzZXQpCi17Ci0gICAgUGxhdGZvcm1MYXllciogbGF5
ZXIgPSBhbmltYXRlZExheWVyKHByb3BlcnR5KTsKLQotICAgIE5TU3RyaW5nICphbmltYXRpb25J
RCA9IGFuaW1hdGlvbklkZW50aWZpZXIoYW5pbWF0aW9uTmFtZSwgcHJvcGVydHksIGluZGV4KTsK
LQotICAgIENBQW5pbWF0aW9uICpjYUFuaW0gPSBbbGF5ZXIgYW5pbWF0aW9uRm9yS2V5OmFuaW1h
dGlvbklEXTsKLSAgICBpZiAoIWNhQW5pbSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gQW5p
bWF0aW9ucyBvbiB0aGUgbGF5ZXIgYXJlIGltbXV0YWJsZSwgc28gd2UgaGF2ZSB0byBjbG9uZSBh
bmQgbW9kaWZ5LgotICAgIENBUHJvcGVydHlBbmltYXRpb24qIHBhdXNlZEFuaW0gPSBuaWw7Ci0g
ICAgaWYgKFtjYUFuaW0gaXNLaW5kT2ZDbGFzczpbQ0FLZXlmcmFtZUFuaW1hdGlvbiBjbGFzc11d
KSB7Ci0gICAgICAgIENBS2V5ZnJhbWVBbmltYXRpb24qIGV4aXN0aW5nS2V5ZnJhbWVBbmltID0g
c3RhdGljX2Nhc3Q8Q0FLZXlmcmFtZUFuaW1hdGlvbio+KGNhQW5pbSk7Ci0gICAgICAgIENBS2V5
ZnJhbWVBbmltYXRpb24qIG5ld0FuaW0gPSBbQ0FLZXlmcmFtZUFuaW1hdGlvbiBhbmltYXRpb25X
aXRoS2V5UGF0aDpbZXhpc3RpbmdLZXlmcmFtZUFuaW0ga2V5UGF0aF1dOwotICAgICAgICBjb3B5
QW5pbWF0aW9uUHJvcGVydGllcyhleGlzdGluZ0tleWZyYW1lQW5pbSwgbmV3QW5pbSk7Ci0gICAg
ICAgIFtuZXdBbmltIHNldFZhbHVlczpbZXhpc3RpbmdLZXlmcmFtZUFuaW0gdmFsdWVzXV07Ci0g
ICAgICAgIFtuZXdBbmltIHNldEtleVRpbWVzOltleGlzdGluZ0tleWZyYW1lQW5pbSBrZXlUaW1l
c11dOwotICAgICAgICBbbmV3QW5pbSBzZXRUaW1pbmdGdW5jdGlvbnM6W2V4aXN0aW5nS2V5ZnJh
bWVBbmltIHRpbWluZ0Z1bmN0aW9uc11dOwotICAgICAgICBwYXVzZWRBbmltID0gbmV3QW5pbTsK
LSAgICB9IGVsc2UgaWYgKFtjYUFuaW0gaXNLaW5kT2ZDbGFzczpbQ0FCYXNpY0FuaW1hdGlvbiBj
bGFzc11dKSB7Ci0gICAgICAgIENBQmFzaWNBbmltYXRpb24qIGV4aXN0aW5nUHJvcGVydHlBbmlt
ID0gc3RhdGljX2Nhc3Q8Q0FCYXNpY0FuaW1hdGlvbio+KGNhQW5pbSk7Ci0gICAgICAgIENBQmFz
aWNBbmltYXRpb24qIG5ld0FuaW0gPSBbQ0FCYXNpY0FuaW1hdGlvbiBhbmltYXRpb25XaXRoS2V5
UGF0aDpbZXhpc3RpbmdQcm9wZXJ0eUFuaW0ga2V5UGF0aF1dOwotICAgICAgICBjb3B5QW5pbWF0
aW9uUHJvcGVydGllcyhleGlzdGluZ1Byb3BlcnR5QW5pbSwgbmV3QW5pbSk7Ci0gICAgICAgIFtu
ZXdBbmltIHNldEZyb21WYWx1ZTpbZXhpc3RpbmdQcm9wZXJ0eUFuaW0gZnJvbVZhbHVlXV07Ci0g
ICAgICAgIFtuZXdBbmltIHNldFRvVmFsdWU6W2V4aXN0aW5nUHJvcGVydHlBbmltIHRvVmFsdWVd
XTsKLSAgICAgICAgcGF1c2VkQW5pbSA9IG5ld0FuaW07Ci0gICAgfQotCi0gICAgLy8gcGF1c2Vk
QW5pbSBoYXMgdGhlIGJlZ2luVGltZSBvZiBjYUFuaW0gYWxyZWFkeS4KLSAgICBbcGF1c2VkQW5p
bSBzZXRTcGVlZDowXTsKLSAgICBbcGF1c2VkQW5pbSBzZXRUaW1lT2Zmc2V0OnRpbWVPZmZzZXRd
OwotICAgIAotICAgIFtsYXllciBhZGRBbmltYXRpb246cGF1c2VkQW5pbSBmb3JLZXk6YW5pbWF0
aW9uSURdOyAgLy8gVGhpcyB3aWxsIHJlcGxhY2UgdGhlIHJ1bm5pbmcgYW5pbWF0aW9uLgotCi0g
ICAgLy8gUGF1c2UgdGhlIGFuaW1hdGlvbnMgb24gdGhlIGNsb25lcyB0b28uCi0gICAgaWYgKExh
eWVyTWFwKiBsYXllckNsb25lTWFwID0gYW5pbWF0ZWRMYXllckNsb25lcyhwcm9wZXJ0eSkpIHsK
LSAgICAgICAgTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGxheWVyQ2xvbmVNYXAtPmVu
ZCgpOwotICAgICAgICBmb3IgKExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGxheWVyQ2xv
bmVNYXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICAgICAgLy8gU2tpcCBp
bW1lZGlhdGUgcmVwbGljYXMsIHNpbmNlIHRoZXkgbW92ZSB3aXRoIHRoZSBvcmlnaW5hbC4KLSAg
ICAgICAgICAgIGlmIChtX3JlcGxpY2FMYXllciAmJiBpc1JlcGxpY2F0ZWRSb290Q2xvbmUoaXQt
PmZpcnN0KSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIENBTGF5ZXIg
KmN1cnJMYXllciA9IGl0LT5zZWNvbmQuZ2V0KCk7Ci0gICAgICAgICAgICBbY3VyckxheWVyIGFk
ZEFuaW1hdGlvbjpwYXVzZWRBbmltIGZvcktleTphbmltYXRpb25JRF07Ci0gICAgICAgIH0KLSAg
ICB9Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6c2V0Q29udGVudHNUb0NhbnZhcyhQbGF0
Zm9ybUxheWVyKiBjYW52YXNMYXllcikKLXsKLSAgICBpZiAoY2FudmFzTGF5ZXIgPT0gbV9jb250
ZW50c0xheWVyKQotICAgICAgICByZXR1cm47Ci0gICAgICAgIAotICAgIG1fY29udGVudHNMYXll
ciA9IGNhbnZhc0xheWVyOwotICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIgJiYgW21fY29udGVudHNM
YXllci5nZXQoKSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNldExheWVyT3duZXI6KV0p
Ci0gICAgICAgIFsoaWQpbV9jb250ZW50c0xheWVyLmdldCgpIHNldExheWVyT3duZXI6dGhpc107
Ci0gICAgCi0gICAgbV9jb250ZW50c0xheWVyUHVycG9zZSA9IGNhbnZhc0xheWVyID8gQ29udGVu
dHNMYXllckZvckNhbnZhcyA6IE5vQ29udGVudHNMYXllcjsKLQotICAgIG5vdGVTdWJsYXllcnND
aGFuZ2VkKCk7Ci0gICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKENvbnRlbnRzQ2FudmFzTGF5
ZXJDaGFuZ2VkKTsKLX0KLSAgICAKLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6cmVwYWludExheWVy
RGlydHlSZWN0cygpCi17Ci0gICAgaWYgKCFtX2RpcnR5UmVjdHMuc2l6ZSgpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZGlydHlSZWN0cy5zaXplKCk7
ICsraSkKLSAgICAgICAgW21fbGF5ZXIuZ2V0KCkgc2V0TmVlZHNEaXNwbGF5SW5SZWN0Om1fZGly
dHlSZWN0c1tpXV07Ci0gICAgCi0gICAgbV9kaXJ0eVJlY3RzLmNsZWFyKCk7Ci19Ci0KLXZvaWQg
R3JhcGhpY3NMYXllck1hYzo6dXBkYXRlQ29udGVudHNOZWVkc0Rpc3BsYXkoKQotewotICAgIGlm
IChtX2NvbnRlbnRzTGF5ZXIpCi0gICAgICAgIFttX2NvbnRlbnRzTGF5ZXIuZ2V0KCkgc2V0TmVl
ZHNEaXNwbGF5XTsKLX0KLQotYm9vbCBHcmFwaGljc0xheWVyTWFjOjpjcmVhdGVBbmltYXRpb25G
cm9tS2V5ZnJhbWVzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3QsIGNvbnN0IEFu
aW1hdGlvbiogYW5pbWF0aW9uLCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGRvdWJsZSB0
aW1lT2Zmc2V0KQotewotICAgIEFTU0VSVCh2YWx1ZUxpc3QucHJvcGVydHkoKSAhPSBBbmltYXRl
ZFByb3BlcnR5V2Via2l0VHJhbnNmb3JtKTsKLQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBU
SU9OUzsKLSAgICAKLSAgICBib29sIGlzS2V5ZnJhbWUgPSB2YWx1ZUxpc3Quc2l6ZSgpID4gMjsK
LSAgICBib29sIHZhbHVlc09LOwotICAgIAotICAgIGJvb2wgYWRkaXRpdmUgPSBmYWxzZTsKLSAg
ICBpbnQgYW5pbWF0aW9uSW5kZXggPSAwOwotICAgIAotICAgIENBUHJvcGVydHlBbmltYXRpb24q
IGNhQW5pbWF0aW9uOwotICAgIGlmIChpc0tleWZyYW1lKSB7Ci0gICAgICAgIENBS2V5ZnJhbWVB
bmltYXRpb24qIGtleWZyYW1lQW5pbSA9IGNyZWF0ZUtleWZyYW1lQW5pbWF0aW9uKGFuaW1hdGlv
biwgdmFsdWVMaXN0LnByb3BlcnR5KCksIGFkZGl0aXZlKTsKLSAgICAgICAgdmFsdWVzT0sgPSBz
ZXRBbmltYXRpb25LZXlmcmFtZXModmFsdWVMaXN0LCBhbmltYXRpb24sIGtleWZyYW1lQW5pbSk7
Ci0gICAgICAgIGNhQW5pbWF0aW9uID0ga2V5ZnJhbWVBbmltOwotICAgIH0gZWxzZSB7Ci0gICAg
ICAgIENBQmFzaWNBbmltYXRpb24qIGJhc2ljQW5pbSA9IGNyZWF0ZUJhc2ljQW5pbWF0aW9uKGFu
aW1hdGlvbiwgdmFsdWVMaXN0LnByb3BlcnR5KCksIGFkZGl0aXZlKTsKLSAgICAgICAgdmFsdWVz
T0sgPSBzZXRBbmltYXRpb25FbmRwb2ludHModmFsdWVMaXN0LCBhbmltYXRpb24sIGJhc2ljQW5p
bSk7Ci0gICAgICAgIGNhQW5pbWF0aW9uID0gYmFzaWNBbmltOwotICAgIH0KLSAgICAKLSAgICBp
ZiAoIXZhbHVlc09LKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBtX3VuY29taXR0ZWRB
bmltYXRpb25zLmFwcGVuZChMYXllclByb3BlcnR5QW5pbWF0aW9uKGNhQW5pbWF0aW9uLCBhbmlt
YXRpb25OYW1lLCB2YWx1ZUxpc3QucHJvcGVydHkoKSwgYW5pbWF0aW9uSW5kZXgsIHRpbWVPZmZz
ZXQpKTsKLSAgICAKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotCi0gICAgcmV0dXJu
IHRydWU7Ci19Ci0KLWJvb2wgR3JhcGhpY3NMYXllck1hYzo6Y3JlYXRlVHJhbnNmb3JtQW5pbWF0
aW9uc0Zyb21LZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCwgY29u
c3QgQW5pbWF0aW9uKiBhbmltYXRpb24sIGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSwgZG91
YmxlIHRpbWVPZmZzZXQsIGNvbnN0IEludFNpemUmIGJveFNpemUpCi17Ci0gICAgQVNTRVJUKHZh
bHVlTGlzdC5wcm9wZXJ0eSgpID09IEFuaW1hdGVkUHJvcGVydHlXZWJraXRUcmFuc2Zvcm0pOwot
Ci0gICAgVHJhbnNmb3JtT3BlcmF0aW9uTGlzdCBmdW5jdGlvbkxpc3Q7Ci0gICAgYm9vbCBsaXN0
c01hdGNoLCBoYXNCaWdSb3RhdGlvbjsKLSAgICBmZXRjaFRyYW5zZm9ybU9wZXJhdGlvbkxpc3Qo
dmFsdWVMaXN0LCBmdW5jdGlvbkxpc3QsIGxpc3RzTWF0Y2gsIGhhc0JpZ1JvdGF0aW9uKTsKLQot
ICAgIC8vIFdlIG5lZWQgdG8gZmFsbCBiYWNrIHRvIHNvZnR3YXJlIGFuaW1hdGlvbiBpZiB3ZSBk
b24ndCBoYXZlIHNldFZhbHVlRnVuY3Rpb246LCBhbmQKLSAgICAvLyB3ZSB3b3VsZCBuZWVkIHRv
IGFuaW1hdGUgZWFjaCBpbmNvbWluZyB0cmFuc2Zvcm0gZnVuY3Rpb24gc2VwYXJhdGVseS4gVGhp
cyBpcyB0aGUKLSAgICAvLyBjYXNlIGlmIHdlIGhhdmUgYSByb3RhdGlvbiA+PSAxODAgb3Igd2Ug
aGF2ZSBtb3JlIHRoYW4gb25lIHRyYW5zZm9ybSBmdW5jdGlvbi4KLSAgICBpZiAoKGhhc0JpZ1Jv
dGF0aW9uIHx8IGZ1bmN0aW9uTGlzdC5zaXplKCkgPiAxKSAmJiAhY2FWYWx1ZUZ1bmN0aW9uU3Vw
cG9ydGVkKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGJvb2wgdmFsaWRNYXRyaWNl
cyA9IHRydWU7Ci0KLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0KLSAgICAvLyBJ
ZiBmdW5jdGlvbkxpc3RzIGRvbid0IG1hdGNoIHdlIGRvIGEgbWF0cml4IGFuaW1hdGlvbiwgb3Ro
ZXJ3aXNlIHdlIGRvIGEgY29tcG9uZW50IGhhcmR3YXJlIGFuaW1hdGlvbi4KLSAgICAvLyBBbHNv
LCB3ZSBjYW4ndCBkbyBjb21wb25lbnQgYW5pbWF0aW9uIHVubGVzcyB3ZSBoYXZlIHZhbHVlRnVu
Y3Rpb24sIHNvIHdlIG5lZWQgdG8gZG8gbWF0cml4IGFuaW1hdGlvbgotICAgIC8vIGlmIHRoYXQn
cyBub3QgdHJ1ZSBhcyB3ZWxsLgotICAgIGJvb2wgaXNNYXRyaXhBbmltYXRpb24gPSAhbGlzdHNN
YXRjaCB8fCAhY2FWYWx1ZUZ1bmN0aW9uU3VwcG9ydGVkKCk7Ci0gICAgCi0gICAgc2l6ZV90IG51
bUFuaW1hdGlvbnMgPSBpc01hdHJpeEFuaW1hdGlvbiA/IDEgOiBmdW5jdGlvbkxpc3Quc2l6ZSgp
OwotICAgIGJvb2wgaXNLZXlmcmFtZSA9IHZhbHVlTGlzdC5zaXplKCkgPiAyOwotICAgIAotICAg
IC8vIEl0ZXJhdGUgdGhyb3VnaCB0aGUgdHJhbnNmb3JtIGZ1bmN0aW9ucywgc2VuZGluZyBhbiBh
bmltYXRpb24gZm9yIGVhY2ggb25lLgotICAgIGZvciAoc2l6ZV90IGFuaW1hdGlvbkluZGV4ID0g
MDsgYW5pbWF0aW9uSW5kZXggPCBudW1BbmltYXRpb25zOyArK2FuaW1hdGlvbkluZGV4KSB7Ci0g
ICAgICAgIFRyYW5zZm9ybU9wZXJhdGlvbjo6T3BlcmF0aW9uVHlwZSB0cmFuc2Zvcm1PcCA9IGlz
TWF0cml4QW5pbWF0aW9uID8gVHJhbnNmb3JtT3BlcmF0aW9uOjpNQVRSSVhfM0QgOiBmdW5jdGlv
bkxpc3RbYW5pbWF0aW9uSW5kZXhdOwotICAgICAgICBDQVByb3BlcnR5QW5pbWF0aW9uKiBjYUFu
aW1hdGlvbjsKLQotI2lmIGRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkgfHwgZGVmaW5lZChC
VUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCi0gICAgICAgIC8vIENBIGFwcGxpZXMgYW5pbWF0aW9u
cyBpbiByZXZlcnNlIG9yZGVyICg8cmRhcjovL3Byb2JsZW0vNzA5NTYzOD4pIHNvIHdlIG5lZWQg
dGhlIGxhc3Qgb25lIHdlIGFkZCAocGVyIHByb3BlcnR5KQotICAgICAgICAvLyB0byBiZSBub24t
YWRkaXRpdmUuCi0gICAgICAgIGJvb2wgYWRkaXRpdmUgPSBhbmltYXRpb25JbmRleCA8IChudW1B
bmltYXRpb25zIC0gMSk7Ci0jZWxzZQotICAgICAgICBib29sIGFkZGl0aXZlID0gYW5pbWF0aW9u
SW5kZXggPiAwOwotI2VuZGlmCi0gICAgICAgIGlmIChpc0tleWZyYW1lKSB7Ci0gICAgICAgICAg
ICBDQUtleWZyYW1lQW5pbWF0aW9uKiBrZXlmcmFtZUFuaW0gPSBjcmVhdGVLZXlmcmFtZUFuaW1h
dGlvbihhbmltYXRpb24sIHZhbHVlTGlzdC5wcm9wZXJ0eSgpLCBhZGRpdGl2ZSk7Ci0gICAgICAg
ICAgICB2YWxpZE1hdHJpY2VzID0gc2V0VHJhbnNmb3JtQW5pbWF0aW9uS2V5ZnJhbWVzKHZhbHVl
TGlzdCwgYW5pbWF0aW9uLCBrZXlmcmFtZUFuaW0sIGFuaW1hdGlvbkluZGV4LCB0cmFuc2Zvcm1P
cCwgaXNNYXRyaXhBbmltYXRpb24sIGJveFNpemUpOwotICAgICAgICAgICAgY2FBbmltYXRpb24g
PSBrZXlmcmFtZUFuaW07Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBDQUJhc2ljQW5p
bWF0aW9uKiBiYXNpY0FuaW0gPSBjcmVhdGVCYXNpY0FuaW1hdGlvbihhbmltYXRpb24sIHZhbHVl
TGlzdC5wcm9wZXJ0eSgpLCBhZGRpdGl2ZSk7Ci0gICAgICAgICAgICB2YWxpZE1hdHJpY2VzID0g
c2V0VHJhbnNmb3JtQW5pbWF0aW9uRW5kcG9pbnRzKHZhbHVlTGlzdCwgYW5pbWF0aW9uLCBiYXNp
Y0FuaW0sIGFuaW1hdGlvbkluZGV4LCB0cmFuc2Zvcm1PcCwgaXNNYXRyaXhBbmltYXRpb24sIGJv
eFNpemUpOwotICAgICAgICAgICAgY2FBbmltYXRpb24gPSBiYXNpY0FuaW07Ci0gICAgICAgIH0K
LSAgICAgICAgCi0gICAgICAgIGlmICghdmFsaWRNYXRyaWNlcykKLSAgICAgICAgICAgIGJyZWFr
OwotICAgIAotICAgICAgICBtX3VuY29taXR0ZWRBbmltYXRpb25zLmFwcGVuZChMYXllclByb3Bl
cnR5QW5pbWF0aW9uKGNhQW5pbWF0aW9uLCBhbmltYXRpb25OYW1lLCB2YWx1ZUxpc3QucHJvcGVy
dHkoKSwgYW5pbWF0aW9uSW5kZXgsIHRpbWVPZmZzZXQpKTsKLSAgICB9Ci0KLSAgICBFTkRfQkxP
Q0tfT0JKQ19FWENFUFRJT05TOwotCi0gICAgcmV0dXJuIHZhbGlkTWF0cmljZXM7Ci19Ci0KLUNB
QmFzaWNBbmltYXRpb24qIEdyYXBoaWNzTGF5ZXJNYWM6OmNyZWF0ZUJhc2ljQW5pbWF0aW9uKGNv
bnN0IEFuaW1hdGlvbiogYW5pbSwgQW5pbWF0ZWRQcm9wZXJ0eUlEIHByb3BlcnR5LCBib29sIGFk
ZGl0aXZlKQotewotICAgIENBQmFzaWNBbmltYXRpb24qIGJhc2ljQW5pbSA9IFtDQUJhc2ljQW5p
bWF0aW9uIGFuaW1hdGlvbldpdGhLZXlQYXRoOnByb3BlcnR5SWRUb1N0cmluZyhwcm9wZXJ0eSld
OwotICAgIHNldHVwQW5pbWF0aW9uKGJhc2ljQW5pbSwgYW5pbSwgYWRkaXRpdmUpOwotICAgIHJl
dHVybiBiYXNpY0FuaW07Ci19Ci0KLUNBS2V5ZnJhbWVBbmltYXRpb24qIEdyYXBoaWNzTGF5ZXJN
YWM6OmNyZWF0ZUtleWZyYW1lQW5pbWF0aW9uKGNvbnN0IEFuaW1hdGlvbiogYW5pbSwgQW5pbWF0
ZWRQcm9wZXJ0eUlEIHByb3BlcnR5LCBib29sIGFkZGl0aXZlKQotewotICAgIENBS2V5ZnJhbWVB
bmltYXRpb24qIGtleWZyYW1lQW5pbSA9IFtDQUtleWZyYW1lQW5pbWF0aW9uIGFuaW1hdGlvbldp
dGhLZXlQYXRoOnByb3BlcnR5SWRUb1N0cmluZyhwcm9wZXJ0eSldOwotICAgIHNldHVwQW5pbWF0
aW9uKGtleWZyYW1lQW5pbSwgYW5pbSwgYWRkaXRpdmUpOwotICAgIHJldHVybiBrZXlmcmFtZUFu
aW07Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6c2V0dXBBbmltYXRpb24oQ0FQcm9wZXJ0
eUFuaW1hdGlvbiogcHJvcGVydHlBbmltLCBjb25zdCBBbmltYXRpb24qIGFuaW0sIGJvb2wgYWRk
aXRpdmUpCi17Ci0gICAgZG91YmxlIGR1cmF0aW9uID0gYW5pbS0+ZHVyYXRpb24oKTsKLSAgICBp
ZiAoZHVyYXRpb24gPD0gMCkKLSAgICAgICAgZHVyYXRpb24gPSBjQW5pbWF0aW9uQWxtb3N0WmVy
b0R1cmF0aW9uOwotCi0gICAgZmxvYXQgcmVwZWF0Q291bnQgPSBhbmltLT5pdGVyYXRpb25Db3Vu
dCgpOwotICAgIGlmIChyZXBlYXRDb3VudCA9PSBBbmltYXRpb246Okl0ZXJhdGlvbkNvdW50SW5m
aW5pdGUpCi0gICAgICAgIHJlcGVhdENvdW50ID0gRkxUX01BWDsKLSAgICBlbHNlIGlmIChhbmlt
LT5kaXJlY3Rpb24oKSA9PSBBbmltYXRpb246OkFuaW1hdGlvbkRpcmVjdGlvbkFsdGVybmF0ZSkK
LSAgICAgICAgcmVwZWF0Q291bnQgLz0gMjsKLQotICAgIE5TU3RyaW5nICpmaWxsTW9kZSA9IDA7
Ci0gICAgc3dpdGNoIChhbmltLT5maWxsTW9kZSgpKSB7Ci0gICAgY2FzZSBBbmltYXRpb25GaWxs
TW9kZU5vbmU6Ci0gICAgICAgIGZpbGxNb2RlID0ga0NBRmlsbE1vZGVGb3J3YXJkczsgLy8gVXNl
ICJmb3J3YXJkcyIgcmF0aGVyIHRoYW4gInJlbW92ZWQiIGJlY2F1c2UgdGhlIHN0eWxlIHN5c3Rl
bSB3aWxsIHJlbW92ZSB0aGUgYW5pbWF0aW9uIHdoZW4gaXQgaXMgZmluaXNoZWQuIFRoaXMgYXZv
aWRzIGEgZmxhc2guCi0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQW5pbWF0aW9uRmlsbE1vZGVC
YWNrd2FyZHM6Ci0gICAgICAgIGZpbGxNb2RlID0ga0NBRmlsbE1vZGVCb3RoOyAvLyBVc2UgImJv
dGgiIHJhdGhlciB0aGFuICJiYWNrd2FyZHMiIGJlY2F1c2UgdGhlIHN0eWxlIHN5c3RlbSB3aWxs
IHJlbW92ZSB0aGUgYW5pbWF0aW9uIHdoZW4gaXQgaXMgZmluaXNoZWQuIFRoaXMgYXZvaWRzIGEg
Zmxhc2guCi0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQW5pbWF0aW9uRmlsbE1vZGVGb3J3YXJk
czoKLSAgICAgICBmaWxsTW9kZSA9IGtDQUZpbGxNb2RlRm9yd2FyZHM7Ci0gICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBBbmltYXRpb25GaWxsTW9kZUJvdGg6Ci0gICAgICAgZmlsbE1vZGUgPSBrQ0FG
aWxsTW9kZUJvdGg7Ci0gICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgW3Byb3BlcnR5QW5pbSBz
ZXREdXJhdGlvbjpkdXJhdGlvbl07Ci0gICAgW3Byb3BlcnR5QW5pbSBzZXRSZXBlYXRDb3VudDpy
ZXBlYXRDb3VudF07Ci0gICAgW3Byb3BlcnR5QW5pbSBzZXRBdXRvcmV2ZXJzZXM6YW5pbS0+ZGly
ZWN0aW9uKCldOwotICAgIFtwcm9wZXJ0eUFuaW0gc2V0UmVtb3ZlZE9uQ29tcGxldGlvbjpOT107
Ci0gICAgW3Byb3BlcnR5QW5pbSBzZXRBZGRpdGl2ZTphZGRpdGl2ZV07Ci0gICAgW3Byb3BlcnR5
QW5pbSBzZXRGaWxsTW9kZTpmaWxsTW9kZV07Ci0KLSAgICBbcHJvcGVydHlBbmltIHNldERlbGVn
YXRlOm1fYW5pbWF0aW9uRGVsZWdhdGUuZ2V0KCldOwotfQotCi1DQU1lZGlhVGltaW5nRnVuY3Rp
b24qIEdyYXBoaWNzTGF5ZXJNYWM6OnRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUoY29u
c3QgQW5pbWF0aW9uVmFsdWUqIGFuaW1WYWx1ZSwgY29uc3QgQW5pbWF0aW9uKiBhbmltKQotewot
ICAgIGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB0ZiA9IDA7Ci0gICAgaWYgKGFuaW1WYWx1ZS0+dGlt
aW5nRnVuY3Rpb24oKSkKLSAgICAgICAgdGYgPSBhbmltVmFsdWUtPnRpbWluZ0Z1bmN0aW9uKCk7
Ci0gICAgZWxzZSBpZiAoYW5pbS0+aXNUaW1pbmdGdW5jdGlvblNldCgpKQotICAgICAgICB0ZiA9
IGFuaW0tPnRpbWluZ0Z1bmN0aW9uKCkuZ2V0KCk7Ci0KLSAgICByZXR1cm4gZ2V0Q0FNZWRpYVRp
bWluZ0Z1bmN0aW9uKHRmID8gdGYgOiBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uOjpjcmVhdGUo
KS5nZXQoKSk7Ci19Ci0KLWJvb2wgR3JhcGhpY3NMYXllck1hYzo6c2V0QW5pbWF0aW9uRW5kcG9p
bnRzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3QsIGNvbnN0IEFuaW1hdGlvbiog
YW5pbSwgQ0FCYXNpY0FuaW1hdGlvbiogYmFzaWNBbmltKQotewotICAgIGlkIGZyb21WYWx1ZSA9
IG5pbDsKLSAgICBpZCB0b1ZhbHVlID0gbmlsOwotCi0gICAgc3dpdGNoICh2YWx1ZUxpc3QucHJv
cGVydHkoKSkgewotICAgICAgICBjYXNlIEFuaW1hdGVkUHJvcGVydHlPcGFjaXR5OiB7Ci0gICAg
ICAgICAgICBjb25zdCBGbG9hdEFuaW1hdGlvblZhbHVlKiBzdGFydFZhbCA9IHN0YXRpY19jYXN0
PGNvbnN0IEZsb2F0QW5pbWF0aW9uVmFsdWUqPih2YWx1ZUxpc3QuYXQoMCkpOwotICAgICAgICAg
ICAgY29uc3QgRmxvYXRBbmltYXRpb25WYWx1ZSogZW5kVmFsID0gc3RhdGljX2Nhc3Q8Y29uc3Qg
RmxvYXRBbmltYXRpb25WYWx1ZSo+KHZhbHVlTGlzdC5hdCgxKSk7Ci0gICAgICAgICAgICBmcm9t
VmFsdWUgPSBbTlNOdW1iZXIgbnVtYmVyV2l0aEZsb2F0OnN0YXJ0VmFsLT52YWx1ZSgpXTsKLSAg
ICAgICAgICAgIHRvVmFsdWUgPSBbTlNOdW1iZXIgbnVtYmVyV2l0aEZsb2F0OmVuZFZhbC0+dmFs
dWUoKV07Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBkZWZhdWx0Ogot
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7ICAgICAvLyB3ZSBkb24ndCBhbmltYXRl
IGNvbG9yIHlldAotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgLy8gVGhpcyBjb2Rl
cGF0aCBpcyB1c2VkIGZvciAyLWtleWZyYW1lIGFuaW1hdGlvbnMsIHNvIHdlIHN0aWxsIG5lZWQg
dG8gbG9vayBpbiB0aGUgc3RhcnQKLSAgICAvLyBmb3IgYSB0aW1pbmcgZnVuY3Rpb24uCi0gICAg
Q0FNZWRpYVRpbWluZ0Z1bmN0aW9uKiB0aW1pbmdGdW5jdGlvbiA9IHRpbWluZ0Z1bmN0aW9uRm9y
QW5pbWF0aW9uVmFsdWUodmFsdWVMaXN0LmF0KDApLCBhbmltKTsKLSAgICBbYmFzaWNBbmltIHNl
dFRpbWluZ0Z1bmN0aW9uOnRpbWluZ0Z1bmN0aW9uXTsKLQotICAgIFtiYXNpY0FuaW0gc2V0RnJv
bVZhbHVlOmZyb21WYWx1ZV07Ci0gICAgW2Jhc2ljQW5pbSBzZXRUb1ZhbHVlOnRvVmFsdWVdOwot
Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgR3JhcGhpY3NMYXllck1hYzo6c2V0QW5pbWF0
aW9uS2V5ZnJhbWVzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3QsIGNvbnN0IEFu
aW1hdGlvbiogYW5pbSwgQ0FLZXlmcmFtZUFuaW1hdGlvbioga2V5ZnJhbWVBbmltKQotewotICAg
IFJldGFpblB0cjxOU011dGFibGVBcnJheT4ga2V5VGltZXMoQWRvcHROUywgW1tOU011dGFibGVB
cnJheSBhbGxvY10gaW5pdF0pOwotICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gdmFsdWVz
KEFkb3B0TlMsIFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKLSAgICBSZXRhaW5QdHI8
TlNNdXRhYmxlQXJyYXk+IHRpbWluZ0Z1bmN0aW9ucyhBZG9wdE5TLCBbW05TTXV0YWJsZUFycmF5
IGFsbG9jXSBpbml0XSk7Ci0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdmFsdWVMaXN0
LnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGNvbnN0IEFuaW1hdGlvblZhbHVlKiBjdXJWYWx1ZSA9
IHZhbHVlTGlzdC5hdChpKTsKLSAgICAgICAgW2tleVRpbWVzLmdldCgpIGFkZE9iamVjdDpbTlNO
dW1iZXIgbnVtYmVyV2l0aEZsb2F0OmN1clZhbHVlLT5rZXlUaW1lKCldXTsKLQotICAgICAgICBz
d2l0Y2ggKHZhbHVlTGlzdC5wcm9wZXJ0eSgpKSB7Ci0gICAgICAgICAgICBjYXNlIEFuaW1hdGVk
UHJvcGVydHlPcGFjaXR5OiB7Ci0gICAgICAgICAgICAgICAgY29uc3QgRmxvYXRBbmltYXRpb25W
YWx1ZSogZmxvYXRWYWx1ZSA9IHN0YXRpY19jYXN0PGNvbnN0IEZsb2F0QW5pbWF0aW9uVmFsdWUq
PihjdXJWYWx1ZSk7Ci0gICAgICAgICAgICAgICAgW3ZhbHVlcy5nZXQoKSBhZGRPYmplY3Q6W05T
TnVtYmVyIG51bWJlcldpdGhGbG9hdDpmbG9hdFZhbHVlLT52YWx1ZSgpXV07Ci0gICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAg
ICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyAgICAgLy8gd2UgZG9uJ3QgYW5pbWF0ZSBj
b2xvciB5ZXQKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCi0gICAgICAgIENB
TWVkaWFUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb24gPSB0aW1pbmdGdW5jdGlvbkZvckFu
aW1hdGlvblZhbHVlKGN1clZhbHVlLCBhbmltKTsKLSAgICAgICAgW3RpbWluZ0Z1bmN0aW9ucy5n
ZXQoKSBhZGRPYmplY3Q6dGltaW5nRnVuY3Rpb25dOwotICAgIH0KLSAgICAKLSAgICAvLyBXZSB0
b3NzIHRoZSBsYXN0IHRmQXJyYXkgdmFsdWUgYmVjYXVzZSBpdCBoYXMgdG8gb25lIHNob3J0ZXIg
dGhhbiB0aGUgb3RoZXJzLgotICAgIFt0aW1pbmdGdW5jdGlvbnMuZ2V0KCkgcmVtb3ZlTGFzdE9i
amVjdF07Ci0KLSAgICBba2V5ZnJhbWVBbmltIHNldEtleVRpbWVzOmtleVRpbWVzLmdldCgpXTsK
LSAgICBba2V5ZnJhbWVBbmltIHNldFZhbHVlczp2YWx1ZXMuZ2V0KCldOwotICAgIFtrZXlmcmFt
ZUFuaW0gc2V0VGltaW5nRnVuY3Rpb25zOnRpbWluZ0Z1bmN0aW9ucy5nZXQoKV07Ci0gICAgCi0g
ICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgR3JhcGhpY3NMYXllck1hYzo6c2V0VHJhbnNmb3Jt
QW5pbWF0aW9uRW5kcG9pbnRzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3QsIGNv
bnN0IEFuaW1hdGlvbiogYW5pbSwgQ0FCYXNpY0FuaW1hdGlvbiogYmFzaWNBbmltLCBpbnQgZnVu
Y3Rpb25JbmRleCwgVHJhbnNmb3JtT3BlcmF0aW9uOjpPcGVyYXRpb25UeXBlIHRyYW5zZm9ybU9w
LCBib29sIGlzTWF0cml4QW5pbWF0aW9uLCBjb25zdCBJbnRTaXplJiBib3hTaXplKQotewotICAg
IGlkIGZyb21WYWx1ZTsKLSAgICBpZCB0b1ZhbHVlOwotICAgIAotICAgIEFTU0VSVCh2YWx1ZUxp
c3Quc2l6ZSgpID09IDIpOwotICAgIGNvbnN0IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKiBzdGFy
dFZhbHVlID0gc3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUqPih2YWx1
ZUxpc3QuYXQoMCkpOwotICAgIGNvbnN0IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKiBlbmRWYWx1
ZSA9IHN0YXRpY19jYXN0PGNvbnN0IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKj4odmFsdWVMaXN0
LmF0KDEpKTsKLSAgICAKLSAgICBpZiAoaXNNYXRyaXhBbmltYXRpb24pIHsKLSAgICAgICAgVHJh
bnNmb3JtYXRpb25NYXRyaXggZnJvbVRyYW5zZm9ybSwgdG9UcmFuc2Zvcm07Ci0gICAgICAgIHN0
YXJ0VmFsdWUtPnZhbHVlKCktPmFwcGx5KGJveFNpemUsIGZyb21UcmFuc2Zvcm0pOwotICAgICAg
ICBlbmRWYWx1ZS0+dmFsdWUoKS0+YXBwbHkoYm94U2l6ZSwgdG9UcmFuc2Zvcm0pOwotCi0gICAg
ICAgIC8vIElmIGFueSBtYXRyaXggaXMgc2luZ3VsYXIsIENBIHdvbid0IGFuaW1hdGUgaXQgY29y
cmVjdGx5LiBTbyBmYWxsIGJhY2sgdG8gc29mdHdhcmUgYW5pbWF0aW9uCi0gICAgICAgIGlmICgh
ZnJvbVRyYW5zZm9ybS5pc0ludmVydGlibGUoKSB8fCAhdG9UcmFuc2Zvcm0uaXNJbnZlcnRpYmxl
KCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgQ0FUcmFuc2Zvcm0zRCBj
YVRyYW5zZm9ybTsKLSAgICAgICAgY29weVRyYW5zZm9ybShjYVRyYW5zZm9ybSwgZnJvbVRyYW5z
Zm9ybSk7Ci0gICAgICAgIGZyb21WYWx1ZSA9IFtOU1ZhbHVlIHZhbHVlV2l0aENBVHJhbnNmb3Jt
M0Q6Y2FUcmFuc2Zvcm1dOwotCi0gICAgICAgIGNvcHlUcmFuc2Zvcm0oY2FUcmFuc2Zvcm0sIHRv
VHJhbnNmb3JtKTsKLSAgICAgICAgdG9WYWx1ZSA9IFtOU1ZhbHVlIHZhbHVlV2l0aENBVHJhbnNm
b3JtM0Q6Y2FUcmFuc2Zvcm1dOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGZyb21WYWx1ZSA9IGdl
dFRyYW5zZm9ybUZ1bmN0aW9uVmFsdWUoc3RhcnRWYWx1ZS0+dmFsdWUoKS0+YXQoZnVuY3Rpb25J
bmRleCksIHRyYW5zZm9ybU9wLCBib3hTaXplKTsKLSAgICAgICAgdG9WYWx1ZSA9IGdldFRyYW5z
Zm9ybUZ1bmN0aW9uVmFsdWUoZW5kVmFsdWUtPnZhbHVlKCktPmF0KGZ1bmN0aW9uSW5kZXgpLCB0
cmFuc2Zvcm1PcCwgYm94U2l6ZSk7Ci0gICAgfQotCi0gICAgLy8gVGhpcyBjb2RlcGF0aCBpcyB1
c2VkIGZvciAyLWtleWZyYW1lIGFuaW1hdGlvbnMsIHNvIHdlIHN0aWxsIG5lZWQgdG8gbG9vayBp
biB0aGUgc3RhcnQKLSAgICAvLyBmb3IgYSB0aW1pbmcgZnVuY3Rpb24uCi0gICAgQ0FNZWRpYVRp
bWluZ0Z1bmN0aW9uKiB0aW1pbmdGdW5jdGlvbiA9IHRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9u
VmFsdWUodmFsdWVMaXN0LmF0KDApLCBhbmltKTsKLSAgICBbYmFzaWNBbmltIHNldFRpbWluZ0Z1
bmN0aW9uOnRpbWluZ0Z1bmN0aW9uXTsKLQotICAgIFtiYXNpY0FuaW0gc2V0RnJvbVZhbHVlOmZy
b21WYWx1ZV07Ci0gICAgW2Jhc2ljQW5pbSBzZXRUb1ZhbHVlOnRvVmFsdWVdOwotCi0jaWYgSEFW
RV9NT0RFUk5fUVVBUlRaQ09SRQotICAgIGlmIChOU1N0cmluZyAqdmFsdWVGdW5jdGlvbk5hbWUg
PSBnZXRWYWx1ZUZ1bmN0aW9uTmFtZUZvclRyYW5zZm9ybU9wZXJhdGlvbih0cmFuc2Zvcm1PcCkp
Ci0gICAgICAgIFtiYXNpY0FuaW0gc2V0VmFsdWVGdW5jdGlvbjpbQ0FWYWx1ZUZ1bmN0aW9uIGZ1
bmN0aW9uV2l0aE5hbWU6dmFsdWVGdW5jdGlvbk5hbWVdXTsKLSNlbmRpZgotCi0gICAgcmV0dXJu
IHRydWU7Ci19Ci0KLWJvb2wgR3JhcGhpY3NMYXllck1hYzo6c2V0VHJhbnNmb3JtQW5pbWF0aW9u
S2V5ZnJhbWVzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3QsIGNvbnN0IEFuaW1h
dGlvbiogYW5pbWF0aW9uLCBDQUtleWZyYW1lQW5pbWF0aW9uKiBrZXlmcmFtZUFuaW0sIGludCBm
dW5jdGlvbkluZGV4LCBUcmFuc2Zvcm1PcGVyYXRpb246Ok9wZXJhdGlvblR5cGUgdHJhbnNmb3Jt
T3BUeXBlLCBib29sIGlzTWF0cml4QW5pbWF0aW9uLCBjb25zdCBJbnRTaXplJiBib3hTaXplKQot
ewotICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4ga2V5VGltZXMoQWRvcHROUywgW1tOU011
dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwotICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4g
dmFsdWVzKEFkb3B0TlMsIFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKLSAgICBSZXRh
aW5QdHI8TlNNdXRhYmxlQXJyYXk+IHRpbWluZ0Z1bmN0aW9ucyhBZG9wdE5TLCBbW05TTXV0YWJs
ZUFycmF5IGFsbG9jXSBpbml0XSk7Ci0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdmFs
dWVMaXN0LnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGNvbnN0IFRyYW5zZm9ybUFuaW1hdGlvblZh
bHVlKiBjdXJWYWx1ZSA9IHN0YXRpY19jYXN0PGNvbnN0IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVl
Kj4odmFsdWVMaXN0LmF0KGkpKTsKLSAgICAgICAgW2tleVRpbWVzLmdldCgpIGFkZE9iamVjdDpb
TlNOdW1iZXIgbnVtYmVyV2l0aEZsb2F0OmN1clZhbHVlLT5rZXlUaW1lKCldXTsKLQotICAgICAg
ICBpZiAoaXNNYXRyaXhBbmltYXRpb24pIHsKLSAgICAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0
cml4IHRyYW5zZm9ybTsKLSAgICAgICAgICAgIGN1clZhbHVlLT52YWx1ZSgpLT5hcHBseShib3hT
aXplLCB0cmFuc2Zvcm0pOwotCi0gICAgICAgICAgICAvLyBJZiBhbnkgbWF0cml4IGlzIHNpbmd1
bGFyLCBDQSB3b24ndCBhbmltYXRlIGl0IGNvcnJlY3RseS4gU28gZmFsbCBiYWNrIHRvIHNvZnR3
YXJlIGFuaW1hdGlvbgotICAgICAgICAgICAgaWYgKCF0cmFuc2Zvcm0uaXNJbnZlcnRpYmxlKCkp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgICAgICBDQVRyYW5zZm9y
bTNEIGNhVHJhbnNmb3JtOwotICAgICAgICAgICAgY29weVRyYW5zZm9ybShjYVRyYW5zZm9ybSwg
dHJhbnNmb3JtKTsKLSAgICAgICAgICAgIFt2YWx1ZXMuZ2V0KCkgYWRkT2JqZWN0OltOU1ZhbHVl
IHZhbHVlV2l0aENBVHJhbnNmb3JtM0Q6Y2FUcmFuc2Zvcm1dXTsKLSAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgIGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbiogdHJhbnNmb3JtT3AgPSBjdXJW
YWx1ZS0+dmFsdWUoKS0+YXQoZnVuY3Rpb25JbmRleCk7Ci0gICAgICAgICAgICBbdmFsdWVzLmdl
dCgpIGFkZE9iamVjdDpnZXRUcmFuc2Zvcm1GdW5jdGlvblZhbHVlKHRyYW5zZm9ybU9wLCB0cmFu
c2Zvcm1PcFR5cGUsIGJveFNpemUpXTsKLSAgICAgICAgfQotCi0gICAgICAgIENBTWVkaWFUaW1p
bmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb24gPSB0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZh
bHVlKGN1clZhbHVlLCBhbmltYXRpb24pOwotICAgICAgICBbdGltaW5nRnVuY3Rpb25zLmdldCgp
IGFkZE9iamVjdDp0aW1pbmdGdW5jdGlvbl07Ci0gICAgfQotICAgIAotICAgIC8vIFdlIHRvc3Mg
dGhlIGxhc3QgdGZBcnJheSB2YWx1ZSBiZWNhdXNlIGl0IGhhcyB0byBvbmUgc2hvcnRlciB0aGFu
IHRoZSBvdGhlcnMuCi0gICAgW3RpbWluZ0Z1bmN0aW9ucy5nZXQoKSByZW1vdmVMYXN0T2JqZWN0
XTsKLQotICAgIFtrZXlmcmFtZUFuaW0gc2V0S2V5VGltZXM6a2V5VGltZXMuZ2V0KCldOwotICAg
IFtrZXlmcmFtZUFuaW0gc2V0VmFsdWVzOnZhbHVlcy5nZXQoKV07Ci0gICAgW2tleWZyYW1lQW5p
bSBzZXRUaW1pbmdGdW5jdGlvbnM6dGltaW5nRnVuY3Rpb25zLmdldCgpXTsKLQotI2lmIEhBVkVf
TU9ERVJOX1FVQVJUWkNPUkUKLSAgICBpZiAoTlNTdHJpbmcgKnZhbHVlRnVuY3Rpb25OYW1lID0g
Z2V0VmFsdWVGdW5jdGlvbk5hbWVGb3JUcmFuc2Zvcm1PcGVyYXRpb24odHJhbnNmb3JtT3BUeXBl
KSkKLSAgICAgICAgW2tleWZyYW1lQW5pbSBzZXRWYWx1ZUZ1bmN0aW9uOltDQVZhbHVlRnVuY3Rp
b24gZnVuY3Rpb25XaXRoTmFtZTp2YWx1ZUZ1bmN0aW9uTmFtZV1dOwotI2VuZGlmCi0gICAgcmV0
dXJuIHRydWU7Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6c3VzcGVuZEFuaW1hdGlvbnMo
ZG91YmxlIHRpbWUpCi17Ci0gICAgZG91YmxlIHQgPSBjdXJyZW50VGltZVRvTWVkaWFUaW1lKHRp
bWUgPyB0aW1lIDogY3VycmVudFRpbWUoKSk7Ci0gICAgW3ByaW1hcnlMYXllcigpIHNldFNwZWVk
OjBdOwotICAgIFtwcmltYXJ5TGF5ZXIoKSBzZXRUaW1lT2Zmc2V0OnRdOwotCi0gICAgLy8gU3Vz
cGVuZCB0aGUgYW5pbWF0aW9ucyBvbiB0aGUgY2xvbmVzIHRvby4KLSAgICBpZiAoTGF5ZXJNYXAq
IGxheWVyQ2xvbmVNYXAgPSBwcmltYXJ5TGF5ZXJDbG9uZXMoKSkgewotICAgICAgICBMYXllck1h
cDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbGF5ZXJDbG9uZU1hcC0+ZW5kKCk7Ci0gICAgICAgIGZv
ciAoTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbGF5ZXJDbG9uZU1hcC0+YmVnaW4oKTsg
aXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICBDQUxheWVyICpjdXJyTGF5ZXIgPSBpdC0+
c2Vjb25kLmdldCgpOwotICAgICAgICAgICAgW2N1cnJMYXllciBzZXRTcGVlZDowXTsKLSAgICAg
ICAgICAgIFtjdXJyTGF5ZXIgc2V0VGltZU9mZnNldDp0XTsKLSAgICAgICAgfQotICAgIH0KLX0K
LQotdm9pZCBHcmFwaGljc0xheWVyTWFjOjpyZXN1bWVBbmltYXRpb25zKCkKLXsKLSAgICBbcHJp
bWFyeUxheWVyKCkgc2V0U3BlZWQ6MV07Ci0gICAgW3ByaW1hcnlMYXllcigpIHNldFRpbWVPZmZz
ZXQ6MF07Ci0KLSAgICAvLyBSZXN1bWUgdGhlIGFuaW1hdGlvbnMgb24gdGhlIGNsb25lcyB0b28u
Ci0gICAgaWYgKExheWVyTWFwKiBsYXllckNsb25lTWFwID0gcHJpbWFyeUxheWVyQ2xvbmVzKCkp
IHsKLSAgICAgICAgTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGxheWVyQ2xvbmVNYXAt
PmVuZCgpOwotICAgICAgICBmb3IgKExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGxheWVy
Q2xvbmVNYXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICAgICAgQ0FMYXll
ciAqY3VyckxheWVyID0gaXQtPnNlY29uZC5nZXQoKTsKLSAgICAgICAgICAgIFtjdXJyTGF5ZXIg
c2V0U3BlZWQ6MV07Ci0gICAgICAgICAgICBbY3VyckxheWVyIHNldFRpbWVPZmZzZXQ6MF07Ci0g
ICAgICAgIH0KLSAgICB9Ci19Ci0KLUNBTGF5ZXIqIEdyYXBoaWNzTGF5ZXJNYWM6Omhvc3RMYXll
ckZvclN1YmxheWVycygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc3RydWN0dXJhbExheWVyLmdl
dCgpID8gbV9zdHJ1Y3R1cmFsTGF5ZXIuZ2V0KCkgOiBtX2xheWVyLmdldCgpOyAKLX0KLQotQ0FM
YXllciogR3JhcGhpY3NMYXllck1hYzo6bGF5ZXJGb3JTdXBlcmxheWVyKCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gbV9zdHJ1Y3R1cmFsTGF5ZXIgPyBtX3N0cnVjdHVyYWxMYXllci5nZXQoKSA6IG1f
bGF5ZXIuZ2V0KCk7Ci19Ci0KLUNBTGF5ZXIqIEdyYXBoaWNzTGF5ZXJNYWM6OmFuaW1hdGVkTGF5
ZXIoQW5pbWF0ZWRQcm9wZXJ0eUlEIHByb3BlcnR5KSBjb25zdAotewotICAgIHJldHVybiAocHJv
cGVydHkgPT0gQW5pbWF0ZWRQcm9wZXJ0eUJhY2tncm91bmRDb2xvcikgPyBtX2NvbnRlbnRzTGF5
ZXIuZ2V0KCkgOiBwcmltYXJ5TGF5ZXIoKTsKLX0KLQotR3JhcGhpY3NMYXllck1hYzo6TGF5ZXJN
YXAqIEdyYXBoaWNzTGF5ZXJNYWM6OmFuaW1hdGVkTGF5ZXJDbG9uZXMoQW5pbWF0ZWRQcm9wZXJ0
eUlEIHByb3BlcnR5KSBjb25zdAotewotICAgIHJldHVybiAocHJvcGVydHkgPT0gQW5pbWF0ZWRQ
cm9wZXJ0eUJhY2tncm91bmRDb2xvcikgPyBtX2NvbnRlbnRzTGF5ZXJDbG9uZXMuZ2V0KCkgOiBw
cmltYXJ5TGF5ZXJDbG9uZXMoKTsKLX0KLQotUGxhdGZvcm1MYXllciogR3JhcGhpY3NMYXllck1h
Yzo6cGxhdGZvcm1MYXllcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHByaW1hcnlMYXllcigpOwot
fQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnNldERlYnVnQmFja2dyb3VuZENvbG9yKGNvbnN0
IENvbG9yJiBjb2xvcikKLXsKLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICAK
LSAgICBpZiAoY29sb3IuaXNWYWxpZCgpKQotICAgICAgICBzZXRMYXllckJhY2tncm91bmRDb2xv
cihtX2xheWVyLmdldCgpLCBjb2xvcik7Ci0gICAgZWxzZQotICAgICAgICBjbGVhckxheWVyQmFj
a2dyb3VuZENvbG9yKG1fbGF5ZXIuZ2V0KCkpOwotICAgIAotICAgIEVORF9CTE9DS19PQkpDX0VY
Q0VQVElPTlMKLX0KLQotdm9pZCBHcmFwaGljc0xheWVyTWFjOjpzZXREZWJ1Z0JvcmRlcihjb25z
dCBDb2xvciYgY29sb3IsIGZsb2F0IGJvcmRlcldpZHRoKQotewotICAgIEJFR0lOX0JMT0NLX09C
SkNfRVhDRVBUSU9OUwotICAgIAotICAgIGlmIChjb2xvci5pc1ZhbGlkKCkpIHsKLSAgICAgICAg
c2V0TGF5ZXJCb3JkZXJDb2xvcihtX2xheWVyLmdldCgpLCBjb2xvcik7Ci0gICAgICAgIFttX2xh
eWVyLmdldCgpIHNldEJvcmRlcldpZHRoOmJvcmRlcldpZHRoXTsKLSAgICB9IGVsc2UgewotICAg
ICAgICBjbGVhckJvcmRlckNvbG9yKG1fbGF5ZXIuZ2V0KCkpOwotICAgICAgICBbbV9sYXllci5n
ZXQoKSBzZXRCb3JkZXJXaWR0aDowXTsKLSAgICB9Ci0gICAgCi0gICAgRU5EX0JMT0NLX09CSkNf
RVhDRVBUSU9OUwotfQotCi1GbG9hdFNpemUgR3JhcGhpY3NMYXllck1hYzo6Y29uc3RyYWluZWRT
aXplKCkgY29uc3QKLXsKLSAgICBmbG9hdCB0aWxlQ29sdW1ucyA9IGNlaWxmKG1fc2l6ZS53aWR0
aCgpIC8gY1RpbGVkTGF5ZXJUaWxlU2l6ZSk7Ci0gICAgZmxvYXQgdGlsZVJvd3MgPSBjZWlsZiht
X3NpemUuaGVpZ2h0KCkgLyBjVGlsZWRMYXllclRpbGVTaXplKTsKLSAgICBkb3VibGUgbnVtVGls
ZXMgPSB0aWxlQ29sdW1ucyAqIHRpbGVSb3dzOwotICAgIAotICAgIEZsb2F0U2l6ZSBjb25zdHJh
aW5lZFNpemUgPSBtX3NpemU7Ci0gICAgY29uc3QgdW5zaWduZWQgY01heFRpbGVDb3VudCA9IDUx
MjsKLSAgICB3aGlsZSAobnVtVGlsZXMgPiBjTWF4VGlsZUNvdW50KSB7Ci0gICAgICAgIC8vIENv
bnN0cmFpbiB0aGUgd2lkZXIgZGltZW5zaW9uLgotICAgICAgICBpZiAoY29uc3RyYWluZWRTaXpl
LndpZHRoKCkgPj0gY29uc3RyYWluZWRTaXplLmhlaWdodCgpKSB7Ci0gICAgICAgICAgICB0aWxl
Q29sdW1ucyA9IG1heChmbG9vcmYoY01heFRpbGVDb3VudCAvIHRpbGVSb3dzKSwgMS4wZik7Ci0g
ICAgICAgICAgICBjb25zdHJhaW5lZFNpemUuc2V0V2lkdGgodGlsZUNvbHVtbnMgKiBjVGlsZWRM
YXllclRpbGVTaXplKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHRpbGVSb3dzID0g
bWF4KGZsb29yZihjTWF4VGlsZUNvdW50IC8gdGlsZUNvbHVtbnMpLCAxLjBmKTsKLSAgICAgICAg
ICAgIGNvbnN0cmFpbmVkU2l6ZS5zZXRIZWlnaHQodGlsZVJvd3MgKiBjVGlsZWRMYXllclRpbGVT
aXplKTsKLSAgICAgICAgfQotICAgICAgICBudW1UaWxlcyA9IHRpbGVDb2x1bW5zICogdGlsZVJv
d3M7Ci0gICAgfQotICAgIAotICAgIHJldHVybiBjb25zdHJhaW5lZFNpemU7Ci19Ci0KLWJvb2wg
R3JhcGhpY3NMYXllck1hYzo6cmVxdWlyZXNUaWxlZExheWVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6
ZSkgY29uc3QKLXsKLSAgICBpZiAoIW1fZHJhd3NDb250ZW50KQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICAvLyBGSVhNRTogY2F0Y2ggemVyby1zaXplIGhlaWdodCBvciB3aWR0aCBoZXJl
IChvciBlYXJsaWVyKT8KLSAgICByZXR1cm4gc2l6ZS53aWR0aCgpID4gY01heFBpeGVsRGltZW5z
aW9uIHx8IHNpemUuaGVpZ2h0KCkgPiBjTWF4UGl4ZWxEaW1lbnNpb247Ci19Ci0KLXZvaWQgR3Jh
cGhpY3NMYXllck1hYzo6c3dhcEZyb21PclRvVGlsZWRMYXllcihib29sIHVzZVRpbGVkTGF5ZXIp
Ci17Ci0gICAgaWYgKHVzZVRpbGVkTGF5ZXIgPT0gbV91c2luZ1RpbGVkTGF5ZXIpCi0gICAgICAg
IHJldHVybjsKLQotICAgIENHU2l6ZSB0aWxlU2l6ZSA9IENHU2l6ZU1ha2UoY1RpbGVkTGF5ZXJU
aWxlU2l6ZSwgY1RpbGVkTGF5ZXJUaWxlU2l6ZSk7Ci0KLSAgICBSZXRhaW5QdHI8Q0FMYXllcj4g
b2xkTGF5ZXIgPSBtX2xheWVyLmdldCgpOwotICAgIAotICAgIENsYXNzIGxheWVyQ2xhc3MgPSB1
c2VUaWxlZExheWVyID8gW1dlYlRpbGVkTGF5ZXIgc2VsZl0gOiBbV2ViTGF5ZXIgc2VsZl07Ci0g
ICAgbV9sYXllci5hZG9wdE5TKFtbbGF5ZXJDbGFzcyBhbGxvY10gaW5pdF0pOwotCi0gICAgbV91
c2luZ1RpbGVkTGF5ZXIgPSB1c2VUaWxlZExheWVyOwotCi0gICAgaWYgKHVzZVRpbGVkTGF5ZXIp
IHsKLSAgICAgICAgV2ViVGlsZWRMYXllciogdGlsZWRMYXllciA9IChXZWJUaWxlZExheWVyKilt
X2xheWVyLmdldCgpOwotICAgICAgICBbdGlsZWRMYXllciBzZXRUaWxlU2l6ZTp0aWxlU2l6ZV07
Ci0gICAgICAgIFt0aWxlZExheWVyIHNldExldmVsc09mRGV0YWlsOjFdOwotICAgICAgICBbdGls
ZWRMYXllciBzZXRMZXZlbHNPZkRldGFpbEJpYXM6MF07Ci0gICAgICAgIFt0aWxlZExheWVyIHNl
dENvbnRlbnRzR3Jhdml0eTpAImJvdHRvbUxlZnQiXTsKLQotI2lmICFIQVZFX01PREVSTl9RVUFS
VFpDT1JFCi0gICAgICAgIC8vIFRpbGVkIGxheWVyIGhhcyBpc3N1ZXMgd2l0aCBmbGlwcGVkIGNv
b3JkaW5hdGVzLgotICAgICAgICBzZXRDb250ZW50c09yaWVudGF0aW9uKENvbXBvc2l0aW5nQ29v
cmRpbmF0ZXNUb3BEb3duKTsKLSNlbmRpZgotICAgIH0gZWxzZSB7Ci0jaWYgIUhBVkVfTU9ERVJO
X1FVQVJUWkNPUkUKLSAgICAgICAgc2V0Q29udGVudHNPcmllbnRhdGlvbihkZWZhdWx0Q29udGVu
dHNPcmllbnRhdGlvbigpKTsKLSNlbmRpZgotICAgIH0KLSAgICAKLSAgICBbbV9sYXllci5nZXQo
KSBzZXRMYXllck93bmVyOnRoaXNdOwotICAgIHNhZmVTZXRTdWJsYXllcnMobV9sYXllci5nZXQo
KSwgW29sZExheWVyLmdldCgpIHN1YmxheWVyc10pOwotICAgIAotICAgIFtbb2xkTGF5ZXIuZ2V0
KCkgc3VwZXJsYXllcl0gcmVwbGFjZVN1YmxheWVyOm9sZExheWVyLmdldCgpIHdpdGg6bV9sYXll
ci5nZXQoKV07Ci0KLSAgICB1cGRhdGVDb250ZW50c1RyYW5zZm9ybSgpOwotCi0gICAgdXBkYXRl
TGF5ZXJQb3NpdGlvbigpOwotICAgIHVwZGF0ZUxheWVyU2l6ZSgpOwotICAgIHVwZGF0ZUFuY2hv
clBvaW50KCk7Ci0gICAgdXBkYXRlVHJhbnNmb3JtKCk7Ci0gICAgdXBkYXRlQ2hpbGRyZW5UcmFu
c2Zvcm0oKTsKLSAgICB1cGRhdGVNYXNrc1RvQm91bmRzKCk7Ci0gICAgdXBkYXRlQ29udGVudHNP
cGFxdWUoKTsKLSAgICB1cGRhdGVCYWNrZmFjZVZpc2liaWxpdHkoKTsKLSAgICB1cGRhdGVMYXll
ckJhY2tncm91bmRDb2xvcigpOwotICAgIAotICAgIHVwZGF0ZU9wYWNpdHlPbkxheWVyKCk7Ci0g
ICAgCi0jaWZuZGVmIE5ERUJVRwotICAgIFN0cmluZyBuYW1lID0gU3RyaW5nOjpmb3JtYXQoIkNB
TGF5ZXIoJXApIEdyYXBoaWNzTGF5ZXIoJXApICIsIG1fbGF5ZXIuZ2V0KCksIHRoaXMpICsgbV9u
YW1lOwotICAgIFttX2xheWVyLmdldCgpIHNldE5hbWU6bmFtZV07Ci0jZW5kaWYKLQotICAgIC8v
IG1vdmUgb3ZlciBhbmltYXRpb25zCi0gICAgbW92ZU9yQ29weUFuaW1hdGlvbnNGb3JQcm9wZXJ0
eShNb3ZlLCBBbmltYXRlZFByb3BlcnR5V2Via2l0VHJhbnNmb3JtLCBvbGRMYXllci5nZXQoKSwg
bV9sYXllci5nZXQoKSk7Ci0gICAgbW92ZU9yQ29weUFuaW1hdGlvbnNGb3JQcm9wZXJ0eShNb3Zl
LCBBbmltYXRlZFByb3BlcnR5T3BhY2l0eSwgb2xkTGF5ZXIuZ2V0KCksIG1fbGF5ZXIuZ2V0KCkp
OwotICAgIG1vdmVPckNvcHlBbmltYXRpb25zRm9yUHJvcGVydHkoTW92ZSwgQW5pbWF0ZWRQcm9w
ZXJ0eUJhY2tncm91bmRDb2xvciwgb2xkTGF5ZXIuZ2V0KCksIG1fbGF5ZXIuZ2V0KCkpOwotICAg
IAotICAgIC8vIG5lZWQgdG8gdGVsbCBuZXcgbGF5ZXIgdG8gZHJhdyBpdHNlbGYKLSAgICBzZXRO
ZWVkc0Rpc3BsYXkoKTsKLSAgICAKLSAgICB1cGRhdGVEZWJ1Z0luZGljYXRvcnMoKTsKLX0KLQot
R3JhcGhpY3NMYXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uIEdyYXBoaWNz
TGF5ZXJNYWM6OmRlZmF1bHRDb250ZW50c09yaWVudGF0aW9uKCkgY29uc3QKLXsKLSNpZiAhSEFW
RV9NT0RFUk5fUVVBUlRaQ09SRQotICAgIC8vIE9sZGVyIFF1YXJ0ekNvcmUgZG9lcyBub3Qgc3Vw
cG9ydCAtZ2VvbWV0cnlGbGlwcGVkLCBzbyB3ZSBtYW51YWxseSBmbGlwIHRoZSByb290Ci0gICAg
Ly8gbGF5ZXIgZ2VvbWV0cnksIGFuZCB0aGVuIGZsaXAgdGhlIGNvbnRlbnRzIG9mIGVhY2ggbGF5
ZXIgYmFjayBzbyB0aGF0IHRoZSBDVE0gZm9yIENHCi0gICAgLy8gaXMgdW5mbGlwcGVkLCBhbGxv
d2luZyBpdCB0byBkbyB0aGUgY29ycmVjdCBmb250IGF1dG8taGludGluZy4KLSAgICByZXR1cm4g
Q29tcG9zaXRpbmdDb29yZGluYXRlc0JvdHRvbVVwOwotI2Vsc2UKLSAgICByZXR1cm4gQ29tcG9z
aXRpbmdDb29yZGluYXRlc1RvcERvd247Ci0jZW5kaWYKLX0KLQotdm9pZCBHcmFwaGljc0xheWVy
TWFjOjp1cGRhdGVDb250ZW50c1RyYW5zZm9ybSgpCi17Ci0jaWYgIUhBVkVfTU9ERVJOX1FVQVJU
WkNPUkUKLSAgICBpZiAoY29udGVudHNPcmllbnRhdGlvbigpID09IENvbXBvc2l0aW5nQ29vcmRp
bmF0ZXNCb3R0b21VcCkgewotICAgICAgICBDR0FmZmluZVRyYW5zZm9ybSBjb250ZW50c1RyYW5z
Zm9ybSA9IENHQWZmaW5lVHJhbnNmb3JtTWFrZVNjYWxlKDEsIC0xKTsKLSAgICAgICAgY29udGVu
dHNUcmFuc2Zvcm0gPSBDR0FmZmluZVRyYW5zZm9ybVRyYW5zbGF0ZShjb250ZW50c1RyYW5zZm9y
bSwgMCwgLVttX2xheWVyLmdldCgpIGJvdW5kc10uc2l6ZS5oZWlnaHQpOwotICAgICAgICBbbV9s
YXllci5nZXQoKSBzZXRDb250ZW50c1RyYW5zZm9ybTpjb250ZW50c1RyYW5zZm9ybV07Ci0gICAg
fQotI2VuZGlmCi19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6c2V0dXBDb250ZW50c0xheWVy
KENBTGF5ZXIqIGNvbnRlbnRzTGF5ZXIpCi17Ci0gICAgLy8gVHVybiBvZmYgaW1wbGljaXQgYW5p
bWF0aW9ucyBvbiB0aGUgaW5uZXIgbGF5ZXIuCi0gICAgW2NvbnRlbnRzTGF5ZXIgc2V0U3R5bGU6
W05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdDpudWxsQWN0aW9uc0RpY3Rpb25hcnko
KSBmb3JLZXk6QCJhY3Rpb25zIl1dOwotICAgIFtjb250ZW50c0xheWVyIHNldE1hc2tzVG9Cb3Vu
ZHM6WUVTXTsKLQotICAgIGlmIChkZWZhdWx0Q29udGVudHNPcmllbnRhdGlvbigpID09IENvbXBv
c2l0aW5nQ29vcmRpbmF0ZXNCb3R0b21VcCkgewotICAgICAgICBDQVRyYW5zZm9ybTNEIGZsaXBw
ZXIgPSB7Ci0gICAgICAgICAgICAxLjBmLCAwLjBmLCAwLjBmLCAwLjBmLAotICAgICAgICAgICAg
MC4wZiwgLTEuMGYsIDAuMGYsIDAuMGYsCi0gICAgICAgICAgICAwLjBmLCAwLjBmLCAxLjBmLCAw
LjBmLAotICAgICAgICAgICAgMC4wZiwgMC4wZiwgMC4wZiwgMS4wZn07Ci0gICAgICAgIFtjb250
ZW50c0xheWVyIHNldFRyYW5zZm9ybTpmbGlwcGVyXTsKLSAgICAgICAgW2NvbnRlbnRzTGF5ZXIg
c2V0QW5jaG9yUG9pbnQ6Q0dQb2ludE1ha2UoMC4wZiwgMS4wZildOwotICAgIH0gZWxzZQotICAg
ICAgICBbY29udGVudHNMYXllciBzZXRBbmNob3JQb2ludDpDR1BvaW50WmVyb107Ci0KLSAgICBp
ZiAoc2hvd0RlYnVnQm9yZGVycygpKSB7Ci0gICAgICAgIHNldExheWVyQm9yZGVyQ29sb3IoY29u
dGVudHNMYXllciwgQ29sb3IoMCwgMCwgMTI4LCAxODApKTsKLSAgICAgICAgW2NvbnRlbnRzTGF5
ZXIgc2V0Qm9yZGVyV2lkdGg6MS4wZl07Ci0gICAgfQotfQotCi1DQUxheWVyICpHcmFwaGljc0xh
eWVyTWFjOjpmaW5kT3JNYWtlQ2xvbmUoQ2xvbmVJRCBjbG9uZUlELCBDQUxheWVyICpzb3VyY2VM
YXllciwgTGF5ZXJNYXAqIGNsb25lcywgQ2xvbmVMZXZlbCBjbG9uZUxldmVsKQotewotICAgIGlm
ICghc291cmNlTGF5ZXIpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgQ0FMYXllciAqcmVzdWx0
TGF5ZXI7Ci0KLSAgICAvLyBBZGQgd2l0aCBhIGR1bW15IHZhbHVlIHRvIGdldCBhbiBpdGVyYXRv
ciBmb3IgdGhlIGluc2VydGlvbiBwb3NpdGlvbiwgYW5kIGEgYm9vbGVhbiB0aGF0IHRlbGxzCi0g
ICAgLy8gdXMgd2hldGhlciB0aGVyZSdzIGFuIGl0ZW0gdGhlcmUuIFRoaXMgdGVjaG5pcXVlIGF2
b2lkcyB0d28gaGFzaCBsb29rdXBzLgotICAgIFJldGFpblB0cjxDQUxheWVyPiBkdW1teTsKLSAg
ICBwYWlyPExheWVyTWFwOjppdGVyYXRvciwgYm9vbD4gYWRkUmVzdWx0ID0gY2xvbmVzLT5hZGQo
Y2xvbmVJRCwgZHVtbXkpOwotICAgIGlmICghYWRkUmVzdWx0LnNlY29uZCkgewotICAgICAgICAv
LyBWYWx1ZSB3YXMgbm90IGFkZGVkLCBzbyBpdCBleGlzdHMgYWxyZWFkeS4KLSAgICAgICAgcmVz
dWx0TGF5ZXIgPSBhZGRSZXN1bHQuZmlyc3QtPnNlY29uZC5nZXQoKTsKLSAgICB9IGVsc2Ugewot
ICAgICAgICByZXN1bHRMYXllciA9IGNsb25lTGF5ZXIoc291cmNlTGF5ZXIsIGNsb25lTGV2ZWwp
OwotI2lmbmRlZiBOREVCVUcKLSAgICAgICAgW3Jlc3VsdExheWVyIHNldE5hbWU6W05TU3RyaW5n
IHN0cmluZ1dpdGhGb3JtYXQ6QCJDbG9uZSAlZCBvZiBsYXllciAlQCIsIGNsb25lSURbMFVdLCBz
b3VyY2VMYXllcl1dOwotI2VuZGlmCi0gICAgICAgIGFkZFJlc3VsdC5maXJzdC0+c2Vjb25kID0g
cmVzdWx0TGF5ZXI7Ci0gICAgfQotCi0gICAgcmV0dXJuIHJlc3VsdExheWVyOwotfSAgIAotCi12
b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OmVuc3VyZUNsb25lTGF5ZXJzKENsb25lSUQgY2xvbmVJRCwg
Q0FMYXllciAqJiBwcmltYXJ5TGF5ZXIsIENBTGF5ZXIgKiYgc3RydWN0dXJhbExheWVyLCBDQUxh
eWVyIComIGNvbnRlbnRzTGF5ZXIsIENsb25lTGV2ZWwgY2xvbmVMZXZlbCkKLXsKLSAgICBzdHJ1
Y3R1cmFsTGF5ZXIgPSBuaWw7Ci0gICAgY29udGVudHNMYXllciA9IG5pbDsKLQotICAgIGlmICgh
bV9sYXllckNsb25lcykKLSAgICAgICAgbV9sYXllckNsb25lcyA9IG5ldyBMYXllck1hcDsKLQot
ICAgIGlmICghbV9zdHJ1Y3R1cmFsTGF5ZXJDbG9uZXMgJiYgbV9zdHJ1Y3R1cmFsTGF5ZXIpCi0g
ICAgICAgIG1fc3RydWN0dXJhbExheWVyQ2xvbmVzID0gbmV3IExheWVyTWFwOwotCi0gICAgaWYg
KCFtX2NvbnRlbnRzTGF5ZXJDbG9uZXMgJiYgbV9jb250ZW50c0xheWVyKQotICAgICAgICBtX2Nv
bnRlbnRzTGF5ZXJDbG9uZXMgPSBuZXcgTGF5ZXJNYXA7Ci0KLSAgICBwcmltYXJ5TGF5ZXIgPSBm
aW5kT3JNYWtlQ2xvbmUoY2xvbmVJRCwgbV9sYXllci5nZXQoKSwgbV9sYXllckNsb25lcy5nZXQo
KSwgY2xvbmVMZXZlbCk7Ci0gICAgc3RydWN0dXJhbExheWVyID0gZmluZE9yTWFrZUNsb25lKGNs
b25lSUQsIG1fc3RydWN0dXJhbExheWVyLmdldCgpLCBtX3N0cnVjdHVyYWxMYXllckNsb25lcy5n
ZXQoKSwgY2xvbmVMZXZlbCk7Ci0gICAgY29udGVudHNMYXllciA9IGZpbmRPck1ha2VDbG9uZShj
bG9uZUlELCBtX2NvbnRlbnRzTGF5ZXIuZ2V0KCksIG1fY29udGVudHNMYXllckNsb25lcy5nZXQo
KSwgY2xvbmVMZXZlbCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6cmVtb3ZlQ2xvbmVM
YXllcnMoKQotewotICAgIG1fbGF5ZXJDbG9uZXMgPSAwOwotICAgIG1fc3RydWN0dXJhbExheWVy
Q2xvbmVzID0gMDsKLSAgICBtX2NvbnRlbnRzTGF5ZXJDbG9uZXMgPSAwOwotfQotCi1GbG9hdFBv
aW50IEdyYXBoaWNzTGF5ZXJNYWM6OnBvc2l0aW9uRm9yQ2xvbmVSb290TGF5ZXIoKSBjb25zdAot
ewotICAgIC8vIFRoaXMgY2FuIGdldCBjYWxsZWQgZHVyaW5nIGEgc3luYyB3aGVuIHdlJ3ZlIGp1
c3QgcmVtb3ZlZCB0aGUgbV9yZXBsaWNhTGF5ZXIuCi0gICAgaWYgKCFtX3JlcGxpY2FMYXllcikK
LSAgICAgICAgcmV0dXJuIEZsb2F0UG9pbnQoKTsKLQotICAgIEZsb2F0UG9pbnQgcmVwbGljYVBv
c2l0aW9uID0gbV9yZXBsaWNhTGF5ZXItPnJlcGxpY2F0ZWRMYXllclBvc2l0aW9uKCk7Ci0gICAg
cmV0dXJuIEZsb2F0UG9pbnQocmVwbGljYVBvc2l0aW9uLngoKSArIG1fYW5jaG9yUG9pbnQueCgp
ICogbV9zaXplLndpZHRoKCksCi0gICAgICAgICAgICAgICAgICAgICAgcmVwbGljYVBvc2l0aW9u
LnkoKSArIG1fYW5jaG9yUG9pbnQueSgpICogbV9zaXplLmhlaWdodCgpKTsKLX0KLQotdm9pZCBH
cmFwaGljc0xheWVyTWFjOjpwcm9wYWdhdGVMYXllckNoYW5nZVRvUmVwbGljYXMoKQotewotICAg
IGZvciAoR3JhcGhpY3NMYXllciogY3VyckxheWVyID0gdGhpczsgY3VyckxheWVyOyBjdXJyTGF5
ZXIgPSBjdXJyTGF5ZXItPnBhcmVudCgpKSB7Ci0gICAgICAgIEdyYXBoaWNzTGF5ZXJNYWMqIGN1
cnJMYXllckNBID0gc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllck1hYyo+KGN1cnJMYXllcik7Ci0g
ICAgICAgIGlmICghY3VyckxheWVyQ0EtPmhhc0Nsb25lTGF5ZXJzKCkpCi0gICAgICAgICAgICBi
cmVhazsKLQotICAgICAgICBpZiAoY3VyckxheWVyQ0EtPnJlcGxpY2FMYXllcigpKQotICAgICAg
ICAgICAgc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllck1hYyo+KGN1cnJMYXllckNBLT5yZXBsaWNh
TGF5ZXIoKSktPm5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChSZXBsaWNhdGVkTGF5ZXJDaGFuZ2Vk
KTsKLSAgICB9Ci19Ci0KLUNBTGF5ZXIgKkdyYXBoaWNzTGF5ZXJNYWM6OmZldGNoQ2xvbmVMYXll
cnMoR3JhcGhpY3NMYXllciogcmVwbGljYVJvb3QsIFJlcGxpY2FTdGF0ZSYgcmVwbGljYVN0YXRl
LCBDbG9uZUxldmVsIGNsb25lTGV2ZWwpCi17Ci0gICAgQ0FMYXllciAqcHJpbWFyeUxheWVyOwot
ICAgIENBTGF5ZXIgKnN0cnVjdHVyYWxMYXllcjsKLSAgICBDQUxheWVyICpjb250ZW50c0xheWVy
OwotICAgIGVuc3VyZUNsb25lTGF5ZXJzKHJlcGxpY2FTdGF0ZS5jbG9uZUlEKCksIHByaW1hcnlM
YXllciwgc3RydWN0dXJhbExheWVyLCBjb250ZW50c0xheWVyLCBjbG9uZUxldmVsKTsKLQotICAg
IGlmIChtX21hc2tMYXllcikgewotICAgICAgICBDQUxheWVyICptYXNrQ2xvbmUgPSBzdGF0aWNf
Y2FzdDxHcmFwaGljc0xheWVyTWFjKj4obV9tYXNrTGF5ZXIpLT5mZXRjaENsb25lTGF5ZXJzKHJl
cGxpY2FSb290LCByZXBsaWNhU3RhdGUsIEludGVybWVkaWF0ZUNsb25lTGV2ZWwpOwotICAgICAg
ICBbcHJpbWFyeUxheWVyIHNldE1hc2s6bWFza0Nsb25lXTsKLSAgICB9Ci0KLSAgICBpZiAobV9y
ZXBsaWNhdGVkTGF5ZXIpIHsKLSAgICAgICAgLy8gV2UgYXJlIGEgcmVwbGljYSBiZWluZyBhc2tl
ZCBmb3IgY2xvbmVzIG9mIG91ciBsYXllcnMuCi0gICAgICAgIENBTGF5ZXIgKnJlcGxpY2FSb290
ID0gcmVwbGljYXRlZExheWVyUm9vdChyZXBsaWNhU3RhdGUpOwotICAgICAgICBpZiAoIXJlcGxp
Y2FSb290KQotICAgICAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgICAgICBpZiAoc3RydWN0dXJh
bExheWVyKSB7Ci0gICAgICAgICAgICBbc3RydWN0dXJhbExheWVyIGluc2VydFN1YmxheWVyOnJl
cGxpY2FSb290IGF0SW5kZXg6MF07Ci0gICAgICAgICAgICByZXR1cm4gc3RydWN0dXJhbExheWVy
OwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBbcHJpbWFyeUxheWVyIGluc2VydFN1Ymxh
eWVyOnJlcGxpY2FSb290IGF0SW5kZXg6MF07Ci0gICAgICAgIHJldHVybiBwcmltYXJ5TGF5ZXI7
Ci0gICAgfQotCi0gICAgY29uc3QgVmVjdG9yPEdyYXBoaWNzTGF5ZXIqPiYgY2hpbGRMYXllcnMg
PSBjaGlsZHJlbigpOwotICAgIE5TTXV0YWJsZUFycmF5KiBjbG9uYWxTdWJsYXllcnMgPSBuaWw7
Ci0KLSAgICBDQUxheWVyICpyZXBsaWNhTGF5ZXIgPSBuaWw7Ci0gICAgaWYgKG1fcmVwbGljYUxh
eWVyICYmIG1fcmVwbGljYUxheWVyICE9IHJlcGxpY2FSb290KSB7Ci0gICAgICAgIC8vIFdlIGhh
dmUgbmVzdGVkIHJlcGxpY2FzLiBBc2sgdGhlIHJlcGxpY2EgbGF5ZXIgZm9yIGEgY2xvbmUgb2Yg
aXRzIGNvbnRlbnRzLgotICAgICAgICByZXBsaWNhU3RhdGUuc2V0QnJhbmNoVHlwZShSZXBsaWNh
U3RhdGU6OlJlcGxpY2FCcmFuY2gpOwotICAgICAgICByZXBsaWNhTGF5ZXIgPSBzdGF0aWNfY2Fz
dDxHcmFwaGljc0xheWVyTWFjKj4obV9yZXBsaWNhTGF5ZXIpLT5mZXRjaENsb25lTGF5ZXJzKHJl
cGxpY2FSb290LCByZXBsaWNhU3RhdGUsIFJvb3RDbG9uZUxldmVsKTsKLSAgICAgICAgcmVwbGlj
YVN0YXRlLnNldEJyYW5jaFR5cGUoUmVwbGljYVN0YXRlOjpDaGlsZEJyYW5jaCk7Ci0gICAgfQot
ICAgIAotICAgIGlmIChyZXBsaWNhTGF5ZXIgfHwgc3RydWN0dXJhbExheWVyIHx8IGNvbnRlbnRz
TGF5ZXIgfHwgY2hpbGRMYXllcnMuc2l6ZSgpID4gMCkgewotICAgICAgICBjbG9uYWxTdWJsYXll
cnMgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XTsKLQotICAgICAgICBpZiAoc3RydWN0
dXJhbExheWVyKSB7Ci0gICAgICAgICAgICAvLyBSZXBsaWNhcyByZW5kZXIgYmVoaW5kIHRoZSBh
Y3R1YWwgbGF5ZXIgY29udGVudC4KLSAgICAgICAgICAgIGlmIChyZXBsaWNhTGF5ZXIpCi0gICAg
ICAgICAgICAgICAgW2Nsb25hbFN1YmxheWVycyBhZGRPYmplY3Q6cmVwbGljYUxheWVyXTsKLSAg
ICAgICAgICAgICAgICAKLSAgICAgICAgICAgIC8vIEFkZCB0aGUgcHJpbWFyeSBsYXllciBuZXh0
LiBFdmVuIGlmIHdlIGhhdmUgbmVnYXRpdmUgei1vcmRlciBjaGlsZHJlbiwgdGhlIHByaW1hcnkg
bGF5ZXIgYWx3YXlzIGNvbWVzIGJlaGluZC4KLSAgICAgICAgICAgIFtjbG9uYWxTdWJsYXllcnMg
YWRkT2JqZWN0OnByaW1hcnlMYXllcl07Ci0gICAgICAgIH0gZWxzZSBpZiAoY29udGVudHNMYXll
cikgewotICAgICAgICAgICAgLy8gRklYTUU6IGFkZCB0aGUgY29udGVudHMgbGF5ZXIgaW4gdGhl
IGNvcnJlY3Qgb3JkZXIgd2l0aCBuZWdhdGl2ZSB6LW9yZGVyIGNoaWxkcmVuLgotICAgICAgICAg
ICAgLy8gVGhpcyBkb2VzIG5vdCBjYXVzZSB2aXNpYmxlIHJlbmRlcmluZyBpc3N1ZXMgYmVjYXVz
ZSBjdXJyZW50bHkgY29udGVudHMgbGF5ZXJzIGFyZSBvbmx5IHVzZWQKLSAgICAgICAgICAgIC8v
IGZvciByZXBsYWNlZCBlbGVtZW50cyB0aGF0IGRvbid0IGhhdmUgY2hpbGRyZW4uCi0gICAgICAg
ICAgICBbY2xvbmFsU3VibGF5ZXJzIGFkZE9iamVjdDpjb250ZW50c0xheWVyXTsKLSAgICAgICAg
fQotICAgICAgICAKLSAgICAgICAgcmVwbGljYVN0YXRlLnB1c2goUmVwbGljYVN0YXRlOjpDaGls
ZEJyYW5jaCk7Ci0KLSAgICAgICAgc2l6ZV90IG51bUNoaWxkcmVuID0gY2hpbGRMYXllcnMuc2l6
ZSgpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bUNoaWxkcmVuOyArK2kpIHsK
LSAgICAgICAgICAgIEdyYXBoaWNzTGF5ZXJNYWMqIGN1ckNoaWxkID0gc3RhdGljX2Nhc3Q8R3Jh
cGhpY3NMYXllck1hYyo+KGNoaWxkTGF5ZXJzW2ldKTsKLQotICAgICAgICAgICAgQ0FMYXllciAq
Y2hpbGRMYXllciA9IGN1ckNoaWxkLT5mZXRjaENsb25lTGF5ZXJzKHJlcGxpY2FSb290LCByZXBs
aWNhU3RhdGUsIEludGVybWVkaWF0ZUNsb25lTGV2ZWwpOwotICAgICAgICAgICAgaWYgKGNoaWxk
TGF5ZXIpCi0gICAgICAgICAgICAgICAgW2Nsb25hbFN1YmxheWVycyBhZGRPYmplY3Q6Y2hpbGRM
YXllcl07Ci0gICAgICAgIH0KLQotICAgICAgICByZXBsaWNhU3RhdGUucG9wKCk7Ci0KLSAgICAg
ICAgW2Nsb25hbFN1YmxheWVycyBtYWtlT2JqZWN0c1BlcmZvcm1TZWxlY3RvcjpAc2VsZWN0b3Io
cmVtb3ZlRnJvbVN1cGVybGF5ZXIpXTsKLSAgICB9Ci0gICAgCi0gICAgQ0FMYXllciAqcmVzdWx0
OwotICAgIGlmIChzdHJ1Y3R1cmFsTGF5ZXIpIHsKLSAgICAgICAgW3N0cnVjdHVyYWxMYXllciBz
ZXRTdWJsYXllcnM6Y2xvbmFsU3VibGF5ZXJzXTsKLQotICAgICAgICBpZiAoY29udGVudHNMYXll
cikgewotICAgICAgICAgICAgLy8gSWYgd2UgaGF2ZSBhIHRyYW5zZm9ybSBsYXllciwgdGhlbiB0
aGUgY29udGVudHMgbGF5ZXIgaXMgcGFyZW50ZWQgaW4gdGhlIAotICAgICAgICAgICAgLy8gcHJp
bWFyeSBsYXllciAod2hpY2ggaXMgaXRzZWxmIGEgY2hpbGQgb2YgdGhlIHRyYW5zZm9ybSBsYXll
cikuCi0gICAgICAgICAgICBbcHJpbWFyeUxheWVyIHNldFN1YmxheWVyczpuaWxdOwotICAgICAg
ICAgICAgW3ByaW1hcnlMYXllciBhZGRTdWJsYXllcjpjb250ZW50c0xheWVyXTsKLSAgICAgICAg
fQotCi0gICAgICAgIHJlc3VsdCA9IHN0cnVjdHVyYWxMYXllcjsKLSAgICB9IGVsc2UgewotICAg
ICAgICBbcHJpbWFyeUxheWVyIHNldFN1YmxheWVyczpjbG9uYWxTdWJsYXllcnNdOwotICAgICAg
ICByZXN1bHQgPSBwcmltYXJ5TGF5ZXI7Ci0gICAgfQotCi0gICAgW2Nsb25hbFN1YmxheWVycyBy
ZWxlYXNlXTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1DQUxheWVyICpHcmFwaGljc0xheWVy
TWFjOjpjbG9uZUxheWVyKENBTGF5ZXIgKmxheWVyLCBDbG9uZUxldmVsIGNsb25lTGV2ZWwpCi17
Ci0gICAgc3RhdGljIENsYXNzIHRyYW5zZm9ybUxheWVyQ2xhc3MgPSBOU0NsYXNzRnJvbVN0cmlu
ZyhAIkNBVHJhbnNmb3JtTGF5ZXIiKTsKLSAgICBDQUxheWVyICpuZXdMYXllciA9IG5pbDsKLSAg
ICBpZiAoW2xheWVyIGlzS2luZE9mQ2xhc3M6dHJhbnNmb3JtTGF5ZXJDbGFzc10pCi0gICAgICAg
IG5ld0xheWVyID0gW3RyYW5zZm9ybUxheWVyQ2xhc3MgbGF5ZXJdOwotICAgIGVsc2UKLSAgICAg
ICAgbmV3TGF5ZXIgPSBbQ0FMYXllciBsYXllcl07Ci0KLSAgICBbbmV3TGF5ZXIgc2V0U3R5bGU6
W05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdDpudWxsQWN0aW9uc0RpY3Rpb25hcnko
KSBmb3JLZXk6QCJhY3Rpb25zIl1dOwotICAgIAotICAgIFtuZXdMYXllciBzZXRQb3NpdGlvbjpb
bGF5ZXIgcG9zaXRpb25dXTsKLSAgICBbbmV3TGF5ZXIgc2V0Qm91bmRzOltsYXllciBib3VuZHNd
XTsKLSAgICBbbmV3TGF5ZXIgc2V0QW5jaG9yUG9pbnQ6W2xheWVyIGFuY2hvclBvaW50XV07Ci0j
aWYgSEFWRV9NT0RFUk5fUVVBUlRaQ09SRQotICAgIFtuZXdMYXllciBzZXRBbmNob3JQb2ludFo6
W2xheWVyIGFuY2hvclBvaW50Wl1dOwotI2VuZGlmCi0gICAgW25ld0xheWVyIHNldFRyYW5zZm9y
bTpbbGF5ZXIgdHJhbnNmb3JtXV07Ci0gICAgW25ld0xheWVyIHNldFN1YmxheWVyVHJhbnNmb3Jt
OltsYXllciBzdWJsYXllclRyYW5zZm9ybV1dOwotICAgIFtuZXdMYXllciBzZXRDb250ZW50czpb
bGF5ZXIgY29udGVudHNdXTsKLSAgICBbbmV3TGF5ZXIgc2V0TWFza3NUb0JvdW5kczpbbGF5ZXIg
bWFza3NUb0JvdW5kc11dOwotICAgIFtuZXdMYXllciBzZXREb3VibGVTaWRlZDpbbGF5ZXIgaXNE
b3VibGVTaWRlZF1dOwotICAgIFtuZXdMYXllciBzZXRPcGFxdWU6W2xheWVyIGlzT3BhcXVlXV07
Ci0gICAgW25ld0xheWVyIHNldEJhY2tncm91bmRDb2xvcjpbbGF5ZXIgYmFja2dyb3VuZENvbG9y
XV07Ci0KLSAgICBpZiAoY2xvbmVMZXZlbCA9PSBJbnRlcm1lZGlhdGVDbG9uZUxldmVsKSB7Ci0g
ICAgICAgIFtuZXdMYXllciBzZXRPcGFjaXR5OltsYXllciBvcGFjaXR5XV07Ci0gICAgICAgIG1v
dmVPckNvcHlBbmltYXRpb25zRm9yUHJvcGVydHkoQ29weSwgQW5pbWF0ZWRQcm9wZXJ0eVdlYmtp
dFRyYW5zZm9ybSwgbGF5ZXIsIG5ld0xheWVyKTsKLSAgICAgICAgbW92ZU9yQ29weUFuaW1hdGlv
bnNGb3JQcm9wZXJ0eShDb3B5LCBBbmltYXRlZFByb3BlcnR5T3BhY2l0eSwgbGF5ZXIsIG5ld0xh
eWVyKTsKLSAgICB9Ci0gICAgCi0gICAgaWYgKHNob3dEZWJ1Z0JvcmRlcnMoKSkgewotICAgICAg
ICBzZXRMYXllckJvcmRlckNvbG9yKG5ld0xheWVyLCBDb2xvcigyNTUsIDEyMiwgMjUxKSk7Ci0g
ICAgICAgIFtuZXdMYXllciBzZXRCb3JkZXJXaWR0aDoyXTsKLSAgICB9Ci0gICAgCi0gICAgcmV0
dXJuIG5ld0xheWVyOwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnNldE9wYWNpdHlJbnRl
cm5hbChmbG9hdCBhY2N1bXVsYXRlZE9wYWNpdHkpCi17Ci0gICAgTGF5ZXJNYXAqIGxheWVyQ2xv
bmVNYXAgPSAwOwotICAgIAotICAgIGlmIChwcmVzZXJ2ZXMzRCgpKSB7Ci0gICAgICAgIFttX2xh
eWVyLmdldCgpIHNldE9wYWNpdHk6YWNjdW11bGF0ZWRPcGFjaXR5XTsKLSAgICAgICAgbGF5ZXJD
bG9uZU1hcCA9IG1fbGF5ZXJDbG9uZXMuZ2V0KCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgW3By
aW1hcnlMYXllcigpIHNldE9wYWNpdHk6YWNjdW11bGF0ZWRPcGFjaXR5XTsKLSAgICAgICAgbGF5
ZXJDbG9uZU1hcCA9IHByaW1hcnlMYXllckNsb25lcygpOwotICAgIH0KLQotICAgIGlmIChsYXll
ckNsb25lTWFwKSB7Ci0gICAgICAgIExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBsYXll
ckNsb25lTWFwLT5lbmQoKTsKLSAgICAgICAgZm9yIChMYXllck1hcDo6Y29uc3RfaXRlcmF0b3Ig
aXQgPSBsYXllckNsb25lTWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAg
ICAgIGlmIChtX3JlcGxpY2FMYXllciAmJiBpc1JlcGxpY2F0ZWRSb290Q2xvbmUoaXQtPmZpcnN0
KSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIENBTGF5ZXIgKmN1cnJM
YXllciA9IGl0LT5zZWNvbmQuZ2V0KCk7Ci0gICAgICAgICAgICBbY3VyckxheWVyIHNldE9wYWNp
dHk6bV9vcGFjaXR5XTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotdm9pZCBHcmFwaGljc0xheWVy
TWFjOjp1cGRhdGVPcGFjaXR5T25MYXllcigpCi17Ci0jaWYgIUhBVkVfTU9ERVJOX1FVQVJUWkNP
UkUKLSAgICAvLyBEaXN0cmlidXRlIG9wYWNpdHkgZWl0aGVyIHRvIG91ciBvd24gbGF5ZXIgb3Ig
dG8gb3VyIGNoaWxkcmVuLiBXZSBwYXNzIGluIHRoZSAKLSAgICAvLyBjb250cmlidXRpb24gZnJv
bSBvdXIgcGFyZW50KHMpLgotICAgIGRpc3RyaWJ1dGVPcGFjaXR5KHBhcmVudCgpID8gcGFyZW50
KCktPmFjY3VtdWxhdGVkT3BhY2l0eSgpIDogMSk7Ci0jZWxzZQotICAgIFtwcmltYXJ5TGF5ZXIo
KSBzZXRPcGFjaXR5Om1fb3BhY2l0eV07Ci0KLSAgICBpZiAoTGF5ZXJNYXAqIGxheWVyQ2xvbmVN
YXAgPSBwcmltYXJ5TGF5ZXJDbG9uZXMoKSkgewotICAgICAgICBMYXllck1hcDo6Y29uc3RfaXRl
cmF0b3IgZW5kID0gbGF5ZXJDbG9uZU1hcC0+ZW5kKCk7Ci0gICAgICAgIGZvciAoTGF5ZXJNYXA6
OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbGF5ZXJDbG9uZU1hcC0+YmVnaW4oKTsgaXQgIT0gZW5kOyAr
K2l0KSB7Ci0gICAgICAgICAgICBpZiAobV9yZXBsaWNhTGF5ZXIgJiYgaXNSZXBsaWNhdGVkUm9v
dENsb25lKGl0LT5maXJzdCkpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAg
ICAgIENBTGF5ZXIgKmN1cnJMYXllciA9IGl0LT5zZWNvbmQuZ2V0KCk7Ci0gICAgICAgICAgICBb
Y3VyckxheWVyIHNldE9wYWNpdHk6bV9vcGFjaXR5XTsKLSAgICAgICAgfQotICAgICAgICAKLSAg
ICB9Ci0jZW5kaWYKLX0KLQotdm9pZCBHcmFwaGljc0xheWVyTWFjOjpub3RlU3VibGF5ZXJzQ2hh
bmdlZCgpCi17Ci0gICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKENoaWxkcmVuQ2hhbmdlZCk7
Ci0gICAgcHJvcGFnYXRlTGF5ZXJDaGFuZ2VUb1JlcGxpY2FzKCk7Ci19Ci0KLXZvaWQgR3JhcGhp
Y3NMYXllck1hYzo6bm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKExheWVyQ2hhbmdlRmxhZ3MgZmxh
Z3MpCi17Ci0gICAgaWYgKCFtX3VuY29tbWl0dGVkQ2hhbmdlcyAmJiBtX2NsaWVudCkKLSAgICAg
ICAgbV9jbGllbnQtPm5vdGlmeVN5bmNSZXF1aXJlZCh0aGlzKTsKLQotICAgIG1fdW5jb21taXR0
ZWRDaGFuZ2VzIHw9IGZsYWdzOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRp
ZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCkluZGV4OiBXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL21hYy9XZWJMYXllci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL1dlYkxheWVyLmgJKHJldmlzaW9uIDczMjczKQorKysgV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tYWMvV2ViTGF5ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsMTQgKzM0
LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEdyYXBoaWNzTGF5ZXI7CiB9CiAK
LS8vIENhdGVnb3J5IGltcGxlbWVudGVkIGJ5IFdlYkxheWVyIGFuZCBXZWJUaWxlZExheWVyLgot
QGludGVyZmFjZSBDQUxheWVyKFdlYkxheWVyQWRkaXRpb25zKQotCi0tICh2b2lkKXNldExheWVy
T3duZXI6KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKWxheWVyOwotLSAoV2ViQ29yZTo6R3JhcGhp
Y3NMYXllciopbGF5ZXJPd25lcjsKLQotQGVuZAotCiAjaWYgZGVmaW5lZChCVUlMRElOR19PTl9M
RU9QQVJEKQogQGludGVyZmFjZSBDQUxheWVyKFdlYkxheWVySW50ZXJuYWwpCiAtIChDR0FmZmlu
ZVRyYW5zZm9ybSljb250ZW50c1RyYW5zZm9ybTsKQEAgLTUxLDcgKzQzLDYgQEAgQGludGVyZmFj
ZSBDQUxheWVyKFdlYkxheWVySW50ZXJuYWwpCiAKIEBpbnRlcmZhY2UgV2ViTGF5ZXIgOiBDQUxh
eWVyIAogewotICAgIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqIG1fbGF5ZXJPd25lcjsKIH0KIEBl
bmQKIApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViTGF5ZXIubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViTGF5ZXIubW0JKHJl
dmlzaW9uIDczMjczKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViTGF5ZXIu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDggQEAKICNpbXBvcnQgIldlYkxheWVyLmgi
CiAKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dC5oIgotI2ltcG9ydCAiR3JhcGhpY3NMYXllci5o
IgorI2ltcG9ydCAiR3JhcGhpY3NMYXllckNBLmgiCisjaW1wb3J0ICJQbGF0Zm9ybUNBTGF5ZXIu
aCIKICNpbXBvcnQgPG9iamMvb2JqYy1ydW50aW1lLmg+CiAjaW1wb3J0IDxRdWFydHpDb3JlL1F1
YXJ0ekNvcmUuaD4KICNpbXBvcnQgPHd0Zi9VbnVzZWRQYXJhbS5oPgpAQCAtMTQ2LDU4ICsxNDcs
MzkgQEAgLSAoaWQ8Q0FBY3Rpb24+KWFjdGlvbkZvcktleTooTlNTdHJpbmcgKgogICAgIHJldHVy
biBuaWw7CiB9CiAKLS8vIEltcGxlbWVudCB0aGlzIHNvIHByZXNlbnRhdGlvbkxheWVyIGNhbiBn
ZXQgb3VyIGN1c3RvbSBhdHRyaWJ1dGVzCi0tIChpZClpbml0V2l0aExheWVyOihpZClsYXllcgot
ewotICAgIGlmICgoc2VsZiA9IFtzdXBlciBpbml0V2l0aExheWVyOmxheWVyXSkpCi0gICAgICAg
IG1fbGF5ZXJPd25lciA9IFsoV2ViTGF5ZXIqKWxheWVyIGxheWVyT3duZXJdOwotCi0gICAgcmV0
dXJuIHNlbGY7Ci19Ci0KIC0gKHZvaWQpc2V0TmVlZHNEaXNwbGF5CiB7Ci0gICAgaWYgKG1fbGF5
ZXJPd25lciAmJiBtX2xheWVyT3duZXItPmNsaWVudCgpICYmIG1fbGF5ZXJPd25lci0+ZHJhd3ND
b250ZW50KCkpCisgICAgUGxhdGZvcm1DQUxheWVyKiBsYXllciA9IFBsYXRmb3JtQ0FMYXllcjo6
cGxhdGZvcm1DQUxheWVyKHNlbGYpOworICAgIGlmIChsYXllciAmJiBsYXllci0+b3duZXIoKSAm
JiBsYXllci0+b3duZXIoKS0+Y2xpZW50KCkgJiYgbGF5ZXItPm93bmVyKCktPmRyYXdzQ29udGVu
dCgpKQogICAgICAgICBbc3VwZXIgc2V0TmVlZHNEaXNwbGF5XTsKIH0KIAogLSAodm9pZClzZXRO
ZWVkc0Rpc3BsYXlJblJlY3Q6KENHUmVjdClkaXJ0eVJlY3QKIHsKLSAgICBzZXRMYXllck5lZWRz
RGlzcGxheUluUmVjdChzZWxmLCBtX2xheWVyT3duZXIsIGRpcnR5UmVjdCk7CisgICAgUGxhdGZv
cm1DQUxheWVyKiBsYXllciA9IFBsYXRmb3JtQ0FMYXllcjo6cGxhdGZvcm1DQUxheWVyKHNlbGYp
OworICAgIGlmIChsYXllcikKKyAgICAgICAgc2V0TGF5ZXJOZWVkc0Rpc3BsYXlJblJlY3Qoc2Vs
ZiwgbGF5ZXItPm93bmVyKCksIGRpcnR5UmVjdCk7CiB9CiAKIC0gKHZvaWQpZGlzcGxheQogewog
ICAgIFtzdXBlciBkaXNwbGF5XTsKLSAgICBpZiAobV9sYXllck93bmVyKQotICAgICAgICBtX2xh
eWVyT3duZXItPmRpZERpc3BsYXkoc2VsZik7CisgICAgUGxhdGZvcm1DQUxheWVyKiBsYXllciA9
IFBsYXRmb3JtQ0FMYXllcjo6cGxhdGZvcm1DQUxheWVyKHNlbGYpOworICAgIGlmIChsYXllciAm
JiBsYXllci0+b3duZXIoKSkKKyAgICAgICAgbGF5ZXItPm93bmVyKCktPmRpZERpc3BsYXkoc2Vs
Zik7CiB9CiAKIC0gKHZvaWQpZHJhd0luQ29udGV4dDooQ0dDb250ZXh0UmVmKWNvbnRleHQKIHsK
LSAgICBkcmF3TGF5ZXJDb250ZW50cyhjb250ZXh0LCBzZWxmLCBtX2xheWVyT3duZXIpOworICAg
IFBsYXRmb3JtQ0FMYXllciogbGF5ZXIgPSBQbGF0Zm9ybUNBTGF5ZXI6OnBsYXRmb3JtQ0FMYXll
cihzZWxmKTsKKyAgICBpZiAobGF5ZXIpCisgICAgICAgIGRyYXdMYXllckNvbnRlbnRzKGNvbnRl
eHQsIHNlbGYsIGxheWVyLT5vd25lcigpKTsKIH0KIAogQGVuZCAvLyBpbXBsZW1lbnRhdGlvbiBX
ZWJMYXllcgogCiAjcHJhZ21hIG1hcmsgLQogCi1AaW1wbGVtZW50YXRpb24gV2ViTGF5ZXIoV2Vi
TGF5ZXJBZGRpdGlvbnMpCi0KLS0gKHZvaWQpc2V0TGF5ZXJPd25lcjooR3JhcGhpY3NMYXllciop
YUxheWVyCi17Ci0gICAgbV9sYXllck93bmVyID0gYUxheWVyOwotfQotCi0tIChHcmFwaGljc0xh
eWVyKilsYXllck93bmVyCi17Ci0gICAgcmV0dXJuIG1fbGF5ZXJPd25lcjsKLX0KLQotQGVuZAot
Ci0jcHJhZ21hIG1hcmsgLQotCiAjaWZuZGVmIE5ERUJVRwogCiBAaW1wbGVtZW50YXRpb24gQ0FM
YXllcihFeHRlbmRlZERlc2NyaXB0aW9uKQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvV2ViVGlsZWRMYXllci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL1dlYlRpbGVkTGF5ZXIuaAkocmV2aXNpb24gNzMyNzMpCisrKyBXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL21hYy9XZWJUaWxlZExheWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMy
LDcgKzMyLDYgQEAKIAogQGludGVyZmFjZSBXZWJUaWxlZExheWVyIDogQ0FUaWxlZExheWVyIAog
ewotICAgIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqIG1fbGF5ZXJPd25lcjsKIH0KIAogLy8gaW1w
bGVtZW50cyBXZWJMYXllckFkZGl0aW9ucwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvV2ViVGlsZWRMYXllci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9XZWJUaWxlZExheWVyLm1tCShyZXZpc2lvbiA3MzI3MykKKysrIFdlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYlRpbGVkTGF5ZXIubW0JKHdvcmtpbmcgY29weSkKQEAg
LTMwLDcgKzMwLDggQEAKICNpbXBvcnQgIldlYlRpbGVkTGF5ZXIuaCIKIAogI2ltcG9ydCAiR3Jh
cGhpY3NDb250ZXh0LmgiCi0jaW1wb3J0ICJHcmFwaGljc0xheWVyLmgiCisjaW1wb3J0ICJHcmFw
aGljc0xheWVyQ0EuaCIKKyNpbXBvcnQgIlBsYXRmb3JtQ0FMYXllci5oIgogI2ltcG9ydCA8d3Rm
L1VudXNlZFBhcmFtLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtNTYsNTQgKzU3
LDM1IEBAIC0gKGlkPENBQWN0aW9uPilhY3Rpb25Gb3JLZXk6KE5TU3RyaW5nICoKICAgICByZXR1
cm4gbmlsOwogfQogCi0vLyBJbXBsZW1lbnQgdGhpcyBzbyBwcmVzZW50YXRpb25MYXllciBjYW4g
Z2V0IG91ciBjdXN0b20gYXR0cmlidXRlcwotLSAoaWQpaW5pdFdpdGhMYXllcjooaWQpbGF5ZXIK
LXsKLSAgICBpZiAoKHNlbGYgPSBbc3VwZXIgaW5pdFdpdGhMYXllcjpsYXllcl0pKQotICAgICAg
ICBtX2xheWVyT3duZXIgPSBbKFdlYkxheWVyKilsYXllciBsYXllck93bmVyXTsKLQotICAgIHJl
dHVybiBzZWxmOwotfQotCiAtICh2b2lkKXNldE5lZWRzRGlzcGxheQogewotICAgIGlmIChtX2xh
eWVyT3duZXIgJiYgbV9sYXllck93bmVyLT5jbGllbnQoKSAmJiBtX2xheWVyT3duZXItPmRyYXdz
Q29udGVudCgpKQorICAgIFBsYXRmb3JtQ0FMYXllciogbGF5ZXIgPSBQbGF0Zm9ybUNBTGF5ZXI6
OnBsYXRmb3JtQ0FMYXllcihzZWxmKTsKKyAgICBpZiAobGF5ZXIgJiYgbGF5ZXItPm93bmVyKCkg
JiYgbGF5ZXItPm93bmVyKCktPmNsaWVudCgpICYmIGxheWVyLT5vd25lcigpLT5kcmF3c0NvbnRl
bnQoKSkKICAgICAgICAgW3N1cGVyIHNldE5lZWRzRGlzcGxheV07CiB9CiAKIC0gKHZvaWQpc2V0
TmVlZHNEaXNwbGF5SW5SZWN0OihDR1JlY3QpZGlydHlSZWN0CiB7Ci0gICAgc2V0TGF5ZXJOZWVk
c0Rpc3BsYXlJblJlY3Qoc2VsZiwgbV9sYXllck93bmVyLCBkaXJ0eVJlY3QpOworICAgIFBsYXRm
b3JtQ0FMYXllciogbGF5ZXIgPSBQbGF0Zm9ybUNBTGF5ZXI6OnBsYXRmb3JtQ0FMYXllcihzZWxm
KTsKKyAgICBpZiAobGF5ZXIpCisgICAgICAgIHNldExheWVyTmVlZHNEaXNwbGF5SW5SZWN0KHNl
bGYsIGxheWVyLT5vd25lcigpLCBkaXJ0eVJlY3QpOwogfQogCiAtICh2b2lkKWRpc3BsYXkKIHsK
ICAgICBbc3VwZXIgZGlzcGxheV07Ci0gICAgaWYgKG1fbGF5ZXJPd25lcikKLSAgICAgICAgbV9s
YXllck93bmVyLT5kaWREaXNwbGF5KHNlbGYpOworICAgIFBsYXRmb3JtQ0FMYXllciogbGF5ZXIg
PSBQbGF0Zm9ybUNBTGF5ZXI6OnBsYXRmb3JtQ0FMYXllcihzZWxmKTsKKyAgICBpZiAobGF5ZXIg
JiYgbGF5ZXItPm93bmVyKCkpCisgICAgICAgIGxheWVyLT5vd25lcigpLT5kaWREaXNwbGF5KHNl
bGYpOwogfQogCiAtICh2b2lkKWRyYXdJbkNvbnRleHQ6KENHQ29udGV4dFJlZiljb250ZXh0CiB7
Ci0gICAgZHJhd0xheWVyQ29udGVudHMoY29udGV4dCwgc2VsZiwgbV9sYXllck93bmVyKTsKKyAg
ICBQbGF0Zm9ybUNBTGF5ZXIqIGxheWVyID0gUGxhdGZvcm1DQUxheWVyOjpwbGF0Zm9ybUNBTGF5
ZXIoc2VsZik7CisgICAgaWYgKGxheWVyKQorICAgICAgICBkcmF3TGF5ZXJDb250ZW50cyhjb250
ZXh0LCBzZWxmLCBsYXllci0+b3duZXIoKSk7CiB9CiAKIEBlbmQgLy8gaW1wbGVtZW50YXRpb24g
V2ViVGlsZWRMYXllcgogCi0jcHJhZ21hIG1hcmsgLQotCi1AaW1wbGVtZW50YXRpb24gV2ViVGls
ZWRMYXllcihMYXllck1hY0FkZGl0aW9ucykKLQotLSAodm9pZClzZXRMYXllck93bmVyOihHcmFw
aGljc0xheWVyKilhTGF5ZXIKLXsKLSAgICBtX2xheWVyT3duZXIgPSBhTGF5ZXI7Ci19Ci0KLS0g
KEdyYXBoaWNzTGF5ZXIqKWxheWVyT3duZXIKLXsKLSAgICByZXR1cm4gbV9sYXllck93bmVyOwot
fQotCi1AZW5kCi0KICNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCkluZGV4
OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzTGF5ZXJRdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0xheWVyUXQuY3Bw
CShyZXZpc2lvbiA3MzI3MykKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhp
Y3NMYXllclF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjg2LDcgKzY4Niw3IEBAIHZvaWQgR3Jh
cGhpY3NMYXllclF0SW1wbDo6Zmx1c2hDaGFuZ2VzKGIKICAgICAgICAgLy8gdHJ5IHRvIHNuYXRj
aCB0aGF0IG93bmVyc2hpcC4KICAgICAgICAgaWYgKCFtX2xheWVyLT5wYXJlbnQoKSAmJiAhcGFy
ZW50SXRlbSgpKQogICAgICAgICAgICAgc2V0UGFyZW50SXRlbSgwKTsKLSAgICAgICAgZWxzZSBp
ZiAobV9sYXllciAmJiBtX2xheWVyLT5wYXJlbnQoKSAmJiBtX2xheWVyLT5wYXJlbnQoKS0+bmF0
aXZlTGF5ZXIoKSAhPSBwYXJlbnRJdGVtKCkpCisgICAgICAgIGVsc2UgaWYgKG1fbGF5ZXIgJiYg
bV9sYXllci0+cGFyZW50KCkgJiYgbV9sYXllci0+cGFyZW50KCktPnBsYXRmb3JtTGF5ZXIoKSAh
PSBwYXJlbnRJdGVtKCkpCiAgICAgICAgICAgICBzZXRQYXJlbnRJdGVtKG1fbGF5ZXItPnBhcmVu
dCgpLT5wbGF0Zm9ybUxheWVyKCkpOwogICAgIH0KIApAQCAtMTMxOCwxMyArMTMxOCw2IEBAIHZv
aWQgR3JhcGhpY3NMYXllclF0OjpzeW5jQ29tcG9zaXRpbmdTdGEKIH0KIAogLyogXHJlaW1wIChH
cmFwaGljc0xheWVyLmgpCi0gKi8KLU5hdGl2ZUxheWVyIEdyYXBoaWNzTGF5ZXJRdDo6bmF0aXZl
TGF5ZXIoKSBjb25zdAotewotICAgIHJldHVybiBtX2ltcGwuZ2V0KCk7Ci19Ci0KLS8qIFxyZWlt
cCAoR3JhcGhpY3NMYXllci5oKQogKi8KIFBsYXRmb3JtTGF5ZXIqIEdyYXBoaWNzTGF5ZXJRdDo6
cGxhdGZvcm1MYXllcigpIGNvbnN0CiB7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3F0L0dyYXBoaWNzTGF5ZXJRdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvcXQvR3JhcGhpY3NMYXllclF0LmgJKHJldmlzaW9uIDczMjczKQorKysgV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0xheWVyUXQuaAkod29ya2luZyBjb3B5KQpAQCAt
MzgsNyArMzgsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+R3JhcGhpY3NMYXllclF0KCk7CiAK
ICAgICAvLyByZWltcHMgZnJvbSBHcmFwaGljc0xheWVyLmgKLSAgICB2aXJ0dWFsIE5hdGl2ZUxh
eWVyIG5hdGl2ZUxheWVyKCkgY29uc3Q7CiAgICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiBwbGF0
Zm9ybUxheWVyKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzRGlzcGxheSgpOwog
ICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0Rpc3BsYXlJblJlY3QoY29uc3QgRmxvYXRSZWN0Jik7
CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0xheWVyQ0FDRi5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NM
YXllckNBQ0YuY3BwCShyZXZpc2lvbiA3MzI3MykKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0dyYXBoaWNzTGF5ZXJDQUNGLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUzLDExICsx
NTMsNiBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQUNGOjpzZXROYW1lKGNvbnN0IFN0CiAgICAgbV9s
YXllci0+c2V0TmFtZShsb25nTmFtZSk7CiB9CiAKLU5hdGl2ZUxheWVyIEdyYXBoaWNzTGF5ZXJD
QUNGOjpuYXRpdmVMYXllcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fbGF5ZXIuZ2V0KCk7Ci19
Ci0KIGJvb2wgR3JhcGhpY3NMYXllckNBQ0Y6OnNldENoaWxkcmVuKGNvbnN0IFZlY3RvcjxHcmFw
aGljc0xheWVyKj4mIGNoaWxkcmVuKQogewogICAgIGJvb2wgY2hpbGRyZW5DaGFuZ2VkID0gR3Jh
cGhpY3NMYXllcjo6c2V0Q2hpbGRyZW4oY2hpbGRyZW4pOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vR3JhcGhpY3NMYXllckNBQ0YuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0xheWVyQ0FDRi5oCShyZXZpc2lvbiA3MzI3
MykKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzTGF5ZXJDQUNGLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ0LDkgKzQ0LDYgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2
b2lkIHNldE5hbWUoY29uc3QgU3RyaW5nJiBpbk5hbWUpOwogCi0gICAgLy8gZm9yIGhvc3Rpbmcg
dGhpcyBHcmFwaGljc0xheWVyIGluIGEgbmF0aXZlIGxheWVyIGhpZXJhcmNoeQotICAgIHZpcnR1
YWwgTmF0aXZlTGF5ZXIgbmF0aXZlTGF5ZXIoKSBjb25zdDsKLQogICAgIHZpcnR1YWwgYm9vbCBz
ZXRDaGlsZHJlbihjb25zdCBWZWN0b3I8R3JhcGhpY3NMYXllcio+Jik7CiAgICAgdmlydHVhbCB2
b2lkIGFkZENoaWxkKEdyYXBoaWNzTGF5ZXIgKmxheWVyKTsKICAgICB2aXJ0dWFsIHZvaWQgYWRk
Q2hpbGRBdEluZGV4KEdyYXBoaWNzTGF5ZXIgKmxheWVyLCBpbnQgaW5kZXgpOwpJbmRleDogV2Vi
S2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDczMjgyKQorKysgV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxNyBAQAorMjAxMC0xMi0wMyAgQ2hyaXMgTWFycmluICA8Y21hcnJpbkBhcHBsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2hh
cmUgY29kZSBiZXR3ZWVuIE1hYyAoQ0EpIGFuZCBXaW5kb3dzIChDQUNGKSBHcmFwaGljc0xheWVy
IGltcGxlbWVudGF0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NDkzODgKKworICAgICAgICBDb21wb3NpdGUgcGF0Y2ggZnJvbSBjaGFuZ2VzOgor
ICAgICAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvNzMyMTcKKyAgICAg
ICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzczMjI3CisKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW06CisgICAgICAgIChXZWJDaHJvbWVD
bGllbnQ6OmF0dGFjaFJvb3RHcmFwaGljc0xheWVyKToKKwogMjAxMC0xMi0wMiAgU2ltb24gRnJh
c2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZlcnQgcjczMjE3IGFu
ZCByNzMyMjcgYmVjYXVzZSBvZiBjb250aW51ZWQgYnVzdGFnZS4KSW5kZXg6IFdlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCShyZXZpc2lvbiA3MzI3MykKKysr
IFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCSh3b3JraW5nIGNv
cHkpCkBAIC03NzMsNyArNzczLDcgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OmF0dGFjaFJvb3RH
cmFwaGljcwogCiAgICAgV2ViSFRNTFZpZXcgKndlYkhUTUxWaWV3ID0gKFdlYkhUTUxWaWV3ICop
ZG9jdW1lbnRWaWV3OwogICAgIGlmIChncmFwaGljc0xheWVyKQotICAgICAgICBbd2ViSFRNTFZp
ZXcgYXR0YWNoUm9vdExheWVyOmdyYXBoaWNzTGF5ZXItPm5hdGl2ZUxheWVyKCldOworICAgICAg
ICBbd2ViSFRNTFZpZXcgYXR0YWNoUm9vdExheWVyOmdyYXBoaWNzTGF5ZXItPnBsYXRmb3JtTGF5
ZXIoKV07CiAgICAgZWxzZQogICAgICAgICBbd2ViSFRNTFZpZXcgZGV0YWNoUm9vdExheWVyXTsK
ICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75530</attachid>
            <date>2010-12-03 13:01:29 -0800</date>
            <delta_ts>2010-12-03 16:13:07 -0800</delta_ts>
            <desc>Fixed merge conflicts</desc>
            <filename>bug-49388-20101203130128.patch</filename>
            <type>text/plain</type>
            <size>294786</size>
            <attacher name="Chris Marrin">cmarrin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MzI5MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDQgQEAKKzIwMTAtMTItMDMgIENocmlzIE1hcnJpbiAgPGNtYXJyaW5AYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNo
YXJlIGNvZGUgYmV0d2VlbiBNYWMgKENBKSBhbmQgV2luZG93cyAoQ0FDRikgR3JhcGhpY3NMYXll
ciBpbXBsZW1lbnRhdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQ5Mzg4CisKKyAgICAgICAgQ29tcG9zaXRlIHBhdGNoIGZyb20gY2hhbmdlczoK
KyAgICAgICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzczMjE3CisgICAg
ICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC83MzIyNworCisgICAgICAg
ICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
YS9HcmFwaGljc0xheWVyQ0EuY3BwOiBDb3BpZWQgZnJvbSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvR3JhcGhpY3NMYXllckNBLmg6IENvcGllZCBmcm9tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvR3JhcGhpY3NMYXllckNBLmguCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
UGxhdGZvcm1DQUFuaW1hdGlvbi5oOiBDb3BpZWQgZnJvbSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL1BsYXRmb3JtQ0FBbmltYXRpb24uaC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaDogQ29waWVkIGZyb20gV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
YS9tYWMvUGxhdGZvcm1DQUFuaW1hdGlvbk1hYy5tbTogQ29waWVkIGZyb20gV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9tYWMvUGxhdGZvcm1DQUFuaW1hdGlvbk1hYy5tbS4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvUGxhdGZvcm1DQUxheWVyTWFjLm1tOiBDb3BpZWQg
ZnJvbSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9QbGF0Zm9ybUNBTGF5ZXJNYWMu
bW0uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNo
cm9taXVtLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGlj
c0xheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhp
Y3NMYXllck1hYy5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9H
cmFwaGljc0xheWVyTWFjLm1tOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L21hYy9XZWJMYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJMYXll
ci5tbToKKyAgICAgICAgKC1bV2ViTGF5ZXIgc2V0TmVlZHNEaXNwbGF5XSk6CisgICAgICAgICgt
W1dlYkxheWVyIHNldE5lZWRzRGlzcGxheUluUmVjdDpdKToKKyAgICAgICAgKC1bV2ViTGF5ZXIg
ZGlzcGxheV0pOgorICAgICAgICAoLVtXZWJMYXllciBkcmF3SW5Db250ZXh0Ol0pOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJUaWxlZExheWVyLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL1dlYlRpbGVkTGF5ZXIubW06CisgICAgICAgICgtW1dlYlRpbGVk
TGF5ZXIgc2V0TmVlZHNEaXNwbGF5XSk6CisgICAgICAgICgtW1dlYlRpbGVkTGF5ZXIgc2V0TmVl
ZHNEaXNwbGF5SW5SZWN0Ol0pOgorICAgICAgICAoLVtXZWJUaWxlZExheWVyIGRpc3BsYXldKToK
KyAgICAgICAgKC1bV2ViVGlsZWRMYXllciBkcmF3SW5Db250ZXh0Ol0pOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzTGF5ZXJRdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0xheWVyUXRJbXBsOjpmbHVzaENoYW5nZXMpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3F0L0dyYXBoaWNzTGF5ZXJRdC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3dpbi9HcmFwaGljc0xheWVyQ0FDRi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0dyYXBoaWNzTGF5ZXJDQUNGLmg6CisKIDIwMTAtMTItMDMgIFNpbW9uIEZyYXNlciAg
PHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IENocm9taXVtIGJ1aWxkLgpJ
bmRleDogV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9u
IDczMjkwKQorKysgV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdv
cmtpbmcgY29weSkKQEAgLTEwMTIsNiArMTAxMiw4IEBACiAJCTQ5NEJENzk1MEY1NUM4RUUwMDc0
NzgyOCAvKiBXZWJLaXRQb2ludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDk0QkQ3OTMwRjU1QzhFRTAwNzQ3ODI4IC8qIFdlYktpdFBvaW50LmggKi87
IH07CiAJCTQ5NEJENzlEMEY1NUM5NEMwMDc0NzgyOCAvKiBKU1dlYktpdFBvaW50LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5NEJENzlCMEY1NUM5
NEMwMDc0NzgyOCAvKiBKU1dlYktpdFBvaW50LmNwcCAqLzsgfTsKIAkJNDk0QkQ3OUUwRjU1Qzk0
QzAwNzQ3ODI4IC8qIEpTV2ViS2l0UG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ5NEJENzlDMEY1NUM5NEMwMDc0NzgyOCAvKiBKU1dlYktpdFBv
aW50LmggKi87IH07CisJCTQ5NTg3ODIxMTJBNTdEREYwMDcyMzhBQyAvKiBQbGF0Zm9ybUNBQW5p
bWF0aW9uTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDk1ODc4MUYxMkE1N0RERjAwNzIzOEFDIC8qIFBsYXRmb3JtQ0FBbmltYXRpb25NYWMubW0g
Ki87IH07CisJCTQ5NTg3ODIyMTJBNTdEREYwMDcyMzhBQyAvKiBQbGF0Zm9ybUNBTGF5ZXJNYWMu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTU4Nzgy
MDEyQTU3RERGMDA3MjM4QUMgLyogUGxhdGZvcm1DQUxheWVyTWFjLm1tICovOyB9OwogCQk0OTgz
OTEzRjBGMUU3Njc1MDBDMjM3ODIgLyogSlNXZWJLaXRDU1NNYXRyaXguY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDk4MzkxM0QwRjFFNzY3NTAwQzIz
NzgyIC8qIEpTV2ViS2l0Q1NTTWF0cml4LmNwcCAqLzsgfTsKIAkJNDk4MzkxNDAwRjFFNzY3NTAw
QzIzNzgyIC8qIEpTV2ViS2l0Q1NTTWF0cml4LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0OTgzOTEzRTBGMUU3Njc1MDBDMjM3ODIgLyogSlNXZWJLaXRD
U1NNYXRyaXguaCAqLzsgfTsKIAkJNDk4MzkxNTAwRjFFNzZCNDAwQzIzNzgyIC8qIERPTVdlYktp
dENTU01hdHJpeC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDk4MzkxNEQwRjFFNzZCNDAwQzIzNzgyIC8qIERPTVdlYktpdENTU01hdHJpeC5oICovOyB9
OwpAQCAtMTAzOCw4ICsxMDQwLDEwIEBACiAJCTQ5ODc3MEYyMTI0MkM1MzUwMDIyMjZCQSAvKiBU
aWxpbmdEYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ5ODc3MEQ5MTI0MkM1MzUwMDIyMjZCQSAvKiBUaWxpbmdEYXRhLmNwcCAqLzsgfTsKIAkJ
NDk4NzcwRjMxMjQyQzUzNTAwMjIyNkJBIC8qIFRpbGluZ0RhdGEuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5ODc3MERBMTI0MkM1MzUwMDIyMjZCQSAv
KiBUaWxpbmdEYXRhLmggKi87IH07CiAJCTQ5ODc3MTUzMTI0M0Y5RkEwMDIyMjZCQSAvKiBEcmF3
aW5nQnVmZmVyTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDk4NzcxNTIxMjQzRjlGQTAwMjIyNkJBIC8qIERyYXdpbmdCdWZmZXJNYWMubW0gKi87
IH07Ci0JCTQ5OUIzQzU5MTI4QzY0MUUwMEU3MjZDMiAvKiBHcmFwaGljc0xheWVyTWFjLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTlCM0M1NzEyOEM2
NDFFMDBFNzI2QzIgLyogR3JhcGhpY3NMYXllck1hYy5oICovOyB9OwotCQk0OTlCM0M1QTEyOEM2
NDFFMDBFNzI2QzIgLyogR3JhcGhpY3NMYXllck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5OUIzQzU4MTI4QzY0MUUwMEU3MjZDMiAvKiBHcmFw
aGljc0xheWVyTWFjLm1tICovOyB9OworCQk0OTlCM0VDNTEyOENDQzQ3MDBFNzI2QzIgLyogUGxh
dGZvcm1DQUxheWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0OTlCM0VDMzEyOENDQzQ3MDBFNzI2QzIgLyogUGxhdGZvcm1DQUxheWVyLmggKi87IH07
CisJCTQ5OUIzRUQ2MTI4Q0QzMTQwMEU3MjZDMiAvKiBHcmFwaGljc0xheWVyQ0EuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDk5QjNFRDQxMjhDRDMx
NDAwRTcyNkMyIC8qIEdyYXBoaWNzTGF5ZXJDQS5jcHAgKi87IH07CisJCTQ5OUIzRUQ3MTI4Q0Qz
MTQwMEU3MjZDMiAvKiBHcmFwaGljc0xheWVyQ0EuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5OUIzRUQ1MTI4Q0QzMTQwMEU3MjZDMiAvKiBHcmFwaGlj
c0xheWVyQ0EuaCAqLzsgfTsKKwkJNDk5QjNFREQxMjhEQjUwMjAwRTcyNkMyIC8qIFBsYXRmb3Jt
Q0FBbmltYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ5OUIzRURDMTI4REI1MDEwMEU3MjZDMiAvKiBQbGF0Zm9ybUNBQW5pbWF0aW9uLmggKi87
IH07CiAJCTQ5QjY5RTVFMTI1NEZFRUQwMDdENTdFQiAvKiBMb29wQmxpbm5DbGFzc2lmaWVyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5QjY5RTU1
MTI1NEZFRUQwMDdENTdFQiAvKiBMb29wQmxpbm5DbGFzc2lmaWVyLmNwcCAqLzsgfTsKIAkJNDlC
NjlFNUYxMjU0RkVFRDAwN0Q1N0VCIC8qIExvb3BCbGlubkNsYXNzaWZpZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5QjY5RTU2MTI1NEZFRUQwMDdE
NTdFQiAvKiBMb29wQmxpbm5DbGFzc2lmaWVyLmggKi87IH07CiAJCTQ5QjY5RTYwMTI1NEZFRUQw
MDdENTdFQiAvKiBMb29wQmxpbm5Db25zdGFudHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5QjY5RTU3MTI1NEZFRUQwMDdENTdFQiAvKiBMb29wQmxp
bm5Db25zdGFudHMuaCAqLzsgfTsKQEAgLTcxMzIsNiArNzEzNiw4IEBACiAJCTQ5NEJENzk0MEY1
NUM4RUUwMDc0NzgyOCAvKiBXZWJLaXRQb2ludC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
V2ViS2l0UG9pbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OTRCRDc5QjBG
NTVDOTRDMDA3NDc4MjggLyogSlNXZWJLaXRQb2ludC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU1dlYktpdFBvaW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDk0QkQ3OUMwRjU1Qzk0QzAwNzQ3ODI4IC8qIEpTV2ViS2l0UG9pbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNXZWJLaXRQb2ludC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk0OTU4NzgxRjEyQTU3RERGMDA3MjM4QUMgLyogUGxhdGZvcm1D
QUFuaW1hdGlvbk1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9
IFBsYXRmb3JtQ0FBbmltYXRpb25NYWMubW07IHBhdGggPSBjYS9tYWMvUGxhdGZvcm1DQUFuaW1h
dGlvbk1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDk1ODc4MjAxMkE1N0RE
RjAwNzIzOEFDIC8qIFBsYXRmb3JtQ0FMYXllck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgbmFtZSA9IFBsYXRmb3JtQ0FMYXllck1hYy5tbTsgcGF0aCA9IGNhL21hYy9Q
bGF0Zm9ybUNBTGF5ZXJNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5ODM5
MTNEMEYxRTc2NzUwMEMyMzc4MiAvKiBKU1dlYktpdENTU01hdHJpeC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dlYktpdENTU01hdHJpeC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5ODM5MTNFMEYxRTc2NzUwMEMyMzc4MiAvKiBKU1dlYktp
dENTU01hdHJpeC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dlYktpdENT
U01hdHJpeC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OTgzOTE0RDBGMUU3NkI0
MDBDMjM3ODIgLyogRE9NV2ViS2l0Q1NTTWF0cml4LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IERPTVdlYktpdENTU01hdHJpeC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNzE1OSw4ICs3MTY1LDEwIEBACiAJCTQ5ODc3MEQ5MTI0MkM1MzUwMDIyMjZCQSAvKiBU
aWxpbmdEYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFRpbGlu
Z0RhdGEuY3BwOyBwYXRoID0gZ3B1L1RpbGluZ0RhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0OTg3NzBEQTEyNDJDNTM1MDAyMjI2QkEgLyogVGlsaW5nRGF0YS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBUaWxpbmdEYXRhLmg7IHBhdGggPSBncHUvVGls
aW5nRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OTg3NzE1MjEyNDNGOUZB
MDAyMjI2QkEgLyogRHJhd2luZ0J1ZmZlck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgbmFtZSA9IERyYXdpbmdCdWZmZXJNYWMubW07IHBhdGggPSBncHUvbWFjL0RyYXdp
bmdCdWZmZXJNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ5OUIzQzU3MTI4
QzY0MUUwMEU3MjZDMiAvKiBHcmFwaGljc0xheWVyTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEdyYXBoaWNzTGF5ZXJNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJNDk5QjNDNTgxMjhDNjQxRTAwRTcyNkMyIC8qIEdyYXBoaWNzTGF5ZXJNYWMubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHcmFwaGljc0xheWVyTWFjLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0OTlCM0VDMzEyOENDQzQ3MDBFNzI2QzIg
LyogUGxhdGZvcm1DQUxheWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFBs
YXRmb3JtQ0FMYXllci5oOyBwYXRoID0gY2EvUGxhdGZvcm1DQUxheWVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTQ5OUIzRUQ0MTI4Q0QzMTQwMEU3MjZDMiAvKiBHcmFwaGljc0xh
eWVyQ0EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gR3JhcGhpY3NM
YXllckNBLmNwcDsgcGF0aCA9IGNhL0dyYXBoaWNzTGF5ZXJDQS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTQ5OUIzRUQ1MTI4Q0QzMTQwMEU3MjZDMiAvKiBHcmFwaGljc0xheWVy
Q0EuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gR3JhcGhpY3NMYXllckNBLmg7
IHBhdGggPSBjYS9HcmFwaGljc0xheWVyQ0EuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNDk5QjNFREMxMjhEQjUwMTAwRTcyNkMyIC8qIFBsYXRmb3JtQ0FBbmltYXRpb24uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUGxhdGZvcm1DQUFuaW1hdGlvbi5oOyBwYXRo
ID0gY2EvUGxhdGZvcm1DQUFuaW1hdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0OUI2OUU1NTEyNTRGRUVEMDA3RDU3RUIgLyogTG9vcEJsaW5uQ2xhc3NpZmllci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMb29wQmxpbm5DbGFzc2lmaWVyLmNw
cDsgcGF0aCA9IGdwdS9Mb29wQmxpbm5DbGFzc2lmaWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDlCNjlFNTYxMjU0RkVFRDAwN0Q1N0VCIC8qIExvb3BCbGlubkNsYXNzaWZp
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTG9vcEJsaW5uQ2xhc3NpZmll
ci5oOyBwYXRoID0gZ3B1L0xvb3BCbGlubkNsYXNzaWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDlCNjlFNTcxMjU0RkVFRDAwN0Q1N0VCIC8qIExvb3BCbGlubkNvbnN0YW50
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMb29wQmxpbm5Db25zdGFudHMu
aDsgcGF0aCA9IGdwdS9Mb29wQmxpbm5Db25zdGFudHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTEyNzEwLDYgKzEyNzE4LDE1IEBACiAJCQluYW1lID0gY2FudmFzOwogCQkJc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJNDk1ODc4MUUxMkE1N0RCQzAwNzIzOEFDIC8q
IG1hYyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJNDk1
ODc4MUYxMkE1N0RERjAwNzIzOEFDIC8qIFBsYXRmb3JtQ0FBbmltYXRpb25NYWMubW0gKi8sCisJ
CQkJNDk1ODc4MjAxMkE1N0RERjAwNzIzOEFDIC8qIFBsYXRmb3JtQ0FMYXllck1hYy5tbSAqLywK
KwkJCSk7CisJCQluYW1lID0gbWFjOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsK
IAkJNDk4NzcwQzExMjQyQzUwRDAwMjIyNkJBIC8qIGdwdSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0xMjc1MSw2ICsxMjc2OCwxOCBAQAogCQkJbmFtZSA9
IG1hYzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCTQ5OUIzRUMwMTI4Q0ND
MTgwMEU3MjZDMiAvKiBjYSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4g
PSAoCisJCQkJNDk1ODc4MUUxMkE1N0RCQzAwNzIzOEFDIC8qIG1hYyAqLywKKwkJCQk0OTlCM0VE
QzEyOERCNTAxMDBFNzI2QzIgLyogUGxhdGZvcm1DQUFuaW1hdGlvbi5oICovLAorCQkJCTQ5OUIz
RUQ0MTI4Q0QzMTQwMEU3MjZDMiAvKiBHcmFwaGljc0xheWVyQ0EuY3BwICovLAorCQkJCTQ5OUIz
RUQ1MTI4Q0QzMTQwMEU3MjZDMiAvKiBHcmFwaGljc0xheWVyQ0EuaCAqLywKKwkJCQk0OTlCM0VD
MzEyOENDQzQ3MDBFNzI2QzIgLyogUGxhdGZvcm1DQUxheWVyLmggKi8sCisJCQkpOworCQkJbmFt
ZSA9IGNhOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJNDlFOTExQjIwRUY4
NkQyNzAwOUQwQ0FGIC8qIHRyYW5zZm9ybXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJ
CWNoaWxkcmVuID0gKApAQCAtMTY2ODUsOCArMTY3MTQsNiBAQAogCQkJCUIyQUZGQzdCMEQwMEE1
QzEwMDMwMDc0RCAvKiBHbHlwaFBhZ2VUcmVlTm9kZU1hYy5jcHAgKi8sCiAJCQkJNDlGRkJGMUMx
MUM4NTUwRTAwNkE3MTE4IC8qIEdyYXBoaWNzQ29udGV4dDNETWFjLm1tICovLAogCQkJCUIyNzdC
NDAzMEIyMkYzN0MwMDA0QkVDNiAvKiBHcmFwaGljc0NvbnRleHRNYWMubW0gKi8sCi0JCQkJNDk5
QjNDNTcxMjhDNjQxRTAwRTcyNkMyIC8qIEdyYXBoaWNzTGF5ZXJNYWMuaCAqLywKLQkJCQk0OTlC
M0M1ODEyOEM2NDFFMDBFNzI2QzIgLyogR3JhcGhpY3NMYXllck1hYy5tbSAqLywKIAkJCQlCMjc1
MzU4RDBCMDUzQTY2MDAyQ0U2NEYgLyogSWNvbk1hYy5tbSAqLywKIAkJCQlCMjc1MzU0RTBCMDUz
ODE0MDAyQ0U2NEYgLyogSW1hZ2VNYWMubW0gKi8sCiAJCQkJQjI3NTM1NEYwQjA1MzgxNDAwMkNF
NjRGIC8qIEludFBvaW50TWFjLm1tICovLApAQCAtMTY3MTIsNiArMTY3MzksNyBAQAogCQkJaXNh
ID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQlCMjc1MzUyOTBCMDUzODE0MDAyQ0U2
NEYgLyogY2cgKi8sCisJCQkJNDk5QjNFQzAxMjhDQ0MxODAwRTcyNkMyIC8qIGNhICovLAogCQkJ
CUI1MzIwRDY4MTIyQTI0RTkwMDJEMTQ0MCAvKiBjb2NvYSAqLywKIAkJCQlBNzVFOEI3RjBFMURF
MkIwMDA3RjI0ODEgLyogZmlsdGVycyAqLywKIAkJCQk0OTg3NzBDMTEyNDJDNTBEMDAyMjI2QkEg
LyogZ3B1ICovLApAQCAtMTk3NzEsNyArMTk3OTksNiBAQAogCQkJCUE4OEZFMzM0MEU1RUVFODcw
MDhEOEMwRiAvKiBHcmFwaGljc0NvbnRleHRQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjU4MEIwRDBGMTJBMjY5MDA1MUQ2ODkgLyogR3JhcGhpY3NMYXllci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEY1ODBCMEUwRjEyQTI2OTAwNTFENjg5IC8qIEdyYXBoaWNzTGF5ZXJDbGllbnQuaCBp
biBIZWFkZXJzICovLAotCQkJCTQ5OUIzQzU5MTI4QzY0MUUwMEU3MjZDMiAvKiBHcmFwaGljc0xh
eWVyTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkEwMTVBQjBBRjZDRDUzMDA2QkNFMEUgLyog
R3JhcGhpY3NUeXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzUwQjU2MTcxMjExOUQyMzAwOEI0
NkUwIC8qIEdyb3VwU2V0dGluZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTc2OTNCQUQyMTA2QzJE
Q0EwMDdCMDgyMyAvKiBIYWx0YWJsZVBsdWdpbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMTQzMCw2
ICsyMTQ1Nyw5IEBACiAJCQkJOTNGMTk5RUQwODI0NUU1OTAwMUU5QUJDIC8qIFhTTFRQcm9jZXNz
b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxQkU1MTJFMENGNkM1MTIwMDJFQTk1OSAvKiBYU0xU
VW5pY29kZVNvcnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3REQ0RDg3MEZERjRENkUwMEVDRjlB
NCAvKiBYU1NBdWRpdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQk0OTlCM0VDNTEyOENDQzQ3MDBF
NzI2QzIgLyogUGxhdGZvcm1DQUxheWVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk0OTlCM0VENzEy
OENEMzE0MDBFNzI2QzIgLyogR3JhcGhpY3NMYXllckNBLmggaW4gSGVhZGVycyAqLywKKwkJCQk0
OTlCM0VERDEyOERCNTAyMDBFNzI2QzIgLyogUGxhdGZvcm1DQUFuaW1hdGlvbi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7
CiAJCX07CkBAIC0yMjQxNSw3ICsyMjQ0NSw2IEBACiAJCQkJQjJFRDk3NzEwQjFGNTVDRTAwMjU3
RDBGIC8qIEdyYXBoaWNzQ29udGV4dENHLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyNzdCNDA0
MEIyMkYzN0MwMDA0QkVDNiAvKiBHcmFwaGljc0NvbnRleHRNYWMubW0gaW4gU291cmNlcyAqLywK
IAkJCQkwRjU4MEIwQzBGMTJBMjY5MDA1MUQ2ODkgLyogR3JhcGhpY3NMYXllci5jcHAgaW4gU291
cmNlcyAqLywKLQkJCQk0OTlCM0M1QTEyOEM2NDFFMDBFNzI2QzIgLyogR3JhcGhpY3NMYXllck1h
Yy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUIyQTAxNUFBMEFGNkNENTMwMDZCQ0UwRSAvKiBHcmFw
aGljc1R5cGVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUM1MEI1NjE2MTIxMTlEMjMwMDhCNDZF
MCAvKiBHcm91cFNldHRpbmdzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUY1NUIzREJGMTI1MUYx
MkQwMDNFRjI2OSAvKiBIaWRkZW5JbnB1dFR5cGUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNDAw
OCw2ICsyNDAzNyw5IEBACiAJCQkJOTNGMTlCMDUwODI0NUU1OTAwMUU5QUJDIC8qIFhTTFRQcm9j
ZXNzb3JMaWJ4c2x0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxQkU1MTJEMENGNkM1MTIwMDJF
QTk1OSAvKiBYU0xUVW5pY29kZVNvcnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTdERDREODYw
RkRGNEQ2RTAwRUNGOUE0IC8qIFhTU0F1ZGl0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDk5
QjNFRDYxMjhDRDMxNDAwRTcyNkMyIC8qIEdyYXBoaWNzTGF5ZXJDQS5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQk0OTU4NzgyMTEyQTU3RERGMDA3MjM4QUMgLyogUGxhdGZvcm1DQUFuaW1hdGlvbk1h
Yy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTQ5NTg3ODIyMTJBNTdEREYwMDcyMzhBQyAvKiBQbGF0
Zm9ybUNBTGF5ZXJNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVw
bG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCShyZXZpc2lvbiA3MzI5MCkKKysrIFdlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSwyMyAr
NDksMTkgQEAKIEBjbGFzcyBXZWJMYXllcjsKIEBjbGFzcyBDQUxheWVyOwogdHlwZWRlZiBDQUxh
eWVyIFBsYXRmb3JtTGF5ZXI7Ci10eXBlZGVmIENBTGF5ZXIqIE5hdGl2ZUxheWVyOwogI2Vsc2UK
IHR5cGVkZWYgdm9pZCogUGxhdGZvcm1MYXllcjsKLXR5cGVkZWYgdm9pZCogTmF0aXZlTGF5ZXI7
CiAjZW5kaWYKICNlbGlmIFBMQVRGT1JNKFdJTikKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNz
IFdLQ0FDRkxheWVyOwogdHlwZWRlZiBXS0NBQ0ZMYXllciBQbGF0Zm9ybUxheWVyOwotdHlwZWRl
ZiB2b2lkKiBOYXRpdmVMYXllcjsKIH0KICNlbGlmIFBMQVRGT1JNKFFUKQogI2lmIFVTRShURVhU
VVJFX01BUFBFUikKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFRleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyOwogdHlwZWRlZiBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllciBQbGF0Zm9ybUxh
eWVyOwotdHlwZWRlZiBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllciogTmF0aXZlTGF5ZXI7CiB9
OwogI2Vsc2UKIFFUX0JFR0lOX05BTUVTUEFDRQpAQCAtNzMsMTggKzY5LDE1IEBAIGNsYXNzIFFH
cmFwaGljc09iamVjdDsKIFFUX0VORF9OQU1FU1BBQ0UKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHR5
cGVkZWYgUUdyYXBoaWNzT2JqZWN0IFBsYXRmb3JtTGF5ZXI7Ci10eXBlZGVmIFFHcmFwaGljc09i
amVjdCogTmF0aXZlTGF5ZXI7CiB9CiAjZW5kaWYKICNlbGlmIFBMQVRGT1JNKENIUk9NSVVNKQog
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgTGF5ZXJDaHJvbWl1bTsKIHR5cGVkZWYgTGF5ZXJD
aHJvbWl1bSBQbGF0Zm9ybUxheWVyOwotdHlwZWRlZiB2b2lkKiBOYXRpdmVMYXllcjsKIH0KICNl
bHNlCiB0eXBlZGVmIHZvaWQqIFBsYXRmb3JtTGF5ZXI7Ci10eXBlZGVmIHZvaWQqIE5hdGl2ZUxh
eWVyOwogI2VuZGlmCiAKIGVudW0gTGF5ZXJUcmVlQXNUZXh0QmVoYXZpb3JGbGFncyB7CkBAIC0y
MDAsOSArMTkzLDYgQEAgcHVibGljOgogICAgIGNvbnN0IFN0cmluZyYgbmFtZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbmFtZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXROYW1lKGNvbnN0IFN0cmluZyYg
bmFtZSkgeyBtX25hbWUgPSBuYW1lOyB9CiAKLSAgICAvLyBGb3IgaG9zdGluZyB0aGlzIEdyYXBo
aWNzTGF5ZXIgaW4gYSBuYXRpdmUgbGF5ZXIgaGllcmFyY2h5LgotICAgIHZpcnR1YWwgTmF0aXZl
TGF5ZXIgbmF0aXZlTGF5ZXIoKSBjb25zdCB7IHJldHVybiAwOyB9Ci0KICAgICBHcmFwaGljc0xh
eWVyKiBwYXJlbnQoKSBjb25zdCB7IHJldHVybiBtX3BhcmVudDsgfTsKICAgICB2b2lkIHNldFBh
cmVudChHcmFwaGljc0xheWVyKiBsYXllcikgeyBtX3BhcmVudCA9IGxheWVyOyB9IC8vIEludGVy
bmFsIHVzZSBvbmx5LgogICAgIApAQCAtMzIzLDYgKzMxMyw3IEBAIHB1YmxpYzoKICAgICAvLyBD
YWxsYmFjayBmcm9tIHRoZSB1bmRlcmx5aW5nIGdyYXBoaWNzIHN5c3RlbSB3aGVuIHRoZSBsYXll
ciBoYXMgYmVlbiBkaXNwbGF5ZWQKICAgICB2aXJ0dWFsIHZvaWQgZGlkRGlzcGxheShQbGF0Zm9y
bUxheWVyKikgeyB9CiAgICAgCisgICAgLy8gRm9yIGhvc3RpbmcgdGhpcyBHcmFwaGljc0xheWVy
IGluIGEgbmF0aXZlIGxheWVyIGhpZXJhcmNoeS4KICAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIq
IHBsYXRmb3JtTGF5ZXIoKSBjb25zdCB7IHJldHVybiAwOyB9CiAgICAgCiAgICAgdm9pZCBkdW1w
TGF5ZXIoVGV4dFN0cmVhbSYsIGludCBpbmRlbnQgPSAwLCBMYXllclRyZWVBc1RleHRCZWhhdmlv
ciA9IExheWVyVHJlZUFzVGV4dEJlaGF2aW9yTm9ybWFsKSBjb25zdDsKSW5kZXg6IFdlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAJKHJldmlzaW9u
IDczMjM2KQkoZnJvbSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJD
QS5jcHA6NzMyMzYpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5
ZXJDQS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyMjc5IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisKKyNpbmNsdWRlICJH
cmFwaGljc0xheWVyQ0EuaCIKKworI2luY2x1ZGUgIkFuaW1hdGlvbi5oIgorI2luY2x1ZGUgIkZs
b2F0Q29udmVyc2lvbi5oIgorI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgorI2luY2x1ZGUgIlBsYXRm
b3JtQ0FMYXllci5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSAiUm90
YXRlVHJhbnNmb3JtT3BlcmF0aW9uLmgiCisjaW5jbHVkZSAiU2NhbGVUcmFuc2Zvcm1PcGVyYXRp
b24uaCIKKyNpbmNsdWRlICJTeXN0ZW1UaW1lLmgiCisjaW5jbHVkZSAiVHJhbnNsYXRlVHJhbnNm
b3JtT3BlcmF0aW9uLmgiCisjaW5jbHVkZSA8UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+CisjaW5j
bHVkZSA8bGltaXRzLmg+CisjaW5jbHVkZSA8b2JqYy9vYmpjLWF1dG8uaD4KKyNpbmNsdWRlIDx3
dGYvQ3VycmVudFRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgorCit1c2luZyBuYW1lc3BhY2Ugc3RkOwor
CisjZGVmaW5lIEhBVkVfTU9ERVJOX1FVQVJUWkNPUkUgKCFkZWZpbmVkKEJVSUxESU5HX09OX1RJ
R0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSkKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCisvLyBUaGUgdGhyZXNob2xkIHdpZHRoIG9yIGhlaWdodCBhYm92ZSB3aGljaCBhIHRp
bGVkIGxheWVyIHdpbGwgYmUgdXNlZC4gVGhpcyBzaG91bGQgYmUKKy8vIGxhcmdlIGVub3VnaCB0
byBhdm9pZCB0aWxlZCBsYXllcnMgZm9yIG1vc3QgR3JhcGhpY3NMYXllcnMsIGJ1dCBsZXNzIHRo
YW4gdGhlIE9wZW5HTAorLy8gdGV4dHVyZSBzaXplIGxpbWl0IG9uIGFsbCBzdXBwb3J0ZWQgaGFy
ZHdhcmUuCitzdGF0aWMgY29uc3QgaW50IGNNYXhQaXhlbERpbWVuc2lvbiA9IDIwMDA7CisKKy8v
IElmIHdlIHNlbmQgYSBkdXJhdGlvbiBvZiAwIHRvIENBLCB0aGVuIGl0IHdpbGwgdXNlIHRoZSBk
ZWZhdWx0IGR1cmF0aW9uCisvLyBvZiAyNTBtcy4gU28gc2VuZCBhIHZlcnkgc21hbGwgdmFsdWUg
aW5zdGVhZC4KK3N0YXRpYyBjb25zdCBmbG9hdCBjQW5pbWF0aW9uQWxtb3N0WmVyb0R1cmF0aW9u
ID0gMWUtM2Y7CisKKy8vIENBQ3VycmVudE1lZGlhVGltZSgpIGlzIGEgdGltZSBzaW5jZSBib290
LiBUaGVzZSBtZXRob2RzIGNvbnZlcnQgYmV0d2VlbiB0aGF0IGFuZAorLy8gV2ViQ29yZSB0aW1l
LCB3aGljaCBpcyBzeXN0ZW0gdGltZSAoVVRDKS4KK3N0YXRpYyBDRlRpbWVJbnRlcnZhbCBjdXJy
ZW50VGltZVRvTWVkaWFUaW1lKGRvdWJsZSB0KQoreworICAgIHJldHVybiBDQUN1cnJlbnRNZWRp
YVRpbWUoKSArIHQgLSBXVEY6OmN1cnJlbnRUaW1lKCk7Cit9CisKK3N0YXRpYyBib29sIGlzVHJh
bnNmb3JtVHlwZVRyYW5zZm9ybWF0aW9uTWF0cml4KFRyYW5zZm9ybU9wZXJhdGlvbjo6T3BlcmF0
aW9uVHlwZSB0cmFuc2Zvcm1UeXBlKQoreworICAgIHN3aXRjaCAodHJhbnNmb3JtVHlwZSkgewor
ICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpTS0VXX1g6CisgICAgY2FzZSBUcmFuc2Zvcm1P
cGVyYXRpb246OlNLRVdfWToKKyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0tFVzoKKyAg
ICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6TUFUUklYOgorICAgIGNhc2UgVHJhbnNmb3JtT3Bl
cmF0aW9uOjpST1RBVEVfM0Q6CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246Ok1BVFJJWF8z
RDoKKyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6UEVSU1BFQ1RJVkU6CisgICAgY2FzZSBU
cmFuc2Zvcm1PcGVyYXRpb246OklERU5USVRZOgorICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9u
OjpOT05FOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorfQorCitzdGF0aWMgYm9vbCBpc1RyYW5zZm9ybVR5cGVGbG9hdFBv
aW50M0QoVHJhbnNmb3JtT3BlcmF0aW9uOjpPcGVyYXRpb25UeXBlIHRyYW5zZm9ybVR5cGUpCit7
CisgICAgc3dpdGNoICh0cmFuc2Zvcm1UeXBlKSB7CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRp
b246OlNDQUxFOgorICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpTQ0FMRV8zRDoKKyAgICBj
YXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFOgorICAgIGNhc2UgVHJhbnNmb3JtT3Bl
cmF0aW9uOjpUUkFOU0xBVEVfM0Q6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGRlZmF1bHQ6
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK3N0YXRpYyBib29sIGlzVHJhbnNm
b3JtVHlwZU51bWJlcihUcmFuc2Zvcm1PcGVyYXRpb246Ok9wZXJhdGlvblR5cGUgdHJhbnNmb3Jt
VHlwZSkKK3sKKyAgICByZXR1cm4gIWlzVHJhbnNmb3JtVHlwZVRyYW5zZm9ybWF0aW9uTWF0cml4
KHRyYW5zZm9ybVR5cGUpICYmICFpc1RyYW5zZm9ybVR5cGVGbG9hdFBvaW50M0QodHJhbnNmb3Jt
VHlwZSk7Cit9CisKK3N0YXRpYyB2b2lkIGdldFRyYW5zZm9ybUZ1bmN0aW9uVmFsdWUoY29uc3Qg
VHJhbnNmb3JtT3BlcmF0aW9uKiB0cmFuc2Zvcm1PcCwgVHJhbnNmb3JtT3BlcmF0aW9uOjpPcGVy
YXRpb25UeXBlIHRyYW5zZm9ybVR5cGUsIGNvbnN0IEludFNpemUmIHNpemUsIGZsb2F0JiB2YWx1
ZSkKK3sKKyAgICBzd2l0Y2ggKHRyYW5zZm9ybVR5cGUpIHsKKyAgICBjYXNlIFRyYW5zZm9ybU9w
ZXJhdGlvbjo6Uk9UQVRFOgorICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpST1RBVEVfWDoK
KyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRFX1k6CisgICAgICAgIHZhbHVlID0g
dHJhbnNmb3JtT3AgPyBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KGRlZzJyYWQoc3RhdGljX2Nhc3Q8
Y29uc3QgUm90YXRlVHJhbnNmb3JtT3BlcmF0aW9uKj4odHJhbnNmb3JtT3ApLT5hbmdsZSgpKSkg
OiAwOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0NBTEVf
WDoKKyAgICAgICAgdmFsdWUgPSB0cmFuc2Zvcm1PcCA/IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQo
c3RhdGljX2Nhc3Q8Y29uc3QgU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24qPih0cmFuc2Zvcm1PcCkt
PngoKSkgOiAxOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6
U0NBTEVfWToKKyAgICAgICAgdmFsdWUgPSB0cmFuc2Zvcm1PcCA/IG5hcnJvd1ByZWNpc2lvblRv
RmxvYXQoc3RhdGljX2Nhc3Q8Y29uc3QgU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24qPih0cmFuc2Zv
cm1PcCktPnkoKSkgOiAxOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFRyYW5zZm9ybU9wZXJh
dGlvbjo6U0NBTEVfWjoKKyAgICAgICAgdmFsdWUgPSB0cmFuc2Zvcm1PcCA/IG5hcnJvd1ByZWNp
c2lvblRvRmxvYXQoc3RhdGljX2Nhc3Q8Y29uc3QgU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24qPih0
cmFuc2Zvcm1PcCktPnooKSkgOiAxOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFRyYW5zZm9y
bU9wZXJhdGlvbjo6VFJBTlNMQVRFX1g6CisgICAgICAgIHZhbHVlID0gdHJhbnNmb3JtT3AgPyBu
YXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHN0YXRpY19jYXN0PGNvbnN0IFRyYW5zbGF0ZVRyYW5zZm9y
bU9wZXJhdGlvbio+KHRyYW5zZm9ybU9wKS0+eChzaXplKSkgOiAwOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFX1k6CisgICAgICAgIHZhbHVl
ID0gdHJhbnNmb3JtT3AgPyBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHN0YXRpY19jYXN0PGNvbnN0
IFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbio+KHRyYW5zZm9ybU9wKS0+eShzaXplKSkgOiAw
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRF
X1o6CisgICAgICAgIHZhbHVlID0gdHJhbnNmb3JtT3AgPyBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0
KHN0YXRpY19jYXN0PGNvbnN0IFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbio+KHRyYW5zZm9y
bU9wKS0+eihzaXplKSkgOiAwOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAg
ICBicmVhazsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIGdldFRyYW5zZm9ybUZ1bmN0aW9uVmFs
dWUoY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9uKiB0cmFuc2Zvcm1PcCwgVHJhbnNmb3JtT3BlcmF0
aW9uOjpPcGVyYXRpb25UeXBlIHRyYW5zZm9ybVR5cGUsIGNvbnN0IEludFNpemUmIHNpemUsIEZs
b2F0UG9pbnQzRCYgdmFsdWUpCit7CisgICAgc3dpdGNoICh0cmFuc2Zvcm1UeXBlKSB7CisgICAg
Y2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlNDQUxFOgorICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0
aW9uOjpTQ0FMRV8zRDoKKyAgICAgICAgdmFsdWUuc2V0WCh0cmFuc2Zvcm1PcCA/IG5hcnJvd1By
ZWNpc2lvblRvRmxvYXQoc3RhdGljX2Nhc3Q8Y29uc3QgU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24q
Pih0cmFuc2Zvcm1PcCktPngoKSkgOiAxKTsKKyAgICAgICAgdmFsdWUuc2V0WSh0cmFuc2Zvcm1P
cCA/IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoc3RhdGljX2Nhc3Q8Y29uc3QgU2NhbGVUcmFuc2Zv
cm1PcGVyYXRpb24qPih0cmFuc2Zvcm1PcCktPnkoKSkgOiAxKTsKKyAgICAgICAgdmFsdWUuc2V0
Wih0cmFuc2Zvcm1PcCA/IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoc3RhdGljX2Nhc3Q8Y29uc3Qg
U2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24qPih0cmFuc2Zvcm1PcCktPnooKSkgOiAxKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURToKKyAgICBj
YXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFXzNEOgorICAgICAgICB2YWx1ZS5zZXRY
KHRyYW5zZm9ybU9wID8gbmFycm93UHJlY2lzaW9uVG9GbG9hdChzdGF0aWNfY2FzdDxjb25zdCBU
cmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24qPih0cmFuc2Zvcm1PcCktPngoc2l6ZSkpIDogMCk7
CisgICAgICAgIHZhbHVlLnNldFkodHJhbnNmb3JtT3AgPyBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0
KHN0YXRpY19jYXN0PGNvbnN0IFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbio+KHRyYW5zZm9y
bU9wKS0+eShzaXplKSkgOiAwKTsKKyAgICAgICAgdmFsdWUuc2V0Wih0cmFuc2Zvcm1PcCA/IG5h
cnJvd1ByZWNpc2lvblRvRmxvYXQoc3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNsYXRlVHJhbnNmb3Jt
T3BlcmF0aW9uKj4odHJhbnNmb3JtT3ApLT56KHNpemUpKSA6IDApOworICAgICAgICBicmVhazsK
KyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIGdl
dFRyYW5zZm9ybUZ1bmN0aW9uVmFsdWUoY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9uKiB0cmFuc2Zv
cm1PcCwgVHJhbnNmb3JtT3BlcmF0aW9uOjpPcGVyYXRpb25UeXBlIHRyYW5zZm9ybVR5cGUsIGNv
bnN0IEludFNpemUmIHNpemUsIFRyYW5zZm9ybWF0aW9uTWF0cml4JiB2YWx1ZSkKK3sKKyAgICBz
d2l0Y2ggKHRyYW5zZm9ybVR5cGUpIHsKKyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0tF
V19YOgorICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpTS0VXX1k6CisgICAgY2FzZSBUcmFu
c2Zvcm1PcGVyYXRpb246OlNLRVc6CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246Ok1BVFJJ
WDoKKyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRFXzNEOgorICAgIGNhc2UgVHJh
bnNmb3JtT3BlcmF0aW9uOjpNQVRSSVhfM0Q6CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246
OlBFUlNQRUNUSVZFOgorICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpJREVOVElUWToKKyAg
ICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6Tk9ORToKKyAgICAgICAgaWYgKHRyYW5zZm9ybU9w
KQorICAgICAgICAgICAgdHJhbnNmb3JtT3AtPmFwcGx5KHZhbHVlLCBzaXplKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgdmFsdWUubWFrZUlkZW50aXR5KCk7CisgICAgICAgIGJyZWFrOwor
ICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworI2lmIEhBVkVfTU9ERVJO
X1FVQVJUWkNPUkUKK3N0YXRpYyBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpWYWx1ZUZ1bmN0aW9uVHlw
ZSBnZXRWYWx1ZUZ1bmN0aW9uTmFtZUZvclRyYW5zZm9ybU9wZXJhdGlvbihUcmFuc2Zvcm1PcGVy
YXRpb246Ok9wZXJhdGlvblR5cGUgdHJhbnNmb3JtVHlwZSkKK3sKKyAgICAvLyBVc2UgbGl0ZXJh
bCBzdHJpbmdzIHRvIGF2b2lkIGxpbmstdGltZSBkZXBlbmRlbmN5IG9uIHRob3NlIHN5bWJvbHMu
CisgICAgc3dpdGNoICh0cmFuc2Zvcm1UeXBlKSB7CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRp
b246OlJPVEFURV9YOgorICAgICAgICByZXR1cm4gUGxhdGZvcm1DQUFuaW1hdGlvbjo6Um90YXRl
WDsKKyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRFX1k6CisgICAgICAgIHJldHVy
biBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpSb3RhdGVZOworICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0
aW9uOjpST1RBVEU6CisgICAgICAgIHJldHVybiBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpSb3RhdGVa
OworICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpTQ0FMRV9YOgorICAgICAgICByZXR1cm4g
UGxhdGZvcm1DQUFuaW1hdGlvbjo6U2NhbGVYOworICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9u
OjpTQ0FMRV9ZOgorICAgICAgICByZXR1cm4gUGxhdGZvcm1DQUFuaW1hdGlvbjo6U2NhbGVZOwor
ICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpTQ0FMRV9aOgorICAgICAgICByZXR1cm4gUGxh
dGZvcm1DQUFuaW1hdGlvbjo6U2NhbGVaOworICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpU
UkFOU0xBVEVfWDoKKyAgICAgICAgcmV0dXJuIFBsYXRmb3JtQ0FBbmltYXRpb246OlRyYW5zbGF0
ZVg7CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURV9ZOgorICAgICAgICBy
ZXR1cm4gUGxhdGZvcm1DQUFuaW1hdGlvbjo6VHJhbnNsYXRlWTsKKyAgICBjYXNlIFRyYW5zZm9y
bU9wZXJhdGlvbjo6VFJBTlNMQVRFX1o6CisgICAgICAgIHJldHVybiBQbGF0Zm9ybUNBQW5pbWF0
aW9uOjpUcmFuc2xhdGVaOworICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpTQ0FMRToKKyAg
ICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0NBTEVfM0Q6CisgICAgICAgIHJldHVybiBQbGF0
Zm9ybUNBQW5pbWF0aW9uOjpTY2FsZTsKKyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJB
TlNMQVRFOgorICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfM0Q6CisgICAg
ICAgIHJldHVybiBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpUcmFuc2xhdGU7CisgICAgZGVmYXVsdDoK
KyAgICAgICAgcmV0dXJuIFBsYXRmb3JtQ0FBbmltYXRpb246Ok5vVmFsdWVGdW5jdGlvbjsKKyAg
ICB9Cit9CisjZW5kaWYKKworc3RhdGljIFN0cmluZyBwcm9wZXJ0eUlkVG9TdHJpbmcoQW5pbWF0
ZWRQcm9wZXJ0eUlEIHByb3BlcnR5KQoreworICAgIHN3aXRjaCAocHJvcGVydHkpIHsKKyAgICBj
YXNlIEFuaW1hdGVkUHJvcGVydHlXZWJraXRUcmFuc2Zvcm06CisgICAgICAgIHJldHVybiAidHJh
bnNmb3JtIjsKKyAgICBjYXNlIEFuaW1hdGVkUHJvcGVydHlPcGFjaXR5OgorICAgICAgICByZXR1
cm4gIm9wYWNpdHkiOworICAgIGNhc2UgQW5pbWF0ZWRQcm9wZXJ0eUJhY2tncm91bmRDb2xvcjoK
KyAgICAgICAgcmV0dXJuICJiYWNrZ3JvdW5kQ29sb3IiOworICAgIGNhc2UgQW5pbWF0ZWRQcm9w
ZXJ0eUludmFsaWQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKyAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gIiI7Cit9CisKK3N0YXRpYyBTdHJpbmcg
YW5pbWF0aW9uSWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIEFuaW1hdGVk
UHJvcGVydHlJRCBwcm9wZXJ0eSwgaW50IGluZGV4KQoreworICAgIHJldHVybiBtYWtlU3RyaW5n
KGFuaW1hdGlvbk5hbWUsICdfJywgU3RyaW5nOjpudW1iZXIocHJvcGVydHkpLCAnXycsIFN0cmlu
Zzo6bnVtYmVyKGluZGV4KSk7Cit9CisKK3N0YXRpYyBib29sIGFuaW1hdGlvbkhhc1N0ZXBzVGlt
aW5nRnVuY3Rpb24oY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCwgY29uc3QgQW5p
bWF0aW9uKiBhbmltKQoreworICAgIGlmIChhbmltLT50aW1pbmdGdW5jdGlvbigpLT5pc1N0ZXBz
VGltaW5nRnVuY3Rpb24oKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgCisgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IHZhbHVlTGlzdC5zaXplKCk7ICsraSkgeworICAgICAgICBjb25z
dCBUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb24gPSB2YWx1ZUxpc3QuYXQoaSktPnRpbWlu
Z0Z1bmN0aW9uKCk7CisgICAgICAgIGlmICh0aW1pbmdGdW5jdGlvbiAmJiB0aW1pbmdGdW5jdGlv
bi0+aXNTdGVwc1RpbWluZ0Z1bmN0aW9uKCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK1Bhc3NPd25QdHI8R3JhcGhpY3NMYXllcj4g
R3JhcGhpY3NMYXllcjo6Y3JlYXRlKEdyYXBoaWNzTGF5ZXJDbGllbnQqIGNsaWVudCkKK3sKKyAg
ICByZXR1cm4gbmV3IEdyYXBoaWNzTGF5ZXJDQShjbGllbnQpOworfQorCitHcmFwaGljc0xheWVy
Q0E6OkdyYXBoaWNzTGF5ZXJDQShHcmFwaGljc0xheWVyQ2xpZW50KiBjbGllbnQpCisgICAgOiBH
cmFwaGljc0xheWVyKGNsaWVudCkKKyAgICAsIG1fY29udGVudHNMYXllclB1cnBvc2UoTm9Db250
ZW50c0xheWVyKQorICAgICwgbV9jb250ZW50c0xheWVySGFzQmFja2dyb3VuZENvbG9yKGZhbHNl
KQorICAgICwgbV91bmNvbW1pdHRlZENoYW5nZXMoTm9DaGFuZ2UpCit7CisgICAgbV9sYXllciA9
IFBsYXRmb3JtQ0FMYXllcjo6Y3JlYXRlKFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlV2ViTGF5
ZXIsIHRoaXMpOworCisjaWYgIUhBVkVfTU9ERVJOX1FVQVJUWkNPUkUKKyAgICBzZXRDb250ZW50
c09yaWVudGF0aW9uKGRlZmF1bHRDb250ZW50c09yaWVudGF0aW9uKCkpOworI2VuZGlmCisKKyAg
ICB1cGRhdGVEZWJ1Z0luZGljYXRvcnMoKTsKK30KKworR3JhcGhpY3NMYXllckNBOjp+R3JhcGhp
Y3NMYXllckNBKCkKK3sKKyAgICAvLyBXZSByZWxlYXNlIG91ciByZWZlcmVuY2VzIHRvIHRoZSBQ
bGF0Zm9ybUNBTGF5ZXJzIGhlcmUsIGJ1dCBkbyBub3QgYWN0aXZlbHkgdW5wYXJlbnQgdGhlbSwK
KyAgICAvLyBzaW5jZSB0aGF0IHdpbGwgY2F1c2UgYSBjb21taXQgYW5kIGJyZWFrIG91ciBiYXRj
aGVkIGNvbW1pdCBtb2RlbC4gVGhlIGxheWVycyB3aWxsCisgICAgLy8gZ2V0IHJlbGVhc2VkIHdo
ZW4gdGhlIHJvb3Rtb3N0IG1vZGlmaWVkIEdyYXBoaWNzTGF5ZXJDQSByZWJ1aWxkcyBpdHMgY2hp
bGQgbGF5ZXJzLgorICAgIAorICAgIC8vIENsZWFuIHVwIHRoZSBsYXllci4KKyAgICBpZiAobV9s
YXllcikKKyAgICAgICAgbV9sYXllci0+c2V0T3duZXIoMCk7CisgICAgCisgICAgaWYgKG1fY29u
dGVudHNMYXllcikKKyAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRPd25lcigwKTsKKyAgICAg
ICAgCisgICAgaWYgKG1fc3RydWN0dXJhbExheWVyKQorICAgICAgICBtX3N0cnVjdHVyYWxMYXll
ci0+c2V0T3duZXIoMCk7CisgICAgCisgICAgcmVtb3ZlQ2xvbmVMYXllcnMoKTsKK30KKwordm9p
ZCBHcmFwaGljc0xheWVyQ0E6OnNldE5hbWUoY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIFN0
cmluZyBsb25nTmFtZSA9IFN0cmluZzo6Zm9ybWF0KCJDQUxheWVyKCVwKSBHcmFwaGljc0xheWVy
KCVwKSAiLCBtX2xheWVyLmdldCgpLCB0aGlzKSArIG5hbWU7CisgICAgR3JhcGhpY3NMYXllcjo6
c2V0TmFtZShsb25nTmFtZSk7CisgICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKE5hbWVDaGFu
Z2VkKTsKK30KKworUGxhdGZvcm1MYXllciogR3JhcGhpY3NMYXllckNBOjpwbGF0Zm9ybUxheWVy
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gcHJpbWFyeUxheWVyKCktPnBsYXRmb3JtTGF5ZXIoKTsK
K30KKworYm9vbCBHcmFwaGljc0xheWVyQ0E6OnNldENoaWxkcmVuKGNvbnN0IFZlY3RvcjxHcmFw
aGljc0xheWVyKj4mIGNoaWxkcmVuKQoreworICAgIGJvb2wgY2hpbGRyZW5DaGFuZ2VkID0gR3Jh
cGhpY3NMYXllcjo6c2V0Q2hpbGRyZW4oY2hpbGRyZW4pOworICAgIGlmIChjaGlsZHJlbkNoYW5n
ZWQpCisgICAgICAgIG5vdGVTdWJsYXllcnNDaGFuZ2VkKCk7CisgICAgCisgICAgcmV0dXJuIGNo
aWxkcmVuQ2hhbmdlZDsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OmFkZENoaWxkKEdyYXBo
aWNzTGF5ZXIqIGNoaWxkTGF5ZXIpCit7CisgICAgR3JhcGhpY3NMYXllcjo6YWRkQ2hpbGQoY2hp
bGRMYXllcik7CisgICAgbm90ZVN1YmxheWVyc0NoYW5nZWQoKTsKK30KKwordm9pZCBHcmFwaGlj
c0xheWVyQ0E6OmFkZENoaWxkQXRJbmRleChHcmFwaGljc0xheWVyKiBjaGlsZExheWVyLCBpbnQg
aW5kZXgpCit7CisgICAgR3JhcGhpY3NMYXllcjo6YWRkQ2hpbGRBdEluZGV4KGNoaWxkTGF5ZXIs
IGluZGV4KTsKKyAgICBub3RlU3VibGF5ZXJzQ2hhbmdlZCgpOworfQorCit2b2lkIEdyYXBoaWNz
TGF5ZXJDQTo6YWRkQ2hpbGRCZWxvdyhHcmFwaGljc0xheWVyKiBjaGlsZExheWVyLCBHcmFwaGlj
c0xheWVyKiBzaWJsaW5nKQoreworICAgIEdyYXBoaWNzTGF5ZXI6OmFkZENoaWxkQmVsb3coY2hp
bGRMYXllciwgc2libGluZyk7CisgICAgbm90ZVN1YmxheWVyc0NoYW5nZWQoKTsKK30KKwordm9p
ZCBHcmFwaGljc0xheWVyQ0E6OmFkZENoaWxkQWJvdmUoR3JhcGhpY3NMYXllciogY2hpbGRMYXll
ciwgR3JhcGhpY3NMYXllciogc2libGluZykKK3sKKyAgICBHcmFwaGljc0xheWVyOjphZGRDaGls
ZEFib3ZlKGNoaWxkTGF5ZXIsIHNpYmxpbmcpOworICAgIG5vdGVTdWJsYXllcnNDaGFuZ2VkKCk7
Cit9CisKK2Jvb2wgR3JhcGhpY3NMYXllckNBOjpyZXBsYWNlQ2hpbGQoR3JhcGhpY3NMYXllciog
b2xkQ2hpbGQsIEdyYXBoaWNzTGF5ZXIqIG5ld0NoaWxkKQoreworICAgIGlmIChHcmFwaGljc0xh
eWVyOjpyZXBsYWNlQ2hpbGQob2xkQ2hpbGQsIG5ld0NoaWxkKSkgeworICAgICAgICBub3RlU3Vi
bGF5ZXJzQ2hhbmdlZCgpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJu
IGZhbHNlOworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6cmVtb3ZlRnJvbVBhcmVudCgpCit7
CisgICAgaWYgKG1fcGFyZW50KQorICAgICAgICBzdGF0aWNfY2FzdDxHcmFwaGljc0xheWVyQ0Eq
PihtX3BhcmVudCktPm5vdGVTdWJsYXllcnNDaGFuZ2VkKCk7CisgICAgR3JhcGhpY3NMYXllcjo6
cmVtb3ZlRnJvbVBhcmVudCgpOworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0TWFza0xh
eWVyKEdyYXBoaWNzTGF5ZXIqIGxheWVyKQoreworICAgIGlmIChsYXllciA9PSBtX21hc2tMYXll
cikKKyAgICAgICAgcmV0dXJuOworCisgICAgR3JhcGhpY3NMYXllcjo6c2V0TWFza0xheWVyKGxh
eWVyKTsKKyAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoTWFza0xheWVyQ2hhbmdlZCk7CisK
KyAgICBwcm9wYWdhdGVMYXllckNoYW5nZVRvUmVwbGljYXMoKTsKKyAgICAKKyAgICBpZiAobV9y
ZXBsaWNhdGVkTGF5ZXIpCisgICAgICAgIHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXJDQSo+KG1f
cmVwbGljYXRlZExheWVyKS0+cHJvcGFnYXRlTGF5ZXJDaGFuZ2VUb1JlcGxpY2FzKCk7Cit9CisK
K3ZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRSZXBsaWNhdGVkTGF5ZXIoR3JhcGhpY3NMYXllciog
bGF5ZXIpCit7CisgICAgaWYgKGxheWVyID09IG1fcmVwbGljYXRlZExheWVyKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBHcmFwaGljc0xheWVyOjpzZXRSZXBsaWNhdGVkTGF5ZXIobGF5ZXIpOwor
ICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChSZXBsaWNhdGVkTGF5ZXJDaGFuZ2VkKTsKK30K
Kwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldFJlcGxpY2F0ZWRCeUxheWVyKEdyYXBoaWNzTGF5
ZXIqIGxheWVyKQoreworICAgIGlmIChsYXllciA9PSBtX3JlcGxpY2FMYXllcikKKyAgICAgICAg
cmV0dXJuOworCisgICAgR3JhcGhpY3NMYXllcjo6c2V0UmVwbGljYXRlZEJ5TGF5ZXIobGF5ZXIp
OworICAgIG5vdGVTdWJsYXllcnNDaGFuZ2VkKCk7CisgICAgbm90ZUxheWVyUHJvcGVydHlDaGFu
Z2VkKFJlcGxpY2F0ZWRMYXllckNoYW5nZWQpOworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6
c2V0UG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYgcG9pbnQpCit7CisgICAgaWYgKHBvaW50ID09
IG1fcG9zaXRpb24pCisgICAgICAgIHJldHVybjsKKworICAgIEdyYXBoaWNzTGF5ZXI6OnNldFBv
c2l0aW9uKHBvaW50KTsKKyAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoUG9zaXRpb25DaGFu
Z2VkKTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldEFuY2hvclBvaW50KGNvbnN0IEZs
b2F0UG9pbnQzRCYgcG9pbnQpCit7CisgICAgaWYgKHBvaW50ID09IG1fYW5jaG9yUG9pbnQpCisg
ICAgICAgIHJldHVybjsKKworICAgIEdyYXBoaWNzTGF5ZXI6OnNldEFuY2hvclBvaW50KHBvaW50
KTsKKyAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoQW5jaG9yUG9pbnRDaGFuZ2VkKTsKK30K
Kwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldFNpemUoY29uc3QgRmxvYXRTaXplJiBzaXplKQor
eworICAgIGlmIChzaXplID09IG1fc2l6ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgR3JhcGhp
Y3NMYXllcjo6c2V0U2l6ZShzaXplKTsKKyAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoU2l6
ZUNoYW5nZWQpOworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0VHJhbnNmb3JtKGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0KQoreworICAgIGlmICh0ID09IG1fdHJhbnNmb3JtKQor
ICAgICAgICByZXR1cm47CisKKyAgICBHcmFwaGljc0xheWVyOjpzZXRUcmFuc2Zvcm0odCk7Cisg
ICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKFRyYW5zZm9ybUNoYW5nZWQpOworfQorCit2b2lk
IEdyYXBoaWNzTGF5ZXJDQTo6c2V0Q2hpbGRyZW5UcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRp
b25NYXRyaXgmIHQpCit7CisgICAgaWYgKHQgPT0gbV9jaGlsZHJlblRyYW5zZm9ybSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgR3JhcGhpY3NMYXllcjo6c2V0Q2hpbGRyZW5UcmFuc2Zvcm0odCk7
CisgICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKENoaWxkcmVuVHJhbnNmb3JtQ2hhbmdlZCk7
Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjptb3ZlT3JDb3B5TGF5ZXJBbmltYXRpb24oTW92
ZU9yQ29weSBvcGVyYXRpb24sIGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uSWRlbnRpZmllciwgUGxh
dGZvcm1DQUxheWVyICpmcm9tTGF5ZXIsIFBsYXRmb3JtQ0FMYXllciAqdG9MYXllcikKK3sKKyAg
ICBSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gYW5pbSA9IGZyb21MYXllci0+YW5pbWF0aW9u
Rm9yS2V5KGFuaW1hdGlvbklkZW50aWZpZXIpOworICAgIGlmICghYW5pbSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgc3dpdGNoIChvcGVyYXRpb24pIHsKKyAgICBjYXNlIE1vdmU6CisgICAgICAg
IGZyb21MYXllci0+cmVtb3ZlQW5pbWF0aW9uRm9yS2V5KGFuaW1hdGlvbklkZW50aWZpZXIpOwor
ICAgICAgICB0b0xheWVyLT5hZGRBbmltYXRpb25Gb3JLZXkoYW5pbWF0aW9uSWRlbnRpZmllciwg
YW5pbS5nZXQoKSk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBDb3B5OgorICAgICAgICB0
b0xheWVyLT5hZGRBbmltYXRpb25Gb3JLZXkoYW5pbWF0aW9uSWRlbnRpZmllciwgYW5pbS5nZXQo
KSk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6Om1v
dmVPckNvcHlBbmltYXRpb25zRm9yUHJvcGVydHkoTW92ZU9yQ29weSBvcGVyYXRpb24sIEFuaW1h
dGVkUHJvcGVydHlJRCBwcm9wZXJ0eSwgUGxhdGZvcm1DQUxheWVyICpmcm9tTGF5ZXIsIFBsYXRm
b3JtQ0FMYXllciAqdG9MYXllcikKK3sKKyAgICAvLyBMb29rIGZvciBydW5uaW5nIGFuaW1hdGlv
bnMgYWZmZWN0aW5nIHRoaXMgcHJvcGVydHkuCisgICAgQW5pbWF0aW9uc01hcDo6Y29uc3RfaXRl
cmF0b3IgZW5kID0gbV9ydW5uaW5nQW5pbWF0aW9ucy5lbmQoKTsKKyAgICBmb3IgKEFuaW1hdGlv
bnNNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9ydW5uaW5nQW5pbWF0aW9ucy5iZWdpbigpOyBp
dCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgY29uc3QgVmVjdG9yPExheWVyUHJvcGVydHlBbmlt
YXRpb24+JiBwcm9wZXJ0eUFuaW1hdGlvbnMgPSBpdC0+c2Vjb25kOworICAgICAgICBzaXplX3Qg
bnVtQW5pbWF0aW9ucyA9IHByb3BlcnR5QW5pbWF0aW9ucy5zaXplKCk7CisgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbnVtQW5pbWF0aW9uczsgKytpKSB7CisgICAgICAgICAgICBjb25z
dCBMYXllclByb3BlcnR5QW5pbWF0aW9uJiBjdXJyQW5pbWF0aW9uID0gcHJvcGVydHlBbmltYXRp
b25zW2ldOworICAgICAgICAgICAgaWYgKGN1cnJBbmltYXRpb24ubV9wcm9wZXJ0eSA9PSBwcm9w
ZXJ0eSkKKyAgICAgICAgICAgICAgICBtb3ZlT3JDb3B5TGF5ZXJBbmltYXRpb24ob3BlcmF0aW9u
LCBhbmltYXRpb25JZGVudGlmaWVyKGN1cnJBbmltYXRpb24ubV9uYW1lLCBjdXJyQW5pbWF0aW9u
Lm1fcHJvcGVydHksIGN1cnJBbmltYXRpb24ubV9pbmRleCksIGZyb21MYXllciwgdG9MYXllcik7
CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRQcmVzZXJ2
ZXMzRChib29sIHByZXNlcnZlczNEKQoreworICAgIGlmIChwcmVzZXJ2ZXMzRCA9PSBtX3ByZXNl
cnZlczNEKQorICAgICAgICByZXR1cm47CisKKyAgICBHcmFwaGljc0xheWVyOjpzZXRQcmVzZXJ2
ZXMzRChwcmVzZXJ2ZXMzRCk7CisgICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKFByZXNlcnZl
czNEQ2hhbmdlZCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRNYXNrc1RvQm91bmRz
KGJvb2wgbWFza3NUb0JvdW5kcykKK3sKKyAgICBpZiAobWFza3NUb0JvdW5kcyA9PSBtX21hc2tz
VG9Cb3VuZHMpCisgICAgICAgIHJldHVybjsKKworICAgIEdyYXBoaWNzTGF5ZXI6OnNldE1hc2tz
VG9Cb3VuZHMobWFza3NUb0JvdW5kcyk7CisgICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKE1h
c2tzVG9Cb3VuZHNDaGFuZ2VkKTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldERyYXdz
Q29udGVudChib29sIGRyYXdzQ29udGVudCkKK3sKKyAgICBpZiAoZHJhd3NDb250ZW50ID09IG1f
ZHJhd3NDb250ZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBHcmFwaGljc0xheWVyOjpzZXRE
cmF3c0NvbnRlbnQoZHJhd3NDb250ZW50KTsKKyAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQo
RHJhd3NDb250ZW50Q2hhbmdlZCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRCYWNr
Z3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQoreworICAgIGlmIChtX2JhY2tncm91bmRD
b2xvclNldCAmJiBtX2JhY2tncm91bmRDb2xvciA9PSBjb2xvcikKKyAgICAgICAgcmV0dXJuOwor
CisgICAgR3JhcGhpY3NMYXllcjo6c2V0QmFja2dyb3VuZENvbG9yKGNvbG9yKTsKKworICAgIG1f
Y29udGVudHNMYXllckhhc0JhY2tncm91bmRDb2xvciA9IHRydWU7CisgICAgbm90ZUxheWVyUHJv
cGVydHlDaGFuZ2VkKEJhY2tncm91bmRDb2xvckNoYW5nZWQpOworfQorCit2b2lkIEdyYXBoaWNz
TGF5ZXJDQTo6Y2xlYXJCYWNrZ3JvdW5kQ29sb3IoKQoreworICAgIGlmICghbV9iYWNrZ3JvdW5k
Q29sb3JTZXQpCisgICAgICAgIHJldHVybjsKKworICAgIEdyYXBoaWNzTGF5ZXI6OmNsZWFyQmFj
a2dyb3VuZENvbG9yKCk7CisgICAgbV9jb250ZW50c0xheWVySGFzQmFja2dyb3VuZENvbG9yID0g
ZmFsc2U7CisgICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKEJhY2tncm91bmRDb2xvckNoYW5n
ZWQpOworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0Q29udGVudHNPcGFxdWUoYm9vbCBv
cGFxdWUpCit7CisgICAgaWYgKG1fY29udGVudHNPcGFxdWUgPT0gb3BhcXVlKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBHcmFwaGljc0xheWVyOjpzZXRDb250ZW50c09wYXF1ZShvcGFxdWUpOwor
ICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChDb250ZW50c09wYXF1ZUNoYW5nZWQpOworfQor
Cit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0QmFja2ZhY2VWaXNpYmlsaXR5KGJvb2wgdmlzaWJs
ZSkKK3sKKyAgICBpZiAobV9iYWNrZmFjZVZpc2liaWxpdHkgPT0gdmlzaWJsZSkKKyAgICAgICAg
cmV0dXJuOworICAgIAorICAgIEdyYXBoaWNzTGF5ZXI6OnNldEJhY2tmYWNlVmlzaWJpbGl0eSh2
aXNpYmxlKTsKKyAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoQmFja2ZhY2VWaXNpYmlsaXR5
Q2hhbmdlZCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRPcGFjaXR5KGZsb2F0IG9w
YWNpdHkpCit7CisgICAgZmxvYXQgY2xhbXBlZE9wYWNpdHkgPSBtYXgoMC4wZiwgbWluKG9wYWNp
dHksIDEuMGYpKTsKKworICAgIGlmIChjbGFtcGVkT3BhY2l0eSA9PSBtX29wYWNpdHkpCisgICAg
ICAgIHJldHVybjsKKworICAgIEdyYXBoaWNzTGF5ZXI6OnNldE9wYWNpdHkoY2xhbXBlZE9wYWNp
dHkpOworICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChPcGFjaXR5Q2hhbmdlZCk7Cit9CisK
K3ZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXROZWVkc0Rpc3BsYXkoKQoreworICAgIEZsb2F0UmVj
dCBodWdlUmVjdCgtbnVtZXJpY19saW1pdHM8ZmxvYXQ+OjptYXgoKSAvIDIsIC1udW1lcmljX2xp
bWl0czxmbG9hdD46Om1heCgpIC8gMiwKKyAgICAgICAgICAgICAgICAgICAgICAgbnVtZXJpY19s
aW1pdHM8ZmxvYXQ+OjptYXgoKSwgbnVtZXJpY19saW1pdHM8ZmxvYXQ+OjptYXgoKSk7CisKKyAg
ICBzZXROZWVkc0Rpc3BsYXlJblJlY3QoaHVnZVJlY3QpOworfQorCit2b2lkIEdyYXBoaWNzTGF5
ZXJDQTo6c2V0TmVlZHNEaXNwbGF5SW5SZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKK3sKKyAg
ICBpZiAoIWRyYXdzQ29udGVudCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBjb25zdCBzaXpl
X3QgbWF4RGlydHlSZWN0cyA9IDMyOworICAgIAorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bV9kaXJ0eVJlY3RzLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmIChtX2RpcnR5UmVjdHNbaV0u
Y29udGFpbnMocmVjdCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGlm
IChtX2RpcnR5UmVjdHMuc2l6ZSgpIDwgbWF4RGlydHlSZWN0cykKKyAgICAgICAgbV9kaXJ0eVJl
Y3RzLmFwcGVuZChyZWN0KTsKKyAgICBlbHNlCisgICAgICAgIG1fZGlydHlSZWN0c1swXS51bml0
ZShyZWN0KTsKKworICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChEaXJ0eVJlY3RzQ2hhbmdl
ZCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRDb250ZW50c05lZWRzRGlzcGxheSgp
Cit7CisgICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKENvbnRlbnRzTmVlZHNEaXNwbGF5KTsK
K30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRzUmVjdChjb25zdCBJbnRSZWN0
JiByZWN0KQoreworICAgIGlmIChyZWN0ID09IG1fY29udGVudHNSZWN0KQorICAgICAgICByZXR1
cm47CisKKyAgICBHcmFwaGljc0xheWVyOjpzZXRDb250ZW50c1JlY3QocmVjdCk7CisgICAgbm90
ZUxheWVyUHJvcGVydHlDaGFuZ2VkKENvbnRlbnRzUmVjdENoYW5nZWQpOworfQorCitib29sIEdy
YXBoaWNzTGF5ZXJDQTo6YWRkQW5pbWF0aW9uKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1
ZUxpc3QsIGNvbnN0IEludFNpemUmIGJveFNpemUsIGNvbnN0IEFuaW1hdGlvbiogYW5pbSwgY29u
c3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBkb3VibGUgdGltZU9mZnNldCkKK3sKKyAgICBBU1NF
UlQoIWFuaW1hdGlvbk5hbWUuaXNFbXB0eSgpKTsKKworICAgIGlmICghYW5pbSB8fCBhbmltLT5p
c0VtcHR5T3JaZXJvRHVyYXRpb24oKSB8fCB2YWx1ZUxpc3Quc2l6ZSgpIDwgMikKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisjaWYgIUhBVkVfTU9ERVJOX1FVQVJUWkNPUkUKKyAgICAvLyBPbGRl
ciB2ZXJzaW9ucyBvZiBRdWFydHpDb3JlIGRvIG5vdCBoYW5kbGUgb3BhY2l0eSBpbiB0cmFuc2Zv
cm0gbGF5ZXJzIHByb3Blcmx5LCBzbyB3ZSB3aWxsCisgICAgLy8gYWx3YXlzIGRvIHNvZnR3YXJl
IGFuaW1hdGlvbiBpbiB0aGF0IGNhc2UuCisgICAgaWYgKHZhbHVlTGlzdC5wcm9wZXJ0eSgpID09
IEFuaW1hdGVkUHJvcGVydHlPcGFjaXR5KQorICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYK
KworICAgIC8vIENvcmVBbmltYXRpb24gZG9lcyBub3QgaGFuZGxlIHRoZSBzdGVwcygpIHRpbWlu
ZyBmdW5jdGlvbi4gRmFsbCBiYWNrCisgICAgLy8gdG8gc29mdHdhcmUgYW5pbWF0aW9uIGluIHRo
YXQgY2FzZS4KKyAgICBpZiAoYW5pbWF0aW9uSGFzU3RlcHNUaW1pbmdGdW5jdGlvbih2YWx1ZUxp
c3QsIGFuaW0pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBib29sIGNyZWF0ZWRBbmlt
YXRpb25zID0gZmFsc2U7CisgICAgaWYgKHZhbHVlTGlzdC5wcm9wZXJ0eSgpID09IEFuaW1hdGVk
UHJvcGVydHlXZWJraXRUcmFuc2Zvcm0pCisgICAgICAgIGNyZWF0ZWRBbmltYXRpb25zID0gY3Jl
YXRlVHJhbnNmb3JtQW5pbWF0aW9uc0Zyb21LZXlmcmFtZXModmFsdWVMaXN0LCBhbmltLCBhbmlt
YXRpb25OYW1lLCB0aW1lT2Zmc2V0LCBib3hTaXplKTsKKyAgICBlbHNlCisgICAgICAgIGNyZWF0
ZWRBbmltYXRpb25zID0gY3JlYXRlQW5pbWF0aW9uRnJvbUtleWZyYW1lcyh2YWx1ZUxpc3QsIGFu
aW0sIGFuaW1hdGlvbk5hbWUsIHRpbWVPZmZzZXQpOworCisgICAgaWYgKGNyZWF0ZWRBbmltYXRp
b25zKQorICAgICAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoQW5pbWF0aW9uQ2hhbmdlZCk7
CisgICAgICAgIAorICAgIHJldHVybiBjcmVhdGVkQW5pbWF0aW9uczsKK30KKwordm9pZCBHcmFw
aGljc0xheWVyQ0E6OnBhdXNlQW5pbWF0aW9uKGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSwg
ZG91YmxlIHRpbWVPZmZzZXQpCit7CisgICAgaWYgKCFhbmltYXRpb25Jc1J1bm5pbmcoYW5pbWF0
aW9uTmFtZSkpCisgICAgICAgIHJldHVybjsKKworICAgIEFuaW1hdGlvbnNUb1Byb2Nlc3NNYXA6
Oml0ZXJhdG9yIGl0ID0gbV9hbmltYXRpb25zVG9Qcm9jZXNzLmZpbmQoYW5pbWF0aW9uTmFtZSk7
CisgICAgaWYgKGl0ICE9IG1fYW5pbWF0aW9uc1RvUHJvY2Vzcy5lbmQoKSkgeworICAgICAgICBB
bmltYXRpb25Qcm9jZXNzaW5nQWN0aW9uJiBwcm9jZXNzaW5nSW5mbyA9IGl0LT5zZWNvbmQ7Cisg
ICAgICAgIC8vIElmIGFuIGFuaW1hdGlvbiBpcyBzY2hlZHVsZWQgdG8gYmUgcmVtb3ZlZCwgZG9u
J3QgY2hhbmdlIHRoZSByZW1vdmUgdG8gYSBwYXVzZS4KKyAgICAgICAgaWYgKHByb2Nlc3NpbmdJ
bmZvLmFjdGlvbiAhPSBSZW1vdmUpCisgICAgICAgICAgICBwcm9jZXNzaW5nSW5mby5hY3Rpb24g
PSBQYXVzZTsKKyAgICB9IGVsc2UKKyAgICAgICAgbV9hbmltYXRpb25zVG9Qcm9jZXNzLmFkZChh
bmltYXRpb25OYW1lLCBBbmltYXRpb25Qcm9jZXNzaW5nQWN0aW9uKFBhdXNlLCB0aW1lT2Zmc2V0
KSk7CisKKyAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoQW5pbWF0aW9uQ2hhbmdlZCk7Cit9
CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpyZW1vdmVBbmltYXRpb24oY29uc3QgU3RyaW5nJiBh
bmltYXRpb25OYW1lKQoreworICAgIGlmICghYW5pbWF0aW9uSXNSdW5uaW5nKGFuaW1hdGlvbk5h
bWUpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2FuaW1hdGlvbnNUb1Byb2Nlc3MuYWRkKGFu
aW1hdGlvbk5hbWUsIEFuaW1hdGlvblByb2Nlc3NpbmdBY3Rpb24oUmVtb3ZlKSk7CisgICAgbm90
ZUxheWVyUHJvcGVydHlDaGFuZ2VkKEFuaW1hdGlvbkNoYW5nZWQpOworfQorCit2b2lkIEdyYXBo
aWNzTGF5ZXJDQTo6YW5pbWF0aW9uU3RhcnRlZChDRlRpbWVJbnRlcnZhbCBzdGFydFRpbWUpCit7
CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+bm90aWZ5QW5pbWF0aW9uU3Rh
cnRlZCh0aGlzLCBzdGFydFRpbWUpOworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0Q29u
dGVudHNUb0ltYWdlKEltYWdlKiBpbWFnZSkKK3sKKyAgICBpZiAoaW1hZ2UpIHsKKyAgICAgICAg
Q0dJbWFnZVJlZiBuZXdJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgp
OworICAgICAgICBpZiAoIW5ld0ltYWdlKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
IC8vIENoZWNrIHRvIHNlZSBpZiB0aGUgaW1hZ2UgY2hhbmdlZDsgd2UgaGF2ZSB0byBkbyB0aGlz
IGJlY2F1c2UgdGhlIGNhbGwgdG8KKyAgICAgICAgLy8gQ0dJbWFnZUNyZWF0ZUNvcHlXaXRoQ29s
b3JTcGFjZSgpIGJlbG93IGNhbiBjcmVhdGUgYSBuZXcgaW1hZ2UgZXZlcnkgdGltZS4KKyAgICAg
ICAgaWYgKG1fdW5jb3JyZWN0ZWRDb250ZW50c0ltYWdlICYmIG1fdW5jb3JyZWN0ZWRDb250ZW50
c0ltYWdlLmdldCgpID09IG5ld0ltYWdlKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAK
KyAgICAgICAgbV91bmNvcnJlY3RlZENvbnRlbnRzSW1hZ2UgPSBuZXdJbWFnZTsKKyAgICAgICAg
bV9wZW5kaW5nQ29udGVudHNJbWFnZSA9IG5ld0ltYWdlOworICAgICAgICBDR0NvbG9yU3BhY2VS
ZWYgY29sb3JTcGFjZSA9IENHSW1hZ2VHZXRDb2xvclNwYWNlKG1fcGVuZGluZ0NvbnRlbnRzSW1h
Z2UuZ2V0KCkpOworCisgICAgICAgIHN0YXRpYyBDR0NvbG9yU3BhY2VSZWYgZGV2aWNlUkdCID0g
Q0dDb2xvclNwYWNlQ3JlYXRlRGV2aWNlUkdCKCk7CisgICAgICAgIGlmIChjb2xvclNwYWNlICYm
IENGRXF1YWwoY29sb3JTcGFjZSwgZGV2aWNlUkdCKSkgeworICAgICAgICAgICAgLy8gQ29yZUdy
YXBoaWNzIHJlbmRlcnMgaW1hZ2VzIHRhZ2dlZCB3aXRoIERldmljZVJHQiB1c2luZyB0aGUgY29s
b3Igc3BhY2Ugb2YgdGhlIG1haW4gZGlzcGxheS4gV2hlbiB3ZSBoYW5kIHN1Y2gKKyAgICAgICAg
ICAgIC8vIGltYWdlcyB0byBDQSB3ZSBuZWVkIHRvIHRhZyB0aGVtIHNpbWlsYXJseSBzbyBDQSBy
ZW5kZXJpbmcgbWF0Y2hlcyBDRyByZW5kZXJpbmcuCisgICAgICAgICAgICBzdGF0aWMgQ0dDb2xv
clNwYWNlUmVmIGdlbmVyaWNSR0IgPSBDR0Rpc3BsYXlDb3B5Q29sb3JTcGFjZShrQ0dEaXJlY3RN
YWluRGlzcGxheSk7CisgICAgICAgICAgICBtX3BlbmRpbmdDb250ZW50c0ltYWdlLmFkb3B0Q0Yo
Q0dJbWFnZUNyZWF0ZUNvcHlXaXRoQ29sb3JTcGFjZShtX3BlbmRpbmdDb250ZW50c0ltYWdlLmdl
dCgpLCBnZW5lcmljUkdCKSk7CisgICAgICAgIH0KKyAgICAgICAgbV9jb250ZW50c0xheWVyUHVy
cG9zZSA9IENvbnRlbnRzTGF5ZXJGb3JJbWFnZTsKKyAgICAgICAgaWYgKCFtX2NvbnRlbnRzTGF5
ZXIpCisgICAgICAgICAgICBub3RlU3VibGF5ZXJzQ2hhbmdlZCgpOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIG1fdW5jb3JyZWN0ZWRDb250ZW50c0ltYWdlID0gMDsKKyAgICAgICAgbV9wZW5kaW5n
Q29udGVudHNJbWFnZSA9IDA7CisgICAgICAgIG1fY29udGVudHNMYXllclB1cnBvc2UgPSBOb0Nv
bnRlbnRzTGF5ZXI7CisgICAgICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIpCisgICAgICAgICAgICBu
b3RlU3VibGF5ZXJzQ2hhbmdlZCgpOworICAgIH0KKworICAgIG5vdGVMYXllclByb3BlcnR5Q2hh
bmdlZChDb250ZW50c0ltYWdlQ2hhbmdlZCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpz
ZXRDb250ZW50c1RvTWVkaWEoUGxhdGZvcm1MYXllciogbWVkaWFMYXllcikKK3sKKyAgICBpZiAo
bV9jb250ZW50c0xheWVyICYmIG1lZGlhTGF5ZXIgPT0gbV9jb250ZW50c0xheWVyLT5wbGF0Zm9y
bUxheWVyKCkpCisgICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgLy8gQ3JlYXRlIHRoZSBQ
bGF0Zm9ybUNBTGF5ZXIgdG8gd3JhcCB0aGUgaW5jb21pbmcgbGF5ZXIKKyAgICBtX2NvbnRlbnRz
TGF5ZXIgPSBtZWRpYUxheWVyID8gUGxhdGZvcm1DQUxheWVyOjpjcmVhdGUobWVkaWFMYXllciwg
dGhpcykgOiAwOworCisgICAgbV9jb250ZW50c0xheWVyUHVycG9zZSA9IG1lZGlhTGF5ZXIgPyBD
b250ZW50c0xheWVyRm9yTWVkaWEgOiBOb0NvbnRlbnRzTGF5ZXI7CisKKyAgICBub3RlU3VibGF5
ZXJzQ2hhbmdlZCgpOworICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChDb250ZW50c01lZGlh
TGF5ZXJDaGFuZ2VkKTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRzVG9D
YW52YXMoUGxhdGZvcm1MYXllciogY2FudmFzTGF5ZXIpCit7CisgICAgaWYgKG1fY29udGVudHNM
YXllciAmJiBjYW52YXNMYXllciA9PSBtX2NvbnRlbnRzTGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSkK
KyAgICAgICAgcmV0dXJuOworICAgIAorICAgIC8vIENyZWF0ZSB0aGUgUGxhdGZvcm1DQUxheWVy
IHRvIHdyYXAgdGhlIGluY29taW5nIGxheWVyCisgICAgbV9jb250ZW50c0xheWVyID0gY2FudmFz
TGF5ZXIgPyBQbGF0Zm9ybUNBTGF5ZXI6OmNyZWF0ZShjYW52YXNMYXllciwgdGhpcykgOiAwOwor
ICAgIAorICAgIG1fY29udGVudHNMYXllclB1cnBvc2UgPSBjYW52YXNMYXllciA/IENvbnRlbnRz
TGF5ZXJGb3JDYW52YXMgOiBOb0NvbnRlbnRzTGF5ZXI7CisKKyAgICBub3RlU3VibGF5ZXJzQ2hh
bmdlZCgpOworICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChDb250ZW50c0NhbnZhc0xheWVy
Q2hhbmdlZCk7Cit9CisgICAgCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6ZGlkRGlzcGxheShQbGF0
Zm9ybUxheWVyKiBsYXllcikKK3sKKyAgICBQbGF0Zm9ybUNBTGF5ZXIqIGN1cnJlbnRMYXllciA9
IFBsYXRmb3JtQ0FMYXllcjo6cGxhdGZvcm1DQUxheWVyKGxheWVyKTsKKyAgICBQbGF0Zm9ybUNB
TGF5ZXIqIHNvdXJjZUxheWVyOworICAgIExheWVyTWFwKiBsYXllckNsb25lTWFwOworCisgICAg
aWYgKGN1cnJlbnRMYXllciA9PSBtX2xheWVyKSB7CisgICAgICAgIHNvdXJjZUxheWVyID0gbV9s
YXllci5nZXQoKTsKKyAgICAgICAgbGF5ZXJDbG9uZU1hcCA9IG1fbGF5ZXJDbG9uZXMuZ2V0KCk7
CisgICAgfSBlbHNlIGlmIChjdXJyZW50TGF5ZXIgPT0gbV9jb250ZW50c0xheWVyKSB7CisgICAg
ICAgIHNvdXJjZUxheWVyID0gbV9jb250ZW50c0xheWVyLmdldCgpOworICAgICAgICBsYXllckNs
b25lTWFwID0gbV9jb250ZW50c0xheWVyQ2xvbmVzLmdldCgpOworICAgIH0gZWxzZQorICAgICAg
ICByZXR1cm47CisKKyAgICBpZiAobGF5ZXJDbG9uZU1hcCkgeworICAgICAgICBMYXllck1hcDo6
Y29uc3RfaXRlcmF0b3IgZW5kID0gbGF5ZXJDbG9uZU1hcC0+ZW5kKCk7CisgICAgICAgIGZvciAo
TGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbGF5ZXJDbG9uZU1hcC0+YmVnaW4oKTsgaXQg
IT0gZW5kOyArK2l0KSB7CisgICAgICAgICAgICBQbGF0Zm9ybUNBTGF5ZXIqIGN1cnJDbG9uZSA9
IGl0LT5zZWNvbmQuZ2V0KCk7CisgICAgICAgICAgICBpZiAoIWN1cnJDbG9uZSkKKyAgICAgICAg
ICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgaWYgKGN1cnJDbG9uZS0+Y29udGVudHMo
KSAhPSBzb3VyY2VMYXllci0+Y29udGVudHMoKSkKKyAgICAgICAgICAgICAgICBjdXJyQ2xvbmUt
PnNldENvbnRlbnRzKHNvdXJjZUxheWVyLT5jb250ZW50cygpKTsKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICBjdXJyQ2xvbmUtPnNldENvbnRlbnRzQ2hhbmdlZCgpOworICAgICAg
ICB9CisgICAgfQorfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c3luY0NvbXBvc2l0aW5nU3Rh
dGUoKQoreworICAgIHJlY3Vyc2l2ZUNvbW1pdENoYW5nZXMoKTsKK30KKwordm9pZCBHcmFwaGlj
c0xheWVyQ0E6OnN5bmNDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSgpCit7CisgICAg
Y29tbWl0TGF5ZXJDaGFuZ2VzQmVmb3JlU3VibGF5ZXJzKCk7CisgICAgY29tbWl0TGF5ZXJDaGFu
Z2VzQWZ0ZXJTdWJsYXllcnMoKTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnJlY3Vyc2l2
ZUNvbW1pdENoYW5nZXMoKQoreworICAgIGNvbW1pdExheWVyQ2hhbmdlc0JlZm9yZVN1YmxheWVy
cygpOworCisgICAgaWYgKG1fbWFza0xheWVyKQorICAgICAgICBzdGF0aWNfY2FzdDxHcmFwaGlj
c0xheWVyQ0EqPihtX21hc2tMYXllciktPmNvbW1pdExheWVyQ2hhbmdlc0JlZm9yZVN1YmxheWVy
cygpOworCisgICAgY29uc3QgVmVjdG9yPEdyYXBoaWNzTGF5ZXIqPiYgY2hpbGRMYXllcnMgPSBj
aGlsZHJlbigpOworICAgIHNpemVfdCBudW1DaGlsZHJlbiA9IGNoaWxkTGF5ZXJzLnNpemUoKTsK
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bUNoaWxkcmVuOyArK2kpIHsKKyAgICAgICAg
R3JhcGhpY3NMYXllckNBKiBjdXJDaGlsZCA9IHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXJDQSo+
KGNoaWxkTGF5ZXJzW2ldKTsKKyAgICAgICAgY3VyQ2hpbGQtPnJlY3Vyc2l2ZUNvbW1pdENoYW5n
ZXMoKTsKKyAgICB9CisKKyAgICBpZiAobV9yZXBsaWNhTGF5ZXIpCisgICAgICAgIHN0YXRpY19j
YXN0PEdyYXBoaWNzTGF5ZXJDQSo+KG1fcmVwbGljYUxheWVyKS0+cmVjdXJzaXZlQ29tbWl0Q2hh
bmdlcygpOworCisgICAgaWYgKG1fbWFza0xheWVyKQorICAgICAgICBzdGF0aWNfY2FzdDxHcmFw
aGljc0xheWVyQ0EqPihtX21hc2tMYXllciktPmNvbW1pdExheWVyQ2hhbmdlc0FmdGVyU3VibGF5
ZXJzKCk7CisKKyAgICBjb21taXRMYXllckNoYW5nZXNBZnRlclN1YmxheWVycygpOworfQorCit2
b2lkIEdyYXBoaWNzTGF5ZXJDQTo6Y29tbWl0TGF5ZXJDaGFuZ2VzQmVmb3JlU3VibGF5ZXJzKCkK
K3sKKyAgICBpZiAoIW1fdW5jb21taXR0ZWRDaGFuZ2VzKQorICAgICAgICByZXR1cm47CisKKyAg
ICAvLyBOZWVkIHRvIGhhbmRsZSBQcmVzZXJ2ZXMzRENoYW5nZWQgZmlyc3QsIGJlY2F1c2UgaXQg
YWZmZWN0cyB3aGljaCBsYXllcnMgc3Vic2VxdWVudCBwcm9wZXJ0aWVzIGFyZSBhcHBsaWVkIHRv
CisgICAgaWYgKG1fdW5jb21taXR0ZWRDaGFuZ2VzICYgKFByZXNlcnZlczNEQ2hhbmdlZCB8IFJl
cGxpY2F0ZWRMYXllckNoYW5nZWQpKQorICAgICAgICB1cGRhdGVTdHJ1Y3R1cmFsTGF5ZXIoKTsK
KworICAgIGlmIChtX3VuY29tbWl0dGVkQ2hhbmdlcyAmIE5hbWVDaGFuZ2VkKQorICAgICAgICB1
cGRhdGVMYXllck5hbWVzKCk7CisKKyAgICBpZiAobV91bmNvbW1pdHRlZENoYW5nZXMgJiBDb250
ZW50c0ltYWdlQ2hhbmdlZCkgLy8gTmVlZHMgdG8gaGFwcGVuIGJlZm9yZSBDaGlsZHJlbkNoYW5n
ZWQKKyAgICAgICAgdXBkYXRlQ29udGVudHNJbWFnZSgpOworICAgICAgICAKKyAgICBpZiAobV91
bmNvbW1pdHRlZENoYW5nZXMgJiBDb250ZW50c01lZGlhTGF5ZXJDaGFuZ2VkKSAvLyBOZWVkcyB0
byBoYXBwZW4gYmVmb3JlIENoaWxkcmVuQ2hhbmdlZAorICAgICAgICB1cGRhdGVDb250ZW50c01l
ZGlhTGF5ZXIoKTsKKyAgICAKKyAgICBpZiAobV91bmNvbW1pdHRlZENoYW5nZXMgJiBDb250ZW50
c0NhbnZhc0xheWVyQ2hhbmdlZCkgLy8gTmVlZHMgdG8gaGFwcGVuIGJlZm9yZSBDaGlsZHJlbkNo
YW5nZWQKKyAgICAgICAgdXBkYXRlQ29udGVudHNDYW52YXNMYXllcigpOworICAgIAorICAgIGlm
IChtX3VuY29tbWl0dGVkQ2hhbmdlcyAmIEJhY2tncm91bmRDb2xvckNoYW5nZWQpIC8vIE5lZWRz
IHRvIGhhcHBlbiBiZWZvcmUgQ2hpbGRyZW5DaGFuZ2VkLCBhbmQgYWZ0ZXIgdXBkYXRpbmcgaW1h
Z2Ugb3IgdmlkZW8KKyAgICAgICAgdXBkYXRlTGF5ZXJCYWNrZ3JvdW5kQ29sb3IoKTsKKworICAg
IGlmIChtX3VuY29tbWl0dGVkQ2hhbmdlcyAmIENoaWxkcmVuQ2hhbmdlZCkKKyAgICAgICAgdXBk
YXRlU3VibGF5ZXJMaXN0KCk7CisKKyAgICBpZiAobV91bmNvbW1pdHRlZENoYW5nZXMgJiBQb3Np
dGlvbkNoYW5nZWQpCisgICAgICAgIHVwZGF0ZUxheWVyUG9zaXRpb24oKTsKKyAgICAKKyAgICBp
ZiAobV91bmNvbW1pdHRlZENoYW5nZXMgJiBBbmNob3JQb2ludENoYW5nZWQpCisgICAgICAgIHVw
ZGF0ZUFuY2hvclBvaW50KCk7CisgICAgCisgICAgaWYgKG1fdW5jb21taXR0ZWRDaGFuZ2VzICYg
U2l6ZUNoYW5nZWQpCisgICAgICAgIHVwZGF0ZUxheWVyU2l6ZSgpOworCisgICAgaWYgKG1fdW5j
b21taXR0ZWRDaGFuZ2VzICYgVHJhbnNmb3JtQ2hhbmdlZCkKKyAgICAgICAgdXBkYXRlVHJhbnNm
b3JtKCk7CisKKyAgICBpZiAobV91bmNvbW1pdHRlZENoYW5nZXMgJiBDaGlsZHJlblRyYW5zZm9y
bUNoYW5nZWQpCisgICAgICAgIHVwZGF0ZUNoaWxkcmVuVHJhbnNmb3JtKCk7CisgICAgCisgICAg
aWYgKG1fdW5jb21taXR0ZWRDaGFuZ2VzICYgTWFza3NUb0JvdW5kc0NoYW5nZWQpCisgICAgICAg
IHVwZGF0ZU1hc2tzVG9Cb3VuZHMoKTsKKyAgICAKKyAgICBpZiAobV91bmNvbW1pdHRlZENoYW5n
ZXMgJiBEcmF3c0NvbnRlbnRDaGFuZ2VkKQorICAgICAgICB1cGRhdGVMYXllckRyYXdzQ29udGVu
dCgpOworCisgICAgaWYgKG1fdW5jb21taXR0ZWRDaGFuZ2VzICYgQ29udGVudHNPcGFxdWVDaGFu
Z2VkKQorICAgICAgICB1cGRhdGVDb250ZW50c09wYXF1ZSgpOworCisgICAgaWYgKG1fdW5jb21t
aXR0ZWRDaGFuZ2VzICYgQmFja2ZhY2VWaXNpYmlsaXR5Q2hhbmdlZCkKKyAgICAgICAgdXBkYXRl
QmFja2ZhY2VWaXNpYmlsaXR5KCk7CisKKyAgICBpZiAobV91bmNvbW1pdHRlZENoYW5nZXMgJiBP
cGFjaXR5Q2hhbmdlZCkKKyAgICAgICAgdXBkYXRlT3BhY2l0eU9uTGF5ZXIoKTsKKyAgICAKKyAg
ICBpZiAobV91bmNvbW1pdHRlZENoYW5nZXMgJiBBbmltYXRpb25DaGFuZ2VkKQorICAgICAgICB1
cGRhdGVMYXllckFuaW1hdGlvbnMoKTsKKyAgICAKKyAgICBpZiAobV91bmNvbW1pdHRlZENoYW5n
ZXMgJiBEaXJ0eVJlY3RzQ2hhbmdlZCkKKyAgICAgICAgcmVwYWludExheWVyRGlydHlSZWN0cygp
OworICAgIAorICAgIGlmIChtX3VuY29tbWl0dGVkQ2hhbmdlcyAmIENvbnRlbnRzUmVjdENoYW5n
ZWQpCisgICAgICAgIHVwZGF0ZUNvbnRlbnRzUmVjdCgpOworCisgICAgaWYgKG1fdW5jb21taXR0
ZWRDaGFuZ2VzICYgTWFza0xheWVyQ2hhbmdlZCkKKyAgICAgICAgdXBkYXRlTWFza0xheWVyKCk7
CisKKyAgICBpZiAobV91bmNvbW1pdHRlZENoYW5nZXMgJiBDb250ZW50c05lZWRzRGlzcGxheSkK
KyAgICAgICAgdXBkYXRlQ29udGVudHNOZWVkc0Rpc3BsYXkoKTsKK30KKwordm9pZCBHcmFwaGlj
c0xheWVyQ0E6OmNvbW1pdExheWVyQ2hhbmdlc0FmdGVyU3VibGF5ZXJzKCkKK3sKKyAgICBpZiAo
IW1fdW5jb21taXR0ZWRDaGFuZ2VzKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV91bmNv
bW1pdHRlZENoYW5nZXMgJiBSZXBsaWNhdGVkTGF5ZXJDaGFuZ2VkKQorICAgICAgICB1cGRhdGVS
ZXBsaWNhdGVkTGF5ZXJzKCk7CisKKyAgICBtX3VuY29tbWl0dGVkQ2hhbmdlcyA9IE5vQ2hhbmdl
OworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlTGF5ZXJOYW1lcygpCit7CisgICAg
c3dpdGNoIChzdHJ1Y3R1cmFsTGF5ZXJQdXJwb3NlKCkpIHsKKyAgICBjYXNlIFN0cnVjdHVyYWxM
YXllckZvclByZXNlcnZlczNEOgorICAgICAgICBtX3N0cnVjdHVyYWxMYXllci0+c2V0TmFtZSgi
VHJhbnNmb3JtIGxheWVyICIgKyBuYW1lKCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFN0
cnVjdHVyYWxMYXllckZvclJlcGxpY2FGbGF0dGVuaW5nOgorICAgICAgICBtX3N0cnVjdHVyYWxM
YXllci0+c2V0TmFtZSgiUmVwbGljYSBmbGF0dGVuaW5nIGxheWVyICIgKyBuYW1lKCkpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIE5vU3RydWN0dXJhbExheWVyOgorICAgICAgICBicmVhazsK
KyAgICB9CisgICAgbV9sYXllci0+c2V0TmFtZShuYW1lKCkpOworfQorCit2b2lkIEdyYXBoaWNz
TGF5ZXJDQTo6dXBkYXRlU3VibGF5ZXJMaXN0KCkKK3sKKyAgICBQbGF0Zm9ybUNBTGF5ZXJMaXN0
IG5ld1N1YmxheWVyczsKKyAgICBjb25zdCBWZWN0b3I8R3JhcGhpY3NMYXllcio+JiBjaGlsZExh
eWVycyA9IGNoaWxkcmVuKCk7CisKKyAgICBpZiAobV9zdHJ1Y3R1cmFsTGF5ZXIgfHwgbV9jb250
ZW50c0xheWVyIHx8IGNoaWxkTGF5ZXJzLnNpemUoKSA+IDApIHsKKyAgICAgICAgaWYgKG1fc3Ry
dWN0dXJhbExheWVyKSB7CisgICAgICAgICAgICAvLyBBZGQgdGhlIHJlcGxpY2EgbGF5ZXIgZmly
c3QuCisgICAgICAgICAgICBpZiAobV9yZXBsaWNhTGF5ZXIpCisgICAgICAgICAgICAgICAgbmV3
U3VibGF5ZXJzLmFwcGVuZChzdGF0aWNfY2FzdDxHcmFwaGljc0xheWVyQ0EqPihtX3JlcGxpY2FM
YXllciktPnByaW1hcnlMYXllcigpKTsKKyAgICAgICAgICAgIC8vIEFkZCB0aGUgcHJpbWFyeSBs
YXllci4gRXZlbiBpZiB3ZSBoYXZlIG5lZ2F0aXZlIHotb3JkZXIgY2hpbGRyZW4sIHRoZSBwcmlt
YXJ5IGxheWVyIGFsd2F5cyBjb21lcyBiZWhpbmQuCisgICAgICAgICAgICBuZXdTdWJsYXllcnMu
YXBwZW5kKG1fbGF5ZXIpOworICAgICAgICB9IGVsc2UgaWYgKG1fY29udGVudHNMYXllcikgewor
ICAgICAgICAgICAgLy8gRklYTUU6IGFkZCB0aGUgY29udGVudHMgbGF5ZXIgaW4gdGhlIGNvcnJl
Y3Qgb3JkZXIgd2l0aCBuZWdhdGl2ZSB6LW9yZGVyIGNoaWxkcmVuLgorICAgICAgICAgICAgLy8g
VGhpcyBkb2VzIG5vdCBjYXVzZSB2aXNpYmxlIHJlbmRlcmluZyBpc3N1ZXMgYmVjYXVzZSBjdXJy
ZW50bHkgY29udGVudHMgbGF5ZXJzIGFyZSBvbmx5IHVzZWQKKyAgICAgICAgICAgIC8vIGZvciBy
ZXBsYWNlZCBlbGVtZW50cyB0aGF0IGRvbid0IGhhdmUgY2hpbGRyZW4uCisgICAgICAgICAgICBu
ZXdTdWJsYXllcnMuYXBwZW5kKG1fY29udGVudHNMYXllcik7CisgICAgICAgIH0KKyAgICAgICAg
CisgICAgICAgIHNpemVfdCBudW1DaGlsZHJlbiA9IGNoaWxkTGF5ZXJzLnNpemUoKTsKKyAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1DaGlsZHJlbjsgKytpKSB7CisgICAgICAgICAg
ICBHcmFwaGljc0xheWVyQ0EqIGN1ckNoaWxkID0gc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllckNB
Kj4oY2hpbGRMYXllcnNbaV0pOworICAgICAgICAgICAgUGxhdGZvcm1DQUxheWVyKiBjaGlsZExh
eWVyID0gY3VyQ2hpbGQtPmxheWVyRm9yU3VwZXJsYXllcigpOworICAgICAgICAgICAgbmV3U3Vi
bGF5ZXJzLmFwcGVuZChjaGlsZExheWVyKTsKKyAgICAgICAgfQorCisgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbmV3U3VibGF5ZXJzLnNpemUoKTsgKytpKQorICAgICAgICAgICAgbmV3
U3VibGF5ZXJzW2ldLT5yZW1vdmVGcm9tU3VwZXJsYXllcigpOworICAgIH0KKworICAgIGlmICht
X3N0cnVjdHVyYWxMYXllcikgeworICAgICAgICBtX3N0cnVjdHVyYWxMYXllci0+c2V0U3VibGF5
ZXJzKG5ld1N1YmxheWVycyk7CisKKyAgICAgICAgaWYgKG1fY29udGVudHNMYXllcikgeworICAg
ICAgICAgICAgLy8gSWYgd2UgaGF2ZSBhIHRyYW5zZm9ybSBsYXllciwgdGhlbiB0aGUgY29udGVu
dHMgbGF5ZXIgaXMgcGFyZW50ZWQgaW4gdGhlIAorICAgICAgICAgICAgLy8gcHJpbWFyeSBsYXll
ciAod2hpY2ggaXMgaXRzZWxmIGEgY2hpbGQgb2YgdGhlIHRyYW5zZm9ybSBsYXllcikuCisgICAg
ICAgICAgICBtX2xheWVyLT5yZW1vdmVBbGxTdWJsYXllcnMoKTsKKyAgICAgICAgICAgIG1fbGF5
ZXItPmFwcGVuZFN1YmxheWVyKG1fY29udGVudHNMYXllci5nZXQoKSk7CisgICAgICAgIH0KKyAg
ICB9IGVsc2UKKyAgICAgICAgbV9sYXllci0+c2V0U3VibGF5ZXJzKG5ld1N1YmxheWVycyk7Cit9
CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjp1cGRhdGVMYXllclBvc2l0aW9uKCkKK3sKKyAgICBG
bG9hdFNpemUgdXNlZFNpemUgPSBtX3VzaW5nVGlsZWRMYXllciA/IGNvbnN0cmFpbmVkU2l6ZSgp
IDogbV9zaXplOworCisgICAgLy8gUG9zaXRpb24gaXMgb2Zmc2V0IG9uIHRoZSBsYXllciBieSB0
aGUgbGF5ZXIgYW5jaG9yIHBvaW50LgorICAgIEZsb2F0UG9pbnQgcG9zUG9pbnQobV9wb3NpdGlv
bi54KCkgKyBtX2FuY2hvclBvaW50LngoKSAqIHVzZWRTaXplLndpZHRoKCksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1fcG9zaXRpb24ueSgpICsgbV9hbmNob3JQb2ludC55KCkgKiB1c2Vk
U2l6ZS5oZWlnaHQoKSk7CisgICAgCisgICAgcHJpbWFyeUxheWVyKCktPnNldFBvc2l0aW9uKHBv
c1BvaW50KTsKKworICAgIGlmIChMYXllck1hcCogbGF5ZXJDbG9uZU1hcCA9IHByaW1hcnlMYXll
ckNsb25lcygpKSB7CisgICAgICAgIExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBsYXll
ckNsb25lTWFwLT5lbmQoKTsKKyAgICAgICAgZm9yIChMYXllck1hcDo6Y29uc3RfaXRlcmF0b3Ig
aXQgPSBsYXllckNsb25lTWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAg
ICAgIEZsb2F0UG9pbnQgY2xvbmVQb3NpdGlvbiA9IHBvc1BvaW50OworICAgICAgICAgICAgaWYg
KG1fcmVwbGljYUxheWVyICYmIGlzUmVwbGljYXRlZFJvb3RDbG9uZShpdC0+Zmlyc3QpKSB7Cisg
ICAgICAgICAgICAgICAgLy8gTWFpbnRhaW4gdGhlIHNwZWNpYWwtY2FzZSBwb3NpdGlvbiBmb3Ig
dGhlIHJvb3Qgb2YgYSBjbG9uZSBzdWJ0cmVlLAorICAgICAgICAgICAgICAgIC8vIHdoaWNoIHdl
IHNldCB1cCBpbiByZXBsaWNhdGVkTGF5ZXJSb290KCkuCisgICAgICAgICAgICAgICAgY2xvbmVQ
b3NpdGlvbiA9IHBvc2l0aW9uRm9yQ2xvbmVSb290TGF5ZXIoKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGl0LT5zZWNvbmQtPnNldFBvc2l0aW9uKGNsb25lUG9zaXRpb24pOworICAgICAg
ICB9CisgICAgfQorfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlTGF5ZXJTaXplKCkK
K3sKKyAgICBGbG9hdFJlY3QgcmVjdCgwLCAwLCBtX3NpemUud2lkdGgoKSwgbV9zaXplLmhlaWdo
dCgpKTsKKyAgICBpZiAobV9zdHJ1Y3R1cmFsTGF5ZXIpIHsKKyAgICAgICAgbV9zdHJ1Y3R1cmFs
TGF5ZXItPnNldEJvdW5kcyhyZWN0KTsKKyAgICAgICAgCisgICAgICAgIGlmIChMYXllck1hcCog
bGF5ZXJDbG9uZU1hcCA9IG1fc3RydWN0dXJhbExheWVyQ2xvbmVzLmdldCgpKSB7CisgICAgICAg
ICAgICBMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbGF5ZXJDbG9uZU1hcC0+ZW5kKCk7
CisgICAgICAgICAgICBmb3IgKExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGxheWVyQ2xv
bmVNYXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgICAgICAgICBpdC0+c2Vj
b25kLT5zZXRCb3VuZHMocmVjdCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBUaGUgYW5jaG9y
IG9mIHRoZSBjb250ZW50cyBsYXllciBpcyBhbHdheXMgYXQgMC41LCAwLjUsIHNvIHRoZSBwb3Np
dGlvbiBpcyBjZW50ZXItcmVsYXRpdmUuCisgICAgICAgIENHUG9pbnQgY2VudGVyUG9pbnQgPSBD
R1BvaW50TWFrZShtX3NpemUud2lkdGgoKSAvIDIuMGYsIG1fc2l6ZS5oZWlnaHQoKSAvIDIuMGYp
OworICAgICAgICBtX2xheWVyLT5zZXRQb3NpdGlvbihjZW50ZXJQb2ludCk7CisKKyAgICAgICAg
aWYgKExheWVyTWFwKiBsYXllckNsb25lTWFwID0gbV9sYXllckNsb25lcy5nZXQoKSkgeworICAg
ICAgICAgICAgTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGxheWVyQ2xvbmVNYXAtPmVu
ZCgpOworICAgICAgICAgICAgZm9yIChMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBsYXll
ckNsb25lTWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgICAgICAgICAgaXQt
PnNlY29uZC0+c2V0UG9zaXRpb24oY2VudGVyUG9pbnQpOworICAgICAgICB9CisgICAgfQorICAg
IAorICAgIGJvb2wgbmVlZFRpbGVkTGF5ZXIgPSByZXF1aXJlc1RpbGVkTGF5ZXIobV9zaXplKTsK
KyAgICBpZiAobmVlZFRpbGVkTGF5ZXIgIT0gbV91c2luZ1RpbGVkTGF5ZXIpCisgICAgICAgIHN3
YXBGcm9tT3JUb1RpbGVkTGF5ZXIobmVlZFRpbGVkTGF5ZXIpOworICAgIAorICAgIGlmIChtX3Vz
aW5nVGlsZWRMYXllcikgeworICAgICAgICBGbG9hdFNpemUgc2l6ZVRvVXNlID0gY29uc3RyYWlu
ZWRTaXplKCk7CisgICAgICAgIHJlY3QgPSBDR1JlY3RNYWtlKDAsIDAsIHNpemVUb1VzZS53aWR0
aCgpLCBzaXplVG9Vc2UuaGVpZ2h0KCkpOworICAgIH0KKyAgICAKKyAgICBtX2xheWVyLT5zZXRC
b3VuZHMocmVjdCk7CisgICAgaWYgKExheWVyTWFwKiBsYXllckNsb25lTWFwID0gbV9sYXllckNs
b25lcy5nZXQoKSkgeworICAgICAgICBMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbGF5
ZXJDbG9uZU1hcC0+ZW5kKCk7CisgICAgICAgIGZvciAoTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9y
IGl0ID0gbGF5ZXJDbG9uZU1hcC0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICAg
ICAgaXQtPnNlY29uZC0+c2V0Qm91bmRzKHJlY3QpOworICAgIH0KKyAgICAKKyAgICAvLyBDb250
ZW50cyB0cmFuc2Zvcm0gbWF5IGRlcGVuZCBvbiBoZWlnaHQuCisgICAgdXBkYXRlQ29udGVudHNU
cmFuc2Zvcm0oKTsKKworICAgIC8vIE5vdGUgdGhhdCB3ZSBkb24ndCByZXNpemUgbV9jb250ZW50
c0xheWVyLiBJdCdzIHVwIHRoZSBjYWxsZXIgdG8gZG8gdGhhdC4KKworICAgIC8vIGlmIHdlJ3Zl
IGNoYW5nZWQgdGhlIGJvdW5kcywgd2UgbmVlZCB0byByZWNhbGN1bGF0ZSB0aGUgcG9zaXRpb24K
KyAgICAvLyBvZiB0aGUgbGF5ZXIsIHRha2luZyBhbmNob3IgcG9pbnQgaW50byBhY2NvdW50Lgor
ICAgIHVwZGF0ZUxheWVyUG9zaXRpb24oKTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnVw
ZGF0ZUFuY2hvclBvaW50KCkKK3sKKyAgICBwcmltYXJ5TGF5ZXIoKS0+c2V0QW5jaG9yUG9pbnQo
bV9hbmNob3JQb2ludCk7CisKKyAgICBpZiAoTGF5ZXJNYXAqIGxheWVyQ2xvbmVNYXAgPSBwcmlt
YXJ5TGF5ZXJDbG9uZXMoKSkgeworICAgICAgICBMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5k
ID0gbGF5ZXJDbG9uZU1hcC0+ZW5kKCk7CisgICAgICAgIGZvciAoTGF5ZXJNYXA6OmNvbnN0X2l0
ZXJhdG9yIGl0ID0gbGF5ZXJDbG9uZU1hcC0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7ICAg
CisgICAgICAgICAgICBQbGF0Zm9ybUNBTGF5ZXIqIGN1cnJMYXllciA9IGl0LT5zZWNvbmQuZ2V0
KCk7CisgICAgICAgICAgICBjdXJyTGF5ZXItPnNldEFuY2hvclBvaW50KG1fYW5jaG9yUG9pbnQp
OworICAgICAgICB9CisgICAgfQorCisgICAgdXBkYXRlTGF5ZXJQb3NpdGlvbigpOworfQorCit2
b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlVHJhbnNmb3JtKCkKK3sKKyAgICBwcmltYXJ5TGF5
ZXIoKS0+c2V0VHJhbnNmb3JtKG1fdHJhbnNmb3JtKTsKKworICAgIGlmIChMYXllck1hcCogbGF5
ZXJDbG9uZU1hcCA9IHByaW1hcnlMYXllckNsb25lcygpKSB7CisgICAgICAgIExheWVyTWFwOjpj
b25zdF9pdGVyYXRvciBlbmQgPSBsYXllckNsb25lTWFwLT5lbmQoKTsKKyAgICAgICAgZm9yIChM
YXllck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBsYXllckNsb25lTWFwLT5iZWdpbigpOyBpdCAh
PSBlbmQ7ICsraXQpIHsKKyAgICAgICAgICAgIFBsYXRmb3JtQ0FMYXllciogY3VyckxheWVyID0g
aXQtPnNlY29uZC5nZXQoKTsKKyAgICAgICAgICAgIGlmIChtX3JlcGxpY2FMYXllciAmJiBpc1Jl
cGxpY2F0ZWRSb290Q2xvbmUoaXQtPmZpcnN0KSkgeworICAgICAgICAgICAgICAgIC8vIE1haW50
YWluIHRoZSBzcGVjaWFsLWNhc2UgdHJhbnNmb3JtIGZvciB0aGUgcm9vdCBvZiBhIGNsb25lIHN1
YnRyZWUsCisgICAgICAgICAgICAgICAgLy8gd2hpY2ggd2Ugc2V0IHVwIGluIHJlcGxpY2F0ZWRM
YXllclJvb3QoKS4KKyAgICAgICAgICAgICAgICBjdXJyTGF5ZXItPnNldFRyYW5zZm9ybShUcmFu
c2Zvcm1hdGlvbk1hdHJpeCgpKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAg
IGN1cnJMYXllci0+c2V0VHJhbnNmb3JtKG1fdHJhbnNmb3JtKTsKKyAgICAgICAgfQorICAgIH0K
K30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUNoaWxkcmVuVHJhbnNmb3JtKCkKK3sK
KyAgICBwcmltYXJ5TGF5ZXIoKS0+c2V0U3VibGF5ZXJUcmFuc2Zvcm0obV9jaGlsZHJlblRyYW5z
Zm9ybSk7CisKKyAgICBpZiAoTGF5ZXJNYXAqIGxheWVyQ2xvbmVNYXAgPSBwcmltYXJ5TGF5ZXJD
bG9uZXMoKSkgeworICAgICAgICBMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbGF5ZXJD
bG9uZU1hcC0+ZW5kKCk7CisgICAgICAgIGZvciAoTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0
ID0gbGF5ZXJDbG9uZU1hcC0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICAgICAg
aXQtPnNlY29uZC0+c2V0U3VibGF5ZXJUcmFuc2Zvcm0obV9jaGlsZHJlblRyYW5zZm9ybSk7Cisg
ICAgfQorfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlTWFza3NUb0JvdW5kcygpCit7
CisgICAgbV9sYXllci0+c2V0TWFza3NUb0JvdW5kcyhtX21hc2tzVG9Cb3VuZHMpOworCisgICAg
aWYgKExheWVyTWFwKiBsYXllckNsb25lTWFwID0gbV9sYXllckNsb25lcy5nZXQoKSkgeworICAg
ICAgICBMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbGF5ZXJDbG9uZU1hcC0+ZW5kKCk7
CisgICAgICAgIGZvciAoTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbGF5ZXJDbG9uZU1h
cC0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICAgICAgaXQtPnNlY29uZC0+c2V0
TWFza3NUb0JvdW5kcyhtX21hc2tzVG9Cb3VuZHMpOworICAgIH0KKworICAgIHVwZGF0ZURlYnVn
SW5kaWNhdG9ycygpOworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlQ29udGVudHNP
cGFxdWUoKQoreworICAgIG1fbGF5ZXIuZ2V0KCktPnNldE9wYXF1ZShtX2NvbnRlbnRzT3BhcXVl
KTsKKworICAgIGlmIChMYXllck1hcCogbGF5ZXJDbG9uZU1hcCA9IG1fbGF5ZXJDbG9uZXMuZ2V0
KCkpIHsKKyAgICAgICAgTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGxheWVyQ2xvbmVN
YXAtPmVuZCgpOworICAgICAgICBmb3IgKExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGxh
eWVyQ2xvbmVNYXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgICAgIGl0LT5z
ZWNvbmQtPnNldE9wYXF1ZShtX2NvbnRlbnRzT3BhcXVlKTsKKyAgICB9Cit9CisKK3ZvaWQgR3Jh
cGhpY3NMYXllckNBOjp1cGRhdGVCYWNrZmFjZVZpc2liaWxpdHkoKQoreworICAgIGlmIChtX3N0
cnVjdHVyYWxMYXllciAmJiBzdHJ1Y3R1cmFsTGF5ZXJQdXJwb3NlKCkgPT0gU3RydWN0dXJhbExh
eWVyRm9yUmVwbGljYUZsYXR0ZW5pbmcpIHsKKyAgICAgICAgbV9zdHJ1Y3R1cmFsTGF5ZXItPnNl
dERvdWJsZVNpZGVkKG1fYmFja2ZhY2VWaXNpYmlsaXR5KTsKKworICAgICAgICBpZiAoTGF5ZXJN
YXAqIGxheWVyQ2xvbmVNYXAgPSBtX3N0cnVjdHVyYWxMYXllckNsb25lcy5nZXQoKSkgeworICAg
ICAgICAgICAgTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGxheWVyQ2xvbmVNYXAtPmVu
ZCgpOworICAgICAgICAgICAgZm9yIChMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBsYXll
ckNsb25lTWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgICAgICAgICAgaXQt
PnNlY29uZC0+c2V0RG91YmxlU2lkZWQobV9iYWNrZmFjZVZpc2liaWxpdHkpOworICAgICAgICB9
CisgICAgfQorCisgICAgbV9sYXllci0+c2V0RG91YmxlU2lkZWQobV9iYWNrZmFjZVZpc2liaWxp
dHkpOworCisgICAgaWYgKExheWVyTWFwKiBsYXllckNsb25lTWFwID0gbV9sYXllckNsb25lcy5n
ZXQoKSkgeworICAgICAgICBMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbGF5ZXJDbG9u
ZU1hcC0+ZW5kKCk7CisgICAgICAgIGZvciAoTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0g
bGF5ZXJDbG9uZU1hcC0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICAgICAgaXQt
PnNlY29uZC0+c2V0RG91YmxlU2lkZWQobV9iYWNrZmFjZVZpc2liaWxpdHkpOworICAgIH0KK30K
Kwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZVN0cnVjdHVyYWxMYXllcigpCit7CisgICAg
ZW5zdXJlU3RydWN0dXJhbExheWVyKHN0cnVjdHVyYWxMYXllclB1cnBvc2UoKSk7Cit9CisKK3Zv
aWQgR3JhcGhpY3NMYXllckNBOjplbnN1cmVTdHJ1Y3R1cmFsTGF5ZXIoU3RydWN0dXJhbExheWVy
UHVycG9zZSBwdXJwb3NlKQoreworICAgIGlmIChwdXJwb3NlID09IE5vU3RydWN0dXJhbExheWVy
KSB7CisgICAgICAgIGlmIChtX3N0cnVjdHVyYWxMYXllcikgeworICAgICAgICAgICAgLy8gUmVw
bGFjZSB0aGUgdHJhbnNmb3JtTGF5ZXIgaW4gdGhlIHBhcmVudCB3aXRoIHRoaXMgbGF5ZXIuCisg
ICAgICAgICAgICBtX2xheWVyLT5yZW1vdmVGcm9tU3VwZXJsYXllcigpOworICAgICAgICAgICAg
bV9zdHJ1Y3R1cmFsTGF5ZXItPnN1cGVybGF5ZXIoKS0+cmVwbGFjZVN1YmxheWVyKG1fc3RydWN0
dXJhbExheWVyLmdldCgpLCBtX2xheWVyLmdldCgpKTsKKworICAgICAgICAgICAgbW92ZU9yQ29w
eUFuaW1hdGlvbnNGb3JQcm9wZXJ0eShNb3ZlLCBBbmltYXRlZFByb3BlcnR5V2Via2l0VHJhbnNm
b3JtLCBtX3N0cnVjdHVyYWxMYXllci5nZXQoKSwgbV9sYXllci5nZXQoKSk7CisgICAgICAgICAg
ICBtb3ZlT3JDb3B5QW5pbWF0aW9uc0ZvclByb3BlcnR5KE1vdmUsIEFuaW1hdGVkUHJvcGVydHlP
cGFjaXR5LCBtX3N0cnVjdHVyYWxMYXllci5nZXQoKSwgbV9sYXllci5nZXQoKSk7CisKKyAgICAg
ICAgICAgIC8vIFJlbGVhc2UgdGhlIHN0cnVjdHVyYWwgbGF5ZXIuCisgICAgICAgICAgICBtX3N0
cnVjdHVyYWxMYXllciA9IDA7CisKKyAgICAgICAgICAgIC8vIFVwZGF0ZSB0aGUgcHJvcGVydGll
cyBvZiBtX2xheWVyIG5vdyB0aGF0IHdlIG5vIGxvbmdlciBoYXZlIGEgc3RydWN0dXJhbCBsYXll
ci4KKyAgICAgICAgICAgIHVwZGF0ZUxheWVyUG9zaXRpb24oKTsKKyAgICAgICAgICAgIHVwZGF0
ZUxheWVyU2l6ZSgpOworICAgICAgICAgICAgdXBkYXRlQW5jaG9yUG9pbnQoKTsKKyAgICAgICAg
ICAgIHVwZGF0ZVRyYW5zZm9ybSgpOworICAgICAgICAgICAgdXBkYXRlQ2hpbGRyZW5UcmFuc2Zv
cm0oKTsKKworICAgICAgICAgICAgdXBkYXRlU3VibGF5ZXJMaXN0KCk7CisgICAgICAgICAgICB1
cGRhdGVPcGFjaXR5T25MYXllcigpOworICAgICAgICB9CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgCisgICAgYm9vbCBzdHJ1Y3R1cmFsTGF5ZXJDaGFuZ2VkID0gZmFsc2U7CisgICAgCisg
ICAgaWYgKHB1cnBvc2UgPT0gU3RydWN0dXJhbExheWVyRm9yUHJlc2VydmVzM0QpIHsKKyAgICAg
ICAgaWYgKG1fc3RydWN0dXJhbExheWVyICYmIG1fc3RydWN0dXJhbExheWVyLT5sYXllclR5cGUo
KSAhPSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVRyYW5zZm9ybUxheWVyKQorICAgICAgICAg
ICAgbV9zdHJ1Y3R1cmFsTGF5ZXIgPSAwOworICAgICAgICAKKyAgICAgICAgaWYgKCFtX3N0cnVj
dHVyYWxMYXllcikgeworICAgICAgICAgICAgbV9zdHJ1Y3R1cmFsTGF5ZXIgPSBQbGF0Zm9ybUNB
TGF5ZXI6OmNyZWF0ZShQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVRyYW5zZm9ybUxheWVyLCB0
aGlzKTsKKyAgICAgICAgICAgIHN0cnVjdHVyYWxMYXllckNoYW5nZWQgPSB0cnVlOworICAgICAg
ICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKG1fc3RydWN0dXJhbExheWVyICYmIG1fc3Ry
dWN0dXJhbExheWVyLT5sYXllclR5cGUoKSAhPSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUxh
eWVyKQorICAgICAgICAgICAgbV9zdHJ1Y3R1cmFsTGF5ZXIgPSAwOworCisgICAgICAgIGlmICgh
bV9zdHJ1Y3R1cmFsTGF5ZXIpIHsKKyAgICAgICAgICAgIG1fc3RydWN0dXJhbExheWVyID0gUGxh
dGZvcm1DQUxheWVyOjpjcmVhdGUoUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVMYXllciwgdGhp
cyk7CisgICAgICAgICAgICBzdHJ1Y3R1cmFsTGF5ZXJDaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAg
fQorICAgIH0KKyAgICAKKyAgICBpZiAoIXN0cnVjdHVyYWxMYXllckNoYW5nZWQpCisgICAgICAg
IHJldHVybjsKKyAgICAKKyAgICB1cGRhdGVMYXllck5hbWVzKCk7CisKKyAgICAvLyBVcGRhdGUg
dGhlIHByb3BlcnRpZXMgb2YgdGhlIHN0cnVjdHVyYWwgbGF5ZXIuCisgICAgdXBkYXRlTGF5ZXJQ
b3NpdGlvbigpOworICAgIHVwZGF0ZUxheWVyU2l6ZSgpOworICAgIHVwZGF0ZUFuY2hvclBvaW50
KCk7CisgICAgdXBkYXRlVHJhbnNmb3JtKCk7CisgICAgdXBkYXRlQ2hpbGRyZW5UcmFuc2Zvcm0o
KTsKKyAgICB1cGRhdGVCYWNrZmFjZVZpc2liaWxpdHkoKTsKKyAgICAKKyAgICAvLyBTZXQgcHJv
cGVydGllcyBvZiBtX2xheWVyIHRvIHRoZWlyIGRlZmF1bHQgdmFsdWVzLCBzaW5jZSB0aGVzZSBh
cmUgZXhwcmVzc2VkIG9uIG9uIHRoZSBzdHJ1Y3R1cmFsIGxheWVyLgorICAgIEZsb2F0UG9pbnQg
cG9pbnQobV9zaXplLndpZHRoKCkgLyAyLjBmLCBtX3NpemUuaGVpZ2h0KCkgLyAyLjBmKTsKKyAg
ICBtX2xheWVyLT5zZXRQb3NpdGlvbihwb2ludCk7CisgICAgbV9sYXllci0+c2V0QW5jaG9yUG9p
bnQoRmxvYXRQb2ludDNEKDAuNWYsIDAuNWYsIDApKTsKKyAgICBtX2xheWVyLT5zZXRUcmFuc2Zv
cm0oVHJhbnNmb3JtYXRpb25NYXRyaXgoKSk7CisgICAgbV9sYXllci0+c2V0T3BhY2l0eSgxKTsK
KworICAgIC8vIE1vdmUgdGhpcyBsYXllciB0byBiZSBhIGNoaWxkIG9mIHRoZSB0cmFuc2Zvcm0g
bGF5ZXIuCisgICAgbV9sYXllci0+c3VwZXJsYXllcigpLT5yZXBsYWNlU3VibGF5ZXIobV9sYXll
ci5nZXQoKSwgbV9zdHJ1Y3R1cmFsTGF5ZXIuZ2V0KCkpOworICAgIG1fc3RydWN0dXJhbExheWVy
LT5hcHBlbmRTdWJsYXllcihtX2xheWVyLmdldCgpKTsKKworICAgIG1vdmVPckNvcHlBbmltYXRp
b25zRm9yUHJvcGVydHkoTW92ZSwgQW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybSwgbV9s
YXllci5nZXQoKSwgbV9zdHJ1Y3R1cmFsTGF5ZXIuZ2V0KCkpOworICAgIG1vdmVPckNvcHlBbmlt
YXRpb25zRm9yUHJvcGVydHkoTW92ZSwgQW5pbWF0ZWRQcm9wZXJ0eU9wYWNpdHksIG1fbGF5ZXIu
Z2V0KCksIG1fc3RydWN0dXJhbExheWVyLmdldCgpKTsKKyAgICAKKyAgICB1cGRhdGVTdWJsYXll
ckxpc3QoKTsKKyAgICB1cGRhdGVPcGFjaXR5T25MYXllcigpOworfQorCitHcmFwaGljc0xheWVy
Q0E6OlN0cnVjdHVyYWxMYXllclB1cnBvc2UgR3JhcGhpY3NMYXllckNBOjpzdHJ1Y3R1cmFsTGF5
ZXJQdXJwb3NlKCkgY29uc3QKK3sKKyAgICBpZiAocHJlc2VydmVzM0QoKSkKKyAgICAgICAgcmV0
dXJuIFN0cnVjdHVyYWxMYXllckZvclByZXNlcnZlczNEOworICAgIAorICAgIGlmIChpc1JlcGxp
Y2F0ZWQoKSkKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyYWxMYXllckZvclJlcGxpY2FGbGF0dGVu
aW5nOworICAgIAorICAgIHJldHVybiBOb1N0cnVjdHVyYWxMYXllcjsKK30KKwordm9pZCBHcmFw
aGljc0xheWVyQ0E6OnVwZGF0ZUxheWVyRHJhd3NDb250ZW50KCkKK3sKKyAgICBib29sIG5lZWRU
aWxlZExheWVyID0gcmVxdWlyZXNUaWxlZExheWVyKG1fc2l6ZSk7CisgICAgaWYgKG5lZWRUaWxl
ZExheWVyICE9IG1fdXNpbmdUaWxlZExheWVyKQorICAgICAgICBzd2FwRnJvbU9yVG9UaWxlZExh
eWVyKG5lZWRUaWxlZExheWVyKTsKKworICAgIGlmIChtX2RyYXdzQ29udGVudCkKKyAgICAgICAg
bV9sYXllci0+c2V0TmVlZHNEaXNwbGF5KCk7CisgICAgZWxzZQorICAgICAgICBtX2xheWVyLT5z
ZXRDb250ZW50cygwKTsKKworICAgIHVwZGF0ZURlYnVnSW5kaWNhdG9ycygpOworfQorCit2b2lk
IEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlTGF5ZXJCYWNrZ3JvdW5kQ29sb3IoKQoreworICAgIGlm
ICghbV9jb250ZW50c0xheWVyKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBXZSBuZXZlciBj
cmVhdGUgdGhlIGNvbnRlbnRzIGxheWVyIGp1c3QgZm9yIGJhY2tncm91bmQgY29sb3IgeWV0Lgor
ICAgIGlmIChtX2JhY2tncm91bmRDb2xvclNldCkKKyAgICAgICAgbV9jb250ZW50c0xheWVyLT5z
ZXRCYWNrZ3JvdW5kQ29sb3IobV9iYWNrZ3JvdW5kQ29sb3IpOworICAgIGVsc2UKKyAgICAgICAg
bV9jb250ZW50c0xheWVyLT5zZXRCYWNrZ3JvdW5kQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50KTsK
K30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUNvbnRlbnRzSW1hZ2UoKQoreworICAg
IGlmIChtX3BlbmRpbmdDb250ZW50c0ltYWdlKSB7CisgICAgICAgIGlmICghbV9jb250ZW50c0xh
eWVyLmdldCgpKSB7CisgICAgICAgICAgICBtX2NvbnRlbnRzTGF5ZXIgPSBQbGF0Zm9ybUNBTGF5
ZXI6OmNyZWF0ZShQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUxheWVyLCB0aGlzKTsKKyNpZm5k
ZWYgTkRFQlVHCisgICAgICAgICAgICBtX2NvbnRlbnRzTGF5ZXItPnNldE5hbWUoIkltYWdlIExh
eWVyIik7CisjZW5kaWYKKyAgICAgICAgICAgIHNldHVwQ29udGVudHNMYXllcihtX2NvbnRlbnRz
TGF5ZXIuZ2V0KCkpOworICAgICAgICAgICAgLy8gbV9jb250ZW50c0xheWVyIHdpbGwgYmUgcGFy
ZW50ZWQgYnkgdXBkYXRlU3VibGF5ZXJMaXN0CisgICAgICAgIH0KKworICAgICAgICAvLyBGSVhN
RTogbWF5YmUgb25seSBkbyB0cmlsaW5lYXIgaWYgdGhlIGltYWdlIGlzIGJlaW5nIHNjYWxlZCBk
b3duLAorICAgICAgICAvLyBidXQgdGhlbiB3aGF0IGlmIHRoZSBsYXllciBzaXplIGNoYW5nZXM/
CisjaWYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxESU5HX09O
X0xFT1BBUkQpCisgICAgICAgIG1fY29udGVudHNMYXllci0+c2V0TWluaWZpY2F0aW9uRmlsdGVy
KFBsYXRmb3JtQ0FMYXllcjo6VHJpbGluZWFyKTsKKyNlbmRpZgorICAgICAgICBtX2NvbnRlbnRz
TGF5ZXItPnNldENvbnRlbnRzKG1fcGVuZGluZ0NvbnRlbnRzSW1hZ2UuZ2V0KCkpOworICAgICAg
ICBtX3BlbmRpbmdDb250ZW50c0ltYWdlID0gMDsKKworICAgICAgICBpZiAobV9jb250ZW50c0xh
eWVyQ2xvbmVzKSB7CisgICAgICAgICAgICBMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0g
bV9jb250ZW50c0xheWVyQ2xvbmVzLT5lbmQoKTsKKyAgICAgICAgICAgIGZvciAoTGF5ZXJNYXA6
OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9jb250ZW50c0xheWVyQ2xvbmVzLT5iZWdpbigpOyBpdCAh
PSBlbmQ7ICsraXQpCisgICAgICAgICAgICAgICAgaXQtPnNlY29uZC0+c2V0Q29udGVudHMobV9j
b250ZW50c0xheWVyLT5jb250ZW50cygpKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAg
dXBkYXRlQ29udGVudHNSZWN0KCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gTm8gaW1hZ2Uu
CisgICAgICAgIC8vIG1fY29udGVudHNMYXllciB3aWxsIGJlIHJlbW92ZWQgdmlhIHVwZGF0ZVN1
YmxheWVyTGlzdC4KKyAgICAgICAgbV9jb250ZW50c0xheWVyID0gMDsKKyAgICB9Cit9CisKK3Zv
aWQgR3JhcGhpY3NMYXllckNBOjp1cGRhdGVDb250ZW50c01lZGlhTGF5ZXIoKQoreworICAgIC8v
IFZpZGVvIGxheWVyIHdhcyBzZXQgYXMgbV9jb250ZW50c0xheWVyLCBhbmQgd2lsbCBnZXQgcGFy
ZW50ZWQgaW4gdXBkYXRlU3VibGF5ZXJMaXN0KCkuCisgICAgaWYgKG1fY29udGVudHNMYXllcikg
eworICAgICAgICBzZXR1cENvbnRlbnRzTGF5ZXIobV9jb250ZW50c0xheWVyLmdldCgpKTsKKyAg
ICAgICAgdXBkYXRlQ29udGVudHNSZWN0KCk7CisgICAgfQorfQorCit2b2lkIEdyYXBoaWNzTGF5
ZXJDQTo6dXBkYXRlQ29udGVudHNDYW52YXNMYXllcigpCit7CisgICAgLy8gQ2FudmFzTGF5ZXIg
d2FzIHNldCBhcyBtX2NvbnRlbnRzTGF5ZXIsIGFuZCB3aWxsIGdldCBwYXJlbnRlZCBpbiB1cGRh
dGVTdWJsYXllckxpc3QoKS4KKyAgICBpZiAobV9jb250ZW50c0xheWVyKSB7CisgICAgICAgIHNl
dHVwQ29udGVudHNMYXllcihtX2NvbnRlbnRzTGF5ZXIuZ2V0KCkpOworICAgICAgICBtX2NvbnRl
bnRzTGF5ZXItPnNldE5lZWRzRGlzcGxheSgpOworICAgICAgICB1cGRhdGVDb250ZW50c1JlY3Qo
KTsKKyAgICB9Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjp1cGRhdGVDb250ZW50c1JlY3Qo
KQoreworICAgIGlmICghbV9jb250ZW50c0xheWVyKQorICAgICAgICByZXR1cm47CisKKyAgICBG
bG9hdFBvaW50IHBvaW50KG1fY29udGVudHNSZWN0LngoKSwgbV9jb250ZW50c1JlY3QueSgpKTsK
KyAgICBGbG9hdFJlY3QgcmVjdCgwLCAwLCBtX2NvbnRlbnRzUmVjdC53aWR0aCgpLCBtX2NvbnRl
bnRzUmVjdC5oZWlnaHQoKSk7CisKKyAgICBtX2NvbnRlbnRzTGF5ZXItPnNldFBvc2l0aW9uKHBv
aW50KTsKKyAgICBtX2NvbnRlbnRzTGF5ZXItPnNldEJvdW5kcyhyZWN0KTsKKworICAgIGlmICht
X2NvbnRlbnRzTGF5ZXJDbG9uZXMpIHsKKyAgICAgICAgTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9y
IGVuZCA9IG1fY29udGVudHNMYXllckNsb25lcy0+ZW5kKCk7CisgICAgICAgIGZvciAoTGF5ZXJN
YXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9jb250ZW50c0xheWVyQ2xvbmVzLT5iZWdpbigpOyBp
dCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgICAgIGl0LT5zZWNvbmQtPnNldFBvc2l0aW9uKHBv
aW50KTsKKyAgICAgICAgICAgIGl0LT5zZWNvbmQtPnNldEJvdW5kcyhyZWN0KTsKKyAgICAgICAg
fQorICAgIH0KK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZU1hc2tMYXllcigpCit7
CisgICAgUGxhdGZvcm1DQUxheWVyKiBtYXNrQ0FMYXllciA9IG1fbWFza0xheWVyID8gc3RhdGlj
X2Nhc3Q8R3JhcGhpY3NMYXllckNBKj4obV9tYXNrTGF5ZXIpLT5wcmltYXJ5TGF5ZXIoKSA6IDA7
CisgICAgbV9sYXllci0+c2V0TWFzayhtYXNrQ0FMYXllcik7CisKKyAgICBMYXllck1hcCogbWFz
a0xheWVyQ2xvbmVNYXAgPSBtX21hc2tMYXllciA/IHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXJD
QSo+KG1fbWFza0xheWVyKS0+cHJpbWFyeUxheWVyQ2xvbmVzKCkgOiAwOworICAgIAorICAgIGlm
IChMYXllck1hcCogbGF5ZXJDbG9uZU1hcCA9IG1fbGF5ZXJDbG9uZXMuZ2V0KCkpIHsKKyAgICAg
ICAgTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGxheWVyQ2xvbmVNYXAtPmVuZCgpOwor
ICAgICAgICBmb3IgKExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGxheWVyQ2xvbmVNYXAt
PmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeyAgICAgICAgICAgIAorICAgICAgICAgICAgUGxh
dGZvcm1DQUxheWVyKiBtYXNrQ2xvbmUgPSBtYXNrTGF5ZXJDbG9uZU1hcCA/IG1hc2tMYXllckNs
b25lTWFwLT5nZXQoaXQtPmZpcnN0KS5nZXQoKSA6IDA7CisgICAgICAgICAgICBpdC0+c2Vjb25k
LT5zZXRNYXNrKG1hc2tDbG9uZSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgR3JhcGhp
Y3NMYXllckNBOjp1cGRhdGVSZXBsaWNhdGVkTGF5ZXJzKCkKK3sKKyAgICAvLyBDbG9uZSB0aGUg
ZGVzY2VuZGFudHMgb2YgdGhlIHJlcGxpY2F0ZWQgbGF5ZXIsIGFuZCBwYXJlbnQgdW5kZXIgdXMu
CisgICAgUmVwbGljYVN0YXRlIHJlcGxpY2FTdGF0ZShSZXBsaWNhU3RhdGU6OlJlcGxpY2FCcmFu
Y2gpOworCisgICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj5yZXBsaWNhUm9vdCA9IHJlcGxpY2F0
ZWRMYXllclJvb3QocmVwbGljYVN0YXRlKTsKKyAgICBpZiAoIXJlcGxpY2FSb290KQorICAgICAg
ICByZXR1cm47CisKKyAgICBpZiAobV9zdHJ1Y3R1cmFsTGF5ZXIpCisgICAgICAgIG1fc3RydWN0
dXJhbExheWVyLT5pbnNlcnRTdWJsYXllcihyZXBsaWNhUm9vdC5nZXQoKSwgMCk7CisgICAgZWxz
ZQorICAgICAgICBtX2xheWVyLT5pbnNlcnRTdWJsYXllcihyZXBsaWNhUm9vdC5nZXQoKSwgMCk7
Cit9CisKKy8vIEZvciBub3csIHRoaXMgYXNzdW1lcyB0aGF0IGxheWVycyBvbmx5IGV2ZXIgaGF2
ZSBvbmUgcmVwbGljYSwgc28gcmVwbGljYUluZGljZXMgY29udGFpbnMgb25seSAwIGFuZCAxLgor
R3JhcGhpY3NMYXllckNBOjpDbG9uZUlEIEdyYXBoaWNzTGF5ZXJDQTo6UmVwbGljYVN0YXRlOjpj
bG9uZUlEKCkgY29uc3QKK3sKKyAgICBzaXplX3QgZGVwdGggPSBtX3JlcGxpY2FCcmFuY2hlcy5z
aXplKCk7CisKKyAgICBjb25zdCBzaXplX3QgYml0c1BlclVDaGFyID0gc2l6ZW9mKFVDaGFyKSAq
IDg7CisgICAgc2l6ZV90IHZlY3RvclNpemUgPSAoZGVwdGggKyBiaXRzUGVyVUNoYXIgLSAxKSAv
IGJpdHNQZXJVQ2hhcjsKKyAgICAKKyAgICBWZWN0b3I8VUNoYXI+IHJlc3VsdCh2ZWN0b3JTaXpl
KTsKKyAgICByZXN1bHQuZmlsbCgwKTsKKworICAgIC8vIENyZWF0ZSBhIHN0cmluZyBmcm9tIHRo
ZSBiaXQgc2VxdWVuY2Ugd2hpY2ggd2UgY2FuIHVzZSB0byBpZGVudGlmeSB0aGUgY2xvbmUuCisg
ICAgLy8gTm90ZSB0aGF0IHRoZSBzdHJpbmcgbWF5IGNvbnRhaW4gZW1iZWRkZWQgbnVsbHMsIGJ1
dCB0aGF0J3MgT0suCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBkZXB0aDsgKytpKSB7Cisg
ICAgICAgIFVDaGFyJiBjdXJyQ2hhciA9IHJlc3VsdFtpIC8gYml0c1BlclVDaGFyXTsKKyAgICAg
ICAgY3VyckNoYXIgPSAoY3VyckNoYXIgPDwgMSkgfCBtX3JlcGxpY2FCcmFuY2hlc1tpXTsKKyAg
ICB9CisgICAgCisgICAgcmV0dXJuIFN0cmluZzo6YWRvcHQocmVzdWx0KTsKK30KKworUGFzc1Jl
ZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IEdyYXBoaWNzTGF5ZXJDQTo6cmVwbGljYXRlZExheWVyUm9v
dChSZXBsaWNhU3RhdGUmIHJlcGxpY2FTdGF0ZSkKK3sKKyAgICAvLyBMaW1pdCByZXBsaWNhIG5l
c3RpbmcsIHRvIGF2b2lkIDJeTiBleHBsb3Npb24gb2YgcmVwbGljYSBsYXllcnMuCisgICAgaWYg
KCFtX3JlcGxpY2F0ZWRMYXllciB8fCByZXBsaWNhU3RhdGUucmVwbGljYURlcHRoKCkgPT0gUmVw
bGljYVN0YXRlOjptYXhSZXBsaWNhRGVwdGgpCisgICAgICAgIHJldHVybiAwOworCisgICAgR3Jh
cGhpY3NMYXllckNBKiByZXBsaWNhdGVkTGF5ZXIgPSBzdGF0aWNfY2FzdDxHcmFwaGljc0xheWVy
Q0EqPihtX3JlcGxpY2F0ZWRMYXllcik7CisgICAgCisgICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXll
cj4gY2xvbmVkTGF5ZXJSb290ID0gcmVwbGljYXRlZExheWVyLT5mZXRjaENsb25lTGF5ZXJzKHRo
aXMsIHJlcGxpY2FTdGF0ZSwgUm9vdENsb25lTGV2ZWwpOworICAgIEZsb2F0UG9pbnQgY2xvbmVS
b290UG9zaXRpb24gPSByZXBsaWNhdGVkTGF5ZXItPnBvc2l0aW9uRm9yQ2xvbmVSb290TGF5ZXIo
KTsKKworICAgIC8vIFJlcGxpY2Egcm9vdCBoYXMgbm8gb2Zmc2V0IG9yIHRyYW5zZm9ybQorICAg
IGNsb25lZExheWVyUm9vdC0+c2V0UG9zaXRpb24oY2xvbmVSb290UG9zaXRpb24pOworICAgIGNs
b25lZExheWVyUm9vdC0+c2V0VHJhbnNmb3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpOworCisg
ICAgcmV0dXJuIGNsb25lZExheWVyUm9vdDsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnVw
ZGF0ZUxheWVyQW5pbWF0aW9ucygpCit7CisgICAgaWYgKG1fYW5pbWF0aW9uc1RvUHJvY2Vzcy5z
aXplKCkpIHsKKyAgICAgICAgQW5pbWF0aW9uc1RvUHJvY2Vzc01hcDo6Y29uc3RfaXRlcmF0b3Ig
ZW5kID0gbV9hbmltYXRpb25zVG9Qcm9jZXNzLmVuZCgpOworICAgICAgICBmb3IgKEFuaW1hdGlv
bnNUb1Byb2Nlc3NNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9hbmltYXRpb25zVG9Qcm9jZXNz
LmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBj
dXJyQW5pbWF0aW9uTmFtZSA9IGl0LT5maXJzdDsKKyAgICAgICAgICAgIEFuaW1hdGlvbnNNYXA6
Oml0ZXJhdG9yIGFuaW1hdGlvbkl0ID0gbV9ydW5uaW5nQW5pbWF0aW9ucy5maW5kKGN1cnJBbmlt
YXRpb25OYW1lKTsKKyAgICAgICAgICAgIGlmIChhbmltYXRpb25JdCA9PSBtX3J1bm5pbmdBbmlt
YXRpb25zLmVuZCgpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBj
b25zdCBBbmltYXRpb25Qcm9jZXNzaW5nQWN0aW9uJiBwcm9jZXNzaW5nSW5mbyA9IGl0LT5zZWNv
bmQ7CisgICAgICAgICAgICBjb25zdCBWZWN0b3I8TGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbj4mIGFu
aW1hdGlvbnMgPSBhbmltYXRpb25JdC0+c2Vjb25kOworICAgICAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBhbmltYXRpb25zLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICAgICAgY29u
c3QgTGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbiYgY3VyckFuaW1hdGlvbiA9IGFuaW1hdGlvbnNbaV07
CisgICAgICAgICAgICAgICAgc3dpdGNoIChwcm9jZXNzaW5nSW5mby5hY3Rpb24pIHsKKyAgICAg
ICAgICAgICAgICBjYXNlIFJlbW92ZToKKyAgICAgICAgICAgICAgICAgICAgcmVtb3ZlQ0FBbmlt
YXRpb25Gcm9tTGF5ZXIoY3VyckFuaW1hdGlvbi5tX3Byb3BlcnR5LCBjdXJyQW5pbWF0aW9uTmFt
ZSwgY3VyckFuaW1hdGlvbi5tX2luZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgY2FzZSBQYXVzZToKKyAgICAgICAgICAgICAgICAgICAgcGF1c2VDQUFu
aW1hdGlvbk9uTGF5ZXIoY3VyckFuaW1hdGlvbi5tX3Byb3BlcnR5LCBjdXJyQW5pbWF0aW9uTmFt
ZSwgY3VyckFuaW1hdGlvbi5tX2luZGV4LCBwcm9jZXNzaW5nSW5mby50aW1lT2Zmc2V0KTsKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBpZiAocHJvY2Vzc2luZ0luZm8uYWN0aW9uID09IFJlbW92ZSkKKyAg
ICAgICAgICAgICAgICBtX3J1bm5pbmdBbmltYXRpb25zLnJlbW92ZShjdXJyQW5pbWF0aW9uTmFt
ZSk7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgbV9hbmltYXRpb25zVG9Qcm9jZXNzLmNsZWFy
KCk7CisgICAgfQorICAgIAorICAgIHNpemVfdCBudW1BbmltYXRpb25zOworICAgIGlmICgobnVt
QW5pbWF0aW9ucyA9IG1fdW5jb21pdHRlZEFuaW1hdGlvbnMuc2l6ZSgpKSkgeworICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG51bUFuaW1hdGlvbnM7ICsraSkgeworICAgICAgICAgICAg
Y29uc3QgTGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbiYgcGVuZGluZ0FuaW1hdGlvbiA9IG1fdW5jb21p
dHRlZEFuaW1hdGlvbnNbaV07CisgICAgICAgICAgICBzZXRBbmltYXRpb25PbkxheWVyKHBlbmRp
bmdBbmltYXRpb24ubV9hbmltYXRpb24uZ2V0KCksIHBlbmRpbmdBbmltYXRpb24ubV9wcm9wZXJ0
eSwgcGVuZGluZ0FuaW1hdGlvbi5tX25hbWUsIHBlbmRpbmdBbmltYXRpb24ubV9pbmRleCwgcGVu
ZGluZ0FuaW1hdGlvbi5tX3RpbWVPZmZzZXQpOworICAgICAgICAgICAgCisgICAgICAgICAgICBB
bmltYXRpb25zTWFwOjppdGVyYXRvciBpdCA9IG1fcnVubmluZ0FuaW1hdGlvbnMuZmluZChwZW5k
aW5nQW5pbWF0aW9uLm1fbmFtZSk7CisgICAgICAgICAgICBpZiAoaXQgPT0gbV9ydW5uaW5nQW5p
bWF0aW9ucy5lbmQoKSkgeworICAgICAgICAgICAgICAgIFZlY3RvcjxMYXllclByb3BlcnR5QW5p
bWF0aW9uPiBhbmltYXRpb25zOworICAgICAgICAgICAgICAgIGFuaW1hdGlvbnMuYXBwZW5kKHBl
bmRpbmdBbmltYXRpb24pOworICAgICAgICAgICAgICAgIG1fcnVubmluZ0FuaW1hdGlvbnMuYWRk
KHBlbmRpbmdBbmltYXRpb24ubV9uYW1lLCBhbmltYXRpb25zKTsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgVmVjdG9yPExheWVyUHJvcGVydHlBbmltYXRpb24+JiBhbmlt
YXRpb25zID0gaXQtPnNlY29uZDsKKyAgICAgICAgICAgICAgICBhbmltYXRpb25zLmFwcGVuZChw
ZW5kaW5nQW5pbWF0aW9uKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKKyAg
ICAgICAgbV91bmNvbWl0dGVkQW5pbWF0aW9ucy5jbGVhcigpOworICAgIH0KK30KKwordm9pZCBH
cmFwaGljc0xheWVyQ0E6OnNldEFuaW1hdGlvbk9uTGF5ZXIoUGxhdGZvcm1DQUFuaW1hdGlvbiog
Y2FBbmltLCBBbmltYXRlZFByb3BlcnR5SUQgcHJvcGVydHksIGNvbnN0IFN0cmluZyYgYW5pbWF0
aW9uTmFtZSwgaW50IGluZGV4LCBkb3VibGUgdGltZU9mZnNldCkKK3sKKyAgICBQbGF0Zm9ybUNB
TGF5ZXIqIGxheWVyID0gYW5pbWF0ZWRMYXllcihwcm9wZXJ0eSk7CisgICAgCisgICAgaWYgKHRp
bWVPZmZzZXQpIHsKKyAgICAgICAgY2FBbmltLT5zZXRCZWdpblRpbWUoQ0FDdXJyZW50TWVkaWFU
aW1lKCkgLSB0aW1lT2Zmc2V0KTsKKyAgICAgICAgY2FBbmltLT5zZXROb25aZXJvQmVnaW5UaW1l
RmxhZyh0cnVlKTsKKyAgICB9CisKKyAgICBTdHJpbmcgYW5pbWF0aW9uSUQgPSBhbmltYXRpb25J
ZGVudGlmaWVyKGFuaW1hdGlvbk5hbWUsIHByb3BlcnR5LCBpbmRleCk7CisKKyAgICBsYXllci0+
cmVtb3ZlQW5pbWF0aW9uRm9yS2V5KGFuaW1hdGlvbklEKTsKKyAgICBsYXllci0+YWRkQW5pbWF0
aW9uRm9yS2V5KGFuaW1hdGlvbklELCBjYUFuaW0pOworCisgICAgaWYgKExheWVyTWFwKiBsYXll
ckNsb25lTWFwID0gYW5pbWF0ZWRMYXllckNsb25lcyhwcm9wZXJ0eSkpIHsKKyAgICAgICAgTGF5
ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGxheWVyQ2xvbmVNYXAtPmVuZCgpOworICAgICAg
ICBmb3IgKExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGxheWVyQ2xvbmVNYXAtPmJlZ2lu
KCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICAgICAgLy8gU2tpcCBpbW1lZGlhdGUgcmVw
bGljYXMsIHNpbmNlIHRoZXkgbW92ZSB3aXRoIHRoZSBvcmlnaW5hbC4KKyAgICAgICAgICAgIGlm
IChtX3JlcGxpY2FMYXllciAmJiBpc1JlcGxpY2F0ZWRSb290Q2xvbmUoaXQtPmZpcnN0KSkKKyAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgaXQtPnNlY29uZC0+cmVtb3Zl
QW5pbWF0aW9uRm9yS2V5KGFuaW1hdGlvbklEKTsKKyAgICAgICAgICAgIGl0LT5zZWNvbmQtPmFk
ZEFuaW1hdGlvbkZvcktleShhbmltYXRpb25JRCwgY2FBbmltKTsKKyAgICAgICAgfQorICAgIH0K
K30KKworLy8gV29ya2Fyb3VuZCBmb3IgPHJkYXI6Ly9wcm9ibGVtLzczMTEzNjc+CitzdGF0aWMg
dm9pZCBidWc3MzExMzY3V29ya2Fyb3VuZChQbGF0Zm9ybUNBTGF5ZXIqIHRyYW5zZm9ybUxheWVy
LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtKQoreworICAgIGlmICghdHJh
bnNmb3JtTGF5ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4
IGNhVHJhbnNmb3JtID0gdHJhbnNmb3JtOworICAgIGNhVHJhbnNmb3JtLnNldE00MShjYVRyYW5z
Zm9ybS5tNDEoKSArIDEpOworICAgIHRyYW5zZm9ybUxheWVyLT5zZXRUcmFuc2Zvcm0oY2FUcmFu
c2Zvcm0pOworCisgICAgY2FUcmFuc2Zvcm0uc2V0TTQxKGNhVHJhbnNmb3JtLm00MSgpIC0gMSk7
CisgICAgdHJhbnNmb3JtTGF5ZXItPnNldFRyYW5zZm9ybShjYVRyYW5zZm9ybSk7Cit9CisKK2Jv
b2wgR3JhcGhpY3NMYXllckNBOjpyZW1vdmVDQUFuaW1hdGlvbkZyb21MYXllcihBbmltYXRlZFBy
b3BlcnR5SUQgcHJvcGVydHksIGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSwgaW50IGluZGV4
KQoreworICAgIFBsYXRmb3JtQ0FMYXllciogbGF5ZXIgPSBhbmltYXRlZExheWVyKHByb3BlcnR5
KTsKKworICAgIFN0cmluZyBhbmltYXRpb25JRCA9IGFuaW1hdGlvbklkZW50aWZpZXIoYW5pbWF0
aW9uTmFtZSwgcHJvcGVydHksIGluZGV4KTsKKworICAgIGlmICghbGF5ZXItPmFuaW1hdGlvbkZv
cktleShhbmltYXRpb25JRCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBsYXll
ci0+cmVtb3ZlQW5pbWF0aW9uRm9yS2V5KGFuaW1hdGlvbklEKTsKKyAgICBidWc3MzExMzY3V29y
a2Fyb3VuZChtX3N0cnVjdHVyYWxMYXllci5nZXQoKSwgbV90cmFuc2Zvcm0pOworCisgICAgaWYg
KExheWVyTWFwKiBsYXllckNsb25lTWFwID0gYW5pbWF0ZWRMYXllckNsb25lcyhwcm9wZXJ0eSkp
IHsKKyAgICAgICAgTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGxheWVyQ2xvbmVNYXAt
PmVuZCgpOworICAgICAgICBmb3IgKExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGxheWVy
Q2xvbmVNYXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICAgICAgLy8gU2tp
cCBpbW1lZGlhdGUgcmVwbGljYXMsIHNpbmNlIHRoZXkgbW92ZSB3aXRoIHRoZSBvcmlnaW5hbC4K
KyAgICAgICAgICAgIGlmIChtX3JlcGxpY2FMYXllciAmJiBpc1JlcGxpY2F0ZWRSb290Q2xvbmUo
aXQtPmZpcnN0KSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgaXQt
PnNlY29uZCAtPnJlbW92ZUFuaW1hdGlvbkZvcktleShhbmltYXRpb25JRCk7CisgICAgICAgIH0K
KyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpwYXVz
ZUNBQW5pbWF0aW9uT25MYXllcihBbmltYXRlZFByb3BlcnR5SUQgcHJvcGVydHksIGNvbnN0IFN0
cmluZyYgYW5pbWF0aW9uTmFtZSwgaW50IGluZGV4LCBkb3VibGUgdGltZU9mZnNldCkKK3sKKyAg
ICBQbGF0Zm9ybUNBTGF5ZXIqIGxheWVyID0gYW5pbWF0ZWRMYXllcihwcm9wZXJ0eSk7CisKKyAg
ICBTdHJpbmcgYW5pbWF0aW9uSUQgPSBhbmltYXRpb25JZGVudGlmaWVyKGFuaW1hdGlvbk5hbWUs
IHByb3BlcnR5LCBpbmRleCk7CisKKyAgICBSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gY3Vy
QW5pbSA9IGxheWVyLT5hbmltYXRpb25Gb3JLZXkoYW5pbWF0aW9uSUQpOworICAgIGlmICghY3Vy
QW5pbSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gQW5pbWF0aW9ucyBvbiB0aGUgbGF5ZXIg
YXJlIGltbXV0YWJsZSwgc28gd2UgaGF2ZSB0byBjbG9uZSBhbmQgbW9kaWZ5LgorICAgIFJlZlB0
cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBuZXdBbmltID0gUGxhdGZvcm1DQUFuaW1hdGlvbjo6Y3Jl
YXRlKGN1ckFuaW0uZ2V0KCkpOworCisgICAgbmV3QW5pbS0+c2V0U3BlZWQoMCk7CisgICAgbmV3
QW5pbS0+c2V0VGltZU9mZnNldCh0aW1lT2Zmc2V0KTsKKyAgICAKKyAgICBsYXllci0+YWRkQW5p
bWF0aW9uRm9yS2V5KGFuaW1hdGlvbklELCBuZXdBbmltLmdldCgpKTsgLy8gVGhpcyB3aWxsIHJl
cGxhY2UgdGhlIHJ1bm5pbmcgYW5pbWF0aW9uLgorCisgICAgLy8gUGF1c2UgdGhlIGFuaW1hdGlv
bnMgb24gdGhlIGNsb25lcyB0b28uCisgICAgaWYgKExheWVyTWFwKiBsYXllckNsb25lTWFwID0g
YW5pbWF0ZWRMYXllckNsb25lcyhwcm9wZXJ0eSkpIHsKKyAgICAgICAgTGF5ZXJNYXA6OmNvbnN0
X2l0ZXJhdG9yIGVuZCA9IGxheWVyQ2xvbmVNYXAtPmVuZCgpOworICAgICAgICBmb3IgKExheWVy
TWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGxheWVyQ2xvbmVNYXAtPmJlZ2luKCk7IGl0ICE9IGVu
ZDsgKytpdCkgeworICAgICAgICAgICAgLy8gU2tpcCBpbW1lZGlhdGUgcmVwbGljYXMsIHNpbmNl
IHRoZXkgbW92ZSB3aXRoIHRoZSBvcmlnaW5hbC4KKyAgICAgICAgICAgIGlmIChtX3JlcGxpY2FM
YXllciAmJiBpc1JlcGxpY2F0ZWRSb290Q2xvbmUoaXQtPmZpcnN0KSkKKyAgICAgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgICAgIGl0LT5zZWNvbmQtPmFkZEFuaW1hdGlvbkZvcktleShh
bmltYXRpb25JRCwgbmV3QW5pbS5nZXQoKSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQg
R3JhcGhpY3NMYXllckNBOjpyZXBhaW50TGF5ZXJEaXJ0eVJlY3RzKCkKK3sKKyAgICBpZiAoIW1f
ZGlydHlSZWN0cy5zaXplKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbV9kaXJ0eVJlY3RzLnNpemUoKTsgKytpKQorICAgICAgICBtX2xheWVyLT5zZXRO
ZWVkc0Rpc3BsYXkoJihtX2RpcnR5UmVjdHNbaV0pKTsKKyAgICAKKyAgICBtX2RpcnR5UmVjdHMu
Y2xlYXIoKTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUNvbnRlbnRzTmVlZHNE
aXNwbGF5KCkKK3sKKyAgICBpZiAobV9jb250ZW50c0xheWVyKQorICAgICAgICBtX2NvbnRlbnRz
TGF5ZXItPnNldE5lZWRzRGlzcGxheSgpOworfQorCitib29sIEdyYXBoaWNzTGF5ZXJDQTo6Y3Jl
YXRlQW5pbWF0aW9uRnJvbUtleWZyYW1lcyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVM
aXN0LCBjb25zdCBBbmltYXRpb24qIGFuaW1hdGlvbiwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25O
YW1lLCBkb3VibGUgdGltZU9mZnNldCkKK3sKKyAgICBBU1NFUlQodmFsdWVMaXN0LnByb3BlcnR5
KCkgIT0gQW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybSk7CisgICAgCisgICAgYm9vbCBp
c0tleWZyYW1lID0gdmFsdWVMaXN0LnNpemUoKSA+IDI7CisgICAgYm9vbCB2YWx1ZXNPSzsKKyAg
ICAKKyAgICBib29sIGFkZGl0aXZlID0gZmFsc2U7CisgICAgaW50IGFuaW1hdGlvbkluZGV4ID0g
MDsKKyAgICAKKyAgICBSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gY2FBbmltYXRpb247Cisg
ICAgCisgICAgaWYgKGlzS2V5ZnJhbWUpIHsKKyAgICAgICAgY2FBbmltYXRpb24gPSBjcmVhdGVL
ZXlmcmFtZUFuaW1hdGlvbihhbmltYXRpb24sIHZhbHVlTGlzdC5wcm9wZXJ0eSgpLCBhZGRpdGl2
ZSk7CisgICAgICAgIHZhbHVlc09LID0gc2V0QW5pbWF0aW9uS2V5ZnJhbWVzKHZhbHVlTGlzdCwg
YW5pbWF0aW9uLCBjYUFuaW1hdGlvbi5nZXQoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgY2FB
bmltYXRpb24gPSBjcmVhdGVCYXNpY0FuaW1hdGlvbihhbmltYXRpb24sIHZhbHVlTGlzdC5wcm9w
ZXJ0eSgpLCBhZGRpdGl2ZSk7CisgICAgICAgIHZhbHVlc09LID0gc2V0QW5pbWF0aW9uRW5kcG9p
bnRzKHZhbHVlTGlzdCwgYW5pbWF0aW9uLCBjYUFuaW1hdGlvbi5nZXQoKSk7CisgICAgfQorICAg
IAorICAgIGlmICghdmFsdWVzT0spCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIG1fdW5j
b21pdHRlZEFuaW1hdGlvbnMuYXBwZW5kKExheWVyUHJvcGVydHlBbmltYXRpb24oY2FBbmltYXRp
b24sIGFuaW1hdGlvbk5hbWUsIHZhbHVlTGlzdC5wcm9wZXJ0eSgpLCBhbmltYXRpb25JbmRleCwg
dGltZU9mZnNldCkpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgR3JhcGhpY3NMYXll
ckNBOjpjcmVhdGVUcmFuc2Zvcm1BbmltYXRpb25zRnJvbUtleWZyYW1lcyhjb25zdCBLZXlmcmFt
ZVZhbHVlTGlzdCYgdmFsdWVMaXN0LCBjb25zdCBBbmltYXRpb24qIGFuaW1hdGlvbiwgY29uc3Qg
U3RyaW5nJiBhbmltYXRpb25OYW1lLCBkb3VibGUgdGltZU9mZnNldCwgY29uc3QgSW50U2l6ZSYg
Ym94U2l6ZSkKK3sKKyAgICBBU1NFUlQodmFsdWVMaXN0LnByb3BlcnR5KCkgPT0gQW5pbWF0ZWRQ
cm9wZXJ0eVdlYmtpdFRyYW5zZm9ybSk7CisKKyAgICBUcmFuc2Zvcm1PcGVyYXRpb25MaXN0IGZ1
bmN0aW9uTGlzdDsKKyAgICBib29sIGxpc3RzTWF0Y2gsIGhhc0JpZ1JvdGF0aW9uOworICAgIGZl
dGNoVHJhbnNmb3JtT3BlcmF0aW9uTGlzdCh2YWx1ZUxpc3QsIGZ1bmN0aW9uTGlzdCwgbGlzdHNN
YXRjaCwgaGFzQmlnUm90YXRpb24pOworCisgICAgLy8gV2UgbmVlZCB0byBmYWxsIGJhY2sgdG8g
c29mdHdhcmUgYW5pbWF0aW9uIGlmIHdlIGRvbid0IGhhdmUgc2V0VmFsdWVGdW5jdGlvbjosIGFu
ZAorICAgIC8vIHdlIHdvdWxkIG5lZWQgdG8gYW5pbWF0ZSBlYWNoIGluY29taW5nIHRyYW5zZm9y
bSBmdW5jdGlvbiBzZXBhcmF0ZWx5LiBUaGlzIGlzIHRoZQorICAgIC8vIGNhc2UgaWYgd2UgaGF2
ZSBhIHJvdGF0aW9uID49IDE4MCBvciB3ZSBoYXZlIG1vcmUgdGhhbiBvbmUgdHJhbnNmb3JtIGZ1
bmN0aW9uLgorICAgIGlmICgoaGFzQmlnUm90YXRpb24gfHwgZnVuY3Rpb25MaXN0LnNpemUoKSA+
IDEpICYmICFQbGF0Zm9ybUNBQW5pbWF0aW9uOjpzdXBwb3J0c1ZhbHVlRnVuY3Rpb24oKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYm9vbCB2YWxpZE1hdHJpY2VzID0gdHJ1ZTsKKwor
ICAgIC8vIElmIGZ1bmN0aW9uTGlzdHMgZG9uJ3QgbWF0Y2ggd2UgZG8gYSBtYXRyaXggYW5pbWF0
aW9uLCBvdGhlcndpc2Ugd2UgZG8gYSBjb21wb25lbnQgaGFyZHdhcmUgYW5pbWF0aW9uLgorICAg
IC8vIEFsc28sIHdlIGNhbid0IGRvIGNvbXBvbmVudCBhbmltYXRpb24gdW5sZXNzIHdlIGhhdmUg
dmFsdWVGdW5jdGlvbiwgc28gd2UgbmVlZCB0byBkbyBtYXRyaXggYW5pbWF0aW9uCisgICAgLy8g
aWYgdGhhdCdzIG5vdCB0cnVlIGFzIHdlbGwuCisgICAgYm9vbCBpc01hdHJpeEFuaW1hdGlvbiA9
ICFsaXN0c01hdGNoIHx8ICFQbGF0Zm9ybUNBQW5pbWF0aW9uOjpzdXBwb3J0c1ZhbHVlRnVuY3Rp
b24oKTsKKyAgICAKKyAgICBzaXplX3QgbnVtQW5pbWF0aW9ucyA9IGlzTWF0cml4QW5pbWF0aW9u
ID8gMSA6IGZ1bmN0aW9uTGlzdC5zaXplKCk7CisgICAgYm9vbCBpc0tleWZyYW1lID0gdmFsdWVM
aXN0LnNpemUoKSA+IDI7CisgICAgCisgICAgLy8gSXRlcmF0ZSB0aHJvdWdoIHRoZSB0cmFuc2Zv
cm0gZnVuY3Rpb25zLCBzZW5kaW5nIGFuIGFuaW1hdGlvbiBmb3IgZWFjaCBvbmUuCisgICAgZm9y
IChzaXplX3QgYW5pbWF0aW9uSW5kZXggPSAwOyBhbmltYXRpb25JbmRleCA8IG51bUFuaW1hdGlv
bnM7ICsrYW5pbWF0aW9uSW5kZXgpIHsKKyAgICAgICAgVHJhbnNmb3JtT3BlcmF0aW9uOjpPcGVy
YXRpb25UeXBlIHRyYW5zZm9ybU9wID0gaXNNYXRyaXhBbmltYXRpb24gPyBUcmFuc2Zvcm1PcGVy
YXRpb246Ok1BVFJJWF8zRCA6IGZ1bmN0aW9uTGlzdFthbmltYXRpb25JbmRleF07CisgICAgICAg
IFJlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBjYUFuaW1hdGlvbjsKKworI2lmIGRlZmluZWQo
QlVJTERJTkdfT05fTEVPUEFSRCkgfHwgZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQp
CisgICAgICAgIC8vIENBIGFwcGxpZXMgYW5pbWF0aW9ucyBpbiByZXZlcnNlIG9yZGVyICg8cmRh
cjovL3Byb2JsZW0vNzA5NTYzOD4pIHNvIHdlIG5lZWQgdGhlIGxhc3Qgb25lIHdlIGFkZCAocGVy
IHByb3BlcnR5KQorICAgICAgICAvLyB0byBiZSBub24tYWRkaXRpdmUuCisgICAgICAgIGJvb2wg
YWRkaXRpdmUgPSBhbmltYXRpb25JbmRleCA8IChudW1BbmltYXRpb25zIC0gMSk7CisjZWxzZQor
ICAgICAgICBib29sIGFkZGl0aXZlID0gYW5pbWF0aW9uSW5kZXggPiAwOworI2VuZGlmCisgICAg
ICAgIGlmIChpc0tleWZyYW1lKSB7CisgICAgICAgICAgICBjYUFuaW1hdGlvbiA9IGNyZWF0ZUtl
eWZyYW1lQW5pbWF0aW9uKGFuaW1hdGlvbiwgdmFsdWVMaXN0LnByb3BlcnR5KCksIGFkZGl0aXZl
KTsKKyAgICAgICAgICAgIHZhbGlkTWF0cmljZXMgPSBzZXRUcmFuc2Zvcm1BbmltYXRpb25LZXlm
cmFtZXModmFsdWVMaXN0LCBhbmltYXRpb24sIGNhQW5pbWF0aW9uLmdldCgpLCBhbmltYXRpb25J
bmRleCwgdHJhbnNmb3JtT3AsIGlzTWF0cml4QW5pbWF0aW9uLCBib3hTaXplKTsKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIGNhQW5pbWF0aW9uID0gY3JlYXRlQmFzaWNBbmltYXRpb24o
YW5pbWF0aW9uLCB2YWx1ZUxpc3QucHJvcGVydHkoKSwgYWRkaXRpdmUpOworICAgICAgICAgICAg
dmFsaWRNYXRyaWNlcyA9IHNldFRyYW5zZm9ybUFuaW1hdGlvbkVuZHBvaW50cyh2YWx1ZUxpc3Qs
IGFuaW1hdGlvbiwgY2FBbmltYXRpb24uZ2V0KCksIGFuaW1hdGlvbkluZGV4LCB0cmFuc2Zvcm1P
cCwgaXNNYXRyaXhBbmltYXRpb24sIGJveFNpemUpOworICAgICAgICB9CisgICAgICAgIAorICAg
ICAgICBpZiAoIXZhbGlkTWF0cmljZXMpCisgICAgICAgICAgICBicmVhazsKKyAgICAKKyAgICAg
ICAgbV91bmNvbWl0dGVkQW5pbWF0aW9ucy5hcHBlbmQoTGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbihj
YUFuaW1hdGlvbiwgYW5pbWF0aW9uTmFtZSwgdmFsdWVMaXN0LnByb3BlcnR5KCksIGFuaW1hdGlv
bkluZGV4LCB0aW1lT2Zmc2V0KSk7CisgICAgfQorCisgICAgcmV0dXJuIHZhbGlkTWF0cmljZXM7
Cit9CisKK1Bhc3NSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gR3JhcGhpY3NMYXllckNBOjpj
cmVhdGVCYXNpY0FuaW1hdGlvbihjb25zdCBBbmltYXRpb24qIGFuaW0sIEFuaW1hdGVkUHJvcGVy
dHlJRCBwcm9wZXJ0eSwgYm9vbCBhZGRpdGl2ZSkKK3sKKyAgICBSZWZQdHI8UGxhdGZvcm1DQUFu
aW1hdGlvbj4gYmFzaWNBbmltID0gUGxhdGZvcm1DQUFuaW1hdGlvbjo6Y3JlYXRlKFBsYXRmb3Jt
Q0FBbmltYXRpb246OkJhc2ljLCBwcm9wZXJ0eUlkVG9TdHJpbmcocHJvcGVydHkpKTsKKyAgICBz
ZXR1cEFuaW1hdGlvbihiYXNpY0FuaW0uZ2V0KCksIGFuaW0sIGFkZGl0aXZlKTsKKyAgICByZXR1
cm4gYmFzaWNBbmltOworfQorCitQYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+R3JhcGhp
Y3NMYXllckNBOjpjcmVhdGVLZXlmcmFtZUFuaW1hdGlvbihjb25zdCBBbmltYXRpb24qIGFuaW0s
IEFuaW1hdGVkUHJvcGVydHlJRCBwcm9wZXJ0eSwgYm9vbCBhZGRpdGl2ZSkKK3sKKyAgICBSZWZQ
dHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4ga2V5ZnJhbWVBbmltID0gUGxhdGZvcm1DQUFuaW1hdGlv
bjo6Y3JlYXRlKFBsYXRmb3JtQ0FBbmltYXRpb246OktleWZyYW1lLCBwcm9wZXJ0eUlkVG9TdHJp
bmcocHJvcGVydHkpKTsKKyAgICBzZXR1cEFuaW1hdGlvbihrZXlmcmFtZUFuaW0uZ2V0KCksIGFu
aW0sIGFkZGl0aXZlKTsKKyAgICByZXR1cm4ga2V5ZnJhbWVBbmltOworfQorCit2b2lkIEdyYXBo
aWNzTGF5ZXJDQTo6c2V0dXBBbmltYXRpb24oUGxhdGZvcm1DQUFuaW1hdGlvbiogcHJvcGVydHlB
bmltLCBjb25zdCBBbmltYXRpb24qIGFuaW0sIGJvb2wgYWRkaXRpdmUpCit7CisgICAgZG91Ymxl
IGR1cmF0aW9uID0gYW5pbS0+ZHVyYXRpb24oKTsKKyAgICBpZiAoZHVyYXRpb24gPD0gMCkKKyAg
ICAgICAgZHVyYXRpb24gPSBjQW5pbWF0aW9uQWxtb3N0WmVyb0R1cmF0aW9uOworCisgICAgZmxv
YXQgcmVwZWF0Q291bnQgPSBhbmltLT5pdGVyYXRpb25Db3VudCgpOworICAgIGlmIChyZXBlYXRD
b3VudCA9PSBBbmltYXRpb246Okl0ZXJhdGlvbkNvdW50SW5maW5pdGUpCisgICAgICAgIHJlcGVh
dENvdW50ID0gRkxUX01BWDsKKyAgICBlbHNlIGlmIChhbmltLT5kaXJlY3Rpb24oKSA9PSBBbmlt
YXRpb246OkFuaW1hdGlvbkRpcmVjdGlvbkFsdGVybmF0ZSkKKyAgICAgICAgcmVwZWF0Q291bnQg
Lz0gMjsKKworICAgIFBsYXRmb3JtQ0FBbmltYXRpb246OkZpbGxNb2RlVHlwZSBmaWxsTW9kZSA9
IFBsYXRmb3JtQ0FBbmltYXRpb246Ok5vRmlsbE1vZGU7CisgICAgc3dpdGNoIChhbmltLT5maWxs
TW9kZSgpKSB7CisgICAgY2FzZSBBbmltYXRpb25GaWxsTW9kZU5vbmU6CisgICAgICAgIGZpbGxN
b2RlID0gUGxhdGZvcm1DQUFuaW1hdGlvbjo6Rm9yd2FyZHM7IC8vIFVzZSAiZm9yd2FyZHMiIHJh
dGhlciB0aGFuICJyZW1vdmVkIiBiZWNhdXNlIHRoZSBzdHlsZSBzeXN0ZW0gd2lsbCByZW1vdmUg
dGhlIGFuaW1hdGlvbiB3aGVuIGl0IGlzIGZpbmlzaGVkLiBUaGlzIGF2b2lkcyBhIGZsYXNoLgor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIEFuaW1hdGlvbkZpbGxNb2RlQmFja3dhcmRzOgorICAg
ICAgICBmaWxsTW9kZSA9IFBsYXRmb3JtQ0FBbmltYXRpb246OkJvdGg7IC8vIFVzZSAiYm90aCIg
cmF0aGVyIHRoYW4gImJhY2t3YXJkcyIgYmVjYXVzZSB0aGUgc3R5bGUgc3lzdGVtIHdpbGwgcmVt
b3ZlIHRoZSBhbmltYXRpb24gd2hlbiBpdCBpcyBmaW5pc2hlZC4gVGhpcyBhdm9pZHMgYSBmbGFz
aC4KKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBbmltYXRpb25GaWxsTW9kZUZvcndhcmRzOgor
ICAgICAgICBmaWxsTW9kZSA9IFBsYXRmb3JtQ0FBbmltYXRpb246OkZvcndhcmRzOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIEFuaW1hdGlvbkZpbGxNb2RlQm90aDoKKyAgICAgICAgZmlsbE1v
ZGUgPSBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpCb3RoOworICAgICAgICBicmVhazsKKyAgICB9CisK
KyAgICBwcm9wZXJ0eUFuaW0tPnNldER1cmF0aW9uKGR1cmF0aW9uKTsKKyAgICBwcm9wZXJ0eUFu
aW0tPnNldFJlcGVhdENvdW50KHJlcGVhdENvdW50KTsKKyAgICBwcm9wZXJ0eUFuaW0tPnNldEF1
dG9yZXZlcnNlcyhhbmltLT5kaXJlY3Rpb24oKSk7CisgICAgcHJvcGVydHlBbmltLT5zZXRSZW1v
dmVkT25Db21wbGV0aW9uKGZhbHNlKTsKKyAgICBwcm9wZXJ0eUFuaW0tPnNldEFkZGl0aXZlKGFk
ZGl0aXZlKTsKKyAgICBwcm9wZXJ0eUFuaW0tPnNldEZpbGxNb2RlKGZpbGxNb2RlKTsKK30KKwor
Y29uc3QgVGltaW5nRnVuY3Rpb24qIEdyYXBoaWNzTGF5ZXJDQTo6dGltaW5nRnVuY3Rpb25Gb3JB
bmltYXRpb25WYWx1ZShjb25zdCBBbmltYXRpb25WYWx1ZSogYW5pbVZhbHVlLCBjb25zdCBBbmlt
YXRpb24qIGFuaW0pCit7CisgICAgaWYgKGFuaW1WYWx1ZS0+dGltaW5nRnVuY3Rpb24oKSkKKyAg
ICAgICAgcmV0dXJuIGFuaW1WYWx1ZS0+dGltaW5nRnVuY3Rpb24oKTsKKyAgICBpZiAoYW5pbS0+
aXNUaW1pbmdGdW5jdGlvblNldCgpKQorICAgICAgICByZXR1cm4gYW5pbS0+dGltaW5nRnVuY3Rp
b24oKS5nZXQoKTsKKyAgICAgICAgCisgICAgcmV0dXJuIDA7Cit9CisKK2Jvb2wgR3JhcGhpY3NM
YXllckNBOjpzZXRBbmltYXRpb25FbmRwb2ludHMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZh
bHVlTGlzdCwgY29uc3QgQW5pbWF0aW9uKiBhbmltLCBQbGF0Zm9ybUNBQW5pbWF0aW9uKiBiYXNp
Y0FuaW0pCit7CisgICAgc3dpdGNoICh2YWx1ZUxpc3QucHJvcGVydHkoKSkgeworICAgIGNhc2Ug
QW5pbWF0ZWRQcm9wZXJ0eU9wYWNpdHk6IHsKKyAgICAgICAgYmFzaWNBbmltLT5zZXRGcm9tVmFs
dWUoc3RhdGljX2Nhc3Q8Y29uc3QgRmxvYXRBbmltYXRpb25WYWx1ZSo+KHZhbHVlTGlzdC5hdCgw
KSktPnZhbHVlKCkpOworICAgICAgICBiYXNpY0FuaW0tPnNldFRvVmFsdWUoc3RhdGljX2Nhc3Q8
Y29uc3QgRmxvYXRBbmltYXRpb25WYWx1ZSo+KHZhbHVlTGlzdC5hdCgxKSktPnZhbHVlKCkpOwor
ICAgICAgICBicmVhazsKKyAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7IC8vIHdlIGRvbid0IGFuaW1hdGUgY29sb3IgeWV0CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKworICAgIC8vIFRoaXMgY29kZXBhdGggaXMgdXNlZCBmb3IgMi1rZXlmcmFtZSBhbmlt
YXRpb25zLCBzbyB3ZSBzdGlsbCBuZWVkIHRvIGxvb2sgaW4gdGhlIHN0YXJ0CisgICAgLy8gZm9y
IGEgdGltaW5nIGZ1bmN0aW9uLgorICAgIGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB0aW1pbmdGdW5j
dGlvbiA9IHRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUodmFsdWVMaXN0LmF0KDApLCBh
bmltKTsKKyAgICBpZiAodGltaW5nRnVuY3Rpb24pCisgICAgICAgIGJhc2ljQW5pbS0+c2V0VGlt
aW5nRnVuY3Rpb24odGltaW5nRnVuY3Rpb24pOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jv
b2wgR3JhcGhpY3NMYXllckNBOjpzZXRBbmltYXRpb25LZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVW
YWx1ZUxpc3QmIHZhbHVlTGlzdCwgY29uc3QgQW5pbWF0aW9uKiBhbmltLCBQbGF0Zm9ybUNBQW5p
bWF0aW9uKiBrZXlmcmFtZUFuaW0pCit7CisgICAgVmVjdG9yPGZsb2F0PiBrZXlUaW1lczsKKyAg
ICBWZWN0b3I8ZmxvYXQ+IHZhbHVlczsKKyAgICBWZWN0b3I8Y29uc3QgVGltaW5nRnVuY3Rpb24q
PiB0aW1pbmdGdW5jdGlvbnM7CisgICAgCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHZh
bHVlTGlzdC5zaXplKCk7ICsraSkgeworICAgICAgICBjb25zdCBBbmltYXRpb25WYWx1ZSogY3Vy
VmFsdWUgPSB2YWx1ZUxpc3QuYXQoaSk7CisgICAgICAgIGtleVRpbWVzLmFwcGVuZChjdXJWYWx1
ZS0+a2V5VGltZSgpKTsKKworICAgICAgICBzd2l0Y2ggKHZhbHVlTGlzdC5wcm9wZXJ0eSgpKSB7
CisgICAgICAgIGNhc2UgQW5pbWF0ZWRQcm9wZXJ0eU9wYWNpdHk6IHsKKyAgICAgICAgICAgIGNv
bnN0IEZsb2F0QW5pbWF0aW9uVmFsdWUqIGZsb2F0VmFsdWUgPSBzdGF0aWNfY2FzdDxjb25zdCBG
bG9hdEFuaW1hdGlvblZhbHVlKj4oY3VyVmFsdWUpOworICAgICAgICAgICAgdmFsdWVzLmFwcGVu
ZChmbG9hdFZhbHVlLT52YWx1ZSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9Cisg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgLy8gd2Ug
ZG9uJ3QgYW5pbWF0ZSBjb2xvciB5ZXQKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisK
KyAgICAgICAgdGltaW5nRnVuY3Rpb25zLmFwcGVuZCh0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlv
blZhbHVlKGN1clZhbHVlLCBhbmltKSk7CisgICAgfQorICAgIAorICAgIC8vIFdlIHRvc3MgdGhl
IGxhc3QgdGZBcnJheSB2YWx1ZSBiZWNhdXNlIGl0IGhhcyB0byBvbmUgc2hvcnRlciB0aGFuIHRo
ZSBvdGhlcnMuCisgICAgdGltaW5nRnVuY3Rpb25zLnJlbW92ZUxhc3QoKTsKKworICAgIGtleWZy
YW1lQW5pbS0+c2V0S2V5VGltZXMoa2V5VGltZXMpOworICAgIGtleWZyYW1lQW5pbS0+c2V0VmFs
dWVzKHZhbHVlcyk7CisgICAga2V5ZnJhbWVBbmltLT5zZXRUaW1pbmdGdW5jdGlvbnModGltaW5n
RnVuY3Rpb25zKTsKKyAgICAKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBHcmFwaGljc0xh
eWVyQ0E6OnNldFRyYW5zZm9ybUFuaW1hdGlvbkVuZHBvaW50cyhjb25zdCBLZXlmcmFtZVZhbHVl
TGlzdCYgdmFsdWVMaXN0LCBjb25zdCBBbmltYXRpb24qIGFuaW0sIFBsYXRmb3JtQ0FBbmltYXRp
b24qIGJhc2ljQW5pbSwgaW50IGZ1bmN0aW9uSW5kZXgsIFRyYW5zZm9ybU9wZXJhdGlvbjo6T3Bl
cmF0aW9uVHlwZSB0cmFuc2Zvcm1PcFR5cGUsIGJvb2wgaXNNYXRyaXhBbmltYXRpb24sIGNvbnN0
IEludFNpemUmIGJveFNpemUpCit7CisgICAgQVNTRVJUKHZhbHVlTGlzdC5zaXplKCkgPT0gMik7
CisgICAgY29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUqIHN0YXJ0VmFsdWUgPSBzdGF0aWNf
Y2FzdDxjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSo+KHZhbHVlTGlzdC5hdCgwKSk7Cisg
ICAgY29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUqIGVuZFZhbHVlID0gc3RhdGljX2Nhc3Q8
Y29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUqPih2YWx1ZUxpc3QuYXQoMSkpOworICAgIAor
ICAgIGlmIChpc01hdHJpeEFuaW1hdGlvbikgeworICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCBmcm9tVHJhbnNmb3JtLCB0b1RyYW5zZm9ybTsKKyAgICAgICAgc3RhcnRWYWx1ZS0+dmFsdWUo
KS0+YXBwbHkoYm94U2l6ZSwgZnJvbVRyYW5zZm9ybSk7CisgICAgICAgIGVuZFZhbHVlLT52YWx1
ZSgpLT5hcHBseShib3hTaXplLCB0b1RyYW5zZm9ybSk7CisKKyAgICAgICAgLy8gSWYgYW55IG1h
dHJpeCBpcyBzaW5ndWxhciwgQ0Egd29uJ3QgYW5pbWF0ZSBpdCBjb3JyZWN0bHkuIFNvIGZhbGwg
YmFjayB0byBzb2Z0d2FyZSBhbmltYXRpb24KKyAgICAgICAgaWYgKCFmcm9tVHJhbnNmb3JtLmlz
SW52ZXJ0aWJsZSgpIHx8ICF0b1RyYW5zZm9ybS5pc0ludmVydGlibGUoKSkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIAorICAgICAgICBiYXNpY0FuaW0tPnNldEZyb21W
YWx1ZShmcm9tVHJhbnNmb3JtKTsKKyAgICAgICAgYmFzaWNBbmltLT5zZXRUb1ZhbHVlKHRvVHJh
bnNmb3JtKTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoaXNUcmFuc2Zvcm1UeXBlTnVtYmVy
KHRyYW5zZm9ybU9wVHlwZSkpIHsKKyAgICAgICAgICAgIGZsb2F0IHZhbHVlOworICAgICAgICAg
ICAgZ2V0VHJhbnNmb3JtRnVuY3Rpb25WYWx1ZShzdGFydFZhbHVlLT52YWx1ZSgpLT5hdChmdW5j
dGlvbkluZGV4KSwgdHJhbnNmb3JtT3BUeXBlLCBib3hTaXplLCB2YWx1ZSk7CisgICAgICAgICAg
ICBiYXNpY0FuaW0tPnNldEZyb21WYWx1ZSh2YWx1ZSk7CisgICAgICAgICAgICBnZXRUcmFuc2Zv
cm1GdW5jdGlvblZhbHVlKGVuZFZhbHVlLT52YWx1ZSgpLT5hdChmdW5jdGlvbkluZGV4KSwgdHJh
bnNmb3JtT3BUeXBlLCBib3hTaXplLCB2YWx1ZSk7CisgICAgICAgICAgICBiYXNpY0FuaW0tPnNl
dFRvVmFsdWUodmFsdWUpOworICAgICAgICB9IGVsc2UgaWYgKGlzVHJhbnNmb3JtVHlwZUZsb2F0
UG9pbnQzRCh0cmFuc2Zvcm1PcFR5cGUpKSB7CisgICAgICAgICAgICBGbG9hdFBvaW50M0QgdmFs
dWU7CisgICAgICAgICAgICBnZXRUcmFuc2Zvcm1GdW5jdGlvblZhbHVlKHN0YXJ0VmFsdWUtPnZh
bHVlKCktPmF0KGZ1bmN0aW9uSW5kZXgpLCB0cmFuc2Zvcm1PcFR5cGUsIGJveFNpemUsIHZhbHVl
KTsKKyAgICAgICAgICAgIGJhc2ljQW5pbS0+c2V0RnJvbVZhbHVlKHZhbHVlKTsKKyAgICAgICAg
ICAgIGdldFRyYW5zZm9ybUZ1bmN0aW9uVmFsdWUoZW5kVmFsdWUtPnZhbHVlKCktPmF0KGZ1bmN0
aW9uSW5kZXgpLCB0cmFuc2Zvcm1PcFR5cGUsIGJveFNpemUsIHZhbHVlKTsKKyAgICAgICAgICAg
IGJhc2ljQW5pbS0+c2V0VG9WYWx1ZSh2YWx1ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB2YWx1ZTsKKyAgICAgICAgICAgIGdldFRyYW5zZm9y
bUZ1bmN0aW9uVmFsdWUoc3RhcnRWYWx1ZS0+dmFsdWUoKS0+YXQoZnVuY3Rpb25JbmRleCksIHRy
YW5zZm9ybU9wVHlwZSwgYm94U2l6ZSwgdmFsdWUpOworICAgICAgICAgICAgYmFzaWNBbmltLT5z
ZXRGcm9tVmFsdWUodmFsdWUpOworICAgICAgICAgICAgZ2V0VHJhbnNmb3JtRnVuY3Rpb25WYWx1
ZShlbmRWYWx1ZS0+dmFsdWUoKS0+YXQoZnVuY3Rpb25JbmRleCksIHRyYW5zZm9ybU9wVHlwZSwg
Ym94U2l6ZSwgdmFsdWUpOworICAgICAgICAgICAgYmFzaWNBbmltLT5zZXRUb1ZhbHVlKHZhbHVl
KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIFRoaXMgY29kZXBhdGggaXMgdXNlZCBmb3Ig
Mi1rZXlmcmFtZSBhbmltYXRpb25zLCBzbyB3ZSBzdGlsbCBuZWVkIHRvIGxvb2sgaW4gdGhlIHN0
YXJ0CisgICAgLy8gZm9yIGEgdGltaW5nIGZ1bmN0aW9uLgorICAgIGNvbnN0IFRpbWluZ0Z1bmN0
aW9uKiB0aW1pbmdGdW5jdGlvbiA9IHRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUodmFs
dWVMaXN0LmF0KDApLCBhbmltKTsKKyAgICBiYXNpY0FuaW0tPnNldFRpbWluZ0Z1bmN0aW9uKHRp
bWluZ0Z1bmN0aW9uKTsKKworI2lmIEhBVkVfTU9ERVJOX1FVQVJUWkNPUkUKKyAgICBQbGF0Zm9y
bUNBQW5pbWF0aW9uOjpWYWx1ZUZ1bmN0aW9uVHlwZSB2YWx1ZUZ1bmN0aW9uID0gZ2V0VmFsdWVG
dW5jdGlvbk5hbWVGb3JUcmFuc2Zvcm1PcGVyYXRpb24odHJhbnNmb3JtT3BUeXBlKTsKKyAgICBp
ZiAodmFsdWVGdW5jdGlvbiAhPSBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpOb1ZhbHVlRnVuY3Rpb24p
CisgICAgICAgIGJhc2ljQW5pbS0+c2V0VmFsdWVGdW5jdGlvbih2YWx1ZUZ1bmN0aW9uKTsKKyNl
bmRpZgorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgR3JhcGhpY3NMYXllckNBOjpzZXRU
cmFuc2Zvcm1BbmltYXRpb25LZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVl
TGlzdCwgY29uc3QgQW5pbWF0aW9uKiBhbmltYXRpb24sIFBsYXRmb3JtQ0FBbmltYXRpb24qIGtl
eWZyYW1lQW5pbSwgaW50IGZ1bmN0aW9uSW5kZXgsIFRyYW5zZm9ybU9wZXJhdGlvbjo6T3BlcmF0
aW9uVHlwZSB0cmFuc2Zvcm1PcFR5cGUsIGJvb2wgaXNNYXRyaXhBbmltYXRpb24sIGNvbnN0IElu
dFNpemUmIGJveFNpemUpCit7CisgICAgVmVjdG9yPGZsb2F0PiBrZXlUaW1lczsKKyAgICBWZWN0
b3I8ZmxvYXQ+IGZsb2F0VmFsdWVzOworICAgIFZlY3RvcjxGbG9hdFBvaW50M0Q+IGZsb2F0UG9p
bnQzRFZhbHVlczsKKyAgICBWZWN0b3I8VHJhbnNmb3JtYXRpb25NYXRyaXg+IHRyYW5zZm9ybWF0
aW9uTWF0cml4VmFsdWVzOworICAgIFZlY3Rvcjxjb25zdCBUaW1pbmdGdW5jdGlvbio+IHRpbWlu
Z0Z1bmN0aW9uczsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB2YWx1ZUxpc3Quc2l6
ZSgpOyArK2kpIHsKKyAgICAgICAgY29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUqIGN1clZh
bHVlID0gc3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUqPih2YWx1ZUxp
c3QuYXQoaSkpOworICAgICAgICBrZXlUaW1lcy5hcHBlbmQoY3VyVmFsdWUtPmtleVRpbWUoKSk7
CisKKyAgICAgICAgaWYgKGlzTWF0cml4QW5pbWF0aW9uKSB7CisgICAgICAgICAgICBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCB0cmFuc2Zvcm07CisgICAgICAgICAgICBjdXJWYWx1ZS0+dmFsdWUoKS0+
YXBwbHkoYm94U2l6ZSwgdHJhbnNmb3JtKTsKKworICAgICAgICAgICAgLy8gSWYgYW55IG1hdHJp
eCBpcyBzaW5ndWxhciwgQ0Egd29uJ3QgYW5pbWF0ZSBpdCBjb3JyZWN0bHkuIFNvIGZhbGwgYmFj
ayB0byBzb2Z0d2FyZSBhbmltYXRpb24KKyAgICAgICAgICAgIGlmICghdHJhbnNmb3JtLmlzSW52
ZXJ0aWJsZSgpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAg
dHJhbnNmb3JtYXRpb25NYXRyaXhWYWx1ZXMuYXBwZW5kKHRyYW5zZm9ybSk7CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICBjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb24qIHRyYW5zZm9ybU9w
ID0gY3VyVmFsdWUtPnZhbHVlKCktPmF0KGZ1bmN0aW9uSW5kZXgpOworICAgICAgICAgICAgaWYg
KGlzVHJhbnNmb3JtVHlwZU51bWJlcih0cmFuc2Zvcm1PcFR5cGUpKSB7CisgICAgICAgICAgICAg
ICAgZmxvYXQgdmFsdWU7CisgICAgICAgICAgICAgICAgZ2V0VHJhbnNmb3JtRnVuY3Rpb25WYWx1
ZSh0cmFuc2Zvcm1PcCwgdHJhbnNmb3JtT3BUeXBlLCBib3hTaXplLCB2YWx1ZSk7CisgICAgICAg
ICAgICAgICAgZmxvYXRWYWx1ZXMuYXBwZW5kKHZhbHVlKTsKKyAgICAgICAgICAgIH0gZWxzZSBp
ZiAoaXNUcmFuc2Zvcm1UeXBlRmxvYXRQb2ludDNEKHRyYW5zZm9ybU9wVHlwZSkpIHsKKyAgICAg
ICAgICAgICAgICBGbG9hdFBvaW50M0QgdmFsdWU7CisgICAgICAgICAgICAgICAgZ2V0VHJhbnNm
b3JtRnVuY3Rpb25WYWx1ZSh0cmFuc2Zvcm1PcCwgdHJhbnNmb3JtT3BUeXBlLCBib3hTaXplLCB2
YWx1ZSk7CisgICAgICAgICAgICAgICAgZmxvYXRQb2ludDNEVmFsdWVzLmFwcGVuZCh2YWx1ZSk7
CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0
cml4IHZhbHVlOworICAgICAgICAgICAgICAgIGdldFRyYW5zZm9ybUZ1bmN0aW9uVmFsdWUodHJh
bnNmb3JtT3AsIHRyYW5zZm9ybU9wVHlwZSwgYm94U2l6ZSwgdmFsdWUpOworICAgICAgICAgICAg
ICAgIHRyYW5zZm9ybWF0aW9uTWF0cml4VmFsdWVzLmFwcGVuZCh2YWx1ZSk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKworICAgICAgICBjb25zdCBUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVu
Y3Rpb24gPSB0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKGN1clZhbHVlLCBhbmltYXRp
b24pOworICAgICAgICB0aW1pbmdGdW5jdGlvbnMuYXBwZW5kKHRpbWluZ0Z1bmN0aW9uKTsKKyAg
ICB9CisgICAgCisgICAgLy8gV2UgdG9zcyB0aGUgbGFzdCB0ZkFycmF5IHZhbHVlIGJlY2F1c2Ug
aXQgaGFzIHRvIG9uZSBzaG9ydGVyIHRoYW4gdGhlIG90aGVycy4KKyAgICB0aW1pbmdGdW5jdGlv
bnMucmVtb3ZlTGFzdCgpOworCisgICAga2V5ZnJhbWVBbmltLT5zZXRLZXlUaW1lcyhrZXlUaW1l
cyk7CisgICAgCisgICAgaWYgKGlzVHJhbnNmb3JtVHlwZU51bWJlcih0cmFuc2Zvcm1PcFR5cGUp
KQorICAgICAgICBrZXlmcmFtZUFuaW0tPnNldFZhbHVlcyhmbG9hdFZhbHVlcyk7CisgICAgZWxz
ZSBpZiAoaXNUcmFuc2Zvcm1UeXBlRmxvYXRQb2ludDNEKHRyYW5zZm9ybU9wVHlwZSkpCisgICAg
ICAgIGtleWZyYW1lQW5pbS0+c2V0VmFsdWVzKGZsb2F0UG9pbnQzRFZhbHVlcyk7CisgICAgZWxz
ZQorICAgICAgICBrZXlmcmFtZUFuaW0tPnNldFZhbHVlcyh0cmFuc2Zvcm1hdGlvbk1hdHJpeFZh
bHVlcyk7CisgICAgICAgIAorICAgIGtleWZyYW1lQW5pbS0+c2V0VGltaW5nRnVuY3Rpb25zKHRp
bWluZ0Z1bmN0aW9ucyk7CisKKyNpZiBIQVZFX01PREVSTl9RVUFSVFpDT1JFCisgICAgUGxhdGZv
cm1DQUFuaW1hdGlvbjo6VmFsdWVGdW5jdGlvblR5cGUgdmFsdWVGdW5jdGlvbiA9IGdldFZhbHVl
RnVuY3Rpb25OYW1lRm9yVHJhbnNmb3JtT3BlcmF0aW9uKHRyYW5zZm9ybU9wVHlwZSk7CisgICAg
aWYgKHZhbHVlRnVuY3Rpb24gIT0gUGxhdGZvcm1DQUFuaW1hdGlvbjo6Tm9WYWx1ZUZ1bmN0aW9u
KQorICAgICAgICBrZXlmcmFtZUFuaW0tPnNldFZhbHVlRnVuY3Rpb24odmFsdWVGdW5jdGlvbik7
CisjZW5kaWYKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnN1
c3BlbmRBbmltYXRpb25zKGRvdWJsZSB0aW1lKQoreworICAgIGRvdWJsZSB0ID0gY3VycmVudFRp
bWVUb01lZGlhVGltZSh0aW1lID8gdGltZSA6IGN1cnJlbnRUaW1lKCkpOworICAgIHByaW1hcnlM
YXllcigpLT5zZXRTcGVlZCgwKTsKKyAgICBwcmltYXJ5TGF5ZXIoKS0+c2V0VGltZU9mZnNldCh0
KTsKKworICAgIC8vIFN1c3BlbmQgdGhlIGFuaW1hdGlvbnMgb24gdGhlIGNsb25lcyB0b28uCisg
ICAgaWYgKExheWVyTWFwKiBsYXllckNsb25lTWFwID0gcHJpbWFyeUxheWVyQ2xvbmVzKCkpIHsK
KyAgICAgICAgTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGxheWVyQ2xvbmVNYXAtPmVu
ZCgpOworICAgICAgICBmb3IgKExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGxheWVyQ2xv
bmVNYXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICAgICAgaXQtPnNlY29u
ZC0+c2V0U3BlZWQoMCk7CisgICAgICAgICAgICBpdC0+c2Vjb25kLT5zZXRUaW1lT2Zmc2V0KHQp
OworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6cmVzdW1lQW5p
bWF0aW9ucygpCit7CisgICAgcHJpbWFyeUxheWVyKCktPnNldFNwZWVkKDEpOworICAgIHByaW1h
cnlMYXllcigpLT5zZXRUaW1lT2Zmc2V0KDApOworCisgICAgLy8gUmVzdW1lIHRoZSBhbmltYXRp
b25zIG9uIHRoZSBjbG9uZXMgdG9vLgorICAgIGlmIChMYXllck1hcCogbGF5ZXJDbG9uZU1hcCA9
IHByaW1hcnlMYXllckNsb25lcygpKSB7CisgICAgICAgIExheWVyTWFwOjpjb25zdF9pdGVyYXRv
ciBlbmQgPSBsYXllckNsb25lTWFwLT5lbmQoKTsKKyAgICAgICAgZm9yIChMYXllck1hcDo6Y29u
c3RfaXRlcmF0b3IgaXQgPSBsYXllckNsb25lTWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQp
IHsKKyAgICAgICAgICAgIGl0LT5zZWNvbmQtPnNldFNwZWVkKDEpOworICAgICAgICAgICAgaXQt
PnNlY29uZC0+c2V0VGltZU9mZnNldCgwKTsKKyAgICAgICAgfQorICAgIH0KK30KKworUGxhdGZv
cm1DQUxheWVyKiBHcmFwaGljc0xheWVyQ0E6Omhvc3RMYXllckZvclN1YmxheWVycygpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fc3RydWN0dXJhbExheWVyLmdldCgpID8gbV9zdHJ1Y3R1cmFsTGF5
ZXIuZ2V0KCkgOiBtX2xheWVyLmdldCgpOyAKK30KKworUGxhdGZvcm1DQUxheWVyKiBHcmFwaGlj
c0xheWVyQ0E6OmxheWVyRm9yU3VwZXJsYXllcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc3Ry
dWN0dXJhbExheWVyID8gbV9zdHJ1Y3R1cmFsTGF5ZXIuZ2V0KCkgOiBtX2xheWVyLmdldCgpOwor
fQorCitQbGF0Zm9ybUNBTGF5ZXIqIEdyYXBoaWNzTGF5ZXJDQTo6YW5pbWF0ZWRMYXllcihBbmlt
YXRlZFByb3BlcnR5SUQgcHJvcGVydHkpIGNvbnN0Cit7CisgICAgcmV0dXJuIChwcm9wZXJ0eSA9
PSBBbmltYXRlZFByb3BlcnR5QmFja2dyb3VuZENvbG9yKSA/IG1fY29udGVudHNMYXllci5nZXQo
KSA6IHByaW1hcnlMYXllcigpOworfQorCitHcmFwaGljc0xheWVyQ0E6OkxheWVyTWFwKiBHcmFw
aGljc0xheWVyQ0E6OmFuaW1hdGVkTGF5ZXJDbG9uZXMoQW5pbWF0ZWRQcm9wZXJ0eUlEIHByb3Bl
cnR5KSBjb25zdAoreworICAgIHJldHVybiAocHJvcGVydHkgPT0gQW5pbWF0ZWRQcm9wZXJ0eUJh
Y2tncm91bmRDb2xvcikgPyBtX2NvbnRlbnRzTGF5ZXJDbG9uZXMuZ2V0KCkgOiBwcmltYXJ5TGF5
ZXJDbG9uZXMoKTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldERlYnVnQmFja2dyb3Vu
ZENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKK3sgICAgCisgICAgaWYgKGNvbG9yLmlzVmFsaWQo
KSkKKyAgICAgICAgbV9sYXllci0+c2V0QmFja2dyb3VuZENvbG9yKGNvbG9yKTsKKyAgICBlbHNl
CisgICAgICAgIG1fbGF5ZXItPnNldEJhY2tncm91bmRDb2xvcihDb2xvcjo6dHJhbnNwYXJlbnQp
OworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0RGVidWdCb3JkZXIoY29uc3QgQ29sb3Im
IGNvbG9yLCBmbG9hdCBib3JkZXJXaWR0aCkKK3sgICAgCisgICAgaWYgKGNvbG9yLmlzVmFsaWQo
KSkgeworICAgICAgICBtX2xheWVyLT5zZXRCb3JkZXJDb2xvcihjb2xvcik7CisgICAgICAgIG1f
bGF5ZXItPnNldEJvcmRlcldpZHRoKGJvcmRlcldpZHRoKTsKKyAgICB9IGVsc2UgeworICAgICAg
ICBtX2xheWVyLT5zZXRCb3JkZXJDb2xvcihDb2xvcjo6dHJhbnNwYXJlbnQpOworICAgICAgICBt
X2xheWVyLT5zZXRCb3JkZXJXaWR0aCgwKTsKKyAgICB9Cit9CisKK0Zsb2F0U2l6ZSBHcmFwaGlj
c0xheWVyQ0E6OmNvbnN0cmFpbmVkU2l6ZSgpIGNvbnN0Cit7CisgICAgZmxvYXQgdGlsZUNvbHVt
bnMgPSBjZWlsZihtX3NpemUud2lkdGgoKSAvIGtUaWxlZExheWVyVGlsZVNpemUpOworICAgIGZs
b2F0IHRpbGVSb3dzID0gY2VpbGYobV9zaXplLmhlaWdodCgpIC8ga1RpbGVkTGF5ZXJUaWxlU2l6
ZSk7CisgICAgZG91YmxlIG51bVRpbGVzID0gdGlsZUNvbHVtbnMgKiB0aWxlUm93czsKKyAgICAK
KyAgICBGbG9hdFNpemUgY29uc3RyYWluZWRTaXplID0gbV9zaXplOworICAgIGNvbnN0IHVuc2ln
bmVkIGNNYXhUaWxlQ291bnQgPSA1MTI7CisgICAgd2hpbGUgKG51bVRpbGVzID4gY01heFRpbGVD
b3VudCkgeworICAgICAgICAvLyBDb25zdHJhaW4gdGhlIHdpZGVyIGRpbWVuc2lvbi4KKyAgICAg
ICAgaWYgKGNvbnN0cmFpbmVkU2l6ZS53aWR0aCgpID49IGNvbnN0cmFpbmVkU2l6ZS5oZWlnaHQo
KSkgeworICAgICAgICAgICAgdGlsZUNvbHVtbnMgPSBtYXgoZmxvb3JmKGNNYXhUaWxlQ291bnQg
LyB0aWxlUm93cyksIDEuMGYpOworICAgICAgICAgICAgY29uc3RyYWluZWRTaXplLnNldFdpZHRo
KHRpbGVDb2x1bW5zICoga1RpbGVkTGF5ZXJUaWxlU2l6ZSk7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICB0aWxlUm93cyA9IG1heChmbG9vcmYoY01heFRpbGVDb3VudCAvIHRpbGVDb2x1
bW5zKSwgMS4wZik7CisgICAgICAgICAgICBjb25zdHJhaW5lZFNpemUuc2V0SGVpZ2h0KHRpbGVS
b3dzICoga1RpbGVkTGF5ZXJUaWxlU2l6ZSk7CisgICAgICAgIH0KKyAgICAgICAgbnVtVGlsZXMg
PSB0aWxlQ29sdW1ucyAqIHRpbGVSb3dzOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gY29uc3Ry
YWluZWRTaXplOworfQorCitib29sIEdyYXBoaWNzTGF5ZXJDQTo6cmVxdWlyZXNUaWxlZExheWVy
KGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkgY29uc3QKK3sKKyAgICBpZiAoIW1fZHJhd3NDb250ZW50
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBGSVhNRTogY2F0Y2ggemVyby1zaXpl
IGhlaWdodCBvciB3aWR0aCBoZXJlIChvciBlYXJsaWVyKT8KKyAgICByZXR1cm4gc2l6ZS53aWR0
aCgpID4gY01heFBpeGVsRGltZW5zaW9uIHx8IHNpemUuaGVpZ2h0KCkgPiBjTWF4UGl4ZWxEaW1l
bnNpb247Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpzd2FwRnJvbU9yVG9UaWxlZExheWVy
KGJvb2wgdXNlVGlsZWRMYXllcikKK3sKKyAgICBpZiAodXNlVGlsZWRMYXllciA9PSBtX3VzaW5n
VGlsZWRMYXllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgQ0dTaXplIHRpbGVTaXplID0gQ0dT
aXplTWFrZShrVGlsZWRMYXllclRpbGVTaXplLCBrVGlsZWRMYXllclRpbGVTaXplKTsKKworICAg
IFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IG9sZExheWVyID0gbV9sYXllcjsKKyAgICAKKyAgICBt
X2xheWVyID0gUGxhdGZvcm1DQUxheWVyOjpjcmVhdGUodXNlVGlsZWRMYXllciA/IFBsYXRmb3Jt
Q0FMYXllcjo6TGF5ZXJUeXBlV2ViVGlsZWRMYXllciA6IFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJU
eXBlV2ViTGF5ZXIsIHRoaXMpOworCisgICAgbV91c2luZ1RpbGVkTGF5ZXIgPSB1c2VUaWxlZExh
eWVyOworICAgIAorICAgIGlmICh1c2VUaWxlZExheWVyKSB7CisjaWYgIUhBVkVfTU9ERVJOX1FV
QVJUWkNPUkUKKyAgICAgICAgLy8gVGlsZWQgbGF5ZXIgaGFzIGlzc3VlcyB3aXRoIGZsaXBwZWQg
Y29vcmRpbmF0ZXMuCisgICAgICAgIHNldENvbnRlbnRzT3JpZW50YXRpb24oQ29tcG9zaXRpbmdD
b29yZGluYXRlc1RvcERvd24pOworI2VuZGlmCisgICAgfSBlbHNlIHsKKyNpZiAhSEFWRV9NT0RF
Uk5fUVVBUlRaQ09SRQorICAgICAgICBzZXRDb250ZW50c09yaWVudGF0aW9uKEdyYXBoaWNzTGF5
ZXJDQTo6ZGVmYXVsdENvbnRlbnRzT3JpZW50YXRpb24oKSk7CisjZW5kaWYKKyAgICB9CisKKyAg
ICBtX2xheWVyLT5hZG9wdFN1YmxheWVycyhvbGRMYXllci5nZXQoKSk7CisgICAgCisgICAgb2xk
TGF5ZXItPnN1cGVybGF5ZXIoKS0+cmVwbGFjZVN1YmxheWVyKG9sZExheWVyLmdldCgpLCBtX2xh
eWVyLmdldCgpKTsKKworICAgIHVwZGF0ZUNvbnRlbnRzVHJhbnNmb3JtKCk7CisKKyAgICB1cGRh
dGVMYXllclBvc2l0aW9uKCk7CisgICAgdXBkYXRlTGF5ZXJTaXplKCk7CisgICAgdXBkYXRlQW5j
aG9yUG9pbnQoKTsKKyAgICB1cGRhdGVUcmFuc2Zvcm0oKTsKKyAgICB1cGRhdGVDaGlsZHJlblRy
YW5zZm9ybSgpOworICAgIHVwZGF0ZU1hc2tzVG9Cb3VuZHMoKTsKKyAgICB1cGRhdGVDb250ZW50
c09wYXF1ZSgpOworICAgIHVwZGF0ZUJhY2tmYWNlVmlzaWJpbGl0eSgpOworICAgIHVwZGF0ZUxh
eWVyQmFja2dyb3VuZENvbG9yKCk7CisgICAgCisgICAgdXBkYXRlT3BhY2l0eU9uTGF5ZXIoKTsK
KyAgICAKKyNpZm5kZWYgTkRFQlVHCisgICAgU3RyaW5nIG5hbWUgPSBTdHJpbmc6OmZvcm1hdCgi
Q0FMYXllciglcCkgR3JhcGhpY3NMYXllciglcCkgIiwgbV9sYXllci5nZXQoKSwgdGhpcykgKyBt
X25hbWU7CisgICAgbV9sYXllci0+c2V0TmFtZShuYW1lKTsKKyNlbmRpZgorCisgICAgLy8gbW92
ZSBvdmVyIGFuaW1hdGlvbnMKKyAgICBtb3ZlT3JDb3B5QW5pbWF0aW9uc0ZvclByb3BlcnR5KE1v
dmUsIEFuaW1hdGVkUHJvcGVydHlXZWJraXRUcmFuc2Zvcm0sIG9sZExheWVyLmdldCgpLCBtX2xh
eWVyLmdldCgpKTsKKyAgICBtb3ZlT3JDb3B5QW5pbWF0aW9uc0ZvclByb3BlcnR5KE1vdmUsIEFu
aW1hdGVkUHJvcGVydHlPcGFjaXR5LCBvbGRMYXllci5nZXQoKSwgbV9sYXllci5nZXQoKSk7Cisg
ICAgbW92ZU9yQ29weUFuaW1hdGlvbnNGb3JQcm9wZXJ0eShNb3ZlLCBBbmltYXRlZFByb3BlcnR5
QmFja2dyb3VuZENvbG9yLCBvbGRMYXllci5nZXQoKSwgbV9sYXllci5nZXQoKSk7CisgICAgCisg
ICAgLy8gbmVlZCB0byB0ZWxsIG5ldyBsYXllciB0byBkcmF3IGl0c2VsZgorICAgIHNldE5lZWRz
RGlzcGxheSgpOworICAgIAorICAgIHVwZGF0ZURlYnVnSW5kaWNhdG9ycygpOworfQorCitHcmFw
aGljc0xheWVyOjpDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRpb24gR3JhcGhpY3NMYXll
ckNBOjpkZWZhdWx0Q29udGVudHNPcmllbnRhdGlvbigpIGNvbnN0Cit7CisjaWYgIUhBVkVfTU9E
RVJOX1FVQVJUWkNPUkUKKyAgICAvLyBPbGRlciBRdWFydHpDb3JlIGRvZXMgbm90IHN1cHBvcnQg
LWdlb21ldHJ5RmxpcHBlZCwgc28gd2UgbWFudWFsbHkgZmxpcCB0aGUgcm9vdAorICAgIC8vIGxh
eWVyIGdlb21ldHJ5LCBhbmQgdGhlbiBmbGlwIHRoZSBjb250ZW50cyBvZiBlYWNoIGxheWVyIGJh
Y2sgc28gdGhhdCB0aGUgQ1RNIGZvciBDRworICAgIC8vIGlzIHVuZmxpcHBlZCwgYWxsb3dpbmcg
aXQgdG8gZG8gdGhlIGNvcnJlY3QgZm9udCBhdXRvLWhpbnRpbmcuCisgICAgcmV0dXJuIENvbXBv
c2l0aW5nQ29vcmRpbmF0ZXNCb3R0b21VcDsKKyNlbHNlCisgICAgcmV0dXJuIENvbXBvc2l0aW5n
Q29vcmRpbmF0ZXNUb3BEb3duOworI2VuZGlmCit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjp1
cGRhdGVDb250ZW50c1RyYW5zZm9ybSgpCit7CisjaWYgIUhBVkVfTU9ERVJOX1FVQVJUWkNPUkUK
KyAgICBpZiAoY29udGVudHNPcmllbnRhdGlvbigpID09IENvbXBvc2l0aW5nQ29vcmRpbmF0ZXNC
b3R0b21VcCkgeworICAgICAgICBDR0FmZmluZVRyYW5zZm9ybSBjb250ZW50c1RyYW5zZm9ybSA9
IENHQWZmaW5lVHJhbnNmb3JtTWFrZVNjYWxlKDEsIC0xKTsKKyAgICAgICAgY29udGVudHNUcmFu
c2Zvcm0gPSBDR0FmZmluZVRyYW5zZm9ybVRyYW5zbGF0ZShjb250ZW50c1RyYW5zZm9ybSwgMCwg
LW1fbGF5ZXItPmJvdW5kcygpLnNpemUoKS5oZWlnaHQoKSk7CisgICAgICAgIFRyYW5zZm9ybWF0
aW9uTWF0cml4IHRyYW5zZm9ybTNEKGNvbnRlbnRzVHJhbnNmb3JtLmEsIGNvbnRlbnRzVHJhbnNm
b3JtLmIsIGNvbnRlbnRzVHJhbnNmb3JtLmMsIGNvbnRlbnRzVHJhbnNmb3JtLmQsIGNvbnRlbnRz
VHJhbnNmb3JtLnR4LCBjb250ZW50c1RyYW5zZm9ybS50eSk7CisgICAgICAgIG1fbGF5ZXItPnNl
dENvbnRlbnRzVHJhbnNmb3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4KHRyYW5zZm9ybTNEKSk7Cisg
ICAgfQorI2VuZGlmCit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXR1cENvbnRlbnRzTGF5
ZXIoUGxhdGZvcm1DQUxheWVyKiBjb250ZW50c0xheWVyKQoreworICAgIC8vIFR1cm4gb2ZmIGlt
cGxpY2l0IGFuaW1hdGlvbnMgb24gdGhlIGlubmVyIGxheWVyLgorICAgIGNvbnRlbnRzTGF5ZXIt
PnNldE1hc2tzVG9Cb3VuZHModHJ1ZSk7CisKKyAgICBpZiAoZGVmYXVsdENvbnRlbnRzT3JpZW50
YXRpb24oKSA9PSBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzQm90dG9tVXApIHsKKyAgICAgICAgVHJh
bnNmb3JtYXRpb25NYXRyaXggZmxpcHBlcigKKyAgICAgICAgICAgIDEuMGYsIDAuMGYsIDAuMGYs
IDAuMGYsCisgICAgICAgICAgICAwLjBmLCAtMS4wZiwgMC4wZiwgMC4wZiwKKyAgICAgICAgICAg
IDAuMGYsIDAuMGYsIDEuMGYsIDAuMGYsCisgICAgICAgICAgICAwLjBmLCAwLjBmLCAwLjBmLCAx
LjBmKTsKKyAgICAgICAgY29udGVudHNMYXllci0+c2V0VHJhbnNmb3JtKGZsaXBwZXIpOworICAg
ICAgICBjb250ZW50c0xheWVyLT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50M0QoMCwgMSwgMCkp
OworICAgIH0gZWxzZQorICAgICAgICBjb250ZW50c0xheWVyLT5zZXRBbmNob3JQb2ludChGbG9h
dFBvaW50M0QoKSk7CisKKyAgICBpZiAoc2hvd0RlYnVnQm9yZGVycygpKSB7CisgICAgICAgIGNv
bnRlbnRzTGF5ZXItPnNldEJvcmRlckNvbG9yKENvbG9yKDAsIDAsIDEyOCwgMTgwKSk7CisgICAg
ICAgIGNvbnRlbnRzTGF5ZXItPnNldEJvcmRlcldpZHRoKDEuMGYpOworICAgIH0KK30KKworUGFz
c1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IEdyYXBoaWNzTGF5ZXJDQTo6ZmluZE9yTWFrZUNsb25l
KENsb25lSUQgY2xvbmVJRCwgUGxhdGZvcm1DQUxheWVyICpzb3VyY2VMYXllciwgTGF5ZXJNYXAq
IGNsb25lcywgQ2xvbmVMZXZlbCBjbG9uZUxldmVsKQoreworICAgIGlmICghc291cmNlTGF5ZXIp
CisgICAgICAgIHJldHVybiAwOworCisgICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gcmVzdWx0
TGF5ZXI7CisKKyAgICAvLyBBZGQgd2l0aCBhIGR1bW15IHZhbHVlIHRvIGdldCBhbiBpdGVyYXRv
ciBmb3IgdGhlIGluc2VydGlvbiBwb3NpdGlvbiwgYW5kIGEgYm9vbGVhbiB0aGF0IHRlbGxzCisg
ICAgLy8gdXMgd2hldGhlciB0aGVyZSdzIGFuIGl0ZW0gdGhlcmUuIFRoaXMgdGVjaG5pcXVlIGF2
b2lkcyB0d28gaGFzaCBsb29rdXBzLgorICAgIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IGR1bW15
OworICAgIHBhaXI8TGF5ZXJNYXA6Oml0ZXJhdG9yLCBib29sPiBhZGRSZXN1bHQgPSBjbG9uZXMt
PmFkZChjbG9uZUlELCBkdW1teSk7CisgICAgaWYgKCFhZGRSZXN1bHQuc2Vjb25kKSB7CisgICAg
ICAgIC8vIFZhbHVlIHdhcyBub3QgYWRkZWQsIHNvIGl0IGV4aXN0cyBhbHJlYWR5LgorICAgICAg
ICByZXN1bHRMYXllciA9IGFkZFJlc3VsdC5maXJzdC0+c2Vjb25kLmdldCgpOworICAgIH0gZWxz
ZSB7CisgICAgICAgIHJlc3VsdExheWVyID0gY2xvbmVMYXllcihzb3VyY2VMYXllciwgY2xvbmVM
ZXZlbCk7CisjaWZuZGVmIE5ERUJVRworICAgICAgICByZXN1bHRMYXllci0+c2V0TmFtZShTdHJp
bmc6OmZvcm1hdCgiQ2xvbmUgJWQgb2YgbGF5ZXIgJXAiLCBjbG9uZUlEWzBVXSwgc291cmNlTGF5
ZXIpKTsKKyNlbmRpZgorICAgICAgICBhZGRSZXN1bHQuZmlyc3QtPnNlY29uZCA9IHJlc3VsdExh
eWVyOworICAgIH0KKworICAgIHJldHVybiByZXN1bHRMYXllcjsKK30gICAKKwordm9pZCBHcmFw
aGljc0xheWVyQ0E6OmVuc3VyZUNsb25lTGF5ZXJzKENsb25lSUQgY2xvbmVJRCwgUmVmUHRyPFBs
YXRmb3JtQ0FMYXllcj4mIHByaW1hcnlMYXllciwgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4mIHN0
cnVjdHVyYWxMYXllciwgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4mIGNvbnRlbnRzTGF5ZXIsIENs
b25lTGV2ZWwgY2xvbmVMZXZlbCkKK3sKKyAgICBzdHJ1Y3R1cmFsTGF5ZXIgPSBuaWw7CisgICAg
Y29udGVudHNMYXllciA9IG5pbDsKKworICAgIGlmICghbV9sYXllckNsb25lcykKKyAgICAgICAg
bV9sYXllckNsb25lcyA9IG5ldyBMYXllck1hcDsKKworICAgIGlmICghbV9zdHJ1Y3R1cmFsTGF5
ZXJDbG9uZXMgJiYgbV9zdHJ1Y3R1cmFsTGF5ZXIpCisgICAgICAgIG1fc3RydWN0dXJhbExheWVy
Q2xvbmVzID0gbmV3IExheWVyTWFwOworCisgICAgaWYgKCFtX2NvbnRlbnRzTGF5ZXJDbG9uZXMg
JiYgbV9jb250ZW50c0xheWVyKQorICAgICAgICBtX2NvbnRlbnRzTGF5ZXJDbG9uZXMgPSBuZXcg
TGF5ZXJNYXA7CisKKyAgICBwcmltYXJ5TGF5ZXIgPSBmaW5kT3JNYWtlQ2xvbmUoY2xvbmVJRCwg
bV9sYXllci5nZXQoKSwgbV9sYXllckNsb25lcy5nZXQoKSwgY2xvbmVMZXZlbCk7CisgICAgc3Ry
dWN0dXJhbExheWVyID0gZmluZE9yTWFrZUNsb25lKGNsb25lSUQsIG1fc3RydWN0dXJhbExheWVy
LmdldCgpLCBtX3N0cnVjdHVyYWxMYXllckNsb25lcy5nZXQoKSwgY2xvbmVMZXZlbCk7CisgICAg
Y29udGVudHNMYXllciA9IGZpbmRPck1ha2VDbG9uZShjbG9uZUlELCBtX2NvbnRlbnRzTGF5ZXIu
Z2V0KCksIG1fY29udGVudHNMYXllckNsb25lcy5nZXQoKSwgY2xvbmVMZXZlbCk7Cit9CisKK3Zv
aWQgR3JhcGhpY3NMYXllckNBOjpyZW1vdmVDbG9uZUxheWVycygpCit7CisgICAgbV9sYXllckNs
b25lcyA9IDA7CisgICAgbV9zdHJ1Y3R1cmFsTGF5ZXJDbG9uZXMgPSAwOworICAgIG1fY29udGVu
dHNMYXllckNsb25lcyA9IDA7Cit9CisKK0Zsb2F0UG9pbnQgR3JhcGhpY3NMYXllckNBOjpwb3Np
dGlvbkZvckNsb25lUm9vdExheWVyKCkgY29uc3QKK3sKKyAgICAvLyBUaGlzIGNhbiBnZXQgY2Fs
bGVkIGR1cmluZyBhIHN5bmMgd2hlbiB3ZSd2ZSBqdXN0IHJlbW92ZWQgdGhlIG1fcmVwbGljYUxh
eWVyLgorICAgIGlmICghbV9yZXBsaWNhTGF5ZXIpCisgICAgICAgIHJldHVybiBGbG9hdFBvaW50
KCk7CisKKyAgICBGbG9hdFBvaW50IHJlcGxpY2FQb3NpdGlvbiA9IG1fcmVwbGljYUxheWVyLT5y
ZXBsaWNhdGVkTGF5ZXJQb3NpdGlvbigpOworICAgIHJldHVybiBGbG9hdFBvaW50KHJlcGxpY2FQ
b3NpdGlvbi54KCkgKyBtX2FuY2hvclBvaW50LngoKSAqIG1fc2l6ZS53aWR0aCgpLAorICAgICAg
ICAgICAgICAgICAgICAgIHJlcGxpY2FQb3NpdGlvbi55KCkgKyBtX2FuY2hvclBvaW50LnkoKSAq
IG1fc2l6ZS5oZWlnaHQoKSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpwcm9wYWdhdGVM
YXllckNoYW5nZVRvUmVwbGljYXMoKQoreworICAgIGZvciAoR3JhcGhpY3NMYXllciogY3Vyckxh
eWVyID0gdGhpczsgY3VyckxheWVyOyBjdXJyTGF5ZXIgPSBjdXJyTGF5ZXItPnBhcmVudCgpKSB7
CisgICAgICAgIEdyYXBoaWNzTGF5ZXJDQSogY3VyckxheWVyQ0EgPSBzdGF0aWNfY2FzdDxHcmFw
aGljc0xheWVyQ0EqPihjdXJyTGF5ZXIpOworICAgICAgICBpZiAoIWN1cnJMYXllckNBLT5oYXND
bG9uZUxheWVycygpKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgaWYgKGN1cnJMYXll
ckNBLT5yZXBsaWNhTGF5ZXIoKSkKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5
ZXJDQSo+KGN1cnJMYXllckNBLT5yZXBsaWNhTGF5ZXIoKSktPm5vdGVMYXllclByb3BlcnR5Q2hh
bmdlZChSZXBsaWNhdGVkTGF5ZXJDaGFuZ2VkKTsKKyAgICB9Cit9CisKK1Bhc3NSZWZQdHI8UGxh
dGZvcm1DQUxheWVyPiBHcmFwaGljc0xheWVyQ0E6OmZldGNoQ2xvbmVMYXllcnMoR3JhcGhpY3NM
YXllciogcmVwbGljYVJvb3QsIFJlcGxpY2FTdGF0ZSYgcmVwbGljYVN0YXRlLCBDbG9uZUxldmVs
IGNsb25lTGV2ZWwpCit7CisgICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gcHJpbWFyeUxheWVy
OworICAgIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IHN0cnVjdHVyYWxMYXllcjsKKyAgICBSZWZQ
dHI8UGxhdGZvcm1DQUxheWVyPiBjb250ZW50c0xheWVyOworICAgIGVuc3VyZUNsb25lTGF5ZXJz
KHJlcGxpY2FTdGF0ZS5jbG9uZUlEKCksIHByaW1hcnlMYXllciwgc3RydWN0dXJhbExheWVyLCBj
b250ZW50c0xheWVyLCBjbG9uZUxldmVsKTsKKworICAgIGlmIChtX21hc2tMYXllcikgeworICAg
ICAgICBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBtYXNrQ2xvbmUgPSBzdGF0aWNfY2FzdDxHcmFw
aGljc0xheWVyQ0EqPihtX21hc2tMYXllciktPmZldGNoQ2xvbmVMYXllcnMocmVwbGljYVJvb3Qs
IHJlcGxpY2FTdGF0ZSwgSW50ZXJtZWRpYXRlQ2xvbmVMZXZlbCk7CisgICAgICAgIHByaW1hcnlM
YXllci0+c2V0TWFzayhtYXNrQ2xvbmUuZ2V0KCkpOworICAgIH0KKworICAgIGlmIChtX3JlcGxp
Y2F0ZWRMYXllcikgeworICAgICAgICAvLyBXZSBhcmUgYSByZXBsaWNhIGJlaW5nIGFza2VkIGZv
ciBjbG9uZXMgb2Ygb3VyIGxheWVycy4KKyAgICAgICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4g
cmVwbGljYVJvb3QgPSByZXBsaWNhdGVkTGF5ZXJSb290KHJlcGxpY2FTdGF0ZSk7CisgICAgICAg
IGlmICghcmVwbGljYVJvb3QpCisgICAgICAgICAgICByZXR1cm4gbmlsOworCisgICAgICAgIGlm
IChzdHJ1Y3R1cmFsTGF5ZXIpIHsKKyAgICAgICAgICAgIHN0cnVjdHVyYWxMYXllci0+aW5zZXJ0
U3VibGF5ZXIocmVwbGljYVJvb3QuZ2V0KCksIDApOworICAgICAgICAgICAgcmV0dXJuIHN0cnVj
dHVyYWxMYXllcjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcHJpbWFyeUxheWVyLT5p
bnNlcnRTdWJsYXllcihyZXBsaWNhUm9vdC5nZXQoKSwgMCk7CisgICAgICAgIHJldHVybiBwcmlt
YXJ5TGF5ZXI7CisgICAgfQorCisgICAgY29uc3QgVmVjdG9yPEdyYXBoaWNzTGF5ZXIqPiYgY2hp
bGRMYXllcnMgPSBjaGlsZHJlbigpOworICAgIFZlY3RvcjxSZWZQdHI8UGxhdGZvcm1DQUxheWVy
PiA+IGNsb25hbFN1YmxheWVyczsKKworICAgIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IHJlcGxp
Y2FMYXllcjsKKyAgICAKKyAgICBpZiAobV9yZXBsaWNhTGF5ZXIgJiYgbV9yZXBsaWNhTGF5ZXIg
IT0gcmVwbGljYVJvb3QpIHsKKyAgICAgICAgLy8gV2UgaGF2ZSBuZXN0ZWQgcmVwbGljYXMuIEFz
ayB0aGUgcmVwbGljYSBsYXllciBmb3IgYSBjbG9uZSBvZiBpdHMgY29udGVudHMuCisgICAgICAg
IHJlcGxpY2FTdGF0ZS5zZXRCcmFuY2hUeXBlKFJlcGxpY2FTdGF0ZTo6UmVwbGljYUJyYW5jaCk7
CisgICAgICAgIHJlcGxpY2FMYXllciA9IHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXJDQSo+KG1f
cmVwbGljYUxheWVyKS0+ZmV0Y2hDbG9uZUxheWVycyhyZXBsaWNhUm9vdCwgcmVwbGljYVN0YXRl
LCBSb290Q2xvbmVMZXZlbCk7CisgICAgICAgIHJlcGxpY2FTdGF0ZS5zZXRCcmFuY2hUeXBlKFJl
cGxpY2FTdGF0ZTo6Q2hpbGRCcmFuY2gpOworICAgIH0KKyAgICAKKyAgICBpZiAocmVwbGljYUxh
eWVyIHx8IHN0cnVjdHVyYWxMYXllciB8fCBjb250ZW50c0xheWVyIHx8IGNoaWxkTGF5ZXJzLnNp
emUoKSA+IDApIHsKKyAgICAgICAgaWYgKHN0cnVjdHVyYWxMYXllcikgeworICAgICAgICAgICAg
Ly8gUmVwbGljYXMgcmVuZGVyIGJlaGluZCB0aGUgYWN0dWFsIGxheWVyIGNvbnRlbnQuCisgICAg
ICAgICAgICBpZiAocmVwbGljYUxheWVyKQorICAgICAgICAgICAgICAgIGNsb25hbFN1YmxheWVy
cy5hcHBlbmQocmVwbGljYUxheWVyKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIC8v
IEFkZCB0aGUgcHJpbWFyeSBsYXllciBuZXh0LiBFdmVuIGlmIHdlIGhhdmUgbmVnYXRpdmUgei1v
cmRlciBjaGlsZHJlbiwgdGhlIHByaW1hcnkgbGF5ZXIgYWx3YXlzIGNvbWVzIGJlaGluZC4KKyAg
ICAgICAgICAgIGNsb25hbFN1YmxheWVycy5hcHBlbmQocHJpbWFyeUxheWVyKTsKKyAgICAgICAg
fSBlbHNlIGlmIChjb250ZW50c0xheWVyKSB7CisgICAgICAgICAgICAvLyBGSVhNRTogYWRkIHRo
ZSBjb250ZW50cyBsYXllciBpbiB0aGUgY29ycmVjdCBvcmRlciB3aXRoIG5lZ2F0aXZlIHotb3Jk
ZXIgY2hpbGRyZW4uCisgICAgICAgICAgICAvLyBUaGlzIGRvZXMgbm90IGNhdXNlIHZpc2libGUg
cmVuZGVyaW5nIGlzc3VlcyBiZWNhdXNlIGN1cnJlbnRseSBjb250ZW50cyBsYXllcnMgYXJlIG9u
bHkgdXNlZAorICAgICAgICAgICAgLy8gZm9yIHJlcGxhY2VkIGVsZW1lbnRzIHRoYXQgZG9uJ3Qg
aGF2ZSBjaGlsZHJlbi4KKyAgICAgICAgICAgIGNsb25hbFN1YmxheWVycy5hcHBlbmQoY29udGVu
dHNMYXllcik7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHJlcGxpY2FTdGF0ZS5wdXNo
KFJlcGxpY2FTdGF0ZTo6Q2hpbGRCcmFuY2gpOworCisgICAgICAgIHNpemVfdCBudW1DaGlsZHJl
biA9IGNoaWxkTGF5ZXJzLnNpemUoKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBu
dW1DaGlsZHJlbjsgKytpKSB7CisgICAgICAgICAgICBHcmFwaGljc0xheWVyQ0EqIGN1ckNoaWxk
ID0gc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllckNBKj4oY2hpbGRMYXllcnNbaV0pOworCisgICAg
ICAgICAgICBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBjaGlsZExheWVyID0gY3VyQ2hpbGQtPmZl
dGNoQ2xvbmVMYXllcnMocmVwbGljYVJvb3QsIHJlcGxpY2FTdGF0ZSwgSW50ZXJtZWRpYXRlQ2xv
bmVMZXZlbCk7CisgICAgICAgICAgICBpZiAoY2hpbGRMYXllcikKKyAgICAgICAgICAgICAgICBj
bG9uYWxTdWJsYXllcnMuYXBwZW5kKGNoaWxkTGF5ZXIpOworICAgICAgICB9CisKKyAgICAgICAg
cmVwbGljYVN0YXRlLnBvcCgpOworCisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2xv
bmFsU3VibGF5ZXJzLnNpemUoKTsgKytpKQorICAgICAgICAgICAgY2xvbmFsU3VibGF5ZXJzW2ld
LT5yZW1vdmVGcm9tU3VwZXJsYXllcigpOworICAgIH0KKyAgICAKKyAgICBSZWZQdHI8UGxhdGZv
cm1DQUxheWVyPiByZXN1bHQ7CisgICAgaWYgKHN0cnVjdHVyYWxMYXllcikgeworICAgICAgICBz
dHJ1Y3R1cmFsTGF5ZXItPnNldFN1YmxheWVycyhjbG9uYWxTdWJsYXllcnMpOworCisgICAgICAg
IGlmIChjb250ZW50c0xheWVyKSB7CisgICAgICAgICAgICAvLyBJZiB3ZSBoYXZlIGEgdHJhbnNm
b3JtIGxheWVyLCB0aGVuIHRoZSBjb250ZW50cyBsYXllciBpcyBwYXJlbnRlZCBpbiB0aGUgCisg
ICAgICAgICAgICAvLyBwcmltYXJ5IGxheWVyICh3aGljaCBpcyBpdHNlbGYgYSBjaGlsZCBvZiB0
aGUgdHJhbnNmb3JtIGxheWVyKS4KKyAgICAgICAgICAgIHByaW1hcnlMYXllci0+cmVtb3ZlQWxs
U3VibGF5ZXJzKCk7CisgICAgICAgICAgICBwcmltYXJ5TGF5ZXItPmFwcGVuZFN1YmxheWVyKGNv
bnRlbnRzTGF5ZXIuZ2V0KCkpOworICAgICAgICB9CisKKyAgICAgICAgcmVzdWx0ID0gc3RydWN0
dXJhbExheWVyOworICAgIH0gZWxzZSB7CisgICAgICAgIHByaW1hcnlMYXllci0+c2V0U3VibGF5
ZXJzKGNsb25hbFN1YmxheWVycyk7CisgICAgICAgIHJlc3VsdCA9IHByaW1hcnlMYXllcjsKKyAg
ICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXll
cj4gR3JhcGhpY3NMYXllckNBOjpjbG9uZUxheWVyKFBsYXRmb3JtQ0FMYXllciAqbGF5ZXIsIENs
b25lTGV2ZWwgY2xvbmVMZXZlbCkKK3sKKyAgICBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSBs
YXllclR5cGUgPSAobGF5ZXItPmxheWVyVHlwZSgpID09IFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJU
eXBlVHJhbnNmb3JtTGF5ZXIpID8gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVRyYW5zZm9ybUxheWVyIDog
UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVMYXllcjsKKyAgICBSZWZQdHI8UGxhdGZvcm1DQUxh
eWVyPiBuZXdMYXllciA9IFBsYXRmb3JtQ0FMYXllcjo6Y3JlYXRlKGxheWVyVHlwZSwgdGhpcyk7
CisgICAgCisgICAgbmV3TGF5ZXItPnNldFBvc2l0aW9uKGxheWVyLT5wb3NpdGlvbigpKTsKKyAg
ICBuZXdMYXllci0+c2V0Qm91bmRzKGxheWVyLT5ib3VuZHMoKSk7CisgICAgbmV3TGF5ZXItPnNl
dEFuY2hvclBvaW50KGxheWVyLT5hbmNob3JQb2ludCgpKTsKKyAgICBuZXdMYXllci0+c2V0VHJh
bnNmb3JtKGxheWVyLT50cmFuc2Zvcm0oKSk7CisgICAgbmV3TGF5ZXItPnNldFN1YmxheWVyVHJh
bnNmb3JtKGxheWVyLT5zdWJsYXllclRyYW5zZm9ybSgpKTsKKyAgICBuZXdMYXllci0+c2V0Q29u
dGVudHMobGF5ZXItPmNvbnRlbnRzKCkpOworICAgIG5ld0xheWVyLT5zZXRNYXNrc1RvQm91bmRz
KGxheWVyLT5tYXNrc1RvQm91bmRzKCkpOworICAgIG5ld0xheWVyLT5zZXREb3VibGVTaWRlZChs
YXllci0+aXNEb3VibGVTaWRlZCgpKTsKKyAgICBuZXdMYXllci0+c2V0T3BhcXVlKGxheWVyLT5p
c09wYXF1ZSgpKTsKKyAgICBuZXdMYXllci0+c2V0QmFja2dyb3VuZENvbG9yKGxheWVyLT5iYWNr
Z3JvdW5kQ29sb3IoKSk7CisKKyAgICBpZiAoY2xvbmVMZXZlbCA9PSBJbnRlcm1lZGlhdGVDbG9u
ZUxldmVsKSB7CisgICAgICAgIG5ld0xheWVyLT5zZXRPcGFjaXR5KGxheWVyLT5vcGFjaXR5KCkp
OworICAgICAgICBtb3ZlT3JDb3B5QW5pbWF0aW9uc0ZvclByb3BlcnR5KENvcHksIEFuaW1hdGVk
UHJvcGVydHlXZWJraXRUcmFuc2Zvcm0sIGxheWVyLCBuZXdMYXllci5nZXQoKSk7CisgICAgICAg
IG1vdmVPckNvcHlBbmltYXRpb25zRm9yUHJvcGVydHkoQ29weSwgQW5pbWF0ZWRQcm9wZXJ0eU9w
YWNpdHksIGxheWVyLCBuZXdMYXllci5nZXQoKSk7CisgICAgfQorICAgIAorICAgIGlmIChzaG93
RGVidWdCb3JkZXJzKCkpIHsKKyAgICAgICAgbmV3TGF5ZXItPnNldEJvcmRlckNvbG9yKENvbG9y
KDI1NSwgMTIyLCAyNTEpKTsKKyAgICAgICAgbmV3TGF5ZXItPnNldEJvcmRlcldpZHRoKDIpOwor
ICAgIH0KKyAgICAKKyAgICByZXR1cm4gbmV3TGF5ZXI7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXll
ckNBOjpzZXRPcGFjaXR5SW50ZXJuYWwoZmxvYXQgYWNjdW11bGF0ZWRPcGFjaXR5KQoreworICAg
IExheWVyTWFwKiBsYXllckNsb25lTWFwID0gMDsKKyAgICAKKyAgICBpZiAocHJlc2VydmVzM0Qo
KSkgeworICAgICAgICBtX2xheWVyLT5zZXRPcGFjaXR5KGFjY3VtdWxhdGVkT3BhY2l0eSk7Cisg
ICAgICAgIGxheWVyQ2xvbmVNYXAgPSBtX2xheWVyQ2xvbmVzLmdldCgpOworICAgIH0gZWxzZSB7
CisgICAgICAgIHByaW1hcnlMYXllcigpLT5zZXRPcGFjaXR5KGFjY3VtdWxhdGVkT3BhY2l0eSk7
CisgICAgICAgIGxheWVyQ2xvbmVNYXAgPSBwcmltYXJ5TGF5ZXJDbG9uZXMoKTsKKyAgICB9CisK
KyAgICBpZiAobGF5ZXJDbG9uZU1hcCkgeworICAgICAgICBMYXllck1hcDo6Y29uc3RfaXRlcmF0
b3IgZW5kID0gbGF5ZXJDbG9uZU1hcC0+ZW5kKCk7CisgICAgICAgIGZvciAoTGF5ZXJNYXA6OmNv
bnN0X2l0ZXJhdG9yIGl0ID0gbGF5ZXJDbG9uZU1hcC0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0
KSB7CisgICAgICAgICAgICBpZiAobV9yZXBsaWNhTGF5ZXIgJiYgaXNSZXBsaWNhdGVkUm9vdENs
b25lKGl0LT5maXJzdCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBp
dC0+c2Vjb25kLT5zZXRPcGFjaXR5KG1fb3BhY2l0eSk7CisgICAgICAgIH0KKyAgICB9Cit9CisK
K3ZvaWQgR3JhcGhpY3NMYXllckNBOjp1cGRhdGVPcGFjaXR5T25MYXllcigpCit7CisjaWYgIUhB
VkVfTU9ERVJOX1FVQVJUWkNPUkUKKyAgICAvLyBEaXN0cmlidXRlIG9wYWNpdHkgZWl0aGVyIHRv
IG91ciBvd24gbGF5ZXIgb3IgdG8gb3VyIGNoaWxkcmVuLiBXZSBwYXNzIGluIHRoZSAKKyAgICAv
LyBjb250cmlidXRpb24gZnJvbSBvdXIgcGFyZW50KHMpLgorICAgIGRpc3RyaWJ1dGVPcGFjaXR5
KHBhcmVudCgpID8gcGFyZW50KCktPmFjY3VtdWxhdGVkT3BhY2l0eSgpIDogMSk7CisjZWxzZQor
ICAgIHByaW1hcnlMYXllcigpLT5zZXRPcGFjaXR5KG1fb3BhY2l0eSk7CisKKyAgICBpZiAoTGF5
ZXJNYXAqIGxheWVyQ2xvbmVNYXAgPSBwcmltYXJ5TGF5ZXJDbG9uZXMoKSkgeworICAgICAgICBM
YXllck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbGF5ZXJDbG9uZU1hcC0+ZW5kKCk7CisgICAg
ICAgIGZvciAoTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbGF5ZXJDbG9uZU1hcC0+YmVn
aW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgICAgICBpZiAobV9yZXBsaWNhTGF5ZXIg
JiYgaXNSZXBsaWNhdGVkUm9vdENsb25lKGl0LT5maXJzdCkpCisgICAgICAgICAgICAgICAgY29u
dGludWU7CisKKyAgICAgICAgICAgIGl0LT5zZWNvbmQtPnNldE9wYWNpdHkobV9vcGFjaXR5KTsK
KyAgICAgICAgfQorICAgICAgICAKKyAgICB9CisjZW5kaWYKK30KKwordm9pZCBHcmFwaGljc0xh
eWVyQ0E6Om5vdGVTdWJsYXllcnNDaGFuZ2VkKCkKK3sKKyAgICBub3RlTGF5ZXJQcm9wZXJ0eUNo
YW5nZWQoQ2hpbGRyZW5DaGFuZ2VkKTsKKyAgICBwcm9wYWdhdGVMYXllckNoYW5nZVRvUmVwbGlj
YXMoKTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6Om5vdGVMYXllclByb3BlcnR5Q2hhbmdl
ZChMYXllckNoYW5nZUZsYWdzIGZsYWdzKQoreworICAgIGlmICghbV91bmNvbW1pdHRlZENoYW5n
ZXMgJiYgbV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5ub3RpZnlTeW5jUmVxdWlyZWQodGhp
cyk7CisKKyAgICBtX3VuY29tbWl0dGVkQ2hhbmdlcyB8PSBmbGFnczsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpJ
bmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5o
CShyZXZpc2lvbiA3MzIzNikJKGZyb20gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFw
aGljc0xheWVyQ0EuaDo3MzIzNikKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3Jh
cGhpY3NMYXllckNBLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzODMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYg
R3JhcGhpY3NMYXllckNBX2gKKyNkZWZpbmUgR3JhcGhpY3NMYXllckNBX2gKKworI2lmIFVTRShB
Q0NFTEVSQVRFRF9DT01QT1NJVElORykKKworI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKKyNp
bmNsdWRlICJJbWFnZS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtQ0FBbmltYXRpb24uaCIKKyNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8
d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBQbGF0Zm9ybUNBTGF5ZXI7CisKK2NsYXNzIEdyYXBo
aWNzTGF5ZXJDQSA6IHB1YmxpYyBHcmFwaGljc0xheWVyIHsKK3B1YmxpYzoKKyAgICAvLyBUaGUg
d2lkdGggYW5kIGhlaWdodCBvZiBhIHNpbmdsZSB0aWxlIGluIGEgdGlsZWQgbGF5ZXIuIFNob3Vs
ZCBiZSBsYXJnZSBlbm91Z2ggdG8KKyAgICAvLyBhdm9pZCBsb3RzIG9mIHNtYWxsIHRpbGVzIChh
bmQgdGhlcmVmb3JlIGxvdHMgb2YgZHJhd2luZyBjYWxsYmFja3MpLCBidXQgc21hbGwgZW5vdWdo
CisgICAgLy8gdG8ga2VlcCB0aGUgb3ZlcmFsbCB0aWxlIGNvc3QgbG93LgorICAgIHN0YXRpYyBj
b25zdCBpbnQga1RpbGVkTGF5ZXJUaWxlU2l6ZSA9IDUxMjsKKworICAgIEdyYXBoaWNzTGF5ZXJD
QShHcmFwaGljc0xheWVyQ2xpZW50Kik7CisgICAgdmlydHVhbCB+R3JhcGhpY3NMYXllckNBKCk7
CisgICAgCisgICAgdmlydHVhbCB2b2lkIGFuaW1hdGlvblN0YXJ0ZWQoQ0ZUaW1lSW50ZXJ2YWwg
YmVnaW5UaW1lKTsKKworICAgIHZpcnR1YWwgdm9pZCBzZXROYW1lKGNvbnN0IFN0cmluZyYpOwor
CisgICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Q7CisKKyAg
ICB2aXJ0dWFsIGJvb2wgc2V0Q2hpbGRyZW4oY29uc3QgVmVjdG9yPEdyYXBoaWNzTGF5ZXIqPiYp
OworICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZChHcmFwaGljc0xheWVyKik7CisgICAgdmlydHVh
bCB2b2lkIGFkZENoaWxkQXRJbmRleChHcmFwaGljc0xheWVyKiwgaW50IGluZGV4KTsKKyAgICB2
aXJ0dWFsIHZvaWQgYWRkQ2hpbGRBYm92ZShHcmFwaGljc0xheWVyKiBsYXllciwgR3JhcGhpY3NM
YXllciogc2libGluZyk7CisgICAgdmlydHVhbCB2b2lkIGFkZENoaWxkQmVsb3coR3JhcGhpY3NM
YXllciogbGF5ZXIsIEdyYXBoaWNzTGF5ZXIqIHNpYmxpbmcpOworICAgIHZpcnR1YWwgYm9vbCBy
ZXBsYWNlQ2hpbGQoR3JhcGhpY3NMYXllciogb2xkQ2hpbGQsIEdyYXBoaWNzTGF5ZXIqIG5ld0No
aWxkKTsKKworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVGcm9tUGFyZW50KCk7CisKKyAgICB2aXJ0
dWFsIHZvaWQgc2V0TWFza0xheWVyKEdyYXBoaWNzTGF5ZXIqKTsKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0UmVwbGljYXRlZExheWVyKEdyYXBoaWNzTGF5ZXIqKTsKKworICAgIHZpcnR1YWwgdm9pZCBz
ZXRQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50Jik7CisgICAgdmlydHVhbCB2b2lkIHNldEFuY2hv
clBvaW50KGNvbnN0IEZsb2F0UG9pbnQzRCYpOworICAgIHZpcnR1YWwgdm9pZCBzZXRTaXplKGNv
bnN0IEZsb2F0U2l6ZSYpOworCisgICAgdmlydHVhbCB2b2lkIHNldFRyYW5zZm9ybShjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYpOworCisgICAgdmlydHVhbCB2b2lkIHNldENoaWxkcmVuVHJh
bnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4Jik7CisKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0UHJlc2VydmVzM0QoYm9vbCk7CisgICAgdmlydHVhbCB2b2lkIHNldE1hc2tzVG9Cb3VuZHMo
Ym9vbCk7CisgICAgdmlydHVhbCB2b2lkIHNldERyYXdzQ29udGVudChib29sKTsKKworICAgIHZp
cnR1YWwgdm9pZCBzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImKTsKKyAgICB2aXJ0dWFs
IHZvaWQgY2xlYXJCYWNrZ3JvdW5kQ29sb3IoKTsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRDb250
ZW50c09wYXF1ZShib29sKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QmFja2ZhY2VWaXNpYmlsaXR5
KGJvb2wpOworCisgICAgLy8gcmV0dXJuIHRydWUgaWYgd2Ugc3RhcnRlZCBhbiBhbmltYXRpb24K
KyAgICB2aXJ0dWFsIHZvaWQgc2V0T3BhY2l0eShmbG9hdCk7CisKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0TmVlZHNEaXNwbGF5KCk7CisgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzRGlzcGxheUluUmVj
dChjb25zdCBGbG9hdFJlY3QmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNOZWVkc0Rp
c3BsYXkoKTsKKyAgICAKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNSZWN0KGNvbnN0IElu
dFJlY3QmKTsKKyAgICAKKyAgICB2aXJ0dWFsIHZvaWQgc3VzcGVuZEFuaW1hdGlvbnMoZG91Ymxl
IHRpbWUpOworICAgIHZpcnR1YWwgdm9pZCByZXN1bWVBbmltYXRpb25zKCk7CisKKyAgICB2aXJ0
dWFsIGJvb2wgYWRkQW5pbWF0aW9uKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiwgY29uc3QgSW50
U2l6ZSYgYm94U2l6ZSwgY29uc3QgQW5pbWF0aW9uKiwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25O
YW1lLCBkb3VibGUgdGltZU9mZnNldCk7CisgICAgdmlydHVhbCB2b2lkIHBhdXNlQW5pbWF0aW9u
KGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSwgZG91YmxlIHRpbWVPZmZzZXQpOworICAgIHZp
cnR1YWwgdm9pZCByZW1vdmVBbmltYXRpb24oY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lKTsK
KworICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1RvSW1hZ2UoSW1hZ2UqKTsKKyAgICB2aXJ0
dWFsIHZvaWQgc2V0Q29udGVudHNUb01lZGlhKFBsYXRmb3JtTGF5ZXIqKTsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0Q29udGVudHNUb0NhbnZhcyhQbGF0Zm9ybUxheWVyKik7CisKKyAgICB2aXJ0dWFs
IGJvb2wgaGFzQ29udGVudHNMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudHNMYXllcjsg
fQorICAgIAorICAgIHZpcnR1YWwgdm9pZCBzZXREZWJ1Z0JhY2tncm91bmRDb2xvcihjb25zdCBD
b2xvciYpOworICAgIHZpcnR1YWwgdm9pZCBzZXREZWJ1Z0JvcmRlcihjb25zdCBDb2xvciYsIGZs
b2F0IGJvcmRlcldpZHRoKTsKKworICAgIHZpcnR1YWwgdm9pZCBkaWREaXNwbGF5KFBsYXRmb3Jt
TGF5ZXIqKTsKKworICAgIHZvaWQgcmVjdXJzaXZlQ29tbWl0Q2hhbmdlcygpOworCisgICAgdmly
dHVhbCB2b2lkIHN5bmNDb21wb3NpdGluZ1N0YXRlKCk7CisgICAgdmlydHVhbCB2b2lkIHN5bmND
b21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSgpOworCitwcm90ZWN0ZWQ6CisgICAgdmly
dHVhbCB2b2lkIHNldE9wYWNpdHlJbnRlcm5hbChmbG9hdCk7CisKK3ByaXZhdGU6CisgICAgdm9p
ZCB1cGRhdGVPcGFjaXR5T25MYXllcigpOworCisgICAgUGxhdGZvcm1DQUxheWVyKiBwcmltYXJ5
TGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3N0cnVjdHVyYWxMYXllci5nZXQoKSA/IG1fc3RydWN0
dXJhbExheWVyLmdldCgpIDogbV9sYXllci5nZXQoKTsgfQorICAgIFBsYXRmb3JtQ0FMYXllciog
aG9zdExheWVyRm9yU3VibGF5ZXJzKCkgY29uc3Q7CisgICAgUGxhdGZvcm1DQUxheWVyKiBsYXll
ckZvclN1cGVybGF5ZXIoKSBjb25zdDsKKyAgICBQbGF0Zm9ybUNBTGF5ZXIqIGFuaW1hdGVkTGF5
ZXIoQW5pbWF0ZWRQcm9wZXJ0eUlEKSBjb25zdDsKKworICAgIHR5cGVkZWYgU3RyaW5nIENsb25l
SUQ7IC8vIElkZW50aWZpZXIgZm9yIGEgZ2l2ZW4gY2xvbmUsIGJhc2VkIG9uIG9yaWdpbmFsL3Jl
cGxpY2EgYnJhbmNoaW5nIGRvd24gdGhlIHRyZWUuCisgICAgc3RhdGljIGJvb2wgaXNSZXBsaWNh
dGVkUm9vdENsb25lKGNvbnN0IENsb25lSUQmIGNsb25lSUQpIHsgcmV0dXJuIGNsb25lSURbMFVd
ICYgMTsgfQorCisgICAgdHlwZWRlZiBIYXNoTWFwPENsb25lSUQsIFJlZlB0cjxQbGF0Zm9ybUNB
TGF5ZXI+ID4gTGF5ZXJNYXA7CisgICAgTGF5ZXJNYXAqIHByaW1hcnlMYXllckNsb25lcygpIGNv
bnN0IHsgcmV0dXJuIG1fc3RydWN0dXJhbExheWVyLmdldCgpID8gbV9zdHJ1Y3R1cmFsTGF5ZXJD
bG9uZXMuZ2V0KCkgOiBtX2xheWVyQ2xvbmVzLmdldCgpOyB9CisgICAgTGF5ZXJNYXAqIGFuaW1h
dGVkTGF5ZXJDbG9uZXMoQW5pbWF0ZWRQcm9wZXJ0eUlEKSBjb25zdDsKKworICAgIGJvb2wgY3Jl
YXRlQW5pbWF0aW9uRnJvbUtleWZyYW1lcyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYsIGNvbnN0
IEFuaW1hdGlvbiosIGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSwgZG91YmxlIHRpbWVPZmZz
ZXQpOworICAgIGJvb2wgY3JlYXRlVHJhbnNmb3JtQW5pbWF0aW9uc0Zyb21LZXlmcmFtZXMoY29u
c3QgS2V5ZnJhbWVWYWx1ZUxpc3QmLCBjb25zdCBBbmltYXRpb24qLCBjb25zdCBTdHJpbmcmIGFu
aW1hdGlvbk5hbWUsIGRvdWJsZSB0aW1lT2Zmc2V0LCBjb25zdCBJbnRTaXplJiBib3hTaXplKTsK
KworICAgIC8vIFJldHVybiBhdXRvcmVsZWFzZWQgYW5pbWF0aW9uICh1c2UgUmV0YWluUHRyPykK
KyAgICBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IGNyZWF0ZUJhc2ljQW5pbWF0aW9u
KGNvbnN0IEFuaW1hdGlvbiosIEFuaW1hdGVkUHJvcGVydHlJRCwgYm9vbCBhZGRpdGl2ZSk7Cisg
ICAgUGFzc1JlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBjcmVhdGVLZXlmcmFtZUFuaW1hdGlv
bihjb25zdCBBbmltYXRpb24qLCBBbmltYXRlZFByb3BlcnR5SUQsIGJvb2wgYWRkaXRpdmUpOwor
ICAgIHZvaWQgc2V0dXBBbmltYXRpb24oUGxhdGZvcm1DQUFuaW1hdGlvbiosIGNvbnN0IEFuaW1h
dGlvbiosIGJvb2wgYWRkaXRpdmUpOworICAgIAorICAgIGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB0
aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKGNvbnN0IEFuaW1hdGlvblZhbHVlKiwgY29u
c3QgQW5pbWF0aW9uKik7CisgICAgCisgICAgYm9vbCBzZXRBbmltYXRpb25FbmRwb2ludHMoY29u
c3QgS2V5ZnJhbWVWYWx1ZUxpc3QmLCBjb25zdCBBbmltYXRpb24qLCBQbGF0Zm9ybUNBQW5pbWF0
aW9uKik7CisgICAgYm9vbCBzZXRBbmltYXRpb25LZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1
ZUxpc3QmLCBjb25zdCBBbmltYXRpb24qLCBQbGF0Zm9ybUNBQW5pbWF0aW9uKik7CisKKyAgICBi
b29sIHNldFRyYW5zZm9ybUFuaW1hdGlvbkVuZHBvaW50cyhjb25zdCBLZXlmcmFtZVZhbHVlTGlz
dCYsIGNvbnN0IEFuaW1hdGlvbiosIFBsYXRmb3JtQ0FBbmltYXRpb24qLCBpbnQgZnVuY3Rpb25J
bmRleCwgVHJhbnNmb3JtT3BlcmF0aW9uOjpPcGVyYXRpb25UeXBlLCBib29sIGlzTWF0cml4QW5p
bWF0aW9uLCBjb25zdCBJbnRTaXplJiBib3hTaXplKTsKKyAgICBib29sIHNldFRyYW5zZm9ybUFu
aW1hdGlvbktleWZyYW1lcyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYsIGNvbnN0IEFuaW1hdGlv
biosIFBsYXRmb3JtQ0FBbmltYXRpb24qLCBpbnQgZnVuY3Rpb25JbmRleCwgVHJhbnNmb3JtT3Bl
cmF0aW9uOjpPcGVyYXRpb25UeXBlLCBib29sIGlzTWF0cml4QW5pbWF0aW9uLCBjb25zdCBJbnRT
aXplJiBib3hTaXplKTsKKyAgICAKKyAgICBib29sIGFuaW1hdGlvbklzUnVubmluZyhjb25zdCBT
dHJpbmcmIGFuaW1hdGlvbk5hbWUpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9ydW5u
aW5nQW5pbWF0aW9ucy5maW5kKGFuaW1hdGlvbk5hbWUpICE9IG1fcnVubmluZ0FuaW1hdGlvbnMu
ZW5kKCk7CisgICAgfQorCisgICAgdm9pZCBjb21taXRMYXllckNoYW5nZXNCZWZvcmVTdWJsYXll
cnMoKTsKKyAgICB2b2lkIGNvbW1pdExheWVyQ2hhbmdlc0FmdGVyU3VibGF5ZXJzKCk7CisKKyAg
ICBGbG9hdFNpemUgY29uc3RyYWluZWRTaXplKCkgY29uc3Q7CisKKyAgICBib29sIHJlcXVpcmVz
VGlsZWRMYXllcihjb25zdCBGbG9hdFNpemUmKSBjb25zdDsKKyAgICB2b2lkIHN3YXBGcm9tT3JU
b1RpbGVkTGF5ZXIoYm9vbCB1c2VUaWxlZExheWVyKTsKKworICAgIENvbXBvc2l0aW5nQ29vcmRp
bmF0ZXNPcmllbnRhdGlvbiBkZWZhdWx0Q29udGVudHNPcmllbnRhdGlvbigpIGNvbnN0OworICAg
IHZvaWQgdXBkYXRlQ29udGVudHNUcmFuc2Zvcm0oKTsKKyAgICAKKyAgICB2b2lkIHNldHVwQ29u
dGVudHNMYXllcihQbGF0Zm9ybUNBTGF5ZXIqKTsKKyAgICBQbGF0Zm9ybUNBTGF5ZXIqIGNvbnRl
bnRzTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRzTGF5ZXIuZ2V0KCk7IH0KKworICAg
IHZpcnR1YWwgdm9pZCBzZXRSZXBsaWNhdGVkQnlMYXllcihHcmFwaGljc0xheWVyKik7CisKKyAg
ICAvLyBVc2VkIHRvIHRyYWNrIHRoZSBwYXRoIGRvd24gdGhlIHRyZWUgZm9yIHJlcGxpY2EgbGF5
ZXJzLgorICAgIHN0cnVjdCBSZXBsaWNhU3RhdGUgeworICAgICAgICBzdGF0aWMgY29uc3Qgc2l6
ZV90IG1heFJlcGxpY2FEZXB0aCA9IDE2OworICAgICAgICBlbnVtIFJlcGxpY2FCcmFuY2hUeXBl
IHsgQ2hpbGRCcmFuY2ggPSAwLCBSZXBsaWNhQnJhbmNoID0gMSB9OworICAgICAgICBSZXBsaWNh
U3RhdGUoUmVwbGljYUJyYW5jaFR5cGUgZmlyc3RCcmFuY2gpCisgICAgICAgICAgICA6IG1fcmVw
bGljYURlcHRoKDApCisgICAgICAgIHsKKyAgICAgICAgICAgIHB1c2goZmlyc3RCcmFuY2gpOwor
ICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyBDYWxsZWQgYXMgd2Ugd2FsayBkb3duIHRo
ZSB0cmVlIHRvIGJ1aWxkIHJlcGxpY2FzLgorICAgICAgICB2b2lkIHB1c2goUmVwbGljYUJyYW5j
aFR5cGUgYnJhbmNoVHlwZSkKKyAgICAgICAgeworICAgICAgICAgICAgbV9yZXBsaWNhQnJhbmNo
ZXMuYXBwZW5kKGJyYW5jaFR5cGUpOworICAgICAgICAgICAgaWYgKGJyYW5jaFR5cGUgPT0gUmVw
bGljYUJyYW5jaCkKKyAgICAgICAgICAgICAgICArK21fcmVwbGljYURlcHRoOworICAgICAgICB9
CisgICAgICAgIAorICAgICAgICB2b2lkIHNldEJyYW5jaFR5cGUoUmVwbGljYUJyYW5jaFR5cGUg
YnJhbmNoVHlwZSkKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKCFtX3JlcGxpY2FCcmFu
Y2hlcy5pc0VtcHR5KCkpOworCisgICAgICAgICAgICBpZiAobV9yZXBsaWNhQnJhbmNoZXMubGFz
dCgpICE9IGJyYW5jaFR5cGUpIHsKKyAgICAgICAgICAgICAgICBpZiAoYnJhbmNoVHlwZSA9PSBS
ZXBsaWNhQnJhbmNoKQorICAgICAgICAgICAgICAgICAgICArK21fcmVwbGljYURlcHRoOworICAg
ICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgLS1tX3JlcGxpY2FEZXB0aDsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbV9yZXBsaWNhQnJhbmNoZXMubGFzdCgpID0g
YnJhbmNoVHlwZTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgcG9wKCkKKyAgICAgICAgewor
ICAgICAgICAgICAgaWYgKG1fcmVwbGljYUJyYW5jaGVzLmxhc3QoKSA9PSBSZXBsaWNhQnJhbmNo
KQorICAgICAgICAgICAgICAgIC0tbV9yZXBsaWNhRGVwdGg7CisgICAgICAgICAgICBtX3JlcGxp
Y2FCcmFuY2hlcy5yZW1vdmVMYXN0KCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHNp
emVfdCBkZXB0aCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVwbGljYUJyYW5jaGVzLnNpemUoKTsgfQor
ICAgICAgICBzaXplX3QgcmVwbGljYURlcHRoKCkgY29uc3QgeyByZXR1cm4gbV9yZXBsaWNhRGVw
dGg7IH0KKworICAgICAgICBDbG9uZUlEIGNsb25lSUQoKSBjb25zdDsgICAgICAgIAorCisgICAg
cHJpdmF0ZToKKyAgICAgICAgVmVjdG9yPFJlcGxpY2FCcmFuY2hUeXBlPiBtX3JlcGxpY2FCcmFu
Y2hlczsKKyAgICAgICAgc2l6ZV90IG1fcmVwbGljYURlcHRoOworICAgIH07CisgICAgUGFzc1Jl
ZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+cmVwbGljYXRlZExheWVyUm9vdChSZXBsaWNhU3RhdGUmKTsK
KworICAgIGVudW0gQ2xvbmVMZXZlbCB7IFJvb3RDbG9uZUxldmVsLCBJbnRlcm1lZGlhdGVDbG9u
ZUxldmVsIH07CisgICAgUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IGZldGNoQ2xvbmVMYXll
cnMoR3JhcGhpY3NMYXllciogcmVwbGljYVJvb3QsIFJlcGxpY2FTdGF0ZSYsIENsb25lTGV2ZWwp
OworICAgIAorICAgIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBjbG9uZUxheWVyKFBsYXRm
b3JtQ0FMYXllciAqLCBDbG9uZUxldmVsKTsKKyAgICBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXll
cj4gZmluZE9yTWFrZUNsb25lKENsb25lSUQsIFBsYXRmb3JtQ0FMYXllciAqLCBMYXllck1hcCos
IENsb25lTGV2ZWwpOworCisgICAgdm9pZCBlbnN1cmVDbG9uZUxheWVycyhDbG9uZUlEIGNsb25l
SUQsIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+JiBwcmltYXJ5TGF5ZXIsIFJlZlB0cjxQbGF0Zm9y
bUNBTGF5ZXI+JiBzdHJ1Y3R1cmFsTGF5ZXIsIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+JiBjb250
ZW50c0xheWVyLCBDbG9uZUxldmVsIGNsb25lTGV2ZWwpOworCisgICAgYm9vbCBoYXNDbG9uZUxh
eWVycygpIGNvbnN0IHsgcmV0dXJuIG1fbGF5ZXJDbG9uZXM7IH0KKyAgICB2b2lkIHJlbW92ZUNs
b25lTGF5ZXJzKCk7CisgICAgRmxvYXRQb2ludCBwb3NpdGlvbkZvckNsb25lUm9vdExheWVyKCkg
Y29uc3Q7CisgICAgCisgICAgdm9pZCBwcm9wYWdhdGVMYXllckNoYW5nZVRvUmVwbGljYXMoKTsK
KyAgICAKKyAgICAvLyBBbGwgdGhlc2UgInVwZGF0ZSIgbWV0aG9kcyB3aWxsIGJlIGNhbGxlZCBp
bnNpZGUgYSBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMvRU5EX0JMT0NLX09CSkNfRVhDRVBU
SU9OUyBibG9jay4KKyAgICB2b2lkIHVwZGF0ZUxheWVyTmFtZXMoKTsKKyAgICB2b2lkIHVwZGF0
ZVN1YmxheWVyTGlzdCgpOworICAgIHZvaWQgdXBkYXRlTGF5ZXJQb3NpdGlvbigpOworICAgIHZv
aWQgdXBkYXRlTGF5ZXJTaXplKCk7CisgICAgdm9pZCB1cGRhdGVBbmNob3JQb2ludCgpOworICAg
IHZvaWQgdXBkYXRlVHJhbnNmb3JtKCk7CisgICAgdm9pZCB1cGRhdGVDaGlsZHJlblRyYW5zZm9y
bSgpOworICAgIHZvaWQgdXBkYXRlTWFza3NUb0JvdW5kcygpOworICAgIHZvaWQgdXBkYXRlQ29u
dGVudHNPcGFxdWUoKTsKKyAgICB2b2lkIHVwZGF0ZUJhY2tmYWNlVmlzaWJpbGl0eSgpOworICAg
IHZvaWQgdXBkYXRlU3RydWN0dXJhbExheWVyKCk7CisgICAgdm9pZCB1cGRhdGVMYXllckRyYXdz
Q29udGVudCgpOworICAgIHZvaWQgdXBkYXRlTGF5ZXJCYWNrZ3JvdW5kQ29sb3IoKTsKKworICAg
IHZvaWQgdXBkYXRlQ29udGVudHNJbWFnZSgpOworICAgIHZvaWQgdXBkYXRlQ29udGVudHNNZWRp
YUxheWVyKCk7CisgICAgdm9pZCB1cGRhdGVDb250ZW50c0NhbnZhc0xheWVyKCk7CisgICAgdm9p
ZCB1cGRhdGVDb250ZW50c1JlY3QoKTsKKyAgICB2b2lkIHVwZGF0ZU1hc2tMYXllcigpOworICAg
IHZvaWQgdXBkYXRlUmVwbGljYXRlZExheWVycygpOworCisgICAgdm9pZCB1cGRhdGVMYXllckFu
aW1hdGlvbnMoKTsKKyAgICB2b2lkIHVwZGF0ZUNvbnRlbnRzTmVlZHNEaXNwbGF5KCk7CisgICAg
CisgICAgZW51bSBTdHJ1Y3R1cmFsTGF5ZXJQdXJwb3NlIHsKKyAgICAgICAgTm9TdHJ1Y3R1cmFs
TGF5ZXIgPSAwLAorICAgICAgICBTdHJ1Y3R1cmFsTGF5ZXJGb3JQcmVzZXJ2ZXMzRCwKKyAgICAg
ICAgU3RydWN0dXJhbExheWVyRm9yUmVwbGljYUZsYXR0ZW5pbmcKKyAgICB9OworICAgIHZvaWQg
ZW5zdXJlU3RydWN0dXJhbExheWVyKFN0cnVjdHVyYWxMYXllclB1cnBvc2UpOworICAgIFN0cnVj
dHVyYWxMYXllclB1cnBvc2Ugc3RydWN0dXJhbExheWVyUHVycG9zZSgpIGNvbnN0OworCisgICAg
dm9pZCBzZXRBbmltYXRpb25PbkxheWVyKFBsYXRmb3JtQ0FBbmltYXRpb24qLCBBbmltYXRlZFBy
b3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSwgaW50IGluZGV4LCBkb3VibGUg
dGltZU9mZnNldCk7CisgICAgYm9vbCByZW1vdmVDQUFuaW1hdGlvbkZyb21MYXllcihBbmltYXRl
ZFByb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSwgaW50IGluZGV4KTsKKyAg
ICB2b2lkIHBhdXNlQ0FBbmltYXRpb25PbkxheWVyKEFuaW1hdGVkUHJvcGVydHlJRCwgY29uc3Qg
U3RyaW5nJiBhbmltYXRpb25OYW1lLCBpbnQgaW5kZXgsIGRvdWJsZSB0aW1lT2Zmc2V0KTsKKwor
ICAgIGVudW0gTW92ZU9yQ29weSB7IE1vdmUsIENvcHkgfTsKKyAgICBzdGF0aWMgdm9pZCBtb3Zl
T3JDb3B5TGF5ZXJBbmltYXRpb24oTW92ZU9yQ29weSwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25J
ZGVudGlmaWVyLCBQbGF0Zm9ybUNBTGF5ZXIgKmZyb21MYXllciwgUGxhdGZvcm1DQUxheWVyICp0
b0xheWVyKTsKKyAgICB2b2lkIG1vdmVPckNvcHlBbmltYXRpb25zRm9yUHJvcGVydHkoTW92ZU9y
Q29weSwgQW5pbWF0ZWRQcm9wZXJ0eUlELCBQbGF0Zm9ybUNBTGF5ZXIgKiBmcm9tTGF5ZXIsIFBs
YXRmb3JtQ0FMYXllciAqIHRvTGF5ZXIpOworICAgIAorICAgIGVudW0gTGF5ZXJDaGFuZ2Ugewor
ICAgICAgICBOb0NoYW5nZSA9IDAsCisgICAgICAgIE5hbWVDaGFuZ2VkID0gMSA8PCAxLAorICAg
ICAgICBDaGlsZHJlbkNoYW5nZWQgPSAxIDw8IDIsIC8vIGFsc28gdXNlZCBmb3IgY29udGVudCBs
YXllciwgYW5kIHByZXNlcnZlcy0zZCwgYW5kIHNpemUgaWYgdGlsaW5nIGNoYW5nZXM/CisgICAg
ICAgIFBvc2l0aW9uQ2hhbmdlZCA9IDEgPDwgMywKKyAgICAgICAgQW5jaG9yUG9pbnRDaGFuZ2Vk
ID0gMSA8PCA0LAorICAgICAgICBTaXplQ2hhbmdlZCA9IDEgPDwgNSwKKyAgICAgICAgVHJhbnNm
b3JtQ2hhbmdlZCA9IDEgPDwgNiwKKyAgICAgICAgQ2hpbGRyZW5UcmFuc2Zvcm1DaGFuZ2VkID0g
MSA8PCA3LAorICAgICAgICBQcmVzZXJ2ZXMzRENoYW5nZWQgPSAxIDw8IDgsCisgICAgICAgIE1h
c2tzVG9Cb3VuZHNDaGFuZ2VkID0gMSA8PCA5LAorICAgICAgICBEcmF3c0NvbnRlbnRDaGFuZ2Vk
ID0gMSA8PCAxMCwgLy8gbmVlZCB0aGlzPworICAgICAgICBCYWNrZ3JvdW5kQ29sb3JDaGFuZ2Vk
ID0gMSA8PCAxMSwKKyAgICAgICAgQ29udGVudHNPcGFxdWVDaGFuZ2VkID0gMSA8PCAxMiwKKyAg
ICAgICAgQmFja2ZhY2VWaXNpYmlsaXR5Q2hhbmdlZCA9IDEgPDwgMTMsCisgICAgICAgIE9wYWNp
dHlDaGFuZ2VkID0gMSA8PCAxNCwKKyAgICAgICAgQW5pbWF0aW9uQ2hhbmdlZCA9IDEgPDwgMTUs
CisgICAgICAgIERpcnR5UmVjdHNDaGFuZ2VkID0gMSA8PCAxNiwKKyAgICAgICAgQ29udGVudHNJ
bWFnZUNoYW5nZWQgPSAxIDw8IDE3LAorICAgICAgICBDb250ZW50c01lZGlhTGF5ZXJDaGFuZ2Vk
ID0gMSA8PCAxOCwKKyAgICAgICAgQ29udGVudHNDYW52YXNMYXllckNoYW5nZWQgPSAxIDw8IDE5
LAorICAgICAgICBDb250ZW50c1JlY3RDaGFuZ2VkID0gMSA8PCAyMCwKKyAgICAgICAgTWFza0xh
eWVyQ2hhbmdlZCA9IDEgPDwgMjEsCisgICAgICAgIFJlcGxpY2F0ZWRMYXllckNoYW5nZWQgPSAx
IDw8IDIyLAorICAgICAgICBDb250ZW50c05lZWRzRGlzcGxheSA9IDEgPDwgMjMKKyAgICB9Owor
ICAgIHR5cGVkZWYgdW5zaWduZWQgTGF5ZXJDaGFuZ2VGbGFnczsKKyAgICB2b2lkIG5vdGVMYXll
clByb3BlcnR5Q2hhbmdlZChMYXllckNoYW5nZUZsYWdzIGZsYWdzKTsKKyAgICB2b2lkIG5vdGVT
dWJsYXllcnNDaGFuZ2VkKCk7CisKKyAgICB2b2lkIHJlcGFpbnRMYXllckRpcnR5UmVjdHMoKTsK
KworICAgIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IG1fbGF5ZXI7IC8vIFRoZSBtYWluIGxheWVy
CisgICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gbV9zdHJ1Y3R1cmFsTGF5ZXI7IC8vIEEgbGF5
ZXIgdXNlZCBmb3Igc3RydWN0dXJhbCByZWFzb25zLCBsaWtlIHByZXNlcnZlcy0zZCBvciByZXBs
aWNhLWZsYXR0ZW5pbmcuIElzIHRoZSBwYXJlbnQgb2YgbV9sYXllci4KKyAgICBSZWZQdHI8UGxh
dGZvcm1DQUxheWVyPiBtX2NvbnRlbnRzTGF5ZXI7IC8vIEEgbGF5ZXIgdXNlZCBmb3IgaW5uZXIg
Y29udGVudCwgbGlrZSBpbWFnZSBhbmQgdmlkZW8KKworICAgIC8vIFJlZmVyZW5jZXMgdG8gY2xv
bmVzIG9mIG91ciBsYXllcnMsIGZvciByZXBsaWNhdGVkIGxheWVycy4KKyAgICBPd25QdHI8TGF5
ZXJNYXA+IG1fbGF5ZXJDbG9uZXM7CisgICAgT3duUHRyPExheWVyTWFwPiBtX3N0cnVjdHVyYWxM
YXllckNsb25lczsKKyAgICBPd25QdHI8TGF5ZXJNYXA+IG1fY29udGVudHNMYXllckNsb25lczsK
KyAgICAKKyAgICBlbnVtIENvbnRlbnRzTGF5ZXJQdXJwb3NlIHsKKyAgICAgICAgTm9Db250ZW50
c0xheWVyID0gMCwKKyAgICAgICAgQ29udGVudHNMYXllckZvckltYWdlLAorICAgICAgICBDb250
ZW50c0xheWVyRm9yTWVkaWEsCisgICAgICAgIENvbnRlbnRzTGF5ZXJGb3JDYW52YXMKKyAgICB9
OworICAgIAorICAgIENvbnRlbnRzTGF5ZXJQdXJwb3NlIG1fY29udGVudHNMYXllclB1cnBvc2U7
CisgICAgYm9vbCBtX2NvbnRlbnRzTGF5ZXJIYXNCYWNrZ3JvdW5kQ29sb3IgOiAxOworCisgICAg
UmV0YWluUHRyPENHSW1hZ2VSZWY+IG1fdW5jb3JyZWN0ZWRDb250ZW50c0ltYWdlOworICAgIFJl
dGFpblB0cjxDR0ltYWdlUmVmPiBtX3BlbmRpbmdDb250ZW50c0ltYWdlOworICAgIAorICAgIC8v
IFRoaXMgcmVwcmVzZW50cyB0aGUgYW5pbWF0aW9uIG9mIGEgc2luZ2xlIHByb3BlcnR5LiBUaGVy
ZSBtYXkgYmUgbXVsdGlwbGUgdHJhbnNmb3JtIGFuaW1hdGlvbnMgZm9yCisgICAgLy8gYSBzaW5n
bGUgdHJhbnNpdGlvbiBvciBrZXlmcmFtZSBhbmltYXRpb24sIHNvIGluZGV4IGlzIHVzZWQgdG8g
ZGlzdGluZ3Vpc2ggdGhlc2UuCisgICAgc3RydWN0IExheWVyUHJvcGVydHlBbmltYXRpb24gewor
ICAgICAgICBMYXllclByb3BlcnR5QW5pbWF0aW9uKFBhc3NSZWZQdHI8UGxhdGZvcm1DQUFuaW1h
dGlvbj4gY2FBbmltYXRpb24sIGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSwgQW5pbWF0ZWRQ
cm9wZXJ0eUlEIHByb3BlcnR5LCBpbnQgaW5kZXgsIGRvdWJsZSB0aW1lT2Zmc2V0KQorICAgICAg
ICA6IG1fYW5pbWF0aW9uKGNhQW5pbWF0aW9uKQorICAgICAgICAsIG1fbmFtZShhbmltYXRpb25O
YW1lKQorICAgICAgICAsIG1fcHJvcGVydHkocHJvcGVydHkpCisgICAgICAgICwgbV9pbmRleChp
bmRleCkKKyAgICAgICAgLCBtX3RpbWVPZmZzZXQodGltZU9mZnNldCkKKyAgICAgICAgeyB9CisK
KyAgICAgICAgUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IG1fYW5pbWF0aW9uOworICAgICAg
ICBTdHJpbmcgbV9uYW1lOworICAgICAgICBBbmltYXRlZFByb3BlcnR5SUQgbV9wcm9wZXJ0eTsK
KyAgICAgICAgaW50IG1faW5kZXg7CisgICAgICAgIGRvdWJsZSBtX3RpbWVPZmZzZXQ7CisgICAg
fTsKKyAgICAKKyAgICAvLyBVbmNvbW1pdHRlZCB0cmFuc2l0aW9ucyBhbmQgYW5pbWF0aW9ucy4K
KyAgICBWZWN0b3I8TGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbj4gbV91bmNvbWl0dGVkQW5pbWF0aW9u
czsKKyAgICAKKyAgICBlbnVtIEFjdGlvbiB7IFJlbW92ZSwgUGF1c2UgfTsKKyAgICBzdHJ1Y3Qg
QW5pbWF0aW9uUHJvY2Vzc2luZ0FjdGlvbiB7CisgICAgICAgIEFuaW1hdGlvblByb2Nlc3NpbmdB
Y3Rpb24oQWN0aW9uIGFjdGlvbiA9IFJlbW92ZSwgZG91YmxlIHRpbWVPZmZzZXQgPSAwKQorICAg
ICAgICAgICAgOiBhY3Rpb24oYWN0aW9uKQorICAgICAgICAgICAgLCB0aW1lT2Zmc2V0KHRpbWVP
ZmZzZXQpCisgICAgICAgIHsKKyAgICAgICAgfQorICAgICAgICBBY3Rpb24gYWN0aW9uOworICAg
ICAgICBkb3VibGUgdGltZU9mZnNldDsgLy8gb25seSB1c2VkIGZvciBwYXVzZQorICAgIH07Cisg
ICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgQW5pbWF0aW9uUHJvY2Vzc2luZ0FjdGlvbj4gQW5p
bWF0aW9uc1RvUHJvY2Vzc01hcDsKKyAgICBBbmltYXRpb25zVG9Qcm9jZXNzTWFwIG1fYW5pbWF0
aW9uc1RvUHJvY2VzczsKKworICAgIC8vIE1hcCBvZiBhbmltYXRpb24gbmFtZXMgdG8gdGhlaXIg
YXNzb2NpYXRlZCBsaXN0cyBvZiBwcm9wZXJ0eSBhbmltYXRpb25zLCBzbyB3ZSBjYW4gcmVtb3Zl
L3BhdXNlIHRoZW0uCisgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgVmVjdG9yPExheWVyUHJv
cGVydHlBbmltYXRpb24+ID4gQW5pbWF0aW9uc01hcDsKKyAgICBBbmltYXRpb25zTWFwIG1fcnVu
bmluZ0FuaW1hdGlvbnM7CisKKyAgICBWZWN0b3I8RmxvYXRSZWN0PiBtX2RpcnR5UmVjdHM7Cisg
ICAgCisgICAgTGF5ZXJDaGFuZ2VGbGFncyBtX3VuY29tbWl0dGVkQ2hhbmdlczsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworCisjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBP
U0lUSU5HKQorCisjZW5kaWYgLy8gR3JhcGhpY3NMYXllckNBX2gKSW5kZXg6IFdlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUFuaW1hdGlvbi5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUFuaW1hdGlvbi5oCShyZXZpc2lv
biA3MzIzNikJKGZyb20gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBQW5p
bWF0aW9uLmg6NzMyMzYpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3Jt
Q0FBbmltYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE2MSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBQ
bGF0Zm9ybUNBQW5pbWF0aW9uX2gKKyNkZWZpbmUgUGxhdGZvcm1DQUFuaW1hdGlvbl9oCisKKyNp
ZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisKKyNpbmNsdWRlICJDb2xvci5oIgorI2lu
Y2x1ZGUgIkZsb2F0UG9pbnQzRC5oIgorI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4Lmgi
CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+
CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCisjaWYgUExBVEZPUk0oTUFDKQorI2lmZGVmIF9f
T0JKQ19fCitAY2xhc3MgQ0FQcm9wZXJ0eUFuaW1hdGlvbjsKK3R5cGVkZWYgQ0FQcm9wZXJ0eUFu
aW1hdGlvbiogUGxhdGZvcm1BbmltYXRpb25SZWY7CisjZWxzZQordHlwZWRlZiB2b2lkKiBDQVBy
b3BlcnR5QW5pbWF0aW9uOyAvLyBTbyB0aGUgbV9hbmltYXRpb24gZGVjbGFyYXRpb24gd29ya3MK
K3R5cGVkZWYgdm9pZCogUGxhdGZvcm1BbmltYXRpb25SZWY7CisjZW5kaWYKKyNlbGlmIFBMQVRG
T1JNKFdJTikKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFdLQ0FDRkFuaW1hdGlvbjsKK3R5
cGVkZWYgV0tDQUNGQW5pbWF0aW9uKiBQbGF0Zm9ybUFuaW1hdGlvblJlZjsKK30KKyNlbmRpZgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEZsb2F0UmVjdDsKK2NsYXNzIFBsYXRmb3Jt
Q0FBbmltYXRpb247CitjbGFzcyBUaW1pbmdGdW5jdGlvbjsKKworY2xhc3MgUGxhdGZvcm1DQUFu
aW1hdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPFBsYXRmb3JtQ0FBbmltYXRpb24+IHsKK3B1Ymxp
YzoKKyAgICBmcmllbmQgY2xhc3MgUGxhdGZvcm1DQUxheWVyOworICAgIAorICAgIGVudW0gQW5p
bWF0aW9uVHlwZSB7IEJhc2ljLCBLZXlmcmFtZSB9OworICAgIGVudW0gRmlsbE1vZGVUeXBlIHsg
Tm9GaWxsTW9kZSwgRm9yd2FyZHMsIEJhY2t3YXJkcywgQm90aCB9OworICAgIGVudW0gVmFsdWVG
dW5jdGlvblR5cGUgeyBOb1ZhbHVlRnVuY3Rpb24sIFJvdGF0ZVgsIFJvdGF0ZVksIFJvdGF0ZVos
IFNjYWxlWCwgU2NhbGVZLCBTY2FsZVosIFNjYWxlLCBUcmFuc2xhdGVYLCBUcmFuc2xhdGVZLCBU
cmFuc2xhdGVaLCBUcmFuc2xhdGUgfTsKKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsYXRmb3Jt
Q0FBbmltYXRpb24+IGNyZWF0ZShBbmltYXRpb25UeXBlLCBjb25zdCBTdHJpbmcmIGtleVBhdGgp
OworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IGNyZWF0ZShQbGF0
Zm9ybUFuaW1hdGlvblJlZiBhbmltYXRpb24pOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsYXRm
b3JtQ0FBbmltYXRpb24+IGNyZWF0ZShjb25zdCBQbGF0Zm9ybUNBQW5pbWF0aW9uKiBhbmltYXRp
b24pOworCisgICAgflBsYXRmb3JtQ0FBbmltYXRpb24oKTsKKyAgICAKKyAgICBzdGF0aWMgYm9v
bCBzdXBwb3J0c1ZhbHVlRnVuY3Rpb24oKTsKKyAgICAKKyAgICBQbGF0Zm9ybUFuaW1hdGlvblJl
ZiBwbGF0Zm9ybUFuaW1hdGlvbigpIGNvbnN0OworICAgIAorICAgIEFuaW1hdGlvblR5cGUgYW5p
bWF0aW9uVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQorICAgIFN0cmluZyBrZXlQYXRo
KCkgY29uc3Q7CisgICAgCisgICAgYm9vbCBoYXNOb25aZXJvQmVnaW5UaW1lRmxhZygpIGNvbnN0
OworICAgIHZvaWQgc2V0Tm9uWmVyb0JlZ2luVGltZUZsYWcoYm9vbCB2YWx1ZSk7CisgICAgCisg
ICAgQ0ZUaW1lSW50ZXJ2YWwgYmVnaW5UaW1lKCkgY29uc3Q7CisgICAgdm9pZCBzZXRCZWdpblRp
bWUoQ0ZUaW1lSW50ZXJ2YWwpOworICAgIAorICAgIENGVGltZUludGVydmFsIGR1cmF0aW9uKCkg
Y29uc3Q7CisgICAgdm9pZCBzZXREdXJhdGlvbihDRlRpbWVJbnRlcnZhbCk7CisgICAgCisgICAg
ZmxvYXQgc3BlZWQoKSBjb25zdDsKKyAgICB2b2lkIHNldFNwZWVkKGZsb2F0KTsKKworICAgIENG
VGltZUludGVydmFsIHRpbWVPZmZzZXQoKSBjb25zdDsKKyAgICB2b2lkIHNldFRpbWVPZmZzZXQo
Q0ZUaW1lSW50ZXJ2YWwpOworCisgICAgZmxvYXQgcmVwZWF0Q291bnQoKSBjb25zdDsKKyAgICB2
b2lkIHNldFJlcGVhdENvdW50KGZsb2F0KTsKKworICAgIGJvb2wgYXV0b3JldmVyc2VzKCkgY29u
c3Q7CisgICAgdm9pZCBzZXRBdXRvcmV2ZXJzZXMoYm9vbCk7CisKKyAgICBGaWxsTW9kZVR5cGUg
ZmlsbE1vZGUoKSBjb25zdDsKKyAgICB2b2lkIHNldEZpbGxNb2RlKEZpbGxNb2RlVHlwZSk7Cisg
ICAgCisgICAgdm9pZCBzZXRUaW1pbmdGdW5jdGlvbihjb25zdCBUaW1pbmdGdW5jdGlvbiopOwor
ICAgIHZvaWQgY29weVRpbWluZ0Z1bmN0aW9uRnJvbShjb25zdCBQbGF0Zm9ybUNBQW5pbWF0aW9u
Kik7CisKKyAgICBib29sIGlzUmVtb3ZlZE9uQ29tcGxldGlvbigpIGNvbnN0OworICAgIHZvaWQg
c2V0UmVtb3ZlZE9uQ29tcGxldGlvbihib29sKTsKKworICAgIGJvb2wgaXNBZGRpdGl2ZSgpIGNv
bnN0OworICAgIHZvaWQgc2V0QWRkaXRpdmUoYm9vbCk7CisKKyAgICBWYWx1ZUZ1bmN0aW9uVHlw
ZSB2YWx1ZUZ1bmN0aW9uKCkgY29uc3Q7CisgICAgdm9pZCBzZXRWYWx1ZUZ1bmN0aW9uKFZhbHVl
RnVuY3Rpb25UeXBlKTsKKworICAgIC8vIEJhc2ljLWFuaW1hdGlvbiBwcm9wZXJ0aWVzLgorICAg
IHZvaWQgc2V0RnJvbVZhbHVlKGZsb2F0KTsKKyAgICB2b2lkIHNldEZyb21WYWx1ZShjb25zdCBX
ZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpOworICAgIHZvaWQgc2V0RnJvbVZhbHVlKGNv
bnN0IEZsb2F0UG9pbnQzRCYpOworICAgIHZvaWQgc2V0RnJvbVZhbHVlKGNvbnN0IFdlYkNvcmU6
OkNvbG9yJik7CisgICAgdm9pZCBjb3B5RnJvbVZhbHVlRnJvbShjb25zdCBQbGF0Zm9ybUNBQW5p
bWF0aW9uKik7CisKKyAgICB2b2lkIHNldFRvVmFsdWUoZmxvYXQpOworICAgIHZvaWQgc2V0VG9W
YWx1ZShjb25zdCBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpOworICAgIHZvaWQgc2V0
VG9WYWx1ZShjb25zdCBGbG9hdFBvaW50M0QmKTsKKyAgICB2b2lkIHNldFRvVmFsdWUoY29uc3Qg
V2ViQ29yZTo6Q29sb3ImKTsKKyAgICB2b2lkIGNvcHlUb1ZhbHVlRnJvbShjb25zdCBQbGF0Zm9y
bUNBQW5pbWF0aW9uKik7CisKKyAgICAvLyBLZXlmcmFtZS1hbmltYXRpb24gcHJvcGVydGllcy4K
KyAgICB2b2lkIHNldFZhbHVlcyhjb25zdCBWZWN0b3I8ZmxvYXQ+Jik7CisgICAgdm9pZCBzZXRW
YWx1ZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4PiYpOworICAg
IHZvaWQgc2V0VmFsdWVzKGNvbnN0IFZlY3RvcjxGbG9hdFBvaW50M0Q+Jik7CisgICAgdm9pZCBz
ZXRWYWx1ZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvbG9yPiYpOworICAgIHZvaWQgY29weVZh
bHVlc0Zyb20oY29uc3QgUGxhdGZvcm1DQUFuaW1hdGlvbiopOworCisgICAgdm9pZCBzZXRLZXlU
aW1lcyhjb25zdCBWZWN0b3I8ZmxvYXQ+Jik7CisgICAgdm9pZCBjb3B5S2V5VGltZXNGcm9tKGNv
bnN0IFBsYXRmb3JtQ0FBbmltYXRpb24qKTsKKworICAgIHZvaWQgc2V0VGltaW5nRnVuY3Rpb25z
KGNvbnN0IFZlY3Rvcjxjb25zdCBUaW1pbmdGdW5jdGlvbio+Jik7CisgICAgdm9pZCBjb3B5VGlt
aW5nRnVuY3Rpb25zRnJvbShjb25zdCBQbGF0Zm9ybUNBQW5pbWF0aW9uKik7CisgICAgCitwcm90
ZWN0ZWQ6CisgICAgUGxhdGZvcm1DQUFuaW1hdGlvbihBbmltYXRpb25UeXBlLCBjb25zdCBTdHJp
bmcmIGtleVBhdGgpOworICAgIFBsYXRmb3JtQ0FBbmltYXRpb24oUGxhdGZvcm1BbmltYXRpb25S
ZWYgYW5pbWF0aW9uKTsKKyAgICBQbGF0Zm9ybUNBQW5pbWF0aW9uKGNvbnN0IFBsYXRmb3JtQ0FB
bmltYXRpb24qIGFuaW1hdGlvbik7CisgICAgCitwcml2YXRlOgorICAgIEFuaW1hdGlvblR5cGUg
bV90eXBlOworICAgIAorI2lmIFBMQVRGT1JNKE1BQykKKyAgICBSZXRhaW5QdHI8Q0FQcm9wZXJ0
eUFuaW1hdGlvbj4gbV9hbmltYXRpb247CisjZWxpZiBQTEFURk9STShXSU4pCisgICAgUmV0YWlu
UHRyPENBQ0ZBbmltYXRpb25SZWY+IG1fYW5pbWF0aW9uOworI2VuZGlmCit9OworCit9CisKKyNl
bmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisKKyNlbmRpZiAvLyBQbGF0Zm9y
bUNBQW5pbWF0aW9uX2gKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZv
cm1DQUxheWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9Q
bGF0Zm9ybUNBTGF5ZXIuaAkocmV2aXNpb24gNzMyMzYpCShmcm9tIFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmg6NzMyMzYpCisrKyBXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MjA4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRF
UiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaWZuZGVmIFBsYXRmb3JtQ0FMYXllcl9oCisjZGVmaW5lIFBsYXRmb3JtQ0FMYXll
cl9oCisKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisKKyNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJHcmFwaGljc0xheWVyQ0EuaCIKKyNpbmNsdWRlICJQ
bGF0Zm9ybUNBQW5pbWF0aW9uLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBQbGF0Zm9ybUNBTGF5ZXI7CisKK3R5cGVkZWYgVmVj
dG9yPFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+ID4gUGxhdGZvcm1DQUxheWVyTGlzdDsKKworY2xh
c3MgUGxhdGZvcm1DQUxheWVyIDogcHVibGljIFJlZkNvdW50ZWQ8UGxhdGZvcm1DQUxheWVyPiB7
CitwdWJsaWM6CisgICAgLy8gVGlsZWRMYXllciB1c2VkIGluIEdyYXBoaWNzTGF5ZXIgaGFzIGNv
bnN0YW50IHNldHRpbmdzOgorICAgIC8vICAgICAgY1RpbGVkTGF5ZXJUaWxlU2l6ZSA9IDUxMgor
ICAgIC8vICAgICAgc2V0VGlsZVNpemU6KGNUaWxlZExheWVyVGlsZVNpemUsIGNUaWxlZExheWVy
VGlsZVNpemUpCisgICAgLy8gICAgICBzZXRMZXZlbHNPZkRldGFpbDoxCisgICAgLy8gICAgICBz
ZXRMZXZlbHNPZkRldGFpbEJpYXM6MAorICAgIC8vICAgICAgc2V0Q29udGVudHNHcmF2aXR5OkAi
Ym90dG9tTGVmdCIKKyAgICAvLworICAgIC8vIFRpbGVkTGF5ZXIgYWxzbyBoYXMgZHJhd2luZyBm
dW5jdGlvbnMgbGlrZSBXZWJMYXllcgorICAgIC8vCisgICAgLy8gV2ViTGF5ZXIgaXMgYSBDQUxh
eWVyIHdpdGggZHJhd2luZyBmdW5jdGlvbnMgc3BlY2lmaWMgdG8gV2ViS2l0CisgICAgLy8KKyAg
ICAvLyBMYXllciBhbmQgVHJhbnNmb3JtTGF5ZXIgYXJlIHVzZWQgYXMgaXMKKworICAgIGVudW0g
TGF5ZXJUeXBlIHsgTGF5ZXJUeXBlTGF5ZXIsIExheWVyVHlwZVdlYkxheWVyLCBMYXllclR5cGVU
cmFuc2Zvcm1MYXllciwgTGF5ZXJUeXBlV2ViVGlsZWRMYXllciwgTGF5ZXJUeXBlQ3VzdG9tIH07
CisgICAgZW51bSBGaWx0ZXJUeXBlIHsgTGluZWFyLCBOZWFyZXN0LCBUcmlsaW5lYXIgfTsKKwor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gY3JlYXRlKExheWVyVHlwZSwg
R3JhcGhpY3NMYXllckNBKik7CisgICAgCisgICAgLy8gVGhpcyBmdW5jdGlvbiBwYXNzZXMgdGhl
IGxheWVyIGFzIGEgdm9pZCogcmF0aGVyIHRoYW4gYSBQbGF0Zm9ybUxheWVyIGJlY2F1c2UgUGxh
dGZvcm1MYXllcgorICAgIC8vIGlzIGRlZmluZWQgZGlmZmVyZW50bHkgZm9yIE9iaiBDIGFuZCBD
KysuIFRoaXMgYWxsb3dzIGNhbGxlcnMgZnJvbSBib3RoIGxhbmd1YWdlcy4KKyAgICBzdGF0aWMg
UGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IGNyZWF0ZSh2b2lkKiBwbGF0Zm9ybUxheWVyLCBH
cmFwaGljc0xheWVyQ0EqKTsKKworICAgIH5QbGF0Zm9ybUNBTGF5ZXIoKTsKKyAgICAKKyAgICAv
LyBUaGlzIGZ1bmN0aW9uIHBhc3NlcyB0aGUgbGF5ZXIgYXMgYSB2b2lkKiByYXRoZXIgdGhhbiBh
IFBsYXRmb3JtTGF5ZXIgYmVjYXVzZSBQbGF0Zm9ybUxheWVyCisgICAgLy8gaXMgZGVmaW5lZCBk
aWZmZXJlbnRseSBmb3IgT2JqIEMgYW5kIEMrKy4gVGhpcyBhbGxvd3MgY2FsbGVycyBmcm9tIGJv
dGggbGFuZ3VhZ2VzLgorICAgIHN0YXRpYyBQbGF0Zm9ybUNBTGF5ZXIqIHBsYXRmb3JtQ0FMYXll
cih2b2lkKiBwbGF0Zm9ybUxheWVyKTsKKyAgICAKKyAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9y
bUxheWVyKCkgY29uc3Q7CisgICAgCisgICAgc3RhdGljIGJvb2wgaXNWYWx1ZUZ1bmN0aW9uU3Vw
cG9ydGVkKCk7CisgICAgCisgICAgR3JhcGhpY3NMYXllckNBKiBvd25lcigpIGNvbnN0IHsgcmV0
dXJuIG1fb3duZXI7IH0KKyAgICB2b2lkIHNldE93bmVyKEdyYXBoaWNzTGF5ZXJDQSogb3duZXIp
OworCisgICAgdm9pZCBhbmltYXRpb25TdGFydGVkKENGVGltZUludGVydmFsIGJlZ2luVGltZSkK
KyAgICB7CisgICAgICAgIGlmIChtX293bmVyKQorICAgICAgICAgICAgbV9vd25lci0+YW5pbWF0
aW9uU3RhcnRlZChiZWdpblRpbWUpOworICAgIH0KKworICAgIHZvaWQgc2V0TmVlZHNEaXNwbGF5
KGNvbnN0IEZsb2F0UmVjdCogZGlydHlSZWN0ID0gMCk7CisgICAgCisgICAgdm9pZCBzZXRDb250
ZW50c0NoYW5nZWQoKTsKKyAgICAKKyAgICBMYXllclR5cGUgbGF5ZXJUeXBlKCkgY29uc3QgeyBy
ZXR1cm4gbV9sYXllclR5cGU7IH0KKworICAgIFBsYXRmb3JtQ0FMYXllciogc3VwZXJsYXllcigp
IGNvbnN0OworICAgIHZvaWQgcmVtb3ZlRnJvbVN1cGVybGF5ZXIoKTsKKyAgICB2b2lkIHNldFN1
YmxheWVycyhjb25zdCBQbGF0Zm9ybUNBTGF5ZXJMaXN0Jik7CisgICAgdm9pZCByZW1vdmVBbGxT
dWJsYXllcnMoKTsKKyAgICB2b2lkIGFwcGVuZFN1YmxheWVyKFBsYXRmb3JtQ0FMYXllciopOwor
ICAgIHZvaWQgaW5zZXJ0U3VibGF5ZXIoUGxhdGZvcm1DQUxheWVyKiwgc2l6ZV90IGluZGV4KTsK
KyAgICB2b2lkIHJlcGxhY2VTdWJsYXllcihQbGF0Zm9ybUNBTGF5ZXIqIHJlZmVyZW5jZSwgUGxh
dGZvcm1DQUxheWVyKik7CisgICAgc2l6ZV90IHN1YmxheWVyQ291bnQoKSBjb25zdDsKKworICAg
IC8vIFRoaXMgbWV0aG9kIHJlbW92ZXMgdGhlIHN1YmxheWVycyBmcm9tIHRoZSBzb3VyY2UgYW5k
IHJlcGFyZW50cyB0aGVtIHRvIHRoZSBjdXJyZW50IGxheWVyLgorICAgIHZvaWQgYWRvcHRTdWJs
YXllcnMoUGxhdGZvcm1DQUxheWVyKiBzb3VyY2UpOworICAgIAorICAgIHZvaWQgYWRkQW5pbWF0
aW9uRm9yS2V5KGNvbnN0IFN0cmluZyYga2V5LCBQbGF0Zm9ybUNBQW5pbWF0aW9uKiBhbmltYXRp
b24pOyAgICAKKyAgICB2b2lkIHJlbW92ZUFuaW1hdGlvbkZvcktleShjb25zdCBTdHJpbmcmIGtl
eSk7CisgICAgUGFzc1JlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBhbmltYXRpb25Gb3JLZXko
Y29uc3QgU3RyaW5nJiBrZXkpOworICAgIAorICAgIFBsYXRmb3JtQ0FMYXllciogbWFzaygpIGNv
bnN0OworICAgIHZvaWQgc2V0TWFzayhQbGF0Zm9ybUNBTGF5ZXIqKTsKKyAgICAKKyAgICBib29s
IGlzT3BhcXVlKCkgY29uc3Q7CisgICAgdm9pZCBzZXRPcGFxdWUoYm9vbCk7CisKKyAgICBGbG9h
dFJlY3QgYm91bmRzKCkgY29uc3Q7CisgICAgdm9pZCBzZXRCb3VuZHMoY29uc3QgRmxvYXRSZWN0
Jik7CisKKyAgICBGbG9hdFBvaW50M0QgcG9zaXRpb24oKSBjb25zdDsKKyAgICB2b2lkIHNldFBv
c2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQzRCYpOworICAgIHZvaWQgc2V0UG9zaXRpb24oY29uc3Qg
RmxvYXRQb2ludCYgcG9zKSB7IHNldFBvc2l0aW9uKEZsb2F0UG9pbnQzRChwb3MueCgpLCBwb3Mu
eSgpLCAwKSk7IH0KKworICAgIEZsb2F0UG9pbnQzRCBhbmNob3JQb2ludCgpIGNvbnN0OworICAg
IHZvaWQgc2V0QW5jaG9yUG9pbnQoY29uc3QgRmxvYXRQb2ludDNEJik7CisKKyAgICBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCB0cmFuc2Zvcm0oKSBjb25zdDsKKyAgICB2b2lkIHNldFRyYW5zZm9ybShj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpOworCisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXgg
c3VibGF5ZXJUcmFuc2Zvcm0oKSBjb25zdDsKKyAgICB2b2lkIHNldFN1YmxheWVyVHJhbnNmb3Jt
KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4Jik7CisKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCBjb250ZW50c1RyYW5zZm9ybSgpIGNvbnN0OworICAgIHZvaWQgc2V0Q29udGVudHNUcmFuc2Zv
cm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKTsKKworICAgIGJvb2wgaXNIaWRkZW4oKSBj
b25zdDsKKyAgICB2b2lkIHNldEhpZGRlbihib29sKTsKKworICAgIGJvb2wgaXNHZW9tZXRyeUZs
aXBwZWQoKSBjb25zdDsKKyAgICB2b2lkIHNldEdlb21ldHJ5RmxpcHBlZChib29sKTsKKworICAg
IGJvb2wgaXNEb3VibGVTaWRlZCgpIGNvbnN0OworICAgIHZvaWQgc2V0RG91YmxlU2lkZWQoYm9v
bCk7CisKKyAgICBib29sIG1hc2tzVG9Cb3VuZHMoKSBjb25zdDsKKyAgICB2b2lkIHNldE1hc2tz
VG9Cb3VuZHMoYm9vbCk7CisKKyAgICB2b2lkKiBjb250ZW50cygpIGNvbnN0OworICAgIHZvaWQg
c2V0Q29udGVudHModm9pZCopOworCisgICAgRmxvYXRSZWN0IGNvbnRlbnRzUmVjdCgpIGNvbnN0
OworICAgIHZvaWQgc2V0Q29udGVudHNSZWN0KGNvbnN0IEZsb2F0UmVjdCYpOworCisgICAgdm9p
ZCBzZXRNaW5pZmljYXRpb25GaWx0ZXIoRmlsdGVyVHlwZSk7CisgICAgdm9pZCBzZXRNYWduaWZp
Y2F0aW9uRmlsdGVyKEZpbHRlclR5cGUpOworCisgICAgQ29sb3IgYmFja2dyb3VuZENvbG9yKCkg
Y29uc3Q7CisgICAgdm9pZCBzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImKTsKKworICAg
IGZsb2F0IGJvcmRlcldpZHRoKCkgY29uc3Q7CisgICAgdm9pZCBzZXRCb3JkZXJXaWR0aChmbG9h
dCk7CisKKyAgICBDb2xvciBib3JkZXJDb2xvcigpIGNvbnN0OworICAgIHZvaWQgc2V0Qm9yZGVy
Q29sb3IoY29uc3QgQ29sb3ImKTsKKworICAgIGZsb2F0IG9wYWNpdHkoKSBjb25zdDsKKyAgICB2
b2lkIHNldE9wYWNpdHkoZmxvYXQpOworCisgICAgU3RyaW5nIG5hbWUoKSBjb25zdDsKKyAgICB2
b2lkIHNldE5hbWUoY29uc3QgU3RyaW5nJik7CisKKyAgICBGbG9hdFJlY3QgZnJhbWUoKSBjb25z
dDsKKyAgICB2b2lkIHNldEZyYW1lKGNvbnN0IEZsb2F0UmVjdCYpOworCisgICAgZmxvYXQgc3Bl
ZWQoKSBjb25zdDsKKyAgICB2b2lkIHNldFNwZWVkKGZsb2F0KTsKKworICAgIENGVGltZUludGVy
dmFsIHRpbWVPZmZzZXQoKSBjb25zdDsKKyAgICB2b2lkIHNldFRpbWVPZmZzZXQoQ0ZUaW1lSW50
ZXJ2YWwpOworCitwcm90ZWN0ZWQ6CisgICAgUGxhdGZvcm1DQUxheWVyKExheWVyVHlwZSwgUGxh
dGZvcm1MYXllciosIEdyYXBoaWNzTGF5ZXJDQSopOworICAgIAorcHJpdmF0ZToKKyAgICAKKyAg
ICBHcmFwaGljc0xheWVyQ0EqIG1fb3duZXI7CisgICAgTGF5ZXJUeXBlIG1fbGF5ZXJUeXBlOwor
ICAgIAorI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oV0lOKQorICAgIFJldGFpblB0cjxQ
bGF0Zm9ybUxheWVyPiBtX2xheWVyOworI2VuZGlmCisKKyNpZiBQTEFURk9STShNQUMpCisjaWZk
ZWYgX19PQkpDX18KKyAgICBSZXRhaW5QdHI8TlNPYmplY3Q+IG1fZGVsZWdhdGU7CisjZWxzZQor
ICAgIFJldGFpblB0cjx2b2lkPiBtX2RlbGVnYXRlOworI2VuZGlmCisjZW5kaWYKK307CisKK30K
KworI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKworI2VuZGlmIC8vIFBs
YXRmb3JtQ0FMYXllcl9oCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9Q
bGF0Zm9ybUNBQW5pbWF0aW9uTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvbWFjL1BsYXRmb3JtQ0FBbmltYXRpb25NYWMubW0JKHJldmlzaW9uIDczMjM2
KQkoZnJvbSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9QbGF0Zm9ybUNBQW5pbWF0
aW9uTWFjLm1tOjczMjM2KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvUGxh
dGZvcm1DQUFuaW1hdGlvbk1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU5MyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQor
CisjaW1wb3J0ICJQbGF0Zm9ybUNBQW5pbWF0aW9uLmgiCisKKyNpbXBvcnQgIkZsb2F0Q29udmVy
c2lvbi5oIgorI2ltcG9ydCAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbXBvcnQgIlRpbWluZ0Z1bmN0
aW9uLmgiCisjaW1wb3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNvcmUuaD4KKyNpbXBvcnQgPHd0Zi9V
bnVzZWRQYXJhbS5oPgorCisjZGVmaW5lIEhBVkVfTU9ERVJOX1FVQVJUWkNPUkUgKCFkZWZpbmVk
KEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSkKKwor
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKKy8vIFRoaXMgdmFsdWUgbXVzdCBiZSB0aGUgc2Ft
ZSBhcyBpbiBQbGF0Zm9ybUNBTGF5ZXJNYWMubW0KK3N0YXRpYyBjb25zdCBOU1N0cmluZyogV0tO
b25aZXJvQmVnaW5UaW1lRmxhZyA9IEAiV0tQbGF0Zm9ybUNBQW5pbWF0aW9uTm9uWmVyb0JlZ2lu
VGltZUZsYWciOworCitzdGF0aWMgaW5saW5lIHZvaWQgY29weVRyYW5zZm9ybShDQVRyYW5zZm9y
bTNEJiB0b1QzRCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHQpCit7CisgICAgdG9UM0Qu
bTExID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCh0Lm0xMSgpKTsKKyAgICB0b1QzRC5tMTIgPSBu
YXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHQubTEyKCkpOworICAgIHRvVDNELm0xMyA9IG5hcnJvd1By
ZWNpc2lvblRvRmxvYXQodC5tMTMoKSk7CisgICAgdG9UM0QubTE0ID0gbmFycm93UHJlY2lzaW9u
VG9GbG9hdCh0Lm0xNCgpKTsKKyAgICB0b1QzRC5tMjEgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0
KHQubTIxKCkpOworICAgIHRvVDNELm0yMiA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodC5tMjIo
KSk7CisgICAgdG9UM0QubTIzID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCh0Lm0yMygpKTsKKyAg
ICB0b1QzRC5tMjQgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHQubTI0KCkpOworICAgIHRvVDNE
Lm0zMSA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodC5tMzEoKSk7CisgICAgdG9UM0QubTMyID0g
bmFycm93UHJlY2lzaW9uVG9GbG9hdCh0Lm0zMigpKTsKKyAgICB0b1QzRC5tMzMgPSBuYXJyb3dQ
cmVjaXNpb25Ub0Zsb2F0KHQubTMzKCkpOworICAgIHRvVDNELm0zNCA9IG5hcnJvd1ByZWNpc2lv
blRvRmxvYXQodC5tMzQoKSk7CisgICAgdG9UM0QubTQxID0gbmFycm93UHJlY2lzaW9uVG9GbG9h
dCh0Lm00MSgpKTsKKyAgICB0b1QzRC5tNDIgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHQubTQy
KCkpOworICAgIHRvVDNELm00MyA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodC5tNDMoKSk7Cisg
ICAgdG9UM0QubTQ0ID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCh0Lm00NCgpKTsKK30KKworc3Rh
dGljIE5TU3RyaW5nKiB0b0NBRmlsbE1vZGVUeXBlKFBsYXRmb3JtQ0FBbmltYXRpb246OkZpbGxN
b2RlVHlwZSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgUGxhdGZvcm1D
QUFuaW1hdGlvbjo6Tm9GaWxsTW9kZToKKyAgICBjYXNlIFBsYXRmb3JtQ0FBbmltYXRpb246OkZv
cndhcmRzOiByZXR1cm4ga0NBRmlsbE1vZGVGb3J3YXJkczsKKyAgICBjYXNlIFBsYXRmb3JtQ0FB
bmltYXRpb246OkJhY2t3YXJkczogcmV0dXJuIGtDQUZpbGxNb2RlQmFja3dhcmRzOworICAgIGNh
c2UgUGxhdGZvcm1DQUFuaW1hdGlvbjo6Qm90aDogcmV0dXJuIGtDQUZpbGxNb2RlQm90aDsKKyAg
ICB9CisgICAgcmV0dXJuIEAiIjsKK30KKworc3RhdGljIFBsYXRmb3JtQ0FBbmltYXRpb246OkZp
bGxNb2RlVHlwZSBmcm9tQ0FGaWxsTW9kZVR5cGUoTlNTdHJpbmcqIHN0cmluZykKK3sKKyAgICBp
ZiAoW3N0cmluZyBpc0VxdWFsVG9TdHJpbmc6a0NBRmlsbE1vZGVCYWNrd2FyZHNdKQorICAgICAg
ICByZXR1cm4gUGxhdGZvcm1DQUFuaW1hdGlvbjo6QmFja3dhcmRzOworCisgICAgaWYgKFtzdHJp
bmcgaXNFcXVhbFRvU3RyaW5nOmtDQUZpbGxNb2RlQm90aF0pCisgICAgICAgIHJldHVybiBQbGF0
Zm9ybUNBQW5pbWF0aW9uOjpCb3RoOworCisgICAgcmV0dXJuIFBsYXRmb3JtQ0FBbmltYXRpb246
OkZvcndhcmRzOworfQorCisjaWYgSEFWRV9NT0RFUk5fUVVBUlRaQ09SRQorc3RhdGljIE5TU3Ry
aW5nKiB0b0NBVmFsdWVGdW5jdGlvblR5cGUoUGxhdGZvcm1DQUFuaW1hdGlvbjo6VmFsdWVGdW5j
dGlvblR5cGUgdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIFBsYXRmb3Jt
Q0FBbmltYXRpb246Ok5vVmFsdWVGdW5jdGlvbjogcmV0dXJuIEAiIjsKKyAgICBjYXNlIFBsYXRm
b3JtQ0FBbmltYXRpb246OlJvdGF0ZVg6IHJldHVybiBrQ0FWYWx1ZUZ1bmN0aW9uUm90YXRlWDsK
KyAgICBjYXNlIFBsYXRmb3JtQ0FBbmltYXRpb246OlJvdGF0ZVk6IHJldHVybiBrQ0FWYWx1ZUZ1
bmN0aW9uUm90YXRlWTsKKyAgICBjYXNlIFBsYXRmb3JtQ0FBbmltYXRpb246OlJvdGF0ZVo6IHJl
dHVybiBrQ0FWYWx1ZUZ1bmN0aW9uUm90YXRlWjsKKyAgICBjYXNlIFBsYXRmb3JtQ0FBbmltYXRp
b246OlNjYWxlWDogcmV0dXJuIGtDQVZhbHVlRnVuY3Rpb25TY2FsZVg7CisgICAgY2FzZSBQbGF0
Zm9ybUNBQW5pbWF0aW9uOjpTY2FsZVk6IHJldHVybiBrQ0FWYWx1ZUZ1bmN0aW9uU2NhbGVZOwor
ICAgIGNhc2UgUGxhdGZvcm1DQUFuaW1hdGlvbjo6U2NhbGVaOiByZXR1cm4ga0NBVmFsdWVGdW5j
dGlvblNjYWxlWjsKKyAgICBjYXNlIFBsYXRmb3JtQ0FBbmltYXRpb246OlNjYWxlOiByZXR1cm4g
a0NBVmFsdWVGdW5jdGlvblNjYWxlOworICAgIGNhc2UgUGxhdGZvcm1DQUFuaW1hdGlvbjo6VHJh
bnNsYXRlWDogcmV0dXJuIGtDQVZhbHVlRnVuY3Rpb25UcmFuc2xhdGVYOworICAgIGNhc2UgUGxh
dGZvcm1DQUFuaW1hdGlvbjo6VHJhbnNsYXRlWTogcmV0dXJuIGtDQVZhbHVlRnVuY3Rpb25UcmFu
c2xhdGVZOworICAgIGNhc2UgUGxhdGZvcm1DQUFuaW1hdGlvbjo6VHJhbnNsYXRlWjogcmV0dXJu
IGtDQVZhbHVlRnVuY3Rpb25UcmFuc2xhdGVaOworICAgIGNhc2UgUGxhdGZvcm1DQUFuaW1hdGlv
bjo6VHJhbnNsYXRlOiByZXR1cm4ga0NBVmFsdWVGdW5jdGlvblRyYW5zbGF0ZTsKKyAgICB9Cisg
ICAgcmV0dXJuIEAiIjsKK30KKworc3RhdGljIFBsYXRmb3JtQ0FBbmltYXRpb246OlZhbHVlRnVu
Y3Rpb25UeXBlIGZyb21DQVZhbHVlRnVuY3Rpb25UeXBlKE5TU3RyaW5nKiBzdHJpbmcpCit7Cisg
ICAgaWYgKFtzdHJpbmcgaXNFcXVhbFRvU3RyaW5nOmtDQVZhbHVlRnVuY3Rpb25Sb3RhdGVYXSkK
KyAgICAgICAgcmV0dXJuIFBsYXRmb3JtQ0FBbmltYXRpb246OlJvdGF0ZVg7CisKKyAgICBpZiAo
W3N0cmluZyBpc0VxdWFsVG9TdHJpbmc6a0NBVmFsdWVGdW5jdGlvblJvdGF0ZVldKQorICAgICAg
ICByZXR1cm4gUGxhdGZvcm1DQUFuaW1hdGlvbjo6Um90YXRlWTsKKworICAgIGlmIChbc3RyaW5n
IGlzRXF1YWxUb1N0cmluZzprQ0FWYWx1ZUZ1bmN0aW9uUm90YXRlWl0pCisgICAgICAgIHJldHVy
biBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpSb3RhdGVaOworCisgICAgaWYgKFtzdHJpbmcgaXNFcXVh
bFRvU3RyaW5nOmtDQVZhbHVlRnVuY3Rpb25TY2FsZVhdKQorICAgICAgICByZXR1cm4gUGxhdGZv
cm1DQUFuaW1hdGlvbjo6U2NhbGVYOworCisgICAgaWYgKFtzdHJpbmcgaXNFcXVhbFRvU3RyaW5n
OmtDQVZhbHVlRnVuY3Rpb25TY2FsZVldKQorICAgICAgICByZXR1cm4gUGxhdGZvcm1DQUFuaW1h
dGlvbjo6U2NhbGVZOworCisgICAgaWYgKFtzdHJpbmcgaXNFcXVhbFRvU3RyaW5nOmtDQVZhbHVl
RnVuY3Rpb25TY2FsZVpdKQorICAgICAgICByZXR1cm4gUGxhdGZvcm1DQUFuaW1hdGlvbjo6U2Nh
bGVaOworCisgICAgaWYgKFtzdHJpbmcgaXNFcXVhbFRvU3RyaW5nOmtDQVZhbHVlRnVuY3Rpb25T
Y2FsZV0pCisgICAgICAgIHJldHVybiBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpTY2FsZTsKKworICAg
IGlmIChbc3RyaW5nIGlzRXF1YWxUb1N0cmluZzprQ0FWYWx1ZUZ1bmN0aW9uVHJhbnNsYXRlWF0p
CisgICAgICAgIHJldHVybiBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpUcmFuc2xhdGVYOworCisgICAg
aWYgKFtzdHJpbmcgaXNFcXVhbFRvU3RyaW5nOmtDQVZhbHVlRnVuY3Rpb25UcmFuc2xhdGVZXSkK
KyAgICAgICAgcmV0dXJuIFBsYXRmb3JtQ0FBbmltYXRpb246OlRyYW5zbGF0ZVk7CisKKyAgICBp
ZiAoW3N0cmluZyBpc0VxdWFsVG9TdHJpbmc6a0NBVmFsdWVGdW5jdGlvblRyYW5zbGF0ZVpdKQor
ICAgICAgICByZXR1cm4gUGxhdGZvcm1DQUFuaW1hdGlvbjo6VHJhbnNsYXRlWjsKKworICAgIGlm
IChbc3RyaW5nIGlzRXF1YWxUb1N0cmluZzprQ0FWYWx1ZUZ1bmN0aW9uVHJhbnNsYXRlXSkKKyAg
ICAgICAgcmV0dXJuIFBsYXRmb3JtQ0FBbmltYXRpb246OlRyYW5zbGF0ZTsKKworICAgIHJldHVy
biBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpOb1ZhbHVlRnVuY3Rpb247Cit9CisjZW5kaWYKKworc3Rh
dGljIENBTWVkaWFUaW1pbmdGdW5jdGlvbiogdG9DQU1lZGlhVGltaW5nRnVuY3Rpb24oY29uc3Qg
VGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0aW9uKQoreworICAgIGlmICghdGltaW5nRnVuY3Rp
b24pCisgICAgICAgIHJldHVybiBbQ0FNZWRpYVRpbWluZ0Z1bmN0aW9uIGZ1bmN0aW9uV2l0aE5h
bWU6a0NBTWVkaWFUaW1pbmdGdW5jdGlvbkRlZmF1bHRdOworICAgICAgICAgICAgCisgICAgaWYg
KHRpbWluZ0Z1bmN0aW9uLT5pc0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24oKSkgeworICAgICAg
ICBjb25zdCBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKiBjdGYgPSBzdGF0aWNfY2FzdDxjb25z
dCBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKj4odGltaW5nRnVuY3Rpb24pOworICAgICAgICBy
ZXR1cm4gW0NBTWVkaWFUaW1pbmdGdW5jdGlvbiBmdW5jdGlvbldpdGhDb250cm9sUG9pbnRzOnN0
YXRpY19jYXN0PGZsb2F0PihjdGYtPngxKCkpIDpzdGF0aWNfY2FzdDxmbG9hdD4oY3RmLT55MSgp
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgOnN0YXRpY19jYXN0PGZsb2F0PihjdGYtPngyKCkpIDpzdGF0aWNfY2FzdDxmbG9h
dD4oY3RmLT55MigpKV07CisgICAgfQorICAgIAorICAgIHJldHVybiBbQ0FNZWRpYVRpbWluZ0Z1
bmN0aW9uIGZ1bmN0aW9uV2l0aE5hbWU6a0NBTWVkaWFUaW1pbmdGdW5jdGlvbkxpbmVhcl07CisK
KyAgICByZXR1cm4gMDsKK30KKworUGFzc1JlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBQbGF0
Zm9ybUNBQW5pbWF0aW9uOjpjcmVhdGUoQW5pbWF0aW9uVHlwZSB0eXBlLCBjb25zdCBTdHJpbmcm
IGtleVBhdGgpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQbGF0Zm9ybUNBQW5pbWF0aW9u
KHR5cGUsIGtleVBhdGgpKTsKK30KKworUGFzc1JlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBQ
bGF0Zm9ybUNBQW5pbWF0aW9uOjpjcmVhdGUoUGxhdGZvcm1BbmltYXRpb25SZWYgYW5pbWF0aW9u
KQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGxhdGZvcm1DQUFuaW1hdGlvbihhbmltYXRp
b24pKTsKK30KKworUGFzc1JlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBQbGF0Zm9ybUNBQW5p
bWF0aW9uOjpjcmVhdGUoY29uc3QgUGxhdGZvcm1DQUFuaW1hdGlvbiogYW5pbWF0aW9uKQorewor
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGxhdGZvcm1DQUFuaW1hdGlvbihhbmltYXRpb24pKTsK
K30KKworUGxhdGZvcm1DQUFuaW1hdGlvbjo6UGxhdGZvcm1DQUFuaW1hdGlvbihBbmltYXRpb25U
eXBlIHR5cGUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCkKKyAgICA6IG1fdHlwZSh0eXBlKQorewor
ICAgIGlmICh0eXBlID09IEJhc2ljKQorICAgICAgICBtX2FuaW1hdGlvbi5hZG9wdE5TKFtbQ0FC
YXNpY0FuaW1hdGlvbiBhbmltYXRpb25XaXRoS2V5UGF0aDprZXlQYXRoXSByZXRhaW5dKTsKKyAg
ICBlbHNlCisgICAgICAgIG1fYW5pbWF0aW9uLmFkb3B0TlMoW1tDQUtleWZyYW1lQW5pbWF0aW9u
IGFuaW1hdGlvbldpdGhLZXlQYXRoOmtleVBhdGhdIHJldGFpbl0pOworfQorCitQbGF0Zm9ybUNB
QW5pbWF0aW9uOjpQbGF0Zm9ybUNBQW5pbWF0aW9uKFBsYXRmb3JtQW5pbWF0aW9uUmVmIGFuaW1h
dGlvbikKK3sKKyAgICBpZiAoW3N0YXRpY19jYXN0PENBQW5pbWF0aW9uKj4oYW5pbWF0aW9uKSBp
c0tpbmRPZkNsYXNzOltDQUJhc2ljQW5pbWF0aW9uIGNsYXNzXV0pCisgICAgICAgIG1fdHlwZSA9
IEJhc2ljOworICAgIGVsc2UgaWYgKFtzdGF0aWNfY2FzdDxDQUFuaW1hdGlvbio+KGFuaW1hdGlv
bikgaXNLaW5kT2ZDbGFzczpbQ0FLZXlmcmFtZUFuaW1hdGlvbiBjbGFzc11dKQorICAgICAgICBt
X3R5cGUgPSBLZXlmcmFtZTsKKyAgICBlbHNlIHsKKyAgICAgICAgQVNTRVJUKDApOworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIAorICAgIG1fYW5pbWF0aW9uID0gc3RhdGljX2Nhc3Q8Q0FQ
cm9wZXJ0eUFuaW1hdGlvbio+KGFuaW1hdGlvbik7Cit9CisKK1BsYXRmb3JtQ0FBbmltYXRpb246
OlBsYXRmb3JtQ0FBbmltYXRpb24oY29uc3QgUGxhdGZvcm1DQUFuaW1hdGlvbiogYW5pbWF0aW9u
KQoreworICAgIFBsYXRmb3JtQ0FBbmltYXRpb24qIG5ld0FuaW1hdGlvbiA9IG5ldyBQbGF0Zm9y
bUNBQW5pbWF0aW9uKGFuaW1hdGlvbi0+YW5pbWF0aW9uVHlwZSgpLCBhbmltYXRpb24tPmtleVBh
dGgoKSk7CisKKyAgICBuZXdBbmltYXRpb24tPnNldEJlZ2luVGltZShhbmltYXRpb24tPmJlZ2lu
VGltZSgpKTsKKyAgICBuZXdBbmltYXRpb24tPnNldER1cmF0aW9uKGFuaW1hdGlvbi0+ZHVyYXRp
b24oKSk7CisgICAgbmV3QW5pbWF0aW9uLT5zZXRTcGVlZChhbmltYXRpb24tPnNwZWVkKCkpOwor
ICAgIG5ld0FuaW1hdGlvbi0+c2V0VGltZU9mZnNldChhbmltYXRpb24tPnRpbWVPZmZzZXQoKSk7
CisgICAgbmV3QW5pbWF0aW9uLT5zZXRSZXBlYXRDb3VudChhbmltYXRpb24tPnJlcGVhdENvdW50
KCkpOworICAgIG5ld0FuaW1hdGlvbi0+c2V0QXV0b3JldmVyc2VzKGFuaW1hdGlvbi0+YXV0b3Jl
dmVyc2VzKCkpOworICAgIG5ld0FuaW1hdGlvbi0+c2V0RmlsbE1vZGUoYW5pbWF0aW9uLT5maWxs
TW9kZSgpKTsKKyAgICBuZXdBbmltYXRpb24tPnNldFJlbW92ZWRPbkNvbXBsZXRpb24oYW5pbWF0
aW9uLT5pc1JlbW92ZWRPbkNvbXBsZXRpb24oKSk7CisgICAgbmV3QW5pbWF0aW9uLT5zZXRBZGRp
dGl2ZShhbmltYXRpb24tPmlzQWRkaXRpdmUoKSk7CisgICAgbmV3QW5pbWF0aW9uLT5jb3B5VGlt
aW5nRnVuY3Rpb25Gcm9tKGFuaW1hdGlvbik7CisKKyNpZiBIQVZFX01PREVSTl9RVUFSVFpDT1JF
CisgICAgbmV3QW5pbWF0aW9uLT5zZXRWYWx1ZUZ1bmN0aW9uKGFuaW1hdGlvbi0+dmFsdWVGdW5j
dGlvbigpKTsKKyNlbmRpZgorCisgICAgbmV3QW5pbWF0aW9uLT5zZXROb25aZXJvQmVnaW5UaW1l
RmxhZyhhbmltYXRpb24tPmhhc05vblplcm9CZWdpblRpbWVGbGFnKCkpOworICAgIAorICAgIC8v
IENvcHkgdGhlIHNwZWNpZmljIEJhc2ljIG9yIEtleWZyYW1lIHZhbHVlcworICAgIGlmIChhbmlt
YXRpb24tPmFuaW1hdGlvblR5cGUoKSA9PSBLZXlmcmFtZSkgeworICAgICAgICBuZXdBbmltYXRp
b24tPmNvcHlWYWx1ZXNGcm9tKGFuaW1hdGlvbik7CisgICAgICAgIG5ld0FuaW1hdGlvbi0+Y29w
eUtleVRpbWVzRnJvbShhbmltYXRpb24pOworICAgICAgICBuZXdBbmltYXRpb24tPmNvcHlUaW1p
bmdGdW5jdGlvbnNGcm9tKGFuaW1hdGlvbik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbmV3QW5p
bWF0aW9uLT5jb3B5RnJvbVZhbHVlRnJvbShhbmltYXRpb24pOworICAgICAgICBuZXdBbmltYXRp
b24tPmNvcHlUb1ZhbHVlRnJvbShhbmltYXRpb24pOworICAgIH0KK30KKworUGxhdGZvcm1DQUFu
aW1hdGlvbjo6flBsYXRmb3JtQ0FBbmltYXRpb24oKQoreworfQorCitib29sIFBsYXRmb3JtQ0FB
bmltYXRpb246Omhhc05vblplcm9CZWdpblRpbWVGbGFnKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
W1ttX2FuaW1hdGlvbi5nZXQoKSB2YWx1ZUZvcktleTpXS05vblplcm9CZWdpblRpbWVGbGFnXSBi
b29sVmFsdWVdOworfQorCit2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb246OnNldE5vblplcm9CZWdp
blRpbWVGbGFnKGJvb2wgdmFsdWUpCit7CisgICAgW21fYW5pbWF0aW9uLmdldCgpIHNldFZhbHVl
OltOU051bWJlciBudW1iZXJXaXRoQm9vbDp2YWx1ZV0gZm9yS2V5OldLTm9uWmVyb0JlZ2luVGlt
ZUZsYWddOworfQorICAgIAorYm9vbCBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpzdXBwb3J0c1ZhbHVl
RnVuY3Rpb24oKQoreworICAgIHN0YXRpYyBib29sIHNIYXZlVmFsdWVGdW5jdGlvbiA9IFtDQVBy
b3BlcnR5QW5pbWF0aW9uIGluc3RhbmNlc1Jlc3BvbmRUb1NlbGVjdG9yOkBzZWxlY3RvcihzZXRW
YWx1ZUZ1bmN0aW9uOildOworICAgIHJldHVybiBzSGF2ZVZhbHVlRnVuY3Rpb247Cit9CisKK1Bs
YXRmb3JtQW5pbWF0aW9uUmVmIFBsYXRmb3JtQ0FBbmltYXRpb246OnBsYXRmb3JtQW5pbWF0aW9u
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9hbmltYXRpb24uZ2V0KCk7Cit9CisKK1N0cmluZyBQ
bGF0Zm9ybUNBQW5pbWF0aW9uOjprZXlQYXRoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gW21fYW5p
bWF0aW9uLmdldCgpIGtleVBhdGhdOworfQorCitDRlRpbWVJbnRlcnZhbCBQbGF0Zm9ybUNBQW5p
bWF0aW9uOjpiZWdpblRpbWUoKSBjb25zdAoreworICAgIHJldHVybiBbbV9hbmltYXRpb24uZ2V0
KCkgYmVnaW5UaW1lXTsKK30KKwordm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpzZXRCZWdpblRp
bWUoQ0ZUaW1lSW50ZXJ2YWwgdmFsdWUpCit7CisgICAgW21fYW5pbWF0aW9uLmdldCgpIHNldEJl
Z2luVGltZTp2YWx1ZV07Cit9CisKK0NGVGltZUludGVydmFsIFBsYXRmb3JtQ0FBbmltYXRpb246
OmR1cmF0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gW21fYW5pbWF0aW9uLmdldCgpIGR1cmF0
aW9uXTsKK30KKwordm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpzZXREdXJhdGlvbihDRlRpbWVJ
bnRlcnZhbCB2YWx1ZSkKK3sKKyAgICBbbV9hbmltYXRpb24uZ2V0KCkgc2V0RHVyYXRpb246dmFs
dWVdOworfQorCitmbG9hdCBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpzcGVlZCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIFttX2FuaW1hdGlvbi5nZXQoKSBzcGVlZF07Cit9CisKK3ZvaWQgUGxhdGZvcm1D
QUFuaW1hdGlvbjo6c2V0U3BlZWQoZmxvYXQgdmFsdWUpCit7CisgICAgW21fYW5pbWF0aW9uLmdl
dCgpIHNldFNwZWVkOnZhbHVlXTsKK30KKworQ0ZUaW1lSW50ZXJ2YWwgUGxhdGZvcm1DQUFuaW1h
dGlvbjo6dGltZU9mZnNldCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFttX2FuaW1hdGlvbi5nZXQo
KSB0aW1lT2Zmc2V0XTsKK30KKwordm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpzZXRUaW1lT2Zm
c2V0KENGVGltZUludGVydmFsIHZhbHVlKQoreworICAgIFttX2FuaW1hdGlvbi5nZXQoKSBzZXRU
aW1lT2Zmc2V0OnZhbHVlXTsKK30KKworZmxvYXQgUGxhdGZvcm1DQUFuaW1hdGlvbjo6cmVwZWF0
Q291bnQoKSBjb25zdAoreworICAgIHJldHVybiBbbV9hbmltYXRpb24uZ2V0KCkgcmVwZWF0Q291
bnRdOworfQorCit2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb246OnNldFJlcGVhdENvdW50KGZsb2F0
IHZhbHVlKQoreworICAgIFttX2FuaW1hdGlvbi5nZXQoKSBzZXRSZXBlYXRDb3VudDp2YWx1ZV07
Cit9CisKK2Jvb2wgUGxhdGZvcm1DQUFuaW1hdGlvbjo6YXV0b3JldmVyc2VzKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gW21fYW5pbWF0aW9uLmdldCgpIGF1dG9yZXZlcnNlc107Cit9CisKK3ZvaWQg
UGxhdGZvcm1DQUFuaW1hdGlvbjo6c2V0QXV0b3JldmVyc2VzKGJvb2wgdmFsdWUpCit7CisgICAg
W21fYW5pbWF0aW9uLmdldCgpIHNldEF1dG9yZXZlcnNlczp2YWx1ZV07Cit9CisKK1BsYXRmb3Jt
Q0FBbmltYXRpb246OkZpbGxNb2RlVHlwZSBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpmaWxsTW9kZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIGZyb21DQUZpbGxNb2RlVHlwZShbbV9hbmltYXRpb24uZ2V0
KCkgZmlsbE1vZGVdKTsKK30KKwordm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpzZXRGaWxsTW9k
ZShGaWxsTW9kZVR5cGUgdmFsdWUpCit7CisgICAgW21fYW5pbWF0aW9uLmdldCgpIHNldEZpbGxN
b2RlOnRvQ0FGaWxsTW9kZVR5cGUodmFsdWUpXTsKK30KKwordm9pZCBQbGF0Zm9ybUNBQW5pbWF0
aW9uOjpzZXRUaW1pbmdGdW5jdGlvbihjb25zdCBUaW1pbmdGdW5jdGlvbiogdmFsdWUpCit7Cisg
ICAgW21fYW5pbWF0aW9uLmdldCgpIHNldFRpbWluZ0Z1bmN0aW9uOnRvQ0FNZWRpYVRpbWluZ0Z1
bmN0aW9uKHZhbHVlKV07Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbjo6Y29weVRpbWlu
Z0Z1bmN0aW9uRnJvbShjb25zdCBQbGF0Zm9ybUNBQW5pbWF0aW9uKiB2YWx1ZSkKK3sKKyAgICBb
bV9hbmltYXRpb24uZ2V0KCkgc2V0VGltaW5nRnVuY3Rpb246W3ZhbHVlLT5tX2FuaW1hdGlvbi5n
ZXQoKSB0aW1pbmdGdW5jdGlvbl1dOworfQorCitib29sIFBsYXRmb3JtQ0FBbmltYXRpb246Omlz
UmVtb3ZlZE9uQ29tcGxldGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIFttX2FuaW1hdGlvbi5n
ZXQoKSBpc1JlbW92ZWRPbkNvbXBsZXRpb25dOworfQorCit2b2lkIFBsYXRmb3JtQ0FBbmltYXRp
b246OnNldFJlbW92ZWRPbkNvbXBsZXRpb24oYm9vbCB2YWx1ZSkKK3sKKyAgICBbbV9hbmltYXRp
b24uZ2V0KCkgc2V0UmVtb3ZlZE9uQ29tcGxldGlvbjp2YWx1ZV07Cit9CisKK2Jvb2wgUGxhdGZv
cm1DQUFuaW1hdGlvbjo6aXNBZGRpdGl2ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFttX2FuaW1h
dGlvbi5nZXQoKSBpc0FkZGl0aXZlXTsKK30KKwordm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpz
ZXRBZGRpdGl2ZShib29sIHZhbHVlKQoreworICAgIFttX2FuaW1hdGlvbi5nZXQoKSBzZXRBZGRp
dGl2ZTp2YWx1ZV07Cit9CisKK1BsYXRmb3JtQ0FBbmltYXRpb246OlZhbHVlRnVuY3Rpb25UeXBl
IFBsYXRmb3JtQ0FBbmltYXRpb246OnZhbHVlRnVuY3Rpb24oKSBjb25zdAoreworI2lmIEhBVkVf
TU9ERVJOX1FVQVJUWkNPUkUKKyAgICBDQVZhbHVlRnVuY3Rpb24qIHZmID0gW21fYW5pbWF0aW9u
LmdldCgpIHZhbHVlRnVuY3Rpb25dOworICAgIHJldHVybiBmcm9tQ0FWYWx1ZUZ1bmN0aW9uVHlw
ZShbdmYgbmFtZV0pOworI2Vsc2UKKyAgICByZXR1cm4gTm9WYWx1ZUZ1bmN0aW9uOworI2VuZGlm
Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbjo6c2V0VmFsdWVGdW5jdGlvbihWYWx1ZUZ1
bmN0aW9uVHlwZSB2YWx1ZSkKK3sKKyNpZiBIQVZFX01PREVSTl9RVUFSVFpDT1JFCisgICAgW21f
YW5pbWF0aW9uLmdldCgpIHNldFZhbHVlRnVuY3Rpb246W0NBVmFsdWVGdW5jdGlvbiBmdW5jdGlv
bldpdGhOYW1lOnRvQ0FWYWx1ZUZ1bmN0aW9uVHlwZSh2YWx1ZSldXTsKKyNlbHNlCisgICAgVU5V
U0VEX1BBUkFNKHZhbHVlKTsKKyNlbmRpZgorfQorCit2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb246
OnNldEZyb21WYWx1ZShmbG9hdCB2YWx1ZSkKK3sKKyAgICBpZiAoYW5pbWF0aW9uVHlwZSgpICE9
IEJhc2ljKQorICAgICAgICByZXR1cm47CisgICAgW3N0YXRpY19jYXN0PENBQmFzaWNBbmltYXRp
b24qPihtX2FuaW1hdGlvbi5nZXQoKSkgc2V0RnJvbVZhbHVlOltOU051bWJlciBudW1iZXJXaXRo
RG91YmxlOnZhbHVlXV07Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbjo6c2V0RnJvbVZh
bHVlKGNvbnN0IFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4JiB2YWx1ZSkKK3sKKyAgICBp
ZiAoYW5pbWF0aW9uVHlwZSgpICE9IEJhc2ljKQorICAgICAgICByZXR1cm47CisKKyAgICBDQVRy
YW5zZm9ybTNEIGNhVHJhbnNmb3JtOworICAgIGNvcHlUcmFuc2Zvcm0oY2FUcmFuc2Zvcm0sIHZh
bHVlKTsKKyAgICBbc3RhdGljX2Nhc3Q8Q0FCYXNpY0FuaW1hdGlvbio+KG1fYW5pbWF0aW9uLmdl
dCgpKSBzZXRGcm9tVmFsdWU6W05TVmFsdWUgdmFsdWVXaXRoQ0FUcmFuc2Zvcm0zRDpjYVRyYW5z
Zm9ybV1dOworfQorCit2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb246OnNldEZyb21WYWx1ZShjb25z
dCBGbG9hdFBvaW50M0QmIHZhbHVlKQoreworICAgIGlmIChhbmltYXRpb25UeXBlKCkgIT0gQmFz
aWMpCisgICAgICAgIHJldHVybjsKKworICAgIE5TQXJyYXkqIGFycmF5ID0gW05TQXJyYXkgYXJy
YXlXaXRoT2JqZWN0czoKKyAgICAgICAgICAgICAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJX
aXRoRG91YmxlOnZhbHVlLngoKV0sCisgICAgICAgICAgICAgICAgICAgICAgICBbTlNOdW1iZXIg
bnVtYmVyV2l0aERvdWJsZTp2YWx1ZS55KCldLAorICAgICAgICAgICAgICAgICAgICAgICAgW05T
TnVtYmVyIG51bWJlcldpdGhEb3VibGU6dmFsdWUueigpXSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIG5pbF07CisgICAgW3N0YXRpY19jYXN0PENBQmFzaWNBbmltYXRpb24qPihtX2FuaW1hdGlv
bi5nZXQoKSkgc2V0RnJvbVZhbHVlOmFycmF5XTsKK30KKwordm9pZCBQbGF0Zm9ybUNBQW5pbWF0
aW9uOjpzZXRGcm9tVmFsdWUoY29uc3QgV2ViQ29yZTo6Q29sb3ImIHZhbHVlKQoreworICAgIGlm
IChhbmltYXRpb25UeXBlKCkgIT0gQmFzaWMpCisgICAgICAgIHJldHVybjsKKworICAgIE5TQXJy
YXkqIGFycmF5ID0gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czoKKyAgICAgICAgICAgICAgICAg
ICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOnZhbHVlLnJlZCgpXSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOnZhbHVlLmdyZWVuKCld
LAorICAgICAgICAgICAgICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6dmFs
dWUuYmx1ZSgpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRo
RG91YmxlOnZhbHVlLmFscGhhKCldLAorICAgICAgICAgICAgICAgICAgICAgICAgbmlsXTsKKyAg
ICBbc3RhdGljX2Nhc3Q8Q0FCYXNpY0FuaW1hdGlvbio+KG1fYW5pbWF0aW9uLmdldCgpKSBzZXRG
cm9tVmFsdWU6YXJyYXldOworfQorCit2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb246OmNvcHlGcm9t
VmFsdWVGcm9tKGNvbnN0IFBsYXRmb3JtQ0FBbmltYXRpb24qIHZhbHVlKQoreworICAgIGlmIChh
bmltYXRpb25UeXBlKCkgIT0gQmFzaWMgfHwgdmFsdWUtPmFuaW1hdGlvblR5cGUoKSAhPSBCYXNp
YykKKyAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICBDQUJhc2ljQW5pbWF0aW9uKiBvdGhl
ckFuaW1hdGlvbiA9IHN0YXRpY19jYXN0PENBQmFzaWNBbmltYXRpb24qPih2YWx1ZS0+bV9hbmlt
YXRpb24uZ2V0KCkpOworICAgIFtzdGF0aWNfY2FzdDxDQUJhc2ljQW5pbWF0aW9uKj4obV9hbmlt
YXRpb24uZ2V0KCkpIHNldEZyb21WYWx1ZTpbb3RoZXJBbmltYXRpb24gZnJvbVZhbHVlXV07Cit9
CisKK3ZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbjo6c2V0VG9WYWx1ZShmbG9hdCB2YWx1ZSkKK3sK
KyAgICBpZiAoYW5pbWF0aW9uVHlwZSgpICE9IEJhc2ljKQorICAgICAgICByZXR1cm47CisgICAg
W3N0YXRpY19jYXN0PENBQmFzaWNBbmltYXRpb24qPihtX2FuaW1hdGlvbi5nZXQoKSkgc2V0VG9W
YWx1ZTpbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTp2YWx1ZV1dOworfQorCit2b2lkIFBsYXRm
b3JtQ0FBbmltYXRpb246OnNldFRvVmFsdWUoY29uc3QgV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25N
YXRyaXgmIHZhbHVlKQoreworICAgIGlmIChhbmltYXRpb25UeXBlKCkgIT0gQmFzaWMpCisgICAg
ICAgIHJldHVybjsKKworICAgIENBVHJhbnNmb3JtM0QgY2FUcmFuc2Zvcm07CisgICAgY29weVRy
YW5zZm9ybShjYVRyYW5zZm9ybSwgdmFsdWUpOworICAgIFtzdGF0aWNfY2FzdDxDQUJhc2ljQW5p
bWF0aW9uKj4obV9hbmltYXRpb24uZ2V0KCkpIHNldFRvVmFsdWU6W05TVmFsdWUgdmFsdWVXaXRo
Q0FUcmFuc2Zvcm0zRDpjYVRyYW5zZm9ybV1dOworfQorCit2b2lkIFBsYXRmb3JtQ0FBbmltYXRp
b246OnNldFRvVmFsdWUoY29uc3QgRmxvYXRQb2ludDNEJiB2YWx1ZSkKK3sKKyAgICBpZiAoYW5p
bWF0aW9uVHlwZSgpICE9IEJhc2ljKQorICAgICAgICByZXR1cm47CisKKyAgICBOU0FycmF5KiBh
cnJheSA9IFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6CisgICAgICAgICAgICAgICAgICAgICAg
ICBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTp2YWx1ZS54KCldLAorICAgICAgICAgICAgICAg
ICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6dmFsdWUueSgpXSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOnZhbHVlLnooKV0sCisg
ICAgICAgICAgICAgICAgICAgICAgICBuaWxdOworICAgIFtzdGF0aWNfY2FzdDxDQUJhc2ljQW5p
bWF0aW9uKj4obV9hbmltYXRpb24uZ2V0KCkpIHNldFRvVmFsdWU6YXJyYXldOworfQorCit2b2lk
IFBsYXRmb3JtQ0FBbmltYXRpb246OnNldFRvVmFsdWUoY29uc3QgV2ViQ29yZTo6Q29sb3ImIHZh
bHVlKQoreworICAgIGlmIChhbmltYXRpb25UeXBlKCkgIT0gQmFzaWMpCisgICAgICAgIHJldHVy
bjsKKworICAgIE5TQXJyYXkqIGFycmF5ID0gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czoKKyAg
ICAgICAgICAgICAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOnZhbHVlLnJl
ZCgpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRG91Ymxl
OnZhbHVlLmdyZWVuKCldLAorICAgICAgICAgICAgICAgICAgICAgICAgW05TTnVtYmVyIG51bWJl
cldpdGhEb3VibGU6dmFsdWUuYmx1ZSgpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFtOU051
bWJlciBudW1iZXJXaXRoRG91YmxlOnZhbHVlLmFscGhhKCldLAorICAgICAgICAgICAgICAgICAg
ICAgICAgbmlsXTsKKyAgICBbc3RhdGljX2Nhc3Q8Q0FCYXNpY0FuaW1hdGlvbio+KG1fYW5pbWF0
aW9uLmdldCgpKSBzZXRUb1ZhbHVlOmFycmF5XTsKK30KKwordm9pZCBQbGF0Zm9ybUNBQW5pbWF0
aW9uOjpjb3B5VG9WYWx1ZUZyb20oY29uc3QgUGxhdGZvcm1DQUFuaW1hdGlvbiogdmFsdWUpCit7
CisgICAgaWYgKGFuaW1hdGlvblR5cGUoKSAhPSBCYXNpYyB8fCB2YWx1ZS0+YW5pbWF0aW9uVHlw
ZSgpICE9IEJhc2ljKQorICAgICAgICByZXR1cm47CisgICAgICAgIAorICAgIENBQmFzaWNBbmlt
YXRpb24qIG90aGVyQW5pbWF0aW9uID0gc3RhdGljX2Nhc3Q8Q0FCYXNpY0FuaW1hdGlvbio+KHZh
bHVlLT5tX2FuaW1hdGlvbi5nZXQoKSk7CisgICAgW3N0YXRpY19jYXN0PENBQmFzaWNBbmltYXRp
b24qPihtX2FuaW1hdGlvbi5nZXQoKSkgc2V0VG9WYWx1ZTpbb3RoZXJBbmltYXRpb24gdG9WYWx1
ZV1dOworfQorCisKKy8vIEtleWZyYW1lLWFuaW1hdGlvbiBwcm9wZXJ0aWVzLgordm9pZCBQbGF0
Zm9ybUNBQW5pbWF0aW9uOjpzZXRWYWx1ZXMoY29uc3QgVmVjdG9yPGZsb2F0PiYgdmFsdWUpCit7
CisgICAgaWYgKGFuaW1hdGlvblR5cGUoKSAhPSBLZXlmcmFtZSkKKyAgICAgICAgcmV0dXJuOwor
ICAgICAgICAKKyAgICBOU011dGFibGVBcnJheSogYXJyYXkgPSBbTlNNdXRhYmxlQXJyYXkgYXJy
YXldOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmFsdWUuc2l6ZSgpOyArK2kpCisgICAg
ICAgIFthcnJheSBhZGRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6dmFsdWVbaV1d
XTsKKyAgICBbc3RhdGljX2Nhc3Q8Q0FLZXlmcmFtZUFuaW1hdGlvbio+KG1fYW5pbWF0aW9uLmdl
dCgpKSBzZXRWYWx1ZXM6YXJyYXldOworfQorCit2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb246OnNl
dFZhbHVlcyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg+JiB2YWx1
ZSkKK3sKKyAgICBpZiAoYW5pbWF0aW9uVHlwZSgpICE9IEtleWZyYW1lKQorICAgICAgICByZXR1
cm47CisgICAgICAgIAorICAgIE5TTXV0YWJsZUFycmF5KiBhcnJheSA9IFtOU011dGFibGVBcnJh
eSBhcnJheV07CisgICAgQ0FUcmFuc2Zvcm0zRCBjYVRyYW5zZm9ybTsKKworICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgdmFsdWUuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgY29weVRyYW5zZm9y
bShjYVRyYW5zZm9ybSwgdmFsdWVbaV0pOworICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OltOU1Zh
bHVlIHZhbHVlV2l0aENBVHJhbnNmb3JtM0Q6Y2FUcmFuc2Zvcm1dXTsKKyAgICB9CisgICAgW3N0
YXRpY19jYXN0PENBS2V5ZnJhbWVBbmltYXRpb24qPihtX2FuaW1hdGlvbi5nZXQoKSkgc2V0VmFs
dWVzOmFycmF5XTsKK30KKwordm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpzZXRWYWx1ZXMoY29u
c3QgVmVjdG9yPEZsb2F0UG9pbnQzRD4mIHZhbHVlKQoreworICAgIGlmIChhbmltYXRpb25UeXBl
KCkgIT0gS2V5ZnJhbWUpCisgICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgTlNNdXRhYmxl
QXJyYXkqIGFycmF5ID0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsKKworICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgdmFsdWUuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgTlNBcnJheSogb2JqZWN0
ID0gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czoKKyAgICAgICAgICAgICAgICAgICAgICAgIFtO
U051bWJlciBudW1iZXJXaXRoRG91YmxlOnZhbHVlW2ldLngoKV0sCisgICAgICAgICAgICAgICAg
ICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTp2YWx1ZVtpXS55KCldLAorICAgICAg
ICAgICAgICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6dmFsdWVbaV0ueigp
XSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG5pbF07CisgICAgICAgIFthcnJheSBhZGRPYmpl
Y3Q6b2JqZWN0XTsKKyAgICB9CisgICAgW3N0YXRpY19jYXN0PENBS2V5ZnJhbWVBbmltYXRpb24q
PihtX2FuaW1hdGlvbi5nZXQoKSkgc2V0VmFsdWVzOmFycmF5XTsKK30KKwordm9pZCBQbGF0Zm9y
bUNBQW5pbWF0aW9uOjpzZXRWYWx1ZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvbG9yPiYgdmFs
dWUpCit7CisgICAgaWYgKGFuaW1hdGlvblR5cGUoKSAhPSBLZXlmcmFtZSkKKyAgICAgICAgcmV0
dXJuOworICAgICAgICAKKyAgICBOU011dGFibGVBcnJheSogYXJyYXkgPSBbTlNNdXRhYmxlQXJy
YXkgYXJyYXldOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2YWx1ZS5zaXplKCk7ICsr
aSkgeworICAgICAgICBOU0FycmF5KiBvYmplY3QgPSBbTlNBcnJheSBhcnJheVdpdGhPYmplY3Rz
OgorICAgICAgICAgICAgICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6dmFs
dWVbaV0ucmVkKCldLAorICAgICAgICAgICAgICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldp
dGhEb3VibGU6dmFsdWVbaV0uZ3JlZW4oKV0sCisgICAgICAgICAgICAgICAgICAgICAgICBbTlNO
dW1iZXIgbnVtYmVyV2l0aERvdWJsZTp2YWx1ZVtpXS5ibHVlKCldLAorICAgICAgICAgICAgICAg
ICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6dmFsdWVbaV0uYWxwaGEoKV0sCisg
ICAgICAgICAgICAgICAgICAgICAgICBuaWxdOworICAgICAgICBbYXJyYXkgYWRkT2JqZWN0Om9i
amVjdF07CisgICAgfQorICAgIFtzdGF0aWNfY2FzdDxDQUtleWZyYW1lQW5pbWF0aW9uKj4obV9h
bmltYXRpb24uZ2V0KCkpIHNldFZhbHVlczphcnJheV07Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUFu
aW1hdGlvbjo6Y29weVZhbHVlc0Zyb20oY29uc3QgUGxhdGZvcm1DQUFuaW1hdGlvbiogdmFsdWUp
Cit7CisgICAgaWYgKGFuaW1hdGlvblR5cGUoKSAhPSBLZXlmcmFtZSB8fCB2YWx1ZS0+YW5pbWF0
aW9uVHlwZSgpICE9IEtleWZyYW1lKQorICAgICAgICByZXR1cm47CisgICAgICAgIAorICAgIENB
S2V5ZnJhbWVBbmltYXRpb24qIG90aGVyQW5pbWF0aW9uID0gc3RhdGljX2Nhc3Q8Q0FLZXlmcmFt
ZUFuaW1hdGlvbio+KHZhbHVlLT5tX2FuaW1hdGlvbi5nZXQoKSk7CisgICAgW3N0YXRpY19jYXN0
PENBS2V5ZnJhbWVBbmltYXRpb24qPihtX2FuaW1hdGlvbi5nZXQoKSkgc2V0VmFsdWVzOltvdGhl
ckFuaW1hdGlvbiB2YWx1ZXNdXTsKK30KKwordm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpzZXRL
ZXlUaW1lcyhjb25zdCBWZWN0b3I8ZmxvYXQ+JiB2YWx1ZSkKK3sKKyAgICBOU011dGFibGVBcnJh
eSogYXJyYXkgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXldOworCisgICAgZm9yIChzaXplX3QgaTsg
aSA8IHZhbHVlLnNpemUoKTsgKytpKQorICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OltOU051bWJl
ciBudW1iZXJXaXRoRmxvYXQ6dmFsdWVbaV1dXTsKKyAgICAKKyAgICBbc3RhdGljX2Nhc3Q8Q0FL
ZXlmcmFtZUFuaW1hdGlvbio+KG1fYW5pbWF0aW9uLmdldCgpKSBzZXRLZXlUaW1lczphcnJheV07
Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbjo6Y29weUtleVRpbWVzRnJvbShjb25zdCBQ
bGF0Zm9ybUNBQW5pbWF0aW9uKiB2YWx1ZSkKK3sKKyAgICBDQUtleWZyYW1lQW5pbWF0aW9uKiBv
dGhlciA9IHN0YXRpY19jYXN0PENBS2V5ZnJhbWVBbmltYXRpb24qPih2YWx1ZS0+bV9hbmltYXRp
b24uZ2V0KCkpOworICAgIFtzdGF0aWNfY2FzdDxDQUtleWZyYW1lQW5pbWF0aW9uKj4obV9hbmlt
YXRpb24uZ2V0KCkpIHNldEtleVRpbWVzOltvdGhlciBrZXlUaW1lc11dOworfQorCit2b2lkIFBs
YXRmb3JtQ0FBbmltYXRpb246OnNldFRpbWluZ0Z1bmN0aW9ucyhjb25zdCBWZWN0b3I8Y29uc3Qg
VGltaW5nRnVuY3Rpb24qPiYgdmFsdWUpCit7CisgICAgTlNNdXRhYmxlQXJyYXkqIGFycmF5ID0g
W05TTXV0YWJsZUFycmF5IGFycmF5XTsKKworICAgIGZvciAoc2l6ZV90IGk7IGkgPCB2YWx1ZS5z
aXplKCk7ICsraSkKKyAgICAgICAgW2FycmF5IGFkZE9iamVjdDp0b0NBTWVkaWFUaW1pbmdGdW5j
dGlvbih2YWx1ZVtpXSldOworICAgIAorICAgIFtzdGF0aWNfY2FzdDxDQUtleWZyYW1lQW5pbWF0
aW9uKj4obV9hbmltYXRpb24uZ2V0KCkpIHNldFRpbWluZ0Z1bmN0aW9uczphcnJheV07Cit9CisK
K3ZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbjo6Y29weVRpbWluZ0Z1bmN0aW9uc0Zyb20oY29uc3Qg
UGxhdGZvcm1DQUFuaW1hdGlvbiogdmFsdWUpCit7CisgICAgQ0FLZXlmcmFtZUFuaW1hdGlvbiog
b3RoZXIgPSBzdGF0aWNfY2FzdDxDQUtleWZyYW1lQW5pbWF0aW9uKj4odmFsdWUtPm1fYW5pbWF0
aW9uLmdldCgpKTsKKyAgICBbc3RhdGljX2Nhc3Q8Q0FLZXlmcmFtZUFuaW1hdGlvbio+KG1fYW5p
bWF0aW9uLmdldCgpKSBzZXRUaW1pbmdGdW5jdGlvbnM6W290aGVyIHRpbWluZ0Z1bmN0aW9uc11d
OworfQorCisjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpJbmRleDogV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvUGxhdGZvcm1DQUxheWVyTWFjLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1BsYXRmb3JtQ0FMYXll
ck1hYy5tbQkocmV2aXNpb24gNzMyMzYpCShmcm9tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvbWFjL1BsYXRmb3JtQ0FMYXllck1hYy5tbTo3MzIzNikKKysrIFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvbWFjL1BsYXRmb3JtQ0FMYXllck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDcyNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
Q09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgVVNFKEFDQ0VMRVJBVEVE
X0NPTVBPU0lUSU5HKQorCisjaW1wb3J0ICJQbGF0Zm9ybUNBTGF5ZXIuaCIKKworI2ltcG9ydCAi
QmxvY2tFeGNlcHRpb25zLmgiCisjaW1wb3J0ICJGbG9hdENvbnZlcnNpb24uaCIKKyNpbXBvcnQg
IkdyYXBoaWNzQ29udGV4dC5oIgorI2ltcG9ydCAiR3JhcGhpY3NMYXllckNBLmgiCisjaW1wb3J0
ICJXZWJMYXllci5oIgorI2ltcG9ydCAiV2ViVGlsZWRMYXllci5oIgorI2ltcG9ydCA8b2JqYy9v
YmpjLWF1dG8uaD4KKyNpbXBvcnQgPG9iamMvb2JqYy1ydW50aW1lLmg+CisjaW1wb3J0IDxRdWFy
dHpDb3JlL1F1YXJ0ekNvcmUuaD4KKyNpbXBvcnQgPHd0Zi9DdXJyZW50VGltZS5oPgorI2ltcG9y
dCA8d3RmL1VudXNlZFBhcmFtLmg+CisKKyNkZWZpbmUgSEFWRV9NT0RFUk5fUVVBUlRaQ09SRSAo
IWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BB
UkQpKQorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworLy8gVGhpcyB2YWx1ZSBtdXN0IGJl
IHRoZSBzYW1lIGFzIGluIFBsYXRmb3JtQ0FBbmltYXRpb25NYWMubW0KK3N0YXRpYyBjb25zdCBO
U1N0cmluZyogV0tOb25aZXJvQmVnaW5UaW1lRmxhZyA9IEAiV0tQbGF0Zm9ybUNBQW5pbWF0aW9u
Tm9uWmVyb0JlZ2luVGltZUZsYWciOworCitzdGF0aWMgZG91YmxlIG1lZGlhVGltZVRvQ3VycmVu
dFRpbWUoQ0ZUaW1lSW50ZXJ2YWwgdCkKK3sKKyAgICByZXR1cm4gV1RGOjpjdXJyZW50VGltZSgp
ICsgdCAtIENBQ3VycmVudE1lZGlhVGltZSgpOworfQorCisvLyBEZWxlZ2F0ZSBmb3IgYW5pbWF0
aW9uRGlkU3RhcnQgY2FsbGJhY2sKK0BpbnRlcmZhY2UgV2ViQW5pbWF0aW9uRGVsZWdhdGUgOiBO
U09iamVjdCB7CisgICAgUGxhdGZvcm1DQUxheWVyKiBtX293bmVyOworfQorCistICh2b2lkKWFu
aW1hdGlvbkRpZFN0YXJ0OihDQUFuaW1hdGlvbiAqKWFuaW07CistICh2b2lkKXNldE93bmVyOihQ
bGF0Zm9ybUNBTGF5ZXIqKW93bmVyOworCitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXZWJBbmlt
YXRpb25EZWxlZ2F0ZQorCistICh2b2lkKWFuaW1hdGlvbkRpZFN0YXJ0OihDQUFuaW1hdGlvbiAq
KWFuaW1hdGlvbgoreworICAgIC8vIGhhc05vblplcm9CZWdpblRpbWUgaXMgc3RvcmVkIGluIGEg
a2V5IGluIHRoZSBhbmltYXRpb24KKyAgICBib29sIGhhc05vblplcm9CZWdpblRpbWUgPSBbW2Fu
aW1hdGlvbiB2YWx1ZUZvcktleTpXS05vblplcm9CZWdpblRpbWVGbGFnXSBib29sVmFsdWVdOwor
ICAgIENGVGltZUludGVydmFsIHN0YXJ0VGltZTsKKyAgICAKKyAgICBpZiAoaGFzTm9uWmVyb0Jl
Z2luVGltZSkgeworICAgICAgICAvLyBXZSBkb24ndCBrbm93IHdoYXQgdGltZSBDQSB1c2VkIHRv
IGNvbW1pdCB0aGUgYW5pbWF0aW9uLCBzbyBqdXN0IHVzZSB0aGUgY3VycmVudCB0aW1lCisgICAg
ICAgIC8vIChldmVuIHRob3VnaCB0aGlzIHdpbGwgYmUgc2xpZ2h0bHkgb2ZmKS4KKyAgICAgICAg
c3RhcnRUaW1lID0gbWVkaWFUaW1lVG9DdXJyZW50VGltZShDQUN1cnJlbnRNZWRpYVRpbWUoKSk7
CisgICAgfSBlbHNlCisgICAgICAgIHN0YXJ0VGltZSA9IG1lZGlhVGltZVRvQ3VycmVudFRpbWUo
W2FuaW1hdGlvbiBiZWdpblRpbWVdKTsKKworICAgIGlmIChtX293bmVyKQorICAgICAgICBtX293
bmVyLT5hbmltYXRpb25TdGFydGVkKHN0YXJ0VGltZSk7Cit9CisKKy0gKHZvaWQpc2V0T3duZXI6
KFBsYXRmb3JtQ0FMYXllciopb3duZXIKK3sKKyAgICBtX293bmVyID0gb3duZXI7Cit9CisKK0Bl
bmQKKworQGludGVyZmFjZSBDQUxheWVyKFByaXZhdGUpCistICh2b2lkKXNldENvbnRlbnRzQ2hh
bmdlZDsKK0BlbmQKKworc3RhdGljIGNvbnN0IE5TU3RyaW5nKiBwbGF0Zm9ybUNBTGF5ZXJQb2lu
dGVyID0gQCJXS1BsYXRmb3JtQ0FMYXllciI7CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBjb3B5VHJh
bnNmb3JtKENBVHJhbnNmb3JtM0QmIHRvVDNELCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYg
dCkKK3sKKyAgICB0b1QzRC5tMTEgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHQubTExKCkpOwor
ICAgIHRvVDNELm0xMiA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodC5tMTIoKSk7CisgICAgdG9U
M0QubTEzID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCh0Lm0xMygpKTsKKyAgICB0b1QzRC5tMTQg
PSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHQubTE0KCkpOworICAgIHRvVDNELm0yMSA9IG5hcnJv
d1ByZWNpc2lvblRvRmxvYXQodC5tMjEoKSk7CisgICAgdG9UM0QubTIyID0gbmFycm93UHJlY2lz
aW9uVG9GbG9hdCh0Lm0yMigpKTsKKyAgICB0b1QzRC5tMjMgPSBuYXJyb3dQcmVjaXNpb25Ub0Zs
b2F0KHQubTIzKCkpOworICAgIHRvVDNELm0yNCA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodC5t
MjQoKSk7CisgICAgdG9UM0QubTMxID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCh0Lm0zMSgpKTsK
KyAgICB0b1QzRC5tMzIgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHQubTMyKCkpOworICAgIHRv
VDNELm0zMyA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodC5tMzMoKSk7CisgICAgdG9UM0QubTM0
ID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCh0Lm0zNCgpKTsKKyAgICB0b1QzRC5tNDEgPSBuYXJy
b3dQcmVjaXNpb25Ub0Zsb2F0KHQubTQxKCkpOworICAgIHRvVDNELm00MiA9IG5hcnJvd1ByZWNp
c2lvblRvRmxvYXQodC5tNDIoKSk7CisgICAgdG9UM0QubTQzID0gbmFycm93UHJlY2lzaW9uVG9G
bG9hdCh0Lm00MygpKTsKKyAgICB0b1QzRC5tNDQgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHQu
bTQ0KCkpOworfQorCitib29sIFBsYXRmb3JtQ0FMYXllcjo6aXNWYWx1ZUZ1bmN0aW9uU3VwcG9y
dGVkKCkKK3sKKyAgICBzdGF0aWMgYm9vbCBzSGF2ZVZhbHVlRnVuY3Rpb24gPSBbQ0FQcm9wZXJ0
eUFuaW1hdGlvbiBpbnN0YW5jZXNSZXNwb25kVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2V0VmFsdWVG
dW5jdGlvbjopXTsKKyAgICByZXR1cm4gc0hhdmVWYWx1ZUZ1bmN0aW9uOworfQorCit2b2lkIFBs
YXRmb3JtQ0FMYXllcjo6c2V0T3duZXIoR3JhcGhpY3NMYXllckNBKiBvd25lcikKK3sKKyAgICBt
X293bmVyID0gb3duZXI7CisgICAgCisgICAgLy8gQ2hhbmdlIHRoZSBkZWxlZ2F0ZSdzIG93bmVy
IGlmIG5lZWRlZAorICAgIGlmIChtX2RlbGVnYXRlKQorICAgICAgICBbc3RhdGljX2Nhc3Q8V2Vi
QW5pbWF0aW9uRGVsZWdhdGUqPihtX2RlbGVnYXRlLmdldCgpKSBzZXRPd25lcjp0aGlzXTsgICAg
ICAgIAorfQorCitzdGF0aWMgTlNEaWN0aW9uYXJ5KiBudWxsQWN0aW9uc0RpY3Rpb25hcnkoKQor
eworICAgIE5TTnVsbCogbnVsbFZhbHVlID0gW05TTnVsbCBudWxsXTsKKyAgICBOU0RpY3Rpb25h
cnkqIGFjdGlvbnMgPSBbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxWYWx1ZSwgQCJhbmNob3JQb2ludCIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxWYWx1ZSwgQCJib3VuZHMiLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsVmFsdWUsIEAiY29udGVudHMiLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBudWxsVmFsdWUsIEAiY29udGVudHNSZWN0IiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbnVsbFZhbHVlLCBAIm9wYWNpdHkiLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBudWxsVmFsdWUsIEAicG9zaXRpb24iLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBudWxsVmFsdWUsIEAic2hhZG93Q29sb3IiLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBudWxsVmFsdWUsIEAic3VibGF5ZXJUcmFuc2Zvcm0iLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBudWxsVmFsdWUsIEAic3VibGF5ZXJzIiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbnVsbFZhbHVlLCBAInRyYW5zZm9ybSIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG51bGxWYWx1ZSwgQCJ6UG9zaXRpb24iLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBuaWxdOworICAgIHJldHVybiBhY3Rpb25zOworfQorCisjaWYgSEFW
RV9NT0RFUk5fUVVBUlRaQ09SRQorc3RhdGljIE5TU3RyaW5nKiB0b0NBRmlsdGVyVHlwZShQbGF0
Zm9ybUNBTGF5ZXI6OkZpbHRlclR5cGUgdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAg
ICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGluZWFyOiByZXR1cm4ga0NBRmlsdGVyTGluZWFyOwor
ICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpOZWFyZXN0OiByZXR1cm4ga0NBRmlsdGVyTmVhcmVz
dDsKKyAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6VHJpbGluZWFyOiByZXR1cm4ga0NBRmlsdGVy
VHJpbGluZWFyOworICAgIGRlZmF1bHQ6IHJldHVybiAwOworICAgIH0KK30KKyNlbmRpZgorCitQ
YXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gUGxhdGZvcm1DQUxheWVyOjpjcmVhdGUoTGF5ZXJU
eXBlIGxheWVyVHlwZSwgR3JhcGhpY3NMYXllckNBKiBvd25lcikKK3sKKyAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFBsYXRmb3JtQ0FMYXllcihsYXllclR5cGUsIDAsIG93bmVyKSk7Cit9CisKK1Bh
c3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBQbGF0Zm9ybUNBTGF5ZXI6OmNyZWF0ZSh2b2lkKiBw
bGF0Zm9ybUxheWVyLCBHcmFwaGljc0xheWVyQ0EqIG93bmVyKQoreworICAgIHJldHVybiBhZG9w
dFJlZihuZXcgUGxhdGZvcm1DQUxheWVyKExheWVyVHlwZUN1c3RvbSwgc3RhdGljX2Nhc3Q8UGxh
dGZvcm1MYXllcio+KHBsYXRmb3JtTGF5ZXIpLCBvd25lcikpOworfQorCitQbGF0Zm9ybUNBTGF5
ZXI6OlBsYXRmb3JtQ0FMYXllcihMYXllclR5cGUgbGF5ZXJUeXBlLCBQbGF0Zm9ybUxheWVyKiBs
YXllciwgR3JhcGhpY3NMYXllckNBKiBvd25lcikKKyAgICA6IG1fb3duZXIob3duZXIpCit7Cisg
ICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCisgICAgaWYgKGxheWVyKSB7CisgICAgICAg
IG1fbGF5ZXJUeXBlID0gTGF5ZXJUeXBlQ3VzdG9tOworICAgICAgICBtX2xheWVyID0gbGF5ZXI7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9sYXllclR5cGUgPSBsYXllclR5cGU7CisgICAgCisg
ICAgICAgIENsYXNzIGxheWVyQ2xhc3M7CisgICAgICAgIHN3aXRjaChsYXllclR5cGUpIHsKKyAg
ICAgICAgICAgIGNhc2UgTGF5ZXJUeXBlTGF5ZXI6CisgICAgICAgICAgICAgICAgbGF5ZXJDbGFz
cyA9IFtDQUxheWVyIGNsYXNzXTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IGNhc2UgTGF5ZXJUeXBlV2ViTGF5ZXI6CisgICAgICAgICAgICAgICAgbGF5ZXJDbGFzcyA9IFtX
ZWJMYXllciBjbGFzc107CisgICAgICAgICAgICAgICAgYnJlYWs7CisjaWYgSEFWRV9NT0RFUk5f
UVVBUlRaQ09SRQorICAgICAgICAgICAgY2FzZSBMYXllclR5cGVUcmFuc2Zvcm1MYXllcjoKKyAg
ICAgICAgICAgICAgICBsYXllckNsYXNzID0gW0NBVHJhbnNmb3JtTGF5ZXIgY2xhc3NdOworICAg
ICAgICAgICAgICAgIGJyZWFrOworI2VuZGlmCisgICAgICAgICAgICBjYXNlIExheWVyVHlwZVdl
YlRpbGVkTGF5ZXI6CisgICAgICAgICAgICAgICAgbGF5ZXJDbGFzcyA9IFtXZWJUaWxlZExheWVy
IGNsYXNzXTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgTGF5ZXJU
eXBlQ3VzdG9tOgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAg
aWYgKGxheWVyQ2xhc3MpCisgICAgICAgICAgICBtX2xheWVyLmFkb3B0TlMoW1tsYXllckNsYXNz
IGFsbG9jXSBpbml0XSk7CisgICAgfQorICAgIAorICAgIC8vIFNhdmUgYSBwb2ludGVyIHRvICd0
aGlzJyBpbiB0aGUgQ0FMYXllcgorICAgIFttX2xheWVyLmdldCgpIHNldFZhbHVlOltOU1ZhbHVl
IHZhbHVlV2l0aFBvaW50ZXI6dGhpc10gZm9yS2V5OnBsYXRmb3JtQ0FMYXllclBvaW50ZXJdOwor
ICAgIAorICAgIC8vIENsZWFyIGFsbCB0aGUgaW1wbGljaXQgYW5pbWF0aW9ucyBvbiB0aGUgQ0FM
YXllcgorICAgIFttX2xheWVyLmdldCgpIHNldFN0eWxlOltOU0RpY3Rpb25hcnkgZGljdGlvbmFy
eVdpdGhPYmplY3Q6bnVsbEFjdGlvbnNEaWN0aW9uYXJ5KCkgZm9yS2V5OkAiYWN0aW9ucyJdXTsK
KyAgICAKKyAgICAvLyBJZiB0aGlzIGlzIGEgVGlsZWRMYXllciwgc2V0IHNvbWUgaW5pdGlhbCB2
YWx1ZXMKKyAgICBpZiAobV9sYXllclR5cGUgPT0gTGF5ZXJUeXBlV2ViVGlsZWRMYXllcikgewor
ICAgICAgICBXZWJUaWxlZExheWVyKiB0aWxlZExheWVyID0gc3RhdGljX2Nhc3Q8V2ViVGlsZWRM
YXllcio+KG1fbGF5ZXIuZ2V0KCkpOworICAgICAgICBbdGlsZWRMYXllciBzZXRUaWxlU2l6ZTpD
R1NpemVNYWtlKEdyYXBoaWNzTGF5ZXJDQTo6a1RpbGVkTGF5ZXJUaWxlU2l6ZSwgR3JhcGhpY3NM
YXllckNBOjprVGlsZWRMYXllclRpbGVTaXplKV07CisgICAgICAgIFt0aWxlZExheWVyIHNldExl
dmVsc09mRGV0YWlsOjFdOworICAgICAgICBbdGlsZWRMYXllciBzZXRMZXZlbHNPZkRldGFpbEJp
YXM6MF07CisgICAgICAgIFt0aWxlZExheWVyIHNldENvbnRlbnRzR3Jhdml0eTpAImJvdHRvbUxl
ZnQiXTsKKyAgICB9CisgICAgCisgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUworfQorCitQ
bGF0Zm9ybUNBTGF5ZXI6On5QbGF0Zm9ybUNBTGF5ZXIoKQoreworICAgIC8vIENsZWFyIHRoZSBv
d25lciwgd2hpY2ggYWxzbyBjbGVhcnMgaXQgaW4gdGhlIGRlbGVnYXRlIHRvIHByZXZlbnQgYXR0
ZW1wdHMgCisgICAgLy8gdG8gdXNlIHRoZSBHcmFwaGljc0xheWVyQ0EgYWZ0ZXIgaXQgaGFzIGJl
ZW4gZGVzdHJveWVkLgorICAgIHNldE93bmVyKDApOworICAgIAorICAgIC8vIFJlbW92ZSB0aGUg
b3duZXIgcG9pbnRlciBmcm9tIHRoZSBkZWxlZ2F0ZSBpbiBjYXNlIHRoZXJlIGlzIGEgcGVuZGlu
ZyBhbmltYXRpb25TdGFydGVkIGV2ZW50LgorICAgIFtzdGF0aWNfY2FzdDxXZWJBbmltYXRpb25E
ZWxlZ2F0ZSo+KG1fZGVsZWdhdGUuZ2V0KCkpIHNldE93bmVyOm5pbF07ICAgICAgICAKK30KKwor
UGxhdGZvcm1DQUxheWVyKiBQbGF0Zm9ybUNBTGF5ZXI6OnBsYXRmb3JtQ0FMYXllcih2b2lkKiBw
bGF0Zm9ybUxheWVyKQoreworICAgIGlmICghcGxhdGZvcm1MYXllcikKKyAgICAgICAgcmV0dXJu
IDA7CisgICAgICAgIAorICAgIC8vIFBvaW50ZXIgdG8gUGxhdGZvcm1DQUxheWVyIGlzIGtlcHQg
aW4gYSBrZXkgb2YgdGhlIENBTGF5ZXIKKyAgICBQbGF0Zm9ybUNBTGF5ZXIqIHBsYXRmb3JtQ0FM
YXllcjsKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICBwbGF0Zm9ybUNBTGF5
ZXIgPSBzdGF0aWNfY2FzdDxQbGF0Zm9ybUNBTGF5ZXIqPihbW3N0YXRpY19jYXN0PENBTGF5ZXIq
PihwbGF0Zm9ybUxheWVyKSB2YWx1ZUZvcktleTpwbGF0Zm9ybUNBTGF5ZXJQb2ludGVyXSBwb2lu
dGVyVmFsdWVdKTsKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCisgICAgcmV0dXJuIHBs
YXRmb3JtQ0FMYXllcjsKK30KKworUGxhdGZvcm1MYXllciogUGxhdGZvcm1DQUxheWVyOjpwbGF0
Zm9ybUxheWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9sYXllci5nZXQoKTsKK30KKwordm9p
ZCBQbGF0Zm9ybUNBTGF5ZXI6OnNldE5lZWRzRGlzcGxheShjb25zdCBGbG9hdFJlY3QqIGRpcnR5
UmVjdCkKK3sKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICBpZiAoZGlydHlS
ZWN0KQorICAgICAgICBbbV9sYXllci5nZXQoKSBzZXROZWVkc0Rpc3BsYXlJblJlY3Q6KmRpcnR5
UmVjdF07CisgICAgZWxzZQorICAgICAgICBbbV9sYXllci5nZXQoKSBzZXROZWVkc0Rpc3BsYXld
OworICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKK30KKyAgICAKK3ZvaWQgUGxhdGZvcm1D
QUxheWVyOjpzZXRDb250ZW50c0NoYW5nZWQoKQoreworICAgIEJFR0lOX0JMT0NLX09CSkNfRVhD
RVBUSU9OUworICAgIFttX2xheWVyLmdldCgpIHNldENvbnRlbnRzQ2hhbmdlZF07CisgICAgRU5E
X0JMT0NLX09CSkNfRVhDRVBUSU9OUworfQorCitQbGF0Zm9ybUNBTGF5ZXIqIFBsYXRmb3JtQ0FM
YXllcjo6c3VwZXJsYXllcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHBsYXRmb3JtQ0FMYXllcihb
bV9sYXllci5nZXQoKSBzdXBlcmxheWVyXSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyOjpy
ZW1vdmVGcm9tU3VwZXJsYXllcigpCit7CisgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05T
CisgICAgW21fbGF5ZXIuZ2V0KCkgcmVtb3ZlRnJvbVN1cGVybGF5ZXJdOworICAgIEVORF9CTE9D
S19PQkpDX0VYQ0VQVElPTlMKK30KKwordm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OnNldFN1YmxheWVy
cyhjb25zdCBQbGF0Zm9ybUNBTGF5ZXJMaXN0JiBsaXN0KQoreworICAgIC8vIFNob3J0IGNpcmN1
aXRpbmcgaGVyZSBub3Qgb25seSBhdm9pZHMgdGhlIGFsbG9jYXRpb24gb2Ygc3VibGF5ZXJzLCBi
dXQgYXZvaWRzIDxyZGFyOi8vcHJvYmxlbS83MzkwNzE2PiAoc2VlIGJlbG93KQorICAgIGlmIChs
aXN0LnNpemUoKSA9PSAwKSB7CisgICAgICAgIHJlbW92ZUFsbFN1YmxheWVycygpOworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIAorICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwor
ICAgIE5TTXV0YWJsZUFycmF5KiBzdWJsYXllcnMgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBp
bml0XTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxpc3Quc2l6ZSgpOyArK2kpCisgICAg
ICAgIFtzdWJsYXllcnMgYWRkT2JqZWN0Omxpc3RbaV0tPm1fbGF5ZXIuZ2V0KCldOworICAgICAg
ICAKKyAgICBbbV9sYXllci5nZXQoKSBzZXRTdWJsYXllcnM6c3VibGF5ZXJzXTsKKyAgICBbc3Vi
bGF5ZXJzIHJlbGVhc2VdOworICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKK30KKwordm9p
ZCBQbGF0Zm9ybUNBTGF5ZXI6OnJlbW92ZUFsbFN1YmxheWVycygpCit7CisgICAgLy8gV29ya2Fy
b3VuZCBmb3IgPHJkYXI6Ly9wcm9ibGVtLzczOTA3MTY+OiAtW0NBTGF5ZXIgc2V0U3VibGF5ZXJz
Ol0gY3Jhc2hlcyBpZiBzdWJsYXllcnMgaXMgYW4gZW1wdHkgYXJyYXksIG9yIG5pbCwgdW5kZXIg
R0MuCisgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCisgICAgaWYgKG9iamNfY29sbGVj
dGluZ0VuYWJsZWQoKSkKKyAgICAgICAgd2hpbGUgKFtbbV9sYXllci5nZXQoKSBzdWJsYXllcnNd
IGNvdW50XSkKKyAgICAgICAgICAgIFtbW21fbGF5ZXIuZ2V0KCkgc3VibGF5ZXJzXSBvYmplY3RB
dEluZGV4OjBdIHJlbW92ZUZyb21TdXBlcmxheWVyXTsKKyAgICBlbHNlCisgICAgICAgIFttX2xh
eWVyLmdldCgpIHNldFN1YmxheWVyczpuaWxdOworICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElP
TlMKK30KKwordm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OmFwcGVuZFN1YmxheWVyKFBsYXRmb3JtQ0FM
YXllciogbGF5ZXIpCit7CisgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCisgICAgW21f
bGF5ZXIuZ2V0KCkgYWRkU3VibGF5ZXI6bGF5ZXItPm1fbGF5ZXIuZ2V0KCldOworICAgIEVORF9C
TE9DS19PQkpDX0VYQ0VQVElPTlMKK30KKwordm9pZCBQbGF0Zm9ybUNBTGF5ZXI6Omluc2VydFN1
YmxheWVyKFBsYXRmb3JtQ0FMYXllciogbGF5ZXIsIHNpemVfdCBpbmRleCkKK3sKKyAgICBCRUdJ
Tl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICBbbV9sYXllci5nZXQoKSBpbnNlcnRTdWJsYXll
cjpsYXllci0+bV9sYXllci5nZXQoKSBhdEluZGV4OmluZGV4XTsKKyAgICBFTkRfQkxPQ0tfT0JK
Q19FWENFUFRJT05TCit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyOjpyZXBsYWNlU3VibGF5ZXIo
UGxhdGZvcm1DQUxheWVyKiByZWZlcmVuY2UsIFBsYXRmb3JtQ0FMYXllciogbGF5ZXIpCit7Cisg
ICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCisgICAgW21fbGF5ZXIuZ2V0KCkgcmVwbGFj
ZVN1YmxheWVyOnJlZmVyZW5jZS0+bV9sYXllci5nZXQoKSB3aXRoOmxheWVyLT5tX2xheWVyLmdl
dCgpXTsKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCit9CisKK3NpemVfdCBQbGF0Zm9y
bUNBTGF5ZXI6OnN1YmxheWVyQ291bnQoKSBjb25zdAoreworICAgIHJldHVybiBbW21fbGF5ZXIu
Z2V0KCkgc3VibGF5ZXJzXSBjb3VudF07Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyOjphZG9w
dFN1YmxheWVycyhQbGF0Zm9ybUNBTGF5ZXIqIHNvdXJjZSkKK3sKKyAgICAvLyBXb3JrYXJvdW5k
IGZvciA8cmRhcjovL3Byb2JsZW0vNzM5MDcxNj46IC1bQ0FMYXllciBzZXRTdWJsYXllcnM6XSBj
cmFzaGVzIGlmIHN1YmxheWVycyBpcyBhbiBlbXB0eSBhcnJheSwgb3IgbmlsLCB1bmRlciBHQy4K
KyAgICBOU0FycmF5KiBzdWJsYXllcnMgPSBbc291cmNlLT5tX2xheWVyLmdldCgpIHN1YmxheWVy
c107CisgICAgCisgICAgaWYgKG9iamNfY29sbGVjdGluZ0VuYWJsZWQoKSAmJiAhW3N1YmxheWVy
cyBjb3VudF0pIHsKKyAgICAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCisgICAgICAg
IHdoaWxlIChbW21fbGF5ZXIuZ2V0KCkgc3VibGF5ZXJzXSBjb3VudF0pCisgICAgICAgICAgICBb
W1ttX2xheWVyLmdldCgpIHN1YmxheWVyc10gb2JqZWN0QXRJbmRleDowXSByZW1vdmVGcm9tU3Vw
ZXJsYXllcl07CisgICAgICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICAKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICBb
bV9sYXllci5nZXQoKSBzZXRTdWJsYXllcnM6c3VibGF5ZXJzXTsKKyAgICBFTkRfQkxPQ0tfT0JK
Q19FWENFUFRJT05TCit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyOjphZGRBbmltYXRpb25Gb3JL
ZXkoY29uc3QgU3RyaW5nJiBrZXksIFBsYXRmb3JtQ0FBbmltYXRpb24qIGFuaW1hdGlvbikKK3sK
KyAgICAvLyBBZGQgdGhlIGRlbGVnYXRlCisgICAgaWYgKCFtX2RlbGVnYXRlKSB7CisgICAgICAg
IFdlYkFuaW1hdGlvbkRlbGVnYXRlKiB3ZWJBbmltYXRpb25EZWxlZ2F0ZSA9IFtbV2ViQW5pbWF0
aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdOworICAgICAgICBtX2RlbGVnYXRlLmFkb3B0TlMod2Vi
QW5pbWF0aW9uRGVsZWdhdGUpOworICAgICAgICBbd2ViQW5pbWF0aW9uRGVsZWdhdGUgc2V0T3du
ZXI6dGhpc107CisgICAgfQorICAgIAorICAgIENBUHJvcGVydHlBbmltYXRpb24qIHByb3BlcnR5
QW5pbWF0aW9uID0gc3RhdGljX2Nhc3Q8Q0FQcm9wZXJ0eUFuaW1hdGlvbio+KGFuaW1hdGlvbi0+
cGxhdGZvcm1BbmltYXRpb24oKSk7CisKKyAgICBpZiAoIVtwcm9wZXJ0eUFuaW1hdGlvbiBkZWxl
Z2F0ZV0pCisgICAgICAgIFtwcm9wZXJ0eUFuaW1hdGlvbiBzZXREZWxlZ2F0ZTpzdGF0aWNfY2Fz
dDxpZD4obV9kZWxlZ2F0ZS5nZXQoKSldOworICAgICAKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VY
Q0VQVElPTlMKKyAgICBbbV9sYXllci5nZXQoKSBhZGRBbmltYXRpb246YW5pbWF0aW9uLT5tX2Fu
aW1hdGlvbi5nZXQoKSBmb3JLZXk6a2V5XTsKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05T
Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyOjpyZW1vdmVBbmltYXRpb25Gb3JLZXkoY29uc3Qg
U3RyaW5nJiBrZXkpCit7CisgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCisgICAgW21f
bGF5ZXIuZ2V0KCkgcmVtb3ZlQW5pbWF0aW9uRm9yS2V5OmtleV07CisgICAgRU5EX0JMT0NLX09C
SkNfRVhDRVBUSU9OUworfQorCitQYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IFBsYXRm
b3JtQ0FMYXllcjo6YW5pbWF0aW9uRm9yS2V5KGNvbnN0IFN0cmluZyYga2V5KQoreworICAgIENB
QW5pbWF0aW9uKiBhbmltID0gW21fbGF5ZXIuZ2V0KCkgYW5pbWF0aW9uRm9yS2V5OmtleV07Cisg
ICAgaWYgKCFhbmltKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gUGxhdGZvcm1DQUFu
aW1hdGlvbjo6Y3JlYXRlKGFuaW0pOworfQorCitQbGF0Zm9ybUNBTGF5ZXIqIFBsYXRmb3JtQ0FM
YXllcjo6bWFzaygpIGNvbnN0Cit7CisgICAgcmV0dXJuIHBsYXRmb3JtQ0FMYXllcihbbV9sYXll
ci5nZXQoKSBtYXNrXSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyOjpzZXRNYXNrKFBsYXRm
b3JtQ0FMYXllciogbGF5ZXIpCit7CisgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCisg
ICAgW21fbGF5ZXIuZ2V0KCkgc2V0TWFzazpsYXllciA/IGxheWVyLT5wbGF0Zm9ybUxheWVyKCkg
OiAwXTsKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCit9CisKK2Jvb2wgUGxhdGZvcm1D
QUxheWVyOjppc09wYXF1ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFttX2xheWVyLmdldCgpIGlz
T3BhcXVlXTsKK30KKwordm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OnNldE9wYXF1ZShib29sIHZhbHVl
KQoreworICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUworICAgIFttX2xheWVyLmdldCgp
IHNldE9wYXF1ZTp2YWx1ZV07CisgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUworfQorCitG
bG9hdFJlY3QgUGxhdGZvcm1DQUxheWVyOjpib3VuZHMoKSBjb25zdAoreworICAgIHJldHVybiBb
bV9sYXllci5nZXQoKSBib3VuZHNdOworfQorCit2b2lkIFBsYXRmb3JtQ0FMYXllcjo6c2V0Qm91
bmRzKGNvbnN0IEZsb2F0UmVjdCYgdmFsdWUpCit7CisgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENF
UFRJT05TCisgICAgW21fbGF5ZXIuZ2V0KCkgc2V0Qm91bmRzOnZhbHVlXTsKKyAgICBFTkRfQkxP
Q0tfT0JKQ19FWENFUFRJT05TCit9CisKK0Zsb2F0UG9pbnQzRCBQbGF0Zm9ybUNBTGF5ZXI6OnBv
c2l0aW9uKCkgY29uc3QKK3sKKyAgICBDR1BvaW50IHBvaW50ID0gW21fbGF5ZXIuZ2V0KCkgcG9z
aXRpb25dOworICAgIHJldHVybiBGbG9hdFBvaW50M0QocG9pbnQueCwgcG9pbnQueSwgW21fbGF5
ZXIuZ2V0KCkgelBvc2l0aW9uXSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyOjpzZXRQb3Np
dGlvbihjb25zdCBGbG9hdFBvaW50M0QmIHZhbHVlKQoreworICAgIEJFR0lOX0JMT0NLX09CSkNf
RVhDRVBUSU9OUworICAgIFttX2xheWVyLmdldCgpIHNldFBvc2l0aW9uOkNHUG9pbnRNYWtlKHZh
bHVlLngoKSwgdmFsdWUueSgpKV07CisgICAgW21fbGF5ZXIuZ2V0KCkgc2V0WlBvc2l0aW9uOnZh
bHVlLnooKV07CisgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUworfQorCitGbG9hdFBvaW50
M0QgUGxhdGZvcm1DQUxheWVyOjphbmNob3JQb2ludCgpIGNvbnN0Cit7CisgICAgQ0dQb2ludCBw
b2ludCA9IFttX2xheWVyLmdldCgpIGFuY2hvclBvaW50XTsKKyAgICBmbG9hdCB6ID0gMDsKKyNp
ZiBIQVZFX01PREVSTl9RVUFSVFpDT1JFCisgICAgeiA9IFttX2xheWVyLmdldCgpIGFuY2hvclBv
aW50Wl07CisjZW5kaWYKKyAgICByZXR1cm4gRmxvYXRQb2ludDNEKHBvaW50LngsIHBvaW50Lnks
IHopOworfQorCit2b2lkIFBsYXRmb3JtQ0FMYXllcjo6c2V0QW5jaG9yUG9pbnQoY29uc3QgRmxv
YXRQb2ludDNEJiB2YWx1ZSkKK3sKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAg
ICBbbV9sYXllci5nZXQoKSBzZXRBbmNob3JQb2ludDpDR1BvaW50TWFrZSh2YWx1ZS54KCksIHZh
bHVlLnkoKSldOworI2lmIEhBVkVfTU9ERVJOX1FVQVJUWkNPUkUKKyAgICBbbV9sYXllci5nZXQo
KSBzZXRBbmNob3JQb2ludFo6dmFsdWUueigpXTsKKyNlbmRpZgorICAgIEVORF9CTE9DS19PQkpD
X0VYQ0VQVElPTlMKK30KKworVHJhbnNmb3JtYXRpb25NYXRyaXggUGxhdGZvcm1DQUxheWVyOjp0
cmFuc2Zvcm0oKSBjb25zdAoreworICAgIENBVHJhbnNmb3JtM0QgdCA9IFttX2xheWVyLmdldCgp
IHRyYW5zZm9ybV07CisgICAgcmV0dXJuIFRyYW5zZm9ybWF0aW9uTWF0cml4KHQubTExLCB0Lm0x
MiwgdC5tMTMsIHQubTE0LCB0Lm0yMSwgdC5tMjIsIHQubTIzLCB0Lm0yNCwgdC5tMzEsIHQubTMy
LCB0Lm0zMywgdC5tMzQsIHQubTQxLCB0Lm00MiwgdC5tNDMsIHQubTQ0KTsKK30KKwordm9pZCBQ
bGF0Zm9ybUNBTGF5ZXI6OnNldFRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYg
dmFsdWUpCit7CisgICAgQ0FUcmFuc2Zvcm0zRCB0cmFuc2Zvcm07CisgICAgY29weVRyYW5zZm9y
bSh0cmFuc2Zvcm0sIHZhbHVlKTsKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAg
ICBbbV9sYXllci5nZXQoKSBzZXRUcmFuc2Zvcm06dHJhbnNmb3JtXTsKKyAgICBFTkRfQkxPQ0tf
T0JKQ19FWENFUFRJT05TCit9CisKK1RyYW5zZm9ybWF0aW9uTWF0cml4IFBsYXRmb3JtQ0FMYXll
cjo6c3VibGF5ZXJUcmFuc2Zvcm0oKSBjb25zdAoreworICAgIENBVHJhbnNmb3JtM0QgdCA9IFtt
X2xheWVyLmdldCgpIHN1YmxheWVyVHJhbnNmb3JtXTsKKyAgICByZXR1cm4gVHJhbnNmb3JtYXRp
b25NYXRyaXgodC5tMTEsIHQubTEyLCB0Lm0xMywgdC5tMTQsIHQubTIxLCB0Lm0yMiwgdC5tMjMs
IHQubTI0LCB0Lm0zMSwgdC5tMzIsIHQubTMzLCB0Lm0zNCwgdC5tNDEsIHQubTQyLCB0Lm00Mywg
dC5tNDQpOworfQorCit2b2lkIFBsYXRmb3JtQ0FMYXllcjo6c2V0U3VibGF5ZXJUcmFuc2Zvcm0o
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHZhbHVlKQoreworICAgIENBVHJhbnNmb3JtM0Qg
dHJhbnNmb3JtOworICAgIGNvcHlUcmFuc2Zvcm0odHJhbnNmb3JtLCB2YWx1ZSk7CisgICAgQkVH
SU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCisgICAgW21fbGF5ZXIuZ2V0KCkgc2V0U3VibGF5ZXJU
cmFuc2Zvcm06dHJhbnNmb3JtXTsKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCit9CisK
K1RyYW5zZm9ybWF0aW9uTWF0cml4IFBsYXRmb3JtQ0FMYXllcjo6Y29udGVudHNUcmFuc2Zvcm0o
KSBjb25zdAoreworI2lmICFIQVZFX01PREVSTl9RVUFSVFpDT1JFCisgICAgaWYgKG1fbGF5ZXJU
eXBlICE9IExheWVyVHlwZVdlYkxheWVyKQorICAgICAgICByZXR1cm4gVHJhbnNmb3JtYXRpb25N
YXRyaXgoKTsKKyAgICAgICAgCisgICAgQ0dBZmZpbmVUcmFuc2Zvcm0gdCA9IFtzdGF0aWNfY2Fz
dDxXZWJMYXllcio+KG1fbGF5ZXIuZ2V0KCkpIGNvbnRlbnRzVHJhbnNmb3JtXTsKKyAgICByZXR1
cm4gVHJhbnNmb3JtYXRpb25NYXRyaXgodC5hLCB0LmIsIHQuYywgdC5kLCB0LnR4LCB0LnR5KTsK
KyNlbHNlCisgICAgcmV0dXJuIFRyYW5zZm9ybWF0aW9uTWF0cml4KCk7CisjZW5kaWYKK30KKwor
dm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OnNldENvbnRlbnRzVHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JiB2YWx1ZSkKK3sKKyNpZiAhSEFWRV9NT0RFUk5fUVVBUlRaQ09SRQorICAg
IGlmIChtX2xheWVyVHlwZSAhPSBMYXllclR5cGVXZWJMYXllcikKKyAgICAgICAgcmV0dXJuOwor
CisgICAgQ0dBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtID0gdmFsdWU7CisgICAgQkVHSU5fQkxP
Q0tfT0JKQ19FWENFUFRJT05TCisgICAgW21fbGF5ZXIuZ2V0KCkgc2V0Q29udGVudHNUcmFuc2Zv
cm06dHJhbnNmb3JtXTsKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCisjZWxzZQorICAg
IFVOVVNFRF9QQVJBTSh2YWx1ZSk7CisjZW5kaWYKK30KKworYm9vbCBQbGF0Zm9ybUNBTGF5ZXI6
OmlzSGlkZGVuKCkgY29uc3QKK3sKKyAgICByZXR1cm4gW21fbGF5ZXIuZ2V0KCkgaXNIaWRkZW5d
OworfQorCit2b2lkIFBsYXRmb3JtQ0FMYXllcjo6c2V0SGlkZGVuKGJvb2wgdmFsdWUpCit7Cisg
ICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCisgICAgW21fbGF5ZXIuZ2V0KCkgc2V0SGlk
ZGVuOnZhbHVlXTsKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCit9CisKK2Jvb2wgUGxh
dGZvcm1DQUxheWVyOjppc0dlb21ldHJ5RmxpcHBlZCgpIGNvbnN0Cit7CisjaWYgSEFWRV9NT0RF
Uk5fUVVBUlRaQ09SRQorICAgIHJldHVybiBbbV9sYXllci5nZXQoKSBpc0dlb21ldHJ5RmxpcHBl
ZF07CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorCit2b2lkIFBsYXRmb3Jt
Q0FMYXllcjo6c2V0R2VvbWV0cnlGbGlwcGVkKGJvb2wgdmFsdWUpCit7CisjaWYgSEFWRV9NT0RF
Uk5fUVVBUlRaQ09SRQorICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUworICAgIFttX2xh
eWVyLmdldCgpIHNldEdlb21ldHJ5RmxpcHBlZDp2YWx1ZV07CisgICAgRU5EX0JMT0NLX09CSkNf
RVhDRVBUSU9OUworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0odmFsdWUpOworI2VuZGlmCit9CisK
K2Jvb2wgUGxhdGZvcm1DQUxheWVyOjppc0RvdWJsZVNpZGVkKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gW21fbGF5ZXIuZ2V0KCkgaXNEb3VibGVTaWRlZF07Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxh
eWVyOjpzZXREb3VibGVTaWRlZChib29sIHZhbHVlKQoreworICAgIEJFR0lOX0JMT0NLX09CSkNf
RVhDRVBUSU9OUworICAgIFttX2xheWVyLmdldCgpIHNldERvdWJsZVNpZGVkOnZhbHVlXTsKKyAg
ICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCit9CisKK2Jvb2wgUGxhdGZvcm1DQUxheWVyOjpt
YXNrc1RvQm91bmRzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gW21fbGF5ZXIuZ2V0KCkgbWFza3NU
b0JvdW5kc107Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyOjpzZXRNYXNrc1RvQm91bmRzKGJv
b2wgdmFsdWUpCit7CisgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCisgICAgW21fbGF5
ZXIuZ2V0KCkgc2V0TWFza3NUb0JvdW5kczp2YWx1ZV07CisgICAgRU5EX0JMT0NLX09CSkNfRVhD
RVBUSU9OUworfQorCit2b2lkKiBQbGF0Zm9ybUNBTGF5ZXI6OmNvbnRlbnRzKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gW21fbGF5ZXIuZ2V0KCkgY29udGVudHNdOworfQorCit2b2lkIFBsYXRmb3Jt
Q0FMYXllcjo6c2V0Q29udGVudHModm9pZCogdmFsdWUpCit7CisgICAgQkVHSU5fQkxPQ0tfT0JK
Q19FWENFUFRJT05TCisgICAgW21fbGF5ZXIuZ2V0KCkgc2V0Q29udGVudHM6c3RhdGljX2Nhc3Q8
aWQ+KHZhbHVlKV07CisgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUworfQorCitGbG9hdFJl
Y3QgUGxhdGZvcm1DQUxheWVyOjpjb250ZW50c1JlY3QoKSBjb25zdAoreworICAgIHJldHVybiBb
bV9sYXllci5nZXQoKSBjb250ZW50c1JlY3RdOworfQorCit2b2lkIFBsYXRmb3JtQ0FMYXllcjo6
c2V0Q29udGVudHNSZWN0KGNvbnN0IEZsb2F0UmVjdCYgdmFsdWUpCit7CisgICAgQkVHSU5fQkxP
Q0tfT0JKQ19FWENFUFRJT05TCisgICAgW21fbGF5ZXIuZ2V0KCkgc2V0Q29udGVudHNSZWN0OnZh
bHVlXTsKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCit9CisKK3ZvaWQgUGxhdGZvcm1D
QUxheWVyOjpzZXRNaW5pZmljYXRpb25GaWx0ZXIoRmlsdGVyVHlwZSB2YWx1ZSkKK3sKKyNpZiBI
QVZFX01PREVSTl9RVUFSVFpDT1JFCisgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCisg
ICAgW21fbGF5ZXIuZ2V0KCkgc2V0TWluaWZpY2F0aW9uRmlsdGVyOnRvQ0FGaWx0ZXJUeXBlKHZh
bHVlKV07CisgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUworI2Vsc2UKKyAgICBVTlVTRURf
UEFSQU0odmFsdWUpOworI2VuZGlmCit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyOjpzZXRNYWdu
aWZpY2F0aW9uRmlsdGVyKEZpbHRlclR5cGUgdmFsdWUpCit7CisjaWYgSEFWRV9NT0RFUk5fUVVB
UlRaQ09SRQorICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUworICAgIFttX2xheWVyLmdl
dCgpIHNldE1hZ25pZmljYXRpb25GaWx0ZXI6dG9DQUZpbHRlclR5cGUodmFsdWUpXTsKKyAgICBF
TkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCisjZWxzZQorICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7
CisjZW5kaWYKK30KKworQ29sb3IgUGxhdGZvcm1DQUxheWVyOjpiYWNrZ3JvdW5kQ29sb3IoKSBj
b25zdAoreworICAgIHJldHVybiBbbV9sYXllci5nZXQoKSBiYWNrZ3JvdW5kQ29sb3JdOworfQor
Cit2b2lkIFBsYXRmb3JtQ0FMYXllcjo6c2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IENvbG9yJiB2
YWx1ZSkKK3sKKyAgICBjb25zdCBDR0Zsb2F0IGNvbXBvbmVudHNbNV0gPSB7IHZhbHVlLnJlZCgp
LCB2YWx1ZS5ncmVlbigpLCB2YWx1ZS5ibHVlKCksIHZhbHVlLmFscGhhKCkgfTsKKyAgICBDR0Nv
bG9yU3BhY2VSZWYgY29sb3JTcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZURldmljZVJHQigpOwor
ICAgIENHQ29sb3JSZWYgY29sb3IgPSBDR0NvbG9yQ3JlYXRlKGNvbG9yU3BhY2UsIGNvbXBvbmVu
dHMpOworICAgIENHQ29sb3JTcGFjZVJlbGVhc2UoY29sb3JTcGFjZSk7CisgICAgQkVHSU5fQkxP
Q0tfT0JKQ19FWENFUFRJT05TCisgICAgW21fbGF5ZXIuZ2V0KCkgc2V0QmFja2dyb3VuZENvbG9y
OmNvbG9yXTsKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCisgICAgQ0dDb2xvclJlbGVh
c2UoY29sb3IpOworfQorCitmbG9hdCBQbGF0Zm9ybUNBTGF5ZXI6OmJvcmRlcldpZHRoKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gW21fbGF5ZXIuZ2V0KCkgYm9yZGVyV2lkdGhdOworfQorCit2b2lk
IFBsYXRmb3JtQ0FMYXllcjo6c2V0Qm9yZGVyV2lkdGgoZmxvYXQgdmFsdWUpCit7CisgICAgQkVH
SU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCisgICAgW21fbGF5ZXIuZ2V0KCkgc2V0Qm9yZGVyV2lk
dGg6dmFsdWVdOworICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKK30KKworQ29sb3IgUGxh
dGZvcm1DQUxheWVyOjpib3JkZXJDb2xvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIFttX2xheWVy
LmdldCgpIGJvcmRlckNvbG9yXTsKK30KKwordm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OnNldEJvcmRl
ckNvbG9yKGNvbnN0IENvbG9yJiB2YWx1ZSkKK3sKKyAgICBjb25zdCBDR0Zsb2F0IGNvbXBvbmVu
dHNbNV0gPSB7IHZhbHVlLnJlZCgpLCB2YWx1ZS5ncmVlbigpLCB2YWx1ZS5ibHVlKCksIHZhbHVl
LmFscGhhKCkgfTsKKyAgICBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSA9IENHQ29sb3JTcGFj
ZUNyZWF0ZURldmljZVJHQigpOworICAgIENHQ29sb3JSZWYgY29sb3IgPSBDR0NvbG9yQ3JlYXRl
KGNvbG9yU3BhY2UsIGNvbXBvbmVudHMpOworICAgIENHQ29sb3JTcGFjZVJlbGVhc2UoY29sb3JT
cGFjZSk7CisgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCisgICAgW21fbGF5ZXIuZ2V0
KCkgc2V0Qm9yZGVyQ29sb3I6Y29sb3JdOworICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMK
KyAgICBDR0NvbG9yUmVsZWFzZShjb2xvcik7Cit9CisKK2Zsb2F0IFBsYXRmb3JtQ0FMYXllcjo6
b3BhY2l0eSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFttX2xheWVyLmdldCgpIG9wYWNpdHldOwor
fQorCit2b2lkIFBsYXRmb3JtQ0FMYXllcjo6c2V0T3BhY2l0eShmbG9hdCB2YWx1ZSkKK3sKKyAg
ICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICBbbV9sYXllci5nZXQoKSBzZXRPcGFj
aXR5OnZhbHVlXTsKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCit9CisKK1N0cmluZyBQ
bGF0Zm9ybUNBTGF5ZXI6Om5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBbbV9sYXllci5nZXQo
KSBuYW1lXTsKK30KKwordm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OnNldE5hbWUoY29uc3QgU3RyaW5n
JiB2YWx1ZSkKK3sKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICBbbV9sYXll
ci5nZXQoKSBzZXROYW1lOnZhbHVlXTsKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCit9
CisKK0Zsb2F0UmVjdCBQbGF0Zm9ybUNBTGF5ZXI6OmZyYW1lKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gW21fbGF5ZXIuZ2V0KCkgZnJhbWVdOworfQorCit2b2lkIFBsYXRmb3JtQ0FMYXllcjo6c2V0
RnJhbWUoY29uc3QgRmxvYXRSZWN0JiB2YWx1ZSkKK3sKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VY
Q0VQVElPTlMKKyAgICBbbV9sYXllci5nZXQoKSBzZXRGcmFtZTp2YWx1ZV07CisgICAgRU5EX0JM
T0NLX09CSkNfRVhDRVBUSU9OUworfQorCitmbG9hdCBQbGF0Zm9ybUNBTGF5ZXI6OnNwZWVkKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gW21fbGF5ZXIuZ2V0KCkgc3BlZWRdOworfQorCit2b2lkIFBs
YXRmb3JtQ0FMYXllcjo6c2V0U3BlZWQoZmxvYXQgdmFsdWUpCit7CisgICAgQkVHSU5fQkxPQ0tf
T0JKQ19FWENFUFRJT05TCisgICAgW21fbGF5ZXIuZ2V0KCkgc2V0U3BlZWQ6dmFsdWVdOworICAg
IEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKK30KKworQ0ZUaW1lSW50ZXJ2YWwgUGxhdGZvcm1D
QUxheWVyOjp0aW1lT2Zmc2V0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gW21fbGF5ZXIuZ2V0KCkg
dGltZU9mZnNldF07Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyOjpzZXRUaW1lT2Zmc2V0KENG
VGltZUludGVydmFsIHZhbHVlKQoreworICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwor
ICAgIFttX2xheWVyLmdldCgpIHNldFRpbWVPZmZzZXQ6dmFsdWVdOworICAgIEVORF9CTE9DS19P
QkpDX0VYQ0VQVElPTlMKK30KKworI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElO
RykKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXll
ckNocm9taXVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHAJKHJldmlzaW9uIDczMjkwKQorKysgV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMTUsMTEgKzExNSw2IEBAIHZvaWQgR3JhcGhpY3NMYXllckNo
cm9taXVtOjpzZXROYW1lKGNvbnMKICAgICBHcmFwaGljc0xheWVyOjpzZXROYW1lKG5hbWUpOwog
fQogCi1OYXRpdmVMYXllciBHcmFwaGljc0xheWVyQ2hyb21pdW06Om5hdGl2ZUxheWVyKCkgY29u
c3QKLXsKLSAgICByZXR1cm4gbV9sYXllci5nZXQoKTsKLX0KLQogYm9vbCBHcmFwaGljc0xheWVy
Q2hyb21pdW06OnNldENoaWxkcmVuKGNvbnN0IFZlY3RvcjxHcmFwaGljc0xheWVyKj4mIGNoaWxk
cmVuKQogewogICAgIGJvb2wgY2hpbGRyZW5DaGFuZ2VkID0gR3JhcGhpY3NMYXllcjo6c2V0Q2hp
bGRyZW4oY2hpbGRyZW4pOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5oCShyZXZpc2lvbiA3MzI5
MCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNo
cm9taXVtLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDkgKzQ3LDYgQEAgcHVibGljOgogCiAgICAg
dmlydHVhbCB2b2lkIHNldE5hbWUoY29uc3QgU3RyaW5nJik7CiAKLSAgICAvLyBmb3IgaG9zdGlu
ZyB0aGlzIEdyYXBoaWNzTGF5ZXIgaW4gYSBuYXRpdmUgbGF5ZXIgaGllcmFyY2h5Ci0gICAgdmly
dHVhbCBOYXRpdmVMYXllciBuYXRpdmVMYXllcigpIGNvbnN0OwotCiAgICAgdmlydHVhbCBib29s
IHNldENoaWxkcmVuKGNvbnN0IFZlY3RvcjxHcmFwaGljc0xheWVyKj4mKTsKICAgICB2aXJ0dWFs
IHZvaWQgYWRkQ2hpbGQoR3JhcGhpY3NMYXllciopOwogICAgIHZpcnR1YWwgdm9pZCBhZGRDaGls
ZEF0SW5kZXgoR3JhcGhpY3NMYXllciosIGludCBpbmRleCk7CkluZGV4OiBXZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0xheWVyTWFjLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NMYXllck1hYy5oCShyZXZpc2lvbiA3MzI5
MCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzTGF5ZXJNYWMuaAko
d29ya2luZyBjb3B5KQpAQCAtMSwzODggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBHcmFwaGljc0xheWVyTWFj
X2gKLSNkZWZpbmUgR3JhcGhpY3NMYXllck1hY19oCi0KLSNpZiBVU0UoQUNDRUxFUkFURURfQ09N
UE9TSVRJTkcpCi0KLSNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgiCi0jaW5jbHVkZSAiV2ViTGF5
ZXIuaCIKLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+
Ci0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hh
c2guaD4KLQotQGNsYXNzIENBQmFzaWNBbmltYXRpb247Ci1AY2xhc3MgQ0FLZXlmcmFtZUFuaW1h
dGlvbjsKLUBjbGFzcyBDQU1lZGlhVGltaW5nRnVuY3Rpb247Ci1AY2xhc3MgQ0FQcm9wZXJ0eUFu
aW1hdGlvbjsKLUBjbGFzcyBXZWJBbmltYXRpb25EZWxlZ2F0ZTsKLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1jbGFzcyBHcmFwaGljc0xheWVyTWFjIDogcHVibGljIEdyYXBoaWNzTGF5ZXIgewot
cHVibGljOgotCi0gICAgR3JhcGhpY3NMYXllck1hYyhHcmFwaGljc0xheWVyQ2xpZW50Kik7Ci0g
ICAgdmlydHVhbCB+R3JhcGhpY3NMYXllck1hYygpOwotCi0gICAgdmlydHVhbCB2b2lkIHNldE5h
bWUoY29uc3QgU3RyaW5nJik7Ci0KLSAgICAvLyBmb3IgaG9zdGluZyB0aGlzIEdyYXBoaWNzTGF5
ZXIgaW4gYSBuYXRpdmUgbGF5ZXIgaGllcmFyY2h5Ci0gICAgdmlydHVhbCBOYXRpdmVMYXllciBu
YXRpdmVMYXllcigpIGNvbnN0OwotCi0gICAgdmlydHVhbCBib29sIHNldENoaWxkcmVuKGNvbnN0
IFZlY3RvcjxHcmFwaGljc0xheWVyKj4mKTsKLSAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGQoR3Jh
cGhpY3NMYXllciopOwotICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZEF0SW5kZXgoR3JhcGhpY3NM
YXllciosIGludCBpbmRleCk7Ci0gICAgdmlydHVhbCB2b2lkIGFkZENoaWxkQWJvdmUoR3JhcGhp
Y3NMYXllciogbGF5ZXIsIEdyYXBoaWNzTGF5ZXIqIHNpYmxpbmcpOwotICAgIHZpcnR1YWwgdm9p
ZCBhZGRDaGlsZEJlbG93KEdyYXBoaWNzTGF5ZXIqIGxheWVyLCBHcmFwaGljc0xheWVyKiBzaWJs
aW5nKTsKLSAgICB2aXJ0dWFsIGJvb2wgcmVwbGFjZUNoaWxkKEdyYXBoaWNzTGF5ZXIqIG9sZENo
aWxkLCBHcmFwaGljc0xheWVyKiBuZXdDaGlsZCk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3Zl
RnJvbVBhcmVudCgpOwotCi0gICAgdmlydHVhbCB2b2lkIHNldE1hc2tMYXllcihHcmFwaGljc0xh
eWVyKik7Ci0gICAgdmlydHVhbCB2b2lkIHNldFJlcGxpY2F0ZWRMYXllcihHcmFwaGljc0xheWVy
Kik7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0UG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYpOwot
ICAgIHZpcnR1YWwgdm9pZCBzZXRBbmNob3JQb2ludChjb25zdCBGbG9hdFBvaW50M0QmKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgc2V0U2l6ZShjb25zdCBGbG9hdFNpemUmKTsKLQotICAgIHZpcnR1YWwg
dm9pZCBzZXRUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKTsKLQotICAgIHZp
cnR1YWwgdm9pZCBzZXRDaGlsZHJlblRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYpOwotCi0gICAgdmlydHVhbCB2b2lkIHNldFByZXNlcnZlczNEKGJvb2wpOwotICAgIHZpcnR1
YWwgdm9pZCBzZXRNYXNrc1RvQm91bmRzKGJvb2wpOwotICAgIHZpcnR1YWwgdm9pZCBzZXREcmF3
c0NvbnRlbnQoYm9vbCk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0QmFja2dyb3VuZENvbG9yKGNv
bnN0IENvbG9yJik7Ci0gICAgdmlydHVhbCB2b2lkIGNsZWFyQmFja2dyb3VuZENvbG9yKCk7Ci0K
LSAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNPcGFxdWUoYm9vbCk7Ci0gICAgdmlydHVhbCB2
b2lkIHNldEJhY2tmYWNlVmlzaWJpbGl0eShib29sKTsKLQotICAgIC8vIHJldHVybiB0cnVlIGlm
IHdlIHN0YXJ0ZWQgYW4gYW5pbWF0aW9uCi0gICAgdmlydHVhbCB2b2lkIHNldE9wYWNpdHkoZmxv
YXQpOwotCi0gICAgdmlydHVhbCB2b2lkIHNldE5lZWRzRGlzcGxheSgpOwotICAgIHZpcnR1YWwg
dm9pZCBzZXROZWVkc0Rpc3BsYXlJblJlY3QoY29uc3QgRmxvYXRSZWN0Jik7Ci0gICAgdmlydHVh
bCB2b2lkIHNldENvbnRlbnRzTmVlZHNEaXNwbGF5KCk7Ci0gICAgCi0gICAgdmlydHVhbCB2b2lk
IHNldENvbnRlbnRzUmVjdChjb25zdCBJbnRSZWN0Jik7Ci0gICAgCi0gICAgdmlydHVhbCB2b2lk
IHN1c3BlbmRBbmltYXRpb25zKGRvdWJsZSB0aW1lKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVzdW1l
QW5pbWF0aW9ucygpOwotCi0gICAgdmlydHVhbCBib29sIGFkZEFuaW1hdGlvbihjb25zdCBLZXlm
cmFtZVZhbHVlTGlzdCYsIGNvbnN0IEludFNpemUmIGJveFNpemUsIGNvbnN0IEFuaW1hdGlvbios
IGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSwgZG91YmxlIHRpbWVPZmZzZXQpOwotICAgIHZp
cnR1YWwgdm9pZCBwYXVzZUFuaW1hdGlvbihjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGRv
dWJsZSB0aW1lT2Zmc2V0KTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQW5pbWF0aW9uKGNvbnN0
IFN0cmluZyYgYW5pbWF0aW9uTmFtZSk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNU
b0ltYWdlKEltYWdlKik7Ci0gICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzVG9NZWRpYShQbGF0
Zm9ybUxheWVyKik7Ci0gICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzVG9DYW52YXMoUGxhdGZv
cm1MYXllciopOwotCi0gICAgdmlydHVhbCBib29sIGhhc0NvbnRlbnRzTGF5ZXIoKSBjb25zdCB7
IHJldHVybiBtX2NvbnRlbnRzTGF5ZXI7IH0KLSAgICAKLSAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5
ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdDsKLQotICAgIHZpcnR1YWwgdm9pZCBzZXREZWJ1Z0Jh
Y2tncm91bmRDb2xvcihjb25zdCBDb2xvciYpOwotICAgIHZpcnR1YWwgdm9pZCBzZXREZWJ1Z0Jv
cmRlcihjb25zdCBDb2xvciYsIGZsb2F0IGJvcmRlcldpZHRoKTsKLQotICAgIHZpcnR1YWwgdm9p
ZCBkaWREaXNwbGF5KFBsYXRmb3JtTGF5ZXIqKTsKLQotICAgIHZvaWQgcmVjdXJzaXZlQ29tbWl0
Q2hhbmdlcygpOwotCi0gICAgdmlydHVhbCB2b2lkIHN5bmNDb21wb3NpdGluZ1N0YXRlKCk7Ci0g
ICAgdmlydHVhbCB2b2lkIHN5bmNDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSgpOwot
Ci0gICAgLy8gU2hvdWxkIG9ubHkgYmUgY2FsbGVkIGJ5IGFuaW1hdGlvbkRpZFN0YXJ0OiBjYWxs
YmFjawotICAgIHZvaWQgYW5pbWF0aW9uRGlkU3RhcnQoQ0FBbmltYXRpb24qKTsKLSAgICAKLXBy
b3RlY3RlZDoKLSAgICB2aXJ0dWFsIHZvaWQgc2V0T3BhY2l0eUludGVybmFsKGZsb2F0KTsKLQot
cHJpdmF0ZToKLSAgICB2b2lkIHVwZGF0ZU9wYWNpdHlPbkxheWVyKCk7Ci0KLSAgICBDQUxheWVy
KiBwcmltYXJ5TGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3N0cnVjdHVyYWxMYXllci5nZXQoKSA/
IG1fc3RydWN0dXJhbExheWVyLmdldCgpIDogbV9sYXllci5nZXQoKTsgfQotICAgIENBTGF5ZXIq
IGhvc3RMYXllckZvclN1YmxheWVycygpIGNvbnN0OwotICAgIENBTGF5ZXIqIGxheWVyRm9yU3Vw
ZXJsYXllcigpIGNvbnN0OwotICAgIENBTGF5ZXIqIGFuaW1hdGVkTGF5ZXIoQW5pbWF0ZWRQcm9w
ZXJ0eUlEKSBjb25zdDsKLQotICAgIHR5cGVkZWYgU3RyaW5nIENsb25lSUQ7IC8vIElkZW50aWZp
ZXIgZm9yIGEgZ2l2ZW4gY2xvbmUsIGJhc2VkIG9uIG9yaWdpbmFsL3JlcGxpY2EgYnJhbmNoaW5n
IGRvd24gdGhlIHRyZWUuCi0gICAgc3RhdGljIGJvb2wgaXNSZXBsaWNhdGVkUm9vdENsb25lKGNv
bnN0IENsb25lSUQmIGNsb25lSUQpIHsgcmV0dXJuIGNsb25lSURbMFVdICYgMTsgfQotCi0gICAg
dHlwZWRlZiBIYXNoTWFwPENsb25lSUQsIFJldGFpblB0cjxDQUxheWVyPiA+IExheWVyTWFwOwot
ICAgIExheWVyTWFwKiBwcmltYXJ5TGF5ZXJDbG9uZXMoKSBjb25zdCB7IHJldHVybiBtX3N0cnVj
dHVyYWxMYXllci5nZXQoKSA/IG1fc3RydWN0dXJhbExheWVyQ2xvbmVzLmdldCgpIDogbV9sYXll
ckNsb25lcy5nZXQoKTsgfQotICAgIExheWVyTWFwKiBhbmltYXRlZExheWVyQ2xvbmVzKEFuaW1h
dGVkUHJvcGVydHlJRCkgY29uc3Q7Ci0KLSAgICBib29sIGNyZWF0ZUFuaW1hdGlvbkZyb21LZXlm
cmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmLCBjb25zdCBBbmltYXRpb24qLCBjb25zdCBT
dHJpbmcmIGFuaW1hdGlvbk5hbWUsIGRvdWJsZSB0aW1lT2Zmc2V0KTsKLSAgICBib29sIGNyZWF0
ZVRyYW5zZm9ybUFuaW1hdGlvbnNGcm9tS2V5ZnJhbWVzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0
JiwgY29uc3QgQW5pbWF0aW9uKiwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBkb3VibGUg
dGltZU9mZnNldCwgY29uc3QgSW50U2l6ZSYgYm94U2l6ZSk7Ci0KLSAgICAvLyBSZXR1cm4gYXV0
b3JlbGVhc2VkIGFuaW1hdGlvbiAodXNlIFJldGFpblB0cj8pCi0gICAgQ0FCYXNpY0FuaW1hdGlv
biogY3JlYXRlQmFzaWNBbmltYXRpb24oY29uc3QgQW5pbWF0aW9uKiwgQW5pbWF0ZWRQcm9wZXJ0
eUlELCBib29sIGFkZGl0aXZlKTsKLSAgICBDQUtleWZyYW1lQW5pbWF0aW9uKiBjcmVhdGVLZXlm
cmFtZUFuaW1hdGlvbihjb25zdCBBbmltYXRpb24qLCBBbmltYXRlZFByb3BlcnR5SUQsIGJvb2wg
YWRkaXRpdmUpOwotICAgIHZvaWQgc2V0dXBBbmltYXRpb24oQ0FQcm9wZXJ0eUFuaW1hdGlvbios
IGNvbnN0IEFuaW1hdGlvbiosIGJvb2wgYWRkaXRpdmUpOwotICAgIAotICAgIENBTWVkaWFUaW1p
bmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShjb25zdCBBbmltYXRp
b25WYWx1ZSosIGNvbnN0IEFuaW1hdGlvbiopOwotICAgIAotICAgIGJvb2wgc2V0QW5pbWF0aW9u
RW5kcG9pbnRzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiwgY29uc3QgQW5pbWF0aW9uKiwgQ0FC
YXNpY0FuaW1hdGlvbiopOwotICAgIGJvb2wgc2V0QW5pbWF0aW9uS2V5ZnJhbWVzKGNvbnN0IEtl
eWZyYW1lVmFsdWVMaXN0JiwgY29uc3QgQW5pbWF0aW9uKiwgQ0FLZXlmcmFtZUFuaW1hdGlvbiop
OwotCi0gICAgYm9vbCBzZXRUcmFuc2Zvcm1BbmltYXRpb25FbmRwb2ludHMoY29uc3QgS2V5ZnJh
bWVWYWx1ZUxpc3QmLCBjb25zdCBBbmltYXRpb24qLCBDQUJhc2ljQW5pbWF0aW9uKiwgaW50IGZ1
bmN0aW9uSW5kZXgsIFRyYW5zZm9ybU9wZXJhdGlvbjo6T3BlcmF0aW9uVHlwZSwgYm9vbCBpc01h
dHJpeEFuaW1hdGlvbiwgY29uc3QgSW50U2l6ZSYgYm94U2l6ZSk7Ci0gICAgYm9vbCBzZXRUcmFu
c2Zvcm1BbmltYXRpb25LZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmLCBjb25zdCBB
bmltYXRpb24qLCBDQUtleWZyYW1lQW5pbWF0aW9uKiwgaW50IGZ1bmN0aW9uSW5kZXgsIFRyYW5z
Zm9ybU9wZXJhdGlvbjo6T3BlcmF0aW9uVHlwZSwgYm9vbCBpc01hdHJpeEFuaW1hdGlvbiwgY29u
c3QgSW50U2l6ZSYgYm94U2l6ZSk7Ci0gICAgCi0gICAgYm9vbCBhbmltYXRpb25Jc1J1bm5pbmco
Y29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJu
IG1fcnVubmluZ0FuaW1hdGlvbnMuZmluZChhbmltYXRpb25OYW1lKSAhPSBtX3J1bm5pbmdBbmlt
YXRpb25zLmVuZCgpOwotICAgIH0KLQotICAgIHZvaWQgY29tbWl0TGF5ZXJDaGFuZ2VzQmVmb3Jl
U3VibGF5ZXJzKCk7Ci0gICAgdm9pZCBjb21taXRMYXllckNoYW5nZXNBZnRlclN1YmxheWVycygp
OwotCi0gICAgRmxvYXRTaXplIGNvbnN0cmFpbmVkU2l6ZSgpIGNvbnN0OwotCi0gICAgYm9vbCBy
ZXF1aXJlc1RpbGVkTGF5ZXIoY29uc3QgRmxvYXRTaXplJikgY29uc3Q7Ci0gICAgdm9pZCBzd2Fw
RnJvbU9yVG9UaWxlZExheWVyKGJvb2wgdXNlVGlsZWRMYXllcik7Ci0KLSAgICBDb21wb3NpdGlu
Z0Nvb3JkaW5hdGVzT3JpZW50YXRpb24gZGVmYXVsdENvbnRlbnRzT3JpZW50YXRpb24oKSBjb25z
dDsKLSAgICB2b2lkIHVwZGF0ZUNvbnRlbnRzVHJhbnNmb3JtKCk7Ci0gICAgCi0gICAgdm9pZCBz
ZXR1cENvbnRlbnRzTGF5ZXIoQ0FMYXllciopOwotICAgIENBTGF5ZXIqIGNvbnRlbnRzTGF5ZXIo
KSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRzTGF5ZXIuZ2V0KCk7IH0KLQotICAgIHZpcnR1YWwg
dm9pZCBzZXRSZXBsaWNhdGVkQnlMYXllcihHcmFwaGljc0xheWVyKik7Ci0KLSAgICAvLyBVc2Vk
IHRvIHRyYWNrIHRoZSBwYXRoIGRvd24gdGhlIHRyZWUgZm9yIHJlcGxpY2EgbGF5ZXJzLgotICAg
IHN0cnVjdCBSZXBsaWNhU3RhdGUgewotICAgICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IG1heFJl
cGxpY2FEZXB0aCA9IDE2OwotICAgICAgICBlbnVtIFJlcGxpY2FCcmFuY2hUeXBlIHsgQ2hpbGRC
cmFuY2ggPSAwLCBSZXBsaWNhQnJhbmNoID0gMSB9OwotICAgICAgICBSZXBsaWNhU3RhdGUoUmVw
bGljYUJyYW5jaFR5cGUgZmlyc3RCcmFuY2gpCi0gICAgICAgICAgICA6IG1fcmVwbGljYURlcHRo
KDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHB1c2goZmlyc3RCcmFuY2gpOwotICAgICAgICB9
Ci0gICAgICAgIAotICAgICAgICAvLyBDYWxsZWQgYXMgd2Ugd2FsayBkb3duIHRoZSB0cmVlIHRv
IGJ1aWxkIHJlcGxpY2FzLgotICAgICAgICB2b2lkIHB1c2goUmVwbGljYUJyYW5jaFR5cGUgYnJh
bmNoVHlwZSkKLSAgICAgICAgewotICAgICAgICAgICAgbV9yZXBsaWNhQnJhbmNoZXMuYXBwZW5k
KGJyYW5jaFR5cGUpOwotICAgICAgICAgICAgaWYgKGJyYW5jaFR5cGUgPT0gUmVwbGljYUJyYW5j
aCkKLSAgICAgICAgICAgICAgICArK21fcmVwbGljYURlcHRoOwotICAgICAgICB9Ci0gICAgICAg
IAotICAgICAgICB2b2lkIHNldEJyYW5jaFR5cGUoUmVwbGljYUJyYW5jaFR5cGUgYnJhbmNoVHlw
ZSkKLSAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKCFtX3JlcGxpY2FCcmFuY2hlcy5pc0Vt
cHR5KCkpOwotCi0gICAgICAgICAgICBpZiAobV9yZXBsaWNhQnJhbmNoZXMubGFzdCgpICE9IGJy
YW5jaFR5cGUpIHsKLSAgICAgICAgICAgICAgICBpZiAoYnJhbmNoVHlwZSA9PSBSZXBsaWNhQnJh
bmNoKQotICAgICAgICAgICAgICAgICAgICArK21fcmVwbGljYURlcHRoOwotICAgICAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgLS1tX3JlcGxpY2FEZXB0aDsKLSAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgbV9yZXBsaWNhQnJhbmNoZXMubGFzdCgpID0gYnJhbmNoVHlw
ZTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgcG9wKCkKLSAgICAgICAgewotICAgICAgICAg
ICAgaWYgKG1fcmVwbGljYUJyYW5jaGVzLmxhc3QoKSA9PSBSZXBsaWNhQnJhbmNoKQotICAgICAg
ICAgICAgICAgIC0tbV9yZXBsaWNhRGVwdGg7Ci0gICAgICAgICAgICBtX3JlcGxpY2FCcmFuY2hl
cy5yZW1vdmVMYXN0KCk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHNpemVfdCBkZXB0
aCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVwbGljYUJyYW5jaGVzLnNpemUoKTsgfQotICAgICAgICBz
aXplX3QgcmVwbGljYURlcHRoKCkgY29uc3QgeyByZXR1cm4gbV9yZXBsaWNhRGVwdGg7IH0KLQot
ICAgICAgICBDbG9uZUlEIGNsb25lSUQoKSBjb25zdDsgICAgICAgIAotCi0gICAgcHJpdmF0ZToK
LSAgICAgICAgVmVjdG9yPFJlcGxpY2FCcmFuY2hUeXBlPiBtX3JlcGxpY2FCcmFuY2hlczsKLSAg
ICAgICAgc2l6ZV90IG1fcmVwbGljYURlcHRoOwotICAgIH07Ci0gICAgQ0FMYXllciAqcmVwbGlj
YXRlZExheWVyUm9vdChSZXBsaWNhU3RhdGUmKTsKLQotICAgIGVudW0gQ2xvbmVMZXZlbCB7IFJv
b3RDbG9uZUxldmVsLCBJbnRlcm1lZGlhdGVDbG9uZUxldmVsIH07Ci0gICAgQ0FMYXllciAqZmV0
Y2hDbG9uZUxheWVycyhHcmFwaGljc0xheWVyKiByZXBsaWNhUm9vdCwgUmVwbGljYVN0YXRlJiwg
Q2xvbmVMZXZlbCk7Ci0gICAgCi0gICAgQ0FMYXllciAqY2xvbmVMYXllcihDQUxheWVyICosIENs
b25lTGV2ZWwpOwotICAgIENBTGF5ZXIgKmZpbmRPck1ha2VDbG9uZShDbG9uZUlELCBDQUxheWVy
ICosIExheWVyTWFwKiwgQ2xvbmVMZXZlbCk7Ci0KLSAgICB2b2lkIGVuc3VyZUNsb25lTGF5ZXJz
KENsb25lSUQgaW5kZXgsIENBTGF5ZXIgKiYgcHJpbWFyeUxheWVyLCBDQUxheWVyIComIHN0cnVj
dHVyYWxMYXllciwgQ0FMYXllciAqJiBjb250ZW50c0xheWVyLCBDbG9uZUxldmVsKTsKLQotICAg
IGJvb2wgaGFzQ2xvbmVMYXllcnMoKSBjb25zdCB7IHJldHVybiBtX2xheWVyQ2xvbmVzOyB9Ci0g
ICAgdm9pZCByZW1vdmVDbG9uZUxheWVycygpOwotICAgIEZsb2F0UG9pbnQgcG9zaXRpb25Gb3JD
bG9uZVJvb3RMYXllcigpIGNvbnN0OwotICAgIAotICAgIHZvaWQgcHJvcGFnYXRlTGF5ZXJDaGFu
Z2VUb1JlcGxpY2FzKCk7Ci0gICAgCi0gICAgLy8gQWxsIHRoZXNlICJ1cGRhdGUiIG1ldGhvZHMg
d2lsbCBiZSBjYWxsZWQgaW5zaWRlIGEgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TL0VORF9C
TE9DS19PQkpDX0VYQ0VQVElPTlMgYmxvY2suCi0gICAgdm9pZCB1cGRhdGVMYXllck5hbWVzKCk7
Ci0gICAgdm9pZCB1cGRhdGVTdWJsYXllckxpc3QoKTsKLSAgICB2b2lkIHVwZGF0ZUxheWVyUG9z
aXRpb24oKTsKLSAgICB2b2lkIHVwZGF0ZUxheWVyU2l6ZSgpOwotICAgIHZvaWQgdXBkYXRlQW5j
aG9yUG9pbnQoKTsKLSAgICB2b2lkIHVwZGF0ZVRyYW5zZm9ybSgpOwotICAgIHZvaWQgdXBkYXRl
Q2hpbGRyZW5UcmFuc2Zvcm0oKTsKLSAgICB2b2lkIHVwZGF0ZU1hc2tzVG9Cb3VuZHMoKTsKLSAg
ICB2b2lkIHVwZGF0ZUNvbnRlbnRzT3BhcXVlKCk7Ci0gICAgdm9pZCB1cGRhdGVCYWNrZmFjZVZp
c2liaWxpdHkoKTsKLSAgICB2b2lkIHVwZGF0ZVN0cnVjdHVyYWxMYXllcigpOwotICAgIHZvaWQg
dXBkYXRlTGF5ZXJEcmF3c0NvbnRlbnQoKTsKLSAgICB2b2lkIHVwZGF0ZUxheWVyQmFja2dyb3Vu
ZENvbG9yKCk7Ci0KLSAgICB2b2lkIHVwZGF0ZUNvbnRlbnRzSW1hZ2UoKTsKLSAgICB2b2lkIHVw
ZGF0ZUNvbnRlbnRzTWVkaWFMYXllcigpOwotICAgIHZvaWQgdXBkYXRlQ29udGVudHNDYW52YXNM
YXllcigpOwotICAgIHZvaWQgdXBkYXRlQ29udGVudHNSZWN0KCk7Ci0gICAgdm9pZCB1cGRhdGVN
YXNrTGF5ZXIoKTsKLSAgICB2b2lkIHVwZGF0ZVJlcGxpY2F0ZWRMYXllcnMoKTsKLQotICAgIHZv
aWQgdXBkYXRlTGF5ZXJBbmltYXRpb25zKCk7Ci0gICAgdm9pZCB1cGRhdGVDb250ZW50c05lZWRz
RGlzcGxheSgpOwotICAgIAotICAgIGVudW0gU3RydWN0dXJhbExheWVyUHVycG9zZSB7Ci0gICAg
ICAgIE5vU3RydWN0dXJhbExheWVyID0gMCwKLSAgICAgICAgU3RydWN0dXJhbExheWVyRm9yUHJl
c2VydmVzM0QsCi0gICAgICAgIFN0cnVjdHVyYWxMYXllckZvclJlcGxpY2FGbGF0dGVuaW5nCi0g
ICAgfTsKLSAgICB2b2lkIGVuc3VyZVN0cnVjdHVyYWxMYXllcihTdHJ1Y3R1cmFsTGF5ZXJQdXJw
b3NlKTsKLSAgICBTdHJ1Y3R1cmFsTGF5ZXJQdXJwb3NlIHN0cnVjdHVyYWxMYXllclB1cnBvc2Uo
KSBjb25zdDsKLQotICAgIHZvaWQgc2V0Q0FBbmltYXRpb25PbkxheWVyKENBUHJvcGVydHlBbmlt
YXRpb24qLCBBbmltYXRlZFByb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSwg
aW50IGluZGV4LCBkb3VibGUgdGltZU9mZnNldCk7Ci0gICAgYm9vbCByZW1vdmVDQUFuaW1hdGlv
bkZyb21MYXllcihBbmltYXRlZFByb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFt
ZSwgaW50IGluZGV4KTsKLSAgICB2b2lkIHBhdXNlQ0FBbmltYXRpb25PbkxheWVyKEFuaW1hdGVk
UHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBpbnQgaW5kZXgsIGRvdWJs
ZSB0aW1lT2Zmc2V0KTsKLQotICAgIGVudW0gTW92ZU9yQ29weSB7IE1vdmUsIENvcHkgfTsKLSAg
ICBzdGF0aWMgdm9pZCBtb3ZlT3JDb3B5TGF5ZXJBbmltYXRpb24oTW92ZU9yQ29weSwgY29uc3Qg
U3RyaW5nJiBhbmltYXRpb25JZGVudGlmaWVyLCBDQUxheWVyICpmcm9tTGF5ZXIsIENBTGF5ZXIg
KnRvTGF5ZXIpOwotICAgIHZvaWQgbW92ZU9yQ29weUFuaW1hdGlvbnNGb3JQcm9wZXJ0eShNb3Zl
T3JDb3B5LCBBbmltYXRlZFByb3BlcnR5SUQsIENBTGF5ZXIgKiBmcm9tTGF5ZXIsIENBTGF5ZXIg
KiB0b0xheWVyKTsKLSAgICAKLSAgICBlbnVtIExheWVyQ2hhbmdlIHsKLSAgICAgICAgTm9DaGFu
Z2UgPSAwLAotICAgICAgICBOYW1lQ2hhbmdlZCA9IDEgPDwgMSwKLSAgICAgICAgQ2hpbGRyZW5D
aGFuZ2VkID0gMSA8PCAyLCAgIC8vIGFsc28gdXNlZCBmb3IgY29udGVudCBsYXllciwgYW5kIHBy
ZXNlcnZlcy0zZCwgYW5kIHNpemUgaWYgdGlsaW5nIGNoYW5nZXM/Ci0gICAgICAgIFBvc2l0aW9u
Q2hhbmdlZCA9IDEgPDwgMywKLSAgICAgICAgQW5jaG9yUG9pbnRDaGFuZ2VkID0gMSA8PCA0LAot
ICAgICAgICBTaXplQ2hhbmdlZCA9IDEgPDwgNSwKLSAgICAgICAgVHJhbnNmb3JtQ2hhbmdlZCA9
IDEgPDwgNiwKLSAgICAgICAgQ2hpbGRyZW5UcmFuc2Zvcm1DaGFuZ2VkID0gMSA8PCA3LAotICAg
ICAgICBQcmVzZXJ2ZXMzRENoYW5nZWQgPSAxIDw8IDgsCi0gICAgICAgIE1hc2tzVG9Cb3VuZHND
aGFuZ2VkID0gMSA8PCA5LAotICAgICAgICBEcmF3c0NvbnRlbnRDaGFuZ2VkID0gMSA8PCAxMCwg
IC8vIG5lZWQgdGhpcz8KLSAgICAgICAgQmFja2dyb3VuZENvbG9yQ2hhbmdlZCA9IDEgPDwgMTEs
Ci0gICAgICAgIENvbnRlbnRzT3BhcXVlQ2hhbmdlZCA9IDEgPDwgMTIsCi0gICAgICAgIEJhY2tm
YWNlVmlzaWJpbGl0eUNoYW5nZWQgPSAxIDw8IDEzLAotICAgICAgICBPcGFjaXR5Q2hhbmdlZCA9
IDEgPDwgMTQsCi0gICAgICAgIEFuaW1hdGlvbkNoYW5nZWQgPSAxIDw8IDE1LAotICAgICAgICBE
aXJ0eVJlY3RzQ2hhbmdlZCA9IDEgPDwgMTYsCi0gICAgICAgIENvbnRlbnRzSW1hZ2VDaGFuZ2Vk
ID0gMSA8PCAxNywKLSAgICAgICAgQ29udGVudHNNZWRpYUxheWVyQ2hhbmdlZCA9IDEgPDwgMTgs
Ci0gICAgICAgIENvbnRlbnRzQ2FudmFzTGF5ZXJDaGFuZ2VkID0gMSA8PCAxOSwKLSAgICAgICAg
Q29udGVudHNSZWN0Q2hhbmdlZCA9IDEgPDwgMjAsCi0gICAgICAgIE1hc2tMYXllckNoYW5nZWQg
PSAxIDw8IDIxLAotICAgICAgICBSZXBsaWNhdGVkTGF5ZXJDaGFuZ2VkID0gMSA8PCAyMiwKLSAg
ICAgICAgQ29udGVudHNOZWVkc0Rpc3BsYXkgPSAxIDw8IDIzCi0gICAgfTsKLSAgICB0eXBlZGVm
IHVuc2lnbmVkIExheWVyQ2hhbmdlRmxhZ3M7Ci0gICAgdm9pZCBub3RlTGF5ZXJQcm9wZXJ0eUNo
YW5nZWQoTGF5ZXJDaGFuZ2VGbGFncyBmbGFncyk7Ci0gICAgdm9pZCBub3RlU3VibGF5ZXJzQ2hh
bmdlZCgpOwotCi0gICAgdm9pZCByZXBhaW50TGF5ZXJEaXJ0eVJlY3RzKCk7Ci0KLSAgICBSZXRh
aW5QdHI8V2ViTGF5ZXI+IG1fbGF5ZXI7IC8vIFRoZSBtYWluIGxheWVyCi0gICAgUmV0YWluUHRy
PENBTGF5ZXI+IG1fc3RydWN0dXJhbExheWVyOyAvLyBBIGxheWVyIHVzZWQgZm9yIHN0cnVjdHVy
YWwgcmVhc29ucywgbGlrZSBwcmVzZXJ2ZXMtM2Qgb3IgcmVwbGljYS1mbGF0dGVuaW5nLiBJcyB0
aGUgcGFyZW50IG9mIG1fbGF5ZXIuCi0gICAgUmV0YWluUHRyPENBTGF5ZXI+IG1fY29udGVudHNM
YXllcjsgLy8gQSBsYXllciB1c2VkIGZvciBpbm5lciBjb250ZW50LCBsaWtlIGltYWdlIGFuZCB2
aWRlbwotCi0gICAgLy8gUmVmZXJlbmNlcyB0byBjbG9uZXMgb2Ygb3VyIGxheWVycywgZm9yIHJl
cGxpY2F0ZWQgbGF5ZXJzLgotICAgIE93blB0cjxMYXllck1hcD4gbV9sYXllckNsb25lczsKLSAg
ICBPd25QdHI8TGF5ZXJNYXA+IG1fc3RydWN0dXJhbExheWVyQ2xvbmVzOwotICAgIE93blB0cjxM
YXllck1hcD4gbV9jb250ZW50c0xheWVyQ2xvbmVzOwotICAgIAotICAgIGVudW0gQ29udGVudHNM
YXllclB1cnBvc2UgewotICAgICAgICBOb0NvbnRlbnRzTGF5ZXIgPSAwLAotICAgICAgICBDb250
ZW50c0xheWVyRm9ySW1hZ2UsCi0gICAgICAgIENvbnRlbnRzTGF5ZXJGb3JNZWRpYSwKLSAgICAg
ICAgQ29udGVudHNMYXllckZvckNhbnZhcwotICAgIH07Ci0gICAgCi0gICAgQ29udGVudHNMYXll
clB1cnBvc2UgbV9jb250ZW50c0xheWVyUHVycG9zZTsKLSAgICBib29sIG1fY29udGVudHNMYXll
ckhhc0JhY2tncm91bmRDb2xvciA6IDE7Ci0KLSAgICBSZXRhaW5QdHI8V2ViQW5pbWF0aW9uRGVs
ZWdhdGU+IG1fYW5pbWF0aW9uRGVsZWdhdGU7Ci0KLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4g
bV91bmNvcnJlY3RlZENvbnRlbnRzSW1hZ2U7Ci0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IG1f
cGVuZGluZ0NvbnRlbnRzSW1hZ2U7Ci0gICAgCi0gICAgLy8gVGhpcyByZXByZXNlbnRzIHRoZSBh
bmltYXRpb24gb2YgYSBzaW5nbGUgcHJvcGVydHkuIFRoZXJlIG1heSBiZSBtdWx0aXBsZSB0cmFu
c2Zvcm0gYW5pbWF0aW9ucyBmb3IKLSAgICAvLyBhIHNpbmdsZSB0cmFuc2l0aW9uIG9yIGtleWZy
YW1lIGFuaW1hdGlvbiwgc28gaW5kZXggaXMgdXNlZCB0byBkaXN0aW5ndWlzaCB0aGVzZS4KLSAg
ICBzdHJ1Y3QgTGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbiB7Ci0gICAgICAgIExheWVyUHJvcGVydHlB
bmltYXRpb24oQ0FQcm9wZXJ0eUFuaW1hdGlvbiogY2FBbmltYXRpb24sIGNvbnN0IFN0cmluZyYg
YW5pbWF0aW9uTmFtZSwgQW5pbWF0ZWRQcm9wZXJ0eUlEIHByb3BlcnR5LCBpbnQgaW5kZXgsIGRv
dWJsZSB0aW1lT2Zmc2V0KQotICAgICAgICA6IG1fYW5pbWF0aW9uKGNhQW5pbWF0aW9uKQotICAg
ICAgICAsIG1fbmFtZShhbmltYXRpb25OYW1lKQotICAgICAgICAsIG1fcHJvcGVydHkocHJvcGVy
dHkpCi0gICAgICAgICwgbV9pbmRleChpbmRleCkKLSAgICAgICAgLCBtX3RpbWVPZmZzZXQodGlt
ZU9mZnNldCkKLSAgICAgICAgeyB9Ci0KLSAgICAgICAgUmV0YWluUHRyPENBUHJvcGVydHlBbmlt
YXRpb24qPiBtX2FuaW1hdGlvbjsKLSAgICAgICAgU3RyaW5nIG1fbmFtZTsKLSAgICAgICAgQW5p
bWF0ZWRQcm9wZXJ0eUlEIG1fcHJvcGVydHk7Ci0gICAgICAgIGludCBtX2luZGV4OwotICAgICAg
ICBkb3VibGUgbV90aW1lT2Zmc2V0OwotICAgIH07Ci0gICAgCi0gICAgLy8gVW5jb21taXR0ZWQg
dHJhbnNpdGlvbnMgYW5kIGFuaW1hdGlvbnMuCi0gICAgVmVjdG9yPExheWVyUHJvcGVydHlBbmlt
YXRpb24+IG1fdW5jb21pdHRlZEFuaW1hdGlvbnM7Ci0gICAgCi0gICAgZW51bSBBY3Rpb24geyBS
ZW1vdmUsIFBhdXNlIH07Ci0gICAgc3RydWN0IEFuaW1hdGlvblByb2Nlc3NpbmdBY3Rpb24gewot
ICAgICAgICBBbmltYXRpb25Qcm9jZXNzaW5nQWN0aW9uKEFjdGlvbiBhY3Rpb24gPSBSZW1vdmUs
IGRvdWJsZSB0aW1lT2Zmc2V0ID0gMCkKLSAgICAgICAgICAgIDogYWN0aW9uKGFjdGlvbikKLSAg
ICAgICAgICAgICwgdGltZU9mZnNldCh0aW1lT2Zmc2V0KQotICAgICAgICB7Ci0gICAgICAgIH0K
LSAgICAgICAgQWN0aW9uIGFjdGlvbjsKLSAgICAgICAgZG91YmxlIHRpbWVPZmZzZXQ7IC8vIG9u
bHkgdXNlZCBmb3IgcGF1c2UKLSAgICB9OwotICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIEFu
aW1hdGlvblByb2Nlc3NpbmdBY3Rpb24+IEFuaW1hdGlvbnNUb1Byb2Nlc3NNYXA7Ci0gICAgQW5p
bWF0aW9uc1RvUHJvY2Vzc01hcCBtX2FuaW1hdGlvbnNUb1Byb2Nlc3M7Ci0KLSAgICAvLyBNYXAg
b2YgYW5pbWF0aW9uIG5hbWVzIHRvIHRoZWlyIGFzc29jaWF0ZWQgbGlzdHMgb2YgcHJvcGVydHkg
YW5pbWF0aW9ucywgc28gd2UgY2FuIHJlbW92ZS9wYXVzZSB0aGVtLgotICAgIHR5cGVkZWYgSGFz
aE1hcDxTdHJpbmcsIFZlY3RvcjxMYXllclByb3BlcnR5QW5pbWF0aW9uPiA+IEFuaW1hdGlvbnNN
YXA7Ci0gICAgQW5pbWF0aW9uc01hcCBtX3J1bm5pbmdBbmltYXRpb25zOwotCi0gICAgVmVjdG9y
PEZsb2F0UmVjdD4gbV9kaXJ0eVJlY3RzOwotICAgIAotICAgIExheWVyQ2hhbmdlRmxhZ3MgbV91
bmNvbW1pdHRlZENoYW5nZXM7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLQotI2Vu
ZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLQotI2VuZGlmIC8vIEdyYXBoaWNz
TGF5ZXJNYWNfaApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NM
YXllck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9H
cmFwaGljc0xheWVyTWFjLm1tCShyZXZpc2lvbiA3MzI5MCkKKysrIFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0dyYXBoaWNzTGF5ZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsMjUx
NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLQotI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01Q
T1NJVElORykKLQotI2ltcG9ydCAiR3JhcGhpY3NMYXllck1hYy5oIgotCi0jaW1wb3J0ICJBbmlt
YXRpb24uaCIKLSNpbXBvcnQgIkJsb2NrRXhjZXB0aW9ucy5oIgotI2ltcG9ydCAiRmxvYXRDb252
ZXJzaW9uLmgiCi0jaW1wb3J0ICJGbG9hdFJlY3QuaCIKLSNpbXBvcnQgIkltYWdlLmgiCi0jaW1w
b3J0ICJQbGF0Zm9ybVN0cmluZy5oIgotI2ltcG9ydCA8UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+
Ci0jaW1wb3J0ICJSb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaCIKLSNpbXBvcnQgIlNjYWxlVHJh
bnNmb3JtT3BlcmF0aW9uLmgiCi0jaW1wb3J0ICJTeXN0ZW1UaW1lLmgiCi0jaW1wb3J0ICJUcmFu
c2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaCIKLSNpbXBvcnQgIldlYkxheWVyLmgiCi0jaW1wb3J0
ICJXZWJUaWxlZExheWVyLmgiCi0jaW1wb3J0IDxsaW1pdHMuaD4KLSNpbXBvcnQgPG9iamMvb2Jq
Yy1hdXRvLmg+Ci0jaW1wb3J0IDx3dGYvQ3VycmVudFRpbWUuaD4KLSNpbXBvcnQgPHd0Zi9VbnVz
ZWRQYXJhbS5oPgotI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgotI2ltcG9ydCA8d3RmL3RleHQv
U3RyaW5nQ29uY2F0ZW5hdGUuaD4KLQotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQotI2RlZmluZSBI
QVZFX01PREVSTl9RVUFSVFpDT1JFICghZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRl
ZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3Rh
dGljIE5TU3RyaW5nICogY29uc3QgV2ViS2l0QW5pbWF0aW9uQmVnaW5UaW1lU2V0S2V5ID0gQCJX
ZWJLaXRBbmltYXRpb25CZWdpblRpbWVTZXQiOwotCi0vLyBUaGUgdGhyZXNob2xkIHdpZHRoIG9y
IGhlaWdodCBhYm92ZSB3aGljaCBhIHRpbGVkIGxheWVyIHdpbGwgYmUgdXNlZC4gVGhpcyBzaG91
bGQgYmUKLS8vIGxhcmdlIGVub3VnaCB0byBhdm9pZCB0aWxlZCBsYXllcnMgZm9yIG1vc3QgR3Jh
cGhpY3NMYXllcnMsIGJ1dCBsZXNzIHRoYW4gdGhlIE9wZW5HTAotLy8gdGV4dHVyZSBzaXplIGxp
bWl0IG9uIGFsbCBzdXBwb3J0ZWQgaGFyZHdhcmUuCi1zdGF0aWMgY29uc3QgaW50IGNNYXhQaXhl
bERpbWVuc2lvbiA9IDIwMDA7Ci0KLS8vIFRoZSB3aWR0aCBhbmQgaGVpZ2h0IG9mIGEgc2luZ2xl
IHRpbGUgaW4gYSB0aWxlZCBsYXllci4gU2hvdWxkIGJlIGxhcmdlIGVub3VnaCB0bwotLy8gYXZv
aWQgbG90cyBvZiBzbWFsbCB0aWxlcyAoYW5kIHRoZXJlZm9yZSBsb3RzIG9mIGRyYXdpbmcgY2Fs
bGJhY2tzKSwgYnV0IHNtYWxsIGVub3VnaAotLy8gdG8ga2VlcCB0aGUgb3ZlcmFsbCB0aWxlIGNv
c3QgbG93Lgotc3RhdGljIGNvbnN0IGludCBjVGlsZWRMYXllclRpbGVTaXplID0gNTEyOwotCi0v
LyBJZiB3ZSBzZW5kIGEgZHVyYXRpb24gb2YgMCB0byBDQSwgdGhlbiBpdCB3aWxsIHVzZSB0aGUg
ZGVmYXVsdCBkdXJhdGlvbgotLy8gb2YgMjUwbXMuIFNvIHNlbmQgYSB2ZXJ5IHNtYWxsIHZhbHVl
IGluc3RlYWQuCi1zdGF0aWMgY29uc3QgZmxvYXQgY0FuaW1hdGlvbkFsbW9zdFplcm9EdXJhdGlv
biA9IDFlLTNmOwotCi0vLyBDQUN1cnJlbnRNZWRpYVRpbWUoKSBpcyBhIHRpbWUgc2luY2UgYm9v
dC4gVGhlc2UgbWV0aG9kcyBjb252ZXJ0IGJldHdlZW4gdGhhdCBhbmQKLS8vIFdlYkNvcmUgdGlt
ZSwgd2hpY2ggaXMgc3lzdGVtIHRpbWUgKFVUQykuCi1zdGF0aWMgQ0ZUaW1lSW50ZXJ2YWwgY3Vy
cmVudFRpbWVUb01lZGlhVGltZShkb3VibGUgdCkKLXsKLSAgICByZXR1cm4gQ0FDdXJyZW50TWVk
aWFUaW1lKCkgKyB0IC0gV1RGOjpjdXJyZW50VGltZSgpOwotfQotCi1zdGF0aWMgZG91YmxlIG1l
ZGlhVGltZVRvQ3VycmVudFRpbWUoQ0ZUaW1lSW50ZXJ2YWwgdCkKLXsKLSAgICByZXR1cm4gV1RG
OjpjdXJyZW50VGltZSgpICsgdCAtIENBQ3VycmVudE1lZGlhVGltZSgpOwotfQotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLUBpbnRlcmZhY2UgQ0FMYXllcihQcml2YXRlKQotLSAodm9pZClz
ZXRDb250ZW50c0NoYW5nZWQ7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgV2ViQW5pbWF0aW9uRGVsZWdh
dGUgOiBOU09iamVjdCB7Ci0gICAgV2ViQ29yZTo6R3JhcGhpY3NMYXllck1hYyogbV9ncmFwaGlj
c0xheWVyOwotfQotCi0tICh2b2lkKWFuaW1hdGlvbkRpZFN0YXJ0OihDQUFuaW1hdGlvbiAqKWFu
aW07Ci0tIChXZWJDb3JlOjpHcmFwaGljc0xheWVyTWFjKilncmFwaGljc0xheWVyOwotLSAodm9p
ZClzZXRMYXllcjooV2ViQ29yZTo6R3JhcGhpY3NMYXllck1hYyopZ3JhcGhpY3NMYXllcjsKLQot
QGVuZAotCi1AaW1wbGVtZW50YXRpb24gV2ViQW5pbWF0aW9uRGVsZWdhdGUKLQotLSAodm9pZClh
bmltYXRpb25EaWRTdGFydDooQ0FBbmltYXRpb24gKilhbmltYXRpb24KLXsKLSAgICBpZiAobV9n
cmFwaGljc0xheWVyKQotICAgICAgICBtX2dyYXBoaWNzTGF5ZXItPmFuaW1hdGlvbkRpZFN0YXJ0
KGFuaW1hdGlvbik7Ci19Ci0KLS0gKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJNYWMqKWdyYXBoaWNz
TGF5ZXIKLXsKLSAgICByZXR1cm4gbV9ncmFwaGljc0xheWVyOwotfQotCi0tICh2b2lkKXNldExh
eWVyOihXZWJDb3JlOjpHcmFwaGljc0xheWVyTWFjKilncmFwaGljc0xheWVyCi17Ci0gICAgbV9n
cmFwaGljc0xheWVyID0gZ3JhcGhpY3NMYXllcjsKLX0KLQotQGVuZAotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLXN0YXRpYyBpbmxpbmUgdm9pZCBjb3B5VHJhbnNmb3JtKENBVHJhbnNmb3JtM0Qm
IHRvVDNELCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdCkKLXsKLSAgICB0b1QzRC5tMTEg
PSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHQubTExKCkpOwotICAgIHRvVDNELm0xMiA9IG5hcnJv
d1ByZWNpc2lvblRvRmxvYXQodC5tMTIoKSk7Ci0gICAgdG9UM0QubTEzID0gbmFycm93UHJlY2lz
aW9uVG9GbG9hdCh0Lm0xMygpKTsKLSAgICB0b1QzRC5tMTQgPSBuYXJyb3dQcmVjaXNpb25Ub0Zs
b2F0KHQubTE0KCkpOwotICAgIHRvVDNELm0yMSA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodC5t
MjEoKSk7Ci0gICAgdG9UM0QubTIyID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCh0Lm0yMigpKTsK
LSAgICB0b1QzRC5tMjMgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHQubTIzKCkpOwotICAgIHRv
VDNELm0yNCA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodC5tMjQoKSk7Ci0gICAgdG9UM0QubTMx
ID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCh0Lm0zMSgpKTsKLSAgICB0b1QzRC5tMzIgPSBuYXJy
b3dQcmVjaXNpb25Ub0Zsb2F0KHQubTMyKCkpOwotICAgIHRvVDNELm0zMyA9IG5hcnJvd1ByZWNp
c2lvblRvRmxvYXQodC5tMzMoKSk7Ci0gICAgdG9UM0QubTM0ID0gbmFycm93UHJlY2lzaW9uVG9G
bG9hdCh0Lm0zNCgpKTsKLSAgICB0b1QzRC5tNDEgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHQu
bTQxKCkpOwotICAgIHRvVDNELm00MiA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodC5tNDIoKSk7
Ci0gICAgdG9UM0QubTQzID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCh0Lm00MygpKTsKLSAgICB0
b1QzRC5tNDQgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHQubTQ0KCkpOwotfQotCi1zdGF0aWMg
TlNWYWx1ZSogZ2V0VHJhbnNmb3JtRnVuY3Rpb25WYWx1ZShjb25zdCBUcmFuc2Zvcm1PcGVyYXRp
b24qIHRyYW5zZm9ybU9wLCBUcmFuc2Zvcm1PcGVyYXRpb246Ok9wZXJhdGlvblR5cGUgdHJhbnNm
b3JtVHlwZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKLXsKLSAgICBzd2l0Y2ggKHRyYW5zZm9ybVR5
cGUpIHsKLSAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlJPVEFURToKLSAgICAgICAg
Y2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlJPVEFURV9YOgotICAgICAgICBjYXNlIFRyYW5zZm9y
bU9wZXJhdGlvbjo6Uk9UQVRFX1k6Ci0gICAgICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJl
cldpdGhEb3VibGU6dHJhbnNmb3JtT3AgPyBkZWcycmFkKHN0YXRpY19jYXN0PGNvbnN0IFJvdGF0
ZVRyYW5zZm9ybU9wZXJhdGlvbio+KHRyYW5zZm9ybU9wKS0+YW5nbGUoKSkgOiAwXTsKLSAgICAg
ICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlNDQUxFX1g6Ci0gICAgICAgICAgICByZXR1cm4g
W05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6dHJhbnNmb3JtT3AgPyBzdGF0aWNfY2FzdDxjb25z
dCBTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbio+KHRyYW5zZm9ybU9wKS0+eCgpIDogMV07Ci0gICAg
ICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpTQ0FMRV9ZOgotICAgICAgICAgICAgcmV0dXJu
IFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOnRyYW5zZm9ybU9wID8gc3RhdGljX2Nhc3Q8Y29u
c3QgU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24qPih0cmFuc2Zvcm1PcCktPnkoKSA6IDFdOwotICAg
ICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0NBTEVfWjoKLSAgICAgICAgICAgIHJldHVy
biBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTp0cmFuc2Zvcm1PcCA/IHN0YXRpY19jYXN0PGNv
bnN0IFNjYWxlVHJhbnNmb3JtT3BlcmF0aW9uKj4odHJhbnNmb3JtT3ApLT56KCkgOiAxXTsKLSAg
ICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURV9YOgotICAgICAgICAgICAg
cmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOnRyYW5zZm9ybU9wID8gc3RhdGljX2Nh
c3Q8Y29uc3QgVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uKj4odHJhbnNmb3JtT3ApLT54KHNp
emUpIDogMF07Ci0gICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfWToK
LSAgICAgICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTp0cmFuc2Zvcm1P
cCA/IHN0YXRpY19jYXN0PGNvbnN0IFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbio+KHRyYW5z
Zm9ybU9wKS0+eShzaXplKSA6IDBdOwotICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6
VFJBTlNMQVRFX1o6Ci0gICAgICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhEb3Vi
bGU6dHJhbnNmb3JtT3AgPyBzdGF0aWNfY2FzdDxjb25zdCBUcmFuc2xhdGVUcmFuc2Zvcm1PcGVy
YXRpb24qPih0cmFuc2Zvcm1PcCktPnooc2l6ZSkgOiAwXTsKLSAgICAgICAgY2FzZSBUcmFuc2Zv
cm1PcGVyYXRpb246OlNDQUxFOgotICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0NB
TEVfM0Q6Ci0gICAgICAgICAgICByZXR1cm4gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czoKLSAg
ICAgICAgICAgICAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOnRyYW5zZm9y
bU9wID8gc3RhdGljX2Nhc3Q8Y29uc3QgU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24qPih0cmFuc2Zv
cm1PcCktPngoKSA6IDFdLAotICAgICAgICAgICAgICAgICAgICAgICAgW05TTnVtYmVyIG51bWJl
cldpdGhEb3VibGU6dHJhbnNmb3JtT3AgPyBzdGF0aWNfY2FzdDxjb25zdCBTY2FsZVRyYW5zZm9y
bU9wZXJhdGlvbio+KHRyYW5zZm9ybU9wKS0+eSgpIDogMV0sCi0gICAgICAgICAgICAgICAgICAg
ICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTp0cmFuc2Zvcm1PcCA/IHN0YXRpY19jYXN0
PGNvbnN0IFNjYWxlVHJhbnNmb3JtT3BlcmF0aW9uKj4odHJhbnNmb3JtT3ApLT56KCkgOiAxXSwK
LSAgICAgICAgICAgICAgICAgICAgICAgIG5pbF07Ci0gICAgICAgIGNhc2UgVHJhbnNmb3JtT3Bl
cmF0aW9uOjpUUkFOU0xBVEU6Ci0gICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFO
U0xBVEVfM0Q6Ci0gICAgICAgICAgICByZXR1cm4gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czoK
LSAgICAgICAgICAgICAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOnRyYW5z
Zm9ybU9wID8gc3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uKj4o
dHJhbnNmb3JtT3ApLT54KHNpemUpIDogMF0sCi0gICAgICAgICAgICAgICAgICAgICAgICBbTlNO
dW1iZXIgbnVtYmVyV2l0aERvdWJsZTp0cmFuc2Zvcm1PcCA/IHN0YXRpY19jYXN0PGNvbnN0IFRy
YW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbio+KHRyYW5zZm9ybU9wKS0+eShzaXplKSA6IDBdLAot
ICAgICAgICAgICAgICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6dHJhbnNm
b3JtT3AgPyBzdGF0aWNfY2FzdDxjb25zdCBUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24qPih0
cmFuc2Zvcm1PcCktPnooc2l6ZSkgOiAwXSwKLSAgICAgICAgICAgICAgICAgICAgICAgIG5pbF07
Ci0gICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpTS0VXX1g6Ci0gICAgICAgIGNhc2Ug
VHJhbnNmb3JtT3BlcmF0aW9uOjpTS0VXX1k6Ci0gICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0
aW9uOjpTS0VXOgotICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6TUFUUklYOgotICAg
ICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRFXzNEOgotICAgICAgICBjYXNlIFRy
YW5zZm9ybU9wZXJhdGlvbjo6TUFUUklYXzNEOgotICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJh
dGlvbjo6UEVSU1BFQ1RJVkU6Ci0gICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpJREVO
VElUWToKLSAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246Ok5PTkU6IHsKLSAgICAgICAg
ICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybTsKLSAgICAgICAgICAgIGlmICh0cmFu
c2Zvcm1PcCkKLSAgICAgICAgICAgICAgICB0cmFuc2Zvcm1PcC0+YXBwbHkodHJhbnNmb3JtLCBz
aXplKTsKLSAgICAgICAgICAgIENBVHJhbnNmb3JtM0QgY2FUcmFuc2Zvcm07Ci0gICAgICAgICAg
ICBjb3B5VHJhbnNmb3JtKGNhVHJhbnNmb3JtLCB0cmFuc2Zvcm0pOwotICAgICAgICAgICAgcmV0
dXJuIFtOU1ZhbHVlIHZhbHVlV2l0aENBVHJhbnNmb3JtM0Q6Y2FUcmFuc2Zvcm1dOwotICAgICAg
ICB9Ci0gICAgfQotICAgIAotICAgIHJldHVybiAwOwotfQotCi0jaWYgSEFWRV9NT0RFUk5fUVVB
UlRaQ09SRQotc3RhdGljIE5TU3RyaW5nICpnZXRWYWx1ZUZ1bmN0aW9uTmFtZUZvclRyYW5zZm9y
bU9wZXJhdGlvbihUcmFuc2Zvcm1PcGVyYXRpb246Ok9wZXJhdGlvblR5cGUgdHJhbnNmb3JtVHlw
ZSkKLXsKLSAgICAvLyBVc2UgbGl0ZXJhbCBzdHJpbmdzIHRvIGF2b2lkIGxpbmstdGltZSBkZXBl
bmRlbmN5IG9uIHRob3NlIHN5bWJvbHMuCi0gICAgc3dpdGNoICh0cmFuc2Zvcm1UeXBlKSB7Ci0g
ICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpST1RBVEVfWDoKLSAgICAgICAgICAgIHJl
dHVybiBAInJvdGF0ZVgiOyAvLyBrQ0FWYWx1ZUZ1bmN0aW9uUm90YXRlWDsKLSAgICAgICAgY2Fz
ZSBUcmFuc2Zvcm1PcGVyYXRpb246OlJPVEFURV9ZOgotICAgICAgICAgICAgcmV0dXJuIEAicm90
YXRlWSI7IC8vIGtDQVZhbHVlRnVuY3Rpb25Sb3RhdGVZOwotICAgICAgICBjYXNlIFRyYW5zZm9y
bU9wZXJhdGlvbjo6Uk9UQVRFOgotICAgICAgICAgICAgcmV0dXJuIEAicm90YXRlWiI7IC8vIGtD
QVZhbHVlRnVuY3Rpb25Sb3RhdGVaOwotICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6
U0NBTEVfWDoKLSAgICAgICAgICAgIHJldHVybiBAInNjYWxlWCI7IC8vIGtDQVZhbHVlRnVuY3Rp
b25TY2FsZVg7Ci0gICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpTQ0FMRV9ZOgotICAg
ICAgICAgICAgcmV0dXJuIEAic2NhbGVZIjsgLy8ga0NBVmFsdWVGdW5jdGlvblNjYWxlWTsKLSAg
ICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlNDQUxFX1o6Ci0gICAgICAgICAgICByZXR1
cm4gQCJzY2FsZVoiOyAvLyBrQ0FWYWx1ZUZ1bmN0aW9uU2NhbGVaOwotICAgICAgICBjYXNlIFRy
YW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFX1g6Ci0gICAgICAgICAgICByZXR1cm4gQCJ0cmFu
c2xhdGVYIjsgLy8ga0NBVmFsdWVGdW5jdGlvblRyYW5zbGF0ZVg7Ci0gICAgICAgIGNhc2UgVHJh
bnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfWToKLSAgICAgICAgICAgIHJldHVybiBAInRyYW5z
bGF0ZVkiOyAvLyBrQ0FWYWx1ZUZ1bmN0aW9uVHJhbnNsYXRlWTsKLSAgICAgICAgY2FzZSBUcmFu
c2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURV9aOgotICAgICAgICAgICAgcmV0dXJuIEAidHJhbnNs
YXRlWiI7IC8vIGtDQVZhbHVlRnVuY3Rpb25UcmFuc2xhdGVaOwotICAgICAgICBjYXNlIFRyYW5z
Zm9ybU9wZXJhdGlvbjo6U0NBTEU6Ci0gICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpT
Q0FMRV8zRDoKLSAgICAgICAgICAgIHJldHVybiBAInNjYWxlIjsgLy8ga0NBVmFsdWVGdW5jdGlv
blNjYWxlOwotICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFOgotICAg
ICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFXzNEOgotICAgICAgICAgICAg
cmV0dXJuIEAidHJhbnNsYXRlIjsgLy8ga0NBVmFsdWVGdW5jdGlvblRyYW5zbGF0ZTsKLSAgICAg
ICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgfQotfQotI2VuZGlmCi0K
LXN0YXRpYyBTdHJpbmcgcHJvcGVydHlJZFRvU3RyaW5nKEFuaW1hdGVkUHJvcGVydHlJRCBwcm9w
ZXJ0eSkKLXsKLSAgICBzd2l0Y2ggKHByb3BlcnR5KSB7Ci0gICAgICAgIGNhc2UgQW5pbWF0ZWRQ
cm9wZXJ0eVdlYmtpdFRyYW5zZm9ybToKLSAgICAgICAgICAgIHJldHVybiAidHJhbnNmb3JtIjsK
LSAgICAgICAgY2FzZSBBbmltYXRlZFByb3BlcnR5T3BhY2l0eToKLSAgICAgICAgICAgIHJldHVy
biAib3BhY2l0eSI7Ci0gICAgICAgIGNhc2UgQW5pbWF0ZWRQcm9wZXJ0eUJhY2tncm91bmRDb2xv
cjoKLSAgICAgICAgICAgIHJldHVybiAiYmFja2dyb3VuZENvbG9yIjsKLSAgICAgICAgY2FzZSBB
bmltYXRlZFByb3BlcnR5SW52YWxpZDoKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gIiI7Ci19Ci0K
LXN0YXRpYyBTdHJpbmcgYW5pbWF0aW9uSWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGFuaW1hdGlv
bk5hbWUsIEFuaW1hdGVkUHJvcGVydHlJRCBwcm9wZXJ0eSwgaW50IGluZGV4KQotewotICAgIHJl
dHVybiBtYWtlU3RyaW5nKGFuaW1hdGlvbk5hbWUsICdfJywgU3RyaW5nOjpudW1iZXIocHJvcGVy
dHkpLCAnXycsIFN0cmluZzo6bnVtYmVyKGluZGV4KSk7Ci19Ci0KLXN0YXRpYyBDQU1lZGlhVGlt
aW5nRnVuY3Rpb24qIGdldENBTWVkaWFUaW1pbmdGdW5jdGlvbihjb25zdCBUaW1pbmdGdW5jdGlv
biogdGltaW5nRnVuY3Rpb24pCi17Ci0gICAgLy8gQnkgdGhpcyBwb2ludCwgdGltaW5nIGZ1bmN0
aW9ucyBjYW4gb25seSBiZSBsaW5lYXIgb3IgY3ViaWMsIG5vdCBzdGVwcy4KLSAgICBBU1NFUlQo
IXRpbWluZ0Z1bmN0aW9uLT5pc1N0ZXBzVGltaW5nRnVuY3Rpb24oKSk7Ci0gICAgaWYgKHRpbWlu
Z0Z1bmN0aW9uLT5pc0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24oKSkgewotICAgICAgICBjb25z
dCBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKiBjdGYgPSBzdGF0aWNfY2FzdDxjb25zdCBDdWJp
Y0JlemllclRpbWluZ0Z1bmN0aW9uKj4odGltaW5nRnVuY3Rpb24pOwotICAgICAgICByZXR1cm4g
W0NBTWVkaWFUaW1pbmdGdW5jdGlvbiBmdW5jdGlvbldpdGhDb250cm9sUG9pbnRzOnN0YXRpY19j
YXN0PGZsb2F0PihjdGYtPngxKCkpIDpzdGF0aWNfY2FzdDxmbG9hdD4oY3RmLT55MSgpKQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgOnN0YXRpY19jYXN0PGZsb2F0PihjdGYtPngyKCkpIDpzdGF0aWNfY2FzdDxmbG9hdD4oY3Rm
LT55MigpKV07Ci0gICAgfSBlbHNlCi0gICAgICAgIHJldHVybiBbQ0FNZWRpYVRpbWluZ0Z1bmN0
aW9uIGZ1bmN0aW9uV2l0aE5hbWU6QCJsaW5lYXIiXTsKLX0KLQotc3RhdGljIHZvaWQgc2V0TGF5
ZXJCb3JkZXJDb2xvcihQbGF0Zm9ybUxheWVyKiBsYXllciwgY29uc3QgQ29sb3ImIGNvbG9yKQot
ewotICAgIFtsYXllciBzZXRCb3JkZXJDb2xvcjpjYWNoZWRDR0NvbG9yKGNvbG9yLCBDb2xvclNw
YWNlRGV2aWNlUkdCKV07Ci19Ci0KLXN0YXRpYyB2b2lkIGNsZWFyQm9yZGVyQ29sb3IoUGxhdGZv
cm1MYXllciogbGF5ZXIpCi17Ci0gICAgW2xheWVyIHNldEJvcmRlckNvbG9yOm5pbF07Ci19Ci0K
LXN0YXRpYyB2b2lkIHNldExheWVyQmFja2dyb3VuZENvbG9yKFBsYXRmb3JtTGF5ZXIqIGxheWVy
LCBjb25zdCBDb2xvciYgY29sb3IpCi17Ci0gICAgW2xheWVyIHNldEJhY2tncm91bmRDb2xvcjpj
YWNoZWRDR0NvbG9yKGNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKV07Ci19Ci0KLXN0YXRpYyB2
b2lkIGNsZWFyTGF5ZXJCYWNrZ3JvdW5kQ29sb3IoUGxhdGZvcm1MYXllciogbGF5ZXIpCi17Ci0g
ICAgW2xheWVyIHNldEJhY2tncm91bmRDb2xvcjowXTsKLX0KLQotc3RhdGljIHZvaWQgc2FmZVNl
dFN1YmxheWVycyhDQUxheWVyKiBsYXllciwgTlNBcnJheSogc3VibGF5ZXJzKQotewotICAgIC8v
IFdvcmthcm91bmQgZm9yIDxyZGFyOi8vcHJvYmxlbS83MzkwNzE2PjogLVtDQUxheWVyIHNldFN1
YmxheWVyczpdIGNyYXNoZXMgaWYgc3VibGF5ZXJzIGlzIGFuIGVtcHR5IGFycmF5LCBvciBuaWws
IHVuZGVyIEdDLgotICAgIGlmIChvYmpjX2NvbGxlY3RpbmdFbmFibGVkKCkgJiYgIVtzdWJsYXll
cnMgY291bnRdKSB7Ci0gICAgICAgIHdoaWxlIChbW2xheWVyIHN1YmxheWVyc10gY291bnRdKQot
ICAgICAgICAgICAgW1tbbGF5ZXIgc3VibGF5ZXJzXSBvYmplY3RBdEluZGV4OjBdIHJlbW92ZUZy
b21TdXBlcmxheWVyXTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBbbGF5ZXIg
c2V0U3VibGF5ZXJzOnN1YmxheWVyc107Ci19Ci0KLXN0YXRpYyBib29sIGNhVmFsdWVGdW5jdGlv
blN1cHBvcnRlZCgpCi17Ci0gICAgc3RhdGljIGJvb2wgc0hhdmVWYWx1ZUZ1bmN0aW9uID0gW0NB
UHJvcGVydHlBbmltYXRpb24gaW5zdGFuY2VzUmVzcG9uZFRvU2VsZWN0b3I6QHNlbGVjdG9yKHNl
dFZhbHVlRnVuY3Rpb246KV07Ci0gICAgcmV0dXJuIHNIYXZlVmFsdWVGdW5jdGlvbjsKLX0KLQot
c3RhdGljIGJvb2wgZm9yY2VTb2Z0d2FyZUFuaW1hdGlvbigpCi17Ci0gICAgc3RhdGljIGJvb2wg
Zm9yY2VTb2Z0d2FyZUFuaW1hdGlvbiA9IFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVm
YXVsdHNdIGJvb2xGb3JLZXk6QCJXZWJDb3JlRm9yY2VTb2Z0d2FyZUFuaW1hdGlvbiJdOwotICAg
IHJldHVybiBmb3JjZVNvZnR3YXJlQW5pbWF0aW9uOwotfQotCi1zdGF0aWMgTlNEaWN0aW9uYXJ5
KiBudWxsQWN0aW9uc0RpY3Rpb25hcnkoKQotewotICAgIE5TTnVsbCogbnVsbFZhbHVlID0gW05T
TnVsbCBudWxsXTsKLSAgICBOU0RpY3Rpb25hcnkqIGFjdGlvbnMgPSBbTlNEaWN0aW9uYXJ5IGRp
Y3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG51bGxWYWx1ZSwgQCJhbmNob3JQb2ludCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG51bGxWYWx1ZSwgQCJib3VuZHMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxs
VmFsdWUsIEAiY29udGVudHMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsVmFs
dWUsIEAiY29udGVudHNSZWN0IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbFZh
bHVlLCBAIm9wYWNpdHkiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsVmFsdWUs
IEAicG9zaXRpb24iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsVmFsdWUsIEAi
c2hhZG93Q29sb3IiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsVmFsdWUsIEAi
c3VibGF5ZXJUcmFuc2Zvcm0iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsVmFs
dWUsIEAic3VibGF5ZXJzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbFZhbHVl
LCBAInRyYW5zZm9ybSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxWYWx1ZSwg
QCJ6UG9zaXRpb24iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWxdOwotICAgIHJl
dHVybiBhY3Rpb25zOwotfQotCi1zdGF0aWMgYm9vbCBhbmltYXRpb25IYXNTdGVwc1RpbWluZ0Z1
bmN0aW9uKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3QsIGNvbnN0IEFuaW1hdGlv
biogYW5pbSkKLXsKLSAgICBpZiAoYW5pbS0+dGltaW5nRnVuY3Rpb24oKS0+aXNTdGVwc1RpbWlu
Z0Z1bmN0aW9uKCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIAotICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCB2YWx1ZUxpc3Quc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgY29uc3QgVGlt
aW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0aW9uID0gdmFsdWVMaXN0LmF0KGkpLT50aW1pbmdGdW5j
dGlvbigpOwotICAgICAgICBpZiAodGltaW5nRnVuY3Rpb24gJiYgdGltaW5nRnVuY3Rpb24tPmlz
U3RlcHNUaW1pbmdGdW5jdGlvbigpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQot
Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1QYXNzT3duUHRyPEdyYXBoaWNzTGF5ZXI+IEdyYXBo
aWNzTGF5ZXI6OmNyZWF0ZShHcmFwaGljc0xheWVyQ2xpZW50KiBjbGllbnQpCi17Ci0gICAgcmV0
dXJuIG5ldyBHcmFwaGljc0xheWVyTWFjKGNsaWVudCk7Ci19Ci0KLUdyYXBoaWNzTGF5ZXJNYWM6
OkdyYXBoaWNzTGF5ZXJNYWMoR3JhcGhpY3NMYXllckNsaWVudCogY2xpZW50KQotICAgIDogR3Jh
cGhpY3NMYXllcihjbGllbnQpCi0gICAgLCBtX2NvbnRlbnRzTGF5ZXJQdXJwb3NlKE5vQ29udGVu
dHNMYXllcikKLSAgICAsIG1fY29udGVudHNMYXllckhhc0JhY2tncm91bmRDb2xvcihmYWxzZSkK
LSAgICAsIG1fdW5jb21taXR0ZWRDaGFuZ2VzKE5vQ2hhbmdlKQotewotICAgIEJFR0lOX0JMT0NL
X09CSkNfRVhDRVBUSU9OUwotICAgIG1fbGF5ZXIuYWRvcHROUyhbW1dlYkxheWVyIGFsbG9jXSBp
bml0XSk7Ci0gICAgW21fbGF5ZXIuZ2V0KCkgc2V0TGF5ZXJPd25lcjp0aGlzXTsKLQotI2lmICFI
QVZFX01PREVSTl9RVUFSVFpDT1JFCi0gICAgc2V0Q29udGVudHNPcmllbnRhdGlvbihkZWZhdWx0
Q29udGVudHNPcmllbnRhdGlvbigpKTsKLSNlbmRpZgotCi0gICAgdXBkYXRlRGVidWdJbmRpY2F0
b3JzKCk7Ci0KLSAgICBtX2FuaW1hdGlvbkRlbGVnYXRlLmFkb3B0TlMoW1tXZWJBbmltYXRpb25E
ZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwotICAgIFttX2FuaW1hdGlvbkRlbGVnYXRlLmdldCgpIHNl
dExheWVyOnRoaXNdOwotICAgIAotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLX0KLQot
R3JhcGhpY3NMYXllck1hYzo6fkdyYXBoaWNzTGF5ZXJNYWMoKQotewotICAgIC8vIFdlIHJlbGVh
c2Ugb3VyIHJlZmVyZW5jZXMgdG8gdGhlIENBTGF5ZXJzIGhlcmUsIGJ1dCBkbyBub3QgYWN0aXZl
bHkgdW5wYXJlbnQgdGhlbSwKLSAgICAvLyBzaW5jZSB0aGF0IHdpbGwgY2F1c2UgYSBjb21taXQg
YW5kIGJyZWFrIG91ciBiYXRjaGVkIGNvbW1pdCBtb2RlbC4gVGhlIGxheWVycyB3aWxsCi0gICAg
Ly8gZ2V0IHJlbGVhc2VkIHdoZW4gdGhlIHJvb3Rtb3N0IG1vZGlmaWVkIEdyYXBoaWNzTGF5ZXJN
YWMgcmVidWlsZHMgaXRzIGNoaWxkIGxheWVycy4KLSAgICAKLSAgICBCRUdJTl9CTE9DS19PQkpD
X0VYQ0VQVElPTlMKLQotICAgIC8vIENsZWFuIHVwIHRoZSBXSyBsYXllci4KLSAgICBpZiAobV9s
YXllcikgewotICAgICAgICBXZWJMYXllciogbGF5ZXIgPSBtX2xheWVyLmdldCgpOwotICAgICAg
ICBbbGF5ZXIgc2V0TGF5ZXJPd25lcjpuaWxdOwotICAgIH0KLSAgICAKLSAgICBpZiAobV9jb250
ZW50c0xheWVyKSB7Ci0gICAgICAgIGlmIChbbV9jb250ZW50c0xheWVyLmdldCgpIHJlc3BvbmRz
VG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2V0TGF5ZXJPd25lcjopXSkKLSAgICAgICAgICAgIFsoaWQp
bV9jb250ZW50c0xheWVyLmdldCgpIHNldExheWVyT3duZXI6bmlsXTsKLSAgICB9Ci0gICAgCi0g
ICAgLy8gYW5pbWF0aW9uRGlkU3RhcnQ6IGNhbiBmaXJlIGFmdGVyIHRoaXMsIHNvIHdlIG5lZWQg
dG8gY2xlYXIgb3V0IHRoZSBsYXllciBvbiB0aGUgZGVsZWdhdGUuCi0gICAgW21fYW5pbWF0aW9u
RGVsZWdhdGUuZ2V0KCkgc2V0TGF5ZXI6MF07Ci0KLSAgICAvLyBSZWxlYXNlIHRoZSBjbG9uZSBs
YXllcnMgaW5zaWRlIHRoZSBleGNlcHRpb24taGFuZGxpbmcgYmxvY2suCi0gICAgcmVtb3ZlQ2xv
bmVMYXllcnMoKTsKLSAgICAKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi19Ci0KLXZv
aWQgR3JhcGhpY3NMYXllck1hYzo6c2V0TmFtZShjb25zdCBTdHJpbmcmIG5hbWUpCi17Ci0gICAg
U3RyaW5nIGxvbmdOYW1lID0gU3RyaW5nOjpmb3JtYXQoIkNBTGF5ZXIoJXApIEdyYXBoaWNzTGF5
ZXIoJXApICIsIG1fbGF5ZXIuZ2V0KCksIHRoaXMpICsgbmFtZTsKLSAgICBHcmFwaGljc0xheWVy
OjpzZXROYW1lKGxvbmdOYW1lKTsKLSAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoTmFtZUNo
YW5nZWQpOwotfQotCi1OYXRpdmVMYXllciBHcmFwaGljc0xheWVyTWFjOjpuYXRpdmVMYXllcigp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fbGF5ZXIuZ2V0KCk7Ci19Ci0KLWJvb2wgR3JhcGhpY3NM
YXllck1hYzo6c2V0Q2hpbGRyZW4oY29uc3QgVmVjdG9yPEdyYXBoaWNzTGF5ZXIqPiYgY2hpbGRy
ZW4pCi17Ci0gICAgYm9vbCBjaGlsZHJlbkNoYW5nZWQgPSBHcmFwaGljc0xheWVyOjpzZXRDaGls
ZHJlbihjaGlsZHJlbik7Ci0gICAgaWYgKGNoaWxkcmVuQ2hhbmdlZCkKLSAgICAgICAgbm90ZVN1
YmxheWVyc0NoYW5nZWQoKTsKLSAgICAKLSAgICByZXR1cm4gY2hpbGRyZW5DaGFuZ2VkOwotfQot
Ci12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OmFkZENoaWxkKEdyYXBoaWNzTGF5ZXIqIGNoaWxkTGF5
ZXIpCi17Ci0gICAgR3JhcGhpY3NMYXllcjo6YWRkQ2hpbGQoY2hpbGRMYXllcik7Ci0gICAgbm90
ZVN1YmxheWVyc0NoYW5nZWQoKTsKLX0KLQotdm9pZCBHcmFwaGljc0xheWVyTWFjOjphZGRDaGls
ZEF0SW5kZXgoR3JhcGhpY3NMYXllciogY2hpbGRMYXllciwgaW50IGluZGV4KQotewotICAgIEdy
YXBoaWNzTGF5ZXI6OmFkZENoaWxkQXRJbmRleChjaGlsZExheWVyLCBpbmRleCk7Ci0gICAgbm90
ZVN1YmxheWVyc0NoYW5nZWQoKTsKLX0KLQotdm9pZCBHcmFwaGljc0xheWVyTWFjOjphZGRDaGls
ZEJlbG93KEdyYXBoaWNzTGF5ZXIqIGNoaWxkTGF5ZXIsIEdyYXBoaWNzTGF5ZXIqIHNpYmxpbmcp
Ci17Ci0gICAgR3JhcGhpY3NMYXllcjo6YWRkQ2hpbGRCZWxvdyhjaGlsZExheWVyLCBzaWJsaW5n
KTsKLSAgICBub3RlU3VibGF5ZXJzQ2hhbmdlZCgpOwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJN
YWM6OmFkZENoaWxkQWJvdmUoR3JhcGhpY3NMYXllciogY2hpbGRMYXllciwgR3JhcGhpY3NMYXll
ciogc2libGluZykKLXsKLSAgICBHcmFwaGljc0xheWVyOjphZGRDaGlsZEFib3ZlKGNoaWxkTGF5
ZXIsIHNpYmxpbmcpOwotICAgIG5vdGVTdWJsYXllcnNDaGFuZ2VkKCk7Ci19Ci0KLWJvb2wgR3Jh
cGhpY3NMYXllck1hYzo6cmVwbGFjZUNoaWxkKEdyYXBoaWNzTGF5ZXIqIG9sZENoaWxkLCBHcmFw
aGljc0xheWVyKiBuZXdDaGlsZCkKLXsKLSAgICBpZiAoR3JhcGhpY3NMYXllcjo6cmVwbGFjZUNo
aWxkKG9sZENoaWxkLCBuZXdDaGlsZCkpIHsKLSAgICAgICAgbm90ZVN1YmxheWVyc0NoYW5nZWQo
KTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQot
dm9pZCBHcmFwaGljc0xheWVyTWFjOjpyZW1vdmVGcm9tUGFyZW50KCkKLXsKLSAgICBpZiAobV9w
YXJlbnQpCi0gICAgICAgIHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXJNYWMqPihtX3BhcmVudCkt
Pm5vdGVTdWJsYXllcnNDaGFuZ2VkKCk7Ci0gICAgR3JhcGhpY3NMYXllcjo6cmVtb3ZlRnJvbVBh
cmVudCgpOwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnNldE1hc2tMYXllcihHcmFwaGlj
c0xheWVyKiBsYXllcikKLXsKLSAgICBpZiAobGF5ZXIgPT0gbV9tYXNrTGF5ZXIpCi0gICAgICAg
IHJldHVybjsKLQotICAgIEdyYXBoaWNzTGF5ZXI6OnNldE1hc2tMYXllcihsYXllcik7Ci0gICAg
bm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKE1hc2tMYXllckNoYW5nZWQpOwotCi0gICAgcHJvcGFn
YXRlTGF5ZXJDaGFuZ2VUb1JlcGxpY2FzKCk7Ci0gICAgCi0gICAgaWYgKG1fcmVwbGljYXRlZExh
eWVyKQotICAgICAgICBzdGF0aWNfY2FzdDxHcmFwaGljc0xheWVyTWFjKj4obV9yZXBsaWNhdGVk
TGF5ZXIpLT5wcm9wYWdhdGVMYXllckNoYW5nZVRvUmVwbGljYXMoKTsKLX0KLQotdm9pZCBHcmFw
aGljc0xheWVyTWFjOjpzZXRSZXBsaWNhdGVkTGF5ZXIoR3JhcGhpY3NMYXllciogbGF5ZXIpCi17
Ci0gICAgaWYgKGxheWVyID09IG1fcmVwbGljYXRlZExheWVyKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBHcmFwaGljc0xheWVyOjpzZXRSZXBsaWNhdGVkTGF5ZXIobGF5ZXIpOwotICAgIG5vdGVM
YXllclByb3BlcnR5Q2hhbmdlZChSZXBsaWNhdGVkTGF5ZXJDaGFuZ2VkKTsKLX0KLQotdm9pZCBH
cmFwaGljc0xheWVyTWFjOjpzZXRSZXBsaWNhdGVkQnlMYXllcihHcmFwaGljc0xheWVyKiBsYXll
cikKLXsKLSAgICBpZiAobGF5ZXIgPT0gbV9yZXBsaWNhTGF5ZXIpCi0gICAgICAgIHJldHVybjsK
LQotICAgIEdyYXBoaWNzTGF5ZXI6OnNldFJlcGxpY2F0ZWRCeUxheWVyKGxheWVyKTsKLSAgICBu
b3RlU3VibGF5ZXJzQ2hhbmdlZCgpOwotICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChSZXBs
aWNhdGVkTGF5ZXJDaGFuZ2VkKTsKLX0KLQotdm9pZCBHcmFwaGljc0xheWVyTWFjOjpzZXRQb3Np
dGlvbihjb25zdCBGbG9hdFBvaW50JiBwb2ludCkKLXsKLSAgICBpZiAocG9pbnQgPT0gbV9wb3Np
dGlvbikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgR3JhcGhpY3NMYXllcjo6c2V0UG9zaXRpb24o
cG9pbnQpOwotICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChQb3NpdGlvbkNoYW5nZWQpOwot
fQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnNldEFuY2hvclBvaW50KGNvbnN0IEZsb2F0UG9p
bnQzRCYgcG9pbnQpCi17Ci0gICAgaWYgKHBvaW50ID09IG1fYW5jaG9yUG9pbnQpCi0gICAgICAg
IHJldHVybjsKLQotICAgIEdyYXBoaWNzTGF5ZXI6OnNldEFuY2hvclBvaW50KHBvaW50KTsKLSAg
ICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoQW5jaG9yUG9pbnRDaGFuZ2VkKTsKLX0KLQotdm9p
ZCBHcmFwaGljc0xheWVyTWFjOjpzZXRTaXplKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKLXsKLSAg
ICBpZiAoc2l6ZSA9PSBtX3NpemUpCi0gICAgICAgIHJldHVybjsKLQotICAgIEdyYXBoaWNzTGF5
ZXI6OnNldFNpemUoc2l6ZSk7Ci0gICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKFNpemVDaGFu
Z2VkKTsKLX0KLQotdm9pZCBHcmFwaGljc0xheWVyTWFjOjpzZXRUcmFuc2Zvcm0oY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXgmIHQpCi17Ci0gICAgaWYgKHQgPT0gbV90cmFuc2Zvcm0pCi0gICAg
ICAgIHJldHVybjsKLQotICAgIEdyYXBoaWNzTGF5ZXI6OnNldFRyYW5zZm9ybSh0KTsKLSAgICBu
b3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoVHJhbnNmb3JtQ2hhbmdlZCk7Ci19Ci0KLXZvaWQgR3Jh
cGhpY3NMYXllck1hYzo6c2V0Q2hpbGRyZW5UcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXgmIHQpCi17Ci0gICAgaWYgKHQgPT0gbV9jaGlsZHJlblRyYW5zZm9ybSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgR3JhcGhpY3NMYXllcjo6c2V0Q2hpbGRyZW5UcmFuc2Zvcm0odCk7Ci0g
ICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKENoaWxkcmVuVHJhbnNmb3JtQ2hhbmdlZCk7Ci19
Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6bW92ZU9yQ29weUxheWVyQW5pbWF0aW9uKE1vdmVP
ckNvcHkgb3BlcmF0aW9uLCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbklkZW50aWZpZXIsIENBTGF5
ZXIgKmZyb21MYXllciwgQ0FMYXllciAqdG9MYXllcikKLXsKLSAgICBOU1N0cmluZyAqYW5pbWF0
aW9uSUQgPSBhbmltYXRpb25JZGVudGlmaWVyOwotICAgIENBQW5pbWF0aW9uICphbmltID0gW2Zy
b21MYXllciBhbmltYXRpb25Gb3JLZXk6YW5pbWF0aW9uSURdOwotICAgIGlmICghYW5pbSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgc3dpdGNoIChvcGVyYXRpb24pIHsKLSAgICAgICAgY2FzZSBN
b3ZlOgotICAgICAgICAgICAgW2FuaW0gcmV0YWluXTsKLSAgICAgICAgICAgIFtmcm9tTGF5ZXIg
cmVtb3ZlQW5pbWF0aW9uRm9yS2V5OmFuaW1hdGlvbklEXTsKLSAgICAgICAgICAgIFt0b0xheWVy
IGFkZEFuaW1hdGlvbjphbmltIGZvcktleTphbmltYXRpb25JRF07Ci0gICAgICAgICAgICBbYW5p
bSByZWxlYXNlXTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgQ29weToKLSAg
ICAgICAgICAgIFt0b0xheWVyIGFkZEFuaW1hdGlvbjphbmltIGZvcktleTphbmltYXRpb25JRF07
Ci0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6
bW92ZU9yQ29weUFuaW1hdGlvbnNGb3JQcm9wZXJ0eShNb3ZlT3JDb3B5IG9wZXJhdGlvbiwgQW5p
bWF0ZWRQcm9wZXJ0eUlEIHByb3BlcnR5LCBDQUxheWVyICpmcm9tTGF5ZXIsIENBTGF5ZXIgKnRv
TGF5ZXIpCi17Ci0gICAgLy8gTG9vayBmb3IgcnVubmluZyBhbmltYXRpb25zIGFmZmVjdGluZyB0
aGlzIHByb3BlcnR5LgotICAgIEFuaW1hdGlvbnNNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1f
cnVubmluZ0FuaW1hdGlvbnMuZW5kKCk7Ci0gICAgZm9yIChBbmltYXRpb25zTWFwOjpjb25zdF9p
dGVyYXRvciBpdCA9IG1fcnVubmluZ0FuaW1hdGlvbnMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0
KSB7Ci0gICAgICAgIGNvbnN0IFZlY3RvcjxMYXllclByb3BlcnR5QW5pbWF0aW9uPiYgcHJvcGVy
dHlBbmltYXRpb25zID0gaXQtPnNlY29uZDsKLSAgICAgICAgc2l6ZV90IG51bUFuaW1hdGlvbnMg
PSBwcm9wZXJ0eUFuaW1hdGlvbnMuc2l6ZSgpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IG51bUFuaW1hdGlvbnM7ICsraSkgewotICAgICAgICAgICAgY29uc3QgTGF5ZXJQcm9wZXJ0
eUFuaW1hdGlvbiYgY3VyckFuaW1hdGlvbiA9IHByb3BlcnR5QW5pbWF0aW9uc1tpXTsKLSAgICAg
ICAgICAgIGlmIChjdXJyQW5pbWF0aW9uLm1fcHJvcGVydHkgPT0gcHJvcGVydHkpCi0gICAgICAg
ICAgICAgICAgbW92ZU9yQ29weUxheWVyQW5pbWF0aW9uKG9wZXJhdGlvbiwgYW5pbWF0aW9uSWRl
bnRpZmllcihjdXJyQW5pbWF0aW9uLm1fbmFtZSwgY3VyckFuaW1hdGlvbi5tX3Byb3BlcnR5LCBj
dXJyQW5pbWF0aW9uLm1faW5kZXgpLCBmcm9tTGF5ZXIsIHRvTGF5ZXIpOwotICAgICAgICB9Ci0g
ICAgfQotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnNldFByZXNlcnZlczNEKGJvb2wgcHJl
c2VydmVzM0QpCi17Ci0gICAgaWYgKHByZXNlcnZlczNEID09IG1fcHJlc2VydmVzM0QpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIEdyYXBoaWNzTGF5ZXI6OnNldFByZXNlcnZlczNEKHByZXNlcnZl
czNEKTsKLSAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoUHJlc2VydmVzM0RDaGFuZ2VkKTsK
LX0KLQotdm9pZCBHcmFwaGljc0xheWVyTWFjOjpzZXRNYXNrc1RvQm91bmRzKGJvb2wgbWFza3NU
b0JvdW5kcykKLXsKLSAgICBpZiAobWFza3NUb0JvdW5kcyA9PSBtX21hc2tzVG9Cb3VuZHMpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIEdyYXBoaWNzTGF5ZXI6OnNldE1hc2tzVG9Cb3VuZHMobWFz
a3NUb0JvdW5kcyk7Ci0gICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKE1hc2tzVG9Cb3VuZHND
aGFuZ2VkKTsKLX0KLQotdm9pZCBHcmFwaGljc0xheWVyTWFjOjpzZXREcmF3c0NvbnRlbnQoYm9v
bCBkcmF3c0NvbnRlbnQpCi17Ci0gICAgaWYgKGRyYXdzQ29udGVudCA9PSBtX2RyYXdzQ29udGVu
dCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgR3JhcGhpY3NMYXllcjo6c2V0RHJhd3NDb250ZW50
KGRyYXdzQ29udGVudCk7Ci0gICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKERyYXdzQ29udGVu
dENoYW5nZWQpOwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnNldEJhY2tncm91bmRDb2xv
cihjb25zdCBDb2xvciYgY29sb3IpCi17Ci0gICAgaWYgKG1fYmFja2dyb3VuZENvbG9yU2V0ICYm
IG1fYmFja2dyb3VuZENvbG9yID09IGNvbG9yKQotICAgICAgICByZXR1cm47Ci0KLSAgICBHcmFw
aGljc0xheWVyOjpzZXRCYWNrZ3JvdW5kQ29sb3IoY29sb3IpOwotCi0gICAgbV9jb250ZW50c0xh
eWVySGFzQmFja2dyb3VuZENvbG9yID0gdHJ1ZTsKLSAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5n
ZWQoQmFja2dyb3VuZENvbG9yQ2hhbmdlZCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6
Y2xlYXJCYWNrZ3JvdW5kQ29sb3IoKQotewotICAgIGlmICghbV9iYWNrZ3JvdW5kQ29sb3JTZXQp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIEdyYXBoaWNzTGF5ZXI6OmNsZWFyQmFja2dyb3VuZENv
bG9yKCk7Ci0gICAgbV9jb250ZW50c0xheWVySGFzQmFja2dyb3VuZENvbG9yID0gZmFsc2U7Ci0g
ICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKEJhY2tncm91bmRDb2xvckNoYW5nZWQpOwotfQot
Ci12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnNldENvbnRlbnRzT3BhcXVlKGJvb2wgb3BhcXVlKQot
ewotICAgIGlmIChtX2NvbnRlbnRzT3BhcXVlID09IG9wYXF1ZSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgR3JhcGhpY3NMYXllcjo6c2V0Q29udGVudHNPcGFxdWUob3BhcXVlKTsKLSAgICBub3Rl
TGF5ZXJQcm9wZXJ0eUNoYW5nZWQoQ29udGVudHNPcGFxdWVDaGFuZ2VkKTsKLX0KLQotdm9pZCBH
cmFwaGljc0xheWVyTWFjOjpzZXRCYWNrZmFjZVZpc2liaWxpdHkoYm9vbCB2aXNpYmxlKQotewot
ICAgIGlmIChtX2JhY2tmYWNlVmlzaWJpbGl0eSA9PSB2aXNpYmxlKQotICAgICAgICByZXR1cm47
Ci0gICAgCi0gICAgR3JhcGhpY3NMYXllcjo6c2V0QmFja2ZhY2VWaXNpYmlsaXR5KHZpc2libGUp
OwotICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChCYWNrZmFjZVZpc2liaWxpdHlDaGFuZ2Vk
KTsKLX0KLQotdm9pZCBHcmFwaGljc0xheWVyTWFjOjpzZXRPcGFjaXR5KGZsb2F0IG9wYWNpdHkp
Ci17Ci0gICAgZmxvYXQgY2xhbXBlZE9wYWNpdHkgPSBtYXgoMC4wZiwgbWluKG9wYWNpdHksIDEu
MGYpKTsKLQotICAgIGlmIChjbGFtcGVkT3BhY2l0eSA9PSBtX29wYWNpdHkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIEdyYXBoaWNzTGF5ZXI6OnNldE9wYWNpdHkoY2xhbXBlZE9wYWNpdHkpOwot
ICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChPcGFjaXR5Q2hhbmdlZCk7Ci19Ci0KLXZvaWQg
R3JhcGhpY3NMYXllck1hYzo6c2V0TmVlZHNEaXNwbGF5KCkKLXsKLSAgICBGbG9hdFJlY3QgaHVn
ZVJlY3QoLW51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4KCkgLyAyLCAtbnVtZXJpY19saW1pdHM8
ZmxvYXQ+OjptYXgoKSAvIDIsCi0gICAgICAgICAgICAgICAgICAgICAgIG51bWVyaWNfbGltaXRz
PGZsb2F0Pjo6bWF4KCksIG51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4KCkpOwotCi0gICAgc2V0
TmVlZHNEaXNwbGF5SW5SZWN0KGh1Z2VSZWN0KTsKLX0KLQotdm9pZCBHcmFwaGljc0xheWVyTWFj
OjpzZXROZWVkc0Rpc3BsYXlJblJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQotewotICAgIGlm
ICghZHJhd3NDb250ZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGNvbnN0IHNpemVfdCBt
YXhEaXJ0eVJlY3RzID0gMzI7Ci0gICAgCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2Rp
cnR5UmVjdHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKG1fZGlydHlSZWN0c1tpXS5jb250
YWlucyhyZWN0KSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgaWYgKG1f
ZGlydHlSZWN0cy5zaXplKCkgPCBtYXhEaXJ0eVJlY3RzKQotICAgICAgICBtX2RpcnR5UmVjdHMu
YXBwZW5kKHJlY3QpOwotICAgIGVsc2UKLSAgICAgICAgbV9kaXJ0eVJlY3RzWzBdLnVuaXRlKHJl
Y3QpOwotCi0gICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKERpcnR5UmVjdHNDaGFuZ2VkKTsK
LX0KLQotdm9pZCBHcmFwaGljc0xheWVyTWFjOjpzZXRDb250ZW50c05lZWRzRGlzcGxheSgpCi17
Ci0gICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKENvbnRlbnRzTmVlZHNEaXNwbGF5KTsKLX0K
LQotdm9pZCBHcmFwaGljc0xheWVyTWFjOjpzZXRDb250ZW50c1JlY3QoY29uc3QgSW50UmVjdCYg
cmVjdCkKLXsKLSAgICBpZiAocmVjdCA9PSBtX2NvbnRlbnRzUmVjdCkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgR3JhcGhpY3NMYXllcjo6c2V0Q29udGVudHNSZWN0KHJlY3QpOwotICAgIG5vdGVM
YXllclByb3BlcnR5Q2hhbmdlZChDb250ZW50c1JlY3RDaGFuZ2VkKTsKLX0KLQotYm9vbCBHcmFw
aGljc0xheWVyTWFjOjphZGRBbmltYXRpb24oY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVl
TGlzdCwgY29uc3QgSW50U2l6ZSYgYm94U2l6ZSwgY29uc3QgQW5pbWF0aW9uKiBhbmltLCBjb25z
dCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGRvdWJsZSB0aW1lT2Zmc2V0KQotewotICAgIEFTU0VS
VCghYW5pbWF0aW9uTmFtZS5pc0VtcHR5KCkpOwotCi0gICAgaWYgKGZvcmNlU29mdHdhcmVBbmlt
YXRpb24oKSB8fCAhYW5pbSB8fCBhbmltLT5pc0VtcHR5T3JaZXJvRHVyYXRpb24oKSB8fCB2YWx1
ZUxpc3Quc2l6ZSgpIDwgMikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0jaWYgIUhBVkVfTU9E
RVJOX1FVQVJUWkNPUkUKLSAgICAvLyBPbGRlciB2ZXJzaW9ucyBvZiBRdWFydHpDb3JlIGRvIG5v
dCBoYW5kbGUgb3BhY2l0eSBpbiB0cmFuc2Zvcm0gbGF5ZXJzIHByb3Blcmx5LCBzbyB3ZSB3aWxs
Ci0gICAgLy8gYWx3YXlzIGRvIHNvZnR3YXJlIGFuaW1hdGlvbiBpbiB0aGF0IGNhc2UuCi0gICAg
aWYgKHZhbHVlTGlzdC5wcm9wZXJ0eSgpID09IEFuaW1hdGVkUHJvcGVydHlPcGFjaXR5KQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYKLQotICAgIC8vIENvcmVBbmltYXRpb24gZG9lcyBu
b3QgaGFuZGxlIHRoZSBzdGVwcygpIHRpbWluZyBmdW5jdGlvbi4gRmFsbCBiYWNrCi0gICAgLy8g
dG8gc29mdHdhcmUgYW5pbWF0aW9uIGluIHRoYXQgY2FzZS4KLSAgICBpZiAoYW5pbWF0aW9uSGFz
U3RlcHNUaW1pbmdGdW5jdGlvbih2YWx1ZUxpc3QsIGFuaW0pKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICBib29sIGNyZWF0ZWRBbmltYXRpb25zID0gZmFsc2U7Ci0gICAgaWYgKHZhbHVl
TGlzdC5wcm9wZXJ0eSgpID09IEFuaW1hdGVkUHJvcGVydHlXZWJraXRUcmFuc2Zvcm0pCi0gICAg
ICAgIGNyZWF0ZWRBbmltYXRpb25zID0gY3JlYXRlVHJhbnNmb3JtQW5pbWF0aW9uc0Zyb21LZXlm
cmFtZXModmFsdWVMaXN0LCBhbmltLCBhbmltYXRpb25OYW1lLCB0aW1lT2Zmc2V0LCBib3hTaXpl
KTsKLSAgICBlbHNlCi0gICAgICAgIGNyZWF0ZWRBbmltYXRpb25zID0gY3JlYXRlQW5pbWF0aW9u
RnJvbUtleWZyYW1lcyh2YWx1ZUxpc3QsIGFuaW0sIGFuaW1hdGlvbk5hbWUsIHRpbWVPZmZzZXQp
OwotCi0gICAgaWYgKGNyZWF0ZWRBbmltYXRpb25zKQotICAgICAgICBub3RlTGF5ZXJQcm9wZXJ0
eUNoYW5nZWQoQW5pbWF0aW9uQ2hhbmdlZCk7Ci0gICAgICAgIAotICAgIHJldHVybiBjcmVhdGVk
QW5pbWF0aW9uczsKLX0KLQotdm9pZCBHcmFwaGljc0xheWVyTWFjOjpwYXVzZUFuaW1hdGlvbihj
b25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGRvdWJsZSB0aW1lT2Zmc2V0KQotewotICAgIGlm
ICghYW5pbWF0aW9uSXNSdW5uaW5nKGFuaW1hdGlvbk5hbWUpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBBbmltYXRpb25zVG9Qcm9jZXNzTWFwOjppdGVyYXRvciBpdCA9IG1fYW5pbWF0aW9uc1Rv
UHJvY2Vzcy5maW5kKGFuaW1hdGlvbk5hbWUpOwotICAgIGlmIChpdCAhPSBtX2FuaW1hdGlvbnNU
b1Byb2Nlc3MuZW5kKCkpIHsKLSAgICAgICAgQW5pbWF0aW9uUHJvY2Vzc2luZ0FjdGlvbiYgcHJv
Y2Vzc2luZ0luZm8gPSBpdC0+c2Vjb25kOwotICAgICAgICAvLyBJZiBhbiBhbmltYXRpb24gaXMg
c2NoZWR1bGVkIHRvIGJlIHJlbW92ZWQsIGRvbid0IGNoYW5nZSB0aGUgcmVtb3ZlIHRvIGEgcGF1
c2UuCi0gICAgICAgIGlmIChwcm9jZXNzaW5nSW5mby5hY3Rpb24gIT0gUmVtb3ZlKQotICAgICAg
ICAgICAgcHJvY2Vzc2luZ0luZm8uYWN0aW9uID0gUGF1c2U7Ci0gICAgfSBlbHNlCi0gICAgICAg
IG1fYW5pbWF0aW9uc1RvUHJvY2Vzcy5hZGQoYW5pbWF0aW9uTmFtZSwgQW5pbWF0aW9uUHJvY2Vz
c2luZ0FjdGlvbihQYXVzZSwgdGltZU9mZnNldCkpOwotCi0gICAgbm90ZUxheWVyUHJvcGVydHlD
aGFuZ2VkKEFuaW1hdGlvbkNoYW5nZWQpOwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnJl
bW92ZUFuaW1hdGlvbihjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUpCi17Ci0gICAgaWYgKCFh
bmltYXRpb25Jc1J1bm5pbmcoYW5pbWF0aW9uTmFtZSkpCi0gICAgICAgIHJldHVybjsKLQotICAg
IG1fYW5pbWF0aW9uc1RvUHJvY2Vzcy5hZGQoYW5pbWF0aW9uTmFtZSwgQW5pbWF0aW9uUHJvY2Vz
c2luZ0FjdGlvbihSZW1vdmUpKTsKLSAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoQW5pbWF0
aW9uQ2hhbmdlZCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6YW5pbWF0aW9uRGlkU3Rh
cnQoQ0FBbmltYXRpb24qIGNhQW5pbWF0aW9uKQotewotICAgIGJvb2wgaGFkTm9uWmVyb0JlZ2lu
VGltZSA9IFtbY2FBbmltYXRpb24gdmFsdWVGb3JLZXk6V2ViS2l0QW5pbWF0aW9uQmVnaW5UaW1l
U2V0S2V5XSBib29sVmFsdWVdOwotCi0gICAgZG91YmxlIHN0YXJ0VGltZTsKLSAgICBpZiAoaGFk
Tm9uWmVyb0JlZ2luVGltZSkgewotICAgICAgICAvLyBXZSBkb24ndCBrbm93IHdoYXQgdGltZSBD
QSB1c2VkIHRvIGNvbW1pdCB0aGUgYW5pbWF0aW9uLCBzbyBqdXN0IHVzZSB0aGUgY3VycmVudCB0
aW1lCi0gICAgICAgIC8vIChldmVuIHRob3VnaCB0aGlzIHdpbGwgYmUgc2xpZ2h0bHkgb2ZmKS4K
LSAgICAgICAgc3RhcnRUaW1lID0gV2ViQ29yZTo6bWVkaWFUaW1lVG9DdXJyZW50VGltZShDQUN1
cnJlbnRNZWRpYVRpbWUoKSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIHN0YXJ0VGltZSA9IFdlYkNv
cmU6Om1lZGlhVGltZVRvQ3VycmVudFRpbWUoW2NhQW5pbWF0aW9uIGJlZ2luVGltZV0pOwotCi0g
ICAgaWYgKG1fY2xpZW50KQotICAgICAgICBtX2NsaWVudC0+bm90aWZ5QW5pbWF0aW9uU3RhcnRl
ZCh0aGlzLCBzdGFydFRpbWUpOwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnNldENvbnRl
bnRzVG9JbWFnZShJbWFnZSogaW1hZ2UpCi17Ci0gICAgaWYgKGltYWdlKSB7Ci0gICAgICAgIENH
SW1hZ2VSZWYgbmV3SW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsK
LSAgICAgICAgaWYgKCFuZXdJbWFnZSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAv
LyBDaGVjayB0byBzZWUgaWYgdGhlIGltYWdlIGNoYW5nZWQ7IHdlIGhhdmUgdG8gZG8gdGhpcyBi
ZWNhdXNlIHRoZSBjYWxsIHRvCi0gICAgICAgIC8vIENHSW1hZ2VDcmVhdGVDb3B5V2l0aENvbG9y
U3BhY2UoKSBiZWxvdyBjYW4gY3JlYXRlIGEgbmV3IGltYWdlIGV2ZXJ5IHRpbWUuCi0gICAgICAg
IGlmIChtX3VuY29ycmVjdGVkQ29udGVudHNJbWFnZSAmJiBtX3VuY29ycmVjdGVkQ29udGVudHNJ
bWFnZS5nZXQoKSA9PSBuZXdJbWFnZSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgCi0g
ICAgICAgIG1fdW5jb3JyZWN0ZWRDb250ZW50c0ltYWdlID0gbmV3SW1hZ2U7Ci0gICAgICAgIG1f
cGVuZGluZ0NvbnRlbnRzSW1hZ2UgPSBuZXdJbWFnZTsKLSAgICAgICAgQ0dDb2xvclNwYWNlUmVm
IGNvbG9yU3BhY2UgPSBDR0ltYWdlR2V0Q29sb3JTcGFjZShtX3BlbmRpbmdDb250ZW50c0ltYWdl
LmdldCgpKTsKLQotICAgICAgICBzdGF0aWMgQ0dDb2xvclNwYWNlUmVmIGRldmljZVJHQiA9IENH
Q29sb3JTcGFjZUNyZWF0ZURldmljZVJHQigpOwotICAgICAgICBpZiAoY29sb3JTcGFjZSAmJiBD
RkVxdWFsKGNvbG9yU3BhY2UsIGRldmljZVJHQikpIHsKLSAgICAgICAgICAgIC8vIENvcmVHcmFw
aGljcyByZW5kZXJzIGltYWdlcyB0YWdnZWQgd2l0aCBEZXZpY2VSR0IgdXNpbmcgdGhlIGNvbG9y
IHNwYWNlIG9mIHRoZSBtYWluIGRpc3BsYXkuIFdoZW4gd2UgaGFuZCBzdWNoCi0gICAgICAgICAg
ICAvLyBpbWFnZXMgdG8gQ0Egd2UgbmVlZCB0byB0YWcgdGhlbSBzaW1pbGFybHkgc28gQ0EgcmVu
ZGVyaW5nIG1hdGNoZXMgQ0cgcmVuZGVyaW5nLgotICAgICAgICAgICAgc3RhdGljIENHQ29sb3JT
cGFjZVJlZiBnZW5lcmljUkdCID0gQ0dEaXNwbGF5Q29weUNvbG9yU3BhY2Uoa0NHRGlyZWN0TWFp
bkRpc3BsYXkpOwotICAgICAgICAgICAgbV9wZW5kaW5nQ29udGVudHNJbWFnZS5hZG9wdENGKENH
SW1hZ2VDcmVhdGVDb3B5V2l0aENvbG9yU3BhY2UobV9wZW5kaW5nQ29udGVudHNJbWFnZS5nZXQo
KSwgZ2VuZXJpY1JHQikpOwotICAgICAgICB9Ci0gICAgICAgIG1fY29udGVudHNMYXllclB1cnBv
c2UgPSBDb250ZW50c0xheWVyRm9ySW1hZ2U7Ci0gICAgICAgIGlmICghbV9jb250ZW50c0xheWVy
KQotICAgICAgICAgICAgbm90ZVN1YmxheWVyc0NoYW5nZWQoKTsKLSAgICB9IGVsc2UgewotICAg
ICAgICBtX3VuY29ycmVjdGVkQ29udGVudHNJbWFnZSA9IDA7Ci0gICAgICAgIG1fcGVuZGluZ0Nv
bnRlbnRzSW1hZ2UgPSAwOwotICAgICAgICBtX2NvbnRlbnRzTGF5ZXJQdXJwb3NlID0gTm9Db250
ZW50c0xheWVyOwotICAgICAgICBpZiAobV9jb250ZW50c0xheWVyKQotICAgICAgICAgICAgbm90
ZVN1YmxheWVyc0NoYW5nZWQoKTsKLSAgICB9Ci0KLSAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5n
ZWQoQ29udGVudHNJbWFnZUNoYW5nZWQpOwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnNl
dENvbnRlbnRzVG9NZWRpYShQbGF0Zm9ybUxheWVyKiBtZWRpYUxheWVyKQotewotICAgIGlmICht
ZWRpYUxheWVyID09IG1fY29udGVudHNMYXllcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9j
b250ZW50c0xheWVyID0gbWVkaWFMYXllcjsKLSAgICBtX2NvbnRlbnRzTGF5ZXJQdXJwb3NlID0g
bWVkaWFMYXllciA/IENvbnRlbnRzTGF5ZXJGb3JNZWRpYSA6IE5vQ29udGVudHNMYXllcjsKLQot
ICAgIG5vdGVTdWJsYXllcnNDaGFuZ2VkKCk7Ci0gICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2Vk
KENvbnRlbnRzTWVkaWFMYXllckNoYW5nZWQpOwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6
OmRpZERpc3BsYXkoUGxhdGZvcm1MYXllciogbGF5ZXIpCi17Ci0gICAgQ0FMYXllciogc291cmNl
TGF5ZXI7Ci0gICAgTGF5ZXJNYXAqIGxheWVyQ2xvbmVNYXA7Ci0KLSAgICBpZiAobGF5ZXIgPT0g
bV9sYXllcikgewotICAgICAgICBzb3VyY2VMYXllciA9IG1fbGF5ZXIuZ2V0KCk7Ci0gICAgICAg
IGxheWVyQ2xvbmVNYXAgPSBtX2xheWVyQ2xvbmVzLmdldCgpOwotICAgIH0gZWxzZSBpZiAobGF5
ZXIgPT0gbV9jb250ZW50c0xheWVyKSB7Ci0gICAgICAgIHNvdXJjZUxheWVyID0gbV9jb250ZW50
c0xheWVyLmdldCgpOwotICAgICAgICBsYXllckNsb25lTWFwID0gbV9jb250ZW50c0xheWVyQ2xv
bmVzLmdldCgpOwotICAgIH0gZWxzZQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAobGF5ZXJD
bG9uZU1hcCkgewotICAgICAgICBMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbGF5ZXJD
bG9uZU1hcC0+ZW5kKCk7Ci0gICAgICAgIGZvciAoTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0
ID0gbGF5ZXJDbG9uZU1hcC0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAg
ICBDQUxheWVyICpjdXJyQ2xvbmUgPSBpdC0+c2Vjb25kLmdldCgpOwotICAgICAgICAgICAgaWYg
KCFjdXJyQ2xvbmUpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgIGlm
IChbY3VyckNsb25lIGNvbnRlbnRzXSAhPSBbc291cmNlTGF5ZXIgY29udGVudHNdKQotICAgICAg
ICAgICAgICAgIFtjdXJyQ2xvbmUgc2V0Q29udGVudHM6W3NvdXJjZUxheWVyIGNvbnRlbnRzXV07
Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgW2N1cnJDbG9uZSBzZXRDb250ZW50
c0NoYW5nZWRdOwotICAgICAgICB9Ci0gICAgfQotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6
OnN5bmNDb21wb3NpdGluZ1N0YXRlKCkKLXsKLSAgICByZWN1cnNpdmVDb21taXRDaGFuZ2VzKCk7
Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6c3luY0NvbXBvc2l0aW5nU3RhdGVGb3JUaGlz
TGF5ZXJPbmx5KCkKLXsKLSAgICBjb21taXRMYXllckNoYW5nZXNCZWZvcmVTdWJsYXllcnMoKTsK
LSAgICBjb21taXRMYXllckNoYW5nZXNBZnRlclN1YmxheWVycygpOwotfQotCi12b2lkIEdyYXBo
aWNzTGF5ZXJNYWM6OnJlY3Vyc2l2ZUNvbW1pdENoYW5nZXMoKQotewotICAgIGNvbW1pdExheWVy
Q2hhbmdlc0JlZm9yZVN1YmxheWVycygpOwotCi0gICAgaWYgKG1fbWFza0xheWVyKQotICAgICAg
ICBzdGF0aWNfY2FzdDxHcmFwaGljc0xheWVyTWFjKj4obV9tYXNrTGF5ZXIpLT5jb21taXRMYXll
ckNoYW5nZXNCZWZvcmVTdWJsYXllcnMoKTsKLQotICAgIGNvbnN0IFZlY3RvcjxHcmFwaGljc0xh
eWVyKj4mIGNoaWxkTGF5ZXJzID0gY2hpbGRyZW4oKTsKLSAgICBzaXplX3QgbnVtQ2hpbGRyZW4g
PSBjaGlsZExheWVycy5zaXplKCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1DaGls
ZHJlbjsgKytpKSB7Ci0gICAgICAgIEdyYXBoaWNzTGF5ZXJNYWMqIGN1ckNoaWxkID0gc3RhdGlj
X2Nhc3Q8R3JhcGhpY3NMYXllck1hYyo+KGNoaWxkTGF5ZXJzW2ldKTsKLSAgICAgICAgY3VyQ2hp
bGQtPnJlY3Vyc2l2ZUNvbW1pdENoYW5nZXMoKTsKLSAgICB9Ci0KLSAgICBpZiAobV9yZXBsaWNh
TGF5ZXIpCi0gICAgICAgIHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXJNYWMqPihtX3JlcGxpY2FM
YXllciktPnJlY3Vyc2l2ZUNvbW1pdENoYW5nZXMoKTsKLQotICAgIGlmIChtX21hc2tMYXllcikK
LSAgICAgICAgc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllck1hYyo+KG1fbWFza0xheWVyKS0+Y29t
bWl0TGF5ZXJDaGFuZ2VzQWZ0ZXJTdWJsYXllcnMoKTsKLQotICAgIGNvbW1pdExheWVyQ2hhbmdl
c0FmdGVyU3VibGF5ZXJzKCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6Y29tbWl0TGF5
ZXJDaGFuZ2VzQmVmb3JlU3VibGF5ZXJzKCkKLXsKLSAgICBpZiAoIW1fdW5jb21taXR0ZWRDaGFu
Z2VzKQotICAgICAgICByZXR1cm47Ci0KLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMK
LQotICAgIC8vIE5lZWQgdG8gaGFuZGxlIFByZXNlcnZlczNEQ2hhbmdlZCBmaXJzdCwgYmVjYXVz
ZSBpdCBhZmZlY3RzIHdoaWNoIGxheWVycyBzdWJzZXF1ZW50IHByb3BlcnRpZXMgYXJlIGFwcGxp
ZWQgdG8KLSAgICBpZiAobV91bmNvbW1pdHRlZENoYW5nZXMgJiAoUHJlc2VydmVzM0RDaGFuZ2Vk
IHwgUmVwbGljYXRlZExheWVyQ2hhbmdlZCkpCi0gICAgICAgIHVwZGF0ZVN0cnVjdHVyYWxMYXll
cigpOwotCi0gICAgaWYgKG1fdW5jb21taXR0ZWRDaGFuZ2VzICYgTmFtZUNoYW5nZWQpCi0gICAg
ICAgIHVwZGF0ZUxheWVyTmFtZXMoKTsKLQotICAgIGlmIChtX3VuY29tbWl0dGVkQ2hhbmdlcyAm
IENvbnRlbnRzSW1hZ2VDaGFuZ2VkKSAvLyBOZWVkcyB0byBoYXBwZW4gYmVmb3JlIENoaWxkcmVu
Q2hhbmdlZAotICAgICAgICB1cGRhdGVDb250ZW50c0ltYWdlKCk7Ci0gICAgICAgIAotICAgIGlm
IChtX3VuY29tbWl0dGVkQ2hhbmdlcyAmIENvbnRlbnRzTWVkaWFMYXllckNoYW5nZWQpIC8vIE5l
ZWRzIHRvIGhhcHBlbiBiZWZvcmUgQ2hpbGRyZW5DaGFuZ2VkCi0gICAgICAgIHVwZGF0ZUNvbnRl
bnRzTWVkaWFMYXllcigpOwotICAgIAotICAgIGlmIChtX3VuY29tbWl0dGVkQ2hhbmdlcyAmIENv
bnRlbnRzQ2FudmFzTGF5ZXJDaGFuZ2VkKSAvLyBOZWVkcyB0byBoYXBwZW4gYmVmb3JlIENoaWxk
cmVuQ2hhbmdlZAotICAgICAgICB1cGRhdGVDb250ZW50c0NhbnZhc0xheWVyKCk7Ci0gICAgCi0g
ICAgaWYgKG1fdW5jb21taXR0ZWRDaGFuZ2VzICYgQmFja2dyb3VuZENvbG9yQ2hhbmdlZCkgIC8v
IE5lZWRzIHRvIGhhcHBlbiBiZWZvcmUgQ2hpbGRyZW5DaGFuZ2VkLCBhbmQgYWZ0ZXIgdXBkYXRp
bmcgaW1hZ2Ugb3IgdmlkZW8KLSAgICAgICAgdXBkYXRlTGF5ZXJCYWNrZ3JvdW5kQ29sb3IoKTsK
LQotICAgIGlmIChtX3VuY29tbWl0dGVkQ2hhbmdlcyAmIENoaWxkcmVuQ2hhbmdlZCkKLSAgICAg
ICAgdXBkYXRlU3VibGF5ZXJMaXN0KCk7Ci0KLSAgICBpZiAobV91bmNvbW1pdHRlZENoYW5nZXMg
JiBQb3NpdGlvbkNoYW5nZWQpCi0gICAgICAgIHVwZGF0ZUxheWVyUG9zaXRpb24oKTsKLSAgICAK
LSAgICBpZiAobV91bmNvbW1pdHRlZENoYW5nZXMgJiBBbmNob3JQb2ludENoYW5nZWQpCi0gICAg
ICAgIHVwZGF0ZUFuY2hvclBvaW50KCk7Ci0gICAgCi0gICAgaWYgKG1fdW5jb21taXR0ZWRDaGFu
Z2VzICYgU2l6ZUNoYW5nZWQpCi0gICAgICAgIHVwZGF0ZUxheWVyU2l6ZSgpOwotCi0gICAgaWYg
KG1fdW5jb21taXR0ZWRDaGFuZ2VzICYgVHJhbnNmb3JtQ2hhbmdlZCkKLSAgICAgICAgdXBkYXRl
VHJhbnNmb3JtKCk7Ci0KLSAgICBpZiAobV91bmNvbW1pdHRlZENoYW5nZXMgJiBDaGlsZHJlblRy
YW5zZm9ybUNoYW5nZWQpCi0gICAgICAgIHVwZGF0ZUNoaWxkcmVuVHJhbnNmb3JtKCk7Ci0gICAg
Ci0gICAgaWYgKG1fdW5jb21taXR0ZWRDaGFuZ2VzICYgTWFza3NUb0JvdW5kc0NoYW5nZWQpCi0g
ICAgICAgIHVwZGF0ZU1hc2tzVG9Cb3VuZHMoKTsKLSAgICAKLSAgICBpZiAobV91bmNvbW1pdHRl
ZENoYW5nZXMgJiBEcmF3c0NvbnRlbnRDaGFuZ2VkKQotICAgICAgICB1cGRhdGVMYXllckRyYXdz
Q29udGVudCgpOwotCi0gICAgaWYgKG1fdW5jb21taXR0ZWRDaGFuZ2VzICYgQ29udGVudHNPcGFx
dWVDaGFuZ2VkKQotICAgICAgICB1cGRhdGVDb250ZW50c09wYXF1ZSgpOwotCi0gICAgaWYgKG1f
dW5jb21taXR0ZWRDaGFuZ2VzICYgQmFja2ZhY2VWaXNpYmlsaXR5Q2hhbmdlZCkKLSAgICAgICAg
dXBkYXRlQmFja2ZhY2VWaXNpYmlsaXR5KCk7Ci0KLSAgICBpZiAobV91bmNvbW1pdHRlZENoYW5n
ZXMgJiBPcGFjaXR5Q2hhbmdlZCkKLSAgICAgICAgdXBkYXRlT3BhY2l0eU9uTGF5ZXIoKTsKLSAg
ICAKLSAgICBpZiAobV91bmNvbW1pdHRlZENoYW5nZXMgJiBBbmltYXRpb25DaGFuZ2VkKQotICAg
ICAgICB1cGRhdGVMYXllckFuaW1hdGlvbnMoKTsKLSAgICAKLSAgICBpZiAobV91bmNvbW1pdHRl
ZENoYW5nZXMgJiBEaXJ0eVJlY3RzQ2hhbmdlZCkKLSAgICAgICAgcmVwYWludExheWVyRGlydHlS
ZWN0cygpOwotICAgIAotICAgIGlmIChtX3VuY29tbWl0dGVkQ2hhbmdlcyAmIENvbnRlbnRzUmVj
dENoYW5nZWQpCi0gICAgICAgIHVwZGF0ZUNvbnRlbnRzUmVjdCgpOwotCi0gICAgaWYgKG1fdW5j
b21taXR0ZWRDaGFuZ2VzICYgTWFza0xheWVyQ2hhbmdlZCkKLSAgICAgICAgdXBkYXRlTWFza0xh
eWVyKCk7Ci0KLSAgICBpZiAobV91bmNvbW1pdHRlZENoYW5nZXMgJiBDb250ZW50c05lZWRzRGlz
cGxheSkKLSAgICAgICAgdXBkYXRlQ29udGVudHNOZWVkc0Rpc3BsYXkoKTsKLQotICAgIEVORF9C
TE9DS19PQkpDX0VYQ0VQVElPTlMKLX0KLQotdm9pZCBHcmFwaGljc0xheWVyTWFjOjpjb21taXRM
YXllckNoYW5nZXNBZnRlclN1YmxheWVycygpCi17Ci0gICAgaWYgKCFtX3VuY29tbWl0dGVkQ2hh
bmdlcykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05T
Ci0KLSAgICBpZiAobV91bmNvbW1pdHRlZENoYW5nZXMgJiBSZXBsaWNhdGVkTGF5ZXJDaGFuZ2Vk
KQotICAgICAgICB1cGRhdGVSZXBsaWNhdGVkTGF5ZXJzKCk7Ci0KLSAgICBtX3VuY29tbWl0dGVk
Q2hhbmdlcyA9IE5vQ2hhbmdlOwotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLX0KLQot
dm9pZCBHcmFwaGljc0xheWVyTWFjOjp1cGRhdGVMYXllck5hbWVzKCkKLXsKLSAgICBzd2l0Y2gg
KHN0cnVjdHVyYWxMYXllclB1cnBvc2UoKSkgewotICAgICAgICBjYXNlIFN0cnVjdHVyYWxMYXll
ckZvclByZXNlcnZlczNEOgotICAgICAgICAgICAgW21fc3RydWN0dXJhbExheWVyLmdldCgpIHNl
dE5hbWU6KCJUcmFuc2Zvcm0gbGF5ZXIgIiArIG5hbWUoKSldOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGNhc2UgU3RydWN0dXJhbExheWVyRm9yUmVwbGljYUZsYXR0ZW5pbmc6Ci0gICAg
ICAgICAgICBbbV9zdHJ1Y3R1cmFsTGF5ZXIuZ2V0KCkgc2V0TmFtZTooIlJlcGxpY2EgZmxhdHRl
bmluZyBsYXllciAiICsgbmFtZSgpKV07Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2Fz
ZSBOb1N0cnVjdHVyYWxMYXllcjoKLSAgICAgICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBbbV9s
YXllci5nZXQoKSBzZXROYW1lOm5hbWUoKV07Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6
dXBkYXRlU3VibGF5ZXJMaXN0KCkKLXsKLSAgICBOU011dGFibGVBcnJheSogbmV3U3VibGF5ZXJz
ID0gbmlsOwotCi0gICAgY29uc3QgVmVjdG9yPEdyYXBoaWNzTGF5ZXIqPiYgY2hpbGRMYXllcnMg
PSBjaGlsZHJlbigpOwotCi0gICAgaWYgKG1fc3RydWN0dXJhbExheWVyIHx8IG1fY29udGVudHNM
YXllciB8fCBjaGlsZExheWVycy5zaXplKCkgPiAwKSB7Ci0gICAgICAgIG5ld1N1YmxheWVycyA9
IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdOwotCi0gICAgICAgIGlmIChtX3N0cnVjdHVy
YWxMYXllcikgewotICAgICAgICAgICAgLy8gQWRkIHRoZSByZXBsaWNhIGxheWVyIGZpcnN0Lgot
ICAgICAgICAgICAgaWYgKG1fcmVwbGljYUxheWVyKQotICAgICAgICAgICAgICAgIFtuZXdTdWJs
YXllcnMgYWRkT2JqZWN0OnN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXJNYWMqPihtX3JlcGxpY2FM
YXllciktPnByaW1hcnlMYXllcigpXTsKLSAgICAgICAgICAgIC8vIEFkZCB0aGUgcHJpbWFyeSBs
YXllci4gRXZlbiBpZiB3ZSBoYXZlIG5lZ2F0aXZlIHotb3JkZXIgY2hpbGRyZW4sIHRoZSBwcmlt
YXJ5IGxheWVyIGFsd2F5cyBjb21lcyBiZWhpbmQuCi0gICAgICAgICAgICBbbmV3U3VibGF5ZXJz
IGFkZE9iamVjdDptX2xheWVyLmdldCgpXTsKLSAgICAgICAgfSBlbHNlIGlmIChtX2NvbnRlbnRz
TGF5ZXIpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBhZGQgdGhlIGNvbnRlbnRzIGxheWVyIGlu
IHRoZSBjb3JyZWN0IG9yZGVyIHdpdGggbmVnYXRpdmUgei1vcmRlciBjaGlsZHJlbi4KLSAgICAg
ICAgICAgIC8vIFRoaXMgZG9lcyBub3QgY2F1c2UgdmlzaWJsZSByZW5kZXJpbmcgaXNzdWVzIGJl
Y2F1c2UgY3VycmVudGx5IGNvbnRlbnRzIGxheWVycyBhcmUgb25seSB1c2VkCi0gICAgICAgICAg
ICAvLyBmb3IgcmVwbGFjZWQgZWxlbWVudHMgdGhhdCBkb24ndCBoYXZlIGNoaWxkcmVuLgotICAg
ICAgICAgICAgW25ld1N1YmxheWVycyBhZGRPYmplY3Q6bV9jb250ZW50c0xheWVyLmdldCgpXTsK
LSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgc2l6ZV90IG51bUNoaWxkcmVuID0gY2hpbGRM
YXllcnMuc2l6ZSgpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bUNoaWxkcmVu
OyArK2kpIHsKLSAgICAgICAgICAgIEdyYXBoaWNzTGF5ZXJNYWMqIGN1ckNoaWxkID0gc3RhdGlj
X2Nhc3Q8R3JhcGhpY3NMYXllck1hYyo+KGNoaWxkTGF5ZXJzW2ldKTsKLSAgICAgICAgICAgIENB
TGF5ZXIgKmNoaWxkTGF5ZXIgPSBjdXJDaGlsZC0+bGF5ZXJGb3JTdXBlcmxheWVyKCk7Ci0gICAg
ICAgICAgICBbbmV3U3VibGF5ZXJzIGFkZE9iamVjdDpjaGlsZExheWVyXTsKLSAgICAgICAgfQot
Ci0gICAgICAgIFtuZXdTdWJsYXllcnMgbWFrZU9iamVjdHNQZXJmb3JtU2VsZWN0b3I6QHNlbGVj
dG9yKHJlbW92ZUZyb21TdXBlcmxheWVyKV07Ci0gICAgfQotCi0gICAgaWYgKG1fc3RydWN0dXJh
bExheWVyKSB7Ci0gICAgICAgIHNhZmVTZXRTdWJsYXllcnMobV9zdHJ1Y3R1cmFsTGF5ZXIuZ2V0
KCksIG5ld1N1YmxheWVycyk7Ci0KLSAgICAgICAgaWYgKG1fY29udGVudHNMYXllcikgewotICAg
ICAgICAgICAgLy8gSWYgd2UgaGF2ZSBhIHRyYW5zZm9ybSBsYXllciwgdGhlbiB0aGUgY29udGVu
dHMgbGF5ZXIgaXMgcGFyZW50ZWQgaW4gdGhlIAotICAgICAgICAgICAgLy8gcHJpbWFyeSBsYXll
ciAod2hpY2ggaXMgaXRzZWxmIGEgY2hpbGQgb2YgdGhlIHRyYW5zZm9ybSBsYXllcikuCi0gICAg
ICAgICAgICBzYWZlU2V0U3VibGF5ZXJzKG1fbGF5ZXIuZ2V0KCksIG5pbCk7Ci0gICAgICAgICAg
ICBbbV9sYXllci5nZXQoKSBhZGRTdWJsYXllcjptX2NvbnRlbnRzTGF5ZXIuZ2V0KCldOwotICAg
ICAgICB9Ci0gICAgfSBlbHNlCi0gICAgICAgIHNhZmVTZXRTdWJsYXllcnMobV9sYXllci5nZXQo
KSwgbmV3U3VibGF5ZXJzKTsKLQotICAgIFtuZXdTdWJsYXllcnMgcmVsZWFzZV07Ci19Ci0KLXZv
aWQgR3JhcGhpY3NMYXllck1hYzo6dXBkYXRlTGF5ZXJQb3NpdGlvbigpCi17Ci0gICAgRmxvYXRT
aXplIHVzZWRTaXplID0gbV91c2luZ1RpbGVkTGF5ZXIgPyBjb25zdHJhaW5lZFNpemUoKSA6IG1f
c2l6ZTsKLQotICAgIC8vIFBvc2l0aW9uIGlzIG9mZnNldCBvbiB0aGUgbGF5ZXIgYnkgdGhlIGxh
eWVyIGFuY2hvciBwb2ludC4KLSAgICBDR1BvaW50IHBvc1BvaW50ID0gQ0dQb2ludE1ha2UobV9w
b3NpdGlvbi54KCkgKyBtX2FuY2hvclBvaW50LngoKSAqIHVzZWRTaXplLndpZHRoKCksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fcG9zaXRpb24ueSgpICsgbV9hbmNob3JQ
b2ludC55KCkgKiB1c2VkU2l6ZS5oZWlnaHQoKSk7Ci0gICAgCi0gICAgW3ByaW1hcnlMYXllcigp
IHNldFBvc2l0aW9uOnBvc1BvaW50XTsKLQotICAgIGlmIChMYXllck1hcCogbGF5ZXJDbG9uZU1h
cCA9IHByaW1hcnlMYXllckNsb25lcygpKSB7Ci0gICAgICAgIExheWVyTWFwOjpjb25zdF9pdGVy
YXRvciBlbmQgPSBsYXllckNsb25lTWFwLT5lbmQoKTsKLSAgICAgICAgZm9yIChMYXllck1hcDo6
Y29uc3RfaXRlcmF0b3IgaXQgPSBsYXllckNsb25lTWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsr
aXQpIHsKLSAgICAgICAgICAgIENHUG9pbnQgY2xvbmVQb3NpdGlvbiA9IHBvc1BvaW50OwotICAg
ICAgICAgICAgaWYgKG1fcmVwbGljYUxheWVyICYmIGlzUmVwbGljYXRlZFJvb3RDbG9uZShpdC0+
Zmlyc3QpKSB7Ci0gICAgICAgICAgICAgICAgLy8gTWFpbnRhaW4gdGhlIHNwZWNpYWwtY2FzZSBw
b3NpdGlvbiBmb3IgdGhlIHJvb3Qgb2YgYSBjbG9uZSBzdWJ0cmVlLAotICAgICAgICAgICAgICAg
IC8vIHdoaWNoIHdlIHNldCB1cCBpbiByZXBsaWNhdGVkTGF5ZXJSb290KCkuCi0gICAgICAgICAg
ICAgICAgY2xvbmVQb3NpdGlvbiA9IHBvc2l0aW9uRm9yQ2xvbmVSb290TGF5ZXIoKTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIENBTGF5ZXIgKmN1cnJMYXllciA9IGl0LT5zZWNvbmQuZ2V0
KCk7Ci0gICAgICAgICAgICBbY3VyckxheWVyIHNldFBvc2l0aW9uOmNsb25lUG9zaXRpb25dOwot
ICAgICAgICB9Ci0gICAgfQotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnVwZGF0ZUxheWVy
U2l6ZSgpCi17Ci0gICAgQ0dSZWN0IHJlY3QgPSBDR1JlY3RNYWtlKDAsIDAsIG1fc2l6ZS53aWR0
aCgpLCBtX3NpemUuaGVpZ2h0KCkpOwotICAgIGlmIChtX3N0cnVjdHVyYWxMYXllcikgewotICAg
ICAgICBbbV9zdHJ1Y3R1cmFsTGF5ZXIuZ2V0KCkgc2V0Qm91bmRzOnJlY3RdOwotICAgICAgICAK
LSAgICAgICAgaWYgKExheWVyTWFwKiBsYXllckNsb25lTWFwID0gbV9zdHJ1Y3R1cmFsTGF5ZXJD
bG9uZXMuZ2V0KCkpIHsKLSAgICAgICAgICAgIExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQg
PSBsYXllckNsb25lTWFwLT5lbmQoKTsKLSAgICAgICAgICAgIGZvciAoTGF5ZXJNYXA6OmNvbnN0
X2l0ZXJhdG9yIGl0ID0gbGF5ZXJDbG9uZU1hcC0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQot
ICAgICAgICAgICAgICAgIFtpdC0+c2Vjb25kLmdldCgpIHNldEJvdW5kczpyZWN0XTsKLSAgICAg
ICAgfQotCi0gICAgICAgIC8vIFRoZSBhbmNob3Igb2YgdGhlIGNvbnRlbnRzIGxheWVyIGlzIGFs
d2F5cyBhdCAwLjUsIDAuNSwgc28gdGhlIHBvc2l0aW9uIGlzIGNlbnRlci1yZWxhdGl2ZS4KLSAg
ICAgICAgQ0dQb2ludCBjZW50ZXJQb2ludCA9IENHUG9pbnRNYWtlKG1fc2l6ZS53aWR0aCgpIC8g
Mi4wZiwgbV9zaXplLmhlaWdodCgpIC8gMi4wZik7Ci0gICAgICAgIFttX2xheWVyLmdldCgpIHNl
dFBvc2l0aW9uOmNlbnRlclBvaW50XTsKLQotICAgICAgICBpZiAoTGF5ZXJNYXAqIGxheWVyQ2xv
bmVNYXAgPSBtX2xheWVyQ2xvbmVzLmdldCgpKSB7Ci0gICAgICAgICAgICBMYXllck1hcDo6Y29u
c3RfaXRlcmF0b3IgZW5kID0gbGF5ZXJDbG9uZU1hcC0+ZW5kKCk7Ci0gICAgICAgICAgICBmb3Ig
KExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGxheWVyQ2xvbmVNYXAtPmJlZ2luKCk7IGl0
ICE9IGVuZDsgKytpdCkKLSAgICAgICAgICAgICAgICBbaXQtPnNlY29uZC5nZXQoKSBzZXRQb3Np
dGlvbjpjZW50ZXJQb2ludF07Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgYm9vbCBuZWVk
VGlsZWRMYXllciA9IHJlcXVpcmVzVGlsZWRMYXllcihtX3NpemUpOwotICAgIGlmIChuZWVkVGls
ZWRMYXllciAhPSBtX3VzaW5nVGlsZWRMYXllcikKLSAgICAgICAgc3dhcEZyb21PclRvVGlsZWRM
YXllcihuZWVkVGlsZWRMYXllcik7Ci0gICAgCi0gICAgaWYgKG1fdXNpbmdUaWxlZExheWVyKSB7
Ci0gICAgICAgIEZsb2F0U2l6ZSBzaXplVG9Vc2UgPSBjb25zdHJhaW5lZFNpemUoKTsKLSAgICAg
ICAgcmVjdCA9IENHUmVjdE1ha2UoMCwgMCwgc2l6ZVRvVXNlLndpZHRoKCksIHNpemVUb1VzZS5o
ZWlnaHQoKSk7Ci0gICAgfQotICAgIAotICAgIFttX2xheWVyLmdldCgpIHNldEJvdW5kczpyZWN0
XTsKLSAgICBpZiAoTGF5ZXJNYXAqIGxheWVyQ2xvbmVNYXAgPSBtX2xheWVyQ2xvbmVzLmdldCgp
KSB7Ci0gICAgICAgIExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBsYXllckNsb25lTWFw
LT5lbmQoKTsKLSAgICAgICAgZm9yIChMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBsYXll
ckNsb25lTWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgICAgICBbaXQtPnNl
Y29uZC5nZXQoKSBzZXRCb3VuZHM6cmVjdF07Ci0gICAgfQotICAgIAotICAgIC8vIENvbnRlbnRz
IHRyYW5zZm9ybSBtYXkgZGVwZW5kIG9uIGhlaWdodC4KLSAgICB1cGRhdGVDb250ZW50c1RyYW5z
Zm9ybSgpOwotCi0gICAgLy8gTm90ZSB0aGF0IHdlIGRvbid0IHJlc2l6ZSBtX2NvbnRlbnRzTGF5
ZXIuIEl0J3MgdXAgdGhlIGNhbGxlciB0byBkbyB0aGF0LgotCi0gICAgLy8gaWYgd2UndmUgY2hh
bmdlZCB0aGUgYm91bmRzLCB3ZSBuZWVkIHRvIHJlY2FsY3VsYXRlIHRoZSBwb3NpdGlvbgotICAg
IC8vIG9mIHRoZSBsYXllciwgdGFraW5nIGFuY2hvciBwb2ludCBpbnRvIGFjY291bnQuCi0gICAg
dXBkYXRlTGF5ZXJQb3NpdGlvbigpOwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnVwZGF0
ZUFuY2hvclBvaW50KCkKLXsKLSAgICBbcHJpbWFyeUxheWVyKCkgc2V0QW5jaG9yUG9pbnQ6Rmxv
YXRQb2ludChtX2FuY2hvclBvaW50LngoKSwgbV9hbmNob3JQb2ludC55KCkpXTsKLSNpZiBIQVZF
X01PREVSTl9RVUFSVFpDT1JFCi0gICAgW3ByaW1hcnlMYXllcigpIHNldEFuY2hvclBvaW50Wjpt
X2FuY2hvclBvaW50LnooKV07Ci0jZW5kaWYKLQotICAgIGlmIChMYXllck1hcCogbGF5ZXJDbG9u
ZU1hcCA9IHByaW1hcnlMYXllckNsb25lcygpKSB7Ci0gICAgICAgIExheWVyTWFwOjpjb25zdF9p
dGVyYXRvciBlbmQgPSBsYXllckNsb25lTWFwLT5lbmQoKTsKLSAgICAgICAgZm9yIChMYXllck1h
cDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBsYXllckNsb25lTWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7
ICsraXQpIHsgICAKLSAgICAgICAgICAgIENBTGF5ZXIgKmN1cnJMYXllciA9IGl0LT5zZWNvbmQu
Z2V0KCk7Ci0gICAgICAgICAgICBbY3VyckxheWVyIHNldEFuY2hvclBvaW50OkZsb2F0UG9pbnQo
bV9hbmNob3JQb2ludC54KCksIG1fYW5jaG9yUG9pbnQueSgpKV07Ci0jaWYgSEFWRV9NT0RFUk5f
UVVBUlRaQ09SRQotICAgICAgICAgICAgW2N1cnJMYXllciBzZXRBbmNob3JQb2ludFo6bV9hbmNo
b3JQb2ludC56KCldOwotI2VuZGlmCi0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB1cGRhdGVMYXll
clBvc2l0aW9uKCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6dXBkYXRlVHJhbnNmb3Jt
KCkKLXsKLSAgICBDQVRyYW5zZm9ybTNEIHRyYW5zZm9ybTsKLSAgICBjb3B5VHJhbnNmb3JtKHRy
YW5zZm9ybSwgbV90cmFuc2Zvcm0pOwotICAgIFtwcmltYXJ5TGF5ZXIoKSBzZXRUcmFuc2Zvcm06
dHJhbnNmb3JtXTsKLQotICAgIGlmIChMYXllck1hcCogbGF5ZXJDbG9uZU1hcCA9IHByaW1hcnlM
YXllckNsb25lcygpKSB7Ci0gICAgICAgIExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBs
YXllckNsb25lTWFwLT5lbmQoKTsKLSAgICAgICAgZm9yIChMYXllck1hcDo6Y29uc3RfaXRlcmF0
b3IgaXQgPSBsYXllckNsb25lTWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAg
ICAgICAgIENBTGF5ZXIgKmN1cnJMYXllciA9IGl0LT5zZWNvbmQuZ2V0KCk7Ci0gICAgICAgICAg
ICBpZiAobV9yZXBsaWNhTGF5ZXIgJiYgaXNSZXBsaWNhdGVkUm9vdENsb25lKGl0LT5maXJzdCkp
IHsKLSAgICAgICAgICAgICAgICAvLyBNYWludGFpbiB0aGUgc3BlY2lhbC1jYXNlIHRyYW5zZm9y
bSBmb3IgdGhlIHJvb3Qgb2YgYSBjbG9uZSBzdWJ0cmVlLAotICAgICAgICAgICAgICAgIC8vIHdo
aWNoIHdlIHNldCB1cCBpbiByZXBsaWNhdGVkTGF5ZXJSb290KCkuCi0gICAgICAgICAgICAgICAg
W2N1cnJMYXllciBzZXRUcmFuc2Zvcm06Q0FUcmFuc2Zvcm0zRElkZW50aXR5XTsKLSAgICAgICAg
ICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIFtjdXJyTGF5ZXIgc2V0VHJhbnNmb3JtOnRyYW5z
Zm9ybV07Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6dXBk
YXRlQ2hpbGRyZW5UcmFuc2Zvcm0oKQotewotICAgIENBVHJhbnNmb3JtM0QgdHJhbnNmb3JtOwot
ICAgIGNvcHlUcmFuc2Zvcm0odHJhbnNmb3JtLCBtX2NoaWxkcmVuVHJhbnNmb3JtKTsKLSAgICBb
cHJpbWFyeUxheWVyKCkgc2V0U3VibGF5ZXJUcmFuc2Zvcm06dHJhbnNmb3JtXTsKLQotICAgIGlm
IChMYXllck1hcCogbGF5ZXJDbG9uZU1hcCA9IHByaW1hcnlMYXllckNsb25lcygpKSB7Ci0gICAg
ICAgIExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBsYXllckNsb25lTWFwLT5lbmQoKTsK
LSAgICAgICAgZm9yIChMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBsYXllckNsb25lTWFw
LT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgICAgIENBTGF5ZXIgKmN1cnJM
YXllciA9IGl0LT5zZWNvbmQuZ2V0KCk7Ci0gICAgICAgICAgICBbY3VyckxheWVyIHNldFN1Ymxh
eWVyVHJhbnNmb3JtOnRyYW5zZm9ybV07Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXZvaWQgR3Jh
cGhpY3NMYXllck1hYzo6dXBkYXRlTWFza3NUb0JvdW5kcygpCi17Ci0gICAgW21fbGF5ZXIuZ2V0
KCkgc2V0TWFza3NUb0JvdW5kczptX21hc2tzVG9Cb3VuZHNdOwotCi0gICAgaWYgKExheWVyTWFw
KiBsYXllckNsb25lTWFwID0gbV9sYXllckNsb25lcy5nZXQoKSkgewotICAgICAgICBMYXllck1h
cDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbGF5ZXJDbG9uZU1hcC0+ZW5kKCk7Ci0gICAgICAgIGZv
ciAoTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbGF5ZXJDbG9uZU1hcC0+YmVnaW4oKTsg
aXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICBDQUxheWVyICpjdXJyTGF5ZXIgPSBpdC0+
c2Vjb25kLmdldCgpOwotICAgICAgICAgICAgW2N1cnJMYXllciBzZXRNYXNrc1RvQm91bmRzOm1f
bWFza3NUb0JvdW5kc107Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB1cGRhdGVEZWJ1Z0luZGlj
YXRvcnMoKTsKLX0KLQotdm9pZCBHcmFwaGljc0xheWVyTWFjOjp1cGRhdGVDb250ZW50c09wYXF1
ZSgpCi17Ci0gICAgW21fbGF5ZXIuZ2V0KCkgc2V0T3BhcXVlOm1fY29udGVudHNPcGFxdWVdOwot
Ci0gICAgaWYgKExheWVyTWFwKiBsYXllckNsb25lTWFwID0gbV9sYXllckNsb25lcy5nZXQoKSkg
ewotICAgICAgICBMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbGF5ZXJDbG9uZU1hcC0+
ZW5kKCk7Ci0gICAgICAgIGZvciAoTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbGF5ZXJD
bG9uZU1hcC0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICBDQUxheWVy
ICpjdXJyTGF5ZXIgPSBpdC0+c2Vjb25kLmdldCgpOwotICAgICAgICAgICAgW2N1cnJMYXllciBz
ZXRPcGFxdWU6bV9jb250ZW50c09wYXF1ZV07Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXZvaWQg
R3JhcGhpY3NMYXllck1hYzo6dXBkYXRlQmFja2ZhY2VWaXNpYmlsaXR5KCkKLXsKLSAgICBpZiAo
bV9zdHJ1Y3R1cmFsTGF5ZXIgJiYgc3RydWN0dXJhbExheWVyUHVycG9zZSgpID09IFN0cnVjdHVy
YWxMYXllckZvclJlcGxpY2FGbGF0dGVuaW5nKSB7Ci0gICAgICAgIFttX3N0cnVjdHVyYWxMYXll
ci5nZXQoKSBzZXREb3VibGVTaWRlZDptX2JhY2tmYWNlVmlzaWJpbGl0eV07Ci0KLSAgICAgICAg
aWYgKExheWVyTWFwKiBsYXllckNsb25lTWFwID0gbV9zdHJ1Y3R1cmFsTGF5ZXJDbG9uZXMuZ2V0
KCkpIHsKLSAgICAgICAgICAgIExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBsYXllckNs
b25lTWFwLT5lbmQoKTsKLSAgICAgICAgICAgIGZvciAoTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9y
IGl0ID0gbGF5ZXJDbG9uZU1hcC0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAg
ICAgICAgICAgQ0FMYXllciAqY3VyckxheWVyID0gaXQtPnNlY29uZC5nZXQoKTsKLSAgICAgICAg
ICAgICAgICBbY3VyckxheWVyIHNldERvdWJsZVNpZGVkOm1fYmFja2ZhY2VWaXNpYmlsaXR5XTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIFttX2xheWVyLmdldCgpIHNl
dERvdWJsZVNpZGVkOm1fYmFja2ZhY2VWaXNpYmlsaXR5XTsKLQotICAgIGlmIChMYXllck1hcCog
bGF5ZXJDbG9uZU1hcCA9IG1fbGF5ZXJDbG9uZXMuZ2V0KCkpIHsKLSAgICAgICAgTGF5ZXJNYXA6
OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGxheWVyQ2xvbmVNYXAtPmVuZCgpOwotICAgICAgICBmb3Ig
KExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGxheWVyQ2xvbmVNYXAtPmJlZ2luKCk7IGl0
ICE9IGVuZDsgKytpdCkgewotICAgICAgICAgICAgQ0FMYXllciAqY3VyckxheWVyID0gaXQtPnNl
Y29uZC5nZXQoKTsKLSAgICAgICAgICAgIFtjdXJyTGF5ZXIgc2V0RG91YmxlU2lkZWQ6bV9iYWNr
ZmFjZVZpc2liaWxpdHldOwotICAgICAgICB9Ci0gICAgfQotfQotCi12b2lkIEdyYXBoaWNzTGF5
ZXJNYWM6OnVwZGF0ZVN0cnVjdHVyYWxMYXllcigpCi17Ci0gICAgZW5zdXJlU3RydWN0dXJhbExh
eWVyKHN0cnVjdHVyYWxMYXllclB1cnBvc2UoKSk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1h
Yzo6ZW5zdXJlU3RydWN0dXJhbExheWVyKFN0cnVjdHVyYWxMYXllclB1cnBvc2UgcHVycG9zZSkK
LXsKLSAgICBpZiAocHVycG9zZSA9PSBOb1N0cnVjdHVyYWxMYXllcikgewotICAgICAgICBpZiAo
bV9zdHJ1Y3R1cmFsTGF5ZXIpIHsKLSAgICAgICAgICAgIC8vIFJlcGxhY2UgdGhlIHRyYW5zZm9y
bUxheWVyIGluIHRoZSBwYXJlbnQgd2l0aCB0aGlzIGxheWVyLgotICAgICAgICAgICAgW21fbGF5
ZXIuZ2V0KCkgcmVtb3ZlRnJvbVN1cGVybGF5ZXJdOwotICAgICAgICAgICAgW1ttX3N0cnVjdHVy
YWxMYXllci5nZXQoKSBzdXBlcmxheWVyXSByZXBsYWNlU3VibGF5ZXI6bV9zdHJ1Y3R1cmFsTGF5
ZXIuZ2V0KCkgd2l0aDptX2xheWVyLmdldCgpXTsKLQotICAgICAgICAgICAgbW92ZU9yQ29weUFu
aW1hdGlvbnNGb3JQcm9wZXJ0eShNb3ZlLCBBbmltYXRlZFByb3BlcnR5V2Via2l0VHJhbnNmb3Jt
LCBtX3N0cnVjdHVyYWxMYXllci5nZXQoKSwgbV9sYXllci5nZXQoKSk7Ci0gICAgICAgICAgICBt
b3ZlT3JDb3B5QW5pbWF0aW9uc0ZvclByb3BlcnR5KE1vdmUsIEFuaW1hdGVkUHJvcGVydHlPcGFj
aXR5LCBtX3N0cnVjdHVyYWxMYXllci5nZXQoKSwgbV9sYXllci5nZXQoKSk7Ci0KLSAgICAgICAg
ICAgIC8vIFJlbGVhc2UgdGhlIHN0cnVjdHVyYWwgbGF5ZXIuCi0gICAgICAgICAgICBtX3N0cnVj
dHVyYWxMYXllciA9IDA7Ci0KLSAgICAgICAgICAgIC8vIFVwZGF0ZSB0aGUgcHJvcGVydGllcyBv
ZiBtX2xheWVyIG5vdyB0aGF0IHdlIG5vIGxvbmdlciBoYXZlIGEgc3RydWN0dXJhbCBsYXllci4K
LSAgICAgICAgICAgIHVwZGF0ZUxheWVyUG9zaXRpb24oKTsKLSAgICAgICAgICAgIHVwZGF0ZUxh
eWVyU2l6ZSgpOwotICAgICAgICAgICAgdXBkYXRlQW5jaG9yUG9pbnQoKTsKLSAgICAgICAgICAg
IHVwZGF0ZVRyYW5zZm9ybSgpOwotICAgICAgICAgICAgdXBkYXRlQ2hpbGRyZW5UcmFuc2Zvcm0o
KTsKLQotICAgICAgICAgICAgdXBkYXRlU3VibGF5ZXJMaXN0KCk7Ci0gICAgICAgICAgICB1cGRh
dGVPcGFjaXR5T25MYXllcigpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0g
ICAgCi0gICAgYm9vbCBzdHJ1Y3R1cmFsTGF5ZXJDaGFuZ2VkID0gZmFsc2U7Ci0gICAgCi0gICAg
aWYgKHB1cnBvc2UgPT0gU3RydWN0dXJhbExheWVyRm9yUHJlc2VydmVzM0QpIHsKLSAgICAgICAg
Q2xhc3MgdHJhbnNmb3JtTGF5ZXJDbGFzcyA9IE5TQ2xhc3NGcm9tU3RyaW5nKEAiQ0FUcmFuc2Zv
cm1MYXllciIpOwotICAgICAgICBpZiAoIXRyYW5zZm9ybUxheWVyQ2xhc3MpCi0gICAgICAgICAg
ICByZXR1cm47Ci0KLSAgICAgICAgaWYgKG1fc3RydWN0dXJhbExheWVyICYmICFbbV9zdHJ1Y3R1
cmFsTGF5ZXIuZ2V0KCkgaXNLaW5kT2ZDbGFzczp0cmFuc2Zvcm1MYXllckNsYXNzXSkKLSAgICAg
ICAgICAgIG1fc3RydWN0dXJhbExheWVyID0gMDsKLSAgICAgICAgCi0gICAgICAgIGlmICghbV9z
dHJ1Y3R1cmFsTGF5ZXIpIHsKLSAgICAgICAgICAgIG1fc3RydWN0dXJhbExheWVyLmFkb3B0TlMo
W1t0cmFuc2Zvcm1MYXllckNsYXNzIGFsbG9jXSBpbml0XSk7Ci0gICAgICAgICAgICBzdHJ1Y3R1
cmFsTGF5ZXJDaGFuZ2VkID0gdHJ1ZTsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAg
IGlmIChtX3N0cnVjdHVyYWxMYXllciAmJiAhW21fc3RydWN0dXJhbExheWVyLmdldCgpIGlzTWVt
YmVyT2ZDbGFzczpbQ0FMYXllciBzZWxmXV0pCi0gICAgICAgICAgICBtX3N0cnVjdHVyYWxMYXll
ciA9IDA7Ci0KLSAgICAgICAgaWYgKCFtX3N0cnVjdHVyYWxMYXllcikgewotICAgICAgICAgICAg
bV9zdHJ1Y3R1cmFsTGF5ZXIuYWRvcHROUyhbW0NBTGF5ZXIgYWxsb2NdIGluaXRdKTsKLSAgICAg
ICAgICAgIHN0cnVjdHVyYWxMYXllckNoYW5nZWQgPSB0cnVlOwotICAgICAgICB9Ci0gICAgfQot
ICAgIAotICAgIGlmICghc3RydWN0dXJhbExheWVyQ2hhbmdlZCkKLSAgICAgICAgcmV0dXJuOwot
ICAgIAotICAgIC8vIFR1cm4gb2ZmIGRlZmF1bHQgYW5pbWF0aW9ucy4KLSAgICBbbV9zdHJ1Y3R1
cmFsTGF5ZXIuZ2V0KCkgc2V0U3R5bGU6W05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVj
dDpudWxsQWN0aW9uc0RpY3Rpb25hcnkoKSBmb3JLZXk6QCJhY3Rpb25zIl1dOwotCi0gICAgdXBk
YXRlTGF5ZXJOYW1lcygpOwotCi0gICAgLy8gVXBkYXRlIHRoZSBwcm9wZXJ0aWVzIG9mIHRoZSBz
dHJ1Y3R1cmFsIGxheWVyLgotICAgIHVwZGF0ZUxheWVyUG9zaXRpb24oKTsKLSAgICB1cGRhdGVM
YXllclNpemUoKTsKLSAgICB1cGRhdGVBbmNob3JQb2ludCgpOwotICAgIHVwZGF0ZVRyYW5zZm9y
bSgpOwotICAgIHVwZGF0ZUNoaWxkcmVuVHJhbnNmb3JtKCk7Ci0gICAgdXBkYXRlQmFja2ZhY2VW
aXNpYmlsaXR5KCk7Ci0gICAgCi0gICAgLy8gU2V0IHByb3BlcnRpZXMgb2YgbV9sYXllciB0byB0
aGVpciBkZWZhdWx0IHZhbHVlcywgc2luY2UgdGhlc2UgYXJlIGV4cHJlc3NlZCBvbiBvbiB0aGUg
c3RydWN0dXJhbCBsYXllci4KLSAgICBDR1BvaW50IHBvaW50ID0gQ0dQb2ludE1ha2UobV9zaXpl
LndpZHRoKCkgLyAyLjBmLCBtX3NpemUuaGVpZ2h0KCkgLyAyLjBmKTsKLSAgICBbbV9sYXllci5n
ZXQoKSBzZXRQb3NpdGlvbjpwb2ludF07Ci0gICAgW21fbGF5ZXIuZ2V0KCkgc2V0QW5jaG9yUG9p
bnQ6Q0dQb2ludE1ha2UoMC41ZiwgMC41ZildOwotICAgIFttX2xheWVyLmdldCgpIHNldFRyYW5z
Zm9ybTpDQVRyYW5zZm9ybTNESWRlbnRpdHldOwotICAgIFttX2xheWVyLmdldCgpIHNldE9wYWNp
dHk6MV07Ci0KLSAgICAvLyBNb3ZlIHRoaXMgbGF5ZXIgdG8gYmUgYSBjaGlsZCBvZiB0aGUgdHJh
bnNmb3JtIGxheWVyLgotICAgIFtbbV9sYXllci5nZXQoKSBzdXBlcmxheWVyXSByZXBsYWNlU3Vi
bGF5ZXI6bV9sYXllci5nZXQoKSB3aXRoOm1fc3RydWN0dXJhbExheWVyLmdldCgpXTsKLSAgICBb
bV9zdHJ1Y3R1cmFsTGF5ZXIuZ2V0KCkgYWRkU3VibGF5ZXI6bV9sYXllci5nZXQoKV07Ci0KLSAg
ICBtb3ZlT3JDb3B5QW5pbWF0aW9uc0ZvclByb3BlcnR5KE1vdmUsIEFuaW1hdGVkUHJvcGVydHlX
ZWJraXRUcmFuc2Zvcm0sIG1fbGF5ZXIuZ2V0KCksIG1fc3RydWN0dXJhbExheWVyLmdldCgpKTsK
LSAgICBtb3ZlT3JDb3B5QW5pbWF0aW9uc0ZvclByb3BlcnR5KE1vdmUsIEFuaW1hdGVkUHJvcGVy
dHlPcGFjaXR5LCBtX2xheWVyLmdldCgpLCBtX3N0cnVjdHVyYWxMYXllci5nZXQoKSk7Ci0gICAg
Ci0gICAgdXBkYXRlU3VibGF5ZXJMaXN0KCk7Ci0gICAgdXBkYXRlT3BhY2l0eU9uTGF5ZXIoKTsK
LX0KLQotR3JhcGhpY3NMYXllck1hYzo6U3RydWN0dXJhbExheWVyUHVycG9zZSBHcmFwaGljc0xh
eWVyTWFjOjpzdHJ1Y3R1cmFsTGF5ZXJQdXJwb3NlKCkgY29uc3QKLXsKLSAgICBpZiAocHJlc2Vy
dmVzM0QoKSkKLSAgICAgICAgcmV0dXJuIFN0cnVjdHVyYWxMYXllckZvclByZXNlcnZlczNEOwot
ICAgIAotICAgIGlmIChpc1JlcGxpY2F0ZWQoKSkKLSAgICAgICAgcmV0dXJuIFN0cnVjdHVyYWxM
YXllckZvclJlcGxpY2FGbGF0dGVuaW5nOwotICAgIAotICAgIHJldHVybiBOb1N0cnVjdHVyYWxM
YXllcjsKLX0KLQotdm9pZCBHcmFwaGljc0xheWVyTWFjOjp1cGRhdGVMYXllckRyYXdzQ29udGVu
dCgpCi17Ci0gICAgYm9vbCBuZWVkVGlsZWRMYXllciA9IHJlcXVpcmVzVGlsZWRMYXllcihtX3Np
emUpOwotICAgIGlmIChuZWVkVGlsZWRMYXllciAhPSBtX3VzaW5nVGlsZWRMYXllcikKLSAgICAg
ICAgc3dhcEZyb21PclRvVGlsZWRMYXllcihuZWVkVGlsZWRMYXllcik7Ci0KLSAgICBpZiAobV9k
cmF3c0NvbnRlbnQpCi0gICAgICAgIFttX2xheWVyLmdldCgpIHNldE5lZWRzRGlzcGxheV07Ci0g
ICAgZWxzZQotICAgICAgICBbbV9sYXllci5nZXQoKSBzZXRDb250ZW50czpuaWxdOwotCi0gICAg
dXBkYXRlRGVidWdJbmRpY2F0b3JzKCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6dXBk
YXRlTGF5ZXJCYWNrZ3JvdW5kQ29sb3IoKQotewotICAgIGlmICghbV9jb250ZW50c0xheWVyKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBXZSBuZXZlciBjcmVhdGUgdGhlIGNvbnRlbnRzIGxh
eWVyIGp1c3QgZm9yIGJhY2tncm91bmQgY29sb3IgeWV0LgotICAgIGlmIChtX2JhY2tncm91bmRD
b2xvclNldCkKLSAgICAgICAgc2V0TGF5ZXJCYWNrZ3JvdW5kQ29sb3IobV9jb250ZW50c0xheWVy
LmdldCgpLCBtX2JhY2tncm91bmRDb2xvcik7Ci0gICAgZWxzZQotICAgICAgICBjbGVhckxheWVy
QmFja2dyb3VuZENvbG9yKG1fY29udGVudHNMYXllci5nZXQoKSk7Ci19Ci0KLXZvaWQgR3JhcGhp
Y3NMYXllck1hYzo6dXBkYXRlQ29udGVudHNJbWFnZSgpCi17Ci0gICAgaWYgKG1fcGVuZGluZ0Nv
bnRlbnRzSW1hZ2UpIHsKLSAgICAgICAgaWYgKCFtX2NvbnRlbnRzTGF5ZXIuZ2V0KCkpIHsKLSAg
ICAgICAgICAgIFdlYkxheWVyKiBpbWFnZUxheWVyID0gW1dlYkxheWVyIGxheWVyXTsKLSNpZm5k
ZWYgTkRFQlVHCi0gICAgICAgICAgICBbaW1hZ2VMYXllciBzZXROYW1lOkAiSW1hZ2UgTGF5ZXIi
XTsKLSNlbmRpZgotICAgICAgICAgICAgc2V0dXBDb250ZW50c0xheWVyKGltYWdlTGF5ZXIpOwot
ICAgICAgICAgICAgbV9jb250ZW50c0xheWVyLmFkb3B0TlMoW2ltYWdlTGF5ZXIgcmV0YWluXSk7
Ci0gICAgICAgICAgICAvLyBtX2NvbnRlbnRzTGF5ZXIgd2lsbCBiZSBwYXJlbnRlZCBieSB1cGRh
dGVTdWJsYXllckxpc3QKLSAgICAgICAgfQotCi0gICAgICAgIC8vIEZJWE1FOiBtYXliZSBvbmx5
IGRvIHRyaWxpbmVhciBpZiB0aGUgaW1hZ2UgaXMgYmVpbmcgc2NhbGVkIGRvd24sCi0gICAgICAg
IC8vIGJ1dCB0aGVuIHdoYXQgaWYgdGhlIGxheWVyIHNpemUgY2hhbmdlcz8KLSNpZiAhZGVmaW5l
ZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkKLSAg
ICAgICAgW21fY29udGVudHNMYXllci5nZXQoKSBzZXRNaW5pZmljYXRpb25GaWx0ZXI6a0NBRmls
dGVyVHJpbGluZWFyXTsKLSNlbmRpZgotICAgICAgICBbbV9jb250ZW50c0xheWVyLmdldCgpIHNl
dENvbnRlbnRzOihpZCltX3BlbmRpbmdDb250ZW50c0ltYWdlLmdldCgpXTsKLSAgICAgICAgbV9w
ZW5kaW5nQ29udGVudHNJbWFnZSA9IDA7Ci0KLSAgICAgICAgaWYgKG1fY29udGVudHNMYXllckNs
b25lcykgewotICAgICAgICAgICAgTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fY29u
dGVudHNMYXllckNsb25lcy0+ZW5kKCk7Ci0gICAgICAgICAgICBmb3IgKExheWVyTWFwOjpjb25z
dF9pdGVyYXRvciBpdCA9IG1fY29udGVudHNMYXllckNsb25lcy0+YmVnaW4oKTsgaXQgIT0gZW5k
OyArK2l0KQotICAgICAgICAgICAgICAgIFtpdC0+c2Vjb25kLmdldCgpIHNldENvbnRlbnRzOltt
X2NvbnRlbnRzTGF5ZXIuZ2V0KCkgY29udGVudHNdXTsKLSAgICAgICAgfQotICAgICAgICAKLSAg
ICAgICAgdXBkYXRlQ29udGVudHNSZWN0KCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLy8gTm8g
aW1hZ2UuCi0gICAgICAgIC8vIG1fY29udGVudHNMYXllciB3aWxsIGJlIHJlbW92ZWQgdmlhIHVw
ZGF0ZVN1YmxheWVyTGlzdC4KLSAgICAgICAgbV9jb250ZW50c0xheWVyID0gMDsKLSAgICB9Ci19
Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6dXBkYXRlQ29udGVudHNNZWRpYUxheWVyKCkKLXsK
LSAgICAvLyBWaWRlbyBsYXllciB3YXMgc2V0IGFzIG1fY29udGVudHNMYXllciwgYW5kIHdpbGwg
Z2V0IHBhcmVudGVkIGluIHVwZGF0ZVN1YmxheWVyTGlzdCgpLgotICAgIGlmIChtX2NvbnRlbnRz
TGF5ZXIpIHsKLSAgICAgICAgc2V0dXBDb250ZW50c0xheWVyKG1fY29udGVudHNMYXllci5nZXQo
KSk7Ci0gICAgICAgIHVwZGF0ZUNvbnRlbnRzUmVjdCgpOwotICAgIH0KLX0KLQotdm9pZCBHcmFw
aGljc0xheWVyTWFjOjp1cGRhdGVDb250ZW50c0NhbnZhc0xheWVyKCkKLXsKLSAgICAvLyBDYW52
YXNMYXllciB3YXMgc2V0IGFzIG1fY29udGVudHNMYXllciwgYW5kIHdpbGwgZ2V0IHBhcmVudGVk
IGluIHVwZGF0ZVN1YmxheWVyTGlzdCgpLgotICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIpIHsKLSAg
ICAgICAgc2V0dXBDb250ZW50c0xheWVyKG1fY29udGVudHNMYXllci5nZXQoKSk7Ci0gICAgICAg
IFttX2NvbnRlbnRzTGF5ZXIuZ2V0KCkgc2V0TmVlZHNEaXNwbGF5XTsKLSAgICAgICAgdXBkYXRl
Q29udGVudHNSZWN0KCk7Ci0gICAgfQotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnVwZGF0
ZUNvbnRlbnRzUmVjdCgpCi17Ci0gICAgaWYgKCFtX2NvbnRlbnRzTGF5ZXIpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIENHUG9pbnQgcG9pbnQgPSBDR1BvaW50TWFrZShtX2NvbnRlbnRzUmVjdC54
KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fY29udGVudHNSZWN0LnkoKSk7
Ci0gICAgQ0dSZWN0IHJlY3QgPSBDR1JlY3RNYWtlKDAuMGYsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDAuMGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fY29udGVudHNS
ZWN0LndpZHRoKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fY29udGVudHNSZWN0
LmhlaWdodCgpKTsKLQotICAgIFttX2NvbnRlbnRzTGF5ZXIuZ2V0KCkgc2V0UG9zaXRpb246cG9p
bnRdOwotICAgIFttX2NvbnRlbnRzTGF5ZXIuZ2V0KCkgc2V0Qm91bmRzOnJlY3RdOwotCi0gICAg
aWYgKG1fY29udGVudHNMYXllckNsb25lcykgewotICAgICAgICBMYXllck1hcDo6Y29uc3RfaXRl
cmF0b3IgZW5kID0gbV9jb250ZW50c0xheWVyQ2xvbmVzLT5lbmQoKTsKLSAgICAgICAgZm9yIChM
YXllck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2NvbnRlbnRzTGF5ZXJDbG9uZXMtPmJlZ2lu
KCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICAgICAgQ0FMYXllciAqY3VyckxheWVyID0g
aXQtPnNlY29uZC5nZXQoKTsKLSAgICAgICAgICAgIFtjdXJyTGF5ZXIgc2V0UG9zaXRpb246cG9p
bnRdOwotICAgICAgICAgICAgW2N1cnJMYXllciBzZXRCb3VuZHM6cmVjdF07Ci0gICAgICAgIH0K
LSAgICB9Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6dXBkYXRlTWFza0xheWVyKCkKLXsK
LSAgICBDQUxheWVyICptYXNrQ0FMYXllciA9IG1fbWFza0xheWVyID8gbV9tYXNrTGF5ZXItPnBs
YXRmb3JtTGF5ZXIoKSA6IDA7Ci0gICAgW21fbGF5ZXIuZ2V0KCkgc2V0TWFzazptYXNrQ0FMYXll
cl07Ci0KLSAgICBMYXllck1hcCogbWFza0xheWVyQ2xvbmVNYXAgPSBtX21hc2tMYXllciA/IHN0
YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXJNYWMqPihtX21hc2tMYXllciktPnByaW1hcnlMYXllckNs
b25lcygpIDogMDsKLSAgICAKLSAgICBpZiAoTGF5ZXJNYXAqIGxheWVyQ2xvbmVNYXAgPSBtX2xh
eWVyQ2xvbmVzLmdldCgpKSB7Ci0gICAgICAgIExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQg
PSBsYXllckNsb25lTWFwLT5lbmQoKTsKLSAgICAgICAgZm9yIChMYXllck1hcDo6Y29uc3RfaXRl
cmF0b3IgaXQgPSBsYXllckNsb25lTWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAg
ICAgICAgICAgIENBTGF5ZXIgKmN1cnJMYXllciA9IGl0LT5zZWNvbmQuZ2V0KCk7Ci0gICAgICAg
ICAgICAKLSAgICAgICAgICAgIENBTGF5ZXIgKm1hc2tDbG9uZSA9IG1hc2tMYXllckNsb25lTWFw
ID8gbWFza0xheWVyQ2xvbmVNYXAtPmdldChpdC0+Zmlyc3QpLmdldCgpIDogMDsKLSAgICAgICAg
ICAgIFtjdXJyTGF5ZXIgc2V0TWFzazptYXNrQ2xvbmVdOwotICAgICAgICB9Ci0gICAgfQotfQot
Ci12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnVwZGF0ZVJlcGxpY2F0ZWRMYXllcnMoKQotewotICAg
IC8vIENsb25lIHRoZSBkZXNjZW5kYW50cyBvZiB0aGUgcmVwbGljYXRlZCBsYXllciwgYW5kIHBh
cmVudCB1bmRlciB1cy4KLSAgICBSZXBsaWNhU3RhdGUgcmVwbGljYVN0YXRlKFJlcGxpY2FTdGF0
ZTo6UmVwbGljYUJyYW5jaCk7Ci0KLSAgICBDQUxheWVyICpyZXBsaWNhUm9vdCA9IHJlcGxpY2F0
ZWRMYXllclJvb3QocmVwbGljYVN0YXRlKTsKLSAgICBpZiAoIXJlcGxpY2FSb290KQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBpZiAobV9zdHJ1Y3R1cmFsTGF5ZXIpCi0gICAgICAgIFttX3N0cnVj
dHVyYWxMYXllci5nZXQoKSBpbnNlcnRTdWJsYXllcjpyZXBsaWNhUm9vdCBhdEluZGV4OjBdOwot
ICAgIGVsc2UKLSAgICAgICAgW21fbGF5ZXIuZ2V0KCkgaW5zZXJ0U3VibGF5ZXI6cmVwbGljYVJv
b3QgYXRJbmRleDowXTsKLX0KLQotLy8gRm9yIG5vdywgdGhpcyBhc3N1bWVzIHRoYXQgbGF5ZXJz
IG9ubHkgZXZlciBoYXZlIG9uZSByZXBsaWNhLCBzbyByZXBsaWNhSW5kaWNlcyBjb250YWlucyBv
bmx5IDAgYW5kIDEuCi1HcmFwaGljc0xheWVyTWFjOjpDbG9uZUlEIEdyYXBoaWNzTGF5ZXJNYWM6
OlJlcGxpY2FTdGF0ZTo6Y2xvbmVJRCgpIGNvbnN0Ci17Ci0gICAgc2l6ZV90IGRlcHRoID0gbV9y
ZXBsaWNhQnJhbmNoZXMuc2l6ZSgpOwotCi0gICAgY29uc3Qgc2l6ZV90IGJpdHNQZXJVQ2hhciA9
IHNpemVvZihVQ2hhcikgKiA4OwotICAgIHNpemVfdCB2ZWN0b3JTaXplID0gKGRlcHRoICsgYml0
c1BlclVDaGFyIC0gMSkgLyBiaXRzUGVyVUNoYXI7Ci0gICAgCi0gICAgVmVjdG9yPFVDaGFyPiBy
ZXN1bHQodmVjdG9yU2l6ZSk7Ci0gICAgcmVzdWx0LmZpbGwoMCk7Ci0KLSAgICAvLyBDcmVhdGUg
YSBzdHJpbmcgZnJvbSB0aGUgYml0IHNlcXVlbmNlIHdoaWNoIHdlIGNhbiB1c2UgdG8gaWRlbnRp
ZnkgdGhlIGNsb25lLgotICAgIC8vIE5vdGUgdGhhdCB0aGUgc3RyaW5nIG1heSBjb250YWluIGVt
YmVkZGVkIG51bGxzLCBidXQgdGhhdCdzIE9LLgotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
ZGVwdGg7ICsraSkgewotICAgICAgICBVQ2hhciYgY3VyckNoYXIgPSByZXN1bHRbaSAvIGJpdHNQ
ZXJVQ2hhcl07Ci0gICAgICAgIGN1cnJDaGFyID0gKGN1cnJDaGFyIDw8IDEpIHwgbV9yZXBsaWNh
QnJhbmNoZXNbaV07Ci0gICAgfQotICAgIAotICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KHJlc3Vs
dCk7Ci19Ci0KLUNBTGF5ZXIgKkdyYXBoaWNzTGF5ZXJNYWM6OnJlcGxpY2F0ZWRMYXllclJvb3Qo
UmVwbGljYVN0YXRlJiByZXBsaWNhU3RhdGUpCi17Ci0gICAgLy8gTGltaXQgcmVwbGljYSBuZXN0
aW5nLCB0byBhdm9pZCAyXk4gZXhwbG9zaW9uIG9mIHJlcGxpY2EgbGF5ZXJzLgotICAgIGlmICgh
bV9yZXBsaWNhdGVkTGF5ZXIgfHwgcmVwbGljYVN0YXRlLnJlcGxpY2FEZXB0aCgpID09IFJlcGxp
Y2FTdGF0ZTo6bWF4UmVwbGljYURlcHRoKQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgR3Jh
cGhpY3NMYXllck1hYyogcmVwbGljYXRlZExheWVyID0gc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXll
ck1hYyo+KG1fcmVwbGljYXRlZExheWVyKTsKLSAgICAKLSAgICBDQUxheWVyICpjbG9uZWRMYXll
clJvb3QgPSByZXBsaWNhdGVkTGF5ZXItPmZldGNoQ2xvbmVMYXllcnModGhpcywgcmVwbGljYVN0
YXRlLCBSb290Q2xvbmVMZXZlbCk7Ci0gICAgRmxvYXRQb2ludCBjbG9uZVJvb3RQb3NpdGlvbiA9
IHJlcGxpY2F0ZWRMYXllci0+cG9zaXRpb25Gb3JDbG9uZVJvb3RMYXllcigpOwotCi0gICAgLy8g
UmVwbGljYSByb290IGhhcyBubyBvZmZzZXQgb3IgdHJhbnNmb3JtCi0gICAgW2Nsb25lZExheWVy
Um9vdCBzZXRQb3NpdGlvbjpjbG9uZVJvb3RQb3NpdGlvbl07Ci0gICAgW2Nsb25lZExheWVyUm9v
dCBzZXRUcmFuc2Zvcm06Q0FUcmFuc2Zvcm0zRElkZW50aXR5XTsKLQotICAgIHJldHVybiBjbG9u
ZWRMYXllclJvb3Q7Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6dXBkYXRlTGF5ZXJBbmlt
YXRpb25zKCkKLXsKLSAgICBpZiAobV9hbmltYXRpb25zVG9Qcm9jZXNzLnNpemUoKSkgewotICAg
ICAgICBBbmltYXRpb25zVG9Qcm9jZXNzTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBtX2FuaW1h
dGlvbnNUb1Byb2Nlc3MuZW5kKCk7Ci0gICAgICAgIGZvciAoQW5pbWF0aW9uc1RvUHJvY2Vzc01h
cDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2FuaW1hdGlvbnNUb1Byb2Nlc3MuYmVnaW4oKTsgaXQg
IT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICBjb25zdCBTdHJpbmcmIGN1cnJBbmltYXRpb25O
YW1lID0gaXQtPmZpcnN0OwotICAgICAgICAgICAgQW5pbWF0aW9uc01hcDo6aXRlcmF0b3IgYW5p
bWF0aW9uSXQgPSBtX3J1bm5pbmdBbmltYXRpb25zLmZpbmQoY3VyckFuaW1hdGlvbk5hbWUpOwot
ICAgICAgICAgICAgaWYgKGFuaW1hdGlvbkl0ID09IG1fcnVubmluZ0FuaW1hdGlvbnMuZW5kKCkp
Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgIGNvbnN0IEFuaW1hdGlv
blByb2Nlc3NpbmdBY3Rpb24mIHByb2Nlc3NpbmdJbmZvID0gaXQtPnNlY29uZDsKLSAgICAgICAg
ICAgIGNvbnN0IFZlY3RvcjxMYXllclByb3BlcnR5QW5pbWF0aW9uPiYgYW5pbWF0aW9ucyA9IGFu
aW1hdGlvbkl0LT5zZWNvbmQ7Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFu
aW1hdGlvbnMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgICAgICBjb25zdCBMYXllclByb3Bl
cnR5QW5pbWF0aW9uJiBjdXJyQW5pbWF0aW9uID0gYW5pbWF0aW9uc1tpXTsKLSAgICAgICAgICAg
ICAgICBzd2l0Y2ggKHByb2Nlc3NpbmdJbmZvLmFjdGlvbikgewotICAgICAgICAgICAgICAgICAg
ICBjYXNlIFJlbW92ZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZUNBQW5pbWF0aW9u
RnJvbUxheWVyKGN1cnJBbmltYXRpb24ubV9wcm9wZXJ0eSwgY3VyckFuaW1hdGlvbk5hbWUsIGN1
cnJBbmltYXRpb24ubV9pbmRleCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgICAgICAgICAgY2FzZSBQYXVzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHBh
dXNlQ0FBbmltYXRpb25PbkxheWVyKGN1cnJBbmltYXRpb24ubV9wcm9wZXJ0eSwgY3VyckFuaW1h
dGlvbk5hbWUsIGN1cnJBbmltYXRpb24ubV9pbmRleCwgcHJvY2Vzc2luZ0luZm8udGltZU9mZnNl
dCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChwcm9jZXNzaW5nSW5mby5hY3Rpb24gPT0g
UmVtb3ZlKQotICAgICAgICAgICAgICAgIG1fcnVubmluZ0FuaW1hdGlvbnMucmVtb3ZlKGN1cnJB
bmltYXRpb25OYW1lKTsKLSAgICAgICAgfQotICAgIAotICAgICAgICBtX2FuaW1hdGlvbnNUb1By
b2Nlc3MuY2xlYXIoKTsKLSAgICB9Ci0gICAgCi0gICAgc2l6ZV90IG51bUFuaW1hdGlvbnM7Ci0g
ICAgaWYgKChudW1BbmltYXRpb25zID0gbV91bmNvbWl0dGVkQW5pbWF0aW9ucy5zaXplKCkpKSB7
Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtQW5pbWF0aW9uczsgKytpKSB7Ci0g
ICAgICAgICAgICBjb25zdCBMYXllclByb3BlcnR5QW5pbWF0aW9uJiBwZW5kaW5nQW5pbWF0aW9u
ID0gbV91bmNvbWl0dGVkQW5pbWF0aW9uc1tpXTsKLSAgICAgICAgICAgIHNldENBQW5pbWF0aW9u
T25MYXllcihwZW5kaW5nQW5pbWF0aW9uLm1fYW5pbWF0aW9uLmdldCgpLCBwZW5kaW5nQW5pbWF0
aW9uLm1fcHJvcGVydHksIHBlbmRpbmdBbmltYXRpb24ubV9uYW1lLCBwZW5kaW5nQW5pbWF0aW9u
Lm1faW5kZXgsIHBlbmRpbmdBbmltYXRpb24ubV90aW1lT2Zmc2V0KTsKLSAgICAgICAgICAgIAot
ICAgICAgICAgICAgQW5pbWF0aW9uc01hcDo6aXRlcmF0b3IgaXQgPSBtX3J1bm5pbmdBbmltYXRp
b25zLmZpbmQocGVuZGluZ0FuaW1hdGlvbi5tX25hbWUpOwotICAgICAgICAgICAgaWYgKGl0ID09
IG1fcnVubmluZ0FuaW1hdGlvbnMuZW5kKCkpIHsKLSAgICAgICAgICAgICAgICBWZWN0b3I8TGF5
ZXJQcm9wZXJ0eUFuaW1hdGlvbj4gYW5pbWF0aW9uczsKLSAgICAgICAgICAgICAgICBhbmltYXRp
b25zLmFwcGVuZChwZW5kaW5nQW5pbWF0aW9uKTsKLSAgICAgICAgICAgICAgICBtX3J1bm5pbmdB
bmltYXRpb25zLmFkZChwZW5kaW5nQW5pbWF0aW9uLm1fbmFtZSwgYW5pbWF0aW9ucyk7Ci0gICAg
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIFZlY3RvcjxMYXllclByb3BlcnR5QW5p
bWF0aW9uPiYgYW5pbWF0aW9ucyA9IGl0LT5zZWNvbmQ7Ci0gICAgICAgICAgICAgICAgYW5pbWF0
aW9ucy5hcHBlbmQocGVuZGluZ0FuaW1hdGlvbik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LSAgICAgICAgCi0gICAgICAgIG1fdW5jb21pdHRlZEFuaW1hdGlvbnMuY2xlYXIoKTsKLSAgICB9
Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6c2V0Q0FBbmltYXRpb25PbkxheWVyKENBUHJv
cGVydHlBbmltYXRpb24qIGNhQW5pbSwgQW5pbWF0ZWRQcm9wZXJ0eUlEIHByb3BlcnR5LCBjb25z
dCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGludCBpbmRleCwgZG91YmxlIHRpbWVPZmZzZXQpCi17
Ci0gICAgUGxhdGZvcm1MYXllciogbGF5ZXIgPSBhbmltYXRlZExheWVyKHByb3BlcnR5KTsKLQot
ICAgIGlmICh0aW1lT2Zmc2V0KSB7Ci0gICAgICAgIFtjYUFuaW0gc2V0QmVnaW5UaW1lOkNBQ3Vy
cmVudE1lZGlhVGltZSgpIC0gdGltZU9mZnNldF07Ci0gICAgICAgIFtjYUFuaW0gc2V0VmFsdWU6
W05TTnVtYmVyIG51bWJlcldpdGhCb29sOllFU10gZm9yS2V5OldlYktpdEFuaW1hdGlvbkJlZ2lu
VGltZVNldEtleV07Ci0gICAgfQotCi0gICAgTlNTdHJpbmcgKmFuaW1hdGlvbklEID0gYW5pbWF0
aW9uSWRlbnRpZmllcihhbmltYXRpb25OYW1lLCBwcm9wZXJ0eSwgaW5kZXgpOwotCi0gICAgW2xh
eWVyIHJlbW92ZUFuaW1hdGlvbkZvcktleTphbmltYXRpb25JRF07Ci0gICAgW2xheWVyIGFkZEFu
aW1hdGlvbjpjYUFuaW0gZm9yS2V5OmFuaW1hdGlvbklEXTsKLQotICAgIGlmIChMYXllck1hcCog
bGF5ZXJDbG9uZU1hcCA9IGFuaW1hdGVkTGF5ZXJDbG9uZXMocHJvcGVydHkpKSB7Ci0gICAgICAg
IExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBsYXllckNsb25lTWFwLT5lbmQoKTsKLSAg
ICAgICAgZm9yIChMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBsYXllckNsb25lTWFwLT5i
ZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgICAgIC8vIFNraXAgaW1tZWRpYXRl
IHJlcGxpY2FzLCBzaW5jZSB0aGV5IG1vdmUgd2l0aCB0aGUgb3JpZ2luYWwuCi0gICAgICAgICAg
ICBpZiAobV9yZXBsaWNhTGF5ZXIgJiYgaXNSZXBsaWNhdGVkUm9vdENsb25lKGl0LT5maXJzdCkp
Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBDQUxheWVyICpjdXJyTGF5
ZXIgPSBpdC0+c2Vjb25kLmdldCgpOwotICAgICAgICAgICAgW2N1cnJMYXllciByZW1vdmVBbmlt
YXRpb25Gb3JLZXk6YW5pbWF0aW9uSURdOwotICAgICAgICAgICAgW2N1cnJMYXllciBhZGRBbmlt
YXRpb246Y2FBbmltIGZvcktleTphbmltYXRpb25JRF07Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0K
LS8vIFdvcmthcm91bmQgZm9yIDxyZGFyOi8vcHJvYmxlbS83MzExMzY3Pgotc3RhdGljIHZvaWQg
YnVnNzMxMTM2N1dvcmthcm91bmQoQ0FMYXllciogdHJhbnNmb3JtTGF5ZXIsIGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0pCi17Ci0gICAgaWYgKCF0cmFuc2Zvcm1MYXllcikK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgQ0FUcmFuc2Zvcm0zRCBjYVRyYW5zZm9ybTsKLSAgICBj
b3B5VHJhbnNmb3JtKGNhVHJhbnNmb3JtLCB0cmFuc2Zvcm0pOwotICAgIGNhVHJhbnNmb3JtLm00
MSArPSAxOwotICAgIFt0cmFuc2Zvcm1MYXllciBzZXRUcmFuc2Zvcm06Y2FUcmFuc2Zvcm1dOwot
Ci0gICAgY2FUcmFuc2Zvcm0ubTQxIC09IDE7Ci0gICAgW3RyYW5zZm9ybUxheWVyIHNldFRyYW5z
Zm9ybTpjYVRyYW5zZm9ybV07Ci19Ci0KLWJvb2wgR3JhcGhpY3NMYXllck1hYzo6cmVtb3ZlQ0FB
bmltYXRpb25Gcm9tTGF5ZXIoQW5pbWF0ZWRQcm9wZXJ0eUlEIHByb3BlcnR5LCBjb25zdCBTdHJp
bmcmIGFuaW1hdGlvbk5hbWUsIGludCBpbmRleCkKLXsKLSAgICBQbGF0Zm9ybUxheWVyKiBsYXll
ciA9IGFuaW1hdGVkTGF5ZXIocHJvcGVydHkpOwotCi0gICAgTlNTdHJpbmcgKmFuaW1hdGlvbklE
ID0gYW5pbWF0aW9uSWRlbnRpZmllcihhbmltYXRpb25OYW1lLCBwcm9wZXJ0eSwgaW5kZXgpOwot
Ci0gICAgaWYgKCFbbGF5ZXIgYW5pbWF0aW9uRm9yS2V5OmFuaW1hdGlvbklEXSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIAotICAgIFtsYXllciByZW1vdmVBbmltYXRpb25Gb3JLZXk6YW5p
bWF0aW9uSURdOwotICAgIGJ1ZzczMTEzNjdXb3JrYXJvdW5kKG1fc3RydWN0dXJhbExheWVyLmdl
dCgpLCBtX3RyYW5zZm9ybSk7Ci0KLSAgICBpZiAoTGF5ZXJNYXAqIGxheWVyQ2xvbmVNYXAgPSBh
bmltYXRlZExheWVyQ2xvbmVzKHByb3BlcnR5KSkgewotICAgICAgICBMYXllck1hcDo6Y29uc3Rf
aXRlcmF0b3IgZW5kID0gbGF5ZXJDbG9uZU1hcC0+ZW5kKCk7Ci0gICAgICAgIGZvciAoTGF5ZXJN
YXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbGF5ZXJDbG9uZU1hcC0+YmVnaW4oKTsgaXQgIT0gZW5k
OyArK2l0KSB7Ci0gICAgICAgICAgICAvLyBTa2lwIGltbWVkaWF0ZSByZXBsaWNhcywgc2luY2Ug
dGhleSBtb3ZlIHdpdGggdGhlIG9yaWdpbmFsLgotICAgICAgICAgICAgaWYgKG1fcmVwbGljYUxh
eWVyICYmIGlzUmVwbGljYXRlZFJvb3RDbG9uZShpdC0+Zmlyc3QpKQotICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwotCi0gICAgICAgICAgICBDQUxheWVyICpjdXJyTGF5ZXIgPSBpdC0+c2Vjb25k
LmdldCgpOwotICAgICAgICAgICAgW2N1cnJMYXllciByZW1vdmVBbmltYXRpb25Gb3JLZXk6YW5p
bWF0aW9uSURdOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCi1zdGF0
aWMgdm9pZCBjb3B5QW5pbWF0aW9uUHJvcGVydGllcyhDQVByb3BlcnR5QW5pbWF0aW9uKiBmcm9t
LCBDQVByb3BlcnR5QW5pbWF0aW9uKiB0bykKLXsKLSAgICBbdG8gc2V0QmVnaW5UaW1lOltmcm9t
IGJlZ2luVGltZV1dOwotICAgIFt0byBzZXREdXJhdGlvbjpbZnJvbSBkdXJhdGlvbl1dOwotICAg
IFt0byBzZXRSZXBlYXRDb3VudDpbZnJvbSByZXBlYXRDb3VudF1dOwotICAgIFt0byBzZXRBdXRv
cmV2ZXJzZXM6W2Zyb20gYXV0b3JldmVyc2VzXV07Ci0gICAgW3RvIHNldEZpbGxNb2RlOltmcm9t
IGZpbGxNb2RlXV07Ci0gICAgW3RvIHNldFJlbW92ZWRPbkNvbXBsZXRpb246W2Zyb20gaXNSZW1v
dmVkT25Db21wbGV0aW9uXV07Ci0gICAgW3RvIHNldEFkZGl0aXZlOltmcm9tIGlzQWRkaXRpdmVd
XTsKLSAgICBbdG8gc2V0VGltaW5nRnVuY3Rpb246W2Zyb20gdGltaW5nRnVuY3Rpb25dXTsKLQot
I2lmIEhBVkVfTU9ERVJOX1FVQVJUWkNPUkUKLSAgICBbdG8gc2V0VmFsdWVGdW5jdGlvbjpbZnJv
bSB2YWx1ZUZ1bmN0aW9uXV07Ci0jZW5kaWYKLQotICAgIGlmIChpZCBvYmplY3QgPSBbZnJvbSB2
YWx1ZUZvcktleTpXZWJLaXRBbmltYXRpb25CZWdpblRpbWVTZXRLZXldKQotICAgICAgICBbdG8g
c2V0VmFsdWU6b2JqZWN0IGZvcktleTpXZWJLaXRBbmltYXRpb25CZWdpblRpbWVTZXRLZXldOwot
fQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnBhdXNlQ0FBbmltYXRpb25PbkxheWVyKEFuaW1h
dGVkUHJvcGVydHlJRCBwcm9wZXJ0eSwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBpbnQg
aW5kZXgsIGRvdWJsZSB0aW1lT2Zmc2V0KQotewotICAgIFBsYXRmb3JtTGF5ZXIqIGxheWVyID0g
YW5pbWF0ZWRMYXllcihwcm9wZXJ0eSk7Ci0KLSAgICBOU1N0cmluZyAqYW5pbWF0aW9uSUQgPSBh
bmltYXRpb25JZGVudGlmaWVyKGFuaW1hdGlvbk5hbWUsIHByb3BlcnR5LCBpbmRleCk7Ci0KLSAg
ICBDQUFuaW1hdGlvbiAqY2FBbmltID0gW2xheWVyIGFuaW1hdGlvbkZvcktleTphbmltYXRpb25J
RF07Ci0gICAgaWYgKCFjYUFuaW0pCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIEFuaW1hdGlv
bnMgb24gdGhlIGxheWVyIGFyZSBpbW11dGFibGUsIHNvIHdlIGhhdmUgdG8gY2xvbmUgYW5kIG1v
ZGlmeS4KLSAgICBDQVByb3BlcnR5QW5pbWF0aW9uKiBwYXVzZWRBbmltID0gbmlsOwotICAgIGlm
IChbY2FBbmltIGlzS2luZE9mQ2xhc3M6W0NBS2V5ZnJhbWVBbmltYXRpb24gY2xhc3NdXSkgewot
ICAgICAgICBDQUtleWZyYW1lQW5pbWF0aW9uKiBleGlzdGluZ0tleWZyYW1lQW5pbSA9IHN0YXRp
Y19jYXN0PENBS2V5ZnJhbWVBbmltYXRpb24qPihjYUFuaW0pOwotICAgICAgICBDQUtleWZyYW1l
QW5pbWF0aW9uKiBuZXdBbmltID0gW0NBS2V5ZnJhbWVBbmltYXRpb24gYW5pbWF0aW9uV2l0aEtl
eVBhdGg6W2V4aXN0aW5nS2V5ZnJhbWVBbmltIGtleVBhdGhdXTsKLSAgICAgICAgY29weUFuaW1h
dGlvblByb3BlcnRpZXMoZXhpc3RpbmdLZXlmcmFtZUFuaW0sIG5ld0FuaW0pOwotICAgICAgICBb
bmV3QW5pbSBzZXRWYWx1ZXM6W2V4aXN0aW5nS2V5ZnJhbWVBbmltIHZhbHVlc11dOwotICAgICAg
ICBbbmV3QW5pbSBzZXRLZXlUaW1lczpbZXhpc3RpbmdLZXlmcmFtZUFuaW0ga2V5VGltZXNdXTsK
LSAgICAgICAgW25ld0FuaW0gc2V0VGltaW5nRnVuY3Rpb25zOltleGlzdGluZ0tleWZyYW1lQW5p
bSB0aW1pbmdGdW5jdGlvbnNdXTsKLSAgICAgICAgcGF1c2VkQW5pbSA9IG5ld0FuaW07Ci0gICAg
fSBlbHNlIGlmIChbY2FBbmltIGlzS2luZE9mQ2xhc3M6W0NBQmFzaWNBbmltYXRpb24gY2xhc3Nd
XSkgewotICAgICAgICBDQUJhc2ljQW5pbWF0aW9uKiBleGlzdGluZ1Byb3BlcnR5QW5pbSA9IHN0
YXRpY19jYXN0PENBQmFzaWNBbmltYXRpb24qPihjYUFuaW0pOwotICAgICAgICBDQUJhc2ljQW5p
bWF0aW9uKiBuZXdBbmltID0gW0NBQmFzaWNBbmltYXRpb24gYW5pbWF0aW9uV2l0aEtleVBhdGg6
W2V4aXN0aW5nUHJvcGVydHlBbmltIGtleVBhdGhdXTsKLSAgICAgICAgY29weUFuaW1hdGlvblBy
b3BlcnRpZXMoZXhpc3RpbmdQcm9wZXJ0eUFuaW0sIG5ld0FuaW0pOwotICAgICAgICBbbmV3QW5p
bSBzZXRGcm9tVmFsdWU6W2V4aXN0aW5nUHJvcGVydHlBbmltIGZyb21WYWx1ZV1dOwotICAgICAg
ICBbbmV3QW5pbSBzZXRUb1ZhbHVlOltleGlzdGluZ1Byb3BlcnR5QW5pbSB0b1ZhbHVlXV07Ci0g
ICAgICAgIHBhdXNlZEFuaW0gPSBuZXdBbmltOwotICAgIH0KLQotICAgIC8vIHBhdXNlZEFuaW0g
aGFzIHRoZSBiZWdpblRpbWUgb2YgY2FBbmltIGFscmVhZHkuCi0gICAgW3BhdXNlZEFuaW0gc2V0
U3BlZWQ6MF07Ci0gICAgW3BhdXNlZEFuaW0gc2V0VGltZU9mZnNldDp0aW1lT2Zmc2V0XTsKLSAg
ICAKLSAgICBbbGF5ZXIgYWRkQW5pbWF0aW9uOnBhdXNlZEFuaW0gZm9yS2V5OmFuaW1hdGlvbklE
XTsgIC8vIFRoaXMgd2lsbCByZXBsYWNlIHRoZSBydW5uaW5nIGFuaW1hdGlvbi4KLQotICAgIC8v
IFBhdXNlIHRoZSBhbmltYXRpb25zIG9uIHRoZSBjbG9uZXMgdG9vLgotICAgIGlmIChMYXllck1h
cCogbGF5ZXJDbG9uZU1hcCA9IGFuaW1hdGVkTGF5ZXJDbG9uZXMocHJvcGVydHkpKSB7Ci0gICAg
ICAgIExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBsYXllckNsb25lTWFwLT5lbmQoKTsK
LSAgICAgICAgZm9yIChMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBsYXllckNsb25lTWFw
LT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgICAgIC8vIFNraXAgaW1tZWRp
YXRlIHJlcGxpY2FzLCBzaW5jZSB0aGV5IG1vdmUgd2l0aCB0aGUgb3JpZ2luYWwuCi0gICAgICAg
ICAgICBpZiAobV9yZXBsaWNhTGF5ZXIgJiYgaXNSZXBsaWNhdGVkUm9vdENsb25lKGl0LT5maXJz
dCkpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBDQUxheWVyICpjdXJy
TGF5ZXIgPSBpdC0+c2Vjb25kLmdldCgpOwotICAgICAgICAgICAgW2N1cnJMYXllciBhZGRBbmlt
YXRpb246cGF1c2VkQW5pbSBmb3JLZXk6YW5pbWF0aW9uSURdOwotICAgICAgICB9Ci0gICAgfQot
fQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnNldENvbnRlbnRzVG9DYW52YXMoUGxhdGZvcm1M
YXllciogY2FudmFzTGF5ZXIpCi17Ci0gICAgaWYgKGNhbnZhc0xheWVyID09IG1fY29udGVudHNM
YXllcikKLSAgICAgICAgcmV0dXJuOwotICAgICAgICAKLSAgICBtX2NvbnRlbnRzTGF5ZXIgPSBj
YW52YXNMYXllcjsKLSAgICBpZiAobV9jb250ZW50c0xheWVyICYmIFttX2NvbnRlbnRzTGF5ZXIu
Z2V0KCkgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzZXRMYXllck93bmVyOildKQotICAg
ICAgICBbKGlkKW1fY29udGVudHNMYXllci5nZXQoKSBzZXRMYXllck93bmVyOnRoaXNdOwotICAg
IAotICAgIG1fY29udGVudHNMYXllclB1cnBvc2UgPSBjYW52YXNMYXllciA/IENvbnRlbnRzTGF5
ZXJGb3JDYW52YXMgOiBOb0NvbnRlbnRzTGF5ZXI7Ci0KLSAgICBub3RlU3VibGF5ZXJzQ2hhbmdl
ZCgpOwotICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChDb250ZW50c0NhbnZhc0xheWVyQ2hh
bmdlZCk7Ci19Ci0gICAgCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnJlcGFpbnRMYXllckRpcnR5
UmVjdHMoKQotewotICAgIGlmICghbV9kaXJ0eVJlY3RzLnNpemUoKSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2RpcnR5UmVjdHMuc2l6ZSgpOyArK2kp
Ci0gICAgICAgIFttX2xheWVyLmdldCgpIHNldE5lZWRzRGlzcGxheUluUmVjdDptX2RpcnR5UmVj
dHNbaV1dOwotICAgIAotICAgIG1fZGlydHlSZWN0cy5jbGVhcigpOwotfQotCi12b2lkIEdyYXBo
aWNzTGF5ZXJNYWM6OnVwZGF0ZUNvbnRlbnRzTmVlZHNEaXNwbGF5KCkKLXsKLSAgICBpZiAobV9j
b250ZW50c0xheWVyKQotICAgICAgICBbbV9jb250ZW50c0xheWVyLmdldCgpIHNldE5lZWRzRGlz
cGxheV07Ci19Ci0KLWJvb2wgR3JhcGhpY3NMYXllck1hYzo6Y3JlYXRlQW5pbWF0aW9uRnJvbUtl
eWZyYW1lcyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVMaXN0LCBjb25zdCBBbmltYXRp
b24qIGFuaW1hdGlvbiwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBkb3VibGUgdGltZU9m
ZnNldCkKLXsKLSAgICBBU1NFUlQodmFsdWVMaXN0LnByb3BlcnR5KCkgIT0gQW5pbWF0ZWRQcm9w
ZXJ0eVdlYmtpdFRyYW5zZm9ybSk7Ci0KLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7
Ci0gICAgCi0gICAgYm9vbCBpc0tleWZyYW1lID0gdmFsdWVMaXN0LnNpemUoKSA+IDI7Ci0gICAg
Ym9vbCB2YWx1ZXNPSzsKLSAgICAKLSAgICBib29sIGFkZGl0aXZlID0gZmFsc2U7Ci0gICAgaW50
IGFuaW1hdGlvbkluZGV4ID0gMDsKLSAgICAKLSAgICBDQVByb3BlcnR5QW5pbWF0aW9uKiBjYUFu
aW1hdGlvbjsKLSAgICBpZiAoaXNLZXlmcmFtZSkgewotICAgICAgICBDQUtleWZyYW1lQW5pbWF0
aW9uKiBrZXlmcmFtZUFuaW0gPSBjcmVhdGVLZXlmcmFtZUFuaW1hdGlvbihhbmltYXRpb24sIHZh
bHVlTGlzdC5wcm9wZXJ0eSgpLCBhZGRpdGl2ZSk7Ci0gICAgICAgIHZhbHVlc09LID0gc2V0QW5p
bWF0aW9uS2V5ZnJhbWVzKHZhbHVlTGlzdCwgYW5pbWF0aW9uLCBrZXlmcmFtZUFuaW0pOwotICAg
ICAgICBjYUFuaW1hdGlvbiA9IGtleWZyYW1lQW5pbTsKLSAgICB9IGVsc2UgewotICAgICAgICBD
QUJhc2ljQW5pbWF0aW9uKiBiYXNpY0FuaW0gPSBjcmVhdGVCYXNpY0FuaW1hdGlvbihhbmltYXRp
b24sIHZhbHVlTGlzdC5wcm9wZXJ0eSgpLCBhZGRpdGl2ZSk7Ci0gICAgICAgIHZhbHVlc09LID0g
c2V0QW5pbWF0aW9uRW5kcG9pbnRzKHZhbHVlTGlzdCwgYW5pbWF0aW9uLCBiYXNpY0FuaW0pOwot
ICAgICAgICBjYUFuaW1hdGlvbiA9IGJhc2ljQW5pbTsKLSAgICB9Ci0gICAgCi0gICAgaWYgKCF2
YWx1ZXNPSykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgbV91bmNvbWl0dGVkQW5pbWF0
aW9ucy5hcHBlbmQoTGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbihjYUFuaW1hdGlvbiwgYW5pbWF0aW9u
TmFtZSwgdmFsdWVMaXN0LnByb3BlcnR5KCksIGFuaW1hdGlvbkluZGV4LCB0aW1lT2Zmc2V0KSk7
Ci0gICAgCi0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLQotICAgIHJldHVybiB0cnVl
OwotfQotCi1ib29sIEdyYXBoaWNzTGF5ZXJNYWM6OmNyZWF0ZVRyYW5zZm9ybUFuaW1hdGlvbnNG
cm9tS2V5ZnJhbWVzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3QsIGNvbnN0IEFu
aW1hdGlvbiogYW5pbWF0aW9uLCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGRvdWJsZSB0
aW1lT2Zmc2V0LCBjb25zdCBJbnRTaXplJiBib3hTaXplKQotewotICAgIEFTU0VSVCh2YWx1ZUxp
c3QucHJvcGVydHkoKSA9PSBBbmltYXRlZFByb3BlcnR5V2Via2l0VHJhbnNmb3JtKTsKLQotICAg
IFRyYW5zZm9ybU9wZXJhdGlvbkxpc3QgZnVuY3Rpb25MaXN0OwotICAgIGJvb2wgbGlzdHNNYXRj
aCwgaGFzQmlnUm90YXRpb247Ci0gICAgZmV0Y2hUcmFuc2Zvcm1PcGVyYXRpb25MaXN0KHZhbHVl
TGlzdCwgZnVuY3Rpb25MaXN0LCBsaXN0c01hdGNoLCBoYXNCaWdSb3RhdGlvbik7Ci0KLSAgICAv
LyBXZSBuZWVkIHRvIGZhbGwgYmFjayB0byBzb2Z0d2FyZSBhbmltYXRpb24gaWYgd2UgZG9uJ3Qg
aGF2ZSBzZXRWYWx1ZUZ1bmN0aW9uOiwgYW5kCi0gICAgLy8gd2Ugd291bGQgbmVlZCB0byBhbmlt
YXRlIGVhY2ggaW5jb21pbmcgdHJhbnNmb3JtIGZ1bmN0aW9uIHNlcGFyYXRlbHkuIFRoaXMgaXMg
dGhlCi0gICAgLy8gY2FzZSBpZiB3ZSBoYXZlIGEgcm90YXRpb24gPj0gMTgwIG9yIHdlIGhhdmUg
bW9yZSB0aGFuIG9uZSB0cmFuc2Zvcm0gZnVuY3Rpb24uCi0gICAgaWYgKChoYXNCaWdSb3RhdGlv
biB8fCBmdW5jdGlvbkxpc3Quc2l6ZSgpID4gMSkgJiYgIWNhVmFsdWVGdW5jdGlvblN1cHBvcnRl
ZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBib29sIHZhbGlkTWF0cmljZXMgPSB0
cnVlOwotCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotCi0gICAgLy8gSWYgZnVu
Y3Rpb25MaXN0cyBkb24ndCBtYXRjaCB3ZSBkbyBhIG1hdHJpeCBhbmltYXRpb24sIG90aGVyd2lz
ZSB3ZSBkbyBhIGNvbXBvbmVudCBoYXJkd2FyZSBhbmltYXRpb24uCi0gICAgLy8gQWxzbywgd2Ug
Y2FuJ3QgZG8gY29tcG9uZW50IGFuaW1hdGlvbiB1bmxlc3Mgd2UgaGF2ZSB2YWx1ZUZ1bmN0aW9u
LCBzbyB3ZSBuZWVkIHRvIGRvIG1hdHJpeCBhbmltYXRpb24KLSAgICAvLyBpZiB0aGF0J3Mgbm90
IHRydWUgYXMgd2VsbC4KLSAgICBib29sIGlzTWF0cml4QW5pbWF0aW9uID0gIWxpc3RzTWF0Y2gg
fHwgIWNhVmFsdWVGdW5jdGlvblN1cHBvcnRlZCgpOwotICAgIAotICAgIHNpemVfdCBudW1Bbmlt
YXRpb25zID0gaXNNYXRyaXhBbmltYXRpb24gPyAxIDogZnVuY3Rpb25MaXN0LnNpemUoKTsKLSAg
ICBib29sIGlzS2V5ZnJhbWUgPSB2YWx1ZUxpc3Quc2l6ZSgpID4gMjsKLSAgICAKLSAgICAvLyBJ
dGVyYXRlIHRocm91Z2ggdGhlIHRyYW5zZm9ybSBmdW5jdGlvbnMsIHNlbmRpbmcgYW4gYW5pbWF0
aW9uIGZvciBlYWNoIG9uZS4KLSAgICBmb3IgKHNpemVfdCBhbmltYXRpb25JbmRleCA9IDA7IGFu
aW1hdGlvbkluZGV4IDwgbnVtQW5pbWF0aW9uczsgKythbmltYXRpb25JbmRleCkgewotICAgICAg
ICBUcmFuc2Zvcm1PcGVyYXRpb246Ok9wZXJhdGlvblR5cGUgdHJhbnNmb3JtT3AgPSBpc01hdHJp
eEFuaW1hdGlvbiA/IFRyYW5zZm9ybU9wZXJhdGlvbjo6TUFUUklYXzNEIDogZnVuY3Rpb25MaXN0
W2FuaW1hdGlvbkluZGV4XTsKLSAgICAgICAgQ0FQcm9wZXJ0eUFuaW1hdGlvbiogY2FBbmltYXRp
b247Ci0KLSNpZiBkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpIHx8IGRlZmluZWQoQlVJTERJ
TkdfT05fU05PV19MRU9QQVJEKQotICAgICAgICAvLyBDQSBhcHBsaWVzIGFuaW1hdGlvbnMgaW4g
cmV2ZXJzZSBvcmRlciAoPHJkYXI6Ly9wcm9ibGVtLzcwOTU2Mzg+KSBzbyB3ZSBuZWVkIHRoZSBs
YXN0IG9uZSB3ZSBhZGQgKHBlciBwcm9wZXJ0eSkKLSAgICAgICAgLy8gdG8gYmUgbm9uLWFkZGl0
aXZlLgotICAgICAgICBib29sIGFkZGl0aXZlID0gYW5pbWF0aW9uSW5kZXggPCAobnVtQW5pbWF0
aW9ucyAtIDEpOwotI2Vsc2UKLSAgICAgICAgYm9vbCBhZGRpdGl2ZSA9IGFuaW1hdGlvbkluZGV4
ID4gMDsKLSNlbmRpZgotICAgICAgICBpZiAoaXNLZXlmcmFtZSkgewotICAgICAgICAgICAgQ0FL
ZXlmcmFtZUFuaW1hdGlvbioga2V5ZnJhbWVBbmltID0gY3JlYXRlS2V5ZnJhbWVBbmltYXRpb24o
YW5pbWF0aW9uLCB2YWx1ZUxpc3QucHJvcGVydHkoKSwgYWRkaXRpdmUpOwotICAgICAgICAgICAg
dmFsaWRNYXRyaWNlcyA9IHNldFRyYW5zZm9ybUFuaW1hdGlvbktleWZyYW1lcyh2YWx1ZUxpc3Qs
IGFuaW1hdGlvbiwga2V5ZnJhbWVBbmltLCBhbmltYXRpb25JbmRleCwgdHJhbnNmb3JtT3AsIGlz
TWF0cml4QW5pbWF0aW9uLCBib3hTaXplKTsKLSAgICAgICAgICAgIGNhQW5pbWF0aW9uID0ga2V5
ZnJhbWVBbmltOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgQ0FCYXNpY0FuaW1hdGlv
biogYmFzaWNBbmltID0gY3JlYXRlQmFzaWNBbmltYXRpb24oYW5pbWF0aW9uLCB2YWx1ZUxpc3Qu
cHJvcGVydHkoKSwgYWRkaXRpdmUpOwotICAgICAgICAgICAgdmFsaWRNYXRyaWNlcyA9IHNldFRy
YW5zZm9ybUFuaW1hdGlvbkVuZHBvaW50cyh2YWx1ZUxpc3QsIGFuaW1hdGlvbiwgYmFzaWNBbmlt
LCBhbmltYXRpb25JbmRleCwgdHJhbnNmb3JtT3AsIGlzTWF0cml4QW5pbWF0aW9uLCBib3hTaXpl
KTsKLSAgICAgICAgICAgIGNhQW5pbWF0aW9uID0gYmFzaWNBbmltOwotICAgICAgICB9Ci0gICAg
ICAgIAotICAgICAgICBpZiAoIXZhbGlkTWF0cmljZXMpCi0gICAgICAgICAgICBicmVhazsKLSAg
ICAKLSAgICAgICAgbV91bmNvbWl0dGVkQW5pbWF0aW9ucy5hcHBlbmQoTGF5ZXJQcm9wZXJ0eUFu
aW1hdGlvbihjYUFuaW1hdGlvbiwgYW5pbWF0aW9uTmFtZSwgdmFsdWVMaXN0LnByb3BlcnR5KCks
IGFuaW1hdGlvbkluZGV4LCB0aW1lT2Zmc2V0KSk7Ci0gICAgfQotCi0gICAgRU5EX0JMT0NLX09C
SkNfRVhDRVBUSU9OUzsKLQotICAgIHJldHVybiB2YWxpZE1hdHJpY2VzOwotfQotCi1DQUJhc2lj
QW5pbWF0aW9uKiBHcmFwaGljc0xheWVyTWFjOjpjcmVhdGVCYXNpY0FuaW1hdGlvbihjb25zdCBB
bmltYXRpb24qIGFuaW0sIEFuaW1hdGVkUHJvcGVydHlJRCBwcm9wZXJ0eSwgYm9vbCBhZGRpdGl2
ZSkKLXsKLSAgICBDQUJhc2ljQW5pbWF0aW9uKiBiYXNpY0FuaW0gPSBbQ0FCYXNpY0FuaW1hdGlv
biBhbmltYXRpb25XaXRoS2V5UGF0aDpwcm9wZXJ0eUlkVG9TdHJpbmcocHJvcGVydHkpXTsKLSAg
ICBzZXR1cEFuaW1hdGlvbihiYXNpY0FuaW0sIGFuaW0sIGFkZGl0aXZlKTsKLSAgICByZXR1cm4g
YmFzaWNBbmltOwotfQotCi1DQUtleWZyYW1lQW5pbWF0aW9uKiBHcmFwaGljc0xheWVyTWFjOjpj
cmVhdGVLZXlmcmFtZUFuaW1hdGlvbihjb25zdCBBbmltYXRpb24qIGFuaW0sIEFuaW1hdGVkUHJv
cGVydHlJRCBwcm9wZXJ0eSwgYm9vbCBhZGRpdGl2ZSkKLXsKLSAgICBDQUtleWZyYW1lQW5pbWF0
aW9uKiBrZXlmcmFtZUFuaW0gPSBbQ0FLZXlmcmFtZUFuaW1hdGlvbiBhbmltYXRpb25XaXRoS2V5
UGF0aDpwcm9wZXJ0eUlkVG9TdHJpbmcocHJvcGVydHkpXTsKLSAgICBzZXR1cEFuaW1hdGlvbihr
ZXlmcmFtZUFuaW0sIGFuaW0sIGFkZGl0aXZlKTsKLSAgICByZXR1cm4ga2V5ZnJhbWVBbmltOwot
fQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnNldHVwQW5pbWF0aW9uKENBUHJvcGVydHlBbmlt
YXRpb24qIHByb3BlcnR5QW5pbSwgY29uc3QgQW5pbWF0aW9uKiBhbmltLCBib29sIGFkZGl0aXZl
KQotewotICAgIGRvdWJsZSBkdXJhdGlvbiA9IGFuaW0tPmR1cmF0aW9uKCk7Ci0gICAgaWYgKGR1
cmF0aW9uIDw9IDApCi0gICAgICAgIGR1cmF0aW9uID0gY0FuaW1hdGlvbkFsbW9zdFplcm9EdXJh
dGlvbjsKLQotICAgIGZsb2F0IHJlcGVhdENvdW50ID0gYW5pbS0+aXRlcmF0aW9uQ291bnQoKTsK
LSAgICBpZiAocmVwZWF0Q291bnQgPT0gQW5pbWF0aW9uOjpJdGVyYXRpb25Db3VudEluZmluaXRl
KQotICAgICAgICByZXBlYXRDb3VudCA9IEZMVF9NQVg7Ci0gICAgZWxzZSBpZiAoYW5pbS0+ZGly
ZWN0aW9uKCkgPT0gQW5pbWF0aW9uOjpBbmltYXRpb25EaXJlY3Rpb25BbHRlcm5hdGUpCi0gICAg
ICAgIHJlcGVhdENvdW50IC89IDI7Ci0KLSAgICBOU1N0cmluZyAqZmlsbE1vZGUgPSAwOwotICAg
IHN3aXRjaCAoYW5pbS0+ZmlsbE1vZGUoKSkgewotICAgIGNhc2UgQW5pbWF0aW9uRmlsbE1vZGVO
b25lOgotICAgICAgICBmaWxsTW9kZSA9IGtDQUZpbGxNb2RlRm9yd2FyZHM7IC8vIFVzZSAiZm9y
d2FyZHMiIHJhdGhlciB0aGFuICJyZW1vdmVkIiBiZWNhdXNlIHRoZSBzdHlsZSBzeXN0ZW0gd2ls
bCByZW1vdmUgdGhlIGFuaW1hdGlvbiB3aGVuIGl0IGlzIGZpbmlzaGVkLiBUaGlzIGF2b2lkcyBh
IGZsYXNoLgotICAgICAgICBicmVhazsKLSAgICBjYXNlIEFuaW1hdGlvbkZpbGxNb2RlQmFja3dh
cmRzOgotICAgICAgICBmaWxsTW9kZSA9IGtDQUZpbGxNb2RlQm90aDsgLy8gVXNlICJib3RoIiBy
YXRoZXIgdGhhbiAiYmFja3dhcmRzIiBiZWNhdXNlIHRoZSBzdHlsZSBzeXN0ZW0gd2lsbCByZW1v
dmUgdGhlIGFuaW1hdGlvbiB3aGVuIGl0IGlzIGZpbmlzaGVkLiBUaGlzIGF2b2lkcyBhIGZsYXNo
LgotICAgICAgICBicmVhazsKLSAgICBjYXNlIEFuaW1hdGlvbkZpbGxNb2RlRm9yd2FyZHM6Ci0g
ICAgICAgZmlsbE1vZGUgPSBrQ0FGaWxsTW9kZUZvcndhcmRzOwotICAgICAgIGJyZWFrOwotICAg
IGNhc2UgQW5pbWF0aW9uRmlsbE1vZGVCb3RoOgotICAgICAgIGZpbGxNb2RlID0ga0NBRmlsbE1v
ZGVCb3RoOwotICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIFtwcm9wZXJ0eUFuaW0gc2V0RHVy
YXRpb246ZHVyYXRpb25dOwotICAgIFtwcm9wZXJ0eUFuaW0gc2V0UmVwZWF0Q291bnQ6cmVwZWF0
Q291bnRdOwotICAgIFtwcm9wZXJ0eUFuaW0gc2V0QXV0b3JldmVyc2VzOmFuaW0tPmRpcmVjdGlv
bigpXTsKLSAgICBbcHJvcGVydHlBbmltIHNldFJlbW92ZWRPbkNvbXBsZXRpb246Tk9dOwotICAg
IFtwcm9wZXJ0eUFuaW0gc2V0QWRkaXRpdmU6YWRkaXRpdmVdOwotICAgIFtwcm9wZXJ0eUFuaW0g
c2V0RmlsbE1vZGU6ZmlsbE1vZGVdOwotCi0gICAgW3Byb3BlcnR5QW5pbSBzZXREZWxlZ2F0ZTpt
X2FuaW1hdGlvbkRlbGVnYXRlLmdldCgpXTsKLX0KLQotQ0FNZWRpYVRpbWluZ0Z1bmN0aW9uKiBH
cmFwaGljc0xheWVyTWFjOjp0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKGNvbnN0IEFu
aW1hdGlvblZhbHVlKiBhbmltVmFsdWUsIGNvbnN0IEFuaW1hdGlvbiogYW5pbSkKLXsKLSAgICBj
b25zdCBUaW1pbmdGdW5jdGlvbiogdGYgPSAwOwotICAgIGlmIChhbmltVmFsdWUtPnRpbWluZ0Z1
bmN0aW9uKCkpCi0gICAgICAgIHRmID0gYW5pbVZhbHVlLT50aW1pbmdGdW5jdGlvbigpOwotICAg
IGVsc2UgaWYgKGFuaW0tPmlzVGltaW5nRnVuY3Rpb25TZXQoKSkKLSAgICAgICAgdGYgPSBhbmlt
LT50aW1pbmdGdW5jdGlvbigpLmdldCgpOwotCi0gICAgcmV0dXJuIGdldENBTWVkaWFUaW1pbmdG
dW5jdGlvbih0ZiA/IHRmIDogQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbjo6Y3JlYXRlKCkuZ2V0
KCkpOwotfQotCi1ib29sIEdyYXBoaWNzTGF5ZXJNYWM6OnNldEFuaW1hdGlvbkVuZHBvaW50cyhj
b25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVMaXN0LCBjb25zdCBBbmltYXRpb24qIGFuaW0s
IENBQmFzaWNBbmltYXRpb24qIGJhc2ljQW5pbSkKLXsKLSAgICBpZCBmcm9tVmFsdWUgPSBuaWw7
Ci0gICAgaWQgdG9WYWx1ZSA9IG5pbDsKLQotICAgIHN3aXRjaCAodmFsdWVMaXN0LnByb3BlcnR5
KCkpIHsKLSAgICAgICAgY2FzZSBBbmltYXRlZFByb3BlcnR5T3BhY2l0eTogewotICAgICAgICAg
ICAgY29uc3QgRmxvYXRBbmltYXRpb25WYWx1ZSogc3RhcnRWYWwgPSBzdGF0aWNfY2FzdDxjb25z
dCBGbG9hdEFuaW1hdGlvblZhbHVlKj4odmFsdWVMaXN0LmF0KDApKTsKLSAgICAgICAgICAgIGNv
bnN0IEZsb2F0QW5pbWF0aW9uVmFsdWUqIGVuZFZhbCA9IHN0YXRpY19jYXN0PGNvbnN0IEZsb2F0
QW5pbWF0aW9uVmFsdWUqPih2YWx1ZUxpc3QuYXQoMSkpOwotICAgICAgICAgICAgZnJvbVZhbHVl
ID0gW05TTnVtYmVyIG51bWJlcldpdGhGbG9hdDpzdGFydFZhbC0+dmFsdWUoKV07Ci0gICAgICAg
ICAgICB0b1ZhbHVlID0gW05TTnVtYmVyIG51bWJlcldpdGhGbG9hdDplbmRWYWwtPnZhbHVlKCld
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyAgICAgLy8gd2UgZG9uJ3QgYW5pbWF0ZSBjb2xv
ciB5ZXQKLSAgICAgICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIC8vIFRoaXMgY29kZXBhdGgg
aXMgdXNlZCBmb3IgMi1rZXlmcmFtZSBhbmltYXRpb25zLCBzbyB3ZSBzdGlsbCBuZWVkIHRvIGxv
b2sgaW4gdGhlIHN0YXJ0Ci0gICAgLy8gZm9yIGEgdGltaW5nIGZ1bmN0aW9uLgotICAgIENBTWVk
aWFUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb24gPSB0aW1pbmdGdW5jdGlvbkZvckFuaW1h
dGlvblZhbHVlKHZhbHVlTGlzdC5hdCgwKSwgYW5pbSk7Ci0gICAgW2Jhc2ljQW5pbSBzZXRUaW1p
bmdGdW5jdGlvbjp0aW1pbmdGdW5jdGlvbl07Ci0KLSAgICBbYmFzaWNBbmltIHNldEZyb21WYWx1
ZTpmcm9tVmFsdWVdOwotICAgIFtiYXNpY0FuaW0gc2V0VG9WYWx1ZTp0b1ZhbHVlXTsKLQotICAg
IHJldHVybiB0cnVlOwotfQotCi1ib29sIEdyYXBoaWNzTGF5ZXJNYWM6OnNldEFuaW1hdGlvbktl
eWZyYW1lcyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVMaXN0LCBjb25zdCBBbmltYXRp
b24qIGFuaW0sIENBS2V5ZnJhbWVBbmltYXRpb24qIGtleWZyYW1lQW5pbSkKLXsKLSAgICBSZXRh
aW5QdHI8TlNNdXRhYmxlQXJyYXk+IGtleVRpbWVzKEFkb3B0TlMsIFtbTlNNdXRhYmxlQXJyYXkg
YWxsb2NdIGluaXRdKTsKLSAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IHZhbHVlcyhBZG9w
dE5TLCBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7Ci0gICAgUmV0YWluUHRyPE5TTXV0
YWJsZUFycmF5PiB0aW1pbmdGdW5jdGlvbnMoQWRvcHROUywgW1tOU011dGFibGVBcnJheSBhbGxv
Y10gaW5pdF0pOwotCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHZhbHVlTGlzdC5zaXpl
KCk7ICsraSkgewotICAgICAgICBjb25zdCBBbmltYXRpb25WYWx1ZSogY3VyVmFsdWUgPSB2YWx1
ZUxpc3QuYXQoaSk7Ci0gICAgICAgIFtrZXlUaW1lcy5nZXQoKSBhZGRPYmplY3Q6W05TTnVtYmVy
IG51bWJlcldpdGhGbG9hdDpjdXJWYWx1ZS0+a2V5VGltZSgpXV07Ci0KLSAgICAgICAgc3dpdGNo
ICh2YWx1ZUxpc3QucHJvcGVydHkoKSkgewotICAgICAgICAgICAgY2FzZSBBbmltYXRlZFByb3Bl
cnR5T3BhY2l0eTogewotICAgICAgICAgICAgICAgIGNvbnN0IEZsb2F0QW5pbWF0aW9uVmFsdWUq
IGZsb2F0VmFsdWUgPSBzdGF0aWNfY2FzdDxjb25zdCBGbG9hdEFuaW1hdGlvblZhbHVlKj4oY3Vy
VmFsdWUpOwotICAgICAgICAgICAgICAgIFt2YWx1ZXMuZ2V0KCkgYWRkT2JqZWN0OltOU051bWJl
ciBudW1iZXJXaXRoRmxvYXQ6ZmxvYXRWYWx1ZS0+dmFsdWUoKV1dOwotICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgICAgIC8vIHdlIGRvbid0IGFuaW1hdGUgY29sb3Ig
eWV0Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQotICAgICAgICBDQU1lZGlh
VGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0aW9uID0gdGltaW5nRnVuY3Rpb25Gb3JBbmltYXRp
b25WYWx1ZShjdXJWYWx1ZSwgYW5pbSk7Ci0gICAgICAgIFt0aW1pbmdGdW5jdGlvbnMuZ2V0KCkg
YWRkT2JqZWN0OnRpbWluZ0Z1bmN0aW9uXTsKLSAgICB9Ci0gICAgCi0gICAgLy8gV2UgdG9zcyB0
aGUgbGFzdCB0ZkFycmF5IHZhbHVlIGJlY2F1c2UgaXQgaGFzIHRvIG9uZSBzaG9ydGVyIHRoYW4g
dGhlIG90aGVycy4KLSAgICBbdGltaW5nRnVuY3Rpb25zLmdldCgpIHJlbW92ZUxhc3RPYmplY3Rd
OwotCi0gICAgW2tleWZyYW1lQW5pbSBzZXRLZXlUaW1lczprZXlUaW1lcy5nZXQoKV07Ci0gICAg
W2tleWZyYW1lQW5pbSBzZXRWYWx1ZXM6dmFsdWVzLmdldCgpXTsKLSAgICBba2V5ZnJhbWVBbmlt
IHNldFRpbWluZ0Z1bmN0aW9uczp0aW1pbmdGdW5jdGlvbnMuZ2V0KCldOwotICAgIAotICAgIHJl
dHVybiB0cnVlOwotfQotCi1ib29sIEdyYXBoaWNzTGF5ZXJNYWM6OnNldFRyYW5zZm9ybUFuaW1h
dGlvbkVuZHBvaW50cyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVMaXN0LCBjb25zdCBB
bmltYXRpb24qIGFuaW0sIENBQmFzaWNBbmltYXRpb24qIGJhc2ljQW5pbSwgaW50IGZ1bmN0aW9u
SW5kZXgsIFRyYW5zZm9ybU9wZXJhdGlvbjo6T3BlcmF0aW9uVHlwZSB0cmFuc2Zvcm1PcCwgYm9v
bCBpc01hdHJpeEFuaW1hdGlvbiwgY29uc3QgSW50U2l6ZSYgYm94U2l6ZSkKLXsKLSAgICBpZCBm
cm9tVmFsdWU7Ci0gICAgaWQgdG9WYWx1ZTsKLSAgICAKLSAgICBBU1NFUlQodmFsdWVMaXN0LnNp
emUoKSA9PSAyKTsKLSAgICBjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSogc3RhcnRWYWx1
ZSA9IHN0YXRpY19jYXN0PGNvbnN0IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKj4odmFsdWVMaXN0
LmF0KDApKTsKLSAgICBjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSogZW5kVmFsdWUgPSBz
dGF0aWNfY2FzdDxjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSo+KHZhbHVlTGlzdC5hdCgx
KSk7Ci0gICAgCi0gICAgaWYgKGlzTWF0cml4QW5pbWF0aW9uKSB7Ci0gICAgICAgIFRyYW5zZm9y
bWF0aW9uTWF0cml4IGZyb21UcmFuc2Zvcm0sIHRvVHJhbnNmb3JtOwotICAgICAgICBzdGFydFZh
bHVlLT52YWx1ZSgpLT5hcHBseShib3hTaXplLCBmcm9tVHJhbnNmb3JtKTsKLSAgICAgICAgZW5k
VmFsdWUtPnZhbHVlKCktPmFwcGx5KGJveFNpemUsIHRvVHJhbnNmb3JtKTsKLQotICAgICAgICAv
LyBJZiBhbnkgbWF0cml4IGlzIHNpbmd1bGFyLCBDQSB3b24ndCBhbmltYXRlIGl0IGNvcnJlY3Rs
eS4gU28gZmFsbCBiYWNrIHRvIHNvZnR3YXJlIGFuaW1hdGlvbgotICAgICAgICBpZiAoIWZyb21U
cmFuc2Zvcm0uaXNJbnZlcnRpYmxlKCkgfHwgIXRvVHJhbnNmb3JtLmlzSW52ZXJ0aWJsZSgpKQot
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIENBVHJhbnNmb3JtM0QgY2FUcmFu
c2Zvcm07Ci0gICAgICAgIGNvcHlUcmFuc2Zvcm0oY2FUcmFuc2Zvcm0sIGZyb21UcmFuc2Zvcm0p
OwotICAgICAgICBmcm9tVmFsdWUgPSBbTlNWYWx1ZSB2YWx1ZVdpdGhDQVRyYW5zZm9ybTNEOmNh
VHJhbnNmb3JtXTsKLQotICAgICAgICBjb3B5VHJhbnNmb3JtKGNhVHJhbnNmb3JtLCB0b1RyYW5z
Zm9ybSk7Ci0gICAgICAgIHRvVmFsdWUgPSBbTlNWYWx1ZSB2YWx1ZVdpdGhDQVRyYW5zZm9ybTNE
OmNhVHJhbnNmb3JtXTsKLSAgICB9IGVsc2UgewotICAgICAgICBmcm9tVmFsdWUgPSBnZXRUcmFu
c2Zvcm1GdW5jdGlvblZhbHVlKHN0YXJ0VmFsdWUtPnZhbHVlKCktPmF0KGZ1bmN0aW9uSW5kZXgp
LCB0cmFuc2Zvcm1PcCwgYm94U2l6ZSk7Ci0gICAgICAgIHRvVmFsdWUgPSBnZXRUcmFuc2Zvcm1G
dW5jdGlvblZhbHVlKGVuZFZhbHVlLT52YWx1ZSgpLT5hdChmdW5jdGlvbkluZGV4KSwgdHJhbnNm
b3JtT3AsIGJveFNpemUpOwotICAgIH0KLQotICAgIC8vIFRoaXMgY29kZXBhdGggaXMgdXNlZCBm
b3IgMi1rZXlmcmFtZSBhbmltYXRpb25zLCBzbyB3ZSBzdGlsbCBuZWVkIHRvIGxvb2sgaW4gdGhl
IHN0YXJ0Ci0gICAgLy8gZm9yIGEgdGltaW5nIGZ1bmN0aW9uLgotICAgIENBTWVkaWFUaW1pbmdG
dW5jdGlvbiogdGltaW5nRnVuY3Rpb24gPSB0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVl
KHZhbHVlTGlzdC5hdCgwKSwgYW5pbSk7Ci0gICAgW2Jhc2ljQW5pbSBzZXRUaW1pbmdGdW5jdGlv
bjp0aW1pbmdGdW5jdGlvbl07Ci0KLSAgICBbYmFzaWNBbmltIHNldEZyb21WYWx1ZTpmcm9tVmFs
dWVdOwotICAgIFtiYXNpY0FuaW0gc2V0VG9WYWx1ZTp0b1ZhbHVlXTsKLQotI2lmIEhBVkVfTU9E
RVJOX1FVQVJUWkNPUkUKLSAgICBpZiAoTlNTdHJpbmcgKnZhbHVlRnVuY3Rpb25OYW1lID0gZ2V0
VmFsdWVGdW5jdGlvbk5hbWVGb3JUcmFuc2Zvcm1PcGVyYXRpb24odHJhbnNmb3JtT3ApKQotICAg
ICAgICBbYmFzaWNBbmltIHNldFZhbHVlRnVuY3Rpb246W0NBVmFsdWVGdW5jdGlvbiBmdW5jdGlv
bldpdGhOYW1lOnZhbHVlRnVuY3Rpb25OYW1lXV07Ci0jZW5kaWYKLQotICAgIHJldHVybiB0cnVl
OwotfQotCi1ib29sIEdyYXBoaWNzTGF5ZXJNYWM6OnNldFRyYW5zZm9ybUFuaW1hdGlvbktleWZy
YW1lcyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVMaXN0LCBjb25zdCBBbmltYXRpb24q
IGFuaW1hdGlvbiwgQ0FLZXlmcmFtZUFuaW1hdGlvbioga2V5ZnJhbWVBbmltLCBpbnQgZnVuY3Rp
b25JbmRleCwgVHJhbnNmb3JtT3BlcmF0aW9uOjpPcGVyYXRpb25UeXBlIHRyYW5zZm9ybU9wVHlw
ZSwgYm9vbCBpc01hdHJpeEFuaW1hdGlvbiwgY29uc3QgSW50U2l6ZSYgYm94U2l6ZSkKLXsKLSAg
ICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IGtleVRpbWVzKEFkb3B0TlMsIFtbTlNNdXRhYmxl
QXJyYXkgYWxsb2NdIGluaXRdKTsKLSAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IHZhbHVl
cyhBZG9wdE5TLCBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7Ci0gICAgUmV0YWluUHRy
PE5TTXV0YWJsZUFycmF5PiB0aW1pbmdGdW5jdGlvbnMoQWRvcHROUywgW1tOU011dGFibGVBcnJh
eSBhbGxvY10gaW5pdF0pOwotCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHZhbHVlTGlz
dC5zaXplKCk7ICsraSkgewotICAgICAgICBjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSog
Y3VyVmFsdWUgPSBzdGF0aWNfY2FzdDxjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSo+KHZh
bHVlTGlzdC5hdChpKSk7Ci0gICAgICAgIFtrZXlUaW1lcy5nZXQoKSBhZGRPYmplY3Q6W05TTnVt
YmVyIG51bWJlcldpdGhGbG9hdDpjdXJWYWx1ZS0+a2V5VGltZSgpXV07Ci0KLSAgICAgICAgaWYg
KGlzTWF0cml4QW5pbWF0aW9uKSB7Ci0gICAgICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0
cmFuc2Zvcm07Ci0gICAgICAgICAgICBjdXJWYWx1ZS0+dmFsdWUoKS0+YXBwbHkoYm94U2l6ZSwg
dHJhbnNmb3JtKTsKLQotICAgICAgICAgICAgLy8gSWYgYW55IG1hdHJpeCBpcyBzaW5ndWxhciwg
Q0Egd29uJ3QgYW5pbWF0ZSBpdCBjb3JyZWN0bHkuIFNvIGZhbGwgYmFjayB0byBzb2Z0d2FyZSBh
bmltYXRpb24KLSAgICAgICAgICAgIGlmICghdHJhbnNmb3JtLmlzSW52ZXJ0aWJsZSgpKQotICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICAgICAgQ0FUcmFuc2Zvcm0zRCBj
YVRyYW5zZm9ybTsKLSAgICAgICAgICAgIGNvcHlUcmFuc2Zvcm0oY2FUcmFuc2Zvcm0sIHRyYW5z
Zm9ybSk7Ci0gICAgICAgICAgICBbdmFsdWVzLmdldCgpIGFkZE9iamVjdDpbTlNWYWx1ZSB2YWx1
ZVdpdGhDQVRyYW5zZm9ybTNEOmNhVHJhbnNmb3JtXV07Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICBjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb24qIHRyYW5zZm9ybU9wID0gY3VyVmFsdWUt
PnZhbHVlKCktPmF0KGZ1bmN0aW9uSW5kZXgpOwotICAgICAgICAgICAgW3ZhbHVlcy5nZXQoKSBh
ZGRPYmplY3Q6Z2V0VHJhbnNmb3JtRnVuY3Rpb25WYWx1ZSh0cmFuc2Zvcm1PcCwgdHJhbnNmb3Jt
T3BUeXBlLCBib3hTaXplKV07Ci0gICAgICAgIH0KLQotICAgICAgICBDQU1lZGlhVGltaW5nRnVu
Y3Rpb24qIHRpbWluZ0Z1bmN0aW9uID0gdGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShj
dXJWYWx1ZSwgYW5pbWF0aW9uKTsKLSAgICAgICAgW3RpbWluZ0Z1bmN0aW9ucy5nZXQoKSBhZGRP
YmplY3Q6dGltaW5nRnVuY3Rpb25dOwotICAgIH0KLSAgICAKLSAgICAvLyBXZSB0b3NzIHRoZSBs
YXN0IHRmQXJyYXkgdmFsdWUgYmVjYXVzZSBpdCBoYXMgdG8gb25lIHNob3J0ZXIgdGhhbiB0aGUg
b3RoZXJzLgotICAgIFt0aW1pbmdGdW5jdGlvbnMuZ2V0KCkgcmVtb3ZlTGFzdE9iamVjdF07Ci0K
LSAgICBba2V5ZnJhbWVBbmltIHNldEtleVRpbWVzOmtleVRpbWVzLmdldCgpXTsKLSAgICBba2V5
ZnJhbWVBbmltIHNldFZhbHVlczp2YWx1ZXMuZ2V0KCldOwotICAgIFtrZXlmcmFtZUFuaW0gc2V0
VGltaW5nRnVuY3Rpb25zOnRpbWluZ0Z1bmN0aW9ucy5nZXQoKV07Ci0KLSNpZiBIQVZFX01PREVS
Tl9RVUFSVFpDT1JFCi0gICAgaWYgKE5TU3RyaW5nICp2YWx1ZUZ1bmN0aW9uTmFtZSA9IGdldFZh
bHVlRnVuY3Rpb25OYW1lRm9yVHJhbnNmb3JtT3BlcmF0aW9uKHRyYW5zZm9ybU9wVHlwZSkpCi0g
ICAgICAgIFtrZXlmcmFtZUFuaW0gc2V0VmFsdWVGdW5jdGlvbjpbQ0FWYWx1ZUZ1bmN0aW9uIGZ1
bmN0aW9uV2l0aE5hbWU6dmFsdWVGdW5jdGlvbk5hbWVdXTsKLSNlbmRpZgotICAgIHJldHVybiB0
cnVlOwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnN1c3BlbmRBbmltYXRpb25zKGRvdWJs
ZSB0aW1lKQotewotICAgIGRvdWJsZSB0ID0gY3VycmVudFRpbWVUb01lZGlhVGltZSh0aW1lID8g
dGltZSA6IGN1cnJlbnRUaW1lKCkpOwotICAgIFtwcmltYXJ5TGF5ZXIoKSBzZXRTcGVlZDowXTsK
LSAgICBbcHJpbWFyeUxheWVyKCkgc2V0VGltZU9mZnNldDp0XTsKLQotICAgIC8vIFN1c3BlbmQg
dGhlIGFuaW1hdGlvbnMgb24gdGhlIGNsb25lcyB0b28uCi0gICAgaWYgKExheWVyTWFwKiBsYXll
ckNsb25lTWFwID0gcHJpbWFyeUxheWVyQ2xvbmVzKCkpIHsKLSAgICAgICAgTGF5ZXJNYXA6OmNv
bnN0X2l0ZXJhdG9yIGVuZCA9IGxheWVyQ2xvbmVNYXAtPmVuZCgpOwotICAgICAgICBmb3IgKExh
eWVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGxheWVyQ2xvbmVNYXAtPmJlZ2luKCk7IGl0ICE9
IGVuZDsgKytpdCkgewotICAgICAgICAgICAgQ0FMYXllciAqY3VyckxheWVyID0gaXQtPnNlY29u
ZC5nZXQoKTsKLSAgICAgICAgICAgIFtjdXJyTGF5ZXIgc2V0U3BlZWQ6MF07Ci0gICAgICAgICAg
ICBbY3VyckxheWVyIHNldFRpbWVPZmZzZXQ6dF07Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXZv
aWQgR3JhcGhpY3NMYXllck1hYzo6cmVzdW1lQW5pbWF0aW9ucygpCi17Ci0gICAgW3ByaW1hcnlM
YXllcigpIHNldFNwZWVkOjFdOwotICAgIFtwcmltYXJ5TGF5ZXIoKSBzZXRUaW1lT2Zmc2V0OjBd
OwotCi0gICAgLy8gUmVzdW1lIHRoZSBhbmltYXRpb25zIG9uIHRoZSBjbG9uZXMgdG9vLgotICAg
IGlmIChMYXllck1hcCogbGF5ZXJDbG9uZU1hcCA9IHByaW1hcnlMYXllckNsb25lcygpKSB7Ci0g
ICAgICAgIExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBsYXllckNsb25lTWFwLT5lbmQo
KTsKLSAgICAgICAgZm9yIChMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBsYXllckNsb25l
TWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgICAgIENBTGF5ZXIgKmN1
cnJMYXllciA9IGl0LT5zZWNvbmQuZ2V0KCk7Ci0gICAgICAgICAgICBbY3VyckxheWVyIHNldFNw
ZWVkOjFdOwotICAgICAgICAgICAgW2N1cnJMYXllciBzZXRUaW1lT2Zmc2V0OjBdOwotICAgICAg
ICB9Ci0gICAgfQotfQotCi1DQUxheWVyKiBHcmFwaGljc0xheWVyTWFjOjpob3N0TGF5ZXJGb3JT
dWJsYXllcnMoKSBjb25zdAotewotICAgIHJldHVybiBtX3N0cnVjdHVyYWxMYXllci5nZXQoKSA/
IG1fc3RydWN0dXJhbExheWVyLmdldCgpIDogbV9sYXllci5nZXQoKTsgCi19Ci0KLUNBTGF5ZXIq
IEdyYXBoaWNzTGF5ZXJNYWM6OmxheWVyRm9yU3VwZXJsYXllcigpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIG1fc3RydWN0dXJhbExheWVyID8gbV9zdHJ1Y3R1cmFsTGF5ZXIuZ2V0KCkgOiBtX2xheWVy
LmdldCgpOwotfQotCi1DQUxheWVyKiBHcmFwaGljc0xheWVyTWFjOjphbmltYXRlZExheWVyKEFu
aW1hdGVkUHJvcGVydHlJRCBwcm9wZXJ0eSkgY29uc3QKLXsKLSAgICByZXR1cm4gKHByb3BlcnR5
ID09IEFuaW1hdGVkUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpID8gbV9jb250ZW50c0xheWVyLmdl
dCgpIDogcHJpbWFyeUxheWVyKCk7Ci19Ci0KLUdyYXBoaWNzTGF5ZXJNYWM6OkxheWVyTWFwKiBH
cmFwaGljc0xheWVyTWFjOjphbmltYXRlZExheWVyQ2xvbmVzKEFuaW1hdGVkUHJvcGVydHlJRCBw
cm9wZXJ0eSkgY29uc3QKLXsKLSAgICByZXR1cm4gKHByb3BlcnR5ID09IEFuaW1hdGVkUHJvcGVy
dHlCYWNrZ3JvdW5kQ29sb3IpID8gbV9jb250ZW50c0xheWVyQ2xvbmVzLmdldCgpIDogcHJpbWFy
eUxheWVyQ2xvbmVzKCk7Ci19Ci0KLVBsYXRmb3JtTGF5ZXIqIEdyYXBoaWNzTGF5ZXJNYWM6OnBs
YXRmb3JtTGF5ZXIoKSBjb25zdAotewotICAgIHJldHVybiBwcmltYXJ5TGF5ZXIoKTsKLX0KLQot
dm9pZCBHcmFwaGljc0xheWVyTWFjOjpzZXREZWJ1Z0JhY2tncm91bmRDb2xvcihjb25zdCBDb2xv
ciYgY29sb3IpCi17Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgCi0gICAg
aWYgKGNvbG9yLmlzVmFsaWQoKSkKLSAgICAgICAgc2V0TGF5ZXJCYWNrZ3JvdW5kQ29sb3IobV9s
YXllci5nZXQoKSwgY29sb3IpOwotICAgIGVsc2UKLSAgICAgICAgY2xlYXJMYXllckJhY2tncm91
bmRDb2xvcihtX2xheWVyLmdldCgpKTsKLSAgICAKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJ
T05TCi19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6c2V0RGVidWdCb3JkZXIoY29uc3QgQ29s
b3ImIGNvbG9yLCBmbG9hdCBib3JkZXJXaWR0aCkKLXsKLSAgICBCRUdJTl9CTE9DS19PQkpDX0VY
Q0VQVElPTlMKLSAgICAKLSAgICBpZiAoY29sb3IuaXNWYWxpZCgpKSB7Ci0gICAgICAgIHNldExh
eWVyQm9yZGVyQ29sb3IobV9sYXllci5nZXQoKSwgY29sb3IpOwotICAgICAgICBbbV9sYXllci5n
ZXQoKSBzZXRCb3JkZXJXaWR0aDpib3JkZXJXaWR0aF07Ci0gICAgfSBlbHNlIHsKLSAgICAgICAg
Y2xlYXJCb3JkZXJDb2xvcihtX2xheWVyLmdldCgpKTsKLSAgICAgICAgW21fbGF5ZXIuZ2V0KCkg
c2V0Qm9yZGVyV2lkdGg6MF07Ci0gICAgfQotICAgIAotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQ
VElPTlMKLX0KLQotRmxvYXRTaXplIEdyYXBoaWNzTGF5ZXJNYWM6OmNvbnN0cmFpbmVkU2l6ZSgp
IGNvbnN0Ci17Ci0gICAgZmxvYXQgdGlsZUNvbHVtbnMgPSBjZWlsZihtX3NpemUud2lkdGgoKSAv
IGNUaWxlZExheWVyVGlsZVNpemUpOwotICAgIGZsb2F0IHRpbGVSb3dzID0gY2VpbGYobV9zaXpl
LmhlaWdodCgpIC8gY1RpbGVkTGF5ZXJUaWxlU2l6ZSk7Ci0gICAgZG91YmxlIG51bVRpbGVzID0g
dGlsZUNvbHVtbnMgKiB0aWxlUm93czsKLSAgICAKLSAgICBGbG9hdFNpemUgY29uc3RyYWluZWRT
aXplID0gbV9zaXplOwotICAgIGNvbnN0IHVuc2lnbmVkIGNNYXhUaWxlQ291bnQgPSA1MTI7Ci0g
ICAgd2hpbGUgKG51bVRpbGVzID4gY01heFRpbGVDb3VudCkgewotICAgICAgICAvLyBDb25zdHJh
aW4gdGhlIHdpZGVyIGRpbWVuc2lvbi4KLSAgICAgICAgaWYgKGNvbnN0cmFpbmVkU2l6ZS53aWR0
aCgpID49IGNvbnN0cmFpbmVkU2l6ZS5oZWlnaHQoKSkgewotICAgICAgICAgICAgdGlsZUNvbHVt
bnMgPSBtYXgoZmxvb3JmKGNNYXhUaWxlQ291bnQgLyB0aWxlUm93cyksIDEuMGYpOwotICAgICAg
ICAgICAgY29uc3RyYWluZWRTaXplLnNldFdpZHRoKHRpbGVDb2x1bW5zICogY1RpbGVkTGF5ZXJU
aWxlU2l6ZSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICB0aWxlUm93cyA9IG1heChm
bG9vcmYoY01heFRpbGVDb3VudCAvIHRpbGVDb2x1bW5zKSwgMS4wZik7Ci0gICAgICAgICAgICBj
b25zdHJhaW5lZFNpemUuc2V0SGVpZ2h0KHRpbGVSb3dzICogY1RpbGVkTGF5ZXJUaWxlU2l6ZSk7
Ci0gICAgICAgIH0KLSAgICAgICAgbnVtVGlsZXMgPSB0aWxlQ29sdW1ucyAqIHRpbGVSb3dzOwot
ICAgIH0KLSAgICAKLSAgICByZXR1cm4gY29uc3RyYWluZWRTaXplOwotfQotCi1ib29sIEdyYXBo
aWNzTGF5ZXJNYWM6OnJlcXVpcmVzVGlsZWRMYXllcihjb25zdCBGbG9hdFNpemUmIHNpemUpIGNv
bnN0Ci17Ci0gICAgaWYgKCFtX2RyYXdzQ29udGVudCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
Ci0gICAgLy8gRklYTUU6IGNhdGNoIHplcm8tc2l6ZSBoZWlnaHQgb3Igd2lkdGggaGVyZSAob3Ig
ZWFybGllcik/Ci0gICAgcmV0dXJuIHNpemUud2lkdGgoKSA+IGNNYXhQaXhlbERpbWVuc2lvbiB8
fCBzaXplLmhlaWdodCgpID4gY01heFBpeGVsRGltZW5zaW9uOwotfQotCi12b2lkIEdyYXBoaWNz
TGF5ZXJNYWM6OnN3YXBGcm9tT3JUb1RpbGVkTGF5ZXIoYm9vbCB1c2VUaWxlZExheWVyKQotewot
ICAgIGlmICh1c2VUaWxlZExheWVyID09IG1fdXNpbmdUaWxlZExheWVyKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBDR1NpemUgdGlsZVNpemUgPSBDR1NpemVNYWtlKGNUaWxlZExheWVyVGlsZVNp
emUsIGNUaWxlZExheWVyVGlsZVNpemUpOwotCi0gICAgUmV0YWluUHRyPENBTGF5ZXI+IG9sZExh
eWVyID0gbV9sYXllci5nZXQoKTsKLSAgICAKLSAgICBDbGFzcyBsYXllckNsYXNzID0gdXNlVGls
ZWRMYXllciA/IFtXZWJUaWxlZExheWVyIHNlbGZdIDogW1dlYkxheWVyIHNlbGZdOwotICAgIG1f
bGF5ZXIuYWRvcHROUyhbW2xheWVyQ2xhc3MgYWxsb2NdIGluaXRdKTsKLQotICAgIG1fdXNpbmdU
aWxlZExheWVyID0gdXNlVGlsZWRMYXllcjsKLQotICAgIGlmICh1c2VUaWxlZExheWVyKSB7Ci0g
ICAgICAgIFdlYlRpbGVkTGF5ZXIqIHRpbGVkTGF5ZXIgPSAoV2ViVGlsZWRMYXllciopbV9sYXll
ci5nZXQoKTsKLSAgICAgICAgW3RpbGVkTGF5ZXIgc2V0VGlsZVNpemU6dGlsZVNpemVdOwotICAg
ICAgICBbdGlsZWRMYXllciBzZXRMZXZlbHNPZkRldGFpbDoxXTsKLSAgICAgICAgW3RpbGVkTGF5
ZXIgc2V0TGV2ZWxzT2ZEZXRhaWxCaWFzOjBdOwotICAgICAgICBbdGlsZWRMYXllciBzZXRDb250
ZW50c0dyYXZpdHk6QCJib3R0b21MZWZ0Il07Ci0KLSNpZiAhSEFWRV9NT0RFUk5fUVVBUlRaQ09S
RQotICAgICAgICAvLyBUaWxlZCBsYXllciBoYXMgaXNzdWVzIHdpdGggZmxpcHBlZCBjb29yZGlu
YXRlcy4KLSAgICAgICAgc2V0Q29udGVudHNPcmllbnRhdGlvbihDb21wb3NpdGluZ0Nvb3JkaW5h
dGVzVG9wRG93bik7Ci0jZW5kaWYKLSAgICB9IGVsc2UgewotI2lmICFIQVZFX01PREVSTl9RVUFS
VFpDT1JFCi0gICAgICAgIHNldENvbnRlbnRzT3JpZW50YXRpb24oZGVmYXVsdENvbnRlbnRzT3Jp
ZW50YXRpb24oKSk7Ci0jZW5kaWYKLSAgICB9Ci0gICAgCi0gICAgW21fbGF5ZXIuZ2V0KCkgc2V0
TGF5ZXJPd25lcjp0aGlzXTsKLSAgICBzYWZlU2V0U3VibGF5ZXJzKG1fbGF5ZXIuZ2V0KCksIFtv
bGRMYXllci5nZXQoKSBzdWJsYXllcnNdKTsKLSAgICAKLSAgICBbW29sZExheWVyLmdldCgpIHN1
cGVybGF5ZXJdIHJlcGxhY2VTdWJsYXllcjpvbGRMYXllci5nZXQoKSB3aXRoOm1fbGF5ZXIuZ2V0
KCldOwotCi0gICAgdXBkYXRlQ29udGVudHNUcmFuc2Zvcm0oKTsKLQotICAgIHVwZGF0ZUxheWVy
UG9zaXRpb24oKTsKLSAgICB1cGRhdGVMYXllclNpemUoKTsKLSAgICB1cGRhdGVBbmNob3JQb2lu
dCgpOwotICAgIHVwZGF0ZVRyYW5zZm9ybSgpOwotICAgIHVwZGF0ZUNoaWxkcmVuVHJhbnNmb3Jt
KCk7Ci0gICAgdXBkYXRlTWFza3NUb0JvdW5kcygpOwotICAgIHVwZGF0ZUNvbnRlbnRzT3BhcXVl
KCk7Ci0gICAgdXBkYXRlQmFja2ZhY2VWaXNpYmlsaXR5KCk7Ci0gICAgdXBkYXRlTGF5ZXJCYWNr
Z3JvdW5kQ29sb3IoKTsKLSAgICAKLSAgICB1cGRhdGVPcGFjaXR5T25MYXllcigpOwotICAgIAot
I2lmbmRlZiBOREVCVUcKLSAgICBTdHJpbmcgbmFtZSA9IFN0cmluZzo6Zm9ybWF0KCJDQUxheWVy
KCVwKSBHcmFwaGljc0xheWVyKCVwKSAiLCBtX2xheWVyLmdldCgpLCB0aGlzKSArIG1fbmFtZTsK
LSAgICBbbV9sYXllci5nZXQoKSBzZXROYW1lOm5hbWVdOwotI2VuZGlmCi0KLSAgICAvLyBtb3Zl
IG92ZXIgYW5pbWF0aW9ucwotICAgIG1vdmVPckNvcHlBbmltYXRpb25zRm9yUHJvcGVydHkoTW92
ZSwgQW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybSwgb2xkTGF5ZXIuZ2V0KCksIG1fbGF5
ZXIuZ2V0KCkpOwotICAgIG1vdmVPckNvcHlBbmltYXRpb25zRm9yUHJvcGVydHkoTW92ZSwgQW5p
bWF0ZWRQcm9wZXJ0eU9wYWNpdHksIG9sZExheWVyLmdldCgpLCBtX2xheWVyLmdldCgpKTsKLSAg
ICBtb3ZlT3JDb3B5QW5pbWF0aW9uc0ZvclByb3BlcnR5KE1vdmUsIEFuaW1hdGVkUHJvcGVydHlC
YWNrZ3JvdW5kQ29sb3IsIG9sZExheWVyLmdldCgpLCBtX2xheWVyLmdldCgpKTsKLSAgICAKLSAg
ICAvLyBuZWVkIHRvIHRlbGwgbmV3IGxheWVyIHRvIGRyYXcgaXRzZWxmCi0gICAgc2V0TmVlZHNE
aXNwbGF5KCk7Ci0gICAgCi0gICAgdXBkYXRlRGVidWdJbmRpY2F0b3JzKCk7Ci19Ci0KLUdyYXBo
aWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBHcmFwaGljc0xheWVy
TWFjOjpkZWZhdWx0Q29udGVudHNPcmllbnRhdGlvbigpIGNvbnN0Ci17Ci0jaWYgIUhBVkVfTU9E
RVJOX1FVQVJUWkNPUkUKLSAgICAvLyBPbGRlciBRdWFydHpDb3JlIGRvZXMgbm90IHN1cHBvcnQg
LWdlb21ldHJ5RmxpcHBlZCwgc28gd2UgbWFudWFsbHkgZmxpcCB0aGUgcm9vdAotICAgIC8vIGxh
eWVyIGdlb21ldHJ5LCBhbmQgdGhlbiBmbGlwIHRoZSBjb250ZW50cyBvZiBlYWNoIGxheWVyIGJh
Y2sgc28gdGhhdCB0aGUgQ1RNIGZvciBDRwotICAgIC8vIGlzIHVuZmxpcHBlZCwgYWxsb3dpbmcg
aXQgdG8gZG8gdGhlIGNvcnJlY3QgZm9udCBhdXRvLWhpbnRpbmcuCi0gICAgcmV0dXJuIENvbXBv
c2l0aW5nQ29vcmRpbmF0ZXNCb3R0b21VcDsKLSNlbHNlCi0gICAgcmV0dXJuIENvbXBvc2l0aW5n
Q29vcmRpbmF0ZXNUb3BEb3duOwotI2VuZGlmCi19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6
dXBkYXRlQ29udGVudHNUcmFuc2Zvcm0oKQotewotI2lmICFIQVZFX01PREVSTl9RVUFSVFpDT1JF
Ci0gICAgaWYgKGNvbnRlbnRzT3JpZW50YXRpb24oKSA9PSBDb21wb3NpdGluZ0Nvb3JkaW5hdGVz
Qm90dG9tVXApIHsKLSAgICAgICAgQ0dBZmZpbmVUcmFuc2Zvcm0gY29udGVudHNUcmFuc2Zvcm0g
PSBDR0FmZmluZVRyYW5zZm9ybU1ha2VTY2FsZSgxLCAtMSk7Ci0gICAgICAgIGNvbnRlbnRzVHJh
bnNmb3JtID0gQ0dBZmZpbmVUcmFuc2Zvcm1UcmFuc2xhdGUoY29udGVudHNUcmFuc2Zvcm0sIDAs
IC1bbV9sYXllci5nZXQoKSBib3VuZHNdLnNpemUuaGVpZ2h0KTsKLSAgICAgICAgW21fbGF5ZXIu
Z2V0KCkgc2V0Q29udGVudHNUcmFuc2Zvcm06Y29udGVudHNUcmFuc2Zvcm1dOwotICAgIH0KLSNl
bmRpZgotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnNldHVwQ29udGVudHNMYXllcihDQUxh
eWVyKiBjb250ZW50c0xheWVyKQotewotICAgIC8vIFR1cm4gb2ZmIGltcGxpY2l0IGFuaW1hdGlv
bnMgb24gdGhlIGlubmVyIGxheWVyLgotICAgIFtjb250ZW50c0xheWVyIHNldFN0eWxlOltOU0Rp
Y3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3Q6bnVsbEFjdGlvbnNEaWN0aW9uYXJ5KCkgZm9y
S2V5OkAiYWN0aW9ucyJdXTsKLSAgICBbY29udGVudHNMYXllciBzZXRNYXNrc1RvQm91bmRzOllF
U107Ci0KLSAgICBpZiAoZGVmYXVsdENvbnRlbnRzT3JpZW50YXRpb24oKSA9PSBDb21wb3NpdGlu
Z0Nvb3JkaW5hdGVzQm90dG9tVXApIHsKLSAgICAgICAgQ0FUcmFuc2Zvcm0zRCBmbGlwcGVyID0g
ewotICAgICAgICAgICAgMS4wZiwgMC4wZiwgMC4wZiwgMC4wZiwKLSAgICAgICAgICAgIDAuMGYs
IC0xLjBmLCAwLjBmLCAwLjBmLAotICAgICAgICAgICAgMC4wZiwgMC4wZiwgMS4wZiwgMC4wZiwK
LSAgICAgICAgICAgIDAuMGYsIDAuMGYsIDAuMGYsIDEuMGZ9OwotICAgICAgICBbY29udGVudHNM
YXllciBzZXRUcmFuc2Zvcm06ZmxpcHBlcl07Ci0gICAgICAgIFtjb250ZW50c0xheWVyIHNldEFu
Y2hvclBvaW50OkNHUG9pbnRNYWtlKDAuMGYsIDEuMGYpXTsKLSAgICB9IGVsc2UKLSAgICAgICAg
W2NvbnRlbnRzTGF5ZXIgc2V0QW5jaG9yUG9pbnQ6Q0dQb2ludFplcm9dOwotCi0gICAgaWYgKHNo
b3dEZWJ1Z0JvcmRlcnMoKSkgewotICAgICAgICBzZXRMYXllckJvcmRlckNvbG9yKGNvbnRlbnRz
TGF5ZXIsIENvbG9yKDAsIDAsIDEyOCwgMTgwKSk7Ci0gICAgICAgIFtjb250ZW50c0xheWVyIHNl
dEJvcmRlcldpZHRoOjEuMGZdOwotICAgIH0KLX0KLQotQ0FMYXllciAqR3JhcGhpY3NMYXllck1h
Yzo6ZmluZE9yTWFrZUNsb25lKENsb25lSUQgY2xvbmVJRCwgQ0FMYXllciAqc291cmNlTGF5ZXIs
IExheWVyTWFwKiBjbG9uZXMsIENsb25lTGV2ZWwgY2xvbmVMZXZlbCkKLXsKLSAgICBpZiAoIXNv
dXJjZUxheWVyKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIENBTGF5ZXIgKnJlc3VsdExheWVy
OwotCi0gICAgLy8gQWRkIHdpdGggYSBkdW1teSB2YWx1ZSB0byBnZXQgYW4gaXRlcmF0b3IgZm9y
IHRoZSBpbnNlcnRpb24gcG9zaXRpb24sIGFuZCBhIGJvb2xlYW4gdGhhdCB0ZWxscwotICAgIC8v
IHVzIHdoZXRoZXIgdGhlcmUncyBhbiBpdGVtIHRoZXJlLiBUaGlzIHRlY2huaXF1ZSBhdm9pZHMg
dHdvIGhhc2ggbG9va3Vwcy4KLSAgICBSZXRhaW5QdHI8Q0FMYXllcj4gZHVtbXk7Ci0gICAgcGFp
cjxMYXllck1hcDo6aXRlcmF0b3IsIGJvb2w+IGFkZFJlc3VsdCA9IGNsb25lcy0+YWRkKGNsb25l
SUQsIGR1bW15KTsKLSAgICBpZiAoIWFkZFJlc3VsdC5zZWNvbmQpIHsKLSAgICAgICAgLy8gVmFs
dWUgd2FzIG5vdCBhZGRlZCwgc28gaXQgZXhpc3RzIGFscmVhZHkuCi0gICAgICAgIHJlc3VsdExh
eWVyID0gYWRkUmVzdWx0LmZpcnN0LT5zZWNvbmQuZ2V0KCk7Ci0gICAgfSBlbHNlIHsKLSAgICAg
ICAgcmVzdWx0TGF5ZXIgPSBjbG9uZUxheWVyKHNvdXJjZUxheWVyLCBjbG9uZUxldmVsKTsKLSNp
Zm5kZWYgTkRFQlVHCi0gICAgICAgIFtyZXN1bHRMYXllciBzZXROYW1lOltOU1N0cmluZyBzdHJp
bmdXaXRoRm9ybWF0OkAiQ2xvbmUgJWQgb2YgbGF5ZXIgJUAiLCBjbG9uZUlEWzBVXSwgc291cmNl
TGF5ZXJdXTsKLSNlbmRpZgotICAgICAgICBhZGRSZXN1bHQuZmlyc3QtPnNlY29uZCA9IHJlc3Vs
dExheWVyOwotICAgIH0KLQotICAgIHJldHVybiByZXN1bHRMYXllcjsKLX0gICAKLQotdm9pZCBH
cmFwaGljc0xheWVyTWFjOjplbnN1cmVDbG9uZUxheWVycyhDbG9uZUlEIGNsb25lSUQsIENBTGF5
ZXIgKiYgcHJpbWFyeUxheWVyLCBDQUxheWVyIComIHN0cnVjdHVyYWxMYXllciwgQ0FMYXllciAq
JiBjb250ZW50c0xheWVyLCBDbG9uZUxldmVsIGNsb25lTGV2ZWwpCi17Ci0gICAgc3RydWN0dXJh
bExheWVyID0gbmlsOwotICAgIGNvbnRlbnRzTGF5ZXIgPSBuaWw7Ci0KLSAgICBpZiAoIW1fbGF5
ZXJDbG9uZXMpCi0gICAgICAgIG1fbGF5ZXJDbG9uZXMgPSBuZXcgTGF5ZXJNYXA7Ci0KLSAgICBp
ZiAoIW1fc3RydWN0dXJhbExheWVyQ2xvbmVzICYmIG1fc3RydWN0dXJhbExheWVyKQotICAgICAg
ICBtX3N0cnVjdHVyYWxMYXllckNsb25lcyA9IG5ldyBMYXllck1hcDsKLQotICAgIGlmICghbV9j
b250ZW50c0xheWVyQ2xvbmVzICYmIG1fY29udGVudHNMYXllcikKLSAgICAgICAgbV9jb250ZW50
c0xheWVyQ2xvbmVzID0gbmV3IExheWVyTWFwOwotCi0gICAgcHJpbWFyeUxheWVyID0gZmluZE9y
TWFrZUNsb25lKGNsb25lSUQsIG1fbGF5ZXIuZ2V0KCksIG1fbGF5ZXJDbG9uZXMuZ2V0KCksIGNs
b25lTGV2ZWwpOwotICAgIHN0cnVjdHVyYWxMYXllciA9IGZpbmRPck1ha2VDbG9uZShjbG9uZUlE
LCBtX3N0cnVjdHVyYWxMYXllci5nZXQoKSwgbV9zdHJ1Y3R1cmFsTGF5ZXJDbG9uZXMuZ2V0KCks
IGNsb25lTGV2ZWwpOwotICAgIGNvbnRlbnRzTGF5ZXIgPSBmaW5kT3JNYWtlQ2xvbmUoY2xvbmVJ
RCwgbV9jb250ZW50c0xheWVyLmdldCgpLCBtX2NvbnRlbnRzTGF5ZXJDbG9uZXMuZ2V0KCksIGNs
b25lTGV2ZWwpOwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnJlbW92ZUNsb25lTGF5ZXJz
KCkKLXsKLSAgICBtX2xheWVyQ2xvbmVzID0gMDsKLSAgICBtX3N0cnVjdHVyYWxMYXllckNsb25l
cyA9IDA7Ci0gICAgbV9jb250ZW50c0xheWVyQ2xvbmVzID0gMDsKLX0KLQotRmxvYXRQb2ludCBH
cmFwaGljc0xheWVyTWFjOjpwb3NpdGlvbkZvckNsb25lUm9vdExheWVyKCkgY29uc3QKLXsKLSAg
ICAvLyBUaGlzIGNhbiBnZXQgY2FsbGVkIGR1cmluZyBhIHN5bmMgd2hlbiB3ZSd2ZSBqdXN0IHJl
bW92ZWQgdGhlIG1fcmVwbGljYUxheWVyLgotICAgIGlmICghbV9yZXBsaWNhTGF5ZXIpCi0gICAg
ICAgIHJldHVybiBGbG9hdFBvaW50KCk7Ci0KLSAgICBGbG9hdFBvaW50IHJlcGxpY2FQb3NpdGlv
biA9IG1fcmVwbGljYUxheWVyLT5yZXBsaWNhdGVkTGF5ZXJQb3NpdGlvbigpOwotICAgIHJldHVy
biBGbG9hdFBvaW50KHJlcGxpY2FQb3NpdGlvbi54KCkgKyBtX2FuY2hvclBvaW50LngoKSAqIG1f
c2l6ZS53aWR0aCgpLAotICAgICAgICAgICAgICAgICAgICAgIHJlcGxpY2FQb3NpdGlvbi55KCkg
KyBtX2FuY2hvclBvaW50LnkoKSAqIG1fc2l6ZS5oZWlnaHQoKSk7Ci19Ci0KLXZvaWQgR3JhcGhp
Y3NMYXllck1hYzo6cHJvcGFnYXRlTGF5ZXJDaGFuZ2VUb1JlcGxpY2FzKCkKLXsKLSAgICBmb3Ig
KEdyYXBoaWNzTGF5ZXIqIGN1cnJMYXllciA9IHRoaXM7IGN1cnJMYXllcjsgY3VyckxheWVyID0g
Y3VyckxheWVyLT5wYXJlbnQoKSkgewotICAgICAgICBHcmFwaGljc0xheWVyTWFjKiBjdXJyTGF5
ZXJDQSA9IHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXJNYWMqPihjdXJyTGF5ZXIpOwotICAgICAg
ICBpZiAoIWN1cnJMYXllckNBLT5oYXNDbG9uZUxheWVycygpKQotICAgICAgICAgICAgYnJlYWs7
Ci0KLSAgICAgICAgaWYgKGN1cnJMYXllckNBLT5yZXBsaWNhTGF5ZXIoKSkKLSAgICAgICAgICAg
IHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXJNYWMqPihjdXJyTGF5ZXJDQS0+cmVwbGljYUxheWVy
KCkpLT5ub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoUmVwbGljYXRlZExheWVyQ2hhbmdlZCk7Ci0g
ICAgfQotfQotCi1DQUxheWVyICpHcmFwaGljc0xheWVyTWFjOjpmZXRjaENsb25lTGF5ZXJzKEdy
YXBoaWNzTGF5ZXIqIHJlcGxpY2FSb290LCBSZXBsaWNhU3RhdGUmIHJlcGxpY2FTdGF0ZSwgQ2xv
bmVMZXZlbCBjbG9uZUxldmVsKQotewotICAgIENBTGF5ZXIgKnByaW1hcnlMYXllcjsKLSAgICBD
QUxheWVyICpzdHJ1Y3R1cmFsTGF5ZXI7Ci0gICAgQ0FMYXllciAqY29udGVudHNMYXllcjsKLSAg
ICBlbnN1cmVDbG9uZUxheWVycyhyZXBsaWNhU3RhdGUuY2xvbmVJRCgpLCBwcmltYXJ5TGF5ZXIs
IHN0cnVjdHVyYWxMYXllciwgY29udGVudHNMYXllciwgY2xvbmVMZXZlbCk7Ci0KLSAgICBpZiAo
bV9tYXNrTGF5ZXIpIHsKLSAgICAgICAgQ0FMYXllciAqbWFza0Nsb25lID0gc3RhdGljX2Nhc3Q8
R3JhcGhpY3NMYXllck1hYyo+KG1fbWFza0xheWVyKS0+ZmV0Y2hDbG9uZUxheWVycyhyZXBsaWNh
Um9vdCwgcmVwbGljYVN0YXRlLCBJbnRlcm1lZGlhdGVDbG9uZUxldmVsKTsKLSAgICAgICAgW3By
aW1hcnlMYXllciBzZXRNYXNrOm1hc2tDbG9uZV07Ci0gICAgfQotCi0gICAgaWYgKG1fcmVwbGlj
YXRlZExheWVyKSB7Ci0gICAgICAgIC8vIFdlIGFyZSBhIHJlcGxpY2EgYmVpbmcgYXNrZWQgZm9y
IGNsb25lcyBvZiBvdXIgbGF5ZXJzLgotICAgICAgICBDQUxheWVyICpyZXBsaWNhUm9vdCA9IHJl
cGxpY2F0ZWRMYXllclJvb3QocmVwbGljYVN0YXRlKTsKLSAgICAgICAgaWYgKCFyZXBsaWNhUm9v
dCkKLSAgICAgICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICAgICAgaWYgKHN0cnVjdHVyYWxMYXll
cikgewotICAgICAgICAgICAgW3N0cnVjdHVyYWxMYXllciBpbnNlcnRTdWJsYXllcjpyZXBsaWNh
Um9vdCBhdEluZGV4OjBdOwotICAgICAgICAgICAgcmV0dXJuIHN0cnVjdHVyYWxMYXllcjsKLSAg
ICAgICAgfQotICAgICAgICAKLSAgICAgICAgW3ByaW1hcnlMYXllciBpbnNlcnRTdWJsYXllcjpy
ZXBsaWNhUm9vdCBhdEluZGV4OjBdOwotICAgICAgICByZXR1cm4gcHJpbWFyeUxheWVyOwotICAg
IH0KLQotICAgIGNvbnN0IFZlY3RvcjxHcmFwaGljc0xheWVyKj4mIGNoaWxkTGF5ZXJzID0gY2hp
bGRyZW4oKTsKLSAgICBOU011dGFibGVBcnJheSogY2xvbmFsU3VibGF5ZXJzID0gbmlsOwotCi0g
ICAgQ0FMYXllciAqcmVwbGljYUxheWVyID0gbmlsOwotICAgIGlmIChtX3JlcGxpY2FMYXllciAm
JiBtX3JlcGxpY2FMYXllciAhPSByZXBsaWNhUm9vdCkgewotICAgICAgICAvLyBXZSBoYXZlIG5l
c3RlZCByZXBsaWNhcy4gQXNrIHRoZSByZXBsaWNhIGxheWVyIGZvciBhIGNsb25lIG9mIGl0cyBj
b250ZW50cy4KLSAgICAgICAgcmVwbGljYVN0YXRlLnNldEJyYW5jaFR5cGUoUmVwbGljYVN0YXRl
OjpSZXBsaWNhQnJhbmNoKTsKLSAgICAgICAgcmVwbGljYUxheWVyID0gc3RhdGljX2Nhc3Q8R3Jh
cGhpY3NMYXllck1hYyo+KG1fcmVwbGljYUxheWVyKS0+ZmV0Y2hDbG9uZUxheWVycyhyZXBsaWNh
Um9vdCwgcmVwbGljYVN0YXRlLCBSb290Q2xvbmVMZXZlbCk7Ci0gICAgICAgIHJlcGxpY2FTdGF0
ZS5zZXRCcmFuY2hUeXBlKFJlcGxpY2FTdGF0ZTo6Q2hpbGRCcmFuY2gpOwotICAgIH0KLSAgICAK
LSAgICBpZiAocmVwbGljYUxheWVyIHx8IHN0cnVjdHVyYWxMYXllciB8fCBjb250ZW50c0xheWVy
IHx8IGNoaWxkTGF5ZXJzLnNpemUoKSA+IDApIHsKLSAgICAgICAgY2xvbmFsU3VibGF5ZXJzID0g
W1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF07Ci0KLSAgICAgICAgaWYgKHN0cnVjdHVyYWxM
YXllcikgewotICAgICAgICAgICAgLy8gUmVwbGljYXMgcmVuZGVyIGJlaGluZCB0aGUgYWN0dWFs
IGxheWVyIGNvbnRlbnQuCi0gICAgICAgICAgICBpZiAocmVwbGljYUxheWVyKQotICAgICAgICAg
ICAgICAgIFtjbG9uYWxTdWJsYXllcnMgYWRkT2JqZWN0OnJlcGxpY2FMYXllcl07Ci0gICAgICAg
ICAgICAgICAgCi0gICAgICAgICAgICAvLyBBZGQgdGhlIHByaW1hcnkgbGF5ZXIgbmV4dC4gRXZl
biBpZiB3ZSBoYXZlIG5lZ2F0aXZlIHotb3JkZXIgY2hpbGRyZW4sIHRoZSBwcmltYXJ5IGxheWVy
IGFsd2F5cyBjb21lcyBiZWhpbmQuCi0gICAgICAgICAgICBbY2xvbmFsU3VibGF5ZXJzIGFkZE9i
amVjdDpwcmltYXJ5TGF5ZXJdOwotICAgICAgICB9IGVsc2UgaWYgKGNvbnRlbnRzTGF5ZXIpIHsK
LSAgICAgICAgICAgIC8vIEZJWE1FOiBhZGQgdGhlIGNvbnRlbnRzIGxheWVyIGluIHRoZSBjb3Jy
ZWN0IG9yZGVyIHdpdGggbmVnYXRpdmUgei1vcmRlciBjaGlsZHJlbi4KLSAgICAgICAgICAgIC8v
IFRoaXMgZG9lcyBub3QgY2F1c2UgdmlzaWJsZSByZW5kZXJpbmcgaXNzdWVzIGJlY2F1c2UgY3Vy
cmVudGx5IGNvbnRlbnRzIGxheWVycyBhcmUgb25seSB1c2VkCi0gICAgICAgICAgICAvLyBmb3Ig
cmVwbGFjZWQgZWxlbWVudHMgdGhhdCBkb24ndCBoYXZlIGNoaWxkcmVuLgotICAgICAgICAgICAg
W2Nsb25hbFN1YmxheWVycyBhZGRPYmplY3Q6Y29udGVudHNMYXllcl07Ci0gICAgICAgIH0KLSAg
ICAgICAgCi0gICAgICAgIHJlcGxpY2FTdGF0ZS5wdXNoKFJlcGxpY2FTdGF0ZTo6Q2hpbGRCcmFu
Y2gpOwotCi0gICAgICAgIHNpemVfdCBudW1DaGlsZHJlbiA9IGNoaWxkTGF5ZXJzLnNpemUoKTsK
LSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1DaGlsZHJlbjsgKytpKSB7Ci0gICAg
ICAgICAgICBHcmFwaGljc0xheWVyTWFjKiBjdXJDaGlsZCA9IHN0YXRpY19jYXN0PEdyYXBoaWNz
TGF5ZXJNYWMqPihjaGlsZExheWVyc1tpXSk7Ci0KLSAgICAgICAgICAgIENBTGF5ZXIgKmNoaWxk
TGF5ZXIgPSBjdXJDaGlsZC0+ZmV0Y2hDbG9uZUxheWVycyhyZXBsaWNhUm9vdCwgcmVwbGljYVN0
YXRlLCBJbnRlcm1lZGlhdGVDbG9uZUxldmVsKTsKLSAgICAgICAgICAgIGlmIChjaGlsZExheWVy
KQotICAgICAgICAgICAgICAgIFtjbG9uYWxTdWJsYXllcnMgYWRkT2JqZWN0OmNoaWxkTGF5ZXJd
OwotICAgICAgICB9Ci0KLSAgICAgICAgcmVwbGljYVN0YXRlLnBvcCgpOwotCi0gICAgICAgIFtj
bG9uYWxTdWJsYXllcnMgbWFrZU9iamVjdHNQZXJmb3JtU2VsZWN0b3I6QHNlbGVjdG9yKHJlbW92
ZUZyb21TdXBlcmxheWVyKV07Ci0gICAgfQotICAgIAotICAgIENBTGF5ZXIgKnJlc3VsdDsKLSAg
ICBpZiAoc3RydWN0dXJhbExheWVyKSB7Ci0gICAgICAgIFtzdHJ1Y3R1cmFsTGF5ZXIgc2V0U3Vi
bGF5ZXJzOmNsb25hbFN1YmxheWVyc107Ci0KLSAgICAgICAgaWYgKGNvbnRlbnRzTGF5ZXIpIHsK
LSAgICAgICAgICAgIC8vIElmIHdlIGhhdmUgYSB0cmFuc2Zvcm0gbGF5ZXIsIHRoZW4gdGhlIGNv
bnRlbnRzIGxheWVyIGlzIHBhcmVudGVkIGluIHRoZSAKLSAgICAgICAgICAgIC8vIHByaW1hcnkg
bGF5ZXIgKHdoaWNoIGlzIGl0c2VsZiBhIGNoaWxkIG9mIHRoZSB0cmFuc2Zvcm0gbGF5ZXIpLgot
ICAgICAgICAgICAgW3ByaW1hcnlMYXllciBzZXRTdWJsYXllcnM6bmlsXTsKLSAgICAgICAgICAg
IFtwcmltYXJ5TGF5ZXIgYWRkU3VibGF5ZXI6Y29udGVudHNMYXllcl07Ci0gICAgICAgIH0KLQot
ICAgICAgICByZXN1bHQgPSBzdHJ1Y3R1cmFsTGF5ZXI7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAg
W3ByaW1hcnlMYXllciBzZXRTdWJsYXllcnM6Y2xvbmFsU3VibGF5ZXJzXTsKLSAgICAgICAgcmVz
dWx0ID0gcHJpbWFyeUxheWVyOwotICAgIH0KLQotICAgIFtjbG9uYWxTdWJsYXllcnMgcmVsZWFz
ZV07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotQ0FMYXllciAqR3JhcGhpY3NMYXllck1hYzo6
Y2xvbmVMYXllcihDQUxheWVyICpsYXllciwgQ2xvbmVMZXZlbCBjbG9uZUxldmVsKQotewotICAg
IHN0YXRpYyBDbGFzcyB0cmFuc2Zvcm1MYXllckNsYXNzID0gTlNDbGFzc0Zyb21TdHJpbmcoQCJD
QVRyYW5zZm9ybUxheWVyIik7Ci0gICAgQ0FMYXllciAqbmV3TGF5ZXIgPSBuaWw7Ci0gICAgaWYg
KFtsYXllciBpc0tpbmRPZkNsYXNzOnRyYW5zZm9ybUxheWVyQ2xhc3NdKQotICAgICAgICBuZXdM
YXllciA9IFt0cmFuc2Zvcm1MYXllckNsYXNzIGxheWVyXTsKLSAgICBlbHNlCi0gICAgICAgIG5l
d0xheWVyID0gW0NBTGF5ZXIgbGF5ZXJdOwotCi0gICAgW25ld0xheWVyIHNldFN0eWxlOltOU0Rp
Y3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3Q6bnVsbEFjdGlvbnNEaWN0aW9uYXJ5KCkgZm9y
S2V5OkAiYWN0aW9ucyJdXTsKLSAgICAKLSAgICBbbmV3TGF5ZXIgc2V0UG9zaXRpb246W2xheWVy
IHBvc2l0aW9uXV07Ci0gICAgW25ld0xheWVyIHNldEJvdW5kczpbbGF5ZXIgYm91bmRzXV07Ci0g
ICAgW25ld0xheWVyIHNldEFuY2hvclBvaW50OltsYXllciBhbmNob3JQb2ludF1dOwotI2lmIEhB
VkVfTU9ERVJOX1FVQVJUWkNPUkUKLSAgICBbbmV3TGF5ZXIgc2V0QW5jaG9yUG9pbnRaOltsYXll
ciBhbmNob3JQb2ludFpdXTsKLSNlbmRpZgotICAgIFtuZXdMYXllciBzZXRUcmFuc2Zvcm06W2xh
eWVyIHRyYW5zZm9ybV1dOwotICAgIFtuZXdMYXllciBzZXRTdWJsYXllclRyYW5zZm9ybTpbbGF5
ZXIgc3VibGF5ZXJUcmFuc2Zvcm1dXTsKLSAgICBbbmV3TGF5ZXIgc2V0Q29udGVudHM6W2xheWVy
IGNvbnRlbnRzXV07Ci0gICAgW25ld0xheWVyIHNldE1hc2tzVG9Cb3VuZHM6W2xheWVyIG1hc2tz
VG9Cb3VuZHNdXTsKLSAgICBbbmV3TGF5ZXIgc2V0RG91YmxlU2lkZWQ6W2xheWVyIGlzRG91Ymxl
U2lkZWRdXTsKLSAgICBbbmV3TGF5ZXIgc2V0T3BhcXVlOltsYXllciBpc09wYXF1ZV1dOwotICAg
IFtuZXdMYXllciBzZXRCYWNrZ3JvdW5kQ29sb3I6W2xheWVyIGJhY2tncm91bmRDb2xvcl1dOwot
Ci0gICAgaWYgKGNsb25lTGV2ZWwgPT0gSW50ZXJtZWRpYXRlQ2xvbmVMZXZlbCkgewotICAgICAg
ICBbbmV3TGF5ZXIgc2V0T3BhY2l0eTpbbGF5ZXIgb3BhY2l0eV1dOwotICAgICAgICBtb3ZlT3JD
b3B5QW5pbWF0aW9uc0ZvclByb3BlcnR5KENvcHksIEFuaW1hdGVkUHJvcGVydHlXZWJraXRUcmFu
c2Zvcm0sIGxheWVyLCBuZXdMYXllcik7Ci0gICAgICAgIG1vdmVPckNvcHlBbmltYXRpb25zRm9y
UHJvcGVydHkoQ29weSwgQW5pbWF0ZWRQcm9wZXJ0eU9wYWNpdHksIGxheWVyLCBuZXdMYXllcik7
Ci0gICAgfQotICAgIAotICAgIGlmIChzaG93RGVidWdCb3JkZXJzKCkpIHsKLSAgICAgICAgc2V0
TGF5ZXJCb3JkZXJDb2xvcihuZXdMYXllciwgQ29sb3IoMjU1LCAxMjIsIDI1MSkpOwotICAgICAg
ICBbbmV3TGF5ZXIgc2V0Qm9yZGVyV2lkdGg6Ml07Ci0gICAgfQotICAgIAotICAgIHJldHVybiBu
ZXdMYXllcjsKLX0KLQotdm9pZCBHcmFwaGljc0xheWVyTWFjOjpzZXRPcGFjaXR5SW50ZXJuYWwo
ZmxvYXQgYWNjdW11bGF0ZWRPcGFjaXR5KQotewotICAgIExheWVyTWFwKiBsYXllckNsb25lTWFw
ID0gMDsKLSAgICAKLSAgICBpZiAocHJlc2VydmVzM0QoKSkgewotICAgICAgICBbbV9sYXllci5n
ZXQoKSBzZXRPcGFjaXR5OmFjY3VtdWxhdGVkT3BhY2l0eV07Ci0gICAgICAgIGxheWVyQ2xvbmVN
YXAgPSBtX2xheWVyQ2xvbmVzLmdldCgpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIFtwcmltYXJ5
TGF5ZXIoKSBzZXRPcGFjaXR5OmFjY3VtdWxhdGVkT3BhY2l0eV07Ci0gICAgICAgIGxheWVyQ2xv
bmVNYXAgPSBwcmltYXJ5TGF5ZXJDbG9uZXMoKTsKLSAgICB9Ci0KLSAgICBpZiAobGF5ZXJDbG9u
ZU1hcCkgewotICAgICAgICBMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbGF5ZXJDbG9u
ZU1hcC0+ZW5kKCk7Ci0gICAgICAgIGZvciAoTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0g
bGF5ZXJDbG9uZU1hcC0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICBp
ZiAobV9yZXBsaWNhTGF5ZXIgJiYgaXNSZXBsaWNhdGVkUm9vdENsb25lKGl0LT5maXJzdCkpCi0g
ICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBDQUxheWVyICpjdXJyTGF5ZXIg
PSBpdC0+c2Vjb25kLmdldCgpOwotICAgICAgICAgICAgW2N1cnJMYXllciBzZXRPcGFjaXR5Om1f
b3BhY2l0eV07Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6
dXBkYXRlT3BhY2l0eU9uTGF5ZXIoKQotewotI2lmICFIQVZFX01PREVSTl9RVUFSVFpDT1JFCi0g
ICAgLy8gRGlzdHJpYnV0ZSBvcGFjaXR5IGVpdGhlciB0byBvdXIgb3duIGxheWVyIG9yIHRvIG91
ciBjaGlsZHJlbi4gV2UgcGFzcyBpbiB0aGUgCi0gICAgLy8gY29udHJpYnV0aW9uIGZyb20gb3Vy
IHBhcmVudChzKS4KLSAgICBkaXN0cmlidXRlT3BhY2l0eShwYXJlbnQoKSA/IHBhcmVudCgpLT5h
Y2N1bXVsYXRlZE9wYWNpdHkoKSA6IDEpOwotI2Vsc2UKLSAgICBbcHJpbWFyeUxheWVyKCkgc2V0
T3BhY2l0eTptX29wYWNpdHldOwotCi0gICAgaWYgKExheWVyTWFwKiBsYXllckNsb25lTWFwID0g
cHJpbWFyeUxheWVyQ2xvbmVzKCkpIHsKLSAgICAgICAgTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9y
IGVuZCA9IGxheWVyQ2xvbmVNYXAtPmVuZCgpOwotICAgICAgICBmb3IgKExheWVyTWFwOjpjb25z
dF9pdGVyYXRvciBpdCA9IGxheWVyQ2xvbmVNYXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkg
ewotICAgICAgICAgICAgaWYgKG1fcmVwbGljYUxheWVyICYmIGlzUmVwbGljYXRlZFJvb3RDbG9u
ZShpdC0+Zmlyc3QpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICBD
QUxheWVyICpjdXJyTGF5ZXIgPSBpdC0+c2Vjb25kLmdldCgpOwotICAgICAgICAgICAgW2N1cnJM
YXllciBzZXRPcGFjaXR5Om1fb3BhY2l0eV07Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgfQot
I2VuZGlmCi19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6bm90ZVN1YmxheWVyc0NoYW5nZWQo
KQotewotICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChDaGlsZHJlbkNoYW5nZWQpOwotICAg
IHByb3BhZ2F0ZUxheWVyQ2hhbmdlVG9SZXBsaWNhcygpOwotfQotCi12b2lkIEdyYXBoaWNzTGF5
ZXJNYWM6Om5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChMYXllckNoYW5nZUZsYWdzIGZsYWdzKQot
ewotICAgIGlmICghbV91bmNvbW1pdHRlZENoYW5nZXMgJiYgbV9jbGllbnQpCi0gICAgICAgIG1f
Y2xpZW50LT5ub3RpZnlTeW5jUmVxdWlyZWQodGhpcyk7Ci0KLSAgICBtX3VuY29tbWl0dGVkQ2hh
bmdlcyB8PSBmbGFnczsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8g
VVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvV2ViTGF5ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL21hYy9XZWJMYXllci5oCShyZXZpc2lvbiA3MzI5MCkKKysrIFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL1dlYkxheWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDE0ICszNCw2IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBHcmFwaGljc0xheWVyOwogfQogCi0vLyBD
YXRlZ29yeSBpbXBsZW1lbnRlZCBieSBXZWJMYXllciBhbmQgV2ViVGlsZWRMYXllci4KLUBpbnRl
cmZhY2UgQ0FMYXllcihXZWJMYXllckFkZGl0aW9ucykKLQotLSAodm9pZClzZXRMYXllck93bmVy
OihXZWJDb3JlOjpHcmFwaGljc0xheWVyKilsYXllcjsKLS0gKFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXIqKWxheWVyT3duZXI7Ci0KLUBlbmQKLQogI2lmIGRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFS
RCkKIEBpbnRlcmZhY2UgQ0FMYXllcihXZWJMYXllckludGVybmFsKQogLSAoQ0dBZmZpbmVUcmFu
c2Zvcm0pY29udGVudHNUcmFuc2Zvcm07CkBAIC01MSw3ICs0Myw2IEBAIEBpbnRlcmZhY2UgQ0FM
YXllcihXZWJMYXllckludGVybmFsKQogCiBAaW50ZXJmYWNlIFdlYkxheWVyIDogQ0FMYXllciAK
IHsKLSAgICBXZWJDb3JlOjpHcmFwaGljc0xheWVyKiBtX2xheWVyT3duZXI7CiB9CiBAZW5kCiAK
SW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLm1tCShyZXZpc2lv
biA3MzI5MCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw4IEBACiAjaW1wb3J0ICJXZWJMYXllci5oIgogCiAj
aW1wb3J0ICJHcmFwaGljc0NvbnRleHQuaCIKLSNpbXBvcnQgIkdyYXBoaWNzTGF5ZXIuaCIKKyNp
bXBvcnQgIkdyYXBoaWNzTGF5ZXJDQS5oIgorI2ltcG9ydCAiUGxhdGZvcm1DQUxheWVyLmgiCiAj
aW1wb3J0IDxvYmpjL29iamMtcnVudGltZS5oPgogI2ltcG9ydCA8UXVhcnR6Q29yZS9RdWFydHpD
b3JlLmg+CiAjaW1wb3J0IDx3dGYvVW51c2VkUGFyYW0uaD4KQEAgLTE0Niw1OCArMTQ3LDM5IEBA
IC0gKGlkPENBQWN0aW9uPilhY3Rpb25Gb3JLZXk6KE5TU3RyaW5nICoKICAgICByZXR1cm4gbmls
OwogfQogCi0vLyBJbXBsZW1lbnQgdGhpcyBzbyBwcmVzZW50YXRpb25MYXllciBjYW4gZ2V0IG91
ciBjdXN0b20gYXR0cmlidXRlcwotLSAoaWQpaW5pdFdpdGhMYXllcjooaWQpbGF5ZXIKLXsKLSAg
ICBpZiAoKHNlbGYgPSBbc3VwZXIgaW5pdFdpdGhMYXllcjpsYXllcl0pKQotICAgICAgICBtX2xh
eWVyT3duZXIgPSBbKFdlYkxheWVyKilsYXllciBsYXllck93bmVyXTsKLQotICAgIHJldHVybiBz
ZWxmOwotfQotCiAtICh2b2lkKXNldE5lZWRzRGlzcGxheQogewotICAgIGlmIChtX2xheWVyT3du
ZXIgJiYgbV9sYXllck93bmVyLT5jbGllbnQoKSAmJiBtX2xheWVyT3duZXItPmRyYXdzQ29udGVu
dCgpKQorICAgIFBsYXRmb3JtQ0FMYXllciogbGF5ZXIgPSBQbGF0Zm9ybUNBTGF5ZXI6OnBsYXRm
b3JtQ0FMYXllcihzZWxmKTsKKyAgICBpZiAobGF5ZXIgJiYgbGF5ZXItPm93bmVyKCkgJiYgbGF5
ZXItPm93bmVyKCktPmNsaWVudCgpICYmIGxheWVyLT5vd25lcigpLT5kcmF3c0NvbnRlbnQoKSkK
ICAgICAgICAgW3N1cGVyIHNldE5lZWRzRGlzcGxheV07CiB9CiAKIC0gKHZvaWQpc2V0TmVlZHNE
aXNwbGF5SW5SZWN0OihDR1JlY3QpZGlydHlSZWN0CiB7Ci0gICAgc2V0TGF5ZXJOZWVkc0Rpc3Bs
YXlJblJlY3Qoc2VsZiwgbV9sYXllck93bmVyLCBkaXJ0eVJlY3QpOworICAgIFBsYXRmb3JtQ0FM
YXllciogbGF5ZXIgPSBQbGF0Zm9ybUNBTGF5ZXI6OnBsYXRmb3JtQ0FMYXllcihzZWxmKTsKKyAg
ICBpZiAobGF5ZXIpCisgICAgICAgIHNldExheWVyTmVlZHNEaXNwbGF5SW5SZWN0KHNlbGYsIGxh
eWVyLT5vd25lcigpLCBkaXJ0eVJlY3QpOwogfQogCiAtICh2b2lkKWRpc3BsYXkKIHsKICAgICBb
c3VwZXIgZGlzcGxheV07Ci0gICAgaWYgKG1fbGF5ZXJPd25lcikKLSAgICAgICAgbV9sYXllck93
bmVyLT5kaWREaXNwbGF5KHNlbGYpOworICAgIFBsYXRmb3JtQ0FMYXllciogbGF5ZXIgPSBQbGF0
Zm9ybUNBTGF5ZXI6OnBsYXRmb3JtQ0FMYXllcihzZWxmKTsKKyAgICBpZiAobGF5ZXIgJiYgbGF5
ZXItPm93bmVyKCkpCisgICAgICAgIGxheWVyLT5vd25lcigpLT5kaWREaXNwbGF5KHNlbGYpOwog
fQogCiAtICh2b2lkKWRyYXdJbkNvbnRleHQ6KENHQ29udGV4dFJlZiljb250ZXh0CiB7Ci0gICAg
ZHJhd0xheWVyQ29udGVudHMoY29udGV4dCwgc2VsZiwgbV9sYXllck93bmVyKTsKKyAgICBQbGF0
Zm9ybUNBTGF5ZXIqIGxheWVyID0gUGxhdGZvcm1DQUxheWVyOjpwbGF0Zm9ybUNBTGF5ZXIoc2Vs
Zik7CisgICAgaWYgKGxheWVyKQorICAgICAgICBkcmF3TGF5ZXJDb250ZW50cyhjb250ZXh0LCBz
ZWxmLCBsYXllci0+b3duZXIoKSk7CiB9CiAKIEBlbmQgLy8gaW1wbGVtZW50YXRpb24gV2ViTGF5
ZXIKIAogI3ByYWdtYSBtYXJrIC0KIAotQGltcGxlbWVudGF0aW9uIFdlYkxheWVyKFdlYkxheWVy
QWRkaXRpb25zKQotCi0tICh2b2lkKXNldExheWVyT3duZXI6KEdyYXBoaWNzTGF5ZXIqKWFMYXll
cgotewotICAgIG1fbGF5ZXJPd25lciA9IGFMYXllcjsKLX0KLQotLSAoR3JhcGhpY3NMYXllciop
bGF5ZXJPd25lcgotewotICAgIHJldHVybiBtX2xheWVyT3duZXI7Ci19Ci0KLUBlbmQKLQotI3By
YWdtYSBtYXJrIC0KLQogI2lmbmRlZiBOREVCVUcKIAogQGltcGxlbWVudGF0aW9uIENBTGF5ZXIo
RXh0ZW5kZWREZXNjcmlwdGlvbikKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L1dlYlRpbGVkTGF5ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9XZWJUaWxlZExheWVyLmgJKHJldmlzaW9uIDczMjkwKQorKysgV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvV2ViVGlsZWRMYXllci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICsz
Miw2IEBACiAKIEBpbnRlcmZhY2UgV2ViVGlsZWRMYXllciA6IENBVGlsZWRMYXllciAKIHsKLSAg
ICBXZWJDb3JlOjpHcmFwaGljc0xheWVyKiBtX2xheWVyT3duZXI7CiB9CiAKIC8vIGltcGxlbWVu
dHMgV2ViTGF5ZXJBZGRpdGlvbnMKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L1dlYlRpbGVkTGF5ZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvV2ViVGlsZWRMYXllci5tbQkocmV2aXNpb24gNzMyOTApCisrKyBXZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9XZWJUaWxlZExheWVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3
ICszMCw4IEBACiAjaW1wb3J0ICJXZWJUaWxlZExheWVyLmgiCiAKICNpbXBvcnQgIkdyYXBoaWNz
Q29udGV4dC5oIgotI2ltcG9ydCAiR3JhcGhpY3NMYXllci5oIgorI2ltcG9ydCAiR3JhcGhpY3NM
YXllckNBLmgiCisjaW1wb3J0ICJQbGF0Zm9ybUNBTGF5ZXIuaCIKICNpbXBvcnQgPHd0Zi9VbnVz
ZWRQYXJhbS5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTU2LDU0ICs1NywzNSBA
QCAtIChpZDxDQUFjdGlvbj4pYWN0aW9uRm9yS2V5OihOU1N0cmluZyAqCiAgICAgcmV0dXJuIG5p
bDsKIH0KIAotLy8gSW1wbGVtZW50IHRoaXMgc28gcHJlc2VudGF0aW9uTGF5ZXIgY2FuIGdldCBv
dXIgY3VzdG9tIGF0dHJpYnV0ZXMKLS0gKGlkKWluaXRXaXRoTGF5ZXI6KGlkKWxheWVyCi17Ci0g
ICAgaWYgKChzZWxmID0gW3N1cGVyIGluaXRXaXRoTGF5ZXI6bGF5ZXJdKSkKLSAgICAgICAgbV9s
YXllck93bmVyID0gWyhXZWJMYXllciopbGF5ZXIgbGF5ZXJPd25lcl07Ci0KLSAgICByZXR1cm4g
c2VsZjsKLX0KLQogLSAodm9pZClzZXROZWVkc0Rpc3BsYXkKIHsKLSAgICBpZiAobV9sYXllck93
bmVyICYmIG1fbGF5ZXJPd25lci0+Y2xpZW50KCkgJiYgbV9sYXllck93bmVyLT5kcmF3c0NvbnRl
bnQoKSkKKyAgICBQbGF0Zm9ybUNBTGF5ZXIqIGxheWVyID0gUGxhdGZvcm1DQUxheWVyOjpwbGF0
Zm9ybUNBTGF5ZXIoc2VsZik7CisgICAgaWYgKGxheWVyICYmIGxheWVyLT5vd25lcigpICYmIGxh
eWVyLT5vd25lcigpLT5jbGllbnQoKSAmJiBsYXllci0+b3duZXIoKS0+ZHJhd3NDb250ZW50KCkp
CiAgICAgICAgIFtzdXBlciBzZXROZWVkc0Rpc3BsYXldOwogfQogCiAtICh2b2lkKXNldE5lZWRz
RGlzcGxheUluUmVjdDooQ0dSZWN0KWRpcnR5UmVjdAogewotICAgIHNldExheWVyTmVlZHNEaXNw
bGF5SW5SZWN0KHNlbGYsIG1fbGF5ZXJPd25lciwgZGlydHlSZWN0KTsKKyAgICBQbGF0Zm9ybUNB
TGF5ZXIqIGxheWVyID0gUGxhdGZvcm1DQUxheWVyOjpwbGF0Zm9ybUNBTGF5ZXIoc2VsZik7Cisg
ICAgaWYgKGxheWVyKQorICAgICAgICBzZXRMYXllck5lZWRzRGlzcGxheUluUmVjdChzZWxmLCBs
YXllci0+b3duZXIoKSwgZGlydHlSZWN0KTsKIH0KIAogLSAodm9pZClkaXNwbGF5CiB7CiAgICAg
W3N1cGVyIGRpc3BsYXldOwotICAgIGlmIChtX2xheWVyT3duZXIpCi0gICAgICAgIG1fbGF5ZXJP
d25lci0+ZGlkRGlzcGxheShzZWxmKTsKKyAgICBQbGF0Zm9ybUNBTGF5ZXIqIGxheWVyID0gUGxh
dGZvcm1DQUxheWVyOjpwbGF0Zm9ybUNBTGF5ZXIoc2VsZik7CisgICAgaWYgKGxheWVyICYmIGxh
eWVyLT5vd25lcigpKQorICAgICAgICBsYXllci0+b3duZXIoKS0+ZGlkRGlzcGxheShzZWxmKTsK
IH0KIAogLSAodm9pZClkcmF3SW5Db250ZXh0OihDR0NvbnRleHRSZWYpY29udGV4dAogewotICAg
IGRyYXdMYXllckNvbnRlbnRzKGNvbnRleHQsIHNlbGYsIG1fbGF5ZXJPd25lcik7CisgICAgUGxh
dGZvcm1DQUxheWVyKiBsYXllciA9IFBsYXRmb3JtQ0FMYXllcjo6cGxhdGZvcm1DQUxheWVyKHNl
bGYpOworICAgIGlmIChsYXllcikKKyAgICAgICAgZHJhd0xheWVyQ29udGVudHMoY29udGV4dCwg
c2VsZiwgbGF5ZXItPm93bmVyKCkpOwogfQogCiBAZW5kIC8vIGltcGxlbWVudGF0aW9uIFdlYlRp
bGVkTGF5ZXIKIAotI3ByYWdtYSBtYXJrIC0KLQotQGltcGxlbWVudGF0aW9uIFdlYlRpbGVkTGF5
ZXIoTGF5ZXJNYWNBZGRpdGlvbnMpCi0KLS0gKHZvaWQpc2V0TGF5ZXJPd25lcjooR3JhcGhpY3NM
YXllciopYUxheWVyCi17Ci0gICAgbV9sYXllck93bmVyID0gYUxheWVyOwotfQotCi0tIChHcmFw
aGljc0xheWVyKilsYXllck93bmVyCi17Ci0gICAgcmV0dXJuIG1fbGF5ZXJPd25lcjsKLX0KLQot
QGVuZAotCiAjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpJbmRleDogV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0xheWVyUXQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NMYXllclF0LmNwcAkocmV2
aXNpb24gNzMyOTApCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzTGF5
ZXJRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY4Niw3ICs2ODYsNyBAQCB2b2lkIEdyYXBoaWNz
TGF5ZXJRdEltcGw6OmZsdXNoQ2hhbmdlcyhiCiAgICAgICAgIC8vIHRyeSB0byBzbmF0Y2ggdGhh
dCBvd25lcnNoaXAuCiAgICAgICAgIGlmICghbV9sYXllci0+cGFyZW50KCkgJiYgIXBhcmVudEl0
ZW0oKSkKICAgICAgICAgICAgIHNldFBhcmVudEl0ZW0oMCk7Ci0gICAgICAgIGVsc2UgaWYgKG1f
bGF5ZXIgJiYgbV9sYXllci0+cGFyZW50KCkgJiYgbV9sYXllci0+cGFyZW50KCktPm5hdGl2ZUxh
eWVyKCkgIT0gcGFyZW50SXRlbSgpKQorICAgICAgICBlbHNlIGlmIChtX2xheWVyICYmIG1fbGF5
ZXItPnBhcmVudCgpICYmIG1fbGF5ZXItPnBhcmVudCgpLT5wbGF0Zm9ybUxheWVyKCkgIT0gcGFy
ZW50SXRlbSgpKQogICAgICAgICAgICAgc2V0UGFyZW50SXRlbShtX2xheWVyLT5wYXJlbnQoKS0+
cGxhdGZvcm1MYXllcigpKTsKICAgICB9CiAKQEAgLTEzMTgsMTMgKzEzMTgsNiBAQCB2b2lkIEdy
YXBoaWNzTGF5ZXJRdDo6c3luY0NvbXBvc2l0aW5nU3RhCiB9CiAKIC8qIFxyZWltcCAoR3JhcGhp
Y3NMYXllci5oKQotICovCi1OYXRpdmVMYXllciBHcmFwaGljc0xheWVyUXQ6Om5hdGl2ZUxheWVy
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9pbXBsLmdldCgpOwotfQotCi0vKiBccmVpbXAgKEdy
YXBoaWNzTGF5ZXIuaCkKICovCiBQbGF0Zm9ybUxheWVyKiBHcmFwaGljc0xheWVyUXQ6OnBsYXRm
b3JtTGF5ZXIoKSBjb25zdAogewpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9H
cmFwaGljc0xheWVyUXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3F0L0dyYXBoaWNzTGF5ZXJRdC5oCShyZXZpc2lvbiA3MzI5MCkKKysrIFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NMYXllclF0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcg
KzM4LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkdyYXBoaWNzTGF5ZXJRdCgpOwogCiAgICAg
Ly8gcmVpbXBzIGZyb20gR3JhcGhpY3NMYXllci5oCi0gICAgdmlydHVhbCBOYXRpdmVMYXllciBu
YXRpdmVMYXllcigpIGNvbnN0OwogICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllciogcGxhdGZvcm1M
YXllcigpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0Rpc3BsYXkoKTsKICAgICB2
aXJ0dWFsIHZvaWQgc2V0TmVlZHNEaXNwbGF5SW5SZWN0KGNvbnN0IEZsb2F0UmVjdCYpOwpJbmRl
eDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NMYXllckNBQ0YuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzTGF5ZXJD
QUNGLmNwcAkocmV2aXNpb24gNzMyOTApCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9HcmFwaGljc0xheWVyQ0FDRi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MywxMSArMTUzLDYg
QEAgdm9pZCBHcmFwaGljc0xheWVyQ0FDRjo6c2V0TmFtZShjb25zdCBTdAogICAgIG1fbGF5ZXIt
PnNldE5hbWUobG9uZ05hbWUpOwogfQogCi1OYXRpdmVMYXllciBHcmFwaGljc0xheWVyQ0FDRjo6
bmF0aXZlTGF5ZXIoKSBjb25zdAotewotICAgIHJldHVybiBtX2xheWVyLmdldCgpOwotfQotCiBi
b29sIEdyYXBoaWNzTGF5ZXJDQUNGOjpzZXRDaGlsZHJlbihjb25zdCBWZWN0b3I8R3JhcGhpY3NM
YXllcio+JiBjaGlsZHJlbikKIHsKICAgICBib29sIGNoaWxkcmVuQ2hhbmdlZCA9IEdyYXBoaWNz
TGF5ZXI6OnNldENoaWxkcmVuKGNoaWxkcmVuKTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0dyYXBoaWNzTGF5ZXJDQUNGLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NMYXllckNBQ0YuaAkocmV2aXNpb24gNzMyOTApCisr
KyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0xheWVyQ0FDRi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NCw5ICs0NCw2IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBz
ZXROYW1lKGNvbnN0IFN0cmluZyYgaW5OYW1lKTsKIAotICAgIC8vIGZvciBob3N0aW5nIHRoaXMg
R3JhcGhpY3NMYXllciBpbiBhIG5hdGl2ZSBsYXllciBoaWVyYXJjaHkKLSAgICB2aXJ0dWFsIE5h
dGl2ZUxheWVyIG5hdGl2ZUxheWVyKCkgY29uc3Q7Ci0KICAgICB2aXJ0dWFsIGJvb2wgc2V0Q2hp
bGRyZW4oY29uc3QgVmVjdG9yPEdyYXBoaWNzTGF5ZXIqPiYpOwogICAgIHZpcnR1YWwgdm9pZCBh
ZGRDaGlsZChHcmFwaGljc0xheWVyICpsYXllcik7CiAgICAgdmlydHVhbCB2b2lkIGFkZENoaWxk
QXRJbmRleChHcmFwaGljc0xheWVyICpsYXllciwgaW50IGluZGV4KTsKSW5kZXg6IFdlYktpdC9t
YWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lv
biA3MzI5MCkKKysrIFdlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTcgQEAKKzIwMTAtMTItMDMgIENocmlzIE1hcnJpbiAgPGNtYXJyaW5AYXBwbGUuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNoYXJlIGNv
ZGUgYmV0d2VlbiBNYWMgKENBKSBhbmQgV2luZG93cyAoQ0FDRikgR3JhcGhpY3NMYXllciBpbXBs
ZW1lbnRhdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQ5Mzg4CisKKyAgICAgICAgQ29tcG9zaXRlIHBhdGNoIGZyb20gY2hhbmdlczoKKyAgICAg
ICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzczMjE3CisgICAgICAgICAg
ICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC83MzIyNworCisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tOgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50
OjphdHRhY2hSb290R3JhcGhpY3NMYXllcik6CisKIDIwMTAtMTItMDMgIEppYSBQdSAgPGpwdUBh
cHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBXZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQkocmV2aXNpb24gNzMy
OTApCisrKyBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQkod29y
a2luZyBjb3B5KQpAQCAtNzczLDcgKzc3Myw3IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjphdHRh
Y2hSb290R3JhcGhpY3MKIAogICAgIFdlYkhUTUxWaWV3ICp3ZWJIVE1MVmlldyA9IChXZWJIVE1M
VmlldyAqKWRvY3VtZW50VmlldzsKICAgICBpZiAoZ3JhcGhpY3NMYXllcikKLSAgICAgICAgW3dl
YkhUTUxWaWV3IGF0dGFjaFJvb3RMYXllcjpncmFwaGljc0xheWVyLT5uYXRpdmVMYXllcigpXTsK
KyAgICAgICAgW3dlYkhUTUxWaWV3IGF0dGFjaFJvb3RMYXllcjpncmFwaGljc0xheWVyLT5wbGF0
Zm9ybUxheWVyKCldOwogICAgIGVsc2UKICAgICAgICAgW3dlYkhUTUxWaWV3IGRldGFjaFJvb3RM
YXllcl07CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75575</attachid>
            <date>2010-12-03 16:13:11 -0800</date>
            <delta_ts>2010-12-14 01:27:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-49388-20101203161310.patch</filename>
            <type>text/plain</type>
            <size>298219</size>
            <attacher name="Chris Marrin">cmarrin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MzMxOCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTIgQEAKKzIwMTAtMTItMDMgIENocmlzIE1hcnJpbiAgPGNtYXJyaW5AYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNo
YXJlIGNvZGUgYmV0d2VlbiBNYWMgKENBKSBhbmQgV2luZG93cyAoQ0FDRikgR3JhcGhpY3NMYXll
ciBpbXBsZW1lbnRhdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQ5Mzg4CisKKyAgICAgICAgUmVwbGFjZWQgR3JhcGhpY3NMYXllck1hYyB3aXRo
IEdyYXBoaWNzTGF5ZXJDQS4gR3JhcGhpY3NMYXllckNBIGlzIGVzc2VudGlhbGx5IAorICAgICAg
ICBpZGVudGljYWwgdG8gR3JhcGhpY3NMYXllck1hYywgYnV0IHJlcGxhY2VzIGFsbCB0aGUgQ29y
ZUFuaW1hdGlvbiBzcGVjaWZpYyBjYWxscyAKKyAgICAgICAgd2l0aCBjYWxscyB0byBQbGF0Zm9y
bUNBTGF5ZXIgYW5kIFBsYXRmb3JtQ0FBbmltYXRpb24uIFRoaXMgbWFrZXMgR3JhcGhpY3NMYXll
ckNBIAorICAgICAgICBwbGF0Zm9ybSBuZXV0cmFsIGFzIGxvbmcgYXMgaW1wbGVtZW50YXRpb25z
IG9mIHRob3NlIHR3byBjbGFzc2VzIGFyZSBhdmFpbGFibGUuIAorICAgICAgICBBZGRlZCBpbXBs
ZW1lbnRhdGlvbnMgaW4gUGxhdGZvcm1DQUxheWVyTWFjIGFuZCBQbGF0Zm9ybUNBQW5pbWF0aW9u
TWFjLiBBbHNvIGdvdCAKKyAgICAgICAgcmlkIG9mIEdyYXBoaWNzTGF5ZXI6Om5hdGl2ZUxheWVy
KCkgYW5kIHJlcGxhY2VkIGl0IHdpdGggR3JhcGhpY3NMYXllcjo6cGxhdGZvcm1MYXllcigpIAor
ICAgICAgICB0byBhdm9pZCBjb25mdXNpb24gc2luY2UgYm90aCBuYW1lcyB3ZXJlIHVzZWQgdG8g
cmVmZXIgdG8gdGhlIHNhbWUgdGhpbmcuIAorCisgICAgICAgIFRoaXMgcGF0Y2ggaXMgb25seSBm
b3IgTWFjLiBXaW5kb3dzIGltcGxlbWVudGF0aW9uIGhhcyBub3QgY2hhbmdlZC4KKworICAgICAg
ICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvR3JhcGhpY3NMYXllckNBLmNwcDogQ29waWVkIGZyb20gV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhL0dyYXBoaWNzTGF5ZXJDQS5oOiBDb3BpZWQgZnJvbSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nh
L1BsYXRmb3JtQ0FBbmltYXRpb24uaDogQ29waWVkIGZyb20gV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9QbGF0Zm9ybUNBQW5pbWF0aW9uLmguCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvUGxhdGZvcm1DQUxheWVyLmg6IENvcGllZCBmcm9tIFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmguCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvbWFjL1BsYXRmb3JtQ0FBbmltYXRpb25NYWMubW06IENvcGllZCBmcm9tIFdlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1BsYXRmb3JtQ0FBbmltYXRpb25NYWMubW0uCisgICAgICAg
ICh0b0NBTWVkaWFUaW1pbmdGdW5jdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvbWFjL1BsYXRmb3JtQ0FMYXllck1hYy5tbTogQ29waWVkIGZyb20gV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9tYWMvUGxhdGZvcm1DQUxheWVyTWFjLm1tLgorICAgICAgICAoUGxhdGZv
cm1DQUxheWVyOjpQbGF0Zm9ybUNBTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzTGF5ZXJNYWMuaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NMYXllck1hYy5tbTogUmVtb3ZlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViTGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9tYWMvV2ViTGF5ZXIubW06CisgICAgICAgICgtW1dlYkxheWVyIHNldE5l
ZWRzRGlzcGxheV0pOgorICAgICAgICAoLVtXZWJMYXllciBzZXROZWVkc0Rpc3BsYXlJblJlY3Q6
XSk6CisgICAgICAgICgtW1dlYkxheWVyIGRpc3BsYXldKToKKyAgICAgICAgKC1bV2ViTGF5ZXIg
ZHJhd0luQ29udGV4dDpdKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViVGls
ZWRMYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJUaWxlZExheWVy
Lm1tOgorICAgICAgICAoLVtXZWJUaWxlZExheWVyIHNldE5lZWRzRGlzcGxheV0pOgorICAgICAg
ICAoLVtXZWJUaWxlZExheWVyIHNldE5lZWRzRGlzcGxheUluUmVjdDpdKToKKyAgICAgICAgKC1b
V2ViVGlsZWRMYXllciBkaXNwbGF5XSk6CisgICAgICAgICgtW1dlYlRpbGVkTGF5ZXIgZHJhd0lu
Q29udGV4dDpdKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0xheWVy
UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclF0SW1wbDo6Zmx1c2hDaGFu
Z2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0xheWVyUXQuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NMYXllckNBQ0YuY3BwOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0xheWVyQ0FDRi5oOgorCiAy
MDEwLTEyLTAzICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAog
ICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByNzMzMDIuCkluZGV4OiBXZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gNzMyOTMpCisrKyBXZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAt
MTAxMiw2ICsxMDEyLDggQEAKIAkJNDk0QkQ3OTUwRjU1QzhFRTAwNzQ3ODI4IC8qIFdlYktpdFBv
aW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTRC
RDc5MzBGNTVDOEVFMDA3NDc4MjggLyogV2ViS2l0UG9pbnQuaCAqLzsgfTsKIAkJNDk0QkQ3OUQw
RjU1Qzk0QzAwNzQ3ODI4IC8qIEpTV2ViS2l0UG9pbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDk0QkQ3OUIwRjU1Qzk0QzAwNzQ3ODI4IC8qIEpT
V2ViS2l0UG9pbnQuY3BwICovOyB9OwogCQk0OTRCRDc5RTBGNTVDOTRDMDA3NDc4MjggLyogSlNX
ZWJLaXRQb2ludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDk0QkQ3OUMwRjU1Qzk0QzAwNzQ3ODI4IC8qIEpTV2ViS2l0UG9pbnQuaCAqLzsgfTsKKwkJ
NDk1ODc4MjExMkE1N0RERjAwNzIzOEFDIC8qIFBsYXRmb3JtQ0FBbmltYXRpb25NYWMubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTU4NzgxRjEyQTU3
RERGMDA3MjM4QUMgLyogUGxhdGZvcm1DQUFuaW1hdGlvbk1hYy5tbSAqLzsgfTsKKwkJNDk1ODc4
MjIxMkE1N0RERjAwNzIzOEFDIC8qIFBsYXRmb3JtQ0FMYXllck1hYy5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5NTg3ODIwMTJBNTdEREYwMDcyMzhB
QyAvKiBQbGF0Zm9ybUNBTGF5ZXJNYWMubW0gKi87IH07CiAJCTQ5ODM5MTNGMEYxRTc2NzUwMEMy
Mzc4MiAvKiBKU1dlYktpdENTU01hdHJpeC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0OTgzOTEzRDBGMUU3Njc1MDBDMjM3ODIgLyogSlNXZWJLaXRD
U1NNYXRyaXguY3BwICovOyB9OwogCQk0OTgzOTE0MDBGMUU3Njc1MDBDMjM3ODIgLyogSlNXZWJL
aXRDU1NNYXRyaXguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ5ODM5MTNFMEYxRTc2NzUwMEMyMzc4MiAvKiBKU1dlYktpdENTU01hdHJpeC5oICovOyB9
OwogCQk0OTgzOTE1MDBGMUU3NkI0MDBDMjM3ODIgLyogRE9NV2ViS2l0Q1NTTWF0cml4LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTgzOTE0RDBGMUU3
NkI0MDBDMjM3ODIgLyogRE9NV2ViS2l0Q1NTTWF0cml4LmggKi87IH07CkBAIC0xMDM4LDggKzEw
NDAsMTAgQEAKIAkJNDk4NzcwRjIxMjQyQzUzNTAwMjIyNkJBIC8qIFRpbGluZ0RhdGEuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDk4NzcwRDkxMjQy
QzUzNTAwMjIyNkJBIC8qIFRpbGluZ0RhdGEuY3BwICovOyB9OwogCQk0OTg3NzBGMzEyNDJDNTM1
MDAyMjI2QkEgLyogVGlsaW5nRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDk4NzcwREExMjQyQzUzNTAwMjIyNkJBIC8qIFRpbGluZ0RhdGEuaCAq
LzsgfTsKIAkJNDk4NzcxNTMxMjQzRjlGQTAwMjIyNkJBIC8qIERyYXdpbmdCdWZmZXJNYWMubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTg3NzE1MjEy
NDNGOUZBMDAyMjI2QkEgLyogRHJhd2luZ0J1ZmZlck1hYy5tbSAqLzsgfTsKLQkJNDk5QjNDNTkx
MjhDNjQxRTAwRTcyNkMyIC8qIEdyYXBoaWNzTGF5ZXJNYWMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5OUIzQzU3MTI4QzY0MUUwMEU3MjZDMiAvKiBH
cmFwaGljc0xheWVyTWFjLmggKi87IH07Ci0JCTQ5OUIzQzVBMTI4QzY0MUUwMEU3MjZDMiAvKiBH
cmFwaGljc0xheWVyTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDk5QjNDNTgxMjhDNjQxRTAwRTcyNkMyIC8qIEdyYXBoaWNzTGF5ZXJNYWMubW0g
Ki87IH07CisJCTQ5OUIzRUM1MTI4Q0NDNDcwMEU3MjZDMiAvKiBQbGF0Zm9ybUNBTGF5ZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5OUIzRUMzMTI4
Q0NDNDcwMEU3MjZDMiAvKiBQbGF0Zm9ybUNBTGF5ZXIuaCAqLzsgfTsKKwkJNDk5QjNFRDYxMjhD
RDMxNDAwRTcyNkMyIC8qIEdyYXBoaWNzTGF5ZXJDQS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTlCM0VENDEyOENEMzE0MDBFNzI2QzIgLyogR3Jh
cGhpY3NMYXllckNBLmNwcCAqLzsgfTsKKwkJNDk5QjNFRDcxMjhDRDMxNDAwRTcyNkMyIC8qIEdy
YXBoaWNzTGF5ZXJDQS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDk5QjNFRDUxMjhDRDMxNDAwRTcyNkMyIC8qIEdyYXBoaWNzTGF5ZXJDQS5oICovOyB9
OworCQk0OTlCM0VERDEyOERCNTAyMDBFNzI2QzIgLyogUGxhdGZvcm1DQUFuaW1hdGlvbi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDk5QjNFREMxMjhE
QjUwMTAwRTcyNkMyIC8qIFBsYXRmb3JtQ0FBbmltYXRpb24uaCAqLzsgfTsKIAkJNDlCNjlFNUUx
MjU0RkVFRDAwN0Q1N0VCIC8qIExvb3BCbGlubkNsYXNzaWZpZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlCNjlFNTUxMjU0RkVFRDAwN0Q1N0VC
IC8qIExvb3BCbGlubkNsYXNzaWZpZXIuY3BwICovOyB9OwogCQk0OUI2OUU1RjEyNTRGRUVEMDA3
RDU3RUIgLyogTG9vcEJsaW5uQ2xhc3NpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDlCNjlFNTYxMjU0RkVFRDAwN0Q1N0VCIC8qIExvb3BCbGlu
bkNsYXNzaWZpZXIuaCAqLzsgfTsKIAkJNDlCNjlFNjAxMjU0RkVFRDAwN0Q1N0VCIC8qIExvb3BC
bGlubkNvbnN0YW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDlCNjlFNTcxMjU0RkVFRDAwN0Q1N0VCIC8qIExvb3BCbGlubkNvbnN0YW50cy5oICov
OyB9OwpAQCAtNzEzMiw2ICs3MTM2LDggQEAKIAkJNDk0QkQ3OTQwRjU1QzhFRTAwNzQ3ODI4IC8q
IFdlYktpdFBvaW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJLaXRQb2ludC5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5NEJENzlCMEY1NUM5NEMwMDc0NzgyOCAv
KiBKU1dlYktpdFBvaW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTV2ViS2l0UG9pbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OTRCRDc5
QzBGNTVDOTRDMDA3NDc4MjggLyogSlNXZWJLaXRQb2ludC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU1dlYktpdFBvaW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTQ5NTg3ODFGMTJBNTdEREYwMDcyMzhBQyAvKiBQbGF0Zm9ybUNBQW5pbWF0aW9uTWFjLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gUGxhdGZvcm1DQUFuaW1h
dGlvbk1hYy5tbTsgcGF0aCA9IGNhL21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9uTWFjLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0OTU4NzgyMDEyQTU3RERGMDA3MjM4QUMgLyogUGxh
dGZvcm1DQUxheWVyTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1l
ID0gUGxhdGZvcm1DQUxheWVyTWFjLm1tOyBwYXRoID0gY2EvbWFjL1BsYXRmb3JtQ0FMYXllck1h
Yy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDk4MzkxM0QwRjFFNzY3NTAwQzIz
NzgyIC8qIEpTV2ViS2l0Q1NTTWF0cml4LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTV2ViS2l0Q1NTTWF0cml4LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDk4MzkxM0UwRjFFNzY3NTAwQzIzNzgyIC8qIEpTV2ViS2l0Q1NTTWF0cml4LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTV2ViS2l0Q1NTTWF0cml4Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5ODM5MTREMEYxRTc2QjQwMEMyMzc4MiAvKiBET01X
ZWJLaXRDU1NNYXRyaXguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NV2Vi
S2l0Q1NTTWF0cml4Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03MTU5LDggKzcx
NjUsMTAgQEAKIAkJNDk4NzcwRDkxMjQyQzUzNTAwMjIyNkJBIC8qIFRpbGluZ0RhdGEuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gVGlsaW5nRGF0YS5jcHA7IHBhdGgg
PSBncHUvVGlsaW5nRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5ODc3
MERBMTI0MkM1MzUwMDIyMjZCQSAvKiBUaWxpbmdEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IFRpbGluZ0RhdGEuaDsgcGF0aCA9IGdwdS9UaWxpbmdEYXRhLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5ODc3MTUyMTI0M0Y5RkEwMDIyMjZCQSAvKiBEcmF3
aW5nQnVmZmVyTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0g
RHJhd2luZ0J1ZmZlck1hYy5tbTsgcGF0aCA9IGdwdS9tYWMvRHJhd2luZ0J1ZmZlck1hYy5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDk5QjNDNTcxMjhDNjQxRTAwRTcyNkMyIC8q
IEdyYXBoaWNzTGF5ZXJNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3Jh
cGhpY3NMYXllck1hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0OTlCM0M1ODEy
OEM2NDFFMDBFNzI2QzIgLyogR3JhcGhpY3NMYXllck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdyYXBoaWNzTGF5ZXJNYWMubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTQ5OUIzRUMzMTI4Q0NDNDcwMEU3MjZDMiAvKiBQbGF0Zm9ybUNBTGF5
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUGxhdGZvcm1DQUxheWVyLmg7
IHBhdGggPSBjYS9QbGF0Zm9ybUNBTGF5ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNDk5QjNFRDQxMjhDRDMxNDAwRTcyNkMyIC8qIEdyYXBoaWNzTGF5ZXJDQS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBHcmFwaGljc0xheWVyQ0EuY3BwOyBwYXRo
ID0gY2EvR3JhcGhpY3NMYXllckNBLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NDk5QjNFRDUxMjhDRDMxNDAwRTcyNkMyIC8qIEdyYXBoaWNzTGF5ZXJDQS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBHcmFwaGljc0xheWVyQ0EuaDsgcGF0aCA9IGNhL0dyYXBo
aWNzTGF5ZXJDQS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0OTlCM0VEQzEyOERC
NTAxMDBFNzI2QzIgLyogUGxhdGZvcm1DQUFuaW1hdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBQbGF0Zm9ybUNBQW5pbWF0aW9uLmg7IHBhdGggPSBjYS9QbGF0Zm9ybUNB
QW5pbWF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5QjY5RTU1MTI1NEZF
RUQwMDdENTdFQiAvKiBMb29wQmxpbm5DbGFzc2lmaWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IExvb3BCbGlubkNsYXNzaWZpZXIuY3BwOyBwYXRoID0gZ3B1L0xv
b3BCbGlubkNsYXNzaWZpZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OUI2
OUU1NjEyNTRGRUVEMDA3RDU3RUIgLyogTG9vcEJsaW5uQ2xhc3NpZmllci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBMb29wQmxpbm5DbGFzc2lmaWVyLmg7IHBhdGggPSBncHUv
TG9vcEJsaW5uQ2xhc3NpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OUI2
OUU1NzEyNTRGRUVEMDA3RDU3RUIgLyogTG9vcEJsaW5uQ29uc3RhbnRzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExvb3BCbGlubkNvbnN0YW50cy5oOyBwYXRoID0gZ3B1L0xv
b3BCbGlubkNvbnN0YW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTI3MTAs
NiArMTI3MTgsMTUgQEAKIAkJCW5hbWUgPSBjYW52YXM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91
cD4iOwogCQl9OworCQk0OTU4NzgxRTEyQTU3REJDMDA3MjM4QUMgLyogbWFjICovID0geworCQkJ
aXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk0OTU4NzgxRjEyQTU3RERGMDA3
MjM4QUMgLyogUGxhdGZvcm1DQUFuaW1hdGlvbk1hYy5tbSAqLywKKwkJCQk0OTU4NzgyMDEyQTU3
RERGMDA3MjM4QUMgLyogUGxhdGZvcm1DQUxheWVyTWFjLm1tICovLAorCQkJKTsKKwkJCW5hbWUg
PSBtYWM7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQk0OTg3NzBDMTEyNDJD
NTBEMDAyMjI2QkEgLyogZ3B1ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKQEAgLTEyNzUxLDYgKzEyNzY4LDE4IEBACiAJCQluYW1lID0gbWFjOwogCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJNDk5QjNFQzAxMjhDQ0MxODAwRTcyNkMyIC8qIGNh
ICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk0OTU4Nzgx
RTEyQTU3REJDMDA3MjM4QUMgLyogbWFjICovLAorCQkJCTQ5OUIzRURDMTI4REI1MDEwMEU3MjZD
MiAvKiBQbGF0Zm9ybUNBQW5pbWF0aW9uLmggKi8sCisJCQkJNDk5QjNFRDQxMjhDRDMxNDAwRTcy
NkMyIC8qIEdyYXBoaWNzTGF5ZXJDQS5jcHAgKi8sCisJCQkJNDk5QjNFRDUxMjhDRDMxNDAwRTcy
NkMyIC8qIEdyYXBoaWNzTGF5ZXJDQS5oICovLAorCQkJCTQ5OUIzRUMzMTI4Q0NDNDcwMEU3MjZD
MiAvKiBQbGF0Zm9ybUNBTGF5ZXIuaCAqLywKKwkJCSk7CisJCQluYW1lID0gY2E7CisJCQlzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQk0OUU5MTFCMjBFRjg2RDI3MDA5RDBDQUYgLyog
dHJhbnNmb3JtcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBA
IC0xNjY4NSw4ICsxNjcxNCw2IEBACiAJCQkJQjJBRkZDN0IwRDAwQTVDMTAwMzAwNzREIC8qIEds
eXBoUGFnZVRyZWVOb2RlTWFjLmNwcCAqLywKIAkJCQk0OUZGQkYxQzExQzg1NTBFMDA2QTcxMTgg
LyogR3JhcGhpY3NDb250ZXh0M0RNYWMubW0gKi8sCiAJCQkJQjI3N0I0MDMwQjIyRjM3QzAwMDRC
RUM2IC8qIEdyYXBoaWNzQ29udGV4dE1hYy5tbSAqLywKLQkJCQk0OTlCM0M1NzEyOEM2NDFFMDBF
NzI2QzIgLyogR3JhcGhpY3NMYXllck1hYy5oICovLAotCQkJCTQ5OUIzQzU4MTI4QzY0MUUwMEU3
MjZDMiAvKiBHcmFwaGljc0xheWVyTWFjLm1tICovLAogCQkJCUIyNzUzNThEMEIwNTNBNjYwMDJD
RTY0RiAvKiBJY29uTWFjLm1tICovLAogCQkJCUIyNzUzNTRFMEIwNTM4MTQwMDJDRTY0RiAvKiBJ
bWFnZU1hYy5tbSAqLywKIAkJCQlCMjc1MzU0RjBCMDUzODE0MDAyQ0U2NEYgLyogSW50UG9pbnRN
YWMubW0gKi8sCkBAIC0xNjcxMiw2ICsxNjczOSw3IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJ
CWNoaWxkcmVuID0gKAogCQkJCUIyNzUzNTI5MEIwNTM4MTQwMDJDRTY0RiAvKiBjZyAqLywKKwkJ
CQk0OTlCM0VDMDEyOENDQzE4MDBFNzI2QzIgLyogY2EgKi8sCiAJCQkJQjUzMjBENjgxMjJBMjRF
OTAwMkQxNDQwIC8qIGNvY29hICovLAogCQkJCUE3NUU4QjdGMEUxREUyQjAwMDdGMjQ4MSAvKiBm
aWx0ZXJzICovLAogCQkJCTQ5ODc3MEMxMTI0MkM1MEQwMDIyMjZCQSAvKiBncHUgKi8sCkBAIC0x
OTc3MSw3ICsxOTc5OSw2IEBACiAJCQkJQTg4RkUzMzQwRTVFRUU4NzAwOEQ4QzBGIC8qIEdyYXBo
aWNzQ29udGV4dFByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNTgwQjBEMEYxMkEyNjkw
MDUxRDY4OSAvKiBHcmFwaGljc0xheWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU4MEIwRTBG
MTJBMjY5MDA1MUQ2ODkgLyogR3JhcGhpY3NMYXllckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJNDk5QjNDNTkxMjhDNjQxRTAwRTcyNkMyIC8qIEdyYXBoaWNzTGF5ZXJNYWMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUIyQTAxNUFCMEFGNkNENTMwMDZCQ0UwRSAvKiBHcmFwaGljc1R5cGVzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlDNTBCNTYxNzEyMTE5RDIzMDA4QjQ2RTAgLyogR3JvdXBTZXR0
aW5ncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzY5M0JBRDIxMDZDMkRDQTAwN0IwODIzIC8qIEhh
bHRhYmxlUGx1Z2luLmggaW4gSGVhZGVycyAqLywKQEAgLTIxNDMwLDYgKzIxNDU3LDkgQEAKIAkJ
CQk5M0YxOTlFRDA4MjQ1RTU5MDAxRTlBQkMgLyogWFNMVFByb2Nlc3Nvci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRTFCRTUxMkUwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmljb2RlU29ydC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTdERDREODcwRkRGNEQ2RTAwRUNGOUE0IC8qIFhTU0F1ZGl0b3Iu
aCBpbiBIZWFkZXJzICovLAorCQkJCTQ5OUIzRUM1MTI4Q0NDNDcwMEU3MjZDMiAvKiBQbGF0Zm9y
bUNBTGF5ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ5OUIzRUQ3MTI4Q0QzMTQwMEU3MjZDMiAv
KiBHcmFwaGljc0xheWVyQ0EuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ5OUIzRUREMTI4REI1MDIw
MEU3MjZDMiAvKiBQbGF0Zm9ybUNBQW5pbWF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJ
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTIxNDg5
LDcgKzIxNTE5LDYgQEAKIAkJCWlzYSA9IFBCWFByb2plY3Q7CiAJCQlidWlsZENvbmZpZ3VyYXRp
b25MaXN0ID0gMTQ5QzI4NDMwODkwMkIxMTAwOEE5RUZDIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24g
bGlzdCBmb3IgUEJYUHJvamVjdCAiV2ViQ29yZSIgKi87CiAJCQljb21wYXRpYmlsaXR5VmVyc2lv
biA9ICJYY29kZSAyLjQiOwotCQkJZGV2ZWxvcG1lbnRSZWdpb24gPSBFbmdsaXNoOwogCQkJaGFz
U2Nhbm5lZEZvckVuY29kaW5ncyA9IDE7CiAJCQlrbm93blJlZ2lvbnMgPSAoCiAJCQkJRW5nbGlz
aCwKQEAgLTIyNDE1LDcgKzIyNDQ0LDYgQEAKIAkJCQlCMkVEOTc3MTBCMUY1NUNFMDAyNTdEMEYg
LyogR3JhcGhpY3NDb250ZXh0Q0cuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjI3N0I0MDQwQjIy
RjM3QzAwMDRCRUM2IC8qIEdyYXBoaWNzQ29udGV4dE1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTBGNTgwQjBDMEYxMkEyNjkwMDUxRDY4OSAvKiBHcmFwaGljc0xheWVyLmNwcCBpbiBTb3VyY2Vz
ICovLAotCQkJCTQ5OUIzQzVBMTI4QzY0MUUwMEU3MjZDMiAvKiBHcmFwaGljc0xheWVyTWFjLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJQjJBMDE1QUEwQUY2Q0Q1MzAwNkJDRTBFIC8qIEdyYXBoaWNz
VHlwZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzUwQjU2MTYxMjExOUQyMzAwOEI0NkUwIC8q
IEdyb3VwU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjU1QjNEQkYxMjUxRjEyRDAw
M0VGMjY5IC8qIEhpZGRlbklucHV0VHlwZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI0MDA4LDYg
KzI0MDM2LDkgQEAKIAkJCQk5M0YxOUIwNTA4MjQ1RTU5MDAxRTlBQkMgLyogWFNMVFByb2Nlc3Nv
ckxpYnhzbHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFCRTUxMkQwQ0Y2QzUxMjAwMkVBOTU5
IC8qIFhTTFRVbmljb2RlU29ydC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5N0RENEQ4NjBGREY0
RDZFMDBFQ0Y5QTQgLyogWFNTQXVkaXRvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0OTlCM0VE
NjEyOENEMzE0MDBFNzI2QzIgLyogR3JhcGhpY3NMYXllckNBLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTQ5NTg3ODIxMTJBNTdEREYwMDcyMzhBQyAvKiBQbGF0Zm9ybUNBQW5pbWF0aW9uTWFjLm1t
IGluIFNvdXJjZXMgKi8sCisJCQkJNDk1ODc4MjIxMkE1N0RERjAwNzIzOEFDIC8qIFBsYXRmb3Jt
Q0FMYXllck1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3lt
ZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjQwNzUsNiArMjQxMDYsNyBAQAogCQkJ
CURFQURfQ09ERV9TVFJJUFBJTkcgPSAiJChERUFEX0NPREVfU1RSSVBQSU5HX2RlYnVnKSI7CiAJ
CQkJREVCVUdfREVGSU5FUyA9ICIkKERFQlVHX0RFRklORVNfZGVidWcpIjsKIAkJCQlHQ0NfT1BU
SU1JWkFUSU9OX0xFVkVMID0gIiQoR0NDX09QVElNSVpBVElPTl9MRVZFTF9kZWJ1ZykiOworCQkJ
CVNES1JPT1QgPSAvRGV2ZWxvcGVyL1NES3MvTWFjT1NYMTAuNS5zZGs7CiAJCQkJU1RSSVBfSU5T
VEFMTEVEX1BST0RVQ1QgPSAiJChTVFJJUF9JTlNUQUxMRURfUFJPRFVDVF9kZWJ1ZykiOwogCQkJ
fTsKIAkJCW5hbWUgPSBEZWJ1ZzsKQEAgLTI0MDgzLDYgKzI0MTE1LDcgQEAKIAkJCWlzYSA9IFhD
QnVpbGRDb25maWd1cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSAxQ0RE
NDVFNDBCQTlDODQ2MDBGOTAxNDcgLyogRGVidWdSZWxlYXNlLnhjY29uZmlnICovOwogCQkJYnVp
bGRTZXR0aW5ncyA9IHsKKwkJCQlTREtST09UID0gL0RldmVsb3Blci9TREtzL01hY09TWDEwLjUu
c2RrOwogCQkJCVNUUklQX0lOU1RBTExFRF9QUk9EVUNUID0gTk87CiAJCQl9OwogCQkJbmFtZSA9
IFJlbGVhc2U7CkBAIC0yNDA5MSw2ICsyNDEyNCw3IEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmln
dXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gMUNERDQ1RTYwQkE5Qzg0
NjAwRjkwMTQ3IC8qIEJhc2UueGNjb25maWcgKi87CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJ
CVNES1JPT1QgPSAvRGV2ZWxvcGVyL1NES3MvTWFjT1NYMTAuNS5zZGs7CiAJCQl9OwogCQkJbmFt
ZSA9IFByb2R1Y3Rpb247CiAJCX07CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzTGF5ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzTGF5ZXIuaAkocmV2aXNpb24gNzMyOTMpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzTGF5ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDksMjMgKzQ5LDE5IEBACiBA
Y2xhc3MgV2ViTGF5ZXI7CiBAY2xhc3MgQ0FMYXllcjsKIHR5cGVkZWYgQ0FMYXllciBQbGF0Zm9y
bUxheWVyOwotdHlwZWRlZiBDQUxheWVyKiBOYXRpdmVMYXllcjsKICNlbHNlCiB0eXBlZGVmIHZv
aWQqIFBsYXRmb3JtTGF5ZXI7Ci10eXBlZGVmIHZvaWQqIE5hdGl2ZUxheWVyOwogI2VuZGlmCiAj
ZWxpZiBQTEFURk9STShXSU4pCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBXS0NBQ0ZMYXll
cjsKIHR5cGVkZWYgV0tDQUNGTGF5ZXIgUGxhdGZvcm1MYXllcjsKLXR5cGVkZWYgdm9pZCogTmF0
aXZlTGF5ZXI7CiB9CiAjZWxpZiBQTEFURk9STShRVCkKICNpZiBVU0UoVEVYVFVSRV9NQVBQRVIp
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllcjsK
IHR5cGVkZWYgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIgUGxhdGZvcm1MYXllcjsKLXR5cGVk
ZWYgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIqIE5hdGl2ZUxheWVyOwogfTsKICNlbHNlCiBR
VF9CRUdJTl9OQU1FU1BBQ0UKQEAgLTczLDE4ICs2OSwxNSBAQCBjbGFzcyBRR3JhcGhpY3NPYmpl
Y3Q7CiBRVF9FTkRfTkFNRVNQQUNFCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiB0eXBlZGVmIFFHcmFw
aGljc09iamVjdCBQbGF0Zm9ybUxheWVyOwotdHlwZWRlZiBRR3JhcGhpY3NPYmplY3QqIE5hdGl2
ZUxheWVyOwogfQogI2VuZGlmCiAjZWxpZiBQTEFURk9STShDSFJPTUlVTSkKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIExheWVyQ2hyb21pdW07CiB0eXBlZGVmIExheWVyQ2hyb21pdW0gUGxh
dGZvcm1MYXllcjsKLXR5cGVkZWYgdm9pZCogTmF0aXZlTGF5ZXI7CiB9CiAjZWxzZQogdHlwZWRl
ZiB2b2lkKiBQbGF0Zm9ybUxheWVyOwotdHlwZWRlZiB2b2lkKiBOYXRpdmVMYXllcjsKICNlbmRp
ZgogCiBlbnVtIExheWVyVHJlZUFzVGV4dEJlaGF2aW9yRmxhZ3MgewpAQCAtMjAwLDkgKzE5Myw2
IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25h
bWU7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0TmFtZShjb25zdCBTdHJpbmcmIG5hbWUpIHsgbV9u
YW1lID0gbmFtZTsgfQogCi0gICAgLy8gRm9yIGhvc3RpbmcgdGhpcyBHcmFwaGljc0xheWVyIGlu
IGEgbmF0aXZlIGxheWVyIGhpZXJhcmNoeS4KLSAgICB2aXJ0dWFsIE5hdGl2ZUxheWVyIG5hdGl2
ZUxheWVyKCkgY29uc3QgeyByZXR1cm4gMDsgfQotCiAgICAgR3JhcGhpY3NMYXllciogcGFyZW50
KCkgY29uc3QgeyByZXR1cm4gbV9wYXJlbnQ7IH07CiAgICAgdm9pZCBzZXRQYXJlbnQoR3JhcGhp
Y3NMYXllciogbGF5ZXIpIHsgbV9wYXJlbnQgPSBsYXllcjsgfSAvLyBJbnRlcm5hbCB1c2Ugb25s
eS4KICAgICAKQEAgLTMyMyw2ICszMTMsNyBAQCBwdWJsaWM6CiAgICAgLy8gQ2FsbGJhY2sgZnJv
bSB0aGUgdW5kZXJseWluZyBncmFwaGljcyBzeXN0ZW0gd2hlbiB0aGUgbGF5ZXIgaGFzIGJlZW4g
ZGlzcGxheWVkCiAgICAgdmlydHVhbCB2b2lkIGRpZERpc3BsYXkoUGxhdGZvcm1MYXllciopIHsg
fQogICAgIAorICAgIC8vIEZvciBob3N0aW5nIHRoaXMgR3JhcGhpY3NMYXllciBpbiBhIG5hdGl2
ZSBsYXllciBoaWVyYXJjaHkuCiAgICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxh
eWVyKCkgY29uc3QgeyByZXR1cm4gMDsgfQogICAgIAogICAgIHZvaWQgZHVtcExheWVyKFRleHRT
dHJlYW0mLCBpbnQgaW5kZW50ID0gMCwgTGF5ZXJUcmVlQXNUZXh0QmVoYXZpb3IgPSBMYXllclRy
ZWVBc1RleHRCZWhhdmlvck5vcm1hbCkgY29uc3Q7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCShyZXZpc2lvbiA3MzIzNikJKGZy
b20gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwOjczMjM2
KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjI3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisj
aWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorCisjaW5jbHVkZSAiR3JhcGhpY3NMYXll
ckNBLmgiCisKKyNpbmNsdWRlICJBbmltYXRpb24uaCIKKyNpbmNsdWRlICJGbG9hdENvbnZlcnNp
b24uaCIKKyNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUNBTGF5ZXIu
aCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgIlJvdGF0ZVRyYW5zZm9y
bU9wZXJhdGlvbi5oIgorI2luY2x1ZGUgIlNjYWxlVHJhbnNmb3JtT3BlcmF0aW9uLmgiCisjaW5j
bHVkZSAiU3lzdGVtVGltZS5oIgorI2luY2x1ZGUgIlRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlv
bi5oIgorI2luY2x1ZGUgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgorI2luY2x1ZGUgPGxpbWl0
cy5oPgorI2luY2x1ZGUgPG9iamMvb2JqYy1hdXRvLmg+CisjaW5jbHVkZSA8d3RmL0N1cnJlbnRU
aW1lLmg+CisjaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nQ29uY2F0ZW5hdGUuaD4KKwordXNpbmcgbmFtZXNwYWNlIHN0ZDsKKworI2RlZmluZSBI
QVZFX01PREVSTl9RVUFSVFpDT1JFICghZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRl
ZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8g
VGhlIHRocmVzaG9sZCB3aWR0aCBvciBoZWlnaHQgYWJvdmUgd2hpY2ggYSB0aWxlZCBsYXllciB3
aWxsIGJlIHVzZWQuIFRoaXMgc2hvdWxkIGJlCisvLyBsYXJnZSBlbm91Z2ggdG8gYXZvaWQgdGls
ZWQgbGF5ZXJzIGZvciBtb3N0IEdyYXBoaWNzTGF5ZXJzLCBidXQgbGVzcyB0aGFuIHRoZSBPcGVu
R0wKKy8vIHRleHR1cmUgc2l6ZSBsaW1pdCBvbiBhbGwgc3VwcG9ydGVkIGhhcmR3YXJlLgorc3Rh
dGljIGNvbnN0IGludCBjTWF4UGl4ZWxEaW1lbnNpb24gPSAyMDAwOworCisvLyBJZiB3ZSBzZW5k
IGEgZHVyYXRpb24gb2YgMCB0byBDQSwgdGhlbiBpdCB3aWxsIHVzZSB0aGUgZGVmYXVsdCBkdXJh
dGlvbgorLy8gb2YgMjUwbXMuIFNvIHNlbmQgYSB2ZXJ5IHNtYWxsIHZhbHVlIGluc3RlYWQuCitz
dGF0aWMgY29uc3QgZmxvYXQgY0FuaW1hdGlvbkFsbW9zdFplcm9EdXJhdGlvbiA9IDFlLTNmOwor
CisvLyBDQUN1cnJlbnRNZWRpYVRpbWUoKSBpcyBhIHRpbWUgc2luY2UgYm9vdC4gVGhlc2UgbWV0
aG9kcyBjb252ZXJ0IGJldHdlZW4gdGhhdCBhbmQKKy8vIFdlYkNvcmUgdGltZSwgd2hpY2ggaXMg
c3lzdGVtIHRpbWUgKFVUQykuCitzdGF0aWMgQ0ZUaW1lSW50ZXJ2YWwgY3VycmVudFRpbWVUb01l
ZGlhVGltZShkb3VibGUgdCkKK3sKKyAgICByZXR1cm4gQ0FDdXJyZW50TWVkaWFUaW1lKCkgKyB0
IC0gV1RGOjpjdXJyZW50VGltZSgpOworfQorCitzdGF0aWMgYm9vbCBpc1RyYW5zZm9ybVR5cGVU
cmFuc2Zvcm1hdGlvbk1hdHJpeChUcmFuc2Zvcm1PcGVyYXRpb246Ok9wZXJhdGlvblR5cGUgdHJh
bnNmb3JtVHlwZSkKK3sKKyAgICBzd2l0Y2ggKHRyYW5zZm9ybVR5cGUpIHsKKyAgICBjYXNlIFRy
YW5zZm9ybU9wZXJhdGlvbjo6U0tFV19YOgorICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpT
S0VXX1k6CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlNLRVc6CisgICAgY2FzZSBUcmFu
c2Zvcm1PcGVyYXRpb246Ok1BVFJJWDoKKyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6Uk9U
QVRFXzNEOgorICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpNQVRSSVhfM0Q6CisgICAgY2Fz
ZSBUcmFuc2Zvcm1PcGVyYXRpb246OlBFUlNQRUNUSVZFOgorICAgIGNhc2UgVHJhbnNmb3JtT3Bl
cmF0aW9uOjpJREVOVElUWToKKyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6Tk9ORToKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KK30KKworc3RhdGljIGJvb2wgaXNUcmFuc2Zvcm1UeXBlRmxvYXRQb2ludDNEKFRyYW5z
Zm9ybU9wZXJhdGlvbjo6T3BlcmF0aW9uVHlwZSB0cmFuc2Zvcm1UeXBlKQoreworICAgIHN3aXRj
aCAodHJhbnNmb3JtVHlwZSkgeworICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpTQ0FMRToK
KyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0NBTEVfM0Q6CisgICAgY2FzZSBUcmFuc2Zv
cm1PcGVyYXRpb246OlRSQU5TTEFURToKKyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJB
TlNMQVRFXzNEOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0OgorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitzdGF0aWMgYm9vbCBpc1RyYW5zZm9ybVR5cGVOdW1i
ZXIoVHJhbnNmb3JtT3BlcmF0aW9uOjpPcGVyYXRpb25UeXBlIHRyYW5zZm9ybVR5cGUpCit7Cisg
ICAgcmV0dXJuICFpc1RyYW5zZm9ybVR5cGVUcmFuc2Zvcm1hdGlvbk1hdHJpeCh0cmFuc2Zvcm1U
eXBlKSAmJiAhaXNUcmFuc2Zvcm1UeXBlRmxvYXRQb2ludDNEKHRyYW5zZm9ybVR5cGUpOworfQor
CitzdGF0aWMgdm9pZCBnZXRUcmFuc2Zvcm1GdW5jdGlvblZhbHVlKGNvbnN0IFRyYW5zZm9ybU9w
ZXJhdGlvbiogdHJhbnNmb3JtT3AsIFRyYW5zZm9ybU9wZXJhdGlvbjo6T3BlcmF0aW9uVHlwZSB0
cmFuc2Zvcm1UeXBlLCBjb25zdCBJbnRTaXplJiBzaXplLCBmbG9hdCYgdmFsdWUpCit7CisgICAg
c3dpdGNoICh0cmFuc2Zvcm1UeXBlKSB7CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlJP
VEFURToKKyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRFX1g6CisgICAgY2FzZSBU
cmFuc2Zvcm1PcGVyYXRpb246OlJPVEFURV9ZOgorICAgICAgICB2YWx1ZSA9IHRyYW5zZm9ybU9w
ID8gbmFycm93UHJlY2lzaW9uVG9GbG9hdChkZWcycmFkKHN0YXRpY19jYXN0PGNvbnN0IFJvdGF0
ZVRyYW5zZm9ybU9wZXJhdGlvbio+KHRyYW5zZm9ybU9wKS0+YW5nbGUoKSkpIDogMDsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlNDQUxFX1g6CisgICAgICAg
IHZhbHVlID0gdHJhbnNmb3JtT3AgPyBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHN0YXRpY19jYXN0
PGNvbnN0IFNjYWxlVHJhbnNmb3JtT3BlcmF0aW9uKj4odHJhbnNmb3JtT3ApLT54KCkpIDogMTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlNDQUxFX1k6Cisg
ICAgICAgIHZhbHVlID0gdHJhbnNmb3JtT3AgPyBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHN0YXRp
Y19jYXN0PGNvbnN0IFNjYWxlVHJhbnNmb3JtT3BlcmF0aW9uKj4odHJhbnNmb3JtT3ApLT55KCkp
IDogMTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlNDQUxF
X1o6CisgICAgICAgIHZhbHVlID0gdHJhbnNmb3JtT3AgPyBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0
KHN0YXRpY19jYXN0PGNvbnN0IFNjYWxlVHJhbnNmb3JtT3BlcmF0aW9uKj4odHJhbnNmb3JtT3Ap
LT56KCkpIDogMTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246
OlRSQU5TTEFURV9YOgorICAgICAgICB2YWx1ZSA9IHRyYW5zZm9ybU9wID8gbmFycm93UHJlY2lz
aW9uVG9GbG9hdChzdGF0aWNfY2FzdDxjb25zdCBUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24q
Pih0cmFuc2Zvcm1PcCktPngoc2l6ZSkpIDogMDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBU
cmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURV9ZOgorICAgICAgICB2YWx1ZSA9IHRyYW5zZm9y
bU9wID8gbmFycm93UHJlY2lzaW9uVG9GbG9hdChzdGF0aWNfY2FzdDxjb25zdCBUcmFuc2xhdGVU
cmFuc2Zvcm1PcGVyYXRpb24qPih0cmFuc2Zvcm1PcCktPnkoc2l6ZSkpIDogMDsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURV9aOgorICAgICAg
ICB2YWx1ZSA9IHRyYW5zZm9ybU9wID8gbmFycm93UHJlY2lzaW9uVG9GbG9hdChzdGF0aWNfY2Fz
dDxjb25zdCBUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24qPih0cmFuc2Zvcm1PcCktPnooc2l6
ZSkpIDogMDsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorfQorCitzdGF0aWMgdm9pZCBnZXRUcmFuc2Zvcm1GdW5jdGlvblZhbHVlKGNvbnN0IFRy
YW5zZm9ybU9wZXJhdGlvbiogdHJhbnNmb3JtT3AsIFRyYW5zZm9ybU9wZXJhdGlvbjo6T3BlcmF0
aW9uVHlwZSB0cmFuc2Zvcm1UeXBlLCBjb25zdCBJbnRTaXplJiBzaXplLCBGbG9hdFBvaW50M0Qm
IHZhbHVlKQoreworICAgIHN3aXRjaCAodHJhbnNmb3JtVHlwZSkgeworICAgIGNhc2UgVHJhbnNm
b3JtT3BlcmF0aW9uOjpTQ0FMRToKKyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0NBTEVf
M0Q6CisgICAgICAgIHZhbHVlLnNldFgodHJhbnNmb3JtT3AgPyBuYXJyb3dQcmVjaXNpb25Ub0Zs
b2F0KHN0YXRpY19jYXN0PGNvbnN0IFNjYWxlVHJhbnNmb3JtT3BlcmF0aW9uKj4odHJhbnNmb3Jt
T3ApLT54KCkpIDogMSk7CisgICAgICAgIHZhbHVlLnNldFkodHJhbnNmb3JtT3AgPyBuYXJyb3dQ
cmVjaXNpb25Ub0Zsb2F0KHN0YXRpY19jYXN0PGNvbnN0IFNjYWxlVHJhbnNmb3JtT3BlcmF0aW9u
Kj4odHJhbnNmb3JtT3ApLT55KCkpIDogMSk7CisgICAgICAgIHZhbHVlLnNldFoodHJhbnNmb3Jt
T3AgPyBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHN0YXRpY19jYXN0PGNvbnN0IFNjYWxlVHJhbnNm
b3JtT3BlcmF0aW9uKj4odHJhbnNmb3JtT3ApLT56KCkpIDogMSk7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEU6CisgICAgY2FzZSBUcmFuc2Zv
cm1PcGVyYXRpb246OlRSQU5TTEFURV8zRDoKKyAgICAgICAgdmFsdWUuc2V0WCh0cmFuc2Zvcm1P
cCA/IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoc3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNsYXRlVHJh
bnNmb3JtT3BlcmF0aW9uKj4odHJhbnNmb3JtT3ApLT54KHNpemUpKSA6IDApOworICAgICAgICB2
YWx1ZS5zZXRZKHRyYW5zZm9ybU9wID8gbmFycm93UHJlY2lzaW9uVG9GbG9hdChzdGF0aWNfY2Fz
dDxjb25zdCBUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24qPih0cmFuc2Zvcm1PcCktPnkoc2l6
ZSkpIDogMCk7CisgICAgICAgIHZhbHVlLnNldFoodHJhbnNmb3JtT3AgPyBuYXJyb3dQcmVjaXNp
b25Ub0Zsb2F0KHN0YXRpY19jYXN0PGNvbnN0IFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbio+
KHRyYW5zZm9ybU9wKS0+eihzaXplKSkgOiAwKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVs
dDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCBnZXRUcmFuc2Zvcm1G
dW5jdGlvblZhbHVlKGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbiogdHJhbnNmb3JtT3AsIFRyYW5z
Zm9ybU9wZXJhdGlvbjo6T3BlcmF0aW9uVHlwZSB0cmFuc2Zvcm1UeXBlLCBjb25zdCBJbnRTaXpl
JiBzaXplLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdmFsdWUpCit7CisgICAgc3dpdGNoICh0cmFu
c2Zvcm1UeXBlKSB7CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlNLRVdfWDoKKyAgICBj
YXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0tFV19ZOgorICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0
aW9uOjpTS0VXOgorICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpNQVRSSVg6CisgICAgY2Fz
ZSBUcmFuc2Zvcm1PcGVyYXRpb246OlJPVEFURV8zRDoKKyAgICBjYXNlIFRyYW5zZm9ybU9wZXJh
dGlvbjo6TUFUUklYXzNEOgorICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpQRVJTUEVDVElW
RToKKyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6SURFTlRJVFk6CisgICAgY2FzZSBUcmFu
c2Zvcm1PcGVyYXRpb246Ok5PTkU6CisgICAgICAgIGlmICh0cmFuc2Zvcm1PcCkKKyAgICAgICAg
ICAgIHRyYW5zZm9ybU9wLT5hcHBseSh2YWx1ZSwgc2l6ZSk7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIHZhbHVlLm1ha2VJZGVudGl0eSgpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0
OgorICAgICAgICBicmVhazsKKyAgICB9Cit9CisKKyNpZiBIQVZFX01PREVSTl9RVUFSVFpDT1JF
CitzdGF0aWMgUGxhdGZvcm1DQUFuaW1hdGlvbjo6VmFsdWVGdW5jdGlvblR5cGUgZ2V0VmFsdWVG
dW5jdGlvbk5hbWVGb3JUcmFuc2Zvcm1PcGVyYXRpb24oVHJhbnNmb3JtT3BlcmF0aW9uOjpPcGVy
YXRpb25UeXBlIHRyYW5zZm9ybVR5cGUpCit7CisgICAgLy8gVXNlIGxpdGVyYWwgc3RyaW5ncyB0
byBhdm9pZCBsaW5rLXRpbWUgZGVwZW5kZW5jeSBvbiB0aG9zZSBzeW1ib2xzLgorICAgIHN3aXRj
aCAodHJhbnNmb3JtVHlwZSkgeworICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpST1RBVEVf
WDoKKyAgICAgICAgcmV0dXJuIFBsYXRmb3JtQ0FBbmltYXRpb246OlJvdGF0ZVg7CisgICAgY2Fz
ZSBUcmFuc2Zvcm1PcGVyYXRpb246OlJPVEFURV9ZOgorICAgICAgICByZXR1cm4gUGxhdGZvcm1D
QUFuaW1hdGlvbjo6Um90YXRlWTsKKyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRF
OgorICAgICAgICByZXR1cm4gUGxhdGZvcm1DQUFuaW1hdGlvbjo6Um90YXRlWjsKKyAgICBjYXNl
IFRyYW5zZm9ybU9wZXJhdGlvbjo6U0NBTEVfWDoKKyAgICAgICAgcmV0dXJuIFBsYXRmb3JtQ0FB
bmltYXRpb246OlNjYWxlWDsKKyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0NBTEVfWToK
KyAgICAgICAgcmV0dXJuIFBsYXRmb3JtQ0FBbmltYXRpb246OlNjYWxlWTsKKyAgICBjYXNlIFRy
YW5zZm9ybU9wZXJhdGlvbjo6U0NBTEVfWjoKKyAgICAgICAgcmV0dXJuIFBsYXRmb3JtQ0FBbmlt
YXRpb246OlNjYWxlWjsKKyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFX1g6
CisgICAgICAgIHJldHVybiBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpUcmFuc2xhdGVYOworICAgIGNh
c2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfWToKKyAgICAgICAgcmV0dXJuIFBsYXRm
b3JtQ0FBbmltYXRpb246OlRyYW5zbGF0ZVk7CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246
OlRSQU5TTEFURV9aOgorICAgICAgICByZXR1cm4gUGxhdGZvcm1DQUFuaW1hdGlvbjo6VHJhbnNs
YXRlWjsKKyAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0NBTEU6CisgICAgY2FzZSBUcmFu
c2Zvcm1PcGVyYXRpb246OlNDQUxFXzNEOgorICAgICAgICByZXR1cm4gUGxhdGZvcm1DQUFuaW1h
dGlvbjo6U2NhbGU7CisgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURToKKyAg
ICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFXzNEOgorICAgICAgICByZXR1cm4g
UGxhdGZvcm1DQUFuaW1hdGlvbjo6VHJhbnNsYXRlOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJl
dHVybiBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpOb1ZhbHVlRnVuY3Rpb247CisgICAgfQorfQorI2Vu
ZGlmCisKK3N0YXRpYyBTdHJpbmcgcHJvcGVydHlJZFRvU3RyaW5nKEFuaW1hdGVkUHJvcGVydHlJ
RCBwcm9wZXJ0eSkKK3sKKyAgICBzd2l0Y2ggKHByb3BlcnR5KSB7CisgICAgY2FzZSBBbmltYXRl
ZFByb3BlcnR5V2Via2l0VHJhbnNmb3JtOgorICAgICAgICByZXR1cm4gInRyYW5zZm9ybSI7Cisg
ICAgY2FzZSBBbmltYXRlZFByb3BlcnR5T3BhY2l0eToKKyAgICAgICAgcmV0dXJuICJvcGFjaXR5
IjsKKyAgICBjYXNlIEFuaW1hdGVkUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3I6CisgICAgICAgIHJl
dHVybiAiYmFja2dyb3VuZENvbG9yIjsKKyAgICBjYXNlIEFuaW1hdGVkUHJvcGVydHlJbnZhbGlk
OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgcmV0dXJuICIiOworfQorCitzdGF0aWMgU3RyaW5nIGFuaW1hdGlvbklk
ZW50aWZpZXIoY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBBbmltYXRlZFByb3BlcnR5SUQg
cHJvcGVydHksIGludCBpbmRleCkKK3sKKyAgICByZXR1cm4gbWFrZVN0cmluZyhhbmltYXRpb25O
YW1lLCAnXycsIFN0cmluZzo6bnVtYmVyKHByb3BlcnR5KSwgJ18nLCBTdHJpbmc6Om51bWJlcihp
bmRleCkpOworfQorCitzdGF0aWMgYm9vbCBhbmltYXRpb25IYXNTdGVwc1RpbWluZ0Z1bmN0aW9u
KGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3QsIGNvbnN0IEFuaW1hdGlvbiogYW5p
bSkKK3sKKyAgICBpZiAoYW5pbS0+dGltaW5nRnVuY3Rpb24oKS0+aXNTdGVwc1RpbWluZ0Z1bmN0
aW9uKCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIAorICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCB2YWx1ZUxpc3Quc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgY29uc3QgVGltaW5nRnVu
Y3Rpb24qIHRpbWluZ0Z1bmN0aW9uID0gdmFsdWVMaXN0LmF0KGkpLT50aW1pbmdGdW5jdGlvbigp
OworICAgICAgICBpZiAodGltaW5nRnVuY3Rpb24gJiYgdGltaW5nRnVuY3Rpb24tPmlzU3RlcHNU
aW1pbmdGdW5jdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAg
cmV0dXJuIGZhbHNlOworfQorCitQYXNzT3duUHRyPEdyYXBoaWNzTGF5ZXI+IEdyYXBoaWNzTGF5
ZXI6OmNyZWF0ZShHcmFwaGljc0xheWVyQ2xpZW50KiBjbGllbnQpCit7CisgICAgcmV0dXJuIG5l
dyBHcmFwaGljc0xheWVyQ0EoY2xpZW50KTsKK30KKworR3JhcGhpY3NMYXllckNBOjpHcmFwaGlj
c0xheWVyQ0EoR3JhcGhpY3NMYXllckNsaWVudCogY2xpZW50KQorICAgIDogR3JhcGhpY3NMYXll
cihjbGllbnQpCisgICAgLCBtX2NvbnRlbnRzTGF5ZXJQdXJwb3NlKE5vQ29udGVudHNMYXllcikK
KyAgICAsIG1fY29udGVudHNMYXllckhhc0JhY2tncm91bmRDb2xvcihmYWxzZSkKKyAgICAsIG1f
dW5jb21taXR0ZWRDaGFuZ2VzKE5vQ2hhbmdlKQoreworICAgIG1fbGF5ZXIgPSBQbGF0Zm9ybUNB
TGF5ZXI6OmNyZWF0ZShQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVdlYkxheWVyLCB0aGlzKTsK
KworI2lmICFIQVZFX01PREVSTl9RVUFSVFpDT1JFCisgICAgc2V0Q29udGVudHNPcmllbnRhdGlv
bihkZWZhdWx0Q29udGVudHNPcmllbnRhdGlvbigpKTsKKyNlbmRpZgorCisgICAgdXBkYXRlRGVi
dWdJbmRpY2F0b3JzKCk7Cit9CisKK0dyYXBoaWNzTGF5ZXJDQTo6fkdyYXBoaWNzTGF5ZXJDQSgp
Cit7CisgICAgLy8gV2UgcmVsZWFzZSBvdXIgcmVmZXJlbmNlcyB0byB0aGUgUGxhdGZvcm1DQUxh
eWVycyBoZXJlLCBidXQgZG8gbm90IGFjdGl2ZWx5IHVucGFyZW50IHRoZW0sCisgICAgLy8gc2lu
Y2UgdGhhdCB3aWxsIGNhdXNlIGEgY29tbWl0IGFuZCBicmVhayBvdXIgYmF0Y2hlZCBjb21taXQg
bW9kZWwuIFRoZSBsYXllcnMgd2lsbAorICAgIC8vIGdldCByZWxlYXNlZCB3aGVuIHRoZSByb290
bW9zdCBtb2RpZmllZCBHcmFwaGljc0xheWVyQ0EgcmVidWlsZHMgaXRzIGNoaWxkIGxheWVycy4K
KyAgICAKKyAgICAvLyBDbGVhbiB1cCB0aGUgbGF5ZXIuCisgICAgaWYgKG1fbGF5ZXIpCisgICAg
ICAgIG1fbGF5ZXItPnNldE93bmVyKDApOworICAgIAorICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIp
CisgICAgICAgIG1fY29udGVudHNMYXllci0+c2V0T3duZXIoMCk7CisgICAgICAgIAorICAgIGlm
IChtX3N0cnVjdHVyYWxMYXllcikKKyAgICAgICAgbV9zdHJ1Y3R1cmFsTGF5ZXItPnNldE93bmVy
KDApOworICAgIAorICAgIHJlbW92ZUNsb25lTGF5ZXJzKCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NM
YXllckNBOjpzZXROYW1lKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBTdHJpbmcgbG9uZ05h
bWUgPSBTdHJpbmc6OmZvcm1hdCgiQ0FMYXllciglcCkgR3JhcGhpY3NMYXllciglcCkgIiwgbV9s
YXllci5nZXQoKSwgdGhpcykgKyBuYW1lOworICAgIEdyYXBoaWNzTGF5ZXI6OnNldE5hbWUobG9u
Z05hbWUpOworICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChOYW1lQ2hhbmdlZCk7Cit9CisK
K1BsYXRmb3JtTGF5ZXIqIEdyYXBoaWNzTGF5ZXJDQTo6cGxhdGZvcm1MYXllcigpIGNvbnN0Cit7
CisgICAgcmV0dXJuIHByaW1hcnlMYXllcigpLT5wbGF0Zm9ybUxheWVyKCk7Cit9CisKK2Jvb2wg
R3JhcGhpY3NMYXllckNBOjpzZXRDaGlsZHJlbihjb25zdCBWZWN0b3I8R3JhcGhpY3NMYXllcio+
JiBjaGlsZHJlbikKK3sKKyAgICBib29sIGNoaWxkcmVuQ2hhbmdlZCA9IEdyYXBoaWNzTGF5ZXI6
OnNldENoaWxkcmVuKGNoaWxkcmVuKTsKKyAgICBpZiAoY2hpbGRyZW5DaGFuZ2VkKQorICAgICAg
ICBub3RlU3VibGF5ZXJzQ2hhbmdlZCgpOworICAgIAorICAgIHJldHVybiBjaGlsZHJlbkNoYW5n
ZWQ7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjphZGRDaGlsZChHcmFwaGljc0xheWVyKiBj
aGlsZExheWVyKQoreworICAgIEdyYXBoaWNzTGF5ZXI6OmFkZENoaWxkKGNoaWxkTGF5ZXIpOwor
ICAgIG5vdGVTdWJsYXllcnNDaGFuZ2VkKCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjph
ZGRDaGlsZEF0SW5kZXgoR3JhcGhpY3NMYXllciogY2hpbGRMYXllciwgaW50IGluZGV4KQorewor
ICAgIEdyYXBoaWNzTGF5ZXI6OmFkZENoaWxkQXRJbmRleChjaGlsZExheWVyLCBpbmRleCk7Cisg
ICAgbm90ZVN1YmxheWVyc0NoYW5nZWQoKTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OmFk
ZENoaWxkQmVsb3coR3JhcGhpY3NMYXllciogY2hpbGRMYXllciwgR3JhcGhpY3NMYXllciogc2li
bGluZykKK3sKKyAgICBHcmFwaGljc0xheWVyOjphZGRDaGlsZEJlbG93KGNoaWxkTGF5ZXIsIHNp
YmxpbmcpOworICAgIG5vdGVTdWJsYXllcnNDaGFuZ2VkKCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NM
YXllckNBOjphZGRDaGlsZEFib3ZlKEdyYXBoaWNzTGF5ZXIqIGNoaWxkTGF5ZXIsIEdyYXBoaWNz
TGF5ZXIqIHNpYmxpbmcpCit7CisgICAgR3JhcGhpY3NMYXllcjo6YWRkQ2hpbGRBYm92ZShjaGls
ZExheWVyLCBzaWJsaW5nKTsKKyAgICBub3RlU3VibGF5ZXJzQ2hhbmdlZCgpOworfQorCitib29s
IEdyYXBoaWNzTGF5ZXJDQTo6cmVwbGFjZUNoaWxkKEdyYXBoaWNzTGF5ZXIqIG9sZENoaWxkLCBH
cmFwaGljc0xheWVyKiBuZXdDaGlsZCkKK3sKKyAgICBpZiAoR3JhcGhpY3NMYXllcjo6cmVwbGFj
ZUNoaWxkKG9sZENoaWxkLCBuZXdDaGlsZCkpIHsKKyAgICAgICAgbm90ZVN1YmxheWVyc0NoYW5n
ZWQoKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30K
Kwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnJlbW92ZUZyb21QYXJlbnQoKQoreworICAgIGlmICht
X3BhcmVudCkKKyAgICAgICAgc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllckNBKj4obV9wYXJlbnQp
LT5ub3RlU3VibGF5ZXJzQ2hhbmdlZCgpOworICAgIEdyYXBoaWNzTGF5ZXI6OnJlbW92ZUZyb21Q
YXJlbnQoKTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldE1hc2tMYXllcihHcmFwaGlj
c0xheWVyKiBsYXllcikKK3sKKyAgICBpZiAobGF5ZXIgPT0gbV9tYXNrTGF5ZXIpCisgICAgICAg
IHJldHVybjsKKworICAgIEdyYXBoaWNzTGF5ZXI6OnNldE1hc2tMYXllcihsYXllcik7CisgICAg
bm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKE1hc2tMYXllckNoYW5nZWQpOworCisgICAgcHJvcGFn
YXRlTGF5ZXJDaGFuZ2VUb1JlcGxpY2FzKCk7CisgICAgCisgICAgaWYgKG1fcmVwbGljYXRlZExh
eWVyKQorICAgICAgICBzdGF0aWNfY2FzdDxHcmFwaGljc0xheWVyQ0EqPihtX3JlcGxpY2F0ZWRM
YXllciktPnByb3BhZ2F0ZUxheWVyQ2hhbmdlVG9SZXBsaWNhcygpOworfQorCit2b2lkIEdyYXBo
aWNzTGF5ZXJDQTo6c2V0UmVwbGljYXRlZExheWVyKEdyYXBoaWNzTGF5ZXIqIGxheWVyKQorewor
ICAgIGlmIChsYXllciA9PSBtX3JlcGxpY2F0ZWRMYXllcikKKyAgICAgICAgcmV0dXJuOworCisg
ICAgR3JhcGhpY3NMYXllcjo6c2V0UmVwbGljYXRlZExheWVyKGxheWVyKTsKKyAgICBub3RlTGF5
ZXJQcm9wZXJ0eUNoYW5nZWQoUmVwbGljYXRlZExheWVyQ2hhbmdlZCk7Cit9CisKK3ZvaWQgR3Jh
cGhpY3NMYXllckNBOjpzZXRSZXBsaWNhdGVkQnlMYXllcihHcmFwaGljc0xheWVyKiBsYXllcikK
K3sKKyAgICBpZiAobGF5ZXIgPT0gbV9yZXBsaWNhTGF5ZXIpCisgICAgICAgIHJldHVybjsKKwor
ICAgIEdyYXBoaWNzTGF5ZXI6OnNldFJlcGxpY2F0ZWRCeUxheWVyKGxheWVyKTsKKyAgICBub3Rl
U3VibGF5ZXJzQ2hhbmdlZCgpOworICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChSZXBsaWNh
dGVkTGF5ZXJDaGFuZ2VkKTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldFBvc2l0aW9u
KGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50KQoreworICAgIGlmIChwb2ludCA9PSBtX3Bvc2l0aW9u
KQorICAgICAgICByZXR1cm47CisKKyAgICBHcmFwaGljc0xheWVyOjpzZXRQb3NpdGlvbihwb2lu
dCk7CisgICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKFBvc2l0aW9uQ2hhbmdlZCk7Cit9CisK
K3ZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRBbmNob3JQb2ludChjb25zdCBGbG9hdFBvaW50M0Qm
IHBvaW50KQoreworICAgIGlmIChwb2ludCA9PSBtX2FuY2hvclBvaW50KQorICAgICAgICByZXR1
cm47CisKKyAgICBHcmFwaGljc0xheWVyOjpzZXRBbmNob3JQb2ludChwb2ludCk7CisgICAgbm90
ZUxheWVyUHJvcGVydHlDaGFuZ2VkKEFuY2hvclBvaW50Q2hhbmdlZCk7Cit9CisKK3ZvaWQgR3Jh
cGhpY3NMYXllckNBOjpzZXRTaXplKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKK3sKKyAgICBpZiAo
c2l6ZSA9PSBtX3NpemUpCisgICAgICAgIHJldHVybjsKKworICAgIEdyYXBoaWNzTGF5ZXI6OnNl
dFNpemUoc2l6ZSk7CisgICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKFNpemVDaGFuZ2VkKTsK
K30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldFRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgdCkKK3sKKyAgICBpZiAodCA9PSBtX3RyYW5zZm9ybSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgR3JhcGhpY3NMYXllcjo6c2V0VHJhbnNmb3JtKHQpOworICAgIG5vdGVMYXll
clByb3BlcnR5Q2hhbmdlZChUcmFuc2Zvcm1DaGFuZ2VkKTsKK30KKwordm9pZCBHcmFwaGljc0xh
eWVyQ0E6OnNldENoaWxkcmVuVHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0
KQoreworICAgIGlmICh0ID09IG1fY2hpbGRyZW5UcmFuc2Zvcm0pCisgICAgICAgIHJldHVybjsK
KworICAgIEdyYXBoaWNzTGF5ZXI6OnNldENoaWxkcmVuVHJhbnNmb3JtKHQpOworICAgIG5vdGVM
YXllclByb3BlcnR5Q2hhbmdlZChDaGlsZHJlblRyYW5zZm9ybUNoYW5nZWQpOworfQorCit2b2lk
IEdyYXBoaWNzTGF5ZXJDQTo6bW92ZU9yQ29weUxheWVyQW5pbWF0aW9uKE1vdmVPckNvcHkgb3Bl
cmF0aW9uLCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbklkZW50aWZpZXIsIFBsYXRmb3JtQ0FMYXll
ciAqZnJvbUxheWVyLCBQbGF0Zm9ybUNBTGF5ZXIgKnRvTGF5ZXIpCit7CisgICAgUmVmUHRyPFBs
YXRmb3JtQ0FBbmltYXRpb24+IGFuaW0gPSBmcm9tTGF5ZXItPmFuaW1hdGlvbkZvcktleShhbmlt
YXRpb25JZGVudGlmaWVyKTsKKyAgICBpZiAoIWFuaW0pCisgICAgICAgIHJldHVybjsKKworICAg
IHN3aXRjaCAob3BlcmF0aW9uKSB7CisgICAgY2FzZSBNb3ZlOgorICAgICAgICBmcm9tTGF5ZXIt
PnJlbW92ZUFuaW1hdGlvbkZvcktleShhbmltYXRpb25JZGVudGlmaWVyKTsKKyAgICAgICAgdG9M
YXllci0+YWRkQW5pbWF0aW9uRm9yS2V5KGFuaW1hdGlvbklkZW50aWZpZXIsIGFuaW0uZ2V0KCkp
OworICAgICAgICBicmVhazsKKworICAgIGNhc2UgQ29weToKKyAgICAgICAgdG9MYXllci0+YWRk
QW5pbWF0aW9uRm9yS2V5KGFuaW1hdGlvbklkZW50aWZpZXIsIGFuaW0uZ2V0KCkpOworICAgICAg
ICBicmVhazsKKyAgICB9Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjptb3ZlT3JDb3B5QW5p
bWF0aW9uc0ZvclByb3BlcnR5KE1vdmVPckNvcHkgb3BlcmF0aW9uLCBBbmltYXRlZFByb3BlcnR5
SUQgcHJvcGVydHksIFBsYXRmb3JtQ0FMYXllciAqZnJvbUxheWVyLCBQbGF0Zm9ybUNBTGF5ZXIg
KnRvTGF5ZXIpCit7CisgICAgLy8gTG9vayBmb3IgcnVubmluZyBhbmltYXRpb25zIGFmZmVjdGlu
ZyB0aGlzIHByb3BlcnR5LgorICAgIEFuaW1hdGlvbnNNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9
IG1fcnVubmluZ0FuaW1hdGlvbnMuZW5kKCk7CisgICAgZm9yIChBbmltYXRpb25zTWFwOjpjb25z
dF9pdGVyYXRvciBpdCA9IG1fcnVubmluZ0FuaW1hdGlvbnMuYmVnaW4oKTsgaXQgIT0gZW5kOyAr
K2l0KSB7CisgICAgICAgIGNvbnN0IFZlY3RvcjxMYXllclByb3BlcnR5QW5pbWF0aW9uPiYgcHJv
cGVydHlBbmltYXRpb25zID0gaXQtPnNlY29uZDsKKyAgICAgICAgc2l6ZV90IG51bUFuaW1hdGlv
bnMgPSBwcm9wZXJ0eUFuaW1hdGlvbnMuc2l6ZSgpOworICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG51bUFuaW1hdGlvbnM7ICsraSkgeworICAgICAgICAgICAgY29uc3QgTGF5ZXJQcm9w
ZXJ0eUFuaW1hdGlvbiYgY3VyckFuaW1hdGlvbiA9IHByb3BlcnR5QW5pbWF0aW9uc1tpXTsKKyAg
ICAgICAgICAgIGlmIChjdXJyQW5pbWF0aW9uLm1fcHJvcGVydHkgPT0gcHJvcGVydHkpCisgICAg
ICAgICAgICAgICAgbW92ZU9yQ29weUxheWVyQW5pbWF0aW9uKG9wZXJhdGlvbiwgYW5pbWF0aW9u
SWRlbnRpZmllcihjdXJyQW5pbWF0aW9uLm1fbmFtZSwgY3VyckFuaW1hdGlvbi5tX3Byb3BlcnR5
LCBjdXJyQW5pbWF0aW9uLm1faW5kZXgpLCBmcm9tTGF5ZXIsIHRvTGF5ZXIpOworICAgICAgICB9
CisgICAgfQorfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0UHJlc2VydmVzM0QoYm9vbCBw
cmVzZXJ2ZXMzRCkKK3sKKyAgICBpZiAocHJlc2VydmVzM0QgPT0gbV9wcmVzZXJ2ZXMzRCkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgR3JhcGhpY3NMYXllcjo6c2V0UHJlc2VydmVzM0QocHJlc2Vy
dmVzM0QpOworICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChQcmVzZXJ2ZXMzRENoYW5nZWQp
OworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0TWFza3NUb0JvdW5kcyhib29sIG1hc2tz
VG9Cb3VuZHMpCit7CisgICAgaWYgKG1hc2tzVG9Cb3VuZHMgPT0gbV9tYXNrc1RvQm91bmRzKQor
ICAgICAgICByZXR1cm47CisKKyAgICBHcmFwaGljc0xheWVyOjpzZXRNYXNrc1RvQm91bmRzKG1h
c2tzVG9Cb3VuZHMpOworICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChNYXNrc1RvQm91bmRz
Q2hhbmdlZCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXREcmF3c0NvbnRlbnQoYm9v
bCBkcmF3c0NvbnRlbnQpCit7CisgICAgaWYgKGRyYXdzQ29udGVudCA9PSBtX2RyYXdzQ29udGVu
dCkKKyAgICAgICAgcmV0dXJuOworCisgICAgR3JhcGhpY3NMYXllcjo6c2V0RHJhd3NDb250ZW50
KGRyYXdzQ29udGVudCk7CisgICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKERyYXdzQ29udGVu
dENoYW5nZWQpOworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0QmFja2dyb3VuZENvbG9y
KGNvbnN0IENvbG9yJiBjb2xvcikKK3sKKyAgICBpZiAobV9iYWNrZ3JvdW5kQ29sb3JTZXQgJiYg
bV9iYWNrZ3JvdW5kQ29sb3IgPT0gY29sb3IpCisgICAgICAgIHJldHVybjsKKworICAgIEdyYXBo
aWNzTGF5ZXI6OnNldEJhY2tncm91bmRDb2xvcihjb2xvcik7CisKKyAgICBtX2NvbnRlbnRzTGF5
ZXJIYXNCYWNrZ3JvdW5kQ29sb3IgPSB0cnVlOworICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdl
ZChCYWNrZ3JvdW5kQ29sb3JDaGFuZ2VkKTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OmNs
ZWFyQmFja2dyb3VuZENvbG9yKCkKK3sKKyAgICBpZiAoIW1fYmFja2dyb3VuZENvbG9yU2V0KQor
ICAgICAgICByZXR1cm47CisKKyAgICBHcmFwaGljc0xheWVyOjpjbGVhckJhY2tncm91bmRDb2xv
cigpOworICAgIG1fY29udGVudHNMYXllckhhc0JhY2tncm91bmRDb2xvciA9IGZhbHNlOworICAg
IG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChCYWNrZ3JvdW5kQ29sb3JDaGFuZ2VkKTsKK30KKwor
dm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRzT3BhcXVlKGJvb2wgb3BhcXVlKQorewor
ICAgIGlmIChtX2NvbnRlbnRzT3BhcXVlID09IG9wYXF1ZSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgR3JhcGhpY3NMYXllcjo6c2V0Q29udGVudHNPcGFxdWUob3BhcXVlKTsKKyAgICBub3RlTGF5
ZXJQcm9wZXJ0eUNoYW5nZWQoQ29udGVudHNPcGFxdWVDaGFuZ2VkKTsKK30KKwordm9pZCBHcmFw
aGljc0xheWVyQ0E6OnNldEJhY2tmYWNlVmlzaWJpbGl0eShib29sIHZpc2libGUpCit7CisgICAg
aWYgKG1fYmFja2ZhY2VWaXNpYmlsaXR5ID09IHZpc2libGUpCisgICAgICAgIHJldHVybjsKKyAg
ICAKKyAgICBHcmFwaGljc0xheWVyOjpzZXRCYWNrZmFjZVZpc2liaWxpdHkodmlzaWJsZSk7Cisg
ICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKEJhY2tmYWNlVmlzaWJpbGl0eUNoYW5nZWQpOwor
fQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0T3BhY2l0eShmbG9hdCBvcGFjaXR5KQorewor
ICAgIGZsb2F0IGNsYW1wZWRPcGFjaXR5ID0gbWF4KDAuMGYsIG1pbihvcGFjaXR5LCAxLjBmKSk7
CisKKyAgICBpZiAoY2xhbXBlZE9wYWNpdHkgPT0gbV9vcGFjaXR5KQorICAgICAgICByZXR1cm47
CisKKyAgICBHcmFwaGljc0xheWVyOjpzZXRPcGFjaXR5KGNsYW1wZWRPcGFjaXR5KTsKKyAgICBu
b3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoT3BhY2l0eUNoYW5nZWQpOworfQorCit2b2lkIEdyYXBo
aWNzTGF5ZXJDQTo6c2V0TmVlZHNEaXNwbGF5KCkKK3sKKyAgICBGbG9hdFJlY3QgaHVnZVJlY3Qo
LW51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4KCkgLyAyLCAtbnVtZXJpY19saW1pdHM8ZmxvYXQ+
OjptYXgoKSAvIDIsCisgICAgICAgICAgICAgICAgICAgICAgIG51bWVyaWNfbGltaXRzPGZsb2F0
Pjo6bWF4KCksIG51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4KCkpOworCisgICAgc2V0TmVlZHNE
aXNwbGF5SW5SZWN0KGh1Z2VSZWN0KTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldE5l
ZWRzRGlzcGxheUluUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCit7CisgICAgaWYgKCFkcmF3
c0NvbnRlbnQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgY29uc3Qgc2l6ZV90IG1heERpcnR5
UmVjdHMgPSAzMjsKKyAgICAKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZGlydHlSZWN0
cy5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAobV9kaXJ0eVJlY3RzW2ldLmNvbnRhaW5zKHJl
Y3QpKQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBpZiAobV9kaXJ0eVJl
Y3RzLnNpemUoKSA8IG1heERpcnR5UmVjdHMpCisgICAgICAgIG1fZGlydHlSZWN0cy5hcHBlbmQo
cmVjdCk7CisgICAgZWxzZQorICAgICAgICBtX2RpcnR5UmVjdHNbMF0udW5pdGUocmVjdCk7CisK
KyAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoRGlydHlSZWN0c0NoYW5nZWQpOworfQorCit2
b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0Q29udGVudHNOZWVkc0Rpc3BsYXkoKQoreworICAgIG5v
dGVMYXllclByb3BlcnR5Q2hhbmdlZChDb250ZW50c05lZWRzRGlzcGxheSk7Cit9CisKK3ZvaWQg
R3JhcGhpY3NMYXllckNBOjpzZXRDb250ZW50c1JlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkKK3sK
KyAgICBpZiAocmVjdCA9PSBtX2NvbnRlbnRzUmVjdCkKKyAgICAgICAgcmV0dXJuOworCisgICAg
R3JhcGhpY3NMYXllcjo6c2V0Q29udGVudHNSZWN0KHJlY3QpOworICAgIG5vdGVMYXllclByb3Bl
cnR5Q2hhbmdlZChDb250ZW50c1JlY3RDaGFuZ2VkKTsKK30KKworYm9vbCBHcmFwaGljc0xheWVy
Q0E6OmFkZEFuaW1hdGlvbihjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVMaXN0LCBjb25z
dCBJbnRTaXplJiBib3hTaXplLCBjb25zdCBBbmltYXRpb24qIGFuaW0sIGNvbnN0IFN0cmluZyYg
YW5pbWF0aW9uTmFtZSwgZG91YmxlIHRpbWVPZmZzZXQpCit7CisgICAgQVNTRVJUKCFhbmltYXRp
b25OYW1lLmlzRW1wdHkoKSk7CisKKyAgICBpZiAoIWFuaW0gfHwgYW5pbS0+aXNFbXB0eU9yWmVy
b0R1cmF0aW9uKCkgfHwgdmFsdWVMaXN0LnNpemUoKSA8IDIpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworI2lmICFIQVZFX01PREVSTl9RVUFSVFpDT1JFCisgICAgLy8gT2xkZXIgdmVyc2lvbnMg
b2YgUXVhcnR6Q29yZSBkbyBub3QgaGFuZGxlIG9wYWNpdHkgaW4gdHJhbnNmb3JtIGxheWVycyBw
cm9wZXJseSwgc28gd2Ugd2lsbAorICAgIC8vIGFsd2F5cyBkbyBzb2Z0d2FyZSBhbmltYXRpb24g
aW4gdGhhdCBjYXNlLgorICAgIGlmICh2YWx1ZUxpc3QucHJvcGVydHkoKSA9PSBBbmltYXRlZFBy
b3BlcnR5T3BhY2l0eSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCisKKyAgICAvLyBD
b3JlQW5pbWF0aW9uIGRvZXMgbm90IGhhbmRsZSB0aGUgc3RlcHMoKSB0aW1pbmcgZnVuY3Rpb24u
IEZhbGwgYmFjaworICAgIC8vIHRvIHNvZnR3YXJlIGFuaW1hdGlvbiBpbiB0aGF0IGNhc2UuCisg
ICAgaWYgKGFuaW1hdGlvbkhhc1N0ZXBzVGltaW5nRnVuY3Rpb24odmFsdWVMaXN0LCBhbmltKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYm9vbCBjcmVhdGVkQW5pbWF0aW9ucyA9IGZh
bHNlOworICAgIGlmICh2YWx1ZUxpc3QucHJvcGVydHkoKSA9PSBBbmltYXRlZFByb3BlcnR5V2Vi
a2l0VHJhbnNmb3JtKQorICAgICAgICBjcmVhdGVkQW5pbWF0aW9ucyA9IGNyZWF0ZVRyYW5zZm9y
bUFuaW1hdGlvbnNGcm9tS2V5ZnJhbWVzKHZhbHVlTGlzdCwgYW5pbSwgYW5pbWF0aW9uTmFtZSwg
dGltZU9mZnNldCwgYm94U2l6ZSk7CisgICAgZWxzZQorICAgICAgICBjcmVhdGVkQW5pbWF0aW9u
cyA9IGNyZWF0ZUFuaW1hdGlvbkZyb21LZXlmcmFtZXModmFsdWVMaXN0LCBhbmltLCBhbmltYXRp
b25OYW1lLCB0aW1lT2Zmc2V0KTsKKworICAgIGlmIChjcmVhdGVkQW5pbWF0aW9ucykKKyAgICAg
ICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKEFuaW1hdGlvbkNoYW5nZWQpOworICAgICAgICAK
KyAgICByZXR1cm4gY3JlYXRlZEFuaW1hdGlvbnM7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNB
OjpwYXVzZUFuaW1hdGlvbihjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGRvdWJsZSB0aW1l
T2Zmc2V0KQoreworICAgIGlmICghYW5pbWF0aW9uSXNSdW5uaW5nKGFuaW1hdGlvbk5hbWUpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBBbmltYXRpb25zVG9Qcm9jZXNzTWFwOjppdGVyYXRvciBp
dCA9IG1fYW5pbWF0aW9uc1RvUHJvY2Vzcy5maW5kKGFuaW1hdGlvbk5hbWUpOworICAgIGlmIChp
dCAhPSBtX2FuaW1hdGlvbnNUb1Byb2Nlc3MuZW5kKCkpIHsKKyAgICAgICAgQW5pbWF0aW9uUHJv
Y2Vzc2luZ0FjdGlvbiYgcHJvY2Vzc2luZ0luZm8gPSBpdC0+c2Vjb25kOworICAgICAgICAvLyBJ
ZiBhbiBhbmltYXRpb24gaXMgc2NoZWR1bGVkIHRvIGJlIHJlbW92ZWQsIGRvbid0IGNoYW5nZSB0
aGUgcmVtb3ZlIHRvIGEgcGF1c2UuCisgICAgICAgIGlmIChwcm9jZXNzaW5nSW5mby5hY3Rpb24g
IT0gUmVtb3ZlKQorICAgICAgICAgICAgcHJvY2Vzc2luZ0luZm8uYWN0aW9uID0gUGF1c2U7Cisg
ICAgfSBlbHNlCisgICAgICAgIG1fYW5pbWF0aW9uc1RvUHJvY2Vzcy5hZGQoYW5pbWF0aW9uTmFt
ZSwgQW5pbWF0aW9uUHJvY2Vzc2luZ0FjdGlvbihQYXVzZSwgdGltZU9mZnNldCkpOworCisgICAg
bm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKEFuaW1hdGlvbkNoYW5nZWQpOworfQorCit2b2lkIEdy
YXBoaWNzTGF5ZXJDQTo6cmVtb3ZlQW5pbWF0aW9uKGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFt
ZSkKK3sKKyAgICBpZiAoIWFuaW1hdGlvbklzUnVubmluZyhhbmltYXRpb25OYW1lKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgbV9hbmltYXRpb25zVG9Qcm9jZXNzLmFkZChhbmltYXRpb25OYW1l
LCBBbmltYXRpb25Qcm9jZXNzaW5nQWN0aW9uKFJlbW92ZSkpOworICAgIG5vdGVMYXllclByb3Bl
cnR5Q2hhbmdlZChBbmltYXRpb25DaGFuZ2VkKTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6
OmFuaW1hdGlvblN0YXJ0ZWQoQ0ZUaW1lSW50ZXJ2YWwgc3RhcnRUaW1lKQoreworICAgIGlmICht
X2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPm5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQodGhpcywg
c3RhcnRUaW1lKTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRzVG9JbWFn
ZShJbWFnZSogaW1hZ2UpCit7CisgICAgaWYgKGltYWdlKSB7CisgICAgICAgIENHSW1hZ2VSZWYg
bmV3SW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICAgICAg
aWYgKCFuZXdJbWFnZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAvLyBDaGVjayB0
byBzZWUgaWYgdGhlIGltYWdlIGNoYW5nZWQ7IHdlIGhhdmUgdG8gZG8gdGhpcyBiZWNhdXNlIHRo
ZSBjYWxsIHRvCisgICAgICAgIC8vIENHSW1hZ2VDcmVhdGVDb3B5V2l0aENvbG9yU3BhY2UoKSBi
ZWxvdyBjYW4gY3JlYXRlIGEgbmV3IGltYWdlIGV2ZXJ5IHRpbWUuCisgICAgICAgIGlmIChtX3Vu
Y29ycmVjdGVkQ29udGVudHNJbWFnZSAmJiBtX3VuY29ycmVjdGVkQ29udGVudHNJbWFnZS5nZXQo
KSA9PSBuZXdJbWFnZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgICAgIG1f
dW5jb3JyZWN0ZWRDb250ZW50c0ltYWdlID0gbmV3SW1hZ2U7CisgICAgICAgIG1fcGVuZGluZ0Nv
bnRlbnRzSW1hZ2UgPSBuZXdJbWFnZTsKKyAgICAgICAgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3Bh
Y2UgPSBDR0ltYWdlR2V0Q29sb3JTcGFjZShtX3BlbmRpbmdDb250ZW50c0ltYWdlLmdldCgpKTsK
KworICAgICAgICBzdGF0aWMgQ0dDb2xvclNwYWNlUmVmIGRldmljZVJHQiA9IENHQ29sb3JTcGFj
ZUNyZWF0ZURldmljZVJHQigpOworICAgICAgICBpZiAoY29sb3JTcGFjZSAmJiBDRkVxdWFsKGNv
bG9yU3BhY2UsIGRldmljZVJHQikpIHsKKyAgICAgICAgICAgIC8vIENvcmVHcmFwaGljcyByZW5k
ZXJzIGltYWdlcyB0YWdnZWQgd2l0aCBEZXZpY2VSR0IgdXNpbmcgdGhlIGNvbG9yIHNwYWNlIG9m
IHRoZSBtYWluIGRpc3BsYXkuIFdoZW4gd2UgaGFuZCBzdWNoCisgICAgICAgICAgICAvLyBpbWFn
ZXMgdG8gQ0Egd2UgbmVlZCB0byB0YWcgdGhlbSBzaW1pbGFybHkgc28gQ0EgcmVuZGVyaW5nIG1h
dGNoZXMgQ0cgcmVuZGVyaW5nLgorICAgICAgICAgICAgc3RhdGljIENHQ29sb3JTcGFjZVJlZiBn
ZW5lcmljUkdCID0gQ0dEaXNwbGF5Q29weUNvbG9yU3BhY2Uoa0NHRGlyZWN0TWFpbkRpc3BsYXkp
OworICAgICAgICAgICAgbV9wZW5kaW5nQ29udGVudHNJbWFnZS5hZG9wdENGKENHSW1hZ2VDcmVh
dGVDb3B5V2l0aENvbG9yU3BhY2UobV9wZW5kaW5nQ29udGVudHNJbWFnZS5nZXQoKSwgZ2VuZXJp
Y1JHQikpOworICAgICAgICB9CisgICAgICAgIG1fY29udGVudHNMYXllclB1cnBvc2UgPSBDb250
ZW50c0xheWVyRm9ySW1hZ2U7CisgICAgICAgIGlmICghbV9jb250ZW50c0xheWVyKQorICAgICAg
ICAgICAgbm90ZVN1YmxheWVyc0NoYW5nZWQoKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX3Vu
Y29ycmVjdGVkQ29udGVudHNJbWFnZSA9IDA7CisgICAgICAgIG1fcGVuZGluZ0NvbnRlbnRzSW1h
Z2UgPSAwOworICAgICAgICBtX2NvbnRlbnRzTGF5ZXJQdXJwb3NlID0gTm9Db250ZW50c0xheWVy
OworICAgICAgICBpZiAobV9jb250ZW50c0xheWVyKQorICAgICAgICAgICAgbm90ZVN1YmxheWVy
c0NoYW5nZWQoKTsKKyAgICB9CisKKyAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoQ29udGVu
dHNJbWFnZUNoYW5nZWQpOworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0Q29udGVudHNU
b01lZGlhKFBsYXRmb3JtTGF5ZXIqIG1lZGlhTGF5ZXIpCit7CisgICAgaWYgKG1fY29udGVudHNM
YXllciAmJiBtZWRpYUxheWVyID09IG1fY29udGVudHNMYXllci0+cGxhdGZvcm1MYXllcigpKQor
ICAgICAgICByZXR1cm47CisgICAgICAgIAorICAgIC8vIENyZWF0ZSB0aGUgUGxhdGZvcm1DQUxh
eWVyIHRvIHdyYXAgdGhlIGluY29taW5nIGxheWVyCisgICAgbV9jb250ZW50c0xheWVyID0gbWVk
aWFMYXllciA/IFBsYXRmb3JtQ0FMYXllcjo6Y3JlYXRlKG1lZGlhTGF5ZXIsIHRoaXMpIDogMDsK
KworICAgIG1fY29udGVudHNMYXllclB1cnBvc2UgPSBtZWRpYUxheWVyID8gQ29udGVudHNMYXll
ckZvck1lZGlhIDogTm9Db250ZW50c0xheWVyOworCisgICAgbm90ZVN1YmxheWVyc0NoYW5nZWQo
KTsKKyAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoQ29udGVudHNNZWRpYUxheWVyQ2hhbmdl
ZCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRDb250ZW50c1RvQ2FudmFzKFBsYXRm
b3JtTGF5ZXIqIGNhbnZhc0xheWVyKQoreworICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIgJiYgY2Fu
dmFzTGF5ZXIgPT0gbV9jb250ZW50c0xheWVyLT5wbGF0Zm9ybUxheWVyKCkpCisgICAgICAgIHJl
dHVybjsKKyAgICAKKyAgICAvLyBDcmVhdGUgdGhlIFBsYXRmb3JtQ0FMYXllciB0byB3cmFwIHRo
ZSBpbmNvbWluZyBsYXllcgorICAgIG1fY29udGVudHNMYXllciA9IGNhbnZhc0xheWVyID8gUGxh
dGZvcm1DQUxheWVyOjpjcmVhdGUoY2FudmFzTGF5ZXIsIHRoaXMpIDogMDsKKyAgICAKKyAgICBt
X2NvbnRlbnRzTGF5ZXJQdXJwb3NlID0gY2FudmFzTGF5ZXIgPyBDb250ZW50c0xheWVyRm9yQ2Fu
dmFzIDogTm9Db250ZW50c0xheWVyOworCisgICAgbm90ZVN1YmxheWVyc0NoYW5nZWQoKTsKKyAg
ICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoQ29udGVudHNDYW52YXNMYXllckNoYW5nZWQpOwor
fQorICAgIAordm9pZCBHcmFwaGljc0xheWVyQ0E6OmRpZERpc3BsYXkoUGxhdGZvcm1MYXllciog
bGF5ZXIpCit7CisgICAgUGxhdGZvcm1DQUxheWVyKiBjdXJyZW50TGF5ZXIgPSBQbGF0Zm9ybUNB
TGF5ZXI6OnBsYXRmb3JtQ0FMYXllcihsYXllcik7CisgICAgUGxhdGZvcm1DQUxheWVyKiBzb3Vy
Y2VMYXllcjsKKyAgICBMYXllck1hcCogbGF5ZXJDbG9uZU1hcDsKKworICAgIGlmIChjdXJyZW50
TGF5ZXIgPT0gbV9sYXllcikgeworICAgICAgICBzb3VyY2VMYXllciA9IG1fbGF5ZXIuZ2V0KCk7
CisgICAgICAgIGxheWVyQ2xvbmVNYXAgPSBtX2xheWVyQ2xvbmVzLmdldCgpOworICAgIH0gZWxz
ZSBpZiAoY3VycmVudExheWVyID09IG1fY29udGVudHNMYXllcikgeworICAgICAgICBzb3VyY2VM
YXllciA9IG1fY29udGVudHNMYXllci5nZXQoKTsKKyAgICAgICAgbGF5ZXJDbG9uZU1hcCA9IG1f
Y29udGVudHNMYXllckNsb25lcy5nZXQoKTsKKyAgICB9IGVsc2UKKyAgICAgICAgcmV0dXJuOwor
CisgICAgaWYgKGxheWVyQ2xvbmVNYXApIHsKKyAgICAgICAgTGF5ZXJNYXA6OmNvbnN0X2l0ZXJh
dG9yIGVuZCA9IGxheWVyQ2xvbmVNYXAtPmVuZCgpOworICAgICAgICBmb3IgKExheWVyTWFwOjpj
b25zdF9pdGVyYXRvciBpdCA9IGxheWVyQ2xvbmVNYXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytp
dCkgeworICAgICAgICAgICAgUGxhdGZvcm1DQUxheWVyKiBjdXJyQ2xvbmUgPSBpdC0+c2Vjb25k
LmdldCgpOworICAgICAgICAgICAgaWYgKCFjdXJyQ2xvbmUpCisgICAgICAgICAgICAgICAgY29u
dGludWU7CisKKyAgICAgICAgICAgIGlmIChjdXJyQ2xvbmUtPmNvbnRlbnRzKCkgIT0gc291cmNl
TGF5ZXItPmNvbnRlbnRzKCkpCisgICAgICAgICAgICAgICAgY3VyckNsb25lLT5zZXRDb250ZW50
cyhzb3VyY2VMYXllci0+Y29udGVudHMoKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgY3VyckNsb25lLT5zZXRDb250ZW50c0NoYW5nZWQoKTsKKyAgICAgICAgfQorICAgIH0K
K30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnN5bmNDb21wb3NpdGluZ1N0YXRlKCkKK3sKKyAg
ICByZWN1cnNpdmVDb21taXRDaGFuZ2VzKCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpz
eW5jQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKQoreworICAgIGNvbW1pdExheWVy
Q2hhbmdlc0JlZm9yZVN1YmxheWVycygpOworICAgIGNvbW1pdExheWVyQ2hhbmdlc0FmdGVyU3Vi
bGF5ZXJzKCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpyZWN1cnNpdmVDb21taXRDaGFu
Z2VzKCkKK3sKKyAgICBjb21taXRMYXllckNoYW5nZXNCZWZvcmVTdWJsYXllcnMoKTsKKworICAg
IGlmIChtX21hc2tMYXllcikKKyAgICAgICAgc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllckNBKj4o
bV9tYXNrTGF5ZXIpLT5jb21taXRMYXllckNoYW5nZXNCZWZvcmVTdWJsYXllcnMoKTsKKworICAg
IGNvbnN0IFZlY3RvcjxHcmFwaGljc0xheWVyKj4mIGNoaWxkTGF5ZXJzID0gY2hpbGRyZW4oKTsK
KyAgICBzaXplX3QgbnVtQ2hpbGRyZW4gPSBjaGlsZExheWVycy5zaXplKCk7CisgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBudW1DaGlsZHJlbjsgKytpKSB7CisgICAgICAgIEdyYXBoaWNzTGF5
ZXJDQSogY3VyQ2hpbGQgPSBzdGF0aWNfY2FzdDxHcmFwaGljc0xheWVyQ0EqPihjaGlsZExheWVy
c1tpXSk7CisgICAgICAgIGN1ckNoaWxkLT5yZWN1cnNpdmVDb21taXRDaGFuZ2VzKCk7CisgICAg
fQorCisgICAgaWYgKG1fcmVwbGljYUxheWVyKQorICAgICAgICBzdGF0aWNfY2FzdDxHcmFwaGlj
c0xheWVyQ0EqPihtX3JlcGxpY2FMYXllciktPnJlY3Vyc2l2ZUNvbW1pdENoYW5nZXMoKTsKKwor
ICAgIGlmIChtX21hc2tMYXllcikKKyAgICAgICAgc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllckNB
Kj4obV9tYXNrTGF5ZXIpLT5jb21taXRMYXllckNoYW5nZXNBZnRlclN1YmxheWVycygpOworCisg
ICAgY29tbWl0TGF5ZXJDaGFuZ2VzQWZ0ZXJTdWJsYXllcnMoKTsKK30KKwordm9pZCBHcmFwaGlj
c0xheWVyQ0E6OmNvbW1pdExheWVyQ2hhbmdlc0JlZm9yZVN1YmxheWVycygpCit7CisgICAgaWYg
KCFtX3VuY29tbWl0dGVkQ2hhbmdlcykKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gTmVlZCB0
byBoYW5kbGUgUHJlc2VydmVzM0RDaGFuZ2VkIGZpcnN0LCBiZWNhdXNlIGl0IGFmZmVjdHMgd2hp
Y2ggbGF5ZXJzIHN1YnNlcXVlbnQgcHJvcGVydGllcyBhcmUgYXBwbGllZCB0bworICAgIGlmICht
X3VuY29tbWl0dGVkQ2hhbmdlcyAmIChQcmVzZXJ2ZXMzRENoYW5nZWQgfCBSZXBsaWNhdGVkTGF5
ZXJDaGFuZ2VkKSkKKyAgICAgICAgdXBkYXRlU3RydWN0dXJhbExheWVyKCk7CisKKyAgICBpZiAo
bV91bmNvbW1pdHRlZENoYW5nZXMgJiBOYW1lQ2hhbmdlZCkKKyAgICAgICAgdXBkYXRlTGF5ZXJO
YW1lcygpOworCisgICAgaWYgKG1fdW5jb21taXR0ZWRDaGFuZ2VzICYgQ29udGVudHNJbWFnZUNo
YW5nZWQpIC8vIE5lZWRzIHRvIGhhcHBlbiBiZWZvcmUgQ2hpbGRyZW5DaGFuZ2VkCisgICAgICAg
IHVwZGF0ZUNvbnRlbnRzSW1hZ2UoKTsKKyAgICAgICAgCisgICAgaWYgKG1fdW5jb21taXR0ZWRD
aGFuZ2VzICYgQ29udGVudHNNZWRpYUxheWVyQ2hhbmdlZCkgLy8gTmVlZHMgdG8gaGFwcGVuIGJl
Zm9yZSBDaGlsZHJlbkNoYW5nZWQKKyAgICAgICAgdXBkYXRlQ29udGVudHNNZWRpYUxheWVyKCk7
CisgICAgCisgICAgaWYgKG1fdW5jb21taXR0ZWRDaGFuZ2VzICYgQ29udGVudHNDYW52YXNMYXll
ckNoYW5nZWQpIC8vIE5lZWRzIHRvIGhhcHBlbiBiZWZvcmUgQ2hpbGRyZW5DaGFuZ2VkCisgICAg
ICAgIHVwZGF0ZUNvbnRlbnRzQ2FudmFzTGF5ZXIoKTsKKyAgICAKKyAgICBpZiAobV91bmNvbW1p
dHRlZENoYW5nZXMgJiBCYWNrZ3JvdW5kQ29sb3JDaGFuZ2VkKSAvLyBOZWVkcyB0byBoYXBwZW4g
YmVmb3JlIENoaWxkcmVuQ2hhbmdlZCwgYW5kIGFmdGVyIHVwZGF0aW5nIGltYWdlIG9yIHZpZGVv
CisgICAgICAgIHVwZGF0ZUxheWVyQmFja2dyb3VuZENvbG9yKCk7CisKKyAgICBpZiAobV91bmNv
bW1pdHRlZENoYW5nZXMgJiBDaGlsZHJlbkNoYW5nZWQpCisgICAgICAgIHVwZGF0ZVN1YmxheWVy
TGlzdCgpOworCisgICAgaWYgKG1fdW5jb21taXR0ZWRDaGFuZ2VzICYgUG9zaXRpb25DaGFuZ2Vk
KQorICAgICAgICB1cGRhdGVMYXllclBvc2l0aW9uKCk7CisgICAgCisgICAgaWYgKG1fdW5jb21t
aXR0ZWRDaGFuZ2VzICYgQW5jaG9yUG9pbnRDaGFuZ2VkKQorICAgICAgICB1cGRhdGVBbmNob3JQ
b2ludCgpOworICAgIAorICAgIGlmIChtX3VuY29tbWl0dGVkQ2hhbmdlcyAmIFNpemVDaGFuZ2Vk
KQorICAgICAgICB1cGRhdGVMYXllclNpemUoKTsKKworICAgIGlmIChtX3VuY29tbWl0dGVkQ2hh
bmdlcyAmIFRyYW5zZm9ybUNoYW5nZWQpCisgICAgICAgIHVwZGF0ZVRyYW5zZm9ybSgpOworCisg
ICAgaWYgKG1fdW5jb21taXR0ZWRDaGFuZ2VzICYgQ2hpbGRyZW5UcmFuc2Zvcm1DaGFuZ2VkKQor
ICAgICAgICB1cGRhdGVDaGlsZHJlblRyYW5zZm9ybSgpOworICAgIAorICAgIGlmIChtX3VuY29t
bWl0dGVkQ2hhbmdlcyAmIE1hc2tzVG9Cb3VuZHNDaGFuZ2VkKQorICAgICAgICB1cGRhdGVNYXNr
c1RvQm91bmRzKCk7CisgICAgCisgICAgaWYgKG1fdW5jb21taXR0ZWRDaGFuZ2VzICYgRHJhd3ND
b250ZW50Q2hhbmdlZCkKKyAgICAgICAgdXBkYXRlTGF5ZXJEcmF3c0NvbnRlbnQoKTsKKworICAg
IGlmIChtX3VuY29tbWl0dGVkQ2hhbmdlcyAmIENvbnRlbnRzT3BhcXVlQ2hhbmdlZCkKKyAgICAg
ICAgdXBkYXRlQ29udGVudHNPcGFxdWUoKTsKKworICAgIGlmIChtX3VuY29tbWl0dGVkQ2hhbmdl
cyAmIEJhY2tmYWNlVmlzaWJpbGl0eUNoYW5nZWQpCisgICAgICAgIHVwZGF0ZUJhY2tmYWNlVmlz
aWJpbGl0eSgpOworCisgICAgaWYgKG1fdW5jb21taXR0ZWRDaGFuZ2VzICYgT3BhY2l0eUNoYW5n
ZWQpCisgICAgICAgIHVwZGF0ZU9wYWNpdHlPbkxheWVyKCk7CisgICAgCisgICAgaWYgKG1fdW5j
b21taXR0ZWRDaGFuZ2VzICYgQW5pbWF0aW9uQ2hhbmdlZCkKKyAgICAgICAgdXBkYXRlTGF5ZXJB
bmltYXRpb25zKCk7CisgICAgCisgICAgaWYgKG1fdW5jb21taXR0ZWRDaGFuZ2VzICYgRGlydHlS
ZWN0c0NoYW5nZWQpCisgICAgICAgIHJlcGFpbnRMYXllckRpcnR5UmVjdHMoKTsKKyAgICAKKyAg
ICBpZiAobV91bmNvbW1pdHRlZENoYW5nZXMgJiBDb250ZW50c1JlY3RDaGFuZ2VkKQorICAgICAg
ICB1cGRhdGVDb250ZW50c1JlY3QoKTsKKworICAgIGlmIChtX3VuY29tbWl0dGVkQ2hhbmdlcyAm
IE1hc2tMYXllckNoYW5nZWQpCisgICAgICAgIHVwZGF0ZU1hc2tMYXllcigpOworCisgICAgaWYg
KG1fdW5jb21taXR0ZWRDaGFuZ2VzICYgQ29udGVudHNOZWVkc0Rpc3BsYXkpCisgICAgICAgIHVw
ZGF0ZUNvbnRlbnRzTmVlZHNEaXNwbGF5KCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpj
b21taXRMYXllckNoYW5nZXNBZnRlclN1YmxheWVycygpCit7CisgICAgaWYgKCFtX3VuY29tbWl0
dGVkQ2hhbmdlcykKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fdW5jb21taXR0ZWRDaGFu
Z2VzICYgUmVwbGljYXRlZExheWVyQ2hhbmdlZCkKKyAgICAgICAgdXBkYXRlUmVwbGljYXRlZExh
eWVycygpOworCisgICAgbV91bmNvbW1pdHRlZENoYW5nZXMgPSBOb0NoYW5nZTsKK30KKwordm9p
ZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUxheWVyTmFtZXMoKQoreworICAgIHN3aXRjaCAoc3Ry
dWN0dXJhbExheWVyUHVycG9zZSgpKSB7CisgICAgY2FzZSBTdHJ1Y3R1cmFsTGF5ZXJGb3JQcmVz
ZXJ2ZXMzRDoKKyAgICAgICAgbV9zdHJ1Y3R1cmFsTGF5ZXItPnNldE5hbWUoIlRyYW5zZm9ybSBs
YXllciAiICsgbmFtZSgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTdHJ1Y3R1cmFsTGF5
ZXJGb3JSZXBsaWNhRmxhdHRlbmluZzoKKyAgICAgICAgbV9zdHJ1Y3R1cmFsTGF5ZXItPnNldE5h
bWUoIlJlcGxpY2EgZmxhdHRlbmluZyBsYXllciAiICsgbmFtZSgpKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBOb1N0cnVjdHVyYWxMYXllcjoKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAg
IG1fbGF5ZXItPnNldE5hbWUobmFtZSgpKTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnVw
ZGF0ZVN1YmxheWVyTGlzdCgpCit7CisgICAgUGxhdGZvcm1DQUxheWVyTGlzdCBuZXdTdWJsYXll
cnM7CisgICAgY29uc3QgVmVjdG9yPEdyYXBoaWNzTGF5ZXIqPiYgY2hpbGRMYXllcnMgPSBjaGls
ZHJlbigpOworCisgICAgaWYgKG1fc3RydWN0dXJhbExheWVyIHx8IG1fY29udGVudHNMYXllciB8
fCBjaGlsZExheWVycy5zaXplKCkgPiAwKSB7CisgICAgICAgIGlmIChtX3N0cnVjdHVyYWxMYXll
cikgeworICAgICAgICAgICAgLy8gQWRkIHRoZSByZXBsaWNhIGxheWVyIGZpcnN0LgorICAgICAg
ICAgICAgaWYgKG1fcmVwbGljYUxheWVyKQorICAgICAgICAgICAgICAgIG5ld1N1YmxheWVycy5h
cHBlbmQoc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllckNBKj4obV9yZXBsaWNhTGF5ZXIpLT5wcmlt
YXJ5TGF5ZXIoKSk7CisgICAgICAgICAgICAvLyBBZGQgdGhlIHByaW1hcnkgbGF5ZXIuIEV2ZW4g
aWYgd2UgaGF2ZSBuZWdhdGl2ZSB6LW9yZGVyIGNoaWxkcmVuLCB0aGUgcHJpbWFyeSBsYXllciBh
bHdheXMgY29tZXMgYmVoaW5kLgorICAgICAgICAgICAgbmV3U3VibGF5ZXJzLmFwcGVuZChtX2xh
eWVyKTsKKyAgICAgICAgfSBlbHNlIGlmIChtX2NvbnRlbnRzTGF5ZXIpIHsKKyAgICAgICAgICAg
IC8vIEZJWE1FOiBhZGQgdGhlIGNvbnRlbnRzIGxheWVyIGluIHRoZSBjb3JyZWN0IG9yZGVyIHdp
dGggbmVnYXRpdmUgei1vcmRlciBjaGlsZHJlbi4KKyAgICAgICAgICAgIC8vIFRoaXMgZG9lcyBu
b3QgY2F1c2UgdmlzaWJsZSByZW5kZXJpbmcgaXNzdWVzIGJlY2F1c2UgY3VycmVudGx5IGNvbnRl
bnRzIGxheWVycyBhcmUgb25seSB1c2VkCisgICAgICAgICAgICAvLyBmb3IgcmVwbGFjZWQgZWxl
bWVudHMgdGhhdCBkb24ndCBoYXZlIGNoaWxkcmVuLgorICAgICAgICAgICAgbmV3U3VibGF5ZXJz
LmFwcGVuZChtX2NvbnRlbnRzTGF5ZXIpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBz
aXplX3QgbnVtQ2hpbGRyZW4gPSBjaGlsZExheWVycy5zaXplKCk7CisgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbnVtQ2hpbGRyZW47ICsraSkgeworICAgICAgICAgICAgR3JhcGhpY3NM
YXllckNBKiBjdXJDaGlsZCA9IHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXJDQSo+KGNoaWxkTGF5
ZXJzW2ldKTsKKyAgICAgICAgICAgIFBsYXRmb3JtQ0FMYXllciogY2hpbGRMYXllciA9IGN1ckNo
aWxkLT5sYXllckZvclN1cGVybGF5ZXIoKTsKKyAgICAgICAgICAgIG5ld1N1YmxheWVycy5hcHBl
bmQoY2hpbGRMYXllcik7CisgICAgICAgIH0KKworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IG5ld1N1YmxheWVycy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIG5ld1N1YmxheWVyc1tp
XS0+cmVtb3ZlRnJvbVN1cGVybGF5ZXIoKTsKKyAgICB9CisKKyAgICBpZiAobV9zdHJ1Y3R1cmFs
TGF5ZXIpIHsKKyAgICAgICAgbV9zdHJ1Y3R1cmFsTGF5ZXItPnNldFN1YmxheWVycyhuZXdTdWJs
YXllcnMpOworCisgICAgICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIpIHsKKyAgICAgICAgICAgIC8v
IElmIHdlIGhhdmUgYSB0cmFuc2Zvcm0gbGF5ZXIsIHRoZW4gdGhlIGNvbnRlbnRzIGxheWVyIGlz
IHBhcmVudGVkIGluIHRoZSAKKyAgICAgICAgICAgIC8vIHByaW1hcnkgbGF5ZXIgKHdoaWNoIGlz
IGl0c2VsZiBhIGNoaWxkIG9mIHRoZSB0cmFuc2Zvcm0gbGF5ZXIpLgorICAgICAgICAgICAgbV9s
YXllci0+cmVtb3ZlQWxsU3VibGF5ZXJzKCk7CisgICAgICAgICAgICBtX2xheWVyLT5hcHBlbmRT
dWJsYXllcihtX2NvbnRlbnRzTGF5ZXIuZ2V0KCkpOworICAgICAgICB9CisgICAgfSBlbHNlCisg
ICAgICAgIG1fbGF5ZXItPnNldFN1YmxheWVycyhuZXdTdWJsYXllcnMpOworfQorCit2b2lkIEdy
YXBoaWNzTGF5ZXJDQTo6dXBkYXRlTGF5ZXJQb3NpdGlvbigpCit7CisgICAgRmxvYXRTaXplIHVz
ZWRTaXplID0gbV91c2luZ1RpbGVkTGF5ZXIgPyBjb25zdHJhaW5lZFNpemUoKSA6IG1fc2l6ZTsK
KworICAgIC8vIFBvc2l0aW9uIGlzIG9mZnNldCBvbiB0aGUgbGF5ZXIgYnkgdGhlIGxheWVyIGFu
Y2hvciBwb2ludC4KKyAgICBGbG9hdFBvaW50IHBvc1BvaW50KG1fcG9zaXRpb24ueCgpICsgbV9h
bmNob3JQb2ludC54KCkgKiB1c2VkU2l6ZS53aWR0aCgpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICBtX3Bvc2l0aW9uLnkoKSArIG1fYW5jaG9yUG9pbnQueSgpICogdXNlZFNpemUuaGVpZ2h0
KCkpOworICAgIAorICAgIHByaW1hcnlMYXllcigpLT5zZXRQb3NpdGlvbihwb3NQb2ludCk7CisK
KyAgICBpZiAoTGF5ZXJNYXAqIGxheWVyQ2xvbmVNYXAgPSBwcmltYXJ5TGF5ZXJDbG9uZXMoKSkg
eworICAgICAgICBMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbGF5ZXJDbG9uZU1hcC0+
ZW5kKCk7CisgICAgICAgIGZvciAoTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbGF5ZXJD
bG9uZU1hcC0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgICAgICBGbG9hdFBv
aW50IGNsb25lUG9zaXRpb24gPSBwb3NQb2ludDsKKyAgICAgICAgICAgIGlmIChtX3JlcGxpY2FM
YXllciAmJiBpc1JlcGxpY2F0ZWRSb290Q2xvbmUoaXQtPmZpcnN0KSkgeworICAgICAgICAgICAg
ICAgIC8vIE1haW50YWluIHRoZSBzcGVjaWFsLWNhc2UgcG9zaXRpb24gZm9yIHRoZSByb290IG9m
IGEgY2xvbmUgc3VidHJlZSwKKyAgICAgICAgICAgICAgICAvLyB3aGljaCB3ZSBzZXQgdXAgaW4g
cmVwbGljYXRlZExheWVyUm9vdCgpLgorICAgICAgICAgICAgICAgIGNsb25lUG9zaXRpb24gPSBw
b3NpdGlvbkZvckNsb25lUm9vdExheWVyKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBp
dC0+c2Vjb25kLT5zZXRQb3NpdGlvbihjbG9uZVBvc2l0aW9uKTsKKyAgICAgICAgfQorICAgIH0K
K30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUxheWVyU2l6ZSgpCit7CisgICAgRmxv
YXRSZWN0IHJlY3QoMCwgMCwgbV9zaXplLndpZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSk7CisgICAg
aWYgKG1fc3RydWN0dXJhbExheWVyKSB7CisgICAgICAgIG1fc3RydWN0dXJhbExheWVyLT5zZXRC
b3VuZHMocmVjdCk7CisgICAgICAgIAorICAgICAgICBpZiAoTGF5ZXJNYXAqIGxheWVyQ2xvbmVN
YXAgPSBtX3N0cnVjdHVyYWxMYXllckNsb25lcy5nZXQoKSkgeworICAgICAgICAgICAgTGF5ZXJN
YXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGxheWVyQ2xvbmVNYXAtPmVuZCgpOworICAgICAgICAg
ICAgZm9yIChMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBsYXllckNsb25lTWFwLT5iZWdp
bigpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgICAgICAgICAgaXQtPnNlY29uZC0+c2V0Qm91
bmRzKHJlY3QpOworICAgICAgICB9CisKKyAgICAgICAgLy8gVGhlIGFuY2hvciBvZiB0aGUgY29u
dGVudHMgbGF5ZXIgaXMgYWx3YXlzIGF0IDAuNSwgMC41LCBzbyB0aGUgcG9zaXRpb24gaXMgY2Vu
dGVyLXJlbGF0aXZlLgorICAgICAgICBDR1BvaW50IGNlbnRlclBvaW50ID0gQ0dQb2ludE1ha2Uo
bV9zaXplLndpZHRoKCkgLyAyLjBmLCBtX3NpemUuaGVpZ2h0KCkgLyAyLjBmKTsKKyAgICAgICAg
bV9sYXllci0+c2V0UG9zaXRpb24oY2VudGVyUG9pbnQpOworCisgICAgICAgIGlmIChMYXllck1h
cCogbGF5ZXJDbG9uZU1hcCA9IG1fbGF5ZXJDbG9uZXMuZ2V0KCkpIHsKKyAgICAgICAgICAgIExh
eWVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBsYXllckNsb25lTWFwLT5lbmQoKTsKKyAgICAg
ICAgICAgIGZvciAoTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbGF5ZXJDbG9uZU1hcC0+
YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICAgICAgICAgIGl0LT5zZWNvbmQtPnNl
dFBvc2l0aW9uKGNlbnRlclBvaW50KTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBib29s
IG5lZWRUaWxlZExheWVyID0gcmVxdWlyZXNUaWxlZExheWVyKG1fc2l6ZSk7CisgICAgaWYgKG5l
ZWRUaWxlZExheWVyICE9IG1fdXNpbmdUaWxlZExheWVyKQorICAgICAgICBzd2FwRnJvbU9yVG9U
aWxlZExheWVyKG5lZWRUaWxlZExheWVyKTsKKyAgICAKKyAgICBpZiAobV91c2luZ1RpbGVkTGF5
ZXIpIHsKKyAgICAgICAgRmxvYXRTaXplIHNpemVUb1VzZSA9IGNvbnN0cmFpbmVkU2l6ZSgpOwor
ICAgICAgICByZWN0ID0gQ0dSZWN0TWFrZSgwLCAwLCBzaXplVG9Vc2Uud2lkdGgoKSwgc2l6ZVRv
VXNlLmhlaWdodCgpKTsKKyAgICB9CisgICAgCisgICAgbV9sYXllci0+c2V0Qm91bmRzKHJlY3Qp
OworICAgIGlmIChMYXllck1hcCogbGF5ZXJDbG9uZU1hcCA9IG1fbGF5ZXJDbG9uZXMuZ2V0KCkp
IHsKKyAgICAgICAgTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGxheWVyQ2xvbmVNYXAt
PmVuZCgpOworICAgICAgICBmb3IgKExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGxheWVy
Q2xvbmVNYXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgICAgIGl0LT5zZWNv
bmQtPnNldEJvdW5kcyhyZWN0KTsKKyAgICB9CisgICAgCisgICAgLy8gQ29udGVudHMgdHJhbnNm
b3JtIG1heSBkZXBlbmQgb24gaGVpZ2h0LgorICAgIHVwZGF0ZUNvbnRlbnRzVHJhbnNmb3JtKCk7
CisKKyAgICAvLyBOb3RlIHRoYXQgd2UgZG9uJ3QgcmVzaXplIG1fY29udGVudHNMYXllci4gSXQn
cyB1cCB0aGUgY2FsbGVyIHRvIGRvIHRoYXQuCisKKyAgICAvLyBpZiB3ZSd2ZSBjaGFuZ2VkIHRo
ZSBib3VuZHMsIHdlIG5lZWQgdG8gcmVjYWxjdWxhdGUgdGhlIHBvc2l0aW9uCisgICAgLy8gb2Yg
dGhlIGxheWVyLCB0YWtpbmcgYW5jaG9yIHBvaW50IGludG8gYWNjb3VudC4KKyAgICB1cGRhdGVM
YXllclBvc2l0aW9uKCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjp1cGRhdGVBbmNob3JQ
b2ludCgpCit7CisgICAgcHJpbWFyeUxheWVyKCktPnNldEFuY2hvclBvaW50KG1fYW5jaG9yUG9p
bnQpOworCisgICAgaWYgKExheWVyTWFwKiBsYXllckNsb25lTWFwID0gcHJpbWFyeUxheWVyQ2xv
bmVzKCkpIHsKKyAgICAgICAgTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGxheWVyQ2xv
bmVNYXAtPmVuZCgpOworICAgICAgICBmb3IgKExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9
IGxheWVyQ2xvbmVNYXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeyAgIAorICAgICAgICAg
ICAgUGxhdGZvcm1DQUxheWVyKiBjdXJyTGF5ZXIgPSBpdC0+c2Vjb25kLmdldCgpOworICAgICAg
ICAgICAgY3VyckxheWVyLT5zZXRBbmNob3JQb2ludChtX2FuY2hvclBvaW50KTsKKyAgICAgICAg
fQorICAgIH0KKworICAgIHVwZGF0ZUxheWVyUG9zaXRpb24oKTsKK30KKwordm9pZCBHcmFwaGlj
c0xheWVyQ0E6OnVwZGF0ZVRyYW5zZm9ybSgpCit7CisgICAgcHJpbWFyeUxheWVyKCktPnNldFRy
YW5zZm9ybShtX3RyYW5zZm9ybSk7CisKKyAgICBpZiAoTGF5ZXJNYXAqIGxheWVyQ2xvbmVNYXAg
PSBwcmltYXJ5TGF5ZXJDbG9uZXMoKSkgeworICAgICAgICBMYXllck1hcDo6Y29uc3RfaXRlcmF0
b3IgZW5kID0gbGF5ZXJDbG9uZU1hcC0+ZW5kKCk7CisgICAgICAgIGZvciAoTGF5ZXJNYXA6OmNv
bnN0X2l0ZXJhdG9yIGl0ID0gbGF5ZXJDbG9uZU1hcC0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0
KSB7CisgICAgICAgICAgICBQbGF0Zm9ybUNBTGF5ZXIqIGN1cnJMYXllciA9IGl0LT5zZWNvbmQu
Z2V0KCk7CisgICAgICAgICAgICBpZiAobV9yZXBsaWNhTGF5ZXIgJiYgaXNSZXBsaWNhdGVkUm9v
dENsb25lKGl0LT5maXJzdCkpIHsKKyAgICAgICAgICAgICAgICAvLyBNYWludGFpbiB0aGUgc3Bl
Y2lhbC1jYXNlIHRyYW5zZm9ybSBmb3IgdGhlIHJvb3Qgb2YgYSBjbG9uZSBzdWJ0cmVlLAorICAg
ICAgICAgICAgICAgIC8vIHdoaWNoIHdlIHNldCB1cCBpbiByZXBsaWNhdGVkTGF5ZXJSb290KCku
CisgICAgICAgICAgICAgICAgY3VyckxheWVyLT5zZXRUcmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25N
YXRyaXgoKSk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBjdXJyTGF5ZXIt
PnNldFRyYW5zZm9ybShtX3RyYW5zZm9ybSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQg
R3JhcGhpY3NMYXllckNBOjp1cGRhdGVDaGlsZHJlblRyYW5zZm9ybSgpCit7CisgICAgcHJpbWFy
eUxheWVyKCktPnNldFN1YmxheWVyVHJhbnNmb3JtKG1fY2hpbGRyZW5UcmFuc2Zvcm0pOworCisg
ICAgaWYgKExheWVyTWFwKiBsYXllckNsb25lTWFwID0gcHJpbWFyeUxheWVyQ2xvbmVzKCkpIHsK
KyAgICAgICAgTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGxheWVyQ2xvbmVNYXAtPmVu
ZCgpOworICAgICAgICBmb3IgKExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGxheWVyQ2xv
bmVNYXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgICAgIGl0LT5zZWNvbmQt
PnNldFN1YmxheWVyVHJhbnNmb3JtKG1fY2hpbGRyZW5UcmFuc2Zvcm0pOworICAgIH0KK30KKwor
dm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZU1hc2tzVG9Cb3VuZHMoKQoreworICAgIG1fbGF5
ZXItPnNldE1hc2tzVG9Cb3VuZHMobV9tYXNrc1RvQm91bmRzKTsKKworICAgIGlmIChMYXllck1h
cCogbGF5ZXJDbG9uZU1hcCA9IG1fbGF5ZXJDbG9uZXMuZ2V0KCkpIHsKKyAgICAgICAgTGF5ZXJN
YXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGxheWVyQ2xvbmVNYXAtPmVuZCgpOworICAgICAgICBm
b3IgKExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGxheWVyQ2xvbmVNYXAtPmJlZ2luKCk7
IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgICAgIGl0LT5zZWNvbmQtPnNldE1hc2tzVG9Cb3Vu
ZHMobV9tYXNrc1RvQm91bmRzKTsKKyAgICB9CisKKyAgICB1cGRhdGVEZWJ1Z0luZGljYXRvcnMo
KTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUNvbnRlbnRzT3BhcXVlKCkKK3sK
KyAgICBtX2xheWVyLmdldCgpLT5zZXRPcGFxdWUobV9jb250ZW50c09wYXF1ZSk7CisKKyAgICBp
ZiAoTGF5ZXJNYXAqIGxheWVyQ2xvbmVNYXAgPSBtX2xheWVyQ2xvbmVzLmdldCgpKSB7CisgICAg
ICAgIExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBsYXllckNsb25lTWFwLT5lbmQoKTsK
KyAgICAgICAgZm9yIChMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBsYXllckNsb25lTWFw
LT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgICAgICBpdC0+c2Vjb25kLT5zZXRP
cGFxdWUobV9jb250ZW50c09wYXF1ZSk7CisgICAgfQorfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJD
QTo6dXBkYXRlQmFja2ZhY2VWaXNpYmlsaXR5KCkKK3sKKyAgICBpZiAobV9zdHJ1Y3R1cmFsTGF5
ZXIgJiYgc3RydWN0dXJhbExheWVyUHVycG9zZSgpID09IFN0cnVjdHVyYWxMYXllckZvclJlcGxp
Y2FGbGF0dGVuaW5nKSB7CisgICAgICAgIG1fc3RydWN0dXJhbExheWVyLT5zZXREb3VibGVTaWRl
ZChtX2JhY2tmYWNlVmlzaWJpbGl0eSk7CisKKyAgICAgICAgaWYgKExheWVyTWFwKiBsYXllckNs
b25lTWFwID0gbV9zdHJ1Y3R1cmFsTGF5ZXJDbG9uZXMuZ2V0KCkpIHsKKyAgICAgICAgICAgIExh
eWVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBsYXllckNsb25lTWFwLT5lbmQoKTsKKyAgICAg
ICAgICAgIGZvciAoTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbGF5ZXJDbG9uZU1hcC0+
YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICAgICAgICAgIGl0LT5zZWNvbmQtPnNl
dERvdWJsZVNpZGVkKG1fYmFja2ZhY2VWaXNpYmlsaXR5KTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIG1fbGF5ZXItPnNldERvdWJsZVNpZGVkKG1fYmFja2ZhY2VWaXNpYmlsaXR5KTsKKworICAg
IGlmIChMYXllck1hcCogbGF5ZXJDbG9uZU1hcCA9IG1fbGF5ZXJDbG9uZXMuZ2V0KCkpIHsKKyAg
ICAgICAgTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGxheWVyQ2xvbmVNYXAtPmVuZCgp
OworICAgICAgICBmb3IgKExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGxheWVyQ2xvbmVN
YXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgICAgIGl0LT5zZWNvbmQtPnNl
dERvdWJsZVNpZGVkKG1fYmFja2ZhY2VWaXNpYmlsaXR5KTsKKyAgICB9Cit9CisKK3ZvaWQgR3Jh
cGhpY3NMYXllckNBOjp1cGRhdGVTdHJ1Y3R1cmFsTGF5ZXIoKQoreworICAgIGVuc3VyZVN0cnVj
dHVyYWxMYXllcihzdHJ1Y3R1cmFsTGF5ZXJQdXJwb3NlKCkpOworfQorCit2b2lkIEdyYXBoaWNz
TGF5ZXJDQTo6ZW5zdXJlU3RydWN0dXJhbExheWVyKFN0cnVjdHVyYWxMYXllclB1cnBvc2UgcHVy
cG9zZSkKK3sKKyAgICBpZiAocHVycG9zZSA9PSBOb1N0cnVjdHVyYWxMYXllcikgeworICAgICAg
ICBpZiAobV9zdHJ1Y3R1cmFsTGF5ZXIpIHsKKyAgICAgICAgICAgIC8vIFJlcGxhY2UgdGhlIHRy
YW5zZm9ybUxheWVyIGluIHRoZSBwYXJlbnQgd2l0aCB0aGlzIGxheWVyLgorICAgICAgICAgICAg
bV9sYXllci0+cmVtb3ZlRnJvbVN1cGVybGF5ZXIoKTsKKyAgICAgICAgICAgIG1fc3RydWN0dXJh
bExheWVyLT5zdXBlcmxheWVyKCktPnJlcGxhY2VTdWJsYXllcihtX3N0cnVjdHVyYWxMYXllci5n
ZXQoKSwgbV9sYXllci5nZXQoKSk7CisKKyAgICAgICAgICAgIG1vdmVPckNvcHlBbmltYXRpb25z
Rm9yUHJvcGVydHkoTW92ZSwgQW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybSwgbV9zdHJ1
Y3R1cmFsTGF5ZXIuZ2V0KCksIG1fbGF5ZXIuZ2V0KCkpOworICAgICAgICAgICAgbW92ZU9yQ29w
eUFuaW1hdGlvbnNGb3JQcm9wZXJ0eShNb3ZlLCBBbmltYXRlZFByb3BlcnR5T3BhY2l0eSwgbV9z
dHJ1Y3R1cmFsTGF5ZXIuZ2V0KCksIG1fbGF5ZXIuZ2V0KCkpOworCisgICAgICAgICAgICAvLyBS
ZWxlYXNlIHRoZSBzdHJ1Y3R1cmFsIGxheWVyLgorICAgICAgICAgICAgbV9zdHJ1Y3R1cmFsTGF5
ZXIgPSAwOworCisgICAgICAgICAgICAvLyBVcGRhdGUgdGhlIHByb3BlcnRpZXMgb2YgbV9sYXll
ciBub3cgdGhhdCB3ZSBubyBsb25nZXIgaGF2ZSBhIHN0cnVjdHVyYWwgbGF5ZXIuCisgICAgICAg
ICAgICB1cGRhdGVMYXllclBvc2l0aW9uKCk7CisgICAgICAgICAgICB1cGRhdGVMYXllclNpemUo
KTsKKyAgICAgICAgICAgIHVwZGF0ZUFuY2hvclBvaW50KCk7CisgICAgICAgICAgICB1cGRhdGVU
cmFuc2Zvcm0oKTsKKyAgICAgICAgICAgIHVwZGF0ZUNoaWxkcmVuVHJhbnNmb3JtKCk7CisKKyAg
ICAgICAgICAgIHVwZGF0ZVN1YmxheWVyTGlzdCgpOworICAgICAgICAgICAgdXBkYXRlT3BhY2l0
eU9uTGF5ZXIoKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAg
IGJvb2wgc3RydWN0dXJhbExheWVyQ2hhbmdlZCA9IGZhbHNlOworICAgIAorICAgIGlmIChwdXJw
b3NlID09IFN0cnVjdHVyYWxMYXllckZvclByZXNlcnZlczNEKSB7CisgICAgICAgIGlmIChtX3N0
cnVjdHVyYWxMYXllciAmJiBtX3N0cnVjdHVyYWxMYXllci0+bGF5ZXJUeXBlKCkgIT0gUGxhdGZv
cm1DQUxheWVyOjpMYXllclR5cGVUcmFuc2Zvcm1MYXllcikKKyAgICAgICAgICAgIG1fc3RydWN0
dXJhbExheWVyID0gMDsKKyAgICAgICAgCisgICAgICAgIGlmICghbV9zdHJ1Y3R1cmFsTGF5ZXIp
IHsKKyAgICAgICAgICAgIG1fc3RydWN0dXJhbExheWVyID0gUGxhdGZvcm1DQUxheWVyOjpjcmVh
dGUoUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVUcmFuc2Zvcm1MYXllciwgdGhpcyk7CisgICAg
ICAgICAgICBzdHJ1Y3R1cmFsTGF5ZXJDaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0g
ZWxzZSB7CisgICAgICAgIGlmIChtX3N0cnVjdHVyYWxMYXllciAmJiBtX3N0cnVjdHVyYWxMYXll
ci0+bGF5ZXJUeXBlKCkgIT0gUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVMYXllcikKKyAgICAg
ICAgICAgIG1fc3RydWN0dXJhbExheWVyID0gMDsKKworICAgICAgICBpZiAoIW1fc3RydWN0dXJh
bExheWVyKSB7CisgICAgICAgICAgICBtX3N0cnVjdHVyYWxMYXllciA9IFBsYXRmb3JtQ0FMYXll
cjo6Y3JlYXRlKFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlTGF5ZXIsIHRoaXMpOworICAgICAg
ICAgICAgc3RydWN0dXJhbExheWVyQ2hhbmdlZCA9IHRydWU7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgCisgICAgaWYgKCFzdHJ1Y3R1cmFsTGF5ZXJDaGFuZ2VkKQorICAgICAgICByZXR1cm47Cisg
ICAgCisgICAgdXBkYXRlTGF5ZXJOYW1lcygpOworCisgICAgLy8gVXBkYXRlIHRoZSBwcm9wZXJ0
aWVzIG9mIHRoZSBzdHJ1Y3R1cmFsIGxheWVyLgorICAgIHVwZGF0ZUxheWVyUG9zaXRpb24oKTsK
KyAgICB1cGRhdGVMYXllclNpemUoKTsKKyAgICB1cGRhdGVBbmNob3JQb2ludCgpOworICAgIHVw
ZGF0ZVRyYW5zZm9ybSgpOworICAgIHVwZGF0ZUNoaWxkcmVuVHJhbnNmb3JtKCk7CisgICAgdXBk
YXRlQmFja2ZhY2VWaXNpYmlsaXR5KCk7CisgICAgCisgICAgLy8gU2V0IHByb3BlcnRpZXMgb2Yg
bV9sYXllciB0byB0aGVpciBkZWZhdWx0IHZhbHVlcywgc2luY2UgdGhlc2UgYXJlIGV4cHJlc3Nl
ZCBvbiBvbiB0aGUgc3RydWN0dXJhbCBsYXllci4KKyAgICBGbG9hdFBvaW50IHBvaW50KG1fc2l6
ZS53aWR0aCgpIC8gMi4wZiwgbV9zaXplLmhlaWdodCgpIC8gMi4wZik7CisgICAgbV9sYXllci0+
c2V0UG9zaXRpb24ocG9pbnQpOworICAgIG1fbGF5ZXItPnNldEFuY2hvclBvaW50KEZsb2F0UG9p
bnQzRCgwLjVmLCAwLjVmLCAwKSk7CisgICAgbV9sYXllci0+c2V0VHJhbnNmb3JtKFRyYW5zZm9y
bWF0aW9uTWF0cml4KCkpOworICAgIG1fbGF5ZXItPnNldE9wYWNpdHkoMSk7CisKKyAgICAvLyBN
b3ZlIHRoaXMgbGF5ZXIgdG8gYmUgYSBjaGlsZCBvZiB0aGUgdHJhbnNmb3JtIGxheWVyLgorICAg
IG1fbGF5ZXItPnN1cGVybGF5ZXIoKS0+cmVwbGFjZVN1YmxheWVyKG1fbGF5ZXIuZ2V0KCksIG1f
c3RydWN0dXJhbExheWVyLmdldCgpKTsKKyAgICBtX3N0cnVjdHVyYWxMYXllci0+YXBwZW5kU3Vi
bGF5ZXIobV9sYXllci5nZXQoKSk7CisKKyAgICBtb3ZlT3JDb3B5QW5pbWF0aW9uc0ZvclByb3Bl
cnR5KE1vdmUsIEFuaW1hdGVkUHJvcGVydHlXZWJraXRUcmFuc2Zvcm0sIG1fbGF5ZXIuZ2V0KCks
IG1fc3RydWN0dXJhbExheWVyLmdldCgpKTsKKyAgICBtb3ZlT3JDb3B5QW5pbWF0aW9uc0ZvclBy
b3BlcnR5KE1vdmUsIEFuaW1hdGVkUHJvcGVydHlPcGFjaXR5LCBtX2xheWVyLmdldCgpLCBtX3N0
cnVjdHVyYWxMYXllci5nZXQoKSk7CisgICAgCisgICAgdXBkYXRlU3VibGF5ZXJMaXN0KCk7Cisg
ICAgdXBkYXRlT3BhY2l0eU9uTGF5ZXIoKTsKK30KKworR3JhcGhpY3NMYXllckNBOjpTdHJ1Y3R1
cmFsTGF5ZXJQdXJwb3NlIEdyYXBoaWNzTGF5ZXJDQTo6c3RydWN0dXJhbExheWVyUHVycG9zZSgp
IGNvbnN0Cit7CisgICAgaWYgKHByZXNlcnZlczNEKCkpCisgICAgICAgIHJldHVybiBTdHJ1Y3R1
cmFsTGF5ZXJGb3JQcmVzZXJ2ZXMzRDsKKyAgICAKKyAgICBpZiAoaXNSZXBsaWNhdGVkKCkpCisg
ICAgICAgIHJldHVybiBTdHJ1Y3R1cmFsTGF5ZXJGb3JSZXBsaWNhRmxhdHRlbmluZzsKKyAgICAK
KyAgICByZXR1cm4gTm9TdHJ1Y3R1cmFsTGF5ZXI7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNB
Ojp1cGRhdGVMYXllckRyYXdzQ29udGVudCgpCit7CisgICAgYm9vbCBuZWVkVGlsZWRMYXllciA9
IHJlcXVpcmVzVGlsZWRMYXllcihtX3NpemUpOworICAgIGlmIChuZWVkVGlsZWRMYXllciAhPSBt
X3VzaW5nVGlsZWRMYXllcikKKyAgICAgICAgc3dhcEZyb21PclRvVGlsZWRMYXllcihuZWVkVGls
ZWRMYXllcik7CisKKyAgICBpZiAobV9kcmF3c0NvbnRlbnQpCisgICAgICAgIG1fbGF5ZXItPnNl
dE5lZWRzRGlzcGxheSgpOworICAgIGVsc2UKKyAgICAgICAgbV9sYXllci0+c2V0Q29udGVudHMo
MCk7CisKKyAgICB1cGRhdGVEZWJ1Z0luZGljYXRvcnMoKTsKK30KKwordm9pZCBHcmFwaGljc0xh
eWVyQ0E6OnVwZGF0ZUxheWVyQmFja2dyb3VuZENvbG9yKCkKK3sKKyAgICBpZiAoIW1fY29udGVu
dHNMYXllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gV2UgbmV2ZXIgY3JlYXRlIHRoZSBj
b250ZW50cyBsYXllciBqdXN0IGZvciBiYWNrZ3JvdW5kIGNvbG9yIHlldC4KKyAgICBpZiAobV9i
YWNrZ3JvdW5kQ29sb3JTZXQpCisgICAgICAgIG1fY29udGVudHNMYXllci0+c2V0QmFja2dyb3Vu
ZENvbG9yKG1fYmFja2dyb3VuZENvbG9yKTsKKyAgICBlbHNlCisgICAgICAgIG1fY29udGVudHNM
YXllci0+c2V0QmFja2dyb3VuZENvbG9yKENvbG9yOjp0cmFuc3BhcmVudCk7Cit9CisKK3ZvaWQg
R3JhcGhpY3NMYXllckNBOjp1cGRhdGVDb250ZW50c0ltYWdlKCkKK3sKKyAgICBpZiAobV9wZW5k
aW5nQ29udGVudHNJbWFnZSkgeworICAgICAgICBpZiAoIW1fY29udGVudHNMYXllci5nZXQoKSkg
eworICAgICAgICAgICAgbV9jb250ZW50c0xheWVyID0gUGxhdGZvcm1DQUxheWVyOjpjcmVhdGUo
UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVMYXllciwgdGhpcyk7CisjaWZuZGVmIE5ERUJVRwor
ICAgICAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXROYW1lKCJJbWFnZSBMYXllciIpOworI2Vu
ZGlmCisgICAgICAgICAgICBzZXR1cENvbnRlbnRzTGF5ZXIobV9jb250ZW50c0xheWVyLmdldCgp
KTsKKyAgICAgICAgICAgIC8vIG1fY29udGVudHNMYXllciB3aWxsIGJlIHBhcmVudGVkIGJ5IHVw
ZGF0ZVN1YmxheWVyTGlzdAorICAgICAgICB9CisKKyAgICAgICAgLy8gRklYTUU6IG1heWJlIG9u
bHkgZG8gdHJpbGluZWFyIGlmIHRoZSBpbWFnZSBpcyBiZWluZyBzY2FsZWQgZG93biwKKyAgICAg
ICAgLy8gYnV0IHRoZW4gd2hhdCBpZiB0aGUgbGF5ZXIgc2l6ZSBjaGFuZ2VzPworI2lmICFkZWZp
bmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKQor
ICAgICAgICBtX2NvbnRlbnRzTGF5ZXItPnNldE1pbmlmaWNhdGlvbkZpbHRlcihQbGF0Zm9ybUNB
TGF5ZXI6OlRyaWxpbmVhcik7CisjZW5kaWYKKyAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRD
b250ZW50cyhtX3BlbmRpbmdDb250ZW50c0ltYWdlLmdldCgpKTsKKyAgICAgICAgbV9wZW5kaW5n
Q29udGVudHNJbWFnZSA9IDA7CisKKyAgICAgICAgaWYgKG1fY29udGVudHNMYXllckNsb25lcykg
eworICAgICAgICAgICAgTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fY29udGVudHNM
YXllckNsb25lcy0+ZW5kKCk7CisgICAgICAgICAgICBmb3IgKExheWVyTWFwOjpjb25zdF9pdGVy
YXRvciBpdCA9IG1fY29udGVudHNMYXllckNsb25lcy0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0
KQorICAgICAgICAgICAgICAgIGl0LT5zZWNvbmQtPnNldENvbnRlbnRzKG1fY29udGVudHNMYXll
ci0+Y29udGVudHMoKSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHVwZGF0ZUNvbnRl
bnRzUmVjdCgpOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIE5vIGltYWdlLgorICAgICAgICAv
LyBtX2NvbnRlbnRzTGF5ZXIgd2lsbCBiZSByZW1vdmVkIHZpYSB1cGRhdGVTdWJsYXllckxpc3Qu
CisgICAgICAgIG1fY29udGVudHNMYXllciA9IDA7CisgICAgfQorfQorCit2b2lkIEdyYXBoaWNz
TGF5ZXJDQTo6dXBkYXRlQ29udGVudHNNZWRpYUxheWVyKCkKK3sKKyAgICAvLyBWaWRlbyBsYXll
ciB3YXMgc2V0IGFzIG1fY29udGVudHNMYXllciwgYW5kIHdpbGwgZ2V0IHBhcmVudGVkIGluIHVw
ZGF0ZVN1YmxheWVyTGlzdCgpLgorICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIpIHsKKyAgICAgICAg
c2V0dXBDb250ZW50c0xheWVyKG1fY29udGVudHNMYXllci5nZXQoKSk7CisgICAgICAgIHVwZGF0
ZUNvbnRlbnRzUmVjdCgpOworICAgIH0KK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0
ZUNvbnRlbnRzQ2FudmFzTGF5ZXIoKQoreworICAgIC8vIENhbnZhc0xheWVyIHdhcyBzZXQgYXMg
bV9jb250ZW50c0xheWVyLCBhbmQgd2lsbCBnZXQgcGFyZW50ZWQgaW4gdXBkYXRlU3VibGF5ZXJM
aXN0KCkuCisgICAgaWYgKG1fY29udGVudHNMYXllcikgeworICAgICAgICBzZXR1cENvbnRlbnRz
TGF5ZXIobV9jb250ZW50c0xheWVyLmdldCgpKTsKKyAgICAgICAgbV9jb250ZW50c0xheWVyLT5z
ZXROZWVkc0Rpc3BsYXkoKTsKKyAgICAgICAgdXBkYXRlQ29udGVudHNSZWN0KCk7CisgICAgfQor
fQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlQ29udGVudHNSZWN0KCkKK3sKKyAgICBp
ZiAoIW1fY29udGVudHNMYXllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgRmxvYXRQb2ludCBw
b2ludChtX2NvbnRlbnRzUmVjdC54KCksIG1fY29udGVudHNSZWN0LnkoKSk7CisgICAgRmxvYXRS
ZWN0IHJlY3QoMCwgMCwgbV9jb250ZW50c1JlY3Qud2lkdGgoKSwgbV9jb250ZW50c1JlY3QuaGVp
Z2h0KCkpOworCisgICAgbV9jb250ZW50c0xheWVyLT5zZXRQb3NpdGlvbihwb2ludCk7CisgICAg
bV9jb250ZW50c0xheWVyLT5zZXRCb3VuZHMocmVjdCk7CisKKyAgICBpZiAobV9jb250ZW50c0xh
eWVyQ2xvbmVzKSB7CisgICAgICAgIExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBtX2Nv
bnRlbnRzTGF5ZXJDbG9uZXMtPmVuZCgpOworICAgICAgICBmb3IgKExheWVyTWFwOjpjb25zdF9p
dGVyYXRvciBpdCA9IG1fY29udGVudHNMYXllckNsb25lcy0+YmVnaW4oKTsgaXQgIT0gZW5kOyAr
K2l0KSB7CisgICAgICAgICAgICBpdC0+c2Vjb25kLT5zZXRQb3NpdGlvbihwb2ludCk7CisgICAg
ICAgICAgICBpdC0+c2Vjb25kLT5zZXRCb3VuZHMocmVjdCk7CisgICAgICAgIH0KKyAgICB9Cit9
CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjp1cGRhdGVNYXNrTGF5ZXIoKQoreworICAgIFBsYXRm
b3JtQ0FMYXllciogbWFza0NBTGF5ZXIgPSBtX21hc2tMYXllciA/IHN0YXRpY19jYXN0PEdyYXBo
aWNzTGF5ZXJDQSo+KG1fbWFza0xheWVyKS0+cHJpbWFyeUxheWVyKCkgOiAwOworICAgIG1fbGF5
ZXItPnNldE1hc2sobWFza0NBTGF5ZXIpOworCisgICAgTGF5ZXJNYXAqIG1hc2tMYXllckNsb25l
TWFwID0gbV9tYXNrTGF5ZXIgPyBzdGF0aWNfY2FzdDxHcmFwaGljc0xheWVyQ0EqPihtX21hc2tM
YXllciktPnByaW1hcnlMYXllckNsb25lcygpIDogMDsKKyAgICAKKyAgICBpZiAoTGF5ZXJNYXAq
IGxheWVyQ2xvbmVNYXAgPSBtX2xheWVyQ2xvbmVzLmdldCgpKSB7CisgICAgICAgIExheWVyTWFw
Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBsYXllckNsb25lTWFwLT5lbmQoKTsKKyAgICAgICAgZm9y
IChMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBsYXllckNsb25lTWFwLT5iZWdpbigpOyBp
dCAhPSBlbmQ7ICsraXQpIHsgICAgICAgICAgICAKKyAgICAgICAgICAgIFBsYXRmb3JtQ0FMYXll
ciogbWFza0Nsb25lID0gbWFza0xheWVyQ2xvbmVNYXAgPyBtYXNrTGF5ZXJDbG9uZU1hcC0+Z2V0
KGl0LT5maXJzdCkuZ2V0KCkgOiAwOworICAgICAgICAgICAgaXQtPnNlY29uZC0+c2V0TWFzayht
YXNrQ2xvbmUpOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6
dXBkYXRlUmVwbGljYXRlZExheWVycygpCit7CisgICAgLy8gQ2xvbmUgdGhlIGRlc2NlbmRhbnRz
IG9mIHRoZSByZXBsaWNhdGVkIGxheWVyLCBhbmQgcGFyZW50IHVuZGVyIHVzLgorICAgIFJlcGxp
Y2FTdGF0ZSByZXBsaWNhU3RhdGUoUmVwbGljYVN0YXRlOjpSZXBsaWNhQnJhbmNoKTsKKworICAg
IFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+cmVwbGljYVJvb3QgPSByZXBsaWNhdGVkTGF5ZXJSb290
KHJlcGxpY2FTdGF0ZSk7CisgICAgaWYgKCFyZXBsaWNhUm9vdCkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgaWYgKG1fc3RydWN0dXJhbExheWVyKQorICAgICAgICBtX3N0cnVjdHVyYWxMYXllci0+
aW5zZXJ0U3VibGF5ZXIocmVwbGljYVJvb3QuZ2V0KCksIDApOworICAgIGVsc2UKKyAgICAgICAg
bV9sYXllci0+aW5zZXJ0U3VibGF5ZXIocmVwbGljYVJvb3QuZ2V0KCksIDApOworfQorCisvLyBG
b3Igbm93LCB0aGlzIGFzc3VtZXMgdGhhdCBsYXllcnMgb25seSBldmVyIGhhdmUgb25lIHJlcGxp
Y2EsIHNvIHJlcGxpY2FJbmRpY2VzIGNvbnRhaW5zIG9ubHkgMCBhbmQgMS4KK0dyYXBoaWNzTGF5
ZXJDQTo6Q2xvbmVJRCBHcmFwaGljc0xheWVyQ0E6OlJlcGxpY2FTdGF0ZTo6Y2xvbmVJRCgpIGNv
bnN0Cit7CisgICAgc2l6ZV90IGRlcHRoID0gbV9yZXBsaWNhQnJhbmNoZXMuc2l6ZSgpOworCisg
ICAgY29uc3Qgc2l6ZV90IGJpdHNQZXJVQ2hhciA9IHNpemVvZihVQ2hhcikgKiA4OworICAgIHNp
emVfdCB2ZWN0b3JTaXplID0gKGRlcHRoICsgYml0c1BlclVDaGFyIC0gMSkgLyBiaXRzUGVyVUNo
YXI7CisgICAgCisgICAgVmVjdG9yPFVDaGFyPiByZXN1bHQodmVjdG9yU2l6ZSk7CisgICAgcmVz
dWx0LmZpbGwoMCk7CisKKyAgICAvLyBDcmVhdGUgYSBzdHJpbmcgZnJvbSB0aGUgYml0IHNlcXVl
bmNlIHdoaWNoIHdlIGNhbiB1c2UgdG8gaWRlbnRpZnkgdGhlIGNsb25lLgorICAgIC8vIE5vdGUg
dGhhdCB0aGUgc3RyaW5nIG1heSBjb250YWluIGVtYmVkZGVkIG51bGxzLCBidXQgdGhhdCdzIE9L
LgorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZGVwdGg7ICsraSkgeworICAgICAgICBVQ2hh
ciYgY3VyckNoYXIgPSByZXN1bHRbaSAvIGJpdHNQZXJVQ2hhcl07CisgICAgICAgIGN1cnJDaGFy
ID0gKGN1cnJDaGFyIDw8IDEpIHwgbV9yZXBsaWNhQnJhbmNoZXNbaV07CisgICAgfQorICAgIAor
ICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KHJlc3VsdCk7Cit9CisKK1Bhc3NSZWZQdHI8UGxhdGZv
cm1DQUxheWVyPiBHcmFwaGljc0xheWVyQ0E6OnJlcGxpY2F0ZWRMYXllclJvb3QoUmVwbGljYVN0
YXRlJiByZXBsaWNhU3RhdGUpCit7CisgICAgLy8gTGltaXQgcmVwbGljYSBuZXN0aW5nLCB0byBh
dm9pZCAyXk4gZXhwbG9zaW9uIG9mIHJlcGxpY2EgbGF5ZXJzLgorICAgIGlmICghbV9yZXBsaWNh
dGVkTGF5ZXIgfHwgcmVwbGljYVN0YXRlLnJlcGxpY2FEZXB0aCgpID09IFJlcGxpY2FTdGF0ZTo6
bWF4UmVwbGljYURlcHRoKQorICAgICAgICByZXR1cm4gMDsKKworICAgIEdyYXBoaWNzTGF5ZXJD
QSogcmVwbGljYXRlZExheWVyID0gc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllckNBKj4obV9yZXBs
aWNhdGVkTGF5ZXIpOworICAgIAorICAgIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IGNsb25lZExh
eWVyUm9vdCA9IHJlcGxpY2F0ZWRMYXllci0+ZmV0Y2hDbG9uZUxheWVycyh0aGlzLCByZXBsaWNh
U3RhdGUsIFJvb3RDbG9uZUxldmVsKTsKKyAgICBGbG9hdFBvaW50IGNsb25lUm9vdFBvc2l0aW9u
ID0gcmVwbGljYXRlZExheWVyLT5wb3NpdGlvbkZvckNsb25lUm9vdExheWVyKCk7CisKKyAgICAv
LyBSZXBsaWNhIHJvb3QgaGFzIG5vIG9mZnNldCBvciB0cmFuc2Zvcm0KKyAgICBjbG9uZWRMYXll
clJvb3QtPnNldFBvc2l0aW9uKGNsb25lUm9vdFBvc2l0aW9uKTsKKyAgICBjbG9uZWRMYXllclJv
b3QtPnNldFRyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKTsKKworICAgIHJldHVybiBj
bG9uZWRMYXllclJvb3Q7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjp1cGRhdGVMYXllckFu
aW1hdGlvbnMoKQoreworICAgIGlmIChtX2FuaW1hdGlvbnNUb1Byb2Nlc3Muc2l6ZSgpKSB7Cisg
ICAgICAgIEFuaW1hdGlvbnNUb1Byb2Nlc3NNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fYW5p
bWF0aW9uc1RvUHJvY2Vzcy5lbmQoKTsKKyAgICAgICAgZm9yIChBbmltYXRpb25zVG9Qcm9jZXNz
TWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fYW5pbWF0aW9uc1RvUHJvY2Vzcy5iZWdpbigpOyBp
dCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgY3VyckFuaW1hdGlv
bk5hbWUgPSBpdC0+Zmlyc3Q7CisgICAgICAgICAgICBBbmltYXRpb25zTWFwOjppdGVyYXRvciBh
bmltYXRpb25JdCA9IG1fcnVubmluZ0FuaW1hdGlvbnMuZmluZChjdXJyQW5pbWF0aW9uTmFtZSk7
CisgICAgICAgICAgICBpZiAoYW5pbWF0aW9uSXQgPT0gbV9ydW5uaW5nQW5pbWF0aW9ucy5lbmQo
KSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgY29uc3QgQW5pbWF0
aW9uUHJvY2Vzc2luZ0FjdGlvbiYgcHJvY2Vzc2luZ0luZm8gPSBpdC0+c2Vjb25kOworICAgICAg
ICAgICAgY29uc3QgVmVjdG9yPExheWVyUHJvcGVydHlBbmltYXRpb24+JiBhbmltYXRpb25zID0g
YW5pbWF0aW9uSXQtPnNlY29uZDsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
YW5pbWF0aW9ucy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgICAgIGNvbnN0IExheWVyUHJv
cGVydHlBbmltYXRpb24mIGN1cnJBbmltYXRpb24gPSBhbmltYXRpb25zW2ldOworICAgICAgICAg
ICAgICAgIHN3aXRjaCAocHJvY2Vzc2luZ0luZm8uYWN0aW9uKSB7CisgICAgICAgICAgICAgICAg
Y2FzZSBSZW1vdmU6CisgICAgICAgICAgICAgICAgICAgIHJlbW92ZUNBQW5pbWF0aW9uRnJvbUxh
eWVyKGN1cnJBbmltYXRpb24ubV9wcm9wZXJ0eSwgY3VyckFuaW1hdGlvbk5hbWUsIGN1cnJBbmlt
YXRpb24ubV9pbmRleCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgIGNhc2UgUGF1c2U6CisgICAgICAgICAgICAgICAgICAgIHBhdXNlQ0FBbmltYXRpb25Pbkxh
eWVyKGN1cnJBbmltYXRpb24ubV9wcm9wZXJ0eSwgY3VyckFuaW1hdGlvbk5hbWUsIGN1cnJBbmlt
YXRpb24ubV9pbmRleCwgcHJvY2Vzc2luZ0luZm8udGltZU9mZnNldCk7CisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgaWYgKHByb2Nlc3NpbmdJbmZvLmFjdGlvbiA9PSBSZW1vdmUpCisgICAgICAgICAgICAg
ICAgbV9ydW5uaW5nQW5pbWF0aW9ucy5yZW1vdmUoY3VyckFuaW1hdGlvbk5hbWUpOworICAgICAg
ICB9CisgICAgCisgICAgICAgIG1fYW5pbWF0aW9uc1RvUHJvY2Vzcy5jbGVhcigpOworICAgIH0K
KyAgICAKKyAgICBzaXplX3QgbnVtQW5pbWF0aW9uczsKKyAgICBpZiAoKG51bUFuaW1hdGlvbnMg
PSBtX3VuY29taXR0ZWRBbmltYXRpb25zLnNpemUoKSkpIHsKKyAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBudW1BbmltYXRpb25zOyArK2kpIHsKKyAgICAgICAgICAgIGNvbnN0IExheWVy
UHJvcGVydHlBbmltYXRpb24mIHBlbmRpbmdBbmltYXRpb24gPSBtX3VuY29taXR0ZWRBbmltYXRp
b25zW2ldOworICAgICAgICAgICAgc2V0QW5pbWF0aW9uT25MYXllcihwZW5kaW5nQW5pbWF0aW9u
Lm1fYW5pbWF0aW9uLmdldCgpLCBwZW5kaW5nQW5pbWF0aW9uLm1fcHJvcGVydHksIHBlbmRpbmdB
bmltYXRpb24ubV9uYW1lLCBwZW5kaW5nQW5pbWF0aW9uLm1faW5kZXgsIHBlbmRpbmdBbmltYXRp
b24ubV90aW1lT2Zmc2V0KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgQW5pbWF0aW9uc01h
cDo6aXRlcmF0b3IgaXQgPSBtX3J1bm5pbmdBbmltYXRpb25zLmZpbmQocGVuZGluZ0FuaW1hdGlv
bi5tX25hbWUpOworICAgICAgICAgICAgaWYgKGl0ID09IG1fcnVubmluZ0FuaW1hdGlvbnMuZW5k
KCkpIHsKKyAgICAgICAgICAgICAgICBWZWN0b3I8TGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbj4gYW5p
bWF0aW9uczsKKyAgICAgICAgICAgICAgICBhbmltYXRpb25zLmFwcGVuZChwZW5kaW5nQW5pbWF0
aW9uKTsKKyAgICAgICAgICAgICAgICBtX3J1bm5pbmdBbmltYXRpb25zLmFkZChwZW5kaW5nQW5p
bWF0aW9uLm1fbmFtZSwgYW5pbWF0aW9ucyk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIFZlY3RvcjxMYXllclByb3BlcnR5QW5pbWF0aW9uPiYgYW5pbWF0aW9ucyA9IGl0
LT5zZWNvbmQ7CisgICAgICAgICAgICAgICAgYW5pbWF0aW9ucy5hcHBlbmQocGVuZGluZ0FuaW1h
dGlvbik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIG1fdW5j
b21pdHRlZEFuaW1hdGlvbnMuY2xlYXIoKTsKKyAgICB9Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXll
ckNBOjpzZXRBbmltYXRpb25PbkxheWVyKFBsYXRmb3JtQ0FBbmltYXRpb24qIGNhQW5pbSwgQW5p
bWF0ZWRQcm9wZXJ0eUlEIHByb3BlcnR5LCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGlu
dCBpbmRleCwgZG91YmxlIHRpbWVPZmZzZXQpCit7CisgICAgUGxhdGZvcm1DQUxheWVyKiBsYXll
ciA9IGFuaW1hdGVkTGF5ZXIocHJvcGVydHkpOworICAgIAorICAgIGlmICh0aW1lT2Zmc2V0KSB7
CisgICAgICAgIGNhQW5pbS0+c2V0QmVnaW5UaW1lKENBQ3VycmVudE1lZGlhVGltZSgpIC0gdGlt
ZU9mZnNldCk7CisgICAgICAgIGNhQW5pbS0+c2V0Tm9uWmVyb0JlZ2luVGltZUZsYWcodHJ1ZSk7
CisgICAgfQorCisgICAgU3RyaW5nIGFuaW1hdGlvbklEID0gYW5pbWF0aW9uSWRlbnRpZmllcihh
bmltYXRpb25OYW1lLCBwcm9wZXJ0eSwgaW5kZXgpOworCisgICAgbGF5ZXItPnJlbW92ZUFuaW1h
dGlvbkZvcktleShhbmltYXRpb25JRCk7CisgICAgbGF5ZXItPmFkZEFuaW1hdGlvbkZvcktleShh
bmltYXRpb25JRCwgY2FBbmltKTsKKworICAgIGlmIChMYXllck1hcCogbGF5ZXJDbG9uZU1hcCA9
IGFuaW1hdGVkTGF5ZXJDbG9uZXMocHJvcGVydHkpKSB7CisgICAgICAgIExheWVyTWFwOjpjb25z
dF9pdGVyYXRvciBlbmQgPSBsYXllckNsb25lTWFwLT5lbmQoKTsKKyAgICAgICAgZm9yIChMYXll
ck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBsYXllckNsb25lTWFwLT5iZWdpbigpOyBpdCAhPSBl
bmQ7ICsraXQpIHsKKyAgICAgICAgICAgIC8vIFNraXAgaW1tZWRpYXRlIHJlcGxpY2FzLCBzaW5j
ZSB0aGV5IG1vdmUgd2l0aCB0aGUgb3JpZ2luYWwuCisgICAgICAgICAgICBpZiAobV9yZXBsaWNh
TGF5ZXIgJiYgaXNSZXBsaWNhdGVkUm9vdENsb25lKGl0LT5maXJzdCkpCisgICAgICAgICAgICAg
ICAgY29udGludWU7CisKKyAgICAgICAgICAgIGl0LT5zZWNvbmQtPnJlbW92ZUFuaW1hdGlvbkZv
cktleShhbmltYXRpb25JRCk7CisgICAgICAgICAgICBpdC0+c2Vjb25kLT5hZGRBbmltYXRpb25G
b3JLZXkoYW5pbWF0aW9uSUQsIGNhQW5pbSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKKy8vIFdv
cmthcm91bmQgZm9yIDxyZGFyOi8vcHJvYmxlbS83MzExMzY3Pgorc3RhdGljIHZvaWQgYnVnNzMx
MTM2N1dvcmthcm91bmQoUGxhdGZvcm1DQUxheWVyKiB0cmFuc2Zvcm1MYXllciwgY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSkKK3sKKyAgICBpZiAoIXRyYW5zZm9ybUxheWVy
KQorICAgICAgICByZXR1cm47CisKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBjYVRyYW5zZm9y
bSA9IHRyYW5zZm9ybTsKKyAgICBjYVRyYW5zZm9ybS5zZXRNNDEoY2FUcmFuc2Zvcm0ubTQxKCkg
KyAxKTsKKyAgICB0cmFuc2Zvcm1MYXllci0+c2V0VHJhbnNmb3JtKGNhVHJhbnNmb3JtKTsKKwor
ICAgIGNhVHJhbnNmb3JtLnNldE00MShjYVRyYW5zZm9ybS5tNDEoKSAtIDEpOworICAgIHRyYW5z
Zm9ybUxheWVyLT5zZXRUcmFuc2Zvcm0oY2FUcmFuc2Zvcm0pOworfQorCitib29sIEdyYXBoaWNz
TGF5ZXJDQTo6cmVtb3ZlQ0FBbmltYXRpb25Gcm9tTGF5ZXIoQW5pbWF0ZWRQcm9wZXJ0eUlEIHBy
b3BlcnR5LCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGludCBpbmRleCkKK3sKKyAgICBQ
bGF0Zm9ybUNBTGF5ZXIqIGxheWVyID0gYW5pbWF0ZWRMYXllcihwcm9wZXJ0eSk7CisKKyAgICBT
dHJpbmcgYW5pbWF0aW9uSUQgPSBhbmltYXRpb25JZGVudGlmaWVyKGFuaW1hdGlvbk5hbWUsIHBy
b3BlcnR5LCBpbmRleCk7CisKKyAgICBpZiAoIWxheWVyLT5hbmltYXRpb25Gb3JLZXkoYW5pbWF0
aW9uSUQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgbGF5ZXItPnJlbW92ZUFu
aW1hdGlvbkZvcktleShhbmltYXRpb25JRCk7CisgICAgYnVnNzMxMTM2N1dvcmthcm91bmQobV9z
dHJ1Y3R1cmFsTGF5ZXIuZ2V0KCksIG1fdHJhbnNmb3JtKTsKKworICAgIGlmIChMYXllck1hcCog
bGF5ZXJDbG9uZU1hcCA9IGFuaW1hdGVkTGF5ZXJDbG9uZXMocHJvcGVydHkpKSB7CisgICAgICAg
IExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBsYXllckNsb25lTWFwLT5lbmQoKTsKKyAg
ICAgICAgZm9yIChMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBsYXllckNsb25lTWFwLT5i
ZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgICAgIC8vIFNraXAgaW1tZWRpYXRl
IHJlcGxpY2FzLCBzaW5jZSB0aGV5IG1vdmUgd2l0aCB0aGUgb3JpZ2luYWwuCisgICAgICAgICAg
ICBpZiAobV9yZXBsaWNhTGF5ZXIgJiYgaXNSZXBsaWNhdGVkUm9vdENsb25lKGl0LT5maXJzdCkp
CisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIGl0LT5zZWNvbmQgLT5y
ZW1vdmVBbmltYXRpb25Gb3JLZXkoYW5pbWF0aW9uSUQpOworICAgICAgICB9CisgICAgfQorICAg
IHJldHVybiB0cnVlOworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6cGF1c2VDQUFuaW1hdGlv
bk9uTGF5ZXIoQW5pbWF0ZWRQcm9wZXJ0eUlEIHByb3BlcnR5LCBjb25zdCBTdHJpbmcmIGFuaW1h
dGlvbk5hbWUsIGludCBpbmRleCwgZG91YmxlIHRpbWVPZmZzZXQpCit7CisgICAgUGxhdGZvcm1D
QUxheWVyKiBsYXllciA9IGFuaW1hdGVkTGF5ZXIocHJvcGVydHkpOworCisgICAgU3RyaW5nIGFu
aW1hdGlvbklEID0gYW5pbWF0aW9uSWRlbnRpZmllcihhbmltYXRpb25OYW1lLCBwcm9wZXJ0eSwg
aW5kZXgpOworCisgICAgUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IGN1ckFuaW0gPSBsYXll
ci0+YW5pbWF0aW9uRm9yS2V5KGFuaW1hdGlvbklEKTsKKyAgICBpZiAoIWN1ckFuaW0pCisgICAg
ICAgIHJldHVybjsKKworICAgIC8vIEFuaW1hdGlvbnMgb24gdGhlIGxheWVyIGFyZSBpbW11dGFi
bGUsIHNvIHdlIGhhdmUgdG8gY2xvbmUgYW5kIG1vZGlmeS4KKyAgICBSZWZQdHI8UGxhdGZvcm1D
QUFuaW1hdGlvbj4gbmV3QW5pbSA9IFBsYXRmb3JtQ0FBbmltYXRpb246OmNyZWF0ZShjdXJBbmlt
LmdldCgpKTsKKworICAgIG5ld0FuaW0tPnNldFNwZWVkKDApOworICAgIG5ld0FuaW0tPnNldFRp
bWVPZmZzZXQodGltZU9mZnNldCk7CisgICAgCisgICAgbGF5ZXItPmFkZEFuaW1hdGlvbkZvcktl
eShhbmltYXRpb25JRCwgbmV3QW5pbS5nZXQoKSk7IC8vIFRoaXMgd2lsbCByZXBsYWNlIHRoZSBy
dW5uaW5nIGFuaW1hdGlvbi4KKworICAgIC8vIFBhdXNlIHRoZSBhbmltYXRpb25zIG9uIHRoZSBj
bG9uZXMgdG9vLgorICAgIGlmIChMYXllck1hcCogbGF5ZXJDbG9uZU1hcCA9IGFuaW1hdGVkTGF5
ZXJDbG9uZXMocHJvcGVydHkpKSB7CisgICAgICAgIExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBl
bmQgPSBsYXllckNsb25lTWFwLT5lbmQoKTsKKyAgICAgICAgZm9yIChMYXllck1hcDo6Y29uc3Rf
aXRlcmF0b3IgaXQgPSBsYXllckNsb25lTWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsK
KyAgICAgICAgICAgIC8vIFNraXAgaW1tZWRpYXRlIHJlcGxpY2FzLCBzaW5jZSB0aGV5IG1vdmUg
d2l0aCB0aGUgb3JpZ2luYWwuCisgICAgICAgICAgICBpZiAobV9yZXBsaWNhTGF5ZXIgJiYgaXNS
ZXBsaWNhdGVkUm9vdENsb25lKGl0LT5maXJzdCkpCisgICAgICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgICAgICBpdC0+c2Vjb25kLT5hZGRBbmltYXRpb25Gb3JLZXkoYW5pbWF0aW9uSUQs
IG5ld0FuaW0uZ2V0KCkpOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIEdyYXBoaWNzTGF5
ZXJDQTo6cmVwYWludExheWVyRGlydHlSZWN0cygpCit7CisgICAgaWYgKCFtX2RpcnR5UmVjdHMu
c2l6ZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1f
ZGlydHlSZWN0cy5zaXplKCk7ICsraSkKKyAgICAgICAgbV9sYXllci0+c2V0TmVlZHNEaXNwbGF5
KCYobV9kaXJ0eVJlY3RzW2ldKSk7CisgICAgCisgICAgbV9kaXJ0eVJlY3RzLmNsZWFyKCk7Cit9
CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjp1cGRhdGVDb250ZW50c05lZWRzRGlzcGxheSgpCit7
CisgICAgaWYgKG1fY29udGVudHNMYXllcikKKyAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRO
ZWVkc0Rpc3BsYXkoKTsKK30KKworYm9vbCBHcmFwaGljc0xheWVyQ0E6OmNyZWF0ZUFuaW1hdGlv
bkZyb21LZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCwgY29uc3Qg
QW5pbWF0aW9uKiBhbmltYXRpb24sIGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSwgZG91Ymxl
IHRpbWVPZmZzZXQpCit7CisgICAgQVNTRVJUKHZhbHVlTGlzdC5wcm9wZXJ0eSgpICE9IEFuaW1h
dGVkUHJvcGVydHlXZWJraXRUcmFuc2Zvcm0pOworICAgIAorICAgIGJvb2wgaXNLZXlmcmFtZSA9
IHZhbHVlTGlzdC5zaXplKCkgPiAyOworICAgIGJvb2wgdmFsdWVzT0s7CisgICAgCisgICAgYm9v
bCBhZGRpdGl2ZSA9IGZhbHNlOworICAgIGludCBhbmltYXRpb25JbmRleCA9IDA7CisgICAgCisg
ICAgUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IGNhQW5pbWF0aW9uOworICAgIAorICAgIGlm
IChpc0tleWZyYW1lKSB7CisgICAgICAgIGNhQW5pbWF0aW9uID0gY3JlYXRlS2V5ZnJhbWVBbmlt
YXRpb24oYW5pbWF0aW9uLCB2YWx1ZUxpc3QucHJvcGVydHkoKSwgYWRkaXRpdmUpOworICAgICAg
ICB2YWx1ZXNPSyA9IHNldEFuaW1hdGlvbktleWZyYW1lcyh2YWx1ZUxpc3QsIGFuaW1hdGlvbiwg
Y2FBbmltYXRpb24uZ2V0KCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIGNhQW5pbWF0aW9uID0g
Y3JlYXRlQmFzaWNBbmltYXRpb24oYW5pbWF0aW9uLCB2YWx1ZUxpc3QucHJvcGVydHkoKSwgYWRk
aXRpdmUpOworICAgICAgICB2YWx1ZXNPSyA9IHNldEFuaW1hdGlvbkVuZHBvaW50cyh2YWx1ZUxp
c3QsIGFuaW1hdGlvbiwgY2FBbmltYXRpb24uZ2V0KCkpOworICAgIH0KKyAgICAKKyAgICBpZiAo
IXZhbHVlc09LKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBtX3VuY29taXR0ZWRBbmlt
YXRpb25zLmFwcGVuZChMYXllclByb3BlcnR5QW5pbWF0aW9uKGNhQW5pbWF0aW9uLCBhbmltYXRp
b25OYW1lLCB2YWx1ZUxpc3QucHJvcGVydHkoKSwgYW5pbWF0aW9uSW5kZXgsIHRpbWVPZmZzZXQp
KTsKKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIEdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRl
VHJhbnNmb3JtQW5pbWF0aW9uc0Zyb21LZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3Qm
IHZhbHVlTGlzdCwgY29uc3QgQW5pbWF0aW9uKiBhbmltYXRpb24sIGNvbnN0IFN0cmluZyYgYW5p
bWF0aW9uTmFtZSwgZG91YmxlIHRpbWVPZmZzZXQsIGNvbnN0IEludFNpemUmIGJveFNpemUpCit7
CisgICAgQVNTRVJUKHZhbHVlTGlzdC5wcm9wZXJ0eSgpID09IEFuaW1hdGVkUHJvcGVydHlXZWJr
aXRUcmFuc2Zvcm0pOworCisgICAgVHJhbnNmb3JtT3BlcmF0aW9uTGlzdCBmdW5jdGlvbkxpc3Q7
CisgICAgYm9vbCBsaXN0c01hdGNoLCBoYXNCaWdSb3RhdGlvbjsKKyAgICBmZXRjaFRyYW5zZm9y
bU9wZXJhdGlvbkxpc3QodmFsdWVMaXN0LCBmdW5jdGlvbkxpc3QsIGxpc3RzTWF0Y2gsIGhhc0Jp
Z1JvdGF0aW9uKTsKKworICAgIC8vIFdlIG5lZWQgdG8gZmFsbCBiYWNrIHRvIHNvZnR3YXJlIGFu
aW1hdGlvbiBpZiB3ZSBkb24ndCBoYXZlIHNldFZhbHVlRnVuY3Rpb246LCBhbmQKKyAgICAvLyB3
ZSB3b3VsZCBuZWVkIHRvIGFuaW1hdGUgZWFjaCBpbmNvbWluZyB0cmFuc2Zvcm0gZnVuY3Rpb24g
c2VwYXJhdGVseS4gVGhpcyBpcyB0aGUKKyAgICAvLyBjYXNlIGlmIHdlIGhhdmUgYSByb3RhdGlv
biA+PSAxODAgb3Igd2UgaGF2ZSBtb3JlIHRoYW4gb25lIHRyYW5zZm9ybSBmdW5jdGlvbi4KKyAg
ICBpZiAoKGhhc0JpZ1JvdGF0aW9uIHx8IGZ1bmN0aW9uTGlzdC5zaXplKCkgPiAxKSAmJiAhUGxh
dGZvcm1DQUFuaW1hdGlvbjo6c3VwcG9ydHNWYWx1ZUZ1bmN0aW9uKCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIGJvb2wgdmFsaWRNYXRyaWNlcyA9IHRydWU7CisKKyAgICAvLyBJZiBm
dW5jdGlvbkxpc3RzIGRvbid0IG1hdGNoIHdlIGRvIGEgbWF0cml4IGFuaW1hdGlvbiwgb3RoZXJ3
aXNlIHdlIGRvIGEgY29tcG9uZW50IGhhcmR3YXJlIGFuaW1hdGlvbi4KKyAgICAvLyBBbHNvLCB3
ZSBjYW4ndCBkbyBjb21wb25lbnQgYW5pbWF0aW9uIHVubGVzcyB3ZSBoYXZlIHZhbHVlRnVuY3Rp
b24sIHNvIHdlIG5lZWQgdG8gZG8gbWF0cml4IGFuaW1hdGlvbgorICAgIC8vIGlmIHRoYXQncyBu
b3QgdHJ1ZSBhcyB3ZWxsLgorICAgIGJvb2wgaXNNYXRyaXhBbmltYXRpb24gPSAhbGlzdHNNYXRj
aCB8fCAhUGxhdGZvcm1DQUFuaW1hdGlvbjo6c3VwcG9ydHNWYWx1ZUZ1bmN0aW9uKCk7CisgICAg
CisgICAgc2l6ZV90IG51bUFuaW1hdGlvbnMgPSBpc01hdHJpeEFuaW1hdGlvbiA/IDEgOiBmdW5j
dGlvbkxpc3Quc2l6ZSgpOworICAgIGJvb2wgaXNLZXlmcmFtZSA9IHZhbHVlTGlzdC5zaXplKCkg
PiAyOworICAgIAorICAgIC8vIEl0ZXJhdGUgdGhyb3VnaCB0aGUgdHJhbnNmb3JtIGZ1bmN0aW9u
cywgc2VuZGluZyBhbiBhbmltYXRpb24gZm9yIGVhY2ggb25lLgorICAgIGZvciAoc2l6ZV90IGFu
aW1hdGlvbkluZGV4ID0gMDsgYW5pbWF0aW9uSW5kZXggPCBudW1BbmltYXRpb25zOyArK2FuaW1h
dGlvbkluZGV4KSB7CisgICAgICAgIFRyYW5zZm9ybU9wZXJhdGlvbjo6T3BlcmF0aW9uVHlwZSB0
cmFuc2Zvcm1PcCA9IGlzTWF0cml4QW5pbWF0aW9uID8gVHJhbnNmb3JtT3BlcmF0aW9uOjpNQVRS
SVhfM0QgOiBmdW5jdGlvbkxpc3RbYW5pbWF0aW9uSW5kZXhdOworICAgICAgICBSZWZQdHI8UGxh
dGZvcm1DQUFuaW1hdGlvbj4gY2FBbmltYXRpb247CisKKyNpZiBkZWZpbmVkKEJVSUxESU5HX09O
X0xFT1BBUkQpIHx8IGRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQorICAgICAgICAv
LyBDQSBhcHBsaWVzIGFuaW1hdGlvbnMgaW4gcmV2ZXJzZSBvcmRlciAoPHJkYXI6Ly9wcm9ibGVt
LzcwOTU2Mzg+KSBzbyB3ZSBuZWVkIHRoZSBsYXN0IG9uZSB3ZSBhZGQgKHBlciBwcm9wZXJ0eSkK
KyAgICAgICAgLy8gdG8gYmUgbm9uLWFkZGl0aXZlLgorICAgICAgICBib29sIGFkZGl0aXZlID0g
YW5pbWF0aW9uSW5kZXggPCAobnVtQW5pbWF0aW9ucyAtIDEpOworI2Vsc2UKKyAgICAgICAgYm9v
bCBhZGRpdGl2ZSA9IGFuaW1hdGlvbkluZGV4ID4gMDsKKyNlbmRpZgorICAgICAgICBpZiAoaXNL
ZXlmcmFtZSkgeworICAgICAgICAgICAgY2FBbmltYXRpb24gPSBjcmVhdGVLZXlmcmFtZUFuaW1h
dGlvbihhbmltYXRpb24sIHZhbHVlTGlzdC5wcm9wZXJ0eSgpLCBhZGRpdGl2ZSk7CisgICAgICAg
ICAgICB2YWxpZE1hdHJpY2VzID0gc2V0VHJhbnNmb3JtQW5pbWF0aW9uS2V5ZnJhbWVzKHZhbHVl
TGlzdCwgYW5pbWF0aW9uLCBjYUFuaW1hdGlvbi5nZXQoKSwgYW5pbWF0aW9uSW5kZXgsIHRyYW5z
Zm9ybU9wLCBpc01hdHJpeEFuaW1hdGlvbiwgYm94U2l6ZSk7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBjYUFuaW1hdGlvbiA9IGNyZWF0ZUJhc2ljQW5pbWF0aW9uKGFuaW1hdGlvbiwg
dmFsdWVMaXN0LnByb3BlcnR5KCksIGFkZGl0aXZlKTsKKyAgICAgICAgICAgIHZhbGlkTWF0cmlj
ZXMgPSBzZXRUcmFuc2Zvcm1BbmltYXRpb25FbmRwb2ludHModmFsdWVMaXN0LCBhbmltYXRpb24s
IGNhQW5pbWF0aW9uLmdldCgpLCBhbmltYXRpb25JbmRleCwgdHJhbnNmb3JtT3AsIGlzTWF0cml4
QW5pbWF0aW9uLCBib3hTaXplKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKCF2
YWxpZE1hdHJpY2VzKQorICAgICAgICAgICAgYnJlYWs7CisgICAgCisgICAgICAgIG1fdW5jb21p
dHRlZEFuaW1hdGlvbnMuYXBwZW5kKExheWVyUHJvcGVydHlBbmltYXRpb24oY2FBbmltYXRpb24s
IGFuaW1hdGlvbk5hbWUsIHZhbHVlTGlzdC5wcm9wZXJ0eSgpLCBhbmltYXRpb25JbmRleCwgdGlt
ZU9mZnNldCkpOworICAgIH0KKworICAgIHJldHVybiB2YWxpZE1hdHJpY2VzOworfQorCitQYXNz
UmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IEdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRlQmFzaWNB
bmltYXRpb24oY29uc3QgQW5pbWF0aW9uKiBhbmltLCBBbmltYXRlZFByb3BlcnR5SUQgcHJvcGVy
dHksIGJvb2wgYWRkaXRpdmUpCit7CisgICAgUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IGJh
c2ljQW5pbSA9IFBsYXRmb3JtQ0FBbmltYXRpb246OmNyZWF0ZShQbGF0Zm9ybUNBQW5pbWF0aW9u
OjpCYXNpYywgcHJvcGVydHlJZFRvU3RyaW5nKHByb3BlcnR5KSk7CisgICAgc2V0dXBBbmltYXRp
b24oYmFzaWNBbmltLmdldCgpLCBhbmltLCBhZGRpdGl2ZSk7CisgICAgcmV0dXJuIGJhc2ljQW5p
bTsKK30KKworUGFzc1JlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPkdyYXBoaWNzTGF5ZXJDQTo6
Y3JlYXRlS2V5ZnJhbWVBbmltYXRpb24oY29uc3QgQW5pbWF0aW9uKiBhbmltLCBBbmltYXRlZFBy
b3BlcnR5SUQgcHJvcGVydHksIGJvb2wgYWRkaXRpdmUpCit7CisgICAgUmVmUHRyPFBsYXRmb3Jt
Q0FBbmltYXRpb24+IGtleWZyYW1lQW5pbSA9IFBsYXRmb3JtQ0FBbmltYXRpb246OmNyZWF0ZShQ
bGF0Zm9ybUNBQW5pbWF0aW9uOjpLZXlmcmFtZSwgcHJvcGVydHlJZFRvU3RyaW5nKHByb3BlcnR5
KSk7CisgICAgc2V0dXBBbmltYXRpb24oa2V5ZnJhbWVBbmltLmdldCgpLCBhbmltLCBhZGRpdGl2
ZSk7CisgICAgcmV0dXJuIGtleWZyYW1lQW5pbTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6
OnNldHVwQW5pbWF0aW9uKFBsYXRmb3JtQ0FBbmltYXRpb24qIHByb3BlcnR5QW5pbSwgY29uc3Qg
QW5pbWF0aW9uKiBhbmltLCBib29sIGFkZGl0aXZlKQoreworICAgIGRvdWJsZSBkdXJhdGlvbiA9
IGFuaW0tPmR1cmF0aW9uKCk7CisgICAgaWYgKGR1cmF0aW9uIDw9IDApCisgICAgICAgIGR1cmF0
aW9uID0gY0FuaW1hdGlvbkFsbW9zdFplcm9EdXJhdGlvbjsKKworICAgIGZsb2F0IHJlcGVhdENv
dW50ID0gYW5pbS0+aXRlcmF0aW9uQ291bnQoKTsKKyAgICBpZiAocmVwZWF0Q291bnQgPT0gQW5p
bWF0aW9uOjpJdGVyYXRpb25Db3VudEluZmluaXRlKQorICAgICAgICByZXBlYXRDb3VudCA9IEZM
VF9NQVg7CisgICAgZWxzZSBpZiAoYW5pbS0+ZGlyZWN0aW9uKCkgPT0gQW5pbWF0aW9uOjpBbmlt
YXRpb25EaXJlY3Rpb25BbHRlcm5hdGUpCisgICAgICAgIHJlcGVhdENvdW50IC89IDI7CisKKyAg
ICBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpGaWxsTW9kZVR5cGUgZmlsbE1vZGUgPSBQbGF0Zm9ybUNB
QW5pbWF0aW9uOjpOb0ZpbGxNb2RlOworICAgIHN3aXRjaCAoYW5pbS0+ZmlsbE1vZGUoKSkgewor
ICAgIGNhc2UgQW5pbWF0aW9uRmlsbE1vZGVOb25lOgorICAgICAgICBmaWxsTW9kZSA9IFBsYXRm
b3JtQ0FBbmltYXRpb246OkZvcndhcmRzOyAvLyBVc2UgImZvcndhcmRzIiByYXRoZXIgdGhhbiAi
cmVtb3ZlZCIgYmVjYXVzZSB0aGUgc3R5bGUgc3lzdGVtIHdpbGwgcmVtb3ZlIHRoZSBhbmltYXRp
b24gd2hlbiBpdCBpcyBmaW5pc2hlZC4gVGhpcyBhdm9pZHMgYSBmbGFzaC4KKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBBbmltYXRpb25GaWxsTW9kZUJhY2t3YXJkczoKKyAgICAgICAgZmlsbE1v
ZGUgPSBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpCb3RoOyAvLyBVc2UgImJvdGgiIHJhdGhlciB0aGFu
ICJiYWNrd2FyZHMiIGJlY2F1c2UgdGhlIHN0eWxlIHN5c3RlbSB3aWxsIHJlbW92ZSB0aGUgYW5p
bWF0aW9uIHdoZW4gaXQgaXMgZmluaXNoZWQuIFRoaXMgYXZvaWRzIGEgZmxhc2guCisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgQW5pbWF0aW9uRmlsbE1vZGVGb3J3YXJkczoKKyAgICAgICAgZmls
bE1vZGUgPSBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpGb3J3YXJkczsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBBbmltYXRpb25GaWxsTW9kZUJvdGg6CisgICAgICAgIGZpbGxNb2RlID0gUGxhdGZv
cm1DQUFuaW1hdGlvbjo6Qm90aDsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgcHJvcGVy
dHlBbmltLT5zZXREdXJhdGlvbihkdXJhdGlvbik7CisgICAgcHJvcGVydHlBbmltLT5zZXRSZXBl
YXRDb3VudChyZXBlYXRDb3VudCk7CisgICAgcHJvcGVydHlBbmltLT5zZXRBdXRvcmV2ZXJzZXMo
YW5pbS0+ZGlyZWN0aW9uKCkpOworICAgIHByb3BlcnR5QW5pbS0+c2V0UmVtb3ZlZE9uQ29tcGxl
dGlvbihmYWxzZSk7CisgICAgcHJvcGVydHlBbmltLT5zZXRBZGRpdGl2ZShhZGRpdGl2ZSk7Cisg
ICAgcHJvcGVydHlBbmltLT5zZXRGaWxsTW9kZShmaWxsTW9kZSk7Cit9CisKK2NvbnN0IFRpbWlu
Z0Z1bmN0aW9uKiBHcmFwaGljc0xheWVyQ0E6OnRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFs
dWUoY29uc3QgQW5pbWF0aW9uVmFsdWUqIGFuaW1WYWx1ZSwgY29uc3QgQW5pbWF0aW9uKiBhbmlt
KQoreworICAgIGlmIChhbmltVmFsdWUtPnRpbWluZ0Z1bmN0aW9uKCkpCisgICAgICAgIHJldHVy
biBhbmltVmFsdWUtPnRpbWluZ0Z1bmN0aW9uKCk7CisgICAgaWYgKGFuaW0tPmlzVGltaW5nRnVu
Y3Rpb25TZXQoKSkKKyAgICAgICAgcmV0dXJuIGFuaW0tPnRpbWluZ0Z1bmN0aW9uKCkuZ2V0KCk7
CisgICAgICAgIAorICAgIHJldHVybiAwOworfQorCitib29sIEdyYXBoaWNzTGF5ZXJDQTo6c2V0
QW5pbWF0aW9uRW5kcG9pbnRzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3QsIGNv
bnN0IEFuaW1hdGlvbiogYW5pbSwgUGxhdGZvcm1DQUFuaW1hdGlvbiogYmFzaWNBbmltKQorewor
ICAgIHN3aXRjaCAodmFsdWVMaXN0LnByb3BlcnR5KCkpIHsKKyAgICBjYXNlIEFuaW1hdGVkUHJv
cGVydHlPcGFjaXR5OiB7CisgICAgICAgIGJhc2ljQW5pbS0+c2V0RnJvbVZhbHVlKHN0YXRpY19j
YXN0PGNvbnN0IEZsb2F0QW5pbWF0aW9uVmFsdWUqPih2YWx1ZUxpc3QuYXQoMCkpLT52YWx1ZSgp
KTsKKyAgICAgICAgYmFzaWNBbmltLT5zZXRUb1ZhbHVlKHN0YXRpY19jYXN0PGNvbnN0IEZsb2F0
QW5pbWF0aW9uVmFsdWUqPih2YWx1ZUxpc3QuYXQoMSkpLT52YWx1ZSgpKTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyAv
LyB3ZSBkb24ndCBhbmltYXRlIGNvbG9yIHlldAorICAgICAgICBicmVhazsKKyAgICB9CisKKyAg
ICAvLyBUaGlzIGNvZGVwYXRoIGlzIHVzZWQgZm9yIDIta2V5ZnJhbWUgYW5pbWF0aW9ucywgc28g
d2Ugc3RpbGwgbmVlZCB0byBsb29rIGluIHRoZSBzdGFydAorICAgIC8vIGZvciBhIHRpbWluZyBm
dW5jdGlvbi4KKyAgICBjb25zdCBUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb24gPSB0aW1p
bmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKHZhbHVlTGlzdC5hdCgwKSwgYW5pbSk7CisgICAg
aWYgKHRpbWluZ0Z1bmN0aW9uKQorICAgICAgICBiYXNpY0FuaW0tPnNldFRpbWluZ0Z1bmN0aW9u
KHRpbWluZ0Z1bmN0aW9uKTsKKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIEdyYXBoaWNz
TGF5ZXJDQTo6c2V0QW5pbWF0aW9uS2V5ZnJhbWVzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2
YWx1ZUxpc3QsIGNvbnN0IEFuaW1hdGlvbiogYW5pbSwgUGxhdGZvcm1DQUFuaW1hdGlvbioga2V5
ZnJhbWVBbmltKQoreworICAgIFZlY3RvcjxmbG9hdD4ga2V5VGltZXM7CisgICAgVmVjdG9yPGZs
b2F0PiB2YWx1ZXM7CisgICAgVmVjdG9yPGNvbnN0IFRpbWluZ0Z1bmN0aW9uKj4gdGltaW5nRnVu
Y3Rpb25zOworICAgIAorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB2YWx1ZUxpc3Quc2l6
ZSgpOyArK2kpIHsKKyAgICAgICAgY29uc3QgQW5pbWF0aW9uVmFsdWUqIGN1clZhbHVlID0gdmFs
dWVMaXN0LmF0KGkpOworICAgICAgICBrZXlUaW1lcy5hcHBlbmQoY3VyVmFsdWUtPmtleVRpbWUo
KSk7CisKKyAgICAgICAgc3dpdGNoICh2YWx1ZUxpc3QucHJvcGVydHkoKSkgeworICAgICAgICBj
YXNlIEFuaW1hdGVkUHJvcGVydHlPcGFjaXR5OiB7CisgICAgICAgICAgICBjb25zdCBGbG9hdEFu
aW1hdGlvblZhbHVlKiBmbG9hdFZhbHVlID0gc3RhdGljX2Nhc3Q8Y29uc3QgRmxvYXRBbmltYXRp
b25WYWx1ZSo+KGN1clZhbHVlKTsKKyAgICAgICAgICAgIHZhbHVlcy5hcHBlbmQoZmxvYXRWYWx1
ZS0+dmFsdWUoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7IC8vIHdlIGRvbid0IGFuaW1h
dGUgY29sb3IgeWV0CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIHRp
bWluZ0Z1bmN0aW9ucy5hcHBlbmQodGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShjdXJW
YWx1ZSwgYW5pbSkpOworICAgIH0KKyAgICAKKyAgICAvLyBXZSB0b3NzIHRoZSBsYXN0IHRmQXJy
YXkgdmFsdWUgYmVjYXVzZSBpdCBoYXMgdG8gb25lIHNob3J0ZXIgdGhhbiB0aGUgb3RoZXJzLgor
ICAgIHRpbWluZ0Z1bmN0aW9ucy5yZW1vdmVMYXN0KCk7CisKKyAgICBrZXlmcmFtZUFuaW0tPnNl
dEtleVRpbWVzKGtleVRpbWVzKTsKKyAgICBrZXlmcmFtZUFuaW0tPnNldFZhbHVlcyh2YWx1ZXMp
OworICAgIGtleWZyYW1lQW5pbS0+c2V0VGltaW5nRnVuY3Rpb25zKHRpbWluZ0Z1bmN0aW9ucyk7
CisgICAgCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgR3JhcGhpY3NMYXllckNBOjpzZXRU
cmFuc2Zvcm1BbmltYXRpb25FbmRwb2ludHMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVl
TGlzdCwgY29uc3QgQW5pbWF0aW9uKiBhbmltLCBQbGF0Zm9ybUNBQW5pbWF0aW9uKiBiYXNpY0Fu
aW0sIGludCBmdW5jdGlvbkluZGV4LCBUcmFuc2Zvcm1PcGVyYXRpb246Ok9wZXJhdGlvblR5cGUg
dHJhbnNmb3JtT3BUeXBlLCBib29sIGlzTWF0cml4QW5pbWF0aW9uLCBjb25zdCBJbnRTaXplJiBi
b3hTaXplKQoreworICAgIEFTU0VSVCh2YWx1ZUxpc3Quc2l6ZSgpID09IDIpOworICAgIGNvbnN0
IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKiBzdGFydFZhbHVlID0gc3RhdGljX2Nhc3Q8Y29uc3Qg
VHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUqPih2YWx1ZUxpc3QuYXQoMCkpOworICAgIGNvbnN0IFRy
YW5zZm9ybUFuaW1hdGlvblZhbHVlKiBlbmRWYWx1ZSA9IHN0YXRpY19jYXN0PGNvbnN0IFRyYW5z
Zm9ybUFuaW1hdGlvblZhbHVlKj4odmFsdWVMaXN0LmF0KDEpKTsKKyAgICAKKyAgICBpZiAoaXNN
YXRyaXhBbmltYXRpb24pIHsKKyAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggZnJvbVRyYW5z
Zm9ybSwgdG9UcmFuc2Zvcm07CisgICAgICAgIHN0YXJ0VmFsdWUtPnZhbHVlKCktPmFwcGx5KGJv
eFNpemUsIGZyb21UcmFuc2Zvcm0pOworICAgICAgICBlbmRWYWx1ZS0+dmFsdWUoKS0+YXBwbHko
Ym94U2l6ZSwgdG9UcmFuc2Zvcm0pOworCisgICAgICAgIC8vIElmIGFueSBtYXRyaXggaXMgc2lu
Z3VsYXIsIENBIHdvbid0IGFuaW1hdGUgaXQgY29ycmVjdGx5LiBTbyBmYWxsIGJhY2sgdG8gc29m
dHdhcmUgYW5pbWF0aW9uCisgICAgICAgIGlmICghZnJvbVRyYW5zZm9ybS5pc0ludmVydGlibGUo
KSB8fCAhdG9UcmFuc2Zvcm0uaXNJbnZlcnRpYmxlKCkpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICAKKyAgICAgICAgYmFzaWNBbmltLT5zZXRGcm9tVmFsdWUoZnJvbVRy
YW5zZm9ybSk7CisgICAgICAgIGJhc2ljQW5pbS0+c2V0VG9WYWx1ZSh0b1RyYW5zZm9ybSk7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKGlzVHJhbnNmb3JtVHlwZU51bWJlcih0cmFuc2Zvcm1P
cFR5cGUpKSB7CisgICAgICAgICAgICBmbG9hdCB2YWx1ZTsKKyAgICAgICAgICAgIGdldFRyYW5z
Zm9ybUZ1bmN0aW9uVmFsdWUoc3RhcnRWYWx1ZS0+dmFsdWUoKS0+YXQoZnVuY3Rpb25JbmRleCks
IHRyYW5zZm9ybU9wVHlwZSwgYm94U2l6ZSwgdmFsdWUpOworICAgICAgICAgICAgYmFzaWNBbmlt
LT5zZXRGcm9tVmFsdWUodmFsdWUpOworICAgICAgICAgICAgZ2V0VHJhbnNmb3JtRnVuY3Rpb25W
YWx1ZShlbmRWYWx1ZS0+dmFsdWUoKS0+YXQoZnVuY3Rpb25JbmRleCksIHRyYW5zZm9ybU9wVHlw
ZSwgYm94U2l6ZSwgdmFsdWUpOworICAgICAgICAgICAgYmFzaWNBbmltLT5zZXRUb1ZhbHVlKHZh
bHVlKTsKKyAgICAgICAgfSBlbHNlIGlmIChpc1RyYW5zZm9ybVR5cGVGbG9hdFBvaW50M0QodHJh
bnNmb3JtT3BUeXBlKSkgeworICAgICAgICAgICAgRmxvYXRQb2ludDNEIHZhbHVlOworICAgICAg
ICAgICAgZ2V0VHJhbnNmb3JtRnVuY3Rpb25WYWx1ZShzdGFydFZhbHVlLT52YWx1ZSgpLT5hdChm
dW5jdGlvbkluZGV4KSwgdHJhbnNmb3JtT3BUeXBlLCBib3hTaXplLCB2YWx1ZSk7CisgICAgICAg
ICAgICBiYXNpY0FuaW0tPnNldEZyb21WYWx1ZSh2YWx1ZSk7CisgICAgICAgICAgICBnZXRUcmFu
c2Zvcm1GdW5jdGlvblZhbHVlKGVuZFZhbHVlLT52YWx1ZSgpLT5hdChmdW5jdGlvbkluZGV4KSwg
dHJhbnNmb3JtT3BUeXBlLCBib3hTaXplLCB2YWx1ZSk7CisgICAgICAgICAgICBiYXNpY0FuaW0t
PnNldFRvVmFsdWUodmFsdWUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgVHJhbnNm
b3JtYXRpb25NYXRyaXggdmFsdWU7CisgICAgICAgICAgICBnZXRUcmFuc2Zvcm1GdW5jdGlvblZh
bHVlKHN0YXJ0VmFsdWUtPnZhbHVlKCktPmF0KGZ1bmN0aW9uSW5kZXgpLCB0cmFuc2Zvcm1PcFR5
cGUsIGJveFNpemUsIHZhbHVlKTsKKyAgICAgICAgICAgIGJhc2ljQW5pbS0+c2V0RnJvbVZhbHVl
KHZhbHVlKTsKKyAgICAgICAgICAgIGdldFRyYW5zZm9ybUZ1bmN0aW9uVmFsdWUoZW5kVmFsdWUt
PnZhbHVlKCktPmF0KGZ1bmN0aW9uSW5kZXgpLCB0cmFuc2Zvcm1PcFR5cGUsIGJveFNpemUsIHZh
bHVlKTsKKyAgICAgICAgICAgIGJhc2ljQW5pbS0+c2V0VG9WYWx1ZSh2YWx1ZSk7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICAvLyBUaGlzIGNvZGVwYXRoIGlzIHVzZWQgZm9yIDIta2V5ZnJhbWUg
YW5pbWF0aW9ucywgc28gd2Ugc3RpbGwgbmVlZCB0byBsb29rIGluIHRoZSBzdGFydAorICAgIC8v
IGZvciBhIHRpbWluZyBmdW5jdGlvbi4KKyAgICBjb25zdCBUaW1pbmdGdW5jdGlvbiogdGltaW5n
RnVuY3Rpb24gPSB0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKHZhbHVlTGlzdC5hdCgw
KSwgYW5pbSk7CisgICAgYmFzaWNBbmltLT5zZXRUaW1pbmdGdW5jdGlvbih0aW1pbmdGdW5jdGlv
bik7CisKKyNpZiBIQVZFX01PREVSTl9RVUFSVFpDT1JFCisgICAgUGxhdGZvcm1DQUFuaW1hdGlv
bjo6VmFsdWVGdW5jdGlvblR5cGUgdmFsdWVGdW5jdGlvbiA9IGdldFZhbHVlRnVuY3Rpb25OYW1l
Rm9yVHJhbnNmb3JtT3BlcmF0aW9uKHRyYW5zZm9ybU9wVHlwZSk7CisgICAgaWYgKHZhbHVlRnVu
Y3Rpb24gIT0gUGxhdGZvcm1DQUFuaW1hdGlvbjo6Tm9WYWx1ZUZ1bmN0aW9uKQorICAgICAgICBi
YXNpY0FuaW0tPnNldFZhbHVlRnVuY3Rpb24odmFsdWVGdW5jdGlvbik7CisjZW5kaWYKKworICAg
IHJldHVybiB0cnVlOworfQorCitib29sIEdyYXBoaWNzTGF5ZXJDQTo6c2V0VHJhbnNmb3JtQW5p
bWF0aW9uS2V5ZnJhbWVzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3QsIGNvbnN0
IEFuaW1hdGlvbiogYW5pbWF0aW9uLCBQbGF0Zm9ybUNBQW5pbWF0aW9uKiBrZXlmcmFtZUFuaW0s
IGludCBmdW5jdGlvbkluZGV4LCBUcmFuc2Zvcm1PcGVyYXRpb246Ok9wZXJhdGlvblR5cGUgdHJh
bnNmb3JtT3BUeXBlLCBib29sIGlzTWF0cml4QW5pbWF0aW9uLCBjb25zdCBJbnRTaXplJiBib3hT
aXplKQoreworICAgIFZlY3RvcjxmbG9hdD4ga2V5VGltZXM7CisgICAgVmVjdG9yPGZsb2F0PiBm
bG9hdFZhbHVlczsKKyAgICBWZWN0b3I8RmxvYXRQb2ludDNEPiBmbG9hdFBvaW50M0RWYWx1ZXM7
CisgICAgVmVjdG9yPFRyYW5zZm9ybWF0aW9uTWF0cml4PiB0cmFuc2Zvcm1hdGlvbk1hdHJpeFZh
bHVlczsKKyAgICBWZWN0b3I8Y29uc3QgVGltaW5nRnVuY3Rpb24qPiB0aW1pbmdGdW5jdGlvbnM7
CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdmFsdWVMaXN0LnNpemUoKTsgKytpKSB7
CisgICAgICAgIGNvbnN0IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKiBjdXJWYWx1ZSA9IHN0YXRp
Y19jYXN0PGNvbnN0IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKj4odmFsdWVMaXN0LmF0KGkpKTsK
KyAgICAgICAga2V5VGltZXMuYXBwZW5kKGN1clZhbHVlLT5rZXlUaW1lKCkpOworCisgICAgICAg
IGlmIChpc01hdHJpeEFuaW1hdGlvbikgeworICAgICAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRy
aXggdHJhbnNmb3JtOworICAgICAgICAgICAgY3VyVmFsdWUtPnZhbHVlKCktPmFwcGx5KGJveFNp
emUsIHRyYW5zZm9ybSk7CisKKyAgICAgICAgICAgIC8vIElmIGFueSBtYXRyaXggaXMgc2luZ3Vs
YXIsIENBIHdvbid0IGFuaW1hdGUgaXQgY29ycmVjdGx5LiBTbyBmYWxsIGJhY2sgdG8gc29mdHdh
cmUgYW5pbWF0aW9uCisgICAgICAgICAgICBpZiAoIXRyYW5zZm9ybS5pc0ludmVydGlibGUoKSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIHRyYW5zZm9ybWF0
aW9uTWF0cml4VmFsdWVzLmFwcGVuZCh0cmFuc2Zvcm0pOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9uKiB0cmFuc2Zvcm1PcCA9IGN1clZhbHVl
LT52YWx1ZSgpLT5hdChmdW5jdGlvbkluZGV4KTsKKyAgICAgICAgICAgIGlmIChpc1RyYW5zZm9y
bVR5cGVOdW1iZXIodHJhbnNmb3JtT3BUeXBlKSkgeworICAgICAgICAgICAgICAgIGZsb2F0IHZh
bHVlOworICAgICAgICAgICAgICAgIGdldFRyYW5zZm9ybUZ1bmN0aW9uVmFsdWUodHJhbnNmb3Jt
T3AsIHRyYW5zZm9ybU9wVHlwZSwgYm94U2l6ZSwgdmFsdWUpOworICAgICAgICAgICAgICAgIGZs
b2F0VmFsdWVzLmFwcGVuZCh2YWx1ZSk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGlzVHJhbnNm
b3JtVHlwZUZsb2F0UG9pbnQzRCh0cmFuc2Zvcm1PcFR5cGUpKSB7CisgICAgICAgICAgICAgICAg
RmxvYXRQb2ludDNEIHZhbHVlOworICAgICAgICAgICAgICAgIGdldFRyYW5zZm9ybUZ1bmN0aW9u
VmFsdWUodHJhbnNmb3JtT3AsIHRyYW5zZm9ybU9wVHlwZSwgYm94U2l6ZSwgdmFsdWUpOworICAg
ICAgICAgICAgICAgIGZsb2F0UG9pbnQzRFZhbHVlcy5hcHBlbmQodmFsdWUpOworICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB2YWx1ZTsK
KyAgICAgICAgICAgICAgICBnZXRUcmFuc2Zvcm1GdW5jdGlvblZhbHVlKHRyYW5zZm9ybU9wLCB0
cmFuc2Zvcm1PcFR5cGUsIGJveFNpemUsIHZhbHVlKTsKKyAgICAgICAgICAgICAgICB0cmFuc2Zv
cm1hdGlvbk1hdHJpeFZhbHVlcy5hcHBlbmQodmFsdWUpOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisKKyAgICAgICAgY29uc3QgVGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0aW9uID0gdGlt
aW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShjdXJWYWx1ZSwgYW5pbWF0aW9uKTsKKyAgICAg
ICAgdGltaW5nRnVuY3Rpb25zLmFwcGVuZCh0aW1pbmdGdW5jdGlvbik7CisgICAgfQorICAgIAor
ICAgIC8vIFdlIHRvc3MgdGhlIGxhc3QgdGZBcnJheSB2YWx1ZSBiZWNhdXNlIGl0IGhhcyB0byBv
bmUgc2hvcnRlciB0aGFuIHRoZSBvdGhlcnMuCisgICAgdGltaW5nRnVuY3Rpb25zLnJlbW92ZUxh
c3QoKTsKKworICAgIGtleWZyYW1lQW5pbS0+c2V0S2V5VGltZXMoa2V5VGltZXMpOworICAgIAor
ICAgIGlmIChpc1RyYW5zZm9ybVR5cGVOdW1iZXIodHJhbnNmb3JtT3BUeXBlKSkKKyAgICAgICAg
a2V5ZnJhbWVBbmltLT5zZXRWYWx1ZXMoZmxvYXRWYWx1ZXMpOworICAgIGVsc2UgaWYgKGlzVHJh
bnNmb3JtVHlwZUZsb2F0UG9pbnQzRCh0cmFuc2Zvcm1PcFR5cGUpKQorICAgICAgICBrZXlmcmFt
ZUFuaW0tPnNldFZhbHVlcyhmbG9hdFBvaW50M0RWYWx1ZXMpOworICAgIGVsc2UKKyAgICAgICAg
a2V5ZnJhbWVBbmltLT5zZXRWYWx1ZXModHJhbnNmb3JtYXRpb25NYXRyaXhWYWx1ZXMpOworICAg
ICAgICAKKyAgICBrZXlmcmFtZUFuaW0tPnNldFRpbWluZ0Z1bmN0aW9ucyh0aW1pbmdGdW5jdGlv
bnMpOworCisjaWYgSEFWRV9NT0RFUk5fUVVBUlRaQ09SRQorICAgIFBsYXRmb3JtQ0FBbmltYXRp
b246OlZhbHVlRnVuY3Rpb25UeXBlIHZhbHVlRnVuY3Rpb24gPSBnZXRWYWx1ZUZ1bmN0aW9uTmFt
ZUZvclRyYW5zZm9ybU9wZXJhdGlvbih0cmFuc2Zvcm1PcFR5cGUpOworICAgIGlmICh2YWx1ZUZ1
bmN0aW9uICE9IFBsYXRmb3JtQ0FBbmltYXRpb246Ok5vVmFsdWVGdW5jdGlvbikKKyAgICAgICAg
a2V5ZnJhbWVBbmltLT5zZXRWYWx1ZUZ1bmN0aW9uKHZhbHVlRnVuY3Rpb24pOworI2VuZGlmCisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpzdXNwZW5kQW5pbWF0
aW9ucyhkb3VibGUgdGltZSkKK3sKKyAgICBkb3VibGUgdCA9IGN1cnJlbnRUaW1lVG9NZWRpYVRp
bWUodGltZSA/IHRpbWUgOiBjdXJyZW50VGltZSgpKTsKKyAgICBwcmltYXJ5TGF5ZXIoKS0+c2V0
U3BlZWQoMCk7CisgICAgcHJpbWFyeUxheWVyKCktPnNldFRpbWVPZmZzZXQodCk7CisKKyAgICAv
LyBTdXNwZW5kIHRoZSBhbmltYXRpb25zIG9uIHRoZSBjbG9uZXMgdG9vLgorICAgIGlmIChMYXll
ck1hcCogbGF5ZXJDbG9uZU1hcCA9IHByaW1hcnlMYXllckNsb25lcygpKSB7CisgICAgICAgIExh
eWVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBsYXllckNsb25lTWFwLT5lbmQoKTsKKyAgICAg
ICAgZm9yIChMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBsYXllckNsb25lTWFwLT5iZWdp
bigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgICAgIGl0LT5zZWNvbmQtPnNldFNwZWVk
KDApOworICAgICAgICAgICAgaXQtPnNlY29uZC0+c2V0VGltZU9mZnNldCh0KTsKKyAgICAgICAg
fQorICAgIH0KK30KKwordm9pZCBHcmFwaGljc0xheWVyQ0E6OnJlc3VtZUFuaW1hdGlvbnMoKQor
eworICAgIHByaW1hcnlMYXllcigpLT5zZXRTcGVlZCgxKTsKKyAgICBwcmltYXJ5TGF5ZXIoKS0+
c2V0VGltZU9mZnNldCgwKTsKKworICAgIC8vIFJlc3VtZSB0aGUgYW5pbWF0aW9ucyBvbiB0aGUg
Y2xvbmVzIHRvby4KKyAgICBpZiAoTGF5ZXJNYXAqIGxheWVyQ2xvbmVNYXAgPSBwcmltYXJ5TGF5
ZXJDbG9uZXMoKSkgeworICAgICAgICBMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbGF5
ZXJDbG9uZU1hcC0+ZW5kKCk7CisgICAgICAgIGZvciAoTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9y
IGl0ID0gbGF5ZXJDbG9uZU1hcC0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAg
ICAgICBpdC0+c2Vjb25kLT5zZXRTcGVlZCgxKTsKKyAgICAgICAgICAgIGl0LT5zZWNvbmQtPnNl
dFRpbWVPZmZzZXQoMCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK1BsYXRmb3JtQ0FMYXllciog
R3JhcGhpY3NMYXllckNBOjpob3N0TGF5ZXJGb3JTdWJsYXllcnMoKSBjb25zdAoreworICAgIHJl
dHVybiBtX3N0cnVjdHVyYWxMYXllci5nZXQoKSA/IG1fc3RydWN0dXJhbExheWVyLmdldCgpIDog
bV9sYXllci5nZXQoKTsgCit9CisKK1BsYXRmb3JtQ0FMYXllciogR3JhcGhpY3NMYXllckNBOjps
YXllckZvclN1cGVybGF5ZXIoKSBjb25zdAoreworICAgIHJldHVybiBtX3N0cnVjdHVyYWxMYXll
ciA/IG1fc3RydWN0dXJhbExheWVyLmdldCgpIDogbV9sYXllci5nZXQoKTsKK30KKworUGxhdGZv
cm1DQUxheWVyKiBHcmFwaGljc0xheWVyQ0E6OmFuaW1hdGVkTGF5ZXIoQW5pbWF0ZWRQcm9wZXJ0
eUlEIHByb3BlcnR5KSBjb25zdAoreworICAgIHJldHVybiAocHJvcGVydHkgPT0gQW5pbWF0ZWRQ
cm9wZXJ0eUJhY2tncm91bmRDb2xvcikgPyBtX2NvbnRlbnRzTGF5ZXIuZ2V0KCkgOiBwcmltYXJ5
TGF5ZXIoKTsKK30KKworR3JhcGhpY3NMYXllckNBOjpMYXllck1hcCogR3JhcGhpY3NMYXllckNB
OjphbmltYXRlZExheWVyQ2xvbmVzKEFuaW1hdGVkUHJvcGVydHlJRCBwcm9wZXJ0eSkgY29uc3QK
K3sKKyAgICByZXR1cm4gKHByb3BlcnR5ID09IEFuaW1hdGVkUHJvcGVydHlCYWNrZ3JvdW5kQ29s
b3IpID8gbV9jb250ZW50c0xheWVyQ2xvbmVzLmdldCgpIDogcHJpbWFyeUxheWVyQ2xvbmVzKCk7
Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXREZWJ1Z0JhY2tncm91bmRDb2xvcihjb25z
dCBDb2xvciYgY29sb3IpCit7ICAgIAorICAgIGlmIChjb2xvci5pc1ZhbGlkKCkpCisgICAgICAg
IG1fbGF5ZXItPnNldEJhY2tncm91bmRDb2xvcihjb2xvcik7CisgICAgZWxzZQorICAgICAgICBt
X2xheWVyLT5zZXRCYWNrZ3JvdW5kQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50KTsKK30KKwordm9p
ZCBHcmFwaGljc0xheWVyQ0E6OnNldERlYnVnQm9yZGVyKGNvbnN0IENvbG9yJiBjb2xvciwgZmxv
YXQgYm9yZGVyV2lkdGgpCit7ICAgIAorICAgIGlmIChjb2xvci5pc1ZhbGlkKCkpIHsKKyAgICAg
ICAgbV9sYXllci0+c2V0Qm9yZGVyQ29sb3IoY29sb3IpOworICAgICAgICBtX2xheWVyLT5zZXRC
b3JkZXJXaWR0aChib3JkZXJXaWR0aCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9sYXllci0+
c2V0Qm9yZGVyQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50KTsKKyAgICAgICAgbV9sYXllci0+c2V0
Qm9yZGVyV2lkdGgoMCk7CisgICAgfQorfQorCitGbG9hdFNpemUgR3JhcGhpY3NMYXllckNBOjpj
b25zdHJhaW5lZFNpemUoKSBjb25zdAoreworICAgIGZsb2F0IHRpbGVDb2x1bW5zID0gY2VpbGYo
bV9zaXplLndpZHRoKCkgLyBrVGlsZWRMYXllclRpbGVTaXplKTsKKyAgICBmbG9hdCB0aWxlUm93
cyA9IGNlaWxmKG1fc2l6ZS5oZWlnaHQoKSAvIGtUaWxlZExheWVyVGlsZVNpemUpOworICAgIGRv
dWJsZSBudW1UaWxlcyA9IHRpbGVDb2x1bW5zICogdGlsZVJvd3M7CisgICAgCisgICAgRmxvYXRT
aXplIGNvbnN0cmFpbmVkU2l6ZSA9IG1fc2l6ZTsKKyAgICBjb25zdCB1bnNpZ25lZCBjTWF4VGls
ZUNvdW50ID0gNTEyOworICAgIHdoaWxlIChudW1UaWxlcyA+IGNNYXhUaWxlQ291bnQpIHsKKyAg
ICAgICAgLy8gQ29uc3RyYWluIHRoZSB3aWRlciBkaW1lbnNpb24uCisgICAgICAgIGlmIChjb25z
dHJhaW5lZFNpemUud2lkdGgoKSA+PSBjb25zdHJhaW5lZFNpemUuaGVpZ2h0KCkpIHsKKyAgICAg
ICAgICAgIHRpbGVDb2x1bW5zID0gbWF4KGZsb29yZihjTWF4VGlsZUNvdW50IC8gdGlsZVJvd3Mp
LCAxLjBmKTsKKyAgICAgICAgICAgIGNvbnN0cmFpbmVkU2l6ZS5zZXRXaWR0aCh0aWxlQ29sdW1u
cyAqIGtUaWxlZExheWVyVGlsZVNpemUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
dGlsZVJvd3MgPSBtYXgoZmxvb3JmKGNNYXhUaWxlQ291bnQgLyB0aWxlQ29sdW1ucyksIDEuMGYp
OworICAgICAgICAgICAgY29uc3RyYWluZWRTaXplLnNldEhlaWdodCh0aWxlUm93cyAqIGtUaWxl
ZExheWVyVGlsZVNpemUpOworICAgICAgICB9CisgICAgICAgIG51bVRpbGVzID0gdGlsZUNvbHVt
bnMgKiB0aWxlUm93czsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIGNvbnN0cmFpbmVkU2l6ZTsK
K30KKworYm9vbCBHcmFwaGljc0xheWVyQ0E6OnJlcXVpcmVzVGlsZWRMYXllcihjb25zdCBGbG9h
dFNpemUmIHNpemUpIGNvbnN0Cit7CisgICAgaWYgKCFtX2RyYXdzQ29udGVudCkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgLy8gRklYTUU6IGNhdGNoIHplcm8tc2l6ZSBoZWlnaHQgb3Ig
d2lkdGggaGVyZSAob3IgZWFybGllcik/CisgICAgcmV0dXJuIHNpemUud2lkdGgoKSA+IGNNYXhQ
aXhlbERpbWVuc2lvbiB8fCBzaXplLmhlaWdodCgpID4gY01heFBpeGVsRGltZW5zaW9uOworfQor
Cit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c3dhcEZyb21PclRvVGlsZWRMYXllcihib29sIHVzZVRp
bGVkTGF5ZXIpCit7CisgICAgaWYgKHVzZVRpbGVkTGF5ZXIgPT0gbV91c2luZ1RpbGVkTGF5ZXIp
CisgICAgICAgIHJldHVybjsKKworICAgIENHU2l6ZSB0aWxlU2l6ZSA9IENHU2l6ZU1ha2Uoa1Rp
bGVkTGF5ZXJUaWxlU2l6ZSwga1RpbGVkTGF5ZXJUaWxlU2l6ZSk7CisKKyAgICBSZWZQdHI8UGxh
dGZvcm1DQUxheWVyPiBvbGRMYXllciA9IG1fbGF5ZXI7CisgICAgCisgICAgbV9sYXllciA9IFBs
YXRmb3JtQ0FMYXllcjo6Y3JlYXRlKHVzZVRpbGVkTGF5ZXIgPyBQbGF0Zm9ybUNBTGF5ZXI6Okxh
eWVyVHlwZVdlYlRpbGVkTGF5ZXIgOiBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVdlYkxheWVy
LCB0aGlzKTsKKworICAgIG1fdXNpbmdUaWxlZExheWVyID0gdXNlVGlsZWRMYXllcjsKKyAgICAK
KyAgICBpZiAodXNlVGlsZWRMYXllcikgeworI2lmICFIQVZFX01PREVSTl9RVUFSVFpDT1JFCisg
ICAgICAgIC8vIFRpbGVkIGxheWVyIGhhcyBpc3N1ZXMgd2l0aCBmbGlwcGVkIGNvb3JkaW5hdGVz
LgorICAgICAgICBzZXRDb250ZW50c09yaWVudGF0aW9uKENvbXBvc2l0aW5nQ29vcmRpbmF0ZXNU
b3BEb3duKTsKKyNlbmRpZgorICAgIH0gZWxzZSB7CisjaWYgIUhBVkVfTU9ERVJOX1FVQVJUWkNP
UkUKKyAgICAgICAgc2V0Q29udGVudHNPcmllbnRhdGlvbihHcmFwaGljc0xheWVyQ0E6OmRlZmF1
bHRDb250ZW50c09yaWVudGF0aW9uKCkpOworI2VuZGlmCisgICAgfQorCisgICAgbV9sYXllci0+
YWRvcHRTdWJsYXllcnMob2xkTGF5ZXIuZ2V0KCkpOworICAgIAorICAgIG9sZExheWVyLT5zdXBl
cmxheWVyKCktPnJlcGxhY2VTdWJsYXllcihvbGRMYXllci5nZXQoKSwgbV9sYXllci5nZXQoKSk7
CisKKyAgICB1cGRhdGVDb250ZW50c1RyYW5zZm9ybSgpOworCisgICAgdXBkYXRlTGF5ZXJQb3Np
dGlvbigpOworICAgIHVwZGF0ZUxheWVyU2l6ZSgpOworICAgIHVwZGF0ZUFuY2hvclBvaW50KCk7
CisgICAgdXBkYXRlVHJhbnNmb3JtKCk7CisgICAgdXBkYXRlQ2hpbGRyZW5UcmFuc2Zvcm0oKTsK
KyAgICB1cGRhdGVNYXNrc1RvQm91bmRzKCk7CisgICAgdXBkYXRlQ29udGVudHNPcGFxdWUoKTsK
KyAgICB1cGRhdGVCYWNrZmFjZVZpc2liaWxpdHkoKTsKKyAgICB1cGRhdGVMYXllckJhY2tncm91
bmRDb2xvcigpOworICAgIAorICAgIHVwZGF0ZU9wYWNpdHlPbkxheWVyKCk7CisgICAgCisjaWZu
ZGVmIE5ERUJVRworICAgIFN0cmluZyBuYW1lID0gU3RyaW5nOjpmb3JtYXQoIkNBTGF5ZXIoJXAp
IEdyYXBoaWNzTGF5ZXIoJXApICIsIG1fbGF5ZXIuZ2V0KCksIHRoaXMpICsgbV9uYW1lOworICAg
IG1fbGF5ZXItPnNldE5hbWUobmFtZSk7CisjZW5kaWYKKworICAgIC8vIG1vdmUgb3ZlciBhbmlt
YXRpb25zCisgICAgbW92ZU9yQ29weUFuaW1hdGlvbnNGb3JQcm9wZXJ0eShNb3ZlLCBBbmltYXRl
ZFByb3BlcnR5V2Via2l0VHJhbnNmb3JtLCBvbGRMYXllci5nZXQoKSwgbV9sYXllci5nZXQoKSk7
CisgICAgbW92ZU9yQ29weUFuaW1hdGlvbnNGb3JQcm9wZXJ0eShNb3ZlLCBBbmltYXRlZFByb3Bl
cnR5T3BhY2l0eSwgb2xkTGF5ZXIuZ2V0KCksIG1fbGF5ZXIuZ2V0KCkpOworICAgIG1vdmVPckNv
cHlBbmltYXRpb25zRm9yUHJvcGVydHkoTW92ZSwgQW5pbWF0ZWRQcm9wZXJ0eUJhY2tncm91bmRD
b2xvciwgb2xkTGF5ZXIuZ2V0KCksIG1fbGF5ZXIuZ2V0KCkpOworICAgIAorICAgIC8vIG5lZWQg
dG8gdGVsbCBuZXcgbGF5ZXIgdG8gZHJhdyBpdHNlbGYKKyAgICBzZXROZWVkc0Rpc3BsYXkoKTsK
KyAgICAKKyAgICB1cGRhdGVEZWJ1Z0luZGljYXRvcnMoKTsKK30KKworR3JhcGhpY3NMYXllcjo6
Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uIEdyYXBoaWNzTGF5ZXJDQTo6ZGVmYXVs
dENvbnRlbnRzT3JpZW50YXRpb24oKSBjb25zdAoreworI2lmICFIQVZFX01PREVSTl9RVUFSVFpD
T1JFCisgICAgLy8gT2xkZXIgUXVhcnR6Q29yZSBkb2VzIG5vdCBzdXBwb3J0IC1nZW9tZXRyeUZs
aXBwZWQsIHNvIHdlIG1hbnVhbGx5IGZsaXAgdGhlIHJvb3QKKyAgICAvLyBsYXllciBnZW9tZXRy
eSwgYW5kIHRoZW4gZmxpcCB0aGUgY29udGVudHMgb2YgZWFjaCBsYXllciBiYWNrIHNvIHRoYXQg
dGhlIENUTSBmb3IgQ0cKKyAgICAvLyBpcyB1bmZsaXBwZWQsIGFsbG93aW5nIGl0IHRvIGRvIHRo
ZSBjb3JyZWN0IGZvbnQgYXV0by1oaW50aW5nLgorICAgIHJldHVybiBDb21wb3NpdGluZ0Nvb3Jk
aW5hdGVzQm90dG9tVXA7CisjZWxzZQorICAgIHJldHVybiBDb21wb3NpdGluZ0Nvb3JkaW5hdGVz
VG9wRG93bjsKKyNlbmRpZgorfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlQ29udGVu
dHNUcmFuc2Zvcm0oKQoreworI2lmICFIQVZFX01PREVSTl9RVUFSVFpDT1JFCisgICAgaWYgKGNv
bnRlbnRzT3JpZW50YXRpb24oKSA9PSBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzQm90dG9tVXApIHsK
KyAgICAgICAgQ0dBZmZpbmVUcmFuc2Zvcm0gY29udGVudHNUcmFuc2Zvcm0gPSBDR0FmZmluZVRy
YW5zZm9ybU1ha2VTY2FsZSgxLCAtMSk7CisgICAgICAgIGNvbnRlbnRzVHJhbnNmb3JtID0gQ0dB
ZmZpbmVUcmFuc2Zvcm1UcmFuc2xhdGUoY29udGVudHNUcmFuc2Zvcm0sIDAsIC1tX2xheWVyLT5i
b3VuZHMoKS5zaXplKCkuaGVpZ2h0KCkpOworICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0
cmFuc2Zvcm0zRChjb250ZW50c1RyYW5zZm9ybS5hLCBjb250ZW50c1RyYW5zZm9ybS5iLCBjb250
ZW50c1RyYW5zZm9ybS5jLCBjb250ZW50c1RyYW5zZm9ybS5kLCBjb250ZW50c1RyYW5zZm9ybS50
eCwgY29udGVudHNUcmFuc2Zvcm0udHkpOworICAgICAgICBtX2xheWVyLT5zZXRDb250ZW50c1Ry
YW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCh0cmFuc2Zvcm0zRCkpOworICAgIH0KKyNlbmRp
ZgorfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0dXBDb250ZW50c0xheWVyKFBsYXRmb3Jt
Q0FMYXllciogY29udGVudHNMYXllcikKK3sKKyAgICAvLyBUdXJuIG9mZiBpbXBsaWNpdCBhbmlt
YXRpb25zIG9uIHRoZSBpbm5lciBsYXllci4KKyAgICBjb250ZW50c0xheWVyLT5zZXRNYXNrc1Rv
Qm91bmRzKHRydWUpOworCisgICAgaWYgKGRlZmF1bHRDb250ZW50c09yaWVudGF0aW9uKCkgPT0g
Q29tcG9zaXRpbmdDb29yZGluYXRlc0JvdHRvbVVwKSB7CisgICAgICAgIFRyYW5zZm9ybWF0aW9u
TWF0cml4IGZsaXBwZXIoCisgICAgICAgICAgICAxLjBmLCAwLjBmLCAwLjBmLCAwLjBmLAorICAg
ICAgICAgICAgMC4wZiwgLTEuMGYsIDAuMGYsIDAuMGYsCisgICAgICAgICAgICAwLjBmLCAwLjBm
LCAxLjBmLCAwLjBmLAorICAgICAgICAgICAgMC4wZiwgMC4wZiwgMC4wZiwgMS4wZik7CisgICAg
ICAgIGNvbnRlbnRzTGF5ZXItPnNldFRyYW5zZm9ybShmbGlwcGVyKTsKKyAgICAgICAgY29udGVu
dHNMYXllci0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludDNEKDAsIDEsIDApKTsKKyAgICB9IGVs
c2UKKyAgICAgICAgY29udGVudHNMYXllci0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludDNEKCkp
OworCisgICAgaWYgKHNob3dEZWJ1Z0JvcmRlcnMoKSkgeworICAgICAgICBjb250ZW50c0xheWVy
LT5zZXRCb3JkZXJDb2xvcihDb2xvcigwLCAwLCAxMjgsIDE4MCkpOworICAgICAgICBjb250ZW50
c0xheWVyLT5zZXRCb3JkZXJXaWR0aCgxLjBmKTsKKyAgICB9Cit9CisKK1Bhc3NSZWZQdHI8UGxh
dGZvcm1DQUxheWVyPiBHcmFwaGljc0xheWVyQ0E6OmZpbmRPck1ha2VDbG9uZShDbG9uZUlEIGNs
b25lSUQsIFBsYXRmb3JtQ0FMYXllciAqc291cmNlTGF5ZXIsIExheWVyTWFwKiBjbG9uZXMsIENs
b25lTGV2ZWwgY2xvbmVMZXZlbCkKK3sKKyAgICBpZiAoIXNvdXJjZUxheWVyKQorICAgICAgICBy
ZXR1cm4gMDsKKworICAgIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IHJlc3VsdExheWVyOworCisg
ICAgLy8gQWRkIHdpdGggYSBkdW1teSB2YWx1ZSB0byBnZXQgYW4gaXRlcmF0b3IgZm9yIHRoZSBp
bnNlcnRpb24gcG9zaXRpb24sIGFuZCBhIGJvb2xlYW4gdGhhdCB0ZWxscworICAgIC8vIHVzIHdo
ZXRoZXIgdGhlcmUncyBhbiBpdGVtIHRoZXJlLiBUaGlzIHRlY2huaXF1ZSBhdm9pZHMgdHdvIGhh
c2ggbG9va3Vwcy4KKyAgICBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBkdW1teTsKKyAgICBwYWly
PExheWVyTWFwOjppdGVyYXRvciwgYm9vbD4gYWRkUmVzdWx0ID0gY2xvbmVzLT5hZGQoY2xvbmVJ
RCwgZHVtbXkpOworICAgIGlmICghYWRkUmVzdWx0LnNlY29uZCkgeworICAgICAgICAvLyBWYWx1
ZSB3YXMgbm90IGFkZGVkLCBzbyBpdCBleGlzdHMgYWxyZWFkeS4KKyAgICAgICAgcmVzdWx0TGF5
ZXIgPSBhZGRSZXN1bHQuZmlyc3QtPnNlY29uZC5nZXQoKTsKKyAgICB9IGVsc2UgeworICAgICAg
ICByZXN1bHRMYXllciA9IGNsb25lTGF5ZXIoc291cmNlTGF5ZXIsIGNsb25lTGV2ZWwpOworI2lm
bmRlZiBOREVCVUcKKyAgICAgICAgcmVzdWx0TGF5ZXItPnNldE5hbWUoU3RyaW5nOjpmb3JtYXQo
IkNsb25lICVkIG9mIGxheWVyICVwIiwgY2xvbmVJRFswVV0sIHNvdXJjZUxheWVyKSk7CisjZW5k
aWYKKyAgICAgICAgYWRkUmVzdWx0LmZpcnN0LT5zZWNvbmQgPSByZXN1bHRMYXllcjsKKyAgICB9
CisKKyAgICByZXR1cm4gcmVzdWx0TGF5ZXI7Cit9ICAgCisKK3ZvaWQgR3JhcGhpY3NMYXllckNB
OjplbnN1cmVDbG9uZUxheWVycyhDbG9uZUlEIGNsb25lSUQsIFJlZlB0cjxQbGF0Zm9ybUNBTGF5
ZXI+JiBwcmltYXJ5TGF5ZXIsIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+JiBzdHJ1Y3R1cmFsTGF5
ZXIsIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+JiBjb250ZW50c0xheWVyLCBDbG9uZUxldmVsIGNs
b25lTGV2ZWwpCit7CisgICAgc3RydWN0dXJhbExheWVyID0gbmlsOworICAgIGNvbnRlbnRzTGF5
ZXIgPSBuaWw7CisKKyAgICBpZiAoIW1fbGF5ZXJDbG9uZXMpCisgICAgICAgIG1fbGF5ZXJDbG9u
ZXMgPSBuZXcgTGF5ZXJNYXA7CisKKyAgICBpZiAoIW1fc3RydWN0dXJhbExheWVyQ2xvbmVzICYm
IG1fc3RydWN0dXJhbExheWVyKQorICAgICAgICBtX3N0cnVjdHVyYWxMYXllckNsb25lcyA9IG5l
dyBMYXllck1hcDsKKworICAgIGlmICghbV9jb250ZW50c0xheWVyQ2xvbmVzICYmIG1fY29udGVu
dHNMYXllcikKKyAgICAgICAgbV9jb250ZW50c0xheWVyQ2xvbmVzID0gbmV3IExheWVyTWFwOwor
CisgICAgcHJpbWFyeUxheWVyID0gZmluZE9yTWFrZUNsb25lKGNsb25lSUQsIG1fbGF5ZXIuZ2V0
KCksIG1fbGF5ZXJDbG9uZXMuZ2V0KCksIGNsb25lTGV2ZWwpOworICAgIHN0cnVjdHVyYWxMYXll
ciA9IGZpbmRPck1ha2VDbG9uZShjbG9uZUlELCBtX3N0cnVjdHVyYWxMYXllci5nZXQoKSwgbV9z
dHJ1Y3R1cmFsTGF5ZXJDbG9uZXMuZ2V0KCksIGNsb25lTGV2ZWwpOworICAgIGNvbnRlbnRzTGF5
ZXIgPSBmaW5kT3JNYWtlQ2xvbmUoY2xvbmVJRCwgbV9jb250ZW50c0xheWVyLmdldCgpLCBtX2Nv
bnRlbnRzTGF5ZXJDbG9uZXMuZ2V0KCksIGNsb25lTGV2ZWwpOworfQorCit2b2lkIEdyYXBoaWNz
TGF5ZXJDQTo6cmVtb3ZlQ2xvbmVMYXllcnMoKQoreworICAgIG1fbGF5ZXJDbG9uZXMgPSAwOwor
ICAgIG1fc3RydWN0dXJhbExheWVyQ2xvbmVzID0gMDsKKyAgICBtX2NvbnRlbnRzTGF5ZXJDbG9u
ZXMgPSAwOworfQorCitGbG9hdFBvaW50IEdyYXBoaWNzTGF5ZXJDQTo6cG9zaXRpb25Gb3JDbG9u
ZVJvb3RMYXllcigpIGNvbnN0Cit7CisgICAgLy8gVGhpcyBjYW4gZ2V0IGNhbGxlZCBkdXJpbmcg
YSBzeW5jIHdoZW4gd2UndmUganVzdCByZW1vdmVkIHRoZSBtX3JlcGxpY2FMYXllci4KKyAgICBp
ZiAoIW1fcmVwbGljYUxheWVyKQorICAgICAgICByZXR1cm4gRmxvYXRQb2ludCgpOworCisgICAg
RmxvYXRQb2ludCByZXBsaWNhUG9zaXRpb24gPSBtX3JlcGxpY2FMYXllci0+cmVwbGljYXRlZExh
eWVyUG9zaXRpb24oKTsKKyAgICByZXR1cm4gRmxvYXRQb2ludChyZXBsaWNhUG9zaXRpb24ueCgp
ICsgbV9hbmNob3JQb2ludC54KCkgKiBtX3NpemUud2lkdGgoKSwKKyAgICAgICAgICAgICAgICAg
ICAgICByZXBsaWNhUG9zaXRpb24ueSgpICsgbV9hbmNob3JQb2ludC55KCkgKiBtX3NpemUuaGVp
Z2h0KCkpOworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6cHJvcGFnYXRlTGF5ZXJDaGFuZ2VU
b1JlcGxpY2FzKCkKK3sKKyAgICBmb3IgKEdyYXBoaWNzTGF5ZXIqIGN1cnJMYXllciA9IHRoaXM7
IGN1cnJMYXllcjsgY3VyckxheWVyID0gY3VyckxheWVyLT5wYXJlbnQoKSkgeworICAgICAgICBH
cmFwaGljc0xheWVyQ0EqIGN1cnJMYXllckNBID0gc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllckNB
Kj4oY3VyckxheWVyKTsKKyAgICAgICAgaWYgKCFjdXJyTGF5ZXJDQS0+aGFzQ2xvbmVMYXllcnMo
KSkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGlmIChjdXJyTGF5ZXJDQS0+cmVwbGlj
YUxheWVyKCkpCisgICAgICAgICAgICBzdGF0aWNfY2FzdDxHcmFwaGljc0xheWVyQ0EqPihjdXJy
TGF5ZXJDQS0+cmVwbGljYUxheWVyKCkpLT5ub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoUmVwbGlj
YXRlZExheWVyQ2hhbmdlZCk7CisgICAgfQorfQorCitQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXll
cj4gR3JhcGhpY3NMYXllckNBOjpmZXRjaENsb25lTGF5ZXJzKEdyYXBoaWNzTGF5ZXIqIHJlcGxp
Y2FSb290LCBSZXBsaWNhU3RhdGUmIHJlcGxpY2FTdGF0ZSwgQ2xvbmVMZXZlbCBjbG9uZUxldmVs
KQoreworICAgIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IHByaW1hcnlMYXllcjsKKyAgICBSZWZQ
dHI8UGxhdGZvcm1DQUxheWVyPiBzdHJ1Y3R1cmFsTGF5ZXI7CisgICAgUmVmUHRyPFBsYXRmb3Jt
Q0FMYXllcj4gY29udGVudHNMYXllcjsKKyAgICBlbnN1cmVDbG9uZUxheWVycyhyZXBsaWNhU3Rh
dGUuY2xvbmVJRCgpLCBwcmltYXJ5TGF5ZXIsIHN0cnVjdHVyYWxMYXllciwgY29udGVudHNMYXll
ciwgY2xvbmVMZXZlbCk7CisKKyAgICBpZiAobV9tYXNrTGF5ZXIpIHsKKyAgICAgICAgUmVmUHRy
PFBsYXRmb3JtQ0FMYXllcj4gbWFza0Nsb25lID0gc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllckNB
Kj4obV9tYXNrTGF5ZXIpLT5mZXRjaENsb25lTGF5ZXJzKHJlcGxpY2FSb290LCByZXBsaWNhU3Rh
dGUsIEludGVybWVkaWF0ZUNsb25lTGV2ZWwpOworICAgICAgICBwcmltYXJ5TGF5ZXItPnNldE1h
c2sobWFza0Nsb25lLmdldCgpKTsKKyAgICB9CisKKyAgICBpZiAobV9yZXBsaWNhdGVkTGF5ZXIp
IHsKKyAgICAgICAgLy8gV2UgYXJlIGEgcmVwbGljYSBiZWluZyBhc2tlZCBmb3IgY2xvbmVzIG9m
IG91ciBsYXllcnMuCisgICAgICAgIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IHJlcGxpY2FSb290
ID0gcmVwbGljYXRlZExheWVyUm9vdChyZXBsaWNhU3RhdGUpOworICAgICAgICBpZiAoIXJlcGxp
Y2FSb290KQorICAgICAgICAgICAgcmV0dXJuIG5pbDsKKworICAgICAgICBpZiAoc3RydWN0dXJh
bExheWVyKSB7CisgICAgICAgICAgICBzdHJ1Y3R1cmFsTGF5ZXItPmluc2VydFN1YmxheWVyKHJl
cGxpY2FSb290LmdldCgpLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBzdHJ1Y3R1cmFsTGF5ZXI7
CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHByaW1hcnlMYXllci0+aW5zZXJ0U3VibGF5
ZXIocmVwbGljYVJvb3QuZ2V0KCksIDApOworICAgICAgICByZXR1cm4gcHJpbWFyeUxheWVyOwor
ICAgIH0KKworICAgIGNvbnN0IFZlY3RvcjxHcmFwaGljc0xheWVyKj4mIGNoaWxkTGF5ZXJzID0g
Y2hpbGRyZW4oKTsKKyAgICBWZWN0b3I8UmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gPiBjbG9uYWxT
dWJsYXllcnM7CisKKyAgICBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiByZXBsaWNhTGF5ZXI7Cisg
ICAgCisgICAgaWYgKG1fcmVwbGljYUxheWVyICYmIG1fcmVwbGljYUxheWVyICE9IHJlcGxpY2FS
b290KSB7CisgICAgICAgIC8vIFdlIGhhdmUgbmVzdGVkIHJlcGxpY2FzLiBBc2sgdGhlIHJlcGxp
Y2EgbGF5ZXIgZm9yIGEgY2xvbmUgb2YgaXRzIGNvbnRlbnRzLgorICAgICAgICByZXBsaWNhU3Rh
dGUuc2V0QnJhbmNoVHlwZShSZXBsaWNhU3RhdGU6OlJlcGxpY2FCcmFuY2gpOworICAgICAgICBy
ZXBsaWNhTGF5ZXIgPSBzdGF0aWNfY2FzdDxHcmFwaGljc0xheWVyQ0EqPihtX3JlcGxpY2FMYXll
ciktPmZldGNoQ2xvbmVMYXllcnMocmVwbGljYVJvb3QsIHJlcGxpY2FTdGF0ZSwgUm9vdENsb25l
TGV2ZWwpOworICAgICAgICByZXBsaWNhU3RhdGUuc2V0QnJhbmNoVHlwZShSZXBsaWNhU3RhdGU6
OkNoaWxkQnJhbmNoKTsKKyAgICB9CisgICAgCisgICAgaWYgKHJlcGxpY2FMYXllciB8fCBzdHJ1
Y3R1cmFsTGF5ZXIgfHwgY29udGVudHNMYXllciB8fCBjaGlsZExheWVycy5zaXplKCkgPiAwKSB7
CisgICAgICAgIGlmIChzdHJ1Y3R1cmFsTGF5ZXIpIHsKKyAgICAgICAgICAgIC8vIFJlcGxpY2Fz
IHJlbmRlciBiZWhpbmQgdGhlIGFjdHVhbCBsYXllciBjb250ZW50LgorICAgICAgICAgICAgaWYg
KHJlcGxpY2FMYXllcikKKyAgICAgICAgICAgICAgICBjbG9uYWxTdWJsYXllcnMuYXBwZW5kKHJl
cGxpY2FMYXllcik7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBBZGQgdGhlIHBy
aW1hcnkgbGF5ZXIgbmV4dC4gRXZlbiBpZiB3ZSBoYXZlIG5lZ2F0aXZlIHotb3JkZXIgY2hpbGRy
ZW4sIHRoZSBwcmltYXJ5IGxheWVyIGFsd2F5cyBjb21lcyBiZWhpbmQuCisgICAgICAgICAgICBj
bG9uYWxTdWJsYXllcnMuYXBwZW5kKHByaW1hcnlMYXllcik7CisgICAgICAgIH0gZWxzZSBpZiAo
Y29udGVudHNMYXllcikgeworICAgICAgICAgICAgLy8gRklYTUU6IGFkZCB0aGUgY29udGVudHMg
bGF5ZXIgaW4gdGhlIGNvcnJlY3Qgb3JkZXIgd2l0aCBuZWdhdGl2ZSB6LW9yZGVyIGNoaWxkcmVu
LgorICAgICAgICAgICAgLy8gVGhpcyBkb2VzIG5vdCBjYXVzZSB2aXNpYmxlIHJlbmRlcmluZyBp
c3N1ZXMgYmVjYXVzZSBjdXJyZW50bHkgY29udGVudHMgbGF5ZXJzIGFyZSBvbmx5IHVzZWQKKyAg
ICAgICAgICAgIC8vIGZvciByZXBsYWNlZCBlbGVtZW50cyB0aGF0IGRvbid0IGhhdmUgY2hpbGRy
ZW4uCisgICAgICAgICAgICBjbG9uYWxTdWJsYXllcnMuYXBwZW5kKGNvbnRlbnRzTGF5ZXIpOwor
ICAgICAgICB9CisgICAgICAgIAorICAgICAgICByZXBsaWNhU3RhdGUucHVzaChSZXBsaWNhU3Rh
dGU6OkNoaWxkQnJhbmNoKTsKKworICAgICAgICBzaXplX3QgbnVtQ2hpbGRyZW4gPSBjaGlsZExh
eWVycy5zaXplKCk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtQ2hpbGRyZW47
ICsraSkgeworICAgICAgICAgICAgR3JhcGhpY3NMYXllckNBKiBjdXJDaGlsZCA9IHN0YXRpY19j
YXN0PEdyYXBoaWNzTGF5ZXJDQSo+KGNoaWxkTGF5ZXJzW2ldKTsKKworICAgICAgICAgICAgUmVm
UHRyPFBsYXRmb3JtQ0FMYXllcj4gY2hpbGRMYXllciA9IGN1ckNoaWxkLT5mZXRjaENsb25lTGF5
ZXJzKHJlcGxpY2FSb290LCByZXBsaWNhU3RhdGUsIEludGVybWVkaWF0ZUNsb25lTGV2ZWwpOwor
ICAgICAgICAgICAgaWYgKGNoaWxkTGF5ZXIpCisgICAgICAgICAgICAgICAgY2xvbmFsU3VibGF5
ZXJzLmFwcGVuZChjaGlsZExheWVyKTsKKyAgICAgICAgfQorCisgICAgICAgIHJlcGxpY2FTdGF0
ZS5wb3AoKTsKKworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNsb25hbFN1YmxheWVy
cy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIGNsb25hbFN1YmxheWVyc1tpXS0+cmVtb3ZlRnJv
bVN1cGVybGF5ZXIoKTsKKyAgICB9CisgICAgCisgICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4g
cmVzdWx0OworICAgIGlmIChzdHJ1Y3R1cmFsTGF5ZXIpIHsKKyAgICAgICAgc3RydWN0dXJhbExh
eWVyLT5zZXRTdWJsYXllcnMoY2xvbmFsU3VibGF5ZXJzKTsKKworICAgICAgICBpZiAoY29udGVu
dHNMYXllcikgeworICAgICAgICAgICAgLy8gSWYgd2UgaGF2ZSBhIHRyYW5zZm9ybSBsYXllciwg
dGhlbiB0aGUgY29udGVudHMgbGF5ZXIgaXMgcGFyZW50ZWQgaW4gdGhlIAorICAgICAgICAgICAg
Ly8gcHJpbWFyeSBsYXllciAod2hpY2ggaXMgaXRzZWxmIGEgY2hpbGQgb2YgdGhlIHRyYW5zZm9y
bSBsYXllcikuCisgICAgICAgICAgICBwcmltYXJ5TGF5ZXItPnJlbW92ZUFsbFN1YmxheWVycygp
OworICAgICAgICAgICAgcHJpbWFyeUxheWVyLT5hcHBlbmRTdWJsYXllcihjb250ZW50c0xheWVy
LmdldCgpKTsKKyAgICAgICAgfQorCisgICAgICAgIHJlc3VsdCA9IHN0cnVjdHVyYWxMYXllcjsK
KyAgICB9IGVsc2UgeworICAgICAgICBwcmltYXJ5TGF5ZXItPnNldFN1YmxheWVycyhjbG9uYWxT
dWJsYXllcnMpOworICAgICAgICByZXN1bHQgPSBwcmltYXJ5TGF5ZXI7CisgICAgfQorCisgICAg
cmV0dXJuIHJlc3VsdDsKK30KKworUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IEdyYXBoaWNz
TGF5ZXJDQTo6Y2xvbmVMYXllcihQbGF0Zm9ybUNBTGF5ZXIgKmxheWVyLCBDbG9uZUxldmVsIGNs
b25lTGV2ZWwpCit7CisgICAgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGUgbGF5ZXJUeXBlID0g
KGxheWVyLT5sYXllclR5cGUoKSA9PSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVRyYW5zZm9y
bUxheWVyKSA/IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVUcmFuc2Zvcm1MYXllciA6IFBsYXRmb3JtQ0FM
YXllcjo6TGF5ZXJUeXBlTGF5ZXI7CisgICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gbmV3TGF5
ZXIgPSBQbGF0Zm9ybUNBTGF5ZXI6OmNyZWF0ZShsYXllclR5cGUsIHRoaXMpOworICAgIAorICAg
IG5ld0xheWVyLT5zZXRQb3NpdGlvbihsYXllci0+cG9zaXRpb24oKSk7CisgICAgbmV3TGF5ZXIt
PnNldEJvdW5kcyhsYXllci0+Ym91bmRzKCkpOworICAgIG5ld0xheWVyLT5zZXRBbmNob3JQb2lu
dChsYXllci0+YW5jaG9yUG9pbnQoKSk7CisgICAgbmV3TGF5ZXItPnNldFRyYW5zZm9ybShsYXll
ci0+dHJhbnNmb3JtKCkpOworICAgIG5ld0xheWVyLT5zZXRTdWJsYXllclRyYW5zZm9ybShsYXll
ci0+c3VibGF5ZXJUcmFuc2Zvcm0oKSk7CisgICAgbmV3TGF5ZXItPnNldENvbnRlbnRzKGxheWVy
LT5jb250ZW50cygpKTsKKyAgICBuZXdMYXllci0+c2V0TWFza3NUb0JvdW5kcyhsYXllci0+bWFz
a3NUb0JvdW5kcygpKTsKKyAgICBuZXdMYXllci0+c2V0RG91YmxlU2lkZWQobGF5ZXItPmlzRG91
YmxlU2lkZWQoKSk7CisgICAgbmV3TGF5ZXItPnNldE9wYXF1ZShsYXllci0+aXNPcGFxdWUoKSk7
CisgICAgbmV3TGF5ZXItPnNldEJhY2tncm91bmRDb2xvcihsYXllci0+YmFja2dyb3VuZENvbG9y
KCkpOworCisgICAgaWYgKGNsb25lTGV2ZWwgPT0gSW50ZXJtZWRpYXRlQ2xvbmVMZXZlbCkgewor
ICAgICAgICBuZXdMYXllci0+c2V0T3BhY2l0eShsYXllci0+b3BhY2l0eSgpKTsKKyAgICAgICAg
bW92ZU9yQ29weUFuaW1hdGlvbnNGb3JQcm9wZXJ0eShDb3B5LCBBbmltYXRlZFByb3BlcnR5V2Vi
a2l0VHJhbnNmb3JtLCBsYXllciwgbmV3TGF5ZXIuZ2V0KCkpOworICAgICAgICBtb3ZlT3JDb3B5
QW5pbWF0aW9uc0ZvclByb3BlcnR5KENvcHksIEFuaW1hdGVkUHJvcGVydHlPcGFjaXR5LCBsYXll
ciwgbmV3TGF5ZXIuZ2V0KCkpOworICAgIH0KKyAgICAKKyAgICBpZiAoc2hvd0RlYnVnQm9yZGVy
cygpKSB7CisgICAgICAgIG5ld0xheWVyLT5zZXRCb3JkZXJDb2xvcihDb2xvcigyNTUsIDEyMiwg
MjUxKSk7CisgICAgICAgIG5ld0xheWVyLT5zZXRCb3JkZXJXaWR0aCgyKTsKKyAgICB9CisgICAg
CisgICAgcmV0dXJuIG5ld0xheWVyOworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0T3Bh
Y2l0eUludGVybmFsKGZsb2F0IGFjY3VtdWxhdGVkT3BhY2l0eSkKK3sKKyAgICBMYXllck1hcCog
bGF5ZXJDbG9uZU1hcCA9IDA7CisgICAgCisgICAgaWYgKHByZXNlcnZlczNEKCkpIHsKKyAgICAg
ICAgbV9sYXllci0+c2V0T3BhY2l0eShhY2N1bXVsYXRlZE9wYWNpdHkpOworICAgICAgICBsYXll
ckNsb25lTWFwID0gbV9sYXllckNsb25lcy5nZXQoKTsKKyAgICB9IGVsc2UgeworICAgICAgICBw
cmltYXJ5TGF5ZXIoKS0+c2V0T3BhY2l0eShhY2N1bXVsYXRlZE9wYWNpdHkpOworICAgICAgICBs
YXllckNsb25lTWFwID0gcHJpbWFyeUxheWVyQ2xvbmVzKCk7CisgICAgfQorCisgICAgaWYgKGxh
eWVyQ2xvbmVNYXApIHsKKyAgICAgICAgTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGxh
eWVyQ2xvbmVNYXAtPmVuZCgpOworICAgICAgICBmb3IgKExheWVyTWFwOjpjb25zdF9pdGVyYXRv
ciBpdCA9IGxheWVyQ2xvbmVNYXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAg
ICAgICAgaWYgKG1fcmVwbGljYUxheWVyICYmIGlzUmVwbGljYXRlZFJvb3RDbG9uZShpdC0+Zmly
c3QpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgaXQtPnNlY29uZC0+
c2V0T3BhY2l0eShtX29wYWNpdHkpOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIEdyYXBo
aWNzTGF5ZXJDQTo6dXBkYXRlT3BhY2l0eU9uTGF5ZXIoKQoreworI2lmICFIQVZFX01PREVSTl9R
VUFSVFpDT1JFCisgICAgLy8gRGlzdHJpYnV0ZSBvcGFjaXR5IGVpdGhlciB0byBvdXIgb3duIGxh
eWVyIG9yIHRvIG91ciBjaGlsZHJlbi4gV2UgcGFzcyBpbiB0aGUgCisgICAgLy8gY29udHJpYnV0
aW9uIGZyb20gb3VyIHBhcmVudChzKS4KKyAgICBkaXN0cmlidXRlT3BhY2l0eShwYXJlbnQoKSA/
IHBhcmVudCgpLT5hY2N1bXVsYXRlZE9wYWNpdHkoKSA6IDEpOworI2Vsc2UKKyAgICBwcmltYXJ5
TGF5ZXIoKS0+c2V0T3BhY2l0eShtX29wYWNpdHkpOworCisgICAgaWYgKExheWVyTWFwKiBsYXll
ckNsb25lTWFwID0gcHJpbWFyeUxheWVyQ2xvbmVzKCkpIHsKKyAgICAgICAgTGF5ZXJNYXA6OmNv
bnN0X2l0ZXJhdG9yIGVuZCA9IGxheWVyQ2xvbmVNYXAtPmVuZCgpOworICAgICAgICBmb3IgKExh
eWVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGxheWVyQ2xvbmVNYXAtPmJlZ2luKCk7IGl0ICE9
IGVuZDsgKytpdCkgeworICAgICAgICAgICAgaWYgKG1fcmVwbGljYUxheWVyICYmIGlzUmVwbGlj
YXRlZFJvb3RDbG9uZShpdC0+Zmlyc3QpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisg
ICAgICAgICAgICBpdC0+c2Vjb25kLT5zZXRPcGFjaXR5KG1fb3BhY2l0eSk7CisgICAgICAgIH0K
KyAgICAgICAgCisgICAgfQorI2VuZGlmCit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpub3Rl
U3VibGF5ZXJzQ2hhbmdlZCgpCit7CisgICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKENoaWxk
cmVuQ2hhbmdlZCk7CisgICAgcHJvcGFnYXRlTGF5ZXJDaGFuZ2VUb1JlcGxpY2FzKCk7Cit9CisK
K3ZvaWQgR3JhcGhpY3NMYXllckNBOjpub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoTGF5ZXJDaGFu
Z2VGbGFncyBmbGFncykKK3sKKyAgICBpZiAoIW1fdW5jb21taXR0ZWRDaGFuZ2VzICYmIG1fY2xp
ZW50KQorICAgICAgICBtX2NsaWVudC0+bm90aWZ5U3luY1JlcXVpcmVkKHRoaXMpOworCisgICAg
bV91bmNvbW1pdHRlZENoYW5nZXMgfD0gZmxhZ3M7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKSW5kZXg6IFdlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaAkocmV2aXNpb24g
NzMyMzYpCShmcm9tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNB
Lmg6NzMyMzYpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJD
QS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzgzIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEdyYXBoaWNzTGF5
ZXJDQV9oCisjZGVmaW5lIEdyYXBoaWNzTGF5ZXJDQV9oCisKKyNpZiBVU0UoQUNDRUxFUkFURURf
Q09NUE9TSVRJTkcpCisKKyNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgiCisjaW5jbHVkZSAiSW1h
Z2UuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUNBQW5pbWF0aW9uLmgiCisjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5Q
dHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgUGxhdGZvcm1DQUxheWVyOworCitjbGFzcyBHcmFwaGljc0xheWVyQ0Eg
OiBwdWJsaWMgR3JhcGhpY3NMYXllciB7CitwdWJsaWM6CisgICAgLy8gVGhlIHdpZHRoIGFuZCBo
ZWlnaHQgb2YgYSBzaW5nbGUgdGlsZSBpbiBhIHRpbGVkIGxheWVyLiBTaG91bGQgYmUgbGFyZ2Ug
ZW5vdWdoIHRvCisgICAgLy8gYXZvaWQgbG90cyBvZiBzbWFsbCB0aWxlcyAoYW5kIHRoZXJlZm9y
ZSBsb3RzIG9mIGRyYXdpbmcgY2FsbGJhY2tzKSwgYnV0IHNtYWxsIGVub3VnaAorICAgIC8vIHRv
IGtlZXAgdGhlIG92ZXJhbGwgdGlsZSBjb3N0IGxvdy4KKyAgICBzdGF0aWMgY29uc3QgaW50IGtU
aWxlZExheWVyVGlsZVNpemUgPSA1MTI7CisKKyAgICBHcmFwaGljc0xheWVyQ0EoR3JhcGhpY3NM
YXllckNsaWVudCopOworICAgIHZpcnR1YWwgfkdyYXBoaWNzTGF5ZXJDQSgpOworICAgIAorICAg
IHZpcnR1YWwgdm9pZCBhbmltYXRpb25TdGFydGVkKENGVGltZUludGVydmFsIGJlZ2luVGltZSk7
CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0TmFtZShjb25zdCBTdHJpbmcmKTsKKworICAgIHZpcnR1
YWwgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0OworCisgICAgdmlydHVhbCBi
b29sIHNldENoaWxkcmVuKGNvbnN0IFZlY3RvcjxHcmFwaGljc0xheWVyKj4mKTsKKyAgICB2aXJ0
dWFsIHZvaWQgYWRkQ2hpbGQoR3JhcGhpY3NMYXllciopOworICAgIHZpcnR1YWwgdm9pZCBhZGRD
aGlsZEF0SW5kZXgoR3JhcGhpY3NMYXllciosIGludCBpbmRleCk7CisgICAgdmlydHVhbCB2b2lk
IGFkZENoaWxkQWJvdmUoR3JhcGhpY3NMYXllciogbGF5ZXIsIEdyYXBoaWNzTGF5ZXIqIHNpYmxp
bmcpOworICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZEJlbG93KEdyYXBoaWNzTGF5ZXIqIGxheWVy
LCBHcmFwaGljc0xheWVyKiBzaWJsaW5nKTsKKyAgICB2aXJ0dWFsIGJvb2wgcmVwbGFjZUNoaWxk
KEdyYXBoaWNzTGF5ZXIqIG9sZENoaWxkLCBHcmFwaGljc0xheWVyKiBuZXdDaGlsZCk7CisKKyAg
ICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRnJvbVBhcmVudCgpOworCisgICAgdmlydHVhbCB2b2lkIHNl
dE1hc2tMYXllcihHcmFwaGljc0xheWVyKik7CisgICAgdmlydHVhbCB2b2lkIHNldFJlcGxpY2F0
ZWRMYXllcihHcmFwaGljc0xheWVyKik7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UG9zaXRpb24o
Y29uc3QgRmxvYXRQb2ludCYpOworICAgIHZpcnR1YWwgdm9pZCBzZXRBbmNob3JQb2ludChjb25z
dCBGbG9hdFBvaW50M0QmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2l6ZShjb25zdCBGbG9hdFNp
emUmKTsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRp
b25NYXRyaXgmKTsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRDaGlsZHJlblRyYW5zZm9ybShjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpOworCisgICAgdmlydHVhbCB2b2lkIHNldFByZXNlcnZl
czNEKGJvb2wpOworICAgIHZpcnR1YWwgdm9pZCBzZXRNYXNrc1RvQm91bmRzKGJvb2wpOworICAg
IHZpcnR1YWwgdm9pZCBzZXREcmF3c0NvbnRlbnQoYm9vbCk7CisKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IENvbG9yJik7CisgICAgdmlydHVhbCB2b2lkIGNsZWFy
QmFja2dyb3VuZENvbG9yKCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNPcGFxdWUo
Ym9vbCk7CisgICAgdmlydHVhbCB2b2lkIHNldEJhY2tmYWNlVmlzaWJpbGl0eShib29sKTsKKwor
ICAgIC8vIHJldHVybiB0cnVlIGlmIHdlIHN0YXJ0ZWQgYW4gYW5pbWF0aW9uCisgICAgdmlydHVh
bCB2b2lkIHNldE9wYWNpdHkoZmxvYXQpOworCisgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzRGlz
cGxheSgpOworICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0Rpc3BsYXlJblJlY3QoY29uc3QgRmxv
YXRSZWN0Jik7CisgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzTmVlZHNEaXNwbGF5KCk7Cisg
ICAgCisgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzUmVjdChjb25zdCBJbnRSZWN0Jik7Cisg
ICAgCisgICAgdmlydHVhbCB2b2lkIHN1c3BlbmRBbmltYXRpb25zKGRvdWJsZSB0aW1lKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgcmVzdW1lQW5pbWF0aW9ucygpOworCisgICAgdmlydHVhbCBib29sIGFk
ZEFuaW1hdGlvbihjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYsIGNvbnN0IEludFNpemUmIGJveFNp
emUsIGNvbnN0IEFuaW1hdGlvbiosIGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSwgZG91Ymxl
IHRpbWVPZmZzZXQpOworICAgIHZpcnR1YWwgdm9pZCBwYXVzZUFuaW1hdGlvbihjb25zdCBTdHJp
bmcmIGFuaW1hdGlvbk5hbWUsIGRvdWJsZSB0aW1lT2Zmc2V0KTsKKyAgICB2aXJ0dWFsIHZvaWQg
cmVtb3ZlQW5pbWF0aW9uKGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSk7CisKKyAgICB2aXJ0
dWFsIHZvaWQgc2V0Q29udGVudHNUb0ltYWdlKEltYWdlKik7CisgICAgdmlydHVhbCB2b2lkIHNl
dENvbnRlbnRzVG9NZWRpYShQbGF0Zm9ybUxheWVyKik7CisgICAgdmlydHVhbCB2b2lkIHNldENv
bnRlbnRzVG9DYW52YXMoUGxhdGZvcm1MYXllciopOworCisgICAgdmlydHVhbCBib29sIGhhc0Nv
bnRlbnRzTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRzTGF5ZXI7IH0KKyAgICAKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0RGVidWdCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0RGVidWdCb3JkZXIoY29uc3QgQ29sb3ImLCBmbG9hdCBib3JkZXJX
aWR0aCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRGlzcGxheShQbGF0Zm9ybUxheWVyKik7CisK
KyAgICB2b2lkIHJlY3Vyc2l2ZUNvbW1pdENoYW5nZXMoKTsKKworICAgIHZpcnR1YWwgdm9pZCBz
eW5jQ29tcG9zaXRpbmdTdGF0ZSgpOworICAgIHZpcnR1YWwgdm9pZCBzeW5jQ29tcG9zaXRpbmdT
dGF0ZUZvclRoaXNMYXllck9ubHkoKTsKKworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgdm9pZCBz
ZXRPcGFjaXR5SW50ZXJuYWwoZmxvYXQpOworCitwcml2YXRlOgorICAgIHZvaWQgdXBkYXRlT3Bh
Y2l0eU9uTGF5ZXIoKTsKKworICAgIFBsYXRmb3JtQ0FMYXllciogcHJpbWFyeUxheWVyKCkgY29u
c3QgeyByZXR1cm4gbV9zdHJ1Y3R1cmFsTGF5ZXIuZ2V0KCkgPyBtX3N0cnVjdHVyYWxMYXllci5n
ZXQoKSA6IG1fbGF5ZXIuZ2V0KCk7IH0KKyAgICBQbGF0Zm9ybUNBTGF5ZXIqIGhvc3RMYXllckZv
clN1YmxheWVycygpIGNvbnN0OworICAgIFBsYXRmb3JtQ0FMYXllciogbGF5ZXJGb3JTdXBlcmxh
eWVyKCkgY29uc3Q7CisgICAgUGxhdGZvcm1DQUxheWVyKiBhbmltYXRlZExheWVyKEFuaW1hdGVk
UHJvcGVydHlJRCkgY29uc3Q7CisKKyAgICB0eXBlZGVmIFN0cmluZyBDbG9uZUlEOyAvLyBJZGVu
dGlmaWVyIGZvciBhIGdpdmVuIGNsb25lLCBiYXNlZCBvbiBvcmlnaW5hbC9yZXBsaWNhIGJyYW5j
aGluZyBkb3duIHRoZSB0cmVlLgorICAgIHN0YXRpYyBib29sIGlzUmVwbGljYXRlZFJvb3RDbG9u
ZShjb25zdCBDbG9uZUlEJiBjbG9uZUlEKSB7IHJldHVybiBjbG9uZUlEWzBVXSAmIDE7IH0KKwor
ICAgIHR5cGVkZWYgSGFzaE1hcDxDbG9uZUlELCBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiA+IExh
eWVyTWFwOworICAgIExheWVyTWFwKiBwcmltYXJ5TGF5ZXJDbG9uZXMoKSBjb25zdCB7IHJldHVy
biBtX3N0cnVjdHVyYWxMYXllci5nZXQoKSA/IG1fc3RydWN0dXJhbExheWVyQ2xvbmVzLmdldCgp
IDogbV9sYXllckNsb25lcy5nZXQoKTsgfQorICAgIExheWVyTWFwKiBhbmltYXRlZExheWVyQ2xv
bmVzKEFuaW1hdGVkUHJvcGVydHlJRCkgY29uc3Q7CisKKyAgICBib29sIGNyZWF0ZUFuaW1hdGlv
bkZyb21LZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmLCBjb25zdCBBbmltYXRpb24q
LCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGRvdWJsZSB0aW1lT2Zmc2V0KTsKKyAgICBi
b29sIGNyZWF0ZVRyYW5zZm9ybUFuaW1hdGlvbnNGcm9tS2V5ZnJhbWVzKGNvbnN0IEtleWZyYW1l
VmFsdWVMaXN0JiwgY29uc3QgQW5pbWF0aW9uKiwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1l
LCBkb3VibGUgdGltZU9mZnNldCwgY29uc3QgSW50U2l6ZSYgYm94U2l6ZSk7CisKKyAgICAvLyBS
ZXR1cm4gYXV0b3JlbGVhc2VkIGFuaW1hdGlvbiAodXNlIFJldGFpblB0cj8pCisgICAgUGFzc1Jl
ZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBjcmVhdGVCYXNpY0FuaW1hdGlvbihjb25zdCBBbmlt
YXRpb24qLCBBbmltYXRlZFByb3BlcnR5SUQsIGJvb2wgYWRkaXRpdmUpOworICAgIFBhc3NSZWZQ
dHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gY3JlYXRlS2V5ZnJhbWVBbmltYXRpb24oY29uc3QgQW5p
bWF0aW9uKiwgQW5pbWF0ZWRQcm9wZXJ0eUlELCBib29sIGFkZGl0aXZlKTsKKyAgICB2b2lkIHNl
dHVwQW5pbWF0aW9uKFBsYXRmb3JtQ0FBbmltYXRpb24qLCBjb25zdCBBbmltYXRpb24qLCBib29s
IGFkZGl0aXZlKTsKKyAgICAKKyAgICBjb25zdCBUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rp
b25Gb3JBbmltYXRpb25WYWx1ZShjb25zdCBBbmltYXRpb25WYWx1ZSosIGNvbnN0IEFuaW1hdGlv
biopOworICAgIAorICAgIGJvb2wgc2V0QW5pbWF0aW9uRW5kcG9pbnRzKGNvbnN0IEtleWZyYW1l
VmFsdWVMaXN0JiwgY29uc3QgQW5pbWF0aW9uKiwgUGxhdGZvcm1DQUFuaW1hdGlvbiopOworICAg
IGJvb2wgc2V0QW5pbWF0aW9uS2V5ZnJhbWVzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiwgY29u
c3QgQW5pbWF0aW9uKiwgUGxhdGZvcm1DQUFuaW1hdGlvbiopOworCisgICAgYm9vbCBzZXRUcmFu
c2Zvcm1BbmltYXRpb25FbmRwb2ludHMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmLCBjb25zdCBB
bmltYXRpb24qLCBQbGF0Zm9ybUNBQW5pbWF0aW9uKiwgaW50IGZ1bmN0aW9uSW5kZXgsIFRyYW5z
Zm9ybU9wZXJhdGlvbjo6T3BlcmF0aW9uVHlwZSwgYm9vbCBpc01hdHJpeEFuaW1hdGlvbiwgY29u
c3QgSW50U2l6ZSYgYm94U2l6ZSk7CisgICAgYm9vbCBzZXRUcmFuc2Zvcm1BbmltYXRpb25LZXlm
cmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmLCBjb25zdCBBbmltYXRpb24qLCBQbGF0Zm9y
bUNBQW5pbWF0aW9uKiwgaW50IGZ1bmN0aW9uSW5kZXgsIFRyYW5zZm9ybU9wZXJhdGlvbjo6T3Bl
cmF0aW9uVHlwZSwgYm9vbCBpc01hdHJpeEFuaW1hdGlvbiwgY29uc3QgSW50U2l6ZSYgYm94U2l6
ZSk7CisgICAgCisgICAgYm9vbCBhbmltYXRpb25Jc1J1bm5pbmcoY29uc3QgU3RyaW5nJiBhbmlt
YXRpb25OYW1lKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fcnVubmluZ0FuaW1hdGlv
bnMuZmluZChhbmltYXRpb25OYW1lKSAhPSBtX3J1bm5pbmdBbmltYXRpb25zLmVuZCgpOworICAg
IH0KKworICAgIHZvaWQgY29tbWl0TGF5ZXJDaGFuZ2VzQmVmb3JlU3VibGF5ZXJzKCk7CisgICAg
dm9pZCBjb21taXRMYXllckNoYW5nZXNBZnRlclN1YmxheWVycygpOworCisgICAgRmxvYXRTaXpl
IGNvbnN0cmFpbmVkU2l6ZSgpIGNvbnN0OworCisgICAgYm9vbCByZXF1aXJlc1RpbGVkTGF5ZXIo
Y29uc3QgRmxvYXRTaXplJikgY29uc3Q7CisgICAgdm9pZCBzd2FwRnJvbU9yVG9UaWxlZExheWVy
KGJvb2wgdXNlVGlsZWRMYXllcik7CisKKyAgICBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50
YXRpb24gZGVmYXVsdENvbnRlbnRzT3JpZW50YXRpb24oKSBjb25zdDsKKyAgICB2b2lkIHVwZGF0
ZUNvbnRlbnRzVHJhbnNmb3JtKCk7CisgICAgCisgICAgdm9pZCBzZXR1cENvbnRlbnRzTGF5ZXIo
UGxhdGZvcm1DQUxheWVyKik7CisgICAgUGxhdGZvcm1DQUxheWVyKiBjb250ZW50c0xheWVyKCkg
Y29uc3QgeyByZXR1cm4gbV9jb250ZW50c0xheWVyLmdldCgpOyB9CisKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0UmVwbGljYXRlZEJ5TGF5ZXIoR3JhcGhpY3NMYXllciopOworCisgICAgLy8gVXNlZCB0
byB0cmFjayB0aGUgcGF0aCBkb3duIHRoZSB0cmVlIGZvciByZXBsaWNhIGxheWVycy4KKyAgICBz
dHJ1Y3QgUmVwbGljYVN0YXRlIHsKKyAgICAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBtYXhSZXBs
aWNhRGVwdGggPSAxNjsKKyAgICAgICAgZW51bSBSZXBsaWNhQnJhbmNoVHlwZSB7IENoaWxkQnJh
bmNoID0gMCwgUmVwbGljYUJyYW5jaCA9IDEgfTsKKyAgICAgICAgUmVwbGljYVN0YXRlKFJlcGxp
Y2FCcmFuY2hUeXBlIGZpcnN0QnJhbmNoKQorICAgICAgICAgICAgOiBtX3JlcGxpY2FEZXB0aCgw
KQorICAgICAgICB7CisgICAgICAgICAgICBwdXNoKGZpcnN0QnJhbmNoKTsKKyAgICAgICAgfQor
ICAgICAgICAKKyAgICAgICAgLy8gQ2FsbGVkIGFzIHdlIHdhbGsgZG93biB0aGUgdHJlZSB0byBi
dWlsZCByZXBsaWNhcy4KKyAgICAgICAgdm9pZCBwdXNoKFJlcGxpY2FCcmFuY2hUeXBlIGJyYW5j
aFR5cGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fcmVwbGljYUJyYW5jaGVzLmFwcGVuZChi
cmFuY2hUeXBlKTsKKyAgICAgICAgICAgIGlmIChicmFuY2hUeXBlID09IFJlcGxpY2FCcmFuY2gp
CisgICAgICAgICAgICAgICAgKyttX3JlcGxpY2FEZXB0aDsKKyAgICAgICAgfQorICAgICAgICAK
KyAgICAgICAgdm9pZCBzZXRCcmFuY2hUeXBlKFJlcGxpY2FCcmFuY2hUeXBlIGJyYW5jaFR5cGUp
CisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVCghbV9yZXBsaWNhQnJhbmNoZXMuaXNFbXB0
eSgpKTsKKworICAgICAgICAgICAgaWYgKG1fcmVwbGljYUJyYW5jaGVzLmxhc3QoKSAhPSBicmFu
Y2hUeXBlKSB7CisgICAgICAgICAgICAgICAgaWYgKGJyYW5jaFR5cGUgPT0gUmVwbGljYUJyYW5j
aCkKKyAgICAgICAgICAgICAgICAgICAgKyttX3JlcGxpY2FEZXB0aDsKKyAgICAgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgICAgIC0tbV9yZXBsaWNhRGVwdGg7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIG1fcmVwbGljYUJyYW5jaGVzLmxhc3QoKSA9IGJyYW5jaFR5cGU7
CisgICAgICAgIH0KKworICAgICAgICB2b2lkIHBvcCgpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGlmIChtX3JlcGxpY2FCcmFuY2hlcy5sYXN0KCkgPT0gUmVwbGljYUJyYW5jaCkKKyAgICAgICAg
ICAgICAgICAtLW1fcmVwbGljYURlcHRoOworICAgICAgICAgICAgbV9yZXBsaWNhQnJhbmNoZXMu
cmVtb3ZlTGFzdCgpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBzaXplX3QgZGVwdGgo
KSBjb25zdCB7IHJldHVybiBtX3JlcGxpY2FCcmFuY2hlcy5zaXplKCk7IH0KKyAgICAgICAgc2l6
ZV90IHJlcGxpY2FEZXB0aCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVwbGljYURlcHRoOyB9CisKKyAg
ICAgICAgQ2xvbmVJRCBjbG9uZUlEKCkgY29uc3Q7ICAgICAgICAKKworICAgIHByaXZhdGU6Cisg
ICAgICAgIFZlY3RvcjxSZXBsaWNhQnJhbmNoVHlwZT4gbV9yZXBsaWNhQnJhbmNoZXM7CisgICAg
ICAgIHNpemVfdCBtX3JlcGxpY2FEZXB0aDsKKyAgICB9OworICAgIFBhc3NSZWZQdHI8UGxhdGZv
cm1DQUxheWVyPnJlcGxpY2F0ZWRMYXllclJvb3QoUmVwbGljYVN0YXRlJik7CisKKyAgICBlbnVt
IENsb25lTGV2ZWwgeyBSb290Q2xvbmVMZXZlbCwgSW50ZXJtZWRpYXRlQ2xvbmVMZXZlbCB9Owor
ICAgIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBmZXRjaENsb25lTGF5ZXJzKEdyYXBoaWNz
TGF5ZXIqIHJlcGxpY2FSb290LCBSZXBsaWNhU3RhdGUmLCBDbG9uZUxldmVsKTsKKyAgICAKKyAg
ICBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gY2xvbmVMYXllcihQbGF0Zm9ybUNBTGF5ZXIg
KiwgQ2xvbmVMZXZlbCk7CisgICAgUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IGZpbmRPck1h
a2VDbG9uZShDbG9uZUlELCBQbGF0Zm9ybUNBTGF5ZXIgKiwgTGF5ZXJNYXAqLCBDbG9uZUxldmVs
KTsKKworICAgIHZvaWQgZW5zdXJlQ2xvbmVMYXllcnMoQ2xvbmVJRCBjbG9uZUlELCBSZWZQdHI8
UGxhdGZvcm1DQUxheWVyPiYgcHJpbWFyeUxheWVyLCBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiYg
c3RydWN0dXJhbExheWVyLCBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiYgY29udGVudHNMYXllciwg
Q2xvbmVMZXZlbCBjbG9uZUxldmVsKTsKKworICAgIGJvb2wgaGFzQ2xvbmVMYXllcnMoKSBjb25z
dCB7IHJldHVybiBtX2xheWVyQ2xvbmVzOyB9CisgICAgdm9pZCByZW1vdmVDbG9uZUxheWVycygp
OworICAgIEZsb2F0UG9pbnQgcG9zaXRpb25Gb3JDbG9uZVJvb3RMYXllcigpIGNvbnN0OworICAg
IAorICAgIHZvaWQgcHJvcGFnYXRlTGF5ZXJDaGFuZ2VUb1JlcGxpY2FzKCk7CisgICAgCisgICAg
Ly8gQWxsIHRoZXNlICJ1cGRhdGUiIG1ldGhvZHMgd2lsbCBiZSBjYWxsZWQgaW5zaWRlIGEgQkVH
SU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TL0VORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMgYmxvY2su
CisgICAgdm9pZCB1cGRhdGVMYXllck5hbWVzKCk7CisgICAgdm9pZCB1cGRhdGVTdWJsYXllckxp
c3QoKTsKKyAgICB2b2lkIHVwZGF0ZUxheWVyUG9zaXRpb24oKTsKKyAgICB2b2lkIHVwZGF0ZUxh
eWVyU2l6ZSgpOworICAgIHZvaWQgdXBkYXRlQW5jaG9yUG9pbnQoKTsKKyAgICB2b2lkIHVwZGF0
ZVRyYW5zZm9ybSgpOworICAgIHZvaWQgdXBkYXRlQ2hpbGRyZW5UcmFuc2Zvcm0oKTsKKyAgICB2
b2lkIHVwZGF0ZU1hc2tzVG9Cb3VuZHMoKTsKKyAgICB2b2lkIHVwZGF0ZUNvbnRlbnRzT3BhcXVl
KCk7CisgICAgdm9pZCB1cGRhdGVCYWNrZmFjZVZpc2liaWxpdHkoKTsKKyAgICB2b2lkIHVwZGF0
ZVN0cnVjdHVyYWxMYXllcigpOworICAgIHZvaWQgdXBkYXRlTGF5ZXJEcmF3c0NvbnRlbnQoKTsK
KyAgICB2b2lkIHVwZGF0ZUxheWVyQmFja2dyb3VuZENvbG9yKCk7CisKKyAgICB2b2lkIHVwZGF0
ZUNvbnRlbnRzSW1hZ2UoKTsKKyAgICB2b2lkIHVwZGF0ZUNvbnRlbnRzTWVkaWFMYXllcigpOwor
ICAgIHZvaWQgdXBkYXRlQ29udGVudHNDYW52YXNMYXllcigpOworICAgIHZvaWQgdXBkYXRlQ29u
dGVudHNSZWN0KCk7CisgICAgdm9pZCB1cGRhdGVNYXNrTGF5ZXIoKTsKKyAgICB2b2lkIHVwZGF0
ZVJlcGxpY2F0ZWRMYXllcnMoKTsKKworICAgIHZvaWQgdXBkYXRlTGF5ZXJBbmltYXRpb25zKCk7
CisgICAgdm9pZCB1cGRhdGVDb250ZW50c05lZWRzRGlzcGxheSgpOworICAgIAorICAgIGVudW0g
U3RydWN0dXJhbExheWVyUHVycG9zZSB7CisgICAgICAgIE5vU3RydWN0dXJhbExheWVyID0gMCwK
KyAgICAgICAgU3RydWN0dXJhbExheWVyRm9yUHJlc2VydmVzM0QsCisgICAgICAgIFN0cnVjdHVy
YWxMYXllckZvclJlcGxpY2FGbGF0dGVuaW5nCisgICAgfTsKKyAgICB2b2lkIGVuc3VyZVN0cnVj
dHVyYWxMYXllcihTdHJ1Y3R1cmFsTGF5ZXJQdXJwb3NlKTsKKyAgICBTdHJ1Y3R1cmFsTGF5ZXJQ
dXJwb3NlIHN0cnVjdHVyYWxMYXllclB1cnBvc2UoKSBjb25zdDsKKworICAgIHZvaWQgc2V0QW5p
bWF0aW9uT25MYXllcihQbGF0Zm9ybUNBQW5pbWF0aW9uKiwgQW5pbWF0ZWRQcm9wZXJ0eUlELCBj
b25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGludCBpbmRleCwgZG91YmxlIHRpbWVPZmZzZXQp
OworICAgIGJvb2wgcmVtb3ZlQ0FBbmltYXRpb25Gcm9tTGF5ZXIoQW5pbWF0ZWRQcm9wZXJ0eUlE
LCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGludCBpbmRleCk7CisgICAgdm9pZCBwYXVz
ZUNBQW5pbWF0aW9uT25MYXllcihBbmltYXRlZFByb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgYW5p
bWF0aW9uTmFtZSwgaW50IGluZGV4LCBkb3VibGUgdGltZU9mZnNldCk7CisKKyAgICBlbnVtIE1v
dmVPckNvcHkgeyBNb3ZlLCBDb3B5IH07CisgICAgc3RhdGljIHZvaWQgbW92ZU9yQ29weUxheWVy
QW5pbWF0aW9uKE1vdmVPckNvcHksIGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uSWRlbnRpZmllciwg
UGxhdGZvcm1DQUxheWVyICpmcm9tTGF5ZXIsIFBsYXRmb3JtQ0FMYXllciAqdG9MYXllcik7Cisg
ICAgdm9pZCBtb3ZlT3JDb3B5QW5pbWF0aW9uc0ZvclByb3BlcnR5KE1vdmVPckNvcHksIEFuaW1h
dGVkUHJvcGVydHlJRCwgUGxhdGZvcm1DQUxheWVyICogZnJvbUxheWVyLCBQbGF0Zm9ybUNBTGF5
ZXIgKiB0b0xheWVyKTsKKyAgICAKKyAgICBlbnVtIExheWVyQ2hhbmdlIHsKKyAgICAgICAgTm9D
aGFuZ2UgPSAwLAorICAgICAgICBOYW1lQ2hhbmdlZCA9IDEgPDwgMSwKKyAgICAgICAgQ2hpbGRy
ZW5DaGFuZ2VkID0gMSA8PCAyLCAvLyBhbHNvIHVzZWQgZm9yIGNvbnRlbnQgbGF5ZXIsIGFuZCBw
cmVzZXJ2ZXMtM2QsIGFuZCBzaXplIGlmIHRpbGluZyBjaGFuZ2VzPworICAgICAgICBQb3NpdGlv
bkNoYW5nZWQgPSAxIDw8IDMsCisgICAgICAgIEFuY2hvclBvaW50Q2hhbmdlZCA9IDEgPDwgNCwK
KyAgICAgICAgU2l6ZUNoYW5nZWQgPSAxIDw8IDUsCisgICAgICAgIFRyYW5zZm9ybUNoYW5nZWQg
PSAxIDw8IDYsCisgICAgICAgIENoaWxkcmVuVHJhbnNmb3JtQ2hhbmdlZCA9IDEgPDwgNywKKyAg
ICAgICAgUHJlc2VydmVzM0RDaGFuZ2VkID0gMSA8PCA4LAorICAgICAgICBNYXNrc1RvQm91bmRz
Q2hhbmdlZCA9IDEgPDwgOSwKKyAgICAgICAgRHJhd3NDb250ZW50Q2hhbmdlZCA9IDEgPDwgMTAs
IC8vIG5lZWQgdGhpcz8KKyAgICAgICAgQmFja2dyb3VuZENvbG9yQ2hhbmdlZCA9IDEgPDwgMTEs
CisgICAgICAgIENvbnRlbnRzT3BhcXVlQ2hhbmdlZCA9IDEgPDwgMTIsCisgICAgICAgIEJhY2tm
YWNlVmlzaWJpbGl0eUNoYW5nZWQgPSAxIDw8IDEzLAorICAgICAgICBPcGFjaXR5Q2hhbmdlZCA9
IDEgPDwgMTQsCisgICAgICAgIEFuaW1hdGlvbkNoYW5nZWQgPSAxIDw8IDE1LAorICAgICAgICBE
aXJ0eVJlY3RzQ2hhbmdlZCA9IDEgPDwgMTYsCisgICAgICAgIENvbnRlbnRzSW1hZ2VDaGFuZ2Vk
ID0gMSA8PCAxNywKKyAgICAgICAgQ29udGVudHNNZWRpYUxheWVyQ2hhbmdlZCA9IDEgPDwgMTgs
CisgICAgICAgIENvbnRlbnRzQ2FudmFzTGF5ZXJDaGFuZ2VkID0gMSA8PCAxOSwKKyAgICAgICAg
Q29udGVudHNSZWN0Q2hhbmdlZCA9IDEgPDwgMjAsCisgICAgICAgIE1hc2tMYXllckNoYW5nZWQg
PSAxIDw8IDIxLAorICAgICAgICBSZXBsaWNhdGVkTGF5ZXJDaGFuZ2VkID0gMSA8PCAyMiwKKyAg
ICAgICAgQ29udGVudHNOZWVkc0Rpc3BsYXkgPSAxIDw8IDIzCisgICAgfTsKKyAgICB0eXBlZGVm
IHVuc2lnbmVkIExheWVyQ2hhbmdlRmxhZ3M7CisgICAgdm9pZCBub3RlTGF5ZXJQcm9wZXJ0eUNo
YW5nZWQoTGF5ZXJDaGFuZ2VGbGFncyBmbGFncyk7CisgICAgdm9pZCBub3RlU3VibGF5ZXJzQ2hh
bmdlZCgpOworCisgICAgdm9pZCByZXBhaW50TGF5ZXJEaXJ0eVJlY3RzKCk7CisKKyAgICBSZWZQ
dHI8UGxhdGZvcm1DQUxheWVyPiBtX2xheWVyOyAvLyBUaGUgbWFpbiBsYXllcgorICAgIFJlZlB0
cjxQbGF0Zm9ybUNBTGF5ZXI+IG1fc3RydWN0dXJhbExheWVyOyAvLyBBIGxheWVyIHVzZWQgZm9y
IHN0cnVjdHVyYWwgcmVhc29ucywgbGlrZSBwcmVzZXJ2ZXMtM2Qgb3IgcmVwbGljYS1mbGF0dGVu
aW5nLiBJcyB0aGUgcGFyZW50IG9mIG1fbGF5ZXIuCisgICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXll
cj4gbV9jb250ZW50c0xheWVyOyAvLyBBIGxheWVyIHVzZWQgZm9yIGlubmVyIGNvbnRlbnQsIGxp
a2UgaW1hZ2UgYW5kIHZpZGVvCisKKyAgICAvLyBSZWZlcmVuY2VzIHRvIGNsb25lcyBvZiBvdXIg
bGF5ZXJzLCBmb3IgcmVwbGljYXRlZCBsYXllcnMuCisgICAgT3duUHRyPExheWVyTWFwPiBtX2xh
eWVyQ2xvbmVzOworICAgIE93blB0cjxMYXllck1hcD4gbV9zdHJ1Y3R1cmFsTGF5ZXJDbG9uZXM7
CisgICAgT3duUHRyPExheWVyTWFwPiBtX2NvbnRlbnRzTGF5ZXJDbG9uZXM7CisgICAgCisgICAg
ZW51bSBDb250ZW50c0xheWVyUHVycG9zZSB7CisgICAgICAgIE5vQ29udGVudHNMYXllciA9IDAs
CisgICAgICAgIENvbnRlbnRzTGF5ZXJGb3JJbWFnZSwKKyAgICAgICAgQ29udGVudHNMYXllckZv
ck1lZGlhLAorICAgICAgICBDb250ZW50c0xheWVyRm9yQ2FudmFzCisgICAgfTsKKyAgICAKKyAg
ICBDb250ZW50c0xheWVyUHVycG9zZSBtX2NvbnRlbnRzTGF5ZXJQdXJwb3NlOworICAgIGJvb2wg
bV9jb250ZW50c0xheWVySGFzQmFja2dyb3VuZENvbG9yIDogMTsKKworICAgIFJldGFpblB0cjxD
R0ltYWdlUmVmPiBtX3VuY29ycmVjdGVkQ29udGVudHNJbWFnZTsKKyAgICBSZXRhaW5QdHI8Q0dJ
bWFnZVJlZj4gbV9wZW5kaW5nQ29udGVudHNJbWFnZTsKKyAgICAKKyAgICAvLyBUaGlzIHJlcHJl
c2VudHMgdGhlIGFuaW1hdGlvbiBvZiBhIHNpbmdsZSBwcm9wZXJ0eS4gVGhlcmUgbWF5IGJlIG11
bHRpcGxlIHRyYW5zZm9ybSBhbmltYXRpb25zIGZvcgorICAgIC8vIGEgc2luZ2xlIHRyYW5zaXRp
b24gb3Iga2V5ZnJhbWUgYW5pbWF0aW9uLCBzbyBpbmRleCBpcyB1c2VkIHRvIGRpc3Rpbmd1aXNo
IHRoZXNlLgorICAgIHN0cnVjdCBMYXllclByb3BlcnR5QW5pbWF0aW9uIHsKKyAgICAgICAgTGF5
ZXJQcm9wZXJ0eUFuaW1hdGlvbihQYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IGNhQW5p
bWF0aW9uLCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIEFuaW1hdGVkUHJvcGVydHlJRCBw
cm9wZXJ0eSwgaW50IGluZGV4LCBkb3VibGUgdGltZU9mZnNldCkKKyAgICAgICAgOiBtX2FuaW1h
dGlvbihjYUFuaW1hdGlvbikKKyAgICAgICAgLCBtX25hbWUoYW5pbWF0aW9uTmFtZSkKKyAgICAg
ICAgLCBtX3Byb3BlcnR5KHByb3BlcnR5KQorICAgICAgICAsIG1faW5kZXgoaW5kZXgpCisgICAg
ICAgICwgbV90aW1lT2Zmc2V0KHRpbWVPZmZzZXQpCisgICAgICAgIHsgfQorCisgICAgICAgIFJl
ZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBtX2FuaW1hdGlvbjsKKyAgICAgICAgU3RyaW5nIG1f
bmFtZTsKKyAgICAgICAgQW5pbWF0ZWRQcm9wZXJ0eUlEIG1fcHJvcGVydHk7CisgICAgICAgIGlu
dCBtX2luZGV4OworICAgICAgICBkb3VibGUgbV90aW1lT2Zmc2V0OworICAgIH07CisgICAgCisg
ICAgLy8gVW5jb21taXR0ZWQgdHJhbnNpdGlvbnMgYW5kIGFuaW1hdGlvbnMuCisgICAgVmVjdG9y
PExheWVyUHJvcGVydHlBbmltYXRpb24+IG1fdW5jb21pdHRlZEFuaW1hdGlvbnM7CisgICAgCisg
ICAgZW51bSBBY3Rpb24geyBSZW1vdmUsIFBhdXNlIH07CisgICAgc3RydWN0IEFuaW1hdGlvblBy
b2Nlc3NpbmdBY3Rpb24geworICAgICAgICBBbmltYXRpb25Qcm9jZXNzaW5nQWN0aW9uKEFjdGlv
biBhY3Rpb24gPSBSZW1vdmUsIGRvdWJsZSB0aW1lT2Zmc2V0ID0gMCkKKyAgICAgICAgICAgIDog
YWN0aW9uKGFjdGlvbikKKyAgICAgICAgICAgICwgdGltZU9mZnNldCh0aW1lT2Zmc2V0KQorICAg
ICAgICB7CisgICAgICAgIH0KKyAgICAgICAgQWN0aW9uIGFjdGlvbjsKKyAgICAgICAgZG91Ymxl
IHRpbWVPZmZzZXQ7IC8vIG9ubHkgdXNlZCBmb3IgcGF1c2UKKyAgICB9OworICAgIHR5cGVkZWYg
SGFzaE1hcDxTdHJpbmcsIEFuaW1hdGlvblByb2Nlc3NpbmdBY3Rpb24+IEFuaW1hdGlvbnNUb1By
b2Nlc3NNYXA7CisgICAgQW5pbWF0aW9uc1RvUHJvY2Vzc01hcCBtX2FuaW1hdGlvbnNUb1Byb2Nl
c3M7CisKKyAgICAvLyBNYXAgb2YgYW5pbWF0aW9uIG5hbWVzIHRvIHRoZWlyIGFzc29jaWF0ZWQg
bGlzdHMgb2YgcHJvcGVydHkgYW5pbWF0aW9ucywgc28gd2UgY2FuIHJlbW92ZS9wYXVzZSB0aGVt
LgorICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxMYXllclByb3BlcnR5QW5pbWF0
aW9uPiA+IEFuaW1hdGlvbnNNYXA7CisgICAgQW5pbWF0aW9uc01hcCBtX3J1bm5pbmdBbmltYXRp
b25zOworCisgICAgVmVjdG9yPEZsb2F0UmVjdD4gbV9kaXJ0eVJlY3RzOworICAgIAorICAgIExh
eWVyQ2hhbmdlRmxhZ3MgbV91bmNvbW1pdHRlZENoYW5nZXM7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKworI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKwor
I2VuZGlmIC8vIEdyYXBoaWNzTGF5ZXJDQV9oCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL1BsYXRmb3JtQ0FBbmltYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FBbmltYXRpb24uaAkocmV2aXNpb24gNzMyMzYpCShm
cm9tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUFuaW1hdGlvbi5oOjcz
MjM2KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBQW5pbWF0aW9u
LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgUGxhdGZvcm1DQUFu
aW1hdGlvbl9oCisjZGVmaW5lIFBsYXRmb3JtQ0FBbmltYXRpb25faAorCisjaWYgVVNFKEFDQ0VM
RVJBVEVEX0NPTVBPU0lUSU5HKQorCisjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJGbG9h
dFBvaW50M0QuaCIKKyNpbmNsdWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgorI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KKworI2lmIFBMQVRGT1JNKE1BQykKKyNpZmRlZiBfX09CSkNfXworQGNs
YXNzIENBUHJvcGVydHlBbmltYXRpb247Cit0eXBlZGVmIENBUHJvcGVydHlBbmltYXRpb24qIFBs
YXRmb3JtQW5pbWF0aW9uUmVmOworI2Vsc2UKK3R5cGVkZWYgdm9pZCogQ0FQcm9wZXJ0eUFuaW1h
dGlvbjsgLy8gU28gdGhlIG1fYW5pbWF0aW9uIGRlY2xhcmF0aW9uIHdvcmtzCit0eXBlZGVmIHZv
aWQqIFBsYXRmb3JtQW5pbWF0aW9uUmVmOworI2VuZGlmCisjZWxpZiBQTEFURk9STShXSU4pCitu
YW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBXS0NBQ0ZBbmltYXRpb247Cit0eXBlZGVmIFdLQ0FD
RkFuaW1hdGlvbiogUGxhdGZvcm1BbmltYXRpb25SZWY7Cit9CisjZW5kaWYKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBGbG9hdFJlY3Q7CitjbGFzcyBQbGF0Zm9ybUNBQW5pbWF0aW9u
OworY2xhc3MgVGltaW5nRnVuY3Rpb247CisKK2NsYXNzIFBsYXRmb3JtQ0FBbmltYXRpb24gOiBw
dWJsaWMgUmVmQ291bnRlZDxQbGF0Zm9ybUNBQW5pbWF0aW9uPiB7CitwdWJsaWM6CisgICAgZnJp
ZW5kIGNsYXNzIFBsYXRmb3JtQ0FMYXllcjsKKyAgICAKKyAgICBlbnVtIEFuaW1hdGlvblR5cGUg
eyBCYXNpYywgS2V5ZnJhbWUgfTsKKyAgICBlbnVtIEZpbGxNb2RlVHlwZSB7IE5vRmlsbE1vZGUs
IEZvcndhcmRzLCBCYWNrd2FyZHMsIEJvdGggfTsKKyAgICBlbnVtIFZhbHVlRnVuY3Rpb25UeXBl
IHsgTm9WYWx1ZUZ1bmN0aW9uLCBSb3RhdGVYLCBSb3RhdGVZLCBSb3RhdGVaLCBTY2FsZVgsIFNj
YWxlWSwgU2NhbGVaLCBTY2FsZSwgVHJhbnNsYXRlWCwgVHJhbnNsYXRlWSwgVHJhbnNsYXRlWiwg
VHJhbnNsYXRlIH07CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9u
PiBjcmVhdGUoQW5pbWF0aW9uVHlwZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoKTsKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBjcmVhdGUoUGxhdGZvcm1BbmltYXRp
b25SZWYgYW5pbWF0aW9uKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0
aW9uPiBjcmVhdGUoY29uc3QgUGxhdGZvcm1DQUFuaW1hdGlvbiogYW5pbWF0aW9uKTsKKworICAg
IH5QbGF0Zm9ybUNBQW5pbWF0aW9uKCk7CisgICAgCisgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNW
YWx1ZUZ1bmN0aW9uKCk7CisgICAgCisgICAgUGxhdGZvcm1BbmltYXRpb25SZWYgcGxhdGZvcm1B
bmltYXRpb24oKSBjb25zdDsKKyAgICAKKyAgICBBbmltYXRpb25UeXBlIGFuaW1hdGlvblR5cGUo
KSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KKyAgICBTdHJpbmcga2V5UGF0aCgpIGNvbnN0Owor
ICAgIAorICAgIGJvb2wgaGFzTm9uWmVyb0JlZ2luVGltZUZsYWcoKSBjb25zdDsKKyAgICB2b2lk
IHNldE5vblplcm9CZWdpblRpbWVGbGFnKGJvb2wgdmFsdWUpOworICAgIAorICAgIENGVGltZUlu
dGVydmFsIGJlZ2luVGltZSgpIGNvbnN0OworICAgIHZvaWQgc2V0QmVnaW5UaW1lKENGVGltZUlu
dGVydmFsKTsKKyAgICAKKyAgICBDRlRpbWVJbnRlcnZhbCBkdXJhdGlvbigpIGNvbnN0OworICAg
IHZvaWQgc2V0RHVyYXRpb24oQ0ZUaW1lSW50ZXJ2YWwpOworICAgIAorICAgIGZsb2F0IHNwZWVk
KCkgY29uc3Q7CisgICAgdm9pZCBzZXRTcGVlZChmbG9hdCk7CisKKyAgICBDRlRpbWVJbnRlcnZh
bCB0aW1lT2Zmc2V0KCkgY29uc3Q7CisgICAgdm9pZCBzZXRUaW1lT2Zmc2V0KENGVGltZUludGVy
dmFsKTsKKworICAgIGZsb2F0IHJlcGVhdENvdW50KCkgY29uc3Q7CisgICAgdm9pZCBzZXRSZXBl
YXRDb3VudChmbG9hdCk7CisKKyAgICBib29sIGF1dG9yZXZlcnNlcygpIGNvbnN0OworICAgIHZv
aWQgc2V0QXV0b3JldmVyc2VzKGJvb2wpOworCisgICAgRmlsbE1vZGVUeXBlIGZpbGxNb2RlKCkg
Y29uc3Q7CisgICAgdm9pZCBzZXRGaWxsTW9kZShGaWxsTW9kZVR5cGUpOworICAgIAorICAgIHZv
aWQgc2V0VGltaW5nRnVuY3Rpb24oY29uc3QgVGltaW5nRnVuY3Rpb24qKTsKKyAgICB2b2lkIGNv
cHlUaW1pbmdGdW5jdGlvbkZyb20oY29uc3QgUGxhdGZvcm1DQUFuaW1hdGlvbiopOworCisgICAg
Ym9vbCBpc1JlbW92ZWRPbkNvbXBsZXRpb24oKSBjb25zdDsKKyAgICB2b2lkIHNldFJlbW92ZWRP
bkNvbXBsZXRpb24oYm9vbCk7CisKKyAgICBib29sIGlzQWRkaXRpdmUoKSBjb25zdDsKKyAgICB2
b2lkIHNldEFkZGl0aXZlKGJvb2wpOworCisgICAgVmFsdWVGdW5jdGlvblR5cGUgdmFsdWVGdW5j
dGlvbigpIGNvbnN0OworICAgIHZvaWQgc2V0VmFsdWVGdW5jdGlvbihWYWx1ZUZ1bmN0aW9uVHlw
ZSk7CisKKyAgICAvLyBCYXNpYy1hbmltYXRpb24gcHJvcGVydGllcy4KKyAgICB2b2lkIHNldEZy
b21WYWx1ZShmbG9hdCk7CisgICAgdm9pZCBzZXRGcm9tVmFsdWUoY29uc3QgV2ViQ29yZTo6VHJh
bnNmb3JtYXRpb25NYXRyaXgmKTsKKyAgICB2b2lkIHNldEZyb21WYWx1ZShjb25zdCBGbG9hdFBv
aW50M0QmKTsKKyAgICB2b2lkIHNldEZyb21WYWx1ZShjb25zdCBXZWJDb3JlOjpDb2xvciYpOwor
ICAgIHZvaWQgY29weUZyb21WYWx1ZUZyb20oY29uc3QgUGxhdGZvcm1DQUFuaW1hdGlvbiopOwor
CisgICAgdm9pZCBzZXRUb1ZhbHVlKGZsb2F0KTsKKyAgICB2b2lkIHNldFRvVmFsdWUoY29uc3Qg
V2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXgmKTsKKyAgICB2b2lkIHNldFRvVmFsdWUoY29u
c3QgRmxvYXRQb2ludDNEJik7CisgICAgdm9pZCBzZXRUb1ZhbHVlKGNvbnN0IFdlYkNvcmU6OkNv
bG9yJik7CisgICAgdm9pZCBjb3B5VG9WYWx1ZUZyb20oY29uc3QgUGxhdGZvcm1DQUFuaW1hdGlv
biopOworCisgICAgLy8gS2V5ZnJhbWUtYW5pbWF0aW9uIHByb3BlcnRpZXMuCisgICAgdm9pZCBz
ZXRWYWx1ZXMoY29uc3QgVmVjdG9yPGZsb2F0PiYpOworICAgIHZvaWQgc2V0VmFsdWVzKGNvbnN0
IFZlY3RvcjxXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeD4mKTsKKyAgICB2b2lkIHNldFZh
bHVlcyhjb25zdCBWZWN0b3I8RmxvYXRQb2ludDNEPiYpOworICAgIHZvaWQgc2V0VmFsdWVzKGNv
bnN0IFZlY3RvcjxXZWJDb3JlOjpDb2xvcj4mKTsKKyAgICB2b2lkIGNvcHlWYWx1ZXNGcm9tKGNv
bnN0IFBsYXRmb3JtQ0FBbmltYXRpb24qKTsKKworICAgIHZvaWQgc2V0S2V5VGltZXMoY29uc3Qg
VmVjdG9yPGZsb2F0PiYpOworICAgIHZvaWQgY29weUtleVRpbWVzRnJvbShjb25zdCBQbGF0Zm9y
bUNBQW5pbWF0aW9uKik7CisKKyAgICB2b2lkIHNldFRpbWluZ0Z1bmN0aW9ucyhjb25zdCBWZWN0
b3I8Y29uc3QgVGltaW5nRnVuY3Rpb24qPiYpOworICAgIHZvaWQgY29weVRpbWluZ0Z1bmN0aW9u
c0Zyb20oY29uc3QgUGxhdGZvcm1DQUFuaW1hdGlvbiopOworICAgIAorcHJvdGVjdGVkOgorICAg
IFBsYXRmb3JtQ0FBbmltYXRpb24oQW5pbWF0aW9uVHlwZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRo
KTsKKyAgICBQbGF0Zm9ybUNBQW5pbWF0aW9uKFBsYXRmb3JtQW5pbWF0aW9uUmVmIGFuaW1hdGlv
bik7CisgICAgUGxhdGZvcm1DQUFuaW1hdGlvbihjb25zdCBQbGF0Zm9ybUNBQW5pbWF0aW9uKiBh
bmltYXRpb24pOworICAgIAorcHJpdmF0ZToKKyAgICBBbmltYXRpb25UeXBlIG1fdHlwZTsKKyAg
ICAKKyNpZiBQTEFURk9STShNQUMpCisgICAgUmV0YWluUHRyPENBUHJvcGVydHlBbmltYXRpb24+
IG1fYW5pbWF0aW9uOworI2VsaWYgUExBVEZPUk0oV0lOKQorICAgIFJldGFpblB0cjxDQUNGQW5p
bWF0aW9uUmVmPiBtX2FuaW1hdGlvbjsKKyNlbmRpZgorfTsKKworfQorCisjZW5kaWYgLy8gVVNF
KEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorCisjZW5kaWYgLy8gUGxhdGZvcm1DQUFuaW1hdGlv
bl9oCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxh
eWVyLmgJKHJldmlzaW9uIDczMjM2KQkoZnJvbSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L1BsYXRmb3JtQ0FMYXllci5oOjczMjM2KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS9QbGF0Zm9ybUNBTGF5ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIwOCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lm
bmRlZiBQbGF0Zm9ybUNBTGF5ZXJfaAorI2RlZmluZSBQbGF0Zm9ybUNBTGF5ZXJfaAorCisjaWYg
VVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNBLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1DQUFu
aW1hdGlvbi5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgUGxhdGZvcm1DQUxheWVyOworCit0eXBlZGVmIFZlY3RvcjxSZWZQdHI8
UGxhdGZvcm1DQUxheWVyPiA+IFBsYXRmb3JtQ0FMYXllckxpc3Q7CisKK2NsYXNzIFBsYXRmb3Jt
Q0FMYXllciA6IHB1YmxpYyBSZWZDb3VudGVkPFBsYXRmb3JtQ0FMYXllcj4geworcHVibGljOgor
ICAgIC8vIFRpbGVkTGF5ZXIgdXNlZCBpbiBHcmFwaGljc0xheWVyIGhhcyBjb25zdGFudCBzZXR0
aW5nczoKKyAgICAvLyAgICAgIGNUaWxlZExheWVyVGlsZVNpemUgPSA1MTIKKyAgICAvLyAgICAg
IHNldFRpbGVTaXplOihjVGlsZWRMYXllclRpbGVTaXplLCBjVGlsZWRMYXllclRpbGVTaXplKQor
ICAgIC8vICAgICAgc2V0TGV2ZWxzT2ZEZXRhaWw6MQorICAgIC8vICAgICAgc2V0TGV2ZWxzT2ZE
ZXRhaWxCaWFzOjAKKyAgICAvLyAgICAgIHNldENvbnRlbnRzR3Jhdml0eTpAImJvdHRvbUxlZnQi
CisgICAgLy8KKyAgICAvLyBUaWxlZExheWVyIGFsc28gaGFzIGRyYXdpbmcgZnVuY3Rpb25zIGxp
a2UgV2ViTGF5ZXIKKyAgICAvLworICAgIC8vIFdlYkxheWVyIGlzIGEgQ0FMYXllciB3aXRoIGRy
YXdpbmcgZnVuY3Rpb25zIHNwZWNpZmljIHRvIFdlYktpdAorICAgIC8vCisgICAgLy8gTGF5ZXIg
YW5kIFRyYW5zZm9ybUxheWVyIGFyZSB1c2VkIGFzIGlzCisKKyAgICBlbnVtIExheWVyVHlwZSB7
IExheWVyVHlwZUxheWVyLCBMYXllclR5cGVXZWJMYXllciwgTGF5ZXJUeXBlVHJhbnNmb3JtTGF5
ZXIsIExheWVyVHlwZVdlYlRpbGVkTGF5ZXIsIExheWVyVHlwZUN1c3RvbSB9OworICAgIGVudW0g
RmlsdGVyVHlwZSB7IExpbmVhciwgTmVhcmVzdCwgVHJpbGluZWFyIH07CisKKyAgICBzdGF0aWMg
UGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IGNyZWF0ZShMYXllclR5cGUsIEdyYXBoaWNzTGF5
ZXJDQSopOworICAgIAorICAgIC8vIFRoaXMgZnVuY3Rpb24gcGFzc2VzIHRoZSBsYXllciBhcyBh
IHZvaWQqIHJhdGhlciB0aGFuIGEgUGxhdGZvcm1MYXllciBiZWNhdXNlIFBsYXRmb3JtTGF5ZXIK
KyAgICAvLyBpcyBkZWZpbmVkIGRpZmZlcmVudGx5IGZvciBPYmogQyBhbmQgQysrLiBUaGlzIGFs
bG93cyBjYWxsZXJzIGZyb20gYm90aCBsYW5ndWFnZXMuCisgICAgc3RhdGljIFBhc3NSZWZQdHI8
UGxhdGZvcm1DQUxheWVyPiBjcmVhdGUodm9pZCogcGxhdGZvcm1MYXllciwgR3JhcGhpY3NMYXll
ckNBKik7CisKKyAgICB+UGxhdGZvcm1DQUxheWVyKCk7CisgICAgCisgICAgLy8gVGhpcyBmdW5j
dGlvbiBwYXNzZXMgdGhlIGxheWVyIGFzIGEgdm9pZCogcmF0aGVyIHRoYW4gYSBQbGF0Zm9ybUxh
eWVyIGJlY2F1c2UgUGxhdGZvcm1MYXllcgorICAgIC8vIGlzIGRlZmluZWQgZGlmZmVyZW50bHkg
Zm9yIE9iaiBDIGFuZCBDKysuIFRoaXMgYWxsb3dzIGNhbGxlcnMgZnJvbSBib3RoIGxhbmd1YWdl
cy4KKyAgICBzdGF0aWMgUGxhdGZvcm1DQUxheWVyKiBwbGF0Zm9ybUNBTGF5ZXIodm9pZCogcGxh
dGZvcm1MYXllcik7CisgICAgCisgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNv
bnN0OworICAgIAorICAgIHN0YXRpYyBib29sIGlzVmFsdWVGdW5jdGlvblN1cHBvcnRlZCgpOwor
ICAgIAorICAgIEdyYXBoaWNzTGF5ZXJDQSogb3duZXIoKSBjb25zdCB7IHJldHVybiBtX293bmVy
OyB9CisgICAgdm9pZCBzZXRPd25lcihHcmFwaGljc0xheWVyQ0EqIG93bmVyKTsKKworICAgIHZv
aWQgYW5pbWF0aW9uU3RhcnRlZChDRlRpbWVJbnRlcnZhbCBiZWdpblRpbWUpCisgICAgeworICAg
ICAgICBpZiAobV9vd25lcikKKyAgICAgICAgICAgIG1fb3duZXItPmFuaW1hdGlvblN0YXJ0ZWQo
YmVnaW5UaW1lKTsKKyAgICB9CisKKyAgICB2b2lkIHNldE5lZWRzRGlzcGxheShjb25zdCBGbG9h
dFJlY3QqIGRpcnR5UmVjdCA9IDApOworICAgIAorICAgIHZvaWQgc2V0Q29udGVudHNDaGFuZ2Vk
KCk7CisgICAgCisgICAgTGF5ZXJUeXBlIGxheWVyVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGF5
ZXJUeXBlOyB9CisKKyAgICBQbGF0Zm9ybUNBTGF5ZXIqIHN1cGVybGF5ZXIoKSBjb25zdDsKKyAg
ICB2b2lkIHJlbW92ZUZyb21TdXBlcmxheWVyKCk7CisgICAgdm9pZCBzZXRTdWJsYXllcnMoY29u
c3QgUGxhdGZvcm1DQUxheWVyTGlzdCYpOworICAgIHZvaWQgcmVtb3ZlQWxsU3VibGF5ZXJzKCk7
CisgICAgdm9pZCBhcHBlbmRTdWJsYXllcihQbGF0Zm9ybUNBTGF5ZXIqKTsKKyAgICB2b2lkIGlu
c2VydFN1YmxheWVyKFBsYXRmb3JtQ0FMYXllciosIHNpemVfdCBpbmRleCk7CisgICAgdm9pZCBy
ZXBsYWNlU3VibGF5ZXIoUGxhdGZvcm1DQUxheWVyKiByZWZlcmVuY2UsIFBsYXRmb3JtQ0FMYXll
ciopOworICAgIHNpemVfdCBzdWJsYXllckNvdW50KCkgY29uc3Q7CisKKyAgICAvLyBUaGlzIG1l
dGhvZCByZW1vdmVzIHRoZSBzdWJsYXllcnMgZnJvbSB0aGUgc291cmNlIGFuZCByZXBhcmVudHMg
dGhlbSB0byB0aGUgY3VycmVudCBsYXllci4KKyAgICB2b2lkIGFkb3B0U3VibGF5ZXJzKFBsYXRm
b3JtQ0FMYXllciogc291cmNlKTsKKyAgICAKKyAgICB2b2lkIGFkZEFuaW1hdGlvbkZvcktleShj
b25zdCBTdHJpbmcmIGtleSwgUGxhdGZvcm1DQUFuaW1hdGlvbiogYW5pbWF0aW9uKTsgICAgCisg
ICAgdm9pZCByZW1vdmVBbmltYXRpb25Gb3JLZXkoY29uc3QgU3RyaW5nJiBrZXkpOworICAgIFBh
c3NSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gYW5pbWF0aW9uRm9yS2V5KGNvbnN0IFN0cmlu
ZyYga2V5KTsKKyAgICAKKyAgICBQbGF0Zm9ybUNBTGF5ZXIqIG1hc2soKSBjb25zdDsKKyAgICB2
b2lkIHNldE1hc2soUGxhdGZvcm1DQUxheWVyKik7CisgICAgCisgICAgYm9vbCBpc09wYXF1ZSgp
IGNvbnN0OworICAgIHZvaWQgc2V0T3BhcXVlKGJvb2wpOworCisgICAgRmxvYXRSZWN0IGJvdW5k
cygpIGNvbnN0OworICAgIHZvaWQgc2V0Qm91bmRzKGNvbnN0IEZsb2F0UmVjdCYpOworCisgICAg
RmxvYXRQb2ludDNEIHBvc2l0aW9uKCkgY29uc3Q7CisgICAgdm9pZCBzZXRQb3NpdGlvbihjb25z
dCBGbG9hdFBvaW50M0QmKTsKKyAgICB2b2lkIHNldFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQm
IHBvcykgeyBzZXRQb3NpdGlvbihGbG9hdFBvaW50M0QocG9zLngoKSwgcG9zLnkoKSwgMCkpOyB9
CisKKyAgICBGbG9hdFBvaW50M0QgYW5jaG9yUG9pbnQoKSBjb25zdDsKKyAgICB2b2lkIHNldEFu
Y2hvclBvaW50KGNvbnN0IEZsb2F0UG9pbnQzRCYpOworCisgICAgVHJhbnNmb3JtYXRpb25NYXRy
aXggdHJhbnNmb3JtKCkgY29uc3Q7CisgICAgdm9pZCBzZXRUcmFuc2Zvcm0oY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaXgmKTsKKworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHN1YmxheWVyVHJh
bnNmb3JtKCkgY29uc3Q7CisgICAgdm9pZCBzZXRTdWJsYXllclRyYW5zZm9ybShjb25zdCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYpOworCisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggY29udGVudHNU
cmFuc2Zvcm0oKSBjb25zdDsKKyAgICB2b2lkIHNldENvbnRlbnRzVHJhbnNmb3JtKGNvbnN0IFRy
YW5zZm9ybWF0aW9uTWF0cml4Jik7CisKKyAgICBib29sIGlzSGlkZGVuKCkgY29uc3Q7CisgICAg
dm9pZCBzZXRIaWRkZW4oYm9vbCk7CisKKyAgICBib29sIGlzR2VvbWV0cnlGbGlwcGVkKCkgY29u
c3Q7CisgICAgdm9pZCBzZXRHZW9tZXRyeUZsaXBwZWQoYm9vbCk7CisKKyAgICBib29sIGlzRG91
YmxlU2lkZWQoKSBjb25zdDsKKyAgICB2b2lkIHNldERvdWJsZVNpZGVkKGJvb2wpOworCisgICAg
Ym9vbCBtYXNrc1RvQm91bmRzKCkgY29uc3Q7CisgICAgdm9pZCBzZXRNYXNrc1RvQm91bmRzKGJv
b2wpOworCisgICAgdm9pZCogY29udGVudHMoKSBjb25zdDsKKyAgICB2b2lkIHNldENvbnRlbnRz
KHZvaWQqKTsKKworICAgIEZsb2F0UmVjdCBjb250ZW50c1JlY3QoKSBjb25zdDsKKyAgICB2b2lk
IHNldENvbnRlbnRzUmVjdChjb25zdCBGbG9hdFJlY3QmKTsKKworICAgIHZvaWQgc2V0TWluaWZp
Y2F0aW9uRmlsdGVyKEZpbHRlclR5cGUpOworICAgIHZvaWQgc2V0TWFnbmlmaWNhdGlvbkZpbHRl
cihGaWx0ZXJUeXBlKTsKKworICAgIENvbG9yIGJhY2tncm91bmRDb2xvcigpIGNvbnN0OworICAg
IHZvaWQgc2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IENvbG9yJik7CisKKyAgICBmbG9hdCBib3Jk
ZXJXaWR0aCgpIGNvbnN0OworICAgIHZvaWQgc2V0Qm9yZGVyV2lkdGgoZmxvYXQpOworCisgICAg
Q29sb3IgYm9yZGVyQ29sb3IoKSBjb25zdDsKKyAgICB2b2lkIHNldEJvcmRlckNvbG9yKGNvbnN0
IENvbG9yJik7CisKKyAgICBmbG9hdCBvcGFjaXR5KCkgY29uc3Q7CisgICAgdm9pZCBzZXRPcGFj
aXR5KGZsb2F0KTsKKworICAgIFN0cmluZyBuYW1lKCkgY29uc3Q7CisgICAgdm9pZCBzZXROYW1l
KGNvbnN0IFN0cmluZyYpOworCisgICAgRmxvYXRSZWN0IGZyYW1lKCkgY29uc3Q7CisgICAgdm9p
ZCBzZXRGcmFtZShjb25zdCBGbG9hdFJlY3QmKTsKKworICAgIGZsb2F0IHNwZWVkKCkgY29uc3Q7
CisgICAgdm9pZCBzZXRTcGVlZChmbG9hdCk7CisKKyAgICBDRlRpbWVJbnRlcnZhbCB0aW1lT2Zm
c2V0KCkgY29uc3Q7CisgICAgdm9pZCBzZXRUaW1lT2Zmc2V0KENGVGltZUludGVydmFsKTsKKwor
cHJvdGVjdGVkOgorICAgIFBsYXRmb3JtQ0FMYXllcihMYXllclR5cGUsIFBsYXRmb3JtTGF5ZXIq
LCBHcmFwaGljc0xheWVyQ0EqKTsKKyAgICAKK3ByaXZhdGU6CisgICAgCisgICAgR3JhcGhpY3NM
YXllckNBKiBtX293bmVyOworICAgIExheWVyVHlwZSBtX2xheWVyVHlwZTsKKyAgICAKKyNpZiBQ
TEFURk9STShNQUMpIHx8IFBMQVRGT1JNKFdJTikKKyAgICBSZXRhaW5QdHI8UGxhdGZvcm1MYXll
cj4gbV9sYXllcjsKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oTUFDKQorI2lmZGVmIF9fT0JKQ19f
CisgICAgUmV0YWluUHRyPE5TT2JqZWN0PiBtX2RlbGVnYXRlOworI2Vsc2UKKyAgICBSZXRhaW5Q
dHI8dm9pZD4gbV9kZWxlZ2F0ZTsKKyNlbmRpZgorI2VuZGlmCit9OworCit9CisKKyNlbmRpZiAv
LyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisKKyNlbmRpZiAvLyBQbGF0Zm9ybUNBTGF5
ZXJfaApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvUGxhdGZvcm1DQUFu
aW1hdGlvbk1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9uTWFjLm1tCShyZXZpc2lvbiA3MzIzNikJKGZyb20gV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvUGxhdGZvcm1DQUFuaW1hdGlvbk1hYy5tbTo3
MzIzNikKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1BsYXRmb3JtQ0FBbmlt
YXRpb25NYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1OTMgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKworI2ltcG9ydCAi
UGxhdGZvcm1DQUFuaW1hdGlvbi5oIgorCisjaW1wb3J0ICJGbG9hdENvbnZlcnNpb24uaCIKKyNp
bXBvcnQgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW1wb3J0ICJUaW1pbmdGdW5jdGlvbi5oIgorI2lt
cG9ydCA8UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+CisjaW1wb3J0IDx3dGYvVW51c2VkUGFyYW0u
aD4KKworI2RlZmluZSBIQVZFX01PREVSTl9RVUFSVFpDT1JFICghZGVmaW5lZChCVUlMRElOR19P
Tl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkpCisKK3VzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOworCisvLyBUaGlzIHZhbHVlIG11c3QgYmUgdGhlIHNhbWUgYXMgaW4gUGxh
dGZvcm1DQUxheWVyTWFjLm1tCitzdGF0aWMgY29uc3QgTlNTdHJpbmcqIFdLTm9uWmVyb0JlZ2lu
VGltZUZsYWcgPSBAIldLUGxhdGZvcm1DQUFuaW1hdGlvbk5vblplcm9CZWdpblRpbWVGbGFnIjsK
Kworc3RhdGljIGlubGluZSB2b2lkIGNvcHlUcmFuc2Zvcm0oQ0FUcmFuc2Zvcm0zRCYgdG9UM0Qs
IGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0KQoreworICAgIHRvVDNELm0xMSA9IG5hcnJv
d1ByZWNpc2lvblRvRmxvYXQodC5tMTEoKSk7CisgICAgdG9UM0QubTEyID0gbmFycm93UHJlY2lz
aW9uVG9GbG9hdCh0Lm0xMigpKTsKKyAgICB0b1QzRC5tMTMgPSBuYXJyb3dQcmVjaXNpb25Ub0Zs
b2F0KHQubTEzKCkpOworICAgIHRvVDNELm0xNCA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodC5t
MTQoKSk7CisgICAgdG9UM0QubTIxID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCh0Lm0yMSgpKTsK
KyAgICB0b1QzRC5tMjIgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHQubTIyKCkpOworICAgIHRv
VDNELm0yMyA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodC5tMjMoKSk7CisgICAgdG9UM0QubTI0
ID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCh0Lm0yNCgpKTsKKyAgICB0b1QzRC5tMzEgPSBuYXJy
b3dQcmVjaXNpb25Ub0Zsb2F0KHQubTMxKCkpOworICAgIHRvVDNELm0zMiA9IG5hcnJvd1ByZWNp
c2lvblRvRmxvYXQodC5tMzIoKSk7CisgICAgdG9UM0QubTMzID0gbmFycm93UHJlY2lzaW9uVG9G
bG9hdCh0Lm0zMygpKTsKKyAgICB0b1QzRC5tMzQgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHQu
bTM0KCkpOworICAgIHRvVDNELm00MSA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodC5tNDEoKSk7
CisgICAgdG9UM0QubTQyID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCh0Lm00MigpKTsKKyAgICB0
b1QzRC5tNDMgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHQubTQzKCkpOworICAgIHRvVDNELm00
NCA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodC5tNDQoKSk7Cit9CisKK3N0YXRpYyBOU1N0cmlu
ZyogdG9DQUZpbGxNb2RlVHlwZShQbGF0Zm9ybUNBQW5pbWF0aW9uOjpGaWxsTW9kZVR5cGUgdHlw
ZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIFBsYXRmb3JtQ0FBbmltYXRpb246
Ok5vRmlsbE1vZGU6CisgICAgY2FzZSBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpGb3J3YXJkczogcmV0
dXJuIGtDQUZpbGxNb2RlRm9yd2FyZHM7CisgICAgY2FzZSBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpC
YWNrd2FyZHM6IHJldHVybiBrQ0FGaWxsTW9kZUJhY2t3YXJkczsKKyAgICBjYXNlIFBsYXRmb3Jt
Q0FBbmltYXRpb246OkJvdGg6IHJldHVybiBrQ0FGaWxsTW9kZUJvdGg7CisgICAgfQorICAgIHJl
dHVybiBAIiI7Cit9CisKK3N0YXRpYyBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpGaWxsTW9kZVR5cGUg
ZnJvbUNBRmlsbE1vZGVUeXBlKE5TU3RyaW5nKiBzdHJpbmcpCit7CisgICAgaWYgKFtzdHJpbmcg
aXNFcXVhbFRvU3RyaW5nOmtDQUZpbGxNb2RlQmFja3dhcmRzXSkKKyAgICAgICAgcmV0dXJuIFBs
YXRmb3JtQ0FBbmltYXRpb246OkJhY2t3YXJkczsKKworICAgIGlmIChbc3RyaW5nIGlzRXF1YWxU
b1N0cmluZzprQ0FGaWxsTW9kZUJvdGhdKQorICAgICAgICByZXR1cm4gUGxhdGZvcm1DQUFuaW1h
dGlvbjo6Qm90aDsKKworICAgIHJldHVybiBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpGb3J3YXJkczsK
K30KKworI2lmIEhBVkVfTU9ERVJOX1FVQVJUWkNPUkUKK3N0YXRpYyBOU1N0cmluZyogdG9DQVZh
bHVlRnVuY3Rpb25UeXBlKFBsYXRmb3JtQ0FBbmltYXRpb246OlZhbHVlRnVuY3Rpb25UeXBlIHR5
cGUpCit7CisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBQbGF0Zm9ybUNBQW5pbWF0aW9u
OjpOb1ZhbHVlRnVuY3Rpb246IHJldHVybiBAIiI7CisgICAgY2FzZSBQbGF0Zm9ybUNBQW5pbWF0
aW9uOjpSb3RhdGVYOiByZXR1cm4ga0NBVmFsdWVGdW5jdGlvblJvdGF0ZVg7CisgICAgY2FzZSBQ
bGF0Zm9ybUNBQW5pbWF0aW9uOjpSb3RhdGVZOiByZXR1cm4ga0NBVmFsdWVGdW5jdGlvblJvdGF0
ZVk7CisgICAgY2FzZSBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpSb3RhdGVaOiByZXR1cm4ga0NBVmFs
dWVGdW5jdGlvblJvdGF0ZVo7CisgICAgY2FzZSBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpTY2FsZVg6
IHJldHVybiBrQ0FWYWx1ZUZ1bmN0aW9uU2NhbGVYOworICAgIGNhc2UgUGxhdGZvcm1DQUFuaW1h
dGlvbjo6U2NhbGVZOiByZXR1cm4ga0NBVmFsdWVGdW5jdGlvblNjYWxlWTsKKyAgICBjYXNlIFBs
YXRmb3JtQ0FBbmltYXRpb246OlNjYWxlWjogcmV0dXJuIGtDQVZhbHVlRnVuY3Rpb25TY2FsZVo7
CisgICAgY2FzZSBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpTY2FsZTogcmV0dXJuIGtDQVZhbHVlRnVu
Y3Rpb25TY2FsZTsKKyAgICBjYXNlIFBsYXRmb3JtQ0FBbmltYXRpb246OlRyYW5zbGF0ZVg6IHJl
dHVybiBrQ0FWYWx1ZUZ1bmN0aW9uVHJhbnNsYXRlWDsKKyAgICBjYXNlIFBsYXRmb3JtQ0FBbmlt
YXRpb246OlRyYW5zbGF0ZVk6IHJldHVybiBrQ0FWYWx1ZUZ1bmN0aW9uVHJhbnNsYXRlWTsKKyAg
ICBjYXNlIFBsYXRmb3JtQ0FBbmltYXRpb246OlRyYW5zbGF0ZVo6IHJldHVybiBrQ0FWYWx1ZUZ1
bmN0aW9uVHJhbnNsYXRlWjsKKyAgICBjYXNlIFBsYXRmb3JtQ0FBbmltYXRpb246OlRyYW5zbGF0
ZTogcmV0dXJuIGtDQVZhbHVlRnVuY3Rpb25UcmFuc2xhdGU7CisgICAgfQorICAgIHJldHVybiBA
IiI7Cit9CisKK3N0YXRpYyBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpWYWx1ZUZ1bmN0aW9uVHlwZSBm
cm9tQ0FWYWx1ZUZ1bmN0aW9uVHlwZShOU1N0cmluZyogc3RyaW5nKQoreworICAgIGlmIChbc3Ry
aW5nIGlzRXF1YWxUb1N0cmluZzprQ0FWYWx1ZUZ1bmN0aW9uUm90YXRlWF0pCisgICAgICAgIHJl
dHVybiBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpSb3RhdGVYOworCisgICAgaWYgKFtzdHJpbmcgaXNF
cXVhbFRvU3RyaW5nOmtDQVZhbHVlRnVuY3Rpb25Sb3RhdGVZXSkKKyAgICAgICAgcmV0dXJuIFBs
YXRmb3JtQ0FBbmltYXRpb246OlJvdGF0ZVk7CisKKyAgICBpZiAoW3N0cmluZyBpc0VxdWFsVG9T
dHJpbmc6a0NBVmFsdWVGdW5jdGlvblJvdGF0ZVpdKQorICAgICAgICByZXR1cm4gUGxhdGZvcm1D
QUFuaW1hdGlvbjo6Um90YXRlWjsKKworICAgIGlmIChbc3RyaW5nIGlzRXF1YWxUb1N0cmluZzpr
Q0FWYWx1ZUZ1bmN0aW9uU2NhbGVYXSkKKyAgICAgICAgcmV0dXJuIFBsYXRmb3JtQ0FBbmltYXRp
b246OlNjYWxlWDsKKworICAgIGlmIChbc3RyaW5nIGlzRXF1YWxUb1N0cmluZzprQ0FWYWx1ZUZ1
bmN0aW9uU2NhbGVZXSkKKyAgICAgICAgcmV0dXJuIFBsYXRmb3JtQ0FBbmltYXRpb246OlNjYWxl
WTsKKworICAgIGlmIChbc3RyaW5nIGlzRXF1YWxUb1N0cmluZzprQ0FWYWx1ZUZ1bmN0aW9uU2Nh
bGVaXSkKKyAgICAgICAgcmV0dXJuIFBsYXRmb3JtQ0FBbmltYXRpb246OlNjYWxlWjsKKworICAg
IGlmIChbc3RyaW5nIGlzRXF1YWxUb1N0cmluZzprQ0FWYWx1ZUZ1bmN0aW9uU2NhbGVdKQorICAg
ICAgICByZXR1cm4gUGxhdGZvcm1DQUFuaW1hdGlvbjo6U2NhbGU7CisKKyAgICBpZiAoW3N0cmlu
ZyBpc0VxdWFsVG9TdHJpbmc6a0NBVmFsdWVGdW5jdGlvblRyYW5zbGF0ZVhdKQorICAgICAgICBy
ZXR1cm4gUGxhdGZvcm1DQUFuaW1hdGlvbjo6VHJhbnNsYXRlWDsKKworICAgIGlmIChbc3RyaW5n
IGlzRXF1YWxUb1N0cmluZzprQ0FWYWx1ZUZ1bmN0aW9uVHJhbnNsYXRlWV0pCisgICAgICAgIHJl
dHVybiBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpUcmFuc2xhdGVZOworCisgICAgaWYgKFtzdHJpbmcg
aXNFcXVhbFRvU3RyaW5nOmtDQVZhbHVlRnVuY3Rpb25UcmFuc2xhdGVaXSkKKyAgICAgICAgcmV0
dXJuIFBsYXRmb3JtQ0FBbmltYXRpb246OlRyYW5zbGF0ZVo7CisKKyAgICBpZiAoW3N0cmluZyBp
c0VxdWFsVG9TdHJpbmc6a0NBVmFsdWVGdW5jdGlvblRyYW5zbGF0ZV0pCisgICAgICAgIHJldHVy
biBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpUcmFuc2xhdGU7CisKKyAgICByZXR1cm4gUGxhdGZvcm1D
QUFuaW1hdGlvbjo6Tm9WYWx1ZUZ1bmN0aW9uOworfQorI2VuZGlmCisKK3N0YXRpYyBDQU1lZGlh
VGltaW5nRnVuY3Rpb24qIHRvQ0FNZWRpYVRpbWluZ0Z1bmN0aW9uKGNvbnN0IFRpbWluZ0Z1bmN0
aW9uKiB0aW1pbmdGdW5jdGlvbikKK3sKKyAgICBpZiAoIXRpbWluZ0Z1bmN0aW9uKQorICAgICAg
ICByZXR1cm4gW0NBTWVkaWFUaW1pbmdGdW5jdGlvbiBmdW5jdGlvbldpdGhOYW1lOmtDQU1lZGlh
VGltaW5nRnVuY3Rpb25EZWZhdWx0XTsKKyAgICAgICAgICAgIAorICAgIGlmICh0aW1pbmdGdW5j
dGlvbi0+aXNDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKCkpIHsKKyAgICAgICAgY29uc3QgQ3Vi
aWNCZXppZXJUaW1pbmdGdW5jdGlvbiogY3RmID0gc3RhdGljX2Nhc3Q8Y29uc3QgQ3ViaWNCZXpp
ZXJUaW1pbmdGdW5jdGlvbio+KHRpbWluZ0Z1bmN0aW9uKTsKKyAgICAgICAgcmV0dXJuIFtDQU1l
ZGlhVGltaW5nRnVuY3Rpb24gZnVuY3Rpb25XaXRoQ29udHJvbFBvaW50czpzdGF0aWNfY2FzdDxm
bG9hdD4oY3RmLT54MSgpKSA6c3RhdGljX2Nhc3Q8ZmxvYXQ+KGN0Zi0+eTEoKSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpz
dGF0aWNfY2FzdDxmbG9hdD4oY3RmLT54MigpKSA6c3RhdGljX2Nhc3Q8ZmxvYXQ+KGN0Zi0+eTIo
KSldOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gW0NBTWVkaWFUaW1pbmdGdW5jdGlvbiBmdW5j
dGlvbldpdGhOYW1lOmtDQU1lZGlhVGltaW5nRnVuY3Rpb25MaW5lYXJdOworCisgICAgcmV0dXJu
IDA7Cit9CisKK1Bhc3NSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gUGxhdGZvcm1DQUFuaW1h
dGlvbjo6Y3JlYXRlKEFuaW1hdGlvblR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoKQor
eworICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGxhdGZvcm1DQUFuaW1hdGlvbih0eXBlLCBrZXlQ
YXRoKSk7Cit9CisKK1Bhc3NSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gUGxhdGZvcm1DQUFu
aW1hdGlvbjo6Y3JlYXRlKFBsYXRmb3JtQW5pbWF0aW9uUmVmIGFuaW1hdGlvbikKK3sKKyAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFBsYXRmb3JtQ0FBbmltYXRpb24oYW5pbWF0aW9uKSk7Cit9CisK
K1Bhc3NSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gUGxhdGZvcm1DQUFuaW1hdGlvbjo6Y3Jl
YXRlKGNvbnN0IFBsYXRmb3JtQ0FBbmltYXRpb24qIGFuaW1hdGlvbikKK3sKKyAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFBsYXRmb3JtQ0FBbmltYXRpb24oYW5pbWF0aW9uKSk7Cit9CisKK1BsYXRm
b3JtQ0FBbmltYXRpb246OlBsYXRmb3JtQ0FBbmltYXRpb24oQW5pbWF0aW9uVHlwZSB0eXBlLCBj
b25zdCBTdHJpbmcmIGtleVBhdGgpCisgICAgOiBtX3R5cGUodHlwZSkKK3sKKyAgICBpZiAodHlw
ZSA9PSBCYXNpYykKKyAgICAgICAgbV9hbmltYXRpb24uYWRvcHROUyhbW0NBQmFzaWNBbmltYXRp
b24gYW5pbWF0aW9uV2l0aEtleVBhdGg6a2V5UGF0aF0gcmV0YWluXSk7CisgICAgZWxzZQorICAg
ICAgICBtX2FuaW1hdGlvbi5hZG9wdE5TKFtbQ0FLZXlmcmFtZUFuaW1hdGlvbiBhbmltYXRpb25X
aXRoS2V5UGF0aDprZXlQYXRoXSByZXRhaW5dKTsKK30KKworUGxhdGZvcm1DQUFuaW1hdGlvbjo6
UGxhdGZvcm1DQUFuaW1hdGlvbihQbGF0Zm9ybUFuaW1hdGlvblJlZiBhbmltYXRpb24pCit7Cisg
ICAgaWYgKFtzdGF0aWNfY2FzdDxDQUFuaW1hdGlvbio+KGFuaW1hdGlvbikgaXNLaW5kT2ZDbGFz
czpbQ0FCYXNpY0FuaW1hdGlvbiBjbGFzc11dKQorICAgICAgICBtX3R5cGUgPSBCYXNpYzsKKyAg
ICBlbHNlIGlmIChbc3RhdGljX2Nhc3Q8Q0FBbmltYXRpb24qPihhbmltYXRpb24pIGlzS2luZE9m
Q2xhc3M6W0NBS2V5ZnJhbWVBbmltYXRpb24gY2xhc3NdXSkKKyAgICAgICAgbV90eXBlID0gS2V5
ZnJhbWU7CisgICAgZWxzZSB7CisgICAgICAgIEFTU0VSVCgwKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICAKKyAgICBtX2FuaW1hdGlvbiA9IHN0YXRpY19jYXN0PENBUHJvcGVydHlBbmlt
YXRpb24qPihhbmltYXRpb24pOworfQorCitQbGF0Zm9ybUNBQW5pbWF0aW9uOjpQbGF0Zm9ybUNB
QW5pbWF0aW9uKGNvbnN0IFBsYXRmb3JtQ0FBbmltYXRpb24qIGFuaW1hdGlvbikKK3sKKyAgICBQ
bGF0Zm9ybUNBQW5pbWF0aW9uKiBuZXdBbmltYXRpb24gPSBuZXcgUGxhdGZvcm1DQUFuaW1hdGlv
bihhbmltYXRpb24tPmFuaW1hdGlvblR5cGUoKSwgYW5pbWF0aW9uLT5rZXlQYXRoKCkpOworCisg
ICAgbmV3QW5pbWF0aW9uLT5zZXRCZWdpblRpbWUoYW5pbWF0aW9uLT5iZWdpblRpbWUoKSk7Cisg
ICAgbmV3QW5pbWF0aW9uLT5zZXREdXJhdGlvbihhbmltYXRpb24tPmR1cmF0aW9uKCkpOworICAg
IG5ld0FuaW1hdGlvbi0+c2V0U3BlZWQoYW5pbWF0aW9uLT5zcGVlZCgpKTsKKyAgICBuZXdBbmlt
YXRpb24tPnNldFRpbWVPZmZzZXQoYW5pbWF0aW9uLT50aW1lT2Zmc2V0KCkpOworICAgIG5ld0Fu
aW1hdGlvbi0+c2V0UmVwZWF0Q291bnQoYW5pbWF0aW9uLT5yZXBlYXRDb3VudCgpKTsKKyAgICBu
ZXdBbmltYXRpb24tPnNldEF1dG9yZXZlcnNlcyhhbmltYXRpb24tPmF1dG9yZXZlcnNlcygpKTsK
KyAgICBuZXdBbmltYXRpb24tPnNldEZpbGxNb2RlKGFuaW1hdGlvbi0+ZmlsbE1vZGUoKSk7Cisg
ICAgbmV3QW5pbWF0aW9uLT5zZXRSZW1vdmVkT25Db21wbGV0aW9uKGFuaW1hdGlvbi0+aXNSZW1v
dmVkT25Db21wbGV0aW9uKCkpOworICAgIG5ld0FuaW1hdGlvbi0+c2V0QWRkaXRpdmUoYW5pbWF0
aW9uLT5pc0FkZGl0aXZlKCkpOworICAgIG5ld0FuaW1hdGlvbi0+Y29weVRpbWluZ0Z1bmN0aW9u
RnJvbShhbmltYXRpb24pOworCisjaWYgSEFWRV9NT0RFUk5fUVVBUlRaQ09SRQorICAgIG5ld0Fu
aW1hdGlvbi0+c2V0VmFsdWVGdW5jdGlvbihhbmltYXRpb24tPnZhbHVlRnVuY3Rpb24oKSk7Cisj
ZW5kaWYKKworICAgIG5ld0FuaW1hdGlvbi0+c2V0Tm9uWmVyb0JlZ2luVGltZUZsYWcoYW5pbWF0
aW9uLT5oYXNOb25aZXJvQmVnaW5UaW1lRmxhZygpKTsKKyAgICAKKyAgICAvLyBDb3B5IHRoZSBz
cGVjaWZpYyBCYXNpYyBvciBLZXlmcmFtZSB2YWx1ZXMKKyAgICBpZiAoYW5pbWF0aW9uLT5hbmlt
YXRpb25UeXBlKCkgPT0gS2V5ZnJhbWUpIHsKKyAgICAgICAgbmV3QW5pbWF0aW9uLT5jb3B5VmFs
dWVzRnJvbShhbmltYXRpb24pOworICAgICAgICBuZXdBbmltYXRpb24tPmNvcHlLZXlUaW1lc0Zy
b20oYW5pbWF0aW9uKTsKKyAgICAgICAgbmV3QW5pbWF0aW9uLT5jb3B5VGltaW5nRnVuY3Rpb25z
RnJvbShhbmltYXRpb24pOworICAgIH0gZWxzZSB7CisgICAgICAgIG5ld0FuaW1hdGlvbi0+Y29w
eUZyb21WYWx1ZUZyb20oYW5pbWF0aW9uKTsKKyAgICAgICAgbmV3QW5pbWF0aW9uLT5jb3B5VG9W
YWx1ZUZyb20oYW5pbWF0aW9uKTsKKyAgICB9Cit9CisKK1BsYXRmb3JtQ0FBbmltYXRpb246On5Q
bGF0Zm9ybUNBQW5pbWF0aW9uKCkKK3sKK30KKworYm9vbCBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpo
YXNOb25aZXJvQmVnaW5UaW1lRmxhZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIFtbbV9hbmltYXRp
b24uZ2V0KCkgdmFsdWVGb3JLZXk6V0tOb25aZXJvQmVnaW5UaW1lRmxhZ10gYm9vbFZhbHVlXTsK
K30KKwordm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpzZXROb25aZXJvQmVnaW5UaW1lRmxhZyhi
b29sIHZhbHVlKQoreworICAgIFttX2FuaW1hdGlvbi5nZXQoKSBzZXRWYWx1ZTpbTlNOdW1iZXIg
bnVtYmVyV2l0aEJvb2w6dmFsdWVdIGZvcktleTpXS05vblplcm9CZWdpblRpbWVGbGFnXTsKK30K
KyAgICAKK2Jvb2wgUGxhdGZvcm1DQUFuaW1hdGlvbjo6c3VwcG9ydHNWYWx1ZUZ1bmN0aW9uKCkK
K3sKKyAgICBzdGF0aWMgYm9vbCBzSGF2ZVZhbHVlRnVuY3Rpb24gPSBbQ0FQcm9wZXJ0eUFuaW1h
dGlvbiBpbnN0YW5jZXNSZXNwb25kVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2V0VmFsdWVGdW5jdGlv
bjopXTsKKyAgICByZXR1cm4gc0hhdmVWYWx1ZUZ1bmN0aW9uOworfQorCitQbGF0Zm9ybUFuaW1h
dGlvblJlZiBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpwbGF0Zm9ybUFuaW1hdGlvbigpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fYW5pbWF0aW9uLmdldCgpOworfQorCitTdHJpbmcgUGxhdGZvcm1DQUFu
aW1hdGlvbjo6a2V5UGF0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFttX2FuaW1hdGlvbi5nZXQo
KSBrZXlQYXRoXTsKK30KKworQ0ZUaW1lSW50ZXJ2YWwgUGxhdGZvcm1DQUFuaW1hdGlvbjo6YmVn
aW5UaW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gW21fYW5pbWF0aW9uLmdldCgpIGJlZ2luVGlt
ZV07Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbjo6c2V0QmVnaW5UaW1lKENGVGltZUlu
dGVydmFsIHZhbHVlKQoreworICAgIFttX2FuaW1hdGlvbi5nZXQoKSBzZXRCZWdpblRpbWU6dmFs
dWVdOworfQorCitDRlRpbWVJbnRlcnZhbCBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpkdXJhdGlvbigp
IGNvbnN0Cit7CisgICAgcmV0dXJuIFttX2FuaW1hdGlvbi5nZXQoKSBkdXJhdGlvbl07Cit9CisK
K3ZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbjo6c2V0RHVyYXRpb24oQ0ZUaW1lSW50ZXJ2YWwgdmFs
dWUpCit7CisgICAgW21fYW5pbWF0aW9uLmdldCgpIHNldER1cmF0aW9uOnZhbHVlXTsKK30KKwor
ZmxvYXQgUGxhdGZvcm1DQUFuaW1hdGlvbjo6c3BlZWQoKSBjb25zdAoreworICAgIHJldHVybiBb
bV9hbmltYXRpb24uZ2V0KCkgc3BlZWRdOworfQorCit2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb246
OnNldFNwZWVkKGZsb2F0IHZhbHVlKQoreworICAgIFttX2FuaW1hdGlvbi5nZXQoKSBzZXRTcGVl
ZDp2YWx1ZV07Cit9CisKK0NGVGltZUludGVydmFsIFBsYXRmb3JtQ0FBbmltYXRpb246OnRpbWVP
ZmZzZXQoKSBjb25zdAoreworICAgIHJldHVybiBbbV9hbmltYXRpb24uZ2V0KCkgdGltZU9mZnNl
dF07Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbjo6c2V0VGltZU9mZnNldChDRlRpbWVJ
bnRlcnZhbCB2YWx1ZSkKK3sKKyAgICBbbV9hbmltYXRpb24uZ2V0KCkgc2V0VGltZU9mZnNldDp2
YWx1ZV07Cit9CisKK2Zsb2F0IFBsYXRmb3JtQ0FBbmltYXRpb246OnJlcGVhdENvdW50KCkgY29u
c3QKK3sKKyAgICByZXR1cm4gW21fYW5pbWF0aW9uLmdldCgpIHJlcGVhdENvdW50XTsKK30KKwor
dm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpzZXRSZXBlYXRDb3VudChmbG9hdCB2YWx1ZSkKK3sK
KyAgICBbbV9hbmltYXRpb24uZ2V0KCkgc2V0UmVwZWF0Q291bnQ6dmFsdWVdOworfQorCitib29s
IFBsYXRmb3JtQ0FBbmltYXRpb246OmF1dG9yZXZlcnNlcygpIGNvbnN0Cit7CisgICAgcmV0dXJu
IFttX2FuaW1hdGlvbi5nZXQoKSBhdXRvcmV2ZXJzZXNdOworfQorCit2b2lkIFBsYXRmb3JtQ0FB
bmltYXRpb246OnNldEF1dG9yZXZlcnNlcyhib29sIHZhbHVlKQoreworICAgIFttX2FuaW1hdGlv
bi5nZXQoKSBzZXRBdXRvcmV2ZXJzZXM6dmFsdWVdOworfQorCitQbGF0Zm9ybUNBQW5pbWF0aW9u
OjpGaWxsTW9kZVR5cGUgUGxhdGZvcm1DQUFuaW1hdGlvbjo6ZmlsbE1vZGUoKSBjb25zdAorewor
ICAgIHJldHVybiBmcm9tQ0FGaWxsTW9kZVR5cGUoW21fYW5pbWF0aW9uLmdldCgpIGZpbGxNb2Rl
XSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbjo6c2V0RmlsbE1vZGUoRmlsbE1vZGVU
eXBlIHZhbHVlKQoreworICAgIFttX2FuaW1hdGlvbi5nZXQoKSBzZXRGaWxsTW9kZTp0b0NBRmls
bE1vZGVUeXBlKHZhbHVlKV07Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbjo6c2V0VGlt
aW5nRnVuY3Rpb24oY29uc3QgVGltaW5nRnVuY3Rpb24qIHZhbHVlKQoreworICAgIFttX2FuaW1h
dGlvbi5nZXQoKSBzZXRUaW1pbmdGdW5jdGlvbjp0b0NBTWVkaWFUaW1pbmdGdW5jdGlvbih2YWx1
ZSldOworfQorCit2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb246OmNvcHlUaW1pbmdGdW5jdGlvbkZy
b20oY29uc3QgUGxhdGZvcm1DQUFuaW1hdGlvbiogdmFsdWUpCit7CisgICAgW21fYW5pbWF0aW9u
LmdldCgpIHNldFRpbWluZ0Z1bmN0aW9uOlt2YWx1ZS0+bV9hbmltYXRpb24uZ2V0KCkgdGltaW5n
RnVuY3Rpb25dXTsKK30KKworYm9vbCBQbGF0Zm9ybUNBQW5pbWF0aW9uOjppc1JlbW92ZWRPbkNv
bXBsZXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBbbV9hbmltYXRpb24uZ2V0KCkgaXNSZW1v
dmVkT25Db21wbGV0aW9uXTsKK30KKwordm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpzZXRSZW1v
dmVkT25Db21wbGV0aW9uKGJvb2wgdmFsdWUpCit7CisgICAgW21fYW5pbWF0aW9uLmdldCgpIHNl
dFJlbW92ZWRPbkNvbXBsZXRpb246dmFsdWVdOworfQorCitib29sIFBsYXRmb3JtQ0FBbmltYXRp
b246OmlzQWRkaXRpdmUoKSBjb25zdAoreworICAgIHJldHVybiBbbV9hbmltYXRpb24uZ2V0KCkg
aXNBZGRpdGl2ZV07Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbjo6c2V0QWRkaXRpdmUo
Ym9vbCB2YWx1ZSkKK3sKKyAgICBbbV9hbmltYXRpb24uZ2V0KCkgc2V0QWRkaXRpdmU6dmFsdWVd
OworfQorCitQbGF0Zm9ybUNBQW5pbWF0aW9uOjpWYWx1ZUZ1bmN0aW9uVHlwZSBQbGF0Zm9ybUNB
QW5pbWF0aW9uOjp2YWx1ZUZ1bmN0aW9uKCkgY29uc3QKK3sKKyNpZiBIQVZFX01PREVSTl9RVUFS
VFpDT1JFCisgICAgQ0FWYWx1ZUZ1bmN0aW9uKiB2ZiA9IFttX2FuaW1hdGlvbi5nZXQoKSB2YWx1
ZUZ1bmN0aW9uXTsKKyAgICByZXR1cm4gZnJvbUNBVmFsdWVGdW5jdGlvblR5cGUoW3ZmIG5hbWVd
KTsKKyNlbHNlCisgICAgcmV0dXJuIE5vVmFsdWVGdW5jdGlvbjsKKyNlbmRpZgorfQorCit2b2lk
IFBsYXRmb3JtQ0FBbmltYXRpb246OnNldFZhbHVlRnVuY3Rpb24oVmFsdWVGdW5jdGlvblR5cGUg
dmFsdWUpCit7CisjaWYgSEFWRV9NT0RFUk5fUVVBUlRaQ09SRQorICAgIFttX2FuaW1hdGlvbi5n
ZXQoKSBzZXRWYWx1ZUZ1bmN0aW9uOltDQVZhbHVlRnVuY3Rpb24gZnVuY3Rpb25XaXRoTmFtZTp0
b0NBVmFsdWVGdW5jdGlvblR5cGUodmFsdWUpXV07CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTSh2
YWx1ZSk7CisjZW5kaWYKK30KKwordm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpzZXRGcm9tVmFs
dWUoZmxvYXQgdmFsdWUpCit7CisgICAgaWYgKGFuaW1hdGlvblR5cGUoKSAhPSBCYXNpYykKKyAg
ICAgICAgcmV0dXJuOworICAgIFtzdGF0aWNfY2FzdDxDQUJhc2ljQW5pbWF0aW9uKj4obV9hbmlt
YXRpb24uZ2V0KCkpIHNldEZyb21WYWx1ZTpbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTp2YWx1
ZV1dOworfQorCit2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb246OnNldEZyb21WYWx1ZShjb25zdCBX
ZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdmFsdWUpCit7CisgICAgaWYgKGFuaW1hdGlv
blR5cGUoKSAhPSBCYXNpYykKKyAgICAgICAgcmV0dXJuOworCisgICAgQ0FUcmFuc2Zvcm0zRCBj
YVRyYW5zZm9ybTsKKyAgICBjb3B5VHJhbnNmb3JtKGNhVHJhbnNmb3JtLCB2YWx1ZSk7CisgICAg
W3N0YXRpY19jYXN0PENBQmFzaWNBbmltYXRpb24qPihtX2FuaW1hdGlvbi5nZXQoKSkgc2V0RnJv
bVZhbHVlOltOU1ZhbHVlIHZhbHVlV2l0aENBVHJhbnNmb3JtM0Q6Y2FUcmFuc2Zvcm1dXTsKK30K
Kwordm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpzZXRGcm9tVmFsdWUoY29uc3QgRmxvYXRQb2lu
dDNEJiB2YWx1ZSkKK3sKKyAgICBpZiAoYW5pbWF0aW9uVHlwZSgpICE9IEJhc2ljKQorICAgICAg
ICByZXR1cm47CisKKyAgICBOU0FycmF5KiBhcnJheSA9IFtOU0FycmF5IGFycmF5V2l0aE9iamVj
dHM6CisgICAgICAgICAgICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTp2
YWx1ZS54KCldLAorICAgICAgICAgICAgICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhE
b3VibGU6dmFsdWUueSgpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFtOU051bWJlciBudW1i
ZXJXaXRoRG91YmxlOnZhbHVlLnooKV0sCisgICAgICAgICAgICAgICAgICAgICAgICBuaWxdOwor
ICAgIFtzdGF0aWNfY2FzdDxDQUJhc2ljQW5pbWF0aW9uKj4obV9hbmltYXRpb24uZ2V0KCkpIHNl
dEZyb21WYWx1ZTphcnJheV07Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbjo6c2V0RnJv
bVZhbHVlKGNvbnN0IFdlYkNvcmU6OkNvbG9yJiB2YWx1ZSkKK3sKKyAgICBpZiAoYW5pbWF0aW9u
VHlwZSgpICE9IEJhc2ljKQorICAgICAgICByZXR1cm47CisKKyAgICBOU0FycmF5KiBhcnJheSA9
IFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6CisgICAgICAgICAgICAgICAgICAgICAgICBbTlNO
dW1iZXIgbnVtYmVyV2l0aERvdWJsZTp2YWx1ZS5yZWQoKV0sCisgICAgICAgICAgICAgICAgICAg
ICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTp2YWx1ZS5ncmVlbigpXSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOnZhbHVlLmJsdWUoKV0s
CisgICAgICAgICAgICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTp2YWx1
ZS5hbHBoYSgpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG5pbF07CisgICAgW3N0YXRpY19j
YXN0PENBQmFzaWNBbmltYXRpb24qPihtX2FuaW1hdGlvbi5nZXQoKSkgc2V0RnJvbVZhbHVlOmFy
cmF5XTsKK30KKwordm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpjb3B5RnJvbVZhbHVlRnJvbShj
b25zdCBQbGF0Zm9ybUNBQW5pbWF0aW9uKiB2YWx1ZSkKK3sKKyAgICBpZiAoYW5pbWF0aW9uVHlw
ZSgpICE9IEJhc2ljIHx8IHZhbHVlLT5hbmltYXRpb25UeXBlKCkgIT0gQmFzaWMpCisgICAgICAg
IHJldHVybjsKKyAgICAgICAgCisgICAgQ0FCYXNpY0FuaW1hdGlvbiogb3RoZXJBbmltYXRpb24g
PSBzdGF0aWNfY2FzdDxDQUJhc2ljQW5pbWF0aW9uKj4odmFsdWUtPm1fYW5pbWF0aW9uLmdldCgp
KTsKKyAgICBbc3RhdGljX2Nhc3Q8Q0FCYXNpY0FuaW1hdGlvbio+KG1fYW5pbWF0aW9uLmdldCgp
KSBzZXRGcm9tVmFsdWU6W290aGVyQW5pbWF0aW9uIGZyb21WYWx1ZV1dOworfQorCit2b2lkIFBs
YXRmb3JtQ0FBbmltYXRpb246OnNldFRvVmFsdWUoZmxvYXQgdmFsdWUpCit7CisgICAgaWYgKGFu
aW1hdGlvblR5cGUoKSAhPSBCYXNpYykKKyAgICAgICAgcmV0dXJuOworICAgIFtzdGF0aWNfY2Fz
dDxDQUJhc2ljQW5pbWF0aW9uKj4obV9hbmltYXRpb24uZ2V0KCkpIHNldFRvVmFsdWU6W05TTnVt
YmVyIG51bWJlcldpdGhEb3VibGU6dmFsdWVdXTsKK30KKwordm9pZCBQbGF0Zm9ybUNBQW5pbWF0
aW9uOjpzZXRUb1ZhbHVlKGNvbnN0IFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4JiB2YWx1
ZSkKK3sKKyAgICBpZiAoYW5pbWF0aW9uVHlwZSgpICE9IEJhc2ljKQorICAgICAgICByZXR1cm47
CisKKyAgICBDQVRyYW5zZm9ybTNEIGNhVHJhbnNmb3JtOworICAgIGNvcHlUcmFuc2Zvcm0oY2FU
cmFuc2Zvcm0sIHZhbHVlKTsKKyAgICBbc3RhdGljX2Nhc3Q8Q0FCYXNpY0FuaW1hdGlvbio+KG1f
YW5pbWF0aW9uLmdldCgpKSBzZXRUb1ZhbHVlOltOU1ZhbHVlIHZhbHVlV2l0aENBVHJhbnNmb3Jt
M0Q6Y2FUcmFuc2Zvcm1dXTsKK30KKwordm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpzZXRUb1Zh
bHVlKGNvbnN0IEZsb2F0UG9pbnQzRCYgdmFsdWUpCit7CisgICAgaWYgKGFuaW1hdGlvblR5cGUo
KSAhPSBCYXNpYykKKyAgICAgICAgcmV0dXJuOworCisgICAgTlNBcnJheSogYXJyYXkgPSBbTlNB
cnJheSBhcnJheVdpdGhPYmplY3RzOgorICAgICAgICAgICAgICAgICAgICAgICAgW05TTnVtYmVy
IG51bWJlcldpdGhEb3VibGU6dmFsdWUueCgpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFtO
U051bWJlciBudW1iZXJXaXRoRG91YmxlOnZhbHVlLnkoKV0sCisgICAgICAgICAgICAgICAgICAg
ICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTp2YWx1ZS56KCldLAorICAgICAgICAgICAg
ICAgICAgICAgICAgbmlsXTsKKyAgICBbc3RhdGljX2Nhc3Q8Q0FCYXNpY0FuaW1hdGlvbio+KG1f
YW5pbWF0aW9uLmdldCgpKSBzZXRUb1ZhbHVlOmFycmF5XTsKK30KKwordm9pZCBQbGF0Zm9ybUNB
QW5pbWF0aW9uOjpzZXRUb1ZhbHVlKGNvbnN0IFdlYkNvcmU6OkNvbG9yJiB2YWx1ZSkKK3sKKyAg
ICBpZiAoYW5pbWF0aW9uVHlwZSgpICE9IEJhc2ljKQorICAgICAgICByZXR1cm47CisKKyAgICBO
U0FycmF5KiBhcnJheSA9IFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6CisgICAgICAgICAgICAg
ICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTp2YWx1ZS5yZWQoKV0sCisgICAg
ICAgICAgICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTp2YWx1ZS5ncmVl
bigpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRG91Ymxl
OnZhbHVlLmJsdWUoKV0sCisgICAgICAgICAgICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVy
V2l0aERvdWJsZTp2YWx1ZS5hbHBoYSgpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG5pbF07
CisgICAgW3N0YXRpY19jYXN0PENBQmFzaWNBbmltYXRpb24qPihtX2FuaW1hdGlvbi5nZXQoKSkg
c2V0VG9WYWx1ZTphcnJheV07Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbjo6Y29weVRv
VmFsdWVGcm9tKGNvbnN0IFBsYXRmb3JtQ0FBbmltYXRpb24qIHZhbHVlKQoreworICAgIGlmIChh
bmltYXRpb25UeXBlKCkgIT0gQmFzaWMgfHwgdmFsdWUtPmFuaW1hdGlvblR5cGUoKSAhPSBCYXNp
YykKKyAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICBDQUJhc2ljQW5pbWF0aW9uKiBvdGhl
ckFuaW1hdGlvbiA9IHN0YXRpY19jYXN0PENBQmFzaWNBbmltYXRpb24qPih2YWx1ZS0+bV9hbmlt
YXRpb24uZ2V0KCkpOworICAgIFtzdGF0aWNfY2FzdDxDQUJhc2ljQW5pbWF0aW9uKj4obV9hbmlt
YXRpb24uZ2V0KCkpIHNldFRvVmFsdWU6W290aGVyQW5pbWF0aW9uIHRvVmFsdWVdXTsKK30KKwor
CisvLyBLZXlmcmFtZS1hbmltYXRpb24gcHJvcGVydGllcy4KK3ZvaWQgUGxhdGZvcm1DQUFuaW1h
dGlvbjo6c2V0VmFsdWVzKGNvbnN0IFZlY3RvcjxmbG9hdD4mIHZhbHVlKQoreworICAgIGlmIChh
bmltYXRpb25UeXBlKCkgIT0gS2V5ZnJhbWUpCisgICAgICAgIHJldHVybjsKKyAgICAgICAgCisg
ICAgTlNNdXRhYmxlQXJyYXkqIGFycmF5ID0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsKKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHZhbHVlLnNpemUoKTsgKytpKQorICAgICAgICBbYXJyYXkg
YWRkT2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoRG91YmxlOnZhbHVlW2ldXV07CisgICAgW3N0
YXRpY19jYXN0PENBS2V5ZnJhbWVBbmltYXRpb24qPihtX2FuaW1hdGlvbi5nZXQoKSkgc2V0VmFs
dWVzOmFycmF5XTsKK30KKwordm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpzZXRWYWx1ZXMoY29u
c3QgVmVjdG9yPFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4PiYgdmFsdWUpCit7CisgICAg
aWYgKGFuaW1hdGlvblR5cGUoKSAhPSBLZXlmcmFtZSkKKyAgICAgICAgcmV0dXJuOworICAgICAg
ICAKKyAgICBOU011dGFibGVBcnJheSogYXJyYXkgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXldOwor
ICAgIENBVHJhbnNmb3JtM0QgY2FUcmFuc2Zvcm07CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHZhbHVlLnNpemUoKTsgKytpKSB7CisgICAgICAgIGNvcHlUcmFuc2Zvcm0oY2FUcmFuc2Zv
cm0sIHZhbHVlW2ldKTsKKyAgICAgICAgW2FycmF5IGFkZE9iamVjdDpbTlNWYWx1ZSB2YWx1ZVdp
dGhDQVRyYW5zZm9ybTNEOmNhVHJhbnNmb3JtXV07CisgICAgfQorICAgIFtzdGF0aWNfY2FzdDxD
QUtleWZyYW1lQW5pbWF0aW9uKj4obV9hbmltYXRpb24uZ2V0KCkpIHNldFZhbHVlczphcnJheV07
Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbjo6c2V0VmFsdWVzKGNvbnN0IFZlY3RvcjxG
bG9hdFBvaW50M0Q+JiB2YWx1ZSkKK3sKKyAgICBpZiAoYW5pbWF0aW9uVHlwZSgpICE9IEtleWZy
YW1lKQorICAgICAgICByZXR1cm47CisgICAgICAgIAorICAgIE5TTXV0YWJsZUFycmF5KiBhcnJh
eSA9IFtOU011dGFibGVBcnJheSBhcnJheV07CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHZhbHVlLnNpemUoKTsgKytpKSB7CisgICAgICAgIE5TQXJyYXkqIG9iamVjdCA9IFtOU0FycmF5
IGFycmF5V2l0aE9iamVjdHM6CisgICAgICAgICAgICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVt
YmVyV2l0aERvdWJsZTp2YWx1ZVtpXS54KCldLAorICAgICAgICAgICAgICAgICAgICAgICAgW05T
TnVtYmVyIG51bWJlcldpdGhEb3VibGU6dmFsdWVbaV0ueSgpXSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOnZhbHVlW2ldLnooKV0sCisgICAgICAg
ICAgICAgICAgICAgICAgICBuaWxdOworICAgICAgICBbYXJyYXkgYWRkT2JqZWN0Om9iamVjdF07
CisgICAgfQorICAgIFtzdGF0aWNfY2FzdDxDQUtleWZyYW1lQW5pbWF0aW9uKj4obV9hbmltYXRp
b24uZ2V0KCkpIHNldFZhbHVlczphcnJheV07Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUFuaW1hdGlv
bjo6c2V0VmFsdWVzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb2xvcj4mIHZhbHVlKQoreworICAg
IGlmIChhbmltYXRpb25UeXBlKCkgIT0gS2V5ZnJhbWUpCisgICAgICAgIHJldHVybjsKKyAgICAg
ICAgCisgICAgTlNNdXRhYmxlQXJyYXkqIGFycmF5ID0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsK
KworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmFsdWUuc2l6ZSgpOyArK2kpIHsKKyAgICAg
ICAgTlNBcnJheSogb2JqZWN0ID0gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czoKKyAgICAgICAg
ICAgICAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOnZhbHVlW2ldLnJlZCgp
XSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOnZh
bHVlW2ldLmdyZWVuKCldLAorICAgICAgICAgICAgICAgICAgICAgICAgW05TTnVtYmVyIG51bWJl
cldpdGhEb3VibGU6dmFsdWVbaV0uYmx1ZSgpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFtO
U051bWJlciBudW1iZXJXaXRoRG91YmxlOnZhbHVlW2ldLmFscGhhKCldLAorICAgICAgICAgICAg
ICAgICAgICAgICAgbmlsXTsKKyAgICAgICAgW2FycmF5IGFkZE9iamVjdDpvYmplY3RdOworICAg
IH0KKyAgICBbc3RhdGljX2Nhc3Q8Q0FLZXlmcmFtZUFuaW1hdGlvbio+KG1fYW5pbWF0aW9uLmdl
dCgpKSBzZXRWYWx1ZXM6YXJyYXldOworfQorCit2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb246OmNv
cHlWYWx1ZXNGcm9tKGNvbnN0IFBsYXRmb3JtQ0FBbmltYXRpb24qIHZhbHVlKQoreworICAgIGlm
IChhbmltYXRpb25UeXBlKCkgIT0gS2V5ZnJhbWUgfHwgdmFsdWUtPmFuaW1hdGlvblR5cGUoKSAh
PSBLZXlmcmFtZSkKKyAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICBDQUtleWZyYW1lQW5p
bWF0aW9uKiBvdGhlckFuaW1hdGlvbiA9IHN0YXRpY19jYXN0PENBS2V5ZnJhbWVBbmltYXRpb24q
Pih2YWx1ZS0+bV9hbmltYXRpb24uZ2V0KCkpOworICAgIFtzdGF0aWNfY2FzdDxDQUtleWZyYW1l
QW5pbWF0aW9uKj4obV9hbmltYXRpb24uZ2V0KCkpIHNldFZhbHVlczpbb3RoZXJBbmltYXRpb24g
dmFsdWVzXV07Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbjo6c2V0S2V5VGltZXMoY29u
c3QgVmVjdG9yPGZsb2F0PiYgdmFsdWUpCit7CisgICAgTlNNdXRhYmxlQXJyYXkqIGFycmF5ID0g
W05TTXV0YWJsZUFycmF5IGFycmF5XTsKKworICAgIGZvciAoc2l6ZV90IGk7IGkgPCB2YWx1ZS5z
aXplKCk7ICsraSkKKyAgICAgICAgW2FycmF5IGFkZE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0
aEZsb2F0OnZhbHVlW2ldXV07CisgICAgCisgICAgW3N0YXRpY19jYXN0PENBS2V5ZnJhbWVBbmlt
YXRpb24qPihtX2FuaW1hdGlvbi5nZXQoKSkgc2V0S2V5VGltZXM6YXJyYXldOworfQorCit2b2lk
IFBsYXRmb3JtQ0FBbmltYXRpb246OmNvcHlLZXlUaW1lc0Zyb20oY29uc3QgUGxhdGZvcm1DQUFu
aW1hdGlvbiogdmFsdWUpCit7CisgICAgQ0FLZXlmcmFtZUFuaW1hdGlvbiogb3RoZXIgPSBzdGF0
aWNfY2FzdDxDQUtleWZyYW1lQW5pbWF0aW9uKj4odmFsdWUtPm1fYW5pbWF0aW9uLmdldCgpKTsK
KyAgICBbc3RhdGljX2Nhc3Q8Q0FLZXlmcmFtZUFuaW1hdGlvbio+KG1fYW5pbWF0aW9uLmdldCgp
KSBzZXRLZXlUaW1lczpbb3RoZXIga2V5VGltZXNdXTsKK30KKwordm9pZCBQbGF0Zm9ybUNBQW5p
bWF0aW9uOjpzZXRUaW1pbmdGdW5jdGlvbnMoY29uc3QgVmVjdG9yPGNvbnN0IFRpbWluZ0Z1bmN0
aW9uKj4mIHZhbHVlKQoreworICAgIE5TTXV0YWJsZUFycmF5KiBhcnJheSA9IFtOU011dGFibGVB
cnJheSBhcnJheV07CisKKyAgICBmb3IgKHNpemVfdCBpOyBpIDwgdmFsdWUuc2l6ZSgpOyArK2kp
CisgICAgICAgIFthcnJheSBhZGRPYmplY3Q6dG9DQU1lZGlhVGltaW5nRnVuY3Rpb24odmFsdWVb
aV0pXTsKKyAgICAKKyAgICBbc3RhdGljX2Nhc3Q8Q0FLZXlmcmFtZUFuaW1hdGlvbio+KG1fYW5p
bWF0aW9uLmdldCgpKSBzZXRUaW1pbmdGdW5jdGlvbnM6YXJyYXldOworfQorCit2b2lkIFBsYXRm
b3JtQ0FBbmltYXRpb246OmNvcHlUaW1pbmdGdW5jdGlvbnNGcm9tKGNvbnN0IFBsYXRmb3JtQ0FB
bmltYXRpb24qIHZhbHVlKQoreworICAgIENBS2V5ZnJhbWVBbmltYXRpb24qIG90aGVyID0gc3Rh
dGljX2Nhc3Q8Q0FLZXlmcmFtZUFuaW1hdGlvbio+KHZhbHVlLT5tX2FuaW1hdGlvbi5nZXQoKSk7
CisgICAgW3N0YXRpY19jYXN0PENBS2V5ZnJhbWVBbmltYXRpb24qPihtX2FuaW1hdGlvbi5nZXQo
KSkgc2V0VGltaW5nRnVuY3Rpb25zOltvdGhlciB0aW1pbmdGdW5jdGlvbnNdXTsKK30KKworI2Vu
ZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKSW5kZXg6IFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvbWFjL1BsYXRmb3JtQ0FBbmltYXRpb25NYWMubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvUGxhdGZvcm1DQUFuaW1hdGlvbk1h
Yy5tbQkocmV2aXNpb24gNzMyOTMpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21h
Yy9QbGF0Zm9ybUNBQW5pbWF0aW9uTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNDYsNyArMTQ2
LDcgQEAgc3RhdGljIFBsYXRmb3JtQ0FBbmltYXRpb246OlZhbHVlRnVuY3Rpbwogc3RhdGljIENB
TWVkaWFUaW1pbmdGdW5jdGlvbiogdG9DQU1lZGlhVGltaW5nRnVuY3Rpb24oY29uc3QgVGltaW5n
RnVuY3Rpb24qIHRpbWluZ0Z1bmN0aW9uKQogewogICAgIGlmICghdGltaW5nRnVuY3Rpb24pCi0g
ICAgICAgIHJldHVybiBbQ0FNZWRpYVRpbWluZ0Z1bmN0aW9uIGZ1bmN0aW9uV2l0aE5hbWU6a0NB
TWVkaWFUaW1pbmdGdW5jdGlvbkRlZmF1bHRdOworICAgICAgICByZXR1cm4gW0NBTWVkaWFUaW1p
bmdGdW5jdGlvbiBmdW5jdGlvbldpdGhDb250cm9sUG9pbnRzOjAuMjVmIDowLjFmIDowLjI1ZiA6
MC4xZl07CiAgICAgICAgICAgICAKICAgICBpZiAodGltaW5nRnVuY3Rpb24tPmlzQ3ViaWNCZXpp
ZXJUaW1pbmdGdW5jdGlvbigpKSB7CiAgICAgICAgIGNvbnN0IEN1YmljQmV6aWVyVGltaW5nRnVu
Y3Rpb24qIGN0ZiA9IHN0YXRpY19jYXN0PGNvbnN0IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24q
Pih0aW1pbmdGdW5jdGlvbik7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21h
Yy9QbGF0Zm9ybUNBTGF5ZXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9tYWMvUGxhdGZvcm1DQUxheWVyTWFjLm1tCShyZXZpc2lvbiA3MzIzNikJKGZy
b20gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvUGxhdGZvcm1DQUxheWVyTWFjLm1t
OjczMjM2KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvUGxhdGZvcm1DQUxh
eWVyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzI3IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisKKyNpbXBvcnQgIlBs
YXRmb3JtQ0FMYXllci5oIgorCisjaW1wb3J0ICJCbG9ja0V4Y2VwdGlvbnMuaCIKKyNpbXBvcnQg
IkZsb2F0Q29udmVyc2lvbi5oIgorI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW1wb3J0
ICJHcmFwaGljc0xheWVyQ0EuaCIKKyNpbXBvcnQgIldlYkxheWVyLmgiCisjaW1wb3J0ICJXZWJU
aWxlZExheWVyLmgiCisjaW1wb3J0IDxvYmpjL29iamMtYXV0by5oPgorI2ltcG9ydCA8b2JqYy9v
YmpjLXJ1bnRpbWUuaD4KKyNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgorI2ltcG9y
dCA8d3RmL0N1cnJlbnRUaW1lLmg+CisjaW1wb3J0IDx3dGYvVW51c2VkUGFyYW0uaD4KKworI2Rl
ZmluZSBIQVZFX01PREVSTl9RVUFSVFpDT1JFICghZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikg
JiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkpCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOworCisvLyBUaGlzIHZhbHVlIG11c3QgYmUgdGhlIHNhbWUgYXMgaW4gUGxhdGZvcm1DQUFu
aW1hdGlvbk1hYy5tbQorc3RhdGljIGNvbnN0IE5TU3RyaW5nKiBXS05vblplcm9CZWdpblRpbWVG
bGFnID0gQCJXS1BsYXRmb3JtQ0FBbmltYXRpb25Ob25aZXJvQmVnaW5UaW1lRmxhZyI7CisKK3N0
YXRpYyBkb3VibGUgbWVkaWFUaW1lVG9DdXJyZW50VGltZShDRlRpbWVJbnRlcnZhbCB0KQorewor
ICAgIHJldHVybiBXVEY6OmN1cnJlbnRUaW1lKCkgKyB0IC0gQ0FDdXJyZW50TWVkaWFUaW1lKCk7
Cit9CisKKy8vIERlbGVnYXRlIGZvciBhbmltYXRpb25EaWRTdGFydCBjYWxsYmFjaworQGludGVy
ZmFjZSBXZWJBbmltYXRpb25EZWxlZ2F0ZSA6IE5TT2JqZWN0IHsKKyAgICBQbGF0Zm9ybUNBTGF5
ZXIqIG1fb3duZXI7Cit9CisKKy0gKHZvaWQpYW5pbWF0aW9uRGlkU3RhcnQ6KENBQW5pbWF0aW9u
ICopYW5pbTsKKy0gKHZvaWQpc2V0T3duZXI6KFBsYXRmb3JtQ0FMYXllciopb3duZXI7CisKK0Bl
bmQKKworQGltcGxlbWVudGF0aW9uIFdlYkFuaW1hdGlvbkRlbGVnYXRlCisKKy0gKHZvaWQpYW5p
bWF0aW9uRGlkU3RhcnQ6KENBQW5pbWF0aW9uICopYW5pbWF0aW9uCit7CisgICAgLy8gaGFzTm9u
WmVyb0JlZ2luVGltZSBpcyBzdG9yZWQgaW4gYSBrZXkgaW4gdGhlIGFuaW1hdGlvbgorICAgIGJv
b2wgaGFzTm9uWmVyb0JlZ2luVGltZSA9IFtbYW5pbWF0aW9uIHZhbHVlRm9yS2V5OldLTm9uWmVy
b0JlZ2luVGltZUZsYWddIGJvb2xWYWx1ZV07CisgICAgQ0ZUaW1lSW50ZXJ2YWwgc3RhcnRUaW1l
OworICAgIAorICAgIGlmIChoYXNOb25aZXJvQmVnaW5UaW1lKSB7CisgICAgICAgIC8vIFdlIGRv
bid0IGtub3cgd2hhdCB0aW1lIENBIHVzZWQgdG8gY29tbWl0IHRoZSBhbmltYXRpb24sIHNvIGp1
c3QgdXNlIHRoZSBjdXJyZW50IHRpbWUKKyAgICAgICAgLy8gKGV2ZW4gdGhvdWdoIHRoaXMgd2ls
bCBiZSBzbGlnaHRseSBvZmYpLgorICAgICAgICBzdGFydFRpbWUgPSBtZWRpYVRpbWVUb0N1cnJl
bnRUaW1lKENBQ3VycmVudE1lZGlhVGltZSgpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgc3RhcnRU
aW1lID0gbWVkaWFUaW1lVG9DdXJyZW50VGltZShbYW5pbWF0aW9uIGJlZ2luVGltZV0pOworCisg
ICAgaWYgKG1fb3duZXIpCisgICAgICAgIG1fb3duZXItPmFuaW1hdGlvblN0YXJ0ZWQoc3RhcnRU
aW1lKTsKK30KKworLSAodm9pZClzZXRPd25lcjooUGxhdGZvcm1DQUxheWVyKilvd25lcgorewor
ICAgIG1fb3duZXIgPSBvd25lcjsKK30KKworQGVuZAorCitAaW50ZXJmYWNlIENBTGF5ZXIoUHJp
dmF0ZSkKKy0gKHZvaWQpc2V0Q29udGVudHNDaGFuZ2VkOworQGVuZAorCitzdGF0aWMgY29uc3Qg
TlNTdHJpbmcqIHBsYXRmb3JtQ0FMYXllclBvaW50ZXIgPSBAIldLUGxhdGZvcm1DQUxheWVyIjsK
Kworc3RhdGljIGlubGluZSB2b2lkIGNvcHlUcmFuc2Zvcm0oQ0FUcmFuc2Zvcm0zRCYgdG9UM0Qs
IGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0KQoreworICAgIHRvVDNELm0xMSA9IG5hcnJv
d1ByZWNpc2lvblRvRmxvYXQodC5tMTEoKSk7CisgICAgdG9UM0QubTEyID0gbmFycm93UHJlY2lz
aW9uVG9GbG9hdCh0Lm0xMigpKTsKKyAgICB0b1QzRC5tMTMgPSBuYXJyb3dQcmVjaXNpb25Ub0Zs
b2F0KHQubTEzKCkpOworICAgIHRvVDNELm0xNCA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodC5t
MTQoKSk7CisgICAgdG9UM0QubTIxID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCh0Lm0yMSgpKTsK
KyAgICB0b1QzRC5tMjIgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHQubTIyKCkpOworICAgIHRv
VDNELm0yMyA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodC5tMjMoKSk7CisgICAgdG9UM0QubTI0
ID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCh0Lm0yNCgpKTsKKyAgICB0b1QzRC5tMzEgPSBuYXJy
b3dQcmVjaXNpb25Ub0Zsb2F0KHQubTMxKCkpOworICAgIHRvVDNELm0zMiA9IG5hcnJvd1ByZWNp
c2lvblRvRmxvYXQodC5tMzIoKSk7CisgICAgdG9UM0QubTMzID0gbmFycm93UHJlY2lzaW9uVG9G
bG9hdCh0Lm0zMygpKTsKKyAgICB0b1QzRC5tMzQgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHQu
bTM0KCkpOworICAgIHRvVDNELm00MSA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodC5tNDEoKSk7
CisgICAgdG9UM0QubTQyID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCh0Lm00MigpKTsKKyAgICB0
b1QzRC5tNDMgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHQubTQzKCkpOworICAgIHRvVDNELm00
NCA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodC5tNDQoKSk7Cit9CisKK2Jvb2wgUGxhdGZvcm1D
QUxheWVyOjppc1ZhbHVlRnVuY3Rpb25TdXBwb3J0ZWQoKQoreworICAgIHN0YXRpYyBib29sIHNI
YXZlVmFsdWVGdW5jdGlvbiA9IFtDQVByb3BlcnR5QW5pbWF0aW9uIGluc3RhbmNlc1Jlc3BvbmRU
b1NlbGVjdG9yOkBzZWxlY3RvcihzZXRWYWx1ZUZ1bmN0aW9uOildOworICAgIHJldHVybiBzSGF2
ZVZhbHVlRnVuY3Rpb247Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyOjpzZXRPd25lcihHcmFw
aGljc0xheWVyQ0EqIG93bmVyKQoreworICAgIG1fb3duZXIgPSBvd25lcjsKKyAgICAKKyAgICAv
LyBDaGFuZ2UgdGhlIGRlbGVnYXRlJ3Mgb3duZXIgaWYgbmVlZGVkCisgICAgaWYgKG1fZGVsZWdh
dGUpCisgICAgICAgIFtzdGF0aWNfY2FzdDxXZWJBbmltYXRpb25EZWxlZ2F0ZSo+KG1fZGVsZWdh
dGUuZ2V0KCkpIHNldE93bmVyOnRoaXNdOyAgICAgICAgCit9CisKK3N0YXRpYyBOU0RpY3Rpb25h
cnkqIG51bGxBY3Rpb25zRGljdGlvbmFyeSgpCit7CisgICAgTlNOdWxsKiBudWxsVmFsdWUgPSBb
TlNOdWxsIG51bGxdOworICAgIE5TRGljdGlvbmFyeSogYWN0aW9ucyA9IFtOU0RpY3Rpb25hcnkg
ZGljdGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5czoKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbnVsbFZhbHVlLCBAImFuY2hvclBvaW50IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbnVsbFZhbHVlLCBAImJvdW5kcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51
bGxWYWx1ZSwgQCJjb250ZW50cyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxW
YWx1ZSwgQCJjb250ZW50c1JlY3QiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxs
VmFsdWUsIEAib3BhY2l0eSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxWYWx1
ZSwgQCJwb3NpdGlvbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxWYWx1ZSwg
QCJzaGFkb3dDb2xvciIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxWYWx1ZSwg
QCJzdWJsYXllclRyYW5zZm9ybSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxW
YWx1ZSwgQCJzdWJsYXllcnMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsVmFs
dWUsIEAidHJhbnNmb3JtIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbFZhbHVl
LCBAInpQb3NpdGlvbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pbF07CisgICAg
cmV0dXJuIGFjdGlvbnM7Cit9CisKKyNpZiBIQVZFX01PREVSTl9RVUFSVFpDT1JFCitzdGF0aWMg
TlNTdHJpbmcqIHRvQ0FGaWx0ZXJUeXBlKFBsYXRmb3JtQ0FMYXllcjo6RmlsdGVyVHlwZSB0eXBl
KQoreworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMaW5l
YXI6IHJldHVybiBrQ0FGaWx0ZXJMaW5lYXI7CisgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6Ok5l
YXJlc3Q6IHJldHVybiBrQ0FGaWx0ZXJOZWFyZXN0OworICAgIGNhc2UgUGxhdGZvcm1DQUxheWVy
OjpUcmlsaW5lYXI6IHJldHVybiBrQ0FGaWx0ZXJUcmlsaW5lYXI7CisgICAgZGVmYXVsdDogcmV0
dXJuIDA7CisgICAgfQorfQorI2VuZGlmCisKK1Bhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBQ
bGF0Zm9ybUNBTGF5ZXI6OmNyZWF0ZShMYXllclR5cGUgbGF5ZXJUeXBlLCBHcmFwaGljc0xheWVy
Q0EqIG93bmVyKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGxhdGZvcm1DQUxheWVyKGxh
eWVyVHlwZSwgMCwgb3duZXIpKTsKK30KKworUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IFBs
YXRmb3JtQ0FMYXllcjo6Y3JlYXRlKHZvaWQqIHBsYXRmb3JtTGF5ZXIsIEdyYXBoaWNzTGF5ZXJD
QSogb3duZXIpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQbGF0Zm9ybUNBTGF5ZXIoTGF5
ZXJUeXBlQ3VzdG9tLCBzdGF0aWNfY2FzdDxQbGF0Zm9ybUxheWVyKj4ocGxhdGZvcm1MYXllciks
IG93bmVyKSk7Cit9CisKK1BsYXRmb3JtQ0FMYXllcjo6UGxhdGZvcm1DQUxheWVyKExheWVyVHlw
ZSBsYXllclR5cGUsIFBsYXRmb3JtTGF5ZXIqIGxheWVyLCBHcmFwaGljc0xheWVyQ0EqIG93bmVy
KQorICAgIDogbV9vd25lcihvd25lcikKK3sKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElP
TlMKKyAgICBpZiAobGF5ZXIpIHsKKyAgICAgICAgbV9sYXllclR5cGUgPSBMYXllclR5cGVDdXN0
b207CisgICAgICAgIG1fbGF5ZXIgPSBsYXllcjsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2xh
eWVyVHlwZSA9IGxheWVyVHlwZTsKKyAgICAKKyAgICAgICAgQ2xhc3MgbGF5ZXJDbGFzczsKKyAg
ICAgICAgc3dpdGNoKGxheWVyVHlwZSkgeworICAgICAgICAgICAgY2FzZSBMYXllclR5cGVMYXll
cjoKKyAgICAgICAgICAgICAgICBsYXllckNsYXNzID0gW0NBTGF5ZXIgY2xhc3NdOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBMYXllclR5cGVXZWJMYXllcjoKKyAg
ICAgICAgICAgICAgICBsYXllckNsYXNzID0gW1dlYkxheWVyIGNsYXNzXTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyNpZiBIQVZFX01PREVSTl9RVUFSVFpDT1JFCisgICAgICAgICAgICBjYXNl
IExheWVyVHlwZVRyYW5zZm9ybUxheWVyOgorICAgICAgICAgICAgICAgIGxheWVyQ2xhc3MgPSBb
Q0FUcmFuc2Zvcm1MYXllciBjbGFzc107CisgICAgICAgICAgICAgICAgYnJlYWs7CisjZW5kaWYK
KyAgICAgICAgICAgIGNhc2UgTGF5ZXJUeXBlV2ViVGlsZWRMYXllcjoKKyAgICAgICAgICAgICAg
ICBsYXllckNsYXNzID0gW1dlYlRpbGVkTGF5ZXIgY2xhc3NdOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgY2FzZSBMYXllclR5cGVDdXN0b206CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBpZiAobGF5ZXJDbGFzcykKKyAgICAgICAgICAg
IG1fbGF5ZXIuYWRvcHROUyhbW2xheWVyQ2xhc3MgYWxsb2NdIGluaXRdKTsKKyAgICB9CisgICAg
CisgICAgLy8gU2F2ZSBhIHBvaW50ZXIgdG8gJ3RoaXMnIGluIHRoZSBDQUxheWVyCisgICAgW21f
bGF5ZXIuZ2V0KCkgc2V0VmFsdWU6W05TVmFsdWUgdmFsdWVXaXRoUG9pbnRlcjp0aGlzXSBmb3JL
ZXk6cGxhdGZvcm1DQUxheWVyUG9pbnRlcl07CisgICAgCisgICAgLy8gQ2xlYXIgYWxsIHRoZSBp
bXBsaWNpdCBhbmltYXRpb25zIG9uIHRoZSBDQUxheWVyCisgICAgW21fbGF5ZXIuZ2V0KCkgc2V0
U3R5bGU6W05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdDpudWxsQWN0aW9uc0RpY3Rp
b25hcnkoKSBmb3JLZXk6QCJhY3Rpb25zIl1dOworICAgIAorICAgIC8vIElmIHRoaXMgaXMgYSBU
aWxlZExheWVyLCBzZXQgc29tZSBpbml0aWFsIHZhbHVlcworICAgIGlmIChtX2xheWVyVHlwZSA9
PSBMYXllclR5cGVXZWJUaWxlZExheWVyKSB7CisgICAgICAgIFdlYlRpbGVkTGF5ZXIqIHRpbGVk
TGF5ZXIgPSBzdGF0aWNfY2FzdDxXZWJUaWxlZExheWVyKj4obV9sYXllci5nZXQoKSk7CisgICAg
ICAgIFt0aWxlZExheWVyIHNldFRpbGVTaXplOkNHU2l6ZU1ha2UoR3JhcGhpY3NMYXllckNBOjpr
VGlsZWRMYXllclRpbGVTaXplLCBHcmFwaGljc0xheWVyQ0E6OmtUaWxlZExheWVyVGlsZVNpemUp
XTsKKyAgICAgICAgW3RpbGVkTGF5ZXIgc2V0TGV2ZWxzT2ZEZXRhaWw6MV07CisgICAgICAgIFt0
aWxlZExheWVyIHNldExldmVsc09mRGV0YWlsQmlhczowXTsKKyAgICAgICAgW3RpbGVkTGF5ZXIg
c2V0Q29udGVudHNHcmF2aXR5OkAiYm90dG9tTGVmdCJdOworICAgIH0KKyAgICAKKyAgICBFTkRf
QkxPQ0tfT0JKQ19FWENFUFRJT05TCit9CisKK1BsYXRmb3JtQ0FMYXllcjo6flBsYXRmb3JtQ0FM
YXllcigpCit7CisgICAgLy8gQ2xlYXIgdGhlIG93bmVyLCB3aGljaCBhbHNvIGNsZWFycyBpdCBp
biB0aGUgZGVsZWdhdGUgdG8gcHJldmVudCBhdHRlbXB0cyAKKyAgICAvLyB0byB1c2UgdGhlIEdy
YXBoaWNzTGF5ZXJDQSBhZnRlciBpdCBoYXMgYmVlbiBkZXN0cm95ZWQuCisgICAgc2V0T3duZXIo
MCk7CisgICAgCisgICAgLy8gUmVtb3ZlIHRoZSBvd25lciBwb2ludGVyIGZyb20gdGhlIGRlbGVn
YXRlIGluIGNhc2UgdGhlcmUgaXMgYSBwZW5kaW5nIGFuaW1hdGlvblN0YXJ0ZWQgZXZlbnQuCisg
ICAgW3N0YXRpY19jYXN0PFdlYkFuaW1hdGlvbkRlbGVnYXRlKj4obV9kZWxlZ2F0ZS5nZXQoKSkg
c2V0T3duZXI6bmlsXTsgICAgICAgIAorfQorCitQbGF0Zm9ybUNBTGF5ZXIqIFBsYXRmb3JtQ0FM
YXllcjo6cGxhdGZvcm1DQUxheWVyKHZvaWQqIHBsYXRmb3JtTGF5ZXIpCit7CisgICAgaWYgKCFw
bGF0Zm9ybUxheWVyKQorICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgCisgICAgLy8gUG9pbnRl
ciB0byBQbGF0Zm9ybUNBTGF5ZXIgaXMga2VwdCBpbiBhIGtleSBvZiB0aGUgQ0FMYXllcgorICAg
IFBsYXRmb3JtQ0FMYXllciogcGxhdGZvcm1DQUxheWVyOworICAgIEJFR0lOX0JMT0NLX09CSkNf
RVhDRVBUSU9OUworICAgIHBsYXRmb3JtQ0FMYXllciA9IHN0YXRpY19jYXN0PFBsYXRmb3JtQ0FM
YXllcio+KFtbc3RhdGljX2Nhc3Q8Q0FMYXllcio+KHBsYXRmb3JtTGF5ZXIpIHZhbHVlRm9yS2V5
OnBsYXRmb3JtQ0FMYXllclBvaW50ZXJdIHBvaW50ZXJWYWx1ZV0pOworICAgIEVORF9CTE9DS19P
QkpDX0VYQ0VQVElPTlMKKyAgICByZXR1cm4gcGxhdGZvcm1DQUxheWVyOworfQorCitQbGF0Zm9y
bUxheWVyKiBQbGF0Zm9ybUNBTGF5ZXI6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAoreworICAgIHJl
dHVybiBtX2xheWVyLmdldCgpOworfQorCit2b2lkIFBsYXRmb3JtQ0FMYXllcjo6c2V0TmVlZHNE
aXNwbGF5KGNvbnN0IEZsb2F0UmVjdCogZGlydHlSZWN0KQoreworICAgIEJFR0lOX0JMT0NLX09C
SkNfRVhDRVBUSU9OUworICAgIGlmIChkaXJ0eVJlY3QpCisgICAgICAgIFttX2xheWVyLmdldCgp
IHNldE5lZWRzRGlzcGxheUluUmVjdDoqZGlydHlSZWN0XTsKKyAgICBlbHNlCisgICAgICAgIFtt
X2xheWVyLmdldCgpIHNldE5lZWRzRGlzcGxheV07CisgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBU
SU9OUworfQorICAgIAordm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OnNldENvbnRlbnRzQ2hhbmdlZCgp
Cit7CisgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCisgICAgW21fbGF5ZXIuZ2V0KCkg
c2V0Q29udGVudHNDaGFuZ2VkXTsKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCit9CisK
K1BsYXRmb3JtQ0FMYXllciogUGxhdGZvcm1DQUxheWVyOjpzdXBlcmxheWVyKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gcGxhdGZvcm1DQUxheWVyKFttX2xheWVyLmdldCgpIHN1cGVybGF5ZXJdKTsK
K30KKwordm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OnJlbW92ZUZyb21TdXBlcmxheWVyKCkKK3sKKyAg
ICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICBbbV9sYXllci5nZXQoKSByZW1vdmVG
cm9tU3VwZXJsYXllcl07CisgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUworfQorCit2b2lk
IFBsYXRmb3JtQ0FMYXllcjo6c2V0U3VibGF5ZXJzKGNvbnN0IFBsYXRmb3JtQ0FMYXllckxpc3Qm
IGxpc3QpCit7CisgICAgLy8gU2hvcnQgY2lyY3VpdGluZyBoZXJlIG5vdCBvbmx5IGF2b2lkcyB0
aGUgYWxsb2NhdGlvbiBvZiBzdWJsYXllcnMsIGJ1dCBhdm9pZHMgPHJkYXI6Ly9wcm9ibGVtLzcz
OTA3MTY+IChzZWUgYmVsb3cpCisgICAgaWYgKGxpc3Quc2l6ZSgpID09IDApIHsKKyAgICAgICAg
cmVtb3ZlQWxsU3VibGF5ZXJzKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAg
QkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCisgICAgTlNNdXRhYmxlQXJyYXkqIHN1YmxheWVy
cyA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdOworICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbGlzdC5zaXplKCk7ICsraSkKKyAgICAgICAgW3N1YmxheWVycyBhZGRPYmplY3Q6bGlz
dFtpXS0+bV9sYXllci5nZXQoKV07CisgICAgICAgIAorICAgIFttX2xheWVyLmdldCgpIHNldFN1
YmxheWVyczpzdWJsYXllcnNdOworICAgIFtzdWJsYXllcnMgcmVsZWFzZV07CisgICAgRU5EX0JM
T0NLX09CSkNfRVhDRVBUSU9OUworfQorCit2b2lkIFBsYXRmb3JtQ0FMYXllcjo6cmVtb3ZlQWxs
U3VibGF5ZXJzKCkKK3sKKyAgICAvLyBXb3JrYXJvdW5kIGZvciA8cmRhcjovL3Byb2JsZW0vNzM5
MDcxNj46IC1bQ0FMYXllciBzZXRTdWJsYXllcnM6XSBjcmFzaGVzIGlmIHN1YmxheWVycyBpcyBh
biBlbXB0eSBhcnJheSwgb3IgbmlsLCB1bmRlciBHQy4KKyAgICBCRUdJTl9CTE9DS19PQkpDX0VY
Q0VQVElPTlMKKyAgICBpZiAob2JqY19jb2xsZWN0aW5nRW5hYmxlZCgpKQorICAgICAgICB3aGls
ZSAoW1ttX2xheWVyLmdldCgpIHN1YmxheWVyc10gY291bnRdKQorICAgICAgICAgICAgW1tbbV9s
YXllci5nZXQoKSBzdWJsYXllcnNdIG9iamVjdEF0SW5kZXg6MF0gcmVtb3ZlRnJvbVN1cGVybGF5
ZXJdOworICAgIGVsc2UKKyAgICAgICAgW21fbGF5ZXIuZ2V0KCkgc2V0U3VibGF5ZXJzOm5pbF07
CisgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUworfQorCit2b2lkIFBsYXRmb3JtQ0FMYXll
cjo6YXBwZW5kU3VibGF5ZXIoUGxhdGZvcm1DQUxheWVyKiBsYXllcikKK3sKKyAgICBCRUdJTl9C
TE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICBbbV9sYXllci5nZXQoKSBhZGRTdWJsYXllcjpsYXll
ci0+bV9sYXllci5nZXQoKV07CisgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUworfQorCit2
b2lkIFBsYXRmb3JtQ0FMYXllcjo6aW5zZXJ0U3VibGF5ZXIoUGxhdGZvcm1DQUxheWVyKiBsYXll
ciwgc2l6ZV90IGluZGV4KQoreworICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUworICAg
IFttX2xheWVyLmdldCgpIGluc2VydFN1YmxheWVyOmxheWVyLT5tX2xheWVyLmdldCgpIGF0SW5k
ZXg6aW5kZXhdOworICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKK30KKwordm9pZCBQbGF0
Zm9ybUNBTGF5ZXI6OnJlcGxhY2VTdWJsYXllcihQbGF0Zm9ybUNBTGF5ZXIqIHJlZmVyZW5jZSwg
UGxhdGZvcm1DQUxheWVyKiBsYXllcikKK3sKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElP
TlMKKyAgICBbbV9sYXllci5nZXQoKSByZXBsYWNlU3VibGF5ZXI6cmVmZXJlbmNlLT5tX2xheWVy
LmdldCgpIHdpdGg6bGF5ZXItPm1fbGF5ZXIuZ2V0KCldOworICAgIEVORF9CTE9DS19PQkpDX0VY
Q0VQVElPTlMKK30KKworc2l6ZV90IFBsYXRmb3JtQ0FMYXllcjo6c3VibGF5ZXJDb3VudCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIFtbbV9sYXllci5nZXQoKSBzdWJsYXllcnNdIGNvdW50XTsKK30K
Kwordm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OmFkb3B0U3VibGF5ZXJzKFBsYXRmb3JtQ0FMYXllciog
c291cmNlKQoreworICAgIC8vIFdvcmthcm91bmQgZm9yIDxyZGFyOi8vcHJvYmxlbS83MzkwNzE2
PjogLVtDQUxheWVyIHNldFN1YmxheWVyczpdIGNyYXNoZXMgaWYgc3VibGF5ZXJzIGlzIGFuIGVt
cHR5IGFycmF5LCBvciBuaWwsIHVuZGVyIEdDLgorICAgIE5TQXJyYXkqIHN1YmxheWVycyA9IFtz
b3VyY2UtPm1fbGF5ZXIuZ2V0KCkgc3VibGF5ZXJzXTsKKyAgICAKKyAgICBpZiAob2JqY19jb2xs
ZWN0aW5nRW5hYmxlZCgpICYmICFbc3VibGF5ZXJzIGNvdW50XSkgeworICAgICAgICBCRUdJTl9C
TE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICAgICAgd2hpbGUgKFtbbV9sYXllci5nZXQoKSBzdWJs
YXllcnNdIGNvdW50XSkKKyAgICAgICAgICAgIFtbW21fbGF5ZXIuZ2V0KCkgc3VibGF5ZXJzXSBv
YmplY3RBdEluZGV4OjBdIHJlbW92ZUZyb21TdXBlcmxheWVyXTsKKyAgICAgICAgRU5EX0JMT0NL
X09CSkNfRVhDRVBUSU9OUworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIEJFR0lO
X0JMT0NLX09CSkNfRVhDRVBUSU9OUworICAgIFttX2xheWVyLmdldCgpIHNldFN1YmxheWVyczpz
dWJsYXllcnNdOworICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKK30KKwordm9pZCBQbGF0
Zm9ybUNBTGF5ZXI6OmFkZEFuaW1hdGlvbkZvcktleShjb25zdCBTdHJpbmcmIGtleSwgUGxhdGZv
cm1DQUFuaW1hdGlvbiogYW5pbWF0aW9uKQoreworICAgIC8vIEFkZCB0aGUgZGVsZWdhdGUKKyAg
ICBpZiAoIW1fZGVsZWdhdGUpIHsKKyAgICAgICAgV2ViQW5pbWF0aW9uRGVsZWdhdGUqIHdlYkFu
aW1hdGlvbkRlbGVnYXRlID0gW1tXZWJBbmltYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF07Cisg
ICAgICAgIG1fZGVsZWdhdGUuYWRvcHROUyh3ZWJBbmltYXRpb25EZWxlZ2F0ZSk7CisgICAgICAg
IFt3ZWJBbmltYXRpb25EZWxlZ2F0ZSBzZXRPd25lcjp0aGlzXTsKKyAgICB9CisgICAgCisgICAg
Q0FQcm9wZXJ0eUFuaW1hdGlvbiogcHJvcGVydHlBbmltYXRpb24gPSBzdGF0aWNfY2FzdDxDQVBy
b3BlcnR5QW5pbWF0aW9uKj4oYW5pbWF0aW9uLT5wbGF0Zm9ybUFuaW1hdGlvbigpKTsKKworICAg
IGlmICghW3Byb3BlcnR5QW5pbWF0aW9uIGRlbGVnYXRlXSkKKyAgICAgICAgW3Byb3BlcnR5QW5p
bWF0aW9uIHNldERlbGVnYXRlOnN0YXRpY19jYXN0PGlkPihtX2RlbGVnYXRlLmdldCgpKV07Cisg
ICAgIAorICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUworICAgIFttX2xheWVyLmdldCgp
IGFkZEFuaW1hdGlvbjphbmltYXRpb24tPm1fYW5pbWF0aW9uLmdldCgpIGZvcktleTprZXldOwor
ICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKK30KKwordm9pZCBQbGF0Zm9ybUNBTGF5ZXI6
OnJlbW92ZUFuaW1hdGlvbkZvcktleShjb25zdCBTdHJpbmcmIGtleSkKK3sKKyAgICBCRUdJTl9C
TE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICBbbV9sYXllci5nZXQoKSByZW1vdmVBbmltYXRpb25G
b3JLZXk6a2V5XTsKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCit9CisKK1Bhc3NSZWZQ
dHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gUGxhdGZvcm1DQUxheWVyOjphbmltYXRpb25Gb3JLZXko
Y29uc3QgU3RyaW5nJiBrZXkpCit7CisgICAgQ0FBbmltYXRpb24qIGFuaW0gPSBbbV9sYXllci5n
ZXQoKSBhbmltYXRpb25Gb3JLZXk6a2V5XTsKKyAgICBpZiAoIWFuaW0pCisgICAgICAgIHJldHVy
biAwOworICAgIHJldHVybiBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpjcmVhdGUoYW5pbSk7Cit9CisK
K1BsYXRmb3JtQ0FMYXllciogUGxhdGZvcm1DQUxheWVyOjptYXNrKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gcGxhdGZvcm1DQUxheWVyKFttX2xheWVyLmdldCgpIG1hc2tdKTsKK30KKwordm9pZCBQ
bGF0Zm9ybUNBTGF5ZXI6OnNldE1hc2soUGxhdGZvcm1DQUxheWVyKiBsYXllcikKK3sKKyAgICBC
RUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICBbbV9sYXllci5nZXQoKSBzZXRNYXNrOmxh
eWVyID8gbGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSA6IDBdOworICAgIEVORF9CTE9DS19PQkpDX0VY
Q0VQVElPTlMKK30KKworYm9vbCBQbGF0Zm9ybUNBTGF5ZXI6OmlzT3BhcXVlKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gW21fbGF5ZXIuZ2V0KCkgaXNPcGFxdWVdOworfQorCit2b2lkIFBsYXRmb3Jt
Q0FMYXllcjo6c2V0T3BhcXVlKGJvb2wgdmFsdWUpCit7CisgICAgQkVHSU5fQkxPQ0tfT0JKQ19F
WENFUFRJT05TCisgICAgW21fbGF5ZXIuZ2V0KCkgc2V0T3BhcXVlOnZhbHVlXTsKKyAgICBFTkRf
QkxPQ0tfT0JKQ19FWENFUFRJT05TCit9CisKK0Zsb2F0UmVjdCBQbGF0Zm9ybUNBTGF5ZXI6OmJv
dW5kcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIFttX2xheWVyLmdldCgpIGJvdW5kc107Cit9CisK
K3ZvaWQgUGxhdGZvcm1DQUxheWVyOjpzZXRCb3VuZHMoY29uc3QgRmxvYXRSZWN0JiB2YWx1ZSkK
K3sKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICBbbV9sYXllci5nZXQoKSBz
ZXRCb3VuZHM6dmFsdWVdOworICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKK30KKworRmxv
YXRQb2ludDNEIFBsYXRmb3JtQ0FMYXllcjo6cG9zaXRpb24oKSBjb25zdAoreworICAgIENHUG9p
bnQgcG9pbnQgPSBbbV9sYXllci5nZXQoKSBwb3NpdGlvbl07CisgICAgcmV0dXJuIEZsb2F0UG9p
bnQzRChwb2ludC54LCBwb2ludC55LCBbbV9sYXllci5nZXQoKSB6UG9zaXRpb25dKTsKK30KKwor
dm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OnNldFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQzRCYgdmFs
dWUpCit7CisgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCisgICAgW21fbGF5ZXIuZ2V0
KCkgc2V0UG9zaXRpb246Q0dQb2ludE1ha2UodmFsdWUueCgpLCB2YWx1ZS55KCkpXTsKKyAgICBb
bV9sYXllci5nZXQoKSBzZXRaUG9zaXRpb246dmFsdWUueigpXTsKKyAgICBFTkRfQkxPQ0tfT0JK
Q19FWENFUFRJT05TCit9CisKK0Zsb2F0UG9pbnQzRCBQbGF0Zm9ybUNBTGF5ZXI6OmFuY2hvclBv
aW50KCkgY29uc3QKK3sKKyAgICBDR1BvaW50IHBvaW50ID0gW21fbGF5ZXIuZ2V0KCkgYW5jaG9y
UG9pbnRdOworICAgIGZsb2F0IHogPSAwOworI2lmIEhBVkVfTU9ERVJOX1FVQVJUWkNPUkUKKyAg
ICB6ID0gW21fbGF5ZXIuZ2V0KCkgYW5jaG9yUG9pbnRaXTsKKyNlbmRpZgorICAgIHJldHVybiBG
bG9hdFBvaW50M0QocG9pbnQueCwgcG9pbnQueSwgeik7Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxh
eWVyOjpzZXRBbmNob3JQb2ludChjb25zdCBGbG9hdFBvaW50M0QmIHZhbHVlKQoreworICAgIEJF
R0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUworICAgIFttX2xheWVyLmdldCgpIHNldEFuY2hvclBv
aW50OkNHUG9pbnRNYWtlKHZhbHVlLngoKSwgdmFsdWUueSgpKV07CisjaWYgSEFWRV9NT0RFUk5f
UVVBUlRaQ09SRQorICAgIFttX2xheWVyLmdldCgpIHNldEFuY2hvclBvaW50Wjp2YWx1ZS56KCld
OworI2VuZGlmCisgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUworfQorCitUcmFuc2Zvcm1h
dGlvbk1hdHJpeCBQbGF0Zm9ybUNBTGF5ZXI6OnRyYW5zZm9ybSgpIGNvbnN0Cit7CisgICAgQ0FU
cmFuc2Zvcm0zRCB0ID0gW21fbGF5ZXIuZ2V0KCkgdHJhbnNmb3JtXTsKKyAgICByZXR1cm4gVHJh
bnNmb3JtYXRpb25NYXRyaXgodC5tMTEsIHQubTEyLCB0Lm0xMywgdC5tMTQsIHQubTIxLCB0Lm0y
MiwgdC5tMjMsIHQubTI0LCB0Lm0zMSwgdC5tMzIsIHQubTMzLCB0Lm0zNCwgdC5tNDEsIHQubTQy
LCB0Lm00MywgdC5tNDQpOworfQorCit2b2lkIFBsYXRmb3JtQ0FMYXllcjo6c2V0VHJhbnNmb3Jt
KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB2YWx1ZSkKK3sKKyAgICBDQVRyYW5zZm9ybTNE
IHRyYW5zZm9ybTsKKyAgICBjb3B5VHJhbnNmb3JtKHRyYW5zZm9ybSwgdmFsdWUpOworICAgIEJF
R0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUworICAgIFttX2xheWVyLmdldCgpIHNldFRyYW5zZm9y
bTp0cmFuc2Zvcm1dOworICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKK30KKworVHJhbnNm
b3JtYXRpb25NYXRyaXggUGxhdGZvcm1DQUxheWVyOjpzdWJsYXllclRyYW5zZm9ybSgpIGNvbnN0
Cit7CisgICAgQ0FUcmFuc2Zvcm0zRCB0ID0gW21fbGF5ZXIuZ2V0KCkgc3VibGF5ZXJUcmFuc2Zv
cm1dOworICAgIHJldHVybiBUcmFuc2Zvcm1hdGlvbk1hdHJpeCh0Lm0xMSwgdC5tMTIsIHQubTEz
LCB0Lm0xNCwgdC5tMjEsIHQubTIyLCB0Lm0yMywgdC5tMjQsIHQubTMxLCB0Lm0zMiwgdC5tMzMs
IHQubTM0LCB0Lm00MSwgdC5tNDIsIHQubTQzLCB0Lm00NCk7Cit9CisKK3ZvaWQgUGxhdGZvcm1D
QUxheWVyOjpzZXRTdWJsYXllclRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYg
dmFsdWUpCit7CisgICAgQ0FUcmFuc2Zvcm0zRCB0cmFuc2Zvcm07CisgICAgY29weVRyYW5zZm9y
bSh0cmFuc2Zvcm0sIHZhbHVlKTsKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAg
ICBbbV9sYXllci5nZXQoKSBzZXRTdWJsYXllclRyYW5zZm9ybTp0cmFuc2Zvcm1dOworICAgIEVO
RF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKK30KKworVHJhbnNmb3JtYXRpb25NYXRyaXggUGxhdGZv
cm1DQUxheWVyOjpjb250ZW50c1RyYW5zZm9ybSgpIGNvbnN0Cit7CisjaWYgIUhBVkVfTU9ERVJO
X1FVQVJUWkNPUkUKKyAgICBpZiAobV9sYXllclR5cGUgIT0gTGF5ZXJUeXBlV2ViTGF5ZXIpCisg
ICAgICAgIHJldHVybiBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpOworICAgICAgICAKKyAgICBDR0Fm
ZmluZVRyYW5zZm9ybSB0ID0gW3N0YXRpY19jYXN0PFdlYkxheWVyKj4obV9sYXllci5nZXQoKSkg
Y29udGVudHNUcmFuc2Zvcm1dOworICAgIHJldHVybiBUcmFuc2Zvcm1hdGlvbk1hdHJpeCh0LmEs
IHQuYiwgdC5jLCB0LmQsIHQudHgsIHQudHkpOworI2Vsc2UKKyAgICByZXR1cm4gVHJhbnNmb3Jt
YXRpb25NYXRyaXgoKTsKKyNlbmRpZgorfQorCit2b2lkIFBsYXRmb3JtQ0FMYXllcjo6c2V0Q29u
dGVudHNUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHZhbHVlKQoreworI2lm
ICFIQVZFX01PREVSTl9RVUFSVFpDT1JFCisgICAgaWYgKG1fbGF5ZXJUeXBlICE9IExheWVyVHlw
ZVdlYkxheWVyKQorICAgICAgICByZXR1cm47CisKKyAgICBDR0FmZmluZVRyYW5zZm9ybSB0cmFu
c2Zvcm0gPSB2YWx1ZTsKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICBbbV9s
YXllci5nZXQoKSBzZXRDb250ZW50c1RyYW5zZm9ybTp0cmFuc2Zvcm1dOworICAgIEVORF9CTE9D
S19PQkpDX0VYQ0VQVElPTlMKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsKKyNlbmRp
ZgorfQorCitib29sIFBsYXRmb3JtQ0FMYXllcjo6aXNIaWRkZW4oKSBjb25zdAoreworICAgIHJl
dHVybiBbbV9sYXllci5nZXQoKSBpc0hpZGRlbl07Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVy
OjpzZXRIaWRkZW4oYm9vbCB2YWx1ZSkKK3sKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElP
TlMKKyAgICBbbV9sYXllci5nZXQoKSBzZXRIaWRkZW46dmFsdWVdOworICAgIEVORF9CTE9DS19P
QkpDX0VYQ0VQVElPTlMKK30KKworYm9vbCBQbGF0Zm9ybUNBTGF5ZXI6OmlzR2VvbWV0cnlGbGlw
cGVkKCkgY29uc3QKK3sKKyNpZiBIQVZFX01PREVSTl9RVUFSVFpDT1JFCisgICAgcmV0dXJuIFtt
X2xheWVyLmdldCgpIGlzR2VvbWV0cnlGbGlwcGVkXTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNl
OworI2VuZGlmCit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyOjpzZXRHZW9tZXRyeUZsaXBwZWQo
Ym9vbCB2YWx1ZSkKK3sKKyNpZiBIQVZFX01PREVSTl9RVUFSVFpDT1JFCisgICAgQkVHSU5fQkxP
Q0tfT0JKQ19FWENFUFRJT05TCisgICAgW21fbGF5ZXIuZ2V0KCkgc2V0R2VvbWV0cnlGbGlwcGVk
OnZhbHVlXTsKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCisjZWxzZQorICAgIFVOVVNF
RF9QQVJBTSh2YWx1ZSk7CisjZW5kaWYKK30KKworYm9vbCBQbGF0Zm9ybUNBTGF5ZXI6OmlzRG91
YmxlU2lkZWQoKSBjb25zdAoreworICAgIHJldHVybiBbbV9sYXllci5nZXQoKSBpc0RvdWJsZVNp
ZGVkXTsKK30KKwordm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OnNldERvdWJsZVNpZGVkKGJvb2wgdmFs
dWUpCit7CisgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCisgICAgW21fbGF5ZXIuZ2V0
KCkgc2V0RG91YmxlU2lkZWQ6dmFsdWVdOworICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMK
K30KKworYm9vbCBQbGF0Zm9ybUNBTGF5ZXI6Om1hc2tzVG9Cb3VuZHMoKSBjb25zdAoreworICAg
IHJldHVybiBbbV9sYXllci5nZXQoKSBtYXNrc1RvQm91bmRzXTsKK30KKwordm9pZCBQbGF0Zm9y
bUNBTGF5ZXI6OnNldE1hc2tzVG9Cb3VuZHMoYm9vbCB2YWx1ZSkKK3sKKyAgICBCRUdJTl9CTE9D
S19PQkpDX0VYQ0VQVElPTlMKKyAgICBbbV9sYXllci5nZXQoKSBzZXRNYXNrc1RvQm91bmRzOnZh
bHVlXTsKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCit9CisKK3ZvaWQqIFBsYXRmb3Jt
Q0FMYXllcjo6Y29udGVudHMoKSBjb25zdAoreworICAgIHJldHVybiBbbV9sYXllci5nZXQoKSBj
b250ZW50c107Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyOjpzZXRDb250ZW50cyh2b2lkKiB2
YWx1ZSkKK3sKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICBbbV9sYXllci5n
ZXQoKSBzZXRDb250ZW50czpzdGF0aWNfY2FzdDxpZD4odmFsdWUpXTsKKyAgICBFTkRfQkxPQ0tf
T0JKQ19FWENFUFRJT05TCit9CisKK0Zsb2F0UmVjdCBQbGF0Zm9ybUNBTGF5ZXI6OmNvbnRlbnRz
UmVjdCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFttX2xheWVyLmdldCgpIGNvbnRlbnRzUmVjdF07
Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyOjpzZXRDb250ZW50c1JlY3QoY29uc3QgRmxvYXRS
ZWN0JiB2YWx1ZSkKK3sKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICBbbV9s
YXllci5nZXQoKSBzZXRDb250ZW50c1JlY3Q6dmFsdWVdOworICAgIEVORF9CTE9DS19PQkpDX0VY
Q0VQVElPTlMKK30KKwordm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OnNldE1pbmlmaWNhdGlvbkZpbHRl
cihGaWx0ZXJUeXBlIHZhbHVlKQoreworI2lmIEhBVkVfTU9ERVJOX1FVQVJUWkNPUkUKKyAgICBC
RUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICBbbV9sYXllci5nZXQoKSBzZXRNaW5pZmlj
YXRpb25GaWx0ZXI6dG9DQUZpbHRlclR5cGUodmFsdWUpXTsKKyAgICBFTkRfQkxPQ0tfT0JKQ19F
WENFUFRJT05TCisjZWxzZQorICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7CisjZW5kaWYKK30KKwor
dm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OnNldE1hZ25pZmljYXRpb25GaWx0ZXIoRmlsdGVyVHlwZSB2
YWx1ZSkKK3sKKyNpZiBIQVZFX01PREVSTl9RVUFSVFpDT1JFCisgICAgQkVHSU5fQkxPQ0tfT0JK
Q19FWENFUFRJT05TCisgICAgW21fbGF5ZXIuZ2V0KCkgc2V0TWFnbmlmaWNhdGlvbkZpbHRlcjp0
b0NBRmlsdGVyVHlwZSh2YWx1ZSldOworICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyNl
bHNlCisgICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsKKyNlbmRpZgorfQorCitDb2xvciBQbGF0Zm9y
bUNBTGF5ZXI6OmJhY2tncm91bmRDb2xvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIFttX2xheWVy
LmdldCgpIGJhY2tncm91bmRDb2xvcl07Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyOjpzZXRC
YWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImIHZhbHVlKQoreworICAgIGNvbnN0IENHRmxvYXQg
Y29tcG9uZW50c1s1XSA9IHsgdmFsdWUucmVkKCksIHZhbHVlLmdyZWVuKCksIHZhbHVlLmJsdWUo
KSwgdmFsdWUuYWxwaGEoKSB9OworICAgIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlID0gQ0dD
b2xvclNwYWNlQ3JlYXRlRGV2aWNlUkdCKCk7CisgICAgQ0dDb2xvclJlZiBjb2xvciA9IENHQ29s
b3JDcmVhdGUoY29sb3JTcGFjZSwgY29tcG9uZW50cyk7CisgICAgQ0dDb2xvclNwYWNlUmVsZWFz
ZShjb2xvclNwYWNlKTsKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICBbbV9s
YXllci5nZXQoKSBzZXRCYWNrZ3JvdW5kQ29sb3I6Y29sb3JdOworICAgIEVORF9CTE9DS19PQkpD
X0VYQ0VQVElPTlMKKyAgICBDR0NvbG9yUmVsZWFzZShjb2xvcik7Cit9CisKK2Zsb2F0IFBsYXRm
b3JtQ0FMYXllcjo6Ym9yZGVyV2lkdGgoKSBjb25zdAoreworICAgIHJldHVybiBbbV9sYXllci5n
ZXQoKSBib3JkZXJXaWR0aF07Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyOjpzZXRCb3JkZXJX
aWR0aChmbG9hdCB2YWx1ZSkKK3sKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAg
ICBbbV9sYXllci5nZXQoKSBzZXRCb3JkZXJXaWR0aDp2YWx1ZV07CisgICAgRU5EX0JMT0NLX09C
SkNfRVhDRVBUSU9OUworfQorCitDb2xvciBQbGF0Zm9ybUNBTGF5ZXI6OmJvcmRlckNvbG9yKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gW21fbGF5ZXIuZ2V0KCkgYm9yZGVyQ29sb3JdOworfQorCit2
b2lkIFBsYXRmb3JtQ0FMYXllcjo6c2V0Qm9yZGVyQ29sb3IoY29uc3QgQ29sb3ImIHZhbHVlKQor
eworICAgIGNvbnN0IENHRmxvYXQgY29tcG9uZW50c1s1XSA9IHsgdmFsdWUucmVkKCksIHZhbHVl
LmdyZWVuKCksIHZhbHVlLmJsdWUoKSwgdmFsdWUuYWxwaGEoKSB9OworICAgIENHQ29sb3JTcGFj
ZVJlZiBjb2xvclNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlRGV2aWNlUkdCKCk7CisgICAgQ0dD
b2xvclJlZiBjb2xvciA9IENHQ29sb3JDcmVhdGUoY29sb3JTcGFjZSwgY29tcG9uZW50cyk7Cisg
ICAgQ0dDb2xvclNwYWNlUmVsZWFzZShjb2xvclNwYWNlKTsKKyAgICBCRUdJTl9CTE9DS19PQkpD
X0VYQ0VQVElPTlMKKyAgICBbbV9sYXllci5nZXQoKSBzZXRCb3JkZXJDb2xvcjpjb2xvcl07Cisg
ICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUworICAgIENHQ29sb3JSZWxlYXNlKGNvbG9yKTsK
K30KKworZmxvYXQgUGxhdGZvcm1DQUxheWVyOjpvcGFjaXR5KCkgY29uc3QKK3sKKyAgICByZXR1
cm4gW21fbGF5ZXIuZ2V0KCkgb3BhY2l0eV07Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyOjpz
ZXRPcGFjaXR5KGZsb2F0IHZhbHVlKQoreworICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9O
UworICAgIFttX2xheWVyLmdldCgpIHNldE9wYWNpdHk6dmFsdWVdOworICAgIEVORF9CTE9DS19P
QkpDX0VYQ0VQVElPTlMKK30KKworU3RyaW5nIFBsYXRmb3JtQ0FMYXllcjo6bmFtZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIFttX2xheWVyLmdldCgpIG5hbWVdOworfQorCit2b2lkIFBsYXRmb3Jt
Q0FMYXllcjo6c2V0TmFtZShjb25zdCBTdHJpbmcmIHZhbHVlKQoreworICAgIEJFR0lOX0JMT0NL
X09CSkNfRVhDRVBUSU9OUworICAgIFttX2xheWVyLmdldCgpIHNldE5hbWU6dmFsdWVdOworICAg
IEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKK30KKworRmxvYXRSZWN0IFBsYXRmb3JtQ0FMYXll
cjo6ZnJhbWUoKSBjb25zdAoreworICAgIHJldHVybiBbbV9sYXllci5nZXQoKSBmcmFtZV07Cit9
CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyOjpzZXRGcmFtZShjb25zdCBGbG9hdFJlY3QmIHZhbHVl
KQoreworICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUworICAgIFttX2xheWVyLmdldCgp
IHNldEZyYW1lOnZhbHVlXTsKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCit9CisKK2Zs
b2F0IFBsYXRmb3JtQ0FMYXllcjo6c3BlZWQoKSBjb25zdAoreworICAgIHJldHVybiBbbV9sYXll
ci5nZXQoKSBzcGVlZF07Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyOjpzZXRTcGVlZChmbG9h
dCB2YWx1ZSkKK3sKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKyAgICBbbV9sYXll
ci5nZXQoKSBzZXRTcGVlZDp2YWx1ZV07CisgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwor
fQorCitDRlRpbWVJbnRlcnZhbCBQbGF0Zm9ybUNBTGF5ZXI6OnRpbWVPZmZzZXQoKSBjb25zdAor
eworICAgIHJldHVybiBbbV9sYXllci5nZXQoKSB0aW1lT2Zmc2V0XTsKK30KKwordm9pZCBQbGF0
Zm9ybUNBTGF5ZXI6OnNldFRpbWVPZmZzZXQoQ0ZUaW1lSW50ZXJ2YWwgdmFsdWUpCit7CisgICAg
QkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCisgICAgW21fbGF5ZXIuZ2V0KCkgc2V0VGltZU9m
ZnNldDp2YWx1ZV07CisgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUworfQorCisjZW5kaWYg
Ly8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9tYWMvUGxhdGZvcm1DQUxheWVyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1BsYXRmb3JtQ0FMYXllck1hYy5tbQkocmV2aXNp
b24gNzMyOTMpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9QbGF0Zm9ybUNB
TGF5ZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTE4OSwxMSArMTg5LDkgQEAgUGxhdGZvcm1D
QUxheWVyOjpQbGF0Zm9ybUNBTGF5ZXIoTGF5ZXJUeQogICAgICAgICAgICAgY2FzZSBMYXllclR5
cGVXZWJMYXllcjoKICAgICAgICAgICAgICAgICBsYXllckNsYXNzID0gW1dlYkxheWVyIGNsYXNz
XTsKICAgICAgICAgICAgICAgICBicmVhazsKLSNpZiBIQVZFX01PREVSTl9RVUFSVFpDT1JFCiAg
ICAgICAgICAgICBjYXNlIExheWVyVHlwZVRyYW5zZm9ybUxheWVyOgotICAgICAgICAgICAgICAg
IGxheWVyQ2xhc3MgPSBbQ0FUcmFuc2Zvcm1MYXllciBjbGFzc107CisgICAgICAgICAgICAgICAg
bGF5ZXJDbGFzcyA9IE5TQ2xhc3NGcm9tU3RyaW5nKEAiQ0FUcmFuc2Zvcm1MYXllciIpOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwotI2VuZGlmCiAgICAgICAgICAgICBjYXNlIExheWVyVHlwZVdl
YlRpbGVkTGF5ZXI6CiAgICAgICAgICAgICAgICAgbGF5ZXJDbGFzcyA9IFtXZWJUaWxlZExheWVy
IGNsYXNzXTsKICAgICAgICAgICAgICAgICBicmVhazsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1
bS5jcHAJKHJldmlzaW9uIDczMjkzKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTUsMTEg
KzExNSw2IEBAIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXROYW1lKGNvbnMKICAgICBH
cmFwaGljc0xheWVyOjpzZXROYW1lKG5hbWUpOwogfQogCi1OYXRpdmVMYXllciBHcmFwaGljc0xh
eWVyQ2hyb21pdW06Om5hdGl2ZUxheWVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9sYXllci5n
ZXQoKTsKLX0KLQogYm9vbCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldENoaWxkcmVuKGNvbnN0
IFZlY3RvcjxHcmFwaGljc0xheWVyKj4mIGNoaWxkcmVuKQogewogICAgIGJvb2wgY2hpbGRyZW5D
aGFuZ2VkID0gR3JhcGhpY3NMYXllcjo6c2V0Q2hpbGRyZW4oY2hpbGRyZW4pOwpJbmRleDogV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNz
TGF5ZXJDaHJvbWl1bS5oCShyZXZpc2lvbiA3MzI5MykKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ3LDkgKzQ3LDYgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHNldE5hbWUoY29uc3Qg
U3RyaW5nJik7CiAKLSAgICAvLyBmb3IgaG9zdGluZyB0aGlzIEdyYXBoaWNzTGF5ZXIgaW4gYSBu
YXRpdmUgbGF5ZXIgaGllcmFyY2h5Ci0gICAgdmlydHVhbCBOYXRpdmVMYXllciBuYXRpdmVMYXll
cigpIGNvbnN0OwotCiAgICAgdmlydHVhbCBib29sIHNldENoaWxkcmVuKGNvbnN0IFZlY3RvcjxH
cmFwaGljc0xheWVyKj4mKTsKICAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGQoR3JhcGhpY3NMYXll
ciopOwogICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZEF0SW5kZXgoR3JhcGhpY3NMYXllciosIGlu
dCBpbmRleCk7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0xh
eWVyTWFjLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3Jh
cGhpY3NMYXllck1hYy5oCShyZXZpc2lvbiA3MzI5MykKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL0dyYXBoaWNzTGF5ZXJNYWMuaAkod29ya2luZyBjb3B5KQpAQCAtMSwzODggKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIs
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0g
Ki8KLQotI2lmbmRlZiBHcmFwaGljc0xheWVyTWFjX2gKLSNkZWZpbmUgR3JhcGhpY3NMYXllck1h
Y19oCi0KLSNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0KLSNpbmNsdWRlICJHcmFw
aGljc0xheWVyLmgiCi0jaW5jbHVkZSAiV2ViTGF5ZXIuaCIKLSNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KLQotQGNsYXNzIENBQmFzaWNBbmlt
YXRpb247Ci1AY2xhc3MgQ0FLZXlmcmFtZUFuaW1hdGlvbjsKLUBjbGFzcyBDQU1lZGlhVGltaW5n
RnVuY3Rpb247Ci1AY2xhc3MgQ0FQcm9wZXJ0eUFuaW1hdGlvbjsKLUBjbGFzcyBXZWJBbmltYXRp
b25EZWxlZ2F0ZTsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHcmFwaGljc0xheWVy
TWFjIDogcHVibGljIEdyYXBoaWNzTGF5ZXIgewotcHVibGljOgotCi0gICAgR3JhcGhpY3NMYXll
ck1hYyhHcmFwaGljc0xheWVyQ2xpZW50Kik7Ci0gICAgdmlydHVhbCB+R3JhcGhpY3NMYXllck1h
YygpOwotCi0gICAgdmlydHVhbCB2b2lkIHNldE5hbWUoY29uc3QgU3RyaW5nJik7Ci0KLSAgICAv
LyBmb3IgaG9zdGluZyB0aGlzIEdyYXBoaWNzTGF5ZXIgaW4gYSBuYXRpdmUgbGF5ZXIgaGllcmFy
Y2h5Ci0gICAgdmlydHVhbCBOYXRpdmVMYXllciBuYXRpdmVMYXllcigpIGNvbnN0OwotCi0gICAg
dmlydHVhbCBib29sIHNldENoaWxkcmVuKGNvbnN0IFZlY3RvcjxHcmFwaGljc0xheWVyKj4mKTsK
LSAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGQoR3JhcGhpY3NMYXllciopOwotICAgIHZpcnR1YWwg
dm9pZCBhZGRDaGlsZEF0SW5kZXgoR3JhcGhpY3NMYXllciosIGludCBpbmRleCk7Ci0gICAgdmly
dHVhbCB2b2lkIGFkZENoaWxkQWJvdmUoR3JhcGhpY3NMYXllciogbGF5ZXIsIEdyYXBoaWNzTGF5
ZXIqIHNpYmxpbmcpOwotICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZEJlbG93KEdyYXBoaWNzTGF5
ZXIqIGxheWVyLCBHcmFwaGljc0xheWVyKiBzaWJsaW5nKTsKLSAgICB2aXJ0dWFsIGJvb2wgcmVw
bGFjZUNoaWxkKEdyYXBoaWNzTGF5ZXIqIG9sZENoaWxkLCBHcmFwaGljc0xheWVyKiBuZXdDaGls
ZCk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRnJvbVBhcmVudCgpOwotCi0gICAgdmlydHVh
bCB2b2lkIHNldE1hc2tMYXllcihHcmFwaGljc0xheWVyKik7Ci0gICAgdmlydHVhbCB2b2lkIHNl
dFJlcGxpY2F0ZWRMYXllcihHcmFwaGljc0xheWVyKik7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0
UG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRBbmNob3JQ
b2ludChjb25zdCBGbG9hdFBvaW50M0QmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0U2l6ZShjb25z
dCBGbG9hdFNpemUmKTsKLQotICAgIHZpcnR1YWwgdm9pZCBzZXRUcmFuc2Zvcm0oY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXgmKTsKLQotICAgIHZpcnR1YWwgdm9pZCBzZXRDaGlsZHJlblRyYW5z
Zm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpOwotCi0gICAgdmlydHVhbCB2b2lkIHNl
dFByZXNlcnZlczNEKGJvb2wpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRNYXNrc1RvQm91bmRzKGJv
b2wpOwotICAgIHZpcnR1YWwgdm9pZCBzZXREcmF3c0NvbnRlbnQoYm9vbCk7Ci0KLSAgICB2aXJ0
dWFsIHZvaWQgc2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IENvbG9yJik7Ci0gICAgdmlydHVhbCB2
b2lkIGNsZWFyQmFja2dyb3VuZENvbG9yKCk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVu
dHNPcGFxdWUoYm9vbCk7Ci0gICAgdmlydHVhbCB2b2lkIHNldEJhY2tmYWNlVmlzaWJpbGl0eShi
b29sKTsKLQotICAgIC8vIHJldHVybiB0cnVlIGlmIHdlIHN0YXJ0ZWQgYW4gYW5pbWF0aW9uCi0g
ICAgdmlydHVhbCB2b2lkIHNldE9wYWNpdHkoZmxvYXQpOwotCi0gICAgdmlydHVhbCB2b2lkIHNl
dE5lZWRzRGlzcGxheSgpOwotICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0Rpc3BsYXlJblJlY3Qo
Y29uc3QgRmxvYXRSZWN0Jik7Ci0gICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzTmVlZHNEaXNw
bGF5KCk7Ci0gICAgCi0gICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzUmVjdChjb25zdCBJbnRS
ZWN0Jik7Ci0gICAgCi0gICAgdmlydHVhbCB2b2lkIHN1c3BlbmRBbmltYXRpb25zKGRvdWJsZSB0
aW1lKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVzdW1lQW5pbWF0aW9ucygpOwotCi0gICAgdmlydHVh
bCBib29sIGFkZEFuaW1hdGlvbihjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYsIGNvbnN0IEludFNp
emUmIGJveFNpemUsIGNvbnN0IEFuaW1hdGlvbiosIGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFt
ZSwgZG91YmxlIHRpbWVPZmZzZXQpOwotICAgIHZpcnR1YWwgdm9pZCBwYXVzZUFuaW1hdGlvbihj
b25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGRvdWJsZSB0aW1lT2Zmc2V0KTsKLSAgICB2aXJ0
dWFsIHZvaWQgcmVtb3ZlQW5pbWF0aW9uKGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSk7Ci0K
LSAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNUb0ltYWdlKEltYWdlKik7Ci0gICAgdmlydHVh
bCB2b2lkIHNldENvbnRlbnRzVG9NZWRpYShQbGF0Zm9ybUxheWVyKik7Ci0gICAgdmlydHVhbCB2
b2lkIHNldENvbnRlbnRzVG9DYW52YXMoUGxhdGZvcm1MYXllciopOwotCi0gICAgdmlydHVhbCBi
b29sIGhhc0NvbnRlbnRzTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRzTGF5ZXI7IH0K
LSAgICAKLSAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdDsK
LQotICAgIHZpcnR1YWwgdm9pZCBzZXREZWJ1Z0JhY2tncm91bmRDb2xvcihjb25zdCBDb2xvciYp
OwotICAgIHZpcnR1YWwgdm9pZCBzZXREZWJ1Z0JvcmRlcihjb25zdCBDb2xvciYsIGZsb2F0IGJv
cmRlcldpZHRoKTsKLQotICAgIHZpcnR1YWwgdm9pZCBkaWREaXNwbGF5KFBsYXRmb3JtTGF5ZXIq
KTsKLQotICAgIHZvaWQgcmVjdXJzaXZlQ29tbWl0Q2hhbmdlcygpOwotCi0gICAgdmlydHVhbCB2
b2lkIHN5bmNDb21wb3NpdGluZ1N0YXRlKCk7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNDb21wb3Np
dGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSgpOwotCi0gICAgLy8gU2hvdWxkIG9ubHkgYmUgY2Fs
bGVkIGJ5IGFuaW1hdGlvbkRpZFN0YXJ0OiBjYWxsYmFjawotICAgIHZvaWQgYW5pbWF0aW9uRGlk
U3RhcnQoQ0FBbmltYXRpb24qKTsKLSAgICAKLXByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIHZvaWQg
c2V0T3BhY2l0eUludGVybmFsKGZsb2F0KTsKLQotcHJpdmF0ZToKLSAgICB2b2lkIHVwZGF0ZU9w
YWNpdHlPbkxheWVyKCk7Ci0KLSAgICBDQUxheWVyKiBwcmltYXJ5TGF5ZXIoKSBjb25zdCB7IHJl
dHVybiBtX3N0cnVjdHVyYWxMYXllci5nZXQoKSA/IG1fc3RydWN0dXJhbExheWVyLmdldCgpIDog
bV9sYXllci5nZXQoKTsgfQotICAgIENBTGF5ZXIqIGhvc3RMYXllckZvclN1YmxheWVycygpIGNv
bnN0OwotICAgIENBTGF5ZXIqIGxheWVyRm9yU3VwZXJsYXllcigpIGNvbnN0OwotICAgIENBTGF5
ZXIqIGFuaW1hdGVkTGF5ZXIoQW5pbWF0ZWRQcm9wZXJ0eUlEKSBjb25zdDsKLQotICAgIHR5cGVk
ZWYgU3RyaW5nIENsb25lSUQ7IC8vIElkZW50aWZpZXIgZm9yIGEgZ2l2ZW4gY2xvbmUsIGJhc2Vk
IG9uIG9yaWdpbmFsL3JlcGxpY2EgYnJhbmNoaW5nIGRvd24gdGhlIHRyZWUuCi0gICAgc3RhdGlj
IGJvb2wgaXNSZXBsaWNhdGVkUm9vdENsb25lKGNvbnN0IENsb25lSUQmIGNsb25lSUQpIHsgcmV0
dXJuIGNsb25lSURbMFVdICYgMTsgfQotCi0gICAgdHlwZWRlZiBIYXNoTWFwPENsb25lSUQsIFJl
dGFpblB0cjxDQUxheWVyPiA+IExheWVyTWFwOwotICAgIExheWVyTWFwKiBwcmltYXJ5TGF5ZXJD
bG9uZXMoKSBjb25zdCB7IHJldHVybiBtX3N0cnVjdHVyYWxMYXllci5nZXQoKSA/IG1fc3RydWN0
dXJhbExheWVyQ2xvbmVzLmdldCgpIDogbV9sYXllckNsb25lcy5nZXQoKTsgfQotICAgIExheWVy
TWFwKiBhbmltYXRlZExheWVyQ2xvbmVzKEFuaW1hdGVkUHJvcGVydHlJRCkgY29uc3Q7Ci0KLSAg
ICBib29sIGNyZWF0ZUFuaW1hdGlvbkZyb21LZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxp
c3QmLCBjb25zdCBBbmltYXRpb24qLCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGRvdWJs
ZSB0aW1lT2Zmc2V0KTsKLSAgICBib29sIGNyZWF0ZVRyYW5zZm9ybUFuaW1hdGlvbnNGcm9tS2V5
ZnJhbWVzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiwgY29uc3QgQW5pbWF0aW9uKiwgY29uc3Qg
U3RyaW5nJiBhbmltYXRpb25OYW1lLCBkb3VibGUgdGltZU9mZnNldCwgY29uc3QgSW50U2l6ZSYg
Ym94U2l6ZSk7Ci0KLSAgICAvLyBSZXR1cm4gYXV0b3JlbGVhc2VkIGFuaW1hdGlvbiAodXNlIFJl
dGFpblB0cj8pCi0gICAgQ0FCYXNpY0FuaW1hdGlvbiogY3JlYXRlQmFzaWNBbmltYXRpb24oY29u
c3QgQW5pbWF0aW9uKiwgQW5pbWF0ZWRQcm9wZXJ0eUlELCBib29sIGFkZGl0aXZlKTsKLSAgICBD
QUtleWZyYW1lQW5pbWF0aW9uKiBjcmVhdGVLZXlmcmFtZUFuaW1hdGlvbihjb25zdCBBbmltYXRp
b24qLCBBbmltYXRlZFByb3BlcnR5SUQsIGJvb2wgYWRkaXRpdmUpOwotICAgIHZvaWQgc2V0dXBB
bmltYXRpb24oQ0FQcm9wZXJ0eUFuaW1hdGlvbiosIGNvbnN0IEFuaW1hdGlvbiosIGJvb2wgYWRk
aXRpdmUpOwotICAgIAotICAgIENBTWVkaWFUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb25G
b3JBbmltYXRpb25WYWx1ZShjb25zdCBBbmltYXRpb25WYWx1ZSosIGNvbnN0IEFuaW1hdGlvbiop
OwotICAgIAotICAgIGJvb2wgc2V0QW5pbWF0aW9uRW5kcG9pbnRzKGNvbnN0IEtleWZyYW1lVmFs
dWVMaXN0JiwgY29uc3QgQW5pbWF0aW9uKiwgQ0FCYXNpY0FuaW1hdGlvbiopOwotICAgIGJvb2wg
c2V0QW5pbWF0aW9uS2V5ZnJhbWVzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiwgY29uc3QgQW5p
bWF0aW9uKiwgQ0FLZXlmcmFtZUFuaW1hdGlvbiopOwotCi0gICAgYm9vbCBzZXRUcmFuc2Zvcm1B
bmltYXRpb25FbmRwb2ludHMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmLCBjb25zdCBBbmltYXRp
b24qLCBDQUJhc2ljQW5pbWF0aW9uKiwgaW50IGZ1bmN0aW9uSW5kZXgsIFRyYW5zZm9ybU9wZXJh
dGlvbjo6T3BlcmF0aW9uVHlwZSwgYm9vbCBpc01hdHJpeEFuaW1hdGlvbiwgY29uc3QgSW50U2l6
ZSYgYm94U2l6ZSk7Ci0gICAgYm9vbCBzZXRUcmFuc2Zvcm1BbmltYXRpb25LZXlmcmFtZXMoY29u
c3QgS2V5ZnJhbWVWYWx1ZUxpc3QmLCBjb25zdCBBbmltYXRpb24qLCBDQUtleWZyYW1lQW5pbWF0
aW9uKiwgaW50IGZ1bmN0aW9uSW5kZXgsIFRyYW5zZm9ybU9wZXJhdGlvbjo6T3BlcmF0aW9uVHlw
ZSwgYm9vbCBpc01hdHJpeEFuaW1hdGlvbiwgY29uc3QgSW50U2l6ZSYgYm94U2l6ZSk7Ci0gICAg
Ci0gICAgYm9vbCBhbmltYXRpb25Jc1J1bm5pbmcoY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1l
KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fcnVubmluZ0FuaW1hdGlvbnMuZmluZChh
bmltYXRpb25OYW1lKSAhPSBtX3J1bm5pbmdBbmltYXRpb25zLmVuZCgpOwotICAgIH0KLQotICAg
IHZvaWQgY29tbWl0TGF5ZXJDaGFuZ2VzQmVmb3JlU3VibGF5ZXJzKCk7Ci0gICAgdm9pZCBjb21t
aXRMYXllckNoYW5nZXNBZnRlclN1YmxheWVycygpOwotCi0gICAgRmxvYXRTaXplIGNvbnN0cmFp
bmVkU2l6ZSgpIGNvbnN0OwotCi0gICAgYm9vbCByZXF1aXJlc1RpbGVkTGF5ZXIoY29uc3QgRmxv
YXRTaXplJikgY29uc3Q7Ci0gICAgdm9pZCBzd2FwRnJvbU9yVG9UaWxlZExheWVyKGJvb2wgdXNl
VGlsZWRMYXllcik7Ci0KLSAgICBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRpb24gZGVm
YXVsdENvbnRlbnRzT3JpZW50YXRpb24oKSBjb25zdDsKLSAgICB2b2lkIHVwZGF0ZUNvbnRlbnRz
VHJhbnNmb3JtKCk7Ci0gICAgCi0gICAgdm9pZCBzZXR1cENvbnRlbnRzTGF5ZXIoQ0FMYXllciop
OwotICAgIENBTGF5ZXIqIGNvbnRlbnRzTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRz
TGF5ZXIuZ2V0KCk7IH0KLQotICAgIHZpcnR1YWwgdm9pZCBzZXRSZXBsaWNhdGVkQnlMYXllcihH
cmFwaGljc0xheWVyKik7Ci0KLSAgICAvLyBVc2VkIHRvIHRyYWNrIHRoZSBwYXRoIGRvd24gdGhl
IHRyZWUgZm9yIHJlcGxpY2EgbGF5ZXJzLgotICAgIHN0cnVjdCBSZXBsaWNhU3RhdGUgewotICAg
ICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IG1heFJlcGxpY2FEZXB0aCA9IDE2OwotICAgICAgICBl
bnVtIFJlcGxpY2FCcmFuY2hUeXBlIHsgQ2hpbGRCcmFuY2ggPSAwLCBSZXBsaWNhQnJhbmNoID0g
MSB9OwotICAgICAgICBSZXBsaWNhU3RhdGUoUmVwbGljYUJyYW5jaFR5cGUgZmlyc3RCcmFuY2gp
Ci0gICAgICAgICAgICA6IG1fcmVwbGljYURlcHRoKDApCi0gICAgICAgIHsKLSAgICAgICAgICAg
IHB1c2goZmlyc3RCcmFuY2gpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICAvLyBDYWxs
ZWQgYXMgd2Ugd2FsayBkb3duIHRoZSB0cmVlIHRvIGJ1aWxkIHJlcGxpY2FzLgotICAgICAgICB2
b2lkIHB1c2goUmVwbGljYUJyYW5jaFR5cGUgYnJhbmNoVHlwZSkKLSAgICAgICAgewotICAgICAg
ICAgICAgbV9yZXBsaWNhQnJhbmNoZXMuYXBwZW5kKGJyYW5jaFR5cGUpOwotICAgICAgICAgICAg
aWYgKGJyYW5jaFR5cGUgPT0gUmVwbGljYUJyYW5jaCkKLSAgICAgICAgICAgICAgICArK21fcmVw
bGljYURlcHRoOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICB2b2lkIHNldEJyYW5jaFR5
cGUoUmVwbGljYUJyYW5jaFR5cGUgYnJhbmNoVHlwZSkKLSAgICAgICAgewotICAgICAgICAgICAg
QVNTRVJUKCFtX3JlcGxpY2FCcmFuY2hlcy5pc0VtcHR5KCkpOwotCi0gICAgICAgICAgICBpZiAo
bV9yZXBsaWNhQnJhbmNoZXMubGFzdCgpICE9IGJyYW5jaFR5cGUpIHsKLSAgICAgICAgICAgICAg
ICBpZiAoYnJhbmNoVHlwZSA9PSBSZXBsaWNhQnJhbmNoKQotICAgICAgICAgICAgICAgICAgICAr
K21fcmVwbGljYURlcHRoOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAg
ICAgLS1tX3JlcGxpY2FEZXB0aDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgbV9yZXBs
aWNhQnJhbmNoZXMubGFzdCgpID0gYnJhbmNoVHlwZTsKLSAgICAgICAgfQotCi0gICAgICAgIHZv
aWQgcG9wKCkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKG1fcmVwbGljYUJyYW5jaGVzLmxh
c3QoKSA9PSBSZXBsaWNhQnJhbmNoKQotICAgICAgICAgICAgICAgIC0tbV9yZXBsaWNhRGVwdGg7
Ci0gICAgICAgICAgICBtX3JlcGxpY2FCcmFuY2hlcy5yZW1vdmVMYXN0KCk7Ci0gICAgICAgIH0K
LSAgICAgICAgCi0gICAgICAgIHNpemVfdCBkZXB0aCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVwbGlj
YUJyYW5jaGVzLnNpemUoKTsgfQotICAgICAgICBzaXplX3QgcmVwbGljYURlcHRoKCkgY29uc3Qg
eyByZXR1cm4gbV9yZXBsaWNhRGVwdGg7IH0KLQotICAgICAgICBDbG9uZUlEIGNsb25lSUQoKSBj
b25zdDsgICAgICAgIAotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgVmVjdG9yPFJlcGxpY2FCcmFu
Y2hUeXBlPiBtX3JlcGxpY2FCcmFuY2hlczsKLSAgICAgICAgc2l6ZV90IG1fcmVwbGljYURlcHRo
OwotICAgIH07Ci0gICAgQ0FMYXllciAqcmVwbGljYXRlZExheWVyUm9vdChSZXBsaWNhU3RhdGUm
KTsKLQotICAgIGVudW0gQ2xvbmVMZXZlbCB7IFJvb3RDbG9uZUxldmVsLCBJbnRlcm1lZGlhdGVD
bG9uZUxldmVsIH07Ci0gICAgQ0FMYXllciAqZmV0Y2hDbG9uZUxheWVycyhHcmFwaGljc0xheWVy
KiByZXBsaWNhUm9vdCwgUmVwbGljYVN0YXRlJiwgQ2xvbmVMZXZlbCk7Ci0gICAgCi0gICAgQ0FM
YXllciAqY2xvbmVMYXllcihDQUxheWVyICosIENsb25lTGV2ZWwpOwotICAgIENBTGF5ZXIgKmZp
bmRPck1ha2VDbG9uZShDbG9uZUlELCBDQUxheWVyICosIExheWVyTWFwKiwgQ2xvbmVMZXZlbCk7
Ci0KLSAgICB2b2lkIGVuc3VyZUNsb25lTGF5ZXJzKENsb25lSUQgaW5kZXgsIENBTGF5ZXIgKiYg
cHJpbWFyeUxheWVyLCBDQUxheWVyIComIHN0cnVjdHVyYWxMYXllciwgQ0FMYXllciAqJiBjb250
ZW50c0xheWVyLCBDbG9uZUxldmVsKTsKLQotICAgIGJvb2wgaGFzQ2xvbmVMYXllcnMoKSBjb25z
dCB7IHJldHVybiBtX2xheWVyQ2xvbmVzOyB9Ci0gICAgdm9pZCByZW1vdmVDbG9uZUxheWVycygp
OwotICAgIEZsb2F0UG9pbnQgcG9zaXRpb25Gb3JDbG9uZVJvb3RMYXllcigpIGNvbnN0OwotICAg
IAotICAgIHZvaWQgcHJvcGFnYXRlTGF5ZXJDaGFuZ2VUb1JlcGxpY2FzKCk7Ci0gICAgCi0gICAg
Ly8gQWxsIHRoZXNlICJ1cGRhdGUiIG1ldGhvZHMgd2lsbCBiZSBjYWxsZWQgaW5zaWRlIGEgQkVH
SU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TL0VORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMgYmxvY2su
Ci0gICAgdm9pZCB1cGRhdGVMYXllck5hbWVzKCk7Ci0gICAgdm9pZCB1cGRhdGVTdWJsYXllckxp
c3QoKTsKLSAgICB2b2lkIHVwZGF0ZUxheWVyUG9zaXRpb24oKTsKLSAgICB2b2lkIHVwZGF0ZUxh
eWVyU2l6ZSgpOwotICAgIHZvaWQgdXBkYXRlQW5jaG9yUG9pbnQoKTsKLSAgICB2b2lkIHVwZGF0
ZVRyYW5zZm9ybSgpOwotICAgIHZvaWQgdXBkYXRlQ2hpbGRyZW5UcmFuc2Zvcm0oKTsKLSAgICB2
b2lkIHVwZGF0ZU1hc2tzVG9Cb3VuZHMoKTsKLSAgICB2b2lkIHVwZGF0ZUNvbnRlbnRzT3BhcXVl
KCk7Ci0gICAgdm9pZCB1cGRhdGVCYWNrZmFjZVZpc2liaWxpdHkoKTsKLSAgICB2b2lkIHVwZGF0
ZVN0cnVjdHVyYWxMYXllcigpOwotICAgIHZvaWQgdXBkYXRlTGF5ZXJEcmF3c0NvbnRlbnQoKTsK
LSAgICB2b2lkIHVwZGF0ZUxheWVyQmFja2dyb3VuZENvbG9yKCk7Ci0KLSAgICB2b2lkIHVwZGF0
ZUNvbnRlbnRzSW1hZ2UoKTsKLSAgICB2b2lkIHVwZGF0ZUNvbnRlbnRzTWVkaWFMYXllcigpOwot
ICAgIHZvaWQgdXBkYXRlQ29udGVudHNDYW52YXNMYXllcigpOwotICAgIHZvaWQgdXBkYXRlQ29u
dGVudHNSZWN0KCk7Ci0gICAgdm9pZCB1cGRhdGVNYXNrTGF5ZXIoKTsKLSAgICB2b2lkIHVwZGF0
ZVJlcGxpY2F0ZWRMYXllcnMoKTsKLQotICAgIHZvaWQgdXBkYXRlTGF5ZXJBbmltYXRpb25zKCk7
Ci0gICAgdm9pZCB1cGRhdGVDb250ZW50c05lZWRzRGlzcGxheSgpOwotICAgIAotICAgIGVudW0g
U3RydWN0dXJhbExheWVyUHVycG9zZSB7Ci0gICAgICAgIE5vU3RydWN0dXJhbExheWVyID0gMCwK
LSAgICAgICAgU3RydWN0dXJhbExheWVyRm9yUHJlc2VydmVzM0QsCi0gICAgICAgIFN0cnVjdHVy
YWxMYXllckZvclJlcGxpY2FGbGF0dGVuaW5nCi0gICAgfTsKLSAgICB2b2lkIGVuc3VyZVN0cnVj
dHVyYWxMYXllcihTdHJ1Y3R1cmFsTGF5ZXJQdXJwb3NlKTsKLSAgICBTdHJ1Y3R1cmFsTGF5ZXJQ
dXJwb3NlIHN0cnVjdHVyYWxMYXllclB1cnBvc2UoKSBjb25zdDsKLQotICAgIHZvaWQgc2V0Q0FB
bmltYXRpb25PbkxheWVyKENBUHJvcGVydHlBbmltYXRpb24qLCBBbmltYXRlZFByb3BlcnR5SUQs
IGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSwgaW50IGluZGV4LCBkb3VibGUgdGltZU9mZnNl
dCk7Ci0gICAgYm9vbCByZW1vdmVDQUFuaW1hdGlvbkZyb21MYXllcihBbmltYXRlZFByb3BlcnR5
SUQsIGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSwgaW50IGluZGV4KTsKLSAgICB2b2lkIHBh
dXNlQ0FBbmltYXRpb25PbkxheWVyKEFuaW1hdGVkUHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiBh
bmltYXRpb25OYW1lLCBpbnQgaW5kZXgsIGRvdWJsZSB0aW1lT2Zmc2V0KTsKLQotICAgIGVudW0g
TW92ZU9yQ29weSB7IE1vdmUsIENvcHkgfTsKLSAgICBzdGF0aWMgdm9pZCBtb3ZlT3JDb3B5TGF5
ZXJBbmltYXRpb24oTW92ZU9yQ29weSwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25JZGVudGlmaWVy
LCBDQUxheWVyICpmcm9tTGF5ZXIsIENBTGF5ZXIgKnRvTGF5ZXIpOwotICAgIHZvaWQgbW92ZU9y
Q29weUFuaW1hdGlvbnNGb3JQcm9wZXJ0eShNb3ZlT3JDb3B5LCBBbmltYXRlZFByb3BlcnR5SUQs
IENBTGF5ZXIgKiBmcm9tTGF5ZXIsIENBTGF5ZXIgKiB0b0xheWVyKTsKLSAgICAKLSAgICBlbnVt
IExheWVyQ2hhbmdlIHsKLSAgICAgICAgTm9DaGFuZ2UgPSAwLAotICAgICAgICBOYW1lQ2hhbmdl
ZCA9IDEgPDwgMSwKLSAgICAgICAgQ2hpbGRyZW5DaGFuZ2VkID0gMSA8PCAyLCAgIC8vIGFsc28g
dXNlZCBmb3IgY29udGVudCBsYXllciwgYW5kIHByZXNlcnZlcy0zZCwgYW5kIHNpemUgaWYgdGls
aW5nIGNoYW5nZXM/Ci0gICAgICAgIFBvc2l0aW9uQ2hhbmdlZCA9IDEgPDwgMywKLSAgICAgICAg
QW5jaG9yUG9pbnRDaGFuZ2VkID0gMSA8PCA0LAotICAgICAgICBTaXplQ2hhbmdlZCA9IDEgPDwg
NSwKLSAgICAgICAgVHJhbnNmb3JtQ2hhbmdlZCA9IDEgPDwgNiwKLSAgICAgICAgQ2hpbGRyZW5U
cmFuc2Zvcm1DaGFuZ2VkID0gMSA8PCA3LAotICAgICAgICBQcmVzZXJ2ZXMzRENoYW5nZWQgPSAx
IDw8IDgsCi0gICAgICAgIE1hc2tzVG9Cb3VuZHNDaGFuZ2VkID0gMSA8PCA5LAotICAgICAgICBE
cmF3c0NvbnRlbnRDaGFuZ2VkID0gMSA8PCAxMCwgIC8vIG5lZWQgdGhpcz8KLSAgICAgICAgQmFj
a2dyb3VuZENvbG9yQ2hhbmdlZCA9IDEgPDwgMTEsCi0gICAgICAgIENvbnRlbnRzT3BhcXVlQ2hh
bmdlZCA9IDEgPDwgMTIsCi0gICAgICAgIEJhY2tmYWNlVmlzaWJpbGl0eUNoYW5nZWQgPSAxIDw8
IDEzLAotICAgICAgICBPcGFjaXR5Q2hhbmdlZCA9IDEgPDwgMTQsCi0gICAgICAgIEFuaW1hdGlv
bkNoYW5nZWQgPSAxIDw8IDE1LAotICAgICAgICBEaXJ0eVJlY3RzQ2hhbmdlZCA9IDEgPDwgMTYs
Ci0gICAgICAgIENvbnRlbnRzSW1hZ2VDaGFuZ2VkID0gMSA8PCAxNywKLSAgICAgICAgQ29udGVu
dHNNZWRpYUxheWVyQ2hhbmdlZCA9IDEgPDwgMTgsCi0gICAgICAgIENvbnRlbnRzQ2FudmFzTGF5
ZXJDaGFuZ2VkID0gMSA8PCAxOSwKLSAgICAgICAgQ29udGVudHNSZWN0Q2hhbmdlZCA9IDEgPDwg
MjAsCi0gICAgICAgIE1hc2tMYXllckNoYW5nZWQgPSAxIDw8IDIxLAotICAgICAgICBSZXBsaWNh
dGVkTGF5ZXJDaGFuZ2VkID0gMSA8PCAyMiwKLSAgICAgICAgQ29udGVudHNOZWVkc0Rpc3BsYXkg
PSAxIDw8IDIzCi0gICAgfTsKLSAgICB0eXBlZGVmIHVuc2lnbmVkIExheWVyQ2hhbmdlRmxhZ3M7
Ci0gICAgdm9pZCBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoTGF5ZXJDaGFuZ2VGbGFncyBmbGFn
cyk7Ci0gICAgdm9pZCBub3RlU3VibGF5ZXJzQ2hhbmdlZCgpOwotCi0gICAgdm9pZCByZXBhaW50
TGF5ZXJEaXJ0eVJlY3RzKCk7Ci0KLSAgICBSZXRhaW5QdHI8V2ViTGF5ZXI+IG1fbGF5ZXI7IC8v
IFRoZSBtYWluIGxheWVyCi0gICAgUmV0YWluUHRyPENBTGF5ZXI+IG1fc3RydWN0dXJhbExheWVy
OyAvLyBBIGxheWVyIHVzZWQgZm9yIHN0cnVjdHVyYWwgcmVhc29ucywgbGlrZSBwcmVzZXJ2ZXMt
M2Qgb3IgcmVwbGljYS1mbGF0dGVuaW5nLiBJcyB0aGUgcGFyZW50IG9mIG1fbGF5ZXIuCi0gICAg
UmV0YWluUHRyPENBTGF5ZXI+IG1fY29udGVudHNMYXllcjsgLy8gQSBsYXllciB1c2VkIGZvciBp
bm5lciBjb250ZW50LCBsaWtlIGltYWdlIGFuZCB2aWRlbwotCi0gICAgLy8gUmVmZXJlbmNlcyB0
byBjbG9uZXMgb2Ygb3VyIGxheWVycywgZm9yIHJlcGxpY2F0ZWQgbGF5ZXJzLgotICAgIE93blB0
cjxMYXllck1hcD4gbV9sYXllckNsb25lczsKLSAgICBPd25QdHI8TGF5ZXJNYXA+IG1fc3RydWN0
dXJhbExheWVyQ2xvbmVzOwotICAgIE93blB0cjxMYXllck1hcD4gbV9jb250ZW50c0xheWVyQ2xv
bmVzOwotICAgIAotICAgIGVudW0gQ29udGVudHNMYXllclB1cnBvc2UgewotICAgICAgICBOb0Nv
bnRlbnRzTGF5ZXIgPSAwLAotICAgICAgICBDb250ZW50c0xheWVyRm9ySW1hZ2UsCi0gICAgICAg
IENvbnRlbnRzTGF5ZXJGb3JNZWRpYSwKLSAgICAgICAgQ29udGVudHNMYXllckZvckNhbnZhcwot
ICAgIH07Ci0gICAgCi0gICAgQ29udGVudHNMYXllclB1cnBvc2UgbV9jb250ZW50c0xheWVyUHVy
cG9zZTsKLSAgICBib29sIG1fY29udGVudHNMYXllckhhc0JhY2tncm91bmRDb2xvciA6IDE7Ci0K
LSAgICBSZXRhaW5QdHI8V2ViQW5pbWF0aW9uRGVsZWdhdGU+IG1fYW5pbWF0aW9uRGVsZWdhdGU7
Ci0KLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gbV91bmNvcnJlY3RlZENvbnRlbnRzSW1hZ2U7
Ci0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IG1fcGVuZGluZ0NvbnRlbnRzSW1hZ2U7Ci0gICAg
Ci0gICAgLy8gVGhpcyByZXByZXNlbnRzIHRoZSBhbmltYXRpb24gb2YgYSBzaW5nbGUgcHJvcGVy
dHkuIFRoZXJlIG1heSBiZSBtdWx0aXBsZSB0cmFuc2Zvcm0gYW5pbWF0aW9ucyBmb3IKLSAgICAv
LyBhIHNpbmdsZSB0cmFuc2l0aW9uIG9yIGtleWZyYW1lIGFuaW1hdGlvbiwgc28gaW5kZXggaXMg
dXNlZCB0byBkaXN0aW5ndWlzaCB0aGVzZS4KLSAgICBzdHJ1Y3QgTGF5ZXJQcm9wZXJ0eUFuaW1h
dGlvbiB7Ci0gICAgICAgIExheWVyUHJvcGVydHlBbmltYXRpb24oQ0FQcm9wZXJ0eUFuaW1hdGlv
biogY2FBbmltYXRpb24sIGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSwgQW5pbWF0ZWRQcm9w
ZXJ0eUlEIHByb3BlcnR5LCBpbnQgaW5kZXgsIGRvdWJsZSB0aW1lT2Zmc2V0KQotICAgICAgICA6
IG1fYW5pbWF0aW9uKGNhQW5pbWF0aW9uKQotICAgICAgICAsIG1fbmFtZShhbmltYXRpb25OYW1l
KQotICAgICAgICAsIG1fcHJvcGVydHkocHJvcGVydHkpCi0gICAgICAgICwgbV9pbmRleChpbmRl
eCkKLSAgICAgICAgLCBtX3RpbWVPZmZzZXQodGltZU9mZnNldCkKLSAgICAgICAgeyB9Ci0KLSAg
ICAgICAgUmV0YWluUHRyPENBUHJvcGVydHlBbmltYXRpb24qPiBtX2FuaW1hdGlvbjsKLSAgICAg
ICAgU3RyaW5nIG1fbmFtZTsKLSAgICAgICAgQW5pbWF0ZWRQcm9wZXJ0eUlEIG1fcHJvcGVydHk7
Ci0gICAgICAgIGludCBtX2luZGV4OwotICAgICAgICBkb3VibGUgbV90aW1lT2Zmc2V0OwotICAg
IH07Ci0gICAgCi0gICAgLy8gVW5jb21taXR0ZWQgdHJhbnNpdGlvbnMgYW5kIGFuaW1hdGlvbnMu
Ci0gICAgVmVjdG9yPExheWVyUHJvcGVydHlBbmltYXRpb24+IG1fdW5jb21pdHRlZEFuaW1hdGlv
bnM7Ci0gICAgCi0gICAgZW51bSBBY3Rpb24geyBSZW1vdmUsIFBhdXNlIH07Ci0gICAgc3RydWN0
IEFuaW1hdGlvblByb2Nlc3NpbmdBY3Rpb24gewotICAgICAgICBBbmltYXRpb25Qcm9jZXNzaW5n
QWN0aW9uKEFjdGlvbiBhY3Rpb24gPSBSZW1vdmUsIGRvdWJsZSB0aW1lT2Zmc2V0ID0gMCkKLSAg
ICAgICAgICAgIDogYWN0aW9uKGFjdGlvbikKLSAgICAgICAgICAgICwgdGltZU9mZnNldCh0aW1l
T2Zmc2V0KQotICAgICAgICB7Ci0gICAgICAgIH0KLSAgICAgICAgQWN0aW9uIGFjdGlvbjsKLSAg
ICAgICAgZG91YmxlIHRpbWVPZmZzZXQ7IC8vIG9ubHkgdXNlZCBmb3IgcGF1c2UKLSAgICB9Owot
ICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIEFuaW1hdGlvblByb2Nlc3NpbmdBY3Rpb24+IEFu
aW1hdGlvbnNUb1Byb2Nlc3NNYXA7Ci0gICAgQW5pbWF0aW9uc1RvUHJvY2Vzc01hcCBtX2FuaW1h
dGlvbnNUb1Byb2Nlc3M7Ci0KLSAgICAvLyBNYXAgb2YgYW5pbWF0aW9uIG5hbWVzIHRvIHRoZWly
IGFzc29jaWF0ZWQgbGlzdHMgb2YgcHJvcGVydHkgYW5pbWF0aW9ucywgc28gd2UgY2FuIHJlbW92
ZS9wYXVzZSB0aGVtLgotICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxMYXllclBy
b3BlcnR5QW5pbWF0aW9uPiA+IEFuaW1hdGlvbnNNYXA7Ci0gICAgQW5pbWF0aW9uc01hcCBtX3J1
bm5pbmdBbmltYXRpb25zOwotCi0gICAgVmVjdG9yPEZsb2F0UmVjdD4gbV9kaXJ0eVJlY3RzOwot
ICAgIAotICAgIExheWVyQ2hhbmdlRmxhZ3MgbV91bmNvbW1pdHRlZENoYW5nZXM7Ci19OwotCi19
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLQotI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01Q
T1NJVElORykKLQotI2VuZGlmIC8vIEdyYXBoaWNzTGF5ZXJNYWNfaApJbmRleDogV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NMYXllck1hYy5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0xheWVyTWFjLm1tCShyZXZpc2lv
biA3MzI5MykKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzTGF5ZXJN
YWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsMjUxNCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW1wb3J0ICJjb25maWcu
aCIKLQotI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLQotI2ltcG9ydCAiR3JhcGhp
Y3NMYXllck1hYy5oIgotCi0jaW1wb3J0ICJBbmltYXRpb24uaCIKLSNpbXBvcnQgIkJsb2NrRXhj
ZXB0aW9ucy5oIgotI2ltcG9ydCAiRmxvYXRDb252ZXJzaW9uLmgiCi0jaW1wb3J0ICJGbG9hdFJl
Y3QuaCIKLSNpbXBvcnQgIkltYWdlLmgiCi0jaW1wb3J0ICJQbGF0Zm9ybVN0cmluZy5oIgotI2lt
cG9ydCA8UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+Ci0jaW1wb3J0ICJSb3RhdGVUcmFuc2Zvcm1P
cGVyYXRpb24uaCIKLSNpbXBvcnQgIlNjYWxlVHJhbnNmb3JtT3BlcmF0aW9uLmgiCi0jaW1wb3J0
ICJTeXN0ZW1UaW1lLmgiCi0jaW1wb3J0ICJUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaCIK
LSNpbXBvcnQgIldlYkxheWVyLmgiCi0jaW1wb3J0ICJXZWJUaWxlZExheWVyLmgiCi0jaW1wb3J0
IDxsaW1pdHMuaD4KLSNpbXBvcnQgPG9iamMvb2JqYy1hdXRvLmg+Ci0jaW1wb3J0IDx3dGYvQ3Vy
cmVudFRpbWUuaD4KLSNpbXBvcnQgPHd0Zi9VbnVzZWRQYXJhbS5oPgotI2ltcG9ydCA8d3RmL1Jl
dGFpblB0ci5oPgotI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KLQotdXNp
bmcgbmFtZXNwYWNlIHN0ZDsKLQotI2RlZmluZSBIQVZFX01PREVSTl9RVUFSVFpDT1JFICghZGVm
aW5lZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkp
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RhdGljIE5TU3RyaW5nICogY29uc3QgV2ViS2l0
QW5pbWF0aW9uQmVnaW5UaW1lU2V0S2V5ID0gQCJXZWJLaXRBbmltYXRpb25CZWdpblRpbWVTZXQi
OwotCi0vLyBUaGUgdGhyZXNob2xkIHdpZHRoIG9yIGhlaWdodCBhYm92ZSB3aGljaCBhIHRpbGVk
IGxheWVyIHdpbGwgYmUgdXNlZC4gVGhpcyBzaG91bGQgYmUKLS8vIGxhcmdlIGVub3VnaCB0byBh
dm9pZCB0aWxlZCBsYXllcnMgZm9yIG1vc3QgR3JhcGhpY3NMYXllcnMsIGJ1dCBsZXNzIHRoYW4g
dGhlIE9wZW5HTAotLy8gdGV4dHVyZSBzaXplIGxpbWl0IG9uIGFsbCBzdXBwb3J0ZWQgaGFyZHdh
cmUuCi1zdGF0aWMgY29uc3QgaW50IGNNYXhQaXhlbERpbWVuc2lvbiA9IDIwMDA7Ci0KLS8vIFRo
ZSB3aWR0aCBhbmQgaGVpZ2h0IG9mIGEgc2luZ2xlIHRpbGUgaW4gYSB0aWxlZCBsYXllci4gU2hv
dWxkIGJlIGxhcmdlIGVub3VnaCB0bwotLy8gYXZvaWQgbG90cyBvZiBzbWFsbCB0aWxlcyAoYW5k
IHRoZXJlZm9yZSBsb3RzIG9mIGRyYXdpbmcgY2FsbGJhY2tzKSwgYnV0IHNtYWxsIGVub3VnaAot
Ly8gdG8ga2VlcCB0aGUgb3ZlcmFsbCB0aWxlIGNvc3QgbG93Lgotc3RhdGljIGNvbnN0IGludCBj
VGlsZWRMYXllclRpbGVTaXplID0gNTEyOwotCi0vLyBJZiB3ZSBzZW5kIGEgZHVyYXRpb24gb2Yg
MCB0byBDQSwgdGhlbiBpdCB3aWxsIHVzZSB0aGUgZGVmYXVsdCBkdXJhdGlvbgotLy8gb2YgMjUw
bXMuIFNvIHNlbmQgYSB2ZXJ5IHNtYWxsIHZhbHVlIGluc3RlYWQuCi1zdGF0aWMgY29uc3QgZmxv
YXQgY0FuaW1hdGlvbkFsbW9zdFplcm9EdXJhdGlvbiA9IDFlLTNmOwotCi0vLyBDQUN1cnJlbnRN
ZWRpYVRpbWUoKSBpcyBhIHRpbWUgc2luY2UgYm9vdC4gVGhlc2UgbWV0aG9kcyBjb252ZXJ0IGJl
dHdlZW4gdGhhdCBhbmQKLS8vIFdlYkNvcmUgdGltZSwgd2hpY2ggaXMgc3lzdGVtIHRpbWUgKFVU
QykuCi1zdGF0aWMgQ0ZUaW1lSW50ZXJ2YWwgY3VycmVudFRpbWVUb01lZGlhVGltZShkb3VibGUg
dCkKLXsKLSAgICByZXR1cm4gQ0FDdXJyZW50TWVkaWFUaW1lKCkgKyB0IC0gV1RGOjpjdXJyZW50
VGltZSgpOwotfQotCi1zdGF0aWMgZG91YmxlIG1lZGlhVGltZVRvQ3VycmVudFRpbWUoQ0ZUaW1l
SW50ZXJ2YWwgdCkKLXsKLSAgICByZXR1cm4gV1RGOjpjdXJyZW50VGltZSgpICsgdCAtIENBQ3Vy
cmVudE1lZGlhVGltZSgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLUBpbnRlcmZh
Y2UgQ0FMYXllcihQcml2YXRlKQotLSAodm9pZClzZXRDb250ZW50c0NoYW5nZWQ7Ci1AZW5kCi0K
LUBpbnRlcmZhY2UgV2ViQW5pbWF0aW9uRGVsZWdhdGUgOiBOU09iamVjdCB7Ci0gICAgV2ViQ29y
ZTo6R3JhcGhpY3NMYXllck1hYyogbV9ncmFwaGljc0xheWVyOwotfQotCi0tICh2b2lkKWFuaW1h
dGlvbkRpZFN0YXJ0OihDQUFuaW1hdGlvbiAqKWFuaW07Ci0tIChXZWJDb3JlOjpHcmFwaGljc0xh
eWVyTWFjKilncmFwaGljc0xheWVyOwotLSAodm9pZClzZXRMYXllcjooV2ViQ29yZTo6R3JhcGhp
Y3NMYXllck1hYyopZ3JhcGhpY3NMYXllcjsKLQotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gV2Vi
QW5pbWF0aW9uRGVsZWdhdGUKLQotLSAodm9pZClhbmltYXRpb25EaWRTdGFydDooQ0FBbmltYXRp
b24gKilhbmltYXRpb24KLXsKLSAgICBpZiAobV9ncmFwaGljc0xheWVyKQotICAgICAgICBtX2dy
YXBoaWNzTGF5ZXItPmFuaW1hdGlvbkRpZFN0YXJ0KGFuaW1hdGlvbik7Ci19Ci0KLS0gKFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXJNYWMqKWdyYXBoaWNzTGF5ZXIKLXsKLSAgICByZXR1cm4gbV9ncmFw
aGljc0xheWVyOwotfQotCi0tICh2b2lkKXNldExheWVyOihXZWJDb3JlOjpHcmFwaGljc0xheWVy
TWFjKilncmFwaGljc0xheWVyCi17Ci0gICAgbV9ncmFwaGljc0xheWVyID0gZ3JhcGhpY3NMYXll
cjsKLX0KLQotQGVuZAotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0YXRpYyBpbmxpbmUgdm9p
ZCBjb3B5VHJhbnNmb3JtKENBVHJhbnNmb3JtM0QmIHRvVDNELCBjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYgdCkKLXsKLSAgICB0b1QzRC5tMTEgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHQu
bTExKCkpOwotICAgIHRvVDNELm0xMiA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodC5tMTIoKSk7
Ci0gICAgdG9UM0QubTEzID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCh0Lm0xMygpKTsKLSAgICB0
b1QzRC5tMTQgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHQubTE0KCkpOwotICAgIHRvVDNELm0y
MSA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodC5tMjEoKSk7Ci0gICAgdG9UM0QubTIyID0gbmFy
cm93UHJlY2lzaW9uVG9GbG9hdCh0Lm0yMigpKTsKLSAgICB0b1QzRC5tMjMgPSBuYXJyb3dQcmVj
aXNpb25Ub0Zsb2F0KHQubTIzKCkpOwotICAgIHRvVDNELm0yNCA9IG5hcnJvd1ByZWNpc2lvblRv
RmxvYXQodC5tMjQoKSk7Ci0gICAgdG9UM0QubTMxID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCh0
Lm0zMSgpKTsKLSAgICB0b1QzRC5tMzIgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHQubTMyKCkp
OwotICAgIHRvVDNELm0zMyA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodC5tMzMoKSk7Ci0gICAg
dG9UM0QubTM0ID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCh0Lm0zNCgpKTsKLSAgICB0b1QzRC5t
NDEgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHQubTQxKCkpOwotICAgIHRvVDNELm00MiA9IG5h
cnJvd1ByZWNpc2lvblRvRmxvYXQodC5tNDIoKSk7Ci0gICAgdG9UM0QubTQzID0gbmFycm93UHJl
Y2lzaW9uVG9GbG9hdCh0Lm00MygpKTsKLSAgICB0b1QzRC5tNDQgPSBuYXJyb3dQcmVjaXNpb25U
b0Zsb2F0KHQubTQ0KCkpOwotfQotCi1zdGF0aWMgTlNWYWx1ZSogZ2V0VHJhbnNmb3JtRnVuY3Rp
b25WYWx1ZShjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb24qIHRyYW5zZm9ybU9wLCBUcmFuc2Zvcm1P
cGVyYXRpb246Ok9wZXJhdGlvblR5cGUgdHJhbnNmb3JtVHlwZSwgY29uc3QgSW50U2l6ZSYgc2l6
ZSkKLXsKLSAgICBzd2l0Y2ggKHRyYW5zZm9ybVR5cGUpIHsKLSAgICAgICAgY2FzZSBUcmFuc2Zv
cm1PcGVyYXRpb246OlJPVEFURToKLSAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlJP
VEFURV9YOgotICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRFX1k6Ci0gICAg
ICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6dHJhbnNmb3JtT3AgPyBk
ZWcycmFkKHN0YXRpY19jYXN0PGNvbnN0IFJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbio+KHRyYW5z
Zm9ybU9wKS0+YW5nbGUoKSkgOiAwXTsKLSAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246
OlNDQUxFX1g6Ci0gICAgICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6
dHJhbnNmb3JtT3AgPyBzdGF0aWNfY2FzdDxjb25zdCBTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbio+
KHRyYW5zZm9ybU9wKS0+eCgpIDogMV07Ci0gICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9u
OjpTQ0FMRV9ZOgotICAgICAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoRG91Ymxl
OnRyYW5zZm9ybU9wID8gc3RhdGljX2Nhc3Q8Y29uc3QgU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24q
Pih0cmFuc2Zvcm1PcCktPnkoKSA6IDFdOwotICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlv
bjo6U0NBTEVfWjoKLSAgICAgICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJs
ZTp0cmFuc2Zvcm1PcCA/IHN0YXRpY19jYXN0PGNvbnN0IFNjYWxlVHJhbnNmb3JtT3BlcmF0aW9u
Kj4odHJhbnNmb3JtT3ApLT56KCkgOiAxXTsKLSAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRp
b246OlRSQU5TTEFURV9YOgotICAgICAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRo
RG91YmxlOnRyYW5zZm9ybU9wID8gc3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNsYXRlVHJhbnNmb3Jt
T3BlcmF0aW9uKj4odHJhbnNmb3JtT3ApLT54KHNpemUpIDogMF07Ci0gICAgICAgIGNhc2UgVHJh
bnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfWToKLSAgICAgICAgICAgIHJldHVybiBbTlNOdW1i
ZXIgbnVtYmVyV2l0aERvdWJsZTp0cmFuc2Zvcm1PcCA/IHN0YXRpY19jYXN0PGNvbnN0IFRyYW5z
bGF0ZVRyYW5zZm9ybU9wZXJhdGlvbio+KHRyYW5zZm9ybU9wKS0+eShzaXplKSA6IDBdOwotICAg
ICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFX1o6Ci0gICAgICAgICAgICBy
ZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6dHJhbnNmb3JtT3AgPyBzdGF0aWNfY2Fz
dDxjb25zdCBUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24qPih0cmFuc2Zvcm1PcCktPnooc2l6
ZSkgOiAwXTsKLSAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlNDQUxFOgotICAgICAg
ICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0NBTEVfM0Q6Ci0gICAgICAgICAgICByZXR1cm4g
W05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czoKLSAgICAgICAgICAgICAgICAgICAgICAgIFtOU051
bWJlciBudW1iZXJXaXRoRG91YmxlOnRyYW5zZm9ybU9wID8gc3RhdGljX2Nhc3Q8Y29uc3QgU2Nh
bGVUcmFuc2Zvcm1PcGVyYXRpb24qPih0cmFuc2Zvcm1PcCktPngoKSA6IDFdLAotICAgICAgICAg
ICAgICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6dHJhbnNmb3JtT3AgPyBz
dGF0aWNfY2FzdDxjb25zdCBTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbio+KHRyYW5zZm9ybU9wKS0+
eSgpIDogMV0sCi0gICAgICAgICAgICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aERv
dWJsZTp0cmFuc2Zvcm1PcCA/IHN0YXRpY19jYXN0PGNvbnN0IFNjYWxlVHJhbnNmb3JtT3BlcmF0
aW9uKj4odHJhbnNmb3JtT3ApLT56KCkgOiAxXSwKLSAgICAgICAgICAgICAgICAgICAgICAgIG5p
bF07Ci0gICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEU6Ci0gICAgICAg
IGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfM0Q6Ci0gICAgICAgICAgICByZXR1
cm4gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czoKLSAgICAgICAgICAgICAgICAgICAgICAgIFtO
U051bWJlciBudW1iZXJXaXRoRG91YmxlOnRyYW5zZm9ybU9wID8gc3RhdGljX2Nhc3Q8Y29uc3Qg
VHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uKj4odHJhbnNmb3JtT3ApLT54KHNpemUpIDogMF0s
Ci0gICAgICAgICAgICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTp0cmFu
c2Zvcm1PcCA/IHN0YXRpY19jYXN0PGNvbnN0IFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbio+
KHRyYW5zZm9ybU9wKS0+eShzaXplKSA6IDBdLAotICAgICAgICAgICAgICAgICAgICAgICAgW05T
TnVtYmVyIG51bWJlcldpdGhEb3VibGU6dHJhbnNmb3JtT3AgPyBzdGF0aWNfY2FzdDxjb25zdCBU
cmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24qPih0cmFuc2Zvcm1PcCktPnooc2l6ZSkgOiAwXSwK
LSAgICAgICAgICAgICAgICAgICAgICAgIG5pbF07Ci0gICAgICAgIGNhc2UgVHJhbnNmb3JtT3Bl
cmF0aW9uOjpTS0VXX1g6Ci0gICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpTS0VXX1k6
Ci0gICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpTS0VXOgotICAgICAgICBjYXNlIFRy
YW5zZm9ybU9wZXJhdGlvbjo6TUFUUklYOgotICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlv
bjo6Uk9UQVRFXzNEOgotICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6TUFUUklYXzNE
OgotICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6UEVSU1BFQ1RJVkU6Ci0gICAgICAg
IGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpJREVOVElUWToKLSAgICAgICAgY2FzZSBUcmFuc2Zv
cm1PcGVyYXRpb246Ok5PTkU6IHsKLSAgICAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRy
YW5zZm9ybTsKLSAgICAgICAgICAgIGlmICh0cmFuc2Zvcm1PcCkKLSAgICAgICAgICAgICAgICB0
cmFuc2Zvcm1PcC0+YXBwbHkodHJhbnNmb3JtLCBzaXplKTsKLSAgICAgICAgICAgIENBVHJhbnNm
b3JtM0QgY2FUcmFuc2Zvcm07Ci0gICAgICAgICAgICBjb3B5VHJhbnNmb3JtKGNhVHJhbnNmb3Jt
LCB0cmFuc2Zvcm0pOwotICAgICAgICAgICAgcmV0dXJuIFtOU1ZhbHVlIHZhbHVlV2l0aENBVHJh
bnNmb3JtM0Q6Y2FUcmFuc2Zvcm1dOwotICAgICAgICB9Ci0gICAgfQotICAgIAotICAgIHJldHVy
biAwOwotfQotCi0jaWYgSEFWRV9NT0RFUk5fUVVBUlRaQ09SRQotc3RhdGljIE5TU3RyaW5nICpn
ZXRWYWx1ZUZ1bmN0aW9uTmFtZUZvclRyYW5zZm9ybU9wZXJhdGlvbihUcmFuc2Zvcm1PcGVyYXRp
b246Ok9wZXJhdGlvblR5cGUgdHJhbnNmb3JtVHlwZSkKLXsKLSAgICAvLyBVc2UgbGl0ZXJhbCBz
dHJpbmdzIHRvIGF2b2lkIGxpbmstdGltZSBkZXBlbmRlbmN5IG9uIHRob3NlIHN5bWJvbHMuCi0g
ICAgc3dpdGNoICh0cmFuc2Zvcm1UeXBlKSB7Ci0gICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0
aW9uOjpST1RBVEVfWDoKLSAgICAgICAgICAgIHJldHVybiBAInJvdGF0ZVgiOyAvLyBrQ0FWYWx1
ZUZ1bmN0aW9uUm90YXRlWDsKLSAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlJPVEFU
RV9ZOgotICAgICAgICAgICAgcmV0dXJuIEAicm90YXRlWSI7IC8vIGtDQVZhbHVlRnVuY3Rpb25S
b3RhdGVZOwotICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRFOgotICAgICAg
ICAgICAgcmV0dXJuIEAicm90YXRlWiI7IC8vIGtDQVZhbHVlRnVuY3Rpb25Sb3RhdGVaOwotICAg
ICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0NBTEVfWDoKLSAgICAgICAgICAgIHJldHVy
biBAInNjYWxlWCI7IC8vIGtDQVZhbHVlRnVuY3Rpb25TY2FsZVg7Ci0gICAgICAgIGNhc2UgVHJh
bnNmb3JtT3BlcmF0aW9uOjpTQ0FMRV9ZOgotICAgICAgICAgICAgcmV0dXJuIEAic2NhbGVZIjsg
Ly8ga0NBVmFsdWVGdW5jdGlvblNjYWxlWTsKLSAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRp
b246OlNDQUxFX1o6Ci0gICAgICAgICAgICByZXR1cm4gQCJzY2FsZVoiOyAvLyBrQ0FWYWx1ZUZ1
bmN0aW9uU2NhbGVaOwotICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRF
X1g6Ci0gICAgICAgICAgICByZXR1cm4gQCJ0cmFuc2xhdGVYIjsgLy8ga0NBVmFsdWVGdW5jdGlv
blRyYW5zbGF0ZVg7Ci0gICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVf
WToKLSAgICAgICAgICAgIHJldHVybiBAInRyYW5zbGF0ZVkiOyAvLyBrQ0FWYWx1ZUZ1bmN0aW9u
VHJhbnNsYXRlWTsKLSAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURV9a
OgotICAgICAgICAgICAgcmV0dXJuIEAidHJhbnNsYXRlWiI7IC8vIGtDQVZhbHVlRnVuY3Rpb25U
cmFuc2xhdGVaOwotICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0NBTEU6Ci0gICAg
ICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpTQ0FMRV8zRDoKLSAgICAgICAgICAgIHJldHVy
biBAInNjYWxlIjsgLy8ga0NBVmFsdWVGdW5jdGlvblNjYWxlOwotICAgICAgICBjYXNlIFRyYW5z
Zm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFOgotICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlv
bjo6VFJBTlNMQVRFXzNEOgotICAgICAgICAgICAgcmV0dXJuIEAidHJhbnNsYXRlIjsgLy8ga0NB
VmFsdWVGdW5jdGlvblRyYW5zbGF0ZTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJl
dHVybiBuaWw7Ci0gICAgfQotfQotI2VuZGlmCi0KLXN0YXRpYyBTdHJpbmcgcHJvcGVydHlJZFRv
U3RyaW5nKEFuaW1hdGVkUHJvcGVydHlJRCBwcm9wZXJ0eSkKLXsKLSAgICBzd2l0Y2ggKHByb3Bl
cnR5KSB7Ci0gICAgICAgIGNhc2UgQW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybToKLSAg
ICAgICAgICAgIHJldHVybiAidHJhbnNmb3JtIjsKLSAgICAgICAgY2FzZSBBbmltYXRlZFByb3Bl
cnR5T3BhY2l0eToKLSAgICAgICAgICAgIHJldHVybiAib3BhY2l0eSI7Ci0gICAgICAgIGNhc2Ug
QW5pbWF0ZWRQcm9wZXJ0eUJhY2tncm91bmRDb2xvcjoKLSAgICAgICAgICAgIHJldHVybiAiYmFj
a2dyb3VuZENvbG9yIjsKLSAgICAgICAgY2FzZSBBbmltYXRlZFByb3BlcnR5SW52YWxpZDoKLSAg
ICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICByZXR1cm4gIiI7Ci19Ci0KLXN0YXRpYyBTdHJpbmcgYW5pbWF0aW9uSWRl
bnRpZmllcihjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIEFuaW1hdGVkUHJvcGVydHlJRCBw
cm9wZXJ0eSwgaW50IGluZGV4KQotewotICAgIHJldHVybiBtYWtlU3RyaW5nKGFuaW1hdGlvbk5h
bWUsICdfJywgU3RyaW5nOjpudW1iZXIocHJvcGVydHkpLCAnXycsIFN0cmluZzo6bnVtYmVyKGlu
ZGV4KSk7Ci19Ci0KLXN0YXRpYyBDQU1lZGlhVGltaW5nRnVuY3Rpb24qIGdldENBTWVkaWFUaW1p
bmdGdW5jdGlvbihjb25zdCBUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb24pCi17Ci0gICAg
Ly8gQnkgdGhpcyBwb2ludCwgdGltaW5nIGZ1bmN0aW9ucyBjYW4gb25seSBiZSBsaW5lYXIgb3Ig
Y3ViaWMsIG5vdCBzdGVwcy4KLSAgICBBU1NFUlQoIXRpbWluZ0Z1bmN0aW9uLT5pc1N0ZXBzVGlt
aW5nRnVuY3Rpb24oKSk7Ci0gICAgaWYgKHRpbWluZ0Z1bmN0aW9uLT5pc0N1YmljQmV6aWVyVGlt
aW5nRnVuY3Rpb24oKSkgewotICAgICAgICBjb25zdCBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9u
KiBjdGYgPSBzdGF0aWNfY2FzdDxjb25zdCBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKj4odGlt
aW5nRnVuY3Rpb24pOwotICAgICAgICByZXR1cm4gW0NBTWVkaWFUaW1pbmdGdW5jdGlvbiBmdW5j
dGlvbldpdGhDb250cm9sUG9pbnRzOnN0YXRpY19jYXN0PGZsb2F0PihjdGYtPngxKCkpIDpzdGF0
aWNfY2FzdDxmbG9hdD4oY3RmLT55MSgpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOnN0YXRpY19jYXN0PGZsb2F0PihjdGYt
PngyKCkpIDpzdGF0aWNfY2FzdDxmbG9hdD4oY3RmLT55MigpKV07Ci0gICAgfSBlbHNlCi0gICAg
ICAgIHJldHVybiBbQ0FNZWRpYVRpbWluZ0Z1bmN0aW9uIGZ1bmN0aW9uV2l0aE5hbWU6QCJsaW5l
YXIiXTsKLX0KLQotc3RhdGljIHZvaWQgc2V0TGF5ZXJCb3JkZXJDb2xvcihQbGF0Zm9ybUxheWVy
KiBsYXllciwgY29uc3QgQ29sb3ImIGNvbG9yKQotewotICAgIFtsYXllciBzZXRCb3JkZXJDb2xv
cjpjYWNoZWRDR0NvbG9yKGNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKV07Ci19Ci0KLXN0YXRp
YyB2b2lkIGNsZWFyQm9yZGVyQ29sb3IoUGxhdGZvcm1MYXllciogbGF5ZXIpCi17Ci0gICAgW2xh
eWVyIHNldEJvcmRlckNvbG9yOm5pbF07Ci19Ci0KLXN0YXRpYyB2b2lkIHNldExheWVyQmFja2dy
b3VuZENvbG9yKFBsYXRmb3JtTGF5ZXIqIGxheWVyLCBjb25zdCBDb2xvciYgY29sb3IpCi17Ci0g
ICAgW2xheWVyIHNldEJhY2tncm91bmRDb2xvcjpjYWNoZWRDR0NvbG9yKGNvbG9yLCBDb2xvclNw
YWNlRGV2aWNlUkdCKV07Ci19Ci0KLXN0YXRpYyB2b2lkIGNsZWFyTGF5ZXJCYWNrZ3JvdW5kQ29s
b3IoUGxhdGZvcm1MYXllciogbGF5ZXIpCi17Ci0gICAgW2xheWVyIHNldEJhY2tncm91bmRDb2xv
cjowXTsKLX0KLQotc3RhdGljIHZvaWQgc2FmZVNldFN1YmxheWVycyhDQUxheWVyKiBsYXllciwg
TlNBcnJheSogc3VibGF5ZXJzKQotewotICAgIC8vIFdvcmthcm91bmQgZm9yIDxyZGFyOi8vcHJv
YmxlbS83MzkwNzE2PjogLVtDQUxheWVyIHNldFN1YmxheWVyczpdIGNyYXNoZXMgaWYgc3VibGF5
ZXJzIGlzIGFuIGVtcHR5IGFycmF5LCBvciBuaWwsIHVuZGVyIEdDLgotICAgIGlmIChvYmpjX2Nv
bGxlY3RpbmdFbmFibGVkKCkgJiYgIVtzdWJsYXllcnMgY291bnRdKSB7Ci0gICAgICAgIHdoaWxl
IChbW2xheWVyIHN1YmxheWVyc10gY291bnRdKQotICAgICAgICAgICAgW1tbbGF5ZXIgc3VibGF5
ZXJzXSBvYmplY3RBdEluZGV4OjBdIHJlbW92ZUZyb21TdXBlcmxheWVyXTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLSAgICAKLSAgICBbbGF5ZXIgc2V0U3VibGF5ZXJzOnN1YmxheWVyc107Ci19
Ci0KLXN0YXRpYyBib29sIGNhVmFsdWVGdW5jdGlvblN1cHBvcnRlZCgpCi17Ci0gICAgc3RhdGlj
IGJvb2wgc0hhdmVWYWx1ZUZ1bmN0aW9uID0gW0NBUHJvcGVydHlBbmltYXRpb24gaW5zdGFuY2Vz
UmVzcG9uZFRvU2VsZWN0b3I6QHNlbGVjdG9yKHNldFZhbHVlRnVuY3Rpb246KV07Ci0gICAgcmV0
dXJuIHNIYXZlVmFsdWVGdW5jdGlvbjsKLX0KLQotc3RhdGljIGJvb2wgZm9yY2VTb2Z0d2FyZUFu
aW1hdGlvbigpCi17Ci0gICAgc3RhdGljIGJvb2wgZm9yY2VTb2Z0d2FyZUFuaW1hdGlvbiA9IFtb
TlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIGJvb2xGb3JLZXk6QCJXZWJDb3Jl
Rm9yY2VTb2Z0d2FyZUFuaW1hdGlvbiJdOwotICAgIHJldHVybiBmb3JjZVNvZnR3YXJlQW5pbWF0
aW9uOwotfQotCi1zdGF0aWMgTlNEaWN0aW9uYXJ5KiBudWxsQWN0aW9uc0RpY3Rpb25hcnkoKQot
ewotICAgIE5TTnVsbCogbnVsbFZhbHVlID0gW05TTnVsbCBudWxsXTsKLSAgICBOU0RpY3Rpb25h
cnkqIGFjdGlvbnMgPSBbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxWYWx1ZSwgQCJhbmNob3JQb2ludCIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxWYWx1ZSwgQCJib3VuZHMiLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsVmFsdWUsIEAiY29udGVudHMiLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBudWxsVmFsdWUsIEAiY29udGVudHNSZWN0IiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbnVsbFZhbHVlLCBAIm9wYWNpdHkiLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBudWxsVmFsdWUsIEAicG9zaXRpb24iLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBudWxsVmFsdWUsIEAic2hhZG93Q29sb3IiLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBudWxsVmFsdWUsIEAic3VibGF5ZXJUcmFuc2Zvcm0iLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBudWxsVmFsdWUsIEAic3VibGF5ZXJzIiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbnVsbFZhbHVlLCBAInRyYW5zZm9ybSIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG51bGxWYWx1ZSwgQCJ6UG9zaXRpb24iLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBuaWxdOwotICAgIHJldHVybiBhY3Rpb25zOwotfQotCi1zdGF0aWMg
Ym9vbCBhbmltYXRpb25IYXNTdGVwc1RpbWluZ0Z1bmN0aW9uKGNvbnN0IEtleWZyYW1lVmFsdWVM
aXN0JiB2YWx1ZUxpc3QsIGNvbnN0IEFuaW1hdGlvbiogYW5pbSkKLXsKLSAgICBpZiAoYW5pbS0+
dGltaW5nRnVuY3Rpb24oKS0+aXNTdGVwc1RpbWluZ0Z1bmN0aW9uKCkpCi0gICAgICAgIHJldHVy
biB0cnVlOwotICAgIAotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB2YWx1ZUxpc3Quc2l6
ZSgpOyArK2kpIHsKLSAgICAgICAgY29uc3QgVGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0aW9u
ID0gdmFsdWVMaXN0LmF0KGkpLT50aW1pbmdGdW5jdGlvbigpOwotICAgICAgICBpZiAodGltaW5n
RnVuY3Rpb24gJiYgdGltaW5nRnVuY3Rpb24tPmlzU3RlcHNUaW1pbmdGdW5jdGlvbigpKQotICAg
ICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1Q
YXNzT3duUHRyPEdyYXBoaWNzTGF5ZXI+IEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZShHcmFwaGljc0xh
eWVyQ2xpZW50KiBjbGllbnQpCi17Ci0gICAgcmV0dXJuIG5ldyBHcmFwaGljc0xheWVyTWFjKGNs
aWVudCk7Ci19Ci0KLUdyYXBoaWNzTGF5ZXJNYWM6OkdyYXBoaWNzTGF5ZXJNYWMoR3JhcGhpY3NM
YXllckNsaWVudCogY2xpZW50KQotICAgIDogR3JhcGhpY3NMYXllcihjbGllbnQpCi0gICAgLCBt
X2NvbnRlbnRzTGF5ZXJQdXJwb3NlKE5vQ29udGVudHNMYXllcikKLSAgICAsIG1fY29udGVudHNM
YXllckhhc0JhY2tncm91bmRDb2xvcihmYWxzZSkKLSAgICAsIG1fdW5jb21taXR0ZWRDaGFuZ2Vz
KE5vQ2hhbmdlKQotewotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIG1fbGF5
ZXIuYWRvcHROUyhbW1dlYkxheWVyIGFsbG9jXSBpbml0XSk7Ci0gICAgW21fbGF5ZXIuZ2V0KCkg
c2V0TGF5ZXJPd25lcjp0aGlzXTsKLQotI2lmICFIQVZFX01PREVSTl9RVUFSVFpDT1JFCi0gICAg
c2V0Q29udGVudHNPcmllbnRhdGlvbihkZWZhdWx0Q29udGVudHNPcmllbnRhdGlvbigpKTsKLSNl
bmRpZgotCi0gICAgdXBkYXRlRGVidWdJbmRpY2F0b3JzKCk7Ci0KLSAgICBtX2FuaW1hdGlvbkRl
bGVnYXRlLmFkb3B0TlMoW1tXZWJBbmltYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwotICAg
IFttX2FuaW1hdGlvbkRlbGVnYXRlLmdldCgpIHNldExheWVyOnRoaXNdOwotICAgIAotICAgIEVO
RF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLX0KLQotR3JhcGhpY3NMYXllck1hYzo6fkdyYXBoaWNz
TGF5ZXJNYWMoKQotewotICAgIC8vIFdlIHJlbGVhc2Ugb3VyIHJlZmVyZW5jZXMgdG8gdGhlIENB
TGF5ZXJzIGhlcmUsIGJ1dCBkbyBub3QgYWN0aXZlbHkgdW5wYXJlbnQgdGhlbSwKLSAgICAvLyBz
aW5jZSB0aGF0IHdpbGwgY2F1c2UgYSBjb21taXQgYW5kIGJyZWFrIG91ciBiYXRjaGVkIGNvbW1p
dCBtb2RlbC4gVGhlIGxheWVycyB3aWxsCi0gICAgLy8gZ2V0IHJlbGVhc2VkIHdoZW4gdGhlIHJv
b3Rtb3N0IG1vZGlmaWVkIEdyYXBoaWNzTGF5ZXJNYWMgcmVidWlsZHMgaXRzIGNoaWxkIGxheWVy
cy4KLSAgICAKLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIC8vIENsZWFu
IHVwIHRoZSBXSyBsYXllci4KLSAgICBpZiAobV9sYXllcikgewotICAgICAgICBXZWJMYXllciog
bGF5ZXIgPSBtX2xheWVyLmdldCgpOwotICAgICAgICBbbGF5ZXIgc2V0TGF5ZXJPd25lcjpuaWxd
OwotICAgIH0KLSAgICAKLSAgICBpZiAobV9jb250ZW50c0xheWVyKSB7Ci0gICAgICAgIGlmIChb
bV9jb250ZW50c0xheWVyLmdldCgpIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2V0TGF5
ZXJPd25lcjopXSkKLSAgICAgICAgICAgIFsoaWQpbV9jb250ZW50c0xheWVyLmdldCgpIHNldExh
eWVyT3duZXI6bmlsXTsKLSAgICB9Ci0gICAgCi0gICAgLy8gYW5pbWF0aW9uRGlkU3RhcnQ6IGNh
biBmaXJlIGFmdGVyIHRoaXMsIHNvIHdlIG5lZWQgdG8gY2xlYXIgb3V0IHRoZSBsYXllciBvbiB0
aGUgZGVsZWdhdGUuCi0gICAgW21fYW5pbWF0aW9uRGVsZWdhdGUuZ2V0KCkgc2V0TGF5ZXI6MF07
Ci0KLSAgICAvLyBSZWxlYXNlIHRoZSBjbG9uZSBsYXllcnMgaW5zaWRlIHRoZSBleGNlcHRpb24t
aGFuZGxpbmcgYmxvY2suCi0gICAgcmVtb3ZlQ2xvbmVMYXllcnMoKTsKLSAgICAKLSAgICBFTkRf
QkxPQ0tfT0JKQ19FWENFUFRJT05TCi19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6c2V0TmFt
ZShjb25zdCBTdHJpbmcmIG5hbWUpCi17Ci0gICAgU3RyaW5nIGxvbmdOYW1lID0gU3RyaW5nOjpm
b3JtYXQoIkNBTGF5ZXIoJXApIEdyYXBoaWNzTGF5ZXIoJXApICIsIG1fbGF5ZXIuZ2V0KCksIHRo
aXMpICsgbmFtZTsKLSAgICBHcmFwaGljc0xheWVyOjpzZXROYW1lKGxvbmdOYW1lKTsKLSAgICBu
b3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoTmFtZUNoYW5nZWQpOwotfQotCi1OYXRpdmVMYXllciBH
cmFwaGljc0xheWVyTWFjOjpuYXRpdmVMYXllcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fbGF5
ZXIuZ2V0KCk7Ci19Ci0KLWJvb2wgR3JhcGhpY3NMYXllck1hYzo6c2V0Q2hpbGRyZW4oY29uc3Qg
VmVjdG9yPEdyYXBoaWNzTGF5ZXIqPiYgY2hpbGRyZW4pCi17Ci0gICAgYm9vbCBjaGlsZHJlbkNo
YW5nZWQgPSBHcmFwaGljc0xheWVyOjpzZXRDaGlsZHJlbihjaGlsZHJlbik7Ci0gICAgaWYgKGNo
aWxkcmVuQ2hhbmdlZCkKLSAgICAgICAgbm90ZVN1YmxheWVyc0NoYW5nZWQoKTsKLSAgICAKLSAg
ICByZXR1cm4gY2hpbGRyZW5DaGFuZ2VkOwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OmFk
ZENoaWxkKEdyYXBoaWNzTGF5ZXIqIGNoaWxkTGF5ZXIpCi17Ci0gICAgR3JhcGhpY3NMYXllcjo6
YWRkQ2hpbGQoY2hpbGRMYXllcik7Ci0gICAgbm90ZVN1YmxheWVyc0NoYW5nZWQoKTsKLX0KLQot
dm9pZCBHcmFwaGljc0xheWVyTWFjOjphZGRDaGlsZEF0SW5kZXgoR3JhcGhpY3NMYXllciogY2hp
bGRMYXllciwgaW50IGluZGV4KQotewotICAgIEdyYXBoaWNzTGF5ZXI6OmFkZENoaWxkQXRJbmRl
eChjaGlsZExheWVyLCBpbmRleCk7Ci0gICAgbm90ZVN1YmxheWVyc0NoYW5nZWQoKTsKLX0KLQot
dm9pZCBHcmFwaGljc0xheWVyTWFjOjphZGRDaGlsZEJlbG93KEdyYXBoaWNzTGF5ZXIqIGNoaWxk
TGF5ZXIsIEdyYXBoaWNzTGF5ZXIqIHNpYmxpbmcpCi17Ci0gICAgR3JhcGhpY3NMYXllcjo6YWRk
Q2hpbGRCZWxvdyhjaGlsZExheWVyLCBzaWJsaW5nKTsKLSAgICBub3RlU3VibGF5ZXJzQ2hhbmdl
ZCgpOwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OmFkZENoaWxkQWJvdmUoR3JhcGhpY3NM
YXllciogY2hpbGRMYXllciwgR3JhcGhpY3NMYXllciogc2libGluZykKLXsKLSAgICBHcmFwaGlj
c0xheWVyOjphZGRDaGlsZEFib3ZlKGNoaWxkTGF5ZXIsIHNpYmxpbmcpOwotICAgIG5vdGVTdWJs
YXllcnNDaGFuZ2VkKCk7Ci19Ci0KLWJvb2wgR3JhcGhpY3NMYXllck1hYzo6cmVwbGFjZUNoaWxk
KEdyYXBoaWNzTGF5ZXIqIG9sZENoaWxkLCBHcmFwaGljc0xheWVyKiBuZXdDaGlsZCkKLXsKLSAg
ICBpZiAoR3JhcGhpY3NMYXllcjo6cmVwbGFjZUNoaWxkKG9sZENoaWxkLCBuZXdDaGlsZCkpIHsK
LSAgICAgICAgbm90ZVN1YmxheWVyc0NoYW5nZWQoKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotdm9pZCBHcmFwaGljc0xheWVyTWFjOjpyZW1v
dmVGcm9tUGFyZW50KCkKLXsKLSAgICBpZiAobV9wYXJlbnQpCi0gICAgICAgIHN0YXRpY19jYXN0
PEdyYXBoaWNzTGF5ZXJNYWMqPihtX3BhcmVudCktPm5vdGVTdWJsYXllcnNDaGFuZ2VkKCk7Ci0g
ICAgR3JhcGhpY3NMYXllcjo6cmVtb3ZlRnJvbVBhcmVudCgpOwotfQotCi12b2lkIEdyYXBoaWNz
TGF5ZXJNYWM6OnNldE1hc2tMYXllcihHcmFwaGljc0xheWVyKiBsYXllcikKLXsKLSAgICBpZiAo
bGF5ZXIgPT0gbV9tYXNrTGF5ZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIEdyYXBoaWNzTGF5
ZXI6OnNldE1hc2tMYXllcihsYXllcik7Ci0gICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKE1h
c2tMYXllckNoYW5nZWQpOwotCi0gICAgcHJvcGFnYXRlTGF5ZXJDaGFuZ2VUb1JlcGxpY2FzKCk7
Ci0gICAgCi0gICAgaWYgKG1fcmVwbGljYXRlZExheWVyKQotICAgICAgICBzdGF0aWNfY2FzdDxH
cmFwaGljc0xheWVyTWFjKj4obV9yZXBsaWNhdGVkTGF5ZXIpLT5wcm9wYWdhdGVMYXllckNoYW5n
ZVRvUmVwbGljYXMoKTsKLX0KLQotdm9pZCBHcmFwaGljc0xheWVyTWFjOjpzZXRSZXBsaWNhdGVk
TGF5ZXIoR3JhcGhpY3NMYXllciogbGF5ZXIpCi17Ci0gICAgaWYgKGxheWVyID09IG1fcmVwbGlj
YXRlZExheWVyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBHcmFwaGljc0xheWVyOjpzZXRSZXBs
aWNhdGVkTGF5ZXIobGF5ZXIpOwotICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChSZXBsaWNh
dGVkTGF5ZXJDaGFuZ2VkKTsKLX0KLQotdm9pZCBHcmFwaGljc0xheWVyTWFjOjpzZXRSZXBsaWNh
dGVkQnlMYXllcihHcmFwaGljc0xheWVyKiBsYXllcikKLXsKLSAgICBpZiAobGF5ZXIgPT0gbV9y
ZXBsaWNhTGF5ZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIEdyYXBoaWNzTGF5ZXI6OnNldFJl
cGxpY2F0ZWRCeUxheWVyKGxheWVyKTsKLSAgICBub3RlU3VibGF5ZXJzQ2hhbmdlZCgpOwotICAg
IG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChSZXBsaWNhdGVkTGF5ZXJDaGFuZ2VkKTsKLX0KLQot
dm9pZCBHcmFwaGljc0xheWVyTWFjOjpzZXRQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50JiBwb2lu
dCkKLXsKLSAgICBpZiAocG9pbnQgPT0gbV9wb3NpdGlvbikKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgR3JhcGhpY3NMYXllcjo6c2V0UG9zaXRpb24ocG9pbnQpOwotICAgIG5vdGVMYXllclByb3Bl
cnR5Q2hhbmdlZChQb3NpdGlvbkNoYW5nZWQpOwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6
OnNldEFuY2hvclBvaW50KGNvbnN0IEZsb2F0UG9pbnQzRCYgcG9pbnQpCi17Ci0gICAgaWYgKHBv
aW50ID09IG1fYW5jaG9yUG9pbnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIEdyYXBoaWNzTGF5
ZXI6OnNldEFuY2hvclBvaW50KHBvaW50KTsKLSAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQo
QW5jaG9yUG9pbnRDaGFuZ2VkKTsKLX0KLQotdm9pZCBHcmFwaGljc0xheWVyTWFjOjpzZXRTaXpl
KGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKLXsKLSAgICBpZiAoc2l6ZSA9PSBtX3NpemUpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIEdyYXBoaWNzTGF5ZXI6OnNldFNpemUoc2l6ZSk7Ci0gICAgbm90
ZUxheWVyUHJvcGVydHlDaGFuZ2VkKFNpemVDaGFuZ2VkKTsKLX0KLQotdm9pZCBHcmFwaGljc0xh
eWVyTWFjOjpzZXRUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHQpCi17Ci0g
ICAgaWYgKHQgPT0gbV90cmFuc2Zvcm0pCi0gICAgICAgIHJldHVybjsKLQotICAgIEdyYXBoaWNz
TGF5ZXI6OnNldFRyYW5zZm9ybSh0KTsKLSAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoVHJh
bnNmb3JtQ2hhbmdlZCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6c2V0Q2hpbGRyZW5U
cmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHQpCi17Ci0gICAgaWYgKHQgPT0g
bV9jaGlsZHJlblRyYW5zZm9ybSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgR3JhcGhpY3NMYXll
cjo6c2V0Q2hpbGRyZW5UcmFuc2Zvcm0odCk7Ci0gICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2Vk
KENoaWxkcmVuVHJhbnNmb3JtQ2hhbmdlZCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6
bW92ZU9yQ29weUxheWVyQW5pbWF0aW9uKE1vdmVPckNvcHkgb3BlcmF0aW9uLCBjb25zdCBTdHJp
bmcmIGFuaW1hdGlvbklkZW50aWZpZXIsIENBTGF5ZXIgKmZyb21MYXllciwgQ0FMYXllciAqdG9M
YXllcikKLXsKLSAgICBOU1N0cmluZyAqYW5pbWF0aW9uSUQgPSBhbmltYXRpb25JZGVudGlmaWVy
OwotICAgIENBQW5pbWF0aW9uICphbmltID0gW2Zyb21MYXllciBhbmltYXRpb25Gb3JLZXk6YW5p
bWF0aW9uSURdOwotICAgIGlmICghYW5pbSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgc3dpdGNo
IChvcGVyYXRpb24pIHsKLSAgICAgICAgY2FzZSBNb3ZlOgotICAgICAgICAgICAgW2FuaW0gcmV0
YWluXTsKLSAgICAgICAgICAgIFtmcm9tTGF5ZXIgcmVtb3ZlQW5pbWF0aW9uRm9yS2V5OmFuaW1h
dGlvbklEXTsKLSAgICAgICAgICAgIFt0b0xheWVyIGFkZEFuaW1hdGlvbjphbmltIGZvcktleTph
bmltYXRpb25JRF07Ci0gICAgICAgICAgICBbYW5pbSByZWxlYXNlXTsKLSAgICAgICAgICAgIGJy
ZWFrOwotCi0gICAgICAgIGNhc2UgQ29weToKLSAgICAgICAgICAgIFt0b0xheWVyIGFkZEFuaW1h
dGlvbjphbmltIGZvcktleTphbmltYXRpb25JRF07Ci0gICAgICAgICAgICBicmVhazsKLSAgICB9
Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6bW92ZU9yQ29weUFuaW1hdGlvbnNGb3JQcm9w
ZXJ0eShNb3ZlT3JDb3B5IG9wZXJhdGlvbiwgQW5pbWF0ZWRQcm9wZXJ0eUlEIHByb3BlcnR5LCBD
QUxheWVyICpmcm9tTGF5ZXIsIENBTGF5ZXIgKnRvTGF5ZXIpCi17Ci0gICAgLy8gTG9vayBmb3Ig
cnVubmluZyBhbmltYXRpb25zIGFmZmVjdGluZyB0aGlzIHByb3BlcnR5LgotICAgIEFuaW1hdGlv
bnNNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fcnVubmluZ0FuaW1hdGlvbnMuZW5kKCk7Ci0g
ICAgZm9yIChBbmltYXRpb25zTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fcnVubmluZ0FuaW1h
dGlvbnMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIGNvbnN0IFZlY3RvcjxM
YXllclByb3BlcnR5QW5pbWF0aW9uPiYgcHJvcGVydHlBbmltYXRpb25zID0gaXQtPnNlY29uZDsK
LSAgICAgICAgc2l6ZV90IG51bUFuaW1hdGlvbnMgPSBwcm9wZXJ0eUFuaW1hdGlvbnMuc2l6ZSgp
OwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bUFuaW1hdGlvbnM7ICsraSkgewot
ICAgICAgICAgICAgY29uc3QgTGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbiYgY3VyckFuaW1hdGlvbiA9
IHByb3BlcnR5QW5pbWF0aW9uc1tpXTsKLSAgICAgICAgICAgIGlmIChjdXJyQW5pbWF0aW9uLm1f
cHJvcGVydHkgPT0gcHJvcGVydHkpCi0gICAgICAgICAgICAgICAgbW92ZU9yQ29weUxheWVyQW5p
bWF0aW9uKG9wZXJhdGlvbiwgYW5pbWF0aW9uSWRlbnRpZmllcihjdXJyQW5pbWF0aW9uLm1fbmFt
ZSwgY3VyckFuaW1hdGlvbi5tX3Byb3BlcnR5LCBjdXJyQW5pbWF0aW9uLm1faW5kZXgpLCBmcm9t
TGF5ZXIsIHRvTGF5ZXIpOwotICAgICAgICB9Ci0gICAgfQotfQotCi12b2lkIEdyYXBoaWNzTGF5
ZXJNYWM6OnNldFByZXNlcnZlczNEKGJvb2wgcHJlc2VydmVzM0QpCi17Ci0gICAgaWYgKHByZXNl
cnZlczNEID09IG1fcHJlc2VydmVzM0QpCi0gICAgICAgIHJldHVybjsKLQotICAgIEdyYXBoaWNz
TGF5ZXI6OnNldFByZXNlcnZlczNEKHByZXNlcnZlczNEKTsKLSAgICBub3RlTGF5ZXJQcm9wZXJ0
eUNoYW5nZWQoUHJlc2VydmVzM0RDaGFuZ2VkKTsKLX0KLQotdm9pZCBHcmFwaGljc0xheWVyTWFj
OjpzZXRNYXNrc1RvQm91bmRzKGJvb2wgbWFza3NUb0JvdW5kcykKLXsKLSAgICBpZiAobWFza3NU
b0JvdW5kcyA9PSBtX21hc2tzVG9Cb3VuZHMpCi0gICAgICAgIHJldHVybjsKLQotICAgIEdyYXBo
aWNzTGF5ZXI6OnNldE1hc2tzVG9Cb3VuZHMobWFza3NUb0JvdW5kcyk7Ci0gICAgbm90ZUxheWVy
UHJvcGVydHlDaGFuZ2VkKE1hc2tzVG9Cb3VuZHNDaGFuZ2VkKTsKLX0KLQotdm9pZCBHcmFwaGlj
c0xheWVyTWFjOjpzZXREcmF3c0NvbnRlbnQoYm9vbCBkcmF3c0NvbnRlbnQpCi17Ci0gICAgaWYg
KGRyYXdzQ29udGVudCA9PSBtX2RyYXdzQ29udGVudCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
R3JhcGhpY3NMYXllcjo6c2V0RHJhd3NDb250ZW50KGRyYXdzQ29udGVudCk7Ci0gICAgbm90ZUxh
eWVyUHJvcGVydHlDaGFuZ2VkKERyYXdzQ29udGVudENoYW5nZWQpOwotfQotCi12b2lkIEdyYXBo
aWNzTGF5ZXJNYWM6OnNldEJhY2tncm91bmRDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCi17Ci0g
ICAgaWYgKG1fYmFja2dyb3VuZENvbG9yU2V0ICYmIG1fYmFja2dyb3VuZENvbG9yID09IGNvbG9y
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBHcmFwaGljc0xheWVyOjpzZXRCYWNrZ3JvdW5kQ29s
b3IoY29sb3IpOwotCi0gICAgbV9jb250ZW50c0xheWVySGFzQmFja2dyb3VuZENvbG9yID0gdHJ1
ZTsKLSAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoQmFja2dyb3VuZENvbG9yQ2hhbmdlZCk7
Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6Y2xlYXJCYWNrZ3JvdW5kQ29sb3IoKQotewot
ICAgIGlmICghbV9iYWNrZ3JvdW5kQ29sb3JTZXQpCi0gICAgICAgIHJldHVybjsKLQotICAgIEdy
YXBoaWNzTGF5ZXI6OmNsZWFyQmFja2dyb3VuZENvbG9yKCk7Ci0gICAgbV9jb250ZW50c0xheWVy
SGFzQmFja2dyb3VuZENvbG9yID0gZmFsc2U7Ci0gICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2Vk
KEJhY2tncm91bmRDb2xvckNoYW5nZWQpOwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnNl
dENvbnRlbnRzT3BhcXVlKGJvb2wgb3BhcXVlKQotewotICAgIGlmIChtX2NvbnRlbnRzT3BhcXVl
ID09IG9wYXF1ZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgR3JhcGhpY3NMYXllcjo6c2V0Q29u
dGVudHNPcGFxdWUob3BhcXVlKTsKLSAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoQ29udGVu
dHNPcGFxdWVDaGFuZ2VkKTsKLX0KLQotdm9pZCBHcmFwaGljc0xheWVyTWFjOjpzZXRCYWNrZmFj
ZVZpc2liaWxpdHkoYm9vbCB2aXNpYmxlKQotewotICAgIGlmIChtX2JhY2tmYWNlVmlzaWJpbGl0
eSA9PSB2aXNpYmxlKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgR3JhcGhpY3NMYXllcjo6
c2V0QmFja2ZhY2VWaXNpYmlsaXR5KHZpc2libGUpOwotICAgIG5vdGVMYXllclByb3BlcnR5Q2hh
bmdlZChCYWNrZmFjZVZpc2liaWxpdHlDaGFuZ2VkKTsKLX0KLQotdm9pZCBHcmFwaGljc0xheWVy
TWFjOjpzZXRPcGFjaXR5KGZsb2F0IG9wYWNpdHkpCi17Ci0gICAgZmxvYXQgY2xhbXBlZE9wYWNp
dHkgPSBtYXgoMC4wZiwgbWluKG9wYWNpdHksIDEuMGYpKTsKLQotICAgIGlmIChjbGFtcGVkT3Bh
Y2l0eSA9PSBtX29wYWNpdHkpCi0gICAgICAgIHJldHVybjsKLQotICAgIEdyYXBoaWNzTGF5ZXI6
OnNldE9wYWNpdHkoY2xhbXBlZE9wYWNpdHkpOwotICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdl
ZChPcGFjaXR5Q2hhbmdlZCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6c2V0TmVlZHNE
aXNwbGF5KCkKLXsKLSAgICBGbG9hdFJlY3QgaHVnZVJlY3QoLW51bWVyaWNfbGltaXRzPGZsb2F0
Pjo6bWF4KCkgLyAyLCAtbnVtZXJpY19saW1pdHM8ZmxvYXQ+OjptYXgoKSAvIDIsCi0gICAgICAg
ICAgICAgICAgICAgICAgIG51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4KCksIG51bWVyaWNfbGlt
aXRzPGZsb2F0Pjo6bWF4KCkpOwotCi0gICAgc2V0TmVlZHNEaXNwbGF5SW5SZWN0KGh1Z2VSZWN0
KTsKLX0KLQotdm9pZCBHcmFwaGljc0xheWVyTWFjOjpzZXROZWVkc0Rpc3BsYXlJblJlY3QoY29u
c3QgRmxvYXRSZWN0JiByZWN0KQotewotICAgIGlmICghZHJhd3NDb250ZW50KCkpCi0gICAgICAg
IHJldHVybjsKLQotICAgIGNvbnN0IHNpemVfdCBtYXhEaXJ0eVJlY3RzID0gMzI7Ci0gICAgCi0g
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2RpcnR5UmVjdHMuc2l6ZSgpOyArK2kpIHsKLSAg
ICAgICAgaWYgKG1fZGlydHlSZWN0c1tpXS5jb250YWlucyhyZWN0KSkKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICB9Ci0gICAgCi0gICAgaWYgKG1fZGlydHlSZWN0cy5zaXplKCkgPCBtYXhEaXJ0
eVJlY3RzKQotICAgICAgICBtX2RpcnR5UmVjdHMuYXBwZW5kKHJlY3QpOwotICAgIGVsc2UKLSAg
ICAgICAgbV9kaXJ0eVJlY3RzWzBdLnVuaXRlKHJlY3QpOwotCi0gICAgbm90ZUxheWVyUHJvcGVy
dHlDaGFuZ2VkKERpcnR5UmVjdHNDaGFuZ2VkKTsKLX0KLQotdm9pZCBHcmFwaGljc0xheWVyTWFj
OjpzZXRDb250ZW50c05lZWRzRGlzcGxheSgpCi17Ci0gICAgbm90ZUxheWVyUHJvcGVydHlDaGFu
Z2VkKENvbnRlbnRzTmVlZHNEaXNwbGF5KTsKLX0KLQotdm9pZCBHcmFwaGljc0xheWVyTWFjOjpz
ZXRDb250ZW50c1JlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkKLXsKLSAgICBpZiAocmVjdCA9PSBt
X2NvbnRlbnRzUmVjdCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgR3JhcGhpY3NMYXllcjo6c2V0
Q29udGVudHNSZWN0KHJlY3QpOwotICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChDb250ZW50
c1JlY3RDaGFuZ2VkKTsKLX0KLQotYm9vbCBHcmFwaGljc0xheWVyTWFjOjphZGRBbmltYXRpb24o
Y29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCwgY29uc3QgSW50U2l6ZSYgYm94U2l6
ZSwgY29uc3QgQW5pbWF0aW9uKiBhbmltLCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGRv
dWJsZSB0aW1lT2Zmc2V0KQotewotICAgIEFTU0VSVCghYW5pbWF0aW9uTmFtZS5pc0VtcHR5KCkp
OwotCi0gICAgaWYgKGZvcmNlU29mdHdhcmVBbmltYXRpb24oKSB8fCAhYW5pbSB8fCBhbmltLT5p
c0VtcHR5T3JaZXJvRHVyYXRpb24oKSB8fCB2YWx1ZUxpc3Quc2l6ZSgpIDwgMikKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0jaWYgIUhBVkVfTU9ERVJOX1FVQVJUWkNPUkUKLSAgICAvLyBPbGRl
ciB2ZXJzaW9ucyBvZiBRdWFydHpDb3JlIGRvIG5vdCBoYW5kbGUgb3BhY2l0eSBpbiB0cmFuc2Zv
cm0gbGF5ZXJzIHByb3Blcmx5LCBzbyB3ZSB3aWxsCi0gICAgLy8gYWx3YXlzIGRvIHNvZnR3YXJl
IGFuaW1hdGlvbiBpbiB0aGF0IGNhc2UuCi0gICAgaWYgKHZhbHVlTGlzdC5wcm9wZXJ0eSgpID09
IEFuaW1hdGVkUHJvcGVydHlPcGFjaXR5KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYK
LQotICAgIC8vIENvcmVBbmltYXRpb24gZG9lcyBub3QgaGFuZGxlIHRoZSBzdGVwcygpIHRpbWlu
ZyBmdW5jdGlvbi4gRmFsbCBiYWNrCi0gICAgLy8gdG8gc29mdHdhcmUgYW5pbWF0aW9uIGluIHRo
YXQgY2FzZS4KLSAgICBpZiAoYW5pbWF0aW9uSGFzU3RlcHNUaW1pbmdGdW5jdGlvbih2YWx1ZUxp
c3QsIGFuaW0pKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBib29sIGNyZWF0ZWRBbmlt
YXRpb25zID0gZmFsc2U7Ci0gICAgaWYgKHZhbHVlTGlzdC5wcm9wZXJ0eSgpID09IEFuaW1hdGVk
UHJvcGVydHlXZWJraXRUcmFuc2Zvcm0pCi0gICAgICAgIGNyZWF0ZWRBbmltYXRpb25zID0gY3Jl
YXRlVHJhbnNmb3JtQW5pbWF0aW9uc0Zyb21LZXlmcmFtZXModmFsdWVMaXN0LCBhbmltLCBhbmlt
YXRpb25OYW1lLCB0aW1lT2Zmc2V0LCBib3hTaXplKTsKLSAgICBlbHNlCi0gICAgICAgIGNyZWF0
ZWRBbmltYXRpb25zID0gY3JlYXRlQW5pbWF0aW9uRnJvbUtleWZyYW1lcyh2YWx1ZUxpc3QsIGFu
aW0sIGFuaW1hdGlvbk5hbWUsIHRpbWVPZmZzZXQpOwotCi0gICAgaWYgKGNyZWF0ZWRBbmltYXRp
b25zKQotICAgICAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoQW5pbWF0aW9uQ2hhbmdlZCk7
Ci0gICAgICAgIAotICAgIHJldHVybiBjcmVhdGVkQW5pbWF0aW9uczsKLX0KLQotdm9pZCBHcmFw
aGljc0xheWVyTWFjOjpwYXVzZUFuaW1hdGlvbihjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUs
IGRvdWJsZSB0aW1lT2Zmc2V0KQotewotICAgIGlmICghYW5pbWF0aW9uSXNSdW5uaW5nKGFuaW1h
dGlvbk5hbWUpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBBbmltYXRpb25zVG9Qcm9jZXNzTWFw
OjppdGVyYXRvciBpdCA9IG1fYW5pbWF0aW9uc1RvUHJvY2Vzcy5maW5kKGFuaW1hdGlvbk5hbWUp
OwotICAgIGlmIChpdCAhPSBtX2FuaW1hdGlvbnNUb1Byb2Nlc3MuZW5kKCkpIHsKLSAgICAgICAg
QW5pbWF0aW9uUHJvY2Vzc2luZ0FjdGlvbiYgcHJvY2Vzc2luZ0luZm8gPSBpdC0+c2Vjb25kOwot
ICAgICAgICAvLyBJZiBhbiBhbmltYXRpb24gaXMgc2NoZWR1bGVkIHRvIGJlIHJlbW92ZWQsIGRv
bid0IGNoYW5nZSB0aGUgcmVtb3ZlIHRvIGEgcGF1c2UuCi0gICAgICAgIGlmIChwcm9jZXNzaW5n
SW5mby5hY3Rpb24gIT0gUmVtb3ZlKQotICAgICAgICAgICAgcHJvY2Vzc2luZ0luZm8uYWN0aW9u
ID0gUGF1c2U7Ci0gICAgfSBlbHNlCi0gICAgICAgIG1fYW5pbWF0aW9uc1RvUHJvY2Vzcy5hZGQo
YW5pbWF0aW9uTmFtZSwgQW5pbWF0aW9uUHJvY2Vzc2luZ0FjdGlvbihQYXVzZSwgdGltZU9mZnNl
dCkpOwotCi0gICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKEFuaW1hdGlvbkNoYW5nZWQpOwot
fQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnJlbW92ZUFuaW1hdGlvbihjb25zdCBTdHJpbmcm
IGFuaW1hdGlvbk5hbWUpCi17Ci0gICAgaWYgKCFhbmltYXRpb25Jc1J1bm5pbmcoYW5pbWF0aW9u
TmFtZSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fYW5pbWF0aW9uc1RvUHJvY2Vzcy5hZGQo
YW5pbWF0aW9uTmFtZSwgQW5pbWF0aW9uUHJvY2Vzc2luZ0FjdGlvbihSZW1vdmUpKTsKLSAgICBu
b3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoQW5pbWF0aW9uQ2hhbmdlZCk7Ci19Ci0KLXZvaWQgR3Jh
cGhpY3NMYXllck1hYzo6YW5pbWF0aW9uRGlkU3RhcnQoQ0FBbmltYXRpb24qIGNhQW5pbWF0aW9u
KQotewotICAgIGJvb2wgaGFkTm9uWmVyb0JlZ2luVGltZSA9IFtbY2FBbmltYXRpb24gdmFsdWVG
b3JLZXk6V2ViS2l0QW5pbWF0aW9uQmVnaW5UaW1lU2V0S2V5XSBib29sVmFsdWVdOwotCi0gICAg
ZG91YmxlIHN0YXJ0VGltZTsKLSAgICBpZiAoaGFkTm9uWmVyb0JlZ2luVGltZSkgewotICAgICAg
ICAvLyBXZSBkb24ndCBrbm93IHdoYXQgdGltZSBDQSB1c2VkIHRvIGNvbW1pdCB0aGUgYW5pbWF0
aW9uLCBzbyBqdXN0IHVzZSB0aGUgY3VycmVudCB0aW1lCi0gICAgICAgIC8vIChldmVuIHRob3Vn
aCB0aGlzIHdpbGwgYmUgc2xpZ2h0bHkgb2ZmKS4KLSAgICAgICAgc3RhcnRUaW1lID0gV2ViQ29y
ZTo6bWVkaWFUaW1lVG9DdXJyZW50VGltZShDQUN1cnJlbnRNZWRpYVRpbWUoKSk7Ci0gICAgfSBl
bHNlCi0gICAgICAgIHN0YXJ0VGltZSA9IFdlYkNvcmU6Om1lZGlhVGltZVRvQ3VycmVudFRpbWUo
W2NhQW5pbWF0aW9uIGJlZ2luVGltZV0pOwotCi0gICAgaWYgKG1fY2xpZW50KQotICAgICAgICBt
X2NsaWVudC0+bm90aWZ5QW5pbWF0aW9uU3RhcnRlZCh0aGlzLCBzdGFydFRpbWUpOwotfQotCi12
b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnNldENvbnRlbnRzVG9JbWFnZShJbWFnZSogaW1hZ2UpCi17
Ci0gICAgaWYgKGltYWdlKSB7Ci0gICAgICAgIENHSW1hZ2VSZWYgbmV3SW1hZ2UgPSBpbWFnZS0+
bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKLSAgICAgICAgaWYgKCFuZXdJbWFnZSkKLSAg
ICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAvLyBDaGVjayB0byBzZWUgaWYgdGhlIGltYWdl
IGNoYW5nZWQ7IHdlIGhhdmUgdG8gZG8gdGhpcyBiZWNhdXNlIHRoZSBjYWxsIHRvCi0gICAgICAg
IC8vIENHSW1hZ2VDcmVhdGVDb3B5V2l0aENvbG9yU3BhY2UoKSBiZWxvdyBjYW4gY3JlYXRlIGEg
bmV3IGltYWdlIGV2ZXJ5IHRpbWUuCi0gICAgICAgIGlmIChtX3VuY29ycmVjdGVkQ29udGVudHNJ
bWFnZSAmJiBtX3VuY29ycmVjdGVkQ29udGVudHNJbWFnZS5nZXQoKSA9PSBuZXdJbWFnZSkKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgCi0gICAgICAgIG1fdW5jb3JyZWN0ZWRDb250ZW50
c0ltYWdlID0gbmV3SW1hZ2U7Ci0gICAgICAgIG1fcGVuZGluZ0NvbnRlbnRzSW1hZ2UgPSBuZXdJ
bWFnZTsKLSAgICAgICAgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UgPSBDR0ltYWdlR2V0Q29s
b3JTcGFjZShtX3BlbmRpbmdDb250ZW50c0ltYWdlLmdldCgpKTsKLQotICAgICAgICBzdGF0aWMg
Q0dDb2xvclNwYWNlUmVmIGRldmljZVJHQiA9IENHQ29sb3JTcGFjZUNyZWF0ZURldmljZVJHQigp
OwotICAgICAgICBpZiAoY29sb3JTcGFjZSAmJiBDRkVxdWFsKGNvbG9yU3BhY2UsIGRldmljZVJH
QikpIHsKLSAgICAgICAgICAgIC8vIENvcmVHcmFwaGljcyByZW5kZXJzIGltYWdlcyB0YWdnZWQg
d2l0aCBEZXZpY2VSR0IgdXNpbmcgdGhlIGNvbG9yIHNwYWNlIG9mIHRoZSBtYWluIGRpc3BsYXku
IFdoZW4gd2UgaGFuZCBzdWNoCi0gICAgICAgICAgICAvLyBpbWFnZXMgdG8gQ0Egd2UgbmVlZCB0
byB0YWcgdGhlbSBzaW1pbGFybHkgc28gQ0EgcmVuZGVyaW5nIG1hdGNoZXMgQ0cgcmVuZGVyaW5n
LgotICAgICAgICAgICAgc3RhdGljIENHQ29sb3JTcGFjZVJlZiBnZW5lcmljUkdCID0gQ0dEaXNw
bGF5Q29weUNvbG9yU3BhY2Uoa0NHRGlyZWN0TWFpbkRpc3BsYXkpOwotICAgICAgICAgICAgbV9w
ZW5kaW5nQ29udGVudHNJbWFnZS5hZG9wdENGKENHSW1hZ2VDcmVhdGVDb3B5V2l0aENvbG9yU3Bh
Y2UobV9wZW5kaW5nQ29udGVudHNJbWFnZS5nZXQoKSwgZ2VuZXJpY1JHQikpOwotICAgICAgICB9
Ci0gICAgICAgIG1fY29udGVudHNMYXllclB1cnBvc2UgPSBDb250ZW50c0xheWVyRm9ySW1hZ2U7
Ci0gICAgICAgIGlmICghbV9jb250ZW50c0xheWVyKQotICAgICAgICAgICAgbm90ZVN1YmxheWVy
c0NoYW5nZWQoKTsKLSAgICB9IGVsc2UgewotICAgICAgICBtX3VuY29ycmVjdGVkQ29udGVudHNJ
bWFnZSA9IDA7Ci0gICAgICAgIG1fcGVuZGluZ0NvbnRlbnRzSW1hZ2UgPSAwOwotICAgICAgICBt
X2NvbnRlbnRzTGF5ZXJQdXJwb3NlID0gTm9Db250ZW50c0xheWVyOwotICAgICAgICBpZiAobV9j
b250ZW50c0xheWVyKQotICAgICAgICAgICAgbm90ZVN1YmxheWVyc0NoYW5nZWQoKTsKLSAgICB9
Ci0KLSAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoQ29udGVudHNJbWFnZUNoYW5nZWQpOwot
fQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnNldENvbnRlbnRzVG9NZWRpYShQbGF0Zm9ybUxh
eWVyKiBtZWRpYUxheWVyKQotewotICAgIGlmIChtZWRpYUxheWVyID09IG1fY29udGVudHNMYXll
cikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9jb250ZW50c0xheWVyID0gbWVkaWFMYXllcjsK
LSAgICBtX2NvbnRlbnRzTGF5ZXJQdXJwb3NlID0gbWVkaWFMYXllciA/IENvbnRlbnRzTGF5ZXJG
b3JNZWRpYSA6IE5vQ29udGVudHNMYXllcjsKLQotICAgIG5vdGVTdWJsYXllcnNDaGFuZ2VkKCk7
Ci0gICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKENvbnRlbnRzTWVkaWFMYXllckNoYW5nZWQp
OwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OmRpZERpc3BsYXkoUGxhdGZvcm1MYXllciog
bGF5ZXIpCi17Ci0gICAgQ0FMYXllciogc291cmNlTGF5ZXI7Ci0gICAgTGF5ZXJNYXAqIGxheWVy
Q2xvbmVNYXA7Ci0KLSAgICBpZiAobGF5ZXIgPT0gbV9sYXllcikgewotICAgICAgICBzb3VyY2VM
YXllciA9IG1fbGF5ZXIuZ2V0KCk7Ci0gICAgICAgIGxheWVyQ2xvbmVNYXAgPSBtX2xheWVyQ2xv
bmVzLmdldCgpOwotICAgIH0gZWxzZSBpZiAobGF5ZXIgPT0gbV9jb250ZW50c0xheWVyKSB7Ci0g
ICAgICAgIHNvdXJjZUxheWVyID0gbV9jb250ZW50c0xheWVyLmdldCgpOwotICAgICAgICBsYXll
ckNsb25lTWFwID0gbV9jb250ZW50c0xheWVyQ2xvbmVzLmdldCgpOwotICAgIH0gZWxzZQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBpZiAobGF5ZXJDbG9uZU1hcCkgewotICAgICAgICBMYXllck1h
cDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbGF5ZXJDbG9uZU1hcC0+ZW5kKCk7Ci0gICAgICAgIGZv
ciAoTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbGF5ZXJDbG9uZU1hcC0+YmVnaW4oKTsg
aXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICBDQUxheWVyICpjdXJyQ2xvbmUgPSBpdC0+
c2Vjb25kLmdldCgpOwotICAgICAgICAgICAgaWYgKCFjdXJyQ2xvbmUpCi0gICAgICAgICAgICAg
ICAgY29udGludWU7Ci0KLSAgICAgICAgICAgIGlmIChbY3VyckNsb25lIGNvbnRlbnRzXSAhPSBb
c291cmNlTGF5ZXIgY29udGVudHNdKQotICAgICAgICAgICAgICAgIFtjdXJyQ2xvbmUgc2V0Q29u
dGVudHM6W3NvdXJjZUxheWVyIGNvbnRlbnRzXV07Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgW2N1cnJDbG9uZSBzZXRDb250ZW50c0NoYW5nZWRdOwotICAgICAgICB9Ci0gICAg
fQotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnN5bmNDb21wb3NpdGluZ1N0YXRlKCkKLXsK
LSAgICByZWN1cnNpdmVDb21taXRDaGFuZ2VzKCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1h
Yzo6c3luY0NvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KCkKLXsKLSAgICBjb21taXRM
YXllckNoYW5nZXNCZWZvcmVTdWJsYXllcnMoKTsKLSAgICBjb21taXRMYXllckNoYW5nZXNBZnRl
clN1YmxheWVycygpOwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnJlY3Vyc2l2ZUNvbW1p
dENoYW5nZXMoKQotewotICAgIGNvbW1pdExheWVyQ2hhbmdlc0JlZm9yZVN1YmxheWVycygpOwot
Ci0gICAgaWYgKG1fbWFza0xheWVyKQotICAgICAgICBzdGF0aWNfY2FzdDxHcmFwaGljc0xheWVy
TWFjKj4obV9tYXNrTGF5ZXIpLT5jb21taXRMYXllckNoYW5nZXNCZWZvcmVTdWJsYXllcnMoKTsK
LQotICAgIGNvbnN0IFZlY3RvcjxHcmFwaGljc0xheWVyKj4mIGNoaWxkTGF5ZXJzID0gY2hpbGRy
ZW4oKTsKLSAgICBzaXplX3QgbnVtQ2hpbGRyZW4gPSBjaGlsZExheWVycy5zaXplKCk7Ci0gICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1DaGlsZHJlbjsgKytpKSB7Ci0gICAgICAgIEdyYXBo
aWNzTGF5ZXJNYWMqIGN1ckNoaWxkID0gc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllck1hYyo+KGNo
aWxkTGF5ZXJzW2ldKTsKLSAgICAgICAgY3VyQ2hpbGQtPnJlY3Vyc2l2ZUNvbW1pdENoYW5nZXMo
KTsKLSAgICB9Ci0KLSAgICBpZiAobV9yZXBsaWNhTGF5ZXIpCi0gICAgICAgIHN0YXRpY19jYXN0
PEdyYXBoaWNzTGF5ZXJNYWMqPihtX3JlcGxpY2FMYXllciktPnJlY3Vyc2l2ZUNvbW1pdENoYW5n
ZXMoKTsKLQotICAgIGlmIChtX21hc2tMYXllcikKLSAgICAgICAgc3RhdGljX2Nhc3Q8R3JhcGhp
Y3NMYXllck1hYyo+KG1fbWFza0xheWVyKS0+Y29tbWl0TGF5ZXJDaGFuZ2VzQWZ0ZXJTdWJsYXll
cnMoKTsKLQotICAgIGNvbW1pdExheWVyQ2hhbmdlc0FmdGVyU3VibGF5ZXJzKCk7Ci19Ci0KLXZv
aWQgR3JhcGhpY3NMYXllck1hYzo6Y29tbWl0TGF5ZXJDaGFuZ2VzQmVmb3JlU3VibGF5ZXJzKCkK
LXsKLSAgICBpZiAoIW1fdW5jb21taXR0ZWRDaGFuZ2VzKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIC8vIE5lZWQgdG8gaGFuZGxlIFBy
ZXNlcnZlczNEQ2hhbmdlZCBmaXJzdCwgYmVjYXVzZSBpdCBhZmZlY3RzIHdoaWNoIGxheWVycyBz
dWJzZXF1ZW50IHByb3BlcnRpZXMgYXJlIGFwcGxpZWQgdG8KLSAgICBpZiAobV91bmNvbW1pdHRl
ZENoYW5nZXMgJiAoUHJlc2VydmVzM0RDaGFuZ2VkIHwgUmVwbGljYXRlZExheWVyQ2hhbmdlZCkp
Ci0gICAgICAgIHVwZGF0ZVN0cnVjdHVyYWxMYXllcigpOwotCi0gICAgaWYgKG1fdW5jb21taXR0
ZWRDaGFuZ2VzICYgTmFtZUNoYW5nZWQpCi0gICAgICAgIHVwZGF0ZUxheWVyTmFtZXMoKTsKLQot
ICAgIGlmIChtX3VuY29tbWl0dGVkQ2hhbmdlcyAmIENvbnRlbnRzSW1hZ2VDaGFuZ2VkKSAvLyBO
ZWVkcyB0byBoYXBwZW4gYmVmb3JlIENoaWxkcmVuQ2hhbmdlZAotICAgICAgICB1cGRhdGVDb250
ZW50c0ltYWdlKCk7Ci0gICAgICAgIAotICAgIGlmIChtX3VuY29tbWl0dGVkQ2hhbmdlcyAmIENv
bnRlbnRzTWVkaWFMYXllckNoYW5nZWQpIC8vIE5lZWRzIHRvIGhhcHBlbiBiZWZvcmUgQ2hpbGRy
ZW5DaGFuZ2VkCi0gICAgICAgIHVwZGF0ZUNvbnRlbnRzTWVkaWFMYXllcigpOwotICAgIAotICAg
IGlmIChtX3VuY29tbWl0dGVkQ2hhbmdlcyAmIENvbnRlbnRzQ2FudmFzTGF5ZXJDaGFuZ2VkKSAv
LyBOZWVkcyB0byBoYXBwZW4gYmVmb3JlIENoaWxkcmVuQ2hhbmdlZAotICAgICAgICB1cGRhdGVD
b250ZW50c0NhbnZhc0xheWVyKCk7Ci0gICAgCi0gICAgaWYgKG1fdW5jb21taXR0ZWRDaGFuZ2Vz
ICYgQmFja2dyb3VuZENvbG9yQ2hhbmdlZCkgIC8vIE5lZWRzIHRvIGhhcHBlbiBiZWZvcmUgQ2hp
bGRyZW5DaGFuZ2VkLCBhbmQgYWZ0ZXIgdXBkYXRpbmcgaW1hZ2Ugb3IgdmlkZW8KLSAgICAgICAg
dXBkYXRlTGF5ZXJCYWNrZ3JvdW5kQ29sb3IoKTsKLQotICAgIGlmIChtX3VuY29tbWl0dGVkQ2hh
bmdlcyAmIENoaWxkcmVuQ2hhbmdlZCkKLSAgICAgICAgdXBkYXRlU3VibGF5ZXJMaXN0KCk7Ci0K
LSAgICBpZiAobV91bmNvbW1pdHRlZENoYW5nZXMgJiBQb3NpdGlvbkNoYW5nZWQpCi0gICAgICAg
IHVwZGF0ZUxheWVyUG9zaXRpb24oKTsKLSAgICAKLSAgICBpZiAobV91bmNvbW1pdHRlZENoYW5n
ZXMgJiBBbmNob3JQb2ludENoYW5nZWQpCi0gICAgICAgIHVwZGF0ZUFuY2hvclBvaW50KCk7Ci0g
ICAgCi0gICAgaWYgKG1fdW5jb21taXR0ZWRDaGFuZ2VzICYgU2l6ZUNoYW5nZWQpCi0gICAgICAg
IHVwZGF0ZUxheWVyU2l6ZSgpOwotCi0gICAgaWYgKG1fdW5jb21taXR0ZWRDaGFuZ2VzICYgVHJh
bnNmb3JtQ2hhbmdlZCkKLSAgICAgICAgdXBkYXRlVHJhbnNmb3JtKCk7Ci0KLSAgICBpZiAobV91
bmNvbW1pdHRlZENoYW5nZXMgJiBDaGlsZHJlblRyYW5zZm9ybUNoYW5nZWQpCi0gICAgICAgIHVw
ZGF0ZUNoaWxkcmVuVHJhbnNmb3JtKCk7Ci0gICAgCi0gICAgaWYgKG1fdW5jb21taXR0ZWRDaGFu
Z2VzICYgTWFza3NUb0JvdW5kc0NoYW5nZWQpCi0gICAgICAgIHVwZGF0ZU1hc2tzVG9Cb3VuZHMo
KTsKLSAgICAKLSAgICBpZiAobV91bmNvbW1pdHRlZENoYW5nZXMgJiBEcmF3c0NvbnRlbnRDaGFu
Z2VkKQotICAgICAgICB1cGRhdGVMYXllckRyYXdzQ29udGVudCgpOwotCi0gICAgaWYgKG1fdW5j
b21taXR0ZWRDaGFuZ2VzICYgQ29udGVudHNPcGFxdWVDaGFuZ2VkKQotICAgICAgICB1cGRhdGVD
b250ZW50c09wYXF1ZSgpOwotCi0gICAgaWYgKG1fdW5jb21taXR0ZWRDaGFuZ2VzICYgQmFja2Zh
Y2VWaXNpYmlsaXR5Q2hhbmdlZCkKLSAgICAgICAgdXBkYXRlQmFja2ZhY2VWaXNpYmlsaXR5KCk7
Ci0KLSAgICBpZiAobV91bmNvbW1pdHRlZENoYW5nZXMgJiBPcGFjaXR5Q2hhbmdlZCkKLSAgICAg
ICAgdXBkYXRlT3BhY2l0eU9uTGF5ZXIoKTsKLSAgICAKLSAgICBpZiAobV91bmNvbW1pdHRlZENo
YW5nZXMgJiBBbmltYXRpb25DaGFuZ2VkKQotICAgICAgICB1cGRhdGVMYXllckFuaW1hdGlvbnMo
KTsKLSAgICAKLSAgICBpZiAobV91bmNvbW1pdHRlZENoYW5nZXMgJiBEaXJ0eVJlY3RzQ2hhbmdl
ZCkKLSAgICAgICAgcmVwYWludExheWVyRGlydHlSZWN0cygpOwotICAgIAotICAgIGlmIChtX3Vu
Y29tbWl0dGVkQ2hhbmdlcyAmIENvbnRlbnRzUmVjdENoYW5nZWQpCi0gICAgICAgIHVwZGF0ZUNv
bnRlbnRzUmVjdCgpOwotCi0gICAgaWYgKG1fdW5jb21taXR0ZWRDaGFuZ2VzICYgTWFza0xheWVy
Q2hhbmdlZCkKLSAgICAgICAgdXBkYXRlTWFza0xheWVyKCk7Ci0KLSAgICBpZiAobV91bmNvbW1p
dHRlZENoYW5nZXMgJiBDb250ZW50c05lZWRzRGlzcGxheSkKLSAgICAgICAgdXBkYXRlQ29udGVu
dHNOZWVkc0Rpc3BsYXkoKTsKLQotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLX0KLQot
dm9pZCBHcmFwaGljc0xheWVyTWFjOjpjb21taXRMYXllckNoYW5nZXNBZnRlclN1YmxheWVycygp
Ci17Ci0gICAgaWYgKCFtX3VuY29tbWl0dGVkQ2hhbmdlcykKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBpZiAobV91bmNvbW1pdHRlZENo
YW5nZXMgJiBSZXBsaWNhdGVkTGF5ZXJDaGFuZ2VkKQotICAgICAgICB1cGRhdGVSZXBsaWNhdGVk
TGF5ZXJzKCk7Ci0KLSAgICBtX3VuY29tbWl0dGVkQ2hhbmdlcyA9IE5vQ2hhbmdlOwotICAgIEVO
RF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLX0KLQotdm9pZCBHcmFwaGljc0xheWVyTWFjOjp1cGRh
dGVMYXllck5hbWVzKCkKLXsKLSAgICBzd2l0Y2ggKHN0cnVjdHVyYWxMYXllclB1cnBvc2UoKSkg
ewotICAgICAgICBjYXNlIFN0cnVjdHVyYWxMYXllckZvclByZXNlcnZlczNEOgotICAgICAgICAg
ICAgW21fc3RydWN0dXJhbExheWVyLmdldCgpIHNldE5hbWU6KCJUcmFuc2Zvcm0gbGF5ZXIgIiAr
IG5hbWUoKSldOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU3RydWN0dXJhbExh
eWVyRm9yUmVwbGljYUZsYXR0ZW5pbmc6Ci0gICAgICAgICAgICBbbV9zdHJ1Y3R1cmFsTGF5ZXIu
Z2V0KCkgc2V0TmFtZTooIlJlcGxpY2EgZmxhdHRlbmluZyBsYXllciAiICsgbmFtZSgpKV07Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBOb1N0cnVjdHVyYWxMYXllcjoKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBbbV9sYXllci5nZXQoKSBzZXROYW1lOm5hbWUoKV07
Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6dXBkYXRlU3VibGF5ZXJMaXN0KCkKLXsKLSAg
ICBOU011dGFibGVBcnJheSogbmV3U3VibGF5ZXJzID0gbmlsOwotCi0gICAgY29uc3QgVmVjdG9y
PEdyYXBoaWNzTGF5ZXIqPiYgY2hpbGRMYXllcnMgPSBjaGlsZHJlbigpOwotCi0gICAgaWYgKG1f
c3RydWN0dXJhbExheWVyIHx8IG1fY29udGVudHNMYXllciB8fCBjaGlsZExheWVycy5zaXplKCkg
PiAwKSB7Ci0gICAgICAgIG5ld1N1YmxheWVycyA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGlu
aXRdOwotCi0gICAgICAgIGlmIChtX3N0cnVjdHVyYWxMYXllcikgewotICAgICAgICAgICAgLy8g
QWRkIHRoZSByZXBsaWNhIGxheWVyIGZpcnN0LgotICAgICAgICAgICAgaWYgKG1fcmVwbGljYUxh
eWVyKQotICAgICAgICAgICAgICAgIFtuZXdTdWJsYXllcnMgYWRkT2JqZWN0OnN0YXRpY19jYXN0
PEdyYXBoaWNzTGF5ZXJNYWMqPihtX3JlcGxpY2FMYXllciktPnByaW1hcnlMYXllcigpXTsKLSAg
ICAgICAgICAgIC8vIEFkZCB0aGUgcHJpbWFyeSBsYXllci4gRXZlbiBpZiB3ZSBoYXZlIG5lZ2F0
aXZlIHotb3JkZXIgY2hpbGRyZW4sIHRoZSBwcmltYXJ5IGxheWVyIGFsd2F5cyBjb21lcyBiZWhp
bmQuCi0gICAgICAgICAgICBbbmV3U3VibGF5ZXJzIGFkZE9iamVjdDptX2xheWVyLmdldCgpXTsK
LSAgICAgICAgfSBlbHNlIGlmIChtX2NvbnRlbnRzTGF5ZXIpIHsKLSAgICAgICAgICAgIC8vIEZJ
WE1FOiBhZGQgdGhlIGNvbnRlbnRzIGxheWVyIGluIHRoZSBjb3JyZWN0IG9yZGVyIHdpdGggbmVn
YXRpdmUgei1vcmRlciBjaGlsZHJlbi4KLSAgICAgICAgICAgIC8vIFRoaXMgZG9lcyBub3QgY2F1
c2UgdmlzaWJsZSByZW5kZXJpbmcgaXNzdWVzIGJlY2F1c2UgY3VycmVudGx5IGNvbnRlbnRzIGxh
eWVycyBhcmUgb25seSB1c2VkCi0gICAgICAgICAgICAvLyBmb3IgcmVwbGFjZWQgZWxlbWVudHMg
dGhhdCBkb24ndCBoYXZlIGNoaWxkcmVuLgotICAgICAgICAgICAgW25ld1N1YmxheWVycyBhZGRP
YmplY3Q6bV9jb250ZW50c0xheWVyLmdldCgpXTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAg
ICAgc2l6ZV90IG51bUNoaWxkcmVuID0gY2hpbGRMYXllcnMuc2l6ZSgpOwotICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG51bUNoaWxkcmVuOyArK2kpIHsKLSAgICAgICAgICAgIEdyYXBo
aWNzTGF5ZXJNYWMqIGN1ckNoaWxkID0gc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllck1hYyo+KGNo
aWxkTGF5ZXJzW2ldKTsKLSAgICAgICAgICAgIENBTGF5ZXIgKmNoaWxkTGF5ZXIgPSBjdXJDaGls
ZC0+bGF5ZXJGb3JTdXBlcmxheWVyKCk7Ci0gICAgICAgICAgICBbbmV3U3VibGF5ZXJzIGFkZE9i
amVjdDpjaGlsZExheWVyXTsKLSAgICAgICAgfQotCi0gICAgICAgIFtuZXdTdWJsYXllcnMgbWFr
ZU9iamVjdHNQZXJmb3JtU2VsZWN0b3I6QHNlbGVjdG9yKHJlbW92ZUZyb21TdXBlcmxheWVyKV07
Ci0gICAgfQotCi0gICAgaWYgKG1fc3RydWN0dXJhbExheWVyKSB7Ci0gICAgICAgIHNhZmVTZXRT
dWJsYXllcnMobV9zdHJ1Y3R1cmFsTGF5ZXIuZ2V0KCksIG5ld1N1YmxheWVycyk7Ci0KLSAgICAg
ICAgaWYgKG1fY29udGVudHNMYXllcikgewotICAgICAgICAgICAgLy8gSWYgd2UgaGF2ZSBhIHRy
YW5zZm9ybSBsYXllciwgdGhlbiB0aGUgY29udGVudHMgbGF5ZXIgaXMgcGFyZW50ZWQgaW4gdGhl
IAotICAgICAgICAgICAgLy8gcHJpbWFyeSBsYXllciAod2hpY2ggaXMgaXRzZWxmIGEgY2hpbGQg
b2YgdGhlIHRyYW5zZm9ybSBsYXllcikuCi0gICAgICAgICAgICBzYWZlU2V0U3VibGF5ZXJzKG1f
bGF5ZXIuZ2V0KCksIG5pbCk7Ci0gICAgICAgICAgICBbbV9sYXllci5nZXQoKSBhZGRTdWJsYXll
cjptX2NvbnRlbnRzTGF5ZXIuZ2V0KCldOwotICAgICAgICB9Ci0gICAgfSBlbHNlCi0gICAgICAg
IHNhZmVTZXRTdWJsYXllcnMobV9sYXllci5nZXQoKSwgbmV3U3VibGF5ZXJzKTsKLQotICAgIFtu
ZXdTdWJsYXllcnMgcmVsZWFzZV07Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6dXBkYXRl
TGF5ZXJQb3NpdGlvbigpCi17Ci0gICAgRmxvYXRTaXplIHVzZWRTaXplID0gbV91c2luZ1RpbGVk
TGF5ZXIgPyBjb25zdHJhaW5lZFNpemUoKSA6IG1fc2l6ZTsKLQotICAgIC8vIFBvc2l0aW9uIGlz
IG9mZnNldCBvbiB0aGUgbGF5ZXIgYnkgdGhlIGxheWVyIGFuY2hvciBwb2ludC4KLSAgICBDR1Bv
aW50IHBvc1BvaW50ID0gQ0dQb2ludE1ha2UobV9wb3NpdGlvbi54KCkgKyBtX2FuY2hvclBvaW50
LngoKSAqIHVzZWRTaXplLndpZHRoKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1fcG9zaXRpb24ueSgpICsgbV9hbmNob3JQb2ludC55KCkgKiB1c2VkU2l6ZS5oZWlnaHQo
KSk7Ci0gICAgCi0gICAgW3ByaW1hcnlMYXllcigpIHNldFBvc2l0aW9uOnBvc1BvaW50XTsKLQot
ICAgIGlmIChMYXllck1hcCogbGF5ZXJDbG9uZU1hcCA9IHByaW1hcnlMYXllckNsb25lcygpKSB7
Ci0gICAgICAgIExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBsYXllckNsb25lTWFwLT5l
bmQoKTsKLSAgICAgICAgZm9yIChMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBsYXllckNs
b25lTWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgICAgIENHUG9pbnQg
Y2xvbmVQb3NpdGlvbiA9IHBvc1BvaW50OwotICAgICAgICAgICAgaWYgKG1fcmVwbGljYUxheWVy
ICYmIGlzUmVwbGljYXRlZFJvb3RDbG9uZShpdC0+Zmlyc3QpKSB7Ci0gICAgICAgICAgICAgICAg
Ly8gTWFpbnRhaW4gdGhlIHNwZWNpYWwtY2FzZSBwb3NpdGlvbiBmb3IgdGhlIHJvb3Qgb2YgYSBj
bG9uZSBzdWJ0cmVlLAotICAgICAgICAgICAgICAgIC8vIHdoaWNoIHdlIHNldCB1cCBpbiByZXBs
aWNhdGVkTGF5ZXJSb290KCkuCi0gICAgICAgICAgICAgICAgY2xvbmVQb3NpdGlvbiA9IHBvc2l0
aW9uRm9yQ2xvbmVSb290TGF5ZXIoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIENBTGF5
ZXIgKmN1cnJMYXllciA9IGl0LT5zZWNvbmQuZ2V0KCk7Ci0gICAgICAgICAgICBbY3VyckxheWVy
IHNldFBvc2l0aW9uOmNsb25lUG9zaXRpb25dOwotICAgICAgICB9Ci0gICAgfQotfQotCi12b2lk
IEdyYXBoaWNzTGF5ZXJNYWM6OnVwZGF0ZUxheWVyU2l6ZSgpCi17Ci0gICAgQ0dSZWN0IHJlY3Qg
PSBDR1JlY3RNYWtlKDAsIDAsIG1fc2l6ZS53aWR0aCgpLCBtX3NpemUuaGVpZ2h0KCkpOwotICAg
IGlmIChtX3N0cnVjdHVyYWxMYXllcikgewotICAgICAgICBbbV9zdHJ1Y3R1cmFsTGF5ZXIuZ2V0
KCkgc2V0Qm91bmRzOnJlY3RdOwotICAgICAgICAKLSAgICAgICAgaWYgKExheWVyTWFwKiBsYXll
ckNsb25lTWFwID0gbV9zdHJ1Y3R1cmFsTGF5ZXJDbG9uZXMuZ2V0KCkpIHsKLSAgICAgICAgICAg
IExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBsYXllckNsb25lTWFwLT5lbmQoKTsKLSAg
ICAgICAgICAgIGZvciAoTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbGF5ZXJDbG9uZU1h
cC0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICAgICAgICAgIFtpdC0+c2Vjb25k
LmdldCgpIHNldEJvdW5kczpyZWN0XTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIFRoZSBhbmNo
b3Igb2YgdGhlIGNvbnRlbnRzIGxheWVyIGlzIGFsd2F5cyBhdCAwLjUsIDAuNSwgc28gdGhlIHBv
c2l0aW9uIGlzIGNlbnRlci1yZWxhdGl2ZS4KLSAgICAgICAgQ0dQb2ludCBjZW50ZXJQb2ludCA9
IENHUG9pbnRNYWtlKG1fc2l6ZS53aWR0aCgpIC8gMi4wZiwgbV9zaXplLmhlaWdodCgpIC8gMi4w
Zik7Ci0gICAgICAgIFttX2xheWVyLmdldCgpIHNldFBvc2l0aW9uOmNlbnRlclBvaW50XTsKLQot
ICAgICAgICBpZiAoTGF5ZXJNYXAqIGxheWVyQ2xvbmVNYXAgPSBtX2xheWVyQ2xvbmVzLmdldCgp
KSB7Ci0gICAgICAgICAgICBMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbGF5ZXJDbG9u
ZU1hcC0+ZW5kKCk7Ci0gICAgICAgICAgICBmb3IgKExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBp
dCA9IGxheWVyQ2xvbmVNYXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgICAg
ICAgICBbaXQtPnNlY29uZC5nZXQoKSBzZXRQb3NpdGlvbjpjZW50ZXJQb2ludF07Ci0gICAgICAg
IH0KLSAgICB9Ci0gICAgCi0gICAgYm9vbCBuZWVkVGlsZWRMYXllciA9IHJlcXVpcmVzVGlsZWRM
YXllcihtX3NpemUpOwotICAgIGlmIChuZWVkVGlsZWRMYXllciAhPSBtX3VzaW5nVGlsZWRMYXll
cikKLSAgICAgICAgc3dhcEZyb21PclRvVGlsZWRMYXllcihuZWVkVGlsZWRMYXllcik7Ci0gICAg
Ci0gICAgaWYgKG1fdXNpbmdUaWxlZExheWVyKSB7Ci0gICAgICAgIEZsb2F0U2l6ZSBzaXplVG9V
c2UgPSBjb25zdHJhaW5lZFNpemUoKTsKLSAgICAgICAgcmVjdCA9IENHUmVjdE1ha2UoMCwgMCwg
c2l6ZVRvVXNlLndpZHRoKCksIHNpemVUb1VzZS5oZWlnaHQoKSk7Ci0gICAgfQotICAgIAotICAg
IFttX2xheWVyLmdldCgpIHNldEJvdW5kczpyZWN0XTsKLSAgICBpZiAoTGF5ZXJNYXAqIGxheWVy
Q2xvbmVNYXAgPSBtX2xheWVyQ2xvbmVzLmdldCgpKSB7Ci0gICAgICAgIExheWVyTWFwOjpjb25z
dF9pdGVyYXRvciBlbmQgPSBsYXllckNsb25lTWFwLT5lbmQoKTsKLSAgICAgICAgZm9yIChMYXll
ck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBsYXllckNsb25lTWFwLT5iZWdpbigpOyBpdCAhPSBl
bmQ7ICsraXQpCi0gICAgICAgICAgICBbaXQtPnNlY29uZC5nZXQoKSBzZXRCb3VuZHM6cmVjdF07
Ci0gICAgfQotICAgIAotICAgIC8vIENvbnRlbnRzIHRyYW5zZm9ybSBtYXkgZGVwZW5kIG9uIGhl
aWdodC4KLSAgICB1cGRhdGVDb250ZW50c1RyYW5zZm9ybSgpOwotCi0gICAgLy8gTm90ZSB0aGF0
IHdlIGRvbid0IHJlc2l6ZSBtX2NvbnRlbnRzTGF5ZXIuIEl0J3MgdXAgdGhlIGNhbGxlciB0byBk
byB0aGF0LgotCi0gICAgLy8gaWYgd2UndmUgY2hhbmdlZCB0aGUgYm91bmRzLCB3ZSBuZWVkIHRv
IHJlY2FsY3VsYXRlIHRoZSBwb3NpdGlvbgotICAgIC8vIG9mIHRoZSBsYXllciwgdGFraW5nIGFu
Y2hvciBwb2ludCBpbnRvIGFjY291bnQuCi0gICAgdXBkYXRlTGF5ZXJQb3NpdGlvbigpOwotfQot
Ci12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnVwZGF0ZUFuY2hvclBvaW50KCkKLXsKLSAgICBbcHJp
bWFyeUxheWVyKCkgc2V0QW5jaG9yUG9pbnQ6RmxvYXRQb2ludChtX2FuY2hvclBvaW50LngoKSwg
bV9hbmNob3JQb2ludC55KCkpXTsKLSNpZiBIQVZFX01PREVSTl9RVUFSVFpDT1JFCi0gICAgW3By
aW1hcnlMYXllcigpIHNldEFuY2hvclBvaW50WjptX2FuY2hvclBvaW50LnooKV07Ci0jZW5kaWYK
LQotICAgIGlmIChMYXllck1hcCogbGF5ZXJDbG9uZU1hcCA9IHByaW1hcnlMYXllckNsb25lcygp
KSB7Ci0gICAgICAgIExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBsYXllckNsb25lTWFw
LT5lbmQoKTsKLSAgICAgICAgZm9yIChMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBsYXll
ckNsb25lTWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsgICAKLSAgICAgICAgICAgIENB
TGF5ZXIgKmN1cnJMYXllciA9IGl0LT5zZWNvbmQuZ2V0KCk7Ci0gICAgICAgICAgICBbY3Vyckxh
eWVyIHNldEFuY2hvclBvaW50OkZsb2F0UG9pbnQobV9hbmNob3JQb2ludC54KCksIG1fYW5jaG9y
UG9pbnQueSgpKV07Ci0jaWYgSEFWRV9NT0RFUk5fUVVBUlRaQ09SRQotICAgICAgICAgICAgW2N1
cnJMYXllciBzZXRBbmNob3JQb2ludFo6bV9hbmNob3JQb2ludC56KCldOwotI2VuZGlmCi0gICAg
ICAgIH0KLSAgICB9Ci0KLSAgICB1cGRhdGVMYXllclBvc2l0aW9uKCk7Ci19Ci0KLXZvaWQgR3Jh
cGhpY3NMYXllck1hYzo6dXBkYXRlVHJhbnNmb3JtKCkKLXsKLSAgICBDQVRyYW5zZm9ybTNEIHRy
YW5zZm9ybTsKLSAgICBjb3B5VHJhbnNmb3JtKHRyYW5zZm9ybSwgbV90cmFuc2Zvcm0pOwotICAg
IFtwcmltYXJ5TGF5ZXIoKSBzZXRUcmFuc2Zvcm06dHJhbnNmb3JtXTsKLQotICAgIGlmIChMYXll
ck1hcCogbGF5ZXJDbG9uZU1hcCA9IHByaW1hcnlMYXllckNsb25lcygpKSB7Ci0gICAgICAgIExh
eWVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBsYXllckNsb25lTWFwLT5lbmQoKTsKLSAgICAg
ICAgZm9yIChMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBsYXllckNsb25lTWFwLT5iZWdp
bigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgICAgIENBTGF5ZXIgKmN1cnJMYXllciA9
IGl0LT5zZWNvbmQuZ2V0KCk7Ci0gICAgICAgICAgICBpZiAobV9yZXBsaWNhTGF5ZXIgJiYgaXNS
ZXBsaWNhdGVkUm9vdENsb25lKGl0LT5maXJzdCkpIHsKLSAgICAgICAgICAgICAgICAvLyBNYWlu
dGFpbiB0aGUgc3BlY2lhbC1jYXNlIHRyYW5zZm9ybSBmb3IgdGhlIHJvb3Qgb2YgYSBjbG9uZSBz
dWJ0cmVlLAotICAgICAgICAgICAgICAgIC8vIHdoaWNoIHdlIHNldCB1cCBpbiByZXBsaWNhdGVk
TGF5ZXJSb290KCkuCi0gICAgICAgICAgICAgICAgW2N1cnJMYXllciBzZXRUcmFuc2Zvcm06Q0FU
cmFuc2Zvcm0zRElkZW50aXR5XTsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAg
IFtjdXJyTGF5ZXIgc2V0VHJhbnNmb3JtOnRyYW5zZm9ybV07Ci0gICAgICAgIH0KLSAgICB9Ci19
Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6dXBkYXRlQ2hpbGRyZW5UcmFuc2Zvcm0oKQotewot
ICAgIENBVHJhbnNmb3JtM0QgdHJhbnNmb3JtOwotICAgIGNvcHlUcmFuc2Zvcm0odHJhbnNmb3Jt
LCBtX2NoaWxkcmVuVHJhbnNmb3JtKTsKLSAgICBbcHJpbWFyeUxheWVyKCkgc2V0U3VibGF5ZXJU
cmFuc2Zvcm06dHJhbnNmb3JtXTsKLQotICAgIGlmIChMYXllck1hcCogbGF5ZXJDbG9uZU1hcCA9
IHByaW1hcnlMYXllckNsb25lcygpKSB7Ci0gICAgICAgIExheWVyTWFwOjpjb25zdF9pdGVyYXRv
ciBlbmQgPSBsYXllckNsb25lTWFwLT5lbmQoKTsKLSAgICAgICAgZm9yIChMYXllck1hcDo6Y29u
c3RfaXRlcmF0b3IgaXQgPSBsYXllckNsb25lTWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQp
IHsKLSAgICAgICAgICAgIENBTGF5ZXIgKmN1cnJMYXllciA9IGl0LT5zZWNvbmQuZ2V0KCk7Ci0g
ICAgICAgICAgICBbY3VyckxheWVyIHNldFN1YmxheWVyVHJhbnNmb3JtOnRyYW5zZm9ybV07Ci0g
ICAgICAgIH0KLSAgICB9Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6dXBkYXRlTWFza3NU
b0JvdW5kcygpCi17Ci0gICAgW21fbGF5ZXIuZ2V0KCkgc2V0TWFza3NUb0JvdW5kczptX21hc2tz
VG9Cb3VuZHNdOwotCi0gICAgaWYgKExheWVyTWFwKiBsYXllckNsb25lTWFwID0gbV9sYXllckNs
b25lcy5nZXQoKSkgewotICAgICAgICBMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbGF5
ZXJDbG9uZU1hcC0+ZW5kKCk7Ci0gICAgICAgIGZvciAoTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9y
IGl0ID0gbGF5ZXJDbG9uZU1hcC0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAg
ICAgICBDQUxheWVyICpjdXJyTGF5ZXIgPSBpdC0+c2Vjb25kLmdldCgpOwotICAgICAgICAgICAg
W2N1cnJMYXllciBzZXRNYXNrc1RvQm91bmRzOm1fbWFza3NUb0JvdW5kc107Ci0gICAgICAgIH0K
LSAgICB9Ci0KLSAgICB1cGRhdGVEZWJ1Z0luZGljYXRvcnMoKTsKLX0KLQotdm9pZCBHcmFwaGlj
c0xheWVyTWFjOjp1cGRhdGVDb250ZW50c09wYXF1ZSgpCi17Ci0gICAgW21fbGF5ZXIuZ2V0KCkg
c2V0T3BhcXVlOm1fY29udGVudHNPcGFxdWVdOwotCi0gICAgaWYgKExheWVyTWFwKiBsYXllckNs
b25lTWFwID0gbV9sYXllckNsb25lcy5nZXQoKSkgewotICAgICAgICBMYXllck1hcDo6Y29uc3Rf
aXRlcmF0b3IgZW5kID0gbGF5ZXJDbG9uZU1hcC0+ZW5kKCk7Ci0gICAgICAgIGZvciAoTGF5ZXJN
YXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbGF5ZXJDbG9uZU1hcC0+YmVnaW4oKTsgaXQgIT0gZW5k
OyArK2l0KSB7Ci0gICAgICAgICAgICBDQUxheWVyICpjdXJyTGF5ZXIgPSBpdC0+c2Vjb25kLmdl
dCgpOwotICAgICAgICAgICAgW2N1cnJMYXllciBzZXRPcGFxdWU6bV9jb250ZW50c09wYXF1ZV07
Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6dXBkYXRlQmFj
a2ZhY2VWaXNpYmlsaXR5KCkKLXsKLSAgICBpZiAobV9zdHJ1Y3R1cmFsTGF5ZXIgJiYgc3RydWN0
dXJhbExheWVyUHVycG9zZSgpID09IFN0cnVjdHVyYWxMYXllckZvclJlcGxpY2FGbGF0dGVuaW5n
KSB7Ci0gICAgICAgIFttX3N0cnVjdHVyYWxMYXllci5nZXQoKSBzZXREb3VibGVTaWRlZDptX2Jh
Y2tmYWNlVmlzaWJpbGl0eV07Ci0KLSAgICAgICAgaWYgKExheWVyTWFwKiBsYXllckNsb25lTWFw
ID0gbV9zdHJ1Y3R1cmFsTGF5ZXJDbG9uZXMuZ2V0KCkpIHsKLSAgICAgICAgICAgIExheWVyTWFw
Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBsYXllckNsb25lTWFwLT5lbmQoKTsKLSAgICAgICAgICAg
IGZvciAoTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbGF5ZXJDbG9uZU1hcC0+YmVnaW4o
KTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICAgICAgQ0FMYXllciAqY3VyckxheWVy
ID0gaXQtPnNlY29uZC5nZXQoKTsKLSAgICAgICAgICAgICAgICBbY3VyckxheWVyIHNldERvdWJs
ZVNpZGVkOm1fYmFja2ZhY2VWaXNpYmlsaXR5XTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQot
ICAgIH0KLQotICAgIFttX2xheWVyLmdldCgpIHNldERvdWJsZVNpZGVkOm1fYmFja2ZhY2VWaXNp
YmlsaXR5XTsKLQotICAgIGlmIChMYXllck1hcCogbGF5ZXJDbG9uZU1hcCA9IG1fbGF5ZXJDbG9u
ZXMuZ2V0KCkpIHsKLSAgICAgICAgTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGxheWVy
Q2xvbmVNYXAtPmVuZCgpOwotICAgICAgICBmb3IgKExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBp
dCA9IGxheWVyQ2xvbmVNYXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICAg
ICAgQ0FMYXllciAqY3VyckxheWVyID0gaXQtPnNlY29uZC5nZXQoKTsKLSAgICAgICAgICAgIFtj
dXJyTGF5ZXIgc2V0RG91YmxlU2lkZWQ6bV9iYWNrZmFjZVZpc2liaWxpdHldOwotICAgICAgICB9
Ci0gICAgfQotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnVwZGF0ZVN0cnVjdHVyYWxMYXll
cigpCi17Ci0gICAgZW5zdXJlU3RydWN0dXJhbExheWVyKHN0cnVjdHVyYWxMYXllclB1cnBvc2Uo
KSk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6ZW5zdXJlU3RydWN0dXJhbExheWVyKFN0
cnVjdHVyYWxMYXllclB1cnBvc2UgcHVycG9zZSkKLXsKLSAgICBpZiAocHVycG9zZSA9PSBOb1N0
cnVjdHVyYWxMYXllcikgewotICAgICAgICBpZiAobV9zdHJ1Y3R1cmFsTGF5ZXIpIHsKLSAgICAg
ICAgICAgIC8vIFJlcGxhY2UgdGhlIHRyYW5zZm9ybUxheWVyIGluIHRoZSBwYXJlbnQgd2l0aCB0
aGlzIGxheWVyLgotICAgICAgICAgICAgW21fbGF5ZXIuZ2V0KCkgcmVtb3ZlRnJvbVN1cGVybGF5
ZXJdOwotICAgICAgICAgICAgW1ttX3N0cnVjdHVyYWxMYXllci5nZXQoKSBzdXBlcmxheWVyXSBy
ZXBsYWNlU3VibGF5ZXI6bV9zdHJ1Y3R1cmFsTGF5ZXIuZ2V0KCkgd2l0aDptX2xheWVyLmdldCgp
XTsKLQotICAgICAgICAgICAgbW92ZU9yQ29weUFuaW1hdGlvbnNGb3JQcm9wZXJ0eShNb3ZlLCBB
bmltYXRlZFByb3BlcnR5V2Via2l0VHJhbnNmb3JtLCBtX3N0cnVjdHVyYWxMYXllci5nZXQoKSwg
bV9sYXllci5nZXQoKSk7Ci0gICAgICAgICAgICBtb3ZlT3JDb3B5QW5pbWF0aW9uc0ZvclByb3Bl
cnR5KE1vdmUsIEFuaW1hdGVkUHJvcGVydHlPcGFjaXR5LCBtX3N0cnVjdHVyYWxMYXllci5nZXQo
KSwgbV9sYXllci5nZXQoKSk7Ci0KLSAgICAgICAgICAgIC8vIFJlbGVhc2UgdGhlIHN0cnVjdHVy
YWwgbGF5ZXIuCi0gICAgICAgICAgICBtX3N0cnVjdHVyYWxMYXllciA9IDA7Ci0KLSAgICAgICAg
ICAgIC8vIFVwZGF0ZSB0aGUgcHJvcGVydGllcyBvZiBtX2xheWVyIG5vdyB0aGF0IHdlIG5vIGxv
bmdlciBoYXZlIGEgc3RydWN0dXJhbCBsYXllci4KLSAgICAgICAgICAgIHVwZGF0ZUxheWVyUG9z
aXRpb24oKTsKLSAgICAgICAgICAgIHVwZGF0ZUxheWVyU2l6ZSgpOwotICAgICAgICAgICAgdXBk
YXRlQW5jaG9yUG9pbnQoKTsKLSAgICAgICAgICAgIHVwZGF0ZVRyYW5zZm9ybSgpOwotICAgICAg
ICAgICAgdXBkYXRlQ2hpbGRyZW5UcmFuc2Zvcm0oKTsKLQotICAgICAgICAgICAgdXBkYXRlU3Vi
bGF5ZXJMaXN0KCk7Ci0gICAgICAgICAgICB1cGRhdGVPcGFjaXR5T25MYXllcigpOwotICAgICAg
ICB9Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgYm9vbCBzdHJ1Y3R1cmFsTGF5
ZXJDaGFuZ2VkID0gZmFsc2U7Ci0gICAgCi0gICAgaWYgKHB1cnBvc2UgPT0gU3RydWN0dXJhbExh
eWVyRm9yUHJlc2VydmVzM0QpIHsKLSAgICAgICAgQ2xhc3MgdHJhbnNmb3JtTGF5ZXJDbGFzcyA9
IE5TQ2xhc3NGcm9tU3RyaW5nKEAiQ0FUcmFuc2Zvcm1MYXllciIpOwotICAgICAgICBpZiAoIXRy
YW5zZm9ybUxheWVyQ2xhc3MpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYgKG1f
c3RydWN0dXJhbExheWVyICYmICFbbV9zdHJ1Y3R1cmFsTGF5ZXIuZ2V0KCkgaXNLaW5kT2ZDbGFz
czp0cmFuc2Zvcm1MYXllckNsYXNzXSkKLSAgICAgICAgICAgIG1fc3RydWN0dXJhbExheWVyID0g
MDsKLSAgICAgICAgCi0gICAgICAgIGlmICghbV9zdHJ1Y3R1cmFsTGF5ZXIpIHsKLSAgICAgICAg
ICAgIG1fc3RydWN0dXJhbExheWVyLmFkb3B0TlMoW1t0cmFuc2Zvcm1MYXllckNsYXNzIGFsbG9j
XSBpbml0XSk7Ci0gICAgICAgICAgICBzdHJ1Y3R1cmFsTGF5ZXJDaGFuZ2VkID0gdHJ1ZTsKLSAg
ICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChtX3N0cnVjdHVyYWxMYXllciAmJiAh
W21fc3RydWN0dXJhbExheWVyLmdldCgpIGlzTWVtYmVyT2ZDbGFzczpbQ0FMYXllciBzZWxmXV0p
Ci0gICAgICAgICAgICBtX3N0cnVjdHVyYWxMYXllciA9IDA7Ci0KLSAgICAgICAgaWYgKCFtX3N0
cnVjdHVyYWxMYXllcikgewotICAgICAgICAgICAgbV9zdHJ1Y3R1cmFsTGF5ZXIuYWRvcHROUyhb
W0NBTGF5ZXIgYWxsb2NdIGluaXRdKTsKLSAgICAgICAgICAgIHN0cnVjdHVyYWxMYXllckNoYW5n
ZWQgPSB0cnVlOwotICAgICAgICB9Ci0gICAgfQotICAgIAotICAgIGlmICghc3RydWN0dXJhbExh
eWVyQ2hhbmdlZCkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIC8vIFR1cm4gb2ZmIGRlZmF1
bHQgYW5pbWF0aW9ucy4KLSAgICBbbV9zdHJ1Y3R1cmFsTGF5ZXIuZ2V0KCkgc2V0U3R5bGU6W05T
RGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdDpudWxsQWN0aW9uc0RpY3Rpb25hcnkoKSBm
b3JLZXk6QCJhY3Rpb25zIl1dOwotCi0gICAgdXBkYXRlTGF5ZXJOYW1lcygpOwotCi0gICAgLy8g
VXBkYXRlIHRoZSBwcm9wZXJ0aWVzIG9mIHRoZSBzdHJ1Y3R1cmFsIGxheWVyLgotICAgIHVwZGF0
ZUxheWVyUG9zaXRpb24oKTsKLSAgICB1cGRhdGVMYXllclNpemUoKTsKLSAgICB1cGRhdGVBbmNo
b3JQb2ludCgpOwotICAgIHVwZGF0ZVRyYW5zZm9ybSgpOwotICAgIHVwZGF0ZUNoaWxkcmVuVHJh
bnNmb3JtKCk7Ci0gICAgdXBkYXRlQmFja2ZhY2VWaXNpYmlsaXR5KCk7Ci0gICAgCi0gICAgLy8g
U2V0IHByb3BlcnRpZXMgb2YgbV9sYXllciB0byB0aGVpciBkZWZhdWx0IHZhbHVlcywgc2luY2Ug
dGhlc2UgYXJlIGV4cHJlc3NlZCBvbiBvbiB0aGUgc3RydWN0dXJhbCBsYXllci4KLSAgICBDR1Bv
aW50IHBvaW50ID0gQ0dQb2ludE1ha2UobV9zaXplLndpZHRoKCkgLyAyLjBmLCBtX3NpemUuaGVp
Z2h0KCkgLyAyLjBmKTsKLSAgICBbbV9sYXllci5nZXQoKSBzZXRQb3NpdGlvbjpwb2ludF07Ci0g
ICAgW21fbGF5ZXIuZ2V0KCkgc2V0QW5jaG9yUG9pbnQ6Q0dQb2ludE1ha2UoMC41ZiwgMC41Zild
OwotICAgIFttX2xheWVyLmdldCgpIHNldFRyYW5zZm9ybTpDQVRyYW5zZm9ybTNESWRlbnRpdHld
OwotICAgIFttX2xheWVyLmdldCgpIHNldE9wYWNpdHk6MV07Ci0KLSAgICAvLyBNb3ZlIHRoaXMg
bGF5ZXIgdG8gYmUgYSBjaGlsZCBvZiB0aGUgdHJhbnNmb3JtIGxheWVyLgotICAgIFtbbV9sYXll
ci5nZXQoKSBzdXBlcmxheWVyXSByZXBsYWNlU3VibGF5ZXI6bV9sYXllci5nZXQoKSB3aXRoOm1f
c3RydWN0dXJhbExheWVyLmdldCgpXTsKLSAgICBbbV9zdHJ1Y3R1cmFsTGF5ZXIuZ2V0KCkgYWRk
U3VibGF5ZXI6bV9sYXllci5nZXQoKV07Ci0KLSAgICBtb3ZlT3JDb3B5QW5pbWF0aW9uc0ZvclBy
b3BlcnR5KE1vdmUsIEFuaW1hdGVkUHJvcGVydHlXZWJraXRUcmFuc2Zvcm0sIG1fbGF5ZXIuZ2V0
KCksIG1fc3RydWN0dXJhbExheWVyLmdldCgpKTsKLSAgICBtb3ZlT3JDb3B5QW5pbWF0aW9uc0Zv
clByb3BlcnR5KE1vdmUsIEFuaW1hdGVkUHJvcGVydHlPcGFjaXR5LCBtX2xheWVyLmdldCgpLCBt
X3N0cnVjdHVyYWxMYXllci5nZXQoKSk7Ci0gICAgCi0gICAgdXBkYXRlU3VibGF5ZXJMaXN0KCk7
Ci0gICAgdXBkYXRlT3BhY2l0eU9uTGF5ZXIoKTsKLX0KLQotR3JhcGhpY3NMYXllck1hYzo6U3Ry
dWN0dXJhbExheWVyUHVycG9zZSBHcmFwaGljc0xheWVyTWFjOjpzdHJ1Y3R1cmFsTGF5ZXJQdXJw
b3NlKCkgY29uc3QKLXsKLSAgICBpZiAocHJlc2VydmVzM0QoKSkKLSAgICAgICAgcmV0dXJuIFN0
cnVjdHVyYWxMYXllckZvclByZXNlcnZlczNEOwotICAgIAotICAgIGlmIChpc1JlcGxpY2F0ZWQo
KSkKLSAgICAgICAgcmV0dXJuIFN0cnVjdHVyYWxMYXllckZvclJlcGxpY2FGbGF0dGVuaW5nOwot
ICAgIAotICAgIHJldHVybiBOb1N0cnVjdHVyYWxMYXllcjsKLX0KLQotdm9pZCBHcmFwaGljc0xh
eWVyTWFjOjp1cGRhdGVMYXllckRyYXdzQ29udGVudCgpCi17Ci0gICAgYm9vbCBuZWVkVGlsZWRM
YXllciA9IHJlcXVpcmVzVGlsZWRMYXllcihtX3NpemUpOwotICAgIGlmIChuZWVkVGlsZWRMYXll
ciAhPSBtX3VzaW5nVGlsZWRMYXllcikKLSAgICAgICAgc3dhcEZyb21PclRvVGlsZWRMYXllcihu
ZWVkVGlsZWRMYXllcik7Ci0KLSAgICBpZiAobV9kcmF3c0NvbnRlbnQpCi0gICAgICAgIFttX2xh
eWVyLmdldCgpIHNldE5lZWRzRGlzcGxheV07Ci0gICAgZWxzZQotICAgICAgICBbbV9sYXllci5n
ZXQoKSBzZXRDb250ZW50czpuaWxdOwotCi0gICAgdXBkYXRlRGVidWdJbmRpY2F0b3JzKCk7Ci19
Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6dXBkYXRlTGF5ZXJCYWNrZ3JvdW5kQ29sb3IoKQot
ewotICAgIGlmICghbV9jb250ZW50c0xheWVyKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBX
ZSBuZXZlciBjcmVhdGUgdGhlIGNvbnRlbnRzIGxheWVyIGp1c3QgZm9yIGJhY2tncm91bmQgY29s
b3IgeWV0LgotICAgIGlmIChtX2JhY2tncm91bmRDb2xvclNldCkKLSAgICAgICAgc2V0TGF5ZXJC
YWNrZ3JvdW5kQ29sb3IobV9jb250ZW50c0xheWVyLmdldCgpLCBtX2JhY2tncm91bmRDb2xvcik7
Ci0gICAgZWxzZQotICAgICAgICBjbGVhckxheWVyQmFja2dyb3VuZENvbG9yKG1fY29udGVudHNM
YXllci5nZXQoKSk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6dXBkYXRlQ29udGVudHNJ
bWFnZSgpCi17Ci0gICAgaWYgKG1fcGVuZGluZ0NvbnRlbnRzSW1hZ2UpIHsKLSAgICAgICAgaWYg
KCFtX2NvbnRlbnRzTGF5ZXIuZ2V0KCkpIHsKLSAgICAgICAgICAgIFdlYkxheWVyKiBpbWFnZUxh
eWVyID0gW1dlYkxheWVyIGxheWVyXTsKLSNpZm5kZWYgTkRFQlVHCi0gICAgICAgICAgICBbaW1h
Z2VMYXllciBzZXROYW1lOkAiSW1hZ2UgTGF5ZXIiXTsKLSNlbmRpZgotICAgICAgICAgICAgc2V0
dXBDb250ZW50c0xheWVyKGltYWdlTGF5ZXIpOwotICAgICAgICAgICAgbV9jb250ZW50c0xheWVy
LmFkb3B0TlMoW2ltYWdlTGF5ZXIgcmV0YWluXSk7Ci0gICAgICAgICAgICAvLyBtX2NvbnRlbnRz
TGF5ZXIgd2lsbCBiZSBwYXJlbnRlZCBieSB1cGRhdGVTdWJsYXllckxpc3QKLSAgICAgICAgfQot
Ci0gICAgICAgIC8vIEZJWE1FOiBtYXliZSBvbmx5IGRvIHRyaWxpbmVhciBpZiB0aGUgaW1hZ2Ug
aXMgYmVpbmcgc2NhbGVkIGRvd24sCi0gICAgICAgIC8vIGJ1dCB0aGVuIHdoYXQgaWYgdGhlIGxh
eWVyIHNpemUgY2hhbmdlcz8KLSNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRl
ZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkKLSAgICAgICAgW21fY29udGVudHNMYXllci5nZXQo
KSBzZXRNaW5pZmljYXRpb25GaWx0ZXI6a0NBRmlsdGVyVHJpbGluZWFyXTsKLSNlbmRpZgotICAg
ICAgICBbbV9jb250ZW50c0xheWVyLmdldCgpIHNldENvbnRlbnRzOihpZCltX3BlbmRpbmdDb250
ZW50c0ltYWdlLmdldCgpXTsKLSAgICAgICAgbV9wZW5kaW5nQ29udGVudHNJbWFnZSA9IDA7Ci0K
LSAgICAgICAgaWYgKG1fY29udGVudHNMYXllckNsb25lcykgewotICAgICAgICAgICAgTGF5ZXJN
YXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fY29udGVudHNMYXllckNsb25lcy0+ZW5kKCk7Ci0g
ICAgICAgICAgICBmb3IgKExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fY29udGVudHNM
YXllckNsb25lcy0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICAgICAgICAgIFtp
dC0+c2Vjb25kLmdldCgpIHNldENvbnRlbnRzOlttX2NvbnRlbnRzTGF5ZXIuZ2V0KCkgY29udGVu
dHNdXTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgdXBkYXRlQ29udGVudHNSZWN0KCk7
Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLy8gTm8gaW1hZ2UuCi0gICAgICAgIC8vIG1fY29udGVu
dHNMYXllciB3aWxsIGJlIHJlbW92ZWQgdmlhIHVwZGF0ZVN1YmxheWVyTGlzdC4KLSAgICAgICAg
bV9jb250ZW50c0xheWVyID0gMDsKLSAgICB9Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6
dXBkYXRlQ29udGVudHNNZWRpYUxheWVyKCkKLXsKLSAgICAvLyBWaWRlbyBsYXllciB3YXMgc2V0
IGFzIG1fY29udGVudHNMYXllciwgYW5kIHdpbGwgZ2V0IHBhcmVudGVkIGluIHVwZGF0ZVN1Ymxh
eWVyTGlzdCgpLgotICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIpIHsKLSAgICAgICAgc2V0dXBDb250
ZW50c0xheWVyKG1fY29udGVudHNMYXllci5nZXQoKSk7Ci0gICAgICAgIHVwZGF0ZUNvbnRlbnRz
UmVjdCgpOwotICAgIH0KLX0KLQotdm9pZCBHcmFwaGljc0xheWVyTWFjOjp1cGRhdGVDb250ZW50
c0NhbnZhc0xheWVyKCkKLXsKLSAgICAvLyBDYW52YXNMYXllciB3YXMgc2V0IGFzIG1fY29udGVu
dHNMYXllciwgYW5kIHdpbGwgZ2V0IHBhcmVudGVkIGluIHVwZGF0ZVN1YmxheWVyTGlzdCgpLgot
ICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIpIHsKLSAgICAgICAgc2V0dXBDb250ZW50c0xheWVyKG1f
Y29udGVudHNMYXllci5nZXQoKSk7Ci0gICAgICAgIFttX2NvbnRlbnRzTGF5ZXIuZ2V0KCkgc2V0
TmVlZHNEaXNwbGF5XTsKLSAgICAgICAgdXBkYXRlQ29udGVudHNSZWN0KCk7Ci0gICAgfQotfQot
Ci12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnVwZGF0ZUNvbnRlbnRzUmVjdCgpCi17Ci0gICAgaWYg
KCFtX2NvbnRlbnRzTGF5ZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIENHUG9pbnQgcG9pbnQg
PSBDR1BvaW50TWFrZShtX2NvbnRlbnRzUmVjdC54KCksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1fY29udGVudHNSZWN0LnkoKSk7Ci0gICAgQ0dSZWN0IHJlY3QgPSBDR1JlY3RN
YWtlKDAuMGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMGYsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1fY29udGVudHNSZWN0LndpZHRoKCksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1fY29udGVudHNSZWN0LmhlaWdodCgpKTsKLQotICAgIFttX2NvbnRl
bnRzTGF5ZXIuZ2V0KCkgc2V0UG9zaXRpb246cG9pbnRdOwotICAgIFttX2NvbnRlbnRzTGF5ZXIu
Z2V0KCkgc2V0Qm91bmRzOnJlY3RdOwotCi0gICAgaWYgKG1fY29udGVudHNMYXllckNsb25lcykg
ewotICAgICAgICBMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9jb250ZW50c0xheWVy
Q2xvbmVzLT5lbmQoKTsKLSAgICAgICAgZm9yIChMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQg
PSBtX2NvbnRlbnRzTGF5ZXJDbG9uZXMtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAg
ICAgICAgICAgQ0FMYXllciAqY3VyckxheWVyID0gaXQtPnNlY29uZC5nZXQoKTsKLSAgICAgICAg
ICAgIFtjdXJyTGF5ZXIgc2V0UG9zaXRpb246cG9pbnRdOwotICAgICAgICAgICAgW2N1cnJMYXll
ciBzZXRCb3VuZHM6cmVjdF07Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXZvaWQgR3JhcGhpY3NM
YXllck1hYzo6dXBkYXRlTWFza0xheWVyKCkKLXsKLSAgICBDQUxheWVyICptYXNrQ0FMYXllciA9
IG1fbWFza0xheWVyID8gbV9tYXNrTGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSA6IDA7Ci0gICAgW21f
bGF5ZXIuZ2V0KCkgc2V0TWFzazptYXNrQ0FMYXllcl07Ci0KLSAgICBMYXllck1hcCogbWFza0xh
eWVyQ2xvbmVNYXAgPSBtX21hc2tMYXllciA/IHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXJNYWMq
PihtX21hc2tMYXllciktPnByaW1hcnlMYXllckNsb25lcygpIDogMDsKLSAgICAKLSAgICBpZiAo
TGF5ZXJNYXAqIGxheWVyQ2xvbmVNYXAgPSBtX2xheWVyQ2xvbmVzLmdldCgpKSB7Ci0gICAgICAg
IExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBsYXllckNsb25lTWFwLT5lbmQoKTsKLSAg
ICAgICAgZm9yIChMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBsYXllckNsb25lTWFwLT5i
ZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgICAgIENBTGF5ZXIgKmN1cnJMYXll
ciA9IGl0LT5zZWNvbmQuZ2V0KCk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIENBTGF5ZXIg
Km1hc2tDbG9uZSA9IG1hc2tMYXllckNsb25lTWFwID8gbWFza0xheWVyQ2xvbmVNYXAtPmdldChp
dC0+Zmlyc3QpLmdldCgpIDogMDsKLSAgICAgICAgICAgIFtjdXJyTGF5ZXIgc2V0TWFzazptYXNr
Q2xvbmVdOwotICAgICAgICB9Ci0gICAgfQotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnVw
ZGF0ZVJlcGxpY2F0ZWRMYXllcnMoKQotewotICAgIC8vIENsb25lIHRoZSBkZXNjZW5kYW50cyBv
ZiB0aGUgcmVwbGljYXRlZCBsYXllciwgYW5kIHBhcmVudCB1bmRlciB1cy4KLSAgICBSZXBsaWNh
U3RhdGUgcmVwbGljYVN0YXRlKFJlcGxpY2FTdGF0ZTo6UmVwbGljYUJyYW5jaCk7Ci0KLSAgICBD
QUxheWVyICpyZXBsaWNhUm9vdCA9IHJlcGxpY2F0ZWRMYXllclJvb3QocmVwbGljYVN0YXRlKTsK
LSAgICBpZiAoIXJlcGxpY2FSb290KQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAobV9zdHJ1
Y3R1cmFsTGF5ZXIpCi0gICAgICAgIFttX3N0cnVjdHVyYWxMYXllci5nZXQoKSBpbnNlcnRTdWJs
YXllcjpyZXBsaWNhUm9vdCBhdEluZGV4OjBdOwotICAgIGVsc2UKLSAgICAgICAgW21fbGF5ZXIu
Z2V0KCkgaW5zZXJ0U3VibGF5ZXI6cmVwbGljYVJvb3QgYXRJbmRleDowXTsKLX0KLQotLy8gRm9y
IG5vdywgdGhpcyBhc3N1bWVzIHRoYXQgbGF5ZXJzIG9ubHkgZXZlciBoYXZlIG9uZSByZXBsaWNh
LCBzbyByZXBsaWNhSW5kaWNlcyBjb250YWlucyBvbmx5IDAgYW5kIDEuCi1HcmFwaGljc0xheWVy
TWFjOjpDbG9uZUlEIEdyYXBoaWNzTGF5ZXJNYWM6OlJlcGxpY2FTdGF0ZTo6Y2xvbmVJRCgpIGNv
bnN0Ci17Ci0gICAgc2l6ZV90IGRlcHRoID0gbV9yZXBsaWNhQnJhbmNoZXMuc2l6ZSgpOwotCi0g
ICAgY29uc3Qgc2l6ZV90IGJpdHNQZXJVQ2hhciA9IHNpemVvZihVQ2hhcikgKiA4OwotICAgIHNp
emVfdCB2ZWN0b3JTaXplID0gKGRlcHRoICsgYml0c1BlclVDaGFyIC0gMSkgLyBiaXRzUGVyVUNo
YXI7Ci0gICAgCi0gICAgVmVjdG9yPFVDaGFyPiByZXN1bHQodmVjdG9yU2l6ZSk7Ci0gICAgcmVz
dWx0LmZpbGwoMCk7Ci0KLSAgICAvLyBDcmVhdGUgYSBzdHJpbmcgZnJvbSB0aGUgYml0IHNlcXVl
bmNlIHdoaWNoIHdlIGNhbiB1c2UgdG8gaWRlbnRpZnkgdGhlIGNsb25lLgotICAgIC8vIE5vdGUg
dGhhdCB0aGUgc3RyaW5nIG1heSBjb250YWluIGVtYmVkZGVkIG51bGxzLCBidXQgdGhhdCdzIE9L
LgotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZGVwdGg7ICsraSkgewotICAgICAgICBVQ2hh
ciYgY3VyckNoYXIgPSByZXN1bHRbaSAvIGJpdHNQZXJVQ2hhcl07Ci0gICAgICAgIGN1cnJDaGFy
ID0gKGN1cnJDaGFyIDw8IDEpIHwgbV9yZXBsaWNhQnJhbmNoZXNbaV07Ci0gICAgfQotICAgIAot
ICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KHJlc3VsdCk7Ci19Ci0KLUNBTGF5ZXIgKkdyYXBoaWNz
TGF5ZXJNYWM6OnJlcGxpY2F0ZWRMYXllclJvb3QoUmVwbGljYVN0YXRlJiByZXBsaWNhU3RhdGUp
Ci17Ci0gICAgLy8gTGltaXQgcmVwbGljYSBuZXN0aW5nLCB0byBhdm9pZCAyXk4gZXhwbG9zaW9u
IG9mIHJlcGxpY2EgbGF5ZXJzLgotICAgIGlmICghbV9yZXBsaWNhdGVkTGF5ZXIgfHwgcmVwbGlj
YVN0YXRlLnJlcGxpY2FEZXB0aCgpID09IFJlcGxpY2FTdGF0ZTo6bWF4UmVwbGljYURlcHRoKQot
ICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgR3JhcGhpY3NMYXllck1hYyogcmVwbGljYXRlZExh
eWVyID0gc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllck1hYyo+KG1fcmVwbGljYXRlZExheWVyKTsK
LSAgICAKLSAgICBDQUxheWVyICpjbG9uZWRMYXllclJvb3QgPSByZXBsaWNhdGVkTGF5ZXItPmZl
dGNoQ2xvbmVMYXllcnModGhpcywgcmVwbGljYVN0YXRlLCBSb290Q2xvbmVMZXZlbCk7Ci0gICAg
RmxvYXRQb2ludCBjbG9uZVJvb3RQb3NpdGlvbiA9IHJlcGxpY2F0ZWRMYXllci0+cG9zaXRpb25G
b3JDbG9uZVJvb3RMYXllcigpOwotCi0gICAgLy8gUmVwbGljYSByb290IGhhcyBubyBvZmZzZXQg
b3IgdHJhbnNmb3JtCi0gICAgW2Nsb25lZExheWVyUm9vdCBzZXRQb3NpdGlvbjpjbG9uZVJvb3RQ
b3NpdGlvbl07Ci0gICAgW2Nsb25lZExheWVyUm9vdCBzZXRUcmFuc2Zvcm06Q0FUcmFuc2Zvcm0z
RElkZW50aXR5XTsKLQotICAgIHJldHVybiBjbG9uZWRMYXllclJvb3Q7Ci19Ci0KLXZvaWQgR3Jh
cGhpY3NMYXllck1hYzo6dXBkYXRlTGF5ZXJBbmltYXRpb25zKCkKLXsKLSAgICBpZiAobV9hbmlt
YXRpb25zVG9Qcm9jZXNzLnNpemUoKSkgewotICAgICAgICBBbmltYXRpb25zVG9Qcm9jZXNzTWFw
Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBtX2FuaW1hdGlvbnNUb1Byb2Nlc3MuZW5kKCk7Ci0gICAg
ICAgIGZvciAoQW5pbWF0aW9uc1RvUHJvY2Vzc01hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2Fu
aW1hdGlvbnNUb1Byb2Nlc3MuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAg
ICBjb25zdCBTdHJpbmcmIGN1cnJBbmltYXRpb25OYW1lID0gaXQtPmZpcnN0OwotICAgICAgICAg
ICAgQW5pbWF0aW9uc01hcDo6aXRlcmF0b3IgYW5pbWF0aW9uSXQgPSBtX3J1bm5pbmdBbmltYXRp
b25zLmZpbmQoY3VyckFuaW1hdGlvbk5hbWUpOwotICAgICAgICAgICAgaWYgKGFuaW1hdGlvbkl0
ID09IG1fcnVubmluZ0FuaW1hdGlvbnMuZW5kKCkpCi0gICAgICAgICAgICAgICAgY29udGludWU7
Ci0KLSAgICAgICAgICAgIGNvbnN0IEFuaW1hdGlvblByb2Nlc3NpbmdBY3Rpb24mIHByb2Nlc3Np
bmdJbmZvID0gaXQtPnNlY29uZDsKLSAgICAgICAgICAgIGNvbnN0IFZlY3RvcjxMYXllclByb3Bl
cnR5QW5pbWF0aW9uPiYgYW5pbWF0aW9ucyA9IGFuaW1hdGlvbkl0LT5zZWNvbmQ7Ci0gICAgICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFuaW1hdGlvbnMuc2l6ZSgpOyArK2kpIHsKLSAg
ICAgICAgICAgICAgICBjb25zdCBMYXllclByb3BlcnR5QW5pbWF0aW9uJiBjdXJyQW5pbWF0aW9u
ID0gYW5pbWF0aW9uc1tpXTsKLSAgICAgICAgICAgICAgICBzd2l0Y2ggKHByb2Nlc3NpbmdJbmZv
LmFjdGlvbikgewotICAgICAgICAgICAgICAgICAgICBjYXNlIFJlbW92ZToKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHJlbW92ZUNBQW5pbWF0aW9uRnJvbUxheWVyKGN1cnJBbmltYXRpb24ubV9w
cm9wZXJ0eSwgY3VyckFuaW1hdGlvbk5hbWUsIGN1cnJBbmltYXRpb24ubV9pbmRleCk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBQYXVz
ZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHBhdXNlQ0FBbmltYXRpb25PbkxheWVyKGN1cnJB
bmltYXRpb24ubV9wcm9wZXJ0eSwgY3VyckFuaW1hdGlvbk5hbWUsIGN1cnJBbmltYXRpb24ubV9p
bmRleCwgcHJvY2Vzc2luZ0luZm8udGltZU9mZnNldCk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
IGlmIChwcm9jZXNzaW5nSW5mby5hY3Rpb24gPT0gUmVtb3ZlKQotICAgICAgICAgICAgICAgIG1f
cnVubmluZ0FuaW1hdGlvbnMucmVtb3ZlKGN1cnJBbmltYXRpb25OYW1lKTsKLSAgICAgICAgfQot
ICAgIAotICAgICAgICBtX2FuaW1hdGlvbnNUb1Byb2Nlc3MuY2xlYXIoKTsKLSAgICB9Ci0gICAg
Ci0gICAgc2l6ZV90IG51bUFuaW1hdGlvbnM7Ci0gICAgaWYgKChudW1BbmltYXRpb25zID0gbV91
bmNvbWl0dGVkQW5pbWF0aW9ucy5zaXplKCkpKSB7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbnVtQW5pbWF0aW9uczsgKytpKSB7Ci0gICAgICAgICAgICBjb25zdCBMYXllclByb3Bl
cnR5QW5pbWF0aW9uJiBwZW5kaW5nQW5pbWF0aW9uID0gbV91bmNvbWl0dGVkQW5pbWF0aW9uc1tp
XTsKLSAgICAgICAgICAgIHNldENBQW5pbWF0aW9uT25MYXllcihwZW5kaW5nQW5pbWF0aW9uLm1f
YW5pbWF0aW9uLmdldCgpLCBwZW5kaW5nQW5pbWF0aW9uLm1fcHJvcGVydHksIHBlbmRpbmdBbmlt
YXRpb24ubV9uYW1lLCBwZW5kaW5nQW5pbWF0aW9uLm1faW5kZXgsIHBlbmRpbmdBbmltYXRpb24u
bV90aW1lT2Zmc2V0KTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgQW5pbWF0aW9uc01hcDo6
aXRlcmF0b3IgaXQgPSBtX3J1bm5pbmdBbmltYXRpb25zLmZpbmQocGVuZGluZ0FuaW1hdGlvbi5t
X25hbWUpOwotICAgICAgICAgICAgaWYgKGl0ID09IG1fcnVubmluZ0FuaW1hdGlvbnMuZW5kKCkp
IHsKLSAgICAgICAgICAgICAgICBWZWN0b3I8TGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbj4gYW5pbWF0
aW9uczsKLSAgICAgICAgICAgICAgICBhbmltYXRpb25zLmFwcGVuZChwZW5kaW5nQW5pbWF0aW9u
KTsKLSAgICAgICAgICAgICAgICBtX3J1bm5pbmdBbmltYXRpb25zLmFkZChwZW5kaW5nQW5pbWF0
aW9uLm1fbmFtZSwgYW5pbWF0aW9ucyk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgICAgIFZlY3RvcjxMYXllclByb3BlcnR5QW5pbWF0aW9uPiYgYW5pbWF0aW9ucyA9IGl0LT5z
ZWNvbmQ7Ci0gICAgICAgICAgICAgICAgYW5pbWF0aW9ucy5hcHBlbmQocGVuZGluZ0FuaW1hdGlv
bik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIG1fdW5jb21p
dHRlZEFuaW1hdGlvbnMuY2xlYXIoKTsKLSAgICB9Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1h
Yzo6c2V0Q0FBbmltYXRpb25PbkxheWVyKENBUHJvcGVydHlBbmltYXRpb24qIGNhQW5pbSwgQW5p
bWF0ZWRQcm9wZXJ0eUlEIHByb3BlcnR5LCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGlu
dCBpbmRleCwgZG91YmxlIHRpbWVPZmZzZXQpCi17Ci0gICAgUGxhdGZvcm1MYXllciogbGF5ZXIg
PSBhbmltYXRlZExheWVyKHByb3BlcnR5KTsKLQotICAgIGlmICh0aW1lT2Zmc2V0KSB7Ci0gICAg
ICAgIFtjYUFuaW0gc2V0QmVnaW5UaW1lOkNBQ3VycmVudE1lZGlhVGltZSgpIC0gdGltZU9mZnNl
dF07Ci0gICAgICAgIFtjYUFuaW0gc2V0VmFsdWU6W05TTnVtYmVyIG51bWJlcldpdGhCb29sOllF
U10gZm9yS2V5OldlYktpdEFuaW1hdGlvbkJlZ2luVGltZVNldEtleV07Ci0gICAgfQotCi0gICAg
TlNTdHJpbmcgKmFuaW1hdGlvbklEID0gYW5pbWF0aW9uSWRlbnRpZmllcihhbmltYXRpb25OYW1l
LCBwcm9wZXJ0eSwgaW5kZXgpOwotCi0gICAgW2xheWVyIHJlbW92ZUFuaW1hdGlvbkZvcktleTph
bmltYXRpb25JRF07Ci0gICAgW2xheWVyIGFkZEFuaW1hdGlvbjpjYUFuaW0gZm9yS2V5OmFuaW1h
dGlvbklEXTsKLQotICAgIGlmIChMYXllck1hcCogbGF5ZXJDbG9uZU1hcCA9IGFuaW1hdGVkTGF5
ZXJDbG9uZXMocHJvcGVydHkpKSB7Ci0gICAgICAgIExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBl
bmQgPSBsYXllckNsb25lTWFwLT5lbmQoKTsKLSAgICAgICAgZm9yIChMYXllck1hcDo6Y29uc3Rf
aXRlcmF0b3IgaXQgPSBsYXllckNsb25lTWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsK
LSAgICAgICAgICAgIC8vIFNraXAgaW1tZWRpYXRlIHJlcGxpY2FzLCBzaW5jZSB0aGV5IG1vdmUg
d2l0aCB0aGUgb3JpZ2luYWwuCi0gICAgICAgICAgICBpZiAobV9yZXBsaWNhTGF5ZXIgJiYgaXNS
ZXBsaWNhdGVkUm9vdENsb25lKGl0LT5maXJzdCkpCi0gICAgICAgICAgICAgICAgY29udGludWU7
Ci0gICAgICAgICAgICBDQUxheWVyICpjdXJyTGF5ZXIgPSBpdC0+c2Vjb25kLmdldCgpOwotICAg
ICAgICAgICAgW2N1cnJMYXllciByZW1vdmVBbmltYXRpb25Gb3JLZXk6YW5pbWF0aW9uSURdOwot
ICAgICAgICAgICAgW2N1cnJMYXllciBhZGRBbmltYXRpb246Y2FBbmltIGZvcktleTphbmltYXRp
b25JRF07Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLS8vIFdvcmthcm91bmQgZm9yIDxyZGFyOi8v
cHJvYmxlbS83MzExMzY3Pgotc3RhdGljIHZvaWQgYnVnNzMxMTM2N1dvcmthcm91bmQoQ0FMYXll
ciogdHJhbnNmb3JtTGF5ZXIsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0p
Ci17Ci0gICAgaWYgKCF0cmFuc2Zvcm1MYXllcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQ0FU
cmFuc2Zvcm0zRCBjYVRyYW5zZm9ybTsKLSAgICBjb3B5VHJhbnNmb3JtKGNhVHJhbnNmb3JtLCB0
cmFuc2Zvcm0pOwotICAgIGNhVHJhbnNmb3JtLm00MSArPSAxOwotICAgIFt0cmFuc2Zvcm1MYXll
ciBzZXRUcmFuc2Zvcm06Y2FUcmFuc2Zvcm1dOwotCi0gICAgY2FUcmFuc2Zvcm0ubTQxIC09IDE7
Ci0gICAgW3RyYW5zZm9ybUxheWVyIHNldFRyYW5zZm9ybTpjYVRyYW5zZm9ybV07Ci19Ci0KLWJv
b2wgR3JhcGhpY3NMYXllck1hYzo6cmVtb3ZlQ0FBbmltYXRpb25Gcm9tTGF5ZXIoQW5pbWF0ZWRQ
cm9wZXJ0eUlEIHByb3BlcnR5LCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGludCBpbmRl
eCkKLXsKLSAgICBQbGF0Zm9ybUxheWVyKiBsYXllciA9IGFuaW1hdGVkTGF5ZXIocHJvcGVydHkp
OwotCi0gICAgTlNTdHJpbmcgKmFuaW1hdGlvbklEID0gYW5pbWF0aW9uSWRlbnRpZmllcihhbmlt
YXRpb25OYW1lLCBwcm9wZXJ0eSwgaW5kZXgpOwotCi0gICAgaWYgKCFbbGF5ZXIgYW5pbWF0aW9u
Rm9yS2V5OmFuaW1hdGlvbklEXSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAotICAgIFts
YXllciByZW1vdmVBbmltYXRpb25Gb3JLZXk6YW5pbWF0aW9uSURdOwotICAgIGJ1ZzczMTEzNjdX
b3JrYXJvdW5kKG1fc3RydWN0dXJhbExheWVyLmdldCgpLCBtX3RyYW5zZm9ybSk7Ci0KLSAgICBp
ZiAoTGF5ZXJNYXAqIGxheWVyQ2xvbmVNYXAgPSBhbmltYXRlZExheWVyQ2xvbmVzKHByb3BlcnR5
KSkgewotICAgICAgICBMYXllck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbGF5ZXJDbG9uZU1h
cC0+ZW5kKCk7Ci0gICAgICAgIGZvciAoTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbGF5
ZXJDbG9uZU1hcC0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICAvLyBT
a2lwIGltbWVkaWF0ZSByZXBsaWNhcywgc2luY2UgdGhleSBtb3ZlIHdpdGggdGhlIG9yaWdpbmFs
LgotICAgICAgICAgICAgaWYgKG1fcmVwbGljYUxheWVyICYmIGlzUmVwbGljYXRlZFJvb3RDbG9u
ZShpdC0+Zmlyc3QpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICBD
QUxheWVyICpjdXJyTGF5ZXIgPSBpdC0+c2Vjb25kLmdldCgpOwotICAgICAgICAgICAgW2N1cnJM
YXllciByZW1vdmVBbmltYXRpb25Gb3JLZXk6YW5pbWF0aW9uSURdOwotICAgICAgICB9Ci0gICAg
fQotICAgIHJldHVybiB0cnVlOwotfQotCi1zdGF0aWMgdm9pZCBjb3B5QW5pbWF0aW9uUHJvcGVy
dGllcyhDQVByb3BlcnR5QW5pbWF0aW9uKiBmcm9tLCBDQVByb3BlcnR5QW5pbWF0aW9uKiB0bykK
LXsKLSAgICBbdG8gc2V0QmVnaW5UaW1lOltmcm9tIGJlZ2luVGltZV1dOwotICAgIFt0byBzZXRE
dXJhdGlvbjpbZnJvbSBkdXJhdGlvbl1dOwotICAgIFt0byBzZXRSZXBlYXRDb3VudDpbZnJvbSBy
ZXBlYXRDb3VudF1dOwotICAgIFt0byBzZXRBdXRvcmV2ZXJzZXM6W2Zyb20gYXV0b3JldmVyc2Vz
XV07Ci0gICAgW3RvIHNldEZpbGxNb2RlOltmcm9tIGZpbGxNb2RlXV07Ci0gICAgW3RvIHNldFJl
bW92ZWRPbkNvbXBsZXRpb246W2Zyb20gaXNSZW1vdmVkT25Db21wbGV0aW9uXV07Ci0gICAgW3Rv
IHNldEFkZGl0aXZlOltmcm9tIGlzQWRkaXRpdmVdXTsKLSAgICBbdG8gc2V0VGltaW5nRnVuY3Rp
b246W2Zyb20gdGltaW5nRnVuY3Rpb25dXTsKLQotI2lmIEhBVkVfTU9ERVJOX1FVQVJUWkNPUkUK
LSAgICBbdG8gc2V0VmFsdWVGdW5jdGlvbjpbZnJvbSB2YWx1ZUZ1bmN0aW9uXV07Ci0jZW5kaWYK
LQotICAgIGlmIChpZCBvYmplY3QgPSBbZnJvbSB2YWx1ZUZvcktleTpXZWJLaXRBbmltYXRpb25C
ZWdpblRpbWVTZXRLZXldKQotICAgICAgICBbdG8gc2V0VmFsdWU6b2JqZWN0IGZvcktleTpXZWJL
aXRBbmltYXRpb25CZWdpblRpbWVTZXRLZXldOwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6
OnBhdXNlQ0FBbmltYXRpb25PbkxheWVyKEFuaW1hdGVkUHJvcGVydHlJRCBwcm9wZXJ0eSwgY29u
c3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBpbnQgaW5kZXgsIGRvdWJsZSB0aW1lT2Zmc2V0KQot
ewotICAgIFBsYXRmb3JtTGF5ZXIqIGxheWVyID0gYW5pbWF0ZWRMYXllcihwcm9wZXJ0eSk7Ci0K
LSAgICBOU1N0cmluZyAqYW5pbWF0aW9uSUQgPSBhbmltYXRpb25JZGVudGlmaWVyKGFuaW1hdGlv
bk5hbWUsIHByb3BlcnR5LCBpbmRleCk7Ci0KLSAgICBDQUFuaW1hdGlvbiAqY2FBbmltID0gW2xh
eWVyIGFuaW1hdGlvbkZvcktleTphbmltYXRpb25JRF07Ci0gICAgaWYgKCFjYUFuaW0pCi0gICAg
ICAgIHJldHVybjsKLQotICAgIC8vIEFuaW1hdGlvbnMgb24gdGhlIGxheWVyIGFyZSBpbW11dGFi
bGUsIHNvIHdlIGhhdmUgdG8gY2xvbmUgYW5kIG1vZGlmeS4KLSAgICBDQVByb3BlcnR5QW5pbWF0
aW9uKiBwYXVzZWRBbmltID0gbmlsOwotICAgIGlmIChbY2FBbmltIGlzS2luZE9mQ2xhc3M6W0NB
S2V5ZnJhbWVBbmltYXRpb24gY2xhc3NdXSkgewotICAgICAgICBDQUtleWZyYW1lQW5pbWF0aW9u
KiBleGlzdGluZ0tleWZyYW1lQW5pbSA9IHN0YXRpY19jYXN0PENBS2V5ZnJhbWVBbmltYXRpb24q
PihjYUFuaW0pOwotICAgICAgICBDQUtleWZyYW1lQW5pbWF0aW9uKiBuZXdBbmltID0gW0NBS2V5
ZnJhbWVBbmltYXRpb24gYW5pbWF0aW9uV2l0aEtleVBhdGg6W2V4aXN0aW5nS2V5ZnJhbWVBbmlt
IGtleVBhdGhdXTsKLSAgICAgICAgY29weUFuaW1hdGlvblByb3BlcnRpZXMoZXhpc3RpbmdLZXlm
cmFtZUFuaW0sIG5ld0FuaW0pOwotICAgICAgICBbbmV3QW5pbSBzZXRWYWx1ZXM6W2V4aXN0aW5n
S2V5ZnJhbWVBbmltIHZhbHVlc11dOwotICAgICAgICBbbmV3QW5pbSBzZXRLZXlUaW1lczpbZXhp
c3RpbmdLZXlmcmFtZUFuaW0ga2V5VGltZXNdXTsKLSAgICAgICAgW25ld0FuaW0gc2V0VGltaW5n
RnVuY3Rpb25zOltleGlzdGluZ0tleWZyYW1lQW5pbSB0aW1pbmdGdW5jdGlvbnNdXTsKLSAgICAg
ICAgcGF1c2VkQW5pbSA9IG5ld0FuaW07Ci0gICAgfSBlbHNlIGlmIChbY2FBbmltIGlzS2luZE9m
Q2xhc3M6W0NBQmFzaWNBbmltYXRpb24gY2xhc3NdXSkgewotICAgICAgICBDQUJhc2ljQW5pbWF0
aW9uKiBleGlzdGluZ1Byb3BlcnR5QW5pbSA9IHN0YXRpY19jYXN0PENBQmFzaWNBbmltYXRpb24q
PihjYUFuaW0pOwotICAgICAgICBDQUJhc2ljQW5pbWF0aW9uKiBuZXdBbmltID0gW0NBQmFzaWNB
bmltYXRpb24gYW5pbWF0aW9uV2l0aEtleVBhdGg6W2V4aXN0aW5nUHJvcGVydHlBbmltIGtleVBh
dGhdXTsKLSAgICAgICAgY29weUFuaW1hdGlvblByb3BlcnRpZXMoZXhpc3RpbmdQcm9wZXJ0eUFu
aW0sIG5ld0FuaW0pOwotICAgICAgICBbbmV3QW5pbSBzZXRGcm9tVmFsdWU6W2V4aXN0aW5nUHJv
cGVydHlBbmltIGZyb21WYWx1ZV1dOwotICAgICAgICBbbmV3QW5pbSBzZXRUb1ZhbHVlOltleGlz
dGluZ1Byb3BlcnR5QW5pbSB0b1ZhbHVlXV07Ci0gICAgICAgIHBhdXNlZEFuaW0gPSBuZXdBbmlt
OwotICAgIH0KLQotICAgIC8vIHBhdXNlZEFuaW0gaGFzIHRoZSBiZWdpblRpbWUgb2YgY2FBbmlt
IGFscmVhZHkuCi0gICAgW3BhdXNlZEFuaW0gc2V0U3BlZWQ6MF07Ci0gICAgW3BhdXNlZEFuaW0g
c2V0VGltZU9mZnNldDp0aW1lT2Zmc2V0XTsKLSAgICAKLSAgICBbbGF5ZXIgYWRkQW5pbWF0aW9u
OnBhdXNlZEFuaW0gZm9yS2V5OmFuaW1hdGlvbklEXTsgIC8vIFRoaXMgd2lsbCByZXBsYWNlIHRo
ZSBydW5uaW5nIGFuaW1hdGlvbi4KLQotICAgIC8vIFBhdXNlIHRoZSBhbmltYXRpb25zIG9uIHRo
ZSBjbG9uZXMgdG9vLgotICAgIGlmIChMYXllck1hcCogbGF5ZXJDbG9uZU1hcCA9IGFuaW1hdGVk
TGF5ZXJDbG9uZXMocHJvcGVydHkpKSB7Ci0gICAgICAgIExheWVyTWFwOjpjb25zdF9pdGVyYXRv
ciBlbmQgPSBsYXllckNsb25lTWFwLT5lbmQoKTsKLSAgICAgICAgZm9yIChMYXllck1hcDo6Y29u
c3RfaXRlcmF0b3IgaXQgPSBsYXllckNsb25lTWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQp
IHsKLSAgICAgICAgICAgIC8vIFNraXAgaW1tZWRpYXRlIHJlcGxpY2FzLCBzaW5jZSB0aGV5IG1v
dmUgd2l0aCB0aGUgb3JpZ2luYWwuCi0gICAgICAgICAgICBpZiAobV9yZXBsaWNhTGF5ZXIgJiYg
aXNSZXBsaWNhdGVkUm9vdENsb25lKGl0LT5maXJzdCkpCi0gICAgICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgICAgICAgICBDQUxheWVyICpjdXJyTGF5ZXIgPSBpdC0+c2Vjb25kLmdldCgpOwot
ICAgICAgICAgICAgW2N1cnJMYXllciBhZGRBbmltYXRpb246cGF1c2VkQW5pbSBmb3JLZXk6YW5p
bWF0aW9uSURdOwotICAgICAgICB9Ci0gICAgfQotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6
OnNldENvbnRlbnRzVG9DYW52YXMoUGxhdGZvcm1MYXllciogY2FudmFzTGF5ZXIpCi17Ci0gICAg
aWYgKGNhbnZhc0xheWVyID09IG1fY29udGVudHNMYXllcikKLSAgICAgICAgcmV0dXJuOwotICAg
ICAgICAKLSAgICBtX2NvbnRlbnRzTGF5ZXIgPSBjYW52YXNMYXllcjsKLSAgICBpZiAobV9jb250
ZW50c0xheWVyICYmIFttX2NvbnRlbnRzTGF5ZXIuZ2V0KCkgcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3RvcihzZXRMYXllck93bmVyOildKQotICAgICAgICBbKGlkKW1fY29udGVudHNMYXllci5n
ZXQoKSBzZXRMYXllck93bmVyOnRoaXNdOwotICAgIAotICAgIG1fY29udGVudHNMYXllclB1cnBv
c2UgPSBjYW52YXNMYXllciA/IENvbnRlbnRzTGF5ZXJGb3JDYW52YXMgOiBOb0NvbnRlbnRzTGF5
ZXI7Ci0KLSAgICBub3RlU3VibGF5ZXJzQ2hhbmdlZCgpOwotICAgIG5vdGVMYXllclByb3BlcnR5
Q2hhbmdlZChDb250ZW50c0NhbnZhc0xheWVyQ2hhbmdlZCk7Ci19Ci0gICAgCi12b2lkIEdyYXBo
aWNzTGF5ZXJNYWM6OnJlcGFpbnRMYXllckRpcnR5UmVjdHMoKQotewotICAgIGlmICghbV9kaXJ0
eVJlY3RzLnNpemUoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBtX2RpcnR5UmVjdHMuc2l6ZSgpOyArK2kpCi0gICAgICAgIFttX2xheWVyLmdldCgpIHNl
dE5lZWRzRGlzcGxheUluUmVjdDptX2RpcnR5UmVjdHNbaV1dOwotICAgIAotICAgIG1fZGlydHlS
ZWN0cy5jbGVhcigpOwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnVwZGF0ZUNvbnRlbnRz
TmVlZHNEaXNwbGF5KCkKLXsKLSAgICBpZiAobV9jb250ZW50c0xheWVyKQotICAgICAgICBbbV9j
b250ZW50c0xheWVyLmdldCgpIHNldE5lZWRzRGlzcGxheV07Ci19Ci0KLWJvb2wgR3JhcGhpY3NM
YXllck1hYzo6Y3JlYXRlQW5pbWF0aW9uRnJvbUtleWZyYW1lcyhjb25zdCBLZXlmcmFtZVZhbHVl
TGlzdCYgdmFsdWVMaXN0LCBjb25zdCBBbmltYXRpb24qIGFuaW1hdGlvbiwgY29uc3QgU3RyaW5n
JiBhbmltYXRpb25OYW1lLCBkb3VibGUgdGltZU9mZnNldCkKLXsKLSAgICBBU1NFUlQodmFsdWVM
aXN0LnByb3BlcnR5KCkgIT0gQW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybSk7Ci0KLSAg
ICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0gICAgCi0gICAgYm9vbCBpc0tleWZyYW1l
ID0gdmFsdWVMaXN0LnNpemUoKSA+IDI7Ci0gICAgYm9vbCB2YWx1ZXNPSzsKLSAgICAKLSAgICBi
b29sIGFkZGl0aXZlID0gZmFsc2U7Ci0gICAgaW50IGFuaW1hdGlvbkluZGV4ID0gMDsKLSAgICAK
LSAgICBDQVByb3BlcnR5QW5pbWF0aW9uKiBjYUFuaW1hdGlvbjsKLSAgICBpZiAoaXNLZXlmcmFt
ZSkgewotICAgICAgICBDQUtleWZyYW1lQW5pbWF0aW9uKiBrZXlmcmFtZUFuaW0gPSBjcmVhdGVL
ZXlmcmFtZUFuaW1hdGlvbihhbmltYXRpb24sIHZhbHVlTGlzdC5wcm9wZXJ0eSgpLCBhZGRpdGl2
ZSk7Ci0gICAgICAgIHZhbHVlc09LID0gc2V0QW5pbWF0aW9uS2V5ZnJhbWVzKHZhbHVlTGlzdCwg
YW5pbWF0aW9uLCBrZXlmcmFtZUFuaW0pOwotICAgICAgICBjYUFuaW1hdGlvbiA9IGtleWZyYW1l
QW5pbTsKLSAgICB9IGVsc2UgewotICAgICAgICBDQUJhc2ljQW5pbWF0aW9uKiBiYXNpY0FuaW0g
PSBjcmVhdGVCYXNpY0FuaW1hdGlvbihhbmltYXRpb24sIHZhbHVlTGlzdC5wcm9wZXJ0eSgpLCBh
ZGRpdGl2ZSk7Ci0gICAgICAgIHZhbHVlc09LID0gc2V0QW5pbWF0aW9uRW5kcG9pbnRzKHZhbHVl
TGlzdCwgYW5pbWF0aW9uLCBiYXNpY0FuaW0pOwotICAgICAgICBjYUFuaW1hdGlvbiA9IGJhc2lj
QW5pbTsKLSAgICB9Ci0gICAgCi0gICAgaWYgKCF2YWx1ZXNPSykKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotCi0gICAgbV91bmNvbWl0dGVkQW5pbWF0aW9ucy5hcHBlbmQoTGF5ZXJQcm9wZXJ0eUFu
aW1hdGlvbihjYUFuaW1hdGlvbiwgYW5pbWF0aW9uTmFtZSwgdmFsdWVMaXN0LnByb3BlcnR5KCks
IGFuaW1hdGlvbkluZGV4LCB0aW1lT2Zmc2V0KSk7Ci0gICAgCi0gICAgRU5EX0JMT0NLX09CSkNf
RVhDRVBUSU9OUzsKLQotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIEdyYXBoaWNzTGF5ZXJN
YWM6OmNyZWF0ZVRyYW5zZm9ybUFuaW1hdGlvbnNGcm9tS2V5ZnJhbWVzKGNvbnN0IEtleWZyYW1l
VmFsdWVMaXN0JiB2YWx1ZUxpc3QsIGNvbnN0IEFuaW1hdGlvbiogYW5pbWF0aW9uLCBjb25zdCBT
dHJpbmcmIGFuaW1hdGlvbk5hbWUsIGRvdWJsZSB0aW1lT2Zmc2V0LCBjb25zdCBJbnRTaXplJiBi
b3hTaXplKQotewotICAgIEFTU0VSVCh2YWx1ZUxpc3QucHJvcGVydHkoKSA9PSBBbmltYXRlZFBy
b3BlcnR5V2Via2l0VHJhbnNmb3JtKTsKLQotICAgIFRyYW5zZm9ybU9wZXJhdGlvbkxpc3QgZnVu
Y3Rpb25MaXN0OwotICAgIGJvb2wgbGlzdHNNYXRjaCwgaGFzQmlnUm90YXRpb247Ci0gICAgZmV0
Y2hUcmFuc2Zvcm1PcGVyYXRpb25MaXN0KHZhbHVlTGlzdCwgZnVuY3Rpb25MaXN0LCBsaXN0c01h
dGNoLCBoYXNCaWdSb3RhdGlvbik7Ci0KLSAgICAvLyBXZSBuZWVkIHRvIGZhbGwgYmFjayB0byBz
b2Z0d2FyZSBhbmltYXRpb24gaWYgd2UgZG9uJ3QgaGF2ZSBzZXRWYWx1ZUZ1bmN0aW9uOiwgYW5k
Ci0gICAgLy8gd2Ugd291bGQgbmVlZCB0byBhbmltYXRlIGVhY2ggaW5jb21pbmcgdHJhbnNmb3Jt
IGZ1bmN0aW9uIHNlcGFyYXRlbHkuIFRoaXMgaXMgdGhlCi0gICAgLy8gY2FzZSBpZiB3ZSBoYXZl
IGEgcm90YXRpb24gPj0gMTgwIG9yIHdlIGhhdmUgbW9yZSB0aGFuIG9uZSB0cmFuc2Zvcm0gZnVu
Y3Rpb24uCi0gICAgaWYgKChoYXNCaWdSb3RhdGlvbiB8fCBmdW5jdGlvbkxpc3Quc2l6ZSgpID4g
MSkgJiYgIWNhVmFsdWVGdW5jdGlvblN1cHBvcnRlZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICBib29sIHZhbGlkTWF0cmljZXMgPSB0cnVlOwotCi0gICAgQkVHSU5fQkxPQ0tfT0JK
Q19FWENFUFRJT05TOwotCi0gICAgLy8gSWYgZnVuY3Rpb25MaXN0cyBkb24ndCBtYXRjaCB3ZSBk
byBhIG1hdHJpeCBhbmltYXRpb24sIG90aGVyd2lzZSB3ZSBkbyBhIGNvbXBvbmVudCBoYXJkd2Fy
ZSBhbmltYXRpb24uCi0gICAgLy8gQWxzbywgd2UgY2FuJ3QgZG8gY29tcG9uZW50IGFuaW1hdGlv
biB1bmxlc3Mgd2UgaGF2ZSB2YWx1ZUZ1bmN0aW9uLCBzbyB3ZSBuZWVkIHRvIGRvIG1hdHJpeCBh
bmltYXRpb24KLSAgICAvLyBpZiB0aGF0J3Mgbm90IHRydWUgYXMgd2VsbC4KLSAgICBib29sIGlz
TWF0cml4QW5pbWF0aW9uID0gIWxpc3RzTWF0Y2ggfHwgIWNhVmFsdWVGdW5jdGlvblN1cHBvcnRl
ZCgpOwotICAgIAotICAgIHNpemVfdCBudW1BbmltYXRpb25zID0gaXNNYXRyaXhBbmltYXRpb24g
PyAxIDogZnVuY3Rpb25MaXN0LnNpemUoKTsKLSAgICBib29sIGlzS2V5ZnJhbWUgPSB2YWx1ZUxp
c3Quc2l6ZSgpID4gMjsKLSAgICAKLSAgICAvLyBJdGVyYXRlIHRocm91Z2ggdGhlIHRyYW5zZm9y
bSBmdW5jdGlvbnMsIHNlbmRpbmcgYW4gYW5pbWF0aW9uIGZvciBlYWNoIG9uZS4KLSAgICBmb3Ig
KHNpemVfdCBhbmltYXRpb25JbmRleCA9IDA7IGFuaW1hdGlvbkluZGV4IDwgbnVtQW5pbWF0aW9u
czsgKythbmltYXRpb25JbmRleCkgewotICAgICAgICBUcmFuc2Zvcm1PcGVyYXRpb246Ok9wZXJh
dGlvblR5cGUgdHJhbnNmb3JtT3AgPSBpc01hdHJpeEFuaW1hdGlvbiA/IFRyYW5zZm9ybU9wZXJh
dGlvbjo6TUFUUklYXzNEIDogZnVuY3Rpb25MaXN0W2FuaW1hdGlvbkluZGV4XTsKLSAgICAgICAg
Q0FQcm9wZXJ0eUFuaW1hdGlvbiogY2FBbmltYXRpb247Ci0KLSNpZiBkZWZpbmVkKEJVSUxESU5H
X09OX0xFT1BBUkQpIHx8IGRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQotICAgICAg
ICAvLyBDQSBhcHBsaWVzIGFuaW1hdGlvbnMgaW4gcmV2ZXJzZSBvcmRlciAoPHJkYXI6Ly9wcm9i
bGVtLzcwOTU2Mzg+KSBzbyB3ZSBuZWVkIHRoZSBsYXN0IG9uZSB3ZSBhZGQgKHBlciBwcm9wZXJ0
eSkKLSAgICAgICAgLy8gdG8gYmUgbm9uLWFkZGl0aXZlLgotICAgICAgICBib29sIGFkZGl0aXZl
ID0gYW5pbWF0aW9uSW5kZXggPCAobnVtQW5pbWF0aW9ucyAtIDEpOwotI2Vsc2UKLSAgICAgICAg
Ym9vbCBhZGRpdGl2ZSA9IGFuaW1hdGlvbkluZGV4ID4gMDsKLSNlbmRpZgotICAgICAgICBpZiAo
aXNLZXlmcmFtZSkgewotICAgICAgICAgICAgQ0FLZXlmcmFtZUFuaW1hdGlvbioga2V5ZnJhbWVB
bmltID0gY3JlYXRlS2V5ZnJhbWVBbmltYXRpb24oYW5pbWF0aW9uLCB2YWx1ZUxpc3QucHJvcGVy
dHkoKSwgYWRkaXRpdmUpOwotICAgICAgICAgICAgdmFsaWRNYXRyaWNlcyA9IHNldFRyYW5zZm9y
bUFuaW1hdGlvbktleWZyYW1lcyh2YWx1ZUxpc3QsIGFuaW1hdGlvbiwga2V5ZnJhbWVBbmltLCBh
bmltYXRpb25JbmRleCwgdHJhbnNmb3JtT3AsIGlzTWF0cml4QW5pbWF0aW9uLCBib3hTaXplKTsK
LSAgICAgICAgICAgIGNhQW5pbWF0aW9uID0ga2V5ZnJhbWVBbmltOwotICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgQ0FCYXNpY0FuaW1hdGlvbiogYmFzaWNBbmltID0gY3JlYXRlQmFzaWNB
bmltYXRpb24oYW5pbWF0aW9uLCB2YWx1ZUxpc3QucHJvcGVydHkoKSwgYWRkaXRpdmUpOwotICAg
ICAgICAgICAgdmFsaWRNYXRyaWNlcyA9IHNldFRyYW5zZm9ybUFuaW1hdGlvbkVuZHBvaW50cyh2
YWx1ZUxpc3QsIGFuaW1hdGlvbiwgYmFzaWNBbmltLCBhbmltYXRpb25JbmRleCwgdHJhbnNmb3Jt
T3AsIGlzTWF0cml4QW5pbWF0aW9uLCBib3hTaXplKTsKLSAgICAgICAgICAgIGNhQW5pbWF0aW9u
ID0gYmFzaWNBbmltOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpZiAoIXZhbGlkTWF0
cmljZXMpCi0gICAgICAgICAgICBicmVhazsKLSAgICAKLSAgICAgICAgbV91bmNvbWl0dGVkQW5p
bWF0aW9ucy5hcHBlbmQoTGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbihjYUFuaW1hdGlvbiwgYW5pbWF0
aW9uTmFtZSwgdmFsdWVMaXN0LnByb3BlcnR5KCksIGFuaW1hdGlvbkluZGV4LCB0aW1lT2Zmc2V0
KSk7Ci0gICAgfQotCi0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLQotICAgIHJldHVy
biB2YWxpZE1hdHJpY2VzOwotfQotCi1DQUJhc2ljQW5pbWF0aW9uKiBHcmFwaGljc0xheWVyTWFj
OjpjcmVhdGVCYXNpY0FuaW1hdGlvbihjb25zdCBBbmltYXRpb24qIGFuaW0sIEFuaW1hdGVkUHJv
cGVydHlJRCBwcm9wZXJ0eSwgYm9vbCBhZGRpdGl2ZSkKLXsKLSAgICBDQUJhc2ljQW5pbWF0aW9u
KiBiYXNpY0FuaW0gPSBbQ0FCYXNpY0FuaW1hdGlvbiBhbmltYXRpb25XaXRoS2V5UGF0aDpwcm9w
ZXJ0eUlkVG9TdHJpbmcocHJvcGVydHkpXTsKLSAgICBzZXR1cEFuaW1hdGlvbihiYXNpY0FuaW0s
IGFuaW0sIGFkZGl0aXZlKTsKLSAgICByZXR1cm4gYmFzaWNBbmltOwotfQotCi1DQUtleWZyYW1l
QW5pbWF0aW9uKiBHcmFwaGljc0xheWVyTWFjOjpjcmVhdGVLZXlmcmFtZUFuaW1hdGlvbihjb25z
dCBBbmltYXRpb24qIGFuaW0sIEFuaW1hdGVkUHJvcGVydHlJRCBwcm9wZXJ0eSwgYm9vbCBhZGRp
dGl2ZSkKLXsKLSAgICBDQUtleWZyYW1lQW5pbWF0aW9uKiBrZXlmcmFtZUFuaW0gPSBbQ0FLZXlm
cmFtZUFuaW1hdGlvbiBhbmltYXRpb25XaXRoS2V5UGF0aDpwcm9wZXJ0eUlkVG9TdHJpbmcocHJv
cGVydHkpXTsKLSAgICBzZXR1cEFuaW1hdGlvbihrZXlmcmFtZUFuaW0sIGFuaW0sIGFkZGl0aXZl
KTsKLSAgICByZXR1cm4ga2V5ZnJhbWVBbmltOwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6
OnNldHVwQW5pbWF0aW9uKENBUHJvcGVydHlBbmltYXRpb24qIHByb3BlcnR5QW5pbSwgY29uc3Qg
QW5pbWF0aW9uKiBhbmltLCBib29sIGFkZGl0aXZlKQotewotICAgIGRvdWJsZSBkdXJhdGlvbiA9
IGFuaW0tPmR1cmF0aW9uKCk7Ci0gICAgaWYgKGR1cmF0aW9uIDw9IDApCi0gICAgICAgIGR1cmF0
aW9uID0gY0FuaW1hdGlvbkFsbW9zdFplcm9EdXJhdGlvbjsKLQotICAgIGZsb2F0IHJlcGVhdENv
dW50ID0gYW5pbS0+aXRlcmF0aW9uQ291bnQoKTsKLSAgICBpZiAocmVwZWF0Q291bnQgPT0gQW5p
bWF0aW9uOjpJdGVyYXRpb25Db3VudEluZmluaXRlKQotICAgICAgICByZXBlYXRDb3VudCA9IEZM
VF9NQVg7Ci0gICAgZWxzZSBpZiAoYW5pbS0+ZGlyZWN0aW9uKCkgPT0gQW5pbWF0aW9uOjpBbmlt
YXRpb25EaXJlY3Rpb25BbHRlcm5hdGUpCi0gICAgICAgIHJlcGVhdENvdW50IC89IDI7Ci0KLSAg
ICBOU1N0cmluZyAqZmlsbE1vZGUgPSAwOwotICAgIHN3aXRjaCAoYW5pbS0+ZmlsbE1vZGUoKSkg
ewotICAgIGNhc2UgQW5pbWF0aW9uRmlsbE1vZGVOb25lOgotICAgICAgICBmaWxsTW9kZSA9IGtD
QUZpbGxNb2RlRm9yd2FyZHM7IC8vIFVzZSAiZm9yd2FyZHMiIHJhdGhlciB0aGFuICJyZW1vdmVk
IiBiZWNhdXNlIHRoZSBzdHlsZSBzeXN0ZW0gd2lsbCByZW1vdmUgdGhlIGFuaW1hdGlvbiB3aGVu
IGl0IGlzIGZpbmlzaGVkLiBUaGlzIGF2b2lkcyBhIGZsYXNoLgotICAgICAgICBicmVhazsKLSAg
ICBjYXNlIEFuaW1hdGlvbkZpbGxNb2RlQmFja3dhcmRzOgotICAgICAgICBmaWxsTW9kZSA9IGtD
QUZpbGxNb2RlQm90aDsgLy8gVXNlICJib3RoIiByYXRoZXIgdGhhbiAiYmFja3dhcmRzIiBiZWNh
dXNlIHRoZSBzdHlsZSBzeXN0ZW0gd2lsbCByZW1vdmUgdGhlIGFuaW1hdGlvbiB3aGVuIGl0IGlz
IGZpbmlzaGVkLiBUaGlzIGF2b2lkcyBhIGZsYXNoLgotICAgICAgICBicmVhazsKLSAgICBjYXNl
IEFuaW1hdGlvbkZpbGxNb2RlRm9yd2FyZHM6Ci0gICAgICAgZmlsbE1vZGUgPSBrQ0FGaWxsTW9k
ZUZvcndhcmRzOwotICAgICAgIGJyZWFrOwotICAgIGNhc2UgQW5pbWF0aW9uRmlsbE1vZGVCb3Ro
OgotICAgICAgIGZpbGxNb2RlID0ga0NBRmlsbE1vZGVCb3RoOwotICAgICAgIGJyZWFrOwotICAg
IH0KLQotICAgIFtwcm9wZXJ0eUFuaW0gc2V0RHVyYXRpb246ZHVyYXRpb25dOwotICAgIFtwcm9w
ZXJ0eUFuaW0gc2V0UmVwZWF0Q291bnQ6cmVwZWF0Q291bnRdOwotICAgIFtwcm9wZXJ0eUFuaW0g
c2V0QXV0b3JldmVyc2VzOmFuaW0tPmRpcmVjdGlvbigpXTsKLSAgICBbcHJvcGVydHlBbmltIHNl
dFJlbW92ZWRPbkNvbXBsZXRpb246Tk9dOwotICAgIFtwcm9wZXJ0eUFuaW0gc2V0QWRkaXRpdmU6
YWRkaXRpdmVdOwotICAgIFtwcm9wZXJ0eUFuaW0gc2V0RmlsbE1vZGU6ZmlsbE1vZGVdOwotCi0g
ICAgW3Byb3BlcnR5QW5pbSBzZXREZWxlZ2F0ZTptX2FuaW1hdGlvbkRlbGVnYXRlLmdldCgpXTsK
LX0KLQotQ0FNZWRpYVRpbWluZ0Z1bmN0aW9uKiBHcmFwaGljc0xheWVyTWFjOjp0aW1pbmdGdW5j
dGlvbkZvckFuaW1hdGlvblZhbHVlKGNvbnN0IEFuaW1hdGlvblZhbHVlKiBhbmltVmFsdWUsIGNv
bnN0IEFuaW1hdGlvbiogYW5pbSkKLXsKLSAgICBjb25zdCBUaW1pbmdGdW5jdGlvbiogdGYgPSAw
OwotICAgIGlmIChhbmltVmFsdWUtPnRpbWluZ0Z1bmN0aW9uKCkpCi0gICAgICAgIHRmID0gYW5p
bVZhbHVlLT50aW1pbmdGdW5jdGlvbigpOwotICAgIGVsc2UgaWYgKGFuaW0tPmlzVGltaW5nRnVu
Y3Rpb25TZXQoKSkKLSAgICAgICAgdGYgPSBhbmltLT50aW1pbmdGdW5jdGlvbigpLmdldCgpOwot
Ci0gICAgcmV0dXJuIGdldENBTWVkaWFUaW1pbmdGdW5jdGlvbih0ZiA/IHRmIDogQ3ViaWNCZXpp
ZXJUaW1pbmdGdW5jdGlvbjo6Y3JlYXRlKCkuZ2V0KCkpOwotfQotCi1ib29sIEdyYXBoaWNzTGF5
ZXJNYWM6OnNldEFuaW1hdGlvbkVuZHBvaW50cyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFs
dWVMaXN0LCBjb25zdCBBbmltYXRpb24qIGFuaW0sIENBQmFzaWNBbmltYXRpb24qIGJhc2ljQW5p
bSkKLXsKLSAgICBpZCBmcm9tVmFsdWUgPSBuaWw7Ci0gICAgaWQgdG9WYWx1ZSA9IG5pbDsKLQot
ICAgIHN3aXRjaCAodmFsdWVMaXN0LnByb3BlcnR5KCkpIHsKLSAgICAgICAgY2FzZSBBbmltYXRl
ZFByb3BlcnR5T3BhY2l0eTogewotICAgICAgICAgICAgY29uc3QgRmxvYXRBbmltYXRpb25WYWx1
ZSogc3RhcnRWYWwgPSBzdGF0aWNfY2FzdDxjb25zdCBGbG9hdEFuaW1hdGlvblZhbHVlKj4odmFs
dWVMaXN0LmF0KDApKTsKLSAgICAgICAgICAgIGNvbnN0IEZsb2F0QW5pbWF0aW9uVmFsdWUqIGVu
ZFZhbCA9IHN0YXRpY19jYXN0PGNvbnN0IEZsb2F0QW5pbWF0aW9uVmFsdWUqPih2YWx1ZUxpc3Qu
YXQoMSkpOwotICAgICAgICAgICAgZnJvbVZhbHVlID0gW05TTnVtYmVyIG51bWJlcldpdGhGbG9h
dDpzdGFydFZhbC0+dmFsdWUoKV07Ci0gICAgICAgICAgICB0b1ZhbHVlID0gW05TTnVtYmVyIG51
bWJlcldpdGhGbG9hdDplbmRWYWwtPnZhbHVlKCldOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIH0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OyAgICAgLy8gd2UgZG9uJ3QgYW5pbWF0ZSBjb2xvciB5ZXQKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgIH0KLQotICAgIC8vIFRoaXMgY29kZXBhdGggaXMgdXNlZCBmb3IgMi1rZXlmcmFtZSBhbmlt
YXRpb25zLCBzbyB3ZSBzdGlsbCBuZWVkIHRvIGxvb2sgaW4gdGhlIHN0YXJ0Ci0gICAgLy8gZm9y
IGEgdGltaW5nIGZ1bmN0aW9uLgotICAgIENBTWVkaWFUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVu
Y3Rpb24gPSB0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKHZhbHVlTGlzdC5hdCgwKSwg
YW5pbSk7Ci0gICAgW2Jhc2ljQW5pbSBzZXRUaW1pbmdGdW5jdGlvbjp0aW1pbmdGdW5jdGlvbl07
Ci0KLSAgICBbYmFzaWNBbmltIHNldEZyb21WYWx1ZTpmcm9tVmFsdWVdOwotICAgIFtiYXNpY0Fu
aW0gc2V0VG9WYWx1ZTp0b1ZhbHVlXTsKLQotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIEdy
YXBoaWNzTGF5ZXJNYWM6OnNldEFuaW1hdGlvbktleWZyYW1lcyhjb25zdCBLZXlmcmFtZVZhbHVl
TGlzdCYgdmFsdWVMaXN0LCBjb25zdCBBbmltYXRpb24qIGFuaW0sIENBS2V5ZnJhbWVBbmltYXRp
b24qIGtleWZyYW1lQW5pbSkKLXsKLSAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IGtleVRp
bWVzKEFkb3B0TlMsIFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKLSAgICBSZXRhaW5Q
dHI8TlNNdXRhYmxlQXJyYXk+IHZhbHVlcyhBZG9wdE5TLCBbW05TTXV0YWJsZUFycmF5IGFsbG9j
XSBpbml0XSk7Ci0gICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiB0aW1pbmdGdW5jdGlvbnMo
QWRvcHROUywgW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwotCi0gICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IHZhbHVlTGlzdC5zaXplKCk7ICsraSkgewotICAgICAgICBjb25zdCBB
bmltYXRpb25WYWx1ZSogY3VyVmFsdWUgPSB2YWx1ZUxpc3QuYXQoaSk7Ci0gICAgICAgIFtrZXlU
aW1lcy5nZXQoKSBhZGRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhGbG9hdDpjdXJWYWx1ZS0+
a2V5VGltZSgpXV07Ci0KLSAgICAgICAgc3dpdGNoICh2YWx1ZUxpc3QucHJvcGVydHkoKSkgewot
ICAgICAgICAgICAgY2FzZSBBbmltYXRlZFByb3BlcnR5T3BhY2l0eTogewotICAgICAgICAgICAg
ICAgIGNvbnN0IEZsb2F0QW5pbWF0aW9uVmFsdWUqIGZsb2F0VmFsdWUgPSBzdGF0aWNfY2FzdDxj
b25zdCBGbG9hdEFuaW1hdGlvblZhbHVlKj4oY3VyVmFsdWUpOwotICAgICAgICAgICAgICAgIFt2
YWx1ZXMuZ2V0KCkgYWRkT2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoRmxvYXQ6ZmxvYXRWYWx1
ZS0+dmFsdWUoKV1dOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsg
ICAgIC8vIHdlIGRvbid0IGFuaW1hdGUgY29sb3IgeWV0Ci0gICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIH0KLQotICAgICAgICBDQU1lZGlhVGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0
aW9uID0gdGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShjdXJWYWx1ZSwgYW5pbSk7Ci0g
ICAgICAgIFt0aW1pbmdGdW5jdGlvbnMuZ2V0KCkgYWRkT2JqZWN0OnRpbWluZ0Z1bmN0aW9uXTsK
LSAgICB9Ci0gICAgCi0gICAgLy8gV2UgdG9zcyB0aGUgbGFzdCB0ZkFycmF5IHZhbHVlIGJlY2F1
c2UgaXQgaGFzIHRvIG9uZSBzaG9ydGVyIHRoYW4gdGhlIG90aGVycy4KLSAgICBbdGltaW5nRnVu
Y3Rpb25zLmdldCgpIHJlbW92ZUxhc3RPYmplY3RdOwotCi0gICAgW2tleWZyYW1lQW5pbSBzZXRL
ZXlUaW1lczprZXlUaW1lcy5nZXQoKV07Ci0gICAgW2tleWZyYW1lQW5pbSBzZXRWYWx1ZXM6dmFs
dWVzLmdldCgpXTsKLSAgICBba2V5ZnJhbWVBbmltIHNldFRpbWluZ0Z1bmN0aW9uczp0aW1pbmdG
dW5jdGlvbnMuZ2V0KCldOwotICAgIAotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIEdyYXBo
aWNzTGF5ZXJNYWM6OnNldFRyYW5zZm9ybUFuaW1hdGlvbkVuZHBvaW50cyhjb25zdCBLZXlmcmFt
ZVZhbHVlTGlzdCYgdmFsdWVMaXN0LCBjb25zdCBBbmltYXRpb24qIGFuaW0sIENBQmFzaWNBbmlt
YXRpb24qIGJhc2ljQW5pbSwgaW50IGZ1bmN0aW9uSW5kZXgsIFRyYW5zZm9ybU9wZXJhdGlvbjo6
T3BlcmF0aW9uVHlwZSB0cmFuc2Zvcm1PcCwgYm9vbCBpc01hdHJpeEFuaW1hdGlvbiwgY29uc3Qg
SW50U2l6ZSYgYm94U2l6ZSkKLXsKLSAgICBpZCBmcm9tVmFsdWU7Ci0gICAgaWQgdG9WYWx1ZTsK
LSAgICAKLSAgICBBU1NFUlQodmFsdWVMaXN0LnNpemUoKSA9PSAyKTsKLSAgICBjb25zdCBUcmFu
c2Zvcm1BbmltYXRpb25WYWx1ZSogc3RhcnRWYWx1ZSA9IHN0YXRpY19jYXN0PGNvbnN0IFRyYW5z
Zm9ybUFuaW1hdGlvblZhbHVlKj4odmFsdWVMaXN0LmF0KDApKTsKLSAgICBjb25zdCBUcmFuc2Zv
cm1BbmltYXRpb25WYWx1ZSogZW5kVmFsdWUgPSBzdGF0aWNfY2FzdDxjb25zdCBUcmFuc2Zvcm1B
bmltYXRpb25WYWx1ZSo+KHZhbHVlTGlzdC5hdCgxKSk7Ci0gICAgCi0gICAgaWYgKGlzTWF0cml4
QW5pbWF0aW9uKSB7Ci0gICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGZyb21UcmFuc2Zvcm0s
IHRvVHJhbnNmb3JtOwotICAgICAgICBzdGFydFZhbHVlLT52YWx1ZSgpLT5hcHBseShib3hTaXpl
LCBmcm9tVHJhbnNmb3JtKTsKLSAgICAgICAgZW5kVmFsdWUtPnZhbHVlKCktPmFwcGx5KGJveFNp
emUsIHRvVHJhbnNmb3JtKTsKLQotICAgICAgICAvLyBJZiBhbnkgbWF0cml4IGlzIHNpbmd1bGFy
LCBDQSB3b24ndCBhbmltYXRlIGl0IGNvcnJlY3RseS4gU28gZmFsbCBiYWNrIHRvIHNvZnR3YXJl
IGFuaW1hdGlvbgotICAgICAgICBpZiAoIWZyb21UcmFuc2Zvcm0uaXNJbnZlcnRpYmxlKCkgfHwg
IXRvVHJhbnNmb3JtLmlzSW52ZXJ0aWJsZSgpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
Ci0gICAgICAgIENBVHJhbnNmb3JtM0QgY2FUcmFuc2Zvcm07Ci0gICAgICAgIGNvcHlUcmFuc2Zv
cm0oY2FUcmFuc2Zvcm0sIGZyb21UcmFuc2Zvcm0pOwotICAgICAgICBmcm9tVmFsdWUgPSBbTlNW
YWx1ZSB2YWx1ZVdpdGhDQVRyYW5zZm9ybTNEOmNhVHJhbnNmb3JtXTsKLQotICAgICAgICBjb3B5
VHJhbnNmb3JtKGNhVHJhbnNmb3JtLCB0b1RyYW5zZm9ybSk7Ci0gICAgICAgIHRvVmFsdWUgPSBb
TlNWYWx1ZSB2YWx1ZVdpdGhDQVRyYW5zZm9ybTNEOmNhVHJhbnNmb3JtXTsKLSAgICB9IGVsc2Ug
ewotICAgICAgICBmcm9tVmFsdWUgPSBnZXRUcmFuc2Zvcm1GdW5jdGlvblZhbHVlKHN0YXJ0VmFs
dWUtPnZhbHVlKCktPmF0KGZ1bmN0aW9uSW5kZXgpLCB0cmFuc2Zvcm1PcCwgYm94U2l6ZSk7Ci0g
ICAgICAgIHRvVmFsdWUgPSBnZXRUcmFuc2Zvcm1GdW5jdGlvblZhbHVlKGVuZFZhbHVlLT52YWx1
ZSgpLT5hdChmdW5jdGlvbkluZGV4KSwgdHJhbnNmb3JtT3AsIGJveFNpemUpOwotICAgIH0KLQot
ICAgIC8vIFRoaXMgY29kZXBhdGggaXMgdXNlZCBmb3IgMi1rZXlmcmFtZSBhbmltYXRpb25zLCBz
byB3ZSBzdGlsbCBuZWVkIHRvIGxvb2sgaW4gdGhlIHN0YXJ0Ci0gICAgLy8gZm9yIGEgdGltaW5n
IGZ1bmN0aW9uLgotICAgIENBTWVkaWFUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb24gPSB0
aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKHZhbHVlTGlzdC5hdCgwKSwgYW5pbSk7Ci0g
ICAgW2Jhc2ljQW5pbSBzZXRUaW1pbmdGdW5jdGlvbjp0aW1pbmdGdW5jdGlvbl07Ci0KLSAgICBb
YmFzaWNBbmltIHNldEZyb21WYWx1ZTpmcm9tVmFsdWVdOwotICAgIFtiYXNpY0FuaW0gc2V0VG9W
YWx1ZTp0b1ZhbHVlXTsKLQotI2lmIEhBVkVfTU9ERVJOX1FVQVJUWkNPUkUKLSAgICBpZiAoTlNT
dHJpbmcgKnZhbHVlRnVuY3Rpb25OYW1lID0gZ2V0VmFsdWVGdW5jdGlvbk5hbWVGb3JUcmFuc2Zv
cm1PcGVyYXRpb24odHJhbnNmb3JtT3ApKQotICAgICAgICBbYmFzaWNBbmltIHNldFZhbHVlRnVu
Y3Rpb246W0NBVmFsdWVGdW5jdGlvbiBmdW5jdGlvbldpdGhOYW1lOnZhbHVlRnVuY3Rpb25OYW1l
XV07Ci0jZW5kaWYKLQotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIEdyYXBoaWNzTGF5ZXJN
YWM6OnNldFRyYW5zZm9ybUFuaW1hdGlvbktleWZyYW1lcyhjb25zdCBLZXlmcmFtZVZhbHVlTGlz
dCYgdmFsdWVMaXN0LCBjb25zdCBBbmltYXRpb24qIGFuaW1hdGlvbiwgQ0FLZXlmcmFtZUFuaW1h
dGlvbioga2V5ZnJhbWVBbmltLCBpbnQgZnVuY3Rpb25JbmRleCwgVHJhbnNmb3JtT3BlcmF0aW9u
OjpPcGVyYXRpb25UeXBlIHRyYW5zZm9ybU9wVHlwZSwgYm9vbCBpc01hdHJpeEFuaW1hdGlvbiwg
Y29uc3QgSW50U2l6ZSYgYm94U2l6ZSkKLXsKLSAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+
IGtleVRpbWVzKEFkb3B0TlMsIFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKLSAgICBS
ZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IHZhbHVlcyhBZG9wdE5TLCBbW05TTXV0YWJsZUFycmF5
IGFsbG9jXSBpbml0XSk7Ci0gICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiB0aW1pbmdGdW5j
dGlvbnMoQWRvcHROUywgW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwotCi0gICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IHZhbHVlTGlzdC5zaXplKCk7ICsraSkgewotICAgICAgICBj
b25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSogY3VyVmFsdWUgPSBzdGF0aWNfY2FzdDxjb25z
dCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSo+KHZhbHVlTGlzdC5hdChpKSk7Ci0gICAgICAgIFtr
ZXlUaW1lcy5nZXQoKSBhZGRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhGbG9hdDpjdXJWYWx1
ZS0+a2V5VGltZSgpXV07Ci0KLSAgICAgICAgaWYgKGlzTWF0cml4QW5pbWF0aW9uKSB7Ci0gICAg
ICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0cmFuc2Zvcm07Ci0gICAgICAgICAgICBjdXJW
YWx1ZS0+dmFsdWUoKS0+YXBwbHkoYm94U2l6ZSwgdHJhbnNmb3JtKTsKLQotICAgICAgICAgICAg
Ly8gSWYgYW55IG1hdHJpeCBpcyBzaW5ndWxhciwgQ0Egd29uJ3QgYW5pbWF0ZSBpdCBjb3JyZWN0
bHkuIFNvIGZhbGwgYmFjayB0byBzb2Z0d2FyZSBhbmltYXRpb24KLSAgICAgICAgICAgIGlmICgh
dHJhbnNmb3JtLmlzSW52ZXJ0aWJsZSgpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgICAgICAgICAgQ0FUcmFuc2Zvcm0zRCBjYVRyYW5zZm9ybTsKLSAgICAgICAgICAgIGNv
cHlUcmFuc2Zvcm0oY2FUcmFuc2Zvcm0sIHRyYW5zZm9ybSk7Ci0gICAgICAgICAgICBbdmFsdWVz
LmdldCgpIGFkZE9iamVjdDpbTlNWYWx1ZSB2YWx1ZVdpdGhDQVRyYW5zZm9ybTNEOmNhVHJhbnNm
b3JtXV07Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBjb25zdCBUcmFuc2Zvcm1PcGVy
YXRpb24qIHRyYW5zZm9ybU9wID0gY3VyVmFsdWUtPnZhbHVlKCktPmF0KGZ1bmN0aW9uSW5kZXgp
OwotICAgICAgICAgICAgW3ZhbHVlcy5nZXQoKSBhZGRPYmplY3Q6Z2V0VHJhbnNmb3JtRnVuY3Rp
b25WYWx1ZSh0cmFuc2Zvcm1PcCwgdHJhbnNmb3JtT3BUeXBlLCBib3hTaXplKV07Ci0gICAgICAg
IH0KLQotICAgICAgICBDQU1lZGlhVGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0aW9uID0gdGlt
aW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShjdXJWYWx1ZSwgYW5pbWF0aW9uKTsKLSAgICAg
ICAgW3RpbWluZ0Z1bmN0aW9ucy5nZXQoKSBhZGRPYmplY3Q6dGltaW5nRnVuY3Rpb25dOwotICAg
IH0KLSAgICAKLSAgICAvLyBXZSB0b3NzIHRoZSBsYXN0IHRmQXJyYXkgdmFsdWUgYmVjYXVzZSBp
dCBoYXMgdG8gb25lIHNob3J0ZXIgdGhhbiB0aGUgb3RoZXJzLgotICAgIFt0aW1pbmdGdW5jdGlv
bnMuZ2V0KCkgcmVtb3ZlTGFzdE9iamVjdF07Ci0KLSAgICBba2V5ZnJhbWVBbmltIHNldEtleVRp
bWVzOmtleVRpbWVzLmdldCgpXTsKLSAgICBba2V5ZnJhbWVBbmltIHNldFZhbHVlczp2YWx1ZXMu
Z2V0KCldOwotICAgIFtrZXlmcmFtZUFuaW0gc2V0VGltaW5nRnVuY3Rpb25zOnRpbWluZ0Z1bmN0
aW9ucy5nZXQoKV07Ci0KLSNpZiBIQVZFX01PREVSTl9RVUFSVFpDT1JFCi0gICAgaWYgKE5TU3Ry
aW5nICp2YWx1ZUZ1bmN0aW9uTmFtZSA9IGdldFZhbHVlRnVuY3Rpb25OYW1lRm9yVHJhbnNmb3Jt
T3BlcmF0aW9uKHRyYW5zZm9ybU9wVHlwZSkpCi0gICAgICAgIFtrZXlmcmFtZUFuaW0gc2V0VmFs
dWVGdW5jdGlvbjpbQ0FWYWx1ZUZ1bmN0aW9uIGZ1bmN0aW9uV2l0aE5hbWU6dmFsdWVGdW5jdGlv
bk5hbWVdXTsKLSNlbmRpZgotICAgIHJldHVybiB0cnVlOwotfQotCi12b2lkIEdyYXBoaWNzTGF5
ZXJNYWM6OnN1c3BlbmRBbmltYXRpb25zKGRvdWJsZSB0aW1lKQotewotICAgIGRvdWJsZSB0ID0g
Y3VycmVudFRpbWVUb01lZGlhVGltZSh0aW1lID8gdGltZSA6IGN1cnJlbnRUaW1lKCkpOwotICAg
IFtwcmltYXJ5TGF5ZXIoKSBzZXRTcGVlZDowXTsKLSAgICBbcHJpbWFyeUxheWVyKCkgc2V0VGlt
ZU9mZnNldDp0XTsKLQotICAgIC8vIFN1c3BlbmQgdGhlIGFuaW1hdGlvbnMgb24gdGhlIGNsb25l
cyB0b28uCi0gICAgaWYgKExheWVyTWFwKiBsYXllckNsb25lTWFwID0gcHJpbWFyeUxheWVyQ2xv
bmVzKCkpIHsKLSAgICAgICAgTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGxheWVyQ2xv
bmVNYXAtPmVuZCgpOwotICAgICAgICBmb3IgKExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9
IGxheWVyQ2xvbmVNYXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICAgICAg
Q0FMYXllciAqY3VyckxheWVyID0gaXQtPnNlY29uZC5nZXQoKTsKLSAgICAgICAgICAgIFtjdXJy
TGF5ZXIgc2V0U3BlZWQ6MF07Ci0gICAgICAgICAgICBbY3VyckxheWVyIHNldFRpbWVPZmZzZXQ6
dF07Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6cmVzdW1l
QW5pbWF0aW9ucygpCi17Ci0gICAgW3ByaW1hcnlMYXllcigpIHNldFNwZWVkOjFdOwotICAgIFtw
cmltYXJ5TGF5ZXIoKSBzZXRUaW1lT2Zmc2V0OjBdOwotCi0gICAgLy8gUmVzdW1lIHRoZSBhbmlt
YXRpb25zIG9uIHRoZSBjbG9uZXMgdG9vLgotICAgIGlmIChMYXllck1hcCogbGF5ZXJDbG9uZU1h
cCA9IHByaW1hcnlMYXllckNsb25lcygpKSB7Ci0gICAgICAgIExheWVyTWFwOjpjb25zdF9pdGVy
YXRvciBlbmQgPSBsYXllckNsb25lTWFwLT5lbmQoKTsKLSAgICAgICAgZm9yIChMYXllck1hcDo6
Y29uc3RfaXRlcmF0b3IgaXQgPSBsYXllckNsb25lTWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsr
aXQpIHsKLSAgICAgICAgICAgIENBTGF5ZXIgKmN1cnJMYXllciA9IGl0LT5zZWNvbmQuZ2V0KCk7
Ci0gICAgICAgICAgICBbY3VyckxheWVyIHNldFNwZWVkOjFdOwotICAgICAgICAgICAgW2N1cnJM
YXllciBzZXRUaW1lT2Zmc2V0OjBdOwotICAgICAgICB9Ci0gICAgfQotfQotCi1DQUxheWVyKiBH
cmFwaGljc0xheWVyTWFjOjpob3N0TGF5ZXJGb3JTdWJsYXllcnMoKSBjb25zdAotewotICAgIHJl
dHVybiBtX3N0cnVjdHVyYWxMYXllci5nZXQoKSA/IG1fc3RydWN0dXJhbExheWVyLmdldCgpIDog
bV9sYXllci5nZXQoKTsgCi19Ci0KLUNBTGF5ZXIqIEdyYXBoaWNzTGF5ZXJNYWM6OmxheWVyRm9y
U3VwZXJsYXllcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc3RydWN0dXJhbExheWVyID8gbV9z
dHJ1Y3R1cmFsTGF5ZXIuZ2V0KCkgOiBtX2xheWVyLmdldCgpOwotfQotCi1DQUxheWVyKiBHcmFw
aGljc0xheWVyTWFjOjphbmltYXRlZExheWVyKEFuaW1hdGVkUHJvcGVydHlJRCBwcm9wZXJ0eSkg
Y29uc3QKLXsKLSAgICByZXR1cm4gKHByb3BlcnR5ID09IEFuaW1hdGVkUHJvcGVydHlCYWNrZ3Jv
dW5kQ29sb3IpID8gbV9jb250ZW50c0xheWVyLmdldCgpIDogcHJpbWFyeUxheWVyKCk7Ci19Ci0K
LUdyYXBoaWNzTGF5ZXJNYWM6OkxheWVyTWFwKiBHcmFwaGljc0xheWVyTWFjOjphbmltYXRlZExh
eWVyQ2xvbmVzKEFuaW1hdGVkUHJvcGVydHlJRCBwcm9wZXJ0eSkgY29uc3QKLXsKLSAgICByZXR1
cm4gKHByb3BlcnR5ID09IEFuaW1hdGVkUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpID8gbV9jb250
ZW50c0xheWVyQ2xvbmVzLmdldCgpIDogcHJpbWFyeUxheWVyQ2xvbmVzKCk7Ci19Ci0KLVBsYXRm
b3JtTGF5ZXIqIEdyYXBoaWNzTGF5ZXJNYWM6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAotewotICAg
IHJldHVybiBwcmltYXJ5TGF5ZXIoKTsKLX0KLQotdm9pZCBHcmFwaGljc0xheWVyTWFjOjpzZXRE
ZWJ1Z0JhY2tncm91bmRDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCi17Ci0gICAgQkVHSU5fQkxP
Q0tfT0JKQ19FWENFUFRJT05TCi0gICAgCi0gICAgaWYgKGNvbG9yLmlzVmFsaWQoKSkKLSAgICAg
ICAgc2V0TGF5ZXJCYWNrZ3JvdW5kQ29sb3IobV9sYXllci5nZXQoKSwgY29sb3IpOwotICAgIGVs
c2UKLSAgICAgICAgY2xlYXJMYXllckJhY2tncm91bmRDb2xvcihtX2xheWVyLmdldCgpKTsKLSAg
ICAKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi19Ci0KLXZvaWQgR3JhcGhpY3NMYXll
ck1hYzo6c2V0RGVidWdCb3JkZXIoY29uc3QgQ29sb3ImIGNvbG9yLCBmbG9hdCBib3JkZXJXaWR0
aCkKLXsKLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICAKLSAgICBpZiAoY29s
b3IuaXNWYWxpZCgpKSB7Ci0gICAgICAgIHNldExheWVyQm9yZGVyQ29sb3IobV9sYXllci5nZXQo
KSwgY29sb3IpOwotICAgICAgICBbbV9sYXllci5nZXQoKSBzZXRCb3JkZXJXaWR0aDpib3JkZXJX
aWR0aF07Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgY2xlYXJCb3JkZXJDb2xvcihtX2xheWVyLmdl
dCgpKTsKLSAgICAgICAgW21fbGF5ZXIuZ2V0KCkgc2V0Qm9yZGVyV2lkdGg6MF07Ci0gICAgfQot
ICAgIAotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLX0KLQotRmxvYXRTaXplIEdyYXBo
aWNzTGF5ZXJNYWM6OmNvbnN0cmFpbmVkU2l6ZSgpIGNvbnN0Ci17Ci0gICAgZmxvYXQgdGlsZUNv
bHVtbnMgPSBjZWlsZihtX3NpemUud2lkdGgoKSAvIGNUaWxlZExheWVyVGlsZVNpemUpOwotICAg
IGZsb2F0IHRpbGVSb3dzID0gY2VpbGYobV9zaXplLmhlaWdodCgpIC8gY1RpbGVkTGF5ZXJUaWxl
U2l6ZSk7Ci0gICAgZG91YmxlIG51bVRpbGVzID0gdGlsZUNvbHVtbnMgKiB0aWxlUm93czsKLSAg
ICAKLSAgICBGbG9hdFNpemUgY29uc3RyYWluZWRTaXplID0gbV9zaXplOwotICAgIGNvbnN0IHVu
c2lnbmVkIGNNYXhUaWxlQ291bnQgPSA1MTI7Ci0gICAgd2hpbGUgKG51bVRpbGVzID4gY01heFRp
bGVDb3VudCkgewotICAgICAgICAvLyBDb25zdHJhaW4gdGhlIHdpZGVyIGRpbWVuc2lvbi4KLSAg
ICAgICAgaWYgKGNvbnN0cmFpbmVkU2l6ZS53aWR0aCgpID49IGNvbnN0cmFpbmVkU2l6ZS5oZWln
aHQoKSkgewotICAgICAgICAgICAgdGlsZUNvbHVtbnMgPSBtYXgoZmxvb3JmKGNNYXhUaWxlQ291
bnQgLyB0aWxlUm93cyksIDEuMGYpOwotICAgICAgICAgICAgY29uc3RyYWluZWRTaXplLnNldFdp
ZHRoKHRpbGVDb2x1bW5zICogY1RpbGVkTGF5ZXJUaWxlU2l6ZSk7Ci0gICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICB0aWxlUm93cyA9IG1heChmbG9vcmYoY01heFRpbGVDb3VudCAvIHRpbGVD
b2x1bW5zKSwgMS4wZik7Ci0gICAgICAgICAgICBjb25zdHJhaW5lZFNpemUuc2V0SGVpZ2h0KHRp
bGVSb3dzICogY1RpbGVkTGF5ZXJUaWxlU2l6ZSk7Ci0gICAgICAgIH0KLSAgICAgICAgbnVtVGls
ZXMgPSB0aWxlQ29sdW1ucyAqIHRpbGVSb3dzOwotICAgIH0KLSAgICAKLSAgICByZXR1cm4gY29u
c3RyYWluZWRTaXplOwotfQotCi1ib29sIEdyYXBoaWNzTGF5ZXJNYWM6OnJlcXVpcmVzVGlsZWRM
YXllcihjb25zdCBGbG9hdFNpemUmIHNpemUpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX2RyYXdzQ29u
dGVudCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gRklYTUU6IGNhdGNoIHplcm8t
c2l6ZSBoZWlnaHQgb3Igd2lkdGggaGVyZSAob3IgZWFybGllcik/Ci0gICAgcmV0dXJuIHNpemUu
d2lkdGgoKSA+IGNNYXhQaXhlbERpbWVuc2lvbiB8fCBzaXplLmhlaWdodCgpID4gY01heFBpeGVs
RGltZW5zaW9uOwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6OnN3YXBGcm9tT3JUb1RpbGVk
TGF5ZXIoYm9vbCB1c2VUaWxlZExheWVyKQotewotICAgIGlmICh1c2VUaWxlZExheWVyID09IG1f
dXNpbmdUaWxlZExheWVyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBDR1NpemUgdGlsZVNpemUg
PSBDR1NpemVNYWtlKGNUaWxlZExheWVyVGlsZVNpemUsIGNUaWxlZExheWVyVGlsZVNpemUpOwot
Ci0gICAgUmV0YWluUHRyPENBTGF5ZXI+IG9sZExheWVyID0gbV9sYXllci5nZXQoKTsKLSAgICAK
LSAgICBDbGFzcyBsYXllckNsYXNzID0gdXNlVGlsZWRMYXllciA/IFtXZWJUaWxlZExheWVyIHNl
bGZdIDogW1dlYkxheWVyIHNlbGZdOwotICAgIG1fbGF5ZXIuYWRvcHROUyhbW2xheWVyQ2xhc3Mg
YWxsb2NdIGluaXRdKTsKLQotICAgIG1fdXNpbmdUaWxlZExheWVyID0gdXNlVGlsZWRMYXllcjsK
LQotICAgIGlmICh1c2VUaWxlZExheWVyKSB7Ci0gICAgICAgIFdlYlRpbGVkTGF5ZXIqIHRpbGVk
TGF5ZXIgPSAoV2ViVGlsZWRMYXllciopbV9sYXllci5nZXQoKTsKLSAgICAgICAgW3RpbGVkTGF5
ZXIgc2V0VGlsZVNpemU6dGlsZVNpemVdOwotICAgICAgICBbdGlsZWRMYXllciBzZXRMZXZlbHNP
ZkRldGFpbDoxXTsKLSAgICAgICAgW3RpbGVkTGF5ZXIgc2V0TGV2ZWxzT2ZEZXRhaWxCaWFzOjBd
OwotICAgICAgICBbdGlsZWRMYXllciBzZXRDb250ZW50c0dyYXZpdHk6QCJib3R0b21MZWZ0Il07
Ci0KLSNpZiAhSEFWRV9NT0RFUk5fUVVBUlRaQ09SRQotICAgICAgICAvLyBUaWxlZCBsYXllciBo
YXMgaXNzdWVzIHdpdGggZmxpcHBlZCBjb29yZGluYXRlcy4KLSAgICAgICAgc2V0Q29udGVudHNP
cmllbnRhdGlvbihDb21wb3NpdGluZ0Nvb3JkaW5hdGVzVG9wRG93bik7Ci0jZW5kaWYKLSAgICB9
IGVsc2UgewotI2lmICFIQVZFX01PREVSTl9RVUFSVFpDT1JFCi0gICAgICAgIHNldENvbnRlbnRz
T3JpZW50YXRpb24oZGVmYXVsdENvbnRlbnRzT3JpZW50YXRpb24oKSk7Ci0jZW5kaWYKLSAgICB9
Ci0gICAgCi0gICAgW21fbGF5ZXIuZ2V0KCkgc2V0TGF5ZXJPd25lcjp0aGlzXTsKLSAgICBzYWZl
U2V0U3VibGF5ZXJzKG1fbGF5ZXIuZ2V0KCksIFtvbGRMYXllci5nZXQoKSBzdWJsYXllcnNdKTsK
LSAgICAKLSAgICBbW29sZExheWVyLmdldCgpIHN1cGVybGF5ZXJdIHJlcGxhY2VTdWJsYXllcjpv
bGRMYXllci5nZXQoKSB3aXRoOm1fbGF5ZXIuZ2V0KCldOwotCi0gICAgdXBkYXRlQ29udGVudHNU
cmFuc2Zvcm0oKTsKLQotICAgIHVwZGF0ZUxheWVyUG9zaXRpb24oKTsKLSAgICB1cGRhdGVMYXll
clNpemUoKTsKLSAgICB1cGRhdGVBbmNob3JQb2ludCgpOwotICAgIHVwZGF0ZVRyYW5zZm9ybSgp
OwotICAgIHVwZGF0ZUNoaWxkcmVuVHJhbnNmb3JtKCk7Ci0gICAgdXBkYXRlTWFza3NUb0JvdW5k
cygpOwotICAgIHVwZGF0ZUNvbnRlbnRzT3BhcXVlKCk7Ci0gICAgdXBkYXRlQmFja2ZhY2VWaXNp
YmlsaXR5KCk7Ci0gICAgdXBkYXRlTGF5ZXJCYWNrZ3JvdW5kQ29sb3IoKTsKLSAgICAKLSAgICB1
cGRhdGVPcGFjaXR5T25MYXllcigpOwotICAgIAotI2lmbmRlZiBOREVCVUcKLSAgICBTdHJpbmcg
bmFtZSA9IFN0cmluZzo6Zm9ybWF0KCJDQUxheWVyKCVwKSBHcmFwaGljc0xheWVyKCVwKSAiLCBt
X2xheWVyLmdldCgpLCB0aGlzKSArIG1fbmFtZTsKLSAgICBbbV9sYXllci5nZXQoKSBzZXROYW1l
Om5hbWVdOwotI2VuZGlmCi0KLSAgICAvLyBtb3ZlIG92ZXIgYW5pbWF0aW9ucwotICAgIG1vdmVP
ckNvcHlBbmltYXRpb25zRm9yUHJvcGVydHkoTW92ZSwgQW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdFRy
YW5zZm9ybSwgb2xkTGF5ZXIuZ2V0KCksIG1fbGF5ZXIuZ2V0KCkpOwotICAgIG1vdmVPckNvcHlB
bmltYXRpb25zRm9yUHJvcGVydHkoTW92ZSwgQW5pbWF0ZWRQcm9wZXJ0eU9wYWNpdHksIG9sZExh
eWVyLmdldCgpLCBtX2xheWVyLmdldCgpKTsKLSAgICBtb3ZlT3JDb3B5QW5pbWF0aW9uc0ZvclBy
b3BlcnR5KE1vdmUsIEFuaW1hdGVkUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsIG9sZExheWVyLmdl
dCgpLCBtX2xheWVyLmdldCgpKTsKLSAgICAKLSAgICAvLyBuZWVkIHRvIHRlbGwgbmV3IGxheWVy
IHRvIGRyYXcgaXRzZWxmCi0gICAgc2V0TmVlZHNEaXNwbGF5KCk7Ci0gICAgCi0gICAgdXBkYXRl
RGVidWdJbmRpY2F0b3JzKCk7Ci19Ci0KLUdyYXBoaWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRp
bmF0ZXNPcmllbnRhdGlvbiBHcmFwaGljc0xheWVyTWFjOjpkZWZhdWx0Q29udGVudHNPcmllbnRh
dGlvbigpIGNvbnN0Ci17Ci0jaWYgIUhBVkVfTU9ERVJOX1FVQVJUWkNPUkUKLSAgICAvLyBPbGRl
ciBRdWFydHpDb3JlIGRvZXMgbm90IHN1cHBvcnQgLWdlb21ldHJ5RmxpcHBlZCwgc28gd2UgbWFu
dWFsbHkgZmxpcCB0aGUgcm9vdAotICAgIC8vIGxheWVyIGdlb21ldHJ5LCBhbmQgdGhlbiBmbGlw
IHRoZSBjb250ZW50cyBvZiBlYWNoIGxheWVyIGJhY2sgc28gdGhhdCB0aGUgQ1RNIGZvciBDRwot
ICAgIC8vIGlzIHVuZmxpcHBlZCwgYWxsb3dpbmcgaXQgdG8gZG8gdGhlIGNvcnJlY3QgZm9udCBh
dXRvLWhpbnRpbmcuCi0gICAgcmV0dXJuIENvbXBvc2l0aW5nQ29vcmRpbmF0ZXNCb3R0b21VcDsK
LSNlbHNlCi0gICAgcmV0dXJuIENvbXBvc2l0aW5nQ29vcmRpbmF0ZXNUb3BEb3duOwotI2VuZGlm
Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6dXBkYXRlQ29udGVudHNUcmFuc2Zvcm0oKQot
ewotI2lmICFIQVZFX01PREVSTl9RVUFSVFpDT1JFCi0gICAgaWYgKGNvbnRlbnRzT3JpZW50YXRp
b24oKSA9PSBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzQm90dG9tVXApIHsKLSAgICAgICAgQ0dBZmZp
bmVUcmFuc2Zvcm0gY29udGVudHNUcmFuc2Zvcm0gPSBDR0FmZmluZVRyYW5zZm9ybU1ha2VTY2Fs
ZSgxLCAtMSk7Ci0gICAgICAgIGNvbnRlbnRzVHJhbnNmb3JtID0gQ0dBZmZpbmVUcmFuc2Zvcm1U
cmFuc2xhdGUoY29udGVudHNUcmFuc2Zvcm0sIDAsIC1bbV9sYXllci5nZXQoKSBib3VuZHNdLnNp
emUuaGVpZ2h0KTsKLSAgICAgICAgW21fbGF5ZXIuZ2V0KCkgc2V0Q29udGVudHNUcmFuc2Zvcm06
Y29udGVudHNUcmFuc2Zvcm1dOwotICAgIH0KLSNlbmRpZgotfQotCi12b2lkIEdyYXBoaWNzTGF5
ZXJNYWM6OnNldHVwQ29udGVudHNMYXllcihDQUxheWVyKiBjb250ZW50c0xheWVyKQotewotICAg
IC8vIFR1cm4gb2ZmIGltcGxpY2l0IGFuaW1hdGlvbnMgb24gdGhlIGlubmVyIGxheWVyLgotICAg
IFtjb250ZW50c0xheWVyIHNldFN0eWxlOltOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmpl
Y3Q6bnVsbEFjdGlvbnNEaWN0aW9uYXJ5KCkgZm9yS2V5OkAiYWN0aW9ucyJdXTsKLSAgICBbY29u
dGVudHNMYXllciBzZXRNYXNrc1RvQm91bmRzOllFU107Ci0KLSAgICBpZiAoZGVmYXVsdENvbnRl
bnRzT3JpZW50YXRpb24oKSA9PSBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzQm90dG9tVXApIHsKLSAg
ICAgICAgQ0FUcmFuc2Zvcm0zRCBmbGlwcGVyID0gewotICAgICAgICAgICAgMS4wZiwgMC4wZiwg
MC4wZiwgMC4wZiwKLSAgICAgICAgICAgIDAuMGYsIC0xLjBmLCAwLjBmLCAwLjBmLAotICAgICAg
ICAgICAgMC4wZiwgMC4wZiwgMS4wZiwgMC4wZiwKLSAgICAgICAgICAgIDAuMGYsIDAuMGYsIDAu
MGYsIDEuMGZ9OwotICAgICAgICBbY29udGVudHNMYXllciBzZXRUcmFuc2Zvcm06ZmxpcHBlcl07
Ci0gICAgICAgIFtjb250ZW50c0xheWVyIHNldEFuY2hvclBvaW50OkNHUG9pbnRNYWtlKDAuMGYs
IDEuMGYpXTsKLSAgICB9IGVsc2UKLSAgICAgICAgW2NvbnRlbnRzTGF5ZXIgc2V0QW5jaG9yUG9p
bnQ6Q0dQb2ludFplcm9dOwotCi0gICAgaWYgKHNob3dEZWJ1Z0JvcmRlcnMoKSkgewotICAgICAg
ICBzZXRMYXllckJvcmRlckNvbG9yKGNvbnRlbnRzTGF5ZXIsIENvbG9yKDAsIDAsIDEyOCwgMTgw
KSk7Ci0gICAgICAgIFtjb250ZW50c0xheWVyIHNldEJvcmRlcldpZHRoOjEuMGZdOwotICAgIH0K
LX0KLQotQ0FMYXllciAqR3JhcGhpY3NMYXllck1hYzo6ZmluZE9yTWFrZUNsb25lKENsb25lSUQg
Y2xvbmVJRCwgQ0FMYXllciAqc291cmNlTGF5ZXIsIExheWVyTWFwKiBjbG9uZXMsIENsb25lTGV2
ZWwgY2xvbmVMZXZlbCkKLXsKLSAgICBpZiAoIXNvdXJjZUxheWVyKQotICAgICAgICByZXR1cm4g
MDsKLQotICAgIENBTGF5ZXIgKnJlc3VsdExheWVyOwotCi0gICAgLy8gQWRkIHdpdGggYSBkdW1t
eSB2YWx1ZSB0byBnZXQgYW4gaXRlcmF0b3IgZm9yIHRoZSBpbnNlcnRpb24gcG9zaXRpb24sIGFu
ZCBhIGJvb2xlYW4gdGhhdCB0ZWxscwotICAgIC8vIHVzIHdoZXRoZXIgdGhlcmUncyBhbiBpdGVt
IHRoZXJlLiBUaGlzIHRlY2huaXF1ZSBhdm9pZHMgdHdvIGhhc2ggbG9va3Vwcy4KLSAgICBSZXRh
aW5QdHI8Q0FMYXllcj4gZHVtbXk7Ci0gICAgcGFpcjxMYXllck1hcDo6aXRlcmF0b3IsIGJvb2w+
IGFkZFJlc3VsdCA9IGNsb25lcy0+YWRkKGNsb25lSUQsIGR1bW15KTsKLSAgICBpZiAoIWFkZFJl
c3VsdC5zZWNvbmQpIHsKLSAgICAgICAgLy8gVmFsdWUgd2FzIG5vdCBhZGRlZCwgc28gaXQgZXhp
c3RzIGFscmVhZHkuCi0gICAgICAgIHJlc3VsdExheWVyID0gYWRkUmVzdWx0LmZpcnN0LT5zZWNv
bmQuZ2V0KCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgcmVzdWx0TGF5ZXIgPSBjbG9uZUxheWVy
KHNvdXJjZUxheWVyLCBjbG9uZUxldmVsKTsKLSNpZm5kZWYgTkRFQlVHCi0gICAgICAgIFtyZXN1
bHRMYXllciBzZXROYW1lOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiQ2xvbmUgJWQgb2Yg
bGF5ZXIgJUAiLCBjbG9uZUlEWzBVXSwgc291cmNlTGF5ZXJdXTsKLSNlbmRpZgotICAgICAgICBh
ZGRSZXN1bHQuZmlyc3QtPnNlY29uZCA9IHJlc3VsdExheWVyOwotICAgIH0KLQotICAgIHJldHVy
biByZXN1bHRMYXllcjsKLX0gICAKLQotdm9pZCBHcmFwaGljc0xheWVyTWFjOjplbnN1cmVDbG9u
ZUxheWVycyhDbG9uZUlEIGNsb25lSUQsIENBTGF5ZXIgKiYgcHJpbWFyeUxheWVyLCBDQUxheWVy
IComIHN0cnVjdHVyYWxMYXllciwgQ0FMYXllciAqJiBjb250ZW50c0xheWVyLCBDbG9uZUxldmVs
IGNsb25lTGV2ZWwpCi17Ci0gICAgc3RydWN0dXJhbExheWVyID0gbmlsOwotICAgIGNvbnRlbnRz
TGF5ZXIgPSBuaWw7Ci0KLSAgICBpZiAoIW1fbGF5ZXJDbG9uZXMpCi0gICAgICAgIG1fbGF5ZXJD
bG9uZXMgPSBuZXcgTGF5ZXJNYXA7Ci0KLSAgICBpZiAoIW1fc3RydWN0dXJhbExheWVyQ2xvbmVz
ICYmIG1fc3RydWN0dXJhbExheWVyKQotICAgICAgICBtX3N0cnVjdHVyYWxMYXllckNsb25lcyA9
IG5ldyBMYXllck1hcDsKLQotICAgIGlmICghbV9jb250ZW50c0xheWVyQ2xvbmVzICYmIG1fY29u
dGVudHNMYXllcikKLSAgICAgICAgbV9jb250ZW50c0xheWVyQ2xvbmVzID0gbmV3IExheWVyTWFw
OwotCi0gICAgcHJpbWFyeUxheWVyID0gZmluZE9yTWFrZUNsb25lKGNsb25lSUQsIG1fbGF5ZXIu
Z2V0KCksIG1fbGF5ZXJDbG9uZXMuZ2V0KCksIGNsb25lTGV2ZWwpOwotICAgIHN0cnVjdHVyYWxM
YXllciA9IGZpbmRPck1ha2VDbG9uZShjbG9uZUlELCBtX3N0cnVjdHVyYWxMYXllci5nZXQoKSwg
bV9zdHJ1Y3R1cmFsTGF5ZXJDbG9uZXMuZ2V0KCksIGNsb25lTGV2ZWwpOwotICAgIGNvbnRlbnRz
TGF5ZXIgPSBmaW5kT3JNYWtlQ2xvbmUoY2xvbmVJRCwgbV9jb250ZW50c0xheWVyLmdldCgpLCBt
X2NvbnRlbnRzTGF5ZXJDbG9uZXMuZ2V0KCksIGNsb25lTGV2ZWwpOwotfQotCi12b2lkIEdyYXBo
aWNzTGF5ZXJNYWM6OnJlbW92ZUNsb25lTGF5ZXJzKCkKLXsKLSAgICBtX2xheWVyQ2xvbmVzID0g
MDsKLSAgICBtX3N0cnVjdHVyYWxMYXllckNsb25lcyA9IDA7Ci0gICAgbV9jb250ZW50c0xheWVy
Q2xvbmVzID0gMDsKLX0KLQotRmxvYXRQb2ludCBHcmFwaGljc0xheWVyTWFjOjpwb3NpdGlvbkZv
ckNsb25lUm9vdExheWVyKCkgY29uc3QKLXsKLSAgICAvLyBUaGlzIGNhbiBnZXQgY2FsbGVkIGR1
cmluZyBhIHN5bmMgd2hlbiB3ZSd2ZSBqdXN0IHJlbW92ZWQgdGhlIG1fcmVwbGljYUxheWVyLgot
ICAgIGlmICghbV9yZXBsaWNhTGF5ZXIpCi0gICAgICAgIHJldHVybiBGbG9hdFBvaW50KCk7Ci0K
LSAgICBGbG9hdFBvaW50IHJlcGxpY2FQb3NpdGlvbiA9IG1fcmVwbGljYUxheWVyLT5yZXBsaWNh
dGVkTGF5ZXJQb3NpdGlvbigpOwotICAgIHJldHVybiBGbG9hdFBvaW50KHJlcGxpY2FQb3NpdGlv
bi54KCkgKyBtX2FuY2hvclBvaW50LngoKSAqIG1fc2l6ZS53aWR0aCgpLAotICAgICAgICAgICAg
ICAgICAgICAgIHJlcGxpY2FQb3NpdGlvbi55KCkgKyBtX2FuY2hvclBvaW50LnkoKSAqIG1fc2l6
ZS5oZWlnaHQoKSk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6cHJvcGFnYXRlTGF5ZXJD
aGFuZ2VUb1JlcGxpY2FzKCkKLXsKLSAgICBmb3IgKEdyYXBoaWNzTGF5ZXIqIGN1cnJMYXllciA9
IHRoaXM7IGN1cnJMYXllcjsgY3VyckxheWVyID0gY3VyckxheWVyLT5wYXJlbnQoKSkgewotICAg
ICAgICBHcmFwaGljc0xheWVyTWFjKiBjdXJyTGF5ZXJDQSA9IHN0YXRpY19jYXN0PEdyYXBoaWNz
TGF5ZXJNYWMqPihjdXJyTGF5ZXIpOwotICAgICAgICBpZiAoIWN1cnJMYXllckNBLT5oYXNDbG9u
ZUxheWVycygpKQotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgaWYgKGN1cnJMYXllckNB
LT5yZXBsaWNhTGF5ZXIoKSkKLSAgICAgICAgICAgIHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXJN
YWMqPihjdXJyTGF5ZXJDQS0+cmVwbGljYUxheWVyKCkpLT5ub3RlTGF5ZXJQcm9wZXJ0eUNoYW5n
ZWQoUmVwbGljYXRlZExheWVyQ2hhbmdlZCk7Ci0gICAgfQotfQotCi1DQUxheWVyICpHcmFwaGlj
c0xheWVyTWFjOjpmZXRjaENsb25lTGF5ZXJzKEdyYXBoaWNzTGF5ZXIqIHJlcGxpY2FSb290LCBS
ZXBsaWNhU3RhdGUmIHJlcGxpY2FTdGF0ZSwgQ2xvbmVMZXZlbCBjbG9uZUxldmVsKQotewotICAg
IENBTGF5ZXIgKnByaW1hcnlMYXllcjsKLSAgICBDQUxheWVyICpzdHJ1Y3R1cmFsTGF5ZXI7Ci0g
ICAgQ0FMYXllciAqY29udGVudHNMYXllcjsKLSAgICBlbnN1cmVDbG9uZUxheWVycyhyZXBsaWNh
U3RhdGUuY2xvbmVJRCgpLCBwcmltYXJ5TGF5ZXIsIHN0cnVjdHVyYWxMYXllciwgY29udGVudHNM
YXllciwgY2xvbmVMZXZlbCk7Ci0KLSAgICBpZiAobV9tYXNrTGF5ZXIpIHsKLSAgICAgICAgQ0FM
YXllciAqbWFza0Nsb25lID0gc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllck1hYyo+KG1fbWFza0xh
eWVyKS0+ZmV0Y2hDbG9uZUxheWVycyhyZXBsaWNhUm9vdCwgcmVwbGljYVN0YXRlLCBJbnRlcm1l
ZGlhdGVDbG9uZUxldmVsKTsKLSAgICAgICAgW3ByaW1hcnlMYXllciBzZXRNYXNrOm1hc2tDbG9u
ZV07Ci0gICAgfQotCi0gICAgaWYgKG1fcmVwbGljYXRlZExheWVyKSB7Ci0gICAgICAgIC8vIFdl
IGFyZSBhIHJlcGxpY2EgYmVpbmcgYXNrZWQgZm9yIGNsb25lcyBvZiBvdXIgbGF5ZXJzLgotICAg
ICAgICBDQUxheWVyICpyZXBsaWNhUm9vdCA9IHJlcGxpY2F0ZWRMYXllclJvb3QocmVwbGljYVN0
YXRlKTsKLSAgICAgICAgaWYgKCFyZXBsaWNhUm9vdCkKLSAgICAgICAgICAgIHJldHVybiBuaWw7
Ci0KLSAgICAgICAgaWYgKHN0cnVjdHVyYWxMYXllcikgewotICAgICAgICAgICAgW3N0cnVjdHVy
YWxMYXllciBpbnNlcnRTdWJsYXllcjpyZXBsaWNhUm9vdCBhdEluZGV4OjBdOwotICAgICAgICAg
ICAgcmV0dXJuIHN0cnVjdHVyYWxMYXllcjsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAg
W3ByaW1hcnlMYXllciBpbnNlcnRTdWJsYXllcjpyZXBsaWNhUm9vdCBhdEluZGV4OjBdOwotICAg
ICAgICByZXR1cm4gcHJpbWFyeUxheWVyOwotICAgIH0KLQotICAgIGNvbnN0IFZlY3RvcjxHcmFw
aGljc0xheWVyKj4mIGNoaWxkTGF5ZXJzID0gY2hpbGRyZW4oKTsKLSAgICBOU011dGFibGVBcnJh
eSogY2xvbmFsU3VibGF5ZXJzID0gbmlsOwotCi0gICAgQ0FMYXllciAqcmVwbGljYUxheWVyID0g
bmlsOwotICAgIGlmIChtX3JlcGxpY2FMYXllciAmJiBtX3JlcGxpY2FMYXllciAhPSByZXBsaWNh
Um9vdCkgewotICAgICAgICAvLyBXZSBoYXZlIG5lc3RlZCByZXBsaWNhcy4gQXNrIHRoZSByZXBs
aWNhIGxheWVyIGZvciBhIGNsb25lIG9mIGl0cyBjb250ZW50cy4KLSAgICAgICAgcmVwbGljYVN0
YXRlLnNldEJyYW5jaFR5cGUoUmVwbGljYVN0YXRlOjpSZXBsaWNhQnJhbmNoKTsKLSAgICAgICAg
cmVwbGljYUxheWVyID0gc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllck1hYyo+KG1fcmVwbGljYUxh
eWVyKS0+ZmV0Y2hDbG9uZUxheWVycyhyZXBsaWNhUm9vdCwgcmVwbGljYVN0YXRlLCBSb290Q2xv
bmVMZXZlbCk7Ci0gICAgICAgIHJlcGxpY2FTdGF0ZS5zZXRCcmFuY2hUeXBlKFJlcGxpY2FTdGF0
ZTo6Q2hpbGRCcmFuY2gpOwotICAgIH0KLSAgICAKLSAgICBpZiAocmVwbGljYUxheWVyIHx8IHN0
cnVjdHVyYWxMYXllciB8fCBjb250ZW50c0xheWVyIHx8IGNoaWxkTGF5ZXJzLnNpemUoKSA+IDAp
IHsKLSAgICAgICAgY2xvbmFsU3VibGF5ZXJzID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5p
dF07Ci0KLSAgICAgICAgaWYgKHN0cnVjdHVyYWxMYXllcikgewotICAgICAgICAgICAgLy8gUmVw
bGljYXMgcmVuZGVyIGJlaGluZCB0aGUgYWN0dWFsIGxheWVyIGNvbnRlbnQuCi0gICAgICAgICAg
ICBpZiAocmVwbGljYUxheWVyKQotICAgICAgICAgICAgICAgIFtjbG9uYWxTdWJsYXllcnMgYWRk
T2JqZWN0OnJlcGxpY2FMYXllcl07Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAvLyBB
ZGQgdGhlIHByaW1hcnkgbGF5ZXIgbmV4dC4gRXZlbiBpZiB3ZSBoYXZlIG5lZ2F0aXZlIHotb3Jk
ZXIgY2hpbGRyZW4sIHRoZSBwcmltYXJ5IGxheWVyIGFsd2F5cyBjb21lcyBiZWhpbmQuCi0gICAg
ICAgICAgICBbY2xvbmFsU3VibGF5ZXJzIGFkZE9iamVjdDpwcmltYXJ5TGF5ZXJdOwotICAgICAg
ICB9IGVsc2UgaWYgKGNvbnRlbnRzTGF5ZXIpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBhZGQg
dGhlIGNvbnRlbnRzIGxheWVyIGluIHRoZSBjb3JyZWN0IG9yZGVyIHdpdGggbmVnYXRpdmUgei1v
cmRlciBjaGlsZHJlbi4KLSAgICAgICAgICAgIC8vIFRoaXMgZG9lcyBub3QgY2F1c2UgdmlzaWJs
ZSByZW5kZXJpbmcgaXNzdWVzIGJlY2F1c2UgY3VycmVudGx5IGNvbnRlbnRzIGxheWVycyBhcmUg
b25seSB1c2VkCi0gICAgICAgICAgICAvLyBmb3IgcmVwbGFjZWQgZWxlbWVudHMgdGhhdCBkb24n
dCBoYXZlIGNoaWxkcmVuLgotICAgICAgICAgICAgW2Nsb25hbFN1YmxheWVycyBhZGRPYmplY3Q6
Y29udGVudHNMYXllcl07Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHJlcGxpY2FTdGF0
ZS5wdXNoKFJlcGxpY2FTdGF0ZTo6Q2hpbGRCcmFuY2gpOwotCi0gICAgICAgIHNpemVfdCBudW1D
aGlsZHJlbiA9IGNoaWxkTGF5ZXJzLnNpemUoKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBudW1DaGlsZHJlbjsgKytpKSB7Ci0gICAgICAgICAgICBHcmFwaGljc0xheWVyTWFjKiBj
dXJDaGlsZCA9IHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXJNYWMqPihjaGlsZExheWVyc1tpXSk7
Ci0KLSAgICAgICAgICAgIENBTGF5ZXIgKmNoaWxkTGF5ZXIgPSBjdXJDaGlsZC0+ZmV0Y2hDbG9u
ZUxheWVycyhyZXBsaWNhUm9vdCwgcmVwbGljYVN0YXRlLCBJbnRlcm1lZGlhdGVDbG9uZUxldmVs
KTsKLSAgICAgICAgICAgIGlmIChjaGlsZExheWVyKQotICAgICAgICAgICAgICAgIFtjbG9uYWxT
dWJsYXllcnMgYWRkT2JqZWN0OmNoaWxkTGF5ZXJdOwotICAgICAgICB9Ci0KLSAgICAgICAgcmVw
bGljYVN0YXRlLnBvcCgpOwotCi0gICAgICAgIFtjbG9uYWxTdWJsYXllcnMgbWFrZU9iamVjdHNQ
ZXJmb3JtU2VsZWN0b3I6QHNlbGVjdG9yKHJlbW92ZUZyb21TdXBlcmxheWVyKV07Ci0gICAgfQot
ICAgIAotICAgIENBTGF5ZXIgKnJlc3VsdDsKLSAgICBpZiAoc3RydWN0dXJhbExheWVyKSB7Ci0g
ICAgICAgIFtzdHJ1Y3R1cmFsTGF5ZXIgc2V0U3VibGF5ZXJzOmNsb25hbFN1YmxheWVyc107Ci0K
LSAgICAgICAgaWYgKGNvbnRlbnRzTGF5ZXIpIHsKLSAgICAgICAgICAgIC8vIElmIHdlIGhhdmUg
YSB0cmFuc2Zvcm0gbGF5ZXIsIHRoZW4gdGhlIGNvbnRlbnRzIGxheWVyIGlzIHBhcmVudGVkIGlu
IHRoZSAKLSAgICAgICAgICAgIC8vIHByaW1hcnkgbGF5ZXIgKHdoaWNoIGlzIGl0c2VsZiBhIGNo
aWxkIG9mIHRoZSB0cmFuc2Zvcm0gbGF5ZXIpLgotICAgICAgICAgICAgW3ByaW1hcnlMYXllciBz
ZXRTdWJsYXllcnM6bmlsXTsKLSAgICAgICAgICAgIFtwcmltYXJ5TGF5ZXIgYWRkU3VibGF5ZXI6
Y29udGVudHNMYXllcl07Ci0gICAgICAgIH0KLQotICAgICAgICByZXN1bHQgPSBzdHJ1Y3R1cmFs
TGF5ZXI7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgW3ByaW1hcnlMYXllciBzZXRTdWJsYXllcnM6
Y2xvbmFsU3VibGF5ZXJzXTsKLSAgICAgICAgcmVzdWx0ID0gcHJpbWFyeUxheWVyOwotICAgIH0K
LQotICAgIFtjbG9uYWxTdWJsYXllcnMgcmVsZWFzZV07Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LQotQ0FMYXllciAqR3JhcGhpY3NMYXllck1hYzo6Y2xvbmVMYXllcihDQUxheWVyICpsYXllciwg
Q2xvbmVMZXZlbCBjbG9uZUxldmVsKQotewotICAgIHN0YXRpYyBDbGFzcyB0cmFuc2Zvcm1MYXll
ckNsYXNzID0gTlNDbGFzc0Zyb21TdHJpbmcoQCJDQVRyYW5zZm9ybUxheWVyIik7Ci0gICAgQ0FM
YXllciAqbmV3TGF5ZXIgPSBuaWw7Ci0gICAgaWYgKFtsYXllciBpc0tpbmRPZkNsYXNzOnRyYW5z
Zm9ybUxheWVyQ2xhc3NdKQotICAgICAgICBuZXdMYXllciA9IFt0cmFuc2Zvcm1MYXllckNsYXNz
IGxheWVyXTsKLSAgICBlbHNlCi0gICAgICAgIG5ld0xheWVyID0gW0NBTGF5ZXIgbGF5ZXJdOwot
Ci0gICAgW25ld0xheWVyIHNldFN0eWxlOltOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmpl
Y3Q6bnVsbEFjdGlvbnNEaWN0aW9uYXJ5KCkgZm9yS2V5OkAiYWN0aW9ucyJdXTsKLSAgICAKLSAg
ICBbbmV3TGF5ZXIgc2V0UG9zaXRpb246W2xheWVyIHBvc2l0aW9uXV07Ci0gICAgW25ld0xheWVy
IHNldEJvdW5kczpbbGF5ZXIgYm91bmRzXV07Ci0gICAgW25ld0xheWVyIHNldEFuY2hvclBvaW50
OltsYXllciBhbmNob3JQb2ludF1dOwotI2lmIEhBVkVfTU9ERVJOX1FVQVJUWkNPUkUKLSAgICBb
bmV3TGF5ZXIgc2V0QW5jaG9yUG9pbnRaOltsYXllciBhbmNob3JQb2ludFpdXTsKLSNlbmRpZgot
ICAgIFtuZXdMYXllciBzZXRUcmFuc2Zvcm06W2xheWVyIHRyYW5zZm9ybV1dOwotICAgIFtuZXdM
YXllciBzZXRTdWJsYXllclRyYW5zZm9ybTpbbGF5ZXIgc3VibGF5ZXJUcmFuc2Zvcm1dXTsKLSAg
ICBbbmV3TGF5ZXIgc2V0Q29udGVudHM6W2xheWVyIGNvbnRlbnRzXV07Ci0gICAgW25ld0xheWVy
IHNldE1hc2tzVG9Cb3VuZHM6W2xheWVyIG1hc2tzVG9Cb3VuZHNdXTsKLSAgICBbbmV3TGF5ZXIg
c2V0RG91YmxlU2lkZWQ6W2xheWVyIGlzRG91YmxlU2lkZWRdXTsKLSAgICBbbmV3TGF5ZXIgc2V0
T3BhcXVlOltsYXllciBpc09wYXF1ZV1dOwotICAgIFtuZXdMYXllciBzZXRCYWNrZ3JvdW5kQ29s
b3I6W2xheWVyIGJhY2tncm91bmRDb2xvcl1dOwotCi0gICAgaWYgKGNsb25lTGV2ZWwgPT0gSW50
ZXJtZWRpYXRlQ2xvbmVMZXZlbCkgewotICAgICAgICBbbmV3TGF5ZXIgc2V0T3BhY2l0eTpbbGF5
ZXIgb3BhY2l0eV1dOwotICAgICAgICBtb3ZlT3JDb3B5QW5pbWF0aW9uc0ZvclByb3BlcnR5KENv
cHksIEFuaW1hdGVkUHJvcGVydHlXZWJraXRUcmFuc2Zvcm0sIGxheWVyLCBuZXdMYXllcik7Ci0g
ICAgICAgIG1vdmVPckNvcHlBbmltYXRpb25zRm9yUHJvcGVydHkoQ29weSwgQW5pbWF0ZWRQcm9w
ZXJ0eU9wYWNpdHksIGxheWVyLCBuZXdMYXllcik7Ci0gICAgfQotICAgIAotICAgIGlmIChzaG93
RGVidWdCb3JkZXJzKCkpIHsKLSAgICAgICAgc2V0TGF5ZXJCb3JkZXJDb2xvcihuZXdMYXllciwg
Q29sb3IoMjU1LCAxMjIsIDI1MSkpOwotICAgICAgICBbbmV3TGF5ZXIgc2V0Qm9yZGVyV2lkdGg6
Ml07Ci0gICAgfQotICAgIAotICAgIHJldHVybiBuZXdMYXllcjsKLX0KLQotdm9pZCBHcmFwaGlj
c0xheWVyTWFjOjpzZXRPcGFjaXR5SW50ZXJuYWwoZmxvYXQgYWNjdW11bGF0ZWRPcGFjaXR5KQot
ewotICAgIExheWVyTWFwKiBsYXllckNsb25lTWFwID0gMDsKLSAgICAKLSAgICBpZiAocHJlc2Vy
dmVzM0QoKSkgewotICAgICAgICBbbV9sYXllci5nZXQoKSBzZXRPcGFjaXR5OmFjY3VtdWxhdGVk
T3BhY2l0eV07Ci0gICAgICAgIGxheWVyQ2xvbmVNYXAgPSBtX2xheWVyQ2xvbmVzLmdldCgpOwot
ICAgIH0gZWxzZSB7Ci0gICAgICAgIFtwcmltYXJ5TGF5ZXIoKSBzZXRPcGFjaXR5OmFjY3VtdWxh
dGVkT3BhY2l0eV07Ci0gICAgICAgIGxheWVyQ2xvbmVNYXAgPSBwcmltYXJ5TGF5ZXJDbG9uZXMo
KTsKLSAgICB9Ci0KLSAgICBpZiAobGF5ZXJDbG9uZU1hcCkgewotICAgICAgICBMYXllck1hcDo6
Y29uc3RfaXRlcmF0b3IgZW5kID0gbGF5ZXJDbG9uZU1hcC0+ZW5kKCk7Ci0gICAgICAgIGZvciAo
TGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbGF5ZXJDbG9uZU1hcC0+YmVnaW4oKTsgaXQg
IT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICBpZiAobV9yZXBsaWNhTGF5ZXIgJiYgaXNSZXBs
aWNhdGVkUm9vdENsb25lKGl0LT5maXJzdCkpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0g
ICAgICAgICAgICBDQUxheWVyICpjdXJyTGF5ZXIgPSBpdC0+c2Vjb25kLmdldCgpOwotICAgICAg
ICAgICAgW2N1cnJMYXllciBzZXRPcGFjaXR5Om1fb3BhY2l0eV07Ci0gICAgICAgIH0KLSAgICB9
Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllck1hYzo6dXBkYXRlT3BhY2l0eU9uTGF5ZXIoKQotewot
I2lmICFIQVZFX01PREVSTl9RVUFSVFpDT1JFCi0gICAgLy8gRGlzdHJpYnV0ZSBvcGFjaXR5IGVp
dGhlciB0byBvdXIgb3duIGxheWVyIG9yIHRvIG91ciBjaGlsZHJlbi4gV2UgcGFzcyBpbiB0aGUg
Ci0gICAgLy8gY29udHJpYnV0aW9uIGZyb20gb3VyIHBhcmVudChzKS4KLSAgICBkaXN0cmlidXRl
T3BhY2l0eShwYXJlbnQoKSA/IHBhcmVudCgpLT5hY2N1bXVsYXRlZE9wYWNpdHkoKSA6IDEpOwot
I2Vsc2UKLSAgICBbcHJpbWFyeUxheWVyKCkgc2V0T3BhY2l0eTptX29wYWNpdHldOwotCi0gICAg
aWYgKExheWVyTWFwKiBsYXllckNsb25lTWFwID0gcHJpbWFyeUxheWVyQ2xvbmVzKCkpIHsKLSAg
ICAgICAgTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGxheWVyQ2xvbmVNYXAtPmVuZCgp
OwotICAgICAgICBmb3IgKExheWVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGxheWVyQ2xvbmVN
YXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICAgICAgaWYgKG1fcmVwbGlj
YUxheWVyICYmIGlzUmVwbGljYXRlZFJvb3RDbG9uZShpdC0+Zmlyc3QpKQotICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICBDQUxheWVyICpjdXJyTGF5ZXIgPSBpdC0+c2Vj
b25kLmdldCgpOwotICAgICAgICAgICAgW2N1cnJMYXllciBzZXRPcGFjaXR5Om1fb3BhY2l0eV07
Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgfQotI2VuZGlmCi19Ci0KLXZvaWQgR3JhcGhpY3NM
YXllck1hYzo6bm90ZVN1YmxheWVyc0NoYW5nZWQoKQotewotICAgIG5vdGVMYXllclByb3BlcnR5
Q2hhbmdlZChDaGlsZHJlbkNoYW5nZWQpOwotICAgIHByb3BhZ2F0ZUxheWVyQ2hhbmdlVG9SZXBs
aWNhcygpOwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJNYWM6Om5vdGVMYXllclByb3BlcnR5Q2hh
bmdlZChMYXllckNoYW5nZUZsYWdzIGZsYWdzKQotewotICAgIGlmICghbV91bmNvbW1pdHRlZENo
YW5nZXMgJiYgbV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT5ub3RpZnlTeW5jUmVxdWlyZWQo
dGhpcyk7Ci0KLSAgICBtX3VuY29tbWl0dGVkQ2hhbmdlcyB8PSBmbGFnczsKLX0KLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5H
KQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViTGF5ZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJMYXllci5oCShyZXZpc2lv
biA3MzI5MykKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTM0LDE0ICszNCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBj
bGFzcyBHcmFwaGljc0xheWVyOwogfQogCi0vLyBDYXRlZ29yeSBpbXBsZW1lbnRlZCBieSBXZWJM
YXllciBhbmQgV2ViVGlsZWRMYXllci4KLUBpbnRlcmZhY2UgQ0FMYXllcihXZWJMYXllckFkZGl0
aW9ucykKLQotLSAodm9pZClzZXRMYXllck93bmVyOihXZWJDb3JlOjpHcmFwaGljc0xheWVyKils
YXllcjsKLS0gKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKWxheWVyT3duZXI7Ci0KLUBlbmQKLQog
I2lmIGRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkKIEBpbnRlcmZhY2UgQ0FMYXllcihXZWJM
YXllckludGVybmFsKQogLSAoQ0dBZmZpbmVUcmFuc2Zvcm0pY29udGVudHNUcmFuc2Zvcm07CkBA
IC01MSw3ICs0Myw2IEBAIEBpbnRlcmZhY2UgQ0FMYXllcihXZWJMYXllckludGVybmFsKQogCiBA
aW50ZXJmYWNlIFdlYkxheWVyIDogQ0FMYXllciAKIHsKLSAgICBXZWJDb3JlOjpHcmFwaGljc0xh
eWVyKiBtX2xheWVyT3duZXI7CiB9CiBAZW5kCiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL1dlYkxheWVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL1dlYkxheWVyLm1tCShyZXZpc2lvbiA3MzI5MykKKysrIFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw4
IEBACiAjaW1wb3J0ICJXZWJMYXllci5oIgogCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHQuaCIK
LSNpbXBvcnQgIkdyYXBoaWNzTGF5ZXIuaCIKKyNpbXBvcnQgIkdyYXBoaWNzTGF5ZXJDQS5oIgor
I2ltcG9ydCAiUGxhdGZvcm1DQUxheWVyLmgiCiAjaW1wb3J0IDxvYmpjL29iamMtcnVudGltZS5o
PgogI2ltcG9ydCA8UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+CiAjaW1wb3J0IDx3dGYvVW51c2Vk
UGFyYW0uaD4KQEAgLTE0Niw1OCArMTQ3LDM5IEBAIC0gKGlkPENBQWN0aW9uPilhY3Rpb25Gb3JL
ZXk6KE5TU3RyaW5nICoKICAgICByZXR1cm4gbmlsOwogfQogCi0vLyBJbXBsZW1lbnQgdGhpcyBz
byBwcmVzZW50YXRpb25MYXllciBjYW4gZ2V0IG91ciBjdXN0b20gYXR0cmlidXRlcwotLSAoaWQp
aW5pdFdpdGhMYXllcjooaWQpbGF5ZXIKLXsKLSAgICBpZiAoKHNlbGYgPSBbc3VwZXIgaW5pdFdp
dGhMYXllcjpsYXllcl0pKQotICAgICAgICBtX2xheWVyT3duZXIgPSBbKFdlYkxheWVyKilsYXll
ciBsYXllck93bmVyXTsKLQotICAgIHJldHVybiBzZWxmOwotfQotCiAtICh2b2lkKXNldE5lZWRz
RGlzcGxheQogewotICAgIGlmIChtX2xheWVyT3duZXIgJiYgbV9sYXllck93bmVyLT5jbGllbnQo
KSAmJiBtX2xheWVyT3duZXItPmRyYXdzQ29udGVudCgpKQorICAgIFBsYXRmb3JtQ0FMYXllciog
bGF5ZXIgPSBQbGF0Zm9ybUNBTGF5ZXI6OnBsYXRmb3JtQ0FMYXllcihzZWxmKTsKKyAgICBpZiAo
bGF5ZXIgJiYgbGF5ZXItPm93bmVyKCkgJiYgbGF5ZXItPm93bmVyKCktPmNsaWVudCgpICYmIGxh
eWVyLT5vd25lcigpLT5kcmF3c0NvbnRlbnQoKSkKICAgICAgICAgW3N1cGVyIHNldE5lZWRzRGlz
cGxheV07CiB9CiAKIC0gKHZvaWQpc2V0TmVlZHNEaXNwbGF5SW5SZWN0OihDR1JlY3QpZGlydHlS
ZWN0CiB7Ci0gICAgc2V0TGF5ZXJOZWVkc0Rpc3BsYXlJblJlY3Qoc2VsZiwgbV9sYXllck93bmVy
LCBkaXJ0eVJlY3QpOworICAgIFBsYXRmb3JtQ0FMYXllciogbGF5ZXIgPSBQbGF0Zm9ybUNBTGF5
ZXI6OnBsYXRmb3JtQ0FMYXllcihzZWxmKTsKKyAgICBpZiAobGF5ZXIpCisgICAgICAgIHNldExh
eWVyTmVlZHNEaXNwbGF5SW5SZWN0KHNlbGYsIGxheWVyLT5vd25lcigpLCBkaXJ0eVJlY3QpOwog
fQogCiAtICh2b2lkKWRpc3BsYXkKIHsKICAgICBbc3VwZXIgZGlzcGxheV07Ci0gICAgaWYgKG1f
bGF5ZXJPd25lcikKLSAgICAgICAgbV9sYXllck93bmVyLT5kaWREaXNwbGF5KHNlbGYpOworICAg
IFBsYXRmb3JtQ0FMYXllciogbGF5ZXIgPSBQbGF0Zm9ybUNBTGF5ZXI6OnBsYXRmb3JtQ0FMYXll
cihzZWxmKTsKKyAgICBpZiAobGF5ZXIgJiYgbGF5ZXItPm93bmVyKCkpCisgICAgICAgIGxheWVy
LT5vd25lcigpLT5kaWREaXNwbGF5KHNlbGYpOwogfQogCiAtICh2b2lkKWRyYXdJbkNvbnRleHQ6
KENHQ29udGV4dFJlZiljb250ZXh0CiB7Ci0gICAgZHJhd0xheWVyQ29udGVudHMoY29udGV4dCwg
c2VsZiwgbV9sYXllck93bmVyKTsKKyAgICBQbGF0Zm9ybUNBTGF5ZXIqIGxheWVyID0gUGxhdGZv
cm1DQUxheWVyOjpwbGF0Zm9ybUNBTGF5ZXIoc2VsZik7CisgICAgaWYgKGxheWVyKQorICAgICAg
ICBkcmF3TGF5ZXJDb250ZW50cyhjb250ZXh0LCBzZWxmLCBsYXllci0+b3duZXIoKSk7CiB9CiAK
IEBlbmQgLy8gaW1wbGVtZW50YXRpb24gV2ViTGF5ZXIKIAogI3ByYWdtYSBtYXJrIC0KIAotQGlt
cGxlbWVudGF0aW9uIFdlYkxheWVyKFdlYkxheWVyQWRkaXRpb25zKQotCi0tICh2b2lkKXNldExh
eWVyT3duZXI6KEdyYXBoaWNzTGF5ZXIqKWFMYXllcgotewotICAgIG1fbGF5ZXJPd25lciA9IGFM
YXllcjsKLX0KLQotLSAoR3JhcGhpY3NMYXllciopbGF5ZXJPd25lcgotewotICAgIHJldHVybiBt
X2xheWVyT3duZXI7Ci19Ci0KLUBlbmQKLQotI3ByYWdtYSBtYXJrIC0KLQogI2lmbmRlZiBOREVC
VUcKIAogQGltcGxlbWVudGF0aW9uIENBTGF5ZXIoRXh0ZW5kZWREZXNjcmlwdGlvbikKSW5kZXg6
IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYlRpbGVkTGF5ZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJUaWxlZExheWVyLmgJKHJldmlz
aW9uIDczMjkzKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViVGlsZWRMYXll
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw2IEBACiAKIEBpbnRlcmZhY2UgV2ViVGls
ZWRMYXllciA6IENBVGlsZWRMYXllciAKIHsKLSAgICBXZWJDb3JlOjpHcmFwaGljc0xheWVyKiBt
X2xheWVyT3duZXI7CiB9CiAKIC8vIGltcGxlbWVudHMgV2ViTGF5ZXJBZGRpdGlvbnMKSW5kZXg6
IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYlRpbGVkTGF5ZXIubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViVGlsZWRMYXllci5tbQkocmV2
aXNpb24gNzMyOTMpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJUaWxlZExh
eWVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw4IEBACiAjaW1wb3J0ICJXZWJUaWxl
ZExheWVyLmgiCiAKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dC5oIgotI2ltcG9ydCAiR3JhcGhp
Y3NMYXllci5oIgorI2ltcG9ydCAiR3JhcGhpY3NMYXllckNBLmgiCisjaW1wb3J0ICJQbGF0Zm9y
bUNBTGF5ZXIuaCIKICNpbXBvcnQgPHd0Zi9VbnVzZWRQYXJhbS5oPgogCiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKQEAgLTU2LDU0ICs1NywzNSBAQCAtIChpZDxDQUFjdGlvbj4pYWN0aW9uRm9y
S2V5OihOU1N0cmluZyAqCiAgICAgcmV0dXJuIG5pbDsKIH0KIAotLy8gSW1wbGVtZW50IHRoaXMg
c28gcHJlc2VudGF0aW9uTGF5ZXIgY2FuIGdldCBvdXIgY3VzdG9tIGF0dHJpYnV0ZXMKLS0gKGlk
KWluaXRXaXRoTGF5ZXI6KGlkKWxheWVyCi17Ci0gICAgaWYgKChzZWxmID0gW3N1cGVyIGluaXRX
aXRoTGF5ZXI6bGF5ZXJdKSkKLSAgICAgICAgbV9sYXllck93bmVyID0gWyhXZWJMYXllciopbGF5
ZXIgbGF5ZXJPd25lcl07Ci0KLSAgICByZXR1cm4gc2VsZjsKLX0KLQogLSAodm9pZClzZXROZWVk
c0Rpc3BsYXkKIHsKLSAgICBpZiAobV9sYXllck93bmVyICYmIG1fbGF5ZXJPd25lci0+Y2xpZW50
KCkgJiYgbV9sYXllck93bmVyLT5kcmF3c0NvbnRlbnQoKSkKKyAgICBQbGF0Zm9ybUNBTGF5ZXIq
IGxheWVyID0gUGxhdGZvcm1DQUxheWVyOjpwbGF0Zm9ybUNBTGF5ZXIoc2VsZik7CisgICAgaWYg
KGxheWVyICYmIGxheWVyLT5vd25lcigpICYmIGxheWVyLT5vd25lcigpLT5jbGllbnQoKSAmJiBs
YXllci0+b3duZXIoKS0+ZHJhd3NDb250ZW50KCkpCiAgICAgICAgIFtzdXBlciBzZXROZWVkc0Rp
c3BsYXldOwogfQogCiAtICh2b2lkKXNldE5lZWRzRGlzcGxheUluUmVjdDooQ0dSZWN0KWRpcnR5
UmVjdAogewotICAgIHNldExheWVyTmVlZHNEaXNwbGF5SW5SZWN0KHNlbGYsIG1fbGF5ZXJPd25l
ciwgZGlydHlSZWN0KTsKKyAgICBQbGF0Zm9ybUNBTGF5ZXIqIGxheWVyID0gUGxhdGZvcm1DQUxh
eWVyOjpwbGF0Zm9ybUNBTGF5ZXIoc2VsZik7CisgICAgaWYgKGxheWVyKQorICAgICAgICBzZXRM
YXllck5lZWRzRGlzcGxheUluUmVjdChzZWxmLCBsYXllci0+b3duZXIoKSwgZGlydHlSZWN0KTsK
IH0KIAogLSAodm9pZClkaXNwbGF5CiB7CiAgICAgW3N1cGVyIGRpc3BsYXldOwotICAgIGlmICht
X2xheWVyT3duZXIpCi0gICAgICAgIG1fbGF5ZXJPd25lci0+ZGlkRGlzcGxheShzZWxmKTsKKyAg
ICBQbGF0Zm9ybUNBTGF5ZXIqIGxheWVyID0gUGxhdGZvcm1DQUxheWVyOjpwbGF0Zm9ybUNBTGF5
ZXIoc2VsZik7CisgICAgaWYgKGxheWVyICYmIGxheWVyLT5vd25lcigpKQorICAgICAgICBsYXll
ci0+b3duZXIoKS0+ZGlkRGlzcGxheShzZWxmKTsKIH0KIAogLSAodm9pZClkcmF3SW5Db250ZXh0
OihDR0NvbnRleHRSZWYpY29udGV4dAogewotICAgIGRyYXdMYXllckNvbnRlbnRzKGNvbnRleHQs
IHNlbGYsIG1fbGF5ZXJPd25lcik7CisgICAgUGxhdGZvcm1DQUxheWVyKiBsYXllciA9IFBsYXRm
b3JtQ0FMYXllcjo6cGxhdGZvcm1DQUxheWVyKHNlbGYpOworICAgIGlmIChsYXllcikKKyAgICAg
ICAgZHJhd0xheWVyQ29udGVudHMoY29udGV4dCwgc2VsZiwgbGF5ZXItPm93bmVyKCkpOwogfQog
CiBAZW5kIC8vIGltcGxlbWVudGF0aW9uIFdlYlRpbGVkTGF5ZXIKIAotI3ByYWdtYSBtYXJrIC0K
LQotQGltcGxlbWVudGF0aW9uIFdlYlRpbGVkTGF5ZXIoTGF5ZXJNYWNBZGRpdGlvbnMpCi0KLS0g
KHZvaWQpc2V0TGF5ZXJPd25lcjooR3JhcGhpY3NMYXllciopYUxheWVyCi17Ci0gICAgbV9sYXll
ck93bmVyID0gYUxheWVyOwotfQotCi0tIChHcmFwaGljc0xheWVyKilsYXllck93bmVyCi17Ci0g
ICAgcmV0dXJuIG1fbGF5ZXJPd25lcjsKLX0KLQotQGVuZAotCiAjZW5kaWYgLy8gVVNFKEFDQ0VM
RVJBVEVEX0NPTVBPU0lUSU5HKQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9H
cmFwaGljc0xheWVyUXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvcXQvR3JhcGhpY3NMYXllclF0LmNwcAkocmV2aXNpb24gNzMyOTMpCisrKyBXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzTGF5ZXJRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTY4Niw3ICs2ODYsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJRdEltcGw6OmZsdXNoQ2hhbmdlcyhi
CiAgICAgICAgIC8vIHRyeSB0byBzbmF0Y2ggdGhhdCBvd25lcnNoaXAuCiAgICAgICAgIGlmICgh
bV9sYXllci0+cGFyZW50KCkgJiYgIXBhcmVudEl0ZW0oKSkKICAgICAgICAgICAgIHNldFBhcmVu
dEl0ZW0oMCk7Ci0gICAgICAgIGVsc2UgaWYgKG1fbGF5ZXIgJiYgbV9sYXllci0+cGFyZW50KCkg
JiYgbV9sYXllci0+cGFyZW50KCktPm5hdGl2ZUxheWVyKCkgIT0gcGFyZW50SXRlbSgpKQorICAg
ICAgICBlbHNlIGlmIChtX2xheWVyICYmIG1fbGF5ZXItPnBhcmVudCgpICYmIG1fbGF5ZXItPnBh
cmVudCgpLT5wbGF0Zm9ybUxheWVyKCkgIT0gcGFyZW50SXRlbSgpKQogICAgICAgICAgICAgc2V0
UGFyZW50SXRlbShtX2xheWVyLT5wYXJlbnQoKS0+cGxhdGZvcm1MYXllcigpKTsKICAgICB9CiAK
QEAgLTEzMTgsMTMgKzEzMTgsNiBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJRdDo6c3luY0NvbXBvc2l0
aW5nU3RhCiB9CiAKIC8qIFxyZWltcCAoR3JhcGhpY3NMYXllci5oKQotICovCi1OYXRpdmVMYXll
ciBHcmFwaGljc0xheWVyUXQ6Om5hdGl2ZUxheWVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9p
bXBsLmdldCgpOwotfQotCi0vKiBccmVpbXAgKEdyYXBoaWNzTGF5ZXIuaCkKICovCiBQbGF0Zm9y
bUxheWVyKiBHcmFwaGljc0xheWVyUXQ6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAogewpJbmRleDog
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0xheWVyUXQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzTGF5ZXJRdC5oCShyZXZp
c2lvbiA3MzI5MykKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NMYXll
clF0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDYgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgfkdyYXBoaWNzTGF5ZXJRdCgpOwogCiAgICAgLy8gcmVpbXBzIGZyb20gR3JhcGhpY3NMYXll
ci5oCi0gICAgdmlydHVhbCBOYXRpdmVMYXllciBuYXRpdmVMYXllcigpIGNvbnN0OwogICAgIHZp
cnR1YWwgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0OwogICAgIHZpcnR1YWwg
dm9pZCBzZXROZWVkc0Rpc3BsYXkoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNEaXNwbGF5
SW5SZWN0KGNvbnN0IEZsb2F0UmVjdCYpOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vR3JhcGhpY3NMYXllckNBQ0YuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzTGF5ZXJDQUNGLmNwcAkocmV2aXNpb24gNzMyOTMpCisr
KyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0xheWVyQ0FDRi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE1MywxMSArMTUzLDYgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0FDRjo6
c2V0TmFtZShjb25zdCBTdAogICAgIG1fbGF5ZXItPnNldE5hbWUobG9uZ05hbWUpOwogfQogCi1O
YXRpdmVMYXllciBHcmFwaGljc0xheWVyQ0FDRjo6bmF0aXZlTGF5ZXIoKSBjb25zdAotewotICAg
IHJldHVybiBtX2xheWVyLmdldCgpOwotfQotCiBib29sIEdyYXBoaWNzTGF5ZXJDQUNGOjpzZXRD
aGlsZHJlbihjb25zdCBWZWN0b3I8R3JhcGhpY3NMYXllcio+JiBjaGlsZHJlbikKIHsKICAgICBi
b29sIGNoaWxkcmVuQ2hhbmdlZCA9IEdyYXBoaWNzTGF5ZXI6OnNldENoaWxkcmVuKGNoaWxkcmVu
KTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzTGF5ZXJDQUNG
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NM
YXllckNBQ0YuaAkocmV2aXNpb24gNzMyOTMpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9HcmFwaGljc0xheWVyQ0FDRi5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw5ICs0NCw2IEBA
IHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBzZXROYW1lKGNvbnN0IFN0cmluZyYgaW5OYW1l
KTsKIAotICAgIC8vIGZvciBob3N0aW5nIHRoaXMgR3JhcGhpY3NMYXllciBpbiBhIG5hdGl2ZSBs
YXllciBoaWVyYXJjaHkKLSAgICB2aXJ0dWFsIE5hdGl2ZUxheWVyIG5hdGl2ZUxheWVyKCkgY29u
c3Q7Ci0KICAgICB2aXJ0dWFsIGJvb2wgc2V0Q2hpbGRyZW4oY29uc3QgVmVjdG9yPEdyYXBoaWNz
TGF5ZXIqPiYpOwogICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZChHcmFwaGljc0xheWVyICpsYXll
cik7CiAgICAgdmlydHVhbCB2b2lkIGFkZENoaWxkQXRJbmRleChHcmFwaGljc0xheWVyICpsYXll
ciwgaW50IGluZGV4KTsKSW5kZXg6IFdlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiA3MzMxOCkKKysrIFdlYktpdC9tYWMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTAtMTItMDMgIENocmlz
IE1hcnJpbiAgPGNtYXJyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFNoYXJlIGNvZGUgYmV0d2VlbiBNYWMgKENBKSBhbmQgV2lu
ZG93cyAoQ0FDRikgR3JhcGhpY3NMYXllciBpbXBsZW1lbnRhdGlvbnMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ5Mzg4CisKKyAgICAgICAgR290IHJp
ZCBvZiBHcmFwaGljc0xheWVyOjpuYXRpdmVMYXllcigpIGNhbGwsIHJlcGxhY2luZyBpdCB3aXRo
IAorICAgICAgICBHcmFwaGljc0xheWVyOjpwbGF0Zm9ybUxheWVyKCkuCisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW06CisgICAgICAgIChXZWJDaHJvbWVDbGll
bnQ6OmF0dGFjaFJvb3RHcmFwaGljc0xheWVyKToKKwogMjAxMC0xMi0wMyAgU2FtIFdlaW5pZyAg
PHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE1hY2llaiBTdGFjaG93aWFr
LgpJbmRleDogV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0J
KHJldmlzaW9uIDczMjkzKQorKysgV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTc3Myw3ICs3NzMsNyBAQCB2b2lkIFdlYkNocm9t
ZUNsaWVudDo6YXR0YWNoUm9vdEdyYXBoaWNzCiAKICAgICBXZWJIVE1MVmlldyAqd2ViSFRNTFZp
ZXcgPSAoV2ViSFRNTFZpZXcgKilkb2N1bWVudFZpZXc7CiAgICAgaWYgKGdyYXBoaWNzTGF5ZXIp
Ci0gICAgICAgIFt3ZWJIVE1MVmlldyBhdHRhY2hSb290TGF5ZXI6Z3JhcGhpY3NMYXllci0+bmF0
aXZlTGF5ZXIoKV07CisgICAgICAgIFt3ZWJIVE1MVmlldyBhdHRhY2hSb290TGF5ZXI6Z3JhcGhp
Y3NMYXllci0+cGxhdGZvcm1MYXllcigpXTsKICAgICBlbHNlCiAgICAgICAgIFt3ZWJIVE1MVmll
dyBkZXRhY2hSb290TGF5ZXJdOwogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75842</attachid>
            <date>2010-12-07 14:09:27 -0800</date>
            <delta_ts>2010-12-07 14:29:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-49388-20101207140926.patch</filename>
            <type>text/plain</type>
            <size>16552</size>
            <attacher name="Chris Marrin">cmarrin</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDczNDU4KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMTItMDcgIENocmlzIE1h
cnJpbiAgPGNtYXJyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFNoYXJlIGNvZGUgYmV0d2VlbiBNYWMgKENBKSBhbmQgV2luZG93
cyAoQ0FDRikgR3JhcGhpY3NMYXllciBpbXBsZW1lbnRhdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ5Mzg4CisKKyAgICAgICAgQWRkZWQgYSBX
VEZfUExBVEZPUk1fQ0EgZmxhZy4gU2V0IHdoZW4gcGxhdGZvcm0gaXMgTUFDIG9yIElPUyBvciBX
SU5ET1dTCisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6CisKIDIwMTAtMTItMDcgIEtlbm5ldGgg
UnVzc2VsbCAgPGtickBnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhdmlkIExl
dmluLgpJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
SmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgJKHJldmlzaW9uIDczNDAwKQorKysgSmF2YVNj
cmlwdENvcmUvd3RmL1BsYXRmb3JtLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzMCw2ICs1MzAsOSBA
QAogI2lmIFBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKElPUykKICNkZWZpbmUgV1RGX1BMQVRG
T1JNX0NJIDEKICNlbmRpZgorI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oSU9TKSB8fCBQ
TEFURk9STShXSU4pCisjZGVmaW5lIFdURl9QTEFURk9STV9DQSAxCisjZW5kaWYKIAogLyogUExB
VEZPUk0oU0tJQSkgZm9yIFdpbi9MaW51eCwgQ0cvQ0kgZm9yIE1hYyAqLwogI2lmIFBMQVRGT1JN
KENIUk9NSVVNKQpJbmRleDogV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDczNDU4KQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwzOCBAQAorMjAxMC0xMi0wNyAgQ2hyaXMgTWFycmluICA8Y21h
cnJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgU2hhcmUgY29kZSBiZXR3ZWVuIE1hYyAoQ0EpIGFuZCBXaW5kb3dzIChDQUNGKSBH
cmFwaGljc0xheWVyIGltcGxlbWVudGF0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDkzODgKKworICAgICAgICBBZGRlZCBjb3B5IGNvbnN0cnVj
dG9ycyBhbmQgY2FzdGluZyBvcGVyYXRvcnMgdG8gZ28gYmV0d2VlbiAKKyAgICAgICAgVHJhbnNm
b3JtYXRpb25NYXRyaXggYW5kIENBVHJhbnNmb3JtM0QuIEFsc28gYWRkZWQgYSBjb3B5CisgICAg
ICAgIGNvbnN0cnVjdG9yIHRvIGdvIGZyb20gQ0dBZmZpbmVUcmFuc2Zvcm0gdG8gVHJhbnNmb3Jt
YXRpb25NYXRyaXguCisgICAgICAgIFVzZWQgdGhlc2UgbmV3IG1ldGhvZHMgdG8gY2xlYW4gdXAg
cGxhdGZvcm0gQ0EgY29kZS4gVGhpcyB3aWxsCisgICAgICAgIG1ha2UgaXQgZWFzaWVyIHRvIHBv
cnQgdG8gV2luZG93cy4KKworICAgICAgICBJIGFsc28gZml4ZWQgYSBjb3VwbGUgb2YgYnVpbGQg
aXNzdWVzIGZvdW5kIHdoZW4gdHJ5aW5nIG91dCBhIAorICAgICAgICBXaW5kb3dzIGJ1aWxkLgor
CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0xheWVyQ0E6OmVuc3VyZUNsb25lTGF5ZXJzKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXJDQTo6ZmV0Y2hDbG9uZUxheWVycyk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvbWFjL1BsYXRmb3JtQ0FBbmltYXRpb25NYWMubW06CisgICAgICAgIChQ
bGF0Zm9ybUNBQW5pbWF0aW9uOjpzZXRGcm9tVmFsdWUpOgorICAgICAgICAoUGxhdGZvcm1DQUFu
aW1hdGlvbjo6c2V0VG9WYWx1ZSk6CisgICAgICAgIChQbGF0Zm9ybUNBQW5pbWF0aW9uOjpzZXRW
YWx1ZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9QbGF0Zm9ybUNBTGF5
ZXJNYWMubW06CisgICAgICAgIChQbGF0Zm9ybUNBTGF5ZXI6OnRyYW5zZm9ybSk6CisgICAgICAg
IChQbGF0Zm9ybUNBTGF5ZXI6OnNldFRyYW5zZm9ybSk6CisgICAgICAgIChQbGF0Zm9ybUNBTGF5
ZXI6OnN1YmxheWVyVHJhbnNmb3JtKToKKyAgICAgICAgKFBsYXRmb3JtQ0FMYXllcjo6c2V0U3Vi
bGF5ZXJUcmFuc2Zvcm0pOgorICAgICAgICAoUGxhdGZvcm1DQUxheWVyOjpjb250ZW50c1RyYW5z
Zm9ybSk6CisgICAgICAgIChQbGF0Zm9ybUNBTGF5ZXI6OnNldENvbnRlbnRzVHJhbnNmb3JtKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9UcmFuc2Zvcm1hdGlvbk1hdHJpeENHLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4OjpUcmFuc2Zvcm1hdGlv
bk1hdHJpeCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zv
cm1hdGlvbk1hdHJpeC5oOgorCiAyMDEwLTEyLTA3ICBLZW5uZXRoIFJ1c3NlbGwgIDxrYnJAZ29v
Z2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXZpZCBMZXZpbi4KSW5kZXg6IFdlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA3MzQwMCkKKysr
IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC0xMDA5LDYgKzEwMDksNyBAQAogCQk0OTQ4NEZDQjEwMkNGMjNDMDAxODdERDMgLyogQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0OTQ4NEZCRDEwMkNGMjNDMDAxODdERDMgLyogQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJELmggKi87IH07CiAJCTQ5NDg0RkNEMTAyQ0YyM0MwMDE4N0REMyAvKiBDYW52YXNT
dHlsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
OTQ4NEZCRjEwMkNGMjNDMDAxODdERDMgLyogQ2FudmFzU3R5bGUuY3BwICovOyB9OwogCQk0OTQ4
NEZDRTEwMkNGMjNDMDAxODdERDMgLyogQ2FudmFzU3R5bGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5NDg0RkMwMTAyQ0YyM0MwMDE4N0REMyAvKiBD
YW52YXNTdHlsZS5oICovOyB9OworCQk0OTRCQzQwRDEyQUVERDlFMDA3NDNCRDIgLyogVHJhbnNm
b3JtYXRpb25NYXRyaXhDQS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0OTRCQzQwQzEyQUVERDlFMDA3NDNCRDIgLyogVHJhbnNmb3JtYXRpb25NYXRy
aXhDQS5jcHAgKi87IH07CiAJCTQ5NEJENzk1MEY1NUM4RUUwMDc0NzgyOCAvKiBXZWJLaXRQb2lu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDk0QkQ3
OTMwRjU1QzhFRTAwNzQ3ODI4IC8qIFdlYktpdFBvaW50LmggKi87IH07CiAJCTQ5NEJENzlEMEY1
NUM5NEMwMDc0NzgyOCAvKiBKU1dlYktpdFBvaW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5NEJENzlCMEY1NUM5NEMwMDc0NzgyOCAvKiBKU1dl
YktpdFBvaW50LmNwcCAqLzsgfTsKIAkJNDk0QkQ3OUUwRjU1Qzk0QzAwNzQ3ODI4IC8qIEpTV2Vi
S2l0UG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ5NEJENzlDMEY1NUM5NEMwMDc0NzgyOCAvKiBKU1dlYktpdFBvaW50LmggKi87IH07CkBAIC03
MTQ1LDYgKzcxNDYsNyBAQAogCQk0OTQ4NEZCRTEwMkNGMjNDMDAxODdERDMgLyogQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJELmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQuaWRsOyBwYXRoID0gY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5NDg0RkJGMTAyQ0YyM0MwMDE4N0RE
MyAvKiBDYW52YXNTdHlsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBDYW52YXNTdHlsZS5jcHA7IHBhdGggPSBjYW52YXMvQ2FudmFzU3R5bGUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0OTQ4NEZDMDEwMkNGMjNDMDAxODdERDMgLyogQ2FudmFz
U3R5bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ2FudmFzU3R5bGUuaDsg
cGF0aCA9IGNhbnZhcy9DYW52YXNTdHlsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk0OTRCQzQwQzEyQUVERDlFMDA3NDNCRDIgLyogVHJhbnNmb3JtYXRpb25NYXRyaXhDQS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBUcmFuc2Zvcm1hdGlvbk1hdHJp
eENBLmNwcDsgcGF0aCA9IGNhL1RyYW5zZm9ybWF0aW9uTWF0cml4Q0EuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0OTRCRDc5MzBGNTVDOEVFMDA3NDc4MjggLyogV2ViS2l0UG9p
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViS2l0UG9pbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDk0QkQ3OTQwRjU1QzhFRTAwNzQ3ODI4IC8qIFdl
YktpdFBvaW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJLaXRQb2ludC5pZGw7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5NEJENzlCMEY1NUM5NEMwMDc0NzgyOCAvKiBK
U1dlYktpdFBvaW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
V2ViS2l0UG9pbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTI4MDMsNiAr
MTI4MDUsNyBAQAogCQkJCTQ5OUIzRUQ0MTI4Q0QzMTQwMEU3MjZDMiAvKiBHcmFwaGljc0xheWVy
Q0EuY3BwICovLAogCQkJCTQ5OUIzRUQ1MTI4Q0QzMTQwMEU3MjZDMiAvKiBHcmFwaGljc0xheWVy
Q0EuaCAqLywKIAkJCQk0OTlCM0VDMzEyOENDQzQ3MDBFNzI2QzIgLyogUGxhdGZvcm1DQUxheWVy
LmggKi8sCisJCQkJNDk0QkM0MEMxMkFFREQ5RTAwNzQzQkQyIC8qIFRyYW5zZm9ybWF0aW9uTWF0
cml4Q0EuY3BwICovLAogCQkJKTsKIAkJCW5hbWUgPSBjYTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7CkBAIC0yNDA5NCw2ICsyNDA5Nyw3IEBACiAJCQkJNDk5QjNFRDYxMjhDRDMxNDAwRTcy
NkMyIC8qIEdyYXBoaWNzTGF5ZXJDQS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OTU4NzgyMTEy
QTU3RERGMDA3MjM4QUMgLyogUGxhdGZvcm1DQUFuaW1hdGlvbk1hYy5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTQ5NTg3ODIyMTJBNTdEREYwMDcyMzhBQyAvKiBQbGF0Zm9ybUNBTGF5ZXJNYWMubW0g
aW4gU291cmNlcyAqLywKKwkJCQk0OTRCQzQwRDEyQUVERDlFMDA3NDNCRDIgLyogVHJhbnNmb3Jt
YXRpb25NYXRyaXhDQS5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVw
bG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAJKHJldmlzaW9uIDczNDAwKQor
KysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MCw5ICs0MCw3IEBACiAjaW5jbHVkZSAiVHJhbnNsYXRlVHJhbnNmb3Jt
T3BlcmF0aW9uLmgiCiAjaW5jbHVkZSA8UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+CiAjaW5jbHVk
ZSA8bGltaXRzLmg+Ci0jaW5jbHVkZSA8b2JqYy9vYmpjLWF1dG8uaD4KICNpbmNsdWRlIDx3dGYv
Q3VycmVudFRpbWUuaD4KLSNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwpAQCAt
MTk5Miw4ICsxOTkwLDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUNvbnRlbnRzVHJh
bgogICAgIGlmIChjb250ZW50c09yaWVudGF0aW9uKCkgPT0gQ29tcG9zaXRpbmdDb29yZGluYXRl
c0JvdHRvbVVwKSB7CiAgICAgICAgIENHQWZmaW5lVHJhbnNmb3JtIGNvbnRlbnRzVHJhbnNmb3Jt
ID0gQ0dBZmZpbmVUcmFuc2Zvcm1NYWtlU2NhbGUoMSwgLTEpOwogICAgICAgICBjb250ZW50c1Ry
YW5zZm9ybSA9IENHQWZmaW5lVHJhbnNmb3JtVHJhbnNsYXRlKGNvbnRlbnRzVHJhbnNmb3JtLCAw
LCAtbV9sYXllci0+Ym91bmRzKCkuc2l6ZSgpLmhlaWdodCgpKTsKLSAgICAgICAgVHJhbnNmb3Jt
YXRpb25NYXRyaXggdHJhbnNmb3JtM0QoY29udGVudHNUcmFuc2Zvcm0uYSwgY29udGVudHNUcmFu
c2Zvcm0uYiwgY29udGVudHNUcmFuc2Zvcm0uYywgY29udGVudHNUcmFuc2Zvcm0uZCwgY29udGVu
dHNUcmFuc2Zvcm0udHgsIGNvbnRlbnRzVHJhbnNmb3JtLnR5KTsKLSAgICAgICAgbV9sYXllci0+
c2V0Q29udGVudHNUcmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRyaXgodHJhbnNmb3JtM0QpKTsK
KyAgICAgICAgbV9sYXllci0+c2V0Q29udGVudHNUcmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRy
aXgoY29udGVudHNUcmFuc2Zvcm0pKTsKICAgICB9CiAjZW5kaWYKIH0KQEAgLTIwNDcsOCArMjA0
NCw4IEBAIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBHcmFwaGljc0xheWUKIAogdm9pZCBH
cmFwaGljc0xheWVyQ0E6OmVuc3VyZUNsb25lTGF5ZXJzKENsb25lSUQgY2xvbmVJRCwgUmVmUHRy
PFBsYXRmb3JtQ0FMYXllcj4mIHByaW1hcnlMYXllciwgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4m
IHN0cnVjdHVyYWxMYXllciwgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4mIGNvbnRlbnRzTGF5ZXIs
IENsb25lTGV2ZWwgY2xvbmVMZXZlbCkKIHsKLSAgICBzdHJ1Y3R1cmFsTGF5ZXIgPSBuaWw7Ci0g
ICAgY29udGVudHNMYXllciA9IG5pbDsKKyAgICBzdHJ1Y3R1cmFsTGF5ZXIgPSAwOworICAgIGNv
bnRlbnRzTGF5ZXIgPSAwOwogCiAgICAgaWYgKCFtX2xheWVyQ2xvbmVzKQogICAgICAgICBtX2xh
eWVyQ2xvbmVzID0gbmV3IExheWVyTWFwOwpAQCAtMjExMCw3ICsyMTA3LDcgQEAgUGFzc1JlZlB0
cjxQbGF0Zm9ybUNBTGF5ZXI+IEdyYXBoaWNzTGF5ZQogICAgICAgICAvLyBXZSBhcmUgYSByZXBs
aWNhIGJlaW5nIGFza2VkIGZvciBjbG9uZXMgb2Ygb3VyIGxheWVycy4KICAgICAgICAgUmVmUHRy
PFBsYXRmb3JtQ0FMYXllcj4gcmVwbGljYVJvb3QgPSByZXBsaWNhdGVkTGF5ZXJSb290KHJlcGxp
Y2FTdGF0ZSk7CiAgICAgICAgIGlmICghcmVwbGljYVJvb3QpCi0gICAgICAgICAgICByZXR1cm4g
bmlsOworICAgICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAgICAgaWYgKHN0cnVjdHVyYWxMYXll
cikgewogICAgICAgICAgICAgc3RydWN0dXJhbExheWVyLT5pbnNlcnRTdWJsYXllcihyZXBsaWNh
Um9vdC5nZXQoKSwgMCk7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9Q
bGF0Zm9ybUNBQW5pbWF0aW9uTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvbWFjL1BsYXRmb3JtQ0FBbmltYXRpb25NYWMubW0JKHJldmlzaW9uIDczNDAw
KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvUGxhdGZvcm1DQUFuaW1hdGlv
bk1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNDIsMjYgKzQyLDYgQEAgdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAvLyBUaGlzIHZhbHVlIG11c3QgYmUgdGhlIHNhbWUgYXMgaW4gUGxhdGZvcm1D
QUxheWVyTWFjLm1tCiBzdGF0aWMgY29uc3QgTlNTdHJpbmcqIFdLTm9uWmVyb0JlZ2luVGltZUZs
YWcgPSBAIldLUGxhdGZvcm1DQUFuaW1hdGlvbk5vblplcm9CZWdpblRpbWVGbGFnIjsKIAotc3Rh
dGljIGlubGluZSB2b2lkIGNvcHlUcmFuc2Zvcm0oQ0FUcmFuc2Zvcm0zRCYgdG9UM0QsIGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0KQotewotICAgIHRvVDNELm0xMSA9IG5hcnJvd1ByZWNp
c2lvblRvRmxvYXQodC5tMTEoKSk7Ci0gICAgdG9UM0QubTEyID0gbmFycm93UHJlY2lzaW9uVG9G
bG9hdCh0Lm0xMigpKTsKLSAgICB0b1QzRC5tMTMgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHQu
bTEzKCkpOwotICAgIHRvVDNELm0xNCA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodC5tMTQoKSk7
Ci0gICAgdG9UM0QubTIxID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCh0Lm0yMSgpKTsKLSAgICB0
b1QzRC5tMjIgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHQubTIyKCkpOwotICAgIHRvVDNELm0y
MyA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodC5tMjMoKSk7Ci0gICAgdG9UM0QubTI0ID0gbmFy
cm93UHJlY2lzaW9uVG9GbG9hdCh0Lm0yNCgpKTsKLSAgICB0b1QzRC5tMzEgPSBuYXJyb3dQcmVj
aXNpb25Ub0Zsb2F0KHQubTMxKCkpOwotICAgIHRvVDNELm0zMiA9IG5hcnJvd1ByZWNpc2lvblRv
RmxvYXQodC5tMzIoKSk7Ci0gICAgdG9UM0QubTMzID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCh0
Lm0zMygpKTsKLSAgICB0b1QzRC5tMzQgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHQubTM0KCkp
OwotICAgIHRvVDNELm00MSA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodC5tNDEoKSk7Ci0gICAg
dG9UM0QubTQyID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCh0Lm00MigpKTsKLSAgICB0b1QzRC5t
NDMgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHQubTQzKCkpOwotICAgIHRvVDNELm00NCA9IG5h
cnJvd1ByZWNpc2lvblRvRmxvYXQodC5tNDQoKSk7Ci19Ci0KIHN0YXRpYyBOU1N0cmluZyogdG9D
QUZpbGxNb2RlVHlwZShQbGF0Zm9ybUNBQW5pbWF0aW9uOjpGaWxsTW9kZVR5cGUgdHlwZSkKIHsK
ICAgICBzd2l0Y2ggKHR5cGUpIHsKQEAgLTM4OSwxMCArMzY5LDggQEAgdm9pZCBQbGF0Zm9ybUNB
QW5pbWF0aW9uOjpzZXRGcm9tVmFsdWUoYwogewogICAgIGlmIChhbmltYXRpb25UeXBlKCkgIT0g
QmFzaWMpCiAgICAgICAgIHJldHVybjsKLQotICAgIENBVHJhbnNmb3JtM0QgY2FUcmFuc2Zvcm07
Ci0gICAgY29weVRyYW5zZm9ybShjYVRyYW5zZm9ybSwgdmFsdWUpOwotICAgIFtzdGF0aWNfY2Fz
dDxDQUJhc2ljQW5pbWF0aW9uKj4obV9hbmltYXRpb24uZ2V0KCkpIHNldEZyb21WYWx1ZTpbTlNW
YWx1ZSB2YWx1ZVdpdGhDQVRyYW5zZm9ybTNEOmNhVHJhbnNmb3JtXV07CisgICAgICAgIAorICAg
IFtzdGF0aWNfY2FzdDxDQUJhc2ljQW5pbWF0aW9uKj4obV9hbmltYXRpb24uZ2V0KCkpIHNldEZy
b21WYWx1ZTpbTlNWYWx1ZSB2YWx1ZVdpdGhDQVRyYW5zZm9ybTNEOnZhbHVlXV07CiB9CiAKIHZv
aWQgUGxhdGZvcm1DQUFuaW1hdGlvbjo6c2V0RnJvbVZhbHVlKGNvbnN0IEZsb2F0UG9pbnQzRCYg
dmFsdWUpCkBAIC00NDMsOSArNDIxLDcgQEAgdm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpzZXRU
b1ZhbHVlKGNvbgogICAgIGlmIChhbmltYXRpb25UeXBlKCkgIT0gQmFzaWMpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIENBVHJhbnNmb3JtM0QgY2FUcmFuc2Zvcm07Ci0gICAgY29weVRyYW5zZm9y
bShjYVRyYW5zZm9ybSwgdmFsdWUpOwotICAgIFtzdGF0aWNfY2FzdDxDQUJhc2ljQW5pbWF0aW9u
Kj4obV9hbmltYXRpb24uZ2V0KCkpIHNldFRvVmFsdWU6W05TVmFsdWUgdmFsdWVXaXRoQ0FUcmFu
c2Zvcm0zRDpjYVRyYW5zZm9ybV1dOworICAgIFtzdGF0aWNfY2FzdDxDQUJhc2ljQW5pbWF0aW9u
Kj4obV9hbmltYXRpb24uZ2V0KCkpIHNldFRvVmFsdWU6W05TVmFsdWUgdmFsdWVXaXRoQ0FUcmFu
c2Zvcm0zRDp2YWx1ZV1dOwogfQogCiB2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb246OnNldFRvVmFs
dWUoY29uc3QgRmxvYXRQb2ludDNEJiB2YWx1ZSkKQEAgLTUwMywxMiArNDc5LDEwIEBAIHZvaWQg
UGxhdGZvcm1DQUFuaW1hdGlvbjo6c2V0VmFsdWVzKGNvbnMKICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAKICAgICBOU011dGFibGVBcnJheSogYXJyYXkgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXld
OwotICAgIENBVHJhbnNmb3JtM0QgY2FUcmFuc2Zvcm07CiAKLSAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHZhbHVlLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGNvcHlUcmFuc2Zvcm0oY2FUcmFu
c2Zvcm0sIHZhbHVlW2ldKTsKLSAgICAgICAgW2FycmF5IGFkZE9iamVjdDpbTlNWYWx1ZSB2YWx1
ZVdpdGhDQVRyYW5zZm9ybTNEOmNhVHJhbnNmb3JtXV07Ci0gICAgfQorICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgdmFsdWUuc2l6ZSgpOyArK2kpCisgICAgICAgIFthcnJheSBhZGRPYmplY3Q6
W05TVmFsdWUgdmFsdWVXaXRoQ0FUcmFuc2Zvcm0zRDp2YWx1ZVtpXV1dOworICAgICAgICAKICAg
ICBbc3RhdGljX2Nhc3Q8Q0FLZXlmcmFtZUFuaW1hdGlvbio+KG1fYW5pbWF0aW9uLmdldCgpKSBz
ZXRWYWx1ZXM6YXJyYXldOwogfQogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L21hYy9QbGF0Zm9ybUNBTGF5ZXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9tYWMvUGxhdGZvcm1DQUxheWVyTWFjLm1tCShyZXZpc2lvbiA3MzQwMCkK
KysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1BsYXRmb3JtQ0FMYXllck1hYy5t
bQkod29ya2luZyBjb3B5KQpAQCAtOTUsMjYgKzk1LDYgQEAgLSAodm9pZClzZXRDb250ZW50c0No
YW5nZWQ7CiAKIHN0YXRpYyBjb25zdCBOU1N0cmluZyogcGxhdGZvcm1DQUxheWVyUG9pbnRlciA9
IEAiV0tQbGF0Zm9ybUNBTGF5ZXIiOwogCi1zdGF0aWMgaW5saW5lIHZvaWQgY29weVRyYW5zZm9y
bShDQVRyYW5zZm9ybTNEJiB0b1QzRCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHQpCi17
Ci0gICAgdG9UM0QubTExID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCh0Lm0xMSgpKTsKLSAgICB0
b1QzRC5tMTIgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHQubTEyKCkpOwotICAgIHRvVDNELm0x
MyA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodC5tMTMoKSk7Ci0gICAgdG9UM0QubTE0ID0gbmFy
cm93UHJlY2lzaW9uVG9GbG9hdCh0Lm0xNCgpKTsKLSAgICB0b1QzRC5tMjEgPSBuYXJyb3dQcmVj
aXNpb25Ub0Zsb2F0KHQubTIxKCkpOwotICAgIHRvVDNELm0yMiA9IG5hcnJvd1ByZWNpc2lvblRv
RmxvYXQodC5tMjIoKSk7Ci0gICAgdG9UM0QubTIzID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCh0
Lm0yMygpKTsKLSAgICB0b1QzRC5tMjQgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHQubTI0KCkp
OwotICAgIHRvVDNELm0zMSA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodC5tMzEoKSk7Ci0gICAg
dG9UM0QubTMyID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCh0Lm0zMigpKTsKLSAgICB0b1QzRC5t
MzMgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHQubTMzKCkpOwotICAgIHRvVDNELm0zNCA9IG5h
cnJvd1ByZWNpc2lvblRvRmxvYXQodC5tMzQoKSk7Ci0gICAgdG9UM0QubTQxID0gbmFycm93UHJl
Y2lzaW9uVG9GbG9hdCh0Lm00MSgpKTsKLSAgICB0b1QzRC5tNDIgPSBuYXJyb3dQcmVjaXNpb25U
b0Zsb2F0KHQubTQyKCkpOwotICAgIHRvVDNELm00MyA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQo
dC5tNDMoKSk7Ci0gICAgdG9UM0QubTQ0ID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCh0Lm00NCgp
KTsKLX0KLQogYm9vbCBQbGF0Zm9ybUNBTGF5ZXI6OmlzVmFsdWVGdW5jdGlvblN1cHBvcnRlZCgp
CiB7CiAgICAgc3RhdGljIGJvb2wgc0hhdmVWYWx1ZUZ1bmN0aW9uID0gW0NBUHJvcGVydHlBbmlt
YXRpb24gaW5zdGFuY2VzUmVzcG9uZFRvU2VsZWN0b3I6QHNlbGVjdG9yKHNldFZhbHVlRnVuY3Rp
b246KV07CkBAIC00NTgsMzEgKzQzOCwyNSBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllcjo6c2V0QW5j
aG9yUG9pbnQoY29uCiAKIFRyYW5zZm9ybWF0aW9uTWF0cml4IFBsYXRmb3JtQ0FMYXllcjo6dHJh
bnNmb3JtKCkgY29uc3QKIHsKLSAgICBDQVRyYW5zZm9ybTNEIHQgPSBbbV9sYXllci5nZXQoKSB0
cmFuc2Zvcm1dOwotICAgIHJldHVybiBUcmFuc2Zvcm1hdGlvbk1hdHJpeCh0Lm0xMSwgdC5tMTIs
IHQubTEzLCB0Lm0xNCwgdC5tMjEsIHQubTIyLCB0Lm0yMywgdC5tMjQsIHQubTMxLCB0Lm0zMiwg
dC5tMzMsIHQubTM0LCB0Lm00MSwgdC5tNDIsIHQubTQzLCB0Lm00NCk7CisgICAgcmV0dXJuIFtt
X2xheWVyLmdldCgpIHRyYW5zZm9ybV07CiB9CiAKIHZvaWQgUGxhdGZvcm1DQUxheWVyOjpzZXRU
cmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHZhbHVlKQogewotICAgIENBVHJh
bnNmb3JtM0QgdHJhbnNmb3JtOwotICAgIGNvcHlUcmFuc2Zvcm0odHJhbnNmb3JtLCB2YWx1ZSk7
CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgW21fbGF5ZXIuZ2V0KCkgc2V0
VHJhbnNmb3JtOnRyYW5zZm9ybV07CisgICAgW21fbGF5ZXIuZ2V0KCkgc2V0VHJhbnNmb3JtOnZh
bHVlXTsKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCiB9CiAKIFRyYW5zZm9ybWF0aW9u
TWF0cml4IFBsYXRmb3JtQ0FMYXllcjo6c3VibGF5ZXJUcmFuc2Zvcm0oKSBjb25zdAogewotICAg
IENBVHJhbnNmb3JtM0QgdCA9IFttX2xheWVyLmdldCgpIHN1YmxheWVyVHJhbnNmb3JtXTsKLSAg
ICByZXR1cm4gVHJhbnNmb3JtYXRpb25NYXRyaXgodC5tMTEsIHQubTEyLCB0Lm0xMywgdC5tMTQs
IHQubTIxLCB0Lm0yMiwgdC5tMjMsIHQubTI0LCB0Lm0zMSwgdC5tMzIsIHQubTMzLCB0Lm0zNCwg
dC5tNDEsIHQubTQyLCB0Lm00MywgdC5tNDQpOworICAgIHJldHVybiBbbV9sYXllci5nZXQoKSBz
dWJsYXllclRyYW5zZm9ybV07CiB9CiAKIHZvaWQgUGxhdGZvcm1DQUxheWVyOjpzZXRTdWJsYXll
clRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdmFsdWUpCiB7Ci0gICAgQ0FU
cmFuc2Zvcm0zRCB0cmFuc2Zvcm07Ci0gICAgY29weVRyYW5zZm9ybSh0cmFuc2Zvcm0sIHZhbHVl
KTsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBbbV9sYXllci5nZXQoKSBz
ZXRTdWJsYXllclRyYW5zZm9ybTp0cmFuc2Zvcm1dOworICAgIFttX2xheWVyLmdldCgpIHNldFN1
YmxheWVyVHJhbnNmb3JtOnZhbHVlXTsKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCiB9
CiAKQEAgLTQ5Miw4ICs0NjYsNyBAQCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBQbGF0Zm9ybUNBTGF5
ZXI6OmNvCiAgICAgaWYgKG1fbGF5ZXJUeXBlICE9IExheWVyVHlwZVdlYkxheWVyKQogICAgICAg
ICByZXR1cm4gVHJhbnNmb3JtYXRpb25NYXRyaXgoKTsKICAgICAgICAgCi0gICAgQ0dBZmZpbmVU
cmFuc2Zvcm0gdCA9IFtzdGF0aWNfY2FzdDxXZWJMYXllcio+KG1fbGF5ZXIuZ2V0KCkpIGNvbnRl
bnRzVHJhbnNmb3JtXTsKLSAgICByZXR1cm4gVHJhbnNmb3JtYXRpb25NYXRyaXgodC5hLCB0LmIs
IHQuYywgdC5kLCB0LnR4LCB0LnR5KTsKKyAgICByZXR1cm4gW3N0YXRpY19jYXN0PFdlYkxheWVy
Kj4obV9sYXllci5nZXQoKSkgY29udGVudHNUcmFuc2Zvcm1dOwogI2Vsc2UKICAgICByZXR1cm4g
VHJhbnNmb3JtYXRpb25NYXRyaXgoKTsKICNlbmRpZgpAQCAtNTA1LDkgKzQ3OCw4IEBAIHZvaWQg
UGxhdGZvcm1DQUxheWVyOjpzZXRDb250ZW50c1RyYW5zZm8KICAgICBpZiAobV9sYXllclR5cGUg
IT0gTGF5ZXJUeXBlV2ViTGF5ZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIENHQWZmaW5lVHJh
bnNmb3JtIHRyYW5zZm9ybSA9IHZhbHVlOwogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9O
UwotICAgIFttX2xheWVyLmdldCgpIHNldENvbnRlbnRzVHJhbnNmb3JtOnRyYW5zZm9ybV07Cisg
ICAgW21fbGF5ZXIuZ2V0KCkgc2V0Q29udGVudHNUcmFuc2Zvcm06dmFsdWVdOwogICAgIEVORF9C
TE9DS19PQkpDX0VYQ0VQVElPTlMKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsKSW5k
ZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvVHJhbnNmb3JtYXRpb25NYXRyaXhDRy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9UcmFuc2Zvcm1h
dGlvbk1hdHJpeENHLmNwcAkocmV2aXNpb24gNzM0MDApCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL1RyYW5zZm9ybWF0aW9uTWF0cml4Q0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
NCw2ICszNCwxNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK1RyYW5zZm9ybWF0aW9uTWF0
cml4OjpUcmFuc2Zvcm1hdGlvbk1hdHJpeChjb25zdCBDR0FmZmluZVRyYW5zZm9ybSYgdCkKK3sK
KyAgICBzZXRBKHQuYSk7CisgICAgc2V0Qih0LmIpOworICAgIHNldEModC5jKTsKKyAgICBzZXRE
KHQuZCk7CisgICAgc2V0RSh0LnR4KTsKKyAgICBzZXRGKHQudHkpOworfQorCiBUcmFuc2Zvcm1h
dGlvbk1hdHJpeDo6b3BlcmF0b3IgQ0dBZmZpbmVUcmFuc2Zvcm0oKSBjb25zdAogewogICAgIHJl
dHVybiBDR0FmZmluZVRyYW5zZm9ybU1ha2UobmFycm93UHJlY2lzaW9uVG9DR0Zsb2F0KGEoKSks
CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRp
b25NYXRyaXguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5z
Zm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguaAkocmV2aXNpb24gNzM0MDApCisrKyBXZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguaAkod29y
a2luZyBjb3B5KQpAQCAtMzIsNiArMzIsOSBAQAogI2luY2x1ZGUgPHN0cmluZy5oPiAvL2ZvciBt
ZW1jcHkKICNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPgogCisjaWYgUExBVEZPUk0oQ0Ep
CisjaW5jbHVkZSA8UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+CisjZW5kaWYKICNpZiBQTEFURk9S
TShDRykKICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ0dBZmZpbmVUcmFuc2Zvcm0uaD4KICNlbGlm
IFBMQVRGT1JNKENBSVJPKQpAQCAtMzA5LDcgKzMxMiwxMiBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiByZXN1bHQ7CiAgICAgfQogCisjaWYgUExBVEZPUk0oQ0EpCisgICAgVHJhbnNmb3JtYXRp
b25NYXRyaXgoY29uc3QgQ0FUcmFuc2Zvcm0zRCYpOworICAgIG9wZXJhdG9yIENBVHJhbnNmb3Jt
M0QoKSBjb25zdDsKKyNlbmRpZgogI2lmIFBMQVRGT1JNKENHKQorICAgIFRyYW5zZm9ybWF0aW9u
TWF0cml4KGNvbnN0IENHQWZmaW5lVHJhbnNmb3JtJik7CiAgICAgb3BlcmF0b3IgQ0dBZmZpbmVU
cmFuc2Zvcm0oKSBjb25zdDsKICNlbGlmIFBMQVRGT1JNKENBSVJPKQogICAgIG9wZXJhdG9yIGNh
aXJvX21hdHJpeF90KCkgY29uc3Q7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75844</attachid>
            <date>2010-12-07 14:29:51 -0800</date>
            <delta_ts>2010-12-07 14:57:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-49388-20101207142950.patch</filename>
            <type>text/plain</type>
            <size>19496</size>
            <attacher name="Chris Marrin">cmarrin</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDczNDU4KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMTItMDcgIENocmlzIE1h
cnJpbiAgPGNtYXJyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFNoYXJlIGNvZGUgYmV0d2VlbiBNYWMgKENBKSBhbmQgV2luZG93
cyAoQ0FDRikgR3JhcGhpY3NMYXllciBpbXBsZW1lbnRhdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ5Mzg4CisKKyAgICAgICAgQWRkZWQgYSBX
VEZfUExBVEZPUk1fQ0EgZmxhZy4gU2V0IHdoZW4gcGxhdGZvcm0gaXMgTUFDIG9yIElPUyBvciBX
SU5ET1dTCisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6CisKIDIwMTAtMTItMDcgIEtlbm5ldGgg
UnVzc2VsbCAgPGtickBnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhdmlkIExl
dmluLgpJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
SmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgJKHJldmlzaW9uIDczNDAwKQorKysgSmF2YVNj
cmlwdENvcmUvd3RmL1BsYXRmb3JtLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzMCw2ICs1MzAsOSBA
QAogI2lmIFBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKElPUykKICNkZWZpbmUgV1RGX1BMQVRG
T1JNX0NJIDEKICNlbmRpZgorI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oSU9TKSB8fCBQ
TEFURk9STShXSU4pCisjZGVmaW5lIFdURl9QTEFURk9STV9DQSAxCisjZW5kaWYKIAogLyogUExB
VEZPUk0oU0tJQSkgZm9yIFdpbi9MaW51eCwgQ0cvQ0kgZm9yIE1hYyAqLwogI2lmIFBMQVRGT1JN
KENIUk9NSVVNKQpJbmRleDogV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDczNDU4KQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwzOCBAQAorMjAxMC0xMi0wNyAgQ2hyaXMgTWFycmluICA8Y21h
cnJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgU2hhcmUgY29kZSBiZXR3ZWVuIE1hYyAoQ0EpIGFuZCBXaW5kb3dzIChDQUNGKSBH
cmFwaGljc0xheWVyIGltcGxlbWVudGF0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDkzODgKKworICAgICAgICBBZGRlZCBjb3B5IGNvbnN0cnVj
dG9ycyBhbmQgY2FzdGluZyBvcGVyYXRvcnMgdG8gZ28gYmV0d2VlbiAKKyAgICAgICAgVHJhbnNm
b3JtYXRpb25NYXRyaXggYW5kIENBVHJhbnNmb3JtM0QuIEFsc28gYWRkZWQgYSBjb3B5CisgICAg
ICAgIGNvbnN0cnVjdG9yIHRvIGdvIGZyb20gQ0dBZmZpbmVUcmFuc2Zvcm0gdG8gVHJhbnNmb3Jt
YXRpb25NYXRyaXguCisgICAgICAgIFVzZWQgdGhlc2UgbmV3IG1ldGhvZHMgdG8gY2xlYW4gdXAg
cGxhdGZvcm0gQ0EgY29kZS4gVGhpcyB3aWxsCisgICAgICAgIG1ha2UgaXQgZWFzaWVyIHRvIHBv
cnQgdG8gV2luZG93cy4KKworICAgICAgICBJIGFsc28gZml4ZWQgYSBjb3VwbGUgb2YgYnVpbGQg
aXNzdWVzIGZvdW5kIHdoZW4gdHJ5aW5nIG91dCBhIAorICAgICAgICBXaW5kb3dzIGJ1aWxkLgor
CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0xheWVyQ0E6OmVuc3VyZUNsb25lTGF5ZXJzKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXJDQTo6ZmV0Y2hDbG9uZUxheWVycyk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvbWFjL1BsYXRmb3JtQ0FBbmltYXRpb25NYWMubW06CisgICAgICAgIChQ
bGF0Zm9ybUNBQW5pbWF0aW9uOjpzZXRGcm9tVmFsdWUpOgorICAgICAgICAoUGxhdGZvcm1DQUFu
aW1hdGlvbjo6c2V0VG9WYWx1ZSk6CisgICAgICAgIChQbGF0Zm9ybUNBQW5pbWF0aW9uOjpzZXRW
YWx1ZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9QbGF0Zm9ybUNBTGF5
ZXJNYWMubW06CisgICAgICAgIChQbGF0Zm9ybUNBTGF5ZXI6OnRyYW5zZm9ybSk6CisgICAgICAg
IChQbGF0Zm9ybUNBTGF5ZXI6OnNldFRyYW5zZm9ybSk6CisgICAgICAgIChQbGF0Zm9ybUNBTGF5
ZXI6OnN1YmxheWVyVHJhbnNmb3JtKToKKyAgICAgICAgKFBsYXRmb3JtQ0FMYXllcjo6c2V0U3Vi
bGF5ZXJUcmFuc2Zvcm0pOgorICAgICAgICAoUGxhdGZvcm1DQUxheWVyOjpjb250ZW50c1RyYW5z
Zm9ybSk6CisgICAgICAgIChQbGF0Zm9ybUNBTGF5ZXI6OnNldENvbnRlbnRzVHJhbnNmb3JtKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9UcmFuc2Zvcm1hdGlvbk1hdHJpeENHLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4OjpUcmFuc2Zvcm1hdGlv
bk1hdHJpeCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zv
cm1hdGlvbk1hdHJpeC5oOgorCiAyMDEwLTEyLTA3ICBLZW5uZXRoIFJ1c3NlbGwgIDxrYnJAZ29v
Z2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXZpZCBMZXZpbi4KSW5kZXg6IFdlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA3MzQwMCkKKysr
IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC0xMDA5LDYgKzEwMDksNyBAQAogCQk0OTQ4NEZDQjEwMkNGMjNDMDAxODdERDMgLyogQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0OTQ4NEZCRDEwMkNGMjNDMDAxODdERDMgLyogQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJELmggKi87IH07CiAJCTQ5NDg0RkNEMTAyQ0YyM0MwMDE4N0REMyAvKiBDYW52YXNT
dHlsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
OTQ4NEZCRjEwMkNGMjNDMDAxODdERDMgLyogQ2FudmFzU3R5bGUuY3BwICovOyB9OwogCQk0OTQ4
NEZDRTEwMkNGMjNDMDAxODdERDMgLyogQ2FudmFzU3R5bGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5NDg0RkMwMTAyQ0YyM0MwMDE4N0REMyAvKiBD
YW52YXNTdHlsZS5oICovOyB9OworCQk0OTRCQzQwRDEyQUVERDlFMDA3NDNCRDIgLyogVHJhbnNm
b3JtYXRpb25NYXRyaXhDQS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0OTRCQzQwQzEyQUVERDlFMDA3NDNCRDIgLyogVHJhbnNmb3JtYXRpb25NYXRy
aXhDQS5jcHAgKi87IH07CiAJCTQ5NEJENzk1MEY1NUM4RUUwMDc0NzgyOCAvKiBXZWJLaXRQb2lu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDk0QkQ3
OTMwRjU1QzhFRTAwNzQ3ODI4IC8qIFdlYktpdFBvaW50LmggKi87IH07CiAJCTQ5NEJENzlEMEY1
NUM5NEMwMDc0NzgyOCAvKiBKU1dlYktpdFBvaW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5NEJENzlCMEY1NUM5NEMwMDc0NzgyOCAvKiBKU1dl
YktpdFBvaW50LmNwcCAqLzsgfTsKIAkJNDk0QkQ3OUUwRjU1Qzk0QzAwNzQ3ODI4IC8qIEpTV2Vi
S2l0UG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ5NEJENzlDMEY1NUM5NEMwMDc0NzgyOCAvKiBKU1dlYktpdFBvaW50LmggKi87IH07CkBAIC03
MTQ1LDYgKzcxNDYsNyBAQAogCQk0OTQ4NEZCRTEwMkNGMjNDMDAxODdERDMgLyogQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJELmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQuaWRsOyBwYXRoID0gY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5NDg0RkJGMTAyQ0YyM0MwMDE4N0RE
MyAvKiBDYW52YXNTdHlsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBDYW52YXNTdHlsZS5jcHA7IHBhdGggPSBjYW52YXMvQ2FudmFzU3R5bGUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0OTQ4NEZDMDEwMkNGMjNDMDAxODdERDMgLyogQ2FudmFz
U3R5bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ2FudmFzU3R5bGUuaDsg
cGF0aCA9IGNhbnZhcy9DYW52YXNTdHlsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk0OTRCQzQwQzEyQUVERDlFMDA3NDNCRDIgLyogVHJhbnNmb3JtYXRpb25NYXRyaXhDQS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBUcmFuc2Zvcm1hdGlvbk1hdHJp
eENBLmNwcDsgcGF0aCA9IGNhL1RyYW5zZm9ybWF0aW9uTWF0cml4Q0EuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0OTRCRDc5MzBGNTVDOEVFMDA3NDc4MjggLyogV2ViS2l0UG9p
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViS2l0UG9pbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDk0QkQ3OTQwRjU1QzhFRTAwNzQ3ODI4IC8qIFdl
YktpdFBvaW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJLaXRQb2ludC5pZGw7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5NEJENzlCMEY1NUM5NEMwMDc0NzgyOCAvKiBK
U1dlYktpdFBvaW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
V2ViS2l0UG9pbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTI4MDMsNiAr
MTI4MDUsNyBAQAogCQkJCTQ5OUIzRUQ0MTI4Q0QzMTQwMEU3MjZDMiAvKiBHcmFwaGljc0xheWVy
Q0EuY3BwICovLAogCQkJCTQ5OUIzRUQ1MTI4Q0QzMTQwMEU3MjZDMiAvKiBHcmFwaGljc0xheWVy
Q0EuaCAqLywKIAkJCQk0OTlCM0VDMzEyOENDQzQ3MDBFNzI2QzIgLyogUGxhdGZvcm1DQUxheWVy
LmggKi8sCisJCQkJNDk0QkM0MEMxMkFFREQ5RTAwNzQzQkQyIC8qIFRyYW5zZm9ybWF0aW9uTWF0
cml4Q0EuY3BwICovLAogCQkJKTsKIAkJCW5hbWUgPSBjYTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7CkBAIC0yNDA5NCw2ICsyNDA5Nyw3IEBACiAJCQkJNDk5QjNFRDYxMjhDRDMxNDAwRTcy
NkMyIC8qIEdyYXBoaWNzTGF5ZXJDQS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OTU4NzgyMTEy
QTU3RERGMDA3MjM4QUMgLyogUGxhdGZvcm1DQUFuaW1hdGlvbk1hYy5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTQ5NTg3ODIyMTJBNTdEREYwMDcyMzhBQyAvKiBQbGF0Zm9ybUNBTGF5ZXJNYWMubW0g
aW4gU291cmNlcyAqLywKKwkJCQk0OTRCQzQwRDEyQUVERDlFMDA3NDNCRDIgLyogVHJhbnNmb3Jt
YXRpb25NYXRyaXhDQS5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVw
bG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAJKHJldmlzaW9uIDczNDAwKQor
KysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MCw5ICs0MCw3IEBACiAjaW5jbHVkZSAiVHJhbnNsYXRlVHJhbnNmb3Jt
T3BlcmF0aW9uLmgiCiAjaW5jbHVkZSA8UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+CiAjaW5jbHVk
ZSA8bGltaXRzLmg+Ci0jaW5jbHVkZSA8b2JqYy9vYmpjLWF1dG8uaD4KICNpbmNsdWRlIDx3dGYv
Q3VycmVudFRpbWUuaD4KLSNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwpAQCAt
MTk5Miw4ICsxOTkwLDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUNvbnRlbnRzVHJh
bgogICAgIGlmIChjb250ZW50c09yaWVudGF0aW9uKCkgPT0gQ29tcG9zaXRpbmdDb29yZGluYXRl
c0JvdHRvbVVwKSB7CiAgICAgICAgIENHQWZmaW5lVHJhbnNmb3JtIGNvbnRlbnRzVHJhbnNmb3Jt
ID0gQ0dBZmZpbmVUcmFuc2Zvcm1NYWtlU2NhbGUoMSwgLTEpOwogICAgICAgICBjb250ZW50c1Ry
YW5zZm9ybSA9IENHQWZmaW5lVHJhbnNmb3JtVHJhbnNsYXRlKGNvbnRlbnRzVHJhbnNmb3JtLCAw
LCAtbV9sYXllci0+Ym91bmRzKCkuc2l6ZSgpLmhlaWdodCgpKTsKLSAgICAgICAgVHJhbnNmb3Jt
YXRpb25NYXRyaXggdHJhbnNmb3JtM0QoY29udGVudHNUcmFuc2Zvcm0uYSwgY29udGVudHNUcmFu
c2Zvcm0uYiwgY29udGVudHNUcmFuc2Zvcm0uYywgY29udGVudHNUcmFuc2Zvcm0uZCwgY29udGVu
dHNUcmFuc2Zvcm0udHgsIGNvbnRlbnRzVHJhbnNmb3JtLnR5KTsKLSAgICAgICAgbV9sYXllci0+
c2V0Q29udGVudHNUcmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRyaXgodHJhbnNmb3JtM0QpKTsK
KyAgICAgICAgbV9sYXllci0+c2V0Q29udGVudHNUcmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRy
aXgoY29udGVudHNUcmFuc2Zvcm0pKTsKICAgICB9CiAjZW5kaWYKIH0KQEAgLTIwNDcsOCArMjA0
NCw4IEBAIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBHcmFwaGljc0xheWUKIAogdm9pZCBH
cmFwaGljc0xheWVyQ0E6OmVuc3VyZUNsb25lTGF5ZXJzKENsb25lSUQgY2xvbmVJRCwgUmVmUHRy
PFBsYXRmb3JtQ0FMYXllcj4mIHByaW1hcnlMYXllciwgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4m
IHN0cnVjdHVyYWxMYXllciwgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4mIGNvbnRlbnRzTGF5ZXIs
IENsb25lTGV2ZWwgY2xvbmVMZXZlbCkKIHsKLSAgICBzdHJ1Y3R1cmFsTGF5ZXIgPSBuaWw7Ci0g
ICAgY29udGVudHNMYXllciA9IG5pbDsKKyAgICBzdHJ1Y3R1cmFsTGF5ZXIgPSAwOworICAgIGNv
bnRlbnRzTGF5ZXIgPSAwOwogCiAgICAgaWYgKCFtX2xheWVyQ2xvbmVzKQogICAgICAgICBtX2xh
eWVyQ2xvbmVzID0gbmV3IExheWVyTWFwOwpAQCAtMjExMCw3ICsyMTA3LDcgQEAgUGFzc1JlZlB0
cjxQbGF0Zm9ybUNBTGF5ZXI+IEdyYXBoaWNzTGF5ZQogICAgICAgICAvLyBXZSBhcmUgYSByZXBs
aWNhIGJlaW5nIGFza2VkIGZvciBjbG9uZXMgb2Ygb3VyIGxheWVycy4KICAgICAgICAgUmVmUHRy
PFBsYXRmb3JtQ0FMYXllcj4gcmVwbGljYVJvb3QgPSByZXBsaWNhdGVkTGF5ZXJSb290KHJlcGxp
Y2FTdGF0ZSk7CiAgICAgICAgIGlmICghcmVwbGljYVJvb3QpCi0gICAgICAgICAgICByZXR1cm4g
bmlsOworICAgICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAgICAgaWYgKHN0cnVjdHVyYWxMYXll
cikgewogICAgICAgICAgICAgc3RydWN0dXJhbExheWVyLT5pbnNlcnRTdWJsYXllcihyZXBsaWNh
Um9vdC5nZXQoKSwgMCk7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RyYW5z
Zm9ybWF0aW9uTWF0cml4Q0EuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvVHJhbnNmb3JtYXRpb25NYXRyaXhDQS5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RyYW5zZm9ybWF0aW9uTWF0cml4Q0EuY3BwCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBQTEFU
Rk9STShDQSkKKworI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCisKKyNpbmNsdWRl
ICJGbG9hdENvbnZlcnNpb24uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitUcmFuc2Zvcm1h
dGlvbk1hdHJpeDo6VHJhbnNmb3JtYXRpb25NYXRyaXgoY29uc3QgQ0FUcmFuc2Zvcm0zRCYgdCkK
K3sKKyAgICBzZXRNYXRyaXgoCisgICAgICAgIHQubTExLCB0Lm0xMiwgdC5tMTMsIHQubTE0LAor
ICAgICAgICB0Lm0yMSwgdC5tMjIsIHQubTIzLCB0Lm0yNCwgCisgICAgICAgIHQubTMxLCB0Lm0z
MiwgdC5tMzMsIHQubTM0LCAKKyAgICAgICAgdC5tNDEsIHQubTQyLCB0Lm00MywgdC5tNDQpOwor
fQorCitUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6b3BlcmF0b3IgQ0FUcmFuc2Zvcm0zRCgpIGNvbnN0
Cit7CisgICAgQ0FUcmFuc2Zvcm0zRCB0b1QzRDsKKyAgICB0b1QzRC5tMTEgPSBuYXJyb3dQcmVj
aXNpb25Ub0Zsb2F0KG0xMSgpKTsKKyAgICB0b1QzRC5tMTIgPSBuYXJyb3dQcmVjaXNpb25Ub0Zs
b2F0KG0xMigpKTsKKyAgICB0b1QzRC5tMTMgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KG0xMygp
KTsKKyAgICB0b1QzRC5tMTQgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KG0xNCgpKTsKKyAgICB0
b1QzRC5tMjEgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KG0yMSgpKTsKKyAgICB0b1QzRC5tMjIg
PSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KG0yMigpKTsKKyAgICB0b1QzRC5tMjMgPSBuYXJyb3dQ
cmVjaXNpb25Ub0Zsb2F0KG0yMygpKTsKKyAgICB0b1QzRC5tMjQgPSBuYXJyb3dQcmVjaXNpb25U
b0Zsb2F0KG0yNCgpKTsKKyAgICB0b1QzRC5tMzEgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KG0z
MSgpKTsKKyAgICB0b1QzRC5tMzIgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KG0zMigpKTsKKyAg
ICB0b1QzRC5tMzMgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KG0zMygpKTsKKyAgICB0b1QzRC5t
MzQgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KG0zNCgpKTsKKyAgICB0b1QzRC5tNDEgPSBuYXJy
b3dQcmVjaXNpb25Ub0Zsb2F0KG00MSgpKTsKKyAgICB0b1QzRC5tNDIgPSBuYXJyb3dQcmVjaXNp
b25Ub0Zsb2F0KG00MigpKTsKKyAgICB0b1QzRC5tNDMgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0
KG00MygpKTsKKyAgICB0b1QzRC5tNDQgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KG00NCgpKTsK
KyAgICByZXR1cm4gdG9UM0Q7Cit9CisKK30KKworI2VuZGlmIC8vIFBMQVRGT1JNKENBKQpJbmRl
eDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvUGxhdGZvcm1DQUFuaW1hdGlvbk1h
Yy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9QbGF0
Zm9ybUNBQW5pbWF0aW9uTWFjLm1tCShyZXZpc2lvbiA3MzQwMCkKKysrIFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvbWFjL1BsYXRmb3JtQ0FBbmltYXRpb25NYWMubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTQyLDI2ICs0Miw2IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogLy8gVGhpcyB2
YWx1ZSBtdXN0IGJlIHRoZSBzYW1lIGFzIGluIFBsYXRmb3JtQ0FMYXllck1hYy5tbQogc3RhdGlj
IGNvbnN0IE5TU3RyaW5nKiBXS05vblplcm9CZWdpblRpbWVGbGFnID0gQCJXS1BsYXRmb3JtQ0FB
bmltYXRpb25Ob25aZXJvQmVnaW5UaW1lRmxhZyI7CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBjb3B5
VHJhbnNmb3JtKENBVHJhbnNmb3JtM0QmIHRvVDNELCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgdCkKLXsKLSAgICB0b1QzRC5tMTEgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHQubTExKCkp
OwotICAgIHRvVDNELm0xMiA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodC5tMTIoKSk7Ci0gICAg
dG9UM0QubTEzID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCh0Lm0xMygpKTsKLSAgICB0b1QzRC5t
MTQgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHQubTE0KCkpOwotICAgIHRvVDNELm0yMSA9IG5h
cnJvd1ByZWNpc2lvblRvRmxvYXQodC5tMjEoKSk7Ci0gICAgdG9UM0QubTIyID0gbmFycm93UHJl
Y2lzaW9uVG9GbG9hdCh0Lm0yMigpKTsKLSAgICB0b1QzRC5tMjMgPSBuYXJyb3dQcmVjaXNpb25U
b0Zsb2F0KHQubTIzKCkpOwotICAgIHRvVDNELm0yNCA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQo
dC5tMjQoKSk7Ci0gICAgdG9UM0QubTMxID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCh0Lm0zMSgp
KTsKLSAgICB0b1QzRC5tMzIgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHQubTMyKCkpOwotICAg
IHRvVDNELm0zMyA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodC5tMzMoKSk7Ci0gICAgdG9UM0Qu
bTM0ID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCh0Lm0zNCgpKTsKLSAgICB0b1QzRC5tNDEgPSBu
YXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHQubTQxKCkpOwotICAgIHRvVDNELm00MiA9IG5hcnJvd1By
ZWNpc2lvblRvRmxvYXQodC5tNDIoKSk7Ci0gICAgdG9UM0QubTQzID0gbmFycm93UHJlY2lzaW9u
VG9GbG9hdCh0Lm00MygpKTsKLSAgICB0b1QzRC5tNDQgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0
KHQubTQ0KCkpOwotfQotCiBzdGF0aWMgTlNTdHJpbmcqIHRvQ0FGaWxsTW9kZVR5cGUoUGxhdGZv
cm1DQUFuaW1hdGlvbjo6RmlsbE1vZGVUeXBlIHR5cGUpCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7
CkBAIC0zODksMTAgKzM2OSw4IEBAIHZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbjo6c2V0RnJvbVZh
bHVlKGMKIHsKICAgICBpZiAoYW5pbWF0aW9uVHlwZSgpICE9IEJhc2ljKQogICAgICAgICByZXR1
cm47Ci0KLSAgICBDQVRyYW5zZm9ybTNEIGNhVHJhbnNmb3JtOwotICAgIGNvcHlUcmFuc2Zvcm0o
Y2FUcmFuc2Zvcm0sIHZhbHVlKTsKLSAgICBbc3RhdGljX2Nhc3Q8Q0FCYXNpY0FuaW1hdGlvbio+
KG1fYW5pbWF0aW9uLmdldCgpKSBzZXRGcm9tVmFsdWU6W05TVmFsdWUgdmFsdWVXaXRoQ0FUcmFu
c2Zvcm0zRDpjYVRyYW5zZm9ybV1dOworICAgICAgICAKKyAgICBbc3RhdGljX2Nhc3Q8Q0FCYXNp
Y0FuaW1hdGlvbio+KG1fYW5pbWF0aW9uLmdldCgpKSBzZXRGcm9tVmFsdWU6W05TVmFsdWUgdmFs
dWVXaXRoQ0FUcmFuc2Zvcm0zRDp2YWx1ZV1dOwogfQogCiB2b2lkIFBsYXRmb3JtQ0FBbmltYXRp
b246OnNldEZyb21WYWx1ZShjb25zdCBGbG9hdFBvaW50M0QmIHZhbHVlKQpAQCAtNDQzLDkgKzQy
MSw3IEBAIHZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbjo6c2V0VG9WYWx1ZShjb24KICAgICBpZiAo
YW5pbWF0aW9uVHlwZSgpICE9IEJhc2ljKQogICAgICAgICByZXR1cm47CiAKLSAgICBDQVRyYW5z
Zm9ybTNEIGNhVHJhbnNmb3JtOwotICAgIGNvcHlUcmFuc2Zvcm0oY2FUcmFuc2Zvcm0sIHZhbHVl
KTsKLSAgICBbc3RhdGljX2Nhc3Q8Q0FCYXNpY0FuaW1hdGlvbio+KG1fYW5pbWF0aW9uLmdldCgp
KSBzZXRUb1ZhbHVlOltOU1ZhbHVlIHZhbHVlV2l0aENBVHJhbnNmb3JtM0Q6Y2FUcmFuc2Zvcm1d
XTsKKyAgICBbc3RhdGljX2Nhc3Q8Q0FCYXNpY0FuaW1hdGlvbio+KG1fYW5pbWF0aW9uLmdldCgp
KSBzZXRUb1ZhbHVlOltOU1ZhbHVlIHZhbHVlV2l0aENBVHJhbnNmb3JtM0Q6dmFsdWVdXTsKIH0K
IAogdm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpzZXRUb1ZhbHVlKGNvbnN0IEZsb2F0UG9pbnQz
RCYgdmFsdWUpCkBAIC01MDMsMTIgKzQ3OSwxMCBAQCB2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb246
OnNldFZhbHVlcyhjb25zCiAgICAgICAgIHJldHVybjsKICAgICAgICAgCiAgICAgTlNNdXRhYmxl
QXJyYXkqIGFycmF5ID0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsKLSAgICBDQVRyYW5zZm9ybTNE
IGNhVHJhbnNmb3JtOwogCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2YWx1ZS5zaXplKCk7
ICsraSkgewotICAgICAgICBjb3B5VHJhbnNmb3JtKGNhVHJhbnNmb3JtLCB2YWx1ZVtpXSk7Ci0g
ICAgICAgIFthcnJheSBhZGRPYmplY3Q6W05TVmFsdWUgdmFsdWVXaXRoQ0FUcmFuc2Zvcm0zRDpj
YVRyYW5zZm9ybV1dOwotICAgIH0KKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHZhbHVlLnNp
emUoKTsgKytpKQorICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OltOU1ZhbHVlIHZhbHVlV2l0aENB
VHJhbnNmb3JtM0Q6dmFsdWVbaV1dXTsKKyAgICAgICAgCiAgICAgW3N0YXRpY19jYXN0PENBS2V5
ZnJhbWVBbmltYXRpb24qPihtX2FuaW1hdGlvbi5nZXQoKSkgc2V0VmFsdWVzOmFycmF5XTsKIH0K
IApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvUGxhdGZvcm1DQUxheWVy
TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1Bs
YXRmb3JtQ0FMYXllck1hYy5tbQkocmV2aXNpb24gNzM0MDApCisrKyBXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL21hYy9QbGF0Zm9ybUNBTGF5ZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAg
LTk1LDI2ICs5NSw2IEBAIC0gKHZvaWQpc2V0Q29udGVudHNDaGFuZ2VkOwogCiBzdGF0aWMgY29u
c3QgTlNTdHJpbmcqIHBsYXRmb3JtQ0FMYXllclBvaW50ZXIgPSBAIldLUGxhdGZvcm1DQUxheWVy
IjsKIAotc3RhdGljIGlubGluZSB2b2lkIGNvcHlUcmFuc2Zvcm0oQ0FUcmFuc2Zvcm0zRCYgdG9U
M0QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0KQotewotICAgIHRvVDNELm0xMSA9IG5h
cnJvd1ByZWNpc2lvblRvRmxvYXQodC5tMTEoKSk7Ci0gICAgdG9UM0QubTEyID0gbmFycm93UHJl
Y2lzaW9uVG9GbG9hdCh0Lm0xMigpKTsKLSAgICB0b1QzRC5tMTMgPSBuYXJyb3dQcmVjaXNpb25U
b0Zsb2F0KHQubTEzKCkpOwotICAgIHRvVDNELm0xNCA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQo
dC5tMTQoKSk7Ci0gICAgdG9UM0QubTIxID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCh0Lm0yMSgp
KTsKLSAgICB0b1QzRC5tMjIgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHQubTIyKCkpOwotICAg
IHRvVDNELm0yMyA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodC5tMjMoKSk7Ci0gICAgdG9UM0Qu
bTI0ID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCh0Lm0yNCgpKTsKLSAgICB0b1QzRC5tMzEgPSBu
YXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHQubTMxKCkpOwotICAgIHRvVDNELm0zMiA9IG5hcnJvd1By
ZWNpc2lvblRvRmxvYXQodC5tMzIoKSk7Ci0gICAgdG9UM0QubTMzID0gbmFycm93UHJlY2lzaW9u
VG9GbG9hdCh0Lm0zMygpKTsKLSAgICB0b1QzRC5tMzQgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0
KHQubTM0KCkpOwotICAgIHRvVDNELm00MSA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodC5tNDEo
KSk7Ci0gICAgdG9UM0QubTQyID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCh0Lm00MigpKTsKLSAg
ICB0b1QzRC5tNDMgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHQubTQzKCkpOwotICAgIHRvVDNE
Lm00NCA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodC5tNDQoKSk7Ci19Ci0KIGJvb2wgUGxhdGZv
cm1DQUxheWVyOjppc1ZhbHVlRnVuY3Rpb25TdXBwb3J0ZWQoKQogewogICAgIHN0YXRpYyBib29s
IHNIYXZlVmFsdWVGdW5jdGlvbiA9IFtDQVByb3BlcnR5QW5pbWF0aW9uIGluc3RhbmNlc1Jlc3Bv
bmRUb1NlbGVjdG9yOkBzZWxlY3RvcihzZXRWYWx1ZUZ1bmN0aW9uOildOwpAQCAtNDU4LDMxICs0
MzgsMjUgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OnNldEFuY2hvclBvaW50KGNvbgogCiBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCBQbGF0Zm9ybUNBTGF5ZXI6OnRyYW5zZm9ybSgpIGNvbnN0CiB7Ci0g
ICAgQ0FUcmFuc2Zvcm0zRCB0ID0gW21fbGF5ZXIuZ2V0KCkgdHJhbnNmb3JtXTsKLSAgICByZXR1
cm4gVHJhbnNmb3JtYXRpb25NYXRyaXgodC5tMTEsIHQubTEyLCB0Lm0xMywgdC5tMTQsIHQubTIx
LCB0Lm0yMiwgdC5tMjMsIHQubTI0LCB0Lm0zMSwgdC5tMzIsIHQubTMzLCB0Lm0zNCwgdC5tNDEs
IHQubTQyLCB0Lm00MywgdC5tNDQpOworICAgIHJldHVybiBbbV9sYXllci5nZXQoKSB0cmFuc2Zv
cm1dOwogfQogCiB2b2lkIFBsYXRmb3JtQ0FMYXllcjo6c2V0VHJhbnNmb3JtKGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4JiB2YWx1ZSkKIHsKLSAgICBDQVRyYW5zZm9ybTNEIHRyYW5zZm9ybTsK
LSAgICBjb3B5VHJhbnNmb3JtKHRyYW5zZm9ybSwgdmFsdWUpOwogICAgIEJFR0lOX0JMT0NLX09C
SkNfRVhDRVBUSU9OUwotICAgIFttX2xheWVyLmdldCgpIHNldFRyYW5zZm9ybTp0cmFuc2Zvcm1d
OworICAgIFttX2xheWVyLmdldCgpIHNldFRyYW5zZm9ybTp2YWx1ZV07CiAgICAgRU5EX0JMT0NL
X09CSkNfRVhDRVBUSU9OUwogfQogCiBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBQbGF0Zm9ybUNBTGF5
ZXI6OnN1YmxheWVyVHJhbnNmb3JtKCkgY29uc3QKIHsKLSAgICBDQVRyYW5zZm9ybTNEIHQgPSBb
bV9sYXllci5nZXQoKSBzdWJsYXllclRyYW5zZm9ybV07Ci0gICAgcmV0dXJuIFRyYW5zZm9ybWF0
aW9uTWF0cml4KHQubTExLCB0Lm0xMiwgdC5tMTMsIHQubTE0LCB0Lm0yMSwgdC5tMjIsIHQubTIz
LCB0Lm0yNCwgdC5tMzEsIHQubTMyLCB0Lm0zMywgdC5tMzQsIHQubTQxLCB0Lm00MiwgdC5tNDMs
IHQubTQ0KTsKKyAgICByZXR1cm4gW21fbGF5ZXIuZ2V0KCkgc3VibGF5ZXJUcmFuc2Zvcm1dOwog
fQogCiB2b2lkIFBsYXRmb3JtQ0FMYXllcjo6c2V0U3VibGF5ZXJUcmFuc2Zvcm0oY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXgmIHZhbHVlKQogewotICAgIENBVHJhbnNmb3JtM0QgdHJhbnNmb3Jt
OwotICAgIGNvcHlUcmFuc2Zvcm0odHJhbnNmb3JtLCB2YWx1ZSk7CiAgICAgQkVHSU5fQkxPQ0tf
T0JKQ19FWENFUFRJT05TCi0gICAgW21fbGF5ZXIuZ2V0KCkgc2V0U3VibGF5ZXJUcmFuc2Zvcm06
dHJhbnNmb3JtXTsKKyAgICBbbV9sYXllci5nZXQoKSBzZXRTdWJsYXllclRyYW5zZm9ybTp2YWx1
ZV07CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogfQogCkBAIC00OTIsOCArNDY2LDcg
QEAgVHJhbnNmb3JtYXRpb25NYXRyaXggUGxhdGZvcm1DQUxheWVyOjpjbwogICAgIGlmIChtX2xh
eWVyVHlwZSAhPSBMYXllclR5cGVXZWJMYXllcikKICAgICAgICAgcmV0dXJuIFRyYW5zZm9ybWF0
aW9uTWF0cml4KCk7CiAgICAgICAgIAotICAgIENHQWZmaW5lVHJhbnNmb3JtIHQgPSBbc3RhdGlj
X2Nhc3Q8V2ViTGF5ZXIqPihtX2xheWVyLmdldCgpKSBjb250ZW50c1RyYW5zZm9ybV07Ci0gICAg
cmV0dXJuIFRyYW5zZm9ybWF0aW9uTWF0cml4KHQuYSwgdC5iLCB0LmMsIHQuZCwgdC50eCwgdC50
eSk7CisgICAgcmV0dXJuIFtzdGF0aWNfY2FzdDxXZWJMYXllcio+KG1fbGF5ZXIuZ2V0KCkpIGNv
bnRlbnRzVHJhbnNmb3JtXTsKICNlbHNlCiAgICAgcmV0dXJuIFRyYW5zZm9ybWF0aW9uTWF0cml4
KCk7CiAjZW5kaWYKQEAgLTUwNSw5ICs0NzgsOCBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllcjo6c2V0
Q29udGVudHNUcmFuc2ZvCiAgICAgaWYgKG1fbGF5ZXJUeXBlICE9IExheWVyVHlwZVdlYkxheWVy
KQogICAgICAgICByZXR1cm47CiAKLSAgICBDR0FmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm0gPSB2
YWx1ZTsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBbbV9sYXllci5nZXQo
KSBzZXRDb250ZW50c1RyYW5zZm9ybTp0cmFuc2Zvcm1dOworICAgIFttX2xheWVyLmdldCgpIHNl
dENvbnRlbnRzVHJhbnNmb3JtOnZhbHVlXTsKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05T
CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL1RyYW5zZm9ybWF0aW9uTWF0cml4Q0cuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvVHJhbnNmb3JtYXRpb25NYXRyaXhDRy5jcHAJKHJl
dmlzaW9uIDczNDAwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9UcmFuc2Zvcm1h
dGlvbk1hdHJpeENHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsMTYgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCitUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6VHJhbnNmb3JtYXRpb25N
YXRyaXgoY29uc3QgQ0dBZmZpbmVUcmFuc2Zvcm0mIHQpCit7CisgICAgc2V0QSh0LmEpOworICAg
IHNldEIodC5iKTsKKyAgICBzZXRDKHQuYyk7CisgICAgc2V0RCh0LmQpOworICAgIHNldEUodC50
eCk7CisgICAgc2V0Rih0LnR5KTsKK30KKwogVHJhbnNmb3JtYXRpb25NYXRyaXg6Om9wZXJhdG9y
IENHQWZmaW5lVHJhbnNmb3JtKCkgY29uc3QKIHsKICAgICByZXR1cm4gQ0dBZmZpbmVUcmFuc2Zv
cm1NYWtlKG5hcnJvd1ByZWNpc2lvblRvQ0dGbG9hdChhKCkpLApJbmRleDogV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9u
TWF0cml4LmgJKHJldmlzaW9uIDczNDAwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYg
KzMyLDkgQEAKICNpbmNsdWRlIDxzdHJpbmcuaD4gLy9mb3IgbWVtY3B5CiAjaW5jbHVkZSA8d3Rm
L0Zhc3RBbGxvY0Jhc2UuaD4KIAorI2lmIFBMQVRGT1JNKENBKQorI2luY2x1ZGUgPFF1YXJ0ekNv
cmUvUXVhcnR6Q29yZS5oPgorI2VuZGlmCiAjaWYgUExBVEZPUk0oQ0cpCiAjaW5jbHVkZSA8Q29y
ZUdyYXBoaWNzL0NHQWZmaW5lVHJhbnNmb3JtLmg+CiAjZWxpZiBQTEFURk9STShDQUlSTykKQEAg
LTMwOSw3ICszMTIsMTIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0K
IAorI2lmIFBMQVRGT1JNKENBKQorICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4KGNvbnN0IENBVHJh
bnNmb3JtM0QmKTsKKyAgICBvcGVyYXRvciBDQVRyYW5zZm9ybTNEKCkgY29uc3Q7CisjZW5kaWYK
ICNpZiBQTEFURk9STShDRykKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeChjb25zdCBDR0FmZmlu
ZVRyYW5zZm9ybSYpOwogICAgIG9wZXJhdG9yIENHQWZmaW5lVHJhbnNmb3JtKCkgY29uc3Q7CiAj
ZWxpZiBQTEFURk9STShDQUlSTykKICAgICBvcGVyYXRvciBjYWlyb19tYXRyaXhfdCgpIGNvbnN0
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75846</attachid>
            <date>2010-12-07 14:57:10 -0800</date>
            <delta_ts>2010-12-14 01:27:39 -0800</delta_ts>
            <desc>Patch with some housekeeping changes</desc>
            <filename>bug-49388-20101207145709.patch</filename>
            <type>text/plain</type>
            <size>19625</size>
            <attacher name="Chris Marrin">cmarrin</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDczNDY3KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMTItMDcgIENocmlzIE1h
cnJpbiAgPGNtYXJyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFNoYXJlIGNvZGUgYmV0d2VlbiBNYWMgKENBKSBhbmQgV2luZG93
cyAoQ0FDRikgR3JhcGhpY3NMYXllciBpbXBsZW1lbnRhdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ5Mzg4CisKKyAgICAgICAgQWRkZWQgYSBX
VEZfUExBVEZPUk1fQ0EgZmxhZy4gU2V0IHdoZW4gcGxhdGZvcm0gaXMgTUFDIG9yIElPUyBvciAo
V0lORE9XUyBBTkQgQ0cpCisgICAgICAgIHdoaWNoIHdhcyBkZWNpZGVkIHdhcyB0aGUgYmVzdCB3
YXkgdG8gaWRlbnRpZnkgYSBidWlsZCB3aXRoIENvcmVBbmltYXRpb24KKworICAgICAgICAqIHd0
Zi9QbGF0Zm9ybS5oOgorCiAyMDEwLTEyLTA3ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBh
cHBsZS5jb20+CiAKICAgICAgICAgQnVpbGQgZml4IGZvbGxvdyB1cCBidWlsZCBmaXguCkluZGV4
OiBKYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS93dGYvUGxhdGZvcm0uaAkocmV2aXNpb24gNzM0NjcpCisrKyBKYXZhU2NyaXB0Q29yZS93
dGYvUGxhdGZvcm0uaAkod29ya2luZyBjb3B5KQpAQCAtNTMwLDYgKzUzMCw5IEBACiAjaWYgUExB
VEZPUk0oTUFDKSAmJiAhUExBVEZPUk0oSU9TKQogI2RlZmluZSBXVEZfUExBVEZPUk1fQ0kgMQog
I2VuZGlmCisjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShX
SU4pICYmIFBMQVRGT1JNKENHKSkKKyNkZWZpbmUgV1RGX1BMQVRGT1JNX0NBIDEKKyNlbmRpZgog
CiAvKiBQTEFURk9STShTS0lBKSBmb3IgV2luL0xpbnV4LCBDRy9DSSBmb3IgTWFjICovCiAjaWYg
UExBVEZPUk0oQ0hST01JVU0pCkluZGV4OiBXZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gNzM0NjcpCisrKyBXZWJDb3JlL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBACisyMDEwLTEyLTA3ICBDaHJpcyBNYXJy
aW4gIDxjbWFycmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBTaGFyZSBjb2RlIGJldHdlZW4gTWFjIChDQSkgYW5kIFdpbmRvd3Mg
KENBQ0YpIEdyYXBoaWNzTGF5ZXIgaW1wbGVtZW50YXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00OTM4OAorCisgICAgICAgIEFkZGVkIGNvcHkg
Y29uc3RydWN0b3JzIGFuZCBjYXN0aW5nIG9wZXJhdG9ycyB0byBnbyBiZXR3ZWVuIAorICAgICAg
ICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBhbmQgQ0FUcmFuc2Zvcm0zRC4gQWxzbyBhZGRlZCBhIGNv
cHkKKyAgICAgICAgY29uc3RydWN0b3IgdG8gZ28gZnJvbSBDR0FmZmluZVRyYW5zZm9ybSB0byBU
cmFuc2Zvcm1hdGlvbk1hdHJpeC4KKyAgICAgICAgVXNlZCB0aGVzZSBuZXcgbWV0aG9kcyB0byBj
bGVhbiB1cCBwbGF0Zm9ybSBDQSBjb2RlLiBUaGlzIHdpbGwKKyAgICAgICAgbWFrZSBpdCBlYXNp
ZXIgdG8gcG9ydCB0byBXaW5kb3dzLgorCisgICAgICAgIEkgYWxzbyBmaXhlZCBhIGNvdXBsZSBv
ZiBidWlsZCBpc3N1ZXMgZm91bmQgd2hlbiB0cnlpbmcgb3V0IGEgCisgICAgICAgIFdpbmRvd3Mg
YnVpbGQuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6ZW5zdXJlQ2xvbmVMYXllcnMpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpmZXRjaENsb25lTGF5ZXJzKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvUGxhdGZvcm1DQUFuaW1hdGlvbk1hYy5tbToKKyAg
ICAgICAgKFBsYXRmb3JtQ0FBbmltYXRpb246OnNldEZyb21WYWx1ZSk6CisgICAgICAgIChQbGF0
Zm9ybUNBQW5pbWF0aW9uOjpzZXRUb1ZhbHVlKToKKyAgICAgICAgKFBsYXRmb3JtQ0FBbmltYXRp
b246OnNldFZhbHVlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1BsYXRm
b3JtQ0FMYXllck1hYy5tbToKKyAgICAgICAgKFBsYXRmb3JtQ0FMYXllcjo6dHJhbnNmb3JtKToK
KyAgICAgICAgKFBsYXRmb3JtQ0FMYXllcjo6c2V0VHJhbnNmb3JtKToKKyAgICAgICAgKFBsYXRm
b3JtQ0FMYXllcjo6c3VibGF5ZXJUcmFuc2Zvcm0pOgorICAgICAgICAoUGxhdGZvcm1DQUxheWVy
OjpzZXRTdWJsYXllclRyYW5zZm9ybSk6CisgICAgICAgIChQbGF0Zm9ybUNBTGF5ZXI6OmNvbnRl
bnRzVHJhbnNmb3JtKToKKyAgICAgICAgKFBsYXRmb3JtQ0FMYXllcjo6c2V0Q29udGVudHNUcmFu
c2Zvcm0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1RyYW5zZm9ybWF0aW9uTWF0
cml4Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg6OlRyYW5z
Zm9ybWF0aW9uTWF0cml4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1z
L1RyYW5zZm9ybWF0aW9uTWF0cml4Lmg6CisKIDIwMTAtMTItMDcgIFNpbW9uIEZyYXNlciAgPHNp
bW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFuIEJlcm5zdGVp
bi4KSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZp
c2lvbiA3MzQ2NykKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDA5LDYgKzEwMDksNyBAQAogCQk0OTQ4NEZDQjEwMkNGMjND
MDAxODdERDMgLyogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTQ4NEZCRDEwMkNGMjNDMDAxODdERDMgLyog
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmggKi87IH07CiAJCTQ5NDg0RkNEMTAyQ0YyM0MwMDE4
N0REMyAvKiBDYW52YXNTdHlsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0OTQ4NEZCRjEwMkNGMjNDMDAxODdERDMgLyogQ2FudmFzU3R5bGUuY3Bw
ICovOyB9OwogCQk0OTQ4NEZDRTEwMkNGMjNDMDAxODdERDMgLyogQ2FudmFzU3R5bGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5NDg0RkMwMTAyQ0Yy
M0MwMDE4N0REMyAvKiBDYW52YXNTdHlsZS5oICovOyB9OworCQk0OTRCQzQwRDEyQUVERDlFMDA3
NDNCRDIgLyogVHJhbnNmb3JtYXRpb25NYXRyaXhDQS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTRCQzQwQzEyQUVERDlFMDA3NDNCRDIgLyogVHJh
bnNmb3JtYXRpb25NYXRyaXhDQS5jcHAgKi87IH07CiAJCTQ5NEJENzk1MEY1NUM4RUUwMDc0Nzgy
OCAvKiBXZWJLaXRQb2ludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDk0QkQ3OTMwRjU1QzhFRTAwNzQ3ODI4IC8qIFdlYktpdFBvaW50LmggKi87IH07
CiAJCTQ5NEJENzlEMEY1NUM5NEMwMDc0NzgyOCAvKiBKU1dlYktpdFBvaW50LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5NEJENzlCMEY1NUM5NEMw
MDc0NzgyOCAvKiBKU1dlYktpdFBvaW50LmNwcCAqLzsgfTsKIAkJNDk0QkQ3OUUwRjU1Qzk0QzAw
NzQ3ODI4IC8qIEpTV2ViS2l0UG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ5NEJENzlDMEY1NUM5NEMwMDc0NzgyOCAvKiBKU1dlYktpdFBvaW50
LmggKi87IH07CkBAIC03MTQ3LDYgKzcxNDgsNyBAQAogCQk0OTQ4NEZCRTEwMkNGMjNDMDAxODdE
RDMgLyogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUg
PSBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaWRsOyBwYXRoID0gY2FudmFzL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5NDg0RkJG
MTAyQ0YyM0MwMDE4N0REMyAvKiBDYW52YXNTdHlsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBDYW52YXNTdHlsZS5jcHA7IHBhdGggPSBjYW52YXMvQ2FudmFzU3R5
bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OTQ4NEZDMDEwMkNGMjNDMDAx
ODdERDMgLyogQ2FudmFzU3R5bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
Q2FudmFzU3R5bGUuaDsgcGF0aCA9IGNhbnZhcy9DYW52YXNTdHlsZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk0OTRCQzQwQzEyQUVERDlFMDA3NDNCRDIgLyogVHJhbnNmb3JtYXRp
b25NYXRyaXhDQS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBUcmFu
c2Zvcm1hdGlvbk1hdHJpeENBLmNwcDsgcGF0aCA9IGNhL1RyYW5zZm9ybWF0aW9uTWF0cml4Q0Eu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OTRCRDc5MzBGNTVDOEVFMDA3NDc4
MjggLyogV2ViS2l0UG9pbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vi
S2l0UG9pbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDk0QkQ3OTQwRjU1QzhF
RTAwNzQ3ODI4IC8qIFdlYktpdFBvaW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJL
aXRQb2ludC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5NEJENzlCMEY1NUM5
NEMwMDc0NzgyOCAvKiBKU1dlYktpdFBvaW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTV2ViS2l0UG9pbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTI4MDcsNiArMTI4MDksNyBAQAogCQkJCTQ5OUIzRUQ0MTI4Q0QzMTQwMEU3MjZDMiAv
KiBHcmFwaGljc0xheWVyQ0EuY3BwICovLAogCQkJCTQ5OUIzRUQ1MTI4Q0QzMTQwMEU3MjZDMiAv
KiBHcmFwaGljc0xheWVyQ0EuaCAqLywKIAkJCQk0OTlCM0VDMzEyOENDQzQ3MDBFNzI2QzIgLyog
UGxhdGZvcm1DQUxheWVyLmggKi8sCisJCQkJNDk0QkM0MEMxMkFFREQ5RTAwNzQzQkQyIC8qIFRy
YW5zZm9ybWF0aW9uTWF0cml4Q0EuY3BwICovLAogCQkJKTsKIAkJCW5hbWUgPSBjYTsKIAkJCXNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yNDEwMiw2ICsyNDEwNSw3IEBACiAJCQkJNDk5QjNF
RDYxMjhDRDMxNDAwRTcyNkMyIC8qIEdyYXBoaWNzTGF5ZXJDQS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk0OTU4NzgyMTEyQTU3RERGMDA3MjM4QUMgLyogUGxhdGZvcm1DQUFuaW1hdGlvbk1hYy5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTQ5NTg3ODIyMTJBNTdEREYwMDcyMzhBQyAvKiBQbGF0Zm9y
bUNBTGF5ZXJNYWMubW0gaW4gU291cmNlcyAqLywKKwkJCQk0OTRCQzQwRDEyQUVERDlFMDA3NDNC
RDIgLyogVHJhbnNmb3JtYXRpb25NYXRyaXhDQS5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJ
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAJKHJl
dmlzaW9uIDczNDY3KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xh
eWVyQ0EuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw5ICs0MCw3IEBACiAjaW5jbHVkZSAiVHJh
bnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSA8UXVhcnR6Q29yZS9RdWFydHpD
b3JlLmg+CiAjaW5jbHVkZSA8bGltaXRzLmg+Ci0jaW5jbHVkZSA8b2JqYy9vYmpjLWF1dG8uaD4K
ICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KLSNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0u
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgogCiB1c2luZyBuYW1l
c3BhY2Ugc3RkOwpAQCAtMTk5Miw4ICsxOTkwLDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnVw
ZGF0ZUNvbnRlbnRzVHJhbgogICAgIGlmIChjb250ZW50c09yaWVudGF0aW9uKCkgPT0gQ29tcG9z
aXRpbmdDb29yZGluYXRlc0JvdHRvbVVwKSB7CiAgICAgICAgIENHQWZmaW5lVHJhbnNmb3JtIGNv
bnRlbnRzVHJhbnNmb3JtID0gQ0dBZmZpbmVUcmFuc2Zvcm1NYWtlU2NhbGUoMSwgLTEpOwogICAg
ICAgICBjb250ZW50c1RyYW5zZm9ybSA9IENHQWZmaW5lVHJhbnNmb3JtVHJhbnNsYXRlKGNvbnRl
bnRzVHJhbnNmb3JtLCAwLCAtbV9sYXllci0+Ym91bmRzKCkuc2l6ZSgpLmhlaWdodCgpKTsKLSAg
ICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtM0QoY29udGVudHNUcmFuc2Zvcm0u
YSwgY29udGVudHNUcmFuc2Zvcm0uYiwgY29udGVudHNUcmFuc2Zvcm0uYywgY29udGVudHNUcmFu
c2Zvcm0uZCwgY29udGVudHNUcmFuc2Zvcm0udHgsIGNvbnRlbnRzVHJhbnNmb3JtLnR5KTsKLSAg
ICAgICAgbV9sYXllci0+c2V0Q29udGVudHNUcmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRyaXgo
dHJhbnNmb3JtM0QpKTsKKyAgICAgICAgbV9sYXllci0+c2V0Q29udGVudHNUcmFuc2Zvcm0oVHJh
bnNmb3JtYXRpb25NYXRyaXgoY29udGVudHNUcmFuc2Zvcm0pKTsKICAgICB9CiAjZW5kaWYKIH0K
QEAgLTIwNDcsOCArMjA0NCw4IEBAIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBHcmFwaGlj
c0xheWUKIAogdm9pZCBHcmFwaGljc0xheWVyQ0E6OmVuc3VyZUNsb25lTGF5ZXJzKENsb25lSUQg
Y2xvbmVJRCwgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4mIHByaW1hcnlMYXllciwgUmVmUHRyPFBs
YXRmb3JtQ0FMYXllcj4mIHN0cnVjdHVyYWxMYXllciwgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4m
IGNvbnRlbnRzTGF5ZXIsIENsb25lTGV2ZWwgY2xvbmVMZXZlbCkKIHsKLSAgICBzdHJ1Y3R1cmFs
TGF5ZXIgPSBuaWw7Ci0gICAgY29udGVudHNMYXllciA9IG5pbDsKKyAgICBzdHJ1Y3R1cmFsTGF5
ZXIgPSAwOworICAgIGNvbnRlbnRzTGF5ZXIgPSAwOwogCiAgICAgaWYgKCFtX2xheWVyQ2xvbmVz
KQogICAgICAgICBtX2xheWVyQ2xvbmVzID0gbmV3IExheWVyTWFwOwpAQCAtMjExMCw3ICsyMTA3
LDcgQEAgUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IEdyYXBoaWNzTGF5ZQogICAgICAgICAv
LyBXZSBhcmUgYSByZXBsaWNhIGJlaW5nIGFza2VkIGZvciBjbG9uZXMgb2Ygb3VyIGxheWVycy4K
ICAgICAgICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gcmVwbGljYVJvb3QgPSByZXBsaWNhdGVk
TGF5ZXJSb290KHJlcGxpY2FTdGF0ZSk7CiAgICAgICAgIGlmICghcmVwbGljYVJvb3QpCi0gICAg
ICAgICAgICByZXR1cm4gbmlsOworICAgICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAgICAgaWYg
KHN0cnVjdHVyYWxMYXllcikgewogICAgICAgICAgICAgc3RydWN0dXJhbExheWVyLT5pbnNlcnRT
dWJsYXllcihyZXBsaWNhUm9vdC5nZXQoKSwgMCk7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL1RyYW5zZm9ybWF0aW9uTWF0cml4Q0EuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVHJhbnNmb3JtYXRpb25NYXRyaXhDQS5jcHAJKHJldmlz
aW9uIDApCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RyYW5zZm9ybWF0aW9uTWF0
cml4Q0EuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisKKyNpZiBQTEFURk9STShDQSkKKworI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4
LmgiCisKKyNpbmNsdWRlICJGbG9hdENvbnZlcnNpb24uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6VHJhbnNmb3JtYXRpb25NYXRyaXgoY29uc3QgQ0FU
cmFuc2Zvcm0zRCYgdCkKK3sKKyAgICBzZXRNYXRyaXgoCisgICAgICAgIHQubTExLCB0Lm0xMiwg
dC5tMTMsIHQubTE0LAorICAgICAgICB0Lm0yMSwgdC5tMjIsIHQubTIzLCB0Lm0yNCwgCisgICAg
ICAgIHQubTMxLCB0Lm0zMiwgdC5tMzMsIHQubTM0LCAKKyAgICAgICAgdC5tNDEsIHQubTQyLCB0
Lm00MywgdC5tNDQpOworfQorCitUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6b3BlcmF0b3IgQ0FUcmFu
c2Zvcm0zRCgpIGNvbnN0Cit7CisgICAgQ0FUcmFuc2Zvcm0zRCB0b1QzRDsKKyAgICB0b1QzRC5t
MTEgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KG0xMSgpKTsKKyAgICB0b1QzRC5tMTIgPSBuYXJy
b3dQcmVjaXNpb25Ub0Zsb2F0KG0xMigpKTsKKyAgICB0b1QzRC5tMTMgPSBuYXJyb3dQcmVjaXNp
b25Ub0Zsb2F0KG0xMygpKTsKKyAgICB0b1QzRC5tMTQgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0
KG0xNCgpKTsKKyAgICB0b1QzRC5tMjEgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KG0yMSgpKTsK
KyAgICB0b1QzRC5tMjIgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KG0yMigpKTsKKyAgICB0b1Qz
RC5tMjMgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KG0yMygpKTsKKyAgICB0b1QzRC5tMjQgPSBu
YXJyb3dQcmVjaXNpb25Ub0Zsb2F0KG0yNCgpKTsKKyAgICB0b1QzRC5tMzEgPSBuYXJyb3dQcmVj
aXNpb25Ub0Zsb2F0KG0zMSgpKTsKKyAgICB0b1QzRC5tMzIgPSBuYXJyb3dQcmVjaXNpb25Ub0Zs
b2F0KG0zMigpKTsKKyAgICB0b1QzRC5tMzMgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KG0zMygp
KTsKKyAgICB0b1QzRC5tMzQgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KG0zNCgpKTsKKyAgICB0
b1QzRC5tNDEgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KG00MSgpKTsKKyAgICB0b1QzRC5tNDIg
PSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KG00MigpKTsKKyAgICB0b1QzRC5tNDMgPSBuYXJyb3dQ
cmVjaXNpb25Ub0Zsb2F0KG00MygpKTsKKyAgICB0b1QzRC5tNDQgPSBuYXJyb3dQcmVjaXNpb25U
b0Zsb2F0KG00NCgpKTsKKyAgICByZXR1cm4gdG9UM0Q7Cit9CisKK30KKworI2VuZGlmIC8vIFBM
QVRGT1JNKENBKQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvUGxhdGZv
cm1DQUFuaW1hdGlvbk1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9uTWFjLm1tCShyZXZpc2lvbiA3MzQ2NykKKysr
IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1BsYXRmb3JtQ0FBbmltYXRpb25NYWMu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTQyLDI2ICs0Miw2IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogLy8gVGhpcyB2YWx1ZSBtdXN0IGJlIHRoZSBzYW1lIGFzIGluIFBsYXRmb3JtQ0FMYXll
ck1hYy5tbQogc3RhdGljIGNvbnN0IE5TU3RyaW5nKiBXS05vblplcm9CZWdpblRpbWVGbGFnID0g
QCJXS1BsYXRmb3JtQ0FBbmltYXRpb25Ob25aZXJvQmVnaW5UaW1lRmxhZyI7CiAKLXN0YXRpYyBp
bmxpbmUgdm9pZCBjb3B5VHJhbnNmb3JtKENBVHJhbnNmb3JtM0QmIHRvVDNELCBjb25zdCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYgdCkKLXsKLSAgICB0b1QzRC5tMTEgPSBuYXJyb3dQcmVjaXNpb25U
b0Zsb2F0KHQubTExKCkpOwotICAgIHRvVDNELm0xMiA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQo
dC5tMTIoKSk7Ci0gICAgdG9UM0QubTEzID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCh0Lm0xMygp
KTsKLSAgICB0b1QzRC5tMTQgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHQubTE0KCkpOwotICAg
IHRvVDNELm0yMSA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodC5tMjEoKSk7Ci0gICAgdG9UM0Qu
bTIyID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCh0Lm0yMigpKTsKLSAgICB0b1QzRC5tMjMgPSBu
YXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHQubTIzKCkpOwotICAgIHRvVDNELm0yNCA9IG5hcnJvd1By
ZWNpc2lvblRvRmxvYXQodC5tMjQoKSk7Ci0gICAgdG9UM0QubTMxID0gbmFycm93UHJlY2lzaW9u
VG9GbG9hdCh0Lm0zMSgpKTsKLSAgICB0b1QzRC5tMzIgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0
KHQubTMyKCkpOwotICAgIHRvVDNELm0zMyA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodC5tMzMo
KSk7Ci0gICAgdG9UM0QubTM0ID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCh0Lm0zNCgpKTsKLSAg
ICB0b1QzRC5tNDEgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHQubTQxKCkpOwotICAgIHRvVDNE
Lm00MiA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodC5tNDIoKSk7Ci0gICAgdG9UM0QubTQzID0g
bmFycm93UHJlY2lzaW9uVG9GbG9hdCh0Lm00MygpKTsKLSAgICB0b1QzRC5tNDQgPSBuYXJyb3dQ
cmVjaXNpb25Ub0Zsb2F0KHQubTQ0KCkpOwotfQotCiBzdGF0aWMgTlNTdHJpbmcqIHRvQ0FGaWxs
TW9kZVR5cGUoUGxhdGZvcm1DQUFuaW1hdGlvbjo6RmlsbE1vZGVUeXBlIHR5cGUpCiB7CiAgICAg
c3dpdGNoICh0eXBlKSB7CkBAIC0zODksMTAgKzM2OSw4IEBAIHZvaWQgUGxhdGZvcm1DQUFuaW1h
dGlvbjo6c2V0RnJvbVZhbHVlKGMKIHsKICAgICBpZiAoYW5pbWF0aW9uVHlwZSgpICE9IEJhc2lj
KQogICAgICAgICByZXR1cm47Ci0KLSAgICBDQVRyYW5zZm9ybTNEIGNhVHJhbnNmb3JtOwotICAg
IGNvcHlUcmFuc2Zvcm0oY2FUcmFuc2Zvcm0sIHZhbHVlKTsKLSAgICBbc3RhdGljX2Nhc3Q8Q0FC
YXNpY0FuaW1hdGlvbio+KG1fYW5pbWF0aW9uLmdldCgpKSBzZXRGcm9tVmFsdWU6W05TVmFsdWUg
dmFsdWVXaXRoQ0FUcmFuc2Zvcm0zRDpjYVRyYW5zZm9ybV1dOworICAgICAgICAKKyAgICBbc3Rh
dGljX2Nhc3Q8Q0FCYXNpY0FuaW1hdGlvbio+KG1fYW5pbWF0aW9uLmdldCgpKSBzZXRGcm9tVmFs
dWU6W05TVmFsdWUgdmFsdWVXaXRoQ0FUcmFuc2Zvcm0zRDp2YWx1ZV1dOwogfQogCiB2b2lkIFBs
YXRmb3JtQ0FBbmltYXRpb246OnNldEZyb21WYWx1ZShjb25zdCBGbG9hdFBvaW50M0QmIHZhbHVl
KQpAQCAtNDQzLDkgKzQyMSw3IEBAIHZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbjo6c2V0VG9WYWx1
ZShjb24KICAgICBpZiAoYW5pbWF0aW9uVHlwZSgpICE9IEJhc2ljKQogICAgICAgICByZXR1cm47
CiAKLSAgICBDQVRyYW5zZm9ybTNEIGNhVHJhbnNmb3JtOwotICAgIGNvcHlUcmFuc2Zvcm0oY2FU
cmFuc2Zvcm0sIHZhbHVlKTsKLSAgICBbc3RhdGljX2Nhc3Q8Q0FCYXNpY0FuaW1hdGlvbio+KG1f
YW5pbWF0aW9uLmdldCgpKSBzZXRUb1ZhbHVlOltOU1ZhbHVlIHZhbHVlV2l0aENBVHJhbnNmb3Jt
M0Q6Y2FUcmFuc2Zvcm1dXTsKKyAgICBbc3RhdGljX2Nhc3Q8Q0FCYXNpY0FuaW1hdGlvbio+KG1f
YW5pbWF0aW9uLmdldCgpKSBzZXRUb1ZhbHVlOltOU1ZhbHVlIHZhbHVlV2l0aENBVHJhbnNmb3Jt
M0Q6dmFsdWVdXTsKIH0KIAogdm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpzZXRUb1ZhbHVlKGNv
bnN0IEZsb2F0UG9pbnQzRCYgdmFsdWUpCkBAIC01MDMsMTIgKzQ3OSwxMCBAQCB2b2lkIFBsYXRm
b3JtQ0FBbmltYXRpb246OnNldFZhbHVlcyhjb25zCiAgICAgICAgIHJldHVybjsKICAgICAgICAg
CiAgICAgTlNNdXRhYmxlQXJyYXkqIGFycmF5ID0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsKLSAg
ICBDQVRyYW5zZm9ybTNEIGNhVHJhbnNmb3JtOwogCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCB2YWx1ZS5zaXplKCk7ICsraSkgewotICAgICAgICBjb3B5VHJhbnNmb3JtKGNhVHJhbnNmb3Jt
LCB2YWx1ZVtpXSk7Ci0gICAgICAgIFthcnJheSBhZGRPYmplY3Q6W05TVmFsdWUgdmFsdWVXaXRo
Q0FUcmFuc2Zvcm0zRDpjYVRyYW5zZm9ybV1dOwotICAgIH0KKyAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHZhbHVlLnNpemUoKTsgKytpKQorICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OltOU1Zh
bHVlIHZhbHVlV2l0aENBVHJhbnNmb3JtM0Q6dmFsdWVbaV1dXTsKKyAgICAgICAgCiAgICAgW3N0
YXRpY19jYXN0PENBS2V5ZnJhbWVBbmltYXRpb24qPihtX2FuaW1hdGlvbi5nZXQoKSkgc2V0VmFs
dWVzOmFycmF5XTsKIH0KIApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMv
UGxhdGZvcm1DQUxheWVyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvbWFjL1BsYXRmb3JtQ0FMYXllck1hYy5tbQkocmV2aXNpb24gNzM0NjcpCisrKyBX
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9QbGF0Zm9ybUNBTGF5ZXJNYWMubW0JKHdv
cmtpbmcgY29weSkKQEAgLTk1LDI2ICs5NSw2IEBAIC0gKHZvaWQpc2V0Q29udGVudHNDaGFuZ2Vk
OwogCiBzdGF0aWMgY29uc3QgTlNTdHJpbmcqIHBsYXRmb3JtQ0FMYXllclBvaW50ZXIgPSBAIldL
UGxhdGZvcm1DQUxheWVyIjsKIAotc3RhdGljIGlubGluZSB2b2lkIGNvcHlUcmFuc2Zvcm0oQ0FU
cmFuc2Zvcm0zRCYgdG9UM0QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0KQotewotICAg
IHRvVDNELm0xMSA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodC5tMTEoKSk7Ci0gICAgdG9UM0Qu
bTEyID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCh0Lm0xMigpKTsKLSAgICB0b1QzRC5tMTMgPSBu
YXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHQubTEzKCkpOwotICAgIHRvVDNELm0xNCA9IG5hcnJvd1By
ZWNpc2lvblRvRmxvYXQodC5tMTQoKSk7Ci0gICAgdG9UM0QubTIxID0gbmFycm93UHJlY2lzaW9u
VG9GbG9hdCh0Lm0yMSgpKTsKLSAgICB0b1QzRC5tMjIgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0
KHQubTIyKCkpOwotICAgIHRvVDNELm0yMyA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodC5tMjMo
KSk7Ci0gICAgdG9UM0QubTI0ID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCh0Lm0yNCgpKTsKLSAg
ICB0b1QzRC5tMzEgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHQubTMxKCkpOwotICAgIHRvVDNE
Lm0zMiA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodC5tMzIoKSk7Ci0gICAgdG9UM0QubTMzID0g
bmFycm93UHJlY2lzaW9uVG9GbG9hdCh0Lm0zMygpKTsKLSAgICB0b1QzRC5tMzQgPSBuYXJyb3dQ
cmVjaXNpb25Ub0Zsb2F0KHQubTM0KCkpOwotICAgIHRvVDNELm00MSA9IG5hcnJvd1ByZWNpc2lv
blRvRmxvYXQodC5tNDEoKSk7Ci0gICAgdG9UM0QubTQyID0gbmFycm93UHJlY2lzaW9uVG9GbG9h
dCh0Lm00MigpKTsKLSAgICB0b1QzRC5tNDMgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHQubTQz
KCkpOwotICAgIHRvVDNELm00NCA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodC5tNDQoKSk7Ci19
Ci0KIGJvb2wgUGxhdGZvcm1DQUxheWVyOjppc1ZhbHVlRnVuY3Rpb25TdXBwb3J0ZWQoKQogewog
ICAgIHN0YXRpYyBib29sIHNIYXZlVmFsdWVGdW5jdGlvbiA9IFtDQVByb3BlcnR5QW5pbWF0aW9u
IGluc3RhbmNlc1Jlc3BvbmRUb1NlbGVjdG9yOkBzZWxlY3RvcihzZXRWYWx1ZUZ1bmN0aW9uOild
OwpAQCAtNDU4LDMxICs0MzgsMjUgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OnNldEFuY2hvclBv
aW50KGNvbgogCiBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBQbGF0Zm9ybUNBTGF5ZXI6OnRyYW5zZm9y
bSgpIGNvbnN0CiB7Ci0gICAgQ0FUcmFuc2Zvcm0zRCB0ID0gW21fbGF5ZXIuZ2V0KCkgdHJhbnNm
b3JtXTsKLSAgICByZXR1cm4gVHJhbnNmb3JtYXRpb25NYXRyaXgodC5tMTEsIHQubTEyLCB0Lm0x
MywgdC5tMTQsIHQubTIxLCB0Lm0yMiwgdC5tMjMsIHQubTI0LCB0Lm0zMSwgdC5tMzIsIHQubTMz
LCB0Lm0zNCwgdC5tNDEsIHQubTQyLCB0Lm00MywgdC5tNDQpOworICAgIHJldHVybiBbbV9sYXll
ci5nZXQoKSB0cmFuc2Zvcm1dOwogfQogCiB2b2lkIFBsYXRmb3JtQ0FMYXllcjo6c2V0VHJhbnNm
b3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB2YWx1ZSkKIHsKLSAgICBDQVRyYW5zZm9y
bTNEIHRyYW5zZm9ybTsKLSAgICBjb3B5VHJhbnNmb3JtKHRyYW5zZm9ybSwgdmFsdWUpOwogICAg
IEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIFttX2xheWVyLmdldCgpIHNldFRyYW5z
Zm9ybTp0cmFuc2Zvcm1dOworICAgIFttX2xheWVyLmdldCgpIHNldFRyYW5zZm9ybTp2YWx1ZV07
CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogfQogCiBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCBQbGF0Zm9ybUNBTGF5ZXI6OnN1YmxheWVyVHJhbnNmb3JtKCkgY29uc3QKIHsKLSAgICBDQVRy
YW5zZm9ybTNEIHQgPSBbbV9sYXllci5nZXQoKSBzdWJsYXllclRyYW5zZm9ybV07Ci0gICAgcmV0
dXJuIFRyYW5zZm9ybWF0aW9uTWF0cml4KHQubTExLCB0Lm0xMiwgdC5tMTMsIHQubTE0LCB0Lm0y
MSwgdC5tMjIsIHQubTIzLCB0Lm0yNCwgdC5tMzEsIHQubTMyLCB0Lm0zMywgdC5tMzQsIHQubTQx
LCB0Lm00MiwgdC5tNDMsIHQubTQ0KTsKKyAgICByZXR1cm4gW21fbGF5ZXIuZ2V0KCkgc3VibGF5
ZXJUcmFuc2Zvcm1dOwogfQogCiB2b2lkIFBsYXRmb3JtQ0FMYXllcjo6c2V0U3VibGF5ZXJUcmFu
c2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHZhbHVlKQogewotICAgIENBVHJhbnNm
b3JtM0QgdHJhbnNmb3JtOwotICAgIGNvcHlUcmFuc2Zvcm0odHJhbnNmb3JtLCB2YWx1ZSk7CiAg
ICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgW21fbGF5ZXIuZ2V0KCkgc2V0U3Vi
bGF5ZXJUcmFuc2Zvcm06dHJhbnNmb3JtXTsKKyAgICBbbV9sYXllci5nZXQoKSBzZXRTdWJsYXll
clRyYW5zZm9ybTp2YWx1ZV07CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogfQogCkBA
IC00OTIsOCArNDY2LDcgQEAgVHJhbnNmb3JtYXRpb25NYXRyaXggUGxhdGZvcm1DQUxheWVyOjpj
bwogICAgIGlmIChtX2xheWVyVHlwZSAhPSBMYXllclR5cGVXZWJMYXllcikKICAgICAgICAgcmV0
dXJuIFRyYW5zZm9ybWF0aW9uTWF0cml4KCk7CiAgICAgICAgIAotICAgIENHQWZmaW5lVHJhbnNm
b3JtIHQgPSBbc3RhdGljX2Nhc3Q8V2ViTGF5ZXIqPihtX2xheWVyLmdldCgpKSBjb250ZW50c1Ry
YW5zZm9ybV07Ci0gICAgcmV0dXJuIFRyYW5zZm9ybWF0aW9uTWF0cml4KHQuYSwgdC5iLCB0LmMs
IHQuZCwgdC50eCwgdC50eSk7CisgICAgcmV0dXJuIFtzdGF0aWNfY2FzdDxXZWJMYXllcio+KG1f
bGF5ZXIuZ2V0KCkpIGNvbnRlbnRzVHJhbnNmb3JtXTsKICNlbHNlCiAgICAgcmV0dXJuIFRyYW5z
Zm9ybWF0aW9uTWF0cml4KCk7CiAjZW5kaWYKQEAgLTUwNSw5ICs0NzgsOCBAQCB2b2lkIFBsYXRm
b3JtQ0FMYXllcjo6c2V0Q29udGVudHNUcmFuc2ZvCiAgICAgaWYgKG1fbGF5ZXJUeXBlICE9IExh
eWVyVHlwZVdlYkxheWVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBDR0FmZmluZVRyYW5zZm9y
bSB0cmFuc2Zvcm0gPSB2YWx1ZTsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAg
ICBbbV9sYXllci5nZXQoKSBzZXRDb250ZW50c1RyYW5zZm9ybTp0cmFuc2Zvcm1dOworICAgIFtt
X2xheWVyLmdldCgpIHNldENvbnRlbnRzVHJhbnNmb3JtOnZhbHVlXTsKICAgICBFTkRfQkxPQ0tf
T0JKQ19FWENFUFRJT05TCiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7CkluZGV4OiBX
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1RyYW5zZm9ybWF0aW9uTWF0cml4Q0cuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvVHJhbnNmb3JtYXRpb25N
YXRyaXhDRy5jcHAJKHJldmlzaW9uIDczNDY3KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9UcmFuc2Zvcm1hdGlvbk1hdHJpeENHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiAr
MzQsMTYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6
VHJhbnNmb3JtYXRpb25NYXRyaXgoY29uc3QgQ0dBZmZpbmVUcmFuc2Zvcm0mIHQpCit7CisgICAg
c2V0QSh0LmEpOworICAgIHNldEIodC5iKTsKKyAgICBzZXRDKHQuYyk7CisgICAgc2V0RCh0LmQp
OworICAgIHNldEUodC50eCk7CisgICAgc2V0Rih0LnR5KTsKK30KKwogVHJhbnNmb3JtYXRpb25N
YXRyaXg6Om9wZXJhdG9yIENHQWZmaW5lVHJhbnNmb3JtKCkgY29uc3QKIHsKICAgICByZXR1cm4g
Q0dBZmZpbmVUcmFuc2Zvcm1NYWtlKG5hcnJvd1ByZWNpc2lvblRvQ0dGbG9hdChhKCkpLApJbmRl
eDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0
cml4LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1z
L1RyYW5zZm9ybWF0aW9uTWF0cml4LmgJKHJldmlzaW9uIDczNDY3KQorKysgV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMyLDYgKzMyLDkgQEAKICNpbmNsdWRlIDxzdHJpbmcuaD4gLy9mb3IgbWVtY3B5
CiAjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4KIAorI2lmIFBMQVRGT1JNKENBKQorI2lu
Y2x1ZGUgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgorI2VuZGlmCiAjaWYgUExBVEZPUk0oQ0cp
CiAjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NHQWZmaW5lVHJhbnNmb3JtLmg+CiAjZWxpZiBQTEFU
Rk9STShDQUlSTykKQEAgLTMwOSw3ICszMTIsMTIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
cmVzdWx0OwogICAgIH0KIAorI2lmIFBMQVRGT1JNKENBKQorICAgIFRyYW5zZm9ybWF0aW9uTWF0
cml4KGNvbnN0IENBVHJhbnNmb3JtM0QmKTsKKyAgICBvcGVyYXRvciBDQVRyYW5zZm9ybTNEKCkg
Y29uc3Q7CisjZW5kaWYKICNpZiBQTEFURk9STShDRykKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJp
eChjb25zdCBDR0FmZmluZVRyYW5zZm9ybSYpOwogICAgIG9wZXJhdG9yIENHQWZmaW5lVHJhbnNm
b3JtKCkgY29uc3Q7CiAjZWxpZiBQTEFURk9STShDQUlSTykKICAgICBvcGVyYXRvciBjYWlyb19t
YXRyaXhfdCgpIGNvbnN0Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75943</attachid>
            <date>2010-12-08 12:12:58 -0800</date>
            <delta_ts>2010-12-09 17:36:30 -0800</delta_ts>
            <desc>Resubmission of last patch with build fixes</desc>
            <filename>bug-49388-20101208121258.patch</filename>
            <type>text/plain</type>
            <size>21804</size>
            <attacher name="Chris Marrin">cmarrin</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDczNTM2KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMTItMDggIENocmlzIE1h
cnJpbiAgPGNtYXJyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFNoYXJlIGNvZGUgYmV0d2VlbiBNYWMgKENBKSBhbmQgV2luZG93
cyAoQ0FDRikgR3JhcGhpY3NMYXllciBpbXBsZW1lbnRhdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ5Mzg4CisKKyAgICAgICAgQWRkZWQgYSBX
VEZfUExBVEZPUk1fQ0EgZmxhZy4gU2V0IHdoZW4gcGxhdGZvcm0gaXMgTUFDIG9yIElPUyBvciAo
V0lORE9XUyBBTkQgQ0cpCisgICAgICAgIHdoaWNoIHdhcyBkZWNpZGVkIHdhcyB0aGUgYmVzdCB3
YXkgdG8gaWRlbnRpZnkgYSBidWlsZCB3aXRoIENvcmVBbmltYXRpb24KKworICAgICAgICAqIHd0
Zi9QbGF0Zm9ybS5oOgorCiAyMDEwLTEyLTA3ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBh
cHBsZS5jb20+CiAKICAgICAgICAgQnVpbGQgZml4IGZvbGxvdyB1cCBidWlsZCBmaXguCkluZGV4
OiBKYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS93dGYvUGxhdGZvcm0uaAkocmV2aXNpb24gNzM1MjgpCisrKyBKYXZhU2NyaXB0Q29yZS93
dGYvUGxhdGZvcm0uaAkod29ya2luZyBjb3B5KQpAQCAtNTMwLDYgKzUzMCw5IEBACiAjaWYgUExB
VEZPUk0oTUFDKSAmJiAhUExBVEZPUk0oSU9TKQogI2RlZmluZSBXVEZfUExBVEZPUk1fQ0kgMQog
I2VuZGlmCisjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShX
SU4pICYmIFBMQVRGT1JNKENHKSkKKyNkZWZpbmUgV1RGX1BMQVRGT1JNX0NBIDEKKyNlbmRpZgog
CiAvKiBQTEFURk9STShTS0lBKSBmb3IgV2luL0xpbnV4LCBDRy9DSSBmb3IgTWFjICovCiAjaWYg
UExBVEZPUk0oQ0hST01JVU0pCkluZGV4OiBXZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gNzM1MzYpCisrKyBXZWJDb3JlL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3IEBACisyMDEwLTEyLTA4ICBDaHJpcyBNYXJy
aW4gIDxjbWFycmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBTaGFyZSBjb2RlIGJldHdlZW4gTWFjIChDQSkgYW5kIFdpbmRvd3Mg
KENBQ0YpIEdyYXBoaWNzTGF5ZXIgaW1wbGVtZW50YXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00OTM4OAorCisgICAgICAgIEFkZGVkIGNvcHkg
Y29uc3RydWN0b3JzIGFuZCBjYXN0aW5nIG9wZXJhdG9ycyB0byBnbyBiZXR3ZWVuIAorICAgICAg
ICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBhbmQgQ0FUcmFuc2Zvcm0zRC4gQWxzbyBhZGRlZCBhIGNv
cHkKKyAgICAgICAgY29uc3RydWN0b3IgdG8gZ28gZnJvbSBDR0FmZmluZVRyYW5zZm9ybSB0byBU
cmFuc2Zvcm1hdGlvbk1hdHJpeC4KKyAgICAgICAgVXNlZCB0aGVzZSBuZXcgbWV0aG9kcyB0byBj
bGVhbiB1cCBwbGF0Zm9ybSBDQSBjb2RlLiBUaGlzIHdpbGwKKyAgICAgICAgbWFrZSBpdCBlYXNp
ZXIgdG8gcG9ydCB0byBXaW5kb3dzLgorCisgICAgICAgIEkgYWxzbyBmaXhlZCBhIGNvdXBsZSBv
ZiBidWlsZCBpc3N1ZXMgZm91bmQgd2hlbiB0cnlpbmcgb3V0IGEgCisgICAgICAgIFdpbmRvd3Mg
YnVpbGQuCisKKyAgICAgICAgVGhpcyBpcyBhIHJlc3VibWlzc2lvbiBvZiBjaGFuZ2VzZXRzIHI3
MzQ3NyBhbmQgcjczNDgzIHdpdGggYSAKKyAgICAgICAgZml4IGZvciB0aGUgU0wgYnVpbGQuIFRo
ZSBmYWlsdXJlIHdhcyBiZWNhdXNlIFRyYW5zZm9ybWF0aW9uTWF0cml4CisgICAgICAgIGluY2x1
ZGVkIFF1YXJ0ekNvcmUvQ0FUcmFuc2Zvcm0zRC5oIHdoaWNoIGJyb3VnaHQgaW4gc29tZSBzeXN0
ZW0KKyAgICAgICAgbGlicmFyaWVzLCBpbmNsdWRpbmcgUXVpY2tkcmF3LCB3aGljaCBoYXMgYSBk
ZWZpbml0aW9uIGZvcgorICAgICAgICAnQ3Vyc29yJyB3aGljaCBjbGFzaGVkIHdpdGggV2ViQ29y
ZSdzICdDdXJzb3InIGNsYXNzLiBTbyBJIGhhZAorICAgICAgICB0byBxdWFsaWZ5IGl0cyB1c2Ug
aW4gV2ViQ2hyb21lQ2xpZW50LmNwcCBpbiBXZWJLaXQyLgorCisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nh
L0dyYXBoaWNzTGF5ZXJDQS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6
OnVwZGF0ZUNvbnRlbnRzVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXJDQTo6ZW5zdXJlQ2xvbmVMYXllcnMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXll
ckNBOjpmZXRjaENsb25lTGF5ZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9U
cmFuc2Zvcm1hdGlvbk1hdHJpeENBLmNwcDogQ29waWVkIGZyb20gV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9UcmFuc2Zvcm1hdGlvbk1hdHJpeENBLmNwcC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jYS9tYWMvUGxhdGZvcm1DQUFuaW1hdGlvbk1hYy5tbToKKyAgICAgICAgKFBs
YXRmb3JtQ0FBbmltYXRpb246OnNldEZyb21WYWx1ZSk6CisgICAgICAgIChQbGF0Zm9ybUNBQW5p
bWF0aW9uOjpzZXRUb1ZhbHVlKToKKyAgICAgICAgKFBsYXRmb3JtQ0FBbmltYXRpb246OnNldFZh
bHVlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1BsYXRmb3JtQ0FMYXll
ck1hYy5tbToKKyAgICAgICAgKFBsYXRmb3JtQ0FMYXllcjo6dHJhbnNmb3JtKToKKyAgICAgICAg
KFBsYXRmb3JtQ0FMYXllcjo6c2V0VHJhbnNmb3JtKToKKyAgICAgICAgKFBsYXRmb3JtQ0FMYXll
cjo6c3VibGF5ZXJUcmFuc2Zvcm0pOgorICAgICAgICAoUGxhdGZvcm1DQUxheWVyOjpzZXRTdWJs
YXllclRyYW5zZm9ybSk6CisgICAgICAgIChQbGF0Zm9ybUNBTGF5ZXI6OmNvbnRlbnRzVHJhbnNm
b3JtKToKKyAgICAgICAgKFBsYXRmb3JtQ0FMYXllcjo6c2V0Q29udGVudHNUcmFuc2Zvcm0pOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1RyYW5zZm9ybWF0aW9uTWF0cml4Q0cuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg6OlRyYW5zZm9ybWF0aW9u
TWF0cml4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9y
bWF0aW9uTWF0cml4Lmg6CisKIDIwMTAtMTItMDcgIEJyaWFuIFdlaW5zdGVpbiAgPGJ3ZWluc3Rl
aW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEpvaG4gU3VsbGl2YW4uCkluZGV4
OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gNzM1
MjgpCisrKyBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2lu
ZyBjb3B5KQpAQCAtMTAwOSw2ICsxMDA5LDcgQEAKIAkJNDk0ODRGQ0IxMDJDRjIzQzAwMTg3REQz
IC8qIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDk0ODRGQkQxMDJDRjIzQzAwMTg3REQzIC8qIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRC5oICovOyB9OwogCQk0OTQ4NEZDRDEwMkNGMjNDMDAxODdERDMgLyog
Q2FudmFzU3R5bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDk0ODRGQkYxMDJDRjIzQzAwMTg3REQzIC8qIENhbnZhc1N0eWxlLmNwcCAqLzsgfTsK
IAkJNDk0ODRGQ0UxMDJDRjIzQzAwMTg3REQzIC8qIENhbnZhc1N0eWxlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTQ4NEZDMDEwMkNGMjNDMDAxODdE
RDMgLyogQ2FudmFzU3R5bGUuaCAqLzsgfTsKKwkJNDk0QkM0MEQxMkFFREQ5RTAwNzQzQkQyIC8q
IFRyYW5zZm9ybWF0aW9uTWF0cml4Q0EuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDk0QkM0MEMxMkFFREQ5RTAwNzQzQkQyIC8qIFRyYW5zZm9ybWF0
aW9uTWF0cml4Q0EuY3BwICovOyB9OwogCQk0OTRCRDc5NTBGNTVDOEVFMDA3NDc4MjggLyogV2Vi
S2l0UG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ5NEJENzkzMEY1NUM4RUUwMDc0NzgyOCAvKiBXZWJLaXRQb2ludC5oICovOyB9OwogCQk0OTRC
RDc5RDBGNTVDOTRDMDA3NDc4MjggLyogSlNXZWJLaXRQb2ludC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTRCRDc5QjBGNTVDOTRDMDA3NDc4Mjgg
LyogSlNXZWJLaXRQb2ludC5jcHAgKi87IH07CiAJCTQ5NEJENzlFMEY1NUM5NEMwMDc0NzgyOCAv
KiBKU1dlYktpdFBvaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0OTRCRDc5QzBGNTVDOTRDMDA3NDc4MjggLyogSlNXZWJLaXRQb2ludC5oICovOyB9
OwpAQCAtNzE0Nyw2ICs3MTQ4LDcgQEAKIAkJNDk0ODRGQkUxMDJDRjIzQzAwMTg3REQzIC8qIENh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJELmlkbDsgcGF0aCA9IGNhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OTQ4NEZCRjEwMkNGMjND
MDAxODdERDMgLyogQ2FudmFzU3R5bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gQ2FudmFzU3R5bGUuY3BwOyBwYXRoID0gY2FudmFzL0NhbnZhc1N0eWxlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDk0ODRGQzAxMDJDRjIzQzAwMTg3REQzIC8q
IENhbnZhc1N0eWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IENhbnZhc1N0
eWxlLmg7IHBhdGggPSBjYW52YXMvQ2FudmFzU3R5bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNDk0QkM0MEMxMkFFREQ5RTAwNzQzQkQyIC8qIFRyYW5zZm9ybWF0aW9uTWF0cml4
Q0EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gVHJhbnNmb3JtYXRp
b25NYXRyaXhDQS5jcHA7IHBhdGggPSBjYS9UcmFuc2Zvcm1hdGlvbk1hdHJpeENBLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDk0QkQ3OTMwRjU1QzhFRTAwNzQ3ODI4IC8qIFdl
YktpdFBvaW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYktpdFBvaW50
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5NEJENzk0MEY1NUM4RUUwMDc0Nzgy
OCAvKiBXZWJLaXRQb2ludC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViS2l0UG9pbnQu
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OTRCRDc5QjBGNTVDOTRDMDA3NDc4
MjggLyogSlNXZWJLaXRQb2ludC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU1dlYktpdFBvaW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEy
ODA3LDYgKzEyODA5LDcgQEAKIAkJCQk0OTlCM0VENDEyOENEMzE0MDBFNzI2QzIgLyogR3JhcGhp
Y3NMYXllckNBLmNwcCAqLywKIAkJCQk0OTlCM0VENTEyOENEMzE0MDBFNzI2QzIgLyogR3JhcGhp
Y3NMYXllckNBLmggKi8sCiAJCQkJNDk5QjNFQzMxMjhDQ0M0NzAwRTcyNkMyIC8qIFBsYXRmb3Jt
Q0FMYXllci5oICovLAorCQkJCTQ5NEJDNDBDMTJBRUREOUUwMDc0M0JEMiAvKiBUcmFuc2Zvcm1h
dGlvbk1hdHJpeENBLmNwcCAqLywKIAkJCSk7CiAJCQluYW1lID0gY2E7CiAJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOwpAQCAtMjQxMDIsNiArMjQxMDUsNyBAQAogCQkJCTQ5OUIzRUQ2MTI4Q0Qz
MTQwMEU3MjZDMiAvKiBHcmFwaGljc0xheWVyQ0EuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDk1
ODc4MjExMkE1N0RERjAwNzIzOEFDIC8qIFBsYXRmb3JtQ0FBbmltYXRpb25NYWMubW0gaW4gU291
cmNlcyAqLywKIAkJCQk0OTU4NzgyMjEyQTU3RERGMDA3MjM4QUMgLyogUGxhdGZvcm1DQUxheWVy
TWFjLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNDk0QkM0MEQxMkFFREQ5RTAwNzQzQkQyIC8qIFRy
YW5zZm9ybWF0aW9uTWF0cml4Q0EuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25s
eUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCShyZXZpc2lvbiA3
MzUyOCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDAsOSArNDAsNyBAQAogI2luY2x1ZGUgIlRyYW5zbGF0ZVRy
YW5zZm9ybU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgog
I2luY2x1ZGUgPGxpbWl0cy5oPgotI2luY2x1ZGUgPG9iamMvb2JqYy1hdXRvLmg+CiAjaW5jbHVk
ZSA8d3RmL0N1cnJlbnRUaW1lLmg+Ci0jaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KIAogdXNpbmcgbmFtZXNwYWNlIHN0
ZDsKQEAgLTE5OTAsOCArMTk4OCw3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjp1cGRhdGVDb250
ZW50c1RyYW4KICAgICBpZiAoY29udGVudHNPcmllbnRhdGlvbigpID09IENvbXBvc2l0aW5nQ29v
cmRpbmF0ZXNCb3R0b21VcCkgewogICAgICAgICBDR0FmZmluZVRyYW5zZm9ybSBjb250ZW50c1Ry
YW5zZm9ybSA9IENHQWZmaW5lVHJhbnNmb3JtTWFrZVNjYWxlKDEsIC0xKTsKICAgICAgICAgY29u
dGVudHNUcmFuc2Zvcm0gPSBDR0FmZmluZVRyYW5zZm9ybVRyYW5zbGF0ZShjb250ZW50c1RyYW5z
Zm9ybSwgMCwgLW1fbGF5ZXItPmJvdW5kcygpLnNpemUoKS5oZWlnaHQoKSk7Ci0gICAgICAgIFRy
YW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybTNEKGNvbnRlbnRzVHJhbnNmb3JtLmEsIGNvbnRl
bnRzVHJhbnNmb3JtLmIsIGNvbnRlbnRzVHJhbnNmb3JtLmMsIGNvbnRlbnRzVHJhbnNmb3JtLmQs
IGNvbnRlbnRzVHJhbnNmb3JtLnR4LCBjb250ZW50c1RyYW5zZm9ybS50eSk7Ci0gICAgICAgIG1f
bGF5ZXItPnNldENvbnRlbnRzVHJhbnNmb3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4KHRyYW5zZm9y
bTNEKSk7CisgICAgICAgIG1fbGF5ZXItPnNldENvbnRlbnRzVHJhbnNmb3JtKFRyYW5zZm9ybWF0
aW9uTWF0cml4KGNvbnRlbnRzVHJhbnNmb3JtKSk7CiAgICAgfQogI2VuZGlmCiB9CkBAIC0yMDQ1
LDggKzIwNDIsOCBAQCBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gR3JhcGhpY3NMYXllCiAK
IHZvaWQgR3JhcGhpY3NMYXllckNBOjplbnN1cmVDbG9uZUxheWVycyhDbG9uZUlEIGNsb25lSUQs
IFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+JiBwcmltYXJ5TGF5ZXIsIFJlZlB0cjxQbGF0Zm9ybUNB
TGF5ZXI+JiBzdHJ1Y3R1cmFsTGF5ZXIsIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+JiBjb250ZW50
c0xheWVyLCBDbG9uZUxldmVsIGNsb25lTGV2ZWwpCiB7Ci0gICAgc3RydWN0dXJhbExheWVyID0g
bmlsOwotICAgIGNvbnRlbnRzTGF5ZXIgPSBuaWw7CisgICAgc3RydWN0dXJhbExheWVyID0gMDsK
KyAgICBjb250ZW50c0xheWVyID0gMDsKIAogICAgIGlmICghbV9sYXllckNsb25lcykKICAgICAg
ICAgbV9sYXllckNsb25lcyA9IG5ldyBMYXllck1hcDsKQEAgLTIxMDgsNyArMjEwNSw3IEBAIFBh
c3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBHcmFwaGljc0xheWUKICAgICAgICAgLy8gV2UgYXJl
IGEgcmVwbGljYSBiZWluZyBhc2tlZCBmb3IgY2xvbmVzIG9mIG91ciBsYXllcnMuCiAgICAgICAg
IFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IHJlcGxpY2FSb290ID0gcmVwbGljYXRlZExheWVyUm9v
dChyZXBsaWNhU3RhdGUpOwogICAgICAgICBpZiAoIXJlcGxpY2FSb290KQotICAgICAgICAgICAg
cmV0dXJuIG5pbDsKKyAgICAgICAgICAgIHJldHVybiAwOwogCiAgICAgICAgIGlmIChzdHJ1Y3R1
cmFsTGF5ZXIpIHsKICAgICAgICAgICAgIHN0cnVjdHVyYWxMYXllci0+aW5zZXJ0U3VibGF5ZXIo
cmVwbGljYVJvb3QuZ2V0KCksIDApOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS9UcmFuc2Zvcm1hdGlvbk1hdHJpeENBLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL1RyYW5zZm9ybWF0aW9uTWF0cml4Q0EuY3BwCShyZXZpc2lvbiA3MzQ4
NCkJKGZyb20gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UcmFuc2Zvcm1hdGlvbk1hdHJp
eENBLmNwcDo3MzQ4NCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVHJhbnNmb3Jt
YXRpb25NYXRyaXhDQS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorCisjaWYgUExBVEZPUk0oQ0EpCisKKyNpbmNsdWRlICJUcmFuc2Zvcm1h
dGlvbk1hdHJpeC5oIgorCisjaW5jbHVkZSAiRmxvYXRDb252ZXJzaW9uLmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworVHJhbnNmb3JtYXRpb25NYXRyaXg6OlRyYW5zZm9ybWF0aW9uTWF0cml4
KGNvbnN0IENBVHJhbnNmb3JtM0QmIHQpCit7CisgICAgc2V0TWF0cml4KAorICAgICAgICB0Lm0x
MSwgdC5tMTIsIHQubTEzLCB0Lm0xNCwKKyAgICAgICAgdC5tMjEsIHQubTIyLCB0Lm0yMywgdC5t
MjQsIAorICAgICAgICB0Lm0zMSwgdC5tMzIsIHQubTMzLCB0Lm0zNCwgCisgICAgICAgIHQubTQx
LCB0Lm00MiwgdC5tNDMsIHQubTQ0KTsKK30KKworVHJhbnNmb3JtYXRpb25NYXRyaXg6Om9wZXJh
dG9yIENBVHJhbnNmb3JtM0QoKSBjb25zdAoreworICAgIENBVHJhbnNmb3JtM0QgdG9UM0Q7Cisg
ICAgdG9UM0QubTExID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdChtMTEoKSk7CisgICAgdG9UM0Qu
bTEyID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdChtMTIoKSk7CisgICAgdG9UM0QubTEzID0gbmFy
cm93UHJlY2lzaW9uVG9GbG9hdChtMTMoKSk7CisgICAgdG9UM0QubTE0ID0gbmFycm93UHJlY2lz
aW9uVG9GbG9hdChtMTQoKSk7CisgICAgdG9UM0QubTIxID0gbmFycm93UHJlY2lzaW9uVG9GbG9h
dChtMjEoKSk7CisgICAgdG9UM0QubTIyID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdChtMjIoKSk7
CisgICAgdG9UM0QubTIzID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdChtMjMoKSk7CisgICAgdG9U
M0QubTI0ID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdChtMjQoKSk7CisgICAgdG9UM0QubTMxID0g
bmFycm93UHJlY2lzaW9uVG9GbG9hdChtMzEoKSk7CisgICAgdG9UM0QubTMyID0gbmFycm93UHJl
Y2lzaW9uVG9GbG9hdChtMzIoKSk7CisgICAgdG9UM0QubTMzID0gbmFycm93UHJlY2lzaW9uVG9G
bG9hdChtMzMoKSk7CisgICAgdG9UM0QubTM0ID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdChtMzQo
KSk7CisgICAgdG9UM0QubTQxID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdChtNDEoKSk7CisgICAg
dG9UM0QubTQyID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdChtNDIoKSk7CisgICAgdG9UM0QubTQz
ID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdChtNDMoKSk7CisgICAgdG9UM0QubTQ0ID0gbmFycm93
UHJlY2lzaW9uVG9GbG9hdChtNDQoKSk7CisgICAgcmV0dXJuIHRvVDNEOworfQorCit9CisKKyNl
bmRpZiAvLyBQTEFURk9STShDQSkKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
bWFjL1BsYXRmb3JtQ0FBbmltYXRpb25NYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9tYWMvUGxhdGZvcm1DQUFuaW1hdGlvbk1hYy5tbQkocmV2aXNpb24g
NzM1MjgpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9QbGF0Zm9ybUNBQW5p
bWF0aW9uTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00MiwyNiArNDIsNiBAQCB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIC8vIFRoaXMgdmFsdWUgbXVzdCBiZSB0aGUgc2FtZSBhcyBpbiBQbGF0
Zm9ybUNBTGF5ZXJNYWMubW0KIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IFdLTm9uWmVyb0JlZ2lu
VGltZUZsYWcgPSBAIldLUGxhdGZvcm1DQUFuaW1hdGlvbk5vblplcm9CZWdpblRpbWVGbGFnIjsK
IAotc3RhdGljIGlubGluZSB2b2lkIGNvcHlUcmFuc2Zvcm0oQ0FUcmFuc2Zvcm0zRCYgdG9UM0Qs
IGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0KQotewotICAgIHRvVDNELm0xMSA9IG5hcnJv
d1ByZWNpc2lvblRvRmxvYXQodC5tMTEoKSk7Ci0gICAgdG9UM0QubTEyID0gbmFycm93UHJlY2lz
aW9uVG9GbG9hdCh0Lm0xMigpKTsKLSAgICB0b1QzRC5tMTMgPSBuYXJyb3dQcmVjaXNpb25Ub0Zs
b2F0KHQubTEzKCkpOwotICAgIHRvVDNELm0xNCA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodC5t
MTQoKSk7Ci0gICAgdG9UM0QubTIxID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCh0Lm0yMSgpKTsK
LSAgICB0b1QzRC5tMjIgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHQubTIyKCkpOwotICAgIHRv
VDNELm0yMyA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodC5tMjMoKSk7Ci0gICAgdG9UM0QubTI0
ID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCh0Lm0yNCgpKTsKLSAgICB0b1QzRC5tMzEgPSBuYXJy
b3dQcmVjaXNpb25Ub0Zsb2F0KHQubTMxKCkpOwotICAgIHRvVDNELm0zMiA9IG5hcnJvd1ByZWNp
c2lvblRvRmxvYXQodC5tMzIoKSk7Ci0gICAgdG9UM0QubTMzID0gbmFycm93UHJlY2lzaW9uVG9G
bG9hdCh0Lm0zMygpKTsKLSAgICB0b1QzRC5tMzQgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHQu
bTM0KCkpOwotICAgIHRvVDNELm00MSA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodC5tNDEoKSk7
Ci0gICAgdG9UM0QubTQyID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCh0Lm00MigpKTsKLSAgICB0
b1QzRC5tNDMgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHQubTQzKCkpOwotICAgIHRvVDNELm00
NCA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodC5tNDQoKSk7Ci19Ci0KIHN0YXRpYyBOU1N0cmlu
ZyogdG9DQUZpbGxNb2RlVHlwZShQbGF0Zm9ybUNBQW5pbWF0aW9uOjpGaWxsTW9kZVR5cGUgdHlw
ZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKQEAgLTM4OSwxMCArMzY5LDggQEAgdm9pZCBQbGF0
Zm9ybUNBQW5pbWF0aW9uOjpzZXRGcm9tVmFsdWUoYwogewogICAgIGlmIChhbmltYXRpb25UeXBl
KCkgIT0gQmFzaWMpCiAgICAgICAgIHJldHVybjsKLQotICAgIENBVHJhbnNmb3JtM0QgY2FUcmFu
c2Zvcm07Ci0gICAgY29weVRyYW5zZm9ybShjYVRyYW5zZm9ybSwgdmFsdWUpOwotICAgIFtzdGF0
aWNfY2FzdDxDQUJhc2ljQW5pbWF0aW9uKj4obV9hbmltYXRpb24uZ2V0KCkpIHNldEZyb21WYWx1
ZTpbTlNWYWx1ZSB2YWx1ZVdpdGhDQVRyYW5zZm9ybTNEOmNhVHJhbnNmb3JtXV07CisgICAgICAg
IAorICAgIFtzdGF0aWNfY2FzdDxDQUJhc2ljQW5pbWF0aW9uKj4obV9hbmltYXRpb24uZ2V0KCkp
IHNldEZyb21WYWx1ZTpbTlNWYWx1ZSB2YWx1ZVdpdGhDQVRyYW5zZm9ybTNEOnZhbHVlXV07CiB9
CiAKIHZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbjo6c2V0RnJvbVZhbHVlKGNvbnN0IEZsb2F0UG9p
bnQzRCYgdmFsdWUpCkBAIC00NDMsOSArNDIxLDcgQEAgdm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9u
OjpzZXRUb1ZhbHVlKGNvbgogICAgIGlmIChhbmltYXRpb25UeXBlKCkgIT0gQmFzaWMpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIENBVHJhbnNmb3JtM0QgY2FUcmFuc2Zvcm07Ci0gICAgY29weVRy
YW5zZm9ybShjYVRyYW5zZm9ybSwgdmFsdWUpOwotICAgIFtzdGF0aWNfY2FzdDxDQUJhc2ljQW5p
bWF0aW9uKj4obV9hbmltYXRpb24uZ2V0KCkpIHNldFRvVmFsdWU6W05TVmFsdWUgdmFsdWVXaXRo
Q0FUcmFuc2Zvcm0zRDpjYVRyYW5zZm9ybV1dOworICAgIFtzdGF0aWNfY2FzdDxDQUJhc2ljQW5p
bWF0aW9uKj4obV9hbmltYXRpb24uZ2V0KCkpIHNldFRvVmFsdWU6W05TVmFsdWUgdmFsdWVXaXRo
Q0FUcmFuc2Zvcm0zRDp2YWx1ZV1dOwogfQogCiB2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb246OnNl
dFRvVmFsdWUoY29uc3QgRmxvYXRQb2ludDNEJiB2YWx1ZSkKQEAgLTUwMywxMiArNDc5LDEwIEBA
IHZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbjo6c2V0VmFsdWVzKGNvbnMKICAgICAgICAgcmV0dXJu
OwogICAgICAgICAKICAgICBOU011dGFibGVBcnJheSogYXJyYXkgPSBbTlNNdXRhYmxlQXJyYXkg
YXJyYXldOwotICAgIENBVHJhbnNmb3JtM0QgY2FUcmFuc2Zvcm07CiAKLSAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHZhbHVlLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGNvcHlUcmFuc2Zvcm0o
Y2FUcmFuc2Zvcm0sIHZhbHVlW2ldKTsKLSAgICAgICAgW2FycmF5IGFkZE9iamVjdDpbTlNWYWx1
ZSB2YWx1ZVdpdGhDQVRyYW5zZm9ybTNEOmNhVHJhbnNmb3JtXV07Ci0gICAgfQorICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgdmFsdWUuc2l6ZSgpOyArK2kpCisgICAgICAgIFthcnJheSBhZGRP
YmplY3Q6W05TVmFsdWUgdmFsdWVXaXRoQ0FUcmFuc2Zvcm0zRDp2YWx1ZVtpXV1dOworICAgICAg
ICAKICAgICBbc3RhdGljX2Nhc3Q8Q0FLZXlmcmFtZUFuaW1hdGlvbio+KG1fYW5pbWF0aW9uLmdl
dCgpKSBzZXRWYWx1ZXM6YXJyYXldOwogfQogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL21hYy9QbGF0Zm9ybUNBTGF5ZXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvUGxhdGZvcm1DQUxheWVyTWFjLm1tCShyZXZpc2lvbiA3
MzUyOCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1BsYXRmb3JtQ0FMYXll
ck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtOTUsMjYgKzk1LDYgQEAgLSAodm9pZClzZXRDb250
ZW50c0NoYW5nZWQ7CiAKIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IHBsYXRmb3JtQ0FMYXllclBv
aW50ZXIgPSBAIldLUGxhdGZvcm1DQUxheWVyIjsKIAotc3RhdGljIGlubGluZSB2b2lkIGNvcHlU
cmFuc2Zvcm0oQ0FUcmFuc2Zvcm0zRCYgdG9UM0QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
JiB0KQotewotICAgIHRvVDNELm0xMSA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodC5tMTEoKSk7
Ci0gICAgdG9UM0QubTEyID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCh0Lm0xMigpKTsKLSAgICB0
b1QzRC5tMTMgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHQubTEzKCkpOwotICAgIHRvVDNELm0x
NCA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodC5tMTQoKSk7Ci0gICAgdG9UM0QubTIxID0gbmFy
cm93UHJlY2lzaW9uVG9GbG9hdCh0Lm0yMSgpKTsKLSAgICB0b1QzRC5tMjIgPSBuYXJyb3dQcmVj
aXNpb25Ub0Zsb2F0KHQubTIyKCkpOwotICAgIHRvVDNELm0yMyA9IG5hcnJvd1ByZWNpc2lvblRv
RmxvYXQodC5tMjMoKSk7Ci0gICAgdG9UM0QubTI0ID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCh0
Lm0yNCgpKTsKLSAgICB0b1QzRC5tMzEgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHQubTMxKCkp
OwotICAgIHRvVDNELm0zMiA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodC5tMzIoKSk7Ci0gICAg
dG9UM0QubTMzID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCh0Lm0zMygpKTsKLSAgICB0b1QzRC5t
MzQgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHQubTM0KCkpOwotICAgIHRvVDNELm00MSA9IG5h
cnJvd1ByZWNpc2lvblRvRmxvYXQodC5tNDEoKSk7Ci0gICAgdG9UM0QubTQyID0gbmFycm93UHJl
Y2lzaW9uVG9GbG9hdCh0Lm00MigpKTsKLSAgICB0b1QzRC5tNDMgPSBuYXJyb3dQcmVjaXNpb25U
b0Zsb2F0KHQubTQzKCkpOwotICAgIHRvVDNELm00NCA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQo
dC5tNDQoKSk7Ci19Ci0KIGJvb2wgUGxhdGZvcm1DQUxheWVyOjppc1ZhbHVlRnVuY3Rpb25TdXBw
b3J0ZWQoKQogewogICAgIHN0YXRpYyBib29sIHNIYXZlVmFsdWVGdW5jdGlvbiA9IFtDQVByb3Bl
cnR5QW5pbWF0aW9uIGluc3RhbmNlc1Jlc3BvbmRUb1NlbGVjdG9yOkBzZWxlY3RvcihzZXRWYWx1
ZUZ1bmN0aW9uOildOwpAQCAtNDU4LDMxICs0MzgsMjUgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXI6
OnNldEFuY2hvclBvaW50KGNvbgogCiBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBQbGF0Zm9ybUNBTGF5
ZXI6OnRyYW5zZm9ybSgpIGNvbnN0CiB7Ci0gICAgQ0FUcmFuc2Zvcm0zRCB0ID0gW21fbGF5ZXIu
Z2V0KCkgdHJhbnNmb3JtXTsKLSAgICByZXR1cm4gVHJhbnNmb3JtYXRpb25NYXRyaXgodC5tMTEs
IHQubTEyLCB0Lm0xMywgdC5tMTQsIHQubTIxLCB0Lm0yMiwgdC5tMjMsIHQubTI0LCB0Lm0zMSwg
dC5tMzIsIHQubTMzLCB0Lm0zNCwgdC5tNDEsIHQubTQyLCB0Lm00MywgdC5tNDQpOworICAgIHJl
dHVybiBbbV9sYXllci5nZXQoKSB0cmFuc2Zvcm1dOwogfQogCiB2b2lkIFBsYXRmb3JtQ0FMYXll
cjo6c2V0VHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB2YWx1ZSkKIHsKLSAg
ICBDQVRyYW5zZm9ybTNEIHRyYW5zZm9ybTsKLSAgICBjb3B5VHJhbnNmb3JtKHRyYW5zZm9ybSwg
dmFsdWUpOwogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIFttX2xheWVyLmdl
dCgpIHNldFRyYW5zZm9ybTp0cmFuc2Zvcm1dOworICAgIFttX2xheWVyLmdldCgpIHNldFRyYW5z
Zm9ybTp2YWx1ZV07CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogfQogCiBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCBQbGF0Zm9ybUNBTGF5ZXI6OnN1YmxheWVyVHJhbnNmb3JtKCkgY29uc3QK
IHsKLSAgICBDQVRyYW5zZm9ybTNEIHQgPSBbbV9sYXllci5nZXQoKSBzdWJsYXllclRyYW5zZm9y
bV07Ci0gICAgcmV0dXJuIFRyYW5zZm9ybWF0aW9uTWF0cml4KHQubTExLCB0Lm0xMiwgdC5tMTMs
IHQubTE0LCB0Lm0yMSwgdC5tMjIsIHQubTIzLCB0Lm0yNCwgdC5tMzEsIHQubTMyLCB0Lm0zMywg
dC5tMzQsIHQubTQxLCB0Lm00MiwgdC5tNDMsIHQubTQ0KTsKKyAgICByZXR1cm4gW21fbGF5ZXIu
Z2V0KCkgc3VibGF5ZXJUcmFuc2Zvcm1dOwogfQogCiB2b2lkIFBsYXRmb3JtQ0FMYXllcjo6c2V0
U3VibGF5ZXJUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHZhbHVlKQogewot
ICAgIENBVHJhbnNmb3JtM0QgdHJhbnNmb3JtOwotICAgIGNvcHlUcmFuc2Zvcm0odHJhbnNmb3Jt
LCB2YWx1ZSk7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgW21fbGF5ZXIu
Z2V0KCkgc2V0U3VibGF5ZXJUcmFuc2Zvcm06dHJhbnNmb3JtXTsKKyAgICBbbV9sYXllci5nZXQo
KSBzZXRTdWJsYXllclRyYW5zZm9ybTp2YWx1ZV07CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBU
SU9OUwogfQogCkBAIC00OTIsOCArNDY2LDcgQEAgVHJhbnNmb3JtYXRpb25NYXRyaXggUGxhdGZv
cm1DQUxheWVyOjpjbwogICAgIGlmIChtX2xheWVyVHlwZSAhPSBMYXllclR5cGVXZWJMYXllcikK
ICAgICAgICAgcmV0dXJuIFRyYW5zZm9ybWF0aW9uTWF0cml4KCk7CiAgICAgICAgIAotICAgIENH
QWZmaW5lVHJhbnNmb3JtIHQgPSBbc3RhdGljX2Nhc3Q8V2ViTGF5ZXIqPihtX2xheWVyLmdldCgp
KSBjb250ZW50c1RyYW5zZm9ybV07Ci0gICAgcmV0dXJuIFRyYW5zZm9ybWF0aW9uTWF0cml4KHQu
YSwgdC5iLCB0LmMsIHQuZCwgdC50eCwgdC50eSk7CisgICAgcmV0dXJuIFtzdGF0aWNfY2FzdDxX
ZWJMYXllcio+KG1fbGF5ZXIuZ2V0KCkpIGNvbnRlbnRzVHJhbnNmb3JtXTsKICNlbHNlCiAgICAg
cmV0dXJuIFRyYW5zZm9ybWF0aW9uTWF0cml4KCk7CiAjZW5kaWYKQEAgLTUwNSw5ICs0NzgsOCBA
QCB2b2lkIFBsYXRmb3JtQ0FMYXllcjo6c2V0Q29udGVudHNUcmFuc2ZvCiAgICAgaWYgKG1fbGF5
ZXJUeXBlICE9IExheWVyVHlwZVdlYkxheWVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBDR0Fm
ZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm0gPSB2YWx1ZTsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VY
Q0VQVElPTlMKLSAgICBbbV9sYXllci5nZXQoKSBzZXRDb250ZW50c1RyYW5zZm9ybTp0cmFuc2Zv
cm1dOworICAgIFttX2xheWVyLmdldCgpIHNldENvbnRlbnRzVHJhbnNmb3JtOnZhbHVlXTsKICAg
ICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTSh2YWx1
ZSk7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1RyYW5zZm9ybWF0aW9uTWF0
cml4Q0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvVHJh
bnNmb3JtYXRpb25NYXRyaXhDRy5jcHAJKHJldmlzaW9uIDczNTI4KQorKysgV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9UcmFuc2Zvcm1hdGlvbk1hdHJpeENHLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzQsNiArMzQsMTYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitUcmFuc2Zvcm1h
dGlvbk1hdHJpeDo6VHJhbnNmb3JtYXRpb25NYXRyaXgoY29uc3QgQ0dBZmZpbmVUcmFuc2Zvcm0m
IHQpCit7CisgICAgc2V0QSh0LmEpOworICAgIHNldEIodC5iKTsKKyAgICBzZXRDKHQuYyk7Cisg
ICAgc2V0RCh0LmQpOworICAgIHNldEUodC50eCk7CisgICAgc2V0Rih0LnR5KTsKK30KKwogVHJh
bnNmb3JtYXRpb25NYXRyaXg6Om9wZXJhdG9yIENHQWZmaW5lVHJhbnNmb3JtKCkgY29uc3QKIHsK
ICAgICByZXR1cm4gQ0dBZmZpbmVUcmFuc2Zvcm1NYWtlKG5hcnJvd1ByZWNpc2lvblRvQ0dGbG9h
dChhKCkpLApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5z
Zm9ybWF0aW9uTWF0cml4LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmgJKHJldmlzaW9uIDczNTI4KQorKysg
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDkgQEAKICNpbmNsdWRlIDxzdHJpbmcuaD4g
Ly9mb3IgbWVtY3B5CiAjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4KIAorI2lmIFBMQVRG
T1JNKENBKQorI2luY2x1ZGUgPFF1YXJ0ekNvcmUvQ0FUcmFuc2Zvcm0zRC5oPgorI2VuZGlmCiAj
aWYgUExBVEZPUk0oQ0cpCiAjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NHQWZmaW5lVHJhbnNmb3Jt
Lmg+CiAjZWxpZiBQTEFURk9STShDQUlSTykKQEAgLTMwOSw3ICszMTIsMTIgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAorI2lmIFBMQVRGT1JNKENBKQorICAgIFRy
YW5zZm9ybWF0aW9uTWF0cml4KGNvbnN0IENBVHJhbnNmb3JtM0QmKTsKKyAgICBvcGVyYXRvciBD
QVRyYW5zZm9ybTNEKCkgY29uc3Q7CisjZW5kaWYKICNpZiBQTEFURk9STShDRykKKyAgICBUcmFu
c2Zvcm1hdGlvbk1hdHJpeChjb25zdCBDR0FmZmluZVRyYW5zZm9ybSYpOwogICAgIG9wZXJhdG9y
IENHQWZmaW5lVHJhbnNmb3JtKCkgY29uc3Q7CiAjZWxpZiBQTEFURk9STShDQUlSTykKICAgICBv
cGVyYXRvciBjYWlyb19tYXRyaXhfdCgpIGNvbnN0OwpJbmRleDogV2ViS2l0Mi9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDczNTM2KQorKysgV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxMC0xMi0w
OCAgQ2hyaXMgTWFycmluICA8Y21hcnJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2hhcmUgY29kZSBiZXR3ZWVuIE1hYyAoQ0Ep
IGFuZCBXaW5kb3dzIChDQUNGKSBHcmFwaGljc0xheWVyIGltcGxlbWVudGF0aW9ucworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDkzODgKKworICAgICAg
ICBGaXhlcyBhIGJ1aWxkIGZhaWx1cmUgYmVjYXVzZSBXZWJDaHJvbWVDbGllbnQuY3BwIHVzZXMg
V2ViQ29yZTo6Q3Vyc29yLgorICAgICAgICBUaGlzIHBhdGNoIGFkZHMgYW4gaW5jbHVkZSBvZiBR
dWFydHpDb3JlL0NBVHJhbnNmb3JtM0QsIHdoaWNoIGluY2x1ZGVzCisgICAgICAgIGEgZmlsZSB0
aGF0IGhhcyBhICdDdXJzb3InIG9iamVjdCBkZWZpbmVkLiBTbyBJIGhhZCB0byBxdWFsaWZ5IHRo
ZQorICAgICAgICB1c2Ugb2YgQ3Vyc29yIGluIFdlYkNocm9tZUNsaWVudC5jcHAuCisKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6c2V0Q3Vyc29yKToKKwogMjAxMC0xMi0wNyAg
QnJpYW4gV2VpbnN0ZWluICA8YndlaW5zdGVpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgSm9obiBTdWxsaXZhbi4KSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCShyZXZpc2lvbiA3MzUyOCkKKysr
IFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01MDgsNyArNTA4LDcgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OmNo
b29zZUljb25Gb3JGaWxlcwogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgV2ViQ2hy
b21lQ2xpZW50OjpzZXRDdXJzb3IoY29uc3QgQ3Vyc29yJiBjdXJzb3IpCit2b2lkIFdlYkNocm9t
ZUNsaWVudDo6c2V0Q3Vyc29yKGNvbnN0IFdlYkNvcmU6OkN1cnNvciYgY3Vyc29yKQogewogI2lm
IFVTRShMQVpZX05BVElWRV9DVVJTT1IpCiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OlNldEN1cnNvcihjdXJzb3IpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76144</attachid>
            <date>2010-12-09 17:36:34 -0800</date>
            <delta_ts>2010-12-14 01:27:45 -0800</delta_ts>
            <desc>Patch getting rid of NonZeroBeginTimeFlag</desc>
            <filename>bug-49388-20101209173634.patch</filename>
            <type>text/plain</type>
            <size>4694</size>
            <attacher name="Chris Marrin">cmarrin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MzY2MikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjIgQEAKKzIwMTAtMTItMDkgIENocmlzIE1hcnJpbiAgPGNtYXJyaW5AYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNo
YXJlIGNvZGUgYmV0d2VlbiBNYWMgKENBKSBhbmQgV2luZG93cyAoQ0FDRikgR3JhcGhpY3NMYXll
ciBpbXBsZW1lbnRhdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQ5Mzg4CisKKyAgICAgICAgR290IHJpZCBvZiB0aGUgTm9uWmVyb0JlZ2luVGlt
ZUZsYWcuIEZ1bmN0aW9uYWxpdHkgaXMgbm93IGhpZGRlbiBpbnNpZGUKKyAgICAgICAgdGhlIGlt
cGxlbWVudGF0aW9uLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NM
YXllckNBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6c2V0QW5pbWF0
aW9uT25MYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUFu
aW1hdGlvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9QbGF0Zm9ybUNB
QW5pbWF0aW9uTWFjLm1tOgorICAgICAgICAoaGFzTm9uWmVyb0JlZ2luVGltZUZsYWcpOgorICAg
ICAgICAoc2V0Tm9uWmVyb0JlZ2luVGltZUZsYWcpOgorICAgICAgICAoUGxhdGZvcm1DQUFuaW1h
dGlvbjo6UGxhdGZvcm1DQUFuaW1hdGlvbik6CisgICAgICAgIChQbGF0Zm9ybUNBQW5pbWF0aW9u
OjpzZXRCZWdpblRpbWUpOgorCiAyMDEwLTEyLTA5ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgpJbmRleDogV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAkocmV2aXNpb24g
NzM1NDApCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEzODksMTAgKzEzODksOCBAQCB2b2lkIEdyYXBoaWNzTGF5
ZXJDQTo6c2V0QW5pbWF0aW9uT25MYXllCiB7CiAgICAgUGxhdGZvcm1DQUxheWVyKiBsYXllciA9
IGFuaW1hdGVkTGF5ZXIocHJvcGVydHkpOwogICAgIAotICAgIGlmICh0aW1lT2Zmc2V0KSB7Cisg
ICAgaWYgKHRpbWVPZmZzZXQpCiAgICAgICAgIGNhQW5pbS0+c2V0QmVnaW5UaW1lKENBQ3VycmVu
dE1lZGlhVGltZSgpIC0gdGltZU9mZnNldCk7Ci0gICAgICAgIGNhQW5pbS0+c2V0Tm9uWmVyb0Jl
Z2luVGltZUZsYWcodHJ1ZSk7Ci0gICAgfQogCiAgICAgU3RyaW5nIGFuaW1hdGlvbklEID0gYW5p
bWF0aW9uSWRlbnRpZmllcihhbmltYXRpb25OYW1lLCBwcm9wZXJ0eSwgaW5kZXgpOwogCkluZGV4
OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FBbmltYXRpb24uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FBbmltYXRp
b24uaAkocmV2aXNpb24gNzM1MzgpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1Bs
YXRmb3JtQ0FBbmltYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNzcsOSArNzcsNiBAQCBwdWJs
aWM6CiAgICAgQW5pbWF0aW9uVHlwZSBhbmltYXRpb25UeXBlKCkgY29uc3QgeyByZXR1cm4gbV90
eXBlOyB9CiAgICAgU3RyaW5nIGtleVBhdGgoKSBjb25zdDsKICAgICAKLSAgICBib29sIGhhc05v
blplcm9CZWdpblRpbWVGbGFnKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXROb25aZXJvQmVnaW5UaW1l
RmxhZyhib29sIHZhbHVlKTsKLSAgICAKICAgICBDRlRpbWVJbnRlcnZhbCBiZWdpblRpbWUoKSBj
b25zdDsKICAgICB2b2lkIHNldEJlZ2luVGltZShDRlRpbWVJbnRlcnZhbCk7CiAgICAgCkluZGV4
OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9uTWFj
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1BsYXRm
b3JtQ0FBbmltYXRpb25NYWMubW0JKHJldmlzaW9uIDczNTQwKQorKysgV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9tYWMvUGxhdGZvcm1DQUFuaW1hdGlvbk1hYy5tbQkod29ya2luZyBjb3B5
KQpAQCAtNDIsNiArNDIsMTYgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAvLyBUaGlzIHZh
bHVlIG11c3QgYmUgdGhlIHNhbWUgYXMgaW4gUGxhdGZvcm1DQUxheWVyTWFjLm1tCiBzdGF0aWMg
TlNTdHJpbmcgKiBjb25zdCBXS05vblplcm9CZWdpblRpbWVGbGFnID0gQCJXS1BsYXRmb3JtQ0FB
bmltYXRpb25Ob25aZXJvQmVnaW5UaW1lRmxhZyI7CiAKK3N0YXRpYyBib29sIGhhc05vblplcm9C
ZWdpblRpbWVGbGFnKGNvbnN0IFBsYXRmb3JtQ0FBbmltYXRpb24qIGFuaW1hdGlvbikKK3sKKyAg
ICByZXR1cm4gW1thbmltYXRpb24tPnBsYXRmb3JtQW5pbWF0aW9uKCkgdmFsdWVGb3JLZXk6V0tO
b25aZXJvQmVnaW5UaW1lRmxhZ10gYm9vbFZhbHVlXTsKK30KKworc3RhdGljIHZvaWQgc2V0Tm9u
WmVyb0JlZ2luVGltZUZsYWcoUGxhdGZvcm1DQUFuaW1hdGlvbiogYW5pbWF0aW9uLCBib29sIHZh
bHVlKQoreworICAgIFthbmltYXRpb24tPnBsYXRmb3JtQW5pbWF0aW9uKCkgc2V0VmFsdWU6W05T
TnVtYmVyIG51bWJlcldpdGhCb29sOnZhbHVlXSBmb3JLZXk6V0tOb25aZXJvQmVnaW5UaW1lRmxh
Z107Cit9CisgICAgCiBzdGF0aWMgTlNTdHJpbmcqIHRvQ0FGaWxsTW9kZVR5cGUoUGxhdGZvcm1D
QUFuaW1hdGlvbjo6RmlsbE1vZGVUeXBlIHR5cGUpCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7CkBA
IC0xOTYsNyArMjA2LDcgQEAgUGxhdGZvcm1DQUFuaW1hdGlvbjo6UGxhdGZvcm1DQUFuaW1hdGlv
bgogICAgIG5ld0FuaW1hdGlvbi0+c2V0VmFsdWVGdW5jdGlvbihhbmltYXRpb24tPnZhbHVlRnVu
Y3Rpb24oKSk7CiAjZW5kaWYKIAotICAgIG5ld0FuaW1hdGlvbi0+c2V0Tm9uWmVyb0JlZ2luVGlt
ZUZsYWcoYW5pbWF0aW9uLT5oYXNOb25aZXJvQmVnaW5UaW1lRmxhZygpKTsKKyAgICBzZXROb25a
ZXJvQmVnaW5UaW1lRmxhZyhuZXdBbmltYXRpb24sIGhhc05vblplcm9CZWdpblRpbWVGbGFnKGFu
aW1hdGlvbikpOwogICAgIAogICAgIC8vIENvcHkgdGhlIHNwZWNpZmljIEJhc2ljIG9yIEtleWZy
YW1lIHZhbHVlcwogICAgIGlmIChhbmltYXRpb24tPmFuaW1hdGlvblR5cGUoKSA9PSBLZXlmcmFt
ZSkgewpAQCAtMjEzLDE2ICsyMjMsNiBAQCBQbGF0Zm9ybUNBQW5pbWF0aW9uOjp+UGxhdGZvcm1D
QUFuaW1hdGlvCiB7CiB9CiAKLWJvb2wgUGxhdGZvcm1DQUFuaW1hdGlvbjo6aGFzTm9uWmVyb0Jl
Z2luVGltZUZsYWcoKSBjb25zdAotewotICAgIHJldHVybiBbW21fYW5pbWF0aW9uLmdldCgpIHZh
bHVlRm9yS2V5OldLTm9uWmVyb0JlZ2luVGltZUZsYWddIGJvb2xWYWx1ZV07Ci19Ci0KLXZvaWQg
UGxhdGZvcm1DQUFuaW1hdGlvbjo6c2V0Tm9uWmVyb0JlZ2luVGltZUZsYWcoYm9vbCB2YWx1ZSkK
LXsKLSAgICBbbV9hbmltYXRpb24uZ2V0KCkgc2V0VmFsdWU6W05TTnVtYmVyIG51bWJlcldpdGhC
b29sOnZhbHVlXSBmb3JLZXk6V0tOb25aZXJvQmVnaW5UaW1lRmxhZ107Ci19Ci0gICAgCiBib29s
IFBsYXRmb3JtQ0FBbmltYXRpb246OnN1cHBvcnRzVmFsdWVGdW5jdGlvbigpCiB7CiAgICAgc3Rh
dGljIGJvb2wgc0hhdmVWYWx1ZUZ1bmN0aW9uID0gW0NBUHJvcGVydHlBbmltYXRpb24gaW5zdGFu
Y2VzUmVzcG9uZFRvU2VsZWN0b3I6QHNlbGVjdG9yKHNldFZhbHVlRnVuY3Rpb246KV07CkBAIC0y
NDcsNiArMjQ3LDEzIEBAIENGVGltZUludGVydmFsIFBsYXRmb3JtQ0FBbmltYXRpb246OmJlZ2kK
IHZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbjo6c2V0QmVnaW5UaW1lKENGVGltZUludGVydmFsIHZh
bHVlKQogewogICAgIFttX2FuaW1hdGlvbi5nZXQoKSBzZXRCZWdpblRpbWU6dmFsdWVdOworICAg
IAorICAgIC8vIEFsc28gc2V0IGEgZmxhZyB0byB0ZWxsIHVzIGlmIHdlJ3ZlIHBhc3NlZCBpbiBh
IDAgdmFsdWUuIAorICAgIC8vIFRoZSBmbGFnIGlzIG5lZWRlZCBiZWNhdXNlIGxhdGVyIGJlZ2lu
VEltZSB3aWxsIGdldCBjaGFuZ2VkCisgICAgLy8gdG8gdGhlIHRpbWUgYXQgd2hpY2ggaXQgZmly
ZWQgYW5kIHdlIG5lZWQgdG8ga25vdyB3aGV0aGVyCisgICAgLy8gb3Igbm90IGl0IHdhcyAwIHRv
IGJlZ2luIHdpdGguCisgICAgaWYgKHZhbHVlKQorICAgICAgICBzZXROb25aZXJvQmVnaW5UaW1l
RmxhZyh0aGlzLCB0cnVlKTsKIH0KIAogQ0ZUaW1lSW50ZXJ2YWwgUGxhdGZvcm1DQUFuaW1hdGlv
bjo6ZHVyYXRpb24oKSBjb25zdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76223</attachid>
            <date>2010-12-10 11:30:35 -0800</date>
            <delta_ts>2010-12-10 11:33:08 -0800</delta_ts>
            <desc>Patch adding CACFContextGetLastCommitTime to WKSI</desc>
            <filename>AddCACFToWKSI.patch</filename>
            <type>text/plain</type>
            <size>638696</size>
            <attacher name="Chris Marrin">cmarrin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdExpYnJhcmllcy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0TGli
cmFyaWVzL0NoYW5nZUxvZwkocmV2aXNpb24gNzM3NDEpCisrKyBXZWJLaXRMaWJyYXJpZXMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMTItMTAgIENocmlz
IE1hcnJpbiAgPGNtYXJyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBDQUNGQ29udGV4dEdldExhc3RDb21taXRUaW1lIHRv
IFdlYktpdFN5c3RlbUludGVyZmFjZSBmb3IgV2luZG93cy4KKyAgICAgICAgQWxzbyBnb3Qgcmlk
IG9mIFdlYktpdFN5c3RlbUludGVyZmFjZV9kZWJ1Zy5saWIgYXMgcmVjb21tZW5kZWQgYnkKKyAg
ICAgICAgQWRhbSBSb2Jlbi4KKworICAgICAgICAqIHdpbi9pbmNsdWRlL1dlYktpdFN5c3RlbUlu
dGVyZmFjZS9XZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaDoKKyAgICAgICAgKiB3aW4vbGliL1dlYktp
dFN5c3RlbUludGVyZmFjZS5saWI6CisgICAgICAgICogd2luL2xpYi9XZWJLaXRTeXN0ZW1JbnRl
cmZhY2VfZGVidWcubGliOiBSZW1vdmVkLgorCiAyMDEwLTEyLTA5ICBBbmRlcnMgQ2FybHNzb24g
IDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4K
SW5kZXg6IFdlYktpdExpYnJhcmllcy93aW4vaW5jbHVkZS9XZWJLaXRTeXN0ZW1JbnRlcmZhY2Uv
V2ViS2l0U3lzdGVtSW50ZXJmYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0TGlicmFyaWVzL3dp
bi9pbmNsdWRlL1dlYktpdFN5c3RlbUludGVyZmFjZS9XZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaAko
cmV2aXNpb24gNzM3MzEpCisrKyBXZWJLaXRMaWJyYXJpZXMvd2luL2luY2x1ZGUvV2ViS2l0U3lz
dGVtSW50ZXJmYWNlL1dlYktpdFN5c3RlbUludGVyZmFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
NDQsNiArMTQ0LDggQEAgdm9pZCB3a0NBQ0ZDb250ZXh0RGVzdHJveShXS0NBQ0ZDb250ZXh0Kgog
dm9pZCB3a0NBQ0ZDb250ZXh0U2V0TGF5ZXIoV0tDQUNGQ29udGV4dCosIENBQ0ZMYXllclJlZik7
CiB2b2lkIHdrQ0FDRkNvbnRleHRGbHVzaChXS0NBQ0ZDb250ZXh0Kik7CiAKK0NGVGltZUludGVy
dmFsIHdrQ0FDRkNvbnRleHRHZXRMYXN0Q29tbWl0VGltZShXS0NBQ0ZDb250ZXh0Kik7CisKIHZv
aWQgd2tDQUNGQ29udGV4dEluaXRpYWxpemVEM0REZXZpY2UoV0tDQUNGQ29udGV4dCosIElEaXJl
Y3QzRERldmljZTkqKTsKIHZvaWQgd2tDQUNGQ29udGV4dFJlbGVhc2VEM0RSZXNvdXJjZXMoV0tD
QUNGQ29udGV4dCopOwogCkluZGV4OiBXZWJLaXRMaWJyYXJpZXMvd2luL2xpYi9XZWJLaXRTeXN0
ZW1JbnRlcmZhY2VfZGVidWcubGliCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFy
a2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBhcHBsaWNhdGlvbi9vY3RldC1z
dHJlYW0KSW5kZXg6IFdlYktpdExpYnJhcmllcy93aW4vbGliL1dlYktpdFN5c3RlbUludGVyZmFj
ZS5saWIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkg
dHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbQoKSVR4aGNtTm9Q
Z292SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdNVEk1TWpBd016azNOeUFnSUNBZ0lDQWdJQ0FnSUNBZ01D
QWdJQ0FnSUNBeApNakE1TUNBZ0lDQWdZQW9BQUFEMUFBQmVwQUFBWHFRQUFGNmtBQUJlcEFBQVhx
UUFBRjZrQUFCZXBBQUFYcVFBQUY2a0FBQmVwQUFBClhxUUFBRjZrQUFCZXBBQUFYcVFBQUY2a0FB
QmVwQUFBWHFRQUFGNmtBQUJlcEFBQVhxUUFBRjZrQUFCZXBBQUFYcVFBQUY2a0FBQmUKcEFBQVhx
UUFBRjZrQUFCZXBBQUFYcVFBQUY2a0FBQmVwQUFBWHFRQUFGNmtBQUJlcEFBQVhxUUFBRjZrQUFC
ZXBBQUFYcVFBQUY2awpBQUJlcEFBQVhxUUFBRjZrQUFCZXBBQUFYcVFBQUY2a0FBQmVwQUFBWHFR
QUFGNmtBQUJlcEFBQVhxUUFBRjZrQUFCZXBBQUFYcVFBCkFGNmtBQUJlcEFBQVhxUUFBRjZrQUFC
ZXBBQUFYcVFBQUY2a0FBQmVwQUFBWHFRQUFGNmtBQUJlcEFBQVhxUUFBRjZrQUFCZXBBQUEKWHFR
QUFGNmtBQUJlcEFBQVhxUUFBRjZrQUFCZXBBQUFYcVFBQUY2a0FBQmVwQUFBWHFRQUFGNmtBQUJl
cEFBQVhxUUFBRjZrQUFCZQpwQUFCODVZQUFmT1dBQUh6bGdBQjg1WUFBZk9XQUFIemxnQUI4NVlB
QWZPV0FBSHpsZ0FCODVZQUFmT1dBQUh6bGdBQjg1WUFBZk9XCkFBSHpsZ0FCODVZQUFmT1dBQUh6
bGdBQjg1WUFBZk9XQUFIemxnQUI4NVlBQWZPV0FBSHpsZ0FCODVZQUFmT1dBQUh6bGdBQjg1WUEK
QWZPV0FBSHpsZ0FCODVZQUFmT1dBQUh6bGdBQjg1WUFBZk9XQUFIemxnQUI4NVlBQWZPV0FBSHps
Z0FCODVZQUFmT1dBQUh6bGdBQgo4NVlBQWZPV0FBSHpsZ0FCODVZQUFmT1dBQUh6bGdBQjg1WUFB
Zk9XQUFIemxnQUI4NVlBQWZPV0FBSHpsZ0FCODVZQUFmT1dBQUh6CmxnQUI4NVlBQWZPV0FBSHps
Z0FCODVZQUFmT1dBQUh6bGdBQjg1WUFBZk9XQUFIemxnQUI4NVlBQWZPV0FBSHpsZ0FCODVZQUFm
T1cKQUFIemxnQUI4NVlBQWZPV0FBSHpsZ0FCODVZQUFmT1dBQUh6bGdBQjg1WUFBZk9XQUFIemxn
QUI4NVlBQWZPV0FBSHpsZ0FCODVZQQpBZk9XQUFIemxnQUI4NVlBQWZPV0FBSHpsZ0FCODVZQUFm
T1dBQUh6bGdBQjg1WUFBZk9XQUFIemxnQUI4NVlBQWZPV0FBSHpsZ0FCCjg1WUFBZk9XQUFIemxn
QUI4NVlBQWZPV0FBSHpsZ0FCODVZQUFmT1dBQUh6bGdBQjg1WUFBZk9XQUFIemxnQUI4NVlBQWZP
V0FBSHoKbGdBQjg1WUFBZk9XQUFIemxnQUI4NVlBQWZPV0FBVDd5Z0FFKzhvQUJQdktBQVQ3eWdB
RSs4b0FCUHZLQUFUN3lnQUUrOG9BQlB2SwpBQVQ3eWdBRSs4b0FCUHZLQUFUN3lnQUUrOG9BQlB2
S0FBVDd5Z0FFKzhvQUJQdktBQVQ3eWdBRSs4b0FCUHZLQUFUN3lnQUUrOG9BCkJQdktBQVQ3eWdB
RllqWUFCV0kyQUFWaU5nQUZZallBQldJMkFBVmlOZ0FGWWpZQUJXSTJBQVZpTmdBRllqWUFCV0ky
QUFWaU5nQUYKWWpZQUJXSTJBQVZpTmdBRllqWUFCV0kyQUFWaU5nQUZZalkvUHpCWFMwTkJRMFpE
YjI1MFpYaDBRRUJSUVVWQVdGb0FQejh4VjB0RApRVU5HUTI5dWRHVjRkRUJBVVVGRlFGaGFBRDgv
WDBOQVh6QkNSVUJFUTB4TFMwbFFSMEJRY205NGVUODVRWFYwYUc5eWFYcGhkR2x2CmJqOGtRVUZB
QUQ4L1gwTkFYekJDU0VCQ1RrbENUMHhLUmtCZmEwTkdWMmx1Wkc5M2MxTlRURkJsWlhKRFpYSjBQ
eVJCUVVBQVB6OWYKUTBCZk1FSkpRRWxEVUVkRlFVTk9RRjlyUTBaWGFXNWtiM2R6VTFOTVRHOWpZ
V3hEWlhKMFB5UkJRVUFBUHo5ZlEwQmZNRUpNUUVkUQpURXRFVUVwQ1FGOXJRMFpYYVc1a2IzZHpV
MU5NUTJoaGFXNURiMjUwWlhoMFB5UkJRVUFBUHo5ZlEwQmZNRU5HUUVkSFJVZEVRMFpRClFGOXJR
MFpWVWt4RGIyNXVaV04wYVc5dVVISnZjR1Z5ZEhsVGFHOTFiR1JUUUFBL1AxOURRRjh3UTBaQVVF
SlFSMUJFVUVaQVgydEQKUmxOMGNtVmhiVkJ5YjNCbGNuUjVWMmx1Wkc5M2MxTlRURU5sY25SQUFE
OC9YME5BWHpCRFIwQkpSMHhCUzBsQlFGOURSazVsZEhkdgpjbXRJVkZSUVEyOXVibVZqZEdsdmJr
TmhZMmhsVTJWMFFBQS9QMTlEUUY4d1EwZEFVRXBGU0VKS1VFNUFYME5HVG1WMGQyOXlhMGhVClZG
QkRiMjV1WldOMGFXOXVRMkZqYUdWSFpYUkFBRDgvWDBOQVh6RkNUVUJQUWtkUFRVSk9TMEEvSkVG
QlF6OGtRVUZHUHlSQlFVNC8KSkVGQlpUOGtRVUYwUHlSQlFYYy9KRUZCYno4a1FVRnlQeVJCUVdz
L0pFRkJQelEvSkVGQlpEOGtRVUZzUHlSQlFXdy9KRUZCUHlSQgpRVUFBUHo5ZlIxZExRMEZEUmtO
dmJuUmxlSFJBUUZGQlJWQkJXRWxBV2dBL1ptRmljMEJBV1VGTlRVQmFBRDkzYTBOQlEwWkRiMjUw
ClpYaDBRV1JrVlhCa1lYUmxVbVZqZEVCQVdVRllVRUZWVjB0RFFVTkdRMjl1ZEdWNGRFQkFRVUpW
UTBkU1pXTjBRRUJBV2dBL2QydEQKUVVOR1EyOXVkR1Y0ZEVKbFoybHVWWEJrWVhSbFFFQlpRVjlP
VUVGVlYwdERRVU5HUTI5dWRHVjRkRUJBVUVGWVNVNUJRbFZEUjFKbApZM1JBUUZGQ1ZUSkFTVUJh
QUQ5M2EwTkJRMFpEYjI1MFpYaDBRMjl3ZVZWd1pHRjBaVkpsWTNSRmJuVnRaWEpoZEc5eVFFQlpR
VkJCClZWZExRMEZEUmxWd1pHRjBaVkpsWTNSRmJuVnRaWEpoZEc5eVFFQlFRVlZYUzBOQlEwWkRi
MjUwWlhoMFFFQkFXZ0EvZDJ0RFFVTkcKUTI5dWRHVjRkRU55WldGMFpVQkFXVUZRUVZWWFMwTkJR
MFpEYjI1MFpYaDBRRUJZV2dBL2QydERRVU5HUTI5dWRHVjRkRVJsYzNSeQpiM2xBUUZsQldGQkJW
VmRMUTBGRFJrTnZiblJsZUhSQVFFQmFBRDkzYTBOQlEwWkRiMjUwWlhoMFJtbHVhWE5vVlhCa1lY
UmxRRUJaClFWaFFRVlZYUzBOQlEwWkRiMjUwWlhoMFFFQkFXZ0EvZDJ0RFFVTkdRMjl1ZEdWNGRF
WnNkWE5vUUVCWlFWaFFRVlZYUzBOQlEwWkQKYjI1MFpYaDBRRUJBV2dBL2QydERRVU5HUTI5dWRH
VjRkRWRsZEV4aGMzUkRiMjF0YVhSVWFXMWxRRUJaUVU1UVFWVlhTME5CUTBaRApiMjUwWlhoMFFF
QkFXZ0EvZDJ0RFFVTkdRMjl1ZEdWNGRFbHVhWFJwWVd4cGVtVkVNMFJFWlhacFkyVkFRRmxCV0ZC
QlZWZExRMEZEClJrTnZiblJsZUhSQVFGQkJWVWxFYVhKbFkzUXpSRVJsZG1salpUbEFRRUJhQUQ5
M2EwTkJRMFpEYjI1MFpYaDBVbVZzWldGelpVUXoKUkZKbGMyOTFjbU5sYzBCQVdVRllVRUZWVjB0
RFFVTkdRMjl1ZEdWNGRFQkFRRm9BUDNkclEwRkRSa052Ym5SbGVIUlNaVzVrWlhKVgpjR1JoZEdW
QVFGbEJXRkJCVlZkTFEwRkRSa052Ym5SbGVIUkFRRUJhQUQ5M2EwTkJRMFpEYjI1MFpYaDBVMlYw
VEdGNVpYSkFRRmxCCldGQkJWVmRMUTBGRFJrTnZiblJsZUhSQVFGQkJWVjlEUVVOR1RHRjVaWEpB
UUVCYUFEOTNhME5CUTBaVmNHUmhkR1ZTWldOMFJXNTEKYldWeVlYUnZjazVsZUhSU1pXTjBRRUJa
UVZCQ1ZVTkhVbVZqZEVCQVVFRlZWMHREUVVOR1ZYQmtZWFJsVW1WamRFVnVkVzFsY21GMApiM0pB
UUVCYUFEOTNhME5CUTBaVmNHUmhkR1ZTWldOMFJXNTFiV1Z5WVhSdmNsSmxiR1ZoYzJWQVFGbEJX
RkJCVlZkTFEwRkRSbFZ3ClpHRjBaVkpsWTNSRmJuVnRaWEpoZEc5eVFFQkFXZ0EvZDJ0RFFVbHRZ
V2RsVVhWbGRXVkRiMnhzWldOMFFFQlpRVWxRUVZWZlEwRkoKYldGblpWRjFaWFZsUUVCQVdnQS9k
MnREUVVsdFlXZGxVWFZsZFdWRGNtVmhkR1ZBUUZsQlVFRlZYME5CU1cxaFoyVlJkV1YxWlVCQQpT
VWxKUUZvQVAzZHJRMEZKYldGblpWRjFaWFZsUjJWMFEyRndZV05wZEhsQVFGbEJTVkJCVlY5RFFV
bHRZV2RsVVhWbGRXVkFRRUJhCkFEOTNhME5CU1cxaFoyVlJkV1YxWlVkbGRFWnNZV2R6UUVCWlFV
bFFRVlZmUTBGSmJXRm5aVkYxWlhWbFFFQkFXZ0EvZDJ0RFFVbHQKWVdkbFVYVmxkV1ZIWlhSVWVY
QmxTVVJBUUZsQlMxaGFBRDkzYTBOQlNXMWhaMlZSZFdWMVpVbHVjMlZ5ZEVsdFlXZGxRRUJaUVY5
TwpVRUZWWDBOQlNXMWhaMlZSZFdWMVpVQkFUa2xmUzBsUU5rRllTVEZRUVZoQVdqSkFXZ0EvZDJ0
RFFVbHRZV2RsVVhWbGRXVkpiblpoCmJHbGtZWFJsUUVCWlFWaFFRVlZmUTBGSmJXRm5aVkYxWlhW
bFFFQkFXZ0EvZDJ0RFFVbHRZV2RsVVhWbGRXVlNaV2RwYzNSbGNsQnAKZUdWc1FuVm1abVZ5UUVC
WlFWOUxVRUZWWDBOQlNXMWhaMlZSZFdWMVpVQkFVRUZZU1VsSlNVbFFRbFZmWDBOR1JHbGpkR2x2
Ym1GeQplVUJBU1VCYUFEOTNhME5CU1cxaFoyVlJkV1YxWlZObGRFWnNZV2R6UUVCWlFWaFFRVlZm
UTBGSmJXRm5aVkYxWlhWbFFFQkpTVUJhCkFEOTNhME5HVG1WMGQyOXlhMFZ5Y205eVIyVjBURzlq
WVd4cGVtVmtSR1Z6WTNKcGNIUnBiMjVBUUZsQlVFSlZYMTlEUmxOMGNtbHUKWjBCQVNrQmFBRDkz
YTBOR1ZWSk1VbVZ4ZFdWemRFTnZjSGxJVkZSUVVtVnhkV1Z6ZEVKdlpIbFFZWEowYzBCQVdVRlFR
bFZmWDBORwpRWEp5WVhsQVFGQkNWVjlEUmxWU1RGSmxjWFZsYzNSQVFFQmFBRDkzYTBOR1ZWSk1V
bVZ4ZFdWemRGTmxkRWhVVkZCU1pYRjFaWE4wClFtOWtlVkJoY25SelFFQlpRVmhRUVZWZlEwWlZV
a3hTWlhGMVpYTjBRRUJRUWxWZlgwTkdRWEp5WVhsQVFFQmFBRDkzYTBOdmNIbEQKVDA1T1JVTlVV
SEp2ZUhsU1pYTndiMjV6WlVCQVdVRlFRVlZmWDBOR1NGUlVVRTFsYzNOaFoyVkFRRkJCVlY5ZlEw
WlNaV0ZrVTNSeQpaV0Z0UUVCUVFsVmZYME5HVlZKTVFFQkFXZ0EvZDJ0RGIzQjVRM0psWkdWdWRH
bGhiRVp5YjIxRFJsQmxjbk5wYzNSbGJuUlRkRzl5CllXZGxRRUJaUVZCQlZWOURSbFZTVEVOeVpX
UmxiblJwWVd4QVFGQkJWVjlEUmxWU1RGQnliM1JsWTNScGIyNVRjR0ZqWlVCQVFGb0EKUDNkclEy
OXdlVVp2ZFc1a1lYUnBiMjVEWVdOb1pVUnBjbVZqZEc5eWVVQkFXVUZRUWxWZlgwTkdVM1J5YVc1
blFFQllXZ0EvZDJ0RApjbVZoZEdWUWNtbDJZWFJsU0ZSVVVFTnZiMnRwWlZOMGIzSmhaMlZBUUZs
QlVFRlZUM0JoY1hWbFEwWklWRlJRUTI5dmEybGxVM1J2CmNtRm5aVUJBV0ZvQVAzZHJSSEpoZDBa
dlkzVnpVbWx1WjBCQVdVRllVRUZWUTBkRGIyNTBaWGgwUUVCUVFWVkRSME52Ykc5eVFFQk4KUUZv
QVAzZHJSMlYwUkdWbVlYVnNkRWhVVkZCRGIyOXJhV1ZUZEc5eVlXZGxRRUJaUVZCQlZVOXdZWEYx
WlVOR1NGUlVVRU52YjJ0cApaVk4wYjNKaFoyVkFRRmhhQUQ5M2EwZGxkRVp2Ym5SVGJXOXZkR2hw
Ym1kRGIyNTBjbUZ6ZEVCQVdVRk5XRm9BUDNkclIyVjBSbTl1CmRGTnRiMjkwYUdsdVoweGxkbVZz
UUVCWlFVaFlXZ0EvZDJ0SFpYUkhiSGx3YUVGa2RtRnVZMlZ6UUVCWlFWaFFRVlZEUjBadmJuUkEK
UUVGQ1ZVTkhRV1ptYVc1bFZISmhibk5tYjNKdFFFQmZUakpIUVVGVlEwZFRhWHBsUUVCQVdnQS9k
MnRIWlhSSGJIbHdhSE5BUUZsQgpXRkJCVlVOSFJtOXVkRUJBVVVKZlYxRkJSMGxBV2dBL2QydEha
WFJUVTB4RFpYSjBhV1pwWTJGMFpVTm9ZV2x1UTI5dWRHVjRkRUJBCldVRlFRVmhRUWxWZlgwTkdS
R2xqZEdsdmJtRnllVUJBUUZvQVAzZHJSMlYwVTFOTVEyVnlkR2xtYVdOaGRHVkpibVp2UUVCWlFW
QkMKVlY5ZlEwWkVhV04wYVc5dVlYSjVRRUJRUVZWZlEwWlZVa3hTWlhOd2IyNXpaVUJBUUZvQVAz
ZHJSMlYwVTFOTVVHVmxja05sY25ScApabWxqWVhSbFJHRjBZVUJBV1VGUVFWaFFRbFZmWDBOR1JH
bGpkR2x2Ym1GeWVVQkFRRm9BUDNkclIyVjBWWE5sY2xSdlFtRnpaVU5VClRVQkFXVUUvUVZWRFIw
Rm1abWx1WlZSeVlXNXpabTl5YlVCQVVFRlZRMGREYjI1MFpYaDBRRUJBV2dBL2QydEpibWwwYVdG
c2FYcGwKVFdGNGFXMTFiVWhVVkZCRGIyNXVaV04wYVc5dVEyOTFiblJRWlhKSWIzTjBRRUJaUVVs
SlFGb0FQM2RyVW1WemRHOXlaVVp2Ym5SVApiVzl2ZEdocGJtZFRkSGxzWlVCQVdVRllVRUZWUTBk
RGIyNTBaWGgwUUVCSlFGb0FQM2RyVTJWMFEwWlZVa3hTWlhGMVpYTjBVMmh2CmRXeGtRMjl1ZEdW
dWRGTnVhV1ptUUVCWlFWaFFRVlZmUTBaVlVreFNaWEYxWlhOMFFFQmZUa0JhQUQ5M2ExTmxkRU5I
UTI5dWRHVjQKZEVadmJuUlNaVzVrWlhKcGJtZFRkSGxzWlVCQVdVRllVRUZWUTBkRGIyNTBaWGgw
UUVCZlRqRXhRRm9BUDNkclUyVjBRMDlPVGtWRApWRkJ5YjNoNVFYVjBhRzl5YVhwaGRHbHZia1p2
Y2xOMGNtVmhiVUJBV1VGWVVFRlZYMTlEUmxKbFlXUlRkSEpsWVcxQVFGQkNWVjlmClEwWlRkSEpw
Ym1kQVFFQmFBRDkzYTFObGRFTlBUazVGUTFSUWNtOTRlVVp2Y2xOMGNtVmhiVUJBV1VGWVVFRlZY
MTlEUmxKbFlXUlQKZEhKbFlXMUFRRkJDVlY5ZlEwWlRkSEpwYm1kQVFGQkNWVjlmUTBaT2RXMWla
WEpBUUVCYUFEOTNhMU5sZEVOc2FXVnVkRU5sY25ScApabWxqWVhSbFNXNVRVMHhRY205d1pYSjBh
V1Z6UUVCWlFWaFFRVlZmWDBOR1JHbGpkR2x2Ym1GeWVVQkFVRUpWWDE5RFJrUmhkR0ZBClFFQmFB
RDkzYTFObGRFWnZiblJUYlc5dmRHaHBibWREYjI1MGNtRnpkRUJBV1VGWVRVQmFBRDkzYTFObGRF
WnZiblJUYlc5dmRHaHAKYm1kTVpYWmxiRUJBV1VGWVNFQmFBRDkzYTFObGRFWnZiblJUYlc5dmRH
aHBibWRUZEhsc1pVQkFXVUZKVUVGVlEwZERiMjUwWlhoMApRRUJmVGtCYUFEOTNhMU5sZEZCaGRI
UmxjbTVDWVhObFExUk5RRUJaUVZoUVFWVkRSME52Ym5SbGVIUkFRRlZEUjBGbVptbHVaVlJ5CllX
NXpabTl5YlVCQVFGb0FQM2RyVTJWMFVHRjBkR1Z5YmxCb1lYTmxTVzVWYzJWeVUzQmhZMlZBUUZs
QldGQkJWVU5IUTI5dWRHVjQKZEVCQVZVTkhVRzlwYm5SQVFFQmFBRDkzYTFObGRGVndSbTl1ZEVO
aFkyaGxRRUJaUVZoSlFGb0FQM2RyVTNsemRHVnRSbTl1ZEZOdApiMjkwYUdsdVowTm9ZVzVuWldS
QVFGbEJXRmhhQUY5ZmNtVmhiRUF3TURBd01EQXdNQUJmWDNKbFlXeEFNREF3TURBd01EQXdNREF3
Ck1EQXdNQUJmWDNKbFlXeEFNMlk0TURBd01EQUFYMTl5WldGc1FETm1Zams1T1RrNVlUQXdNREF3
TURBQVgxOXlaV0ZzUURObVpUQXcKTURBd01EQXdNREF3TURBQVgxOXlaV0ZzUURObVpqQXdNREF3
TURBd01EQXdNREFBWDE5eVpXRnNRRFF3TURBd01EQXdBRjlmY21WaApiRUEwTURFek16TXpNd0Jm
WDNKbFlXeEFOREEyWm1Vd01EQXdNREF3TURBd01BQmZYM0psWVd4QU5EQTRaalF3TURBd01EQXdN
REF3Ck1BQmZYM0psWVd4QU5HWTRNREF3TURBQVgxOXlaV0ZzUUdKbU9EQXdNREF3QUY5alpXbHNa
Z0JmWm1GaWMyWUFYM0J2ZDJZQVB6OHcKVFdWa2FXRlRhR0Z5WldSVlNVSmhZMnRuY205MWJtUkZi
R1Z0Wlc1MFFFQlJRVVZBV0ZvQVB6OHdUV1ZrYVdGVGFHRnlaV1JWU1VORApTVzFoWjJWRmJHVnRa
VzUwUUVCUlFVVkFXRm9BUHo4d1RXVmthV0ZUYUdGeVpXUlZTVWx0WVdkbFJXeGxiV1Z1ZEVCQVVV
RkZRRmhhCkFEOC9NRTFsWkdsaFUyaGhjbVZrVlVsVWFXMWxiR2x1WlZOc2FXUmxja0JBVVVGRlFG
aGFBRDgvTUUxbFpHbGhVMmhoY21Wa1ZVbFUKYVcxbGJHbHVaVk5zYVdSbGNsUm9kVzFpUld4bGJX
VnVkRUJBVVVGRlFGaGFBRDgvTUUxbFpHbGhVMmhoY21Wa1ZVbFdiMngxYldWVApiR2xrWlhKQVFG
RkJSVUJZV2dBL1B6Qk5aV1JwWVZOb1lYSmxaRlZKVm05c2RXMWxVMnhwWkdWeVFtRmphMmR5YjNW
dVpFVnNaVzFsCmJuUkFRRkZCUlVCWVdnQS9QekJOWldScFlWTm9ZWEpsWkZWSlZtOXNkVzFsVTJ4
cFpHVnlWR2gxYldKRmJHVnRaVzUwUUVCUlFVVkEKV0ZvQVB6OHdUV1ZrYVdGVlNVVnNaVzFsYm5S
QVFGRkJSVUJZV2dBL1B6Qk5aV1JwWVZWSlZHbHRaV3hwYm1WVGJHbGtaWEpBUUZGQgpSVUJZV2dB
L1B6Rk5aV1JwWVZOb1lYSmxaRlZKUW1GamEyZHliM1Z1WkVWc1pXMWxiblJBUUZWQlJVQllXZ0Ev
UHpGTlpXUnBZVk5vCllYSmxaRlZKUTBOSmJXRm5aVVZzWlcxbGJuUkFRRlZCUlVCWVdnQS9QekZO
WldScFlWTm9ZWEpsWkZWSlNXMWhaMlZGYkdWdFpXNTAKUUVCVlFVVkFXRm9BUHo4eFRXVmthV0ZU
YUdGeVpXUlZTVlJwYldWc2FXNWxVMnhwWkdWeVFFQlZRVVZBV0ZvQVB6OHhUV1ZrYVdGVAphR0Z5
WldSVlNWUnBiV1ZzYVc1bFUyeHBaR1Z5VkdoMWJXSkZiR1Z0Wlc1MFFFQlZRVVZBV0ZvQVB6OHhU
V1ZrYVdGVGFHRnlaV1JWClNWWnZiSFZ0WlZOc2FXUmxja0JBVlVGRlFGaGFBRDgvTVUxbFpHbGhV
MmhoY21Wa1ZVbFdiMngxYldWVGJHbGtaWEpDWVdOclozSnYKZFc1a1JXeGxiV1Z1ZEVCQVZVRkZR
RmhhQUQ4L01VMWxaR2xoVTJoaGNtVmtWVWxXYjJ4MWJXVlRiR2xrWlhKVWFIVnRZa1ZzWlcxbApi
blJBUUZWQlJVQllXZ0EvUHpGTlpXUnBZVlZKUld4bGJXVnVkRUJBVlVGRlFGaGFBRDgvTVUxbFpH
bGhWVWxVYVcxbGJHbHVaVk5zCmFXUmxja0JBVlVGRlFGaGFBRDgvWHpkTlpXUnBZVk5vWVhKbFpG
VkpRbUZqYTJkeWIzVnVaRVZzWlcxbGJuUkFRRFpDUUFBL1AxODMKVFdWa2FXRlRhR0Z5WldSVlNV
TkRTVzFoWjJWRmJHVnRaVzUwUUVBMlFrQUFQejlmTjAxbFpHbGhVMmhoY21Wa1ZVbEpiV0ZuWlVW
cwpaVzFsYm5SQVFEWkNRQUEvUDE4M1RXVmthV0ZUYUdGeVpXUlZTVlJwYldWc2FXNWxVMnhwWkdW
eVFFQTJRa0FBUHo5Zk4wMWxaR2xoClUyaGhjbVZrVlVsVWFXMWxiR2x1WlZOc2FXUmxjbFJvZFcx
aVJXeGxiV1Z1ZEVCQU5rSkFBRDgvWHpkTlpXUnBZVk5vWVhKbFpGVkoKVm05c2RXMWxVMnhwWkdW
eVFFQTJRa0FBUHo5Zk4wMWxaR2xoVTJoaGNtVmtWVWxXYjJ4MWJXVlRiR2xrWlhKQ1lXTnJaM0p2
ZFc1awpSV3hsYldWdWRFQkFOa0pBQUQ4L1h6ZE5aV1JwWVZOb1lYSmxaRlZKVm05c2RXMWxVMnhw
WkdWeVZHaDFiV0pGYkdWdFpXNTBRRUEyClFrQUFQejlmTjAxbFpHbGhWVWxGYkdWdFpXNTBRRUEy
UWtBQVB6OWZOMDFsWkdsaFZVbFVhVzFsYkdsdVpWTnNhV1JsY2tCQU5rSkEKQUQ4L1gwZE5aV1Jw
WVZOb1lYSmxaRlZKUW1GamEyZHliM1Z1WkVWc1pXMWxiblJBUUZWQlJWQkJXRWxBV2dBL1AxOUhU
V1ZrYVdGVAphR0Z5WldSVlNVTkRTVzFoWjJWRmJHVnRaVzUwUUVCVlFVVlFRVmhKUUZvQVB6OWZS
MDFsWkdsaFUyaGhjbVZrVlVsSmJXRm5aVVZzClpXMWxiblJBUUZWQlJWQkJXRWxBV2dBL1AxOUhU
V1ZrYVdGVGFHRnlaV1JWU1ZScGJXVnNhVzVsVTJ4cFpHVnlRRUJWUVVWUVFWaEoKUUZvQVB6OWZS
MDFsWkdsaFUyaGhjbVZrVlVsVWFXMWxiR2x1WlZOc2FXUmxjbFJvZFcxaVJXeGxiV1Z1ZEVCQVZV
RkZVRUZZU1VCYQpBRDgvWDBkTlpXUnBZVk5vWVhKbFpGVkpWbTlzZFcxbFUyeHBaR1Z5UUVCVlFV
VlFRVmhKUUZvQVB6OWZSMDFsWkdsaFUyaGhjbVZrClZVbFdiMngxYldWVGJHbGtaWEpDWVdOcloz
SnZkVzVrUld4bGJXVnVkRUJBVlVGRlVFRllTVUJhQUQ4L1gwZE5aV1JwWVZOb1lYSmwKWkZWSlZt
OXNkVzFsVTJ4cFpHVnlWR2gxYldKRmJHVnRaVzUwUUVCVlFVVlFRVmhKUUZvQVB6OWZSMDFsWkds
aFZVbEZiR1Z0Wlc1MApRRUJWUVVWUVFWaEpRRm9BUHo5ZlIwMWxaR2xoVlVsVWFXMWxiR2x1WlZO
c2FXUmxja0JBVlVGRlVFRllTVUJhQUQ5aVlXTnJaM0p2CmRXNWtVbUZrYVhWelFFMWxaR2xoVTJo
aGNtVmtWVWxXYjJ4MWJXVlRiR2xrWlhKQ1lXTnJaM0p2ZFc1a1JXeGxiV1Z1ZEVCQU1FbEMKQUQ5
aVlXTnJaM0p2ZFc1a1UzUnliMnRsVkdocFkydHVaWE56UUUxbFpHbGhVMmhoY21Wa1ZVbFdiMngx
YldWVGJHbGtaWEpDWVdOcgpaM0p2ZFc1a1JXeGxiV1Z1ZEVCQU1FbENBRDlqYjI1emRISmhhVzVC
YzNCbFkzUlNZWFJwYjBCTlpXUnBZVk5vWVhKbFpGVkpRME5KCmJXRm5aVVZzWlcxbGJuUkFRRlZD
UlY5T1dGb0FQMk52Ym5OMGNtRnBia0Z6Y0dWamRGSmhkR2x2UUUxbFpHbGhVMmhoY21Wa1ZVbEoK
YldGblpVVnNaVzFsYm5SQVFGVkNSVjlPV0ZvQVAyTnZiblJ5YjJ4R2IzSlFZWEowUUUxbFpHbGhV
MmhoY21Wa1ZVbERiMjUwY205cwpjMEJBVlVKRlVFRldUV1ZrYVdGVlNVVnNaVzFsYm5SQVFFaEFX
Z0EvWTNKbFlYUmxRbUZqYTJkeWIzVnVaRWx0WVdkbFFFMWxaR2xoClUyaGhjbVZrVlVsRFEwbHRZ
V2RsUld4bGJXVnVkRUJBVlVGRlVFSllVRUZWUTBkRGIyNTBaWGgwUUVCVlEwZFNaV04wUUVCQVdn
QS8KWTNKbFlYUmxRbUZqYTJkeWIzVnVaRWx0WVdkbFFFMWxaR2xoVTJoaGNtVmtWVWxKYldGblpV
VnNaVzFsYm5SQVFGVkJSVkJDV0ZCQgpWVU5IUTI5dWRHVjRkRUJBVlVOSFVtVmpkRUJBUUZvQVAy
UnlZWGRDWVdOclozSnZkVzVrUUUxbFpHbGhVMmhoY21Wa1ZVbEpiV0ZuClpVVnNaVzFsYm5SQVFG
VkNSVmhRUVZWRFIwTnZiblJsZUhSQVFGVkRSMUpsWTNSQVFFQmFBRDlrZFhKaGRHbHZia0JOWldS
cFlWVkoKVkdsdFpXeHBibVZUYkdsa1pYSkFRRkZDUlU1WVdnQS9abWxzYkUxdlpHVkFUV1ZrYVdG
VGFHRnlaV1JWU1VsdFlXZGxSV3hsYldWdQpkRUJBVVVKRlAwRlhORTFsWkdsaFZVbEpiV0ZuWlVa
cGJHeE5iMlJsUURGQVdGb0FQMlp5WVdOMGFXOXVURzloWkdWa1FFMWxaR2xoClZVbFVhVzFsYkds
dVpWTnNhV1JsY2tCQVVVSkZUbGhhQUQ5bmJHOTNRMjlzYjNKQVRXVmthV0ZUYUdGeVpXUlZTVWx0
WVdkbFJXeGwKYldWdWRFQkFTVUZGVUVGVlEwZERiMnh2Y2tCQVdGb0FQMmhsYVdkb2RFQk5aV1Jw
WVZOb1lYSmxaRlZKVkdsdFpXeHBibVZUYkdsawpaWEpBUUZOQlRWaGFBRDlvYVdkb2JHbG5hSFJW
Ym14dllXUmxaRkpoYm1kbFFFMWxaR2xoVTJoaGNtVmtWVWxVYVcxbGJHbHVaVk5zCmFXUmxja0JB
UVVKRldGQkJWVU5IUTI5dWRHVjRkRUJBVlVOSFVtVmpkRUJBUUZvQVAyaHBkRlJsYzNSQVRXVmth
V0ZUYUdGeVpXUlYKU1ZScGJXVnNhVzVsVTJ4cFpHVnlWR2gxYldKRmJHVnRaVzUwUUVCVlFrVmZU
bFZEUjFKbFkzUkFRRlZEUjFCdmFXNTBRRUJBV2dBLwphR2wwVkdWemRFQk5aV1JwWVZOb1lYSmxa
RlZKVm05c2RXMWxVMnhwWkdWeVFtRmphMmR5YjNWdVpFVnNaVzFsYm5SQVFGVkNSVjlPClZVTkhV
bVZqZEVCQVZVTkhVRzlwYm5SQVFFQmFBRDlvYVhSVVpYTjBRRTFsWkdsaFUyaGhjbVZrVlVsV2Iy
eDFiV1ZUYkdsa1pYSlUKYUhWdFlrVnNaVzFsYm5SQVFGVkNSVjlPVlVOSFVtVmpkRUJBVlVOSFVH
OXBiblJBUUVCYUFEOW9hWFJVWlhOMFFFMWxaR2xoVlVsRgpiR1Z0Wlc1MFFFQlZRa1ZmVGxWRFIx
SmxZM1JBUUZWRFIxQnZhVzUwUUVCQVdnQS9hVzFoWjJWQVRXVmthV0ZUYUdGeVpXUlZTVWx0CllX
ZGxSV3hsYldWdWRFQkFTVUpGVUVKWVdGb0FQMmx6Ulc1aFlteGxaRUJOWldScFlWVkpSV3hsYldW
dWRFQkFVVUpGWDA1WVdnQS8KYVhOR2IyTjFjMlZrUUUxbFpHbGhWVWxGYkdWdFpXNTBRRUJSUWtW
ZlRsaGFBRDlwYzFCeVpYTnpaV1JBVFdWa2FXRlZTVVZzWlcxbApiblJBUUZGQ1JWOU9XRm9BUDI1
aGRIVnlZV3hUYVhwbFFFMWxaR2xoVTJoaGNtVmtWVWxKYldGblpVVnNaVzFsYm5SQVFGVkNSVDlC
ClZVTkhVMmw2WlVCQVdGb0FQMjVoZEhWeVlXeFRhWHBsUUUxbFpHbGhVMmhoY21Wa1ZVbFVhVzFs
YkdsdVpWTnNhV1JsY2xSb2RXMWkKUld4bGJXVnVkRUJBVlVKRlAwRlZRMGRUYVhwbFFFQllXZ0Ev
Ym1GMGRYSmhiRk5wZW1WQVRXVmthV0ZUYUdGeVpXUlZTVlp2YkhWdApaVk5zYVdSbGNsUm9kVzFp
Uld4bGJXVnVkRUJBVlVKRlAwRlZRMGRUYVhwbFFFQllXZ0EvYm1GMGRYSmhiRk5wZW1WQVRXVmth
V0ZWClNVVnNaVzFsYm5SQVFGVkNSVDlCVlVOSFUybDZaVUJBV0ZvQVAyOW1abk5sZEVCTlpXUnBZ
Vk5vWVhKbFpGVkpWR2x0Wld4cGJtVlQKYkdsa1pYSkFRRk5CVFZoYUFEOXdZV2x1ZEVCTlpXUnBZ
Vk5vWVhKbFpGVkpRbUZqYTJkeWIzVnVaRVZzWlcxbGJuUkFRRlZCUlZoUQpRVlZEUjBOdmJuUmxl
SFJBUUZWRFIxSmxZM1JBUUVCYUFEOXdZV2x1ZEVCTlpXUnBZVk5vWVhKbFpGVkpTVzFoWjJWRmJH
VnRaVzUwClFFQlZRVVZZVUVGVlEwZERiMjUwWlhoMFFFQlZRMGRTWldOMFFFQkFXZ0EvY0dGcGJu
UkFUV1ZrYVdGVGFHRnlaV1JWU1ZScGJXVnMKYVc1bFUyeHBaR1Z5UUVCVlFVVllVRUZWUTBkRGIy
NTBaWGgwUUVCVlEwZFNaV04wUUVCQVdnQS9jR0ZwYm5SQVRXVmthV0ZUYUdGeQpaV1JWU1ZScGJX
VnNhVzVsVTJ4cFpHVnlWR2gxYldKRmJHVnRaVzUwUUVCVlFVVllVRUZWUTBkRGIyNTBaWGgwUUVC
VlEwZFNaV04wClFFQkFXZ0EvY0dGcGJuUkFUV1ZrYVdGVGFHRnlaV1JWU1ZadmJIVnRaVk5zYVdS
bGNrQkFWVUZGV0ZCQlZVTkhRMjl1ZEdWNGRFQkEKVlVOSFVtVmpkRUJBUUZvQVAzQmhhVzUwUUUx
bFpHbGhVMmhoY21Wa1ZVbFdiMngxYldWVGJHbGtaWEpDWVdOclozSnZkVzVrUld4bApiV1Z1ZEVC
QVZVRkZXRkJCVlVOSFEyOXVkR1Y0ZEVCQVZVTkhVbVZqZEVCQVFGb0FQM0JoYVc1MFFFMWxaR2xo
VTJoaGNtVmtWVWxXCmIyeDFiV1ZUYkdsa1pYSlVhSFZ0WWtWc1pXMWxiblJBUUZWQlJWaFFRVlZE
UjBOdmJuUmxlSFJBUUZWRFIxSmxZM1JBUUVCYUFEOXcKWVhKMFNVUkFUV1ZrYVdGVlNVVnNaVzFs
Ym5SQVFGRkNSVWhZV2dBL2NtRmthWFZ6UUUxbFpHbGhVMmhoY21Wa1ZVbFVhVzFsYkdsdQpaVk5z
YVdSbGNsUm9kVzFpUld4bGJXVnVkRUJBVTBGTldGb0FQM0poWkdsMWMwQk5aV1JwWVZOb1lYSmxa
RlZKVm05c2RXMWxVMnhwClpHVnlRRUJUUVUxWVdnQS9jbUZrYVhWelFFMWxaR2xoVTJoaGNtVmtW
VWxXYjJ4MWJXVlRiR2xrWlhKQ1lXTnJaM0p2ZFc1a1JXeGwKYldWdWRFQkFVMEZOV0ZvQVAzSmha
R2wxYzBCTlpXUnBZVk5vWVhKbFpGVkpWbTlzZFcxbFUyeHBaR1Z5VkdoMWJXSkZiR1Z0Wlc1MApR
RUJUUVUxWVdnQS9jMlYwVUdGeWRFbEVRRTFsWkdsaFZVbEZiR1Z0Wlc1MFFFQlJRVVZZU0VCYUFE
OXpiR2xrWlhKQVRXVmthV0ZUCmFHRnlaV1JWU1VOdmJuUnliMnh6UUVCVlFrVlFRVlpOWldScFlW
VkpWR2x0Wld4cGJtVlRiR2xrWlhKQVFGaGFBRDl6ZEhKdmEyVlUKYUdsamEyNWxjM05BVFdWa2FX
RlRhR0Z5WldSVlNWWnZiSFZ0WlZOc2FXUmxja0poWTJ0bmNtOTFibVJGYkdWdFpXNTBRRUJUUVUx
WQpXZ0EvZEdoMWJXSlNZV1JwZFhOQVRXVmthV0ZUYUdGeVpXUlZTVlJwYldWc2FXNWxVMnhwWkdW
eVZHaDFiV0pGYkdWdFpXNTBRRUF3ClNVSUFQM1JvZFcxaVVtRmthWFZ6UUUxbFpHbGhVMmhoY21W
a1ZVbFdiMngxYldWVGJHbGtaWEpVYUhWdFlrVnNaVzFsYm5SQVFEQkoKUWdBL2RHbHRaVXh2WVdS
bFpFQk5aV1JwWVZWSlZHbHRaV3hwYm1WVGJHbGtaWEpBUUZGQ1JVNVlXZ0EvZEdsdFpXeHBibVZT
WldOMApSbTl5UW05MWJtUnpRRTFsWkdsaFUyaGhjbVZrVlVsVWFXMWxiR2x1WlZOc2FXUmxja0JB
UVVKRlAwRlZRMGRTWldOMFFFQlZNa0JBCldnQS9kSEpoWTJ0SVpXbG5hSFJBVFdWa2FXRlRhR0Z5
WldSVlNWUnBiV1ZzYVc1bFUyeHBaR1Z5UUVBd1NVSUFQM1J5WVdOclQyWm0KYzJWMFFFMWxaR2xo
VTJoaGNtVmtWVWxVYVcxbGJHbHVaVk5zYVdSbGNrQkFNRWxDQUQ5MGNtRmphMUpoWkdsMWMwQk5a
V1JwWVZObwpZWEpsWkZWSlZtOXNkVzFsVTJ4cFpHVnlRRUF3U1VJQVgxOXlaV0ZzUUROa1lUTmtO
ekJoQUY5ZmNtVmhiRUF6WkdZd1pqQm1NUUJmClgzSmxZV3hBTTJVd1pqVmpNamtBWDE5eVpXRnNR
RE5sTkdOalkyTmtBRjlmY21WaGJFQXpaVGd3TURBd01BQmZYM0psWVd4QU0yVmkKTXpNek16TUFY
MTl5WldGc1FETm1NREF3TURBd0FGOWZjbVZoYkVBelpqSmxNVFEzWWdCZlgzSmxZV3hBTTJZME1E
QXdNREFBWDE5eQpaV0ZzUURObU5HTmpZMk5rQUY5ZmNtVmhiRUF6WmpVd1pEQmtNUUJmWDNKbFlX
eEFNMlkxT0dRNFpEa0FYMTl5WldGc1FETm1OakF3Ck1EQXdBRjlmY21WaGJFQXpaalppT0RVeFpn
QmZYM0psWVd4QU0yWTNNek16TXpNQVgxOXlaV0ZzUURObVl6a3dabVJpQUY5ZmNtVmgKYkVBME1E
QXdNREF3TURBd01EQXdNREF3QUY5ZmNtVmhiRUEwTURBNU1qRm1ZalUwTkRReVpERTRBRjlmY21W
aGJFQTBNREV3TURBdwpNREF3TURBd01EQXdBRjlmY21WaGJFQTBNREl3TURBd01EQXdNREF3TURB
d0FGOWZjbVZoYkVBME1ETXdNREF3TURBd01EQXdNREF3CkFGOWZjbVZoYkVBME1EUTVNR1prWWdC
ZlgzSmxZV3hBTkRBMk5qZ3dNREF3TURBd01EQXdNQUJmWDNKbFlXeEFOREE0TURBd01EQUEKWDE5
eVpXRnNRRFF3T1RaalltVTBBRjlmY21WaGJFQTBNR0V3TURBd01BQmZYM0psWVd4QU5ERXhNREF3
TURBQVgxOXlaV0ZzUURReApNakF3TURBd0FGOWZjbVZoYkVBME1UTXdNREF3TUFCZlgzSmxZV3hB
WW1aak9UQm1aR0lBUHo4d1RXVmthV0ZEYjI1MGNtOXNjMEJBClVVRkZRRmhhQUQ4L01FMWxaR2xo
VEdWbllXTjVRMjl1ZEhKdmJITkFRRkZCUlVCWVdnQS9QekJOWldScFlWTm9ZWEpsWkZWSlEyOXUK
ZEhKdmJITkFRRkZCUlVCWVdnQS9QekZOWldScFlVTnZiblJ5YjJ4elFFQlZRVVZBV0ZvQVB6OHhU
V1ZrYVdGTVpXZGhZM2xEYjI1MApjbTlzYzBCQVZVRkZRRmhhQUQ4L01VMWxaR2xoVTJoaGNtVmtW
VWxEYjI1MGNtOXNjMEJBVlVGRlFGaGFBRDgvWHpkTlpXUnBZVU52CmJuUnliMnh6UUVBMlFrQUFQ
ejlmTjAxbFpHbGhUR1ZuWVdONVEyOXVkSEp2YkhOQVFEWkNRQUEvUDE4M1RXVmthV0ZUYUdGeVpX
UlYKU1VOdmJuUnliMnh6UUVBMlFrQUFQejlmUjAxbFpHbGhRMjl1ZEhKdmJITkFRRlZCUlZCQldF
bEFXZ0EvUDE5SFRXVmthV0ZNWldkaApZM2xEYjI1MGNtOXNjMEJBVlVGRlVFRllTVUJhQUQ4L1gw
ZE5aV1JwWVZOb1lYSmxaRlZKUTI5dWRISnZiSE5BUUZWQlJWQkJXRWxBCldnQS9aSEpoZDFCaGNu
UkFUV1ZrYVdGRGIyNTBjbTlzYzBCQVZVRkZXRWhRUVZWRFIwTnZiblJsZUhSQVFGVkRSMUpsWTNS
QVFFbEEKV2dBL1pISmhkMVJwYldWc2FXNWxVMnhwWkdWeVZISmhZMnRBVFdWa2FXRkRiMjUwY205
c2MwQkFWVUZGV0ZCQlZVTkhRMjl1ZEdWNApkRUJBVlVOSFVtVmpkRUJBVGs1SlFGb0FQMmhwZEZS
bGMzUlFZWEowUUUxbFpHbGhRMjl1ZEhKdmJITkFRRlZDUlY5T1NGVkRSMUpsClkzUkFRRlZEUjFC
dmFXNTBRRUJBV2dBL2JtRjBkWEpoYkZOcGVtVkFUV1ZrYVdGRGIyNTBjbTlzYzBCQVZVSkZQMEZW
UTBkVGFYcGwKUUVCSVFGb0FQM0psYzNSdmNtVkRiMjUwWlhoMFFXWjBaWEpRWVdsdWRHbHVaMEJO
WldScFlWVkpSV3hsYldWdWRFQkFUVUpGV0ZCQgpWVU5IUTI5dWRHVjRkRUJBUUZvQVAzTmxkRVIx
Y21GMGFXOXVRRTFsWkdsaFZVbFVhVzFsYkdsdVpWTnNhV1JsY2tCQVVVRkZXRTVBCldnQS9jMlYw
VTNSaGRHVkFUV1ZrYVdGVlNVVnNaVzFsYm5SQVFGRkJSVmhYTkZkTFRXVmthV0ZEYjI1MGNtOXNi
R1Z5VkdobGJXVlQKZEdGMFpVQkFRRm9BUDNObGRGUnBiV1ZNYjJGa1pXUkFUV1ZrYVdGVlNWUnBi
V1ZzYVc1bFUyeHBaR1Z5UUVCUlFVVllUa0JhQUQ5egpaWFJWY0VOdmJuUmxlSFJHYjNKUVlXbHVk
R2x1WjBCTlpXUnBZVlZKUld4bGJXVnVkRUJBVFVKRldGQkJWVU5IUTI5dWRHVjRkRUJBClZVTkhV
bVZqZEVCQVFGb0FYMWRMUkhKaGQwMWxaR2xoVTJ4cFpHVnlWSEpoWTJzQVgxZExSSEpoZDAxbFpH
bGhWVWxRWVhKMEFGOVgKUzBocGRGUmxjM1JOWldScFlWVkpVR0Z5ZEFCZlYwdE5aV0Z6ZFhKbFRX
VmthV0ZWU1ZCaGNuUUFQejh3VFdWa2FXRk1aV2RoWTNsVgpTVWx0WVdkbFJXeGxiV1Z1ZEVCQVVV
RkZRRmhhQUQ4L01FMWxaR2xoVEdWbllXTjVWVWxVYVcxbGJHbHVaVk5zYVdSbGNrQkFVVUZGClFG
aGFBRDgvTVUxbFpHbGhUR1ZuWVdONVZVbEpiV0ZuWlVWc1pXMWxiblJBUUZWQlJVQllXZ0EvUHpG
TlpXUnBZVXhsWjJGamVWVkoKVkdsdFpXeHBibVZUYkdsa1pYSkFRRlZCUlVCWVdnQS9QMTgzVFdW
a2FXRk1aV2RoWTNsVlNVbHRZV2RsUld4bGJXVnVkRUJBTmtKQQpBRDgvWHpkTlpXUnBZVXhsWjJG
amVWVkpWR2x0Wld4cGJtVlRiR2xrWlhKQVFEWkNRQUEvUDE5SFRXVmthV0ZNWldkaFkzbFZTVWx0
CllXZGxSV3hsYldWdWRFQkFWVUZGVUVGWVNVQmFBRDgvWDBkTlpXUnBZVXhsWjJGamVWVkpWR2x0
Wld4cGJtVlRiR2xrWlhKQVFGVkIKUlZCQldFbEFXZ0EvWTI5dWRISnZiRVp2Y2xCaGNuUkFUV1Zr
YVdGTVpXZGhZM2xEYjI1MGNtOXNjMEJBVlVKRlVFRldUV1ZrYVdGVgpTVVZzWlcxbGJuUkFRRWhB
V2dBL2FXMWhaMlZBVFdWa2FXRk1aV2RoWTNsVlNVbHRZV2RsUld4bGJXVnVkRUJBUVVKRlVFRlZR
MGRKCmJXRm5aVUJBV0ZvQVAyNWhkSFZ5WVd4VGFYcGxRRTFsWkdsaFRHVm5ZV041VlVsSmJXRm5a
VVZzWlcxbGJuUkFRRlZDUlQ5QlZVTkgKVTJsNlpVQkFXRm9BUDNCaGFXNTBRRTFsWkdsaFRHVm5Z
V041VlVsSmJXRm5aVVZzWlcxbGJuUkFRRlZCUlZoUVFWVkRSME52Ym5SbAplSFJBUUZWRFIxSmxZ
M1JBUUVCYUFEOXdZV2x1ZEVCTlpXUnBZVXhsWjJGamVWVkpWR2x0Wld4cGJtVlRiR2xrWlhKQVFG
VkJSVmhRClFWVkRSME52Ym5SbGVIUkFRRlZEUjFKbFkzUkFRRUJhQUQ5eVpYTjBiM0psUTI5dWRH
VjRkRUZtZEdWeVVHRnBiblJwYm1kQVRXVmsKYVdGTVpXZGhZM2xWU1VsdFlXZGxSV3hsYldWdWRF
QkFSVUpGV0ZCQlZVTkhRMjl1ZEdWNGRFQkFRRm9BUDNKbGMzUnZjbVZEYjI1MApaWGgwUVdaMFpY
SlFZV2x1ZEdsdVowQk5aV1JwWVV4bFoyRmplVlZKVkdsdFpXeHBibVZUYkdsa1pYSkFRRVZDUlZo
UVFWVkRSME52CmJuUmxlSFJBUUVCYUFEOXpaWFJWY0VOdmJuUmxlSFJHYjNKUVlXbHVkR2x1WjBC
TlpXUnBZVXhsWjJGamVWVkpTVzFoWjJWRmJHVnQKWlc1MFFFQkZRa1ZZVUVGVlEwZERiMjUwWlho
MFFFQlZRMGRTWldOMFFFQkFXZ0EvYzJWMFZYQkRiMjUwWlhoMFJtOXlVR0ZwYm5ScApibWRBVFdW
a2FXRk1aV2RoWTNsVlNWUnBiV1ZzYVc1bFUyeHBaR1Z5UUVCRlFrVllVRUZWUTBkRGIyNTBaWGgw
UUVCVlEwZFNaV04wClFFQkFXZ0EvYzJ4cFpHVnlRRTFsWkdsaFRHVm5ZV041UTI5dWRISnZiSE5B
UUZWQ1JWQkJWazFsWkdsaFZVbFVhVzFsYkdsdVpWTnMKYVdSbGNrQkFXRm9BWDJac2IyOXlaZ0F2
SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdNVEk1TWpBd016azNOeUFnSUNBZ0lDQWdJQ0FnSUNBZwpNQ0Fn
SUNBZ0lDQXhNVFl5TUNBZ0lDQWdZQW9FQUFBQXBGNEFBSmJ6QVFESyt3UUFObUlGQVBVQUFBQURB
QU1BQkFBRUFBSUFBZ0FECkFBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQkFBTUFBd0FFQUFRQUFnQUNB
QU1BQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUVBQXdBREFBUUEKQkFBQ0FBSUFBd0FDQUFJQUFnQUNB
QUlBQWdBQ0FBSUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBd0FEQUFRQUJBQUNBQUlBQXdBQwpB
QUlBQWdBQ0FBSUFBZ0FDQUFJQUFRQUNBQUlBQWdBQ0FBUUFBZ0FDQUFJQUFnQURBQU1BQWdBQkFB
SUFBZ0FDQUFJQUFnQUNBQUlBCkFnQUNBQU1BQkFBQ0FBSUFBZ0FDQUFNQUJBQUNBQUlBQWdBQ0FB
SUFCQUFFQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUMKQUFRQUJBQURBQU1BQWdBREFB
TUFCQUFFQUFNQUJBQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUJBQUVBQVFBQkFBRUFBUUFCQUFF
QQpBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFF
QUFRQUJBQUVBQVFBQkFBRUFBUUFCCkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFF
QUFRQUJBQUVBQVFBREFBTUFBd0FEQUFFQUFRQUNBQUlBQWdBQ0FBSUEKQWdBQ0FBSUFBZ0FDQUFJ
QUFnQUNBQUlBQWdBQkFBRUFBZ0FCQUFFQUFRQUNBQUlBQWdBQkFBSUFBZ0FDQUFJQUFRQUNBQUVB
QWdBQwpBQUlBQWdBQ0FBRUFBUUFDQUFFQUFRQUVBQUVBUHo4d1RXVmthV0ZEYjI1MGNtOXNjMEJB
VVVGRlFGaGFBRDgvTUUxbFpHbGhUR1ZuCllXTjVRMjl1ZEhKdmJITkFRRkZCUlVCWVdnQS9QekJO
WldScFlVeGxaMkZqZVZWSlNXMWhaMlZGYkdWdFpXNTBRRUJSUVVWQVdGb0EKUHo4d1RXVmthV0ZN
WldkaFkzbFZTVlJwYldWc2FXNWxVMnhwWkdWeVFFQlJRVVZBV0ZvQVB6OHdUV1ZrYVdGVGFHRnla
V1JWU1VKaApZMnRuY205MWJtUkZiR1Z0Wlc1MFFFQlJRVVZBV0ZvQVB6OHdUV1ZrYVdGVGFHRnla
V1JWU1VORFNXMWhaMlZGYkdWdFpXNTBRRUJSClFVVkFXRm9BUHo4d1RXVmthV0ZUYUdGeVpXUlZT
VU52Ym5SeWIyeHpRRUJSUVVWQVdGb0FQejh3VFdWa2FXRlRhR0Z5WldSVlNVbHQKWVdkbFJXeGxi
V1Z1ZEVCQVVVRkZRRmhhQUQ4L01FMWxaR2xoVTJoaGNtVmtWVWxVYVcxbGJHbHVaVk5zYVdSbGNr
QkFVVUZGUUZoYQpBRDgvTUUxbFpHbGhVMmhoY21Wa1ZVbFVhVzFsYkdsdVpWTnNhV1JsY2xSb2RX
MWlSV3hsYldWdWRFQkFVVUZGUUZoYUFEOC9NRTFsClpHbGhVMmhoY21Wa1ZVbFdiMngxYldWVGJH
bGtaWEpBUUZGQlJVQllXZ0EvUHpCTlpXUnBZVk5vWVhKbFpGVkpWbTlzZFcxbFUyeHAKWkdWeVFt
RmphMmR5YjNWdVpFVnNaVzFsYm5SQVFGRkJSVUJZV2dBL1B6Qk5aV1JwWVZOb1lYSmxaRlZKVm05
c2RXMWxVMnhwWkdWeQpWR2gxYldKRmJHVnRaVzUwUUVCUlFVVkFXRm9BUHo4d1RXVmthV0ZWU1VW
c1pXMWxiblJBUUZGQlJVQllXZ0EvUHpCTlpXUnBZVlZKClZHbHRaV3hwYm1WVGJHbGtaWEpBUUZG
QlJVQllXZ0EvUHpCWFMwTkJRMFpEYjI1MFpYaDBRRUJSUVVWQVdGb0FQejh4VFdWa2FXRkQKYjI1
MGNtOXNjMEJBVlVGRlFGaGFBRDgvTVUxbFpHbGhUR1ZuWVdONVEyOXVkSEp2YkhOQVFGVkJSVUJZ
V2dBL1B6Rk5aV1JwWVV4bApaMkZqZVZWSlNXMWhaMlZGYkdWdFpXNTBRRUJWUVVWQVdGb0FQejh4
VFdWa2FXRk1aV2RoWTNsVlNWUnBiV1ZzYVc1bFUyeHBaR1Z5ClFFQlZRVVZBV0ZvQVB6OHhUV1Zr
YVdGVGFHRnlaV1JWU1VKaFkydG5jbTkxYm1SRmJHVnRaVzUwUUVCVlFVVkFXRm9BUHo4eFRXVmsK
YVdGVGFHRnlaV1JWU1VORFNXMWhaMlZGYkdWdFpXNTBRRUJWUVVWQVdGb0FQejh4VFdWa2FXRlRh
R0Z5WldSVlNVTnZiblJ5YjJ4egpRRUJWUVVWQVdGb0FQejh4VFdWa2FXRlRhR0Z5WldSVlNVbHRZ
V2RsUld4bGJXVnVkRUJBVlVGRlFGaGFBRDgvTVUxbFpHbGhVMmhoCmNtVmtWVWxVYVcxbGJHbHVa
Vk5zYVdSbGNrQkFWVUZGUUZoYUFEOC9NVTFsWkdsaFUyaGhjbVZrVlVsVWFXMWxiR2x1WlZOc2FX
UmwKY2xSb2RXMWlSV3hsYldWdWRFQkFWVUZGUUZoYUFEOC9NVTFsWkdsaFUyaGhjbVZrVlVsV2Iy
eDFiV1ZUYkdsa1pYSkFRRlZCUlVCWQpXZ0EvUHpGTlpXUnBZVk5vWVhKbFpGVkpWbTlzZFcxbFUy
eHBaR1Z5UW1GamEyZHliM1Z1WkVWc1pXMWxiblJBUUZWQlJVQllXZ0EvClB6Rk5aV1JwWVZOb1lY
SmxaRlZKVm05c2RXMWxVMnhwWkdWeVZHaDFiV0pGYkdWdFpXNTBRRUJWUVVWQVdGb0FQejh4VFdW
a2FXRlYKU1VWc1pXMWxiblJBUUZWQlJVQllXZ0EvUHpGTlpXUnBZVlZKVkdsdFpXeHBibVZUYkds
a1pYSkFRRlZCUlVCWVdnQS9QekZYUzBOQgpRMFpEYjI1MFpYaDBRRUJSUVVWQVdGb0FQejlmTjAx
bFpHbGhRMjl1ZEhKdmJITkFRRFpDUUFBL1AxODNUV1ZrYVdGTVpXZGhZM2xECmIyNTBjbTlzYzBC
QU5rSkFBRDgvWHpkTlpXUnBZVXhsWjJGamVWVkpTVzFoWjJWRmJHVnRaVzUwUUVBMlFrQUFQejlm
TjAxbFpHbGgKVEdWbllXTjVWVWxVYVcxbGJHbHVaVk5zYVdSbGNrQkFOa0pBQUQ4L1h6ZE5aV1Jw
WVZOb1lYSmxaRlZKUW1GamEyZHliM1Z1WkVWcwpaVzFsYm5SQVFEWkNRQUEvUDE4M1RXVmthV0ZU
YUdGeVpXUlZTVU5EU1cxaFoyVkZiR1Z0Wlc1MFFFQTJRa0FBUHo5Zk4wMWxaR2xoClUyaGhjbVZr
VlVsRGIyNTBjbTlzYzBCQU5rSkFBRDgvWHpkTlpXUnBZVk5vWVhKbFpGVkpTVzFoWjJWRmJHVnRa
VzUwUUVBMlFrQUEKUHo5Zk4wMWxaR2xoVTJoaGNtVmtWVWxVYVcxbGJHbHVaVk5zYVdSbGNrQkFO
a0pBQUQ4L1h6ZE5aV1JwWVZOb1lYSmxaRlZKVkdsdApaV3hwYm1WVGJHbGtaWEpVYUhWdFlrVnNa
VzFsYm5SQVFEWkNRQUEvUDE4M1RXVmthV0ZUYUdGeVpXUlZTVlp2YkhWdFpWTnNhV1JsCmNrQkFO
a0pBQUQ4L1h6ZE5aV1JwWVZOb1lYSmxaRlZKVm05c2RXMWxVMnhwWkdWeVFtRmphMmR5YjNWdVpF
VnNaVzFsYm5SQVFEWkMKUUFBL1AxODNUV1ZrYVdGVGFHRnlaV1JWU1ZadmJIVnRaVk5zYVdSbGNs
Um9kVzFpUld4bGJXVnVkRUJBTmtKQUFEOC9YemROWldScApZVlZKUld4bGJXVnVkRUJBTmtKQUFE
OC9YemROWldScFlWVkpWR2x0Wld4cGJtVlRiR2xrWlhKQVFEWkNRQUEvUDE5RFFGOHdRa1ZBClJF
Tk1TMHRKVUVkQVVISnZlSGsvT1VGMWRHaHZjbWw2WVhScGIyNC9KRUZCUUFBL1AxOURRRjh3UWto
QVFrNUpRazlNU2taQVgydEQKUmxkcGJtUnZkM05UVTB4UVpXVnlRMlZ5ZEQ4a1FVRkFBRDgvWDBO
QVh6QkNTVUJKUTFCSFJVRkRUa0JmYTBOR1YybHVaRzkzYzFOVApURXh2WTJGc1EyVnlkRDhrUVVG
QUFEOC9YME5BWHpCQ1RFQkhVRXhMUkZCS1FrQmZhME5HVjJsdVpHOTNjMU5UVEVOb1lXbHVRMjl1
CmRHVjRkRDhrUVVGQUFEOC9YME5BWHpCRFJrQkhSMFZIUkVOR1VFQmZhME5HVlZKTVEyOXVibVZq
ZEdsdmJsQnliM0JsY25SNVUyaHYKZFd4a1UwQUFQejlmUTBCZk1FTkdRRkJDVUVkUVJGQkdRRjly
UTBaVGRISmxZVzFRY205d1pYSjBlVmRwYm1SdmQzTlRVMHhEWlhKMApRQUEvUDE5RFFGOHdRMGRB
U1VkTVFVdEpRVUJmUTBaT1pYUjNiM0pyU0ZSVVVFTnZibTVsWTNScGIyNURZV05vWlZObGRFQUFQ
ejlmClEwQmZNRU5IUUZCS1JVaENTbEJPUUY5RFJrNWxkSGR2Y210SVZGUlFRMjl1Ym1WamRHbHZi
a05oWTJobFIyVjBRQUEvUDE5RFFGOHgKUWsxQVQwSkhUMDFDVGt0QVB5UkJRVU0vSkVGQlJqOGtR
VUZPUHlSQlFXVS9KRUZCZEQ4a1FVRjNQeVJCUVc4L0pFRkJjajhrUVVGcgpQeVJCUVQ4MFB5UkJR
V1EvSkVGQmJEOGtRVUZzUHlSQlFUOGtRVUZBQUQ4L1gwZE5aV1JwWVVOdmJuUnliMnh6UUVCVlFV
VlFRVmhKClFGb0FQejlmUjAxbFpHbGhUR1ZuWVdONVEyOXVkSEp2YkhOQVFGVkJSVkJCV0VsQVdn
QS9QMTlIVFdWa2FXRk1aV2RoWTNsVlNVbHQKWVdkbFJXeGxiV1Z1ZEVCQVZVRkZVRUZZU1VCYUFE
OC9YMGROWldScFlVeGxaMkZqZVZWSlZHbHRaV3hwYm1WVGJHbGtaWEpBUUZWQgpSVkJCV0VsQVdn
QS9QMTlIVFdWa2FXRlRhR0Z5WldSVlNVSmhZMnRuY205MWJtUkZiR1Z0Wlc1MFFFQlZRVVZRUVZo
SlFGb0FQejlmClIwMWxaR2xoVTJoaGNtVmtWVWxEUTBsdFlXZGxSV3hsYldWdWRFQkFWVUZGVUVG
WVNVQmFBRDgvWDBkTlpXUnBZVk5vWVhKbFpGVkoKUTI5dWRISnZiSE5BUUZWQlJWQkJXRWxBV2dB
L1AxOUhUV1ZrYVdGVGFHRnlaV1JWU1VsdFlXZGxSV3hsYldWdWRFQkFWVUZGVUVGWQpTVUJhQUQ4
L1gwZE5aV1JwWVZOb1lYSmxaRlZKVkdsdFpXeHBibVZUYkdsa1pYSkFRRlZCUlZCQldFbEFXZ0Ev
UDE5SFRXVmthV0ZUCmFHRnlaV1JWU1ZScGJXVnNhVzVsVTJ4cFpHVnlWR2gxYldKRmJHVnRaVzUw
UUVCVlFVVlFRVmhKUUZvQVB6OWZSMDFsWkdsaFUyaGgKY21Wa1ZVbFdiMngxYldWVGJHbGtaWEpB
UUZWQlJWQkJXRWxBV2dBL1AxOUhUV1ZrYVdGVGFHRnlaV1JWU1ZadmJIVnRaVk5zYVdSbApja0po
WTJ0bmNtOTFibVJGYkdWdFpXNTBRRUJWUVVWUVFWaEpRRm9BUHo5ZlIwMWxaR2xoVTJoaGNtVmtW
VWxXYjJ4MWJXVlRiR2xrClpYSlVhSFZ0WWtWc1pXMWxiblJBUUZWQlJWQkJXRWxBV2dBL1AxOUhU
V1ZrYVdGVlNVVnNaVzFsYm5SQVFGVkJSVkJCV0VsQVdnQS8KUDE5SFRXVmthV0ZWU1ZScGJXVnNh
VzVsVTJ4cFpHVnlRRUJWUVVWUVFWaEpRRm9BUHo5ZlIxZExRMEZEUmtOdmJuUmxlSFJBUUZGQgpS
VkJCV0VsQVdnQS9ZbUZqYTJkeWIzVnVaRkpoWkdsMWMwQk5aV1JwWVZOb1lYSmxaRlZKVm05c2RX
MWxVMnhwWkdWeVFtRmphMmR5CmIzVnVaRVZzWlcxbGJuUkFRREJKUWdBL1ltRmphMmR5YjNWdVpG
TjBjbTlyWlZSb2FXTnJibVZ6YzBCTlpXUnBZVk5vWVhKbFpGVkoKVm05c2RXMWxVMnhwWkdWeVFt
RmphMmR5YjNWdVpFVnNaVzFsYm5SQVFEQkpRZ0EvWTI5dWMzUnlZV2x1UVhOd1pXTjBVbUYwYVc5
QQpUV1ZrYVdGVGFHRnlaV1JWU1VORFNXMWhaMlZGYkdWdFpXNTBRRUJWUWtWZlRsaGFBRDlqYjI1
emRISmhhVzVCYzNCbFkzUlNZWFJwCmIwQk5aV1JwWVZOb1lYSmxaRlZKU1cxaFoyVkZiR1Z0Wlc1
MFFFQlZRa1ZmVGxoYUFEOWpiMjUwY205c1JtOXlVR0Z5ZEVCTlpXUnAKWVV4bFoyRmplVU52Ym5S
eWIyeHpRRUJWUWtWUVFWWk5aV1JwWVZWSlJXeGxiV1Z1ZEVCQVNFQmFBRDlqYjI1MGNtOXNSbTl5
VUdGeQpkRUJOWldScFlWTm9ZWEpsWkZWSlEyOXVkSEp2YkhOQVFGVkNSVkJCVmsxbFpHbGhWVWxG
YkdWdFpXNTBRRUJJUUZvQVAyTnlaV0YwClpVSmhZMnRuY205MWJtUkpiV0ZuWlVCTlpXUnBZVk5v
WVhKbFpGVkpRME5KYldGblpVVnNaVzFsYm5SQVFGVkJSVkJDV0ZCQlZVTkgKUTI5dWRHVjRkRUJB
VlVOSFVtVmpkRUJBUUZvQVAyTnlaV0YwWlVKaFkydG5jbTkxYm1SSmJXRm5aVUJOWldScFlWTm9Z
WEpsWkZWSgpTVzFoWjJWRmJHVnRaVzUwUUVCVlFVVlFRbGhRUVZWRFIwTnZiblJsZUhSQVFGVkRS
MUpsWTNSQVFFQmFBRDlrY21GM1FtRmphMmR5CmIzVnVaRUJOWldScFlWTm9ZWEpsWkZWSlNXMWha
MlZGYkdWdFpXNTBRRUJWUWtWWVVFRlZRMGREYjI1MFpYaDBRRUJWUTBkU1pXTjAKUUVCQVdnQS9a
SEpoZDFCaGNuUkFUV1ZrYVdGRGIyNTBjbTlzYzBCQVZVRkZXRWhRUVZWRFIwTnZiblJsZUhSQVFG
VkRSMUpsWTNSQQpRRWxBV2dBL1pISmhkMVJwYldWc2FXNWxVMnhwWkdWeVZISmhZMnRBVFdWa2FX
RkRiMjUwY205c2MwQkFWVUZGV0ZCQlZVTkhRMjl1CmRHVjRkRUJBVlVOSFVtVmpkRUJBVGs1SlFG
b0FQMlIxY21GMGFXOXVRRTFsWkdsaFZVbFVhVzFsYkdsdVpWTnNhV1JsY2tCQVVVSkYKVGxoYUFE
OW1ZV0p6UUVCWlFVMU5RRm9BUDJacGJHeE5iMlJsUUUxbFpHbGhVMmhoY21Wa1ZVbEpiV0ZuWlVW
c1pXMWxiblJBUUZGQwpSVDlCVnpSTlpXUnBZVlZKU1cxaFoyVkdhV3hzVFc5a1pVQXhRRmhhQUQ5
bWNtRmpkR2x2Ymt4dllXUmxaRUJOWldScFlWVkpWR2x0ClpXeHBibVZUYkdsa1pYSkFRRkZDUlU1
WVdnQS9aMnh2ZDBOdmJHOXlRRTFsWkdsaFUyaGhjbVZrVlVsSmJXRm5aVVZzWlcxbGJuUkEKUUVs
QlJWQkJWVU5IUTI5c2IzSkFRRmhhQUQ5b1pXbG5hSFJBVFdWa2FXRlRhR0Z5WldSVlNWUnBiV1Zz
YVc1bFUyeHBaR1Z5UUVCVApRVTFZV2dBL2FHbG5hR3hwWjJoMFZXNXNiMkZrWldSU1lXNW5aVUJO
WldScFlWTm9ZWEpsWkZWSlZHbHRaV3hwYm1WVGJHbGtaWEpBClFFRkNSVmhRUVZWRFIwTnZiblJs
ZUhSQVFGVkRSMUpsWTNSQVFFQmFBRDlvYVhSVVpYTjBRRTFsWkdsaFUyaGhjbVZrVlVsVWFXMWwK
YkdsdVpWTnNhV1JsY2xSb2RXMWlSV3hsYldWdWRFQkFWVUpGWDA1VlEwZFNaV04wUUVCVlEwZFFi
Mmx1ZEVCQVFGb0FQMmhwZEZSbApjM1JBVFdWa2FXRlRhR0Z5WldSVlNWWnZiSFZ0WlZOc2FXUmxj
a0poWTJ0bmNtOTFibVJGYkdWdFpXNTBRRUJWUWtWZlRsVkRSMUpsClkzUkFRRlZEUjFCdmFXNTBR
RUJBV2dBL2FHbDBWR1Z6ZEVCTlpXUnBZVk5vWVhKbFpGVkpWbTlzZFcxbFUyeHBaR1Z5VkdoMWJX
SkYKYkdWdFpXNTBRRUJWUWtWZlRsVkRSMUpsWTNSQVFGVkRSMUJ2YVc1MFFFQkFXZ0EvYUdsMFZH
VnpkRUJOWldScFlWVkpSV3hsYldWdQpkRUJBVlVKRlgwNVZRMGRTWldOMFFFQlZRMGRRYjJsdWRF
QkFRRm9BUDJocGRGUmxjM1JRWVhKMFFFMWxaR2xoUTI5dWRISnZiSE5BClFGVkNSVjlPU0ZWRFIx
SmxZM1JBUUZWRFIxQnZhVzUwUUVCQVdnQS9hVzFoWjJWQVRXVmthV0ZNWldkaFkzbFZTVWx0WVdk
bFJXeGwKYldWdWRFQkFRVUpGVUVGVlEwZEpiV0ZuWlVCQVdGb0FQMmx0WVdkbFFFMWxaR2xoVTJo
aGNtVmtWVWxKYldGblpVVnNaVzFsYm5SQQpRRWxDUlZCQ1dGaGFBRDlwYzBWdVlXSnNaV1JBVFdW
a2FXRlZTVVZzWlcxbGJuUkFRRkZDUlY5T1dGb0FQMmx6Um05amRYTmxaRUJOClpXUnBZVlZKUld4
bGJXVnVkRUJBVVVKRlgwNVlXZ0EvYVhOUWNtVnpjMlZrUUUxbFpHbGhWVWxGYkdWdFpXNTBRRUJS
UWtWZlRsaGEKQUQ5dVlYUjFjbUZzVTJsNlpVQk5aV1JwWVVOdmJuUnliMnh6UUVCVlFrVS9RVlZE
UjFOcGVtVkFRRWhBV2dBL2JtRjBkWEpoYkZOcAplbVZBVFdWa2FXRk1aV2RoWTNsVlNVbHRZV2Rs
Uld4bGJXVnVkRUJBVlVKRlAwRlZRMGRUYVhwbFFFQllXZ0EvYm1GMGRYSmhiRk5wCmVtVkFUV1Zr
YVdGVGFHRnlaV1JWU1VsdFlXZGxSV3hsYldWdWRFQkFWVUpGUDBGVlEwZFRhWHBsUUVCWVdnQS9i
bUYwZFhKaGJGTnAKZW1WQVRXVmthV0ZUYUdGeVpXUlZTVlJwYldWc2FXNWxVMnhwWkdWeVZHaDFi
V0pGYkdWdFpXNTBRRUJWUWtVL1FWVkRSMU5wZW1WQQpRRmhhQUQ5dVlYUjFjbUZzVTJsNlpVQk5a
V1JwWVZOb1lYSmxaRlZKVm05c2RXMWxVMnhwWkdWeVZHaDFiV0pGYkdWdFpXNTBRRUJWClFrVS9R
VlZEUjFOcGVtVkFRRmhhQUQ5dVlYUjFjbUZzVTJsNlpVQk5aV1JwWVZWSlJXeGxiV1Z1ZEVCQVZV
SkZQMEZWUTBkVGFYcGwKUUVCWVdnQS9iMlptYzJWMFFFMWxaR2xoVTJoaGNtVmtWVWxVYVcxbGJH
bHVaVk5zYVdSbGNrQkFVMEZOV0ZvQVAzQmhhVzUwUUUxbApaR2xoVEdWbllXTjVWVWxKYldGblpV
VnNaVzFsYm5SQVFGVkJSVmhRUVZWRFIwTnZiblJsZUhSQVFGVkRSMUpsWTNSQVFFQmFBRDl3CllX
bHVkRUJOWldScFlVeGxaMkZqZVZWSlZHbHRaV3hwYm1WVGJHbGtaWEpBUUZWQlJWaFFRVlZEUjBO
dmJuUmxlSFJBUUZWRFIxSmwKWTNSQVFFQmFBRDl3WVdsdWRFQk5aV1JwWVZOb1lYSmxaRlZKUW1G
amEyZHliM1Z1WkVWc1pXMWxiblJBUUZWQlJWaFFRVlZEUjBOdgpiblJsZUhSQVFGVkRSMUpsWTNS
QVFFQmFBRDl3WVdsdWRFQk5aV1JwWVZOb1lYSmxaRlZKU1cxaFoyVkZiR1Z0Wlc1MFFFQlZRVVZZ
ClVFRlZRMGREYjI1MFpYaDBRRUJWUTBkU1pXTjBRRUJBV2dBL2NHRnBiblJBVFdWa2FXRlRhR0Z5
WldSVlNWUnBiV1ZzYVc1bFUyeHAKWkdWeVFFQlZRVVZZVUVGVlEwZERiMjUwWlhoMFFFQlZRMGRT
WldOMFFFQkFXZ0EvY0dGcGJuUkFUV1ZrYVdGVGFHRnlaV1JWU1ZScApiV1ZzYVc1bFUyeHBaR1Z5
VkdoMWJXSkZiR1Z0Wlc1MFFFQlZRVVZZVUVGVlEwZERiMjUwWlhoMFFFQlZRMGRTWldOMFFFQkFX
Z0EvCmNHRnBiblJBVFdWa2FXRlRhR0Z5WldSVlNWWnZiSFZ0WlZOc2FXUmxja0JBVlVGRldGQkJW
VU5IUTI5dWRHVjRkRUJBVlVOSFVtVmoKZEVCQVFGb0FQM0JoYVc1MFFFMWxaR2xoVTJoaGNtVmtW
VWxXYjJ4MWJXVlRiR2xrWlhKQ1lXTnJaM0p2ZFc1a1JXeGxiV1Z1ZEVCQQpWVUZGV0ZCQlZVTkhR
Mjl1ZEdWNGRFQkFWVU5IVW1WamRFQkFRRm9BUDNCaGFXNTBRRTFsWkdsaFUyaGhjbVZrVlVsV2Iy
eDFiV1ZUCmJHbGtaWEpVYUhWdFlrVnNaVzFsYm5SQVFGVkJSVmhRUVZWRFIwTnZiblJsZUhSQVFG
VkRSMUpsWTNSQVFFQmFBRDl3WVhKMFNVUkEKVFdWa2FXRlZTVVZzWlcxbGJuUkFRRkZDUlVoWVdn
QS9jbUZrYVhWelFFMWxaR2xoVTJoaGNtVmtWVWxVYVcxbGJHbHVaVk5zYVdSbApjbFJvZFcxaVJX
eGxiV1Z1ZEVCQVUwRk5XRm9BUDNKaFpHbDFjMEJOWldScFlWTm9ZWEpsWkZWSlZtOXNkVzFsVTJ4
cFpHVnlRRUJUClFVMVlXZ0EvY21Ga2FYVnpRRTFsWkdsaFUyaGhjbVZrVlVsV2IyeDFiV1ZUYkds
a1pYSkNZV05yWjNKdmRXNWtSV3hsYldWdWRFQkEKVTBGTldGb0FQM0poWkdsMWMwQk5aV1JwWVZO
b1lYSmxaRlZKVm05c2RXMWxVMnhwWkdWeVZHaDFiV0pGYkdWdFpXNTBRRUJUUVUxWQpXZ0EvY21W
emRHOXlaVU52Ym5SbGVIUkJablJsY2xCaGFXNTBhVzVuUUUxbFpHbGhUR1ZuWVdONVZVbEpiV0Zu
WlVWc1pXMWxiblJBClFFVkNSVmhRUVZWRFIwTnZiblJsZUhSQVFFQmFBRDl5WlhOMGIzSmxRMjl1
ZEdWNGRFRm1kR1Z5VUdGcGJuUnBibWRBVFdWa2FXRk0KWldkaFkzbFZTVlJwYldWc2FXNWxVMnhw
WkdWeVFFQkZRa1ZZVUVGVlEwZERiMjUwWlhoMFFFQkFXZ0EvY21WemRHOXlaVU52Ym5SbAplSFJC
Wm5SbGNsQmhhVzUwYVc1blFFMWxaR2xoVlVsRmJHVnRaVzUwUUVCTlFrVllVRUZWUTBkRGIyNTBa
WGgwUUVCQVdnQS9jMlYwClJIVnlZWFJwYjI1QVRXVmthV0ZWU1ZScGJXVnNhVzVsVTJ4cFpHVnlR
RUJSUVVWWVRrQmFBRDl6WlhSUVlYSjBTVVJBVFdWa2FXRlYKU1VWc1pXMWxiblJBUUZGQlJWaElR
Rm9BUDNObGRGTjBZWFJsUUUxbFpHbGhWVWxGYkdWdFpXNTBRRUJSUVVWWVZ6UlhTMDFsWkdsaApR
Mjl1ZEhKdmJHeGxjbFJvWlcxbFUzUmhkR1ZBUUVCYUFEOXpaWFJVYVcxbFRHOWhaR1ZrUUUxbFpH
bGhWVWxVYVcxbGJHbHVaVk5zCmFXUmxja0JBVVVGRldFNUFXZ0EvYzJWMFZYQkRiMjUwWlhoMFJt
OXlVR0ZwYm5ScGJtZEFUV1ZrYVdGTVpXZGhZM2xWU1VsdFlXZGwKUld4bGJXVnVkRUJBUlVKRldG
QkJWVU5IUTI5dWRHVjRkRUJBVlVOSFVtVmpkRUJBUUZvQVAzTmxkRlZ3UTI5dWRHVjRkRVp2Y2xC
aAphVzUwYVc1blFFMWxaR2xoVEdWbllXTjVWVWxVYVcxbGJHbHVaVk5zYVdSbGNrQkFSVUpGV0ZC
QlZVTkhRMjl1ZEdWNGRFQkFWVU5IClVtVmpkRUJBUUZvQVAzTmxkRlZ3UTI5dWRHVjRkRVp2Y2xC
aGFXNTBhVzVuUUUxbFpHbGhWVWxGYkdWdFpXNTBRRUJOUWtWWVVFRlYKUTBkRGIyNTBaWGgwUUVC
VlEwZFNaV04wUUVCQVdnQS9jMnhwWkdWeVFFMWxaR2xoVEdWbllXTjVRMjl1ZEhKdmJITkFRRlZD
UlZCQgpWazFsWkdsaFZVbFVhVzFsYkdsdVpWTnNhV1JsY2tCQVdGb0FQM05zYVdSbGNrQk5aV1Jw
WVZOb1lYSmxaRlZKUTI5dWRISnZiSE5BClFGVkNSVkJCVmsxbFpHbGhWVWxVYVcxbGJHbHVaVk5z
YVdSbGNrQkFXRm9BUDNOMGNtOXJaVlJvYVdOcmJtVnpjMEJOWldScFlWTm8KWVhKbFpGVkpWbTlz
ZFcxbFUyeHBaR1Z5UW1GamEyZHliM1Z1WkVWc1pXMWxiblJBUUZOQlRWaGFBRDkwYUhWdFlsSmha
R2wxYzBCTgpaV1JwWVZOb1lYSmxaRlZKVkdsdFpXeHBibVZUYkdsa1pYSlVhSFZ0WWtWc1pXMWxi
blJBUURCSlFnQS9kR2gxYldKU1lXUnBkWE5BClRXVmthV0ZUYUdGeVpXUlZTVlp2YkhWdFpWTnNh
V1JsY2xSb2RXMWlSV3hsYldWdWRFQkFNRWxDQUQ5MGFXMWxURzloWkdWa1FFMWwKWkdsaFZVbFVh
VzFsYkdsdVpWTnNhV1JsY2tCQVVVSkZUbGhhQUQ5MGFXMWxiR2x1WlZKbFkzUkdiM0pDYjNWdVpI
TkFUV1ZrYVdGVAphR0Z5WldSVlNWUnBiV1ZzYVc1bFUyeHBaR1Z5UUVCQlFrVS9RVlZEUjFKbFkz
UkFRRlV5UUVCYUFEOTBjbUZqYTBobGFXZG9kRUJOClpXUnBZVk5vWVhKbFpGVkpWR2x0Wld4cGJt
VlRiR2xrWlhKQVFEQkpRZ0EvZEhKaFkydFBabVp6WlhSQVRXVmthV0ZUYUdGeVpXUlYKU1ZScGJX
VnNhVzVsVTJ4cFpHVnlRRUF3U1VJQVAzUnlZV05yVW1Ga2FYVnpRRTFsWkdsaFUyaGhjbVZrVlVs
V2IyeDFiV1ZUYkdsawpaWEpBUURCSlFnQS9kMnREUVVOR1EyOXVkR1Y0ZEVGa1pGVndaR0YwWlZK
bFkzUkFRRmxCV0ZCQlZWZExRMEZEUmtOdmJuUmxlSFJBClFFRkNWVU5IVW1WamRFQkFRRm9BUDNk
clEwRkRSa052Ym5SbGVIUkNaV2RwYmxWd1pHRjBaVUJBV1VGZlRsQkJWVmRMUTBGRFJrTnYKYm5S
bGVIUkFRRkJCV0VsT1FVSlZRMGRTWldOMFFFQlJRbFV5UUVsQVdnQS9kMnREUVVOR1EyOXVkR1Y0
ZEVOdmNIbFZjR1JoZEdWUwpaV04wUlc1MWJXVnlZWFJ2Y2tCQVdVRlFRVlZYUzBOQlEwWlZjR1Jo
ZEdWU1pXTjBSVzUxYldWeVlYUnZja0JBVUVGVlYwdERRVU5HClEyOXVkR1Y0ZEVCQVFGb0FQM2Ry
UTBGRFJrTnZiblJsZUhSRGNtVmhkR1ZBUUZsQlVFRlZWMHREUVVOR1EyOXVkR1Y0ZEVCQVdGb0EK
UDNkclEwRkRSa052Ym5SbGVIUkVaWE4wY205NVFFQlpRVmhRUVZWWFMwTkJRMFpEYjI1MFpYaDBR
RUJBV2dBL2QydERRVU5HUTI5dQpkR1Y0ZEVacGJtbHphRlZ3WkdGMFpVQkFXVUZZVUVGVlYwdERR
VU5HUTI5dWRHVjRkRUJBUUZvQVAzZHJRMEZEUmtOdmJuUmxlSFJHCmJIVnphRUJBV1VGWVVFRlZW
MHREUVVOR1EyOXVkR1Y0ZEVCQVFGb0FQM2RyUTBGRFJrTnZiblJsZUhSSFpYUk1ZWE4wUTI5dGJX
bDAKVkdsdFpVQkFXVUZPVUVGVlYwdERRVU5HUTI5dWRHVjRkRUJBUUZvQVAzZHJRMEZEUmtOdmJu
UmxlSFJKYm1sMGFXRnNhWHBsUkRORQpSR1YyYVdObFFFQlpRVmhRUVZWWFMwTkJRMFpEYjI1MFpY
aDBRRUJRUVZWSlJHbHlaV04wTTBSRVpYWnBZMlU1UUVCQVdnQS9kMnREClFVTkdRMjl1ZEdWNGRG
SmxiR1ZoYzJWRU0wUlNaWE52ZFhKalpYTkFRRmxCV0ZCQlZWZExRMEZEUmtOdmJuUmxlSFJBUUVC
YUFEOTMKYTBOQlEwWkRiMjUwWlhoMFVtVnVaR1Z5VlhCa1lYUmxRRUJaUVZoUVFWVlhTME5CUTBa
RGIyNTBaWGgwUUVCQVdnQS9kMnREUVVORwpRMjl1ZEdWNGRGTmxkRXhoZVdWeVFFQlpRVmhRUVZW
WFMwTkJRMFpEYjI1MFpYaDBRRUJRUVZWZlEwRkRSa3hoZVdWeVFFQkFXZ0EvCmQydERRVU5HVlhC
a1lYUmxVbVZqZEVWdWRXMWxjbUYwYjNKT1pYaDBVbVZqZEVCQVdVRlFRbFZEUjFKbFkzUkFRRkJC
VlZkTFEwRkQKUmxWd1pHRjBaVkpsWTNSRmJuVnRaWEpoZEc5eVFFQkFXZ0EvZDJ0RFFVTkdWWEJr
WVhSbFVtVmpkRVZ1ZFcxbGNtRjBiM0pTWld4bApZWE5sUUVCWlFWaFFRVlZYUzBOQlEwWlZjR1Jo
ZEdWU1pXTjBSVzUxYldWeVlYUnZja0JBUUZvQVAzZHJRMEZKYldGblpWRjFaWFZsClEyOXNiR1Zq
ZEVCQVdVRkpVRUZWWDBOQlNXMWhaMlZSZFdWMVpVQkFRRm9BUDNkclEwRkpiV0ZuWlZGMVpYVmxR
M0psWVhSbFFFQloKUVZCQlZWOURRVWx0WVdkbFVYVmxkV1ZBUUVsSlNVQmFBRDkzYTBOQlNXMWha
MlZSZFdWMVpVZGxkRU5oY0dGamFYUjVRRUJaUVVsUQpRVlZmUTBGSmJXRm5aVkYxWlhWbFFFQkFX
Z0EvZDJ0RFFVbHRZV2RsVVhWbGRXVkhaWFJHYkdGbmMwQkFXVUZKVUVGVlgwTkJTVzFoCloyVlJk
V1YxWlVCQVFGb0FQM2RyUTBGSmJXRm5aVkYxWlhWbFIyVjBWSGx3WlVsRVFFQlpRVXRZV2dBL2Qy
dERRVWx0WVdkbFVYVmwKZFdWSmJuTmxjblJKYldGblpVQkFXVUZmVGxCQlZWOURRVWx0WVdkbFVY
VmxkV1ZBUUU1SlgwdEpVRFpCV0VreFVFRllRRm95UUZvQQpQM2RyUTBGSmJXRm5aVkYxWlhWbFNX
NTJZV3hwWkdGMFpVQkFXVUZZVUVGVlgwTkJTVzFoWjJWUmRXVjFaVUJBUUZvQVAzZHJRMEZKCmJX
Rm5aVkYxWlhWbFVtVm5hWE4wWlhKUWFYaGxiRUoxWm1abGNrQkFXVUZmUzFCQlZWOURRVWx0WVdk
bFVYVmxkV1ZBUUZCQldFbEoKU1VsSlVFSlZYMTlEUmtScFkzUnBiMjVoY25sQVFFbEFXZ0EvZDJ0
RFFVbHRZV2RsVVhWbGRXVlRaWFJHYkdGbmMwQkFXVUZZVUVGVgpYME5CU1cxaFoyVlJkV1YxWlVC
QVNVbEFXZ0EvZDJ0RFJrNWxkSGR2Y210RmNuSnZja2RsZEV4dlkyRnNhWHBsWkVSbGMyTnlhWEIw
CmFXOXVRRUJaUVZCQ1ZWOWZRMFpUZEhKcGJtZEFRRXBBV2dBL2QydERSbFZTVEZKbGNYVmxjM1JE
YjNCNVNGUlVVRkpsY1hWbGMzUkMKYjJSNVVHRnlkSE5BUUZsQlVFSlZYMTlEUmtGeWNtRjVRRUJR
UWxWZlEwWlZVa3hTWlhGMVpYTjBRRUJBV2dBL2QydERSbFZTVEZKbApjWFZsYzNSVFpYUklWRlJR
VW1WeGRXVnpkRUp2WkhsUVlYSjBjMEJBV1VGWVVFRlZYME5HVlZKTVVtVnhkV1Z6ZEVCQVVFSlZY
MTlEClJrRnljbUY1UUVCQVdnQS9kMnREYjNCNVEwOU9Ua1ZEVkZCeWIzaDVVbVZ6Y0c5dWMyVkFR
RmxCVUVGVlgxOURSa2hVVkZCTlpYTnoKWVdkbFFFQlFRVlZmWDBOR1VtVmhaRk4wY21WaGJVQkFV
RUpWWDE5RFJsVlNURUJBUUZvQVAzZHJRMjl3ZVVOeVpXUmxiblJwWVd4RwpjbTl0UTBaUVpYSnph
WE4wWlc1MFUzUnZjbUZuWlVCQVdVRlFRVlZmUTBaVlVreERjbVZrWlc1MGFXRnNRRUJRUVZWZlEw
WlZVa3hRCmNtOTBaV04wYVc5dVUzQmhZMlZBUUVCYUFEOTNhME52Y0hsR2IzVnVaR0YwYVc5dVEy
RmphR1ZFYVhKbFkzUnZjbmxBUUZsQlVFSlYKWDE5RFJsTjBjbWx1WjBCQVdGb0FQM2RyUTNKbFlY
UmxVSEpwZG1GMFpVaFVWRkJEYjI5cmFXVlRkRzl5WVdkbFFFQlpRVkJCVlU5dwpZWEYxWlVOR1NG
UlVVRU52YjJ0cFpWTjBiM0poWjJWQVFGaGFBRDkzYTBSeVlYZEdiMk4xYzFKcGJtZEFRRmxCV0ZC
QlZVTkhRMjl1CmRHVjRkRUJBVUVGVlEwZERiMnh2Y2tCQVRVQmFBRDkzYTBkbGRFUmxabUYxYkhS
SVZGUlFRMjl2YTJsbFUzUnZjbUZuWlVCQVdVRlEKUVZWUGNHRnhkV1ZEUmtoVVZGQkRiMjlyYVdW
VGRHOXlZV2RsUUVCWVdnQS9kMnRIWlhSR2IyNTBVMjF2YjNSb2FXNW5RMjl1ZEhKaApjM1JBUUZs
QlRWaGFBRDkzYTBkbGRFWnZiblJUYlc5dmRHaHBibWRNWlhabGJFQkFXVUZJV0ZvQVAzZHJSMlYw
UjJ4NWNHaEJaSFpoCmJtTmxjMEJBV1VGWVVFRlZRMGRHYjI1MFFFQkJRbFZEUjBGbVptbHVaVlJ5
WVc1elptOXliVUJBWDA0eVIwRkJWVU5IVTJsNlpVQkEKUUZvQVAzZHJSMlYwUjJ4NWNHaHpRRUJa
UVZoUVFWVkRSMFp2Ym5SQVFGRkNYMWRSUVVkSlFGb0FQM2RyUjJWMFUxTk1RMlZ5ZEdsbQphV05o
ZEdWRGFHRnBia052Ym5SbGVIUkFRRmxCVUVGWVVFSlZYMTlEUmtScFkzUnBiMjVoY25sQVFFQmFB
RDkzYTBkbGRGTlRURU5sCmNuUnBabWxqWVhSbFNXNW1iMEJBV1VGUVFsVmZYME5HUkdsamRHbHZi
bUZ5ZVVCQVVFRlZYME5HVlZKTVVtVnpjRzl1YzJWQVFFQmEKQUQ5M2EwZGxkRk5UVEZCbFpYSkRa
WEowYVdacFkyRjBaVVJoZEdGQVFGbEJVRUZZVUVKVlgxOURSa1JwWTNScGIyNWhjbmxBUUVCYQpB
RDkzYTBkbGRGVnpaWEpVYjBKaGMyVkRWRTFBUUZsQlAwRlZRMGRCWm1acGJtVlVjbUZ1YzJadmNt
MUFRRkJCVlVOSFEyOXVkR1Y0CmRFQkFRRm9BUDNkclNXNXBkR2xoYkdsNlpVMWhlR2x0ZFcxSVZG
UlFRMjl1Ym1WamRHbHZia052ZFc1MFVHVnlTRzl6ZEVCQVdVRkoKU1VCYUFEOTNhMUpsYzNSdmNt
VkdiMjUwVTIxdmIzUm9hVzVuVTNSNWJHVkFRRmxCV0ZCQlZVTkhRMjl1ZEdWNGRFQkFTVUJhQUQ5
MwphMU5sZEVOR1ZWSk1VbVZ4ZFdWemRGTm9iM1ZzWkVOdmJuUmxiblJUYm1sbVprQkFXVUZZVUVG
VlgwTkdWVkpNVW1WeGRXVnpkRUJBClgwNUFXZ0EvZDJ0VFpYUkRSME52Ym5SbGVIUkdiMjUwVW1W
dVpHVnlhVzVuVTNSNWJHVkFRRmxCV0ZCQlZVTkhRMjl1ZEdWNGRFQkEKWDA0eE1VQmFBRDkzYTFO
bGRFTlBUazVGUTFSUWNtOTRlVUYxZEdodmNtbDZZWFJwYjI1R2IzSlRkSEpsWVcxQVFGbEJXRkJC
VlY5ZgpRMFpTWldGa1UzUnlaV0Z0UUVCUVFsVmZYME5HVTNSeWFXNW5RRUJBV2dBL2QydFRaWFJE
VDA1T1JVTlVVSEp2ZUhsR2IzSlRkSEpsCllXMUFRRmxCV0ZCQlZWOWZRMFpTWldGa1UzUnlaV0Z0
UUVCUVFsVmZYME5HVTNSeWFXNW5RRUJRUWxWZlgwTkdUblZ0WW1WeVFFQkEKV2dBL2QydFRaWFJE
YkdsbGJuUkRaWEowYVdacFkyRjBaVWx1VTFOTVVISnZjR1Z5ZEdsbGMwQkFXVUZZVUVGVlgxOURS
a1JwWTNScApiMjVoY25sQVFGQkNWVjlmUTBaRVlYUmhRRUJBV2dBL2QydFRaWFJHYjI1MFUyMXZi
M1JvYVc1blEyOXVkSEpoYzNSQVFGbEJXRTFBCldnQS9kMnRUWlhSR2IyNTBVMjF2YjNSb2FXNW5U
R1YyWld4QVFGbEJXRWhBV2dBL2QydFRaWFJHYjI1MFUyMXZiM1JvYVc1blUzUjUKYkdWQVFGbEJT
VkJCVlVOSFEyOXVkR1Y0ZEVCQVgwNUFXZ0EvZDJ0VFpYUlFZWFIwWlhKdVFtRnpaVU5VVFVCQVdV
RllVRUZWUTBkRApiMjUwWlhoMFFFQlZRMGRCWm1acGJtVlVjbUZ1YzJadmNtMUFRRUJhQUQ5M2Ex
TmxkRkJoZEhSbGNtNVFhR0Z6WlVsdVZYTmxjbE53CllXTmxRRUJaUVZoUVFWVkRSME52Ym5SbGVI
UkFRRlZEUjFCdmFXNTBRRUJBV2dBL2QydFRaWFJWY0VadmJuUkRZV05vWlVCQVdVRlkKU1VCYUFE
OTNhMU41YzNSbGJVWnZiblJUYlc5dmRHaHBibWREYUdGdVoyVmtRRUJaUVZoWVdnQmZWMHRFY21G
M1RXVmthV0ZUYkdsawpaWEpVY21GamF3QmZWMHRFY21GM1RXVmthV0ZWU1ZCaGNuUUFYMWRMU0ds
MFZHVnpkRTFsWkdsaFZVbFFZWEowQUY5WFMwMWxZWE4xCmNtVk5aV1JwWVZWSlVHRnlkQUJmWDNK
bFlXeEFNREF3TURBd01EQUFYMTl5WldGc1FEQXdNREF3TURBd01EQXdNREF3TURBQVgxOXkKWldG
c1FETmtZVE5rTnpCaEFGOWZjbVZoYkVBelpHWXdaakJtTVFCZlgzSmxZV3hBTTJVd1pqVmpNamtB
WDE5eVpXRnNRRE5sTkdOagpZMk5rQUY5ZmNtVmhiRUF6WlRnd01EQXdNQUJmWDNKbFlXeEFNMlZp
TXpNek16TUFYMTl5WldGc1FETm1NREF3TURBd0FGOWZjbVZoCmJFQXpaakpsTVRRM1lnQmZYM0ps
WVd4QU0yWTBNREF3TURBQVgxOXlaV0ZzUURObU5HTmpZMk5rQUY5ZmNtVmhiRUF6WmpVd1pEQmsK
TVFCZlgzSmxZV3hBTTJZMU9HUTRaRGtBWDE5eVpXRnNRRE5tTmpBd01EQXdBRjlmY21WaGJFQXpa
alppT0RVeFpnQmZYM0psWVd4QQpNMlkzTXpNek16TUFYMTl5WldGc1FETm1PREF3TURBd0FGOWZj
bVZoYkVBelptSTVPVGs1T1dFd01EQXdNREF3QUY5ZmNtVmhiRUF6ClptTTVNR1prWWdCZlgzSmxZ
V3hBTTJabE1EQXdNREF3TURBd01EQXdNQUJmWDNKbFlXeEFNMlptTURBd01EQXdNREF3TURBd01B
QmYKWDNKbFlXeEFOREF3TURBd01EQUFYMTl5WldGc1FEUXdNREF3TURBd01EQXdNREF3TURBQVgx
OXlaV0ZzUURRd01Ea3lNV1ppTlRRMApOREprTVRnQVgxOXlaV0ZzUURRd01UQXdNREF3TURBd01E
QXdNREFBWDE5eVpXRnNRRFF3TVRNek16TXpBRjlmY21WaGJFQTBNREl3Ck1EQXdNREF3TURBd01E
QXdBRjlmY21WaGJFQTBNRE13TURBd01EQXdNREF3TURBd0FGOWZjbVZoYkVBME1EUTVNR1prWWdC
ZlgzSmwKWVd4QU5EQTJOamd3TURBd01EQXdNREF3TUFCZlgzSmxZV3hBTkRBMlptVXdNREF3TURB
d01EQXdNQUJmWDNKbFlXeEFOREE0TURBdwpNREFBWDE5eVpXRnNRRFF3T0dZME1EQXdNREF3TURB
d01EQUFYMTl5WldGc1FEUXdPVFpqWW1VMEFGOWZjbVZoYkVBME1HRXdNREF3Ck1BQmZYM0psWVd4
QU5ERXhNREF3TURBQVgxOXlaV0ZzUURReE1qQXdNREF3QUY5ZmNtVmhiRUEwTVRNd01EQXdNQUJm
WDNKbFlXeEEKTkdZNE1EQXdNREFBWDE5eVpXRnNRR0ptT0RBd01EQXdBRjlmY21WaGJFQmlabU01
TUdaa1lnQmZZMlZwYkdZQVgyWmhZbk5tQUY5bQpiRzl2Y21ZQVgzQnZkMllBTHk4Z0lDQWdJQ0Fn
SUNBZ0lDQWdJREV5T1RJd01ETTVOemNnSUNBZ0lDQWdJQ0FnSUNBZ0lEQWdJQ0FnCklDQWdNek13
SUNBZ0lDQWdJR0FLTGk1Y0xpNWNMaTVjTGk1Y0xpNWNMaTVjVjJWaVMybDBRblZwYkdSY2IySnFY
RmRsWWt0cGRGTjUKYzNSbGJVbHVkR1Z5Wm1GalpWeFNaV3hsWVhObFhGZGxZa3RwZEZONWMzUmxi
VWx1ZEdWeVptRmpaUzV2WW1vQUxpNWNMaTVjTGk1YwpMaTVjTGk1Y0xpNWNWMlZpUzJsMFFuVnBi
R1JjYjJKcVhGZGxZa3RwZEZONWMzUmxiVWx1ZEdWeVptRmpaVnhTWld4bFlYTmxYRk5vCllYSmxa
RTFsWkdsaFZVa3ViMkpxQUM0dVhDNHVYQzR1WEM0dVhDNHVYQzR1WEZkbFlrdHBkRUoxYVd4a1hH
OWlhbHhYWldKTGFYUlQKZVhOMFpXMUpiblJsY21aaFkyVmNVbVZzWldGelpWeE5aV1JwWVZWSkxt
OWlhZ0F1TGx3dUxsd3VMbHd1TGx3dUxsd3VMbHhYWldKTAphWFJDZFdsc1pGeHZZbXBjVjJWaVMy
bDBVM2x6ZEdWdFNXNTBaWEptWVdObFhGSmxiR1ZoYzJWY1RHVm5ZV041VFdWa2FXRlZTUzV2Cllt
b0FMekFnSUNBZ0lDQWdJQ0FnSUNBZ0lERXlPVEl3TURNNU56Y2dJQ0FnSUNBZ0lDQWdJQ0FnSURF
d01EWTJOaUFnTVRBek5qQTIKSUNBZ0lHQUtUQUd2QUlscUFrMVhTd0VBUGdJQUFBQUFBQUF1WkhK
bFkzUjJaUUFBQUFBQUFBQUE4UUFBQUd3YkFBQUFBQUFBQUFBQQpBQUFBQUFBQUNoQUFMbVJsWW5W
bkpGTUFBQUFBQUFBQUFBQ1lBQUJkSEFBQVhiUUFBQUFBQUFBMEFBQUFRQUFRUWk1eVpHRjBZUUFB
CkFBQUFBQUFBQUFBRUFBQUFaYllBQUFBQUFBQUFBQUFBQUFBQUFFQUFNRUF1WkdGMFlRQUFBQUFB
QUFBQUFBQUFEQUFBQUdtMkFBQUEKQUFBQUFBQUFBQUFBQUFCQUFEREFMblJsZUhRQUFBQUFBQUFB
QUFBQUFBOEFBQUIxdGdBQUFBQUFBQUFBQUFBQUFBQUFJQkJRWUM1awpaV0oxWnlSVEFBQUFBQUFB
QUFEQUFBQUFoTFlBQUVTM0FBQUFBQUFBQlFBQUFFQVFFRUl1ZEdWNGRBQUFBQUFBQUFBQUFBQUFI
QUFBCkFIYTNBQUNTdHdBQUFBQUFBQUVBQUFBZ0VGQmdMbVJsWW5WbkpGTUFBQUFBQUFBQUFOQUFB
QUNjdHdBQWJMZ0FBQUFBQUFBSEFBQUEKUUJBUVFpNTBaWGgwQUFBQUFBQUFBQUFBQUFBV0FBQUFz
cmdBQU1pNEFBQUFBQUFBQVFBQUFDQVFVR0F1WkdWaWRXY2tVd0FBQUFBQQpBQUFBekFBQUFOSzRB
QUNldVFBQUFBQUFBQVVBQUFCQUVCQkNMblJsZUhRQUFBQUFBQUFBQUFBQUFBOEFBQURRdVFBQUFB
QUFBQUFBCkFBQUFBQUFBSUJCUVlDNWtaV0oxWnlSVEFBQUFBQUFBQUFEQUFBQUEzN2tBQUorNkFB
QUFBQUFBQlFBQUFFQVFFRUl1ZEdWNGRBQUEKQUFBQUFBQUFBQUFBSFFBQUFORzZBQUFBQUFBQUFB
QUFBQUFBQUFBZ0VGQmdMbVJsWW5WbkpGTUFBQUFBQUFBQUFQd0FBQUR1dWdBQQo2cnNBQUFBQUFB
QUZBQUFBUUJBUVFpNTBaWGgwQUFBQUFBQUFBQUFBQUFBL0FBQUFITHdBQUFBQUFBQUFBQUFBQUFB
QUFDQVFVR0F1ClpHVmlkV2NrVXdBQUFBQUFBQUFBR0FFQUFGdThBQUJ6dlFBQUFBQUFBQVVBQUFC
QUVCQkNMblJsZUhRQUFBQUFBQUFBQUFBQUFEVUEKQUFDbHZRQUFBQUFBQUFBQUFBQUFBQUFBSUJC
UVlDNWtaV0oxWnlSVEFBQUFBQUFBQUFBVUFRQUEycjBBQU82K0FBQUFBQUFBQlFBQQpBRUFRRUVJ
dWRHVjRkQUFBQUFBQUFBQUFBQUFBUVFBQUFDQy9BQUJodndBQUFBQUFBQUlBQUFBZ0VGQmdMbVJs
WW5WbkpGTUFBQUFBCkFBQUFBQkFCQUFCMXZ3QUFoY0FBQUFBQUFBQUZBQUFBUUJBUVFpNTBaWGgw
QUFBQUFBQUFBQUFBQUFBR0FBQUF0OEFBQUwzQUFBQUEKQUFBQUFRQUFBQ0FRVUdBdVpHVmlkV2Nr
VXdBQUFBQUFBQUFBMUFBQUFNZkFBQUNid1FBQUFBQUFBQVVBQUFCQUVCQkNMblJsZUhRQQpBQUFB
QUFBQUFBQUFBQXNBQUFETndRQUEyTUVBQUFBQUFBQUJBQUFBSUJCUVlDNWtaV0oxWnlSVEFBQUFB
QUFBQUFEc0FBQUE0c0VBCkFNN0NBQUFBQUFBQUJRQUFBRUFRRUVJdWRHVjRkQUFBQUFBQUFBQUFB
QUFBQndBQUFBRERBQUFId3dBQUFBQUFBQUVBQUFBZ0VGQmcKTG1SbFluVm5KRk1BQUFBQUFBQUFB
TlFBQUFBUnd3QUE1Y01BQUFBQUFBQUZBQUFBUUJBUVFpNTBaWGgwQUFBQUFBQUFBQUFBQUFCWgpB
d0FBRjhRQUFIREhBQUFBQUFBQUpBQUFBQ0FRVUdBdVpHVmlkV2NrVXdBQUFBQUFBQUFBU0FVQUFO
aklBQUFnemdBQUFBQUFBRE1BCkFBQkFFQkJDTG5Ka1lYUmhBQUFBQUFBQUFBQUFBQVFBQUFBZTBB
QUFBQUFBQUFBQUFBQUFBQUFBUUJBd1FDNXlaR0YwWVFBQUFBQUEKQUFBQUFBQUlBQUFBSXRBQUFB
QUFBQUFBQUFBQUFBQUFBRUFRUUVBdVpHRjBZUUFBQUFBQUFBQUFBQUFBQkFBQUFDclFBQUFBQUFB
QQpBQUFBQUFBQUFBQkFFRERBTG5Ka1lYUmhBQUFBQUFBQUFBQUFBQWdBQUFBdTBBQUFBQUFBQUFB
QUFBQUFBQUFBUUJCQVFDNXlaR0YwCllRQUFBQUFBQUFBQUFBQUlBQUFBTnRBQUFBQUFBQUFBQUFB
QUFBQUFBRUFRUUVBdWNtUmhkR0VBQUFBQUFBQUFBQUFBQkFBQUFEN1EKQUFBQUFBQUFBQUFBQUFB
QUFBQkFFREJBTG5Ka1lYUmhBQUFBQUFBQUFBQUFBQWdBQUFCQzBBQUFBQUFBQUFBQUFBQUFBQUFB
UUJCQQpRQzV5WkdGMFlRQUFBQUFBQUFBQUFBQUVBQUFBU3RBQUFBQUFBQUFBQUFBQUFBQUFBRUFR
TUVBdWNtUmhkR0VBQUFBQUFBQUFBQUFBCkVBQUFBRTdRQUFBQUFBQUFBQUFBQUFBQUFBQkFFREJB
TG1SaGRHRUFBQUFBQUFBQUFBQUFBQVFBQUFCZTBBQUFBQUFBQUFBQUFBQUEKQUFBQVFCQXd3QzUw
WlhoMEFBQUFBQUFBQUFBQUFBQTRBQUFBWXRBQUFKclFBQUFBQUFBQUJnQUFBQ0FRVUdBdVpHVmlk
V2NrVXdBQQpBQUFBQUFBQU1BRUFBTmJRQUFBRzBnQUFBQUFBQUFrQUFBQkFFQkJDTG1KemN3QUFB
QUFBQUFBQUFBQUFBQndBQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBQWdBQXd3QzUwWlhoMEFBQUFB
QUFBQUFBQUFBQWxBQUFBWU5JQUFJWFNBQUFBQUFBQUF3QUFBQ0FRVUdBdVpHVmkKZFdja1V3QUFB
QUFBQUFBQWJBRUFBS1BTQUFBUDFBQUFBQUFBQUFzQUFBQkFFQkJDTG5SbGVIUUFBQUFBQUFBQUFB
QUFBRjBBQUFCOQoxQUFBMnRRQUFBQUFBQUFHQUFBQUlCQlFZQzVrWldKMVp5UlRBQUFBQUFBQUFB
RG9BUUFBRnRVQUFQN1dBQUFBQUFBQUR3QUFBRUFRCkVFSXVkR1Y0ZEFBQUFBQUFBQUFBQUFBQU5B
QUFBSlRYQUFESTF3QUFBQUFBQUFNQUFBQWdFRkJnTG1SbFluVm5KRk1BQUFBQUFBQUEKQUhnQkFB
RG0xd0FBWHRrQUFBQUFBQUFMQUFBQVFCQVFRaTUwWlhoMEFBQUFBQUFBQUFBQUFBQlNBUUFBek5r
QUFCN2JBQUFBQUFBQQpEd0FBQUNBUVVHQXVaR1ZpZFdja1V3QUFBQUFBQUFBQTlBSUFBTFRiQUFD
bzNnQUFBQUFBQUJNQUFBQkFFQkJDTG5Ka1lYUmhBQUFBCkFBQUFBQUFBQUFRQUFBQm0zd0FBQUFB
QUFBQUFBQUFBQUFBQVFCQXdRQzV5WkdGMFlRQUFBQUFBQUFBQUFBQUVBQUFBYXQ4QUFBQUEKQUFB
QUFBQUFBQUFBQUVBUU1FQXVjbVJoZEdFQUFBQUFBQUFBQUFBQUJBQUFBRzdmQUFBQUFBQUFBQUFB
QUFBQUFBQkFFREJBTG5SbAplSFFBQUFBQUFBQUFBQUFBQUJrQUFBQnkzd0FBQUFBQUFBQUFBQUFB
QUFBQUlCQlFZQzVrWldKMVp5UlRBQUFBQUFBQUFBQVVBUUFBCmk5OEFBSi9nQUFBQUFBQUFCUUFB
QUVBUUVFSXVkR1Y0ZEFBQUFBQUFBQUFBQUFBQWFnQUFBTkhnQUFBNzRRQUFBQUFBQUFRQUFBQWcK
RUZCZ0xtUmxZblZuSkZNQUFBQUFBQUFBQUJRQkFBQmo0UUFBZCtJQUFBQUFBQUFIQUFBQVFCQVFR
aTV5WkdGMFlRQUFBQUFBQUFBQQpBQUFJQUFBQXZlSUFBQUFBQUFBQUFBQUFBQUFBQUVBUVFFQXVk
R1Y0ZEFBQUFBQUFBQUFBQUFBQXFnRUFBTVhpQUFCdjVBQUFBQUFBCkFBd0FBQUFnRUZCZ0xtUmxZ
blZuSkZNQUFBQUFBQUFBQUpnREFBRG41QUFBZitnQUFBQUFBQUFmQUFBQVFCQVFRaTV5WkdGMFlR
QUEKQUFBQUFBQUFBQUFJQUFBQXRla0FBQUFBQUFBQUFBQUFBQUFBQUVBUVFFQXVkR1Y0ZEFBQUFB
QUFBQUFBQUFBQUJnQUFBTDNwQUFERAo2UUFBQUFBQUFBRUFBQUFnRUZCZ0xtUmxZblZuSkZNQUFB
QUFBQUFBQUJ3QkFBRE42UUFBNmVvQUFBQUFBQUFIQUFBQVFCQVFRaTUwClpYaDBBQUFBQUFBQUFB
QUFBQUFyQUFBQUwrc0FBRnJyQUFBQUFBQUFCQUFBQUNBUVVHQXVaR1ZpZFdja1V3QUFBQUFBQUFB
QVVBRUEKQUlMckFBRFM3QUFBQUFBQUFBMEFBQUJBRUJCQ0xuUmxlSFFBQUFBQUFBQUFBQUFBQUQw
QUFBQlU3UUFBa2UwQUFBQUFBQUFCQUFBQQpJQkJRWUM1a1pXSjFaeVJUQUFBQUFBQUFBQUFJQVFB
QW0rMEFBS1B1QUFBQUFBQUFCd0FBQUVBUUVFSXVkR1Y0ZEFBQUFBQUFBQUFBCkFBQUFaZ0VBQU9u
dUFBQlA4QUFBQUFBQUFBVUFBQUFnRUZCZ0xtUmxZblZuSkZNQUFBQUFBQUFBQUtRQkFBQ0I4QUFB
SmZJQUFBQUEKQUFBUEFBQUFRQkFRUWk1MFpYaDBBQUFBQUFBQUFBQUFBQUFDQVFBQXUvSUFBTDN6
QUFBQUFBQUFCQUFBQUNBUVVHQXVaR1ZpZFdjawpVd0FBQUFBQUFBQUFZQUVBQU9YekFBQkY5UUFB
QUFBQUFBMEFBQUJBRUJCQ0xuUmxlSFFBQUFBQUFBQUFBQUFBQUVjQUFBREg5UUFBCkR2WUFBQUFB
QUFBREFBQUFJQkJRWUM1a1pXSjFaeVJUQUFBQUFBQUFBQUJrQVFBQUxQWUFBSkQzQUFBQUFBQUFD
d0FBQUVBUUVFSXUKZEdWNGRBQUFBQUFBQUFBQUFBQUFCZ0FBQVA3M0FBQUUrQUFBQUFBQUFBRUFB
QUFnRUZCZ0xtUmxZblZuSkZNQUFBQUFBQUFBQVBBQQpBQUFPK0FBQS92Z0FBQUFBQUFBSEFBQUFR
QkFRUWk1MFpYaDBBQUFBQUFBQUFBQUFBQUFxQUFBQVJQa0FBRzc1QUFBQUFBQUFBd0FBCkFDQVFV
R0F1WkdWaWRXY2tVd0FBQUFBQUFBQUFJQUVBQUl6NUFBQ3MrZ0FBQUFBQUFBa0FBQUJBRUJCQ0xu
UmxlSFFBQUFBQUFBQUEKQUFBQUFDb0FBQUFHK3dBQU1Qc0FBQUFBQUFBREFBQUFJQkJRWUM1a1pX
SjFaeVJUQUFBQUFBQUFBQUFrQVFBQVR2c0FBSEw4QUFBQQpBQUFBQ1FBQUFFQVFFRUl1ZEdWNGRB
QUFBQUFBQUFBQUFBQUFaQUFBQU16OEFBQXcvUUFBQUFBQUFBZ0FBQUFnRUZCZ0xtUmxZblZuCkpG
TUFBQUFBQUFBQUFOUUJBQUNBL1FBQVZQOEFBQUFBQUFBTkFBQUFRQkFRUWk1MFpYaDBBQUFBQUFB
QUFBQUFBQUFTQUFBQTF2OEEKQU9qL0FBQUFBQUFBQWdBQUFDQVFVR0F1WkdWaWRXY2tVd0FBQUFB
QUFBQUE2QUFBQVB6L0FBRGtBQUVBQUFBQUFBY0FBQUJBRUJCQwpMblJsZUhRQUFBQUFBQUFBQUFB
QUFCOEFBQUFxQVFFQVNRRUJBQUFBQUFBREFBQUFJQkJRWUM1a1pXSjFaeVJUQUFBQUFBQUFBQUQ4
CkFBQUFad0VCQUdNQ0FRQUFBQUFBQ1FBQUFFQVFFRUl1ZEdWNGRBQUFBQUFBQUFBQUFBQUFJZ0FB
QUwwQ0FRRGZBZ0VBQUFBQUFBTUEKQUFBZ0VGQmdMbVJsWW5WbkpGTUFBQUFBQUFBQUFHQUJBQUQ5
QWdFQVhRUUJBQUFBQUFBTEFBQUFRQkFRUWk1MFpYaDBBQUFBQUFBQQpBQUFBQUFBM0FBQUF5d1FC
QUFJRkFRQUFBQUFBQlFBQUFDQVFVR0F1WkdWaWRXY2tVd0FBQUFBQUFBQUFKQUVBQURRRkFRQllC
Z0VBCkFBQUFBQWtBQUFCQUVCQkNMbkprWVhSaEFBQUFBQUFBQUFBQUFDVUFBQUN5QmdFQUFBQUFB
QUFBQUFBQUFBQUFRQkF3UUM1MFpYaDAKQUFBQUFBQUFBQUFBQUFBR0FBQUExd1lCQU4wR0FRQUFB
QUFBQVFBQUFDQVFVR0F1WkdWaWRXY2tVd0FBQUFBQUFBQUEvQUFBQU9jRwpBUURqQndFQUFBQUFB
QWNBQUFCQUVCQkNMblJsZUhRQUFBQUFBQUFBQUFBQUFBWUFBQUFwQ0FFQUx3Z0JBQUFBQUFBQkFB
QUFJQkJRCllDNWtaV0oxWnlSVEFBQUFBQUFBQUFBVUFRQUFPUWdCQUUwSkFRQUFBQUFBQndBQUFF
QVFFRUl1ZEdWNGRBQUFBQUFBQUFBQUFBQUEKV0FBQUFKTUpBUURyQ1FFQUFBQUFBQVVBQUFBZ0VG
QmdMbVJsWW5WbkpGTUFBQUFBQUFBQUFHQUNBQUFkQ2dFQWZRd0JBQUFBQUFBUApBQUFBUUJBUVFp
NXlaR0YwWVFBQUFBQUFBQUFBQUFBbUFBQUFFdzBCQUFBQUFBQUFBQUFBQUFBQUFFQVFNRUF1Y21S
aGRHRUFBQUFBCkFBQUFBQUFBSmdBQUFEa05BUUFBQUFBQUFBQUFBQUFBQUFCQUVEQkFMbkprWVhS
aEFBQUFBQUFBQUFBQUFCd0FBQUJmRFFFQUFBQUEKQUFBQUFBQUFBQUFBUUJBd1FDNTBaWGgwQUFB
QUFBQUFBQUFBQUFBcEFBQUFldzBCQUtRTkFRQUFBQUFBQXdBQUFDQVFVR0F1WkdWaQpkV2NrVXdB
QUFBQUFBQUFBaUFFQUFNSU5BUUJLRHdFQUFBQUFBQXNBQUFCQUVCQkNMblJsZUhRQUFBQUFBQUFB
QUFBQUFBWUFBQUM0CkR3RUF2ZzhCQUFBQUFBQUJBQUFBSUJCUVlDNWtaV0oxWnlSVEFBQUFBQUFB
QUFBQUFRQUF5QThCQU1nUUFRQUFBQUFBQndBQUFFQVEKRUVJdWRHVjRkQUFBQUFBQUFBQUFBQUFB
Y2dBQUFBNFJBUUNBRVFFQUFBQUFBQWdBQUFBZ0VGQmdMbVJsWW5WbkpGTUFBQUFBQUFBQQpBTFFC
QUFEUUVRRUFoQk1CQUFBQUFBQUxBQUFBUUJBUVFpNTBaWGgwQUFBQUFBQUFBQUFBQUFDaEFBQUE4
aE1CQUpNVUFRQUFBQUFBCkRRQUFBQ0FRVUdBdVpHVmlkV2NrVXdBQUFBQUFBQUFBcEFJQUFCVVZB
UUM1RndFQUFBQUFBQmNBQUFCQUVCQkNMbkprWVhSaEFBQUEKQUFBQUFBQUFBQlFBQUFDZkdBRUFB
QUFBQUFBQUFBQUFBQUFBUUJBd1FDNTBaWGgwQUFBQUFBQUFBQUFBQUFBcEFBQUFzeGdCQU53WQpB
UUFBQUFBQUF3QUFBQ0FRVUdBdVpHVmlkV2NrVXdBQUFBQUFBQUFBVUFFQUFQb1lBUUJLR2dFQUFB
QUFBQWtBQUFCQUVCQkNMblJsCmVIUUFBQUFBQUFBQUFBQUFBQVlBQUFDa0dnRUFxaG9CQUFBQUFB
QUJBQUFBSUJCUVlDNWtaV0oxWnlSVEFBQUFBQUFBQUFBUUFRQUEKdEJvQkFNUWJBUUFBQUFBQUJ3
QUFBRUFRRUVJdWRHVjRkQUFBQUFBQUFBQUFBQUFBQmdBQUFBb2NBUUFRSEFFQUFBQUFBQUVBQUFB
ZwpFRkJnTG1SbFluVm5KRk1BQUFBQUFBQUFBT3dBQUFBYUhBRUFCaDBCQUFBQUFBQUhBQUFBUUJB
UVFpNTBaWGgwQUFBQUFBQUFBQUFBCkFBQUdBQUFBVEIwQkFGSWRBUUFBQUFBQUFRQUFBQ0FRVUdB
dVpHVmlkV2NrVXdBQUFBQUFBQUFBN0FBQUFGd2RBUUJJSGdFQUFBQUEKQUFjQUFBQkFFQkJDTG5S
bGVIUUFBQUFBQUFBQUFBQUFBQVlBQUFDT0hnRUFsQjRCQUFBQUFBQUJBQUFBSUJCUVlDNWtaV0ox
WnlSVApBQUFBQUFBQUFBRG9BQUFBbmg0QkFJWWZBUUFBQUFBQUJ3QUFBRUFRRUVJdWRHVjRkQUFB
QUFBQUFBQUFBQUFBTndBQUFNd2ZBUUFECklBRUFBQUFBQUFFQUFBQWdFRkJnTG1SbFluVm5KRk1B
QUFBQUFBQUFBRmdCQUFBTklBRUFaU0VCQUFBQUFBQUhBQUFBUUJBUVFpNTAKWlhoMEFBQUFBQUFB
QUFBQUFBQUdBQUFBcXlFQkFMRWhBUUFBQUFBQUFRQUFBQ0FRVUdBdVpHVmlkV2NrVXdBQUFBQUFB
QUFBbUFFQQpBTHNoQVFCVEl3RUFBQUFBQUFjQUFBQkFFQkJDTG5SbGVIUUFBQUFBQUFBQUFBQUFB
QVlBQUFDWkl3RUFueU1CQUFBQUFBQUJBQUFBCklCQlFZQzVrWldKMVp5UlRBQUFBQUFBQUFBQU1B
UUFBcVNNQkFMVWtBUUFBQUFBQUJ3QUFBRUFRRUVJdWRHVjRkQUFBQUFBQUFBQUEKQUFBQUJnQUFB
UHNrQVFBQkpRRUFBQUFBQUFFQUFBQWdFRkJnTG1SbFluVm5KRk1BQUFBQUFBQUFBT2dBQUFBTEpR
RUE4eVVCQUFBQQpBQUFIQUFBQVFCQVFRaTUwWlhoMEFBQUFBQUFBQUFBQUFBQUdBQUFBT1NZQkFE
OG1BUUFBQUFBQUFRQUFBQ0FRVUdBdVpHVmlkV2NrClV3QUFBQUFBQUFBQTNBQUFBRWttQVFBbEp3
RUFBQUFBQUFjQUFBQkFFQkJDTG5SbGVIUUFBQUFBQUFBQUFBQUFBQ0lBQUFCckp3RUEKalNjQkFB
QUFBQUFCQUFBQUlCQlFZQzVrWldKMVp5UlRBQUFBQUFBQUFBQVFBUUFBbHljQkFLY29BUUFBQUFB
QUJ3QUFBRUFRRUVJdQpkR1Y0ZEFBQUFBQUFBQUFBQUFBQU13QUFBTzBvQVFBZ0tRRUFBQUFBQUFN
QUFBQWdFRkJnTG1SbFluVm5KRk1BQUFBQUFBQUFBRmdCCkFBQStLUUVBbGlvQkFBQUFBQUFMQUFB
QVFCQVFRaTUwWlhoMEFBQUFBQUFBQUFBQUFBQTBBQUFBQkNzQkFEZ3JBUUFBQUFBQUFnQUEKQUNB
UVVHQXVaR1ZpZFdja1V3QUFBQUFBQUFBQUVBRUFBRXdyQVFCY0xBRUFBQUFBQUFjQUFBQkFFQkJD
TG5SbGVIUUFBQUFBQUFBQQpBQUFBQUVjQUFBQ2lMQUVBNlN3QkFBQUFBQUFFQUFBQUlCQlFZQzVr
WldKMVp5UlRBQUFBQUFBQUFBQU1BUUFBRVMwQkFCMHVBUUFBCkFBQUFDUUFBQUVBUUVFSXVkR1Y0
ZEFBQUFBQUFBQUFBQUFBQUVBQUFBSGN1QVFDSExnRUFBQUFBQUFFQUFBQWdFRkJnTG1SbFluVm4K
SkZNQUFBQUFBQUFBQUFBQkFBQ1JMZ0VBa1M4QkFBQUFBQUFIQUFBQVFCQVFRaTUwWlhoMEFBQUFB
QUFBQUFBQUFBQVFBQUFBMXk4QgpBT2N2QVFBQUFBQUFBUUFBQUNBUVVHQXVaR1ZpZFdja1V3QUFB
QUFBQUFBQTZBQUFBUEV2QVFEWk1BRUFBQUFBQUFjQUFBQkFFQkJDCkxuUmxlSFFBQUFBQUFBQUFB
QUFBQUJBQUFBQWZNUUVBTHpFQkFBQUFBQUFCQUFBQUlCQlFZQzVrWldKMVp5UlRBQUFBQUFBQUFB
RDAKQUFBQU9URUJBQzB5QVFBQUFBQUFCd0FBQUVBUUVFSXVkR1Y0ZEFBQUFBQUFBQUFBQUFBQUh3
QUFBSE15QVFDU01nRUFBQUFBQUFJQQpBQUFnRUZCZ0xtUmxZblZuSkZNQUFBQUFBQUFBQUJRQkFB
Q21NZ0VBdWpNQkFBQUFBQUFIQUFBQVFCQVFRaTUwWlhoMEFBQUFBQUFBCkFBQUFBQUNMQUFBQUFE
UUJBSXMwQVFBQUFBQUFCZ0FBQUNBUVVHQXVaR1ZpZFdja1V3QUFBQUFBQUFBQW1BSUFBTWMwQVFC
Zk53RUEKQUFBQUFCRUFBQUJBRUJCQ0xuUmxlSFFBQUFBQUFBQUFBQUFBQUJZQUFBQUpPQUVBSHpn
QkFBQUFBQUFCQUFBQUlCQlFZQzVrWldKMQpaeVJUQUFBQUFBQUFBQUQ0QUFBQUtUZ0JBQ0U1QVFB
QUFBQUFCd0FBQUVBUUVFSXVkR1Y0ZEFBQUFBQUFBQUFBQUFBQUd3QUFBR2M1CkFRQ0NPUUVBQUFB
QUFBRUFBQUFnRUZCZ0xtUmxZblZuSkZNQUFBQUFBQUFBQUNBQkFBQ01PUUVBckRvQkFBQUFBQUFI
QUFBQVFCQVEKUWk1MFpYaDBBQUFBQUFBQUFBQUFBQUFSQUFBQThqb0JBQU03QVFBQUFBQUFBUUFB
QUNBUVVHQXVaR1ZpZFdja1V3QUFBQUFBQUFBQQorQUFBQUEwN0FRQUZQQUVBQUFBQUFBY0FBQUJB
RUJCQ0xuUmxlSFFBQUFBQUFBQUFBQUFBQUJFQUFBQkxQQUVBWER3QkFBQUFBQUFCCkFBQUFJQkJR
WUM1a1pXSjFaeVJUQUFBQUFBQUFBQUFFQVFBQVpqd0JBR285QVFBQUFBQUFCd0FBQUVBUUVFSXVk
R1Y0ZEFBQUFBQUEKQUFBQUFBQUFNd0FBQUxBOUFRRGpQUUVBQUFBQUFBTUFBQUFnRUZCZ0xtUmxZ
blZuSkZNQUFBQUFBQUFBQUl3QkFBQUJQZ0VBalQ4QgpBQUFBQUFBTEFBQUFRQkFRUWk1MFpYaDBB
QUFBQUFBQUFBQUFBQUFHQUFBQSt6OEJBQUZBQVFBQUFBQUFBUUFBQUNBUVVHQXVaR1ZpCmRXY2tV
d0FBQUFBQUFBQUEvQUFBQUF0QUFRQUhRUUVBQUFBQUFBY0FBQUJBRUJCQ0xuUmxlSFFBQUFBQUFB
QUFBQUFBQUFZQUFBQk4KUVFFQVUwRUJBQUFBQUFBQkFBQUFJQkJRWUM1a1pXSjFaeVJUQUFBQUFB
QUFBQUQ4QUFBQVhVRUJBRmxDQVFBQUFBQUFCd0FBQUVBUQpFRUl1ZEdWNGRBQUFBQUFBQUFBQUFB
QUFQd0FBQUo5Q0FRRGVRZ0VBQUFBQUFBUUFBQUFnRUZCZ0xtUmxZblZuSkZNQUFBQUFBQUFBCkFE
UUJBQUFHUXdFQU9rUUJBQUFBQUFBTEFBQUFRQkFRUWk1MFpYaDBKSGxqQUFBQUFBQUFBQUFVQUFB
QXFFUUJBTHhFQVFBQUFBQUEKQXdBQUFDQVFVR0F1WkdWaWRXY2tVd0FBQUFBQUFBQUE3QUFBQU5w
RUFRREdSUUVBQUFBQUFBY0FBQUJBRUJCQ0xuSmtZWFJoQUFBQQpBQUFBQUFBQUFCY0FBQUFNUmdF
QUFBQUFBQUFBQUFBQUFBQUFRQkF3UUM1MFpYaDBKSGxqQUFBQUFBQUFBQUFVQUFBQUkwWUJBRGRH
CkFRQUFBQUFBQXdBQUFDQVFVR0F1WkdWaWRXY2tVd0FBQUFBQUFBQUE4QUFBQUZWR0FRQkZSd0VB
QUFBQUFBY0FBQUJBRUJCQ0xuSmsKWVhSaEFBQUFBQUFBQUFBQUFCc0FBQUNMUndFQUFBQUFBQUFB
QUFBQUFBQUFRQkF3UUM1MFpYaDBKSGxqQUFBQUFBQUFBQUFVQUFBQQpwa2NCQUxwSEFRQUFBQUFB
QXdBQUFDQVFVR0F1WkdWaWRXY2tVd0FBQUFBQUFBQUE3QUFBQU5oSEFRREVTQUVBQUFBQUFBY0FB
QUJBCkVCQkNMbkprWVhSaEFBQUFBQUFBQUFBQUFCZ0FBQUFLU1FFQUFBQUFBQUFBQUFBQUFBQUFR
QkF3UUM1MFpYaDBKSGxqQUFBQUFBQUEKQUFBVUFBQUFJa2tCQURaSkFRQUFBQUFBQXdBQUFDQVFV
R0F1WkdWaWRXY2tVd0FBQUFBQUFBQUEvQUFBQUZSSkFRQlFTZ0VBQUFBQQpBQWNBQUFCQUVCQkNM
bkprWVhSaEFBQUFBQUFBQUFBQUFDVUFBQUNXU2dFQUFBQUFBQUFBQUFBQUFBQUFRQkF3UUM1RFVs
UWtXRU5WCkFBQUFBQUFBQUFBUUFBQUF1MG9CQU10S0FRQUFBQUFBQkFBQUFFQUFNRUF1WkdWaWRX
Y2tWQUFBQUFBQUFBQUFaQUFBQVBOS0FRQUEKQUFBQUFBQUFBQUFBQUFCQUFCQkNJQ0FnTDIxaGJt
bG1aWE4wWkdWd1pXNWtaVzVqZVRvaWRIbHdaVDBuZDJsdU16SW5JRzVoYldVOQpKMDFwWTNKdmMy
OW1kQzVXUXpnd0xrTlNWQ2NnZG1WeWMybHZiajBuT0M0d0xqVXdOekkzTGpRd05UTW5JSEJ5YjJO
bGMzTnZja0Z5ClkyaHBkR1ZqZEhWeVpUMG5lRGcySnlCd2RXSnNhV05MWlhsVWIydGxiajBuTVda
ak9HSXpZamxoTVdVeE9HVXpZaWNpSUM5RVJVWkIKVlV4VVRFbENPaUoxZFdsa0xteHBZaUlnTDBS
RlJrRlZURlJNU1VJNkluVjFhV1F1YkdsaUlpQXZSRVZHUVZWTVZFeEpRam9pVFZOVwpRMUpVSWlB
dlJFVkdRVlZNVkV4SlFqb2lUMHhFVGtGTlJWTWlJQVFBQUFEeEFBQUFuZ2NBQUdVQUFSRUFBQUFB
UXpwY1kzbG5kMmx1ClhHaHZiV1ZjWTIxaGNuSnBibHhYWldKTGFYUkNkV2xzWkZ4dlltcGNWMlZp
UzJsMFUzbHpkR1Z0U1c1MFpYSm1ZV05sWEZKbGJHVmgKYzJWY1YyVmlTMmwwVTNsemRHVnRTVzUw
WlhKbVlXTmxMbTlpYWdBMUJ4WVJBU0FBQUFjQURnQUFBQ2ZHRGdBQUFDZkdUV2xqY205egpiMlow
SUNoU0tTQlBjSFJwYldsNmFXNW5JRU52YlhCcGJHVnlBR04zWkFCak9seGplV2QzYVc1Y2FHOXRa
VnhqYldGeWNtbHVYSE52CmRYSmpaVnh6ZG01Y1YyVmlTMmwwWEVsdWRHVnlibUZzWEZkbFlrdHBk
Rk41YzNSbGJVbHVkR1Z5Wm1GalpWeDNhVzRBWTJ3QVF6cGMKVUhKdlozSmhiU0JHYVd4bGN5QW9l
RGcyS1Z4TmFXTnliM052Wm5RZ1ZtbHpkV0ZzSUZOMGRXUnBieUE0WEZaRFhHSnBibHhqYkM1bApl
R1VBWTIxa0FDMVBNaUF0U1VNNlhHTjVaM2RwYmx4b2IyMWxYR050WVhKeWFXNWNWMlZpUzJsMFFu
VnBiR1JjU1c1amJIVmtaU0F0ClNVTTZYRUZ3Y0d4bFNXNTBaWEp1WVd4Y1NXNWpiSFZrWlNBdFNV
TTZYRUZ3Y0d4bFNXNTBaWEp1WVd4Y1NXNWpiSFZrWlZ4RGIzSmwKUm05MWJtUmhkR2x2Ymx4UFUx
aERiMjF3WVhScFltbHNhWFI1U0dWaFpHVnljeUF0U1VNNlhFRndjR3hsU1c1MFpYSnVZV3hjU1c1
agpiSFZrWlZ4RGIzSmxSbTkxYm1SaGRHbHZibHhQVTFoRGIyMXdZWFJwWW1sc2FYUjVTR1ZoWkdW
eWMxeEhUbFZEYjIxd1lYUnBZbWxzCmFYUjVJQzFKUXpwY1kzbG5kMmx1WEdodmJXVmNZMjFoY25K
cGJseFhaV0pMYVhSQ2RXbHNaRnh2WW1wY1YyVmlTMmwwVTNsemRHVnQKU1c1MFpYSm1ZV05sWEVS
bGNtbDJaV1JUYjNWeVkyVnpJQzFKWXpwY1kzbG5kMmx1WEdodmJXVmNZMjFoY25KcGJseHpiM1Z5
WTJWYwpjM1p1WEZkbFlrdHBkRnhKYm5SbGNtNWhiRnhYWldKTGFYUlRlWE4wWlcxSmJuUmxjbVpo
WTJVZ0xVUmZYMWRKVGpNeVgxOGdMVVJmClRFbENJQzFFVGtSRlFsVkhJQzFFVjBsT016SWdMVVJm
VjBsT1JFOVhVeUF0UkZkSlRsWkZVajB3ZURVd01TQXRSRjlYU1U0ek1sOVgKU1U1T1ZEMHdlRFV3
TVNBdFJGOVhTVTR6TWw5SlJUMHdlRFl3TUNBdFJGOURVbFJmVTBWRFZWSkZYME5RVUY5UFZrVlNU
RTlCUkY5VApWRUZPUkVGU1JGOU9RVTFGVXoweElDMUVYMTlRVWs5RVZVTlVTVTlPWDE4OU1DQXRS
RjlJUVZOZlJWaERSVkJVU1U5T1V6MHdJQzFFClFsVkpURVJKVGtkZlYyVmlTMmwwVTNsemRHVnRT
VzUwWlhKbVlXTmxJQzFFWDFWT1NVTlBSRVVnTFVSVlRrbERUMFJGSUMxR1JDQXQKVFVRZ0xVZFNM
U0F0Um05RE9seGplV2QzYVc1Y2FHOXRaVnhqYldGeWNtbHVYRmRsWWt0cGRFSjFhV3hrWEc5aWFs
eFhaV0pMYVhSVAplWE4wWlcxSmJuUmxjbVpoWTJWY1VtVnNaV0Z6WlZ3Z0xVWmtRenBjWTNsbmQy
bHVYR2h2YldWY1kyMWhjbkpwYmx4WFpXSkxhWFJDCmRXbHNaRnhzYVdKY1YyVmlTMmwwVTNsemRH
VnRTVzUwWlhKbVlXTmxMblpqT0RBdWNHUmlJQzFYTkNBdFYxZ2dMV01nTFZwcElDMVUKVUNBdGQy
UTBNREU0SUMxM1pEUXdOamdnTFhka05EQTVPU0F0ZDJRME1UQXdJQzEzWkRReE1qY2dMWGRrTkRF
ek9DQXRkMlEwTVRndwpJQzEzWkRReE9Ea2dMWGRrTkRJd01TQXRkMlEwTWpRMElDMTNaRFF5TlRF
Z0xYZGtOREkzTlNBdGQyUTBNamc0SUMxM1pEUXlPVEVnCkxYZGtORE13TlNBdGQyUTBNelEwSUMx
M1pEUXpOVFVnTFhka05ETTRPU0F0ZDJRME5UQXpJQzEzWkRRMU1EVWdMWGRrTkRVeE1DQXQKZDJR
ME5URXlJQzEzWkRRMk1UQWdMWGRrTkRjd05pQXRkMlEwT0RBd0lDMTNaRFE1TlRFZ0xYZGtORGsx
TWlBdGQyUTBPVGsySUMxMwpaRFl3TVRFZ0xYZGtOakF6TVNBdGQyUTJNakV4SUMxM1pEWXlORFln
TFhka05qSTFOU0F0ZDJRMk16ZzNJQzFIVXlBdGJtOXNiMmR2CklDMWxjbkp2Y25KbGNHOXlkRHB4
ZFdWMVpTQXRTU0pET2x4UWNtOW5jbUZ0SUVacGJHVnpJQ2g0T0RZcFhFMXBZM0p2YzI5bWRDQkUK
YVhKbFkzUllJRk5FU3lBb1FYVm5kWE4wSURJd01Ea3BYRWx1WTJ4MVpHVWlJQzFKSWtNNlhGQnli
MmR5WVcwZ1JtbHNaWE1nS0hnNApOaWxjVFdsamNtOXpiMlowSUZacGMzVmhiQ0JUZEhWa2FXOGdP
RnhXUTF4cGJtTnNkV1JsSWlBdFNTSkRPbHhRY205bmNtRnRJRVpwCmJHVnpJQ2g0T0RZcFhFMXBZ
M0p2YzI5bWRDQldhWE4xWVd3Z1UzUjFaR2x2SURoY1ZrTmNZWFJzYldaalhHbHVZMngxWkdVaUlD
MUoKSWtNNlhGQnliMmR5WVcwZ1JtbHNaWE1nS0hnNE5pbGNUV2xqY205emIyWjBJRlpwYzNWaGJD
QlRkSFZrYVc4Z09GeFdRMXhRYkdGMApabTl5YlZORVMxeHBibU5zZFdSbElpQXRTU0pET2x4UWNt
OW5jbUZ0SUVacGJHVnpJQ2g0T0RZcFhFMXBZM0p2YzI5bWRDQldhWE4xCllXd2dVM1IxWkdsdklE
aGNWa05jVUd4aGRHWnZjbTFUUkV0Y1kyOXRiVzl1WEdsdVkyeDFaR1VpSUMxSklrTTZYRkJ5YjJk
eVlXMGcKUm1sc1pYTWdLSGc0TmlsY1RXbGpjbTl6YjJaMElGWnBjM1ZoYkNCVGRIVmthVzhnT0Z4
VFJFdGNkakl1TUZ4cGJtTnNkV1JsSWlBdApXQUJ6Y21NQUxseFhaV0pMYVhSVGVYTjBaVzFKYm5S
bGNtWmhZMlV1WTNCd0FIQmtZZ0JET2x4amVXZDNhVzVjYUc5dFpWeGpiV0Z5CmNtbHVYRmRsWWt0
cGRFSjFhV3hrWEd4cFlseFhaV0pMYVhSVGVYTjBaVzFKYm5SbGNtWmhZMlV1ZG1NNE1DNXdaR0lB
QUFBQThRQUEKQU9VMEFBQWZBQWNSaHhZQUFBd0FRa2xPUkZOVVVrbE9SMTlRVDFOVVgwTlBUMHRK
UlFBbkFBY1JoeFlBQUJBQVFrbE9SRk5VVWtsTwpSMTlHVEVGSFgwSkpUa1JmVkU5ZlQwSktSVU5V
QUNFQUJ4RnFFd0FBQWdCbWIyNTBVMjF2YjNSb2FXNW5UR1YyWld4TlpXUnBkVzBBCkhnQU1FVmNT
QUFBQUFBQUFBQUJoYm5ScFlXeHBZWE5wYm1kSFlXMXRZUUFnQUF3UmRRQUFBQUFBQUFBQUFITmZa
bTl1ZEZOdGIyOTAKYUdsdVoxUjVjR1VBSVFBTUVYUUFBQUFBQUFBQUFBQnpYMlp2Ym5SVGJXOXZk
R2hwYm1kTVpYWmxiQUFpQUF3UnZ4UUFBQUFBQUFBQQpBR3REUmxkcGJtUnZkM05UVTB4UVpXVnlR
MlZ5ZEFBWkFBY1JYQllBQUFFQVZWSk1XazlPUlY5SlRsUlNRVTVGVkFBb0FBMFJXeFFBCkFBQUFB
QUFBQUY5cGJYQmZYMnREUVZKbGJtUmxja1JZT1VOaGJHeGlZV05yY3dBdkFBd1J2aFFBQUFBQUFB
QUFBR3REUmxkcGJtUnYKZDNOVFUweFFaV1Z5UTJWeWRDUnBibWwwYVdGc2FYcGxjaVFBSmdBTUVi
OFVBQUFBQUFBQUFBQnJRMFpYYVc1a2IzZHpVMU5NUTJoaAphVzVEYjI1MFpYaDBBRE1BREJHK0ZB
QUFBQUFBQUFBQWEwTkdWMmx1Wkc5M2MxTlRURU5vWVdsdVEyOXVkR1Y0ZENScGJtbDBhV0ZzCmFY
cGxjaVFBSXdBTUViOFVBQUFBQUFBQUFBQnJRMFpYYVc1a2IzZHpVMU5NVEc5allXeERaWEowQURB
QURCRytGQUFBQUFBQUFBQUEKYTBOR1YybHVaRzkzYzFOVFRFeHZZMkZzUTJWeWRDUnBibWwwYVdG
c2FYcGxjaVFBTUFBTUViOFVBQUFBQUFBQUFBQnJRMFpUZEhKbApZVzFRY205d1pYSjBlVmRwYm1S
dmQzTlRVMHhEWlhKMFNXNW1id0E5QUF3UnZoUUFBQUFBQUFBQUFHdERSbE4wY21WaGJWQnliM0Js
CmNuUjVWMmx1Wkc5M2MxTlRURU5sY25SSmJtWnZKR2x1YVhScFlXeHBlbVZ5SkFBa0FBd1JRQUFB
QUFBQUFBQUFBSE5mWm05dWRGTnQKYjI5MGFHbHVaME52Ym5SeVlYTjBBQ2tBREJGMEFBQUFBQUFB
QUFBQWMxOXplWE4wWlcxR2IyNTBVMjF2YjNSb2FXNW5SVzVoWW14bApaQUFtQUF3UmRRQUFBQUFB
QUFBQUFITmZjM2x6ZEdWdFJtOXVkRk50YjI5MGFHbHVaMVI1Y0dVQUpRQU1FVEFBQUFBQUFBQUFB
QUJ6ClgzTjVjM1JsYlVadmJuUlRiVzl2ZEdocGJtZFRaWFFBR3dBSEVVSVdBQUFBQUZWU1RGcFBU
a1ZTUlVkZlJFVkdRVlZNVkFBWUFBY1IKUWhZQUFBRUFWVkpNV2s5T1JWSkZSMTlJUzB4TkFEQUFE
UkhPRXdBQUFBQUFBQUFBWDJsdGNGOWZhME5HVkhsd1pVUnBZM1JwYjI1aApjbmxMWlhsRFlXeHNR
bUZqYTNNQU1nQU5FZEVUQUFBQUFBQUFBQUJmYVcxd1gxOXJRMFpVZVhCbFJHbGpkR2x2Ym1GeWVW
WmhiSFZsClEyRnNiRUpoWTJ0ekFCVUFCeEZBRXdBQUFBQlZYMXBGVWs5ZlJWSlNUMUlBRlFBSEVk
c1VBQUFBQUVsa2JHVlRhSFYwWkc5M2JnQVMKQUFjUlBCWUFBQUVBVTFsVFgxZEpUak15QUJBQUJ4
RThGZ0FBQWdCVFdWTmZUVUZEQUE0QUJ4RklGZ0FBQWdCV1ZGOUpNZ0FxQUFjUgpRQk1BQUFTQUFR
RUJBRlZmVFZWTVZFbFFURVZmUkVWRFNVMUJURjlUUlZCQlVrRlVUMUpUQUJBQUJ4RklGZ0FBQ0FC
V1ZGOUNVMVJTCkFCUUFCeEZJRmdBQUNRQldWRjlFU1ZOUVFWUkRTQUFoQUEwUkJoVUFBQUFBQUFB
QUFGOXBiWEJmWDJ0RFJrSnZiMnhsWVc1VWNuVmwKQUNJQURSRUdGUUFBQUFBQUFBQUFYMmx0Y0Y5
ZmEwTkdRbTl2YkdWaGJrWmhiSE5sQUJJQUJ4RklGZ0FBSkFCV1ZGOVNSVU5QVWtRQQpGZ0FIRVVn
V0FBQUNnQUNBVmxSZlVrVlRSVkpXUlVRQUl3QUhFYllVQUFBQkFHdERWbFJwYldWVGRHRnRjRlpw
WkdWdlZHbHRaVlpoCmJHbGtBQ0lBQnhHMkZBQUFBZ0JyUTFaVWFXMWxVM1JoYlhCSWIzTjBWR2x0
WlZaaGJHbGtBQ1FBQnhGQUV3QUFCSUFBQkFFQVZWOUoKUkU1QlgxQlNUMGhKUWtsVVJVUmZSVkpT
VDFJQUpBQUhFVUFUQUFBRWdBRUVBUUJWWDBsRVRrRmZWVTVCVTFOSlIwNUZSRjlGVWxKUApVZ0Fr
QUFjUlFCTUFBQVNBQWdRQkFGVmZTVVJPUVY5RFNFVkRTMTlDU1VSSlgwVlNVazlTQUNFQUJ4RzJG
QUFBQklBQUFBRUFhME5XClZHbHRaVk4wWVcxd1ZHOXdSbWxsYkdRQUpBQUhFYllVQUFBRWdBQUFB
Z0JyUTFaVWFXMWxVM1JoYlhCQ2IzUjBiMjFHYVdWc1pBQWgKQUFjUlFCTUFBQVNBQWdVQkFGVmZV
RXhWUjBsT1gwVlNVazlTWDB4SlRVbFVBQlVBQnhIZEZBQUFBQUJPVDBSRlgwbE9Wa0ZNU1VRQQpG
UUFIRWQwVUFBQUJBRTVQUkVWZlJVeEZUVVZPVkFBWEFBY1IzUlFBQUFJQVRrOUVSVjlCVkZSU1NV
SlZWRVVBRWdBSEVkMFVBQUFECkFFNVBSRVZmVkVWWVZBQWJBQWNSM1JRQUFBUUFUazlFUlY5RFJF
RlVRVjlUUlVOVVNVOU9BQjRBQnhIZEZBQUFCUUJPVDBSRlgwVk8KVkVsVVdWOVNSVVpGVWtWT1Ew
VUFHQUFIRVdrV0FBQUNBRlJaVTFCRlExOU5TVTFGVkZsUVJRQVlBQWNSYVJZQUFBTUFWRmxUVUVW
RApYMFpKVEVWT1FVMUZBQlFBQnhIZEZBQUFCZ0JPVDBSRlgwVk9WRWxVV1FBV0FBY1JhUllBQUFR
QVZGbFRVRVZEWDFCU1QwZEpSQUFiCkFBY1JhUllBQUFVQVZGbFRVRVZEWDFCQlEwdEJSMFZPUVUx
RkFCVUFCeEhkRkFBQUNBQk9UMFJGWDBOUFRVMUZUbFFBRmdBSEVkMFUKQUFBSkFFNVBSRVZmUkU5
RFZVMUZUbFFBR3dBSEVkMFVBQUFLQUU1UFJFVmZSRTlEVlUxRlRsUmZWRmxRUlFBZkFBY1IzUlFB
QUFzQQpUazlFUlY5RVQwTlZUVVZPVkY5R1VrRkhUVVZPVkFBZEFBY1JxUllBQUFNQVdFMU1SVXhG
VFZSWlVFVmZSRTlEVlUxRlRsUUFJd0FICkVma1VBQUFCQUVKSlRrUlRWRUZVVlZOZlJrbE9SRWxP
UjFKRlUwOVZVa05GQUI0QUJ4SDVGQUFBQWdCQ1NVNUVVMVJCVkZWVFgwTlAKVGs1RlExUkpUa2NB
SHdBSEVma1VBQUFEQUVKSlRrUlRWRUZVVlZOZlVrVkVTVkpGUTFSSlRrY0FKUUFIRWZrVUFBQUVB
RUpKVGtSVApWRUZVVlZOZlFrVkhTVTVFVDFkT1RFOUJSRVJCVkVFQUl3QUhFZmtVQUFBR0FFSkpU
a1JUVkVGVVZWTmZSVTVFUkU5WFRreFBRVVJFClFWUkJBQ3NBQnhINUZBQUFCd0JDU1U1RVUxUkJW
RlZUWDBKRlIwbE9SRTlYVGt4UFFVUkRUMDFRVDA1RlRsUlRBQ2dBQnhINUZBQUEKQ0FCQ1NVNUVV
MVJCVkZWVFgwbE9VMVJCVEV4SlRrZERUMDFRVDA1RlRsUlRBQ2tBQnhINUZBQUFDUUJDU1U1RVUx
UkJWRlZUWDBWTwpSRVJQVjA1TVQwRkVRMDlOVUU5T1JVNVVVd0FqQUFjUitSUUFBQW9BUWtsT1JG
TlVRVlJWVTE5VlUwbE9SME5CUTBoRlJFTlBVRmtBCklnQUhFZmtVQUFBTEFFSkpUa1JUVkVGVVZW
TmZVMFZPUkVsT1IxSkZVVlZGVTFRQUpRQUhFZmtVQUFBTkFFSkpUa1JUVkVGVVZWTmYKVFVsTlJW
UlpVRVZCVmtGSlRFRkNURVVBS2dBSEVma1VBQUFPQUVKSlRrUlRWRUZVVlZOZlEwRkRTRVZHU1V4
RlRrRk5SVUZXUVVsTQpRVUpNUlFBbUFBY1IrUlFBQUE4QVFrbE9SRk5VUVZSVlUxOUNSVWRKVGxO
WlRrTlBVRVZTUVZSSlQwNEFKQUFIRWZrVUFBQVFBRUpKClRrUlRWRUZVVlZOZlJVNUVVMWxPUTA5
UVJWSkJWRWxQVGdBakFBY1IrUlFBQUJFQVFrbE9SRk5VUVZSVlUxOUNSVWRKVGxWUVRFOUIKUkVS
QlZFRUFJUUFIRWZrVUFBQVRBRUpKVGtSVFZFRlVWVk5mUlU1RVZWQk1UMEZFUkVGVVFRQWpBQWNS
K1JRQUFCUUFRa2xPUkZOVQpRVlJWVTE5UVVrOVVUME5QVEVOTVFWTlRTVVFBSEFBSEVma1VBQUFW
QUVKSlRrUlRWRUZVVlZOZlJVNURUMFJKVGtjQUxRQUhFZmtVCkFBQVdBRUpKVGtSVFZFRlVWVk5m
VmtWU1NVWkpSVVJOU1UxRlZGbFFSVUZXUVVsTVFVSk1SUUFvQUFjUitSUUFBQmNBUWtsT1JGTlUK
UVZSVlUxOURURUZUVTBsT1UxUkJURXhNVDBOQlZFbFBUZ0FjQUFjUitSUUFBQmdBUWtsT1JGTlVR
VlJWVTE5RVJVTlBSRWxPUndBdgpBQWNSRXhVQUFBQUFhME5HU0ZSVVVFTnZiMnRwWlZOMGIzSmha
MlZCWTJObGNIUlFiMnhwWTNsQmJIZGhlWE1BSmdBSEVma1VBQUFaCkFFSkpUa1JUVkVGVVZWTmZU
RTlCUkVsT1IwMUpUVVZJUVU1RVRFVlNBQzRBQnhFVEZRQUFBUUJyUTBaSVZGUlFRMjl2YTJsbFUz
UnYKY21GblpVRmpZMlZ3ZEZCdmJHbGplVTVsZG1WeUFFTUFCeEVURlFBQUFnQnJRMFpJVkZSUVEy
OXZhMmxsVTNSdmNtRm5aVUZqWTJWdwpkRkJ2YkdsamVVOXViSGxHY205dFRXRnBia1J2WTNWdFpX
NTBSRzl0WVdsdUFDd0FCeEg1RkFBQUdnQkNTVTVFVTFSQlZGVlRYME5QClRsUkZUbFJFU1ZOUVQx
TkpWRWxQVGtGVVZFRkRTQUFuQUFjUitSUUFBQndBUWtsT1JGTlVRVlJWVTE5RFRGTkpSRU5CVGts
T1UxUkIKVGxSSlFWUkZBQmtBQnhFTkZRQUFBQkJWUTBoQlVsOUNTVVJKWDBOTVFWTlRBQ1VBQnhI
NUZBQUFIUUJDU1U1RVUxUkJWRlZUWDBsVgpUa3RPVDFkT1FWWkJTVXhCUWt4RkFCNEFCeEg1RkFB
QUhnQkNTVTVFVTFSQlZGVlRYMFJKVWtWRFZFSkpUa1FBSHdBSEVma1VBQUFmCkFFSkpUa1JUVkVG
VVZWTmZVa0ZYVFVsTlJWUlpVRVVBSWdBSEVma1VBQUFnQUVKSlRrUlRWRUZVVlZOZlVGSlBXRmxF
UlZSRlExUkoKVGtjQUlBQUhFZmtVQUFBaEFFSkpUa1JUVkVGVVZWTmZRVU5EUlZCVVVrRk9SMFZU
QUI4QUJ4SDVGQUFBSWdCQ1NVNUVVMVJCVkZWVApYME5QVDB0SlJWOVRSVTVVQUNzQUJ4SDVGQUFB
SXdCQ1NVNUVVMVJCVkZWVFgwTlBUVkJCUTFSZlVFOU1TVU5aWDFKRlEwVkpWa1ZFCkFDVUFCeEg1
RkFBQUpBQkNTVTVFVTFSQlZGVlRYME5QVDB0SlJWOVRWVkJRVWtWVFUwVkVBQ2NBQnhINUZBQUFK
Z0JDU1U1RVUxUkIKVkZWVFgwTlBUMHRKUlY5VFZFRlVSVjlCUTBORlVGUUFKd0FIRWZrVUFBQW5B
RUpKVGtSVFZFRlVWVk5mUTA5UFMwbEZYMU5VUVZSRgpYMUpGU2tWRFZBQW5BQWNSK1JRQUFDZ0FR
a2xPUkZOVVFWUlZVMTlEVDA5TFNVVmZVMVJCVkVWZlVGSlBUVkJVQUM0QUJ4SDVGQUFBCkxnQkNT
VTVFVTFSQlZGVlRYMUJGVWxOSlUxUkZUbFJmUTA5UFMwbEZYMUpGUTBWSlZrVkVBQ0FBQnhINUZB
QUFNQUJDU1U1RVUxUkIKVkZWVFgwTkJRMGhGUTA5T1ZGSlBUQUF1QUFjUitSUUFBREVBUWtsT1JG
TlVRVlJWVTE5RFQwNVVSVTVVUkVsVFVFOVRTVlJKVDA1RwpTVXhGVGtGTlJRQXBBQWNSK1JRQUFE
SUFRa2xPUkZOVVFWUlZVMTlOU1UxRlZFVllWRkJNUVVsT1RVbFRUVUZVUTBnQUpBQUhFUTBWCkFB
QUFJRlZEU0VGU1gwZEZUa1ZTUVV4ZlEwRlVSVWRQVWxsZlRVRlRTd0FtQUFjUitSUUFBRE1BUWts
T1JGTlVRVlJWVTE5UVZVSk0KU1ZOSVJWSkJWa0ZKVEVGQ1RFVUFIQUFIRVEwVkFBQUFNRlZEU0VG
U1gwNVZUVVZTU1VOZlZrRk1WVVVBRWdBSEVRMFZBQUFBUUZWRApTRUZTWDBGSFJRQWRBQWNSMHhR
QUFBQUFRMGhCVGtkRlMwbE9SRjlCUkVSTlJVMUNSVklBR2dBSEVZMFNBQUFDZ1A3L2EwTkhSbTl1
CmRFbHVaR1Y0VFdGNEFDQUFCeEhURkFBQUFRQkRTRUZPUjBWTFNVNUVYMFJGVEVWVVJVMUZUVUpG
VWdBY0FBY1IweFFBQUFJQVEwaEIKVGtkRlMwbE9SRjlUUlZST1FVMUZVd0FXQUFjUmpSSUFBQUtB
L3Y5clEwZEhiSGx3YUUxaGVBQWtBQWNSMHhRQUFBTUFRMGhCVGtkRgpTMGxPUkY5VFJWUkVUME5W
VFVWT1ZFRlVTVTlPQUJzQUJ4SFRGQUFBQkFCRFNFRk9SMFZMU1U1RVgwZEZUa1ZTUVV3QUhnQUhF
ZE1VCkFBQUZBRU5JUVU1SFJVdEpUa1JmU1U1V1FVeEpSRUZVUlFBZ0FBY1IweFFBQUFZQVEwaEJU
a2RGUzBsT1JGOURTRUZPUjBWR1FVbE0KUlVRQUtnQUhFWklTQUFBQUFHdERSME52Ykc5eVEyOWta
VVp5WVdkdFpXNTBURzl2YTNWd1ZHVjRkSFZ5WlFBbkFBY1JraElBQUFFQQphME5IUTI5c2IzSkRi
MlJsUm5KaFoyMWxiblJRWVhKaGJXVjBjbWxqQUJzQUJ4R3VGQUFBQVFCUVFWSlRSVjlEUVU1UFRr
bERRVXhKCldrVUFKZ0FORVk4U0FBQUFBQUFBQUFCZmFXMXdYMTlyUTBaQmJHeHZZMkYwYjNKRVpX
WmhkV3gwQUJjQUJ4R3VGQUFBQWdCUVFWSlQKUlY5R1VrbEZUa1JNV1FBYkFBY1JyaFFBQUFNQVVF
RlNVMFZmVTBWRFZWSkpWRmxmVlZKTUFCc0FCeEd1RkFBQUJBQlFRVkpUUlY5UwpUMDlVUkU5RFZV
MUZUbFFBRndBSEVhNFVBQUFGQUZCQlVsTkZYMFJQUTFWTlJVNVVBQlVBQnhHdUZBQUFCd0JRUVZK
VFJWOUZUa05QClJFVUFGUUFIRWE0VUFBQUlBRkJCVWxORlgwUkZRMDlFUlFBY0FBY1JyaFFBQUFr
QVVFRlNVMFZmVUVGVVNGOUdVazlOWDFWU1RBQWMKQUFjUnJoUUFBQW9BVUVGU1UwVmZWVkpNWDBa
U1QwMWZVRUZVU0FBVEFBY1JyaFFBQUFzQVVFRlNVMFZmVFVsTlJRQVZBQWNScmhRQQpBQXdBVUVG
U1UwVmZVMFZTVmtWU0FCVUFCeEd1RkFBQURRQlFRVkpUUlY5VFEwaEZUVUVBRXdBSEVhNFVBQUFP
QUZCQlVsTkZYMU5KClZFVUFGUUFIRWE0VUFBQVBBRkJCVWxORlgwUlBUVUZKVGdBWEFBY1JyaFFB
QUJBQVVFRlNVMFZmVEU5RFFWUkpUMDRBSGdBSEVhNFUKQUFBUkFGQkJVbE5GWDFORlExVlNTVlJa
WDBSUFRVRkpUZ0FWQUFjUnJoUUFBQklBVUVGU1UwVmZSVk5EUVZCRkFCUUFCeEcxRlFBQQpBUUJR
VTFWZlJFVkdRVlZNVkFBZ0FBY1JneFlBQUFvQVVWVkZVbGxmU1ZOZlNVNVRWRUZNVEVWRVJVNVVV
bGtBR3dBSEVZRVZBQUJPCkFGVkNURTlEUzE5UVVrbFdRVlJGWDFWVFJRQW1BQWNSZ1JVQUFHRUFW
VUpNVDBOTFgwTlpVa2xNVEVsRFgxTlZVRkJNUlUxRlRsUkIKVWxrQUtnQUhFUUVWQUFBQkFHdERS
MFp2Ym5SU1pXNWtaWEpwYm1kVGRIbHNaVUZ1ZEdsaGJHbGhjMmx1WndBeEFBY1JBUlVBQUFRQQph
ME5IUm05dWRGSmxibVJsY21sdVoxTjBlV3hsVTNWaWNHbDRaV3hRYjNOcGRHbHZibWx1WndBeUFB
Y1JBUlVBQUFnQWEwTkhSbTl1CmRGSmxibVJsY21sdVoxTjBlV3hsVTNWaWNHbDRaV3hSZFdGdWRH
bDZZWFJwYjI0QUpRQUhFYmdVQUFBUUFHdERSMFp2Ym5SVGJXOXYKZEdocGJtZFRkSGxzWlUxcGJt
bHRkVzBBSXdBSEViZ1VBQUFnQUd0RFIwWnZiblJUYlc5dmRHaHBibWRUZEhsc1pVeHBaMmgwQUNR
QQpCeEc0RkFBQU1BQnJRMGRHYjI1MFUyMXZiM1JvYVc1blUzUjViR1ZOWldScGRXMEFJd0FIRWJn
VUFBQkFBR3REUjBadmJuUlRiVzl2CmRHaHBibWRUZEhsc1pVaGxZWFo1QUJnQUJ4SHpGUUFBQXdC
VVMwbE9SRjlKVGxSRlVrWkJRMFVBRndBSEVmTVZBQUFFQUZSTFNVNUUKWDBSSlUxQkJWRU5JQUJR
QUJ4SHpGUUFBQmdCVVMwbE9SRjlCVEVsQlV3QWZBQWNSc2hRQUFBQUFSa1ZCVkZWU1JWOVBRa3BG
UTFSZgpRMEZEU0VsT1J3QWZBQWNSc2hRQUFBRUFSa1ZCVkZWU1JWOWFUMDVGWDBWTVJWWkJWRWxQ
VGdBZUFBY1JzaFFBQUFJQVJrVkJWRlZTClJWOU5TVTFGWDBoQlRrUk1TVTVIQUI0QUJ4R3lGQUFB
QXdCR1JVRlVWVkpGWDAxSlRVVmZVMDVKUmtaSlRrY0FKQUFIRWJJVUFBQUUKQUVaRlFWUlZVa1Zm
VjBsT1JFOVhYMUpGVTFSU1NVTlVTVTlPVXdBV0FBY1J2QlFBQUFBQVEwbFFYMFJKVTB0ZlJsVk1U
QUFhQUFjUgp2QlFBQUFFQVEwbFFYMEZEUTBWVFUxOUVSVTVKUlVRQUpnQUhFYklVQUFBRkFFWkZR
VlJWVWtWZlYwVkNUME5mVUU5UVZWQk5RVTVCClIwVk5SVTVVQUNFQUJ4RzhGQUFBQWdCRFNWQmZU
a1ZYUlZKZlZrVlNVMGxQVGw5RldFbFRWRk1BR2dBSEViSVVBQUFHQUVaRlFWUlYKVWtWZlFrVklR
VlpKVDFKVEFDUUFCeEd5RkFBQUJ3QkdSVUZVVlZKRlgwUkpVMEZDVEVWZlRVdGZVRkpQVkU5RFQw
d0FJUUFIRWJ3VQpBQUFEQUVOSlVGOVBURVJGVWw5V1JWSlRTVTlPWDBWWVNWTlVVd0FhQUFjUnZC
UUFBQVFBUTBsUVgwNUJUVVZmUTA5T1JreEpRMVFBCkpnQUhFYklVQUFBSUFFWkZRVlJWVWtWZlRF
OURRVXhOUVVOSVNVNUZYMHhQUTB0RVQxZE9BREVBQnhHOEZBQUFCUUJEU1ZCZlZGSlYKVTFSZlZr
VlNTVVpKUTBGVVNVOU9YME5QVFZCUFRrVk9WRjlOU1ZOVFNVNUhBQjBBQnhHeUZBQUFDUUJHUlVG
VVZWSkZYMU5GUTFWUwpTVlJaUWtGT1JBQXJBQWNSdkJRQUFBWUFRMGxRWDBWWVJWOVRSVXhHWDFK
RlIwbFRWRVZTUVZSSlQwNWZWRWxOUlU5VlZBQW9BQWNSCnNoUUFBQW9BUmtWQlZGVlNSVjlTUlZO
VVVrbERWRjlCUTFSSlZrVllTVTVUVkVGTVRBQWNBQWNSdkJRQUFBY0FRMGxRWDFWT1UwRkcKUlY5
VVQxOUJRazlTVkFBbUFBY1JzaFFBQUF3QVJrVkJWRlZTUlY5U1JWTlVVa2xEVkY5R1NVeEZSRTlY
VGt4UFFVUUFHQUFIRWJ3VQpBQUFJQUVOSlVGOU9SVVZFWDFKRlFrOVBWQUFoQUFjUnNoUUFBQTBB
UmtWQlZGVlNSVjlCUkVSUFRsOU5RVTVCUjBWTlJVNVVBQ0lBCkJ4R3lGQUFBRGdCR1JVRlVWVkpG
WDFCU1QxUlBRMDlNWDB4UFEwdEVUMWRPQUM4QUJ4R3lGQUFBRHdCR1JVRlVWVkpGWDBoVVZGQmYK
VlZORlVrNUJUVVZmVUVGVFUxZFBVa1JmUkVsVFFVSk1SUUFpQUFjUnNoUUFBQkFBUmtWQlZGVlNS
VjlUUVVaRlgwSkpUa1JVVDA5QwpTa1ZEVkFBakFBY1JzaFFBQUJFQVJrVkJWRlZTUlY5VlRrTmZV
MEZXUlVSR1NVeEZRMGhGUTBzQUx3QUhFYklVQUFBU0FFWkZRVlJWClVrVmZSMFZVWDFWU1RGOUVU
MDFmUmtsTVJWQkJWRWhmVlU1RlRrTlBSRVZFQUNBQUJ4RnJGZ0FBQkFCRVJWTkRTMGxPUkY5SlRW
Qk0KU1VOSlZFRlFVRTlDU2dBbUFBY1JtQklBQUFBQWEwTkhVM1I1YkdWRWNtRjNUM0prWlhKcGJt
ZFRkSGxzWlU5dWJIa0FJZ0FIRVpnUwpBQUFCQUd0RFIxTjBlV3hsUkhKaGQwOXlaR1Z5YVc1blFt
VnNiM2NBSFFBSEVWb1dBQUFDQUVOUFVsOVdSVkpUU1U5T1gwMUJTazlTClgxWXlBQmNBQnhFSEZB
QUFBQUJyU0ZSVVVFeHZZV1JYYVdSMGFBQXdBQTBSdnhRQUFBQUFBQUFBQUY5cGJYQmZYMnREUmxO
MGNtVmgKYlZCeWIzQmxjblI1UTA5T1RrVkRWRkJ5YjNoNUFEUUFEUkcvRkFBQUFBQUFBQUFBWDJs
dGNGOWZhME5HVTNSeVpXRnRVSEp2Y0dWeQpkSGxEVDA1T1JVTlVVSEp2ZUhsSWIzTjBBRFFBRFJH
L0ZBQUFBQUFBQUFBQVgybHRjRjlmYTBOR1UzUnlaV0Z0VUhKdmNHVnlkSGxEClQwNU9SVU5VVUhK
dmVIbFFiM0owQUR3QURSRy9GQUFBQUFBQUFBQUFYMmx0Y0Y5ZmEwTkdVM1J5WldGdFVISnZjR1Z5
ZEhsRFQwNU8KUlVOVVFXUmthWFJwYjI1aGJFaGxZV1JsY25NQU13QU5FYjhVQUFBQUFBQUFBQUJm
YVcxd1gxOXJRMFpUZEhKbFlXMVFjbTl3WlhKMAplVU5QVGs1RlExUlNaWE53YjI1elpRQVJBQWNS
dEJRQUFBRUFRME5mUTBSRlEwd0FGUUFIRWJRVUFBQUNBRU5EWDAxVFExQkJVME5CClRBQVNBQWNS
dEJRQUFBSUFRME5mVUVGVFEwRk1BQlVBQnhHMEZBQUFBd0JEUTE5TlFVTlFRVk5EUVV3QUV3QUhF
YlFVQUFBRUFFTkQKWDFOVVJFTkJURXdBRmdBSEViUVVBQUFGQUVORFgwWlFSa0ZUVkVOQlRFd0FF
d0FIRWJRVUFBQUdBRU5EWDFOWlUwTkJURXdBRkFBSApFYlFVQUFBSEFFTkRYMDFRVjBORVJVTk1B
QlVBQnhHMEZBQUFDQUJEUTE5TlVGZFFRVk5EUVV3QUV3QUhFWW9XQUFBQkFGWkJVbDlUClZFRlVT
VU1BSUFBSEVaOFNBQUFCQUVOR1FubDBaVTl5WkdWeVRHbDBkR3hsUlc1a2FXRnVBQk1BQ0JHNkZn
QUFkR0ZuVUVGU1FVMUUKUlZOREFCVUFDQkcrRmdBQWRHRm5VRUZTUVUxRVJWTkRSVmdBRVFBSUVi
d1dBQUIwWVdkQ1NVNUVVRlJTQUJRQUNCRzRGZ0FBVEZCUQpRVkpCVFVSRlUwTkZXQUFQQUFnUnRC
UUFBRU5CVEV4RFQwNVdBQTRBQ0JHOEZnQUFRa2xPUkZCVVVnQVBBQWdSOHhVQUFGUlpVRVZMClNV
NUVBQThBQ0JGRUZnQUFSbFZPUTB0SlRrUUFFQUFJRWJvV0FBQlFRVkpCVFVSRlUwTUFFQUFJRWY0
VEFBQklTVTVUVkVGT1EwVUEKRWdBSUVUNFdBQUIwWVdkVVRFbENRVlJVVWdBUEFBZ1J0QllBQUVW
TVJVMUVSVk5EQUFvQUNCRUlFd0FBVTA1Q0FCRUFDQkVWRXdBQQpWa0ZTU1VGT1ZFRlNSd0FWQUFn
UlhoWUFBRk5CUmtWQlVsSkJXVUpQVlU1RUFCTUFDQkYxQUFBQVJtOTFja05vWVhKRGIyUmxBQ0lB
CkNCSEZFd0FBUTBaRWFXTjBhVzl1WVhKNVVtVnNaV0Z6WlVOaGJHeENZV05yQUJJQUNCRzBGZ0FB
ZEdGblJVeEZUVVJGVTBNQUR3QUkKRVdzV0FBQkVSVk5EUzBsT1JBQU5BQWdSRVFBQUFGTkpiblF4
TmdBUEFBZ1JaUllBQUZSWlVFVkVSVk5EQUJNQUNCR2xGZ0FBZEdGbgpSVmhEUlZCSlRrWlBBQkVB
Q0JHNUZRQUFkR0ZuVTFSQlZGTlVSd0FRQUFnUklnQUFBRlZNVDA1SFgxQlVVZ0FPQUFnUmloWUFB
RlpCClVrdEpUa1FBRXdBSUViRVdBQUJEUmtKdmIyeGxZVzVTWldZQUR3QUlFWEVFQUFCTVVFOU1S
Vk5VVWdBU0FBZ1JyQllBQUhSaFowWlYKVGtORVJWTkRBQXdBQ0JFaUFBQUFWVXhQVGtjQUVRQUlF
V0FXQUFCMFlXZEpSRXhFUlZOREFDb0FDQkhIRXdBQVEwWkVhV04wYVc5dQpZWEo1UTI5d2VVUmxj
Mk55YVhCMGFXOXVRMkZzYkVKaFkyc0FDZ0FJRWJnU0FBQkpTVVFBSFFBSUVkd1RBQUJEUmtoVVZG
QkRiMjlyCmFXVlRkRzl5WVdkbFVtVm1BQThBQ0JFVEFBQUFURTlPUjB4UFRrY0FHUUFJRWJBV0FB
QjBZV2RCY0hCc2FXTmhkR2x2YmxSNWNHVUEKRUFBSUVhZ1VBQUIwWVdkRFFVSlRWRklBRmdBSUVY
QVNBQUJEUmtScFkzUnBiMjVoY25sU1pXWUFHZ0FJRWE0V0FBQlFTVVJOVTBsZgpVMVJCVkZWVFgx
WkJURlZGQUJNQUNCRWhBQUFBVUZKUFVGWkJVbDlRUVVRekFBMEFDQkVEQkFBQVRGQldUMGxFQUF3
QUNCRjlFd0FBClgwMUJWRElBRHdBSUVhd1dBQUJHVlU1RFJFVlRRd0FSQUFnUnloUUFBSFJoWjBO
QlEweFRTVVFBR3dBSUVWb1VBQUJEUVZKbGJtUmwKY2s5SFRFTmhiR3hpWVdOcmN3QVBBQWdSenhR
QUFIUmhaME5CUkVKTUFBNEFDQkYwQUFBQVEwZEZjbkp2Y2dBWUFBZ1I2QkFBQUd4dgpZMkZzWlds
dVptOWZjM1J5ZFdOMEFBMEFDQkVpQUFBQVUwbGFSVjlVQUJRQUNCSHNFd0FBUTBaVlVreERZV05v
WlZKbFpnQVBBQWdSCklnQUFBRWhTUlVaVVdWQkZBQnNBQ0JGMUFBQUFRMGRHYjI1MFVtVnVaR1Z5
YVc1blUzUjViR1VBQ3dBSUVVWVdBQUJEUVZWQ0FBd0EKQ0JGeEFBQUFWVU5vWVhJQUVnQUlFZk1W
QUFCMFlXZFVXVkJGUzBsT1JBQVNBQWdSYXhZQUFIUmhaMFJGVTBOTFNVNUVBQTRBQ0JGKwpGUUFB
ZEdGblEwRkRXUUFTQUFnUklRQUFBRU5IUm05dWRFbHVaR1Y0QUJZQUNCRWRGQUFBUTBaU1pXRmtV
M1J5WldGdFVtVm1BQkVBCkNCRThGZ0FBZEdGblUxbFRTMGxPUkFBWEFBZ1J0eFVBQUVKSlZFMUJV
RWxPUms5SVJVRkVSVklBRmdBSUVha1dBQUIwWVdkWVRVeEYKVFVWTlgxUlpVRVVBRGdBSUVYRUFB
QUJQVEVWRFNFRlNBQkVBQ0JHS0ZnQUFkR0ZuVmtGU1MwbE9SQUFRQUFnUnB4WUFBRjlEVmxKbApk
SFZ5YmdBT0FBZ1JkQUFBQUdWeWNtNXZYM1FBRUFBSUVhVVdBQUJGV0VORlVFbE9SazhBRFFBSUVj
MFFBQUJNVUVOVFZGSUFFQUFJCkVmMFVBQUJmUmtsTVJWUkpUVVVBRUFBSUVTTUFBQUJWVEU5T1Iw
eFBUa2NBRGdBSUVZd1dBQUJXUVZKRVJWTkRBQkFBQ0JIYUVBQUEKVEZCRFQweEZVMVJTQUF3QUNC
RndCQUFBVEZCVFZGSUFLUUFJRWNjVEFBQkRSa0ZzYkc5allYUnZja052Y0hsRVpYTmpjbWx3ZEds
dgpia05oYkd4Q1lXTnJBQnNBQ0JHUUZBQUFWMHREUmxWU1RFTnlaV1JsYm5ScFlXeFNaV1lBREFB
SUVhOFNBQUJzWTI5dWRnQVBBQWdSCm9CWUFBRWxWYm10dWIzZHVBQThBQ0JFU0FBQUFUVVZOUWtW
U1NVUUFFd0FJRVpBV0FBQjBZV2RCVWxKQldVUkZVME1BSFFBSUVkSVQKQUFCRFJrMTFkR0ZpYkdW
RWFXTjBhVzl1WVhKNVVtVm1BQTBBQ0JGQkFBQUFSRTlWUWt4RkFCRUFDQkdNRmdBQWRHRm5Wa0ZT
UkVWVApRd0FKQUFnUmZ4WUFBRU5aQUJRQUNCR0hGZ0FBZEdGblFrbE9SRk5VVWtsT1J3QVJBQWdS
aFJZQUFGVk1hVzVsUW5KbFlXc0FEZ0FJCkVmc1ZBQUJFUlVOSlRVRk1BQkVBQ0JFaUFBQUFRMFpJ
WVhOb1EyOWtaUUFoQUFnUjBSTUFBRU5HUkdsamRHbHZibUZ5ZVZaaGJIVmwKUTJGc2JFSmhZMnR6
QUJVQUNCSG1FQUFBY0hSb2NtVmhaRzFpWTJsdVptOEFEZ0FJRWRvUUFBQk1VRU5YVTFSU0FBNEFD
QkU4RmdBQQpVMWxUUzBsT1JBQUxBQWdScWhRQUFFTkJWVXdBRHdBSUVVQVdBQUJDVTFSU1FreFBR
Z0FOQUFnUkNSVUFBSFJoWjBOQlNBQVFBQWdSClVCSUFBRU5HUkdGMFlWSmxaZ0FPQUFnUmRRQUFB
SEp6YVhwbFgzUUFGZ0FJRVlNV0FBQmZkR0ZuVVZWRlVsbFBVRlJKVDA0QURRQUkKRVhVQUFBQlZT
VzUwTXpJQUZ3QUlFYXNTQUFCZlEwZEpiblJsY201aGJFVnljbTl5QUF3QUNCRi9GZ0FBZEdGblEx
a0FFQUFJRVgwVwpBQUJKVkhsd1pVTnZiWEFBQ3dBSUVYUUFBQUJDVDA5TUFCMEFDQkgxRXdBQVEw
Wk5kWFJoWW14bFZWSk1VbVZ4ZFdWemRGSmxaZ0FPCkFBZ1JyeFVBQUhSaFowTkJWVWtBRmdBSUVm
SVRBQUJEUmxWU1RGSmxjWFZsYzNSU1pXWUFGQUFJRWI0VkFBQjBZV2REUVVaSlRFVlUKU1UxRkFC
UUFDQkc3RlFBQWRHRm5SRWxUVUZCQlVrRk5Vd0FUQUFnUkVRQUFBRlpCVWtsQlRsUmZRazlQVEFB
TEFBZ1JJZ0FBQUV4RApTVVFBRXdBSUViTVZBQUIwWVdkVFFVWkZRVkpTUVZrQUVnQUlFUTBUQUFC
UVVrOVFWa0ZTU1VGT1ZBQVVBQWdSMkJRQUFFTkJVRkpQClVGWkJVa2xCVGxRQUVnQUlFUllRQUFC
RFJsTjBjbWx1WjFKbFpnQVFBQWdSYVJZQUFIUmhaMVJaVTFCRlF3QVNBQWdSWlJZQUFIUmgKWjFS
WlVFVkVSVk5EQUJJQUNCSDVGUUFBZEdGblEweEpVRVJCVkVFQURRQUlFZW9WQUFCRFFVUkJWRVVB
SHdBSUVjd1RBQUJEUmtScApZM1JwYjI1aGNubElZWE5vUTJGc2JFSmhZMnNBRVFBSUVROFZBQUIw
WVdkU1IwSlJWVUZFQUJVQUNCRlFFd0FBVEZCSFRGbFFTRTFGClZGSkpRMU1BRFFBSUVjTVVBQUIw
WVdkRFFVTUFFQUFJRVc0UkFBQkRSbFI1Y0dWU1pXWUFGd0FJRWFRUkFBQkRSbE4zWVhCd1pXUkcK
Ykc5aGRETXlBQk1BQ0JGNkV3QUFSMHhaVUVoTlJWUlNTVU5UQUE4QUNCRWhBQUFBZFdsdWRERTJY
M1FBRFFBSUVSTUFBQUIwYVcxbApYM1FBRGdBSUVWY1RBQUJJUWtsVVRVRlFBQTRBQ0JGMEFBQUFh
VzUwTXpKZmRBQU9BQWdSWUJZQUFFbEVURVJGVTBNQUVnQUlFZmNWCkFBQjBZV2RVV1ZCRlFWUlVV
Z0FZQUFnUlhoWUFBSFJoWjFOQlJrVkJVbEpCV1VKUFZVNUVBQklBQ0JFaUZBQUFRMFpPZFcxaVpY
SlMKWldZQURnQUlFY0VVQUFCMFlXZENURTlDQUJFQUNCRmNGZ0FBZEdGblZWSk1XazlPUlFBT0FB
Z1JBd1FBQUVoSFJFbFBRa29BRlFBSQpFVG9XQUFCZlRFRlNSMFZmU1U1VVJVZEZVZ0FqQUFnUldo
WUFBRkpsY0d4aFkyVnpRMjl5U0dSeVRuVnRaWEpwWTBSbFptbHVaWE1BCkZnQUlFZWtWQUFCZlZV
eEJVa2RGWDBsT1ZFVkhSVklBSUFBSUVROFVBQUJEUmxWU1RFTnlaV1JsYm5ScFlXeFRkRzl5WVdk
bFVtVm0KQUJnQUNCRllGZ0FBU1ZObGNYVmxiblJwWVd4VGRISmxZVzBBRGdBSUVVQUFBQUJEUjBa
c2IyRjBBQThBQ0JGMUFBQUFkV2x1ZERNeQpYM1FBRHdBSUVTTUFBQUIxYVc1ME5qUmZkQUFWQUFn
UlFRQUFBRU5HVkdsdFpVbHVkR1Z5ZG1Gc0FBNEFDQkZJRmdBQVZrRlNSVTVWClRRQU1BQWdSQWhB
QUFFeERYMGxFQUEwQUNCRzlGQUFBZEdGblEwRkpBQXdBQ0JHNkZBQUFVRTlKVGxRQURnQUlFVVlX
QUFCMFlXZEQKUVZWQ0FCTUFDQkVwRUFBQVEwZERiMjUwWlhoMFVtVm1BQklBQ0JGRUZnQUFkR0Zu
UmxWT1EwdEpUa1FBRGdBSUVkb1FBQUJRUTFWWApVMVJTQUJJQUNCSHVFZ0FBVEZCVFFVWkZRVkpT
UVZrQURnQUlFU0FBQUFCQ2IyOXNaV0Z1QUJRQUNCRjZFd0FBWDBkTVdWQklUVVZVClVrbERVd0FP
QUFnUkNCQUFBRU5IVUc5cGJuUUFFZ0FJRVJFVkFBQkRWbFJwYldWVGRHRnRjQUFTQUFnUlFoWUFB
RjlWVWt4YVQwNUYKVWtWSEFCOEFDQkhPRXdBQVEwWkVhV04wYVc5dVlYSjVTMlY1UTJGc2JFSmhZ
MnR6QUE0QUNCRWdBQUFBZFdsdWREaGZkQUFXQUFnUgpNUlFBQUVOQlNXMWhaMlZSZFdWMVpWSmxa
Z0FTQUFnUlFCWUFBSFJoWjBKVFZGSkNURTlDQUE4QUNCRStGZ0FBVkV4SlFrRlVWRklBCkZBQUlF
VG9XQUFCTVFWSkhSVjlKVGxSRlIwVlNBQk1BQ0JFMkZnQUFTVVZ1ZFcxVFZFRlVVMVJIQUE0QUNC
RWhBQUFBVmtGU1ZGbFEKUlFBUUFBZ1JkQUFBQUhCMGNtUnBabVpmZEFBT0FBZ1JCUkFBQUVOR1Vt
RnVaMlVBRHdBSUVTVVdBQUJKVkhsd1pVeHBZZ0FOQUFnUgoreFVBQUhSaFowUkZRd0FoQUFnUnho
UUFBRU5HUVd4c2IyTmhkRzl5VW1Wc1pXRnpaVU5oYkd4Q1lXTnJBQjBBQ0JHSEVnQUFkR2h5ClpX
RmtiRzlqWVd4bGFXNW1iM04wY25WamRBQVBBQWdSK1JVQUFFTk1TVkJFUVZSQkFBOEFDQkgzRlFB
QVZGbFFSVUZVVkZJQUVRQUkKRVJVVEFBQjBZV2RXUVZKSlFVNVVBQTBBQ0JFU0FBQUFSRWxUVUVs
RUFBMEFDQkVoQUFBQVZWTklUMUpVQUJjQUNCRzdFd0FBUTBaVgpVa3hTWlhOd2IyNXpaVkpsWmdB
aEFBZ1J3eE1BQUVOR1JHbGpkR2x2Ym1GeWVWSmxkR0ZwYmtOaGJHeENZV05yQUF3QUNCRURCQUFB
ClVGWlBTVVFBRUFBSUVlb1ZBQUIwWVdkRFFVUkJWRVVBRGdBSUVmNFRBQUJJVFU5RVZVeEZBQW9B
Q0JIWkZBQUFRMEZNQUJBQUNCSGcKRUFBQVgyeHZZMkZzWlY5MEFBMEFDQkYzRXdBQVFrbFVUVUZR
QUEwQUNCRjFBQUFBVDFOVWVYQmxBQXNBQ0JGOUV3QUFUVUZVTWdBVwpBQWdSWnhRQUFFTkJVbVZ1
WkdWeVEyOXVkR1Y0ZEFBU0FBZ1JOUk1BQUVOV1UwMVFWRVZVYVcxbEFBNEFDQkhORkFBQWRHRm5R
MEZWClNBQVZBQWdSNlJVQUFGVk1RVkpIUlY5SlRsUkZSMFZTQUJJQUNCSGxGUUFBU1ZKbFkyOXla
RWx1Wm04QUZ3QUlFU29VQUFCRFJraFUKVkZCTlpYTnpZV2RsVW1WbUFBNEFDQkVERkFBQVJrRlNV
RkpQUXdBTkFBZ1JNeEVBQUd4a2FYWmZkQUFOQUFnUklRQUFBSGRwYm5SZgpkQUFPQUFnUnJCUUFB
RU5CVTBOUFJFVUFEUUFJRWY4VUFBQmZSa2xZUlVRQURRQUlFZklRQUFCZmFXOWlkV1lBRHdBSUVT
SUFBQUJEClQweFBVbEpGUmdBaUFBZ1JPUlFBQUVOQlNXMWhaMlZSZFdWMVpWSmxiR1ZoYzJWRFlX
eHNZbUZqYXdBWEFBZ1JyQkVBQUVOR1UzZGgKY0hCbFpFWnNiMkYwTmpRQUpBQUlFVGtVQUFCM2Ew
TkJTVzFoWjJWUmRXVjFaVkpsYkdWaGMyVkRZV3hzWW1GamF3QVFBQWdSZHhNQQpBSFJoWjBKSlZF
MUJVQUFVQUFnUlRCUUFBRmRMUTBGRFJrTnZiblJsZUhRQUZBQUlFWjhTQUFCZlgwTkdRbmwwWlU5
eVpHVnlBQXdBCkNCRWdBQUFBVlVOSVFWSUFFUUFJRVhRVEFBQkNTVlJOUVZCSlRrWlBBQTRBQ0JF
U0FBQUFRMFpKYm1SbGVBQVJBQWdSdmhVQUFFTkIKUmtsTVJWUkpUVVVBRVFBSUVic1ZBQUJFU1ZO
UVVFRlNRVTFUQUJzQUNCRWFFQUFBUTBaVGRISnBibWRKYm14cGJtVkNkV1ptWlhJQQpFQUFJRVRz
VEFBQkRSMU5DYjNWdVpITUFFQUFJRVE4VEFBQk1VRlpCVWtsQlRsUUFFQUFJRVhVQUFBQlZWRVl6
TWtOb1lYSUFEQUFJCkVTSUFBQUJFVjA5U1JBQU9BQWdSY0FRQUFIWmhYMnhwYzNRQUVRQUlFVm9W
QUFCSlRsWlBTMFZMU1U1RUFBNEFDQkc1RlFBQVUxUkIKVkZOVVJ3QVZBQWdSU0JRQUFFTkJVbVZ1
WkdWeVZYQmtZWFJsQUE4QUNCRXRGQUFBUTBaVlVreFNaV1lBRFFBSUVRTUVBQUJJUVU1RQpURVVB
R2dBSUViY1ZBQUIwWVdkQ1NWUk5RVkJKVGtaUFNFVkJSRVZTQUJJQUNCRi9GUUFBZEdGblEwRk1V
RmRUVkZJQURnQUlFVUFBCkFBQkdiRzloZERNeUFBc0FDQkVoQUFBQVYwOVNSQUFMQUFnUklBQUFB
RUpaVkVVQUlBQUlFY29UQUFCRFJrUnBZM1JwYjI1aGNubEYKY1hWaGJFTmhiR3hDWVdOckFBd0FD
Qkg3RkFBQVEwRkdURlFBRkFBSUViVVZBQUJmZEdGblVGTlZRVU5VU1U5T0FCTUFDQkVoQUFBQQpV
RkpQVUZaQlVsOVFRVVF4QUE0QUNCRjhGUUFBUTBGTVVGTlVVZ0FWQUFnUnZCRUFBRU5HUVd4c2Iy
TmhkRzl5VW1WbUFCRUFDQkZBCkV3QUFWVVZ5Y205eVEyOWtaUUFNQUFnUmNRQUFBRmREU0VGU0FC
b0FDQkdZRWdBQVEwZFRkSGxzWlVSeVlYZFBjbVJsY21sdVp3QWUKQUFnUkZSUUFBRU5HVlZKTVVI
SnZkR1ZqZEdsdmJsTndZV05sVW1WbUFCQUFDQkd6RlFBQVUwRkdSVUZTVWtGWkFCRUFDQkVUQUFB
QQpYMTkwYVcxbE5qUmZkQUFRQUFnUnNCUUFBSFJoWjBOQlFrOVBUQUFMQUFnUnJ4VUFBRU5CVlVr
QUlBQUlFY1VVQUFCRFJrRnNiRzlqCllYUnZjbEpsZEdGcGJrTmhiR3hDWVdOckFBOEFDQkd0RlFB
QVNWTjBiM0poWjJVQUR3QUlFU0lBQUFCRFJsUjVjR1ZKUkFBUkFBZ1IKZ1JVQUFGVkNiRzlqYTBO
dlpHVUFEQUFJRVJFQUFBQlRTRTlTVkFBTEFBZ1JFZ0FBQUV4UFRrY0FGZ0FJRWVFVEFBQkRSa2hV
VkZCRApiMjlyYVdWU1pXWUFDUUFJRVpJUkFBQjBiUUFSQUFnUitCTUFBRU5HUVhKeVlYbFNaV1lB
SXdBSUVRY1VBQUJJVkZSUVEyOXVibVZqCmRHbHZia05oWTJobFRHbHRhWFJMWlhsekFCa0FDQkZH
RkFBQVEwRlNaVzVrWlhKUFIweERiMjUwWlhoMEFBd0FDQkZBQUFBQVJreFAKUVZRQUR3QUlFWDhW
QUFCRFFVeFFWMU5VVWdBTkFBZ1JjUVFBQUZCVlYxTlVVZ0FMQUFnUmZoVUFBRU5CUTFrQUp3QUlF
ZVFUQUFCRApSa2hVVkZCRGIyOXJhV1ZUZEc5eVlXZGxSbWxzZEdWeVVISnZZMUIwY2dBVEFBZ1JB
d1FBQUVOSFUxSmxaMmx2Yms5aWFnQWJBQWdSCmRRQUFBRU5IUm05dWRGTnRiMjkwYUdsdVoxTjBl
V3hsQUJBQUNCRmVFd0FBU0VKSlZFMUJVRjlmQUJrQUNCRVRGQUFBUTBaVlVreEQKY21Wa1pXNTBh
V0ZzVW1WbUFCRUFDQkY4RlFBQWRHRm5RMEZNVUZOVVVnQVFBQWdSZWhVQUFFbFVlWEJsU1c1bWJ3
QUxBQWdSUVFBQQpBRVJCVkVVQURRQUlFWEVFQUFCTVVGZFRWRklBR0FBSUVld1NBQUJNVUZaRlVs
TkpUMDVGUkZOVVVrVkJUUUFPQUFnUk54VUFBRWxUCmRISmxZVzBBRFFBSUVYVUFBQUJ6YVhwbFgz
UUFEZ0FJRVJNQUFBQnBiblEyTkY5MEFBOEFDQkVDRUFBQWRHRm5URU5mU1VRQUZBQUkKRVhRVEFB
QjBZV2RDU1ZSTlFWQkpUa1pQQUFzQUNCRURGUUFBVWtWRFZBQVZBQWdSRFJNQUFIUmhaMUJTVDFC
V1FWSkpRVTVVQUE0QQpDQkVGRUFBQVEwWlNZVzVuWlFBWEFBZ1JwQkVBQUVOR1UzZGhjSEJsWkVa
c2IyRjBNeklBRndBSUVhd1JBQUJEUmxOM1lYQndaV1JHCmJHOWhkRFkwQUI4QUNCSE9Fd0FBUTBa
RWFXTjBhVzl1WVhKNVMyVjVRMkZzYkVKaFkydHpBQ0VBQ0JIUkV3QUFRMFpFYVdOMGFXOXUKWVhK
NVZtRnNkV1ZEWVd4c1FtRmphM01BR3dBSUVSb1FBQUJEUmxOMGNtbHVaMGx1YkdsdVpVSjFabVps
Y2dBU0FBZ1JFUlVBQUVOVwpWR2x0WlZOMFlXMXdBQW9BQ0JGSEV3QUFTRVJEQUJFQUNCSFdGQUFB
UTBGQ1UxUlNRa3hQUWdBZEFBZ1JBd1FBQUVOSFUxSmxaMmx2CmJrVnVkVzFsY21GMGIzSlBZbW9B
RGdBSUVROFZBQUJTUjBKUlZVRkVBQkFBQ0JFTkZRQUFWVkJ5YjNCbGNuUjVBQmtBQ0JFTEZRQUEK
ZEdGblZtVnljMmx2Ym1Wa1UzUnlaV0Z0QUFvQUNCRUpGUUFBUTBGSUFBd0FDQkc0RWdBQVgwZFZT
VVFBRGdBSUVRTVZBQUIwWVdkUwpSVU5VQUF3QUNCSC9GQUFBUmtsWVJVUUFEUUFJRVFzUUFBQkRS
MU5wZW1VQUR3QUlFZjBVQUFCR1NVeEZWRWxOUlFBUEFBZ1IreFFBCkFIUmhaME5CUmt4VUFCUUFD
QkhSRkFBQWRHRm5RMEZEVEVsUVJFRlVRUUFZQUFnUkVSQUFBRU5IUVdabWFXNWxWSEpoYm5ObWIz
SnQKQUJRQUNCSDVGQUFBZEdGblFrbE9SRk5VUVZSVlV3QU9BQWdSRlJNQUFGWkJVa2xCVGxRQURn
QUlFU0VBQUFCRFIwZHNlWEJvQUJBQQpDQkgzRkFBQVNVUnBjM0JoZEdOb0FCVUFDQkhkRkFBQWRH
Rm5SRTlOVG05a1pWUjVjR1VBRmdBSUVkc1VBQUIwWVdkVGFIVjBaRzkzCmJsUjVjR1VBREFBSUVS
SUFBQUJUUTA5RVJRQU5BQWdSMlJRQUFIUmhaME5CVEFBWEFBZ1IyQlFBQUhSaFowTkJVRkpQVUZa
QlVrbEIKVGxRQUN3QUlFWEVFQUFCQ1UxUlNBQXNBQ0JIeUVBQUFSa2xNUlFBUUFBZ1JqUk1BQUVO
SFJtOXVkRkpsWmdBVUFBZ1IxaFFBQUhSaApaME5CUWxOVVVrSk1UMElBQ2dBSUVYUUFBQUJKVGxR
QUZBQUlFZE1VQUFCMFlXZERTRUZPUjBWTFNVNUVBQkVBQ0JIUkZBQUFRMEZEClRFbFFSRUZVUVFB
TUFBZ1J6eFFBQUVOQlJFSk1BQlVBQ0JGRkZBQUFRMEZEUmtOdmJuUmxlSFJTWldZQUN3QUlFYzBV
QUFCRFFWVkkKQUFzQUNCRzRFZ0FBUjFWSlJBQU9BQWdSeWhRQUFFTkJRMHhUU1VRQUp3QUlFY2dV
QUFCRFJraFVWRkJEYjI5cmFXVlRkRzl5WVdkbApSbWxzZEdWeVEyOXVkR1Y0ZEFBTEFBZ1JjQUFB
QUVOSVFWSUFEQUFJRVNBQUFBQlZTVzUwT0FBVEFBZ1JWUlFBQUVOQlEwWk1ZWGxsCmNsSmxaZ0FN
QUFnUlN4TUFBRWhFUTE5ZkFBb0FDQkhERkFBQVEwRkRBQXNBQ0JIQkZBQUFRa3hQUWdBU0FBZ1JB
UlFBQUVoSlRsTlUKUVU1RFJWOWZBQTRBQ0JFaEFBQUFWVzVwUTJoaGNnQUtBQWdSdlJRQUFFTkJT
UUFNQUFnUnVCSUFBRU5NVTBsRUFCTUFDQkVoQUFBQQpVRkpQVUZaQlVsOVFRVVF5QUE0QUNCRXpF
UUFBWDJ4a2FYWmZkQUFmQUFnUnZCUUFBRjlmVFVsRVRGOUpRMjlrWlVsdWMzUmhiR3hmCk1EQXdN
UUFQQUFnUnVoUUFBSFJoWjFCUFNVNVVBQTRBQ0JFU0FBQUFTRkpGVTFWTVZBQUxBQWdSZFFBQUFG
VkpUbFFBRWdBSUViUVUKQUFCMFlXZERRVXhNUTA5T1ZnQWVBQWdSc2hRQUFGOTBZV2RKVGxSRlVr
NUZWRVpGUVZSVlVrVk1TVk5VQUEwQUNCR3dGQUFBUTBGQwpUMDlNQUJZQUNCR3VGQUFBWDNSaFox
QkJVbE5GUVVOVVNVOU9BQTRBQ0JGQkFBQUFSbXh2WVhRMk5BQVJBQWdSdFJNQUFFTkhRMjlzCmIz
SlNaV1lBRlFBSUVlUVFBQUJ3ZEdoeVpXRmtiRzlqYVc1bWJ3QVJBQWdSckJRQUFIUmhaME5CVTBO
UFJFVUFEZ0FJRWFvVUFBQjAKWVdkRFFWVk1BQTBBQ0JHb0ZBQUFRMEZDVTFSU0FBMEFDQkVPRUFB
QVEwZFNaV04wQUFBQUFQUUFBQURvRndBQUFRQUFBQkFCTGVVaQp3ZjNhOFJnNkE4NGRlbmZZZ0FB
QVBBQUFBQkFCWUUvYi9OMFZBdVl3ZmxhT292Y0xiUUFBYkFBQUFCQUIxZTlDalU0MTF0NmV0b0l2
CjkzMWZ5QUFBbmdBQUFCQUJjVlVuM2lwWnFKdHEwV1IxWHVuakVRQUEwd0FBQUJBQkNVZ0dHT1Qz
cXM5K21zejZSVzdIRHdBQUNRRUEKQUJBQkwxKzQ4ckxJTjNpMVBzWkRncVV5cEFBQVBBRUFBQkFC
NFRvb2I3RTFCL0czeCtDWXpKNG1zUUFBalFFQUFCQUIvWGVybytyMQo3YjloeVo5UUNYcCthQUFB
MHdFQUFCQUI4NTZUa3l2aFZKNUdnYjRzc1B3bDlnQUFKZ0lBQUJBQktBaXptWFJPY0pJUDc2M0dr
bVF3Cm9RQUFYQUlBQUJBQmxlMHVKYUFYY2w3aGhYT2pTS2xNcGdBQWpRSUFBQkFCaE9vYjJpa211
VHQ5Q3pGdkV1SGhwZ0FBd1FJQUFCQUIKdjBLWE1jYkVFM044cVM4RTV6L2t6QUFBRXdNQUFCQUI0
MkZQZkE5RkdONFh1WEYydW5rM0t3QUFSQU1BQUJBQkJkeVlkUmRkanJNbwpCK05ranU1L3lnQUFj
d01BQUJBQldkSUdJcUpWMi80MUdjUUpVZ1RYc0FBQXhnTUFBQkFCTnBqbG9wLzNLeDZxT1dOOGZn
S2FvQUFBCitnTUFBQkFCTHF2OTA3ZGpQNHdQNFlxTjkxa1E5QUFBS2dRQUFCQUJoVlgvR0ZycjBu
SlBoTXZEK2tCN2FBQUFXd1FBQUJBQlU3RmMKMzdxeXNnNDZmYlJjVTF6Zmt3QUFyZ1FBQUJBQkQ3
d1R0bzJ6RWIrczVvM1lXVmc0OEFBQTV3UUFBQkFCeGhCQWExZ0lySFZJVlZPVAp3dW5qeUFBQUZn
VUFBQkFCMyt5TE1tL0NIWnFrRHUwazZzdHdTQUFBVFFVQUFCQUJqV3Bsc3k3djJaMEtvN1AzTmlQ
dDhRQUFrZ1VBCkFCQUJkTTVkVFZHcTZCaGUwV1VWbHBBUi9BQUE1QVVBQUJBQkU1cnM4VmFMMFRR
R3VxYVhsMFdmTlFBQU5nWUFBQkFCYzRFTUNvNlUKbGxRQ3FjWkdtVG96aXdBQWNnWUFBQkFCQUJp
eSszV0xTVFZKdll2RE9iWklmUUFBcVFZQUFCQUJXNmlpT1FSTXUwTU9tNGdsdzl0ZApsZ0FBNGdZ
QUFCQUJVOEVWYTJZSmQyUUtOSWl4Y2IzZ0VRQUFHQWNBQUJBQlI0WlJYUld5TUFFYXYyYi8wYmxZ
MUFBQVJRY0FBQkFCCkJ0SDBKdENQd0VGa0RqQXFtc0hKTFFBQWlnY0FBQkFCVStkOW5NSnh2Qk9r
WTdraVRZRm9UUUFBd3djQUFCQUI0U1BKRkFITVMyNXIKZ0ZBeGJGRE96Z0FBOVFjQUFCQUJEUkZu
WWtPNGp1ajk4RU9IaXpBSm9RQUFNUWdBQUJBQlp5ODBOVUlSYVpDZVlnV3JreDNZMXdBQQpaUWdB
QUJBQnR4UlowSVZnVjlWQnVEV1RIMVVEZHdBQXRBZ0FBQkFCOVhRMTVjc0Rzd21QYUdPbHRJNnhC
Z0FBQmdrQUFCQUJoT3ZECkYrS3pZNnZXUHFISk5NU2VlZ0FBT2drQUFCQUJ5ZnpXMkltUW0yaUFW
Q0M4QzhNcUFBQUFiUWtBQUJBQk9jcFJkNWYyL2J4ejNud1cKTEppejNBQUFvd2tBQUJBQldmdU5V
MDNTSGhZRXdsaE9kNFB2MWdBQTZBa0FBQkFCZ3BML29xbHlzQ1pFTVQwL3V0aUxKQUFBTndvQQpB
QkFCUTAyWVJpOC9FY3JzTjhaQnRqaXlUZ0FBaWdvQUFCQUJjYXdFdm1QRjQ0UUhXYnFHN1YxVDZR
QUFzd29BQUJBQjhkODBrTldOCi9ZNEdjdkpOUFZ5QUl3QUFCUXNBQUJBQmcxTFluVFRiRWVqbjZm
MWJ1MHBWOEFBQVZRc0FBQkFCSFc2ZHdkNTU1SXo2SjJEaXF0MlcKR2dBQWdBc0FBQkFCZWVNaGta
cHV5UTZ2QTlodFZBQWFyUUFBeFFzQUFCQUJtY05TWFlqNVVZaFgvL1RZZXBNb0R3QUE4UXNBQUJB
QgozOU9IaThKeW1pSHZZTS9WWDBya0ZBQUFOZ3dBQUJBQkgweFFWK2tJN3dBaHh6Z3UxdE1oRGdB
QWJRd0FBQkFCcjd4Z3B3dXFzYVRPCjR2OUpheWVHZHdBQW9Bd0FBQkFCMEx6OVhHRVF2SnZ3cHdC
VHNQU0JmUUFBNUF3QUFCQUJvbkRMMVNXVm0xRWVnZjBkc1VVWEJBQUEKR2cwQUFCQUJ0cERzZ0dT
TEJLcktxd1hwSk16c0pRQUFhQTBBQUJBQms1c2JYc1ZlK3lVK0pOVEE5VVVNdGdBQXVnMEFBQkFC
U3dJUgorZTN0UGNwcTlaTHpMMTlEN0FBQTl3MEFBQkFCaVNkckhOYXlRdFpxSU5xbCtWTWdnZ0FB
U1E0QUFCQUJoSWozeU5IQWxVcGI1VzNaClBsUmVoUUFBZ1E0QUFCQUJFcWF5U2NETVlQdk1KTjNw
UFIreXFnQUF4QTRBQUJBQkw0UThjTmFNMHAzQTRYa3dicFE3NGdBQUtnOEEKQUJBQmhmc0UwSm1W
WVppVnZvbWRrYjZoUWdBQVdnOEFBQkFCb0cyRWFQSk1MZTZBdmZvVVVtdHdJUUFBa0E4QUFCQUIr
Nk15UFN4UAp5SjRCVXJsWmJYWTV6Z0FBd1E4QUFCQUJwSUplQy83b1gyaTArbUR3aldWYVFRQUE5
QThBQUJBQnpNNWFrbVU2QkNXWUpaRVNmUHEyCkh3QUFLUkFBQUJBQk03bUhNUU5XS3VqVThpOUwz
MmtwandBQVloQUFBQkFCZWoveEVFaEYwRUk5alk5YSs1WGZlUUFBbFJBQUFCQUIKWlV1aFpCcEFY
QmlCUkY3eUFlUmVlUUFBemhBQUFCQUJNUWRvdU5pMG5oTm5VbGJIOVBlWGNRQUFBUkVBQUJBQkdO
b21OZTZCSGNsZgpvOGIrZUtpWVBnQUFPUkVBQUJBQjVpMTJQOVVVUWh5NmxML3lwbUl1ZkFBQWFS
RUFBQkFCUGJWeWxRNlROVGlLM09kSjB3ZGVTQUFBCnZCRUFBQkFCQmg3M0h5WDNGNVpIcDlIc1p1
SnBmUUFBNXhFQUFCQUJvMk9wZXdta1lsZEpFT1NkMjc1T2lnQUFGQklBQUJBQlhOYjMKb2M5UzM2
QWgzVGNETUI4T1VRQUFUUklBQUJBQmhRSXFIVXBNWkl3UFNpK2xvanVud3dBQWRoSUFBQkFCTGZU
VkdyemQ5NFBaUHNFLwptdFJ1ckFBQXlSSUFBQkFCc2tDTm96aGY0V0xOT1FxWWhlSmcyd0FBL3hJ
QUFCQUJMcHM1ZUx1eUhZWlg2aTJhbzFIWFdnQUFVQk1BCkFCQUJBelFIQkhGbHJ2N3VpSk5ETktk
WEZ3QUFnaE1BQUJBQnRROWZab1N0eldlOXpiSTNEaUgraUFBQXRSTUFBQkFCREEyLzBsQW0KeGVm
aERtVXJodnBoNVFBQTZCTUFBQkFCTTFRdWp2czQwVi9zN3FyWDZxd0NJQUFBRXhRQUFCQUJicXlD
NVVXNStGR2hkUGRsYW5Wdwo0Z0FBU0JRQUFCQUJIOGJjODVBeG1iUDFYLzV4cVpUaThnQUFnaFFB
QUJBQnJBYkZ6U1JsWjRLZDFka1Q3Ym1YUndBQXRSUUFBQkFCCjVRR2s5L0QvREsyVk1iMWtuNUht
N0FBQUNCVUFBQkFCN0NNaEpPMk5LWkc0TTZnYXZDbWFrZ0FBUHhVQUFCQUJ1dTZSM3M4bGxzdCsK
aVFKMmcwNzhSQUFBZGhVQUFCQUJjWDhZS0RDMCswSFhkeXcyZ1hpU0dBQUFxUlVBQUJBQlZZckU1
TDBCUWdoZnZWNFVWSFRMTmdBQQo5eFVBQUJBQlBnVkpITWxRWmJpL2VnNzNYNk1SSUFBQUpCWUFB
QkFCcS9uR0oxMGl6RThPVFRMNVlLL2t1d0FBV1JZQUFCQUJOVENXCldyR3UwUG4zUW5ZSmQ0RGRv
Z0FBa2hZQUFCQUJNajVBKzVXREZ5dG5SZzYwNWdPRXZBQUEyaFlBQUJBQjNDWnNBQ3pzRzJnVDFH
MW8Kd01kYlBBQUFLeGNBQUJBQnNiVGE3M3I1RFlOZFRTNUtGWW9SdEFBQVdoY0FBQkFCekJOYUJN
ZDdZUEZ3Z2Y2aGNxT1pmd0FBcXhjQQpBQkFCNDkraytpQWFRMDh5Rmg1L1Z6Yk9pQUFBM1JjQUFC
QUJTcDVuYjNYaTNEd0JpWk9adlhaR0ZBQUFNQmdBQUJBQjF3NFlIaWpVClRhcFFNZ0kvVWFjMDF3
QUFhaGdBQUJBQnl0NStZd2lDbnpFTUt6UTZXYUJTQ3dBQWxCZ0FBQkFCTVdib29zYVg4Qk9rMXRN
OFdMcksKRlFBQXhSZ0FBQkFCSW44K3g1c3VwZ0ZlS0ZLZDBzTHFLZ0FBK0JnQUFCQUJjWm5BUEhk
UzNoVytnTHlSaUxDOFFBQUFLUmtBQUJBQgpKQ0xpWXZtdHV5ZlJCUlRGczFET0ZBQUFYQmtBQUJB
Qk5leGU0ekNHMW1Zb2pMdklBYlJTYUFBQWxSa0FBQkFCY2toTm5qeWtOVytNCkFrUWo5bHlMNlFB
QXlCa0FBQkFCaGFlMVIrdmVaTEJHWjVnaEN5MUtBQUFBQWhvQUFCQUJsVFNjTloyZ1MxQ0J6Mlhm
ZzBGcDdBQUEKTUJvQUFCQUJoS2J3ZW5rbFl6MEtnZjRaZ2swNHV3QUFkUm9BQUJBQmFtVVNYbnl0
amhOcWdnQ1dJZk1aYlFBQXl4b0FBQkFCUUwwbwoxM0VhS2dHUWN1dG9hRUEwbmdBQStSb0FBQkFC
Nzk1dGdybGdmT3VSbDEvdWo4Y3JXZ0FBR3hzQUFCQUJ0WVorMVdONEcyZkZsSkQ1CkM0N3hDUUFB
WHhzQUFCQUJsem8yU2V1c0NWVktibExDdHRIMWZ3QUFzUnNBQUJBQmtWZWVzVnpFYjlReXBKSjJh
amIvUlFBQTN4c0EKQUJBQjhxZmNtQS9hSHhUeWhsSjRIM2tPYXdBQUdod0FBQkFCbHFkWjN4dXdq
NnF6U205WkFXdUFSQUFBWGh3QUFCQUIrNlJjcUduRgp6MDZsNjdIVDZldVU3d0FBb3h3QUFCQUI4
V1BLK3VZN0tuT2R1cnpJK0h0dFNRQUE0UndBQUJBQlZodEtIVk9aZmNCSi96bFhsaWpNCkhRQUFG
QjBBQUJBQnZVbElmcTRnTDR5T3pESU1sTXZvRGdBQVp4MEFBQkFCd1grNjQ4MjlxRkN5RW9VRTlG
dStwUUFBcVIwQUFCQUIKS1VSalJkRTZIRXdOWDVwSjVPaGlvQUFBM1IwQUFCQUJ1VW05TDdrcVIv
Zytmc3QwMTNVT2pBQUFCaDRBQUJBQkU3R3l3RGk1aUxxKwpYeWw3aUpOYUx3QUFOeDRBQUJBQi9L
MUMwYVh3Q3J5OHBXaXZpOXlaYlFBQWFCNEFBQkFCcER0c3hVMmkvdmJJa3pFeFJudGNXQUFBCnNS
NEFBQkFCWUFYWTVxWU11UzZWUUE1U2RKQW5ZQUFBOEI0QUFCQUJnUk9HYis3M2tPYU9HRXJqVE5P
WnF3QUFQaDhBQUJBQjRsK3gKN3p0cDY3bVFRSVVsSVhWd0J3QUFrUjhBQUJBQklnK0xuVVh6d1E1
Rys2aU1FNUZwWGdBQXhSOEFBQkFCTHFzOTMrWG9rbE9Nb0psaQpWTGVmMWdBQUZ5QUFBQkFCc3ZC
MTZIdkhOVC9Mb3lLM3RsT29IUUFBWnlBQUFCQUJqdDVtQmdtelhTbU1OcVlLNGppNWtnQUFtU0FB
CkFCQUJDbXAzT1RpQStUMnE1dU9YeUQyc3FBQUEwQ0FBQUJBQmNmTUdVUS83L0pEN2hTNDF4L1lM
ZmdBQUF5RUFBQkFCd0lLL3YrZVYKTFBzbERuS0ZnNWUrcXdBQU15RUFBQkFCV3BQa25MSEVuNzU0
bDdhWHAwVm1tUUFBYkNFQUFCQUJaa1hneVV5ajlKVUlkT3YxVW82ZgpIZ0FBbWlFQUFCQUJPNU9P
eGxtRDhqQ0hyRm9zT3l5eUZnQUE2eUVBQUJBQmNYbWdicWRVendRY2xncHJHM3h1MHdBQUZTSUFB
QkFCCnVYdythWkx1RXlxNFpTcE56cG4rWHdBQVNpSUFBQkFCWlBoZ3AyS2pzMmZJK2swNGZQQ0hK
Z0FBbXlJQUFCQUJDUzVkWk9lRFhublMKb1lXSjhUYkFnZ0FBMWlJQUFCQUJ1Ylh1dTBrdTc5bzlW
NGZzZlhYVWxRQUFEQ01BQUJBQnFpTTZNRDRnYlZrc0lzeXBCQS9XQXdBQQpTQ01BQUJBQjhqaE9k
V1krd2xWaXpRZUdtMHVHelFBQW1pTUFBQkFCeFQ5bCt1MGEvcVRIWVFlbWtNelJGQUFBMmlNQUFC
QUJlTWNtCkNWNm1LeGw1YkxKM0tWbWRoUUFBL1NNQUFCQUJMQURXTkI3dGpJeGdhNjdsenNYczdB
QUFUU1FBQUJBQjhyT0cxOGorYW9CVll3M0YKQ2x3L0h3QUFkaVFBQUJBQjFLRmN3U3NFSTlaWGw2
aWo4VEx2Y2dBQXBDUUFBQkFCNU1Ka0hyMzRpaHV4aDNzTHFOelhWQUFBOVNRQQpBQkFCaDBOQ1ZN
ODk2a3loVGt0Y2xKbitZd0FBTENVQUFCQUIwM0FXaHRaZUVtZGhZMTd0RE5penRBQUFWQ1VBQUJB
QjJuY1hjVE1iCkxuT3YyT0xOMmdlMWhRQUFveVVBQUJBQnJmMmo3ZFdSWUVBWkFpbU1qUXRZcFFB
QTlDVUFBQkFCaktDb2p4TWx2Vjk2Ni9DbVFUcmkKMWdBQUpDWUFBQkFCdjB1T3h6TmVyN09pL3RV
bHRoVDFTQUFBZHlZQUFCQUJOeWhlMjlLZzhrRVdtSlNZQWZ4MnV3QUF5U1lBQUJBQgpBQTYyd3Vq
c1FFTi9SdTJWYVdWTHpRQUFHaWNBQUJBQnovMmRNWncxODFOb1gzdUpQZ0tXM3dBQVh5Y0FBQkFC
NzYzR0l1N3pocUVwCmxDUkI1TlpXWGdBQXNDY0FBQkFCc1RCZmxFbmQ5REZzRGg3WVdlemtpZ0FB
QVNnQUFCQUJ1U0hHQmdHMTJzd2U5b0V5SXZsOWxRQUEKVXlnQUFCQUJIVGM5VzkrWFNoeDNadHgz
Mk15TlpnQUFqQ2dBQUJBQjVRYmxoWDRLYmk3UGsxaWIvajBxbndBQTNTZ0FBQkFCb2Z5RgpXeWJM
MFdEQ1VYOFFrZkVuOVFBQUZTa0FBQkFCZUhScmlZUitxaDQvb2x2L1FXV1o5Z0FBWmlrQUFCQUJj
THhOWjJTTmx4Zm8wU1Z3Cm5PNWZ3Z0FBbmlrQUFCQUJiSjhSMWxPSzBSS295L3Y0QjQ5ZklRQUEw
eWtBQUJBQjVvLytIUXJpaG5HQU1Rd0h2QUxwUndBQURTb0EKQUJBQjl0Tlhsb080OWJRZDZpWnIz
YW54NUFBQVBpb0FBQkFCOUN0UGRjYVpyZzB5cGthS2tINWZyUUFBZ1NvQUFCQUJOeVNDemk0Zgp1
eW1ocmN0aitWVVhwQUFBdHlvQUFCQUJZbGxsYmNYVm9UNDFwa1g1RzlPQ093QUE1eW9BQUJBQnhs
cWt6M3Zoc3NrQU15WlVpQWUyCnlRQUFPaXNBQUJBQnN3S0lJeEl6K2RWK0oxQ0hOSkZ3dEFBQWlp
c0FBQkFCQzRVbllmSExacXRqdHdLcmJ2Wk9XUUFBdkNzQUFCQUIKdGlkaVE0VzFVdm9jSllZVVZy
UEZZZ0FBNnlzQUFCQUI0bFF4QzlwYVFvVW5PdERHTmZoOXlRQUFLQ3dBQUJBQkRDam9DVnNaWmU0
RAp3VlVoYnJPNEt3QUFaaXdBQUJBQmJWczMrZ3ZsbGMyWDI4N2ZxYjZDckFBQW5Td0FBQkFCNE8y
MHh4L0E5NjM1Y29tblRWUW1IUUFBCjhDd0FBQkFCb3RBMEJrWFM5TE44SWdMMHlOS3hYd0FBUWkw
QUFCQUJHTkd5RXl5Z2Q2TmpyTXVnODRWOWt3QUFlaTBBQUJBQkQvR0wKR1NIY1hOdm1iWE5BM0NS
cXFnQUFxaTBBQUJBQk0xQ2Y4LzBvWjJ4aDdiZkJ0VmNpakFBQS9TMEFBQkFCVld2amU1bmlhR3pq
SE9XWAphMGFhNkFBQVRpNEFBQkFCK09zd3JPNTAyVDkycnFBOWhZWHg5d0FBaEM0QUFCQUJQL0Nv
b1YzK09OeG5Yb01BRWVvUTBnQUExUzRBCkFCQUJCRVFTanhPY2ZYNkRJWVMybmJNMi9BQUFDQzhB
QUJBQjdIbE1DYnJvRVFhSExpVlNJUklHMXdBQU95OEFBQkFCOWtRclVvd0gKTkJDak5rWndqVERX
Q2dBQWJpOEFBQkFCcWxXaGQ3RmN4ZEl5YnlwNCtYNUlkUUFBb3k4QUFCQUIyTXQ5VGJ6OG03QTQw
UUNPVXl4Zgp5QUFBOWk4QUFCQUI4UUtyL3B4NlFES1Y4SmpTaG8zYmh3QUFJakFBQUJBQlVrMFRW
TmdOR1lqd1l0dWVmVDNSU1FBQVdUQUFBQkFCCktOMmdCSW5LZ051WElnRUwwOUpiSmdBQWxUQUFB
QkFCdXhpRWRmQnVKOVhlTjlFejZISUtXUUFBeHpBQUFCQUJuUzVHNjB5NXRETUgKM2ZTRWlhQ0Zt
UUFBRERFQUFCQUJFL0xPMUt1ZG0rc2FrZHFWQXVtOFlBQUFRREVBQUJBQjdPazQwSGhvbytRN0Fs
c3ViWGJOd0FBQQpkekVBQUJBQlhLT3h2bG44dzdGMXdEVzVnL2t3U0FBQXFURUFBQkFCak4zSjAx
Wm0yQkRPRldvRFdVSmNtUUFBN2pFQUFCQUI4QURECkhUUTJ2TXpFOUtoVmlYOUJpd0FBSFRJQUFC
QUIwODI3bUJHMVo0QWZ2ZmZpc1lFd2dRQUFWRElBQUJBQitaVm9wK1drTlNSL0ZqdmUKdEZJRWx3
QUFneklBQUJBQjBVeTd4RGtuaStCZlFxaDN4OVhBbHdBQTFqSUFBQkFCZFNDZE9uMk44aTNZRW5k
bzN6QWZhd0FBQ2pNQQpBQkFCSVZSR3dCNTNrT1VuQ0NXRndtYVdIQUFBUERNQUFCQUJTZjFBYWNl
UnEyVTJMQ2V6L1pHYVd3QUFqek1BQUJBQnYxY1Vhc3RPCk5QQWpySnFvYmM4KzlnQUE0ak1BQUJB
QnJPRTFWWDFWTkRrUUxzaE5Ca0dyVVFBQU5EUUFBQkFCaFUzbjFpbmNaVVEzL1pFaDRCdUIKNndB
QVl6UUFBQkFCUU5McEU2aTZpbTk4QnY2YVhmcjI3QUFBblRRQUFCQUJiTUpld0JCbmU1cUNEZ05V
SExPWWtBQUE0VFFBQUJBQgpaUFkxZXAzWW9Kc2FBMFRZamN5VVJ3QUFDalVBQUJBQmJTVG1IYkpV
OGtvWEpBMzhqOFFLR0FBQU56VUFBQkFCQW00RDlRSVhYWG5aCnUvdWlRMWtwQWdBQWlEVUFBQkFC
Y1I5VUxITG9peHlFTnEyZU4zTDZHd0FBempVQUFCQUJGNzFWU0F4OUVhbGh2VVB2dUk2YzRBQUEK
K0RVQUFCQUJ1MjEwWVUwMjkydXF4eVkzbHdtdENRQUFLallBQUJBQm9IaWprZU9ZdnRBWlVLSFh1
NDFWaFFBQVh6WUFBQkFCdkxDSQp1djZXTzdVeTZkeUpXWjZ4Y3dBQWtqWUFBQkFCUHJpR1l4ZkVs
OXhaejd4SnFqTktMUUFBMURZQUFCQUIrVVNHQzlmbE56V3BKVmU4ClJZd1R0d0FBQURjQUFCQUJ2
bTVwM29oVEUrWFpzR3pZWUVoekJ3QUFPRGNBQUJBQkZoRjVyT212RVlLNUNsdGdMNXRRTWdBQWZ6
Y0EKQUJBQmphcExtZDUyTi90QlU0WXVBNlVyRFFBQXFUY0FBQkFCSnM1dWJMZDBUTkZoNUpCRkNp
SjhYZ0FBK1RjQUFCQUJ3eVNTZXQ2RwpNaHhONUV6dGR0aU0vZ0FBU1RnQUFCQUJ3UFR5MUc5RVNY
ZHREUUhsUC9jRll3QUFqamdBQUJBQmJJS2lCeFJ2Y1R4WEs4VTZpN1JuCmR3QUF5emdBQUJBQnhj
cjMzQzFnNEtJQ28zd1dFdVcwbmdBQUhqa0FBQkFCa1E1TmZJOVhmODNBTlZwU0lTZ1ZLd0FBYkRr
QUFCQUIKK1lhVXNjcUcxY1hJQW40TUl4eDFKQUFBdkRrQUFCQUJ1aGYwVkR5Tm1rbGFOOW4rNTk1
cHZ3QUE1emtBQUJBQnVVaE1ETW9yN1VqSQpPeGZ2b1F1RWpRQUFLem9BQUJBQitoRTduR1lsZlMr
VG9pZzByQnE1YndBQVpUb0FBQkFCTkJoZ0hYcUZuZjF0bjNtUE9tV2J6Z0FBCnN6b0FBQkFCV21T
Qy9EVUIrS0UwTkdKalpZUy8zd0FBM2pvQUFCQUJjUTEzN2dXVWN6MTY3T21JY1BFVTJBQUFGanNB
QUJBQmhHNm4KL3ZHcGNWQnMzZlZTWDZuNExRQUFVenNBQUJBQmRoQTN0dGJQTXFwTVM3anlPaG9n
RXdBQWd6c0FBQkFCSVEySnRsWkg4Um5uYkN3eAo1RmxySGdBQXJqc0FBQkFCd09EYTNhL2pIYm9N
WFdQcDlyUUhhQUFBL2pzQUFCQUJ4dVgrZ1lOamJtS1ZyWEg5T1dGY3RnQUFRendBCkFCQUI0Z05J
SHAxd0s2MzBjbzFOWEZ6eEtnQUFhandBQUJBQkVxRWVTVGs2VTdwS2picVJVYVppWEFBQXV6d0FB
QkFCdnpUQzQ0TGEKNmxLWGlleklDczBkdmdBQTh3QUFBR3BEQUFBQVl6cGNZWEJ3YkdWcGJuUmxj
bTVoYkZ4cGJtTnNkV1JsWEdOdmNtVm5jbUZ3YUdsagpjMXhqWjNCa1ptOXdaWEpoZEc5eWRHRmli
R1V1YUFCak9seGhjSEJzWldsdWRHVnlibUZzWEdsdVkyeDFaR1ZjWTI5eVpXZHlZWEJvCmFXTnpY
R05uYVcxaFoyVXVhQUJqT2x4aGNIQnNaV2x1ZEdWeWJtRnNYR2x1WTJ4MVpHVmNZMjl5WldadmRX
NWtZWFJwYjI1Y1kyWmgKY25KaGVTNW9BR002WEdGd2NHeGxhVzUwWlhKdVlXeGNhVzVqYkhWa1pW
eGpiM0psWjNKaGNHaHBZM05jWTJkd1pHWnpZMkZ1Ym1WeQpMbWdBWXpwY1lYQndiR1ZwYm5SbGNt
NWhiRnhwYm1Oc2RXUmxYR052Y21WbmNtRndhR2xqYzF4aloyUnBjM0JzWVhsc2FYTjBMbWdBCll6
cGNZWEJ3YkdWcGJuUmxjbTVoYkZ4cGJtTnNkV1JsWEdOdmNtVm1iM1Z1WkdGMGFXOXVYR05tWW5W
dVpHeGxMbWdBWXpwY2NISnYKWjNKaGJTQm1hV3hsY3lBb2VEZzJLVnh0YVdOeWIzTnZablFnZG1s
emRXRnNJSE4wZFdScGJ5QTRYSFpqWEhCc1lYUm1iM0p0YzJScgpYR2x1WTJ4MVpHVmNiMnhsYVdS
c0xtZ0FZenBjY0hKdlozSmhiU0JtYVd4bGN5QW9lRGcyS1Z4dGFXTnliM052Wm5RZ2RtbHpkV0Zz
CklITjBkV1JwYnlBNFhIWmpYR2x1WTJ4MVpHVmNkM1JwYldVdWFXNXNBR002WEhCeWIyZHlZVzBn
Wm1sc1pYTWdLSGc0TmlsY2JXbGoKY205emIyWjBJSFpwYzNWaGJDQnpkSFZrYVc4Z09GeDJZMXh3
YkdGMFptOXliWE5rYTF4cGJtTnNkV1JsWEhCemFIQmhZMnMwTG1nQQpZenBjWVhCd2JHVnBiblJs
Y201aGJGeHBibU5zZFdSbFhHTnZjbVZuY21Gd2FHbGpjMXhqWjJOdmJuUmxlSFJ3WVhSb0xtZ0FZ
enBjCllYQndiR1ZwYm5SbGNtNWhiRnhwYm1Oc2RXUmxYR052Y21WbmNtRndhR2xqYzF4aloyTnZi
bVpwWnk1b0FHTTZYR0Z3Y0d4bGFXNTAKWlhKdVlXeGNhVzVqYkhWa1pWeGpiM0psWjNKaGNHaHBZ
M05jWTJkd1pHWnpkSEpsWVcwdWFBQmpPbHh3Y205bmNtRnRJR1pwYkdWegpJQ2g0T0RZcFhHMXBZ
M0p2YzI5bWRDQjJhWE4xWVd3Z2MzUjFaR2x2SURoY2RtTmNjR3hoZEdadmNtMXpaR3RjYVc1amJI
VmtaVngzCmFXNXpiMk5yTG1nQVl6cGNZWEJ3YkdWcGJuUmxjbTVoYkZ4cGJtTnNkV1JsWEdOdmNt
Vm5jbUZ3YUdsamMxeGpaM04wZVhCbGN5NW8KQUdNNlhHRndjR3hsYVc1MFpYSnVZV3hjYVc1amJI
VmtaVnhqYjNKbFozSmhjR2hwWTNOY1kyZGpiR2x3TG1nQVl6cGNjSEp2WjNKaApiU0JtYVd4bGN5
QW9lRGcyS1Z4dGFXTnliM052Wm5RZ2RtbHpkV0ZzSUhOMGRXUnBieUE0WEhaalhIQnNZWFJtYjNK
dGMyUnJYR2x1ClkyeDFaR1ZjZDJsdVkzSjVjSFF1YUFCak9seGhjSEJzWldsdWRHVnlibUZzWEds
dVkyeDFaR1ZjWTI5eVpXZHlZWEJvYVdOelhHTm4KWm05dWRHTmhZMmhsTG1nQVl6cGNZWEJ3YkdW
cGJuUmxjbTVoYkZ4cGJtTnNkV1JsWEdOdmNtVm5jbUZ3YUdsamMxeGpaMlZ5Y205eQpMbWdBWXpw
Y1lYQndiR1ZwYm5SbGNtNWhiRnhwYm1Oc2RXUmxYR052Y21WbWIzVnVaR0YwYVc5dVhHTm1aR0Yw
WlM1b0FHTTZYSEJ5CmIyZHlZVzBnWm1sc1pYTWdLSGc0TmlsY2JXbGpjbTl6YjJaMElIWnBjM1Zo
YkNCemRIVmthVzhnT0Z4MlkxeHdiR0YwWm05eWJYTmsKYTF4cGJtTnNkV1JsWEcxdGMzbHpkR1Z0
TG1nQVl6cGNZWEJ3YkdWcGJuUmxjbTVoYkZ4cGJtTnNkV1JsWEdObWJtVjBkMjl5YTF4agpablZ5
YkdOdmJtNWxZM1JwYjI1d2NtbDJMbWdBWXpwY1lYQndiR1ZwYm5SbGNtNWhiRnhwYm1Oc2RXUmxY
R052Y21WbmNtRndhR2xqCmMxeGpaMlp2Ym5RdWFBQmpPbHhoY0hCc1pXbHVkR1Z5Ym1Gc1hHbHVZ
MngxWkdWY1kyWnVaWFIzYjNKclhHTm1kWEpzY0hKdmRHOWoKYjJ4d2NtbDJMbWdBWXpwY2NISnZa
M0poYlNCbWFXeGxjeUFvZURnMktWeHRhV055YjNOdlpuUWdkbWx6ZFdGc0lITjBkV1JwYnlBNApY
SFpqWEdsdVkyeDFaR1ZjYzJsbmJtRnNMbWdBWXpwY2NISnZaM0poYlNCbWFXeGxjeUFvZURnMktW
eHRhV055YjNOdlpuUWdkbWx6CmRXRnNJSE4wZFdScGJ5QTRYSFpqWEhCc1lYUm1iM0p0YzJSclhH
bHVZMngxWkdWY2NISnZjR2xrYkM1b0FHTTZYSEJ5YjJkeVlXMGcKWm1sc1pYTWdLSGc0TmlsY2JX
bGpjbTl6YjJaMElIWnBjM1ZoYkNCemRIVmthVzhnT0Z4MlkxeHdiR0YwWm05eWJYTmthMXhwYm1O
cwpkV1JsWEhkcGJuVnpaWEl1YUFCak9seGhjSEJzWldsdWRHVnlibUZzWEdsdVkyeDFaR1ZjWTJa
dVpYUjNiM0pyWEdObWRYSnNZWFYwCmFHTm9ZV3hzWlc1blpYQnlhWFl1YUFCak9seGhjSEJzWlds
dWRHVnlibUZzWEdsdVkyeDFaR1ZjWTI5eVpXZHlZWEJvYVdOelhHTm4KZEdWNGRHTnNhWEJ3YVc1
bkxtZ0FZenBjWVhCd2JHVnBiblJsY201aGJGeHBibU5zZFdSbFhHTm1ibVYwZDI5eWExeGpablZ5
YkdOeQpaV1JsYm5ScFlXeHdjbWwyTG1nQVl6cGNZWEJ3YkdWcGJuUmxjbTVoYkZ4cGJtTnNkV1Js
WEdOdmNtVm1iM1Z1WkdGMGFXOXVYR05tCmRYSnNZV05qWlhOekxtZ0FZenBjWVhCd2JHVnBiblJs
Y201aGJGeHBibU5zZFdSbFhITmxZM1Z5YVhSNVhITmxZM1Z5YVhSNUxtZ0EKWXpwY2NISnZaM0po
YlNCbWFXeGxjeUFvZURnMktWeHRhV055YjNOdlpuUWdkbWx6ZFdGc0lITjBkV1JwYnlBNFhIWmpY
R2x1WTJ4MQpaR1ZjZEdsdFpTNXBibXdBWXpwY1lYQndiR1ZwYm5SbGNtNWhiRnhwYm1Oc2RXUmxY
R052Y21WbmNtRndhR2xqYzF4aloyTnZiRzl5CmRISmhibk5tYjNKdExtZ0FZenBjWVhCd2JHVnBi
blJsY201aGJGeHBibU5zZFdSbFhHTnZjbVZtYjNWdVpHRjBhVzl1WEdObVpYSnkKYjNJdWFBQmpP
bHhoY0hCc1pXbHVkR1Z5Ym1Gc1hHbHVZMngxWkdWY1kyOXlaV2R5WVhCb2FXTnpYR05uWTI5c2Iz
SnpjR0ZqWlhCeQphWFpoZEdVdWFBQmpPbHhoY0hCc1pXbHVkR1Z5Ym1Gc1hHbHVZMngxWkdWY1ky
OXlaV2R5WVhCb2FXTnpYR05uY0dSbWMzUnlhVzVuCkxtZ0FZenBjY0hKdlozSmhiU0JtYVd4bGN5
QW9lRGcyS1Z4dGFXTnliM052Wm5RZ2RtbHpkV0ZzSUhOMGRXUnBieUE0WEhaalhIQnMKWVhSbWIz
SnRjMlJyWEdsdVkyeDFaR1ZjYm1Jek1DNW9BR002WEhCeWIyZHlZVzBnWm1sc1pYTWdLSGc0Tmls
Y2JXbGpjbTl6YjJaMApJSFpwYzNWaGJDQnpkSFZrYVc4Z09GeDJZMXh3YkdGMFptOXliWE5rYTF4
cGJtTnNkV1JsWEhCdmNIQmhZMnN1YUFCak9seGhjSEJzClpXbHVkR1Z5Ym1Gc1hHbHVZMngxWkdW
Y1kyWnVaWFIzYjNKclhHTm1kWEpzWTJGamFHVndjbWwyTG1nQVl6cGNZWEJ3YkdWcGJuUmwKY201
aGJGeHBibU5zZFdSbFhHTnZjbVZuY21Gd2FHbGpjMXhqWjJOc2FYQnRZWE5yTG1nQVl6cGNZWEJ3
YkdWcGJuUmxjbTVoYkZ4cApibU5zZFdSbFhHTm1ibVYwZDI5eWExeGpablZ5YkhKbGNYVmxjM1J3
Y21sMkxtZ0FZenBjY0hKdlozSmhiU0JtYVd4bGN5QW9lRGcyCktWeHRhV055YjNOdlpuUWdkbWx6
ZFdGc0lITjBkV1JwYnlBNFhIWmpYR2x1WTJ4MVpHVmNjM1JrWkdWbUxtZ0FZenBjY0hKdlozSmgK
YlNCbWFXeGxjeUFvZURnMktWeHRhV055YjNOdlpuUWdkbWx6ZFdGc0lITjBkV1JwYnlBNFhIWmpY
SEJzWVhSbWIzSnRjMlJyWEdsdQpZMngxWkdWY2IyeGxNaTVvQUdNNlhIQnliMmR5WVcwZ1ptbHNa
WE1nS0hnNE5pbGNiV2xqY205emIyWjBJSFpwYzNWaGJDQnpkSFZrCmFXOGdPRngyWTF4d2JHRjBa
bTl5YlhOa2ExeHBibU5zZFdSbFhIZHBibVZ5Y205eUxtZ0FZenBjWVhCd2JHVnBiblJsY201aGJG
eHAKYm1Oc2RXUmxYSFZ1YVdOdlpHVmNkWFJtTVRZdWFBQmpPbHh3Y205bmNtRnRJR1pwYkdWeklD
aDRPRFlwWEcxcFkzSnZjMjltZENCMgphWE4xWVd3Z2MzUjFaR2x2SURoY2RtTmNjR3hoZEdadmNt
MXpaR3RjYVc1amJIVmtaVnh2WW1waVlYTmxMbWdBWXpwY2NISnZaM0poCmJTQm1hV3hsY3lBb2VE
ZzJLVnh0YVdOeWIzTnZablFnZG1semRXRnNJSE4wZFdScGJ5QTRYSFpqWEhCc1lYUm1iM0p0YzJS
clhHbHUKWTJ4MVpHVmNZMmQxYVdRdWFBQmpPbHhoY0hCc1pXbHVkR1Z5Ym1Gc1hHbHVZMngxWkdW
Y2RXNXBZMjlrWlZ4MWRHWmZiMnhrTG1nQQpZenBjY0hKdlozSmhiU0JtYVd4bGN5QW9lRGcyS1Z4
dGFXTnliM052Wm5RZ2RtbHpkV0ZzSUhOMGRXUnBieUE0WEhaalhHbHVZMngxClpHVmNjM1JrYkds
aUxtZ0FZenBjWVhCd2JHVnBiblJsY201aGJGeHBibU5zZFdSbFhIVnVhV052WkdWY2RYWmxjbk5w
YjI0dWFBQmoKT2x4d2NtOW5jbUZ0SUdacGJHVnpJQ2g0T0RZcFhHMXBZM0p2YzI5bWRDQjJhWE4x
WVd3Z2MzUjFaR2x2SURoY2RtTmNhVzVqYkhWawpaVnhzYVcxcGRITXVhQUJqT2x4aGNIQnNaV2x1
ZEdWeWJtRnNYR2x1WTJ4MVpHVmNZMlp1WlhSM2IzSnJYR05tYUhSMGNHMWxjM05oCloyVndjbWwy
TG1nQVl6cGNZWEJ3YkdWcGJuUmxjbTVoYkZ4cGJtTnNkV1JsWEdObWJtVjBkMjl5YTF4alptaDBk
SEJ0WlhOellXZGwKTG1nQVl6cGNjSEp2WjNKaGJTQm1hV3hsY3lBb2VEZzJLVnh0YVdOeWIzTnZa
blFnZG1semRXRnNJSE4wZFdScGJ5QTRYSFpqWEdsdQpZMngxWkdWY2MzUmthVzh1YUFCak9seGhj
SEJzWldsdWRHVnlibUZzWEdsdVkyeDFaR1ZjWTI5eVpXZHlZWEJvYVdOelhHTm5ZbUZ6ClpYQnlh
WFpoZEdVdWFBQmpPbHh3Y205bmNtRnRJR1pwYkdWeklDaDRPRFlwWEcxcFkzSnZjMjltZENCMmFY
TjFZV3dnYzNSMVpHbHYKSURoY2RtTmNjR3hoZEdadmNtMXpaR3RjYVc1amJIVmtaVnh4YjNNdWFB
QmpPbHh3Y205bmNtRnRJR1pwYkdWeklDaDRPRFlwWEcxcApZM0p2YzI5bWRDQjJhWE4xWVd3Z2Mz
UjFaR2x2SURoY2RtTmNjR3hoZEdadmNtMXpaR3RjYVc1amJIVmtaVngzYVc1d1pYSm1MbWdBCll6
cGNZWEJ3YkdWcGJuUmxjbTVoYkZ4cGJtTnNkV1JsWEdOdmNtVm5jbUZ3YUdsamMxeGpaMlp2Ym5S
MWJtbGpiMlJsYzNWd2NHOXkKZEM1b0FHTTZYSEJ5YjJkeVlXMGdabWxzWlhNZ0tIZzROaWxjYlds
amNtOXpiMlowSUhacGMzVmhiQ0J6ZEhWa2FXOGdPRngyWTF4dwpiR0YwWm05eWJYTmthMXhwYm1O
c2RXUmxYR052Ylcxa2JHY3VhQUJqT2x4aGNIQnNaV2x1ZEdWeWJtRnNYR2x1WTJ4MVpHVmNZMjl5
ClpXZHlZWEJvYVdOelhHTm5ZMjl1ZEdWNGRHZHpkR0YwWlM1b0FHTTZYSEJ5YjJkeVlXMGdabWxz
WlhNZ0tIZzROaWxjYldsamNtOXoKYjJaMElIWnBjM1ZoYkNCemRIVmthVzhnT0Z4MlkxeHBibU5z
ZFdSbFhHMWhkR2d1YUFCak9seGplV2QzYVc1Y2FHOXRaVnhqYldGeQpjbWx1WEhOdmRYSmpaVnh6
ZG01Y2QyVmlhMmwwWEdsdWRHVnlibUZzWEhkbFltdHBkSE41YzNSbGJXbHVkR1Z5Wm1GalpWeDNh
VzVjCmQyVmlhMmwwYzNsemRHVnRhVzUwWlhKbVlXTmxMbU53Y0FCak9seGhjSEJzWldsdWRHVnli
bUZzWEdsdVkyeDFaR1ZjWTI5eVpXZHkKWVhCb2FXTnpYR05uYkdGNVpYSXVhQUJqT2x4aGNIQnNa
V2x1ZEdWeWJtRnNYR2x1WTJ4MVpHVmNZMjl5WldkeVlYQm9hV056WEdObgpabTl1ZEhCeWFYWmhk
R1V1YUFCak9seGhjSEJzWldsdWRHVnlibUZzWEdsdVkyeDFaR1ZjWTI5eVpXZHlZWEJvYVdOelhH
Tm5ZM0o1CmNIUnZMbWdBWXpwY1lYQndiR1ZwYm5SbGNtNWhiRnhwYm1Oc2RXUmxYR052Y21WbWIz
VnVaR0YwYVc5dVhHTm1jM1J5YVc1bkxtZ0EKWXpwY1lYQndiR1ZwYm5SbGNtNWhiRnhwYm1Oc2RX
UmxYR052Y21WbmNtRndhR2xqYzF4aloyWnZiblJqY21WaGRHVXVhQUJqT2x4aApjSEJzWldsdWRH
VnlibUZzWEdsdVkyeDFaR1ZjWTI5eVpXWnZkVzVrWVhScGIyNWNZMlpqYUdGeVlXTjBaWEp6WlhR
dWFBQmpPbHhoCmNIQnNaV2x1ZEdWeWJtRnNYR2x1WTJ4MVpHVmNZMjl5WldkeVlYQm9hV056WEdO
blptOXVkR2x1Wm04dWFBQmpPbHhoY0hCc1pXbHUKZEdWeWJtRnNYR2x1WTJ4MVpHVmNZMjl5Wlda
dmRXNWtZWFJwYjI1Y1kyWndjbTl3WlhKMGVXeHBjM1F1YUFCak9seGhjSEJzWldsdQpkR1Z5Ym1G
c1hHbHVZMngxWkdWY1kyOXlaV1p2ZFc1a1lYUnBiMjVjWTJaemRISmxZVzB1YUFCak9seGhjSEJz
WldsdWRHVnlibUZzClhHbHVZMngxWkdWY1kyOXlaV1p2ZFc1a1lYUnBiMjVjWTJadFpYTnpZV2Rs
Y0c5eWRDNW9BR002WEdGd2NHeGxhVzUwWlhKdVlXeGMKYVc1amJIVmtaVnhqYjNKbFptOTFibVJo
ZEdsdmJseGpablZ5YkM1b0FHTTZYSEJ5YjJkeVlXMGdabWxzWlhNZ0tIZzROaWxjYldsagpjbTl6
YjJaMElIWnBjM1ZoYkNCemRIVmthVzhnT0Z4MlkxeHdiR0YwWm05eWJYTmthMXhwYm1Oc2RXUmxY
SE5sY25ad2NtOTJMbWdBCll6cGNZWEJ3YkdWcGJuUmxjbTVoYkZ4cGJtTnNkV1JsWEhWdWFXTnZa
R1ZjZFdOdmJtWnBaeTVvQUdNNlhHRndjR3hsYVc1MFpYSnUKWVd4Y2FXNWpiSFZrWlZ4a2FYTndZ
WFJqYUZ4a2FYTndZWFJqYUM1b0FHTTZYR0Z3Y0d4bGFXNTBaWEp1WVd4Y2FXNWpiSFZrWlZ4agpi
M0psWjNKaGNHaHBZM05jWTJkbWIyNTBkbUZ5YVdGMGFXOXVjeTVvQUdNNlhHRndjR3hsYVc1MFpY
SnVZV3hjYVc1amJIVmtaVnhrCmFYTndZWFJqYUZ4aVlYTmxMbWdBWXpwY2NISnZaM0poYlNCbWFX
eGxjeUFvZURnMktWeHRhV055YjNOdlpuUWdkbWx6ZFdGc0lITjAKZFdScGJ5QTRYSFpqWEhCc1lY
Um1iM0p0YzJSclhHbHVZMngxWkdWY2MzUnlZV3hwWjI0dWFBQmpPbHhoY0hCc1pXbHVkR1Z5Ym1G
cwpYR2x1WTJ4MVpHVmNZMjl5WldadmRXNWtZWFJwYjI1Y1kyWmlhWFIyWldOMGIzSXVhQUJqT2x4
d2NtOW5jbUZ0SUdacGJHVnpJQ2g0Ck9EWXBYRzFwWTNKdmMyOW1kQ0IyYVhOMVlXd2djM1IxWkds
dklEaGNkbU5jY0d4aGRHWnZjbTF6Wkd0Y2FXNWpiSFZrWlZ4M2FXNXkKWldjdWFBQmpPbHhoY0hC
c1pXbHVkR1Z5Ym1Gc1hHbHVZMngxWkdWY1kyOXlaV2R5WVhCb2FXTnpYR05uYzNKbFoybHZiaTVv
QUdNNgpYR0Z3Y0d4bGFXNTBaWEp1WVd4Y2FXNWpiSFZrWlZ4amIzSmxaM0poY0docFkzTmNZMmR6
YjJaMGJXRnpheTVvQUdNNlhHRndjR3hsCmFXNTBaWEp1WVd4Y2FXNWpiSFZrWlZ4amIzSmxabTkx
Ym1SaGRHbHZibHhqWm5Cc2RXZHBiaTVvQUdNNlhHRndjR3hsYVc1MFpYSnUKWVd4Y2FXNWpiSFZr
WlZ4a2FYTndZWFJqYUZ4dlltcGxZM1F1YUFCak9seGhjSEJzWldsdWRHVnlibUZzWEdsdVkyeDFa
R1ZjWTI5eQpaV1p2ZFc1a1lYUnBiMjVjWTJaallXeGxibVJoY2k1b0FHTTZYR0Z3Y0d4bGFXNTBa
WEp1WVd4Y2FXNWpiSFZrWlZ4amIzSmxaM0poCmNHaHBZM05jWTJkblpXOXRaWFJ5ZVhCeWFYWmhk
R1V1YUFCak9seGhjSEJzWldsdWRHVnlibUZzWEdsdVkyeDFaR1ZjWTI5eVpXWnYKZFc1a1lYUnBi
MjVjWTJac2IyTmhiR1V1YUFCak9seHdjbTluY21GdElHWnBiR1Z6SUNoNE9EWXBYRzFwWTNKdmMy
OW1kQ0IyYVhOMQpZV3dnYzNSMVpHbHZJRGhjZG1OY2NHeGhkR1p2Y20xelpHdGNhVzVqYkhWa1pW
eHdjMmh3WVdOck9DNW9BR002WEdGd2NHeGxhVzUwClpYSnVZV3hjYVc1amJIVmtaVnhqYjNKbFpt
OTFibVJoZEdsdmJseGpabVJwWTNScGIyNWhjbmt1YUFCak9seGhjSEJzWldsdWRHVnkKYm1Gc1hH
bHVZMngxWkdWY1kyWnVaWFIzYjNKclhHTm1hSFIwY0dOdmIydHBaWE53Y21sMkxtZ0FZenBjWVhC
d2JHVnBiblJsY201aApiRnhwYm1Oc2RXUmxYR05tYm1WMGQyOXlhMXhqWm01bGRIZHZjbXRrWlda
ekxtZ0FZenBjY0hKdlozSmhiU0JtYVd4bGN5QW9lRGcyCktWeHRhV055YjNOdlpuUWdkbWx6ZFdG
c0lITjBkV1JwYnlBNFhIWmpYSEJzWVhSbWIzSnRjMlJyWEdsdVkyeDFaR1ZjY25CakxtZ0EKWXpw
Y1lYQndiR1ZwYm5SbGNtNWhiRnhwYm1Oc2RXUmxYR052Ym1ScGRHbHZibUZzYldGamNtOXpMbWdB
WXpwY1lYQndiR1ZwYm5SbApjbTVoYkZ4cGJtTnNkV1JsWEdOdmNtVm5jbUZ3YUdsamMxeGpaMk5z
YVhCemRISnZhMlV1YUFCak9seGhjSEJzWldsdWRHVnlibUZzClhHbHVZMngxWkdWY1kyOXlaV1p2
ZFc1a1lYUnBiMjVjWTI5eVpXWnZkVzVrWVhScGIyNHVhQUJqT2x4d2NtOW5jbUZ0SUdacGJHVnoK
SUNoNE9EWXBYRzFwWTNKdmMyOW1kQ0IyYVhOMVlXd2djM1IxWkdsdklEaGNkbU5jYVc1amJIVmta
Vnh6ZVhOY2RIbHdaWE11YUFCagpPbHh3Y205bmNtRnRJR1pwYkdWeklDaDRPRFlwWEcxcFkzSnZj
MjltZENCMmFYTjFZV3dnYzNSMVpHbHZJRGhjZG1OY2NHeGhkR1p2CmNtMXpaR3RjYVc1amJIVmta
Vnh5Y0dOa1kyVXVhQUJqT2x4aGNIQnNaV2x1ZEdWeWJtRnNYR2x1WTJ4MVpHVmNZMjl5WldkeVlY
Qm8KYVdOelhHTm5aR0Z6YUM1b0FHTTZYSEJ5YjJkeVlXMGdabWxzWlhNZ0tIZzROaWxjYldsamNt
OXpiMlowSUhacGMzVmhiQ0J6ZEhWawphVzhnT0Z4MlkxeHdiR0YwWm05eWJYTmthMXhwYm1Oc2RX
UmxYSGRwYm5OMll5NW9BR002WEdGd2NHeGxhVzUwWlhKdVlXeGNhVzVqCmJIVmtaVnhqYjNKbFoz
SmhjR2hwWTNOY1kyZHdZWFIwWlhKdUxtZ0FZenBjY0hKdlozSmhiU0JtYVd4bGN5QW9lRGcyS1Z4
dGFXTnkKYjNOdlpuUWdkbWx6ZFdGc0lITjBkV1JwYnlBNFhIWmpYSEJzWVhSbWIzSnRjMlJyWEds
dVkyeDFaR1ZjZDJsdWFXOWpkR3d1YUFCagpPbHhoY0hCc1pXbHVkR1Z5Ym1Gc1hHbHVZMngxWkdW
Y1kyOXlaV2R5WVhCb2FXTnpYR05uWTI5dWRHVjRkR1JsYkdWbllYUmxMbWdBCll6cGNZWEJ3YkdW
cGJuUmxjbTVoYkZ4cGJtTnNkV1JsWEdScGMzQmhkR05vWEdkeWIzVndMbWdBWXpwY1lYQndiR1Zw
Ym5SbGNtNWgKYkZ4cGJtTnNkV1JsWEdOdmNtVm1iM1Z1WkdGMGFXOXVYR05tZFhWcFpDNW9BR002
WEdGd2NHeGxhVzUwWlhKdVlXeGNhVzVqYkhWawpaVnhqYjNKbGRtbGtaVzljWTNad2FYaGxiR0ox
Wm1abGNpNW9BR002WEdGd2NHeGxhVzUwWlhKdVlXeGNhVzVqYkhWa1pWeGpiM0psClptOTFibVJo
ZEdsdmJseGpabUpoYzJVdWFBQmpPbHhoY0hCc1pXbHVkR1Z5Ym1Gc1hHbHVZMngxWkdWY1kyOXla
WFpwWkdWdlhHTjIKYVcxaFoyVmlkV1ptWlhJdWFBQmpPbHhoY0hCc1pXbHVkR1Z5Ym1Gc1hHbHVZ
MngxWkdWY1kyOXlaV2R5WVhCb2FXTnpYR05uY21WdQpaR1Z5YVc1bmMzUmhkR1V1YUFCak9seGhj
SEJzWldsdWRHVnlibUZzWEdsdVkyeDFaR1ZjWTI5eVpXWnZkVzVrWVhScGIyNWNZMlp1CmRXMWla
WEl1YUFCak9seGhjSEJzWldsdWRHVnlibUZzWEdsdVkyeDFaR1ZjWTI5eVpXWnZkVzVrWVhScGIy
NWNZMlprWVhSbFptOXkKYldGMGRHVnlMbWdBWXpwY1lYQndiR1ZwYm5SbGNtNWhiRnhwYm1Oc2RX
UmxYSFJoY21kbGRHTnZibVJwZEdsdmJtRnNjeTVvQUdNNgpYSEJ5YjJkeVlXMGdabWxzWlhNZ0tI
ZzROaWxjYldsamNtOXpiMlowSUhacGMzVmhiQ0J6ZEhWa2FXOGdPRngyWTF4cGJtTnNkV1JsClhH
RnpjMlZ5ZEM1b0FHTTZYSEJ5YjJkeVlXMGdabWxzWlhNZ0tIZzROaWxjYldsamNtOXpiMlowSUha
cGMzVmhiQ0J6ZEhWa2FXOGcKT0Z4MlkxeHdiR0YwWm05eWJYTmthMXhwYm1Oc2RXUmxYSE53WldO
emRISnBibWR6TG1nQVl6cGNZWEJ3YkdWcGJuUmxjbTVoYkZ4cApibU5zZFdSbFhHTnZjbVYyYVdS
bGIxeGpkbUoxWm1abGNpNW9BR002WEdGd2NHeGxhVzUwWlhKdVlXeGNhVzVqYkhWa1pWeHpkR1Jw
CmJuUXVhQUJqT2x4d2NtOW5jbUZ0SUdacGJHVnpJQ2g0T0RZcFhHMXBZM0p2YzI5bWRDQjJhWE4x
WVd3Z2MzUjFaR2x2SURoY2RtTmMKYVc1amJIVmtaVnhsY25KdWJ5NW9BR002WEhCeWIyZHlZVzBn
Wm1sc1pYTWdLSGc0TmlsY2JXbGpjbTl6YjJaMElIWnBjM1ZoYkNCegpkSFZrYVc4Z09GeDJZMXh3
YkdGMFptOXliWE5rYTF4cGJtTnNkV1JsWEdKaGMyVjBjMlF1YUFCak9seGhjSEJzWldsdWRHVnli
bUZzClhHbHVZMngxWkdWY1kyOXlaWFpwWkdWdlhHTjJjbVYwZFhKdUxtZ0FZenBjWVhCd2JHVnBi
blJsY201aGJGeHBibU5zZFdSbFhHTnYKY21WbmNtRndhR2xqYzF4alozQmtabU52Ym5SbGJuUnpk
SEpsWVcwdWFBQmpPbHh3Y205bmNtRnRJR1pwYkdWeklDaDRPRFlwWEcxcApZM0p2YzI5bWRDQjJh
WE4xWVd3Z2MzUjFaR2x2SURoY2RtTmNhVzVqYkhWa1pWeG1iRzloZEM1b0FHTTZYSEJ5YjJkeVlX
MGdabWxzClpYTWdLSGc0TmlsY2JXbGpjbTl6YjJaMElIWnBjM1ZoYkNCemRIVmthVzhnT0Z4Mlkx
eHBibU5zZFdSbFhHTnlkSGR5Ymk1b0FHTTYKWEdGd2NHeGxhVzUwWlhKdVlXeGNhVzVqYkhWa1pW
eGpiM0psWm05MWJtUmhkR2x2Ymx4alpuTjBjbWx1WjJWdVkyOWthVzVuWlhoMApMbWdBWXpwY1lY
QndiR1ZwYm5SbGNtNWhiRnhwYm1Oc2RXUmxYR052Y21WbWIzVnVaR0YwYVc5dVhHTm1jMjlqYTJW
MExtZ0FZenBjCmNISnZaM0poYlNCbWFXeGxjeUFvZURnMktWeHRhV055YjNOdlpuUWdkbWx6ZFdG
c0lITjBkV1JwYnlBNFhIWmpYSEJzWVhSbWIzSnQKYzJSclhHbHVZMngxWkdWY2NITm9jR0ZqYXpF
dWFBQmpPbHhoY0hCc1pXbHVkR1Z5Ym1Gc1hHbHVZMngxWkdWY1kyWnVaWFIzYjNKcgpYR05tYm1W
MGQyOXlhMk52Ym01bFkzUnBiMjVqWVdOb1pYQnlhWFl1YUFCak9seGhjSEJzWldsdWRHVnlibUZz
WEdsdVkyeDFaR1ZjClkyOXlaV1p2ZFc1a1lYUnBiMjVjWTJaeWRXNXNiMjl3TG1nQVl6cGNZWEJ3
YkdWcGJuUmxjbTVoYkZ4cGJtTnNkV1JsWEdScGMzQmgKZEdOb1hIUnBiV1V1YUFCak9seGhjSEJz
WldsdWRHVnlibUZzWEdsdVkyeDFaR1ZjWTI5eVpXWnZkVzVrWVhScGIyNWNZMlowY21WbApMbWdB
WXpwY1lYQndiR1ZwYm5SbGNtNWhiRnhwYm1Oc2RXUmxYR052Y21WbmNtRndhR2xqYzF4aloyZHpk
R0YwWlM1b0FHTTZYSEJ5CmIyZHlZVzBnWm1sc1pYTWdLSGc0TmlsY2JXbGpjbTl6YjJaMElIWnBj
M1ZoYkNCemRIVmthVzhnT0Z4MlkxeHBibU5zZFdSbFhITjMKY0hKcGJuUm1MbWx1YkFCak9seGhj
SEJzWldsdWRHVnlibUZzWEdsdVkyeDFaR1ZjWTI5eVpXWnZkVzVrWVhScGIyNWNZMlp1YjNScApa
bWxqWVhScGIyNWpaVzUwWlhJdWFBQmpPbHh3Y205bmNtRnRJR1pwYkdWeklDaDRPRFlwWEcxcFkz
SnZjMjltZENCMmFYTjFZV3dnCmMzUjFaR2x2SURoY2RtTmNjR3hoZEdadmNtMXpaR3RjYVc1amJI
VmtaVnh0WTNndWFBQmpPbHh3Y205bmNtRnRJR1pwYkdWeklDaDQKT0RZcFhHMXBZM0p2YzI5bWRD
QjJhWE4xWVd3Z2MzUjFaR2x2SURoY2RtTmNjR3hoZEdadmNtMXpaR3RjYVc1amJIVmtaVngzYVc1
egpjRzl2YkM1b0FHTTZYR0Z3Y0d4bGFXNTBaWEp1WVd4Y2FXNWpiSFZrWlZ4amIzSmxaM0poY0do
cFkzTmNZMmRqYkdsd2MzUmhZMnN1CmFBQmpPbHh3Y205bmNtRnRJR1pwYkdWeklDaDRPRFlwWEcx
cFkzSnZjMjltZENCMmFYTjFZV3dnYzNSMVpHbHZJRGhjZG1OY2NHeGgKZEdadmNtMXpaR3RjYVc1
amJIVmtaVnh2YkdWaGRYUnZMbWdBWXpwY2NISnZaM0poYlNCbWFXeGxjeUFvZURnMktWeHRhV055
YjNOdgpablFnZG1semRXRnNJSE4wZFdScGJ5QTRYSFpqWEhCc1lYUm1iM0p0YzJSclhHbHVZMngx
WkdWY2NISnphSFF1YUFCak9seGhjSEJzClpXbHVkR1Z5Ym1Gc1hHbHVZMngxWkdWY1kyOXlaV2R5
WVhCb2FXTnpYR05uYzJoaFpHbHVaeTVvQUdNNlhHRndjR3hsYVc1MFpYSnUKWVd4Y2FXNWpiSFZr
WlZ4amIzSmxaM0poY0docFkzTmNZMmRrWVhSaFkyOXVjM1Z0WlhJdWFBQmpPbHhoY0hCc1pXbHVk
R1Z5Ym1GcwpYR2x1WTJ4MVpHVmNZMjl5WldkeVlYQm9hV056WEdOblpuVnVZM1JwYjI0dWFBQmpP
bHhoY0hCc1pXbHVkR1Z5Ym1Gc1hHbHVZMngxClpHVmNZMjl5WldkeVlYQm9hV056WEdObmMzUjVi
R1V1YUFCak9seGhjSEJzWldsdWRHVnlibUZzWEdsdVkyeDFaR1ZjWTJadVpYUjMKYjNKclhHTm1i
bVYwZDI5eWEyVnljbTl5YzNCeWFYWXVhQUJqT2x4aGNIQnNaV2x1ZEdWeWJtRnNYR2x1WTJ4MVpH
VmNaR2x6Y0dGMApZMmhjYzJWdFlYQm9iM0psTG1nQVl6cGNjSEp2WjNKaGJTQm1hV3hsY3lBb2VE
ZzJLVnh0YVdOeWIzTnZablFnZG1semRXRnNJSE4wCmRXUnBieUE0WEhaalhIQnNZWFJtYjNKdGMy
UnJYR2x1WTJ4MVpHVmNkVzVyYm5kdUxtZ0FZenBjWVhCd2JHVnBiblJsY201aGJGeHAKYm1Oc2RX
UmxYR1JwYzNCaGRHTm9YSEYxWlhWbExtZ0FZenBjWVhCd2JHVnBiblJsY201aGJGeHBibU5zZFdS
bFhHTnZjbVZuY21GdwphR2xqYzF4alozQmtabU52Ym5SbGVIUXVhQUJqT2x4d2NtOW5jbUZ0SUda
cGJHVnpJQ2g0T0RZcFhHMXBZM0p2YzI5bWRDQjJhWE4xCllXd2djM1IxWkdsdklEaGNkbU5jY0d4
aGRHWnZjbTF6Wkd0Y2FXNWpiSFZrWlZ4M2FXNTJaWEl1YUFCak9seGhjSEJzWldsdWRHVnkKYm1G
c1hHbHVZMngxWkdWY1kyOXlaV2R5WVhCb2FXTnpYR05uWm05dWRHZHNlWEJvYzNWd2NHOXlkQzVv
QUdNNlhHRndjR3hsYVc1MApaWEp1WVd4Y2FXNWpiSFZrWlZ4amIzSmxaM0poY0docFkzTmNZMmRq
YjI1MFpYaDBkR1Y0ZEM1b0FHTTZYR0Z3Y0d4bGFXNTBaWEp1CllXeGNhVzVqYkhWa1pWeGpiM0ps
WjNKaGNHaHBZM05jWTJkamIyeHZjbU52WkdWbWNtRm5iV1Z1ZEM1b0FHTTZYSEJ5YjJkeVlXMGcK
Wm1sc1pYTWdLSGc0TmlsY2JXbGpjbTl6YjJaMElIWnBjM1ZoYkNCemRIVmthVzhnT0Z4MlkxeHdi
R0YwWm05eWJYTmthMXhwYm1OcwpkV1JsWEhKd1kyUmpaWEF1YUFCak9seGhjSEJzWldsdWRHVnli
bUZzWEdsdVkyeDFaR1ZjWTJadVpYUjNiM0pyWEdObWRYSnNZM0psClpHVnVkR2xoYkhOMGIzSmha
MlZ3Y21sMkxtZ0FZenBjWVhCd2JHVnBiblJsY201aGJGeHBibU5zZFdSbFhITjBaR0p2YjJ3dWFB
QmoKT2x4d2NtOW5jbUZ0SUdacGJHVnpJQ2g0T0RZcFhHMXBZM0p2YzI5bWRDQjJhWE4xWVd3Z2Mz
UjFaR2x2SURoY2RtTmNjR3hoZEdadgpjbTF6Wkd0Y2FXNWpiSFZrWlZ4dGMzaHRiQzVvQUdNNlhH
RndjR3hsYVc1MFpYSnVZV3hjYVc1amJIVmtaVnhrYVhOd1lYUmphRnh2CmJtTmxMbWdBWXpwY1lY
QndiR1ZwYm5SbGNtNWhiRnhwYm1Oc2RXUmxYR0YyWVdsc1lXSnBiR2wwZVcxaFkzSnZjeTVvQUdN
NlhIQnkKYjJkeVlXMGdabWxzWlhNZ0tIZzROaWxjYldsamNtOXpiMlowSUhacGMzVmhiQ0J6ZEhW
a2FXOGdPRngyWTF4d2JHRjBabTl5YlhOawphMXhwYm1Oc2RXUmxYSEpsWVhOdmJpNW9BR002WEdG
d2NHeGxhVzUwWlhKdVlXeGNhVzVqYkhWa1pWeGpiM0psWm05MWJtUmhkR2x2CmJseGpabUpwYm1G
eWVXaGxZWEF1YUFCak9seGhjSEJzWldsdWRHVnlibUZzWEdsdVkyeDFaR1ZjWVhaaGFXeGhZbWxz
YVhSNUxtZ0EKWXpwY2NISnZaM0poYlNCbWFXeGxjeUFvZURnMktWeHRhV055YjNOdlpuUWdkbWx6
ZFdGc0lITjBkV1JwYnlBNFhIWmpYSEJzWVhSbQpiM0p0YzJSclhHbHVZMngxWkdWY1pHeG5jeTVv
QUdNNlhIQnliMmR5WVcwZ1ptbHNaWE1nS0hnNE5pbGNiV2xqY205emIyWjBJSFpwCmMzVmhiQ0J6
ZEhWa2FXOGdPRngyWTF4d2JHRjBabTl5YlhOa2ExeHBibU5zZFdSbFhIZHBibTVzY3k1b0FHTTZY
R0Z3Y0d4bGFXNTAKWlhKdVlXeGNhVzVqYkhWa1pWeGhkbUZwYkdGaWFXeHBkSGxwYm5SbGNtNWhi
QzVvQUdNNlhIQnliMmR5WVcwZ1ptbHNaWE1nS0hnNApOaWxjYldsamNtOXpiMlowSUhacGMzVmhi
Q0J6ZEhWa2FXOGdPRngyWTF4d2JHRjBabTl5YlhOa2ExeHBibU5zZFdSbFhIZHBibk5qCllYSmtM
bWdBWXpwY2NISnZaM0poYlNCbWFXeGxjeUFvZURnMktWeHRhV055YjNOdlpuUWdkbWx6ZFdGc0lI
TjBkV1JwYnlBNFhIWmoKWEhCc1lYUm1iM0p0YzJSclhHbHVZMngxWkdWY2QybHVZbUZ6WlM1b0FH
TTZYSEJ5YjJkeVlXMGdabWxzWlhNZ0tIZzROaWxjYldsagpjbTl6YjJaMElIWnBjM1ZoYkNCemRI
VmthVzhnT0Z4MlkxeHdiR0YwWm05eWJYTmthMXhwYm1Oc2RXUmxYSGQwZVhCbGN5NW9BR002ClhI
QnliMmR5WVcwZ1ptbHNaWE1nS0hnNE5pbGNiV2xqY205emIyWjBJSFpwYzNWaGJDQnpkSFZrYVc4
Z09GeDJZMXhwYm1Oc2RXUmwKWEhOMFpHRnlaeTVvQUdNNlhIQnliMmR5WVcwZ1ptbHNaWE1nS0hn
NE5pbGNiV2xqY205emIyWjBJSFpwYzNWaGJDQnpkSFZrYVc4ZwpPRngyWTF4d2JHRjBabTl5YlhO
a2ExeHBibU5zZFdSbFhISndZMjVrY2k1b0FHTTZYSEJ5YjJkeVlXMGdabWxzWlhNZ0tIZzROaWxj
CmJXbGpjbTl6YjJaMElIWnBjM1ZoYkNCemRIVmthVzhnT0Z4MlkxeHdiR0YwWm05eWJYTmthMXhw
Ym1Oc2RXUmxYSGRwYm1SbFppNW8KQUdNNlhIQnliMmR5WVcwZ1ptbHNaWE1nS0hnNE5pbGNiV2xq
Y205emIyWjBJSFpwYzNWaGJDQnpkSFZrYVc4Z09GeDJZMXh3YkdGMApabTl5YlhOa2ExeHBibU5z
ZFdSbFhISndZMjV6YVhBdWFBQmpPbHhoY0hCc1pXbHVkR1Z5Ym1Gc1hHbHVZMngxWkdWY1kyOXla
V2R5CllYQm9hV056WEdOblkyOXVkR1Y0ZEhCeWFYWmhkR1V1YUFCak9seHdjbTluY21GdElHWnBi
R1Z6SUNoNE9EWXBYRzFwWTNKdmMyOW0KZENCMmFYTjFZV3dnYzNSMVpHbHZJRGhjZG1OY2NHeGhk
R1p2Y20xelpHdGNhVzVqYkhWa1pWeDFjbXh0YjI0dWFBQmpPbHhoY0hCcwpaV2x1ZEdWeWJtRnNY
R2x1WTJ4MVpHVmNZMlp1WlhSM2IzSnJYR05tYzI5amEyVjBjM1J5WldGdGNISnBkaTVvQUdNNlhI
QnliMmR5CllXMGdabWxzWlhNZ0tIZzROaWxjYldsamNtOXpiMlowSUhacGMzVmhiQ0J6ZEhWa2FX
OGdPRngyWTF4d2JHRjBabTl5YlhOa2ExeHAKYm1Oc2RXUmxYSGRwYm1WbWN5NW9BR002WEdGd2NH
eGxhVzUwWlhKdVlXeGNhVzVqYkhWa1pWeGpiM0psWm05MWJtUmhkR2x2Ymx4agpabkJ5WldabGNt
VnVZMlZ6TG1nQVl6cGNZWEJ3YkdWcGJuUmxjbTVoYkZ4cGJtTnNkV1JsWEdOdmNtVm1iM1Z1WkdG
MGFXOXVYR05tCmRHbHRaWHB2Ym1VdWFBQmpPbHhoY0hCc1pXbHVkR1Z5Ym1Gc1hHbHVZMngxWkdW
Y1kyWnVaWFIzYjNKclhHTm1hSFIwY0dGMWRHaGwKYm5ScFkyRjBhVzl1TG1nQVl6cGNZWEJ3YkdW
cGJuUmxjbTVoYkZ4cGJtTnNkV1JsWEdOdmNtVm1iM1Z1WkdGMGFXOXVYR05tWkdGMApZUzVvQUdN
NlhIQnliMmR5WVcwZ1ptbHNaWE1nS0hnNE5pbGNiV2xqY205emIyWjBJSFpwYzNWaGJDQnpkSFZr
YVc4Z09GeDJZMXhwCmJtTnNkV1JsWEhScGJXVXVhQUJqT2x4aGNIQnNaV2x1ZEdWeWJtRnNYR2x1
WTJ4MVpHVmNZMjl5WldkeVlYQm9hV056WEdObmNHUm0KWkc5amRXMWxiblF1YUFCak9seGhjSEJz
WldsdWRHVnlibUZzWEdsdVkyeDFaR1ZjWTI5eVpXWnZkVzVrWVhScGIyNWNZMlp6WlhRdQphQUJq
T2x4d2NtOW5jbUZ0SUdacGJHVnpJQ2g0T0RZcFhHMXBZM0p2YzI5bWRDQjJhWE4xWVd3Z2MzUjFa
R2x2SURoY2RtTmNjR3hoCmRHWnZjbTF6Wkd0Y2FXNWpiSFZrWlZ4c2VtVjRjR0Z1WkM1b0FHTTZY
SEJ5YjJkeVlXMGdabWxzWlhNZ0tIZzROaWxjYldsamNtOXoKYjJaMElIWnBjM1ZoYkNCemRIVmth
VzhnT0Z4MlkxeHdiR0YwWm05eWJYTmthMXhwYm1Oc2RXUmxYR1JrWlcxc0xtZ0FZenBjWVhCdwpi
R1ZwYm5SbGNtNWhiRnhwYm1Oc2RXUmxYR052Y21WbmNtRndhR2xqYzF4alozQmtabkJoWjJVdWFB
QmpPbHhoY0hCc1pXbHVkR1Z5CmJtRnNYR2x1WTJ4MVpHVmNZMjl5WldkeVlYQm9hV056WEdObmNH
RjBhQzVvQUdNNlhHRndjR3hsYVc1MFpYSnVZV3hjYVc1amJIVmsKWlZ4amIzSmxaM0poY0docFkz
TmNZMmR1YjNScFptbGpZWFJwYjI1alpXNTBaWEl1YUFCak9seGhjSEJzWldsdWRHVnlibUZzWEds
dQpZMngxWkdWY1kyWnVaWFIzYjNKclhHTm1kWEpzY0hKdmRHVmpkR2x2Ym5Od1lXTmxjSEpwZGk1
b0FHTTZYR0Z3Y0d4bGFXNTBaWEp1CllXeGNhVzVqYkhWa1pWeGpabTVsZEhkdmNtdGNZMloxY214
eVpYTndiMjV6WlhCeWFYWXVhQUJqT2x4d2NtOW5jbUZ0SUdacGJHVnoKSUNoNE9EWXBYRzFwWTNK
dmMyOW1kQ0IyYVhOMVlXd2djM1IxWkdsdklEaGNkbU5jY0d4aGRHWnZjbTF6Wkd0Y2FXNWpiSFZr
WlZ4eQpjR051ZEdWeWNpNW9BR002WEhCeWIyZHlZVzBnWm1sc1pYTWdLSGc0TmlsY2JXbGpjbTl6
YjJaMElIWnBjM1ZoYkNCemRIVmthVzhnCk9GeDJZMXh3YkdGMFptOXliWE5rYTF4cGJtTnNkV1Js
WEdkMWFXUmtaV1l1YUFCak9seGhjSEJzWldsdWRHVnlibUZzWEdsdVkyeDEKWkdWY1kyOXlaV2R5
WVhCb2FXTnpYR05uY0dSbVpHbGpkR2x2Ym1GeWVTNW9BR002WEdGd2NHeGxhVzUwWlhKdVlXeGNh
VzVqYkhWawpaVnhqYjNKbFozSmhjR2hwWTNOY1kyZGpiMnh2Y2k1b0FHTTZYSEJ5YjJkeVlXMGda
bWxzWlhNZ0tIZzROaWxjYldsamNtOXpiMlowCklIWnBjM1ZoYkNCemRIVmthVzhnT0Z4MlkxeHdi
R0YwWm05eWJYTmthMXhwYm1Oc2RXUmxYSEp3WTJGemVXNWpMbWdBWXpwY2NISnYKWjNKaGJTQm1h
V3hsY3lBb2VEZzJLVnh0YVdOeWIzTnZablFnZG1semRXRnNJSE4wZFdScGJ5QTRYSFpqWEhCc1lY
Um1iM0p0YzJScgpYR2x1WTJ4MVpHVmNjbkJqYm5OcExtZ0FZenBjWVhCd2JHVnBiblJsY201aGJG
eHBibU5zZFdSbFhHTnZjbVZtYjNWdVpHRjBhVzl1ClhHTm1ZbmwwWlc5eVpHVnlMbWdBWXpwY2NI
SnZaM0poYlNCbWFXeGxjeUFvZURnMktWeHRhV055YjNOdlpuUWdkbWx6ZFdGc0lITjAKZFdScGJ5
QTRYSFpqWEhCc1lYUm1iM0p0YzJSclhHbHVZMngxWkdWY2QybHVaMlJwTG1nQVl6cGNZWEJ3YkdW
cGJuUmxjbTVoYkZ4cApibU5zZFdSbFhIRjFZWEowZW1OdmNtVmNZMkZwYldGblpYRjFaWFZsTG1n
QVl6cGNZWEJ3YkdWcGJuUmxjbTVoYkZ4cGJtTnNkV1JsClhHTnZjbVZuY21Gd2FHbGpjMXhqWjNC
a1ptRnljbUY1TG1nQVl6cGNZWEJ3YkdWcGJuUmxjbTVoYkZ4cGJtTnNkV1JsWEdOdmNtVm4KY21G
d2FHbGpjMXhqWjJkeVlXUnBaVzUwTG1nQVl6cGNZWEJ3YkdWcGJuUmxjbTVoYkZ4cGJtTnNkV1Js
WEdOdmNtVm5jbUZ3YUdsagpjMXhqWjJOdmJHOXljM0JoWTJVdWFBQmpPbHh3Y205bmNtRnRJR1pw
YkdWeklDaDRPRFlwWEcxcFkzSnZjMjltZENCMmFYTjFZV3dnCmMzUjFaR2x2SURoY2RtTmNjR3ho
ZEdadmNtMXpaR3RjYVc1amJIVmtaVnh3YzJod1lXTnJNaTVvQUdNNlhHRndjR3hsYVc1MFpYSnUK
WVd4Y2FXNWpiSFZrWlZ4amIzSmxkbWxrWlc5Y1kzWmlZWE5sTG1nQVl6cGNZWEJ3YkdWcGJuUmxj
bTVoYkZ4cGJtTnNkV1JsWEdOdgpjbVZuY21Gd2FHbGpjMXhqWjJOdmJuUmxlSFJwYldGblpTNW9B
R002WEdGd2NHeGxhVzUwWlhKdVlXeGNhVzVqYkhWa1pWeGpiM0psClptOTFibVJoZEdsdmJseGpa
bTUxYldKbGNtWnZjbTFoZEhSbGNpNW9BR002WEdGd2NHeGxhVzUwWlhKdVlXeGNhVzVqYkhWa1pW
eGoKYjNKbFozSmhjR2hwWTNOY1kyZGpiMjUwWlhoMExtZ0FZenBjY0hKdlozSmhiU0JtYVd4bGN5
QW9lRGcyS1Z4dGFXTnliM052Wm5RZwpkbWx6ZFdGc0lITjBkV1JwYnlBNFhIWmpYR2x1WTJ4MVpH
VmNiRzlqWVd4bExtZ0FZenBjWVhCd2JHVnBiblJsY201aGJGeHBibU5zCmRXUmxYR052Y21WbmNt
RndhR2xqYzF4alozQmtabTlpYW1WamRDNW9BR002WEdGd2NHeGxhVzUwWlhKdVlXeGNhVzVqYkhW
a1pWeGoKYjNKbFozSmhjR2hwWTNOY1kyZGtZWFJoY0hKdmRtbGtaWEl1YUFCak9seGhjSEJzWlds
dWRHVnlibUZzWEdsdVkyeDFaR1ZjY1hWaApjblI2WTI5eVpWeGpZWEpsYm1SbGNtOW5iQzVvQUdN
NlhIQnliMmR5WVcwZ1ptbHNaWE1nS0hnNE5pbGNiV2xqY205emIyWjBJSFpwCmMzVmhiQ0J6ZEhW
a2FXOGdPRngyWTF4cGJtTnNkV1JsWEhObGRHcHRjQzVvQUdNNlhHRndjR3hsYVc1MFpYSnVZV3hj
YVc1amJIVmsKWlZ4eGRXRnlkSHBqYjNKbFhHTmhjbVZ1WkdWeUxtZ0FZenBjWVhCd2JHVnBiblJs
Y201aGJGeHBibU5zZFdSbFhHTnZjbVZuY21GdwphR2xqYzF4aloyTnZiRzl5Y0hKcGRtRjBaUzVv
QUdNNlhHRndjR3hsYVc1MFpYSnVZV3hjYVc1amJIVmtaVnhqYjNKbFozSmhjR2hwClkzTmNZMmRp
WVhObExtZ0FZenBjY0hKdlozSmhiU0JtYVd4bGN5QW9lRGcyS1Z4dGFXTnliM052Wm5RZ2RtbHpk
V0ZzSUhOMGRXUnAKYnlBNFhIWmpYSEJzWVhSbWIzSnRjMlJyWEdsdVkyeDFaR1ZjZDJsdWMyOWph
ekl1YUFCak9seGhjSEJzWldsdWRHVnlibUZzWEdsdQpZMngxWkdWY2NYVmhjblI2WTI5eVpWeGpZ
WFJ5WVc1elptOXliVE5rTG1nQVl6cGNZWEJ3YkdWcGJuUmxjbTVoYkZ4cGJtTnNkV1JsClhIRjFZ
WEowZW1OdmNtVmNZMkZqWm1OdmJuUmxlSFF1YUFCak9seHdjbTluY21GdElHWnBiR1Z6SUNoNE9E
WXBYRzFwWTNKdmMyOW0KZENCMmFYTjFZV3dnYzNSMVpHbHZJRGhjZG1OY2NHeGhkR1p2Y20xelpH
dGNhVzVqYkhWa1pWeDNhVzV6YldOeVpDNW9BR002WEhCeQpiMmR5WVcwZ1ptbHNaWE1nS0hnNE5p
bGNiV2xqY205emIyWjBJSFpwYzNWaGJDQnpkSFZrYVc4Z09GeDJZMXh3YkdGMFptOXliWE5rCmEx
eHBibU5zZFdSbFhIZHBibTVsZEhkckxtZ0FZenBjY0hKdlozSmhiU0JtYVd4bGN5QW9lRGcyS1Z4
dGFXTnliM052Wm5RZ2RtbHoKZFdGc0lITjBkV1JwYnlBNFhIWmpYSEJzWVhSbWIzSnRjMlJyWEds
dVkyeDFaR1ZjZDJsdVpHOTNjeTVvQUdNNlhHRndjR3hsYVc1MApaWEp1WVd4Y2FXNWpiSFZrWlZ4
eGRXRnlkSHBqYjNKbFhHTmhZMlppWVhObExtZ0FZenBjWVhCd2JHVnBiblJsY201aGJGeHBibU5z
CmRXUmxYR052Y21WbmNtRndhR2xqYzF4aloyRm1abWx1WlhSeVlXNXpabTl5YlM1b0FHTTZYSEJ5
YjJkeVlXMGdabWxzWlhNZ0tIZzQKTmlsY2JXbGpjbTl6YjJaMElIWnBjM1ZoYkNCemRIVmthVzhn
T0Z4MlkxeHBibU5zZFdSbFhHVjRZM0IwTG1nQVl6cGNZWEJ3YkdWcApiblJsY201aGJGeHBibU5z
ZFdSbFhIVnVhV052WkdWY2RXTm9ZWEl1YUFCak9seGhjSEJzWldsdWRHVnlibUZzWEdsdVkyeDFa
R1ZjCmNYVmhjblI2WTI5eVpWeGpZV0poYzJVdWFBQmpPbHh3Y205bmNtRnRJR1pwYkdWeklDaDRP
RFlwWEcxcFkzSnZjMjltZENCMmFYTjEKWVd3Z2MzUjFaR2x2SURoY2RtTmNjR3hoZEdadmNtMXpa
R3RjYVc1amJIVmtaVnh2WW1wcFpHd3VhQUJqT2x4d2NtOW5jbUZ0SUdacApiR1Z6SUNoNE9EWXBY
RzFwWTNKdmMyOW1kQ0IyYVhOMVlXd2djM1IxWkdsdklEaGNkbU5jYVc1amJIVmtaVnhqY25Sa1pX
WnpMbWdBCll6cGNZWEJ3YkdWcGJuUmxjbTVoYkZ4cGJtTnNkV1JsWEhWdWFXTnZaR1ZjZFhSNWNH
VnpMbWdBWXpwY1lYQndiR1ZwYm5SbGNtNWgKYkZ4cGJtTnNkV1JsWEdOdmNtVm5jbUZ3YUdsamMx
eGpaM05pYjNWdVpITXVhQUJqT2x4aGNIQnNaV2x1ZEdWeWJtRnNYR2x1WTJ4MQpaR1ZjWTI5eVpX
ZHlZWEJvYVdOelhHTnZjbVZuY21Gd2FHbGpjeTVvQUdNNlhHRndjR3hsYVc1MFpYSnVZV3hjYVc1
amJIVmtaVnhqCmIzSmxaM0poY0docFkzTmNZMmRuWlc5dFpYUnllUzVvQUdNNlhIQnliMmR5WVcw
Z1ptbHNaWE1nS0hnNE5pbGNiV2xqY205emIyWjAKSUhacGMzVmhiQ0J6ZEhWa2FXOGdPRngyWTF4
cGJtTnNkV1JsWEhOaGJDNW9BR002WEdGd2NHeGxhVzUwWlhKdVlXeGNhVzVqYkhWawpaVngxYm1s
amIyUmxYSFZ0WVdOb2FXNWxMbWdBWXpwY1lYQndiR1ZwYm5SbGNtNWhiRnhwYm1Oc2RXUmxYR052
Y21WbmNtRndhR2xqCmMxeGpaMkpwZEcxaGNHTnZiblJsZUhRdWFBQmpPbHh3Y205bmNtRnRJR1pw
YkdWeklDaDRPRFlwWEcxcFkzSnZjMjltZENCMmFYTjEKWVd3Z2MzUjFaR2x2SURoY2RtTmNhVzVq
YkhWa1pWeGpjblJoYzNObGJTNW9BR002WEdGd2NHeGxhVzUwWlhKdVlXeGNhVzVqYkhWawpaVngx
Ym1samIyUmxYSEIzYVc0ek1pNW9BR002WEhCeWIyZHlZVzBnWm1sc1pYTWdLSGc0TmlsY2JXbGpj
bTl6YjJaMElIWnBjM1ZoCmJDQnpkSFZrYVc4Z09GeDJZMXh3YkdGMFptOXliWE5rYTF4cGJtTnNk
V1JsWEc5aGFXUnNMbWdBWXpwY2NISnZaM0poYlNCbWFXeGwKY3lBb2VEZzJLVnh0YVdOeWIzTnZa
blFnZG1semRXRnNJSE4wZFdScGJ5QTRYSFpqWEhCc1lYUm1iM0p0YzJSclhHbHVZMngxWkdWYwpZ
MlJsY25JdWFBQmpPbHh3Y205bmNtRnRJR1pwYkdWeklDaDRPRFlwWEcxcFkzSnZjMjltZENCMmFY
TjFZV3dnYzNSMVpHbHZJRGhjCmRtTmNhVzVqYkhWa1pWeDJZV1JsWm5NdWFBQmpPbHhoY0hCc1pX
bHVkR1Z5Ym1Gc1hHbHVZMngxWkdWY1kyOXlaV1p2ZFc1a1lYUnAKYjI1Y1kyWmhkSFJ5YVdKMWRH
VmtjM1J5YVc1bkxtZ0FZenBjY0hKdlozSmhiU0JtYVd4bGN5QW9lRGcyS1Z4dGFXTnliM052Wm5R
ZwpkbWx6ZFdGc0lITjBkV1JwYnlBNFhIWmpYSEJzWVhSbWIzSnRjMlJyWEdsdVkyeDFaR1ZjYzJo
bGJHeGhjR2t1YUFCak9seHdjbTluCmNtRnRJR1pwYkdWeklDaDRPRFlwWEcxcFkzSnZjMjltZENC
MmFYTjFZV3dnYzNSMVpHbHZJRGhjZG1OY2NHeGhkR1p2Y20xelpHdGMKYVc1amJIVmtaVnhrWkdV
dWFBQmpPbHh3Y205bmNtRnRJR1pwYkdWeklDaDRPRFlwWEcxcFkzSnZjMjltZENCMmFYTjFZV3dn
YzNSMQpaR2x2SURoY2RtTmNjR3hoZEdadmNtMXpaR3RjYVc1amJIVmtaVngzYVc1dWRDNW9BR002
WEdGd2NHeGxhVzUwWlhKdVlXeGNhVzVqCmJIVmtaVnhrYVhOd1lYUmphRnh6YjNWeVkyVXVhQUJq
T2x4d2NtOW5jbUZ0SUdacGJHVnpJQ2g0T0RZcFhHMXBZM0p2YzI5bWRDQjIKYVhOMVlXd2djM1Ix
WkdsdklEaGNkbU5jYVc1amJIVmtaVnhqZEhsd1pTNW9BR002WEdGd2NHeGxhVzUwWlhKdVlXeGNh
VzVqYkhWawpaVnhqYjNKbFptOTFibVJoZEdsdmJseGpablZ5YkdWdWRXMWxjbUYwYjNJdWFBQmpP
bHh3Y205bmNtRnRJR1pwYkdWeklDaDRPRFlwClhHMXBZM0p2YzI5bWRDQjJhWE4xWVd3Z2MzUjFa
R2x2SURoY2RtTmNjR3hoZEdadmNtMXpaR3RjYVc1amJIVmtaVnhwYlcwdWFBQmoKT2x4aGNIQnNa
V2x1ZEdWeWJtRnNYR2x1WTJ4MVpHVmNkVzVwWTI5a1pWeDFjbVZ1WVcxbExtZ0FZenBjWVhCd2JH
VnBiblJsY201aApiRnhwYm1Oc2RXUmxYR052Y21WbmNtRndhR2xqYzF4aloyWnZiblJ5Wlc1a1pY
SnBibWN1YUFCak9seGhjSEJzWldsdWRHVnlibUZzClhHbHVZMngxWkdWY1kyOXlaV1p2ZFc1a1lY
UnBiMjVjWTJaM2FXNWtiM2R6Ym1GdFpXUndhWEJsTG1nQVl6cGNZWEJ3YkdWcGJuUmwKY201aGJG
eHBibU5zZFdSbFhHTnZjbVZtYjNWdVpHRjBhVzl1WEdObVltRm5MbWdBWXpwY1lYQndiR1ZwYm5S
bGNtNWhiRnhwYm1OcwpkV1JsWEhWdWFXTnZaR1ZjZFhabGNtNTFiUzVvQUdNNlhIQnliMmR5WVcw
Z1ptbHNaWE1nS0hnNE5pbGNiV2xqY205emIyWjBJSFpwCmMzVmhiQ0J6ZEhWa2FXOGdPRngyWTF4
d2JHRjBabTl5YlhOa2ExeHBibU5zZFdSbFhIUjJiM1YwTG1nQVl6cGNjSEp2WjNKaGJTQm0KYVd4
bGN5QW9lRGcyS1Z4dGFXTnliM052Wm5RZ2RtbHpkV0ZzSUhOMGRXUnBieUE0WEhaalhHbHVZMngx
WkdWY2MzUnlhVzVuTG1nQQpZenBjWVhCd2JHVnBiblJsY201aGJGeHBibU5zZFdSbFhIVnVhV052
WkdWY2RYUm1MbWdBWXpwY2NISnZaM0poYlNCbWFXeGxjeUFvCmVEZzJLVnh0YVdOeWIzTnZablFn
ZG1semRXRnNJSE4wZFdScGJ5QTRYSFpqWEhCc1lYUm1iM0p0YzJSclhHbHVZMngxWkdWY2QybHUK
WTI5dUxtZ0FZenBjWVhCd2JHVnBiblJsY201aGJGeHBibU5zZFdSbFhIVnVhV052WkdWY2RYUm1P
QzVvQUNSVU1pQWtaWE53SUM1agpZa3h2WTJGc2N5QXJJQzVqWWxOaGRtVmtVbVZuY3lBcklEMGdK
RlF3SUM1eVlWTmxZWEpqYUZOMFlYSjBJRDBnSkdWcGNDQWtWREFnClhpQTlJQ1JsYzNBZ0pGUXdJ
RFFnS3lBOUFDUlVNaUFrWlhOd0lDNWpZa3h2WTJGc2N5QXJJQzVqWWxOaGRtVmtVbVZuY3lBcklE
MGcKSkZRd0lDNXlZVk5sWVhKamFGTjBZWEowSUQwZ0pHVnBjQ0FrVkRBZ1hpQTlJQ1JsYzNBZ0pG
UXdJRFFnS3lBOUlDUmxZbkFnSkZRdwpJREUwTUNBdElGNGdQUUFrVkRJZ0pHVnpjQ0F1WTJKTWIy
TmhiSE1nS3lBdVkySlRZWFpsWkZKbFozTWdLeUE5SUNSVU1DQXVjbUZUClpXRnlZMmhUZEdGeWRD
QTlJQ1JsYVhBZ0pGUXdJRjRnUFNBa1pYTndJQ1JVTUNBMElDc2dQU0FrWldKd0lDUlVNQ0F4TkRB
Z0xTQmUKSUQwZ0pHVmllQ0FrVkRBZ01UUTBJQzBnWGlBOUFDUlVNaUFrWlhOd0lDNWpZa3h2WTJG
c2N5QXJJQzVqWWxOaGRtVmtVbVZuY3lBcgpJRDBnSkZRd0lDNXlZVk5sWVhKamFGTjBZWEowSUQw
Z0pHVnBjQ0FrVkRBZ1hpQTlJQ1JsYzNBZ0pGUXdJRFFnS3lBOUlDUmxZbmdnCkpGUXdJRFFnTFNC
ZUlEMEFKRlF5SUNSbGMzQWdMbU5pVEc5allXeHpJQ3NnTG1OaVUyRjJaV1JTWldkeklDc2dQU0Fr
VkRBZ0xuSmgKVTJWaGNtTm9VM1JoY25RZ1BTQWtaV2x3SUNSVU1DQmVJRDBnSkdWemNDQWtWREFn
TkNBcklEMGdKR1ZpZUNBa1ZEQWdOalFnTFNCZQpJRDBBSkZReUlDUmxjM0FnTG1OaVRHOWpZV3h6
SUNzZ0xtTmlVMkYyWldSU1pXZHpJQ3NnUFNBa1ZEQWdMbkpoVTJWaGNtTm9VM1JoCmNuUWdQU0Fr
Wldsd0lDUlVNQ0JlSUQwZ0pHVnpjQ0FrVkRBZ05DQXJJRDBnSkdWaWVDQWtWREFnTkRBZ0xTQmVJ
RDBBSkZReUlDUmwKYzNBZ0xtTmlURzlqWVd4eklDc2dMbU5pVTJGMlpXUlNaV2R6SUNzZ1BTQWtW
REFnTG5KaFUyVmhjbU5vVTNSaGNuUWdQU0FrWldsdwpJQ1JVTUNCZUlEMGdKR1Z6Y0NBa1ZEQWdO
Q0FySUQwZ0pHVmljQ0FrVkRBZ05EUWdMU0JlSUQwZ0pHVmllQ0FrVkRBZ05EQWdMU0JlCklEMEFK
RlF5SUNSbGMzQWdMbU5pVEc5allXeHpJQ3NnTG1OaVUyRjJaV1JTWldkeklDc2dQU0FrVkRBZ0xu
SmhVMlZoY21Ob1UzUmgKY25RZ1BTQWtaV2x3SUNSVU1DQmVJRDBnSkdWemNDQWtWREFnTkNBcklE
MGdKR1ZpZUNBa1ZEQWdNVFF3SUMwZ1hpQTlBQ1JVTWlBawpaWE53SUM1allreHZZMkZzY3lBcklD
NWpZbE5oZG1Wa1VtVm5jeUFySUQwZ0pGUXdJQzV5WVZObFlYSmphRk4wWVhKMElEMGdKR1ZwCmND
QWtWREFnWGlBOUlDUmxjM0FnSkZRd0lEUWdLeUE5SUNSbFluQWdKRlF3SURFME5DQXRJRjRnUFNB
a1pXSjRJQ1JVTUNBeE5EQWcKTFNCZUlEMEFKRlF5SUNSbGMzQWdMbU5pVEc5allXeHpJQ3NnTG1O
aVUyRjJaV1JTWldkeklDc2dQU0FrVkRBZ0xuSmhVMlZoY21ObwpVM1JoY25RZ1BTQWtaV2x3SUNS
VU1DQmVJRDBnSkdWemNDQWtWREFnTkNBcklEMGdKR1ZpZUNBa1ZEQWdNVEkwSUMwZ1hpQTlBQ1JV
Ck1pQWtaWE53SUM1allreHZZMkZzY3lBcklDNWpZbE5oZG1Wa1VtVm5jeUFySUQwZ0pGUXdJQzV5
WVZObFlYSmphRk4wWVhKMElEMGcKSkdWcGNDQWtWREFnWGlBOUlDUmxjM0FnSkZRd0lEUWdLeUE5
SUNSbFluQWdKRlF3SURFeU9DQXRJRjRnUFNBa1pXSjRJQ1JVTUNBeApNalFnTFNCZUlEMEFKRlF5
SUNSbGMzQWdMbU5pVEc5allXeHpJQ3NnTG1OaVUyRjJaV1JTWldkeklDc2dQU0FrVkRBZ0xuSmhV
MlZoCmNtTm9VM1JoY25RZ1BTQWtaV2x3SUNSVU1DQmVJRDBnSkdWemNDQWtWREFnTkNBcklEMGdK
R1ZpZUNBa1ZEQWdPQ0F0SUY0Z1BRQWsKVkRJZ0pHVnpjQ0F1WTJKTWIyTmhiSE1nS3lBdVkySlRZ
WFpsWkZKbFozTWdLeUE5SUNSVU1DQXVjbUZUWldGeVkyaFRkR0Z5ZENBOQpJQ1JsYVhBZ0pGUXdJ
RjRnUFNBa1pYTndJQ1JVTUNBMElDc2dQU0FrWldKNElDUlVNQ0F4TWlBdElGNGdQUUFrVkRJZ0pH
VnpjQ0F1ClkySk1iMk5oYkhNZ0t5QXVZMkpUWVhabFpGSmxaM01nS3lBOUlDUlVNQ0F1Y21GVFpX
RnlZMmhUZEdGeWRDQTlJQ1JsYVhBZ0pGUXcKSUY0Z1BTQWtaWE53SUNSVU1DQTBJQ3NnUFNBa1pX
SndJQ1JVTUNBeE5pQXRJRjRnUFNBa1pXSjRJQ1JVTUNBeE1pQXRJRjRnUFFBawpWRElnSkdWemND
QXVZMkpNYjJOaGJITWdLeUF1WTJKVFlYWmxaRkpsWjNNZ0t5QTlJQ1JVTUNBdWNtRlRaV0Z5WTJo
VGRHRnlkQ0E5CklDUmxhWEFnSkZRd0lGNGdQU0FrWlhOd0lDUlVNQ0EwSUNzZ1BTQWtaV0p3SUNS
VU1DQXpOaUF0SUY0Z1BTQWtaV0o0SUNSVU1DQTQKSUMwZ1hpQTlBQUFBS1FnQUFBZ0FBQUFMQUMw
SUFBQUlBQUFBQ2dCSkNBQUFDd0FBQUFzQVRRZ0FBQXNBQUFBS0FHc0lBQUFNQUFBQQpDd0J2Q0FB
QURBQUFBQW9BamdnQUFESUNBQUFMQUpJSUFBQXlBZ0FBQ2dETkNBQUExd0VBQUFzQTBRZ0FBTmNC
QUFBS0FQY0lBQUE0CkFnQUFDd0Q3Q0FBQU9BSUFBQW9BS0FrQUFEVUNBQUFMQUN3SkFBQTFBZ0FB
Q2dCUUNRQUFPUUlBQUFzQVZBa0FBRGtDQUFBS0FJVUoKQUFBMEFnQUFDd0NKQ1FBQU5BSUFBQW9B
cWdrQUFEb0NBQUFMQUs0SkFBQTZBZ0FBQ2dEY0NRQUFNd0lBQUFzQTRBa0FBRE1DQUFBSwpBQTRL
QUFBN0FnQUFDd0FTQ2dBQU93SUFBQW9BVFFvQUFBMEFBQUFMQUZFS0FBQU5BQUFBQ2dCekNnQUFn
d0FBQUFzQWR3b0FBSU1BCkFBQUtBSjRLQUFDQ0FBQUFDd0NpQ2dBQWdnQUFBQW9BeGdvQUFJRUFB
QUFMQU1vS0FBQ0JBQUFBQ2dBa0N3QUFDZ0VBQUFzQUtBc0EKQUFvQkFBQUtBRllMQUFBTEFRQUFD
d0JhQ3dBQUN3RUFBQW9BUWd3QUFDb0JBQUFMQUVZTUFBQXFBUUFBQ2dCbERBQUFLUUVBQUFzQQph
UXdBQUNrQkFBQUtBRFFZQUFBSkFRQUFDd0E0R0FBQUNRRUFBQW9BVWlBQUFGb0JBQUFMQUZZZ0FB
QmFBUUFBQ2dDRUlBQUFYUUVBCkFBc0FpQ0FBQUYwQkFBQUtBTG9nQUFCY0FRQUFDd0MrSUFBQVhB
RUFBQW9BOENBQUFHTUJBQUFMQVBRZ0FBQmpBUUFBQ2dBdUlRQUEKYndFQUFBc0FNaUVBQUc4QkFB
QUtBRE16RTBBd0FBQUFBZ0FBQUFBQUFFRFpSQ1FFMmVIWlhDUUUyVVFrQk1NRUFBQUE5UUFBQUNR
QQpBQUFBQUFBQUFBQUFBQThBQUFBQUFBQUFCQUFBQUFBQUFBRGpQQUFBQUFBQUFBUUFBQUR4QUFB
QVhnQUFBQ3NBRUJFQUFBQUFBQUFBCkFBQUFBQUFQQUFBQUFBQUFBQTRBQUFDNkVBQUFBQUFBQUFB
QUFHWmhZbk5tQUJ3QUVoQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEKQUFBQUlBb0FBQTBBQ3hF
RUFBQUFRQUFBQUY5WUFBSUFCZ0FBQVBJQUFBQWdBQUFBQUFBQUFBQUFBQUFQQUFBQW9BVUFBQUVB
QUFBVQpBQUFBQUFBQUFJQUJBSUFNQUFBQUVnQUFBQWNBV0FBQUFCSUFBQUFMQUZ3QUFBQVNBQUFB
Q2dDZ0FBQUFFZ0FBQUFzQXBBQUFBQklBCkFBQUtBTmxFSkFTRDdBamRIQ1QvRlFBQUFBRFpYQ1FN
ZzhRSTJVUWtCTU1NQUFBQUdRQUFBQVlBQkFBQUFQVUFBQUFrQUFBQUFBQUEKQUFBQUFBQWNBQUFB
QUFBQUFBUUFBQUFBQUFBQTR6d0FBQUFBQUFBRUFBQUE4UUFBQUc0QUFBQXJBQkFSQUFBQUFBQUFB
QUFBQUFBQQpIQUFBQUFBQUFBQWJBQUFBdWhBQUFBQUFBQUFBQUFCalpXbHNaZ0FjQUJJUUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FLCkFBQU5BQXNSQkFBQUFFQUFBQUJmV0FBT0FEa1JD
Z0FBQUFBQUFBQ3VFQUFBQWdBR0FBQUE4Z0FBQUNBQUFBQUFBQUFBQUFBQUFCd0EKQUFDZ0JRQUFB
UUFBQUJRQUFBQUFBQUFBalFFQWdBd0FBQUFZQUFBQUJ3QllBQUFBR0FBQUFBc0FYQUFBQUJnQUFB
QUtBSllBQUFBWQpBQUFBQ3dDYUFBQUFHQUFBQUFvQXNBQUFBQmdBQUFBTEFMUUFBQUFZQUFBQUNn
RFpSQ1FFMlVRa0NPZ0FBQUFBMlZ3a0JObEVKQVRECkNRQUFBQjhBQUFBVUFBUUFBQUQxQUFBQUpB
QUFBQUFBQUFBQUFBQUFGZ0FBQUFBQUFBQUlBQUFBQUFBQUFPTThBQUFBQUFBQUJBQUEKQVBFQUFB
QnNBQUFBS2dBUUVRQUFBQUFBQUFBQUFBQUFBQllBQUFBQUFBQUFGUUFBQUx3UUFBQUFBQUFBQUFB
QWNHOTNaZ0FjQUJJUQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBS0FBQU5BQXNSQkFB
QUFFQUFBQUJmV0FBTkFBc1JDQUFBQUVBQUFBQmZXUUFDCkFBWUE4Z0FBQUNBQUFBQUFBQUFBQUFB
QUFCWUFBQUNnQlFBQUFRQUFBQlFBQUFBQUFBQUFvUUVBZ0F3QUFBQWVBQUFBQndCWUFBQUEKSGdB
QUFBc0FYQUFBQUI0QUFBQUtBS3dBQUFBZUFBQUFDd0N3QUFBQUhnQUFBQW9BMlVRa0JObmgyVndr
Qk5sRUpBVERCQUFBQVBVQQpBQUFrQUFBQUFBQUFBQUFBQUFBUEFBQUFBQUFBQUFRQUFBQUFBQUFB
NHp3QUFBQUFBQUFFQUFBQThRQUFBRjBBQUFBcUFCQVJBQUFBCkFBQUFBQUFBQUFBQUR3QUFBQUFB
QUFBT0FBQUF1aEFBQUFBQUFBQUFBQUJtWVdKekFCd0FFaEFBQUFBQUFBQUFBQUFBQUFBQUFBQUEK
QUFBQUFBQUFJQW9BQUEwQUN4RUVBQUFBUUFBQUFGOVlBQUlBQmdBQUFBRHlBQUFBSUFBQUFBQUFB
QUFBQUFBQUR3QUFBS0FGQUFBQgpBQUFBRkFBQUFBQUFBQUQrQVFDQURBQUFBQ1FBQUFBSEFGZ0FB
QUFrQUFBQUN3QmNBQUFBSkFBQUFBb0FvQUFBQUNRQUFBQUxBS1FBCkFBQWtBQUFBQ2dDRDdBalpS
Q1FNMlJ3azJVUWtFSXNFSk5sY0pBU0xWQ1FFZzhRSXd3UUFBQUQxQUFBQUpBQUFBQUFBQUFBQUFB
QUEKSFFBQUFBZ0FBQUFJQUFBQUFBQUFBT004QUFBREFBQUFCQUFBQVBFQUFBQ0tBQUFBTUFBUEVR
QUFBQUFBQUFBQUFBQUFBQjBBQUFBRApBQUFBR1FBQUFHY1NBQUFBQUFBQUFBQUFRMGRUYVhwbFRX
RnJaUUFjQUJJUUNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FLCkFBQVFBQXNSQkFBQUFF
QUFBQUIzYVdSMGFBQVJBQXNSQ0FBQUFFQUFBQUJvWldsbmFIUUFEd0FMRWZULy8vOExFQUFBYzJs
NlpRQUMKQUFZQUFBRHlBQUFBTUFBQUFBQUFBQUFBQUFBQUhRQUFBR0FWQUFBREFBQUFKQUFBQUFB
QUFBQUhBUUNBQXdBQUFBZ0JBSUFaQUFBQQpDUUVBZ0F3QUFBQXBBQUFBQndCWUFBQUFLUUFBQUFz
QVhBQUFBQ2tBQUFBS0FNd0FBQUFwQUFBQUN3RFFBQUFBS1FBQUFBb0EyVVFrCkNObkEyRXdrRk5s
RUpBVFp3TmhNSkF6ZXd0bEVKQnpld3RuSjJWd2tCTmxFSkJpTFJDUUUzc3JZVENRUTNzSFlSQ1Fn
MlZ3a0NJdFUKSkFqREJBQUFBUFVBQUFBa0FBQUFBQUFBQUFBQUFBQS9BQUFBQUFBQUFDQUFBQUFB
QUFBQTR6d0FBQUFBQUFBRUFBQUE4UUFBQUpVQQpBQUJEQUE4UkFBQUFBQUFBQUFBQUFBQUFQd0FB
QUFBQUFBQStBQUFBcnhNQUFBQUFBQUFBQUFCZlgwTkhVRzlwYm5SQmNIQnNlVUZtClptbHVaVlJ5
WVc1elptOXliUUFjQUJJUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FLQUFBUUFBc1JC
QUFBQUFnUUFBQncKYjJsdWRBQU1BQXNSREFBQUFCRVFBQUIwQUF3QUN4RUVBQUFBQ0JBQUFIQUFB
Z0FHQUFBQUFQSUFBQUJBQUFBQUFBQUFBQUFBQUFBLwpBQUFBaUJRQUFBVUFBQUEwQUFBQUFBQUFB
SDBBQUlBQUFBQUFmd0FBZ0NJQUFBQ0FBQUNBSmdBQUFJRUFBSUErQUFBQWdnQUFnQXdBCkFBQXVB
QUFBQndCWUFBQUFMZ0FBQUFzQVhBQUFBQzRBQUFBS0FOZ0FBQUF1QUFBQUN3RGNBQUFBTGdBQUFB
b0EyVVFrQ05uQTJFd2sKRk5sRUpBVFp3TmhNSkF6ZXd0bkoyVndrQk5sRUpCaUxSQ1FFM3NyWVRD
UVEzc0haWENRSWkxUWtDTU1FQUFBQTlRQUFBQ1FBQUFBQQpBQUFBQUFBQUFEVUFBQUFBQUFBQUlB
QUFBQUFBQUFEalBBQUFBQUFBQUFRQUFBRHhBQUFBa3dBQUFFSUFEeEVBQUFBQUFBQUFBQUFBCkFB
QTFBQUFBQUFBQUFEUUFBQUNhRXdBQUFBQUFBQUFBQUY5ZlEwZFRhWHBsUVhCd2JIbEJabVpwYm1W
VWNtRnVjMlp2Y20wQUhBQVMKRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdDZ0FBRHdB
TEVRUUFBQUFMRUFBQWMybDZaUUFNQUFzUkRBQUFBQkVRQUFCMApBQXdBQ3hFRUFBQUFDeEFBQUhN
QUFnQUdBQUR5QUFBQVFBQUFBQUFBQUFBQUFBQUFOUUFBQUlnVUFBQUZBQUFBTkFBQUFBQUFBQUNI
CkFBQ0FBQUFBQUlrQUFJQWNBQUFBaWdBQWdDQUFBQUNMQUFDQU5BQUFBSXdBQUlBTUFBQUFNd0FB
QUFjQVdBQUFBRE1BQUFBTEFGd0EKQUFBekFBQUFDZ0RVQUFBQU13QUFBQXNBMkFBQUFETUFBQUFL
QUlQc0VJdEVKQlNGd01jRUpBQUFBQURIUkNRRUlBQUFBTWRFSkFndwpBQUFBeDBRa0RFQUFBQUI4
RTRQNEJIY09pd3lFaVEwQUFBQUFvd0FBQUFDRHhCREROQUFBQUFzQUFBQUdBRGtBQUFBTUFBQUFC
Z0FFCkFBQUE5UUFBQUNRQUFBQUFBQUFBQUFBQUFFRUFBQUFRQUFBQUJBQUFBQUFBQUFEalBBQUFB
d0FBQUFRQUFBRHhBQUFBalFBQUFEMEEKRUJFQUFBQUFBQUFBQUFBQUFBQkJBQUFBQXdBQUFEMEFB
QUI3RkFBQUFBQUFBQUFBQUhkclUyVjBSbTl1ZEZOdGIyOTBhR2x1WjB4bApkbVZzQUJ3QUVoQVFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQUFCQUFDeEVFQUFBQWRBQUFBR3hsZG1Wc0FC
Z0FDeEhzCi8vLy9ReE1BQUhOdGIyOTBhR2x1WjFSNWNHVUFBZ0FHQUFBQUFQSUFBQUJBQUFBQUFB
QUFBQUFBQUFCQkFBQUF1QVVBQUFVQUFBQTAKQUFBQUFBQUFBRGNBQUlBREFBQUFQd0FBZ0M4QUFB
QkNBQUNBT0FBQUFFTUFBSUE5QUFBQVJBQUFnQXdBQUFBNEFBQUFCd0JZQUFBQQpPQUFBQUFzQVhB
QUFBRGdBQUFBS0FOQUFBQUE0QUFBQUN3RFVBQUFBT0FBQUFBb0FvUUFBQUFEREFRQUFBQXdBQUFB
R0FBUUFBQUQxCkFBQUFKQUFBQUFBQUFBQUFBQUFBQmdBQUFBQUFBQUFBQUFBQUFBQUFBT004QUFB
QUFBQUFCQUFBQVBFQUFBQmhBQUFBUFFBUUVRQUEKQUFBQUFBQUFBQUFBQUFZQUFBQUFBQUFBQlFB
QUFId1VBQUFBQUFBQUFBQUFkMnRIWlhSR2IyNTBVMjF2YjNSb2FXNW5UR1YyWld3QQpIQUFTRUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0FBQWdBR0FBQUFBUElBQUFBd0FBQUFBQUFB
QUFBQUFBQUdBQUFBCnVBVUFBQU1BQUFBa0FBQUFBQUFBQUVjQUFJQUFBQUFBU0FBQWdBVUFBQUJK
QUFDQURBQUFBRDBBQUFBSEFGZ0FBQUE5QUFBQUN3QmMKQUFBQVBRQUFBQW9BcEFBQUFEMEFBQUFM
QUtnQUFBQTlBQUFBQ2dEWlJDUUUyUjBBQUFBQXd3WUFBQUFOQUFBQUJnQUVBQUFBOVFBQQpBQ1FB
QUFBQUFBQUFBQUFBQUFzQUFBQUFBQUFBQkFBQUFBQUFBQURqUEFBQUFBQUFBQVFBQUFEeEFBQUFl
UUFBQUVBQUVCRUFBQUFBCkFBQUFBQUFBQUFBTEFBQUFBQUFBQUFvQUFBQjlGQUFBQUFBQUFBQUFB
SGRyVTJWMFJtOXVkRk50YjI5MGFHbHVaME52Ym5SeVlYTjAKQUJ3QUVoQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFJQUFCTUFDeEVFQUFBQVFBQUFBR052Ym5SeVlYTjBBQUlBQmdBQQpB
QUR5QUFBQU1BQUFBQUFBQUFBQUFBQUFDd0FBQUxnRkFBQURBQUFBSkFBQUFBQUFBQUJNQUFDQUFB
QUFBRTBBQUlBS0FBQUFUZ0FBCmdBd0FBQUJDQUFBQUJ3QllBQUFBUWdBQUFBc0FYQUFBQUVJQUFB
QUtBTHdBQUFCQ0FBQUFDd0RBQUFBQVFnQUFBQW9BMlFVQUFBQUEKd3dJQUFBQU5BQUFBQmdBRUFB
QUE5UUFBQUNRQUFBQUFBQUFBQUFBQUFBY0FBQUFBQUFBQUFBQUFBQUFBQUFEalBBQUFBQUFBQUFR
QQpBQUR4QUFBQVpBQUFBRUFBRUJFQUFBQUFBQUFBQUFBQUFBQUhBQUFBQUFBQUFBWUFBQUIrRXdB
QUFBQUFBQUFBQUhkclIyVjBSbTl1CmRGTnRiMjkwYUdsdVowTnZiblJ5WVhOMEFCd0FFaEFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFBQUlBQmdEeUFBQUEKTUFBQUFBQUFBQUFBQUFB
QUJ3QUFBTGdGQUFBREFBQUFKQUFBQUFBQUFBQlJBQUNBQUFBQUFGSUFBSUFHQUFBQVV3QUFnQXdB
QUFCSApBQUFBQndCWUFBQUFSd0FBQUFzQVhBQUFBRWNBQUFBS0FLUUFBQUJIQUFBQUN3Q29BQUFB
UndBQUFBb0FnZXlJQUFBQVZUUHRWWTFFCkpDUlFWV2dNSUFBQXgwUWtKRndBQUFEL0ZRQUFBQUNG
d0ErRUlBTUFBSXRFSkNBN0JRQUFBQUFQaEJBREFBQlRWbFdqQUFBQUFQOFYKQUFBQUFHb1JpL0Qv
RlFBQUFBQ0xIUUFBQUFCUVZ2L1RhQUFBQUFCVlZZMU1KRWhSVldwY1ZvbEVKRkQvRlFBQUFBQ0Qr
UDkxS290VQpKQ2piUkNRb2hkSjlCdGdGQUFBQUFOdzFBQUFBQUY1YlhkbGNKQkRaUkNRUWdjU0lB
QUFBdzR0RUpEeUxUQ1JBVjFWVmpWUWtNRktKClJDUmtWWTFFSkdSUTk5bFZ4MFFrYkNnQUFBQm14
MFFrZUFFQWlXd2tmSW1zSklBQUFBQ0pyQ1NFQUFBQWlhd2tpQUFBQUltc0pKQUEKQUFDSlRDUjBa
c2RFSkhvZ0FJbXNKSXdBQUFEL0ZRQUFBQUNMK0ZkV2lYd2tPUC9Uall3a2dBQUFBRkZxR0ZlSlJD
UkkveFVBQUFBQQppNVFrakFBQUFBK3ZWQ1JFaTBRa0tGSlZVT2dBQUFBQWc4UU1hZ0pXL3hVQUFB
QUFWVmIvRlFBQUFBQm8vLy8vQUZiL0ZRQUFBQUJWClZ2OFZBQUFBQUZWcUFZMU1KQ2hSVlZWVlZW
Yi9GUUFBQUFBei96TGJPV3drUklsc0pCZ1BobVlCQUFBejBvbFVKQkE3L1hWaGkwd2sKUUFQSkE4
a3p3RHZOZGl1TFhDUW9BOU9OWkNRQWlod0NnUHNnZGdXQSsvQnlDWVBBQVR2QmN1enJDNHRVSkJD
TlBBSURmQ1FvaTBRawpHSXRVSkJBRGxDU01BQUFBZzhBQk8wUWtSSWxFSkJpSlZDUVFjcU03L1Er
RSt3QUFBRlZXL3hVQUFBQUFhUC8vL3dCVy94VUFBQUFBClZXb0JqVVFrS0ZCVlZWVlZWdjhWQUFB
QUFObm9pZ2ZaVkNRWTJWd2tFQSsyeUlsTUpCd1B0dFBiUkNRYzNRVUFBQUFBaVZRa0hOejUKMmNu
WlhDUTAyMFFrSE43eDJWd2tITmxFSkJEWlJDUWMyY25vQUFBQUFObGNKQ1RaUkNRazJWd2tGTmxF
SkRUWlJDUVE2QUFBQUFEWgpYQ1FrMlVRa0pOaEVKQlRjSlFBQUFBRFpYQ1FVMlVRa0ZObmgyVndr
Rk5sRUpCVFpYQ1FVMlVRa0ZObEVKQmpZMmQvZzlzUkJkUkRaClhDUVkyVVFrRU5rZEFBQUFBT3ND
M2RqWlJDUVEzQVVBQUFBQTJWd2tFTmtGQUFBQUFObEVKQkRZMGQvZzNkbjJ4QVVQaTJyLy8vL2QK
Mk9zZWkwUWtMTnRFSkN5RndIMEcyQVVBQUFBQTNEVUFBQUFBMlIwQUFBQUFpMHdrUElzOUFBQUFB
RkZXLzllTFZDUTRVbGIvMTR0RQpKREJRL3hVQUFBQUFWdjhWQUFBQUFOa0ZBQUFBQUY5ZVcxMkJ4
SWdBQUFERDJRVUFBQUFBWFlIRWlBQUFBTU1mQUFBQWVBQUFBQVlBCk1RQUFBSGNBQUFBR0FEOEFB
QUIzQUFBQUJnQkZBQUFBZEFBQUFBWUFUd0FBQUhNQUFBQUdBRlVBQUFCeUFBQUFCZ0JlQUFBQWNR
QUEKQUFZQWN3QUFBRzRBQUFBR0FJb0FBQUJ0QUFBQUJnQ1FBQUFBYWdBQUFBWUFCZ0VBQUdjQUFB
QUdBQ1VCQUFCbUFBQUFCZ0E5QVFBQQplUUFBQUJRQVNRRUFBR1VBQUFBR0FGRUJBQUJrQUFBQUJn
QmRBUUFBWXdBQUFBWUFaUUVBQUdJQUFBQUdBSGdCQUFCaEFBQUFCZ0Q5CkFRQUFZd0FBQUFZQUNR
SUFBR0lBQUFBR0FCd0NBQUJoQUFBQUJnQThBZ0FBWFFBQUFBWUFZUUlBQUI4QUFBQVVBSG9DQUFB
ZkFBQUEKRkFDTUFnQUFXZ0FBQUFZQXdRSUFBRmNBQUFBR0FNOENBQUJVQUFBQUJnRFpBZ0FBVVFB
QUFBWUFBZ01BQUcwQUFBQUdBQWdEQUFCcQpBQUFBQmdBT0F3QUFWd0FBQUFZQUdBTUFBSElBQUFB
R0FDOERBQUJPQUFBQUJnQTJBd0FBVFFBQUFBWUFQQU1BQUZjQUFBQUdBRTBECkFBQlhBQUFBQmdB
RUFBQUE5UUFBQUtRQUFBQUFBQUFBQUFBQUFGa0RBQUNJQUFBQUFBQUFBQUFBQUFEalBBQUFCd0FB
QUFRQUFBQUgKQUFBQVN3TUFBSWdBQUFBQUFBQUFBQUFBQURvOUFBQUFBQVFBQUFBQUFEd0FBQUFI
QXdBQWlBQUFBQUFBQUFBQUFBQUFwRDBBQUFBQQpDQUFBQUFBQVBRQUFBQVVEQUFDSUFBQUFBQUFB
QUFBQUFBQ2tQUUFBQUFBTUFBQUFBQUN2QUFBQWtnSUFBSWdBQUFBQUFBQUFBQUFBCkFLUTlBQUFB
QUJBQUFBQUFBUEVBQUFEdUFnQUFOd0FQRVFBQUFBQUFBQUFBQUFBQUFGa0RBQUFIQUFBQVVnTUFB
SDRUQUFBQUFBQUEKQUFBQVkyeGxZWEpVZVhCbFEyOXVkSEpoYzNRQUhBQVNFSWdBQUFBQUFBQUFB
QUFBQUJBQUFBQUFBQUFBQUFBQUFnQUFGUUFNRVgwVApBQUFBQUFBQUFBQnBaR1Z1ZEdsMGVRQVVB
QXNSb1AvLy93TUVBQUJ2YkdSQ2FYUnRZWEFBSGdBTEVZVC8vLy9aRUFBQWNtVm1aWEpsCmNtNWpa
VU5vWVhKaFkzUmxjZ0FUQUFzUm5QLy8vd01FQUFCdmJHUklSazlPVkFBWEFBc1JwUC8vLzNvVEFB
Qm5iSGx3YUUxbGRISnAKWTNNQUVRQUxFWXovLy84Z0JBQUFjR2w0Wld4ekFCSUFEQkZBQUFBQUFB
QUFBQUFBWjJGdGJXRUFFd0FMRVpELy8vOTFBQUFBWTI5dQpkSEpoYzNRQUVRQUxFWlQvLy85WEV3
QUFZbWwwYldGd0FCSUFDeEhrLy8vL2R4TUFBR0p0Y0VsdVptOEFGUUFMRWJqLy8vOTBFd0FBCllt
bDBiV0Z3U1c1bWJ3QVpBQXdSZFFBQUFBQUFBQUFBQUd4aGMzUkRiMjUwY21GemRBQU1BQXNSZlAv
Ly8zVUFBQUJwQUJNQUN4RjgKLy8vL1FBQUFBRzFwYmtSbGJIUmhBQXdBQ3hGMC8vLy9RQUFBQUdj
QUVBQUxFWGovLy85QUFBQUFaR1ZzZEdFQURnQTVFUjBBQUFBQQpBQUFBUlJNQUFBNEFPUkZEQUFB
QUFBQUFBRWtUQUFBT0FEa1JUUUFBQUFBQUFBQk9Fd0FBRGdBNUVWc0FBQUFBQUFBQVRSTUFBQTRB
Ck9SRnhBQUFBQUFBQUFGVVRBQUFPQURrUkJBRUFBQUFBQUFCZEV3QUFEZ0E1RVJJQkFBQUFBQUFB
VFJNQUFBNEFPUkVqQVFBQUFBQUEKQUdBVEFBQU9BRGtSUndFQUFBQUFBQUJpRXdBQURnQTVFVThC
QUFBQUFBQUFaQk1BQUE0QU9SRmJBUUFBQUFBQUFHWVRBQUFPQURrUgpZd0VBQUFBQUFBQm1Fd0FB
RGdBNUVYWUJBQUFBQUFBQWJSTUFBQTRBT1JIN0FRQUFBQUFBQUdZVEFBQU9BRGtSQndJQUFBQUFB
QUJtCkV3QUFEZ0E1RVJvQ0FBQUFBQUFBYlJNQUFBNEFPUkVlQXdBQUFBQUFBRTBUQUFBT0FEa1JK
Z01BQUFBQUFBQk5Fd0FBRGdBNUVTMEQKQUFBQUFBQUFiaE1BQUE0QU9SRTBBd0FBQUFBQUFHOFRB
QUFDQUFZQUFBRHlBQUFBbUFFQUFBQUFBQUFBQUFBQVdRTUFBTGdGQUFBdwpBQUFBakFFQUFBQUFB
QUJXQUFDQUJ3QUFBRndBQUlBOUFBQUFZUUFBZ0VrQUFBQmpBQUNBWFFBQUFHY0FBSUI4QUFBQWFB
QUFnSjhBCkFBQ3JBQUNBcGdBQUFISUFBSUNxQUFBQWN3QUFnSzhBQUFCNEFBQ0FEQUVBQUhrQUFJ
QVVBUUFBZkFBQWdDa0JBQUI5QUFDQVJBRUEKQUg4QUFJQk5BUUFBZ0FBQWdGVUJBQUNDQUFDQVlR
RUFBSU1BQUlCcEFRQUFoQUFBZ0h3QkFBQ0dBQUNBZmdFQUFJY0FBSUNBQVFBQQppQUFBZ0pnQkFB
Q0pBQUNBc0FFQUFJb0FBSUN6QVFBQWpRQUFnTDBCQUFDSkFBQ0F4QUVBQUkwQUFJREdBUUFBamdB
QWdQRUJBQUNVCkFBQ0ErUUVBQUpVQUFJQUJBZ0FBbGdBQWdBMENBQUNYQUFDQUlBSUFBSm9BQUlB
b0FnQUFtd0FBZ0ZvQ0FBQ2NBQUNBcGdJQUFKMEEKQUlDM0FnQUFuZ0FBZ0xzQ0FBQ2ZBQUNBeVFJ
QUFKc0FBSUR5QWdBQW9RQUFnUFFDQUFDakFBQ0FFZ01BQUtVQUFJQWdBd0FBcGdBQQpnQ2dEQUFD
bkFBQ0FNd01BQUtnQUFJQTZBd0FBcWdBQWdFUURBQUNyQUFDQVN3TUFBRjBBQUlCU0F3QUFxd0FB
Z0F3QUFBQk1BQUFBCkJ3RFlBQUFBVEFBQUFBc0EzQUFBQUV3QUFBQUtBQmNCQUFCeEFBQUFDd0Fi
QVFBQWNRQUFBQW9BcFFFQUFGY0FBQUFMQUtrQkFBQlgKQUFBQUNnQU1BZ0FBZHdBQUFBc0FFQUlB
QUhjQUFBQUtBR1lDQUFCTUFBQUFDd0JxQWdBQVRBQUFBQW9BZGdJQUFFd0FBQUFMQUhvQwpBQUJN
QUFBQUNnQ0dBZ0FBVEFBQUFBc0FpZ0lBQUV3QUFBQUtBSllDQUFCTUFBQUFDd0NhQWdBQVRBQUFB
QW9BcGdJQUFFd0FBQUFMCkFLb0NBQUJNQUFBQUNnQzJBZ0FBVEFBQUFBc0F1Z0lBQUV3QUFBQUtB
TVlDQUFCTUFBQUFDd0RLQWdBQVRBQUFBQW9BMWdJQUFFd0EKQUFBTEFOb0NBQUJNQUFBQUNnRG1B
Z0FBVEFBQUFBc0E2Z0lBQUV3QUFBQUtBUFlDQUFCTUFBQUFDd0Q2QWdBQVRBQUFBQW9BQmdNQQpB
RXdBQUFBTEFBb0RBQUJNQUFBQUNnQVdBd0FBVEFBQUFBc0FHZ01BQUV3QUFBQUtBQ1lEQUFCTUFB
QUFDd0FxQXdBQVRBQUFBQW9BCk5nTUFBRXdBQUFBTEFEb0RBQUJNQUFBQUNnQkdBd0FBVEFBQUFB
c0FTZ01BQUV3QUFBQUtBRllEQUFCTUFBQUFDd0JhQXdBQVRBQUEKQUFvQVpnTUFBRXdBQUFBTEFH
b0RBQUJNQUFBQUNnQjJBd0FBVEFBQUFBc0FlZ01BQUV3QUFBQUtBSVlEQUFCTUFBQUFDd0NLQXdB
QQpUQUFBQUFvQWxnTUFBRXdBQUFBTEFKb0RBQUJNQUFBQUNnQ3dBd0FBVEFBQUFBc0F0QU1BQUV3
QUFBQUtBRE16RTBBQUFBQ2dtWm01ClB3QUFBRUFBQUFBQUFBRHdQd0FBQUFBQTRHOUFBQUNBUHdB
QUFBQUFRSTlBQUFDQVR3QUFBUUFBQUFBQUFBQUFBQUFBQVFEUUJ3QUEKVm9zMUFBQUFBR29BYUFB
QUFBQnFBR3BLLzlacUFHZ0FBQUFBYWdCb0NpQUFBUC9XNkFBQUFBRFpIUUFBQUFER0JRQUFBQUFC
WHNNRApBQUFBZUFBQUFBWUFDZ0FBQUlNQUFBQUdBQmNBQUFDQ0FBQUFCZ0FsQUFBQVRBQUFBQlFB
S3dBQUFBMEFBQUFHQURFQUFBQ0JBQUFBCkJnQUVBQUFBOVFBQUFFUUFBQUFBQUFBQUFBQUFBRGdB
QUFBQUFBQUFBQUFBQUFBQUFBRGpQQUFBQVFBQUFBUUFBQUFCQUFBQU5nQUEKQUFBQUFBQUFBQUFB
QUFBQUFPTThBQUFBQUFRQUFBQUFBUEVBQUFDR0FBQUFRZ0FRRVFBQUFBQUFBQUFBQUFBQUFEZ0FB
QUFCQUFBQQpOd0FBQUljVEFBQUFBQUFBQUFBQWQydFRlWE4wWlcxR2IyNTBVMjF2YjNSb2FXNW5R
MmhoYm1kbFpBQWNBQklRQUFBQUFBQUFBQUFBCkFBQUFCQUFBQUFBQUFBQUFBQUFDQUFBT0FEa1JF
Z0FBQUFBQUFBQkZFd0FBRGdBNUVTSUFBQUFBQUFBQVJSTUFBQUlBQmdBQUFQSUEKQUFCSUFBQUFB
QUFBQUFBQUFBQTRBQUFBdUFVQUFBWUFBQUE4QUFBQUFBQUFBSzRBQUlBQkFBQUFyd0FBZ0JRQUFB
Q3dBQUNBSkFBQQpBTEVBQUlBdkFBQUFzZ0FBZ0RjQUFBQ3pBQUNBREFBQUFINEFBQUFIQUhnQUFB
QitBQUFBQ3dCOEFBQUFmZ0FBQUFvQXZnQUFBSDRBCkFBQUxBTUlBQUFCK0FBQUFDZ0RPQUFBQWZn
QUFBQXNBMGdBQUFINEFBQUFLQU9nQUFBQitBQUFBQ3dEc0FBQUFmZ0FBQUFvQWhmOTAKRkZCVy94
VUFBQUFBVjFiL0ZRQUFBQUNEeEJERGFnQlcveFVBQUFBQWc4UUl3d2dBQUFDS0FBQUFCZ0FRQUFB
QWlRQUFBQVlBSFFBQQpBSW9BQUFBR0FBUUFBQUQxQUFBQUpBQUFBQUFBQUFBQUFBQUFKUUFBQUFB
QUFBQUFBQUFBQUFBQUFPTThBQUFBQUFBQUJBQUFBUEVBCkFBRFpBQUFBT3dBUEVRQUFBQUFBQUFB
QUFBQUFBQ1VBQUFBQUFBQUFKQUFBQUlZVEFBQUFBQUFBQUFBQWMyVjBSbTl1ZEZOdGIyOTAKYUds
dVoxTjBlV3hsQUJ3QUVoQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFvQUFCSUFCaEVw
RUFBQUZ3QmpaME52Ym5SbAplSFFBRmdBR0VYVUFBQUFZQUhOdGIyOTBhR2x1WjFSNWNHVUFIQUFH
RVRBQUFBQUJBR1p2Ym5SQmJHeHZkM05UYlc5dmRHaHBibWNBCkRnQTVFUVlBQUFBQUFBQUFnQk1B
QUE0QU9SRU9BQUFBQUFBQUFJSVRBQUFPQURrUkd3QUFBQUFBQUFDQUV3QUFBZ0FHQUFBQUFQSUEK
QUFCUUFBQUFBQUFBQUFBQUFBQWxBQUFBdUFVQUFBY0FBQUJFQUFBQUFBQUFBTFlBQUlBQUFBQUF0
d0FBZ0FRQUFBQzRBQUNBREFBQQpBTGtBQUlBWEFBQUF2QUFBZ0JnQUFBQzdBQUNBSkFBQUFMd0FB
SUFNQUFBQWlBQUFBQWNBV0FBQUFJZ0FBQUFMQUZ3QUFBQ0lBQUFBCkNnRGhBQUFBaUFBQUFBc0E1
UUFBQUlnQUFBQUtBUEVBQUFDSUFBQUFDd0QxQUFBQWlBQUFBQW9BQVFFQUFJZ0FBQUFMQUFVQkFB
Q0kKQUFBQUNnQWNBUUFBaUFBQUFBc0FJQUVBQUlnQUFBQUtBRk5XaTNRa0RGZFdNLy8vRlFBQUFB
Q0R4QVNFd0hRTVZ2OFZBQUFBQUlQRQpCSXY0b1FBQUFBQ0Z3SXZZZEIyTFJDUVVVRmIvRlFBQUFB
QlRWdjhWQUFBQUFJUEVFSXZIWDE1Yncyb0FWdjhWQUFBQUFJUEVDSXZIClgxNWJ3d3dBQUFDUkFB
QUFCZ0FhQUFBQWtBQUFBQVlBSkFBQUFBc0FBQUFHQURZQUFBQ0tBQUFBQmdBK0FBQUFpUUFBQUFZ
QVVBQUEKQUlvQUFBQUdBQVFBQUFEMUFBQUFoQUFBQUFBQUFBQUFBQUFBWFFBQUFBQUFBQUFJQUFB
QUFBQUFBT004QUFBSEFBQUFCQUFBQUFFQQpBQUJiQUFBQUFBQUFBQWdBQUFBQUFBQUFJVDRBQUFZ
QUJBQUFBQUFBQWdBQUFGa0FBQUFBQUFBQUNBQUFBQUFBQUFBaFBnQUFCUUFJCkFBQUFBQUFIQUFB
QVV3QUFBQUFBQUFBSUFBQUFBQUFBQUNFK0FBQUFBQXdBQUFBQUFQRUFBQURuQUFBQVBRQVFFUUFB
QUFBQUFBQUEKQUFBQUFGMEFBQUFIQUFBQVhBQUFBSDRVQUFBQUFBQUFBQUFBZDJ0VFpYUkdiMjUw
VTIxdmIzUm9hVzVuVTNSNWJHVUFIQUFTRUFBQQpBQUFBQUFBQUFBQUFBQXdBQUFBQUFBQUFBQUFB
QWdBQUZBQUxFUVFBQUFBcEVBQUFZMmREYjI1MFpYaDBBQjRBQ3hFSUFBQUFNQUFBCkFHWnZiblJC
Ykd4dmQzTlRiVzl2ZEdocGJtY0FEZ0E1RVFvQUFBQUFBQUFBZ3hNQUFBNEFPUkVZQUFBQUFBQUFB
SVFUQUFBT0FEa1IKTkFBQUFBQUFBQUNBRXdBQURnQTVFVHdBQUFBQUFBQUFnaE1BQUE0QU9SRk9B
QUFBQUFBQUFJQVRBQUFDQUFZQUFQSUFBQUJnQUFBQQpBQUFBQUFBQUFBQmRBQUFBdUFVQUFBa0FB
QUJVQUFBQUFBQUFBTDhBQUlBQ0FBQUF3UUFBZ0JjQUFBRENBQUNBSXdBQUFNTUFBSUJGCkFBQUF4
UUFBZ0VvQUFBREdBQUNBU3dBQUFNTUFBSUJYQUFBQXhRQUFnRndBQUFER0FBQ0FEQUFBQUk4QUFB
QUhBTGdBQUFDUEFBQUEKQ3dDOEFBQUFqd0FBQUFvQUx3RUFBSThBQUFBTEFETUJBQUNQQUFBQUNn
QS9BUUFBandBQUFBc0FRd0VBQUk4QUFBQUtBRThCQUFDUApBQUFBQ3dCVEFRQUFqd0FBQUFvQVh3
RUFBSThBQUFBTEFHTUJBQUNQQUFBQUNnQnZBUUFBandBQUFBc0Fjd0VBQUk4QUFBQUtBSWdCCkFB
Q1BBQUFBQ3dDTUFRQUFqd0FBQUFvQVY0dDhKQXlGLzNRY1ZvdDBKQXhxQVZiL0ZRQUFBQUJYVnY4
VkFBQUFBSVBFRUY1ZncxL0gKUkNRSUFBQUFBUDhsQUFBQUFCTUFBQUNLQUFBQUJnQWJBQUFBaVFB
QUFBWUFNQUFBQUlvQUFBQUdBQVFBQUFEMUFBQUFaQUFBQUFBQQpBQUFBQUFBQU5BQUFBQUFBQUFB
SUFBQUFBQUFBQU9NOEFBQUJBQUFBQkFBQUFBRUFBQUFsQUFBQUFBQUFBQWdBQUFBQUFBQUE0endB
CkFBQUFCQUFBQUFBQUNnQUFBQmtBQUFBQUFBQUFDQUFBQUFBQUFBRGpQQUFBQUFBSUFBQUFBQUR4
QUFBQXdBQUFBRUVBRUJFQUFBQUEKQUFBQUFBQUFBQUEwQUFBQUFRQUFBQ1lBQUFDQ0V3QUFBQUFB
QUFBQUFIZHJVbVZ6ZEc5eVpVWnZiblJUYlc5dmRHaHBibWRUZEhscwpaUUFjQUJJUUFBQUFBQUFB
QUFBQUFBQUFDQUFBQUFBQUFBQUFBQUFDQUFBVUFBc1JCQUFBQUNrUUFBQmpaME52Ym5SbGVIUUFF
d0FMCkVRZ0FBQUIxQUFBQWIyeGtVM1I1YkdVQURnQTVFUkVBQUFBQUFBQUFnQk1BQUE0QU9SRVpB
QUFBQUFBQUFJSVRBQUFPQURrUkxnQUEKQUFBQUFBQ0FFd0FBQWdBR0FQSUFBQUE0QUFBQUFBQUFB
QUFBQUFBMEFBQUF1QVVBQUFRQUFBQXNBQUFBQUFBQUFNa0FBSUFCQUFBQQp5Z0FBZ0NRQUFBRExB
QUNBSlFBQUFNb0FBSUFNQUFBQWxnQUFBQWNBbUFBQUFKWUFBQUFMQUp3QUFBQ1dBQUFBQ2dBSUFR
QUFsZ0FBCkFBc0FEQUVBQUpZQUFBQUtBQmdCQUFDV0FBQUFDd0FjQVFBQWxnQUFBQW9BS0FFQUFK
WUFBQUFMQUN3QkFBQ1dBQUFBQ2dCQUFRQUEKbGdBQUFBc0FSQUVBQUpZQUFBQUtBSVBzUE5rRkFB
QUFBRk9MWENSUTJWd2tDSVRiVm90MEpFakdSQ1FRQWNaRUpBc0JkRXFBUFFBQQpBQUFBeGtRa0N3
QjFCZWdBQUFBQWd6MEFBQUFBQU5rRkFBQUFBTmxjSkF3UGxjQ0RQUUFBQUFBQmlFUWtFSFVXYWhC
Vy94VUFBQUFBCjJRVUFBQUFBMlZ3a0ZJUEVDTmxFSkF4UjJSd2tWdjhWQUFBQUFGTlcveFVBQUFB
QWkwd2tJRkZXL3hVQUFBQUFqVlFrUkZaUy94VUEKQUFBQTJlaUxDSXRRQklsTUpEVFlWQ1EwaTBn
SWlWUWtPSXRRRElsTUpEeUxTQkNKVkNSQWkxQVUzK0NEeENEMnhFU0pUQ1FraVZRawpLSG8rMlVR
a0lOM2gzK0RkMmZiRVJIc1IyUVVBQUFBQTJ1bmY0UGJFUkhvaTZ3TGQyTm51MkZRa0dOL2c5c1JF
ZWcvWVhDUWMzK0QyCnhFUjZCckFCNndUZDJETEFnSHdrQ3dDSVJDUlVkQStBZkNSTUFIVUVoTUIx
QkxBQjZ3SXl3RkJXL3hVQUFBQUFpMFFrWEZCVy94VUEKQUFBQWc4UVFYbHVEeER6REJRQUFBS29B
QUFBR0FDY0FBQUNCQUFBQUJnQTBBQUFBZmdBQUFCUUFPZ0FBQUlNQUFBQUdBRUVBQUFBTgpBQUFB
QmdCT0FBQUFnZ0FBQUFZQVhnQUFBSWtBQUFBR0FHUUFBQUJSQUFBQUJnQjZBQUFBcHdBQUFBWUFn
Z0FBQUtZQUFBQUdBSTRBCkFBQ2xBQUFBQmdDYUFBQUFwQUFBQUFZQTZBQUFBS01BQUFBR0FEa0JB
QUNkQUFBQUJnQkZBUUFBbkFBQUFBWUFCQUFBQVBVQUFBQmsKQUFBQUFBQUFBQUFBQUFCU0FRQUFQ
QUFBQUJBQUFBQUFBQUFBNHp3QUFCVUFBQUFFQUFBQUNnQUFBRVFCQUFBOEFBQUFFQUFBQUFBQQpB
QUNKUGdBQUN3QUVBQUFBQUFBVkFBQUFPQUVBQUR3QUFBQVFBQUFBQUFBQUFJaytBQUFBQUFnQUFB
QUFBUEVBQUFEVEFRQUFSZ0FRCkVRQUFBQUFBQUFBQUFBQUFBRklCQUFBVkFBQUFUZ0VBQUlBVUFB
QUFBQUFBQUFBQWQydFRaWFJEUjBOdmJuUmxlSFJHYjI1MFVtVnUKWkdWeWFXNW5VM1I1YkdVQUhB
QVNFRHdBQUFBQUFBQUFBQUFBQUFnQUFBQUFBQUFBQUFBQUFnQUFGQUFMRVFRQUFBQXBFQUFBWTJk
RApiMjUwWlhoMEFCY0FDeEVJQUFBQU1BQUFBR2x6VTNsemRHVnRSbTl1ZEFBWUFBc1JEQUFBQURB
QUFBQnBjMUJ5YVc1MFpYSkdiMjUwCkFDSUFDeEVRQUFBQU1BQUFBSFZ6WlZCc1lYUm1iM0p0VG1G
MGFYWmxSMng1Y0doekFCd0FDeEVRQUFBQU1BQUFBR2x6VUhWeVpWUnkKWVc1emJHRjBhVzl1QUJN
QUN4SEUvLy8vUUFBQUFHTnZiblJ5WVhOMEFCb0FDeEhJLy8vL01BQUFBSE5vYjNWc1pFRnVkR2xo
YkdsaApjd0FlQUFzUncvLy8vekFBQUFCdFlYbFRkV0p3YVhobGJGQnZjMmwwYVc5dUFCc0FDeEhN
Ly8vL0VSQUFBR052Ym5SbGVIUlVjbUZ1CmMyWnZjbTBBRGdBNUVWd0FBQUFBQUFBQWdoTUFBQTRB
T1JGNEFBQUFBQUFBQUlrVEFBQU9BRGtSZ0FBQUFBQUFBQUNBRXdBQURnQTUKRVl3QUFBQUFBQUFB
Z0JNQUFBNEFPUkdZQUFBQUFBQUFBR3NTQUFBT0FEa1JOd0VBQUFBQUFBQ0FFd0FBRGdBNUVVTUJB
QUFBQUFBQQpnQk1BQUFJQUJnQUE4Z0FBQUtBQUFBQUFBQUFBQUFBQUFGSUJBQUM0QlFBQUVRQUFB
SlFBQUFBQUFBQUF6Z0FBZ0FNQUFBRFJBQUNBCkNnQUFBTklBQUlBbEFBQUExUUFBZ0RNQUFBRFdB
QUNBT0FBQUFOZ0FBSUJNQUFBQTJRQUFnRmtBQUFEYUFBQ0FZZ0FBQU5zQUFJQnYKQUFBQTNnQUFn
SDRBQUFEZkFBQ0FoZ0FBQU9BQUFJQ1NBQUFBNFFBQWdKNEFBQURpQUFDQUdRRUFBT01BQUlBOUFR
QUE1QUFBZ0U0QgpBQURsQUFDQURBQUFBSnNBQUFBSEFKZ0FBQUNiQUFBQUN3Q2NBQUFBbXdBQUFB
b0Eyd0VBQUpzQUFBQUxBTjhCQUFDYkFBQUFDZ0RyCkFRQUFtd0FBQUFzQTd3RUFBSnNBQUFBS0FQ
c0JBQUNiQUFBQUN3RC9BUUFBbXdBQUFBb0FDd0lBQUpzQUFBQUxBQThDQUFDYkFBQUEKQ2dBYkFn
QUFtd0FBQUFzQUh3SUFBSnNBQUFBS0FDc0NBQUNiQUFBQUN3QXZBZ0FBbXdBQUFBb0FPd0lBQUpz
QUFBQUxBRDhDQUFDYgpBQUFBQ2dCVUFnQUFtd0FBQUFzQVdBSUFBSnNBQUFBS0FBQUFBQUFBQUlD
L0FBQUFRSUI4SkFRQWRReUFmQ1FJQUxnQkFBQUFkQVc0CkRRQUFBTU1FQUFBQTlRQUFBQ1FBQUFB
QUFBQUFBQUFBQUJrQUFBQUFBQUFBQ0FBQUFBQUFBQURqUEFBQUFBQUFBQVFBQUFEeEFBQUEKa2dB
QUFEc0FEeEVBQUFBQUFBQUFBQUFBQUFBWkFBQUFBQUFBQUJnQUFBQ0xFd0FBQUFBQUFBQUFBSEps
Ym1SbGNtbHVaMU4wZVd4bApSbTl5Um05dWRBQWNBQklRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFDQUtBQUFYQUFzUkJBQUFBREFBQUFCcGMxTjVjM1JsCmJVWnZiblFBR0FBTEVRZ0FBQUF3
QUFBQWFYTlFjbWx1ZEdWeVJtOXVkQUFDQUFZQUFBRHlBQUFBUUFBQUFBQUFBQUFBQUFBQUdRQUEK
QUxnRkFBQUZBQUFBTkFBQUFBQUFBQURvQUFDQUFBQUFBT3NBQUlBTUFBQUE3Z0FBZ0JNQUFBRHNB
QUNBR0FBQUFPOEFBSUFNQUFBQQpyd0FBQUFjQVdBQUFBSzhBQUFBTEFGd0FBQUN2QUFBQUNnRFVB
QUFBcndBQUFBc0EyQUFBQUs4QUFBQUtBRkhaUkNRSWcrd0kzUndrCi94VUFBQUFBMlZ3a0NJUEVD
TmtFSk5rY0pObnUyVVFrQ05qUjMrRGQyZGtFSlBiRVFkbkEzdUxaeWR3ZEFBQUFBTi9nZFJYMnhF
RjEKQnR3bEFBQUFBTmxjSkFqWlJDUUlXY1AyeEFGMUJ0d2xBQUFBQU5sY0pBalpSQ1FJV2NNTkFB
QUFHUUFBQUFZQU9BQUFBTGNBQUFBRwpBRWNBQUFCYUFBQUFCZ0JjQUFBQVdnQUFBQVlBQkFBQUFQ
VUFBQUFrQUFBQUFBQUFBQUFBQUFCcUFBQUFCQUFBQUFRQUFBQUFBQUFBCjR6d0FBQUVBQUFBRUFB
QUE4UUFBQUlRQUFBQXNBQThSQUFBQUFBQUFBQUFBQUFBQWFnQUFBQUVBQUFCb0FBQUF1aEFBQUFB
QUFBQUEKQUFCeWIzVnVaR1lBSEFBU0VBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdB
QURnQUxFUVFBQUFCQUFBQUFiblZ0QUJJQQpDeEg0Ly8vL1FBQUFBR2x1ZEdWblpYSUFEZ0E1RVFz
QUFBQUFBQUFBcmhBQUFBSUFCZ0R5QUFBQVVBQUFBQUFBQUFBQUFBQUFhZ0FBCkFMZ0ZBQUFIQUFB
QVJBQUFBQUFBQUFEeUFBQ0FBUUFBQVBNQUFJQWVBQUFBOUFBQWdDb0FBQUQxQUFDQVV3QUFBUGNB
QUlCVkFBQUEKOWdBQWdHZ0FBQUQzQUFDQURBQUFBTFFBQUFBSEFGZ0FBQUMwQUFBQUN3QmNBQUFB
dEFBQUFBb0FyQUFBQUxRQUFBQUxBTEFBQUFDMApBQUFBQ2dERUFBQUF0QUFBQUFzQXlBQUFBTFFB
QUFBS0FBQUFBQUFBQU9BL2crd2tnSHdrTUFCMUQ0QjhKRFFBeDBRa01BRUFBQUIwCkNNZEVKREFO
QUFBQWkwUWtQSXRVSkRCVFZZdHNKREJXaTNRa09GZFFhZ0dOVENSUVVWSldWZjhWQUFBQUFJc2RB
QUFBQUdoNGRHMW8KVmYvVGkvaUR4Q0NGL3crRVFRRUFBR2hoWldob1ZmL1RpOWlEeEFpRjIzVVNW
LzhWQUFBQUFJUEVCRjllWFZ1RHhDVERVLzhWQUFBQQpBSVBFQklQNEpITVhWNHMxQUFBQUFQL1dV
Ly9XZzhRSVgxNWRXNFBFSk1OVC94VUFBQUFBWm90QUlvUEVCR2JCd0FnUHQ4Qm1oY0IwCnoyWTVS
Q1JJY2dxRHdQOFB0OGlKVENSSVYvOFZBQUFBQUErM1ZDUk1nOFFFalF5VkJBQUFBRHZCVjN5ay94
VUFBQUFBRDdkVUpFeG0KaXdTUVpzSEFDQSszd0ErM3lJbE1KQlJWMjBRa0dOMWNKQnovRlFBQUFB
Q0pSQ1FZMjBRa0dJc1dpMDRJaTBZRTNId2tISWxVSkNTTApWZ3lKVENRc2kwNFVpVVFrS0l0R0VJ
dDBKRlNEeEFqMlJDUkFCSWxVSkNpSlJDUXNpVXdrTU5sY0pCVFpSQ1FjMkV3a0ZObEVKQ1RjCkRR
QUFBQURld2RsY0pCVFpSQ1FVMlJaMUVGSFpIQ1RvQUFBQUFOa2VnOFFFNndMZDJJczFBQUFBQUZQ
LzFsZi8xb1BFQ0Y5ZVhWdUQKeENURFFnQUFBTVVBQUFBR0FFZ0FBQURFQUFBQUJnQjFBQUFBd3dB
QUFBWUFod0FBQU1JQUFBQUdBSllBQUFEREFBQUFCZ0N0QUFBQQp3UUFBQUFZQTJBQUFBTUlBQUFB
R0FQSUFBQURCQUFBQUJnQVlBUUFBd0FBQUFBWUFid0VBQUw4QUFBQUdBSVlCQUFDMEFBQUFGQUNW
CkFRQUF3d0FBQUFZQUJBQUFBUFVBQUFDa0FBQUFBQUFBQUFBQUFBQ3FBUUFBSkFBQUFCZ0FBQUFB
QUFBQTR6d0FBQU1BQUFBRUFBQUEKS2dBQUFId0JBQUFrQUFBQUdBQUFBQUFBQUFEeVBnQUFBQUFF
QUFBQUFBQXJBQUFBZWdFQUFDUUFBQUFZQUFBQUFBQUFBRnMvQUFBQQpBQWdBQUFBQUFEQUFBQUIw
QVFBQUpBQUFBQmdBQUFBQUFBQUFXejhBQUFBQURBQUFBQUFBTlFBQUFHNEJBQUFrQUFBQUdBQUFB
QUFBCkFBQmJQd0FBQUFBUUFBQUFBQUR4QUFBQXRnRUFBRGdBRUJFQUFBQUFBQUFBQUFBQUFBQ3FB
UUFBQXdBQUFLWUJBQUNDRkFBQUFBQUEKQUFBQUFIZHJSMlYwUjJ4NWNHaEJaSFpoYm1ObGN3QWNB
QklRSkFBQUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFBQUFBQUNBQUFQQUFzUgpCQUFBQUkwVEFBQm1i
MjUwQUF3QUN4RUlBQUFBbkJNQUFHMEFGd0FMRVF3QUFBQXdBQUFBYVhOVGVYTjBaVzFHYjI1MEFC
Z0FDeEVRCkFBQUFNQUFBQUdselVISnBiblJsY2tadmJuUUFFQUFMRVJRQUFBQWhBQUFBWjJ4NWNH
Z0FFZ0FMRVJnQUFBQ2JFd0FBWVdSMllXNWoKWlFBUUFBc1JEQUFBQUhVQUFBQnpkSGxzWlFBT0FE
a1JRQUFBQUFBQUFBQ1NFd0FBRGdBNUVWSUFBQUFBQUFBQWxCTUFBQTRBT1JGbgpBQUFBQUFBQUFK
UVRBQUFPQURrUmN3QUFBQUFBQUFCZUVnQUFEZ0E1RVlVQUFBQUFBQUFBbFJNQUFBNEFPUkdhQUFB
QUFBQUFBRjRTCkFBQU9BRGtSblFBQUFBQUFBQUJlRWdBQURnQTVFYXNBQUFBQUFBQUFsaE1BQUE0
QU9SSFdBQUFBQUFBQUFKVVRBQUFPQURrUjhBQUEKQUFBQUFBQ1dFd0FBRGdBNUVSWUJBQUFBQUFB
QW1CTUFBQTRBT1JHYUFRQUFBQUFBQUY0U0FBQU9BRGtSblFFQUFBQUFBQUJlRWdBQQpBZ0FHQUFB
QThnQUFBQ0FCQUFBQUFBQUFBQUFBQUtvQkFBQzRCUUFBSVFBQUFCUUJBQUFBQUFBQStnQUFnQU1B
QUFEN0FBQ0FJUUFBCkFQd0FBSUJHQUFBQUFRRUFnRmtBQUFBQ0FRQ0FZUUFBQUFRQkFJQnVBQUFB
QlFFQWdISUFBQUFHQVFDQWdBQUFBQzBCQUlDRUFBQUEKREFFQWdKTUFBQUFOQVFDQW5BQUFBQTRC
QUlDZEFBQUFMQUVBZ0tZQUFBQXRBUUNBcWdBQUFCSUJBSUN4QUFBQUV3RUFnTDhBQUFBVQpBUUNB
d2dBQUFCY0JBSURFQUFBQUdnRUFnTXNBQUFBYkFRQ0ExUUFBQUIwQkFJRHRBQUFBSGdFQWdPNEFB
QUFnQVFDQThBQUFBQ01CCkFJRDJBQUFBSkFFQWdBWUJBQUFsQVFDQUpBRUFBQ1lCQUlCRkFRQUFK
d0VBZ0V3QkFBQW9BUUNBZ1FFQUFDa0JBSUNUQVFBQUt3RUEKZ0p3QkFBQXNBUUNBcGdFQUFDMEJB
SUFNQUFBQXZBQUFBQWNBMkFBQUFMd0FBQUFMQU53QUFBQzhBQUFBQ2dDZUFRQUF2QUFBQUFzQQpv
Z0VBQUx3QUFBQUtBSzRCQUFDOEFBQUFDd0N5QVFBQXZBQUFBQW9BdmdFQUFMd0FBQUFMQU1JQkFB
QzhBQUFBQ2dET0FRQUF2QUFBCkFBc0EwZ0VBQUx3QUFBQUtBTjRCQUFDOEFBQUFDd0RpQVFBQXZB
QUFBQW9BN2dFQUFMd0FBQUFMQVBJQkFBQzhBQUFBQ2dEK0FRQUEKdkFBQUFBc0FBZ0lBQUx3QUFB
QUtBQTRDQUFDOEFBQUFDd0FTQWdBQXZBQUFBQW9BSGdJQUFMd0FBQUFMQUNJQ0FBQzhBQUFBQ2dB
dQpBZ0FBdkFBQUFBc0FNZ0lBQUx3QUFBQUtBRDRDQUFDOEFBQUFDd0JDQWdBQXZBQUFBQW9BVGdJ
QUFMd0FBQUFMQUZJQ0FBQzhBQUFBCkNnQmVBZ0FBdkFBQUFBc0FZZ0lBQUx3QUFBQUtBSGdDQUFD
OEFBQUFDd0I4QWdBQXZBQUFBQW9BQUFBQUFBQUFBQUQvSlFBQUFBQUMKQUFBQXl3QUFBQVlBQkFB
QUFQVUFBQUFrQUFBQUFBQUFBQUFBQUFBR0FBQUFBQUFBQUJBQUFBQUFBQUFBNHp3QUFBQUFBQUFF
QUFBQQo4UUFBQUxJQUFBQXhBQkFSQUFBQUFBQUFBQUFBQUFBQUJnQUFBQUFBQUFBR0FBQUFoQlFB
QUFBQUFBQUFBQUIzYTBkbGRFZHNlWEJvCmN3QWNBQklRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUNBQUFQQUFzUkJBQUFBSTBUQUFCbWIyNTBBQlVBQ3hFSUFBQUEKMmhBQUFHTm9ZWEpo
WTNSbGNuTUFFUUFMRVF3QUFBQWhCQUFBWjJ4NWNHaHpBQkFBQ3hFUUFBQUFkUUFBQUdOdmRXNTBB
QTRBT1JFQQpBQUFBQUFBQUFKNFRBQUFDQUFZQUFBRHlBQUFBS0FBQUFBQUFBQUFBQUFBQUJnQUFB
TGdGQUFBQ0FBQUFIQUFBQUFBQUFBQXdBUUNBCkFBQUFBREVCQUlBTUFBQUF5Z0FBQUFjQVdBQUFB
TW9BQUFBTEFGd0FBQURLQUFBQUNnRGFBQUFBeWdBQUFBc0EzZ0FBQU1vQUFBQUsKQVBRQUFBREtB
QUFBQ3dENEFBQUF5Z0FBQUFvQVZtb0IveFVBQUFBQS94VUFBQUFBaS9CcUFGYi9GUUFBQUFDTFJD
UVVVRmIvRlFBQQpBQUNEeEJSZXd3VUFBQURVQUFBQUJnQUxBQUFBMHdBQUFBWUFGZ0FBQU5JQUFB
QUdBQ0lBQUFEUkFBQUFCZ0FFQUFBQTlRQUFBRVFBCkFBQUFBQUFBQUFBQUFDc0FBQUFBQUFBQUJB
QUFBQUFBQUFEalBBQUFBUUFBQUFRQUFBQUJBQUFBS1FBQUFBQUFBQUFFQUFBQUFBQUEKQU9NOEFB
QUFBQVFBQUFBQUFQRUFBQUNvQUFBQU5nQVFFUUFBQUFBQUFBQUFBQUFBQUNzQUFBQUJBQUFBS2dB
QUFJVVVBQUFBQUFBQQpBQUFBZDJ0VFpYUlZjRVp2Ym5SRFlXTm9aUUFjQUJJUUFBQUFBQUFBQUFB
QUFBQUFCQUFBQUFBQUFBQUFBQUFDQUFBTUFBc1JCQUFBCkFIVUFBQUJ6QUE0QU9SRURBQUFBQUFB
QUFLQVRBQUFPQURrUkNRQUFBQUFBQUFDakV3QUFEZ0E1RVJRQUFBQUFBQUFBcFJNQUFBNEEKT1JF
Z0FBQUFBQUFBQUtjVEFBQUNBQVlBOGdBQUFFZ0FBQUFBQUFBQUFBQUFBQ3NBQUFDNEJRQUFCZ0FB
QUR3QUFBQUFBQUFBTlFFQQpnQUVBQUFBM0FRQ0FDUUFBQURnQkFJQVJBQUFBT1FFQWdCb0FBQUE2
QVFDQUtnQUFBRHNCQUlBTUFBQUEwQUFBQUFjQWVBQUFBTkFBCkFBQUxBSHdBQUFEUUFBQUFDZ0RB
QUFBQTBBQUFBQXNBeEFBQUFOQUFBQUFLQU5BQUFBRFFBQUFBQ3dEVUFBQUEwQUFBQUFvQTRBQUEK
QU5BQUFBQUxBT1FBQUFEUUFBQUFDZ0R3QUFBQTBBQUFBQXNBOUFBQUFOQUFBQUFLQUFnQkFBRFFB
QUFBQ3dBTUFRQUEwQUFBQUFvQQppMHdrQ0l0VUpBeUQ3QmlMeElrSWkwd2tLSWxRQkl0VUpDeUpT
QWlMVENRd2lWQU1pMVFrTklsSUVJbFFGSXRFSkJ4US94VUFBQUFBCmc4UWN3elVBQUFEYUFBQUFC
Z0FFQUFBQTlRQUFBQ1FBQUFBQUFBQUFBQUFBQUQwQUFBQUFBQUFBSEFBQUFBQUFBQURqUEFBQUFB
QUEKQUFRQUFBRHhBQUFBbHdBQUFEa0FFQkVBQUFBQUFBQUFBQUFBQUFBOUFBQUFBQUFBQUR3QUFB
Q3BFd0FBQUFBQUFBQUFBSGRyVTJWMApVR0YwZEdWeWJrSmhjMlZEVkUwQUhBQVNFQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQUFFZ0FMRVFRQUFBQXBFQUFBClkyOXVkR1Y0ZEFBVUFB
c1JDQUFBQUJFUUFBQjBjbUZ1YzJadmNtMEFEZ0E1RVRNQUFBQUFBQUFBcVJNQUFBSUFCZ0FBOGdB
QUFEQUEKQUFBQUFBQUFBQUFBQUQwQUFBQzRCUUFBQXdBQUFDUUFBQUFBQUFBQVBnRUFnQUFBQUFB
L0FRQ0FQQUFBQUVBQkFJQU1BQUFBMlFBQQpBQWNBV0FBQUFOa0FBQUFMQUZ3QUFBRFpBQUFBQ2dD
L0FBQUEyUUFBQUFzQXd3QUFBTmtBQUFBS0FOZ0FBQURaQUFBQUN3RGNBQUFBCjJRQUFBQW9BZ2V5
SUFBQUFVMVZXaTdRa21BQUFBRmVOUkNRNFZsRC9GUUFBQUFDTEVJUHNFSXZNaVJHTFVBU0pVUVNM
VUFpSlVRaUwKVUF5SlVReUxVQkNMUUJTSlVSQ0pRUlNOakNTQUFBQUFVZjhWQUFBQUFJdFFESXRJ
RUlzNGkxZ0VpMmdJaVZRa09JdFFGSTFFSkd4VwpVSWxNSkVTSlZDUkkveFVBQUFBQWkxUWtRSVBF
REl2TWlUbUpXUVNKYVFpSlVReUxWQ1E0aVZFUWkxUWtQSWxSRklzUWcrd1lpOHlKCkVZdFFCSWxS
Qkl0UUNJbFJDSXRRRElsUkRJdFFFSXRBRklsUkVJbEJGSTJNSkxBQUFBQlIveFVBQUFBQTJZUWsy
QUFBQUlzUTJjQ0wKU0FTSlZDUkVpMUFJaVV3a1NJdElESWxVSkV5TFVCQ0xRQlNKVENSUWlWUWtW
SWxFSkZqWVRDUk0yWVFrMUFBQUFObkEyRXdrUk43QwoyVVFrVk43QzJjblpYQ1JrMlVRa1VON0sy
RXdrU043QjJFUWtXTmxjSkdqWlJDUmsyVndrWEl0VUpGelpSQ1JvMlZ3a1lJdE1KR0JSClVsYi9G
UUFBQUFDRHhFQmZYbDFiZ2NTSUFBQUF3eGtBQUFEakFBQUFCZ0JPQUFBQTRnQUFBQVlBZHdBQUFL
UUFBQUFHQU00QUFBRGgKQUFBQUJnQlVBUUFBNEFBQUFBWUFCQUFBQVBVQUFBQmtBQUFBQUFBQUFB
QUFBQUJtQVFBQWlBQUFBQXdBQUFBQUFBQUE0endBQUJFQQpDQUFFQUFBQUJ3QUFBRjhCQUFDSUFB
QUFEQUFBQUFBQUFBRFdQd0FBQ2dBTUFBQUFBQUFJQUFBQVhnRUFBSWdBQUFBTUFBQUFBQUFBCkFF
QkFBQUFKQUJBQUFBQUFBUEVBQUFEaEFBQUFRZ0FRRVFBQUFBQUFBQUFBQUFBQUFHWUJBQUFSQUFB
QVd3RUFBSWNVQUFBQUFBQUEKQUFBQWQydFRaWFJRWVhSMFpYSnVVR2hoYzJWSmJsVnpaWEpUY0dG
alpRQWNBQklRaUFBQUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFBQQpBQUFDQUFBU0FBc1JCQUFBQUNr
UUFBQmpiMjUwWlhoMEFCVUFDeEVJQUFBQUNCQUFBSEJvWVhObFVHOXBiblFBRGdBNUVSY0FBQUFB
CkFBQUFheElBQUE0QU9SRk1BQUFBQUFBQUFLMFRBQUFPQURrUmRRQUFBQUFBQUFCckVnQUFEZ0E1
RWN3QUFBQUFBQUFBcXhNQUFBNEEKT1JGU0FRQUFBQUFBQUxFVEFBQUNBQVlBQUFBQThnQUFBRUFB
QUFBQUFBQUFBQUFBQUdZQkFBQzRCUUFBQlFBQUFEUUFBQUFBQUFBQQpRd0VBZ0FrQUFBQkVBUUNB
MGdBQUFFVUJBSUEzQVFBQVJ3RUFnRnNCQUFCSUFRQ0FEQUFBQU44QUFBQUhBSmdBQUFEZkFBQUFD
d0NjCkFBQUEzd0FBQUFvQUNRRUFBTjhBQUFBTEFBMEJBQURmQUFBQUNnQVpBUUFBM3dBQUFBc0FI
UUVBQU44QUFBQUtBQ2tCQUFEZkFBQUEKQ3dBdEFRQUEzd0FBQUFvQU9RRUFBTjhBQUFBTEFEMEJB
QURmQUFBQUNnQkpBUUFBM3dBQUFBc0FUUUVBQU44QUFBQUtBR1FCQUFEZgpBQUFBQ3dCb0FRQUEz
d0FBQUFvQWcreDRVMVZXaTdRa2pBQUFBRmVOUkNRb1ZsRC9GUUFBQUFDTEVJUHNFSXZNaVJHTFVB
U0pVUVNMClVBaUpVUWlMVUF5SlVReUxVQkNMUUJTSlVSQ0pRUlNOVENSWVVmOFZBQUFBQUl0UURJ
dElFSXM0aTFnRWkyZ0lpVlFrT0l0UUZJMUUKSkhSV1VJbE1KRVNKVkNSSS94VUFBQUFBaTFRa1FJ
UEVESXZNaVRtSldRU0phUWlKVVF5TFZDUTRpVkVRaTFRa1BJbFJGSXNRZyt3WQppOHlKRVl0UUJJ
bFJCSXRRQ0lsUkNJdFFESWxSREl0UUVJdEFGSWxSRUlsQkZJMk1KS0FBQUFCUi94VUFBQUFBaTR3
a3dBQUFBSXNRCmlSR0xVQVNKVVFTTFVBaUpVUWlMVUF5SlVReUxVQkNMUUJTSlVSQ0R4RFNKUVJS
ZlhsMkx3VnVEeEhqREZnQUFBT01BQUFBR0FFZ0EKQUFEaUFBQUFCZ0J4QUFBQXBBQUFBQVlBeUFB
QUFPRUFBQUFHQUFRQUFBRDFBQUFBWkFBQUFBQUFBQUFBQUFBQUFnRUFBSGdBQUFBSQpBQUFBQUFB
QUFPTThBQUFPQUFnQUJBQUFBQVFBQUFEK0FBQUFlQUFBQUFnQUFBQUFBQUFBdlVBQUFBb0FEQUFB
QUFBQUJRQUFBUDBBCkFBQjRBQUFBQ0FBQUFBQUFBQUFuUVFBQUNRQVFBQUFBQUFEeEFBQUFzQUFB
QURnQUVCRUFBQUFBQUFBQUFBQUFBQUFDQVFBQURnQUEKQVBnQUFBQnJFZ0FBQUFBQUFBQUFBSGRy
UjJWMFZYTmxjbFJ2UW1GelpVTlVUUUFjQUJJUWVBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQQpBQUFB
QUFBQ0FBQVNBQXNSQ0FBQUFDa1FBQUJqYjI1MFpYaDBBQTRBT1JFVUFBQUFBQUFBQUdzU0FBQU9B
RGtSUmdBQUFBQUFBQUN0CkV3QUFEZ0E1RVc4QUFBQUFBQUFBYXhJQUFBNEFPUkhHQUFBQUFBQUFB
S3NUQUFBQ0FBWUE4Z0FBQURBQUFBQUFBQUFBQUFBQUFBSUIKQUFDNEJRQUFBd0FBQUNRQUFBQUFB
QUFBU3dFQWdBWUFBQUJNQVFDQStBQUFBRTBCQUlBTUFBQUE2QUFBQUFjQW1BQUFBT2dBQUFBTApB
SndBQUFEb0FBQUFDZ0RvQUFBQTZBQUFBQXNBN0FBQUFPZ0FBQUFLQVBnQUFBRG9BQUFBQ3dEOEFB
QUE2QUFBQUFvQUNBRUFBT2dBCkFBQUxBQXdCQUFEb0FBQUFDZ0FZQVFBQTZBQUFBQXNBSEFFQUFP
Z0FBQUFLQURBQkFBRG9BQUFBQ3dBMEFRQUE2QUFBQUFvQTJlNVcKaTNRa0NJUHNFTmxVSkF6WlZD
UUkyVlFrQk5rY0pGYi9GUUFBQUFEWlJDUWtpMFFrSUlQRUZHb0FhZ0JRVWRrY0pGYi9GUUFBQUFC
VwoveFVBQUFBQWc4UVlYc01jQUFBQThBQUFBQVlBTndBQUFPOEFBQUFHQUQ0QUFBRHVBQUFBQmdB
RUFBQUE5UUFBQUVRQUFBQUFBQUFBCkFBQUFBRWNBQUFBQUFBQUFEQUFBQUFBQUFBRGpQQUFBQXdB
QUFBUUFBQUFEQUFBQVF3QUFBQUFBQUFBTUFBQUFBQUFBQU9NOEFBQUEKQUFRQUFBQUFBUEVBQUFE
Q0FBQUFOUUFRRVFBQUFBQUFBQUFBQUFBQUFFY0FBQUFEQUFBQVJnQUFBSWtVQUFBQUFBQUFBQUFB
ZDJ0RQpjbUYzUm05amRYTlNhVzVuQUJ3QUVoQUFBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQUFB
QUFJQUFCSUFDeEVFQUFBQUtSQUFBR052CmJuUmxlSFFBRUFBTEVRZ0FBQUMxRXdBQVkyOXNiM0lB
RVFBTEVRd0FBQUJBQUFBQWNtRmthWFZ6QUE0QU9SRWFBQUFBQUFBQUFMTVQKQUFBT0FEa1JOUUFB
QUFBQUFBQzVFd0FBRGdBNUVUd0FBQUFBQUFBQWpCQUFBQUlBQmdBQUFQSUFBQUJBQUFBQUFBQUFB
QUFBQUFCSApBQUFBdUFVQUFBVUFBQUEwQUFBQUFBQUFBRkFCQUlBQUFBQUFVd0VBZ0NBQUFBQlZB
UUNBT3dBQUFGWUJBSUJHQUFBQVZ3RUFnQXdBCkFBRHRBQUFBQndCNEFBQUE3UUFBQUFzQWZBQUFB
TzBBQUFBS0FPb0FBQUR0QUFBQUN3RHVBQUFBN1FBQUFBb0ErZ0FBQU8wQUFBQUwKQVA0QUFBRHRB
QUFBQ2dBS0FRQUE3UUFBQUFzQURnRUFBTzBBQUFBS0FDUUJBQUR0QUFBQUN3QW9BUUFBN1FBQUFB
b0EveVVBQUFBQQpBZ0FBQVBZQUFBQUdBQVFBQUFEMUFBQUFKQUFBQUFBQUFBQUFBQUFBQmdBQUFB
QUFBQUFFQUFBQUFBQUFBT004QUFBQUFBQUFCQUFBCkFQRUFBQUNHQUFBQVBRQVFFUUFBQUFBQUFB
QUFBQUFBQUFZQUFBQUFBQUFBQmdBQUFMMFRBQUFBQUFBQUFBQUFkMnRIWlhSVFUweEQKWlhKMGFX
WnBZMkYwWlVsdVptOEFIQUFTRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0FBRXdB
TEVRUUFBQUM3RXdBQQpjbVZ6Y0c5dWMyVUFEZ0E1RVFBQUFBQUFBQUFBdlJNQUFBSUFCZ0FBQVBJ
QUFBQW9BQUFBQUFBQUFBQUFBQUFHQUFBQXVBVUFBQUlBCkFBQWNBQUFBQUFBQUFGc0JBSUFBQUFB
QVhBRUFnQXdBQUFEMUFBQUFCd0JZQUFBQTlRQUFBQXNBWEFBQUFQVUFBQUFLQUs0QUFBRDEKQUFB
QUN3Q3lBQUFBOVFBQUFBb0F5QUFBQVBVQUFBQUxBTXdBQUFEMUFBQUFDZ0NMUkNRRWhjQjBINHNO
QUFBQUFGRlEveFVBQUFBQQpnOFFJaGNCMENvbEVKQVQvSlFBQUFBQXp3TU1LQUFBQU1nSUFBQVlB
RWdBQUFQd0FBQUFHQUNNQUFBREJBQUFBQmdBRUFBQUE5UUFBCkFDUUFBQUFBQUFBQUFBQUFBQ29B
QUFBQUFBQUFCQUFBQUFBQUFBRGpQQUFBQUFBQUFBUUFBQUR4QUFBQWxnQUFBRUVBRUJFQUFBQUEK
QUFBQUFBQUFBQUFxQUFBQUFBQUFBQ2tBQUFDS0ZBQUFBQUFBQUFBQUFIZHJSMlYwVTFOTVVHVmxj
a05sY25ScFptbGpZWFJsUkdGMApZUUFjQUJJUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFDQUFBUEFBc1JCQUFBQUhBU0FBQmthV04wQUE0QU9SRVFBQUFBCkFBQUFBTDhUQUFBT0FEa1JJ
UUFBQUFBQUFBQ1dFd0FBQWdBR0FBQUE4Z0FBQUVnQUFBQUFBQUFBQUFBQUFDb0FBQUM0QlFBQUJn
QUEKQUR3QUFBQUFBQUFBWUFFQWdBQUFBQUJoQVFDQUJnQUFBR0lCQUlBSUFBQUFZd0VBZ0JrQUFB
QmtBUUNBS1FBQUFHVUJBSUFNQUFBQQord0FBQUFjQVdBQUFBUHNBQUFBTEFGd0FBQUQ3QUFBQUNn
Q3VBQUFBK3dBQUFBc0FzZ0FBQVBzQUFBQUtBTDRBQUFEN0FBQUFDd0RDCkFBQUErd0FBQUFvQTJB
QUFBUHNBQUFBTEFOd0FBQUQ3QUFBQUNnQ0xSQ1FFaGNCMEg0c05BQUFBQUZGUS94VUFBQUFBZzhR
SWhjQjAKQ29sRUpBVC9KUUFBQUFBendNTUtBQUFBTlFJQUFBWUFFZ0FBQVB3QUFBQUdBQ01BQUFE
QkFBQUFCZ0FFQUFBQTlRQUFBQ1FBQUFBQQpBQUFBQUFBQUFDb0FBQUFBQUFBQUJBQUFBQUFBQUFE
alBBQUFBQUFBQUFRQUFBRHhBQUFBbWdBQUFFVUFFQkVBQUFBQUFBQUFBQUFBCkFBQXFBQUFBQUFB
QUFDa0FBQUNLRkFBQUFBQUFBQUFBQUhkclIyVjBVMU5NUTJWeWRHbG1hV05oZEdWRGFHRnBia052
Ym5SbGVIUUEKSEFBU0VBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdBQUR3QUxFUVFB
QUFCd0VnQUFaR2xqZEFBT0FEa1JFQUFBQUFBQQpBQUMvRXdBQURnQTVFU0VBQUFBQUFBQUFsaE1B
QUFJQUJnQUFBUElBQUFCSUFBQUFBQUFBQUFBQUFBQXFBQUFBdUFVQUFBWUFBQUE4CkFBQUFBQUFB
QUdnQkFJQUFBQUFBYVFFQWdBWUFBQUJxQVFDQUNBQUFBR3NCQUlBWkFBQUFiQUVBZ0NrQUFBQnRB
UUNBREFBQUFBRUIKQUFBSEFGZ0FBQUFCQVFBQUN3QmNBQUFBQVFFQUFBb0FzZ0FBQUFFQkFBQUxB
TFlBQUFBQkFRQUFDZ0RDQUFBQUFRRUFBQXNBeGdBQQpBQUVCQUFBS0FOd0FBQUFCQVFBQUN3RGdB
QUFBQVFFQUFBb0FVNHRjSkFpRjIzUlpWNHQ4SkJDRi8zUlBvUUFBQUFDTERRQUFBQUNMCkZRQUFB
QUJXVUlzQ1VXb0FVUDhWQUFBQUFJdndnOFFRaGZaMEpvc05BQUFBQUZlTFBRQUFBQUJSVnYvWGl4
VUFBQUFBVmxKVC85ZFcKL3hVQUFBQUFnOFFjWGw5Ynd4TUFBQUFMQVFBQUJnQVpBQUFBQ2dFQUFB
WUFId0FBQUFrQkFBQUdBQzBBQUFBSUFRQUFCZ0E4QUFBQQpOQUlBQUFZQVF3QUFBQWNCQUFBR0FF
MEFBQUF6QWdBQUJnQlpBQUFBd3dBQUFBWUFCQUFBQVBVQUFBQ0VBQUFBQUFBQUFBQUFBQUJrCkFB
QUFBQUFBQUFnQUFBQUFBQUFBNHp3QUFBRUFBQUFFQUFBQUFRQUFBR0lBQUFBQUFBQUFDQUFBQUFB
QUFBQWhQZ0FBQUFBRUFBQUEKQUFBS0FBQUFXQUFBQUFBQUFBQUlBQUFBQUFBQUFDRStBQUFBQUFn
QUFBQUFBQ1FBQUFBOUFBQUFBQUFBQUFnQUFBQUFBQUFBSVQ0QQpBQUFBREFBQUFBQUE4UUFBQU5r
QUFBQkxBQkFSQUFBQUFBQUFBQUFBQUFBQVpBQUFBQUVBQUFCakFBQUFqQlFBQUFBQUFBQUFBQUIz
CmExTmxkRU5zYVdWdWRFTmxjblJwWm1sallYUmxTVzVUVTB4UWNtOXdaWEowYVdWekFCd0FFaEFB
QUFBQUFBQUFBQUFBQUFBTUFBQUEKQUFBQUFBQUFBQUlBQUJNQUN4RUVBQUFBMGhNQUFITnpiRkJ5
YjNCekFCTUFDeEVJQUFBQVVCSUFBR05sY25SRVlYUmhBQTRBT1JFcgpBQUFBQUFBQUFOZ1RBQUFP
QURrUlNRQUFBQUFBQUFEYUV3QUFEZ0E1RVZRQUFBQUFBQUFBMmhNQUFBNEFPUkZYQUFBQUFBQUFB
RjRTCkFBQUNBQVlBQUFBQThnQUFBRmdBQUFBQUFBQUFBQUFBQUdRQUFBQzRCUUFBQ0FBQUFFd0FB
QUFBQUFBQWNBRUFnQUVBQUFCeEFRQ0EKRWdBQUFITUJBSUEyQUFBQWRBRUFnRG9BQUFCMkFRQ0FT
d0FBQUhjQkFJQldBQUFBZUFFQWdHTUFBQUI1QVFDQURBQUFBQVlCQUFBSApBTGdBQUFBR0FRQUFD
d0M4QUFBQUJnRUFBQW9BTVFFQUFBWUJBQUFMQURVQkFBQUdBUUFBQ2dCQkFRQUFCZ0VBQUFzQVJR
RUFBQVlCCkFBQUtBRkVCQUFBR0FRQUFDd0JWQVFBQUJnRUFBQW9BWVFFQUFBWUJBQUFMQUdVQkFB
QUdBUUFBQ2dCOEFRQUFCZ0VBQUFzQWdBRUEKQUFZQkFBQUtBS0VBQUFBQWl3aFIveFVBQUFBQWc4
UUV3d0VBQUFBSkFRQUFCZ0FLQUFBQUVRRUFBQVlBQkFBQUFQVUFBQUFrQUFBQQpBQUFBQUFBQUFB
QVNBQUFBQUFBQUFBQUFBQUFBQUFBQTR6d0FBQUFBQUFBRUFBQUE4UUFBQUhjQUFBQkRBQkFSQUFB
QUFBQUFBQUFBCkFBQUFFZ0FBQUFBQUFBQVJBQUFBNlJNQUFBQUFBQUFBQUFCM2EwZGxkRVJsWm1G
MWJIUklWRlJRUTI5dmEybGxVM1J2Y21GblpRQWMKQUJJUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFLQUFBT0FEa1JDQUFBQUFBQUFBRGVFd0FBQWdBR0FBRHlBQUFBTUFBQQpBQUFBQUFB
QUFBQUFFZ0FBQUxnRkFBQURBQUFBSkFBQUFBQUFBQUI4QVFDQUFBQUFBSDBCQUlBUkFBQUFmZ0VB
Z0F3QUFBQVFBUUFBCkJ3QllBQUFBRUFFQUFBc0FYQUFBQUJBQkFBQUtBSjhBQUFBUUFRQUFDd0Nq
QUFBQUVBRUFBQW9BdUFBQUFCQUJBQUFMQUx3QUFBQVEKQVFBQUNnQ2hBQUFBQUlzSVVmOFZBQUFB
QUdvQWFnQlFhZ0QvRlFBQUFBQ0R4QlREQVFBQUFBa0JBQUFHQUFvQUFBQVJBUUFBQmdBWApBQUFB
RndFQUFBWUFCQUFBQVBVQUFBQWtBQUFBQUFBQUFBQUFBQUFmQUFBQUFBQUFBQUFBQUFBQUFBQUE0
endBQUFBQUFBQUVBQUFBCjhRQUFBSW9BQUFCR0FCQVJBQUFBQUFBQUFBQUFBQUFBSHdBQUFBQUFB
QUFlQUFBQTZSTUFBQUFBQUFBQUFBQjNhME55WldGMFpWQnkKYVhaaGRHVklWRlJRUTI5dmEybGxV
M1J2Y21GblpRQWNBQklRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBQUFPQURrUgpD
QUFBQUFBQUFBRGVFd0FBRGdBNUVSVUFBQUFBQUFBQTZCTUFBQUlBQmdBQUFQSUFBQUF3QUFBQUFB
QUFBQUFBQUFBZkFBQUF1QVVBCkFBTUFBQUFrQUFBQUFBQUFBSUVCQUlBQUFBQUFnZ0VBZ0I0QUFB
Q0RBUUNBREFBQUFCWUJBQUFIQUZnQUFBQVdBUUFBQ3dCY0FBQUEKRmdFQUFBb0FvZ0FBQUJZQkFB
QUxBS1lBQUFBV0FRQUFDZ0N5QUFBQUZnRUFBQXNBdGdBQUFCWUJBQUFLQU13QUFBQVdBUUFBQ3dE
UQpBQUFBRmdFQUFBb0FWbGYvRlFBQUFBQ0w4RmIvRlFBQUFBQldpL2ovRlFBQUFBQ0R4QWlMeDE5
ZXd3UUFBQUFlQVFBQUJnQU5BQUFBCkhRRUFBQVlBRmdBQUFNTUFBQUFHQUFRQUFBRDFBQUFBWkFB
QUFBQUFBQUFBQUFBQUlnQUFBQUFBQUFBQUFBQUFBQUFBQU9NOEFBQUMKQUFBQUJBQUFBQUVBQUFB
Z0FBQUFBQUFBQUFBQUFBQUFBQUFBNHp3QUFBRUFCQUFBQUFBQUFnQUFBQjRBQUFBQUFBQUFBQUFB
QUFBQQpBQURqUEFBQUFBQUlBQUFBQUFEeEFBQUFtQUFBQUVRQUVCRUFBQUFBQUFBQUFBQUFBQUFp
QUFBQUFnQUFBQ0VBQUFDTkZBQUFBQUFBCkFBQUFBSGRyUTI5d2VVWnZkVzVrWVhScGIyNURZV05v
WlVScGNtVmpkRzl5ZVFBY0FCSVFBQUFBQUFBQUFBQUFBQUFBQ0FBQUFBQUEKQUFBQUFBQUNBQUFP
QURrUkFnQUFBQUFBQUFEdEV3QUFEZ0E1RVFzQUFBQUFBQUFBN3hNQUFBNEFPUkVVQUFBQUFBQUFB
RjRTQUFBQwpBQVlBOGdBQUFFZ0FBQUFBQUFBQUFBQUFBQ0lBQUFDNEJRQUFCZ0FBQUR3QUFBQUFB
QUFBaGdFQWdBSUFBQUNIQVFDQUNnQUFBSWdCCkFJQVJBQUFBaVFFQWdCMEFBQUNLQVFDQUlRQUFB
SXNCQUlBTUFBQUFIQUVBQUFjQW1BQUFBQndCQUFBTEFKd0FBQUFjQVFBQUNnRGcKQUFBQUhBRUFB
QXNBNUFBQUFCd0JBQUFLQVBBQUFBQWNBUUFBQ3dEMEFBQUFIQUVBQUFvQUFBRUFBQndCQUFBTEFB
UUJBQUFjQVFBQQpDZ0FZQVFBQUhBRUFBQXNBSEFFQUFCd0JBQUFLQUlCOEpBZ0FkQW1oQUFBQUFJ
c0E2d2lMRFFBQUFBQ0xBVkJvQUFBQUFQOFZBQUFBCkFJdFVKQXlEeEFSUVV2OFZBQUFBQUlQRURN
TUlBQUFBS2dFQUFBWUFFZ0FBQUNrQkFBQUdBQm9BQUFBb0FRQUFCZ0FnQUFBQUpRRUEKQUFZQUx3
QUFBQ1FCQUFBR0FBUUFBQUQxQUFBQUpBQUFBQUFBQUFBQUFBQUFOd0FBQUFBQUFBQUlBQUFBQUFB
QUFPTThBQUFBQUFBQQpCQUFBQVBFQUFBQ3lBQUFBU1FBUUVRQUFBQUFBQUFBQUFBQUFBRGNBQUFB
QUFBQUFOZ0FBQUk4VUFBQUFBQUFBQUFBQWQydFRaWFJEClJsVlNURkpsY1hWbGMzUlRhRzkxYkdS
RGIyNTBaVzUwVTI1cFptWUFIQUFTRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEKQWdB
QUVnQUxFUVFBQUFEMUV3QUFjbVZ4ZFdWemRBQVBBQXNSQ0FBQUFEQUFBQUJtYkdGbkFBNEFPUkVl
QUFBQUFBQUFBRUlUQUFBTwpBRGtSTFFBQUFBQUFBQUQwRXdBQUFnQUdBQUFBOGdBQUFEQUFBQUFB
QUFBQUFBQUFBRGNBQUFDNEJRQUFBd0FBQUNRQUFBQUFBQUFBCmpnRUFnQUFBQUFDUEFRQ0FOZ0FB
QUpBQkFJQU1BQUFBSXdFQUFBY0FXQUFBQUNNQkFBQUxBRndBQUFBakFRQUFDZ0RLQUFBQUl3RUEK
QUFzQXpnQUFBQ01CQUFBS0FOb0FBQUFqQVFBQUN3RGVBQUFBSXdFQUFBb0E5QUFBQUNNQkFBQUxB
UGdBQUFBakFRQUFDZ0JmYTBORwpWVkpNUTI5dWJtVmpkR2x2YmxCeWIzQmxjblI1VTJodmRXeGtV
MjVwWm1ZQS95VUFBQUFBQWdBQUFEQUJBQUFHQUFRQUFBRDFBQUFBCkpBQUFBQUFBQUFBQUFBQUFC
Z0FBQUFBQUFBQUVBQUFBQUFBQUFPTThBQUFBQUFBQUJBQUFBUEVBQUFDVUFBQUFUQUFRRVFBQUFB
QUEKQUFBQUFBQUFBQVlBQUFBQUFBQUFCZ0FBQVBvVEFBQUFBQUFBQUFBQWQydERSbFZTVEZKbGNY
VmxjM1JEYjNCNVNGUlVVRkpsY1hWbApjM1JDYjJSNVVHRnlkSE1BSEFBU0VBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQWdBQUVnQUxFUVFBQUFEeUV3QUFjbVZ4CmRXVnpkQUFPQURrUkFB
QUFBQUFBQUFENkV3QUFBZ0FHQVBJQUFBQW9BQUFBQUFBQUFBQUFBQUFHQUFBQXVBVUFBQUlBQUFB
Y0FBQUEKQUFBQUFKTUJBSUFBQUFBQWxBRUFnQXdBQUFBdkFRQUFCd0JZQUFBQUx3RUFBQXNBWEFB
QUFDOEJBQUFLQUx3QUFBQXZBUUFBQ3dEQQpBQUFBTHdFQUFBb0ExQUFBQUM4QkFBQUxBTmdBQUFB
dkFRQUFDZ0QvSlFBQUFBQUNBQUFBTmdFQUFBWUFCQUFBQVBVQUFBQWtBQUFBCkFBQUFBQUFBQUFB
R0FBQUFBQUFBQUFnQUFBQUFBQUFBNHp3QUFBQUFBQUFFQUFBQThRQUFBS2tBQUFCTEFCQVJBQUFB
QUFBQUFBQUEKQUFBQUJnQUFBQUFBQUFBR0FBQUEvQk1BQUFBQUFBQUFBQUIzYTBOR1ZWSk1VbVZ4
ZFdWemRGTmxkRWhVVkZCU1pYRjFaWE4wUW05awplVkJoY25SekFCd0FFaEFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBSUFBQklBQ3hFRUFBQUE5Uk1BQUhKbGNYVmxjM1FBCkZBQUxFUWdB
QUFENEV3QUFZbTlrZVZCaGNuUnpBQTRBT1JFQUFBQUFBQUFBQVB3VEFBQUNBQVlBQUFBQThnQUFB
Q2dBQUFBQUFBQUEKQUFBQUFBWUFBQUM0QlFBQUFnQUFBQndBQUFBQUFBQUFtQUVBZ0FBQUFBQ1pB
UUNBREFBQUFEVUJBQUFIQUZnQUFBQTFBUUFBQ3dCYwpBQUFBTlFFQUFBb0EwUUFBQURVQkFBQUxB
TlVBQUFBMUFRQUFDZ0RzQUFBQU5RRUFBQXNBOEFBQUFEVUJBQUFLQUZab0FBQUFBUDhWCkFBQUFB
SXZ3aGZaMUJZMUdCRjdEVTRzZEFBQUFBRmRvQUFBQUFGYi8wNHY0aGY5MERtZ0FBQUFBVnYvVGkv
Q0Y5blVKWDF1NEJBQUEKQUY3RGkwUWtFRkJxQVAvWGFnRC8xb1BFREY5YlhzTUNBQUFBUmdFQUFB
WUFDQUFBQUVNQkFBQUdBQm9BQUFCQ0FRQUFCZ0FnQUFBQQpRUUVBQUFZQUxnQUFBRDRCQUFBR0FB
UUFBQUQxQUFBQWhBQUFBQUFBQUFBQUFBQUFXQUFBQUFBQUFBQUVBQUFBQUFBQUFPTThBQUFCCkFB
QUFCQUFBQUFFQUFBQldBQUFBQUFBQUFBUUFBQUFBQUFBQTR6d0FBQUFBQkFBQUFBQUFHQUFBQUQ0
QUFBQUFBQUFBQkFBQUFBQUEKQUFDa1FRQUFBQUFJQUFBQUFBQWZBQUFBTmdBQUFBQUFBQUFFQUFB
QUFBQUFBS1JCQUFBQUFBd0FBQUFBQVBFQUFBQXdBUUFBVXdBUQpFUUFBQUFBQUFBQUFBQUFBQUZn
QUFBQUJBQUFBVndBQUFKa1JBQUFBQUFBQUFBQUFkMnRKYm1sMGFXRnNhWHBsVFdGNGFXMTFiVWhV
ClZGQkRiMjV1WldOMGFXOXVRMjkxYm5SUVpYSkliM04wQUJ3QUVoQUFBQUFBQUFBQUFBQUFBQUFN
QUFBQUFBQUFBQUFBQUFJQUFDTUEKQ3hFRUFBQUFkUUFBQUhCeVpXWmxjbkpsWkVOdmJtNWxZM1Jw
YjI1RGIzVnVkQUFnQUFnUkRSUUFBRU52Ym01bFkzUnBiMjVIWlhSTQphVzFwZEZCeWIyTlFkSElB
SUFBSUVRb1VBQUJEYjI1dVpXTjBhVzl1VTJWMFRHbHRhWFJRY205alVIUnlBQTRBT1JFR0FBQUFB
QUFBCkFBQVVBQUFPQURrUkpRQUFBQUFBQUFBRkZBQUFEZ0E1RVRNQUFBQUFBQUFBQlJRQUFBNEFP
UkZMQUFBQUFBQUFBQW9VQUFBT0FEa1IKVHdBQUFBQUFBQUFORkFBQUFnQUdBUElBQUFDUUFBQUFB
QUFBQUFBQUFBQllBQUFBdUFVQUFBOEFBQUNFQUFBQUFBQUFBSjBCQUlBQgpBQUFBb1FFQWdBNEFB
QUNsQVFDQUVnQUFBS1lCQUlBV0FBQUFzd0VBZ0JnQUFBQ3BBUUNBS1FBQUFLb0JBSUFyQUFBQXF3
RUFnQzBBCkFBQ3RBUUNBTndBQUFLNEJBSUE5QUFBQXJ3RUFnRU1BQUFDekFRQ0FSQUFBQUxFQkFJ
Qk5BQUFBc2dFQWdGY0FBQUN6QVFDQURBQUEKQURzQkFBQUhBTGdBQUFBN0FRQUFDd0M4QUFBQU93
RUFBQW9BZUFFQUFEc0JBQUFMQUh3QkFBQTdBUUFBQ2dDSUFRQUFPd0VBQUFzQQpqQUVBQURzQkFB
QUtBSmdCQUFBN0FRQUFDd0NjQVFBQU93RUFBQW9BcUFFQUFEc0JBQUFMQUt3QkFBQTdBUUFBQ2dD
NEFRQUFPd0VBCkFBc0F2QUVBQURzQkFBQUtBTkFCQUFBN0FRQUFDd0RVQVFBQU93RUFBQW9BWDBO
R1RtVjBkMjl5YTBoVVZGQkRiMjV1WldOMGFXOXUKUTJGamFHVkhaWFJNYVcxcGRBQmZRMFpPWlhS
M2IzSnJTRlJVVUVOdmJtNWxZM1JwYjI1RFlXTm9aVk5sZEV4cGJXbDBBRU1BUmdCTwpBR1VBZEFC
M0FHOEFjZ0JyQUM0QVpBQnNBR3dBQUFCV1Yyb0EveFVBQUFBQWkvQ0xSQ1FRVUZiL0ZRQUFBQUJX
aS9qL0ZRQUFBQUNECnhCQ0x4MTlld3dZQUFBQk5BUUFBQmdBVUFBQUFUQUVBQUFZQUhRQUFBTU1B
QUFBR0FBUUFBQUQxQUFBQVpBQUFBQUFBQUFBQUFBQUEKS1FBQUFBQUFBQUFFQUFBQUFBQUFBT004
QUFBQ0FBQUFCQUFBQUFFQUFBQW5BQUFBQUFBQUFBUUFBQUFBQUFBQTR6d0FBQUVBQkFBQQpBQUFB
QWdBQUFDVUFBQUFBQUFBQUJBQUFBQUFBQUFEalBBQUFBQUFJQUFBQUFBRHhBQUFBdlFBQUFFMEFF
QkVBQUFBQUFBQUFBQUFBCkFBQXBBQUFBQWdBQUFDZ0FBQUNTRkFBQUFBQUFBQUFBQUhkclEyOXdl
VU55WldSbGJuUnBZV3hHY205dFEwWlFaWEp6YVhOMFpXNTAKVTNSdmNtRm5aUUFjQUJJUUFBQUFB
QUFBQUFBQUFBQUFDQUFBQUFBQUFBQUFBQUFDQUFBYUFBc1JCQUFBQUJVVUFBQndjbTkwWldOMAph
Vzl1VTNCaFkyVUFEZ0E1RVFRQUFBQUFBQUFBRUJRQUFBNEFPUkVTQUFBQUFBQUFBQmNVQUFBT0FE
a1JHd0FBQUFBQUFBQmVFZ0FBCkFnQUdBQUFBQVBJQUFBQklBQUFBQUFBQUFBQUFBQUFwQUFBQXVB
VUFBQVlBQUFBOEFBQUFBQUFBQUxZQkFJQUNBQUFBdHdFQWdBd0EKQUFDNEFRQ0FHQUFBQUxrQkFJ
QWtBQUFBdWdFQWdDZ0FBQUM3QVFDQURBQUFBRXNCQUFBSEFKZ0FBQUJMQVFBQUN3Q2NBQUFBU3dF
QQpBQW9BQlFFQUFFc0JBQUFMQUFrQkFBQkxBUUFBQ2dBVkFRQUFTd0VBQUFzQUdRRUFBRXNCQUFB
S0FDVUJBQUJMQVFBQUN3QXBBUUFBClN3RUFBQW9BUUFFQUFFc0JBQUFMQUVRQkFBQkxBUUFBQ2dE
L0pRQUFBQUFDQUFBQVV3RUFBQVlBQkFBQUFQVUFBQUFrQUFBQUFBQUEKQUFBQUFBQUdBQUFBQUFB
QUFBUUFBQUFBQUFBQTR6d0FBQUFBQUFBRUFBQUE4UUFBQUpjQUFBQk5BQkFSQUFBQUFBQUFBQUFB
QUFBQQpCZ0FBQUFBQUFBQUdBQUFBR0JRQUFBQUFBQUFBQUFCM2EwTkdUbVYwZDI5eWEwVnljbTl5
UjJWMFRHOWpZV3hwZW1Wa1JHVnpZM0pwCmNIUnBiMjRBSEFBU0VBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQWdBQUZBQUxFUVFBQUFBU0FBQUFaWEp5YjNKRGIyUmwKQUE0QU9SRUFBQUFB
QUFBQUFCZ1VBQUFDQUFZQUFQSUFBQUFvQUFBQUFBQUFBQUFBQUFBR0FBQUF1QVVBQUFJQUFBQWNB
QUFBQUFBQQpBTDRCQUlBQUFBQUF2d0VBZ0F3QUFBQlNBUUFBQndCWUFBQUFVZ0VBQUFzQVhBQUFB
RklCQUFBS0FMOEFBQUJTQVFBQUN3RERBQUFBClVnRUFBQW9BMkFBQUFGSUJBQUFMQU53QUFBQlNB
UUFBQ2dDRDdCQ2hBQUFBQUlzSWl4VUFBQUFBaVV3a0NJc0NpMHdrR0l0VUpCeFcKaVVRa0VLRUFB
QUFBVUlsTUpBaUxEUUFBQUFCUmlWUWtFR29DalZRa0VGS05SQ1FjVUdvQS94VUFBQUFBaXcwQUFB
QUFpeEdMOEl0RQpKREJXVWxEL0ZRQUFBQUJXL3hVQUFBQUFnOFFvWG9QRUVNTUVBQUFBWFFFQUFB
WUFEQUFBQUZ3QkFBQUdBQ1FBQUFBTEFRQUFCZ0F2CkFBQUFDZ0VBQUFZQVNBQUFBRnNCQUFBR0FF
NEFBQUJhQVFBQUJnQmZBQUFBV1FFQUFBWUFaZ0FBQU1NQUFBQUdBQVFBQUFEMUFBQUEKUkFBQUFB
QUFBQUFBQUFBQWNnQUFBQkFBQUFBTUFBQUFBQUFBQU9NOEFBQWZBQUFBQkFBQUFCOEFBQUJQQUFB
QUVBQUFBQXdBQUFBQQpBQUFBNHp3QUFBQUFCQUFBQUFBQThRQUFBQUVCQUFCQUFCQVJBQUFBQUFB
QUFBQUFBQUFBY2dBQUFCOEFBQUJ1QUFBQWxCUUFBQUFBCkFBQUFBQUIzYTFObGRFTlBUazVGUTFS
UWNtOTRlVVp2Y2xOMGNtVmhiUUFjQUJJUUVBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQUEKQUFB
Q0FBQVJBQXNSQkFBQUFCMFVBQUJ6ZEhKbFlXMEFGQUFMRVFnQUFBQVdFQUFBY0hKdmVIbEliM04w
QUJRQUN4RU1BQUFBSWhRQQpBSEJ5YjNoNVVHOXlkQUFXQUFzUjdQLy8veU1VQUFCd2NtOTRlVlpo
YkhWbGN3QVVBQXNSOVAvLy95TVVBQUJ3Y205NGVVdGxlWE1BCkRnQTVFVVlBQUFBQUFBQUFHeFFB
QUE0QU9SRmRBQUFBQUFBQUFCOFVBQUFPQURrUlpBQUFBQUFBQUFCZUVnQUFBZ0FHQUFBQUFQSUEK
QUFCUUFBQUFBQUFBQUFBQUFBQnlBQUFBdUFVQUFBY0FBQUJFQUFBQUFBQUFBTU1CQUlBREFBQUF4
QUVBZ0JZQUFBREZBUUNBSXdBQQpBTVlCQUlCTUFBQUF4d0VBZ0dNQUFBRElBUUNBYmdBQUFNa0JB
SUFNQUFBQVdBRUFBQWNBZUFBQUFGZ0JBQUFMQUh3QUFBQllBUUFBCkNnQXBBUUFBV0FFQUFBc0FM
UUVBQUZnQkFBQUtBRGtCQUFCWUFRQUFDd0E5QVFBQVdBRUFBQW9BU1FFQUFGZ0JBQUFMQUUwQkFB
QlkKQVFBQUNnQmtBUUFBV0FFQUFBc0FhQUVBQUZnQkFBQUtBSVBzQ0tFQUFBQUFpd2hUVll0c0pC
UldWMUZWL3hVQUFBQUFpL2hYYWdCcQpBUDhWQUFBQUFGZUxQUUFBQUFDTDhQL1hhQUFBQUFEL0ZR
QUFBQUNMRFFBQUFBQ0xWQ1E4aVVRa01LRUFBQUFBVUZHSlZDUTBhZ0dOClZDUTRVbzFFSkVCUWFn
RC9GUUFBQUFDTERRQUFBQUNMRVl2WVUxSlcveFVBQUFBQWc4UkFVLy9Yb1FBQUFBQ0xDRlpSVmY4
VkFBQUEKQUZiLzE0UEVGRjllWFZ1RHhBakRCQUFBQUZvQkFBQUdBQllBQUFCb0FRQUFCZ0FqQUFB
QVp3RUFBQVlBS2dBQUFNTUFBQUFHQURNQQpBQUJtQVFBQUJnQTVBQUFBSlFFQUFBWUFQd0FBQUFv
QkFBQUdBRXdBQUFBTEFRQUFCZ0JtQUFBQVd3RUFBQVlBYkFBQUFHTUJBQUFHCkFIa0FBQUFIQVFB
QUJnQ0VBQUFBV2dFQUFBWUFqd0FBQUZrQkFBQUdBQVFBQUFEMUFBQUFwQUFBQUFBQUFBQUFBQUFB
b1FBQUFBZ0EKQUFBSUFBQUFBQUFBQU9NOEFBQVNBQUFBQkFBQUFBc0FBQUNTQUFBQUNBQUFBQWdB
QUFBQUFBQUFERUlBQUFjQUJBQUFBQUFBREFBQQpBSkFBQUFBSUFBQUFDQUFBQUFBQUFBQjFRZ0FB
QmdBSUFBQUFBQUFSQUFBQWlnQUFBQWdBQUFBSUFBQUFBQUFBQUhWQ0FBQUJBQXdBCkFBQUFBQklB
QUFDSUFBQUFDQUFBQUFnQUFBQUFBQUFBZFVJQUFBQUFFQUFBQUFBQThRQUFBSFFCQUFCTkFCQVJB
QUFBQUFBQUFBQUEKQUFBQW9RQUFBQklBQUFDZEFBQUFsUlFBQUFBQUFBQUFBQUIzYTFObGRFTlBU
azVGUTFSUWNtOTRlVUYxZEdodmNtbDZZWFJwYjI1RwpiM0pUZEhKbFlXMEFIQUFTRUFnQUFBQUFB
QUFBQUFBQUFCQUFBQUFBQUFBQUFBQUFBZ0FBRVFBTEVRUUFBQUFkRkFBQWMzUnlaV0Z0CkFDTUFD
eEVJQUFBQUZoQUFBSEJ5YjNoNVFYVjBhRzl5YVhwaGRHbHZibE4wY21sdVp3QWNBQXNSOVAvLy95
Z1VBQUJvWldGa1pYSkcKYVdWc1pGWmhiSFZsY3dBYkFBc1IrUC8vL3lnVUFBQm9aV0ZrWlhKR2FX
VnNaRTVoYldWekFBNEFPUkVVQUFBQUFBQUFBQ1VVQUFBTwpBRGtSSVFBQUFBQUFBQUFuRkFBQURn
QTVFVEFBQUFBQUFBQUFYaElBQUE0QU9SRTNBQUFBQUFBQUFFSVRBQUFPQURrUlpBQUFBQUFBCkFB
QWJGQUFBRGdBNUVYY0FBQUFBQUFBQTJoTUFBQTRBT1JHQkFBQUFBQUFBQUY0U0FBQU9BRGtSalFB
QUFBQUFBQUFmRkFBQURnQTUKRVpRQUFBQUFBQUFBWGhJQUFBSUFCZ0R5QUFBQWNBQUFBQUFBQUFB
QUFBQUFvUUFBQUxnRkFBQUxBQUFBWkFBQUFBQUFBQURNQVFDQQpBd0FBQU0wQkFJQWNBQUFBemdF
QWdDY0FBQURQQVFDQU1nQUFBTkVCQUlBOUFBQUEwd0VBZ0dvQUFBRFZBUUNBZ0FBQUFOWUJBSUNE
CkFBQUEyQUVBZ0pNQUFBRFpBUUNBblFBQUFOb0JBSUFNQUFBQVlnRUFBQWNBMkFBQUFHSUJBQUFM
QU53QUFBQmlBUUFBQ2dDY0FRQUEKWWdFQUFBc0FvQUVBQUdJQkFBQUtBS3dCQUFCaUFRQUFDd0N3
QVFBQVlnRUFBQW9BdkFFQUFHSUJBQUFMQU1BQkFBQmlBUUFBQ2dETQpBUUFBWWdFQUFBc0EwQUVB
QUdJQkFBQUtBTndCQUFCaUFRQUFDd0RnQVFBQVlnRUFBQW9BN0FFQUFHSUJBQUFMQVBBQkFBQmlB
UUFBCkNnRDhBUUFBWWdFQUFBc0FBQUlBQUdJQkFBQUtBQXdDQUFCaUFRQUFDd0FRQWdBQVlnRUFB
QW9BSEFJQUFHSUJBQUFMQUNBQ0FBQmkKQVFBQUNnQTBBZ0FBWWdFQUFBc0FPQUlBQUdJQkFBQUtB
RkJ5YjNoNUxVRjFkR2h2Y21sNllYUnBiMjRBb1FBQUFBQ0xDSXRVSkFSVwpVVkwvRlFBQUFBQ0w4
SXRFSkJSUVZ2OFZBQUFBQUlQRUVJdkdYc01CQUFBQWJ3RUFBQVlBRUFBQUFHZ0JBQUFHQUI0QUFB
QnVBUUFBCkJnQUVBQUFBOVFBQUFFUUFBQUFBQUFBQUFBQUFBQ2tBQUFBQUFBQUFDQUFBQUFBQUFB
RGpQQUFBREFBQUFBUUFBQUFNQUFBQUhBQUEKQUFBQUFBQUlBQUFBQUFBQUFPTThBQUFBQUFRQUFB
QUFBUEVBQUFDdkFBQUFRQUFRRVFBQUFBQUFBQUFBQUFBQUFDa0FBQUFNQUFBQQpLQUFBQUpjVUFB
QUFBQUFBQUFBQWQydERiM0I1UTA5T1RrVkRWRkJ5YjNoNVVtVnpjRzl1YzJVQUhBQVNFQUFBQUFB
QUFBQUFBQUFBCkFBUUFBQUFBQUFBQUFBQUFBZ0FBRVFBTEVRUUFBQUFkRkFBQWMzUnlaV0Z0QUJZ
QUN4RUlBQUFBTFJRQUFISmxjM0J2Ym5ObFZWSk0KQUE0QU9SRU9BQUFBQUFBQUFDVVVBQUFPQURr
UkhBQUFBQUFBQUFBdkZBQUFBZ0FHQUFEeUFBQUFRQUFBQUFBQUFBQUFBQUFBS1FBQQpBTGdGQUFB
RkFBQUFOQUFBQUFBQUFBRGRBUUNBQUFBQUFONEJBSUFXQUFBQTRRRUFnQ1VBQUFEaUFRQ0FLQUFB
QU9NQkFJQU1BQUFBCmJRRUFBQWNBZUFBQUFHMEJBQUFMQUh3QUFBQnRBUUFBQ2dEbkFBQUFiUUVB
QUFzQTZ3QUFBRzBCQUFBS0FQY0FBQUJ0QVFBQUN3RDcKQUFBQWJRRUFBQW9BRUFFQUFHMEJBQUFM
QUJRQkFBQnRBUUFBQ2dEL0pRQUFBQUFDQUFBQWRRRUFBQVlBQkFBQUFQVUFBQUFrQUFBQQpBQUFB
QUFBQUFBQUdBQUFBQUFBQUFBd0FBQUFBQUFBQTR6d0FBQUFBQUFBRUFBQUE4UUFBQUtnQUFBQTZB
QkFSQUFBQUFBQUFBQUFBCkFBQUFCZ0FBQUFBQUFBQUdBQUFBTXhRQUFBQUFBQUFBQUFCM2EwTkJT
VzFoWjJWUmRXVjFaVU55WldGMFpRQWNBQklRQUFBQUFBQUEKQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFDQUFBUUFBc1JCQUFBQUhVQUFBQjNhV1IwYUFBUkFBc1JDQUFBQUhVQUFBQm9aV2xuYUhRQQpF
d0FMRVF3QUFBQjFBQUFBWTJGd1lXTnBkSGtBRGdBNUVRQUFBQUFBQUFBQU14UUFBQUlBQmdEeUFB
QUFLQUFBQUFBQUFBQUFBQUFBCkJnQUFBTGdGQUFBQ0FBQUFIQUFBQUFBQUFBRG9BUUNBQUFBQUFP
a0JBSUFNQUFBQWRBRUFBQWNBV0FBQUFIUUJBQUFMQUZ3QUFBQjAKQVFBQUNnRFFBQUFBZEFFQUFB
c0ExQUFBQUhRQkFBQUtBT2dBQUFCMEFRQUFDd0RzQUFBQWRBRUFBQW9BL3lVQUFBQUFBZ0FBQUhz
QgpBQUFHQUFRQUFBRDFBQUFBSkFBQUFBQUFBQUFBQUFBQUJnQUFBQUFBQUFBRUFBQUFBQUFBQU9N
OEFBQUFBQUFBQkFBQUFQRUFBQUNDCkFBQUFQd0FRRVFBQUFBQUFBQUFBQUFBQUFBWUFBQUFBQUFB
QUJnQUFBRFVVQUFBQUFBQUFBQUFBZDJ0RFFVbHRZV2RsVVhWbGRXVkgKWlhSRFlYQmhZMmwwZVFB
Y0FCSVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FBQU5BQXNSQkFBQUFERVVBQUJw
Y1FBTwpBRGtSQUFBQUFBQUFBQUExRkFBQUFnQUdBQUFBOGdBQUFDZ0FBQUFBQUFBQUFBQUFBQVlB
QUFDNEJRQUFBZ0FBQUJ3QUFBQUFBQUFBCjdRRUFnQUFBQUFEdUFRQ0FEQUFBQUhvQkFBQUhBRmdB
QUFCNkFRQUFDd0JjQUFBQWVnRUFBQW9BcWdBQUFIb0JBQUFMQUs0QUFBQjYKQVFBQUNnREVBQUFB
ZWdFQUFBc0F5QUFBQUhvQkFBQUtBUDhsQUFBQUFBSUFBQUNCQVFBQUJnQUVBQUFBOVFBQUFDUUFB
QUFBQUFBQQpBQUFBQUFZQUFBQUFBQUFBQkFBQUFBQUFBQURqUEFBQUFBQUFBQVFBQUFEeEFBQUFn
UUFBQUQ0QUVCRUFBQUFBQUFBQUFBQUFBQUFHCkFBQUFBQUFBQUFZQUFBQTJGQUFBQUFBQUFBQUFB
SGRyUTBGSmJXRm5aVkYxWlhWbFNXNTJZV3hwWkdGMFpRQWNBQklRQUFBQUFBQUEKQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFDQUFBTkFBc1JCQUFBQURFVUFBQnBjUUFPQURrUkFBQUFBQUFBQUFBMkZB
QUFBZ0FHQUFBQQpBUElBQUFBb0FBQUFBQUFBQUFBQUFBQUdBQUFBdUFVQUFBSUFBQUFjQUFBQUFB
QUFBUE1CQUlBQUFBQUE5QUVBZ0F3QUFBQ0FBUUFBCkJ3QllBQUFBZ0FFQUFBc0FYQUFBQUlBQkFB
QUtBS2tBQUFDQUFRQUFDd0N0QUFBQWdBRUFBQW9BeEFBQUFJQUJBQUFMQU1nQUFBQ0EKQVFBQUNn
RC9KUUFBQUFBQ0FBQUFod0VBQUFZQUJBQUFBUFVBQUFBa0FBQUFBQUFBQUFBQUFBQUdBQUFBQUFB
QUFBUUFBQUFBQUFBQQo0endBQUFBQUFBQUVBQUFBOFFBQUFINEFBQUE3QUJBUkFBQUFBQUFBQUFB
QUFBQUFCZ0FBQUFBQUFBQUdBQUFBTlJRQUFBQUFBQUFBCkFBQjNhME5CU1cxaFoyVlJkV1YxWlVO
dmJHeGxZM1FBSEFBU0VBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdBQURRQUwKRVFR
QUFBQXhGQUFBYVhFQURnQTVFUUFBQUFBQUFBQUFOUlFBQUFJQUJnQUFBUElBQUFBb0FBQUFBQUFB
QUFBQUFBQUdBQUFBdUFVQQpBQUlBQUFBY0FBQUFBQUFBQVBnQkFJQUFBQUFBK1FFQWdBd0FBQUNH
QVFBQUJ3QllBQUFBaGdFQUFBc0FYQUFBQUlZQkFBQUtBS1lBCkFBQ0dBUUFBQ3dDcUFBQUFoZ0VB
QUFvQXdBQUFBSVlCQUFBTEFNUUFBQUNHQVFBQUNnQ0xSQ1FrM1VRa0NJdE1KQ0NMVkNRY1VJdEUK
SkJ4Umkwd2tIRktMVkNRY1VJdEVKQlJSVW9Qc0NOMGNKRkQvRlFBQUFBQ0R4Q1RETHdBQUFJMEJB
QUFHQUFRQUFBRDFBQUFBSkFBQQpBQUFBQUFBQUFBQUFOd0FBQUFBQUFBQWtBQUFBQUFBQUFPTThB
QUFBQUFBQUJBQUFBUEVBQUFEbkFBQUFQd0FRRVFBQUFBQUFBQUFBCkFBQUFBRGNBQUFBQUFBQUFO
Z0FBQURzVUFBQUFBQUFBQUFBQWQydERRVWx0WVdkbFVYVmxkV1ZKYm5ObGNuUkpiV0ZuWlFBY0FC
SVEKQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBQUFOQUFzUkJBQUFBREVVQUFCcGNR
QU1BQXNSQ0FBQUFFRUFBQUIwQUE4QQpDeEVRQUFBQWRRQUFBSFI1Y0dVQURRQUxFUlFBQUFBakFB
QUFhV1FBRUFBTEVSd0FBQUIxQUFBQVpteGhaM01BRWdBTEVTQUFBQUE1CkZBQUFjbVZzWldGelpR
QVBBQXNSSkFBQUFBTUVBQUJwYm1adkFBNEFPUkV0QUFBQUFBQUFBRHNVQUFBQ0FBWUFBUElBQUFB
d0FBQUEKQUFBQUFBQUFBQUEzQUFBQXVBVUFBQU1BQUFBa0FBQUFBQUFBQVAwQkFJQUFBQUFBL2dF
QWdEWUFBQUQvQVFDQURBQUFBSXdCQUFBSApBRmdBQUFDTUFRQUFDd0JjQUFBQWpBRUFBQW9BRHdF
QUFJd0JBQUFMQUJNQkFBQ01BUUFBQ2dBb0FRQUFqQUVBQUFzQUxBRUFBSXdCCkFBQUtBUDhsQUFB
QUFBSUFBQUNUQVFBQUJnQUVBQUFBOVFBQUFDUUFBQUFBQUFBQUFBQUFBQVlBQUFBQUFBQUFKQUFB
QUFBQUFBRGoKUEFBQUFBQUFBQVFBQUFEeEFBQUFMZ0VBQUVjQUVCRUFBQUFBQUFBQUFBQUFBQUFH
QUFBQUFBQUFBQVlBQUFBOUZBQUFBQUFBQUFBQQpBSGRyUTBGSmJXRm5aVkYxWlhWbFVtVm5hWE4w
WlhKUWFYaGxiRUoxWm1abGNnQWNBQklRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFD
QUFBTkFBc1JCQUFBQURFVUFBQnBjUUFQQUFzUkNBQUFBQU1FQUFCa1lYUmhBQlFBQ3hFTUFBQUFk
UUFBQUdSaGRHRmYKYzJsNlpRQVRBQXNSRUFBQUFIVUFBQUJ5YjNkaWVYUmxjd0FRQUFzUkZBQUFB
SFVBQUFCM2FXUjBhQUFSQUFzUkdBQUFBSFVBQUFCbwpaV2xuYUhRQUZ3QUxFUndBQUFCMUFBQUFj
R2w0Wld4ZlptOXliV0YwQUJZQUN4RWdBQUFBY0JJQUFHRjBkR0ZqYUcxbGJuUnpBQkFBCkN4RWtB
QUFBZFFBQUFHWnNZV2R6QUE0QU9SRUFBQUFBQUFBQUFEMFVBQUFDQUFZQUFBRHlBQUFBS0FBQUFB
QUFBQUFBQUFBQUJnQUEKQUxnRkFBQUNBQUFBSEFBQUFBQUFBQUFDQWdDQUFBQUFBQU1DQUlBTUFB
QUFrZ0VBQUFjQVdBQUFBSklCQUFBTEFGd0FBQUNTQVFBQQpDZ0JXQVFBQWtnRUFBQXNBV2dFQUFK
SUJBQUFLQUhBQkFBQ1NBUUFBQ3dCMEFRQUFrZ0VBQUFvQS95VUFBQUFBQWdBQUFKa0JBQUFHCkFB
UUFBQUQxQUFBQUpBQUFBQUFBQUFBQUFBQUFCZ0FBQUFBQUFBQU1BQUFBQUFBQUFPTThBQUFBQUFB
QUJBQUFBUEVBQUFDaUFBQUEKUEFBUUVRQUFBQUFBQUFBQUFBQUFBQVlBQUFBQUFBQUFCZ0FBQUQ4
VUFBQUFBQUFBQUFBQWQydERRVWx0WVdkbFVYVmxkV1ZUWlhSRwpiR0ZuY3dBY0FCSVFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FBQU5BQXNSQkFBQUFERVVBQUJwY1FBUEFBc1JDQUFB
CkFIVUFBQUJ0WVhOckFCQUFDeEVNQUFBQWRRQUFBR1pzWVdkekFBNEFPUkVBQUFBQUFBQUFBRDhV
QUFBQ0FBWUFBQUR5QUFBQUtBQUEKQUFBQUFBQUFBQUFBQmdBQUFMZ0ZBQUFDQUFBQUhBQUFBQUFB
QUFBSEFnQ0FBQUFBQUFnQ0FJQU1BQUFBbUFFQUFBY0FXQUFBQUpnQgpBQUFMQUZ3QUFBQ1lBUUFB
Q2dES0FBQUFtQUVBQUFzQXpnQUFBSmdCQUFBS0FPUUFBQUNZQVFBQUN3RG9BQUFBbUFFQUFBb0Ev
eVVBCkFBQUFBZ0FBQUo4QkFBQUdBQVFBQUFEMUFBQUFKQUFBQUFBQUFBQUFBQUFBQmdBQUFBQUFB
QUFFQUFBQUFBQUFBT004QUFBQUFBQUEKQkFBQUFQRUFBQUIvQUFBQVBBQVFFUUFBQUFBQUFBQUFB
QUFBQUFZQUFBQUFBQUFBQmdBQUFEVVVBQUFBQUFBQUFBQUFkMnREUVVsdApZV2RsVVhWbGRXVkha
WFJHYkdGbmN3QWNBQklRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBQUFOQUFzUkJB
QUFBREVVCkFBQnBjUUFPQURrUkFBQUFBQUFBQUFBMUZBQUFBZ0FHQUFEeUFBQUFLQUFBQUFBQUFB
QUFBQUFBQmdBQUFMZ0ZBQUFDQUFBQUhBQUEKQUFBQUFBQU1BZ0NBQUFBQUFBMENBSUFNQUFBQW5n
RUFBQWNBV0FBQUFKNEJBQUFMQUZ3QUFBQ2VBUUFBQ2dDbkFBQUFuZ0VBQUFzQQpxd0FBQUo0QkFB
QUtBTUFBQUFDZUFRQUFDd0RFQUFBQW5nRUFBQW9BL3lVQUFBQUFBZ0FBQUtVQkFBQUdBQVFBQUFE
MUFBQUFKQUFBCkFBQUFBQUFBQUFBQUJnQUFBQUFBQUFBQUFBQUFBQUFBQU9NOEFBQUFBQUFBQkFB
QUFQRUFBQUJ4QUFBQVBRQVFFUUFBQUFBQUFBQUEKQUFBQUFBWUFBQUFBQUFBQUJnQUFBRUFVQUFB
QUFBQUFBQUFBZDJ0RFFVbHRZV2RsVVhWbGRXVkhaWFJVZVhCbFNVUUFIQUFTRUFBQQpBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdBQURnQTVFUUFBQUFBQUFBQUFRQlFBQUFJQUJnQUFBQUR5
QUFBQUtBQUFBQUFBCkFBQUFBQUFBQmdBQUFMZ0ZBQUFDQUFBQUhBQUFBQUFBQUFBUkFnQ0FBQUFB
QUJJQ0FJQU1BQUFBcEFFQUFBY0FXQUFBQUtRQkFBQUwKQUZ3QUFBQ2tBUUFBQ2dDWkFBQUFwQUVB
QUFzQW5RQUFBS1FCQUFBS0FMUUFBQUNrQVFBQUN3QzRBQUFBcEFFQUFBb0FWbW9BaS9ILwpGUUFB
QUFDSkJvUEVCTWRHQkFBQUFBREhSZ2dBQUFBQWk4WmV3d2NBQUFDckFRQUFCZ0FFQUFBQTlRQUFB
RVFBQUFBQUFBQUFBQUFBCkFDSUFBQUFBQUFBQUFBQUFBQUFBQUFEalBBQUFCUUFBQUFRQUFBQUJB
QUFBSUFBQUFBQUFBQUFBQUFBQUFBQUFBT004QUFBRUFBUUEKQUFBQUFQRUFBQUNGQUFBQVFnQVFF
UUFBQUFBQUFBQUFBQUFBQUNJQUFBQUZBQUFBSVFBQUFFTVVBQUFBQUFBQUFBQUFWMHREUVVORwpR
Mjl1ZEdWNGREbzZWMHREUVVOR1EyOXVkR1Y0ZEFBY0FCSVFBQUFBQUFBQUFBQUFBQUFBQkFBQUFB
QUFBQUFBQUNBS0FBQU5BQVlSClFoUUFBQklBZEdocGN3QU9BRGtSQlFBQUFBQUFBQUJPRkFBQUFn
QUdBQUFBQVBJQUFBQW9BQUFBQUFBQUFBQUFBQUFpQUFBQXVBVUEKQUFJQUFBQWNBQUFBQUFBQUFC
b0NBSUFlQUFBQUd3SUFnQXdBQUFDcUFRQUFCd0I0QUFBQXFnRUFBQXNBZkFBQUFLb0JBQUFLQU0w
QQpBQUNxQVFBQUN3RFJBQUFBcWdFQUFBb0E2QUFBQUtvQkFBQUxBT3dBQUFDcUFRQUFDZ0JXaS9H
TFJnU0Z3SFFLVVA4VkFBQUFBSVBFCkJJdEdDSVhBZEFwUS94VUFBQUFBZzhRRWl3WlEveFVBQUFB
QWc4UUVYc01OQUFBQXNnRUFBQVlBSGdBQUFMRUJBQUFHQUNvQUFBREQKQUFBQUJnQUVBQUFBOVFB
QUFFUUFBQUFBQUFBQUFBQUFBRE1BQUFBQUFBQUFBQUFBQUFBQUFBRGpQQUFBQXdBQUFBUUFBQUFC
QUFBQQpNUUFBQUFBQUFBQUFBQUFBQUFBQUFPTThBQUFDQUFRQUFBQUFBUEVBQUFDbUFBQUFRd0FR
RVFBQUFBQUFBQUFBQUFBQUFETUFBQUFECkFBQUFNZ0FBQUVNVUFBQUFBQUFBQUFBQVYwdERRVU5H
UTI5dWRHVjRkRG82ZmxkTFEwRkRSa052Ym5SbGVIUUFIQUFTRUFBQUFBQUEKQUFBQUFBQUFBQVFB
QUFBQUFBQUFBQUFnQ2dBQURRQUdFVUlVQUFBU0FIUm9hWE1BRGdBNUVRc0FBQUFBQUFBQVVCUUFB
QTRBT1JFYwpBQUFBQUFBQUFGSVVBQUFPQURrUktBQUFBQUFBQUFCZUVnQUFBZ0FHQUFBQThnQUFB
RkFBQUFBQUFBQUFBQUFBQURNQUFBQzRCUUFBCkJ3QUFBRVFBQUFBQUFBQUFIZ0lBZ0FNQUFBQWZB
Z0NBQ2dBQUFDQUNBSUFVQUFBQUlRSUFnQnNBQUFBaUFnQ0FKUUFBQUNNQ0FJQXkKQUFBQUpBSUFn
QXdBQUFDd0FRQUFCd0I0QUFBQXNBRUFBQXNBZkFBQUFMQUJBQUFLQU00QUFBQ3dBUUFBQ3dEU0FB
QUFzQUVBQUFvQQozZ0FBQUxBQkFBQUxBT0lBQUFDd0FRQUFDZ0R1QUFBQXNBRUFBQXNBOGdBQUFM
QUJBQUFLQUFnQkFBQ3dBUUFBQ3dBTUFRQUFzQUVBCkFBb0FWbW9NNkFBQUFBQ0w4SVBFQklYMmRC
OXFBUDhWQUFBQUFJa0dnOFFFeDBZRUFBQUFBTWRHQ0FBQUFBQ0x4bDdETThCZXd3UUEKQUFDNEFR
QUFGQUFWQUFBQXF3RUFBQVlBQkFBQUFQVUFBQUJFQUFBQUFBQUFBQUFBQUFBMEFBQUFBQUFBQUFB
QUFBQUFBQUFBNHp3QQpBQUVBQUFBRUFBQUFBUUFBQURJQUFBQUFBQUFBQUFBQUFBQUFBQURqUEFB
QUFBQUVBQUFBQUFEeEFBQUFiUUFBQURrQUVCRUFBQUFBCkFBQUFBQUFBQUFBMEFBQUFBUUFBQURN
QUFBQ1lGQUFBQUFBQUFBQUFBSGRyUTBGRFJrTnZiblJsZUhSRGNtVmhkR1VBSEFBU0VBQUEKQUFB
QUFBQUFBQUFBQUFRQUFBQUFBQUFBQUFBQUFnQUFEZ0E1RVJNQUFBQUFBQUFBVGhRQUFBSUFCZ0FB
QUFEeUFBQUFRQUFBQUFBQQpBQUFBQUFBQU5BQUFBTGdGQUFBRkFBQUFOQUFBQUFBQUFBQXNBZ0NB
QVFBQUFDMENBSUF2QUFBQUxnSUFnREFBQUFBdEFnQ0FNd0FBCkFDNENBSUFNQUFBQXR3RUFBQWNB
ZUFBQUFMY0JBQUFMQUh3QUFBQzNBUUFBQ2dDMUFBQUF0d0VBQUFzQXVRQUFBTGNCQUFBS0FOQUEK
QUFDM0FRQUFDd0RVQUFBQXR3RUFBQW9BVm92eGkwWUVoY0IwQ2xEL0ZRQUFBQUNEeEFTTFJnaUZ3
SFFLVVA4VkFBQUFBSVBFQklzRwpVUDhWQUFBQUFJUEVCUFpFSkFnQmRBbFc2QUFBQUFDRHhBU0x4
bDdDQkFBTkFBQUFzZ0VBQUFZQUhnQUFBTEVCQUFBR0FDb0FBQURECkFBQUFCZ0E2QUFBQXZnRUFB
QlFBQkFBQUFQVUFBQUJFQUFBQUFBQUFBQUFBQUFCSEFBQUFBQUFBQUFRQUFBQUFBQUFBNHp3QUFB
TUEKQUFBRUFBQUFBUUFBQUVNQUFBQUFBQUFBQkFBQUFBQUFBQURqUEFBQUFnQUVBQUFBQUFEeEFB
QUF0QUFBQUZFQUVCRUFBQUFBQUFBQQpBQUFBQUFCSEFBQUFBd0FBQUVRQUFBQktGQUFBQUFBQUFB
QUFBRmRMUTBGRFJrTnZiblJsZUhRNk9tQnpZMkZzWVhJZ1pHVnNaWFJwCmJtY2daR1Z6ZEhKMVkz
UnZjaWNBSEFBU0VBQUFBQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFBQUFnQ2dBQURRQUdFVUlVQUFB
U0FIUm8KYVhNQURnQTVFUXNBQUFBQUFBQUFVQlFBQUE0QU9SRWNBQUFBQUFBQUFGSVVBQUFPQURr
UktBQUFBQUFBQUFCZUVnQUFBZ0FHQUF3QQpBQUM5QVFBQUJ3QjRBQUFBdlFFQUFBc0FmQUFBQUww
QkFBQUtBTndBQUFDOUFRQUFDd0RnQUFBQXZRRUFBQW9BN0FBQUFMMEJBQUFMCkFQQUFBQUM5QVFB
QUNnRDhBQUFBdlFFQUFBc0FBQUVBQUwwQkFBQUtBSXRNSkFTTEVZbFVKQVQvSlFBQUFBQU1BQUFB
eEFFQUFBWUEKQkFBQUFQVUFBQUFrQUFBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQUFnQUFBQUFBQUFB
NHp3QUFBQUFBQUFFQUFBQThRQUFBSlVBQUFBNwpBQkFSQUFBQUFBQUFBQUFBQUFBQUVBQUFBQUFB
QUFBUUFBQUFuQlFBQUFBQUFBQUFBQUIzYTBOQlEwWkRiMjUwWlhoMFUyVjBUR0Y1ClpYSUFIQUFT
RUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0FBRWdBTEVRUUFBQUJURkFBQVkyOXVk
R1Y0ZEFBUUFBc1IKQ0FBQUFGVVVBQUJzWVhsbGNnQU9BRGtSQ2dBQUFBQUFBQUJYRkFBQUFnQUdB
QUFBQVBJQUFBQW9BQUFBQUFBQUFBQUFBQUFRQUFBQQp1QVVBQUFJQUFBQWNBQUFBQUFBQUFEWUNB
SUFBQUFBQU53SUFnQXdBQUFEREFRQUFCd0JZQUFBQXd3RUFBQXNBWEFBQUFNTUJBQUFLCkFMMEFB
QUREQVFBQUN3REJBQUFBd3dFQUFBb0EyQUFBQU1NQkFBQUxBTndBQUFEREFRQUFDZ0NMUkNRRWl3
aUpUQ1FFL3lVQUFBQUEKREFBQUFNb0JBQUFHQUFRQUFBRDFBQUFBSkFBQUFBQUFBQUFBQUFBQUVB
QUFBQUFBQUFBRUFBQUFBQUFBQU9NOEFBQUFBQUFBQkFBQQpBUEVBQUFDQUFBQUFPQUFRRVFBQUFB
QUFBQUFBQUFBQUFCQUFBQUFBQUFBQUVBQUFBSm9VQUFBQUFBQUFBQUFBZDJ0RFFVTkdRMjl1CmRH
VjRkRVpzZFhOb0FCd0FFaEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFBQklBQ3hF
RUFBQUFVeFFBQUdOdmJuUmwKZUhRQURnQTVFUW9BQUFBQUFBQUFXUlFBQUFJQUJnRHlBQUFBS0FB
QUFBQUFBQUFBQUFBQUVBQUFBTGdGQUFBQ0FBQUFIQUFBQUFBQQpBQUE3QWdDQUFBQUFBRHdDQUlB
TUFBQUF5UUVBQUFjQVdBQUFBTWtCQUFBTEFGd0FBQURKQVFBQUNnQ29BQUFBeVFFQUFBc0FyQUFB
CkFNa0JBQUFLQU1BQUFBREpBUUFBQ3dERUFBQUF5UUVBQUFvQWkwUWtCSXNJaVV3a0JQOGxBQUFB
QUF3QUFBRFFBUUFBQmdBRUFBQUEKOVFBQUFDUUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUFCQUFB
QUFBQUFBRGpQQUFBQUFBQUFBUUFBQUR4QUFBQWpBQUFBRVFBRUJFQQpBQUFBQUFBQUFBQUFBQUFR
QUFBQUFBQUFBQkFBQUFEdEZ3QUFBQUFBQUFBQUFIZHJRMEZEUmtOdmJuUmxlSFJIWlhSTVlYTjBR
Mjl0CmJXbDBWR2x0WlFBY0FCSVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FBQVNB
QXNSQkFBQUFGTVVBQUJqYjI1MFpYaDAKQUE0QU9SRUtBQUFBQUFBQUFPd1hBQUFDQUFZQThnQUFB
Q2dBQUFBQUFBQUFBQUFBQUJBQUFBQzRCUUFBQWdBQUFCd0FBQUFBQUFBQQpRQUlBZ0FBQUFBQkJB
Z0NBREFBQUFNOEJBQUFIQUZnQUFBRFBBUUFBQ3dCY0FBQUF6d0VBQUFvQXRBQUFBTThCQUFBTEFM
Z0FBQURQCkFRQUFDZ0RNQUFBQXp3RUFBQXNBMEFBQUFNOEJBQUFLQUl0RUpBaUxEUUFBQUFCcUFG
QlIveFVBQUFBQWkxUWtFSVBFRElsQ0JNTUcKQUFBQTF3RUFBQVlBRUFBQUFOWUJBQUFHQUFRQUFB
RDFBQUFBSkFBQUFBQUFBQUFBQUFBQUh3QUFBQUFBQUFBSUFBQUFBQUFBQU9NOApBQUFBQUFBQUJB
QUFBUEVBQUFDaEFBQUFSZ0FRRVFBQUFBQUFBQUFBQUFBQUFCOEFBQUFBQUFBQUhnQUFBSjRVQUFB
QUFBQUFBQUFBCmQydERRVU5HUTI5dWRHVjRkRWx1YVhScFlXeHBlbVZFTTBSRVpYWnBZMlVBSEFB
U0VBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEKQUFBQUFnQUFFZ0FMRVFRQUFBQlRGQUFBWTI5
dWRHVjRkQUFSQUFzUkNBQUFBR0FVQUFCa1pYWnBZMlVBRGdBNUVRNEFBQUFBQUFBQQpYaFFBQUFJ
QUJnQUFBQUR5QUFBQU1BQUFBQUFBQUFBQUFBQUFId0FBQUxnRkFBQURBQUFBSkFBQUFBQUFBQUJF
QWdDQUFBQUFBRVVDCkFJQWVBQUFBUmdJQWdBd0FBQURWQVFBQUJ3QllBQUFBMVFFQUFBc0FYQUFB
QU5VQkFBQUtBTWtBQUFEVkFRQUFDd0ROQUFBQTFRRUEKQUFvQTVBQUFBTlVCQUFBTEFPZ0FBQURW
QVFBQUNnQ0xSQ1FZM1VRa0VJdE1KQXlMVkNRSVYxQnFBR29BZyt3STNSd2tVVkwvRlFBQQpBQUNM
ZkNRa2c4UWNoY0NKUndoMUJETEFYOE9MQjFOV1VQOFZBQUFBQUl2d1Z2OFZBQUFBQUl0UENGWlIv
eFVBQUFBQVZ2OFZBQUFBCkFJdGNKRUNEeEJTRjIzWWVpM1FrS0ZXTExRQUFBQUNMVndoV1V2L1Zn
OFFJZzhZUWcrc0JkZTVkWGx1d0FWL0RJQUFBQU9JQkFBQUcKQUQwQUFBRGhBUUFBQmdCR0FBQUE0
QUVBQUFZQVVRQUFBTjhCQUFBR0FGZ0FBQURlQVFBQUJnQnVBQUFBM1FFQUFBWUFCQUFBQVBVQQpB
QUNrQUFBQUFBQUFBQUFBQUFDTEFBQUFBQUFBQUNBQUFBQUFBQUFBNHp3QUFCRUFBQUFFQUFBQUVR
QUFBSGtBQUFBQUFBQUFJQUFBCkFBQUFBQURqUEFBQUFBQUVBQUFBQUFBNUFBQUFUZ0FBQUFBQUFB
QWdBQUFBQUFBQUFLUkJBQUFBQUFnQUFBQUFBRG9BQUFCTUFBQUEKQUFBQUFDQUFBQUFBQUFBQXBF
RUFBQUFBREFBQUFBQUFiQUFBQUJrQUFBQUFBQUFBSUFBQUFBQUFBQUR3UWdBQUFBQVFBQUFBQUFE
eApBQUFBVmdFQUFENEFFQkVBQUFBQUFBQUFBQUFBQUFDTEFBQUFFUUFBQUlvQUFBQ2dGQUFBQUFB
QUFBQUFBSGRyUTBGRFJrTnZiblJsCmVIUkNaV2RwYmxWd1pHRjBaUUFjQUJJUUFBQUFBQUFBQUFB
QUFBQUFFQUFBQUFBQUFBQUFBQUFDQUFBU0FBc1JCQUFBQUZNVUFBQmoKYjI1MFpYaDBBQkVBQ3hF
SUFBQUFBd1FBQUdKMVptWmxjZ0FWQUFzUkRBQUFBSFVBQUFCaWRXWm1aWEpUYVhwbEFBOEFDeEVR
QUFBQQpRUUFBQUhScGJXVUFFUUFMRVJnQUFBQnZGQUFBWW05MWJtUnpBQlVBQ3hFY0FBQUF0eE1B
QUdScGNuUjVVbVZqZEhNQUdRQUxFU0FBCkFBQjFBQUFBWkdseWRIbFNaV04wUTI5MWJuUUFEZ0E1
RVI0QUFBQUFBQUFBWlJRQUFBNEFPUkU3QUFBQUFBQUFBR1lVQUFBT0FEa1IKUkFBQUFBQUFBQUJx
RkFBQURnQTVFVThBQUFBQUFBQUFiQlFBQUE0QU9SRldBQUFBQUFBQUFHb1VBQUFPQURrUmR3QUFB
QUFBQUFCdQpGQUFBQWdBR0FBQUE4Z0FBQUlBQUFBQUFBQUFBQUFBQUFJc0FBQUM0QlFBQURRQUFB
SFFBQUFBQUFBQUFTUUlBZ0FBQUFBQktBZ0NBCkt3QUFBRXNDQUlBeUFBQUFUQUlBZ0RVQUFBQlhB
Z0NBTmdBQUFFNENBSUJEQUFBQVR3SUFnRW9BQUFCUUFnQ0FWUUFBQUZFQ0FJQmMKQUFBQVV3SUFn
SElBQUFCVUFnQ0Fod0FBQUZZQ0FJQ0tBQUFBVndJQWdBd0FBQURjQVFBQUJ3RFlBQUFBM0FFQUFB
c0EzQUFBQU53QgpBQUFLQUs0QkFBRGNBUUFBQ3dDeUFRQUEzQUVBQUFvQXZnRUFBTndCQUFBTEFN
SUJBQURjQVFBQUNnRE9BUUFBM0FFQUFBc0EwZ0VBCkFOd0JBQUFLQU40QkFBRGNBUUFBQ3dEaUFR
QUEzQUVBQUFvQTdnRUFBTndCQUFBTEFQSUJBQURjQVFBQUNnRCtBUUFBM0FFQUFBc0EKQWdJQUFO
d0JBQUFLQUJnQ0FBRGNBUUFBQ3dBY0FnQUEzQUVBQUFvQWkwUWtCSXRJQ0l0UUJGRlMveFVBQUFB
QWc4UUl3dzRBQUFEbwpBUUFBQmdBRUFBQUE5UUFBQUNRQUFBQUFBQUFBQUFBQUFCWUFBQUFBQUFB
QUJBQUFBQUFBQUFEalBBQUFBQUFBQUFRQUFBRHhBQUFBCmh3QUFBRDhBRUJFQUFBQUFBQUFBQUFB
QUFBQVdBQUFBQUFBQUFCVUFBQUNhRkFBQUFBQUFBQUFBQUhkclEwRkRSa052Ym5SbGVIUlMKWlc1
a1pYSlZjR1JoZEdVQUhBQVNFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQUFFZ0FM
RVFRQUFBQlRGQUFBWTI5dQpkR1Y0ZEFBT0FEa1JEQUFBQUFBQUFBQnhGQUFBQWdBR0FBRHlBQUFB
TUFBQUFBQUFBQUFBQUFBQUZnQUFBTGdGQUFBREFBQUFKQUFBCkFBQUFBQUJhQWdDQUFBQUFBRnND
QUlBVkFBQUFYQUlBZ0F3QUFBRG5BUUFBQndCWUFBQUE1d0VBQUFzQVhBQUFBT2NCQUFBS0FLOEEK
QUFEbkFRQUFDd0N6QUFBQTV3RUFBQW9BeUFBQUFPY0JBQUFMQU13QUFBRG5BUUFBQ2dCV2kzUWtD
SXRHQ0ZEL0ZRQUFBQUNEeEFUSApSZ2dBQUFBQVhzTUxBQUFBc1FFQUFBWUFCQUFBQVBVQUFBQkVB
QUFBQUFBQUFBQUFBQUFiQUFBQUFBQUFBQVFBQUFBQUFBQUE0endBCkFBRUFBQUFFQUFBQUFRQUFB
QmtBQUFBQUFBQUFCQUFBQUFBQUFBRGpQQUFBQUFBRUFBQUFBQUR4QUFBQWh3QUFBRDhBRUJFQUFB
QUEKQUFBQUFBQUFBQUFiQUFBQUFRQUFBQm9BQUFDYUZBQUFBQUFBQUFBQUFIZHJRMEZEUmtOdmJu
UmxlSFJHYVc1cGMyaFZjR1JoZEdVQQpIQUFTRUFBQUFBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQUFB
QUFBZ0FBRWdBTEVRUUFBQUJURkFBQVkyOXVkR1Y0ZEFBT0FEa1JDUUFBCkFBQUFBQUJTRkFBQUFn
QUdBQUR5QUFBQU9BQUFBQUFBQUFBQUFBQUFHd0FBQUxnRkFBQUVBQUFBTEFBQUFBQUFBQUJmQWdD
QUFRQUEKQUdBQ0FJQVNBQUFBWVFJQWdCb0FBQUJpQWdDQURBQUFBTzBCQUFBSEFIZ0FBQUR0QVFB
QUN3QjhBQUFBN1FFQUFBb0F6d0FBQU8wQgpBQUFMQU5NQUFBRHRBUUFBQ2dEb0FBQUE3UUVBQUFz
QTdBQUFBTzBCQUFBS0FJdEVKQVNMU0FTSlRDUUUveVVBQUFBQURRQUFBUE1CCkFBQUdBQVFBQUFE
MUFBQUFKQUFBQUFBQUFBQUFBQUFBRVFBQUFBQUFBQUFFQUFBQUFBQUFBT004QUFBQUFBQUFCQUFB
QVBFQUFBQ08KQUFBQVJnQVFFUUFBQUFBQUFBQUFBQUFBQUJFQUFBQUFBQUFBRVFBQUFKb1VBQUFB
QUFBQUFBQUFkMnREUVVOR1EyOXVkR1Y0ZEZKbApiR1ZoYzJWRU0wUlNaWE52ZFhKalpYTUFIQUFT
RUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0FBRWdBTEVRUUFBQUJUCkZBQUFZMjl1
ZEdWNGRBQU9BRGtSQ3dBQUFBQUFBQUJRRkFBQUFnQUdBQUFBOGdBQUFDZ0FBQUFBQUFBQUFBQUFB
QkVBQUFDNEJRQUEKQWdBQUFCd0FBQUFBQUFBQVpRSUFnQUFBQUFCbUFnQ0FEQUFBQVBJQkFBQUhB
RmdBQUFEeUFRQUFDd0JjQUFBQThnRUFBQW9BdGdBQQpBUElCQUFBTEFMb0FBQUR5QVFBQUNnRFFB
QUFBOGdFQUFBc0ExQUFBQVBJQkFBQUtBSXRNSkFTTFVRaUpWQ1FFL3lVQUFBQUFEUUFBCkFOMEJB
QUFHQUFRQUFBRDFBQUFBSkFBQUFBQUFBQUFBQUFBQUVRQUFBQUFBQUFBSUFBQUFBQUFBQU9NOEFB
QUFBQUFBQkFBQUFQRUEKQUFDYkFBQUFRQUFRRVFBQUFBQUFBQUFBQUFBQUFCRUFBQUFBQUFBQUVR
QUFBS0lVQUFBQUFBQUFBQUFBZDJ0RFFVTkdRMjl1ZEdWNApkRUZrWkZWd1pHRjBaVkpsWTNRQUhB
QVNFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQUFFZ0FMRVFRQUFBQlRGQUFBClky
OXVkR1Y0ZEFBUkFBc1JDQUFBQUc4VUFBQmliM1Z1WkhNQURnQTVFUXNBQUFBQUFBQUFiaFFBQUFJ
QUJnQUE4Z0FBQUNnQUFBQUEKQUFBQUFBQUFBQkVBQUFDNEJRQUFBZ0FBQUJ3QUFBQUFBQUFBYWdJ
QWdBQUFBQUJyQWdDQURBQUFBUGdCQUFBSEFGZ0FBQUQ0QVFBQQpDd0JjQUFBQStBRUFBQW9Bd3dB
QUFQZ0JBQUFMQU1jQUFBRDRBUUFBQ2dEY0FBQUErQUVBQUFzQTRBQUFBUGdCQUFBS0FJdEVKQVNM
ClNBaFdVZjhWQUFBQUFJdndnOFFFaGZaMUFsN0RWMWIvRlFBQUFBQldpL2ovRlFBQUFBQ0R4QWlM
eDE5ZXd3c0FBQUFBQWdBQUJnQWUKQUFBQS93RUFBQVlBSndBQUFQNEJBQUFHQUFRQUFBRDFBQUFB
WkFBQUFBQUFBQUFBQUFBQU13QUFBQUFBQUFBRUFBQUFBQUFBQU9NOApBQUFJQUFBQUJBQUFBQWdB
QUFBcUFBQUFBQUFBQUFRQUFBQUFBQUFBNHp3QUFBQUFCQUFBQUFBQUd3QUFBQllBQUFBQUFBQUFC
QUFBCkFBQUFBQURqUEFBQUFBQUlBQUFBQUFEeEFBQUFzd0FBQUVzQUVCRUFBQUFBQUFBQUFBQUFB
QUF6QUFBQUNBQUFBRElBQUFDakZBQUEKQUFBQUFBQUFBSGRyUTBGRFJrTnZiblJsZUhSRGIzQjVW
WEJrWVhSbFVtVmpkRVZ1ZFcxbGNtRjBiM0lBSEFBU0VBQUFBQUFBQUFBQQpBQUFBQUFnQUFBQUFB
QUFBQUFBQUFnQUFFZ0FMRVFRQUFBQlRGQUFBWTI5dWRHVjRkQUFPQURrUkNRQUFBQUFBQUFCeUZB
QUFEZ0E1CkVSd0FBQUFBQUFBQWN4UUFBQTRBT1JFbEFBQUFBQUFBQUhZVUFBQUNBQVlBQVBJQUFB
QllBQUFBQUFBQUFBQUFBQUF6QUFBQXVBVUEKQUFnQUFBQk1BQUFBQUFBQUFHOENBSUFBQUFBQWNB
SUFnQlFBQUFCeEFnQ0FHUUFBQUhjQ0FJQWJBQUFBZEFJQWdDSUFBQUIxQWdDQQpMZ0FBQUhZQ0FJ
QXlBQUFBZHdJQWdBd0FBQUQ5QVFBQUJ3Q1lBQUFBL1FFQUFBc0FuQUFBQVAwQkFBQUtBUHNBQUFE
OUFRQUFDd0QvCkFBQUEvUUVBQUFvQUN3RUFBUDBCQUFBTEFBOEJBQUQ5QVFBQUNnQWJBUUFBL1FF
QUFBc0FId0VBQVAwQkFBQUtBRFFCQUFEOUFRQUEKQ3dBNEFRQUEvUUVBQUFvQS95VUFBQUFBQWdB
QUFBWUNBQUFHQUFRQUFBRDFBQUFBSkFBQUFBQUFBQUFBQUFBQUJnQUFBQUFBQUFBRQpBQUFBQUFB
QUFPTThBQUFBQUFBQUJBQUFBUEVBQUFDVEFBQUFTQUFRRVFBQUFBQUFBQUFBQUFBQUFBWUFBQUFB
QUFBQUJnQUFBS1VVCkFBQUFBQUFBQUFBQWQydERRVU5HVlhCa1lYUmxVbVZqZEVWdWRXMWxjbUYw
YjNKT1pYaDBVbVZqZEFBY0FCSVFBQUFBQUFBQUFBQUEKQUFBQUFBQUFBQUFBQUFBQUFBQUNBQUFW
QUFzUkJBQUFBSG9VQUFCbGJuVnRaWEpoZEc5eUFBNEFPUkVBQUFBQUFBQUFBSGdVQUFBQwpBQVlB
QVBJQUFBQW9BQUFBQUFBQUFBQUFBQUFHQUFBQXVBVUFBQUlBQUFBY0FBQUFBQUFBQUhvQ0FJQUFB
QUFBZXdJQWdBd0FBQUFGCkFnQUFCd0JZQUFBQUJRSUFBQXNBWEFBQUFBVUNBQUFLQUxzQUFBQUZB
Z0FBQ3dDL0FBQUFCUUlBQUFvQTFBQUFBQVVDQUFBTEFOZ0EKQUFBRkFnQUFDZ0QvSlFBQUFBQUNB
QUFBREFJQUFBWUFCQUFBQVBVQUFBQWtBQUFBQUFBQUFBQUFBQUFHQUFBQUFBQUFBQVFBQUFBQQpB
QUFBNHp3QUFBQUFBQUFFQUFBQThRQUFBSklBQUFCSEFCQVJBQUFBQUFBQUFBQUFBQUFBQmdBQUFB
QUFBQUFHQUFBQXBoUUFBQUFBCkFBQUFBQUIzYTBOQlEwWlZjR1JoZEdWU1pXTjBSVzUxYldWeVlY
UnZjbEpsYkdWaGMyVUFIQUFTRUFBQUFBQUFBQUFBQUFBQUFBQUEKQUFBQUFBQUFBQUFBQWdBQUZR
QUxFUVFBQUFCNkZBQUFaVzUxYldWeVlYUnZjZ0FPQURrUkFBQUFBQUFBQUFCMkZBQUFBZ0FHQUFB
QQo4Z0FBQUNnQUFBQUFBQUFBQUFBQUFBWUFBQUM0QlFBQUFnQUFBQndBQUFBQUFBQUFmd0lBZ0FB
QUFBQ0FBZ0NBREFBQUFBc0NBQUFICkFGZ0FBQUFMQWdBQUN3QmNBQUFBQ3dJQUFBb0F1Z0FBQUFz
Q0FBQUxBTDRBQUFBTEFnQUFDZ0RVQUFBQUN3SUFBQXNBMkFBQUFBc0MKQUFBS0FGYUxkQ1FJaGZa
ME5JdEdCSVhBZEFwUS94VUFBQUFBZzhRRWkwWUloY0IwQ2xEL0ZRQUFBQUNEeEFTTEJsRC9GUUFB
QUFCVwo2QUFBQUFDRHhBaGV3eE1BQUFDeUFRQUFCZ0FrQUFBQXNRRUFBQVlBTUFBQUFNTUFBQUFH
QURZQUFBQytBUUFBRkFBRUFBQUE5UUFBCkFFUUFBQUFBQUFBQUFBQUFBRDhBQUFBQUFBQUFCQUFB
QUFBQUFBRGpQQUFBQVFBQUFBUUFBQUFCQUFBQVBRQUFBQUFBQUFBRUFBQUEKQUFBQUFPTThBQUFB
QUFRQUFBQUFBUEVBQUFDaUFBQUFPZ0FRRVFBQUFBQUFBQUFBQUFBQUFEOEFBQUFCQUFBQVBnQUFB
Sm9VQUFBQQpBQUFBQUFBQWQydERRVU5HUTI5dWRHVjRkRVJsYzNSeWIza0FIQUFTRUFBQUFBQUFB
QUFBQUFBQUFBUUFBQUFBQUFBQUFBQUFBZ0FBCkVnQUxFUVFBQUFCVEZBQUFZMjl1ZEdWNGRBQU9B
RGtSRVFBQUFBQUFBQUJRRkFBQURnQTVFU0lBQUFBQUFBQUFVaFFBQUE0QU9SRXUKQUFBQUFBQUFB
RjRTQUFBQ0FBWUFBQUR5QUFBQU1BQUFBQUFBQUFBQUFBQUFQd0FBQUxnRkFBQURBQUFBSkFBQUFB
QUFBQUF4QWdDQQpBUUFBQURJQ0FJQStBQUFBTXdJQWdBd0FBQUFSQWdBQUJ3QjRBQUFBRVFJQUFB
c0FmQUFBQUJFQ0FBQUtBTW9BQUFBUkFnQUFDd0RPCkFBQUFFUUlBQUFvQTJnQUFBQkVDQUFBTEFO
NEFBQUFSQWdBQUNnRHFBQUFBRVFJQUFBc0E3Z0FBQUJFQ0FBQUtBQVFCQUFBUkFnQUEKQ3dBSUFR
QUFFUUlBQUFvQWFBQUFBQUQvRlFBQUFBQ0R4QVNqQUFBQUFNTUJBQUFBR1FJQUFBWUFCd0FBQUNV
QkFBQUdBQThBQUFBeQpBZ0FBQmdBRUFBQUE5UUFBQUNRQUFBQUFBQUFBQUFBQUFCUUFBQUFBQUFB
QUFBQUFBQUFBQUFEalBBQUFBQUFBQUFRQUFBRHhBQUFBCml3QUFBRmNBRHhFQUFBQUFBQUFBQUFB
QUFBQVVBQUFBQUFBQUFCTUFBQUNIRXdBQUFBQUFBQUFBQUdCa2VXNWhiV2xqSUdsdWFYUnAKWVd4
cGVtVnlJR1p2Y2lBbmEwTkdWMmx1Wkc5M2MxTlRURkJsWlhKRFpYSjBKeWNBSEFBU0VBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQQpBQUFBQUFBQUFnQUFEZ0E1RVFVQUFBQUFBQUFBUWhNQUFBSUFCZ0FB
OGdBQUFDQUFBQUFBQUFBQUFBQUFBQlFBQUFDNEJRQUFBUUFBCkFCUUFBQUFBQUFBQUxRQUFnQXdB
QUFBV0FnQUFCd0JZQUFBQUZnSUFBQXNBWEFBQUFCWUNBQUFLQUxNQUFBQVdBZ0FBQ3dDM0FBQUEK
RmdJQUFBb0F6QUFBQUJZQ0FBQUxBTkFBQUFBV0FnQUFDZ0JmYTBOR1YybHVaRzkzYzFOVFRGQmxa
WEpEWlhKMEFHZ0FBQUFBL3hVQQpBQUFBZzhRRW93QUFBQUREQVFBQUFDRUNBQUFHQUFjQUFBQWxB
UUFBQmdBUEFBQUFOUUlBQUFZQUJBQUFBUFVBQUFBa0FBQUFBQUFBCkFBQUFBQUFVQUFBQUFBQUFB
QUFBQUFBQUFBQUE0endBQUFBQUFBQUVBQUFBOFFBQUFJOEFBQUJiQUE4UkFBQUFBQUFBQUFBQUFB
QUEKRkFBQUFBQUFBQUFUQUFBQWh4TUFBQUFBQUFBQUFBQmdaSGx1WVcxcFl5QnBibWwwYVdGc2FY
cGxjaUJtYjNJZ0oydERSbGRwYm1SdgpkM05UVTB4RGFHRnBia052Ym5SbGVIUW5Kd0FjQUJJUUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQUFBT0FEa1JCUUFBCkFBQUFBQUJDRXdBQUFn
QUdBQUR5QUFBQUlBQUFBQUFBQUFBQUFBQUFGQUFBQUxnRkFBQUJBQUFBRkFBQUFBQUFBQUF1QUFD
QURBQUEKQUI0Q0FBQUhBRmdBQUFBZUFnQUFDd0JjQUFBQUhnSUFBQW9BdHdBQUFCNENBQUFMQUxz
QUFBQWVBZ0FBQ2dEUUFBQUFIZ0lBQUFzQQoxQUFBQUI0Q0FBQUtBRjlyUTBaWGFXNWtiM2R6VTFO
TVEyaGhhVzVEYjI1MFpYaDBBR2dBQUFBQS94VUFBQUFBZzhRRW93QUFBQURECkFRQUFBQ2tDQUFB
R0FBY0FBQUFsQVFBQUJnQVBBQUFBTkFJQUFBWUFCQUFBQVBVQUFBQWtBQUFBQUFBQUFBQUFBQUFV
QUFBQUFBQUEKQUFBQUFBQUFBQUFBNHp3QUFBQUFBQUFFQUFBQThRQUFBSXdBQUFCWUFBOFJBQUFB
QUFBQUFBQUFBQUFBRkFBQUFBQUFBQUFUQUFBQQpoeE1BQUFBQUFBQUFBQUJnWkhsdVlXMXBZeUJw
Ym1sMGFXRnNhWHBsY2lCbWIzSWdKMnREUmxkcGJtUnZkM05UVTB4TWIyTmhiRU5sCmNuUW5Kd0Fj
QUJJUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQUFBT0FEa1JCUUFBQUFBQUFBQkNF
d0FBQWdBR0FQSUEKQUFBZ0FBQUFBQUFBQUFBQUFBQVVBQUFBdUFVQUFBRUFBQUFVQUFBQUFBQUFB
QzhBQUlBTUFBQUFKZ0lBQUFjQVdBQUFBQ1lDQUFBTApBRndBQUFBbUFnQUFDZ0MwQUFBQUpnSUFB
QXNBdUFBQUFDWUNBQUFLQU13QUFBQW1BZ0FBQ3dEUUFBQUFKZ0lBQUFvQVgydERSbGRwCmJtUnZk
M05UVTB4TWIyTmhiRU5sY25RQWFBQUFBQUQvRlFBQUFBQ0R4QVNqQUFBQUFNTUJBQUFBTVFJQUFB
WUFCd0FBQUNVQkFBQUcKQUE4QUFBQXpBZ0FBQmdBRUFBQUE5UUFBQUNRQUFBQUFBQUFBQUFBQUFC
UUFBQUFBQUFBQUFBQUFBQUFBQUFEalBBQUFBQUFBQUFRQQpBQUR4QUFBQW1RQUFBR1VBRHhFQUFB
QUFBQUFBQUFBQUFBQVVBQUFBQUFBQUFCTUFBQUNIRXdBQUFBQUFBQUFBQUdCa2VXNWhiV2xqCklH
bHVhWFJwWVd4cGVtVnlJR1p2Y2lBbmEwTkdVM1J5WldGdFVISnZjR1Z5ZEhsWGFXNWtiM2R6VTFO
TVEyVnlkRWx1Wm04bkp3QWMKQUJJUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQUFB
T0FEa1JCUUFBQUFBQUFBQkNFd0FBQWdBR0FBQUFBUElBQUFBZwpBQUFBQUFBQUFBQUFBQUFVQUFB
QXVBVUFBQUVBQUFBVUFBQUFBQUFBQURBQUFJQU1BQUFBTGdJQUFBY0FXQUFBQUM0Q0FBQUxBRndB
CkFBQXVBZ0FBQ2dEQkFBQUFMZ0lBQUFzQXhRQUFBQzRDQUFBS0FOd0FBQUF1QWdBQUN3RGdBQUFB
TGdJQUFBb0FYMnREUmxOMGNtVmgKYlZCeWIzQmxjblI1VjJsdVpHOTNjMU5UVEVObGNuUkpibVp2
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUZnSUFBQVlBQkFBQQpBQjRDQUFBR0FBZ0FBQUFt
QWdBQUJnQU1BQUFBTGdJQUFBWUFCQUFBQUY0QUZSVjUwUzlMUFRrUFI1ZVlHQjhneVpCUUJBQUFB
R002ClhHTjVaM2RwYmx4b2IyMWxYR050WVhKeWFXNWNkMlZpYTJsMFluVnBiR1JjYkdsaVhIZGxZ
bXRwZEhONWMzUmxiV2x1ZEdWeVptRmoKWlM1Mll6Z3dMbkJrWWdEeThVQmpiMjF3TG1sa0o4WnVB
UC8vQUFBREFFQm1aV0YwTGpBd0FRQUFBUC8vQUFBREFDNWtjbVZqZEhabApBQUFBQUFFQUFBQURB
ZkVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQzVrWldKMVp5UlRBQUFBQUFJQUFBQURBUUNZQUFBMEFB
QUFBQUFBCkFBQUFBQUFBQUM1eVpHRjBZUUFBQUFBQUFBTUFBQUFEQVFRQUFBQUFBQUFBaEF5QTB3
QUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFBTUEKQUFBREFDNWtZWFJoQUFBQUFBQUFBQVFBQUFBREFR
d0FBQUFBQUFBQTZYRFFJQUFBQUFBQUFBQUFBQUFYQUFBQUFBQUFBQVFBQUFBRApBQUFBQUFBc0FB
QUFCQUFBQUFRQUFBQURBQUFBQUFCQ0FBQUFDQUFBQUFRQUFBQURBQzUwWlhoMEFBQUFBQUFBQUFV
QUFBQURBUThBCkFBQUFBQUFBWS9VUzRRQUFBZ0FBQUM1a1pXSjFaeVJUQUFBQUFBWUFBQUFEQWNB
QUFBQUZBQUFBQUFBQUFBVUFCUUFBQUY5bVlXSnoKWmdBQUFBQUFBQVVBSUFBQ0FBQUFBQUJiQUFB
QUFBQUFBQUFBQUFBQ0FDNTBaWGgwQUFBQUFBQUFBQWNBQUFBREFSd0FBQUFCQUFBQQpCOTNJNVFB
QUFnQUFBQzVrWldKMVp5UlRBQUFBQUFnQUFBQURBZEFBQUFBSEFBQUFBQUFBQUFjQUJRQUFBRjlq
Wldsc1pnQUFBQUFBCkFBY0FJQUFDQUFBQUFBQmxBQUFBQUFBQUFBQUFBQUFDQUM1MFpYaDBBQUFB
QUFBQUFBa0FBQUFEQVJZQUFBQUJBQUFBM3FTKzFnQUEKQWdBQUFDNWtaV0oxWnlSVEFBQUFBQW9B
QUFBREFjd0FBQUFGQUFBQUFBQUFBQWtBQlFBQUFGOXdiM2RtQUFBQUFBQUFBQWtBSUFBQwpBRjlm
UTBsd2IzY0FBQUFBQUFBQUlBQUNBQzUwWlhoMEFBQUFBQUFBQUFzQUFBQURBUThBQUFBQUFBQUFZ
L1VTNFFBQUFnQUFBQzVrClpXSjFaeVJUQUFBQUFBd0FBQUFEQWNBQUFBQUZBQUFBQUFBQUFBc0FC
UUFBQUFBQUFBQnhBQUFBQUFBQUFBc0FJQUFDQUM1MFpYaDAKQUFBQUFBQUFBQTBBQUFBREFSMEFB
QUFBQUFBQVQ0dDVvZ0FBQWdBQUFDNWtaV0oxWnlSVEFBQUFBQTRBQUFBREFmd0FBQUFGQUFBQQpB
QUFBQUEwQUJRQUFBQUFBQUFCL0FBQUFBQUFBQUEwQUlBQURBQzUwWlhoMEFBQUFBQUFBQUE4QUFB
QURBVDhBQUFBQUFBQUFObEhLCnlBQUFBZ0FBQUM1a1pXSjFaeVJUQUFBQUFCQUFBQUFEQVJnQkFB
QUZBQUFBQUFBQUFBOEFCUUFBQUFBQUFBQ2VBQUFBQUFBQUFBOEEKSUFBREFDNTBaWGgwQUFBQUFB
QUFBQkVBQUFBREFUVUFBQUFBQUFBQVlHSk91UUFBQWdBQUFDNWtaV0oxWnlSVEFBQUFBQklBQUFB
RApBUlFCQUFBRkFBQUFBQUFBQUJFQUJRQUFBQUFBQUFEbUFBQUFBQUFBQUJFQUlBQURBQzUwWlho
MEFBQUFBQUFBQUJNQUFBQURBVUVBCkFBQUNBQUFBZmxqbUpnQUFBUUFBQUM1a1pXSjFaeVJUQUFB
QUFCUUFBQUFEQVJBQkFBQUZBQUFBQUFBQUFCTUFCUUFBQUFBQUFBQXMKQVFBQUFBQUFBQk1BSUFB
Q0FDNTBaWGgwQUFBQUFBQUFBQlVBQUFBREFRWUFBQUFCQUFBQVFWRXQwQUFBQVFBQUFDNWtaV0ox
WnlSVApBQUFBQUJZQUFBQURBZFFBQUFBRkFBQUFBQUFBQUJVQUJRQUFBQUFBQUFCTkFRQUFBQUFB
QUJVQUlBQUNBQzUwWlhoMEFBQUFBQUFBCkFCY0FBQUFEQVFzQUFBQUJBQUFBYUdocU93QUFBUUFB
QUM1a1pXSjFaeVJUQUFBQUFCZ0FBQUFEQWV3QUFBQUZBQUFBQUFBQUFCY0EKQlFBQUFBQUFBQUJ0
QVFBQUFBQUFBQmNBSUFBQ0FDNTBaWGgwQUFBQUFBQUFBQmtBQUFBREFRY0FBQUFCQUFBQUwwVDdi
QUFBQVFBQQpBQzVrWldKMVp5UlRBQUFBQUJvQUFBQURBZFFBQUFBRkFBQUFBQUFBQUJrQUJRQUFB
QUFBQUFDUkFRQUFBQUFBQUJrQUlBQUNBQzUwClpYaDBBQUFBQUFBQUFCc0FBQUFEQVZrREFBQWtB
QUFBVUlSbkd3QUFBUUFBQUM1a1pXSjFaeVJUQUFBQUFCd0FBQUFEQVVnRkFBQXoKQUFBQUFBQUFB
QnNBQlFBQUFBQUFBQUMwQVFBQUFBQUFBQnNBSUFBREFBQUFBQURPQVFBQUFBQUFBQUFBQUFBQ0FB
QUFBQURnQVFBQQpBQUFBQUFBQUFBQUNBQzV5WkdGMFlRQUFBQUFBQUIwQUFBQURBUVFBQUFBQUFB
QUFoQXlBMHdBQUFnQUFBQUFBQUFEMkFRQUFBQUFBCkFCMEFBQUFDQUM1eVpHRjBZUUFBQUFBQUFC
NEFBQUFEQVFnQUFBQUFBQUFBQzRyTXdRQUFBZ0FBQUFBQUFBQUdBZ0FBQUFBQUFCNEEKQUFBQ0FD
NWtZWFJoQUFBQUFBQUFBQjhBQUFBREFRUUFBQUFBQUFBQWtFSGNkZ0FBQWdBQUFBQUFBQUFlQWdB
QUFBQUFBQjhBQUFBRApBQzV5WkdGMFlRQUFBQUFBQUNBQUFBQURBUWdBQUFBQUFBQUFnTXphb2dB
QUFnQUFBQUFBQUFCR0FnQUFBQUFBQUNBQUFBQUNBQzV5ClpHRjBZUUFBQUFBQUFDRUFBQUFEQVFn
QUFBQUFBQUFBV09aYlBRQUFBZ0FBQUFBQUFBQmVBZ0FBQUFBQUFDRUFBQUFDQUM1eVpHRjAKWVFB
QUFBQUFBQ0lBQUFBREFRUUFBQUFBQUFBQWRyWGxqUUFBQWdBQUFBQUFBQUIyQWdBQUFBQUFBQ0lB
QUFBQ0FBQUFBQUNHQWdBQQpBQUFBQUFBQUFBQUNBQUFBQUFDY0FnQUFBQUFBQUFBQUFBQUNBQUFB
QUFDd0FnQUFBQUFBQUFBQUFBQUNBQUFBQUFER0FnQUFBQUFBCkFBQUFBQUFDQUFBQUFBRGNBZ0FB
QUFBQUFBQUFBQUFDQUFBQUFBRHZBZ0FBQUFBQUFBQUFBQUFDQUFBQUFBQUVBd0FBQUFBQUFBQUEK
QUFBQ0FDNXlaR0YwWVFBQUFBQUFBQ01BQUFBREFRZ0FBQUFBQUFBQTFFaGR1Z0FBQWdBQUFBQUFB
QUFmQXdBQUFBQUFBQ01BQUFBQwpBQzV5WkdGMFlRQUFBQUFBQUNRQUFBQURBUVFBQUFBQUFBQUFT
c1RnM1FBQUFnQUFBQUFBQUFBM0F3QUFBQUFBQUNRQUFBQUNBQUFBCkFBQkhBd0FBQUFBQUFBQUFB
QUFDQUM1eVpHRjBZUUFBQUFBQUFDVUFBQUFEQVJBQUFBQUFBQUFBTjlBVWhBQUFBZ0FBQUFBQUFB
QmkKQXdBQUFBQUFBQ1VBQUFBREFBQUFBQUNVQXdBQUFBQUFBQUFBQUFBQ0FBQUFBQUNxQXdBQUFB
QUFBQUFBQUFBQ0FBQUFBQURDQXdBQQpBQUFBQUFBQUFBQUNBQzVrWVhSaEFBQUFBQUFBQUNZQUFB
QURBUVFBQUFBQUFBQUFISzhiSXdBQUFnQUFBQUFBQUFEZUF3QUFBQUFBCkFDWUFBQUFEQUFBQUFB
QU5CQUFBQUFBQUFBQUFBQUFDQUY5dFpXMXpaWFFBQUFBQUFBQUFJQUFDQUM1MFpYaDBBQUFBQUFB
QUFDY0EKQUFBREFUZ0FBQUFHQUFBQVZFS0poUUFBQVFBQUFDNWtaV0oxWnlSVEFBQUFBQ2dBQUFB
REFUQUJBQUFKQUFBQUFBQUFBQ2NBQlFBQQpBQUFBQUFBdEJBQUFBQUFBQUNjQUlBQUNBQzVpYzNN
QUFBQUFBQUFBQUNrQUFBQURBUndBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQlNCQUFBQkFB
QUFDa0FBQUFEQUFBQUFBQnNCQUFBQUFBQUFDa0FBQUFEQUFBQUFBQ0hCQUFBQ0FBQUFDa0FBQUFE
QUM1MFpYaDAKQUFBQUFBQUFBQ29BQUFBREFTVUFBQUFEQUFBQUNTWENHUUFBQVFBQUFDNWtaV0ox
WnlSVEFBQUFBQ3NBQUFBREFXd0JBQUFMQUFBQQpBQUFBQUNvQUJRQUFBQUFBQUFDbEJBQUFBQUFB
QUNvQUlBQURBQUFBQUFEVUJBQUFBQUFBQUFBQUFBQUNBQUFBQUFENkJBQUFBQUFBCkFBQUFBQUFD
QUM1MFpYaDBBQUFBQUFBQUFDd0FBQUFEQVYwQUFBQUdBQUFBRDEyQlVnQUFBUUFBQUM1a1pXSjFa
eVJUQUFBQUFDMEEKQUFBREFlZ0JBQUFQQUFBQUFBQUFBQ3dBQlFBQUFBQUFBQUFmQlFBQUFBQUFB
Q3dBSUFBQ0FBQUFBQUJQQlFBQUFBQUFBQUFBQUFBQwpBQUFBQUFCMUJRQUFBQUFBQUFBQUFBQUNB
QzUwWlhoMEFBQUFBQUFBQUM0QUFBQURBVFFBQUFBREFBQUFPSWk2NWdBQUFRQUFBQzVrClpXSjFa
eVJUQUFBQUFDOEFBQUFEQVhnQkFBQUxBQUFBQUFBQUFDNEFCUUFBQUFBQUFBQ2FCUUFBQUFBQUFD
NEFJQUFDQUM1MFpYaDAKQUFBQUFBQUFBREFBQUFBREFWSUJBQUFQQUFBQWs2TG0zd0FBQVFBQUFD
NWtaV0oxWnlSVEFBQUFBREVBQUFBREFmUUNBQUFUQUFBQQpBQUFBQURBQUJRQUFBQUFBQUFETkJR
QUFBQUFBQURBQUlBQUNBQUFBQUFBSUJnQUFBQUFBQUFBQUFBQUNBQUFBQUFBM0JnQUFBQUFBCkFB
QUFBQUFDQUM1eVpHRjBZUUFBQUFBQUFESUFBQUFEQVFRQUFBQUFBQUFBQUFBQUFBQUFBZ0FBQUFB
QUFBQm1CZ0FBQUFBQUFESUEKQUFBQ0FDNXlaR0YwWVFBQUFBQUFBRE1BQUFBREFRUUFBQUFBQUFB
QVZqWmRZQUFBQWdBQUFBQUFBQUIyQmdBQUFBQUFBRE1BQUFBQwpBQUFBQUFDR0JnQUFBQUFBQUFB
QUFBQUNBQUFBQUFDZEJnQUFBQUFBQUFBQUFBQUNBQUFBQUFERkJnQUFBQUFBQUFBQUFBQUNBQUFB
CkFBRDJCZ0FBQUFBQUFBQUFBQUFDQUM1eVpHRjBZUUFBQUFBQUFEUUFBQUFEQVFRQUFBQUFBQUFB
a0VIY2RnQUFBZ0FBQUFBQUFBQWYKQndBQUFBQUFBRFFBQUFBQ0FDNTBaWGgwQUFBQUFBQUFBRFVB
QUFBREFSa0FBQUFBQUFBQVlkZHFxQUFBQWdBQUFDNWtaV0oxWnlSVApBQUFBQURZQUFBQURBUlFC
QUFBRkFBQUFBQUFBQURVQUJRQUFBQUFBQUFBdkJ3QUFBQUFBQURVQUlBQURBQzUwWlhoMEFBQUFB
QUFBCkFEY0FBQUFEQVdvQUFBQUVBQUFBN0ZrdVJBQUFBUUFBQUM1a1pXSjFaeVJUQUFBQUFEZ0FB
QUFEQVJRQkFBQUhBQUFBQUFBQUFEY0EKQlFBQUFBQUFBQUJRQndBQUFBQUFBRGNBSUFBREFDNXla
R0YwWVFBQUFBQUFBRGtBQUFBREFRZ0FBQUFBQUFBQTBkNFk2QUFBQWdBQQpBQUFBQUFCZ0J3QUFB
QUFBQURrQUFBQUNBQzUwWlhoMEFBQUFBQUFBQURvQUFBQURBYW9CQUFBTUFBQUFyVVRDd3dBQUFR
QUFBQzVrClpXSjFaeVJUQUFBQUFEc0FBQUFEQVpnREFBQWZBQUFBQUFBQUFEb0FCUUFBQUFBQUFB
QjRCd0FBQUFBQUFEb0FJQUFDQUM1eVpHRjAKWVFBQUFBQUFBRHdBQUFBREFRZ0FBQUFBQUFBQUFB
QUFBQUFBQWdBQUFBQUFBQUREQndBQUFBQUFBRHdBQUFBQ0FBQUFBQURiQndBQQpBQUFBQUFBQUFB
QUNBQUFBQUFEMkJ3QUFBQUFBQUFBQUFBQUNBQUFBQUFBT0NBQUFBQUFBQUFBQUFBQUNBQUFBQUFB
bENBQUFBQUFBCkFBQUFBQUFDQUFBQUFBQTJDQUFBQUFBQUFBQUFBQUFDQUFBQUFBQlRDQUFBQUFB
QUFBQUFBQUFDQUM1MFpYaDBBQUFBQUFBQUFEMEEKQUFBREFRWUFBQUFCQUFBQXVBdmw3UUFBQVFB
QUFDNWtaV0oxWnlSVEFBQUFBRDRBQUFBREFSd0JBQUFIQUFBQUFBQUFBRDBBQlFBQQpBQUFBQUFC
NUNBQUFBQUFBQUQwQUlBQUNBQUFBQUFDZ0NBQUFBQUFBQUFBQUFBQUNBQzUwWlhoMEFBQUFBQUFB
QUQ4QUFBQURBU3NBCkFBQUVBQUFBUStPMHNBQUFBUUFBQUM1a1pXSjFaeVJUQUFBQUFFQUFBQUFE
QVZBQkFBQU5BQUFBQUFBQUFEOEFCUUFBQUFBQUFBREMKQ0FBQUFBQUFBRDhBSUFBQ0FBQUFBQURj
Q0FBQUFBQUFBQUFBQUFBQ0FBQUFBQUQ1Q0FBQUFBQUFBQUFBQUFBQ0FBQUFBQUFmQ1FBQQpBQUFB
QUFBQUFBQUNBQUFBQUFBL0NRQUFBQUFBQUFBQUFBQUNBQzUwWlhoMEFBQUFBQUFBQUVFQUFBQURB
VDBBQUFBQkFBQUFQM3lnCm9BQUFBUUFBQUM1a1pXSjFaeVJUQUFBQUFFSUFBQUFEQVFnQkFBQUhB
QUFBQUFBQUFFRUFCUUFBQUFBQUFBQmpDUUFBQUFBQUFFRUEKSUFBQ0FBQUFBQUNoQ1FBQUFBQUFB
QUFBQUFBQ0FDNTBaWGgwQUFBQUFBQUFBRU1BQUFBREFXWUJBQUFGQUFBQStLUDA3Z0FBQVFBQQpB
QzVrWldKMVp5UlRBQUFBQUVRQUFBQURBYVFCQUFBUEFBQUFBQUFBQUVNQUJRQUFBQUFBQUFDOENR
QUFBQUFBQUVNQUlBQUNBQUFBCkFBRDVDUUFBQUFBQUFBQUFBQUFDQUFBQUFBQVpDZ0FBQUFBQUFB
QUFBQUFDQUFBQUFBQTRDZ0FBQUFBQUFBQUFBQUFDQUFBQUFBQlgKQ2dBQUFBQUFBQUFBQUFBQ0FD
NTBaWGgwQUFBQUFBQUFBRVVBQUFBREFRSUJBQUFFQUFBQUJVN3BrZ0FBQVFBQUFDNWtaV0oxWnlS
VApBQUFBQUVZQUFBQURBV0FCQUFBTkFBQUFBQUFBQUVVQUJRQUFBQUFBQUFCeUNnQUFBQUFBQUVV
QUlBQUNBQzUwWlhoMEFBQUFBQUFBCkFFY0FBQUFEQVVjQUFBQURBQUFBTERTWFBRQUFBUUFBQUM1
a1pXSjFaeVJUQUFBQUFFZ0FBQUFEQVdRQkFBQUxBQUFBQUFBQUFFY0EKQlFBQUFBQUFBQUN3Q2dB
QUFBQUFBRWNBSUFBQ0FBQUFBQURqQ2dBQUFBQUFBQUFBQUFBQ0FBQUFBQUQ4Q2dBQUFBQUFBQUFB
QUFBQwpBQUFBQUFBaUN3QUFBQUFBQUFBQUFBQUNBQzUwWlhoMEFBQUFBQUFBQUVrQUFBQURBUVlB
QUFBQkFBQUF1QXZsN1FBQUFRQUFBQzVrClpXSjFaeVJUQUFBQUFFb0FBQUFEQWZBQUFBQUhBQUFB
QUFBQUFFa0FCUUFBQUFBQUFBQkNDd0FBQUFBQUFFa0FJQUFDQUFBQUFBQ0gKQ3dBQUFBQUFBQUFB
QUFBQ0FDNTBaWGgwQUFBQUFBQUFBRXNBQUFBREFTb0FBQUFEQUFBQUtQU0xFZ0FBQVFBQUFDNWta
V0oxWnlSVApBQUFBQUV3QUFBQURBU0FCQUFBSkFBQUFBQUFBQUVzQUJRQUFBQUFBQUFDMUN3QUFB
QUFBQUVzQUlBQUNBQUFBQUFEdUN3QUFBQUFBCkFBQUFBQUFDQUM1MFpYaDBBQUFBQUFBQUFFMEFB
QUFEQVNvQUFBQURBQUFBS1BTTEVnQUFBUUFBQUM1a1pXSjFaeVJUQUFBQUFFNEEKQUFBREFTUUJB
QUFKQUFBQUFBQUFBRTBBQlFBQUFBQUFBQUFLREFBQUFBQUFBRTBBSUFBQ0FDNTBaWGgwQUFBQUFB
QUFBRThBQUFBRApBV1FBQUFBSUFBQUEwRHVmdlFBQUFRQUFBQzVrWldKMVp5UlRBQUFBQUZBQUFB
QURBZFFCQUFBTkFBQUFBQUFBQUU4QUJRQUFBQUFBCkFBQkhEQUFBQUFBQUFFOEFJQUFDQUFBQUFB
Q1ZEQUFBQUFBQUFBQUFBQUFDQUFBQUFBQ3hEQUFBQUFBQUFBQUFBQUFDQUFBQUFBRFMKREFBQUFB
QUFBQUFBQUFBQ0FBQUFBQUR0REFBQUFBQUFBQUFBQUFBQ0FBQUFBQUFTRFFBQUFBQUFBQUFBQUFB
Q0FDNTBaWGgwQUFBQQpBQUFBQUZFQUFBQURBUklBQUFBQ0FBQUFrNmU3N0FBQUFRQUFBQzVrWldK
MVp5UlRBQUFBQUZJQUFBQURBZWdBQUFBSEFBQUFBQUFBCkFGRUFCUUFBQUFBQUFBQTVEUUFBQUFB
QUFGRUFJQUFDQUFBQUFBQjhEUUFBQUFBQUFBQUFBQUFDQUM1MFpYaDBBQUFBQUFBQUFGTUEKQUFB
REFSOEFBQUFEQUFBQVpJbEFZZ0FBQVFBQUFDNWtaV0oxWnlSVEFBQUFBRlFBQUFBREFmd0FBQUFK
QUFBQUFBQUFBRk1BQlFBQQpBQUFBQUFDaURRQUFBQUFBQUZNQUlBQUNBQUFBQUFEb0RRQUFBQUFB
QUFBQUFBQUNBQzUwWlhoMEFBQUFBQUFBQUZVQUFBQURBU0lBCkFBQURBQUFBcXQ2YVBBQUFBUUFB
QUM1a1pXSjFaeVJUQUFBQUFGWUFBQUFEQVdBQkFBQUxBQUFBQUFBQUFGVUFCUUFBQUFBQUFBQVMK
RGdBQUFBQUFBRlVBSUFBQ0FBQUFBQUJIRGdBQUFBQUFBQUFBQUFBQ0FBQUFBQUJzRGdBQUFBQUFB
QUFBQUFBQ0FDNTBaWGgwQUFBQQpBQUFBQUZjQUFBQURBVGNBQUFBRkFBQUFPdHVHR3dBQUFRQUFB
QzVrWldKMVp5UlRBQUFBQUZnQUFBQURBU1FCQUFBSkFBQUFBQUFBCkFGY0FCUUFBQUFBQUFBQ1FE
Z0FBQUFBQUFGY0FJQUFDQUFBQUFBRFFEZ0FBQUFBQUFBQUFBQUFDQUFBQUFBRDREZ0FBQUFBQUFB
QUEKQUFBQ0FDNXlaR0YwWVFBQUFBQUFBRmtBQUFBREFTVUFBQUFBQUFBQXhMSm92UUFBQWdBQUFB
QUFBQUFjRHdBQUFBQUFBRmtBQUFBQwpBQUFBQUFCUkR3QUFBQUFBQUFBQUFBQUNBQUFBQUFCb0R3
QUFBQUFBQUFBQUFBQUNBQzUwWlhoMEFBQUFBQUFBQUZvQUFBQURBUVlBCkFBQUJBQUFBdUF2bDdR
QUFBUUFBQUM1a1pXSjFaeVJUQUFBQUFGc0FBQUFEQWZ3QUFBQUhBQUFBQUFBQUFGb0FCUUFBQUFB
QUFBQisKRHdBQUFBQUFBRm9BSUFBQ0FBQUFBQURNRHdBQUFBQUFBQUFBQUFBQ0FDNTBaWGgwQUFB
QUFBQUFBRndBQUFBREFRWUFBQUFCQUFBQQp1QXZsN1FBQUFRQUFBQzVrWldKMVp5UlRBQUFBQUYw
QUFBQURBUlFCQUFBSEFBQUFBQUFBQUZ3QUJRQUFBQUFBQUFENER3QUFBQUFBCkFGd0FJQUFDQUFB
QUFBQkdFQUFBQUFBQUFBQUFBQUFDQUM1MFpYaDBBQUFBQUFBQUFGNEFBQUFEQVZnQUFBQUZBQUFB
emw1WXJBQUEKQVFBQUFDNWtaV0oxWnlSVEFBQUFBRjhBQUFBREFXQUNBQUFQQUFBQUFBQUFBRjRB
QlFBQUFBQUFBQUJ4RUFBQUFBQUFBRjRBSUFBQwpBQzV5WkdGMFlRQUFBQUFBQUdBQUFBQURBU1lB
QUFBQUFBQUFzWDFCbmdBQUFnQUFBQUFBQUFDb0VBQUFBQUFBQUdBQUFBQUNBQzV5ClpHRjBZUUFB
QUFBQUFHRUFBQUFEQVNZQUFBQUFBQUFBekc1dGJ3QUFBZ0FBQUFBQUFBRGRFQUFBQUFBQUFHRUFB
QUFDQUFBQUFBQVIKRVFBQUFBQUFBQUFBQUFBQ0FBQUFBQUFwRVFBQUFBQUFBQUFBQUFBQ0FDNXla
R0YwWVFBQUFBQUFBR0lBQUFBREFSd0FBQUFBQUFBQQp6RW5obmdBQUFnQUFBQUFBQUFCREVRQUFB
QUFBQUdJQUFBQUNBQzUwWlhoMEFBQUFBQUFBQUdNQUFBQURBU2tBQUFBREFBQUFuVDRoCm5BQUFB
UUFBQUM1a1pXSjFaeVJUQUFBQUFHUUFBQUFEQVlnQkFBQUxBQUFBQUFBQUFHTUFCUUFBQUFBQUFB
Q2lFUUFBQUFBQUFHTUEKSUFBQ0FBQUFBQUFBRWdBQUFBQUFBQUFBQUFBQ0FBQUFBQUJGRWdBQUFB
QUFBQUFBQUFBQ0FDNTBaWGgwQUFBQUFBQUFBR1VBQUFBRApBUVlBQUFBQkFBQUF1QXZsN1FBQUFR
QUFBQzVrWldKMVp5UlRBQUFBQUdZQUFBQURBUUFCQUFBSEFBQUFBQUFBQUdVQUJRQUFBQUFBCkFB
QnBFZ0FBQUFBQUFHVUFJQUFDQUFBQUFBQ29FZ0FBQUFBQUFBQUFBQUFDQUM1MFpYaDBBQUFBQUFB
QUFHY0FBQUFEQVhJQUFBQUkKQUFBQXVqMVVFUUFBQVFBQUFDNWtaV0oxWnlSVEFBQUFBR2dBQUFB
REFiUUJBQUFMQUFBQUFBQUFBR2NBQlFBQUFBQUFBQURXRWdBQQpBQUFBQUdjQUlBQUNBQUFBQUFB
cUV3QUFBQUFBQUFBQUFBQUNBQUFBQUFCSkV3QUFBQUFBQUFBQUFBQUNBQUFBQUFCdUV3QUFBQUFB
CkFBQUFBQUFDQUFBQUFBQ0lFd0FBQUFBQUFBQUFBQUFDQUFBQUFBQ3hFd0FBQUFBQUFBQUFBQUFD
QUM1MFpYaDBBQUFBQUFBQUFHa0EKQUFBREFhRUFBQUFOQUFBQTlqbXd4QUFBQVFBQUFDNWtaV0ox
WnlSVEFBQUFBR29BQUFBREFhUUNBQUFYQUFBQUFBQUFBR2tBQlFBQQpBQUFBQUFEYUV3QUFBQUFB
QUdrQUlBQUNBQUFBQUFBc0ZBQUFBQUFBQUFBQUFBQUNBQzV5WkdGMFlRQUFBQUFBQUdzQUFBQURB
UlFBCkFBQUFBQUFBaE15UXdnQUFBZ0FBQUFBQUFBQmRGQUFBQUFBQUFHc0FBQUFDQUFBQUFBQ0tG
QUFBQUFBQUFBQUFBQUFDQUFBQUFBQ3YKRkFBQUFBQUFBQUFBQUFBQ0FDNTBaWGgwQUFBQUFBQUFB
R3dBQUFBREFTa0FBQUFEQUFBQVVsL29Nd0FBQVFBQUFDNWtaV0oxWnlSVApBQUFBQUcwQUFBQURB
VkFCQUFBSkFBQUFBQUFBQUd3QUJRQUFBQUFBQUFEUEZBQUFBQUFBQUd3QUlBQUNBQUFBQUFBa0ZR
QUFBQUFBCkFBQUFBQUFDQUFBQUFBQklGUUFBQUFBQUFBQUFBQUFDQUM1MFpYaDBBQUFBQUFBQUFH
NEFBQUFEQVFZQUFBQUJBQUFBdUF2bDdRQUEKQVFBQUFDNWtaV0oxWnlSVEFBQUFBRzhBQUFBREFS
QUJBQUFIQUFBQUFBQUFBRzRBQlFBQUFBQUFBQUJ3RlFBQUFBQUFBRzRBSUFBQwpBQUFBQUFDaEZR
QUFBQUFBQUFBQUFBQUNBQzUwWlhoMEFBQUFBQUFBQUhBQUFBQURBUVlBQUFBQkFBQUF1QXZsN1FB
QUFRQUFBQzVrClpXSjFaeVJUQUFBQUFIRUFBQUFEQWV3QUFBQUhBQUFBQUFBQUFIQUFCUUFBQUFB
QUFBQzdGUUFBQUFBQUFIQUFJQUFDQUFBQUFBRHYKRlFBQUFBQUFBQUFBQUFBQ0FDNTBaWGgwQUFB
QUFBQUFBSElBQUFBREFRWUFBQUFCQUFBQXVBdmw3UUFBQVFBQUFDNWtaV0oxWnlSVApBQUFBQUhN
QUFBQURBZXdBQUFBSEFBQUFBQUFBQUhJQUJRQUFBQUFBQUFBT0ZnQUFBQUFBQUhJQUlBQUNBQUFB
QUFCQkZnQUFBQUFBCkFBQUFBQUFDQUM1MFpYaDBBQUFBQUFBQUFIUUFBQUFEQVFZQUFBQUJBQUFB
dUF2bDdRQUFBUUFBQUM1a1pXSjFaeVJUQUFBQUFIVUEKQUFBREFlZ0FBQUFIQUFBQUFBQUFBSFFB
QlFBQUFBQUFBQUJmRmdBQUFBQUFBSFFBSUFBQ0FBQUFBQUNQRmdBQUFBQUFBQUFBQUFBQwpBQzUw
WlhoMEFBQUFBQUFBQUhZQUFBQURBVGNBQUFBQkFBQUF4aS9SZHdBQUFRQUFBQzVrWldKMVp5UlRB
QUFBQUhjQUFBQURBVmdCCkFBQUhBQUFBQUFBQUFIWUFCUUFBQUFBQUFBQ3FGZ0FBQUFBQUFIWUFJ
QUFDQUFBQUFBRHdGZ0FBQUFBQUFBQUFBQUFDQUM1MFpYaDAKQUFBQUFBQUFBSGdBQUFBREFRWUFB
QUFCQUFBQXVBdmw3UUFBQVFBQUFDNWtaV0oxWnlSVEFBQUFBSGtBQUFBREFaZ0JBQUFIQUFBQQpB
QUFBQUhnQUJRQUFBQUFBQUFBUEZ3QUFBQUFBQUhnQUlBQUNBQUFBQUFCb0Z3QUFBQUFBQUFBQUFB
QUNBQzUwWlhoMEFBQUFBQUFBCkFIb0FBQUFEQVFZQUFBQUJBQUFBdUF2bDdRQUFBUUFBQUM1a1pX
SjFaeVJUQUFBQUFIc0FBQUFEQVF3QkFBQUhBQUFBQUFBQUFIb0EKQlFBQUFBQUFBQUNQRndBQUFB
QUFBSG9BSUFBQ0FBQUFBQURDRndBQUFBQUFBQUFBQUFBQ0FDNTBaWGgwQUFBQUFBQUFBSHdBQUFB
RApBUVlBQUFBQkFBQUF1QXZsN1FBQUFRQUFBQzVrWldKMVp5UlRBQUFBQUgwQUFBQURBZWdBQUFB
SEFBQUFBQUFBQUh3QUJRQUFBQUFBCkFBRGVGd0FBQUFBQUFId0FJQUFDQUFBQUFBQVBHQUFBQUFB
QUFBQUFBQUFDQUM1MFpYaDBBQUFBQUFBQUFINEFBQUFEQVFZQUFBQUIKQUFBQXVBdmw3UUFBQVFB
QUFDNWtaV0oxWnlSVEFBQUFBSDhBQUFBREFkd0FBQUFIQUFBQUFBQUFBSDRBQlFBQUFBQUFBQUFy
R0FBQQpBQUFBQUg0QUlBQUNBQUFBQUFCTEdBQUFBQUFBQUFBQUFBQUNBQzUwWlhoMEFBQUFBQUFB
QUlBQUFBQURBU0lBQUFBQkFBQUF5VUhECkJRQUFBZ0FBQUM1a1pXSjFaeVJUQUFBQUFJRUFBQUFE
QVJBQkFBQUhBQUFBQUFBQUFJQUFCUUFBQUFBQUFBQm9HQUFBQUFBQUFJQUEKSUFBQ0FBQUFBQUNC
R0FBQUFBQUFBQUFBQUFBQ0FDNTBaWGgwQUFBQUFBQUFBSUlBQUFBREFUTUFBQUFEQUFBQVdRTm1E
d0FBQWdBQQpBQzVrWldKMVp5UlRBQUFBQUlNQUFBQURBVmdCQUFBTEFBQUFBQUFBQUlJQUJRQUFB
QUFBQUFDYUdBQUFBQUFBQUlJQUlBQUNBQUFBCkFBQ3pHQUFBQUFBQUFBQUFBQUFDQUFBQUFBRFBH
QUFBQUFBQUFBQUFBQUFDQUM1MFpYaDBBQUFBQUFBQUFJUUFBQUFEQVRRQUFBQUMKQUFBQVI3UTR3
Z0FBQVFBQUFDNWtaV0oxWnlSVEFBQUFBSVVBQUFBREFSQUJBQUFIQUFBQUFBQUFBSVFBQlFBQUFB
QUFBQURwR0FBQQpBQUFBQUlRQUlBQUNBQUFBQUFBV0dRQUFBQUFBQUFBQUlBQUNBQzUwWlhoMEFB
QUFBQUFBQUlZQUFBQURBVWNBQUFBRUFBQUFmeWY1CjlnQUFBZ0FBQUM1a1pXSjFaeVJUQUFBQUFJ
Y0FBQUFEQVF3QkFBQUpBQUFBQUFBQUFJWUFCUUFBQUFBQUFBQWpHUUFBQUFBQUFJWUEKSUFBQ0FB
QUFBQUJBR1FBQUFBQUFBQUFBSUFBQ0FDNTBaWGgwQUFBQUFBQUFBSWdBQUFBREFSQUFBQUFCQUFB
QTFpaE1zZ0FBQVFBQQpBQzVrWldKMVp5UlRBQUFBQUlrQUFBQURBUUFCQUFBSEFBQUFBQUFBQUln
QUJRQUFBQUFBQUFCTkdRQUFBQUFBQUlnQUlBQUNBQUFBCkFBQ01HUUFBQUFBQUFBQUFBQUFDQUM1
MFpYaDBBQUFBQUFBQUFJb0FBQUFEQVJBQUFBQUJBQUFBZHY1bXZ3QUFBUUFBQUM1a1pXSjEKWnlS
VEFBQUFBSXNBQUFBREFlZ0FBQUFIQUFBQUFBQUFBSW9BQlFBQUFBQUFBQUNuR1FBQUFBQUFBSW9B
SUFBQ0FBQUFBQURVR1FBQQpBQUFBQUFBQUFBQUNBQzUwWlhoMEFBQUFBQUFBQUl3QUFBQURBUkFB
QUFBQkFBQUFkdjVtdndBQUFRQUFBQzVrWldKMVp5UlRBQUFBCkFJMEFBQUFEQWZRQUFBQUhBQUFB
QUFBQUFJd0FCUUFBQUFBQUFBRHNHUUFBQUFBQUFJd0FJQUFDQUFBQUFBQWxHZ0FBQUFBQUFBQUEK
QUFBQ0FDNTBaWGgwQUFBQUFBQUFBSTRBQUFBREFSOEFBQUFDQUFBQVhHMkpYd0FBQVFBQUFDNWta
V0oxWnlSVEFBQUFBSThBQUFBRApBUlFCQUFBSEFBQUFBQUFBQUk0QUJRQUFBQUFBQUFCSkdnQUFB
QUFBQUk0QUlBQUNBQUFBQUFDWkdnQUFBQUFBQUFBQUFBQUNBQUFBCkFBQ3ZHZ0FBQUFBQUFBQUFB
QUFDQUM1MFpYaDBBQUFBQUFBQUFKQUFBQUFEQVlzQUFBQUdBQUFBeFFsM0d3QUFBUUFBQUM1a1pX
SjEKWnlSVEFBQUFBSkVBQUFBREFaZ0NBQUFSQUFBQUFBQUFBSkFBQlFBQUFBQUFBQURNR2dBQUFB
QUFBSkFBSUFBQ0FBQUFBQUFXR3dBQQpBQUFBQUFBQUFBQUNBQUFBQUFBekd3QUFBQUFBQUFBQUFB
QUNBQUFBQUFCUUd3QUFBQUFBQUFBQUFBQUNBQUFBQUFCd0d3QUFBQUFBCkFBQUFBQUFDQUFBQUFB
Q0xHd0FBQUFBQUFBQUFBQUFDQUFBQUFBQ3VHd0FBQUFBQUFBQUFBQUFDQUM1MFpYaDBBQUFBQUFB
QUFKSUEKQUFBREFSWUFBQUFCQUFBQUZuNXRXd0FBQVFBQUFDNWtaV0oxWnlSVEFBQUFBSk1BQUFB
REFmZ0FBQUFIQUFBQUFBQUFBSklBQlFBQQpBQUFBQUFESkd3QUFBQUFBQUpJQUlBQUNBQUFBQUFE
OUd3QUFBQUFBQUFBQUFBQUNBQzUwWlhoMEFBQUFBQUFBQUpRQUFBQURBUnNBCkFBQUJBQUFBeTZU
QjN3QUFBUUFBQUM1a1pXSjFaeVJUQUFBQUFKVUFBQUFEQVNBQkFBQUhBQUFBQUFBQUFKUUFCUUFB
QUFBQUFBQVcKSEFBQUFBQUFBSlFBSUFBQ0FDNTBaWGgwQUFBQUFBQUFBSllBQUFBREFSRUFBQUFC
QUFBQWpnaHBhUUFBQVFBQUFDNWtaV0oxWnlSVApBQUFBQUpjQUFBQURBZmdBQUFBSEFBQUFBQUFB
QUpZQUJRQUFBQUFBQUFCS0hBQUFBQUFBQUpZQUlBQUNBQUFBQUFDRkhBQUFBQUFBCkFBQUFBQUFD
QUM1MFpYaDBBQUFBQUFBQUFKZ0FBQUFEQVJFQUFBQUJBQUFBQWpMSmxnQUFBUUFBQUM1a1pXSjFa
eVJUQUFBQUFKa0EKQUFBREFRUUJBQUFIQUFBQUFBQUFBSmdBQlFBQUFBQUFBQUNkSEFBQUFBQUFB
SmdBSUFBQ0FDNTBaWGgwQUFBQUFBQUFBSm9BQUFBRApBVE1BQUFBREFBQUFrQzJQUXdBQUFRQUFB
QzVrWldKMVp5UlRBQUFBQUpzQUFBQURBWXdCQUFBTEFBQUFBQUFBQUpvQUJRQUFBQUFBCkFBRGRI
QUFBQUFBQUFKb0FJQUFDQUFBQUFBQTdIUUFBQUFBQUFBQUFBQUFDQUFBQUFBQlRIUUFBQUFBQUFB
QUFBQUFDQUFBQUFBQnUKSFFBQUFBQUFBQUFBQUFBQ0FDNTBaWGgwQUFBQUFBQUFBSndBQUFBREFR
WUFBQUFCQUFBQXVBdmw3UUFBQVFBQUFDNWtaV0oxWnlSVApBQUFBQUowQUFBQURBZndBQUFBSEFB
QUFBQUFBQUp3QUJRQUFBQUFBQUFDT0hRQUFBQUFBQUp3QUlBQUNBQUFBQUFEaUhRQUFBQUFBCkFB
QUFBQUFDQUM1MFpYaDBBQUFBQUFBQUFKNEFBQUFEQVFZQUFBQUJBQUFBdUF2bDdRQUFBUUFBQUM1
a1pXSjFaeVJUQUFBQUFKOEEKQUFBREFmd0FBQUFIQUFBQUFBQUFBSjRBQlFBQUFBQUFBQUQxSFFB
QUFBQUFBSjRBSUFBQ0FBQUFBQUErSGdBQUFBQUFBQUFBQUFBQwpBQzUwWlhoMEFBQUFBQUFBQUtB
QUFBQURBVDhBQUFBRUFBQUFsRVpSSVFBQUFRQUFBQzVrWldKMVp5UlRBQUFBQUtFQUFBQURBVFFC
CkFBQUxBQUFBQUFBQUFLQUFCUUFBQUFBQUFBQmdIZ0FBQUFBQUFLQUFJQUFDQUM1MFpYaDBKSGxq
QUFBQUFLSUFBQUFEQVJRQUFBQUQKQUFBQU9qd0RoQUFBQWdBQUFDNWtaV0oxWnlSVEFBQUFBS01B
QUFBREFld0FBQUFIQUFBQUFBQUFBS0lBQlFBQUFBQUFBQUNQSGdBQQpBQUFBQUtJQUlBQURBQzV5
WkdGMFlRQUFBQUFBQUtRQUFBQURBUmNBQUFBQUFBQUFMakRla0FBQUFnQUFBQUFBQUFDeEhnQUFB
QUFBCkFLUUFBQUFDQUM1MFpYaDBKSGxqQUFBQUFLVUFBQUFEQVJRQUFBQURBQUFBT2p3RGhBQUFB
Z0FBQUM1a1pXSjFaeVJUQUFBQUFLWUEKQUFBREFmQUFBQUFIQUFBQUFBQUFBS1VBQlFBQUFBQUFB
QURnSGdBQUFBQUFBS1VBSUFBREFDNXlaR0YwWVFBQUFBQUFBS2NBQUFBRApBUnNBQUFBQUFBQUEz
WkkvaWdBQUFnQUFBQUFBQUFBR0h3QUFBQUFBQUtjQUFBQUNBQzUwWlhoMEpIbGpBQUFBQUtnQUFB
QURBUlFBCkFBQURBQUFBT2p3RGhBQUFBZ0FBQUM1a1pXSjFaeVJUQUFBQUFLa0FBQUFEQWV3QUFB
QUhBQUFBQUFBQUFLZ0FCUUFBQUFBQUFBQTUKSHdBQUFBQUFBS2dBSUFBREFDNXlaR0YwWVFBQUFB
QUFBS29BQUFBREFSZ0FBQUFBQUFBQThuWEkzZ0FBQWdBQUFBQUFBQUJjSHdBQQpBQUFBQUtvQUFB
QUNBQzUwWlhoMEpIbGpBQUFBQUtzQUFBQURBUlFBQUFBREFBQUFPandEaEFBQUFnQUFBQzVrWldK
MVp5UlRBQUFBCkFLd0FBQUFEQWZ3QUFBQUhBQUFBQUFBQUFLc0FCUUFBQUFBQUFBQ01Id0FBQUFB
QUFLc0FJQUFEQUM1eVpHRjBZUUFBQUFBQUFLMEEKQUFBREFTVUFBQUFBQUFBQWJuUFlLZ0FBQWdB
QUFBQUFBQUM4SHdBQUFBQUFBSzBBQUFBQ0FBQUFBQUR4SHdBQUdBQUFBQ2tBQUFBRApBQUFBQUFB
SUlBQUFGQUFBQUNrQUFBQURBQUFBQUFBdElBQUFFQUFBQUNrQUFBQURBQUFBQUFCRklBQUFEQUFB
QUNrQUFBQURBQzVEClVsUWtXRU5WQUFBQUFLNEFBQUFEQVJBQUFBQUVBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQmdJQUFBQUFBQUFLNEFBQUFEQUFBQUFBQ0UKSUFBQUJBQUFBSzRBQUFBREFBQUFBQUNz
SUFBQUNBQUFBSzRBQUFBREFBQUFBQURSSUFBQURBQUFBSzRBQUFBREFDNWtaV0oxWnlSVQpBQUFB
QUs4QUFBQURBV1FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU1oQUFCZllXNTBhV0ZzYVdGemFXNW5S
MkZ0YldFQVgzTmZabTl1CmRGTnRiMjkwYUdsdVoxUjVjR1VBWDNOZlptOXVkRk50YjI5MGFHbHVa
MHhsZG1Wc0FGOXpYMlp2Ym5SVGJXOXZkR2hwYm1kRGIyNTAKY21GemRBQmZYMlpzZEhWelpXUUFY
MTlwYlhCZlgyTmxhV3dBUDJaaFluTkFRRmxCVFUxQVdnQS9RMGRUYVhwbFRXRnJaVUJBV1VFLwpR
VlZEUjFOcGVtVkFRRTFOUUZvQVAxOWZRMGRRYjJsdWRFRndjR3g1UVdabWFXNWxWSEpoYm5ObWIz
SnRRRUJaUVQ5QlZVTkhVRzlwCmJuUkFRRlV4UUZWRFIwRm1abWx1WlZSeVlXNXpabTl5YlVCQVFG
b0FQMTlmUTBkVGFYcGxRWEJ3YkhsQlptWnBibVZVY21GdWMyWnYKY20xQVFGbEJQMEZWUTBkVGFY
cGxRRUJWTVVCVlEwZEJabVpwYm1WVWNtRnVjMlp2Y20xQVFFQmFBRDkzYTFObGRFWnZiblJUYlc5
dgpkR2hwYm1kTVpYWmxiRUJBV1VGWVNFQmFBRDkzYTBkbGRFWnZiblJUYlc5dmRHaHBibWRNWlha
bGJFQkFXVUZJV0ZvQVAzZHJVMlYwClJtOXVkRk50YjI5MGFHbHVaME52Ym5SeVlYTjBRRUJaUVZo
TlFGb0FQM2RyUjJWMFJtOXVkRk50YjI5MGFHbHVaME52Ym5SeVlYTjAKUUVCWlFVMVlXZ0EvWTJ4
bFlYSlVlWEJsUTI5dWRISmhjM1JBUUZsQlRWaGFBRjlmYVcxd1gxOUVaV3hsZEdWRVEwQTBBRjlm
YVcxdwpYMTlFWld4bGRHVlBZbXBsWTNSQU5BQmZYM0psWVd4QU5EQXhNek16TXpNQVgxOXlaV0Zz
UURObVlqazVPVGs1WVRBd01EQXdNREFBClAyZGhiVzFoUUQ4eFB6OWpiR1ZoY2xSNWNHVkRiMjUw
Y21GemRFQkFXVUZOV0ZwQU5FMUJBRjlmY21WaGJFQXpabVl3TURBd01EQXcKTURBd01EQXdBRjlm
Y21WaGJFQTBNRFptWlRBd01EQXdNREF3TURBd0FGOWZjbVZoYkVBelpqZ3dNREF3TUFCZlgybHRj
RjlmUlhoMApWR1Y0ZEU5MWRGZEFNeklBWDE5cGJYQmZYMU5sZEVKclEyOXNiM0pBT0FCZlgybHRj
RjlmVTJWMFZHVjRkRU52Ykc5eVFEZ0FYMTlwCmJYQmZYMU5sZEZSbGVIUkJiR2xuYmtBNEFGOWZh
VzF3WDE5VFpYUkNhMDF2WkdWQU9BQmZYMmx0Y0Y5ZlIyVjBUMkpxWldOMFYwQXgKTWdCZlgybHRj
RjlmUTNKbFlYUmxSRWxDVTJWamRHbHZia0F5TkFCZlgzSmxZV3hBTkRBNFpqUXdNREF3TURBd01E
QXdNQUJmWDNKbApZV3hBTkdZNE1EQXdNREFBWDE5cGJYQmZYMGRsZEVkc2VYQm9UM1YwYkdsdVpW
ZEFNamdBUDJsa1pXNTBhWFI1UUQ4elB6OWpiR1ZoCmNsUjVjR1ZEYjI1MGNtRnpkRUJBV1VGTldG
cEFORlZmVFVGVU1rQkFRZ0JmWDJsdGNGOWZVMlZzWldOMFQySnFaV04wUURnQVgxOXAKYlhCZlgw
ZGxkRk4wYjJOclQySnFaV04wUURRQVgxOXBiWEJmWDBOeVpXRjBaVU52YlhCaGRHbGliR1ZFUTBB
MEFEOXNZWE4wUTI5dQpkSEpoYzNSQVB6RS9QMk5zWldGeVZIbHdaVU52Ym5SeVlYTjBRRUJaUVUx
WVdrQTBTVUVBWDE5cGJYQmZYMU41YzNSbGJWQmhjbUZ0ClpYUmxjbk5KYm1adlYwQXhOZ0EvZDJ0
VGVYTjBaVzFHYjI1MFUyMXZiM1JvYVc1blEyaGhibWRsWkVCQVdVRllXRm9BWDNOZmMzbHoKZEdW
dFJtOXVkRk50YjI5MGFHbHVaMU5sZEFCZmMxOXplWE4wWlcxR2IyNTBVMjF2YjNSb2FXNW5WSGx3
WlFCZmMxOXplWE4wWlcxRwpiMjUwVTIxdmIzUm9hVzVuUlc1aFlteGxaQUEvYzJWMFJtOXVkRk50
YjI5MGFHbHVaMU4wZVd4bFFFQlpRVmhRUVZWRFIwTnZiblJsCmVIUkFRRWxmVGtCYUFGOWZhVzF3
WDE5RFIwTnZiblJsZUhSVFpYUkdiMjUwVTIxdmIzUm9hVzVuVTNSNWJHVUFYMTlwYlhCZlgwTkgK
UTI5dWRHVjRkRk5sZEZOb2IzVnNaRk50YjI5MGFFWnZiblJ6QUQ5M2ExTmxkRVp2Ym5SVGJXOXZk
R2hwYm1kVGRIbHNaVUJBV1VGSgpVRUZWUTBkRGIyNTBaWGgwUUVCZlRrQmFBRjlmYVcxd1gxOURS
ME52Ym5SbGVIUkhaWFJHYjI1MFUyMXZiM1JvYVc1blUzUjViR1VBClgxOXBiWEJmWDBOSFEyOXVk
R1Y0ZEVkbGRGTm9iM1ZzWkZOdGIyOTBhRVp2Ym5SekFEOTNhMUpsYzNSdmNtVkdiMjUwVTIxdmIz
Um8KYVc1blUzUjViR1ZBUUZsQldGQkJWVU5IUTI5dWRHVjRkRUJBU1VCYUFEOTNhMU5sZEVOSFEy
OXVkR1Y0ZEVadmJuUlNaVzVrWlhKcApibWRUZEhsc1pVQkFXVUZZVUVGVlEwZERiMjUwWlhoMFFF
QmZUakV4UUZvQVgxOXBiWEJmWDBOSFEyOXVkR1Y0ZEZObGRGTm9iM1ZzClpGTjFZbkJwZUdWc1VY
VmhiblJwZW1WR2IyNTBjd0JmWDJsdGNGOWZRMGREYjI1MFpYaDBVMlYwVTJodmRXeGtVM1ZpY0ds
NFpXeFEKYjNOcGRHbHZia1p2Ym5SekFGOWZjbVZoYkVBd01EQXdNREF3TUFCZlgzSmxZV3hBWW1Z
NE1EQXdNREFBWDE5cGJYQmZYME5IUTI5dQpkR1Y0ZEVkbGRFTlVUUUJmWDJsdGNGOWZRMGREYjI1
MFpYaDBVMlYwVTJodmRXeGtRVzUwYVdGc2FXRnpSbTl1ZEhNQVgxOXBiWEJmClgwTkhRMjl1ZEdW
NGRGTmxkRk5vYjNWc1pGVnpaVkJzWVhSbWIzSnRUbUYwYVhabFIyeDVjR2h6QUY5ZmFXMXdYMTlE
UjBOdmJuUmwKZUhSVFpYUkdiMjUwVTIxdmIzUm9hVzVuUTI5dWRISmhjM1FBWDE5eVpXRnNRRFF3
TURBd01EQXdBRDl5Wlc1a1pYSnBibWRUZEhscwpaVVp2Y2tadmJuUkFRRmxCU1Y5T01FQmFBRDl5
YjNWdVpHWkFRRmxCVFUxQVdnQmZYM0psWVd4QU0yWmxNREF3TURBd01EQXdNREF3Ck1BQS9kMnRI
WlhSSGJIbHdhRUZrZG1GdVkyVnpRRUJaUVZoUVFWVkRSMFp2Ym5SQVFFRkNWVU5IUVdabWFXNWxW
SEpoYm5ObWIzSnQKUUVCZlRqSkhRVUZWUTBkVGFYcGxRRUJBV2dCZlgzSmxZV3hBTURBd01EQXdN
REF3TURBd01EQXdNQUJmWDJsdGNGOWZRMGRHYjI1MApSMlYwVlc1cGRITlFaWEpGYlFCZlgybHRj
RjlmUTBaRVlYUmhSMlYwUW5sMFpWQjBjZ0JmWDJsdGNGOWZRMFpFWVhSaFIyVjBUR1Z1ClozUm9B
RjlmYVcxd1gxOURSbEpsYkdWaGMyVUFYMTlwYlhCZlgwTkhSbTl1ZEVOdmNIbFVZV0pzWlVadmNs
Umhad0JmWDJsdGNGOWYKUTBkR2IyNTBSMlYwUjJ4NWNHaEJaSFpoYm1ObGMwWnZjbE4wZVd4bEFE
OTNhMGRsZEVkc2VYQm9jMEJBV1VGWVVFRlZRMGRHYjI1MApRRUJSUWw5WFVVRkhTVUJhQUY5ZmFX
MXdYMTlEUjBadmJuUkhaWFJIYkhsd2FITkdiM0pWYm1samFHRnljd0EvZDJ0VFpYUlZjRVp2CmJu
UkRZV05vWlVCQVdVRllTVUJhQUY5ZmFXMXdYMTlEUjBadmJuUkRZV05vWlZObGRFMWhlRk5wZW1V
QVgxOXBiWEJmWDBOSFJtOXUKZEVOaFkyaGxVMlYwVTJodmRXeGtRWFYwYjBWNGNHbHlaUUJmWDJs
dGNGOWZRMGRHYjI1MFEyRmphR1ZIWlhSTWIyTmhiRU5oWTJobApBRjlmYVcxd1gxOURSMFp2Ym5S
VFpYUlRhRzkxYkdSVmMyVk5kV3gwYVdOaFkyaGxBRDkzYTFObGRGQmhkSFJsY201Q1lYTmxRMVJO
ClFFQlpRVmhRUVZWRFIwTnZiblJsZUhSQVFGVkRSMEZtWm1sdVpWUnlZVzV6Wm05eWJVQkFRRm9B
WDE5cGJYQmZYME5IUTI5dWRHVjQKZEZObGRFSmhjMlZEVkUwQVAzZHJVMlYwVUdGMGRHVnlibEJv
WVhObFNXNVZjMlZ5VTNCaFkyVkFRRmxCV0ZCQlZVTkhRMjl1ZEdWNApkRUJBVlVOSFVHOXBiblJB
UUVCYUFGOWZhVzF3WDE5RFIwTnZiblJsZUhSVFpYUlFZWFIwWlhKdVVHaGhjMlVBWDE5cGJYQmZY
ME5IClFXWm1hVzVsVkhKaGJuTm1iM0p0UTI5dVkyRjBBRjlmYVcxd1gxOURSMEZtWm1sdVpWUnlZ
VzV6Wm05eWJVbHVkbVZ5ZEFCZlgybHQKY0Y5ZlEwZERiMjUwWlhoMFIyVjBRbUZ6WlVOVVRRQS9k
MnRIWlhSVmMyVnlWRzlDWVhObFExUk5RRUJaUVQ5QlZVTkhRV1ptYVc1bApWSEpoYm5ObWIzSnRR
RUJRUVZWRFIwTnZiblJsZUhSQVFFQmFBRDkzYTBSeVlYZEdiMk4xYzFKcGJtZEFRRmxCV0ZCQlZV
TkhRMjl1CmRHVjRkRUJBVUVGVlEwZERiMnh2Y2tCQVRVQmFBRjlmYVcxd1gxOURSME52Ym5SbGVI
UkdhV3hzVUdGMGFBQmZYMmx0Y0Y5ZlEwZEQKYjI1MFpYaDBVMlYwUm05amRYTlNhVzVuVjJsMGFF
TnZiRzl5QUY5ZmFXMXdYMTlEUjBOdmJuUmxlSFJUWlhSU1IwSkdhV3hzUTI5cwpiM0lBUDNkclIy
VjBVMU5NUTJWeWRHbG1hV05oZEdWSmJtWnZRRUJaUVZCQ1ZWOWZRMFpFYVdOMGFXOXVZWEo1UUVC
UVFWVmZRMFpWClVreFNaWE53YjI1elpVQkFRRm9BWDE5cGJYQmZYMTlEUmxWU1RGSmxjM0J2Ym5O
bFIyVjBVMU5NUTJWeWRHbG1hV05oZEdWRGIyNTAKWlhoMEFEOTNhMGRsZEZOVFRGQmxaWEpEWlhK
MGFXWnBZMkYwWlVSaGRHRkFRRmxCVUVGWVVFSlZYMTlEUmtScFkzUnBiMjVoY25sQQpRRUJhQUY5
ZmFXMXdYMTlEUmtScFkzUnBiMjVoY25sSFpYUldZV3gxWlFBL2QydEhaWFJUVTB4RFpYSjBhV1pw
WTJGMFpVTm9ZV2x1ClEyOXVkR1Y0ZEVCQVdVRlFRVmhRUWxWZlgwTkdSR2xqZEdsdmJtRnllVUJB
UUZvQVAzZHJVMlYwUTJ4cFpXNTBRMlZ5ZEdsbWFXTmgKZEdWSmJsTlRURkJ5YjNCbGNuUnBaWE5B
UUZsQldGQkJWVjlmUTBaRWFXTjBhVzl1WVhKNVFFQlFRbFZmWDBOR1JHRjBZVUJBUUZvQQpYMTlw
YlhCZlgwTkdSR2xqZEdsdmJtRnllVk5sZEZaaGJIVmxBRjlmYVcxd1gxOURSa1JwWTNScGIyNWhj
bmxEY21WaGRHVk5kWFJoCllteGxBRjlmYVcxd1gxOXJRMFpCYkd4dlkyRjBiM0pFWldaaGRXeDBB
RjlmYVcxd1gxOXJRMFpVZVhCbFJHbGpkR2x2Ym1GeWVVdGwKZVVOaGJHeENZV05yY3dCZlgybHRj
RjlmYTBOR1ZIbHdaVVJwWTNScGIyNWhjbmxXWVd4MVpVTmhiR3hDWVdOcmN3QS9kMnRIWlhSRQpa
V1poZFd4MFNGUlVVRU52YjJ0cFpWTjBiM0poWjJWQVFGbEJVRUZWVDNCaGNYVmxRMFpJVkZSUVEy
OXZhMmxsVTNSdmNtRm5aVUJBCldGb0FYMTlwYlhCZlgxOURSa2hVVkZCRGIyOXJhV1ZUZEc5eVlX
ZGxSMlYwUkdWbVlYVnNkQUEvZDJ0RGNtVmhkR1ZRY21sMllYUmwKU0ZSVVVFTnZiMnRwWlZOMGIz
SmhaMlZBUUZsQlVFRlZUM0JoY1hWbFEwWklWRlJRUTI5dmEybGxVM1J2Y21GblpVQkFXRm9BWDE5
cApiWEJmWDE5RFJraFVWRkJEYjI5cmFXVlRkRzl5WVdkbFEzSmxZWFJsU1c1TlpXMXZjbmtBUDNk
clEyOXdlVVp2ZFc1a1lYUnBiMjVECllXTm9aVVJwY21WamRHOXllVUJBV1VGUVFsVmZYME5HVTNS
eWFXNW5RRUJZV2dCZlgybHRjRjlmWDBOR1ZWSk1RMkZqYUdWRGIzQjUKUTJGamFHVkVhWEpsWTNS
dmNua0FYMTlwYlhCZlgwTkdWVkpNUTJGamFHVkRiM0I1VTJoaGNtVmtWVkpNUTJGamFHVUFQM2Ry
VTJWMApRMFpWVWt4U1pYRjFaWE4wVTJodmRXeGtRMjl1ZEdWdWRGTnVhV1ptUUVCWlFWaFFRVlZm
UTBaVlVreFNaWEYxWlhOMFFFQmZUa0JhCkFGOWZhVzF3WDE5ZlEwWlZVa3hTWlhGMVpYTjBVMlYw
VUhKdmRHOWpiMnhRY205d1pYSjBlUUJmWDJsdGNGOWZYMTlEUmxOMGNtbHUKWjAxaGEyVkRiMjV6
ZEdGdWRGTjBjbWx1WndBL1AxOURRRjh3UTBaQVIwZEZSMFJEUmxCQVgydERSbFZTVEVOdmJtNWxZ
M1JwYjI1UQpjbTl3WlhKMGVWTm9iM1ZzWkZOQUFGOWZhVzF3WDE5clEwWkNiMjlzWldGdVJtRnNj
MlVBWDE5cGJYQmZYMnREUmtKdmIyeGxZVzVVCmNuVmxBRDkzYTBOR1ZWSk1VbVZ4ZFdWemRFTnZj
SGxJVkZSUVVtVnhkV1Z6ZEVKdlpIbFFZWEowYzBCQVdVRlFRbFZmWDBOR1FYSnkKWVhsQVFGQkNW
VjlEUmxWU1RGSmxjWFZsYzNSQVFFQmFBRjlmYVcxd1gxOURSbFZTVEZKbGNYVmxjM1JEYjNCNVNG
UlVVRkpsY1hWbApjM1JDYjJSNVVHRnlkSE1BUDNkclEwWlZVa3hTWlhGMVpYTjBVMlYwU0ZSVVVG
SmxjWFZsYzNSQ2IyUjVVR0Z5ZEhOQVFGbEJXRkJCClZWOURSbFZTVEZKbGNYVmxjM1JBUUZCQ1ZW
OWZRMFpCY25KaGVVQkFRRm9BWDE5cGJYQmZYME5HVlZKTVVtVnhkV1Z6ZEZObGRFaFUKVkZCU1pY
RjFaWE4wUW05a2VWQmhjblJ6QUQ5M2EwbHVhWFJwWVd4cGVtVk5ZWGhwYlhWdFNGUlVVRU52Ym01
bFkzUnBiMjVEYjNWdQpkRkJsY2todmMzUkFRRmxCU1VsQVdnQS9QMTlEUUY4d1EwZEFVRXBGU0VK
S1VFNUFYME5HVG1WMGQyOXlhMGhVVkZCRGIyNXVaV04wCmFXOXVRMkZqYUdWSFpYUkFBRDgvWDBO
QVh6QkRSMEJKUjB4QlMwbEJRRjlEUms1bGRIZHZjbXRJVkZSUVEyOXVibVZqZEdsdmJrTmgKWTJo
bFUyVjBRQUJmWDJsdGNGOWZSMlYwVUhKdlkwRmtaSEpsYzNOQU9BQmZYMmx0Y0Y5ZlIyVjBUVzlr
ZFd4bFNHRnVaR3hsVjBBMApBRDgvWDBOQVh6RkNUVUJQUWtkUFRVSk9TMEEvSkVGQlF6OGtRVUZH
UHlSQlFVNC9KRUZCWlQ4a1FVRjBQeVJCUVhjL0pFRkJiejhrClFVRnlQeVJCUVdzL0pFRkJQelEv
SkVGQlpEOGtRVUZzUHlSQlFXdy9KRUZCUHlSQlFVQUFQM2RyUTI5d2VVTnlaV1JsYm5ScFlXeEcK
Y205dFEwWlFaWEp6YVhOMFpXNTBVM1J2Y21GblpVQkFXVUZRUVZWZlEwWlZVa3hEY21Wa1pXNTBh
V0ZzUUVCUVFWVmZRMFpWVWt4UQpjbTkwWldOMGFXOXVVM0JoWTJWQVFFQmFBRjlmYVcxd1gxOURS
bFZTVEVOeVpXUmxiblJwWVd4VGRHOXlZV2RsUTI5d2VVUmxabUYxCmJIUkRjbVZrWlc1MGFXRnNS
bTl5VUhKdmRHVmpkR2x2YmxOd1lXTmxBRjlmYVcxd1gxOURSbFZTVEVOeVpXUmxiblJwWVd4VGRH
OXkKWVdkbFEzSmxZWFJsQUQ5M2EwTkdUbVYwZDI5eWEwVnljbTl5UjJWMFRHOWpZV3hwZW1Wa1JH
VnpZM0pwY0hScGIyNUFRRmxCVUVKVgpYMTlEUmxOMGNtbHVaMEJBU2tCYUFGOWZhVzF3WDE5ZlEw
Wk9aWFIzYjNKclJYSnliM0pIWlhSTWIyTmhiR2w2WldSRVpYTmpjbWx3CmRHbHZiZ0EvZDJ0VFpY
UkRUMDVPUlVOVVVISnZlSGxHYjNKVGRISmxZVzFBUUZsQldGQkJWVjlmUTBaU1pXRmtVM1J5WldG
dFFFQlEKUWxWZlgwTkdVM1J5YVc1blFFQlFRbFZmWDBOR1RuVnRZbVZ5UUVCQVdnQmZYMmx0Y0Y5
ZlEwWlNaV0ZrVTNSeVpXRnRVMlYwVUhKdgpjR1Z5ZEhrQVgxOXBiWEJmWDJ0RFJsTjBjbVZoYlZC
eWIzQmxjblI1UTA5T1RrVkRWRkJ5YjNoNUFGOWZhVzF3WDE5RFJrUnBZM1JwCmIyNWhjbmxEY21W
aGRHVUFYMTlwYlhCZlgydERSbE4wY21WaGJWQnliM0JsY25SNVEwOU9Ua1ZEVkZCeWIzaDVVRzl5
ZEFCZlgybHQKY0Y5ZmEwTkdVM1J5WldGdFVISnZjR1Z5ZEhsRFQwNU9SVU5VVUhKdmVIbEliM04w
QUQ5M2ExTmxkRU5QVGs1RlExUlFjbTk0ZVVGMQpkR2h2Y21sNllYUnBiMjVHYjNKVGRISmxZVzFB
UUZsQldGQkJWVjlmUTBaU1pXRmtVM1J5WldGdFFFQlFRbFZmWDBOR1UzUnlhVzVuClFFQkFXZ0Jm
WDJsdGNGOWZhME5HVTNSeVpXRnRVSEp2Y0dWeWRIbERUMDVPUlVOVVFXUmthWFJwYjI1aGJFaGxZ
V1JsY25NQVB6OWYKUTBCZk1FSkZRRVJEVEV0TFNWQkhRRkJ5YjNoNVB6bEJkWFJvYjNKcGVtRjBh
Vzl1UHlSQlFVQUFYMTlwYlhCZlgwTkdSR2xqZEdsdgpibUZ5ZVVOeVpXRjBaVTExZEdGaWJHVkRi
M0I1QUY5ZmFXMXdYMTlEUmxKbFlXUlRkSEpsWVcxRGIzQjVVSEp2Y0dWeWRIa0FQM2RyClEyOXdl
VU5QVGs1RlExUlFjbTk0ZVZKbGMzQnZibk5sUUVCWlFWQkJWVjlmUTBaSVZGUlFUV1Z6YzJGblpV
QkFVRUZWWDE5RFJsSmwKWVdSVGRISmxZVzFBUUZCQ1ZWOWZRMFpWVWt4QVFFQmFBRjlmYVcxd1gx
OWZRMFpJVkZSUVRXVnpjMkZuWlZObGRGSmxjM0J2Ym5ObApWVkpNQUY5ZmFXMXdYMTlyUTBaVGRI
SmxZVzFRY205d1pYSjBlVU5QVGs1RlExUlNaWE53YjI1elpRQS9kMnREUVVsdFlXZGxVWFZsCmRX
VkRjbVZoZEdWQVFGbEJVRUZWWDBOQlNXMWhaMlZSZFdWMVpVQkFTVWxKUUZvQVgxOXBiWEJmWDBO
QlNXMWhaMlZSZFdWMVpVTnkKWldGMFpRQS9kMnREUVVsdFlXZGxVWFZsZFdWSFpYUkRZWEJoWTJs
MGVVQkFXVUZKVUVGVlgwTkJTVzFoWjJWUmRXVjFaVUJBUUZvQQpYMTlwYlhCZlgwTkJTVzFoWjJW
UmRXVjFaVWRsZEVOaGNHRmphWFI1QUQ5M2EwTkJTVzFoWjJWUmRXVjFaVWx1ZG1Gc2FXUmhkR1ZB
ClFGbEJXRkJCVlY5RFFVbHRZV2RsVVhWbGRXVkFRRUJhQUY5ZmFXMXdYMTlEUVVsdFlXZGxVWFZs
ZFdWSmJuWmhiR2xrWVhSbEFEOTMKYTBOQlNXMWhaMlZSZFdWMVpVTnZiR3hsWTNSQVFGbEJTVkJC
VlY5RFFVbHRZV2RsVVhWbGRXVkFRRUJhQUY5ZmFXMXdYMTlEUVVsdApZV2RsVVhWbGRXVkRiMnhz
WldOMEFEOTNhME5CU1cxaFoyVlJkV1YxWlVsdWMyVnlkRWx0WVdkbFFFQlpRVjlPVUVGVlgwTkJT
VzFoCloyVlJkV1YxWlVCQVRrbGZTMGxRTmtGWVNURlFRVmhBV2pKQVdnQmZYMmx0Y0Y5ZlEwRkpi
V0ZuWlZGMVpYVmxTVzV6WlhKMFNXMWgKWjJVQVAzZHJRMEZKYldGblpWRjFaWFZsVW1WbmFYTjBa
WEpRYVhobGJFSjFabVpsY2tCQVdVRmZTMUJCVlY5RFFVbHRZV2RsVVhWbApkV1ZBUUZCQldFbEpT
VWxKVUVKVlgxOURSa1JwWTNScGIyNWhjbmxBUUVsQVdnQmZYMmx0Y0Y5ZlEwRkpiV0ZuWlZGMVpY
VmxVbVZuCmFYTjBaWEpRYVhobGJFSjFabVpsY2dBL2QydERRVWx0WVdkbFVYVmxkV1ZUWlhSR2JH
Rm5jMEJBV1VGWVVFRlZYME5CU1cxaFoyVlIKZFdWMVpVQkFTVWxBV2dCZlgybHRjRjlmUTBGSmJX
Rm5aVkYxWlhWbFUyVjBSbXhoWjNNQVAzZHJRMEZKYldGblpWRjFaWFZsUjJWMApSbXhoWjNOQVFG
bEJTVkJCVlY5RFFVbHRZV2RsVVhWbGRXVkFRRUJhQUY5ZmFXMXdYMTlEUVVsdFlXZGxVWFZsZFdW
SFpYUkdiR0ZuCmN3QS9kMnREUVVsdFlXZGxVWFZsZFdWSFpYUlVlWEJsU1VSQVFGbEJTMWhhQUY5
ZmFXMXdYMTlEUVVsdFlXZGxVWFZsZFdWSFpYUlUKZVhCbFNVUUFQejh3VjB0RFFVTkdRMjl1ZEdW
NGRFQkFVVUZGUUZoYUFGOWZhVzF3WDE5RFFVTkdRMjl1ZEdWNGRFTnlaV0YwWlFBLwpQekZYUzBO
QlEwWkRiMjUwWlhoMFFFQlJRVVZBV0ZvQVgxOXBiWEJmWDBOQlVtVnVaR1Z5VlhCa1lYUmxSbWx1
YVhOb0FGOWZhVzF3ClgxOURRVkpsYm1SbGNrOUhURVJsYzNSeWIza0FQM2RyUTBGRFJrTnZiblJs
ZUhSRGNtVmhkR1ZBUUZsQlVFRlZWMHREUVVOR1EyOXUKZEdWNGRFQkFXRm9BUHo4eVFGbEJVRUZZ
U1VCYUFEOC9YMGRYUzBOQlEwWkRiMjUwWlhoMFFFQlJRVVZRUVZoSlFGb0FQejh6UUZsQgpXRkJC
V0VCYUFEOTNhME5CUTBaRGIyNTBaWGgwVTJWMFRHRjVaWEpBUUZsQldGQkJWVmRMUTBGRFJrTnZi
blJsZUhSQVFGQkJWVjlEClFVTkdUR0Y1WlhKQVFFQmFBRjlmYVcxd1gxOURRVU5HUTI5dWRHVjRk
Rk5sZEV4aGVXVnlBRDkzYTBOQlEwWkRiMjUwWlhoMFJteDEKYzJoQVFGbEJXRkJCVlZkTFEwRkRS
a052Ym5SbGVIUkFRRUJhQUY5ZmFXMXdYMTlEUVVOR1EyOXVkR1Y0ZEVac2RYTm9BRDkzYTBOQgpR
MFpEYjI1MFpYaDBSMlYwVEdGemRFTnZiVzFwZEZScGJXVkFRRmxCVGxCQlZWZExRMEZEUmtOdmJu
UmxlSFJBUUVCYUFGOWZhVzF3ClgxOURRVU5HUTI5dWRHVjRkRWRsZEV4aGMzUkRiMjF0YVhSVWFX
MWxBRDkzYTBOQlEwWkRiMjUwWlhoMFNXNXBkR2xoYkdsNlpVUXoKUkVSbGRtbGpaVUJBV1VGWVVF
RlZWMHREUVVOR1EyOXVkR1Y0ZEVCQVVFRlZTVVJwY21WamRETkVSR1YyYVdObE9VQkFRRm9BWDE5
cApiWEJmWDBOQlVtVnVaR1Z5VDBkTVRtVjNBRjlmYVcxd1gxOXJRMEZTWlc1a1pYSkVXRGxEWVd4
c1ltRmphM01BUDNkclEwRkRSa052CmJuUmxlSFJDWldkcGJsVndaR0YwWlVCQVdVRmZUbEJCVlZk
TFEwRkRSa052Ym5SbGVIUkFRRkJCV0VsT1FVSlZRMGRTWldOMFFFQlIKUWxVeVFFbEFXZ0JmWDJs
dGNGOWZRMEZTWlc1a1pYSlZjR1JoZEdWQlpHUlNaV04wQUY5ZmFXMXdYMTlEUVZKbGJtUmxja052
Ym5SbAplSFJWYm14dlkyc0FYMTlwYlhCZlgwTkJVbVZ1WkdWeVZYQmtZWFJsUVdSa1EyOXVkR1Y0
ZEFCZlgybHRjRjlmUTBGU1pXNWtaWEpECmIyNTBaWGgwVEc5amF3QmZYMmx0Y0Y5ZlEwRkRSa052
Ym5SbGVIUkhaWFJTWlc1a1pYSkRiMjUwWlhoMEFGOWZhVzF3WDE5RFFWSmwKYm1SbGNsVndaR0Yw
WlVKbFoybHVBRDkzYTBOQlEwWkRiMjUwWlhoMFVtVnVaR1Z5VlhCa1lYUmxRRUJaUVZoUVFWVlhT
ME5CUTBaRApiMjUwWlhoMFFFQkFXZ0JmWDJsdGNGOWZRMEZTWlc1a1pYSlBSMHhTWlc1a1pYSUFQ
M2RyUTBGRFJrTnZiblJsZUhSR2FXNXBjMmhWCmNHUmhkR1ZBUUZsQldGQkJWVmRMUTBGRFJrTnZi
blJsZUhSQVFFQmFBRDkzYTBOQlEwWkRiMjUwWlhoMFVtVnNaV0Z6WlVRelJGSmwKYzI5MWNtTmxj
MEJBV1VGWVVFRlZWMHREUVVOR1EyOXVkR1Y0ZEVCQVFGb0FYMTlwYlhCZlgwTkJVbVZ1WkdWeVQw
ZE1VSFZ5WjJVQQpQM2RyUTBGRFJrTnZiblJsZUhSQlpHUlZjR1JoZEdWU1pXTjBRRUJaUVZoUVFW
VlhTME5CUTBaRGIyNTBaWGgwUUVCQlFsVkRSMUpsClkzUkFRRUJhQUQ5M2EwTkJRMFpEYjI1MFpY
aDBRMjl3ZVZWd1pHRjBaVkpsWTNSRmJuVnRaWEpoZEc5eVFFQlpRVkJCVlZkTFEwRkQKUmxWd1pH
RjBaVkpsWTNSRmJuVnRaWEpoZEc5eVFFQlFRVlZYUzBOQlEwWkRiMjUwWlhoMFFFQkFXZ0JmWDJs
dGNGOWZRMGRUVW1WcwpaV0Z6WlZKbFoybHZiZ0JmWDJsdGNGOWZRMGRUVW1WbmFXOXVSVzUxYldW
eVlYUnZjZ0JmWDJsdGNGOWZRMEZTWlc1a1pYSlZjR1JoCmRHVkRiM0I1VW1WbmFXOXVBRDkzYTBO
QlEwWlZjR1JoZEdWU1pXTjBSVzUxYldWeVlYUnZjazVsZUhSU1pXTjBRRUJaUVZCQ1ZVTkgKVW1W
amRFQkFVRUZWVjB0RFFVTkdWWEJrWVhSbFVtVmpkRVZ1ZFcxbGNtRjBiM0pBUUVCYUFGOWZhVzF3
WDE5RFIxTk9aWGgwVW1WagpkQUEvZDJ0RFFVTkdWWEJrWVhSbFVtVmpkRVZ1ZFcxbGNtRjBiM0pT
Wld4bFlYTmxRRUJaUVZoUVFWVlhTME5CUTBaVmNHUmhkR1ZTClpXTjBSVzUxYldWeVlYUnZja0JB
UUZvQVgxOXBiWEJmWDBOSFUxSmxiR1ZoYzJWU1pXZHBiMjVGYm5WdFpYSmhkRzl5QUQ5M2EwTkIK
UTBaRGIyNTBaWGgwUkdWemRISnZlVUJBV1VGWVVFRlZWMHREUVVOR1EyOXVkR1Y0ZEVCQVFGb0FQ
ejlmWDBWclEwWlhhVzVrYjNkegpVMU5NVUdWbGNrTmxjblJBUUZsQldGaGFBRDgvWDBOQVh6QkNT
RUJDVGtsQ1QweEtSa0JmYTBOR1YybHVaRzkzYzFOVFRGQmxaWEpEClpYSjBQeVJCUVVBQVB6OWZY
MFZyUTBaWGFXNWtiM2R6VTFOTVEyaGhhVzVEYjI1MFpYaDBRRUJaUVZoWVdnQS9QMTlEUUY4d1Fr
eEEKUjFCTVMwUlFTa0pBWDJ0RFJsZHBibVJ2ZDNOVFUweERhR0ZwYmtOdmJuUmxlSFEvSkVGQlFB
QS9QMTlmUld0RFJsZHBibVJ2ZDNOVApVMHhNYjJOaGJFTmxjblJBUUZsQldGaGFBRDgvWDBOQVh6
QkNTVUJKUTFCSFJVRkRUa0JmYTBOR1YybHVaRzkzYzFOVFRFeHZZMkZzClEyVnlkRDhrUVVGQUFE
OC9YMTlGYTBOR1UzUnlaV0Z0VUhKdmNHVnlkSGxYYVc1a2IzZHpVMU5NUTJWeWRFbHVabTlBUUZs
QldGaGEKQUQ4L1gwTkFYekJEUmtCUVFsQkhVRVJRUmtCZmEwTkdVM1J5WldGdFVISnZjR1Z5ZEhs
WGFXNWtiM2R6VTFOTVEyVnlkRUFBWDJ0RApSbGRwYm1SdmQzTlRVMHhRWldWeVEyVnlkQUJmYTBO
R1UzUnlaV0Z0VUhKdmNHVnlkSGxYYVc1a2IzZHpVMU5NUTJWeWRFbHVabThBClgydERSbGRwYm1S
dmQzTlRVMHhNYjJOaGJFTmxjblFBWDJ0RFJsZHBibVJ2ZDNOVFUweERhR0ZwYmtOdmJuUmxlSFFB
WDJ0RFJsZHAKYm1SdmQzTlRVMHhRWldWeVEyVnlkQ1JwYm1sMGFXRnNhWHBsY2lRQVgydERSbGRw
Ym1SdmQzTlRVMHhEYUdGcGJrTnZiblJsZUhRawphVzVwZEdsaGJHbDZaWElrQUY5clEwWlhhVzVr
YjNkelUxTk1URzlqWVd4RFpYSjBKR2x1YVhScFlXeHBlbVZ5SkFCZmEwTkdVM1J5ClpXRnRVSEp2
Y0dWeWRIbFhhVzVrYjNkelUxTk1RMlZ5ZEVsdVptOGthVzVwZEdsaGJHbDZaWElrQUM4NU1DQWdJ
Q0FnSUNBZ0lDQWcKSUNBeE1qa3lNREF6T1RjM0lDQWdJQ0FnSUNBZ0lDQWdJQ0F4TURBMk5qWWdJ
REU1T0RZME55QWdJQ0JnQ2t3QmdRR0phZ0pOeG1zQwpBSmdFQUFBQUFBQUFMbVJ5WldOMGRtVUFB
QUFBQUFBQUFNTUFBQUE4UEFBQUFBQUFBQUFBQUFBQUFBQUFBQW9RQUM1a1pXSjFaeVJUCkFBQUFB
QUFBQUFEZ1JBQUEvendBQU4rQkFBQUFBQUFBSUFBQUFFQUFFRUl1Y21SaGRHRUFBQUFBQUFBQUFB
QUFCQUFBQUIrREFBQUEKQUFBQUFBQUFBQUFBQUFCQUVEQkFMbkprWVhSaEFBQUFBQUFBQUFBQUFB
UUFBQUFqZ3dBQUFBQUFBQUFBQUFBQUFBQUFRQkF3UUM1eQpaR0YwWVFBQUFBQUFBQUFBQUFBRUFB
QUFKNE1BQUFBQUFBQUFBQUFBQUFBQUFFQVFNRUF1Y21SaGRHRUFBQUFBQUFBQUFBQUFCQUFBCkFD
dURBQUFBQUFBQUFBQUFBQUFBQUFCQUVEQkFMbkprWVhSaEFBQUFBQUFBQUFBQUFBUUFBQUF2Z3dB
QUFBQUFBQUFBQUFBQUFBQUEKUUJBd1FDNXlaR0YwWVFBQUFBQUFBQUFBQUFBRUFBQUFNNE1BQUFB
QUFBQUFBQUFBQUFBQUFFQVFNRUF1Y21SaGRHRUFBQUFBQUFBQQpBQUFBQkFBQUFEZURBQUFBQUFB
QUFBQUFBQUFBQUFCQUVEQkFMbkprWVhSaEFBQUFBQUFBQUFBQUFEeWpBQUE3Z3dBQUFBQUFBQUFB
CkFBQUFBQUFBUUFCQVFDNTBaWGgwQUFBQUFBQUFBQUFBQUFBZEFBQUFkeVlCQUFBQUFBQUFBQUFB
QUFBQUFDQVFVR0F1WkdWaWRXY2sKVXdBQUFBQUFBQUFBOEFBQUFKUW1BUUNFSndFQUFBQUFBQVVB
QUFCQUVCQkNMblJsZUhRQUFBQUFBQUFBQUFBQUFCMEFBQUMySndFQQpBQUFBQUFBQUFBQUFBQUFB
SUJCUVlDNWtaV0oxWnlSVEFBQUFBQUFBQUFEOEFBQUEweWNCQU04b0FRQUFBQUFBQlFBQUFFQVFF
RUl1CmRHVjRkQUFBQUFBQUFBQUFBQUFBSEFBQUFBRXBBUUFBQUFBQUFBQUFBQUFBQUFBZ0VGQmdM
bVJsWW5WbkpGTUFBQUFBQUFBQUFCQUIKQUFBZEtRRUFMU29CQUFBQUFBQUZBQUFBUUJBUVFpNTBa
WGgwQUFBQUFBQUFBQUFBQUFBL0FBQUFYeW9CQUFBQUFBQUFBQUFBQUFBQQpBQ0FRVUdBdVpHVmlk
V2NrVXdBQUFBQUFBQUFBR0FFQUFKNHFBUUMyS3dFQUFBQUFBQVVBQUFCQUVCQkNMblJsZUhRQUFB
QUFBQUFBCkFBQUFBQWNBQUFEb0t3RUE3eXNCQUFBQUFBQUJBQUFBSUJCUVlDNWtaV0oxWnlSVEFB
QUFBQUFBQUFEWUFBQUErU3NCQU5Fc0FRQUEKQUFBQUJRQUFBRUFRRUVJdWNtUmhkR0VBQUFBQUFB
QUFBQUFBR0FBQUFBTXRBUUFiTFFFQUFBQUFBQVlBQUFCQUVEQkFMblJsZUhRQQpBQUFBQUFBQUFB
QUFBRFlBQUFCWExRRUFqUzBCQUFBQUFBQUJBQUFBSUJCUVlDNWtaV0oxWnlSVEFBQUFBQUFBQUFB
SUFRQUFseTBCCkFKOHVBUUFBQUFBQUJ3QUFBRUFRRUVJdWRHVjRkQUFBQUFBQUFBQUFBQUFBRndB
QUFPVXVBUUQ4TGdFQUFBQUFBQUVBQUFBZ0VGQmcKTG1SbFluVm5KRk1BQUFBQUFBQUFBTlFBQUFB
R0x3RUEyaThCQUFBQUFBQUZBQUFBUUJBUVFpNTBaWGgwQUFBQUFBQUFBQUFBQUFBSwpBQUFBRERB
QkFBQUFBQUFBQUFBQUFBQUFBQ0FRVUdBdVpHVmlkV2NrVXdBQUFBQUFBQUFBNkFBQUFCWXdBUUQr
TUFFQUFBQUFBQVVBCkFBQkFFQkJDTG5SbGVIUUFBQUFBQUFBQUFBQUFBQVFBQUFBd01RRUFBQUFB
QUFBQUFBQUFBQUFBSUJCUVlDNWtaV0oxWnlSVEFBQUEKQUFBQUFBRFFBQUFBTkRFQkFBUXlBUUFB
QUFBQUJRQUFBRUFRRUVJdWRHVjRkQUFBQUFBQUFBQUFBQUFBQ0FBQUFEWXlBUUFBQUFBQQpBQUFB
QUFBQUFBQWdFRkJnTG1SbFluVm5KRk1BQUFBQUFBQUFBTlFBQUFBK01nRUFFak1CQUFBQUFBQUZB
QUFBUUJBUVFpNTBaWGgwCkFBQUFBQUFBQUFBQUFBQUpBQUFBUkRNQkFBQUFBQUFBQUFBQUFBQUFB
Q0FRVUdBdVpHVmlkV2NrVXdBQUFBQUFBQUFBMUFBQUFFMHoKQVFBaE5BRUFBQUFBQUFVQUFBQkFF
QkJDTG5SbGVIUUFBQUFBQUFBQUFBQUFBQWtBQUFCVE5BRUFBQUFBQUFBQUFBQUFBQUFBSUJCUQpZ
QzVrWldKMVp5UlRBQUFBQUFBQUFBRFVBQUFBWERRQkFEQTFBUUFBQUFBQUJRQUFBRUFRRUVJdWRH
VjRkQUFBQUFBQUFBQUFBQUFBCkh3QUFBR0kxQVFDQk5RRUFBQUFBQUFJQUFBQWdFRkJnTG1SbFlu
Vm5KRk1BQUFBQUFBQUFBT0FBQUFDVk5RRUFkVFlCQUFBQUFBQUQKQUFBQVFCQVFRaTUwWlhoMEFB
QUFBQUFBQUFBQUFBQUVBQUFBa3pZQkFBQUFBQUFBQUFBQUFBQUFBQ0FRVUdBdVpHVmlkV2NrVXdB
QQpBQUFBQUFBQTNBQUFBSmMyQVFCek53RUFBQUFBQUFVQUFBQkFFQkJDTG5SbGVIUUFBQUFBQUFB
QUFBQUFBQVFBQUFDbE53RUFBQUFBCkFBQUFBQUFBQUFBQUlCQlFZQzVrWldKMVp5UlRBQUFBQUFB
QUFBRFlBQUFBcVRjQkFJRTRBUUFBQUFBQUJRQUFBRUFRRUVJdWRHVjQKZEFBQUFBQUFBQUFBQUFB
QUZRQUFBTE00QVFBQUFBQUFBQUFBQUFBQUFBQWdFRkJnTG1SbFluVm5KRk1BQUFBQUFBQUFBT0FB
QUFESQpPQUVBcURrQkFBQUFBQUFGQUFBQVFCQVFRaTV5WkdGMFlRQUFBQUFBQUFBQUFBQUlBQUFB
MmprQkFBQUFBQUFBQUFBQUFBQUFBRUFRClFFQXVkR1Y0ZEFBQUFBQUFBQUFBQUFBQUJBQUFBT0k1
QVFBQUFBQUFBQUFBQUFBQUFBQWdFRkJnTG1SbFluVm5KRk1BQUFBQUFBQUEKQU53QUFBRG1PUUVB
d2pvQkFBQUFBQUFGQUFBQVFCQVFRaTUwWlhoMEFBQUFBQUFBQUFBQUFBQUpBQUFBOURvQkFQMDZB
UUFBQUFBQQpBUUFBQUNBUVVHQXVaR1ZpZFdja1V3QUFBQUFBQUFBQXNBQUFBQWM3QVFDM093RUFB
QUFBQUFNQUFBQkFFQkJDTG5SbGVIUUFBQUFBCkFBQUFBQUFBQUFjQUFBRFZPd0VBM0RzQkFBQUFB
QUFCQUFBQUlCQlFZQzVrWldKMVp5UlRBQUFBQUFBQUFBRElBQUFBNWpzQkFLNDgKQVFBQUFBQUFB
d0FBQUVBUUVFSXVkR1Y0ZEFBQUFBQUFBQUFBQUFBQUJ3QUFBTXc4QVFEVFBBRUFBQUFBQUFFQUFB
QWdFRkJnTG1SbApZblZuSkZNQUFBQUFBQUFBQU53QUFBRGRQQUVBdVQwQkFBQUFBQUFGQUFBQVFC
QVFRaTV5WkdGMFlRQUFBQUFBQUFBQUFBQUVBQUFBCjZ6MEJBQUFBQUFBQUFBQUFBQUFBQUVBUU1F
QXVkR1Y0ZEFBQUFBQUFBQUFBQUFBQUF3QUFBTzg5QVFBQUFBQUFBQUFBQUFBQUFBQWcKRUZCZ0xt
UmxZblZuSkZNQUFBQUFBQUFBQU9nQUFBRHlQUUVBMmo0QkFBQUFBQUFGQUFBQVFCQVFRaTV5WkdG
MFlRQUFBQUFBQUFBQQpBQUFFQUFBQUREOEJBQUFBQUFBQUFBQUFBQUFBQUVBUU1FQXVkR1Y0ZEFB
QUFBQUFBQUFBQUFBQUJ3QUFBQkEvQVFBWFB3RUFBQUFBCkFBRUFBQUFnRUZCZ0xtUmxZblZuSkZN
QUFBQUFBQUFBQU5BQUFBQWhQd0VBOFQ4QkFBQUFBQUFGQUFBQVFCQVFRaTV5WkdGMFlRQUEKQUFB
QUFBQUFBQUFFQUFBQUkwQUJBQUFBQUFBQUFBQUFBQUFBQUVBUU1FQXVkR1Y0ZEFBQUFBQUFBQUFB
QUFBQUJ3QUFBQ2RBQVFBdQpRQUVBQUFBQUFBRUFBQUFnRUZCZ0xtUmxZblZuSkZNQUFBQUFBQUFB
QU5BQUFBQTRRQUVBQ0VFQkFBQUFBQUFGQUFBQVFCQVFRaTV5ClpHRjBZUUFBQUFBQUFBQUFBQUFF
QUFBQU9rRUJBQUFBQUFBQUFBQUFBQUFBQUVBUU1FQXVkR1Y0ZEFBQUFBQUFBQUFBQUFBQUJ3QUEK
QUQ1QkFRQkZRUUVBQUFBQUFBRUFBQUFnRUZCZ0xtUmxZblZuSkZNQUFBQUFBQUFBQU53QUFBQlBR
UUVBSzBJQkFBQUFBQUFGQUFBQQpRQkFRUWk1eVpHRjBZUUFBQUFBQUFBQUFBQUFFQUFBQVhVSUJB
QUFBQUFBQUFBQUFBQUFBQUVBUU1FQXVkR1Y0ZEFBQUFBQUFBQUFBCkFBQUFCd0FBQUdGQ0FRQm9R
Z0VBQUFBQUFBRUFBQUFnRUZCZ0xtUmxZblZuSkZNQUFBQUFBQUFBQU13QUFBQnlRZ0VBUGtNQkFB
QUEKQUFBRkFBQUFRQkFRUWk1eVpHRjBZUUFBQUFBQUFBQUFBQUFFQUFBQWNFTUJBQUFBQUFBQUFB
QUFBQUFBQUVBUU1FQXVkR1Y0ZEFBQQpBQUFBQUFBQUFBQUFCd0FBQUhSREFRQjdRd0VBQUFBQUFB
RUFBQUFnRUZCZ0xtUmxZblZuSkZNQUFBQUFBQUFBQU5nQUFBQ0ZRd0VBClhVUUJBQUFBQUFBRkFB
QUFRQkFRUWk1MFpYaDBBQUFBQUFBQUFBQUFBQUFQQUFBQWowUUJBQUFBQUFBQUFBQUFBQUFBQUNB
UVVHQXUKWkdWaWRXY2tVd0FBQUFBQUFBQUF3QUFBQUo1RUFRQmVSUUVBQUFBQUFBVUFBQUJBRUJC
Q0xuUmxlSFFBQUFBQUFBQUFBQUFBQUE4QQpBQUNRUlFFQUFBQUFBQUFBQUFBQUFBQUFJQkJRWUM1
a1pXSjFaeVJUQUFBQUFBQUFBQURBQUFBQW4wVUJBRjlHQVFBQUFBQUFCUUFBCkFFQVFFRUl1ZEdW
NGRBQUFBQUFBQUFBQUFBQUFxZ0lBQUpGR0FRQTdTUUVBQUFBQUFCSUFBQUFnRUZCZ0xtUmxZblZu
SkZNQUFBQUEKQUFBQUFId0RBQUR2U1FFQWEwMEJBQUFBQUFBbkFBQUFRQkFRUWk1eVpHRjBZUUFB
QUFBQUFBQUFBQUFJQUFBQThVNEJBQUFBQUFBQQpBQUFBQUFBQUFFQVFRRUF1Y21SaGRHRUFBQUFB
QUFBQUFBQUFDQUFBQVBsT0FRQUFBQUFBQUFBQUFBQUFBQUJBRUVCQUxuUmxlSFFBCkFBQUFBQUFB
QUFBQUFPc0FBQUFCVHdFQTdFOEJBQUFBQUFBR0FBQUFJQkJRWUM1a1pXSjFaeVJUQUFBQUFBQUFB
QUQ0QVFBQUtGQUIKQUNCU0FRQUFBQUFBRVFBQUFFQVFFRUl1ZEdWNGRBQUFBQUFBQUFBQUFBQUFn
d0FBQU1wU0FRQk5Vd0VBQUFBQUFBVUFBQUFnRUZCZwpMbVJsWW5WbkpGTUFBQUFBQUFBQUFJUUJB
QUIvVXdFQUExVUJBQUFBQUFBUEFBQUFRQkFRUWk1MFpYaDBBQUFBQUFBQUFBQUFBQUJZCkFBQUFt
VlVCQUFBQUFBQUFBQUFBQUFBQUFDQVFVR0F1WkdWaWRXY2tVd0FBQUFBQUFBQUFDQUVBQVBGVkFR
RDVWZ0VBQUFBQUFBVUEKQUFCQUVCQkNMblJsZUhRQUFBQUFBQUFBQUFBQUFNWUJBQUFyVndFQThW
Z0JBQUFBQUFBTEFBQUFJQkJRWUM1a1pXSjFaeVJUQUFBQQpBQUFBQUFDVUFnQUFYMWtCQVBOYkFR
QUFBQUFBR1FBQUFFQVFFRUl1Y21SaGRHRUFBQUFBQUFBQUFBQUFCQUFBQU8xY0FRQUFBQUFBCkFB
QUFBQUFBQUFCQUVEQkFMblJsZUhRQUFBQUFBQUFBQUFBQUFFa0FBQUR4WEFFQU9sMEJBQUFBQUFB
SEFBQUFJQkJRWUM1a1pXSjEKWnlSVEFBQUFBQUFBQUFCVUFRQUFnRjBCQU5SZUFRQUFBQUFBQ3dB
QUFFQVFFRUl1WW5OekFBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFD
QUVEREFMbUp6Y3dBQUFBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQkF3
CndDNTBaWGgwQUFBQUFBQUFBQUFBQUFCQUFnQUFRbDhCQUlKaEFRQUFBQUFBRUFBQUFDQVFVR0F1
WkdWaWRXY2tVd0FBQUFBQUFBQUEKdkFJQUFDSmlBUURlWkFFQUFBQUFBQjhBQUFCQUVCQkNMblJs
ZUhRQUFBQUFBQUFBQUFBQUFJNEFBQUFVWmdFQW9tWUJBQUFBQUFBSQpBQUFBSUJCUVlDNWtaV0ox
WnlSVEFBQUFBQUFBQUFBNEFRQUE4bVlCQUNwb0FRQUFBQUFBQ1FBQUFFQVFFRUl1Y21SaGRHRUFB
QUFBCkFBQUFBQUFBQkFBQUFJUm9BUUFBQUFBQUFBQUFBQUFBQUFCQUVEQkFMbUp6Y3dBQUFBQUFB
QUFBQUFBQUFBUUFBQUFBQUFBQUFBQUEKQUFBQUFBQUFBQUFBZ0JBd3dDNXlaR0YwWVFBQUFBQUFB
QUFBQUFBRUFBQUFpR2dCQUFBQUFBQUFBQUFBQUFBQUFFQVFNRUF1WW5OegpBQUFBQUFBQUFBQUFB
QUFBQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQUVEREFMblJsZUhRQUFBQUFBQUFBQUFBQUFM
Z0FBQUNNCmFBRUFSR2tCQUFBQUFBQU1BQUFBSUJCUVlDNWtaV0oxWnlSVEFBQUFBQUFBQUFEUUFR
QUF2R2tCQUl4ckFRQUFBQUFBRHdBQUFFQVEKRUVJdWNtUmhkR0VBQUFBQUFBQUFBQUFBQkFBQUFD
SnNBUUFBQUFBQUFBQUFBQUFBQUFCQUVEQkFMbUp6Y3dBQUFBQUFBQUFBQUFBQQpBQVFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBZ0JBd3dDNTBaWGgwQUFBQUFBQUFBQUFBQUFET0JBQUFKbXdCQVBS
d0FRQUFBQUFBCkx3QUFBQ0FRVUdBdVpHVmlkV2NrVXdBQUFBQUFBQUFBd0FVQUFNcHlBUUNLZUFF
QUFBQUFBRmtBQUFCQUVCQkNMbkprWVhSaEFBQUEKQUFBQUFBQUFBQWdBQUFBRWZBRUFBQUFBQUFB
QUFBQUFBQUFBUUJCQVFDNXlaR0YwWVFBQUFBQUFBQUFBQUFBRUFBQUFESHdCQUFBQQpBQUFBQUFB
QUFBQUFBRUFRTUVBdWNtUmhkR0VBQUFBQUFBQUFBQUFBQkFBQUFCQjhBUUFBQUFBQUFBQUFBQUFB
QUFCQUVEQkFMblJsCmVIUUFBQUFBQUFBQUFBQUFBRnNCQUFBVWZBRUFiMzBCQUFBQUFBQU1BQUFB
SUJCUVlDNWtaV0oxWnlSVEFBQUFBQUFBQUFCZ0FnQUEKNTMwQkFFZUFBUUFBQUFBQUZ3QUFBRUFR
RUVJdWNtUmhkR0VBQUFBQUFBQUFBQUFBQkFBQUFDMkJBUUFBQUFBQUFBQUFBQUFBQUFCQQpFREJB
TG5Ka1lYUmhBQUFBQUFBQUFBQUFBQVFBQUFBeGdRRUFBQUFBQUFBQUFBQUFBQUFBUUJBd1FDNTBa
WGgwQUFBQUFBQUFBQUFBCkFBQ2FBUUFBTllFQkFNK0NBUUFBQUFBQURBQUFBQ0FRVUdBdVpHVmlk
V2NrVXdBQUFBQUFBQUFBUUFJQUFFZURBUUNIaFFFQUFBQUEKQUJrQUFBQkFFQkJDTG5SbGVIUUFB
QUFBQUFBQUFBQUFBRFFBQUFDQmhnRUFBQUFBQUFBQUFBQUFBQUFBSUJCUVlDNWtaV0oxWnlSVApB
QUFBQUFBQUFBQXNBUUFBdFlZQkFPR0hBUUFBQUFBQUJRQUFBRUFRRUVJdWRHVjRkQUFBQUFBQUFB
QUFBQUFBaGdFQUFCT0lBUUNaCmlRRUFBQUFBQUFFQUFBQWdFRkJnTG1SbFluVm5KRk1BQUFBQUFB
QUFBTlFCQUFDamlRRUFkNHNCQUFBQUFBQUZBQUFBUUJBUVFpNTAKWlhoMEFBQUFBQUFBQUFBQUFB
QjVBQUFBcVlzQkFDS01BUUFBQUFBQUNnQUFBQ0FRVUdBdVpHVmlkV2NrVXdBQUFBQUFBQUFBdEFF
QQpBSWFNQVFBNmpnRUFBQUFBQUEwQUFBQkFFQkJDTG1KemN3QUFBQUFBQUFBQUFBQUFBQVFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBCmdCQXd3QzVpYzNNQUFBQUFBQUFBQUFBQUFBQUVBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBSUFRTU1BdVluTnpBQUFBQUFBQUFBQUEKQUFBQUJBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQ0FFRERBTG5SbGVIUUFBQUFBQUFBQUFBQUFBQ1VCQUFDOGpnRUE0WThC
QUFBQQpBQUFhQUFBQUlCQlFZQzVrWldKMVp5UlRBQUFBQUFBQUFBRGtBUUFBNVpBQkFNbVNBUUFB
QUFBQUZ3QUFBRUFRRUVJdVluTnpBQUFBCkFBQUFBQUFBQUFBQUJBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQ0FFRERBTG1SaGRHRUFBQUFBQUFBQUFBQUFBQkFBQUFDdmt3RUEKQUFBQUFBQUFBQUFB
QUFBQVFCQXd3QzVpYzNNQUFBQUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
SUFRTU1BdQpjbVJoZEdFQUFBQUFBQUFBQUFBQUJBQUFBTCtUQVFBQUFBQUFBQUFBQUFBQUFBQkFF
REJBTG1KemN3QUFBQUFBQUFBQUFBQUFBQVFBCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdCQXd3
QzV5WkdGMFlRQUFBQUFBQUFBQUFBQUVBQUFBdzVNQkFBQUFBQUFBQUFBQUFBQUEKQUVBUU1FQXVZ
bk56QUFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FFRERBTG5SbGVI
UUFBQUFBQUFBQQpBQUFBQUVjQ0FBREhrd0VBRHBZQkFBQUFBQUFUQUFBQUlCQlFZQzVrWldKMVp5
UlRBQUFBQUFBQUFBQjRBZ0FBekpZQkFFU1pBUUFBCkFBQUFGd0FBQUVBUUVFSXVZbk56QUFBQUFB
QUFBQUFBQUFBQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FFRERBTG5Ka1lYUmgKQUFBQUFB
QUFBQUFBQUFRQUFBQXFtZ0VBQUFBQUFBQUFBQUFBQUFBQVFCQXdRQzVpYzNNQUFBQUFBQUFBQUFB
QUFBQUVBQUFBQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUlBUU1NQXVkR1Y0ZEFBQUFBQUFBQUFBQUFB
QUZBTUFBQzZhQVFCQ25RRUFBQUFBQURrQUFBQWdFRkJnCkxtUmxZblZuSkZNQUFBQUFBQUFBQUxB
REFBQjhud0VBTEtNQkFBQUFBQUE5QUFBQVFCQVFRaTV5WkdGMFlRQUFBQUFBQUFBQUFBQUkKQUFB
QWpxVUJBQUFBQUFBQUFBQUFBQUFBQUVBUVFFQXVjbVJoZEdFQUFBQUFBQUFBQUFBQUNBQUFBSmFs
QVFBQUFBQUFBQUFBQUFBQQpBQUJBRUVCQUxuSmtZWFJoQUFBQUFBQUFBQUFBQUFRQUFBQ2VwUUVB
QUFBQUFBQUFBQUFBQUFBQVFCQXdRQzVpYzNNQUFBQUFBQUFBCkFBQUFBQUFJQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUlBUU1NQXVZbk56QUFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFBQUFBQUEK
QUFBQUFBQUFBQUNBRUREQUxtUmhkR0VBQUFBQUFBQUFBQUFBQUJBQUFBQ2lwUUVBQUFBQUFBQUFB
QUFBQUFBQVFCQXd3QzVpYzNNQQpBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUlBUU1NQXVjbVJoZEdFQUFBQUFBQUFBQUFBQUJBQUFBTEtsCkFRQUFBQUFBQUFBQUFBQUFB
QUJBRURCQUxuSmtZWFJoQUFBQUFBQUFBQUFBQUFRQUFBQzJwUUVBQUFBQUFBQUFBQUFBQUFBQVFC
QXcKUUM1aWMzTUFBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBUU1N
QXVaR0YwWVFBQUFBQUFBQUFBQUFBQQpFQUFBQUxxbEFRQUFBQUFBQUFBQUFBQUFBQUJBRUREQUxt
Snpjd0FBQUFBQUFBQUFBQUFBQUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFnQkF3d0M1MFpY
aDBBQUFBQUFBQUFBQUFBQUNDQUFBQXlxVUJBRXltQVFBQUFBQUFBd0FBQUNBUVVHQXVaR1ZpZFdj
a1V3QUEKQUFBQUFBQUFoQUVBQUdxbUFRRHVwd0VBQUFBQUFBa0FBQUJBRUJCQ0xuSmtZWFJoQUFB
QUFBQUFBQUFBQUFnQUFBQklxQUVBQUFBQQpBQUFBQUFBQUFBQUFRQkJBUUM1MFpYaDBBQUFBQUFB
QUFBQUFBQUF3QUFBQVVLZ0JBSUNvQVFBQUFBQUFBZ0FBQUNBUVVHQXVaR1ZpCmRXY2tVd0FBQUFB
QUFBQUFDQUVBQUpTb0FRQ2NxUUVBQUFBQUFBVUFBQUJBRUJCQ0xuUmxlSFFBQUFBQUFBQUFBQUFB
QU93RkFBRE8KcVFFQXVxOEJBQUFBQUFCTUFBQUFJQkJRWUM1a1pXSjFaeVJUQUFBQUFBQUFBQUJ3
QmdBQXNySUJBQ0s1QVFBQUFBQUFhd0FBQUVBUQpFRUl1WW5OekFBQUFBQUFBQUFBQUFBQUFCQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBRUREQUxtSnpjd0FBQUFBQUFBQUFBQUFBCkFBUUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFnQkF3d0M1aWMzTUFBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFB
QUFBQUFBQUFBQUEKQUFBQUFJQVFNTUF1WkdGMFlRQUFBQUFBQUFBQUFBQUFFQUFBQUZDOUFRQUFB
QUFBQUFBQUFBQUFBQUJBRUREQUxtSnpjd0FBQUFBQQpBQUFBQUFBQUFBUUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFnQkF3d0M1a1lYUmhBQUFBQUFBQUFBQUFBQUFRQUFBQVlMMEJBQUFBCkFBQUFB
QUFBQUFBQUFFQVFNTUF1WW5OekFBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUNBRUREQUxuUmwKZUhRQUFBQUFBQUFBQUFBQUFLRUFBQUJ3dlFFQUViNEJBQUFBQUFBSEFB
QUFJQkJRWUM1a1pXSjFaeVJUQUFBQUFBQUFBQUNBQVFBQQpWNzRCQU5lL0FRQUFBQUFBQ3dBQUFF
QVFFRUl1Y21SaGRHRUFBQUFBQUFBQUFBQUFDQUFBQUVYQUFRQUFBQUFBQUFBQUFBQUFBQUJBCkVF
QkFMbkprWVhSaEFBQUFBQUFBQUFBQUFBZ0FBQUJOd0FFQUFBQUFBQUFBQUFBQUFBQUFRQkJBUUM1
MFpYaDBBQUFBQUFBQUFBQUEKQUFEQ0F3QUFWY0FCQUJmRUFRQUFBQUFBSVFBQUFDQVFVR0F1WkdW
aWRXY2tVd0FBQUFBQUFBQUFxQU1BQUdIRkFRQUp5UUVBQUFBQQpBREVBQUFCQUVCQkNMbkprWVhS
aEFBQUFBQUFBQUFBQUFBUUFBQUR6eWdFQUFBQUFBQUFBQUFBQUFBQUFRQkF3UUM1aWMzTUFBQUFB
CkFBQUFBQUFBQUFBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQVFNTUF1Y21SaGRHRUFBQUFB
QUFBQUFBQUFCQUFBQVBmS0FRQUEKQUFBQUFBQUFBQUFBQUFCQUVEQkFMbUp6Y3dBQUFBQUFBQUFB
QUFBQUFBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQkF3d0M1MApaWGgwQUFBQUFBQUFBQUFB
QUFCWEJBQUErOG9CQUZMUEFRQUFBQUFBT0FBQUFDQVFVR0F1WkdWaWRXY2tVd0FBQUFBQUFBQUFv
QVFBCkFJTFJBUUFpMWdFQUFBQUFBRWNBQUFCQUVCQkNMbUp6Y3dBQUFBQUFBQUFBQUFBQUFBUUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEKZ0JBd3dDNXlaR0YwWVFBQUFBQUFBQUFBQUFBRUFBQUE2
TmdCQUFBQUFBQUFBQUFBQUFBQUFFQVFNRUF1WW5OekFBQUFBQUFBQUFBQQpBQUFBQkFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFDQUVEREFMbkprWVhSaEFBQUFBQUFBQUFBQUFBUUFBQURzMkFFQUFB
QUFBQUFBCkFBQUFBQUFBUUJBd1FDNWljM01BQUFBQUFBQUFBQUFBQUFBRUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFJQVFNTUF1WkdGMFlRQUEKQUFBQUFBQUFBQUFBRUFBQUFQRFlBUUFBQUFBQUFB
QUFBQUFBQUFCQUVEREFMbUp6Y3dBQUFBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQQpBQUFBQUFBQUFB
QUFBQUFBZ0JBd3dDNTBaWGgwQUFBQUFBQUFBQUFBQUFDb0FnQUFBTmtCQUtqYkFRQUFBQUFBS0FB
QUFDQVFVR0F1ClpHVmlkV2NrVXdBQUFBQUFBQUFBWkFNQUFEamRBUUNjNEFFQUFBQUFBQzhBQUFC
QUVCQkNMbkprWVhSaEFBQUFBQUFBQUFBQUFBUUEKQUFCeTRnRUFBQUFBQUFBQUFBQUFBQUFBUUJB
d1FDNWljM01BQUFBQUFBQUFBQUFBQUFBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQQpBSUFRTU1B
dVluTnpBQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQUVEREFMbVJo
ZEdFQUFBQUFBQUFBCkFBQUFBQmdBQUFCMjRnRUFBQUFBQUFBQUFBQUFBQUFBUUJBd3dDNWljM01B
QUFBQUFBQUFBQUFBQUFBRUFBQUFBQUFBQUFBQUFBQUEKQUFBQUFBQUFBSUFRTU1BdWRHVjRkQUFB
QUFBQUFBQUFBQUFBZ2dBQUFJN2lBUUFRNHdFQUFBQUFBQU1BQUFBZ0VGQmdMbVJsWW5WbgpKRk1B
QUFBQUFBQUFBSVFCQUFBdTR3RUFzdVFCQUFBQUFBQUpBQUFBUUJBUVFpNTBaWGgwQUFBQUFBQUFB
QUFBQUFBd0FBQUFET1VCCkFEemxBUUFBQUFBQUFnQUFBQ0FRVUdBdVpHVmlkV2NrVXdBQUFBQUFB
QUFBQkFFQUFGRGxBUUJVNWdFQUFBQUFBQVVBQUFCQUVCQkMKTG5SbGVIUUFBQUFBQUFBQUFBQUFB
QXdGQUFDRzVnRUFrdXNCQUFBQUFBQkVBQUFBSUJCUVlDNWtaV0oxWnlSVEFBQUFBQUFBQUFCOApC
UUFBT3U0QkFMYnpBUUFBQUFBQVRRQUFBRUFRRUVJdVluTnpBQUFBQUFBQUFBQUFBQUFBQkFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBCkFBQ0FFRERBTG1KemN3QUFBQUFBQUFBQUFBQUFBQVFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBZ0JBd3dDNXlaR0YwWVFBQUFBQUEKQUFBQUFBQUVBQUFBdVBZQkFB
QUFBQUFBQUFBQUFBQUFBRUFRTUVBdVluTnpBQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUFBQUFB
QQpBQUFBQUFBQUFBQ0FFRERBTG1KemN3QUFBQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBZ0JBd3dDNWtZWFJoCkFBQUFBQUFBQUFBQUFBQVFBQUFBdlBZQkFBQUFBQUFBQUFB
QUFBQUFBRUFRTU1BdVluTnpBQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUEKQUFBQUFBQUFBQUFBQUFB
QUFBQ0FFRERBTG1SaGRHRUFBQUFBQUFBQUFBQUFBQkFBQUFETTlnRUFBQUFBQUFBQUFBQUFBQUFB
UUJBdwp3QzVpYzNNQUFBQUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFR
TU1BdWRHVjRkQUFBQUFBQUFBQUFBQUFBClB3QUFBTnoyQVFBYjl3RUFBQUFBQUFJQUFBQWdFRkJn
TG1SbFluVm5KRk1BQUFBQUFBQUFBQ0FCQUFBdjl3RUFUL2dCQUFBQUFBQUYKQUFBQVFCQVFRaTUw
WlhoMEFBQUFBQUFBQUFBQUFBQTlBd0FBZ2ZnQkFMNzdBUUFBQUFBQUt3QUFBQ0FRVUdBdVpHVmlk
V2NrVXdBQQpBQUFBQUFBQXZBTUFBR3o5QVFBb0FRSUFBQUFBQURFQUFBQkFFQkJDTG5Ka1lYUmhB
QUFBQUFBQUFBQUFBQVFBQUFBU0F3SUFBQUFBCkFBQUFBQUFBQUFBQVFCQXdRQzVpYzNNQUFBQUFB
QUFBQUFBQUFBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFRTU1BdVluTnoKQUFBQUFBQUFB
QUFBQUFBQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FFRERBTG1SaGRHRUFBQUFBQUFBQUFB
QUFBQkFBQUFBVwpBd0lBQUFBQUFBQUFBQUFBQUFBQVFCQXd3QzVpYzNNQUFBQUFBQUFBQUFBQUFB
QUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFRCk1NQXVkR1Y0ZEFBQUFBQUFBQUFBQUFBQUNR
QUFBQ1lEQWdBdkF3SUFBQUFBQUFFQUFBQWdFRkJnTG1SbFluVm5KRk1BQUFBQUFBQUEKQU5BQUFB
QTVBd0lBQ1FRQ0FBQUFBQUFEQUFBQVFCQVFRaTV5WkdGMFlRQUFBQUFBQUFBQUFBQVlBQUFBSndR
Q0FEOEVBZ0FBQUFBQQpCZ0FBQUVBUU1FQXVkR1Y0ZEFBQUFBQUFBQUFBQUFBQUNRQUFBSHNFQWdD
RUJBSUFBQUFBQUFFQUFBQWdFRkJnTG1SbFluVm5KRk1BCkFBQUFBQUFBQU9nQUFBQ09CQUlBZGdV
Q0FBQUFBQUFEQUFBQVFCQVFRaTV5WkdGMFlRQUFBQUFBQUFBQUFBQVlBQUFBbEFVQ0FLd0YKQWdB
QUFBQUFCZ0FBQUVBUU1FQXVkR1Y0ZEFBQUFBQUFBQUFBQUFBQUNRQUFBT2dGQWdEeEJRSUFBQUFB
QUFFQUFBQWdFRkJnTG1SbApZblZuSkZNQUFBQUFBQUFBQU9RQUFBRDdCUUlBM3dZQ0FBQUFBQUFE
QUFBQVFCQVFRaTV5WkdGMFlRQUFBQUFBQUFBQUFBQVlBQUFBCi9RWUNBQlVIQWdBQUFBQUFCZ0FB
QUVBUU1FQXVkR1Y0ZEFBQUFBQUFBQUFBQUFBQUNRQUFBRkVIQWdCYUJ3SUFBQUFBQUFFQUFBQWcK
RUZCZ0xtUmxZblZuSkZNQUFBQUFBQUFBQU1nQUFBQmtCd0lBTEFnQ0FBQUFBQUFEQUFBQVFCQVFR
aTV5WkdGMFlRQUFBQUFBQUFBQQpBQUFZQUFBQVNnZ0NBR0lJQWdBQUFBQUFCZ0FBQUVBUU1FQXVk
R1Y0ZEFBQUFBQUFBQUFBQUFBQUNRQUFBSjRJQWdDbkNBSUFBQUFBCkFBRUFBQUFnRUZCZ0xtUmxZ
blZuSkZNQUFBQUFBQUFBQU9BQUFBQ3hDQUlBa1FrQ0FBQUFBQUFEQUFBQVFCQVFRaTV5WkdGMFlR
QUEKQUFBQUFBQUFBQUFZQUFBQXJ3a0NBTWNKQWdBQUFBQUFCZ0FBQUVBUU1FQXVkR1Y0ZEFBQUFB
QUFBQUFBQUFBQUJ3QUFBQU1LQWdBSwpDZ0lBQUFBQUFBRUFBQUFnRUZCZ0xtUmxZblZuSkZNQUFB
QUFBQUFBQU5BQUFBQVVDZ0lBNUFvQ0FBQUFBQUFEQUFBQVFCQVFRaTUwClpYaDBBQUFBQUFBQUFB
QUFBQUFIQUFBQUFnc0NBQWtMQWdBQUFBQUFBUUFBQUNBUVVHQXVaR1ZpZFdja1V3QUFBQUFBQUFB
QTZBQUEKQUJNTEFnRDdDd0lBQUFBQUFBTUFBQUJBRUJCQ0xuUmxlSFFBQUFBQUFBQUFBQUFBQUFj
QUFBQVpEQUlBSUF3Q0FBQUFBQUFCQUFBQQpJQkJRWUM1a1pXSjFaeVJUQUFBQUFBQUFBQURrQUFB
QUtnd0NBQTROQWdBQUFBQUFBd0FBQUVBUUVFSXVkR1Y0ZEFBQUFBQUFBQUFBCkFBQUFCd0FBQUN3
TkFnQXpEUUlBQUFBQUFBRUFBQUFnRUZCZ0xtUmxZblZuSkZNQUFBQUFBQUFBQU1nQUFBQTlEUUlB
QlE0Q0FBQUEKQUFBREFBQUFRQkFRUWk1MFpYaDBBQUFBQUFBQUFBQUFBQUFIQUFBQUl3NENBQ29P
QWdBQUFBQUFBUUFBQUNBUVVHQXVaR1ZpZFdjawpVd0FBQUFBQUFBQUE0QUFBQURRT0FnQVVEd0lB
QUFBQUFBTUFBQUJBRUJCQ0xuUmxlSFFBQUFBQUFBQUFBQUFBQUFrQUFBQXlEd0lBCk93OENBQUFB
QUFBQkFBQUFJQkJRWUM1a1pXSjFaeVJUQUFBQUFBQUFBQURBQUFBQVJROENBQVVRQWdBQUFBQUFB
d0FBQUVBUUVFSXUKY21SaGRHRUFBQUFBQUFBQUFBQUFHQUFBQUNNUUFnQTdFQUlBQUFBQUFBWUFB
QUJBRURCQUxuUmxlSFFBQUFBQUFBQUFBQUFBQUFjQQpBQUIzRUFJQWZoQUNBQUFBQUFBQkFBQUFJ
QkJRWUM1a1pXSjFaeVJUQUFBQUFBQUFBQURBQUFBQWlCQUNBRWdSQWdBQUFBQUFBd0FBCkFFQVFF
RUl1ZEdWNGRBQUFBQUFBQUFBQUFBQUFId0FBQUdZUkFnQ0ZFUUlBQUFBQUFBSUFBQUFnRUZCZ0xt
UmxZblZuSkZNQUFBQUEKQUFBQUFPUUFBQUNaRVFJQWZSSUNBQUFBQUFBREFBQUFRQkFRUWk1MFpY
aDBBQUFBQUFBQUFBQUFBQUFRQUFBQW14SUNBS3NTQWdBQQpBQUFBQVFBQUFDQVFVR0F1WkdWaWRX
Y2tVd0FBQUFBQUFBQUE4QUFBQUxVU0FnQ2xFd0lBQUFBQUFBVUFBQUJBRUJCQ0xuSmtZWFJoCkFB
QUFBQUFBQUFBQUFDUUFBQURYRXdJQSt4TUNBQUFBQUFBSkFBQUFRQkF3UUM1MFpYaDBBQUFBQUFB
QUFBQUFBQUFEQUFBQVZSUUMKQUFBQUFBQUFBQUFBQUFBQUFDQVFVR0F1WkdWaWRXY2tVd0FBQUFB
QUFBQUE2QUFBQUZnVUFnQkFGUUlBQUFBQUFBVUFBQUJBRUJCQwpMblJsZUhRQUFBQUFBQUFBQUFB
QUFCOEFBQUJ5RlFJQWtSVUNBQUFBQUFBQ0FBQUFJQkJRWUM1a1pXSjFaeVJUQUFBQUFBQUFBQURv
CkFBQUFwUlVDQUkwV0FnQUFBQUFBQXdBQUFFQVFFRUl1ZEdWNGRBQUFBQUFBQUFBQUFBQUFhQUFB
QUtzV0FnQVRGd0lBQUFBQUFBb0EKQUFBZ0VGQmdMbVJsWW5WbkpGTUFBQUFBQUFBQUFJQUJBQUIz
RndJQTl4Z0NBQUFBQUFBUEFBQUFRQkFRUWk1aWMzTUFBQUFBQUFBQQpBQUFBQUFBRUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFJQVFNTUF1ZEdWNGRBQUFBQUFBQUFBQUFBQUFKQUFBQUkwWkFnQ3hH
UUlBCkFBQUFBQVVBQUFBZ0VGQmdMbVJsWW5WbkpGTUFBQUFBQUFBQUFOd0FBQURqR1FJQXZ4b0NB
QUFBQUFBSEFBQUFRQkFRUWk1aWMzTUEKQUFBQUFBQUFBQUFBQUFBRUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFJQVFNTUF1WW5OekFBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQQpBQUFBQUFBQUFBQUFB
QUFBQUFDQUVEREFMblJsZUhRQUFBQUFBQUFBQUFBQUFHZ0FBQUFGR3dJQWJSc0NBQUFBQUFBS0FB
QUFJQkJRCllDNWtaV0oxWnlSVEFBQUFBQUFBQUFDQUFRQUEwUnNDQUZFZEFnQUFBQUFBRHdBQUFF
QVFFRUl1WW5OekFBQUFBQUFBQUFBQUFBQUEKQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQUVE
REFMblJsZUhRQUFBQUFBQUFBQUFBQUFDUUFBQURuSFFJQUN4NENBQUFBQUFBRgpBQUFBSUJCUVlD
NWtaV0oxWnlSVEFBQUFBQUFBQUFEY0FBQUFQUjRDQUJrZkFnQUFBQUFBQndBQUFFQVFFRUl1WW5O
ekFBQUFBQUFBCkFBQUFBQUFBQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQUVEREFMbUp6Y3dB
QUFBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQUFBQUEKQUFBQUFBQUFBQUFBZ0JBd3dDNTBaWGgwQUFB
QUFBQUFBQUFBQUFCb0FBQUFYeDhDQU1jZkFnQUFBQUFBQ2dBQUFDQVFVR0F1WkdWaQpkV2NrVXdB
QUFBQUFBQUFBZ0FFQUFDc2dBZ0NySVFJQUFBQUFBQThBQUFCQUVCQkNMbUp6Y3dBQUFBQUFBQUFB
QUFBQUFBUUFBQUFBCkFBQUFBQUFBQUFBQUFBQUFBQUFBZ0JBd3dDNTBaWGgwQUFBQUFBQUFBQUFB
QUFBa0FBQUFRU0lDQUdVaUFnQUFBQUFBQlFBQUFDQVEKVUdBdVpHVmlkV2NrVXdBQUFBQUFBQUFB
M0FBQUFKY2lBZ0J6SXdJQUFBQUFBQWNBQUFCQUVCQkNMbUp6Y3dBQUFBQUFBQUFBQUFBQQpBQVFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0JBd3dDNWljM01BQUFBQUFBQUFBQUFBQUFBRUFBQUFB
QUFBQUFBQUFBQUFBQUFBCkFBQUFBSUFRTU1BdWRHVjRkQUFBQUFBQUFBQUFBQUFBYUFBQUFMa2pB
Z0FoSkFJQUFBQUFBQW9BQUFBZ0VGQmdMbVJsWW5WbkpGTUEKQUFBQUFBQUFBSHdCQUFDRkpBSUFB
U1lDQUFBQUFBQVBBQUFBUUJBUVFpNWljM01BQUFBQUFBQUFBQUFBQUFBRUFBQUFBQUFBQUFBQQpB
QUFBQUFBQUFBQUFBSUFRTU1BdWRHVjRkQUFBQUFBQUFBQUFBQUFBSkFBQUFKY21BZ0M3SmdJQUFB
QUFBQVVBQUFBZ0VGQmdMbVJsClluVm5KRk1BQUFBQUFBQUFBTmdBQUFEdEpnSUF4U2NDQUFBQUFB
QUhBQUFBUUJBUVFpNWljM01BQUFBQUFBQUFBQUFBQUFBRUFBQUEKQUFBQUFBQUFBQUFBQUFBQUFB
QUFBSUFRTU1BdVluTnpBQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFD
QQpFRERBTG5SbGVIUUFBQUFBQUFBQUFBQUFBR2dBQUFBTEtBSUFjeWdDQUFBQUFBQUtBQUFBSUJC
UVlDNWtaV0oxWnlSVEFBQUFBQUFBCkFBQjhBUUFBMXlnQ0FGTXFBZ0FBQUFBQUR3QUFBRUFRRUVJ
dVluTnpBQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUFBQUFBQUFBQUEKQUFBQUFBQ0FFRERBTG5S
bGVIUUFBQUFBQUFBQUFBQUFBQ1FBQUFEcEtnSUFEU3NDQUFBQUFBQUZBQUFBSUJCUVlDNWtaV0ox
WnlSVApBQUFBQUFBQUFBRFlBQUFBUHlzQ0FCY3NBZ0FBQUFBQUJ3QUFBRUFRRUVJdVluTnpBQUFB
QUFBQUFBQUFBQUFBQkFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFBQ0FFRERBTG1KemN3QUFBQUFB
QUFBQUFBQUFBQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0JBd3dDNTAKWlhoMEFBQUFBQUFB
QUFBQUFBQm9BQUFBWFN3Q0FNVXNBZ0FBQUFBQUNnQUFBQ0FRVUdBdVpHVmlkV2NrVXdBQUFBQUFB
QUFBZ0FFQQpBQ2t0QWdDcExnSUFBQUFBQUE4QUFBQkFFQkJDTG1KemN3QUFBQUFBQUFBQUFBQUFB
QVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCmdCQXd3QzUwWlhoMEFBQUFBQUFBQUFBQUFBQWtB
QUFBUHk4Q0FHTXZBZ0FBQUFBQUJRQUFBQ0FRVUdBdVpHVmlkV2NrVXdBQUFBQUEKQUFBQTNBQUFB
SlV2QWdCeE1BSUFBQUFBQUFjQUFBQkFFQkJDTG1KemN3QUFBQUFBQUFBQUFBQUFBQVFBQUFBQUFB
QUFBQUFBQUFBQQpBQUFBQUFBQWdCQXd3QzVpYzNNQUFBQUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBSUFRTU1BdWRHVjRkQUFBCkFBQUFBQUFBQUFBQWFBQUFBTGN3QWdBZk1R
SUFBQUFBQUFvQUFBQWdFRkJnTG1SbFluVm5KRk1BQUFBQUFBQUFBSUFCQUFDRE1RSUEKQXpNQ0FB
QUFBQUFQQUFBQVFCQVFRaTVpYzNNQUFBQUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBSUFRTU1BdQpkR1Y0ZEFBQUFBQUFBQUFBQUFBQUpBQUFBSmt6QWdDOU13SUFBQUFBQUFV
QUFBQWdFRkJnTG1SbFluVm5KRk1BQUFBQUFBQUFBTndBCkFBRHZNd0lBeXpRQ0FBQUFBQUFIQUFB
QVFCQVFRaTVpYzNNQUFBQUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEKQUlB
UU1NQXVZbk56QUFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FFRERB
TG5SbGVIUUFBQUFBQUFBQQpBQUFBQUdnQUFBQVJOUUlBZVRVQ0FBQUFBQUFLQUFBQUlCQlFZQzVr
WldKMVp5UlRBQUFBQUFBQUFBQjhBUUFBM1RVQ0FGazNBZ0FBCkFBQUFEd0FBQUVBUUVFSXVZbk56
QUFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FFRERBTG5SbGVIUUEK
QUFBQUFBQUFBQUFBQUNRQUFBRHZOd0lBRXpnQ0FBQUFBQUFGQUFBQUlCQlFZQzVrWldKMVp5UlRB
QUFBQUFBQUFBRFVBQUFBUlRnQwpBQms1QWdBQUFBQUFCd0FBQUVBUUVFSXVZbk56QUFBQUFBQUFB
QUFBQUFBQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FFRERBCkxtSnpjd0FBQUFBQUFBQUFB
QUFBQUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdCQXd3QzUwWlhoMEFBQUFBQUFBQUFBQUFB
QmsKQVFBQVh6a0NBTU02QWdBQUFBQUFOZ0FBQUNBUVVHQXVaR1ZpZFdja1V3QUFBQUFBQUFBQTlB
RUFBTjg4QWdEVFBnSUFBQUFBQUJjQQpBQUJBRUJCQ0xuUmxlSFFBQUFBQUFBQUFBQUFBQVBJQUFB
QzVQd0lBcTBBQ0FBQUFBQUFLQUFBQUlCQlFZQzVrWldKMVp5UlRBQUFBCkFBQUFBQUJVQWdBQUQw
RUNBR05EQWdBQUFBQUFGd0FBQUVBUUVFSXVkR1Y0ZEFBQUFBQUFBQUFBQUFBQVJBQUFBRWxFQWdD
TlJBSUEKQUFBQUFBUUFBQUFnRUZCZ0xtUmxZblZuSkZNQUFBQUFBQUFBQURnQkFBQzFSQUlBN1VV
Q0FBQUFBQUFIQUFBQVFCQVFRaTUwWlhoMApBQUFBQUFBQUFBQUFBQUIrQVFBQU0wWUNBTEZIQWdB
QUFBQUFGUUFBQUNBUVVHQXVaR1ZpZFdja1V3QUFBQUFBQUFBQXVBSUFBSU5JCkFnQTdTd0lBQUFB
QUFDRUFBQUJBRUJCQ0xtSnpjd0FBQUFBQUFBQUFBQUFBQUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQWdCQXcKd0M1eVpHRjBZUUFBQUFBQUFBQUFBQUFFQUFBQWhVd0NBQUFBQUFBQUFBQUFBQUFB
QUVBUU1FQXVZbk56QUFBQUFBQUFBQUFBQUFBQQpCQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNB
RUREQUxuUmxlSFFBQUFBQUFBQUFBQUFBQUJBQUFBQ0pUQUlBbVV3Q0FBQUFBQUFCCkFBQUFJQkJR
WUM1a1pXSjFaeVJUQUFBQUFBQUFBQURNQUFBQW8wd0NBRzlOQWdBQUFBQUFBd0FBQUVBUUVFSXVj
bVJoZEdFQUFBQUEKQUFBQUFBQUFKQUFBQUkxTkFnQ3hUUUlBQUFBQUFBa0FBQUJBRURCQUxuUmxl
SFFBQUFBQUFBQUFBQUFBQUFNQUFBQUxUZ0lBQUFBQQpBQUFBQUFBQUFBQUFJQkJRWUM1a1pXSjFa
eVJUQUFBQUFBQUFBQURzQUFBQURrNENBUHBPQWdBQUFBQUFCUUFBQUVBUUVFSXVkR1Y0CmRBQUFB
QUFBQUFBQUFBQUFCd0FBQUN4UEFnQXpUd0lBQUFBQUFBRUFBQUFnRUZCZ0xtUmxZblZuSkZNQUFB
QUFBQUFBQU13QUFBQTkKVHdJQUNWQUNBQUFBQUFBREFBQUFRQkFRUWk1MFpYaDBBQUFBQUFBQUFB
QUFBQUFmQUFBQUoxQUNBRVpRQWdBQUFBQUFBZ0FBQUNBUQpVR0F1WkdWaWRXY2tVd0FBQUFBQUFB
QUE3QUFBQUZwUUFnQkdVUUlBQUFBQUFBTUFBQUJBRUJCQ0xuUmxlSFFBQUFBQUFBQUFBQUFBCkFC
OEFBQUJrVVFJQWcxRUNBQUFBQUFBQ0FBQUFJQkJRWUM1a1pXSjFaeVJUQUFBQUFBQUFBQUR3QUFB
QWwxRUNBSWRTQWdBQUFBQUEKQXdBQUFFQVFFRUl1ZEdWNGRBQUFBQUFBQUFBQUFBQUFId0FBQUtW
U0FnREVVZ0lBQUFBQUFBSUFBQUFnRUZCZ0xtUmxZblZuSkZNQQpBQUFBQUFBQUFQd0FBQURZVWdJ
QTFGTUNBQUFBQUFBREFBQUFRQkFRUWk1MFpYaDBBQUFBQUFBQUFBQUFBQUFmQUFBQThsTUNBQkZV
CkFnQUFBQUFBQWdBQUFDQVFVR0F1WkdWaWRXY2tVd0FBQUFBQUFBQUErQUFBQUNWVUFnQWRWUUlB
QUFBQUFBTUFBQUJBRUJCQ0xuUmwKZUhRQUFBQUFBQUFBQUFBQUFCOEFBQUE3VlFJQVdsVUNBQUFB
QUFBQ0FBQUFJQkJRWUM1a1pXSjFaeVJUQUFBQUFBQUFBQURvQUFBQQpibFVDQUZaV0FnQUFBQUFB
QXdBQUFFQVFFRUl1ZEdWNGRBQUFBQUFBQUFBQUFBQUFId0FBQUhSV0FnQ1RWZ0lBQUFBQUFBSUFB
QUFnCkVGQmdMbVJsWW5WbkpGTUFBQUFBQUFBQUFQUUFBQUNuVmdJQW0xY0NBQUFBQUFBREFBQUFR
QkFRUWk1MFpYaDBBQUFBQUFBQUFBQUEKQUFBSkFBQUF1VmNDQU1KWEFnQUFBQUFBQVFBQUFDQVFV
R0F1WkdWaWRXY2tVd0FBQUFBQUFBQUF6QUFBQU14WEFnQ1lXQUlBQUFBQQpBQU1BQUFCQUVCQkNM
bkprWVhSaEFBQUFBQUFBQUFBQUFCZ0FBQUMyV0FJQXpsZ0NBQUFBQUFBR0FBQUFRQkF3UUM1MFpY
aDBBQUFBCkFBQUFBQUFBQUFBSEFBQUFDbGtDQUJGWkFnQUFBQUFBQVFBQUFDQVFVR0F1WkdWaWRX
Y2tVd0FBQUFBQUFBQUF6QUFBQUJ0WkFnRG4KV1FJQUFBQUFBQU1BQUFCQUVCQkNMblJsZUhRQUFB
QUFBQUFBQUFBQUFCOEFBQUFGV2dJQUpGb0NBQUFBQUFBQ0FBQUFJQkJRWUM1awpaV0oxWnlSVEFB
QUFBQUFBQUFEc0FBQUFPRm9DQUNSYkFnQUFBQUFBQXdBQUFFQVFFRUl1ZEdWNGRBQUFBQUFBQUFB
QUFBQUFJUUlBCkFFSmJBZ0JqWFFJQUFBQUFBRHNBQUFBZ0VGQmdMbVJsWW5WbkpGTUFBQUFBQUFB
QUFLZ0RBQUN4WHdJQVdXTUNBQUFBQUFBbEFBQUEKUUJBUVFpNWljM01BQUFBQUFBQUFBQUFBQUFB
RUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQVFNTUF1WW5OekFBQUFBQUFBQUFBQQpBQUFBQkFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQUVEREFMbUp6Y3dBQUFBQUFBQUFBQUFBQUFBUUFBQUFB
QUFBQUFBQUFBQUFBCkFBQUFBQUFBZ0JBd3dDNWljM01BQUFBQUFBQUFBQUFBQUFBRUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFJQVFNTUF1WW5OekFBQUEKQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFDQUVEREFMbUp6Y3dBQUFBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQQpBQUFB
QUFBQUFBQUFBQUFBZ0JBd3dDNWljM01BQUFBQUFBQUFBQUFBQUFBRUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFJQVFNTUF1ClluTnpBQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFDQUVEREFMblJsZUhRQUFBQUFBQUFBQUFBQUFEc0EKQUFETFpBSUFCbVVDQUFBQUFBQUhB
QUFBSUJCUVlDNWtaV0oxWnlSVEFBQUFBQUFBQUFBa0FRQUFUR1VDQUhCbUFnQUFBQUFBQndBQQpB
RUFRRUVJdVluTnpBQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQUVE
REFMbUp6Y3dBQUFBQUFBQUFBCkFBQUFBQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0JBd3dD
NWtaV0oxWnlSVEFBQUFBQUFBQUFBZ0FBQUF0bVlDQU5abUFnQUEKQUFBQUFnQUFBRUFRRUVJdVpH
VmlkV2NrVXdBQUFBQUFBQUFBSUFBQUFPcG1BZ0FLWndJQUFBQUFBQUlBQUFCQUVCQkNMbVJsWW5W
bgpKRk1BQUFBQUFBQUFBQ0FBQUFBZVp3SUFQbWNDQUFBQUFBQUNBQUFBUUJBUVFpNWtaV0oxWnlS
VEFBQUFBQUFBQUFBZ0FBQUFVbWNDCkFISm5BZ0FBQUFBQUFnQUFBRUFRRUVJdVpHVmlkV2NrVXdB
QUFBQUFBQUFBSUFBQUFJWm5BZ0NtWndJQUFBQUFBQUlBQUFCQUVCQkMKTG1SbFluVm5KRk1BQUFB
QUFBQUFBQ0FBQUFDNlp3SUEybWNDQUFBQUFBQUNBQUFBUUJBUVFpNWtaV0oxWnlSVEFBQUFBQUFB
QUFBZwpBQUFBN21jQ0FBNW9BZ0FBQUFBQUFnQUFBRUFRRUVJdVpHVmlkV2NrVXdBQUFBQUFBQUFB
SUFBQUFDSm9BZ0JDYUFJQUFBQUFBQUlBCkFBQkFFQkJDTG1SbFluVm5KRk1BQUFBQUFBQUFBQ0FB
QUFCV2FBSUFkbWdDQUFBQUFBQUNBQUFBUUJBUVFpNWtaV0oxWnlSVEFBQUEKQUFBQUFBQWdBQUFB
aW1nQ0FLcG9BZ0FBQUFBQUFnQUFBRUFRRUVJdVpHVmlkV2NrVXdBQUFBQUFBQUFBSUFBQUFMNW9B
Z0RlYUFJQQpBQUFBQUFJQUFBQkFFQkJDTG1SbFluVm5KRk1BQUFBQUFBQUFBQ0FBQUFEeWFBSUFF
bWtDQUFBQUFBQUNBQUFBUUJBUVFpNWtaV0oxClp5UlRBQUFBQUFBQUFBQWdBQUFBSm1rQ0FFWnBB
Z0FBQUFBQUFnQUFBRUFRRUVJdVpHVmlkV2NrVXdBQUFBQUFBQUFBSUFBQUFGcHAKQWdCNmFRSUFB
QUFBQUFJQUFBQkFFQkJDTG1SbFluVm5KRk1BQUFBQUFBQUFBQ0FBQUFDT2FRSUFybWtDQUFBQUFB
QUNBQUFBUUJBUQpRaTVrWldKMVp5UlRBQUFBQUFBQUFBQWdBQUFBd21rQ0FPSnBBZ0FBQUFBQUFn
QUFBRUFRRUVJdVpHVmlkV2NrVXdBQUFBQUFBQUFBCklBQUFBUFpwQWdBV2FnSUFBQUFBQUFJQUFB
QkFFQkJDTG1SbFluVm5KRk1BQUFBQUFBQUFBQ0FBQUFBcWFnSUFTbW9DQUFBQUFBQUMKQUFBQVFC
QVFRaTVrWldKMVp5UlRBQUFBQUFBQUFBQWdBQUFBWG1vQ0FINXFBZ0FBQUFBQUFnQUFBRUFRRUVJ
dVpHVmlkV2NrVXdBQQpBQUFBQUFBQUlBQUFBSkpxQWdDeWFnSUFBQUFBQUFJQUFBQkFFQkJDTG1S
bFluVm5KRk1BQUFBQUFBQUFBQ0FBQUFER2FnSUE1bW9DCkFBQUFBQUFDQUFBQVFCQVFRaTVrWldK
MVp5UlRBQUFBQUFBQUFBQWdBQUFBK21vQ0FCcHJBZ0FBQUFBQUFnQUFBRUFRRUVJdVpHVmkKZFdj
a1V3QUFBQUFBQUFBQUlBQUFBQzVyQWdCT2F3SUFBQUFBQUFJQUFBQkFFQkJDTG1SbFluVm5KRlFB
QUFBQUFBQUFBR1FBQUFCaQphd0lBQUFBQUFBQUFBQUFBQUFBQVFBQVFRaUFnSUM5dFlXNXBabVZ6
ZEdSbGNHVnVaR1Z1WTNrNkluUjVjR1U5SjNkcGJqTXlKeUJ1CllXMWxQU2ROYVdOeWIzTnZablF1
VmtNNE1DNURVbFFuSUhabGNuTnBiMjQ5SnpndU1DNDFNRGN5Tnk0ME1EVXpKeUJ3Y205alpYTnoK
YjNKQmNtTm9hWFJsWTNSMWNtVTlKM2c0TmljZ2NIVmliR2xqUzJWNVZHOXJaVzQ5SnpGbVl6aGlN
Mkk1WVRGbE1UaGxNMkluSWlBdgpSRVZHUVZWTVZFeEpRam9pVFZOV1ExSlVJaUF2UkVWR1FWVk1W
RXhKUWpvaVQweEVUa0ZOUlZNaUlBUUFBQUR4QUFBQWp3Y0FBRjBBCkFSRUFBQUFBUXpwY1kzbG5k
Mmx1WEdodmJXVmNZMjFoY25KcGJseFhaV0pMYVhSQ2RXbHNaRnh2WW1wY1YyVmlTMmwwVTNsemRH
VnQKU1c1MFpYSm1ZV05sWEZKbGJHVmhjMlZjVTJoaGNtVmtUV1ZrYVdGVlNTNXZZbW9BTGdjV0VR
RWdBQUFIQUE0QUFBQW54ZzRBQUFBbgp4azFwWTNKdmMyOW1kQ0FvVWlrZ1QzQjBhVzFwZW1sdVp5
QkRiMjF3YVd4bGNnQmpkMlFBWXpwY1kzbG5kMmx1WEdodmJXVmNZMjFoCmNuSnBibHh6YjNWeVky
VmNjM1p1WEZkbFlrdHBkRnhKYm5SbGNtNWhiRnhYWldKTGFYUlRlWE4wWlcxSmJuUmxjbVpoWTJW
Y2QybHUKQUdOc0FFTTZYRkJ5YjJkeVlXMGdSbWxzWlhNZ0tIZzROaWxjVFdsamNtOXpiMlowSUZa
cGMzVmhiQ0JUZEhWa2FXOGdPRnhXUTF4aQphVzVjWTJ3dVpYaGxBR050WkFBdFR6SWdMVWxET2x4
amVXZDNhVzVjYUc5dFpWeGpiV0Z5Y21sdVhGZGxZa3RwZEVKMWFXeGtYRWx1ClkyeDFaR1VnTFVs
RE9seEJjSEJzWlVsdWRHVnlibUZzWEVsdVkyeDFaR1VnTFVsRE9seEJjSEJzWlVsdWRHVnlibUZz
WEVsdVkyeDEKWkdWY1EyOXlaVVp2ZFc1a1lYUnBiMjVjVDFOWVEyOXRjR0YwYVdKcGJHbDBlVWhs
WVdSbGNuTWdMVWxET2x4QmNIQnNaVWx1ZEdWeQpibUZzWEVsdVkyeDFaR1ZjUTI5eVpVWnZkVzVr
WVhScGIyNWNUMU5ZUTI5dGNHRjBhV0pwYkdsMGVVaGxZV1JsY25OY1IwNVZRMjl0CmNHRjBhV0pw
YkdsMGVTQXRTVU02WEdONVozZHBibHhvYjIxbFhHTnRZWEp5YVc1Y1YyVmlTMmwwUW5WcGJHUmNi
MkpxWEZkbFlrdHAKZEZONWMzUmxiVWx1ZEdWeVptRmpaVnhFWlhKcGRtVmtVMjkxY21ObGN5QXRT
V002WEdONVozZHBibHhvYjIxbFhHTnRZWEp5YVc1YwpjMjkxY21ObFhITjJibHhYWldKTGFYUmNT
VzUwWlhKdVlXeGNWMlZpUzJsMFUzbHpkR1Z0U1c1MFpYSm1ZV05sSUMxRVgxOVhTVTR6Ck1sOWZJ
QzFFWDB4SlFpQXRSRTVFUlVKVlJ5QXRSRmRKVGpNeUlDMUVYMWRKVGtSUFYxTWdMVVJYU1U1V1JW
STlNSGcxTURFZ0xVUmYKVjBsT016SmZWMGxPVGxROU1IZzFNREVnTFVSZlYwbE9NekpmU1VVOU1I
ZzJNREFnTFVSZlExSlVYMU5GUTFWU1JWOURVRkJmVDFaRgpVa3hQUVVSZlUxUkJUa1JCVWtSZlRr
Rk5SVk05TVNBdFJGOWZVRkpQUkZWRFZFbFBUbDlmUFRBZ0xVUmZTRUZUWDBWWVEwVlFWRWxQClRs
TTlNQ0F0UkVKVlNVeEVTVTVIWDFkbFlrdHBkRk41YzNSbGJVbHVkR1Z5Wm1GalpTQXRSRjlWVGts
RFQwUkZJQzFFVlU1SlEwOUUKUlNBdFJrUWdMVTFFSUMxSFVpMGdMVVp2UXpwY1kzbG5kMmx1WEdo
dmJXVmNZMjFoY25KcGJseFhaV0pMYVhSQ2RXbHNaRnh2WW1wYwpWMlZpUzJsMFUzbHpkR1Z0U1c1
MFpYSm1ZV05sWEZKbGJHVmhjMlZjSUMxR1pFTTZYR041WjNkcGJseG9iMjFsWEdOdFlYSnlhVzVj
ClYyVmlTMmwwUW5WcGJHUmNiR2xpWEZkbFlrdHBkRk41YzNSbGJVbHVkR1Z5Wm1GalpTNTJZemd3
TG5Ca1lpQXRWelFnTFZkWUlDMWoKSUMxYWFTQXRWRkFnTFhka05EQXhPQ0F0ZDJRME1EWTRJQzEz
WkRRd09Ua2dMWGRrTkRFd01DQXRkMlEwTVRJM0lDMTNaRFF4TXpnZwpMWGRrTkRFNE1DQXRkMlEw
TVRnNUlDMTNaRFF5TURFZ0xYZGtOREkwTkNBdGQyUTBNalV4SUMxM1pEUXlOelVnTFhka05ESTRP
Q0F0CmQyUTBNamt4SUMxM1pEUXpNRFVnTFhka05ETTBOQ0F0ZDJRME16VTFJQzEzWkRRek9Ea2dM
WGRrTkRVd015QXRkMlEwTlRBMUlDMTMKWkRRMU1UQWdMWGRrTkRVeE1pQXRkMlEwTmpFd0lDMTNa
RFEzTURZZ0xYZGtORGd3TUNBdGQyUTBPVFV4SUMxM1pEUTVOVElnTFhkawpORGs1TmlBdGQyUTJN
REV4SUMxM1pEWXdNekVnTFhka05qSXhNU0F0ZDJRMk1qUTJJQzEzWkRZeU5UVWdMWGRrTmpNNE55
QXRSMU1nCkxXNXZiRzluYnlBdFpYSnliM0p5WlhCdmNuUTZjWFZsZFdVZ0xVa2lRenBjVUhKdloz
SmhiU0JHYVd4bGN5QW9lRGcyS1Z4TmFXTnkKYjNOdlpuUWdSR2x5WldOMFdDQlRSRXNnS0VGMVoz
VnpkQ0F5TURBNUtWeEpibU5zZFdSbElpQXRTU0pET2x4UWNtOW5jbUZ0SUVacApiR1Z6SUNoNE9E
WXBYRTFwWTNKdmMyOW1kQ0JXYVhOMVlXd2dVM1IxWkdsdklEaGNWa05jYVc1amJIVmtaU0lnTFVr
aVF6cGNVSEp2ClozSmhiU0JHYVd4bGN5QW9lRGcyS1Z4TmFXTnliM052Wm5RZ1ZtbHpkV0ZzSUZO
MGRXUnBieUE0WEZaRFhHRjBiRzFtWTF4cGJtTnMKZFdSbElpQXRTU0pET2x4UWNtOW5jbUZ0SUVa
cGJHVnpJQ2g0T0RZcFhFMXBZM0p2YzI5bWRDQldhWE4xWVd3Z1UzUjFaR2x2SURoYwpWa05jVUd4
aGRHWnZjbTFUUkV0Y2FXNWpiSFZrWlNJZ0xVa2lRenBjVUhKdlozSmhiU0JHYVd4bGN5QW9lRGcy
S1Z4TmFXTnliM052ClpuUWdWbWx6ZFdGc0lGTjBkV1JwYnlBNFhGWkRYRkJzWVhSbWIzSnRVMFJM
WEdOdmJXMXZibHhwYm1Oc2RXUmxJaUF0U1NKRE9seFEKY205bmNtRnRJRVpwYkdWeklDaDRPRFlw
WEUxcFkzSnZjMjltZENCV2FYTjFZV3dnVTNSMVpHbHZJRGhjVTBSTFhIWXlMakJjYVc1agpiSFZr
WlNJZ0xWZ0FjM0pqQUM0dVhGTm9ZWEpsWkUxbFpHbGhWVWt1WTNCd0FIQmtZZ0JET2x4amVXZDNh
VzVjYUc5dFpWeGpiV0Z5CmNtbHVYRmRsWWt0cGRFSjFhV3hrWEd4cFlseFhaV0pMYVhSVGVYTjBa
VzFKYm5SbGNtWmhZMlV1ZG1NNE1DNXdaR0lBQUFEeEFBQUEKaXdnQUFDd0FCeEY4RWdBQUxRTk5a
V1JwWVVaaGMzUkdiM0ozWVhKa1NXMWhaMlZFWVhSaFRHVnVaM1JvWDNCdVp3QXpBQWNSZkJJQQpB
RkVEVFdWa2FXRkdZWE4wUm05eWQyRnlaRkJ5WlhOelpXUkpiV0ZuWlVSaGRHRk1aVzVuZEdoZmNH
NW5BQ3NBQnhGOEVnQUFlUU5OClpXUnBZVVoxYkd4V2IyeDFiV1ZKYldGblpVUmhkR0ZNWlc1bmRH
aGZjRzVuQURJQUJ4RjhFZ0FBdWdOTlpXUnBZVVoxYkd4V2IyeDEKYldWUWNtVnpjMlZrU1cxaFoy
VkVZWFJoVEdWdVozUm9YM0J1WndBbUFBY1JtQklBQUFBQWEwTkhVM1I1YkdWRWNtRjNUM0prWlhK
cApibWRUZEhsc1pVOXViSGtBSWdBSEVaZ1NBQUFCQUd0RFIxTjBlV3hsUkhKaGQwOXlaR1Z5YVc1
blFtVnNiM2NBS3dBSEVYd1NBQUJsCkEwMWxaR2xoUm5Wc2JITmpjbVZsYmtsdFlXZGxSR0YwWVV4
bGJtZDBhRjl3Ym1jQU1nQUhFWHdTQUFDTUEwMWxaR2xoUm5Wc2JITmoKY21WbGJsQnlaWE56WldS
SmJXRm5aVVJoZEdGTVpXNW5kR2hmY0c1bkFDVUFCeEY4RWdBQVJBTk5aV1JwWVUxMWRHVkpiV0Zu
WlVSaApkR0ZNWlc1bmRHaGZjRzVuQUN3QUJ4RjhFZ0FBZFFOTlpXUnBZVTExZEdWUWNtVnpjMlZr
U1cxaFoyVkVZWFJoVEdWdVozUm9YM0J1Clp3QW1BQWNSZkJJQUFBMERUV1ZrYVdGUVlYVnpaVWx0
WVdkbFJHRjBZVXhsYm1kMGFGOXdibWNBTFFBSEVYd1NBQUFsQTAxbFpHbGgKVUdGMWMyVlFjbVZ6
YzJWa1NXMWhaMlZFWVhSaFRHVnVaM1JvWDNCdVp3QWxBQWNSZkJJQUFEMERUV1ZrYVdGUWJHRjVT
VzFoWjJWRQpZWFJoVEdWdVozUm9YM0J1WndBc0FBY1JmQklBQUdRRFRXVmthV0ZRYkdGNVVISmxj
M05sWkVsdFlXZGxSR0YwWVV4bGJtZDBhRjl3CmJtY0FKd0FIRVh3U0FBQTFBMDFsWkdsaFVtVjNh
VzVrU1cxaFoyVkVZWFJoVEdWdVozUm9YM0J1WndBaEFBY1JtQmNBQUFBQWEwTkgKUm05amRYTlNh
VzVuVDNKa1pYSnBibWRPYjI1bEFDNEFCeEY4RWdBQVR3Tk5aV1JwWVZKbGQybHVaRkJ5WlhOelpX
UkpiV0ZuWlVSaApkR0ZNWlc1bmRHaGZjRzVuQURNQUJ4RjhFZ0FBQmc1TlpXUnBZVk5zYVdSbGNs
UnlZV05yVEdWbWRFTmhjRWx0WVdkbFJHRjBZVXhsCmJtZDBhRjl3Ym1jQUhRQUhFWllYQUFBQUFH
dERSMFp2WTNWelVtbHVaMVJwYm5SQ2JIVmxBRG9BQnhGOEVnQUFBUTVOWldScFlWTnMKYVdSbGNs
UnlZV05yVEdWbWRFTmhjRXh2WVdScGJtZEpiV0ZuWlVSaGRHRk1aVzVuZEdoZmNHNW5BRElBQnhG
OEVnQUFtZzFOWldScApZVk5zYVdSbGNsUnlZV05yVFdsa1pHeGxTVzFoWjJWRVlYUmhUR1Z1WjNS
b1gzQnVad0E1QUFjUmZCSUFBSllOVFdWa2FXRlRiR2xrClpYSlVjbUZqYTAxcFpHUnNaVXh2WVdS
cGJtZEpiV0ZuWlVSaGRHRk1aVzVuZEdoZmNHNW5BRFFBQnhGOEVnQUEvdzFOWldScFlWTnMKYVdS
bGNsUnlZV05yVW1sbmFIUkRZWEJKYldGblpVUmhkR0ZNWlc1bmRHaGZjRzVuQURzQUJ4RjhFZ0FB
K3cxTlpXUnBZVk5zYVdSbApjbFJ5WVdOclVtbG5hSFJEWVhCTWIyRmthVzVuU1cxaFoyVkVZWFJo
VEdWdVozUm9YM0J1WndBbUFBY1JmQklBQUU4RVRXVmthV0ZVCmFIVnRZa2x0WVdkbFJHRjBZVXhs
Ym1kMGFGOXdibWNBTFFBSEVYd1NBQUI0QkUxbFpHbGhWR2gxYldKUWNtVnpjMlZrU1cxaFoyVkUK
WVhSaFRHVnVaM1JvWDNCdVp3QXZBQWNSZkJJQUFNY0RUV1ZrYVdGVWIyZG5iR1ZEWVhCMGFXOXVj
MGx0WVdkbFJHRjBZVXhsYm1kMAphRjl3Ym1jQU5nQUhFWHdTQUFDUkEwMWxaR2xoVkc5bloyeGxR
MkZ3ZEdsdmJuTlFjbVZ6YzJWa1NXMWhaMlZFWVhSaFRHVnVaM1JvClgzQnVad0F6QUF3UjJCY0FB
QUFBQUFBQUFFMWxaR2xoVG1WM1ZVbEJkV1JwYjFadmJIVnRaVWhwWjJoSmJXRm5aVVJoZEdGZmNH
Um0KQURVQUJ4RjhFZ0FBRUFsTlpXUnBZVTVsZDFWSlFYVmthVzlXYjJ4MWJXVklhV2RvU1cxaFoy
VkVZWFJoVEdWdVozUm9YM0JrWmdBeQpBQXdSMXhjQUFBQUFBQUFBQUUxbFpHbGhUbVYzVlVsQmRX
UnBiMVp2YkhWdFpVOW1aa2x0WVdkbFJHRjBZVjl3WkdZQU5BQUhFWHdTCkFBQVJDRTFsWkdsaFRt
VjNWVWxCZFdScGIxWnZiSFZ0WlU5bVprbHRZV2RsUkdGMFlVeGxibWQwYUY5d1pHWUFNZ0FNRWRR
WEFBQUEKQUFBQUFBQk5aV1JwWVU1bGQxVkpRMnh2YzJWa1EyRndkR2x2Ym5OSmJXRm5aVVJoZEdG
ZmNHUm1BRFFBQnhGOEVnQUFaMU5OWldScApZVTVsZDFWSlEyeHZjMlZrUTJGd2RHbHZibk5KYldG
blpVUmhkR0ZNWlc1bmRHaGZjR1JtQURNQURCSFpGd0FBQUFBQUFBQUFUV1ZrCmFXRk9aWGRWU1VW
dWRHVnlSblZzYkhOamNtVmxia2x0WVdkbFJHRjBZVjl3WkdZQU5RQUhFWHdTQUFBNUNFMWxaR2xo
VG1WM1ZVbEYKYm5SbGNrWjFiR3h6WTNKbFpXNUpiV0ZuWlVSaGRHRk1aVzVuZEdoZmNHUm1BQzBB
QnhGOEVnQUFnZzlOWldScFlVNWxkMVZKUm05eQpkMkZ5WkVsdFlXZGxSR0YwWVV4bGJtZDBhRjl3
WkdZQUx3QU1FZG9YQUFBQUFBQUFBQUJOWldScFlVNWxkMVZKVUdGMWMyVkNkWFIwCmIyNUpiV0Zu
WlVSaGRHRmZjR1JtQURFQUJ4RjhFZ0FBZUE5TlpXUnBZVTVsZDFWSlVHRjFjMlZDZFhSMGIyNUpi
V0ZuWlVSaGRHRk0KWlc1bmRHaGZjR1JtQUM0QURCSFdGd0FBQUFBQUFBQUFUV1ZrYVdGT1pYZFZT
VkJzWVhsQ2RYUjBiMjVKYldGblpVUmhkR0ZmY0dSbQpBREFBQnhGOEVnQUFidzlOWldScFlVNWxk
MVZKVUd4aGVVSjFkSFJ2YmtsdFlXZGxSR0YwWVV4bGJtZDBhRjl3WkdZQUxRQU1FZFVYCkFBQUFB
QUFBQUFCTlpXUnBZVTVsZDFWSlVtVjBjbVZoZERNd1NXMWhaMlZFWVhSaFgzQmtaZ0F2QUFjUmZC
SUFBTmtIVFdWa2FXRk8KWlhkVlNWSmxkSEpsWVhRek1FbHRZV2RsUkdGMFlVeGxibWQwYUY5d1pH
WUFNZ0FNRWRzWEFBQUFBQUFBQUFCTlpXUnBZVTVsZDFWSgpVMlZsYTFSdlVtVmhiSFJwYldWSmJX
Rm5aVVJoZEdGZmNHUm1BRFFBQnhGOEVnQUFvQTlOWldScFlVNWxkMVZKVTJWbGExUnZVbVZoCmJI
UnBiV1ZKYldGblpVUmhkR0ZNWlc1bmRHaGZjR1JtQUFEeEFBQUFPZ0VBQUJzQUJ4R0xGd0FBQUFC
clEwZENiR1Z1WkUxdlpHVk8KYjNKdFlXd0FHZ0FIRVlzWEFBQU9BR3REUjBKc1pXNWtUVzlrWlVO
dmJHOXlBQmtBQnhHTEZ3QUFFUUJyUTBkQ2JHVnVaRTF2WkdWRApiM0I1QUIwQUJ4R0xGd0FBRWdC
clEwZENiR1Z1WkUxdlpHVlRiM1Z5WTJWSmJnQWpBQWNSaXhjQUFCY0FhME5IUW14bGJtUk5iMlJs
ClJHVnpkR2x1WVhScGIyNVBkWFFBS2dBSEVaSVNBQUFBQUd0RFIwTnZiRzl5UTI5a1pVWnlZV2R0
Wlc1MFRHOXZhM1Z3VkdWNGRIVnkKWlFBbkFBY1JraElBQUFFQWEwTkhRMjlzYjNKRGIyUmxSbkpo
WjIxbGJuUlFZWEpoYldWMGNtbGpBQjRBREJGWEVnQUFBQUFBQUFBQQpjSEpsYzNObFpGTm9ZV1J2
ZDBKc2RYSUFLd0FORWI4VUFBQUFBQUFBQUFCZmFXMXdYMTlyUTBkRGIyeHZjbE53WVdObFIyVnVa
WEpwClkwZHlZWGtBQUFEeEFBQUFWZ0FBQUNBQURSRy9GQUFBQUFBQUFBQUFYMmx0Y0Y5ZmEwTkhR
MjlzYjNKWGFHbDBaUUFhQUFjUmpSSUEKQUFLQS92OXJRMGRHYjI1MFNXNWtaWGhOWVhnQUZnQUhF
WTBTQUFBQ2dQNy9hME5IUjJ4NWNHaE5ZWGdBQUFEeEFBQUFSUU1BQUNZQQpCeEdKRWdBQUFBQlhT
MDFsWkdsaFZVbFFZWEowUm5Wc2JITmpjbVZsYmtKMWRIUnZiZ0FnQUFjUmlSSUFBQUVBVjB0TlpX
UnBZVlZKClVHRnlkRTExZEdWQ2RYUjBiMjRBSUFBSEVZa1NBQUFDQUZkTFRXVmthV0ZWU1ZCaGNu
UlFiR0Y1UW5WMGRHOXVBQ1FBQnhHSkVnQUEKQXdCWFMwMWxaR2xoVlVsUVlYSjBVMlZsYTBKaFky
dENkWFIwYjI0QUp3QUhFWWtTQUFBRUFGZExUV1ZrYVdGVlNWQmhjblJUWldWcgpSbTl5ZDJGeVpF
SjFkSFJ2YmdBcEFBY1JpUklBQUFZQVYwdE5aV1JwWVZWSlVHRnlkRlJwYldWc2FXNWxVMnhwWkdW
eVZHaDFiV0lBCklnQUhFWWtTQUFBSEFGZExUV1ZrYVdGVlNWQmhjblJTWlhkcGJtUkNkWFIwYjI0
QUtnQUhFWWtTQUFBSUFGZExUV1ZrYVdGVlNWQmgKY25SVFpXVnJWRzlTWldGc2RHbHRaVUoxZEhS
dmJnQXVBQWNSaVJJQUFBa0FWMHROWldScFlWVkpVR0Z5ZEZOb2IzZERiRzl6WldSRApZWEIwYVc5
dWMwSjFkSFJ2YmdBdUFBY1JpUklBQUFvQVYwdE5aV1JwWVZWSlVHRnlkRWhwWkdWRGJHOXpaV1JE
WVhCMGFXOXVjMEoxCmRIUnZiZ0FpQUFjUmlSSUFBQXNBVjB0TlpXUnBZVlZKVUdGeWRGVnVUWFYw
WlVKMWRIUnZiZ0FoQUFjUmlSSUFBQXdBVjB0TlpXUnAKWVZWSlVHRnlkRkJoZFhObFFuVjBkRzl1
QUNBQUJ4R0pFZ0FBRFFCWFMwMWxaR2xoVlVsUVlYSjBRbUZqYTJkeWIzVnVaQUFvQUFjUgppUklB
QUE0QVYwdE5aV1JwWVZWSlVHRnlkRU4xY25KbGJuUlVhVzFsUkdsemNHeGhlUUFxQUFjUmlSSUFB
QThBVjB0TlpXUnBZVlZKClVHRnlkRlJwYldWU1pXMWhhVzVwYm1kRWFYTndiR0Y1QUNzQUJ4R0pF
Z0FBRWdCWFMwMWxaR2xoVlVsUVlYSjBWbTlzZFcxbFUyeHAKWkdWeVEyOXVkR0ZwYm1WeUFDSUFC
eEdKRWdBQUV3QlhTMDFsWkdsaFZVbFFZWEowVm05c2RXMWxVMnhwWkdWeUFDY0FCeEdKRWdBQQpG
QUJYUzAxbFpHbGhWVWxRWVhKMFZtOXNkVzFsVTJ4cFpHVnlWR2gxYldJQUpnQUhFVElRQUFBQkFG
ZExUV1ZrYVdGRGIyNTBjbTlzCmJHVnlSbXhoWjBScGMyRmliR1ZrQUNVQUJ4RXlFQUFBQWdCWFMw
MWxaR2xoUTI5dWRISnZiR3hsY2tac1lXZFFjbVZ6YzJWa0FDVUEKQnhFeUVBQUFFQUJYUzAxbFpH
bGhRMjl1ZEhKdmJHeGxja1pzWVdkR2IyTjFjMlZrQUFBQUFQRUFBQUJOQUFBQUpnQU5FWThTQUFB
QQpBQUFBQUFCZmFXMXdYMTlyUTBaQmJHeHZZMkYwYjNKRVpXWmhkV3gwQUNNQURSR1BFZ0FBQUFB
QUFBQUFYMmx0Y0Y5ZmEwTkdRV3hzCmIyTmhkRzl5VG5Wc2JBQUFBQUR4QUFBQXhRQUFBQmNBQnhH
bkZ3QUFBQUJEUjFKbFkzUk5hVzVZUldSblpRQVhBQWNScHhjQUFBRUEKUTBkU1pXTjBUV2x1V1VW
a1oyVUFGd0FIRWFjWEFBQUNBRU5IVW1WamRFMWhlRmhGWkdkbEFCY0FCeEduRndBQUF3QkRSMUps
WTNSTgpZWGhaUldSblpRQWRBQTBSQ3hBQUFBQUFBQUFBQUY5cGJYQmZYME5IVTJsNlpWcGxjbThB
SFFBTkVRNFFBQUFBQUFBQUFBQmZhVzF3ClgxOURSMUpsWTNSYVpYSnZBQ0VBRFJFT0VBQUFBQUFB
QUFBQVgybHRjRjlmUTBkU1pXTjBTVzVtYVc1cGRHVUFBQUFBOFFBQUFOMEcKQUFBWEFBY1JiQmNB
QUFBQWEwTkhVRVJHVFdWa2FXRkNiM2dBRmdBSEVXd1hBQUFCQUd0RFIxQkVSa055YjNCQ2IzZ0FG
Z0FJRVhBUwpBQUJEUmtScFkzUnBiMjVoY25sU1pXWUFHQUFJRWVnUUFBQnNiMk5oYkdWcGJtWnZY
M04wY25WamRBQVdBQWdSbGhjQUFFTkhSbTlqCmRYTlNhVzVuVkdsdWRBQU9BQWdSZEFBQUFHVnlj
bTV2WDNRQUZRQUlFZVlRQUFCd2RHaHlaV0ZrYldKamFXNW1id0FRQUFnUlVCSUEKQUVOR1JHRjBZ
VkpsWmdBT0FBZ1JkUUFBQUhKemFYcGxYM1FBRFFBSUVYVUFBQUJWU1c1ME16SUFGd0FJRWFzU0FB
QmZRMGRKYm5SbApjbTVoYkVWeWNtOXlBQzRBQ0JFcUZ3QUFUV1ZrYVdGVGFHRnlaV1JWU1ZScGJX
VnNhVzVsVTJ4cFpHVnlWR2gxYldKRmJHVnRaVzUwCkFDSUFDQkgxRmdBQVRXVmthV0ZUYUdGeVpX
UlZTVU5EU1cxaFoyVkZiR1Z0Wlc1MEFCUUFDQkdFRndBQVEwZEhjbUZrYVdWdWRGSmwKWmdBU0FB
Z1JGaEFBQUVOR1UzUnlhVzVuVW1WbUFDVUFDQkhNRmdBQVRXVmthV0ZUYUdGeVpXUlZTVUpoWTJ0
bmNtOTFibVJGYkdWdApaVzUwQUJBQUNCRnVFUUFBUTBaVWVYQmxVbVZtQUJNQUNCRm1Gd0FBUTBk
UVJFWlFZV2RsVW1WbUFCY0FDQkdwRndBQVEwZE5kWFJoCllteGxVR0YwYUZKbFpnQVdBQWdSRUJF
QUFFTkhRMjlzYjNKVGNHRmpaVkpsWmdBUEFBZ1JiQmNBQUVOSFVFUkdRbTk0QUE0QUNCRkEKQUFB
QVEwZEdiRzloZEFBUEFBZ1JkUUFBQUhWcGJuUXpNbDkwQUF3QUNCRUNFQUFBVEVOZlNVUUFFd0FJ
RVNrUUFBQkRSME52Ym5SbAplSFJTWldZQUxBQUlFVTRYQUFCTlpXUnBZVk5vWVhKbFpGVkpWbTlz
ZFcxbFUyeHBaR1Z5VkdoMWJXSkZiR1Z0Wlc1MEFBNEFDQkVJCkVBQUFRMGRRYjJsdWRBQU9BQWdS
QlJBQUFFTkdVbUZ1WjJVQUhRQUlFWWNTQUFCMGFISmxZV1JzYjJOaGJHVnBibVp2YzNSeWRXTjAK
QUJ3QUNCRmVGd0FBVFdWa2FXRlRhR0Z5WldSVlNVTnZiblJ5YjJ4ekFCQUFDQkd5RndBQVEwZFFZ
WFJvVW1WbUFCRUFDQkdBRUFBQQpRMGRKYldGblpWSmxaZ0FjQUFnUld4QUFBRTFsWkdsaFZVbFVh
VzFsYkdsdVpWTnNhV1JsY2dBUUFBZ1I0QkFBQUY5c2IyTmhiR1ZmCmRBQWdBQWdSUEJjQUFFMWxa
R2xoVTJoaGNtVmtWVWxXYjJ4MWJXVlRiR2xrWlhJQURRQUlFU0VBQUFCM2FXNTBYM1FBRFFBSUVm
SVEKQUFCZmFXOWlkV1lBR0FBSUVRMFJBQUJEUjBSaGRHRlFjbTkyYVdSbGNsSmxaZ0FSQUFnUnB4
Y0FBRU5IVW1WamRFVmtaMlVBTVFBSQpFUVlYQUFCTlpXUnBZVk5vWVhKbFpGVkpWbTlzZFcxbFUy
eHBaR1Z5UW1GamEyZHliM1Z1WkVWc1pXMWxiblFBRVFBSUVad1hBQUJEClIxTjBlV3hsVW1WbUFB
NEFDQkVTQUFBQVEwWkpibVJsZUFBaUFBZ1JHQmNBQUUxbFpHbGhVMmhoY21Wa1ZVbFVhVzFsYkds
dVpWTnMKYVdSbGNnQWJBQWdSR2hBQUFFTkdVM1J5YVc1blNXNXNhVzVsUW5WbVptVnlBQmNBQ0JH
YUZ3QUFRMGRHYjJOMWMxSnBibWRUZEhscwpaUUFRQUFnUmRRQUFBRlZVUmpNeVEyaGhjZ0FPQUFn
UmNBUUFBSFpoWDJ4cGMzUUFGUUFJRWJ3UkFBQkRSa0ZzYkc5allYUnZjbEpsClpnQWZBQWdSZFFB
QUFFTkhSM0poWkdsbGJuUkVjbUYzYVc1blQzQjBhVzl1Y3dBYUFBZ1JtQklBQUVOSFUzUjViR1ZF
Y21GM1QzSmsKWlhKcGJtY0FEd0FJRVNJQUFBQkRSbFI1Y0dWSlJBQVNBQWdSaXhjQUFFTkhRbXhs
Ym1STmIyUmxBQkVBQ0JGdEVnQUFRMGRNWVhsbApjbEpsWmdBVkFBZ1JSaEFBQUUxbFpHbGhWVWxG
YkdWdFpXNTBBQTBBQ0JGMUFBQUFjMmw2WlY5MEFCUUFDQkYyRUFBQVRXVmthV0ZECmIyNTBjbTlz
Y3dBUEFBZ1JBaEFBQUhSaFoweERYMGxFQUE0QUNCRUZFQUFBUTBaU1lXNW5aUUFiQUFnUkdoQUFB
RU5HVTNSeWFXNW4KU1c1c2FXNWxRblZtWm1WeUFCUUFDQkdKRWdBQVYwdE5aV1JwWVZWSlVHRnlk
QUFpQUFnUk1oQUFBRmRMVFdWa2FXRkRiMjUwY205cwpiR1Z5VkdobGJXVlRkR0YwWlFBWEFBZ1JZ
eGNBQUVOSFVFUkdSRzlqZFcxbGJuUlNaV1lBRFFBSUVRc1FBQUJEUjFOcGVtVUFHQUFJCkVSRVFB
QUJEUjBGbVptbHVaVlJ5WVc1elptOXliUUFpQUFnUk1oQUFBRmRMVFdWa2FXRkRiMjUwY205c2JH
VnlWR2hsYldWVGRHRjAKWlFBTEFBZ1I4aEFBQUVaSlRFVUFEQUFJRVNBQUFBQlZTVzUwT0FBT0FB
Z1JJUUFBQUZWdWFVTm9ZWElBR2dBSUVaZ1hBQUJEUjBadgpZM1Z6VW1sdVowOXlaR1Z5YVc1bkFC
RUFDQkcxRXdBQVEwZERiMnh2Y2xKbFpnQVZBQWdSNUJBQUFIQjBhSEpsWVdSc2IyTnBibVp2CkFD
QUFDQkhsRmdBQVRXVmthV0ZUYUdGeVpXUlZTVWx0WVdkbFJXeGxiV1Z1ZEFBMkFBZ1IzQllBQUUx
bFpHbGhVMmhoY21Wa1ZVbEoKYldGblpVVnNaVzFsYm5RNk9rMWxaR2xoVlVsSmJXRm5aVVpwYkd4
TmIyUmxBQTBBQ0JFT0VBQUFRMGRTWldOMEFBQUFBUFFBQUFCWQpDQUFBQVFBQUFCQUJYTmIzb2M5
UzM2QWgzVGNETUI4T1VRQUFPZ0FBQUJBQk03bUhNUU5XS3VqVThpOUwzMmtwandBQWN3QUFBQkFC
ClUrZDluTUp4dkJPa1k3a2lUWUZvVFFBQXJBQUFBQkFCRXFheVNjRE1ZUHZNSk4zcFBSK3lxZ0FB
N3dBQUFCQUJEUkZuWWtPNGp1ajkKOEVPSGl6QUpvUUFBS3dFQUFCQUIwM0FXaHRaZUVtZGhZMTd0
RE5penRBQUFVd0VBQUJBQjRTUEpGQUhNUzI1cmdGQXhiRkRPemdBQQpoUUVBQUJBQmpLQ29qeE1s
dlY5NjYvQ21RVHJpMWdBQXRRRUFBQkFCcElKZUMvN29YMmkwK21Ed2pXVmFRUUFBNkFFQUFCQUIx
ZTlDCmpVNDExdDZldG9JdjkzMWZ5QUFBR2dJQUFCQUJRTkxwRTZpNmltOThCdjZhWGZyMjdBQUFW
QUlBQUJBQnZMQ0l1djZXTzdVeTZkeUoKV1o2eGN3QUFod0lBQUJBQjdDTWhKTzJOS1pHNE02Z2F2
Q21ha2dBQXZnSUFBQkFCY1puQVBIZFMzaFcrZ0x5UmlMQzhRQUFBN3dJQQpBQkFCbFRTY05aMmdT
MUNCejJYZmcwRnA3QUFBSFFNQUFCQUI3OTV0Z3JsZ2ZPdVJsMS91ajhjcldnQUFQd01BQUJBQm9u
REwxU1dWCm0xRWVnZjBkc1VVWEJBQUFkUU1BQUJBQlVrMFRWTmdOR1lqd1l0dWVmVDNSU1FBQXJB
TUFBQkFCKzZNeVBTeFB5SjRCVXJsWmJYWTUKemdBQTNRTUFBQkFCQUJpeSszV0xTVFZKdll2RE9i
WklmUUFBRkFRQUFCQUIwTHo5WEdFUXZKdndwd0JUc1BTQmZRQUFXQVFBQUJBQgozOU9IaThKeW1p
SHZZTS9WWDBya0ZBQUFuUVFBQUJBQndFckFDM2xqTUZXTjNETUdTMWd1TWdBQTl3UUFBQkFCQ1M1
ZFpPZURYbm5TCm9ZV0o4VGJBZ2dBQU1nVUFBQkFCY1ExMzdnV1VjejE2N09tSWNQRVUyQUFBYWdV
QUFCQUIvSzFDMGFYd0NyeThwV2l2aTl5WmJRQUEKbXdVQUFCQUJOeVNDemk0ZnV5bWhyY3RqK1ZV
WHBBQUEwUVVBQUJBQjF3NFlIaWpVVGFwUU1nSS9VYWMwMXdBQUN3WUFBQkFCSWcrTApuVVh6d1E1
Rys2aU1FNUZwWGdBQVB3WUFBQkFCQzRVbllmSExacXRqdHdLcmJ2Wk9XUUFBY1FZQUFCQUJ0aWRp
UTRXMVV2b2NKWVlVClZyUEZZZ0FBb0FZQUFCQUJDVWdHR09UM3FzOSttc3o2Ulc3SER3QUExZ1lB
QUJBQjFLRmN3U3NFSTlaWGw2aWo4VEx2Y2dBQUJBY0EKQUJBQktBaXptWFJPY0pJUDc2M0drbVF3
b1FBQU9nY0FBQkFCTmV4ZTR6Q0cxbVlvakx2SUFiUlNhQUFBY3djQUFCQUJHTkd5RXl5ZwpkNk5q
ck11Zzg0Vjlrd0FBcXdjQUFCQUI0MkZQZkE5RkdONFh1WEYydW5rM0t3QUEzQWNBQUJBQkJkeVlk
UmRkanJNb0IrTmtqdTUvCnlnQUFDd2dBQUJBQnRROWZab1N0eldlOXpiSTNEaUgraUFBQVBnZ0FB
QkFCTHF2OTA3ZGpQNHdQNFlxTjkxa1E5QUFBYmdnQUFCQUIKTWo1QSs1V0RGeXRuUmc2MDVnT0V2
QUFBdGdnQUFCQUI3SGxNQ2Jyb0VRYUhMaVZTSVJJRzF3QUE2UWdBQUJBQjlrUXJVb3dITkJDagpO
a1p3alREV0NnQUFIQWtBQUJBQmVsZm9pK3JobnMwUTY5dGErQWZEaEFBQWRna0FBQkFCRS9MTzFL
dWRtK3Nha2RxVkF1bThZQUFBCnFna0FBQkFCei8yZE1adzE4MU5vWDN1SlBnS1czd0FBN3drQUFC
QUJ5ZnpXMkltUW0yaUFWQ0M4QzhNcUFBQUFJZ29BQUJBQkNtcDMKT1RpQStUMnE1dU9YeUQyc3FB
QUFXUW9BQUJBQkQvR0xHU0hjWE52bWJYTkEzQ1JxcWdBQWlRb0FBQkFCcWxXaGQ3RmN4ZEl5Ynlw
NAorWDVJZFFBQXZnb0FBQkFCcER0c3hVMmkvdmJJa3pFeFJudGNXQUFBQndzQUFCQUJxaU02TUQ0
Z2JWa3NJc3lwQkEvV0F3QUFRd3NBCkFCQUI3T2s0MEhob28rUTdBbHN1YlhiTndBQUFlZ3NBQUJB
QllFL2IvTjBWQXVZd2ZsYU9vdmNMYlFBQXFnc0FBQkFCNWkxMlA5VVUKUWh5NmxML3lwbUl1ZkFB
QTJnc0FBQkFCaE9vYjJpa211VHQ5Q3pGdkV1SGhwZ0FBRGd3QUFCQUI5dE5YbG9PNDliUWQ2aVpy
M2FueAo1QUFBUHd3QUFCQUJ3SUsvditlVkxQc2xEbktGZzVlK3F3QUFid3dBQUJBQnhoQkFhMWdJ
ckhWSVZWT1R3dW5qeUFBQW5nd0FBQkFCCjA4MjdtQkcxWjRBZnZmZmlzWUV3Z1FBQTFRd0FBQkFC
bHFkWjN4dXdqNnF6U205WkFXdUFSQUFBR1EwQUFCQUJyQWJGelNSbFo0S2QKMWRrVDdibVhSd0FB
VEEwQUFCQUIrNlJjcUduRnowNmw2N0hUNmV1VTd3QUFrUTBBQUJBQlp5ODBOVUlSYVpDZVlnV3Jr
eDNZMXdBQQp4UTBBQUJBQnEvbkdKMTBpekU4T1RUTDVZSy9rdXdBQStnMEFBQkFCaFZYL0dGcnIw
bkpQaE12RCtrQjdhQUFBS3c0QUFCQUJzYlRhCjczcjVEWU5kVFM1S0ZZb1J0QUFBV2c0QUFCQUJI
VGM5VzkrWFNoeDNadHgzMk15TlpnQUFrdzRBQUJBQjRsUXhDOXBhUW9Vbk90REcKTmZoOXlRQUEw
QTRBQUJBQmp0NW1CZ216WFNtTU5xWUs0amk1a2dBQUFnOEFBQkFCY2ZNR1VRLzcvSkQ3aFM0MXgv
WUxmZ0FBTlE4QQpBQkFCaGZzRTBKbVZZWmlWdm9tZGtiNmhRZ0FBWlE4QUFCQUJaR1FPM1laUlVy
VEJFcmQ2WWtaMXpBQUF2UThBQUJBQnMrbG9yRkpwCkp3T3RacGk2Y2VHYnJ3QUFEeEFBQUJBQnV4
aUVkZkJ1SjlYZU45RXo2SElLV1FBQVFSQUFBQkFCK1pWb3ArV2tOU1IvRmp2ZXRGSUUKbHdBQWNC
QUFBQkFCaElqM3lOSEFsVXBiNVczWlBsUmVoUUFBcUJBQUFCQUJlTWNtQ1Y2bUt4bDViTEozS1Zt
ZGhRQUF5eEFBQUJBQgpvRzJFYVBKTUxlNkF2Zm9VVW10d0lRQUFBUkVBQUJBQldmdU5VMDNTSGhZ
RXdsaE9kNFB2MWdBQVJoRUFBQkFCdWJYdXUwa3U3OW85ClY0ZnNmWFhVbFFBQWZCRUFBQkFCek01
YWttVTZCQ1dZSlpFU2ZQcTJId0FBc1JFQUFCQUI0OStrK2lBYVEwOHlGaDUvVnpiT2lBQUEKNHhF
QUFCQUJjUjlVTEhMb2l4eUVOcTJlTjNMNkd3QUFLUklBQUJBQmVqL3hFRWhGMEVJOWpZOWErNVhm
ZVFBQVhCSUFBQkFCUHJpRwpZeGZFbDl4Wno3eEpxak5LTFFBQW5oSUFBQkFCRmhGNXJPbXZFWUs1
Q2x0Z0w1dFFNZ0FBNVJJQUFCQUJ3UFR5MUc5RVNYZHREUUhsClAvY0ZZd0FBS2hNQUFCQUJsZTB1
SmFBWGNsN2hoWE9qU0tsTXBnQUE4d0FBQUVJZkFBQUFZenBjWVhCd2JHVnBiblJsY201aGJGeHAK
Ym1Oc2RXUmxYR052Y21WbmNtRndhR2xqYzF4aloyWnZiblIyWVhKcFlYUnBiMjV6TG1nQVl6cGNZ
WEJ3YkdWcGJuUmxjbTVoYkZ4cApibU5zZFdSbFhHTnZjbVZtYjNWdVpHRjBhVzl1WEdObVkyaGhj
bUZqZEdWeWMyVjBMbWdBWXpwY1lYQndiR1ZwYm5SbGNtNWhiRnhwCmJtTnNkV1JsWEdOdmNtVm5j
bUZ3YUdsamMxeGpaMk52Ykc5eWRISmhibk5tYjNKdExtZ0FZenBjY0hKdlozSmhiU0JtYVd4bGN5
QW8KZURnMktWeHRhV055YjNOdlpuUWdkbWx6ZFdGc0lITjBkV1JwYnlBNFhIWmpYR2x1WTJ4MVpH
VmNiV0YwYUM1b0FHTTZYR0Z3Y0d4bAphVzUwWlhKdVlXeGNhVzVqYkhWa1pWeGpiM0psWjNKaGNH
aHBZM05jWTJkamIyeHZjbk53WVdObGNISnBkbUYwWlM1b0FHTTZYR0Z3CmNHeGxhVzUwWlhKdVlX
eGNhVzVqYkhWa1pWeGhkbUZwYkdGaWFXeHBkSGt1YUFCak9seGhjSEJzWldsdWRHVnlibUZzWEds
dVkyeDEKWkdWY1kyOXlaV1p2ZFc1a1lYUnBiMjVjWTJabGNuSnZjaTVvQUdNNlhHRndjR3hsYVc1
MFpYSnVZV3hjYVc1amJIVmtaVnhoZG1GcApiR0ZpYVd4cGRIbHBiblJsY201aGJDNW9BR002WEdG
d2NHeGxhVzUwWlhKdVlXeGNhVzVqYkhWa1pWeGpiM0psWm05MWJtUmhkR2x2CmJseGpabk4wY21s
dVp5NW9BR002WEdGd2NHeGxhVzUwWlhKdVlXeGNhVzVqYkhWa1pWeGpiM0psWm05MWJtUmhkR2x2
Ymx4alptRnkKY21GNUxtZ0FZenBjWVhCd2JHVnBiblJsY201aGJGeHBibU5zZFdSbFhHTnZjbVZu
Y21Gd2FHbGpjMXhqWjJGbVptbHVaWFJ5WVc1egpabTl5YlM1b0FHTTZYR0Z3Y0d4bGFXNTBaWEp1
WVd4Y2FXNWpiSFZrWlZ4amIzSmxaM0poY0docFkzTmNZMmRuWlc5dFpYUnllUzVvCkFHTTZYR0Z3
Y0d4bGFXNTBaWEp1WVd4Y2FXNWpiSFZrWlZ4amIzSmxabTkxYm1SaGRHbHZibHhqWm1ScFkzUnBi
MjVoY25rdWFBQmoKT2x4aGNIQnNaV2x1ZEdWeWJtRnNYR2x1WTJ4MVpHVmNZMjl5WldadmRXNWtZ
WFJwYjI1Y1kyWmlZWE5sTG1nQVl6cGNZWEJ3YkdWcApiblJsY201aGJGeHBibU5zZFdSbFhIUmhj
bWRsZEdOdmJtUnBkR2x2Ym1Gc2N5NW9BR002WEdGd2NHeGxhVzUwWlhKdVlXeGNhVzVqCmJIVmta
Vnh6ZEdScGJuUXVhQUJqT2x4aGNIQnNaV2x1ZEdWeWJtRnNYR2x1WTJ4MVpHVmNZMjl5WldkeVlY
Qm9hV056WEdOblltRnoKWlhCeWFYWmhkR1V1YUFCak9seGhjSEJzWldsdWRHVnlibUZzWEdsdVky
eDFaR1ZjWTI5eVpXZHlZWEJvYVdOelhHTm5ZMjl1ZEdWNApkR2x0WVdkbExtZ0FZenBjWVhCd2JH
VnBiblJsY201aGJGeHBibU5zZFdSbFhHTnZjbVZuY21Gd2FHbGpjMXhqWjJOeWVYQjBieTVvCkFH
TTZYR0Z3Y0d4bGFXNTBaWEp1WVd4Y2FXNWpiSFZrWlZ4amIzSmxaM0poY0docFkzTmNZMmQwWlho
MFkyeHBjSEJwYm1jdWFBQmoKT2x4d2NtOW5jbUZ0SUdacGJHVnpJQ2g0T0RZcFhHMXBZM0p2YzI5
bWRDQjJhWE4xWVd3Z2MzUjFaR2x2SURoY2RtTmNhVzVqYkhWawpaVnh6ZEdScGJ5NW9BR002WEhC
eWIyZHlZVzBnWm1sc1pYTWdLSGc0TmlsY2JXbGpjbTl6YjJaMElIWnBjM1ZoYkNCemRIVmthVzhn
Ck9GeDJZMXhwYm1Oc2RXUmxYR3hwYldsMGN5NW9BR002WEdONVozZHBibHhvYjIxbFhHTnRZWEp5
YVc1Y2MyOTFjbU5sWEhOMmJseDMKWldKcmFYUmNhVzUwWlhKdVlXeGNkMlZpYTJsMGMzbHpkR1Z0
YVc1MFpYSm1ZV05sWEhOb1lYSmxaRzFsWkdsaGRXa3VZM0J3QUdNNgpYR0Z3Y0d4bGFXNTBaWEp1
WVd4Y2FXNWpiSFZrWlZ4amIzSmxaM0poY0docFkzTmNZMmRtYjI1MFoyeDVjR2h6ZFhCd2IzSjBM
bWdBCll6cGNZWEJ3YkdWcGJuUmxjbTVoYkZ4cGJtTnNkV1JsWEdOdmNtVm5jbUZ3YUdsamMxeGpa
Mlp2Ym5SeVpXNWtaWEpwYm1jdWFBQmoKT2x4aGNIQnNaV2x1ZEdWeWJtRnNYR2x1WTJ4MVpHVmNZ
Mjl5WldkeVlYQm9hV056WEdOblozTjBZWFJsTG1nQVl6cGNZWEJ3YkdWcApiblJsY201aGJGeHBi
bU5zZFdSbFhHTnZjbVZuY21Gd2FHbGpjMXhqWjNCa1ptUnZZM1Z0Wlc1MExtZ0FZenBjWVhCd2JH
VnBiblJsCmNtNWhiRnhwYm1Oc2RXUmxYR052Y21WbmNtRndhR2xqYzF4aloyTnZiblJsZUhSa1pX
eGxaMkYwWlM1b0FHTTZYR0Z3Y0d4bGFXNTAKWlhKdVlXeGNhVzVqYkhWa1pWeGpiM0psWjNKaGNH
aHBZM05jWTJkamJHbHdjM1JoWTJzdWFBQmpPbHhoY0hCc1pXbHVkR1Z5Ym1GcwpYR2x1WTJ4MVpH
VmNZMjl5WldkeVlYQm9hV056WEdObmNHUm1jR0ZuWlM1b0FHTTZYR0Z3Y0d4bGFXNTBaWEp1WVd4
Y2FXNWpiSFZrClpWeGpiM0psWjNKaGNHaHBZM05jWTJkd1lYUm9MbWdBWXpwY1lYQndiR1ZwYm5S
bGNtNWhiRnhwYm1Oc2RXUmxYR052Y21WbmNtRncKYUdsamMxeGpaMlJwYzNCc1lYbHNhWE4wTG1n
QVl6cGNZWEJ3YkdWcGJuUmxjbTVoYkZ4cGJtTnNkV1JsWEdGMllXbHNZV0pwYkdsMAplVzFoWTNK
dmN5NW9BR002WEdGd2NHeGxhVzUwWlhKdVlXeGNhVzVqYkhWa1pWeGpiM0psWjNKaGNHaHBZM05j
WTJkamIyNTBaWGgwCmNHRjBhQzVvQUdNNlhHRndjR3hsYVc1MFpYSnVZV3hjYVc1amJIVmtaVnhq
YjNKbFozSmhjR2hwWTNOY1kyZHlaVzVrWlhKcGJtZHoKZEdGMFpTNW9BR002WEdGd2NHeGxhVzUw
WlhKdVlXeGNhVzVqYkhWa1pWeGpiM0psWjNKaGNHaHBZM05jWTJkd1pHWmthV04wYVc5dQpZWEo1
TG1nQVl6cGNZWEJ3YkdWcGJuUmxjbTVoYkZ4cGJtTnNkV1JsWEdOdmNtVm5jbUZ3YUdsamMxeGpa
M04wZVhCbGN5NW9BR002ClhHRndjR3hsYVc1MFpYSnVZV3hjYVc1amJIVmtaVnhqYjNKbFozSmhj
R2hwWTNOY1kyZGpiR2x3TG1nQVl6cGNZWEJ3YkdWcGJuUmwKY201aGJGeHBibU5zZFdSbFhHTnZj
bVZuY21Gd2FHbGpjMXhqWjNOdlpuUnRZWE5yTG1nQVl6cGNZWEJ3YkdWcGJuUmxjbTVoYkZ4cApi
bU5zZFdSbFhHTnZjbVZuY21Gd2FHbGpjMXhqWjJWeWNtOXlMbWdBWXpwY2NISnZaM0poYlNCbWFX
eGxjeUFvZURnMktWeHRhV055CmIzTnZablFnZG1semRXRnNJSE4wZFdScGJ5QTRYSFpqWEdsdVky
eDFaR1ZjYzNselhIUjVjR1Z6TG1nQVl6cGNZWEJ3YkdWcGJuUmwKY201aGJGeHBibU5zZFdSbFhH
TnZjbVZuY21Gd2FHbGpjMXhqWjNCa1ptRnljbUY1TG1nQVl6cGNZWEJ3YkdWcGJuUmxjbTVoYkZ4
cApibU5zZFdSbFhHTnZjbVZuY21Gd2FHbGpjMXhqWjJkeVlXUnBaVzUwTG1nQVl6cGNZM2xuZDJs
dVhHaHZiV1ZjWTIxaGNuSnBibHgzClpXSnJhWFJpZFdsc1pGeHZZbXBjZDJWaWEybDBjM2x6ZEdW
dGFXNTBaWEptWVdObFhHUmxjbWwyWldSemIzVnlZMlZ6WEcxbFpHbGgKYVcxaFoyVnpMbWdBWXpw
Y1lYQndiR1ZwYm5SbGNtNWhiRnhwYm1Oc2RXUmxYR052Y21WbmNtRndhR2xqYzF4alozQmtabTlp
YW1WagpkQzVvQUdNNlhIQnliMmR5WVcwZ1ptbHNaWE1nS0hnNE5pbGNiV2xqY205emIyWjBJSFpw
YzNWaGJDQnpkSFZrYVc4Z09GeDJZMXhwCmJtTnNkV1JsWEhOMFpHRnlaeTVvQUdNNlhHRndjR3hs
YVc1MFpYSnVZV3hjYVc1amJIVmtaVnhqYjNKbFozSmhjR2hwWTNOY1kyZGoKYkdsd2JXRnpheTVv
QUdNNlhHRndjR3hsYVc1MFpYSnVZV3hjYVc1amJIVmtaVnhqYjNKbFozSmhjR2hwWTNOY1kyZGtZ
WFJoWTI5dQpjM1Z0WlhJdWFBQmpPbHhoY0hCc1pXbHVkR1Z5Ym1Gc1hHbHVZMngxWkdWY1kyOXla
V2R5WVhCb2FXTnpYR05uWTI5c2IzSXVhQUJqCk9seGhjSEJzWldsdWRHVnlibUZzWEdsdVkyeDFa
R1ZjWTI5eVpXZHlZWEJvYVdOelhHTm5ZMjlzYjNKemNHRmpaUzVvQUdNNlhIQnkKYjJkeVlXMGda
bWxzWlhNZ0tIZzROaWxjYldsamNtOXpiMlowSUhacGMzVmhiQ0J6ZEhWa2FXOGdPRngyWTF4cGJt
TnNkV1JsWEhOMwpjSEpwYm5SbUxtbHViQUJqT2x4aGNIQnNaV2x1ZEdWeWJtRnNYR2x1WTJ4MVpH
VmNZMjl5WldkeVlYQm9hV056WEdOblkyOXNiM0pqCmIyUmxabkpoWjIxbGJuUXVhQUJqT2x4aGNI
QnNaV2x1ZEdWeWJtRnNYR2x1WTJ4MVpHVmNZMjl5WldkeVlYQm9hV056WEdOblpHRjAKWVhCeWIz
WnBaR1Z5TG1nQVl6cGNZWEJ3YkdWcGJuUmxjbTVoYkZ4cGJtTnNkV1JsWEdOdmNtVm5jbUZ3YUds
amMxeGpaMmx0WVdkbApMbWdBWXpwY1lYQndiR1ZwYm5SbGNtNWhiRnhwYm1Oc2RXUmxYR052Y21W
bWIzVnVaR0YwYVc5dVhHTm1kWEpzTG1nQVl6cGNZWEJ3CmJHVnBiblJsY201aGJGeHBibU5zZFdS
bFhHTnZjbVZuY21Gd2FHbGpjMXhqWjNCa1puTjBjbVZoYlM1b0FHTTZYR0Z3Y0d4bGFXNTAKWlhK
dVlXeGNhVzVqYkhWa1pWeGpiM0psWm05MWJtUmhkR2x2Ymx4alptUmhkR0V1YUFCak9seGhjSEJz
WldsdWRHVnlibUZzWEdsdQpZMngxWkdWY1kyOXlaV2R5WVhCb2FXTnpYR05uYzNSNWJHVXVhQUJq
T2x4aGNIQnNaV2x1ZEdWeWJtRnNYR2x1WTJ4MVpHVmNZMjl5ClpXZHlZWEJvYVdOelhHTm5abTl1
ZEM1b0FHTTZYR0Z3Y0d4bGFXNTBaWEp1WVd4Y2FXNWpiSFZrWlZ4amIzSmxaM0poY0docFkzTmMK
WTJkamIyeHZjbkJ5YVhaaGRHVXVhQUJqT2x4d2NtOW5jbUZ0SUdacGJHVnpJQ2g0T0RZcFhHMXBZ
M0p2YzI5bWRDQjJhWE4xWVd3ZwpjM1IxWkdsdklEaGNkbU5jYVc1amJIVmtaVnhtYkc5aGRDNW9B
R002WEdGd2NHeGxhVzUwWlhKdVlXeGNhVzVqYkhWa1pWeGpiM0psClptOTFibVJoZEdsdmJseGpa
bXh2WTJGc1pTNW9BR002WEhCeWIyZHlZVzBnWm1sc1pYTWdLSGc0TmlsY2JXbGpjbTl6YjJaMElI
WnAKYzNWaGJDQnpkSFZrYVc4Z09GeDJZMXhwYm1Oc2RXUmxYR055ZEhkeWJpNW9BR002WEdGd2NH
eGxhVzUwWlhKdVlXeGNhVzVqYkhWawpaVnhqYjNKbFozSmhjR2hwWTNOY1kyZHdaR1p6ZEhKcGJt
Y3VhQUJqT2x4aGNIQnNaV2x1ZEdWeWJtRnNYR2x1WTJ4MVpHVmNZMjl5ClpXZHlZWEJvYVdOelhH
Tm5ZMnhwY0hOMGNtOXJaUzVvQUdNNlhHRndjR3hsYVc1MFpYSnVZV3hjYVc1amJIVmtaVnhqYjNK
bFptOTEKYm1SaGRHbHZibHhqWm1SaGRHVXVhQUJqT2x4aGNIQnNaV2x1ZEdWeWJtRnNYR2x1WTJ4
MVpHVmNZMjl5WldkeVlYQm9hV056WEdObgpaR0Z6YUM1b0FHTTZYR0Z3Y0d4bGFXNTBaWEp1WVd4
Y2FXNWpiSFZrWlZ4amIzSmxaM0poY0docFkzTmNZMmRqYjI1MFpYaDBjSEpwCmRtRjBaUzVvQUdN
NlhHRndjR3hsYVc1MFpYSnVZV3hjYVc1amJIVmtaVnhqYjNKbFozSmhjR2hwWTNOY1kyZHViM1Jw
Wm1sallYUnAKYjI1alpXNTBaWEl1YUFCak9seGhjSEJzWldsdWRHVnlibUZzWEdsdVkyeDFaR1Zj
WTI5eVpXZHlZWEJvYVdOelhHTm5jMmhoWkdsdQpaeTVvQUdNNlhHRndjR3hsYVc1MFpYSnVZV3hj
YVc1amJIVmtaVnhqYjNKbFozSmhjR2hwWTNOY1kyZG1kVzVqZEdsdmJpNW9BR002ClhHRndjR3hs
YVc1MFpYSnVZV3hjYVc1amJIVmtaVnhqYjNKbFozSmhjR2hwWTNOY1kyZHNZWGxsY2k1b0FHTTZY
R041WjNkcGJseG8KYjIxbFhHTnRZWEp5YVc1Y2MyOTFjbU5sWEhOMmJseDNaV0pyYVhSY2FXNTBa
WEp1WVd4Y2QyVmlhMmwwYzNsemRHVnRhVzUwWlhKbQpZV05sWEhOb1lYSmxaRzFsWkdsaGRXa3Vh
QUJqT2x4amVXZDNhVzVjYUc5dFpWeGpiV0Z5Y21sdVhITnZkWEpqWlZ4emRtNWNkMlZpCmEybDBY
R2x1ZEdWeWJtRnNYSGRsWW10cGRITjVjM1JsYldsdWRHVnlabUZqWlZ4dFpXUnBZWFZwTG1nQVl6
cGNZWEJ3YkdWcGJuUmwKY201aGJGeHBibU5zZFdSbFhHTnZjbVZuY21Gd2FHbGpjMXhqWjJOdmJu
UmxlSFF1YUFCak9seGhjSEJzWldsdWRHVnlibUZzWEdsdQpZMngxWkdWY1kyOXlaV2R5WVhCb2FX
TnpYR05uWW1GelpTNW9BR002WEdGd2NHeGxhVzUwWlhKdVlXeGNhVzVqYkhWa1pWeGpiM0psCloz
SmhjR2hwWTNOY1kyZGpiMjUwWlhoMFozTjBZWFJsTG1nQVl6cGNZWEJ3YkdWcGJuUmxjbTVoYkZ4
cGJtTnNkV1JsWEhOMFpHSnYKYjJ3dWFBQmpPbHhoY0hCc1pXbHVkR1Z5Ym1Gc1hHbHVZMngxWkdW
Y1kyOXlaV2R5WVhCb2FXTnpYR05uWm05dWRIQnlhWFpoZEdVdQphQUJqT2x4d2NtOW5jbUZ0SUda
cGJHVnpJQ2g0T0RZcFhHMXBZM0p2YzI5bWRDQjJhWE4xWVd3Z2MzUjFaR2x2SURoY2RtTmNhVzVq
CmJIVmtaVnh6ZEdSa1pXWXVhQUJqT2x4aGNIQnNaV2x1ZEdWeWJtRnNYR2x1WTJ4MVpHVmNZMjl5
WldkeVlYQm9hV056WEdOblkyOXUKZEdWNGRIUmxlSFF1YUFCak9seGhjSEJzWldsdWRHVnlibUZz
WEdsdVkyeDFaR1ZjWTI5eVpXZHlZWEJvYVdOelhHTm5abTl1ZEdOeQpaV0YwWlM1b0FHTTZYR0Z3
Y0d4bGFXNTBaWEp1WVd4Y2FXNWpiSFZrWlZ4amIzSmxaM0poY0docFkzTmNZMmR3WVhSMFpYSnVM
bWdBCll6cGNjSEp2WjNKaGJTQm1hV3hsY3lBb2VEZzJLVnh0YVdOeWIzTnZablFnZG1semRXRnNJ
SE4wZFdScGJ5QTRYSFpqWEdsdVkyeDEKWkdWY1kzSjBaR1ZtY3k1b0FHTTZYR0Z3Y0d4bGFXNTBa
WEp1WVd4Y2FXNWpiSFZrWlZ4amIzSmxaM0poY0docFkzTmNZMmRtYjI1MAphVzVtYnk1b0FHTTZY
SEJ5YjJkeVlXMGdabWxzWlhNZ0tIZzROaWxjYldsamNtOXpiMlowSUhacGMzVmhiQ0J6ZEhWa2FX
OGdPRngyClkxeHBibU5zZFdSbFhITmhiQzVvQUdNNlhIQnliMmR5WVcwZ1ptbHNaWE1nS0hnNE5p
bGNiV2xqY205emIyWjBJSFpwYzNWaGJDQnoKZEhWa2FXOGdPRngyWTF4cGJtTnNkV1JsWEdOeWRH
RnpjMlZ0TG1nQVl6cGNjSEp2WjNKaGJTQm1hV3hsY3lBb2VEZzJLVnh0YVdOeQpiM052Wm5RZ2Rt
bHpkV0ZzSUhOMGRXUnBieUE0WEhaalhHbHVZMngxWkdWY2RtRmtaV1p6TG1nQVl6cGNZWEJ3YkdW
cGJuUmxjbTVoCmJGeHBibU5zZFdSbFhHTnZjbVZuY21Gd2FHbGpjMXhqWjJOdmJtWnBaeTVvQUNS
VU1pQWtaWE53SUM1allreHZZMkZzY3lBcklDNWoKWWxOaGRtVmtVbVZuY3lBcklEMGdKRlF3SUM1
eVlWTmxZWEpqYUZOMFlYSjBJRDBnSkdWcGNDQWtWREFnWGlBOUlDUmxjM0FnSkZRdwpJRFFnS3lB
OUFDUlVNaUFrWlhOd0lDNWpZa3h2WTJGc2N5QXJJQzVqWWxOaGRtVmtVbVZuY3lBcklEMGdKRlF3
SUM1eVlWTmxZWEpqCmFGTjBZWEowSUQwZ0pHVnBjQ0FrVkRBZ1hpQTlJQ1JsYzNBZ0pGUXdJRFFn
S3lBOUlDUmxZbmdnSkZRd0lEazJJQzBnWGlBOUFDUlUKTWlBa1pYTndJQzVqWWt4dlkyRnNjeUFy
SUM1allsTmhkbVZrVW1WbmN5QXJJRDBnSkZRd0lDNXlZVk5sWVhKamFGTjBZWEowSUQwZwpKR1Zw
Y0NBa1ZEQWdYaUE5SUNSbGMzQWdKRlF3SURRZ0t5QTlJQ1JsWW5BZ0pGUXdJREV3TUNBdElGNGdQ
U0FrWldKNElDUlVNQ0E1Ck5pQXRJRjRnUFFBa1ZESWdKR1Z6Y0NBdVkySk1iMk5oYkhNZ0t5QXVZ
MkpUWVhabFpGSmxaM01nS3lBOUlDUlVNQ0F1Y21GVFpXRnkKWTJoVGRHRnlkQ0E5SUNSbGFYQWdK
RlF3SUY0Z1BTQWtaWE53SUNSVU1DQTBJQ3NnUFNBa1pXSjRJQ1JVTUNBM01pQXRJRjRnUFFBawpW
RElnSkdWemNDQXVZMkpNYjJOaGJITWdLeUF1WTJKVFlYWmxaRkpsWjNNZ0t5QTlJQ1JVTUNBdWNt
RlRaV0Z5WTJoVGRHRnlkQ0E5CklDUmxhWEFnSkZRd0lGNGdQU0FrWlhOd0lDUlVNQ0EwSUNzZ1BT
QWtaV0p3SUNSVU1DQTNOaUF0SUY0Z1BTQWtaV0o0SUNSVU1DQTMKTWlBdElGNGdQUUFrVkRJZ0pH
VnpjQ0F1WTJKTWIyTmhiSE1nS3lBdVkySlRZWFpsWkZKbFozTWdLeUE5SUNSVU1DQXVjbUZUWldG
eQpZMmhUZEdGeWRDQTlJQ1JsYVhBZ0pGUXdJRjRnUFNBa1pYTndJQ1JVTUNBMElDc2dQU0FrWldK
NElDUlVNQ0EyT0NBdElGNGdQUUFrClZESWdKR1Z6Y0NBdVkySk1iMk5oYkhNZ0t5QXVZMkpUWVha
bFpGSmxaM01nS3lBOUlDUlVNQ0F1Y21GVFpXRnlZMmhUZEdGeWRDQTkKSUNSbGFYQWdKRlF3SUY0
Z1BTQWtaWE53SUNSVU1DQTBJQ3NnUFNBa1pXSndJQ1JVTUNBM01pQXRJRjRnUFNBa1pXSjRJQ1JV
TUNBMgpPQ0F0SUY0Z1BRQWtWRElnSkdWemNDQXVZMkpNYjJOaGJITWdLeUF1WTJKVFlYWmxaRkps
WjNNZ0t5QTlJQ1JVTUNBdWNtRlRaV0Z5ClkyaFRkR0Z5ZENBOUlDUmxhWEFnSkZRd0lGNGdQU0Fr
WlhOd0lDUlVNQ0EwSUNzZ1BTQWtaV0o0SUNSVU1DQTBPQ0F0SUY0Z1BRQWsKVkRJZ0pHVnpjQ0F1
WTJKTWIyTmhiSE1nS3lBdVkySlRZWFpsWkZKbFozTWdLeUE5SUNSVU1DQXVjbUZUWldGeVkyaFRk
R0Z5ZENBOQpJQ1JsYVhBZ0pGUXdJRjRnUFNBa1pYTndJQ1JVTUNBMElDc2dQU0FrWldKNElDUlVN
Q0EwTUNBdElGNGdQUUFrVkRJZ0pHVnpjQ0F1ClkySk1iMk5oYkhNZ0t5QXVZMkpUWVhabFpGSmxa
M01nS3lBOUlDUlVNQ0F1Y21GVFpXRnlZMmhUZEdGeWRDQTlJQ1JsYVhBZ0pGUXcKSUY0Z1BTQWta
WE53SUNSVU1DQTBJQ3NnUFNBa1pXSndJQ1JVTUNBME5DQXRJRjRnUFNBa1pXSjRJQ1JVTUNBME1D
QXRJRjRnUFFBawpWRElnSkdWemNDQXVZMkpNYjJOaGJITWdLeUF1WTJKVFlYWmxaRkpsWjNNZ0t5
QTlJQ1JVTUNBdWNtRlRaV0Z5WTJoVGRHRnlkQ0E5CklDUmxhWEFnSkZRd0lGNGdQU0FrWlhOd0lD
UlVNQ0EwSUNzZ1BTQWtaV0o0SUNSVU1DQXhOaUF0SUY0Z1BRQWtWRElnSkdWemNDQXUKWTJKTWIy
TmhiSE1nS3lBdVkySlRZWFpsWkZKbFozTWdLeUE5SUNSVU1DQXVjbUZUWldGeVkyaFRkR0Z5ZENB
OUlDUmxhWEFnSkZRdwpJRjRnUFNBa1pYTndJQ1JVTUNBMElDc2dQU0FrWldKd0lDUlVNQ0F5TUNB
dElGNGdQU0FrWldKNElDUlVNQ0F4TmlBdElGNGdQUUFrClZESWdKR1Z6Y0NBdVkySk1iMk5oYkhN
Z0t5QXVZMkpUWVhabFpGSmxaM01nS3lBOUlDUlVNQ0F1Y21GVFpXRnlZMmhUZEdGeWRDQTkKSUNS
bGFYQWdKRlF3SUY0Z1BTQWtaWE53SUNSVU1DQTBJQ3NnUFNBa1pXSjRJQ1JVTUNBeU9DQXRJRjRn
UFFBa1ZESWdKR1Z6Y0NBdQpZMkpNYjJOaGJITWdLeUF1WTJKVFlYWmxaRkpsWjNNZ0t5QTlJQ1JV
TUNBdWNtRlRaV0Z5WTJoVGRHRnlkQ0E5SUNSbGFYQWdKRlF3CklGNGdQU0FrWlhOd0lDUlVNQ0Ew
SUNzZ1BTQWtaV0p3SUNSVU1DQXpNaUF0SUY0Z1BTQWtaV0o0SUNSVU1DQXlPQ0F0SUY0Z1BRQWsK
VkRJZ0pHVnpjQ0F1WTJKTWIyTmhiSE1nS3lBdVkySlRZWFpsWkZKbFozTWdLeUE5SUNSVU1DQXVj
bUZUWldGeVkyaFRkR0Z5ZENBOQpJQ1JsYVhBZ0pGUXdJRjRnUFNBa1pYTndJQ1JVTUNBMElDc2dQ
U0FrWldKNElDUlVNQ0F5TkNBdElGNGdQUUFrVkRJZ0pHVnpjQ0F1ClkySk1iMk5oYkhNZ0t5QXVZ
MkpUWVhabFpGSmxaM01nS3lBOUlDUlVNQ0F1Y21GVFpXRnlZMmhUZEdGeWRDQTlJQ1JsYVhBZ0pG
UXcKSUY0Z1BTQWtaWE53SUNSVU1DQTBJQ3NnUFNBa1pXSndJQ1JVTUNBeU9DQXRJRjRnUFNBa1pX
SjRJQ1JVTUNBeU5DQXRJRjRnUFFBawpWRElnSkdWemNDQXVZMkpNYjJOaGJITWdLeUF1WTJKVFlY
WmxaRkpsWjNNZ0t5QTlJQ1JVTUNBdWNtRlRaV0Z5WTJoVGRHRnlkQ0E5CklDUmxhWEFnSkZRd0lG
NGdQU0FrWlhOd0lDUlVNQ0EwSUNzZ1BTQWtaV0o0SUNSVU1DQTBJQzBnWGlBOUFDUlVNaUFrWlhO
d0lDNWoKWWt4dlkyRnNjeUFySUM1allsTmhkbVZrVW1WbmN5QXJJRDBnSkZRd0lDNXlZVk5sWVhK
amFGTjBZWEowSUQwZ0pHVnBjQ0FrVkRBZwpYaUE5SUNSbGMzQWdKRlF3SURRZ0t5QTlJQ1JsWW5B
Z0pGUXdJRGdnTFNCZUlEMGdKR1ZpZUNBa1ZEQWdOQ0F0SUY0Z1BRQWtWRElnCkpHVnpjQ0F1WTJK
TWIyTmhiSE1nS3lBdVkySlRZWFpsWkZKbFozTWdLeUE5SUNSVU1DQXVjbUZUWldGeVkyaFRkR0Z5
ZENBOUlDUmwKYVhBZ0pGUXdJRjRnUFNBa1pYTndJQ1JVTUNBMElDc2dQU0FrWldKNElDUlVNQ0Ex
TWlBdElGNGdQUUFrVkRJZ0pHVnpjQ0F1WTJKTQpiMk5oYkhNZ0t5QXVZMkpUWVhabFpGSmxaM01n
S3lBOUlDUlVNQ0F1Y21GVFpXRnlZMmhUZEdGeWRDQTlJQ1JsYVhBZ0pGUXdJRjRnClBTQWtaWE53
SUNSVU1DQTBJQ3NnUFNBa1pXSndJQ1JVTUNBMU5pQXRJRjRnUFNBa1pXSjRJQ1JVTUNBMU1pQXRJ
RjRnUFFBa1ZESWcKSkdWemNDQXVZMkpNYjJOaGJITWdLeUF1WTJKVFlYWmxaRkpsWjNNZ0t5QTlJ
Q1JVTUNBdWNtRlRaV0Z5WTJoVGRHRnlkQ0E5SUNSbAphWEFnSkZRd0lGNGdQU0FrWlhOd0lDUlVN
Q0EwSUNzZ1BTQWtaV0o0SUNSVU1DQTJOQ0F0SUY0Z1BRQWtWRElnSkdWemNDQXVZMkpNCmIyTmhi
SE1nS3lBdVkySlRZWFpsWkZKbFozTWdLeUE5SUNSVU1DQXVjbUZUWldGeVkyaFRkR0Z5ZENBOUlD
UmxhWEFnSkZRd0lGNGcKUFNBa1pYTndJQ1JVTUNBMElDc2dQU0FrWldKd0lDUlVNQ0EyT0NBdElG
NGdQU0FrWldKNElDUlVNQ0EyTkNBdElGNGdQUUFrVkRJZwpKR1Z6Y0NBdVkySk1iMk5oYkhNZ0t5
QXVZMkpUWVhabFpGSmxaM01nS3lBOUlDUlVNQ0F1Y21GVFpXRnlZMmhUZEdGeWRDQTlJQ1JsCmFY
QWdKRlF3SUY0Z1BTQWtaWE53SUNSVU1DQTBJQ3NnUFNBa1pXSndJQ1JVTUNBMU1pQXRJRjRnUFNB
a1pXSjRJQ1JVTUNBME9DQXQKSUY0Z1BRQWtWRElnSkdWemNDQXVZMkpNYjJOaGJITWdLeUF1WTJK
VFlYWmxaRkpsWjNNZ0t5QTlJQ1JVTUNBdWNtRlRaV0Z5WTJoVApkR0Z5ZENBOUlDUmxhWEFnSkZR
d0lGNGdQU0FrWlhOd0lDUlVNQ0EwSUNzZ1BTQWtaV0o0SUNSVU1DQXpOaUF0SUY0Z1BRQWtWREln
CkpHVnpjQ0F1WTJKTWIyTmhiSE1nS3lBdVkySlRZWFpsWkZKbFozTWdLeUE5SUNSVU1DQXVjbUZU
WldGeVkyaFRkR0Z5ZENBOUlDUmwKYVhBZ0pGUXdJRjRnUFNBa1pYTndJQ1JVTUNBMElDc2dQU0Fr
WldKd0lDUlVNQ0EwTUNBdElGNGdQU0FrWldKNElDUlVNQ0F6TmlBdApJRjRnUFFBa1ZESWdKR1Z6
Y0NBdVkySk1iMk5oYkhNZ0t5QXVZMkpUWVhabFpGSmxaM01nS3lBOUlDUlVNQ0F1Y21GVFpXRnlZ
MmhUCmRHRnlkQ0E5SUNSbGFYQWdKRlF3SUY0Z1BTQWtaWE53SUNSVU1DQTBJQ3NnUFNBa1pXSjRJ
Q1JVTUNBNElDMGdYaUE5QUNSVU1pQWsKWlhOd0lDNWpZa3h2WTJGc2N5QXJJQzVqWWxOaGRtVmtV
bVZuY3lBcklEMGdKRlF3SUM1eVlWTmxZWEpqYUZOMFlYSjBJRDBnSkdWcApjQ0FrVkRBZ1hpQTlJ
Q1JsYzNBZ0pGUXdJRFFnS3lBOUlDUmxZbkFnSkZRd0lERXlJQzBnWGlBOUlDUmxZbmdnSkZRd0lE
Z2dMU0JlCklEMEFBQURNREFBQUhRQUFBQXNBMEF3QUFCMEFBQUFLQURnTkFBQWVBQUFBQ3dBOERR
QUFIZ0FBQUFvQW9nMEFBQjhBQUFBTEFLWU4KQUFBZkFBQUFDZ0FNRGdBQUlBQUFBQXNBRUE0QUFD
QUFBQUFLQUtjT0FBQWhBQUFBQ3dDckRnQUFJUUFBQUFvQUN3OEFBQ0lBQUFBTApBQThQQUFBaUFB
QUFDZ0J0RHdBQUl3QUFBQXNBY1E4QUFDTUFBQUFLQU0wUEFBQWtBQUFBQ3dEUkR3QUFKQUFBQUFv
QUxSRUFBQ1VBCkFBQUxBREVSQUFBbEFBQUFDZ0JORVFBQUlBRUFBQXNBVVJFQUFDQUJBQUFLQUlR
UkFBQXJBUUFBQ3dDSUVRQUFLd0VBQUFvQU5CVUEKQUM0REFBQUxBRGdWQUFBdUF3QUFDZ0JjRlFB
QUx3TUFBQXNBWUJVQUFDOERBQUFLQVBBVkFBQlVBQUFBQ3dEMEZRQUFWQUFBQUFvQQpEeFlBQUU4
QkFBQUxBQk1XQUFCUEFRQUFDZ0F1RmdBQUxRRUFBQXNBTWhZQUFDMEJBQUFLQUFzQUFBQUJBQUFB
Q2dBQUFBSUFBQUFFCkFBQUFCUUFBQUFRQUFBQWxVRVJHTFRFdU13b2x4T1h5NWV1bjg2RFF4TVlL
TkNBd0lHOWlhZ284UENBdlRHVnVaM1JvSURVZ01DQlMKSUM5R2FXeDBaWElnTDBac1lYUmxSR1Zq
YjJSbElENCtDbk4wY21WaGJRcDRBVVZRTzA3RVVBenNjNG81Z2RkK0gzL3FGRWhJRktzVQpIQ0Rp
VXdTa0pRWFh4eTloUVpHZVBHUFBqSjBicnJpQjg1TU9hZmg2d1RNK2NabDN3Ym9mRGNhKzR2S1F4
TnNnbkNJVUgxbDFZdTdZClVNOXEycUFvdjV4QzVCZ2M3Vk95NFIydkVDb2QzeEE4b3VGcCtKYmhl
d1RPeXhrNExUT0VxYlhJY1hiTE5DblVwS1M5dEFLcFpDWm8KVk0zdlFDblVzZDVoa01vUVZZMHBO
M0ZQeEZTYkRUS2s1dVNDb0N4cVBtMGtaS0JFUWg5L1FxaUs1RjNGamtzR0dBa3haY0xaY3pJcAp6
S2V2NVZKTWhTTTl1YVNFeVZXUEVDT0xsazVpUFZPY0d0ZWg2dFJDSmljdk5xQ1NxR1gzRDBZZXVQ
NFRsbXQ1d3RvMTMxNFBrWkg2CklMMW83clhnK2dNKysxeTdDbVZ1WkhOMGNtVmhiUXBsYm1Sdllt
b0tOU0F3SUc5aWFnb3lOalVLWlc1a2IySnFDaklnTUNCdlltb0sKUER3Z0wxUjVjR1VnTDFCaFoy
VWdMMUJoY21WdWRDQXpJREFnVWlBdlVtVnpiM1Z5WTJWeklEWWdNQ0JTSUM5RGIyNTBaVzUwY3lB
MApJREFnVWlBdlRXVmthV0ZDYjNnZ1d6QWdNQ0F4TlNBeE5GMEtQajRLWlc1a2IySnFDallnTUNC
dlltb0tQRHdnTDFCeWIyTlRaWFFnCld5QXZVRVJHSUYwZ0wwTnZiRzl5VTNCaFkyVWdQRHdnTDBO
ek1TQTNJREFnVWlBK1BpQXZSWGgwUjFOMFlYUmxJRHc4SUM5SGN6SWcKT0NBd0lGSUtMMGR6TVNB
NUlEQWdVaUErUGlBK1BncGxibVJ2WW1vS09DQXdJRzlpYWdvOFBDQXZWSGx3WlNBdlJYaDBSMU4w
WVhSbApJQzlUUVNCMGNuVmxJRDQrQ21WdVpHOWlhZ281SURBZ2IySnFDanc4SUM5VWVYQmxJQzlG
ZUhSSFUzUmhkR1VnTDA5UVRTQXhJRDQrCkNtVnVaRzlpYWdveE1DQXdJRzlpYWdvOFBDQXZUR1Z1
WjNSb0lERXhJREFnVWlBdlRpQXpJQzlCYkhSbGNtNWhkR1VnTDBSbGRtbGoKWlZKSFFpQXZSbWxz
ZEdWeUlDOUdiR0YwWlVSbFkyOWtaU0ErUGdwemRISmxZVzBLZUFHRmxFMUlGR0VZeC8rempRU3hC
dEdYQ01YUQp3U1JVSmd0U0F0UDFLMU8yWmRWTUNXS2RmWGVkSEdlbm1kMHRSU0tFNkpoMWpDNVdS
SWVJVHVHaFE2YzZSQVNaZFltZ28wVVFCVjRpCnR2ODdrN3RqVkw0d003OTVudi83ZkwzREFGV1BV
bzVqUlRSZ3lzNjd5ZDZZZG5wMFROdjhHbFdvUmhSY0tjTnpPaEtKQVorcGxjLzEKYS9VdEZHbFph
cFN4MXZzMmZLdDJtUkJRTkNwM1pBTStMSGs4NE9PU0wrU2RQRFZuSkJzVHFUVFpJVGU0UThsTzhp
M3kxbXlJeDBPYwpGcDRCVkxWVGt6TWNsM0VpTzhndFJTTXJZejRnNjNiYXRNbnZwVDN0R1ZQVXNO
L0lOemtMMnJqeS9VRGJIbURUaTRwdHpBTWUzQU4yCjExVnM5VFhBemhGZzhWREY5ajNwejBmWjlj
ckxIR3Iyd3luUkdHdjZVQ3A5cndNMjN3QitYaStWZnR3dWxYN2VZUTdXOGRReUNtN1IKMTdJdzVT
VVExQnZzWnZ6a0d2MkxnNTU4VlF1d3dEbU9iQUg2cndBM1B3TDdId0xiSHdPSmFtQ29GWkhMYkRl
NDh1SWk1d0owNXB4cAoxOHhPNUxWbVhUK2lkZkJvaGRabkcwME5Xc3F5Tk4vbGFhN3doRnNVNlNa
TVdRWE8yVi9iZUk4S2UzaVFUL1lYdVNTODd0K3N6S1ZUClhad2xtdGpXcDdUbzZpWTNrTzlueko0
K2NqMnY5eG0zWnpoZzVZQ1o3eHNLT0hMS3R1SThGNm1KMU5qajhaTmt4bGRVSngrVDg1QTgKNXhV
SFpVemZmaTUxSWtHdXBUMDVtZXVYbWwzYzJ6NHpNY1F6a3F4WU14T2Q4ZC84eGkwa1pkNTkxTngx
TFArYloyMlJaeGlGQlFFVApOdTgyTkNUUml4Z2E0Y0JGRGhsNlRDcE1XcVZmMEdyQ3crUmZsUllT
NVYwV0ZiMVk0WjRWZjg5NUZMaGJ4aitGV0J4ekRlVUltdjVPCi82SXY2d3Y2WGYzemZHMmh2dUta
YzgrYXhxdHJYeGxYWnBiVnlMaEJqVEsrckNtSWI3RGFEbm90WkdtZDRoWDA1SlgxamVIcU12WjgK
YmRtanlSemlhbncxMUtVSVpXckVPT1BKcm1YM1JiTEZOK0huVzh2MnIrbFIrM3oyU1UwbDE3SzZl
R1lwK253MlhBMXIvN09yWU5LeQpxL0RralpBdVBHdWg3bFVQcW4xcWk5b0tUVDJtdHF0dGFoZmZq
cW9ENVIzRG5KV0pDNnpiWmZVcDltQmptdDdLU1ZkbWkrRGZ3aStHCi82VmVZUXZYTkRUNUQwMjR1
WXhwQ2Q4UjNEWndoNVQvdzErekF3M2VDbVZ1WkhOMGNtVmhiUXBsYm1Sdlltb0tNVEVnTUNCdllt
b0sKTnpreUNtVnVaRzlpYWdvM0lEQWdiMkpxQ2xzZ0wwbERRMEpoYzJWa0lERXdJREFnVWlCZENt
VnVaRzlpYWdveklEQWdiMkpxQ2p3OApJQzlVZVhCbElDOVFZV2RsY3lBdlRXVmthV0ZDYjNnZ1d6
QWdNQ0F4TlNBeE5GMGdMME52ZFc1MElERWdMMHRwWkhNZ1d5QXlJREFnClVpQmRJRDQrQ21WdVpH
OWlhZ294TWlBd0lHOWlhZ284UENBdlZIbHdaU0F2UTJGMFlXeHZaeUF2VUdGblpYTWdNeUF3SUZJ
Z1BqNEsKWlc1a2IySnFDakVnTUNCdlltb0tQRHdnTDFCeWIyUjFZMlZ5SUNoTllXTWdUMU1nV0NB
eE1DNDJJRkYxWVhKMGVpQlFSRVpEYjI1MApaWGgwS1NBdlEzSmxZWFJwYjI1RVlYUmxJQ2hFT2pJ
d01EWXdNakUwTVRJek1USXlMVEE0SnpBd0p5a0tMMDF2WkVSaGRHVWdLRVE2Ck1qQXdOakF5TVRR
eE1qTXhNakl0TURnbk1EQW5LU0ErUGdwbGJtUnZZbW9LZUhKbFpnb3dJREV6Q2pBd01EQXdNREF3
TURBZ05qVTEKTXpVZ1ppQUtNREF3TURBd01UYzJNeUF3TURBd01DQnVJQW93TURBd01EQXdNemd3
SURBd01EQXdJRzRnQ2pBd01EQXdNREUyTXpJZwpNREF3TURBZ2JpQUtNREF3TURBd01EQXlNaUF3
TURBd01DQnVJQW93TURBd01EQXdNell4SURBd01EQXdJRzRnQ2pBd01EQXdNREEwCk9ESWdNREF3
TURBZ2JpQUtNREF3TURBd01UVTVOaUF3TURBd01DQnVJQW93TURBd01EQXdOVGc1SURBd01EQXdJ
RzRnQ2pBd01EQXcKTURBMk16WWdNREF3TURBZ2JpQUtNREF3TURBd01EWTRNU0F3TURBd01DQnVJ
QW93TURBd01EQXhOVGMySURBd01EQXdJRzRnQ2pBdwpNREF3TURFM01UTWdNREF3TURBZ2JpQUtk
SEpoYVd4bGNnbzhQQ0F2VTJsNlpTQXhNeUF2VW05dmRDQXhNaUF3SUZJZ0wwbHVabThnCk1TQXdJ
RklnTDBsRUlGc2dQRVJET0RsRk5qUTJPVVE1T0RFeFJFRTRRVEpFTURBd1JEa3pOekJCUTBJNFBn
bzhSRU01UVRNMU1qZzUKUkRrNE1URkVRVGhCTWtRd01EQkVPVE0zTUVGRFFqZytJRjBnUGo0S2Mz
UmhjblI0Y21WbUNqRTVNRE1LSlNWRlQwWUtKVkJFUmkweApMak1LSmNUbDh1WHJwL09nME1UR0Nq
UWdNQ0J2WW1vS1BEd2dMMHhsYm1kMGFDQTFJREFnVWlBdlJtbHNkR1Z5SUM5R2JHRjBaVVJsClky
OWtaU0ErUGdwemRISmxZVzBLZUFFdGl6c09nQ0FVQkh0UE1TY1FuZ3JSMnNLYXlnTVFQd1dhS1Bk
UDVHTzIyY3pzUGpnZWRJb1kKWk9EZFdMbFJjeFI4TEVJVFBXcEo0TWhnYktmSmNxVm1XcTBOZ2I2
MkptRHBmbVlSS2NPczZ5VndzdU0rdkRvWS9ncGxibVJ6ZEhKbApZVzBLWlc1a2IySnFDalVnTUNC
dlltb0tPVEVLWlc1a2IySnFDaklnTUNCdlltb0tQRHdnTDFSNWNHVWdMMUJoWjJVZ0wxQmhjbVZ1
CmRDQXpJREFnVWlBdlVtVnpiM1Z5WTJWeklEWWdNQ0JTSUM5RGIyNTBaVzUwY3lBMElEQWdVaUF2
VFdWa2FXRkNiM2dnV3pBZ01DQXgKTlNBeE5GMEtQajRLWlc1a2IySnFDallnTUNCdlltb0tQRHdn
TDFCeWIyTlRaWFFnV3lBdlVFUkdJRjBnTDBOdmJHOXlVM0JoWTJVZwpQRHdnTDBOek1TQTNJREFn
VWlBK1BpQXZSWGgwUjFOMFlYUmxJRHc4SUM5SGN6RWdPQ0F3SUZJS1BqNGdQajRLWlc1a2IySnFD
amdnCk1DQnZZbW9LUER3Z0wxUjVjR1VnTDBWNGRFZFRkR0YwWlNBdlQxQk5JREVnUGo0S1pXNWti
MkpxQ2prZ01DQnZZbW9LUER3Z0wweGwKYm1kMGFDQXhNQ0F3SUZJZ0wwNGdNeUF2UVd4MFpYSnVZ
WFJsSUM5RVpYWnBZMlZTUjBJZ0wwWnBiSFJsY2lBdlJteGhkR1ZFWldOdgpaR1VnUGo0S2MzUnla
V0Z0Q25nQmhaUk5TQlJoR01mL3M0MEVzUWJSbHdqRjBNRWtWQ1lMVWdMVDlTdFR0bVhWVEFsaW5Y
MTNuUnhuCnA1bmRMVVVpaE9pWWRZd3VWa1NIaUU3aG9VT25Pa1FFbVhXSm9LTkZFQVZlSXJiL081
TzdZMVMrTURPL2VaNy8rM3k5d3dCVmoxS08KWTBVMFlNck91OG5lbUhaNmRFemIvQnBWcUVZVVhD
bkRjem9TaVFHZnFaWFA5V3YxTFJScFdXcVVzZGI3Tm55cmRwa1FVRFFxZDJRRApQaXg1UE9Eamtp
L2tuVHcxWnlRYkU2azAyU0UzdUVQSlR2SXQ4dFpzaU1kRG5CYWVBVlMxVTVNekhKZHhJanZJTFVV
aksyTStJT3QyCjJyVEo3NlU5N1JsVDFMRGZ5RGM1QzlxNDh2MUEyeDVnMDR1S2Jjd0RIdHdEZHRk
VmJQVTF3TTRSWVBGUXhmWTk2YzlIMmZYS3l4eHEKOXNNcDBSaHIrbEFxZmE4RE50OEFmbDR2bFg3
Y0xwViszbUVPMXZIVU1ncHUwZGV5TU9VbEVOUWI3R2I4NUJyOWk0T2VmRlVMc01BNQpqbXdCK3E4
QU56OEMreDhDMng4RGlXcGdxQldSeTJ3M3VQTGlJdWNDZE9hY2FkZk1UdVMxWmwwL29uWHdhSVhX
Wnh0TkRWcktzalRmCjVXbXU4SVJiRk9rbVRGa0Z6dGxmMjNpUENudDRrRS8yRjdra3ZPN2ZyTXls
VTEyY0paclkxcWUwNk9vbU41RHZaOHllUG5JOXIvY1oKdDJjNFlPV0FtZThiQ2poeXlyYmlQQmVw
aWRUWTQvR1RaTVpYVkNjZmsvT1FQT2NWQjJWTTMzNHVkU0pCcnFVOU9abnJsNXBkM05zKwpNekhF
TTVLc1dETVRuZkhmL01ZdEpHWGVmZFRjZFN6L20yZHRrV2NZaFFVQkV6YnZOalFrMFlzWUd1SEFS
UTRaZWt3cVRGcWxYOUJxCndzUGtYNVVXRXVWZEZoVzlXT0dlRlgvUGVSUzRXOFkvaFZnY2N3M2xD
SnIrVHYraUwrc0wrbDM5ODN4dG9iN2ltWFBQbXNhcmExOFoKVjJhVzFjaTRRWTB5dnF3cGlHK3cy
ZzU2TFdScG5lSVY5T1NWOVkzaDZqTDJmRzNabzhrYzRtcDhOZFNsQ0dWcXhEamp5YTVsOTBXeQp4
VGZoNTF2TDlxL3BVZnQ4OWtsTkpkZXl1bmhtS2ZwOE5sd05hLyt6cTJEU3Nxdnc1STJRTGp4cm9l
NVZENnA5YW92YUNrMDlwcmFyCmJXb1gzNDZxQStVZHc1eVZpUXVzMjJYMUtmWmdZNXJleWtsWFpv
dmczOEl2aHYrbFhtRUwxelEwK1E5TnVMbU1hUW5mRWR3MmNJZVUKLzhOZnN3TU4zZ3BsYm1SemRI
SmxZVzBLWlc1a2IySnFDakV3SURBZ2IySnFDamM1TWdwbGJtUnZZbW9LTnlBd0lHOWlhZ3BiSUM5
SgpRME5DWVhObFpDQTVJREFnVWlCZENtVnVaRzlpYWdveklEQWdiMkpxQ2p3OElDOVVlWEJsSUM5
UVlXZGxjeUF2VFdWa2FXRkNiM2dnCld6QWdNQ0F4TlNBeE5GMGdMME52ZFc1MElERWdMMHRwWkhN
Z1d5QXlJREFnVWlCZElENCtDbVZ1Wkc5aWFnb3hNU0F3SUc5aWFnbzgKUENBdlZIbHdaU0F2UTJG
MFlXeHZaeUF2VUdGblpYTWdNeUF3SUZJZ1BqNEtaVzVrYjJKcUNqRWdNQ0J2WW1vS1BEd2dMMUJ5
YjJSMQpZMlZ5SUNoTllXTWdUMU1nV0NBeE1DNDJJRkYxWVhKMGVpQlFSRVpEYjI1MFpYaDBLU0F2
UTNKbFlYUnBiMjVFWVhSbElDaEVPakl3Ck1EWXdNakUwTVRJek1UVXhMVEE0SnpBd0p5a0tMMDF2
WkVSaGRHVWdLRVE2TWpBd05qQXlNVFF4TWpNeE5URXRNRGduTURBbktTQSsKUGdwbGJtUnZZbW9L
ZUhKbFpnb3dJREV5Q2pBd01EQXdNREF3TURBZ05qVTFNelVnWmlBS01EQXdNREF3TVRVeU9DQXdN
REF3TUNCdQpJQW93TURBd01EQXdNakExSURBd01EQXdJRzRnQ2pBd01EQXdNREV6T1RjZ01EQXdN
REFnYmlBS01EQXdNREF3TURBeU1pQXdNREF3Ck1DQnVJQW93TURBd01EQXdNVGczSURBd01EQXdJ
RzRnQ2pBd01EQXdNREF6TURjZ01EQXdNREFnYmlBS01EQXdNREF3TVRNMk1pQXcKTURBd01DQnVJ
QW93TURBd01EQXdOREF6SURBd01EQXdJRzRnQ2pBd01EQXdNREEwTkRnZ01EQXdNREFnYmlBS01E
QXdNREF3TVRNMApNaUF3TURBd01DQnVJQW93TURBd01EQXhORGM0SURBd01EQXdJRzRnQ25SeVlX
bHNaWElLUER3Z0wxTnBlbVVnTVRJZ0wxSnZiM1FnCk1URWdNQ0JTSUM5SmJtWnZJREVnTUNCU0lD
OUpSQ0JiSUR4RlJFWXpSVEk1UXpsRU9UZ3hNVVJCT0VFeVJEQXdNRVE1TXpjd1FVTkMKT0Q0S1BF
VkVSa0ZGUTBNeE9VUTVPREV4UkVFNFFUSkVNREF3UkRrek56QkJRMEk0UGlCZElENCtDbk4wWVhK
MGVISmxaZ294TmpZNApDaVVsUlU5R0NnQUFBQUFBQUFBbFVFUkdMVEV1TkEwbDR1UFAwdzBLTVNB
d0lHOWlhZzA4UEM5TlpYUmhaR0YwWVNBeUlEQWdVaTlRCllXZGxjeUF6SURBZ1VpOVVlWEJsTDBO
aGRHRnNiMmMrUGcxbGJtUnZZbW9OTWlBd0lHOWlhZzA4UEM5TVpXNW5kR2dnTVRrMk1UVXYKVTNW
aWRIbHdaUzlZVFV3dlZIbHdaUzlOWlhSaFpHRjBZVDQrYzNSeVpXRnREUW84UDNod1lXTnJaWFFn
WW1WbmFXNDlJdSs3dnlJZwphV1E5SWxjMVRUQk5jRU5sYUdsSWVuSmxVM3BPVkdONmEyTTVaQ0kv
UGdvOGVEcDRiWEJ0WlhSaElIaHRiRzV6T25nOUltRmtiMkpsCk9tNXpPbTFsZEdFdklpQjRPbmh0
Y0hSclBTSkJaRzlpWlNCWVRWQWdRMjl5WlNBMExqSXVNaTFqTURZeklEVXpMak0xTWpZeU5Dd2cK
TWpBd09DOHdOeTh6TUMweE9Eb3dOVG8wTVNBZ0lDQWdJQ0FnSWo0S0lDQWdQSEprWmpwU1JFWWdl
RzFzYm5NNmNtUm1QU0pvZEhSdwpPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmta
aTF6ZVc1MFlYZ3Ribk1qSWo0S0lDQWdJQ0FnUEhKa1pqcEVaWE5qCmNtbHdkR2x2YmlCeVpHWTZZ
V0p2ZFhROUlpSUtJQ0FnSUNBZ0lDQWdJQ0FnZUcxc2JuTTZlRzF3UFNKb2RIUndPaTh2Ym5NdVlX
UnYKWW1VdVkyOXRMM2hoY0M4eExqQXZJZ29nSUNBZ0lDQWdJQ0FnSUNCNGJXeHVjenA0YlhCSFNX
MW5QU0pvZEhSd09pOHZibk11WVdSdgpZbVV1WTI5dEwzaGhjQzh4TGpBdlp5OXBiV2N2SWo0S0lD
QWdJQ0FnSUNBZ1BIaHRjRHBEY21WaGRHOXlWRzl2YkQ1QlpHOWlaU0JKCmJHeDFjM1J5WVhSdmNp
QkRVelE4TDNodGNEcERjbVZoZEc5eVZHOXZiRDRLSUNBZ0lDQWdJQ0FnUEhodGNEcERjbVZoZEdW
RVlYUmwKUGpJd01Ea3RNVEV0TWpOVU1UTTZOVGM2TVRndE1EZzZNREE4TDNodGNEcERjbVZoZEdW
RVlYUmxQZ29nSUNBZ0lDQWdJQ0E4ZUcxdwpPazFsZEdGa1lYUmhSR0YwWlQ0eU1EQTVMVEV4TFRJ
elZERXpPalUzT2pFNExUQTRPakF3UEM5NGJYQTZUV1YwWVdSaGRHRkVZWFJsClBnb2dJQ0FnSUNB
Z0lDQThlRzF3T2sxdlpHbG1lVVJoZEdVK01qQXdPUzB4TVMweU0xUXhNem8xTnpveE9DMHdPRG93
TUR3dmVHMXcKT2sxdlpHbG1lVVJoZEdVK0NpQWdJQ0FnSUNBZ0lEeDRiWEE2VkdoMWJXSnVZV2xz
Y3o0S0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwQgpiSFErQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5
WkdZNmJHa2djbVJtT25CaGNuTmxWSGx3WlQwaVVtVnpiM1Z5WTJVaVBnb2dJQ0FnCklDQWdJQ0Fn
SUNBZ0lDQWdJQ0E4ZUcxd1IwbHRaenAzYVdSMGFENHlOVFk4TDNodGNFZEpiV2M2ZDJsa2RHZytD
aUFnSUNBZ0lDQWcKSUNBZ0lDQWdJQ0FnSUR4NGJYQkhTVzFuT21obGFXZG9kRDR5TVRJOEwzaHRj
RWRKYldjNmFHVnBaMmgwUGdvZ0lDQWdJQ0FnSUNBZwpJQ0FnSUNBZ0lDQThlRzF3UjBsdFp6cG1i
M0p0WVhRK1NsQkZSend2ZUcxd1IwbHRaenBtYjNKdFlYUStDaUFnSUNBZ0lDQWdJQ0FnCklDQWdJ
Q0FnSUR4NGJYQkhTVzFuT21sdFlXZGxQaTg1YWk4MFFVRlJVMnRhU2xKblFVSkJaMFZCVTBGQ1NV
RkJSQzgzVVVGelZVZG8KZG1SSE9YcGhSemwzU1VSTmRVMUJRVFJSYTJ4T1FTc3dRVUZCUVVGQlFr
RkJVMEZCUVVGQlJVRW1JM2hCTzBGUlFrbEJRVUZCUVZGQgpRaThyTkVGRWEwWnJZakpLYkVGSFZF
RkJRVUZCUVdZdllrRkpVVUZDWjFGRlFrRlZSVUpuVlVaQ1oydEhRbEZaU2tOM1owZENaMmRNClJF
RnZTME4zYjBzbUkzaEJPMFJDUVUxRVFYZE5SRUYzVVVSQk5GQkZRVGhQUkVKTlZFWkNVVlJGZUhk
aVIzaHpZMGg0T0daSWVEaG0KU0hnNFpraDNSVWhDZDJOT1JFRXdXVVZDUVZsSGFGVlNSbEp2Wmto
NE9HWW1JM2hCTzBoNE9HWkllRGhtU0hnNFpraDRPR1pJZURobQpTSGc0WmtoNE9HWkllRGhtU0hn
NFpraDRPR1pJZURobVNIZzRaa2g0T0daSWVEaG1TSGc0Wmk4NFFVRkZVV2RCTVVGRlFVRjNSVklt
CkkzaEJPMEZCU1ZKQlVVMVNRV1l2UlVGaFNVRkJRVUZJUVZGRlFrRlJSVUZCUVVGQlFVRkJRVUZC
VVVaQmQwbEhRVkZCU0VOQmEwdEQKZDBWQlFXZEpSRUZSUlVKQlVVVkJRVUZCUVVGQlFVRW1JM2hC
TzBGUlFVTkJkMUZHUW1kalNVTlJiMHhGUVVGRFFWRk5SRUZuVVVOQwpaMk5FUWtGSlIwRnVUVUpC
WjAxU1FrRkJSa2xTU1hoUlZrVkhSVEpGYVdOWlJWVk5jRWRvUW5oWGVGRnBVRUltSTNoQk8xVjBT
R2hOCmVGcHBPRU5TZVdkMlJXeFJlbEpVYTNGTGVWa3pVRU5PVlZGdWF6WlBlazVvWkZWYVNGUkVN
SFZKU1VwdlRVcERhR2RhYUVwU1JsSngKVXpCV2RFNVdTMEp5ZVRRdlVFVW1JM2hCT3pGUFZEQmFX
RmRHYkdGWE1YaGtXR3c1VjFveWFIQmhiWFJ6WWxjMWRsa3pVakZrYm1RMApaVmh3TjJaSU1TdG1N
MDlGYUZsaFNHbEpiVXRwTkhsT2FtOHJRMnMxVTFac2NHVlpiVm9tSTNoQk8zRmlia295Wlc0MVMy
cHdTMWR0CmNEWnBjSEZ4ZFhOeVlUWjJiMUpCUVVsRFFWRkpSRUpSVlVWQ1VWbEZRMEZOUkdKUlJV
RkJhRVZFUWtORlUwMVZSVVpWVWs1b1NXZGEKZUdkYVJYa21JM2hCTzI5aVNIZEdUVWhTTkZOT1Ew
WldTbWxqZGtWNlNrUlNSR2RvWVZOVmVWZHBXVGRNUTBJelVGTk9aVXBGWjNoawpWV3QzWjBwRGFH
ZGFTbXBhUmtkcFpHdGtSbFV6T0hGUGVuZDVaM0FtSTNoQk96QXJVSHBvU2xOcmRFMVVWVFZRVW14
a1dWZFdjR0pZClJqRmxXREZTYkZwdFpHOWhWM0J5WWtjeGRXSXlVakZrYm1RMFpWaHdOMlpJTVN0
bU0wOUZhRmxoU0dsSmJVdHBOSGxPYW04bUkzaEIKT3l0RWJFcFhWMncxYVZwdGNIVmpibG8yWm10
eFQydHdZV0Z1Y1V0dGNYRTJlWFJ5Y1N0MkwyRkJRWGRFUVZGQlEwVlJUVkpCUkRoQgpPVlUwY1Rk
R1dGbHhOMFpYYm1SRlVtNWtaM0VtSTNoQk8wdERWMWx0WjBGSE5VcEtlRlpvSzNRdmJrWXJWaXRw
Um13eFJIcE1XWEpKCmRqSnZiMHBRY2sxbmNESkxWelJzWVhaMFZFWlhRaloyTDNkQk5XSm1iRzVo
VmxkNGREbFJNVW92TWxjbUkzaEJPMnBvVTB0TkwwMTUKZFdwcUwwRkpSRVpYU1dGdUwzZEJOVzFV
UjNFMldEVllWbVpEVnpaMWVURmtMelZGYVZndmFXVkxNSGhtVlZBclkzVjJlazExUzJreApkRTVO
YzJ3dldrdFJlWGttSTNoQk8xQTVTbXRzV21ZclJuaFVWRWczTXk5QlNubFZMMDlUTmtKVllUWk1a
RWMyY2tSaE1uRTVOamROCldXMWpabVpwZEVwS1l5OXVVaXRoTVhkaGVXVmhaRkZZY2k5a2VrZE1j
aTkzUVZrbUkzaEJPeXRQU3pCc1pIZ3JXVkJ1TmpWWlRtTmwKV21SV2JWbERaMDFzTjJOTllXVkhO
MjVHVlhWc01UZFlTbXhEZW1GcVpGTkxSRlZMT0RCcVEzWnFkVEpMYjFkaE5uVmFObVYyU3poMgpS
M1ltSTNoQk8waHRlR0ZzWlhSTE5IRndXWEUzUmxoWmNUSnlUV3BDTUVwV2JFNVdXV0pGUldSRFJH
bHhTMm94Wmxadk0wUjRNM00yClQwOXFURXMwU1N0clNFWlZXa1ExZGpoQlRuTkJTV2N4ZFM4bUkz
aEJPMmxFWm1FMFdGVjVNWEEwTUdKR1ZUQjBMM3BZTDAwMlJDczMKT0RFMmMyVnRlak56TjJwaWQw
UjFNVTFXVkdFd0wxQXZPRUZQUnpCWlIweDZUbU5OVVZObU16QmpSWGN6Ums5cmMySW1JM2hCT3pS
eQpVMlF5WmpoQmVteE9LMkl4ZGxReFlqSXhka3RrWmxkMFdXaFlZVzB2Y0VOTU5UUnlWRWx5U0M5
dVRWaDZjV2hJTVRkU1RrNTFRVTkyCmJ5dDJRMVF2ZDBGR1NrNXBhVzFWTmxvbUkzaEJPeTkzUVRW
c05rMDFRVEZRZVhwak1qUXZZV0V5ZFZWdUt6UlBhMGcyT0ZaYWFuQkkKTDBGRWJFb3JWV1FyVmtV
NU5XUmhXWHBWTW5VM1ducFJibk5VUWpZMEwwaEdWMlJoUml0WmJtc21JM2hCTzFSWWFYRTJVbkk1
YW1WVApkSE5KUlc1cU9WaG1jQ3MyV1dndmQzaFdhMDlMZFhoV01rdDFlRll5UzNWNFZqSkxjMDQ0
TDJadE16VklPR3BSTHpkdE56UkhLMXBsClZWZHRNalE1VnpVbUkzaEJPMk5rZG1kQ1FWRkllR05u
V1hFclpWQlBVRGhCZW14Nk5YY3hRWFpDTlZwemIyUkdkR3BWVEdOVE1IVmkKYTJwNEswbERTbVpz
ZDJJMU5ISlVlVVI2UkRVeU9ETXJXVE5NTmpkeVJqTW1JM2hCTzNGQlNuRkpOVFZZWVU1VUwwRktU
V1JsUXk5UgpUVlZ3U21seWMxWmthWEp6Vm1ScGNuTldaR2x5YzFaa2FYSnpWbVJwY25OV1pHbHlj
MVprYVhKelZtUnBjbk5XWkdseWMxWmthWEltCkkzaEJPM05XV2xBMVl5OU5NemgzVUV4aVRDdG9k
R1YyVEZkT1MwWmlZM2xIVjBSaUwybHRXRzVGWml0Q2VGWTJPVFZTTHpWNUx6aDQKVjNCVFNIcFVj
RlZQYjNkcVduSjFlbEF4WldWdWFWVW1JM2hCTzFCTFRtbzRkVWRMUzJaUlNHdFVPREYyU1M5dVpV
aHNiMWR2U3preQpielZUTm1SUFVGTjFhMGgyUjJaMFJDOUxVV3RsSzB0emRYaFdNa3QxZUZZMVRp
OTZhMGdyWWpodWExUlJTWEltSTNoQk8waFRiVmd2ClJXMXlRbWhoYzFGSFJuWkRkWHA2YTBnNWNY
QTBiMFIwVjNBdlduQnBjalJ6ZG1JeU9IWnlkV0U0ZGxvemRXSjFORmw1VkhwNWMxaGsKTTJKamMz
cE9WV3MwY0ZWTlZtUW1JM2hCTzJseWMxWmthWEp6Vm1ScGNuTldaR2x5YzFaa2FYSnpWbVJwY25O
V1pHbHljMVprYVhKegpWbVJwY25OV1pHbHljMVprYVhKelZtUnBjbk5XWkdseGRsa3pPVGR3T1RW
RVpUSk5PR3dtSTNoQk8zSmtNamRDTkV4cFNtbHFiM2MyClJsZEdRMDFXWm1GSUwwRkVhalVyWTFR
clpUbEdiREF6VmpOWUwwVjFiRzl3ZFVOQlJpdHpVV0pMY3pSVlpuUkJMME01VG5Fd1VHVnQKUzBo
eWJVc21JM2hCTzNWNFZqaENabTVLTlhwbWVtWXJXWFZ5Tm5GemFHVjVVMVV5ZFc1RWMweGhNMHBT
UTNZcmRXRjJPREpQUzFkRgpOSEUzUmxoWmNUZEdXRmx4TjBaWVdYRTNSbGhaY1RkR1dGbHhOMFlt
STNoQk8xaFpjVGRHV0ZseE4wWllXWEUzUmxoWmNUZEdXRmx4Ck4wWllXWEUzUmxoWmNUZEdXRmx4
TjBaWFZTOXNiRFV3ZFZCS2JtNW1VemxtYWxrcmFtSjVhRXd5VFdJNE4yRlVORnBzY0RNbUkzaEIK
TzFCQk1WZ3pRWGhXSzJoRlZYTmpjMU5UZUUxSWFtdFZUV3B4WVdkeGQzRkRSRGMwYjFsMEsyRXpi
VWtyV0ZCNU5UaDNOblZxWTBwdgpURTlTVEdRMk1EUjZlaTkxV1ZRNVJXdHBOSEVtSTNoQk95OVFa
a1pNYzFaa2FYSnpWbEpsYldGVWNXMXhNMmxYVjIxWGF6RTVaVk5tCldYUTNaVTV3V2tRNGJGRkZO
SEU1V1Roekx6ZzBjbVp0WkhGNWNreHhRMWN5YVZGT2RsTTNhelY2VlZBbUkzaEJPMmhJUTBwT0wx
cHQKV0VaaVpXZzJZaTlCVFRSaFlVOXBTMlJVT0hrelJUY3dLMGxYTVhWclNVSTVhVGQ2VmlzM1Jr
TmtSQzlCU25jckwweFRiU3R3Tm5wWQpkamhCZGpkWUwwRk1Tbk1tSTNoQk8xWlJPVE12ZDBFMFpD
dFNTRmd2VVRsYU1WTkdjV1JhYW1KNWFYWjVWMHRNUmxkS1lUTXZlbWgyCmNtdFJUR0ZLTldsMGNu
TXdjVWszZVVZM1l6RTRUMVZhYm5JNWQzaFhNMnN2YmtRbUkzaEJPemh1TDNwR09HOXhPREp6Tms1
TmRHdHQKTlhZMFMxUXlORWhwTUd0bVNVb3ZjelpaY0ZsYWFYSnpWbVJwY25OV1pHbHljMVprYVhK
elZtUnBjazltUzBnMVMyWnRWalZ5VTA5aQpVemttSTNoQk8wZHNhbk53UWxaaU5qZHdZbmRHVkNz
d2NsTlZUR292VlVKNFZqWjBiMll2UVVSb2RIRnphWEVyZFN0Wk5FeGpMM1JSCk1sVkVlaTlTTm10
d2FIQXZkMGRMVEZwV1lXWTRRVTlJWm1zbUkzaEJPMFpWY0dRMmVIRnplamRtUmtVeGRFVlFabHB2
V21ZeE5IRnkKVUM5QlRUUm1abXh6VlZsS2NXMXpjVGxFZUVwdGRGTkJaVEZSVEZsV0t5OUdWV294
VUM5QlNuY3dNREZyV1RaWU5XMG1JM2hCTzIxcApaamxvVEhFeVYxRklNa3hKT0dSUUswSjRWalV4
Tlc0dk5YaGpMMDVJVW10bFlYcG5kRGxpZERFemNsbDVablpSVUdWTFZWSnpWRGRLCmVYaFVZbmx0
THpBckwzZENVSFUxVEU4bUkzaEJPeTkwY0dKVE4ybFFSMWN6YmxKdk5VWlFaM2x6UVZKcGNVaDRW
akpMZFhoV09UTm0KT0RRdlpWcHRPSGRtYkZKdmF6aHliVk0yYzFWaVZEZHJibU00Y2xVNFJYRmxO
VTFZUVM5VWFXZ21JM2hCTzJsWUwwOVlaWFJtVmxCNQpOM04wVFZKeFUyRnVjVU5DZURSNFVVa3dh
bVk0VUhkNFZqaG1XWEJrYVhKelZtVTJabXhNTDNwcVNISlFiVk5MU0ZkUVRtSlRObEp2CmMyZEVk
MWRwWjBNbUkzaEJPemQxUms4MFRrY3ZkVlZRYVhkS1VHZ3plRkVyY0daTE0ydDZlWFkxVm5OR2My
Wk1LMjEzTWtWQlFVUnQKVG1ZemEyeFBPR3RvY1RkdU0xbHVSbFUyZUZZeVMzVjRWakpMZFhoV2Vr
c21JM2hCTzBkQ1ZtZERjRVpEUkRCSmVGWTBOeXRoU0M5UApUbGhzVEhwWGF6RXZiMkZTTmtaeWVs
WlpVRVYwVEZOYWNXUktXV3dyZVZObU1qQkdaVFZFV1hFclVsQk9TR3hZV0haTEszTjZOazRtCkkz
aEJPM0pzY1RGd1pqSTFLMHBITTFac1VESllVbWc0VEVzeldXcEdTMVUwY1RkR1dGbHhOMFpZV1hG
NWJqaDJMM2RCZEM5T1VHNTIKVm5od0syZ3lNMHBGYjJKMU9XeHhkSFpCY0M5aGEyVW1JM2hCTzJn
cmFGSldhakpIUzNaeWFqaDBkaXRqWldaSkwyc3lUMHMyZFZsVwpNWEpZUm05NldEa3daMHRKTkM4
emVFTmxVM0EzUlRGaU0zaFJPVk40VmpKTGRYaFdNa3QxZUZZeVMzTmtPRFVtSTNoQk95OXNOelZS
Ck9EVlhTblJRVFVkdVVqTldRVlpvZFdGalltbE1MMnBJUzFCcVdHWmxiR0ZJZFUxV1pra3pOWGN2
YTBKeU0ydE5kbkZrYVRjMmNEVmEKU2k4emMwTXdiSFEyYldkWE5GWW1JM2hCTzJSMWNHOUlSM2d2
ZVdWdFMxaHJLMHQxZUZZNVUyWTRRVTlIZFhRNE9VMDRlRFpIZWk5MwpRbmhRUW1aUmVDdFFja2xa
Y0VOUWJEWkxWbmhSYXk5M1JIcHRWbkZvWmxjdlRHVnNRblFtSTNoQk8zSmxNbTUxYlZnemJtdFhU
VVV2Ck9FRkpaelJ4U0hwdWFXd3lTM1p4VEM5dVNHbzRaMGxKY21VeU9EVmxZbUpaVTFoRmIwVjFh
MkZXVFhSV2FsVTNjR05VUzJWeVNIRnAKYm5BeFR6a21JM2hCTzB0TFNEQnFhWEp6Vm1ScGNuTlda
R2x5YzFaa2FYSnpWbVJwY2tJdmQwRXlkbmx6TUdvNGQzWk1hakpPZUhobgpNVmN6UkZCd1pXOVZL
MHRMVTI0eVYwbEdWRWN2VW5nNVVGVlpjU3NtSTNoQk8wVjBZakJpVlhSRk1XRTNNRzVWTkZkME55
dDVhMkZICk5HaGljVWRZZHpoUlpXOVFZMkkwY0ZGUFMzVjRWakpMY3pJdlMybzRjazVhTDAxTWVr
Tk9VSFJEWW1aVWNtRnJiWEEyYVZZbUkzaEIKTzNGelRWcE9RVUl2VGtrdk4wTXZWREJDZUZZNWVT
dFZka3RYWnl0Vk9VUjBPVVl3VHpKWE1uTnlZMlpPTlVndllXdHNZamx3TWpkdQpLMGRMUlRSNFZq
SkxkWGhXTWt0MWVGWXlTM1VtSTNoQk8zaFdNa3R4WkRGaE1qRXpZbE15ZERGRmF6bDBUMnBTZWxG
NVMwZFNNRmxWCldsZFZOMFZGV1hFclRGQXJZMmRRZVdGUWExaFhWVEZRVTBreVlubDRjVlJyVnps
VFZ5dHlWRlUxUjBJbUkzaEJPMjFQT1VOT05IbGwKTWpOVlZrdHNOVWhwY2pJekwyNUZhbFpVWVM5
dFltTlhVbEIzWVdwd01EQlpXQzlNYVdSS1VXWnZWa2Q0Vlc5VUwyNUxlUzlPTVN0aQpUWE5DVGxK
Wk1rNTBZbWNtSTNoQk8yVkJXVTVRTDNwUGVGVlFTR05XWlhwbU9EUXhMMnhSYm0wM2VrY3lkVFow
UkRadFoyRkxOblEyClltbHhXRVl4T1hCSmFsaFpjVzR5TTBoNVNGRTBjU3Q2WTFWUGVGWXlTM1Y0
VmpJbUkzaEJPMHQxZUZZeVMzVjRWakpMZFhoV01rdDIKYmtndlFVcDVNUzlNYkVvM1F6STRPRFpt
UkNzdmRGTjBjSEpJUldaaGFGa3daMjFoWnk5WldUaERaa0Z5TkZseEsxZHpWWFY0VmtjMgpURzht
STNoQk95dHZZVEZ4TVhCd1QyNVNSMlVyZG5CV1ozUTBhRE5rZWxGV1VGbGxTbmhXT1N0bWJIQXJX
Q3RzSzFKUVMyeHliMlJwClFUaDNTSEUyYUdSblZXRmxOVmxFYmtsbVltRnBhbk52UjBzbUkzaEJP
MGRXV1hFM1JsaFpjVGRHV0ZseE4wWllXWEUzUmxoWmNUZEcKVld3NE5TdFZPVTA0TW1WWFlpOUJU
WFkyYTI5T2RHWlNSa0pLVTNKU2VVUmxUMVpsYm5oSk5FUkVSbGcxTjJWWlRrUW1JM2hCTzNZNQpR
akY1S3pCWVZVVTBXSFZ1ZW5aaWVtZGtUMU5IYkZaUVpGYzJaeXRIUzFkaEx6ZzBPVE0zVjFBMWR5
dFlTa0ZrY0ZwYVltUm9OR2xsClExTlFPRUZYZDA5TGJGTXZVREk1VGpVbUkzaEJPeXRqU0cxaFZX
MTJSelZUUjNVekt6WkpXVFIxTXl0d2FXOVpURm95YkhobFdHTkcKYm1KSldtSnROV3RYUjBOS1pI
bDZkWGRXVmtoNlNuaFdLMmhJTldObFV6ZFVlVm8xVGpBemVTOG1JM2hCTzJJd1dqZFhUVWMzYlZn
dgpaR3gzTDNoVGRqaEJVelV5Y2pKdlRWVk5iSGhXTWt0MWVGWXlTM1pPVUhwREwzZERZMmRtZVM4
NGJGaE5iVzU2ZWxOaGJuSkZWbEpLCldWZEpWbnBITTJnbUkzaEJPMDVKZUZaRlVHbExiR2cwV1hF
NGVtd3ZkME5qTUVsbk5VVlliRUp0YWk5YVduUlJRMnN2VFVNeVlXNHoKTkhCd2JVaHJlaTlCU25s
dkwwd3ZXSEp4VDNreFYwOWlVVXh0Vm1kelkyd21JM2hCTzNsV2EzUnBWREJ5VDNSUFNIcGtVVkJt
UmtReQpXa2hTTUZZd1dVMXFRVVpYUW5GRFJIVkRRMDFXWW5oV01rdDFlRlpNTDAxUGFESlhkbUZH
WmpaT1preDVkRTVSWjJ0ME5YUnhhME1tCkkzaEJPMUpUZGtsV04zSXhTSFpwY2pnMlRsa3dkVGN3
YmxaeU0xTTNlR1ZHTTFsVWVWY3dOaXRFZUU5VllqaFNhV3hDTkhFcmEyWXIKWTFKUVNVdFVNMVl2
TlRKMldYRnlZV3N5VDJ4amFIUW1JM2hCT3pacVFVZGxVV1UyYjFGbkx6RnRlRkVyYjNOV1pHbHlj
MVprYVhGVQpLMkYyVDBoc2RubHdjR0poY0RWbmRqUTNRM3BWT0ZaYU5teHVZbkozYWxKUldHUjJX
bEZqVm1WSllURXZlbTBtSTNoQk8xSTFaV2QxClIxUlNka3d4ZW1aM1p6QkZNWHBQYkhCWU0wTnhi
SG9yVDB0eFYyeG1PRFZzTms1TVkwdDFjU3RYWW1rd2RIbG1hV3gwY25CTWJHZFEKU0djNFpIWXZR
VTFUZUZZM1pEVW1JM2hCTzA4NE9XVldkazlQYldad1NIazVabkJsVVV0UmMzbERjWGw0VFZKWWFr
eEhNVWRWTDAxVgpVR0YxUzNBNWFYSnpWbVJwY25OV1prcG1MMDlZYm1zNVlrUjZWbkF6YldVelUy
dFhjMUVtSTNoQk8yMUROMWxrVUhKR2MwRkJlQzkzClFtRktiRWdyZUhoVlVFb3ZlWGQxZUZvdmJW
STFWM1ZIVGtWcU1WZDVOVzFzWm1oTk5rSjBhRGRJUmt4MmVsQjFlR1F2YlZJMWNIVkcKVUVwSU1X
RW1JM2hCT3prNVRtZExWbEZZUkdoa2FpOXJaMWx4ZWxndlFVcDRaemh3Y25KdU5XNHlPVGROYms4
d01FOUdOemsyT1VSTApTMUozUkRWb016VnFMMVo0VlhaMFprWkVjMVprYVhKelZtVktMemdtSTNo
Qk96VktMMjVDWXl0VlpFcHBPSFUyU0U0MldHMUVWbGw1Ck9IUjNhQ3RQTW5SaGJHVmhLMFI1UlVa
V1VGbEJibkpVUmxoNGVYcE5la1p0U2t4Rk1VcFBOVXBQUzFkelZtUnBjalpYTHpVbUkzaEIKTzNo
WEwwNXBObUUzU0d0TVYwb3liR2xrUjJzd1MxWjZWVzlaTVRWVFZ6RlVLM3A0UW1SUVEyaElhR2xv
T1U4MGNUZEdXRmx4TjBaWQplRVl2ZW1zemIwczJWQ3RpWlc5NVVuQjNhVEVtSTNoQk8xTkhReTlS
WkdsWVdEQTFSRGxOYzFSSVJrbGxWa0ZGYTBGRGNFOTNRWGhXCksyaG1OVmtyVmtVNGNXVlJkRVl3
U1V4NGJYUmlXbFJrWlRsNFRDczRiVkF2U1hneWVGRjVaa1pZV1hFbUkzaEJPemRHVlhVNGVHRXYK
Y0hac04xRnlOMWM1VkdzNVMzZ3dLMFp3TlRJM2EwdE9iRlZrTWxrd1ZsSXpTbmhXT0VRdmJWQXJX
VzExSzJVdlRXTXljalp3U1ZKRgpRM2xYUm10RVYwOHpaM0ltSTNoQk8xWlZWV1ZRT0hwbWRFaEdU
RVpqVm1ScGNra3ZTVWh1Y2xkMlNsQnRWekl4TTFOd1EwaHBVRWMxCmRHbFRTVFUwVTJacWFXdEla
MUl3T0VSUmFtTlpjU3N2ZDBSNU4zSXlibVZaVGtNbUkzaEJPM05rWWpBMUwxVnpkRkZvVTJWQmJu
RkIKTkhKNFdVUnZlVzVhYURKUFMwVjRlRll5UzNWNFZqVk1MM3BzUkc5Sk1WUTRjSEl5TlZaUk1E
SnJXRVZHTjBnME1EVXJaemxRT1doTgpVMlltSTNoQk8yeHBjalF6T0hWWVNERmlla1J3WkhoNVMy
VnFaSGRUWTJneFNFZFdWRmc0VFZWeWRrMDROWFZRVFhWeVdFSlpUMXB5CmVUUnJUR2xzUkhsc1dU
RXlPR05XWmxRekwwOUlaV2RwTXpnbUkzaEJPM0ZoTTNKcVMwSktaak5wVjNGRk9XWlVkRmtyVmxJ
M1JuQjUKVUc5NFVTdG5jMVprYVhKelZtTjZRbEZYV1dkTFFsVnJPVUZOVm1adWNDdGFkbTB5V0hw
aU5UY3hibGhYWTNSRVl6TW1JM2hCTzBSTQpZVUV2Y3pJd1dEZDFSbVpFS3pkVlZqazRWWE5ZZUZZ
eVMzVjRWazEyVEdWME0wOW9aVmxPVGpGdE1rcEZLMjVZVFZaNWJFODFhV05PClZHWjRjRlJHV0Ra
R1VtVmpVRXRyYzFNbUkzaEJPMU53Y2tac2VHdFZUWFJpYVVsSGFFWlNjMWQ0VVhZNFFUaFdLMVoy
SzNKNFdTODQKUVZOVVJDOUJUVEZaY1RjdlJtWnNZaTlCUzNaR2FpOHdhM2N2T0VGT1YwdDFMM2RC
Vml0V2Rpc21JM2hCTzNKNFdTODVTazFRTDA1WApTM1p0VUM5QlNuazViREJ4T0RGcWVUTnhWbWhs
VVZoYWEzUTNhVE5zT1VOV1NsTjJiM1ZxY25rMFJUQnlObmh3T0dwcGIyVlZMMnhNCmIxTTJPU3Rh
V0d3bUkzaEJPM3BVU0ZodVJreGxlSGxVU2pSNFVVZ3hjRUl2ZDBWYWVGTXZVV0pHUkhOV1pHbHlj
MVptVHpNdlQxbFEKYlN0VE1UQllVMUJMZEhVdlJUWnFTVEUzWmtGa1ZFWkNVbGxzVUhNd2FrWW1J
M2hCTzNadGJVdDJiRmhHVEhOV1pHbHljMVptVjJZdgpRVVJwYkRVME1EaGxVa3g2VW1SVmRtOWlX
blJNZGtkT2NqbFpiRk5RT0VGaldFTm9LMHM0ZVVzd2EwUnJNRGhqVlZCaVVEaFdLMVltCkkzaEJP
M1lyY25oWkx6aEJVMVJFTDBGTk1WbHhOeTlHWm14aUwwRkxka1pxTHpCcmR5ODRRVTVYUzNVdmQw
RldLMVoySzNKNFdTODUKU2sxUUwwNVhTM05sTDAxVVZpOUxNbkVyVVhaTlYyNG1JM2hCTzBSV1lr
dFNOM0pVY25GUFNrSmpVa1VyYjFsWE9VOW5SR1JST1UxVwpaa0YwZGsxWlRHbExXVU53YVdSWVFW
Qm1hV0UwY0ZoWWEzbDZXR000ZVVGb1dscEhaRkZsZEVkWmExWjRWamttSTNoQk8zY3ZPRUZQClRq
SnVURmt2YXpkdlZ6RktUSEkyZUdONVIyeExiVk0wYXpSdUwyZEJkVXRJY0cxTGRYaFdNa3R6V0M5
T1NGWXlNR280ZFdaTmJXOUoKWVZOM05tUmpRMGszTjFOUVIxVW1JM2hCTzFFM1pqVlVSRVpZTlRa
WmNHUnBjbk5XWkdseWMxWmthWEp6Vm1ScGNuTldaR2x5TWxBdgpia1pNVkhaeVdEVnplSG93Y2ps
UmMweHROSEkwWTNWTlNHb3ZkMEZZTkhGWU1taHBhREltSTNoQk8wdDFlRll5UzNacGFpOXVTMWhX
CmJYWjJlbVIyWWxsMGVWUlVURmN5ZEVVNFFVZHFLM05GWmpoR1QyTlZhRFZJYVhKelZtUnBjbk5X
WkdseWMxWmthWEp6Vm1ScGNuTlcKWkdseU55OG1JM2hCTzBGUWVWaHBVMUE0Y1daTGVXOUxRVFpr
UTNoSVdHUXhOVTR4T1hwcGFHMXRTM1Y0VmpKTGRrNTJLMk5xY0ZkcApMMHBtZWtkNU1IRldkRlV6
T0VoMldWWlFORWhHV0hkeWFXd3lTM1VtSTNoQk8zaFdNa3QxZUZZeVMzVjRWakpMZFhoV01rdDJa
bVk0ClFXNUVjVWQyYm1wWGNIVkpVRVJVVDBoUVlXODFNMFZhY0RsUVJEaE5WVVk1WWxseE4wWllX
WEUzUmxoM1RDdGxUVFZ1TDA0bUkzaEIKTzNKNlVUVlpVRk01WVU5dmNDOTFkRlpUYlROb2VIQnBh
MDFIZUZZeVMzVjRWakpMZFhoV01rdDFlRll5UzNWNFZqSkxkWGhXSzJkUQpOVTVOY21ac1ZqVldT
MnRGWm04eVFWWkhLelFtSTNoQk8xZG9lRkY2VEVaWVdYRTNSbGh0Ymk5QlJHdHBhblk0UVd0ME5X
cFdRbFZuClYycEZaWGt6TUVSRkwyTk5WbVpESzB0WVdYRTNSbGhaY1RkR1dGbHhOMFpZV1hFM1Js
aFpjU3RuVUNzbUkzaEJPMk5QV2xkSWJreFkKV1dGRWFTdHVRbmxsT1ZWdVVVUXZhV1ZMUXl0ek9G
WmthWEp6Vm1ScGNqUkRMMDkxUlZFdmJYZzFjRkZCWjBjdmJHWm1lR1ZxYmk5QgpTV3hwYTAxS2VG
WXlTM1VtSTNoQk8zaFdNa3QxZUZZeVMzVjRWakpMZFhoV01rdDFlRlk1TW1ZNE5EZFlOak51TlU5
bFdGaENjVEJOCll6aEVhbmROVm5oSlp5ODBWVUUwYjJWcU5IRTNSbGhaY1hjM09EUjBUR1pWTDNr
bUkzaEJPM1U0ZWpKcFFVWXZNR1pPVFdsdWRURjEKZG5KQlJETkthako0Vml0bWRVdFlXWEUzUmxo
WmNUZEdWVFpxT0d4bFkzQkZWMU5RVVdSU1pVNTNSMUl4ZEVwNVEwUjFRME5GZUZaMgpPRUVtSTNo
Qk8zZE9OVEV2ZDBOd1pqRk1MMEZMVVRVdmQwUnRha1pZWmpSSE9EWXZkMFJWZGpac0x6Qm9laTlC
VUU1SFMzVXZkMDQxCk1TODJiQzlWZGl0clQyWXZiV3BHVlVweFVHdzNla0p3YTFNbUkzaEJPM2sy
YkhCc00xbDRUek5DU2t4dFExTktWMkZzWVVGMWNXZHQKWjNoV05uZ3ZlbWxZY1VGMGRucFZaVUZy
Wmpaa2NIUjRRVUZtUmxocWJUSXpSemxKWTFaTU4weDRVVGRHV0ZseE4wWW1JM2hCTzFoMwpMeTlC
VFRWTk5sbGlTRGcwWkZocmNIaHFkbTgzWVRacVJ5OWxRa2t5VHpWUVZqUXllRk5JYkcxTGRYaFdN
a3QxZUZaSVlXSnZaWFEyCmNqWnVOazB3S3pWMmRsSTBLM1E1VjJnbUkzaEJPMnR0TkdOeE9HVllR
VTVUZGtVd2NtbHhUaTkzVGpVeEx6WnNMMVYySzJ0UFppOXQKYWtaWVpqUkhPRFl2T1ZNdmNWZ3ZV
MGhRTDNwU2FYSjJPRVJsWkdZcmNHWXhUQzl3Ukc0dk5XOG1JM2hCTzNoV015dENkazkyTDFWMgpO
bXd2TUdoNkx6aEJUa2RMY0Zwd05rcEtaako1VDA5VFVFdHBjM0EzWjNOQlVtbHhibU4zYlVNMWJH
aEtOVWRLTWxSc01ISjRUa3MwCmNTdDBkaXRqVVU0bUkzaEJPMkZYTlRocE5uQndURWc1TjNBeEsx
cENMM2hwZFZreFN5OTNSRVI0VUdsb04zcHBjbk5XWkdseGVXVkQKUzJWRFUwTmFVVGhOY1d4S1JW
QlNiRmxWU1ZCNlIwdDJlbTQ0TkN0WVltNG1JM2hCTzNrek5YQXhXRkZ5WjBWVFlXUmplVkZCYmps
dwpSbUkwU0M5M1FtdHNSM2hUYXl0TGRYaFdNa3R3Y2pWV01FOWlXQzlOZFd3MlNrUllNVTVTZFc5
aVdVVmthRWswVlhRNGJFSnlhWEltCkkzaEJPemxJU1c5dk5HOXJhV3BWU2toSGIxWkdTRkZMYjI5
Q2FXaGthWEp6Vm1ScGNqVXdMelY2VEhWM2RXZ3JWMkpRYTFFd01URmoKZWtKaE4wVlNVbTkwWVdV
emNUUnhPRTh2U2xCWGVHOG1JM2hCTzNZMWNTdFhjakZ1UTFKMFpVeGlVMDFsWjFNM1ZUSTNWamx4
VXpSdwpabVp0UzBoWmNUZEdXRmx4SzFwMksyTjRka3Q2YXpaR05YRnBVV3hSU0RCNU4yVnVWR042
VVdabVYxaEdXSG9tSTNoQk8weHBiREpMCmRYaFdNa3QyYzB3dmJrVm1lVFk1YUN0WU1UTnlSWEZz
V0RGdE9GcHZhVkpUYzA1elVGTlZMM2RFU1hveFRWVlFZMk5XWkdseWMxWlYKVGxGMlJYTnlRelYy
U0VaVmRHOG1JM2hCTzI1dFdXUk9iekZNU0hObVJFWllOVEFyVlc5WGJqZ3hZVTVEY0VGaFZ5dDBh
MEpRVVVadwpiRWRMVmtoNlJFRkpUbVl4VDBGQmNVbHlkV1JCY0RacWFrbDNiMk5XWlhSbU9EUnZL
MkVtSTNoQk8yd3diamg0Y0U1SmJXWnFZalkzCllrNUJiMDkzSzNOUlpuWlpkbUkzU1d0VlpUVjRW
WFp6YmtaRWMxWmthWEp6Vm1aT015OUJSR3hhSzFaa2VHUnhibTUyVTBsVVNUbDIKUjBsa1kya21J
M2hCTzFGRmREWlRSRGt6WTFVNFJVaDNkamRWVUZrMGNTdFlZMVYxZUZZeVMzWnZhaTl1UlhvNGRV
eHBOakZ0WW5wNApabEpHWWt0M1ZqZG1VMmwzTDNaTWFWRkdTbHBHY2l0NlIyaExMMDRtSTNoQk8z
WlpORzltVm1WTGRYaFdNa3QxZUZZNGFHWTROV1ZoCksydzNOVGt3TDFJME1qVktjRTVwUkV0UU5W
cHljSGszUkM5clYzTmFlRk5JYUd0VmMydE5jVk40VFZWcmFsbFBhbXBaYUd3bUkzaEIKTzA1UlVt
bHlPVVpRU1ROdFYwaDZVRFZRTUdwWU5IRm1OMnRNVjA5WFVsSXdWMWRzU2xVdk1rMW5XbU5WU2pW
cGNuTldaR2x5U0M5UQpNMnMyZHpnMEsxVjBVamgyV0haM2NHVlNNR2dtSTNoQk8yMXdWWGhVU1dW
VlZXY3ZNVmhCY2pScGJ6YzBjUzlRTDBGTmVXVllUbGc0CmREWXpaRFpNY1RoQ2REbFJjMjVOWXpC
YU0wSTRSMVV2ZEV0M00xVTVlR2xzVEUxV1pHbHhZaXRWTDBzbUkzaEJPeXR4SzJGUVRVNXMKYjFk
c1VrZFhPSFp3UWtkMU1WWlNaWEo1VURSTGFURmFkbUpHV0RaRksxZG1URGxvTldRNGRqWm1iMlJu
ZEV4VVZHOUZaMmxLTm5SMwpSa00zWmpWVVIzSklNMDhtSTNoQk8wdEZlbmhXTWt0MWVGWm5NelUw
WVN0MWFHWnNWalZxZGs5UlYxTmhNR0Y2YUhJeFRETmFSVUZ3Ck4yZFRSblp2ZUZZNFdHWnNXR0pE
TlM5TmVubHlRMUZEY0RGaGVWcHNXVlpDVm1JbUkzaEJPMmhIU1VrNWQwMVZjVkExYXpKd2RGQjYK
UkRoNk1qSTVTWFJYZGxaVmRERkxhVFJtYVdad1J5dExjRkp2TW5KWWRXbzJkbHBoY2xsMk5tUTFX
VlI0TTA1MUwyYzRWRUpzY2pkVwpSeXNtSTNoQk8wdDJNRkk0Y0dWYVRFaDZUalZoTUROWU4wVXhk
SFJTWjFkYVZuSllaM2d5WlUwck5rOURjRGw0YVdoT2MxWmthWEp6ClZsZDVVbmg1ZUhSSVNXOWxU
bmRXWkVkQlMzTndSa05EUkRFbUkzaEJPMEo0VmpSSUsxbHVMMDlLTW1saGVHUjVObW8xVTNaR01H
RTAKYkZCS09VOXRWWFpoUm1sa2VrZFdLMDlKWlRGSFNHZENhWEo1Tm1JdlFVcDRVUzlPWlU4ME9V
cEdNQ3RhU3pBNVpFd21JM2hCTzJ0bwpTMVp3VjJwdmNpc3ZNbU5WTW5wVWVWSXZlbWxDVFd4NlJt
UmxZemxWYW1WQ1EwZGlWR1JRVEc1dU16UjJUelJSY2pjNFZpdFVXVzltClUxZHRObUpaWVZwWlVX
Rm1jRGhEVjNRbUkzaEJPMnhoYjBseVpUTnBRVlpGVWxKUlFVRlpjV2xqVm1ScGNuTldWV0l5T0hS
aVIzcHUKZG1KMVVWRXlkSEpIT0RGNFRUTXlWV3BxVlhNM1NESkRhWFZMZG5wMU9EaGxXbkF2VGto
dEwxWW1JM2hCTzNaTlJYZExibFZpYkRWWgpNR0pqY0VaWWFrVnVLM2RxUTNJNVIwdFZhbmhXT1ZO
bU9EUm9LMlpGYlRBckwzZEVTbFl6U2xOaE1scHlOMVJCZURaNFQxRktOSGd2CmNYWlNObVkxVWpn
bUkzaEJPMDFWVUc4dlJsaFpjVGRHV0ZseGQybzRlUzk1WnpodkwyMUNXbkYxY1hoT1FuRlZTemhp
VkZaTVpXZHUKYWtaaE9GUllXakJ4Wm5OME9VWkVkbWx5TlRReGVpOXVSVkI2TDBGSGEzb21JM2hC
TzJadmJTOXpUbFIwY1c1blYxbzNaVlZwZG1SSApWakJJTDBGQlpVdGlWVGxITDNkRFkxSjJla2Qx
Tld4SGNGaGthSEIwZGxnME1qbFNOVFZMWlV0dmFUaFVPVXhxUm1KbVVTOTNRMVltCkkzaEJPek0x
VHl0V1puazRjek5IYmtKeWRsWmlhRkYwTTNGek5FaHhkVzh6TkVsdk1tcHFjblo0U0ZoMVZGRlpi
MW96YVhKelZtUnAKY25OV1prMHZMMEZFYlVRMU1GaHFjRWhyTmpKcmNXRW1JM2hCT3k5d1RGVkdR
a2N6TW04M1pGUXZkemRGWmpad09FMVdaVk12YTBKYQpiVGN2UVVSb09ITjRRM1JXZFVwS2RHbENk
RUpDU2t0bGRqaEJjVmx3UzJ3clpURnJZbEE0TTJaTk9FcFlhVmNtSTNoQk8zVXZWM0JSCmFtRmxU
bHB4Tnl0UVQzVkxhR2RsUzNadlZDOXVSbGc0TUdzd2RsVTFVRXBQY1hwallreFZjRkJWTUcxU2Fu
TnNNbUZDYjJRck1IZEkKZHk4MVVTOTVjMVZRY1M5R1dGa21JM2hCTzNFM1JsaFpjVGRHV0ZseE4w
WllXWEUzUmxoWmNUZEdXR2RJTDA5V2JqVnRVbUZhYjBzcgpVM1JRYkVJeFNGWlJjMjF3UmxSMlJt
RkxZV2hFTkVkYWFDOTNTVkE0TWt0MmEzWkdUSE1tSTNoQk8xWlVhbmxvTlc4eFRIbHlOV3d3Ckwx
ZzVUbUZzTVZsVGFWRk1WV2RQYmxOVFRuRm1jM1ZvUzI0eVQwdDJNRVE0YjJWaGRFczRNU3RZVEVo
WWRFeG1ibUZZYzFsalMxTlAKVldKcVdqUW1JM2hCT3pOd0t6QnFRWEZqVlVwNGFYSnpWbVJwY25O
V1pHbHljMVprYVhKelZtUnBjbk5XVTNaNlVqVnJNSFo1TVRWbQpkblJrTVZOVU1ISkhkMmxOYzNB
M2MyVnBiM1pwZW5OUmNXcDRUMHNtSTNoQk8zWjZOVGcxWldGa1VqZ3hLMW81VVRoM1lXbGhNMDR2
ClMxcERiR0ZvUlVoM2VIaHlXSE5wUVV0UWJHbHNObEE0UVRnMGNUSk1XRkExZERJNGQwWlNXbGRX
TVU5bVdVMXZhRGhRT0VFbUkzaEIKTzJrelJsTndMemhCVDFWMGFEbFhMMDQySzIxd1ZEWTNZVEp6
T1daSWFrVkpaaXRhVDB0b05VaHBjVFpQVWpRelYxTk9hV3B2VVhsUApjRzlSVW5WRFEwMVdabHBt
TlVFdmJteGhLMk1tSTNoQk8yUlFhVEJFV0Vwc2FqZ3hWMmxWVm0weVJqVkhaeTkyUlM5M1EweEJV
SFJ5CkwzTm9kRmRwYURkT2FYSnpWbVJwY25OV1pHbHljMVprYVhKelZtUnBja05tZWxjdlRreFNa
bmtyT0hZbUkzaEJPMUJtTTFwWFpsVTEKZDNrMlduQXpTMnA2VTBSMVlXSnlSM1JoY3pNd1pGTk5W
bVpEVjNZMk9YRnRkalo2WkRaNGNYTTFkVXdyT1d0TmN6aHdPRlF3UVVoYQpWa2QzU0ZsWmNGTXZS
bGdtSTNoQk8xbHhOMFpZY1dZMVJpOXVVR012YkM5eVJGZHNLMWh1T0hOaFp6Uk9OMEYyZUU1RVNq
bHJXRVZUCkswbEhlbWRtWVVoMVFtbHlOMWd3TTFWeVJGVTNRMFJWVGxCdVV6WnpjbkJDVEdJbUkz
aEJPek5GVWtSSk5rMUxaMmRxUmtOS2VGWXkKUzNWNFZqSkxkWGhXTWt0MWVGWXlTM0pLY0c5WlNW
cEtOVFZHYVdocFZYWk1TelZEY1hGeFMzTjZUV1JuUVU5d2VGWTRXUzg0UVU5UgpialVtSTNoQk96
Qkllblp4ZHpCaVVuQlRVRXNyYms5VGFtbHZLM1I2YVc4NVdXY3dLMEpTZEVkUWJWUXhiMFpNZURO
R1dEQk1MMEZOCk5HSTJZMXBRVGtodFNGVjFUekYwV1hoWGVHRnVWRFo0VG5vbUkzaEJPM0JYYm1Z
MmRqUTBiMHhtTDBGRWJWUndhR280ZWl0WWRGVncKZEdSWFZYUjBlUzgxYUhCbFppOUJSMDAwY1Vo
NmVtbHNNa3R4ZEhCa00xWnVZM2hZVm5CTk9YWmpkMDFLU1ZvMGJVc21JM2hCTzA5cQpjV0ZvYkZw
aFJVVlpjU3R2ZG5sckx6VjViWE55Y1V0SVVuWlFhbWt5ZFRGQlUwaFlSbGRyVlc1aUwxTkdXQ3Mz
WWk5QlF6RklTSGcwCk5HOW1Va1p5WkZjeE0ySjRNMDV5VFdzbUkzaEJPemwyVFc5bFMyRktaelpQ
Y0RaTmNreFZSV1pNUmxaVVJsaFpjVGRHV0ZseE4wWlkKV1hFNGNDOU9ZaTl1U1ZSNWNEVkthbTF6
VEVZd01XWjZSMHR4VEVkS2NYaFJUalF6UldjcmVsUW1JM2hCT3l0UlprWTRkWFZMZG1weQplbG8x
ZFRFdmQwRXlZVEZPY2s5MU0xUllWamRPYzBOa2EycFJSV3haTkRFMlMya3hNa0V2V0dsc1NqaFda
R2x5YzFaa2FYSnpWbVZzCkwyeElLMlZZYlZBbUkzaEJPemgyY21kWGNFSXhTSGszU3pOTFpsUklZ
VzVCYXpkNVZ6ZEhka0oyUldaYVluWjJkVVpZTWtZMVJ5OU4KYW5sb05UTnpVSEpsWjFoNWVrOXZR
blZNVGpaS1kzY3hOMU5TUlRGSEx6Y21JM2hCTzFGeGNEZEZORzlhVG1seWMxWmthWEp6Vm1ScApj
bk5XVTJaNlZEVjNPSFFyVm1STlpsVjBablkwY2tjeFZVaHBXRkI0ZVVWRGRrZE9RbFp1WWpKVldY
RXJVUzk2YkM4MWVVUXhibm9tCkkzaEJPM2N3ZFd0aFVVcE9Uamh5YUhRMFlUQnVkWEZJV1hwc1ZG
Rk1NemxOUldwNGNuUlNVemhuZUZZeVMzWnlUQzl1Ukc1VGFrUTEKVXpFelZsTjBVSEpzT0d4MWNI
QlJhMWN3VVdJM2NUTW1JM2hCTzBKNFVXbG1LMk4yT1VaT01UVkVNSHBXVlVaWE1EWXZRMUIwTUdw
MQpXVEpDVG1ZNFFWaHFVVmx4SzFKTlZYVjRWakpMZFhoV2JGaHJkamd3VUZCWWF6SlJTRkZPVm14
ME4yVjJTamNtSTNoQk8wWXZNM1J6CmVGQlhjMHc0YTBKUU9FRk5kRVEzTkhFNWRUaHpMemcxYW5O
RlUweDZUbTlJU21oUlVHUmhaRXBUZG1sU1FrNHZkMEpXWTFWVk9VVXcKZGk5QlNubG1MMHRET1VF
NVlsVW1JM2hCTzNBNVVGazVSWFZ5VjJKeU4yMUdXbXhJTXpSeGJsVm1OVGhtYkVNMlFqRTRlakpu
UWpaQwphRWx3S3pWclFuaFdRek16TDA5U1NEVlBWMkZ6V0RoNFVubHpUMmxSVVZoTmNFcHdWMmNt
STNoQk8wdFNiR1o0ZUZab1VHMUlMMEZLCmVrRTRiVEp4VFcxb1lWUmxZV3hRVVRoWWJrdFhjMDVs
TWpsYVdGQXZRVUZCZUZZMGVEVTBMelY1U3k5TmJucFdTRXBoTDFoR01HWlUKV2t0b2NsQW1JM2hC
TzFSM1dXbDVibUZxZWtWdFZuWmpRbWR3T0UxVk1EaDNTa3BPVkRGNFZqSkxkWGhXTWt0MWVGWXlT
M1Y0VmpKTApiMjVVZEZNeFNGUk1lVXNyTURZMWJITTNlVVU0YjJKdFFqSnFhMVVtSTNoQk95dExj
M0JDUjB0MldtWktMeTlQVmk5dU4xSXdhblE1ClkyZG5PSGRYY1ZWSWNWTXZObEJqTUVoaU1WbDNW
VkI2WVUxdU0zaFhibkV5YVM4NFFVOVlTRFZpTTJsTFRsTjBZaTlUTlhZbUkzaEIKT3pKMVZWTjZl
RVExVGtWNFl5OTNSRUZFUmtSTVRGZ3Zia2xRT0VGS2VUVkJUV1p0VjBaaE1TOTJXWEpwVEhBdmVH
dHBWRVpXVjFnNApLM1o1YUdsWWF6TnRaVEZKY2xRMFFrczFLelVtSTNoQk8xVktlRlpxZFhObU9E
VldabXhPV1hFek1WTTBkazVXWTJaYVJuSmlUMmRLCmNEUXpTRzlpV1hFNGRqaEJUblk0UVhwc0x6
VnRka1psUkhsNGNHTlBiRkp1V21KMU5WQXhiV05tTlZNbUkzaEJPM0JTV1d4UUszTkkKZUZkdWFD
dDJPRUZ0V0ZndlFVUkVablJ4UjNWWU9DdHZXR3BpWlhKUE5XTm5abmx4VDJseU4wdExXWEJUZWta
WVdYRTNSbGd6VWk5NgphbXB2YnpCMk9HOWtSVVFtSTNoQk8weDRiWFpvVG1WNUt5OXlVM05aZWk5
QlRXbG5iVXRGTmk5UFNIazBaazFZTlZvcldXUk1VbVZWCmVqSnFWREkyT1hwTVlrVlVlR2RtTm5w
U1oxbHhMMUF6Umt4elZtUnBjbk5XWkdrbUkzaEJPM0p6Vm1ScGNuTldaR2x5YzFaa2FYSnoKVm1S
cGNuTldaR2x5YzFaa2FYSnpWbVJwY25OV1pHbHljMVprYVhKelZtUnBjbk5XWkdseWMxWmthWEYw
V2xka2VHVXphMFp1WW5KNgpkVXdtSTNoQk8yMVNTVmxWU0dRMVIwTnhVSEJLZUZZcmEwZG9ObFpF
Y0VkcFlXWndUVWM0VDI0eU1FNXlSV1Z1ZDNkU2FVNW1kMWhHClEwNTRWamhCWm01RU5VdHJPRzVt
YlVaeE1tdENRMnhyTUdnbUkzaEJPM1ZrVDFCWk1qQTFUSGd3Tm1aWk0xRXJObTVHVEVNNFZtUnAK
Y25OV1pHbHljMVprYVhKelZtUnBjbk5XWkdseWMxWmthWEp6Vm1ScGNuTldaR2x5YzFaa2FYSnpW
bVJwY25OV1pHa21JM2hCTzNKegpWbVJwY25OV1pHbHljMVprYVhJeFZDOXVSM1o1YVM5dFJEZ3dZ
a00wWkdFeVpXbEJObXBqVGpJMWVFVkRRVlk0WmxaYVZEaG5ZMVpNCk4yWjRVVGRHV0cxUU5UVm1h
elZDSzFrbUkzaEJPMlZwVWxOWFluQmlaVmwwVDBSSGQzVktTMmhLUldKa2IwcFRRVlI0U2pOVk1D
dEYKTDAwMGNTdE9MMDVRYTJaNllqVlZka1JoSzFsT1RHNXpTRUpMY2twSmRGbHVjRE5xYkZkellt
b21JM2hCT3k5V1dUUndVMHhHV0ZseApOMFpZV1hFM1JsaFpjVGRHV0ZseE4wWllXWEUzUmxoWmNU
ZEdXRmx4TjBaWVdYRTNSbGhaY1RkR1dGbHhOMFpZV1hFM1JsaFpjVGRHCldGbHhibGhzYW5rbUkz
aEJPMW8xY1Rnd1dHZDBUa0V3ZFRReFExZDBSMDFUU0RBd09UVktSRkpGUnk5V2FVMVdabUZtTlVn
dmJGUkkKSzFoMmJHUnlaVFZrU25Sak1VWnNiVEZUWlZCa1VWWkNSV05MUlRsV2FrSW1JM2hCTzA4
dlkydHVSa1F3WWtaWVdYRTNSbFpQTlhSaQpZVGRuWlROMWIxVnVkRFZDVTFOSFZsRTJUVkJDYkdG
dlQwdHpRakUzT0dkUWVXd3hiM1U0TDJ3clJ6QnRZaTlrZEdsNk1uUkRaVFFtCkkzaEJPMU5KY2tn
NU5qUnhkMUJXZGl0alR5OUtjM2hNWVZoeVpDOWFWaTlhYmxkTE5WVkhkbUZwZDA1VU5XNUdWMGsy
YWk5M1FUUmkKWlZwSmVUTTJUamg0VjJSNVVESlVZMUY1TWpsbWJuY21JM2hCTzA1NFZFWmlXVE5t
WmpnMGNHWnRlbUpGSzJwSVdUTjBSSE5aVEc1cQpXR1Z0TTNKTVJtbHRNR2wyWmpoQmJraHVPRFEz
VTNaeFpWYzFXa0ZMYTBkSFlUSnRjVUZoWkVrMVYwOUxjRkFtSTNoQk8yTXZiRVFyCllWWjJXREZR
UzIxeFRsRXdMMlJYYzNOMldDOXFSM0paY1d4V2VqVkxPRFZYTVdaeVQyYzJha0o0WW1remNWZHJO
bFZaWkdwNVVXSTAKY1dkYVpFb3hWMFp0VjFkNWJtb21JM2hCTzFwa01rUjRUM0JITVdRMmFrWlZT
bWx5YzFaa2FYSnpWbVJwY25OV1pHbHljMVprYVhFMgpUMHRYVm5oSVJXcFBOVFpKYjBwS2NIWXdS
MHR2ZVVoUmRHSnRRazFQYmpOTloxaHlkMmdtSTNoQk8ydGhiak5FUmxWNGRIWkpTRzU1Ck5rNU1Z
bmt6Y1dzMVN6aG5TVGRMTkdZMFprZzBWVTh5SzB0d2JtSXZRVXBPTDIxeVQwRlZPSEUyYTB0cWJD
czRkRE5xTWxBcmRVWXoKT1hOV1ZHMG1JM2hCTzNvdk5YaDRMMDlYTms4emJEVnZiSEpSZGs1ak1u
TmtUbkU1UkV4NUt6UlpjbUZsVjFBdlQwcDJOWEpZUmxCWApUMjVYWkdWMmNqTk1SMjB4Wmprd2VI
a3ZURVppV2twd015OVBSM1VtSTNoQk8zVjFkeTlUVUcxWE1YUXhOeTlXTjJWVFl6a3ZOVEpuCk9Y
TlZWM2wyVTNZclkxQlFTbFZLUkdGdWNrOXZXSEJJTjAxSmFIUXhVSHB4YzNwbVkyTldXakZ2V0M5
UFVETTFVMkZOVldVbUkzaEIKTzBoNUwwUmtla3BSYlZjcldqZHhjRWhqY0V0NlVpOWpkVXR6SzNS
aVV6QnpORVYwTjFOSFR6TjBORGxyYUdsVlNXbHFNbFpSUVUxVwpWbU5XWkdseWMxWmthWEp6Vm1S
cGNuTldaR2ttSTNoQk8zSnpWbVJwY25OV1pHbHljMVpWY25JMmNqWkVMMWQxU0RGbU9FRXpXalow
ClQwaFlkbmt5TmpSeGJHTXpLMFJtVTJZeGRqQmtObFpFZWpVcmFIaHdNM0pZWWtOeFdDODRRVWxN
ZGlzbUkzaEJPekZJTHpBMldYRjAKYXk4MVZsWTJZbVZ5SzJkMlZHOWxaa3cyYm5nME1ETnlXSFJw
Y1VFdk5VRmlMek0zU0M5amRuZExjVkZtT0hGVk9WWm1jUzkzUkdoMgpNWFl5VUZRcmIyTjJiM0Ft
STNoQk8zWnBjVTR2ZDBOUldHWTRRV0ZxTHpaa1RVdHlORkE0UVd4WGRuSk1Oa2cyUnpsaGRuZGpV
SEYyClMzWjBWR1pHVlhscUwzZDJObWtyYmpsU09WTnZOR05tVWpWamNUZFZjRE4zUzIwbUkzaEJP
MjFMZFhoV01rdDFlRll5UzNWNFZqSkwKZFhoV01rdDFlRll5UzNWNFZpOHZNbEU5UFR3dmVHMXdS
MGx0WnpwcGJXRm5aVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQQzl5WkdZNgpiR2srQ2lBZ0lDQWdJ
Q0FnSUNBZ0lEd3ZjbVJtT2tGc2RENEtJQ0FnSUNBZ0lDQWdQQzk0YlhBNlZHaDFiV0p1WVdsc2N6
NEtJQ0FnCklDQWdQQzl5WkdZNlJHVnpZM0pwY0hScGIyNCtDaUFnSUNBZ0lEeHlaR1k2UkdWelkz
SnBjSFJwYjI0Z2NtUm1PbUZpYjNWMFBTSWkKQ2lBZ0lDQWdJQ0FnSUNBZ0lIaHRiRzV6T25odGNG
UlFaejBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5NFlYQXZNUzR3TDNRdgpjR2N2SWdvZ0lD
QWdJQ0FnSUNBZ0lDQjRiV3h1Y3pwemRFUnBiVDBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5
NFlYQXZNUzR3CkwzTlVlWEJsTDBScGJXVnVjMmx2Ym5Naklnb2dJQ0FnSUNBZ0lDQWdJQ0I0Yld4
dWN6cDRiWEJIUFNKb2RIUndPaTh2Ym5NdVlXUnYKWW1VdVkyOXRMM2hoY0M4eExqQXZaeThpUGdv
Z0lDQWdJQ0FnSUNBOGVHMXdWRkJuT2s1UVlXZGxjejR4UEM5NGJYQlVVR2M2VGxCaApaMlZ6UGdv
Z0lDQWdJQ0FnSUNBOGVHMXdWRkJuT2toaGMxWnBjMmxpYkdWVWNtRnVjM0JoY21WdVkzaytSbUZz
YzJVOEwzaHRjRlJRClp6cElZWE5XYVhOcFlteGxWSEpoYm5Od1lYSmxibU41UGdvZ0lDQWdJQ0Fn
SUNBOGVHMXdWRkJuT2toaGMxWnBjMmxpYkdWUGRtVnkKY0hKcGJuUStSbUZzYzJVOEwzaHRjRlJR
WnpwSVlYTldhWE5wWW14bFQzWmxjbkJ5YVc1MFBnb2dJQ0FnSUNBZ0lDQThlRzF3VkZCbgpPazFo
ZUZCaFoyVlRhWHBsSUhKa1pqcHdZWEp6WlZSNWNHVTlJbEpsYzI5MWNtTmxJajRLSUNBZ0lDQWdJ
Q0FnSUNBZ1BITjBSR2x0Ck9uYytNVFE0TGpBd01EQXdNRHd2YzNSRWFXMDZkejRLSUNBZ0lDQWdJ
Q0FnSUNBZ1BITjBSR2x0T21nK01USXhMakF3TURBd01Ed3YKYzNSRWFXMDZhRDRLSUNBZ0lDQWdJ
Q0FnSUNBZ1BITjBSR2x0T25WdWFYUStVRzlwYm5SelBDOXpkRVJwYlRwMWJtbDBQZ29nSUNBZwpJ
Q0FnSUNBOEwzaHRjRlJRWnpwTllYaFFZV2RsVTJsNlpUNEtJQ0FnSUNBZ0lDQWdQSGh0Y0ZSUVp6
cFFiR0YwWlU1aGJXVnpQZ29nCklDQWdJQ0FnSUNBZ0lDQThjbVJtT2xObGNUNEtJQ0FnSUNBZ0lD
QWdJQ0FnSUNBZ1BISmtaanBzYVQ1Q2JHRmphend2Y21SbU9teHAKUGdvZ0lDQWdJQ0FnSUNBZ0lD
QThMM0prWmpwVFpYRStDaUFnSUNBZ0lDQWdJRHd2ZUcxd1ZGQm5PbEJzWVhSbFRtRnRaWE0rQ2lB
ZwpJQ0FnSUNBZ0lEeDRiWEJVVUdjNlUzZGhkR05vUjNKdmRYQnpQZ29nSUNBZ0lDQWdJQ0FnSUNB
OGNtUm1PbE5sY1Q0S0lDQWdJQ0FnCklDQWdJQ0FnSUNBZ1BISmtaanBzYVNCeVpHWTZjR0Z5YzJW
VWVYQmxQU0pTWlhOdmRYSmpaU0krQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWcKSUNBZ0lEeDRiWEJIT21k
eWIzVndUbUZ0WlQ1RVpXWmhkV3gwSUZOM1lYUmphQ0JIY205MWNEd3ZlRzF3UnpwbmNtOTFjRTVo
YldVKwpDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHg0YlhCSE9tZHliM1Z3Vkhsd1pUNHdQQzk0
YlhCSE9tZHliM1Z3Vkhsd1pUNEtJQ0FnCklDQWdJQ0FnSUNBZ0lDQWdQQzl5WkdZNmJHaytDaUFn
SUNBZ0lDQWdJQ0FnSUR3dmNtUm1PbE5sY1Q0S0lDQWdJQ0FnSUNBZ1BDOTQKYlhCVVVHYzZVM2Ro
ZEdOb1IzSnZkWEJ6UGdvZ0lDQWdJQ0E4TDNKa1pqcEVaWE5qY21sd2RHbHZiajRLSUNBZ0lDQWdQ
SEprWmpwRQpaWE5qY21sd2RHbHZiaUJ5WkdZNllXSnZkWFE5SWlJS0lDQWdJQ0FnSUNBZ0lDQWdl
RzFzYm5NNlpHTTlJbWgwZEhBNkx5OXdkWEpzCkxtOXlaeTlrWXk5bGJHVnRaVzUwY3k4eExqRXZJ
ajRLSUNBZ0lDQWdJQ0FnUEdSak9tWnZjbTFoZEQ1aGNIQnNhV05oZEdsdmJpOXcKWkdZOEwyUmpP
bVp2Y20xaGRENEtJQ0FnSUNBZ0lDQWdQR1JqT25ScGRHeGxQZ29nSUNBZ0lDQWdJQ0FnSUNBOGNt
Um1Pa0ZzZEQ0SwpJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVNCNGJXdzZiR0Z1WnowaWVD
MWtaV1poZFd4MElqNURiRzl6WldSZlEyRndkR2x2CmJqd3ZjbVJtT214cFBnb2dJQ0FnSUNBZ0lD
QWdJQ0E4TDNKa1pqcEJiSFErQ2lBZ0lDQWdJQ0FnSUR3dlpHTTZkR2wwYkdVK0NpQWcKSUNBZ0lE
d3ZjbVJtT2tSbGMyTnlhWEIwYVc5dVBnb2dJQ0FnSUNBOGNtUm1Pa1JsYzJOeWFYQjBhVzl1SUhK
a1pqcGhZbTkxZEQwaQpJZ29nSUNBZ0lDQWdJQ0FnSUNCNGJXeHVjenA0YlhCTlRUMGlhSFIwY0Rv
dkwyNXpMbUZrYjJKbExtTnZiUzk0WVhBdk1TNHdMMjF0Ckx5SUtJQ0FnSUNBZ0lDQWdJQ0FnZUcx
c2JuTTZjM1JTWldZOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOXoKVkhs
d1pTOVNaWE52ZFhKalpWSmxaaU1pQ2lBZ0lDQWdJQ0FnSUNBZ0lIaHRiRzV6T25OMFJYWjBQU0pv
ZEhSd09pOHZibk11WVdSdgpZbVV1WTI5dEwzaGhjQzh4TGpBdmMxUjVjR1V2VW1WemIzVnlZMlZG
ZG1WdWRDTWlQZ29nSUNBZ0lDQWdJQ0E4ZUcxd1RVMDZVbVZ1ClpHbDBhVzl1UTJ4aGMzTStjSEp2
YjJZNmNHUm1QQzk0YlhCTlRUcFNaVzVrYVhScGIyNURiR0Z6Y3o0S0lDQWdJQ0FnSUNBZ1BIaHQK
Y0UxTk9rUnZZM1Z0Wlc1MFNVUStlRzF3TG1ScFpEcEdOemRHTVRFM05EQTNNakEyT0RFeE9UVkdS
VVV3TWtZd01EVTVRVFZCUlR3dgplRzF3VFUwNlJHOWpkVzFsYm5SSlJENEtJQ0FnSUNBZ0lDQWdQ
SGh0Y0UxTk9rbHVjM1JoYm1ObFNVUStkWFZwWkRwa1ptSTVPRGRpCk1TMHlOMkkxTFRreE5HVXRZ
V0k1WkMwMk1qVXlZalF3WWpoak56YzhMM2h0Y0UxTk9rbHVjM1JoYm1ObFNVUStDaUFnSUNBZ0lD
QWcKSUR4NGJYQk5UVHBQY21sbmFXNWhiRVJ2WTNWdFpXNTBTVVErZUcxd0xtUnBaRHBHTnpkR01U
RTNOREEzTWpBMk9ERXhPVFZHUlVVdwpNa1l3TURVNVFUVkJSVHd2ZUcxd1RVMDZUM0pwWjJsdVlX
eEViMk4xYldWdWRFbEVQZ29nSUNBZ0lDQWdJQ0E4ZUcxd1RVMDZSR1Z5CmFYWmxaRVp5YjIwZ2Nt
Um1PbkJoY25ObFZIbHdaVDBpVW1WemIzVnlZMlVpUGdvZ0lDQWdJQ0FnSUNBZ0lDQThjM1JTWldZ
NmNtVnUKWkdsMGFXOXVRMnhoYzNNK2NISnZiMlk2Y0dSbVBDOXpkRkpsWmpweVpXNWthWFJwYjI1
RGJHRnpjejRLSUNBZ0lDQWdJQ0FnUEM5NApiWEJOVFRwRVpYSnBkbVZrUm5KdmJUNEtJQ0FnSUNB
Z0lDQWdQSGh0Y0UxTk9raHBjM1J2Y25rK0NpQWdJQ0FnSUNBZ0lDQWdJRHh5ClpHWTZVMlZ4UGdv
Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9teHBJSEprWmpwd1lYSnpaVlI1Y0dVOUlsSmxjMjkx
Y21ObElqNEsKSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhOMFJYWjBPbUZqZEdsdmJqNXpZWFps
WkR3dmMzUkZkblE2WVdOMGFXOXVQZ29nSUNBZwpJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGMzUkZkblE2
YVc1emRHRnVZMlZKUkQ1NGJYQXVhV2xrT2tZM04wWXhNVGMwTURjeU1EWTRNVEU1Ck5VWkZSVEF5
UmpBd05UbEJOVUZGUEM5emRFVjJkRHBwYm5OMFlXNWpaVWxFUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJ
Q0FnSUNBOGMzUkYKZG5RNmQyaGxiajR5TURBNUxURXhMVEl6VkRFek9qVTNPakV5TFRBNE9qQXdQ
Qzl6ZEVWMmREcDNhR1Z1UGdvZ0lDQWdJQ0FnSUNBZwpJQ0FnSUNBZ0lDQThjM1JGZG5RNmMyOW1k
SGRoY21WQloyVnVkRDVCWkc5aVpTQkpiR3gxYzNSeVlYUnZjaUJEVXpROEwzTjBSWFowCk9uTnZa
blIzWVhKbFFXZGxiblErQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4emRFVjJkRHBqYUdGdVoy
VmtQaTg4TDNOMFJYWjAKT21Ob1lXNW5aV1ErQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHd2Y21SbU9t
eHBQZ29nSUNBZ0lDQWdJQ0FnSUNBOEwzSmtaanBUWlhFKwpDaUFnSUNBZ0lDQWdJRHd2ZUcxd1RV
MDZTR2x6ZEc5eWVUNEtJQ0FnSUNBZ1BDOXlaR1k2UkdWelkzSnBjSFJwYjI0K0NpQWdJQ0FnCklE
eHlaR1k2UkdWelkzSnBjSFJwYjI0Z2NtUm1PbUZpYjNWMFBTSWlDaUFnSUNBZ0lDQWdJQ0FnSUho
dGJHNXpPbkJrWmowaWFIUjAKY0RvdkwyNXpMbUZrYjJKbExtTnZiUzl3WkdZdk1TNHpMeUkrQ2lB
Z0lDQWdJQ0FnSUR4d1pHWTZVSEp2WkhWalpYSStRV1J2WW1VZwpVRVJHSUd4cFluSmhjbmtnT1M0
d01Ed3ZjR1JtT2xCeWIyUjFZMlZ5UGdvZ0lDQWdJQ0E4TDNKa1pqcEVaWE5qY21sd2RHbHZiajRL
CklDQWdQQzl5WkdZNlVrUkdQZ284TDNnNmVHMXdiV1YwWVQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0Fn
SUNBZ0lDQWdJQ0FnSUNBZ0lDQWcKSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0Fn
SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZwpJQ0FnSUNBZ0lDQWdJQ0Fn
SUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJ
Q0FnCklDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJ
Q0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWcKQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJ
Q0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZwpJQ0FnSUNBZ0lDQWdJ
Q0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lD
QWdJQ0FnCklDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lD
QWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWcKSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lD
QWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZwpJQ0FnSUNBZ0lD
QWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNB
Z0lDQWdJQ0FnCklDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNB
Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWcKSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNB
Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZwpJQ0FnSUNB
S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0Fn
SUNBZ0lDQWdJQ0FnCklDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0Fn
SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWcKSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0Fn
SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZwpJQ0Fn
SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJ
Q0FnSUNBZ0lDQWdJQ0FnCklDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJ
Q0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWcKSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJ
Q0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZwpJ
Q0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lD
QWdJQ0FnSUNBZ0lDQWdJQ0FnCklDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lD
QWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWcKSUNBZ0lDQWdJQ0FnSUNBZ0lD
QWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lB
ZwpJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNB
Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnCklDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNB
Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWcKSUNBZ0lDQWdJQ0FnSUNB
Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0Fn
SUNBZwpJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0Fn
SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnCklDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0Fn
SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWcKSUNBZ0lDQWdJQ0Fn
SUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJ
Q0FnSUNBZwpJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJ
Q0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnCklDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJ
Q0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWcKSUNBZ0lDQWdJ
Q0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lD
QWdJQ0FnSUNBZwpJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lD
QWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnCklDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lD
QWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWcKSUNBZ0lD
QWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNB
Z0lDQWdJQ0FnSUNBZwpJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNB
Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnCklDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNB
Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWcKSUNB
Z0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0Fn
SUNBZ0lDQWdJQ0FnSUNBZwpJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0Fn
SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnCklDQWdJQ0FnSUNBZ0lDQWdJQ0Fn
SUNBZ0lDQWdJQW84UDNod1lXTnJaWFFnWlc1a1BTSjNJajgrRFdWdVpITjBjbVZoYlExbGJtUnYK
WW1vTk15QXdJRzlpYWcwOFBDOURiM1Z1ZENBeEwwdHBaSE5iTlNBd0lGSmRMMVI1Y0dVdlVHRm5a
WE0rUGcxbGJtUnZZbW9OTlNBdwpJRzlpYWcwOFBDOUJjblJDYjNoYk1DNHdNakU1TnpJM0lEQXVO
RGMwTmpBNUlERTBOeTQ1TkRFZ01USXdMamsyTkYwdlFteGxaV1JDCmIzaGJNQzR3SURBdU1DQXhO
RGd1TUNBeE1qRXVNRjB2UTI5dWRHVnVkSE1nTmlBd0lGSXZUV1ZrYVdGQ2IzaGJNQzR3SURBdU1D
QXgKTkRndU1DQXhNakV1TUYwdlVHRnlaVzUwSURNZ01DQlNMMUpsYzI5MWNtTmxjenc4TDBWNGRF
ZFRkR0YwWlR3OEwwZFRNQ0EzSURBZwpVajQrTDFCeWIzQmxjblJwWlhNOFBDOU5RekE4UEM5RGIy
eHZjbHN5TURJeU5DQXpNamMyT0NBMk5UVXpOVjB2UkdsdGJXVmtJR1poCmJITmxMMFZrYVhSaFlt
eGxJSFJ5ZFdVdlVISmxkbWxsZHlCMGNuVmxMMUJ5YVc1MFpXUWdkSEoxWlM5VWFYUnNaU2hNWVhs
bGNpQXgKS1M5V2FYTnBZbXhsSUhSeWRXVStQajQrUGo0dlZISnBiVUp2ZUZzd0xqQWdNQzR3SURF
ME9DNHdJREV5TVM0d1hTOVVlWEJsTDFCaApaMlUrUGcxbGJtUnZZbW9OTmlBd0lHOWlhZzA4UEM5
R2FXeDBaWEl2Um14aGRHVkVaV052WkdVdlRHVnVaM1JvSURRNU1qNCtjM1J5ClpXRnREUXBJaVZS
VU8yOFdNUkRzL1N1MlJ2Sm1IMzYyQkVSRGlvaUNHcDBDQlFsU1FzVy9aM3lmN1FOZGNaN3o3bnAy
Wm4xM243LzkKZVhxanU0ZDdvZmNmN2ltOEJpRTFKVTJONGxpOFBZV3Y5QXRmeDZQME05eDkraUww
NDNkNEJicDlVMVd1T1hjeVlTbVM2WGc1NDE5QwpOT09VQzliUk0yczMwc3BGZmNNa25KU09zSEJK
WEkyaUtYdXIxSVNiTm1UUHhSRzBzK1E4Y0VVVjY1eUJDbDdOeVpVVFpXRkxhVVFLCjU5NFhmaDdZ
Qk5oUndLbXhGYWVpU093VUVkclNRaUJ6NXRhOXJjNU55aWhWY2N5Q20vckVqdVo5Uk4rU3dkUThy
ZG9USGFHZy9ZVTYKSjFleXhBMU5JSzEwTkdFc2d3T2F1ZUR6Z2xvNHV3K2QvZFJsUEdCUUlaZldt
K0xkdWRZOEZGZEJ0RzdGSjd4bzMvQlV2QnRYTkRHRgpYaFczN2pIYnFkZ1VQaVk0WHRKU1Bucm5y
dVVTUHhiRVlYaTIraEZhWWt5Vy9MR005NVo4SE5kRi8zR2c2Vmx3N1RkTWgvbDJZTUxkCnlzVExn
Wm04SEpqRnR3Vnh0Q3lYUXppa3RiWjhHTlNMcFczRTZLMVkzazRzUEsySTROUXhaMEtYQzBld2lo
bHc2aUJVSGE1Z1JHckQKOEF0RzVXeWdzVFF3RkJESENNU3hvYW1zaE9HT0pvYmV0VUdBY1JNQmN4
bEtzNHBkQ2JpaVhFNkRPaHd4Tkk4Yk45aTFjU1BQaTVSaAo0T1N6bzcyY280ZHF6VEhKdURpQ3M4
cHA4Zi9jai9EOVhYZ01IeC93YjNnTWZ3VVlBRVBlekRJTlpXNWtjM1J5WldGdERXVnVaRzlpCmFn
MDNJREFnYjJKcURUdzhMMEZKVXlCbVlXeHpaUzlDVFM5T2IzSnRZV3d2UTBFZ01TNHdMMDlRSUda
aGJITmxMMDlRVFNBeEwxTkIKSUhSeWRXVXZVMDFoYzJzdlRtOXVaUzlVZVhCbEwwVjRkRWRUZEdG
MFpTOWpZU0F4TGpBdmIzQWdabUZzYzJVK1BnMWxibVJ2WW1vTgpPQ0F3SUc5aWFnMDhQQzlEY21W
aGRHbHZia1JoZEdVb1JEb3lNREE1TVRFeU16RXpOVGN4T0Mwd09DY3dNQ2NwTDBOeVpXRjBiM0lv
ClFXUnZZbVVnU1d4c2RYTjBjbUYwYjNJZ1ExTTBLUzlOYjJSRVlYUmxLRVE2TWpBd09URXhNak14
TXpVM01UZ3RNRGduTURBbktTOVEKY205a2RXTmxjaWhCWkc5aVpTQlFSRVlnYkdsaWNtRnllU0E1
TGpBd0tTOVVhWFJzWlNoRGJHOXpaV1JmUTJGd2RHbHZiaWsrUGcxbApibVJ2WW1vTmVISmxaZzB3
SURrTk1EQXdNREF3TURBd01DQTJOVFV6TlNCbURRb3dNREF3TURBd01ERTJJREF3TURBd0lHNE5D
akF3Ck1EQXdNREF3TnpZZ01EQXdNREFnYmcwS01EQXdNREF4T1RjMk9DQXdNREF3TUNCdURRb3dN
REF3TURBd01EQXdJREF3TURBd0lHWU4KQ2pBd01EQXdNVGs0TVRrZ01EQXdNREFnYmcwS01EQXdN
REF5TURFM05pQXdNREF3TUNCdURRb3dNREF3TURJd056TTJJREF3TURBdwpJRzROQ2pBd01EQXdN
akE0TkRnZ01EQXdNREFnYmcwS2RISmhhV3hsY2cwOFBDOVRhWHBsSURrdlVtOXZkQ0F4SURBZ1Vp
OUpibVp2CklEZ2dNQ0JTTDBsRVd6dzFNRGN3TWpBNFFVSTVORVEwTkRsQ1FqazNOVVZGUmpBelJr
WTNNemMxTmo0OE0wTXpRalUwTXpZMk5qQXkKTkVGRFJqZzVNa00zT1Rrd1JUUXlNa1kwTnpJK1hU
NCtEWE4wWVhKMGVISmxaZzB5TVRBeU5RMGxKVVZQUmcwQUpWQkVSaTB4TGpNSwpKY1RsOHVYcnAv
T2cwTVRHQ2pRZ01DQnZZbW9LUER3Z0wweGxibWQwYUNBMUlEQWdVaUF2Um1sc2RHVnlJQzlHYkdG
MFpVUmxZMjlrClpTQStQZ3B6ZEhKbFlXMEtlQUV0akVFT3dqQU1CTzk5eGZ5Z01XMFNldWJBdVNj
ZUVMVndDRWdsLzVkWXA4aUtOL2FPOTJEbElLZ3MKWVpIdnhvTVA0NjBacFhVajBBcmpYWXRuYzhS
NHUyUXFOaEZkakR5Y2dnV3VMSEtMTk9rWCt5c09UV0lYM1ZkZTdGS2JQVXBjbGFYRApLbGpENEQw
cElrczl4dU5rOTFiRTJFV29wdm1mdFA0QVdHZ28wUXBsYm1SemRISmxZVzBLWlc1a2IySnFDalVn
TUNCdlltb0tNVE13CkNtVnVaRzlpYWdveUlEQWdiMkpxQ2p3OElDOVVlWEJsSUM5UVlXZGxJQzlR
WVhKbGJuUWdNeUF3SUZJZ0wxSmxjMjkxY21ObGN5QTIKSURBZ1VpQXZRMjl1ZEdWdWRITWdOQ0F3
SUZJZ0wwMWxaR2xoUW05NElGc3dJREFnTVRZZ01UVmRDajQrQ21WdVpHOWlhZ28ySURBZwpiMkpx
Q2p3OElDOVFjbTlqVTJWMElGc2dMMUJFUmlCZElDOURiMnh2Y2xOd1lXTmxJRHc4SUM5RGN6RWdO
eUF3SUZJZ1BqNGdMMFY0CmRFZFRkR0YwWlNBOFBDQXZSM014SURnZ01DQlNDajQrSUQ0K0NtVnVa
RzlpYWdvNElEQWdiMkpxQ2p3OElDOVVlWEJsSUM5RmVIUkgKVTNSaGRHVWdMMDlRVFNBeElENCtD
bVZ1Wkc5aWFnbzVJREFnYjJKcUNqdzhJQzlNWlc1bmRHZ2dNVEFnTUNCU0lDOU9JRE1nTDBGcwpk
R1Z5Ym1GMFpTQXZSR1YyYVdObFVrZENJQzlHYVd4MFpYSWdMMFpzWVhSbFJHVmpiMlJsSUQ0K0Nu
TjBjbVZoYlFwNEFZV1VUVWdVCllSakgvN09OQkxFRzBaY0l4ZERCSkZRbUMxSUMwL1VyVTdabDFV
d0pZcDE5ZDUwY1o2ZVozUzFGSW9Ub21IV01MbFpFaDRoTzRhRkQKcHpwRUJKbDFpYUNqUlJBRlhp
SzIvenVUdTJOVXZqQXp2M21lLy90OHZjTUFWWTlTam1ORk5HREt6cnZKM3BoMmVuUk0yL3dhVmFo
RwpGRndwdzNNNkVva0JuNm1Wei9WcjlTMFVhVmxxbExIVyt6WjhxM2FaRUZBMEtuZGtBejRzZVR6
ZzQ1SXY1SjA4Tldja0d4T3BOTmtoCk43aER5VTd5TGZMV2JJakhRNXdXbmdGVXRWT1RNeHlYY1NJ
N3lDMUZJeXRqUGlEcmR0cTB5ZStsUGUwWlU5U3czOGczT1F2YXVQTDkKUU5zZVlOT0xpbTNNQXg3
Y0EzYlhWV3oxTmNET0VXRHhVTVgyUGVuUFI5bjF5c3NjYXZiREtkRVlhL3BRS24ydkF6YmZBSDVl
TDVWKwozQzZWZnQ1aER0YngxRElLYnRIWHNqRGxKUkRVRyt4bS9PUWEvWXVEbm54VkM3REFPWTVz
QWZxdkFEYy9BdnNmQXRzZkE0bHFZS2dWCmtjdHNON2p5NGlMbkFuVG1uR25YekU3a3RXWmRQNkox
OEdpRjFtY2JUUXBheXJJMDMrVnBydkNFV3hUcEpreFpCYzdaWDl0NGp3cDcKZUpCUDloZTVKTHp1
MzZ6TXBWTmRuQ1dhMk5hbnRPanFKamVRNzJmTW5qNXlQYS8zR2Jkbk9HRGxnSm52R3dvNGNzcTI0
andYcVluVQoyT1B4azJUR1YxUW5INVB6a0R6bkZRZGxUTjkrTG5VaVFhNmxQVG1aNjVlYVhkemJQ
ak14eERPU3JGZ3pFNTN4My96R0xTUmwzbjNVCjNIVXMvNXRuYlpGbkdJVUZBUk0yN3pZMEpOR0xH
QnJod0VVT0dYcE1La3hhcFYvUWFzTEQ1RitWRmhMbFhSWVZ2VmpobmhWL3oza1UKdUZ2R1A0VllI
SE1LNVFpYS9rNy9vaS9yQy9wZC9mTjhiYUcrNHBseno1ckdxMnRmR1ZkbWx0WEl1RUdOTXI2c0tZ
aHZzTm9PZWkxawphWjNpRmZUa2xmV040ZW95OW54dDJhUEpIT0pxZkRYVXBRaGxhc1E0NDhtdVpm
ZEZzc1UzNGVkYnkvYXY2Vkg3ZlBaSlRTWFhzcnA0ClppbjZmRFpjQ212L3M2dGcwcktyOE9TTmtD
NDhhNkh1VlErcWZXcUwyZ3BOUGFhMnEyMXFGOStPcWdQbEhjT2NsWWtMck50bDlTbjIKWUdPYTNz
cEpWMmFMNE4vQ0w0Yi9wVjVoQzljME5Qa1BUYmk1akdrSjN4SGNObkNIbFAvRFg3TURDdDRLWlc1
a2MzUnlaV0Z0Q21WdQpaRzlpYWdveE1DQXdJRzlpYWdvM09USUtaVzVrYjJKcUNqY2dNQ0J2WW1v
S1d5QXZTVU5EUW1GelpXUWdPU0F3SUZJZ1hRcGxibVJ2Clltb0tNeUF3SUc5aWFnbzhQQ0F2Vkhs
d1pTQXZVR0ZuWlhNZ0wwMWxaR2xoUW05NElGc3dJREFnTVRZZ01UVmRJQzlEYjNWdWRDQXgKSUM5
TGFXUnpJRnNnTWlBd0lGSWdYU0ErUGdwbGJtUnZZbW9LTVRFZ01DQnZZbW9LUER3Z0wxUjVjR1Vn
TDBOaGRHRnNiMmNnTDFCaApaMlZ6SURNZ01DQlNJRDQrQ21WdVpHOWlhZ294SURBZ2IySnFDanc4
SUM5UWNtOWtkV05sY2lBb1RXRmpJRTlUSUZnZ01UQXVOaUJSCmRXRnlkSG9nVUVSR1EyOXVkR1Y0
ZENrZ0wwTnlaV0YwYVc5dVJHRjBaU0FvUkRveU1EQTJNREV6TVRFMU5UWTBOeTB3T0Njd01DY3AK
Q2k5TmIyUkVZWFJsSUNoRU9qSXdNRFl3TWpFek1URXhNelV4TFRBNEp6QXdKeWtnUGo0S1pXNWti
MkpxQ25oeVpXWUtNQ0F4TWdvdwpNREF3TURBd01EQXdJRFkxTlRNMUlHWWdDakF3TURBd01ERTFO
amdnTURBd01EQWdiaUFLTURBd01EQXdNREkwTlNBd01EQXdNQ0J1CklBb3dNREF3TURBeE5ETTNJ
REF3TURBd0lHNGdDakF3TURBd01EQXdNaklnTURBd01EQWdiaUFLTURBd01EQXdNREl5TmlBd01E
QXcKTUNCdUlBb3dNREF3TURBd016UTNJREF3TURBd0lHNGdDakF3TURBd01ERTBNRElnTURBd01E
QWdiaUFLTURBd01EQXdNRFEwTXlBdwpNREF3TUNCdUlBb3dNREF3TURBd05EZzRJREF3TURBd0lH
NGdDakF3TURBd01ERXpPRElnTURBd01EQWdiaUFLTURBd01EQXdNVFV4Ck9DQXdNREF3TUNCdUlB
cDBjbUZwYkdWeUNqdzhJQzlUYVhwbElERXlJQzlTYjI5MElERXhJREFnVWlBdlNXNW1ieUF4SURB
Z1VpQXYKU1VRZ1d5QThNMFExTWpaRlJVVTVNa0kxTVRGRVFVSTRPVVV3TURCRU9UTTNNRUZEUWpn
K0NqeEVSVEkwUXpkQk5EbERRelF4TVVSQgpRVEJETURBd01FUTVNemN3UVVOQ09ENGdYU0ErUGdw
emRHRnlkSGh5WldZS01UY3dPQW9sSlVWUFJnb0FBQUFBQUFBQUpWQkVSaTB4CkxqTUtKY1RsOHVY
cnAvT2cwTVRHQ2pRZ01DQnZZbW9LUER3Z0wweGxibWQwYUNBMUlEQWdVaUF2Um1sc2RHVnlJQzlH
YkdGMFpVUmwKWTI5a1pTQStQZ3B6ZEhKbFlXMEtlQUU5alRFS3dDQU1SZmVlNHA5QVl4U3NjNGZP
bmtGb0hkSkJ2RC9VYXBWQTRIMytTd29pQ3ZSUgpEVklGOWFrSittekJYV0dzSW10QWJUczhZRkpo
bnlnVG1WV3dmcFBaSGd4QjdpSXYzVGZiL1NRWXRNcmZEOGE2bFhFaHZxQVFJVWtLClpXNWtjM1J5
WldGdENtVnVaRzlpYWdvMUlEQWdiMkpxQ2prNENtVnVaRzlpYWdveUlEQWdiMkpxQ2p3OElDOVVl
WEJsSUM5UVlXZGwKSUM5UVlYSmxiblFnTXlBd0lGSWdMMUpsYzI5MWNtTmxjeUEySURBZ1VpQXZR
Mjl1ZEdWdWRITWdOQ0F3SUZJZ0wwMWxaR2xoUW05NApJRnN3SURBZ01qRWdNak5kQ2o0K0NtVnVa
RzlpYWdvMklEQWdiMkpxQ2p3OElDOVFjbTlqVTJWMElGc2dMMUJFUmlCZElDOURiMnh2CmNsTndZ
V05sSUR3OElDOURjekVnTnlBd0lGSWdQajRnTDBWNGRFZFRkR0YwWlNBOFBDQXZSM014SURnZ01D
QlNDajQrSUQ0K0NtVnUKWkc5aWFnbzRJREFnYjJKcUNqdzhJQzlVZVhCbElDOUZlSFJIVTNSaGRH
VWdMMDlRVFNBeElENCtDbVZ1Wkc5aWFnbzVJREFnYjJKcQpDanc4SUM5TVpXNW5kR2dnTVRBZ01D
QlNJQzlPSURNZ0wwRnNkR1Z5Ym1GMFpTQXZSR1YyYVdObFVrZENJQzlHYVd4MFpYSWdMMFpzCllY
UmxSR1ZqYjJSbElENCtDbk4wY21WaGJRcDRBWjJXZDFSVDJSYUh6NzAzdmRBU0lpQWw5QnA2Q1NE
U08wZ1ZCRkdKU1lCUUFvYUUKSm5aRUJVWVVFU2xXWkZUQUFVZUhJbU5GRkF1RGdtTFhDZklRVU1i
QlVVUkY1ZDJNYXdudnJUWHozcHI5eDFuZjJlZTMxOWxuNzMzWAp1Z0JRL0lJRXduUllBWUEwb1Zn
VTd1dkJYQklUeThUM0FoZ1FBUTVZQWNEaFptWUVSL2hFQXRUOHZUMlptYWhJeHJQMjdpNkFaTHZi
CkxMOVFKblBXLzMrUklqZERKQVlBQ2tYVk5qeCtKaGZsQXBSVHM4VVpNdjhFeXZTVktUS0dNVElX
b1FtaXJDTGp4SzlzOXFmbUs3dkoKbUpjbTVLRWFXYzRadkRTZWpMdFEzcG9sNGFPTUJLRmNtQ1hn
WjZOOEIyVzlWRW1hQU9YM0tOUFQrSnhNQURBVW1WL001eWFoYklreQpSUlFaN29ueUFnQUlsTVE1
dkhJT2kvazVhSjRBZUtabjVJb0VpVWxpcGhIWG1Hbmw2TWhtK3ZHelUvbGlNU3VVdzAzaGlIaE16
L1MwCkRJNHdGNEN2YjVaRkFTVlpiWmxva2UydEhPM3RXZGJtYVBtLzJkOGVmbFA5UGNoNisxWHhK
dXpQbmtHTW5sbmZiT3lzTDcwV0FQWWsKV3BzZHM3NlZWUUMwYlFaQTVlR3NUKzhnQVBJRkFMVGVu
UE1laG14ZWtzVGlEQ2NMaSt6c2JITUJuMnN1SytnMys1K0NiOHEvaGpuMwptY3Z1KzFZN3BoYy9n
U05KRlRObFJlV21wNlpMUk16TURBNlh6MlQ5OXhELzQ4QTVhYzNKd3l5Y244QVg4WVhvVlZIb2xB
bUVpV2k3CmhUeUJXSkF1WkFxRWY5WGhmeGcySndjWmZwMXJGR2gxWHdCOWhUbFF1RWtIeUc4OUFF
TWpBeVJ1UDNvQ2ZldGJFREVLeUw2OGFLMlIKcjNPUE1ucis1L29mQzF5S2J1Rk1RU0pUNXZZTWoy
UnlKYUlzR2FQZmhHekJBaEtRQjNTZ0NqU0JMakFDTEdBTkhJQXpjQVBlSUFDRQpnRWdRQTVZRExr
Z0NhVUFFc2tFKzJBQUtRVEhZQVhhRGFuQUExSUY2MEFST2dqWndCbHdFVjhBTmNBc01nRWRBQ29i
QlN6QUIzb0ZwCkNJTHdFQldpUWFxUUZxUVBtVUxXRUJ0YUNIbERRVkE0RkFQRlE0bVFFSkpBK2RB
bXFCZ3FnNnFoUTFBOTlDTjBHcm9JWFlQNm9BZlEKSURRRy9RRjloQkdZQXROaERkZ0F0b0Rac0Rz
Y0NFZkN5K0JFZUJXY0J4ZkEyK0ZLdUJZK0RyZkNGK0ViOEFBc2hWL0Nrd2hBeUFnRAowVVpZQ0J2
eFJFS1FXQ1FCRVNGcmtTS2tBcWxGbXBBT3BCdTVqVWlSY2VRREJvZWhZWmdZRnNZWjQ0ZFpqT0Zp
Vm1IV1lrb3cxWmhqCm1GWk1GK1kyWmhBemdmbUNwV0xWc2FaWUo2dy9kZ2syRVp1TkxjUldZSTln
VzdDWHNRUFlZZXc3SEE3SHdCbmlISEIrdUJoY01tNDEKcmdTM0Q5ZU11NERyd3czaEp2RjR2Q3Jl
Rk8rQ0Q4Rno4R0o4SWI0S2Z4eC9IdCtQSDhhL0o1QUpXZ1JyZ2c4aGxpQWtiQ1JVRUJvSQo1d2o5
aEJIQ05GR0JxRTkwSW9ZUWVjUmNZaW14anRoQnZFa2NKazZURkVtR0pCZFNKQ21adElGVVNXb2lY
U1k5SnIwaGs4azZaRWR5CkdGbEFYayt1Sko4Z1h5VVBrajlRbENnbUZFOUtIRVZDMlU0NVNybEFl
VUI1UTZWU0RhaHUxRmlxbUxxZFdrKzlSSDFLZlM5SGt6T1gKODVmanlhMlRxNUZybGV1WGV5VlBs
TmVYZDVkZkxwOG5YeUYvU3Y2bS9MZ0NVY0ZBd1ZPQm83QldvVWJodE1JOWhVbEZtcUtWWW9oaQpt
bUtKWW9QaU5jVlJKYnlTZ1pLM0VrK3BRT213MGlXbElScEMwNlY1MHJpMFRiUTYybVhhTUIxSE42
VDcwNVBweGZRZjZMMzBDV1VsClpWdmxLT1VjNVJybHM4cFNCc0l3WVBnelVobWxqSk9NdTR5UDh6
VG11Yy9qejlzMnIybGUvN3dwbGZrcWJpcDhsU0tWWnBVQmxZK3EKVEZWdjFSVFZuYXB0cWsvVU1H
b21hbUZxMldyNzFTNnJqYytuejNlZXo1MWZOUC9rL0lmcXNMcUplcmo2YXZYRDZqM3FreHFhR3I0
YQpHUnBWR3BjMHhqVVptbTZheVpybG11YzB4N1JvV2d1MUJGcmxXdWUxWGpDVm1lN01WR1lsczRz
NW9hMnU3YWN0MFQ2azNhczlyV09vCnMxaG5vMDZ6emhOZGtpNWJOMEczWExkVGQwSlBTeTlZTDEr
dlVlK2hQbEdmclora3YwZS9XMy9Ld05BZzJtQ0xRWnZCcUtHS29iOWgKbm1HajRXTWpxcEdyMFNx
aldxTTd4amhqdG5HSzhUN2pXeWF3aVoxSmtrbU55VTFUMk5UZVZHQzZ6N1RQREd2bWFDWTBxelc3
eDZLdwozRmxackViV29EbkRQTWg4bzNtYitTc0xQWXRZaTUwVzNSWmZMTzBzVXkzckxCOVpLVmtG
V0cyMDZyRDZ3OXJFbW10ZFkzM0hobXJqClk3UE9wdDNtdGEycExkOTJ2KzE5TzVwZHNOMFd1MDY3
ei9ZTzlpTDdKdnN4QnoySGVJZTlEdmZZZEhZb3U0UjkxUkhyNk9HNHp2R00KNHdjbmV5ZXgwMG1u
MzUxWnppbk9EYzZqQ3d3WDhCZlVMUmh5MFhIaHVCeHlrUzVrTG94ZmVIQ2gxRlhibGVOYTYvck1U
ZGVONTNiRQpiY1RkMkQzWi9iajdLdzlMRDVGSGk4ZVVwNVBuR3M4TFhvaVhyMWVSVjYrM2t2ZGk3
MnJ2cHo0NlBvaytqVDRUdm5hK3EzMHYrR0g5CkF2MTIrdDN6MS9Ebit0ZjdUd1E0Qkt3SjZBcWtC
RVlFVmdjK0N6SUpFZ1YxQk1QQkFjRzdnaDh2MGw4a1hOUVdBa0w4UTNhRlBBazEKREYwVituTVlM
aXcwckNic2ViaFZlSDU0ZHdRdFlrVkVROFM3U0kvSTBzaEhpNDBXU3haM1JzbEh4VVhWUjAxRmUw
V1hSVXVYV0N4WgpzK1JHakZxTUlLWTlGaDhiRlhza2RuS3A5OUxkUzRmajdPSUs0KzR1TTF5V3Mr
emFjclhscWN2UHJwQmZ3Vmx4S2g0Ykh4M2ZFUCtKCkU4S3A1VXl1OUYrNWQrVUUxNU83aC91UzU4
WXI1NDN4WGZobC9KRUVsNFN5aE5GRWw4UmRpV05KcmtrVlNlTUNUMEcxNEhXeVgvS0IKNUttVWtK
U2pLVE9wMGFuTmFZUzArTFRUUWlWaGlyQXJYVE05Sjcwdnd6U2pNRU82eW1uVjdsVVRva0RSa1V3
b2MxbG11NWlPL2t6MQpTSXdrbXlXRFdRdXphckxlWjBkbG44cFJ6QkhtOU9TYTVHN0xIY256eWZ0
K05XWTFkM1Zudm5iK2h2ekJOZTVyRHEyRjFxNWMyN2xPCmQxM0J1dUgxdnV1UGJTQnRTTm53eTBi
TGpXVWIzMjZLM3RSUm9GR3d2bUJvcysvbXhrSzVRbEhodlMzT1d3NXN4V3dWYk8zZFpyT3QKYXR1
WElsN1I5V0xMNG9yaVR5WGNrdXZmV1gxWCtkM005b1R0dmFYMnBmdDM0SFlJZDl6ZDZicnpXSmxp
V1Y3WjBLN2dYYTNselBLaQo4cmU3Vit5K1ZtRmJjV0FQYVk5a2o3UXlxTEs5U3E5cVI5V242cVRx
Z1JxUG11YTk2bnUzN1ozYXg5dlh2OTl0ZjlNQmpRUEZCejRlCkZCeThmOGozVUd1dFFXM0ZZZHpo
ck1QUDY2THF1cjluZjE5L1JPMUk4WkhQUjRWSHBjZkNqM1hWTzlUWE42ZzNsRGJDalpMR3NlTngK
eDIvOTRQVkRleE9yNlZBem83bjRCRGdoT2ZIaXgvZ2Y3NTRNUE5sNWluMnE2U2Y5bi9hMjBGcUtX
cUhXM05hSnRxUTJhWHRNZTkvcApnTk9kSGM0ZExUK2IvM3owalBhWm1yUEtaMHZQa2M0Vm5KczVu
M2QrOGtMR2hmR0xpUmVIT2xkMFBycTA1TktkcnJDdTNzdUJsNjllCjhibHlxZHU5Ky94Vmw2dG5y
amxkTzMyZGZiM3RodjJOMWg2N25wWmY3SDVwNmJYdmJiM3BjTFA5bHVPdGpyNEZmZWY2WGZzdjN2
YTYKZmVXTy81MGJBNHNHK3U0dXZudi9YdHc5NlgzZS9kRUhxUTllUDh4Nk9QMW8vV1BzNDZJbkNr
OHFucW8vcmYzVitOZG1xYjMwN0tEWApZTSt6aUdlUGhyaERMLytWK2E5UHd3WFBxYzhyUnJSRzZr
ZXRSOCtNK1l6ZGVySDB4ZkRMakpmVDQ0Vy9LZjYyOTVYUnE1OStkL3U5CloyTEp4UEJyMGV1WlAw
cmVxTDQ1K3RiMmJlZGs2T1RUZDJudnBxZUszcXUrUC9hQi9hSDdZL1RIa2Vuc1QvaFBsWitOUDNk
OENmenkKZUNadFp1YmY5NFR6K3dwbGJtUnpkSEpsWVcwS1pXNWtiMkpxQ2pFd0lEQWdiMkpxQ2pJ
Mk1USUtaVzVrYjJKcUNqY2dNQ0J2WW1vSwpXeUF2U1VORFFtRnpaV1FnT1NBd0lGSWdYUXBsYm1S
dlltb0tNeUF3SUc5aWFnbzhQQ0F2Vkhsd1pTQXZVR0ZuWlhNZ0wwMWxaR2xoClFtOTRJRnN3SURB
Z01qRWdNak5kSUM5RGIzVnVkQ0F4SUM5TGFXUnpJRnNnTWlBd0lGSWdYU0ErUGdwbGJtUnZZbW9L
TVRFZ01DQnYKWW1vS1BEd2dMMVI1Y0dVZ0wwTmhkR0ZzYjJjZ0wxQmhaMlZ6SURNZ01DQlNJRDQr
Q21WdVpHOWlhZ294TWlBd0lHOWlhZ29vVFdGagpJRTlUSUZnZ01UQXVOaUJSZFdGeWRIb2dVRVJH
UTI5dWRHVjRkQ2tLWlc1a2IySnFDakV6SURBZ2IySnFDaWhFT2pJd01EZ3hNakl5Ck1qTTFNakkx
V2pBd0p6QXdKeWtLWlc1a2IySnFDakVnTUNCdlltb0tQRHdnTDFCeWIyUjFZMlZ5SURFeUlEQWdV
aUF2UTNKbFlYUnAKYjI1RVlYUmxJREV6SURBZ1VpQXZUVzlrUkdGMFpTQXhNeUF3SUZJZ1BqNEta
VzVrYjJKcUNuaHlaV1lLTUNBeE5Bb3dNREF3TURBdwpNREF3SURZMU5UTTFJR1lnQ2pBd01EQXdN
RE0wTkRnZ01EQXdNREFnYmlBS01EQXdNREF3TURJeE1pQXdNREF3TUNCdUlBb3dNREF3Ck1EQXpN
akkxSURBd01EQXdJRzRnQ2pBd01EQXdNREF3TWpJZ01EQXdNREFnYmlBS01EQXdNREF3TURFNU5D
QXdNREF3TUNCdUlBb3cKTURBd01EQXdNekUwSURBd01EQXdJRzRnQ2pBd01EQXdNRE14T1RBZ01E
QXdNREFnYmlBS01EQXdNREF3TURReE1DQXdNREF3TUNCdQpJQW93TURBd01EQXdORFUxSURBd01E
QXdJRzRnQ2pBd01EQXdNRE14TmprZ01EQXdNREFnYmlBS01EQXdNREF3TXpNd05pQXdNREF3Ck1D
QnVJQW93TURBd01EQXpNelUySURBd01EQXdJRzRnQ2pBd01EQXdNRE0wTURZZ01EQXdNREFnYmlB
S2RISmhhV3hsY2dvOFBDQXYKVTJsNlpTQXhOQ0F2VW05dmRDQXhNU0F3SUZJZ0wwbHVabThnTVNB
d0lGSWdMMGxFSUZzZ1BEZzNZalUxWmpZMk1qZzNOakV3WWpBNApPVGRqTWpjMFpURmlZV1ptTWpB
d1BnbzhPRGRpTlRWbU5qWXlPRGMyTVRCaU1EZzVOMk15TnpSbE1XSmhabVl5TURBK0lGMGdQajRL
CmMzUmhjblI0Y21WbUNqTTFNak1LSlNWRlQwWUtKVkJFUmkweExqTUtKY1RsOHVYcnAvT2cwTVRH
Q2pRZ01DQnZZbW9LUER3Z0wweGwKYm1kMGFDQTFJREFnVWlBdlJtbHNkR1Z5SUM5R2JHRjBaVVJs
WTI5a1pTQStQZ3B6ZEhKbFlXMEtlQUUxeWpFS2dEQU1CZERkVS93VApwRW1iQ0prZG5EMURRUjNx
VUhwL01CVWt3K2UvbjQ0REhXa2JnanJBMzQyS3RBZGNBY1RxaGx5SW1SWFBEK0ZsVmJUWnhXeEc3
RXRECnp1UWxHMFJJM2VmSGpSUEhDN0lURmxBS1pXNWtjM1J5WldGdENtVnVaRzlpYWdvMUlEQWdi
MkpxQ2pnNUNtVnVaRzlpYWdveUlEQWcKYjJKcUNqdzhJQzlVZVhCbElDOVFZV2RsSUM5UVlYSmxi
blFnTXlBd0lGSWdMMUpsYzI5MWNtTmxjeUEySURBZ1VpQXZRMjl1ZEdWdQpkSE1nTkNBd0lGSWdM
MDFsWkdsaFFtOTRJRnN3SURBZ01qTWdNak5kQ2o0K0NtVnVaRzlpYWdvMklEQWdiMkpxQ2p3OElD
OVFjbTlqClUyVjBJRnNnTDFCRVJpQmRJQzlEYjJ4dmNsTndZV05sSUR3OElDOURjekVnTnlBd0lG
SWdQajRnTDBWNGRFZFRkR0YwWlNBOFBDQXYKUjNNeElEZ2dNQ0JTQ2o0K0lENCtDbVZ1Wkc5aWFn
bzRJREFnYjJKcUNqdzhJQzlVZVhCbElDOUZlSFJIVTNSaGRHVWdMMDlRVFNBeApJRDQrQ21WdVpH
OWlhZ281SURBZ2IySnFDanc4SUM5TVpXNW5kR2dnTVRBZ01DQlNJQzlPSURNZ0wwRnNkR1Z5Ym1G
MFpTQXZSR1YyCmFXTmxVa2RDSUM5R2FXeDBaWElnTDBac1lYUmxSR1ZqYjJSbElENCtDbk4wY21W
aGJRcDRBWjJXZDFSVDJSYUh6NzAzdmRBU0lpQWwKOUJwNkNTRFNPMGdWQkZHSlNZQlFBb2FFSm5a
RUJVWVVFU2xXWkZUQUFVZUhJbU5GRkF1RGdtTFhDZklRVU1iQlVVUkY1ZDJNYXdudgpyVFh6M3By
OXgxbmYyZWUzMTlsbjczM1h1Z0JRL0lJRXduUllBWUEwb1ZnVTd1dkJYQklUeThUM0FoZ1FBUTVZ
QWNEaFptWUVSL2hFCkF0VDh2VDJabWFoSXhyUDI3aTZBWkx2YkxMOVFKblBXLzMrUklqZERKQVlB
Q2tYVk5qeCtKaGZsQXBSVHM4VVpNdjhFeXZTVktUS0cKTVRJV29RbWlyQ0xqeEs5czlxZm1LN3ZK
bUpjbTVLRWFXYzRadkRTZWpMdFEzcG9sNGFPTUJLRmNtQ1hnWjZOOEIyVzlWRW1hQU9YMwpLTlBU
K0p4TUFEQVVtVi9NNXlhaGJJa3lSUlFaN29ueUFnQUlsTVE1dkhJT2kvazVhSjRBZUtabjVJb0Vp
VWxpcGhIWG1Hbmw2TWhtCit2R3pVL2xpTVN1VXcwM2hpSGhNei9TMERJNHdGNEN2YjVaRkFTVlpi
Wmxva2UydEhPM3RXZGJtYVBtLzJkOGVmbFA5UGNoNisxWHgKSnV6UG5rR01ubG5mYk95c0w3MFdB
UFlrV3BzZHM3NlZWUUMwYlFaQTVlR3NUKzhnQVBJRkFMVGVuUE1laG14ZWtzVGlEQ2NMaSt6cwpi
SE1CbjJzdUsrZzMrNStDYjhxL2hqbjNtY3Z1KzFZN3BoYy9nU05KRlRObFJlV21wNlpMUk16TURB
Nlh6MlQ5OXhELzQ4QTVhYzNKCnd5eWNuOEFYOFlYb1ZWSG9sQW1FaVdpN2hUeUJXSkF1WkFxRWY5
WGhmeGcySndjWmZwMXJGR2gxWHdCOWhUbFF1RWtIeUc4OUFFTWoKQXlSdVAzb0NmZXRiRURFS3lM
NjhhSzJScjNPUE1ucis1L29mQzF5S2J1Rk1RU0pUNXZZTWoyUnlKYUlzR2FQZmhHekJBaEtRQjNT
ZwpDalNCTGpBQ0xHQU5ISUF6Y0FQZUlBQ0VnRWdRQTVZRExrZ0NhVUFFc2tFKzJBQUtRVEhZQVhh
RGFuQUExSUY2MEFST2dqWndCbHdFClY4QU5jQXNNZ0VkQUNvYkJTekFCM29GcENJTHdFQldpUWFx
UUZxUVBtVUxXRUJ0YUNIbERRVkE0RkFQRlE0bVFFSkpBK2RBbXFCZ3EKZzZxaFExQTk5Q04wR3Jv
SVhZUDZvQWZRSURRRy9RRjloQkdZQXROaERkZ0F0b0Rac0RzY0NFZkN5K0JFZUJXY0J4ZkEyK0ZL
dUJZKwpEcmZDRitFYjhBQXNoVi9Da3doQXlBZ0QwVVpZQ0J2eFJFS1FXQ1FCRVNGcmtTS2tBcWxG
bXBBT3BCdTVqVWlSY2VRREJvZWhZWmdZCkZzWVo0NGRaak9GaVZtSFdZa293MVpoam1GWk1GK1ky
WmhBemdmbUNwV0xWc2FaWUo2dy9kZ2syRVp1TkxjUldZSTlnVzdDWHNRUFkKWWV3N0hBN0h3Qm5p
SEhCK3VCaGNNbTQxcmdTM0Q5ZU11NERyd3czaEp2RjR2Q3JlRk8rQ0Q4Rno4R0o4SWI0S2Z4eC9I
dCtQSDhhLwpKNUFKV2dScmdnOGhsaUFrYkNSVUVCb0k1d2o5aEJIQ05GR0JxRTkwSW9ZUWVjUmNZ
aW14anRoQnZFa2NKazZURkVtR0pCZFNKQ21aCnRJRlVTV29pWFNZOUpyMGhrOGs2WkVkeUdGbEFY
ayt1Sko4Z1h5VVBrajlRbENnbUZFOUtIRVZDMlU0NVNybEFlVUI1UTZWU0RhaHUKMUZpcW1McWRX
ays5UkgxS2ZTOUhrek9YODVmanlhMlRxNUZybGV1WGV5VlBsTmVYZDVkZkxwOG5YeUYvU3Y2bS9M
Z0NVY0ZBd1ZPQgpvN0JXb1ViaHRNSTloVWxGbXFLVllvaGltbUtKWW9QaU5jVlJKYnlTZ1pLM0Vr
K3BRT213MGlXbElScEMwNlY1MHJpMFRiUTYybVhhCk1CMUhONlQ3MDVQcHhmUWY2TDMwQ1dVbFpW
dmxLT1VjNVJybHM4cFNCc0l3WVBnelVobWxqSk9NdTR5UDh6VG11Yy9qejlzMnIybGUKLzd3cGxm
a3FiaXA4bFNLVlpwVUJsWStxVEZWdjFSVFZuYXB0cWsvVU1Hb21hbUZxMldyNzFTNnJqYytuejNl
ZXo1MWZOUC9rL0lmcQpzTHFKZXJqNmF2WEQ2ajNxa3hxYUdyNGFHUnBWR3BjMHhqVVptbTZheVpy
bG11YzB4N1JvV2d1MUJGcmxXdWUxWGpDVm1lN01WR1lsCnM0czVvYTJ1N2FjdDBUNmszYXM5cldP
b3MxaG5vMDZ6emhOZGtpNWJOMEczWExkVGQwSlBTeTlZTDErdlVlK2hQbEdmclora3YwZS8KVzMv
S3dOQWcybUNMUVp2QnFLR0tvYjlobm1HajRXTWpxcEdyMFNxaldxTTd4amhqdG5HSzhUN2pXeWF3
aVoxSmtrbU55VTFUMk5UZQpWR0M2ejdUUERHdm1hQ1kwcXpXN3g2S3czRmxackViV29EbkRQTWg4
bzNtYitTc0xQWXRZaTUwVzNSWmZMTzBzVXkzckxCOVpLVmtGCldHMjA2ckQ2dzlyRW1tdGRZMzNI
aG1yalk3UE9wdDNtdGEycExkOTJ2KzE5TzVwZHNOMFd1MDY3ei9ZTzlpTDdKdnN4QnoySGVJZTkK
RHZmWWRIWW91NFI5MVJIcjZPRzR6dkdNNHdjbmV5ZXgwMG1uMzUxWnppbk9EYzZqQ3d3WDhCZlVM
Umh5MFhIaHVCeHlrUzVrTG94ZgplSENoMUZYYmxlTmE2L3JNVGRlTjUzYkViY1RkMkQzWi9iajdL
dzlMRDVGSGk4ZVVwNVBuR3M4TFhvaVhyMWVSVjYrM2t2ZGk3MnJ2CnB6NDZQb2sralQ0VHZuYStx
MzB2K0dIOUF2MTIrdDN6MS9Ebit0ZjdUd1E0Qkt3SjZBcWtCRVlFVmdjK0N6SUpFZ1YxQk1QQkFj
RzcKZ2g4djBsOGtYTlFXQWtMOFEzYUZQQWsxREYwVituTVlMaXcwckNic2ViaFZlSDU0ZHdRdFlr
VkVROFM3U0kvSTBzaEhpNDBXU3haMwpSc2xIeFVYVlIwMUZlMFdYUlV1WFdDeFpzK1JHakZxTUlL
WTlGaDhiRlhza2RuS3A5OUxkUzRmajdPSUs0KzR1TTF5V3MremFjclhsCnFjdlBycEJmd1ZseEto
NGJIeDNmRVArSkU4S3A1VXl1OUYrNWQrVUUxNU83aC91UzU4WXI1NDN4WGZobC9KRUVsNFN5aE5G
RWw4UmQKaVdOSnJra1ZTZU1DVDBHMTRIV3lYL0tCNUttVWtKU2pLVE9wMGFuTmFZUzArTFRUUWlW
aGlyQXJYVE05Sjcwdnd6U2pNRU82eW1uVgo3bFVUb2tEUmtVd29jMWxtdTVpTy9rejFTSXdrbXlX
RFdRdXphckxlWjBkbG44cFJ6QkhtOU9TYTVHN0xIY256eWZ0K05XWTFkM1ZuCnZuYitodnpCTmU1
ckRxMkYxcTVjMjdsT2QxM0J1dUgxdnV1UGJTQnRTTm53eTBiTGpXVWIzMjZLM3RSUm9GR3d2bUJv
cysvbXhrSzUKUWxIaHZTM09XdzVzeFd3VmJPM2Rack90YXR1WElsN1I5V0xMNG9yaVR5WGNrdXZm
V1gxWCtkM005b1R0dmFYMnBmdDM0SFlJZDl6ZAo2YnJ6V0psaVdWN1owSzdnWGEzbHpQS2k4cmU3
Vit5K1ZtRmJjV0FQYVk5a2o3UXlxTEs5U3E5cVI5V242cVRxZ1JxUG11YTk2bnUzCjdaM2F4OXZY
djk5dGY5TUJqUVBGQno0ZUZCeThmOGozVUd1dFFXM0ZZZHpock1QUDY2THF1cjluZjE5L1JPMUk4
WkhQUjRWSHBjZkMKajNYVk85VFhONmczbERiQ2paTEdzZU54eDIvOTRQVkRleE9yNlZBem83bjRC
RGdoT2ZIaXgvZ2Y3NTRNUE5sNWluMnE2U2Y5bi9hMgowRnFLV3FIVzNOYUp0cVEyYVh0TWU5L3Bn
Tk9kSGM0ZExUK2IvM3owalBhWm1yUEtaMHZQa2M0Vm5KczVuM2QrOGtMR2hmR0xpUmVICk9sZDBQ
cnEwNU5LZHJyQ3Uzc3VCbDY5ZThibHlxZHU5Ky94Vmw2dG5yamxkTzMyZGZiM3RodjJOMWg2N25w
WmY3SDVwNmJYdmJiM3AKY0xQOWx1T3RqcjRGZmVmNlhmc3YzdmE2ZmVXTy81MGJBNHNHK3U0dXZu
di9YdHc5NlgzZS9kRUhxUTllUDh4Nk9QMW8vV1BzNDZJbgpDazhxbnFvL3JmM1YrTmRtcWIzMDdL
RFhZTSt6aUdlUGhyaERMLytWK2E5UHd3WFBxYzhyUnJSRzZrZXRSOCtNK1l6ZGVySDB4ZkRMCmpK
ZlQ0NFcvS2Y2Mjk1WFJxNTkrZC91OVoyTEp4UEJyMGV1WlAwcmVxTDQ1K3RiMmJlZGs2T1RUZDJu
dnBxZUszcXUrUC9hQi9hSDcKWS9USGtlbnNUL2hQbForTlAzZDhDZnp5ZUNadFp1YmY5NFR6K3dw
bGJtUnpkSEpsWVcwS1pXNWtiMkpxQ2pFd0lEQWdiMkpxQ2pJMgpNVElLWlc1a2IySnFDamNnTUNC
dlltb0tXeUF2U1VORFFtRnpaV1FnT1NBd0lGSWdYUXBsYm1Sdlltb0tNeUF3SUc5aWFnbzhQQ0F2
ClZIbHdaU0F2VUdGblpYTWdMMDFsWkdsaFFtOTRJRnN3SURBZ01qTWdNak5kSUM5RGIzVnVkQ0F4
SUM5TGFXUnpJRnNnTWlBd0lGSWcKWFNBK1BncGxibVJ2WW1vS01URWdNQ0J2WW1vS1BEd2dMMVI1
Y0dVZ0wwTmhkR0ZzYjJjZ0wxQmhaMlZ6SURNZ01DQlNJRDQrQ21WdQpaRzlpYWdveE1pQXdJRzlp
YWdvb1RXRmpJRTlUSUZnZ01UQXVOaUJSZFdGeWRIb2dVRVJHUTI5dWRHVjRkQ2tLWlc1a2IySnFD
akV6CklEQWdiMkpxQ2loRU9qSXdNRGd4TWpJeU1qTTFNakkxV2pBd0p6QXdKeWtLWlc1a2IySnFD
akVnTUNCdlltb0tQRHdnTDFCeWIyUjEKWTJWeUlERXlJREFnVWlBdlEzSmxZWFJwYjI1RVlYUmxJ
REV6SURBZ1VpQXZUVzlrUkdGMFpTQXhNeUF3SUZJZ1BqNEtaVzVrYjJKcQpDbmh5WldZS01DQXhO
QW93TURBd01EQXdNREF3SURZMU5UTTFJR1lnQ2pBd01EQXdNRE0wTXprZ01EQXdNREFnYmlBS01E
QXdNREF3Ck1ESXdNeUF3TURBd01DQnVJQW93TURBd01EQXpNakUySURBd01EQXdJRzRnQ2pBd01E
QXdNREF3TWpJZ01EQXdNREFnYmlBS01EQXcKTURBd01ERTROU0F3TURBd01DQnVJQW93TURBd01E
QXdNekExSURBd01EQXdJRzRnQ2pBd01EQXdNRE14T0RFZ01EQXdNREFnYmlBSwpNREF3TURBd01E
UXdNU0F3TURBd01DQnVJQW93TURBd01EQXdORFEySURBd01EQXdJRzRnQ2pBd01EQXdNRE14TmpB
Z01EQXdNREFnCmJpQUtNREF3TURBd016STVOeUF3TURBd01DQnVJQW93TURBd01EQXpNelEzSURB
d01EQXdJRzRnQ2pBd01EQXdNRE16T1RjZ01EQXcKTURBZ2JpQUtkSEpoYVd4bGNnbzhQQ0F2VTJs
NlpTQXhOQ0F2VW05dmRDQXhNU0F3SUZJZ0wwbHVabThnTVNBd0lGSWdMMGxFSUZzZwpQR1poTURZ
ek5URm1ORGc0TmpNM01qSmlNekkwTVRBMVlUVmlZekZtTjJNeFBnbzhabUV3TmpNMU1XWTBPRGcy
TXpjeU1tSXpNalF4Ck1EVmhOV0pqTVdZM1l6RStJRjBnUGo0S2MzUmhjblI0Y21WbUNqTTFNVFFL
SlNWRlQwWUtBQ1ZRUkVZdE1TNHpDaVhFNWZMbDY2ZnoKb05ERXhnbzBJREFnYjJKcUNqdzhJQzlN
Wlc1bmRHZ2dOU0F3SUZJZ0wwWnBiSFJsY2lBdlJteGhkR1ZFWldOdlpHVWdQajRLYzNSeQpaV0Z0
Q25nQlhaUkpqaVEzREVYM2NRcXR2YUJGVFpSTzBPdGErUUFCdHcwNHE0SHF2ai9nUjhaVTFVZ2dB
NStUUHI4b2ZxUzM5SkV5ClB4MUpMZjM4Ty8yVmZvUUJVL292L2ZudGw2Wi9maVdUcFZXVGRzbmFO
YjNmaGlGOTRIaHRYV294SXBxMFBER2t5MENFTFRjVXNVWXUKRWRYMGMwUVJYZU14YkI1UmlYemRw
eEF4ODJkRGxkWWpSVlZ5cDVyVzgzdzh1WUd6bUhYZHNFZWt5VkJvN1VtTHRFTHgwL0FLUTZPQwpr
ZWlkZUtrejVURlVDRzVOU29pUVpVYXJNaW9sS1VRL1NXa1RpdnVGaS9RWk9sQzNVUGMzdkJFL1NI
dWxxeW9FbmJlTVVoU2pMckk5CjZLRzJVMlJrMnI2cFVuUmwzWjVlcEx2RW4zQmJuTTN0ZVpwS2Nk
NVRpbkdFQzhTOW5HZ0hGMlRZYm04R2ttbmVSWllUZFNmbnNZSFIKM0tqTHAzTXFSZzF5UFNQRWdU
WUVwNldHL1hUN0NEbVpNL2VDSm1mcHkwQmFuMzZ4S3F0Umo2R1k4S1hYTDVPNHArOS9NR3BxWmZG
WgpiUmFHczRtdEJ6ZnB1YTAwSkpzVmw3dVlvNnF0UUErbFczanI3TzVsZU56YnZGS1ZPZGVOZHZC
UTZ0N2VhdE5SMFZ3Mjd3Y0VCOVJGCm9odWJWYStFQk80ZFpUanF2QWxRYisySVhUMjhYSHBoek5x
Z1VoTW1vQkNrL1VHN0gxZjc3UjB5VjFRYWpBMitRTHk0dWFpNzNYaGsKdksvTGo5WUtKeXIxc2Jq
aU9XQU10UXdINURVNjkzTjZ3enU5Wk5rODF5cGFMTW1UYUNxUDZxaFVPcmhSenpEMjNOTnJDMDBI
RHdURwpLeXJEcVpZYmhVN0xPUGZ3d3JHS2xhZ2NQRkJLWWJIRVJ0ekhpZnB4ZDdlM2NDOVBKZ3ZC
MFZrMzBFNS9QR3F2Rk5pZlhWZVVtNUlYCnQrZVlsUlA5RjdLWkVyOTV4dDg3dUJHRDdQM2RtTFhn
M3JaQ1I1M1ZiODk4bm95TmhjWWV1elRmMk5kaVRPUHA3ekk3YWd4aHYvZ2QKbkFpYnorYURHNXA3
N3VsbkczcDA1MHI0eE5SL2ZRUHhMTmlCdFRlb3ROSG45dTQ3MFhHTXh3ekZlMlJuQjlWdXNLT0sy
Ymg4VStxcwpuclg2eEFQZ0VUWmJrKzRPSDNEcGhPQUIrYmNJTmJZTmd1dU1BNURxQkxzZkRwTURi
aWN2MGpwcEQrdmppSDhKYzNJK0lUWjUzWlBYCmZ0RG5ZMUtIWVpxVExnSTg1QTdmMFQ3a0RzZ2FH
TTM3ME9zVlhlVGl3WGxUTUdBMys4MU5uUnNMcU1iRVoxYWhyeU5IdHdBUFBoUTQKc1QrYkdyMTRw
WVA2OXFXUHVLRzMvd0VzakhiM0NtVnVaSE4wY21WaGJRcGxibVJ2WW1vS05TQXdJRzlpYWdvNE1U
VUtaVzVrYjJKcQpDaklnTUNCdlltb0tQRHdnTDFSNWNHVWdMMUJoWjJVZ0wxQmhjbVZ1ZENBeklE
QWdVaUF2VW1WemIzVnlZMlZ6SURZZ01DQlNJQzlECmIyNTBaVzUwY3lBMElEQWdVaUF2VFdWa2FX
RkNiM2dnV3pBZ01DQXhOaTR3TURBMUlERTNYUW92UVhKMFFtOTRJRnN3TGpBeU16a3kKTlRnZ01D
NHdNVFkyTURFMklERTFMakF3TmpNZ01UWXVOVGM1TmwwZ1BqNEtaVzVrYjJKcUNqWWdNQ0J2WW1v
S1BEd2dMMUJ5YjJOVApaWFFnV3lBdlVFUkdJRjBnTDBWNGRFZFRkR0YwWlNBOFBDQXZSM014SURj
Z01DQlNJRDQrSUQ0K0NtVnVaRzlpYWdvM0lEQWdiMkpxCkNqdzhJQzlVZVhCbElDOUZlSFJIVTNS
aGRHVWdMMDlRVFNBeElENCtDbVZ1Wkc5aWFnb3pJREFnYjJKcUNqdzhJQzlVZVhCbElDOVEKWVdk
bGN5QXZUV1ZrYVdGQ2IzZ2dXekFnTUNBMk1USWdOemt5WFNBdlEyOTFiblFnTVNBdlMybGtjeUJi
SURJZ01DQlNJRjBnUGo0SwpaVzVrYjJKcUNqZ2dNQ0J2WW1vS1BEd2dMMVI1Y0dVZ0wwTmhkR0Zz
YjJjZ0wxQmhaMlZ6SURNZ01DQlNJRDQrQ21WdVpHOWlhZ281CklEQWdiMkpxQ2lnek1ITmxZMkpo
WTJ0ZmMyMHBDbVZ1Wkc5aWFnb3hNQ0F3SUc5aWFnb29UV0ZqSUU5VElGZ2dNVEF1TmlCUmRXRnkK
ZEhvZ1VFUkdRMjl1ZEdWNGRDa0taVzVrYjJKcUNqRXhJREFnYjJKcUNpaEJaRzlpWlNCSmJHeDFj
M1J5WVhSdmNpQkRVelFwQ21WdQpaRzlpYWdveE1pQXdJRzlpYWdvb1JEb3lNREE1TURVeE5URXdN
VE0wT0Zvd01DY3dNQ2NwQ21WdVpHOWlhZ294SURBZ2IySnFDanc4CklDOVVhWFJzWlNBNUlEQWdV
aUF2VUhKdlpIVmpaWElnTVRBZ01DQlNJQzlEY21WaGRHOXlJREV4SURBZ1VpQXZRM0psWVhScGIy
NUUKWVhSbElERXlJREFnVWlBdlRXOWtSR0YwWlFveE1pQXdJRklnUGo0S1pXNWtiMkpxQ25oeVpX
WUtNQ0F4TXdvd01EQXdNREF3TURBdwpJRFkxTlRNMUlHWWdDakF3TURBd01ERTBPRGtnTURBd01E
QWdiaUFLTURBd01EQXdNRGt6TUNBd01EQXdNQ0J1SUFvd01EQXdNREF4Ck1UazFJREF3TURBd0lH
NGdDakF3TURBd01EQXdNaklnTURBd01EQWdiaUFLTURBd01EQXdNRGt4TVNBd01EQXdNQ0J1SUFv
d01EQXcKTURBeE1EZ3pJREF3TURBd0lHNGdDakF3TURBd01ERXhOVEFnTURBd01EQWdiaUFLTURB
d01EQXdNVEkzT0NBd01EQXdNQ0J1SUFvdwpNREF3TURBeE16STNJREF3TURBd0lHNGdDakF3TURB
d01ERXpOVGNnTURBd01EQWdiaUFLTURBd01EQXdNVFF3TnlBd01EQXdNQ0J1CklBb3dNREF3TURB
eE5EUTNJREF3TURBd0lHNGdDblJ5WVdsc1pYSUtQRHdnTDFOcGVtVWdNVE1nTDFKdmIzUWdPQ0F3
SUZJZ0wwbHUKWm04Z01TQXdJRklnTDBsRUlGc2dQRFl6T1RFM1lUTTVNell4WWpCbFpHUXdZelpt
T0RCaE5ETmhNamMzTXpaalBnbzhOak01TVRkaApNemt6TmpGaU1HVmtaREJqTm1ZNE1HRTBNMkV5
Tnpjek5tTStJRjBnUGo0S2MzUmhjblI0Y21WbUNqRTFPVE1LSlNWRlQwWUtBQUFBCkFBQUFBQ1ZR
UkVZdE1TNHpDaVhFNWZMbDY2ZnpvTkRFeGdvMElEQWdiMkpxQ2p3OElDOU1aVzVuZEdnZ05TQXdJ
RklnTDBacGJIUmwKY2lBdlJteGhkR1ZFWldOdlpHVWdQajRLYzNSeVpXRnRDbmdCVFk4eERzTXdD
RVgzbk9LZmdHQk13SjQ3Wk00WklyVWQwaUh5L2FVYQpMN0hZbmg3L3c0MEROOVpYU3pnYmVFdzdz
ZTRkZkJyRWlLMG9tRGhud1crQUlnb25kUk5jU0puWVV4aEpSWmlYQnpsdEl1SEV0ZzFGCnZDdjhv
S1JVM2VjY0owdmJCSlpRYXUrK3BtNlRPb05RdEF4U3FlY3JKbEtvbGxFZUgvVHJ2bmpqK0FNV3hU
TEVDbVZ1WkhOMGNtVmgKYlFwbGJtUnZZbW9LTlNBd0lHOWlhZ294TXpjS1pXNWtiMkpxQ2pJZ01D
QnZZbW9LUER3Z0wxUjVjR1VnTDFCaFoyVWdMMUJoY21WdQpkQ0F6SURBZ1VpQXZVbVZ6YjNWeVky
VnpJRFlnTUNCU0lDOURiMjUwWlc1MGN5QTBJREFnVWlBdlRXVmthV0ZDYjNnZ1d6QWdNQ0F5Ck9T
QXhOVjBLUGo0S1pXNWtiMkpxQ2pZZ01DQnZZbW9LUER3Z0wxQnliMk5UWlhRZ1d5QXZVRVJHSUYw
Z0wwTnZiRzl5VTNCaFkyVWcKUER3Z0wwTnpNU0EzSURBZ1VpQStQaUF2UlhoMFIxTjBZWFJsSUR3
OElDOUhjekVnT0NBd0lGSUtQajRnUGo0S1pXNWtiMkpxQ2pnZwpNQ0J2WW1vS1BEd2dMMVI1Y0dV
Z0wwVjRkRWRUZEdGMFpTQXZUMUJOSURFZ1BqNEtaVzVrYjJKcUNqa2dNQ0J2WW1vS1BEd2dMMHhs
CmJtZDBhQ0F4TUNBd0lGSWdMMDRnTXlBdlFXeDBaWEp1WVhSbElDOUVaWFpwWTJWU1IwSWdMMFpw
YkhSbGNpQXZSbXhoZEdWRVpXTnYKWkdVZ1BqNEtjM1J5WldGdENuZ0JuWlozVkZQWkZvZlB2VGU5
MEJJaUlDWDBHbm9KSU5JN1NCVUVVWWxKZ0ZBQ2hvUW1ka1FGUmhRUgpLVlprVk1BQlI0Y2lZMFVV
QzRPQ1l0Y0o4aEJReHNGUlJFWGwzWXhyQ2UrdE5mUGVtdjNIV2QvWjU3ZlgyV2Z2ZmRlNkFGRDhn
Z1RDCmRGZ0JnRFNoV0JUdTY4RmNFaFBMeFBjQ0dCQUJEbGdCd09GbVpnUkgrRVFDMVB5OVBabVpx
RWpHcy9idUxvQmt1OXNzdjFBbWM5Yi8KZjVFaU4wTWtCZ0FLUmRVMlBING1GK1VDbEZPenhSa3kv
d1RLOUpVcE1vWXhNaGFoQ2FLc0l1UEVyMnoycCtZcnU4bVlseWJrb1JwWgp6aG04Tko2TXUxRGVt
aVhobzR3RW9WeVlKZUJubzN3SFpiMVVTWm9BNWZjbzA5UDRuRXdBTUJTWlg4em5KcUZzaVRKRkZC
bnVpZklDCkFBaVV4RG04Y2c2TCtUbG9uZ0I0cG1ma2lnU0pTV0ttRWRlWWFlWG95R2I2OGJOVCtX
SXhLNVREVGVHSWVFelA5TFFNampBWGdLOXYKbGtVQkpWbHRtV2lSN2EwYzdlMVoxdVpvK2IvWjN4
NStVLzA5eUhyN1ZmRW03TStlUVl5ZVdkOXM3S3d2dlJZQTlpUmFteDJ6dnBWVgpBTFJ0QmtEbDRh
eFA3eUFBOGdVQXRONmM4eDZHYkY2U3hPSU1Kd3VMN094c2N3R2ZheTRyNkRmN240SnZ5citHT2Zl
WnkrNzdWanVtCkZ6K0JJMGtWTTJWRjVhYW5wa3RFek13TURwZlBaUDMzRVAvandEbHB6Y25ETEp5
ZndCZnhoZWhWVWVpVUNZU0phTHVGUElGWWtDNWsKQ29SLzFlRi9HRFluQnhsK25Xc1VhSFZmQUgy
Rk9WQzRTUWZJYnowQVF5TURKRzQvZWdKOTYxc1FNUXJJdnJ4b3JaR3ZjNDh5ZXY3bgoraDhMWElw
dTRVeEJJbFBtOWd5UFpISWxvaXdabzkrRWJNRUNFcEFIZEtBS05JRXVNQUlzWUEwY2dETndBOTRn
QUlTQVNCQURsZ011ClNBSnBRQVN5UVQ3WUFBcEJNZGdCZG9OcWNBRFVnWHJRQkU2Q05uQUdYQVJY
d0Exd0N3eUFSMEFLaHNGTE1BSGVnV2tJZ3ZBUUZhSkIKcXBBV3BBK1pRdFlRRzFvSWVVTkJVRGdV
QThWRGlaQVFra0Q1MENhb0dDcURxcUZEVUQzMEkzUWF1Z2hkZy9xZ0I5QWdOQWI5QVgyRQpFWmdD
MDJFTjJBQzJnTm13T3h3SVI4TEw0RVI0Rlp3SEY4RGI0VXE0Rmo0T3Q4SVg0UnZ3QUN5Rlg4S1RD
RURJQ0FQUlJsZ0lHL0ZFClFwQllKQUVSSVd1UklxUUNxVVdha0E2a0c3bU5TSkZ4NUFNR2g2Rmht
QmdXeGhuamgxbU00V0pXWWRaaVNqRFZtR09ZVmt3WDVqWm0KRURPQitZS2xZdFd4cGxnbnJEOTJD
VFlSbTQwdHhGWmdqMkJic0pleEE5aGg3RHNjRHNmQUdlSWNjSDY0R0Z3eWJqV3VCTGNQMTR5Nwpn
T3ZERGVFbThYaThLdDRVNzRJUHdYUHdZbndodmdwL0hIOGUzNDhmeHI4bmtBbGFCR3VDRHlHV0lD
UnNKRlFRR2dqbkNQMkVFY0kwClVZR29UM1FpaGhCNXhGeGlLYkdPMkVHOFNSd21UcE1VU1lZa0Yx
SWtLWm0wZ1ZSSmFpSmRKajBtdlNHVHlUcGtSM0lZV1VCZVQ2NGsKbnlCZkpRK1NQMUNVS0NZVVQw
b2NSVUxaVGpsS3VVQjVRSGxEcFZJTnFHN1VXS3FZdXAxYVQ3MUVmVXA5TDBlVE01ZnpsK1BKclpP
cgprV3VWNjVkN0pVK1UxNWQzbDE4dW55ZGZJWDlLL3FiOHVBSlJ3VURCVTRHanNGYWhSdUcwd2oy
RlNVV2FvcFZpaUdLYVlvbGlnK0kxCnhWRWx2SktCa3JjU1Q2bEE2YkRTSmFVaEdrTFRwWG5TdUxS
TnREcmFaZG93SFVjM3BQdlRrK25GOUIvb3ZmUUpaU1ZsVytVbzVSemwKR3VXenlsSUd3akJnK0RO
U0dhV01rNHk3akkvek5PYTV6K1BQMnphdmFWNy92Q21WK1NwdUtueVZJcFZtbFFHVmo2cE1WVy9W
Rk5XZApxbTJxVDlRd2FpWnFZV3JaYXZ2VkxxdU56NmZQZDU3UG5WODAvK1Q4aCtxd3VvbDZ1UHBx
OWNQcVBlcVRHcG9hdmhvWkdsVWFselRHCk5SbWFicHJKbXVXYTV6VEh0R2hhQzdVRVd1VmE1N1Zl
TUpXWjdzeFVaaVd6aXptaHJhN3RweTNSUHFUZHF6MnRZNml6V0dlalRyUE8KRTEyU0xsczNRYmRj
dDFOM1FrOUxMMWd2WDY5Ujc2RStVWit0bjZTL1I3OWJmOHJBMENEYVlJdEJtOEdvb1lxaHYyR2VZ
YVBoWXlPcQprYXZSS3FOYW96dkdPR08yY1lyeFB1TmJKckNKblVtU1NZM0pUVlBZMU41VVlMclB0
TThNYStab0pqU3JOYnZIb3JEY1dWbXNSdGFnCk9jTTh5SHlqZVp2NUt3czlpMWlMblJiZEZsOHM3
U3hUTGVzc0gxa3BXUVZZYmJUcXNQckQyc1NhYTExamZjZUdhdU5qczg2bTNlYTEKcmFrdDMzYS83
WDA3bWwydzNSYTdUcnZQOWc3Mkl2c20rekVIUFlkNGg3ME85OWgwZGlpN2hIM1ZFZXZvNGJqTzhZ
empCeWQ3SjdIVApTYWZmblZuT0tjNE56cU1MREJmd0Y5UXRHSExSY2VHNEhIS1JMbVF1akY5NGNL
SFVWZHVWNDFycitzeE4xNDNuZHNSdHhOM1lQZG45CnVQc3JEMHNQa1VlTHg1U25rK2Nhend0ZWlK
ZXZWNUZYcjdlUzkyTHZhdStuUGpvK2lUNk5QaE8rZHI2cmZTLzRZZjBDL1hiNjNmUFgKOE9mNjEv
dFBCRGdFckFub0NxUUVSZ1JXQno0TE1na1NCWFVFdzhFQndidUNIeS9TWHlSYzFCWUNRdnhEZG9V
OENUVU1YUlg2Y3hndQpMRFNzSnV4NXVGVjRmbmgzQkMxaVJVUkR4THRJajhqU3lFZUxqUlpMRm5k
R3lVZkZSZFZIVFVWN1JaZEZTNWRZTEZtejVFYU1Xb3dnCnBqMFdIeHNWZXlSMmNxbjMwdDFMaCtQ
czRncmo3aTR6WEphejdOcHl0ZVdweTgrdWtGL0JXWEVxSGhzZkhkOFEvNGtUd3FubFRLNzAKWDds
MzVRVFhrN3VIKzVMbnhpdm5qZkZkK0dYOGtRU1hoTEtFMFVTWHhGMkpZMG11U1JWSjR3SlBRYlhn
ZGJKZjhvSGtxWlNRbEtNcApNNm5ScWMxcGhMVDR0Tk5DSldHS3NDdGRNejBudlMvRE5LTXdRN3JL
YWRYdVZST2lRTkdSVENoeldXYTdtSTcrVFBWSWpDU2JKWU5aCkM3TnFzdDVuUjJXZnlsSE1FZWIw
NUpya2Jzc2R5ZlBKKzM0MVpqVjNkV2UrZHY2Ry9NRTE3bXNPcllYV3JsemJ1VTUzWGNHNjRmVysK
NjQ5dElHMUkyZkRMUnN1TlpSdmZib3JlMUZHZ1ViQytZR2l6NytiR1FybENVZUc5TGM1YkRtekZi
QlZzN2QxbXM2MXEyNWNpWHRIMQpZc3ZpaXVKUEpkeVM2OTlaZlZmNTNjejJoTzI5cGZhbCszZmdk
Z2gzM04zcHV2TlltV0paWHRuUXJ1QmRyZVhNOHFMeXQ3dFg3TDVXCllWdHhZQTlwajJTUHRES29z
cjFLcjJwSDFhZnFwT3FCR28rYTVyM3FlN2Z0bmRySDI5ZS8zMjEvMHdHTkE4VUhQaDRVSEx4L3lQ
ZFEKYTYxQmJjVmgzT0dzdzgvcm91cTZ2MmQvWDM5RTdVanhrYzlIaFVlbHg4S1BkZFU3MU5jM3FE
ZVVOc0tOa3NheDQzSEhiLzNnOVVONwpFNnZwVURPanVmZ0VPQ0U1OGVMSCtCL3ZuZ3c4MlhtS2Zh
cnBKLzJmOXJiUVdvcGFvZGJjMW9tMnBEWnBlMHg3MyttQTA1MGR6aDB0ClA1di9mUFNNOXBtYXM4
cG5TOCtSemhXY216bWZkMzd5UXNhRjhZdUpGNGM2VjNRK3VyVGswcDJ1c0s3ZXk0R1hyMTd4dVhL
cDI3MzcKL0ZXWHEyZXVPVjA3ZloxOXZlMkcvWTNXSHJ1ZWxsL3NmbW5wdGU5dHZlbHdzLzJXNDYy
T3ZnVjk1L3BkK3kvZTlycDk1WTcvblJzRAppd2I2N2k2K2UvOWUzRDNwZmQ3OTBRZXBEMTQvekhv
NC9XajlZK3pqb2ljS1R5cWVxait0L2RYNDEyYXB2ZlRzb05kZ3o3T0laNCtHCnVFTXYvNVg1cjAv
REJjK3B6eXRHdEVicVI2MUh6NHo1ak4xNnNmVEY4TXVNbDlQamhiOHAvcmIzbGRHcm4zNTMrNzFu
WXNuRThHdlIKNjVrL1N0Nm92am42MXZadDUyVG81Tk4zYWUrbXA0cmVxNzQvOW9IOW9mdGo5TWVS
NmV4UCtFK1ZuNDAvZDN3Si9QSjRKbTFtNXQvMwpoUFA3Q21WdVpITjBjbVZoYlFwbGJtUnZZbW9L
TVRBZ01DQnZZbW9LTWpZeE1ncGxibVJ2WW1vS055QXdJRzlpYWdwYklDOUpRME5DCllYTmxaQ0E1
SURBZ1VpQmRDbVZ1Wkc5aWFnb3pJREFnYjJKcUNqdzhJQzlVZVhCbElDOVFZV2RsY3lBdlRXVmth
V0ZDYjNnZ1d6QWcKTUNBeU9TQXhOVjBnTDBOdmRXNTBJREVnTDB0cFpITWdXeUF5SURBZ1VpQmRJ
RDQrQ21WdVpHOWlhZ294TVNBd0lHOWlhZ284UENBdgpWSGx3WlNBdlEyRjBZV3h2WnlBdlVHRm5a
WE1nTXlBd0lGSWdQajRLWlc1a2IySnFDakV5SURBZ2IySnFDaWhOWVdNZ1QxTWdXQ0F4Ck1DNDJJ
RkYxWVhKMGVpQlFSRVpEYjI1MFpYaDBLUXBsYm1Sdlltb0tNVE1nTUNCdlltb0tLRVE2TWpBd09E
RXlNakl5TXpVeU1qWmEKTURBbk1EQW5LUXBsYm1Sdlltb0tNU0F3SUc5aWFnbzhQQ0F2VUhKdlpI
VmpaWElnTVRJZ01DQlNJQzlEY21WaGRHbHZia1JoZEdVZwpNVE1nTUNCU0lDOU5iMlJFWVhSbElE
RXpJREFnVWlBK1BncGxibVJ2WW1vS2VISmxaZ293SURFMENqQXdNREF3TURBd01EQWdOalUxCk16
VWdaaUFLTURBd01EQXdNelE0T0NBd01EQXdNQ0J1SUFvd01EQXdNREF3TWpVeUlEQXdNREF3SUc0
Z0NqQXdNREF3TURNeU5qVWcKTURBd01EQWdiaUFLTURBd01EQXdNREF5TWlBd01EQXdNQ0J1SUFv
d01EQXdNREF3TWpNeklEQXdNREF3SUc0Z0NqQXdNREF3TURBegpOVFFnTURBd01EQWdiaUFLTURB
d01EQXdNekl6TUNBd01EQXdNQ0J1SUFvd01EQXdNREF3TkRVd0lEQXdNREF3SUc0Z0NqQXdNREF3
Ck1EQTBPVFVnTURBd01EQWdiaUFLTURBd01EQXdNekl3T1NBd01EQXdNQ0J1SUFvd01EQXdNREF6
TXpRMklEQXdNREF3SUc0Z0NqQXcKTURBd01ETXpPVFlnTURBd01EQWdiaUFLTURBd01EQXdNelEw
TmlBd01EQXdNQ0J1SUFwMGNtRnBiR1Z5Q2p3OElDOVRhWHBsSURFMApJQzlTYjI5MElERXhJREFn
VWlBdlNXNW1ieUF4SURBZ1VpQXZTVVFnV3lBOFpEWTBaRE0wTkRRM1pHVmpPVGN6WmpSaE1URmxO
bVl5Ck9EZGtNbVUwTmpJK0NqeGtOalJrTXpRME5EZGtaV001TnpObU5HRXhNV1UyWmpJNE4yUXla
VFEyTWo0Z1hTQStQZ3B6ZEdGeWRIaHkKWldZS016VTJNd29sSlVWUFJnb0FBQUJCZyt3STJVUWtE
TmtjSk5sRUpCQ0xCQ1RaWENRRWkxUWtCSVBFQ01NRUFBQUE5UUFBQUNRQQpBQUFBQUFBQUFBQUFB
QjBBQUFBSUFBQUFDQUFBQUFBQUFBQmJFd0FBQXdBQUFBUUFBQUR4QUFBQWZ3QUFBREVBRHhFQUFB
QUFBQUFBCkFBQUFBQUFkQUFBQUF3QUFBQmtBQUFDbEZ3QUFBQUFBQUFBQUFFTkhVRzlwYm5STllX
dGxBQndBRWhBSUFBQUFBQUFBQUFBQUFBQUEKQUFBQUFBQUFBQUFBSUFvQUFBd0FDeEVFQUFBQVFB
QUFBSGdBREFBTEVRZ0FBQUJBQUFBQWVRQU1BQXNSOVAvLy93Z1FBQUJ3QUFJQQpCZ0FBOGdBQUFE
QUFBQUFBQUFBQUFBQUFBQjBBQUFBSUFRQUFBd0FBQUNRQUFBQUFBQUFBQVFFQWdBTUFBQUFDQVFD
QUdRQUFBQU1CCkFJQU1BQUFBS2dBQUFBY0FXQUFBQUNvQUFBQUxBRndBQUFBcUFBQUFDZ0RBQUFB
QUtnQUFBQXNBeEFBQUFDb0FBQUFLQUlQc0NObEUKSkF6WkhDVFpSQ1FRaXdRazJWd2tCSXRVSkFT
RHhBakRCQUFBQVBVQUFBQWtBQUFBQUFBQUFBQUFBQUFkQUFBQUNBQUFBQWdBQUFBQQpBQUFBV3hN
QUFBTUFBQUFFQUFBQThRQUFBSW9BQUFBd0FBOFJBQUFBQUFBQUFBQUFBQUFBSFFBQUFBTUFBQUFa
QUFBQVp4SUFBQUFBCkFBQUFBQUJEUjFOcGVtVk5ZV3RsQUJ3QUVoQUlBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBSUFvQUFCQUFDeEVFQUFBQVFBQUEKQUhkcFpIUm9BQkVBQ3hFSUFBQUFRQUFB
QUdobGFXZG9kQUFQQUFzUjlQLy8vd3NRQUFCemFYcGxBQUlBQmdBQUFQSUFBQUF3QUFBQQpBQUFB
QUFBQUFBQWRBQUFBQ0FFQUFBTUFBQUFrQUFBQUFBQUFBQWNCQUlBREFBQUFDQUVBZ0JrQUFBQUpB
UUNBREFBQUFEQUFBQUFICkFGZ0FBQUF3QUFBQUN3QmNBQUFBTUFBQUFBb0F6QUFBQURBQUFBQUxB
TkFBQUFBd0FBQUFDZ0RaUkNRRTJSalpSQ1FJMlZnRTJVUWsKRE5sWUNObEVKQkRaV0F6REJBQUFB
UFVBQUFBa0FBQUFBQUFBQUFBQUFBQWNBQUFBQUFBQUFCQUFBQUFBQUFBQVd4TUFBQUFBQUFBRQpB
QUFBOFFBQUFKVUFBQUF3QUE4UkFBQUFBQUFBQUFBQUFBQUFIQUFBQUFBQUFBQWJBQUFBWmhJQUFB
QUFBQUFBQUFCRFIxSmxZM1JOCllXdGxBQndBRWhBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFJQW9BQUF3QUN4RUVBQUFBUUFBQUFIZ0FEQUFMRVFnQUFBQkEKQUFBQWVRQVFBQXNSREFBQUFF
QUFBQUIzYVdSMGFBQVJBQXNSRUFBQUFFQUFBQUJvWldsbmFIUUFBZ0FHQUFBQUFQSUFBQUE0QUFB
QQpBQUFBQUFBQUFBQWNBQUFBQ0FFQUFBUUFBQUFzQUFBQUFBQUFBQTBCQUlBQUFBQUFEd0VBZ0Ew
QUFBQVFBUUNBR3dBQUFCSUJBSUFNCkFBQUFOUUFBQUFjQVdBQUFBRFVBQUFBTEFGd0FBQUExQUFB
QUNnRFlBQUFBTlFBQUFBc0EzQUFBQURVQUFBQUtBTmxFSkFqWndOaE0KSkJUWlJDUUUyY0RZVENR
TTNzTFpSQ1FjM3NMWnlkbGNKQVRaUkNRWWkwUWtCTjdLMkV3a0VON0IyRVFrSU5sY0pBaUxWQ1FJ
d3dRQQpBQUQxQUFBQUpBQUFBQUFBQUFBQUFBQUFQd0FBQUFBQUFBQWdBQUFBQUFBQUFGc1RBQUFB
QUFBQUJBQUFBUEVBQUFDVkFBQUFRd0FQCkVRQUFBQUFBQUFBQUFBQUFBRDhBQUFBQUFBQUFQZ0FB
QUs4VEFBQUFBQUFBQUFBQVgxOURSMUJ2YVc1MFFYQndiSGxCWm1acGJtVlUKY21GdWMyWnZjbTBB
SEFBU0VBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQ2dBQUVBQUxFUVFBQUFBSUVBQUFj
RzlwYm5RQQpEQUFMRVF3QUFBQVJFQUFBZEFBTUFBc1JCQUFBQUFnUUFBQndBQUlBQmdBQUFBRHlB
QUFBUUFBQUFBQUFBQUFBQUFBQVB3QUFBUEFBCkFBQUZBQUFBTkFBQUFBQUFBQUI5QUFDQUFBQUFB
SDhBQUlBaUFBQUFnQUFBZ0NZQUFBQ0JBQUNBUGdBQUFJSUFBSUFNQUFBQU9nQUEKQUFjQVdBQUFB
RG9BQUFBTEFGd0FBQUE2QUFBQUNnRFlBQUFBT2dBQUFBc0EzQUFBQURvQUFBQUtBTWNCQUFBQUFN
TUNBQUFBUWdBQQpBQVlBQkFBQUFQVUFBQUFrQUFBQUFBQUFBQUFBQUFBSEFBQUFBQUFBQUFBQUFB
QUFBQUFBV3hNQUFBQUFBQUFFQUFBQThRQUFBSGdBCkFBQkZBQkFSQUFBQUFBQUFBQUFBQUFBQUJ3
QUFBQUFBQUFBR0FBQUFKeEFBQUFBQUFBQUFBQUJOWldScFlWVkpSV3hsYldWdWREbzYKZmsxbFpH
bGhWVWxGYkdWdFpXNTBBQndBRWhBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQW9BQUEw
QUJoRWpFQUFBRWdCMAphR2x6QUFJQUJnRHlBQUFBSUFBQUFBQUFBQUFBQUFBQUJ3QUFBTmdHQUFB
QkFBQUFGQUFBQUFBQUFBQkJBQUNBREFBQUFEOEFBQUFICkFGZ0FBQUEvQUFBQUN3QmNBQUFBUHdB
QUFBb0F1QUFBQUQ4QUFBQUxBTHdBQUFBL0FBQUFDZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUEKQUFB
QUFBQUFBQUFBQUFBQVJBQUFBQVlBQkFBQUFFWUFBQUFHQUFnQUFBQk5BQUFBQmdBTUFBQUFVd0FB
QUFZQUVBQUFBRWNBQUFBRwpBQlFBQUFCSUFBQUFCZ0NMUkNRWWkwd2tGSXRVSkFSUVVZdE1KQkNE
N0JDTHhJa1FpMVFrSklsSUJJdE1KQ2lKVUFpSlNBei9GUUFBCkFBQ0R4QmpDR0FBc0FBQUFUZ0FB
QUFZQUJBQUFBUFVBQUFBa0FBQUFBQUFBQUFBQUFBQTJBQUFBQUFBQUFCZ0FBQUFBQUFBQVd4TUEK
QUFBQUFBQUVBQUFBOFFBQUFLVUFBQUE5QUJBUkFBQUFBQUFBQUFBQUFBQUFOZ0FBQUFBQUFBQXpB
QUFBTHhBQUFBQUFBQUFBQUFCTgpaV1JwWVZWSlJXeGxiV1Z1ZERvNmFHbDBWR1Z6ZEFBY0FCSVFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBQ0FBQU5BQVlSCkxoQUFBQklBZEdocGN3QVJB
QXNSQkFBQUFBNFFBQUJpYjNWdVpITUFFQUFMRVJRQUFBQUlFQUFBY0c5cGJuUUFEZ0E1RVNvQUFB
QUEKQUFBQVJ4QUFBQUlBQmdBQUFBRHlBQUFBSUFBQUFBQUFBQUFBQUFBQU5nQUFBTmdHQUFBQkFB
QUFGQUFBQUFBQUFBQkVBQUNBREFBQQpBRTBBQUFBSEFGZ0FBQUJOQUFBQUN3QmNBQUFBVFFBQUFB
b0F6UUFBQUUwQUFBQUxBTkVBQUFCTkFBQUFDZ0RvQUFBQVRRQUFBQXNBCjdBQUFBRTBBQUFBS0FJ
c05BQUFBQUlzUmkwUWtCSXRKQklrUWlVZ0V3Z1FBQWdBQUFGUUFBQUFHQUFRQUFBRDFBQUFBSkFB
QUFBQUEKQUFBQUFBQUFGd0FBQUFBQUFBQUVBQUFBQUFBQUFGc1RBQUFBQUFBQUJBQUFBUEVBQUFC
MEFBQUFRUUFRRVFBQUFBQUFBQUFBQUFBQQpBQmNBQUFBQUFBQUFGQUFBQURBUUFBQUFBQUFBQUFB
QVRXVmthV0ZWU1VWc1pXMWxiblE2T201aGRIVnlZV3hUYVhwbEFCd0FFaEFBCkFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFJQUlBQUEwQUJoRXVFQUFBRWdCMGFHbHpBQUlBQmdEeUFBQUFJQUFB
QUFBQUFBQUEKQUFBQUZ3QUFBTmdHQUFBQkFBQUFGQUFBQUFBQUFBQkZBQUNBREFBQUFGTUFBQUFI
QUZnQUFBQlRBQUFBQ3dCY0FBQUFVd0FBQUFvQQp0QUFBQUZNQUFBQUxBTGdBQUFCVEFBQUFDZ0NM
UkNRRWlVRUV3Z1FBQkFBQUFQVUFBQUFrQUFBQUFBQUFBQUFBQUFBS0FBQUFBQUFBCkFBUUFBQUFB
QUFBQVd4TUFBQUFBQUFBRUFBQUE4UUFBQUlVQUFBQS9BQkFSQUFBQUFBQUFBQUFBQUFBQUNnQUFB
QUFBQUFBSEFBQUEKTnhBQUFBQUFBQUFBQUFCTlpXUnBZVlZKUld4bGJXVnVkRG82YzJWMFVHRnlk
RWxFQUJ3QUVoQUFBQUFBQUFBQUFBQUFBQUFBQUFBQQpBQUFBQUFBQUlBb0FBQTBBQmhFakVBQUFF
Z0IwYUdsekFCRUFDeEVFQUFBQWRBQUFBSEJoY25SSlJBQUNBQVlBQUFBQThnQUFBQ0FBCkFBQUFB
QUFBQUFBQUFBb0FBQURZQmdBQUFRQUFBQlFBQUFBQUFBQUFTZ0FBZ0F3QUFBQlpBQUFBQndCWUFB
QUFXUUFBQUFzQVhBQUEKQUZrQUFBQUtBTWdBQUFCWkFBQUFDd0RNQUFBQVdRQUFBQW9BaTBFRXd3
UUFBQUQxQUFBQUpBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQQpBQUFBQUFBQUFBQUFBRnNUQUFBQUFB
QUFCQUFBQVBFQUFBQnZBQUFBUEFBUUVRQUFBQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFBd0FBCkFE
Z1FBQUFBQUFBQUFBQUFUV1ZrYVdGVlNVVnNaVzFsYm5RNk9uQmhjblJKUkFBY0FCSVFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUEKQUFBQUFDQUtBQUFOQUFZUkxoQUFBQklBZEdocGN3QUNBQVlBQVBJ
QUFBQWdBQUFBQUFBQUFBQUFBQUFFQUFBQTJBWUFBQUVBQUFBVQpBQUFBQUFBQUFFc0FBSUFNQUFB
QVhnQUFBQWNBV0FBQUFGNEFBQUFMQUZ3QUFBQmVBQUFBQ2dDd0FBQUFYZ0FBQUFzQXRBQUFBRjRB
CkFBQUtBSXRCQ05Ib0pBSERCQUFBQVBVQUFBQWtBQUFBQUFBQUFBQUFBQUFJQUFBQUFBQUFBQUFB
QUFBQUFBQUFXeE1BQUFBQUFBQUUKQUFBQThRQUFBSElBQUFBL0FCQVJBQUFBQUFBQUFBQUFBQUFB
Q0FBQUFBQUFBQUFIQUFBQU9SQUFBQUFBQUFBQUFBQk5aV1JwWVZWSgpSV3hsYldWdWREbzZhWE5R
Y21WemMyVmtBQndBRWhBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQW9BQUEwQUJoRXVF
QUFBCkVnQjBhR2x6QUFJQUJnQUFBUElBQUFBZ0FBQUFBQUFBQUFBQUFBQUlBQUFBMkFZQUFBRUFB
QUFVQUFBQUFBQUFBRTBBQUlBTUFBQUEKWXdBQUFBY0FXQUFBQUdNQUFBQUxBRndBQUFCakFBQUFD
Z0MwQUFBQVl3QUFBQXNBdUFBQUFHTUFBQUFLQUl0QkNNSG9CQ1FCd3dRQQpBQUQxQUFBQUpBQUFB
QUFBQUFBQUFBQUFDUUFBQUFBQUFBQUFBQUFBQUFBQUFGc1RBQUFBQUFBQUJBQUFBUEVBQUFCeUFB
QUFQd0FRCkVRQUFBQUFBQUFBQUFBQUFBQWtBQUFBQUFBQUFDQUFBQURrUUFBQUFBQUFBQUFBQVRX
VmthV0ZWU1VWc1pXMWxiblE2T21selJtOWoKZFhObFpBQWNBQklRQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFDQUtBQUFOQUFZUkxoQUFBQklBZEdocGN3QUNBQVlBQUFEeQpBQUFBSUFBQUFB
QUFBQUFBQUFBQUNRQUFBTmdHQUFBQkFBQUFGQUFBQUFBQUFBQk9BQUNBREFBQUFHZ0FBQUFIQUZn
QUFBQm9BQUFBCkN3QmNBQUFBYUFBQUFBb0F0QUFBQUdnQUFBQUxBTGdBQUFCb0FBQUFDZ0NMUVFq
MzBJUGdBY01FQUFBQTlRQUFBQ1FBQUFBQUFBQUEKQUFBQUFBa0FBQUFBQUFBQUFBQUFBQUFBQUFC
YkV3QUFBQUFBQUFRQUFBRHhBQUFBY2dBQUFEOEFFQkVBQUFBQUFBQUFBQUFBQUFBSgpBQUFBQUFB
QUFBZ0FBQUE1RUFBQUFBQUFBQUFBQUUxbFpHbGhWVWxGYkdWdFpXNTBPanBwYzBWdVlXSnNaV1FB
SEFBU0VBQUFBQUFBCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0NnQUFEUUFHRVM0UUFBQVNBSFJv
YVhNQUFnQUdBQUFBOGdBQUFDQUFBQUFBQUFBQUFBQUEKQUFrQUFBRFlCZ0FBQVFBQUFCUUFBQUFB
QUFBQVR3QUFnQXdBQUFCdEFBQUFCd0JZQUFBQWJRQUFBQXNBWEFBQUFHMEFBQUFLQUxRQQpBQUJ0
QUFBQUN3QzRBQUFBYlFBQUFBb0E5a1FrQkFGV2kvSEhCZ0FBQUFCMENWYm9BQUFBQUlQRUJJdkdY
c0lFQUFvQUFBQkNBQUFBCkJnQVNBQUFBY3dBQUFCUUFCQUFBQVBVQUFBQkVBQUFBQUFBQUFBQUFB
QUFmQUFBQUFBQUFBQVFBQUFBQUFBQUFXeE1BQUFnQUFBQUUKQUFBQUJnQUFBQllBQUFBQUFBQUFC
QUFBQUFBQUFBQmJFd0FBQWdBRUFBQUFBQUR4QUFBQWhRQUFBRklBRUJFQUFBQUFBQUFBQUFBQQpB
QUFmQUFBQUNBQUFBQndBQUFCRUVBQUFBQUFBQUFBQUFFMWxaR2xoVlVsRmJHVnRaVzUwT2pwZ2My
TmhiR0Z5SUdSbGJHVjBhVzVuCklHUmxjM1J5ZFdOMGIzSW5BQndBRWhBQUFBQUFBQUFBQUFBQUFB
QUVBQUFBQUFBQUFBQUFJQUlBQUEwQUJoRWpFQUFBRWdCMGFHbHoKQUFJQUJnQUFBQUFNQUFBQVF3
QUFBQWNBZUFBQUFFTUFBQUFMQUh3QUFBQkRBQUFBQ2dEZFFSRERCQUFBQVBVQUFBQWtBQUFBQUFB
QQpBQUFBQUFBRUFBQUFBQUFBQUFBQUFBQUFBQUFBV3hNQUFBQUFBQUFFQUFBQThRQUFBSG9BQUFC
SEFCQVJBQUFBQUFBQUFBQUFBQUFBCkJBQUFBQUFBQUFBREFBQUFVQkFBQUFBQUFBQUFBQUJOWldS
cFlWVkpWR2x0Wld4cGJtVlRiR2xrWlhJNk9uUnBiV1ZNYjJGa1pXUUEKSEFBU0VBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFnQ2dBQURRQUdFVThRQUFBU0FIUm9hWE1BQWdBR0FBQUE4Z0FB
QUNBQQpBQUFBQUFBQUFBQUFBQVFBQUFEWUJnQUFBUUFBQUJRQUFBQUFBQUFBWEFBQWdBd0FBQUI0
QUFBQUJ3QllBQUFBZUFBQUFBc0FYQUFBCkFIZ0FBQUFLQUx3QUFBQjRBQUFBQ3dEQUFBQUFlQUFB
QUFvQTNVRVl3d1FBQUFEMUFBQUFKQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUEKQUFBQUFBQUFBQUFB
QUZzVEFBQUFBQUFBQkFBQUFQRUFBQUI0QUFBQVJRQVFFUUFBQUFBQUFBQUFBQUFBQUFRQUFBQUFB
QUFBQXdBQQpBRkFRQUFBQUFBQUFBQUFBVFdWa2FXRlZTVlJwYldWc2FXNWxVMnhwWkdWeU9qcGtk
WEpoZEdsdmJnQWNBQklRQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFBQUFBQ0FLQUFBTkFBWVJU
eEFBQUJJQWRHaHBjd0FDQUFZQThnQUFBQ0FBQUFBQUFBQUFBQUFBQUFRQUFBRFkKQmdBQUFRQUFB
QlFBQUFBQUFBQUFYd0FBZ0F3QUFBQjlBQUFBQndCWUFBQUFmUUFBQUFzQVhBQUFBSDBBQUFBS0FM
Z0FBQUI5QUFBQQpDd0M4QUFBQWZRQUFBQW9BMmU3Y1VSamY0UGJFUkhzSTNkamRRUkRjY1JqREJB
QUFBUFVBQUFBa0FBQUFBQUFBQUFBQUFBQVZBQUFBCkFBQUFBQUFBQUFBQUFBQUFXeE1BQUFBQUFB
QUVBQUFBOFFBQUFINEFBQUJMQUJBUkFBQUFBQUFBQUFBQUFBQUFGUUFBQUFBQUFBQVUKQUFBQVVC
QUFBQUFBQUFBQUFBQk5aV1JwWVZWSlZHbHRaV3hwYm1WVGJHbGtaWEk2T21aeVlXTjBhVzl1VEc5
aFpHVmtBQndBRWhBQQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFvQUFBMEFCaEZQRUFB
QUVnQjBhR2x6QUFJQUJnQUFBUElBQUFBZ0FBQUFBQUFBCkFBQUFBQUFWQUFBQTJBWUFBQUVBQUFB
VUFBQUFBQUFBQUdFQUFJQU1BQUFBZ2dBQUFBY0FXQUFBQUlJQUFBQUxBRndBQUFDQ0FBQUEKQ2dE
QUFBQUFnZ0FBQUFzQXhBQUFBSUlBQUFBS0FBQUFBQUFBQUFBQWkwRU13d1FBQUFEMUFBQUFKQUFB
QUFBQUFBQUFBQUFBQkFBQQpBQUFBQUFBQUFBQUFBQUFBQUZzVEFBQUFBQUFBQkFBQUFQRUFBQUI4
QUFBQVNRQVFFUUFBQUFBQUFBQUFBQUFBQUFRQUFBQUFBQUFBCkF3QUFBTjBXQUFBQUFBQUFBQUFB
VFdWa2FXRlRhR0Z5WldSVlNVbHRZV2RsUld4bGJXVnVkRG82Wm1sc2JFMXZaR1VBSEFBU0VBQUEK
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0NnQUFEUUFHRWRZV0FBQVNBSFJvYVhNQUFnQUdB
UElBQUFBZ0FBQUFBQUFBQUFBQQpBQUFFQUFBQXdBWUFBQUVBQUFBVUFBQUFBQUFBQUNJQUFJQU1B
QUFBaWdBQUFBY0FXQUFBQUlvQUFBQUxBRndBQUFDS0FBQUFDZ0M4CkFBQUFpZ0FBQUFzQXdBQUFB
SW9BQUFBS0FJdkJ4d0FBQUFBQXd3UUFBQUJDQUFBQUJnQUVBQUFBOVFBQUFDUUFBQUFBQUFBQUFB
QUEKQUFrQUFBQUFBQUFBQUFBQUFBQUFBQUJiRXdBQUFnQUFBQVFBQUFEeEFBQUFkd0FBQUVRQUVC
RUFBQUFBQUFBQUFBQUFBQUFKQUFBQQpBZ0FBQUFnQUFBQW5FQUFBQUFBQUFBQUFBRTFsWkdsaFZV
bEZiR1Z0Wlc1ME9qcE5aV1JwWVZWSlJXeGxiV1Z1ZEFBY0FCSVFBQUFBCkFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFDQUtBQUFOQUFZUkl4QUFBQklBZEdocGN3QUNBQVlBQUF3QUFBQ1BBQUFBQndC
WUFBQUEKandBQUFBc0FYQUFBQUk4QUFBQUtBTWNCQUFBQUFNTUNBQUFBUWdBQUFBWUFCQUFBQVBV
QUFBQWtBQUFBQUFBQUFBQUFBQUFIQUFBQQpBQUFBQUFBQUFBQUFBQUFBV3hNQUFBQUFBQUFFQUFB
QThRQUFBSTRBQUFCYkFCQVJBQUFBQUFBQUFBQUFBQUFBQndBQUFBQUFBQUFHCkFBQUEweFlBQUFB
QUFBQUFBQUJOWldScFlWTm9ZWEpsWkZWSlNXMWhaMlZGYkdWdFpXNTBPanArVFdWa2FXRlRhR0Z5
WldSVlNVbHQKWVdkbFJXeGxiV1Z1ZEFBY0FCSVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUNBS0FBQU5BQVlSMFJZQUFCSUFkR2hwY3dBQwpBQVlBQUFBTUFBQUFsQUFBQUFjQVdBQUFBSlFB
QUFBTEFGd0FBQUNVQUFBQUNnRFpCUUFBQUFEREFnQUFBSndBQUFBR0FBUUFBQUQxCkFBQUFKQUFB
QUFBQUFBQUFBQUFBQndBQUFBQUFBQUFBQUFBQUFBQUFBRnNUQUFBQUFBQUFCQUFBQVBFQUFBQjhB
QUFBV0FBUUVRQUEKQUFBQUFBQUFBQUFBQUFjQUFBQUFBQUFBQmdBQUFQd1dBQUFBQUFBQUFBQUFU
V1ZrYVdGVGFHRnlaV1JWU1ZadmJIVnRaVk5zYVdSbApja0poWTJ0bmNtOTFibVJGYkdWdFpXNTBP
anB5WVdScGRYTUFIQUFTRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdDZ0FBCkFnQUdB
UElBQUFBZ0FBQUFBQUFBQUFBQUFBQUhBQUFBd0FZQUFBRUFBQUFVQUFBQUFBQUFBRGtBQUlBTUFB
QUFtUUFBQUFjQVdBQUEKQUprQUFBQUxBRndBQUFDWkFBQUFDZ0M4QUFBQW1RQUFBQXNBd0FBQUFK
a0FBQUFLQUFBQU1FSFo2TU1FQUFBQTlRQUFBQ1FBQUFBQQpBQUFBQUFBQUFBTUFBQUFBQUFBQUFB
QUFBQUFBQUFCYkV3QUFBQUFBQUFRQUFBRHhBQUFBaFFBQUFHRUFFQkVBQUFBQUFBQUFBQUFBCkFB
QURBQUFBQUFBQUFBSUFBQUQ4RmdBQUFBQUFBQUFBQUUxbFpHbGhVMmhoY21Wa1ZVbFdiMngxYldW
VGJHbGtaWEpDWVdOclozSnYKZFc1a1JXeGxiV1Z1ZERvNmMzUnliMnRsVkdocFkydHVaWE56QUJ3
QUVoQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFvQQpBQUlBQmdBQUFBRHlBQUFBSUFB
QUFBQUFBQUFBQUFBQUF3QUFBTUFHQUFBQkFBQUFGQUFBQUFBQUFBQTZBQUNBREFBQUFLRUFBQUFI
CkFGZ0FBQUNoQUFBQUN3QmNBQUFBb1FBQUFBb0F5QUFBQUtFQUFBQUxBTXdBQUFDaEFBQUFDZ0FB
QUlBLzJRVUFBQUFBd3dJQUFBQ3MKQUFBQUJnQUVBQUFBOVFBQUFDUUFBQUFBQUFBQUFBQUFBQWNB
QUFBQUFBQUFBQUFBQUFBQUFBQmJFd0FBQUFBQUFBUUFBQUR4QUFBQQpiUUFBQUVrQUVCRUFBQUFB
QUFBQUFBQUFBQUFIQUFBQUFBQUFBQVlBQUFBS0Z3QUFBQUFBQUFBQUFFMWxaR2xoVTJoaGNtVmtW
VWxVCmFXMWxiR2x1WlZOc2FXUmxjam82YUdWcFoyaDBBQndBRWhBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFJQW9BQUFJQUJnQUEKQUFEeUFBQUFJQUFBQUFBQUFBQUFBQUFBQndBQUFNQUdB
QUFCQUFBQUZBQUFBQUFBQUFCR0FBQ0FEQUFBQUtrQUFBQUhBRmdBQUFDcApBQUFBQ3dCY0FBQUFx
UUFBQUFvQXNBQUFBS2tBQUFBTEFMUUFBQUNwQUFBQUNnQUFBQ0JCMlFVQUFBQUF3d0lBQUFDMEFB
QUFCZ0FFCkFBQUE5UUFBQUNRQUFBQUFBQUFBQUFBQUFBY0FBQUFBQUFBQUFBQUFBQUFBQUFCYkV3
QUFBQUFBQUFRQUFBRHhBQUFBYlFBQUFFa0EKRUJFQUFBQUFBQUFBQUFBQUFBQUhBQUFBQUFBQUFB
WUFBQUFLRndBQUFBQUFBQUFBQUUxbFpHbGhVMmhoY21Wa1ZVbFVhVzFsYkdsdQpaVk5zYVdSbGNq
bzZiMlptYzJWMEFCd0FFaEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBb0FBQUlBQmdB
QUFBRHlBQUFBCklBQUFBQUFBQUFBQUFBQUFCd0FBQU1BR0FBQUJBQUFBRkFBQUFBQUFBQUJIQUFD
QURBQUFBTEVBQUFBSEFGZ0FBQUN4QUFBQUN3QmMKQUFBQXNRQUFBQW9Bc0FBQUFMRUFBQUFMQUxR
QUFBQ3hBQUFBQ2dBQUFBQkEyUVVBQUFBQXd3SUFBQUM4QUFBQUJnQUVBQUFBOVFBQQpBQ1FBQUFB
QUFBQUFBQUFBQUFjQUFBQUFBQUFBQUFBQUFBQUFBQUJiRXdBQUFBQUFBQVFBQUFEeEFBQUFlUUFB
QUZVQUVCRUFBQUFBCkFBQUFBQUFBQUFBSEFBQUFBQUFBQUFZQUFBQWdGd0FBQUFBQUFBQUFBRTFs
WkdsaFUyaGhjbVZrVlVsVWFXMWxiR2x1WlZOc2FXUmwKY2xSb2RXMWlSV3hsYldWdWREbzZjbUZr
YVhWekFCd0FFaEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBb0FBQUlBQmdBQQpBQUR5
QUFBQUlBQUFBQUFBQUFBQUFBQUFCd0FBQU1BR0FBQUJBQUFBRkFBQUFBQUFBQUJYQUFDQURBQUFB
TGtBQUFBSEFGZ0FBQUM1CkFBQUFDd0JjQUFBQXVRQUFBQW9BdkFBQUFMa0FBQUFMQU1BQUFBQzVB
QUFBQ2dBQUFJQkEyUVVBQUFBQXd3SUFBQURFQUFBQUJnQUUKQUFBQTlRQUFBQ1FBQUFBQUFBQUFB
QUFBQUFjQUFBQUFBQUFBQUFBQUFBQUFBQUJiRXdBQUFBQUFBQVFBQUFEeEFBQUFhd0FBQUVjQQpF
QkVBQUFBQUFBQUFBQUFBQUFBSEFBQUFBQUFBQUFZQUFBQXVGd0FBQUFBQUFBQUFBRTFsWkdsaFUy
aGhjbVZrVlVsV2IyeDFiV1ZUCmJHbGtaWEk2T25KaFpHbDFjd0FjQUJJUUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQ0FLQUFBQ0FBWUFBUElBQUFBZ0FBQUEKQUFBQUFBQUFBQUFIQUFBQXdB
WUFBQUVBQUFBVUFBQUFBQUFBQUdJQUFJQU1BQUFBd1FBQUFBY0FXQUFBQU1FQUFBQUxBRndBQUFE
QgpBQUFBQ2dDc0FBQUF3UUFBQUFzQXNBQUFBTUVBQUFBS0FBQUFvRURaQlFBQUFBRERBZ0FBQUx3
QUFBQUdBQVFBQUFEMUFBQUFKQUFBCkFBQUFBQUFBQUFBQUJ3QUFBQUFBQUFBQUFBQUFBQUFBQUZz
VEFBQUFBQUFBQkFBQUFQRUFBQUIzQUFBQVV3QVFFUUFBQUFBQUFBQUEKQUFBQUFBY0FBQUFBQUFB
QUJnQUFBRVFYQUFBQUFBQUFBQUFBVFdWa2FXRlRhR0Z5WldSVlNWWnZiSFZ0WlZOc2FXUmxjbFJv
ZFcxaQpSV3hsYldWdWREbzZjbUZrYVhWekFCd0FFaEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUlBb0FBQUlBQmdBQThnQUFBQ0FBCkFBQUFBQUFBQUFBQUFBY0FBQURBQmdBQUFRQUFBQlFB
QUFBQUFBQUFjUUFBZ0F3QUFBREpBQUFBQndCWUFBQUF5UUFBQUFzQVhBQUEKQU1rQUFBQUtBTGdB
QUFESkFBQUFDd0M4QUFBQXlRQUFBQW9BMlVRa0JObmgyVndrQk5sRUpBVERCQUFBQVBVQUFBQWtB
QUFBQUFBQQpBQUFBQUFBUEFBQUFBQUFBQUFRQUFBQUFBQUFBV3hNQUFBQUFBQUFFQUFBQThRQUFB
RjRBQUFBckFCQVJBQUFBQUFBQUFBQUFBQUFBCkR3QUFBQUFBQUFBT0FBQUF1aEFBQUFBQUFBQUFB
QUJtWVdKelpnQWNBQklRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQUsKQUFBTkFBc1JC
QUFBQUVBQUFBQmZXQUFDQUFZQUFBRHlBQUFBSUFBQUFBQUFBQUFBQUFBQUR3QUFBRWdBQUFBQkFB
QUFGQUFBQUFBQQpBQUNBQVFDQURBQUFBTTRBQUFBSEFGZ0FBQURPQUFBQUN3QmNBQUFBemdBQUFB
b0FvQUFBQU00QUFBQUxBS1FBQUFET0FBQUFDZ0RaClJDUUUyZUhaWENRRTJVUWtCTU1FQUFBQTlR
QUFBQ1FBQUFBQUFBQUFBQUFBQUE4QUFBQUFBQUFBQkFBQUFBQUFBQUJiRXdBQUFBQUEKQUFRQUFB
RHhBQUFBWFFBQUFDb0FFQkVBQUFBQUFBQUFBQUFBQUFBUEFBQUFBQUFBQUE0QUFBQzZFQUFBQUFB
QUFBQUFBR1poWW5NQQpIQUFTRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdDZ0FBRFFB
TEVRUUFBQUJBQUFBQVgxZ0FBZ0FHQUFBQUFQSUFBQUFnCkFBQUFBQUFBQUFBQUFBQVBBQUFBU0FB
QUFBRUFBQUFVQUFBQUFBQUFBUDRCQUlBTUFBQUEwd0FBQUFjQVdBQUFBTk1BQUFBTEFGd0EKQUFE
VEFBQUFDZ0NnQUFBQTB3QUFBQXNBcEFBQUFOTUFBQUFLQUlQc1hGTlZWbGRRL3hVQUFBQUFpL2lE
eEFTRi80bDhKQlIwSEdvQgpWLzhWQUFBQUFJdndnOFFJaGZaMUZGZi9GUUFBQUFDRHhBUXp3Rjll
WFZ1RHhGekRpejBBQUFBQWFnR05UQ1F3VmxILzE0dFFDSXNZCmkyZ0VpMEFNYWdDTlRDUk1WbEdK
VkNROGlVUWtRUC9YaTFRa1BJUEVDSXZNaVJtSmFRU0pVUWlMVkNRNGlWRU1peENEN0JDTHpJa1IK
aTFBRWlWRUVpMUFJaTBBTWlWRUlpVUVNalV3a2RGSC9GUUFBQUFDTE9JdFlCSXRRREl0b0NGYUpm
Q1JFaVZ3a1NJbFVKRkQvRlFBQQpBQUNKUkNRNDIwUWtPSVBFSkkxRUpGamNEUUFBQUFEY05RQUFB
QURaWENRVTJVUWtGTmtjSkZEL0ZRQUFBQUNMQ0l0UUJJbFVKRWlMClVBeUpUQ1JFaTBnSWlWUWtV
SXRRRklsTUpFeUxTQkNKVkNSWWl4Q0Q3QkNKVENSa2k4eUpFWXRRQklsUkJJdFFDSWxSQ0l0UURJ
bFIKREl0UUVJdEFGSWxSRUlsQkZJdE1KRUNEN0JDTHhJazRpVmdFalZRa2ZJbG9DRktKU0F6L0ZR
QUFBQURaUkNSbzJVUWtTSXNJMmNDTApVQVRleW9sTUpGalpSQ1J3aTBnSTJVUWtUSXRBRE5uQWFn
RGV5bERaeTFGcUFON0JpVlFrYk5pRUpJZ0FBQURaWENSWTJFd2tmTm1FCkpJUUFBQURleXQ3QjJJ
UWtqQUFBQU5sY0pGei9GUUFBQUFDTCtJUEVQSVgvZFJpTFJDUVVVUDhWQUFBQUFJUEVCRFBBWDE1
ZFc0UEUKWE1OWC94VUFBQUFBMlVRa0pOaGtKRFNMMk5sY0pCelpSQ1FjMlJ3a1VkbEVKQ1NOVENS
YzJHUWtOTmxjSkNEWlJDUWcyUndrVWY4VgpBQUFBQU5sRUpCeUxFSVBzRUl2TTJWd2tHSWtSaTFB
RWlWRUVpMUFJaVZFSWkxQU1pVkVNaTFBUWkwQVVpVkVRaVVFVWpVd2tjRkgvCkZRQUFBQUNMRUlQ
RUNJdk1pUkdMVUFTSlVRU0xVQWlKVVFpTFVBeUpVUXlMVUJDTFFCU0pVUkJUaVVFVS94VUFBQUFB
VmxQL0ZRQUEKQUFDTFRDUTRVZjhWQUFBQUFJUEVLSXZIWDE1ZFc0UEVYTU1LQUFBQTdBQUFBQVlB
SUFBQUFPc0FBQUFHQURBQUFBRHFBQUFBQmdCRApBQUFBNlFBQUFBWUFxQUFBQU9nQUFBQUdBTVlB
QUFEbkFBQUFCZ0RiQUFBQTVnQUFBQVlBNFFBQUFPTUFBQUFHQVBNQUFBRGdBQUFBCkJnQmlBUUFB
M3dBQUFBWUF3Z0VBQU40QUFBQUdBTllCQUFEcUFBQUFCZ0RxQVFBQTNRQUFBQVlBSGdJQUFOd0FB
QUFHQUZnQ0FBRGIKQUFBQUJnQ0dBZ0FBMmdBQUFBWUFqZ0lBQU5rQUFBQUdBSmtDQUFEcUFBQUFC
Z0FFQUFBQTlRQUFBR1FBQUFBQUFBQUFBQUFBQUtvQwpBQUJjQUFBQUFBQUFBQUFBQUFCYkV3QUFC
d0FJQUFRQUFBQUVBQUFBcGdJQUFGd0FBQUFBQUFBQUFBQUFBTElUQUFBREFBd0FBQUFBCkFBVUFB
QUNsQWdBQVhBQUFBQUFBQUFBQUFBQUFHeFFBQUFJQUVBQUFBQUFBOFFBQUFBa0NBQUJHQUE4UkFB
QUFBQUFBQUFBQUFBQUEKcWdJQUFBY0FBQUNpQWdBQVlCY0FBQUFBQUFBQUFBQmpjbVZoZEdWRFIw
eGhlV1Z5Um5KdmJWQkVSa1JoZEdGUWNtOTJhV1JsY2dBYwpBQklRWEFBQUFBQUFBQUFBQUFBQUVB
QUFBQUFBQUFBQUFBQUNBQUFWQUFZUkRSRUFBQkVBWkdGMFlWQnliM1pwWkdWeUFCUUFDeEhNCi8v
Ly9FUkFBQUhSeVlXNXpabTl5YlFBYUFBc1J2UC8vL3c0UUFBQmtaWE4wYVc1aGRHbHZibEpsWTNR
QUdBQUxFYUQvLy85QUFBQUEKY205MFlYUnBiMjVCYm1kc1pRQVZBQXNSclAvLy93NFFBQUJ6YjNW
eVkyVlNaV04wQUJNQUN4R2svLy8vWXhjQUFHUnZZM1Z0Wlc1MApBQTRBT1JFSUFBQUFBQUFBQUdR
WEFBQU9BRGtSSGdBQUFBQUFBQUJvRndBQURnQTVFUzRBQUFBQUFBQUFYaElBQUE0QU9SRlBBQUFB
CkFBQUFBRzRYQUFBT0FEa1JiQUFBQUFBQUFBQnVGd0FBRGdBNUVhWUFBQUFBQUFBQWFoY0FBQTRB
T1JIRUFBQUFBQUFBQUhBWEFBQU8KQURrUjhRQUFBQUFBQUFCeEZ3QUFEZ0E1RVdBQkFBQUFBQUFB
Y3hjQUFBNEFPUkhBQVFBQUFBQUFBSElTQUFBT0FEa1IxQUVBQUFBQQpBQUJlRWdBQURnQTVFZWdC
QUFBQUFBQUFkQklBQUE0QU9SRWNBZ0FBQUFBQUFIUVhBQUFPQURrUlZnSUFBQUFBQUFCMkZ3QUFE
Z0E1CkVZUUNBQUFBQUFBQXFSTUFBQTRBT1JHTUFnQUFBQUFBQUhnWEFBQU9BRGtSbHdJQUFBQUFB
QUJlRWdBQUFnQUdBQUFBQVBJQUFBRHcKQUFBQUFBQUFBQUFBQUFDcUFnQUFFQUlBQUJzQUFBRGtB
QUFBQUFBQUFFY0FBSUFIQUFBQVNBQUFnQk1BQUFCSkFBQ0FHUUFBQUVvQQpBSUFiQUFBQVRBQUFn
Q2tBQUFCTkFBQ0FMUUFBQUU0QUFJQTNBQUFBVHdBQWdEa0FBQUJvQUFDQVFRQUFBRklBQUlDM0FB
QUFVd0FBCmdOSUFBQUJVQUFDQUhBRUFBRlVBQUlCbUFRQUFWZ0FBZ0lzQkFBQlpBQUNBeXdFQUFG
b0FBSURQQVFBQVd3QUFnTjBCQUFCY0FBQ0EKM3dFQUFHZ0FBSURuQVFBQVhnQUFnTzRCQUFCZ0FB
Q0FJZ0lBQUdFQUFJQmNBZ0FBWWdBQWdJb0NBQUJqQUFDQWtnSUFBR1VBQUlDZwpBZ0FBWndBQWdL
SUNBQUJvQUFDQURBQUFBTmdBQUFBSEFKZ0FBQURZQUFBQUN3Q2NBQUFBMkFBQUFBb0FjUUVBQU5n
QUFBQUxBSFVCCkFBRFlBQUFBQ2dDQkFRQUEyQUFBQUFzQWhRRUFBTmdBQUFBS0FKRUJBQURZQUFB
QUN3Q1ZBUUFBMkFBQUFBb0FvUUVBQU5nQUFBQUwKQUtVQkFBRFlBQUFBQ2dDeEFRQUEyQUFBQUFz
QXRRRUFBTmdBQUFBS0FNRUJBQURZQUFBQUN3REZBUUFBMkFBQUFBb0EwUUVBQU5nQQpBQUFMQU5V
QkFBRFlBQUFBQ2dEaEFRQUEyQUFBQUFzQTVRRUFBTmdBQUFBS0FQRUJBQURZQUFBQUN3RDFBUUFB
MkFBQUFBb0FBUUlBCkFOZ0FBQUFMQUFVQ0FBRFlBQUFBQ2dBUkFnQUEyQUFBQUFzQUZRSUFBTmdB
QUFBS0FDRUNBQURZQUFBQUN3QWxBZ0FBMkFBQUFBb0EKTVFJQUFOZ0FBQUFMQURVQ0FBRFlBQUFB
Q2dCQkFnQUEyQUFBQUFzQVJRSUFBTmdBQUFBS0FGRUNBQURZQUFBQUN3QlZBZ0FBMkFBQQpBQW9B
WVFJQUFOZ0FBQUFMQUdVQ0FBRFlBQUFBQ2dCeEFnQUEyQUFBQUFzQWRRSUFBTmdBQUFBS0FJd0NB
QURZQUFBQUN3Q1FBZ0FBCjJBQUFBQW9BQUFBQUFBQ0Faa0FZTFVSVSt5RUpRSVBzRkZhTDhJWDJW
M1FpaTBRa0xJdE1KQ2hRVVZiL0ZRQUFBQUNKUkNRZ2c4UU0KaVZRa0dJMUVKQlRyQkkxRUpDaUxF
SXRBQkl0TUpEQ0pWQ1FNMlVRa0RObmhpVVFrRU5sY0pBaFIyVVFrRE5sY0pCaUxSQ1FZMlVRawpG
Tm5oMlZ3a0RObEVKQXpaWENRY2kxUWtIRkpRVnY4VkFBQUFBSXZ3VnY4VkFBQUFBRmFMK1A4VkFB
QUFBSWxVSkREWlJDUXcySFFrClJJUEVFSWxFSkJ6WlhDUVEyVVFrRU5sY0pBVFpSQ1FjMkhRa01O
bGNKQkRaUkNRUTJSd2tWLzhWQUFBQUFObEVKRERaNElQRUJObGMKSkFUWlJDUW8yZURaSENSWC94
VUFBQUFBZzhRTVg0dkdYb1BFRk1NWUFBQUE5UUFBQUFZQWRBQUFBTjRBQUFBR0FIMEFBQURkQUFB
QQpCZ0NHQUFBQTlBQUFBQVlBdndBQUFQTUFBQUFHQU53QUFBRHlBQUFBQmdBRUFBQUE5UUFBQUdR
QUFBQUFBQUFBQUFBQUFPc0FBQUFVCkFBQUFGQUFBQUFBQUFBQmJFd0FBQmdBQUFBUUFBQUFFQUFB
QTR3QUFBQlFBQUFBVUFBQUFBQUFBQUZzVEFBQUNBQVFBQUFBQUFBa0EKQUFEYkFBQUFGQUFBQUJR
QUFBQUFBQUFBV3hNQUFBQUFDQUFBQUFBQThRQUFBQlVCQUFCRUFBOFJBQUFBQUFBQUFBQUFBQUFB
NndBQQpBQVlBQUFEbkFBQUF4aGNBQUFBQUFBQUFBQUJqY21WaGRHVkRSMHhoZVdWeVYybDBhRU52
Ym5SbGVIUkpibEpsWTNRQUhBQVNFQlFBCkFBQUFBQUFBQUFBQUFBZ0FBQUFBQUFBQUFBQUFBZ0FB
RUFBR0VTa1FBQUFSQUdOdmJuUmxlSFFBRHdBTEVRUUFBQUFPRUFBQWNtVmoKZEFBU0FBc1JGQUFB
QUhBU0FBQnZjSFJwYjI1ekFCUUFDeEhzLy8vL0N4QUFBR3hoZVdWeVUybDZaUUFPQURrUkZnQUFB
QUFBQUFCNQpGd0FBRGdBNUVYSUFBQUFBQUFBQWNoSUFBQTRBT1JGN0FBQUFBQUFBQUhRU0FBQU9B
RGtSaEFBQUFBQUFBQUI2RndBQURnQTVFYjBBCkFBQUFBQUFBWUJJQUFBNEFPUkhhQUFBQUFBQUFB
R0FTQUFBQ0FBWUFBQUFBOGdBQUFHQUFBQUFBQUFBQUFBQUFBT3NBQUFBUUFnQUEKQ1FBQUFGUUFB
QUFBQUFBQWF3QUFnQVlBQUFCc0FBQ0FOZ0FBQUcwQUFJQjZBQUFBYmdBQWdJRUFBQUJ2QUFDQWpn
QUFBSEVBQUlERApBQUFBY2dBQWdPUUFBQUIwQUFDQTV3QUFBSFVBQUlBTUFBQUE4UUFBQUFjQW1B
QUFBUEVBQUFBTEFKd0FBQUR4QUFBQUNnQXRBUUFBCjhRQUFBQXNBTVFFQUFQRUFBQUFLQUQwQkFB
RHhBQUFBQ3dCQkFRQUE4UUFBQUFvQVRRRUFBUEVBQUFBTEFGRUJBQUR4QUFBQUNnQmQKQVFBQThR
QUFBQXNBWVFFQUFQRUFBQUFLQUcwQkFBRHhBQUFBQ3dCeEFRQUE4UUFBQUFvQWZRRUFBUEVBQUFB
TEFJRUJBQUR4QUFBQQpDZ0NZQVFBQThRQUFBQXNBbkFFQUFQRUFBQUFLQUlYMlYzUU9WdjhWQUFB
QUFJUEVCSXY0NndJei8vOFZBQUFBQUR2NGRTMkxUQ1FJCmkxUWtERmFEN0JDTHhJa0lpMHdrSkls
UUJJdFVKQ2lKU0FoVGlWQU0veFVBQUFBQWc4UVlYOFAvRlFBQUFBQTcrSFVyaTB3a0NJdFUKSkF4
V2crd1FpOFNKQ0l0TUpDU0pVQVNMVkNRb2lVZ0lVNGxRRFA4VkFBQUFBSVBFR0YvRENBQUFBUDhB
QUFBR0FCY0FBQUQrQUFBQQpCZ0JEQUFBQS9RQUFBQVlBVGdBQUFQd0FBQUFHQUhvQUFBRDdBQUFB
QmdBRUFBQUE5UUFBQUNRQUFBQUFBQUFBQUFBQUFJTUFBQUFBCkFBQUFFQUFBQUFBQUFBQmJFd0FB
QXdBRUFBUUFBQUR4QUFBQTVBQUFBRFlBRHhFQUFBQUFBQUFBQUFBQUFBQ0RBQUFBQXdBQUFJRUEK
QUFDQkZ3QUFBQUFBQUFBQUFHUnlZWGRKYldGblpVOXlUR0Y1WlhJQUhBQVNFQUFBQUFBQUFBQUFB
QUFBQUFRQUFBQUFBQUFBQUFBQQpBZ0FBRUFBR0VTa1FBQUFVQUdOdmJuUmxlSFFBRHdBTEVRUUFB
QUFPRUFBQWNtVmpkQUFWQUFZUmJoRUFBQmNBYVcxaFoyVlBja3hoCmVXVnlBQTRBT1JFR0FBQUFB
QUFBQU1zVEFBQU9BRGtSRlFBQUFBQUFBQUJBRkFBQURnQTVFVUVBQUFBQUFBQUFaQklBQUE0QU9S
Rk0KQUFBQUFBQUFBRUFVQUFBT0FEa1JlQUFBQUFBQUFBQjNFZ0FBQWdBR0FQSUFBQUJnQUFBQUFB
QUFBQUFBQUFDREFBQUFFQUlBQUFrQQpBQUJVQUFBQUFBQUFBSGdBQUlBQUFBQUFlUUFBZ0JVQUFB
QjdBQUNBSHdBQUFId0FBSUJIQUFBQWZnQUFnRW9BQUFCL0FBQ0FUQUFBCkFIMEFBSUJXQUFBQWZn
QUFnSUVBQUFCL0FBQ0FEQUFBQVBvQUFBQUhBRmdBQUFENkFBQUFDd0JjQUFBQStnQUFBQW9BekFB
QUFQb0EKQUFBTEFOQUFBQUQ2QUFBQUNnRGNBQUFBK2dBQUFBc0E0QUFBQVBvQUFBQUtBT3dBQUFE
NkFBQUFDd0R3QUFBQStnQUFBQW9BL0FBQQpBUG9BQUFBTEFBQUJBQUQ2QUFBQUNnQU1BUUFBK2dB
QUFBc0FFQUVBQVBvQUFBQUtBQ1FCQUFENkFBQUFDd0FvQVFBQStnQUFBQW9BCmcrd1EyVVFrSk5o
RUpCVFpSQ1FzMmNEZTZ0bkoyUndraXd3azJVUWtLSWtJMkVRa0dOamgyVndrQkl0VUpBU0pVQVRj
d05sRUpCelkKd2RsY0pBaUxUQ1FJaVVnSTJFUWtJTmxjSkF5TFZDUU1pVkFNZzhRUXd3UUFBQUQx
QUFBQUpBQUFBQUFBQUFBQUFBQUFXQUFBQUJBQQpBQUFjQUFBQUFBQUFBRnNUQUFBREFBQUFCQUFB
QVBFQUFBQ1ZBQUFBUEFBUEVRQUFBQUFBQUFBQUFBQUFBRmdBQUFBREFBQUFWQUFBCkFId1hBQUFB
QUFBQUFBQUFjbVZqZEVadmNsTm9ZV1J2ZDA5d1pYSmhkR2x2YmdBY0FCSVFFQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUEKQUFBQUFBQUtBQUFQQUFzUkJBQUFBQTRRQUFCeVpXTjBBQkVBQ3hFVUFBQUFD
eEFBQUc5bVpuTmxkQUFQQUFzUkhBQUFBRUFBQUFCaQpiSFZ5QUFJQUJnQUFBQUR5QUFBQU1BQUFB
QUFBQUFBQUFBQUFXQUFBQUJBQ0FBQURBQUFBSkFBQUFBQUFBQUNDQUFDQUF3QUFBSU1BCkFJQlVB
QUFBaEFBQWdBd0FBQUFFQVFBQUJ3QllBQUFBQkFFQUFBc0FYQUFBQUFRQkFBQUtBTmdBQUFBRUFR
QUFDd0RjQUFBQUJBRUEKQUFvQWcreEVVMVZXaTloWFUvOFZBQUFBQU5sRUpGellSQ1J3Zyt3TTJZ
UWtoQUFBQUl2RTJjQlQzdXJaeWRsY0pDaUxUQ1FvMlVRawpjSWtJMklRa2hBQUFBTmpoMlZ3a0xJ
dFVKQ3lKVUFUY3dObEVKSFRZd2RsY0pEQ0xUQ1F3aVVnSTJFUWtlTmxjSkRTTFZDUTBpVkFNCmpV
UWtLRkQvRlFBQUFBQ0xFSVBFQ0l2TWlSR0xVQVNKVVFTTFVBaUxRQXlKVVFpSlFReU5UQ1JFVWY4
VkFBQUFBSXNRZzhRRWk4eUoKRVl0UUJJbFJCSXRRQ0l0QURJbFJDSWxCREkxTUpGUlRVZjhWQUFB
QUFJdFFESXN3aTNnRWkyZ0lpMEFNaVZRa1NJUEVDSXZNaTlhSgpFWXZYaVZFRWk5V0pVUWlKUVF6
L0ZRQUFBQUNMVENSbzNWd2tKSXRVSkd5THhJa0lpMHdrY0lsUUJJdFVKSFNKU0FpSlVBei9GUUFB
CkFBRGNiQ1FraTB3a1FJdkVpVERaWENRZ2lYZ0VpV2dJVTRsSURQOFZBQUFBQU5sRUpDU0R4QXpa
WENRRTJlN1pIQ1JUL3hVQUFBQUEKMlVRa2VJdVVKSVFBQUFEWlhDUWcyVVFrZklQRUROaGtKQkJT
VVl0TUpCelpYQ1FnaTBRa0lObEVKSHpaSENSUVVWUC9GUUFBQUFDTApWQ1JzaTB3a2NJdDBKSHlE
eEFTTHhJa1FpMVFrY0lsSUJJdE1KSFNKVUFpSlNBem9BQUFBQUZQL0ZRQUFBQUNEeEJSZlhsMWJn
OFJFCnd3d0FBQUFWQVFBQUJnQjJBQUFBRkFFQUFBWUFuQUFBQUJNQkFBQUdBTU1BQUFBU0FRQUFC
Z0R4QUFBQUVRRUFBQVlBR0FFQUFCQUIKQUFBR0FEZ0JBQUFQQVFBQUJnQlBBUUFBOGdBQUFBWUFo
d0VBQUFzQkFBQUdBTEFCQUFENkFBQUFGQUMzQVFBQUNnRUFBQVlBQkFBQQpBUFVBQUFCa0FBQUFB
QUFBQUFBQUFBREdBUUFBUkFBQUFDUUFBQUFBQUFBQVd4TUFBQWdBQ0FBRUFBQUFCQUFBQU1JQkFB
QkVBQUFBCkpBQUFBQUFBQUFDWEZBQUFCQUFNQUFBQUFBQUZBQUFBd1FFQUFFUUFBQUFrQUFBQUFB
QUFBQUFWQUFBREFCQUFBQUFBQVBFQUFBQ2gKQVFBQU1BQVBFUUFBQUFBQUFBQUFBQUFBQU1ZQkFB
QUlBQUFBdmdFQUFKRVhBQUFBQUFBQUFBQUFaSEpoZDFOb1lXUnZkd0FjQUJJUQpSQUFBQUFBQUFB
QUFBQUFBRUFBQUFBQUFBQUFBQUFBQ0FBQVFBQVlSS1JBQUFCRUFZMjl1ZEdWNGRBQVVBQXNSQkFB
QUFBNFFBQUJwCmJXRm5aVkpsWTNRQUZ3QUxFUlFBQUFCdUVRQUFhVzFoWjJWUGNreGhlV1Z5QUJj
QUN4RVlBQUFBQ3hBQUFITm9ZV1J2ZDA5bVpuTmwKZEFBVkFBc1JJQUFBQUVBQUFBQnphR0ZrYjNk
Q2JIVnlBQllBQ3hFa0FBQUF0Uk1BQUhOb1lXUnZkME52Ykc5eUFCTUFDeEhNLy8vLwpEaEFBQUdO
c2FYQlNaV04wQUEwQUN4RzQvLy8vUUFBQUFIUjVBQTRBT1JFS0FBQUFBQUFBQUl3UUFBQU9BRGtS
ZEFBQUFBQUFBQUI5CkZ3QUFEZ0E1RVpvQUFBQUFBQUFBUEJNQUFBNEFPUkhCQUFBQUFBQUFBSDBY
QUFBT0FEa1I3d0FBQUFBQUFBQmlFZ0FBRGdBNUVSWUIKQUFBQUFBQUFZaElBQUE0QU9SRTJBUUFB
QUFBQUFIVVNBQUFPQURrUlRRRUFBQUFBQUFCZ0VnQUFEZ0E1RVlVQkFBQUFBQUFBZnhjQQpBQTRB
T1JHMUFRQUFBQUFBQUl3UUFBQUNBQVlBQUFBQThnQUFBSEFBQUFBQUFBQUFBQUFBQU1ZQkFBQVFB
Z0FBQ3dBQUFHUUFBQUFBCkFBQUFpQUFBZ0FrQUFBQ0pBQUNBRUFBQUFJc0FBSUFZQUFBQWpBQUFn
TklBQUFDTkFBQ0FJQUVBQUk4QUFJQThBUUFBa0FBQWdGTUIKQUFDUkFBQ0Fpd0VBQUpNQUFJQzBB
UUFBbEFBQWdMNEJBQUNWQUFDQURBQUFBQWtCQUFBSEFKZ0FBQUFKQVFBQUN3Q2NBQUFBQ1FFQQpB
QW9BZVFFQUFBa0JBQUFMQUgwQkFBQUpBUUFBQ2dDSkFRQUFDUUVBQUFzQWpRRUFBQWtCQUFBS0FK
a0JBQUFKQVFBQUN3Q2RBUUFBCkNRRUFBQW9BcVFFQUFBa0JBQUFMQUswQkFBQUpBUUFBQ2dDNUFR
QUFDUUVBQUFzQXZRRUFBQWtCQUFBS0FNa0JBQUFKQVFBQUN3RE4KQVFBQUNRRUFBQW9BMlFFQUFB
a0JBQUFMQU4wQkFBQUpBUUFBQ2dEcEFRQUFDUUVBQUFzQTdRRUFBQWtCQUFBS0FQa0JBQUFKQVFB
QQpDd0Q5QVFBQUNRRUFBQW9BQ1FJQUFBa0JBQUFMQUEwQ0FBQUpBUUFBQ2dBa0FnQUFDUUVBQUFz
QUtBSUFBQWtCQUFBS0FBQUFBQUM0CkFRQUFBSVFGQUFBQUFIVWNDUVVBQUFBQW9RQUFBQUNMQ0ZI
L0ZRQUFBQUNEeEFTakFBQUFBSXRVSkF5TFJDUUlpMHdrQkZLTEZRQUEKQUFCUVVWTC9GUUFBQUFD
RHhCRERCd0FBQUNNQkFBQUdBQThBQUFBakFRQUFCZ0FVQUFBQUlBRUFBQVlBSFFBQUFCOEJBQUFH
QUNVQQpBQUFlQVFBQUJnQTRBQUFBSGdFQUFBWUFRUUFBQUJzQkFBQUdBQVFBQUFEMUFBQUFKQUFB
QUFBQUFBQUFBQUFBU1FBQUFBQUFBQUFNCkFBQUFBQUFBQUZzVEFBQUFBQUFBQkFBQUFQRUFBQURi
QUFBQVB3QVBFUUFBQUFBQUFBQUFBQUFBQUVrQUFBQUFBQUFBU0FBQUFMb1gKQUFBQUFBQUFBQUFB
WTNKbFlYUmxSMlZ1WlhKcFkwZHlZWGxIY21Ga2FXVnVkQUFjQUJJUUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQQpBQUFBQUFBS0FBQVZBQXNSQkFBQUFGZ1NBQUJqYjIxd2IyNWxiblJ6QUJRQUN4RUlB
QUFBV0JJQUFHeHZZMkYwYVc5dWN3QVFBQXNSCkRBQUFBSFVBQUFCamIzVnVkQUFYQUF3UkVCRUFB
QUFBQUFBQUFHTnZiRzl5VTNCaFkyVUFEZ0E1RVJzQUFBQUFBQUFBZ2hjQUFBNEEKT1JFL0FBQUFB
QUFBQUlZWEFBQUNBQVlBQVBJQUFBQTRBQUFBQUFBQUFBQUFBQUJKQUFBQUVBSUFBQVFBQUFBc0FB
QUFBQUFBQUpnQQpBSUFBQUFBQW1RQUFnQ2tBQUFDYUFBQ0FTQUFBQUowQUFJQU1BQUFBR2dFQUFB
Y0FXQUFBQUJvQkFBQUxBRndBQUFBYUFRQUFDZ0RlCkFBQUFIZ0VBQUFzQTRnQUFBQjRCQUFBS0FQ
TUFBQUFhQVFBQUN3RDNBQUFBR2dFQUFBb0FBd0VBQUJvQkFBQUxBQWNCQUFBYUFRQUEKQ2dBY0FR
QUFHZ0VBQUFzQUlBRUFBQm9CQUFBS0FJUHNRTmxFSkZoVDJFUWtTRlhaUkNSb2kyd2tVTm5BVnQ3
cWkzUWtXTm5KVjR0OApKRlRaWENRUWkwd2tFTmxFSkd5TDJOaEVKRmlEN0JDTHhJa0kyT0dEN0JE
WlhDUTBpMVFrTklsUUJOekEyVVFrZk5qQjJWd2tPSXRNCkpEaUpTQWpZaENTQUFBQUFpNHdrZ0FB
QUFObGNKRHlMVkNROGlWQU1pOFNKT0lsb0JJbHdDSWxJRFA4VkFBQUFBSVBFSUlUQUQ0U2cKQVFB
QWkxUWtFSXRNSkJTRDdCQ0x4SWtRaTFRa0tJbElCSXRNSkN5SlVBaUxWQ1J3aVVnTWcrd1FpOFNK
T0lsb0JJbHdDSWxRREkxRQpKREJRL3hVQUFBQUFpeENEeEJTTHpJa1JpMUFFaVZFRWkxQUlpMEFN
aVZFSWlVRU1qVXdrTUZOUi94VUFBQUFBaXhDRHhBaUx6SWtSCmkxQUVpVkVFaTFBSWkwQU1pVkVJ
aVVFTWpVd2tRRkgvRlFBQUFBQ0xFSVBFQkl2TWlSR0xVQVNKVVFTTFVBaUxRQXlKVVFpSlFReU4K
VENSUVUxSC9GUUFBQUFDTEVJUEVHR29BZyt3UWk4eUpFWXRRQklsUkJJdFFDSXRBRElsUkNGT0pR
UXovRlFBQUFBQnFFVlAvRlFBQQpBQUNEeEJDTHhJazRpMHdrY0lsb0JJbHdDSXQwSkhTSlNBem9B
QUFBQUlzMUFBQUFBR29TVS8vV2k1UWtqQUFBQUZKVC94VUFBQUFBCml3MEFBQUFBaXhHRHhCQ0x4
SWtRaTFFRWlWQUVpMUVJaTBrTWlWQUlVNGxJRFA4VkFBQUFBR29YVS8vV2l4VUFBQUFBaXdKUS94
VUEKQUFBQTJZUWtrQUFBQUl1VUpJZ0FBQUNEeENCUWkwUWthRkdMVENSMDJSd2tVWXRNSkdoU2kx
UWtjRkNEN0JDTHhJazRpV2dFaVVnSQppVkFNaThQb0FBQUFBRlAvRlFBQUFBQ0R4Q2hmWGwxYmc4
UkF3NGtBQUFBeUFRQUFCZ0RUQUFBQU1RRUFBQVlBK2dBQUFCUUJBQUFHCkFDQUJBQUFUQVFBQUJn
QkhBUUFBRWdFQUFBWUFiZ0VBQURBQkFBQUdBSGNCQUFBdkFRQUFCZ0NVQVFBQStnQUFBQlFBbWdF
QUFDOEIKQUFBR0FLNEJBQUF1QVFBQUJnQzBBUUFBTFFFQUFBWUExZ0VBQUN3QkFBQUdBT0VCQUFB
ckFRQUFCZ0RxQVFBQUtnRUFBQVlBS2dJQQpBQWtCQUFBVUFERUNBQUFwQVFBQUJnQUVBQUFBOVFB
QUFHUUFBQUFBQUFBQUFBQUFBRUFDQUFCQUFBQUFKQUFBQUFBQUFBQmJFd0FBCk13QUlBQVFBQUFB
SUFBQUFPQUlBQUVBQUFBQWtBQUFBQUFBQUFIc1ZBQUFyQUF3QUFBQUFBQTBBQUFBekFnQUFRQUFB
QUNRQUFBQUEKQUFBQTVCVUFBQ1lBRUFBQUFBQUE4UUFBQUxRQkFBQTFBQThSQUFBQUFBQUFBQUFB
QUFBQVFBSUFBRE1BQUFBNEFnQUFrUmNBQUFBQQpBQUFBQUFCa2NtRjNTVzV1WlhKVGFHRmtiM2NB
SEFBU0VFQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUFBQUFBQWdBQUVBQUdFU2tRCkFBQVJBR052
Ym5SbGVIUUFGZ0FMRVFRQUFBQU9FQUFBWTI5dWRHVnVkRkpsWTNRQUZ3QUxFUlFBQUFCdUVRQUFh
VzFoWjJWUGNreGgKZVdWeUFCY0FDeEVZQUFBQUN4QUFBSE5vWVdSdmQwOW1abk5sZEFBVkFBc1JJ
QUFBQUVBQUFBQnphR0ZrYjNkQ2JIVnlBQllBQ3hFawpBQUFBdFJNQUFITm9ZV1J2ZDBOdmJHOXlB
QTRBT1JHSEFBQUFBQUFBQUljWEFBQU9BRGtSMFFBQUFBQUFBQUJxRndBQURnQTVFZmdBCkFBQUFB
QUFBZlJjQUFBNEFPUkVlQVFBQUFBQUFBRHdUQUFBT0FEa1JSUUVBQUFBQUFBQjlGd0FBRGdBNUVX
d0JBQUFBQUFBQWlSY0EKQUE0QU9SRjFBUUFBQUFBQUFJMFhBQUFPQURrUm9RRUFBQUFBQUFDTkZ3
QUFEZ0E1RWF3QkFBQUFBQUFBanhjQUFBNEFPUkhVQVFBQQpBQUFBQUhVU0FBQU9BRGtSM1FFQUFB
QUFBQUNORndBQURnQTVFZWdCQUFBQUFBQUFraGNBQUE0QU9SRXZBZ0FBQUFBQUFJd1FBQUFDCkFB
WUE4Z0FBQUlnQUFBQUFBQUFBQUFBQUFFQUNBQUFRQWdBQURnQUFBSHdBQUFBQUFBQUFvUUFBZ0FN
QUFBQ2lBQUNBRVFBQUFLUUEKQUlDWUFBQUFwUUFBZ0VzQkFBQ21BQUNBY2dFQUFLZ0FBSUI3QVFB
QXFRQUFnSmdCQUFDcUFBQ0Fvd0VBQUtzQUFJQ3lBUUFBckFBQQpnTm9CQUFDdEFBQ0Ezd0VBQUs0
QUFJQXVBZ0FBc0FBQWdEZ0NBQUN5QUFDQURBQUFBQ2dCQUFBSEFKZ0FBQUFvQVFBQUN3Q2NBQUFB
CktBRUFBQW9BWEFFQUFDZ0JBQUFMQUdBQkFBQW9BUUFBQ2dCc0FRQUFLQUVBQUFzQWNBRUFBQ2dC
QUFBS0FId0JBQUFvQVFBQUN3Q0EKQVFBQUtBRUFBQW9BakFFQUFDZ0JBQUFMQUpBQkFBQW9BUUFB
Q2dDY0FRQUFLQUVBQUFzQW9BRUFBQ2dCQUFBS0FLd0JBQUFvQVFBQQpDd0N3QVFBQUtBRUFBQW9B
dkFFQUFDZ0JBQUFMQU1BQkFBQW9BUUFBQ2dETUFRQUFLQUVBQUFzQTBBRUFBQ2dCQUFBS0FOd0JB
QUFvCkFRQUFDd0RnQVFBQUtBRUFBQW9BN0FFQUFDZ0JBQUFMQVBBQkFBQW9BUUFBQ2dEOEFRQUFL
QUVBQUFzQUFBSUFBQ2dCQUFBS0FBd0MKQUFBb0FRQUFDd0FRQWdBQUtBRUFBQW9BSEFJQUFDZ0JB
QUFMQUNBQ0FBQW9BUUFBQ2dBMEFnQUFLQUVBQUFzQU9BSUFBQ2dCQUFBSwpBTGdCQUFBQWcrd0lo
QVVBQUFBQWRTYlpCUUFBQUFBSkJRQUFBQUNEN0FqWlhDUUUyZTdaSENUL0ZRQUFBQUNEeEFpakFB
QUFBTm51Cm9RQUFBQUJRMlZ3a0JOa0ZBQUFBQUl0VUpBU0xSQ1FrMlZ3a0NObm9VWXRNSkF6WkhD
UlJpMHdrSEZLTFZDUWtVSVBzRUl2RWlRaUwKVENROGlWQUVpMVFrUUlsSUNJbFFESXRFSkREb0FB
QUFBSVBFTE1NS0FBQUFSQUVBQUFZQUVnQUFBRUVCQUFBR0FCZ0FBQUJFQVFBQQpCZ0FxQUFBQVBn
RUFBQVlBTWdBQUFEMEJBQUFHQURrQUFBQTlBUUFBQmdCRUFBQUFPZ0VBQUFZQWhnQUFBQWtCQUFB
VUFBUUFBQUQxCkFBQUFKQUFBQUFBQUFBQUFBQUFBamdBQUFBZ0FBQUFZQUFBQUFBQUFBRnNUQUFB
SUFBQUFCQUFBQVBFQUFBQytBQUFBTlFBUEVRQUEKQUFBQUFBQUFBQUFBQUk0QUFBQUlBQUFBaWdB
QUFJRVhBQUFBQUFBQUFBQUFaSEpoZDA5MWRHVnlVMmhoWkc5M0FCd0FFaEFJQUFBQQpBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUlBQUJJQUN4RUVBQUFBS1JBQUFHTnZiblJsZUhRQUR3QUxFUWdB
QUFBT0VBQUFjbVZqCmRBQVFBQXNSR0FBQUFHNFJBQUJwYldGblpRQWNBQXdSdFJNQUFBQUFBQUFB
QUdSeWIzQlRhR0ZrYjNkRGIyeHZjZ0FPQURrUktBQUEKQUFBQUFBQ1RGd0FBQWdBR0FBQUE4Z0FB
QURnQUFBQUFBQUFBQUFBQUFJNEFBQUFRQWdBQUJBQUFBQ3dBQUFBQUFBQUF0UUFBZ0FBQQpBQUMy
QUFDQU5nQUFBTGNBQUlDS0FBQUF1QUFBZ0F3QUFBQTNBUUFBQndCWUFBQUFOd0VBQUFzQVhBQUFB
RGNCQUFBS0FNd0FBQUE5CkFRQUFDd0RRQUFBQVBRRUFBQW9BNWdBQUFEY0JBQUFMQU9vQUFBQTNB
UUFBQ2dBQUFRQUFOd0VBQUFzQUJBRUFBRGNCQUFBS0FBQUEKZ0wvTnpFdy9nK3dzTThrNURRQUFB
QUJUaTloMVlka0ZBQUFBQUtFQUFBQUEyVndrRUlsTUpBVFpCUUFBQUFDSlRDUUkyVndrRklsTQpK
QXpaQlFBQUFBRFpYQ1FZaXhDSlZDUWNpMUFFaVZRa0lJdFFDSWxVSkNTTFFBeUpUQ1FzalV3a0JG
R0pSQ1FzL3hVQUFBQUFnOFFFCm93QUFBQUJUL3hVQUFBQUFpeFVBQUFBQVVsUC9GUUFBQUFDTFZD
UkVVWXRNSkVTTHhJa0lpMHdrVElsUUJJdFVKRkNKU0FpSlVBem8KQUFBQUFGUC9GUUFBQUFDRHhC
UmJnOFFzd3djQUFBQlNBUUFBQmdBU0FBQUFRUUVBQUFZQUZ3QUFBRThCQUFBR0FDVUFBQUMwQUFB
QQpCZ0EzQUFBQVRnRUFBQVlBWlFBQUFFc0JBQUFHQUcwQUFBQlNBUUFBQmdCMEFBQUFGUUVBQUFZ
QWVnQUFBRklCQUFBR0FJSUFBQUJLCkFRQUFCZ0NsQUFBQStnQUFBQlFBckFBQUFBb0JBQUFHQUFR
QUFBRDFBQUFBUkFBQUFBQUFBQUFBQUFBQXVBQUFBQ3dBQUFBUUFBQUEKQUFBQUFGc1RBQUFPQUFB
QUJBQUFBQXdBQUFDc0FBQUFMQUFBQUJBQUFBQUFBQUFBWHhZQUFBSUFCQUFBQUFBQThRQUFBQUFC
QUFBegpBQThSQUFBQUFBQUFBQUFBQUFBQXVBQUFBQTRBQUFDekFBQUFnUmNBQUFBQUFBQUFBQUJr
Y21GM1JtOWpkWE5TYVc1bkFCd0FFaEFzCkFBQUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFBQUFBQUlB
QUJBQUJoRXBFQUFBRVFCamIyNTBaWGgwQUE4QUN4RUVBQUFBRGhBQUFISmwKWTNRQUZRQUdFVzRS
QUFBWEFHbHRZV2RsVDNKTVlYbGxjZ0FTQUF3Um5CY0FBQUFBQUFBQUFITjBlV3hsQUJrQUN4SFEv
Ly8vbWhjQQpBR1p2WTNWelVtbHVaMU4wZVd4bEFBNEFPUkZqQUFBQUFBQUFBS0FYQUFBT0FEa1Jj
Z0FBQUFBQUFBQ01FQUFBRGdBNUVZQUFBQUFBCkFBQUFvaGNBQUE0QU9SR3FBQUFBQUFBQUFJd1FB
QUFDQUFZQThnQUFBSEFBQUFBQUFBQUFBQUFBQUxnQUFBQVFBZ0FBQ3dBQUFHUUEKQUFBQUFBQUF1
d0FBZ0FNQUFBQzlBQUNBRUFBQUFNTUFBSUFXQUFBQXhnQUFnRllBQUFESEFBQ0FXZ0FBQU1rQUFJ
QnhBQUFBekFBQQpnSGdBQUFETkFBQ0FoZ0FBQU00QUFJQ3BBQUFBendBQWdMTUFBQURRQUFDQURB
QUFBRWtCQUFBSEFIZ0FBQUJKQVFBQUN3QjhBQUFBClNRRUFBQW9BN1FBQUFGSUJBQUFMQVBFQUFB
QlNBUUFBQ2dBWUFRQUFTUUVBQUFzQUhBRUFBRWtCQUFBS0FDZ0JBQUJKQVFBQUN3QXMKQVFBQVNR
RUFBQW9BT0FFQUFFa0JBQUFMQUR3QkFBQkpBUUFBQ2dCSUFRQUFTUUVBQUFzQVRBRUFBRWtCQUFB
S0FHQUJBQUJKQVFBQQpDd0JrQVFBQVNRRUFBQW9BQUFBQVA0dEVKQVNEN0NSVFZWWlhVUDhWQUFB
QUFJdEVKRkNMZENSTWkzd2tTSXRjSkVTTGJDUkFnOFFFCmcrZ0FENFNpQUFBQWcrZ0NkRnVENkFF
UGhkd0FBQUNEN0JDTHhJa29pVmdFaVhnSWlYQU0veFVBQUFBQTJWd2tETm51aTB3a1NJUEUKQ05r
Y0pGSC9GUUFBQUFEWkJRQUFBQUNMVkNSRTJWd2tDTm5vZzhRRTJSd2tVdjhWQUFBQUFJUEVET21L
QUFBQTJlNkQ3QlNMeE5sYwpKQkNKS0lsWUJJbDRDSWx3RFA4VkFBQUFBTmxjSkF5TFJDUk1nOFFN
VVA4VkFBQUFBTmtGQUFBQUFJdE1KRVRaWENRSWc4UUlVZXMvCmcrd1FpOFNKS0lsWUJJbDRDSWx3
RFA4VkFBQUFBTmxjSkF6WjdvdFVKRWlEeEFqWkhDUlMveFVBQUFBQTJRVUFBQUFBaTBRa1JObGMK
SkFpRHhBaFEveFVBQUFBQWc4UUlnK3dRaThTSktJbFlCSWw0Q0lsd0RQOFZBQUFBQU5sY0pDQ0x4
SWtvaVZnRWlYZ0lpWEFNL3hVQQpBQUFBMkV3a1lJdkVpU2lKV0FUZFhDUTBpWGdJaVhBTS94VUFB
QUFBM0VRa05JdkVpU2pjSlFBQUFBQ0pXQVNKZUFpSmNBelpYQ1JjCi94VUFBQUFBMkV3a1lJdkVp
U2lKV0FTSmVBamRYQ1EwaVhBTS94VUFBQUFBM0VRa05JdkVpU2pjQlFBQUFBQ0pXQVNKZUFpSmNB
eloKWENSZy94VUFBQUFBaTB3a1NObGNKQ3hxQUZIL0ZRQUFBQUNMVkNSUWc4UUlpOFNKS0lsWUJJ
bDRDRktKY0F6L0ZRQUFBQUNMUkNSbwpnOFFVaGNBUGhCWUJBQUJRL3hVQUFBQUFnOFFFaVVRa0ZQ
OFZBQUFBQURsRUpCUVBoWUlBQUFDTFJDUlVpMHdrT0ZCUi94VUFBQUFBCmcrd0lpOFNKS0lsWUJJ
bDRDSWx3RFA4VkFBQUFBTmxjSkRUWlJDUWdpOFNKS05sY0pEaUpXQVNKZUFpSmNBei9GUUFBQUFE
WlhDUTgKaTFRa05ObEVKRnlMVENRNDJHUWtJSXZFaVJDTFZDUTgyVndrUUlsSUJJdE1KRUNKVUFp
TFZDUklVb2xJRFA4VkFBQUFBSVBFRk90MgoveFVBQUFBQU9VUWtGSFZxZyt3UWk4U0pLSWxZQkls
NENJbHdEUDhWQUFBQUFObGNKQ1RaUkNSY2k4U0pLTmxjSkNpSldBU0plQWlKCmNBei9GUUFBQUFE
WlhDUTBpMFFrS05sRUpDQ0xUQ1FrMlZ3a09JdFVKRGhxQUZDTFJDUThVWXRNSkhCU2kxUWtXRkJS
VXY4VkFBQUEKQUlQRUxJdEVKRmlGd0hSOFVJdEVKRHhRL3hVQUFBQUFnK3dJaThTSktJbFlCSWw0
Q0lsd0RQOFZBQUFBQU5sY0pEVFpSQ1JjaThTSgpLTmxjSkRpSldBU0plQWlKY0F6L0ZRQUFBQURa
WENRODJVUWtZSXRNSkRUWVpDUmNpMVFrT0l2RWlRaUxUQ1E4MlZ3a1FJbFFCSXRVCkpFQ0pTQWlK
VUF5TFJDUklVUDhWQUFBQUFJUEVGSXRFSkZ5RndBK0VGZ0VBQUZEL0ZRQUFBQUNEeEFTSlJDUlUv
eFVBQUFBQU9VUWsKVkErRmdnQUFBSXRNSkZ5TFZDUTRVVkwvRlFBQUFBQ0Q3QWlMeElrb2lWZ0Vp
WGdJaVhBTS94VUFBQUFBMlZ3a05ObEVKR0NMeElrbwoyVndrT0lsWUJJbDRDSWx3RFA4VkFBQUFB
TmxjSkR6WlJDUXNpMHdrTk5oa0pHQ0xWQ1E0aThTSkNJdE1KRHpaWENSQWlWQUVpMVFrClFJbElD
SWxRREl0RUpFaFEveFVBQUFBQWc4UVU2M2IvRlFBQUFBQTVSQ1JVZFdxRDdCQ0x4SWtvaVZnRWlY
Z0lpWEFNL3hVQUFBQUEKMlZ3a05ObEVKQ3lMeElrbzJWd2tPSWxZQklsNENJbHdEUDhWQUFBQUFO
bGNKQ3lMVENRNDJVUWtZSXRVSkRUWlhDUXdpMFFrTUdvQQpVWXRNSkRSU2kxUWtlRkNMUkNSWVVW
SlEveFVBQUFBQWc4UXNpMHdrT0ZIL0ZRQUFBQUNEeEFSZlhsMWJnOFFrd3c0QUFBQVZBUUFBCkJn
QlNBQUFBYVFFQUFBWUFhUUFBQVBJQUFBQUdBRzhBQUFBNkFRQUFCZ0NHQUFBQTh3QUFBQVlBcWdB
QUFHZ0JBQUFHQUx3QUFBRHkKQUFBQUJnRENBQUFBWndFQUFBWUE1Z0FBQUdrQkFBQUdBUDBBQUFE
eUFBQUFCZ0FEQVFBQVpBRUFBQVlBRlFFQUFHRUJBQUFHQUM0QgpBQUFRQVFBQUJnQkZBUUFBYVFF
QUFBWUFZQUVBQUJBQkFBQUdBRzRCQUFCZ0FRQUFCZ0NCQVFBQWFRRUFBQVlBbkFFQUFCQUJBQUFH
CkFLb0JBQUJnQVFBQUJnQzlBUUFBRVFFQUFBWUF6Z0VBQUYwQkFBQUdBT2tCQUFBUEFRQUFCZ0Qv
QVFBQS93QUFBQVlBREFJQUFGd0IKQUFBR0FDWUNBQUF1QVFBQUJnQThBZ0FBV3dFQUFBWUFXd0lB
QUdnQkFBQUdBSk1DQUFBc0FRQUFCZ0NlQWdBQVdnRUFBQVlBdWdJQQpBRmtCQUFBR0FOa0NBQUJa
QVFBQUJnQUxBd0FBV0FFQUFBWUFJZ01BQUM0QkFBQUdBRGdEQUFCYkFRQUFCZ0JYQXdBQWFBRUFB
QVlBCmp3TUFBQ3dCQUFBR0FLVURBQUQvQUFBQUJnQ3lBd0FBWEFFQUFBWUF6QU1BQUM0QkFBQUdB
T0lEQUFCYkFRQUFCZ0FCQkFBQWFBRUEKQUFZQU9RUUFBQ3dCQUFBR0FFUUVBQUJhQVFBQUJnQmdC
QUFBV1FFQUFBWUFmd1FBQUZrQkFBQUdBTEVFQUFCWUFRQUFCZ0MvQkFBQQpDZ0VBQUFZQUJBQUFB
UFVBQUFCa0FBQUFBQUFBQUFBQUFBRE9CQUFBSkFBQUFDZ0FBQUFBQUFBQVd4TUFBQXNBQ0FBRUFB
QUFDQUFBCkFNWUVBQUFrQUFBQUtBQUFBQUFBQUFESUZnQUFBd0FNQUFBQUFBQUpBQUFBeFFRQUFD
UUFBQUFvQUFBQUFBQUFBREVYQUFBQ0FCQUEKQUFBQUFQRUFBQUFJQkFBQVNRQVBFUUFBQUFBQUFB
QUFBQUFBQU00RUFBQUxBQUFBeGdRQUFMd1hBQUFBQUFBQUFBQUFaSEpoZHpOUQpZWEowUW1GdWJt
VnlTVzVTWldOMFVtVnNZWFJwZG1WVWIwVmtaMlVBSEFBU0VDUUFBQUFBQUFBQUFBQUFBQkFBQUFB
QUFBQUFBQUFBCkFnQUFFZ0FMRVFRQUFBQXBFQUFBWTI5dWRHVjRkQUFQQUFzUkNBQUFBQTRRQUFC
eVpXTjBBQThBQ3hFWUFBQUFweGNBQUdWa1oyVUEKRXdBTEVSd0FBQUJBQUFBQVpuSmhZM1JwYjI0
QUVRQUxFU0FBQUFCdUVRQUFZbTkwZEc5dEFCRUFDeEVrQUFBQXRSTUFBRzFwWkdScwpaUUFPQUFz
UktBQUFBRzRSQUFCMGIzQUFGQUFMRVJ3QUFBQkFBQUFBZFhCd1pYSk5hVzVaQUJRQUN4RVlBQUFB
UUFBQUFHeHZkMlZ5ClRXRjRXUUFVQUFzUjVQLy8vMEFBQUFCMWNIQmxjazFoZUZrQUZBQUxFZGov
Ly85QUFBQUFiRzkzWlhKTmFXNVpBQThBQ3hIYy8vLy8KSWdBQUFIUjVjR1VBRHdBTEVTQUFBQUFp
QUFBQWRIbHdaUUFPQURrUkRBQUFBQUFBQUFDTUVBQUFEZ0E1RVZBQUFBQUFBQUFBWWhJQQpBQTRB
T1JGbkFBQUFBQUFBQUdBU0FBQU9BRGtSaEFBQUFBQUFBQUJnRWdBQURnQTVFYWdBQUFBQUFBQUFZ
aElBQUE0QU9SRzZBQUFBCkFBQUFBR0FTQUFBT0FEa1I1QUFBQUFBQUFBQmlFZ0FBRGdBNUVmc0FB
QUFBQUFBQVlCSUFBQTRBT1JFVEFRQUFBQUFBQUlrVEFBQU8KQURrUkxBRUFBQUFBQUFCaUVnQUFE
Z0E1RVVNQkFBQUFBQUFBWWhJQUFBNEFPUkZlQVFBQUFBQUFBR0lTQUFBT0FEa1Jmd0VBQUFBQQpB
QUJpRWdBQURnQTVFWm9CQUFBQUFBQUFZaElBQUE0QU9SRzdBUUFBQUFBQUFHSVNBQUFPQURrUnpB
RUFBQUFBQUFDQUV3QUFEZ0E1CkVlY0JBQUFBQUFBQWRSSUFBQTRBT1JIOUFRQUFBQUFBQU1zVEFB
QU9BRGtSQ2dJQUFBQUFBQUJBRkFBQURnQTVFU1FDQUFBQUFBQUEKanhjQUFBNEFPUkU2QWdBQUFB
QUFBR0lTQUFBT0FEa1JXUUlBQUFBQUFBQmlFZ0FBRGdBNUVaRUNBQUFBQUFBQWRSSUFBQTRBT1JH
YwpBZ0FBQUFBQUFFQVVBQUFPQURrUnVBSUFBQUFBQUFCaUVnQUFEZ0E1RWRjQ0FBQUFBQUFBWWhJ
QUFBNEFPUkVKQXdBQUFBQUFBS1FYCkFBQU9BRGtSSUFNQUFBQUFBQUNQRndBQURnQTVFVFlEQUFB
QUFBQUFZaElBQUE0QU9SRlZBd0FBQUFBQUFHSVNBQUFPQURrUmpRTUEKQUFBQUFBQjFFZ0FBRGdB
NUVhTURBQUFBQUFBQXl4TUFBQTRBT1JHd0F3QUFBQUFBQUVBVUFBQU9BRGtSeWdNQUFBQUFBQUNQ
RndBQQpEZ0E1RWVBREFBQUFBQUFBWWhJQUFBNEFPUkgvQXdBQUFBQUFBR0lTQUFBT0FEa1JOd1FB
QUFBQUFBQjFFZ0FBRGdBNUVVSUVBQUFBCkFBQUFRQlFBQUE0QU9SRmVCQUFBQUFBQUFHSVNBQUFP
QURrUmZRUUFBQUFBQUFCaUVnQUFEZ0E1RWE4RUFBQUFBQUFBcEJjQUFBNEEKT1JHOUJBQUFBQUFB
QUl3UUFBQUNBQVlBOGdBQUFEZ0JBQUFBQUFBQUFBQUFBTTRFQUFBUUFnQUFKQUFBQUN3QkFBQUFB
QUFBMUFBQQpnQUFBQUFEVkFBQ0FFZ0FBQU5jQUFJQkFBQUFBMmdBQWdHMEFBQURiQUFDQWpRQUFB
TndBQUlDU0FBQUE1QUFBZ01BQUFBRGxBQUNBCjBnQUFBT1lBQUlEVUFBQUEzd0FBZ0FFQkFBRGdB
QUNBSEFFQUFPMEFBSUEyQVFBQTdnQUFnR2dCQUFEdkFBQ0FwQUVBQVBBQUFJREIKQVFBQThnQUFn
TklCQUFEekFBQ0E3UUVBQVBVQUFJRDhBUUFBOWdBQWdBb0NBQUQ0QUFDQUdnSUFBUGtBQUlBcUFn
QUErZ0FBZ0p3QwpBQUQ4QUFDQXFBSUFBUDBBQUlBU0F3QUEvd0FBZ0JvREFBQUFBUUNBSmdNQUFB
RUJBSUNXQXdBQUF3RUFnS0lEQUFBRUFRQ0FzQU1BCkFBWUJBSURBQXdBQUJ3RUFnTkFEQUFBSUFR
Q0FRZ1FBQUFrQkFJQk9CQUFBQ2dFQWdMZ0VBQUFOQVFDQXhnUUFBQTRCQUlBTUFBQUEKVndFQUFB
Y0FtQUFBQUZjQkFBQUxBSndBQUFCWEFRQUFDZ0RnQVFBQVZ3RUFBQXNBNUFFQUFGY0JBQUFLQVBB
QkFBQlhBUUFBQ3dEMApBUUFBVndFQUFBb0FBQUlBQUZjQkFBQUxBQVFDQUFCWEFRQUFDZ0FRQWdB
QVZ3RUFBQXNBRkFJQUFGY0JBQUFLQUNBQ0FBQlhBUUFBCkN3QWtBZ0FBVndFQUFBb0FNQUlBQUZj
QkFBQUxBRFFDQUFCWEFRQUFDZ0JBQWdBQVZ3RUFBQXNBUkFJQUFGY0JBQUFLQUZBQ0FBQlgKQVFB
QUN3QlVBZ0FBVndFQUFBb0FZQUlBQUZjQkFBQUxBR1FDQUFCWEFRQUFDZ0J3QWdBQVZ3RUFBQXNB
ZEFJQUFGY0JBQUFLQUlBQwpBQUJYQVFBQUN3Q0VBZ0FBVndFQUFBb0FrQUlBQUZjQkFBQUxBSlFD
QUFCWEFRQUFDZ0NnQWdBQVZ3RUFBQXNBcEFJQUFGY0JBQUFLCkFMQUNBQUJYQVFBQUN3QzBBZ0FB
VndFQUFBb0F3QUlBQUZjQkFBQUxBTVFDQUFCWEFRQUFDZ0RRQWdBQVZ3RUFBQXNBMUFJQUFGY0IK
QUFBS0FPQUNBQUJYQVFBQUN3RGtBZ0FBVndFQUFBb0E4QUlBQUZjQkFBQUxBUFFDQUFCWEFRQUFD
Z0FBQXdBQVZ3RUFBQXNBQkFNQQpBRmNCQUFBS0FCQURBQUJYQVFBQUN3QVVBd0FBVndFQUFBb0FJ
QU1BQUZjQkFBQUxBQ1FEQUFCWEFRQUFDZ0F3QXdBQVZ3RUFBQXNBCk5BTUFBRmNCQUFBS0FFQURB
QUJYQVFBQUN3QkVBd0FBVndFQUFBb0FVQU1BQUZjQkFBQUxBRlFEQUFCWEFRQUFDZ0JnQXdBQVZ3
RUEKQUFzQVpBTUFBRmNCQUFBS0FIQURBQUJYQVFBQUN3QjBBd0FBVndFQUFBb0FnQU1BQUZjQkFB
QUxBSVFEQUFCWEFRQUFDZ0NRQXdBQQpWd0VBQUFzQWxBTUFBRmNCQUFBS0FLQURBQUJYQVFBQUN3
Q2tBd0FBVndFQUFBb0FzQU1BQUZjQkFBQUxBTFFEQUFCWEFRQUFDZ0RBCkF3QUFWd0VBQUFzQXhB
TUFBRmNCQUFBS0FOQURBQUJYQVFBQUN3RFVBd0FBVndFQUFBb0E0QU1BQUZjQkFBQUxBT1FEQUFC
WEFRQUEKQ2dEd0F3QUFWd0VBQUFzQTlBTUFBRmNCQUFBS0FBQUVBQUJYQVFBQUN3QUVCQUFBVndF
QUFBb0FFQVFBQUZjQkFBQUxBQlFFQUFCWApBUUFBQ2dBZ0JBQUFWd0VBQUFzQUpBUUFBRmNCQUFB
S0FEQUVBQUJYQVFBQUN3QTBCQUFBVndFQUFBb0FRQVFBQUZjQkFBQUxBRVFFCkFBQlhBUUFBQ2dC
UUJBQUFWd0VBQUFzQVZBUUFBRmNCQUFBS0FHQUVBQUJYQVFBQUN3QmtCQUFBVndFQUFBb0FjQVFB
QUZjQkFBQUwKQUhRRUFBQlhBUUFBQ2dDSUJBQUFWd0VBQUFzQWpBUUFBRmNCQUFBS0FBQUFBQUFB
QU9BLzJ3L0p2OXNQeVQrRDdBeFdWLzhWQUFBQQpBTmxFSkJ6WndJUHNDTmxFSkRTTDhObkEzc0xa
eWRsY0pCalpSQ1FzMk1MWTRkbGNKQlRaUkNRbzJjRFl3dGxjSkJEWVJDUXczdUhaClhDUWsyVVFr
RU5sY0pBVFpIQ1JxQUZiL0ZRQUFBQURaQlFBQUFBQ0xQUUFBQUFDRHhCQnFBWVBzRk5sY0pCRFpC
UUFBQUFEWlhDUU0KMlVRa1JObGNKQWpaUkNRMDJWd2tCTmxFSkNqWkhDUnFBRmIvMTludWc4UWdh
Z0dEN0JUWlhDUVEyUVVBQUFBQTJWd2tETmxFSkVUWgpYQ1FJMlVRa05ObGNKQVRaUkNRazJSd2th
Z0JXLzlmWkJRQUFBQUNEeENCcUFZUHNGTmxjSkJEWjd0bGNKQXpaUkNSRTJWd2tDTmxFCkpDRFpY
Q1FFMlVRa0pOa2NKR29BVnYvWGc4UWdhZ0dEN0JUWkJRQUFBQURaWENRUTJRVUFBQUFBMlZ3a0RO
bEVKRVRaWENRSTJVUWsKSU5sY0pBVFpSQ1FvMlJ3a2FnQlcvOWRXL3hVQUFBQUFpMFFrUEZaUS94
VUFBQUFBVnY4VkFBQUFBSVBFTUY5ZWc4UU13d2NBQUFCNgpBUUFBQmdCV0FBQUFlUUVBQUFZQVhB
QUFBR2NCQUFBR0FHSUFBQUI0QVFBQUJnQjBBQUFBZHdFQUFBWUFxQUFBQUdjQkFBQUdBTTRBCkFB
QjBBUUFBQmdBS0FRQUFkd0VBQUFZQUZBRUFBSFFCQUFBR0FEc0JBQUJ4QVFBQUJnQkhBUUFBY0FF
QUFBWUFUZ0VBQUc4QkFBQUcKQUFRQUFBRDFBQUFBWkFBQUFBQUFBQUFBQUFBQVd3RUFBQXdBQUFB
WUFBQUFBQUFBQUZzVEFBQUZBQUFBQkFBQUFBUUFBQUJUQVFBQQpEQUFBQUJnQUFBQUFBQUFBV3hN
QUFBRUFCQUFBQUFBQUJRQUFBRkVCQUFBTUFBQUFHQUFBQUFBQUFBQmJFd0FBQUFBSUFBQUFBQUR4
CkFBQUFaUUVBQUQwQUR4RUFBQUFBQUFBQUFBQUFBQUJiQVFBQUJRQUFBRmNCQUFERkZ3QUFBQUFB
QUFBQUFHRmtaRkp2ZFc1a1pXUlMKWldOMFZHOURiMjUwWlhoMEFCd0FFaEFNQUFBQUFBQUFBQUFB
QUFBSUFBQUFBQUFBQUFBQUFBSUFBQklBQ3hFRUFBQUFLUkFBQUdOdgpiblJsZUhRQUR3QUxFUWdB
QUFBT0VBQUFjbVZqZEFBUkFBc1JHQUFBQUVBQUFBQnlZV1JwZFhNQURRQUxFZmovLy85QUFBQUFl
REVBCkRRQUxFZkQvLy85QUFBQUFlVEVBRFFBTEVmVC8vLzlBQUFBQWVESUFEUUFMRVFnQUFBQkFB
QUFBZVRJQURnQTVFUVVBQUFBQUFBQUEKcWhjQUFBNEFPUkZVQUFBQUFBQUFBS3dYQUFBT0FEa1Js
Z0FBQUFBQUFBQ3VGd0FBRGdBNUVjb0FBQUFBQUFBQXJoY0FBQTRBT1JIKwpBQUFBQUFBQUFLNFhB
QUFPQURrUk5nRUFBQUFBQUFDdUZ3QUFEZ0E1RVRrQkFBQUFBQUFBc0JjQUFBNEFPUkZGQVFBQUFB
QUFBTFFYCkFBQU9BRGtSVEFFQUFBQUFBQUMyRndBQUFnQUdBQUFBQVBJQUFBQjRBQUFBQUFBQUFB
QUFBQUJiQVFBQUVBSUFBQXdBQUFCc0FBQUEKQUFBQUFCRUJBSUFGQUFBQUVnRUFnQXNBQUFBVkFR
Q0FFUUFBQUJvQkFJQmFBQUFBR3dFQWdKZ0FBQUFjQVFDQXpBQUFBQjBCQUlBRApBUUFBSGdFQWdE
Z0JBQUFmQVFDQVB3RUFBQ0VCQUlCTEFRQUFJZ0VBZ0ZjQkFBQWpBUUNBREFBQUFHNEJBQUFIQUpn
QUFBQnVBUUFBCkN3Q2NBQUFBYmdFQUFBb0FUUUVBQUc0QkFBQUxBRkVCQUFCdUFRQUFDZ0JkQVFB
QWJnRUFBQXNBWVFFQUFHNEJBQUFLQUcwQkFBQnUKQVFBQUN3QnhBUUFBYmdFQUFBb0FmUUVBQUc0
QkFBQUxBSUVCQUFCdUFRQUFDZ0NOQVFBQWJnRUFBQXNBa1FFQUFHNEJBQUFLQUowQgpBQUJ1QVFB
QUN3Q2hBUUFBYmdFQUFBb0FyUUVBQUc0QkFBQUxBTEVCQUFCdUFRQUFDZ0M5QVFBQWJnRUFBQXNB
d1FFQUFHNEJBQUFLCkFNMEJBQUJ1QVFBQUN3RFJBUUFBYmdFQUFBb0E2QUVBQUc0QkFBQUxBT3dC
QUFCdUFRQUFDZ0RreTVaQTJ3OUpRSVBzREl0TUpCeFQKaTF3a0dGV0xiQ1FnVjR0OEpCeUQ3QkNM
eElrNGlWZ0VpV2dJaVVnTS94VUFBQUFBMkhRa1BJdFVKRGlMeElrNGlWZ0VpV2dJaVZBTQoyVndr
SFA4VkFBQUFBTmgwSkVDTFRDUTRnOFFRZyt3UTJWd2tJTmxFSkJ6WlJDUWcyTkhmNE4zWjlzUkJp
OFNKT0lsWUJJbG9DSWxJCkRBK0ZnZ0FBQU4zWS94VUFBQUFBaTB3a09ObGNKQ0RaUkNSQWkxUWtJ
TmhNSkJ5SlZnalpYQ1FraTBRa0pJbEdESXZFaVRpSldBU0oKYUFpSlNBei9GUUFBQUFEWlhDUThp
MVFrT0l2RWlUaUpXQVNKYUFpSlVBei9GUUFBQUFEWVpneUxUQ1E0aThUY0RRQUFBQUNKT0lsWQpC
SWxvQ04xY0pDQ0pTQXovRlFBQUFBRGNSQ1FnNjNyWVRDUTgyVndrUFA4VkFBQUFBSXRVSkR6WlhD
UkFpMFFrUUl0TUpEaUpSZ3lMCnhJazRpVmdFaVdnSWlWWUlpVWdNL3hVQUFBQUEyR1lJaTFRa09J
dkUzQTBBQUFBQWlUaUpXQVNKYUFqZFhDUThpVkFNL3hVQUFBQUEKM0VRa1BJdE1KRGlMeElrNDJW
d2tQSWxZQklsb0NJbElEUDhWQUFBQUFJdFVKRHpaWENSQWkwUWtRSVBFRUY5ZGlVWUVpOGFKRmx1
RAp4QXpES0FBQUFHZ0JBQUFHQUVjQUFBQnBBUUFBQmdDRkFBQUFhQUVBQUFZQXVnQUFBRnNCQUFB
R0FOVUFBQUJwQVFBQUJnRGtBQUFBCllBRUFBQVlBK1FBQUFCQUJBQUFHQUEwQkFBQnBBUUFBQmdB
MkFRQUFhQUVBQUFZQVJRRUFBR0FCQUFBR0FGb0JBQUJiQVFBQUJnQjUKQVFBQUVBRUFBQVlBQkFB
QUFQVUFBQUJrQUFBQUFBQUFBQUFBQUFDYUFRQUFEQUFBQUJnQUFBQUFBQUFBV3hNQUFCSUFCQUFF
QUFBQQpDQUFBQUpJQkFBQU1BQUFBR0FBQUFBQUFBQUNzRndBQUNnQUlBQUFBQUFBTkFBQUFqUUVB
QUF3QUFBQVlBQUFBQUFBQUFCVVlBQUFGCkFBd0FBQUFBQVBFQUFBQmRBUUFBU0FBUEVRQUFBQUFB
QUFBQUFBQUFBSm9CQUFBU0FBQUFqQUVBQUw0WEFBQUFBQUFBQUFBQVkyOXUKYzNSeVlXbHVVbVZq
ZEZCeVpYTmxjblpwYm1kQmMzQmxZM1JTWVhScGJ3QWNBQklRREFBQUFBQUFBQUFBQUFBQURBQUFB
QUFBQUFBQQpBQUFDQUFBUkFBc1JCQUFBQUE0UUFBQmliM1Z1WkhNQUZnQUxFUlFBQUFBTEVBQUFZ
WE53WldOMFVtRjBhVzhBRVFBTEVmRC8vLzlBCkFBQUFlRk5qWVd4bEFCRUFDeEgwLy8vL1FBQUFB
SGxUWTJGc1pRQU9BRGtSSmdBQUFBQUFBQUJpRWdBQURnQTVFVVVBQUFBQUFBQUEKWWhJQUFBNEFP
UkdEQUFBQUFBQUFBR0lTQUFBT0FEa1J1QUFBQUFBQUFBQmlFZ0FBRGdBNUVkTUFBQUFBQUFBQVlo
SUFBQTRBT1JIMwpBQUFBQUFBQUFHSVNBQUFPQURrUkN3RUFBQUFBQUFCaUVnQUFEZ0E1RVRRQkFB
QUFBQUFBWWhJQUFBNEFPUkZZQVFBQUFBQUFBR0lTCkFBQU9BRGtSZHdFQUFBQUFBQUJpRWdBQUFn
QUdBQUFBQVBJQUFBQmdBQUFBQUFBQUFBQUFBQUNhQVFBQUVBSUFBQWtBQUFCVUFBQUEKQUFBQUFD
WUJBSUFEQUFBQUp3RUFnREFBQUFBb0FRQ0FUd0FBQUN3QkFJQ0pBQUFBTFFFQWdBRUJBQUF1QVFD
QUF3RUFBQzhCQUlBZApBUUFBTUFFQWdJd0JBQUEwQVFDQURBQUFBSDhCQUFBSEFKZ0FBQUIvQVFB
QUN3Q2NBQUFBZndFQUFBb0FOUUVBQUg4QkFBQUxBRGtCCkFBQi9BUUFBQ2dCRkFRQUFmd0VBQUFz
QVNRRUFBSDhCQUFBS0FGVUJBQUIvQVFBQUN3QlpBUUFBZndFQUFBb0FaUUVBQUg4QkFBQUwKQUdr
QkFBQi9BUUFBQ2dCMUFRQUFmd0VBQUFzQWVRRUFBSDhCQUFBS0FJVUJBQUIvQVFBQUN3Q0pBUUFB
ZndFQUFBb0FsUUVBQUg4QgpBQUFMQUprQkFBQi9BUUFBQ2dDbEFRQUFmd0VBQUFzQXFRRUFBSDhC
QUFBS0FMVUJBQUIvQVFBQUN3QzVBUUFBZndFQUFBb0F4UUVBCkFIOEJBQUFMQU1rQkFBQi9BUUFB
Q2dEZ0FRQUFmd0VBQUFzQTVBRUFBSDhCQUFBS0FObEVKQVRZWkNRTTJVUWtDTmhrSkJEWlJDUVUK
MmNIZXl0bkMzc3ZaeWQ3QzNNamUyZC9nOXNRQmRRYTRBUUFBQU1NendNTUVBQUFBOVFBQUFDUUFB
QUFBQUFBQUFBQUFBRFFBQUFBQQpBQUFBRkFBQUFBQUFBQUJiRXdBQUFBQUFBQVFBQUFEeEFBQUFt
UUFBQUVJQUR4RUFBQUFBQUFBQUFBQUFBQUEwQUFBQUFBQUFBRE1BCkFBQzRGd0FBQUFBQUFBQUFB
SEJ2YVc1MFNYTlhhWFJvYVc1RWFYTjBZVzVqWlU5bVVHOXBiblFBSEFBU0VBQUFBQUFBQUFBQUFB
QUEKQUFBQUFBQUFBQUFBQUFBQUNnQUFEUUFMRVFRQUFBQUlFQUFBY0RFQURRQUxFUXdBQUFBSUVB
QUFjRElBRXdBTEVSUUFBQUJBQUFBQQpaR2x6ZEdGdVkyVUFBZ0FHQUFBQUFQSUFBQUJRQUFBQUFB
QUFBQUFBQUFBMEFBQUFFQUlBQUFjQUFBQkVBQUFBQUFBQUFEY0JBSUFBCkFBQUFPQUVBZ0FnQUFB
QTVBUUNBRUFBQUFEc0JBSUF3QUFBQVBBRUFnREVBQUFBN0FRQ0FNd0FBQUR3QkFJQU1BQUFBaEFF
QUFBY0EKV0FBQUFJUUJBQUFMQUZ3QUFBQ0VBUUFBQ2dEY0FBQUFoQUVBQUFzQTRBQUFBSVFCQUFB
S0FJUHNDTmxFSkJEWndObEVKQnpad043QwoyY25aWENRYzJVUWtHTmpDMmNIWTZka2NKTmxFSkF6
WlJDUWcyTkhmNE5sRUpDVDJ4QUYxUXRsRUpCVFl3OWxjSkFUWlJDUUUyTnJmCjRQYkVBWFVyMlVR
a0hOalozK0QyeEVGNkh0a0VKTmpaMytEMnhBRjFFdDNhc0FIZDNOM1ozZG5kMmQzWWc4UUl3OW5D
Mk1YWlhDUUUKMlVRa0ZON0QyY1RlNjluSzJWd2tETmxFSkFUWTBkL2c5c1JCZWpuWlJDUU0yTnJm
NFBiRUFYVXMyYzNZMnQvZzlzUkJlaVBaeXRsYwpKQVRaUkNRRTJObmY0UGJFQVhVUzNkdmQyZDNZ
c0FIZDJJUEVDTVBkM2QzYTJjSGU3Tm5EMlVRa0hOamkyY1RjeU5uQjNzclp3dDdMCjJjbmV3dGpS
MytEZDJmYkVBWFVRM2Rpd0FkM2EzZGpkMmQzWWc4UUl3OWtFSk43aTJjSGN5Tm5GM3M3ZXhkalUz
K0RkM1BiRUFYU2QKMlVRa0RObkEzdVBad2Q3SzJjTGV5OW5KM3NMWnlkamIzK0RkMnZiRVFYdUFp
MFFrSk5uSjJWd2tERkhaUkNRZ2kwd2tKTmxjSkJTTApWQ1FVMlJ3a1VJdEVKQlJSVWxEb0FBQUFB
SVBFRklUQUQ1WEFnOFFJdzNZQkFBQ0VBUUFBRkFBRUFBQUE5UUFBQUNRQUFBQUFBQUFBCkFBQUFB
SVlCQUFBSUFBQUFIQUFBQUFBQUFBQmJFd0FBQXdBQUFBUUFBQUR4QUFBQTBnQUFBRHdBRHhFQUFB
QUFBQUFBQUFBQUFBQ0cKQVFBQUF3QUFBSUlCQUFETEZ3QUFBQUFBQUFBQUFISnZkVzVrVW1WamRF
TnZiblJoYVc1elVHOXBiblFBSEFBU0VBZ0FBQUFBQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFn
QUFEd0FMRVFRQUFBQU9FQUFBY21WamRBQVJBQXNSRkFBQUFFQUFBQUJ5WVdScGRYTUFFQUFMCkVS
Z0FBQUFJRUFBQWNHOXBiblFBRFFBTEVRUUFBQUJBQUFBQWVETUFEUUFMRWZULy8vOUFBQUFBZVRN
QURRQUxFUlFBQUFCQUFBQUEKZVRJQURRQUxFZmovLy85QUFBQUFlRElBQWdBR0FBQUE4Z0FBQU1B
QUFBQUFBQUFBQUFBQUFJWUJBQUFRQWdBQUZRQUFBTFFBQUFBQQpBQUFBUHdFQWdBTUFBQUJDQVFD
QUZ3QUFBRU1CQUlBa0FBQUFSUUVBZ0dzQUFBQkdBUUNBZHdBQUFGa0JBSUI3QUFBQVNBRUFnSU1B
CkFBQkpBUUNBa3dBQUFFMEJBSURSQUFBQVRnRUFnTlVBQUFCWkFRQ0EyUUFBQUUwQkFJRGRBQUFB
VHdFQWdBWUJBQUJRQVFDQUVBRUEKQUZrQkFJQVVBUUFBVVFFQWdDd0JBQUJTQVFDQUxnRUFBRk1C
QUlCTkFRQUFWQUVBZ0U4QkFBQlZBUUNBZ2dFQUFGa0JBSUFNQUFBQQppUUVBQUFjQVdBQUFBSWtC
QUFBTEFGd0FBQUNKQVFBQUNnQVVBUUFBaVFFQUFBc0FHQUVBQUlrQkFBQUtBTm5vVm9zMUFBQUFB
TGdCCkFBQUFoQVVBQUFBQVY0djVkUndKQlFBQUFBQ0Q3QWpaVkNRRTJSd2svOWJaNklQRUNLTUFB
QUFBdUFJQUFBQ0VCUUFBQUFCMUl0a0YKQUFBQUFBa0ZBQUFBQUlQc0NObGNKQVRaSENULzFvUEVD
S01BQUFBQTZ3TGQySU4vREFDaEFBQUFBRjllZEFXaEFBQUFBTU1GQUFBQQpQZ0VBQUFZQUVBQUFB
SmNCQUFBR0FCc0FBQUNYQVFBQUJnQXhBQUFBbEFFQUFBWUFQQUFBQUpjQkFBQUdBRVFBQUFCT0FR
QUFCZ0JLCkFBQUFsd0VBQUFZQVhnQUFBSkVCQUFBR0FHc0FBQUNVQVFBQUJnQjBBQUFBa1FFQUFB
WUFCQUFBQVBVQUFBQmtBQUFBQUFBQUFBQUEKQUFCNUFBQUFBQUFBQUFBQUFBQUFBQUFBV3hNQUFC
Y0FBQUFFQUFBQUF3QUFBRzRBQUFBQUFBQUFBQUFBQUFBQUFBQmJFd0FBRkFBRQpBQUFBQUFBVkFB
QUFXd0FBQUFBQUFBQUFBQUFBQUFBQUFGc1RBQUFDQUFnQUFBQUFBUEVBQUFEaEFBQUFTZ0FRRVFB
QUFBQUFBQUFBCkFBQUFBSGtBQUFBWEFBQUFlQUFBQU44V0FBQUFBQUFBQUFBQVRXVmthV0ZUYUdG
eVpXUlZTVWx0WVdkbFJXeGxiV1Z1ZERvNloyeHYKZDBOdmJHOXlBQndBRWhBQUFBQUFBQUFBQUFB
QUFBQUlBQUFBQUFBQUFBQUFBQUlBQUEwQUJoSFJGZ0FBRWdCMGFHbHpBQjhBREJHMQpFd0FBQUFB
QUFBQUFiM1JvWlhKR2FXeHNSMnh2ZDBOdmJHOXlBQ0VBREJHMUV3QUFBQUFBQUFBQVptbHNiRkps
Y0d4aFkyVkhiRzkzClEyOXNiM0lBRGdBNUVTa0FBQUFBQUFBQWt4Y0FBQTRBT1JGWUFBQUFBQUFB
QUpNWEFBQUNBQVlBQUFBQThnQUFBRkFBQUFBQUFBQUEKQUFBQUFIa0FBQUFRQWdBQUJ3QUFBRVFB
QUFBQUFBQUFYUUVBZ0FBQUFBQmVBUUNBTlFBQUFGOEJBSUJtQUFBQVlRRUFnR29BQUFCaQpBUUNB
Y3dBQUFHTUJBSUI0QUFBQVpBRUFnQXdBQUFDT0FRQUFCd0NZQUFBQWpnRUFBQXNBbkFBQUFJNEJB
QUFLQVBrQUFBQ1JBUUFBCkN3RDlBQUFBa1FFQUFBb0FHZ0VBQUpRQkFBQUxBQjRCQUFDVUFRQUFD
Z0E1QVFBQWpnRUFBQXNBUFFFQUFJNEJBQUFLQUVrQkFBQ08KQVFBQUN3Qk5BUUFBamdFQUFBb0Fa
QUVBQUk0QkFBQUxBR2dCQUFDT0FRQUFDZ0QyQlFBQUFBQUJWb3MxQUFBQUFGZUwrWFVqMmVpRApE
UUFBQUFBQmcrd0kyVndrQk5rRkFBQUFBTmtjSlAvV2c4UUlvd0FBQUFEMkJRQUFBQUFDZFNQWjZJ
TU5BQUFBQUFLRDdBalpYQ1FFCjJRVUFBQUFBMlJ3ay85YUR4QWlqQUFBQUFMZ0VBQUFBaEFVQUFB
QUFkVW9KQlFBQUFBRDJCUUFBQUFBQmRSMmhBQUFBQUlzSWd3MEEKQUFBQUFWSC9GUUFBQUFDRHhB
U2pBQUFBQUlzVkFBQUFBR29DYWdCb0FBQUFBRkwvRlFBQUFBQ0R4QkNqQUFBQUFJdDBKQXd6d0Rs
SApEQStVd0kwRWhRNEFBQUJRVnY4VkFBQUFBTmtGQUFBQUFJc05BQUFBQUlzVkFBQUFBS0VBQUFB
QWc4UUlVVktMVkNRY1VGR0xUQ1FnCjJSd2thZ0dEN0JDTHhJa0lpMHdrUElsUUJJdFVKRUNKU0Fo
V2lWQU02QUFBQUFDRHhDaGZYc0lVQUFJQUFBQ3hBUUFBQmdBS0FBQUEKUGdFQUFBWUFGd0FBQUxF
QkFBQUdBQ1VBQUFDdUFRQUFCZ0F5QUFBQXF3RUFBQVlBT0FBQUFMRUJBQUFHQUVNQUFBQ3hBUUFB
QmdCUgpBQUFBcUFFQUFBWUFYZ0FBQUtVQkFBQUdBR2tBQUFDeEFRQUFCZ0J4QUFBQXNRRUFBQVlB
ZHdBQUFDTUJBQUFHQUg4QUFBQWdBUUFBCkJnQ0hBQUFBSXdFQUFBWUFqd0FBQUI4QkFBQUdBSmNB
QUFBZUFRQUFCZ0NkQUFBQUhnRUFBQVlBcGdBQUFLSUJBQUFHQUswQUFBQWIKQVFBQUJnQzFBQUFB
bndFQUFBWUEwQUFBQUM4QkFBQUdBTllBQUFCT0FRQUFCZ0RjQUFBQXF3RUFBQVlBNGdBQUFLVUJB
QUFHQU9jQQpBQUNmQVFBQUJnQVpBUUFBVndFQUFCUUFCQUFBQVBVQUFBQWtBQUFBQUFBQUFBQUFB
QUFsQVFBQUFBQUFBQlFBQUFBQUFBQUFXeE1BCkFCRUFDQUFFQUFBQThRQUFBRk1CQUFCUEFCQVJB
QUFBQUFBQUFBQUFBQUFBSlFFQUFCRUFBQUFnQVFBQTF4WUFBQUFBQUFBQUFBQk4KWldScFlWTm9Z
WEpsWkZWSlNXMWhaMlZGYkdWdFpXNTBPanBrY21GM1FtRmphMmR5YjNWdVpBQWNBQklRQUFBQUFB
QUFBQUFBQUFBQQpDQUFBQUFBQUFBQUFBQUFDQUFBTkFBWVIxaFlBQUJJQWRHaHBjd0FTQUFzUkJB
QUFBQ2tRQUFCamIyNTBaWGgwQUE4QUN4RUlBQUFBCkRoQUFBSEpsWTNRQUZBQU1FYlVUQUFBQUFB
QUFBQUIwYjNCR2FXeHNBQllBREJHRUZ3QUFBQUFBQUFBQWJHOTNaWEpHYVd4c0FCTUEKREJFR0VR
QUFBQUFBQUFBQVkyOXNiM0p6QUJjQURCRzFFd0FBQUFBQUFBQUFiV2xrWkd4bFJtbHNiQUFPQURr
UkxBQUFBQUFBQUFDVApGd0FBRGdBNUVWZ0FBQUFBQUFBQWt4Y0FBQTRBT1JHTkFBQUFBQUFBQUlJ
WEFBQU9BRGtScXdBQUFBQUFBQUNHRndBQURnQTVFYzRBCkFBQUFBQUFBalJjQUFBSUFCZ0FBOGdB
QUFGQUFBQUFBQUFBQUFBQUFBQ1VCQUFBUUFnQUFCd0FBQUVRQUFBQUFBQUFBbndFQWdBQUEKQUFD
Z0FRQ0FOZ0FBQUtFQkFJQmlBQUFBb3dFQWdMa0FBQUNsQVFDQTFBQUFBS1lCQUlBZ0FRQUFwd0VB
Z0F3QUFBQ2NBUUFBQndCWQpBQUFBbkFFQUFBc0FYQUFBQUp3QkFBQUtBT01BQUFDckFRQUFDd0Ru
QUFBQXF3RUFBQW9BK1FBQUFKOEJBQUFMQVAwQUFBQ2ZBUUFBCkNnQVJBUUFBb2dFQUFBc0FGUUVB
QUtJQkFBQUtBQ1lCQUFDbEFRQUFDd0FxQVFBQXBRRUFBQW9BT3dFQUFKd0JBQUFMQUQ4QkFBQ2MK
QVFBQUNnQkxBUUFBbkFFQUFBc0FUd0VBQUp3QkFBQUtBRnNCQUFDY0FRQUFDd0JmQVFBQW5BRUFB
QW9BYXdFQUFKd0JBQUFMQUc4QgpBQUNjQVFBQUNnQjdBUUFBbkFFQUFBc0Fmd0VBQUp3QkFBQUtB
SlFCQUFDY0FRQUFDd0NZQVFBQW5BRUFBQW9BMGRCUVB3QUFnRC9KCnlFZy9BQUNBUDlIUVVEL1oy
RmcvZyt3WVU0dGNKQ0JWaTJ3a0tGYUxkQ1F3VjRQc0VJdkVpL21MVENSSWl4ZUxVaENKS0lsd0JJ
bEkKQ0l0TUpFeUpTQXhUaTgvLzBvc0hpMUFnaTgvLzBvVEFkRktMQjR0UURJMU1KQkJSaTgvLzBv
dElCSXNRVVl0TUpEeFNpMVFrUklQcwpFSXZFaVNpSmNBU0pTQWlOZENRd2lWQU02QUFBQUFDTFNB
U0xVQWlMS0l0QURJUEVHSWxNSkRTSlZDUTRpVVFrUEl2eGlrOEk5dEgyCndRRjFGTmtGQUFBQUFG
SFpIQ1JUL3hVQUFBQUFnOFFJaTB3a09Jc1hpMUljZyt3UWk4U0pLSWx3QklsSUNJdE1KRXlKU0F4
VGk4Ly8KMG9OL0RBS0w4SFFtaTB3a05JdFVKRGhXZyt3UWk4U0pLSWxJQkl0TUpGQ0pVQWhUaVVn
TTZBQUFBQUNEeEJpTFZ3akI2Z1Qyd2dGMApKb3RNSkRTTFZDUTRnK3dRaThTSktJbElCSXRNSkV5
SlVBaUpTQXlMdytnQUFBQUFnOFFRaTFRa05JdE1KRGlEN0JDTHhJa29pVkFFCmkxUWtUSWxJQ0ls
UURPZ0FBQUFBZzhRUWczOE1BblI3OWdVQUFBQUFBWFVuMlFVQUFBQUFndzBBQUFBQUFZUHNDTmxj
SkFUWjZOa2MKSlA4VkFBQUFBSVBFQ0tNQUFBQUEyZTZoQUFBQUFGRFpWQ1FVMlFVQUFBQUFpMVFr
RkZIWlhDUWNpMHdrSE5rY0pGR0xUQ1JBVW90VQpKRWhXZyt3UWk4U0pLSWxJQkl0TUpHQ0pVQWlK
U0F5THcrZ0FBQUFBZzhRa2kxY0kwZXIyd2dGMFJZdlA2QUFBQUFEWkJRQUFBQUJRCm9RQUFBQUNM
RUZHTFNBVFpIQ1JSaTB3a1FGS0xWQ1JJVm9Qc0VJdkVpU2lKU0FTTFRDUmdpVkFJaVVnTWk4UG9B
QUFBQUlQRUpGYi8KRlFBQUFBQ0xGNHRDRklQRUJGT0x6Ly9RWDE1ZFc0UEVHTUlVQUhZQUFBQi9B
UUFBRkFDaUFBQUFUZ0VBQUFZQXJRQUFBTUFCQUFBRwpBUDBBQUFBM0FRQUFGQUF1QVFBQVNRRUFB
QlFBVWdFQUFQb0FBQUFVQUdFQkFBQy9BUUFBQmdCcUFRQUF2QUVBQUFZQWNBRUFBTDhCCkFBQUdB
SU1CQUFBK0FRQUFCZ0NMQVFBQXVRRUFBQVlBa2dFQUFMa0JBQUFHQUowQkFBQTZBUUFBQmdEVEFR
QUFLQUVBQUJRQTV3RUEKQUk0QkFBQVVBTzBCQUFBbEFBQUFCZ0R6QVFBQVZBQUFBQVlBSWdJQUFB
a0JBQUFVQUN3Q0FBRHFBQUFBQmdBRUFBQUE5UUFBQUdRQQpBQUFBQUFBQUFBQUFBRWNDQUFBWUFB
QUFGQUFBQUFBQUFBQmJFd0FBR2dBSUFBUUFBQUFFQUFBQVF3SUFBQmdBQUFBVUFBQUFBQUFBCkFK
QVlBQUFXQUF3QUFBQUFBQWtBQUFBK0FnQUFHQUFBQUJRQUFBQUFBQUFBK1JnQUFCRUFFQUFBQUFB
QThRQUFBRDBCQUFCR0FCQVIKQUFBQUFBQUFBQUFBQUFBQVJ3SUFBQm9BQUFBOUFnQUExUllBQUFB
QUFBQUFBQUJOWldScFlWTm9ZWEpsWkZWSlNXMWhaMlZGYkdWdApaVzUwT2pwd1lXbHVkQUFjQUJJ
UUdBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQUFBQUFDQUFBTkFBWVIwUllBQUJJQWRHaHBjd0FT
CkFBc1JCQUFBQUNrUUFBQmpiMjUwWlhoMEFBOEFDeEVJQUFBQURoQUFBSEpsWTNRQUhRQU1FYlVU
QUFBQUFBQUFBQUJwYm01bGNsTm8KWVdSdmQwTnZiRzl5QUE0QU9SRTFBQUFBQUFBQUFEb1FBQUFP
QURrUlBnQUFBQUFBQUFEYUZnQUFEZ0E1RVZBQUFBQUFBQUFBMlJZQQpBQTRBT1JHckFBQUFBQUFB
QUlrVEFBQU9BRGtSMUFBQUFBQUFBQURZRmdBQURnQTVFWUVCQUFBQUFBQUFreGNBQUE0QU9SRXFB
Z0FBCkFBQUFBRjRTQUFBT0FEa1JPd0lBQUFBQUFBQThFQUFBQWdBR0FBQUFBUElBQUFDNEFBQUFB
QUFBQUFBQUFBQkhBZ0FBRUFJQUFCUUEKQUFDc0FBQUFBQUFBQUx3QkFJQUVBQUFBdlFFQWdEY0FB
QUMvQVFDQVJBQUFBTUFCQUlDV0FBQUF3Z0VBZ0tBQUFBRERBUUNBdEFBQQpBTVVCQUlEV0FBQUF4
d0VBZ040QUFBRElBUUNBQkFFQUFNb0JBSUFQQVFBQXl3RUFnRFVCQUFETkFRQ0FXUUVBQU04QkFJ
QmZBUUFBCjBBRUFnSThCQUFEUkFRQ0EyZ0VBQU5RQkFJRGtBUUFBMVFFQWdDa0NBQURYQVFDQU1B
SUFBTmtCQUlBOUFnQUEyZ0VBZ0F3QUFBQzIKQVFBQUJ3Q1lBQUFBdGdFQUFBc0FuQUFBQUxZQkFB
QUtBQm9CQUFDNUFRQUFDd0FlQVFBQXVRRUFBQW9BTlFFQUFMWUJBQUFMQURrQgpBQUMyQVFBQUNn
QkZBUUFBdGdFQUFBc0FTUUVBQUxZQkFBQUtBRlVCQUFDMkFRQUFDd0JaQVFBQXRnRUFBQW9BWlFF
QUFMWUJBQUFMCkFHa0JBQUMyQVFBQUNnQjFBUUFBdGdFQUFBc0FlUUVBQUxZQkFBQUtBSVVCQUFD
MkFRQUFDd0NKQVFBQXRnRUFBQW9BbFFFQUFMWUIKQUFBTEFKa0JBQUMyQVFBQUNnQ2xBUUFBdGdF
QUFBc0FxUUVBQUxZQkFBQUtBTUFCQUFDMkFRQUFDd0RFQVFBQXRnRUFBQW9BQUFCQQpQNFBzRlBZ
RkFBQUFBQUZUaXgwQUFBQUFWVmFMOFZlTFBRQUFBQUNKZENRUXZRRUFBQUIxUVFrdEFBQUFBUFlG
QUFBQUFBRjFHS0VBCkFBQUFpd2dKTFFBQUFBQlIvOWVEeEFTakFBQUFBSXNWQUFBQUFHb0NhZ0Jv
QUFBQUFGTC8wNFBFRUtNQUFBQUE5Z1VBQUFBQUFuVXIKMlFVQUFBQUFndzBBQUFBQUFvUHNDTmxj
SkFUWkJRQUFBQURaSENUL0ZRQUFBQUNEeEFpakFBQUFBTGdFQUFBQWhBVUFBQUFBZFVFSgpCUUFB
QUFEMkJRQUFBQUFCZFJpaEFBQUFBSXNJQ1MwQUFBQUFVZi9YZzhRRW93QUFBQUNMRlFBQUFBQnFB
bW9BYUFBQUFBQlMvOU9ECnhCQ2pBQUFBQUl0OEpDeUxGb3RjSkRDTGJDUTBpMHdrT0l0MEpDaUxV
aENEN0JDTHhJazRpVmdFaVdnSWlVZ01pMHdrSUZiLzBvdE0KSkRpRDdCQ0x4SWs0aVZnRWlXZ0lW
b2xJRFA4VkFBQUFBR29SVnY4VkFBQUFBTmtGQUFBQUFJc1ZBQUFBQUtFQUFBQUFpdzBBQUFBQQpn
OFFjVW90VUpEeFFVVkhaSENScUFZUHNFSXZFaVRpSldBU0phQWhXaVZBTTZBQUFBQUJxQUZiL0ZR
QUFBQUM0Q0FBQUFJUEVNSVFGCkFBQUFBSFZFMlFVQUFBQUFDUVVBQUFBQWcrd0kyVndrQk5udTJS
d2sveFVBQUFBQTJRVUFBQUFBMlZ3a0JLTUFBQUFBMlFVQUFBQUEKMlJ3ay94VUFBQUFBZzhRSW93
UUFBQUNoQUFBQUFGQlcveFVBQUFBQWkwd2tRSVBzQ0l2RWlUaUpXQVNKYUFpSlNBei9GUUFBQUFE
WgpYQ1FraTFRa1NJdkVpVGlKV0FTSmFBaUpVQXovRlFBQUFBRGNKUUFBQUFDTFRDUklpOFNKT05s
Y0pDaUpXQVNKYUFpSlNBei9GUUFBCkFBRFpYQ1FzaTFRa0pObm9pMHdrS05sY0pEQ0x4SWtRaTFR
a0xJbElCSXRNSkRDSlVBaFdpVWdNL3hVQUFBQUFpeFVFQUFBQVVsYi8KRlFBQUFBQ0xUQ1JVZzhR
TWk4U0pPSWxZQklsb0NJbElEUDhWQUFBQUFObGNKQ1NMVkNSSWk4U0pPSWxZQklsb0NJbFFEUDhW
QUFBQQpBTndsQUFBQUFJdE1KRWlMeElrNDJWd2tLSWxZQklsb0NJbElEUDhWQUFBQUFObGNKQ3lM
VkNRazJlaUxUQ1FvMlZ3a01JdkVpUkNMClZDUXNpVWdFaTB3a01JbFFDRmFKU0F6L0ZRQUFBQUNM
VENRa2l4R0xRaFNEeEJSVy85QmZYbDFiZzhRVXdoUUFCUUFBQU9rQkFBQUcKQUEwQUFBQWJBUUFB
QmdBWUFBQUFId0VBQUFZQUtRQUFBT2tCQUFBR0FDOEFBQUFqQVFBQUJnQTNBQUFBSUFFQUFBWUFQ
d0FBQUNNQgpBQUFHQUVvQUFBQWVBUUFBQmdCUUFBQUFIZ0VBQUFZQVdRQUFBT1lCQUFBR0FHUUFB
QURqQVFBQUJnQnFBQUFBNlFFQUFBWUFjd0FBCkFPQUJBQUFHQUhrQUFBRHBBUUFBQmdDSEFBQUEz
UUVBQUFZQWtBQUFBRDRCQUFBR0FKZ0FBQURhQVFBQUJnQ2pBQUFBNlFFQUFBWUEKcXdBQUFPa0JB
QUFHQUxFQUFBQWpBUUFBQmdDNUFBQUFJQUVBQUFZQXdRQUFBQ01CQUFBR0FNd0FBQUFlQVFBQUJn
RFNBQUFBSGdFQQpBQVlBMndBQUFOY0JBQUFHQU9ZQUFBRFVBUUFBQmdBeEFRQUFEd0VBQUFZQU9n
RUFBQzhCQUFBR0FFQUJBQUJPQVFBQUJnQkdBUUFBCjR3RUFBQVlBU3dFQUFOb0JBQUFHQUZFQkFB
RFVBUUFBQmdCM0FRQUFWd0VBQUJRQWdBRUFBQzhCQUFBR0FJNEJBQURwQVFBQUJnQ1cKQVFBQTRB
RUFBQVlBbkFFQUFPa0JBQUFHQUs0QkFBQStBUUFBQmdDMEFRQUE0QUVBQUFZQXZRRUFBTkVCQUFB
R0FNTUJBQURPQVFBQQpCZ0RNQVFBQVBnRUFBQVlBMUFFQUFORUJBQUFHQU5rQkFBRFJBUUFBQmdE
aEFRQUFMZ0VBQUFZQSt3RUFBRnNCQUFBR0FCWUNBQUFSCkFRQUFCZ0FjQWdBQXl3RUFBQVlBTndJ
QUFHZ0JBQUFHQUdVQ0FBQXNBUUFBQmdCckFnQUEwUUVBQUFZQWN3SUFBQzRCQUFBR0FJMEMKQUFC
YkFRQUFCZ0NvQWdBQUVRRUFBQVlBcmdJQUFNZ0JBQUFHQU1rQ0FBQm9BUUFBQmdEM0FnQUFMQUVB
QUFZQUJBQUFBUFVBQUFCawpBQUFBQUFBQUFBQUFBQUFVQXdBQUZBQUFBQlFBQUFBQUFBQUFXeE1B
QUNBQUNBQUVBQUFBQ3dBQUFBa0RBQUFVQUFBQUZBQUFBQUFBCkFBQjBHUUFBRlFBTUFBQUFBQUFT
QUFBQUFnTUFBQlFBQUFBVUFBQUFBQUFBQU4wWkFBQU9BQkFBQUFBQUFQRUFBQUNXQWdBQVN3QVEK
RVFBQUFBQUFBQUFBQUFBQUFCUURBQUFnQUFBQUNnTUFBTUVXQUFBQUFBQUFBQUFBVFdWa2FXRlRh
R0Z5WldSVlNVSmhZMnRuY205MQpibVJGYkdWdFpXNTBPanB3WVdsdWRBQWNBQklRRkFBQUFBQUFB
QUFBQUFBQUVBQUFBQUFBQUFBQUFBQUNBQUFOQUFZUndCWUFBQklBCmRHaHBjd0FTQUFzUkJBQUFB
Q2tRQUFCamIyNTBaWGgwQUE4QUN4RUlBQUFBRGhBQUFISmxZM1FBRndBTUVZUVhBQUFBQUFBQUFB
QmkKYjNSMGIyMUdhV3hzQUJRQURCR0VGd0FBQUFBQUFBQUFkRzl3Um1sc2JBQVdBQXdSd2hjQUFB
QUFBQUFBQUhSdmNFSnZjbVJsY2dBVwpBQXdSQmhFQUFBQUFBQUFBQUhSdmNFTnZiRzl5Y3dBWkFB
d1JCaEVBQUFBQUFBQUFBR0p2ZEhSdmJVTnZiRzl5Y3dBWEFBd1J0Uk1BCkFBQUFBQUFBQUcxcFpH
UnNaVVpwYkd3QURnQTVFVVFBQUFBQUFBQUFnaGNBQUE0QU9SRmVBQUFBQUFBQUFJWVhBQUFPQURr
UmpnQUEKQUFBQUFBQ1RGd0FBRGdBNUVjWUFBQUFBQUFBQWdoY0FBQTRBT1JIZ0FBQUFBQUFBQUlZ
WEFBQU9BRGtSR0FFQUFBQUFBQUE2RUFBQQpEZ0E1RVM4QkFBQUFBQUFBZFJJQUFBNEFPUkU0QVFB
QUFBQUFBSTBYQUFBT0FEa1JmZ0VBQUFBQUFBQ05Gd0FBRGdBNUVhd0JBQUFBCkFBQUFreGNBQUE0
QU9SSEtBUUFBQUFBQUFKTVhBQUFPQURrUjN3RUFBQUFBQUFDUEZ3QUFEZ0E1RWZrQkFBQUFBQUFB
WWhJQUFBNEEKT1JFVUFnQUFBQUFBQUdJU0FBQU9BRGtSTlFJQUFBQUFBQUJpRWdBQURnQTVFV01D
QUFBQUFBQUFkUklBQUE0QU9SRnhBZ0FBQUFBQQpBSThYQUFBT0FEa1Jpd0lBQUFBQUFBQmlFZ0FB
RGdBNUVhWUNBQUFBQUFBQVloSUFBQTRBT1JISEFnQUFBQUFBQUdJU0FBQU9BRGtSCjlRSUFBQUFB
QUFCMUVnQUFEZ0E1RVFnREFBQUFBQUFBUEJBQUFBSUFCZ0FBQVBJQUFBQ1lBQUFBQUFBQUFBQUFB
QUFVQXdBQUVBSUEKQUJBQUFBQ01BQUFBQUFBQUFQOEJBSUFEQUFBQUFnSUFnR2dBQUFBREFnQ0Fu
QUFBQUFRQ0FJRHFBQUFBQmdJQWdCb0JBQUFJQWdDQQpOUUVBQUFvQ0FJQStBUUFBQ3dJQWdIc0JB
QUFOQWdDQWhBRUFBQThDQUlEWUFRQUFFQUlBZ09VQkFBQVJBZ0NBYVFJQUFCSUNBSUIzCkFnQUFF
d0lBZ1BzQ0FBQVZBZ0NBQ2dNQUFCWUNBSUFNQUFBQXhRRUFBQWNBbUFBQUFNVUJBQUFMQUp3QUFB
REZBUUFBQ2dBZkFRQUEKMUFFQUFBc0FJd0VBQU5RQkFBQUtBRGdCQUFEakFRQUFDd0E4QVFBQTR3
RUFBQW9BVGdFQUFORUJBQUFMQUZJQkFBRFJBUUFBQ2dCbQpBUUFBNWdFQUFBc0FhZ0VBQU9ZQkFB
QUtBSDRCQUFEWEFRQUFDd0NDQVFBQTF3RUFBQW9BbVFFQUFOb0JBQUFMQUowQkFBRGFBUUFBCkNn
Q3VBUUFBeFFFQUFBc0FzZ0VBQU1VQkFBQUtBTDRCQUFERkFRQUFDd0RDQVFBQXhRRUFBQW9BemdF
QUFNVUJBQUFMQU5JQkFBREYKQVFBQUNnRGVBUUFBeFFFQUFBc0E0Z0VBQU1VQkFBQUtBTzRCQUFE
RkFRQUFDd0R5QVFBQXhRRUFBQW9BL2dFQUFNVUJBQUFMQUFJQwpBQURGQVFBQUNnQU9BZ0FBeFFF
QUFBc0FFZ0lBQU1VQkFBQUtBQjRDQUFERkFRQUFDd0FpQWdBQXhRRUFBQW9BTGdJQUFNVUJBQUFM
CkFESUNBQURGQVFBQUNnQStBZ0FBeFFFQUFBc0FRZ0lBQU1VQkFBQUtBRTRDQUFERkFRQUFDd0JT
QWdBQXhRRUFBQW9BWGdJQUFNVUIKQUFBTEFHSUNBQURGQVFBQUNnQnVBZ0FBeFFFQUFBc0FjZ0lB
QU1VQkFBQUtBSDRDQUFERkFRQUFDd0NDQWdBQXhRRUFBQW9BamdJQQpBTVVCQUFBTEFKSUNBQURG
QVFBQUNnQ2VBZ0FBeFFFQUFBc0FvZ0lBQU1VQkFBQUtBSzRDQUFERkFRQUFDd0N5QWdBQXhRRUFB
QW9BCnZnSUFBTVVCQUFBTEFNSUNBQURGQVFBQUNnRE9BZ0FBeFFFQUFBc0EwZ0lBQU1VQkFBQUtB
TjRDQUFERkFRQUFDd0RpQWdBQXhRRUEKQUFvQTdnSUFBTVVCQUFBTEFQSUNBQURGQVFBQUNnRCtB
Z0FBeFFFQUFBc0FBZ01BQU1VQkFBQUtBQmdEQUFERkFRQUFDd0FjQXdBQQp4UUVBQUFvQUFBQUFB
QUFBQUVBQUFBQUFBQUR3UHpNenN6NkppSWc5SDRWclA4bkl5RDBmaFdzLzhmRHdQUitGYXorTmpB
dytINFZyClAvSHdjRDRmaFdzL1U0dGNKQkJWaTJ3a0dGYUxkQ1FRVjR0OEpCaUQ3QkNMeElrd2lY
Z0VpVmdJaVdnTS94VUFBQUFBMlZ3a0pJdkUKaVRDSmVBU0pXQWlKYUF6L0ZRQUFBQURaWENRbzJV
UWtOSVBFRU5oa0pCVFpSQ1FvMkdRa0dOekkyY0hleXQ3QjNCMEFBQUFBMytEMgp4RUY2RExnQkFB
QUFYMTVkVzhJWUFGOWVYVFBBVzhJWUFDWUFBQUJaQVFBQUJnQTlBQUFBOGdFQUFBWUFZZ0FBQVBF
QkFBQUdBQVFBCkFBRDFBQUFBWkFBQUFBQUFBQUFBQUFBQWdnQUFBQUFBQUFBWUFBQUFBQUFBQUZz
VEFBQVFBQWdBQkFBQUFBRUFBQUNCQUFBQUFBQUEKQUJnQUFBQUFBQUFBV0JvQUFBOEFEQUFBQUFB
QUJnQUFBSHdBQUFBQUFBQUFHQUFBQUFBQUFBREFHZ0FBQ2dBUUFBQUFBQUR4QUFBQQp6QUFBQUZZ
QUVCRUFBQUFBQUFBQUFBQUFBQUNDQUFBQUVBQUFBSGtBQUFBZkZ3QUFBQUFBQUFBQUFFMWxaR2xo
VTJoaGNtVmtWVWxVCmFXMWxiR2x1WlZOc2FXUmxjbFJvZFcxaVJXeGxiV1Z1ZERvNmFHbDBWR1Z6
ZEFBY0FCSVFBQUFBQUFBQUFBQUFBQUFBRUFBQUFBQUEKQUFBQUFBQUNBQUFOQUFZUkhSY0FBQklB
ZEdocGN3QVBBQXNSQkFBQUFBNFFBQUJ5WldOMEFCQUFDeEVVQUFBQUNCQUFBSEJ2YVc1MApBQTRB
T1JFa0FBQUFBQUFBQUdJU0FBQU9BRGtST3dBQUFBQUFBQUJpRWdBQUFnQUdBUElBQUFBNEFBQUFB
QUFBQUFBQUFBQ0NBQUFBCkVBSUFBQVFBQUFBc0FBQUFBQUFBQUJrQ0FJQUJBQUFBR2dJQWdFVUFB
QUFiQWdDQWNnQUFBQndDQUlBTUFBQUE3Z0VBQUFjQW1BQUEKQU80QkFBQUxBSndBQUFEdUFRQUFD
Z0FrQVFBQTdnRUFBQXNBS0FFQUFPNEJBQUFLQURRQkFBRHVBUUFBQ3dBNEFRQUE3Z0VBQUFvQQpU
QUVBQU80QkFBQUxBRkFCQUFEdUFRQUFDZ0FBQUFBQUFBQXdRSVBzQ05rRkFBQUFBSXRFSkF6WkZD
U0xEQ1RaWENRRWkxUWtCSWtJCjJRRGNCUUFBQUFDSlVBVFpHSVBFQ01JRUFBVUFBQUFsQUFBQUJn
QWhBQUFBeUFFQUFBWUFCQUFBQVBVQUFBQWtBQUFBQUFBQUFBQUEKQUFBd0FBQUFDQUFBQUFRQUFB
QUFBQUFBV3hNQUFBTUFBQUFFQUFBQThRQUFBSTBBQUFCYUFCQVJBQUFBQUFBQUFBQUFBQUFBTUFB
QQpBQU1BQUFBcUFBQUFIaGNBQUFBQUFBQUFBQUJOWldScFlWTm9ZWEpsWkZWSlZHbHRaV3hwYm1W
VGJHbGtaWEpVYUhWdFlrVnNaVzFsCmJuUTZPbTVoZEhWeVlXeFRhWHBsQUJ3QUVoQUlBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQUFBMEFCaEVkRndBQUVnQjAKYUdsekFBSUFCZ0FBQUFE
eUFBQUFPQUFBQUFBQUFBQUFBQUFBTUFBQUFCQUNBQUFFQUFBQUxBQUFBQUFBQUFBZkFnQ0FBd0FB
QUNBQwpBSUFkQUFBQUlnSUFnQ29BQUFBbEFnQ0FEQUFBQVBjQkFBQUhBRmdBQUFEM0FRQUFDd0Jj
QUFBQTl3RUFBQW9BMEFBQUFQY0JBQUFMCkFOUUFBQUQzQVFBQUNnQ0Q3REQyQlFBQUFBQUJVNHNk
QUFBQUFGVldpelVBQUFBQVY0djVpWHdrR0wwQkFBQUFkVUVKTFFBQUFBRDIKQlFBQUFBQUJkUmlo
QUFBQUFJc0lDUzBBQUFBQVVmL1dnOFFFb3dBQUFBQ0xGUUFBQUFCcUFtb0FhQUFBQUFCUy85T0R4
QkNqQUFBQQpBUFlGQUFBQUFBSjFRb01OQUFBQUFBTDJCUUFBQUFBQmRSaWhBQUFBQUlzSUNTMEFB
QUFBVWYvV2c4UUVvd0FBQUFDTEZRQUFBQUJxCkFtb0FhQUFBQUFCUy85T0R4QkNqQUFBQUFJczFB
QUFBQUxnRUFBQUFoQVVBQUFBQWRTTFpCUUFBQUFBSkJRQUFBQUNEN0FqWlhDUUUKMmVqWkhDVC8x
b1BFQ0tNQUFBQUF1QWdBQUFDRUJRQUFBQUIxSXRrRkFBQUFBQWtGQUFBQUFJUHNDTmxjSkFUWjd0
a2NKUC9XZzhRSQpvd0FBQUFDTEY0dHNKRWlMZENSTWkzd2tVSXRjSkZTTFRDUVlpMUlRZyt3UWk4
U0pLSWx3QklsNENJbFlESXRFSkZSUS85S0Q3QkNMCnhJa29pWEFFaVhnSWlWZ00veFVBQUFBQTJW
d2tRSXZFaVNpSmNBU0plQWlKV0F6L0ZRQUFBQURaWENSRWkwUWtWR29BVTFkUS94VUEKQUFBQVVJ
bEVKRUQvRlFBQUFBQ0R4QlNKUkNRZ2k4U0pLSWx3QklsNENJbFlEUDhWQUFBQUFObmdVWXZFMlZ3
a0VJa29pWEFFaVhnSQppVmdNL3hVQUFBQUEyZUNMVENRazJWd2tESVBFREZIL0ZRQUFBQUJSaThT
SktJbHdCSWw0Q0lsWURQOFZBQUFBQU53TkFBQUFBSXRVCkpDQlMyVndrS1A4VkFBQUFBTmxFSkVp
RHhBelpYQ1FFMlVRa09OaEVKQnpaWENRbzJVUWtLSXRFSkJqWkhDUlEveFVBQUFBQTJVUWsKUU5o
a0pDQ0xUQ1FjZzhRRTJWd2tLTmxFSkNqWlhDUUUyVVFrT05rY0pGSC9GUUFBQUFEWlJDUkFpMVFr
SE5sY0pBalpSQ1E4ZzhRRQoyR1FrSE5sY0pDalpSQ1FvMlJ3a1V2OFZBQUFBQU5sRUpFRFlSQ1Fn
aTBRa0hJUEVCTmxjSkNqWlJDUW8yVndrQk5sRUpEalpIQ1JRCi94VUFBQUFBaTB3a0hGSC9GUUFB
QUFDTFZDUWdVdjhWQUFBQUFJUEVCSXZFaVNpSmNBU0plQWlKV0F6L0ZRQUFBQURaWENSQWk4U0oK
S0lsd0JJbDRDSWxZRFA4VkFBQUFBTmxjSkVTTHhJa29pWEFFaVhnSWlWZ00veFVBQUFBQTJWd2tN
SXZFaVNpSmNBU0plQWlKV0F6LwpGUUFBQUFEWlhDUTBpMFFrS0l0SUNLRUFBQUFBMGVtRHhCRDJ3
UUYxQmFFQUFBQUFpMVFrTkl0TUpEQnFBRktMVkNRc1VZdE1KQ3hTCmkxUWtJRkZRVXY4VkFBQUFB
SXRFSkdCcUFGTlhVUDhWQUFBQUFGQ0pSQ1JFL3hVQUFBQUFnOFFnaVVRa0lJdkVpU2lKY0FTSmVB
aUoKV0F6L0ZRQUFBQURaNEZHTHhObGNKQkNKS0lsd0JJbDRDSWxZRFA4VkFBQUFBTm5naTB3a0pO
bGNKQXlEeEF4Ui94VUFBQUFBaTFRawpLSVBFREZLRDdCQ0x4SWtvaVhBRWlYZ0lpVmdNaTBRa0pG
RC9GUUFBQUFEWjdvc05BQUFBQU5sVUpFalpCUUFBQUFDTFJDUklnOFFZCjJWd2tOSXRVSkRSUlVZ
dE1KQ1RaSENSU1VGR0Q3QkNMeElrb2lYQUVpWGdJaVZnTWkwUWtOT2dBQUFBQWkxUWtRRkwvRlFB
QUFBQ0wKUkNSc1VQOFZBQUFBQUl0TUpIQlJqVlFrVUZML0ZRQUFBQUNMQ0l0UUJJbFVKR2lMVUF5
SlRDUmtpMGdJaVZRa2NJc1FnOFFraVV3awpTSXZNaVJHTFVBU0pVUVNMVUFpTFFBeUpVUWlKUVF6
L0ZRQUFBQURaWENRd2k4U0pLSWx3QklsNENJbFlEUDhWQUFBQUFObGNKQ3lMClRDUkFpMVFrUkl2
RWlRaUxUQ1JJaVZBRWkxUWtUSWxJQ0lsUURQOFZBQUFBQU5sY0pDRFpSQ1F3aThUWlhDUkFpU2pa
UkNRc2lYQUUKMlZ3a1JJbDRDTmxFSkNDSldBelpYQ1JJL3hVQUFBQUFpMHdrUU5sY0pFeUxWQ1JF
aThTSkNJdE1KRWlKVUFTTFZDUk1pVWdJaVZBTQppMFFrVkZEL0ZRQUFBQURaN29zTkFBQUFBTmxj
SkVUWkJRQUFBQUNEeEJSUjJWd2tPRkhaNkl0VUpEeUxSQ1E0MlJ3a2kwd2tIRkpRClVZUHNFSXZF
aVNpSmNBU0plQWlKV0F5TFJDUm82QUFBQUFDTFZDUm9VdjhWQUFBQUFJdEVKRUNMU0FqQjZRU0R4
Q2oyd1FGMEpJUHMKRUl2RWlTaUpjQVNMZENRa2lYZ0lpVmdNaTBRa1ZPZ0FBQUFBaTNRa1hJUEVF
SXRVSkJSU2crd1FpOFNKS0lsd0JJdDBKRmlKZUFoVwppVmdNL3hVQUFBQUFpMFFrTEZEL0ZRQUFB
QUNMVENRMGl4R0xRaFNEeEJ4Vy85QmZYbDFiZzhRd3doUUFCUUFBQUJnQ0FBQUdBQTBBCkFBQWJB
UUFBQmdBVkFBQUFId0VBQUFZQUtRQUFBQmdDQUFBR0FDOEFBQUFqQVFBQUJnQTNBQUFBSUFFQUFB
WUFQd0FBQUNNQkFBQUcKQUVvQUFBQWVBUUFBQmdCUUFBQUFIZ0VBQUFZQVdRQUFBQlVDQUFBR0FH
UUFBQUFTQWdBQUJnQnFBQUFBR0FJQUFBWUFjd0FBQUJnQwpBQUFHQUhvQUFBQWpBUUFBQmdDQ0FB
QUFJQUVBQUFZQWlnQUFBQ01CQUFBR0FKVUFBQUFlQVFBQUJnQ2JBQUFBSGdFQUFBWUFwQUFBCkFB
OENBQUFHQUs4QUFBQU1BZ0FBQmdDMUFBQUFQZ0VBQUFZQXdBQUFBQmdDQUFBR0FNZ0FBQURPQVFB
QUJnRE9BQUFBR0FJQUFBWUEKNUFBQUFBa0NBQUFHQU84QUFBQVlBZ0FBQmdEM0FBQUFRUUVBQUFZ
QS9RQUFBQmdDQUFBR0FCTUJBQUFHQWdBQUJnQlpBUUFBV1FFQQpBQVlBY0FFQUFQSUJBQUFHQUlN
QkFBRGVBQUFBQmdDT0FRQUEzUUFBQUFZQXFBRUFBQkFCQUFBR0FNSUJBQUJiQVFBQUJnRFdBUUFB
CjhnQUFBQVlBNmdFQUFHa0JBQUFHQVBBQkFBQmdBUUFBQmdEL0FRQUFBd0lBQUFZQUtBSUFBQUlD
QUFBR0FGRUNBQUFCQWdBQUJnQjYKQWdBQUFRSUFBQVlBb3dJQUFBRUNBQUFHQUs0Q0FBQUFBZ0FB
QmdDNUFnQUEvd0VBQUFZQXp3SUFBRmtCQUFBR0FPWUNBQUFSQVFBQQpCZ0Q5QWdBQVdRRUFBQVlB
RkFNQUFCQUJBQUFHQUNRREFBQVNBZ0FBQmdBekF3QUFEQUlBQUFZQVZRTUFBRmdCQUFBR0FHUURB
QURlCkFBQUFCZ0J2QXdBQTNRQUFBQVlBaVFNQUFCQUJBQUFHQUtNREFBQmJBUUFBQmdDM0F3QUE4
Z0FBQUFZQTJnTUFBUHNBQUFBR0FPSUQKQUFBSkFnQUFCZ0RzQXdBQU9nRUFBQVlBSUFRQUFDZ0JB
QUFVQUNzRUFBRCtBUUFBQmdBMkJBQUFGUUVBQUFZQVJnUUFBUDBCQUFBRwpBSUlFQUFCYkFRQUFC
Z0NaQkFBQUVBRUFBQVlBd0FRQUFHZ0JBQUFHQU84RUFBQnBBUUFBQmdBYkJRQUFEd0VBQUFZQUl3
VUFBQVlDCkFBQUdBQzBGQUFBNkFRQUFCZ0JqQlFBQUNRRUFBQlFBYmdVQUFBb0JBQUFHQUowRkFB
QkpBUUFBRkFERUJRQUErd0FBQUFZQXp3VUEKQVA0QkFBQUdBQVFBQUFEMUFBQUFaQUFBQUFBQUFB
QUFBQUFBN0FVQUFEQUFBQUFVQUFBQUFBQUFBRnNUQUFBZ0FBZ0FCQUFBQUFzQQpBQURoQlFBQU1B
QUFBQlFBQUFBQUFBQUFPUnNBQUJVQURBQUFBQUFBRWdBQUFOb0ZBQUF3QUFBQUZBQUFBQUFBQUFD
aUd3QUFEZ0FRCkFBQUFBQUR4QUFBQXR3UUFBRlFBRUJFQUFBQUFBQUFBQUFBQUFBRHNCUUFBSUFB
QUFPSUZBQUFiRndBQUFBQUFBQUFBQUUxbFpHbGgKVTJoaGNtVmtWVWxVYVcxbGJHbHVaVk5zYVdS
bGNsUm9kVzFpUld4bGJXVnVkRG82Y0dGcGJuUUFIQUFTRURBQUFBQUFBQUFBQUFBQQpBQkFBQUFB
QUFBQUFBQUFBQWdBQURRQUdFUm9YQUFBU0FIUm9hWE1BRWdBTEVRUUFBQUFwRUFBQVkyOXVkR1Y0
ZEFBUEFBc1JDQUFBCkFBNFFBQUJ5WldOMEFCd0FEQkdFRndBQUFBQUFBQUFBY0hKbGMzTmxaRWR5
WVdScFpXNTBBQmtBREJFR0VRQUFBQUFBQUFBQWJtOXkKYldGc1EyOXNiM0p6QUJnQURCRzFFd0FB
QUFBQUFBQUFjMmhoWkc5M1EyOXNiM0lBRVFBTEVkRC8vLzlBQUFBQWNtRmthWFZ6QUJzQQpEQkdF
RndBQUFBQUFBQUFBYm05eWJXRnNSM0poWkdsbGJuUUFHQUFMRWRqLy8vOXRFZ0FBWjNKaFpHbGxi
blJNWVhsbGNnQWFBQXNSCnpQLy8veWtRQUFCbmNtRmthV1Z1ZEVOdmJuUmxlSFFBRndBTEVkRC8v
Lzl0RWdBQWJtOXRhVzVoYkV4aGVXVnlBQlVBQ3hIcy8vLy8KRGhBQUFHTnNhWEJDYjNWdVpITUFG
d0FMRWN6Ly8vOHBFQUFBYkdGNVpYSkRiMjUwWlhoMEFCb0FEQkVHRVFBQUFBQUFBQUFBY0hKbApj
M05sWkVOdmJHOXljd0FiQUF3UnRSTUFBQUFBQUFBQUFHaHBaMmhzYVdkb2RFTnZiRzl5QUE0QU9S
RkVBQUFBQUFBQUFJSVhBQUFPCkFEa1JYZ0FBQUFBQUFBQ0dGd0FBRGdBNUVZOEFBQUFBQUFBQWdo
Y0FBQTRBT1JHcEFBQUFBQUFBQUlZWEFBQU9BRGtSM2dBQUFBQUEKQUFDVEZ3QUFEZ0E1RVEwQkFB
QUFBQUFBa3hjQUFBNEFPUkZGQVFBQUFBQUFBRG9RQUFBT0FEa1JWd0VBQUFBQUFBQmlFZ0FBRGdB
NQpFVzRCQUFBQUFBQUFZaElBQUE0QU9SR0JBUUFBQUFBQUFISVNBQUFPQURrUmpBRUFBQUFBQUFC
MEVnQUFEZ0E1RWFZQkFBQUFBQUFBClloSUFBQTRBT1JIQUFRQUFBQUFBQUdJU0FBQU9BRGtSMUFF
QUFBQUFBQUJnRWdBQURnQTVFZWdCQUFBQUFBQUFZaElBQUE0QU9SSDkKQVFBQUFBQUFBSXdRQUFB
T0FEa1JKZ0lBQUFBQUFBQmdFZ0FBRGdBNUVVOENBQUFBQUFBQVlCSUFBQTRBT1JGNEFnQUFBQUFB
QUdBUwpBQUFPQURrUm9RSUFBQUFBQUFCZ0VnQUFEZ0E1RWF3Q0FBQUFBQUFBakJBQUFBNEFPUkcz
QWdBQUFBQUFBSXdRQUFBT0FEa1J6UUlBCkFBQUFBQUJpRWdBQURnQTVFZVFDQUFBQUFBQUFZaElB
QUE0QU9SSDdBZ0FBQUFBQUFHSVNBQUFPQURrUkVnTUFBQUFBQUFCaUVnQUEKRGdBNUVWTURBQUFB
QUFBQXBCY0FBQTRBT1JGaUF3QUFBQUFBQUhJU0FBQU9BRGtSYlFNQUFBQUFBQUIwRWdBQURnQTVF
WWNEQUFBQQpBQUFBWWhJQUFBNEFPUkdoQXdBQUFBQUFBR0lTQUFBT0FEa1J0UU1BQUFBQUFBQmdF
Z0FBRGdBNUVkZ0RBQUFBQUFBQWR4SUFBQTRBCk9SRXBCQUFBQUFBQUFIZ1NBQUFPQURrUk5BUUFB
QUFBQUFDTUVBQUFEZ0E1RVVRRUFBQUFBQUFBd3hjQUFBNEFPUkdBQkFBQUFBQUEKQUdJU0FBQU9B
RGtSbHdRQUFBQUFBQUJpRWdBQURnQTVFYjRFQUFBQUFBQUFZaElBQUE0QU9SSHRCQUFBQUFBQUFH
SVNBQUFPQURrUgpHUVVBQUFBQUFBQjFFZ0FBRGdBNUVXd0ZBQUFBQUFBQWpCQUFBQTRBT1JIQ0JR
QUFBQUFBQUhjU0FBQU9BRGtSelFVQUFBQUFBQUI0CkVnQUFEZ0E1RWVBRkFBQUFBQUFBUEJBQUFB
SUFCZ0FBOGdBQUFEZ0JBQUFBQUFBQUFBQUFBT3dGQUFBUUFnQUFKQUFBQUN3QkFBQUEKQUFBQUtB
SUFnQU1BQUFBckFnQ0FhQUFBQUN3Q0FJQ3pBQUFBTFFJQWdPZ0FBQUF1QWdDQUZ3RUFBREFDQUlC
SEFRQUFNZ0lBZ0hnQgpBQUF6QWdDQWh3RUFBRFFDQUlDU0FRQUFOZ0lBZ05vQkFBQTRBZ0NBOUFF
QUFEa0NBSUFEQWdBQU9nSUFnQ3dDQUFBN0FnQ0FWUUlBCkFEd0NBSUIrQWdBQVBRSUFnS2NDQUFB
K0FnQ0FzZ0lBQUVBQ0FJQzlBZ0FBUkFJQWdGa0RBQUJHQWdDQWFBTUFBRWNDQUlCekF3QUEKU1FJ
QWdMc0RBQUJLQWdDQTNnTUFBRXNDQUlBa0JBQUFUQUlBZ0M4RUFBQk9BZ0NBT2dRQUFFOENBSUJo
QkFBQVVBSUFnQjhGQUFCUwpBZ0NBWndVQUFGUUNBSUJ5QlFBQVZnSUFnSVFGQUFCWEFnQ0FxQVVB
QUZrQ0FJRElCUUFBV3dJQWdOTUZBQUJkQWdDQTRnVUFBRjRDCkFJQU1BQUFBL0FFQUFBY0FtQUFB
QVB3QkFBQUxBSndBQUFEOEFRQUFDZ0FvQVFBQUVnSUFBQXNBTEFFQUFCSUNBQUFLQUVZQkFBQVAK
QWdBQUN3QktBUUFBRHdJQUFBb0FZUUVBQUFZQ0FBQUxBR1VCQUFBR0FnQUFDZ0NPQVFBQURBSUFB
QXNBa2dFQUFBd0NBQUFLQUNvQwpBQUFWQWdBQUN3QXVBZ0FBRlFJQUFBb0FSZ0lBQUFrQ0FBQUxB
RW9DQUFBSkFnQUFDZ0JmQWdBQS9BRUFBQXNBWXdJQUFQd0JBQUFLCkFHOENBQUQ4QVFBQUN3QnpB
Z0FBL0FFQUFBb0Fmd0lBQVB3QkFBQUxBSU1DQUFEOEFRQUFDZ0NQQWdBQS9BRUFBQXNBa3dJQUFQ
d0IKQUFBS0FKOENBQUQ4QVFBQUN3Q2pBZ0FBL0FFQUFBb0Fyd0lBQVB3QkFBQUxBTE1DQUFEOEFR
QUFDZ0MvQWdBQS9BRUFBQXNBd3dJQQpBUHdCQUFBS0FNOENBQUQ4QVFBQUN3RFRBZ0FBL0FFQUFB
b0Ezd0lBQVB3QkFBQUxBT01DQUFEOEFRQUFDZ0R2QWdBQS9BRUFBQXNBCjh3SUFBUHdCQUFBS0FQ
OENBQUQ4QVFBQUN3QURBd0FBL0FFQUFBb0FEd01BQVB3QkFBQUxBQk1EQUFEOEFRQUFDZ0FmQXdB
QS9BRUEKQUFzQUl3TUFBUHdCQUFBS0FDOERBQUQ4QVFBQUN3QXpBd0FBL0FFQUFBb0FQd01BQVB3
QkFBQUxBRU1EQUFEOEFRQUFDZ0JQQXdBQQovQUVBQUFzQVV3TUFBUHdCQUFBS0FGOERBQUQ4QVFB
QUN3QmpBd0FBL0FFQUFBb0Fid01BQVB3QkFBQUxBSE1EQUFEOEFRQUFDZ0IvCkF3QUEvQUVBQUFz
QWd3TUFBUHdCQUFBS0FJOERBQUQ4QVFBQUN3Q1RBd0FBL0FFQUFBb0Fud01BQVB3QkFBQUxBS01E
QUFEOEFRQUEKQ2dDdkF3QUEvQUVBQUFzQXN3TUFBUHdCQUFBS0FMOERBQUQ4QVFBQUN3RERBd0FB
L0FFQUFBb0F6d01BQVB3QkFBQUxBTk1EQUFEOApBUUFBQ2dEZkF3QUEvQUVBQUFzQTR3TUFBUHdC
QUFBS0FPOERBQUQ4QVFBQUN3RHpBd0FBL0FFQUFBb0Evd01BQVB3QkFBQUxBQU1FCkFBRDhBUUFB
Q2dBUEJBQUEvQUVBQUFzQUV3UUFBUHdCQUFBS0FCOEVBQUQ4QVFBQUN3QWpCQUFBL0FFQUFBb0FM
d1FBQVB3QkFBQUwKQURNRUFBRDhBUUFBQ2dBL0JBQUEvQUVBQUFzQVF3UUFBUHdCQUFBS0FFOEVB
QUQ4QVFBQUN3QlRCQUFBL0FFQUFBb0FYd1FBQVB3QgpBQUFMQUdNRUFBRDhBUUFBQ2dCdkJBQUEv
QUVBQUFzQWN3UUFBUHdCQUFBS0FIOEVBQUQ4QVFBQUN3Q0RCQUFBL0FFQUFBb0Fqd1FBCkFQd0JB
QUFMQUpNRUFBRDhBUUFBQ2dDZkJBQUEvQUVBQUFzQW93UUFBUHdCQUFBS0FLOEVBQUQ4QVFBQUN3
Q3pCQUFBL0FFQUFBb0EKdndRQUFQd0JBQUFMQU1NRUFBRDhBUUFBQ2dEUEJBQUEvQUVBQUFzQTB3
UUFBUHdCQUFBS0FOOEVBQUQ4QVFBQUN3RGpCQUFBL0FFQQpBQW9BN3dRQUFQd0JBQUFMQVBNRUFB
RDhBUUFBQ2dEL0JBQUEvQUVBQUFzQUF3VUFBUHdCQUFBS0FBOEZBQUQ4QVFBQUN3QVRCUUFBCi9B
RUFBQW9BSHdVQUFQd0JBQUFMQUNNRkFBRDhBUUFBQ2dBNEJRQUEvQUVBQUFzQVBBVUFBUHdCQUFB
S0FNZkd4ajRBQUlBL2taQVEKUHdBQWdEK2hvQ0EvQUFDQVA5N2RYVDhBQUlBL1U0dGNKQlJWaTJ3
a0hGYUxkQ1FVVjR0OEpCeUQ3QkNMeElrd2lYZ0VpVmdJaVdnTQoveFVBQUFBQTNBVUFBQUFBaThT
Sk1JbDRCTmxjSkNpSldBaUphQXovRlFBQUFBRGNCUUFBQUFDTHhJa3dpWGdFMlZ3a0xJbFlDSWxv
CkRQOFZBQUFBQU53bEFBQUFBSXRFSkNTTFRDUW9pMVFrTE5sY0pERFpCUUFBQUFDRHhCQmYyVndr
SUlrSWkwd2tISWxRQkl0VUpDQmUKWFlsSUNJbFFERnZDRkFBbUFBQUFXd0VBQUFZQUxBQUFBQ01D
QUFBR0FFTUFBQUFRQVFBQUJnQkpBQUFBeUFFQUFBWUFZQUFBQUdnQgpBQUFHQUdZQUFBQWdBZ0FB
QmdCOEFBQUFyQUFBQUFZQUJBQUFBUFVBQUFCa0FBQUFBQUFBQUFBQUFBQ2hBQUFBQUFBQUFCUUFB
QUFBCkFBQUFXeE1BQUJBQUNBQUVBQUFBQVFBQUFLQUFBQUFBQUFBQUZBQUFBQUFBQUFCWUdnQUFE
d0FNQUFBQUFBQUdBQUFBbXdBQUFBQUEKQUFBVUFBQUFBQUFBQU1BYUFBQUtBQkFBQUFBQUFQRUFB
QURPQUFBQVdBQVFFUUFBQUFBQUFBQUFBQUFBQUtFQUFBQVFBQUFBZ3dBQQpBQTRYQUFBQUFBQUFB
QUFBVFdWa2FXRlRhR0Z5WldSVlNWUnBiV1ZzYVc1bFUyeHBaR1Z5T2pwMGFXMWxiR2x1WlZKbFkz
UkdiM0pDCmIzVnVaSE1BSEFBU0VBQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUFBQUFBQWdBQURR
QUdFUXdYQUFBU0FIUm9hWE1BRVFBTEVRZ0EKQUFBT0VBQUFZbTkxYm1SekFBNEFPUkVrQUFBQUFB
QUFBR0lTQUFBT0FEa1JRUUFBQUFBQUFBQmlFZ0FBRGdBNUVWNEFBQUFBQUFBQQpZaElBQUFJQUJn
QUFBUElBQUFBd0FBQUFBQUFBQUFBQUFBQ2hBQUFBRUFJQUFBTUFBQUFrQUFBQUFBQUFBR0lDQUlB
QkFBQUFaZ0lBCmdJTUFBQUJuQWdDQURBQUFBQjBDQUFBSEFKZ0FBQUFkQWdBQUN3Q2NBQUFBSFFJ
QUFBb0FGZ0VBQUIwQ0FBQUxBQm9CQUFBZEFnQUEKQ2dBbUFRQUFIUUlBQUFzQUtnRUFBQjBDQUFB
S0FEWUJBQUFkQWdBQUN3QTZBUUFBSFFJQUFBb0FVQUVBQUIwQ0FBQUxBRlFCQUFBZApBZ0FBQ2dB
QUFBQUFBQUFnUUFBQUFBQUFBQkJBZyt3ODJlNVQzRkVZVlZaWGlVd2tFTi9nOXNSRWV3amRRUkRj
Y1JqckF0bkEyZWplCjRkMVVKQlRhNmQvZzlzUkVENHVDQXdBQXVBRUFBQUNFQlFBQUFBQjFKdGtG
QUFBQUFBa0ZBQUFBQUlQc0NObGNKQVRaNk5rY0pQOFYKQUFBQUFJUEVDS01BQUFBQWkzUWtWSXQ4
SkZpTFhDUmNpMndrWUl0TUpCQ0Q3QkNMeElrd2lYZ0VpVmdJaVdnTWpVUWtMRkRvQUFBQQpBTm51
aTB3a0VObkEzRmtZMytEMnhFUjdDTjNZM1VFUTNIRVlpMHdrSE4xY0pGU0xWQ1FnZyt3UWk4U0pD
SXRNSkRTSlVBU0xWQ1E0CmlVZ0lpVkFNL3hVQUFBQUEzRXdrWkl0TUpDeUxWQ1F3aThUZFhDUmtp
UWlMVENRMGlWQUVpMVFrT0lsSUNJbFFEUDhWQUFBQUFOeEUKSkdTTHhJa3dpWGdFMlZ3a1RJbFlD
SWxvRFA4VkFBQUFBTmxjSkZDTFRDUXNpMVFrTUl2RWlRaUxUQ1EwaVZBRWkxUWtPSWxJQ0lsUQpE
UDhWQUFBQUFOeE1KQ1NMeElrd2lYZ0UyVndrVklsWUNJbG9EUDhWQUFBQUFObGNKRmpaNkl0TUpG
Q0xSQ1JNMlZRa1pJdFVKRlRaClhDUm9pVVFrUEl0RUpGaUpUQ1JBaTB3a2FJbFVKRVNMVkNSa1VZ
bEVKRXlMUkNSa1VsRC9GUUFBQUFDTFRDUllpVVFrY05sRUpIRGMKRFFBQUFBQ0R4QXlMeElsVUpH
aUxWQ1JRMlZ3a1pJa0lpVkFFaTB3a1ZJdFVKRmlKU0FpSlVBei9GUUFBQUFEZFhDUWtpMHdrTEl0
VQpKRENMeElrSWkwd2tOSWxRQkl0VUpEaUpTQWlKVUF6L0ZRQUFBQURZUkNSa2c4UVEzRndrRk4v
ZzlzUUJkVVRaUkNROGcrd1FpOFRkClhDUWtpVENKZUFTSldBaUphQXovRlFBQUFBRGNiQ1FraThT
Sk1OaEVKRlNKZUFTSldBaUphQXpaWENSRS94VUFBQUFBMlZ3a1BJUEUKRUl0TUpDeUxWQ1F3Zyt3
UWk4U0pDSXRNSkVTSlVBU0xWQ1JJaVVnSWlWQU0veFVBQUFBQTNWd2tKSXRNSkN5TFZDUXdpOFNK
Q0l0TQpKRFNKVUFTTFZDUTRpVWdJaVZBTS94VUFBQUFBMkdRa1pJUEVFTnhjSkJUZjRQYkVRWG9o
Zyt3UWk4U0pNSWw0QklsWUNJbG9EUDhWCkFBQUFBTmhrSkR5RHhCRFpYQ1EwaTBRa1VGRC9GUUFB
QUFDRDdBeUx4SWt3aVhnRWlWZ0lpV2dNL3hVQUFBQUEyVndrWkl2RWlUQ0oKZUFTSldBaUphQXov
RlFBQUFBRGNCUUFBQUFDTHhJa3czQVVBQUFBQWlYZ0VpVmdJaVdnTTJWd2thUDhWQUFBQUFJdFVK
R2paWENScwoyUVVBQUFBQWkzUWtZRkhaWENSMDJRVUFBQUFBaTB3a2FJdkUyVndrRUlrSWkwd2tj
SWxRQkl0VUpIU0pTQWhXaVZBTTZBQUFBQUJXCi94VUFBQUFBb1FBQUFBQlFWdjhWQUFBQUFJdE1K
RkNMVkNSVWc4UVVpOFNKQ0l0TUpFU0pVQVNMVkNSSWlVZ0lWb2xRRFA4VkFBQUEKQUlQRUZGOWVY
VnVEeER6Q0ZBQTlBQUFBTmdJQUFBWUFSUUFBQURNQ0FBQUdBRXNBQUFBMkFnQUFCZ0JkQUFBQVBn
RUFBQVlBWlFBQQpBREFDQUFBR0FKTUFBQUFkQWdBQUZBRFhBQUFBYUFFQUFBWUFBZ0VBQUZzQkFB
QUdBQjBCQUFBUUFRQUFCZ0JFQVFBQWFBRUFBQVlBClh3RUFBR2tCQUFBR0FLSUJBQUF0QWdBQUJn
QzBBUUFBWUFFQUFBWUEzZ0VBQUZzQkFBQUdBQVVDQUFCYkFRQUFCZ0ExQWdBQVd3RUEKQUFZQVZB
SUFBRnNCQUFBR0FJRUNBQUFzQWdBQUJnQ29BZ0FBTEFJQUFBWUEwQUlBQUN3Q0FBQUdBT1lDQUFB
REFnQUFCZ0Q4QWdBQQpXd0VBQUFZQUV3TUFBQkFCQUFBR0FCa0RBQURJQVFBQUJnQWpBd0FBeXdF
QUFBWUFOZ01BQUdnQkFBQUdBRVFEQUFBckFnQUFCZ0JUCkF3QUF4QUFBQUFZQWRnTUFBRzRCQUFB
VUFIMERBQUQvQVFBQUJnQ0NBd0FBTUFJQUFBWUFpZ01BQUM0QkFBQUdBTEVEQUFBc0FRQUEKQmdB
RUFBQUE5UUFBQUdRQUFBQUFBQUFBQUFBQUFNSURBQUE4QUFBQUZBQUFBQUFBQUFCYkV3QUFFQUFJ
QUFRQUFBQUdBQUFBdkFNQQpBRHdBQUFBVUFBQUFBQUFBQUIwY0FBQUtBQXdBQUFBQUFBb0FBQUM0
QXdBQVBBQUFBQlFBQUFBQUFBQUFoaHdBQUFZQUVBQUFBQUFBCjhRQUFBSFlDQUFCWkFCQVJBQUFB
QUFBQUFBQUFBQUFBd2dNQUFCQUFBQUM0QXdBQURSY0FBQUFBQUFBQUFBQk5aV1JwWVZOb1lYSmwK
WkZWSlZHbHRaV3hwYm1WVGJHbGtaWEk2T21ocFoyaHNhV2RvZEZWdWJHOWhaR1ZrVW1GdVoyVUFI
QUFTRUR3QUFBQUFBQUFBQUFBQQpBQkFBQUFBQUFBQUFBQUFBQWdBQURRQUdFUXdYQUFBU0FIUm9h
WE1BRWdBTEVRUUFBQUFwRUFBQVkyOXVkR1Y0ZEFBUEFBc1JDQUFBCkFBNFFBQUJ5WldOMEFCb0FE
QkcxRXdBQUFBQUFBQUFBWjNKaGVVWnBiR3hEYjJ4dmNnQVBBQXNSQ0FBQUFFQUFBQUJ6Ykc5d0FC
d0EKQ3hIRS8vLy9RUUFBQUdaeVlXTjBhVzl1VW1WdFlXbHVhVzVuQUJVQUN4SGMvLy8vRGhBQUFH
eHZZV1JsWkZKbFkzUUFFUUFMRWN6LwovLzhPRUFBQVltOTFibVJ6QUE0QU9SRmJBQUFBQUFBQUFK
TVhBQUFPQURrUjFRQUFBQUFBQUFCaUVnQUFEZ0E1RVFBQkFBQUFBQUFBClloSUFBQTRBT1JFYkFR
QUFBQUFBQUdJU0FBQU9BRGtSUWdFQUFBQUFBQUJpRWdBQURnQTVFVjBCQUFBQUFBQUFZaElBQUE0
QU9SR2cKQVFBQUFBQUFBSGtYQUFBT0FEa1IzQUVBQUFBQUFBQmlFZ0FBRGdBNUVRTUNBQUFBQUFB
QVloSUFBQTRBT1JFekFnQUFBQUFBQUdJUwpBQUFPQURrUlVnSUFBQUFBQUFCaUVnQUFEZ0E1RVg4
Q0FBQUFBQUFBWWhJQUFBNEFPUkdtQWdBQUFBQUFBR0lTQUFBT0FEa1J6Z0lBCkFBQUFBQUJpRWdB
QURnQTVFZVFDQUFBQUFBQUFqQkFBQUE0QU9SSDZBZ0FBQUFBQUFHSVNBQUFPQURrUkVRTUFBQUFB
QUFCaUVnQUEKRGdBNUVUUURBQUFBQUFBQVloSUFBQTRBT1JGN0F3QUFBQUFBQUl3UUFBQU9BRGtS
aUFNQUFBQUFBQUNQRndBQURnQTVFYThEQUFBQQpBQUFBZFJJQUFBSUFCZ0FBQVBJQUFBQ3dBQUFB
QUFBQUFBQUFBQURDQXdBQUVBSUFBQk1BQUFDa0FBQUFBQUFBQUdvQ0FJQURBQUFBCmF3SUFnQ2tB
QUFCc0FnQ0FOZ0FBQUc4Q0FJQnBBQUFBY0FJQWdKY0FBQUJ5QWdDQVp3RUFBSE1DQUlDbUFRQUFk
UUlBZ0JzQ0FBQjIKQWdDQVBRSUFBSGNDQUlCZkFnQUFlZ0lBZ0w0Q0FBQjdBZ0NBM3dJQUFIMENB
SURxQWdBQWZnSUFnRG9EQUFCL0FnQ0FlZ01BQUlFQwpBSUNCQXdBQWdnSUFnSTREQUFDREFnQ0F1
QU1BQUlRQ0FJQU1BQUFBS0FJQUFBY0FtQUFBQUNnQ0FBQUxBSndBQUFBb0FnQUFDZ0F0CkFRQUFN
QUlBQUFzQU1RRUFBREFDQUFBS0FKNEJBQUFvQWdBQUN3Q2lBUUFBS0FJQUFBb0FyZ0VBQUNnQ0FB
QUxBTElCQUFBb0FnQUEKQ2dDK0FRQUFLQUlBQUFzQXdnRUFBQ2dDQUFBS0FNNEJBQUFvQWdBQUN3
RFNBUUFBS0FJQUFBb0EzZ0VBQUNnQ0FBQUxBT0lCQUFBbwpBZ0FBQ2dEdUFRQUFLQUlBQUFzQThn
RUFBQ2dDQUFBS0FQNEJBQUFvQWdBQUN3QUNBZ0FBS0FJQUFBb0FEZ0lBQUNnQ0FBQUxBQklDCkFB
QW9BZ0FBQ2dBZUFnQUFLQUlBQUFzQUlnSUFBQ2dDQUFBS0FDNENBQUFvQWdBQUN3QXlBZ0FBS0FJ
QUFBb0FQZ0lBQUNnQ0FBQUwKQUVJQ0FBQW9BZ0FBQ2dCT0FnQUFLQUlBQUFzQVVnSUFBQ2dDQUFB
S0FGNENBQUFvQWdBQUN3QmlBZ0FBS0FJQUFBb0FiZ0lBQUNnQwpBQUFMQUhJQ0FBQW9BZ0FBQ2dC
K0FnQUFLQUlBQUFzQWdnSUFBQ2dDQUFBS0FJNENBQUFvQWdBQUN3Q1NBZ0FBS0FJQUFBb0FuZ0lB
CkFDZ0NBQUFMQUtJQ0FBQW9BZ0FBQ2dDdUFnQUFLQUlBQUFzQXNnSUFBQ2dDQUFBS0FMNENBQUFv
QWdBQUN3RENBZ0FBS0FJQUFBb0EKemdJQUFDZ0NBQUFMQU5JQ0FBQW9BZ0FBQ2dEZUFnQUFLQUlB
QUFzQTRnSUFBQ2dDQUFBS0FQZ0NBQUFvQWdBQUN3RDhBZ0FBS0FJQQpBQW9BQUFBUVFRQUFnRDZE
N0N4VFZWYTRBUUFBQUlRRkFBQUFBSXZ4VjRsMEpDQzdBZ0FBQUhWSENRVUFBQUFBaEFVQUFBQUFk
UndKCkJRQUFBQUNoQUFBQUFJc0lVZjhWQUFBQUFJUEVCS01BQUFBQWl4VUFBQUFBVTJvQWFBQUFB
QUJTL3hVQUFBQUFnOFFRb3dBQUFBQ0UKSFFBQUFBQ0xQUUFBQUFCMUl0a0ZBQUFBQUFrZEFBQUFB
SVBzQ05sY0pBVFo3dGtjSlAvWGc4UUlvd0FBQUFDNEJBQUFBSVFGQUFBQQpBSFVpMlFVQUFBQUFD
UVVBQUFBQWcrd0kyVndrQk5ubzJSd2svOWVEeEFpakFBQUFBSXNXaTF3a1JJdHNKRWlMZENSTWkz
d2tVSXRNCkpDQ0xVaENEN0JDTHhJa1lpV2dFaVhBSWlYZ01pMFFrVUZELzBvUHNFSXZFaVJpSmFB
U0pjQWlKZUF6L0ZRQUFBQURaWENROGk4U0oKR0lsb0JJbHdDSWw0RFA4VkFBQUFBTndGQUFBQUFJ
dkVpUmpjQlFBQUFBQ0phQVNKY0FpSmVBelpYQ1JBL3hVQUFBQUFpMFFrVU5sYwpKRVRaQlFBQUFB
Q0xiQ1JFYWdEWlhDUk1pMXdrVEZOVlVQOFZBQUFBQUZDSlJDUTQveFVBQUFBQWkwd2tVSXRVSkZT
RHhCU0pSQ1FnCmk4U0pDSWxRQklsb0NJbFlEUDhWQUFBQUFObmdpMVFrUUZHTFRDUkEyVndrRUl2
RWlRaUpVQVNKYUFpSldBei9GUUFBQUFEWjRJdEUKSkNUWlhDUU1nOFFNVVA4VkFBQUFBSVBzQ05r
RkFBQUFBSXRNSkVDTFZDUkUyVndrRUl2RWlRaUpVQVNKYUFpSldBeUxSQ1FrVU9nQQpBQUFBaTB3
a0tGSC9GUUFBQUFDTFZDUklpMHdrVElQRURJdkVpUkNKU0FTSmFBaUpXQXovRlFBQUFBRFpYQ1Fv
aTFRa1BJdE1KRUNMCnhJa1FpVWdFaVdnSWlWZ00veFVBQUFBQTJWd2tMSXRVSkR5TFRDUkFpOFNK
RUlsSUJJbG9DSWxZRFA4VkFBQUFBTmxjSkRTTFZDUTgKaTB3a1FJdkVpUkNKU0FTSmFBaUpXQXov
RlFBQUFBRFpYQ1E0aTFRa0xJdEVKQ2lMVENRNGFnQlNpMVFrUEZDaEFBQUFBRkdMVENRdwpVbEJS
L3hVQUFBQUFpMVFrYkdvQVYxWlMveFVBQUFBQVVJbEVKRmovRlFBQUFBQ0xqQ1NFQUFBQWc4UkFn
K3dRaVVRa0lJdkVpUWlMClZDUllpVkFFaVhBSWlYZ00veFVBQUFBQTJlQ0xWQ1JZVVl0TUpGalpY
Q1FRaThTSkNJbFFCSWx3Q0lsNERQOFZBQUFBQU5uZ2kwUWsKSk5sY0pBeUR4QXhRL3hVQUFBQUFp
MHdrSUl0VUpEaUR4QXhSaTB3a05JUHNFSXZFaVJDTFZDUWtpVWdFaVdnSVVvbFlEUDhWQUFBQQpB
Tm51b1FBQUFBRFpWQ1E4MlFVQUFBQUFpMVFrUElQRUdObGNKQ2hRaTBRa0dGR0xUQ1F3MlJ3a1VZ
dE1KRGhTaTFRa1FGQ0Q3QkNMCnhJa0lpVkFFaVdnSWlWZ01pMFFrTk9nQUFBQUFpMFFrT0ZEL0ZR
QUFBQURaN29zTkFBQUFBTmxVSkV6WkJRQUFBQUNMUkNSTWc4UW8KMlZ3a0tJdFVKQ2hSVVl0TUpD
RFpIQ1JTVUZHRDdCQ0x4SXRzSkdpTFZDUnNpMXdrWklrb2lWQUVpWEFJaVhnTWk4UG9BQUFBQUl0
RQpKRHlMVENSc2c4UWtVSVBzRUl2RWlTaUpTQVNKY0FoVGlYZ00veFVBQUFBQWkxUWtNRkwvRlFB
QUFBQ0xUQ1JrZzhRTWk4U0pLSWxJCkJJbHdDSXQwSkRCVGk4NkplQXpvQUFBQUFJc1dpMElVVTR2
Ty85QmZYbDFiZzhRc3doUUFEUUFBQUZBQ0FBQUdBQ0VBQUFCUUFnQUEKQmdBbkFBQUFJd0VBQUFZ
QUx3QUFBQ01CQUFBR0FEUUFBQUFnQVFBQUJnQTlBQUFBSHdFQUFBWUFSUUFBQUI0QkFBQUdBRXNB
QUFBZQpBUUFBQmdCVEFBQUFUUUlBQUFZQVdnQUFBQnNCQUFBR0FHSUFBQUJLQWdBQUJnQm9BQUFB
VUFJQUFBWUFiZ0FBQUQ0QkFBQUdBSFlBCkFBQkhBZ0FBQmdCOEFBQUFVQUlBQUFZQWtnQUFBRVFD
QUFBR0FKMEFBQUJRQWdBQUJnQ2xBQUFBUVFJQUFBWUFxd0FBQUZBQ0FBQUcKQU1FQUFBQStBZ0FB
QmdBSEFRQUFXd0VBQUFZQUhnRUFBQkFCQUFBR0FDUUJBQURJQVFBQUJnQXVBUUFBeXdFQUFBWUFR
UUVBQUdnQgpBQUFHQUU4QkFBQXJBZ0FBQmdCbUFRQUEzZ0FBQUFZQWNRRUFBTjBBQUFBR0FKTUJB
QUFRQVFBQUJnQzFBUUFBV3dFQUFBWUF5UUVBCkFQSUFBQUFHQU5JQkFBREVBQUFBQmdEMUFRQUFi
Z0VBQUJRQUFBSUFBUDhCQUFBR0FCNENBQUJaQVFBQUJnQTlBZ0FBRVFFQUFBWUEKWEFJQUFGa0JB
QUFHQUhzQ0FBQVFBUUFBQmdDWUFnQUFTZ0lBQUFZQXBnSUFBRmdCQUFBR0FMVUNBQURlQUFBQUJn
REFBZ0FBM1FBQQpBQVlBNkFJQUFCQUJBQUFHQUFvREFBQmJBUUFBQmdBZUF3QUE4Z0FBQUFZQVNR
TUFBUHNBQUFBR0FGQURBQUJFQWdBQUJnQmFBd0FBCk9nRUFBQVlBbGdNQUFDZ0JBQUFVQUtFREFB
RCtBUUFBQmdDcEF3QUFQZ0lBQUFZQXN3TUFBRG9CQUFBR0FQRURBQUFKQVFBQUZBQVUKQkFBQSt3
QUFBQVlBSHdRQUFQNEJBQUFHQUQ4RUFBQW9BZ0FBRkFBRUFBQUE5UUFBQUdRQUFBQUFBQUFBQUFB
QUFGY0VBQUFzQUFBQQpGQUFBQUFBQUFBQmJFd0FBR0FBSUFBUUFBQUFFQUFBQVV3UUFBQ3dBQUFB
VUFBQUFBQUFBQUY4V0FBQVVBQXdBQUFBQUFBVUFBQUJTCkJBQUFMQUFBQUJRQUFBQUFBQUFBQVIw
QUFCTUFFQUFBQUFBQThRQUFBRVVEQUFCSUFCQVJBQUFBQUFBQUFBQUFBQUFBVndRQUFCZ0EKQUFC
TkJBQUFDUmNBQUFBQUFBQUFBQUJOWldScFlWTm9ZWEpsWkZWSlZHbHRaV3hwYm1WVGJHbGtaWEk2
T25CaGFXNTBBQndBRWhBcwpBQUFBQUFBQUFBQUFBQUFRQUFBQUFBQUFBQUFBQUFJQUFBMEFCaEVJ
RndBQUVnQjBhR2x6QUJJQUN4RUVBQUFBS1JBQUFHTnZiblJsCmVIUUFEd0FMRVFnQUFBQU9FQUFB
Y21WamRBQWZBQXdSaEJjQUFBQUFBQUFBQUdKaFkydG5jbTkxYm1SSGNtRmthV1Z1ZEFBWUFBd1IK
dFJNQUFBQUFBQUFBQUhOb1lXUnZkME52Ykc5eUFCZ0FDeEhVLy8vL2JSSUFBR2R5WVdScFpXNTBU
R0Y1WlhJQUdnQUxFZEQvLy84cApFQUFBWjNKaFpHbGxiblJEYjI1MFpYaDBBQmNBQ3hIWS8vLy9i
UklBQUc1dmJXbHVZV3hNWVhsbGNnQVRBQXdSQmhFQUFBQUFBQUFBCkFHTnZiRzl5Y3dBWEFBc1Iw
UC8vL3lrUUFBQnNZWGxsY2tOdmJuUmxlSFFBR3dBTUViVVRBQUFBQUFBQUFBQm9hV2RvYkdsbmFI
UkQKYjJ4dmNnQU9BRGtST3dBQUFBQUFBQUNDRndBQURnQTVFVmdBQUFBQUFBQUFoaGNBQUE0QU9S
R01BQUFBQUFBQUFKTVhBQUFPQURrUgp1d0FBQUFBQUFBQ1RGd0FBRGdBNUVmTUFBQUFBQUFBQU9o
QUFBQTRBT1JFRkFRQUFBQUFBQUdJU0FBQU9BRGtSSEFFQUFBQUFBQUJpCkVnQUFEZ0E1RVQ4QkFB
QUFBQUFBWWhJQUFBNEFPUkZrQVFBQUFBQUFBSElTQUFBT0FEa1Jid0VBQUFBQUFBQjBFZ0FBRGdB
NUVaRUIKQUFBQUFBQUFZaElBQUE0QU9SR3pBUUFBQUFBQUFHSVNBQUFPQURrUnh3RUFBQUFBQUFC
Z0VnQUFEZ0E1RWY0QkFBQUFBQUFBakJBQQpBQTRBT1JFY0FnQUFBQUFBQUdJU0FBQU9BRGtST3dJ
QUFBQUFBQUJpRWdBQURnQTVFVm9DQUFBQUFBQUFZaElBQUE0QU9SRjVBZ0FBCkFBQUFBR0lTQUFB
T0FEa1JwQUlBQUFBQUFBQ2tGd0FBRGdBNUViTUNBQUFBQUFBQWNoSUFBQTRBT1JHK0FnQUFBQUFB
QUhRU0FBQU8KQURrUjVnSUFBQUFBQUFCaUVnQUFEZ0E1RVFnREFBQUFBQUFBWWhJQUFBNEFPUkVj
QXdBQUFBQUFBR0FTQUFBT0FEa1JSd01BQUFBQQpBQUIzRWdBQURnQTVFWjhEQUFBQUFBQUFlQklB
QUE0QU9SRVNCQUFBQUFBQUFIY1NBQUFPQURrUkhRUUFBQUFBQUFCNEVnQUFEZ0E1CkVVc0VBQUFB
QUFBQVBCQUFBQUlBQmdBQUFBRHlBQUFBMkFBQUFBQUFBQUFBQUFBQVZ3UUFBQkFDQUFBWUFBQUF6
QUFBQUFBQUFBQ0gKQWdDQUJnQUFBSWtDQUlCbUFBQUFpZ0lBZ0pZQUFBQ0xBZ0NBeFFBQUFJMENB
SUQxQUFBQWp3SUFnRVVCQUFDUkFnQ0FhZ0VBQUpJQwpBSUIxQVFBQWxBSUFnTTBCQUFDV0FnQ0Er
UUVBQUpnQ0FJQUVBZ0FBbXdJQWdLb0NBQUNkQWdDQXVRSUFBSjRDQUlERUFnQUFvQUlBCmdDSURB
QUNpQWdDQVRRTUFBS1FDQUlDYUF3QUFwZ0lBZ0tVREFBQ29BZ0NBOVFNQUFLb0NBSUFZQkFBQXJB
SUFnQ01FQUFDdUFnQ0EKUXdRQUFMQUNBSUJOQkFBQXNRSUFnQXdBQUFBN0FnQUFCd0NZQUFBQU93
SUFBQXNBbkFBQUFEc0NBQUFLQUJ3QkFBQktBZ0FBQ3dBZwpBUUFBU2dJQUFBb0FQUUVBQUVRQ0FB
QUxBRUVCQUFCRUFnQUFDZ0NtQVFBQVRRSUFBQXNBcWdFQUFFMENBQUFLQU5RQkFBQStBZ0FBCkN3
RFlBUUFBUGdJQUFBb0E3UUVBQURzQ0FBQUxBUEVCQUFBN0FnQUFDZ0Q5QVFBQU93SUFBQXNBQVFJ
QUFEc0NBQUFLQUEwQ0FBQTcKQWdBQUN3QVJBZ0FBT3dJQUFBb0FIUUlBQURzQ0FBQUxBQ0VDQUFB
N0FnQUFDZ0F0QWdBQU93SUFBQXNBTVFJQUFEc0NBQUFLQUQwQwpBQUE3QWdBQUN3QkJBZ0FBT3dJ
QUFBb0FUUUlBQURzQ0FBQUxBRkVDQUFBN0FnQUFDZ0JkQWdBQU93SUFBQXNBWVFJQUFEc0NBQUFL
CkFHMENBQUE3QWdBQUN3QnhBZ0FBT3dJQUFBb0FmUUlBQURzQ0FBQUxBSUVDQUFBN0FnQUFDZ0NO
QWdBQU93SUFBQXNBa1FJQUFEc0MKQUFBS0FKMENBQUE3QWdBQUN3Q2hBZ0FBT3dJQUFBb0FyUUlB
QURzQ0FBQUxBTEVDQUFBN0FnQUFDZ0M5QWdBQU93SUFBQXNBd1FJQQpBRHNDQUFBS0FNMENBQUE3
QWdBQUN3RFJBZ0FBT3dJQUFBb0EzUUlBQURzQ0FBQUxBT0VDQUFBN0FnQUFDZ0R0QWdBQU93SUFB
QXNBCjhRSUFBRHNDQUFBS0FQMENBQUE3QWdBQUN3QUJBd0FBT3dJQUFBb0FEUU1BQURzQ0FBQUxB
QkVEQUFBN0FnQUFDZ0FkQXdBQU93SUEKQUFzQUlRTUFBRHNDQUFBS0FDMERBQUE3QWdBQUN3QXhB
d0FBT3dJQUFBb0FQUU1BQURzQ0FBQUxBRUVEQUFBN0FnQUFDZ0JOQXdBQQpPd0lBQUFzQVVRTUFB
RHNDQUFBS0FGMERBQUE3QWdBQUN3QmhBd0FBT3dJQUFBb0FiUU1BQURzQ0FBQUxBSEVEQUFBN0Fn
QUFDZ0I5CkF3QUFPd0lBQUFzQWdRTUFBRHNDQUFBS0FJMERBQUE3QWdBQUN3Q1JBd0FBT3dJQUFB
b0FuUU1BQURzQ0FBQUxBS0VEQUFBN0FnQUEKQ2dDdEF3QUFPd0lBQUFzQXNRTUFBRHNDQUFBS0FN
Z0RBQUE3QWdBQUN3RE1Bd0FBT3dJQUFBb0FDdGVqUFhzVUxqL2g0T0E4bXBtWgpQZ05mYmp3bEJp
RS9nK3dnVTFWV3VBRUFBQUNFQlFBQUFBQ0w4VmVKZENRVWRVZ0pCUUFBQUFDRUJRQUFBQUIxSEFr
RkFBQUFBS0VBCkFBQUFpd2hSL3hVQUFBQUFnOFFFb3dBQUFBQ0xGUUFBQUFCcUEyb0FhQUFBQUFC
Uy94VUFBQUFBZzhRUW93QUFBQUM0QWdBQUFJUUYKQUFBQUFIVW0yUVVBQUFBQUNRVUFBQUFBZyt3
STJWd2tCTm5vMlJ3ay94VUFBQUFBZzhRSW93QUFBQUNMRm90OEpEaUxYQ1E4aTJ3awpRSXQwSkVT
TFRDUVVpMUlRZyt3UWk4U0pPSWxZQklsb0NJbHdESXRFSkVSUS85SnFBSVBzRUl2RWlUaUpXQVNK
YUFpSmNBeUxSQ1JJCjZBQUFBQUJRaVVRa0tQOFZBQUFBQUl2d1Z2OFZBQUFBQU5rRkFBQUFBSXRN
SkdEWlhDUVlnOFFJaThTSk9JbFlCSWxvQ0ZhSlNBem8KQUFBQUFGYi9GUUFBQUFDTFZDUmdnOFFN
aThTSk9JbFlCSWxvQ0lsUURQOFZBQUFBQU5sY0pDalo3b3RNSkZTTHhObGNKQ3lKT0lsWQpCSWxv
Q0lsSURQOFZBQUFBQU5sY0pEQ0xWQ1FzMmU2TFJDUW8yVndrTkl0TUpEUnFBRktMVkNRNFVLRUFB
QUFBVVZKUVZ2OFZBQUFBCkFGYi9GUUFBQUFDRHhCalpCUUFBQUFDTFRDUmMyVlFrRkl2RTJWd2tF
SWs0aVZnRWpWUWtPSWxvQ0ZLSlNBei9GUUFBQUFEWkJRQUEKQUFDTEVObGNKQmlEeEFpTHpJa1Jp
MUFFaVZFRWkxQUlpMEFNaVZFSVZvbEJET2dBQUFBQTJRVUFBQUFBZzhRUTJWd2tCTm51MlJ3awpW
djhWQUFBQUFObm9nOFFJMlJ3a1Z2OFZBQUFBQUZiL0ZRQUFBQURaN29zTkFBQUFBTmxVSkN6WkJR
QUFBQUNMUkNRc2kzUWtRTmxjCkpEQ0xWQ1F3ZzhRTVVWR0xUQ1FZMlJ3a1VvdFVKRkJRVVlQc0VJ
dkVpVGlKV0FTSmFBaUpVQXlMeHVnQUFBQUFpMFFrTkl0TUpHaUQKeENSUWcrd1FpOFNKT0lsWUJJ
bG9DRmFKU0F6L0ZRQUFBQUNMVkNRb1V2OFZBQUFBQUlQRUhJdE1KQlNMQVl0UUZGYi8wbDllWFZ1
RAp4Q0RDRkFBTkFBQUFhQUlBQUFZQUhBQUFBR2dDQUFBR0FDSUFBQUFqQVFBQUJnQXFBQUFBSXdF
QUFBWUFMd0FBQUNBQkFBQUdBRGdBCkFBQWZBUUFBQmdCQUFBQUFIZ0VBQUFZQVJnQUFBQjRCQUFB
R0FFOEFBQUJsQWdBQUJnQldBQUFBR3dFQUFBWUFYZ0FBQUdJQ0FBQUcKQUdrQUFBQm9BZ0FBQmdC
eEFBQUFNd0lBQUFZQWR3QUFBR2dDQUFBR0FJa0FBQUErQVFBQUJnQ1JBQUFBWHdJQUFBWUEzQUFB
QVBFQQpBQUFVQU9jQUFBRGRBQUFBQmdEd0FBQUFGUUVBQUFZQTlnQUFBTVFBQUFBR0FCUUJBQUJ1
QVFBQUZBQWJBUUFBL3dFQUFBWUFOUUVBCkFDd0NBQUFHQUZZQkFBQmJBUUFBQmdCNUFRQUFZZ0lB
QUFZQWd3RUFBRmdCQUFBR0FJb0JBQUFLQVFBQUJnQ1RBUUFBVGdFQUFBWUEKdHdFQUFGd0NBQUFH
QUwwQkFBREVBQUFBQmdEaUFRQUFiZ0VBQUJRQTZBRUFBRnNDQUFBR0FQc0JBQUJZQWdBQUJnQUtB
Z0FBVndJQQpBQVlBRVFJQUFGWUNBQUFHQUJrQ0FBQmZBZ0FBQmdBakFnQUFPZ0VBQUFZQVhRSUFB
QWtCQUFBVUFJQUNBQUQ3QUFBQUJnQ0xBZ0FBCi9nRUFBQVlBQkFBQUFQVUFBQUJrQUFBQUFBQUFB
QUFBQUFDb0FnQUFJQUFBQUJRQUFBQUFBQUFBV3hNQUFCZ0FDQUFFQUFBQUJBQUEKQUtRQ0FBQWdB
QUFBRkFBQUFBQUFBQUI4SFFBQUZBQU1BQUFBQUFBRkFBQUFvd0lBQUNBQUFBQVVBQUFBQUFBQUFP
VWRBQUFUQUJBQQpBQUFBQVBFQUFBQXFBZ0FBUmdBUUVRQUFBQUFBQUFBQUFBQUFBS2dDQUFBWUFB
QUFuZ0lBQUMwWEFBQUFBQUFBQUFBQVRXVmthV0ZUCmFHRnlaV1JWU1ZadmJIVnRaVk5zYVdSbGNq
bzZjR0ZwYm5RQUhBQVNFQ0FBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFBQUFBQUFnQUEKRFFBR0VT
d1hBQUFTQUhSb2FYTUFFZ0FMRVFRQUFBQXBFQUFBWTI5dWRHVjRkQUFQQUFzUkNBQUFBQTRRQUFC
eVpXTjBBQjhBREJHRQpGd0FBQUFBQUFBQUFZbUZqYTJkeWIzVnVaRWR5WVdScFpXNTBBQmNBQ3hI
Yy8vLy9iUklBQUc1dmJXbHVZV3hNWVhsbGNnQVRBQXdSCnlSY0FBQUFBQUFBQUFHTnZiRzl5Y3dB
YkFBd1J0Uk1BQUFBQUFBQUFBR2hwWjJoc2FXZG9kRU52Ykc5eUFBNEFPUkUyQUFBQUFBQUEKQUlJ
WEFBQU9BRGtSVkFBQUFBQUFBQUNHRndBQURnQTVFWWNBQUFBQUFBQUFreGNBQUE0QU9SSERBQUFB
QUFBQUFEb1FBQUFPQURrUgo1UUFBQUFBQUFBQjBFZ0FBRGdBNUVlNEFBQUFBQUFBQWpCQUFBQTRB
T1JFWkFRQUFBQUFBQUl3UUFBQU9BRGtSTXdFQUFBQUFBQUJpCkVnQUFEZ0E1RVZRQkFBQUFBQUFB
WWhJQUFBNEFPUkdCQVFBQUFBQUFBS1FYQUFBT0FEa1JpQUVBQUFBQUFBQ01FQUFBRGdBNUViVUIK
QUFBQUFBQUF5QmNBQUE0QU9SSDVBUUFBQUFBQUFHQVNBQUFPQURrUkNBSUFBQUFBQUFDSkV3QUFE
Z0E1RVE4Q0FBQUFBQUFBakJBQQpBQTRBT1JGK0FnQUFBQUFBQUhjU0FBQU9BRGtSaVFJQUFBQUFB
QUI0RWdBQURnQTVFWndDQUFBQUFBQUFQQkFBQUFJQUJnQUFBUElBCkFBQzRBQUFBQUFBQUFBQUFB
QUNvQWdBQUVBSUFBQlFBQUFDc0FBQUFBQUFBQUxVQ0FJQUdBQUFBdHdJQWdHSUFBQUM0QWdDQWxR
QUEKQUxvQ0FJREZBQUFBdkFJQWdPQUFBQUM5QWdDQTdRQUFBTDhDQUlEMEFBQUF3QUlBZ0JnQkFB
REJBZ0NBSHdFQUFNSUNBSUNIQVFBQQp3d0lBZ0k0QkFBREZBZ0NBNWdFQUFNWUNBSUQvQVFBQXh3
SUFnQTRDQUFESUFnQ0FGUUlBQU1vQ0FJQmhBZ0FBekFJQWdJUUNBQURPCkFnQ0FrZ0lBQU5BQ0FJ
Q2VBZ0FBMFFJQWdBd0FBQUJWQWdBQUJ3Q1lBQUFBVlFJQUFBc0FuQUFBQUZVQ0FBQUtBQm9CQUFC
aUFnQUEKQ3dBZUFRQUFZZ0lBQUFvQVZBRUFBR1VDQUFBTEFGZ0JBQUJsQWdBQUNnQnBBUUFBWHdJ
QUFBc0FiUUVBQUY4Q0FBQUtBSUlCQUFCVgpBZ0FBQ3dDR0FRQUFWUUlBQUFvQWtnRUFBRlVDQUFB
TEFKWUJBQUJWQWdBQUNnQ2lBUUFBVlFJQUFBc0FwZ0VBQUZVQ0FBQUtBTElCCkFBQlZBZ0FBQ3dD
MkFRQUFWUUlBQUFvQXdnRUFBRlVDQUFBTEFNWUJBQUJWQWdBQUNnRFNBUUFBVlFJQUFBc0ExZ0VB
QUZVQ0FBQUsKQU9JQkFBQlZBZ0FBQ3dEbUFRQUFWUUlBQUFvQThnRUFBRlVDQUFBTEFQWUJBQUJW
QWdBQUNnQUNBZ0FBVlFJQUFBc0FCZ0lBQUZVQwpBQUFLQUJJQ0FBQlZBZ0FBQ3dBV0FnQUFWUUlB
QUFvQUlnSUFBRlVDQUFBTEFDWUNBQUJWQWdBQUNnQXlBZ0FBVlFJQUFBc0FOZ0lBCkFGVUNBQUFL
QUVJQ0FBQlZBZ0FBQ3dCR0FnQUFWUUlBQUFvQVVnSUFBRlVDQUFBTEFGWUNBQUJWQWdBQUNnQmlB
Z0FBVlFJQUFBc0EKWmdJQUFGVUNBQUFLQUhJQ0FBQlZBZ0FBQ3dCMkFnQUFWUUlBQUFvQWdnSUFB
RlVDQUFBTEFJWUNBQUJWQWdBQUNnQ1NBZ0FBVlFJQQpBQXNBbGdJQUFGVUNBQUFLQUt3Q0FBQlZB
Z0FBQ3dDd0FnQUFWUUlBQUFvQUFBQmdQNC9DZFQyYW1Way83Rkc0UFpxWldUK1B3blU5Cm1wbFpQ
MU9MWENRUVZZdHNKQmhXaTNRa0VGZUxmQ1FZZyt3UWk4U0pNSWw0QklsWUNJbG9EUDhWQUFBQUFO
bGNKQ1NMeElrd2lYZ0UKaVZnSWlXZ00veFVBQUFBQTJWd2tLTmxFSkRTRHhCRFlaQ1FVMlVRa0tO
aGtKQmpjeU5uQjNzcmV3ZHdkQUFBQUFOL2c5c1JCZWd5NApBUUFBQUY5ZVhWdkNHQUJmWGwwendG
dkNHQUFtQUFBQVdRRUFBQVlBUFFBQUFQSUJBQUFHQUdJQUFBRHhBUUFBQmdBRUFBQUE5UUFBCkFH
UUFBQUFBQUFBQUFBQUFBSUlBQUFBQUFBQUFHQUFBQUFBQUFBQmJFd0FBRUFBSUFBUUFBQUFCQUFB
QWdRQUFBQUFBQUFBWUFBQUEKQUFBQUFGZ2FBQUFQQUF3QUFBQUFBQVlBQUFCOEFBQUFBQUFBQUJn
QUFBQUFBQUFBd0JvQUFBb0FFQUFBQUFBQThRQUFBTW9BQUFCVQpBQkFSQUFBQUFBQUFBQUFBQUFB
QWdnQUFBQkFBQUFCNUFBQUFReGNBQUFBQUFBQUFBQUJOWldScFlWTm9ZWEpsWkZWSlZtOXNkVzFs
ClUyeHBaR1Z5VkdoMWJXSkZiR1Z0Wlc1ME9qcG9hWFJVWlhOMEFCd0FFaEFBQUFBQUFBQUFBQUFB
QUFBUUFBQUFBQUFBQUFBQUFBSUEKQUEwQUJoRkJGd0FBRWdCMGFHbHpBQThBQ3hFRUFBQUFEaEFB
QUhKbFkzUUFFQUFMRVJRQUFBQUlFQUFBY0c5cGJuUUFEZ0E1RVNRQQpBQUFBQUFBQVloSUFBQTRB
T1JFN0FBQUFBQUFBQUdJU0FBQUNBQVlBQUFEeUFBQUFPQUFBQUFBQUFBQUFBQUFBZ2dBQUFCQUNB
QUFFCkFBQUFMQUFBQUFBQUFBRFVBZ0NBQVFBQUFOVUNBSUJGQUFBQTFnSUFnSElBQUFEWEFnQ0FE
QUFBQUcwQ0FBQUhBSmdBQUFCdEFnQUEKQ3dDY0FBQUFiUUlBQUFvQUlnRUFBRzBDQUFBTEFDWUJB
QUJ0QWdBQUNnQXlBUUFBYlFJQUFBc0FOZ0VBQUcwQ0FBQUtBRXdCQUFCdApBZ0FBQ3dCUUFRQUFi
UUlBQUFvQWcrd0kyUVVBQUFBQWkwUWtETmtVSklzTUpObGNKQVNMVkNRRWlRalpBTndGQUFBQUFJ
bFFCTmtZCmc4UUl3Z1FBQlFBQUFDVUFBQUFHQUNFQUFBRElBUUFBQmdBRUFBQUE5UUFBQUNRQUFB
QUFBQUFBQUFBQUFEQUFBQUFJQUFBQUJBQUEKQUFBQUFBQmJFd0FBQXdBQUFBUUFBQUR4QUFBQWl3
QUFBRmdBRUJFQUFBQUFBQUFBQUFBQUFBQXdBQUFBQXdBQUFDb0FBQUJDRndBQQpBQUFBQUFBQUFF
MWxaR2xoVTJoaGNtVmtWVWxXYjJ4MWJXVlRiR2xrWlhKVWFIVnRZa1ZzWlcxbGJuUTZPbTVoZEhW
eVlXeFRhWHBsCkFCd0FFaEFJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFBQTBBQmhG
QkZ3QUFFZ0IwYUdsekFBSUFCZ0FBOGdBQUFEZ0EKQUFBQUFBQUFBQUFBQURBQUFBQVFBZ0FBQkFB
QUFDd0FBQUFBQUFBQTJnSUFnQU1BQUFEYkFnQ0FIUUFBQU4wQ0FJQXFBQUFBNEFJQQpnQXdBQUFC
eUFnQUFCd0JZQUFBQWNnSUFBQXNBWEFBQUFISUNBQUFLQU13QUFBQnlBZ0FBQ3dEUUFBQUFjZ0lB
QUFvQWcrd3c5Z1VBCkFBQUFBVk5WVm9zMUFBQUFBSXZaVjRzOUFBQUFBSWxjSkJpOUFRQUFBSFZC
Q1MwQUFBQUE5Z1VBQUFBQUFYVVlvUUFBQUFDTENBa3QKQUFBQUFGSC8xb1BFQktNQUFBQUFpeFVB
QUFBQWFnSnFBR2dBQUFBQVV2L1hnOFFRb3dBQUFBRDJCUUFBQUFBQ2RVS0REUUFBQUFBQwo5Z1VB
QUFBQUFYVVlvUUFBQUFDTENBa3RBQUFBQUZILzFvUEVCS01BQUFBQWl4VUFBQUFBYWdKcUFHZ0FB
QUFBVXYvWGc4UVFvd0FBCkFBQ0xOUUFBQUFDNEJBQUFBSVFGQUFBQUFIVWkyUVVBQUFBQUNRVUFB
QUFBZyt3STJWd2tCTm5vMlJ3ay85YUR4QWlqQUFBQUFMZ0kKQUFBQWhBVUFBQUFBZFNMWkJRQUFB
QUFKQlFBQUFBQ0Q3QWpaWENRRTJlalpIQ1QvMW9QRUNLTUFBQUFBdUJBQUFBQ0VCUUFBQUFCMQpJ
dGtGQUFBQUFBa0ZBQUFBQUlQc0NObGNKQVRaN3RrY0pQL1dnOFFJb3dBQUFBQ0xFNHQ4SkVpTFhD
Uk1pMndrVUl0MEpGU0xUQ1FZCmkxSVFnK3dRaThTSk9JbFlCSWxvQ0lsd0RJdEVKRlJRLzlLRDdC
Q0x4SWs0aVZnRWlXZ0lpWEFNL3hVQUFBQUEyVndrT0l2RWlUaUoKV0FTSmFBaUpjQXovRlFBQUFB
RFpYQ1E4ZzhRUWFnQ0Q3QkNMeElrNGlWZ0VpV2dJaVhBTWkwUWtXT2dBQUFBQVVJbEVKQ3ovRlFB
QQpBQUJRaVVRa0xQOFZBQUFBQU5sRUpFaUxSQ1FzMlZ3a0dObEVKRVNEeEJUY0JRQUFBQURaWENR
azJVUWtKTmtjSkZEL0ZRQUFBQUJSCmk4U0pPSWxZQklsb0NJbHdEUDhWQUFBQUFObGNKQ3lMeElr
NGlWZ0VpV2dJaVhBTS94VUFBQUFBMlZ3a01ObEVKQ3lEeEJEWlJDUWcKMk5IZjRQYkVRWFVFM2Rq
ckF0M1oyVndrSElQc0VObEVKQ3lMeE53TkFBQUFBTmxjSkREWlJDUTQyVVFrTU5uQTN1clp5ZGxj
SkVDTApUQ1JBMlVRa1BJa0kyT0haWENSRWkxUWtSSWxRQk56QTJWd2tNTmxFSkREWlZDUklpMHdr
U05sY0pFeUxWQ1JNaVVnSWlWQU1pMFFrCklGRC9GUUFBQUFDTFRDUWtVZjhWQUFBQUFJdFVKQ2hT
L3hVQUFBQUFnOFFNaThTSk9JbFlCSWxvQ0lsd0RQOFZBQUFBQU5sY0pEaUwKeElrNGlWZ0VpV2dJ
aVhBTS94VUFBQUFBMlZ3a1BJdkVpVGlKV0FTSmFBaUpjQXovRlFBQUFBRFpYQ1F3aThTSk9JbFlC
SWxvQ0lsdwpEUDhWQUFBQUFObGNKRFNMUkNRb2kwZ0lvUUFBQUFEUjZZUEVFUGJCQVhVRm9RQUFB
QUNMVkNRc2kwd2tLR29BVW90VUpDeFJpMHdrCkxGS0xWQ1FnVVZCUy94VUFBQUFBZzhRY2FnQ0Q3
QkNMeElrNGlWZ0VpV2dJaVhBTWkwUWtXT2dBQUFBQVVJbEVKQ2ovRlFBQUFBQ0wKVENRc2c4UVlV
WVBzRUl2TWlUbUpXUVNKYVFoUWlVUWtOSWx4RFA4VkFBQUFBTm51aXhVQUFBQUEyVlFrUU5rRkFB
QUFBSVBFR0ZMWgpYQ1F3aTBRa01JdFVKQmhSaTB3a01Oa2NKRkJSVW9Qc0VJdkVpVGlKV0FTSmFB
aUpjQXlMUkNSQTZBQUFBQURaN3FFQUFBQUEyVlFrClRObm9pMVFrVElQRUpObGNKQ3hRaTBRa0dG
R0xUQ1EwMlJ3a1VWSlFnK3dRaThTSk9JbFlCSWxvQ0lsd0RJdEVKRURvQUFBQUFJdE0KSkRoUi94
VUFBQUFBMmU2TEZRQUFBQURaWENSUTJRVUFBQUFBZzhRb1V0bGNKRERaNkl0RUpEQ0xWQ1FVVWRr
Y0pJdE1KREJRVVZLRAo3QkNMeElrNGlWZ0VpV2dJaVhBTWkwUWthT2dBQUFBQWkwUWtQSXRJQ01I
cEJJUEVKUGJCQVhRa2crd1FpOFNKT0lsWUJJbG9DSWx3CkRJdDBKQ0NMUkNSVTZBQUFBQUNMZENS
a2c4UVFpMVFrRUZLRDdCQ0x4SWs0aVZnRWlXZ0lpWEFNaTNRa1dGYi9GUUFBQUFDTFJDUW8KVVA4
VkFBQUFBSXRNSkRTTEVZdENGSVBFSEZiLzBGOWVYVnVEeEREQ0ZBQUZBQUFBa3dJQUFBWUFEd0FB
QUI4QkFBQUdBQmdBQUFBYgpBUUFBQmdBcEFBQUFrd0lBQUFZQUx3QUFBQ01CQUFBR0FEY0FBQUFn
QVFBQUJnQS9BQUFBSXdFQUFBWUFTZ0FBQUI0QkFBQUdBRkFBCkFBQWVBUUFBQmdCWkFBQUFrQUlB
QUFZQVpBQUFBSTBDQUFBR0FHb0FBQUNUQWdBQUJnQnpBQUFBa3dJQUFBWUFlZ0FBQUNNQkFBQUcK
QUlJQUFBQWdBUUFBQmdDS0FBQUFJd0VBQUFZQWxRQUFBQjRCQUFBR0FKc0FBQUFlQVFBQUJnQ2tB
QUFBaWdJQUFBWUFyd0FBQUljQwpBQUFHQUxVQUFBQStBUUFBQmdEQUFBQUFrd0lBQUFZQXlBQUFB
RTRCQUFBR0FNNEFBQUNUQWdBQUJnRGtBQUFBaEFJQUFBWUE3d0FBCkFKTUNBQUFHQVBjQUFBQ0JB
Z0FBQmdEOUFBQUFrd0lBQUFZQUV3RUFBSDRDQUFBR0FCNEJBQUNUQWdBQUJnQW1BUUFBUVFFQUFB
WUEKTEFFQUFKTUNBQUFHQUVJQkFBQjdBZ0FBQmdDSUFRQUFXUUVBQUFZQW53RUFBUElCQUFBR0FN
RUJBQUR4QUFBQUZBRE1BUUFBM1FBQQpBQVlBMXdFQUFBTUNBQUFHQVBBQkFBQWpBZ0FBQmdBQ0Fn
QUFBZ0lBQUFZQUZnSUFBR2dCQUFBR0FDMENBQUJwQVFBQUJnQmVBZ0FBCllBRUFBQVlBdGdJQUFI
Z0NBQUFHQU1FQ0FBQUFBZ0FBQmdETUFnQUEvd0VBQUFZQTRnSUFBRmtCQUFBR0FQa0NBQUFSQVFB
QUJnQVEKQXdBQVdRRUFBQVlBSndNQUFCQUJBQUFHQURjREFBQ05BZ0FBQmdCR0F3QUFod0lBQUFZ
QWFBTUFBRmdCQUFBR0FJWURBQUR4QUFBQQpGQUNSQXdBQTNRQUFBQVlBdEFNQUFQc0FBQUFHQUx3
REFBQ0VBZ0FBQmdER0F3QUFPZ0VBQUFZQStnTUFBQ2dCQUFBVUFBRUVBQUIrCkFnQUFCZ0E3QkFB
QUtBRUFBQlFBUmdRQUFQNEJBQUFHQUU0RUFBQjdBZ0FBQmdCWUJBQUFPZ0VBQUFZQWpnUUFBQWtC
QUFBVUFMMEUKQUFCSkFRQUFGQURrQkFBQSt3QUFBQVlBN3dRQUFQNEJBQUFHQUFRQUFBRDFBQUFB
WkFBQUFBQUFBQUFBQUFBQURBVUFBREFBQUFBVQpBQUFBQUFBQUFGc1RBQUFnQUFnQUJBQUFBQXNB
QUFBQkJRQUFNQUFBQUJRQUFBQUFBQUFBT1JzQUFCVUFEQUFBQUFBQURBQUFBQUFGCkFBQXdBQUFB
RkFBQUFBQUFBQUNpR3dBQUZBQVFBQUFBQUFEeEFBQUE0Z01BQUZJQUVCRUFBQUFBQUFBQUFBQUFB
QUFNQlFBQUlBQUEKQUFJRkFBQS9Gd0FBQUFBQUFBQUFBRTFsWkdsaFUyaGhjbVZrVlVsV2IyeDFi
V1ZUYkdsa1pYSlVhSFZ0WWtWc1pXMWxiblE2T25CaAphVzUwQUJ3QUVoQXdBQUFBQUFBQUFBQUFB
QUFRQUFBQUFBQUFBQUFBQUFJQUFBMEFCaEUrRndBQUVnQjBhR2x6QUJJQUN4RUVBQUFBCktSQUFB
R052Ym5SbGVIUUFEd0FMRVFnQUFBQU9FQUFBY21WamRBQWNBQXdSaEJjQUFBQUFBQUFBQUhCeVpY
TnpaV1JIY21Ga2FXVnUKZEFBWkFBd1JCaEVBQUFBQUFBQUFBRzV2Y20xaGJFTnZiRzl5Y3dBUUFB
c1IyUC8vLzBBQUFBQjNhV1IwYUFBUkFBc1IzUC8vLzBBQQpBQUJvWldsbmFIUUFHQUFNRWJVVEFB
QUFBQUFBQUFCemFHRmtiM2REYjJ4dmNnQVJBQXNSM1AvLy8wQUFBQUJ5WVdScGRYTUFHd0FNCkVZ
UVhBQUFBQUFBQUFBQnViM0p0WVd4SGNtRmthV1Z1ZEFBWUFBc1IwUC8vLzIwU0FBQm5jbUZrYVdW
dWRFeGhlV1Z5QUJvQUN4SE0KLy8vL0tSQUFBR2R5WVdScFpXNTBRMjl1ZEdWNGRBQWRBQXdSdFJN
QUFBQUFBQUFBQUdsdWJtVnlVMmhoWkc5M1EyOXNiM0lBRndBTApFY3ovLy85dEVnQUFibTl0YVc1
aGJFeGhlV1Z5QUJjQUN4SFkvLy8vS1JBQUFHeGhlV1Z5UTI5dWRHVjRkQUFhQUF3UkJoRUFBQUFB
CkFBQUFBSEJ5WlhOelpXUkRiMnh2Y25NQUd3QU1FYlVUQUFBQUFBQUFBQUJvYVdkb2JHbG5hSFJE
YjJ4dmNnQU9BRGtSUkFBQUFBQUEKQUFDQ0Z3QUFEZ0E1RVY0QUFBQUFBQUFBaGhjQUFBNEFPUkdQ
QUFBQUFBQUFBSUlYQUFBT0FEa1JxUUFBQUFBQUFBQ0dGd0FBRGdBNQpFZDRBQUFBQUFBQUFreGNB
QUE0QU9SRU5BUUFBQUFBQUFKTVhBQUFPQURrUlBBRUFBQUFBQUFDVEZ3QUFEZ0E1RVhRQkFBQUFB
QUFBCk9oQUFBQTRBT1JHR0FRQUFBQUFBQUdJU0FBQU9BRGtSblFFQUFBQUFBQUJpRWdBQURnQTVF
Y29CQUFBQUFBQUFkQklBQUE0QU9SSFYKQVFBQUFBQUFBSXdRQUFBT0FEa1JBQUlBQUFBQUFBQmdF
Z0FBRGdBNUVSUUNBQUFBQUFBQVloSUFBQTRBT1JFckFnQUFBQUFBQUdJUwpBQUFPQURrUnRBSUFB
QUFBQUFCMUVnQUFEZ0E1RWI4Q0FBQUFBQUFBakJBQUFBNEFPUkhLQWdBQUFBQUFBSXdRQUFBT0FE
a1I0QUlBCkFBQUFBQUJpRWdBQURnQTVFZmNDQUFBQUFBQUFZaElBQUE0QU9SRU9Bd0FBQUFBQUFH
SVNBQUFPQURrUkpRTUFBQUFBQUFCaUVnQUEKRGdBNUVXWURBQUFBQUFBQXBCY0FBQTRBT1JHUEF3
QUFBQUFBQUhRU0FBQU9BRGtSc2dNQUFBQUFBQUIzRWdBQURnQTVFVVFFQUFBQQpBQUFBZUJJQUFB
NEFPUkhpQkFBQUFBQUFBSGNTQUFBT0FEa1I3UVFBQUFBQUFBQjRFZ0FBRGdBNUVRQUZBQUFBQUFB
QVBCQUFBQUlBCkJnQUFBUElBQUFBWUFRQUFBQUFBQUFBQUFBQU1CUUFBRUFJQUFDQUFBQUFNQVFB
QUFBQUFBT01DQUlBREFBQUE1Z0lBZ0dnQUFBRG4KQWdDQXN3QUFBT2dDQUlEb0FBQUE2UUlBZ0Jj
QkFBRHFBZ0NBUmdFQUFPd0NBSUIyQVFBQTdnSUFnS29CQUFEdkFnQ0F4UUVBQVBBQwpBSURRQVFB
QThnSUFnTnNCQUFEekFnQ0FCZ0lBQVBZQ0FJQWVBZ0FBOXdJQWdEVUNBQUQ0QWdDQVV3SUFBUG9D
QUlDNkFnQUErd0lBCmdNVUNBQUQ5QWdDQTBBSUFBQUVEQUlCdkF3QUFBd01BZ0lvREFBQUVBd0NB
bFFNQUFBWURBSUM0QXdBQUJ3TUFnUDREQUFBSUF3Q0EKUHdRQUFBa0RBSUJLQkFBQUN3TUFnSklF
QUFBTkF3Q0FwQVFBQUE0REFJRElCQUFBRUFNQWdPZ0VBQUFTQXdDQTh3UUFBQlFEQUlBQwpCUUFB
RlFNQWdBd0FBQUIzQWdBQUJ3Q1lBQUFBZHdJQUFBc0FuQUFBQUhjQ0FBQUtBQ1lCQUFDTkFnQUFD
d0FxQVFBQWpRSUFBQW9BClJBRUFBSW9DQUFBTEFFZ0JBQUNLQWdBQUNnQ0VBUUFBZXdJQUFBc0Fp
QUVBQUhzQ0FBQUtBTEVCQUFDSEFnQUFDd0MxQVFBQWh3SUEKQUFvQUJBSUFBSDRDQUFBTEFBZ0NB
QUIrQWdBQUNnQlZBZ0FBa0FJQUFBc0FXUUlBQUpBQ0FBQUtBSEVDQUFDRUFnQUFDd0IxQWdBQQpo
QUlBQUFvQWlnSUFBSGNDQUFBTEFJNENBQUIzQWdBQUNnQ2FBZ0FBZHdJQUFBc0FuZ0lBQUhjQ0FB
QUtBS29DQUFCM0FnQUFDd0N1CkFnQUFkd0lBQUFvQXVnSUFBSGNDQUFBTEFMNENBQUIzQWdBQUNn
REtBZ0FBZHdJQUFBc0F6Z0lBQUhjQ0FBQUtBTm9DQUFCM0FnQUEKQ3dEZUFnQUFkd0lBQUFvQTZn
SUFBSGNDQUFBTEFPNENBQUIzQWdBQUNnRDZBZ0FBZHdJQUFBc0EvZ0lBQUhjQ0FBQUtBQW9EQUFC
MwpBZ0FBQ3dBT0F3QUFkd0lBQUFvQUdnTUFBSGNDQUFBTEFCNERBQUIzQWdBQUNnQXFBd0FBZHdJ
QUFBc0FMZ01BQUhjQ0FBQUtBRG9ECkFBQjNBZ0FBQ3dBK0F3QUFkd0lBQUFvQVNnTUFBSGNDQUFB
TEFFNERBQUIzQWdBQUNnQmFBd0FBZHdJQUFBc0FYZ01BQUhjQ0FBQUsKQUdvREFBQjNBZ0FBQ3dC
dUF3QUFkd0lBQUFvQWVnTUFBSGNDQUFBTEFINERBQUIzQWdBQUNnQ0tBd0FBZHdJQUFBc0FqZ01B
QUhjQwpBQUFLQUpvREFBQjNBZ0FBQ3dDZUF3QUFkd0lBQUFvQXFnTUFBSGNDQUFBTEFLNERBQUIz
QWdBQUNnQzZBd0FBZHdJQUFBc0F2Z01BCkFIY0NBQUFLQU1vREFBQjNBZ0FBQ3dET0F3QUFkd0lB
QUFvQTJnTUFBSGNDQUFBTEFONERBQUIzQWdBQUNnRHFBd0FBZHdJQUFBc0EKN2dNQUFIY0NBQUFL
QVBvREFBQjNBZ0FBQ3dEK0F3QUFkd0lBQUFvQUNnUUFBSGNDQUFBTEFBNEVBQUIzQWdBQUNnQWFC
QUFBZHdJQQpBQXNBSGdRQUFIY0NBQUFLQUNvRUFBQjNBZ0FBQ3dBdUJBQUFkd0lBQUFvQU9nUUFB
SGNDQUFBTEFENEVBQUIzQWdBQUNnQktCQUFBCmR3SUFBQXNBVGdRQUFIY0NBQUFLQUdRRUFBQjNB
Z0FBQ3dCb0JBQUFkd0lBQUFvQUtWd1BQc2ZHeGo0QUFJQS9rWkFRUHdBQWdEK2gKb0NBL0FBQ0FQ
OTdkWFQ4QUFJQS9pMFFrR05rRkFBQUFBSXRNSkJTTFZDUUVVRkdMVENRUWcrd1VpOFRaWENRUWlS
Q0xWQ1FvaVVnRQppMHdrTElsUUNJbElET2dBQUFBQWc4UWN3aGdBQmdBQUFLd0FBQUFHQURVQUFB
Q0pBUUFBRkFBRUFBQUE5UUFBQUNRQUFBQUFBQUFBCkFBQUFBRDhBQUFBQUFBQUFHQUFBQUFBQUFB
QmJFd0FBQUFBQUFBUUFBQUR4QUFBQXJ3QUFBRmtBRUJFQUFBQUFBQUFBQUFBQUFBQS8KQUFBQUFB
QUFBRHdBQUFEN0ZnQUFBQUFBQUFBQUFFMWxaR2xoVTJoaGNtVmtWVWxXYjJ4MWJXVlRiR2xrWlhK
Q1lXTnJaM0p2ZFc1awpSV3hsYldWdWREbzZhR2wwVkdWemRBQWNBQklRQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUNBQUFOQUFZUitoWUFBQklBCmRHaHBjd0FQQUFzUkJBQUFBQTRRQUFC
eVpXTjBBQkFBQ3hFVUFBQUFDQkFBQUhCdmFXNTBBQUlBQmdBQThnQUFBREFBQUFBQUFBQUEKQUFB
QUFEOEFBQUFRQWdBQUF3QUFBQ1FBQUFBQUFBQUFHUU1BZ0FBQUFBQWFBd0NBUEFBQUFCc0RBSUFN
QUFBQW1BSUFBQWNBV0FBQQpBSmdDQUFBTEFGd0FBQUNZQWdBQUNnRHdBQUFBbUFJQUFBc0E5QUFB
QUpnQ0FBQUtBSVBzTUZOVlZyZ0JBQUFBaEFVQUFBQUFpL0ZYCmlYUWtGTHNDQUFBQWRVY0pCUUFB
QUFDRUJRQUFBQUIxSEFrRkFBQUFBS0VBQUFBQWl3aFIveFVBQUFBQWc4UUVvd0FBQUFDTEZRQUEK
QUFCVGFnQm9BQUFBQUZML0ZRQUFBQUNEeEJDakFBQUFBSVFkQUFBQUFIVW0yUVVBQUFBQUNSMEFB
QUFBZyt3STJWd2tCTm5vMlJ3awoveFVBQUFBQWc4UUlvd0FBQUFDTGZDUklpeGFMWENSTWkyd2tV
SXRNSkZTTGRDUkVpMUlRZyt3UWk4U0pPSWxZQklsb0NJbElESXRNCkpDUlcvOUxaNkl0TUpGU0Q3
QmpaVkNRVWk4VFpYQ1FRaVRpSldBU05WQ1E0aVdnSVVvbElEUDhWQUFBQUFJdElESXM0aTFnRWky
Z0kKaTBBTWc4UWNhZ0NEN0JDSlRDUlFpOHlMMTRrUmk5T0pVUVNMMVlsUkNJbEJESXZHNkFBQUFB
QlFpVVFrS1A4VkFBQUFBTmtGQUFBQQpBSXRVSkZUWlhDUVVnOFFFaTh5Sk9ZbFpCSWxwQ0ZDSlJD
UmNpVkVNNkFBQUFBQ0xSQ1JjVVA4VkFBQUFBSXRNSkdCcUVWSC9GUUFBCkFBQ0xWQ1JnZzhRVWk4
U0pPSWxZQklsb0NJbFFEUDhWQUFBQUFObGNKQ2lMeElrNGkwd2tUSWxZQklsb0NJbElEUDhWQUFB
QUFObGMKSkN5TFZDUk1pOFNKT0lsWUJJbG9DSWxRRFA4VkFBQUFBTmxjSkRDTFRDUk1pOFNKT0ls
WUJJbG9DSWxJRFA4VkFBQUFBTmxjSkRTTApWQ1FzaTBRa0tJdE1KRFJxQUZLTFZDUTRVS0VBQUFB
QVVZdE1KR1JTVUZIL0ZRQUFBQUNMVkNROGkwd2thSVBFTEZLRDdCQ0x4SWs0CmlWZ0VpV2dJVm9s
SURQOFZBQUFBQU5udWl4VUFBQUFBMlZ3a09Oa0ZBQUFBQUlQRUdGTFpYQ1FvMmVpTFJDUW9pMVFr
RkZIWkhDU0wKVENRb1VGR0xUQ1JNVW9Qc0VJdkVpVGlKV0FTSmFBaUpTQXlMeHVnQUFBQUEyUVVB
QUFBQWkxUWtZTmxjSkNDRHhCQ0x4SWs0aVZnRQppV2dJaVZBTWkwUWtXRkRvQUFBQUFOa0ZBQUFB
QUl0TUpHRFpWQ1FVaTFRa1pObGNKQkNMeElrSWkwd2thSWxRQkl0VUpHeUpTQWlKClVBeU5SQ1Jn
VVA4VkFBQUFBTmtGQUFBQUFJc1EyVndrR0lQRUNJdk1pUkdMVUFTSlVRU0xVQWlMUUF5SlVRaFdp
VUVNNkFBQUFBRFoKNklQRUZOa2NKRmIvRlFBQUFBRFpCUUFBQUFEWlhDUUUyZTdaSENSVy94VUFB
QUFBVnY4VkFBQUFBSXRNSkNTTEVZdENGSVBFRUZiLwowRjllWFZ1RHhERENGQUFOQUFBQXJBSUFB
QVlBSVFBQUFLd0NBQUFHQUNjQUFBQWpBUUFBQmdBdkFBQUFJd0VBQUFZQU5BQUFBQ0FCCkFBQUdB
RDBBQUFBZkFRQUFCZ0JGQUFBQUhnRUFBQVlBU3dBQUFCNEJBQUFHQUZNQUFBQ3BBZ0FBQmdCYUFB
QUFHd0VBQUFZQVlnQUEKQUtZQ0FBQUdBR2dBQUFDc0FnQUFCZ0J3QUFBQVRnRUFBQVlBZGdBQUFL
d0NBQUFHQUlnQUFBQStBUUFBQmdDUUFBQUFvd0lBQUFZQQo2UUFBQUZ3Q0FBQUdBQjBCQUFEeEFB
QUFGQUFvQVFBQTNRQUFBQVlBTGdFQUFLd0FBQUFHQUZBQkFBQnVBUUFBRkFCYkFRQUEvd0VBCkFB
WUFhQUVBQUM4QkFBQUdBSUlCQUFCWkFRQUFCZ0NkQVFBQUVRRUFBQVlBdUFFQUFGa0JBQUFHQU5N
QkFBQVFBUUFBQmdEd0FRQUEKcGdJQUFBWUEvZ0VBQUZnQkFBQUdBQ0VDQUFEN0FBQUFCZ0FwQWdB
QW93SUFBQVlBTXdJQUFEb0JBQUFHQUdzQ0FBQW9BUUFBRkFCeApBZ0FBckFBQUFBWUFrd0lBQUc0
QkFBQVVBSmtDQUFCT0FRQUFCZ0RKQWdBQVhBSUFBQVlBendJQUFKd0FBQUFHQVBRQ0FBQnVBUUFB
CkZBQURBd0FBVndJQUFBWUFDUU1BQUtBQ0FBQUdBQmtEQUFCWUFnQUFCZ0FnQXdBQVZnSUFBQVlB
QkFBQUFQVUFBQUJrQUFBQUFBQUEKQUFBQUFBQTlBd0FBTUFBQUFCUUFBQUFBQUFBQVd4TUFBQmdB
Q0FBRUFBQUFCQUFBQURrREFBQXdBQUFBRkFBQUFBQUFBQUE1R3dBQQpGQUFNQUFBQUFBQUZBQUFB
T0FNQUFEQUFBQUFVQUFBQUFBQUFBS0liQUFBVEFCQUFBQUFBQVBFQUFBQ0RBZ0FBVndBUUVRQUFB
QUFBCkFBQUFBQUFBQUQwREFBQVlBQUFBTXdNQUFQZ1dBQUFBQUFBQUFBQUFUV1ZrYVdGVGFHRnla
V1JWU1ZadmJIVnRaVk5zYVdSbGNrSmgKWTJ0bmNtOTFibVJGYkdWdFpXNTBPanB3WVdsdWRBQWNB
QklRTUFBQUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFBQUFBQUNBQUFOQUFZUgo5eFlBQUJJQWRHaHBj
d0FTQUFzUkJBQUFBQ2tRQUFCamIyNTBaWGgwQUE4QUN4RUlBQUFBRGhBQUFISmxZM1FBSFFBTUVi
VVRBQUFBCkFBQUFBQUJwYm01bGNsTm9ZV1J2ZDBOdmJHOXlBQmtBQ3hIcy8vLy9EaEFBQUdKaFky
dG5jbTkxYm1SU1pXTjBBQm9BQ3hITS8vLy8KYlJJQUFHSmhZMnRuY205MWJtUk1ZWGxsY2dBY0FB
c1JCQUFBQUNrUUFBQmlZV05yWjNKdmRXNWtRMjl1ZEdWNGRBQVRBQXdSQmhFQQpBQUFBQUFBQUFH
TnZiRzl5Y3dBWkFBd1JoQmNBQUFBQUFBQUFBR1pwYkd4SGNtRmthV1Z1ZEFBT0FEa1JPd0FBQUFB
QUFBQ0NGd0FBCkRnQTVFVmdBQUFBQUFBQUFoaGNBQUE0QU9SR0dBQUFBQUFBQUFKTVhBQUFPQURr
UndnQUFBQUFBQUFBNkVBQUFEZ0E1RWVjQUFBQUEKQUFBQXlCY0FBQTRBT1JFbUFRQUFBQUFBQUhR
U0FBQU9BRGtSV1FFQUFBQUFBQUNNRUFBQURnQTVFV1lCQUFBQUFBQUFqUmNBQUE0QQpPUkdBQVFB
QUFBQUFBR0lTQUFBT0FEa1Jtd0VBQUFBQUFBQmlFZ0FBRGdBNUViWUJBQUFBQUFBQVloSUFBQTRB
T1JIUkFRQUFBQUFBCkFHSVNBQUFPQURrUi9BRUFBQUFBQUFDa0Z3QUFEZ0E1RVI4Q0FBQUFBQUFB
ZHhJQUFBNEFPUkhIQWdBQUFBQUFBTWdYQUFBT0FEa1IKQVFNQUFBQUFBQUNKRXdBQURnQTVFUmNE
QUFBQUFBQUFZQklBQUE0QU9SRWVBd0FBQUFBQUFJd1FBQUFPQURrUk1RTUFBQUFBQUFBOApFQUFB
QWdBR0FBRHlBQUFBdUFBQUFBQUFBQUFBQUFBQVBRTUFBQkFDQUFBVUFBQUFyQUFBQUFBQUFBQWVB
d0NBQmdBQUFDQURBSUJtCkFBQUFJUU1BZ0pRQUFBQWpBd0NBeEFBQUFDVURBSUQ0QUFBQUpnTUFn
Q0VCQUFBbkF3Q0FMQUVBQUNrREFJQlVBUUFBS2dNQWdGOEIKQUFBc0F3Q0FiQUVBQUMwREFJQUNB
Z0FBTHdNQWdDVUNBQUF4QXdDQWJ3SUFBRFFEQUlDWEFnQUFOZ01BZ1BnQ0FBQTNBd0NBQndNQQpB
RGdEQUlBZEF3QUFPUU1BZ0NRREFBQTdBd0NBTXdNQUFEd0RBSUFNQUFBQW5RSUFBQWNBbUFBQUFK
MENBQUFMQUp3QUFBQ2RBZ0FBCkNnQXJBUUFBb3dJQUFBc0FMd0VBQUtNQ0FBQUtBSjhCQUFDcEFn
QUFDd0NqQVFBQXFRSUFBQW9BdEFFQUFLWUNBQUFMQUxnQkFBQ20KQWdBQUNnRExBUUFBblFJQUFB
c0F6d0VBQUowQ0FBQUtBTnNCQUFDZEFnQUFDd0RmQVFBQW5RSUFBQW9BNndFQUFKMENBQUFMQU84
QgpBQUNkQWdBQUNnRDdBUUFBblFJQUFBc0Evd0VBQUowQ0FBQUtBQXNDQUFDZEFnQUFDd0FQQWdB
QW5RSUFBQW9BR3dJQUFKMENBQUFMCkFCOENBQUNkQWdBQUNnQXJBZ0FBblFJQUFBc0FMd0lBQUow
Q0FBQUtBRHNDQUFDZEFnQUFDd0EvQWdBQW5RSUFBQW9BU3dJQUFKMEMKQUFBTEFFOENBQUNkQWdB
QUNnQmJBZ0FBblFJQUFBc0FYd0lBQUowQ0FBQUtBR3NDQUFDZEFnQUFDd0J2QWdBQW5RSUFBQW9B
ZXdJQQpBSjBDQUFBTEFIOENBQUNkQWdBQUNnQ0xBZ0FBblFJQUFBc0Fqd0lBQUowQ0FBQUtBSnND
QUFDZEFnQUFDd0NmQWdBQW5RSUFBQW9BCnF3SUFBSjBDQUFBTEFLOENBQUNkQWdBQUNnQzdBZ0FB
blFJQUFBc0F2d0lBQUowQ0FBQUtBTXNDQUFDZEFnQUFDd0RQQWdBQW5RSUEKQUFvQTJ3SUFBSjBD
QUFBTEFOOENBQUNkQWdBQUNnRHJBZ0FBblFJQUFBc0E3d0lBQUowQ0FBQUtBQVFEQUFDZEFnQUFD
d0FJQXdBQQpuUUlBQUFvQU16TnpQNG1JaUQwZmhXcy9xYWdvUGgrRmF6K0x3Y2NBQUFBQUFNTUVB
QUFBdEFJQUFBWUFCQUFBQVBVQUFBQWtBQUFBCkFBQUFBQUFBQUFBSkFBQUFBQUFBQUFBQUFBQUFB
QUFBV3hNQUFBSUFBQUFFQUFBQThRQUFBSmNBQUFCa0FCQVJBQUFBQUFBQUFBQUEKQUFBQUNRQUFB
QUlBQUFBSUFBQUF4aFlBQUFBQUFBQUFBQUJOWldScFlWTm9ZWEpsWkZWSlFtRmphMmR5YjNWdVpF
VnNaVzFsYm5RNgpPazFsWkdsaFUyaGhjbVZrVlVsQ1lXTnJaM0p2ZFc1a1JXeGxiV1Z1ZEFBY0FC
SVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFDQUtBQUFOQUFZUndCWUFBQklBZEdocGN3
QUNBQVlBQUF3QUFBQ3hBZ0FBQndCWUFBQUFzUUlBQUFzQVhBQUFBTEVDQUFBS0FBQUEKQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUMyQWdBQUJnQUVBQUFBeFFFQUFBWUFDQUFBQUUw
QUFBQUdBQXdBQUFCVApBQUFBQmdBUUFBQUFSd0FBQUFZQUZBQUFBRWdBQUFBR0FJdkJ4d0FBQUFB
QXd3UUFBQUMvQWdBQUJnQUVBQUFBOVFBQUFDUUFBQUFBCkFBQUFBQUFBQUFrQUFBQUFBQUFBQUFB
QUFBQUFBQUJiRXdBQUFnQUFBQVFBQUFEeEFBQUFyd0FBQUh3QUVCRUFBQUFBQUFBQUFBQUEKQUFB
SkFBQUFBZ0FBQUFnQUFBQUFGd0FBQUFBQUFBQUFBRTFsWkdsaFUyaGhjbVZrVlVsV2IyeDFiV1ZU
Ykdsa1pYSkNZV05yWjNKdgpkVzVrUld4bGJXVnVkRG82VFdWa2FXRlRhR0Z5WldSVlNWWnZiSFZ0
WlZOc2FXUmxja0poWTJ0bmNtOTFibVJGYkdWdFpXNTBBQndBCkVoQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBSUFvQUFBMEFCaEgzRmdBQUVnQjBhR2x6QUFJQUJnQUFEQUFBQUx3Q0FBQUgK
QUZnQUFBQzhBZ0FBQ3dCY0FBQUF2QUlBQUFvQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFNRUNBQUFHQUFRQQpBQUNkQWdBQUJnQUlBQUFBbUFJQUFBWUFEQUFBQUZNQUFBQUdB
QkFBQUFCSEFBQUFCZ0FVQUFBQVNBQUFBQVlBaThISEFBQUFBQURECkJBQUFBTW9DQUFBR0FBUUFB
QUQxQUFBQUpBQUFBQUFBQUFBQUFBQUFDUUFBQUFBQUFBQUFBQUFBQUFBQUFGc1RBQUFDQUFBQUJB
QUEKQVBFQUFBQ3BBQUFBZGdBUUVRQUFBQUFBQUFBQUFBQUFBQWtBQUFBQ0FBQUFDQUFBQUNRWEFB
QUFBQUFBQUFBQVRXVmthV0ZUYUdGeQpaV1JWU1ZScGJXVnNhVzVsVTJ4cFpHVnlWR2gxYldKRmJH
VnRaVzUwT2pwTlpXUnBZVk5vWVhKbFpGVkpWR2x0Wld4cGJtVlRiR2xrClpYSlVhSFZ0WWtWc1pX
MWxiblFBSEFBU0VBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQ2dBQURRQUdFUm9YQUFB
U0FIUm8KYVhNQUFnQUdBQUFBQUF3QUFBREhBZ0FBQndCWUFBQUF4d0lBQUFzQVhBQUFBTWNDQUFB
S0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQQpBQUFBQUFBQUFBQUFBQURNQWdBQUJnQUVBQUFBL0FF
QUFBWUFDQUFBQU80QkFBQUdBQXdBQUFEM0FRQUFCZ0FRQUFBQVJ3QUFBQVlBCkZBQUFBRWdBQUFB
R0FJdkJ4d0FBQUFBQXd3UUFBQURWQWdBQUJnQUVBQUFBOVFBQUFDUUFBQUFBQUFBQUFBQUFBQWtB
QUFBQUFBQUEKQUFBQUFBQUFBQUJiRXdBQUFnQUFBQVFBQUFEeEFBQUFqUUFBQUZvQUVCRUFBQUFB
QUFBQUFBQUFBQUFKQUFBQUFnQUFBQWdBQUFBMgpGd0FBQUFBQUFBQUFBRTFsWkdsaFUyaGhjbVZr
VlVsV2IyeDFiV1ZUYkdsa1pYSTZPazFsWkdsaFUyaGhjbVZrVlVsV2IyeDFiV1ZUCmJHbGtaWElB
SEFBU0VBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQ2dBQURRQUdFU3dYQUFBU0FIUm9h
WE1BQWdBR0FBQUEKQUF3QUFBRFNBZ0FBQndCWUFBQUEwZ0lBQUFzQVhBQUFBTklDQUFBS0FBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQQpBQURYQWdBQUJnQUVBQUFBVlFJQUFBWUFD
QUFBQUUwQUFBQUdBQXdBQUFCVEFBQUFCZ0FRQUFBQVJ3QUFBQVlBRkFBQUFFZ0FBQUFHCkFJdkJ4
d0FBQUFBQXd3UUFBQURnQWdBQUJnQUVBQUFBOVFBQUFDUUFBQUFBQUFBQUFBQUFBQWtBQUFBQUFB
QUFBQUFBQUFBQUFBQmIKRXdBQUFnQUFBQVFBQUFEeEFBQUFwUUFBQUhJQUVCRUFBQUFBQUFBQUFB
QUFBQUFKQUFBQUFnQUFBQWdBQUFCSUZ3QUFBQUFBQUFBQQpBRTFsWkdsaFUyaGhjbVZrVlVsV2Iy
eDFiV1ZUYkdsa1pYSlVhSFZ0WWtWc1pXMWxiblE2T2sxbFpHbGhVMmhoY21Wa1ZVbFdiMngxCmJX
VlRiR2xrWlhKVWFIVnRZa1ZzWlcxbGJuUUFIQUFTRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQWdDZ0FBRFFBR0VUNFgKQUFBU0FIUm9hWE1BQWdBR0FBQUFBQXdBQUFEZEFnQUFCd0JZQUFB
QTNRSUFBQXNBWEFBQUFOMENBQUFLQUFBQUFBQUFBQUFBQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBRGlBZ0FBQmdBRUFBQUFkd0lBQUFZQUNBQUFBRzBDQUFBR0FBd0FBQUJ5QWdBQUJnQVFBQUFB
ClJ3QUFBQVlBRkFBQUFFZ0FBQUFHQU1jQkFBQUFBTU1DQUFBQVFnQUFBQVlBQkFBQUFQVUFBQUFr
QUFBQUFBQUFBQUFBQUFBSEFBQUEKQUFBQUFBQUFBQUFBQUFBQVd4TUFBQUFBQUFBRUFBQUE4UUFB
QUpnQUFBQmxBQkFSQUFBQUFBQUFBQUFBQUFBQUJ3QUFBQUFBQUFBRwpBQUFBeGhZQUFBQUFBQUFB
QUFCTlpXUnBZVk5vWVhKbFpGVkpRbUZqYTJkeWIzVnVaRVZzWlcxbGJuUTZPbjVOWldScFlWTm9Z
WEpsClpGVkpRbUZqYTJkeWIzVnVaRVZzWlcxbGJuUUFIQUFTRUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQWdDZ0FBRFFBR0VjQVcKQUFBU0FIUm9hWE1BQWdBR0FBd0FBQURvQWdBQUJ3QllB
QUFBNkFJQUFBc0FYQUFBQU9nQ0FBQUtBTWNCQUFBQUFNTUNBQUFBUWdBQQpBQVlBQkFBQUFQVUFB
QUFrQUFBQUFBQUFBQUFBQUFBSEFBQUFBQUFBQUFBQUFBQUFBQUFBV3hNQUFBQUFBQUFFQUFBQThR
QUFBTEFBCkFBQjlBQkFSQUFBQUFBQUFBQUFBQUFBQUJ3QUFBQUFBQUFBR0FBQUFBQmNBQUFBQUFB
QUFBQUJOWldScFlWTm9ZWEpsWkZWSlZtOXMKZFcxbFUyeHBaR1Z5UW1GamEyZHliM1Z1WkVWc1pX
MWxiblE2T241TlpXUnBZVk5vWVhKbFpGVkpWbTlzZFcxbFUyeHBaR1Z5UW1GagphMmR5YjNWdVpF
VnNaVzFsYm5RQUhBQVNFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0NnQUFEUUFHRWZj
V0FBQVNBSFJvCmFYTUFBZ0FHQUF3QUFBRHRBZ0FBQndCWUFBQUE3UUlBQUFzQVhBQUFBTzBDQUFB
S0FNY0JBQUFBQU1NQ0FBQUFRZ0FBQUFZQUJBQUEKQVBVQUFBQWtBQUFBQUFBQUFBQUFBQUFIQUFB
QUFBQUFBQUFBQUFBQUFBQUFXeE1BQUFBQUFBQUVBQUFBOFFBQUFLb0FBQUIzQUJBUgpBQUFBQUFB
QUFBQUFBQUFBQndBQUFBQUFBQUFHQUFBQUpCY0FBQUFBQUFBQUFBQk5aV1JwWVZOb1lYSmxaRlZK
VkdsdFpXeHBibVZUCmJHbGtaWEpVYUhWdFlrVnNaVzFsYm5RNk9uNU5aV1JwWVZOb1lYSmxaRlZK
VkdsdFpXeHBibVZUYkdsa1pYSlVhSFZ0WWtWc1pXMWwKYm5RQUhBQVNFQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBZ0NnQUFEUUFHRVJvWEFBQVNBSFJvYVhNQUFnQUdBQUFBREFBQQpBUElD
QUFBSEFGZ0FBQUR5QWdBQUN3QmNBQUFBOGdJQUFBb0F4d0VBQUFBQXd3SUFBQUJDQUFBQUJnQUVB
QUFBOVFBQUFDUUFBQUFBCkFBQUFBQUFBQUFjQUFBQUFBQUFBQUFBQUFBQUFBQUJiRXdBQUFBQUFB
QVFBQUFEeEFBQUFqZ0FBQUZzQUVCRUFBQUFBQUFBQUFBQUEKQUFBSEFBQUFBQUFBQUFZQUFBQTJG
d0FBQUFBQUFBQUFBRTFsWkdsaFUyaGhjbVZrVlVsV2IyeDFiV1ZUYkdsa1pYSTZPbjVOWldScApZ
Vk5vWVhKbFpGVkpWbTlzZFcxbFUyeHBaR1Z5QUJ3QUVoQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBSUFvQUFBMEFCaEVzCkZ3QUFFZ0IwYUdsekFBSUFCZ0FBQUF3QUFBRDNBZ0FBQndCWUFB
QUE5d0lBQUFzQVhBQUFBUGNDQUFBS0FNY0JBQUFBQU1NQ0FBQUEKUWdBQUFBWUFCQUFBQVBVQUFB
QWtBQUFBQUFBQUFBQUFBQUFIQUFBQUFBQUFBQUFBQUFBQUFBQUFXeE1BQUFBQUFBQUVBQUFBOFFB
QQpBS1lBQUFCekFCQVJBQUFBQUFBQUFBQUFBQUFBQndBQUFBQUFBQUFHQUFBQVNCY0FBQUFBQUFB
QUFBQk5aV1JwWVZOb1lYSmxaRlZKClZtOXNkVzFsVTJ4cFpHVnlWR2gxYldKRmJHVnRaVzUwT2pw
K1RXVmthV0ZUYUdGeVpXUlZTVlp2YkhWdFpWTnNhV1JsY2xSb2RXMWkKUld4bGJXVnVkQUFjQUJJ
UUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FLQUFBTkFBWVJQaGNBQUJJQWRHaHBjd0FD
QUFZQQpBQUFNQUFBQS9BSUFBQWNBV0FBQUFQd0NBQUFMQUZ3QUFBRDhBZ0FBQ2dDTHdjY0FBQUFB
QU1NRUFBQUFCQU1BQUFZQUJBQUFBUFVBCkFBQWtBQUFBQUFBQUFBQUFBQUFKQUFBQUFBQUFBQUFB
QUFBQUFBQUFXeE1BQUFJQUFBQUVBQUFBOFFBQUFJVUFBQUJTQUJBUkFBQUEKQUFBQUFBQUFBQUFB
Q1FBQUFBSUFBQUFJQUFBQVZSQUFBQUFBQUFBQUFBQk5aV1JwWVZWSlZHbHRaV3hwYm1WVGJHbGta
WEk2T2sxbApaR2xoVlVsVWFXMWxiR2x1WlZOc2FXUmxjZ0FjQUJJUUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQ0FLQUFBTkFBWVJUQkFBCkFCSUFkR2hwY3dBQ0FBWUFBQUFBREFBQUFBRURB
QUFIQUZnQUFBQUJBd0FBQ3dCY0FBQUFBUU1BQUFvQUFBQUFBQUFBQUFBQUFBQUEKQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQVlEQUFBR0FBUUFBQUJHQUFBQUJnQUlBQUFBVFFBQUFBWUFEQUFBQUZNQUFB
QUdBQkFBQUFCSApBQUFBQmdBVUFBQUFTQUFBQUFZQXh3RUFBQUFBd3dJQUFBQkNBQUFBQmdBRUFB
QUE5UUFBQUNRQUFBQUFBQUFBQUFBQUFBY0FBQUFBCkFBQUFBQUFBQUFBQUFBQmJFd0FBQUFBQUFB
UUFBQUR4QUFBQWhnQUFBRk1BRUJFQUFBQUFBQUFBQUFBQUFBQUhBQUFBQUFBQUFBWUEKQUFCVkVB
QUFBQUFBQUFBQUFFMWxaR2xoVlVsVWFXMWxiR2x1WlZOc2FXUmxjam82ZmsxbFpHbGhWVWxVYVcx
bGJHbHVaVk5zYVdSbApjZ0FjQUJJUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FLQUFB
TkFBWVJUQkFBQUJJQWRHaHBjd0FDQUFZQUFBQU1BQUFBCkRBTUFBQWNBV0FBQUFBd0RBQUFMQUZ3
QUFBQU1Bd0FBQ2dEMlJDUUVBVmFMOGNjR0FBQUFBSFFKVnVnQUFBQUFnOFFFaThaZXdnUUEKQ2dB
QUFFSUFBQUFHQUJJQUFBQnpBQUFBRkFBRUFBQUE5UUFBQUVRQUFBQUFBQUFBQUFBQUFCOEFBQUFB
QUFBQUJBQUFBQUFBQUFCYgpFd0FBQ0FBQUFBUUFBQUFHQUFBQUZnQUFBQUFBQUFBRUFBQUFBQUFB
QUZzVEFBQUNBQVFBQUFBQUFQRUFBQUNNQUFBQVdRQVFFUUFBCkFBQUFBQUFBQUFBQUFCOEFBQUFJ
QUFBQUhBQUFBRmtRQUFBQUFBQUFBQUFBVFdWa2FXRlZTVlJwYldWc2FXNWxVMnhwWkdWeU9qcGcK
YzJOaGJHRnlJR1JsYkdWMGFXNW5JR1JsYzNSeWRXTjBiM0luQUJ3QUVoQUFBQUFBQUFBQUFBQUFB
QUFFQUFBQUFBQUFBQUFBSUFJQQpBQTBBQmhGTUVBQUFFZ0IwYUdsekFBSUFCZ0FNQUFBQUJRTUFB
QWNBZUFBQUFBVURBQUFMQUh3QUFBQUZBd0FBQ2dDTHdjY0FBQUFBCkFNZEFEQUFBQUFEREJBQUFB
QmtEQUFBR0FBUUFBQUQxQUFBQUpBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFG
c1QKQUFBQ0FBQUFCQUFBQVBFQUFBQ05BQUFBV2dBUUVRQUFBQUFBQUFBQUFBQUFBQkFBQUFBQ0FB
QUFEd0FBQU5NV0FBQUFBQUFBQUFBQQpUV1ZrYVdGVGFHRnlaV1JWU1VsdFlXZGxSV3hsYldWdWRE
bzZUV1ZrYVdGVGFHRnlaV1JWU1VsdFlXZGxSV3hsYldWdWRBQWNBQklRCkFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQ0FLQUFBTkFBWVIwUllBQUJJQWRHaHBjd0FDQUFZQUFBQUE4Z0FBQUNB
QUFBQUEKQUFBQUFBQUFBQkFBQUFEQUJnQUFBUUFBQUJRQUFBQUFBQUFBRXdBQWdBd0FBQUFXQXdB
QUJ3QllBQUFBRmdNQUFBc0FYQUFBQUJZRApBQUFLQU5BQUFBQVdBd0FBQ3dEVUFBQUFGZ01BQUFv
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUJz
REFBQUdBQVFBQUFDMkFRQUFCZ0FJQUFBQVRRQUFBQVlBREFBQUFOd0RBQUFHQUJBQUFBQkhBQUFB
QmdBVUFBQUEKU0FBQUFBWUFHQUFBQUp3QkFBQUdBQndBQUFEV0F3QUFCZ0FnQUFBQUlRTUFBQVlB
TXNEREJBQUFBUFVBQUFBa0FBQUFBQUFBQUFBQQpBQUFEQUFBQUFBQUFBQUFBQUFBQUFBQUFXeE1B
QUFBQUFBQUVBQUFBOFFBQUFJZ0FBQUJWQUJBUkFBQUFBQUFBQUFBQUFBQUFBd0FBCkFBQUFBQUFD
QUFBQTJoWUFBQUFBQUFBQUFBQk5aV1JwWVZOb1lYSmxaRlZKU1cxaFoyVkZiR1Z0Wlc1ME9qcGpi
MjV6ZEhKaGFXNUIKYzNCbFkzUlNZWFJwYndBY0FCSVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUNBQ0FBQU5BQVlSMWhZQUFCSUFkR2hwY3dBQwpBQVlBOGdBQUFDQUFBQUFBQUFBQUFBQUFB
QU1BQUFEQUJnQUFBUUFBQUJRQUFBQUFBQUFBR3dBQWdBd0FBQUFoQXdBQUJ3QllBQUFBCklRTUFB
QXNBWEFBQUFDRURBQUFLQU1nQUFBQWhBd0FBQ3dETUFBQUFJUU1BQUFvQTlrUWtCQUZXaS9ISEJn
QUFBQUIwQ1Zib0FBQUEKQUlQRUJJdkdYc0lFQUFvQUFBQkNBQUFBQmdBU0FBQUFjd0FBQUJRQUJB
QUFBUFVBQUFCRUFBQUFBQUFBQUFBQUFBQWZBQUFBQUFBQQpBQVFBQUFBQUFBQUFXeE1BQUFnQUFB
QUVBQUFBQmdBQUFCWUFBQUFBQUFBQUJBQUFBQUFBQUFCYkV3QUFBZ0FFQUFBQUFBRHhBQUFBCmtB
QUFBRjBBRUJFQUFBQUFBQUFBQUFBQUFBQWZBQUFBQ0FBQUFCd0FBQURpRmdBQUFBQUFBQUFBQUUx
bFpHbGhVMmhoY21Wa1ZVbEoKYldGblpVVnNaVzFsYm5RNk9tQnpZMkZzWVhJZ1pHVnNaWFJwYm1j
Z1pHVnpkSEoxWTNSdmNpY0FIQUFTRUFBQUFBQUFBQUFBQUFBQQpBQVFBQUFBQUFBQUFBQUFnQWdB
QURRQUdFZEVXQUFBU0FIUm9hWE1BQWdBR0FBd0FBQUFhQXdBQUJ3QjRBQUFBR2dNQUFBc0FmQUFB
CkFCb0RBQUFLQUtFQUFBQUFoY0IxWHFFQUFBQUFpd2lMRlFBQUFBQ0xBbE5XVjFGb1oxTUFBR2dB
QUFBQVVQOFZBQUFBQUl2NFYvOFYKQUFBQUFJUEVGSXZ3NkFBQUFBQ0Y5b3NkQUFBQUFLTUFBQUFB
ZEFaVy85T0R4QVNGLzNRR1YvL1RnOFFFb1FBQUFBQmZYbHZEQVFBQQpBRElEQUFBR0FBb0FBQUF2
QXdBQUJnQVNBQUFBTGdNQUFBWUFJZ0FBQUI4QUFBQUdBQ2tBQUFBdEF3QUFCZ0F5QUFBQUxBTUFB
QVlBClBBQUFBTmdBQUFBVUFFUUFBQURxQUFBQUJnQkpBQUFBTWdNQUFBWUFZQUFBQURJREFBQUdB
QVFBQUFEMUFBQUFoQUFBQUFBQUFBQUEKQUFBQWFBQUFBQUFBQUFBQUFBQUFBQUFBQUZzVEFBQUFB
QUFBQkFBQUFCa0FBQUJPQUFBQUFBQUFBQUFBQUFBQUFBQUFXQm9BQUFBQQpCQUFBQUFBQUdnQUFB
RXdBQUFBQUFBQUFBQUFBQUFBQUFBQllHZ0FBQUFBSUFBQUFBQUFiQUFBQVNnQUFBQUFBQUFBQUFB
QUFBQUFBCkFGZ2FBQUFBQUF3QUFBQUFBUEVBQUFDL0FBQUFSd0FQRVFBQUFBQUFBQUFBQUFBQUFH
Z0FBQUFBQUFBQVp3QUFBR0VYQUFBQUFBQUEKQUFBQVkzSmxZWFJsVFdWa2FXRlFSRVpEYkc5elpX
UkRZWEIwYVc5dWMwbHRZV2RsQUJ3QUVoQUFBQUFBQUFBQUFBQUFBQUFNQUFBQQpBQUFBQUFBQUFB
SUFBQklBREJGdEVnQUFBQUFBQUFBQWFXMWhaMlVBRGdBNUVTY0FBQUFBQUFBQVZCSUFBQTRBT1JF
d0FBQUFBQUFBCkFGWVNBQUFPQURrUlVBQUFBQUFBQUFCZUVnQUFEZ0E1RVZvQUFBQUFBQUFBWGhJ
QUFBSUFCZ0FBOGdBQUFDQUFBQUFBQUFBQUFBQUEKQUdnQUFBQVFBZ0FBQVFBQUFCUUFBQUFBQUFB
QVBRQUFnQXdBQUFBckF3QUFCd0M0QUFBQUt3TUFBQXNBdkFBQUFDc0RBQUFLQUFjQgpBQUF5QXdB
QUN3QUxBUUFBTWdNQUFBb0FGd0VBQUNzREFBQUxBQnNCQUFBckF3QUFDZ0FuQVFBQUt3TUFBQXNB
S3dFQUFDc0RBQUFLCkFEY0JBQUFyQXdBQUN3QTdBUUFBS3dNQUFBb0FSd0VBQUNzREFBQUxBRXNC
QUFBckF3QUFDZ0JnQVFBQUt3TUFBQXNBWkFFQUFDc0QKQUFBS0FMZ0JBQUFBaEFVQUFBQUFkUkVK
QlFBQUFBRG9BQUFBQUtNQUFBQUF3NkVBQUFBQXd3Y0FBQUE5QXdBQUJnQVBBQUFBUFFNQQpBQVlB
RkFBQUFDc0RBQUFVQUJrQUFBQTZBd0FBQmdBZkFBQUFPZ01BQUFZQUJBQUFBUFVBQUFBa0FBQUFB
QUFBQUFBQUFBQWtBQUFBCkFBQUFBQUFBQUFBQUFBQUFXeE1BQUFBQUFBQUVBQUFBOFFBQUFIa0FB
QUJCQUE4UkFBQUFBQUFBQUFBQUFBQUFKQUFBQUFBQUFBQWoKQUFBQVlSY0FBQUFBQUFBQUFBQnRa
V1JwWVZCRVJrTnNiM05sWkVOaGNIUnBiMjV6U1cxaFoyVUFIQUFTRUFBQUFBQUFBQUFBQUFBQQpB
QUFBQUFBQUFBQUFBQUFBQ2dBQUVnQU1FVzBTQUFBQUFBQUFBQUJwYldGblpRQUNBQVlBQUFBQThn
QUFBQ0FBQUFBQUFBQUFBQUFBCkFDUUFBQUFRQWdBQUFRQUFBQlFBQUFBQUFBQUFQUUFBZ0F3QUFB
QTNBd0FBQndCWUFBQUFOd01BQUFzQVhBQUFBRGNEQUFBS0FLRUEKQUFBNkF3QUFDd0NsQUFBQU9n
TUFBQW9BdkFBQUFEY0RBQUFMQU1BQUFBQTNBd0FBQ2dDaEFBQUFBSVhBZFY2aEFBQUFBSXNJaXhV
QQpBQUFBaXdKVFZsZFJhQkFKQUFCb0FBQUFBRkQvRlFBQUFBQ0wrRmYvRlFBQUFBQ0R4QlNMOE9n
QUFBQUFoZmFMSFFBQUFBQ2pBQUFBCkFIUUdWdi9UZzhRRWhmOTBCbGYvMDRQRUJLRUFBQUFBWDE1
Ynd3RUFBQUJGQXdBQUJnQUtBQUFBTHdNQUFBWUFFZ0FBQUM0REFBQUcKQUNJQUFBQWRBQUFBQmdB
cEFBQUFMUU1BQUFZQU1nQUFBQ3dEQUFBR0FEd0FBQURZQUFBQUZBQkVBQUFBNmdBQUFBWUFTUUFB
QUVVRApBQUFHQUdBQUFBQkZBd0FBQmdBRUFBQUE5UUFBQUlRQUFBQUFBQUFBQUFBQUFHZ0FBQUFB
QUFBQUFBQUFBQUFBQUFCYkV3QUFBQUFBCkFBUUFBQUFaQUFBQVRnQUFBQUFBQUFBQUFBQUFBQUFB
QUZnYUFBQUFBQVFBQUFBQUFCb0FBQUJNQUFBQUFBQUFBQUFBQUFBQUFBQUEKV0JvQUFBQUFDQUFB
QUFBQUd3QUFBRW9BQUFBQUFBQUFBQUFBQUFBQUFBQllHZ0FBQUFBTUFBQUFBQUR4QUFBQXdBQUFB
RWdBRHhFQQpBQUFBQUFBQUFBQUFBQUJvQUFBQUFBQUFBR2NBQUFCaEZ3QUFBQUFBQUFBQUFHTnla
V0YwWlUxbFpHbGhVRVJHUVhWa2FXOVdiMngxCmJXVklhV2RvU1cxaFoyVUFIQUFTRUFBQUFBQUFB
QUFBQUFBQUFBd0FBQUFBQUFBQUFBQUFBZ0FBRWdBTUVXMFNBQUFBQUFBQUFBQnAKYldGblpRQU9B
RGtSSndBQUFBQUFBQUJVRWdBQURnQTVFVEFBQUFBQUFBQUFWaElBQUE0QU9SRlFBQUFBQUFBQUFG
NFNBQUFPQURrUgpXZ0FBQUFBQUFBQmVFZ0FBQWdBR0FQSUFBQUFnQUFBQUFBQUFBQUFBQUFCb0FB
QUFFQUlBQUFFQUFBQVVBQUFBQUFBQUFENEFBSUFNCkFBQUFRZ01BQUFjQXVBQUFBRUlEQUFBTEFM
d0FBQUJDQXdBQUNnQUlBUUFBUlFNQUFBc0FEQUVBQUVVREFBQUtBQmdCQUFCQ0F3QUEKQ3dBY0FR
QUFRZ01BQUFvQUtBRUFBRUlEQUFBTEFDd0JBQUJDQXdBQUNnQTRBUUFBUWdNQUFBc0FQQUVBQUVJ
REFBQUtBRWdCQUFCQwpBd0FBQ3dCTUFRQUFRZ01BQUFvQVlBRUFBRUlEQUFBTEFHUUJBQUJDQXdB
QUNnQzRBUUFBQUlRRkFBQUFBSFVSQ1FVQUFBQUE2QUFBCkFBQ2pBQUFBQU1PaEFBQUFBTU1IQUFB
QVVBTUFBQVlBRHdBQUFGQURBQUFHQUJRQUFBQkNBd0FBRkFBWkFBQUFUUU1BQUFZQUh3QUEKQUUw
REFBQUdBQVFBQUFEMUFBQUFKQUFBQUFBQUFBQUFBQUFBSkFBQUFBQUFBQUFBQUFBQUFBQUFBRnNU
QUFBQUFBQUFCQUFBQVBFQQpBQUI2QUFBQVFnQVBFUUFBQUFBQUFBQUFBQUFBQUNRQUFBQUFBQUFB
SXdBQUFHRVhBQUFBQUFBQUFBQUFiV1ZrYVdGUVJFWkJkV1JwCmIxWnZiSFZ0WlVocFoyaEpiV0Zu
WlFBY0FCSVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBS0FBQVNBQXdSYlJJQUFBQUEK
QUFBQUFHbHRZV2RsQUFJQUJnQUFBUElBQUFBZ0FBQUFBQUFBQUFBQUFBQWtBQUFBRUFJQUFBRUFB
QUFVQUFBQUFBQUFBRDRBQUlBTQpBQUFBU2dNQUFBY0FXQUFBQUVvREFBQUxBRndBQUFCS0F3QUFD
Z0NpQUFBQVRRTUFBQXNBcGdBQUFFMERBQUFLQUx3QUFBQktBd0FBCkN3REFBQUFBU2dNQUFBb0Fv
UUFBQUFDRndIVmVvUUFBQUFDTENJc1ZBQUFBQUlzQ1UxWlhVV2dSQ0FBQWFBQUFBQUJRL3hVQUFB
QUEKaS9oWC94VUFBQUFBZzhRVWkvRG9BQUFBQUlYMml4MEFBQUFBb3dBQUFBQjBCbGIvMDRQRUJJ
WC9kQVpYLzlPRHhBU2hBQUFBQUY5ZQpXOE1CQUFBQVdBTUFBQVlBQ2dBQUFDOERBQUFHQUJJQUFB
QXVBd0FBQmdBaUFBQUFIZ0FBQUFZQUtRQUFBQzBEQUFBR0FESUFBQUFzCkF3QUFCZ0E4QUFBQTJB
QUFBQlFBUkFBQUFPb0FBQUFHQUVrQUFBQllBd0FBQmdCZ0FBQUFXQU1BQUFZQUJBQUFBUFVBQUFD
RUFBQUEKQUFBQUFBQUFBQUJvQUFBQUFBQUFBQUFBQUFBQUFBQUFXeE1BQUFBQUFBQUVBQUFBR1FB
QUFFNEFBQUFBQUFBQUFBQUFBQUFBQUFCWQpHZ0FBQUFBRUFBQUFBQUFhQUFBQVRBQUFBQUFBQUFB
QUFBQUFBQUFBQUZnYUFBQUFBQWdBQUFBQUFCc0FBQUJLQUFBQUFBQUFBQUFBCkFBQUFBQUFBV0Jv
QUFBQUFEQUFBQUFBQThRQUFBTDhBQUFCSEFBOFJBQUFBQUFBQUFBQUFBQUFBYUFBQUFBQUFBQUJu
QUFBQVlSY0EKQUFBQUFBQUFBQUJqY21WaGRHVk5aV1JwWVZCRVJrRjFaR2x2Vm05c2RXMWxUMlpt
U1cxaFoyVUFIQUFTRUFBQUFBQUFBQUFBQUFBQQpBQXdBQUFBQUFBQUFBQUFBQWdBQUVnQU1FVzBT
QUFBQUFBQUFBQUJwYldGblpRQU9BRGtSSndBQUFBQUFBQUJVRWdBQURnQTVFVEFBCkFBQUFBQUFB
VmhJQUFBNEFPUkZRQUFBQUFBQUFBRjRTQUFBT0FEa1JXZ0FBQUFBQUFBQmVFZ0FBQWdBR0FBRHlB
QUFBSUFBQUFBQUEKQUFBQUFBQUFhQUFBQUJBQ0FBQUJBQUFBRkFBQUFBQUFBQUEvQUFDQURBQUFB
RlVEQUFBSEFMZ0FBQUJWQXdBQUN3QzhBQUFBVlFNQQpBQW9BQndFQUFGZ0RBQUFMQUFzQkFBQllB
d0FBQ2dBWEFRQUFWUU1BQUFzQUd3RUFBRlVEQUFBS0FDY0JBQUJWQXdBQUN3QXJBUUFBClZRTUFB
QW9BTndFQUFGVURBQUFMQURzQkFBQlZBd0FBQ2dCSEFRQUFWUU1BQUFzQVN3RUFBRlVEQUFBS0FH
QUJBQUJWQXdBQUN3QmsKQVFBQVZRTUFBQW9BdUFFQUFBQ0VCUUFBQUFCMUVRa0ZBQUFBQU9nQUFB
QUFvd0FBQUFERG9RQUFBQUREQndBQUFHTURBQUFHQUE4QQpBQUJqQXdBQUJnQVVBQUFBVlFNQUFC
UUFHUUFBQUdBREFBQUdBQjhBQUFCZ0F3QUFCZ0FFQUFBQTlRQUFBQ1FBQUFBQUFBQUFBQUFBCkFD
UUFBQUFBQUFBQUFBQUFBQUFBQUFCYkV3QUFBQUFBQUFRQUFBRHhBQUFBZVFBQUFFRUFEeEVBQUFB
QUFBQUFBQUFBQUFBa0FBQUEKQUFBQUFDTUFBQUJoRndBQUFBQUFBQUFBQUcxbFpHbGhVRVJHUVhW
a2FXOVdiMngxYldWUFptWkpiV0ZuWlFBY0FCSVFBQUFBQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUtBQUFTQUF3UmJSSUFBQUFBQUFBQUFHbHRZV2RsQUFJQUJnQUFBQUR5QUFBQUlBQUFBQUFB
CkFBQUFBQUFBSkFBQUFCQUNBQUFCQUFBQUZBQUFBQUFBQUFBL0FBQ0FEQUFBQUYwREFBQUhBRmdB
QUFCZEF3QUFDd0JjQUFBQVhRTUEKQUFvQW9RQUFBR0FEQUFBTEFLVUFBQUJnQXdBQUNnQzhBQUFB
WFFNQUFBc0F3QUFBQUYwREFBQUtBS0VBQUFBQWhjQjFYcUVBQUFBQQppd2lMRlFBQUFBQ0xBbE5X
VjFGb2VBOEFBR2dBQUFBQVVQOFZBQUFBQUl2NFYvOFZBQUFBQUlQRUZJdnc2QUFBQUFDRjlvc2RB
QUFBCkFLTUFBQUFBZEFaVy85T0R4QVNGLzNRR1YvL1RnOFFFb1FBQUFBQmZYbHZEQVFBQUFHc0RB
QUFHQUFvQUFBQXZBd0FBQmdBU0FBQUEKTGdNQUFBWUFJZ0FBQUNFQUFBQUdBQ2tBQUFBdEF3QUFC
Z0F5QUFBQUxBTUFBQVlBUEFBQUFOZ0FBQUFVQUVRQUFBRHFBQUFBQmdCSgpBQUFBYXdNQUFBWUFZ
QUFBQUdzREFBQUdBQVFBQUFEMUFBQUFoQUFBQUFBQUFBQUFBQUFBYUFBQUFBQUFBQUFBQUFBQUFB
QUFBRnNUCkFBQUFBQUFBQkFBQUFCa0FBQUJPQUFBQUFBQUFBQUFBQUFBQUFBQUFXQm9BQUFBQUJB
QUFBQUFBR2dBQUFFd0FBQUFBQUFBQUFBQUEKQUFBQUFBQllHZ0FBQUFBSUFBQUFBQUFiQUFBQVNn
QUFBQUFBQUFBQUFBQUFBQUFBQUZnYUFBQUFBQXdBQUFBQUFQRUFBQUM4QUFBQQpSQUFQRVFBQUFB
QUFBQUFBQUFBQUFHZ0FBQUFBQUFBQVp3QUFBR0VYQUFBQUFBQUFBQUFBWTNKbFlYUmxUV1ZrYVdG
UVJFWlFZWFZ6ClpVSjFkSFJ2YmtsdFlXZGxBQndBRWhBQUFBQUFBQUFBQUFBQUFBQU1BQUFBQUFB
QUFBQUFBQUlBQUJJQURCRnRFZ0FBQUFBQUFBQUEKYVcxaFoyVUFEZ0E1RVNjQUFBQUFBQUFBVkJJ
QUFBNEFPUkV3QUFBQUFBQUFBRllTQUFBT0FEa1JVQUFBQUFBQUFBQmVFZ0FBRGdBNQpFVm9BQUFB
QUFBQUFYaElBQUFJQUJnRHlBQUFBSUFBQUFBQUFBQUFBQUFBQWFBQUFBQkFDQUFBQkFBQUFGQUFB
QUFBQUFBQkFBQUNBCkRBQUFBR2dEQUFBSEFMZ0FBQUJvQXdBQUN3QzhBQUFBYUFNQUFBb0FCQUVB
QUdzREFBQUxBQWdCQUFCckF3QUFDZ0FVQVFBQWFBTUEKQUFzQUdBRUFBR2dEQUFBS0FDUUJBQUJv
QXdBQUN3QW9BUUFBYUFNQUFBb0FOQUVBQUdnREFBQUxBRGdCQUFCb0F3QUFDZ0JFQVFBQQphQU1B
QUFzQVNBRUFBR2dEQUFBS0FGd0JBQUJvQXdBQUN3QmdBUUFBYUFNQUFBb0F1QUVBQUFDRUJRQUFB
QUIxRVFrRkFBQUFBT2dBCkFBQUFvd0FBQUFERG9RQUFBQUREQndBQUFIWURBQUFHQUE4QUFBQjJB
d0FBQmdBVUFBQUFhQU1BQUJRQUdRQUFBSE1EQUFBR0FCOEEKQUFCekF3QUFCZ0FFQUFBQTlRQUFB
Q1FBQUFBQUFBQUFBQUFBQUNRQUFBQUFBQUFBQUFBQUFBQUFBQUJiRXdBQUFBQUFBQVFBQUFEeApB
QUFBZGdBQUFENEFEeEVBQUFBQUFBQUFBQUFBQUFBa0FBQUFBQUFBQUNNQUFBQmhGd0FBQUFBQUFB
QUFBRzFsWkdsaFVFUkdVR0YxCmMyVkNkWFIwYjI1SmJXRm5aUUFjQUJJUUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFLQUFBU0FBd1JiUklBQUFBQUFBQUEKQUdsdFlXZGxBQUlBQmdBQUFQ
SUFBQUFnQUFBQUFBQUFBQUFBQUFBa0FBQUFFQUlBQUFFQUFBQVVBQUFBQUFBQUFFQUFBSUFNQUFB
QQpjQU1BQUFjQVdBQUFBSEFEQUFBTEFGd0FBQUJ3QXdBQUNnQ2VBQUFBY3dNQUFBc0FvZ0FBQUhN
REFBQUtBTGdBQUFCd0F3QUFDd0M4CkFBQUFjQU1BQUFvQW9RQUFBQUNGd0hWZW9RQUFBQUNMQ0lz
VkFBQUFBSXNDVTFaWFVXaHZEd0FBYUFBQUFBQlEveFVBQUFBQWkvaFgKL3hVQUFBQUFnOFFVaS9E
b0FBQUFBSVgyaXgwQUFBQUFvd0FBQUFCMEJsYi8wNFBFQklYL2RBWlgvOU9EeEFTaEFBQUFBRjll
VzhNQgpBQUFBZmdNQUFBWUFDZ0FBQUM4REFBQUdBQklBQUFBdUF3QUFCZ0FpQUFBQUlnQUFBQVlB
S1FBQUFDMERBQUFHQURJQUFBQXNBd0FBCkJnQThBQUFBMkFBQUFCUUFSQUFBQU9vQUFBQUdBRWtB
QUFCK0F3QUFCZ0JnQUFBQWZnTUFBQVlBQkFBQUFQVUFBQUNFQUFBQUFBQUEKQUFBQUFBQm9BQUFB
QUFBQUFBQUFBQUFBQUFBQVd4TUFBQUFBQUFBRUFBQUFHUUFBQUU0QUFBQUFBQUFBQUFBQUFBQUFB
QUJZR2dBQQpBQUFFQUFBQUFBQWFBQUFBVEFBQUFBQUFBQUFBQUFBQUFBQUFBRmdhQUFBQUFBZ0FB
QUFBQUJzQUFBQktBQUFBQUFBQUFBQUFBQUFBCkFBQUFXQm9BQUFBQURBQUFBQUFBOFFBQUFMc0FB
QUJEQUE4UkFBQUFBQUFBQUFBQUFBQUFhQUFBQUFBQUFBQm5BQUFBWVJjQUFBQUEKQUFBQUFBQmpj
bVZoZEdWTlpXUnBZVkJFUmxCc1lYbENkWFIwYjI1SmJXRm5aUUFjQUJJUUFBQUFBQUFBQUFBQUFB
QUFEQUFBQUFBQQpBQUFBQUFBQ0FBQVNBQXdSYlJJQUFBQUFBQUFBQUdsdFlXZGxBQTRBT1JFbkFB
QUFBQUFBQUZRU0FBQU9BRGtSTUFBQUFBQUFBQUJXCkVnQUFEZ0E1RVZBQUFBQUFBQUFBWGhJQUFB
NEFPUkZhQUFBQUFBQUFBRjRTQUFBQ0FBWUFBUElBQUFBZ0FBQUFBQUFBQUFBQUFBQm8KQUFBQUVB
SUFBQUVBQUFBVUFBQUFBQUFBQUVFQUFJQU1BQUFBZXdNQUFBY0F1QUFBQUhzREFBQUxBTHdBQUFC
N0F3QUFDZ0FEQVFBQQpmZ01BQUFzQUJ3RUFBSDREQUFBS0FCTUJBQUI3QXdBQUN3QVhBUUFBZXdN
QUFBb0FJd0VBQUhzREFBQUxBQ2NCQUFCN0F3QUFDZ0F6CkFRQUFld01BQUFzQU53RUFBSHNEQUFB
S0FFTUJBQUI3QXdBQUN3QkhBUUFBZXdNQUFBb0FYQUVBQUhzREFBQUxBR0FCQUFCN0F3QUEKQ2dD
NEFRQUFBSVFGQUFBQUFIVVJDUVVBQUFBQTZBQUFBQUNqQUFBQUFNT2hBQUFBQU1NSEFBQUFpUU1B
QUFZQUR3QUFBSWtEQUFBRwpBQlFBQUFCN0F3QUFGQUFaQUFBQWhnTUFBQVlBSHdBQUFJWURBQUFH
QUFRQUFBRDFBQUFBSkFBQUFBQUFBQUFBQUFBQUpBQUFBQUFBCkFBQUFBQUFBQUFBQUFGc1RBQUFB
QUFBQUJBQUFBUEVBQUFCMUFBQUFQUUFQRVFBQUFBQUFBQUFBQUFBQUFDUUFBQUFBQUFBQUl3QUEK
QUdFWEFBQUFBQUFBQUFBQWJXVmthV0ZRUkVaUWJHRjVRblYwZEc5dVNXMWhaMlVBSEFBU0VBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQQpBQUFBQUFBQUNnQUFFZ0FNRVcwU0FBQUFBQUFBQUFCcGJXRm5a
UUFDQUFZQUFBQUE4Z0FBQUNBQUFBQUFBQUFBQUFBQUFDUUFBQUFRCkFnQUFBUUFBQUJRQUFBQUFB
QUFBUVFBQWdBd0FBQUNEQXdBQUJ3QllBQUFBZ3dNQUFBc0FYQUFBQUlNREFBQUtBSjBBQUFDR0F3
QUEKQ3dDaEFBQUFoZ01BQUFvQXVBQUFBSU1EQUFBTEFMd0FBQUNEQXdBQUNnQ2hBQUFBQUlYQWRW
NmhBQUFBQUlzSWl4VUFBQUFBaXdKVApWbGRSYURrSUFBQm9BQUFBQUZEL0ZRQUFBQUNMK0ZmL0ZR
QUFBQUNEeEJTTDhPZ0FBQUFBaGZhTEhRQUFBQUNqQUFBQUFIUUdWdi9UCmc4UUVoZjkwQmxmLzA0
UEVCS0VBQUFBQVgxNWJ3d0VBQUFDUkF3QUFCZ0FLQUFBQUx3TUFBQVlBRWdBQUFDNERBQUFHQUNJ
QUFBQWcKQUFBQUJnQXBBQUFBTFFNQUFBWUFNZ0FBQUN3REFBQUdBRHdBQUFEWUFBQUFGQUJFQUFB
QTZnQUFBQVlBU1FBQUFKRURBQUFHQUdBQQpBQUNSQXdBQUJnQUVBQUFBOVFBQUFJUUFBQUFBQUFB
QUFBQUFBR2dBQUFBQUFBQUFBQUFBQUFBQUFBQmJFd0FBQUFBQUFBUUFBQUFaCkFBQUFUZ0FBQUFB
QUFBQUFBQUFBQUFBQUFGZ2FBQUFBQUFRQUFBQUFBQm9BQUFCTUFBQUFBQUFBQUFBQUFBQUFBQUFB
V0JvQUFBQUEKQ0FBQUFBQUFHd0FBQUVvQUFBQUFBQUFBQUFBQUFBQUFBQUJZR2dBQUFBQU1BQUFB
QUFEeEFBQUF3QUFBQUVnQUR4RUFBQUFBQUFBQQpBQUFBQUFCb0FBQUFBQUFBQUdjQUFBQmhGd0FB
QUFBQUFBQUFBR055WldGMFpVMWxaR2xoVUVSR1JXNTBaWEpHZFd4c2MyTnlaV1Z1ClNXMWhaMlVB
SEFBU0VBQUFBQUFBQUFBQUFBQUFBQXdBQUFBQUFBQUFBQUFBQWdBQUVnQU1FVzBTQUFBQUFBQUFB
QUJwYldGblpRQU8KQURrUkp3QUFBQUFBQUFCVUVnQUFEZ0E1RVRBQUFBQUFBQUFBVmhJQUFBNEFP
UkZRQUFBQUFBQUFBRjRTQUFBT0FEa1JXZ0FBQUFBQQpBQUJlRWdBQUFnQUdBUElBQUFBZ0FBQUFB
QUFBQUFBQUFBQm9BQUFBRUFJQUFBRUFBQUFVQUFBQUFBQUFBRUlBQUlBTUFBQUFqZ01BCkFBY0F1
QUFBQUk0REFBQUxBTHdBQUFDT0F3QUFDZ0FJQVFBQWtRTUFBQXNBREFFQUFKRURBQUFLQUJnQkFB
Q09Bd0FBQ3dBY0FRQUEKamdNQUFBb0FLQUVBQUk0REFBQUxBQ3dCQUFDT0F3QUFDZ0E0QVFBQWpn
TUFBQXNBUEFFQUFJNERBQUFLQUVnQkFBQ09Bd0FBQ3dCTQpBUUFBamdNQUFBb0FZQUVBQUk0REFB
QUxBR1FCQUFDT0F3QUFDZ0M0QVFBQUFJUUZBQUFBQUhVUkNRVUFBQUFBNkFBQUFBQ2pBQUFBCkFN
T2hBQUFBQU1NSEFBQUFuQU1BQUFZQUR3QUFBSndEQUFBR0FCUUFBQUNPQXdBQUZBQVpBQUFBbVFN
QUFBWUFId0FBQUprREFBQUcKQUFRQUFBRDFBQUFBSkFBQUFBQUFBQUFBQUFBQUpBQUFBQUFBQUFB
QUFBQUFBQUFBQUZzVEFBQUFBQUFBQkFBQUFQRUFBQUI2QUFBQQpRZ0FQRVFBQUFBQUFBQUFBQUFB
QUFDUUFBQUFBQUFBQUl3QUFBR0VYQUFBQUFBQUFBQUFBYldWa2FXRlFSRVpGYm5SbGNrWjFiR3h6
ClkzSmxaVzVKYldGblpRQWNBQklRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUtBQUFT
QUF3UmJSSUFBQUFBQUFBQUFHbHQKWVdkbEFBSUFCZ0FBQVBJQUFBQWdBQUFBQUFBQUFBQUFBQUFr
QUFBQUVBSUFBQUVBQUFBVUFBQUFBQUFBQUVJQUFJQU1BQUFBbGdNQQpBQWNBV0FBQUFKWURBQUFM
QUZ3QUFBQ1dBd0FBQ2dDaUFBQUFtUU1BQUFzQXBnQUFBSmtEQUFBS0FMd0FBQUNXQXdBQUN3REFB
QUFBCmxnTUFBQW9Bb1FBQUFBQ0Z3SFZlb1FBQUFBQ0xDSXNWQUFBQUFJc0NVMVpYVVdpZ0R3QUFh
QUFBQUFCUS94VUFBQUFBaS9oWC94VUEKQUFBQWc4UVVpL0RvQUFBQUFJWDJpeDBBQUFBQW93QUFB
QUIwQmxiLzA0UEVCSVgvZEFaWC85T0R4QVNoQUFBQUFGOWVXOE1CQUFBQQpwQU1BQUFZQUNnQUFB
QzhEQUFBR0FCSUFBQUF1QXdBQUJnQWlBQUFBSkFBQUFBWUFLUUFBQUMwREFBQUdBRElBQUFBc0F3
QUFCZ0E4CkFBQUEyQUFBQUJRQVJBQUFBT29BQUFBR0FFa0FBQUNrQXdBQUJnQmdBQUFBcEFNQUFB
WUFCQUFBQVBVQUFBQ0VBQUFBQUFBQUFBQUEKQUFCb0FBQUFBQUFBQUFBQUFBQUFBQUFBV3hNQUFB
QUFBQUFFQUFBQUdRQUFBRTRBQUFBQUFBQUFBQUFBQUFBQUFBQllHZ0FBQUFBRQpBQUFBQUFBYUFB
QUFUQUFBQUFBQUFBQUFBQUFBQUFBQUFGZ2FBQUFBQUFnQUFBQUFBQnNBQUFCS0FBQUFBQUFBQUFB
QUFBQUFBQUFBCldCb0FBQUFBREFBQUFBQUE4UUFBQUw4QUFBQkhBQThSQUFBQUFBQUFBQUFBQUFB
QWFBQUFBQUFBQUFCbkFBQUFZUmNBQUFBQUFBQUEKQUFCamNtVmhkR1ZOWldScFlWQkVSbE5sWld0
VWIxSmxZV3gwYVcxbFNXMWhaMlVBSEFBU0VBQUFBQUFBQUFBQUFBQUFBQXdBQUFBQQpBQUFBQUFB
QUFnQUFFZ0FNRVcwU0FBQUFBQUFBQUFCcGJXRm5aUUFPQURrUkp3QUFBQUFBQUFCVUVnQUFEZ0E1
RVRBQUFBQUFBQUFBClZoSUFBQTRBT1JGUUFBQUFBQUFBQUY0U0FBQU9BRGtSV2dBQUFBQUFBQUJl
RWdBQUFnQUdBQUR5QUFBQUlBQUFBQUFBQUFBQUFBQUEKYUFBQUFCQUNBQUFCQUFBQUZBQUFBQUFB
QUFCREFBQ0FEQUFBQUtFREFBQUhBTGdBQUFDaEF3QUFDd0M4QUFBQW9RTUFBQW9BQndFQQpBS1FE
QUFBTEFBc0JBQUNrQXdBQUNnQVhBUUFBb1FNQUFBc0FHd0VBQUtFREFBQUtBQ2NCQUFDaEF3QUFD
d0FyQVFBQW9RTUFBQW9BCk53RUFBS0VEQUFBTEFEc0JBQUNoQXdBQUNnQkhBUUFBb1FNQUFBc0FT
d0VBQUtFREFBQUtBR0FCQUFDaEF3QUFDd0JrQVFBQW9RTUEKQUFvQXVBRUFBQUNFQlFBQUFBQjFF
UWtGQUFBQUFPZ0FBQUFBb3dBQUFBRERvUUFBQUFEREJ3QUFBSzhEQUFBR0FBOEFBQUN2QXdBQQpC
Z0FVQUFBQW9RTUFBQlFBR1FBQUFLd0RBQUFHQUI4QUFBQ3NBd0FBQmdBRUFBQUE5UUFBQUNRQUFB
QUFBQUFBQUFBQUFDUUFBQUFBCkFBQUFBQUFBQUFBQUFBQmJFd0FBQUFBQUFBUUFBQUR4QUFBQWVR
QUFBRUVBRHhFQUFBQUFBQUFBQUFBQUFBQWtBQUFBQUFBQUFDTUEKQUFCaEZ3QUFBQUFBQUFBQUFH
MWxaR2xoVUVSR1UyVmxhMVJ2VW1WaGJIUnBiV1ZKYldGblpRQWNBQklRQUFBQUFBQUFBQUFBQUFB
QQpBQUFBQUFBQUFBQUFBQUFLQUFBU0FBd1JiUklBQUFBQUFBQUFBR2x0WVdkbEFBSUFCZ0FBQUFE
eUFBQUFJQUFBQUFBQUFBQUFBQUFBCkpBQUFBQkFDQUFBQkFBQUFGQUFBQUFBQUFBQkRBQUNBREFB
QUFLa0RBQUFIQUZnQUFBQ3BBd0FBQ3dCY0FBQUFxUU1BQUFvQW9RQUEKQUt3REFBQUxBS1VBQUFD
c0F3QUFDZ0M4QUFBQXFRTUFBQXNBd0FBQUFLa0RBQUFLQUtFQUFBQUFoY0IxWHFFQUFBQUFpd2lM
RlFBQQpBQUNMQWxOV1YxRm8yUWNBQUdnQUFBQUFVUDhWQUFBQUFJdjRWLzhWQUFBQUFJUEVGSXZ3
NkFBQUFBQ0Y5b3NkQUFBQUFLTUFBQUFBCmRBWlcvOU9EeEFTRi8zUUdWLy9UZzhRRW9RQUFBQUJm
WGx2REFRQUFBTGNEQUFBR0FBb0FBQUF2QXdBQUJnQVNBQUFBTGdNQUFBWUEKSWdBQUFDTUFBQUFH
QUNrQUFBQXRBd0FBQmdBeUFBQUFMQU1BQUFZQVBBQUFBTmdBQUFBVUFFUUFBQURxQUFBQUJnQkpB
QUFBdHdNQQpBQVlBWUFBQUFMY0RBQUFHQUFRQUFBRDFBQUFBaEFBQUFBQUFBQUFBQUFBQWFBQUFB
QUFBQUFBQUFBQUFBQUFBQUZzVEFBQUFBQUFBCkJBQUFBQmtBQUFCT0FBQUFBQUFBQUFBQUFBQUFB
QUFBV0JvQUFBQUFCQUFBQUFBQUdnQUFBRXdBQUFBQUFBQUFBQUFBQUFBQUFBQlkKR2dBQUFBQUlB
QUFBQUFBYkFBQUFTZ0FBQUFBQUFBQUFBQUFBQUFBQUFGZ2FBQUFBQUF3QUFBQUFBUEVBQUFDNkFB
QUFRZ0FQRVFBQQpBQUFBQUFBQUFBQUFBR2dBQUFBQUFBQUFad0FBQUdFWEFBQUFBQUFBQUFBQVkz
SmxZWFJsVFdWa2FXRlFSRVpTWlhSeVpXRjBNekJKCmJXRm5aUUFjQUJJUUFBQUFBQUFBQUFBQUFB
QUFEQUFBQUFBQUFBQUFBQUFDQUFBU0FBd1JiUklBQUFBQUFBQUFBR2x0WVdkbEFBNEEKT1JFbkFB
QUFBQUFBQUZRU0FBQU9BRGtSTUFBQUFBQUFBQUJXRWdBQURnQTVFVkFBQUFBQUFBQUFYaElBQUE0
QU9SRmFBQUFBQUFBQQpBRjRTQUFBQ0FBWUFBQUR5QUFBQUlBQUFBQUFBQUFBQUFBQUFhQUFBQUJB
Q0FBQUJBQUFBRkFBQUFBQUFBQUJFQUFDQURBQUFBTFFECkFBQUhBTGdBQUFDMEF3QUFDd0M4QUFB
QXRBTUFBQW9BQWdFQUFMY0RBQUFMQUFZQkFBQzNBd0FBQ2dBU0FRQUF0QU1BQUFzQUZnRUEKQUxR
REFBQUtBQ0lCQUFDMEF3QUFDd0FtQVFBQXRBTUFBQW9BTWdFQUFMUURBQUFMQURZQkFBQzBBd0FB
Q2dCQ0FRQUF0QU1BQUFzQQpSZ0VBQUxRREFBQUtBRndCQUFDMEF3QUFDd0JnQVFBQXRBTUFBQW9B
dUFFQUFBQ0VCUUFBQUFCMUVRa0ZBQUFBQU9nQUFBQUFvd0FBCkFBRERvUUFBQUFEREJ3QUFBTUlE
QUFBR0FBOEFBQURDQXdBQUJnQVVBQUFBdEFNQUFCUUFHUUFBQUw4REFBQUdBQjhBQUFDL0F3QUEK
QmdBRUFBQUE5UUFBQUNRQUFBQUFBQUFBQUFBQUFDUUFBQUFBQUFBQUFBQUFBQUFBQUFCYkV3QUFB
QUFBQUFRQUFBRHhBQUFBZEFBQQpBRHdBRHhFQUFBQUFBQUFBQUFBQUFBQWtBQUFBQUFBQUFDTUFB
QUJoRndBQUFBQUFBQUFBQUcxbFpHbGhVRVJHVW1WMGNtVmhkRE13ClNXMWhaMlVBSEFBU0VBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ2dBQUVnQU1FVzBTQUFBQUFBQUFBQUJwYldGblpR
QUMKQUFZQThnQUFBQ0FBQUFBQUFBQUFBQUFBQUNRQUFBQVFBZ0FBQVFBQUFCUUFBQUFBQUFBQVJB
QUFnQXdBQUFDOEF3QUFCd0JZQUFBQQp2QU1BQUFzQVhBQUFBTHdEQUFBS0FKd0FBQUMvQXdBQUN3
Q2dBQUFBdndNQUFBb0F0QUFBQUx3REFBQUxBTGdBQUFDOEF3QUFDZ0NMClNRUXp3SVA1REErSEhn
RUFBUDhralFBQUFBQzRBUUFBQUlRRkFBQUFBSFVRQ1FVQUFBQUE2QUFBQUFDakFBQUFBS0VBQUFB
QXc3Z0IKQUFBQWhBVUFBQUFBZFJBSkJRQUFBQURvQUFBQUFLTUFBQUFBb1FBQUFBRER1QUVBQUFD
RUJRQUFBQUIxRUFrRkFBQUFBT2dBQUFBQQpvd0FBQUFDaEFBQUFBTU80QVFBQUFJUUZBQUFBQUhV
UUNRVUFBQUFBNkFBQUFBQ2pBQUFBQUtFQUFBQUF3N2dCQUFBQWhBVUFBQUFBCmRSQUpCUUFBQUFE
b0FBQUFBS01BQUFBQW9RQUFBQUREdUFFQUFBQ0VCUUFBQUFCMUVBa0ZBQUFBQU9nQUFBQUFvd0FB
QUFDaEFBQUEKQU1PNEFRQUFBSVFGQUFBQUFIVVFDUVVBQUFBQTZBQUFBQUNqQUFBQUFLRUFBQUFB
dzdnQkFBQUFoQVVBQUFBQWRSQUpCUUFBQUFEbwpBQUFBQUtNQUFBQUFvUUFBQUFERGpVa0FBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFB
QUFBQUFBQUFBQkVBQUFEUkF3QUFCZ0FjQUFBQVBRTUFBQVlBSkFBQUFEMERBQUFHQUNrQUFBQXJB
d0FBRkFBdUFBQUEKT2dNQUFBWUFNd0FBQURvREFBQUdBRDhBQUFCUUF3QUFCZ0JIQUFBQVVBTUFB
QVlBVEFBQUFFSURBQUFVQUZFQUFBQk5Bd0FBQmdCVwpBQUFBVFFNQUFBWUFZZ0FBQUdNREFBQUdB
R29BQUFCakF3QUFCZ0J2QUFBQVZRTUFBQlFBZEFBQUFHQURBQUFHQUhrQUFBQmdBd0FBCkJnQ0ZB
QUFBaVFNQUFBWUFqUUFBQUlrREFBQUdBSklBQUFCN0F3QUFGQUNYQUFBQWhnTUFBQVlBbkFBQUFJ
WURBQUFHQUtnQUFBQjIKQXdBQUJnQ3dBQUFBZGdNQUFBWUF0UUFBQUdnREFBQVVBTG9BQUFCekF3
QUFCZ0MvQUFBQWN3TUFBQVlBeXdBQUFKd0RBQUFHQU5NQQpBQUNjQXdBQUJnRFlBQUFBamdNQUFC
UUEzUUFBQUprREFBQUdBT0lBQUFDWkF3QUFCZ0R1QUFBQXJ3TUFBQVlBOWdBQUFLOERBQUFHCkFQ
c0FBQUNoQXdBQUZBQUFBUUFBckFNQUFBWUFCUUVBQUt3REFBQUdBQkVCQUFEQ0F3QUFCZ0FaQVFB
QXdnTUFBQVlBSGdFQUFMUUQKQUFBVUFDTUJBQUMvQXdBQUJnQW9BUUFBdndNQUFBWUFNQUVBQU1z
REFBQUdBRFFCQUFEUEF3QUFCZ0E0QVFBQXpRTUFBQVlBUEFFQQpBTWdEQUFBR0FFQUJBQURJQXdB
QUJnQkVBUUFBeUFNQUFBWUFTQUVBQU1nREFBQUdBRXdCQUFESkF3QUFCZ0JRQVFBQXlnTUFBQVlB
ClZBRUFBTkFEQUFBR0FGZ0JBQURRQXdBQUJnQmNBUUFBemdNQUFBWUFZQUVBQU13REFBQUdBQVFB
QUFEMUFBQUFKQUFBQUFBQUFBQUEKQUFBQVpBRUFBQUFBQUFBQUFBQUFBQUFBQUZzVEFBQUFBQUFB
QkFBQUFQRUFBQUFMQVFBQVJnQVFFUUFBQUFBQUFBQUFBQUFBQUdRQgpBQUFBQUFBQUxBRUFBTjRX
QUFBQUFBQUFBQUFBVFdWa2FXRlRhR0Z5WldSVlNVbHRZV2RsUld4bGJXVnVkRG82YVcxaFoyVUFI
QUFTCkVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdBQURRQU1FUUFBQUFBQUFBQUFB
QUFBRHdBRkVRQUFBQUFBQUFBa1RFNHgKTWdBUEFBVVJBQUFBQUFBQUFDUk1UakV4QUE4QUJSRUFB
QUFBQUFBQUpFeE9NVEFBRGdBRkVRQUFBQUFBQUFBa1RFNDVBQTRBQlJFQQpBQUFBQUFBQUpFeE9P
QUFPQUFVUkFBQUFBQUFBQUNSTVRqY0FEZ0FGRVFBQUFBQUFBQUFrVEU0MkFBNEFCUkVBQUFBQUFB
QUFKRXhPCk5RQU5BQVlSMWhZQUFCSUFkR2hwY3dBQ0FBWUFBUElBQUFDb0FBQUFBQUFBQUFBQUFB
QmtBUUFBRUFJQUFCSUFBQUNjQUFBQUFBQUEKQUdjQkFJQUFBQUFBYWdFQWdCVUFBQUJ0QVFDQU53
QUFBSndCQUlBNEFBQUFjQUVBZ0ZvQUFBQ2NBUUNBV3dBQUFITUJBSUI5QUFBQQpuQUVBZ0g0QUFB
QjJBUUNBb0FBQUFKd0JBSUNoQUFBQWVRRUFnTU1BQUFDY0FRQ0F4QUFBQUh3QkFJRG1BQUFBbkFF
QWdPY0FBQUIvCkFRQ0FDUUVBQUp3QkFJQUtBUUFBZ2dFQWdDd0JBQUNjQVFDQURBQUFBTWNEQUFB
SEFGZ0FBQURIQXdBQUN3QmNBQUFBeHdNQUFBb0EKcGdBQUFORURBQUFMQUtvQUFBRFJBd0FBQ2dD
eEFBQUEwQU1BQUFzQXRRQUFBTkFEQUFBS0FNSUFBQURQQXdBQUN3REdBQUFBendNQQpBQW9BMHdB
QUFNNERBQUFMQU5jQUFBRE9Bd0FBQ2dEa0FBQUF6UU1BQUFzQTZBQUFBTTBEQUFBS0FQUUFBQURN
QXdBQUN3RDRBQUFBCnpBTUFBQW9BQkFFQUFNc0RBQUFMQUFnQkFBRExBd0FBQ2dBVUFRQUF5Z01B
QUFzQUdBRUFBTW9EQUFBS0FDUUJBQURKQXdBQUN3QW8KQVFBQXlRTUFBQW9BVEFFQUFNY0RBQUFM
QUZBQkFBREhBd0FBQ2dCUmcza01BbE5WVmxlSlRDUVFkUmZvQUFBQUFGRC9GUUFBQUFDRAp4QVJm
WGwxYldjSVVBSXQwSkNpTGZDUWtpMFFrR0dvQVZsZFEveFVBQUFBQVVJbEVKQ3ovRlFBQUFBQ0xi
Q1F3aTB3a05JUEVCSXZZCmk4U0pLSWxJQklsNENJbHdEUDhWQUFBQUFObmdpMVFrTUZHTHhObGNK
QkNKS0lsUUJJbDRDSWx3RFA4VkFBQUFBTm5nZzhRTTJSd2sKVS84VkFBQUFBR29SVS84VkFBQUFB
SXRNSkNTRHhCVG9BQUFBQUl0TUpDQlFnK3dRaThTSktJbElCSWw0Q0ZPSmNBei9GUUFBQUFDTApU
Q1FvaXhHRHhBaUx4SWtvaTJ3a01JbG9CSWw0Q0lsd0RJdENHRlAvMEl0RUpCaGZYbDFiV2NJVUFC
QUFBQURIQXdBQUZBQVhBQUFBCjF3TUFBQVlBT1FBQUFONEFBQUFHQUVRQUFBRGRBQUFBQmdCa0FB
QUFFQUVBQUFZQWdnQUFBRnNCQUFBR0FKRUFBQUR5QUFBQUJnQ2EKQUFBQUx3RUFBQVlBcGdBQUFN
Y0RBQUFVQU1JQUFBRDdBQUFBQmdBRUFBQUE5UUFBQUdRQUFBQUFBQUFBQUFBQUFQSUFBQUFFQUFB
QQpGQUFBQUFBQUFBQmJFd0FBRFFBSUFBUUFBQUFHQUFBQTdBQUFBQVFBQUFBVUFBQUFBQUFBQUdB
ZUFBQUhBQXdBQUFBQUFBY0FBQURyCkFBQUFCQUFBQUJRQUFBQUFBQUFBeUI0QUFBWUFFQUFBQUFB
QThRQUFBRmtCQUFCV0FCQVJBQUFBQUFBQUFBQUFBQUFBOGdBQUFBMEEKQUFEcUFBQUEyQllBQUFB
QUFBQUFBQUJOWldScFlWTm9ZWEpsWkZWSlNXMWhaMlZGYkdWdFpXNTBPanBqY21WaGRHVkNZV05y
WjNKdgpkVzVrU1cxaFoyVUFIQUFTRUFRQUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQUFBQUFBZ0FB
RFFBR0VkRVdBQUFTQUhSb2FYTUFFZ0FMCkVRUUFBQUFwRUFBQVkyOXVkR1Y0ZEFBUEFBc1JDQUFB
QUE0UUFBQnlaV04wQUJrQUN4RUVBQUFBYlJJQUFHTnZiRzl5WldSRGIyNTAKWlc1MEFBNEFPUkVW
QUFBQUFBQUFBTVFVQUFBT0FEa1JOd0FBQUFBQUFBQnlFZ0FBRGdBNUVVSUFBQUFBQUFBQWRCSUFB
QTRBT1JGaQpBQUFBQUFBQUFHSVNBQUFPQURrUmdBQUFBQUFBQUFCaUVnQUFEZ0E1RVk4QUFBQUFB
QUFBWUJJQUFBNEFPUkdZQUFBQUFBQUFBSTBYCkFBQU9BRGtSd0FBQUFBQUFBQUIzRWdBQURnQTVF
ZVFBQUFBQUFBQUExeFlBQUFJQUJnQUFBQUR5QUFBQWVBQUFBQUFBQUFBQUFBQUEKOGdBQUFCQUNB
QUFNQUFBQWJBQUFBQUFBQUFDcUFRQ0FBUUFBQUtzQkFJQVBBQUFBckFFQWdCNEFBQUM1QVFDQUpn
QUFBSzRCQUlBOQpBQUFBcndFQWdFZ0FBQUN4QVFDQWxRQUFBTE1CQUlDZUFBQUF0QUVBZ01ZQUFB
QzJBUUNBNWdBQUFMZ0JBSURxQUFBQXVRRUFnQXdBCkFBRFdBd0FBQndDWUFBQUExZ01BQUFzQW5B
QUFBTllEQUFBS0FFRUJBQURXQXdBQUN3QkZBUUFBMWdNQUFBb0FVUUVBQU5ZREFBQUwKQUZVQkFB
RFdBd0FBQ2dCaEFRQUExZ01BQUFzQVpRRUFBTllEQUFBS0FIRUJBQURXQXdBQUN3QjFBUUFBMWdN
QUFBb0FnUUVBQU5ZRApBQUFMQUlVQkFBRFdBd0FBQ2dDUkFRQUExZ01BQUFzQWxRRUFBTllEQUFB
S0FLRUJBQURXQXdBQUN3Q2xBUUFBMWdNQUFBb0FzUUVBCkFOWURBQUFMQUxVQkFBRFdBd0FBQ2dE
QkFRQUExZ01BQUFzQXhRRUFBTllEQUFBS0FOd0JBQURXQXdBQUN3RGdBUUFBMWdNQUFBb0EKVm92
eDZBQUFBQUNGd0hRZ2k4N29BQUFBQUZEL0ZRQUFBQUNMeUl0RUpBeUR4QVNKQ0lsUUJGN0NCQUNM
RFFBQUFBQ0xFWXRFSkFpTApTUVNKRUlsSUJGN0NCQUFFQUFBQXh3TUFBQlFBRHdBQUFNY0RBQUFV
QUJZQUFBRDBBQUFBQmdBdUFBQUFWQUFBQUFZQUJBQUFBUFVBCkFBQkVBQUFBQUFBQUFBQUFBQUJF
QUFBQUFBQUFBQVFBQUFBQUFBQUFXeE1BQUFNQUFBQUVBQUFBQVFBQUFFQUFBQUFBQUFBQUJBQUEK
QUFBQUFBQmJFd0FBQWdBRUFBQUFBQUR4QUFBQWp3QUFBRXdBRUJFQUFBQUFBQUFBQUFBQUFBQkVB
QUFBQXdBQUFFRUFBQURaRmdBQQpBQUFBQUFBQUFFMWxaR2xoVTJoaGNtVmtWVWxKYldGblpVVnNa
VzFsYm5RNk9tNWhkSFZ5WVd4VGFYcGxBQndBRWhBQUFBQUFBQUFBCkFBQUFBQUFFQUFBQUFBQUFB
QUFBQUFJQUFBMEFCaEhXRmdBQUVnQjBhR2x6QUE0QU9SRVVBQUFBQUFBQUFIb1hBQUFDQUFZQUFQ
SUEKQUFCSUFBQUFBQUFBQUFBQUFBQkVBQUFBRUFJQUFBWUFBQUE4QUFBQUFBQUFBTjBCQUlBREFB
QUEzZ0VBZ0F3QUFBRGZBUUNBS1FBQQpBT0VCQUlBc0FBQUE0QUVBZ0VFQUFBRGhBUUNBREFBQUFO
d0RBQUFIQUhnQUFBRGNBd0FBQ3dCOEFBQUEzQU1BQUFvQTF3QUFBTndECkFBQUxBTnNBQUFEY0F3
QUFDZ0R3QUFBQTNBTUFBQXNBOUFBQUFOd0RBQUFLQUZHRGVRUUpVMVZXVjRsTUpCQjFNb3RVSkJ5
RDdCQ0wKeElrUWkxUWtNSWxRQkl0VUpEU0pVQWlMVkNRNGlWQU1pMFFrS0ZEb0FBQUFBRjllWFZ0
WndoUUF1QUVBQUFDRUJRQUFBQUIxTHRubwpDUVVBQUFBQWcrd1EyVlFrRE5sY0pBalpCUUFBQUFE
WlZDUUUyUndrL3hVQUFBQUFnOFFRb3dBQUFBQ0xmQ1FvaTF3a0pJdE1KQmhxCkFGZFRVZjhWQUFB
QUFJdm9WZjhWQUFBQUFJdndhZ0JXL3hVQUFBQUFpMVFrT0l0TUpEeUR4QXlMeElrUWlVZ0VpVmdJ
aVhnTS94VUEKQUFBQTJlQ0xWQ1FzVVl0TUpEVFpYQ1FRaThTSkVJbElCSWxZQ0lsNERQOFZBQUFB
QU5uZ2c4UU0yUndrVnY4VkFBQUFBR29SVnY4VgpBQUFBQUl0TUpDU0R4QlRvQUFBQUFJdFVKQnlM
VENRZ1VJUHNFSXZFaVJDSlNBU0pXQWhXaVhnTS94VUFBQUFBYWhKVy94VUFBQUFBCml4VUFBQUFB
VWxiL0ZRQUFBQUNMRFFBQUFBQ0xFWVBFR0l2RWlSQ0xVUVNKVUFTTFVRaUxTUXlKVUFoV2lVZ00v
eFVBQUFBQVZ2OFYKQUFBQUFJUEVHSXZGWDE1ZFcxbkNGQUExQUFBQTFnTUFBQlFBU0FBQUFPd0RB
QUFHQUZJQUFBRHNBd0FBQmdCakFBQUE2UU1BQUFZQQpjQUFBQU9ZREFBQUdBSGdBQUFEbEF3QUFC
Z0NQQUFBQTNnQUFBQVlBbUFBQUFOMEFBQUFHQUtNQUFBRGlBd0FBQmdEQkFBQUFFQUVBCkFBWUE0
d0FBQUZzQkFBQUdBUElBQUFEeUFBQUFCZ0Q3QUFBQUx3RUFBQVlBQndFQUFNY0RBQUFVQUNjQkFB
RDdBQUFBQmdBd0FRQUEKTHdFQUFBWUFOZ0VBQU9VREFBQUdBRDRCQUFBdUFRQUFCZ0JFQVFBQUxR
RUFBQVlBWmdFQUFDd0JBQUFHQUcwQkFBQXBBUUFBQmdBRQpBQUFBOVFBQUFHUUFBQUFBQUFBQUFB
QUFBSDRCQUFBRUFBQUFGQUFBQUFBQUFBQmJFd0FBRFFBSUFBUUFBQUFHQUFBQWVBRUFBQVFBCkFB
QVVBQUFBQUFBQUFHQWVBQUFIQUF3QUFBQUFBQWNBQUFCM0FRQUFCQUFBQUJRQUFBQUFBQUFBeUI0
QUFBWUFFQUFBQUFBQThRQUEKQUpnQkFBQllBQkFSQUFBQUFBQUFBQUFBQUFBQWZnRUFBQTBBQUFC
MkFRQUE2QllBQUFBQUFBQUFBQUJOWldScFlWTm9ZWEpsWkZWSgpRME5KYldGblpVVnNaVzFsYm5R
Nk9tTnlaV0YwWlVKaFkydG5jbTkxYm1SSmJXRm5aUUFjQUJJUUJBQUFBQUFBQUFBQUFBQUFFQUFB
CkFBQUFBQUFBQUFBQ0FBQU5BQVlSNXhZQUFCSUFkR2hwY3dBU0FBc1JCQUFBQUNrUUFBQmpiMjUw
WlhoMEFBOEFDeEVJQUFBQURoQUEKQUhKbFkzUUFGZ0FNRWJVVEFBQUFBQUFBQUFCaWJIVmxRMjlz
YjNJQURnQTVFVzRBQUFBQUFBQUF2eGNBQUE0QU9SR05BQUFBQUFBQQpBSElTQUFBT0FEa1JsZ0FB
QUFBQUFBQjBFZ0FBRGdBNUVhRUFBQUFBQUFBQXdSY0FBQTRBT1JHL0FBQUFBQUFBQUdJU0FBQU9B
RGtSCjRRQUFBQUFBQUFCaUVnQUFEZ0E1RWZBQUFBQUFBQUFBWUJJQUFBNEFPUkg1QUFBQUFBQUFB
STBYQUFBT0FEa1JKUUVBQUFBQUFBQjMKRWdBQURnQTVFUzRCQUFBQUFBQUFqUmNBQUE0QU9SRThB
UUFBQUFBQUFJOFhBQUFPQURrUlpBRUFBQUFBQUFCMUVnQUFEZ0E1RVdzQgpBQUFBQUFBQWpCQUFB
QUlBQmdEeUFBQUFvQUFBQUFBQUFBQUFBQUFBZmdFQUFCQUNBQUFSQUFBQWxBQUFBQUFBQUFEa0FR
Q0FBUUFBCkFPVUJBSUFQQUFBQTVnRUFnRGtBQUFEOEFRQ0FRUUFBQU9rQkFJQjhBQUFBNndFQWdK
VUFBQURzQVFDQW5nQUFBTzRCQUlDbkFBQUEKOEFFQWdQWUFBQUR4QVFDQS93QUFBUE1CQUlBckFR
QUE5UUVBZ0RRQkFBRDJBUUNBUWdFQUFQY0JBSUJxQVFBQStRRUFnSFFCQUFENwpBUUNBZGdFQUFQ
d0JBSUFNQUFBQTRRTUFBQWNBbUFBQUFPRURBQUFMQUp3QUFBRGhBd0FBQ2dBc0FRQUE1UU1BQUFz
QU1BRUFBT1VECkFBQUtBRUFCQUFEaEF3QUFDd0JFQVFBQTRRTUFBQW9BVUFFQUFPRURBQUFMQUZR
QkFBRGhBd0FBQ2dCZ0FRQUE0UU1BQUFzQVpBRUEKQU9FREFBQUtBSEFCQUFEaEF3QUFDd0IwQVFB
QTRRTUFBQW9BZ0FFQUFPRURBQUFMQUlRQkFBRGhBd0FBQ2dDUUFRQUE0UU1BQUFzQQpsQUVBQU9F
REFBQUtBS0FCQUFEaEF3QUFDd0NrQVFBQTRRTUFBQW9Bc0FFQUFPRURBQUFMQUxRQkFBRGhBd0FB
Q2dEQUFRQUE0UU1BCkFBc0F4QUVBQU9FREFBQUtBTkFCQUFEaEF3QUFDd0RVQVFBQTRRTUFBQW9B
NEFFQUFPRURBQUFMQU9RQkFBRGhBd0FBQ2dEd0FRQUEKNFFNQUFBc0E5QUVBQU9FREFBQUtBQUFD
QUFEaEF3QUFDd0FFQWdBQTRRTUFBQW9BR0FJQUFPRURBQUFMQUJ3Q0FBRGhBd0FBQ2dETgp6RXcr
aThISFFBd0FBQUFBeHdBQUFBQUF3d3NBQUFEMEF3QUFCZ0FFQUFBQTlRQUFBQ1FBQUFBQUFBQUFB
QUFBQUJBQUFBQUFBQUFBCkFBQUFBQUFBQUFCYkV3QUFBZ0FBQUFRQUFBRHhBQUFBa1FBQUFGNEFF
QkVBQUFBQUFBQUFBQUFBQUFBUUFBQUFBZ0FBQUE4QUFBRHYKRmdBQUFBQUFBQUFBQUUxbFpHbGhV
MmhoY21Wa1ZVbERRMGx0WVdkbFJXeGxiV1Z1ZERvNlRXVmthV0ZUYUdGeVpXUlZTVU5EU1cxaApa
MlZGYkdWdFpXNTBBQndBRWhBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQW9BQUEwQUJo
SG5GZ0FBRWdCMGFHbHpBQUlBCkJnQUFBQUFNQUFBQThRTUFBQWNBV0FBQUFQRURBQUFMQUZ3QUFB
RHhBd0FBQ2dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEKQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBOWdNQUFBWUFCQUFBQUxZQkFBQUdBQWdBQUFCTkFBQUFCZ0FNQUFBQTNBTUFBQVlBRUFB
QQpBRWNBQUFBR0FCUUFBQUJJQUFBQUJnQVlBQUFBbkFFQUFBWUFIQUFBQU9FREFBQUdBQ0FBQUFE
OEF3QUFCZ0N3QWNNRUFBQUE5UUFBCkFDUUFBQUFBQUFBQUFBQUFBQU1BQUFBQUFBQUFBQUFBQUFB
QUFBQmJFd0FBQUFBQUFBUUFBQUR4QUFBQWlnQUFBRmNBRUJFQUFBQUEKQUFBQUFBQUFBQUFEQUFB
QUFBQUFBQUlBQUFEckZnQUFBQUFBQUFBQUFFMWxaR2xoVTJoaGNtVmtWVWxEUTBsdFlXZGxSV3hs
YldWdQpkRG82WTI5dWMzUnlZV2x1UVhOd1pXTjBVbUYwYVc4QUhBQVNFQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBZ0FnQUFEUUFHCkVlb1dBQUFTQUhSb2FYTUFBZ0FHQUFBQThnQUFBQ0FB
QUFBQUFBQUFBQUFBQUFNQUFBREFCZ0FBQVFBQUFCUUFBQUFBQUFBQU1BQUEKZ0F3QUFBRDhBd0FB
QndCWUFBQUEvQU1BQUFzQVhBQUFBUHdEQUFBS0FNd0FBQUQ4QXdBQUN3RFFBQUFBL0FNQUFBb0F4
d0VBQUFBQQp3d0lBQUFCQ0FBQUFCZ0FFQUFBQTlRQUFBQ1FBQUFBQUFBQUFBQUFBQUFjQUFBQUFB
QUFBQUFBQUFBQUFBQUJiRXdBQUFBQUFBQVFBCkFBRHhBQUFBa2dBQUFGOEFFQkVBQUFBQUFBQUFB
QUFBQUFBSEFBQUFBQUFBQUFZQUFBRHZGZ0FBQUFBQUFBQUFBRTFsWkdsaFUyaGgKY21Wa1ZVbERR
MGx0WVdkbFJXeGxiV1Z1ZERvNmZrMWxaR2xoVTJoaGNtVmtWVWxEUTBsdFlXZGxSV3hsYldWdWRB
QWNBQklRQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FLQUFBTkFBWVI1eFlBQUJJQWRH
aHBjd0FDQUFZQUFBQU1BQUFBQVFRQUFBY0FXQUFBCkFBRUVBQUFMQUZ3QUFBQUJCQUFBQ2dEMlJD
UUVBVmFMOGNjR0FBQUFBSFFKVnVnQUFBQUFnOFFFaThaZXdnUUFDZ0FBQUVJQUFBQUcKQUJJQUFB
QnpBQUFBRkFBRUFBQUE5UUFBQUVRQUFBQUFBQUFBQUFBQUFCOEFBQUFBQUFBQUJBQUFBQUFBQUFC
YkV3QUFDQUFBQUFRQQpBQUFHQUFBQUZnQUFBQUFBQUFBRUFBQUFBQUFBQUZzVEFBQUNBQVFBQUFB
QUFQRUFBQUNTQUFBQVh3QVFFUUFBQUFBQUFBQUFBQUFBCkFCOEFBQUFJQUFBQUhBQUFBUE1XQUFB
QUFBQUFBQUFBVFdWa2FXRlRhR0Z5WldSVlNVTkRTVzFoWjJWRmJHVnRaVzUwT2pwZ2MyTmgKYkdG
eUlHUmxiR1YwYVc1bklHUmxjM1J5ZFdOMGIzSW5BQndBRWhBQUFBQUFBQUFBQUFBQUFBQUVBQUFB
QUFBQUFBQUFJQUlBQUEwQQpCaEhuRmdBQUVnQjBhR2x6QUFJQUJnQUFBQXdBQUFEMUF3QUFCd0I0
QUFBQTlRTUFBQXNBZkFBQUFQVURBQUFLQVBaRUpBUUJWb3Z4Cnh3WUFBQUFBZEFsVzZBQUFBQUNE
eEFTTHhsN0NCQUFLQUFBQVFnQUFBQVlBRWdBQUFITUFBQUFVQUFRQUFBRDFBQUFBUkFBQUFBQUEK
QUFBQUFBQUFId0FBQUFBQUFBQUVBQUFBQUFBQUFGc1RBQUFJQUFBQUJBQUFBQVlBQUFBV0FBQUFB
QUFBQUFRQUFBQUFBQUFBV3hNQQpBQUlBQkFBQUFBQUE4UUFBQUpVQUFBQmlBQkFSQUFBQUFBQUFB
QUFBQUFBQUh3QUFBQWdBQUFBY0FBQUF5aFlBQUFBQUFBQUFBQUJOClpXUnBZVk5vWVhKbFpGVkpR
bUZqYTJkeWIzVnVaRVZzWlcxbGJuUTZPbUJ6WTJGc1lYSWdaR1ZzWlhScGJtY2daR1Z6ZEhKMVkz
UnYKY2ljQUhBQVNFQUFBQUFBQUFBQUFBQUFBQUFRQUFBQUFBQUFBQUFBZ0FnQUFEUUFHRWNBV0FB
QVNBSFJvYVhNQUFnQUdBQUFBQUF3QQpBQUMxQWdBQUJ3QjRBQUFBdFFJQUFBc0FmQUFBQUxVQ0FB
QUtBUFpFSkFRQlZvdnh4d1lBQUFBQWRBbFc2QUFBQUFDRHhBU0x4bDdDCkJBQUtBQUFBUWdBQUFB
WUFFZ0FBQUhNQUFBQVVBQVFBQUFEMUFBQUFSQUFBQUFBQUFBQUFBQUFBSHdBQUFBQUFBQUFFQUFB
QUFBQUEKQUZzVEFBQUlBQUFBQkFBQUFBWUFBQUFXQUFBQUFBQUFBQVFBQUFBQUFBQUFXeE1BQUFJ
QUJBQUFBQUFBOFFBQUFLRUFBQUJ1QUJBUgpBQUFBQUFBQUFBQUFBQUFBSHdBQUFBZ0FBQUFjQUFB
QUJCY0FBQUFBQUFBQUFBQk5aV1JwWVZOb1lYSmxaRlZKVm05c2RXMWxVMnhwClpHVnlRbUZqYTJk
eWIzVnVaRVZzWlcxbGJuUTZPbUJ6WTJGc1lYSWdaR1ZzWlhScGJtY2daR1Z6ZEhKMVkzUnZjaWNB
SEFBU0VBQUEKQUFBQUFBQUFBQUFBQUFRQUFBQUFBQUFBQUFBZ0FnQUFEUUFHRWZjV0FBQVNBSFJv
YVhNQUFnQUdBQUFBQUF3QUFBREFBZ0FBQndCNApBQUFBd0FJQUFBc0FmQUFBQU1BQ0FBQUtBUFpF
SkFRQlZvdnh4d1lBQUFBQWRBbFc2QUFBQUFDRHhBU0x4bDdDQkFBS0FBQUFRZ0FBCkFBWUFFZ0FB
QUhNQUFBQVVBQVFBQUFEMUFBQUFSQUFBQUFBQUFBQUFBQUFBSHdBQUFBQUFBQUFFQUFBQUFBQUFB
RnNUQUFBSUFBQUEKQkFBQUFBWUFBQUFXQUFBQUFBQUFBQVFBQUFBQUFBQUFXeE1BQUFJQUJBQUFB
QUFBOFFBQUFKNEFBQUJyQUJBUkFBQUFBQUFBQUFBQQpBQUFBSHdBQUFBZ0FBQUFjQUFBQUtCY0FB
QUFBQUFBQUFBQk5aV1JwWVZOb1lYSmxaRlZKVkdsdFpXeHBibVZUYkdsa1pYSlVhSFZ0CllrVnNa
VzFsYm5RNk9tQnpZMkZzWVhJZ1pHVnNaWFJwYm1jZ1pHVnpkSEoxWTNSdmNpY0FIQUFTRUFBQUFB
QUFBQUFBQUFBQUFBUUEKQUFBQUFBQUFBQUFnQWdBQURRQUdFUm9YQUFBU0FIUm9hWE1BQWdBR0FB
QUFEQUFBQU1zQ0FBQUhBSGdBQUFETEFnQUFDd0I4QUFBQQp5d0lBQUFvQTlrUWtCQUZXaS9ISEJn
QUFBQUIwQ1Zib0FBQUFBSVBFQkl2R1hzSUVBQW9BQUFCQ0FBQUFCZ0FTQUFBQWN3QUFBQlFBCkJB
QUFBUFVBQUFCRUFBQUFBQUFBQUFBQUFBQWZBQUFBQUFBQUFBUUFBQUFBQUFBQVd4TUFBQWdBQUFB
RUFBQUFCZ0FBQUJZQUFBQUEKQUFBQUJBQUFBQUFBQUFCYkV3QUFBZ0FFQUFBQUFBRHhBQUFBa0FB
QUFGMEFFQkVBQUFBQUFBQUFBQUFBQUFBZkFBQUFDQUFBQUJ3QQpBQUE2RndBQUFBQUFBQUFBQUUx
bFpHbGhVMmhoY21Wa1ZVbFdiMngxYldWVGJHbGtaWEk2T21CelkyRnNZWElnWkdWc1pYUnBibWNn
ClpHVnpkSEoxWTNSdmNpY0FIQUFTRUFBQUFBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQUFBQWdBZ0FB
RFFBR0VTd1hBQUFTQUhSb2FYTUEKQWdBR0FBd0FBQURXQWdBQUJ3QjRBQUFBMWdJQUFBc0FmQUFB
QU5ZQ0FBQUtBUFpFSkFRQlZvdnh4d1lBQUFBQWRBbFc2QUFBQUFDRAp4QVNMeGw3Q0JBQUtBQUFB
UWdBQUFBWUFFZ0FBQUhNQUFBQVVBQVFBQUFEMUFBQUFSQUFBQUFBQUFBQUFBQUFBSHdBQUFBQUFB
QUFFCkFBQUFBQUFBQUZzVEFBQUlBQUFBQkFBQUFBWUFBQUFXQUFBQUFBQUFBQVFBQUFBQUFBQUFX
eE1BQUFJQUJBQUFBQUFBOFFBQUFKd0EKQUFCcEFCQVJBQUFBQUFBQUFBQUFBQUFBSHdBQUFBZ0FB
QUFjQUFBQVRCY0FBQUFBQUFBQUFBQk5aV1JwWVZOb1lYSmxaRlZKVm05cwpkVzFsVTJ4cFpHVnlW
R2gxYldKRmJHVnRaVzUwT2pwZ2MyTmhiR0Z5SUdSbGJHVjBhVzVuSUdSbGMzUnlkV04wYjNJbkFC
d0FFaEFBCkFBQUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFBQUFJQUlBQUEwQUJoRStGd0FBRWdCMGFH
bHpBQUlBQmdBTUFBQUE0UUlBQUFjQWVBQUEKQU9FQ0FBQUxBSHdBQUFEaEFnQUFDZ0NMd2NjQUFB
QUFBTU1FQUFBQUp3UUFBQVlBQkFBQUFQVUFBQUFrQUFBQUFBQUFBQUFBQUFBSgpBQUFBQUFBQUFB
QUFBQUFBQUFBQVd4TUFBQUlBQUFBRUFBQUE4UUFBQUpFQUFBQmVBQkFSQUFBQUFBQUFBQUFBQUFB
QUNRQUFBQUlBCkFBQUlBQUFBRWhjQUFBQUFBQUFBQUFCTlpXUnBZVk5vWVhKbFpGVkpWR2x0Wld4
cGJtVlRiR2xrWlhJNk9rMWxaR2xoVTJoaGNtVmsKVlVsVWFXMWxiR2x1WlZOc2FXUmxjZ0FjQUJJ
UUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FLQUFBTkFBWVJDQmNBQUJJQQpkR2hwY3dB
Q0FBWUFBQUFBREFBQUFDUUVBQUFIQUZnQUFBQWtCQUFBQ3dCY0FBQUFKQVFBQUFvQUFBQUFBQUFB
QUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFBQUFBQ2tFQUFBR0FBUUFBQUE3QWdBQUJnQUlBQUFB
VFFBQUFBWUFEQUFBQUZNQUFBQUdBQkFBQUFCSEFBQUEKQmdBVUFBQUFTQUFBQUFZQXh3RUFBQUFB
d3dJQUFBQkNBQUFBQmdBRUFBQUE5UUFBQUNRQUFBQUFBQUFBQUFBQUFBY0FBQUFBQUFBQQpBQUFB
QUFBQUFBQmJFd0FBQUFBQUFBUUFBQUR4QUFBQWtnQUFBRjhBRUJFQUFBQUFBQUFBQUFBQUFBQUhB
QUFBQUFBQUFBWUFBQUFTCkZ3QUFBQUFBQUFBQUFFMWxaR2xoVTJoaGNtVmtWVWxVYVcxbGJHbHVa
Vk5zYVdSbGNqbzZmazFsWkdsaFUyaGhjbVZrVlVsVWFXMWwKYkdsdVpWTnNhV1JsY2dBY0FCSVFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBS0FBQU5BQVlSQ0JjQUFCSUFkR2hwY3dBQwpB
QVlBQUFBTUFBQUFMd1FBQUFjQVdBQUFBQzhFQUFBTEFGd0FBQUF2QkFBQUNnRDJSQ1FFQVZhTDhj
Y0dBQUFBQUhRSlZ1Z0FBQUFBCmc4UUVpOFpld2dRQUNnQUFBRUlBQUFBR0FCSUFBQUJ6QUFBQUZB
QUVBQUFBOVFBQUFFUUFBQUFBQUFBQUFBQUFBQjhBQUFBQUFBQUEKQkFBQUFBQUFBQUJiRXdBQUNB
QUFBQVFBQUFBR0FBQUFGZ0FBQUFBQUFBQUVBQUFBQUFBQUFGc1RBQUFDQUFRQUFBQUFBUEVBQUFD
UwpBQUFBWHdBUUVRQUFBQUFBQUFBQUFBQUFBQjhBQUFBSUFBQUFIQUFBQUJZWEFBQUFBQUFBQUFB
QVRXVmthV0ZUYUdGeVpXUlZTVlJwCmJXVnNhVzVsVTJ4cFpHVnlPanBnYzJOaGJHRnlJR1JsYkdW
MGFXNW5JR1JsYzNSeWRXTjBiM0luQUJ3QUVoQUFBQUFBQUFBQUFBQUEKQUFBRUFBQUFBQUFBQUFB
QUlBSUFBQTBBQmhFSUZ3QUFFZ0IwYUdsekFBSUFCZ0FBQUF3QUFBQW9CQUFBQndCNEFBQUFLQVFB
QUFzQQpmQUFBQUNnRUFBQUtBRlpYaTN3a0REUDJNOENEL3hRUGg5RUJBQUFQdG84QUFBQUEveVNO
QUFBQUFMZ0JBQUFBaEFVQUFBQUFkUzBKCkJRQUFBQUJxRU9nQUFBQUFnOFFFTzhaMEU4Y0FBQUFB
QUlsd0RLTUFBQUFBNllnQkFBQ0pOUUFBQUFDaEFBQUFBT2w0QVFBQXVBSUEKQUFDRUJRQUFBQUIx
TFFrRkFBQUFBR29RNkFBQUFBQ0R4QVE3eG5RVGlYQU14d0FBQUFBQW93QUFBQURwUkFFQUFJazFB
QUFBQUtFQQpBQUFBNlRRQkFBQzRCQUFBQUlRRkFBQUFBSFVxQ1FVQUFBQUFhZ3pvQUFBQUFJUEVC
RHZHZEJESEFBQUFBQUNqQUFBQUFPa0RBUUFBCmlUVUFBQUFBb1FBQUFBRHA4d0FBQUxnSUFBQUFo
QVVBQUFBQWRTb0pCUUFBQUFCcURPZ0FBQUFBZzhRRU84WjBFTWNBQUFBQUFLTUEKQUFBQTZjSUFB
QUNKTlFBQUFBQ2hBQUFBQU9teUFBQUF1QkFBQUFDRUJRQUFBQUIxS2drRkFBQUFBR29NNkFBQUFB
Q0R4QVE3eG5RUQp4d0FBQUFBQW93QUFBQURwZ1FBQUFJazFBQUFBQUtFQUFBQUE2M1M0SUFBQUFJ
UUZBQUFBQUhVbkNRVUFBQUFBYWd6b0FBQUFBSVBFCkJEdkdkQTNIQUFBQUFBQ2pBQUFBQU90R2lU
VUFBQUFBb1FBQUFBRHJPYmhBQUFBQWhBVUFBQUFBZFNjSkJRQUFBQUJxRE9nQUFBQUEKZzhRRU84
WjBEY2NBQUFBQUFLTUFBQUFBNndhSk5RQUFBQUNoQUFBQUFEdkdkQU9KZUFSZlhzSUVBSTFKQUFB
QUFBQUFBQUFBQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJ3Y0hBUUFBQWdJ
QUFBTUhCd2NIQkFVR0ZnQUFBRndFQUFBR0FCMEFBQUJiCkJBQUFCZ0FvQUFBQVdRUUFBQVlBTUFB
QUFGa0VBQUFHQURjQUFBQldCQUFBRkFCRUFBQUFHUU1BQUFZQVRBQUFBRlVFQUFBR0FGY0EKQUFC
VkJBQUFCZ0JjQUFBQVZRUUFBQVlBYkFBQUFGa0VBQUFHQUhRQUFBQlpCQUFBQmdCN0FBQUFWZ1FB
QUJRQWl3QUFBUFFEQUFBRwpBSkFBQUFCUkJBQUFCZ0NiQUFBQVVRUUFBQVlBb0FBQUFGRUVBQUFH
QUxBQUFBQlpCQUFBQmdDNEFBQUFXUVFBQUFZQXZ3QUFBRllFCkFBQVVBTXdBQUFDMEFnQUFCZ0RS
QUFBQVRRUUFBQVlBM0FBQUFFMEVBQUFHQU9FQUFBQk5CQUFBQmdEeEFBQUFXUVFBQUFZQStRQUEK
QUZrRUFBQUdBQUFCQUFCV0JBQUFGQUFOQVFBQXZ3SUFBQVlBRWdFQUFFa0VBQUFHQUIwQkFBQkpC
QUFBQmdBaUFRQUFTUVFBQUFZQQpNZ0VBQUZrRUFBQUdBRG9CQUFCWkJBQUFCZ0JCQVFBQVZnUUFB
QlFBVGdFQUFNb0NBQUFHQUZNQkFBQkZCQUFBQmdCZUFRQUFSUVFBCkFBWUFZd0VBQUVVRUFBQUdB
SEFCQUFCWkJBQUFCZ0I0QVFBQVdRUUFBQVlBZndFQUFGWUVBQUFVQUl3QkFBRFZBZ0FBQmdDUkFR
QUEKUVFRQUFBWUFtUUVBQUVFRUFBQUdBSjRCQUFCQkJBQUFCZ0NyQVFBQVdRUUFBQVlBc3dFQUFG
a0VBQUFHQUxvQkFBQldCQUFBRkFESApBUUFBNEFJQUFBWUF6QUVBQUQwRUFBQUdBTlFCQUFBOUJB
QUFCZ0RaQVFBQVBRUUFBQVlBN0FFQUFGb0VBQUFHQVBBQkFBQkdCQUFBCkJnRDBBUUFBVWdRQUFB
WUErQUVBQUU0RUFBQUdBUHdCQUFCS0JBQUFCZ0FBQWdBQVFnUUFBQVlBQkFJQUFENEVBQUFHQUFn
Q0FBQTYKQkFBQUJnQUVBQUFBOVFBQUFHUUFBQUFBQUFBQUFBQUFBQ0VDQUFBQUFBQUFCQUFBQUFB
QUFBQmJFd0FBQWdBQUFBUUFBQUFCQUFBQQo1UUVBQUFBQUFBQUVBQUFBQUFBQUFGc1RBQUFCQUFR
QUFBQUFBQUlBQUFEakFRQUFBQUFBQUFRQUFBQUFBQUFBV3hNQUFBQUFDQUFBCkFBQUE4UUFBQU9V
QkFBQkxBQkFSQUFBQUFBQUFBQUFBQUFBQUlRSUFBQUlBQUFEbUFRQUFVaGNBQUFBQUFBQUFBQUJO
WldScFlWTm8KWVhKbFpGVkpRMjl1ZEhKdmJITTZPbU52Ym5SeWIyeEdiM0pRWVhKMEFCd0FFaEFB
QUFBQUFBQUFBQUFBQUFBSUFBQUFBQUFBQUFBQQpBQUlBQUEwQURCRUFBQUFBQUFBQUFBQUFBQTBB
REJFQUFBQUFBQUFBQUFBQUFBOEFCUkVBQUFBQUFBQUFKRXhPTVRZQUR3QUZFUUFBCkFBQUFBQUFr
VEU0eE5BQVBBQVVSQUFBQUFBQUFBQ1JNVGpFeUFBOEFCUkVBQUFBQUFBQUFKRXhPTVRBQURnQUZF
UUFBQUFBQUFBQWsKVEU0NEFBNEFCUkVBQUFBQUFBQUFKRXhPTmdBT0FBVVJBQUFBQUFBQUFDUk1U
alFBRFFBR0VWRVhBQUFTQUhSb2FYTUFFUUFMRVFRQQpBQUIwQUFBQWNHRnlkRWxFQUJvQURCSE1G
d0FBQUFBQUFBQUFaMlZ1WlhKcFkwSjFkSFJ2YmdBYkFBd1J6UmNBQUFBQUFBQUFBR05oCmNIUnBi
MjV6UW5WMGRHOXVBQmNBREJIT0Z3QUFBQUFBQUFBQVltRmphMmR5YjNWdVpBQWpBQXdSenhjQUFB
QUFBQUFBQUhadmJIVnQKWlZOc2FXUmxja0poWTJ0bmNtOTFibVFBR2dBTUVkQVhBQUFBQUFBQUFB
QjBhVzFsYkdsdVpWUm9kVzFpQUJNQURCSFJGd0FBQUFBQQpBQUFBYzJ4cFpHVnlBQmdBREJIU0Z3
QUFBQUFBQUFBQWRtOXNkVzFsVkdoMWJXSUFBZ0FHQUFBQUFQSUFBQUJBQVFBQUFBQUFBQUFBCkFB
QWhBZ0FBRUFJQUFDVUFBQUEwQVFBQUFBQUFBRDhEQUlBQ0FBQUFRZ01BZ0NFQUFBQkxBd0NBVUFB
QUFFNERBSUJWQUFBQVN3TUEKZ0ZzQUFBQk1Bd0NBWUFBQUFFNERBSUJsQUFBQVV3TUFnSlFBQUFC
V0F3Q0FtUUFBQUZNREFJQ2ZBQUFBVkFNQWdLUUFBQUJXQXdDQQpxUUFBQUZvREFJRFZBQUFBWFFN
QWdOb0FBQUJhQXdDQTRBQUFBRnNEQUlEbEFBQUFYUU1BZ09vQUFBQmhBd0NBRmdFQUFHUURBSUFi
CkFRQUFZUU1BZ0NFQkFBQmlBd0NBSmdFQUFHUURBSUFyQVFBQWFBTUFnRmNCQUFCckF3Q0FYQUVB
QUdnREFJQmlBUUFBYVFNQWdHY0IKQUFCckF3Q0FhUUVBQUc4REFJQ1ZBUUFBY2dNQWdKY0JBQUJ2
QXdDQW5RRUFBSEFEQUlDaUFRQUFjZ01BZ0tRQkFBQjJBd0NBMkFFQQpBSGNEQUlEZEFRQUFoZ01B
Z09FQkFBQ0hBd0NBNWdFQUFJb0RBSUFNQUFBQU9RUUFBQWNBbUFBQUFEa0VBQUFMQUp3QUFBQTVC
QUFBCkNnRHJBQUFBWEFRQUFBc0E3d0FBQUZ3RUFBQUtBUG9BQUFCYkJBQUFDd0QrQUFBQVd3UUFB
QW9BQlFFQUFGb0VBQUFMQUFrQkFBQmEKQkFBQUNnQVdBUUFBVWdRQUFBc0FHZ0VBQUZJRUFBQUtB
Q2NCQUFCT0JBQUFDd0FyQVFBQVRnUUFBQW9BT0FFQUFFb0VBQUFMQUR3QgpBQUJLQkFBQUNnQkpB
UUFBUmdRQUFBc0FUUUVBQUVZRUFBQUtBRmtCQUFCQ0JBQUFDd0JkQVFBQVFnUUFBQW9BYVFFQUFE
NEVBQUFMCkFHMEJBQUErQkFBQUNnQ2ZBUUFBVlFRQUFBc0Fvd0VBQUZVRUFBQUtBTHNCQUFCUkJB
QUFDd0MvQVFBQVVRUUFBQW9BMkFFQUFFMEUKQUFBTEFOd0JBQUJOQkFBQUNnRHhBUUFBU1FRQUFB
c0E5UUVBQUVrRUFBQUtBQllDQUFCRkJBQUFDd0FhQWdBQVJRUUFBQW9BTWdJQQpBRUVFQUFBTEFE
WUNBQUJCQkFBQUNnQkhBZ0FBUFFRQUFBc0FTd0lBQUQwRUFBQUtBR2dDQUFBNUJBQUFDd0JzQWdB
QU9RUUFBQW9BCnVBRUFBQUNFQlFBQUFBQjFLQWtGQUFBQUFHb2c2QUFBQUFDRHhBU0Z3SFFNeHdB
QUFBQUFvd0FBQUFERE04Q2pBQUFBQU1PaEFBQUEKQU1NSEFBQUFad1FBQUFZQUR3QUFBR2NFQUFB
R0FCWUFBQUJXQkFBQUZBQWpBQUFBSndRQUFBWUFLQUFBQUdRRUFBQUdBREFBQUFCawpCQUFBQmdB
MkFBQUFaQVFBQUFZQUJBQUFBUFVBQUFBa0FBQUFBQUFBQUFBQUFBQTdBQUFBQUFBQUFBQUFBQUFB
QUFBQVd4TUFBQUFBCkFBQUVBQUFBOFFBQUFKRUFBQUJEQUJBUkFBQUFBQUFBQUFBQUFBQUFPd0FB
QUFBQUFBQTZBQUFBVXhjQUFBQUFBQUFBQUFCTlpXUnAKWVZOb1lYSmxaRlZKUTI5dWRISnZiSE02
T25Oc2FXUmxjZ0FjQUJJUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQUFBTgpBQVlS
VVJjQUFCSUFkR2hwY3dBWkFBd1IweGNBQUFBQUFBQUFBSE5vWVhKbFpGTnNhV1JsY2dBQ0FBWUFB
QUFBOGdBQUFGQUFBQUFBCkFBQUFBQUFBQURzQUFBQVFBZ0FBQndBQUFFUUFBQUFBQUFBQWpRTUFn
QUFBQUFDT0F3Q0FMQUFBQUpFREFJQXRBQUFBamdNQWdEUUEKQUFDUkF3Q0FOUUFBQUpBREFJQTZB
QUFBa1FNQWdBd0FBQUJoQkFBQUJ3QllBQUFBWVFRQUFBc0FYQUFBQUdFRUFBQUtBTElBQUFCawpC
QUFBQ3dDMkFBQUFaQVFBQUFvQTFBQUFBR0VFQUFBTEFOZ0FBQUJoQkFBQUNnQUVBQUFBOFFBQUFC
TUFBQUFSQUF3UmRRQUFBQUFBCkFBQUFBQ1JUTWpNQUFCUUFBQUJuQkFBQUN3QVlBQUFBWndRQUFB
b0FCQUFBQVBFQUFBQVNBQUFBRUFBTUVYVUFBQUFBQUFBQUFBQWsKVXpFQUFBQVVBQUFBUFFNQUFB
c0FHQUFBQUQwREFBQUtBQVFBQUFEeEFBQUFFZ0FBQUJBQURCRjFBQUFBQUFBQUFBQUFKRk15QUFB
QQpGQUFBQUZBREFBQUxBQmdBQUFCUUF3QUFDZ0FFQUFBQThRQUFBQklBQUFBUUFBd1JkUUFBQUFB
QUFBQUFBQ1JUTXdBQUFCUUFBQUJqCkF3QUFDd0FZQUFBQVl3TUFBQW9BQkFBQUFQRUFBQUFTQUFB
QUVBQU1FWFVBQUFBQUFBQUFBQUFrVXpRQUFBQVVBQUFBZGdNQUFBc0EKR0FBQUFIWURBQUFLQUFR
QUFBRHhBQUFBRWdBQUFCQUFEQkYxQUFBQUFBQUFBQUFBSkZNMUFBQUFGQUFBQUlrREFBQUxBQmdB
QUFDSgpBd0FBQ2dBRUFBQUE4UUFBQUJJQUFBQVFBQXdSZFFBQUFBQUFBQUFBQUNSVE5nQUFBQlFB
QUFDY0F3QUFDd0FZQUFBQW5BTUFBQW9BCkJBQUFBUEVBQUFBU0FBQUFFQUFNRVhVQUFBQUFBQUFB
QUFBa1V6Y0FBQUFVQUFBQXJ3TUFBQXNBR0FBQUFLOERBQUFLQUFRQUFBRHgKQUFBQUVnQUFBQkFB
REJGMUFBQUFBQUFBQUFBQUpGTTRBQUFBRkFBQUFNSURBQUFMQUJnQUFBRENBd0FBQ2dBRUFBQUE4
UUFBQUJJQQpBQUFRQUF3UmRRQUFBQUFBQUFBQUFDUlRPUUFBQUJRQUFBQWpBUUFBQ3dBWUFBQUFJ
d0VBQUFvQUJBQUFBUEVBQUFBVEFBQUFFUUFNCkVYVUFBQUFBQUFBQUFBQWtVekV3QUFBVUFBQUFS
QUVBQUFzQUdBQUFBRVFCQUFBS0FBUUFBQUR4QUFBQUV3QUFBQkVBREJGMUFBQUEKQUFBQUFBQUFK
Rk14TVFBQUZBQUFBSmNCQUFBTEFCZ0FBQUNYQVFBQUNnQUVBQUFBOFFBQUFCTUFBQUFSQUF3UmRR
QUFBQUFBQUFBQQpBQ1JUTVRJQUFCUUFBQUN4QVFBQUN3QVlBQUFBc1FFQUFBb0FCQUFBQVBFQUFB
QVRBQUFBRVFBTUVYVUFBQUFBQUFBQUFBQWtVekV6CkFBQVVBQUFBdndFQUFBc0FHQUFBQUw4QkFB
QUtBQVFBQUFEeEFBQUFFd0FBQUJFQURCRjFBQUFBQUFBQUFBQUFKRk14TkFBQUZBQUEKQU93REFB
QUxBQmdBQUFEc0F3QUFDZ0FFQUFBQThRQUFBQk1BQUFBUkFBd1JkUUFBQUFBQUFBQUFBQ1JUTVRV
QUFCUUFBQURwQVFBQQpDd0FZQUFBQTZRRUFBQW9BQkFBQUFQRUFBQUFUQUFBQUVRQU1FWFVBQUFB
QUFBQUFBQUFrVXpFMkFBQVVBQUFBR0FJQUFBc0FHQUFBCkFCZ0NBQUFLQUFRQUFBRHhBQUFBRXdB
QUFCRUFEQkYxQUFBQUFBQUFBQUFBSkZNeE53QUFGQUFBQURZQ0FBQUxBQmdBQUFBMkFnQUEKQ2dB
RUFBQUE4UUFBQUJNQUFBQVJBQXdSZFFBQUFBQUFBQUFBQUNSVE1UZ0FBQlFBQUFCUUFnQUFDd0FZ
QUFBQVVBSUFBQW9BQkFBQQpBUEVBQUFBVEFBQUFFUUFNRVhVQUFBQUFBQUFBQUFBa1V6RTVBQUFV
QUFBQWFBSUFBQXNBR0FBQUFHZ0NBQUFLQUFRQUFBRHhBQUFBCkV3QUFBQkVBREJGMUFBQUFBQUFB
QUFBQUpGTXlNQUFBRkFBQUFKTUNBQUFMQUJnQUFBQ1RBZ0FBQ2dBRUFBQUE4UUFBQUJNQUFBQVIK
QUF3UmRRQUFBQUFBQUFBQUFDUlRNakVBQUJRQUFBQ3NBZ0FBQ3dBWUFBQUFyQUlBQUFvQUJBQUFB
UEVBQUFBVEFBQUFFUUFNRVhVQQpBQUFBQUFBQUFBQWtVekl5QUFBVUFBQUFXUVFBQUFzQUdBQUFB
RmtFQUFBS0FBUUFBQUJlQUJVVmVkRXZTejA1RDBlWG1CZ2ZJTW1RClVBUUFBQUJqT2x4amVXZDNh
VzVjYUc5dFpWeGpiV0Z5Y21sdVhIZGxZbXRwZEdKMWFXeGtYR3hwWWx4M1pXSnJhWFJ6ZVhOMFpX
MXAKYm5SbGNtWmhZMlV1ZG1NNE1DNXdaR0lBOHZGQVkyOXRjQzVwWkNmR2JnRC8vd0FBQXdCQVpt
VmhkQzR3TUFFQUFBRC8vd0FBQXdBdQpaSEpsWTNSMlpRQUFBQUFCQUFBQUF3SERBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQXVaR1ZpZFdja1V3QUFBQUFDQUFBQUF3SGdSQUFBCklBQUFBQUFBQUFBQUFB
QUFBQUF1Y21SaGRHRUFBQUFBQUFBREFBQUFBd0VFQUFBQUFBQUFBQUdIQWRjQUFBSUFBQUFBQUFB
QUJBQUEKQUFBQUFBQURBQUFBQWdBdWNtUmhkR0VBQUFBQUFBQUVBQUFBQXdFRUFBQUFBQUFBQUdW
bnZMZ0FBQUlBQUFBQUFBQUFSZ0FBQUFBQQpBQUFFQUFBQUFnQXVjbVJoZEdFQUFBQUFBQUFGQUFB
QUF3RUVBQUFBQUFBQUFHVGd2VzhBQUFJQUFBQUFBQUFBa1FBQUFBQUFBQUFGCkFBQUFBZ0F1Y21S
aGRHRUFBQUFBQUFBR0FBQUFBd0VFQUFBQUFBQUFBSXZJQ2FvQUFBSUFBQUFBQUFBQXZ3QUFBQUFB
QUFBR0FBQUEKQWdBdWNtUmhkR0VBQUFBQUFBQUhBQUFBQXdFRUFBQUFBQUFBQUZlWFlvOEFBQUlB
QUFBQUFBQUE3UUFBQUFBQUFBQUhBQUFBQWdBdQpjbVJoZEdFQUFBQUFBQUFJQUFBQUF3RUVBQUFB
QUFBQUFETHczamNBQUFJQUFBQUFBQUFBSndFQUFBQUFBQUFJQUFBQUFnQXVjbVJoCmRHRUFBQUFB
QUFBSkFBQUFBd0VFQUFBQUFBQUFBRmVYWW84QUFBSUFBQUFBQUFBQVV3RUFBQUFBQUFBSkFBQUFB
Z0F1Y21SaGRHRUEKQUFBQUFBQUtBQUFBQXdFOG93QUFBQUFBQVBCS3ZtMEFBQUFBQUFBQUFBQUFp
d0VBQUFBQUFBQUtBQUFBQXdBQUFBQUFzd0VBQUJBSgpBQUFLQUFBQUF3QUFBQUFBMmdFQUFDZ1JB
QUFLQUFBQUF3QUFBQUFBQVFJQUFKQmtBQUFLQUFBQUF3QUFBQUFBS1FJQUFOQnNBQUFLCkFBQUFB
d0FBQUFBQVRRSUFBRWg4QUFBS0FBQUFBd0FBQUFBQWNBSUFBTGlMQUFBS0FBQUFBd0FBQUFBQWtn
SUFBSmlUQUFBS0FBQUEKQXdBQUFBQUF1UUlBQURpakFBQUtBQUFBQXdBdWRHVjRkQUFBQUFBQUFB
QUxBQUFBQXdFZEFBQUFBQUFBQUUrTGVhSUFBQUlBQUFBdQpaR1ZpZFdja1V3QUFBQUFNQUFBQUF3
SHdBQUFBQlFBQUFBQUFBQUFMQUFVQUFBQUFBQUFBekFJQUFBQUFBQUFMQUNBQUF3QUFBQUFBCjdR
SUFBQUFBQUFBQUFBQUFBZ0F1ZEdWNGRBQUFBQUFBQUFBTkFBQUFBd0VkQUFBQUFBQUFBRStMZWFJ
QUFBSUFBQUF1WkdWaWRXY2sKVXdBQUFBQU9BQUFBQXdIOEFBQUFCUUFBQUFBQUFBQU5BQVVBQUFB
QUFBQUE5d0lBQUFBQUFBQU5BQ0FBQXdBdWRHVjRkQUFBQUFBQQpBQUFQQUFBQUF3RWNBQUFBQUFB
QUFEYjVqY2NBQUFJQUFBQXVaR1ZpZFdja1V3QUFBQUFRQUFBQUF3RVFBUUFBQlFBQUFBQUFBQUFQ
CkFBVUFBQUFBQUFBQUZnTUFBQUFBQUFBUEFDQUFBd0F1ZEdWNGRBQUFBQUFBQUFBUkFBQUFBd0Uv
QUFBQUFBQUFBRFpSeXNnQUFBSUEKQUFBdVpHVmlkV2NrVXdBQUFBQVNBQUFBQXdFWUFRQUFCUUFB
QUFBQUFBQVJBQVVBQUFBQUFBQUFOd01BQUFBQUFBQVJBQ0FBQXdBdQpkR1Y0ZEFBQUFBQUFBQUFU
QUFBQUF3RUhBQUFBQVFBQUFLcmhpOEFBQUFJQUFBQXVaR1ZpZFdja1V3QUFBQUFVQUFBQUF3SFlB
QUFBCkJRQUFBQUFBQUFBVEFBVUFBQUFBQUFBQWZ3TUFBQUFBQUFBVEFDQUFBZ0F1Y21SaGRHRUFB
QUFBQUFBVkFBQUFBd0VZQUFBQUJnQUEKQUFBQUFBQUFBQUlBQUFBQUFBQUFtUU1BQUFBQUFBQVZB
QUFBQWdBQUFBQUFzUU1BQUFBQUFBQUFBQ0FBQWdBQUFBQUF6d01BQUFBQQpBQUFBQUNBQWFRRkRB
QUFBQWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBN1FNQUFBQUFBQUFBQUNBQUFnQUFBQUFBK0FNQUFB
QUFBQUFBCkFDQUFBZ0FBQUFBQVB3UUFBQUFBQUFBQUFDQUFBZ0F1ZEdWNGRBQUFBQUFBQUFBV0FB
QUFBd0UyQUFBQUFRQUFBTWFteDVNQUFBSUEKQUFBdVpHVmlkV2NrVXdBQUFBQVhBQUFBQXdFSUFR
QUFCd0FBQUFBQUFBQVdBQVVBQUFBQUFBQUFnUVFBQUFBQUFBQVdBQ0FBQWdBQQpBQUFBdFFRQUFB
QUFBQUFBQUFBQUFnQXVkR1Y0ZEFBQUFBQUFBQUFZQUFBQUF3RVhBQUFBQVFBQUFKSlczQmdBQUFJ
QUFBQXVaR1ZpCmRXY2tVd0FBQUFBWkFBQUFBd0hVQUFBQUJRQUFBQUFBQUFBWUFBVUFBQUFBQUFB
QTBBUUFBQUFBQUFBWUFDQUFBZ0FBQUFBQS9nUUEKQUFBQUFBQUFBQUFBQWdBdWRHVjRkQUFBQUFB
QUFBQWFBQUFBQXdFS0FBQUFBQUFBQU5iTTRURUFBQUlBQUFBdVpHVmlkV2NrVXdBQQpBQUFiQUFB
QUF3SG9BQUFBQlFBQUFBQUFBQUFhQUFVQUFBQUFBQUFBRUFVQUFBQUFBQUFhQUNBQUFnQXVkR1Y0
ZEFBQUFBQUFBQUFjCkFBQUFBd0VFQUFBQUFBQUFBTU9BQVMwQUFBSUFBQUF1WkdWaWRXY2tVd0FB
QUFBZEFBQUFBd0hRQUFBQUJRQUFBQUFBQUFBY0FBVUEKQUFBQUFBQUFNd1VBQUFBQUFBQWNBQ0FB
QWdBdWRHVjRkQUFBQUFBQUFBQWVBQUFBQXdFSUFBQUFBQUFBQUdVV0VvTUFBQUlBQUFBdQpaR1Zp
ZFdja1V3QUFBQUFmQUFBQUF3SFVBQUFBQlFBQUFBQUFBQUFlQUFVQUFBQUFBQUFBVWdVQUFBQUFB
QUFlQUNBQUFnQXVkR1Y0CmRBQUFBQUFBQUFBZ0FBQUFBd0VKQUFBQUFBQUFBS21JbUZzQUFBSUFB
QUF1WkdWaWRXY2tVd0FBQUFBaEFBQUFBd0hVQUFBQUJRQUEKQUFBQUFBQWdBQVVBQUFBQUFBQUFk
UVVBQUFBQUFBQWdBQ0FBQWdBdWRHVjRkQUFBQUFBQUFBQWlBQUFBQXdFSkFBQUFBQUFBQUVBdgp3
djRBQUFJQUFBQXVaR1ZpZFdja1V3QUFBQUFqQUFBQUF3SFVBQUFBQlFBQUFBQUFBQUFpQUFVQUFB
QUFBQUFBbUFVQUFBQUFBQUFpCkFDQUFBZ0F1ZEdWNGRBQUFBQUFBQUFBa0FBQUFBd0VmQUFBQUFn
QUFBTHRJODVvQUFBSUFBQUF1WkdWaWRXY2tVd0FBQUFBbEFBQUEKQXdIZ0FBQUFBd0FBQUFBQUFB
QWtBQVVBQUFBQUFBQUF1d1VBQUFBQUFBQWtBQ0FBQWdBQUFBQUEyUVVBQUFBQUFBQUFBQ0FBQWdB
dQpkR1Y0ZEFBQUFBQUFBQUFtQUFBQUF3RUVBQUFBQUFBQUFPZ0h5ZTBBQUFJQUFBQXVaR1ZpZFdj
a1V3QUFBQUFuQUFBQUF3SGNBQUFBCkJRQUFBQUFBQUFBbUFBVUFBQUFBQUFBQTVnVUFBQUFBQUFB
bUFDQUFBZ0F1ZEdWNGRBQUFBQUFBQUFBb0FBQUFBd0VFQUFBQUFBQUEKQU9DTkVDVUFBQUlBQUFB
dVpHVmlkV2NrVXdBQUFBQXBBQUFBQXdIWUFBQUFCUUFBQUFBQUFBQW9BQVVBQUFBQUFBQUFFQVlB
QUFBQQpBQUFvQUNBQUFnQXVkR1Y0ZEFBQUFBQUFBQUFxQUFBQUF3RVZBQUFBQUFBQUFIWXZmWVFB
QUFJQUFBQXVaR1ZpZFdja1V3QUFBQUFyCkFBQUFBd0hnQUFBQUJRQUFBQUFBQUFBcUFBVUFBQUFB
QUFBQU9BWUFBQUFBQUFBcUFDQUFBZ0F1Y21SaGRHRUFBQUFBQUFBc0FBQUEKQXdFSUFBQUFBQUFB
QUFBQUFBQUFBQUlBQUFBQUFBQUFaZ1lBQUFBQUFBQXNBQUFBQWdBdWRHVjRkQUFBQUFBQUFBQXRB
QUFBQXdFRQpBQUFBQUFBQUFNc0syT1VBQUFJQUFBQXVaR1ZpZFdja1V3QUFBQUF1QUFBQUF3SGNB
QUFBQlFBQUFBQUFBQUF0QUFVQUFBQUFBQUFBCmZnWUFBQUFBQUFBdEFDQUFBZ0F1ZEdWNGRBQUFB
QUFBQUFBdkFBQUFBd0VKQUFBQUFRQUFBRFRyMjFrQUFBSUFBQUF1WkdWaWRXY2sKVXdBQUFBQXdB
QUFBQXdHd0FBQUFBd0FBQUFBQUFBQXZBQVVBQUFBQUFBQUF4QVlBQUFBQUFBQXZBQ0FBQWdBdWRH
VjRkQUFBQUFBQQpBQUF4QUFBQUF3RUhBQUFBQVFBQUFLcmhpOEFBQUFJQUFBQXVaR1ZpZFdja1V3
QUFBQUF5QUFBQUF3SElBQUFBQXdBQUFBQUFBQUF4CkFBVUFBQUFBQUFBQTNnWUFBQUFBQUFBeEFD
QUFBZ0F1ZEdWNGRBQUFBQUFBQUFBekFBQUFBd0VIQUFBQUFRQUFBQzlFKzJ3QUFBSUEKQUFBdVpH
VmlkV2NrVXdBQUFBQTBBQUFBQXdIY0FBQUFCUUFBQUFBQUFBQXpBQVVBQUFBQUFBQUFBd2NBQUFB
QUFBQXpBQ0FBQWdBdQpjbVJoZEdFQUFBQUFBQUExQUFBQUF3RUVBQUFBQUFBQUFQVkhuZDRBQUFJ
QUFBQUFBQUFBUFFjQUFBQUFBQUExQUFBQUFnQXVkR1Y0CmRBQUFBQUFBQUFBMkFBQUFBd0VEQUFB
QUFBQUFBRkhra2hZQUFBSUFBQUF1WkdWaWRXY2tVd0FBQUFBM0FBQUFBd0hvQUFBQUJRQUEKQUFB
QUFBQTJBQVVBQUFBQUFBQUFUUWNBQUFBQUFBQTJBQ0FBQWdBdWNtUmhkR0VBQUFBQUFBQTRBQUFB
QXdFRUFBQUFBQUFBQUhhMQo1WTBBQUFJQUFBQUFBQUFBa0FjQUFBQUFBQUE0QUFBQUFnQXVkR1Y0
ZEFBQUFBQUFBQUE1QUFBQUF3RUhBQUFBQVFBQUFDOUUrMndBCkFBSUFBQUF1WkdWaWRXY2tVd0FB
QUFBNkFBQUFBd0hRQUFBQUJRQUFBQUFBQUFBNUFBVUFBQUFBQUFBQW9BY0FBQUFBQUFBNUFDQUEK
QWdBdWNtUmhkR0VBQUFBQUFBQTdBQUFBQXdFRUFBQUFBQUFBQUtSVlg1UUFBQUlBQUFBQUFBQUF5
d2NBQUFBQUFBQTdBQUFBQWdBdQpkR1Y0ZEFBQUFBQUFBQUE4QUFBQUF3RUhBQUFBQVFBQUFDOUUr
MndBQUFJQUFBQXVaR1ZpZFdja1V3QUFBQUE5QUFBQUF3SFFBQUFBCkJRQUFBQUFBQUFBOEFBVUFB
QUFBQUFBQTJ3Y0FBQUFBQUFBOEFDQUFBZ0F1Y21SaGRHRUFBQUFBQUFBK0FBQUFBd0VFQUFBQUFB
QUEKQUpCQjNIWUFBQUlBQUFBQUFBQUFCZ2dBQUFBQUFBQStBQUFBQWdBdWRHVjRkQUFBQUFBQUFB
QS9BQUFBQXdFSEFBQUFBUUFBQUM5RQorMndBQUFJQUFBQXVaR1ZpZFdja1V3QUFBQUJBQUFBQUF3
SGNBQUFBQlFBQUFBQUFBQUEvQUFVQUFBQUFBQUFBRmdnQUFBQUFBQUEvCkFDQUFBZ0F1Y21SaGRH
RUFBQUFBQUFCQkFBQUFBd0VFQUFBQUFBQUFBTnZaWDAwQUFBSUFBQUFBQUFBQVRRZ0FBQUFBQUFC
QkFBQUEKQWdBdWRHVjRkQUFBQUFBQUFBQkNBQUFBQXdFSEFBQUFBUUFBQUM5RSsyd0FBQUlBQUFB
dVpHVmlkV2NrVXdBQUFBQkRBQUFBQXdITQpBQUFBQlFBQUFBQUFBQUJDQUFVQUFBQUFBQUFBWFFn
QUFBQUFBQUJDQUNBQUFnQXVjbVJoZEdFQUFBQUFBQUJFQUFBQUF3RUVBQUFBCkFBQUFBSG45Mjln
QUFBSUFBQUFBQUFBQWhnZ0FBQUFBQUFCRUFBQUFBZ0F1ZEdWNGRBQUFBQUFBQUFCRkFBQUFBd0VI
QUFBQUFRQUEKQUM5RSsyd0FBQUlBQUFBdVpHVmlkV2NrVXdBQUFBQkdBQUFBQXdIWUFBQUFCUUFB
QUFBQUFBQkZBQVVBQUFBQUFBQUFsZ2dBQUFBQQpBQUJGQUNBQUFnQXVkR1Y0ZEFBQUFBQUFBQUJI
QUFBQUF3RVBBQUFBQUFBQUFHUDFFdUVBQUFJQUFBQXVaR1ZpZFdja1V3QUFBQUJJCkFBQUFBd0hB
QUFBQUJRQUFBQUFBQUFCSEFBVUFBQUJmWm1GaWMyWUFBQUFBQUFCSEFDQUFBZ0F1ZEdWNGRBQUFB
QUFBQUFCSkFBQUEKQXdFUEFBQUFBQUFBQUdQMUV1RUFBQUlBQUFBdVpHVmlkV2NrVXdBQUFBQktB
QUFBQXdIQUFBQUFCUUFBQUFBQUFBQkpBQVVBQUFBQQpBQUFBeXdnQUFBQUFBQUJKQUNBQUFnQXVk
R1Y0ZEFBQUFBQUFBQUJMQUFBQUF3R3FBZ0FBRWdBQUFKZXRMRWNBQUFFQUFBQXVaR1ZpCmRXY2tV
d0FBQUFCTUFBQUFBd0Y4QXdBQUp3QUFBQUFBQUFCTEFBVUFBQUFBQUFBQTJRZ0FBQUFBQUFCTEFD
QUFBd0FBQUFBQUlBa0EKQUFBQUFBQUFBQUFBQWdBQUFBQUFQQWtBQUFBQUFBQUFBQUFBQWdBQUFB
QUFWZ2tBQUFBQUFBQUFBQUFBQWdBQUFBQUFkUWtBQUFBQQpBQUFBQUFBQUFnQUFBQUFBblFrQUFB
QUFBQUFBQUFBQUFnQUFBQUFBdGdrQUFBQUFBQUFBQUFBQUFnQUFBQUFBMWdrQUFBQUFBQUFBCkFB
QUFBZ0FBQUFBQStBa0FBQUFBQUFBQUFBQUFBZ0F1Y21SaGRHRUFBQUFBQUFCTkFBQUFBd0VJQUFB
QUFBQUFBREdXVHFRQUFBSUEKQUFBQUFBQUFIUW9BQUFBQUFBQk5BQUFBQWdBdWNtUmhkR0VBQUFB
QUFBQk9BQUFBQXdFSUFBQUFBQUFBQUJzVW1KY0FBQUlBQUFBQQpBQUFBTlFvQUFBQUFBQUJPQUFB
QUFnQUFBQUFBVFFvQUFBQUFBQUFBQUFBQUFnQUFBQUFBYmdvQUFBQUFBQUFBQUFBQUFnQUFBQUFB
CmlBb0FBQUFBQUFBQUFBQUFBZ0FBQUFBQW93b0FBQUFBQUFBQUFBQUFBZ0FBQUFBQXRBb0FBQUFB
QUFBQUFBQUFBZ0FBQUFBQTBBb0EKQUFBQUFBQUFBQUFBQWdBdWRHVjRkQUFBQUFBQUFBQlBBQUFB
QXdIckFBQUFCZ0FBQUFvcHIxNEFBQUVBQUFBdVpHVmlkV2NrVXdBQQpBQUJRQUFBQUF3SDRBUUFB
RVFBQUFBQUFBQUJQQUFVQUFBQUFBQUFBOXdvQUFBQUFBQUJQQUNBQUF3QUFBQUFBVXdzQUFBQUFB
QUFBCkFBQUFBZ0FBQUFBQWNBc0FBQUFBQUFBQUFBQUFBZ0FBQUFBQWlRc0FBQUFBQUFBQUFBQUFB
Z0FBQUFBQW53c0FBQUFBQUFBQUFBQUEKQWdBdWRHVjRkQUFBQUFBQUFBQlJBQUFBQXdHREFBQUFC
UUFBQUNpZGNBb0FBQUVBQUFBdVpHVmlkV2NrVXdBQUFBQlNBQUFBQXdHRQpBUUFBRHdBQUFBQUFB
QUJSQUFVQUFBQUFBQUFBeUFzQUFBQUFBQUJSQUNBQUF3QUFBQUFBK3dzQUFBQUFBQUFBQUFBQUFn
QUFBQUFBCkd3d0FBQUFBQUFBQUFBQUFBZ0FBQUFBQU13d0FBQUFBQUFBQUFBQUFBZ0FBQUFBQVRR
d0FBQUFBQUFBQUFBQUFBZ0FBQUFBQVpRd0EKQUFBQUFBQUFBQUFBQWdBdWRHVjRkQUFBQUFBQUFB
QlRBQUFBQXdGWUFBQUFBQUFBQUp0ZGwvY0FBQUVBQUFBdVpHVmlkV2NrVXdBQQpBQUJVQUFBQUF3
RUlBUUFBQlFBQUFBQUFBQUJUQUFVQUFBQUFBQUFBZUF3QUFBQUFBQUJUQUNBQUF3QXVkR1Y0ZEFB
QUFBQUFBQUJWCkFBQUFBd0hHQVFBQUN3QUFBRVE1RUpVQUFBRUFBQUF1WkdWaWRXY2tVd0FBQUFC
V0FBQUFBd0dVQWdBQUdRQUFBQUFBQUFCVkFBVUEKQUFBQUFBQUFyZ3dBQUFBQUFBQlZBQ0FBQXdB
QUFBQUE4UXdBQUFBQUFBQUFBQUFBQWdBQUFBQUFEdzBBQUFBQUFBQUFBQUFBQWdBdQpjbVJoZEdF
QUFBQUFBQUJYQUFBQUF3RUVBQUFBQUFBQUFBQUFBQUFBQUFJQUFBQUFBQUFBTWcwQUFBQUFBQUJY
QUFBQUFnQUFBQUFBClFnMEFBQUFBQUFBQUFBQUFBZ0FBQUFBQVhRMEFBQUFBQUFBQUFBQUFBZ0FB
QUFBQWNnMEFBQUFBQUFBQUFBQUFBZ0FBQUFBQWh3MEEKQUFBQUFBQUFBQUFBQWdBQUFBQUFyZzBB
QUFBQUFBQUFBQUFBQWdBQUFBQUF4QTBBQUFBQUFBQUFBQUFBQWdBQUFBQUE3UTBBQUFBQQpBQUFB
QUFBQUFnQXVkR1Y0ZEFBQUFBQUFBQUJZQUFBQUF3RkpBQUFBQndBQUFIYjI0TG9BQUFFQUFBQXVa
R1ZpZFdja1V3QUFBQUJaCkFBQUFBd0ZVQVFBQUN3QUFBQUFBQUFCWUFBVUFBQUFBQUFBQUNBNEFB
QUFBQUFCWUFDQUFBd0FBQUFBQVBRNEFBQUFBQUFBQUFBQUEKQWdBdVluTnpBQUFBQUFBQUFBQmFB
QUFBQXdFRUFBQUFBQUFBQUFBQUFBQUFBQUlBQUFBQUFBQUFhQTRBQUFBQUFBQmFBQUFBQXdBQQpB
QUFBd0E0QUFBQUFBQUFBQUFBQUFnQUFBQUFBNGc0QUFBQUFBQUFBQUFBQUFnQXVZbk56QUFBQUFB
QUFBQUJiQUFBQUF3RUVBQUFBCkFBQUFBQUFBQUFBQUFBSUFBQUFBQUFBQUFnOEFBQUFBQUFCYkFB
QUFBd0F1ZEdWNGRBQUFBQUFBQUFCY0FBQUFBd0ZBQWdBQUVBQUEKQUJLa3d1WUFBQUVBQUFBdVpH
VmlkV2NrVXdBQUFBQmRBQUFBQXdHOEFnQUFId0FBQUFBQUFBQmNBQVVBQUFBQUFBQUFRdzhBQUFB
QQpBQUJjQUNBQUF3QUFBQUFBaXc4QUFBQUFBQUFBQUFBQUFnQUFBQUFBc0E4QUFBQUFBQUFBQUFB
QUFnQUFBQUFBenc4QUFBQUFBQUFBCkFBQUFBZ0FBQUFBQTVBOEFBQUFBQUFBQUFBQUFBZ0FBQUFB
QS9ROEFBQUFBQUFBQUFBQUFBZ0FBQUFBQUV4QUFBQUFBQUFBQUFBQUEKQWdBQUFBQUFPUkFBQUFB
QUFBQUFBQUFBQWdBQUFBQUFWaEFBQUFBQUFBQUFBQUFBQWdBQUFBQUFoUkFBQUFBQUFBQUFBQUFB
QWdBQQpBQUFBbUJBQUFBQUFBQUFBQUFBQUFnQXVkR1Y0ZEFBQUFBQUFBQUJlQUFBQUF3R09BQUFB
Q0FBQUFLcFRBRndBQUFFQUFBQXVaR1ZpCmRXY2tVd0FBQUFCZkFBQUFBd0U0QVFBQUNRQUFBQUFB
QUFCZUFBVUFBQUFBQUFBQXRCQUFBQUFBQUFCZUFDQUFBd0F1Y21SaGRHRUEKQUFBQUFBQmdBQUFB
QXdFRUFBQUFBQUFBQUZZMlhXQUFBQUlBQUFBQUFBQUE1aEFBQUFBQUFBQmdBQUFBQWdBdVluTnpB
QUFBQUFBQQpBQUJoQUFBQUF3RUVBQUFBQUFBQUFBQUFBQUFBQUFJQUFBQUFBQUFBOWhBQUFBQUFB
QUJoQUFBQUF3QUFBQUFBU3hFQUFBQUFBQUFBCkFBQUFBZ0F1Y21SaGRHRUFBQUFBQUFCaUFBQUFB
d0VFQUFBQUFBQUFBTXQwT1BZQUFBSUFBQUFBQUFBQWF4RUFBQUFBQUFCaUFBQUEKQWdBdVluTnpB
QUFBQUFBQUFBQmpBQUFBQXdFRUFBQUFBQUFBQUFBQUFBQUFBQUlBQUFBQUFBQUFleEVBQUFBQUFB
QmpBQUFBQXdBdQpkR1Y0ZEFBQUFBQUFBQUJrQUFBQUF3RzRBQUFBREFBQUFDak5nR2dBQUFFQUFB
QXVaR1ZpZFdja1V3QUFBQUJsQUFBQUF3SFFBUUFBCkR3QUFBQUFBQUFCa0FBVUFBQUFBQUFBQXVo
RUFBQUFBQUFCa0FDQUFBd0FBQUFBQTZoRUFBQUFBQUFBQUFBQUFBZ0FBQUFBQUF4SUEKQUFBQUFB
QUFBQUFBQWdBdWNtUmhkR0VBQUFBQUFBQm1BQUFBQXdFRUFBQUFBQUFBQUQwdFpyWUFBQUlBQUFB
QUFBQUFJUklBQUFBQQpBQUJtQUFBQUFnQUFBQUFBTVJJQUFBQUFBQUFBQUFBQUFnQXVZbk56QUFB
QUFBQUFBQUJuQUFBQUF3RUVBQUFBQUFBQUFBQUFBQUFBCkFBSUFBQUFBQUFBQVF4SUFBQUFBQUFC
bkFBQUFBd0F1ZEdWNGRBQUFBQUFBQUFCb0FBQUFBd0hPQkFBQUx3QUFBTHl0cjBBQUFBRUEKQUFB
dVpHVmlkV2NrVXdBQUFBQnBBQUFBQXdIQUJRQUFXUUFBQUFBQUFBQm9BQVVBQUFBQUFBQUFqQklB
QUFBQUFBQm9BQ0FBQXdBQQpBQUFBN2hJQUFBQUFBQUFBQUFBQUFnQUFBQUFBRVJNQUFBQUFBQUFB
QUFBQUFnQUFBQUFBSmhNQUFBQUFBQUFBQUFBQUFnQUFBQUFBClFSTUFBQUFBQUFBQUFBQUFBZ0FB
QUFBQVZoTUFBQUFBQUFBQUFBQUFBZ0FBQUFBQWJoTUFBQUFBQUFBQUFBQUFBZ0F1Y21SaGRHRUEK
QUFBQUFBQnFBQUFBQXdFSUFBQUFBQUFBQU5IZUdPZ0FBQUlBQUFBQUFBQUFrUk1BQUFBQUFBQnFB
QUFBQWdBQUFBQUFxUk1BQUFBQQpBQUFBQUFBQUFnQXVjbVJoZEdFQUFBQUFBQUJyQUFBQUF3RUVB
QUFBQUFBQUFMKzc3N3NBQUFJQUFBQUFBQUFBd3hNQUFBQUFBQUJyCkFBQUFBZ0F1Y21SaGRHRUFB
QUFBQUFCc0FBQUFBd0VFQUFBQUFBQUFBSjg0VjFZQUFBSUFBQUFBQUFBQTB4TUFBQUFBQUFCc0FB
QUEKQWdBQUFBQUE0eE1BQUFBQUFBQUFBQUFBQWdBQUFBQUErUk1BQUFBQUFBQUFBQUFBQWdBdWRH
VjRkQUFBQUFBQUFBQnRBQUFBQXdGYgpBUUFBREFBQUFGNGZlK1FBQUFFQUFBQXVaR1ZpZFdja1V3
QUFBQUJ1QUFBQUF3RmdBZ0FBRndBQUFBQUFBQUJ0QUFVQUFBQUFBQUFBCkVCUUFBQUFBQUFCdEFD
QUFBd0FBQUFBQVNCUUFBQUFBQUFBQUFBQUFBZ0FBQUFBQVhSUUFBQUFBQUFBQUFBQUFBZ0FBQUFB
QWRSUUEKQUFBQUFBQUFBQUFBQWdBdWNtUmhkR0VBQUFBQUFBQnZBQUFBQXdFRUFBQUFBQUFBQU1M
RElKVUFBQUlBQUFBQUFBQUFqeFFBQUFBQQpBQUJ2QUFBQUFnQXVjbVJoZEdFQUFBQUFBQUJ3QUFB
QUF3RUVBQUFBQUFBQUFIbk1icTBBQUFJQUFBQUFBQUFBbnhRQUFBQUFBQUJ3CkFBQUFBZ0FBQUFB
QXJ4UUFBQUFBQUFBQUFBQUFBZ0FBQUFBQXd4UUFBQUFBQUFBQUFBQUFBZ0FBQUFBQTNCUUFBQUFB
QUFBQUFBQUEKQWdBdWRHVjRkQUFBQUFBQUFBQnhBQUFBQXdHYUFRQUFEQUFBQUN3elJud0FBQUVB
QUFBdVpHVmlkV2NrVXdBQUFBQnlBQUFBQXdGQQpBZ0FBR1FBQUFBQUFBQUJ4QUFVQUFBQUFBQUFB
OXhRQUFBQUFBQUJ4QUNBQUF3QXVkR1Y0ZEFBQUFBQUFBQUJ6QUFBQUF3RTBBQUFBCkFBQUFBQ3JS
NGZjQUFBRUFBQUF1WkdWaWRXY2tVd0FBQUFCMEFBQUFBd0VzQVFBQUJRQUFBQUFBQUFCekFBVUFB
QUFBQUFBQU9CVUEKQUFBQUFBQnpBQ0FBQXdBdWRHVjRkQUFBQUFBQUFBQjFBQUFBQXdHR0FRQUFB
UUFBQUkwVzNkOEFBQUVBQUFBdVpHVmlkV2NrVXdBQQpBQUIyQUFBQUF3SFVBUUFBQlFBQUFBQUFB
QUIxQUFVQUFBQUFBQUFBYWhVQUFBQUFBQUIxQUNBQUF3QXVkR1Y0ZEFBQUFBQUFBQUIzCkFBQUFB
d0Y1QUFBQUNnQUFBRVJRa1gwQUFBRUFBQUF1WkdWaWRXY2tVd0FBQUFCNEFBQUFBd0cwQVFBQURR
QUFBQUFBQUFCM0FBVUEKQUFBQUFBQUFuaFVBQUFBQUFBQjNBQ0FBQWdBdVluTnpBQUFBQUFBQUFB
QjVBQUFBQXdFRUFBQUFBQUFBQUFBQUFBQUFBQUlBQUFBQQpBQUFBMWhVQUFBQUFBQUI1QUFBQUF3
QXVZbk56QUFBQUFBQUFBQUI2QUFBQUF3RUVBQUFBQUFBQUFBQUFBQUFBQUFJQUFBQUFBQUFBCkxS
WUFBQUFBQUFCNkFBQUFBd0F1WW5OekFBQUFBQUFBQUFCN0FBQUFBd0VFQUFBQUFBQUFBQUFBQUFB
QUFBSUFBQUFBQUFBQWhoWUEKQUFBQUFBQjdBQUFBQXdBdWRHVjRkQUFBQUFBQUFBQjhBQUFBQXdF
bEFRQUFHZ0FBQU9Za24yb0FBQUVBQUFBdVpHVmlkV2NrVXdBQQpBQUI5QUFBQUF3SGtBUUFBRndB
QUFBQUFBQUI4QUFVQUFBQUFBQUFBeXhZQUFBQUFBQUI4QUNBQUFnQXVZbk56QUFBQUFBQUFBQUIr
CkFBQUFBd0VFQUFBQUFBQUFBQUFBQUFBQUFBSUFBQUFBQUFBQUZCY0FBQUFBQUFCK0FBQUFBd0F1
WkdGMFlRQUFBQUFBQUFCL0FBQUEKQXdFUUFBQUFBQUFBQU4zSzJUMEFBQUlBQUFBQUFBQUFmUmNB
QUFBQUFBQi9BQUFBQXdBdVluTnpBQUFBQUFBQUFBQ0FBQUFBQXdFRQpBQUFBQUFBQUFBQUFBQUFB
QUFJQUFBQUFBQUFBMXhjQUFBQUFBQUNBQUFBQUF3QXVjbVJoZEdFQUFBQUFBQUNCQUFBQUF3RUVB
QUFBCkFBQUFBS1didkI4QUFBSUFBQUFBQUFBQVBoZ0FBQUFBQUFDQkFBQUFBZ0F1WW5OekFBQUFB
QUFBQUFDQ0FBQUFBd0VFQUFBQUFBQUEKQUFBQUFBQUFBQUlBQUFBQUFBQUFUaGdBQUFBQUFBQ0NB
QUFBQXdBdWNtUmhkR0VBQUFBQUFBQ0RBQUFBQXdFRUFBQUFBQUFBQVBwbwp3aHdBQUFJQUFBQUFB
QUFBc2hnQUFBQUFBQUNEQUFBQUFnQXVZbk56QUFBQUFBQUFBQUNFQUFBQUF3RUVBQUFBQUFBQUFB
QUFBQUFBCkFBSUFBQUFBQUFBQXdoZ0FBQUFBQUFDRUFBQUFBd0F1ZEdWNGRBQUFBQUFBQUFDRkFB
QUFBd0ZIQWdBQUV3QUFBS0I4cDU0QUFBRUEKQUFBdVpHVmlkV2NrVXdBQUFBQ0dBQUFBQXdGNEFn
QUFGd0FBQUFBQUFBQ0ZBQVVBQUFBQUFBQUFHQmtBQUFBQUFBQ0ZBQ0FBQWdBdQpZbk56QUFBQUFB
QUFBQUNIQUFBQUF3RUVBQUFBQUFBQUFBQUFBQUFBQUFJQUFBQUFBQUFBV0JrQUFBQUFBQUNIQUFB
QUF3QXVjbVJoCmRHRUFBQUFBQUFDSUFBQUFBd0VFQUFBQUFBQUFBRGhpSDBZQUFBSUFBQUFBQUFB
QXZSa0FBQUFBQUFDSUFBQUFBZ0F1WW5OekFBQUEKQUFBQUFBQ0pBQUFBQXdFRUFBQUFBQUFBQUFB
QUFBQUFBQUlBQUFBQUFBQUF6UmtBQUFBQUFBQ0pBQUFBQXdBQUFBQUFHeG9BQUFBQQpBQUFBQUFB
QUFnQXVkR1Y0ZEFBQUFBQUFBQUNLQUFBQUF3RVVBd0FBT1FBQUFBR3N5dWNBQUFFQUFBQXVaR1Zp
ZFdja1V3QUFBQUNMCkFBQUFBd0d3QXdBQVBRQUFBQUFBQUFDS0FBVUFBQUFBQUFBQU5Cb0FBQUFB
QUFDS0FDQUFBZ0F1Y21SaGRHRUFBQUFBQUFDTUFBQUEKQXdFSUFBQUFBQUFBQUpCQjNIWUFBQUlB
QUFBQUFBQUFlUm9BQUFBQUFBQ01BQUFBQWdBdWNtUmhkR0VBQUFBQUFBQ05BQUFBQXdFSQpBQUFB
QUFBQUFJRE0ycUlBQUFJQUFBQUFBQUFBa1JvQUFBQUFBQUNOQUFBQUFnQXVjbVJoZEdFQUFBQUFB
QUNPQUFBQUF3RUVBQUFBCkFBQUFBRmJzT3NvQUFBSUFBQUFBQUFBQXFSb0FBQUFBQUFDT0FBQUFB
Z0F1WW5OekFBQUFBQUFBQUFDUEFBQUFBd0VJQUFBQUFBQUEKQUFBQUFBQUFBQUlBQUFBQUFBQUF1
Um9BQUFBQUFBQ1BBQUFBQXdBdVluTnpBQUFBQUFBQUFBQ1FBQUFBQXdFRUFBQUFBQUFBQUFBQQpB
QUFBQUFJQUFBQUFBQUFBSFJzQUFBQUFBQUNRQUFBQUF3QXVaR0YwWVFBQUFBQUFBQUNSQUFBQUF3
RVFBQUFBQUFBQUFLclV1TEVBCkFBSUFBQUFBQUFBQWd4c0FBQUFBQUFDUkFBQUFBd0F1WW5OekFB
QUFBQUFBQUFDU0FBQUFBd0VFQUFBQUFBQUFBQUFBQUFBQUFBSUEKQUFBQUFBQUEzeHNBQUFBQUFB
Q1NBQUFBQXdBdWNtUmhkR0VBQUFBQUFBQ1RBQUFBQXdFRUFBQUFBQUFBQUw2dnlzY0FBQUlBQUFB
QQpBQUFBUWh3QUFBQUFBQUNUQUFBQUFnQXVjbVJoZEdFQUFBQUFBQUNVQUFBQUF3RUVBQUFBQUFB
QUFQTUI2OThBQUFJQUFBQUFBQUFBClVod0FBQUFBQUFDVUFBQUFBZ0F1WW5OekFBQUFBQUFBQUFD
VkFBQUFBd0VFQUFBQUFBQUFBQUFBQUFBQUFBSUFBQUFBQUFBQVlod0EKQUFBQUFBQ1ZBQUFBQXdB
dVpHRjBZUUFBQUFBQUFBQ1dBQUFBQXdFUUFBQUFBQUFBQUV5NWZiUUFBQUlBQUFBQUFBQUF4UndB
QUFBQQpBQUNXQUFBQUF3QXVZbk56QUFBQUFBQUFBQUNYQUFBQUF3RUVBQUFBQUFBQUFBQUFBQUFB
QUFJQUFBQUFBQUFBSGgwQUFBQUFBQUNYCkFBQUFBd0F1ZEdWNGRBQUFBQUFBQUFDWUFBQUFBd0dD
QUFBQUF3QUFBSlcycHdJQUFBRUFBQUF1WkdWaWRXY2tVd0FBQUFDWkFBQUEKQXdHRUFRQUFDUUFB
QUFBQUFBQ1lBQVVBQUFBQUFBQUFjQjBBQUFBQUFBQ1lBQ0FBQWdBdWNtUmhkR0VBQUFBQUFBQ2FB
QUFBQXdFSQpBQUFBQUFBQUFHTjNtcWtBQUFJQUFBQUFBQUFBdlIwQUFBQUFBQUNhQUFBQUFnQUFB
QUFBMVIwQUFBQUFBQUFBQUFBQUFnQXVkR1Y0CmRBQUFBQUFBQUFDYkFBQUFBd0V3QUFBQUFnQUFB
SDdEaEo0QUFBRUFBQUF1WkdWaWRXY2tVd0FBQUFDY0FBQUFBd0VJQVFBQUJRQUEKQUFBQUFBQ2JB
QVVBQUFBQUFBQUE2aDBBQUFBQUFBQ2JBQ0FBQWdBdWRHVjRkQUFBQUFBQUFBQ2RBQUFBQXdIc0JR
QUFUQUFBQUdxeQowbVFBQUFFQUFBQXVaR1ZpZFdja1V3QUFBQUNlQUFBQUF3RndCZ0FBYXdBQUFB
QUFBQUNkQUFVQUFBQUFBQUFBTVI0QUFBQUFBQUNkCkFDQUFBZ0FBQUFBQWZ4NEFBQUFBQUFBQUFB
QUFBZ0FBQUFBQW9oNEFBQUFBQUFBQUFBQUFBZ0FBQUFBQXVCNEFBQUFBQUFBQUFBQUEKQWdBQUFB
QUF6UjRBQUFBQUFBQUFBQUFBQWdBQUFBQUE1eDRBQUFBQUFBQUFBQUFBQWdBQUFBQUFCaDhBQUFB
QUFBQUFBQUFBQWdBQQpBQUFBSWg4QUFBQUFBQUFBQUFBQUFnQXVZbk56QUFBQUFBQUFBQUNmQUFB
QUF3RUVBQUFBQUFBQUFBQUFBQUFBQUFJQUFBQUFBQUFBClBCOEFBQUFBQUFDZkFBQUFBd0F1WW5O
ekFBQUFBQUFBQUFDZ0FBQUFBd0VFQUFBQUFBQUFBQUFBQUFBQUFBSUFBQUFBQUFBQXFSOEEKQUFB
QUFBQ2dBQUFBQXdBdVluTnpBQUFBQUFBQUFBQ2hBQUFBQXdFRUFBQUFBQUFBQUFBQUFBQUFBQUlB
QUFBQUFBQUFHU0FBQUFBQQpBQUNoQUFBQUF3QXVaR0YwWVFBQUFBQUFBQUNpQUFBQUF3RVFBQUFB
QUFBQUFKNVNSbGdBQUFJQUFBQUFBQUFBakNBQUFBQUFBQUNpCkFBQUFBd0F1WW5OekFBQUFBQUFB
QUFDakFBQUFBd0VFQUFBQUFBQUFBQUFBQUFBQUFBSUFBQUFBQUFBQThTQUFBQUFBQUFDakFBQUEK
QXdBdVpHRjBZUUFBQUFBQUFBQ2tBQUFBQXdFUUFBQUFBQUFBQUY0SUR4NEFBQUlBQUFBQUFBQUFa
U0VBQUFBQUFBQ2tBQUFBQXdBdQpZbk56QUFBQUFBQUFBQUNsQUFBQUF3RUVBQUFBQUFBQUFBQUFB
QUFBQUFJQUFBQUFBQUFBeXlFQUFBQUFBQUNsQUFBQUF3QXVkR1Y0CmRBQUFBQUFBQUFDbUFBQUFB
d0doQUFBQUJ3QUFBRk16Ylo4QUFBRUFBQUF1WkdWaWRXY2tVd0FBQUFDbkFBQUFBd0dBQVFBQUN3
QUEKQUFBQUFBQ21BQVVBQUFBQUFBQUFKaUlBQUFBQUFBQ21BQ0FBQWdBdWNtUmhkR0VBQUFBQUFB
Q29BQUFBQXdFSUFBQUFBQUFBQURKbApXT01BQUFJQUFBQUFBQUFBYmlJQUFBQUFBQUNvQUFBQUFn
QXVjbVJoZEdFQUFBQUFBQUNwQUFBQUF3RUlBQUFBQUFBQUFNRlRIandBCkFBSUFBQUFBQUFBQWhp
SUFBQUFBQUFDcEFBQUFBZ0F1ZEdWNGRBQUFBQUFBQUFDcUFBQUFBd0hDQXdBQUlRQUFBSGx1cThB
QUFBRUEKQUFBdVpHVmlkV2NrVXdBQUFBQ3JBQUFBQXdHb0F3QUFNUUFBQUFBQUFBQ3FBQVVBQUFB
QUFBQUFuaUlBQUFBQUFBQ3FBQ0FBQWdBdQpjbVJoZEdFQUFBQUFBQUNzQUFBQUF3RUVBQUFBQUFB
QUFGZGpHVXNBQUFJQUFBQUFBQUFBOFNJQUFBQUFBQUNzQUFBQUFnQUFBQUFBCkFTTUFBQUFBQUFB
QUFBQUFBZ0FBQUFBQUZpTUFBQUFBQUFBQUFBQUFBZ0F1WW5OekFBQUFBQUFBQUFDdEFBQUFBd0VF
QUFBQUFBQUEKQUFBQUFBQUFBQUlBQUFBQUFBQUFQU01BQUFBQUFBQ3RBQUFBQXdBdWNtUmhkR0VB
QUFBQUFBQ3VBQUFBQXdFRUFBQUFBQUFBQU9DRgo0dm9BQUFJQUFBQUFBQUFBc1NNQUFBQUFBQUN1
QUFBQUFnQXVZbk56QUFBQUFBQUFBQUN2QUFBQUF3RUVBQUFBQUFBQUFBQUFBQUFBCkFBSUFBQUFB
QUFBQXdTTUFBQUFBQUFDdkFBQUFBd0F1ZEdWNGRBQUFBQUFBQUFDd0FBQUFBd0ZYQkFBQU9BQUFB
TWxtTEVBQUFBRUEKQUFBdVpHVmlkV2NrVXdBQUFBQ3hBQUFBQXdHZ0JBQUFSd0FBQUFBQUFBQ3dB
QVVBQUFBQUFBQUFJU1FBQUFBQUFBQ3dBQ0FBQWdBdQpZbk56QUFBQUFBQUFBQUN5QUFBQUF3RUVB
QUFBQUFBQUFBQUFBQUFBQUFJQUFBQUFBQUFBWXlRQUFBQUFBQUN5QUFBQUF3QXVjbVJoCmRHRUFB
QUFBQUFDekFBQUFBd0VFQUFBQUFBQUFBT3BnT1RvQUFBSUFBQUFBQUFBQXh5UUFBQUFBQUFDekFB
QUFBZ0F1WW5OekFBQUEKQUFBQUFBQzBBQUFBQXdFRUFBQUFBQUFBQUFBQUFBQUFBQUlBQUFBQUFB
QUExeVFBQUFBQUFBQzBBQUFBQXdBdWNtUmhkR0VBQUFBQQpBQUMxQUFBQUF3RUVBQUFBQUFBQUFD
QUljQm9BQUFJQUFBQUFBQUFBT0NVQUFBQUFBQUMxQUFBQUFnQXVZbk56QUFBQUFBQUFBQUMyCkFB
QUFBd0VFQUFBQUFBQUFBQUFBQUFBQUFBSUFBQUFBQUFBQVNDVUFBQUFBQUFDMkFBQUFBd0F1WkdG
MFlRQUFBQUFBQUFDM0FBQUEKQXdFUUFBQUFBQUFBQUJyVFdnNEFBQUlBQUFBQUFBQUFzeVVBQUFB
QUFBQzNBQUFBQXdBdVluTnpBQUFBQUFBQUFBQzRBQUFBQXdFRQpBQUFBQUFBQUFBQUFBQUFBQUFJ
QUFBQUFBQUFBQmlZQUFBQUFBQUM0QUFBQUF3QXVkR1Y0ZEFBQUFBQUFBQUM1QUFBQUF3R29BZ0FB
CktBQUFBUFJidmJjQUFBRUFBQUF1WkdWaWRXY2tVd0FBQUFDNkFBQUFBd0ZrQXdBQUx3QUFBQUFB
QUFDNUFBVUFBQUFBQUFBQVZTWUEKQUFBQUFBQzVBQ0FBQWdBQUFBQUFsU1lBQUFBQUFBQUFBQUFB
QWdBQUFBQUFzQ1lBQUFBQUFBQUFBQUFBQWdBQUFBQUF6U1lBQUFBQQpBQUFBQUFBQUFnQXVjbVJo
ZEdFQUFBQUFBQUM3QUFBQUF3RUVBQUFBQUFBQUFKcEdtOU1BQUFJQUFBQUFBQUFBOENZQUFBQUFB
QUM3CkFBQUFBZ0FBQUFBQUFDY0FBQUFBQUFBQUFBQUFBZ0F1WW5OekFBQUFBQUFBQUFDOEFBQUFB
d0VFQUFBQUFBQUFBQUFBQUFBQUFBSUEKQUFBQUFBQUFFeWNBQUFBQUFBQzhBQUFBQXdBdVluTnpB
QUFBQUFBQUFBQzlBQUFBQXdFRUFBQUFBQUFBQUFBQUFBQUFBQUlBQUFBQQpBQUFBZFNjQUFBQUFB
QUM5QUFBQUF3QXVaR0YwWVFBQUFBQUFBQUMrQUFBQUF3RVlBQUFBQUFBQUFQd3AwSkVBQUFJQUFB
QUFBQUFBCjNpY0FBQUFBQUFDK0FBQUFBd0F1WW5OekFBQUFBQUFBQUFDL0FBQUFBd0VFQUFBQUFB
QUFBQUFBQUFBQUFBSUFBQUFBQUFBQUx5Z0EKQUFBQUFBQy9BQUFBQXdBdWRHVjRkQUFBQUFBQUFB
REFBQUFBQXdHQ0FBQUFBd0FBQUpXMnB3SUFBQUVBQUFBdVpHVmlkV2NrVXdBQQpBQURCQUFBQUF3
R0VBUUFBQ1FBQUFBQUFBQURBQUFVQUFBQUFBQUFBZkNnQUFBQUFBQURBQUNBQUFnQXVkR1Y0ZEFB
QUFBQUFBQURDCkFBQUFBd0V3QUFBQUFnQUFBSDdEaEo0QUFBRUFBQUF1WkdWaWRXY2tVd0FBQUFE
REFBQUFBd0VFQVFBQUJRQUFBQUFBQUFEQ0FBVUEKQUFBQUFBQUF4eWdBQUFBQUFBRENBQ0FBQWdB
dWRHVjRkQUFBQUFBQUFBREVBQUFBQXdFTUJRQUFSQUFBQUNnWEJIOEFBQUVBQUFBdQpaR1ZpZFdj
a1V3QUFBQURGQUFBQUF3RjhCUUFBVFFBQUFBQUFBQURFQUFVQUFBQUFBQUFBRENrQUFBQUFBQURF
QUNBQUFnQUFBQUFBCldDa0FBQUFBQUFBQUFBQUFBZ0F1WW5OekFBQUFBQUFBQUFER0FBQUFBd0VF
QUFBQUFBQUFBQUFBQUFBQUFBSUFBQUFBQUFBQWVTa0EKQUFBQUFBREdBQUFBQXdBdVluTnpBQUFB
QUFBQUFBREhBQUFBQXdFRUFBQUFBQUFBQUFBQUFBQUFBQUlBQUFBQUFBQUE1Q2tBQUFBQQpBQURI
QUFBQUF3QXVjbVJoZEdFQUFBQUFBQURJQUFBQUF3RUVBQUFBQUFBQUFBUTJaZjRBQUFJQUFBQUFB
QUFBVkNvQUFBQUFBQURJCkFBQUFBZ0F1WW5OekFBQUFBQUFBQUFESkFBQUFBd0VFQUFBQUFBQUFB
QUFBQUFBQUFBSUFBQUFBQUFBQVpDb0FBQUFBQUFESkFBQUEKQXdBdVluTnpBQUFBQUFBQUFBREtB
QUFBQXdFRUFBQUFBQUFBQUFBQUFBQUFBQUlBQUFBQUFBQUEwaW9BQUFBQUFBREtBQUFBQXdBdQpa
R0YwWVFBQUFBQUFBQURMQUFBQUF3RVFBQUFBQUFBQUFKNVNSbGdBQUFJQUFBQUFBQUFBUXlzQUFB
QUFBQURMQUFBQUF3QXVZbk56CkFBQUFBQUFBQUFETUFBQUFBd0VFQUFBQUFBQUFBQUFBQUFBQUFB
SUFBQUFBQUFBQXBpc0FBQUFBQUFETUFBQUFBd0F1WkdGMFlRQUEKQUFBQUFBRE5BQUFBQXdFUUFB
QUFBQUFBQUY0SUR4NEFBQUlBQUFBQUFBQUFHQ3dBQUFBQUFBRE5BQUFBQXdBdVluTnpBQUFBQUFB
QQpBQURPQUFBQUF3RUVBQUFBQUFBQUFBQUFBQUFBQUFJQUFBQUFBQUFBZkN3QUFBQUFBQURPQUFB
QUF3QXVkR1Y0ZEFBQUFBQUFBQURQCkFBQUFBd0UvQUFBQUFnQUFBTy9kaDhjQUFBRUFBQUF1WkdW
aWRXY2tVd0FBQUFEUUFBQUFBd0VnQVFBQUJRQUFBQUFBQUFEUEFBVUEKQUFBQUFBQUExU3dBQUFB
QUFBRFBBQ0FBQWdBdWRHVjRkQUFBQUFBQUFBRFJBQUFBQXdFOUF3QUFLd0FBQUN5aGZWd0FBQUVB
QUFBdQpaR1ZpZFdja1V3QUFBQURTQUFBQUF3RzhBd0FBTVFBQUFBQUFBQURSQUFVQUFBQUFBQUFB
SlMwQUFBQUFBQURSQUNBQUFnQXVjbVJoCmRHRUFBQUFBQUFEVEFBQUFBd0VFQUFBQUFBQUFBSTRM
eDNZQUFBSUFBQUFBQUFBQWRpMEFBQUFBQUFEVEFBQUFBZ0F1WW5OekFBQUEKQUFBQUFBRFVBQUFB
QXdFRUFBQUFBQUFBQUFBQUFBQUFBQUlBQUFBQUFBQUFoaTBBQUFBQUFBRFVBQUFBQXdBdVluTnpB
QUFBQUFBQQpBQURWQUFBQUF3RUVBQUFBQUFBQUFBQUFBQUFBQUFJQUFBQUFBQUFBK3kwQUFBQUFB
QURWQUFBQUF3QXVaR0YwWVFBQUFBQUFBQURXCkFBQUFBd0VRQUFBQUFBQUFBS1paQWJzQUFBSUFB
QUFBQUFBQWJ5NEFBQUFBQUFEV0FBQUFBd0F1WW5OekFBQUFBQUFBQUFEWEFBQUEKQXdFRUFBQUFB
QUFBQUFBQUFBQUFBQUlBQUFBQUFBQUEwUzRBQUFBQUFBRFhBQUFBQXdBdWRHVjRkQUFBQUFBQUFB
RFlBQUFBQXdFSgpBQUFBQVFBQUFEVHIyMWtBQUFJQUFBQXVaR1ZpZFdja1V3QUFBQURaQUFBQUF3
SFFBQUFBQXdBQUFBQUFBQURZQUFVQUFBQUFBQUFBCkx5OEFBQUFBQUFEWUFDQUFBZ0F1Y21SaGRH
RUFBQUFBQUFEYUFBQUFBd0VZQUFBQUJnQUFBQUFBQUFBQUFBSUFBQUFBQUFBQVdTOEEKQUFBQUFB
RGFBQUFBQWdBQUFBQUFnUzhBQUFBQUFBQUFBQ0FBQWdBQUFBQUFyeThBQUFBQUFBQUFBQ0FBYVFH
MUFnQUFBZ0FBQUFBQQpBQUFBQUFBQUFBQXVkR1Y0ZEFBQUFBQUFBQURiQUFBQUF3RUpBQUFBQVFB
QUFEVHIyMWtBQUFJQUFBQXVaR1ZpZFdja1V3QUFBQURjCkFBQUFBd0hvQUFBQUF3QUFBQUFBQUFE
YkFBVUFBQUFBQUFBQTNTOEFBQUFBQUFEYkFDQUFBZ0F1Y21SaGRHRUFBQUFBQUFEZEFBQUEKQXdF
WUFBQUFCZ0FBQUFBQUFBQUFBQUlBQUFBQUFBQUFFekFBQUFBQUFBRGRBQUFBQWdBQUFBQUFSekFB
QUFBQUFBQUFBQ0FBQWdBQQpBQUFBZ1RBQUFBQUFBQUFBQUNBQWFRSEFBZ0FBQWdBQUFBQUFBQUFB
QUFBQUFBQXVkR1Y0ZEFBQUFBQUFBQURlQUFBQUF3RUpBQUFBCkFRQUFBRFRyMjFrQUFBSUFBQUF1
WkdWaWRXY2tVd0FBQUFEZkFBQUFBd0hrQUFBQUF3QUFBQUFBQUFEZUFBVUFBQUFBQUFBQXV6QUEK
QUFBQUFBRGVBQ0FBQWdBdWNtUmhkR0VBQUFBQUFBRGdBQUFBQXdFWUFBQUFCZ0FBQUFBQUFBQUFB
QUlBQUFBQUFBQUE3akFBQUFBQQpBQURnQUFBQUFnQUFBQUFBSHpFQUFBQUFBQUFBQUNBQUFnQUFB
QUFBVmpFQUFBQUFBQUFBQUNBQWFRSExBZ0FBQWdBQUFBQUFBQUFBCkFBQUFBQUF1ZEdWNGRBQUFB
QUFBQUFEaEFBQUFBd0VKQUFBQUFRQUFBRFRyMjFrQUFBSUFBQUF1WkdWaWRXY2tVd0FBQUFEaUFB
QUEKQXdISUFBQUFBd0FBQUFBQUFBRGhBQVVBQUFBQUFBQUFqVEVBQUFBQUFBRGhBQ0FBQWdBdWNt
UmhkR0VBQUFBQUFBRGpBQUFBQXdFWQpBQUFBQmdBQUFBQUFBQUFBQUFJQUFBQUFBQUFBc2pFQUFB
QUFBQURqQUFBQUFnQUFBQUFBMVRFQUFBQUFBQUFBQUNBQUFnQUFBQUFBCi9qRUFBQUFBQUFBQUFD
QUFhUUhXQWdBQUFnQUFBQUFBQUFBQUFBQUFBQUF1ZEdWNGRBQUFBQUFBQUFEa0FBQUFBd0VKQUFB
QUFRQUEKQURUcjIxa0FBQUlBQUFBdVpHVmlkV2NrVXdBQUFBRGxBQUFBQXdIZ0FBQUFBd0FBQUFB
QUFBRGtBQVVBQUFBQUFBQUFKeklBQUFBQQpBQURrQUNBQUFnQXVjbVJoZEdFQUFBQUFBQURtQUFB
QUF3RVlBQUFBQmdBQUFBQUFBQUFBQUFJQUFBQUFBQUFBV0RJQUFBQUFBQURtCkFBQUFBZ0FBQUFB
QWh6SUFBQUFBQUFBQUFDQUFBZ0FBQUFBQXZESUFBQUFBQUFBQUFDQUFhUUhoQWdBQUFnQUFBQUFB
QUFBQUFBQUEKQUFBdWRHVjRkQUFBQUFBQUFBRG5BQUFBQXdFSEFBQUFBUUFBQUtyaGk4QUFBQUlB
QUFBdVpHVmlkV2NrVXdBQUFBRG9BQUFBQXdIUQpBQUFBQXdBQUFBQUFBQURuQUFVQUFBQUFBQUFB
OFRJQUFBQUFBQURuQUNBQUFnQXVkR1Y0ZEFBQUFBQUFBQURwQUFBQUF3RUhBQUFBCkFRQUFBS3Jo
aThBQUFBSUFBQUF1WkdWaWRXY2tVd0FBQUFEcUFBQUFBd0hvQUFBQUF3QUFBQUFBQUFEcEFBVUFB
QUFBQUFBQUd6TUEKQUFBQUFBRHBBQ0FBQWdBdWRHVjRkQUFBQUFBQUFBRHJBQUFBQXdFSEFBQUFB
UUFBQUtyaGk4QUFBQUlBQUFBdVpHVmlkV2NrVXdBQQpBQURzQUFBQUF3SGtBQUFBQXdBQUFBQUFB
QURyQUFVQUFBQUFBQUFBVVRNQUFBQUFBQURyQUNBQUFnQXVkR1Y0ZEFBQUFBQUFBQUR0CkFBQUFB
d0VIQUFBQUFRQUFBS3JoaThBQUFBSUFBQUF1WkdWaWRXY2tVd0FBQUFEdUFBQUFBd0hJQUFBQUF3
QUFBQUFBQUFEdEFBVUEKQUFBQUFBQUFoRE1BQUFBQUFBRHRBQ0FBQWdBdWRHVjRkQUFBQUFBQUFB
RHZBQUFBQXdFSEFBQUFBUUFBQUtyaGk4QUFBQUlBQUFBdQpaR1ZpZFdja1V3QUFBQUR3QUFBQUF3
SGdBQUFBQXdBQUFBQUFBQUR2QUFVQUFBQUFBQUFBcVRNQUFBQUFBQUR2QUNBQUFnQXVkR1Y0CmRB
QUFBQUFBQUFEeEFBQUFBd0VKQUFBQUFRQUFBRFRyMjFrQUFBSUFBQUF1WkdWaWRXY2tVd0FBQUFE
eUFBQUFBd0hBQUFBQUF3QUEKQUFBQUFBRHhBQVVBQUFBQUFBQUEyak1BQUFBQUFBRHhBQ0FBQWdB
dWNtUmhkR0VBQUFBQUFBRHpBQUFBQXdFWUFBQUFCZ0FBQUFBQQpBQUFBQUFJQUFBQUFBQUFBK3pN
QUFBQUFBQUR6QUFBQUFnQUFBQUFBR2pRQUFBQUFBQUFBQUNBQUFnQUFBQUFBUHpRQUFBQUFBQUFB
CkFDQUFhUUVGQXdBQUFnQUFBQUFBQUFBQUFBQUFBQUF1ZEdWNGRBQUFBQUFBQUFEMEFBQUFBd0VI
QUFBQUFRQUFBS3JoaThBQUFBSUEKQUFBdVpHVmlkV2NrVXdBQUFBRDFBQUFBQXdIQUFBQUFBd0FB
QUFBQUFBRDBBQVVBQUFBQUFBQUFaRFFBQUFBQUFBRDBBQ0FBQWdBdQpkR1Y0ZEFBQUFBQUFBQUQy
QUFBQUF3RWZBQUFBQWdBQUFMdEk4NW9BQUFJQUFBQXVaR1ZpZFdja1V3QUFBQUQzQUFBQUF3SGtB
QUFBCkF3QUFBQUFBQUFEMkFBVUFBQUFBQUFBQWhUUUFBQUFBQUFEMkFDQUFBZ0F1ZEdWNGRBQUFB
QUFBQUFENEFBQUFBd0VRQUFBQUFRQUEKQUpKTVlkMEFBQUlBQUFBdVpHVmlkV2NrVXdBQUFBRDVB
QUFBQXdId0FBQUFCUUFBQUFBQUFBRDRBQVVBQUFBQUFBQUFxalFBQUFBQQpBQUQ0QUNBQUFnQXVj
bVJoZEdFQUFBQUFBQUQ2QUFBQUF3RWtBQUFBQ1FBQUFBQUFBQUFBQUFJQUFBQUFBQUFBenpRQUFB
QUFBQUQ2CkFBQUFBZ0FBQUFBQThqUUFBQUFBQUFBQUFDQUFBZ0FBQUFBQUd6VUFBQUFBQUFBQUFD
QUFhUUVhQXdBQUFnQUFBQUFBQUFBQUFBQUEKQUFBdWRHVjRkQUFBQUFBQUFBRDdBQUFBQXdFREFB
QUFBQUFBQUxwMWVPNEFBQUlBQUFBdVpHVmlkV2NrVXdBQUFBRDhBQUFBQXdIbwpBQUFBQlFBQUFB
QUFBQUQ3QUFVQUFBQUFBQUFBUkRVQUFBQUFBQUQ3QUNBQUFnQXVkR1Y0ZEFBQUFBQUFBQUQ5QUFB
QUF3RWZBQUFBCkFnQUFBTHRJODVvQUFBSUFBQUF1WkdWaWRXY2tVd0FBQUFEK0FBQUFBd0hvQUFB
QUF3QUFBQUFBQUFEOUFBVUFBQUFBQUFBQWZUVUEKQUFBQUFBRDlBQ0FBQWdBdWRHVjRkQUFBQUFB
QUFBRC9BQUFBQXdGb0FBQUFDZ0FBQU5uYTZac0FBQUVBQUFBdVpHVmlkV2NrVXdBQQpBQUFBQVFB
QUF3R0FBUUFBRHdBQUFBQUFBQUQvQUFVQUFBQUFBQUFBcGpVQUFBQUFBQUQvQUNBQUF3QUFBQUFB
MnpVQUFBQUFBQUFBCkFBQUFBZ0FBQUFBQUFUWUFBQUFBQUFBQUFBQUFBZ0FBQUFBQUpEWUFBQUFB
QUFBQUFBQUFBZ0FBQUFBQVB6WUFBQUFBQUFBQUFBQUEKQWdBdVluTnpBQUFBQUFBQUFBQUJBUUFB
QXdFRUFBQUFBQUFBQUFBQUFBQUFBQUlBQUFBQUFBQUFWellBQUFBQUFBQUJBUUFBQXdBdQpkR1Y0
ZEFBQUFBQUFBQUFDQVFBQUF3RWtBQUFBQlFBQUFCNjk2ZVlBQUFFQUFBQXVaR1ZpZFdja1V3QUFB
QUFEQVFBQUF3SGNBQUFBCkJ3QUFBQUFBQUFBQ0FRVUFBQUFBQUFBQW5qWUFBQUFBQUFBQ0FTQUFB
d0F1WW5OekFBQUFBQUFBQUFBRUFRQUFBd0VFQUFBQUFBQUEKQUFBQUFBQUFBQUlBQUFBQUFBQUF6
VFlBQUFBQUFBQUVBUUFBQXdBdVluTnpBQUFBQUFBQUFBQUZBUUFBQXdFRUFBQUFBQUFBQUFBQQpB
QUFBQUFJQUFBQUFBQUFBRGpjQUFBQUFBQUFGQVFBQUF3QXVkR1Y0ZEFBQUFBQUFBQUFHQVFBQUF3
Rm9BQUFBQ2dBQUFIVUljd2dBCkFBRUFBQUF1WkdWaWRXY2tVd0FBQUFBSEFRQUFBd0dBQVFBQUR3
QUFBQUFBQUFBR0FRVUFBQUFBQUFBQVNUY0FBQUFBQUFBR0FTQUEKQXdBdVluTnpBQUFBQUFBQUFB
QUlBUUFBQXdFRUFBQUFBQUFBQUFBQUFBQUFBQUlBQUFBQUFBQUFmemNBQUFBQUFBQUlBUUFBQXdB
dQpkR1Y0ZEFBQUFBQUFBQUFKQVFBQUF3RWtBQUFBQlFBQUFCNjk2ZVlBQUFFQUFBQXVaR1ZpZFdj
a1V3QUFBQUFLQVFBQUF3SGNBQUFBCkJ3QUFBQUFBQUFBSkFRVUFBQUFBQUFBQXh6Y0FBQUFBQUFB
SkFTQUFBd0F1WW5OekFBQUFBQUFBQUFBTEFRQUFBd0VFQUFBQUFBQUEKQUFBQUFBQUFBQUlBQUFB
QUFBQUE5emNBQUFBQUFBQUxBUUFBQXdBdVluTnpBQUFBQUFBQUFBQU1BUUFBQXdFRUFBQUFBQUFB
QUFBQQpBQUFBQUFJQUFBQUFBQUFBT1RnQUFBQUFBQUFNQVFBQUF3QXVkR1Y0ZEFBQUFBQUFBQUFO
QVFBQUF3Rm9BQUFBQ2dBQUFMTXVZaE1BCkFBRUFBQUF1WkdWaWRXY2tVd0FBQUFBT0FRQUFBd0dB
QVFBQUR3QUFBQUFBQUFBTkFRVUFBQUFBQUFBQWRUZ0FBQUFBQUFBTkFTQUEKQXdBdVluTnpBQUFB
QUFBQUFBQVBBUUFBQXdFRUFBQUFBQUFBQUFBQUFBQUFBQUlBQUFBQUFBQUFxamdBQUFBQUFBQVBB
UUFBQXdBdQpkR1Y0ZEFBQUFBQUFBQUFRQVFBQUF3RWtBQUFBQlFBQUFCNjk2ZVlBQUFFQUFBQXVa
R1ZpZFdja1V3QUFBQUFSQVFBQUF3SGNBQUFBCkJ3QUFBQUFBQUFBUUFRVUFBQUFBQUFBQThUZ0FB
QUFBQUFBUUFTQUFBd0F1WW5OekFBQUFBQUFBQUFBU0FRQUFBd0VFQUFBQUFBQUEKQUFBQUFBQUFB
QUlBQUFBQUFBQUFJRGtBQUFBQUFBQVNBUUFBQXdBdVluTnpBQUFBQUFBQUFBQVRBUUFBQXdFRUFB
QUFBQUFBQUFBQQpBQUFBQUFJQUFBQUFBQUFBWVRrQUFBQUFBQUFUQVFBQUF3QXVkR1Y0ZEFBQUFB
QUFBQUFVQVFBQUF3Rm9BQUFBQ2dBQUFCWEhua29BCkFBRUFBQUF1WkdWaWRXY2tVd0FBQUFBVkFR
QUFBd0Y4QVFBQUR3QUFBQUFBQUFBVUFRVUFBQUFBQUFBQW5Ea0FBQUFBQUFBVUFTQUEKQXdBdVlu
TnpBQUFBQUFBQUFBQVdBUUFBQXdFRUFBQUFBQUFBQUFBQUFBQUFBQUlBQUFBQUFBQUF6amtBQUFB
QUFBQVdBUUFBQXdBdQpkR1Y0ZEFBQUFBQUFBQUFYQVFBQUF3RWtBQUFBQlFBQUFCNjk2ZVlBQUFF
QUFBQXVaR1ZpZFdja1V3QUFBQUFZQVFBQUF3SFlBQUFBCkJ3QUFBQUFBQUFBWEFRVUFBQUFBQUFB
QUVqb0FBQUFBQUFBWEFTQUFBd0F1WW5OekFBQUFBQUFBQUFBWkFRQUFBd0VFQUFBQUFBQUEKQUFB
QUFBQUFBQUlBQUFBQUFBQUFQam9BQUFBQUFBQVpBUUFBQXdBdVluTnpBQUFBQUFBQUFBQWFBUUFB
QXdFRUFBQUFBQUFBQUFBQQpBQUFBQUFJQUFBQUFBQUFBZkRvQUFBQUFBQUFhQVFBQUF3QXVkR1Y0
ZEFBQUFBQUFBQUFiQVFBQUF3Rm9BQUFBQ2dBQUFKeldnQmNBCkFBRUFBQUF1WkdWaWRXY2tVd0FB
QUFBY0FRQUFBd0Y4QVFBQUR3QUFBQUFBQUFBYkFRVUFBQUFBQUFBQXREb0FBQUFBQUFBYkFTQUEK
QXdBdVluTnpBQUFBQUFBQUFBQWRBUUFBQXdFRUFBQUFBQUFBQUFBQUFBQUFBQUlBQUFBQUFBQUE1
VG9BQUFBQUFBQWRBUUFBQXdBdQpkR1Y0ZEFBQUFBQUFBQUFlQVFBQUF3RWtBQUFBQlFBQUFCNjk2
ZVlBQUFFQUFBQXVaR1ZpZFdja1V3QUFBQUFmQVFBQUF3SFlBQUFBCkJ3QUFBQUFBQUFBZUFRVUFB
QUFBQUFBQUtEc0FBQUFBQUFBZUFTQUFBd0F1WW5OekFBQUFBQUFBQUFBZ0FRQUFBd0VFQUFBQUFB
QUEKQUFBQUFBQUFBQUlBQUFBQUFBQUFVenNBQUFBQUFBQWdBUUFBQXdBdVluTnpBQUFBQUFBQUFB
QWhBUUFBQXdFRUFBQUFBQUFBQUFBQQpBQUFBQUFJQUFBQUFBQUFBa0RzQUFBQUFBQUFoQVFBQUF3
QXVkR1Y0ZEFBQUFBQUFBQUFpQVFBQUF3Rm9BQUFBQ2dBQUFDeVdDODBBCkFBRUFBQUF1WkdWaWRX
Y2tVd0FBQUFBakFRQUFBd0dBQVFBQUR3QUFBQUFBQUFBaUFRVUFBQUFBQUFBQXh6c0FBQUFBQUFB
aUFTQUEKQXdBdVluTnpBQUFBQUFBQUFBQWtBUUFBQXdFRUFBQUFBQUFBQUFBQUFBQUFBQUlBQUFB
QUFBQUEvVHNBQUFBQUFBQWtBUUFBQXdBdQpkR1Y0ZEFBQUFBQUFBQUFsQVFBQUF3RWtBQUFBQlFB
QUFCNjk2ZVlBQUFFQUFBQXVaR1ZpZFdja1V3QUFBQUFtQVFBQUF3SGNBQUFBCkJ3QUFBQUFBQUFB
bEFRVUFBQUFBQUFBQVJUd0FBQUFBQUFBbEFTQUFBd0F1WW5OekFBQUFBQUFBQUFBbkFRQUFBd0VF
QUFBQUFBQUEKQUFBQUFBQUFBQUlBQUFBQUFBQUFkVHdBQUFBQUFBQW5BUUFBQXdBdVluTnpBQUFB
QUFBQUFBQW9BUUFBQXdFRUFBQUFBQUFBQUFBQQpBQUFBQUFJQUFBQUFBQUFBdHp3QUFBQUFBQUFv
QVFBQUF3QXVkR1Y0ZEFBQUFBQUFBQUFwQVFBQUF3Rm9BQUFBQ2dBQUFBdm1FVHdBCkFBRUFBQUF1
WkdWaWRXY2tVd0FBQUFBcUFRQUFBd0dBQVFBQUR3QUFBQUFBQUFBcEFRVUFBQUFBQUFBQTh6d0FB
QUFBQUFBcEFTQUEKQXdBdVluTnpBQUFBQUFBQUFBQXJBUUFBQXdFRUFBQUFBQUFBQUFBQUFBQUFB
QUlBQUFBQUFBQUFLRDBBQUFBQUFBQXJBUUFBQXdBdQpkR1Y0ZEFBQUFBQUFBQUFzQVFBQUF3RWtB
QUFBQlFBQUFCNjk2ZVlBQUFFQUFBQXVaR1ZpZFdja1V3QUFBQUF0QVFBQUF3SGNBQUFBCkJ3QUFB
QUFBQUFBc0FRVUFBQUFBQUFBQWJ6MEFBQUFBQUFBc0FTQUFBd0F1WW5OekFBQUFBQUFBQUFBdUFR
QUFBd0VFQUFBQUFBQUEKQUFBQUFBQUFBQUlBQUFBQUFBQUFuajBBQUFBQUFBQXVBUUFBQXdBdVlu
TnpBQUFBQUFBQUFBQXZBUUFBQXdFRUFBQUFBQUFBQUFBQQpBQUFBQUFJQUFBQUFBQUFBM3owQUFB
QUFBQUF2QVFBQUF3QXVkR1Y0ZEFBQUFBQUFBQUF3QVFBQUF3Rm9BQUFBQ2dBQUFLcjlQeTRBCkFB
RUFBQUF1WkdWaWRXY2tVd0FBQUFBeEFRQUFBd0Y4QVFBQUR3QUFBQUFBQUFBd0FRVUFBQUFBQUFB
QUdqNEFBQUFBQUFBd0FTQUEKQXdBdVluTnpBQUFBQUFBQUFBQXlBUUFBQXdFRUFBQUFBQUFBQUFB
QUFBQUFBQUlBQUFBQUFBQUFTajRBQUFBQUFBQXlBUUFBQXdBdQpkR1Y0ZEFBQUFBQUFBQUF6QVFB
QUF3RWtBQUFBQlFBQUFCNjk2ZVlBQUFFQUFBQXVaR1ZpZFdja1V3QUFBQUEwQVFBQUF3SFVBQUFB
CkJ3QUFBQUFBQUFBekFRVUFBQUFBQUFBQWpENEFBQUFBQUFBekFTQUFBd0F1WW5OekFBQUFBQUFB
QUFBMUFRQUFBd0VFQUFBQUFBQUEKQUFBQUFBQUFBQUlBQUFBQUFBQUF0ajRBQUFBQUFBQTFBUUFB
QXdBdVluTnpBQUFBQUFBQUFBQTJBUUFBQXdFRUFBQUFBQUFBQUFBQQpBQUFBQUFJQUFBQUFBQUFB
OGo0QUFBQUFBQUEyQVFBQUF3QXVkR1Y0ZEFBQUFBQUFBQUEzQVFBQUF3RmtBUUFBTmdBQUFNWWI2
YVFBCkFBRUFBQUF1WkdWaWRXY2tVd0FBQUFBNEFRQUFBd0gwQVFBQUZ3QUFBQUFBQUFBM0FRVUFB
QUFBQUFBQUtEOEFBQUFBQUFBM0FTQUEKQWdBa1RFNHhBQUFBQUN3QkFBQTNBUUFBQmdBa1RFNDFB
QUFBQUFvQkFBQTNBUUFBQmdBa1RFNDJBQUFBQU9jQUFBQTNBUUFBQmdBawpURTQzQUFBQUFNUUFB
QUEzQVFBQUJnQWtURTQ0QUFBQUFLRUFBQUEzQVFBQUJnQWtURTQ1QUFBQUFINEFBQUEzQVFBQUJn
QWtURTR4Ck1BQUFBRnNBQUFBM0FRQUFCZ0FrVEU0eE1RQUFBRGdBQUFBM0FRQUFCZ0FrVEU0eE1n
QUFBQlVBQUFBM0FRQUFCZ0FrVEU0MU1RQUEKQURBQkFBQTNBUUFBQXdBdWRHVjRkQUFBQUFBQUFB
QTVBUUFBQXdIeUFBQUFDZ0FBQUtyVFM3VUFBQUVBQUFBdVpHVmlkV2NrVXdBQQpBQUE2QVFBQUF3
RlVBZ0FBRndBQUFBQUFBQUE1QVFVQUFBQUFBQUFBVXo4QUFBQUFBQUE1QVNBQUFnQUFBQUFBcFQ4
QUFBQUFBQUFBCkFBQUFBZ0F1ZEdWNGRBQUFBQUFBQUFBN0FRQUFBd0ZFQUFBQUJBQUFBQWVHclM4
QUFBRUFBQUF1WkdWaWRXY2tVd0FBQUFBOEFRQUEKQXdFNEFRQUFCd0FBQUFBQUFBQTdBUVVBQUFB
QUFBQUF0VDhBQUFBQUFBQTdBU0FBQWdBdWRHVjRkQUFBQUFBQUFBQTlBUUFBQXdGKwpBUUFBRlFB
QUFKSHRPMUlBQUFFQUFBQXVaR1ZpZFdja1V3QUFBQUErQVFBQUF3RzRBZ0FBSVFBQUFBQUFBQUE5
QVFVQUFBQUFBQUFBCjdqOEFBQUFBQUFBOUFTQUFBZ0FBQUFBQVFrQUFBQUFBQUFBQUFBQUFBZ0F1
WW5OekFBQUFBQUFBQUFBL0FRQUFBd0VFQUFBQUFBQUEKQUFBQUFBQUFBQUlBQUFBQUFBQUFhVUFB
QUFBQUFBQS9BUUFBQXdBQUFBQUEya0FBQUFBQUFBQUFBQUFBQWdBdWNtUmhkR0VBQUFBQQpBQUJB
QVFBQUF3RUVBQUFBQUFBQUFGMUVQNEVBQUFJQUFBQUFBQUFBK1VBQUFBQUFBQUJBQVFBQUFnQXVZ
bk56QUFBQUFBQUFBQUJCCkFRQUFBd0VFQUFBQUFBQUFBQUFBQUFBQUFBSUFBQUFBQUFBQUNVRUFB
QUFBQUFCQkFRQUFBd0F1ZEdWNGRBQUFBQUFBQUFCQ0FRQUEKQXdFUUFBQUFBUUFBQUpISzlpOEFB
QUlBQUFBdVpHVmlkV2NrVXdBQUFBQkRBUUFBQXdITUFBQUFBd0FBQUFBQUFBQkNBUVVBQUFBQQpB
QUFBYWtFQUFBQUFBQUJDQVNBQUFnQXVjbVJoZEdFQUFBQUFBQUJFQVFBQUF3RWtBQUFBQ1FBQUFB
QUFBQUFBQUFJQUFBQUFBQUFBCmtVRUFBQUFBQUFCRUFRQUFBZ0FBQUFBQXRrRUFBQUFBQUFBQUFD
QUFBZ0FBQUFBQTRVRUFBQUFBQUFBQUFDQUFhUUgxQXdBQUFnQUEKQUFBQUFBQUFBQUFBQUFBdWRH
VjRkQUFBQUFBQUFBQkZBUUFBQXdFREFBQUFBQUFBQUZ0Y0tONEFBQUlBQUFBdVpHVmlkV2NrVXdB
QQpBQUJHQVFBQUF3SHNBQUFBQlFBQUFBQUFBQUJGQVFVQUFBQUFBQUFBREVJQUFBQUFBQUJGQVNB
QUFnQXVkR1Y0ZEFBQUFBQUFBQUJICkFRQUFBd0VIQUFBQUFRQUFBS3JoaThBQUFBSUFBQUF1WkdW
aWRXY2tVd0FBQUFCSUFRQUFBd0hNQUFBQUF3QUFBQUFBQUFCSEFRVUEKQUFBQUFBQUFSMElBQUFB
QUFBQkhBU0FBQWdBdWRHVjRkQUFBQUFBQUFBQkpBUUFBQXdFZkFBQUFBZ0FBQUx0STg1b0FBQUlB
QUFBdQpaR1ZpZFdja1V3QUFBQUJLQVFBQUF3SHNBQUFBQXdBQUFBQUFBQUJKQVFVQUFBQUFBQUFB
YmtJQUFBQUFBQUJKQVNBQUFnQXVkR1Y0CmRBQUFBQUFBQUFCTEFRQUFBd0VmQUFBQUFnQUFBTHRJ
ODVvQUFBSUFBQUF1WkdWaWRXY2tVd0FBQUFCTUFRQUFBd0h3QUFBQUF3QUEKQUFBQUFBQkxBUVVB
QUFBQUFBQUFtVUlBQUFBQUFBQkxBU0FBQWdBdWRHVjRkQUFBQUFBQUFBQk5BUUFBQXdFZkFBQUFB
Z0FBQUx0SQo4NW9BQUFJQUFBQXVaR1ZpZFdja1V3QUFBQUJPQVFBQUF3SDhBQUFBQXdBQUFBQUFB
QUJOQVFVQUFBQUFBQUFBeDBJQUFBQUFBQUJOCkFTQUFBZ0F1ZEdWNGRBQUFBQUFBQUFCUEFRQUFB
d0VmQUFBQUFnQUFBTHRJODVvQUFBSUFBQUF1WkdWaWRXY2tVd0FBQUFCUUFRQUEKQXdINEFBQUFB
d0FBQUFBQUFBQlBBUVVBQUFBQUFBQUFBVU1BQUFBQUFBQlBBU0FBQWdBdWRHVjRkQUFBQUFBQUFB
QlJBUUFBQXdFZgpBQUFBQWdBQUFMdEk4NW9BQUFJQUFBQXVaR1ZpZFdja1V3QUFBQUJTQVFBQUF3
SG9BQUFBQXdBQUFBQUFBQUJSQVFVQUFBQUFBQUFBCk9FTUFBQUFBQUFCUkFTQUFBZ0F1ZEdWNGRB
QUFBQUFBQUFCVEFRQUFBd0VmQUFBQUFnQUFBTHRJODVvQUFBSUFBQUF1WkdWaWRXY2sKVXdBQUFB
QlVBUUFBQXdIMEFBQUFBd0FBQUFBQUFBQlRBUVVBQUFBQUFBQUFZVU1BQUFBQUFBQlRBU0FBQWdB
dWRHVjRkQUFBQUFBQQpBQUJWQVFBQUF3RUpBQUFBQVFBQUFEVHIyMWtBQUFJQUFBQXVaR1ZpZFdj
a1V3QUFBQUJXQVFBQUF3SE1BQUFBQXdBQUFBQUFBQUJWCkFRVUFBQUFBQUFBQWxrTUFBQUFBQUFC
VkFTQUFBZ0F1Y21SaGRHRUFBQUFBQUFCWEFRQUFBd0VZQUFBQUJnQUFBQUFBQUFBQUFBSUEKQUFB
QUFBQUF2VU1BQUFBQUFBQlhBUUFBQWdBQUFBQUE0a01BQUFBQUFBQUFBQ0FBQWdBQUFBQUFEVVFB
QUFBQUFBQUFBQ0FBYVFFbwpCQUFBQWdBQUFBQUFBQUFBQUFBQUFBQXVkR1Y0ZEFBQUFBQUFBQUJZ
QVFBQUF3RUhBQUFBQVFBQUFLcmhpOEFBQUFJQUFBQXVaR1ZpCmRXY2tVd0FBQUFCWkFRQUFBd0hN
QUFBQUF3QUFBQUFBQUFCWUFRVUFBQUFBQUFBQU9FUUFBQUFBQUFCWUFTQUFBZ0F1ZEdWNGRBQUEK
QUFBQUFBQmFBUUFBQXdFZkFBQUFBZ0FBQUx0STg1b0FBQUlBQUFBdVpHVmlkV2NrVXdBQUFBQmJB
UUFBQXdIc0FBQUFBd0FBQUFBQQpBQUJhQVFVQUFBQUFBQUFBWDBRQUFBQUFBQUJhQVNBQUFnQXVk
R1Y0ZEFBQUFBQUFBQUJjQVFBQUF3RWhBZ0FBT3dBQUFISk5hQlVBCkFBRUFBQUF1WkdWaWRXY2tV
d0FBQUFCZEFRQUFBd0dvQXdBQUpRQUFBQUFBQUFCY0FRVUFBQUFBQUFBQWlrUUFBQUFBQUFCY0FT
QUEKQWdBa1RFNDJOUUFBQU9RQkFBQmNBUUFBQmdBdVluTnpBQUFBQUFBQUFBQmVBUUFBQXdFRUFB
QUFBQUFBQUFBQUFBQUFBQUlBQUFBQQpBQUFBeTBRQUFBQUFBQUJlQVFBQUF3QWtURTQwQUFBQUFL
UUJBQUJjQVFBQUJnQXVZbk56QUFBQUFBQUFBQUJmQVFBQUF3RUVBQUFBCkFBQUFBQUFBQUFBQUFB
SUFBQUFBQUFBQVNrVUFBQUFBQUFCZkFRQUFBd0FrVEU0MkFBQUFBR2tCQUFCY0FRQUFCZ0F1WW5O
ekFBQUEKQUFBQUFBQmdBUUFBQXdFRUFBQUFBQUFBQUFBQUFBQUFBQUlBQUFBQUFBQUF0MFVBQUFB
QUFBQmdBUUFBQXdBa1RFNDRBQUFBQUNzQgpBQUJjQVFBQUJnQXVZbk56QUFBQUFBQUFBQUJoQVFB
QUF3RUVBQUFBQUFBQUFBQUFBQUFBQUFJQUFBQUFBQUFBT1VZQUFBQUFBQUJoCkFRQUFBd0FrVEU0
eE1BQUFBT29BQUFCY0FRQUFCZ0F1WW5OekFBQUFBQUFBQUFCaUFRQUFBd0VFQUFBQUFBQUFBQUFB
QUFBQUFBSUEKQUFBQUFBQUF4MFlBQUFBQUFBQmlBUUFBQXdBa1RFNHhNZ0FBQUtrQUFBQmNBUUFB
QmdBdVluTnpBQUFBQUFBQUFBQmpBUUFBQXdFRQpBQUFBQUFBQUFBQUFBQUFBQUFJQUFBQUFBQUFB
UFVjQUFBQUFBQUJqQVFBQUF3QWtURTR4TkFBQUFHVUFBQUJjQVFBQUJnQXVZbk56CkFBQUFBQUFB
QUFCa0FRQUFBd0VFQUFBQUFBQUFBQUFBQUFBQUFBSUFBQUFBQUFBQXRFY0FBQUFBQUFCa0FRQUFB
d0FBQUFBQUtFZ0EKQUFBQUFBQUFBQ0FBQWdBdVluTnpBQUFBQUFBQUFBQmxBUUFBQXdFRUFBQUFB
QUFBQUFBQUFBQUFBQUlBQUFBQUFBQUFOVWdBQUFBQQpBQUJsQVFBQUF3QWtURTR4TmdBQUFDRUFB
QUJjQVFBQUJnQWtURTQzTlFBQUFPd0JBQUJjQVFBQUF3QWtURTQyTndBQUFBd0NBQUJjCkFRQUFB
d0F1ZEdWNGRBQUFBQUFBQUFCbUFRQUFBd0U3QUFBQUJ3QUFBUDd2Q0F3QUFBRUFBQUF1WkdWaWRX
Y2tVd0FBQUFCbkFRQUEKQXdFa0FRQUFCd0FBQUFBQUFBQm1BUVVBQUFBQUFBQUFnMGdBQUFBQUFB
Qm1BU0FBQWdBdVluTnpBQUFBQUFBQUFBQm9BUUFBQXdFRQpBQUFBQUFBQUFBQUFBQUFBQUFJQUFB
QUFBQUFBd2tnQUFBQUFBQUJvQVFBQUF3QXVZbk56QUFBQUFBQUFBQUJwQVFBQUF3RUVBQUFBCkFB
QUFBQUFBQUFBQUFBSUFBQUFBQUFBQU5Va0FBQUFBQUFCcEFRQUFBd0F1WkdWaWRXY2tVd0FBQUFC
cUFRQUFBd0VnQUFBQUFnQUEKQUFBQUFBQnBBUVVBQUFBdVpHVmlkV2NrVXdBQUFBQnJBUUFBQXdF
Z0FBQUFBZ0FBQUFBQUFBQUZBUVVBQUFBdVpHVmlkV2NrVXdBQQpBQUJzQVFBQUF3RWdBQUFBQWdB
QUFBQUFBQUFNQVFVQUFBQXVaR1ZpZFdja1V3QUFBQUJ0QVFBQUF3RWdBQUFBQWdBQUFBQUFBQUFU
CkFRVUFBQUF1WkdWaWRXY2tVd0FBQUFCdUFRQUFBd0VnQUFBQUFnQUFBQUFBQUFBYUFRVUFBQUF1
WkdWaWRXY2tVd0FBQUFCdkFRQUEKQXdFZ0FBQUFBZ0FBQUFBQUFBQWhBUVVBQUFBdVpHVmlkV2Nr
VXdBQUFBQndBUUFBQXdFZ0FBQUFBZ0FBQUFBQUFBQW9BUVVBQUFBdQpaR1ZpZFdja1V3QUFBQUJ4
QVFBQUF3RWdBQUFBQWdBQUFBQUFBQUF2QVFVQUFBQXVaR1ZpZFdja1V3QUFBQUJ5QVFBQUF3RWdB
QUFBCkFnQUFBQUFBQUFBMkFRVUFBQUF1WkdWaWRXY2tVd0FBQUFCekFRQUFBd0VnQUFBQUFnQUFB
QUFBQUFCYkFBVUFBQUF1WkdWaWRXY2sKVXdBQUFBQjBBUUFBQXdFZ0FBQUFBZ0FBQUFBQUFBQmpB
QVVBQUFBdVpHVmlkV2NrVXdBQUFBQjFBUUFBQXdFZ0FBQUFBZ0FBQUFBQQpBQUI3QUFVQUFBQXVa
R1ZpZFdja1V3QUFBQUIyQVFBQUF3RWdBQUFBQWdBQUFBQUFBQUNFQUFVQUFBQXVaR1ZpZFdja1V3
QUFBQUIzCkFRQUFBd0VnQUFBQUFnQUFBQUFBQUFDSkFBVUFBQUF1WkdWaWRXY2tVd0FBQUFCNEFR
QUFBd0VnQUFBQUFnQUFBQUFBQUFCQkFRVUEKQUFBdVpHVmlkV2NrVXdBQUFBQjVBUUFBQXdFZ0FB
QUFBZ0FBQUFBQUFBQ1hBQVVBQUFBdVpHVmlkV2NrVXdBQUFBQjZBUUFBQXdFZwpBQUFBQWdBQUFB
QUFBQUNsQUFVQUFBQXVaR1ZpZFdja1V3QUFBQUI3QVFBQUF3RWdBQUFBQWdBQUFBQUFBQUN2QUFV
QUFBQXVaR1ZpCmRXY2tVd0FBQUFCOEFRQUFBd0VnQUFBQUFnQUFBQUFBQUFDNEFBVUFBQUF1WkdW
aWRXY2tVd0FBQUFCOUFRQUFBd0VnQUFBQUFnQUEKQUFBQUFBQy9BQVVBQUFBdVpHVmlkV2NrVXdB
QUFBQitBUUFBQXdFZ0FBQUFBZ0FBQUFBQUFBRE9BQVVBQUFBdVpHVmlkV2NrVXdBQQpBQUIvQVFB
QUF3RWdBQUFBQWdBQUFBQUFBQURYQUFVQUFBQXVaR1ZpZFdja1V3QUFBQUNBQVFBQUF3RWdBQUFB
QWdBQUFBQUFBQUJsCkFRVUFBQUF1WkdWaWRXY2tWQUFBQUFDQkFRQUFBd0ZrQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUNCU1FBQVAySmhZMnRuY205MWJtUlMKWVdScGRYTkFUV1ZrYVdGVGFHRnlaV1JW
U1ZadmJIVnRaVk5zYVdSbGNrSmhZMnRuY205MWJtUkZiR1Z0Wlc1MFFFQXdTVUlBUDJKaApZMnRu
Y205MWJtUlRkSEp2YTJWVWFHbGphMjVsYzNOQVRXVmthV0ZUYUdGeVpXUlZTVlp2YkhWdFpWTnNh
V1JsY2tKaFkydG5jbTkxCmJtUkZiR1Z0Wlc1MFFFQXdTVUlBUDNSeVlXTnJTR1ZwWjJoMFFFMWxa
R2xoVTJoaGNtVmtWVWxVYVcxbGJHbHVaVk5zYVdSbGNrQkEKTUVsQ0FEOTBjbUZqYTA5bVpuTmxk
RUJOWldScFlWTm9ZWEpsWkZWSlZHbHRaV3hwYm1WVGJHbGtaWEpBUURCSlFnQS9kR2gxYldKUwpZ
V1JwZFhOQVRXVmthV0ZUYUdGeVpXUlZTVlJwYldWc2FXNWxVMnhwWkdWeVZHaDFiV0pGYkdWdFpX
NTBRRUF3U1VJQVAzUnlZV05yClVtRmthWFZ6UUUxbFpHbGhVMmhoY21Wa1ZVbFdiMngxYldWVGJH
bGtaWEpBUURCSlFnQS9kR2gxYldKU1lXUnBkWE5BVFdWa2FXRlQKYUdGeVpXUlZTVlp2YkhWdFpW
TnNhV1JsY2xSb2RXMWlSV3hsYldWdWRFQkFNRWxDQUY5TlpXUnBZVTVsZDFWSlFYVmthVzlXYjJ4
MQpiV1ZJYVdkb1NXMWhaMlZFWVhSaFgzQmtaZ0JmVFdWa2FXRk9aWGRWU1VGMVpHbHZWbTlzZFcx
bFQyWm1TVzFoWjJWRVlYUmhYM0JrClpnQmZUV1ZrYVdGT1pYZFZTVU5zYjNObFpFTmhjSFJwYjI1
elNXMWhaMlZFWVhSaFgzQmtaZ0JmVFdWa2FXRk9aWGRWU1VWdWRHVnkKUm5Wc2JITmpjbVZsYmts
dFlXZGxSR0YwWVY5d1pHWUFYMDFsWkdsaFRtVjNWVWxRWVhWelpVSjFkSFJ2YmtsdFlXZGxSR0Yw
WVY5dwpaR1lBWDAxbFpHbGhUbVYzVlVsUWJHRjVRblYwZEc5dVNXMWhaMlZFWVhSaFgzQmtaZ0Jm
VFdWa2FXRk9aWGRWU1ZKbGRISmxZWFF6Ck1FbHRZV2RsUkdGMFlWOXdaR1lBWDAxbFpHbGhUbVYz
VlVsVFpXVnJWRzlTWldGc2RHbHRaVWx0WVdkbFJHRjBZVjl3WkdZQVgzQnkKWlhOelpXUlRhR0Zr
YjNkQ2JIVnlBRDlEUjFCdmFXNTBUV0ZyWlVCQVdVRS9RVlZEUjFCdmFXNTBRRUJOVFVCYUFGOWZa
bXgwZFhObApaQUEvUTBkVGFYcGxUV0ZyWlVCQVdVRS9RVlZEUjFOcGVtVkFRRTFOUUZvQVAwTkhV
bVZqZEUxaGEyVkFRRmxCUDBGVlEwZFNaV04wClFFQk5UVTFOUUZvQVAxOWZRMGRRYjJsdWRFRndj
R3g1UVdabWFXNWxWSEpoYm5ObWIzSnRRRUJaUVQ5QlZVTkhVRzlwYm5SQVFGVXgKUUZWRFIwRm1a
bWx1WlZSeVlXNXpabTl5YlVCQVFGb0FQejh4VFdWa2FXRlZTVVZzWlcxbGJuUkFRRlZCUlVCWVdn
QS9QMTgzVFdWawphV0ZWU1VWc1pXMWxiblJBUURaQ1FBQS9QMTlIVFdWa2FXRlZTVVZzWlcxbGJu
UkFRRlZCUlZCQldFbEFXZ0EvUDE5RlRXVmthV0ZWClNVVnNaVzFsYm5SQVFGVkJSVkJCV0VsQVdn
QmZYM0IxY21WallXeHNBRDl6WlhSVmNFTnZiblJsZUhSR2IzSlFZV2x1ZEdsdVowQk4KWldScFlW
VkpSV3hsYldWdWRFQkFUVUpGV0ZCQlZVTkhRMjl1ZEdWNGRFQkFWVU5IVW1WamRFQkFRRm9BUDNK
bGMzUnZjbVZEYjI1MApaWGgwUVdaMFpYSlFZV2x1ZEdsdVowQk5aV1JwWVZWSlJXeGxiV1Z1ZEVC
QVRVSkZXRkJCVlVOSFEyOXVkR1Y0ZEVCQVFGb0FQMmhwCmRGUmxjM1JBVFdWa2FXRlZTVVZzWlcx
bGJuUkFRRlZDUlY5T1ZVTkhVbVZqZEVCQVZVTkhVRzlwYm5SQVFFQmFBRjlmYVcxd1gxOUQKUjFK
bFkzUkRiMjUwWVdsdWMxQnZhVzUwQUQ5dVlYUjFjbUZzVTJsNlpVQk5aV1JwWVZWSlJXeGxiV1Z1
ZEVCQVZVSkZQMEZWUTBkVAphWHBsUUVCWVdnQmZYMmx0Y0Y5ZlEwZFRhWHBsV21WeWJ3QS9jMlYw
VUdGeWRFbEVRRTFsWkdsaFZVbEZiR1Z0Wlc1MFFFQlJRVVZZClNFQmFBRDl3WVhKMFNVUkFUV1Zr
YVdGVlNVVnNaVzFsYm5SQVFGRkNSVWhZV2dBL2FYTlFjbVZ6YzJWa1FFMWxaR2xoVlVsRmJHVnQK
Wlc1MFFFQlJRa1ZmVGxoYUFEOXBjMFp2WTNWelpXUkFUV1ZrYVdGVlNVVnNaVzFsYm5SQVFGRkNS
VjlPV0ZvQVAybHpSVzVoWW14bApaRUJOWldScFlWVkpSV3hsYldWdWRFQkFVVUpGWDA1WVdnQS9Q
MTlIVFdWa2FXRlZTVVZzWlcxbGJuUkFRRlZCUlZCQldFbEFXZ0EvClB6TkFXVUZZVUVGWVFGb0FQ
M1JwYldWTWIyRmtaV1JBVFdWa2FXRlZTVlJwYldWc2FXNWxVMnhwWkdWeVFFQlJRa1ZPV0ZvQVAy
UjEKY21GMGFXOXVRRTFsWkdsaFZVbFVhVzFsYkdsdVpWTnNhV1JsY2tCQVVVSkZUbGhhQUQ5bWNt
RmpkR2x2Ymt4dllXUmxaRUJOWldScApZVlZKVkdsdFpXeHBibVZUYkdsa1pYSkFRRkZDUlU1WVdn
QmZYM0psWVd4QU1EQXdNREF3TURBd01EQXdNREF3TUFBL1ptbHNiRTF2ClpHVkFUV1ZrYVdGVGFH
RnlaV1JWU1VsdFlXZGxSV3hsYldWdWRFQkFVVUpGUDBGWE5FMWxaR2xoVlVsSmJXRm5aVVpwYkd4
TmIyUmwKUURGQVdGb0FQejh3VFdWa2FXRlZTVVZzWlcxbGJuUkFRRkZCUlVCWVdnQS9QekZOWldS
cFlWTm9ZWEpsWkZWSlNXMWhaMlZGYkdWdApaVzUwUUVCVlFVVkFXRm9BUDNKaFpHbDFjMEJOWldS
cFlWTm9ZWEpsWkZWSlZtOXNkVzFsVTJ4cFpHVnlRbUZqYTJkeWIzVnVaRVZzClpXMWxiblJBUUZO
QlRWaGFBRjlmY21WaGJFQTBNVE13TURBd01BQS9jM1J5YjJ0bFZHaHBZMnR1WlhOelFFMWxaR2xo
VTJoaGNtVmsKVlVsV2IyeDFiV1ZUYkdsa1pYSkNZV05yWjNKdmRXNWtSV3hsYldWdWRFQkFVMEZO
V0ZvQVgxOXlaV0ZzUURObU9EQXdNREF3QUQ5bwpaV2xuYUhSQVRXVmthV0ZUYUdGeVpXUlZTVlJw
YldWc2FXNWxVMnhwWkdWeVFFQlRRVTFZV2dCZlgzSmxZV3hBTkRFeU1EQXdNREFBClAyOW1abk5s
ZEVCTlpXUnBZVk5vWVhKbFpGVkpWR2x0Wld4cGJtVlRiR2xrWlhKQVFGTkJUVmhhQUY5ZmNtVmhi
RUEwTURBd01EQXcKTUFBL2NtRmthWFZ6UUUxbFpHbGhVMmhoY21Wa1ZVbFVhVzFsYkdsdVpWTnNh
V1JsY2xSb2RXMWlSV3hsYldWdWRFQkFVMEZOV0ZvQQpYMTl5WldGc1FEUXdPREF3TURBd0FEOXlZ
V1JwZFhOQVRXVmthV0ZUYUdGeVpXUlZTVlp2YkhWdFpWTnNhV1JsY2tCQVUwRk5XRm9BClgxOXla
V0ZzUURRd1lUQXdNREF3QUQ5eVlXUnBkWE5BVFdWa2FXRlRhR0Z5WldSVlNWWnZiSFZ0WlZOc2FX
UmxjbFJvZFcxaVJXeGwKYldWdWRFQkFVMEZOV0ZvQVAyWmhZbk5BUUZsQlRVMUFXZ0EvWTNKbFlY
UmxRMGRNWVhsbGNrWnliMjFRUkVaRVlYUmhVSEp2ZG1sawpaWEpBUUZsQlVFRlZRMGRNWVhsbGNr
QkFVRUZWUTBkRVlYUmhVSEp2ZG1sa1pYSkFRRUJhQUY5ZmFXMXdYMTlEUjBOdmJuUmxlSFJFCmNt
RjNVRVJHVUdGblpRQmZYMmx0Y0Y5ZlEwZERiMjUwWlhoMFEyOXVZMkYwUTFSTkFGOWZhVzF3WDE5
RFIwRm1abWx1WlZSeVlXNXoKWm05eWJWSnZkR0YwWlFCZlgybHRjRjlmUTBkQlptWnBibVZVY21G
dWMyWnZjbTFOWVd0bFZISmhibk5zWVhScGIyNEFYMTlwYlhCZgpYME5IVEdGNVpYSkhaWFJEYjI1
MFpYaDBBRjlmYVcxd1gxOURSMHhoZVdWeVEzSmxZWFJsVjJsMGFFTnZiblJsZUhRQVgxOXBiWEJm
ClgwTkhVbVZqZEVGd2NHeDVRV1ptYVc1bFZISmhibk5tYjNKdEFGOWZhVzF3WDE5RFIwRm1abWx1
WlZSeVlXNXpabTl5YlUxaGEyVlMKYjNSaGRHbHZiZ0JmWDNKbFlXeEFOREEyTmpnd01EQXdNREF3
TURBd01BQmZYM0psWVd4QU5EQXdPVEl4Wm1JMU5EUTBNbVF4T0FCZgpYMmx0Y0Y5ZlEwZFFSRVpR
WVdkbFIyVjBVbTkwWVhScGIyNUJibWRzWlFCZlgybHRjRjlmUTBkU1pXTjBTVzUwWlhKelpXTjBh
Vzl1CkFGOWZhVzF3WDE5RFIxQkVSbEJoWjJWSFpYUkNiM2hTWldOMEFGOWZhVzF3WDE5RFJsSmxi
R1ZoYzJVQVgxOXBiWEJmWDBOSFVFUkcKUkc5amRXMWxiblJIWlhSUVlXZGxBRjlmYVcxd1gxOURS
MUJFUmtSdlkzVnRaVzUwUTNKbFlYUmxWMmwwYUZCeWIzWnBaR1Z5QUQ5agpjbVZoZEdWRFIweGhl
V1Z5VjJsMGFFTnZiblJsZUhSSmJsSmxZM1JBUUZsQlVFRlZRMGRNWVhsbGNrQkFVRUZWUTBkRGIy
NTBaWGgwClFFQlZRMGRTWldOMFFFQlFRbFZmWDBOR1JHbGpkR2x2Ym1GeWVVQkFRRm9BWDE5cGJY
QmZYME5IUTI5dWRHVjRkRlJ5WVc1emJHRjAKWlVOVVRRQmZYMmx0Y0Y5ZlEwZERiMjUwWlhoMFUy
TmhiR1ZEVkUwQVgxOXBiWEJmWDBOSFRHRjVaWEpIWlhSVGFYcGxBRjlmYVcxdwpYMTlEUjBOdmJu
UmxlSFJEYjI1MlpYSjBVMmw2WlZSdlJHVjJhV05sVTNCaFkyVUFQMlJ5WVhkSmJXRm5aVTl5VEdG
NVpYSkFRRmxCCldGQkJWVU5IUTI5dWRHVjRkRUJBVlVOSFVtVmpkRUJBVUVKWVFGb0FYMTlwYlhC
ZlgwTkhRMjl1ZEdWNGRFUnlZWGRNWVhsbGNrbHUKVW1WamRBQmZYMmx0Y0Y5ZlEwZE1ZWGxsY2tk
bGRGUjVjR1ZKUkFCZlgybHRjRjlmUTBkRGIyNTBaWGgwUkhKaGQwbHRZV2RsQUY5ZgphVzF3WDE5
RFIwbHRZV2RsUjJWMFZIbHdaVWxFQUY5ZmFXMXdYMTlEUmtkbGRGUjVjR1ZKUkFBL2NtVmpkRVp2
Y2xOb1lXUnZkMDl3ClpYSmhkR2x2YmtCQVdVRS9RVlZEUjFKbFkzUkFRRlV4UUZWRFIxTnBlbVZB
UUUxQVdnQS9aSEpoZDFOb1lXUnZkMEJBV1VGWVVFRlYKUTBkRGIyNTBaWGgwUUVCVlEwZFNaV04w
UUVCUVFsaFZRMGRUYVhwbFFFQk5VRUZWUTBkRGIyeHZja0JBUUZvQVgxOXBiWEJmWDBOSApRMjl1
ZEdWNGRGSmxjM1J2Y21WSFUzUmhkR1VBWDE5cGJYQmZYME5IUTI5dWRHVjRkRk5sZEZOb1lXUnZk
MWRwZEdoRGIyeHZjZ0JmClgzSmxZV3hBTURBd01EQXdNREFBWDE5cGJYQmZYME5IUTI5dWRHVjRk
RU5zYVhCVWIxSmxZM1FBWDE5cGJYQmZYME5IVW1WamRFZGwKZEUxcGJsa0FYMTlwYlhCZlgwTkhV
bVZqZEVkbGRFMWhlRmtBWDE5cGJYQmZYME5IUTI5dWRHVjRkRU52Ym5abGNuUlNaV04wVkc5Vgpj
MlZ5VTNCaFkyVUFYMTlwYlhCZlgwTkhVbVZqZEVsdWRHVm5jbUZzQUY5ZmFXMXdYMTlEUjBOdmJu
UmxlSFJEYjI1MlpYSjBVbVZqCmRGUnZSR1YyYVdObFUzQmhZMlVBWDE5cGJYQmZYME5IUTI5dWRH
VjRkRk5oZG1WSFUzUmhkR1VBUDJOeVpXRjBaVWRsYm1WeWFXTkgKY21GNVIzSmhaR2xsYm5SQVFG
bEJVRUZWUTBkSGNtRmthV1Z1ZEVCQVVVSk5NRWxBV2dCZlgybHRjRjlmUTBkSGNtRmthV1Z1ZEVO
eQpaV0YwWlZkcGRHaERiMnh2Y2tOdmJYQnZibVZ1ZEhNQVAyTnZiRzl5VTNCaFkyVkFQekUvUDJO
eVpXRjBaVWRsYm1WeWFXTkhjbUY1ClIzSmhaR2xsYm5SQVFGbEJVRUZWUTBkSGNtRmthV1Z1ZEVC
QVVVSk5NRWxBV2tBMFVFRlZRMGREYjJ4dmNsTndZV05sUUVCQkFGOWYKYVcxd1gxOURSME52Ykc5
eVUzQmhZMlZEY21WaGRHVlhhWFJvVG1GdFpRQmZYMmx0Y0Y5ZmEwTkhRMjlzYjNKVGNHRmpaVWRs
Ym1WeQphV05IY21GNUFEOGtVemxBUHpFL1AyTnlaV0YwWlVkbGJtVnlhV05IY21GNVIzSmhaR2xs
Ym5SQVFGbEJVRUZWUTBkSGNtRmthV1Z1CmRFQkFVVUpOTUVsQVdrQTBTVUVBUDJSeVlYZEpibTVs
Y2xOb1lXUnZkMEJBV1VGWVVFRlZRMGREYjI1MFpYaDBRRUJWUTBkU1pXTjAKUUVCUVFsaFZRMGRU
YVhwbFFFQk5VRUZWUTBkRGIyeHZja0JBUUZvQVgxOXBiWEJmWDBOSFEyOXVkR1Y0ZEVWdVpGUnlZ
VzV6Y0dGeQpaVzVqZVV4aGVXVnlBRjlmYVcxd1gxOURSME52Ykc5eVIyVjBRMjl1YzNSaGJuUkRi
Mnh2Y2dCZlgybHRjRjlmYTBOSFEyOXNiM0pYCmFHbDBaUUJmWDJsdGNGOWZRMGREYjI1MFpYaDBS
bWxzYkZKbFkzUUFYMTlwYlhCZlgwTkhVbVZqZEVsdVptbHVhWFJsQUY5ZmFXMXcKWDE5RFIwTnZi
blJsZUhSVFpYUkdhV3hzUTI5c2IzSlhhWFJvUTI5c2IzSUFYMTlwYlhCZlgwTkhRMjl1ZEdWNGRG
TmxkRUpzWlc1awpUVzlrWlFCZlgybHRjRjlmUTBkRGIyNTBaWGgwUW1WbmFXNVVjbUZ1YzNCaGNt
VnVZM2xNWVhsbGNsZHBkR2hTWldOMEFGOWZhVzF3ClgxOURSMUpsWTNSVmJtbHZiZ0JmWDJsdGNG
OWZRMGRTWldOMFNXNTBaWEp6WldOMGMxSmxZM1FBUDJSeVlYZFBkWFJsY2xOb1lXUnYKZDBCQVdV
RllVRUZWUTBkRGIyNTBaWGgwUUVCVlEwZFNaV04wUUVCUVFsaEFXZ0JmWDNKbFlXeEFZbVk0TURB
d01EQUFQMlJ5YjNCVAphR0ZrYjNkRGIyeHZja0EvTVQ4L1pISmhkMDkxZEdWeVUyaGhaRzkzUUVC
WlFWaFFRVlZEUjBOdmJuUmxlSFJBUUZWRFIxSmxZM1JBClFGQkNXRUJhUURSUVFWVkRSME52Ykc5
eVFFQkJBRjlmYVcxd1gxOURSME52Ykc5eVEzSmxZWFJsUjJWdVpYSnBZMGR5WVhrQVgxOXkKWldG
c1FETm1OR05qWTJOa0FEOGtVekV3UUQ4eFB6OWtjbUYzVDNWMFpYSlRhR0ZrYjNkQVFGbEJXRkJC
VlVOSFEyOXVkR1Y0ZEVCQQpWVU5IVW1WamRFQkFVRUpZUUZwQU5FbEJBRDlrY21GM1JtOWpkWE5T
YVc1blFFQlpRVmhRUVZWRFIwTnZiblJsZUhSQVFGVkRSMUpsClkzUkFRRkJDV0VCYUFGOWZhVzF3
WDE5RFIwTnZiblJsZUhSVFpYUlRkSGxzWlFCZlgybHRjRjlmUTBkVGRIbHNaVU55WldGMFpVWnYK
WTNWelVtbHVad0JmWDNKbFlXeEFNMll3TURBd01EQUFYMTlwYlhCZlgwTkhVbVZqZEZwbGNtOEFQ
M04wZVd4bFFEOHhQejlrY21GMwpSbTlqZFhOU2FXNW5RRUJaUVZoUVFWVkRSME52Ym5SbGVIUkFR
RlZEUjFKbFkzUkFRRkJDV0VCYVFEUlFRVlZEUjFOMGVXeGxRRUJCCkFEOWtjbUYzTTFCaGNuUkNZ
VzV1WlhKSmJsSmxZM1JTWld4aGRHbDJaVlJ2UldSblpVQkFXVUZZVUVGVlEwZERiMjUwWlhoMFFF
QlYKUTBkU1pXTjBRRUJYTkVOSFVtVmpkRVZrWjJWQVFFMVFRbGhRUVZWRFIwTnZiRzl5UUVBelFG
b0FYMTlwYlhCZlgwTkhRMjl1ZEdWNApkRVJ5WVhkTWFXNWxZWEpIY21Ga2FXVnVkQUJmWDJsdGNG
OWZRMGRTWldOMFIyVjBUV2xrV0FCZlgybHRjRjlmUTBkSGNtRmthV1Z1CmRFZGxkRlI1Y0dWSlJB
QmZYMmx0Y0Y5ZlEwZFNaV04wUjJWMFRXbHVXQUJmWDJsdGNGOWZRMGREYjJ4dmNrZGxkRlI1Y0dW
SlJBQmYKWDJsdGNGOWZRMGREYjI1MFpYaDBVMlYwVTJodmRXeGtRVzUwYVdGc2FXRnpBRjlmY21W
aGJFQXpabVV3TURBd01EQXdNREF3TURBdwpBRjlmYVcxd1gxOURSME52Ym5SbGVIUlNiM1JoZEdW
RFZFMEFYMTl5WldGc1FHSm1Zemt3Wm1SaUFGOWZjbVZoYkVBelptTTVNR1prCllnQmZYMmx0Y0Y5
ZlEwZFNaV04wUjJWMFYybGtkR2dBWDE5cGJYQmZYME5IVW1WamRFZGxkRWhsYVdkb2RBQS9ZV1Jr
VW05MWJtUmwKWkZKbFkzUlViME52Ym5SbGVIUkFRRmxCV0ZCQlZVTkhRMjl1ZEdWNGRFQkFWVU5I
VW1WamRFQkFUVUJhQUY5ZmFXMXdYMTlEUjFCaApkR2hTWld4bFlYTmxBRjlmYVcxd1gxOURSME52
Ym5SbGVIUkJaR1JRWVhSb0FGOWZhVzF3WDE5RFIxQmhkR2hEYkc5elpWTjFZbkJoCmRHZ0FYMTl5
WldGc1FEUXdPVFpqWW1VMEFGOWZjbVZoYkVBME1EUTVNR1prWWdCZlgybHRjRjlmUTBkUVlYUm9R
V1JrUVhKakFGOWYKYVcxd1gxOURSMUJoZEdoTmIzWmxWRzlRYjJsdWRBQmZYMmx0Y0Y5ZlEwZFFZ
WFJvUTNKbFlYUmxUWFYwWVdKc1pRQS9ZMjl1YzNSeQpZV2x1VW1WamRGQnlaWE5sY25acGJtZEJj
M0JsWTNSU1lYUnBiMEJBV1VFL1FWVkRSMUpsWTNSQVFGVXhRRlZEUjFOcGVtVkFRRUJhCkFEOXdi
Mmx1ZEVselYybDBhR2x1UkdsemRHRnVZMlZQWmxCdmFXNTBRRUJaUVY5T1ZVTkhVRzlwYm5SQVFE
Qk5RRm9BUDNKdmRXNWsKVW1WamRFTnZiblJoYVc1elVHOXBiblJBUUZsQlgwNVZRMGRTWldOMFFF
Qk5WVU5IVUc5cGJuUkFRRUJhQUQ5bmJHOTNRMjlzYjNKQQpUV1ZrYVdGVGFHRnlaV1JWU1VsdFlX
ZGxSV3hsYldWdWRFQkFTVUZGVUVGVlEwZERiMnh2Y2tCQVdGb0FQMjkwYUdWeVJtbHNiRWRzCmIz
ZERiMnh2Y2tBL01UOC9aMnh2ZDBOdmJHOXlRRTFsWkdsaFUyaGhjbVZrVlVsSmJXRm5aVVZzWlcx
bGJuUkFRRWxCUlZCQlZVTkgKUTI5c2IzSkFRRmhhUURSUVFWVXpRRUVBUDJacGJHeFNaWEJzWVdO
bFIyeHZkME52Ykc5eVFEOHhQejluYkc5M1EyOXNiM0pBVFdWawphV0ZUYUdGeVpXUlZTVWx0WVdk
bFJXeGxiV1Z1ZEVCQVNVRkZVRUZWUTBkRGIyeHZja0JBV0ZwQU5GQkJWVE5BUVFBL0pGTXhNVUEv
Ck1UOC9aMnh2ZDBOdmJHOXlRRTFsWkdsaFUyaGhjbVZrVlVsSmJXRm5aVVZzWlcxbGJuUkFRRWxC
UlZCQlZVTkhRMjlzYjNKQVFGaGEKUURSSlFRQS9aSEpoZDBKaFkydG5jbTkxYm1SQVRXVmthV0ZU
YUdGeVpXUlZTVWx0WVdkbFJXeGxiV1Z1ZEVCQVZVSkZXRkJCVlVOSApRMjl1ZEdWNGRFQkFWVU5I
VW1WamRFQkFRRm9BUDJ4dmQyVnlSbWxzYkVBL01UOC9aSEpoZDBKaFkydG5jbTkxYm1SQVRXVmth
V0ZUCmFHRnlaV1JWU1VsdFlXZGxSV3hsYldWdWRFQkFWVUpGV0ZCQlZVTkhRMjl1ZEdWNGRFQkFW
VU5IVW1WamRFQkFRRnBBTkZCQlZVTkgKUjNKaFpHbGxiblJBUUVFQVAyTnZiRzl5YzBBL01UOC9a
SEpoZDBKaFkydG5jbTkxYm1SQVRXVmthV0ZUYUdGeVpXUlZTVWx0WVdkbApSV3hsYldWdWRFQkFW
VUpGV0ZCQlZVTkhRMjl1ZEdWNGRFQkFWVU5IVW1WamRFQkFRRnBBTkZCQlRVRUFQMjFwWkdSc1pV
WnBiR3hBClB6RS9QMlJ5WVhkQ1lXTnJaM0p2ZFc1a1FFMWxaR2xoVTJoaGNtVmtWVWxKYldGblpV
VnNaVzFsYm5SQVFGVkNSVmhRUVZWRFIwTnYKYm5SbGVIUkFRRlZEUjFKbFkzUkFRRUJhUURSUVFW
VkRSME52Ykc5eVFFQkJBRjlmY21WaGJFQXpaalV3WkRCa01RQS9kRzl3Um1scwpiRUEvTVQ4L1pI
SmhkMEpoWTJ0bmNtOTFibVJBVFdWa2FXRlRhR0Z5WldSVlNVbHRZV2RsUld4bGJXVnVkRUJBVlVK
RldGQkJWVU5IClEyOXVkR1Y0ZEVCQVZVTkhVbVZqZEVCQVFGcEFORkJCVlVOSFEyOXNiM0pBUUVF
QVgxOXlaV0ZzUURObU5UaGtPR1E1QUQ4a1V6RXkKUUQ4eFB6OWtjbUYzUW1GamEyZHliM1Z1WkVC
TlpXUnBZVk5vWVhKbFpGVkpTVzFoWjJWRmJHVnRaVzUwUUVCVlFrVllVRUZWUTBkRApiMjUwWlho
MFFFQlZRMGRTWldOMFFFQkFXa0EwU1VFQVAzQmhhVzUwUUUxbFpHbGhVMmhoY21Wa1ZVbEpiV0Zu
WlVWc1pXMWxiblJBClFGVkJSVmhRUVZWRFIwTnZiblJsZUhSQVFGVkRSMUpsWTNSQVFFQmFBRDlw
Ym01bGNsTm9ZV1J2ZDBOdmJHOXlRRDlPUUQ4L2NHRnAKYm5SQVRXVmthV0ZUYUdGeVpXUlZTVWx0
WVdkbFJXeGxiV1Z1ZEVCQVZVRkZXRkJCVlVOSFEyOXVkR1Y0ZEVCQVZVTkhVbVZqZEVCQQpRRnBB
TkZCQlZVTkhRMjlzYjNKQVFFRUFYMTl5WldGc1FETm1OREF3TURBd0FEOGtVekV6UUQ5T1FEOC9j
R0ZwYm5SQVRXVmthV0ZUCmFHRnlaV1JWU1VsdFlXZGxSV3hsYldWdWRFQkFWVUZGV0ZCQlZVTkhR
Mjl1ZEdWNGRFQkFWVU5IVW1WamRFQkFRRnBBTkVsQkFGOWYKYVcxd1gxOURSME52Ym5SbGVIUlRa
WFJCYkhCb1lRQS9jR0ZwYm5SQVRXVmthV0ZUYUdGeVpXUlZTVUpoWTJ0bmNtOTFibVJGYkdWdApa
VzUwUUVCVlFVVllVRUZWUTBkRGIyNTBaWGgwUUVCVlEwZFNaV04wUUVCQVdnQmZYM0psWVd4QU5E
QXdNREF3TURBd01EQXdNREF3Ck1BQmZYM0psWVd4QU0yWm1NREF3TURBd01EQXdNREF3TUFCZlgz
SmxZV3hBTTJWaU16TXpNek1BUDNSdmNFSnZjbVJsY2tBL01UOC8KY0dGcGJuUkFUV1ZrYVdGVGFH
RnlaV1JWU1VKaFkydG5jbTkxYm1SRmJHVnRaVzUwUUVCVlFVVllVRUZWUTBkRGIyNTBaWGgwUUVC
VgpRMGRTWldOMFFFQkFXa0EwVUVGUVFWVkRSME52Ykc5eVFFQkJBRDlpYjNSMGIyMUdhV3hzUUQ4
eFB6OXdZV2x1ZEVCTlpXUnBZVk5vCllYSmxaRlZKUW1GamEyZHliM1Z1WkVWc1pXMWxiblJBUUZW
QlJWaFFRVlZEUjBOdmJuUmxlSFJBUUZWRFIxSmxZM1JBUUVCYVFEUlEKUVZWRFIwZHlZV1JwWlc1
MFFFQkJBRDlpYjNSMGIyMURiMnh2Y25OQVB6RS9QM0JoYVc1MFFFMWxaR2xoVTJoaGNtVmtWVWxD
WVdOcgpaM0p2ZFc1a1JXeGxiV1Z1ZEVCQVZVRkZXRkJCVlVOSFEyOXVkR1Y0ZEVCQVZVTkhVbVZq
ZEVCQVFGcEFORkJCVFVFQVAyMXBaR1JzClpVWnBiR3hBUHpFL1AzQmhhVzUwUUUxbFpHbGhVMmho
Y21Wa1ZVbENZV05yWjNKdmRXNWtSV3hsYldWdWRFQkFWVUZGV0ZCQlZVTkgKUTI5dWRHVjRkRUJB
VlVOSFVtVmpkRUJBUUZwQU5GQkJWVU5IUTI5c2IzSkFRRUVBWDE5eVpXRnNRRE5rWmpCbU1HWXhB
RjlmY21WaApiRUF6WmpaaU9EVXhaZ0EvZEc5d1JtbHNiRUEvTVQ4L2NHRnBiblJBVFdWa2FXRlRh
R0Z5WldSVlNVSmhZMnRuY205MWJtUkZiR1Z0ClpXNTBRRUJWUVVWWVVFRlZRMGREYjI1MFpYaDBR
RUJWUTBkU1pXTjBRRUJBV2tBMFVFRlZRMGRIY21Ga2FXVnVkRUJBUVFBL2RHOXcKUTI5c2IzSnpR
RDh4UHo5d1lXbHVkRUJOWldScFlWTm9ZWEpsWkZWSlFtRmphMmR5YjNWdVpFVnNaVzFsYm5SQVFG
VkJSVmhRUVZWRApSME52Ym5SbGVIUkFRRlZEUjFKbFkzUkFRRUJhUURSUVFVMUJBRDhrVXpFMVFE
OHhQejl3WVdsdWRFQk5aV1JwWVZOb1lYSmxaRlZKClFtRmphMmR5YjNWdVpFVnNaVzFsYm5SQVFG
VkJSVmhRUVZWRFIwTnZiblJsZUhSQVFGVkRSMUpsWTNSQVFFQmFRRFJKUVFBL2FHbDAKVkdWemRF
Qk5aV1JwWVZOb1lYSmxaRlZKVkdsdFpXeHBibVZUYkdsa1pYSlVhSFZ0WWtWc1pXMWxiblJBUUZW
Q1JWOU9WVU5IVW1WagpkRUJBVlVOSFVHOXBiblJBUUVCYUFGOWZjbVZoYkVBME1ETXdNREF3TURB
d01EQXdNREF3QUY5ZmFXMXdYMTlEUjFKbFkzUkhaWFJOCmFXUlpBRDl1WVhSMWNtRnNVMmw2WlVC
TlpXUnBZVk5vWVhKbFpGVkpWR2x0Wld4cGJtVlRiR2xrWlhKVWFIVnRZa1ZzWlcxbGJuUkEKUUZW
Q1JUOUJWVU5IVTJsNlpVQkFXRm9BUDNCaGFXNTBRRTFsWkdsaFUyaGhjbVZrVlVsVWFXMWxiR2x1
WlZOc2FXUmxjbFJvZFcxaQpSV3hsYldWdWRFQkFWVUZGV0ZCQlZVTkhRMjl1ZEdWNGRFQkFWVU5I
VW1WamRFQkFRRm9BWDE5cGJYQmZYME5IUTI5dWRHVjRkRWRsCmRFTnNhWEJDYjNWdVpHbHVaMEp2
ZUFCZlgybHRjRjlmUTBkTVlYbGxjbEpsYkdWaGMyVUFYMTlwYlhCZlgwTkhRMjl1ZEdWNGRFTnMK
YVhBQVgxOXBiWEJmWDBOSFEyOXVkR1Y0ZEVOc2IzTmxVR0YwYUFCZlgybHRjRjlmUTBkRGIyNTBa
WGgwUVdSa1RHbHVaVlJ2VUc5cApiblFBWDE5cGJYQmZYME5IUTI5dWRHVjRkRTF2ZG1WVWIxQnZh
VzUwQUY5ZmFXMXdYMTlEUjBOdmJuUmxlSFJDWldkcGJsQmhkR2dBClAzTm9ZV1J2ZDBOdmJHOXlR
RDh4UHo5d1lXbHVkRUJOWldScFlWTm9ZWEpsWkZWSlZHbHRaV3hwYm1WVGJHbGtaWEpVYUhWdFlr
VnMKWlcxbGJuUkFRRlZCUlZoUVFWVkRSME52Ym5SbGVIUkFRRlZEUjFKbFkzUkFRRUJhUURSUVFW
VkRSME52Ykc5eVFFQkJBRDlvYVdkbwpiR2xuYUhSRGIyeHZja0EvTVQ4L2NHRnBiblJBVFdWa2FX
RlRhR0Z5WldSVlNWUnBiV1ZzYVc1bFUyeHBaR1Z5VkdoMWJXSkZiR1Z0ClpXNTBRRUJWUVVWWVVF
RlZRMGREYjI1MFpYaDBRRUJWUTBkU1pXTjBRRUJBV2tBMFVFRlZRMGREYjJ4dmNrQkFRUUEvYm05
eWJXRnMKUjNKaFpHbGxiblJBUHpFL1AzQmhhVzUwUUUxbFpHbGhVMmhoY21Wa1ZVbFVhVzFsYkds
dVpWTnNhV1JsY2xSb2RXMWlSV3hsYldWdQpkRUJBVlVGRldGQkJWVU5IUTI5dWRHVjRkRUJBVlVO
SFVtVmpkRUJBUUZwQU5GQkJWVU5IUjNKaFpHbGxiblJBUUVFQVAyNXZjbTFoCmJFTnZiRzl5YzBB
L01UOC9jR0ZwYm5SQVRXVmthV0ZUYUdGeVpXUlZTVlJwYldWc2FXNWxVMnhwWkdWeVZHaDFiV0pG
YkdWdFpXNTAKUUVCVlFVVllVRUZWUTBkRGIyNTBaWGgwUUVCVlEwZFNaV04wUUVCQVdrQTBVRUZO
UVFBL2NISmxjM05sWkVkeVlXUnBaVzUwUUQ4eApQejl3WVdsdWRFQk5aV1JwWVZOb1lYSmxaRlZK
VkdsdFpXeHBibVZUYkdsa1pYSlVhSFZ0WWtWc1pXMWxiblJBUUZWQlJWaFFRVlZEClIwTnZiblJs
ZUhSQVFGVkRSMUpsWTNSQVFFQmFRRFJRUVZWRFIwZHlZV1JwWlc1MFFFQkJBRDl3Y21WemMyVmtR
MjlzYjNKelFEOHgKUHo5d1lXbHVkRUJOWldScFlWTm9ZWEpsWkZWSlZHbHRaV3hwYm1WVGJHbGta
WEpVYUhWdFlrVnNaVzFsYm5SQVFGVkJSVmhRUVZWRApSME52Ym5SbGVIUkFRRlZEUjFKbFkzUkFR
RUJhUURSUVFVMUJBRDhrVXpFMlFEOHhQejl3WVdsdWRFQk5aV1JwWVZOb1lYSmxaRlZKClZHbHRa
V3hwYm1WVGJHbGtaWEpVYUhWdFlrVnNaVzFsYm5SQVFGVkJSVmhRUVZWRFIwTnZiblJsZUhSQVFG
VkRSMUpsWTNSQVFFQmEKUURSSlFRQS9kR2x0Wld4cGJtVlNaV04wUm05eVFtOTFibVJ6UUUxbFpH
bGhVMmhoY21Wa1ZVbFVhVzFsYkdsdVpWTnNhV1JsY2tCQQpRVUpGUDBGVlEwZFNaV04wUUVCVk1r
QkFXZ0JmWDNKbFlXeEFOREF5TURBd01EQXdNREF3TURBd01BQmZYM0psWVd4QU5EQXhNREF3Ck1E
QXdNREF3TURBd01BQS9hR2xuYUd4cFoyaDBWVzVzYjJGa1pXUlNZVzVuWlVCTlpXUnBZVk5vWVhK
bFpGVkpWR2x0Wld4cGJtVlQKYkdsa1pYSkFRRUZDUlZoUVFWVkRSME52Ym5SbGVIUkFRRlZEUjFK
bFkzUkFRRUJhQUY5ZmNtVmhiRUEwTVRFd01EQXdNQUJmWDJsdApjRjlmUTBkU1pXTjBSMlYwVFdG
NFdBQmZYMmx0Y0Y5ZlEwZERiMjUwWlhoMFEyOXVkbVZ5ZEZOcGVtVlViMVZ6WlhKVGNHRmpaUUEv
ClozSmhlVVpwYkd4RGIyeHZja0EvTXo4L2FHbG5hR3hwWjJoMFZXNXNiMkZrWldSU1lXNW5aVUJO
WldScFlWTm9ZWEpsWkZWSlZHbHQKWld4cGJtVlRiR2xrWlhKQVFFRkNSVmhRUVZWRFIwTnZiblJs
ZUhSQVFGVkRSMUpsWTNSQVFFQmFRRFJRUVZWRFIwTnZiRzl5UUVCQgpBRjlmY21WaGJFQXpaVGd3
TURBd01BQS9KRk14TjBBL016OC9hR2xuYUd4cFoyaDBWVzVzYjJGa1pXUlNZVzVuWlVCTlpXUnBZ
Vk5vCllYSmxaRlZKVkdsdFpXeHBibVZUYkdsa1pYSkFRRUZDUlZoUVFWVkRSME52Ym5SbGVIUkFR
RlZEUjFKbFkzUkFRRUJhUURSSlFRQS8KY0dGcGJuUkFUV1ZrYVdGVGFHRnlaV1JWU1ZScGJXVnNh
VzVsVTJ4cFpHVnlRRUJWUVVWWVVFRlZRMGREYjI1MFpYaDBRRUJWUTBkUwpaV04wUUVCQVdnQS9h
R2xuYUd4cFoyaDBRMjlzYjNKQVB6RS9QM0JoYVc1MFFFMWxaR2xoVTJoaGNtVmtWVWxVYVcxbGJH
bHVaVk5zCmFXUmxja0JBVlVGRldGQkJWVU5IUTI5dWRHVjRkRUJBVlVOSFVtVmpkRUJBUUZwQU5G
QkJWVU5IUTI5c2IzSkFRRUVBWDE5eVpXRnMKUUROa1lUTmtOekJoQUQ5emFHRmtiM2REYjJ4dmNr
QS9NVDgvY0dGcGJuUkFUV1ZrYVdGVGFHRnlaV1JWU1ZScGJXVnNhVzVsVTJ4cApaR1Z5UUVCVlFV
VllVRUZWUTBkRGIyNTBaWGgwUUVCVlEwZFNaV04wUUVCQVdrQTBVRUZWUTBkRGIyeHZja0JBUVFC
ZlgzSmxZV3hBCk0yWXlaVEUwTjJJQVAySmhZMnRuY205MWJtUkhjbUZrYVdWdWRFQS9NVDgvY0dG
cGJuUkFUV1ZrYVdGVGFHRnlaV1JWU1ZScGJXVnMKYVc1bFUyeHBaR1Z5UUVCVlFVVllVRUZWUTBk
RGIyNTBaWGgwUUVCVlEwZFNaV04wUUVCQVdrQTBVRUZWUTBkSGNtRmthV1Z1ZEVCQQpRUUEvWTI5
c2IzSnpRRDh4UHo5d1lXbHVkRUJOWldScFlWTm9ZWEpsWkZWSlZHbHRaV3hwYm1WVGJHbGtaWEpB
UUZWQlJWaFFRVlZEClIwTnZiblJsZUhSQVFGVkRSMUpsWTNSQVFFQmFRRFJRUVUxQkFEOGtVekU0
UUQ4eFB6OXdZV2x1ZEVCTlpXUnBZVk5vWVhKbFpGVkoKVkdsdFpXeHBibVZUYkdsa1pYSkFRRlZC
UlZoUVFWVkRSME52Ym5SbGVIUkFRRlZEUjFKbFkzUkFRRUJhUURSSlFRQS9jR0ZwYm5SQQpUV1Zr
YVdGVGFHRnlaV1JWU1ZadmJIVnRaVk5zYVdSbGNrQkFWVUZGV0ZCQlZVTkhRMjl1ZEdWNGRFQkFW
VU5IVW1WamRFQkFRRm9BClgxOXBiWEJmWDBOSFEyOXVkR1Y0ZEZOMGNtOXJaVkJoZEdnQVgxOXBi
WEJmWDBOSFEyOXVkR1Y0ZEZObGRFeHBibVZYYVdSMGFBQmYKWDJsdGNGOWZRMGREYjI1MFpYaDBV
MlYwUjNKaGVWTjBjbTlyWlVOdmJHOXlBRjlmY21WaGJFQXpaall3TURBd01BQmZYMmx0Y0Y5ZgpR
MGRTWldOMFNXNXpaWFFBUDJocFoyaHNhV2RvZEVOdmJHOXlRRDh4UHo5d1lXbHVkRUJOWldScFlW
Tm9ZWEpsWkZWSlZtOXNkVzFsClUyeHBaR1Z5UUVCVlFVVllVRUZWUTBkRGIyNTBaWGgwUUVCVlEw
ZFNaV04wUUVCQVdrQTBVRUZWUTBkRGIyeHZja0JBUVFBL1ltRmoKYTJkeWIzVnVaRWR5WVdScFpX
NTBRRDh4UHo5d1lXbHVkRUJOWldScFlWTm9ZWEpsWkZWSlZtOXNkVzFsVTJ4cFpHVnlRRUJWUVVW
WQpVRUZWUTBkRGIyNTBaWGgwUUVCVlEwZFNaV04wUUVCQVdrQTBVRUZWUTBkSGNtRmthV1Z1ZEVC
QVFRQS9ZMjlzYjNKelFEOHhQejl3CllXbHVkRUJOWldScFlWTm9ZWEpsWkZWSlZtOXNkVzFsVTJ4
cFpHVnlRRUJWUVVWWVVFRlZRMGREYjI1MFpYaDBRRUJWUTBkU1pXTjAKUUVCQVdrQTBVRUZOUVFB
L0pGTXhPVUEvTVQ4L2NHRnBiblJBVFdWa2FXRlRhR0Z5WldSVlNWWnZiSFZ0WlZOc2FXUmxja0JB
VlVGRgpXRkJCVlVOSFEyOXVkR1Y0ZEVCQVZVTkhVbVZqZEVCQVFGcEFORWxCQUQ5b2FYUlVaWE4w
UUUxbFpHbGhVMmhoY21Wa1ZVbFdiMngxCmJXVlRiR2xrWlhKVWFIVnRZa1ZzWlcxbGJuUkFRRlZD
UlY5T1ZVTkhVbVZqZEVCQVZVTkhVRzlwYm5SQVFFQmFBRDl1WVhSMWNtRnMKVTJsNlpVQk5aV1Jw
WVZOb1lYSmxaRlZKVm05c2RXMWxVMnhwWkdWeVZHaDFiV0pGYkdWdFpXNTBRRUJWUWtVL1FWVkRS
MU5wZW1WQQpRRmhhQUQ5d1lXbHVkRUJOWldScFlWTm9ZWEpsWkZWSlZtOXNkVzFsVTJ4cFpHVnlW
R2gxYldKRmJHVnRaVzUwUUVCVlFVVllVRUZWClEwZERiMjUwWlhoMFFFQlZRMGRTWldOMFFFQkFX
Z0JmWDJsdGNGOWZRMGREYjI1MFpYaDBRV1JrUld4c2FYQnpaVWx1VW1WamRBQS8KYzJoaFpHOTNR
MjlzYjNKQVB6RS9QM0JoYVc1MFFFMWxaR2xoVTJoaGNtVmtWVWxXYjJ4MWJXVlRiR2xrWlhKVWFI
VnRZa1ZzWlcxbApiblJBUUZWQlJWaFFRVlZEUjBOdmJuUmxlSFJBUUZWRFIxSmxZM1JBUUVCYVFE
UlFRVlZEUjBOdmJHOXlRRUJCQUQ5cGJtNWxjbE5vCllXUnZkME52Ykc5eVFEOHhQejl3WVdsdWRF
Qk5aV1JwWVZOb1lYSmxaRlZKVm05c2RXMWxVMnhwWkdWeVZHaDFiV0pGYkdWdFpXNTAKUUVCVlFV
VllVRUZWUTBkRGIyNTBaWGgwUUVCVlEwZFNaV04wUUVCQVdrQTBVRUZWUTBkRGIyeHZja0JBUVFC
ZlgzSmxZV3hBTTJVdwpaalZqTWprQVAyaHBaMmhzYVdkb2RFTnZiRzl5UUQ4eFB6OXdZV2x1ZEVC
TlpXUnBZVk5vWVhKbFpGVkpWbTlzZFcxbFUyeHBaR1Z5ClZHaDFiV0pGYkdWdFpXNTBRRUJWUVVW
WVVFRlZRMGREYjI1MFpYaDBRRUJWUTBkU1pXTjBRRUJBV2tBMFVFRlZRMGREYjJ4dmNrQkEKUVFB
L2JtOXliV0ZzUjNKaFpHbGxiblJBUHpFL1AzQmhhVzUwUUUxbFpHbGhVMmhoY21Wa1ZVbFdiMngx
YldWVGJHbGtaWEpVYUhWdApZa1ZzWlcxbGJuUkFRRlZCUlZoUVFWVkRSME52Ym5SbGVIUkFRRlZE
UjFKbFkzUkFRRUJhUURSUVFWVkRSMGR5WVdScFpXNTBRRUJCCkFEOXViM0p0WVd4RGIyeHZjbk5B
UHpFL1AzQmhhVzUwUUUxbFpHbGhVMmhoY21Wa1ZVbFdiMngxYldWVGJHbGtaWEpVYUhWdFlrVnMK
WlcxbGJuUkFRRlZCUlZoUVFWVkRSME52Ym5SbGVIUkFRRlZEUjFKbFkzUkFRRUJhUURSUVFVMUJB
RDl3Y21WemMyVmtSM0poWkdsbApiblJBUHpFL1AzQmhhVzUwUUUxbFpHbGhVMmhoY21Wa1ZVbFdi
MngxYldWVGJHbGtaWEpVYUhWdFlrVnNaVzFsYm5SQVFGVkJSVmhRClFWVkRSME52Ym5SbGVIUkFR
RlZEUjFKbFkzUkFRRUJhUURSUVFWVkRSMGR5WVdScFpXNTBRRUJCQUQ5d2NtVnpjMlZrUTI5c2Iz
SnoKUUQ4eFB6OXdZV2x1ZEVCTlpXUnBZVk5vWVhKbFpGVkpWbTlzZFcxbFUyeHBaR1Z5VkdoMWJX
SkZiR1Z0Wlc1MFFFQlZRVVZZVUVGVgpRMGREYjI1MFpYaDBRRUJWUTBkU1pXTjBRRUJBV2tBMFVF
Rk5RUUEvSkZNeU1FQS9NVDgvY0dGcGJuUkFUV1ZrYVdGVGFHRnlaV1JWClNWWnZiSFZ0WlZOc2FX
UmxjbFJvZFcxaVJXeGxiV1Z1ZEVCQVZVRkZXRkJCVlVOSFEyOXVkR1Y0ZEVCQVZVTkhVbVZqZEVC
QVFGcEEKTkVsQkFEOW9hWFJVWlhOMFFFMWxaR2xoVTJoaGNtVmtWVWxXYjJ4MWJXVlRiR2xrWlhK
Q1lXTnJaM0p2ZFc1a1JXeGxiV1Z1ZEVCQQpWVUpGWDA1VlEwZFNaV04wUUVCVlEwZFFiMmx1ZEVC
QVFGb0FQM0JoYVc1MFFFMWxaR2xoVTJoaGNtVmtWVWxXYjJ4MWJXVlRiR2xrClpYSkNZV05yWjNK
dmRXNWtSV3hsYldWdWRFQkFWVUZGV0ZCQlZVTkhRMjl1ZEdWNGRFQkFWVU5IVW1WamRFQkFRRm9B
WDE5eVpXRnMKUURObU56TXpNek16QUQ5cGJtNWxjbE5vWVdSdmQwTnZiRzl5UUQ4eFB6OXdZV2x1
ZEVCTlpXUnBZVk5vWVhKbFpGVkpWbTlzZFcxbApVMnhwWkdWeVFtRmphMmR5YjNWdVpFVnNaVzFs
Ym5SQVFGVkJSVmhRUVZWRFIwTnZiblJsZUhSQVFGVkRSMUpsWTNSQVFFQmFRRFJRClFWVkRSME52
Ykc5eVFFQkJBRDltYVd4c1IzSmhaR2xsYm5SQVB6RS9QM0JoYVc1MFFFMWxaR2xoVTJoaGNtVmtW
VWxXYjJ4MWJXVlQKYkdsa1pYSkNZV05yWjNKdmRXNWtSV3hsYldWdWRFQkFWVUZGV0ZCQlZVTkhR
Mjl1ZEdWNGRFQkFWVU5IVW1WamRFQkFRRnBBTkZCQgpWVU5IUjNKaFpHbGxiblJBUUVFQVAyTnZi
Rzl5YzBBL01UOC9jR0ZwYm5SQVRXVmthV0ZUYUdGeVpXUlZTVlp2YkhWdFpWTnNhV1JsCmNrSmhZ
MnRuY205MWJtUkZiR1Z0Wlc1MFFFQlZRVVZZVUVGVlEwZERiMjUwWlhoMFFFQlZRMGRTWldOMFFF
QkFXa0EwVUVGTlFRQS8KSkZNeU1VQS9NVDgvY0dGcGJuUkFUV1ZrYVdGVGFHRnlaV1JWU1ZadmJI
VnRaVk5zYVdSbGNrSmhZMnRuY205MWJtUkZiR1Z0Wlc1MApRRUJWUVVWWVVFRlZRMGREYjI1MFpY
aDBRRUJWUTBkU1pXTjBRRUJBV2tBMFNVRUFQejh3VFdWa2FXRlRhR0Z5WldSVlNVSmhZMnRuCmNt
OTFibVJGYkdWdFpXNTBRRUJSUVVWQVdGb0FQejlmTjAxbFpHbGhVMmhoY21Wa1ZVbENZV05yWjNK
dmRXNWtSV3hsYldWdWRFQkEKTmtKQUFEOC9YMGROWldScFlWTm9ZWEpsWkZWSlFtRmphMmR5YjNW
dVpFVnNaVzFsYm5SQVFGVkJSVkJCV0VsQVdnQS9QMTlGVFdWawphV0ZUYUdGeVpXUlZTVUpoWTJ0
bmNtOTFibVJGYkdWdFpXNTBRRUJWUVVWUVFWaEpRRm9BUHo4d1RXVmthV0ZUYUdGeVpXUlZTVlp2
CmJIVnRaVk5zYVdSbGNrSmhZMnRuY205MWJtUkZiR1Z0Wlc1MFFFQlJRVVZBV0ZvQVB6OWZOMDFs
WkdsaFUyaGhjbVZrVlVsV2IyeDEKYldWVGJHbGtaWEpDWVdOclozSnZkVzVrUld4bGJXVnVkRUJB
TmtKQUFEOC9YMGROWldScFlWTm9ZWEpsWkZWSlZtOXNkVzFsVTJ4cApaR1Z5UW1GamEyZHliM1Z1
WkVWc1pXMWxiblJBUUZWQlJWQkJXRWxBV2dBL1AxOUZUV1ZrYVdGVGFHRnlaV1JWU1ZadmJIVnRa
Vk5zCmFXUmxja0poWTJ0bmNtOTFibVJGYkdWdFpXNTBRRUJWUVVWUVFWaEpRRm9BUHo4d1RXVmth
V0ZUYUdGeVpXUlZTVlJwYldWc2FXNWwKVTJ4cFpHVnlWR2gxYldKRmJHVnRaVzUwUUVCUlFVVkFX
Rm9BUHo5Zk4wMWxaR2xoVTJoaGNtVmtWVWxVYVcxbGJHbHVaVk5zYVdSbApjbFJvZFcxaVJXeGxi
V1Z1ZEVCQU5rSkFBRDgvWDBkTlpXUnBZVk5vWVhKbFpGVkpWR2x0Wld4cGJtVlRiR2xrWlhKVWFI
VnRZa1ZzClpXMWxiblJBUUZWQlJWQkJXRWxBV2dBL1AxOUZUV1ZrYVdGVGFHRnlaV1JWU1ZScGJX
VnNhVzVsVTJ4cFpHVnlWR2gxYldKRmJHVnQKWlc1MFFFQlZRVVZRUVZoSlFGb0FQejh3VFdWa2FX
RlRhR0Z5WldSVlNWWnZiSFZ0WlZOc2FXUmxja0JBVVVGRlFGaGFBRDgvWHpkTgpaV1JwWVZOb1lY
SmxaRlZKVm05c2RXMWxVMnhwWkdWeVFFQTJRa0FBUHo5ZlIwMWxaR2xoVTJoaGNtVmtWVWxXYjJ4
MWJXVlRiR2xrClpYSkFRRlZCUlZCQldFbEFXZ0EvUDE5RlRXVmthV0ZUYUdGeVpXUlZTVlp2YkhW
dFpWTnNhV1JsY2tCQVZVRkZVRUZZU1VCYUFEOC8KTUUxbFpHbGhVMmhoY21Wa1ZVbFdiMngxYldW
VGJHbGtaWEpVYUhWdFlrVnNaVzFsYm5SQVFGRkJSVUJZV2dBL1AxODNUV1ZrYVdGVAphR0Z5WldS
VlNWWnZiSFZ0WlZOc2FXUmxjbFJvZFcxaVJXeGxiV1Z1ZEVCQU5rSkFBRDgvWDBkTlpXUnBZVk5v
WVhKbFpGVkpWbTlzCmRXMWxVMnhwWkdWeVZHaDFiV0pGYkdWdFpXNTBRRUJWUVVWUVFWaEpRRm9B
UHo5ZlJVMWxaR2xoVTJoaGNtVmtWVWxXYjJ4MWJXVlQKYkdsa1pYSlVhSFZ0WWtWc1pXMWxiblJB
UUZWQlJWQkJXRWxBV2dBL1B6Rk5aV1JwWVZOb1lYSmxaRlZKUW1GamEyZHliM1Z1WkVWcwpaVzFs
Ym5SQVFGVkJSVUJZV2dBL1B6Rk5aV1JwWVZOb1lYSmxaRlZKVm05c2RXMWxVMnhwWkdWeVFtRmph
MmR5YjNWdVpFVnNaVzFsCmJuUkFRRlZCUlVCWVdnQS9QekZOWldScFlWTm9ZWEpsWkZWSlZHbHRa
V3hwYm1WVGJHbGtaWEpVYUhWdFlrVnNaVzFsYm5SQVFGVkIKUlVCWVdnQS9QekZOWldScFlWTm9Z
WEpsWkZWSlZtOXNkVzFsVTJ4cFpHVnlRRUJWUVVWQVdGb0FQejh4VFdWa2FXRlRhR0Z5WldSVgpT
Vlp2YkhWdFpWTnNhV1JsY2xSb2RXMWlSV3hsYldWdWRFQkFWVUZGUUZoYUFEOC9NRTFsWkdsaFZV
bFVhVzFsYkdsdVpWTnNhV1JsCmNrQkFVVUZGUUZoYUFEOC9YemROWldScFlWVkpWR2x0Wld4cGJt
VlRiR2xrWlhKQVFEWkNRQUEvUDE5SFRXVmthV0ZWU1ZScGJXVnMKYVc1bFUyeHBaR1Z5UUVCVlFV
VlFRVmhKUUZvQVB6OWZSVTFsWkdsaFZVbFVhVzFsYkdsdVpWTnNhV1JsY2tCQVZVRkZVRUZZU1VC
YQpBRDgvTVUxbFpHbGhWVWxVYVcxbGJHbHVaVk5zYVdSbGNrQkFWVUZGUUZoYUFEOC9YMGROWldS
cFlWVkpWR2x0Wld4cGJtVlRiR2xrClpYSkFRRlZCUlZCQldFbEFXZ0EvUHpCTlpXUnBZVk5vWVhK
bFpGVkpTVzFoWjJWRmJHVnRaVzUwUUVCUlFVVkFXRm9BUHo5Zk4wMWwKWkdsaFUyaGhjbVZrVlVs
SmJXRm5aVVZzWlcxbGJuUkFRRFpDUUFBL1AxOUhUV1ZrYVdGVGFHRnlaV1JWU1VsdFlXZGxSV3hs
YldWdQpkRUJBVlVGRlVFRllTVUJhQUQ4L1gwVk5aV1JwWVZOb1lYSmxaRlZKU1cxaFoyVkZiR1Z0
Wlc1MFFFQlZRVVZRUVZoSlFGb0FQMk52CmJuTjBjbUZwYmtGemNHVmpkRkpoZEdsdlFFMWxaR2xo
VTJoaGNtVmtWVWxKYldGblpVVnNaVzFsYm5SQVFGVkNSVjlPV0ZvQVB6OWYKUjAxbFpHbGhVMmho
Y21Wa1ZVbEpiV0ZuWlVWc1pXMWxiblJBUUZWQlJWQkJXRWxBV2dBL1kzSmxZWFJsVFdWa2FXRlFS
RVpEYkc5egpaV1JEWVhCMGFXOXVjMGx0WVdkbFFFQlpRVkJCVlVOSFRHRjVaWEpBUUZoYUFGOWZh
VzF3WDE5RFIwUmhkR0ZRY205MmFXUmxja055ClpXRjBaVmRwZEdoRFJrUmhkR0VBWDE5cGJYQmZY
ME5HUkdGMFlVTnlaV0YwWlZkcGRHaENlWFJsYzA1dlEyOXdlUUJmWDJsdGNGOWYKYTBOR1FXeHNi
Mk5oZEc5eVJHVm1ZWFZzZEFCZlgybHRjRjlmYTBOR1FXeHNiMk5oZEc5eVRuVnNiQUEvYVcxaFoy
VkFQekUvUDJOeQpaV0YwWlUxbFpHbGhVRVJHUTJ4dmMyVmtRMkZ3ZEdsdmJuTkpiV0ZuWlVCQVdV
RlFRVlZEUjB4aGVXVnlRRUJZV2tBMFVFRlZNa0JCCkFEOXRaV1JwWVZCRVJrTnNiM05sWkVOaGNI
UnBiMjV6U1cxaFoyVkFRRmxCVUVGVlEwZE1ZWGxsY2tCQVdGb0FQMmx0WVdkbFFEOHgKUHo5dFpX
UnBZVkJFUmtOc2IzTmxaRU5oY0hScGIyNXpTVzFoWjJWQVFGbEJVRUZWUTBkTVlYbGxja0JBV0Zw
QU5GQkJWVEpBUVFBLwpKRk14UUQ4eFB6OXRaV1JwWVZCRVJrTnNiM05sWkVOaGNIUnBiMjV6U1cx
aFoyVkFRRmxCVUVGVlEwZE1ZWGxsY2tCQVdGcEFORWxCCkFEOWpjbVZoZEdWTlpXUnBZVkJFUmtG
MVpHbHZWbTlzZFcxbFNHbG5hRWx0WVdkbFFFQlpRVkJCVlVOSFRHRjVaWEpBUUZoYUFEOXAKYldG
blpVQS9NVDgvWTNKbFlYUmxUV1ZrYVdGUVJFWkJkV1JwYjFadmJIVnRaVWhwWjJoSmJXRm5aVUJB
V1VGUVFWVkRSMHhoZVdWeQpRRUJZV2tBMFVFRlZNa0JCQUQ5dFpXUnBZVkJFUmtGMVpHbHZWbTlz
ZFcxbFNHbG5hRWx0WVdkbFFFQlpRVkJCVlVOSFRHRjVaWEpBClFGaGFBRDlwYldGblpVQS9NVDgv
YldWa2FXRlFSRVpCZFdScGIxWnZiSFZ0WlVocFoyaEpiV0ZuWlVCQVdVRlFRVlZEUjB4aGVXVnkK
UUVCWVdrQTBVRUZWTWtCQkFEOGtVekpBUHpFL1AyMWxaR2xoVUVSR1FYVmthVzlXYjJ4MWJXVklh
V2RvU1cxaFoyVkFRRmxCVUVGVgpRMGRNWVhsbGNrQkFXRnBBTkVsQkFEOWpjbVZoZEdWTlpXUnBZ
VkJFUmtGMVpHbHZWbTlzZFcxbFQyWm1TVzFoWjJWQVFGbEJVRUZWClEwZE1ZWGxsY2tCQVdGb0FQ
Mmx0WVdkbFFEOHhQejlqY21WaGRHVk5aV1JwWVZCRVJrRjFaR2x2Vm05c2RXMWxUMlptU1cxaFoy
VkEKUUZsQlVFRlZRMGRNWVhsbGNrQkFXRnBBTkZCQlZUSkFRUUEvYldWa2FXRlFSRVpCZFdScGIx
WnZiSFZ0WlU5bVprbHRZV2RsUUVCWgpRVkJCVlVOSFRHRjVaWEpBUUZoYUFEOXBiV0ZuWlVBL01U
OC9iV1ZrYVdGUVJFWkJkV1JwYjFadmJIVnRaVTltWmtsdFlXZGxRRUJaClFWQkJWVU5IVEdGNVpY
SkFRRmhhUURSUVFWVXlRRUVBUHlSVE0wQS9NVDgvYldWa2FXRlFSRVpCZFdScGIxWnZiSFZ0WlU5
bVprbHQKWVdkbFFFQlpRVkJCVlVOSFRHRjVaWEpBUUZoYVFEUkpRUUEvWTNKbFlYUmxUV1ZrYVdG
UVJFWlFZWFZ6WlVKMWRIUnZia2x0WVdkbApRRUJaUVZCQlZVTkhUR0Y1WlhKQVFGaGFBRDlwYldG
blpVQS9NVDgvWTNKbFlYUmxUV1ZrYVdGUVJFWlFZWFZ6WlVKMWRIUnZia2x0CllXZGxRRUJaUVZC
QlZVTkhUR0Y1WlhKQVFGaGFRRFJRUVZVeVFFRUFQMjFsWkdsaFVFUkdVR0YxYzJWQ2RYUjBiMjVK
YldGblpVQkEKV1VGUVFWVkRSMHhoZVdWeVFFQllXZ0EvYVcxaFoyVkFQekUvUDIxbFpHbGhVRVJH
VUdGMWMyVkNkWFIwYjI1SmJXRm5aVUJBV1VGUQpRVlZEUjB4aGVXVnlRRUJZV2tBMFVFRlZNa0JC
QUQ4a1V6UkFQekUvUDIxbFpHbGhVRVJHVUdGMWMyVkNkWFIwYjI1SmJXRm5aVUJBCldVRlFRVlZE
UjB4aGVXVnlRRUJZV2tBMFNVRUFQMk55WldGMFpVMWxaR2xoVUVSR1VHeGhlVUoxZEhSdmJrbHRZ
V2RsUUVCWlFWQkIKVlVOSFRHRjVaWEpBUUZoYUFEOXBiV0ZuWlVBL01UOC9ZM0psWVhSbFRXVmth
V0ZRUkVaUWJHRjVRblYwZEc5dVNXMWhaMlZBUUZsQgpVRUZWUTBkTVlYbGxja0JBV0ZwQU5GQkJW
VEpBUVFBL2JXVmthV0ZRUkVaUWJHRjVRblYwZEc5dVNXMWhaMlZBUUZsQlVFRlZRMGRNCllYbGxj
a0JBV0ZvQVAybHRZV2RsUUQ4eFB6OXRaV1JwWVZCRVJsQnNZWGxDZFhSMGIyNUpiV0ZuWlVCQVdV
RlFRVlZEUjB4aGVXVnkKUUVCWVdrQTBVRUZWTWtCQkFEOGtVelZBUHpFL1AyMWxaR2xoVUVSR1VH
eGhlVUoxZEhSdmJrbHRZV2RsUUVCWlFWQkJWVU5IVEdGNQpaWEpBUUZoYVFEUkpRUUEvWTNKbFlY
UmxUV1ZrYVdGUVJFWkZiblJsY2taMWJHeHpZM0psWlc1SmJXRm5aVUJBV1VGUVFWVkRSMHhoCmVX
VnlRRUJZV2dBL2FXMWhaMlZBUHpFL1AyTnlaV0YwWlUxbFpHbGhVRVJHUlc1MFpYSkdkV3hzYzJO
eVpXVnVTVzFoWjJWQVFGbEIKVUVGVlEwZE1ZWGxsY2tCQVdGcEFORkJCVlRKQVFRQS9iV1ZrYVdG
UVJFWkZiblJsY2taMWJHeHpZM0psWlc1SmJXRm5aVUJBV1VGUQpRVlZEUjB4aGVXVnlRRUJZV2dB
L2FXMWhaMlZBUHpFL1AyMWxaR2xoVUVSR1JXNTBaWEpHZFd4c2MyTnlaV1Z1U1cxaFoyVkFRRmxC
ClVFRlZRMGRNWVhsbGNrQkFXRnBBTkZCQlZUSkFRUUEvSkZNMlFEOHhQejl0WldScFlWQkVSa1Z1
ZEdWeVJuVnNiSE5qY21WbGJrbHQKWVdkbFFFQlpRVkJCVlVOSFRHRjVaWEpBUUZoYVFEUkpRUUEv
WTNKbFlYUmxUV1ZrYVdGUVJFWlRaV1ZyVkc5U1pXRnNkR2x0WlVsdApZV2RsUUVCWlFWQkJWVU5I
VEdGNVpYSkFRRmhhQUQ5cGJXRm5aVUEvTVQ4L1kzSmxZWFJsVFdWa2FXRlFSRVpUWldWclZHOVNa
V0ZzCmRHbHRaVWx0WVdkbFFFQlpRVkJCVlVOSFRHRjVaWEpBUUZoYVFEUlFRVlV5UUVFQVAyMWxa
R2xoVUVSR1UyVmxhMVJ2VW1WaGJIUnAKYldWSmJXRm5aVUJBV1VGUVFWVkRSMHhoZVdWeVFFQllX
Z0EvYVcxaFoyVkFQekUvUDIxbFpHbGhVRVJHVTJWbGExUnZVbVZoYkhScApiV1ZKYldGblpVQkFX
VUZRUVZWRFIweGhlV1Z5UUVCWVdrQTBVRUZWTWtCQkFEOGtVemRBUHpFL1AyMWxaR2xoVUVSR1Uy
VmxhMVJ2ClVtVmhiSFJwYldWSmJXRm5aVUJBV1VGUVFWVkRSMHhoZVdWeVFFQllXa0EwU1VFQVAy
TnlaV0YwWlUxbFpHbGhVRVJHVW1WMGNtVmgKZERNd1NXMWhaMlZBUUZsQlVFRlZRMGRNWVhsbGNr
QkFXRm9BUDJsdFlXZGxRRDh4UHo5amNtVmhkR1ZOWldScFlWQkVSbEpsZEhKbApZWFF6TUVsdFlX
ZGxRRUJaUVZCQlZVTkhUR0Y1WlhKQVFGaGFRRFJRUVZVeVFFRUFQMjFsWkdsaFVFUkdVbVYwY21W
aGRETXdTVzFoCloyVkFRRmxCVUVGVlEwZE1ZWGxsY2tCQVdGb0FQMmx0WVdkbFFEOHhQejl0WldS
cFlWQkVSbEpsZEhKbFlYUXpNRWx0WVdkbFFFQloKUVZCQlZVTkhUR0Y1WlhKQVFGaGFRRFJRUVZV
eVFFRUFQeVJUT0VBL01UOC9iV1ZrYVdGUVJFWlNaWFJ5WldGME16QkpiV0ZuWlVCQQpXVUZRUVZW
RFIweGhlV1Z5UUVCWVdrQTBTVUVBUDJsdFlXZGxRRTFsWkdsaFUyaGhjbVZrVlVsSmJXRm5aVVZz
WlcxbGJuUkFRRWxDClJWQkNXRmhhQUQ5amNtVmhkR1ZDWVdOclozSnZkVzVrU1cxaFoyVkFUV1Zr
YVdGVGFHRnlaV1JWU1VsdFlXZGxSV3hsYldWdWRFQkEKVlVGRlVFSllVRUZWUTBkRGIyNTBaWGgw
UUVCVlEwZFNaV04wUUVCQVdnQmZYMmx0Y0Y5ZlEwWlNaWFJoYVc0QVAyNWhkSFZ5WVd4VAphWHBs
UUUxbFpHbGhVMmhoY21Wa1ZVbEpiV0ZuWlVWc1pXMWxiblJBUUZWQ1JUOUJWVU5IVTJsNlpVQkFX
Rm9BUDJOeVpXRjBaVUpoClkydG5jbTkxYm1SSmJXRm5aVUJOWldScFlWTm9ZWEpsWkZWSlEwTkpi
V0ZuWlVWc1pXMWxiblJBUUZWQlJWQkNXRkJCVlVOSFEyOXUKZEdWNGRFQkFWVU5IVW1WamRFQkFR
Rm9BWDE5cGJYQmZYME5IUTI5dWRHVjRkRUpsWjJsdVZISmhibk53WVhKbGJtTjVUR0Y1WlhJQQpQ
MkpzZFdWRGIyeHZja0EvTXo4L1kzSmxZWFJsUW1GamEyZHliM1Z1WkVsdFlXZGxRRTFsWkdsaFUy
aGhjbVZrVlVsRFEwbHRZV2RsClJXeGxiV1Z1ZEVCQVZVRkZVRUpZVUVGVlEwZERiMjUwWlhoMFFF
QlZRMGRTWldOMFFFQkFXa0EwVUVGVlEwZERiMnh2Y2tCQVFRQmYKWDJsdGNGOWZRMGREYjJ4dmNr
TnlaV0YwWlVkbGJtVnlhV05TUjBJQVgxOXlaV0ZzUURObE5HTmpZMk5rQUQ4a1V6RTBRRDh6UHo5
agpjbVZoZEdWQ1lXTnJaM0p2ZFc1a1NXMWhaMlZBVFdWa2FXRlRhR0Z5WldSVlNVTkRTVzFoWjJW
RmJHVnRaVzUwUUVCVlFVVlFRbGhRClFWVkRSME52Ym5SbGVIUkFRRlZEUjFKbFkzUkFRRUJhUURS
SlFRQS9QekJOWldScFlWTm9ZWEpsWkZWSlEwTkpiV0ZuWlVWc1pXMWwKYm5SQVFGRkJSVUJZV2dB
L1AxODNUV1ZrYVdGVGFHRnlaV1JWU1VORFNXMWhaMlZGYkdWdFpXNTBRRUEyUWtBQVB6OWZSMDFs
WkdsaApVMmhoY21Wa1ZVbERRMGx0WVdkbFJXeGxiV1Z1ZEVCQVZVRkZVRUZZU1VCYUFEOC9YMFZO
WldScFlWTm9ZWEpsWkZWSlEwTkpiV0ZuClpVVnNaVzFsYm5SQVFGVkJSVkJCV0VsQVdnQS9ZMjl1
YzNSeVlXbHVRWE53WldOMFVtRjBhVzlBVFdWa2FXRlRhR0Z5WldSVlNVTkQKU1cxaFoyVkZiR1Z0
Wlc1MFFFQlZRa1ZmVGxoYUFEOC9NVTFsWkdsaFUyaGhjbVZrVlVsRFEwbHRZV2RsUld4bGJXVnVk
RUJBVlVGRgpRRmhhQUQ4L1gwZE5aV1JwWVZOb1lYSmxaRlZKUTBOSmJXRm5aVVZzWlcxbGJuUkFR
RlZCUlZCQldFbEFXZ0EvUDE5SFRXVmthV0ZUCmFHRnlaV1JWU1VKaFkydG5jbTkxYm1SRmJHVnRa
VzUwUUVCVlFVVlFRVmhKUUZvQVB6OWZSMDFsWkdsaFUyaGhjbVZrVlVsV2IyeDEKYldWVGJHbGta
WEpDWVdOclozSnZkVzVrUld4bGJXVnVkRUJBVlVGRlVFRllTVUJhQUQ4L1gwZE5aV1JwWVZOb1lY
SmxaRlZKVkdsdApaV3hwYm1WVGJHbGtaWEpVYUhWdFlrVnNaVzFsYm5SQVFGVkJSVkJCV0VsQVdn
QS9QMTlIVFdWa2FXRlRhR0Z5WldSVlNWWnZiSFZ0ClpWTnNhV1JsY2tCQVZVRkZVRUZZU1VCYUFE
OC9YMGROWldScFlWTm9ZWEpsWkZWSlZtOXNkVzFsVTJ4cFpHVnlWR2gxYldKRmJHVnQKWlc1MFFF
QlZRVVZRUVZoSlFGb0FQejh3VFdWa2FXRlRhR0Z5WldSVlNWUnBiV1ZzYVc1bFUyeHBaR1Z5UUVC
UlFVVkFXRm9BUHo5ZgpOMDFsWkdsaFUyaGhjbVZrVlVsVWFXMWxiR2x1WlZOc2FXUmxja0JBTmtK
QUFEOC9YMGROWldScFlWTm9ZWEpsWkZWSlZHbHRaV3hwCmJtVlRiR2xrWlhKQVFGVkJSVkJCV0Vs
QVdnQS9QMTlGVFdWa2FXRlRhR0Z5WldSVlNWUnBiV1ZzYVc1bFUyeHBaR1Z5UUVCVlFVVlEKUVZo
SlFGb0FQejh4VFdWa2FXRlRhR0Z5WldSVlNWUnBiV1ZzYVc1bFUyeHBaR1Z5UUVCVlFVVkFXRm9B
UHo5ZlIwMWxaR2xoVTJoaApjbVZrVlVsVWFXMWxiR2x1WlZOc2FXUmxja0JBVlVGRlVFRllTVUJh
QUQ5amIyNTBjbTlzUm05eVVHRnlkRUJOWldScFlWTm9ZWEpsClpGVkpRMjl1ZEhKdmJITkFRRlZD
UlZCQlZrMWxaR2xoVlVsRmJHVnRaVzUwUUVCSVFGb0FQM1p2YkhWdFpWUm9kVzFpUUQ5TVFEOC8K
WTI5dWRISnZiRVp2Y2xCaGNuUkFUV1ZrYVdGVGFHRnlaV1JWU1VOdmJuUnliMnh6UUVCVlFrVlFR
VlpOWldScFlWVkpSV3hsYldWdQpkRUJBU0VCYVFEUlFRVlpOWldScFlWTm9ZWEpsWkZWSlZtOXNk
VzFsVTJ4cFpHVnlWR2gxYldKRmJHVnRaVzUwUUVCQkFEOXpiR2xrClpYSkFQemsvUDJOdmJuUnli
MnhHYjNKUVlYSjBRRTFsWkdsaFUyaGhjbVZrVlVsRGIyNTBjbTlzYzBCQVZVSkZVRUZXVFdWa2FX
RlYKU1VWc1pXMWxiblJBUUVoQVdrQTBVRUZXVFdWa2FXRlRhR0Z5WldSVlNWWnZiSFZ0WlZOc2FX
Umxja0JBUVFBL2RHbHRaV3hwYm1WVQphSFZ0WWtBL09EOC9ZMjl1ZEhKdmJFWnZjbEJoY25SQVRX
VmthV0ZUYUdGeVpXUlZTVU52Ym5SeWIyeHpRRUJWUWtWUVFWWk5aV1JwCllWVkpSV3hsYldWdWRF
QkFTRUJhUURSUVFWWk5aV1JwWVZOb1lYSmxaRlZKVkdsdFpXeHBibVZUYkdsa1pYSlVhSFZ0WWtW
c1pXMWwKYm5SQVFFRUFQM1p2YkhWdFpWTnNhV1JsY2tKaFkydG5jbTkxYm1SQVB6Yy9QMk52Ym5S
eWIyeEdiM0pRWVhKMFFFMWxaR2xoVTJoaApjbVZrVlVsRGIyNTBjbTlzYzBCQVZVSkZVRUZXVFdW
a2FXRlZTVVZzWlcxbGJuUkFRRWhBV2tBMFVFRldUV1ZrYVdGVGFHRnlaV1JWClNWWnZiSFZ0WlZO
c2FXUmxja0poWTJ0bmNtOTFibVJGYkdWdFpXNTBRRUJCQUQ5aVlXTnJaM0p2ZFc1a1FEODJQejlq
YjI1MGNtOXMKUm05eVVHRnlkRUJOWldScFlWTm9ZWEpsWkZWSlEyOXVkSEp2YkhOQVFGVkNSVkJC
VmsxbFpHbGhWVWxGYkdWdFpXNTBRRUJJUUZwQQpORkJCVmsxbFpHbGhVMmhoY21Wa1ZVbENZV05y
WjNKdmRXNWtSV3hsYldWdWRFQkFRUUEvWTJGd2RHbHZibk5DZFhSMGIyNUFQelUvClAyTnZiblJ5
YjJ4R2IzSlFZWEowUUUxbFpHbGhVMmhoY21Wa1ZVbERiMjUwY205c2MwQkFWVUpGVUVGV1RXVmth
V0ZWU1VWc1pXMWwKYm5SQVFFaEFXa0EwVUVGV1RXVmthV0ZUYUdGeVpXUlZTVU5EU1cxaFoyVkZi
R1Z0Wlc1MFFFQkJBRDluWlc1bGNtbGpRblYwZEc5dQpRRDgwUHo5amIyNTBjbTlzUm05eVVHRnlk
RUJOWldScFlWTm9ZWEpsWkZWSlEyOXVkSEp2YkhOQVFGVkNSVkJCVmsxbFpHbGhWVWxGCmJHVnRa
VzUwUUVCSVFGcEFORkJCVmsxbFpHbGhVMmhoY21Wa1ZVbEpiV0ZuWlVWc1pXMWxiblJBUUVFQVB6
OHlRRmxCVUVGWVNVQmEKQUQ4a1V6SXlRRDgwUHo5amIyNTBjbTlzUm05eVVHRnlkRUJOWldScFlW
Tm9ZWEpsWkZWSlEyOXVkSEp2YkhOQVFGVkNSVkJCVmsxbApaR2xoVlVsRmJHVnRaVzUwUUVCSVFG
cEFORWxCQUQ5emJHbGtaWEpBVFdWa2FXRlRhR0Z5WldSVlNVTnZiblJ5YjJ4elFFQlZRa1ZRClFW
Wk5aV1JwWVZWSlZHbHRaV3hwYm1WVGJHbGtaWEpBUUZoYUFEOXphR0Z5WldSVGJHbGtaWEpBUHpF
L1AzTnNhV1JsY2tCTlpXUnAKWVZOb1lYSmxaRlZKUTI5dWRISnZiSE5BUUZWQ1JWQkJWazFsWkds
aFZVbFVhVzFsYkdsdVpWTnNhV1JsY2tCQVdGcEFORkJCVmsxbApaR2xoVTJoaGNtVmtWVWxVYVcx
bGJHbHVaVk5zYVdSbGNrQkFRUUEvSkZNeU0wQS9NVDgvYzJ4cFpHVnlRRTFsWkdsaFUyaGhjbVZr
ClZVbERiMjUwY205c2MwQkFWVUpGVUVGV1RXVmthV0ZWU1ZScGJXVnNhVzVsVTJ4cFpHVnlRRUJZ
V2tBMFNVRUFDaTh4TnpJZ0lDQWcKSUNBZ0lDQWdJQ0F4TWpreU1EQXpPVGMySUNBZ0lDQWdJQ0Fn
SUNBZ0lDQXhNREEyTmpZZ0lESTJNVFl3SUNBZ0lDQmdDa3dCUWdDSQphZ0pORjA4QUFNVUFBQUFB
QUFBQUxtUnlaV04wZG1VQUFBQUFBQUFBQU1NQUFBQmtDZ0FBQUFBQUFBQUFBQUFBQUFBQUFBb1FB
QzVrClpXSjFaeVJUQUFBQUFBQUFBQUQ0SFFBQUp3c0FBQjhwQUFBQUFBQUFBZ0FBQUVBQUVFSXVj
bVJoZEdFQUFBQUFBQUFBQUFBQUJBQUEKQURNcEFBQUFBQUFBQUFBQUFBQUFBQUJBRURCQUxuSmtZ
WFJoQUFBQUFBQUFBQUFBQUFRQUFBQTNLUUFBQUFBQUFBQUFBQUFBQUFBQQpRQkF3UUM1eVpHRjBZ
UUFBQUFBQUFBQUFBQUFFQUFBQU95a0FBQUFBQUFBQUFBQUFBQUFBQUVBUU1FQXVjbVJoZEdFQUFB
QUFBQUFBCkFBQUFCQUFBQUQ4cEFBQUFBQUFBQUFBQUFBQUFBQUJBRURCQUxuSmtZWFJoQUFBQUFB
QUFBQUFBQUFRQUFBQkRLUUFBQUFBQUFBQUEKQUFBQUFBQUFRQkF3UUM1eVpHRjBZUUFBQUFBQUFB
QUFBQUFFQUFBQVJ5a0FBQUFBQUFBQUFBQUFBQUFBQUVBUU1FQXVjbVJoZEdFQQpBQUFBQUFBQUFB
QUFCQUFBQUVzcEFBQUFBQUFBQUFBQUFBQUFBQUJBRURCQUxuUmxlSFFBQUFBQUFBQUFBQUFBQUFv
QUFBQlBLUUFBCkFBQUFBQUFBQUFBQUFBQUFJQkJRWUM1a1pXSjFaeVJUQUFBQUFBQUFBQURrQUFB
QVdTa0FBRDBxQUFBQUFBQUFCUUFBQUVBUUVFSXUKZEdWNGRBQUFBQUFBQUFBQUFBQUFDZ0FBQUc4
cUFBQUFBQUFBQUFBQUFBQUFBQUFnRUZCZ0xtUmxZblZuSkZNQUFBQUFBQUFBQVBBQQpBQUI1S2dB
QWFTc0FBQUFBQUFBRkFBQUFRQkFRUWk1MFpYaDBBQUFBQUFBQUFBQUFBQUFLQUFBQW15c0FBQUFB
QUFBQUFBQUFBQUFBCkFDQVFVR0F1WkdWaWRXY2tVd0FBQUFBQUFBQUE4QUFBQUtVckFBQ1ZMQUFB
QUFBQUFBVUFBQUJBRUJCQ0xuUmxlSFFBQUFBQUFBQUEKQUFBQUFBY0FBQURITEFBQXppd0FBQUFB
QUFBQkFBQUFJQkJRWUM1a1pXSjFaeVJUQUFBQUFBQUFBQURZQUFBQTJDd0FBTEF0QUFBQQpBQUFB
QlFBQUFFQVFFRUl1Y21SaGRHRUFBQUFBQUFBQUFBQUFIQUFBQU9JdEFBRCtMUUFBQUFBQUFBY0FB
QUJBRURCQUxuUmxlSFFBCkFBQUFBQUFBQUFBQUFCOEFBQUJFTGdBQVl5NEFBQUFBQUFBQ0FBQUFJ
QkJRWUM1a1pXSjFaeVJUQUFBQUFBQUFBQURjQUFBQWR5NEEKQUZNdkFBQUFBQUFBQXdBQUFFQVFF
RUl1ZEdWNGRBQUFBQUFBQUFBQUFBQUFDUUFBQUhFdkFBQjZMd0FBQUFBQUFBRUFBQUFnRUZCZwpM
bVJsWW5WbkpGTUFBQUFBQUFBQUFMQUFBQUNFTHdBQU5EQUFBQUFBQUFBREFBQUFRQkFRUWk1MFpY
aDBBQUFBQUFBQUFBQUFBQUNZCkFBQUFVakFBQU9vd0FBQUFBQUFBQmdBQUFDQVFVR0F1WkdWaWRX
Y2tVd0FBQUFBQUFBQUF1QUVBQUNZeEFBRGVNZ0FBQUFBQUFBOEEKQUFCQUVCQkNMbkprWVhSaEFB
QUFBQUFBQUFBQUFBUUFBQUIwTXdBQUFBQUFBQUFBQUFBQUFBQUFRQkF3UUM1eVpHRjBZUUFBQUFB
QQpBQUFBQUFBRUFBQUFlRE1BQUFBQUFBQUFBQUFBQUFBQUFFQVFNRUF1Y21SaGRHRUFBQUFBQUFB
QUFBQUFCQUFBQUh3ekFBQUFBQUFBCkFBQUFBQUFBQUFCQUVEQkFMblJsZUhRQUFBQUFBQUFBQUFB
QUFBOEFBQUNBTXdBQWp6TUFBQUFBQUFBQkFBQUFJQkJRWUM1a1pXSjEKWnlSVEFBQUFBQUFBQUFB
WUFRQUFtVE1BQUxFMEFBQUFBQUFBQndBQUFFQVFFRUl1ZEdWNGRBQUFBQUFBQUFBQUFBQUFTZ0FB
QVBjMApBQUFBQUFBQUFBQUFBQUFBQUFBZ0VGQmdMbVJsWW5WbkpGTUFBQUFBQUFBQUFHUUJBQUJC
TlFBQXBUWUFBQUFBQUFBSkFBQUFRQkFRClFpNTBaWGgwQUFBQUFBQUFBQUFBQUFCT0FBQUEvellB
QUFBQUFBQUFBQUFBQUFBQUFDQVFVR0F1WkdWaWRXY2tVd0FBQUFBQUFBQUEKWEFFQUFFMDNBQUNw
T0FBQUFBQUFBQWtBQUFCQUVCQkNMblJsZUhRQUFBQUFBQUFBQUFBQUFEd0FBQUFET1FBQVB6a0FB
QUFBQUFBQgpBQUFBSUJCUVlDNWtaV0oxWnlSVEFBQUFBQUFBQUFCWUFRQUFTVGtBQUtFNkFBQUFB
QUFBQ1FBQUFFQVFFRUl1ZEdWNGRBQUFBQUFBCkFBQUFBQUFBVHdBQUFQczZBQUFBQUFBQUFBQUFB
QUFBQUFBZ0VGQmdMbVJsWW5WbkpGTUFBQUFBQUFBQUFJUUJBQUJLT3dBQXpqd0EKQUFBQUFBQUpB
QUFBUUJBUVFpNTBaWGgwQUFBQUFBQUFBQUFBQUFBSkFBQUFLRDBBQURFOUFBQUFBQUFBQVFBQUFD
QVFVR0F1WkdWaQpkV2NrVXdBQUFBQUFBQUFBdkFBQUFEczlBQUQzUFFBQUFBQUFBQU1BQUFCQUVC
QkNMbkprWVhSaEFBQUFBQUFBQUFBQUFCd0FBQUFWClBnQUFNVDRBQUFBQUFBQUhBQUFBUUJBd1FD
NTBaWGgwQUFBQUFBQUFBQUFBQUFBSEFBQUFkejRBQUg0K0FBQUFBQUFBQVFBQUFDQVEKVUdBdVpH
VmlkV2NrVXdBQUFBQUFBQUFBdkFBQUFJZytBQUJFUHdBQUFBQUFBQU1BQUFCQUVCQkNMblJsZUhR
QUFBQUFBQUFBQUFBQQpBQWtBQUFCaVB3QUFhejhBQUFBQUFBQUJBQUFBSUJCUVlDNWtaV0oxWnlS
VEFBQUFBQUFBQUFEQUFBQUFkVDhBQURWQUFBQUFBQUFBCkF3QUFBRUFRRUVJdWNtUmhkR0VBQUFB
QUFBQUFBQUFBSEFBQUFGTkFBQUJ2UUFBQUFBQUFBQWNBQUFCQUVEQkFMblJsZUhRQUFBQUEKQUFB
QUFBQUFBQWNBQUFDMVFBQUF2RUFBQUFBQUFBQUJBQUFBSUJCUVlDNWtaV0oxWnlSVEFBQUFBQUFB
QUFEQUFBQUF4a0FBQUlaQgpBQUFBQUFBQUF3QUFBRUFRRUVJdWRHVjRkQUFBQUFBQUFBQUFBQUFB
SHdBQUFLUkJBQUREUVFBQUFBQUFBQUlBQUFBZ0VGQmdMbVJsClluVm5KRk1BQUFBQUFBQUFBT1FB
QUFEWFFRQUF1MElBQUFBQUFBQURBQUFBUUJBUVFpNTBaWGgwQUFBQUFBQUFBQUFBQUFBZkFBQUEK
MlVJQUFQaENBQUFBQUFBQUFnQUFBQ0FRVUdBdVpHVmlkV2NrVXdBQUFBQUFBQUFBNUFBQUFBeERB
QUR3UXdBQUFBQUFBQU1BQUFCQQpFQkJDTG5SbGVIUUFBQUFBQUFBQUFBQUFBSVVBQUFBT1JBQUFr
MFFBQUFBQUFBQU9BQUFBSUJCUVlDNWtaV0oxWnlSVEFBQUFBQUFBCkFBQjhBUUFBSDBVQUFKdEdB
QUFBQUFBQUNRQUFBRUFRRUVJdVluTnpBQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUFBQUFBQUFB
QUEKQUFBQUFBQ0FFRERBTG1KemN3QUFBQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBZ0JBd3dDNWljM01BQUFBQQpBQUFBQUFBQUFBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBSUFRTU1BdWRHVjRkQUFBQUFBQUFBQUFBQUFBTndBQUFQVkdBQUFzClJ3QUFBQUFBQUFFQUFB
QWdFRkJnTG1SbFluVm5KRk1BQUFBQUFBQUFBRndCQUFBMlJ3QUFra2dBQUFBQUFBQUhBQUFBUUJB
UVFpNTAKWlhoMEFBQUFBQUFBQUFBQUFBQkVBQUFBMkVnQUFCeEpBQUFBQUFBQUFRQUFBQ0FRVUdB
dVpHVmlkV2NrVXdBQUFBQUFBQUFBTUFFQQpBQ1pKQUFCV1NnQUFBQUFBQUFjQUFBQkFFQkJDTG5S
bGVIUUFBQUFBQUFBQUFBQUFBRVFBQUFDY1NnQUE0RW9BQUFBQUFBQUJBQUFBCklCQlFZQzVrWldK
MVp5UlRBQUFBQUFBQUFBQThBUUFBNmtvQUFDWk1BQUFBQUFBQUJ3QUFBRUFRRUVJdWRHVjRkQUFB
QUFBQUFBQUEKQUFBQVR3QUFBR3hNQUFDN1RBQUFBQUFBQUFFQUFBQWdFRkJnTG1SbFluVm5KRk1B
QUFBQUFBQUFBSFFCQUFERlRBQUFPVTRBQUFBQQpBQUFIQUFBQVFCQVFRaTVrWldKMVp5UlRBQUFB
QUFBQUFBQWdBQUFBZjA0QUFKOU9BQUFBQUFBQUFnQUFBRUFRRUVJdVpHVmlkV2NrClZBQUFBQUFB
QUFBQVpBQUFBTE5PQUFBQUFBQUFBQUFBQUFBQUFBQkFBQkJDSUNBZ0wyMWhibWxtWlhOMFpHVnda
VzVrWlc1amVUb2kKZEhsd1pUMG5kMmx1TXpJbklHNWhiV1U5SjAxcFkzSnZjMjltZEM1V1F6Z3dM
a05TVkNjZ2RtVnljMmx2Ymowbk9DNHdMalV3TnpJMwpMalF3TlRNbklIQnliMk5sYzNOdmNrRnlZ
MmhwZEdWamRIVnlaVDBuZURnMkp5QndkV0pzYVdOTFpYbFViMnRsYmowbk1XWmpPR0l6CllqbGhN
V1V4T0dVellpY2lJQzlFUlVaQlZVeFVURWxDT2lKTlUxWkRVbFFpSUM5RVJVWkJWVXhVVEVsQ09p
SlBURVJPUVUxRlV5SWcKQkFBQUFQRUFBQUNEQndBQVZ3QUJFUUFBQUFCRE9seGplV2QzYVc1Y2FH
OXRaVnhqYldGeWNtbHVYRmRsWWt0cGRFSjFhV3hrWEc5aQphbHhYWldKTGFYUlRlWE4wWlcxSmJu
UmxjbVpoWTJWY1VtVnNaV0Z6WlZ4TlpXUnBZVlZKTG05aWFnQW9CeFlSQVNBQUFBY0FEZ0FBCkFD
ZkdEZ0FBQUNmR1RXbGpjbTl6YjJaMElDaFNLU0JQY0hScGJXbDZhVzVuSUVOdmJYQnBiR1Z5QUdO
M1pBQmpPbHhqZVdkM2FXNWMKYUc5dFpWeGpiV0Z5Y21sdVhITnZkWEpqWlZ4emRtNWNWMlZpUzJs
MFhFbHVkR1Z5Ym1Gc1hGZGxZa3RwZEZONWMzUmxiVWx1ZEdWeQpabUZqWlZ4M2FXNEFZMndBUXpw
Y1VISnZaM0poYlNCR2FXeGxjeUFvZURnMktWeE5hV055YjNOdlpuUWdWbWx6ZFdGc0lGTjBkV1Jw
CmJ5QTRYRlpEWEdKcGJseGpiQzVsZUdVQVkyMWtBQzFQTWlBdFNVTTZYR041WjNkcGJseG9iMjFs
WEdOdFlYSnlhVzVjVjJWaVMybDAKUW5WcGJHUmNTVzVqYkhWa1pTQXRTVU02WEVGd2NHeGxTVzUw
WlhKdVlXeGNTVzVqYkhWa1pTQXRTVU02WEVGd2NHeGxTVzUwWlhKdQpZV3hjU1c1amJIVmtaVnhE
YjNKbFJtOTFibVJoZEdsdmJseFBVMWhEYjIxd1lYUnBZbWxzYVhSNVNHVmhaR1Z5Y3lBdFNVTTZY
RUZ3CmNHeGxTVzUwWlhKdVlXeGNTVzVqYkhWa1pWeERiM0psUm05MWJtUmhkR2x2Ymx4UFUxaERi
MjF3WVhScFltbHNhWFI1U0dWaFpHVnkKYzF4SFRsVkRiMjF3WVhScFltbHNhWFI1SUMxSlF6cGNZ
M2xuZDJsdVhHaHZiV1ZjWTIxaGNuSnBibHhYWldKTGFYUkNkV2xzWkZ4dgpZbXBjVjJWaVMybDBV
M2x6ZEdWdFNXNTBaWEptWVdObFhFUmxjbWwyWldSVGIzVnlZMlZ6SUMxSll6cGNZM2xuZDJsdVhH
aHZiV1ZjClkyMWhjbkpwYmx4emIzVnlZMlZjYzNadVhGZGxZa3RwZEZ4SmJuUmxjbTVoYkZ4WFpX
SkxhWFJUZVhOMFpXMUpiblJsY21aaFkyVWcKTFVSZlgxZEpUak15WDE4Z0xVUmZURWxDSUMxRVRr
UkZRbFZISUMxRVYwbE9NeklnTFVSZlYwbE9SRTlYVXlBdFJGZEpUbFpGVWowdwplRFV3TVNBdFJG
OVhTVTR6TWw5WFNVNU9WRDB3ZURVd01TQXRSRjlYU1U0ek1sOUpSVDB3ZURZd01DQXRSRjlEVWxS
ZlUwVkRWVkpGClgwTlFVRjlQVmtWU1RFOUJSRjlUVkVGT1JFRlNSRjlPUVUxRlV6MHhJQzFFWDE5
UVVrOUVWVU5VU1U5T1gxODlNQ0F0UkY5SVFWTmYKUlZoRFJWQlVTVTlPVXowd0lDMUVRbFZKVEVS
SlRrZGZWMlZpUzJsMFUzbHpkR1Z0U1c1MFpYSm1ZV05sSUMxRVgxVk9TVU5QUkVVZwpMVVJWVGts
RFQwUkZJQzFHUkNBdFRVUWdMVWRTTFNBdFJtOURPbHhqZVdkM2FXNWNhRzl0WlZ4amJXRnljbWx1
WEZkbFlrdHBkRUoxCmFXeGtYRzlpYWx4WFpXSkxhWFJUZVhOMFpXMUpiblJsY21aaFkyVmNVbVZz
WldGelpWd2dMVVprUXpwY1kzbG5kMmx1WEdodmJXVmMKWTIxaGNuSnBibHhYWldKTGFYUkNkV2xz
WkZ4c2FXSmNWMlZpUzJsMFUzbHpkR1Z0U1c1MFpYSm1ZV05sTG5aak9EQXVjR1JpSUMxWApOQ0F0
VjFnZ0xXTWdMVnBwSUMxVVVDQXRkMlEwTURFNElDMTNaRFF3TmpnZ0xYZGtOREE1T1NBdGQyUTBN
VEF3SUMxM1pEUXhNamNnCkxYZGtOREV6T0NBdGQyUTBNVGd3SUMxM1pEUXhPRGtnTFhka05ESXdN
U0F0ZDJRME1qUTBJQzEzWkRReU5URWdMWGRrTkRJM05TQXQKZDJRME1qZzRJQzEzWkRReU9URWdM
WGRrTkRNd05TQXRkMlEwTXpRMElDMTNaRFF6TlRVZ0xYZGtORE00T1NBdGQyUTBOVEF6SUMxMwpa
RFExTURVZ0xYZGtORFV4TUNBdGQyUTBOVEV5SUMxM1pEUTJNVEFnTFhka05EY3dOaUF0ZDJRME9E
QXdJQzEzWkRRNU5URWdMWGRrCk5EazFNaUF0ZDJRME9UazJJQzEzWkRZd01URWdMWGRrTmpBek1T
QXRkMlEyTWpFeElDMTNaRFl5TkRZZ0xYZGtOakkxTlNBdGQyUTIKTXpnM0lDMUhVeUF0Ym05c2Iy
ZHZJQzFsY25KdmNuSmxjRzl5ZERweGRXVjFaU0F0U1NKRE9seFFjbTluY21GdElFWnBiR1Z6SUNo
NApPRFlwWEUxcFkzSnZjMjltZENCRWFYSmxZM1JZSUZORVN5QW9RWFZuZFhOMElESXdNRGtwWEVs
dVkyeDFaR1VpSUMxSklrTTZYRkJ5CmIyZHlZVzBnUm1sc1pYTWdLSGc0TmlsY1RXbGpjbTl6YjJa
MElGWnBjM1ZoYkNCVGRIVmthVzhnT0Z4V1ExeHBibU5zZFdSbElpQXQKU1NKRE9seFFjbTluY21G
dElFWnBiR1Z6SUNoNE9EWXBYRTFwWTNKdmMyOW1kQ0JXYVhOMVlXd2dVM1IxWkdsdklEaGNWa05j
WVhScwpiV1pqWEdsdVkyeDFaR1VpSUMxSklrTTZYRkJ5YjJkeVlXMGdSbWxzWlhNZ0tIZzROaWxj
VFdsamNtOXpiMlowSUZacGMzVmhiQ0JUCmRIVmthVzhnT0Z4V1ExeFFiR0YwWm05eWJWTkVTMXhw
Ym1Oc2RXUmxJaUF0U1NKRE9seFFjbTluY21GdElFWnBiR1Z6SUNoNE9EWXAKWEUxcFkzSnZjMjlt
ZENCV2FYTjFZV3dnVTNSMVpHbHZJRGhjVmtOY1VHeGhkR1p2Y20xVFJFdGNZMjl0Ylc5dVhHbHVZ
MngxWkdVaQpJQzFKSWtNNlhGQnliMmR5WVcwZ1JtbHNaWE1nS0hnNE5pbGNUV2xqY205emIyWjBJ
RlpwYzNWaGJDQlRkSFZrYVc4Z09GeFRSRXRjCmRqSXVNRnhwYm1Oc2RXUmxJaUF0V0FCemNtTUFM
aTVjVFdWa2FXRlZTUzVqY0hBQWNHUmlBRU02WEdONVozZHBibHhvYjIxbFhHTnQKWVhKeWFXNWNW
MlZpUzJsMFFuVnBiR1JjYkdsaVhGZGxZa3RwZEZONWMzUmxiVWx1ZEdWeVptRmpaUzUyWXpnd0xu
QmtZZ0FBQVBFQQpBQUFYQlFBQUdnQUhFWTBTQUFBQ2dQNy9hME5IUm05dWRFbHVaR1Y0VFdGNEFC
WUFCeEdORWdBQUFvRCsvMnREUjBkc2VYQm9UV0Y0CkFDWUFCeEhyRndBQUFRQlhTMDFsWkdsaFEy
OXVkSEp2Ykd4bGNsUm9aVzFsUTJ4aGMzTnBZd0FvQUFjUjZ4Y0FBQUlBVjB0TlpXUnAKWVVOdmJu
UnliMnhzWlhKVWFHVnRaVkYxYVdOclZHbHRaUUFtQUFjUk1oQUFBQUVBVjB0TlpXUnBZVU52Ym5S
eWIyeHNaWEpHYkdGbgpSR2x6WVdKc1pXUUFKUUFIRVRJUUFBQUNBRmRMVFdWa2FXRkRiMjUwY205
c2JHVnlSbXhoWjFCeVpYTnpaV1FBSlFBSEVUSVFBQUFRCkFGZExUV1ZrYVdGRGIyNTBjbTlzYkdW
eVJteGhaMFp2WTNWelpXUUFIUUFORVFzUUFBQUFBQUFBQUFCZmFXMXdYMTlEUjFOcGVtVmEKWlhK
dkFDSUFDQkdkRUFBQVRXVmthV0ZNWldkaFkzbFZTVlJwYldWc2FXNWxVMnhwWkdWeUFBMEFDQkYx
QUFBQVZVbHVkRE15QUM0QQpDQkVxRndBQVRXVmthV0ZUYUdGeVpXUlZTVlJwYldWc2FXNWxVMnhw
WkdWeVZHaDFiV0pGYkdWdFpXNTBBQ0lBQ0JIMUZnQUFUV1ZrCmFXRlRhR0Z5WldSVlNVTkRTVzFo
WjJWRmJHVnRaVzUwQUFzQUNCRVFBQUFBUWs5UFRBQVNBQWdSRmhBQUFFTkdVM1J5YVc1blVtVm0K
QUJBQUNCRnVFUUFBUTBaVWVYQmxVbVZtQUE0QUNCRkFBQUFBUTBkR2JHOWhkQUFUQUFnUktSQUFB
RU5IUTI5dWRHVjRkRkpsWmdBcwpBQWdSVGhjQUFFMWxaR2xoVTJoaGNtVmtWVWxXYjJ4MWJXVlRi
R2xrWlhKVWFIVnRZa1ZzWlcxbGJuUUFEZ0FJRVFnUUFBQkRSMUJ2CmFXNTBBQTRBQ0JFRkVBQUFR
MFpTWVc1blpRQWNBQWdSWGhjQUFFMWxaR2xoVTJoaGNtVmtWVWxEYjI1MGNtOXNjd0FSQUFnUmdC
QUEKQUVOSFNXMWhaMlZTWldZQUhBQUlFVnNRQUFCTlpXUnBZVlZKVkdsdFpXeHBibVZUYkdsa1pY
SUFJQUFJRVlzUUFBQk5aV1JwWVV4bApaMkZqZVZWSlNXMWhaMlZGYkdWdFpXNTBBQ0FBQ0JFOEZ3
QUFUV1ZrYVdGVGFHRnlaV1JWU1ZadmJIVnRaVk5zYVdSbGNnQWFBQWdSCnJSQUFBRTFsWkdsaFRH
Vm5ZV041UTI5dWRISnZiSE1BTVFBSUVRWVhBQUJOWldScFlWTm9ZWEpsWkZWSlZtOXNkVzFsVTJ4
cFpHVnkKUW1GamEyZHliM1Z1WkVWc1pXMWxiblFBRGdBSUVSSUFBQUJEUmtsdVpHVjRBQ0lBQ0JF
WUZ3QUFUV1ZrYVdGVGFHRnlaV1JWU1ZScApiV1ZzYVc1bFUyeHBaR1Z5QUJzQUNCRWFFQUFBUTBa
VGRISnBibWRKYm14cGJtVkNkV1ptWlhJQUVBQUlFWFVBQUFCVlZFWXpNa05vCllYSUFGUUFJRVVZ
UUFBQk5aV1JwWVZWSlJXeGxiV1Z1ZEFBTkFBZ1JkUUFBQUhOcGVtVmZkQUFVQUFnUmRoQUFBRTFs
WkdsaFEyOXUKZEhKdmJITUFEZ0FJRVFVUUFBQkRSbEpoYm1kbEFCc0FDQkVhRUFBQVEwWlRkSEpw
Ym1kSmJteHBibVZDZFdabVpYSUFJZ0FJRWVzWApBQUJYUzAxbFpHbGhRMjl1ZEhKdmJHeGxjbFJv
WlcxbFUzUjViR1VBSWdBSUVUSVFBQUJYUzAxbFpHbGhRMjl1ZEhKdmJHeGxjbFJvClpXMWxVM1Jo
ZEdVQURRQUlFUXNRQUFCRFIxTnBlbVVBR0FBSUVSRVFBQUJEUjBGbVptbHVaVlJ5WVc1elptOXli
UUFpQUFnUk1oQUEKQUZkTFRXVmthV0ZEYjI1MGNtOXNiR1Z5VkdobGJXVlRkR0YwWlFBT0FBZ1JJ
UUFBQUZWdWFVTm9ZWElBRVFBSUViVVRBQUJEUjBOdgpiRzl5VW1WbUFDQUFDQkhsRmdBQVRXVmth
V0ZUYUdGeVpXUlZTVWx0WVdkbFJXeGxiV1Z1ZEFBMkFBZ1IzQllBQUUxbFpHbGhVMmhoCmNtVmtW
VWxKYldGblpVVnNaVzFsYm5RNk9rMWxaR2xoVlVsSmJXRm5aVVpwYkd4TmIyUmxBQTBBQ0JFT0VB
QUFRMGRTWldOMEFBRDAKQUFBQXlBUUFBQUVBQUFBUUFUTzVoekVEVmlybzFQSXZTOTlwS1k4QUFE
b0FBQUFRQWROd0ZvYldYaEpuWVdOZTdRellzN1FBQUdJQQpBQUFRQWVFanlSUUJ6RXR1YTRCUU1X
eFF6czRBQUpRQUFBQVFBWXlncUk4VEpiMWZldXZ3cGtFNjR0WUFBTVFBQUFBUUFhU0NYZ3YrCjZG
OW90UHBnOEkxbFdrRUFBUGNBQUFBUUFkWHZRbzFPTmRiZW5yYUNML2Q5WDhnQUFDa0JBQUFRQVVE
UzZST291b3B2ZkFiK21sMzYKOXV3QUFHTUJBQUFRQWJ5d2lMcitsanUxTXVuY2lWbWVzWE1BQUpZ
QkFBQVFBZXdqSVNUdGpTbVJ1RE9vR3J3cG1wSUFBTTBCQUFBUQpBV1JrRHQyR1VWSzB3UkszZW1K
R2Rjd0FBQ1VDQUFBUUFYR1p3RHgzVXQ0VnZvQzhrWWl3dkVBQUFGWUNBQUFRQVpVMG5EV2RvRXRR
CmdjOWwzNE5CYWV3QUFJUUNBQUFRQWUvZWJZSzVZSHpya1pkZjdvL0hLMW9BQUtZQ0FBQVFBUVJR
ZFBTWXE3Zjk3VkkwaGxUS1FVY0EKQVBvQ0FBQVFBVGNrZ3M0dUg3c3BvYTNMWS9sVkY2UUFBREFE
QUFBUUFRdUZKMkh4eTJhclk3Y0NxMjcyVGxrQUFHSURBQUFRQWJZbgpZa09GdFZMNkhDV0dGRmF6
eFdJQUFKRURBQUFRQWRTaFhNRXJCQ1BXVjVlb28vRXk3M0lBQUw4REFBQVFBUmpSc2hNc29IZWpZ
NnpMCm9QT0ZmWk1BQVBjREFBQVFBVEkrUVB1Vmd4Y3JaMFlPdE9ZRGhMd0FBRDhFQUFBUUFleDVU
QW02NkJFR2h5NGxVaUVTQnRjQUFISUUKQUFBUUFmWkVLMUtNQnpRUW96WkdjSTB3MWdvQUFLVUVB
QUFRQVJQeXp0U3JuWnZyR3BIYWxRTHB2R0FBQU5rRUFBQVFBYy85blRHYwpOZk5UYUY5N2lUNENs
dDhBQUI0RkFBQVFBUS94aXhraDNGemI1bTF6UU53a2Fxb0FBRTRGQUFBUUFhcFZvWGV4WE1YU01t
OHFlUGwrClNIVUFBSU1GQUFBUUFZU204SHA1SldNOUNvSCtHWUpOT0xzQUFNZ0ZBQUFRQVZnZERB
M0Iva1F4cTh2ODVXamlWbVlBQUNBR0FBQVEKQWV6cE9OQjRhS1BrT3dKYkxtMTJ6Y0FBQUZjR0FB
QVFBV0JQMi96ZEZRTG1NSDVXanFMM0MyMEFBSWNHQUFBUUFlWXRkai9WRkVJYwp1cFMvOHFaaUxu
d0FBTGNHQUFBUUFZVHFHOW9wSnJrN2ZRc3hieExoNGFZQUFPc0dBQUFRQWZiVFY1YUR1UFcwSGVv
bWE5MnA4ZVFBCkFCd0hBQUFRQWNZUVFHdFlDS3gxU0ZWVGs4THA0OGdBQUVzSEFBQVFBWmFuV2Q4
YnNJK3FzMHB2V1FGcmdFUUFBSThIQUFBUUFhd0cKeGMwa1pXZUNuZFhaRSsyNWwwY0FBTUlIQUFB
UUFmdWtYS2hweGM5T3BldXgwK25ybE84QUFBY0lBQUFRQVdjdk5EVkNFV21Rbm1JRgpxNU1kMk5j
QUFEc0lBQUFRQVlWVi94aGE2OUp5VDRUTHcvcEFlMmdBQUd3SUFBQVFBWTdlWmdZSnMxMHBqRGFt
Q3VJNHVaSUFBSjRJCkFBQVFBWEh6QmxFUCsveVErNFV1TmNmMkMzNEFBTkVJQUFBUUFiUHBhS3hT
YVNjRHJXYVl1bkhobTY4QUFDTUpBQUFRQWJzWWhIWHcKYmlmVjNqZlJNK2h5Q2xrQUFGVUpBQUFR
QWZtVmFLZmxwRFVrZnhZNzNyUlNCSmNBQUlRSkFBQVFBWGpISmdsZXBpc1plV3l5ZHlsWgpuWVVB
QUtjSkFBQVFBVm43alZOTjBoNFdCTUpZVG5lRDc5WUFBT3dKQUFBUUFlUGZwUG9nR2tOUE1oWWVm
MWMyem9nQUFCNEtBQUFRCkFYRWZWQ3h5NklzY2hEYXRuamR5K2hzQUFHUUtBQUFRQVQ2NGhtTVh4
SmZjV2MrOFNhb3pTaTBBQUtZS0FBQVFBUllSZWF6cHJ4R0MKdVFwYllDK2JVRElBQU8wS0FBQVFB
Y0QwOHRSdlJFbDNiUTBCNVQvM0JXTUFBUE1BQUFCdERBQUFBR002WEdGd2NHeGxhVzUwWlhKdQpZ
V3hjYVc1amJIVmtaVnhqYjNKbFptOTFibVJoZEdsdmJseGpabU5vWVhKaFkzUmxjbk5sZEM1b0FH
TTZYR0Z3Y0d4bGFXNTBaWEp1CllXeGNhVzVqYkhWa1pWeGhkbUZwYkdGaWFXeHBkSGt1YUFCak9s
eGhjSEJzWldsdWRHVnlibUZzWEdsdVkyeDFaR1ZjWTI5eVpXWnYKZFc1a1lYUnBiMjVjWTJabGNu
SnZjaTVvQUdNNlhHRndjR3hsYVc1MFpYSnVZV3hjYVc1amJIVmtaVnhoZG1GcGJHRmlhV3hwZEhs
cApiblJsY201aGJDNW9BR002WEdGd2NHeGxhVzUwWlhKdVlXeGNhVzVqYkhWa1pWeGpiM0psWm05
MWJtUmhkR2x2Ymx4alpuTjBjbWx1Clp5NW9BR002WEdGd2NHeGxhVzUwWlhKdVlXeGNhVzVqYkhW
a1pWeGpiM0psWm05MWJtUmhkR2x2Ymx4alptRnljbUY1TG1nQVl6cGMKWVhCd2JHVnBiblJsY201
aGJGeHBibU5zZFdSbFhHTnZjbVZuY21Gd2FHbGpjMXhqWjJGbVptbHVaWFJ5WVc1elptOXliUzVv
QUdNNgpYR0Z3Y0d4bGFXNTBaWEp1WVd4Y2FXNWpiSFZrWlZ4amIzSmxaM0poY0docFkzTmNZMmRu
Wlc5dFpYUnllUzVvQUdNNlhHRndjR3hsCmFXNTBaWEp1WVd4Y2FXNWpiSFZrWlZ4amIzSmxabTkx
Ym1SaGRHbHZibHhqWm1ScFkzUnBiMjVoY25rdWFBQmpPbHhqZVdkM2FXNWMKYUc5dFpWeGpiV0Z5
Y21sdVhITnZkWEpqWlZ4emRtNWNkMlZpYTJsMFhHbHVkR1Z5Ym1Gc1hIZGxZbXRwZEhONWMzUmxi
V2x1ZEdWeQpabUZqWlZ4emFHRnlaV1J0WldScFlYVnBMbWdBWXpwY1lYQndiR1ZwYm5SbGNtNWhi
RnhwYm1Oc2RXUmxYR052Y21WbWIzVnVaR0YwCmFXOXVYR05tWW1GelpTNW9BR002WEdGd2NHeGxh
VzUwWlhKdVlXeGNhVzVqYkhWa1pWeDBZWEpuWlhSamIyNWthWFJwYjI1aGJITXUKYUFCak9seGhj
SEJzWldsdWRHVnlibUZzWEdsdVkyeDFaR1ZjYzNSa2FXNTBMbWdBWXpwY1kzbG5kMmx1WEdodmJX
VmNZMjFoY25KcApibHh6YjNWeVkyVmNjM1p1WEhkbFltdHBkRnhwYm5SbGNtNWhiRngzWldKcmFY
UnplWE4wWlcxcGJuUmxjbVpoWTJWY2JXVmthV0YxCmFTNWpjSEFBWXpwY1lYQndiR1ZwYm5SbGNt
NWhiRnhwYm1Oc2RXUmxYR052Y21WbmNtRndhR2xqYzF4alozQmtabVJ2WTNWdFpXNTAKTG1nQVl6
cGNZWEJ3YkdWcGJuUmxjbTVoYkZ4cGJtTnNkV1JsWEdOdmNtVm5jbUZ3YUdsamMxeGpaM0JrWm5C
aFoyVXVhQUJqT2x4aApjSEJzWldsdWRHVnlibUZzWEdsdVkyeDFaR1ZjWTI5eVpXZHlZWEJvYVdO
elhHTm5jR0YwYUM1b0FHTTZYR0Z3Y0d4bGFXNTBaWEp1CllXeGNhVzVqYkhWa1pWeGhkbUZwYkdG
aWFXeHBkSGx0WVdOeWIzTXVhQUJqT2x4aGNIQnNaV2x1ZEdWeWJtRnNYR2x1WTJ4MVpHVmMKWTI5
eVpXZHlZWEJvYVdOelhHTm5jR1JtWkdsamRHbHZibUZ5ZVM1b0FHTTZYSEJ5YjJkeVlXMGdabWxz
WlhNZ0tIZzROaWxjYldsagpjbTl6YjJaMElIWnBjM1ZoYkNCemRIVmthVzhnT0Z4MlkxeHBibU5z
ZFdSbFhITjVjMXgwZVhCbGN5NW9BR002WEdGd2NHeGxhVzUwClpYSnVZV3hjYVc1amJIVmtaVnhq
YjNKbFozSmhjR2hwWTNOY1kyZHdaR1poY25KaGVTNW9BR002WEdGd2NHeGxhVzUwWlhKdVlXeGMK
YVc1amJIVmtaVnhqYjNKbFozSmhjR2hwWTNOY1kyZG5jbUZrYVdWdWRDNW9BR002WEdGd2NHeGxh
VzUwWlhKdVlXeGNhVzVqYkhWawpaVnhqYjNKbFozSmhjR2hwWTNOY1kyZHdaR1p2WW1wbFkzUXVh
QUJqT2x4d2NtOW5jbUZ0SUdacGJHVnpJQ2g0T0RZcFhHMXBZM0p2CmMyOW1kQ0IyYVhOMVlXd2dj
M1IxWkdsdklEaGNkbU5jYVc1amJIVmtaVnh6ZEdSaGNtY3VhQUJqT2x4aGNIQnNaV2x1ZEdWeWJt
RnMKWEdsdVkyeDFaR1ZjWTI5eVpXZHlZWEJvYVdOelhHTm5ZMjlzYjNJdWFBQmpPbHhoY0hCc1pX
bHVkR1Z5Ym1Gc1hHbHVZMngxWkdWYwpZMjl5WldkeVlYQm9hV056WEdOblkyOXNiM0p6Y0dGalpT
NW9BR002WEhCeWIyZHlZVzBnWm1sc1pYTWdLSGc0TmlsY2JXbGpjbTl6CmIyWjBJSFpwYzNWaGJD
QnpkSFZrYVc4Z09GeDJZMXhwYm1Oc2RXUmxYR0Z6YzJWeWRDNW9BR002WEdONVozZHBibHhvYjIx
bFhHTnQKWVhKeWFXNWNjMjkxY21ObFhITjJibHgzWldKcmFYUmNhVzUwWlhKdVlXeGNkMlZpYTJs
MGMzbHpkR1Z0YVc1MFpYSm1ZV05sWEd4bApaMkZqZVcxbFpHbGhkV2t1YUFCak9seGhjSEJzWlds
dWRHVnlibUZzWEdsdVkyeDFaR1ZjWTI5eVpXZHlZWEJvYVdOelhHTm5aR0YwCllYQnliM1pwWkdW
eUxtZ0FZenBjWVhCd2JHVnBiblJsY201aGJGeHBibU5zZFdSbFhHTnZjbVZuY21Gd2FHbGpjMXhq
WjJsdFlXZGwKTG1nQVl6cGNZWEJ3YkdWcGJuUmxjbTVoYkZ4cGJtTnNkV1JsWEdOdmNtVm1iM1Z1
WkdGMGFXOXVYR05tZFhKc0xtZ0FZenBjWVhCdwpiR1ZwYm5SbGNtNWhiRnhwYm1Oc2RXUmxYR052
Y21WbmNtRndhR2xqYzF4alozQmtabk4wY21WaGJTNW9BR002WEdGd2NHeGxhVzUwClpYSnVZV3hj
YVc1amJIVmtaVnhqYjNKbFptOTFibVJoZEdsdmJseGpabVJoZEdFdWFBQmpPbHhoY0hCc1pXbHVk
R1Z5Ym1Gc1hHbHUKWTJ4MVpHVmNZMjl5WldkeVlYQm9hV056WEdOblptOXVkQzVvQUdNNlhIQnli
MmR5WVcwZ1ptbHNaWE1nS0hnNE5pbGNiV2xqY205egpiMlowSUhacGMzVmhiQ0J6ZEhWa2FXOGdP
RngyWTF4cGJtTnNkV1JsWEdac2IyRjBMbWdBWXpwY1lYQndiR1ZwYm5SbGNtNWhiRnhwCmJtTnNk
V1JsWEdOdmNtVm1iM1Z1WkdGMGFXOXVYR05tYkc5allXeGxMbWdBWXpwY2NISnZaM0poYlNCbWFX
eGxjeUFvZURnMktWeHQKYVdOeWIzTnZablFnZG1semRXRnNJSE4wZFdScGJ5QTRYSFpqWEdsdVky
eDFaR1ZjWTNKMGQzSnVMbWdBWXpwY1lYQndiR1ZwYm5SbApjbTVoYkZ4cGJtTnNkV1JsWEdOdmNt
Vm5jbUZ3YUdsamMxeGpaM0JrWm5OMGNtbHVaeTVvQUdNNlhHRndjR3hsYVc1MFpYSnVZV3hjCmFX
NWpiSFZrWlZ4amIzSmxabTkxYm1SaGRHbHZibHhqWm1SaGRHVXVhQUJqT2x4aGNIQnNaV2x1ZEdW
eWJtRnNYR2x1WTJ4MVpHVmMKWTI5eVpXZHlZWEJvYVdOelhHTm5jMmhoWkdsdVp5NW9BR002WEdG
d2NHeGxhVzUwWlhKdVlXeGNhVzVqYkhWa1pWeGpiM0psWjNKaApjR2hwWTNOY1kyZG1kVzVqZEds
dmJpNW9BR002WEdONVozZHBibHhvYjIxbFhHTnRZWEp5YVc1Y2MyOTFjbU5sWEhOMmJseDNaV0py
CmFYUmNhVzUwWlhKdVlXeGNkMlZpYTJsMGMzbHpkR1Z0YVc1MFpYSm1ZV05sWEcxbFpHbGhkV2t1
YUFCak9seGhjSEJzWldsdWRHVnkKYm1Gc1hHbHVZMngxWkdWY1kyOXlaV2R5WVhCb2FXTnpYR05u
WTI5dWRHVjRkQzVvQUdNNlhHRndjR3hsYVc1MFpYSnVZV3hjYVc1agpiSFZrWlZ4amIzSmxaM0po
Y0docFkzTmNZMmRpWVhObExtZ0FZenBjWVhCd2JHVnBiblJsY201aGJGeHBibU5zZFdSbFhITjBa
R0p2CmIyd3VhQUJqT2x4d2NtOW5jbUZ0SUdacGJHVnpJQ2g0T0RZcFhHMXBZM0p2YzI5bWRDQjJh
WE4xWVd3Z2MzUjFaR2x2SURoY2RtTmMKYVc1amJIVmtaVnh6ZEdSa1pXWXVhQUJqT2x4aGNIQnNa
V2x1ZEdWeWJtRnNYR2x1WTJ4MVpHVmNZMjl5WldkeVlYQm9hV056WEdObgpjR0YwZEdWeWJpNW9B
R002WEhCeWIyZHlZVzBnWm1sc1pYTWdLSGc0TmlsY2JXbGpjbTl6YjJaMElIWnBjM1ZoYkNCemRI
VmthVzhnCk9GeDJZMXhwYm1Oc2RXUmxYR055ZEdSbFpuTXVhQUJqT2x4d2NtOW5jbUZ0SUdacGJH
VnpJQ2g0T0RZcFhHMXBZM0p2YzI5bWRDQjIKYVhOMVlXd2djM1IxWkdsdklEaGNkbU5jYVc1amJI
VmtaVnh6WVd3dWFBQmpPbHh3Y205bmNtRnRJR1pwYkdWeklDaDRPRFlwWEcxcApZM0p2YzI5bWRD
QjJhWE4xWVd3Z2MzUjFaR2x2SURoY2RtTmNhVzVqYkhWa1pWeGpjblJoYzNObGJTNW9BR002WEhC
eWIyZHlZVzBnClptbHNaWE1nS0hnNE5pbGNiV2xqY205emIyWjBJSFpwYzNWaGJDQnpkSFZrYVc4
Z09GeDJZMXhwYm1Oc2RXUmxYSFpoWkdWbWN5NW8KQUNSVU1pQWtaWE53SUM1allreHZZMkZzY3lB
cklDNWpZbE5oZG1Wa1VtVm5jeUFySUQwZ0pGUXdJQzV5WVZObFlYSmphRk4wWVhKMApJRDBnSkdW
cGNDQWtWREFnWGlBOUlDUmxjM0FnSkZRd0lEUWdLeUE5QUNSVU1pQWtaWE53SUM1allreHZZMkZz
Y3lBcklDNWpZbE5oCmRtVmtVbVZuY3lBcklEMGdKRlF3SUM1eVlWTmxZWEpqYUZOMFlYSjBJRDBn
SkdWcGNDQWtWREFnWGlBOUlDUmxjM0FnSkZRd0lEUWcKS3lBOUlDUmxZbmdnSkZRd0lERXlJQzBn
WGlBOUFDUlVNaUFrWlhOd0lDNWpZa3h2WTJGc2N5QXJJQzVqWWxOaGRtVmtVbVZuY3lBcgpJRDBn
SkZRd0lDNXlZVk5sWVhKamFGTjBZWEowSUQwZ0pHVnBjQ0FrVkRBZ1hpQTlJQ1JsYzNBZ0pGUXdJ
RFFnS3lBOUlDUmxZbkFnCkpGUXdJREUySUMwZ1hpQTlJQ1JsWW5nZ0pGUXdJREV5SUMwZ1hpQTlB
QUFBQUp3SUFBQnFBQUFBQ3dDZ0NBQUFhZ0FBQUFvQUN3QUEKQUFFQUFBQUtBQUFBQWdBQUFBUUFB
QUFGQUFBQUJBQUFBSXRFSkFTSlFRakNCQUFFQUFBQTlRQUFBQ1FBQUFBQUFBQUFBQUFBQUFvQQpB
QUFBQUFBQUJBQUFBQUFBQUFBeUN3QUFBQUFBQUFRQUFBRHhBQUFBZ3dBQUFENEFFQkVBQUFBQUFB
QUFBQUFBQUFBS0FBQUFBQUFBCkFBY0FBQUEwRUFBQUFBQUFBQUFBQUUxbFpHbGhWVWxGYkdWdFpX
NTBPanB6WlhSVGRHRjBaUUFjQUJJUUFBQUFBQUFBQUFBQUFBQUEKQUFBQUFBQUFBQUFBQUNBS0FB
QU5BQVlSSXhBQUFCSUFkR2hwY3dBUUFBc1JCQUFBQURJUUFBQnpkR0YwWlFBQ0FBWUFBUElBQUFB
ZwpBQUFBQUFBQUFBQUFBQUFLQUFBQTJBTUFBQUVBQUFBVUFBQUFBQUFBQUVjQUFJQU1BQUFBSHdB
QUFBY0FXQUFBQUI4QUFBQUxBRndBCkFBQWZBQUFBQ2dERUFBQUFId0FBQUFzQXlBQUFBQjhBQUFB
S0FOMUVKQVRkV1JEQ0NBQUVBQUFBOVFBQUFDUUFBQUFBQUFBQUFBQUEKQUFvQUFBQUFBQUFBQ0FB
QUFBQUFBQUF5Q3dBQUFBQUFBQVFBQUFEeEFBQUFrQUFBQUVvQUVCRUFBQUFBQUFBQUFBQUFBQUFL
QUFBQQpBQUFBQUFjQUFBQk5FQUFBQUFBQUFBQUFBRTFsWkdsaFZVbFVhVzFsYkdsdVpWTnNhV1Js
Y2pvNmMyVjBWR2x0WlV4dllXUmxaQUFjCkFCSVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUNBS0FBQU5BQVlSVEJBQUFCSUFkR2hwY3dBUkFBc1JCQUFBQUVFQUFBQnMKYjJGa1pXUUFBZ0FH
QVBJQUFBQWdBQUFBQUFBQUFBQUFBQUFLQUFBQTJBTUFBQUVBQUFBVUFBQUFBQUFBQUZzQUFJQU1B
QUFBSkFBQQpBQWNBV0FBQUFDUUFBQUFMQUZ3QUFBQWtBQUFBQ2dEUUFBQUFKQUFBQUFzQTFBQUFB
Q1FBQUFBS0FOMUVKQVRkV1JqQ0NBQUVBQUFBCjlRQUFBQ1FBQUFBQUFBQUFBQUFBQUFvQUFBQUFB
QUFBQ0FBQUFBQUFBQUF5Q3dBQUFBQUFBQVFBQUFEeEFBQUFrQUFBQUVnQUVCRUEKQUFBQUFBQUFB
QUFBQUFBS0FBQUFBQUFBQUFjQUFBQk5FQUFBQUFBQUFBQUFBRTFsWkdsaFZVbFVhVzFsYkdsdVpW
TnNhV1JsY2pvNgpjMlYwUkhWeVlYUnBiMjRBSEFBU0VBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFnQ2dBQURRQUdFVXdRQUFBU0FIUm9hWE1BCkV3QUxFUVFBQUFCQkFBQUFaSFZ5WVhScGIy
NEFBZ0FHQVBJQUFBQWdBQUFBQUFBQUFBQUFBQUFLQUFBQTJBTUFBQUVBQUFBVUFBQUEKQUFBQUFG
NEFBSUFNQUFBQUtnQUFBQWNBV0FBQUFDb0FBQUFMQUZ3QUFBQXFBQUFBQ2dEUUFBQUFLZ0FBQUFz
QTFBQUFBQ29BQUFBSwpBTWNCQUFBQUFNTUNBQUFBTWdBQUFBWUFCQUFBQVBVQUFBQWtBQUFBQUFB
QUFBQUFBQUFIQUFBQUFBQUFBQUFBQUFBQUFBQUFNZ3NBCkFBQUFBQUFFQUFBQThRQUFBSFlBQUFC
REFCQVJBQUFBQUFBQUFBQUFBQUFBQndBQUFBQUFBQUFHQUFBQVlCQUFBQUFBQUFBQUFBQk4KWldS
cFlVTnZiblJ5YjJ4ek9qcCtUV1ZrYVdGRGIyNTBjbTlzY3dBY0FCSVFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUNBSwpBQUFOQUFZUlhSQUFBQklBZEdocGN3QUNBQVlBQUFEeUFBQUFJQUFB
QUFBQUFBQUFBQUFBQndBQUFOZ0RBQUFCQUFBQUZBQUFBQUFBCkFBQnJBQUNBREFBQUFDOEFBQUFI
QUZnQUFBQXZBQUFBQ3dCY0FBQUFMd0FBQUFvQXVBQUFBQzhBQUFBTEFMd0FBQUF2QUFBQUNnQUEK
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEUUFBQUFHQUFRQUFBQmZB
QUFBQmdBSUFBQUFid0FBQUFZQQpEQUFBQUdRQUFBQUdBQkFBQUFCcEFBQUFCZ0FVQUFBQU5nQUFB
QVlBR0FBQUFEWUFBQUFHQVBaRUpBUUJWb3Z4eHdZQUFBQUFkQWxXCjZBQUFBQUNEeEFTTHhsN0NC
QUFLQUFBQU1nQUFBQVlBRWdBQUFEd0FBQUFVQUFRQUFBRDFBQUFBUkFBQUFBQUFBQUFBQUFBQUh3
QUEKQUFBQUFBQUVBQUFBQUFBQUFESUxBQUFJQUFBQUJBQUFBQVlBQUFBV0FBQUFBQUFBQUFRQUFB
QUFBQUFBTWdzQUFBSUFCQUFBQUFBQQo4UUFBQUlRQUFBQlJBQkFSQUFBQUFBQUFBQUFBQUFBQUh3
QUFBQWdBQUFBY0FBQUFkQkFBQUFBQUFBQUFBQUJOWldScFlVTnZiblJ5CmIyeHpPanBnYzJOaGJH
RnlJR1JsYkdWMGFXNW5JR1JsYzNSeWRXTjBiM0luQUJ3QUVoQUFBQUFBQUFBQUFBQUFBQUFFQUFB
QUFBQUEKQUFBQUlBSUFBQTBBQmhGZEVBQUFFZ0IwYUdsekFBSUFCZ0FNQUFBQU13QUFBQWNBZUFB
QUFETUFBQUFMQUh3QUFBQXpBQUFBQ2dDTAp3Y2NBQUFBQUFNTUVBQUFBTWdBQUFBWUFCQUFBQVBV
QUFBQWtBQUFBQUFBQUFBQUFBQUFKQUFBQUFBQUFBQUFBQUFBQUFBQUFNZ3NBCkFBSUFBQUFFQUFB
QThRQUFBSFVBQUFCQ0FCQVJBQUFBQUFBQUFBQUFBQUFBQ1FBQUFBSUFBQUFJQUFBQVlCQUFBQUFB
QUFBQUFBQk4KWldScFlVTnZiblJ5YjJ4ek9qcE5aV1JwWVVOdmJuUnliMnh6QUJ3QUVoQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFvQQpBQTBBQmhGZEVBQUFFZ0IwYUdsekFBSUFCZ0FB
QUFBTUFBQUFRUUFBQUFjQVdBQUFBRUVBQUFBTEFGd0FBQUJCQUFBQUNnQ0Q3QWhUClZWYUxkQ1FZ
VjFiL0ZRQUFBQUNMZkNRa2kxd2tLSXRzSkN5TFRDUXdnK3dNaThTSk9JbFlCSWxvQ0lsSURQOFZB
QUFBQU4xY0pDQ0wKVkNROGk4U0pPSWxZQklsb0NJbFFEUDhWQUFBQUFOeEVKQ0NEeEFqWlhDUWsy
VVFrSk5sY0pBVFo3dGtjSkZiL0ZRQUFBQURaQlFBQQpBQUNEeEFUWlhDUUUyZWpaSENSVy94VUFB
QUFBZzhRTVgxNWRXNFBFQ01JVUFBNEFBQUJVQUFBQUJnQTBBQUFBVXdBQUFBWUFUd0FBCkFGSUFB
QUFHQUc0QUFBQk9BQUFBQmdCMEFBQUFUUUFBQUFZQWh3QUFBRWNBQUFBR0FBUUFBQUQxQUFBQVpB
QUFBQUFBQUFBQUFBQUEKbUFBQUFBZ0FBQUFVQUFBQUFBQUFBRElMQUFBTEFBZ0FCQUFBQUFRQUFB
Q1VBQUFBQ0FBQUFCUUFBQUFBQUFBQWlRc0FBQWNBREFBQQpBQUFBQlFBQUFKTUFBQUFJQUFBQUZB
QUFBQUFBQUFEeUN3QUFCZ0FRQUFBQUFBRHhBQUFBOVFBQUFFMEFFQkVBQUFBQUFBQUFBQUFBCkFB
Q1lBQUFBQ3dBQUFJNEFBQUE2RUFBQUFBQUFBQUFBQUUxbFpHbGhWVWxGYkdWdFpXNTBPanB6WlhS
VmNFTnZiblJsZUhSR2IzSlEKWVdsdWRHbHVad0FjQUJJUUNBQUFBQUFBQUFBQUFBQUFFQUFBQUFB
QUFBQUFBQUFDQUFBTkFBWVJMaEFBQUJJQWRHaHBjd0FTQUFzUgpCQUFBQUNrUUFBQmpiMjUwWlho
MEFBOEFDeEVJQUFBQURoQUFBSEpsWTNRQURnQTVFUXdBQUFBQUFBQUFqQkFBQUE0QU9SRXlBQUFB
CkFBQUFBR0lTQUFBT0FEa1JUUUFBQUFBQUFBQmlFZ0FBRGdBNUVXd0FBQUFBQUFBQVlCSUFBQTRB
T1JHRkFBQUFBQUFBQUdBU0FBQUMKQUFZQUFBQUE4Z0FBQUVBQUFBQUFBQUFBQUFBQUFKZ0FBQUE0
QVFBQUJRQUFBRFFBQUFBQUFBQUFNd0FBZ0FZQUFBQTBBQUNBRWdBQQpBRFVBQUlCeUFBQUFOZ0FB
Z0k0QUFBQTNBQUNBREFBQUFFWUFBQUFIQUpnQUFBQkdBQUFBQ3dDY0FBQUFSZ0FBQUFvQUhRRUFB
RVlBCkFBQUxBQ0VCQUFCR0FBQUFDZ0F0QVFBQVJnQUFBQXNBTVFFQUFFWUFBQUFLQUQwQkFBQkdB
QUFBQ3dCQkFRQUFSZ0FBQUFvQVRRRUEKQUVZQUFBQUxBRkVCQUFCR0FBQUFDZ0JkQVFBQVJnQUFB
QXNBWVFFQUFFWUFBQUFLQUhnQkFBQkdBQUFBQ3dCOEFRQUFSZ0FBQUFvQQpBQUNBUHdBQWdMOEFB
QUFBaTBRa0JGRC9GUUFBQUFCWndnUUFCd0FBQUZvQUFBQUdBQVFBQUFEMUFBQUFKQUFBQUFBQUFB
QUFBQUFBCkR3QUFBQUFBQUFBRUFBQUFBQUFBQURJTEFBQUFBQUFBQkFBQUFQRUFBQUNvQUFBQVVR
QVFFUUFBQUFBQUFBQUFBQUFBQUE4QUFBQUEKQUFBQURBQUFBRHdRQUFBQUFBQUFBQUFBVFdWa2FX
RlZTVVZzWlcxbGJuUTZPbkpsYzNSdmNtVkRiMjUwWlhoMFFXWjBaWEpRWVdsdQpkR2x1WndBY0FC
SVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FBQU5BQVlSTGhBQUFCSUFkR2hwY3dB
U0FBc1JCQUFBCkFDa1FBQUJqYjI1MFpYaDBBQTRBT1JFRkFBQUFBQUFBQUl3UUFBQUNBQVlBOGdB
QUFEQUFBQUFBQUFBQUFBQUFBQThBQUFBNEFRQUEKQXdBQUFDUUFBQUFBQUFBQU9nQUFnQUFBQUFB
N0FBQ0FEQUFBQUR3QUFJQU1BQUFBV1FBQUFBY0FXQUFBQUZrQUFBQUxBRndBQUFCWgpBQUFBQ2dE
UUFBQUFXUUFBQUFzQTFBQUFBRmtBQUFBS0FPZ0FBQUJaQUFBQUN3RHNBQUFBV1FBQUFBb0Fpd0dM
VkNRRWkwQVVWbEwvCjBJWEFkRFdMVENRZ2l6Q0pTQWlMVENRUWcrd1FpOVNKQ290TUpDU0pTZ1NM
VENRb2lVb0lpMHdrTElsS0RJdFVKQnlMeUl0R0JGTC8KMEY3Q0hBQUVBQUFBOVFBQUFDUUFBQUFB
QUFBQUFBQUFBRW9BQUFBQUFBQUFIQUFBQUFBQUFBQXlDd0FBQ2dBRUFBUUFBQUR4QUFBQQoyZ0FB
QUQwQUVCRUFBQUFBQUFBQUFBQUFBQUJLQUFBQUNnQUFBRVlBQUFCaUVBQUFBQUFBQUFBQUFFMWxa
R2xoUTI5dWRISnZiSE02Ck9tUnlZWGRRWVhKMEFCd0FFaEFBQUFBQUFBQUFBQUFBQUFBRUFBQUFB
QUFBQUFBQUFBSUFBQTBBQmhGZEVBQUFFZ0IwYUdsekFCRUEKQ3hFRUFBQUFkQUFBQUhCaGNuUkpS
QUFTQUFzUkNBQUFBQ2tRQUFCamIyNTBaWGgwQUE4QUN4RU1BQUFBRGhBQUFISmxZM1FBRUFBTApF
UndBQUFCMUFBQUFjM1JoZEdVQURnQTVFUXNBQUFBQUFBQUFheEFBQUE0QU9SRkVBQUFBQUFBQUFD
c1FBQUFDQUFZQUFBRHlBQUFBClNBQUFBQUFBQUFBQUFBQUFTZ0FBQURnQkFBQUdBQUFBUEFBQUFB
QUFBQUEvQUFDQUFBQUFBRUFBQUlBTkFBQUFRZ0FBZ0JFQUFBQkYKQUFDQUZRQUFBRVlBQUlCR0FB
QUFSd0FBZ0F3QUFBQmZBQUFBQndCWUFBQUFYd0FBQUFzQVhBQUFBRjhBQUFBS0FQSUFBQUJmQUFB
QQpDd0QyQUFBQVh3QUFBQW9BQWdFQUFGOEFBQUFMQUFZQkFBQmZBQUFBQ2dBY0FRQUFYd0FBQUFz
QUlBRUFBRjhBQUFBS0FJc0JpMVFrCkJJdEFGRlpTLzlDRndIVUdNc0Jld2h3QWkwd2tJSXRVSkJ5
TE1GR0xUQ1FRVW9Qc0VJdlVpUXFMVENRb2lVb0VpMHdrTElsS0NJdE0KSkRDSlNneUxWZ2lMeVAv
U1hzSWNBQVFBQUFEMUFBQUFKQUFBQUFBQUFBQUFBQUFBVGdBQUFBQUFBQUFjQUFBQUFBQUFBRElM
QUFBSwpBQVFBQkFBQUFQRUFBQURMQUFBQVFBQVFFUUFBQUFBQUFBQUFBQUFBQUU0QUFBQUtBQUFB
U2dBQUFHZ1FBQUFBQUFBQUFBQUFUV1ZrCmFXRkRiMjUwY205c2N6bzZhR2wwVkdWemRGQmhjblFB
SEFBU0VBQUFBQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFBQUFBQWdBQURRQUcKRVdjUUFBQVNBSFJv
YVhNQUVRQUxFUVFBQUFCMEFBQUFjR0Z5ZEVsRUFCRUFDeEVJQUFBQURoQUFBR0p2ZFc1a2N3QVFB
QXNSR0FBQQpBQWdRQUFCd2IybHVkQUFPQURrUkN3QUFBQUFBQUFCckVBQUFEZ0E1RVVnQUFBQUFB
QUFBTHhBQUFBSUFCZ0FBOGdBQUFGQUFBQUFBCkFBQUFBQUFBQUU0QUFBQTRBUUFBQndBQUFFUUFB
QUFBQUFBQVNnQUFnQUFBQUFCTEFBQ0FEUUFBQUUwQUFJQVJBQUFBVGdBQWdCTUEKQUFCUkFBQ0FG
d0FBQUZBQUFJQktBQUFBVVFBQWdBd0FBQUJrQUFBQUJ3QllBQUFBWkFBQUFBc0FYQUFBQUdRQUFB
QUtBT01BQUFCawpBQUFBQ3dEbkFBQUFaQUFBQUFvQTh3QUFBR1FBQUFBTEFQY0FBQUJrQUFBQUNn
QU1BUUFBWkFBQUFBc0FFQUVBQUdRQUFBQUtBSXNCCmkxUWtDSXRBRkZMLzBJWEFkUmVMRFFBQUFB
Q0xFWXRFSkFTSkVJdEpCSWxJQk1JSUFJc1FWb3QwSkFpTHlJdENERmIvMEl2R1hzSUkKQUJJQUFB
QnFBQUFBQmdBRUFBQUE5UUFBQUVRQUFBQUFBQUFBQUFBQUFEd0FBQUFBQUFBQUNBQUFBQUFBQUFB
eUN3QUFBQUFBQUFRQQpBQUFxQUFBQUR3QUFBQUFBQUFBSUFBQUFBQUFBQURJTEFBQUFBQVFBQUFB
QUFQRUFBQUNtQUFBQVFBQVFFUUFBQUFBQUFBQUFBQUFBCkFEd0FBQUFBQUFBQU9RQUFBR2tRQUFB
QUFBQUFBQUFBVFdWa2FXRkRiMjUwY205c2N6bzZibUYwZFhKaGJGTnBlbVVBSEFBU0VBQUEKQUFB
QUFBQUFBQUFBQUFRQUFBQUFBQUFBQUFBQUFnQUFEUUFHRVdjUUFBQVNBSFJvYVhNQUVRQUxFUWdB
QUFCMEFBQUFjR0Z5ZEVsRQpBQTRBT1JFS0FBQUFBQUFBQUdzUUFBQU9BRGtSTkFBQUFBQUFBQUF3
RUFBQUFnQUdBQUFBOGdBQUFGQUFBQUFBQUFBQUFBQUFBRHdBCkFBQTRBUUFBQndBQUFFUUFBQUFB
QUFBQVZBQUFnQUFBQUFCVkFBQ0FEQUFBQUZjQUFJQVFBQUFBV0FBQWdDUUFBQUJiQUFDQUp3QUEK
QUZvQUFJQTVBQUFBV3dBQWdBd0FBQUJwQUFBQUJ3QjRBQUFBYVFBQUFBc0FmQUFBQUdrQUFBQUtB
TjRBQUFCcEFBQUFDd0RpQUFBQQphUUFBQUFvQTdnQUFBR2tBQUFBTEFQSUFBQUJwQUFBQUNnQUlB
UUFBYVFBQUFBc0FEQUVBQUdrQUFBQUtBSXNCaTFBWVZ2L1MzVVFrCkhJdE1KQ3pkV0JDTGRDUU0z
VVFrSklzUTNWZ1lpMUlFaVVnSWcrd1FpOHlKTVl0MEpDQ0pjUVNMZENRa2lYRUlpM1FrS0lseERJ
dE0KSkJoUmk4ai8wbDdDS0FBRUFBQUE5UUFBQUNRQUFBQUFBQUFBQUFBQUFFOEFBQUFBQUFBQUtB
QUFBQUFBQUFBeUN3QUFCZ0FFQUFRQQpBQUR4QUFBQUFnRUFBRXdBRUJFQUFBQUFBQUFBQUFBQUFB
QlBBQUFBQmdBQUFFc0FBQUJrRUFBQUFBQUFBQUFBQUUxbFpHbGhRMjl1CmRISnZiSE02T21SeVlY
ZFVhVzFsYkdsdVpWTnNhV1JsY2xSeVlXTnJBQndBRWhBQUFBQUFBQUFBQUFBQUFBQUVBQUFBQUFB
QUFBQUEKQUFJQUFBMEFCaEZkRUFBQUVnQjBhR2x6QUJJQUN4RUVBQUFBS1JBQUFHTnZiblJsZUhR
QUR3QUxFUWdBQUFBT0VBQUFjbVZqZEFBVgpBQXNSR0FBQUFFRUFBQUIwYVcxbFRHOWhaR1ZrQUJN
QUN4RWdBQUFBUVFBQUFHUjFjbUYwYVc5dUFCQUFDeEVvQUFBQWRRQUFBSE4wCllYUmxBQTRBT1JF
R0FBQUFBQUFBQUcwUUFBQU9BRGtSU1FBQUFBQUFBQUFyRUFBQUFnQUdBQUFBOGdBQUFFQUFBQUFB
QUFBQUFBQUEKQUU4QUFBQTRBUUFBQlFBQUFEUUFBQUFBQUFBQVhnQUFnQUFBQUFCZkFBQ0FDQUFB
QUdJQUFJQVRBQUFBWkFBQWdFc0FBQUJsQUFDQQpEQUFBQUc4QUFBQUhBRmdBQUFCdkFBQUFDd0Jj
QUFBQWJ3QUFBQW9BR2dFQUFHOEFBQUFMQUI0QkFBQnZBQUFBQ2dBcUFRQUFid0FBCkFBc0FMZ0VB
QUc4QUFBQUtBRVFCQUFCdkFBQUFDd0JJQVFBQWJ3QUFBQW9BaThISEFBQUFBQUREQkFBQUFIY0FB
QUFHQUFRQUFBRDEKQUFBQUpBQUFBQUFBQUFBQUFBQUFDUUFBQUFBQUFBQUFBQUFBQUFBQUFESUxB
QUFDQUFBQUJBQUFBUEVBQUFDQkFBQUFUZ0FRRVFBQQpBQUFBQUFBQUFBQUFBQWtBQUFBQ0FBQUFD
QUFBQUtjUUFBQUFBQUFBQUFBQVRXVmthV0ZNWldkaFkzbERiMjUwY205c2N6bzZUV1ZrCmFXRk1a
V2RoWTNsRGIyNTBjbTlzY3dBY0FCSVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBS0FB
QU5BQVlScFJBQUFCSUEKZEdocGN3QUNBQVlBQUFBQURBQUFBSFFBQUFBSEFGZ0FBQUIwQUFBQUN3
QmNBQUFBZEFBQUFBb0FBQUFBQUFBQUFBQUFBQUFBQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QjVBQUFBQmdBRUFBQUFYd0FBQUFZQUNBQUFBRzhBQUFBR0FBd0FBQUJrQUFBQUJnQVFBQUFBCmFR
QUFBQVlBRkFBQUFIc0FBQUFHQUJnQUFBQjhBQUFBQmdESEFRQUFBQUREQWdBQUFESUFBQUFHQUFR
QUFBRDFBQUFBSkFBQUFBQUEKQUFBQUFBQUFCd0FBQUFBQUFBQUFBQUFBQUFBQUFESUxBQUFBQUFB
QUJBQUFBUEVBQUFDQ0FBQUFUd0FRRVFBQUFBQUFBQUFBQUFBQQpBQWNBQUFBQUFBQUFCZ0FBQUtj
UUFBQUFBQUFBQUFBQVRXVmthV0ZNWldkaFkzbERiMjUwY205c2N6bzZmazFsWkdsaFRHVm5ZV041
ClEyOXVkSEp2YkhNQUhBQVNFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0NnQUFEUUFH
RWFVUUFBQVNBSFJvYVhNQUFnQUcKQUFBQURBQUFBSUVBQUFBSEFGZ0FBQUNCQUFBQUN3QmNBQUFB
Z1FBQUFBb0FpOEhIQUFBQUFBRERCQUFBQUlrQUFBQUdBQVFBQUFEMQpBQUFBSkFBQUFBQUFBQUFB
QUFBQUNRQUFBQUFBQUFBQUFBQUFBQUFBQURJTEFBQUNBQUFBQkFBQUFQRUFBQUNGQUFBQVVnQVFF
UUFBCkFBQUFBQUFBQUFBQUFBa0FBQUFDQUFBQUNBQUFBRmdYQUFBQUFBQUFBQUFBVFdWa2FXRlRh
R0Z5WldSVlNVTnZiblJ5YjJ4ek9qcE4KWldScFlWTm9ZWEpsWkZWSlEyOXVkSEp2YkhNQUhBQVNF
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0NnQUFEUUFHRVZZWApBQUFTQUhSb2FYTUFB
Z0FHQUFBQUFBd0FBQUNHQUFBQUJ3QllBQUFBaGdBQUFBc0FYQUFBQUlZQUFBQUtBQUFBQUFBQUFB
QUFBQUFBCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFpd0FBQUFZQUJBQUFBRjhBQUFBR0FB
Z0FBQUJ2QUFBQUJnQU1BQUFBWkFBQUFBWUEKRUFBQUFHa0FBQUFHQUJRQUFBQ05BQUFBQmdBWUFB
QUFqZ0FBQUFZQXh3RUFBQUFBd3dJQUFBQXlBQUFBQmdBRUFBQUE5UUFBQUNRQQpBQUFBQUFBQUFB
QUFBQWNBQUFBQUFBQUFBQUFBQUFBQUFBQXlDd0FBQUFBQUFBUUFBQUR4QUFBQWhnQUFBRk1BRUJF
QUFBQUFBQUFBCkFBQUFBQUFIQUFBQUFBQUFBQVlBQUFCWUZ3QUFBQUFBQUFBQUFFMWxaR2xoVTJo
aGNtVmtWVWxEYjI1MGNtOXNjem82ZmsxbFpHbGgKVTJoaGNtVmtWVWxEYjI1MGNtOXNjd0FjQUJJ
UUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FLQUFBTkFBWVJWaGNBQUJJQQpkR2hwY3dB
Q0FBWUFBQUFNQUFBQWt3QUFBQWNBV0FBQUFKTUFBQUFMQUZ3QUFBQ1RBQUFBQ2dEMlJDUUVBVmFM
OGNjR0FBQUFBSFFKClZ1Z0FBQUFBZzhRRWk4WmV3Z1FBQ2dBQUFESUFBQUFHQUJJQUFBQThBQUFB
RkFBRUFBQUE5UUFBQUVRQUFBQUFBQUFBQUFBQUFCOEEKQUFBQUFBQUFCQUFBQUFBQUFBQXlDd0FB
Q0FBQUFBUUFBQUFHQUFBQUZnQUFBQUFBQUFBRUFBQUFBQUFBQURJTEFBQUNBQVFBQUFBQQpBUEVB
QUFDS0FBQUFWd0FRRVFBQUFBQUFBQUFBQUFBQUFCOEFBQUFJQUFBQUhBQUFBS3NRQUFBQUFBQUFB
QUFBVFdWa2FXRk1aV2RoClkzbERiMjUwY205c2N6bzZZSE5qWVd4aGNpQmtaV3hsZEdsdVp5Qmta
WE4wY25WamRHOXlKd0FjQUJJUUFBQUFBQUFBQUFBQUFBQUEKQkFBQUFBQUFBQUFBQUNBQ0FBQU5B
QVlScFJBQUFCSUFkR2hwY3dBQ0FBWUFBQUFNQUFBQWVBQUFBQWNBZUFBQUFIZ0FBQUFMQUh3QQpB
QUI0QUFBQUNnRDJSQ1FFQVZhTDhjY0dBQUFBQUhRSlZ1Z0FBQUFBZzhRRWk4WmV3Z1FBQ2dBQUFE
SUFBQUFHQUJJQUFBQThBQUFBCkZBQUVBQUFBOVFBQUFFUUFBQUFBQUFBQUFBQUFBQjhBQUFBQUFB
QUFCQUFBQUFBQUFBQXlDd0FBQ0FBQUFBUUFBQUFHQUFBQUZnQUEKQUFBQUFBQUVBQUFBQUFBQUFE
SUxBQUFDQUFRQUFBQUFBUEVBQUFDTUFBQUFXUUFRRVFBQUFBQUFBQUFBQUFBQUFCOEFBQUFJQUFB
QQpIQUFBQUZ3WEFBQUFBQUFBQUFBQVRXVmthV0ZUYUdGeVpXUlZTVU52Ym5SeWIyeHpPanBnYzJO
aGJHRnlJR1JsYkdWMGFXNW5JR1JsCmMzUnlkV04wYjNJbkFCd0FFaEFBQUFBQUFBQUFBQUFBQUFB
RUFBQUFBQUFBQUFBQUlBSUFBQTBBQmhGV0Z3QUFFZ0IwYUdsekFBSUEKQmdBTUFBQUFpZ0FBQUFj
QWVBQUFBSW9BQUFBTEFId0FBQUNLQUFBQUNnQzVBUUFBQUR2QmRUaUVEUUFBQUFCMUtna05BQUFB
QUdvRQo2QUFBQUFDRHhBU0Z3SFFNeHdBQUFBQUFvd0FBQUFERHh3VUFBQUFBQUFBQUFLRUFBQUFB
dzdrQ0FBQUFPOEYxT0lRTkFBQUFBSFVxCkNRMEFBQUFBYWdUb0FBQUFBSVBFQklYQWRBekhBQUFB
QUFDakFBQUFBTVBIQlFBQUFBQUFBQUFBb1FBQUFBRERNOEREQ3dBQUFLd0EKQUFBR0FCTUFBQUNz
QUFBQUJnQWFBQUFBcVFBQUFCUUFKd0FBQUhjQUFBQUdBQ3dBQUFDb0FBQUFCZ0F6QUFBQXFBQUFB
QVlBUEFBQQpBS2dBQUFBR0FFd0FBQUNzQUFBQUJnQlVBQUFBckFBQUFBWUFXd0FBQUtrQUFBQVVB
R2dBQUFDSkFBQUFCZ0J0QUFBQXBRQUFBQVlBCmRBQUFBS1VBQUFBR0FIMEFBQUNsQUFBQUJnQUVB
QUFBOVFBQUFDUUFBQUFBQUFBQUFBQUFBSVVBQUFBQUFBQUFBQUFBQUFBQUFBQXkKQ3dBQUFBQUFB
QVFBQUFEeEFBQUFxd0FBQURZQUR4RUFBQUFBQUFBQUFBQUFBQUNGQUFBQUFBQUFBSVFBQUFEaEZ3
QUFBQUFBQUFBQQpBR052Ym5SeWIyeHpSbTl5VkdobGJXVUFIQUFTRUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBZ0FBRXdBR0VYUUFBQUFSCkFIUm9aVzFsVTNSNWJHVUFHd0FNRWQ0WEFB
QUFBQUFBQUFCc1pXZGhZM2xEYjI1MGNtOXNjd0FkQUF3UjN4Y0FBQUFBQUFBQUFITm8KWVhKbFpG
VkpRMjl1ZEhKdmJITUFBZ0FHQUFEeUFBQUFrQUFBQUFBQUFBQUFBQUFBaFFBQUFEZ0JBQUFQQUFB
QWhBQUFBQUFBQUFBTgpBQUNBQUFBQUFBNEFBSUFKQUFBQUR3QUFnREFBQUFBYkFBQ0FNUUFBQUE4
QUFJQTdBQUFBRUFBQWdFQUFBQUFiQUFDQVFRQUFBQk1BCkFJQktBQUFBRkFBQWdIRUFBQUFiQUFD
QWNnQUFBQlFBQUlCOEFBQUFGUUFBZ0lFQUFBQWJBQUNBZ2dBQUFCb0FBSUNFQUFBQUd3QUEKZ0F3
QUFBQ2lBQUFBQndCWUFBQUFvZ0FBQUFzQVhBQUFBS0lBQUFBS0FLc0FBQUNvQUFBQUN3Q3ZBQUFB
cUFBQUFBb0F5QUFBQUtVQQpBQUFMQU13QUFBQ2xBQUFBQ2dEc0FBQUFvZ0FBQUFzQThBQUFBS0lB
QUFBS0FJUHNDRmFMZENRY2hmWjBKb3RFSkJUb0FBQUFBSXRNCkpCQ0xFSXRTRUZHTlRDUUlVWXZJ
LzlLTENJa09pMUFFaVZZRVhvUEVDTU1SQUFBQW9nQUFBQlFBQkFBQUFQVUFBQUJFQUFBQUFBQUEK
QUFBQUFBQTNBQUFBQ0FBQUFCQUFBQUFBQUFBQU1nc0FBQVFBQUFBRUFBQUFCQUFBQUM4QUFBQUlB
QUFBRUFBQUFBQUFBQUF5Q3dBQQpBQUFFQUFBQUFBRHhBQUFBd3dBQUFEb0FFQkVBQUFBQUFBQUFB
QUFBQUFBM0FBQUFCQUFBQURNQUFBRGpGd0FBQUFBQUFBQUFBRmRMClRXVmhjM1Z5WlUxbFpHbGhW
VWxRWVhKMEFCd0FFaEFJQUFBQUFBQUFBQUFBQUFBRUFBQUFBQUFBQUFBQUFBSUFBQkVBQ3hFRUFB
QUEKZEFBQUFIQmhjblJKUkFBVkFBc1JDQUFBQUhRQUFBQjBhR1Z0WlZOMGVXeGxBQkVBQ3hFTUFB
QUFkeFFBQUdKdmRXNWtjd0FXQUFzUgpFQUFBQUpBVEFBQnVZWFIxY21Gc1UybDZaUUFPQURrUkpn
QUFBQUFBQUFCcEVBQUFBZ0FHQUFEeUFBQUFPQUFBQUFBQUFBQUFBQUFBCk53QUFBRGdCQUFBRUFB
QUFMQUFBQUFBQUFBQWVBQUNBQkFBQUFCOEFBSUFNQUFBQUlBQUFnRE1BQUFBaEFBQ0FEQUFBQUxF
QUFBQUgKQUhnQUFBQ3hBQUFBQ3dCOEFBQUFzUUFBQUFvQUN3RUFBTEVBQUFBTEFBOEJBQUN4QUFB
QUNnQWtBUUFBc1FBQUFBc0FLQUVBQUxFQQpBQUFLQUl0RUpBaFc2QUFBQUFDTFRDUWtpMVFrSUlz
d1VZdE1KQlJTZyt3UWk5U0pDb3RNSkN5SlNnU0xUQ1F3aVVvSWkwd2tOSWxLCkRJdFVKQ0NMeUl0
R0RGTC8wRjdEQmdBQUFLSUFBQUFVQUFRQUFBRDFBQUFBSkFBQUFBQUFBQUFBQUFBQVJBQUFBQUFB
QUFBZ0FBQUEKQUFBQUFESUxBQUFGQUFRQUJBQUFBUEVBQUFDOUFBQUFPZ0FRRVFBQUFBQUFBQUFB
QUFBQUFFUUFBQUFGQUFBQVFnQUFBT1VYQUFBQQpBQUFBQUFBQVYwdElhWFJVWlhOMFRXVmthV0ZW
U1ZCaGNuUUFIQUFTRUFBQUFBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQUFBQUFBZ0FBCkVRQUxFUVFB
QUFCMEFBQUFjR0Z5ZEVsRUFCVUFDeEVJQUFBQWRBQUFBSFJvWlcxbFUzUjViR1VBRVFBTEVRd0FB
QUFPRUFBQVltOTEKYm1SekFCQUFDeEVjQUFBQUNCQUFBSEJ2YVc1MEFBNEFPUkZBQUFBQUFBQUFB
R2dRQUFBQ0FBWUFBQUFBOGdBQUFEQUFBQUFBQUFBQQpBQUFBQUVRQUFBQTRBUUFBQXdBQUFDUUFB
QUFBQUFBQUpBQUFnQUFBQUFBbEFBQ0FRZ0FBQUNZQUFJQU1BQUFBdGdBQUFBY0FXQUFBCkFMWUFB
QUFMQUZ3QUFBQzJBQUFBQ2dEbEFBQUF0Z0FBQUFzQTZRQUFBTFlBQUFBS0FBQUJBQUMyQUFBQUN3
QUVBUUFBdGdBQUFBb0EKaTBRa0NGYm9BQUFBQUl0TUpDU0xNRkdMVENRWWcrd1FpOVNKQ290TUpD
eUpTZ1NMVENRd2lVb0lpMHdrTklsS0RJdFVKQ1NMVENRYwpVb3RXQkZHTHlQL1NYc01HQUFBQW9n
QUFBQlFBQkFBQUFQVUFBQUFrQUFBQUFBQUFBQUFBQUFCRUFBQUFBQUFBQUNBQUFBQUFBQUFBCk1n
c0FBQVVBQkFBRUFBQUE4UUFBQU13QUFBQTNBQkFSQUFBQUFBQUFBQUFBQUFBQVJBQUFBQVVBQUFC
Q0FBQUE1eGNBQUFBQUFBQUEKQUFCWFMwUnlZWGROWldScFlWVkpVR0Z5ZEFBY0FCSVFBQUFBQUFB
QUFBQUFBQUFBQkFBQUFBQUFBQUFBQUFBQ0FBQVJBQXNSQkFBQQpBSFFBQUFCd1lYSjBTVVFBRlFB
TEVRZ0FBQUIwQUFBQWRHaGxiV1ZUZEhsc1pRQVNBQXNSREFBQUFDa1FBQUJqYjI1MFpYaDBBQThB
CkN4RVFBQUFBRGhBQUFISmxZM1FBRUFBTEVTQUFBQUIxQUFBQWMzUmhkR1VBRGdBNUVVQUFBQUFB
QUFBQVloQUFBQUlBQmdEeUFBQUEKTUFBQUFBQUFBQUFBQUFBQVJBQUFBRGdCQUFBREFBQUFKQUFB
QUFBQUFBQXBBQUNBQUFBQUFDb0FBSUJDQUFBQUt3QUFnQXdBQUFDNwpBQUFBQndCWUFBQUF1d0FB
QUFzQVhBQUFBTHNBQUFBS0FQUUFBQUM3QUFBQUN3RDRBQUFBdXdBQUFBb0FEQUVBQUxzQUFBQUxB
QkFCCkFBQzdBQUFBQ2dDTFJDUUVWdWdBQUFBQTJVUWtLSXRNSkN5TE1GR0xUQ1FVZyt3ZzNWd2tH
SXZVMlVRa1JOMWNKQkNKQ290TUpEaUoKU2dTTFRDUThpVW9JaTB3a1FJbEtESXRVSkRDTHlJdEdD
RkwvMEY3REJnQUFBS0lBQUFBVUFBUUFBQUQxQUFBQUpBQUFBQUFBQUFBQQpBQUFBVHdBQUFBQUFB
QUFvQUFBQUFBQUFBRElMQUFBRkFBUUFCQUFBQVBFQUFBQUNBUUFBUEFBUUVRQUFBQUFBQUFBQUFB
QUFBRThBCkFBQUZBQUFBVFFBQUFPa1hBQUFBQUFBQUFBQUFWMHRFY21GM1RXVmthV0ZUYkdsa1pY
SlVjbUZqYXdBY0FCSVFBQUFBQUFBQUFBQUEKQUFBQUJBQUFBQUFBQUFBQUFBQUNBQUFWQUFzUkJB
QUFBSFFBQUFCMGFHVnRaVk4wZVd4bEFCSUFDeEVJQUFBQUtSQUFBR052Ym5SbAplSFFBRHdBTEVR
d0FBQUFPRUFBQWNtVmpkQUFWQUFzUkhBQUFBRUFBQUFCMGFXMWxURzloWkdWa0FCWUFDeEVnQUFB
QVFBQUFBR04xCmNuSmxiblJVYVcxbEFCTUFDeEVrQUFBQVFBQUFBR1IxY21GMGFXOXVBQkFBQ3hF
b0FBQUFkUUFBQUhOMFlYUmxBQTRBT1JGTEFBQUEKQUFBQUFHUVFBQUFDQUFZQUFBRHlBQUFBTUFB
QUFBQUFBQUFBQUFBQVR3QUFBRGdCQUFBREFBQUFKQUFBQUFBQUFBQXVBQUNBQUFBQQpBQzhBQUlC
TkFBQUFNQUFBZ0F3QUFBREFBQUFBQndCWUFBQUF3QUFBQUFzQVhBQUFBTUFBQUFBS0FDb0JBQURB
QUFBQUN3QXVBUUFBCndBQUFBQW9BUkFFQUFNQUFBQUFMQUVnQkFBREFBQUFBQ2dBRUFBQUE4UUFB
QUJJQUFBQVFBQXdSZFFBQUFBQUFBQUFBQUNSVE1RQUEKQUJRQUFBQ3NBQUFBQ3dBWUFBQUFyQUFB
QUFvQUJBQUFBRjRBRlJWNTBTOUxQVGtQUjVlWUdCOGd5WkJRQkFBQUFHTTZYR041WjNkcApibHhv
YjIxbFhHTnRZWEp5YVc1Y2QyVmlhMmwwWW5WcGJHUmNiR2xpWEhkbFltdHBkSE41YzNSbGJXbHVk
R1Z5Wm1GalpTNTJZemd3CkxuQmtZZ0R5OFVCamIyMXdMbWxrSjhadUFQLy9BQUFEQUVCbVpXRjBM
akF3QVFBQUFQLy9BQUFEQUM1a2NtVmpkSFpsQUFBQUFBRUEKQUFBREFjTUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFDNWtaV0oxWnlSVEFBQUFBQUlBQUFBREFmZ2RBQUFDQUFBQUFBQUFBQUFBQUFBQQpB
QzV5WkdGMFlRQUFBQUFBQUFNQUFBQURBUVFBQUFBQUFBQUFBWWNCMXdBQUFnQUFBQUFBQUFBRUFB
QUFBQUFBQUFNQUFBQUNBQzV5ClpHRjBZUUFBQUFBQUFBUUFBQUFEQVFRQUFBQUFBQUFBWldlOHVB
QUFBZ0FBQUFBQUFBQkdBQUFBQUFBQUFBUUFBQUFDQUM1eVpHRjAKWVFBQUFBQUFBQVVBQUFBREFR
UUFBQUFBQUFBQVpPQzlid0FBQWdBQUFBQUFBQUNSQUFBQUFBQUFBQVVBQUFBQ0FDNXlaR0YwWVFB
QQpBQUFBQUFZQUFBQURBUVFBQUFBQUFBQUFpOGdKcWdBQUFnQUFBQUFBQUFDL0FBQUFBQUFBQUFZ
QUFBQUNBQzV5WkdGMFlRQUFBQUFBCkFBY0FBQUFEQVFRQUFBQUFBQUFBVjVkaWp3QUFBZ0FBQUFB
QUFBRHRBQUFBQUFBQUFBY0FBQUFDQUM1eVpHRjBZUUFBQUFBQUFBZ0EKQUFBREFRUUFBQUFBQUFB
QU12RGVOd0FBQWdBQUFBQUFBQUFuQVFBQUFBQUFBQWdBQUFBQ0FDNXlaR0YwWVFBQUFBQUFBQWtB
QUFBRApBUVFBQUFBQUFBQUFWNWRpandBQUFnQUFBQUFBQUFCVEFRQUFBQUFBQUFrQUFBQUNBQzUw
WlhoMEFBQUFBQUFBQUFvQUFBQURBUW9BCkFBQUFBQUFBYm5NM2V3QUFBZ0FBQUM1a1pXSjFaeVJU
QUFBQUFBc0FBQUFEQWVRQUFBQUZBQUFBQUFBQUFBb0FCUUFBQUFBQUFBQ0wKQVFBQUFBQUFBQW9B
SUFBQ0FDNTBaWGgwQUFBQUFBQUFBQXdBQUFBREFRb0FBQUFBQUFBQXZ5T3FNUUFBQWdBQUFDNWta
V0oxWnlSVApBQUFBQUEwQUFBQURBZkFBQUFBRkFBQUFBQUFBQUF3QUJRQUFBQUFBQUFETEFRQUFB
QUFBQUF3QUlBQUNBQUFBQUFENUFRQUFBQUFBCkFBQUFBQUFDQUM1MFpYaDBBQUFBQUFBQUFBNEFB
QUFEQVFvQUFBQUFBQUFBVUFzZTlBQUFBZ0FBQUM1a1pXSjFaeVJUQUFBQUFBOEEKQUFBREFmQUFB
QUFGQUFBQUFBQUFBQTRBQlFBQUFBQUFBQUFEQWdBQUFBQUFBQTRBSUFBQ0FDNTBaWGgwQUFBQUFB
QUFBQkFBQUFBRApBUWNBQUFBQkFBQUFxdUdMd0FBQUFnQUFBQzVrWldKMVp5UlRBQUFBQUJFQUFB
QURBZGdBQUFBRkFBQUFBQUFBQUJBQUJRQUFBQUFBCkFBQXZBZ0FBQUFBQUFCQUFJQUFDQUM1eVpH
RjBZUUFBQUFBQUFCSUFBQUFEQVJ3QUFBQUhBQUFBQUFBQUFBQUFBZ0FBQUFBQUFBQkkKQWdBQUFB
QUFBQklBQUFBQ0FBQUFBQUJmQWdBQUFBQUFBQUFBSUFBQ0FBQUFBQUI4QWdBQUFBQUFBQUFBSUFC
cEFUTUFBQUFDQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFDWkFnQUFBQUFBQUFBQUlBQUNBQzUwWlho
MEFBQUFBQUFBQUJNQUFBQURBUjhBQUFBQ0FBQUF1MGp6Cm1nQUFBZ0FBQUM1a1pXSjFaeVJUQUFB
QUFCUUFBQUFEQWR3QUFBQURBQUFBQUFBQUFCTUFCUUFBQUFBQUFBQ2tBZ0FBQUFBQUFCTUEKSUFB
Q0FBQUFBQURCQWdBQUFBQUFBQUFBSUFBQ0FDNTBaWGgwQUFBQUFBQUFBQlVBQUFBREFRa0FBQUFC
QUFBQU5PdmJXUUFBQWdBQQpBQzVrWldKMVp5UlRBQUFBQUJZQUFBQURBYkFBQUFBREFBQUFBQUFB
QUJVQUJRQUFBQUFBQUFET0FnQUFBQUFBQUJVQUlBQUNBQzUwClpYaDBBQUFBQUFBQUFCY0FBQUFE
QVpnQUFBQUdBQUFBOERFNXB3QUFBUUFBQUM1a1pXSjFaeVJUQUFBQUFCZ0FBQUFEQWJnQkFBQVAK
QUFBQUFBQUFBQmNBQlFBQUFBQUFBQURuQWdBQUFBQUFBQmNBSUFBQ0FBQUFBQUF1QXdBQUFBQUFB
QUFBQUFBQ0FDNXlaR0YwWVFBQQpBQUFBQUJrQUFBQURBUVFBQUFBQUFBQUFkclhsalFBQUFnQUFB
QUFBQUFCSEF3QUFBQUFBQUJrQUFBQUNBQzV5WkdGMFlRQUFBQUFBCkFCb0FBQUFEQVFRQUFBQUFB
QUFBVmpaZFlBQUFBZ0FBQUFBQUFBQlhBd0FBQUFBQUFCb0FBQUFDQUFBQUFBQm5Bd0FBQUFBQUFB
QUEKQUFBQ0FDNXlaR0YwWVFBQUFBQUFBQnNBQUFBREFRUUFBQUFBQUFBQUFBQUFBQUFBQWdBQUFB
QUFBQUNFQXdBQUFBQUFBQnNBQUFBQwpBQUFBQUFDVUF3QUFBQUFBQUFBQUFBQUNBQUFBQUFDcEF3
QUFBQUFBQUFBQUFBQUNBQUFBQUFDK0F3QUFBQUFBQUFBQUFBQUNBQzUwClpYaDBBQUFBQUFBQUFC
d0FBQUFEQVE4QUFBQUJBQUFBdi81TGh3QUFBUUFBQUM1a1pXSjFaeVJUQUFBQUFCMEFBQUFEQVJn
QkFBQUgKQUFBQUFBQUFBQndBQlFBQUFBQUFBQURaQXdBQUFBQUFBQndBSUFBQ0FBQUFBQUFiQkFB
QUFBQUFBQUFBQUFBQ0FDNTBaWGgwQUFBQQpBQUFBQUI0QUFBQURBVW9BQUFBQUFBQUF3RHRZZ1FB
QUFRQUFBQzVrWldKMVp5UlRBQUFBQUI4QUFBQURBV1FCQUFBSkFBQUFBQUFBCkFCNEFCUUFBQUFB
QUFBQTVCQUFBQUFBQUFCNEFJQUFDQUM1MFpYaDBBQUFBQUFBQUFDQUFBQUFEQVU0QUFBQUFBQUFB
QjB0NC9BQUEKQVFBQUFDNWtaV0oxWnlSVEFBQUFBQ0VBQUFBREFWd0JBQUFKQUFBQUFBQUFBQ0FB
QlFBQUFBQUFBQUJ5QkFBQUFBQUFBQ0FBSUFBQwpBQzUwWlhoMEFBQUFBQUFBQUNJQUFBQURBVHdB
QUFBQkFBQUF1R3lnN2dBQUFRQUFBQzVrWldKMVp5UlRBQUFBQUNNQUFBQURBVmdCCkFBQUpBQUFB
QUFBQUFDSUFCUUFBQUFBQUFBQ3FCQUFBQUFBQUFDSUFJQUFDQUFBQUFBRFlCQUFBQUFBQUFBQUFB
QUFDQUM1MFpYaDAKQUFBQUFBQUFBQ1FBQUFBREFVOEFBQUFBQUFBQTVKRFVrUUFBQVFBQUFDNWta
V0oxWnlSVEFBQUFBQ1VBQUFBREFZUUJBQUFKQUFBQQpBQUFBQUNRQUJRQUFBQUFBQUFEcUJBQUFB
QUFBQUNRQUlBQUNBQzUwWlhoMEFBQUFBQUFBQUNZQUFBQURBUWtBQUFBQkFBQUFOT3ZiCldRQUFB
Z0FBQUM1a1pXSjFaeVJUQUFBQUFDY0FBQUFEQWJ3QUFBQURBQUFBQUFBQUFDWUFCUUFBQUFBQUFB
QXpCUUFBQUFBQUFDWUEKSUFBQ0FDNXlaR0YwWVFBQUFBQUFBQ2dBQUFBREFSd0FBQUFIQUFBQUFB
QUFBQUFBQWdBQUFBQUFBQUJTQlFBQUFBQUFBQ2dBQUFBQwpBQUFBQUFCdkJRQUFBQUFBQUFBQUlB
QUNBQUFBQUFDU0JRQUFBQUFBQUFBQUlBQnBBWGdBQUFBQ0FBQUFBQUFBQUFBQUFBQUFBQUFBCkFB
QzFCUUFBQUFBQUFBQUFJQUFDQUFBQUFBRDBCUUFBQUFBQUFBQUFJQUFDQUM1MFpYaDBBQUFBQUFB
QUFDa0FBQUFEQVFjQUFBQUIKQUFBQXF1R0x3QUFBQWdBQUFDNWtaV0oxWnlSVEFBQUFBQ29BQUFB
REFid0FBQUFEQUFBQUFBQUFBQ2tBQlFBQUFBQUFBQUF4QmdBQQpBQUFBQUNrQUlBQUNBQzUwWlho
MEFBQUFBQUFBQUNzQUFBQURBUWtBQUFBQkFBQUFOT3ZiV1FBQUFnQUFBQzVrWldKMVp5UlRBQUFB
CkFDd0FBQUFEQWNBQUFBQURBQUFBQUFBQUFDc0FCUUFBQUFBQUFBQlFCZ0FBQUFBQUFDc0FJQUFD
QUM1eVpHRjBZUUFBQUFBQUFDMEEKQUFBREFSd0FBQUFIQUFBQUFBQUFBQUFBQWdBQUFBQUFBQUJ4
QmdBQUFBQUFBQzBBQUFBQ0FBQUFBQUNRQmdBQUFBQUFBQUFBSUFBQwpBQUFBQUFDMUJnQUFBQUFB
QUFBQUlBQnBBWW9BQUFBQ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFEYUJnQUFBQUFBQUFBQUlBQUNB
QUFBCkFBQWJCd0FBQUFBQUFBQUFJQUFDQUM1MFpYaDBBQUFBQUFBQUFDNEFBQUFEQVFjQUFBQUJB
QUFBcXVHTHdBQUFBZ0FBQUM1a1pXSjEKWnlSVEFBQUFBQzhBQUFBREFjQUFBQUFEQUFBQUFBQUFB
QzRBQlFBQUFBQUFBQUJhQndBQUFBQUFBQzRBSUFBQ0FDNTBaWGgwQUFBQQpBQUFBQURBQUFBQURB
UjhBQUFBQ0FBQUF1MGp6bWdBQUFnQUFBQzVrWldKMVp5UlRBQUFBQURFQUFBQURBZVFBQUFBREFB
QUFBQUFBCkFEQUFCUUFBQUFBQUFBQjdCd0FBQUFBQUFEQUFJQUFDQUM1MFpYaDBBQUFBQUFBQUFE
SUFBQUFEQVI4QUFBQUNBQUFBdTBqem1nQUEKQWdBQUFDNWtaV0oxWnlSVEFBQUFBRE1BQUFBREFl
UUFBQUFEQUFBQUFBQUFBRElBQlFBQUFBQUFBQUNlQndBQUFBQUFBRElBSUFBQwpBQzUwWlhoMEFB
QUFBQUFBQURRQUFBQURBWVVBQUFBT0FBQUFwT1BOelFBQUFRQUFBQzVrWldKMVp5UlRBQUFBQURV
QUFBQURBWHdCCkFBQUpBQUFBQUFBQUFEUUFCUUFBQUFBQUFBRERCd0FBQUFBQUFEUUFJQUFEQUM1
aWMzTUFBQUFBQUFBQUFEWUFBQUFEQVFRQUFBQUEKQUFBQUFBQUFBQUFBQWdBQUFBQUFBQUR1QndB
QUFBQUFBRFlBQUFBREFDNWljM01BQUFBQUFBQUFBRGNBQUFBREFRUUFBQUFBQUFBQQpBQUFBQUFB
QUFnQUFBQUFBQUFCTENBQUFBQUFBQURjQUFBQURBQUFBQUFDa0NBQUFBQUFBQUFBQUlBQUNBQzVp
YzNNQUFBQUFBQUFBCkFEZ0FBQUFEQVFRQUFBQUFBQUFBQUFBQUFBQUFBZ0FBQUFBQUFBQ3hDQUFB
QUFBQUFEZ0FBQUFEQUM1MFpYaDBBQUFBQUFBQUFEa0EKQUFBREFUY0FBQUFCQUFBQThyRzFFZ0FB
QVFBQUFDNWtaV0oxWnlSVEFBQUFBRG9BQUFBREFWd0JBQUFIQUFBQUFBQUFBRGtBQlFBQQpBQUFB
QUFEb0NBQUFBQUFBQURrQUlBQUNBQzUwWlhoMEFBQUFBQUFBQURzQUFBQURBVVFBQUFBQkFBQUFF
THFEOGdBQUFRQUFBQzVrClpXSjFaeVJUQUFBQUFEd0FBQUFEQVRBQkFBQUhBQUFBQUFBQUFEc0FC
UUFBQUFBQUFBRCtDQUFBQUFBQUFEc0FJQUFDQUM1MFpYaDAKQUFBQUFBQUFBRDBBQUFBREFVUUFB
QUFCQUFBQUJTQk5yZ0FBQVFBQUFDNWtaV0oxWnlSVEFBQUFBRDRBQUFBREFUd0JBQUFIQUFBQQpB
QUFBQUQwQUJRQUFBQUFBQUFBVUNRQUFBQUFBQUQwQUlBQUNBQzUwWlhoMEFBQUFBQUFBQUQ4QUFB
QURBVThBQUFBQkFBQUFWNVVNCklBQUFBUUFBQUM1a1pXSjFaeVJUQUFBQUFFQUFBQUFEQVhRQkFB
QUhBQUFBQUFBQUFEOEFCUUFBQUFBQUFBQW5DUUFBQUFBQUFEOEEKSUFBQ0FDNWtaV0oxWnlSVEFB
QUFBRUVBQUFBREFTQUFBQUFDQUFBQUFBQUFBRGdBQlFBQUFDNWtaV0oxWnlSVUFBQUFBRUlBQUFB
RApBV1FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRDhKQUFBL1ltRmphMmR5YjNWdVpGSmhaR2wxYzBC
TlpXUnBZVk5vWVhKbFpGVkpWbTlzCmRXMWxVMnhwWkdWeVFtRmphMmR5YjNWdVpFVnNaVzFsYm5S
QVFEQkpRZ0EvWW1GamEyZHliM1Z1WkZOMGNtOXJaVlJvYVdOcmJtVnoKYzBCTlpXUnBZVk5vWVhK
bFpGVkpWbTlzZFcxbFUyeHBaR1Z5UW1GamEyZHliM1Z1WkVWc1pXMWxiblJBUURCSlFnQS9kSEpo
WTJ0SQpaV2xuYUhSQVRXVmthV0ZUYUdGeVpXUlZTVlJwYldWc2FXNWxVMnhwWkdWeVFFQXdTVUlB
UDNSeVlXTnJUMlptYzJWMFFFMWxaR2xoClUyaGhjbVZrVlVsVWFXMWxiR2x1WlZOc2FXUmxja0JB
TUVsQ0FEOTBhSFZ0WWxKaFpHbDFjMEJOWldScFlWTm9ZWEpsWkZWSlZHbHQKWld4cGJtVlRiR2xr
WlhKVWFIVnRZa1ZzWlcxbGJuUkFRREJKUWdBL2RISmhZMnRTWVdScGRYTkFUV1ZrYVdGVGFHRnla
V1JWU1ZadgpiSFZ0WlZOc2FXUmxja0JBTUVsQ0FEOTBhSFZ0WWxKaFpHbDFjMEJOWldScFlWTm9Z
WEpsWkZWSlZtOXNkVzFsVTJ4cFpHVnlWR2gxCmJXSkZiR1Z0Wlc1MFFFQXdTVUlBUDNObGRGTjBZ
WFJsUUUxbFpHbGhWVWxGYkdWdFpXNTBRRUJSUVVWWVZ6UlhTMDFsWkdsaFEyOXUKZEhKdmJHeGxj
bFJvWlcxbFUzUmhkR1ZBUUVCYUFEOXpaWFJVYVcxbFRHOWhaR1ZrUUUxbFpHbGhWVWxVYVcxbGJH
bHVaVk5zYVdSbApja0JBVVVGRldFNUFXZ0JmWDJac2RIVnpaV1FBUDNObGRFUjFjbUYwYVc5dVFF
MWxaR2xoVlVsVWFXMWxiR2x1WlZOc2FXUmxja0JBClVVRkZXRTVBV2dBL1B6Rk5aV1JwWVVOdmJu
UnliMnh6UUVCVlFVVkFXRm9BUHo5Zk4wMWxaR2xoUTI5dWRISnZiSE5BUURaQ1FBQS8KUDE5SFRX
VmthV0ZEYjI1MGNtOXNjMEJBVlVGRlVFRllTVUJhQUQ4L1gwVk5aV1JwWVVOdmJuUnliMnh6UUVC
VlFVVlFRVmhKUUZvQQpYMTl3ZFhKbFkyRnNiQUEvUDE5SFRXVmthV0ZEYjI1MGNtOXNjMEJBVlVG
RlVFRllTVUJhQUQ4L00wQlpRVmhRUVZoQVdnQS9QekJOClpXUnBZVU52Ym5SeWIyeHpRRUJSUVVW
QVdGb0FQM05sZEZWd1EyOXVkR1Y0ZEVadmNsQmhhVzUwYVc1blFFMWxaR2xoVlVsRmJHVnQKWlc1
MFFFQk5Ra1ZZVUVGVlEwZERiMjUwWlhoMFFFQlZRMGRTWldOMFFFQkFXZ0JmWDJsdGNGOWZRMGRE
YjI1MFpYaDBVMk5oYkdWRApWRTBBWDE5eVpXRnNRRE5tT0RBd01EQXdBRjlmY21WaGJFQmlaamd3
TURBd01BQmZYMmx0Y0Y5ZlEwZERiMjUwWlhoMFZISmhibk5zCllYUmxRMVJOQUY5ZmNtVmhiRUF3
TURBd01EQXdNQUJmWDJsdGNGOWZRMGRTWldOMFIyVjBUV2x1V1FCZlgybHRjRjlmUTBkU1pXTjAK
UjJWMFRXRjRXUUJmWDJsdGNGOWZRMGREYjI1MFpYaDBVMkYyWlVkVGRHRjBaUUEvY21WemRHOXla
VU52Ym5SbGVIUkJablJsY2xCaAphVzUwYVc1blFFMWxaR2xoVlVsRmJHVnRaVzUwUUVCTlFrVllV
RUZWUTBkRGIyNTBaWGgwUUVCQVdnQmZYMmx0Y0Y5ZlEwZERiMjUwClpYaDBVbVZ6ZEc5eVpVZFRk
R0YwWlFBL1pISmhkMUJoY25SQVRXVmthV0ZEYjI1MGNtOXNjMEJBVlVGRldFaFFRVlZEUjBOdmJu
UmwKZUhSQVFGVkRSMUpsWTNSQVFFbEFXZ0EvYUdsMFZHVnpkRkJoY25SQVRXVmthV0ZEYjI1MGNt
OXNjMEJBVlVKRlgwNUlWVU5IVW1WagpkRUJBVlVOSFVHOXBiblJBUUVCYUFEOXVZWFIxY21Gc1Uy
bDZaVUJOWldScFlVTnZiblJ5YjJ4elFFQlZRa1UvUVZWRFIxTnBlbVZBClFFaEFXZ0JmWDJsdGNG
OWZRMGRUYVhwbFdtVnlid0EvWkhKaGQxUnBiV1ZzYVc1bFUyeHBaR1Z5VkhKaFkydEFUV1ZrYVdG
RGIyNTAKY205c2MwQkFWVUZGV0ZCQlZVTkhRMjl1ZEdWNGRFQkFWVU5IVW1WamRFQkFUazVKUUZv
QVB6OHdUV1ZrYVdGTVpXZGhZM2xEYjI1MApjbTlzYzBCQVVVRkZRRmhhQUQ4L1h6ZE5aV1JwWVV4
bFoyRmplVU52Ym5SeWIyeHpRRUEyUWtBQVB6OWZSMDFsWkdsaFRHVm5ZV041ClEyOXVkSEp2YkhO
QVFGVkJSVkJCV0VsQVdnQS9QMTlGVFdWa2FXRk1aV2RoWTNsRGIyNTBjbTlzYzBCQVZVRkZVRUZZ
U1VCYUFEOWoKYjI1MGNtOXNSbTl5VUdGeWRFQk5aV1JwWVV4bFoyRmplVU52Ym5SeWIyeHpRRUJW
UWtWUVFWWk5aV1JwWVZWSlJXeGxiV1Z1ZEVCQQpTRUJhQUQ5emJHbGtaWEpBVFdWa2FXRk1aV2Ro
WTNsRGIyNTBjbTlzYzBCQVZVSkZVRUZXVFdWa2FXRlZTVlJwYldWc2FXNWxVMnhwClpHVnlRRUJZ
V2dBL1B6Rk5aV1JwWVV4bFoyRmplVU52Ym5SeWIyeHpRRUJWUVVWQVdGb0FQejh3VFdWa2FXRlRh
R0Z5WldSVlNVTnYKYm5SeWIyeHpRRUJSUVVWQVdGb0FQejlmTjAxbFpHbGhVMmhoY21Wa1ZVbERi
MjUwY205c2MwQkFOa0pBQUQ4L1gwZE5aV1JwWVZObwpZWEpsWkZWSlEyOXVkSEp2YkhOQVFGVkJS
VkJCV0VsQVdnQS9QMTlGVFdWa2FXRlRhR0Z5WldSVlNVTnZiblJ5YjJ4elFFQlZRVVZRClFWaEpR
Rm9BUDJOdmJuUnliMnhHYjNKUVlYSjBRRTFsWkdsaFUyaGhjbVZrVlVsRGIyNTBjbTlzYzBCQVZV
SkZVRUZXVFdWa2FXRlYKU1VWc1pXMWxiblJBUUVoQVdnQS9jMnhwWkdWeVFFMWxaR2xoVTJoaGNt
VmtWVWxEYjI1MGNtOXNjMEJBVlVKRlVFRldUV1ZrYVdGVgpTVlJwYldWc2FXNWxVMnhwWkdWeVFF
QllXZ0EvUHpGTlpXUnBZVk5vWVhKbFpGVkpRMjl1ZEhKdmJITkFRRlZCUlVCWVdnQS9QMTlIClRX
VmthV0ZNWldkaFkzbERiMjUwY205c2MwQkFWVUZGVUVGWVNVQmFBRDgvWDBkTlpXUnBZVk5vWVhK
bFpGVkpRMjl1ZEhKdmJITkEKUUZWQlJWQkJXRWxBV2dBL1kyOXVkSEp2YkhOR2IzSlVhR1Z0WlVC
QVdVRlFRVlpOWldScFlVTnZiblJ5YjJ4elFFQklRRm9BUDNObwpZWEpsWkZWSlEyOXVkSEp2YkhO
QVB6Yy9QMk52Ym5SeWIyeHpSbTl5VkdobGJXVkFRRmxCVUVGV1RXVmthV0ZEYjI1MGNtOXNjMEJB
ClNFQmFRRFJRUVZaTlpXUnBZVk5vWVhKbFpGVkpRMjl1ZEhKdmJITkFRRUVBUDJ4bFoyRmplVU52
Ym5SeWIyeHpRRDgwUHo5amIyNTAKY205c2MwWnZjbFJvWlcxbFFFQlpRVkJCVmsxbFpHbGhRMjl1
ZEhKdmJITkFRRWhBV2tBMFVFRldUV1ZrYVdGTVpXZGhZM2xEYjI1MApjbTlzYzBCQVFRQS9QekpB
V1VGUVFWaEpRRm9BUHlSVE1VQS9ORDgvWTI5dWRISnZiSE5HYjNKVWFHVnRaVUJBV1VGUVFWWk5a
V1JwCllVTnZiblJ5YjJ4elFFQklRRnBBTkVsQkFGOVhTMDFsWVhOMWNtVk5aV1JwWVZWSlVHRnlk
QUJmVjB0SWFYUlVaWE4wVFdWa2FXRlYKU1ZCaGNuUUFYMWRMUkhKaGQwMWxaR2xoVlVsUVlYSjBB
RjlYUzBSeVlYZE5aV1JwWVZOc2FXUmxjbFJ5WVdOckFDOHlORGdnSUNBZwpJQ0FnSUNBZ0lDQXhN
amt5TURBek9UYzNJQ0FnSUNBZ0lDQWdJQ0FnSUNBeE1EQTJOallnSURFeE9EVXpNU0FnSUNCZ0Nr
d0JvQUNKCmFnSk5hNUVCQVBVQkFBQUFBQUFBTG1SeVpXTjBkbVVBQUFBQUFBQUFBTU1BQUFBVUdR
QUFBQUFBQUFBQUFBQUFBQUFBQUFvUUFDNWsKWldKMVp5UlRBQUFBQUFBQUFBRHdWd0FBMXhrQUFN
ZHhBQUFBQUFBQU5nQUFBRUFBRUVJdWNtUmhkR0VBQUFBQUFBQUFBQUFBVVpJQQpBT056QUFBQUFB
QUFBQUFBQUFBQUFBQkFBRUJBTG5SbGVIUUFBQUFBQUFBQUFBQUFBQjBBQUFBMEJnRUFBQUFBQUFB
QUFBQUFBQUFBCklCQlFZQzVrWldKMVp5UlRBQUFBQUFBQUFBRDhBQUFBVVFZQkFFMEhBUUFBQUFB
QUJRQUFBRUFRRUVJdWRHVjRkQUFBQUFBQUFBQUEKQUFBQUhBQUFBSDhIQVFBQUFBQUFBQUFBQUFB
QUFBQWdFRkJnTG1SbFluVm5KRk1BQUFBQUFBQUFBQkFCQUFDYkJ3RUFxd2dCQUFBQQpBQUFGQUFB
QVFCQVFRaTUwWlhoMEFBQUFBQUFBQUFBQUFBQUhBQUFBM1FnQkFPUUlBUUFBQUFBQUFRQUFBQ0FR
VUdBdVpHVmlkV2NrClV3QUFBQUFBQUFBQTJBQUFBTzRJQVFER0NRRUFBQUFBQUFVQUFBQkFFQkJD
TG5Ka1lYUmhBQUFBQUFBQUFBQUFBQmdBQUFENENRRUEKRUFvQkFBQUFBQUFHQUFBQVFCQXdRQzUw
WlhoMEFBQUFBQUFBQUFBQUFBQTJBQUFBVEFvQkFJSUtBUUFBQUFBQUFRQUFBQ0FRVUdBdQpaR1Zp
ZFdja1V3QUFBQUFBQUFBQUNBRUFBSXdLQVFDVUN3RUFBQUFBQUFjQUFBQkFFQkJDTG5SbGVIUUFB
QUFBQUFBQUFBQUFBQmNBCkFBRGFDd0VBOFFzQkFBQUFBQUFCQUFBQUlCQlFZQzVrWldKMVp5UlRB
QUFBQUFBQUFBRFVBQUFBK3dzQkFNOE1BUUFBQUFBQUJRQUEKQUVBUUVFSXVkR1Y0ZEFBQUFBQUFB
QUFBQUFBQUNnQUFBQUVOQVFBQUFBQUFBQUFBQUFBQUFBQWdFRkJnTG1SbFluVm5KRk1BQUFBQQpB
QUFBQU9nQUFBQUxEUUVBOHcwQkFBQUFBQUFGQUFBQVFCQVFRaTUwWlhoMEFBQUFBQUFBQUFBQUFB
QUVBQUFBSlE0QkFBQUFBQUFBCkFBQUFBQUFBQUNBUVVHQXVaR1ZpZFdja1V3QUFBQUFBQUFBQTBB
QUFBQ2tPQVFENURnRUFBQUFBQUFVQUFBQkFFQkJDTG5SbGVIUUEKQUFBQUFBQUFBQUFBQUFnQUFB
QXJEd0VBQUFBQUFBQUFBQUFBQUFBQUlCQlFZQzVrWldKMVp5UlRBQUFBQUFBQUFBRFVBQUFBTXc4
QgpBQWNRQVFBQUFBQUFCUUFBQUVBUUVFSXVkR1Y0ZEFBQUFBQUFBQUFBQUFBQUh3QUFBRGtRQVFC
WUVBRUFBQUFBQUFJQUFBQWdFRkJnCkxtUmxZblZuSkZNQUFBQUFBQUFBQU9BQUFBQnNFQUVBVEJF
QkFBQUFBQUFEQUFBQVFCQVFRaTUwWlhoMEFBQUFBQUFBQUFBQUFBQUUKQUFBQWFoRUJBQUFBQUFB
QUFBQUFBQUFBQUNBUVVHQXVaR1ZpZFdja1V3QUFBQUFBQUFBQTNBQUFBRzRSQVFCS0VnRUFBQUFB
QUFVQQpBQUJBRUJCQ0xuUmxlSFFBQUFBQUFBQUFBQUFBQUFRQUFBQjhFZ0VBQUFBQUFBQUFBQUFB
QUFBQUlCQlFZQzVrWldKMVp5UlRBQUFBCkFBQUFBQURZQUFBQWdCSUJBRmdUQVFBQUFBQUFCUUFB
QUVBUUVFSXVkR1Y0ZEFBQUFBQUFBQUFBQUFBQUZRQUFBSW9UQVFBQUFBQUEKQUFBQUFBQUFBQUFn
RUZCZ0xtUmxZblZuSkZNQUFBQUFBQUFBQU9BQUFBQ2ZFd0VBZnhRQkFBQUFBQUFGQUFBQVFCQVFR
aTV5WkdGMApZUUFBQUFBQUFBQUFBQUFJQUFBQXNSUUJBQUFBQUFBQUFBQUFBQUFBQUVBUVFFQXVk
R1Y0ZEFBQUFBQUFBQUFBQUFBQUd3QUFBTGtVCkFRRFVGQUVBQUFBQUFBRUFBQUFnRUZCZ0xtUmxZ
blZuSkZNQUFBQUFBQUFBQU1BQUFBRGVGQUVBbmhVQkFBQUFBQUFGQUFBQVFCQVEKUWk1MFpYaDBB
QUFBQUFBQUFBQUFBQUFiQUFBQTBCVUJBT3NWQVFBQUFBQUFBUUFBQUNBUVVHQXVaR1ZpZFdja1V3
QUFBQUFBQUFBQQoxQUFBQVBVVkFRREpGZ0VBQUFBQUFBVUFBQUJBRUJCQ0xuUmxlSFFBQUFBQUFB
QUFBQUFBQUhBQUFBRDdGZ0VBYXhjQkFBQUFBQUFLCkFBQUFJQkJRWUM1a1pXSjFaeVJUQUFBQUFB
QUFBQUNJQVFBQXp4Y0JBRmNaQVFBQUFBQUFFUUFBQUVBUUVFSXVZbk56QUFBQUFBQUEKQUFBQUFB
QUFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBRUREQUxuUmxlSFFBQUFBQUFBQUFBQUFBQUhB
QUFBQUJHZ0VBY1JvQgpBQUFBQUFBS0FBQUFJQkJRWUM1a1pXSjFaeVJUQUFBQUFBQUFBQUNNQVFB
QTFSb0JBR0VjQVFBQUFBQUFFUUFBQUVBUUVFSXVZbk56CkFBQUFBQUFBQUFBQUFBQUFCQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUNBRUREQUxuUmxlSFFBQUFBQUFBQUFBQUFBQUhBQUFBQUwKSFFF
QWV4MEJBQUFBQUFBS0FBQUFJQkJRWUM1a1pXSjFaeVJUQUFBQUFBQUFBQUNBQVFBQTN4MEJBRjhm
QVFBQUFBQUFFUUFBQUVBUQpFRUl1WW5OekFBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUNBRUREQUxuUmxlSFFBQUFBQUFBQUFBQUFBCkFIQUFBQUFKSUFFQWVTQUJBQUFB
QUFBS0FBQUFJQkJRWUM1a1pXSjFaeVJUQUFBQUFBQUFBQUNJQVFBQTNTQUJBR1VpQVFBQUFBQUEK
RVFBQUFFQVFFRUl1WW5OekFBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUNBRUREQUxuUmxlSFFBQUFBQQpBQUFBQUFBQUFIQUFBQUFQSXdFQWZ5TUJBQUFBQUFBS0FBQUFJ
QkJRWUM1a1pXSjFaeVJUQUFBQUFBQUFBQUNBQVFBQTR5TUJBR01sCkFRQUFBQUFBRVFBQUFFQVFF
RUl1WW5OekFBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBRUREQUxu
UmwKZUhRQUFBQUFBQUFBQUFBQUFIQUFBQUFOSmdFQWZTWUJBQUFBQUFBS0FBQUFJQkJRWUM1a1pX
SjFaeVJUQUFBQUFBQUFBQUNJQVFBQQo0U1lCQUdrb0FRQUFBQUFBRVFBQUFFQVFFRUl1WW5OekFB
QUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBCkVEREFMblJsZUhRQUFB
QUFBQUFBQUFBQUFIQUFBQUFUS1FFQWd5a0JBQUFBQUFBS0FBQUFJQkJRWUM1a1pXSjFaeVJUQUFB
QUFBQUEKQUFDQUFRQUE1eWtCQUdjckFRQUFBQUFBRVFBQUFFQVFFRUl1WW5OekFBQUFBQUFBQUFB
QUFBQUFCQUFBQUFBQUFBQUFBQUFBQUFBQQpBQUFBQUFDQUVEREFMblJsZUhRQUFBQUFBQUFBQUFB
QUFIQUFBQUFSTEFFQWdTd0JBQUFBQUFBS0FBQUFJQkJRWUM1a1pXSjFaeVJUCkFBQUFBQUFBQUFD
SUFRQUE1U3dCQUcwdUFRQUFBQUFBRVFBQUFFQVFFRUl1WW5OekFBQUFBQUFBQUFBQUFBQUFCQUFB
QUFBQUFBQUEKQUFBQUFBQUFBQUFBQUFDQUVEREFMblJsZUhRQUFBQUFBQUFBQUFBQUFIQUFBQUFY
THdFQWh5OEJBQUFBQUFBS0FBQUFJQkJRWUM1awpaV0oxWnlSVEFBQUFBQUFBQUFDRUFRQUE2eThC
QUc4eEFRQUFBQUFBRVFBQUFFQVFFRUl1WW5OekFBQUFBQUFBQUFBQUFBQUFCQUFBCkFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFDQUVEREFMblJsZUhRQUFBQUFBQUFBQUFBQUFIQUFBQUFaTWdFQWlUSUJB
QUFBQUFBS0FBQUEKSUJCUVlDNWtaV0oxWnlSVEFBQUFBQUFBQUFDSUFRQUE3VElCQUhVMEFRQUFB
QUFBRVFBQUFFQVFFRUl1WW5OekFBQUFBQUFBQUFBQQpBQUFBQkFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFDQUVEREFMblJsZUhRQUFBQUFBQUFBQUFBQUFIQUFBQUFmTlFFQWp6VUJBQUFBCkFBQUtB
QUFBSUJCUVlDNWtaV0oxWnlSVEFBQUFBQUFBQUFDSUFRQUE4elVCQUhzM0FRQUFBQUFBRVFBQUFF
QVFFRUl1WW5OekFBQUEKQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQUVE
REFMblJsZUhRQUFBQUFBQUFBQUFBQUFIQUFBQUFsT0FFQQpsVGdCQUFBQUFBQUtBQUFBSUJCUVlD
NWtaV0oxWnlSVEFBQUFBQUFBQUFDUUFRQUErVGdCQUlrNkFRQUFBQUFBRVFBQUFFQVFFRUl1Cllu
TnpBQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQUVEREFMblJsZUhR
QUFBQUFBQUFBQUFBQUFIQUEKQUFBek93RUFvenNCQUFBQUFBQUtBQUFBSUJCUVlDNWtaV0oxWnlS
VEFBQUFBQUFBQUFDUUFRQUFCendCQUpjOUFRQUFBQUFBRVFBQQpBRUFRRUVJdVluTnpBQUFBQUFB
QUFBQUFBQUFBQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQUVEREFMblJsZUhRQUFBQUFBQUFB
CkFBQUFBSEFBQUFCQlBnRUFzVDRCQUFBQUFBQUtBQUFBSUJCUVlDNWtaV0oxWnlSVEFBQUFBQUFB
QUFDVUFRQUFGVDhCQUtsQUFRQUEKQUFBQUVRQUFBRUFRRUVJdVluTnpBQUFBQUFBQUFBQUFBQUFB
QkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQUVEREFMblJsZUhRQQpBQUFBQUFBQUFBQUFBSEFB
QUFCVFFRRUF3MEVCQUFBQUFBQUtBQUFBSUJCUVlDNWtaV0oxWnlSVEFBQUFBQUFBQUFDTUFRQUFK
MElCCkFMTkRBUUFBQUFBQUVRQUFBRUFRRUVJdVluTnpBQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFDQUVEREEKTG5SbGVIUUFBQUFBQUFBQUFBQUFBSEFBQUFCZFJBRUF6
VVFCQUFBQUFBQUtBQUFBSUJCUVlDNWtaV0oxWnlSVEFBQUFBQUFBQUFDVQpBUUFBTVVVQkFNVkdB
UUFBQUFBQUVRQUFBRUFRRUVJdVluTnpBQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBCkFBQ0FFRERBTG5SbGVIUUFBQUFBQUFBQUFBQUFBSEFBQUFCdlJ3RUEzMGNCQUFBQUFB
QUtBQUFBSUJCUVlDNWtaV0oxWnlSVEFBQUEKQUFBQUFBQ1FBUUFBUTBnQkFOTkpBUUFBQUFBQUVR
QUFBRUFRRUVJdVluTnpBQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUFBQUFBQQpBQUFBQUFBQUFB
Q0FFRERBTG5SbGVIUUFBQUFBQUFBQUFBQUFBSEFBQUFCOVNnRUE3VW9CQUFBQUFBQUtBQUFBSUJC
UVlDNWtaV0oxClp5UlRBQUFBQUFBQUFBQ1lBUUFBVVVzQkFPbE1BUUFBQUFBQUVRQUFBRUFRRUVJ
dVluTnpBQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUEKQUFBQUFBQUFBQUFBQUFBQUFBQ0FFRERBTG5S
bGVIUUFBQUFBQUFBQUFBQUFBSEFBQUFDVFRRRUFBMDRCQUFBQUFBQUtBQUFBSUJCUQpZQzVrWldK
MVp5UlRBQUFBQUFBQUFBQ0FBUUFBWjA0QkFPZFBBUUFBQUFBQUVRQUFBRUFRRUVJdVluTnpBQUFB
QUFBQUFBQUFBQUFBCkJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FFRERBTG5SbGVIUUFBQUFB
QUFBQUFBQUFBSEFBQUFDUlVBRUFBVkVCQUFBQUFBQUsKQUFBQUlCQlFZQzVrWldKMVp5UlRBQUFB
QUFBQUFBQ0lBUUFBWlZFQkFPMVNBUUFBQUFBQUVRQUFBRUFRRUVJdVluTnpBQUFBQUFBQQpBQUFB
QUFBQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FFRERBTG5SbGVIUUFBQUFBQUFBQUFBQUFB
SEFBQUFDWFV3RUFCMVFCCkFBQUFBQUFLQUFBQUlCQlFZQzVrWldKMVp5UlRBQUFBQUFBQUFBQ0lB
UUFBYTFRQkFQTlZBUUFBQUFBQUVRQUFBRUFRRUVJdVluTnoKQUFBQUFBQUFBQUFBQUFBQUJBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FFRERBTG5SbGVIUUFBQUFBQUFBQUFBQUFBSEFBQUFDZApW
Z0VBRFZjQkFBQUFBQUFLQUFBQUlCQlFZQzVrWldKMVp5UlRBQUFBQUFBQUFBQ01BUUFBY1ZjQkFQ
MVlBUUFBQUFBQUVRQUFBRUFRCkVFSXVZbk56QUFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQ0FFRERBTG5SbGVIUUFBQUFBQUFBQUFBQUEKQUhBQUFBQ25XUUVBRjFvQkFB
QUFBQUFLQUFBQUlCQlFZQzVrWldKMVp5UlRBQUFBQUFBQUFBQ01BUUFBZTFvQkFBZGNBUUFBQUFB
QQpFUUFBQUVBUUVFSXVZbk56QUFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQ0FFRERBTG5SbGVIUUFBQUFBCkFBQUFBQUFBQUhBQUFBQ3hYQUVBSVYwQkFBQUFBQUFLQUFB
QUlCQlFZQzVrWldKMVp5UlRBQUFBQUFBQUFBQ1FBUUFBaFYwQkFCVmYKQVFBQUFBQUFFUUFBQUVB
UUVFSXVZbk56QUFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FFRERB
TG5SbAplSFFBQUFBQUFBQUFBQUFBQUFRQkFBQy9Yd0VBdzJBQkFBQUFBQUFnQUFBQUlCQlFZQzVr
WldKMVp5UlRBQUFBQUFBQUFBRHNBUUFBCkEySUJBTzlqQVFBQUFBQUFHd0FBQUVBUUVFSXVkR1Y0
ZEFBQUFBQUFBQUFBQUFBQU13VUFBUDFrQVFBd2FnRUFBQUFBQUNnQUFBQWcKRUZCZ0xtUmxZblZu
SkZNQUFBQUFBQUFBQUdBRkFBREFhd0VBSUhFQkFBQUFBQUE3QUFBQVFCQVFRaTV5WkdGMFlRQUFB
QUFBQUFBQQpBQUFFQUFBQWJuTUJBQUFBQUFBQUFBQUFBQUFBQUVBUU1FQXVjbVJoZEdFQUFBQUFB
QUFBQUFBQUJBQUFBSEp6QVFBQUFBQUFBQUFBCkFBQUFBQUJBRURCQUxuSmtZWFJoQUFBQUFBQUFB
QUFBQUFRQUFBQjJjd0VBQUFBQUFBQUFBQUFBQUFBQVFCQXdRQzV5WkdGMFlRQUEKQUFBQUFBQUFB
QUFFQUFBQWVuTUJBQUFBQUFBQUFBQUFBQUFBQUVBUU1FQXVjbVJoZEdFQUFBQUFBQUFBQUFBQUNB
QUFBSDV6QVFBQQpBQUFBQUFBQUFBQUFBQUJBRUVCQUxuUmxlSFFBQUFBQUFBQUFBQUFBQUFrQUFB
Q0djd0VBajNNQkFBQUFBQUFCQUFBQUlCQlFZQzVrClpXSjFaeVJUQUFBQUFBQUFBQUN3QUFBQW1Y
TUJBRWwwQVFBQUFBQUFBd0FBQUVBUUVFSXVkR1Y0ZEFBQUFBQUFBQUFBQUFBQUNRQUEKQUdkMEFR
QndkQUVBQUFBQUFBRUFBQUFnRUZCZ0xtUmxZblZuSkZNQUFBQUFBQUFBQU1BQUFBQjZkQUVBT25V
QkFBQUFBQUFEQUFBQQpRQkFRUWk1eVpHRjBZUUFBQUFBQUFBQUFBQUFZQUFBQVdIVUJBSEIxQVFB
QUFBQUFCZ0FBQUVBUU1FQXVkR1Y0ZEFBQUFBQUFBQUFBCkFBQUFCd0FBQUt4MUFRQ3pkUUVBQUFB
QUFBRUFBQUFnRUZCZ0xtUmxZblZuSkZNQUFBQUFBQUFBQU1BQUFBQzlkUUVBZlhZQkFBQUEKQUFB
REFBQUFRQkFRUWk1MFpYaDBBQUFBQUFBQUFBQUFBQUFmQUFBQW0zWUJBTHAyQVFBQUFBQUFBZ0FB
QUNBUVVHQXVaR1ZpZFdjawpVd0FBQUFBQUFBQUE1QUFBQU01MkFRQ3lkd0VBQUFBQUFBTUFBQUJB
RUJCQ0xuUmxlSFFBQUFBQUFBQUFBQUFBQUN3QkFBRFFkd0VBCi9IZ0JBQUFBQUFBSkFBQUFJQkJR
WUM1a1pXSjFaeVJUQUFBQUFBQUFBQUFJQWdBQVZua0JBRjU3QVFBQUFBQUFGd0FBQUVBUUVFSXUK
ZEdWNGRBQUFBQUFBQUFBQUFBQUFmd0FBQUVSOEFRRERmQUVBQUFBQUFBWUFBQUFnRUZCZ0xtUmxZ
blZuSkZNQUFBQUFBQUFBQUZBQgpBQUQvZkFFQVQzNEJBQUFBQUFBSkFBQUFRQkFRUWk1MFpYaDBB
QUFBQUFBQUFBQUFBQUFKQUFBQXFYNEJBTEorQVFBQUFBQUFBUUFBCkFDQVFVR0F1WkdWaWRXY2tV
d0FBQUFBQUFBQUF5QUFBQUx4K0FRQ0Vmd0VBQUFBQUFBTUFBQUJBRUJCQ0xuSmtZWFJoQUFBQUFB
QUEKQUFBQUFCZ0FBQUNpZndFQXVuOEJBQUFBQUFBR0FBQUFRQkF3UUM1MFpYaDBBQUFBQUFBQUFB
QUFBQUFQQUFBQTluOEJBQVdBQVFBQQpBQUFBQVFBQUFDQVFVR0F1WkdWaWRXY2tVd0FBQUFBQUFB
QUFKQUVBQUErQUFRQXpnUUVBQUFBQUFBY0FBQUJBRUJCQ0xuUmxlSFFBCkFBQUFBQUFBQUFBQUFB
OEFBQUI1Z1FFQWlJRUJBQUFBQUFBQkFBQUFJQkJRWUM1a1pXSjFaeVJUQUFBQUFBQUFBQUFVQVFB
QWtvRUIKQUthQ0FRQUFBQUFBQndBQUFFQVFFRUl1ZEdWNGRBQUFBQUFBQUFBQUFBQUFCd0FBQU95
Q0FRRHpnZ0VBQUFBQUFBRUFBQUFnRUZCZwpMbVJsWW5WbkpGTUFBQUFBQUFBQUFNZ0FBQUQ5Z2dF
QXhZTUJBQUFBQUFBREFBQUFRQkFRUWk1MFpYaDBBQUFBQUFBQUFBQUFBQUFmCkFBQUE0NE1CQUFL
RUFRQUFBQUFBQWdBQUFDQVFVR0F1WkdWaWRXY2tVd0FBQUFBQUFBQUE2QUFBQUJhRUFRRCtoQUVB
QUFBQUFBTUEKQUFCQUVCQkNMblJsZUhRQUFBQUFBQUFBQUFBQUFBa0FBQUFjaFFFQUpZVUJBQUFB
QUFBQkFBQUFJQkJRWUM1a1pXSjFaeVJUQUFBQQpBQUFBQUFETUFBQUFMNFVCQVB1RkFRQUFBQUFB
QXdBQUFFQVFFRUl1Y21SaGRHRUFBQUFBQUFBQUFBQUFHQUFBQUJtR0FRQXhoZ0VBCkFBQUFBQVlB
QUFCQUVEQkFMblJsZUhRQUFBQUFBQUFBQUFBQUFBOEFBQUJ0aGdFQWZJWUJBQUFBQUFBQkFBQUFJ
QkJRWUM1a1pXSjEKWnlSVEFBQUFBQUFBQUFBb0FRQUFob1lCQUs2SEFRQUFBQUFBQndBQUFFQVFF
RUl1ZEdWNGRBQUFBQUFBQUFBQUFBQUFEd0FBQVBTSApBUUFEaUFFQUFBQUFBQUVBQUFBZ0VGQmdM
bVJsWW5WbkpGTUFBQUFBQUFBQUFCZ0JBQUFOaUFFQUpZa0JBQUFBQUFBSEFBQUFRQkFRClFpNTBa
WGgwQUFBQUFBQUFBQUFBQUFBSEFBQUFhNGtCQUhLSkFRQUFBQUFBQVFBQUFDQVFVR0F1WkdWaWRX
Y2tVd0FBQUFBQUFBQUEKekFBQUFIeUpBUUJJaWdFQUFBQUFBQU1BQUFCQUVCQkNMblJsZUhRQUFB
QUFBQUFBQUFBQUFCOEFBQUJtaWdFQWhZb0JBQUFBQUFBQwpBQUFBSUJCUVlDNWtaV0oxWnlSVEFB
QUFBQUFBQUFEc0FBQUFtWW9CQUlXTEFRQUFBQUFBQXdBQUFFQVFFRUl1ZEdWNGRBQUFBQUFBCkFB
QUFBQUFBZlFBQUFLT0xBUUFnakFFQUFBQUFBQXNBQUFBZ0VGQmdMbVJsWW5WbkpGTUFBQUFBQUFB
QUFLZ0JBQUNPakFFQU5vNEIKQUFBQUFBQU5BQUFBUUJBUVFpNWljM01BQUFBQUFBQUFBQUFBQUFB
RUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQVFNTUF1WW5OegpBQUFBQUFBQUFBQUFBQUFBQkFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQUVEREFMblJsZUhRQUFBQUFBQUFBQUFBQUFEc0FBQUM0
CmpnRUE4NDRCQUFBQUFBQUhBQUFBSUJCUVlDNWtaV0oxWnlSVEFBQUFBQUFBQUFBZ0FRQUFPWThC
QUZtUUFRQUFBQUFBQndBQUFFQVEKRUVJdVluTnpBQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFDQUVEREFMbUp6Y3dBQUFBQUFBQUFBQUFBQQpBQVFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBZ0JBd3dDNWtaV0oxWnlSVEFBQUFBQUFBQUFBZ0FBQUFuNUFCQUwrUUFRQUFB
QUFBCkFnQUFBRUFRRUVJdVpHVmlkV2NrVXdBQUFBQUFBQUFBSUFBQUFOT1FBUUR6a0FFQUFBQUFB
QUlBQUFCQUVCQkNMbVJsWW5WbkpGUUEKQUFBQUFBQUFBR1FBQUFBSGtRRUFBQUFBQUFBQUFBQUFB
QUFBUUFBUVFpQWdJQzl0WVc1cFptVnpkR1JsY0dWdVpHVnVZM2s2SW5SNQpjR1U5SjNkcGJqTXlK
eUJ1WVcxbFBTZE5hV055YjNOdlpuUXVWa000TUM1RFVsUW5JSFpsY25OcGIyNDlKemd1TUM0MU1E
Y3lOeTQwCk1EVXpKeUJ3Y205alpYTnpiM0pCY21Ob2FYUmxZM1IxY21VOUozZzROaWNnY0hWaWJH
bGpTMlY1Vkc5clpXNDlKekZtWXpoaU0ySTUKWVRGbE1UaGxNMkluSWlBdlJFVkdRVlZNVkV4SlFq
b2lUVk5XUTFKVUlpQXZSRVZHUVZWTVZFeEpRam9pVDB4RVRrRk5SVk1pSUFRQQpBQUR4QUFBQWp3
Y0FBRjBBQVJFQUFBQUFRenBjWTNsbmQybHVYR2h2YldWY1kyMWhjbkpwYmx4WFpXSkxhWFJDZFds
c1pGeHZZbXBjClYyVmlTMmwwVTNsemRHVnRTVzUwWlhKbVlXTmxYRkpsYkdWaGMyVmNUR1ZuWVdO
NVRXVmthV0ZWU1M1dlltb0FMZ2NXRVFFZ0FBQUgKQUE0QUFBQW54ZzRBQUFBbnhrMXBZM0p2YzI5
bWRDQW9VaWtnVDNCMGFXMXBlbWx1WnlCRGIyMXdhV3hsY2dCamQyUUFZenBjWTNsbgpkMmx1WEdo
dmJXVmNZMjFoY25KcGJseHpiM1Z5WTJWY2MzWnVYRmRsWWt0cGRGeEpiblJsY201aGJGeFhaV0pM
YVhSVGVYTjBaVzFKCmJuUmxjbVpoWTJWY2QybHVBR05zQUVNNlhGQnliMmR5WVcwZ1JtbHNaWE1n
S0hnNE5pbGNUV2xqY205emIyWjBJRlpwYzNWaGJDQlQKZEhWa2FXOGdPRnhXUTF4aWFXNWNZMnd1
WlhobEFHTnRaQUF0VHpJZ0xVbERPbHhqZVdkM2FXNWNhRzl0WlZ4amJXRnljbWx1WEZkbApZa3Rw
ZEVKMWFXeGtYRWx1WTJ4MVpHVWdMVWxET2x4QmNIQnNaVWx1ZEdWeWJtRnNYRWx1WTJ4MVpHVWdM
VWxET2x4QmNIQnNaVWx1CmRHVnlibUZzWEVsdVkyeDFaR1ZjUTI5eVpVWnZkVzVrWVhScGIyNWNU
MU5ZUTI5dGNHRjBhV0pwYkdsMGVVaGxZV1JsY25NZ0xVbEQKT2x4QmNIQnNaVWx1ZEdWeWJtRnNY
RWx1WTJ4MVpHVmNRMjl5WlVadmRXNWtZWFJwYjI1Y1QxTllRMjl0Y0dGMGFXSnBiR2wwZVVobApZ
V1JsY25OY1IwNVZRMjl0Y0dGMGFXSnBiR2wwZVNBdFNVTTZYR041WjNkcGJseG9iMjFsWEdOdFlY
SnlhVzVjVjJWaVMybDBRblZwCmJHUmNiMkpxWEZkbFlrdHBkRk41YzNSbGJVbHVkR1Z5Wm1GalpW
eEVaWEpwZG1Wa1UyOTFjbU5sY3lBdFNXTTZYR041WjNkcGJseG8KYjIxbFhHTnRZWEp5YVc1Y2My
OTFjbU5sWEhOMmJseFhaV0pMYVhSY1NXNTBaWEp1WVd4Y1YyVmlTMmwwVTNsemRHVnRTVzUwWlhK
bQpZV05sSUMxRVgxOVhTVTR6TWw5ZklDMUVYMHhKUWlBdFJFNUVSVUpWUnlBdFJGZEpUak15SUMx
RVgxZEpUa1JQVjFNZ0xVUlhTVTVXClJWSTlNSGcxTURFZ0xVUmZWMGxPTXpKZlYwbE9UbFE5TUhn
MU1ERWdMVVJmVjBsT016SmZTVVU5TUhnMk1EQWdMVVJmUTFKVVgxTkYKUTFWU1JWOURVRkJmVDFa
RlVreFBRVVJmVTFSQlRrUkJVa1JmVGtGTlJWTTlNU0F0UkY5ZlVGSlBSRlZEVkVsUFRsOWZQVEFn
TFVSZgpTRUZUWDBWWVEwVlFWRWxQVGxNOU1DQXRSRUpWU1V4RVNVNUhYMWRsWWt0cGRGTjVjM1Js
YlVsdWRHVnlabUZqWlNBdFJGOVZUa2xEClQwUkZJQzFFVlU1SlEwOUVSU0F0UmtRZ0xVMUVJQzFI
VWkwZ0xVWnZRenBjWTNsbmQybHVYR2h2YldWY1kyMWhjbkpwYmx4WFpXSkwKYVhSQ2RXbHNaRnh2
WW1wY1YyVmlTMmwwVTNsemRHVnRTVzUwWlhKbVlXTmxYRkpsYkdWaGMyVmNJQzFHWkVNNlhHTjVa
M2RwYmx4bwpiMjFsWEdOdFlYSnlhVzVjVjJWaVMybDBRblZwYkdSY2JHbGlYRmRsWWt0cGRGTjVj
M1JsYlVsdWRHVnlabUZqWlM1Mll6Z3dMbkJrCllpQXRWelFnTFZkWUlDMWpJQzFhYVNBdFZGQWdM
WGRrTkRBeE9DQXRkMlEwTURZNElDMTNaRFF3T1RrZ0xYZGtOREV3TUNBdGQyUTAKTVRJM0lDMTNa
RFF4TXpnZ0xYZGtOREU0TUNBdGQyUTBNVGc1SUMxM1pEUXlNREVnTFhka05ESTBOQ0F0ZDJRME1q
VXhJQzEzWkRReQpOelVnTFhka05ESTRPQ0F0ZDJRME1qa3hJQzEzWkRRek1EVWdMWGRrTkRNME5D
QXRkMlEwTXpVMUlDMTNaRFF6T0RrZ0xYZGtORFV3Ck15QXRkMlEwTlRBMUlDMTNaRFExTVRBZ0xY
ZGtORFV4TWlBdGQyUTBOakV3SUMxM1pEUTNNRFlnTFhka05EZ3dNQ0F0ZDJRME9UVXgKSUMxM1pE
UTVOVElnTFhka05EazVOaUF0ZDJRMk1ERXhJQzEzWkRZd016RWdMWGRrTmpJeE1TQXRkMlEyTWpR
MklDMTNaRFl5TlRVZwpMWGRrTmpNNE55QXRSMU1nTFc1dmJHOW5ieUF0WlhKeWIzSnlaWEJ2Y25R
NmNYVmxkV1VnTFVraVF6cGNVSEp2WjNKaGJTQkdhV3hsCmN5QW9lRGcyS1Z4TmFXTnliM052Wm5R
Z1JHbHlaV04wV0NCVFJFc2dLRUYxWjNWemRDQXlNREE1S1Z4SmJtTnNkV1JsSWlBdFNTSkQKT2x4
UWNtOW5jbUZ0SUVacGJHVnpJQ2g0T0RZcFhFMXBZM0p2YzI5bWRDQldhWE4xWVd3Z1UzUjFaR2x2
SURoY1ZrTmNhVzVqYkhWawpaU0lnTFVraVF6cGNVSEp2WjNKaGJTQkdhV3hsY3lBb2VEZzJLVnhO
YVdOeWIzTnZablFnVm1semRXRnNJRk4wZFdScGJ5QTRYRlpEClhHRjBiRzFtWTF4cGJtTnNkV1Js
SWlBdFNTSkRPbHhRY205bmNtRnRJRVpwYkdWeklDaDRPRFlwWEUxcFkzSnZjMjltZENCV2FYTjEK
WVd3Z1UzUjFaR2x2SURoY1ZrTmNVR3hoZEdadmNtMVRSRXRjYVc1amJIVmtaU0lnTFVraVF6cGNV
SEp2WjNKaGJTQkdhV3hsY3lBbwplRGcyS1Z4TmFXTnliM052Wm5RZ1ZtbHpkV0ZzSUZOMGRXUnBi
eUE0WEZaRFhGQnNZWFJtYjNKdFUwUkxYR052YlcxdmJseHBibU5zCmRXUmxJaUF0U1NKRE9seFFj
bTluY21GdElFWnBiR1Z6SUNoNE9EWXBYRTFwWTNKdmMyOW1kQ0JXYVhOMVlXd2dVM1IxWkdsdklE
aGMKVTBSTFhIWXlMakJjYVc1amJIVmtaU0lnTFZnQWMzSmpBQzR1WEV4bFoyRmplVTFsWkdsaFZV
a3VZM0J3QUhCa1lnQkRPbHhqZVdkMwphVzVjYUc5dFpWeGpiV0Z5Y21sdVhGZGxZa3RwZEVKMWFX
eGtYR3hwWWx4WFpXSkxhWFJUZVhOMFpXMUpiblJsY21aaFkyVXVkbU00Ck1DNXdaR0lBQUFEeEFB
QUFsaFVBQUNZQUJ4R1lFZ0FBQUFCclEwZFRkSGxzWlVSeVlYZFBjbVJsY21sdVoxTjBlV3hsVDI1
c2VRQWkKQUFjUm1CSUFBQUVBYTBOSFUzUjViR1ZFY21GM1QzSmtaWEpwYm1kQ1pXeHZkd0FpQUFj
UldoSUFBQUFBYTBOSFVtVnVaR1Z5YVc1bgpTVzUwWlc1MFJHVm1ZWFZzZEFBZ0FBY1JueElBQUFF
QVEwWkNlWFJsVDNKa1pYSk1hWFIwYkdWRmJtUnBZVzRBR2dBSEVZMFNBQUFDCmdQNy9hME5IUm05
dWRFbHVaR1Y0VFdGNEFCWUFCeEdORWdBQUFvRCsvMnREUjBkc2VYQm9UV0Y0QUJvQUJ4R2JFZ0FB
QUFCclEwZEoKYldGblpVRnNjR2hoVG05dVpRQW5BQWNSbXhJQUFBRUFhME5IU1cxaFoyVkJiSEJv
WVZCeVpXMTFiSFJwY0d4cFpXUk1ZWE4wQUJvQQpCeEdiRWdBQUF3QnJRMGRKYldGblpVRnNjR2ho
VEdGemRBQWJBQWNSbXhJQUFBUUFhME5IU1cxaFoyVkJiSEJvWVVacGNuTjBBQ01BCkJ4R2JFZ0FB
QmdCclEwZEpiV0ZuWlVGc2NHaGhUbTl1WlZOcmFYQkdhWEp6ZEFBbUFBY1JpUklBQUFBQVYwdE5a
V1JwWVZWSlVHRnkKZEVaMWJHeHpZM0psWlc1Q2RYUjBiMjRBSUFBSEVZa1NBQUFCQUZkTFRXVmth
V0ZWU1ZCaGNuUk5kWFJsUW5WMGRHOXVBQ0FBQnhHSgpFZ0FBQWdCWFMwMWxaR2xoVlVsUVlYSjBV
R3hoZVVKMWRIUnZiZ0FrQUFjUmlSSUFBQU1BVjB0TlpXUnBZVlZKVUdGeWRGTmxaV3RDCllXTnJR
blYwZEc5dUFDY0FCeEdKRWdBQUJBQlhTMDFsWkdsaFZVbFFZWEowVTJWbGEwWnZjbmRoY21SQ2RY
UjBiMjRBS1FBSEVZa1MKQUFBR0FGZExUV1ZrYVdGVlNWQmhjblJVYVcxbGJHbHVaVk5zYVdSbGNs
Um9kVzFpQUNJQUJ4R0pFZ0FBQndCWFMwMWxaR2xoVlVsUQpZWEowVW1WM2FXNWtRblYwZEc5dUFD
b0FCeEdKRWdBQUNBQlhTMDFsWkdsaFZVbFFZWEowVTJWbGExUnZVbVZoYkhScGJXVkNkWFIwCmIy
NEFMZ0FIRVlrU0FBQUpBRmRMVFdWa2FXRlZTVkJoY25SVGFHOTNRMnh2YzJWa1EyRndkR2x2Ym5O
Q2RYUjBiMjRBTGdBSEVZa1MKQUFBS0FGZExUV1ZrYVdGVlNWQmhjblJJYVdSbFEyeHZjMlZrUTJG
d2RHbHZibk5DZFhSMGIyNEFJZ0FIRVlrU0FBQUxBRmRMVFdWawphV0ZWU1ZCaGNuUlZiazExZEdW
Q2RYUjBiMjRBSVFBSEVZa1NBQUFNQUZkTFRXVmthV0ZWU1ZCaGNuUlFZWFZ6WlVKMWRIUnZiZ0Fn
CkFBY1JpUklBQUEwQVYwdE5aV1JwWVZWSlVHRnlkRUpoWTJ0bmNtOTFibVFBS0FBSEVZa1NBQUFP
QUZkTFRXVmthV0ZWU1ZCaGNuUkQKZFhKeVpXNTBWR2x0WlVScGMzQnNZWGtBS2dBSEVZa1NBQUFQ
QUZkTFRXVmthV0ZWU1ZCaGNuUlVhVzFsVW1WdFlXbHVhVzVuUkdsegpjR3hoZVFBckFBY1JpUklB
QUJJQVYwdE5aV1JwWVZWSlVHRnlkRlp2YkhWdFpWTnNhV1JsY2tOdmJuUmhhVzVsY2dBaUFBY1Jp
UklBCkFCTUFWMHROWldScFlWVkpVR0Z5ZEZadmJIVnRaVk5zYVdSbGNnQW5BQWNSaVJJQUFCUUFW
MHROWldScFlWVkpVR0Z5ZEZadmJIVnQKWlZOc2FXUmxjbFJvZFcxaUFDWUFCeEV5RUFBQUFRQlhT
MDFsWkdsaFEyOXVkSEp2Ykd4bGNrWnNZV2RFYVhOaFlteGxaQUFsQUFjUgpNaEFBQUFJQVYwdE5a
V1JwWVVOdmJuUnliMnhzWlhKR2JHRm5VSEpsYzNObFpBQWxBQWNSTWhBQUFCQUFWMHROWldScFlV
TnZiblJ5CmIyeHNaWEpHYkdGblJtOWpkWE5sWkFBcUFBY1JraElBQUFBQWEwTkhRMjlzYjNKRGIy
UmxSbkpoWjIxbGJuUk1iMjlyZFhCVVpYaDAKZFhKbEFDY0FCeEdTRWdBQUFRQnJRMGREYjJ4dmNr
TnZaR1ZHY21GbmJXVnVkRkJoY21GdFpYUnlhV01BSmdBTkVZOFNBQUFBQUFBQQpBQUJmYVcxd1gx
OXJRMFpCYkd4dlkyRjBiM0pFWldaaGRXeDBBQ01BRFJHUEVnQUFBQUFBQUFBQVgybHRjRjlmYTBO
R1FXeHNiMk5oCmRHOXlUblZzYkFBcUFBd1JyQklBQUFBQUFBQUFBRTFsWkdsaFJtRnpkRVp2Y25k
aGNtUkpiV0ZuWlVSaGRHRmZjRzVuQUN3QUJ4RjgKRWdBQUxRTk5aV1JwWVVaaGMzUkdiM0ozWVhK
a1NXMWhaMlZFWVhSaFRHVnVaM1JvWDNCdVp3QXhBQXdSbEJJQUFBQUFBQUFBQUUxbApaR2xoUm1G
emRFWnZjbmRoY21SUWNtVnpjMlZrU1cxaFoyVkVZWFJoWDNCdVp3QXpBQWNSZkJJQUFGRURUV1Zr
YVdGR1lYTjBSbTl5CmQyRnlaRkJ5WlhOelpXUkpiV0ZuWlVSaGRHRk1aVzVuZEdoZmNHNW5BQ2tB
REJHS0VnQUFBQUFBQUFBQVRXVmthV0ZHZFd4c1ZtOXMKZFcxbFNXMWhaMlZFWVhSaFgzQnVad0Fy
QUFjUmZCSUFBSGtEVFdWa2FXRkdkV3hzVm05c2RXMWxTVzFoWjJWRVlYUmhUR1Z1WjNSbwpYM0J1
WndBd0FBd1JxQklBQUFBQUFBQUFBRTFsWkdsaFJuVnNiRlp2YkhWdFpWQnlaWE56WldSSmJXRm5a
VVJoZEdGZmNHNW5BRElBCkJ4RjhFZ0FBdWdOTlpXUnBZVVoxYkd4V2IyeDFiV1ZRY21WemMyVmtT
VzFoWjJWRVlYUmhUR1Z1WjNSb1gzQnVad0FwQUF3Umt4SUEKQUFBQUFBQUFBRTFsWkdsaFJuVnNi
SE5qY21WbGJrbHRZV2RsUkdGMFlWOXdibWNBS3dBSEVYd1NBQUJsQTAxbFpHbGhSblZzYkhOagpj
bVZsYmtsdFlXZGxSR0YwWVV4bGJtZDBhRjl3Ym1jQU1BQU1FYWtTQUFBQUFBQUFBQUJOWldScFlV
WjFiR3h6WTNKbFpXNVFjbVZ6CmMyVmtTVzFoWjJWRVlYUmhYM0J1WndBeUFBY1JmQklBQUl3RFRX
VmthV0ZHZFd4c2MyTnlaV1Z1VUhKbGMzTmxaRWx0WVdkbFJHRjAKWVV4bGJtZDBhRjl3Ym1jQUl3
QU1FWTRTQUFBQUFBQUFBQUJOWldScFlVMTFkR1ZKYldGblpVUmhkR0ZmY0c1bkFDVUFCeEY4RWdB
QQpSQU5OWldScFlVMTFkR1ZKYldGblpVUmhkR0ZNWlc1bmRHaGZjRzVuQUNvQURCR2lFZ0FBQUFB
QUFBQUFUV1ZrYVdGTmRYUmxVSEpsCmMzTmxaRWx0WVdkbFJHRjBZVjl3Ym1jQUxBQUhFWHdTQUFC
MUEwMWxaR2xoVFhWMFpWQnlaWE56WldSSmJXRm5aVVJoZEdGTVpXNW4KZEdoZmNHNW5BQ1FBREJH
Y0VnQUFBQUFBQUFBQVRXVmthV0ZRWVhWelpVbHRZV2RsUkdGMFlWOXdibWNBSmdBSEVYd1NBQUFO
QTAxbApaR2xoVUdGMWMyVkpiV0ZuWlVSaGRHRk1aVzVuZEdoZmNHNW5BQ3NBREJHVkVnQUFBQUFB
QUFBQVRXVmthV0ZRWVhWelpWQnlaWE56ClpXUkpiV0ZuWlVSaGRHRmZjRzVuQUMwQUJ4RjhFZ0FB
SlFOTlpXUnBZVkJoZFhObFVISmxjM05sWkVsdFlXZGxSR0YwWVV4bGJtZDAKYUY5d2JtY0FJd0FN
RWJFU0FBQUFBQUFBQUFCTlpXUnBZVkJzWVhsSmJXRm5aVVJoZEdGZmNHNW5BQ1VBQnhGOEVnQUFQ
UU5OWldScApZVkJzWVhsSmJXRm5aVVJoZEdGTVpXNW5kR2hmY0c1bkFDb0FEQkd3RWdBQUFBQUFB
QUFBVFdWa2FXRlFiR0Y1VUhKbGMzTmxaRWx0CllXZGxSR0YwWVY5d2JtY0FMQUFIRVh3U0FBQmtB
MDFsWkdsaFVHeGhlVkJ5WlhOelpXUkpiV0ZuWlVSaGRHRk1aVzVuZEdoZmNHNW4KQUNVQURCR1dF
Z0FBQUFBQUFBQUFUV1ZrYVdGU1pYZHBibVJKYldGblpVUmhkR0ZmY0c1bkFDY0FCeEY4RWdBQU5R
Tk5aV1JwWVZKbApkMmx1WkVsdFlXZGxSR0YwWVV4bGJtZDBhRjl3Ym1jQUxBQU1FYVFTQUFBQUFB
QUFBQUJOWldScFlWSmxkMmx1WkZCeVpYTnpaV1JKCmJXRm5aVVJoZEdGZmNHNW5BQzRBQnhGOEVn
QUFUd05OWldScFlWSmxkMmx1WkZCeVpYTnpaV1JKYldGblpVUmhkR0ZNWlc1bmRHaGYKY0c1bkFE
RUFEQkdaRWdBQUFBQUFBQUFBVFdWa2FXRlRiR2xrWlhKVWNtRmphMHhsWm5SRFlYQkpiV0ZuWlVS
aGRHRmZjRzVuQURNQQpCeEY4RWdBQUJnNU5aV1JwWVZOc2FXUmxjbFJ5WVdOclRHVm1kRU5oY0Vs
dFlXZGxSR0YwWVV4bGJtZDBhRjl3Ym1jQU9BQU1FWXNTCkFBQUFBQUFBQUFCTlpXUnBZVk5zYVdS
bGNsUnlZV05yVEdWbWRFTmhjRXh2WVdScGJtZEpiV0ZuWlVSaGRHRmZjRzVuQURvQUJ4RjgKRWdB
QUFRNU5aV1JwWVZOc2FXUmxjbFJ5WVdOclRHVm1kRU5oY0V4dllXUnBibWRKYldGblpVUmhkR0ZN
Wlc1bmRHaGZjRzVuQURBQQpEQkd0RWdBQUFBQUFBQUFBVFdWa2FXRlRiR2xrWlhKVWNtRmphMDFw
WkdSc1pVbHRZV2RsUkdGMFlWOXdibWNBTWdBSEVYd1NBQUNhCkRVMWxaR2xoVTJ4cFpHVnlWSEpo
WTJ0TmFXUmtiR1ZKYldGblpVUmhkR0ZNWlc1bmRHaGZjRzVuQURjQURCR2pFZ0FBQUFBQUFBQUEK
VFdWa2FXRlRiR2xrWlhKVWNtRmphMDFwWkdSc1pVeHZZV1JwYm1kSmJXRm5aVVJoZEdGZmNHNW5B
RGtBQnhGOEVnQUFsZzFOWldScApZVk5zYVdSbGNsUnlZV05yVFdsa1pHeGxURzloWkdsdVowbHRZ
V2RsUkdGMFlVeGxibWQwYUY5d2JtY0FNZ0FNRWFVU0FBQUFBQUFBCkFBQk5aV1JwWVZOc2FXUmxj
bFJ5WVdOclVtbG5hSFJEWVhCSmJXRm5aVVJoZEdGZmNHNW5BRFFBQnhGOEVnQUEvdzFOWldScFlW
TnMKYVdSbGNsUnlZV05yVW1sbmFIUkRZWEJKYldGblpVUmhkR0ZNWlc1bmRHaGZjRzVuQURrQURC
R2dFZ0FBQUFBQUFBQUFUV1ZrYVdGVApiR2xrWlhKVWNtRmphMUpwWjJoMFEyRndURzloWkdsdVow
bHRZV2RsUkdGMFlWOXdibWNBT3dBSEVYd1NBQUQ3RFUxbFpHbGhVMnhwClpHVnlWSEpoWTJ0U2FX
ZG9kRU5oY0V4dllXUnBibWRKYldGblpVUmhkR0ZNWlc1bmRHaGZjRzVuQUNRQURCR25FZ0FBQUFB
QUFBQUEKVFdWa2FXRlVhSFZ0WWtsdFlXZGxSR0YwWVY5d2JtY0FKZ0FIRVh3U0FBQlBCRTFsWkds
aFZHaDFiV0pKYldGblpVUmhkR0ZNWlc1bgpkR2hmY0c1bkFDc0FEQkdkRWdBQUFBQUFBQUFBVFdW
a2FXRlVhSFZ0WWxCeVpYTnpaV1JKYldGblpVUmhkR0ZmY0c1bkFDMEFCeEY4CkVnQUFlQVJOWldS
cFlWUm9kVzFpVUhKbGMzTmxaRWx0WVdkbFJHRjBZVXhsYm1kMGFGOXdibWNBTFFBTUVhWVNBQUFB
QUFBQUFBQk4KWldScFlWUnZaMmRzWlVOaGNIUnBiMjV6U1cxaFoyVkVZWFJoWDNCdVp3QXZBQWNS
ZkJJQUFNY0RUV1ZrYVdGVWIyZG5iR1ZEWVhCMAphVzl1YzBsdFlXZGxSR0YwWVV4bGJtZDBhRjl3
Ym1jQU5BQU1FWkFTQUFBQUFBQUFBQUJOWldScFlWUnZaMmRzWlVOaGNIUnBiMjV6ClVISmxjM05s
WkVsdFlXZGxSR0YwWVY5d2JtY0FOZ0FIRVh3U0FBQ1JBMDFsWkdsaFZHOW5aMnhsUTJGd2RHbHZi
bk5RY21WemMyVmsKU1cxaFoyVkVZWFJoVEdWdVozUm9YM0J1WndBMUFBY1JmQklBQUJBSlRXVmth
V0ZPWlhkVlNVRjFaR2x2Vm05c2RXMWxTR2xuYUVsdApZV2RsUkdGMFlVeGxibWQwYUY5d1pHWUFO
QUFIRVh3U0FBQVJDRTFsWkdsaFRtVjNWVWxCZFdScGIxWnZiSFZ0WlU5bVprbHRZV2RsClJHRjBZ
VXhsYm1kMGFGOXdaR1lBTkFBSEVYd1NBQUJuVTAxbFpHbGhUbVYzVlVsRGJHOXpaV1JEWVhCMGFX
OXVjMGx0WVdkbFJHRjAKWVV4bGJtZDBhRjl3WkdZQU5RQUhFWHdTQUFBNUNFMWxaR2xoVG1WM1ZV
bEZiblJsY2taMWJHeHpZM0psWlc1SmJXRm5aVVJoZEdGTQpaVzVuZEdoZmNHUm1BQzBBQnhGOEVn
QUFnZzlOWldScFlVNWxkMVZKUm05eWQyRnlaRWx0WVdkbFJHRjBZVXhsYm1kMGFGOXdaR1lBCk1R
QUhFWHdTQUFCNEQwMWxaR2xoVG1WM1ZVbFFZWFZ6WlVKMWRIUnZia2x0WVdkbFJHRjBZVXhsYm1k
MGFGOXdaR1lBTUFBSEVYd1MKQUFCdkQwMWxaR2xoVG1WM1ZVbFFiR0Y1UW5WMGRHOXVTVzFoWjJW
RVlYUmhUR1Z1WjNSb1gzQmtaZ0F2QUFjUmZCSUFBTmtIVFdWawphV0ZPWlhkVlNWSmxkSEpsWVhR
ek1FbHRZV2RsUkdGMFlVeGxibWQwYUY5d1pHWUFOQUFIRVh3U0FBQ2dEMDFsWkdsaFRtVjNWVWxU
ClpXVnJWRzlTWldGc2RHbHRaVWx0WVdkbFJHRjBZVXhsYm1kMGFGOXdaR1lBSFFBTkVRc1FBQUFB
QUFBQUFBQmZhVzF3WDE5RFIxTnAKZW1WYVpYSnZBQllBQ0JGd0VnQUFRMFpFYVdOMGFXOXVZWEo1
VW1WbUFCZ0FDQkhvRUFBQWJHOWpZV3hsYVc1bWIxOXpkSEoxWTNRQQpJZ0FJRVowUUFBQk5aV1Jw
WVV4bFoyRmplVlZKVkdsdFpXeHBibVZUYkdsa1pYSUFEZ0FJRVhRQUFBQmxjbkp1YjE5MEFBd0FD
Qkd2CkVnQUFiR052Ym5ZQUZRQUlFZVlRQUFCd2RHaHlaV0ZrYldKamFXNW1id0FRQUFnUlVCSUFB
RU5HUkdGMFlWSmxaZ0FPQUFnUmRRQUEKQUhKemFYcGxYM1FBRFFBSUVYVUFBQUJWU1c1ME16SUFG
d0FJRWFzU0FBQmZRMGRKYm5SbGNtNWhiRVZ5Y205eUFCSUFDQkVXRUFBQQpRMFpUZEhKcGJtZFNa
V1lBRUFBSUVXNFJBQUJEUmxSNWNHVlNaV1lBRndBSUVhUVJBQUJEUmxOM1lYQndaV1JHYkc5aGRE
TXlBQThBCkNCRWhBQUFBZFdsdWRERTJYM1FBRFFBSUVSTUFBQUIwYVcxbFgzUUFEZ0FJRVVBQUFB
QkRSMFpzYjJGMEFBOEFDQkYxQUFBQWRXbHUKZERNeVgzUUFEd0FJRVNNQUFBQjFhVzUwTmpSZmRB
QU1BQWdSQWhBQUFFeERYMGxFQUJNQUNCRXBFQUFBUTBkRGIyNTBaWGgwVW1WbQpBQTRBQ0JFSUVB
QUFRMGRRYjJsdWRBQU9BQWdSQlJBQUFFTkdVbUZ1WjJVQUhRQUlFWWNTQUFCMGFISmxZV1JzYjJO
aGJHVnBibVp2CmMzUnlkV04wQUJFQUNCR0FFQUFBUTBkSmJXRm5aVkpsWmdBY0FBZ1JXeEFBQUUx
bFpHbGhWVWxVYVcxbGJHbHVaVk5zYVdSbGNnQVEKQUFnUjRCQUFBRjlzYjJOaGJHVmZkQUFnQUFn
Uml4QUFBRTFsWkdsaFRHVm5ZV041VlVsSmJXRm5aVVZzWlcxbGJuUUFHZ0FJRWEwUQpBQUJOWldS
cFlVeGxaMkZqZVVOdmJuUnliMnh6QUEwQUNCRXpFUUFBYkdScGRsOTBBQTBBQ0JFaEFBQUFkMmx1
ZEY5MEFBMEFDQkh5CkVBQUFYMmx2WW5WbUFCZ0FDQkVORVFBQVEwZEVZWFJoVUhKdmRtbGtaWEpT
WldZQUhRQUlFVm9TQUFCRFIwTnZiRzl5VW1WdVpHVnkKYVc1blNXNTBaVzUwQUJjQUNCR3NFUUFB
UTBaVGQyRndjR1ZrUm14dllYUTJOQUFVQUFnUm54SUFBRjlmUTBaQ2VYUmxUM0prWlhJQQpEZ0FJ
RVJJQUFBQkRSa2x1WkdWNEFCc0FDQkVhRUFBQVEwWlRkSEpwYm1kSmJteHBibVZDZFdabVpYSUFF
QUFJRVhVQUFBQlZWRVl6Ck1rTm9ZWElBRGdBSUVYQUVBQUIyWVY5c2FYTjBBQmNBQ0JHYkVnQUFR
MGRKYldGblpVRnNjR2hoU1c1bWJ3QU9BQWdSUUFBQUFFWnMKYjJGME16SUFGUUFJRWJ3UkFBQkRS
a0ZzYkc5allYUnZjbEpsWmdBYUFBZ1JtQklBQUVOSFUzUjViR1ZFY21GM1QzSmtaWEpwYm1jQQpF
UUFJRVJNQUFBQmZYM1JwYldVMk5GOTBBQWtBQ0JHU0VRQUFkRzBBRVFBSUVXMFNBQUJEUjB4aGVX
VnlVbVZtQUJVQUNCRkdFQUFBClRXVmthV0ZWU1VWc1pXMWxiblFBRFFBSUVYVUFBQUJ6YVhwbFgz
UUFGQUFJRVhZUUFBQk5aV1JwWVVOdmJuUnliMnh6QUE4QUNCRUMKRUFBQWRHRm5URU5mU1VRQURn
QUlFUVVRQUFCRFJsSmhibWRsQUJzQUNCRWFFQUFBUTBaVGRISnBibWRKYm14cGJtVkNkV1ptWlhJ
QQpGQUFJRVlrU0FBQlhTMDFsWkdsaFZVbFFZWEowQUNJQUNCRXlFQUFBVjB0TlpXUnBZVU52Ym5S
eWIyeHNaWEpVYUdWdFpWTjBZWFJsCkFCY0FDQkdrRVFBQVEwWlRkMkZ3Y0dWa1JteHZZWFF6TWdB
WEFBZ1JyQkVBQUVOR1UzZGhjSEJsWkVac2IyRjBOalFBRFFBSUVRc1EKQUFCRFIxTnBlbVVBR0FB
SUVSRVFBQUJEUjBGbVptbHVaVlJ5WVc1elptOXliUUFpQUFnUk1oQUFBRmRMVFdWa2FXRkRiMjUw
Y205cwpiR1Z5VkdobGJXVlRkR0YwWlFBTEFBZ1I4aEFBQUVaSlRFVUFEQUFJRVNBQUFBQlZTVzUw
T0FBT0FBZ1JJUUFBQUZWdWFVTm9ZWElBCkRnQUlFVE1SQUFCZmJHUnBkbDkwQUE0QUNCRkJBQUFB
Um14dllYUTJOQUFWQUFnUjVCQUFBSEIwYUhKbFlXUnNiMk5wYm1adkFBMEEKQ0JFT0VBQUFRMGRT
WldOMEFBQUE5QUFBQVBnUUFBQUJBQUFBRUFHNVNiMHZ1U3BIK0Q1K3kzVFhkUTZNQUFBcUFBQUFF
QUVUc2JMQQpPTG1JdXI1ZktYdUlrMW92QUFCYkFBQUFFQUUxN0Y3ak1JYldaaWlNdThnQnRGSm9B
QUNVQUFBQUVBRmdCZGptcGd5NUxwVkFEbEowCmtDZGdBQURUQUFBQUVBR2ljTXZWSlpXYlVSNkIv
UjJ4UlJjRUFBQUpBUUFBRUFHR0pNd3ZHazgzY2dSY1N3cGRXQmRIQUFBN0FRQUEKRUFHMWhuN1ZZ
M2diWjhXVWtQa0xqdkVKQUFCL0FRQUFFQUV6dVljeEExWXE2TlR5TDB2ZmFTbVBBQUM0QVFBQUVB
R00zY25UVm1iWQpFTTRWYWdOWlFseVpBQUQ5QVFBQUVBSDdvekk5TEUvSW5nRlN1Vmx0ZGpuT0FB
QXVBZ0FBRUFFQUdMTDdkWXRKTlVtOWk4TTV0a2g5CkFBQmxBZ0FBRUFGbVJlREpUS1AwbFFoMDYv
VlNqcDhlQUFDVEFnQUFFQUZ4ZWFCdXAxVFBCQnlXQ21zYmZHN1RBQUM5QWdBQUVBSFEKdlAxY1lS
QzhtL0NuQUZPdzlJRjlBQUFCQXdBQUVBSGlWREVMMmxwQ2hTYzYwTVkxK0gzSkFBQStBd0FBRUFI
VGNCYUcxbDRTWjJGagpYdTBNMkxPMEFBQm1Bd0FBRUFIaEk4a1VBY3hMYm11QVVERnNVTTdPQUFD
WUF3QUFFQUdNb0tpUEV5VzlYM3JyOEtaQk91TFdBQURJCkF3QUFFQUY3K0VWRmZNZVA5VG1WRVJi
cnVEQzZBQUFBQkFBQUVBR2tnbDRML3VoZmFMVDZZUENOWlZwQkFBQXpCQUFBRUFIVjcwS04KVGpY
VzNwNjJnaS8zZlYvSUFBQmxCQUFBRUFGQTB1a1RxTHFLYjN3Ry9wcGQrdmJzQUFDZkJBQUFFQUY2
VitpTDZ1R2V6UkRyMjFyNApCOE9FQUFENUJBQUFFQUc4c0lpNi9wWTd0VExwM0lsWm5yRnpBQUFz
QlFBQUVBSHNJeUVrN1kwcGtiZ3pxQnE4S1pxU0FBQmpCUUFBCkVBRnhtY0E4ZDFMZUZiNkF2SkdJ
c0x4QUFBQ1VCUUFBRUFIeXM0Ylh5UDVxZ0ZWakRjVUtYRDhmQUFDOUJRQUFFQUZ5U0UyZVBLUTEK
YjR3Q1JDUDJYSXZwQUFEd0JRQUFFQUdWTkp3MW5hQkxVSUhQWmQrRFFXbnNBQUFlQmdBQUVBR3FJ
em93UGlCdFdTd2l6S2tFRDlZRApBQUJhQmdBQUVBSHYzbTJDdVdCODY1R1hYKzZQeHl0YUFBQjhC
Z0FBRUFIWERoZ2VLTlJOcWxBeUFqOVJwelRYQUFDMkJnQUFFQUhoCmEyM055TUgzOHQrUHFUT3ZN
MUFHQUFEckJnQUFFQUduWDQzYUtaNUF5and6bXQ4N1VwMitBQUFqQndBQUVBR3hrdXpiYXBhYysw
UU8KWGZwUnBxY2NBQUJYQndBQUVBSDhyVUxScGZBS3ZMeWxhSytMM0psdEFBQ0lCd0FBRUFFTFUw
Vk1xK1NQeW41QWZpS20zeFMyQUFDNApCd0FBRUFIMFdlYnBjVTZTcVlKMHJuQndJMkR2QUFEckJ3
QUFFQUY1NHlHUm1tN0pEcThEMkcxVUFCcXRBQUF3Q0FBQUVBRWlENHVkClJmUEJEa2I3cUl3VGtX
bGVBQUJrQ0FBQUVBSGYwNGVMd25LYUllOWd6OVZmU3VRVUFBQ3BDQUFBRUFFRjNKaDFGMTJPc3ln
SDQyU08KN24vS0FBRFlDQUFBRUFGaVdXVnR4ZFdoUGpXbVJma2IwNEk3QUFBSUNRQUFFQUgvNFpl
ZzY5MlFRK2ZycnV4NXlVYjBBQUJpQ1FBQQpFQUgwSzA5MXhwbXVEVEttUm9xUWZsK3RBQUNsQ1FB
QUVBR05hbVd6THUvWm5RcWpzL2MySSszeEFBRHFDUUFBRUFHMmFWSmpZNkttCmN0bXM3T0dpWjUw
aUFBQW5DZ0FBRUFHeVFJMmpPRi9oWXMwNUNwaUY0bURiQUFCZENnQUFFQUdISGpKY1ZOZHVERE8w
RDRCcWNlajgKQUFDVkNnQUFFQUZ1cklMbFJibjRVYUYwOTJWcWRYRGlBQURLQ2dBQUVBRnNueEhX
VTRyUkVxakwrL2dIajE4aEFBRC9DZ0FBRUFIdQp1ckJLcVMzMzM0YldNRmJhNzY5UEFBQXhDd0FB
RUFFSkxsMWs1NE5lZWRLaGhZbnhOc0NDQUFCc0N3QUFFQUZ4RFhmdUJaUnpQWHJzCjZZaHc4UlRZ
QUFDa0N3QUFFQUcxRDE5bWhLM05aNzNOc2pjT0lmNklBQURYQ3dBQUVBRTNKSUxPTGgrN0thR3R5
MlA1VlJla0FBQU4KREFBQUVBSEc1ZjZCZzJOdVlwV3RjZjA1WVZ5MkFBQlNEQUFBRUFFTGhTZGg4
Y3RtcTJPM0FxdHU5azVaQUFDRURBQUFFQUcySjJKRApoYlZTK2h3bGhoUldzOFZpQUFDekRBQUFF
QUhKL05iWWlaQ2JhSUJVSUx3THd5b0FBQURtREFBQUVBSFVvVnpCS3dRajFsZVhxS1B4Ck11OXlB
QUFVRFFBQUVBRUthbmM1T0lENVBhcm00NWZJUGF5b0FBQkxEUUFBRUFFWTBiSVRMS0IzbzJPc3k2
RHpoWDJUQUFDRERRQUEKRUFFdDVTTEIvZHJ4R0RvRHpoMTZkOWlBQUFDK0RRQUFFQUUvb3dOUUFK
aU4rbVlQazVaZlZ6WDRBQUQyRFFBQUVBRXlQa0Q3bFlNWApLMmRHRHJUbUE0UzhBQUErRGdBQUVB
SHNlVXdKdXVnUkJvY3VKVkloRWdiWEFBQnhEZ0FBRUFIMlJDdFNqQWMwRUtNMlJuQ05NTllLCkFB
Q2tEZ0FBRUFGeFZTZmVLbG1vbTJyUlpIVmU2ZU1SQUFEWkRnQUFFQUdrTzJ6RlRhTCs5c2lUTVRG
R2UxeFlBQUFpRHdBQUVBRnMKZ3FJSEZHOXhQRmNyeFRxTHRHZDNBQUJmRHdBQUVBRWhWNVJLcG5J
V3lLSHZPNHcrcWxwUEFBQ21Ed0FBRUFIY2NkYzBGVW10ZzU4dgpkd0dMY3d3QUFBRGJEd0FBRUFH
NkYvUlVQSTJhU1ZvMzJmN24zbW0vQUFBR0VBQUFFQUhKa0tpSUkwZjMwT08zNWFRa3hUZXNBQUJD
CkVBQUFFQUVUOHM3VXE1MmI2eHFSMnBVQzZieGdBQUIyRUFBQUVBSDZFVHVjWmlWOUw1T2lLRFNz
R3JsdkFBQ3dFQUFBRUFHVjdTNGwKb0JkeVh1R0ZjNk5JcVV5bUFBRGhFQUFBRUFHRWJxZis4YWx4
VUd6ZDlWSmZxZmd0QUFBZUVRQUFFQUdxMGFKOVo4ZnQ4SW9MWmNZcQoyR1lsQUFCQkVRQUFFQUVo
ay9XQ3dnK05naEpPSkJQVXEva2VBQUNBRVFBQUVBR2RMa2JyVExtME13ZmQ5SVNKb0lXWkFBREZF
UUFBCkVBRzV0ZTY3U1M3djJqMVhoK3g5ZGRTVkFBRDdFUUFBRUFHK2JtbmVpRk1UNWRtd2JOaGdT
SE1IQUFBekVnQUFFQUZ3dkUxblpJMlgKRitqUkpYQ2M3bC9DQUFCckVnQUFFQUdGcDdWSDY5NWtz
RVpubUNFTExVb0FBQUNsRWdBQUVBRUUrRFZueE9HUEtpM0k2RkhaeUxEUQpBQURjRWdBQUVBRjNm
NmtFSlA2aEZldTBsOHRCWmxkUkFBQVRFd0FBRUFFckgyQWpOdXJlVWVUMnQ5ZlJ3L1hiQUFCUkV3
QUFFQUhQCi9aMHhuRFh6VTJoZmU0aytBcGJmQUFDV0V3QUFFQUg3aTVpUGtUVkpna1ByYnQ1RWRx
Ym1BQURKRXdBQUVBSGV0UTJmQzJOQ0JXNEEKS3BONzVvR0lBQUQ0RXdBQUVBR3dTd0toK1FIZEpi
VGp6L2FWM1B6RUFBQXJGQUFBRUFFdlg3anlzc2czZUxVK3hrT0NwVEtrQUFCZQpGQUFBRUFFdkpE
RlFBUGVCVFY4b1RxWTdrdXRNQUFDVUZBQUFFQUhUemJ1WUViVm5nQis5OStLeGdUQ0JBQURMRkFB
QUVBRVA4WXNaCklkeGMyK1p0YzBEY0pHcXFBQUQ3RkFBQUVBSDlkNnVqNnZYdHYySEpuMUFKZW41
b0FBQkJGUUFBRUFHcVZhRjNzVnpGMGpKdktuajUKZmtoMUFBQjJGUUFBRUFFbzNhQUVpY3FBMjVj
aUFRdlQwbHNtQUFDeUZRQUFFQUdDeG9mbmVmVWhiNjNNUExsS0VKRUFBQURsRlFBQQpFQUhBZ3Ir
LzU1VXMreVVPY29XRGw3NnJBQUFWRmdBQUVBR3IrY1luWFNMTVR3NU5NdmxncitTN0FBQktGZ0FB
RUFIczZUalFlR2lqCjVEc0NXeTV0ZHMzQUFBQ0JGZ0FBRUFGVHdSVnJaZ2wzWkFvMGlMRnh2ZUFS
QUFDM0ZnQUFFQUhnOWJTWXphSXF5SUoyb0ZDOFFFUmgKQUFEaUZnQUFFQUZnVDl2ODNSVUM1akIr
Vm82aTl3dHRBQUFTRndBQUVBRTFNSlphc2E3UStmZENkZ2wzZ04yaUFBQkxGd0FBRUFHeAp0TnJ2
ZXZrTmcxMU5Ma29WaWhHMEFBQjZGd0FBRUFHRXB2QjZlU1ZqUFFxQi9obUNUVGk3QUFDL0Z3QUFF
QUdWRGJtQWhrMEtidFZpCmVEZTZQQkV0QUFEeEZ3QUFFQUVkTnoxYjM1ZEtISGRtM0hmWXpJMW1B
QUFxR0FBQUVBSG1MWFkvMVJSQ0hMcVV2L0ttWWk1OEFBQmEKR0FBQUVBRUcwZlFtMEkvQVFXUU9N
Q3Fhd2NrdEFBQ2ZHQUFBRUFHNVNFd015aXZ0U01nN0YrK2hDNFNOQUFEakdBQUFFQUh5MkpoMAo4
RUkrRGhSaHY1WER5VDBxQUFBYkdRQUFFQUdFNmh2YUtTYTVPMzBMTVc4UzRlR21BQUJQR1FBQUVB
SDIwMWVXZzdqMXRCM3FKbXZkCnFmSGtBQUNBR1FBQUVBSE9uOVFjSWxKcWtDWXpBK3pRQ1p1WkFB
Q3hHUUFBRUFHSFEwSlV6ejNxVEtGT1MxeVVtZjVqQUFEb0dRQUEKRUFHZ2VLT1I0NWkrMEJsUW9k
ZTdqVldGQUFBZEdnQUFFQUdGK3dUUW1aVmhtSlcraVoyUnZxRkNBQUJOR2dBQUVBSEdFRUJyV0Fp
cwpkVWhWVTVQQzZlUElBQUI4R2dBQUVBRVNwckpKd014Zys4d2szZWs5SDdLcUFBQy9HZ0FBRUFH
V3AxbmZHN0NQcXJOS2Ixa0JhNEJFCkFBQURHd0FBRUFHc0JzWE5KR1ZuZ3AzVjJSUHR1WmRIQUFB
Mkd3QUFFQUg3cEZ5b2FjWFBUcVhyc2RQcDY1VHZBQUI3R3dBQUVBRlMKVFJOVTJBMFppUEJpMjU1
OVBkRkpBQUN5R3dBQUVBRm5MelExUWhGcGtKNWlCYXVUSGRqWEFBRG1Hd0FBRUFHRlZmOFlXdXZT
Y2srRQp5OFA2UUh0b0FBQVhIQUFBRUFFWTJpWTE3b0VkeVYranh2NTRxSmcrQUFCUEhBQUFFQUVN
NVRNWVBtZXBlV1dyUitlTklkY09BQUNOCkhBQUFFQUdqWTZsN0NhUmlWMGtRNUozYnZrNktBQUM2
SEFBQUVBR0ZBaW9kU2t4a2pBOUtMNldpTzZmREFBRGpIQUFBRUFFS05nRGkKSDMrVmdkRXBzVDFU
TWdYa0FBQWFIUUFBRUFFeWFCZDk1dXZpMDZSRmgvU3grRXVHQUFCUUhRQUFFQUdTaVVSaWE2QmMw
OEZuRXd3KwpkdE9UQUFCNUhRQUFFQUg0NnpDczduVFpQM2F1b0QyRmhmSDNBQUN2SFFBQUVBRU1E
Yi9TVUNiRjUrRU9aU3VHK21IbEFBRGlIUUFBCkVBRXpWQzZPK3pqUlgrenVxdGZxckFJZ0FBQU5I
Z0FBRUFGTEFoSDU3ZTA5eW1yMWt2TXZYMFBzQUFCS0hnQUFFQUdPM21ZR0NiTmQKS1l3MnBncmlP
TG1TQUFCOEhnQUFFQUZ4OHdaUkQvdjhrUHVGTGpYSDlndCtBQUN2SGdBQUVBSHlwOXlZRDlvZkZQ
S0dVbmdmZVE1cgpBQURxSGdBQUVBRUUvUkVoZUdlUEZsUFVNNkZ4SU00OUFBQW5Id0FBRUFHWEZq
TlBvc1ZiYndMVFNJdE1BVThEQUFCZEh3QUFFQUVKClNBWVk1UGVxejM2YXpQcEZic2NQQUFDVEh3
QUFFQUVvQ0xPWmRFNXdrZy92cmNhU1pEQ2hBQURKSHdBQUVBSGpZVTk4RDBVWTNoZTUKY1hhNmVU
Y3JBQUQ2SHdBQUVBSEszbjVqQ0lLZk1Rd3JORHBab0ZJTEFBQWtJQUFBRUFFeFp1aWl4cGZ3RTZU
VzB6eFl1c29WQUFCVgpJQUFBRUFFdXEvM1R0Mk0vakEvaGlvMzNXUkQwQUFDRklBQUFFQUZZSFF3
TndmNUVNYXZML09WbzRsWm1BQURkSUFBQUVBR3o2V2lzClVta25BNjFtbUxweDRadXZBQUF2SVFB
QUVBR04waE9wRmJDNW1NdnhleXF2bW9OMEFBQm1JUUFBRUFHN0dJUjE4RzRuMWQ0MzBUUG8KY2dw
WkFBQ1lJUUFBRUFGTWlyL0FjU3hyUkdKbGxvN09oYmNCQUFEU0lRQUFFQUZUNTMyY3duRzhFNlJq
dVNKTmdXaE5BQUFMSWdBQQpFQUYyRURlMjFzOHlxa3hMdVBJNkdpQVRBQUE3SWdBQUVBSDVsV2lu
NWFRMUpIOFdPOTYwVWdTWEFBQnFJZ0FBRUFHRWlQZkkwY0NWClNsdmxiZGsrVkY2RkFBQ2lJZ0FB
RUFFTkVXZGlRN2lPNlAzd1E0ZUxNQW1oQUFEZUlnQUFFQUY0eHlZSlhxWXJHWGxzc25jcFdaMkYK
QUFBQkl3QUFFQUdnYllSbzhrd3Q3b0M5K2hSU2EzQWhBQUEzSXdBQUVBRlorNDFUVGRJZUZnVENX
RTUzZysvV0FBQjhJd0FBRUFHTgpvZW1oRzMxUG9HMFlHZXlaNG5RMEFBQzFJd0FBRUFITXpscVNa
VG9FSlpnbGtSSjgrcllmQUFEcUl3QUFFQUhqMzZUNklCcERUeklXCkhuOVhOczZJQUFBY0pBQUFF
QUZ4SDFRc2N1aUxISVEyclo0M2N2b2JBQUJpSkFBQUVBSHhZOHI2NWpzcWM1MjZ2TWo0ZTIxSkFB
Q2cKSkFBQUVBRjZQL0VRU0VYUVFqMk5qMXI3bGQ5NUFBRFRKQUFBRUFFK3VJWmpGOFNYM0ZuUHZF
bXFNMG90QUFBVkpRQUFFQUZXRzBvZApVNWw5d0VuL09WZVdLTXdkQUFCSUpRQUFFQUVXRVhtczZh
OFJncmtLVzJBdm0xQXlBQUNQSlFBQUVBRUVBQlNKcTZlUXF5ME53OEJzCmQ3MEVBQURFSlFBQUVB
RmxTNkZrR2tCY0dJRkVYdklCNUY1NUFBRDlKUUFBRUFIQTlQTFViMFJKZDIwTkFlVS85d1ZqQUFC
Q0pnQUEKRUFFeEIyaTQyTFNlRTJkU1ZzZjA5NWR4QUFCMUpnQUFFQUc1ZkQ1cGt1NFRLcmhsS2sz
T21mNWZBQUNxSmdBQUVBRXBSR05GMFRvYwpUQTFmbWtuazZHS2dBQURlSmdBQUVBRmMxdmVoejFM
Zm9DSGROd013SHc1UkFBRHpBQUFBcXlrQUFBQmpPbHhoY0hCc1pXbHVkR1Z5CmJtRnNYR2x1WTJ4
MVpHVmNaR2x6Y0dGMFkyaGNkR2x0WlM1b0FHTTZYR0Z3Y0d4bGFXNTBaWEp1WVd4Y2FXNWpiSFZr
WlZ4amIzSmwKWm05MWJtUmhkR2x2Ymx4alpuUnlaV1V1YUFCak9seGhjSEJzWldsdWRHVnlibUZz
WEdsdVkyeDFaR1ZjWTI5eVpXZHlZWEJvYVdOegpYR05uY21WdVpHVnlhVzVuYzNSaGRHVXVhQUJq
T2x4aGNIQnNaV2x1ZEdWeWJtRnNYR2x1WTJ4MVpHVmNZMjl5WldadmRXNWtZWFJwCmIyNWNZMlp1
YjNScFptbGpZWFJwYjI1alpXNTBaWEl1YUFCak9seGhjSEJzWldsdWRHVnlibUZzWEdsdVkyeDFa
R1ZjWTI5eVpXZHkKWVhCb2FXTnpYR05uWW1GelpYQnlhWFpoZEdVdWFBQmpPbHhoY0hCc1pXbHVk
R1Z5Ym1Gc1hHbHVZMngxWkdWY1kyOXNiM0p6ZVc1agpYR052Ykc5eWMzbHVZMk50YlM1b0FHTTZY
SEJ5YjJkeVlXMGdabWxzWlhNZ0tIZzROaWxjYldsamNtOXpiMlowSUhacGMzVmhiQ0J6CmRIVmth
VzhnT0Z4MlkxeHBibU5zZFdSbFhHVnljbTV2TG1nQVl6cGNZWEJ3YkdWcGJuUmxjbTVoYkZ4cGJt
TnNkV1JsWEdOdmNtVm0KYjNWdVpHRjBhVzl1WEdObVkyaGhjbUZqZEdWeWMyVjBMbWdBWXpwY2NI
SnZaM0poYlNCbWFXeGxjeUFvZURnMktWeHRhV055YjNOdgpablFnZG1semRXRnNJSE4wZFdScGJ5
QTRYSFpqWEdsdVkyeDFaR1ZjYzJWMGFtMXdMbWdBWXpwY1lYQndiR1ZwYm5SbGNtNWhiRnhwCmJt
TnNkV1JsWEdOdmNtVm5jbUZ3YUdsamMxeGpaMk55ZVhCMGJ5NW9BR002WEdGd2NHeGxhVzUwWlhK
dVlXeGNhVzVqYkhWa1pWeGoKYjNKbFozSmhjR2hwWTNOY1kyZDBaWGgwWTJ4cGNIQnBibWN1YUFC
ak9seGhjSEJzWldsdWRHVnlibUZzWEdsdVkyeDFaR1ZjWkdsegpjR0YwWTJoY2MyVnRZWEJvYjNK
bExtZ0FZenBjWVhCd2JHVnBiblJsY201aGJGeHBibU5zZFdSbFhHUnBjM0JoZEdOb1hIRjFaWFZs
CkxtZ0FZenBjY0hKdlozSmhiU0JtYVd4bGN5QW9lRGcyS1Z4dGFXTnliM052Wm5RZ2RtbHpkV0Zz
SUhOMGRXUnBieUE0WEhaalhHbHUKWTJ4MVpHVmNjM1JrYVc4dWFBQmpPbHhoY0hCc1pXbHVkR1Z5
Ym1Gc1hHbHVZMngxWkdWY1kyOXlaV2R5WVhCb2FXTnpYR05uYm05MAphV1pwWTJGMGFXOXVZMlZ1
ZEdWeUxtZ0FZenBjWVhCd2JHVnBiblJsY201aGJGeHBibU5zZFdSbFhHRjJZV2xzWVdKcGJHbDBl
UzVvCkFHTTZYR0Z3Y0d4bGFXNTBaWEp1WVd4Y2FXNWpiSFZrWlZ4amIzSmxabTkxYm1SaGRHbHZi
bHhqWm1WeWNtOXlMbWdBWXpwY1lYQncKYkdWcGJuUmxjbTVoYkZ4cGJtTnNkV1JsWEdGMllXbHNZ
V0pwYkdsMGVXbHVkR1Z5Ym1Gc0xtZ0FZenBjWVhCd2JHVnBiblJsY201aApiRnhwYm1Oc2RXUmxY
R052Y21WbmNtRndhR2xqYzF4aloybHRZV2RsY0hKdmRtbGtaWEl1YUFCak9seGhjSEJzWldsdWRH
VnlibUZzClhHbHVZMngxWkdWY1kyOXlaV1p2ZFc1a1lYUnBiMjVjWTJaemRISnBibWN1YUFCak9s
eGhjSEJzWldsdWRHVnlibUZzWEdsdVkyeDEKWkdWY1kyOXlaV1p2ZFc1a1lYUnBiMjVjWTJaaGNu
SmhlUzVvQUdNNlhHRndjR3hsYVc1MFpYSnVZV3hjYVc1amJIVmtaVnhqYjNKbApaM0poY0docFkz
TmNZMmRoWm1acGJtVjBjbUZ1YzJadmNtMHVhQUJqT2x4amVXZDNhVzVjYUc5dFpWeGpiV0Z5Y21s
dVhIZGxZbXRwCmRHSjFhV3hrWEc5aWFseDNaV0pyYVhSemVYTjBaVzFwYm5SbGNtWmhZMlZjWkdW
eWFYWmxaSE52ZFhKalpYTmNiV1ZrYVdGcGJXRm4KWlhNdWFBQmpPbHhoY0hCc1pXbHVkR1Z5Ym1G
c1hHbHVZMngxWkdWY1kyOXlaV2R5WVhCb2FXTnpYR05uWjJWdmJXVjBjbmt1YUFCagpPbHhoY0hC
c1pXbHVkR1Z5Ym1Gc1hHbHVZMngxWkdWY1kyOXlaV1p2ZFc1a1lYUnBiMjVjWTJaa2FXTjBhVzl1
WVhKNUxtZ0FZenBjCllYQndiR1ZwYm5SbGNtNWhiRnhwYm1Oc2RXUmxYR052Y21WbWIzVnVaR0Yw
YVc5dVhHTm1ZbUZ6WlM1b0FHTTZYR0Z3Y0d4bGFXNTAKWlhKdVlXeGNhVzVqYkhWa1pWeGthWE53
WVhSamFGeHZibU5sTG1nQVl6cGNZWEJ3YkdWcGJuUmxjbTVoYkZ4cGJtTnNkV1JsWEdOdgpjbVZt
YjNWdVpHRjBhVzl1WEdObWJuVnRZbVZ5TG1nQVl6cGNZWEJ3YkdWcGJuUmxjbTVoYkZ4cGJtTnNk
V1JsWEhSaGNtZGxkR052CmJtUnBkR2x2Ym1Gc2N5NW9BR002WEdGd2NHeGxhVzUwWlhKdVlXeGNh
VzVqYkhWa1pWeGpiM0psWjNKaGNHaHBZM05jWTJkamIyeHYKY21OdlpHVm1jbUZuYldWdWRDNW9B
R002WEdGd2NHeGxhVzUwWlhKdVlXeGNhVzVqYkhWa1pWeHpkR1JwYm5RdWFBQmpPbHhoY0hCcwpa
V2x1ZEdWeWJtRnNYR2x1WTJ4MVpHVmNZMjl5WldkeVlYQm9hV056WEdOblkyOXVkR1Y0ZEdSbGJH
Vm5ZWFJsTG1nQVl6cGNZWEJ3CmJHVnBiblJsY201aGJGeHBibU5zZFdSbFhHTnZjbVZuY21Gd2FH
bGpjMXhqWjJsdFlXZGxZbXh2WTJzdWFBQmpPbHhoY0hCc1pXbHUKZEdWeWJtRnNYR2x1WTJ4MVpH
VmNhVzFoWjJWcGIxeGpaMmx0WVdkbFlXTmpaWE56YzJWemMybHZiaTVvQUdNNlhHRndjR3hsYVc1
MApaWEp1WVd4Y2FXNWpiSFZrWlZ4amIzSmxabTkxYm1SaGRHbHZibHhqWm5KMWJuUnBiV1V1YUFC
ak9seGhjSEJzWldsdWRHVnlibUZzClhHbHVZMngxWkdWY1kyOXlaV2R5WVhCb2FXTnpYR05uWjNO
MFlYUmxMbWdBWXpwY1lYQndiR1ZwYm5SbGNtNWhiRnhwYm1Oc2RXUmwKWEdOdmNtVm5jbUZ3YUds
amMxeGpaMlpzYjJGMExtZ0FZenBjWVhCd2JHVnBiblJsY201aGJGeHBibU5zZFdSbFhHbHRZV2Rs
YVc5YwpZMmRwYldGblpXTnZjSGx3Y21sMkxtZ0FZenBjY0hKdlozSmhiU0JtYVd4bGN5QW9lRGcy
S1Z4dGFXTnliM052Wm5RZ2RtbHpkV0ZzCklITjBkV1JwYnlBNFhIWmpYR2x1WTJ4MVpHVmNjM1Jr
YkdsaUxtZ0FZenBjWVhCd2JHVnBiblJsY201aGJGeHBibU5zZFdSbFhHTnYKY21WbmNtRndhR2xq
YzF4aloyTnNhWEJ6ZEdGamF5NW9BR002WEhCeWIyZHlZVzBnWm1sc1pYTWdLSGc0TmlsY2JXbGpj
bTl6YjJaMApJSFpwYzNWaGJDQnpkSFZrYVc4Z09GeDJZMXhwYm1Oc2RXUmxYR3hwYldsMGN5NW9B
R002WEdGd2NHeGxhVzUwWlhKdVlXeGNhVzVqCmJIVmtaVnhqYjNKbFozSmhjR2hwWTNOY1kyZGpi
R2x3TG1nQVl6cGNZWEJ3YkdWcGJuUmxjbTVoYkZ4cGJtTnNkV1JsWEdOdmNtVm0KYjNWdVpHRjBh
Vzl1WEdObWMyVjBMbWdBWXpwY1kzbG5kMmx1WEdodmJXVmNZMjFoY25KcGJseHpiM1Z5WTJWY2Mz
WnVYSGRsWW10cApkRnhwYm5SbGNtNWhiRngzWldKcmFYUnplWE4wWlcxcGJuUmxjbVpoWTJWY2JH
Vm5ZV041YldWa2FXRjFhUzVqY0hBQVl6cGNjSEp2ClozSmhiU0JtYVd4bGN5QW9lRGcyS1Z4dGFX
TnliM052Wm5RZ2RtbHpkV0ZzSUhOMGRXUnBieUE0WEhaalhHbHVZMngxWkdWY2RHbHQKWlM1b0FH
TTZYSEJ5YjJkeVlXMGdabWxzWlhNZ0tIZzROaWxjYldsamNtOXpiMlowSUhacGMzVmhiQ0J6ZEhW
a2FXOGdPRngyWTF4cApibU5zZFdSbFhITnBaMjVoYkM1b0FHTTZYR0Z3Y0d4bGFXNTBaWEp1WVd4
Y2FXNWpiSFZrWlZ4amIzSmxaM0poY0docFkzTmNZMmR3ClpHWmtiMk4xYldWdWRIQnlhWFpoZEdV
dWFBQmpPbHhoY0hCc1pXbHVkR1Z5Ym1Gc1hHbHVZMngxWkdWY1kyOXlaV1p2ZFc1a1lYUnAKYjI1
Y1kyWmlhWFIyWldOMGIzSXVhQUJqT2x4aGNIQnNaV2x1ZEdWeWJtRnNYR2x1WTJ4MVpHVmNZMjlz
YjNKemVXNWpYR052Ykc5eQpjM2x1WTNSeVlXNXpabTl5YlM1b0FHTTZYR0Z3Y0d4bGFXNTBaWEp1
WVd4Y2FXNWpiSFZrWlZ4amIzSmxabTkxYm1SaGRHbHZibHhqClptTmhiR1Z1WkdGeUxtZ0FZenBj
WVhCd2JHVnBiblJsY201aGJGeHBibU5zZFdSbFhHTnZjbVZtYjNWdVpHRjBhVzl1WEdObWRHbHQK
WlhwdmJtVXVhQUJqT2x4aGNIQnNaV2x1ZEdWeWJtRnNYR2x1WTJ4MVpHVmNZMjl5WldkeVlYQm9h
V056WEdObmMyVnljbTl5Y3k1bwpBR002WEdGd2NHeGxhVzUwWlhKdVlXeGNhVzVqYkhWa1pWeGpi
M0psWjNKaGNHaHBZM05jWTJkbWIyNTBaMng1Y0doemRYQndiM0owCkxtZ0FZenBjWVhCd2JHVnBi
blJsY201aGJGeHBibU5zZFdSbFhHTnZjbVZuY21Gd2FHbGpjMXhqWjJadmJuUnlaVzVrWlhKcGJt
Y3UKYUFCak9seGhjSEJzWldsdWRHVnlibUZzWEdsdVkyeDFaR1ZjWTI5eVpXZHlZWEJvYVdOelhH
Tm5jMjltZEcxaGMyc3VhQUJqT2x4aApjSEJzWldsdWRHVnlibUZzWEdsdVkyeDFaR1ZjWTI5eVpX
ZHlZWEJvYVdOelhHTm5jR1JtWkc5amRXMWxiblF1YUFCak9seHdjbTluCmNtRnRJR1pwYkdWeklD
aDRPRFlwWEcxcFkzSnZjMjltZENCMmFYTjFZV3dnYzNSMVpHbHZJRGhjZG1OY2FXNWpiSFZrWlZ4
emRISnAKYm1jdWFBQmpPbHhoY0hCc1pXbHVkR1Z5Ym1Gc1hHbHVZMngxWkdWY1kyOXlaV2R5WVhC
b2FXTnpYR05uY0dSbWNHRm5aUzVvQUdNNgpYR0Z3Y0d4bGFXNTBaWEp1WVd4Y2FXNWpiSFZrWlZ4
amIzSmxaM0poY0docFkzTmNZMmR3WVhSb0xtZ0FZenBjWVhCd2JHVnBiblJsCmNtNWhiRnhwYm1O
c2RXUmxYR052Y21WbmNtRndhR2xqYzF4aloyTnNhWEJ0WVhOckxtZ0FZenBjWVhCd2JHVnBiblJs
Y201aGJGeHAKYm1Oc2RXUmxYR0YyWVdsc1lXSnBiR2wwZVcxaFkzSnZjeTVvQUdNNlhHRndjR3hs
YVc1MFpYSnVZV3hjYVc1amJIVmtaVnhqYjNKbApaM0poY0docFkzTmNZMmRrWVhSaFkyOXVjM1Z0
WlhJdWFBQmpPbHhoY0hCc1pXbHVkR1Z5Ym1Gc1hHbHVZMngxWkdWY1kyOXlaV2R5CllYQm9hV056
WEdObmNHUm1aR2xqZEdsdmJtRnllUzVvQUdNNlhHRndjR3hsYVc1MFpYSnVZV3hjYVc1amJIVmta
VnhqYjNKbFozSmgKY0docFkzTmNZMmR3WkdadmNHVnlZWFJ2Y25SaFlteGxMbWdBWXpwY1lYQndi
R1ZwYm5SbGNtNWhiRnhwYm1Oc2RXUmxYR052Y21WbgpjbUZ3YUdsamMxeGpaMmx0WVdkbFlteHZZ
MnR6WlhRdWFBQmpPbHh3Y205bmNtRnRJR1pwYkdWeklDaDRPRFlwWEcxcFkzSnZjMjltCmRDQjJh
WE4xWVd3Z2MzUjFaR2x2SURoY2RtTmNhVzVqYkhWa1pWeHplWE5jZEhsd1pYTXVhQUJqT2x4aGNI
QnNaV2x1ZEdWeWJtRnMKWEdsdVkyeDFaR1ZjWTI5eVpXZHlZWEJvYVdOelhHTm5jR1JtWVhKeVlY
a3VhQUJqT2x4aGNIQnNaV2x1ZEdWeWJtRnNYR2x1WTJ4MQpaR1ZjWTI5eVpXZHlZWEJvYVdOelhH
Tm5aM0poWkdsbGJuUXVhQUJqT2x4aGNIQnNaV2x1ZEdWeWJtRnNYR2x1WTJ4MVpHVmNZMjl5ClpX
ZHlZWEJvYVdOelhHTm5jR1JtYzJOaGJtNWxjaTVvQUdNNlhIQnliMmR5WVcwZ1ptbHNaWE1nS0hn
NE5pbGNiV2xqY205emIyWjAKSUhacGMzVmhiQ0J6ZEhWa2FXOGdPRngyWTF4cGJtTnNkV1JsWEhO
M2NISnBiblJtTG1sdWJBQmpPbHhoY0hCc1pXbHVkR1Z5Ym1GcwpYR2x1WTJ4MVpHVmNZMjl5Wlda
dmRXNWtZWFJwYjI1Y1kyWmhkSFJ5YVdKMWRHVmtjM1J5YVc1bkxtZ0FZenBjWVhCd2JHVnBiblJs
CmNtNWhiRnhwYm1Oc2RXUmxYR0Z3Y0d4cFkyRjBhVzl1YzJWeWRtbGpaWE5jWVhCd2JHbGpZWFJw
YjI1elpYSjJhV05sYzNCeWFYWXUKYUFCak9seGhjSEJzWldsdWRHVnlibUZzWEdsdVkyeDFaR1Zj
WTI5c2IzSnplVzVqWEdOdmJHOXljM2x1WTJSbGRtbGpaUzVvQUdNNgpYR0Z3Y0d4bGFXNTBaWEp1
WVd4Y2FXNWpiSFZrWlZ4a2FYTndZWFJqYUZ4emIzVnlZMlV1YUFCak9seGhjSEJzWldsdWRHVnli
bUZzClhHbHVZMngxWkdWY1kyOXlaV2R5WVhCb2FXTnpYR052Y21WbmNtRndhR2xqYzNCeWFYWmhk
R1V1YUFCak9seGhjSEJzWldsdWRHVnkKYm1Gc1hHbHVZMngxWkdWY1kyOXlaV2R5WVhCb2FXTnpY
R05uY0dSbWIySnFaV04wTG1nQVl6cGNZWEJ3YkdWcGJuUmxjbTVoYkZ4cApibU5zZFdSbFhHTnZj
bVZtYjNWdVpHRjBhVzl1WEdObWRYSnNaVzUxYldWeVlYUnZjaTVvQUdNNlhHRndjR3hsYVc1MFpY
SnVZV3hjCmFXNWpiSFZrWlZ4amIzSmxaM0poY0docFkzTmNZMmRqYjI1bWFXY3VhQUJqT2x4aGNI
QnNaV2x1ZEdWeWJtRnNYR2x1WTJ4MVpHVmMKWTI5eVpXWnZkVzVrWVhScGIyNWNZMlozYVc1a2Iz
ZHpibUZ0WldSd2FYQmxMbWdBWXpwY1lYQndiR1ZwYm5SbGNtNWhiRnhwYm1OcwpkV1JsWEhoc2Iy
TmhiR1V1YUFCak9seGhjSEJzWldsdWRHVnlibUZzWEdsdVkyeDFaR1ZjWTI5eVpXZHlZWEJvYVdO
elhHTm5ZbWwwCmJXRndZMjl1ZEdWNGRIQnlhWFpoZEdVdWFBQmpPbHh3Y205bmNtRnRJR1pwYkdW
eklDaDRPRFlwWEcxcFkzSnZjMjltZENCMmFYTjEKWVd3Z2MzUjFaR2x2SURoY2RtTmNhVzVqYkhW
a1pWeHNiMk5oYkdVdWFBQmpPbHhoY0hCc1pXbHVkR1Z5Ym1Gc1hHbHVZMngxWkdWYwpZMjl5Wldk
eVlYQm9hV056WEdOblkyOXVkR1Y0ZEhSbGVIUXVhQUJqT2x4aGNIQnNaV2x1ZEdWeWJtRnNYR2x1
WTJ4MVpHVmNZMjl5ClpXZHlZWEJvYVdOelhHTm5ZbWwwYldGd1kyOXVkR1Y0ZEM1b0FHTTZYR0Z3
Y0d4bGFXNTBaWEp1WVd4Y2FXNWpiSFZrWlZ4amIzSmwKWm05MWJtUmhkR2x2Ymx4alpuQnlaV1ps
Y21WdVkyVnpMbWdBWXpwY1lYQndiR1ZwYm5SbGNtNWhiRnhwYm1Oc2RXUmxYR052Y21WbQpiM1Z1
WkdGMGFXOXVYR05tWkdGMFpXWnZjbTFoZEhSbGNpNW9BR002WEdGd2NHeGxhVzUwWlhKdVlXeGNh
VzVqYkhWa1pWeGpiM0psClozSmhjR2hwWTNOY1kyZG1iMjUwWlc1amIyUnBibWN1YUFCak9seGhj
SEJzWldsdWRHVnlibUZzWEdsdVkyeDFaR1ZjWTI5eVpXZHkKWVhCb2FXTnpYR05uWm05dWRHbHVa
R1Y0YldGd0xtZ0FZenBjWVhCd2JHVnBiblJsY201aGJGeHBibU5zZFdSbFhHTnZjbVZuY21Gdwph
R2xqYzF4aloyUmhkR0ZqYjI1emRXMWxjbkJ5YVhaaGRHVXVhQUJqT2x4d2NtOW5jbUZ0SUdacGJH
VnpJQ2g0T0RZcFhHMXBZM0p2CmMyOW1kQ0IyYVhOMVlXd2djM1IxWkdsdklEaGNkbU5jYVc1amJI
VmtaVnh6ZEdSaGNtY3VhQUJqT2x4aGNIQnNaV2x1ZEdWeWJtRnMKWEdsdVkyeDFaR1ZjWTI5c2Iz
SnplVzVqWEdOdmJHOXljM2x1WTNCeWFYWXVhQUJqT2x4aGNIQnNaV2x1ZEdWeWJtRnNYR2x1WTJ4
MQpaR1ZjWTI5c2IzSnplVzVqWEdOdmJHOXljM2x1WXk1b0FHTTZYR0Z3Y0d4bGFXNTBaWEp1WVd4
Y2FXNWpiSFZrWlZ4amIyeHZjbk41CmJtTmNZMjlzYjNKemVXNWpZbUZ6WlM1b0FHTTZYR0Z3Y0d4
bGFXNTBaWEp1WVd4Y2FXNWpiSFZrWlZ4amIzSmxabTkxYm1SaGRHbHYKYmx4alptSjFibVJzWlM1
b0FHTTZYR0Z3Y0d4bGFXNTBaWEp1WVd4Y2FXNWpiSFZrWlZ4amIyeHZjbk41Ym1OY1kyOXNiM0p6
ZVc1agpjSEp2Wm1sc1pTNW9BR002WEdGd2NHeGxhVzUwWlhKdVlXeGNhVzVqYkhWa1pWeGpiM0ps
WjNKaGNHaHBZM05jWTJkamIyeHZjbkJ5CmFYWmhkR1V1YUFCak9seGhjSEJzWldsdWRHVnlibUZz
WEdsdVkyeDFaR1ZjWTI5eVpXZHlZWEJvYVdOelhHTm5ZMjlzYjNJdWFBQmoKT2x4d2NtOW5jbUZ0
SUdacGJHVnpJQ2g0T0RZcFhHMXBZM0p2YzI5bWRDQjJhWE4xWVd3Z2MzUjFaR2x2SURoY2RtTmNh
VzVqYkhWawpaVngzZEdsdFpTNXBibXdBWXpwY1lYQndiR1ZwYm5SbGNtNWhiRnhwYm1Oc2RXUmxY
R052Y21WbmNtRndhR2xqYzF4aloyTnZiRzl5CmMzQmhZMlV1YUFCak9seGhjSEJzWldsdWRHVnli
bUZzWEdsdVkyeDFaR1ZjWTI5eVpXWnZkVzVrWVhScGIyNWNZMlp1ZFcxaVpYSm0KYjNKdFlYUjBa
WEl1YUFCak9seGhjSEJzWldsdWRHVnlibUZzWEdsdVkyeDFaR1ZjYVcxaFoyVnBiMXhqWjJsdFlX
ZGxhVzl3YkhWbgphVzR1YUFCak9seGhjSEJzWldsdWRHVnlibUZzWEdsdVkyeDFaR1ZjWTI5eVpX
ZHlZWEJvYVdOelhHTm5jM1I1YkdVdWFBQmpPbHhoCmNIQnNaV2x1ZEdWeWJtRnNYR2x1WTJ4MVpH
VmNZMjl5WldkeVlYQm9hV056WEdOblkyeHBjSE4wY205clpTNW9BR002WEdGd2NHeGwKYVc1MFpY
SnVZV3hjYVc1amJIVmtaVnhqYjNKbFozSmhjR2hwWTNOY1kyZGtZWFJoY0hKdmRtbGtaWEl1YUFC
ak9seGhjSEJzWldsdQpkR1Z5Ym1Gc1hHbHVZMngxWkdWY1kyOXlaV1p2ZFc1a1lYUnBiMjVjWTJa
MWNteGhZMk5sYzNNdWFBQmpPbHhoY0hCc1pXbHVkR1Z5CmJtRnNYR2x1WTJ4MVpHVmNhVzFoWjJW
cGIxeHBiV0ZuWldsdkxtZ0FZenBjWVhCd2JHVnBiblJsY201aGJGeHBibU5zZFdSbFhHTnYKY21W
bmNtRndhR2xqYzF4aloybHRZV2RsTG1nQVl6cGNZWEJ3YkdWcGJuUmxjbTVoYkZ4cGJtTnNkV1Js
WEdOdmNtVm1iM1Z1WkdGMAphVzl1WEdOdmNtVm1iM1Z1WkdGMGFXOXVMbWdBWXpwY1lYQndiR1Zw
Ym5SbGNtNWhiRnhwYm1Oc2RXUmxYR052Y21WbmNtRndhR2xqCmMxeGpaMlJoYzJndWFBQmpPbHh3
Y205bmNtRnRJR1pwYkdWeklDaDRPRFlwWEcxcFkzSnZjMjltZENCMmFYTjFZV3dnYzNSMVpHbHYK
SURoY2RtTmNhVzVqYkhWa1pWeGhjM05sY25RdWFBQmpPbHhoY0hCc1pXbHVkR1Z5Ym1Gc1hHbHVZ
MngxWkdWY2FXMWhaMlZwYjF4cApiV0ZuWldsdmNISnBkbUYwWlM1b0FHTTZYR0Z3Y0d4bGFXNTBa
WEp1WVd4Y2FXNWpiSFZrWlZ4amIzSmxaM0poY0docFkzTmNZMmRqCmIyNTBaWGgwY0hKcGRtRjBa
UzVvQUdNNlhHRndjR3hsYVc1MFpYSnVZV3hjYVc1amJIVmtaVnhqYjNKbFptOTFibVJoZEdsdmJs
eGoKWm5WeWJDNW9BR002WEhCeWIyZHlZVzBnWm1sc1pYTWdLSGc0TmlsY2JXbGpjbTl6YjJaMElI
WnBjM1ZoYkNCemRIVmthVzhnT0Z4MgpZMXhwYm1Oc2RXUmxYSFJwYldVdWFXNXNBR002WEhCeWIy
ZHlZVzBnWm1sc1pYTWdLSGc0TmlsY2JXbGpjbTl6YjJaMElIWnBjM1ZoCmJDQnpkSFZrYVc4Z09G
eDJZMXhwYm1Oc2RXUmxYR04wZVhCbExtZ0FZenBjWVhCd2JHVnBiblJsY201aGJGeHBibU5zZFdS
bFhHbHQKWVdkbGFXOWNZMmRwYldGblpYTnZkWEpqWlhCeWFYWmhkR1V1YUFCak9seGhjSEJzWlds
dWRHVnlibUZzWEdsdVkyeDFaR1ZjWTI5eQpaV2R5WVhCb2FXTnpYR05uY0dSbWMzUnlaV0Z0TG1n
QVl6cGNZWEJ3YkdWcGJuUmxjbTVoYkZ4cGJtTnNkV1JsWEdOdmNtVm1iM1Z1ClpHRjBhVzl1WEdO
bVpHRjBZUzVvQUdNNlhHRndjR3hsYVc1MFpYSnVZV3hjYVc1amJIVmtaVnhwYldGblpXbHZYR05u
YVcxaFoyVnoKYjNWeVkyVXVhQUJqT2x4aGNIQnNaV2x1ZEdWeWJtRnNYR2x1WTJ4MVpHVmNZMjl5
WldadmRXNWtZWFJwYjI1Y1kyWmlhVzVoY25sbwpaV0Z3TG1nQVl6cGNZWEJ3YkdWcGJuUmxjbTVo
YkZ4cGJtTnNkV1JsWEdOdmNtVm5jbUZ3YUdsamMxeGpiM0psWjNKaGNHaHBZM011CmFBQmpPbHho
Y0hCc1pXbHVkR1Z5Ym1Gc1hHbHVZMngxWkdWY1kyOXlaV2R5WVhCb2FXTnpYR05uYkdGNVpYSXVh
QUJqT2x4aGNIQnMKWldsdWRHVnlibUZzWEdsdVkyeDFaR1ZjWTI5eVpXZHlZWEJvYVdOelhHTm5a
bTl1ZEM1b0FHTTZYSEJ5YjJkeVlXMGdabWxzWlhNZwpLSGc0TmlsY2JXbGpjbTl6YjJaMElIWnBj
M1ZoYkNCemRIVmthVzhnT0Z4MlkxeHBibU5zZFdSbFhHMWhkR2d1YUFCak9seHdjbTluCmNtRnRJ
R1pwYkdWeklDaDRPRFlwWEcxcFkzSnZjMjltZENCMmFYTjFZV3dnYzNSMVpHbHZJRGhjZG1OY2FX
NWpiSFZrWlZ4bWJHOWgKZEM1b0FHTTZYR0Z3Y0d4bGFXNTBaWEp1WVd4Y2FXNWpiSFZrWlZ4amIz
SmxabTkxYm1SaGRHbHZibHhqWm14dlkyRnNaUzVvQUdNNgpYSEJ5YjJkeVlXMGdabWxzWlhNZ0tI
ZzROaWxjYldsamNtOXpiMlowSUhacGMzVmhiQ0J6ZEhWa2FXOGdPRngyWTF4cGJtTnNkV1JsClhH
TnlkSGR5Ymk1b0FHTTZYR0Z3Y0d4bGFXNTBaWEp1WVd4Y2FXNWpiSFZrWlZ4amIzSmxaM0poY0do
cFkzTmNZMmRqYjI1MFpYaDAKYVcxaFoyVXVhQUJqT2x4aGNIQnNaV2x1ZEdWeWJtRnNYR2x1WTJ4
MVpHVmNZMjl5WldkeVlYQm9hV056WEdObmNHUm1jM1J5YVc1bgpMbWdBWXpwY1lYQndiR1ZwYm5S
bGNtNWhiRnhwYm1Oc2RXUmxYR052Y21WbWIzVnVaR0YwYVc5dVhHTm1aR0YwWlM1b0FHTTZYR0Z3
CmNHeGxhVzUwWlhKdVlXeGNhVzVqYkhWa1pWeGpiM0psWm05MWJtUmhkR2x2Ymx4alptMWxjM05o
WjJWd2IzSjBMbWdBWXpwY1lYQncKYkdWcGJuUmxjbTVoYkZ4cGJtTnNkV1JsWEdOdmNtVm5jbUZ3
YUdsamMxeGpaMlJoZEdGd2NtOTJhV1JsY25CeWFYWmhkR1V1YUFCagpPbHhoY0hCc1pXbHVkR1Z5
Ym1Gc1hHbHVZMngxWkdWY1pHbHpjR0YwWTJoY1pHbHpjR0YwWTJndWFBQmpPbHhoY0hCc1pXbHVk
R1Z5CmJtRnNYR2x1WTJ4MVpHVmNaR2x6Y0dGMFkyaGNZbUZ6WlM1b0FHTTZYR0Z3Y0d4bGFXNTBa
WEp1WVd4Y2FXNWpiSFZrWlZ4amIzSmwKWjNKaGNHaHBZM05jWTJkcGJXRm5aWEJ5YVhaaGRHVXVh
QUJqT2x4aGNIQnNaV2x1ZEdWeWJtRnNYR2x1WTJ4MVpHVmNZMjl5WldkeQpZWEJvYVdOelhHTm5h
VzFoWjJWbGNITnlaWEF1YUFCak9seGhjSEJzWldsdWRHVnlibUZzWEdsdVkyeDFaR1ZjWTI5c2Iz
SnplVzVqClhHbGpZeTVvQUdNNlhHRndjR3hsYVc1MFpYSnVZV3hjYVc1amJIVmtaVnhqYjNKbFpt
OTFibVJoZEdsdmJseGpabUo1ZEdWdmNtUmwKY2k1b0FHTTZYR0Z3Y0d4bGFXNTBaWEp1WVd4Y2FX
NWpiSFZrWlZ4amIzSmxabTkxYm1SaGRHbHZibHhqWm5Cc2RXZHBiaTVvQUdNNgpYR0Z3Y0d4bGFX
NTBaWEp1WVd4Y2FXNWpiSFZrWlZ4a2FYTndZWFJqYUZ4dlltcGxZM1F1YUFCak9seGhjSEJzWlds
dWRHVnlibUZzClhHbHVZMngxWkdWY1kyOXlaV2R5WVhCb2FXTnpYR05uWm05dWRIVnVhV052WkdW
emRYQndiM0owTG1nQVl6cGNZWEJ3YkdWcGJuUmwKY201aGJGeHBibU5zZFdSbFhHTnZjbVZuY21G
d2FHbGpjMXhqWjNOb1lXUnBibWN1YUFCak9seGhjSEJzWldsdWRHVnlibUZzWEdsdQpZMngxWkdW
Y1kyOXlaV2R5WVhCb2FXTnpYR05uWm5WdVkzUnBiMjR1YUFCak9seGhjSEJzWldsdWRHVnlibUZz
WEdsdVkyeDFaR1ZjClkyOXlaV2R5WVhCb2FXTnpYR05uY0dSbVkyOXVkR1Z1ZEhOMGNtVmhiUzVv
QUdNNlhHRndjR3hsYVc1MFpYSnVZV3hjYVc1amJIVmsKWlZ4cGJXRm5aV2x2WEdObmFXMWhaMlZr
WlhOMGFXNWhkR2x2Ym5CeWFYWmhkR1V1YUFCak9seGhjSEJzWldsdWRHVnlibUZzWEdsdQpZMngx
WkdWY2FXMWhaMlZwYjF4aloybHRZV2RsWkdWemRHbHVZWFJwYjI0dWFBQmpPbHhoY0hCc1pXbHVk
R1Z5Ym1Gc1hHbHVZMngxClpHVmNZMjl5WldkeVlYQm9hV056WEdOblpHbHpjR3hoZVd4cGMzUXVh
QUJqT2x4aGNIQnNaV2x1ZEdWeWJtRnNYR2x1WTJ4MVpHVmMKWTI5eVpXZHlZWEJvYVdOelhHTm5Z
Mjl1ZEdWNGRIQmhkR2d1YUFCak9seGhjSEJzWldsdWRHVnlibUZzWEdsdVkyeDFaR1ZjWTI5eQpa
V2R5WVhCb2FXTnpYR05uYzNSNWNHVnpMbWdBWXpwY1lYQndiR1ZwYm5SbGNtNWhiRnhwYm1Oc2RX
UmxYR1JwYzNCaGRHTm9YR2R5CmIzVndMbWdBWXpwY1lYQndiR1ZwYm5SbGNtNWhiRnhwYm1Oc2RX
UmxYR052Y21WbWIzVnVaR0YwYVc5dVhHTm1kWFZwWkM1b0FHTTYKWEdGd2NHeGxhVzUwWlhKdVlX
eGNhVzVqYkhWa1pWeGpiM0psWjNKaGNHaHBZM05jWTJkbGNuSnZjaTVvQUdNNlhHTjVaM2RwYmx4
bwpiMjFsWEdOdFlYSnlhVzVjYzI5MWNtTmxYSE4yYmx4M1pXSnJhWFJjYVc1MFpYSnVZV3hjZDJW
aWEybDBjM2x6ZEdWdGFXNTBaWEptCllXTmxYR3hsWjJGamVXMWxaR2xoZFdrdWFBQmpPbHhqZVdk
M2FXNWNhRzl0WlZ4amJXRnljbWx1WEhOdmRYSmpaVnh6ZG01Y2QyVmkKYTJsMFhHbHVkR1Z5Ym1G
c1hIZGxZbXRwZEhONWMzUmxiV2x1ZEdWeVptRmpaVnh0WldScFlYVnBMbWdBWXpwY1lYQndiR1Zw
Ym5SbApjbTVoYkZ4cGJtTnNkV1JsWEdOdmNtVm5jbUZ3YUdsamMxeGpaMmx0WVdkbGFuQmxaM0ps
Y0M1b0FHTTZYR0Z3Y0d4bGFXNTBaWEp1CllXeGNhVzVqYkhWa1pWeGpiM0psWjNKaGNHaHBZM05j
WTJkamIyNTBaWGgwTG1nQVl6cGNZWEJ3YkdWcGJuUmxjbTVoYkZ4cGJtTnMKZFdSbFhHTnZjbVZu
Y21Gd2FHbGpjMXhqWjJaMWJtTjBhVzl1Y0hKcGRtRjBaUzVvQUdNNlhHRndjR3hsYVc1MFpYSnVZ
V3hjYVc1agpiSFZrWlZ4amIzSmxaM0poY0docFkzTmNZMmRqYjJ4dmNuUnlZVzV6Wm05eWJTNW9B
R002WEdGd2NHeGxhVzUwWlhKdVlXeGNhVzVqCmJIVmtaVnhqYjNKbFptOTFibVJoZEdsdmJseGpa
bUpoWnk1b0FHTTZYR0Z3Y0d4bGFXNTBaWEp1WVd4Y2FXNWpiSFZrWlZ4amIzSmwKWjNKaGNHaHBZ
M05jWTJkaVlYTmxMbWdBWXpwY1lYQndiR1ZwYm5SbGNtNWhiRnhwYm1Oc2RXUmxYR052Y21WbmNt
RndhR2xqYzF4agpaMk52Ym5SbGVIUm5jM1JoZEdVdWFBQmpPbHhoY0hCc1pXbHVkR1Z5Ym1Gc1hH
bHVZMngxWkdWY1kyOXlaV2R5WVhCb2FXTnpYR05uClkyOXNiM0p6Y0dGalpYQnlhWFpoZEdVdWFB
QmpPbHhoY0hCc1pXbHVkR1Z5Ym1Gc1hHbHVZMngxWkdWY2MzUmtZbTl2YkM1b0FHTTYKWEdGd2NH
eGxhVzUwWlhKdVlXeGNhVzVqYkhWa1pWeGpiM0psWjNKaGNHaHBZM05jWTJkbWIyNTBjSEpwZG1G
MFpTNW9BR002WEhCeQpiMmR5WVcwZ1ptbHNaWE1nS0hnNE5pbGNiV2xqY205emIyWjBJSFpwYzNW
aGJDQnpkSFZrYVc4Z09GeDJZMXhwYm1Oc2RXUmxYSE4wClpHUmxaaTVvQUdNNlhHRndjR3hsYVc1
MFpYSnVZV3hjYVc1amJIVmtaVnhqYjNKbFozSmhjR2hwWTNOY1kyZHdZWFIwWlhKdWNISnAKZG1G
MFpTNW9BR002WEdGd2NHeGxhVzUwWlhKdVlXeGNhVzVqYkhWa1pWeGpiM0psWjNKaGNHaHBZM05j
WTJkbWIyNTBZM0psWVhSbApMbWdBWXpwY1lYQndiR1ZwYm5SbGNtNWhiRnhwYm1Oc2RXUmxYR052
Y21WbmNtRndhR2xqYzF4alozQmhkSFJsY200dWFBQmpPbHh3CmNtOW5jbUZ0SUdacGJHVnpJQ2g0
T0RZcFhHMXBZM0p2YzI5bWRDQjJhWE4xWVd3Z2MzUjFaR2x2SURoY2RtTmNhVzVqYkhWa1pWeGoK
Y25Sa1pXWnpMbWdBWXpwY1lYQndiR1ZwYm5SbGNtNWhiRnhwYm1Oc2RXUmxYR052Y21WbWIzVnVa
R0YwYVc5dVhHTm1jM1J5YVc1bgpaVzVqYjJScGJtZGxlSFF1YUFCak9seGhjSEJzWldsdWRHVnli
bUZzWEdsdVkyeDFaR1ZjWTI5eVpXZHlZWEJvYVdOelhHTm5abTl1CmRHbHVabTh1YUFCak9seHdj
bTluY21GdElHWnBiR1Z6SUNoNE9EWXBYRzFwWTNKdmMyOW1kQ0IyYVhOMVlXd2djM1IxWkdsdklE
aGMKZG1OY2FXNWpiSFZrWlZ4ellXd3VhQUJqT2x4aGNIQnNaV2x1ZEdWeWJtRnNYR2x1WTJ4MVpH
VmNZMjl5WldadmRXNWtZWFJwYjI1YwpZMlp6YjJOclpYUXVhQUJqT2x4d2NtOW5jbUZ0SUdacGJH
VnpJQ2g0T0RZcFhHMXBZM0p2YzI5bWRDQjJhWE4xWVd3Z2MzUjFaR2x2CklEaGNkbU5jYVc1amJI
VmtaVnhqY25SaGMzTmxiUzVvQUdNNlhHRndjR3hsYVc1MFpYSnVZV3hjYVc1amJIVmtaVnhwYldG
blpXbHYKWEdObmFXMWhaMlZ3Y205d1pYSjBhV1Z6TG1nQVl6cGNZWEJ3YkdWcGJuUmxjbTVoYkZ4
cGJtTnNkV1JsWEdOdmNtVm1iM1Z1WkdGMAphVzl1WEdObWNISnZjR1Z5ZEhsc2FYTjBMbWdBWXpw
Y2NISnZaM0poYlNCbWFXeGxjeUFvZURnMktWeHRhV055YjNOdlpuUWdkbWx6CmRXRnNJSE4wZFdS
cGJ5QTRYSFpqWEdsdVkyeDFaR1ZjZG1Ga1pXWnpMbWdBWXpwY1lYQndiR1ZwYm5SbGNtNWhiRnhw
Ym1Oc2RXUmwKWEdOdmNtVm1iM1Z1WkdGMGFXOXVYR05tYzNSeVpXRnRMbWdBWXpwY1lYQndiR1Zw
Ym5SbGNtNWhiRnhwYm1Oc2RXUmxYR052Y21WbgpjbUZ3YUdsamMxeGpaM0JrWm1OdmJuUmxlSFF1
YUFCak9seGhjSEJzWldsdWRHVnlibUZzWEdsdVkyeDFaR1ZjWTI5eVpXWnZkVzVrCllYUnBiMjVj
WTJaeWRXNXNiMjl3TG1nQVl6cGNZWEJ3YkdWcGJuUmxjbTVoYkZ4cGJtTnNkV1JsWEdOdmNtVm5j
bUZ3YUdsamMxeGoKWjJadmJuUjJZWEpwWVhScGIyNXpMbWdBSkZReUlDUmxjM0FnTG1OaVRHOWpZ
V3h6SUNzZ0xtTmlVMkYyWldSU1pXZHpJQ3NnUFNBawpWREFnTG5KaFUyVmhjbU5vVTNSaGNuUWdQ
U0FrWldsd0lDUlVNQ0JlSUQwZ0pHVnpjQ0FrVkRBZ05DQXJJRDBBSkZReUlDUmxjM0FnCkxtTmlU
RzlqWVd4eklDc2dMbU5pVTJGMlpXUlNaV2R6SUNzZ1BTQWtWREFnTG5KaFUyVmhjbU5vVTNSaGNu
UWdQU0FrWldsd0lDUlUKTUNCZUlEMGdKR1Z6Y0NBa1ZEQWdOQ0FySUQwZ0pHVmllQ0FrVkRBZ05D
QXRJRjRnUFFBa1ZESWdKR1Z6Y0NBOUlDUlVNQ0F1Y21GVApaV0Z5WTJoVGRHRnlkQ0E5SUNSbGFY
QWdKRlF3SUY0Z1BTQWtaV0p3SUNSVU1DQTBJQzBnWGlBOUlDUk1JQ1JVTWlBOUlDUlFJQ1JVCk1D
QTBJQ3NnTG1OaVVHRnlZVzF6SUNzZ1BTQWtaWE53SUNSVU1DQTBJQ3NnUFFBa1ZESWdKR1Z6Y0NB
OUlDUlVNQ0F1Y21GVFpXRnkKWTJoVGRHRnlkQ0E5SUNSbGFYQWdKRlF3SUY0Z1BTQWtaV0p3SUNS
VU1DQTBJQzBnWGlBOUlDUk1JQ1JVTWlBOUlDUlFJQ1JVTUNBMApJQ3NnTG1OaVVHRnlZVzF6SUNz
Z1BTQWtaWE53SUNSVU1DQTBJQ3NnUFNBa1pXSjRJQ1JVTUNBeE1qZ2dMU0JlSUQwQUpGUXlJQ1Js
CmMzQWdMbU5pVEc5allXeHpJQ3NnTG1OaVUyRjJaV1JTWldkeklDc2dQU0FrVkRBZ0xuSmhVMlZo
Y21Ob1UzUmhjblFnUFNBa1pXbHcKSUNSVU1DQmVJRDBnSkdWemNDQWtWREFnTkNBcklEMGdKR1Zp
ZUNBa1ZEQWdNakFnTFNCZUlEMEFKRlF5SUNSbGMzQWdMbU5pVEc5agpZV3h6SUNzZ0xtTmlVMkYy
WldSU1pXZHpJQ3NnUFNBa1ZEQWdMbkpoVTJWaGNtTm9VM1JoY25RZ1BTQWtaV2x3SUNSVU1DQmVJ
RDBnCkpHVnpjQ0FrVkRBZ05DQXJJRDBnSkdWaWNDQWtWREFnTWpRZ0xTQmVJRDBnSkdWaWVDQWtW
REFnTWpBZ0xTQmVJRDBBQUs4TUFBQ0EKQUFBQUN3Q3pEQUFBZ0FBQUFBb0Exd3dBQUlFQUFBQUxB
TnNNQUFDQkFBQUFDZ0Q4REFBQUNBQUFBQXNBQUEwQUFBZ0FBQUFLQUZZTgpBQUFKQUFBQUN3QmFE
UUFBQ1FBQUFBb0F2ZzBBQUFvQUFBQUxBTUlOQUFBS0FBQUFDZ0FXRGdBQUN3QUFBQXNBR2c0QUFB
c0FBQUFLCkFId09BQUFNQUFBQUN3Q0FEZ0FBREFBQUFBb0ExQTRBQUEwQUFBQUxBTmdPQUFBTkFB
QUFDZ0E2RHdBQURnQUFBQXNBUGc4QUFBNEEKQUFBS0FJWVBBQUFQQUFBQUN3Q0tEd0FBRHdBQUFB
b0E0QThBQUJBQUFBQUxBT1FQQUFBUUFBQUFDZ0F1RUFBQUVRQUFBQXNBTWhBQQpBQkVBQUFBS0FJ
b1FBQUFTQUFBQUN3Q09FQUFBRWdBQUFBb0ExaEFBQUJNQUFBQUxBTm9RQUFBVEFBQUFDZ0F3RVFB
QUZBQUFBQXNBCk5CRUFBQlFBQUFBS0FJQVJBQUFWQUFBQUN3Q0VFUUFBRlFBQUFBb0EzaEVBQUJZ
QUFBQUxBT0lSQUFBV0FBQUFDZ0JHRWdBQUZ3QUEKQUFzQVNoSUFBQmNBQUFBS0FMd1NBQUFZQUFB
QUN3REFFZ0FBR0FBQUFBb0FJaE1BQUJrQUFBQUxBQ1lUQUFBWkFBQUFDZ0NXRXdBQQpHZ0FBQUFz
QW1oTUFBQm9BQUFBS0FBQVVBQUFiQUFBQUN3QUVGQUFBR3dBQUFBb0FlQlFBQUJ3QUFBQUxBSHdV
QUFBY0FBQUFDZ0RHCkZBQUFIUUFBQUFzQXloUUFBQjBBQUFBS0FDSVZBQUFlQUFBQUN3QW1GUUFB
SGdBQUFBb0FnaFVBQUI4QUFBQUxBSVlWQUFBZkFBQUEKQ2dERkZ3QUFSQUFBQUFzQXlSY0FBRVFB
QUFBS0FJbFFUa2NOQ2hvS0FBQUFEVWxJUkZJQUFBQVFBQUFBRUFnR0FBQUFIL1AvWVFBQQpBZWRw
UTBOUVNVTkRJRkJ5YjJacGJHVUFBSGdCclpJL2FCUlJFTWEvM1NNNWl5Ti9SRk1aM0NKRWk0c3N1
U0pKSXhmdlFNUVVSM0pCCmsyNnp0OTR0N200MnU1dlRBd1ZMYTJzdFJJdEFrbDVpUXE0UlJMRVF4
VCtrVFNsWUJFVFJ1SDd2UGNJUlNFamp3TnYzbTI5bjV1M00KV3lCaldtSG82UUQ4SUltbXIxNHhi
czdORzluUHlLR2ZxeHQ5bGgySGs1WEtGRU9Pc1IrZm9JbFhIMFpFclZWdjd1WHN6S3V0aisxdgpi
Mzl0ZnI5OVROS0IzQlB4UUVETFV6aFRWMXdVdktDNEt2aE9FaWFNYVFpMkcxYU5mSStjajZyVEpm
SUt1YWV1K0lYZ0JjV3ZCVGZ0CnVzajlRamFEbWhzQStpbnllTTJKYlhLUjdOWmkyeWV2a2NkOWY1
SDE5VjN5UlR1TW1KdkprWWZFWExqVG11ZUJ5eGNZODdDanpVZkEKK2padzlrOUhHeTd6YzhlQWph
Y2RiVzlBemtvYmVCUGZLb3pLY2xxT3VWMC8wM1J2RU1odUFQdFJtdjUra3FiN3ozbjJWNkM5WkM5
SApUUm5MUnJSM3dFbSs2bGxWQjk2ekI1cThvNk5aelVWR21jQ3pObkNEenZVSHdPTWlNRXpuOUE1
UW9WWXRRaThVRHBhYUlXV2d0K1FHCmptOFpaVGNPUGFzbHRmLzY4TDFsM3BjMDBVbk9DV1pudUor
VHF3UVhBUno0c0dDZ1RDOUdDSTllUzkybnlPdnVBeDRONm44ejk3ZXoKRTBJNFpJbHpWODZwdEJp
MklyZmVTSXhKL3MxTzNyZ1cySmZ5eHFocGp1RWZGYUtLdFBLZ3N2QUFBQUFKY0VoWmN3QUFDeE1B
QUFzVApBUUNhbkJnQUFBRHNTVVJCVkRnUnBWTzdEWVF3REgxQjVsdlFNUUlGUFdJU0pCcm1ZQlBX
b0tOa0FVUkR5UTRNQUFYY25Ua0ZHWTRxCjl5U1RwK2RuS3pHSnF1djZoVDlBU1pJWWwwL1RCSXFp
eUxqQlBNOGd6L09NR3dSQkFPc0QvcHdSeHpFNFdPTjFITWN6SjMzTUdkYTIKYlpDaHQ4TWFJODl6
RE1OdzhXai92dSt3MW5XRkROMkFOWTJpS05EMy9jWEgrV1ZaUUk3amFOOWx2ZXRsV1lLbkxtSGJO
c2gxWGFtZAovSzQzVFlPN0ZvWWh5UGY5czBnU3FiZHRpelJOWmZyZ3ZFdmlYL0VFclhkZGh5ekxu
aXpnSy9BekF6azh5Wjg2OEpHSUIyR0s0d2hLCktkTjZjTzMzT2htM0FGUlZWWDg5NXpmT3hHYTZI
SHJwL1FBQUFBQkpSVTVFcmtKZ2dnQUFBSWxRVGtjTkNob0tBQUFBRFVsSVJGSUEKQUFBUUFBQUFF
QWdHQUFBQUgvUC9ZUUFBQWVkcFEwTlFTVU5ESUZCeWIyWnBiR1VBQUhnQnJaSS9hQlJSRU1hLzNT
TTVpeU4vUkZNWgozQ0pFaTRzc3VTSkpJeGZ2UU1RVVIzSkJrMjZ6dDk0dDdtNDJ1NXZUQXdWTGEy
c3RSSXRBa2w1aVFxNFJSTEVReFQra1RTbFlCRVRSCnVIN3ZQY0lSU0VqandOdjNtMjluNXUzTVd5
QmpXbUhvNlFEOElJbW1yMTR4YnM3Tkc5blB5S0dmcXh0OWxoMkhrNVhLRkVPT3NSK2YKb0lsWEgw
WkVyVlZ2N3VYc3pLdXRqKzF2YjM5dGZyOTlUTktCM0JQeFFFRExVemhUVjF3VXZLQzRLdmhPRWlh
TWFRaTJHMWFOZkkrYwpqNnJUSmZJS3VhZXUrSVhnQmNXdkJUZnR1c2o5UWphRG1oc0EraW55ZU0y
SmJYS1I3TlppMnlldmtjZDlmNUgxOVYzeVJUdU1tSnZKCmtZZkVYTGpUbXVlQnl4Y1k4N0NqelVm
QStqWnc5azlIR3k3emM4ZUFqYWNkYlc5QXprb2JlQlBmS296S2NscU91VjAvMDNSdkVNaHUKQVB0
Um12NStrcWI3ejNuMlY2QzlaQzlIVFJuTFJyUjN3RW0rNmxsVkI5NnpCNXE4bzZOWnpVVkdtY0N6
Tm5DRHp2VUh3T01pTUV6bgo5QTVRb1ZZdFFpOFVEcGFhSVdXZ3QrUUdqbThaWlRjT1Bhc2x0Zi82
OEwxbDNwYzAwVW5PQ1dabnVKK1Rxd1FYQVJ6NHNHQ2dUQzlHCkNJOWVTOTJueU92dUF4NE42bjh6
OTdlekUwSTRaSWx6Vjg2cHRCaTJJcmZlU0l4Si9zMU8zcmdXMkpmeXhxaHBqdUVmRmFLS3RQS2cK
c3ZBQUFBQUpjRWhaY3dBQUN4TUFBQXNUQVFDYW5CZ0FBQUVRU1VSQlZEZ1JZNHlNei8zUFFDYjQv
LzgvQTR1RmhUR1oyaGtZcmx5NQp5c0FpS1NsT3RnSHYzcjFoWU9IbDRTYmJBRDQrWGdZbUlBQVJj
T3pwWXNjQXdpQXhFSDN6eGpXNEhMSTZFQnNFbUw1OCs4R0FqR0hPCkFZbUJRRUZPQnNQWmMrZFEx
TURVZi92eGs0SGwzWWVQTUQwb05MSjRWVWtlUTBWOUc0T3lxanFLbXJmdlBqSXdzYkt5TWlCam1B
cVEKR0RMb2FLeENVUWVTWndGaEhoNGVaSFZ3TnJwNFcrOFVCblF4QVg0K0JoWnVMazY0Sm1RR3Nu
amZsTmtNbXRvNnlOSmdOZ2NIQjJFWApUSiszaEVGSFZ4OURNMGlBbDVlSGdmSGtoUnRrSitVcjE2
NHhzREN6TUdNMW5SaEJWcUJlWUVDU2J3QWJHekFXbUpraEtZb1lHOUhWCk1ERXhNckFzbWpVTlha
d2tQZ0RZWmxIVGsxYWhKUUFBQUFCSlJVNUVya0pnZ2dBQUFBQUFBQUNKVUU1SERRb2FDZ0FBQUEx
SlNFUlMKQUFBQUVBQUFBQkFJQmdBQUFCL3ovMkVBQUFIbmFVTkRVRWxEUXlCUWNtOW1hV3hsQUFC
NEFhMlNQMmdVVVJER3Y5MGpPWXNqZjBSVApHZHdpUkl1TExMa2lTU01YNzBERUZFZHlRWk51czdm
ZUxlNXVOcnViMHdNRlMydHJMVVNMUUpKZVlrS3VFVVN4RU1VL3BFMHBXQVJFCjBiaCs3ejNDRVVo
STQ4RGI5NXR2WitidHpGc2dZMXBoNk9rQS9DQ0pwcTllTVc3T3pSdlp6OGlobjZzYmZaWWRoNU9W
eWhSRGpyRWYKbjZDSlZ4OUdSSzFWYis3bDdNeXJyWS90YjI5L2JYNi9mVXpTZ2R3VDhVQkF5MU00
VTFkY0ZMeWd1Q3I0VGhJbWpHa0l0aHRXalh5UApuSStxMHlYeUNybW5ydmlGNEFYRnJ3VTM3YnJJ
L1VJMmc1b2JBUG9wOG5qTmlXMXlrZXpXWXRzbnI1SEhmWCtSOWZWZDhrVTdqSmliCnlaR0h4Rnk0
MDVybmdjc1hHUE93bzgxSHdQbzJjUFpQUnhzdTgzUEhnSTJuSFcxdlFNNUtHM2dUM3lxTXluSmFq
cmxkUDlOMGJ4REkKYmdEN1VacitmcEttKzg5NTlsZWd2V1F2UjAwWnkwYTBkOEJKdnVwWlZRZmVz
d2VhdktPaldjMUZScG5Bc3pad2c4NzFCOERqSWpCTQo1L1FPVUtGV0xVSXZGQTZXbWlGbG9MZmtC
bzV2R1dVM0RqMnJKYlgvK3ZDOVpkNlhOTkZKemdsbVo3aWZrNnNFRndFYytMQmdvRXd2ClJnaVBY
a3ZkcDhqcjdnTWVEZXAvTS9lM3N4TkNPR1NKYzFmT3FiUVl0aUszM2tpTVNmN05UdDY0RnRpWDhz
YW9hWTdoSHhXaWlyVHkKb0xMd0FBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFCT0VsRVFW
UTRFYVdTTWE2Q1FCUkZMMlFBb2JBeFZDWVVORloyeE1ZTgpVRm15QkN0S3RtS3NURnlFY1FPMk5w
b1FDbG9LVFZnQWtJRCtTOEo4dzlkZjRFMWV3cnc1OXcxdjNpaWJ6ZWFCTHlSVVZjVnNOaHRjClFr
d21FOWkyUGJ5QVpWa1lqVVlmQ3lSSmd0VnFoVFJOM3pJcXMyempYWnpQNTliY01YbWVJNG9peEhI
OHl6ZE5nN3F1LzhUeGVNUjYKdlphbmttRzd5K1VTKy8xZThxSW9DcFJsS2NINWZONSs2N3FPcXFw
a25nejNEb2NEZmlZblBVTFROQkR1NjlYTXZZNXhYUmRabHNtMQpHSS9ITUF5ajcyK0IxeUlkYzcv
ZjRUaU85S2lzYkpxbURBS003WFlMRnU5RWhubGVvT2Q1a2hjY0lVZlpWeEFFbUU2bjhIMi8zU0p6
CnU5MXdPcDBRaHFIMEtOZnI5ZkhmUzd4Y0xsZ3NGdkxTK2djSnRzQ0wvQ1QrTGtmOVNVSlJGRENH
cW4ySlE4MzBpZDF1OTQwZlQvVmYKZTdHNzl4dmRBQUFBQUVsRlRrU3VRbUNDQUFBQUFBQUFBSWxR
VGtjTkNob0tBQUFBRFVsSVJGSUFBQUFRQUFBQUVBZ0dBQUFBSC9QLwpZUUFBQWVkcFEwTlFTVU5E
SUZCeWIyWnBiR1VBQUhnQnJaSS9hQlJSRU1hLzNTTTVpeU4vUkZNWjNDSkVpNHNzdVNKSkl4ZnZR
TVFVClIzSkJrMjZ6dDk0dDdtNDJ1NXZUQXdWTGEyc3RSSXRBa2w1aVFxNFJSTEVReFQra1RTbFlC
RVRSdUg3dlBjSVJTRWpqd052M20yOW4KNXUzTVd5QmpXbUhvNlFEOElJbW1yMTR4YnM3Tkc5blB5
S0dmcXh0OWxoMkhrNVhLRkVPT3NSK2ZvSWxYSDBaRXJWVnY3dVhzekt1dApqKzF2YjM5dGZyOTlU
TktCM0JQeFFFRExVemhUVjF3VXZLQzRLdmhPRWlhTWFRaTJHMWFOZkkrY2o2clRKZklLdWFldStJ
WGdCY1d2CkJUZnR1c2o5UWphRG1oc0EraW55ZU0ySmJYS1I3TlppMnlldmtjZDlmNUgxOVYzeVJU
dU1tSnZKa1lmRVhMalRtdWVCeXhjWTg3Q2oKelVmQStqWnc5azlIR3k3emM4ZUFqYWNkYlc5QXpr
b2JlQlBmS296S2NscU91VjAvMDNSdkVNaHVBUHRSbXY1K2txYjd6M24yVjZDOQpaQzlIVFJuTFJy
UjN3RW0rNmxsVkI5NnpCNXE4bzZOWnpVVkdtY0N6Tm5DRHp2VUh3T01pTUV6bjlBNVFvVll0UWk4
VURwYWFJV1dnCnQrUUdqbThaWlRjT1Bhc2x0Zi82OEwxbDNwYzAwVW5PQ1dabnVKK1Rxd1FYQVJ6
NHNHQ2dUQzlHQ0k5ZVM5Mm55T3Z1QXg0TjZuOHoKOTdlekUwSTRaSWx6Vjg2cHRCaTJJcmZlU0l4
Si9zMU8zcmdXMkpmeXhxaHBqdUVmRmFLS3RQS2dzdkFBQUFBSmNFaFpjd0FBQ3hNQQpBQXNUQVFD
YW5CZ0FBQUY1U1VSQlZEZ1JZNHlJeS9uUHlNaklRQzVnNGVYbFpORFIwU1pYUHdPTGxKUTRnNlNr
T1BrRzhQSHhNdkR5CmNPTTA0TjdkMnd6WjZja00yL2Njd3FxR0NTVEt4TVNFRlYrOWNnbXNHYWJt
dy92M0ROMGRMUXgzYnQ5Q3FQLzI0eWZEbDI4L01QQ2UKM2JzWjZxckw0YmFDMUxCeGNqUG82Qmt5
ckZtOUVxNmU1ZTI3and6dlBueUVLMHlOQ1FheldWaFpHZjc4L2cwWEI2a0J5YlgwVEdhNApzV3d4
WEE4TFNDRXJFS01EWk0wZ09aZ2FTU2taaGpldlg4TDVMQUw4ZkF3OFBEem8rc0VLZmlPNUFLYm02
NWZQRE9JU2tuQTlMQndjCkhBemNYSnh3QTdidlB3NW1Iem0wbjJGQ1Z4dkQxNjlmd0h5UUdwRGMz
bDNiR1RTMWRlRjZnQW1KQjI0YTNCUWd3OFBMRjVnK3BCaHkKMGhMQXdpQVh2SDN6bXVIUytiTU1F
VEh4Y0QyTWM1ZXQrNitqcFlXc0Y0Vjk2K1oxaHRqd1FJYVRGMjZnaU1NNExLd3N6QXpNUUl3TAph
R3JyTUp5NWNodVhOQU1MR3hzb0ZuQWJnRk1uVklLRmlZbVJnWmtabkNBSnFjVXF6M0xteUg0R0VD
WVhBQURiL243MmNuYy9Hd0FBCkFBQkpSVTVFcmtKZ2dnQUFBQUFBQUlsUVRrY05DaG9LQUFBQURV
bElSRklBQUFBUUFBQUFFQWdHQUFBQUgvUC9ZUUFBQWVkcFEwTlEKU1VORElGQnliMlpwYkdVQUFI
Z0JyWkkvYUJSUkVNYS8zU001aXlOL1JGTVozQ0pFaTRzc3VTSkpJeGZ2UU1RVVIzSkJrMjZ6dDk0
dAo3bTQydTV2VEF3VkxhMnN0Ukl0QWtsNWlRcTRSUkxFUXhUK2tUU2xZQkVUUnVIN3ZQY0lSU0Vq
andOdjNtMjluNXUzTVd5QmpXbUhvCjZRRDhJSW1tcjE0eGJzN05HOW5QeUtHZnF4dDlsaDJIazVY
S0ZFT09zUitmb0lsWEgwWkVyVlZ2N3VYc3pLdXRqKzF2YjM5dGZyOTkKVE5LQjNCUHhRRURMVXpo
VFYxd1V2S0M0S3ZoT0VpYU1hUWkyRzFhTmZJK2NqNnJUSmZJS3VhZXUrSVhnQmNXdkJUZnR1c2o5
UWphRAptaHNBK2lueWVNMkpiWEtSN05aaTJ5ZXZrY2Q5ZjVIMTlWM3lSVHVNbUp2SmtZZkVYTGpU
bXVlQnl4Y1k4N0NqelVmQStqWnc5azlICkd5N3pjOGVBamFjZGJXOUF6a29iZUJQZktvektjbHFP
dVYwLzAzUnZFTWh1QVB0Um12NStrcWI3ejNuMlY2QzlaQzlIVFJuTFJyUjMKd0VtKzZsbFZCOTZ6
QjVxOG82Tlp6VVZHbWNDek5uQ0R6dlVId09NaU1Fem45QTVRb1ZZdFFpOFVEcGFhSVdXZ3QrUUdq
bThaWlRjTwpQYXNsdGYvNjhMMWwzcGMwMFVuT0NXWm51SitUcXdRWEFSejRzR0NnVEM5R0NJOWVT
OTJueU92dUF4NE42bjh6OTdlekUwSTRaSWx6ClY4NnB0QmkySXJmZVNJeEovczFPM3JnVzJKZnl4
cWhwanVFZkZhS0t0UEtnc3ZBQUFBQUpjRWhaY3dBQUN4TUFBQXNUQVFDYW5CZ0EKQUFFa1NVUkJW
RGdScFZJN3FvTkFGRDBqRW95Tm91Z0NZdVZhc2dvaGEzQWROaFpaaHAyTllKTW02ZjFCd01aS3E5
aG9rY3h6QkgxdgpoR2VDRVE1M3J1Zk11WGZ1RFBGOW4rS0xUN1J0ZS9QMlBNOGhHb2F4MmFCcEdv
aVNKRzAya0dVWm9pQUlzNEZsV2VOYVVSU0VZUWpUCk5HZnV2NFg0ZkQ0NWpoQUN6L09nNnpxV0hD
Y2NrdGZyQmFIdmUweFFWUlhuOHhtTzR5Q080L24veEM5ajEzVWd3eVRuYTZ6ckdteW8KbDhzRnA5
TUphWm91aTNKNWtpUWdaVm5PQmh6N1FYSy8zeUhzOTN1czRYQTQ0SHE5anBySDQ4RnBkN3NkMExZ
dFhVTVFCS3hEeXFLbQphWnoyZHJ0Uk1nem03UkdpS01MeGVBU2xkQnpzZERyMkV0bFYwRFZVVlRW
V1psMHcvTlZtV1ViSjRQcTJnNm5pTWhaRmdkOW51R1EvCnpJbnJ1cHM3WURWK0FNdVU0QVFCNExw
aUFBQUFBRWxGVGtTdVFtQ0NBQUFBaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJBQUFBQVEKQ0FZ
QUFBQWY4LzloQUFBQjUybERRMUJKUTBNZ1VISnZabWxzWlFBQWVBR3RrajlvRkZFUXhyL2RJem1M
STM5RVV4bmNJa1NMaXl5NQpJa2tqRis5QXhCUkhja0dUYnJPMzNpM3ViamE3bTlNREJVdHJheTFF
aTBDU1htSkNyaEZFc1JERlA2Uk5LVmdFUk5HNGZ1ODl3aEZJClNPUEEyL2ViYjJmbTdjeGJJR05h
WWVqcEFQd2dpYWF2WGpGdXpzMGIyYy9Jb1orckczMldIWWVUbGNvVVE0NnhINStnaVZjZlJrU3QK
VlcvdTVlek1xNjJQN1c5dmYyMSt2MzFNMG9IY0UvRkFRTXRUT0ZOWFhCUzhvTGdxK0U0U0pveHBD
TFliVm8xOGo1eVBxdE1sOGdxNQpwNjc0aGVBRnhhOEZOKzI2eVAxQ05vT2FHd0Q2S2ZKNHpZbHRj
cEhzMW1MYko2K1J4MzEva2ZYMVhmSkZPNHlZbThtUmg4UmN1Tk9hCjU0SExGeGp6c0tQTlI4RDZO
bkQyVDBjYkx2Tnp4NENOcHgxdGIwRE9TaHQ0RTk4cWpNcHlXbzY1WFQvVGRHOFF5RzRBKzFHYS9u
NlMKcHZ2UGVmWlhvTDFrTDBkTkdjdEd0SGZBU2I3cVdWVUgzck1IbXJ5am8xbk5SVWFad0xNMmNJ
UE85UWZBNHlJd1RPZjBEbENoVmkxQwpMeFFPbHBvaFphQzM1QWFPYnhsbE53NDlxeVcxLy9yd3ZX
WGVselRSU2M0SlptZTRuNU9yQkJjQkhQaXdZS0JNTDBZSWoxNUwzYWZJCjYrNERIZzNxZnpQM3Q3
TVRRamhraVhOWHpxbTBHTFlpdDk1SWpFbit6VTdldUJiWWwvTEdxR21PNFI4Vm9vcTA4cUN5OEFB
QUFBbHcKU0ZsekFBQUxFd0FBQ3hNQkFKcWNHQUFBQVV0SlJFRlVPQkZqakl6UC9jOUFKdmovL3o4
RGk0V0ZNWm5hR1JpdVhMbkt3Q0lwS1U2MgpBZS9ldldGZzRlWGhKdHNBUGo1ZUJoWW1KaWE0QWU1
T05tQTJMeThmdzZ4NWl4bUVoSVhoY3JnWUxGKysvVUNSWTJSa1pDZ3NxMlpnCjQrUm1RSmREVVFq
a2ZQdnhrNEhsM1llUGNIRWVIbDZHMUp4Q2hxYmFjb2JDaWpvR0xSMTl1QncyeHR0M0h4a1lGNnpj
QkkvR0QrL2YKTXdnSUNqSmN2WFNCb2FldG5tSCtpbzNZOU1IRnJseTl4c0M0WnVzK3VBRndHU0la
TjI3Y1lHRGk1dUprd0lkRGZWd1libDY3REZiego4L3RYRkxVY0hCd01URHc4UEF6NGNPL2tHUXpW
cGZrTTE2OWVac2hLamtWUnk4dkx3OERDeHNxSzE4SFdObllNazJmTVk4akxUR1lBCkpWMWs5U3dz
TEF3c3pDek1lQTE0OC9vMVEzVjVJVmd6U0NHeWVsYWdYc2FMTisrUkhZalhyOThBdW9BWmtSTHhP
Z1dMSkJNVEl3UEwKb2xuVHNFZ1JMd1FBaW05ZDBBVDNsVTRBQUFBQVNVVk9SSzVDWUlJQUFBQUFp
VkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQkFBQUFBUQpDQVlBQUFBZjgvOWhBQUFCNTJsRFExQkpR
ME1nVUhKdlptbHNaUUFBZUFHdGtqOW9GRkVReHIvZEl6bUxJMzlFVXhuY0lrU0xpeXk1Cklra2pG
KzlBeEJSSGNrR1Rick8zM2kzdWJqYTdtOU1EQlV0cmF5MUVpMENTWG1KQ3JoRkVzUkRGUDZSTktW
Z0VSTkc0ZnU4OXdoRkkKU09QQTIvZWJiMmZtN2N4YklHTmFZZWpwQVB3Z2lhYXZYakZ1enMwYjJj
L0lvWityRzMyV0hZZVRsY29VUTQ2eEg1K2dpVmNmUmtTdApWVy91NWV6TXE2MlA3Vzl2ZjIxK3Yz
MU0wb0hjRS9GQVFNdFRPRk5YWEJTOG9MZ3ErRTRTSm94cENMWWJWbzE4ajV5UHF0TWw4Z3E1CnA2
NzRoZUFGeGE4Rk4rMjZ5UDFDTm9PYUd3RDZLZko0ellsdGNwSHMxbUxiSjYrUngzMS9rZlgxWGZK
Rk80eVltOG1SaDhSY3VOT2EKNTRITEZ4anpzS1BOUjhENk5uRDJUMGNiTHZOeng0Q05weDF0YjBE
T1NodDRFOThxak1weVdvNjVYVC9UZEc4UXlHNEErMUdhL242UwpwdnZQZWZaWG9MMWtMMGROR2N0
R3RIZkFTYjdxV1ZVSDNyTUhtcnlqbzFuTlJVYVp3TE0yY0lQTzlRZkE0eUl3VE9mMERsQ2hWaTFD
Ckx4UU9scG9oWmFDMzVBYU9ieGxsTnc0OXF5VzEvL3J3dldYZWx6VFJTYzRKWm1lNG41T3JCQmNC
SFBpd1lLQk1MMFlJajE1TDNhZkkKNis0REhnM3FmelAzdDdNVFFqaGtpWE5YenFtMEdMWWl0OTVJ
akVuK3pVN2V1QmJZbC9MR3FHbU80UjhWb29xMDhxQ3k4QUFBQUFsdwpTRmx6QUFBTEV3QUFDeE1C
QUpxY0dBQUFBUU5KUkVGVU9CR2xrajhPUlVBUXhvZU12NFZHVkE2ZzBvbGVwMUpLSEVQckhrcTMw
TGlDCkN5aWNRS3RDd250bWk0M243UmJQK3hMSitPWTNrNTJkVmVxNmZzRWZRbFZWSVFpQ3h5M1Fk
VjN3UE85NUE5dTJ3VFJOYVlOaEdDREwKTWhqSFVjZ2d1VFNHU0gzZlExRVVMQ1ZqOERnTzJQZjlx
NzdyT3FpcWl2c2locEs0TEF1czY4ckJNQXhack9zNmJOdkcvU3ZEelROQQpUZE9BNEx1dXhaUVRN
ZVNqNHpoZ0dBYkZIN3FmUU1SUUFSSm9XUll2bnFhSnhXM2JRbG1XTU04eis3OHlIRDREcEJYU0t1
L0s4eHg4CjM0YzBUVmxLeEZBQzZXaXkrWklrQVZwbEhNZFNobzFBRnlsVEZFVkFxNVlKRlVVQitw
NUsvQVIvNklaTjAveUFmNk52ajZsQ0tqODIKTlZRQUFBQUFTVVZPUks1Q1lJSUFBQUFBaVZCT1J3
MEtHZ29BQUFBTlNVaEVVZ0FBQUJBQUFBQVFDQVlBQUFBZjgvOWhBQUFCNTJsRApRMUJKUTBNZ1VI
SnZabWxzWlFBQWVBR3RrajlvRkZFUXhyL2RJem1MSTM5RVV4bmNJa1NMaXl5NUlra2pGKzlBeEJS
SGNrR1Rick8zCjNpM3ViamE3bTlNREJVdHJheTFFaTBDU1htSkNyaEZFc1JERlA2Uk5LVmdFUk5H
NGZ1ODl3aEZJU09QQTIvZWJiMmZtN2N4YklHTmEKWWVqcEFQd2dpYWF2WGpGdXpzMGIyYy9Jb1or
ckczMldIWWVUbGNvVVE0NnhINStnaVZjZlJrU3RWVy91NWV6TXE2MlA3Vzl2ZjIxKwp2MzFNMG9I
Y0UvRkFRTXRUT0ZOWFhCUzhvTGdxK0U0U0pveHBDTFliVm8xOGo1eVBxdE1sOGdxNXA2NzRoZUFG
eGE4Rk4rMjZ5UDFDCk5vT2FHd0Q2S2ZKNHpZbHRjcEhzMW1MYko2K1J4MzEva2ZYMVhmSkZPNHlZ
bThtUmg4UmN1Tk9hNTRITEZ4anpzS1BOUjhENk5uRDIKVDBjYkx2Tnp4NENOcHgxdGIwRE9TaHQ0
RTk4cWpNcHlXbzY1WFQvVGRHOFF5RzRBKzFHYS9uNlNwdnZQZWZaWG9MMWtMMGROR2N0Rwp0SGZB
U2I3cVdWVUgzck1IbXJ5am8xbk5SVWFad0xNMmNJUE85UWZBNHlJd1RPZjBEbENoVmkxQ0x4UU9s
cG9oWmFDMzVBYU9ieGxsCk53NDlxeVcxLy9yd3ZXWGVselRSU2M0SlptZTRuNU9yQkJjQkhQaXdZ
S0JNTDBZSWoxNUwzYWZJNis0REhnM3FmelAzdDdNVFFqaGsKaVhOWHpxbTBHTFlpdDk1SWpFbit6
VTdldUJiWWwvTEdxR21PNFI4Vm9vcTA4cUN5OEFBQUFBbHdTRmx6QUFBTEV3QUFDeE1CQUpxYwpH
QUFBQVRSSlJFRlVPQkZqaklqTCtjL0l5TWhBTG1EaDVlVmswTkhSSmxjL0E0dVVsRGlEcEtRNCtR
Ync4ZkV5OFBKdzR6VGczdDNiCkRObnB5UXpiOXh6Q3FvWUZKTXJFeElSVjh2S2xDd3dsQlRsZ09W
eHFXTDc5K01udzVkc1BEQU5PSEQzTU1IVlNEMXdjbXhxUUpNdmIKZHg4WjNuMzRDRmVZR2hNTVpy
T3dzakw4K2YwYkxvNnNCaTRJWkxDQUZMSUNNVHBBMWd5U3c2WUdKTTRpd00vSHdNUERBMktqQUpD
RwozMGd1d0tZR3BJR0ZnNE9EZ1p1TEU2NTUrLzdqWVBhUlEvc1pKblMxTVh6OStnWE1SMVlEVnd4
a0FCTVNEMVlYZUhqNUF0T0hGRU5PCldnSllQUzRYTUxHd3NEQ3dBWjJMRFp1YVdUQXNYcmtlYkFB
MmVaQVlDeXNMTXdNekVPTUNtdG82REdldTNNWWx6Y0RDeGdhS0Jkd0cKNE5RSmxXQmhZbUprWUdi
R25oSUphUWJKczV3NXNwOEJoTWtGQUxsYlJOcHNObHZBQUFBQUFFbEZUa1N1UW1DQ0FBQUFpVkJP
UncwSwpHZ29BQUFBTlNVaEVVZ0FBQUJBQUFBQVFDQVlBQUFBZjgvOWhBQUFCNTJsRFExQkpRME1n
VUhKdlptbHNaUUFBZUFHdGtqOW9GRkVRCnhyL2RJem1MSTM5RVV4bmNJa1NMaXl5NUlra2pGKzlB
eEJSSGNrR1Rick8zM2kzdWJqYTdtOU1EQlV0cmF5MUVpMENTWG1KQ3JoRkUKc1JERlA2Uk5LVmdF
Uk5HNGZ1ODl3aEZJU09QQTIvZWJiMmZtN2N4YklHTmFZZWpwQVB3Z2lhYXZYakZ1enMwYjJjL0lv
WityRzMyVwpIWWVUbGNvVVE0NnhINStnaVZjZlJrU3RWVy91NWV6TXE2MlA3Vzl2ZjIxK3YzMU0w
b0hjRS9GQVFNdFRPRk5YWEJTOG9MZ3ErRTRTCkpveHBDTFliVm8xOGo1eVBxdE1sOGdxNXA2NzRo
ZUFGeGE4Rk4rMjZ5UDFDTm9PYUd3RDZLZko0ellsdGNwSHMxbUxiSjYrUngzMS8Ka2ZYMVhmSkZP
NHlZbThtUmg4UmN1Tk9hNTRITEZ4anpzS1BOUjhENk5uRDJUMGNiTHZOeng0Q05weDF0YjBET1No
dDRFOThxak1weQpXbzY1WFQvVGRHOFF5RzRBKzFHYS9uNlNwdnZQZWZaWG9MMWtMMGROR2N0R3RI
ZkFTYjdxV1ZVSDNyTUhtcnlqbzFuTlJVYVp3TE0yCmNJUE85UWZBNHlJd1RPZjBEbENoVmkxQ0x4
UU9scG9oWmFDMzVBYU9ieGxsTnc0OXF5VzEvL3J3dldYZWx6VFJTYzRKWm1lNG41T3IKQkJjQkhQ
aXdZS0JNTDBZSWoxNUwzYWZJNis0REhnM3FmelAzdDdNVFFqaGtpWE5YenFtMEdMWWl0OTVJakVu
K3pVN2V1QmJZbC9MRwpxR21PNFI4Vm9vcTA4cUN5OEFBQUFBbHdTRmx6QUFBTEV3QUFDeE1CQUpx
Y0dBQUFBTXhKUkVGVU9CR2xVcmtSaERBTWxEMHlYMERDClVBTWQwS2xER3FJT0Z3RUIrRVljMHVo
MGwrQlQ0dFh1U3BZZkYyUE04RWVnOXg2bWFTcHVnY013d0RpTzVRMjZyb09tYWNvYlVDVWQKdzhZ
OHp4ZTFyaXRvYkgxNG5pY2N4MkY1eWJXbU1SdHcyemJZOTUxeldYTitQdzVwR292aEJoaENnS3Fx
TEEvT3VZc2pUV05yeEw3dgpvYTVyeTB1dU5ZM1pnTFJEMjdhY3k4cTdrcWF4R0c2QTlJVDBsRGE0
aURTTnJROXByRjkza0ZJU3I4WkMzdUE2QWwxa2FTQ054eU9XCk5QbitnZys3NExJc0Qwcys3Uzhs
OWpDOWR4bVZZUUFBQUFCSlJVNUVya0pnZ2dBQUFJbFFUa2NOQ2hvS0FBQUFEVWxJUkZJQUFBQVEK
QUFBQUVBZ0dBQUFBSC9QL1lRQUFBZWRwUTBOUVNVTkRJRkJ5YjJacGJHVUFBSGdCclpJL2FCUlJF
TWEvM1NNNWl5Ti9SRk1aM0NKRQppNHNzdVNKSkl4ZnZRTVFVUjNKQmsyNnp0OTR0N200MnU1dlRB
d1ZMYTJzdFJJdEFrbDVpUXE0UlJMRVF4VCtrVFNsWUJFVFJ1SDd2ClBjSVJTRWpqd052M20yOW41
dTNNV3lCaldtSG82UUQ4SUltbXIxNHhiczdORzluUHlLR2ZxeHQ5bGgySGs1WEtGRU9Pc1IrZm9J
bFgKSDBaRXJWVnY3dVhzekt1dGorMXZiMzl0ZnI5OVROS0IzQlB4UUVETFV6aFRWMXdVdktDNEt2
aE9FaWFNYVFpMkcxYU5mSStjajZyVApKZklLdWFldStJWGdCY1d2QlRmdHVzajlRamFEbWhzQStp
bnllTTJKYlhLUjdOWmkyeWV2a2NkOWY1SDE5VjN5UlR1TW1KdkprWWZFClhMalRtdWVCeXhjWTg3
Q2p6VWZBK2padzlrOUhHeTd6YzhlQWphY2RiVzlBemtvYmVCUGZLb3pLY2xxT3VWMC8wM1J2RU1o
dUFQdFIKbXY1K2txYjd6M24yVjZDOVpDOUhUUm5MUnJSM3dFbSs2bGxWQjk2ekI1cThvNk5aelVW
R21jQ3pObkNEenZVSHdPTWlNRXpuOUE1UQpvVll0UWk4VURwYWFJV1dndCtRR2ptOFpaVGNPUGFz
bHRmLzY4TDFsM3BjMDBVbk9DV1pudUorVHF3UVhBUno0c0dDZ1RDOUdDSTllClM5Mm55T3Z1QXg0
TjZuOHo5N2V6RTBJNFpJbHpWODZwdEJpMklyZmVTSXhKL3MxTzNyZ1cySmZ5eHFocGp1RWZGYUtL
dFBLZ3N2QUEKQUFBSmNFaFpjd0FBQ3hNQUFBc1RBUUNhbkJnQUFBRGtTVVJCVkRnUnBWSXhEb0pB
RU53N0ZnSnlvQjJCSnlCZnNiSFJ5aGY0SlZzVApHeG9mWUdQcFZ5U1NHSUlOZUNzeHVTd1c1SnpM
SnNQczdHVEpuZGp1OXIwUUFteUJVUlJBVVN4dDV3R3pMSUUwVGV3RDRqaUNTSVgyCkFUUXBwUndG
Yk5hcmozWXF6MkJ5YnNTbWZjR3phYmtPdlQ0RTZwbWNHL0ZlMVZBOWFxNUQxdzBCMURNNU55SzZM
cmk2T0w0M1N6MlQKY3g4dTVqRW9wYml1aDRhM1FUMlRjeVA2dmcvaExPQTZDSDBJMURNNU4rcUhw
SDV2SUkwTkRNNER4T0ZZOWtXZWMzM3lON3JvZ0tQTApGdWg1ZEF0L0JFajlmNDR6Zm9sVE44TGI5
UUpVdG5nRC9YTTA0UU9ZZHNzQUFBQUFTVVZPUks1Q1lJSUFBQUNKVUU1SERRb2FDZ0FBCkFBMUpT
RVJTQUFBQUVBQUFBQkFJQmdBQUFCL3ovMkVBQUFIbmFVTkRVRWxEUXlCUWNtOW1hV3hsQUFCNEFh
MlNQMmdVVVJER3Y5MGoKT1lzamYwUlRHZHdpUkl1TExMa2lTU01YNzBERUZFZHlRWk51czdmZUxl
NXVOcnViMHdNRlMydHJMVVNMUUpKZVlrS3VFVVN4RU1VLwpwRTBwV0FSRTBiaCs3ejNDRVVoSTQ4
RGI5NXR2WitidHpGc2dZMXBoNk9rQS9DQ0pwcTllTVc3T3pSdlp6OGlobjZzYmZaWWRoNU9WCnlo
UkRqckVmbjZDSlZ4OUdSSzFWYis3bDdNeXJyWS90YjI5L2JYNi9mVXpTZ2R3VDhVQkF5MU00VTFk
Y0ZMeWd1Q3I0VGhJbWpHa0kKdGh0V2pYeVBuSStxMHlYeUNybW5ydmlGNEFYRnJ3VTM3YnJJL1VJ
Mmc1b2JBUG9wOG5qTmlXMXlrZXpXWXRzbnI1SEhmWCtSOWZWZAo4a1U3akppYnlaR0h4Rnk0MDVy
bmdjc1hHUE93bzgxSHdQbzJjUFpQUnhzdTgzUEhnSTJuSFcxdlFNNUtHM2dUM3lxTXluSmFqcmxk
ClA5TjBieERJYmdEN1VacitmcEttKzg5NTlsZWd2V1F2UjAwWnkwYTBkOEJKdnVwWlZRZmVzd2Vh
dktPaldjMUZScG5Bc3pad2c4NzEKQjhEaklqQk01L1FPVUtGV0xVSXZGQTZXbWlGbG9MZmtCbzV2
R1dVM0RqMnJKYlgvK3ZDOVpkNlhOTkZKemdsbVo3aWZrNnNFRndFYworTEJnb0V3dlJnaVBYa3Zk
cDhqcjdnTWVEZXAvTS9lM3N4TkNPR1NKYzFmT3FiUVl0aUszM2tpTVNmN05UdDY0RnRpWDhzYW9h
WTdoCkh4V2lpclR5b0xMd0FBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFBL0VsRVFWUTRF
YVZTUzZxRU1CQXNRL3d1M0toSEVNL2cKVlVRUWIrQUJ4STFuRUhIaEFieUhkM0RoMXJWYmRhSHZU
UWZlZ3hrek1HUUtPcUdUcXU2a3U3V21hWDd3QlRoakRGRVVLWWZnbnVjaApDQUwxQUk3andMSXM1
UUNNbFBTTlZ3dkRFR1ZaWWwxWEVmejEvdCsvcmd2bmVkNk1WTU13SUUxVGpPT0liZHR1SE5LeGZk
OXhITWZOClJOckhNczh6OGp6SG8xdFlsdVhHNDdxdXd6Q01QLzdidlcxYlROT0VydXVlT054MVha
aW0rWFFvYzRxaVFKSWtOeTZuN0xadHl6VGkKakdha3JtdkVjU3g5S2FjV1VpdGx5TElNVlZYQjkz
M1JKUm1IMC9ObE5hRENmZ0x4QlNxa0tyaW1hU0JUaFpoRVZUSHBlTi8zMytqeApDNThNYXlXWG8y
UVVBQUFBQUVsRlRrU3VRbUNDQUFBQWlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCQUFBQUFRQ0FZ
QUFBQWY4LzloCkFBQUI1MmxEUTFCSlEwTWdVSEp2Wm1sc1pRQUFlQUd0a2o5b0ZGRVF4ci9kSXpt
TEkzOUVVeG5jSWtTTGl5eTVJa2tqRis5QXhCUkgKY2tHVGJyTzMzaTN1YmphN205TURCVXRyYXkx
RWkwQ1NYbUpDcmhGRXNSREZQNlJOS1ZnRVJORzRmdTg5d2hGSVNPUEEyL2ViYjJmbQo3Y3hiSUdO
YVllanBBUHdnaWFhdlhqRnV6czBiMmMvSW9aK3JHMzJXSFllVGxjb1VRNDZ4SDUrZ2lWY2ZSa1N0
VlcvdTVlek1xNjJQCjdXOXZmMjErdjMxTTBvSGNFL0ZBUU10VE9GTlhYQlM4b0xncStFNFNKb3hw
Q0xZYlZvMThqNXlQcXRNbDhncTVwNjc0aGVBRnhhOEYKTisyNnlQMUNOb09hR3dENktmSjR6WWx0
Y3BIczFtTGJKNitSeDMxL2tmWDFYZkpGTzR5WW04bVJoOFJjdU5PYTU0SExGeGp6c0tQTgpSOEQ2
Tm5EMlQwY2JMdk56eDRDTnB4MXRiMERPU2h0NEU5OHFqTXB5V282NVhUL1RkRzhReUc0QSsxR2Ev
bjZTcHZ2UGVmWlhvTDFrCkwwZE5HY3RHdEhmQVNiN3FXVlVIM3JNSG1yeWpvMW5OUlVhWndMTTJj
SVBPOVFmQTR5SXdUT2YwRGxDaFZpMUNMeFFPbHBvaFphQzMKNUFhT2J4bGxOdzQ5cXlXMS8vcnd2
V1hlbHpUUlNjNEpabWU0bjVPckJCY0JIUGl3WUtCTUwwWUlqMTVMM2FmSTYrNERIZzNxZnpQMwp0
N01UUWpoa2lYTlh6cW0wR0xZaXQ5NUlqRW4relU3ZXVCYllsL0xHcUdtTzRSOFZvb3EwOHFDeThB
QUFBQWx3U0ZsekFBQUxFd0FBCkN4TUJBSnFjR0FBQUFTTkpSRUZVT0JGampJakwrYy9JeU1oQUxt
RGg1ZVZrME5IUkpsYy9BNHVVbERpRHBLUTQrUWJ3OGZFeThQSncKazIwQUUwZ25FeE1UQnZaMHNX
T1kxTi9OOFBIakJ3WlFFR0ZUQXhKaitmYmpKOE9YYnord3VtRDcxczBNVnk1ZlpraE16V1RRMHRG
agpZR1ZseFZESHJHOWkxY0RMeDhmd0hXZ1FNdDY4YmhWWThTZWdDdzd1MzhQdzgvZHZCbjVCWVli
L0RJd282cGhZZ0thQ1RFYkg2RmFCCkRGdzhid2FHT2hZQmZqNEdIaDRlZFBVWS9MQ29lQVpYVHg4
TXRTd2NIQndNM0Z5Y0dCcGdBdklLU2d4cDJma011dnFHV01NQW1KQjQKTUV5RmFmWUpDR1pJemN4
bEVCQVFCTWNDVEJ5WlpnRUNCallzb1h2eXdnMWtkVGpaTEt3c3pBek1RRXd1WUdGakE4VUFCUVl3
TVRFeQpNRE9ERXlSWmptQTVjMlEvQXdpVEN3RHAza25RbHJlV0tRQUFBQUJKUlU1RXJrSmdnZ0FB
QUFDSlVFNUhEUW9hQ2dBQUFBMUpTRVJTCkFBQUFFQUFBQUJBSUJnQUFBQi96LzJFQUFBSG5hVU5E
VUVsRFF5QlFjbTltYVd4bEFBQjRBYTJTUDJnVVVSREd2OTBqT1lzamYwUlQKR2R3aVJJdUxMTGtp
U1NNWDcwREVGRWR5UVpOdXM3ZmVMZTV1TnJ1YjB3TUZTMnRyTFVTTFFKSmVZa0t1RVVTeEVNVS9w
RTBwV0FSRQowYmgrN3ozQ0VVaEk0OERiOTV0dlorYnR6RnNnWTFwaDZPa0EvQ0NKcHE5ZU1XN096
UnZaejhpaG42c2JmWllkaDVPVnloUkRqckVmCm42Q0pWeDlHUksxVmIrN2w3TXlyclkvdGIyOS9i
WDYvZlV6U2dkd1Q4VUJBeTFNNFUxZGNGTHlndUNyNFRoSW1qR2tJdGh0V2pYeVAKbkkrcTB5WHlD
cm1ucnZpRjRBWEZyd1UzN2JySS9VSTJnNW9iQVBvcDhuak5pVzF5a2V6V1l0c25yNUhIZlgrUjlm
VmQ4a1U3akppYgp5WkdIeEZ5NDA1cm5nY3NYR1BPd284MUh3UG8yY1BaUFJ4c3U4M1BIZ0kybkhX
MXZRTTVLRzNnVDN5cU15bkphanJsZFA5TjBieERJCmJnRDdVWnIrZnBLbSs4OTU5bGVndldRdlIw
MFp5MGEwZDhCSnZ1cFpWUWZlc3dlYXZLT2pXYzFGUnBuQXN6WndnODcxQjhEaklqQk0KNS9RT1VL
RldMVUl2RkE2V21pRmxvTGZrQm81dkdXVTNEajJySmJYLyt2QzlaZDZYTk5GSnpnbG1aN2lmazZz
RUZ3RWMrTEJnb0V3dgpSZ2lQWGt2ZHA4anI3Z01lRGVwL00vZTNzeE5DT0dTSmMxZk9xYlFZdGlL
MzNraU1TZjdOVHQ2NEZ0aVg4c2FvYVk3aEh4V2lpclR5Cm9MTHdBQUFBQ1hCSVdYTUFBQXNUQUFB
TEV3RUFtcHdZQUFBQTlFbEVRVlE0RWFWU3U2MkVNQkFjSS9PVklLTUVBbW9ncEFnUzZxQVQKMmlD
akNSSkVCajJRa1VBQTd6SG9RSHU2ZTRuZlNvdkhPek5yczdLcTYvb0gvd2lkcHFteGZab202RGlP
alJ2TTh3enRlWjV4Z3lBSQpZSjNCejBjT3c0QWtTYTQ2MXh0TExVL1crNzUvM0tEdmV4UkZjZFVs
THpISjR6aWd0MjE3YThDVHk3SjhhcEtYbUlKMVhhRWR4M25FCkJOTE12ZVFsSm1mYk5pelhkU0d6
YVJweVQ1QzdRK3FJb3lpQzVmcytaR1paaHJadGI4L0YzUnVwSSthTjFMSXNYMTlpMTNYSTh4d24K
anpBTXJ4N0VNc1p4aERvSDg3V0JGUDZGcjVmSVFaZ0dmMEVycFV6OW9OY3lkcitNcXFvcTR4bXd4
eTlDWUV3cHRKaysvd0FBQUFCSgpSVTVFcmtKZ2dnQUFBSWxRVGtjTkNob0tBQUFBRFVsSVJGSUFB
QUFRQUFBQUVBZ0dBQUFBSC9QL1lRQUFBZWRwUTBOUVNVTkRJRkJ5CmIyWnBiR1VBQUhnQnJaSS9h
QlJSRU1hLzNTTTVpeU4vUkZNWjNDSkVpNHNzdVNKSkl4ZnZRTVFVUjNKQmsyNnp0OTR0N200MnU1
dlQKQXdWTGEyc3RSSXRBa2w1aVFxNFJSTEVReFQra1RTbFlCRVRSdUg3dlBjSVJTRWpqd052M20y
OW41dTNNV3lCaldtSG82UUQ4SUltbQpyMTR4YnM3Tkc5blB5S0dmcXh0OWxoMkhrNVhLRkVPT3NS
K2ZvSWxYSDBaRXJWVnY3dVhzekt1dGorMXZiMzl0ZnI5OVROS0IzQlB4ClFFRExVemhUVjF3VXZL
QzRLdmhPRWlhTWFRaTJHMWFOZkkrY2o2clRKZklLdWFldStJWGdCY1d2QlRmdHVzajlRamFEbWhz
QStpbnkKZU0ySmJYS1I3TlppMnlldmtjZDlmNUgxOVYzeVJUdU1tSnZKa1lmRVhMalRtdWVCeXhj
WTg3Q2p6VWZBK2padzlrOUhHeTd6YzhlQQpqYWNkYlc5QXprb2JlQlBmS296S2NscU91VjAvMDNS
dkVNaHVBUHRSbXY1K2txYjd6M24yVjZDOVpDOUhUUm5MUnJSM3dFbSs2bGxWCkI5NnpCNXE4bzZO
WnpVVkdtY0N6Tm5DRHp2VUh3T01pTUV6bjlBNVFvVll0UWk4VURwYWFJV1dndCtRR2ptOFpaVGNP
UGFzbHRmLzYKOEwxbDNwYzAwVW5PQ1dabnVKK1Rxd1FYQVJ6NHNHQ2dUQzlHQ0k5ZVM5Mm55T3Z1
QXg0TjZuOHo5N2V6RTBJNFpJbHpWODZwdEJpMgpJcmZlU0l4Si9zMU8zcmdXMkpmeXhxaHBqdUVm
RmFLS3RQS2dzdkFBQUFBSmNFaFpjd0FBQ3hNQUFBc1RBUUNhbkJnQUFBRU9TVVJCClZEZ1JZNHlN
ei8zUFFDYjQvLzgvQTR1RmhUR1oyaGtZcmx5NXlzQWlLU2xPdGdIdjNyMWhZT0hsNFNiYkFENCtY
Z1ltSUFBUkdQam0KaldzTW5pNTJZSEVRRFdNanF3WFp6UExsMnc4TUY0QTBWNVhrZ2NXUjVaSFpJ
TWx2UDM0eXNMejc4QkhGZ0x1M2J6SjBORmJCeFpEbAprZGtnQlcvZmZXUmdZV1ZsaFNzR01aQTFn
L2pJOHNoc2tCeFFNd01URHc4UEF6SnU2NTBDa29NRGtCd01JS3NEc1FYNCtSaVl1TGs0CkdaQ3hv
WkV4UTkrVTJUQTlZRGtZQjFrZGlNM0J3WUhwQXBESnB1WVdETlBuTFFIcncrY0NYbDRlQnNhVEYy
NlFuWlN2WEx2R3dNTE0Kd2d4ekljazBLMUF2TUNESk40Q05qUlhvQW1ZbWttMkdhV0JpWW1SZ1dU
UnJHb3hQRmcwQUhkVkVGdCt4NkkwQUFBQUFTVVZPUks1QwpZSUlBaVZCT1J3MEtHZ29BQUFBTlNV
aEVVZ0FBQUFnQUFBQVFDQUlBQUFDazZLa3FBQUFORm1sRFExQkpRME1nVUhKdlptbHNaUUFBCmVK
eVYxM2swbFAzN0IvRHJuaG1HTVdiR1lHeGhaTitWblpBbHNpVDdYcEtkaWJFa2xiSWtoY2dTaWph
S05xRkVvcUo2eUpJa1daSWwKS25zcFJMTE03dzk1NnZlYzgzeS81L3Y1NjdxdmMrNzcvdHozT2Ev
MzUxd0FSTHdIblU1REFjQytvUEJRR3hNRHFwT3pDeFhiQXdnZwpRQUUxb0hoNGh0SDFyYXdzNEYv
WGZCY2dBQUFkOGg1ME9pMnhWcjg0UnhCM2t2U1pHTUQzUktMazMrOERBQUJDcUpPekN3QWlCd0Jj
CnZtdjFWZ0RnMnJ0VzJ3RUExNEZ3ZWpnQTRnY0FYSjUrSGw0QVNCUUF5SVhhMlJnQ0lOY0JnT0M3
VmxjQkFHSHZXdDBJQUlRSVQ5OXcKQUtRSGdKa2M1T1VmQklDZEFtRFc5ZklPOHdRZ3lBR0FsMWVZ
NXo0QVFob0FLT3piRit3RlFLZ0RBQ2xQZW1nNEFHRU1BTVNjbkYybwphMXQyVFFKUTRRTmdNZi9k
TzVBRlVKRVBJTFhqZDAvMFBnREZBNkFnNVhkdjFnWVFBRUFvYldFK3lwc0JBQURCR3dBd0RUQVlz
eElBCjJBeUFsWFFHWTZtQXdWaTVBb0R1QTZpamVlNFBqZmoxdnhDa0ZlQy9YYTk5ODYrRlJnQlFB
SWdZVW9RNmhJN0NSREVkWlk3QnhyRWMKWXpWaXJjZWRZRHVKVDJRL1JhZ2srWEdrazlNNU03ak9j
R2RSc25oeWVPdjVnd1h5TnVRSlhoQnFwTzRYS2RoNFJiUk4vTEJFa1dTNwo5RkdaVzdKZDhuRUt0
eFY3TjUzWWZGZDVVUFdVV3FYNmtHYXFWclgyaUU2bTdtTzlDZjFzZzZlR1g3YmxHamVZekpoZU1t
czJuOTlSCllQbHk1eXVyVjlidE5zdDJOKzA3SGJvY3U1MTZYREN1ZDl6NmR2WHZIbkFmM1BOK0w5
N3pnZGRINzA4K0k3NmpmbVArNDRIY3RDZjcKUGdkOUNaNm1mdzM1RmpvVE5oYyt0Lzk3eFB5Qmhj
Z2ZCeGNQL1R5OEhMVjhaQ1ZhT3FZekRqbUdpa2NmeHlRd25XQStpVTFrU1dKTgp4cDFpUzhHbnNw
OG1wQkhUU1JrY21lUXpuRmxjMmR3NWxMTTg1M2h6K2ZMNHp3dGMySEJSOEpMUVplRjhhb0hJbFkx
WFJRdkZpc1N2ClNWNlh2Q0YxVS9xV3pLM0pZdHB0dVJMNVVzVXlwVHViN200cTMzeFBwVUsxVXEx
eS9uNUVsZm9EaldxdEd1MkhXeDV0ZWF6emVMVTIKdWs3dnlkYW4rczhNL2pLc3g5VEhOMng3YnR4
bzBtVGFiTnFDYTBsK1lkNXE4ZEt5amRCMitwVlZ1L1ZybXc1eVI4WWIyMDY3THZ0dQpTbmRPaitO
YnAxNlhkL3p2OHZyYyt0MEdkZzBLRFY1Njd6NjBaMWhrdU9ERDNvK2VuN3hHeEVlS1JuM0dmTWY5
SnFRbmJrNEdUQVYrCnBuMlIvMUl5SGZRMStCdDladFBNM2RuUXViRHY0Zk9xODVVTEVUOGlGdy8r
UExpa3RWU3pmSGdsYWxWbjlUR0RBWUNJb2dpb3IrZ1cKekMybVRPWW9yQytMSGFzaFRvVk5FaS9K
emt2Z0lmS1NlRG00eVJLY1Vsd2EzQmFVM1R4aHZLbDhwZnd0QXVPQ25FSnF3cjdVc3lMUApSUkV4
SGZFUWlUdVMwOUpTTWpUWkdubTBncjVpdXRMUVptbmxCSlZ1TlJsMXVrYTlGbzkyNUpZWHVoUzk0
SzFQRGNRTUR4dTFHd3VaClJHNS9aTHBvdnNuQ2UwZVdaYnNWd2RyRUp0SzIwTzZOQTg1eHExT0k4
d1dYQnRmcFhjSzdkN29mMmxQZ1ViOTMzSXZiVzgvSHlmZW8KMzJYL3VvRCt3TVY5bkVHeXdVWjB2
NUNvMExTd2d2Q0svWTBSN3c1TVJNNGZRaC9taUtJZWtUdXFHcjAxeGp4Mlo1enJzVDN4M3NkcApD
ZUVuUWsvR0pNWWtIVXRPUEpXUmtweWFlL3BjV2s1NmVzYjV6SXd6MlZsbnM2L25YRHRiY3U1Njdx
Mjgwdk1QTHp5OFdIL3B4ZVgyCi9JNkNqaXNkVjk4VmZpd2F2VFo4L2RPTjZadmZiazBYZjdrOVV6
SmRPbGsyZFdmMDdsRDU4TDNlaXZiS3B2dDFWZmNmbEZhZnI4bDQKR1BObzMyUFhXdk82TFU5a25w
S2ZMajU3LzFkei9iMkd6T2VoamJaTmFzMEN6WXlXM2hmM1dwTmV1clNKdG8yOEttOC84bnBiQjZH
agovODNsem9BdTVhNlY3dGFlekxlN2VxVjdaOTlWOThYMW13OXdEUXdNM25nZk5xUTlqQmx1L25E
bTQrNVBrcCttUnFwSFk4Zk14cm5ICit5ZXVUdEttVktkV1B6ZDl5WmgyL1NyMmRlcGIrVXpVck1r
Y2VhN25lK0Y4OElMbUQvU1A1NHZwUDEyWFJKYytMMWV1eEt5YU1pZ00KQmdBY1F5SlJoOURhNkdy
TUVTWTlwbHJtV094eEZtT1dldFlFM0FtMkpMd1p2b1U5aFpCQ1RDWHRKTFZ4cEpFek9ETzVNcm50
dU45UQpzbm15ZWMveTVmTG5DZVJ0T0Mvb0p0Z3ZkRW40TWpWZkpIOWp2dWdWc2F2aWhSSkZrdGVr
cmt2ZmtQR1htWkM5S1Zjc2YxdWhSTEZVCnFXelRuYzEzbGN0VjdxbFdxbFdxVjJwRWF2elFyTmFx
MXE3WjhsRG5rZTVSM1ZXOTJxMTErazhNbmhvK000cmZodGxXYjl4ZzhueDcKbzJtVFdiTjVzZ1hl
NHNXT1ZzdVhPOXVzMHF4SjF1MDJyMjA3N043WWR6bGtPMUljdTUxNm5OKzY5THJtdVFtNDllM3Ez
ejNvL243UAplNC84dlNKN2h6MC9lSDMwL3VSVDVDdXhsaUFCRTRHM2FISzBxZitYSXJOL3AwalZR
WTJEaTRkK0hsNktXajZ5Y25RMW1oRUxjYWkvCmt3UjdFcHZJa3RpVVpKYk1kZ3FmZ2s5bFAwMU1J
NlZ6L0owbGxCeWVzN3kvc21URG4xbFNNSHpGODZwb29WaVJ4RFdKOVRRcGxyc3QKWDZMd1I1WW9W
NmhVcXQ1WHIxSi9vRkd0V2FQOVVQdlJsc2U2dGJwLzVNaTJCdVBueG8wbVRkdWJUVnZNWDBTODNO
aG0rY3FxM2VxMQpkY2VSVHBrdWgyN0hucmhleFhjdWZRa0R5b09KUTZyRHB6NTZqV2lQcG8vN1R3
WjhwazBIZjB1YWM1ay92Wmk4WXNOZ0FLeWRmUUFBCnpHb0EyYklBRHJrQXRnVUFDYklBa3U0QWxP
c0FWdXdBZHBxQVloSUNsQTRkRURPZDlmTURFQ0NCSUNpQUFUaERHS1JCR2Z4QXFJZzUKRW9sY1Ix
NGlveWdpeWdRVmkzcUVXa2Jyb0dQUkRlaGxqQWpHR1ZPRStjNWt6SFNjcVpScG10bUVPWjk1Qk11
TmRjTStZc0d5YUxMRQpzMHl5YXJFR3M5Ymg1SEV4dUNvMkFsc3MyMXM4Rno0SVA4YStqZjBZK3hE
QmcvQ1VpQ2I2RUtkSTFxUnMwZ3BISXNjTVdZdGN5S25PCldjZzV6ZVhPdGNEdHoxMUprYVU4NS9I
aHhmTGU1QlBuTzhBM3gzOUJ3RVJnZHNObFFUSEJLQ0ZFcUVJNGdDcEM3UlU1czNIanhoaFIKb21p
YldMcTR2UVMveExEa0xTbERxUnZTQmpJY01rT3k1WEluNU4wVWxCWHhpcU5LZjIwcTJCeW43S1Zp
b2lxbnhxbTJyRDZpa2FOSgowS3pUS3RQTzMzSkc1NlJ1dE42QnJTSDZOQU4vUXo4anYyMkJ4a0Vt
NGRzUG04YWJuVGJQczdpeG84cXlhV2VmMVRjYnJLMlFuWWE5CnJRUGRNZFdweFBtVnk2d2I3eTdk
M1Q3dWFYdHFQTVk4ZWJ4TXZBLzZGUHZ6QmxnRkp0SHFnMURCK3ZUWWtHZGh6T0htK3pNaXhRNEcK
SDNvWWhUdmljclE0bWhGckY0ODY3cFp3L3lSbllraFNlMHBXNm1LYWUzcERwdUtaM0p5d3N4OXli
ZlBxTDVaY0ZzKy9jSVduaUhRdAo5UWJoNXVuYk9hV0NaVmZ2eWxjWVZiWlhlVHo0OW9qbmNYR2R3
YlB3ZW1KRGNhTlpTMUtyL012MlZ4RWREWjMwYm9HZXhqNkovcDdCCnBDRzlqOFVqWG1QQzQ3MmZI
YVlwWDd0bmN1ZmNGNllXSzVhaUdid01CZ0NnQUFjOElBMTY0QVQ3SVF1cVlBREJJa3FJTzVLSzFD
S3oKS0JtVU95b1g5UVpOUk85QW4wSzNZdGd4T3pGWm1IZE1WQ1ovcGpLbUg4eUd6S2VaMzJMRnNm
dXh6MWpJTEY0c1ZheHNyRzZzSlRnTQpiamZ1SGh1T3paT3RGcytOcCtOYjJXWFlVOWluQ0JhRVVp
STdNWmpZUmRwS3VzcEI0SWpnZUVjMkp0L2hwSEptY0s1eWhYRjk1ZzdnCm5xRFFLRE04NFR6enZJ
ZjRFTDVUL1B6OE53VTBCUm8yT0d3WUY0d1I0aE9xRkxZV25xQW1pRWlJTkc0TUV1VVJmU3ptS1k0
WGZ5SVIKSkNrcytWb3FVZHBBZWtXbVJqWktUa2R1UWI1VzRhU2luWktJMHZTbTJzM3B5Z0VxUnFw
Q3FrdHFuZW9QTkM1b3htcjVhanR1MGRGUgoxQlhSSTIvRjZLUDFad3krR1U0YlRXNGJNWjQxbWR6
KzNReGx6bVhCczJPVHBlN09uVlkyMW9FMkIyM3o3TzdhdjNCNDU3anN6T1dpCjZHcnBGckxyM081
NjkxRVAxcjFLbm41ZXVkNjFQbC85cFAyOUEzSUNPL2NKQk5rSDU5SEhRcVhDSXNLYklnUVBoRVUy
SHhJOW5CbzEKY2RRNXVqRldMYTR3bm53ODlRVDVaSFlTYjNKZWltcnF5elR2OUorWktWbnEyWi9P
WHN3Tk9HOS9VZm95VS83VWxhZUZGZGZPM1VpNAo1WG5icmRUNGprYTVTb1hDZmZrSFVqWGlqNlJx
bFo3b1BkdGViLzJjMWhUU2t0NTZ1ZTFoKzBBSG8wdTRSNmZYcXk5NW9QcjkxQWUrClR3YWpNZVBY
Sno5KzRmL3FNM054Ym1SQmFqRm9xWElWWVRBQWdCbElJQWdHNEF4cFVBYXYxKzJ2dTE5VGp5Rmlu
REhmbVl5WmNuOTUKWDhXNnNRaXp4TE5Nc3RxeDF1SGtjZWZaQ0d5eGJBdjRJUHdZdXhmQmcvQ0I2
RU9jSW9XUlZqZ1N5UlJ5SWFjNlp6T1hPOWNDZDlyZgpwaTM1NW41NXRoSkNoQ3ArV2JaZWsvekxj
WVMwd1orR2Z3dis1ZmUxWnAxVzJXKzd2K1grdTl2L3BOWjN5Sjgzd09xZmFpTjYvK2syCjd1YWZj
azl0L2kwM20zbmQ3Z1hOZGIxWE05ZjlGcFBYQlpkWHJSdXVPYmFtK0VudnV1T204WmFrRjMrMVpy
OXNmeFh4V3JDam9aUGUKVmRhZDBOUFlHOUVuMFI4NFlEU1lOS1EzZk9MRDNvL0ZuK1pIT3NhRXh3
TW5UQ2VscHJDZkhiNFVUU2Q4OWYyMmZVWm1sbTMyeTl5cgo3K1h6MlF0MkMxTS80aGNOZmtyK0hG
bUtYdVpkdnJqQ3NSSy9zckI2bFpITVlBQ3N6VXNBQUlBekRLWUZoMUl0REkzK3kzRDN2NjU5CnRQ
M3I3MEFBQU84ZFpHOExBR1FBMkFDR0VBdzBDSVpRb0lJRkdJSVJ3TnFzQmdEQVRBSTQ3d2dBVVB2
amNNdy9ueHZ1SFJrT0FHQVkKVEQ4WTZ1L3JGMDdWcDlOcDNuSlUweUJQQlRucVppVWxEZmcvR0NU
K093UUF2Sm9BQUFDclNVUkJWQmlWYmM4eENvUkFEQVhRWk1oawpabEtJSUlKWTJGcFllMVJMeitB
cHZJb2dpQWpUYUtIWUxMTUxtM1NmUjhnUERzTUEycEF4cG0xYkJZcWlLTXRTQVJIeDNpc0FBTVlZ
CkJaN251ZTg3NVczYnBtbGFsb1hPODd5dUs4RTh6ekhHdXE3Sldzdk1DWTdqYUpvbWhFQlpsam5u
RW5SZEYyUE04NXlZT1lTUW9PLzcKZFYzM2ZTZnZ2WWdrRUpHcXFnQ0FuSE8vTjc1MW1kbGFxd0Fp
SXVJL0tEOS9Oc1p4Vk9FRnV3UXNLT3BpOU80QUFBQUFTVVZPUks1QwpZSUlBQUlsUVRrY05DaG9L
QUFBQURVbElSRklBQUFBSUFBQUFFQWdDQUFBQXBPaXBLZ0FBRFJacFEwTlFTVU5ESUZCeWIyWnBi
R1VBCkFIaWNsZGQ1TkpUOSt3Znc2NTRaaGpGbXhtQnNZV1RmbFoyUUpiSWsrMTZTbllteEpKV3lK
SVhJRW9vMmlqYWhSS0tpZXNpU0pGbVMKSlNwN0tVU3l6TzhQZWVyM25QTjh2K2Y3K2V1NnIzUHUr
LzdjOXptdjkrZGNBRVM4QjUxT1F3SEF2cUR3VUJzVEE2cVRzd3NWMndNSQpJRUFCTmFCNGVJYlI5
YTJzTE9CZjEzd1hJQUFBSGZJZWREb3RzVmEvT0VjUWQ1TDBtUmpBOTBTaTVOL3ZBd0FBUXFpVHN3
c0FJZ2NBClhMNXI5VllBNE5xN1Z0c0JBTmVCY0hvNEFPSUhBRnllZmg1ZUFFZ1VBTWlGMnRrWUFp
RFhBWURndTFaWEFRQmg3MXJkQ0FDRUNFL2YKY0FDa0I0Q1pIT1RsSHdTQW5RSmcxdlh5RHZNRUlN
Z0JnSmRYbU9jK0FFSWFBQ2pzMnhmc0JVQ29Bd0FwVDNwb09BQmhEQURFbkp4ZApxR3RiZGswQ1VP
RURZREgvM1R1UUJWQ1JEeUMxNDNkUDlENEF4UU9nSU9WM2I5WUdFQUJBS0cxaFBzcWJBUUFBd1Jz
QU1BMHdHTE1TCkFOZ01nSlYwQm1PcGdNRll1UUtBN2dPb28zbnVENDM0OWI4UXBCWGd2MTJ2ZmZP
dmhVWUFVQUNJR0ZLRU9vU093a1F4SFdXT3djYXgKSEdNMVlxM0huV0E3aVU5a1AwV29KUGx4cEpQ
VE9UTzR6bkJuVWJKNGNuanIrWU1GOGpia0NWNFFhcVR1RnluWWVFVzBUZnl3UkpGawp1L1JSbVZ1
eVhmSnhDcmNWZXplZDJIeFhlVkQxbEZxbCtwQm1xbGExOW9oT3B1NWp2UW45YklPbmhsKzI1Um8z
bU15WVhqSnJOcC9mClVXRDVjdWNycTFmVzdUYkxkamZ0T3gyNkhMdWRlbHd3cm5mYytuYjE3eDV3
SDl6emZpL2U4NEhYUis5UFBpTytvMzVqL3VPQjNMUW4KK3o0SGZRbWVwbjhOK1JZNkV6WVhQcmYv
ZThUOGdZWElId2NYRC8wOHZCeTFmR1FsV2pxbU13NDVob3BISDhja01KMWdQb2xOWkVsaQpUY2Fk
WWt2QnA3S2ZKcVFSMDBrWkhKbmtNNXhaWE5uY09aU3pQT2Q0Yy9ueStNOExYTmh3VWZDUzBHWGhm
R3FCeUpXTlYwVUx4WXJFCnIwbGVsN3doZFZQNmxzeXR5V0xhYmJrUytWTEZNcVU3bSs1dUt0OThU
NlZDdFZLdGN2NStSSlg2QTQxcXJScnRoMXNlYlhtczgzaTEKTnJwTzc4bldwL3JQRFA0eXJNZlV4
emRzZTI3Y2FOSmsybXphZ210SmZtSGVhdkhTc28zUWR2cVZWYnYxYTVzT2NrZkdHOXRPdXk3Nwpi
a3AzVG8valc2ZGVsM2Y4Ny9MNjNQcmRCbllOQ2cxZWV1OCt0R2RZWkxqZ3c5NlBucCs4UnNSSGlr
Wjl4bnpIL1Nha0oyNU9Ca3dGCmZxWjlrZjlTTWgzME5mZ2JmV2JUek4zWjBMbXc3K0h6cXZPVkN4
RS9JaGNQL2p5NHBMVlVzM3g0SldwVlovVXhnd0dBaUtJSXFLL28KRnN3dHBrem1LS3d2aXgycklV
NkZUUkl2eWM1TDRDSHlrbmc1dU1rU25GSmNHdHdXbE4wOFlieXBmS1g4TFFMamdweENhc0srMUxN
aQp6MFVSTVIzeEVJazdrdFBTVWpJMDJScDV0SUsrWXJyUzBHWnA1UVNWYmpVWmRicEd2UmFQZHVT
V0Y3b1V2ZUN0VHczRURBOGJ0UnNMCm1VUnVmMlM2YUw3SndudEhsbVc3RmNIYXhDYlN0dER1alFQ
T2NhdFRpUE1GbHdiWDZWM0N1M2U2SDlwVDRGRy9kOXlMMjF2UHg4bjMKcU45bC83cUEvc0RGZlp4
QnNzRkdkTCtRcU5DMHNJTHdpdjJORWU4T1RFVE9IMElmNW9paUhwRTdxaHE5TmNZOGRtZWM2N0U5
OGQ3SAphUW5oSjBKUHhpVEdKQjFMVGp5VmtaS2NtbnY2WEZwT2VuckcrY3lNTTlsWlo3T3Y1MXc3
VzNMdWV1NnR2Tkx6RHk4OHZGaC82Y1hsCjl2eU9nbzRySFZmZkZYNHNHcjAyZlAzVGplbWIzMjVO
RjMrNVBWTXlYVHBaTm5WbjlPNVErZkM5M29yMnlxYjdkVlgzSDVSV242L0oKZUJqemFOOWoxMXJ6
dWkxUFpKNlNueTQrZS85WGMvMjloc3pub1kyMlRXck5BczJNbHQ0WDkxcVRYcnEwaWJhTnZDcHZQ
L0o2V3dlaApvLy9ONWM2QUx1V3VsZTdXbnN5M3UzcWxlMmZmVmZmRjlac1BjQTBNRE41NEh6YWtQ
WXdaYnY1dzV1UHVUNUtmcGthcVIyUEh6TWE1Cngvc25yazdTcGxTblZqODNmY21ZZHYwcTluWHFX
L2xNMUt6SkhIbXU1M3ZoZlBDQzVnLzBqK2VMNlQ5ZGwwU1hQaTlYcnNTc21qSW8KREFZQUhFTWlV
WWZRMnVocXpCRW1QYVphNWxqc2NSWmpsbnJXQk53SnRpUzhHYjZGUFlXUVFrd2w3U1MxY2FTUk16
Z3p1VEs1N2JqZgpVTEo1c25uUDh1WHk1d25rYlRndjZDYllMM1JKK0RJMVh5Ui9ZNzdvRmJHcjRv
VVNSWkxYcEs1TDM1RHhsNW1RdlNsWExIOWJvVVN4ClZLbHMwNTNOZDVYTFZlNnBWcXBWcWxkcVJH
cjgwS3pXcXRhdTJmSlE1NUh1VWQxVnZkcXRkZnBQREo0YVBqT0szNGJaVm0vY1lQSjgKZTZOcGsx
bXplYklGM3VMRmpsYkxsenZick5Lc1NkYnROcTl0Tyt6ZTJIYzVaRHRTSEx1ZGVwemZ1dlM2NXJr
SnVQWHQ2dDg5NlA1Kwp6M3VQL0wwaWU0YzlQM2g5OVA3a1UrUXJzWllnQVJPQnQyaHl0S24vbHlL
emY2ZEkxVUdOZzR1SGZoNWVpbG8rc25KME5ab1JDM0dvCnY1TUVleEtieUpMWWxHU1d6SFlLbjRK
UFpUOU5UQ09sYy95ZEpaUWNuck84djdKa3c1OVpVakI4eGZPcWFLRllrY1ExaWZVMEtaYTcKTFYr
aThFZVdLRmVvVktyZVY2OVNmNkJSclZtai9WRDcwWmJIdXJXNmYrVEl0Z2JqNThhTkprM2JtMDFi
ekY5RXZOelladm5LcXQzcQp0WFhIa1U2WkxvZHV4NTY0WHNWM0xuMEpBOHFEaVVPcXc2YytlbzFv
ajZhUCswOEdmS1pOQjM5TG1uT1pQNzJZdkdMRFlBQ3NuWDBBCkFNeHFBTm15QUE2NUFMWUZBQW15
QUpMdUFKVHJBRmJzQUhhYWdHSVNBcFFPSFJBem5mWHpBeEFnZ1NBb2dBRTRReGlrUVJuOFFLaUkK
T1JLSlhFZGVJcU1vSXNvRUZZdDZoRnBHNjZCajBRM29aWXdJeGhsVGhQbk9aTXgwbkttVWFaclpo
RG1mZVFUTGpYWERQbUxCc21peQp4TE5Nc21xeEJyUFc0ZVJ4TWJncU5nSmJMTnRiUEJjK0NEL0d2
bzM5R1BzUXdZUHdsSWdtK2hDblNOYWtiTklLUnlMSERGbUxYTWlwCnpsbklPYzNsenJYQTdjOWRT
WkdsUE9meDRjWHkzdVFUNXp2QU44ZC9RY0JFWUhiRFpVRXh3U2doUktoQ09JQXFRdTBWT2JOeDQ4
WVkKVWFKb20xaTZ1TDBFdjhTdzVDMHBRNmtiMGdZeUhESkRzdVZ5SitUZEZKUVY4WXFqU245dEt0
Z2NwK3lsWXFJcXA4YXB0cXcrb3BHagpTZENzMHlyVHp0OXlSdWVrYnJUZWdhMGgralFEZjBNL0k3
OXRnY1pCSnVIYkQ1dkdtNTAyejdPNHNhUEtzbWxubjlVM0c2eXRrSjJHCnZhMEQzVEhWcWNUNWxj
dXNHKzh1M2QwKzdtbDdhanpHUEhtOFRMd1AraFQ3OHdaWUJTYlI2b05Rd2ZyMDJKQm5ZY3poNXZz
eklzVU8KQmg5NkdJVTc0bkswT0pvUmF4ZVBPdTZXY1A4a1oySklVbnRLVnVwaW1udDZRNmJpbWR5
Y3NMTWZjbTN6NmkrV1hCYlB2M0NGcDRoMApMZlVHNGVicDJ6bWxnbVZYNzhwWEdGVzJWM2s4K1Bh
STUzRnhuY0d6OEhwaVEzR2pXVXRTcS96TDlsY1JIUTJkOUc2Qm5zWStpZjZlCndhUWh2WS9GSTE1
and1TzlueDJtS1YrN1ozTG4zQmVtRml1V29obThEQVlBb0FBSFBDQU5ldUFFK3lFTHFtQUF3U0pL
aUR1U2l0UWkKc3lnWmxEc3FGL1VHVFVUdlFKOUN0MkxZTVRzeFdaaDNURlFtZjZZeXBoL01oc3lu
bWQ5aXhiSDdzYzlZeUN4ZUxGV3NiS3h1ckNVNApERzQzN2g0YmpzMlRyUmJQamFmalc5bGwyRlBZ
cHdnV2hGSWlPekdZMkVYYVNycktRZUNJNEhoSE5pYmY0YVJ5Wm5DdWNvVnhmZVlPCjRKNmcwQ2d6
UE9FODg3eUgrQkMrVS96OC9EY0ZOQVVhTmpoc0dCZU1FZUlUcWhTMkZwNmdKb2hJaURSdURCTGxF
WDBzNWltT0YzOGkKRVNRcExQbGFLbEhhUUhwRnBrWTJTazVIYmtHK1Z1R2tvcDJTaU5MMHB0ck42
Y29CS2thcVFxcExhcDNxRHpRdWFNWnErV283YnRIUgpVZFFWMFNOdnhlaWo5V2NNdmhsT0cwMXVH
ekdlTlpuYy90ME1aYzVsd2JOams2WHV6cDFXTnRhQk5nZHQ4K3p1MnI5d2VPZTQ3TXpsCm91aHE2
UmF5Njl6dWV2ZFJEOWE5U3A1K1hybmV0VDVmL2FUOXZRTnlBanYzQ1FUWkIrZlJ4MEtsd2lMQ215
SUVENFJGTmg4U1Bad2EKTlhIVU9ib3hWaTJ1TUo1OFBQVUUrV1IyRW05eVhvcHE2c3MwNy9TZm1T
bFo2dG1memw3TURUaHZmMUg2TWxQKzFKV25oUlhYenQxSQp1T1Y1MjYzVStJNUd1VXFGd24zNUIx
STE0bytrYXBXZTZEM2JYbS85bk5ZVTBwTGVlcm50WWZ0QUI2Tkx1RWVuMTZzdmVhRDYvZFFICnZr
OEdvekhqMXljL2Z1SC82ak56Y1c1a1FXb3hhS2x5RldFd0FJQVpTQ0FJQnVBTWFWQUdyOWZ0cjd0
ZlU0OGhZcHd4MzVtTW1YSi8KZVYvRnVyRUlzOFN6VExMYXNkYmg1SEhuMlFoc3NXd0wrQ0Q4R0xz
WHdZUHdnZWhEbkNLRmtWWTRFc2tVY2lHbk9tY3psenZYQW5mYQozNll0K2VaK2ViWVNRb1FxZmxt
MlhwUDh5M0dFdE1HZmhuOEwvdVgzdFdhZFZ0bHZ1Ny9sL3J2Yi82VFdkOGlmTjhEcW4yb2pldi9w
Ck51N21uM0pQYmY0dE41dDUzZTRGelhXOVZ6UFgvUmFUMXdXWFY2MGJyam0ycHZoSjc3cmpwdkdX
cEJkL3RXYS9iSDhWOFZxd282R1QKM2xYV25kRFQyQnZSSjlFZk9HQTBtRFNrTjN6aXc5NlB4Wi9t
UnpyR2hNY0RKMHducGFhd254MitGRTBuZlBYOXRuMUdacFp0OXN2YwpxKy9sODlrTGRndFRQK0lY
RFg1Sy9oeFppbDdtWGI2NHdyRVN2N0t3ZXBXUnpHQUFyTTFMQUFDQU13eW1CWWRTTFF5Ti9zdHc5
Nyt1CmZiVDk2KzlBQUFEdkhXUnZDd0JrQU5nQWhoQU1OQWlHVUtDQ0JSaUNFY0RhckFZQXdFd0NP
TzhJQUZENzQzRE1QNThiN2gwWkRnQmcKR0V3L0dPcnY2eGRPMWFmVGFkNXlWTk1nVHdVNTZtWWxK
UTM0UHhnay9qc0VBTHlhQUFBQXBrbEVRVlFZbFczUHNRMkVNQXdGVUR0SwpuTVJGR29RWWdRNnhZ
b1pJbVNtWUFtVUpXaW9vb1FCUkhNcWRUdjZkOVdSOUcxTktJRVVycGZxK0Y2QnBtclp0QldCbTU1
d0FBS0NVCkV1Qys3K3U2NnJ6dit6Uk55N0xvNHpqTzg2eFFTb2t4SXFJMnhoQlJoWFZkRVJFQWRB
akJXbHRoSE1lM2c0aTg5eFdHWVpqbmVkczIKN1p4ajVnck0zSFVkQUdocjdXL0g5MXdpTXNZSWdJ
aWZNLzRpL1B4dTVKeEZlQUNSMFNhcDRXR2JKd0FBQUFCSlJVNUVya0pnZ2dBQQpBQUFBQUFDSlVF
NUhEUW9hQ2dBQUFBMUpTRVJTQUFBQUFRQUFBQkFJQWdBQUFGajlndUFBQUEwV2FVTkRVRWxEUXlC
UWNtOW1hV3hsCkFBQjRuSlhYZVRTVS9mc0g4T3VlR1lZeFpzWmdiR0ZrMzVXZGtDV3lKUHRla3Ay
SnNTU1ZzaVNGeUJLS05vbzJvVVNpb25ySWtpUloKa2lVcWV5bEVzc3p2RDNucTk1enpmTC9uKy9u
cnVxOXo3dnYrM1BjNXIvZm5YQUJFdkFlZFRrTUJ3TDZnOEZBYkV3T3FrN01MRmRzRApDQ0JBQVRX
Z2VIaUcwZld0ckN6Z1g5ZDhGeUFBQUIzeUhuUTZMYkZXdnpoSEVIZVM5SmtZd1BkRW91VGY3d01B
QUVLb2s3TUxBQ0lICkFGeSthL1ZXQU9EYXUxYmJBUURYZ1hCNk9BRGlCd0Jjbm40ZVhnQklGQURJ
aGRyWkdBSWcxd0dBNEx0V1Z3RUFZZTlhM1FnQWhBaFAKMzNBQXBBZUFtUnprNVI4RWdKMENZTmIx
OGc3ekJDRElBWUNYVjVqblBnQkNHZ0FvN05zWDdBVkFxQU1BS1U5NmFEZ0FZUXdBeEp5YwpYYWhy
VzNaTkFsRGhBMkF4LzkwN2tBVlFrUThndGVOM1QvUStBTVVEb0NEbGQyL1dCaEFBUUNodFlUN0tt
d0VBQU1FYkFEQU5NQml6CkVnRFlESUNWZEFaanFZREJXTGtDZ080RHFLTjU3ZytOK1BXL0VLUVY0
TDlkcjMzenI0VkdBRkFBaUJoU2hEcUVqc0pFTVIxbGpzSEcKc1J4ak5XS3R4NTFnTzRsUFpEOUZx
Q1Q1Y2FTVDB6a3p1TTV3WjFHeWVISjQ2L21EQmZJMjVBbGVFR3FrN2hjcDJIaEZ0RTM4c0VTUgpa
THYwVVpsYnNsM3ljUXEzRlhzM25kaDhWM2xROVpSYXBmcVFacXBXdGZhSVRxYnVZNzBKL1d5RHA0
WmZ0dVVhTjVqTW1GNHlhemFmCjMxRmcrWExuSzZ0WDF1MDJ5M1kzN1RzZHVoeTduWHBjTUs1MzNQ
cDI5ZThlY0IvYzgzNHYzdk9CMTBmdlR6NGp2cU4rWS83amdkeTAKSi9zK0IzMEpucVovRGZrV09o
TTJGejYzLzN2RS9JR0Z5QjhIRncvOVBMd2N0WHhrSlZvNnBqTU9PWWFLUngvSEpEQ2RZRDZKVFdS
SgpZazNHbldKTHdhZXlueWFrRWROSkdSeVo1RE9jV1Z6WjNEbVVzenpuZUhQNTh2alBDMXpZY0ZI
d2t0Qmw0WHhxZ2NpVmpWZEZDOFdLCnhLOUpYcGU4SVhWVCtwYk1yY2xpMm0yNUV2bFN4VEtsTzV2
dWJpcmZmRStsUXJWU3JYTCtma1NWK2dPTmFxMGE3WWRiSG0xNXJQTjQKdFRhNlR1L0oxcWY2end6
K01xekgxTWMzYkh0dTNHalNaTnBzMm9KclNYNWgzbXJ4MHJLTjBIYjZsVlc3OVd1YkRuSkh4aHZi
VHJzdQorMjVLZDA2UDQxdW5YcGQzL08veSt0ejYzUVoyRFFvTlhucnZQclJuV0dTNDRNUGVqNTZm
dkViRVI0cEdmY1o4eC8wbXBDZHVUZ1pNCkJYNm1mWkgvVWpJZDlEWDRHMzFtMDh6ZDJkQzVzTy9o
ODZyemxRc1JQeUlYRC80OHVLUzFWTE44ZUNWcVZXZjFNWU1CZ0lpaUNLaXYKNkJiTUxhWk01aWlz
TDRzZHF5Rk9oVTBTTDhuT1MrQWg4cEo0T2JqSkVweFNYQnJjRnBUZFBHRzhxWHlsL0MwQzQ0S2NR
bXJDdnRTegpJczlGRVRFZDhSQ0pPNUxUMGxJeU5Oa2FlYlNDdm1LNjB0Qm1hZVVFbFc0MUdYVzZS
cjBXajNia2xoZTZGTDNnclU4TnhBd1BHN1ViCkM1bEVibjlrdW1pK3ljSjdSNVpsdXhYQjJzUW0w
cmJRN28wRHpuR3JVNGp6QlpjRzErbGR3cnQzdWgvYVUrQlJ2M2ZjaTl0Yno4ZkoKOTZqZlpmKzZn
UDdBeFgyY1FiTEJSblMva0tqUXRMQ0M4SXI5alJIdkRreEV6aDlDSCthSW9oNlJPNm9hdlRYR1BI
Wm5uT3V4UGZIZQp4MmtKNFNkQ1Q4WWt4aVFkUzA0OGxaR1NuSnA3K2x4YVRucDZ4dm5NakRQWldX
ZXpyK2RjTzF0eTducnVyYnpTOHc4dlBMeFlmK25GCjVmYjhqb0tPS3gxWDN4VitMQnE5Tm56OTA0
M3BtOTl1VFJkL3VUMVRNbDA2V1RaMVovVHVVUG53dmQ2SzlzcW0rM1ZWOXgrVVZwK3YKeVhnWTgy
amZZOWRhODdvdFQyU2VrcDh1UG52L1YzUDl2WWJNNTZHTnRrMXF6UUxOakpiZUYvZGFrMTY2dElt
Mmpid3Fiei95ZWxzSApvYVAvemVYT2dDN2xycFh1MXA3TXQ3dDZwWHRuMzFYM3hmV2JEM0FOREF6
ZWVCODJwRDJNR1c3K2NPYmo3aytTbjZaR3FrZGp4OHpHCnVjZjdKNjVPMHFaVXAxWS9OMzNKbUhi
OUt2WjE2bHY1VE5Tc3lSeDVydWQ3NFh6d2d1WVA5SS9uaStrL1haZEVsejR2VjY3RXJKb3kKS0F3
R0FCeERJbEdIME5yb2Fzd1JKajJtV3VaWTdIRVdZNVo2MWdUY0NiWWt2Qm0raFQyRmtFSk1KZTBr
dFhHa2tUTTRNN2t5dWUyNAozMUN5ZWJKNXovTGw4dWNKNUcwNEwrZ20yQzkwU2ZneU5WOGtmMk8r
NkJXeHErS0ZFa1dTMTZTdVM5K1E4WmVaa0wwcFZ5eC9XNkZFCnNWU3BiTk9kelhlVnkxWHVxVmFx
VmFwWGFrUnEvTkNzMXFyV3J0bnlVT2VSN2xIZFZiM2FyWFg2VHd5ZUdqNHppdCtHMlZadjNHRHkK
Zkh1amFaTlpzM215QmQ3aXhZNVd5NWM3MjZ6U3JFblc3VGF2YlR2czN0aDNPV1E3VWh5N25YcWMz
N3IwdXVhNUNiajE3ZXJmUGVqKwpmczk3ai95OUludUhQVDk0ZmZUKzVGUGtLN0dXSUFFVGdiZG9j
clNwLzVjaXMzK25TTlZCallPTGgzNGVYb3BhUHJKeWREV2FFUXR4CnFMK1RCSHNTbThpUzJKUmts
c3gyQ3ArQ1QyVS9UVXdqcFhQOG5TV1VISjZ6dkwreVpNT2ZXVkl3Zk1YenFtaWhXSkhFTlluMU5D
bVcKdXkxZm92QkhsaWhYcUZTcTNsZXZVbitnVWExWm8vMVErOUdXeDdxMXVuL2t5TFlHNCtmR2pT
Wk4yNXROVzh4ZlJMemMyR2I1eXFyZAo2clYxeDVGT21TNkhic2VldUY3RmR5NTlDUVBLZzRsRHFz
T25QbnFOYUkrbWovdFBCbnltVFFkL1M1cHptVCs5bUx4aXcyQUFySjE5CkFBRE1hZ0Rac2dBT3VR
QzJCUUFKc2dDUzdnQ1U2d0JXN0FCMm1vQmlFZ0tVRGgwUU01MzE4d01RSUlFZ0tJQUJPRU1ZcEVF
Wi9FQ28KaURrU2lWeEhYaUtqS0NMS0JCV0xlb1JhUnV1Z1k5RU42R1dNQ01ZWlU0VDV6bVRNZEp5
cGxHbWEyWVE1bjNrRXk0MTF3ejVpd2JKbwpzc1N6VExKcXNRYXoxdUhrY1RHNEtqWUNXeXpiV3p3
WFBnZy94cjZOL1JqN0VNR0Q4SlNJSnZvUXAwaldwR3pTQ2tjaXh3eFppMXpJCnFjNVp5RG5ONWM2
MXdPM1BYVW1ScFR6bjhlSEY4dDdrRStjN3dEZkhmMEhBUkdCMncyVkJNY0VvSVVTb1FqaUFLa0x0
RlRtemNlUEcKR0ZHaWFKdFl1cmk5QkwvRXNPUXRLVU9wRzlJR01od3lRN0xsY2lmazNSU1VGZkdL
bzBwL2JTcllIS2ZzcFdLaUtxZkdxYmFzUHFLUgpvMG5Rck5NcTA4N2Zja2JucEc2MDNvR3RJZm8w
QTM5RFB5Ty9iWUhHUVNiaDJ3K2J4cHVkTnMrenVMR2p5ckpwWjUvVk54dXNyWkNkCmhyMnRBOTB4
MWFuRStaWExyQnZ2THQzZFB1NXBlMm84eGp4NXZFeThEL29VKy9NR1dBVW0wZXFEVU1INjlOaVFa
MkhNNGViN015TEYKRGdZZmVoaUZPK0p5dERpYUVXc1hqenJ1bG5EL0pHZGlTRko3U2xicVlwcDdl
a09tNHBuY25MQ3pIM0p0OCtvdmxsd1d6Nzl3aGFlSQpkQzMxQnVIbTZkczVwWUpsVisvS1Z4aFZ0
bGQ1UFBqMmlPZHhjWjNCcy9CNllrTnhvMWxMVXF2OHkvWlhFUjBObmZSdWdaN0dQb24rCm5zR2tJ
YjJQeFNOZVk4TGp2WjhkcGlsZnUyZHk1OXdYcGhZcmxxSVp2QXdHQUtBQUJ6d2dEWHJnQlBzaEM2
cGdBTUVpU29nN2tvclUKSXJNb0daUTdLaGYxQmsxRTcwQ2ZRcmRpMkRFN01WbVlkMHhVSm4rbU1x
WWZ6SWJNcDVuZllzV3grN0hQV01nc1hpeFZyR3lzYnF3bApPQXh1Tis0ZUc0N05rNjBXejQybjQx
dlpaZGhUMktjSUZvUlNJanN4bU5oRjJrcTZ5a0hnaU9CNFJ6WW0zK0drY21ad3JuS0ZjWDNtCkR1
Q2VvTkFvTXp6aFBQTzhoL2dRdmxQOC9QdzNCVFFGR2pZNGJCZ1hqQkhpRTZvVXRoYWVvQ2FJU0ln
MGJnd1M1UkY5TE9ZcGpoZC8KSWhFa0tTejVXaXBSMmtCNlJhWkdOa3BPUjI1QnZsYmhwS0tka29q
UzlLYmF6ZW5LQVNwR3FrS3FTMnFkNmc4MExtakdhdmxxTzI3UgowVkhVRmRFamI4WG9vL1ZuREw0
WlRodE5iaHN4bmpXWjNQN2RER1hPWmNHelk1T2w3czZkVmpiV2dUWUhiZlBzN3RxL2NIam51T3pN
CjVhTG9hdWtXc3V2YzducjNVUS9XdlVxZWZsNjUzclUrWC8yay9iMERjZ0k3OXdrRTJRZm4wY2RD
cGNJaXdwc2lCQStFUlRZZkVqMmMKR2pWeDFEbTZNVll0cmpDZWZEejFCUGxrZGhKdmNsNkthdXJM
Tk8vMG41a3BXZXJabjg1ZXpBMDRiMzlSK2pKVC90U1ZwNFVWMTg3ZApTTGpsZWR1dDFQaU9ScmxL
aGNKOStRZFNOZUtQcEdxVm51ZzkyMTV2L1p6V0ZOS1MzbnE1N1dIN1FBZWpTN2hIcDllckwzbWcr
djNVCkI3NVBCcU14NDljblAzN2gvK296YzNGdVpFRnFNV2lwY2hWaE1BQ0FHVWdnQ0FiZ0RHbFFC
cS9YN2ErN1gxT1BJV0tjTWQrWmpKbHkKZjNsZnhicXhDTFBFczB5eTJySFc0ZVJ4NTlrSWJMRnND
L2dnL0JpN0Y4R0Q4SUhvUTV3aWhaRldPQkxKRkhJaHB6cG5NNWM3MXdKMwoydCttTGZubWZubTJF
a0tFS241WnRsNlQvTXR4aExUQm40Wi9DLzdsOTdWbW5WYlpiN3UvNWY2NzIvK2sxbmZJbnpmQTZw
OXFJM3IvCjZUYnU1cDl5VDIzK0xUZWJlZDN1QmMxMXZWY3oxLzBXazljRmwxZXRHNjQ1dHFiNFNl
KzY0NmJ4bHFRWGY3Vm12MngvRmZGYXNLT2gKazk1VjFwM1EwOWdiMFNmUkh6aGdOSmcwcERkODRz
UGVqOFdmNWtjNnhvVEhBeWRNSjZXbXNKOGR2aFJOSjN6MS9iWjlSbWFXYmZiTAozS3Z2NWZQWkMz
WUxVei9pRncxK1N2NGNXWXBlNWwyK3VNS3hFcit5c0hxVmtjeGdBS3pOU3dBQWdETU1wZ1dIVWkw
TWpmN0xjUGUvCnJuMjAvZXZ2UUFBQTd4MWtid3NBWkFEWUFJWVFERFFJaGxDZ2dnVVlnaEhBMnF3
R0FNQk1Bamp2Q0FCUSsrTnd6RCtmRys0ZEdRNEEKWUJoTVB4anE3K3NYVHRXbjAybmVjbFRUSUU4
Rk9lcG1KU1VOK0Q4WUpQNDdCQUM4bWdBQUFEOUpSRUZVQ0prRndTRU9BQ0FNQk1ITApraEJNSlFJ
TmhnZnpVU3JxQ2pNNjU3RDNwdmRPYXcyZzNIdVpjN0xXWW95Qm1jbmRxYlVxTS9YZVExS0ppQS9P
RVJLV1Z1MnV0Z0FBCkFBQkpSVTVFcmtKZ2dnQUFBQUFBQUlsUVRrY05DaG9LQUFBQURVbElSRklB
QUFBQkFBQUFFQWdDQUFBQVdQMkM0QUFBRFJacFEwTlEKU1VORElGQnliMlpwYkdVQUFIaWNsZGQ1
TkpUOSt3Znc2NTRaaGpGbXhtQnNZV1RmbFoyUUpiSWsrMTZTbllteEpKV3lKSVhJRW9vMgppamFo
UktLaWVzaVNKRm1TSlNwN0tVU3l6TzhQZWVyM25QTjh2K2Y3K2V1NnIzUHUrLzdjOXptdjkrZGNB
RVM4QjUxT1F3SEF2cUR3ClVCc1RBNnFUc3dzVjJ3TUlJRUFCTmFCNGVJYlI5YTJzTE9CZjEzd1hJ
QUFBSGZJZWREb3RzVmEvT0VjUWQ1TDBtUmpBOTBTaTVOL3YKQXdBQVFxaVRzd3NBSWdjQVhMNXI5
VllBNE5xN1Z0c0JBTmVCY0hvNEFPSUhBRnllZmg1ZUFFZ1VBTWlGMnRrWUFpRFhBWURndTFaWApB
UUJoNzFyZENBQ0VDRS9mY0FDa0I0Q1pIT1RsSHdTQW5RSmcxdlh5RHZNRUlNZ0JnSmRYbU9jK0FF
SWFBQ2pzMnhmc0JVQ29Bd0FwClQzcG9PQUJoREFERW5KeGRxR3RiZGswQ1VPRURZREgvM1R1UUJW
Q1JEeUMxNDNkUDlENEF4UU9nSU9WM2I5WUdFQUJBS0cxaFBzcWIKQVFBQXdSc0FNQTB3R0xNU0FO
Z01nSlYwQm1PcGdNRll1UUtBN2dPb28zbnVENDM0OWI4UXBCWGd2MTJ2ZmZPdmhVWUFVQUNJR0ZL
RQpPb1NPd2tReEhXV093Y2F4SEdNMVlxM0huV0E3aVU5a1AwV29KUGx4cEpQVE9UTzR6bkJuVWJK
NGNuanIrWU1GOGpia0NWNFFhcVR1CkZ5blllRVcwVGZ5d1JKRmt1L1JSbVZ1eVhmSnhDcmNWZXpl
ZDJIeFhlVkQxbEZxbCtwQm1xbGExOW9oT3B1NWp2UW45YklPbmhsKzIKNVJvM21NeVlYakpyTnAv
ZlVXRDVjdWNycTFmVzdUYkxkamZ0T3gyNkhMdWRlbHd3cm5mYytuYjE3eDV3SDl6emZpL2U4NEhY
Uis5UApQaU8rbzM1ai91T0IzTFFuK3o0SGZRbWVwbjhOK1JZNkV6WVhQcmYvZThUOGdZWElId2NY
RC8wOHZCeTFmR1FsV2pxbU13NDVob3BICkg4Y2tNSjFnUG9sTlpFbGlUY2FkWWt2QnA3S2ZKcVFS
MDBrWkhKbmtNNXhaWE5uY09aU3pQT2Q0Yy9ueStNOExYTmh3VWZDUzBHWGgKZkdxQnlKV05WMFVM
eFlyRXIwbGVsN3doZFZQNmxzeXR5V0xhYmJrUytWTEZNcVU3bSs1dUt0OThUNlZDdFZLdGN2NStS
Slg2QTQxcQpyUnJ0aDFzZWJYbXM4M2kxTnJwTzc4bldwL3JQRFA0eXJNZlV4emRzZTI3Y2FOSmsy
bXphZ210SmZtSGVhdkhTc28zUWR2cVZWYnYxCmE1c09ja2ZHRzl0T3V5Nzdia3AzVG8valc2ZGVs
M2Y4Ny9MNjNQcmRCbllOQ2cxZWV1OCt0R2RZWkxqZ3c5NlBucCs4UnNSSGlrWjkKeG56SC9TYWtK
MjVPQmt3RmZxWjlrZjlTTWgzME5mZ2JmV2JUek4zWjBMbXc3K0h6cXZPVkN4RS9JaGNQL2p5NHBM
VlVzM3g0SldwVgpaL1V4Z3dHQWlLSUlxSy9vRnN3dHBrem1LS3d2aXgycklVNkZUUkl2eWM1TDRD
SHlrbmc1dU1rU25GSmNHdHdXbE4wOFlieXBmS1g4CkxRTGpncHhDYXNLKzFMTWl6MFVSTVIzeEVJ
azdrdFBTVWpJMDJScDV0SUsrWXJyUzBHWnA1UVNWYmpVWmRicEd2UmFQZHVTV0Y3b1UKdmVDdFR3
M0VEQThidFJzTG1VUnVmMlM2YUw3SndudEhsbVc3RmNIYXhDYlN0dER1alFQT2NhdFRpUE1GbHdi
WDZWM0N1M2U2SDlwVAo0RkcvZDl5TDIxdlB4OG4zcU45bC83cUEvc0RGZlp4QnNzRkdkTCtRcU5D
MHNJTHdpdjJORWU4T1RFVE9IMElmNW9paUhwRTdxaHE5Ck5jWThkbWVjNjdFOThkN0hhUW5oSjBK
UHhpVEdKQjFMVGp5VmtaS2NtbnY2WEZwT2VuckcrY3lNTTlsWlo3T3Y1MXc3VzNMdWV1NnQKdk5M
ekR5ODh2RmgvNmNYbDl2eU9nbzRySFZmZkZYNHNHcjAyZlAzVGplbWIzMjVORjMrNVBWTXlYVHBa
Tm5WbjlPNVErZkM5M29yMgp5cWI3ZFZYM0g1UlduNi9KZUJqemFOOWoxMXJ6dWkxUFpKNlNueTQr
ZS85WGMvMjloc3pub1kyMlRXck5BczJNbHQ0WDkxcVRYcnEwCmliYU52Q3B2UC9KNld3ZWhvLy9O
NWM2QUx1V3VsZTdXbnN5M3UzcWxlMmZmVmZmRjlac1BjQTBNRE41NEh6YWtQWXdaYnY1dzV1UHUK
VDVLZnBrYXFSMlBIek1hNXgvc25yazdTcGxTblZqODNmY21ZZHYwcTluWHFXL2xNMUt6SkhIbXU1
M3ZoZlBDQzVnLzBqK2VMNlQ5ZApsMFNYUGk5WHJzU3NtaklvREFZQUhFTWlVWWZRMnVocXpCRW1Q
YVphNWxqc2NSWmpsbnJXQk53SnRpUzhHYjZGUFlXUVFrd2w3U1MxCmNhU1JNemd6dVRLNTdiamZV
TEo1c25uUDh1WHk1d25rYlRndjZDYllMM1JKK0RJMVh5Ui9ZNzdvRmJHcjRvVVNSWkxYcEs1TDM1
RHgKbDVtUXZTbFhMSDlib1VTeFZLbHMwNTNOZDVYTFZlNnBWcXBWcWxkcVJHcjgwS3pXcXRhdTJm
SlE1NUh1VWQxVnZkcXRkZnBQREo0YQpQak9LMzRiWlZtL2NZUEo4ZTZOcGsxbXplYklGM3VMRmps
YkxsenZick5Lc1NkYnROcTl0Tyt6ZTJIYzVaRHRTSEx1ZGVwemZ1dlM2CjVya0p1UFh0NnQ4OTZQ
NSt6M3VQL0wwaWU0YzlQM2g5OVA3a1UrUXJzWllnQVJPQnQyaHl0S24vbHlLemY2ZEkxVUdOZzR1
SGZoNWUKaWxvK3NuSjBOWm9SQzNHb3Y1TUVleEtieUpMWWxHU1d6SFlLbjRKUFpUOU5UQ09sYy95
ZEpaUWNuck84djdKa3c1OVpVakI4eGZPcQphS0ZZa2NRMWlmVTBLWmE3TFYraThFZVdLRmVvVkty
ZVY2OVNmNkJSclZtai9WRDcwWmJIdXJXNmYrVEl0Z2JqNThhTkprM2JtMDFiCnpGOUV2TnpZWnZu
S3F0M3F0WFhIa1U2WkxvZHV4NTY0WHNWM0xuMEpBOHFEaVVPcXc2YytlbzFvajZhUCswOEdmS1pO
QjM5TG1uT1oKUDcyWXZHTERZQUNzblgwQUFNeHFBTm15QUE2NUFMWUZBQW15QUpMdUFKVHJBRmJz
QUhhYWdHSVNBcFFPSFJBem5mWHpBeEFnZ1NBbwpnQUU0UXhpa1FSbjhRS2lJT1JLSlhFZGVJcU1v
SXNvRUZZdDZoRnBHNjZCajBRM29aWXdJeGhsVGhQbk9aTXgwbkttVWFaclpoRG1mCmVRVExqWFhE
UG1MQnNtaXl4TE5Nc21xeEJyUFc0ZVJ4TWJncU5nSmJMTnRiUEJjK0NEL0d2bzM5R1BzUXdZUHds
SWdtK2hDblNOYWsKYk5JS1J5TEhERm1MWE1pcHpsbklPYzNsenJYQTdjOWRTWkdsUE9meDRjWHkz
dVFUNXp2QU44ZC9RY0JFWUhiRFpVRXh3U2doUktoQwpPSUFxUXUwVk9iTng0OFlZVWFKb20xaTZ1
TDBFdjhTdzVDMHBRNmtiMGdZeUhESkRzdVZ5SitUZEZKUVY4WXFqU245dEt0Z2NwK3lsCllxSXFw
OGFwdHF3K29wR2pTZENzMHlyVHp0OXlSdWVrYnJUZWdhMGgralFEZjBNL0k3OXRnY1pCSnVIYkQ1
dkdtNTAyejdPNHNhUEsKc21sbm45VTNHNnl0a0oyR3ZhMEQzVEhWcWNUNWxjdXNHKzh1M2QwKzdt
bDdhanpHUEhtOFRMd1AraFQ3OHdaWUJTYlI2b05Rd2ZyMAoySkJuWWN6aDV2c3pJc1VPQmg5NkdJ
VTc0bkswT0pvUmF4ZVBPdTZXY1A4a1oySklVbnRLVnVwaW1udDZRNmJpbWR5Y3NMTWZjbTN6CjZp
K1dYQmJQdjNDRnA0aDBMZlVHNGVicDJ6bWxnbVZYNzhwWEdGVzJWM2s4K1BhSTUzRnhuY0d6OEhw
aVEzR2pXVXRTcS96TDlsY1IKSFEyZDlHNkJuc1kraWY2ZXdhUWh2WS9GSTE1and1TzlueDJtS1Yr
N1ozTG4zQmVtRml1V29obThEQVlBb0FBSFBDQU5ldUFFK3lFTApxbUFBd1NKS2lEdVNpdFFpc3ln
WmxEc3FGL1VHVFVUdlFKOUN0MkxZTVRzeFdaaDNURlFtZjZZeXBoL01oc3lubWQ5aXhiSDdzYzlZ
CnlDeGVMRldzYkt4dXJDVTRERzQzN2g0YmpzMlRyUmJQamFmalc5bGwyRlBZcHdnV2hGSWlPekdZ
MkVYYVNycktRZUNJNEhoSE5pYmYKNGFSeVpuQ3Vjb1Z4ZmVZTzRKNmcwQ2d6UE9FODg3eUgrQkMr
VS96OC9EY0ZOQVVhTmpoc0dCZU1FZUlUcWhTMkZwNmdKb2hJaURSdQpEQkxsRVgwczVpbU9GMzhp
RVNRcExQbGFLbEhhUUhwRnBrWTJTazVIYmtHK1Z1R2tvcDJTaU5MMHB0ck42Y29CS2thcVFxcExh
cDNxCkR6UXVhTVpxK1dvN2J0SFJVZFFWMFNOdnhlaWo5V2NNdmhsT0cwMXVHekdlTlpuYy90ME1a
YzVsd2JOams2WHV6cDFXTnRhQk5nZHQKOCt6dTJyOXdlT2U0N016bG91aHE2UmF5Njl6dWV2ZFJE
OWE5U3A1K1hybmV0VDVmL2FUOXZRTnlBanYzQ1FUWkIrZlJ4MEtsd2lMQwpteUlFRDRSRk5oOFNQ
WndhTlhIVU9ib3hWaTJ1TUo1OFBQVUUrV1IyRW05eVhvcHE2c3MwNy9TZm1TbFo2dG1memw3TURU
aHZmMUg2Ck1sUCsxSlduaFJYWHp0MUl1T1Y1MjYzVStJNUd1VXFGd24zNUIxSTE0bytrYXBXZTZE
M2JYbS85bk5ZVTBwTGVlcm50WWZ0QUI2TkwKdUVlbjE2c3ZlYUQ2L2RRSHZrOEdvekhqMXljL2Z1
SC82ak56Y1c1a1FXb3hhS2x5RldFd0FJQVpTQ0FJQnVBTWFWQUdyOWZ0cjd0ZgpVNDhoWXB3eDM1
bU1tWEovZVYvRnVyRUlzOFN6VExMYXNkYmg1SEhuMlFoc3NXd0wrQ0Q4R0xzWHdZUHdnZWhEbkNL
RmtWWTRFc2tVCmNpR25PbWN6bHp2WEFuZmEzNll0K2VaK2ViWVNRb1FxZmxtMlhwUDh5M0dFdE1H
ZmhuOEwvdVgzdFdhZFZ0bHZ1Ny9sL3J2Yi82VFcKZDhpZk44RHFuMm9qZXYvcE51N21uM0pQYmY0
dE41dDUzZTRGelhXOVZ6UFgvUmFUMXdXWFY2MGJyam0ycHZoSjc3cmpwdkdXcEJkLwp0V2EvYkg4
VjhWcXdvNkdUM2xYV25kRFQyQnZSSjlFZk9HQTBtRFNrTjN6aXc5NlB4Wi9tUnpyR2hNY0RKMHdu
cGFhd254MitGRTBuCmZQWDl0bjFHWnBadDlzdmNxKy9sODlrTGRndFRQK0lYRFg1Sy9oeFppbDdt
WGI2NHdyRVN2N0t3ZXBXUnpHQUFyTTFMQUFDQU13eW0KQllkU0xReU4vc3R3OTcrdWZiVDk2KzlB
QUFEdkhXUnZDd0JrQU5nQWhoQU1OQWlHVUtDQ0JSaUNFY0RhckFZQXdFd0NPTzhJQUZENwo0M0RN
UDU4YjdoMFpEZ0JnR0V3L0dPcnY2eGRPMWFmVGFkNXlWTk1nVHdVNTZtWWxKUTM0UHhnay9qc0VB
THlhQUFBQU8wbEVRVlFJCm1UWEpNUTBBUVFnRXdNMWVRakNBQ0FRakRDdFEwTUZYUCswZ0l1anVO
RE9xS2ttK3FzTGRFUUFCTURQUjNSUVI3TzUvYjJZK1ZGNFcKdld1bmhjTUFBQUFBU1VWT1JLNUNZ
SUlBQUlsUVRrY05DaG9LQUFBQURVbElSRklBQUFBSUFBQUFFQWdDQUFBQXBPaXBLZ0FBRFJacApR
ME5RU1VORElGQnliMlpwYkdVQUFIaWNsZGQ1TkpUOSt3Znc2NTRaaGpGbXhtQnNZV1RmbFoyUUpi
SWsrMTZTbllteEpKV3lKSVhJCkVvbzJpamFoUktLaWVzaVNKRm1TSlNwN0tVU3l6TzhQZWVyM25Q
Tjh2K2Y3K2V1NnIzUHUrLzdjOXptdjkrZGNBRVM4QjUxT1F3SEEKdnFEd1VCc1RBNnFUc3dzVjJ3
TUlJRUFCTmFCNGVJYlI5YTJzTE9CZjEzd1hJQUFBSGZJZWREb3RzVmEvT0VjUWQ1TDBtUmpBOTBT
aQo1Ti92QXdBQVFxaVRzd3NBSWdjQVhMNXI5VllBNE5xN1Z0c0JBTmVCY0hvNEFPSUhBRnllZmg1
ZUFFZ1VBTWlGMnRrWUFpRFhBWURnCnUxWlhBUUJoNzFyZENBQ0VDRS9mY0FDa0I0Q1pIT1RsSHdT
QW5RSmcxdlh5RHZNRUlNZ0JnSmRYbU9jK0FFSWFBQ2pzMnhmc0JVQ28KQXdBcFQzcG9PQUJoREFE
RW5KeGRxR3RiZGswQ1VPRURZREgvM1R1UUJWQ1JEeUMxNDNkUDlENEF4UU9nSU9WM2I5WUdFQUJB
S0cxaApQc3FiQVFBQXdSc0FNQTB3R0xNU0FOZ01nSlYwQm1PcGdNRll1UUtBN2dPb28zbnVENDM0
OWI4UXBCWGd2MTJ2ZmZPdmhVWUFVQUNJCkdGS0VPb1NPd2tReEhXV093Y2F4SEdNMVlxM0huV0E3
aVU5a1AwV29KUGx4cEpQVE9UTzR6bkJuVWJKNGNuanIrWU1GOGpia0NWNFEKYXFUdUZ5blllRVcw
VGZ5d1JKRmt1L1JSbVZ1eVhmSnhDcmNWZXplZDJIeFhlVkQxbEZxbCtwQm1xbGExOW9oT3B1NWp2
UW45YklPbgpobCsyNVJvM21NeVlYakpyTnAvZlVXRDVjdWNycTFmVzdUYkxkamZ0T3gyNkhMdWRl
bHd3cm5mYytuYjE3eDV3SDl6emZpL2U4NEhYClIrOVBQaU8rbzM1ai91T0IzTFFuK3o0SGZRbWVw
bjhOK1JZNkV6WVhQcmYvZThUOGdZWElId2NYRC8wOHZCeTFmR1FsV2pxbU13NDUKaG9wSEg4Y2tN
SjFnUG9sTlpFbGlUY2FkWWt2QnA3S2ZKcVFSMDBrWkhKbmtNNXhaWE5uY09aU3pQT2Q0Yy9ueStN
OExYTmh3VWZDUwowR1hoZkdxQnlKV05WMFVMeFlyRXIwbGVsN3doZFZQNmxzeXR5V0xhYmJrUytW
TEZNcVU3bSs1dUt0OThUNlZDdFZLdGN2NStSSlg2CkE0MXFyUnJ0aDFzZWJYbXM4M2kxTnJwTzc4
bldwL3JQRFA0eXJNZlV4emRzZTI3Y2FOSmsybXphZ210SmZtSGVhdkhTc28zUWR2cVYKVmJ2MWE1
c09ja2ZHRzl0T3V5Nzdia3AzVG8valc2ZGVsM2Y4Ny9MNjNQcmRCbllOQ2cxZWV1OCt0R2RZWkxq
Z3c5NlBucCs4UnNSSAppa1o5eG56SC9TYWtKMjVPQmt3RmZxWjlrZjlTTWgzME5mZ2JmV2JUek4z
WjBMbXc3K0h6cXZPVkN4RS9JaGNQL2p5NHBMVlVzM3g0CkpXcFZaL1V4Z3dHQWlLSUlxSy9vRnN3
dHBrem1LS3d2aXgycklVNkZUUkl2eWM1TDRDSHlrbmc1dU1rU25GSmNHdHdXbE4wOFlieXAKZktY
OExRTGpncHhDYXNLKzFMTWl6MFVSTVIzeEVJazdrdFBTVWpJMDJScDV0SUsrWXJyUzBHWnA1UVNW
YmpVWmRicEd2UmFQZHVTVwpGN29VdmVDdFR3M0VEQThidFJzTG1VUnVmMlM2YUw3SndudEhsbVc3
RmNIYXhDYlN0dER1alFQT2NhdFRpUE1GbHdiWDZWM0N1M2U2Ckg5cFQ0RkcvZDl5TDIxdlB4OG4z
cU45bC83cUEvc0RGZlp4QnNzRkdkTCtRcU5DMHNJTHdpdjJORWU4T1RFVE9IMElmNW9paUhwRTcK
cWhxOU5jWThkbWVjNjdFOThkN0hhUW5oSjBKUHhpVEdKQjFMVGp5VmtaS2NtbnY2WEZwT2Vuckcr
Y3lNTTlsWlo3T3Y1MXc3VzNMdQpldTZ0dk5MekR5ODh2RmgvNmNYbDl2eU9nbzRySFZmZkZYNHNH
cjAyZlAzVGplbWIzMjVORjMrNVBWTXlYVHBaTm5WbjlPNVErZkM5CjNvcjJ5cWI3ZFZYM0g1Uldu
Ni9KZUJqemFOOWoxMXJ6dWkxUFpKNlNueTQrZS85WGMvMjloc3pub1kyMlRXck5BczJNbHQ0WDkx
cVQKWHJxMGliYU52Q3B2UC9KNld3ZWhvLy9ONWM2QUx1V3VsZTdXbnN5M3UzcWxlMmZmVmZmRjla
c1BjQTBNRE41NEh6YWtQWXdaYnY1dwo1dVB1VDVLZnBrYXFSMlBIek1hNXgvc25yazdTcGxTblZq
ODNmY21ZZHYwcTluWHFXL2xNMUt6SkhIbXU1M3ZoZlBDQzVnLzBqK2VMCjZUOWRsMFNYUGk5WHJz
U3NtaklvREFZQUhFTWlVWWZRMnVocXpCRW1QYVphNWxqc2NSWmpsbnJXQk53SnRpUzhHYjZGUFlX
UVFrd2wKN1NTMWNhU1JNemd6dVRLNTdiamZVTEo1c25uUDh1WHk1d25rYlRndjZDYllMM1JKK0RJ
MVh5Ui9ZNzdvRmJHcjRvVVNSWkxYcEs1TAozNUR4bDVtUXZTbFhMSDlib1VTeFZLbHMwNTNOZDVY
TFZlNnBWcXBWcWxkcVJHcjgwS3pXcXRhdTJmSlE1NUh1VWQxVnZkcXRkZnBQCkRKNGFQak9LMzRi
WlZtL2NZUEo4ZTZOcGsxbXplYklGM3VMRmpsYkxsenZick5Lc1NkYnROcTl0Tyt6ZTJIYzVaRHRT
SEx1ZGVwemYKdXZTNjVya0p1UFh0NnQ4OTZQNSt6M3VQL0wwaWU0YzlQM2g5OVA3a1UrUXJzWlln
QVJPQnQyaHl0S24vbHlLemY2ZEkxVUdOZzR1SApmaDVlaWxvK3NuSjBOWm9SQzNHb3Y1TUVleEti
eUpMWWxHU1d6SFlLbjRKUFpUOU5UQ09sYy95ZEpaUWNuck84djdKa3c1OVpVakI4CnhmT3FhS0ZZ
a2NRMWlmVTBLWmE3TFYraThFZVdLRmVvVktyZVY2OVNmNkJSclZtai9WRDcwWmJIdXJXNmYrVEl0
Z2JqNThhTkprM2IKbTAxYnpGOUV2TnpZWnZuS3F0M3F0WFhIa1U2WkxvZHV4NTY0WHNWM0xuMEpB
OHFEaVVPcXc2YytlbzFvajZhUCswOEdmS1pOQjM5TAptbk9aUDcyWXZHTERZQUNzblgwQUFNeHFB
Tm15QUE2NUFMWUZBQW15QUpMdUFKVHJBRmJzQUhhYWdHSVNBcFFPSFJBem5mWHpBeEFnCmdTQW9n
QUU0UXhpa1FSbjhRS2lJT1JLSlhFZGVJcU1vSXNvRUZZdDZoRnBHNjZCajBRM29aWXdJeGhsVGhQ
bk9aTXgwbkttVWFacloKaERtZmVRVExqWFhEUG1MQnNtaXl4TE5Nc21xeEJyUFc0ZVJ4TWJncU5n
SmJMTnRiUEJjK0NEL0d2bzM5R1BzUXdZUHdsSWdtK2hDbgpTTmFrYk5JS1J5TEhERm1MWE1pcHps
bklPYzNsenJYQTdjOWRTWkdsUE9meDRjWHkzdVFUNXp2QU44ZC9RY0JFWUhiRFpVRXh3U2doClJL
aENPSUFxUXUwVk9iTng0OFlZVWFKb20xaTZ1TDBFdjhTdzVDMHBRNmtiMGdZeUhESkRzdVZ5SitU
ZEZKUVY4WXFqU245dEt0Z2MKcCt5bFlxSXFwOGFwdHF3K29wR2pTZENzMHlyVHp0OXlSdWVrYnJU
ZWdhMGgralFEZjBNL0k3OXRnY1pCSnVIYkQ1dkdtNTAyejdPNApzYVBLc21sbm45VTNHNnl0a0oy
R3ZhMEQzVEhWcWNUNWxjdXNHKzh1M2QwKzdtbDdhanpHUEhtOFRMd1AraFQ3OHdaWUJTYlI2b05R
CndmcjAySkJuWWN6aDV2c3pJc1VPQmg5NkdJVTc0bkswT0pvUmF4ZVBPdTZXY1A4a1oySklVbnRL
VnVwaW1udDZRNmJpbWR5Y3NMTWYKY20zejZpK1dYQmJQdjNDRnA0aDBMZlVHNGVicDJ6bWxnbVZY
NzhwWEdGVzJWM2s4K1BhSTUzRnhuY0d6OEhwaVEzR2pXVXRTcS96TAo5bGNSSFEyZDlHNkJuc1kr
aWY2ZXdhUWh2WS9GSTE1and1TzlueDJtS1YrN1ozTG4zQmVtRml1V29obThEQVlBb0FBSFBDQU5l
dUFFCit5RUxxbUFBd1NKS2lEdVNpdFFpc3lnWmxEc3FGL1VHVFVUdlFKOUN0MkxZTVRzeFdaaDNU
RlFtZjZZeXBoL01oc3lubWQ5aXhiSDcKc2M5WXlDeGVMRldzYkt4dXJDVTRERzQzN2g0YmpzMlRy
UmJQamFmalc5bGwyRlBZcHdnV2hGSWlPekdZMkVYYVNycktRZUNJNEhoSApOaWJmNGFSeVpuQ3Vj
b1Z4ZmVZTzRKNmcwQ2d6UE9FODg3eUgrQkMrVS96OC9EY0ZOQVVhTmpoc0dCZU1FZUlUcWhTMkZw
NmdKb2hJCmlEUnVEQkxsRVgwczVpbU9GMzhpRVNRcExQbGFLbEhhUUhwRnBrWTJTazVIYmtHK1Z1
R2tvcDJTaU5MMHB0ck42Y29CS2thcVFxcEwKYXAzcUR6UXVhTVpxK1dvN2J0SFJVZFFWMFNOdnhl
aWo5V2NNdmhsT0cwMXVHekdlTlpuYy90ME1aYzVsd2JOams2WHV6cDFXTnRhQgpOZ2R0OCt6dTJy
OXdlT2U0N016bG91aHE2UmF5Njl6dWV2ZFJEOWE5U3A1K1hybmV0VDVmL2FUOXZRTnlBanYzQ1FU
WkIrZlJ4MEtsCndpTENteUlFRDRSRk5oOFNQWndhTlhIVU9ib3hWaTJ1TUo1OFBQVUUrV1IyRW05
eVhvcHE2c3MwNy9TZm1TbFo2dG1memw3TURUaHYKZjFINk1sUCsxSlduaFJYWHp0MUl1T1Y1MjYz
VStJNUd1VXFGd24zNUIxSTE0bytrYXBXZTZEM2JYbS85bk5ZVTBwTGVlcm50WWZ0QQpCNk5MdUVl
bjE2c3ZlYUQ2L2RRSHZrOEdvekhqMXljL2Z1SC82ak56Y1c1a1FXb3hhS2x5RldFd0FJQVpTQ0FJ
QnVBTWFWQUdyOWZ0CnI3dGZVNDhoWXB3eDM1bU1tWEovZVYvRnVyRUlzOFN6VExMYXNkYmg1SEhu
MlFoc3NXd0wrQ0Q4R0xzWHdZUHdnZWhEbkNLRmtWWTQKRXNrVWNpR25PbWN6bHp2WEFuZmEzNll0
K2VaK2ViWVNRb1FxZmxtMlhwUDh5M0dFdE1HZmhuOEwvdVgzdFdhZFZ0bHZ1Ny9sL3J2YgovNlRX
ZDhpZk44RHFuMm9qZXYvcE51N21uM0pQYmY0dE41dDUzZTRGelhXOVZ6UFgvUmFUMXdXWFY2MGJy
am0ycHZoSjc3cmpwdkdXCnBCZC90V2EvYkg4VjhWcXdvNkdUM2xYV25kRFQyQnZSSjlFZk9HQTBt
RFNrTjN6aXc5NlB4Wi9tUnpyR2hNY0RKMHducGFhd254MisKRkUwbmZQWDl0bjFHWnBadDlzdmNx
Ky9sODlrTGRndFRQK0lYRFg1Sy9oeFppbDdtWGI2NHdyRVN2N0t3ZXBXUnpHQUFyTTFMQUFDQQpN
d3ltQllkU0xReU4vc3R3OTcrdWZiVDk2KzlBQUFEdkhXUnZDd0JrQU5nQWhoQU1OQWlHVUtDQ0JS
aUNFY0RhckFZQXdFd0NPTzhJCkFGRDc0M0RNUDU4YjdoMFpEZ0JnR0V3L0dPcnY2eGRPMWFmVGFk
NXlWTk1nVHdVNTZtWWxKUTM0UHhnay9qc0VBTHlhQUFBQXBFbEUKUVZRWWxXM1BQUXFFTUJBRjRF
eDJNdmxSYkNTRllNRFdDM3FUWEN1OWxRZlFRZ1Foc2RtdE5nakpLK2VETnp6dzNyTmFjSjduOHJx
dQpLMXByU3ppT0E1VlNKUmhqa0hOZS9mRTV6M1BidG1FWXROYmZmL1o5NStNNFBzOFRRa2l2eEJo
eG1xYjd2bE5LUkpSN2hCRG9uTHV1CnEyMWJLV1dHcnV1dzczdm5YTk0wV3VzTVJGUWZxSlRDZDNX
T2xCS0ZFQ1VRRVFKQUNRQlFuODBZZzJWWnF2QUREWVk3QVJYL0VzY0EKQUFBQVNVVk9SSzVDWUlJ
QWlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFBZ0FBQUFRQ0FJQUFBQ2s2S2txQUFBTkZtbERRMUJK
UTBNZwpVSEp2Wm1sc1pRQUFlSnlWMTNrMGxQMzdCL0RybmhtR01XYkdZR3hoWk4rVm5aQWxzaVQ3
WHBLZGliRWtsYklraGNnU2lqYUtOcUZFCm9xSjZ5SklrV1pJbEtuc3BSTExNN3c5NTZ2ZWM4M3kv
NS92NTY3cXZjKzc3L3R6M09hLzM1MXdBUkx3SG5VNURBY0Mrb1BCUUd4TUQKcXBPekN4WGJBd2dn
UUFFMW9IaDRodEgxcmF3czRGL1hmQmNnQUFBZDhoNTBPaTJ4VnI4NFJ4QjNrdlNaR01EM1JLTGsz
KzhEQUFCQwpxSk96Q3dBaUJ3QmN2bXYxVmdEZzJydFcyd0VBMTRGd2VqZ0E0Z2NBWEo1K0hsNEFT
QlFBeUlYYTJSZ0NJTmNCZ09DN1ZsY0JBR0h2Cld0MElBSVFJVDk5d0FLUUhnSmtjNU9VZkJJQ2RB
bURXOWZJTzh3UWd5QUdBbDFlWTV6NEFRaG9BS096YkYrd0ZRS2dEQUNsUGVtZzQKQUdFTUFNU2Nu
RjJvYTF0MlRRSlE0UU5nTWYvZE81QUZVSkVQSUxYamQwLzBQZ0RGQTZBZzVYZHYxZ1lRQUVBb2JX
RSt5cHNCQUFEQgpHd0F3RFRBWXN4SUEyQXlBbFhRR1k2bUF3Vmk1QW9EdUE2aWplZTRQamZqMXZ4
Q2tGZUMvWGE5OTg2K0ZSZ0JRQUlnWVVvUTZoSTdDClJERWRaWTdCeHJFY1l6VmlyY2VkWUR1SlQy
US9SYWdrK1hHa2s5TTVNN2pPY0dkUnNuaHllT3Y1Z3dYeU51UUpYaEJxcE80WEtkaDQKUmJSTi9M
QkVrV1M3OUZHWlc3SmQ4bkVLdHhWN041M1lmRmQ1VVBXVVdxWDZrR2FxVnJYMmlFNm03bU85Q2Yx
c2c2ZUdYN2JsR2plWQp6SmhlTW1zMm45OVJZUGx5NXl1clY5YnROc3QyTiswN0hib2N1NTE2WERD
dWQ5ejZkdlh2SG5BZjNQTitMOTd6Z2RkSDcwOCtJNzZqCmZtUCs0NEhjdENmN1BnZDlDWjZtZncz
NUZqb1ROaGMrdC85N3hQeUJoY2dmQnhjUC9UeThITFY4WkNWYU9xWXpEam1HaWtjZnh5UXcKbldB
K2lVMWtTV0pOeHAxaVM4R25zcDhtcEJIVFNSa2NtZVF6bkZsYzJkdzVsTE04NTNoeitmTDR6d3Rj
MkhCUjhKTFFaZUY4YW9ISQpsWTFYUlF2RmlzU3ZTVjZYdkNGMVUvcVd6SzNKWXRwdHVSTDVVc1V5
cFR1YjdtNHEzM3hQcFVLMVVxMXkvbjVFbGZvRGpXcXRHdTJICld4NXRlYXp6ZUxVMnVrN3Z5ZGFu
K3M4TS9qS3N4OVRITjJ4N2J0eG8wbVRhYk5xQ2EwbCtZZDVxOGRLeWpkQjIrcFZWdS9Wcm13NXkK
UjhZYjIwNjdMdnR1U25kT2orTmJwMTZYZC96djh2cmMrdDBHZGcwS0RWNTY3ejYwWjFoa3VPREQz
bytlbjd4R3hFZUtSbjNHZk1mOQpKcVFuYms0R1RBVitwbjJSLzFJeUhmUTErQnQ5WnRQTTNkblF1
YkR2NGZPcTg1VUxFVDhpRncvK1BMaWt0VlN6ZkhnbGFsVm45VEdECkFZQ0lvZ2lvcitnV3pDMm1U
T1lvckMrTEhhc2hUb1ZORWkvSnprdmdJZktTZURtNHlSS2NVbHdhM0JhVTNUeGh2S2w4cGZ3dEF1
T0MKbkVKcXdyN1VzeUxQUlJFeEhmRVFpVHVTMDlKU01qVFpHbm0wZ3I1aXV0TFFabW5sQkpWdU5S
bDF1a2E5Rm85MjVKWVh1aFM5NEsxUApEY1FNRHh1MUd3dVpSRzUvWkxwb3ZzbkNlMGVXWmJzVndk
ckVKdEsyME82TkE4NXhxMU9JOHdXWEJ0ZnBYY0s3ZDdvZjJsUGdVYjkzCjNJdmJXOC9IeWZlbzMy
WC91b0Qrd01WOW5FR3l3VVowdjVDbzBMU3dndkNLL1kwUjd3NU1STTRmUWgvbWlLSWVrVHVxR3Iw
MXhqeDIKWjV6cnNUM3gzc2RwQ2VFblFrL0dKTVlrSFV0T1BKV1JrcHlhZS9wY1drNTZlc2I1ekl3
ejJWbG5zNi9uWER0YmN1NTY3cTI4MHZNUApMenk4V0gvcHhlWDIvSTZDamlzZFY5OFZmaXdhdlRa
OC9kT042WnZmYmswWGY3azlVekpkT2xrMmRXZjA3bEQ1OEwzZWl2YktwdnQxClZmY2ZsRmFmcjhs
NEdQTm8zMlBYV3ZPNkxVOWtucEtmTGo1Ny8xZHovYjJHek9laGpiWk5hczBDell5VzNoZjNXcE5l
dXJTSnRvMjgKS204LzhucGJCNkdqLzgzbHpvQXU1YTZWN3RhZXpMZTdlcVY3Wjk5Vjk4WDFtdzl3
RFF3TTNuZ2ZOcVE5akJsdS9uRG00KzVQa3ArbQpScXBIWThmTXhybkgreWV1VHRLbVZLZFdQemQ5
eVpoMi9TcjJkZXBiK1V6VXJNa2NlYTduZStGODhJTG1EL1NQNTR2cFAxMlhSSmMrCkwxZXV4S3lh
TWlnTUJnQWNReUpSaDlEYTZHck1FU1k5cGxybVdPeHhGbU9XZXRZRTNBbTJKTHdadm9VOWhaQkNU
Q1h0SkxWeHBKRXoKT0RPNU1ybnR1TjlRc25teWVjL3k1ZkxuQ2VSdE9DL29KdGd2ZEVuNE1qVmZK
SDlqdnVnVnNhdmloUkpGa3Rla3JrdmZrUEdYbVpDOQpLVmNzZjF1aFJMRlVxV3pUbmMxM2xjdFY3
cWxXcWxXcVYycEVhdnpRck5hcTFxN1o4bERua2U1UjNWVzkycTExK2s4TW5obytNNHJmCmh0bFdi
OXhnOG54N28ybVRXYk41c2dYZTRzV09Wc3VYTzl1czBxeEoxdTAycjIwNzdON1lkemxrTzFJY3U1
MTZuTis2OUxybXVRbTQKOWUzcTN6M28vbjdQZTQvOHZTSjdoejAvZUgzMC91UlQ1Q3V4bGlBQkU0
RzNhSEswcWYrWElyTi9wMGpWUVkyRGk0ZCtIbDZLV2o2eQpjblExbWhFTGNhaS9rd1I3RXB2SWt0
aVVaSmJNZGdxZmdrOWxQMDFNSTZWei9KMGxsQnllczd5L3NtVERuMWxTTUh6Rjg2cG9vVmlSCnhE
V0o5VFFwbHJzdFg2THdSNVlvVjZoVXF0NVhyMUovb0ZHdFdhUDlVUHZSbHNlNnRicC81TWkyQnVQ
bnhvMG1UZHViVFZ2TVgwUzgKM05obStjcXEzZXExZGNlUlRwa3VoMjdIbnJoZXhYY3VmUWtEeW9P
SlE2ckRwejU2aldpUHBvLzdUd1o4cGswSGYwdWFjNWsvdlppOApZc05nQUt5ZGZRQUF6R29BMmJJ
QURya0F0Z1VBQ2JJQWt1NEFsT3NBVnV3QWRwcUFZaElDbEE0ZEVET2Q5Zk1ERUNDQklDaUFBVGhE
CkdLUkJHZnhBcUlnNUVvbGNSMTRpb3lnaXlnUVZpM3FFV2ticm9HUFJEZWhsakFqR0dWT0UrYzVr
ekhTY3FaUnBtdG1FT1o5NUJNdU4KZGNNK1lzR3lhTExFczB5eWFyRUdzOWJoNUhFeHVDbzJBbHNz
MjFzOEZ6NElQOGEramYwWSt4REJnL0NVaUNiNkVLZEkxcVJzMGdwSApJc2NNV1l0Y3lLbk9XY2c1
emVYT3RjRHR6MTFKa2FVODUvSGh4ZkxlNUJQbk84QTN4MzlCd0VSZ2RzTmxRVEhCS0NGRXFFSTRn
Q3BDCjdSVTVzM0hqeGhoUm9taWJXTHE0dlFTL3hMRGtMU2xEcVJ2U0JqSWNNa095NVhJbjVOMFVs
Qlh4aXFOS2YyMHEyQnluN0tWaW9pcW4KeHFtMnJENmlrYU5KMEt6VEt0UE8zM0pHNTZSdXRONkJy
U0g2TkFOL1F6OGp2MjJCeGtFbTRkc1BtOGFiblRiUHM3aXhvOHF5YVdlZgoxVGNicksyUW5ZYTly
UVBkTWRXcHhQbVZ5NndiN3k3ZDNUN3VhWHRxUE1ZOGVieE12QS82RlB2ekJsZ0ZKdEhxZzFEQit2
VFlrR2RoCnpPSG0rek1peFE0R0gzb1loVHZpY3JRNG1oRnJGNDg2N3Bady95Um5Za2hTZTBwVzZt
S2FlM3BEcHVLWjNKeXdzeDl5YmZQcUw1WmMKRnMrL2NJV25pSFF0OVFiaDV1bmJPYVdDWlZmdnls
Y1lWYlpYZVR6NDlvam5jWEdkd2JQd2VtSkRjYU5aUzFLci9NdjJWeEVkRFozMApib0dleGo2Si9w
N0JwQ0c5ajhValhtUEM0NzJmSGFZcFg3dG5jdWZjRjZZV0s1YWlHYndNQmdDZ0FBYzhJQTE2NEFU
N0lRdXFZQURCCklrcUlPNUtLMUNLektCbVVPeW9YOVFaTlJPOUFuMEszWXRneE96RlptSGRNVkNa
L3BqS21IOHlHektlWjMyTEZzZnV4ejFqSUxGNHMKVmF4c3JHNnNKVGdNYmpmdUhodU96Wk90RnMr
TnArTmIyV1hZVTlpbkNCYUVVaUk3TVpqWVJkcEt1c3BCNElqZ2VFYzJKdC9ocEhKbQpjSzV5aFhG
OTVnN2ducURRS0RNODRUenp2SWY0RUw1VC9QejhOd1UwQlJvMk9Hd1lGNHdSNGhPcUZMWVducUFt
aUVpSU5HNE1FdVVSCmZTem1LWTRYZnlJUkpDa3MrVm9xVWRwQWVrV21SalpLVGtkdVFiNVc0YVNp
blpLSTB2U20yczNweWdFcVJxcENxa3RxbmVvUE5DNW8KeG1yNWFqdHUwZEZSMUJYUkkyL0Y2S1Ax
Wnd5K0dVNGJUVzRiTVo0MW1keiszUXhsem1YQnMyT1RwZTdPblZZMjFvRTJCMjN6N083YQp2M0I0
NTdqc3pPV2k2R3JwRnJMcjNPNTY5MUVQMXIxS25uNWV1ZDYxUGwvOXBQMjlBM0lDTy9jSkJOa0g1
OUhIUXFYQ0lzS2JJZ1FQCmhFVTJIeEk5bkJvMWNkUTV1akZXTGE0d25udzg5UVQ1WkhZU2IzSmVp
bXJxeXpUdjlKK1pLVm5xMlovT1hzd05PRzkvVWZveVUvN1UKbGFlRkZkZk8zVWk0NVhuYnJkVDRq
a2E1U29YQ2Zma0hValhpajZScWxaN29QZHRlYi8yYzFoVFNrdDU2dWUxaCswQUhvMHU0UjZmWApx
eTk1b1ByOTFBZStUd2FqTWVQWEp6OSs0Zi9xTTNOeGJtUkJhakZvcVhJVllUQUFnQmxJSUFnRzRB
eHBVQWF2MSsydnUxOVRqeUZpCm5ESGZtWXlaY245NVg4VzZzUWl6eExOTXN0cXgxdUhrY2VmWkNH
eXhiQXY0SVB3WXV4ZkJnL0NCNkVPY0lvV1JWamdTeVJSeUlhYzYKWnpPWE85Y0NkOXJmcGkzNTVu
NTV0aEpDaENwK1diWmVrL3pMY1lTMHdaK0dmd3YrNWZlMVpwMVcyVys3ditYK3U5di9wTlozeUo4
Mwp3T3FmYWlONi8razI3dWFmY2s5dC9pMDNtM25kN2dYTmRiMVhNOWY5RnBQWEJaZFhyUnV1T2Jh
bStFbnZ1dU9tOFpha0YzKzFacjlzCmZ4WHhXckNqb1pQZVZkYWQwTlBZRzlFbjBSODRZRFNZTktR
M2ZPTEQzby9GbitaSE9zYUV4d01uVENlbHByQ2ZIYjRVVFNkODlmMjIKZlVabWxtMzJ5OXlyNytY
ejJRdDJDMU0vNGhjTmZrcitIRm1LWHVaZHZyakNzUksvc3JCNmxaSE1ZQUNzelVzQUFJQXpES1lG
aDFJdApESTMreTNEM3Y2NTl0UDNyNzBBQUFPOGRaRzhMQUdRQTJBQ0dFQXcwQ0laUW9JSUZHSUlS
d05xc0JnREFUQUk0N3dnQVVQdmpjTXcvCm54dnVIUmtPQUdBWVREOFk2dS9yRjA3VnA5TnAzbkpV
MHlCUEJUbnFaaVVsRGZnL0dDVCtPd1FBdkpvQUFBQ2dTVVJCVkJpVmJjOGgKRG9Vd0RBYmdsdGUx
QllIRG9HZG01bmExM1dSK1I4SVJMb0FCUWJqQWU0S3d2R1Q3VmJPdjZWcE1LVUVyNUp5clg3ZHRv
Mm1hYWpqUAprMVMxaG1FWXFPdTY1aCtmKzc3M2ZaL25XVVMrYjQ3andLZktPWWNRU3Z1NnJnUUFp
SGhkRnpNWE1NYlFVM252UmFUQU9JNjBMSXVxCldtdjd2aS9BekdTdHJWZFNWZm9mWFNJaVpJeXBn
WmtKRVd0QXhQYlpBSUF4eGliOEFFN0ZMZXdaYXFkNUFBQUFBRWxGVGtTdVFtQ0MKQUFBQUFBQ0pV
RTVIRFFvYUNnQUFBQTFKU0VSU0FBQUFEUUFBQUE0SUJnQUFBUFIvbHRJQUFBSFVhVU5EVUVsRFF5
QlFjbTltYVd4bApBQUI0bkoyUlAyZ1RVUnpIUCsrQ2pjTVJxNXlkV3J4QnFrT1VveGxhRjBsTlFF
U0gwS1kweVhhOU81UER1K3Z6N2hvTnRPRG83R3lICm9vT2c3bEtWWmhGRWNSREZQN2c2Q2c0RlVi
U2V3ek5ra0ZEd0J3OCszeSs4OS91OTd3OXlsaTFsb0FGaGxNWUw1OCtaaldiTHpMOUgKNXpBNlk0
emJUaUxuYTdWTGpLeHY3eEFBYjA3WlVnYjNnK2JqcGNWblQ5LzJ2N3o4OGVUcmxkSDNBQ2pFaldZ
TFJCRXcyb3JMZ0xHaQp1QTRZMTFLWmd1Z0FodE94WFJEclFER3VMMVJBM0FNS2JjV1BnTUtLNHVk
QW9ldTBVeEFmQUN0eS9RaTBnOENjNnlVT2FHWEFkeE1uCkJPMEJNQmVHcXk1b240R1Rqb3hUeU9u
QThVYXpaYXFSdThmZzdBblFiZzY5Vmd3UGQrRG9yNkUzWFFWakZyYTNodDd1QkFJUUV5K1MKeTZV
WkFJUWV3NEh2V2JZN0JmbHQySXV6N09kbWx1M2RoZHhINkY5MTF1THUzN3lFZUFYN2FmVm5wZUYx
T3FCUnJISUJ3SUk3ZlZnRwpMdDZBMjJXWVhvWWpuNkFHMU10b3BkTGdxQXdCT0ZUeEl5KzB6YXFm
eU1EdTdiUDEvNmd3V0J2MEVvRHVSVXVMd0NRd1NRV2ZDSThRCkc1TXFQZ21TQUp1ZTJpZkEyRGpj
bXRKKzV6WjI4bWYrZVQvMXJxY0FsVlhaaS8xMkp6WG5wUXk4b25raGNrNFh6Um5MbXVVUEZhS0sK
dEk3NStRUUFBQUkyU1VSQlZDaVJaZEsvU3h0eEhNYng5OTE5TDk1OXo1NUgwcEFFTG9JMnhrR0xV
S3lnVXlZSjlGL28zcWxiRWZvUApPUFUvME1HaFVIUnpLSFp5Y2l0a01SMEVhY1VRMG1qamljbGRm
bHh5M3k1dHNQU0J6L2E4aGc4OEd2OUdTaW1YZFYxZjBIWGRTWklrClRKTGtSeFJGRjBEMHQ2UTlB
azk5MzYrV3krVlh1Vnp1dVpUU2lxSm8wRzYzenk4dkx6OWZYMTkvQVg0OVJ0bjE5ZlYzMjl2YnJ6
YzMKTjdQNWZONDBUWk00am1rMm0vSFoyZG50NmVucHgxcXQ5Z0c0TlFCemRYWDFUYlZhZlZ1cFZI
S2xVc2x3SEllWm1SbHMyeWFkVGh1dQo2ejdSTkczNTRlR2hkM056ODlWd1hmZGxwVko1djdTMDlH
eDJkaFloQkpQSmhEaU9HUXdHRElkRHdqQWtqbU9wbE1vMm04MmF5R1F5CmE3N3Z6MHNwaWFLSVRx
ZUQ0empvdXM1a01tRTRITkxyOVpCU1Vpd1c1MTNYWFJPZTUrVUtoWUtZbTV0RFNvbHBtZ2doTUF4
akNtM2IKUmlsRm9WQVFudWZsaEtacGh1ZDVXaWFUd1hFY0xNc2lsVW9oaEdBOEhtUGJOclp0RTRZ
aG85RkkwelRORUdFWTNnTnhOcHRGQ1BFZgpHbzFHcEZJcHBKUzBXcTA0RE1ONzBXZzBMdXIxK3RY
VzFsWmFTcWtaaG9GbFdWTTBHQXo0ODYrcTErdFhqVWJqQXNBdmxVcTdSMGRICmQvMStYeW1sVkpJ
azAxTktxWDYvcnc0UEQrOFdGeGQzQVIvQUFqYks1ZkxCM3Q1ZUt3aUNhVGxKRWhVRWdkcmYzMit0
ckt3Y0FCdUEKWlFCaklPaDBPbGNuSnllQlpWa0wzVzUzM08xMng3VmFyWHQ4Zk56ZTJkblphN2Zi
bjRCdlFQL3g5aXdnQTd3QWlrQWUrQWw4Qjg2QgpEakFBK0EzTXN3Z1o1M1kzK1FBQUFBQkpSVTVF
cmtKZ2dnQ0pVRTVIRFFvYUNnQUFBQTFKU0VSU0FBQUFEUUFBQUE0SUJnQUFBUFIvCmx0SUFBQUhV
YVVORFVFbERReUJRY205bWFXeGxBQUI0bkoyUlAyZ1RVUnpIUCsrQ2pjTVJxNXlkV3J4QnFrT1Vv
eGxhRjBsTlFFU0gKMEtZMHlYYTlPNVBEdSt2ejdob050T0RvN0d5SG9vT2c3bEtWWmhGRWNSREZQ
N2c2Q2c0RlViU2V3ek5ra0ZEd0J3OCszeSs4OS91OQo3dzl5bGkxbG9BRmhsTVlMNTgrWmpXYkx6
TDlINXpBNlk0emJUaUxuYTdWTGpLeHY3eEFBYjA3WlVnYjNnK2JqcGNWblQ5LzJ2N3o4CjhlVHJs
ZEgzQUNqRWpXWUxSQkV3Mm9yTGdMR2l1QTRZMTFLWmd1Z0FodE94WFJEclFER3VMMVJBM0FNS2Jj
V1BnTUtLNHVkQW9ldTAKVXhBZkFDdHkvUWkwZzhDYzZ5VU9hR1hBZHhNbkJPMEJNQmVHcXk1b240
R1Rqb3hUeU9uQThVYXpaYXFSdThmZzdBblFiZzY5Vmd3UApkK0RvcjZFM1hRVmpGcmEzaHQ3dUJB
SVFFeStTeTZVWkFJUWV3NEh2V2JZN0JmbHQySXV6N09kbWx1M2RoZHhINkY5MTF1THUzN3lFCmVB
WDdhZlZucGVGMU9xQlJySElCd0lJN2ZWZ0dMdDZBMjJXWVhvWWpuNkFHMU10b3BkTGdxQXdCT0ZU
eEl5KzB6YXFmeU1EdTdiUDEKLzZnd1dCdjBFb0R1UlV1THdDUXdTUVdmQ0k4UUc1TXFQZ21TQUp1
ZTJpZkEyRGpjbXRKKzV6WjI4bWYrZVQvMXJxY0FsVlhaaS8xMgpKelhucFF5OG9ua2hjazRYelJu
TG11VVBGYUtLdEk3NStRUUFBQUpmU1VSQlZDaVJWWkxQYTlOZ0FJYmY1UHUrNUV2U3BsMjNkcTNP
ClNxbHVFemJHcGpJbmpIbVNnZitDZDAvZXZQZ1hDT0p0UjhXTGcrRkI4TElwRGp5SUhrWkZCbXVG
Z3JnNlo5ZTFxK212dEVuekpmSGcKaFBtZTMrZnd2THdTL28vT21ENUZWVGtueTdJUkJJRXQzR0Rm
OC9wbEFQMS9KZWtNTUpiS1RLeG1jNU4zRXNuVUxPY0dkeHpiK2Qybwo3LzA2K0xaNWRIandGc0RK
V1NoNVplN2FnNldWMjNldnpzOG56NldUVEdFVVEwL2dzSHJzRlFxZkd6dWZ0dGZMZTd0UEFEUUlB
SmFmCm5ybTNkR3YxL3ZMTkcrT1QrU3pSTlE1RllkQzRpc1JJakJoUk0rcERtYkx0VHM4NnFSZUlh
WnJYNXhkWEhsN01UK1lqaGc1S0NZSWcKZ0NjRUhIY0kxeDNDN2p0d1JhZ0xJWktONm84djFERGlj
Nm5NUkZiWE9Qb0RCMDJyRFVQWElNc1NmRCtBNnc3UjdmV2hheHpwODltcwpZY1RuS0RlajQ4bFVo
c2FpRWVnYUI2TVVsQklRV1lZc0J4RENoNjd4ditLcERPVm1kSnhLWVVqaXNZZzBPaEpEeE5DZ3Fn
b1V4a0FwCmdSQStOSzdDMERsNjlnQ082MHBTR0JJNnNIdXRNQXk4MU5nSUNDSGdxZ0pGWWFDRVFQ
Zytoa01QRG1QUU5ZN0RvNW8zc1BzdFdxOGQKbDB2RlltVjVjU0doYTF3aVJBWlhGVkJLSVU3SE9Q
VU5TOFZpcFY0N0twTXc5SjFtdlpySVhwNmRXWmlkMXVKbUJJckN3Q2lGcWlpSQpHam9ZbzlqK3NO
UGFlTDcyc3R1eE5nbUFZYS9ic1VyRlhWUFN4OUtYY3RtSXFpcVFKUWtoZ0hiWHh2cXJyZHF6dGNk
YjFaK1ZGd0QyCkNRQUJ3T3EyVzVXUDc5OVlqaHpKdFRvRDBlN2FvckQ3dGZ0Njg5M3gycU9IVDF0
V2N3TkFDY0RnN1BjNGdGRUFDd0F1QUVnRHFBSDQKRG1BUFFCT0FBd0IvQUpKZDkzckNtRkdrQUFB
QUFFbEZUa1N1UW1DQ2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCQUFBQUFRQ0FJQQpBQUNRa1dn
MkFBQUI1MmxEUTFCSlEwTWdVSEp2Wm1sc1pRQUFlQUd0a2o5b0ZGRVF4ci9kSXptTEkzOUVVeG5j
SWtTTGl5eTVJa2tqCkYrOUF4QlJIY2tHVGJyTzMzaTN1YmphN205TURCVXRyYXkxRWkwQ1NYbUpD
cmhGRXNSREZQNlJOS1ZnRVJORzRmdTg5d2hGSVNPUEEKMi9lYmIyZm03Y3hiSUdOYVllanBBUHdn
aWFhdlhqRnV6czBiMmMvSW9aK3JHMzJXSFllVGxjb1VRNDZ4SDUrZ2lWY2ZSa1N0VlcvdQo1ZXpN
cTYyUDdXOXZmMjErdjMxTTBvSGNFL0ZBUU10VE9GTlhYQlM4b0xncStFNFNKb3hwQ0xZYlZvMThq
NXlQcXRNbDhncTVwNjc0CmhlQUZ4YThGTisyNnlQMUNOb09hR3dENktmSjR6WWx0Y3BIczFtTGJK
NitSeDMxL2tmWDFYZkpGTzR5WW04bVJoOFJjdU5PYTU0SEwKRnhqenNLUE5SOEQ2Tm5EMlQwY2JM
dk56eDRDTnB4MXRiMERPU2h0NEU5OHFqTXB5V282NVhUL1RkRzhReUc0QSsxR2EvbjZTcHZ2UApl
ZlpYb0wxa0wwZE5HY3RHdEhmQVNiN3FXVlVIM3JNSG1yeWpvMW5OUlVhWndMTTJjSVBPOVFmQTR5
SXdUT2YwRGxDaFZpMUNMeFFPCmxwb2haYUMzNUFhT2J4bGxOdzQ5cXlXMS8vcnd2V1hlbHpUUlNj
NEpabWU0bjVPckJCY0JIUGl3WUtCTUwwWUlqMTVMM2FmSTYrNEQKSGczcWZ6UDN0N01UUWpoa2lY
Tlh6cW0wR0xZaXQ5NUlqRW4relU3ZXVCYllsL0xHcUdtTzRSOFZvb3EwOHFDeThBQUFBQWx3U0Zs
egpBQUFMRXdBQUN4TUJBSnFjR0FBQUFZWkpSRUZVS0JXVmtydXVBVkVVaHMyZTdYSWtESVdnMGFp
VUdvMkM2THlBUjVuYUEyZzl5bVJLCmhVaFV1cE9nMG9ocklTNEp3VGhmckdSbm9qZzVaeFU3YS8v
clg1ZjlyMjMxKy8zSWYweFhLcFcvODJlem1jN2xjaVloQ0lMcjlYcTcKM1I2UGg5WTZIbzhuRWdt
bGxDSHM5M3NOSlBmbjg3bGVyMzNmSDQxR204MG1uOC9YNi9WMnUxMG9GR3piRms0eW1kUlNnTnJi
N2JiWAo2OEUrbjg4a0x4YUw3N2U1cmxzc0ZrMGZSUXk3WEM2ZTU4RStIQTczKzUxOFRud1FjS0pD
QTFkTWpCMlB4K0Z3U08zWDYyVW14Z2NCCkp5bzBYcWhqc1JnTU91NTJPOG9ZdGpnZzRFU0ZGbzFH
RlZKZ3ZDYjhPSlBHYzhHSkNpMmRUcXV2dDJVeW1WYXJsVXFsTE1zeWJId1EKY0tKQ280OG1Hd2Jp
ZGpvZFZCa01CcWZUaVQwd0JzWmFtODBtQ1F3ak5MdmI3ZEtYTlRtT1U2dlZzdGtzY3pOQXVWd21E
WEhINDNHagowV0F0NUtCYkJLV013VUFRdHJaY0xsZXIxV1F5cVZhcnBWS0o5UUZDbTA2blZsaEhN
NzA0SWhFbkkvQ0RPT2Z6dWY0Z2hhOGlVUmpCCnQ5ajhCL1Q3OVFmdlhQSHRUQlhDMmdBQUFBQkpS
VTVFcmtKZ2dnQ0pVRTVIRFFvYUNnQUFBQTFKU0VSU0FBQUFFQUFBQUJBSUFnQUEKQUpDUmFEWUFB
QUhuYVVORFVFbERReUJRY205bWFXeGxBQUI0QWEyU1AyZ1VVUkRHdjkwak9Zc2pmMFJUR2R3aVJJ
dUxMTGtpU1NNWAo3MERFRkVkeVFaTnVzN2ZlTGU1dU5ydWIwd01GUzJ0ckxVU0xRSkplWWtLdUVV
U3hFTVUvcEUwcFdBUkUwYmgrN3ozQ0VVaEk0OERiCjk1dHZaK2J0ekZzZ1kxcGg2T2tBL0NDSnBx
OWVNVzdPelJ2Wno4aWhuNnNiZlpZZGg1T1Z5aFJEanJFZm42Q0pWeDlHUksxVmIrN2wKN015cnJZ
L3RiMjkvYlg2L2ZVelNnZHdUOFVCQXkxTTRVMWRjRkx5Z3VDcjRUaEltakdrSXRodFdqWHlQbkkr
cTB5WHlDcm1ucnZpRgo0QVhGcndVMzdickkvVUkyZzVvYkFQb3A4bmpOaVcxeWtleldZdHNucjVI
SGZYK1I5ZlZkOGtVN2pKaWJ5WkdIeEZ5NDA1cm5nY3NYCkdQT3dvODFId1BvMmNQWlBSeHN1ODNQ
SGdJMm5IVzF2UU01S0czZ1QzeXFNeW5KYWpybGRQOU4wYnhESWJnRDdVWnIrZnBLbSs4OTUKOWxl
Z3ZXUXZSMDBaeTBhMGQ4Qkp2dXBaVlFmZXN3ZWF2S09qV2MxRlJwbkFzelp3Zzg3MUI4RGpJakJN
NS9RT1VLRldMVUl2RkE2VwptaUZsb0xma0JvNXZHV1UzRGoyckpiWC8rdkM5WmQ2WE5ORkp6Z2xt
WjdpZms2c0VGd0VjK0xCZ29Fd3ZSZ2lQWGt2ZHA4anI3Z01lCkRlcC9NL2Uzc3hOQ09HU0pjMWZP
cWJRWXRpSzMza2lNU2Y3TlR0NjRGdGlYOHNhb2FZN2hIeFdpaXJUeW9MTHdBQUFBQ1hCSVdYTUEK
QUFzVEFBQUxFd0VBbXB3WUFBQUJVRWxFUVZRb0ZXT2NPblVxQXltQTVROFROL0hxMlJpK3MwaEtp
aE92Z2VIWFp4WmVIb1FOLy83OQpXN2RtNVlGOWU1NDlmU0lsTGVQZzVCSVVFczdFeEFRMzhlK1B2
NHc3OXgyQjhJR3F5MHZ5TDEwNEQ1Y0dNdlFNRER0N0pzTDEvUDcyCmdUa3dOT3JYN3o5QXRHYmw4
bDA3dGlLckJySmZ2bmpCek15cXBLb09VY1AwN3hmTHV3OGZJWW9PN04rTnBob3VidXZzRG1IenMv
MWwKWVdWbGhYQmV2WGlPVlFOUUhLNkdsWldKaFllSEI2Sk9VbHIyL3QzYm1IcUE0bkExZkJ6L21i
aTVPQ0hJeVFWcUw1b2VvRGhjRFJzYgpHOEtHdUtUVWMyZE9uajk3R2xtRG9iRXBVQndlU2h3TVB4
aFBYcmdCVi9IdjM5OWxpeGZzMnI3bDBhT0hjbkx5WDc5OGZ2TGtpYTZ1CjdwekZxeUZxT0psK01a
NjVnc1hkY0NOU1k4UE9uei92NmVuWjNEMEpLTWpEOHBmeDRzMTdjR21DREE2RzN5ek16SWlZSjZp
QjRTOEQKeTZKWjB3aXJRMUlCQUhWTGZWUzlLdHhlQUFBQUFFbEZUa1N1UW1DQ2crd0kyVVFrRE5r
Y0pObEVKQkNMQkNUWlhDUUVpMVFrQklQRQpDTU1FQUFBQTlRQUFBQ1FBQUFBQUFBQUFBQUFBQUIw
QUFBQUlBQUFBQ0FBQUFBQUFBQUFYSndBQUF3QUFBQVFBQUFEeEFBQUFpZ0FBCkFEQUFEeEVBQUFB
QUFBQUFBQUFBQUFBZEFBQUFBd0FBQUJrQUFBQm5FZ0FBQUFBQUFBQUFBRU5IVTJsNlpVMWhhMlVB
SEFBU0VBZ0EKQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0NnQUFFQUFMRVFRQUFBQkFBQUFB
ZDJsa2RHZ0FFUUFMRVFnQUFBQkFBQUFBYUdWcApaMmgwQUE4QUN4SDAvLy8vQ3hBQUFITnBlbVVB
QWdBR0FBQUE4Z0FBQURBQUFBQUFBQUFBQUFBQUFCMEFBQUFvQWdBQUF3QUFBQ1FBCkFBQUFBQUFB
QndFQWdBTUFBQUFJQVFDQUdRQUFBQWtCQUlBTUFBQUFKQUFBQUFjQVdBQUFBQ1FBQUFBTEFGd0FB
QUFrQUFBQUNnRE0KQUFBQUpBQUFBQXNBMEFBQUFDUUFBQUFLQU5sRUpBVFpHTmxFSkFqWldBVFpS
Q1FNMlZnSTJVUWtFTmxZRE1NRUFBQUE5UUFBQUNRQQpBQUFBQUFBQUFBQUFBQndBQUFBQUFBQUFF
QUFBQUFBQUFBQVhKd0FBQUFBQUFBUUFBQUR4QUFBQWxRQUFBREFBRHhFQUFBQUFBQUFBCkFBQUFB
QUFjQUFBQUFBQUFBQnNBQUFCbUVnQUFBQUFBQUFBQUFFTkhVbVZqZEUxaGEyVUFIQUFTRUFBQUFB
QUFBQUFBQUFBQUFBQUEKQUFBQUFBQUFBQUFnQ2dBQURBQUxFUVFBQUFCQUFBQUFlQUFNQUFzUkNB
QUFBRUFBQUFCNUFCQUFDeEVNQUFBQVFBQUFBSGRwWkhSbwpBQkVBQ3hFUUFBQUFRQUFBQUdobGFX
ZG9kQUFDQUFZQUFBQUE4Z0FBQURnQUFBQUFBQUFBQUFBQUFCd0FBQUFvQWdBQUJBQUFBQ3dBCkFB
QUFBQUFBRFFFQWdBQUFBQUFQQVFDQURRQUFBQkFCQUlBYkFBQUFFZ0VBZ0F3QUFBQXFBQUFBQndC
WUFBQUFLZ0FBQUFzQVhBQUEKQUNvQUFBQUtBTmdBQUFBcUFBQUFDd0RjQUFBQUtnQUFBQW9BeHdF
QUFBQUF3d0lBQUFBeUFBQUFCZ0FFQUFBQTlRQUFBQ1FBQUFBQQpBQUFBQUFBQUFBY0FBQUFBQUFB
QUFBQUFBQUFBQUFBWEp3QUFBQUFBQUFRQUFBRHhBQUFBZUFBQUFFVUFFQkVBQUFBQUFBQUFBQUFB
CkFBQUhBQUFBQUFBQUFBWUFBQUFuRUFBQUFBQUFBQUFBQUUxbFpHbGhWVWxGYkdWdFpXNTBPanAr
VFdWa2FXRlZTVVZzWlcxbGJuUUEKSEFBU0VBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFn
Q2dBQURRQUdFU01RQUFBU0FIUm9hWE1BQWdBR0FQSUFBQUFnQUFBQQpBQUFBQUFBQUFBQUhBQUFB
V0E0QUFBRUFBQUFVQUFBQUFBQUFBRUVBQUlBTUFBQUFMd0FBQUFjQVdBQUFBQzhBQUFBTEFGd0FB
QUF2CkFBQUFDZ0M0QUFBQUx3QUFBQXNBdkFBQUFDOEFBQUFLQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBMEFBQUEKQmdBRUFBQUFOZ0FBQUFZQUNBQUFBRDBBQUFBR0FBd0FB
QUJEQUFBQUJnQVFBQUFBTndBQUFBWUFGQUFBQURnQUFBQUdBSXRFSkJpTApUQ1FVaTFRa0JGQlJp
MHdrRUlQc0VJdkVpUkNMVkNRa2lVZ0VpMHdrS0lsUUNJbElEUDhWQUFBQUFJUEVHTUlZQUN3QUFB
QStBQUFBCkJnQUVBQUFBOVFBQUFDUUFBQUFBQUFBQUFBQUFBRFlBQUFBQUFBQUFHQUFBQUFBQUFB
QVhKd0FBQUFBQUFBUUFBQUR4QUFBQXBRQUEKQUQwQUVCRUFBQUFBQUFBQUFBQUFBQUEyQUFBQUFB
QUFBRE1BQUFBdkVBQUFBQUFBQUFBQUFFMWxaR2xoVlVsRmJHVnRaVzUwT2pwbwphWFJVWlhOMEFC
d0FFaEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBSUFBQTBBQmhFdUVBQUFFZ0IwYUds
ekFCRUFDeEVFCkFBQUFEaEFBQUdKdmRXNWtjd0FRQUFzUkZBQUFBQWdRQUFCd2IybHVkQUFPQURr
UktnQUFBQUFBQUFCSEVBQUFBZ0FHQUFBQUFQSUEKQUFBZ0FBQUFBQUFBQUFBQUFBQTJBQUFBV0E0
QUFBRUFBQUFVQUFBQUFBQUFBRVFBQUlBTUFBQUFQUUFBQUFjQVdBQUFBRDBBQUFBTApBRndBQUFB
OUFBQUFDZ0ROQUFBQVBRQUFBQXNBMFFBQUFEMEFBQUFLQU9nQUFBQTlBQUFBQ3dEc0FBQUFQUUFB
QUFvQWl3MEFBQUFBCml4R0xSQ1FFaTBrRWlSQ0pTQVRDQkFBQ0FBQUFSQUFBQUFZQUJBQUFBUFVB
QUFBa0FBQUFBQUFBQUFBQUFBQVhBQUFBQUFBQUFBUUEKQUFBQUFBQUFGeWNBQUFBQUFBQUVBQUFB
OFFBQUFIUUFBQUJCQUJBUkFBQUFBQUFBQUFBQUFBQUFGd0FBQUFBQUFBQVVBQUFBTUJBQQpBQUFB
QUFBQUFBQk5aV1JwWVZWSlJXeGxiV1Z1ZERvNmJtRjBkWEpoYkZOcGVtVUFIQUFTRUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFnQWdBQURRQUdFUzRRQUFBU0FIUm9hWE1BQWdBR0FQSUFB
QUFnQUFBQUFBQUFBQUFBQUFBWEFBQUFXQTRBQUFFQUFBQVUKQUFBQUFBQUFBRVVBQUlBTUFBQUFR
d0FBQUFjQVdBQUFBRU1BQUFBTEFGd0FBQUJEQUFBQUNnQzBBQUFBUXdBQUFBc0F1QUFBQUVNQQpB
QUFLQUl0RUpBU0pRUVRDQkFBRUFBQUE5UUFBQUNRQUFBQUFBQUFBQUFBQUFBb0FBQUFBQUFBQUJB
QUFBQUFBQUFBWEp3QUFBQUFBCkFBUUFBQUR4QUFBQWhRQUFBRDhBRUJFQUFBQUFBQUFBQUFBQUFB
QUtBQUFBQUFBQUFBY0FBQUEzRUFBQUFBQUFBQUFBQUUxbFpHbGgKVlVsRmJHVnRaVzUwT2pwelpY
UlFZWEowU1VRQUhBQVNFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0NnQUFEUUFHRVNN
UQpBQUFTQUhSb2FYTUFFUUFMRVFRQUFBQjBBQUFBY0dGeWRFbEVBQUlBQmdBQUFBRHlBQUFBSUFB
QUFBQUFBQUFBQUFBQUNnQUFBRmdPCkFBQUJBQUFBRkFBQUFBQUFBQUJLQUFDQURBQUFBRWtBQUFB
SEFGZ0FBQUJKQUFBQUN3QmNBQUFBU1FBQUFBb0F5QUFBQUVrQUFBQUwKQU13QUFBQkpBQUFBQ2dD
TFFRVERCQUFBQVBVQUFBQWtBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFGeWNB
QUFBQQpBQUFFQUFBQThRQUFBRzhBQUFBOEFCQVJBQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUFE
QUFBQU9CQUFBQUFBQUFBQUFBQk5aV1JwCllWVkpSV3hsYldWdWREbzZjR0Z5ZEVsRUFCd0FFaEFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBb0FBQTBBQmhFdUVBQUEKRWdCMGFHbHpBQUlB
QmdBQThnQUFBQ0FBQUFBQUFBQUFBQUFBQUFRQUFBQllEZ0FBQVFBQUFCUUFBQUFBQUFBQVN3QUFn
QXdBQUFCTwpBQUFBQndCWUFBQUFUZ0FBQUFzQVhBQUFBRTRBQUFBS0FMQUFBQUJPQUFBQUN3QzBB
QUFBVGdBQUFBb0FpMEVJMGVna0FjTUVBQUFBCjlRQUFBQ1FBQUFBQUFBQUFBQUFBQUFnQUFBQUFB
QUFBQUFBQUFBQUFBQUFYSndBQUFBQUFBQVFBQUFEeEFBQUFjZ0FBQUQ4QUVCRUEKQUFBQUFBQUFB
QUFBQUFBSUFBQUFBQUFBQUFjQUFBQTVFQUFBQUFBQUFBQUFBRTFsWkdsaFZVbEZiR1Z0Wlc1ME9q
cHBjMUJ5WlhOegpaV1FBSEFBU0VBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQ2dBQURR
QUdFUzRRQUFBU0FIUm9hWE1BQWdBR0FBQUE4Z0FBCkFDQUFBQUFBQUFBQUFBQUFBQWdBQUFCWURn
QUFBUUFBQUJRQUFBQUFBQUFBVFFBQWdBd0FBQUJUQUFBQUJ3QllBQUFBVXdBQUFBc0EKWEFBQUFG
TUFBQUFLQUxRQUFBQlRBQUFBQ3dDNEFBQUFVd0FBQUFvQTlrUWtCQUZXaS9ISEJnQUFBQUIwQ1Zi
b0FBQUFBSVBFQkl2RwpYc0lFQUFvQUFBQXlBQUFBQmdBU0FBQUFXUUFBQUJRQUJBQUFBUFVBQUFC
RUFBQUFBQUFBQUFBQUFBQWZBQUFBQUFBQUFBUUFBQUFBCkFBQUFGeWNBQUFnQUFBQUVBQUFBQmdB
QUFCWUFBQUFBQUFBQUJBQUFBQUFBQUFBWEp3QUFBZ0FFQUFBQUFBRHhBQUFBaFFBQUFGSUEKRUJF
QUFBQUFBQUFBQUFBQUFBQWZBQUFBQ0FBQUFCd0FBQUJFRUFBQUFBQUFBQUFBQUUxbFpHbGhWVWxG
YkdWdFpXNTBPanBnYzJOaApiR0Z5SUdSbGJHVjBhVzVuSUdSbGMzUnlkV04wYjNJbkFCd0FFaEFB
QUFBQUFBQUFBQUFBQUFBRUFBQUFBQUFBQUFBQUlBSUFBQTBBCkJoRWpFQUFBRWdCMGFHbHpBQUlB
QmdBQUFBQU1BQUFBTXdBQUFBY0FlQUFBQURNQUFBQUxBSHdBQUFBekFBQUFDZ0RkUVJEREJBQUEK
QVBVQUFBQWtBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFGeWNBQUFBQUFBQUVB
QUFBOFFBQUFIb0FBQUJIQUJBUgpBQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUFEQUFBQVVCQUFB
QUFBQUFBQUFBQk5aV1JwWVZWSlZHbHRaV3hwYm1WVGJHbGtaWEk2Ck9uUnBiV1ZNYjJGa1pXUUFI
QUFTRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdDZ0FBRFFBR0VVOFFBQUFTQUhSb2FY
TUEKQWdBR0FBQUE4Z0FBQUNBQUFBQUFBQUFBQUFBQUFBUUFBQUJZRGdBQUFRQUFBQlFBQUFBQUFB
QUFYQUFBZ0F3QUFBQmVBQUFBQndCWQpBQUFBWGdBQUFBc0FYQUFBQUY0QUFBQUtBTHdBQUFCZUFB
QUFDd0RBQUFBQVhnQUFBQW9BM1VFWXd3UUFBQUQxQUFBQUpBQUFBQUFBCkFBQUFBQUFBQkFBQUFB
QUFBQUFBQUFBQUFBQUFBQmNuQUFBQUFBQUFCQUFBQVBFQUFBQjRBQUFBUlFBUUVRQUFBQUFBQUFB
QUFBQUEKQUFRQUFBQUFBQUFBQXdBQUFGQVFBQUFBQUFBQUFBQUFUV1ZrYVdGVlNWUnBiV1ZzYVc1
bFUyeHBaR1Z5T2pwa2RYSmhkR2x2YmdBYwpBQklRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFDQUtBQUFOQUFZUlR4QUFBQklBZEdocGN3QUNBQVlBOGdBQUFDQUFBQUFBCkFBQUFBQUFBQUFR
QUFBQllEZ0FBQVFBQUFCUUFBQUFBQUFBQVh3QUFnQXdBQUFCakFBQUFCd0JZQUFBQVl3QUFBQXNB
WEFBQUFHTUEKQUFBS0FMZ0FBQUJqQUFBQUN3QzhBQUFBWXdBQUFBb0EyZTdjVVJqZjRQYkVSSHNJ
M2RqZFFSRGNjUmpEQkFBQUFQVUFBQUFrQUFBQQpBQUFBQUFBQUFBQVZBQUFBQUFBQUFBQUFBQUFB
QUFBQUZ5Y0FBQUFBQUFBRUFBQUE4UUFBQUg0QUFBQkxBQkFSQUFBQUFBQUFBQUFBCkFBQUFGUUFB
QUFBQUFBQVVBQUFBVUJBQUFBQUFBQUFBQUFCTlpXUnBZVlZKVkdsdFpXeHBibVZUYkdsa1pYSTZP
bVp5WVdOMGFXOXUKVEc5aFpHVmtBQndBRWhBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJ
QW9BQUEwQUJoRlBFQUFBRWdCMGFHbHpBQUlBQmdBQQpBUElBQUFBZ0FBQUFBQUFBQUFBQUFBQVZB
QUFBV0E0QUFBRUFBQUFVQUFBQUFBQUFBR0VBQUlBTUFBQUFhQUFBQUFjQVdBQUFBR2dBCkFBQUxB
RndBQUFCb0FBQUFDZ0RBQUFBQWFBQUFBQXNBeEFBQUFHZ0FBQUFLQUFBQUFBQUFBQUFBMlVRa0JJ
UHNDTjBjSk9nQUFBQUEKMlZ3a0RJUEVDTmxFSkFUREN3QUFBSEVBQUFBVUFBUUFBQUQxQUFBQUpB
QUFBQUFBQUFBQUFBQUFHd0FBQUFBQUFBQUVBQUFBQUFBQQpBQmNuQUFBQUFBQUFCQUFBQVBFQUFB
QmZBQUFBTEFBUUVRQUFBQUFBQUFBQUFBQUFBQnNBQUFBQUFBQUFHZ0FBQUxvUUFBQUFBQUFBCkFB
QUFabXh2YjNKbUFCd0FFaEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBb0FBQTBBQ3hF
RUFBQUFRQUFBQUY5WUFBSUEKQmdBQThnQUFBQ0FBQUFBQUFBQUFBQUFBQUJzQUFBQ0lDd0FBQVFB
QUFCUUFBQUFBQUFBQWxRRUFnQXdBQUFCd0FBQUFCd0JZQUFBQQpjQUFBQUFzQVhBQUFBSEFBQUFB
S0FLQUFBQUJ3QUFBQUN3Q2tBQUFBY0FBQUFBb0EyVVFrQklQc0NOMGNKT2dBQUFBQTJWd2tESVBF
CkNObEVKQVREQ3dBQUFIRUFBQUFVQUFRQUFBRDFBQUFBSkFBQUFBQUFBQUFBQUFBQUd3QUFBQUFB
QUFBRUFBQUFBQUFBQUJjbkFBQUEKQUFBQUJBQUFBUEVBQUFCakFBQUFMUUFQRVFBQUFBQUFBQUFB
QUFBQUFCc0FBQUFBQUFBQUdnQUFBTG9RQUFBQUFBQUFBQUFBUTBkRwpiRzl2Y2dBY0FCSVFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBS0FBQVFBQXNSQkFBQUFFQUFBQUIyWVd4MVpRQUNB
QVlBCkFQSUFBQUF3QUFBQUFBQUFBQUFBQUFBYkFBQUFZQU1BQUFNQUFBQWtBQUFBQUFBQUFCNEFB
SUFBQUFBQUlBQUFnQm9BQUFBa0FBQ0EKREFBQUFIWUFBQUFIQUZnQUFBQjJBQUFBQ3dCY0FBQUFk
Z0FBQUFvQXBBQUFBSFlBQUFBTEFLZ0FBQUIyQUFBQUNnQ2hBQUFBQUlYQQpkV2FoQUFBQUFJc0lp
eFVBQUFBQWl3SlRWbGRSYUdVREFBQm9BQUFBQUZEL0ZRQUFBQUNMK0ZmL0ZRQUFBQUJxQUdvQWkv
QnFBRmIvCkZRQUFBQUNMSFFBQUFBQ0R4Q1NGOXFNQUFBQUFkQVpXLzlPRHhBU0YvM1FHVi8vVGc4
UUVvUUFBQUFCZlhsdkRBUUFBQUlRQUFBQUcKQUFvQUFBQ0JBQUFBQmdBU0FBQUFnQUFBQUFZQUln
QUFBQXdBQUFBR0FDa0FBQUIvQUFBQUJnQXlBQUFBZmdBQUFBWUFRUUFBQUgwQQpBQUFHQUVjQUFB
QjhBQUFBQmdCUkFBQUFoQUFBQUFZQWFBQUFBSVFBQUFBR0FBUUFBQUQxQUFBQWhBQUFBQUFBQUFB
QUFBQUFjQUFBCkFBQUFBQUFBQUFBQUFBQUFBQmNuQUFBQUFBQUFCQUFBQUJrQUFBQldBQUFBQUFB
QUFBQUFBQUFBQUFBQWJpY0FBQUFBQkFBQUFBQUEKR2dBQUFGUUFBQUFBQUFBQUFBQUFBQUFBQUFC
dUp3QUFBQUFJQUFBQUFBQWJBQUFBVWdBQUFBQUFBQUFBQUFBQUFBQUFBRzRuQUFBQQpBQXdBQUFB
QUFQRUFBQURGQUFBQVBRQVBFUUFBQUFBQUFBQUFBQUFBQUhBQUFBQUFBQUFBYndBQUFHb1NBQUFB
QUFBQUFBQUFiV1ZrCmFXRlFUa2RHZFd4c2MyTnlaV1Z1U1cxaFoyVUFIQUFTRUFBQUFBQUFBQUFB
QUFBQUFBd0FBQUFBQUFBQUFBQUFBZ0FBRWdBTUVZQVEKQUFBQUFBQUFBQUJwYldGblpRQU9BRGtS
SndBQUFBQUFBQUJVRWdBQURnQTVFVEFBQUFBQUFBQUFWaElBQUE0QU9SRS9BQUFBQUFBQQpBRndT
QUFBT0FEa1JXQUFBQUFBQUFBQmVFZ0FBRGdBNUVXSUFBQUFBQUFBQVhoSUFBQUlBQmdBQUFBRHlB
QUFBSUFBQUFBQUFBQUFBCkFBQUFjQUFBQUFnRUFBQUJBQUFBRkFBQUFBQUFBQUFqQUFDQURBQUFB
SHNBQUFBSEFMZ0FBQUI3QUFBQUN3QzhBQUFBZXdBQUFBb0EKL1FBQUFJUUFBQUFMQUFFQkFBQ0VB
QUFBQ2dBTkFRQUFld0FBQUFzQUVRRUFBSHNBQUFBS0FCMEJBQUI3QUFBQUN3QWhBUUFBZXdBQQpB
QW9BTFFFQUFIc0FBQUFMQURFQkFBQjdBQUFBQ2dBOUFRQUFld0FBQUFzQVFRRUFBSHNBQUFBS0FF
MEJBQUI3QUFBQUN3QlJBUUFBCmV3QUFBQW9BYUFFQUFIc0FBQUFMQUd3QkFBQjdBQUFBQ2dDaEFB
QUFBSVhBZFdhaEFBQUFBSXNJaXhVQUFBQUFpd0pUVmxkUmFJd0QKQUFCb0FBQUFBRkQvRlFBQUFB
Q0wrRmYvRlFBQUFBQnFBR29BaS9CcUFGYi9GUUFBQUFDTEhRQUFBQUNEeENTRjlxTUFBQUFBZEFa
VwovOU9EeEFTRi8zUUdWLy9UZzhRRW9RQUFBQUJmWGx2REFRQUFBSXdBQUFBR0FBb0FBQUNCQUFB
QUJnQVNBQUFBZ0FBQUFBWUFJZ0FBCkFBMEFBQUFHQUNrQUFBQi9BQUFBQmdBeUFBQUFmZ0FBQUFZ
QVFRQUFBSDBBQUFBR0FFY0FBQUI4QUFBQUJnQlJBQUFBakFBQUFBWUEKYUFBQUFJd0FBQUFHQUFR
QUFBRDFBQUFBaEFBQUFBQUFBQUFBQUFBQWNBQUFBQUFBQUFBQUFBQUFBQUFBQUJjbkFBQUFBQUFB
QkFBQQpBQmtBQUFCV0FBQUFBQUFBQUFBQUFBQUFBQUFBYmljQUFBQUFCQUFBQUFBQUdnQUFBRlFB
QUFBQUFBQUFBQUFBQUFBQUFBQnVKd0FBCkFBQUlBQUFBQUFBYkFBQUFVZ0FBQUFBQUFBQUFBQUFB
QUFBQUFHNG5BQUFBQUF3QUFBQUFBUEVBQUFETUFBQUFSQUFQRVFBQUFBQUEKQUFBQUFBQUFBSEFB
QUFBQUFBQUFid0FBQUdvU0FBQUFBQUFBQUFBQWJXVmthV0ZRVGtkR2RXeHNjMk55WldWdVVISmxj
M05sWkVsdApZV2RsQUJ3QUVoQUFBQUFBQUFBQUFBQUFBQUFNQUFBQUFBQUFBQUFBQUFJQUFCSUFE
QkdBRUFBQUFBQUFBQUFBYVcxaFoyVUFEZ0E1CkVTY0FBQUFBQUFBQVZCSUFBQTRBT1JFd0FBQUFB
QUFBQUZZU0FBQU9BRGtSUHdBQUFBQUFBQUJjRWdBQURnQTVFVmdBQUFBQUFBQUEKWGhJQUFBNEFP
UkZpQUFBQUFBQUFBRjRTQUFBQ0FBWUE4Z0FBQUNBQUFBQUFBQUFBQUFBQUFIQUFBQUFJQkFBQUFR
QUFBQlFBQUFBQQpBQUFBSkFBQWdBd0FBQUNKQUFBQUJ3QzRBQUFBaVFBQUFBc0F2QUFBQUlrQUFB
QUtBQVFCQUFDTUFBQUFDd0FJQVFBQWpBQUFBQW9BCkZBRUFBSWtBQUFBTEFCZ0JBQUNKQUFBQUNn
QWtBUUFBaVFBQUFBc0FLQUVBQUlrQUFBQUtBRFFCQUFDSkFBQUFDd0E0QVFBQWlRQUEKQUFvQVJB
RUFBSWtBQUFBTEFFZ0JBQUNKQUFBQUNnQlVBUUFBaVFBQUFBc0FXQUVBQUlrQUFBQUtBR3dCQUFD
SkFBQUFDd0J3QVFBQQppUUFBQUFvQW9RQUFBQUNGd0hWbW9RQUFBQUNMQ0lzVkFBQUFBSXNDVTFa
WFVXaEVBd0FBYUFBQUFBQlEveFVBQUFBQWkvaFgveFVBCkFBQUFhZ0JxQUl2d2FnQlcveFVBQUFB
QWl4MEFBQUFBZzhRa2hmYWpBQUFBQUhRR1Z2L1RnOFFFaGY5MEJsZi8wNFBFQktFQUFBQUEKWDE1
Ynd3RUFBQUNVQUFBQUJnQUtBQUFBZ1FBQUFBWUFFZ0FBQUlBQUFBQUdBQ0lBQUFBT0FBQUFCZ0Fw
QUFBQWZ3QUFBQVlBTWdBQQpBSDRBQUFBR0FFRUFBQUI5QUFBQUJnQkhBQUFBZkFBQUFBWUFVUUFB
QUpRQUFBQUdBR2dBQUFDVUFBQUFCZ0FFQUFBQTlRQUFBSVFBCkFBQUFBQUFBQUFBQUFIQUFBQUFB
QUFBQUFBQUFBQUFBQUFBWEp3QUFBQUFBQUFRQUFBQVpBQUFBVmdBQUFBQUFBQUFBQUFBQUFBQUEK
QUc0bkFBQUFBQVFBQUFBQUFCb0FBQUJVQUFBQUFBQUFBQUFBQUFBQUFBQUFiaWNBQUFBQUNBQUFB
QUFBR3dBQUFGSUFBQUFBQUFBQQpBQUFBQUFBQUFBQnVKd0FBQUFBTUFBQUFBQUR4QUFBQXZ3QUFB
RGNBRHhFQUFBQUFBQUFBQUFBQUFBQndBQUFBQUFBQUFHOEFBQUJxCkVnQUFBQUFBQUFBQUFHMWxa
R2xoVUU1SFRYVjBaVWx0WVdkbEFCd0FFaEFBQUFBQUFBQUFBQUFBQUFBTUFBQUFBQUFBQUFBQUFB
SUEKQUJJQURCR0FFQUFBQUFBQUFBQUFhVzFoWjJVQURnQTVFU2NBQUFBQUFBQUFWQklBQUE0QU9S
RXdBQUFBQUFBQUFGWVNBQUFPQURrUgpQd0FBQUFBQUFBQmNFZ0FBRGdBNUVWZ0FBQUFBQUFBQVho
SUFBQTRBT1JGaUFBQUFBQUFBQUY0U0FBQUNBQVlBQVBJQUFBQWdBQUFBCkFBQUFBQUFBQUFCd0FB
QUFDQVFBQUFFQUFBQVVBQUFBQUFBQUFDVUFBSUFNQUFBQWtRQUFBQWNBdUFBQUFKRUFBQUFMQUx3
QUFBQ1IKQUFBQUNnRDNBQUFBbEFBQUFBc0Erd0FBQUpRQUFBQUtBQWNCQUFDUkFBQUFDd0FMQVFB
QWtRQUFBQW9BRndFQUFKRUFBQUFMQUJzQgpBQUNSQUFBQUNnQW5BUUFBa1FBQUFBc0FLd0VBQUpF
QUFBQUtBRGNCQUFDUkFBQUFDd0E3QVFBQWtRQUFBQW9BUndFQUFKRUFBQUFMCkFFc0JBQUNSQUFB
QUNnQmdBUUFBa1FBQUFBc0FaQUVBQUpFQUFBQUtBS0VBQUFBQWhjQjFacUVBQUFBQWl3aUxGUUFB
QUFDTEFsTlcKVjFGb2RRTUFBR2dBQUFBQVVQOFZBQUFBQUl2NFYvOFZBQUFBQUdvQWFnQ0w4R29B
VnY4VkFBQUFBSXNkQUFBQUFJUEVKSVgyb3dBQQpBQUIwQmxiLzA0UEVCSVgvZEFaWC85T0R4QVNo
QUFBQUFGOWVXOE1CQUFBQW5BQUFBQVlBQ2dBQUFJRUFBQUFHQUJJQUFBQ0FBQUFBCkJnQWlBQUFB
RHdBQUFBWUFLUUFBQUg4QUFBQUdBRElBQUFCK0FBQUFCZ0JCQUFBQWZRQUFBQVlBUndBQUFId0FB
QUFHQUZFQUFBQ2MKQUFBQUJnQm9BQUFBbkFBQUFBWUFCQUFBQVBVQUFBQ0VBQUFBQUFBQUFBQUFB
QUJ3QUFBQUFBQUFBQUFBQUFBQUFBQUFGeWNBQUFBQQpBQUFFQUFBQUdRQUFBRllBQUFBQUFBQUFB
QUFBQUFBQUFBQnVKd0FBQUFBRUFBQUFBQUFhQUFBQVZBQUFBQUFBQUFBQUFBQUFBQUFBCkFHNG5B
QUFBQUFnQUFBQUFBQnNBQUFCU0FBQUFBQUFBQUFBQUFBQUFBQUFBYmljQUFBQUFEQUFBQUFBQThR
QUFBTVlBQUFBK0FBOFIKQUFBQUFBQUFBQUFBQUFBQWNBQUFBQUFBQUFCdkFBQUFhaElBQUFBQUFB
QUFBQUJ0WldScFlWQk9SMDExZEdWUWNtVnpjMlZrU1cxaApaMlVBSEFBU0VBQUFBQUFBQUFBQUFB
QUFBQXdBQUFBQUFBQUFBQUFBQWdBQUVnQU1FWUFRQUFBQUFBQUFBQUJwYldGblpRQU9BRGtSCkp3
QUFBQUFBQUFCVUVnQUFEZ0E1RVRBQUFBQUFBQUFBVmhJQUFBNEFPUkUvQUFBQUFBQUFBRndTQUFB
T0FEa1JXQUFBQUFBQUFBQmUKRWdBQURnQTVFV0lBQUFBQUFBQUFYaElBQUFJQUJnQUFBUElBQUFB
Z0FBQUFBQUFBQUFBQUFBQndBQUFBQ0FRQUFBRUFBQUFVQUFBQQpBQUFBQUNZQUFJQU1BQUFBbVFB
QUFBY0F1QUFBQUprQUFBQUxBTHdBQUFDWkFBQUFDZ0QrQUFBQW5BQUFBQXNBQWdFQUFKd0FBQUFL
CkFBNEJBQUNaQUFBQUN3QVNBUUFBbVFBQUFBb0FIZ0VBQUprQUFBQUxBQ0lCQUFDWkFBQUFDZ0F1
QVFBQW1RQUFBQXNBTWdFQUFKa0EKQUFBS0FENEJBQUNaQUFBQUN3QkNBUUFBbVFBQUFBb0FUZ0VB
QUprQUFBQUxBRklCQUFDWkFBQUFDZ0JvQVFBQW1RQUFBQXNBYkFFQQpBSmtBQUFBS0FLRUFBQUFB
aGNCMVpxRUFBQUFBaXdpTEZRQUFBQUNMQWxOV1YxRm9EUU1BQUdnQUFBQUFVUDhWQUFBQUFJdjRW
LzhWCkFBQUFBR29BYWdDTDhHb0FWdjhWQUFBQUFJc2RBQUFBQUlQRUpJWDJvd0FBQUFCMEJsYi8w
NFBFQklYL2RBWlgvOU9EeEFTaEFBQUEKQUY5ZVc4TUJBQUFBcEFBQUFBWUFDZ0FBQUlFQUFBQUdB
QklBQUFDQUFBQUFCZ0FpQUFBQUVBQUFBQVlBS1FBQUFIOEFBQUFHQURJQQpBQUIrQUFBQUJnQkJB
QUFBZlFBQUFBWUFSd0FBQUh3QUFBQUdBRkVBQUFDa0FBQUFCZ0JvQUFBQXBBQUFBQVlBQkFBQUFQ
VUFBQUNFCkFBQUFBQUFBQUFBQUFBQndBQUFBQUFBQUFBQUFBQUFBQUFBQUZ5Y0FBQUFBQUFBRUFB
QUFHUUFBQUZZQUFBQUFBQUFBQUFBQUFBQUEKQUFCdUp3QUFBQUFFQUFBQUFBQWFBQUFBVkFBQUFB
QUFBQUFBQUFBQUFBQUFBRzRuQUFBQUFBZ0FBQUFBQUJzQUFBQlNBQUFBQUFBQQpBQUFBQUFBQUFB
QUFiaWNBQUFBQURBQUFBQUFBOFFBQUFNQUFBQUE0QUE4UkFBQUFBQUFBQUFBQUFBQUFjQUFBQUFB
QUFBQnZBQUFBCmFoSUFBQUFBQUFBQUFBQnRaV1JwWVZCT1IxQmhkWE5sU1cxaFoyVUFIQUFTRUFB
QUFBQUFBQUFBQUFBQUFBd0FBQUFBQUFBQUFBQUEKQWdBQUVnQU1FWUFRQUFBQUFBQUFBQUJwYldG
blpRQU9BRGtSSndBQUFBQUFBQUJVRWdBQURnQTVFVEFBQUFBQUFBQUFWaElBQUE0QQpPUkUvQUFB
QUFBQUFBRndTQUFBT0FEa1JXQUFBQUFBQUFBQmVFZ0FBRGdBNUVXSUFBQUFBQUFBQVhoSUFBQUlB
QmdEeUFBQUFJQUFBCkFBQUFBQUFBQUFBQWNBQUFBQWdFQUFBQkFBQUFGQUFBQUFBQUFBQW5BQUNB
REFBQUFLRUFBQUFIQUxnQUFBQ2hBQUFBQ3dDOEFBQUEKb1FBQUFBb0ErQUFBQUtRQUFBQUxBUHdB
QUFDa0FBQUFDZ0FJQVFBQW9RQUFBQXNBREFFQUFLRUFBQUFLQUJnQkFBQ2hBQUFBQ3dBYwpBUUFB
b1FBQUFBb0FLQUVBQUtFQUFBQUxBQ3dCQUFDaEFBQUFDZ0E0QVFBQW9RQUFBQXNBUEFFQUFLRUFB
QUFLQUVnQkFBQ2hBQUFBCkN3Qk1BUUFBb1FBQUFBb0FZQUVBQUtFQUFBQUxBR1FCQUFDaEFBQUFD
Z0NoQUFBQUFJWEFkV2FoQUFBQUFJc0lpeFVBQUFBQWl3SlQKVmxkUmFDVURBQUJvQUFBQUFGRC9G
UUFBQUFDTCtGZi9GUUFBQUFCcUFHb0FpL0JxQUZiL0ZRQUFBQUNMSFFBQUFBQ0R4Q1NGOXFNQQpB
QUFBZEFaVy85T0R4QVNGLzNRR1YvL1RnOFFFb1FBQUFBQmZYbHZEQVFBQUFLd0FBQUFHQUFvQUFB
Q0JBQUFBQmdBU0FBQUFnQUFBCkFBWUFJZ0FBQUJFQUFBQUdBQ2tBQUFCL0FBQUFCZ0F5QUFBQWZn
QUFBQVlBUVFBQUFIMEFBQUFHQUVjQUFBQjhBQUFBQmdCUkFBQUEKckFBQUFBWUFhQUFBQUt3QUFB
QUdBQVFBQUFEMUFBQUFoQUFBQUFBQUFBQUFBQUFBY0FBQUFBQUFBQUFBQUFBQUFBQUFBQmNuQUFB
QQpBQUFBQkFBQUFCa0FBQUJXQUFBQUFBQUFBQUFBQUFBQUFBQUFiaWNBQUFBQUJBQUFBQUFBR2dB
QUFGUUFBQUFBQUFBQUFBQUFBQUFBCkFBQnVKd0FBQUFBSUFBQUFBQUFiQUFBQVVnQUFBQUFBQUFB
QUFBQUFBQUFBQUc0bkFBQUFBQXdBQUFBQUFQRUFBQURIQUFBQVB3QVAKRVFBQUFBQUFBQUFBQUFB
QUFIQUFBQUFBQUFBQWJ3QUFBR29TQUFBQUFBQUFBQUFBYldWa2FXRlFUa2RRWVhWelpWQnlaWE56
WldSSgpiV0ZuWlFBY0FCSVFBQUFBQUFBQUFBQUFBQUFBREFBQUFBQUFBQUFBQUFBQ0FBQVNBQXdS
Z0JBQUFBQUFBQUFBQUdsdFlXZGxBQTRBCk9SRW5BQUFBQUFBQUFGUVNBQUFPQURrUk1BQUFBQUFB
QUFCV0VnQUFEZ0E1RVQ4QUFBQUFBQUFBWEJJQUFBNEFPUkZZQUFBQUFBQUEKQUY0U0FBQU9BRGtS
WWdBQUFBQUFBQUJlRWdBQUFnQUdBQUR5QUFBQUlBQUFBQUFBQUFBQUFBQUFjQUFBQUFnRUFBQUJB
QUFBRkFBQQpBQUFBQUFBb0FBQ0FEQUFBQUtrQUFBQUhBTGdBQUFDcEFBQUFDd0M4QUFBQXFRQUFB
QW9BL3dBQUFLd0FBQUFMQUFNQkFBQ3NBQUFBCkNnQVBBUUFBcVFBQUFBc0FFd0VBQUtrQUFBQUtB
QjhCQUFDcEFBQUFDd0FqQVFBQXFRQUFBQW9BTHdFQUFLa0FBQUFMQURNQkFBQ3AKQUFBQUNnQS9B
UUFBcVFBQUFBc0FRd0VBQUtrQUFBQUtBRThCQUFDcEFBQUFDd0JUQVFBQXFRQUFBQW9BYUFFQUFL
a0FBQUFMQUd3QgpBQUNwQUFBQUNnQ2hBQUFBQUlYQWRXYWhBQUFBQUlzSWl4VUFBQUFBaXdKVFZs
ZFJhRDBEQUFCb0FBQUFBRkQvRlFBQUFBQ0wrRmYvCkZRQUFBQUJxQUdvQWkvQnFBRmIvRlFBQUFB
Q0xIUUFBQUFDRHhDU0Y5cU1BQUFBQWRBWlcvOU9EeEFTRi8zUUdWLy9UZzhRRW9RQUEKQUFCZlhs
dkRBUUFBQUxRQUFBQUdBQW9BQUFDQkFBQUFCZ0FTQUFBQWdBQUFBQVlBSWdBQUFCSUFBQUFHQUNr
QUFBQi9BQUFBQmdBeQpBQUFBZmdBQUFBWUFRUUFBQUgwQUFBQUdBRWNBQUFCOEFBQUFCZ0JSQUFB
QXRBQUFBQVlBYUFBQUFMUUFBQUFHQUFRQUFBRDFBQUFBCmhBQUFBQUFBQUFBQUFBQUFjQUFBQUFB
QUFBQUFBQUFBQUFBQUFCY25BQUFBQUFBQUJBQUFBQmtBQUFCV0FBQUFBQUFBQUFBQUFBQUEKQUFB
QWJpY0FBQUFBQkFBQUFBQUFHZ0FBQUZRQUFBQUFBQUFBQUFBQUFBQUFBQUJ1SndBQUFBQUlBQUFB
QUFBYkFBQUFVZ0FBQUFBQQpBQUFBQUFBQUFBQUFBRzRuQUFBQUFBd0FBQUFBQVBFQUFBQy9BQUFB
TndBUEVRQUFBQUFBQUFBQUFBQUFBSEFBQUFBQUFBQUFid0FBCkFHb1NBQUFBQUFBQUFBQUFiV1Zr
YVdGUVRrZFFiR0Y1U1cxaFoyVUFIQUFTRUFBQUFBQUFBQUFBQUFBQUFBd0FBQUFBQUFBQUFBQUEK
QWdBQUVnQU1FWUFRQUFBQUFBQUFBQUJwYldGblpRQU9BRGtSSndBQUFBQUFBQUJVRWdBQURnQTVF
VEFBQUFBQUFBQUFWaElBQUE0QQpPUkUvQUFBQUFBQUFBRndTQUFBT0FEa1JXQUFBQUFBQUFBQmVF
Z0FBRGdBNUVXSUFBQUFBQUFBQVhoSUFBQUlBQmdBQThnQUFBQ0FBCkFBQUFBQUFBQUFBQUFIQUFB
QUFJQkFBQUFRQUFBQlFBQUFBQUFBQUFLUUFBZ0F3QUFBQ3hBQUFBQndDNEFBQUFzUUFBQUFzQXZB
QUEKQUxFQUFBQUtBUGNBQUFDMEFBQUFDd0Q3QUFBQXRBQUFBQW9BQndFQUFMRUFBQUFMQUFzQkFB
Q3hBQUFBQ2dBWEFRQUFzUUFBQUFzQQpHd0VBQUxFQUFBQUtBQ2NCQUFDeEFBQUFDd0FyQVFBQXNR
QUFBQW9BTndFQUFMRUFBQUFMQURzQkFBQ3hBQUFBQ2dCSEFRQUFzUUFBCkFBc0FTd0VBQUxFQUFB
QUtBR0FCQUFDeEFBQUFDd0JrQVFBQXNRQUFBQW9Bb1FBQUFBQ0Z3SFZtb1FBQUFBQ0xDSXNWQUFB
QUFJc0MKVTFaWFVXaGtBd0FBYUFBQUFBQlEveFVBQUFBQWkvaFgveFVBQUFBQWFnQnFBSXZ3YWdC
Vy94VUFBQUFBaXgwQUFBQUFnOFFraGZhagpBQUFBQUhRR1Z2L1RnOFFFaGY5MEJsZi8wNFBFQktF
QUFBQUFYMTVid3dFQUFBQzhBQUFBQmdBS0FBQUFnUUFBQUFZQUVnQUFBSUFBCkFBQUdBQ0lBQUFB
VEFBQUFCZ0FwQUFBQWZ3QUFBQVlBTWdBQUFINEFBQUFHQUVFQUFBQjlBQUFBQmdCSEFBQUFmQUFB
QUFZQVVRQUEKQUx3QUFBQUdBR2dBQUFDOEFBQUFCZ0FFQUFBQTlRQUFBSVFBQUFBQUFBQUFBQUFB
QUhBQUFBQUFBQUFBQUFBQUFBQUFBQUFYSndBQQpBQUFBQUFRQUFBQVpBQUFBVmdBQUFBQUFBQUFB
QUFBQUFBQUFBRzRuQUFBQUFBUUFBQUFBQUJvQUFBQlVBQUFBQUFBQUFBQUFBQUFBCkFBQUFiaWNB
QUFBQUNBQUFBQUFBR3dBQUFGSUFBQUFBQUFBQUFBQUFBQUFBQUFCdUp3QUFBQUFNQUFBQUFBRHhB
QUFBeGdBQUFENEEKRHhFQUFBQUFBQUFBQUFBQUFBQndBQUFBQUFBQUFHOEFBQUJxRWdBQUFBQUFB
QUFBQUcxbFpHbGhVRTVIVUd4aGVWQnlaWE56WldSSgpiV0ZuWlFBY0FCSVFBQUFBQUFBQUFBQUFB
QUFBREFBQUFBQUFBQUFBQUFBQ0FBQVNBQXdSZ0JBQUFBQUFBQUFBQUdsdFlXZGxBQTRBCk9SRW5B
QUFBQUFBQUFGUVNBQUFPQURrUk1BQUFBQUFBQUFCV0VnQUFEZ0E1RVQ4QUFBQUFBQUFBWEJJQUFB
NEFPUkZZQUFBQUFBQUEKQUY0U0FBQU9BRGtSWWdBQUFBQUFBQUJlRWdBQUFnQUdBQUFBOGdBQUFD
QUFBQUFBQUFBQUFBQUFBSEFBQUFBSUJBQUFBUUFBQUJRQQpBQUFBQUFBQUtnQUFnQXdBQUFDNUFB
QUFCd0M0QUFBQXVRQUFBQXNBdkFBQUFMa0FBQUFLQVA0QUFBQzhBQUFBQ3dBQ0FRQUF2QUFBCkFB
b0FEZ0VBQUxrQUFBQUxBQklCQUFDNUFBQUFDZ0FlQVFBQXVRQUFBQXNBSWdFQUFMa0FBQUFLQUM0
QkFBQzVBQUFBQ3dBeUFRQUEKdVFBQUFBb0FQZ0VBQUxrQUFBQUxBRUlCQUFDNUFBQUFDZ0JPQVFB
QXVRQUFBQXNBVWdFQUFMa0FBQUFLQUdnQkFBQzVBQUFBQ3dCcwpBUUFBdVFBQUFBb0FvUUFBQUFD
RndIVm1vUUFBQUFDTENJc1ZBQUFBQUlzQ1UxWlhVV2cxQXdBQWFBQUFBQUJRL3hVQUFBQUFpL2hY
Ci94VUFBQUFBYWdCcUFJdndhZ0JXL3hVQUFBQUFpeDBBQUFBQWc4UWtoZmFqQUFBQUFIUUdWdi9U
ZzhRRWhmOTBCbGYvMDRQRUJLRUEKQUFBQVgxNWJ3d0VBQUFERUFBQUFCZ0FLQUFBQWdRQUFBQVlB
RWdBQUFJQUFBQUFHQUNJQUFBQVVBQUFBQmdBcEFBQUFmd0FBQUFZQQpNZ0FBQUg0QUFBQUdBRUVB
QUFCOUFBQUFCZ0JIQUFBQWZBQUFBQVlBVVFBQUFNUUFBQUFHQUdnQUFBREVBQUFBQmdBRUFBQUE5
UUFBCkFJUUFBQUFBQUFBQUFBQUFBSEFBQUFBQUFBQUFBQUFBQUFBQUFBQVhKd0FBQUFBQUFBUUFB
QUFaQUFBQVZnQUFBQUFBQUFBQUFBQUEKQUFBQUFHNG5BQUFBQUFRQUFBQUFBQm9BQUFCVUFBQUFB
QUFBQUFBQUFBQUFBQUFBYmljQUFBQUFDQUFBQUFBQUd3QUFBRklBQUFBQQpBQUFBQUFBQUFBQUFB
QUJ1SndBQUFBQU1BQUFBQUFEeEFBQUF3UUFBQURrQUR4RUFBQUFBQUFBQUFBQUFBQUJ3QUFBQUFB
QUFBRzhBCkFBQnFFZ0FBQUFBQUFBQUFBRzFsWkdsaFVFNUhVbVYzYVc1a1NXMWhaMlVBSEFBU0VB
QUFBQUFBQUFBQUFBQUFBQXdBQUFBQUFBQUEKQUFBQUFnQUFFZ0FNRVlBUUFBQUFBQUFBQUFCcGJX
Rm5aUUFPQURrUkp3QUFBQUFBQUFCVUVnQUFEZ0E1RVRBQUFBQUFBQUFBVmhJQQpBQTRBT1JFL0FB
QUFBQUFBQUZ3U0FBQU9BRGtSV0FBQUFBQUFBQUJlRWdBQURnQTVFV0lBQUFBQUFBQUFYaElBQUFJ
QUJnQUFBQUR5CkFBQUFJQUFBQUFBQUFBQUFBQUFBY0FBQUFBZ0VBQUFCQUFBQUZBQUFBQUFBQUFB
ckFBQ0FEQUFBQU1FQUFBQUhBTGdBQUFEQkFBQUEKQ3dDOEFBQUF3UUFBQUFvQStRQUFBTVFBQUFB
TEFQMEFBQURFQUFBQUNnQUpBUUFBd1FBQUFBc0FEUUVBQU1FQUFBQUtBQmtCQUFEQgpBQUFBQ3dB
ZEFRQUF3UUFBQUFvQUtRRUFBTUVBQUFBTEFDMEJBQURCQUFBQUNnQTVBUUFBd1FBQUFBc0FQUUVB
QU1FQUFBQUtBRWtCCkFBREJBQUFBQ3dCTkFRQUF3UUFBQUFvQVpBRUFBTUVBQUFBTEFHZ0JBQURC
QUFBQUNnQ2hBQUFBQUlYQWRXYWhBQUFBQUlzSWl4VUEKQUFBQWl3SlRWbGRSYUU4REFBQm9BQUFB
QUZEL0ZRQUFBQUNMK0ZmL0ZRQUFBQUJxQUdvQWkvQnFBRmIvRlFBQUFBQ0xIUUFBQUFDRAp4Q1NG
OXFNQUFBQUFkQVpXLzlPRHhBU0YvM1FHVi8vVGc4UUVvUUFBQUFCZlhsdkRBUUFBQU13QUFBQUdB
QW9BQUFDQkFBQUFCZ0FTCkFBQUFnQUFBQUFZQUlnQUFBQlVBQUFBR0FDa0FBQUIvQUFBQUJnQXlB
QUFBZmdBQUFBWUFRUUFBQUgwQUFBQUdBRWNBQUFCOEFBQUEKQmdCUkFBQUF6QUFBQUFZQWFBQUFB
TXdBQUFBR0FBUUFBQUQxQUFBQWhBQUFBQUFBQUFBQUFBQUFjQUFBQUFBQUFBQUFBQUFBQUFBQQpB
QmNuQUFBQUFBQUFCQUFBQUJrQUFBQldBQUFBQUFBQUFBQUFBQUFBQUFBQWJpY0FBQUFBQkFBQUFB
QUFHZ0FBQUZRQUFBQUFBQUFBCkFBQUFBQUFBQUFCdUp3QUFBQUFJQUFBQUFBQWJBQUFBVWdBQUFB
QUFBQUFBQUFBQUFBQUFBRzRuQUFBQUFBd0FBQUFBQVBFQUFBREkKQUFBQVFBQVBFUUFBQUFBQUFB
QUFBQUFBQUhBQUFBQUFBQUFBYndBQUFHb1NBQUFBQUFBQUFBQUFiV1ZrYVdGUVRrZFNaWGRwYm1S
UQpjbVZ6YzJWa1NXMWhaMlVBSEFBU0VBQUFBQUFBQUFBQUFBQUFBQXdBQUFBQUFBQUFBQUFBQWdB
QUVnQU1FWUFRQUFBQUFBQUFBQUJwCmJXRm5aUUFPQURrUkp3QUFBQUFBQUFCVUVnQUFEZ0E1RVRB
QUFBQUFBQUFBVmhJQUFBNEFPUkUvQUFBQUFBQUFBRndTQUFBT0FEa1IKV0FBQUFBQUFBQUJlRWdB
QURnQTVFV0lBQUFBQUFBQUFYaElBQUFJQUJnRHlBQUFBSUFBQUFBQUFBQUFBQUFBQWNBQUFBQWdF
QUFBQgpBQUFBRkFBQUFBQUFBQUFzQUFDQURBQUFBTWtBQUFBSEFMZ0FBQURKQUFBQUN3QzhBQUFB
eVFBQUFBb0FBQUVBQU13QUFBQUxBQVFCCkFBRE1BQUFBQ2dBUUFRQUF5UUFBQUFzQUZBRUFBTWtB
QUFBS0FDQUJBQURKQUFBQUN3QWtBUUFBeVFBQUFBb0FNQUVBQU1rQUFBQUwKQURRQkFBREpBQUFB
Q2dCQUFRQUF5UUFBQUFzQVJBRUFBTWtBQUFBS0FGQUJBQURKQUFBQUN3QlVBUUFBeVFBQUFBb0Fh
QUVBQU1rQQpBQUFMQUd3QkFBREpBQUFBQ2dDaEFBQUFBSVhBZFdhaEFBQUFBSXNJaXhVQUFBQUFp
d0pUVmxkUmFDMERBQUJvQUFBQUFGRC9GUUFBCkFBQ0wrRmYvRlFBQUFBQnFBR29BaS9CcUFGYi9G
UUFBQUFDTEhRQUFBQUNEeENTRjlxTUFBQUFBZEFaVy85T0R4QVNGLzNRR1YvL1QKZzhRRW9RQUFB
QUJmWGx2REFRQUFBTlFBQUFBR0FBb0FBQUNCQUFBQUJnQVNBQUFBZ0FBQUFBWUFJZ0FBQUFnQUFB
QUdBQ2tBQUFCLwpBQUFBQmdBeUFBQUFmZ0FBQUFZQVFRQUFBSDBBQUFBR0FFY0FBQUI4QUFBQUJn
QlJBQUFBMUFBQUFBWUFhQUFBQU5RQUFBQUdBQVFBCkFBRDFBQUFBaEFBQUFBQUFBQUFBQUFBQWNB
QUFBQUFBQUFBQUFBQUFBQUFBQUJjbkFBQUFBQUFBQkFBQUFCa0FBQUJXQUFBQUFBQUEKQUFBQUFB
QUFBQUFBYmljQUFBQUFCQUFBQUFBQUdnQUFBRlFBQUFBQUFBQUFBQUFBQUFBQUFBQnVKd0FBQUFB
SUFBQUFBQUFiQUFBQQpVZ0FBQUFBQUFBQUFBQUFBQUFBQUFHNG5BQUFBQUF3QUFBQUFBUEVBQUFE
R0FBQUFQZ0FQRVFBQUFBQUFBQUFBQUFBQUFIQUFBQUFBCkFBQUFid0FBQUdvU0FBQUFBQUFBQUFB
QWJXVmthV0ZRVGtkR1lYTjBSbTl5ZDJGeVpFbHRZV2RsQUJ3QUVoQUFBQUFBQUFBQUFBQUEKQUFB
TUFBQUFBQUFBQUFBQUFBSUFBQklBREJHQUVBQUFBQUFBQUFBQWFXMWhaMlVBRGdBNUVTY0FBQUFB
QUFBQVZCSUFBQTRBT1JFdwpBQUFBQUFBQUFGWVNBQUFPQURrUlB3QUFBQUFBQUFCY0VnQUFEZ0E1
RVZnQUFBQUFBQUFBWGhJQUFBNEFPUkZpQUFBQUFBQUFBRjRTCkFBQUNBQVlBQUFEeUFBQUFJQUFB
QUFBQUFBQUFBQUFBY0FBQUFBZ0VBQUFCQUFBQUZBQUFBQUFBQUFBdEFBQ0FEQUFBQU5FQUFBQUgK
QUxnQUFBRFJBQUFBQ3dDOEFBQUEwUUFBQUFvQS9nQUFBTlFBQUFBTEFBSUJBQURVQUFBQUNnQU9B
UUFBMFFBQUFBc0FFZ0VBQU5FQQpBQUFLQUI0QkFBRFJBQUFBQ3dBaUFRQUEwUUFBQUFvQUxnRUFB
TkVBQUFBTEFESUJBQURSQUFBQUNnQStBUUFBMFFBQUFBc0FRZ0VBCkFORUFBQUFLQUU0QkFBRFJB
QUFBQ3dCU0FRQUEwUUFBQUFvQWFBRUFBTkVBQUFBTEFHd0JBQURSQUFBQUNnQ2hBQUFBQUlYQWRX
YWgKQUFBQUFJc0lpeFVBQUFBQWl3SlRWbGRSYUZFREFBQm9BQUFBQUZEL0ZRQUFBQUNMK0ZmL0ZR
QUFBQUJxQUdvQWkvQnFBRmIvRlFBQQpBQUNMSFFBQUFBQ0R4Q1NGOXFNQUFBQUFkQVpXLzlPRHhB
U0YvM1FHVi8vVGc4UUVvUUFBQUFCZlhsdkRBUUFBQU53QUFBQUdBQW9BCkFBQ0JBQUFBQmdBU0FB
QUFnQUFBQUFZQUlnQUFBQWtBQUFBR0FDa0FBQUIvQUFBQUJnQXlBQUFBZmdBQUFBWUFRUUFBQUgw
QUFBQUcKQUVjQUFBQjhBQUFBQmdCUkFBQUEzQUFBQUFZQWFBQUFBTndBQUFBR0FBUUFBQUQxQUFB
QWhBQUFBQUFBQUFBQUFBQUFjQUFBQUFBQQpBQUFBQUFBQUFBQUFBQmNuQUFBQUFBQUFCQUFBQUJr
QUFBQldBQUFBQUFBQUFBQUFBQUFBQUFBQWJpY0FBQUFBQkFBQUFBQUFHZ0FBCkFGUUFBQUFBQUFB
QUFBQUFBQUFBQUFCdUp3QUFBQUFJQUFBQUFBQWJBQUFBVWdBQUFBQUFBQUFBQUFBQUFBQUFBRzRu
QUFBQUFBd0EKQUFBQUFQRUFBQUROQUFBQVJRQVBFUUFBQUFBQUFBQUFBQUFBQUhBQUFBQUFBQUFB
YndBQUFHb1NBQUFBQUFBQUFBQUFiV1ZrYVdGUQpUa2RHWVhOMFJtOXlkMkZ5WkZCeVpYTnpaV1JK
YldGblpRQWNBQklRQUFBQUFBQUFBQUFBQUFBQURBQUFBQUFBQUFBQUFBQUNBQUFTCkFBd1JnQkFB
QUFBQUFBQUFBR2x0WVdkbEFBNEFPUkVuQUFBQUFBQUFBRlFTQUFBT0FEa1JNQUFBQUFBQUFBQldF
Z0FBRGdBNUVUOEEKQUFBQUFBQUFYQklBQUE0QU9SRllBQUFBQUFBQUFGNFNBQUFPQURrUllnQUFB
QUFBQUFCZUVnQUFBZ0FHQUFBQUFQSUFBQUFnQUFBQQpBQUFBQUFBQUFBQndBQUFBQ0FRQUFBRUFB
QUFVQUFBQUFBQUFBQzRBQUlBTUFBQUEyUUFBQUFjQXVBQUFBTmtBQUFBTEFMd0FBQURaCkFBQUFD
Z0FGQVFBQTNBQUFBQXNBQ1FFQUFOd0FBQUFLQUJVQkFBRFpBQUFBQ3dBWkFRQUEyUUFBQUFvQUpR
RUFBTmtBQUFBTEFDa0IKQUFEWkFBQUFDZ0ExQVFBQTJRQUFBQXNBT1FFQUFOa0FBQUFLQUVVQkFB
RFpBQUFBQ3dCSkFRQUEyUUFBQUFvQVZRRUFBTmtBQUFBTApBRmtCQUFEWkFBQUFDZ0J3QVFBQTJR
QUFBQXNBZEFFQUFOa0FBQUFLQUtFQUFBQUFoY0IxWnFFQUFBQUFpd2lMRlFBQUFBQ0xBbE5XClYx
Rm9CZzRBQUdnQUFBQUFVUDhWQUFBQUFJdjRWLzhWQUFBQUFHb0FhZ0NMOEdvQVZ2OFZBQUFBQUlz
ZEFBQUFBSVBFSklYMm93QUEKQUFCMEJsYi8wNFBFQklYL2RBWlgvOU9EeEFTaEFBQUFBRjllVzhN
QkFBQUE1QUFBQUFZQUNnQUFBSUVBQUFBR0FCSUFBQUNBQUFBQQpCZ0FpQUFBQUZnQUFBQVlBS1FB
QUFIOEFBQUFHQURJQUFBQitBQUFBQmdCQkFBQUFmUUFBQUFZQVJ3QUFBSHdBQUFBR0FGRUFBQURr
CkFBQUFCZ0JvQUFBQTVBQUFBQVlBQkFBQUFQVUFBQUNFQUFBQUFBQUFBQUFBQUFCd0FBQUFBQUFB
QUFBQUFBQUFBQUFBRnljQUFBQUEKQUFBRUFBQUFHUUFBQUZZQUFBQUFBQUFBQUFBQUFBQUFBQUJ1
SndBQUFBQUVBQUFBQUFBYUFBQUFWQUFBQUFBQUFBQUFBQUFBQUFBQQpBRzRuQUFBQUFBZ0FBQUFB
QUJzQUFBQlNBQUFBQUFBQUFBQUFBQUFBQUFBQWJpY0FBQUFBREFBQUFBQUE4UUFBQU0wQUFBQkZB
QThSCkFBQUFBQUFBQUFBQUFBQUFjQUFBQUFBQUFBQnZBQUFBYWhJQUFBQUFBQUFBQUFCdFpXUnBZ
VkJPUjFOc2FXUmxjbFJ5WVdOclRHVm0KZEVOaGNFbHRZV2RsQUJ3QUVoQUFBQUFBQUFBQUFBQUFB
QUFNQUFBQUFBQUFBQUFBQUFJQUFCSUFEQkdBRUFBQUFBQUFBQUFBYVcxaApaMlVBRGdBNUVTY0FB
QUFBQUFBQVZCSUFBQTRBT1JFd0FBQUFBQUFBQUZZU0FBQU9BRGtSUHdBQUFBQUFBQUJjRWdBQURn
QTVFVmdBCkFBQUFBQUFBWGhJQUFBNEFPUkZpQUFBQUFBQUFBRjRTQUFBQ0FBWUFBQUFBOGdBQUFD
QUFBQUFBQUFBQUFBQUFBSEFBQUFBSUJBQUEKQVFBQUFCUUFBQUFBQUFBQUx3QUFnQXdBQUFEaEFB
QUFCd0M0QUFBQTRRQUFBQXNBdkFBQUFPRUFBQUFLQUFVQkFBRGtBQUFBQ3dBSgpBUUFBNUFBQUFB
b0FGUUVBQU9FQUFBQUxBQmtCQUFEaEFBQUFDZ0FsQVFBQTRRQUFBQXNBS1FFQUFPRUFBQUFLQURV
QkFBRGhBQUFBCkN3QTVBUUFBNFFBQUFBb0FSUUVBQU9FQUFBQUxBRWtCQUFEaEFBQUFDZ0JWQVFB
QTRRQUFBQXNBV1FFQUFPRUFBQUFLQUhBQkFBRGgKQUFBQUN3QjBBUUFBNFFBQUFBb0FvUUFBQUFD
RndIVm1vUUFBQUFDTENJc1ZBQUFBQUlzQ1UxWlhVV2dCRGdBQWFBQUFBQUJRL3hVQQpBQUFBaS9o
WC94VUFBQUFBYWdCcUFJdndhZ0JXL3hVQUFBQUFpeDBBQUFBQWc4UWtoZmFqQUFBQUFIUUdWdi9U
ZzhRRWhmOTBCbGYvCjA0UEVCS0VBQUFBQVgxNWJ3d0VBQUFEc0FBQUFCZ0FLQUFBQWdRQUFBQVlB
RWdBQUFJQUFBQUFHQUNJQUFBQVhBQUFBQmdBcEFBQUEKZndBQUFBWUFNZ0FBQUg0QUFBQUdBRUVB
QUFCOUFBQUFCZ0JIQUFBQWZBQUFBQVlBVVFBQUFPd0FBQUFHQUdnQUFBRHNBQUFBQmdBRQpBQUFB
OVFBQUFJUUFBQUFBQUFBQUFBQUFBSEFBQUFBQUFBQUFBQUFBQUFBQUFBQVhKd0FBQUFBQUFBUUFB
QUFaQUFBQVZnQUFBQUFBCkFBQUFBQUFBQUFBQUFHNG5BQUFBQUFRQUFBQUFBQm9BQUFCVUFBQUFB
QUFBQUFBQUFBQUFBQUFBYmljQUFBQUFDQUFBQUFBQUd3QUEKQUZJQUFBQUFBQUFBQUFBQUFBQUFB
QUJ1SndBQUFBQU1BQUFBQUFEeEFBQUExQUFBQUV3QUR4RUFBQUFBQUFBQUFBQUFBQUJ3QUFBQQpB
QUFBQUc4QUFBQnFFZ0FBQUFBQUFBQUFBRzFsWkdsaFVFNUhVMnhwWkdWeVZISmhZMnRNWldaMFEy
RndURzloWkdsdVowbHRZV2RsCkFCd0FFaEFBQUFBQUFBQUFBQUFBQUFBTUFBQUFBQUFBQUFBQUFB
SUFBQklBREJHQUVBQUFBQUFBQUFBQWFXMWhaMlVBRGdBNUVTY0EKQUFBQUFBQUFWQklBQUE0QU9S
RXdBQUFBQUFBQUFGWVNBQUFPQURrUlB3QUFBQUFBQUFCY0VnQUFEZ0E1RVZnQUFBQUFBQUFBWGhJ
QQpBQTRBT1JGaUFBQUFBQUFBQUY0U0FBQUNBQVlBOGdBQUFDQUFBQUFBQUFBQUFBQUFBSEFBQUFB
SUJBQUFBUUFBQUJRQUFBQUFBQUFBCk1BQUFnQXdBQUFEcEFBQUFCd0M0QUFBQTZRQUFBQXNBdkFB
QUFPa0FBQUFLQUF3QkFBRHNBQUFBQ3dBUUFRQUE3QUFBQUFvQUhBRUEKQU9rQUFBQUxBQ0FCQUFE
cEFBQUFDZ0FzQVFBQTZRQUFBQXNBTUFFQUFPa0FBQUFLQUR3QkFBRHBBQUFBQ3dCQUFRQUE2UUFB
QUFvQQpUQUVBQU9rQUFBQUxBRkFCQUFEcEFBQUFDZ0JjQVFBQTZRQUFBQXNBWUFFQUFPa0FBQUFL
QUhRQkFBRHBBQUFBQ3dCNEFRQUE2UUFBCkFBb0FvUUFBQUFDRndIVm1vUUFBQUFDTENJc1ZBQUFB
QUlzQ1UxWlhVV2lhRFFBQWFBQUFBQUJRL3hVQUFBQUFpL2hYL3hVQUFBQUEKYWdCcUFJdndhZ0JX
L3hVQUFBQUFpeDBBQUFBQWc4UWtoZmFqQUFBQUFIUUdWdi9UZzhRRWhmOTBCbGYvMDRQRUJLRUFB
QUFBWDE1Ygp3d0VBQUFEMEFBQUFCZ0FLQUFBQWdRQUFBQVlBRWdBQUFJQUFBQUFHQUNJQUFBQVlB
QUFBQmdBcEFBQUFmd0FBQUFZQU1nQUFBSDRBCkFBQUdBRUVBQUFCOUFBQUFCZ0JIQUFBQWZBQUFB
QVlBVVFBQUFQUUFBQUFHQUdnQUFBRDBBQUFBQmdBRUFBQUE5UUFBQUlRQUFBQUEKQUFBQUFBQUFB
SEFBQUFBQUFBQUFBQUFBQUFBQUFBQVhKd0FBQUFBQUFBUUFBQUFaQUFBQVZnQUFBQUFBQUFBQUFB
QUFBQUFBQUc0bgpBQUFBQUFRQUFBQUFBQm9BQUFCVUFBQUFBQUFBQUFBQUFBQUFBQUFBYmljQUFB
QUFDQUFBQUFBQUd3QUFBRklBQUFBQUFBQUFBQUFBCkFBQUFBQUJ1SndBQUFBQU1BQUFBQUFEeEFB
QUF6QUFBQUVRQUR4RUFBQUFBQUFBQUFBQUFBQUJ3QUFBQUFBQUFBRzhBQUFCcUVnQUEKQUFBQUFB
QUFBRzFsWkdsaFVFNUhVMnhwWkdWeVZISmhZMnROYVdSa2JHVkpiV0ZuWlFBY0FCSVFBQUFBQUFB
QUFBQUFBQUFBREFBQQpBQUFBQUFBQUFBQUNBQUFTQUF3UmdCQUFBQUFBQUFBQUFHbHRZV2RsQUE0
QU9SRW5BQUFBQUFBQUFGUVNBQUFPQURrUk1BQUFBQUFBCkFBQldFZ0FBRGdBNUVUOEFBQUFBQUFB
QVhCSUFBQTRBT1JGWUFBQUFBQUFBQUY0U0FBQU9BRGtSWWdBQUFBQUFBQUJlRWdBQUFnQUcKQVBJ
QUFBQWdBQUFBQUFBQUFBQUFBQUJ3QUFBQUNBUUFBQUVBQUFBVUFBQUFBQUFBQURFQUFJQU1BQUFB
OFFBQUFBY0F1QUFBQVBFQQpBQUFMQUx3QUFBRHhBQUFBQ2dBRUFRQUE5QUFBQUFzQUNBRUFBUFFB
QUFBS0FCUUJBQUR4QUFBQUN3QVlBUUFBOFFBQUFBb0FKQUVBCkFQRUFBQUFMQUNnQkFBRHhBQUFB
Q2dBMEFRQUE4UUFBQUFzQU9BRUFBUEVBQUFBS0FFUUJBQUR4QUFBQUN3QklBUUFBOFFBQUFBb0EK
VkFFQUFQRUFBQUFMQUZnQkFBRHhBQUFBQ2dCc0FRQUE4UUFBQUFzQWNBRUFBUEVBQUFBS0FLRUFB
QUFBaGNCMVpxRUFBQUFBaXdpTApGUUFBQUFDTEFsTldWMUZvbGcwQUFHZ0FBQUFBVVA4VkFBQUFB
SXY0Vi84VkFBQUFBR29BYWdDTDhHb0FWdjhWQUFBQUFJc2RBQUFBCkFJUEVKSVgyb3dBQUFBQjBC
bGIvMDRQRUJJWC9kQVpYLzlPRHhBU2hBQUFBQUY5ZVc4TUJBQUFBL0FBQUFBWUFDZ0FBQUlFQUFB
QUcKQUJJQUFBQ0FBQUFBQmdBaUFBQUFHUUFBQUFZQUtRQUFBSDhBQUFBR0FESUFBQUIrQUFBQUJn
QkJBQUFBZlFBQUFBWUFSd0FBQUh3QQpBQUFHQUZFQUFBRDhBQUFBQmdCb0FBQUEvQUFBQUFZQUJB
QUFBUFVBQUFDRUFBQUFBQUFBQUFBQUFBQndBQUFBQUFBQUFBQUFBQUFBCkFBQUFGeWNBQUFBQUFB
QUVBQUFBR1FBQUFGWUFBQUFBQUFBQUFBQUFBQUFBQUFCdUp3QUFBQUFFQUFBQUFBQWFBQUFBVkFB
QUFBQUEKQUFBQUFBQUFBQUFBQUc0bkFBQUFBQWdBQUFBQUFCc0FBQUJTQUFBQUFBQUFBQUFBQUFB
QUFBQUFiaWNBQUFBQURBQUFBQUFBOFFBQQpBTk1BQUFCTEFBOFJBQUFBQUFBQUFBQUFBQUFBY0FB
QUFBQUFBQUJ2QUFBQWFoSUFBQUFBQUFBQUFBQnRaV1JwWVZCT1IxTnNhV1JsCmNsUnlZV05yVFds
a1pHeGxURzloWkdsdVowbHRZV2RsQUJ3QUVoQUFBQUFBQUFBQUFBQUFBQUFNQUFBQUFBQUFBQUFB
QUFJQUFCSUEKREJHQUVBQUFBQUFBQUFBQWFXMWhaMlVBRGdBNUVTY0FBQUFBQUFBQVZCSUFBQTRB
T1JFd0FBQUFBQUFBQUZZU0FBQU9BRGtSUHdBQQpBQUFBQUFCY0VnQUFEZ0E1RVZnQUFBQUFBQUFB
WGhJQUFBNEFPUkZpQUFBQUFBQUFBRjRTQUFBQ0FBWUFBUElBQUFBZ0FBQUFBQUFBCkFBQUFBQUJ3
QUFBQUNBUUFBQUVBQUFBVUFBQUFBQUFBQURJQUFJQU1BQUFBK1FBQUFBY0F1QUFBQVBrQUFBQUxB
THdBQUFENUFBQUEKQ2dBTEFRQUEvQUFBQUFzQUR3RUFBUHdBQUFBS0FCc0JBQUQ1QUFBQUN3QWZB
UUFBK1FBQUFBb0FLd0VBQVBrQUFBQUxBQzhCQUFENQpBQUFBQ2dBN0FRQUErUUFBQUFzQVB3RUFB
UGtBQUFBS0FFc0JBQUQ1QUFBQUN3QlBBUUFBK1FBQUFBb0FXd0VBQVBrQUFBQUxBRjhCCkFBRDVB
QUFBQ2dCMEFRQUErUUFBQUFzQWVBRUFBUGtBQUFBS0FLRUFBQUFBaGNCMVpxRUFBQUFBaXdpTEZR
QUFBQUNMQWxOV1YxRm8KL3cwQUFHZ0FBQUFBVVA4VkFBQUFBSXY0Vi84VkFBQUFBR29BYWdDTDhH
b0FWdjhWQUFBQUFJc2RBQUFBQUlQRUpJWDJvd0FBQUFCMApCbGIvMDRQRUJJWC9kQVpYLzlPRHhB
U2hBQUFBQUY5ZVc4TUJBQUFBQkFFQUFBWUFDZ0FBQUlFQUFBQUdBQklBQUFDQUFBQUFCZ0FpCkFB
QUFHZ0FBQUFZQUtRQUFBSDhBQUFBR0FESUFBQUIrQUFBQUJnQkJBQUFBZlFBQUFBWUFSd0FBQUh3
QUFBQUdBRkVBQUFBRUFRQUEKQmdCb0FBQUFCQUVBQUFZQUJBQUFBUFVBQUFDRUFBQUFBQUFBQUFB
QUFBQndBQUFBQUFBQUFBQUFBQUFBQUFBQUZ5Y0FBQUFBQUFBRQpBQUFBR1FBQUFGWUFBQUFBQUFB
QUFBQUFBQUFBQUFCdUp3QUFBQUFFQUFBQUFBQWFBQUFBVkFBQUFBQUFBQUFBQUFBQUFBQUFBRzRu
CkFBQUFBQWdBQUFBQUFCc0FBQUJTQUFBQUFBQUFBQUFBQUFBQUFBQUFiaWNBQUFBQURBQUFBQUFB
OFFBQUFNNEFBQUJHQUE4UkFBQUEKQUFBQUFBQUFBQUFBY0FBQUFBQUFBQUJ2QUFBQWFoSUFBQUFB
QUFBQUFBQnRaV1JwWVZCT1IxTnNhV1JsY2xSeVlXTnJVbWxuYUhSRApZWEJKYldGblpRQWNBQklR
QUFBQUFBQUFBQUFBQUFBQURBQUFBQUFBQUFBQUFBQUNBQUFTQUF3UmdCQUFBQUFBQUFBQUFHbHRZ
V2RsCkFBNEFPUkVuQUFBQUFBQUFBRlFTQUFBT0FEa1JNQUFBQUFBQUFBQldFZ0FBRGdBNUVUOEFB
QUFBQUFBQVhCSUFBQTRBT1JGWUFBQUEKQUFBQUFGNFNBQUFPQURrUllnQUFBQUFBQUFCZUVnQUFB
Z0FHQUFBQThnQUFBQ0FBQUFBQUFBQUFBQUFBQUhBQUFBQUlCQUFBQVFBQQpBQlFBQUFBQUFBQUFN
d0FBZ0F3QUFBQUJBUUFBQndDNEFBQUFBUUVBQUFzQXZBQUFBQUVCQUFBS0FBWUJBQUFFQVFBQUN3
QUtBUUFBCkJBRUFBQW9BRmdFQUFBRUJBQUFMQUJvQkFBQUJBUUFBQ2dBbUFRQUFBUUVBQUFzQUtn
RUFBQUVCQUFBS0FEWUJBQUFCQVFBQUN3QTYKQVFBQUFRRUFBQW9BUmdFQUFBRUJBQUFMQUVvQkFB
QUJBUUFBQ2dCV0FRQUFBUUVBQUFzQVdnRUFBQUVCQUFBS0FIQUJBQUFCQVFBQQpDd0IwQVFBQUFR
RUFBQW9Bb1FBQUFBQ0Z3SFZtb1FBQUFBQ0xDSXNWQUFBQUFJc0NVMVpYVVdqN0RRQUFhQUFBQUFC
US94VUFBQUFBCmkvaFgveFVBQUFBQWFnQnFBSXZ3YWdCVy94VUFBQUFBaXgwQUFBQUFnOFFraGZh
akFBQUFBSFFHVnYvVGc4UUVoZjkwQmxmLzA0UEUKQktFQUFBQUFYMTVid3dFQUFBQU1BUUFBQmdB
S0FBQUFnUUFBQUFZQUVnQUFBSUFBQUFBR0FDSUFBQUFiQUFBQUJnQXBBQUFBZndBQQpBQVlBTWdB
QUFINEFBQUFHQUVFQUFBQjlBQUFBQmdCSEFBQUFmQUFBQUFZQVVRQUFBQXdCQUFBR0FHZ0FBQUFN
QVFBQUJnQUVBQUFBCjlRQUFBSVFBQUFBQUFBQUFBQUFBQUhBQUFBQUFBQUFBQUFBQUFBQUFBQUFY
SndBQUFBQUFBQVFBQUFBWkFBQUFWZ0FBQUFBQUFBQUEKQUFBQUFBQUFBRzRuQUFBQUFBUUFBQUFB
QUJvQUFBQlVBQUFBQUFBQUFBQUFBQUFBQUFBQWJpY0FBQUFBQ0FBQUFBQUFHd0FBQUZJQQpBQUFB
QUFBQUFBQUFBQUFBQUFCdUp3QUFBQUFNQUFBQUFBRHhBQUFBMVFBQUFFMEFEeEVBQUFBQUFBQUFB
QUFBQUFCd0FBQUFBQUFBCkFHOEFBQUJxRWdBQUFBQUFBQUFBQUcxbFpHbGhVRTVIVTJ4cFpHVnlW
SEpoWTJ0U2FXZG9kRU5oY0V4dllXUnBibWRKYldGblpRQWMKQUJJUUFBQUFBQUFBQUFBQUFBQUFE
QUFBQUFBQUFBQUFBQUFDQUFBU0FBd1JnQkFBQUFBQUFBQUFBR2x0WVdkbEFBNEFPUkVuQUFBQQpB
QUFBQUZRU0FBQU9BRGtSTUFBQUFBQUFBQUJXRWdBQURnQTVFVDhBQUFBQUFBQUFYQklBQUE0QU9S
RllBQUFBQUFBQUFGNFNBQUFPCkFEa1JZZ0FBQUFBQUFBQmVFZ0FBQWdBR0FBQUFBUElBQUFBZ0FB
QUFBQUFBQUFBQUFBQndBQUFBQ0FRQUFBRUFBQUFVQUFBQUFBQUEKQURRQUFJQU1BQUFBQ1FFQUFB
Y0F1QUFBQUFrQkFBQUxBTHdBQUFBSkFRQUFDZ0FOQVFBQURBRUFBQXNBRVFFQUFBd0JBQUFLQUIw
QgpBQUFKQVFBQUN3QWhBUUFBQ1FFQUFBb0FMUUVBQUFrQkFBQUxBREVCQUFBSkFRQUFDZ0E5QVFB
QUNRRUFBQXNBUVFFQUFBa0JBQUFLCkFFMEJBQUFKQVFBQUN3QlJBUUFBQ1FFQUFBb0FYUUVBQUFr
QkFBQUxBR0VCQUFBSkFRQUFDZ0I0QVFBQUNRRUFBQXNBZkFFQUFBa0IKQUFBS0FLRUFBQUFBaGNC
MVpxRUFBQUFBaXdpTEZRQUFBQUNMQWxOV1YxRm9Ud1FBQUdnQUFBQUFVUDhWQUFBQUFJdjRWLzhW
QUFBQQpBR29BYWdDTDhHb0FWdjhWQUFBQUFJc2RBQUFBQUlQRUpJWDJvd0FBQUFCMEJsYi8wNFBF
QklYL2RBWlgvOU9EeEFTaEFBQUFBRjllClc4TUJBQUFBRkFFQUFBWUFDZ0FBQUlFQUFBQUdBQklB
QUFDQUFBQUFCZ0FpQUFBQUhBQUFBQVlBS1FBQUFIOEFBQUFHQURJQUFBQisKQUFBQUJnQkJBQUFB
ZlFBQUFBWUFSd0FBQUh3QUFBQUdBRkVBQUFBVUFRQUFCZ0JvQUFBQUZBRUFBQVlBQkFBQUFQVUFB
QUNFQUFBQQpBQUFBQUFBQUFBQndBQUFBQUFBQUFBQUFBQUFBQUFBQUZ5Y0FBQUFBQUFBRUFBQUFH
UUFBQUZZQUFBQUFBQUFBQUFBQUFBQUFBQUJ1Ckp3QUFBQUFFQUFBQUFBQWFBQUFBVkFBQUFBQUFB
QUFBQUFBQUFBQUFBRzRuQUFBQUFBZ0FBQUFBQUJzQUFBQlNBQUFBQUFBQUFBQUEKQUFBQUFBQUFi
aWNBQUFBQURBQUFBQUFBOFFBQUFNQUFBQUE0QUE4UkFBQUFBQUFBQUFBQUFBQUFjQUFBQUFBQUFB
QnZBQUFBYWhJQQpBQUFBQUFBQUFBQnRaV1JwWVZCT1IxUm9kVzFpU1cxaFoyVUFIQUFTRUFBQUFB
QUFBQUFBQUFBQUFBd0FBQUFBQUFBQUFBQUFBZ0FBCkVnQU1FWUFRQUFBQUFBQUFBQUJwYldGblpR
QU9BRGtSSndBQUFBQUFBQUJVRWdBQURnQTVFVEFBQUFBQUFBQUFWaElBQUE0QU9SRS8KQUFBQUFB
QUFBRndTQUFBT0FEa1JXQUFBQUFBQUFBQmVFZ0FBRGdBNUVXSUFBQUFBQUFBQVhoSUFBQUlBQmdE
eUFBQUFJQUFBQUFBQQpBQUFBQUFBQWNBQUFBQWdFQUFBQkFBQUFGQUFBQUFBQUFBQTFBQUNBREFB
QUFCRUJBQUFIQUxnQUFBQVJBUUFBQ3dDOEFBQUFFUUVBCkFBb0ErQUFBQUJRQkFBQUxBUHdBQUFB
VUFRQUFDZ0FJQVFBQUVRRUFBQXNBREFFQUFCRUJBQUFLQUJnQkFBQVJBUUFBQ3dBY0FRQUEKRVFF
QUFBb0FLQUVBQUJFQkFBQUxBQ3dCQUFBUkFRQUFDZ0E0QVFBQUVRRUFBQXNBUEFFQUFCRUJBQUFL
QUVnQkFBQVJBUUFBQ3dCTQpBUUFBRVFFQUFBb0FZQUVBQUJFQkFBQUxBR1FCQUFBUkFRQUFDZ0No
QUFBQUFJWEFkV2FoQUFBQUFJc0lpeFVBQUFBQWl3SlRWbGRSCmFIZ0VBQUJvQUFBQUFGRC9GUUFB
QUFDTCtGZi9GUUFBQUFCcUFHb0FpL0JxQUZiL0ZRQUFBQUNMSFFBQUFBQ0R4Q1NGOXFNQUFBQUEK
ZEFaVy85T0R4QVNGLzNRR1YvL1RnOFFFb1FBQUFBQmZYbHZEQVFBQUFCd0JBQUFHQUFvQUFBQ0JB
QUFBQmdBU0FBQUFnQUFBQUFZQQpJZ0FBQUIwQUFBQUdBQ2tBQUFCL0FBQUFCZ0F5QUFBQWZnQUFB
QVlBUVFBQUFIMEFBQUFHQUVjQUFBQjhBQUFBQmdCUkFBQUFIQUVBCkFBWUFhQUFBQUJ3QkFBQUdB
QVFBQUFEMUFBQUFoQUFBQUFBQUFBQUFBQUFBY0FBQUFBQUFBQUFBQUFBQUFBQUFBQmNuQUFBQUFB
QUEKQkFBQUFCa0FBQUJXQUFBQUFBQUFBQUFBQUFBQUFBQUFiaWNBQUFBQUJBQUFBQUFBR2dBQUFG
UUFBQUFBQUFBQUFBQUFBQUFBQUFCdQpKd0FBQUFBSUFBQUFBQUFiQUFBQVVnQUFBQUFBQUFBQUFB
QUFBQUFBQUc0bkFBQUFBQXdBQUFBQUFQRUFBQURIQUFBQVB3QVBFUUFBCkFBQUFBQUFBQUFBQUFI
QUFBQUFBQUFBQWJ3QUFBR29TQUFBQUFBQUFBQUFBYldWa2FXRlFUa2RVYUhWdFlsQnlaWE56WldS
SmJXRm4KWlFBY0FCSVFBQUFBQUFBQUFBQUFBQUFBREFBQUFBQUFBQUFBQUFBQ0FBQVNBQXdSZ0JB
QUFBQUFBQUFBQUdsdFlXZGxBQTRBT1JFbgpBQUFBQUFBQUFGUVNBQUFPQURrUk1BQUFBQUFBQUFC
V0VnQUFEZ0E1RVQ4QUFBQUFBQUFBWEJJQUFBNEFPUkZZQUFBQUFBQUFBRjRTCkFBQU9BRGtSWWdB
QUFBQUFBQUJlRWdBQUFnQUdBQUR5QUFBQUlBQUFBQUFBQUFBQUFBQUFjQUFBQUFnRUFBQUJBQUFB
RkFBQUFBQUEKQUFBMkFBQ0FEQUFBQUJrQkFBQUhBTGdBQUFBWkFRQUFDd0M4QUFBQUdRRUFBQW9B
L3dBQUFCd0JBQUFMQUFNQkFBQWNBUUFBQ2dBUApBUUFBR1FFQUFBc0FFd0VBQUJrQkFBQUtBQjhC
QUFBWkFRQUFDd0FqQVFBQUdRRUFBQW9BTHdFQUFCa0JBQUFMQURNQkFBQVpBUUFBCkNnQS9BUUFB
R1FFQUFBc0FRd0VBQUJrQkFBQUtBRThCQUFBWkFRQUFDd0JUQVFBQUdRRUFBQW9BYUFFQUFCa0JB
QUFMQUd3QkFBQVoKQVFBQUNnQ2hBQUFBQUlYQWRXYWhBQUFBQUlzSWl4VUFBQUFBaXdKVFZsZFJh
SGtEQUFCb0FBQUFBRkQvRlFBQUFBQ0wrRmYvRlFBQQpBQUJxQUdvQWkvQnFBRmIvRlFBQUFBQ0xI
UUFBQUFDRHhDU0Y5cU1BQUFBQWRBWlcvOU9EeEFTRi8zUUdWLy9UZzhRRW9RQUFBQUJmClhsdkRB
UUFBQUNRQkFBQUdBQW9BQUFDQkFBQUFCZ0FTQUFBQWdBQUFBQVlBSWdBQUFBb0FBQUFHQUNrQUFB
Qi9BQUFBQmdBeUFBQUEKZmdBQUFBWUFRUUFBQUgwQUFBQUdBRWNBQUFCOEFBQUFCZ0JSQUFBQUpB
RUFBQVlBYUFBQUFDUUJBQUFHQUFRQUFBRDFBQUFBaEFBQQpBQUFBQUFBQUFBQUFjQUFBQUFBQUFB
QUFBQUFBQUFBQUFCY25BQUFBQUFBQUJBQUFBQmtBQUFCV0FBQUFBQUFBQUFBQUFBQUFBQUFBCmJp
Y0FBQUFBQkFBQUFBQUFHZ0FBQUZRQUFBQUFBQUFBQUFBQUFBQUFBQUJ1SndBQUFBQUlBQUFBQUFB
YkFBQUFVZ0FBQUFBQUFBQUEKQUFBQUFBQUFBRzRuQUFBQUFBd0FBQUFBQVBFQUFBREZBQUFBUFFB
UEVRQUFBQUFBQUFBQUFBQUFBSEFBQUFBQUFBQUFid0FBQUdvUwpBQUFBQUFBQUFBQUFiV1ZrYVdG
UVRrZEdkV3hzVm05c2RXMWxTVzFoWjJVQUhBQVNFQUFBQUFBQUFBQUFBQUFBQUF3QUFBQUFBQUFB
CkFBQUFBZ0FBRWdBTUVZQVFBQUFBQUFBQUFBQnBiV0ZuWlFBT0FEa1JKd0FBQUFBQUFBQlVFZ0FB
RGdBNUVUQUFBQUFBQUFBQVZoSUEKQUE0QU9SRS9BQUFBQUFBQUFGd1NBQUFPQURrUldBQUFBQUFB
QUFCZUVnQUFEZ0E1RVdJQUFBQUFBQUFBWGhJQUFBSUFCZ0FBQUFEeQpBQUFBSUFBQUFBQUFBQUFB
QUFBQWNBQUFBQWdFQUFBQkFBQUFGQUFBQUFBQUFBQTNBQUNBREFBQUFDRUJBQUFIQUxnQUFBQWhB
UUFBCkN3QzhBQUFBSVFFQUFBb0EvUUFBQUNRQkFBQUxBQUVCQUFBa0FRQUFDZ0FOQVFBQUlRRUFB
QXNBRVFFQUFDRUJBQUFLQUIwQkFBQWgKQVFBQUN3QWhBUUFBSVFFQUFBb0FMUUVBQUNFQkFBQUxB
REVCQUFBaEFRQUFDZ0E5QVFBQUlRRUFBQXNBUVFFQUFDRUJBQUFLQUUwQgpBQUFoQVFBQUN3QlJB
UUFBSVFFQUFBb0FhQUVBQUNFQkFBQUxBR3dCQUFBaEFRQUFDZ0NoQUFBQUFJWEFkV2FoQUFBQUFJ
c0lpeFVBCkFBQUFpd0pUVmxkUmFMb0RBQUJvQUFBQUFGRC9GUUFBQUFDTCtGZi9GUUFBQUFCcUFH
b0FpL0JxQUZiL0ZRQUFBQUNMSFFBQUFBQ0QKeENTRjlxTUFBQUFBZEFaVy85T0R4QVNGLzNRR1Yv
L1RnOFFFb1FBQUFBQmZYbHZEQVFBQUFDd0JBQUFHQUFvQUFBQ0JBQUFBQmdBUwpBQUFBZ0FBQUFB
WUFJZ0FBQUFzQUFBQUdBQ2tBQUFCL0FBQUFCZ0F5QUFBQWZnQUFBQVlBUVFBQUFIMEFBQUFHQUVj
QUFBQjhBQUFBCkJnQlJBQUFBTEFFQUFBWUFhQUFBQUN3QkFBQUdBQVFBQUFEMUFBQUFoQUFBQUFB
QUFBQUFBQUFBY0FBQUFBQUFBQUFBQUFBQUFBQUEKQUJjbkFBQUFBQUFBQkFBQUFCa0FBQUJXQUFB
QUFBQUFBQUFBQUFBQUFBQUFiaWNBQUFBQUJBQUFBQUFBR2dBQUFGUUFBQUFBQUFBQQpBQUFBQUFB
QUFBQnVKd0FBQUFBSUFBQUFBQUFiQUFBQVVnQUFBQUFBQUFBQUFBQUFBQUFBQUc0bkFBQUFBQXdB
QUFBQUFQRUFBQURNCkFBQUFSQUFQRVFBQUFBQUFBQUFBQUFBQUFIQUFBQUFBQUFBQWJ3QUFBR29T
QUFBQUFBQUFBQUFBYldWa2FXRlFUa2RHZFd4c1ZtOXMKZFcxbFVISmxjM05sWkVsdFlXZGxBQndB
RWhBQUFBQUFBQUFBQUFBQUFBQU1BQUFBQUFBQUFBQUFBQUlBQUJJQURCR0FFQUFBQUFBQQpBQUFB
YVcxaFoyVUFEZ0E1RVNjQUFBQUFBQUFBVkJJQUFBNEFPUkV3QUFBQUFBQUFBRllTQUFBT0FEa1JQ
d0FBQUFBQUFBQmNFZ0FBCkRnQTVFVmdBQUFBQUFBQUFYaElBQUE0QU9SRmlBQUFBQUFBQUFGNFNB
QUFDQUFZQThnQUFBQ0FBQUFBQUFBQUFBQUFBQUhBQUFBQUkKQkFBQUFRQUFBQlFBQUFBQUFBQUFP
QUFBZ0F3QUFBQXBBUUFBQndDNEFBQUFLUUVBQUFzQXZBQUFBQ2tCQUFBS0FBUUJBQUFzQVFBQQpD
d0FJQVFBQUxBRUFBQW9BRkFFQUFDa0JBQUFMQUJnQkFBQXBBUUFBQ2dBa0FRQUFLUUVBQUFzQUtB
RUFBQ2tCQUFBS0FEUUJBQUFwCkFRQUFDd0E0QVFBQUtRRUFBQW9BUkFFQUFDa0JBQUFMQUVnQkFB
QXBBUUFBQ2dCVUFRQUFLUUVBQUFzQVdBRUFBQ2tCQUFBS0FHd0IKQUFBcEFRQUFDd0J3QVFBQUtR
RUFBQW9Bb1FBQUFBQ0Z3SFZtb1FBQUFBQ0xDSXNWQUFBQUFJc0NVMVpYVVdqSEF3QUFhQUFBQUFC
UQoveFVBQUFBQWkvaFgveFVBQUFBQWFnQnFBSXZ3YWdCVy94VUFBQUFBaXgwQUFBQUFnOFFraGZh
akFBQUFBSFFHVnYvVGc4UUVoZjkwCkJsZi8wNFBFQktFQUFBQUFYMTVid3dFQUFBQTBBUUFBQmdB
S0FBQUFnUUFBQUFZQUVnQUFBSUFBQUFBR0FDSUFBQUFlQUFBQUJnQXAKQUFBQWZ3QUFBQVlBTWdB
QUFINEFBQUFHQUVFQUFBQjlBQUFBQmdCSEFBQUFmQUFBQUFZQVVRQUFBRFFCQUFBR0FHZ0FBQUEw
QVFBQQpCZ0FFQUFBQTlRQUFBSVFBQUFBQUFBQUFBQUFBQUhBQUFBQUFBQUFBQUFBQUFBQUFBQUFY
SndBQUFBQUFBQVFBQUFBWkFBQUFWZ0FBCkFBQUFBQUFBQUFBQUFBQUFBRzRuQUFBQUFBUUFBQUFB
QUJvQUFBQlVBQUFBQUFBQUFBQUFBQUFBQUFBQWJpY0FBQUFBQ0FBQUFBQUEKR3dBQUFGSUFBQUFB
QUFBQUFBQUFBQUFBQUFCdUp3QUFBQUFNQUFBQUFBRHhBQUFBeVFBQUFFRUFEeEVBQUFBQUFBQUFB
QUFBQUFCdwpBQUFBQUFBQUFHOEFBQUJxRWdBQUFBQUFBQUFBQUcxbFpHbGhVRTVIVkc5bloyeGxR
MkZ3ZEdsdmJuTkpiV0ZuWlFBY0FCSVFBQUFBCkFBQUFBQUFBQUFBQURBQUFBQUFBQUFBQUFBQUNB
QUFTQUF3UmdCQUFBQUFBQUFBQUFHbHRZV2RsQUE0QU9SRW5BQUFBQUFBQUFGUVMKQUFBT0FEa1JN
QUFBQUFBQUFBQldFZ0FBRGdBNUVUOEFBQUFBQUFBQVhCSUFBQTRBT1JGWUFBQUFBQUFBQUY0U0FB
QU9BRGtSWWdBQQpBQUFBQUFCZUVnQUFBZ0FHQUFBQUFQSUFBQUFnQUFBQUFBQUFBQUFBQUFCd0FB
QUFDQVFBQUFFQUFBQVVBQUFBQUFBQUFEa0FBSUFNCkFBQUFNUUVBQUFjQXVBQUFBREVCQUFBTEFM
d0FBQUF4QVFBQUNnQUJBUUFBTkFFQUFBc0FCUUVBQURRQkFBQUtBQkVCQUFBeEFRQUEKQ3dBVkFR
QUFNUUVBQUFvQUlRRUFBREVCQUFBTEFDVUJBQUF4QVFBQUNnQXhBUUFBTVFFQUFBc0FOUUVBQURF
QkFBQUtBRUVCQUFBeApBUUFBQ3dCRkFRQUFNUUVBQUFvQVVRRUFBREVCQUFBTEFGVUJBQUF4QVFB
QUNnQnNBUUFBTVFFQUFBc0FjQUVBQURFQkFBQUtBS0VBCkFBQUFoY0IxWnFFQUFBQUFpd2lMRlFB
QUFBQ0xBbE5XVjFGb2tRTUFBR2dBQUFBQVVQOFZBQUFBQUl2NFYvOFZBQUFBQUdvQWFnQ0wKOEdv
QVZ2OFZBQUFBQUlzZEFBQUFBSVBFSklYMm93QUFBQUIwQmxiLzA0UEVCSVgvZEFaWC85T0R4QVNo
QUFBQUFGOWVXOE1CQUFBQQpQQUVBQUFZQUNnQUFBSUVBQUFBR0FCSUFBQUNBQUFBQUJnQWlBQUFB
SHdBQUFBWUFLUUFBQUg4QUFBQUdBRElBQUFCK0FBQUFCZ0JCCkFBQUFmUUFBQUFZQVJ3QUFBSHdB
QUFBR0FGRUFBQUE4QVFBQUJnQm9BQUFBUEFFQUFBWUFCQUFBQVBVQUFBQ0VBQUFBQUFBQUFBQUEK
QUFCd0FBQUFBQUFBQUFBQUFBQUFBQUFBRnljQUFBQUFBQUFFQUFBQUdRQUFBRllBQUFBQUFBQUFB
QUFBQUFBQUFBQnVKd0FBQUFBRQpBQUFBQUFBYUFBQUFWQUFBQUFBQUFBQUFBQUFBQUFBQUFHNG5B
QUFBQUFnQUFBQUFBQnNBQUFCU0FBQUFBQUFBQUFBQUFBQUFBQUFBCmJpY0FBQUFBREFBQUFBQUE4
UUFBQU5BQUFBQklBQThSQUFBQUFBQUFBQUFBQUFBQWNBQUFBQUFBQUFCdkFBQUFhaElBQUFBQUFB
QUEKQUFCdFpXUnBZVkJPUjFSdloyZHNaVU5oY0hScGIyNXpVSEpsYzNObFpFbHRZV2RsQUJ3QUVo
QUFBQUFBQUFBQUFBQUFBQUFNQUFBQQpBQUFBQUFBQUFBSUFBQklBREJHQUVBQUFBQUFBQUFBQWFX
MWhaMlVBRGdBNUVTY0FBQUFBQUFBQVZCSUFBQTRBT1JFd0FBQUFBQUFBCkFGWVNBQUFPQURrUlB3
QUFBQUFBQUFCY0VnQUFEZ0E1RVZnQUFBQUFBQUFBWGhJQUFBNEFPUkZpQUFBQUFBQUFBRjRTQUFB
Q0FBWUEKOGdBQUFDQUFBQUFBQUFBQUFBQUFBSEFBQUFBSUJBQUFBUUFBQUJRQUFBQUFBQUFBT2dB
QWdBd0FBQUE1QVFBQUJ3QzRBQUFBT1FFQQpBQXNBdkFBQUFEa0JBQUFLQUFnQkFBQThBUUFBQ3dB
TUFRQUFQQUVBQUFvQUdBRUFBRGtCQUFBTEFCd0JBQUE1QVFBQUNnQW9BUUFBCk9RRUFBQXNBTEFF
QUFEa0JBQUFLQURnQkFBQTVBUUFBQ3dBOEFRQUFPUUVBQUFvQVNBRUFBRGtCQUFBTEFFd0JBQUE1
QVFBQUNnQlkKQVFBQU9RRUFBQXNBWEFFQUFEa0JBQUFLQUhBQkFBQTVBUUFBQ3dCMEFRQUFPUUVB
QUFvQWkxRUVNOENEK2d3UGg4RUFBQUQvSkpVQQpBQUFBaTBFSTBlaW9BWFFQNlFBQUFBQ0xTUWpS
NmZiQkFYVHg2UUFBQUFDTFVRalI2dmJDQVhRRjZRQUFBQURwQUFBQUFJdEJDTkhvCnFBRjBCZWtB
QUFBQTZRQUFBQUNMU1FqUjZmYkJBWFFGNlFBQUFBRHBBQUFBQUl0UkNOSHE5c0lCZEFYcEFBQUFB
T2tBQUFBQWkwRUkKMGVpb0FYUUY2UUFBQUFEcEFBQUFBSXRKQ05IcDlzRUJkQVhwQUFBQUFPa0FB
QUFBaTFFSTBlcjJ3Z0YwQmVrQUFBQUE2UUFBQUFDTApRUWpSNktnQmRBWHBBQUFBQU9rQUFBQUF3
d0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFB
QUFBQUFBQUFBQUFBQUFSQUFBQVRRRUFBQVlBSHdBQUFERUJBQUFVQUM0QUFBQTVBUUFBRkFBOUFB
QUFLUUVBQUJRQVFnQUEKQUNFQkFBQVVBRkFBQUFDWkFBQUFGQUJWQUFBQWtRQUFBQlFBWkFBQUFM
a0FBQUFVQUdrQUFBQ3hBQUFBRkFCNEFBQUFxUUFBQUJRQQpmUUFBQUtFQUFBQVVBSXNBQUFDSkFB
QUFGQUNRQUFBQWV3QUFBQlFBbndBQUFNa0FBQUFVQUtRQUFBREJBQUFBRkFDekFBQUEyUUFBCkFC
UUF1QUFBQU5FQUFBQVVBTVlBQUFBWkFRQUFGQURMQUFBQUVRRUFBQlFBMEFBQUFFWUJBQUFHQU5R
QUFBQktBUUFBQmdEWUFBQUEKU0FFQUFBWUEzQUFBQUVVQkFBQUdBT0FBQUFCRUFRQUFCZ0RrQUFB
QVFnRUFBQVlBNkFBQUFFTUJBQUFHQU93QUFBQkNBUUFBQmdEdwpBQUFBUWdFQUFBWUE5QUFBQUVz
QkFBQUdBUGdBQUFCTUFRQUFCZ0Q4QUFBQVNRRUFBQVlBQUFFQUFFY0JBQUFHQUFRQUFBRDFBQUFB
CkpBQUFBQUFBQUFBQUFBQUFCQUVBQUFBQUFBQUFBQUFBQUFBQUFCY25BQUFBQUFBQUJBQUFBUEVB
QUFBcUFRQUFSZ0FRRVFBQUFBQUEKQUFBQUFBQUFBQVFCQUFBQUFBQUF6d0FBQUlFUUFBQUFBQUFB
QUFBQVRXVmthV0ZNWldkaFkzbFZTVWx0WVdkbFJXeGxiV1Z1ZERvNgphVzFoWjJVQUhBQVNFQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQUFEUUFNRVFBQUFBQUFBQUFBQUFBQUR3QUZF
UUFBCkFBQUFBQUFrVEU0eE1RQVBBQVVSQUFBQUFBQUFBQ1JNVGpFd0FBNEFCUkVBQUFBQUFBQUFK
RXhPT1FBT0FBVVJBQUFBQUFBQUFDUk0KVGpnQURnQUZFUUFBQUFBQUFBQWtURTQzQUE0QUJSRUFB
QUFBQUFBQUpFeE9OZ0FPQUFVUkFBQUFBQUFBQUNSTVRqVUFEZ0FGRVFBQQpBQUFBQUFBa1RFNDBB
QTRBQlJFQUFBQUFBQUFBSkV4T013QU9BQVVSQUFBQUFBQUFBQ1JNVGpJQURRQUdFWHNRQUFBU0FI
Um9hWE1BCkFnQUdBQUFBOGdBQUFJQUFBQUFBQUFBQUFBQUFBQVFCQUFBSUJBQUFEUUFBQUhRQUFB
QUFBQUFBVHdBQWdBQUFBQUJTQUFDQUZRQUEKQUZRQUFJQWpBQUFBVndBQWdESUFBQUJhQUFDQVJn
QUFBRjBBQUlCWkFBQUFZQUFBZ0cwQUFBQmpBQUNBZ1FBQUFHWUFBSUNVQUFBQQphUUFBZ0tnQUFB
QnNBQUNBdkFBQUFHOEFBSURQQUFBQWV3QUFnQXdBQUFCQkFRQUFCd0JZQUFBQVFRRUFBQXNBWEFB
QUFFRUJBQUFLCkFLWUFBQUJOQVFBQUN3Q3FBQUFBVFFFQUFBb0FzUUFBQUV3QkFBQUxBTFVBQUFC
TUFRQUFDZ0RDQUFBQVN3RUFBQXNBeGdBQUFFc0IKQUFBS0FOTUFBQUJLQVFBQUN3RFhBQUFBU2dF
QUFBb0E0d0FBQUVrQkFBQUxBT2NBQUFCSkFRQUFDZ0R6QUFBQVNBRUFBQXNBOXdBQQpBRWdCQUFB
S0FBTUJBQUJIQVFBQUN3QUhBUUFBUndFQUFBb0FFd0VBQUVZQkFBQUxBQmNCQUFCR0FRQUFDZ0Fq
QVFBQVJRRUFBQXNBCkp3RUFBRVVCQUFBS0FETUJBQUJFQVFBQUN3QTNBUUFBUkFFQUFBb0FRd0VB
QUVNQkFBQUxBRWNCQUFCREFRQUFDZ0JzQVFBQVFRRUEKQUFzQWNBRUFBRUVCQUFBS0FGV0w3SVBr
d0lQc2RObnVVMWFMOGR4V0dGZUpkQ1E4MytEMnhFUjdNTjFHRU54MkdOMVVKRURlMmQvZwo5c1JC
ZFNIb0FBQUFBTm5vM0Z3a1FJbEVKRERmNFBiRVJIb1U2QUFBQUFEckV0MWNKRURvQUFBQUFJbEVK
RERvQUFBQUFJdE5ESXNXCmkzMFVpM1VJaTEwWWkxSVFnK3dRaVVRa09JdkVpUWlMVFJDSlNBU0xU
Q1JNaVhnSVZvbFlEUC9TalVRa2FGWlEveFVBQUFBQTJlaUwKQ0l0UUJJbE1KRmpZVkNSWWkwZ0lp
VlFrWEl0UURJbE1KR0NMU0JDSlZDUmtpMUFVMytEWjdvUEVDUGJFUklsTUpHQ0pWQ1JreDBRawpP
QUFBQUFBUGl0SURBQURZVkNSVTMrRDJ4RVFQaXNNREFBRFlYQ1JZMytEMnhFUVBpcllEQUFEWlJD
UmMzZUhmNE4zWjlzUkVleFhaCkJRQUFBQURhNmQvZzlzUkVENHFXQXdBQTZ3TGQyTmxGRUlQc0NO
bGNKQVNMenRsRkRNWkVKQ3NCMlJ3a1VmOFZBQUFBQUlQRUROa0YKQUFBQUFJUHNDTmxjSkFUWjZO
a2NKRmIvRlFBQUFBQ0xWUXhSaTAwUWk4U0pFSWxJQklsNENJbFlEUDhWQUFBQUFObmdnOFFJMlZ3
awpCTm51MlJ3a1Z2OFZBQUFBQUl0VkRGR0xUUkNMeElrUWlVZ0VpWGdJaVZnTS94VUFBQUFBMlZ3
a05JdFZESXRORUl2RWlSQ0pTQVNKCmVBaUpXQXovRlFBQUFBRFpYQ1JFaTFRa1FGTC9GUUFBQUFD
RndJbEVKRURiUkNSQWZRYllCUUFBQUFEWVRDUTRpMFFrUkZEZFhDUmcKL3hVQUFBQUFoY0NKUkNS
RTIwUWtSSDBHMkFVQUFBQUEzSHdrWUlQRUVObGNKRFRaUkNRMDNSd2s2QUFBQUFEWlhDUTAyVVFr
Tkl0TQpKRGpaWENRMGc4UUkyZTVSMlZRa1ZJUHNFTmxjSkdpTHhObEVKRUNMVkNSa2kwd2thTmxj
Skd6WlJDUTRpUkNMVkNSczJWd2tjSWxJCkJJdE1KSENKVUFoV2lVZ00veFVBQUFBQWkxUWtRRkwv
RlFBQUFBQ0Z3SWxFSkV6YlJDUk1mUWJZQlFBQUFBRFlUQ1JBaTBRa1JGRGQKWENSbzJVUWtWTmhr
SkV6ZFhDUncveFVBQUFBQWhjQ0pSQ1JRMjBRa1VIMEcyQVVBQUFBQTNId2thSVBFR05sY0pEalpS
Q1E0M0d3awpXTmxjSkRqWlJDUTQzUndrNkFBQUFBQ0xUQ1F3MlZ3a09ObEVKRGlEeEFqWlhDUXdV
ZGxFSkRTRDdCRFlSQ1JBaThSVzJWUWthSXRVCkpHalo3b2tRMlZ3a2JJdE1KR3lKU0FUWWJDUk0y
VndrY0l0VUpIRFpSQ1E4aVZBSTJWd2tkSXRNSkhTSlNBei9GUUFBQUFEWlJDUkkKM0V3a1dJUEVF
TmxjSkR6WlJDUTgzUndrNkFBQUFBRFpYQ1E4ZzhRSTJVUWtOTmxjSkRUWlJDUXcyVVFrTk5uQTN1
clp5ZGxjSkREWgo3dG5BM2VyZjRQYkVSQStMaGdBQUFObEVKQ3hXMlZ3a1ZObGNKRmpaWENSYzJV
UWtLTmxjSkdEL0ZRQUFBQUNMVkNSVWkwd2tXSVBzCkRJdkVpUkNMVkNSb2lVZ0VpMHdrYklsUUNG
YUpTQXovRlFBQUFBQ0R4QlRvQUFBQUFJdFVKRkNMVENSVVVJUHNFSXZFaVJDTFZDUnMKaVVnRWkw
d2tjSWxRQ0ZhSlNBei9GUUFBQUFCVy94VUFBQUFBMlVRa1VObnVnOFFjMmNEWlJDUXczZUhmNE4z
WjlzUkVENHV4QUFBQQoyVVFrTEZiZXc5bksyVndrVk5sY0pGalpYQ1JjMlVRa0tObGNKR0QvRlFB
QUFBQ0xWQ1JVaTB3a1dJUHNESXZFaVJDTFZDUm9pVWdFCmkwd2tiSWxRQ0ZhSlNBei9GUUFBQUFD
RHhCVG9BQUFBQUl0VUpGQ0xUQ1JVVUlQc0VJdkVpUkNMVkNSc2lVZ0VpMHdrY0lsUUNGYUoKU0F6
L0ZRQUFBQUJXL3hVQUFBQUFnOFFjNnpIZDJkM1lhZ0JUaThaWFVNWkVKRE1BL3hVQUFBQUFVSWxF
SkV6L0ZRQUFBQUNEeEJTTAo4T2xvL1AvLzNkcmQyTjNZZ0h3a0l3QjFMNHQwSkRpTFZReUxUUkJX
Zyt3UWk4U0pFSXRWQ0lsSUJJbDRDRktKV0F6L0ZRQUFBQUJXCi94VUFBQUFBZzhRY2kwd2tQSXNC
aTFVSWkwQVVVdi9RWDE1YmkrVmR3aFFBTWdBQUFPRUFBQUFVQUVnQUFBQUJBUUFBRkFCVEFBQUEK
NlFBQUFCUUFYQUFBQUFrQkFBQVVBSmNBQUFCdUFRQUFCZ0FSQVFBQVp3RUFBQVlBUUFFQUFHUUJB
QUFHQUVrQkFBQm5BUUFBQmdCYwpBUUFBWXdFQUFBWUFkZ0VBQUdJQkFBQUdBSXNCQUFCa0FRQUFC
Z0NsQVFBQVlnRUFBQVlBd2dFQUFHRUJBQUFHQU5FQkFBQmdBUUFBCkJnRGpBUUFBWHdFQUFBWUE5
Z0VBQUZ3QkFBQUdBQWdDQUFCZkFRQUFCZ0FmQWdBQWNRQUFBQlFBZEFJQUFGc0JBQUFHQUg4Q0FB
QmcKQVFBQUJnQ1JBZ0FBWHdFQUFBWUFzQUlBQUZ3QkFBQUdBTUlDQUFCZkFRQUFCZ0RsQWdBQWNR
QUFBQlFBUWdNQUFGc0JBQUFHQUYwRApBQUJ4QUFBQUZBQ3VBd0FBV2dFQUFBWUExUU1BQUZrQkFB
QUdBTjBEQUFEeEFBQUFGQUFGQkFBQVdBRUFBQVlBREFRQUFGY0JBQUFHCkFFMEVBQUJhQVFBQUJn
QjBCQUFBV1FFQUFBWUFmQVFBQVBrQUFBQVVBS1FFQUFCWUFRQUFCZ0NyQkFBQVZ3RUFBQVlBeGdR
QUFGWUIKQUFBR0FORUVBQUJWQVFBQUJnQU5CUUFBVkFFQUFBWUFGQVVBQUZNQkFBQUdBQVFBQUFE
MUFBQUFSQUFBQUFBQUFBQUFBQUFBTXdVQQpBSFFBQUFBVUFBQUFBQUFBQU5ZbkFBQVhBQWdBQkFB
QUFBd0FBQUFuQlFBQWRBQUFBQlFBQUFBQUFBQUFSU2dBQUFzQURBQUFBQUFBCjhRQUFBRzhEQUFC
SUFCQVJBQUFBQUFBQUFBQUFBQUFBTXdVQUFCY0FBQUFxQlFBQWp4QUFBQUFBQUFBQUFBRk5aV1Jw
WVV4bFoyRmoKZVZWSlZHbHRaV3hwYm1WVGJHbGtaWEk2T25CaGFXNTBBQndBRWhCMEFBQUFBQUFB
QUFBQUFBQU1BQUFBQUFBQUFBQUFBQUlBQUEwQQpCaEdPRUFBQUVnQjBhR2x6QUJRQUVSRUlBQUFB
S1JBQUFCWUFZMjl1ZEdWNGRBQVJBQkVSREFBQUFBNFFBQUFXQUhKbFkzUUFHZ0FMCkVhUC8vLzh3
QUFBQVkyRnVSSEpoZDBScGNtVmpkR3g1QUJVQUN4SFEvLy8vRVJBQUFHTjFjbkpsYm5SRFZFMEFF
QUFMRWJqLy8vOXQKRWdBQWJHRjVaWElBRlFBTEVhVC8vLzlBQUFBQVpHVnpkRWhsYVdkb2RBQVlB
QXNSclAvLy8wQUFBQUJrWlhOMFRHVm1kRmRwWkhSbwpBQllBQ3hHMC8vLy9RQUFBQUd4dllXUmxa
RmRwWkhSb0FCRUFDeEhBLy8vL1FRQUFBR3h2WVdSbFpBQVVBQXNSdFAvLy8wQUFBQUJrClpYTjBW
MmxrZEdnQUZRQUxFYWovLy8rQUVBQUFjbWxuYUhSSmJXRm5aUUFaQUFzUnNQLy8vMEFBQUFCeVpX
MWhhVzVwYm1kWGFXUjAKYUFBVUFBc1JzUC8vLzRBUUFBQnNaV1owU1cxaFoyVUFHZ0FMRWJELy8v
OUFBQUFBWkdWemRFMXBaR1JzWlZkcFpIUm9BQTRBT1JHTgpBQUFBQUFBQUFKSVFBQUFPQURrUmxR
QUFBQUFBQUFCckVnQUFEZ0E1RVQ0QkFBQUFBQUFBWUJJQUFBNEFPUkZhQVFBQUFBQUFBR0FTCkFB
QU9BRGtSZEFFQUFBQUFBQUJpRWdBQURnQTVFWWtCQUFBQUFBQUFZQklBQUE0QU9SR2pBUUFBQUFB
QUFHSVNBQUFPQURrUndBRUEKQUFBQUFBQmlFZ0FBRGdBNUVjOEJBQUFBQUFBQWFSSUFBQTRBT1JI
MEFRQUFBQUFBQUdrU0FBQU9BRGtSY2dJQUFBQUFBQUJrRWdBQQpEZ0E1RVgwQ0FBQUFBQUFBYVJJ
QUFBNEFPUkd1QWdBQUFBQUFBR2tTQUFBT0FEa1JRQU1BQUFBQUFBQmtFZ0FBRGdBNUVhd0RBQUFB
CkFBQUFqQkFBQUE0QU9SSFRBd0FBQUFBQUFIVVNBQUFPQURrUkF3UUFBQUFBQUFCa0VnQUFEZ0E1
RVFvRUFBQUFBQUFBakJBQUFBNEEKT1JGTEJBQUFBQUFBQUl3UUFBQU9BRGtSY2dRQUFBQUFBQUIx
RWdBQURnQTVFYUlFQUFBQUFBQUFaQklBQUE0QU9SR3BCQUFBQUFBQQpBSXdRQUFBT0FEa1J4QVFB
QUFBQUFBQnlFZ0FBRGdBNUVjOEVBQUFBQUFBQWRCSUFBQTRBT1JFTEJRQUFBQUFBQUhjU0FBQU9B
RGtSCkVnVUFBQUFBQUFCNEVnQUFEZ0E1RVNnRkFBQUFBQUFBa3hBQUFBSUFCZ0FBOGdBQUFKQUJB
QUFBQUFBQUFBQUFBRE1GQUFBSUJBQUEKTHdBQUFJUUJBQUFBQUFBQWZ3QUFnQWtBQUFDREFBQ0FL
QUFBQUlRQUFJQXhBQUFBaFFBQWdEWUFBQUNHQUFDQVRnQUFBSU1BQUlCUwpBQUFBaUFBQWdGc0FB
QUNKQUFDQVlBQUFBSXdBQUlDUEFBQUFqZ0FBZ0pzQUFBQ1RBQUNBSmdFQUFKZ0FBSUJIQVFBQW1n
QUFnR0FCCkFBQ2JBQUNBandFQUFKMEFBSUN0QVFBQW5nQUFnTW9CQUFDZ0FBQ0FLd0lBQUtFQUFJ
QjRBZ0FBb3dBQWdLSUNBQUNrQUFDQXhnSUEKQUtNQUFJREtBZ0FBcEFBQWdPa0NBQUNuQUFDQVJn
TUFBS2tBQUlCd0F3QUFxZ0FBZ0lJREFBQ3JBQUNBa3dNQUFLd0FBSUNYQXdBQQpyUUFBZ0xJREFB
Q3VBQUNBM0FNQUFLOEFBSUFKQkFBQXNBQUFnQmtFQUFDekFBQ0FMZ1FBQUxRQUFJQXlCQUFBdFFB
QWdGRUVBQUMyCkFBQ0Fld1FBQUxjQUFJQ29CQUFBdUFBQWdMUUVBQUNUQUFDQXVBUUFBSlVBQUlE
S0JBQUFsZ0FBZ05vRUFBQ1hBQUNBM3dRQUFMZ0EKQUlEbEJBQUF1d0FBZ093RUFBQzhBQUNBRVFV
QUFMMEFBSUFiQlFBQXdBQUFnQ29GQUFEQkFBQ0FEQUFBQUZJQkFBQUhBSGdBQUFCUwpBUUFBQ3dC
OEFBQUFVZ0VBQUFvQUZ3SUFBRklCQUFBTEFCc0NBQUJTQVFBQUNnQW5BZ0FBVWdFQUFBc0FLd0lB
QUZJQkFBQUtBRGNDCkFBQlNBUUFBQ3dBN0FnQUFVZ0VBQUFvQVJ3SUFBRklCQUFBTEFFc0NBQUJT
QVFBQUNnQlhBZ0FBVWdFQUFBc0FXd0lBQUZJQkFBQUsKQUdjQ0FBQlNBUUFBQ3dCckFnQUFVZ0VB
QUFvQWR3SUFBRklCQUFBTEFIc0NBQUJTQVFBQUNnQ0hBZ0FBVWdFQUFBc0Fpd0lBQUZJQgpBQUFL
QUpjQ0FBQlNBUUFBQ3dDYkFnQUFVZ0VBQUFvQXB3SUFBRklCQUFBTEFLc0NBQUJTQVFBQUNnQzNB
Z0FBVWdFQUFBc0F1d0lBCkFGSUJBQUFLQU1jQ0FBQlNBUUFBQ3dETEFnQUFVZ0VBQUFvQTF3SUFB
RklCQUFBTEFOc0NBQUJTQVFBQUNnRG5BZ0FBVWdFQUFBc0EKNndJQUFGSUJBQUFLQVBjQ0FBQlNB
UUFBQ3dEN0FnQUFVZ0VBQUFvQUJ3TUFBRklCQUFBTEFBc0RBQUJTQVFBQUNnQVhBd0FBVWdFQQpB
QXNBR3dNQUFGSUJBQUFLQUNjREFBQlNBUUFBQ3dBckF3QUFVZ0VBQUFvQU53TUFBRklCQUFBTEFE
c0RBQUJTQVFBQUNnQkhBd0FBClVnRUFBQXNBU3dNQUFGSUJBQUFLQUZjREFBQlNBUUFBQ3dCYkF3
QUFVZ0VBQUFvQVp3TUFBRklCQUFBTEFHc0RBQUJTQVFBQUNnQjMKQXdBQVVnRUFBQXNBZXdNQUFG
SUJBQUFLQUljREFBQlNBUUFBQ3dDTEF3QUFVZ0VBQUFvQWx3TUFBRklCQUFBTEFKc0RBQUJTQVFB
QQpDZ0NuQXdBQVVnRUFBQXNBcXdNQUFGSUJBQUFLQUxjREFBQlNBUUFBQ3dDN0F3QUFVZ0VBQUFv
QTBBTUFBRklCQUFBTEFOUURBQUJTCkFRQUFDZ0FBQUlCUEFBQ0F2d0FBQUFBQUFJQS9BQUFBQUFB
QThEK0x3Y2NBQUFBQUFNTUVBQUFBTWdBQUFBWUFCQUFBQVBVQUFBQWsKQUFBQUFBQUFBQUFBQUFB
SkFBQUFBQUFBQUFBQUFBQUFBQUFBRnljQUFBSUFBQUFFQUFBQThRQUFBSGNBQUFCRUFCQVJBQUFB
QUFBQQpBQUFBQUFBQUNRQUFBQUlBQUFBSUFBQUFKeEFBQUFBQUFBQUFBQUJOWldScFlWVkpSV3hs
YldWdWREbzZUV1ZrYVdGVlNVVnNaVzFsCmJuUUFIQUFTRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQWdDZ0FBRFFBR0VTTVFBQUFTQUhSb2FYTUFBZ0FHQUFBTUFBQUEKZGdFQUFBY0FXQUFB
QUhZQkFBQUxBRndBQUFCMkFRQUFDZ0NMd2NjQUFBQUFBTU1FQUFBQWZnRUFBQVlBQkFBQUFQVUFB
QUFrQUFBQQpBQUFBQUFBQUFBQUpBQUFBQUFBQUFBQUFBQUFBQUFBQUZ5Y0FBQUlBQUFBRUFBQUE4
UUFBQUlVQUFBQlNBQkFSQUFBQUFBQUFBQUFBCkFBQUFDUUFBQUFJQUFBQUlBQUFBVlJBQUFBQUFB
QUFBQUFCTlpXUnBZVlZKVkdsdFpXeHBibVZUYkdsa1pYSTZPazFsWkdsaFZVbFUKYVcxbGJHbHVa
Vk5zYVdSbGNnQWNBQklRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQUtBQUFOQUFZUlRC
QUFBQklBZEdocApjd0FDQUFZQUFBQUFEQUFBQUhzQkFBQUhBRmdBQUFCN0FRQUFDd0JjQUFBQWV3
RUFBQW9BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFJQUJBQUFHQUFRQUFB
QTJBQUFBQmdBSUFBQUFQUUFBQUFZQURBQUFBRU1BQUFBR0FCQUFBQUEzQUFBQUJnQVUKQUFBQU9B
QUFBQVlBeHdFQUFBQUF3d0lBQUFBeUFBQUFCZ0FFQUFBQTlRQUFBQ1FBQUFBQUFBQUFBQUFBQUFj
QUFBQUFBQUFBQUFBQQpBQUFBQUFBWEp3QUFBQUFBQUFRQUFBRHhBQUFBaGdBQUFGTUFFQkVBQUFB
QUFBQUFBQUFBQUFBSEFBQUFBQUFBQUFZQUFBQlZFQUFBCkFBQUFBQUFBQUUxbFpHbGhWVWxVYVcx
bGJHbHVaVk5zYVdSbGNqbzZmazFsWkdsaFZVbFVhVzFsYkdsdVpWTnNhV1JsY2dBY0FCSVEKQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQUtBQUFOQUFZUlRCQUFBQklBZEdocGN3QUNBQVlB
QUFBTUFBQUFoZ0VBQUFjQQpXQUFBQUlZQkFBQUxBRndBQUFDR0FRQUFDZ0QyUkNRRUFWYUw4Y2NH
QUFBQUFIUUpWdWdBQUFBQWc4UUVpOFpld2dRQUNnQUFBRElBCkFBQUdBQklBQUFCWkFBQUFGQUFF
QUFBQTlRQUFBRVFBQUFBQUFBQUFBQUFBQUI4QUFBQUFBQUFBQkFBQUFBQUFBQUFYSndBQUNBQUEK
QUFRQUFBQUdBQUFBRmdBQUFBQUFBQUFFQUFBQUFBQUFBQmNuQUFBQ0FBUUFBQUFBQVBFQUFBQ01B
QUFBV1FBUUVRQUFBQUFBQUFBQQpBQUFBQUI4QUFBQUlBQUFBSEFBQUFGa1FBQUFBQUFBQUFBQUFU
V1ZrYVdGVlNWUnBiV1ZzYVc1bFUyeHBaR1Z5T2pwZ2MyTmhiR0Z5CklHUmxiR1YwYVc1bklHUmxj
M1J5ZFdOMGIzSW5BQndBRWhBQUFBQUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFBQUFJQUlBQUEwQUJo
Rk0KRUFBQUVnQjBhR2x6QUFJQUJnQU1BQUFBZndFQUFBY0FlQUFBQUg4QkFBQUxBSHdBQUFCL0FR
QUFDZ0NEN0JCVGkxd2tIRldMYkNRawpWbGVMZkNRa2crd1FpOFNMOFl0TUpFQ0xGb3RTRUlrWWlX
Z0VpVWdJaTB3a1JJbElERmVMenYvUzJVUWtMSVBzQ05sY0pBVFpSQ1F3CjJSd2tWLzhWQUFBQUFO
a0ZBQUFBQUlQRUJObGNKQVRaNk5rY0pGZi9GUUFBQUFDTFZDUkFVWXRNSkVDTHhJa1lpV2dFaVVn
SWlWQU0KL3hVQUFBQUEyZUNEeEFqWlhDUUUyZTdaSENSWC94VUFBQUFBMmU2TFZDUkEyVlFrSEZI
WlhDUWtpMHdrUUl2RWlSaUphQVNKU0FpSgpVQXovRlFBQUFBRFpYQ1FvaTB3a1FJdFVKRVNMeElr
WWlXZ0VpVWdJaVZBTS94VUFBQUFBMlZ3a0xJUEVFSXZPNkFBQUFBQ0xUQ1FRClVJUHNFSXZFaVFp
TFZDUW9pMHdrTElsUUJJdFVKRENKU0FoWGlWQU0veFVBQUFBQWl3YUxVQlNEeEJoWGk4Ny8wbDll
WFZ1RHhCREMKRkFCTUFBQUFaQUVBQUFZQVVnQUFBR2NCQUFBR0FHVUFBQUJqQVFBQUJnQ0JBQUFB
WWdFQUFBWUFsZ0FBQUdRQkFBQUdBTHdBQUFCaApBUUFBQmdEYkFBQUFZZ0VBQUFZQTZRQUFBRUVC
QUFBVUFCRUJBQUJiQVFBQUJnQUVBQUFBOVFBQUFHUUFBQUFBQUFBQUFBQUFBQ3dCCkFBQVFBQUFB
RkFBQUFBQUFBQUFYSndBQUdnQUlBQVFBQUFBRUFBQUFLQUVBQUJBQUFBQVVBQUFBQUFBQUFNY29B
QUFXQUF3QUFBQUEKQUFrQUFBQWpBUUFBRUFBQUFCUUFBQUFBQUFBQU1Da0FBQkVBRUFBQUFBQUE4
UUFBQUM0QkFBQkdBQkFSQUFBQUFBQUFBQUFBQUFBQQpMQUVBQUJvQUFBQWlBUUFBZVJBQUFBQUFB
QUFBQUFCTlpXUnBZVXhsWjJGamVWVkpTVzFoWjJWRmJHVnRaVzUwT2pwd1lXbHVkQUFjCkFCSVFF
QUFBQUFBQUFBQUFBQUFBRUFBQUFBQUFBQUFBQUFBQ0FBQU5BQVlSZUJBQUFCSUFkR2hwY3dBU0FB
c1JCQUFBQUNrUUFBQmoKYjI1MFpYaDBBQThBQ3hFSUFBQUFEaEFBQUhKbFkzUUFEZ0E1RVRVQUFB
QUFBQUFBZlJBQUFBNEFPUkZLQUFBQUFBQUFBR0FTQUFBTwpBRGtSWXdBQUFBQUFBQUJnRWdBQURn
QTVFWDhBQUFBQUFBQUFZaElBQUE0QU9SR1VBQUFBQUFBQUFHQVNBQUFPQURrUnVnQUFBQUFBCkFB
QmlFZ0FBRGdBNUVka0FBQUFBQUFBQVloSUFBQTRBT1JFUEFRQUFBQUFBQUdRU0FBQU9BRGtSSUFF
QUFBQUFBQUIrRUFBQUFnQUcKQUFBQThnQUFBRmdBQUFBQUFBQUFBQUFBQUN3QkFBQUlCQUFBQ0FB
QUFFd0FBQUFBQUFBQVBRQUFnQVFBQUFBK0FBQ0FOd0FBQUQ4QQpBSUJRQUFBQVFBQUFnR2tBQUFC
QkFBQ0FtZ0FBQUVJQUFJQVZBUUFBUXdBQWdDSUJBQUJFQUFDQURBQUFBSkFCQUFBSEFKZ0FBQUNR
CkFRQUFDd0NjQUFBQWtBRUFBQW9BRmdFQUFKQUJBQUFMQUJvQkFBQ1FBUUFBQ2dBbUFRQUFrQUVB
QUFzQUtnRUFBSkFCQUFBS0FEWUIKQUFDUUFRQUFDd0E2QVFBQWtBRUFBQW9BUmdFQUFKQUJBQUFM
QUVvQkFBQ1FBUUFBQ2dCV0FRQUFrQUVBQUFzQVdnRUFBSkFCQUFBSwpBR1lCQUFDUUFRQUFDd0Jx
QVFBQWtBRUFBQW9BZGdFQUFKQUJBQUFMQUhvQkFBQ1FBUUFBQ2dDR0FRQUFrQUVBQUFzQWlnRUFB
SkFCCkFBQUtBSllCQUFDUUFRQUFDd0NhQVFBQWtBRUFBQW9Bc0FFQUFKQUJBQUFMQUxRQkFBQ1FB
UUFBQ2dDRDdBeFc2QUFBQUFDTDhJWDIKZEZWVy94VUFBQUFBaGNDSlJDUUkyMFFrQ0gwRzJBVUFB
QUFBVnRsY0pCRC9GUUFBQUFDRHhBaUZ3SWxFSkFUYlJDUUVmUWJZQlFBQQpBQUNMUkNRVTJWd2tE
SXRNSkFpTFZDUU1pUWlKVUFSZWc4UU13Z1FBaXcwQUFBQUFpeEdMUkNRVWkwa0VpUkNKU0FSZWc4
UU13Z1FBCkJRQUFBRUVCQUFBVUFCSUFBQUJnQVFBQUJnQWtBQUFBWHdFQUFBWUFMd0FBQUZ3QkFB
QUdBRVFBQUFCZkFRQUFCZ0JtQUFBQVJBQUEKQUFZQUJBQUFBUFVBQUFCRUFBQUFBQUFBQUFBQUFB
Qi9BQUFBREFBQUFBUUFBQUFBQUFBQUZ5Y0FBQVFBQUFBRUFBQUFCQUFBQUhVQQpBQUFNQUFBQUJB
QUFBQUFBQUFBWEp3QUFBQUFFQUFBQUFBRHhBQUFBbndBQUFFd0FFQkVBQUFBQUFBQUFBQUFBQUFC
L0FBQUFCQUFBCkFIa0FBQUI4RUFBQUFBQUFBQUFBQUUxbFpHbGhUR1ZuWVdONVZVbEpiV0ZuWlVW
c1pXMWxiblE2T201aGRIVnlZV3hUYVhwbEFCd0EKRWhBTUFBQUFBQUFBQUFBQUFBQUVBQUFBQUFB
QUFBQUFBQUlBQUEwQUJoRjdFQUFBRWdCMGFHbHpBQTRBT1JFUUFBQUFBQUFBQUdrUwpBQUFPQURr
UkxRQUFBQUFBQUFCcEVnQUFBZ0FHQUFEeUFBQUFVQUFBQUFBQUFBQUFBQUFBZndBQUFBZ0VBQUFI
QUFBQVJBQUFBQUFBCkFBQkhBQUNBQkFBQUFFZ0FBSUFMQUFBQVNRQUFnQThBQUFCS0FBQ0FYZ0FB
QUV3QUFJQmtBQUFBU3dBQWdIa0FBQUJNQUFDQURBQUEKQUpVQkFBQUhBSGdBQUFDVkFRQUFDd0I4
QUFBQWxRRUFBQW9BMXdBQUFKVUJBQUFMQU5zQUFBQ1ZBUUFBQ2dEbkFBQUFsUUVBQUFzQQo2d0FB
QUpVQkFBQUtBQUFCQUFDVkFRQUFDd0FFQVFBQWxRRUFBQW9BaThISEFBQUFBQUREQkFBQUFKMEJB
QUFHQUFRQUFBRDFBQUFBCkpBQUFBQUFBQUFBQUFBQUFDUUFBQUFBQUFBQUFBQUFBQUFBQUFCY25B
QUFDQUFBQUJBQUFBUEVBQUFDTkFBQUFXZ0FRRVFBQUFBQUEKQUFBQUFBQUFBQWtBQUFBQ0FBQUFD
QUFBQUlVUUFBQUFBQUFBQUFBQVRXVmthV0ZNWldkaFkzbFZTVWx0WVdkbFJXeGxiV1Z1ZERvNgpU
V1ZrYVdGTVpXZGhZM2xWU1VsdFlXZGxSV3hsYldWdWRBQWNBQklRQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFDQUtBQUFOCkFBWVJlQkFBQUJJQWRHaHBjd0FDQUFZQUFBQUFEQUFBQUpvQkFB
QUhBRmdBQUFDYUFRQUFDd0JjQUFBQW1nRUFBQW9BQUFBQUFBQUEKQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFKOEJBQUFHQUFRQUFBQ1FBUUFBQmdBSUFBQUFQUUFBQUFZQURBQUFBSlVCQUFB
RwpBQkFBQUFDbEFRQUFCZ0FVQUFBQXFnRUFBQVlBaTBRa0JGRC9GUUFBQUFCWndoUUFCd0FBQUZv
QkFBQUdBQVFBQUFEMUFBQUFKQUFBCkFBQUFBQUFBQUFBQUR3QUFBQUFBQUFBVUFBQUFBQUFBQUJj
bkFBQUFBQUFBQkFBQUFQRUFBQURFQUFBQVdBQVFFUUFBQUFBQUFBQUEKQUFBQUFBOEFBQUFBQUFB
QURBQUFBSDBRQUFBQUFBQUFBQUFBVFdWa2FXRk1aV2RoWTNsVlNVbHRZV2RsUld4bGJXVnVkRG82
YzJWMApWWEJEYjI1MFpYaDBSbTl5VUdGcGJuUnBibWNBSEFBU0VBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFnQWdBQURRQUdFWHNRCkFBQVNBSFJvYVhNQUVnQUxFUVFBQUFBcEVBQUFZMjl1
ZEdWNGRBQVRBQXNSQ0FBQUFBNFFBQUJmWDJadmNtMWhiQUFPQURrUkJRQUEKQUFBQUFBQ01FQUFB
QWdBR0FQSUFBQUFnQUFBQUFBQUFBQUFBQUFBUEFBQUFRQTRBQUFFQUFBQVVBQUFBQUFBQUFCRUFB
SUFNQUFBQQpwUUVBQUFjQVdBQUFBS1VCQUFBTEFGd0FBQUNsQVFBQUNnRHNBQUFBcFFFQUFBc0E4
QUFBQUtVQkFBQUtBQVFCQUFDbEFRQUFDd0FJCkFRQUFwUUVBQUFvQWkwUWtCRkQvRlFBQUFBQlp3
Z1FBQndBQUFGY0JBQUFHQUFRQUFBRDFBQUFBSkFBQUFBQUFBQUFBQUFBQUR3QUEKQUFBQUFBQUVB
QUFBQUFBQUFCY25BQUFBQUFBQUJBQUFBUEVBQUFDekFBQUFYQUFRRVFBQUFBQUFBQUFBQUFBQUFB
OEFBQUFBQUFBQQpEQUFBQUg0UUFBQUFBQUFBQUFBQVRXVmthV0ZNWldkaFkzbFZTVWx0WVdkbFJX
eGxiV1Z1ZERvNmNtVnpkRzl5WlVOdmJuUmxlSFJCClpuUmxjbEJoYVc1MGFXNW5BQndBRWhBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQUlBQUEwQUJoRjdFQUFBRWdCMGFHbHoKQUJJQUN4
RUVBQUFBS1JBQUFHTnZiblJsZUhRQURnQTVFUVVBQUFBQUFBQUFqQkFBQUFJQUJnQUE4Z0FBQUNB
QUFBQUFBQUFBQUFBQQpBQThBQUFCQURnQUFBUUFBQUJRQUFBQUFBQUFBRWdBQWdBd0FBQUNxQVFB
QUJ3QllBQUFBcWdFQUFBc0FYQUFBQUtvQkFBQUtBTnNBCkFBQ3FBUUFBQ3dEZkFBQUFxZ0VBQUFv
QTlBQUFBS29CQUFBTEFQZ0FBQUNxQVFBQUNnREhBUUFBQUFEREFnQUFBRElBQUFBR0FBUUEKQUFE
MUFBQUFKQUFBQUFBQUFBQUFBQUFBQndBQUFBQUFBQUFBQUFBQUFBQUFBQmNuQUFBQUFBQUFCQUFB
QVBFQUFBQ09BQUFBV3dBUQpFUUFBQUFBQUFBQUFBQUFBQUFjQUFBQUFBQUFBQmdBQUFJVVFBQUFB
QUFBQUFBQUFUV1ZrYVdGTVpXZGhZM2xWU1VsdFlXZGxSV3hsCmJXVnVkRG82ZmsxbFpHbGhUR1Zu
WVdONVZVbEpiV0ZuWlVWc1pXMWxiblFBSEFBU0VBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEK
QUFBZ0NnQUFEUUFHRVhnUUFBQVNBSFJvYVhNQUFnQUdBQUFBREFBQUFLOEJBQUFIQUZnQUFBQ3ZB
UUFBQ3dCY0FBQUFyd0VBQUFvQQo5a1FrQkFGV2kvSEhCZ0FBQUFCMENWYm9BQUFBQUlQRUJJdkdY
c0lFQUFvQUFBQXlBQUFBQmdBU0FBQUFXUUFBQUJRQUJBQUFBUFVBCkFBQkVBQUFBQUFBQUFBQUFB
QUFmQUFBQUFBQUFBQVFBQUFBQUFBQUFGeWNBQUFnQUFBQUVBQUFBQmdBQUFCWUFBQUFBQUFBQUJB
QUEKQUFBQUFBQVhKd0FBQWdBRUFBQUFBQUR4QUFBQWtBQUFBRjBBRUJFQUFBQUFBQUFBQUFBQUFB
QWZBQUFBQ0FBQUFCd0FBQUNKRUFBQQpBQUFBQUFBQUFFMWxaR2xoVEdWbllXTjVWVWxKYldGblpV
VnNaVzFsYm5RNk9tQnpZMkZzWVhJZ1pHVnNaWFJwYm1jZ1pHVnpkSEoxClkzUnZjaWNBSEFBU0VB
QUFBQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFBQUFnQWdBQURRQUdFWGdRQUFBU0FIUm9hWE1BQWdB
R0FBd0EKQUFDZUFRQUFCd0I0QUFBQW5nRUFBQXNBZkFBQUFKNEJBQUFLQUl2Qnh3QUFBQUFBd3dR
QUFBQzhBUUFBQmdBRUFBQUE5UUFBQUNRQQpBQUFBQUFBQUFBQUFBQWtBQUFBQUFBQUFBQUFBQUFB
QUFBQVhKd0FBQWdBQUFBUUFBQUR4QUFBQWtRQUFBRjRBRUJFQUFBQUFBQUFBCkFBQUFBQUFKQUFB
QUFnQUFBQWdBQUFDWEVBQUFBQUFBQUFBQUFFMWxaR2xoVEdWbllXTjVWVWxVYVcxbGJHbHVaVk5z
YVdSbGNqbzYKVFdWa2FXRk1aV2RoWTNsVlNWUnBiV1ZzYVc1bFUyeHBaR1Z5QUJ3QUVoQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFvQQpBQTBBQmhHT0VBQUFFZ0IwYUdsekFBSUFCZ0FB
QUFBTUFBQUF1UUVBQUFjQVdBQUFBTGtCQUFBTEFGd0FBQUM1QVFBQUNnQUFBQUFBCkFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBdmdFQUFBWUFCQUFBQUZJQkFBQUdBQWdBQUFBOUFBQUFC
Z0FNQUFBQVF3QUEKQUFZQUVBQUFBTVFCQUFBR0FCUUFBQURKQVFBQUJnQ0xSQ1FFVVA4VkFBQUFB
Rm5DRkFBSEFBQUFXZ0VBQUFZQUJBQUFBUFVBQUFBawpBQUFBQUFBQUFBQUFBQUFQQUFBQUFBQUFB
QlFBQUFBQUFBQUFGeWNBQUFBQUFBQUVBQUFBOFFBQUFNWUFBQUJhQUJBUkFBQUFBQUFBCkFBQUFB
QUFBRHdBQUFBQUFBQUFNQUFBQWtoQUFBQUFBQUFBQUFBQk5aV1JwWVV4bFoyRmplVlZKVkdsdFpX
eHBibVZUYkdsa1pYSTYKT25ObGRGVndRMjl1ZEdWNGRFWnZjbEJoYVc1MGFXNW5BQndBRWhBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQUlBQUEwQQpCaEdSRUFBQUVnQjBhR2x6QUJJQUN4
RUVBQUFBS1JBQUFHTnZiblJsZUhRQUV3QUxFUWdBQUFBT0VBQUFYMTltYjNKdFlXd0FEZ0E1CkVR
VUFBQUFBQUFBQWpCQUFBQUlBQmdBQUFQSUFBQUFnQUFBQUFBQUFBQUFBQUFBUEFBQUFRQTRBQUFF
QUFBQVVBQUFBQUFBQUFCMEEKQUlBTUFBQUF4QUVBQUFjQVdBQUFBTVFCQUFBTEFGd0FBQURFQVFB
QUNnRHVBQUFBeEFFQUFBc0E4Z0FBQU1RQkFBQUtBQWdCQUFERQpBUUFBQ3dBTUFRQUF4QUVBQUFv
QWkwUWtCRkQvRlFBQUFBQlp3Z1FBQndBQUFGY0JBQUFHQUFRQUFBRDFBQUFBSkFBQUFBQUFBQUFB
CkFBQUFEd0FBQUFBQUFBQUVBQUFBQUFBQUFCY25BQUFBQUFBQUJBQUFBUEVBQUFDMUFBQUFYZ0FR
RVFBQUFBQUFBQUFBQUFBQUFBOEEKQUFBQUFBQUFEQUFBQUpNUUFBQUFBQUFBQUFBQVRXVmthV0ZN
WldkaFkzbFZTVlJwYldWc2FXNWxVMnhwWkdWeU9qcHlaWE4wYjNKbApRMjl1ZEdWNGRFRm1kR1Z5
VUdGcGJuUnBibWNBSEFBU0VBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQWdBQURRQUdF
WkVRCkFBQVNBSFJvYVhNQUVnQUxFUVFBQUFBcEVBQUFZMjl1ZEdWNGRBQU9BRGtSQlFBQUFBQUFB
QUNNRUFBQUFnQUdBQUFBQVBJQUFBQWcKQUFBQUFBQUFBQUFBQUFBUEFBQUFRQTRBQUFFQUFBQVVB
QUFBQUFBQUFCNEFBSUFNQUFBQXlRRUFBQWNBV0FBQUFNa0JBQUFMQUZ3QQpBQURKQVFBQUNnRGRB
QUFBeVFFQUFBc0E0UUFBQU1rQkFBQUtBUGdBQUFESkFRQUFDd0Q4QUFBQXlRRUFBQW9BeHdFQUFB
QUF3d0lBCkFBQXlBQUFBQmdBRUFBQUE5UUFBQUNRQUFBQUFBQUFBQUFBQUFBY0FBQUFBQUFBQUFB
QUFBQUFBQUFBWEp3QUFBQUFBQUFRQUFBRHgKQUFBQWtnQUFBRjhBRUJFQUFBQUFBQUFBQUFBQUFB
QUhBQUFBQUFBQUFBWUFBQUNYRUFBQUFBQUFBQUFBQUUxbFpHbGhUR1ZuWVdONQpWVWxVYVcxbGJH
bHVaVk5zYVdSbGNqbzZmazFsWkdsaFRHVm5ZV041VlVsVWFXMWxiR2x1WlZOc2FXUmxjZ0FjQUJJ
UUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBS0FBQU5BQVlSamhBQUFCSUFkR2hwY3dB
Q0FBWUFBQUFNQUFBQXpnRUFBQWNBV0FBQUFNNEIKQUFBTEFGd0FBQURPQVFBQUNnRDJSQ1FFQVZh
TDhjY0dBQUFBQUhRSlZ1Z0FBQUFBZzhRRWk4WmV3Z1FBQ2dBQUFESUFBQUFHQUJJQQpBQUJaQUFB
QUZBQUVBQUFBOVFBQUFFUUFBQUFBQUFBQUFBQUFBQjhBQUFBQUFBQUFCQUFBQUFBQUFBQVhKd0FB
Q0FBQUFBUUFBQUFHCkFBQUFGZ0FBQUFBQUFBQUVBQUFBQUFBQUFCY25BQUFDQUFRQUFBQUFBUEVB
QUFDU0FBQUFYd0FRRVFBQUFBQUFBQUFBQUFBQUFCOEEKQUFBSUFBQUFIQUFBQUpzUUFBQUFBQUFB
QUFBQVRXVmthV0ZNWldkaFkzbFZTVlJwYldWc2FXNWxVMnhwWkdWeU9qcGdjMk5oYkdGeQpJR1Js
YkdWMGFXNW5JR1JsYzNSeWRXTjBiM0luQUJ3QUVoQUFBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFB
QUFBSUFJQUFBMEFCaEdPCkVBQUFFZ0IwYUdsekFBSUFCZ0FBQUF3QUFBQzlBUUFBQndCNEFBQUF2
UUVBQUFzQWZBQUFBTDBCQUFBS0FGYUxkQ1FJTThDRC9neDMKVncrMmpnQUFBQUQvSkkwQUFBQUF1
QUVBQUFDRUJRQUFBQUIxTkFrRkFBQUFBR29NNkFBQUFBQ0R4QVNGd0hRU3h3QUFBQUFBaVhBRQpv
d0FBQUFCZXdnUUFNOENKY0FTakFBQUFBRjdDQkFDaEFBQUFBSWx3QkY3Q0JBQ1FBQUFBQUFBQUFB
QUFBQUFBQUFFQUFRRUFBQUFBCkR3QUFBT01CQUFBR0FCWUFBQURpQVFBQUJnQWhBQUFBNEFFQUFB
WUFLUUFBQU9BQkFBQUdBREFBQUFEZEFRQUFGQUE5QUFBQW5RRUEKQUFZQVJRQUFBTndCQUFBR0FG
TUFBQURjQVFBQUJnQmNBQUFBM0FFQUFBWUFhQUFBQU9FQkFBQUdBR3dBQUFEWkFRQUFCZ0FFQUFB
QQo5UUFBQUVRQUFBQUFBQUFBQUFBQUFIMEFBQUFBQUFBQUJBQUFBQUFBQUFBWEp3QUFBUUFBQUFR
QUFBQUJBQUFBWXdBQUFBQUFBQUFFCkFBQUFBQUFBQUJjbkFBQUFBQVFBQUFBQUFQRUFBQURZQUFB
QVNRQVFFUUFBQUFBQUFBQUFBQUFBQUgwQUFBQUJBQUFBWkFBQUFLRVEKQUFBQUFBQUFBQUFBVFdW
a2FXRk1aV2RoWTNsRGIyNTBjbTlzY3pvNlkyOXVkSEp2YkVadmNsQmhjblFBSEFBU0VBQUFBQUFB
QUFBQQpBQUFBQUFRQUFBQUFBQUFBQUFBQUFnQUFEUUFNRVFBQUFBQUFBQUFBQUFBQURRQU1FUUFB
QUFBQUFBQUFBQUFBRGdBRkVRQUFBQUFBCkFBQWtURTQwQUEwQUJoR2dFQUFBRWdCMGFHbHpBQkVB
Q3hFRUFBQUFkQUFBQUhCaGNuUkpSQUFaQUF3UmVoSUFBQUFBQUFBQUFITm8KWVhKbFpFSjFkSFJ2
YmdBQ0FBWUE4Z0FBQUhBQUFBQUFBQUFBQUFBQUFIMEFBQUFJQkFBQUN3QUFBR1FBQUFBQUFBQUF4
UUFBZ0FFQQpBQURJQUFDQUdnQUFBTlFBQUlCQkFBQUExZ0FBZ0VvQUFBRHJBQUNBVFFBQUFOUUFB
SUJQQUFBQTFnQUFnRmdBQUFEckFBQ0FXd0FBCkFOUUFBSUJnQUFBQTFnQUFnR1FBQUFEckFBQ0FE
QUFBQU5nQkFBQUhBSGdBQUFEWUFRQUFDd0I4QUFBQTJBRUFBQW9BeVFBQUFPTUIKQUFBTEFNMEFB
QURqQVFBQUNnRFlBQUFBNGdFQUFBc0EzQUFBQU9JQkFBQUtBT01BQUFEaEFRQUFDd0RuQUFBQTRR
RUFBQW9BR1FFQQpBTndCQUFBTEFCMEJBQURjQVFBQUNnQTRBUUFBMkFFQUFBc0FQQUVBQU5nQkFB
QUtBTGdCQUFBQWhBVUFBQUFBZFNnSkJRQUFBQUJxCklPZ0FBQUFBZzhRRWhjQjBETWNBQUFBQUFL
TUFBQUFBd3pQQW93QUFBQUREb1FBQUFBRERCd0FBQU80QkFBQUdBQThBQUFEdUFRQUEKQmdBV0FB
QUEzUUVBQUJRQUl3QUFBTHdCQUFBR0FDZ0FBQURyQVFBQUJnQXdBQUFBNndFQUFBWUFOZ0FBQU9z
QkFBQUdBQVFBQUFEMQpBQUFBSkFBQUFBQUFBQUFBQUFBQU93QUFBQUFBQUFBQUFBQUFBQUFBQUJj
bkFBQUFBQUFBQkFBQUFQRUFBQUNQQUFBQVFRQVFFUUFBCkFBQUFBQUFBQUFBQUFEc0FBQUFBQUFB
QU9nQUFBS0lRQUFBQUFBQUFBQUFBVFdWa2FXRk1aV2RoWTNsRGIyNTBjbTlzY3pvNmMyeHAKWkdW
eUFCd0FFaEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFBQTBBQmhHZ0VBQUFFZ0Iw
YUdsekFCa0FEQkY3RWdBQQpBQUFBQUFBQWMyaGhjbVZrVTJ4cFpHVnlBQUlBQmdBQThnQUFBRkFB
QUFBQUFBQUFBQUFBQURzQUFBQUlCQUFBQndBQUFFUUFBQUFBCkFBQUE3Z0FBZ0FBQUFBRHZBQUNB
TEFBQUFQSUFBSUF0QUFBQTd3QUFnRFFBQUFEeUFBQ0FOUUFBQVBFQUFJQTZBQUFBOGdBQWdBd0EK
QUFEb0FRQUFCd0JZQUFBQTZBRUFBQXNBWEFBQUFPZ0JBQUFLQUxBQUFBRHJBUUFBQ3dDMEFBQUE2
d0VBQUFvQTBBQUFBT2dCQUFBTApBTlFBQUFEb0FRQUFDZ0FFQUFBQThRQUFBQklBQUFBUUFBd1Jk
UUFBQUFBQUFBQUFBQ1JUTVFBQUFCUUFBQURnQVFBQUN3QVlBQUFBCjRBRUFBQW9BQkFBQUFQRUFB
QUFTQUFBQUVBQU1FWFVBQUFBQUFBQUFBQUFrVXpJQUFBQVVBQUFBN2dFQUFBc0FHQUFBQU80QkFB
QUsKQUFRQUFBQmVBQlVWZWRFdlN6MDVEMGVYbUJnZklNbVFVQVFBQUFCak9seGplV2QzYVc1Y2FH
OXRaVnhqYldGeWNtbHVYSGRsWW10cApkR0oxYVd4a1hHeHBZbHgzWldKcmFYUnplWE4wWlcxcGJu
UmxjbVpoWTJVdWRtTTRNQzV3WkdJQTh2RkFZMjl0Y0M1cFpDZkdiZ0QvCi93QUFBd0JBWm1WaGRD
NHdNQUVBQUFELy93QUFBd0F1WkhKbFkzUjJaUUFBQUFBQkFBQUFBd0hEQUFBQUFBQUFBQUFBQUFB
QUFBQUEKQUFBdVpHVmlkV2NrVXdBQUFBQUNBQUFBQXdId1Z3QUFOZ0FBQUFBQUFBQUFBQUFBQUFB
dWNtUmhkR0VBQUFBQUFBQURBQUFBQXdGUgprZ0FBQUFBQUFHRFdZRThBQUFBQUFBQUFBQUFBQkFB
QUFBQUFBQUFEQUFBQUF3QUFBQUFBSXdBQUFEQURBQUFEQUFBQUF3QUFBQUFBClNRQUFBSWdHQUFB
REFBQUFBd0FBQUFBQVp3QUFBQWdLQUFBREFBQUFBd0FBQUFBQWpBQUFBTWdOQUFBREFBQUFBd0FB
QUFBQXFnQUEKQURBUkFBQURBQUFBQXdBQUFBQUF6d0FBQU1BVUFBQURBQUFBQXdBQUFBQUE1d0FB
QUFnWUFBQURBQUFBQXdBQUFBQUFCZ0VBQUlBYgpBQUFEQUFBQUF3QUFBQUFBSHdFQUFKQWVBQUFE
QUFBQUF3QUFBQUFBUHdFQUFMZ2hBQUFEQUFBQUF3QUFBQUFBVndFQUFQZ2tBQUFECkFBQUFBd0FB
QUFBQWRnRUFBR0FvQUFBREFBQUFBd0FBQUFBQWtBRUFBSmdyQUFBREFBQUFBd0FBQUFBQXNRRUFB
T2d1QUFBREFBQUEKQXdBQUFBQUExd0VBQVBBOEFBQURBQUFBQXdBQUFBQUFCQUlBQVBoS0FBQURB
QUFBQXdBQUFBQUFLUUlBQUpoWUFBQURBQUFBQXdBQQpBQUFBVlFJQUFEQm1BQUFEQUFBQUF3QUFB
QUFBZkFJQUFEQjBBQUFEQUFBQUF3QUFBQUFBcWdJQUFEQ0NBQUFEQUFBQUF3QUFBQUFBCnd3SUFB
SUNHQUFBREFBQUFBd0FBQUFBQTR3SUFBUGlLQUFBREFBQUFBd0FBQUFBQUJRTUFBTUNPQUFBREFB
QUFBd0F1ZEdWNGRBQUEKQUFBQUFBQUVBQUFBQXdFZEFBQUFBQUFBQUUrTGVhSUFBQUlBQUFBdVpH
VmlkV2NrVXdBQUFBQUZBQUFBQXdIOEFBQUFCUUFBQUFBQQpBQUFFQUFVQUFBQUFBQUFBTGdNQUFB
QUFBQUFFQUNBQUF3QUFBQUFBVFFNQUFBQUFBQUFBQUFBQUFnQXVkR1Y0ZEFBQUFBQUFBQUFHCkFB
QUFBd0VjQUFBQUFBQUFBRGI1amNjQUFBSUFBQUF1WkdWaWRXY2tVd0FBQUFBSEFBQUFBd0VRQVFB
QUJRQUFBQUFBQUFBR0FBVUEKQUFBQUFBQUFWd01BQUFBQUFBQUdBQ0FBQXdBdWRHVjRkQUFBQUFB
QUFBQUlBQUFBQXdFSEFBQUFBUUFBQUtyaGk4QUFBQUlBQUFBdQpaR1ZpZFdja1V3QUFBQUFKQUFB
QUF3SFlBQUFBQlFBQUFBQUFBQUFJQUFVQUFBQUFBQUFBZUFNQUFBQUFBQUFJQUNBQUFnQXVjbVJo
CmRHRUFBQUFBQUFBS0FBQUFBd0VZQUFBQUJnQUFBQUFBQUFBQUFBSUFBQUFBQUFBQWtnTUFBQUFB
QUFBS0FBQUFBZ0FBQUFBQXFnTUEKQUFBQUFBQUFBQ0FBQWdBQUFBQUF5QU1BQUFBQUFBQUFBQ0FB
YVFFekFBQUFBZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUE1Z01BQUFBQQpBQUFBQUNBQUFnQUFBQUFB
OFFNQUFBQUFBQUFBQUNBQUFnQUFBQUFBT0FRQUFBQUFBQUFBQUNBQUFnQXVkR1Y0ZEFBQUFBQUFB
QUFMCkFBQUFBd0UyQUFBQUFRQUFBTWFteDVNQUFBSUFBQUF1WkdWaWRXY2tVd0FBQUFBTUFBQUFB
d0VJQVFBQUJ3QUFBQUFBQUFBTEFBVUEKQUFBQUFBQUFlZ1FBQUFBQUFBQUxBQ0FBQWdBQUFBQUFy
Z1FBQUFBQUFBQUFBQUFBQWdBdWRHVjRkQUFBQUFBQUFBQU5BQUFBQXdFWApBQUFBQVFBQUFKSlcz
QmdBQUFJQUFBQXVaR1ZpZFdja1V3QUFBQUFPQUFBQUF3SFVBQUFBQlFBQUFBQUFBQUFOQUFVQUFB
QUFBQUFBCnlRUUFBQUFBQUFBTkFDQUFBZ0FBQUFBQTl3UUFBQUFBQUFBQUFBQUFBZ0F1ZEdWNGRB
QUFBQUFBQUFBUEFBQUFBd0VLQUFBQUFBQUEKQU5iTTRURUFBQUlBQUFBdVpHVmlkV2NrVXdBQUFB
QVFBQUFBQXdIb0FBQUFCUUFBQUFBQUFBQVBBQVVBQUFBQUFBQUFDUVVBQUFBQQpBQUFQQUNBQUFn
QXVkR1Y0ZEFBQUFBQUFBQUFSQUFBQUF3RUVBQUFBQUFBQUFNT0FBUzBBQUFJQUFBQXVaR1ZpZFdj
a1V3QUFBQUFTCkFBQUFBd0hRQUFBQUJRQUFBQUFBQUFBUkFBVUFBQUFBQUFBQUxBVUFBQUFBQUFB
UkFDQUFBZ0F1ZEdWNGRBQUFBQUFBQUFBVEFBQUEKQXdFSUFBQUFBQUFBQUdVV0VvTUFBQUlBQUFB
dVpHVmlkV2NrVXdBQUFBQVVBQUFBQXdIVUFBQUFCUUFBQUFBQUFBQVRBQVVBQUFBQQpBQUFBU3dV
QUFBQUFBQUFUQUNBQUFnQXVkR1Y0ZEFBQUFBQUFBQUFWQUFBQUF3RWZBQUFBQWdBQUFMdEk4NW9B
QUFJQUFBQXVaR1ZpCmRXY2tVd0FBQUFBV0FBQUFBd0hnQUFBQUF3QUFBQUFBQUFBVkFBVUFBQUFB
QUFBQWJnVUFBQUFBQUFBVkFDQUFBZ0FBQUFBQWpBVUEKQUFBQUFBQUFBQ0FBQWdBdWRHVjRkQUFB
QUFBQUFBQVhBQUFBQXdFRUFBQUFBQUFBQU9nSHllMEFBQUlBQUFBdVpHVmlkV2NrVXdBQQpBQUFZ
QUFBQUF3SGNBQUFBQlFBQUFBQUFBQUFYQUFVQUFBQUFBQUFBbVFVQUFBQUFBQUFYQUNBQUFnQXVk
R1Y0ZEFBQUFBQUFBQUFaCkFBQUFBd0VFQUFBQUFBQUFBT0NORUNVQUFBSUFBQUF1WkdWaWRXY2tV
d0FBQUFBYUFBQUFBd0hZQUFBQUJRQUFBQUFBQUFBWkFBVUEKQUFBQUFBQUF3d1VBQUFBQUFBQVpB
Q0FBQWdBdWRHVjRkQUFBQUFBQUFBQWJBQUFBQXdFVkFBQUFBQUFBQUhZdmZZUUFBQUlBQUFBdQpa
R1ZpZFdja1V3QUFBQUFjQUFBQUF3SGdBQUFBQlFBQUFBQUFBQUFiQUFVQUFBQUFBQUFBNndVQUFB
QUFBQUFiQUNBQUFnQXVjbVJoCmRHRUFBQUFBQUFBZEFBQUFBd0VJQUFBQUFBQUFBQUFBQUFBQUFB
SUFBQUFBQUFBQUdRWUFBQUFBQUFBZEFBQUFBZ0F1ZEdWNGRBQUEKQUFBQUFBQWVBQUFBQXdFYkFB
QUFBUUFBQUlpcXUrTUFBQUlBQUFBdVpHVmlkV2NrVXdBQUFBQWZBQUFBQXdIQUFBQUFCUUFBQUFB
QQpBQUFlQUFVQUFBQmZabXh2YjNKbUFBQUFBQUFlQUNBQUFnQmZabXh2YjNJQUFBQUFBQUFBQUNB
QUFnQXVkR1Y0ZEFBQUFBQUFBQUFnCkFBQUFBd0ViQUFBQUFRQUFBSWlxdStNQUFBSUFBQUF1WkdW
aWRXY2tVd0FBQUFBaEFBQUFBd0hVQUFBQUJRQUFBQUFBQUFBZ0FBVUEKQUFBQUFBQUFNUVlBQUFB
QUFBQWdBQ0FBQXdBdWRHVjRkQUFBQUFBQUFBQWlBQUFBQXdGd0FBQUFDZ0FBQUxzMHZtUUFBQUVB
QUFBdQpaR1ZpZFdja1V3QUFBQUFqQUFBQUF3R0lBUUFBRVFBQUFBQUFBQUFpQUFVQUFBQUFBQUFB
UWdZQUFBQUFBQUFpQUNBQUF3QUFBQUFBCmJRWUFBQUFBQUFBQUFBQUFBZ0FBQUFBQWZnWUFBQUFB
QUFBQUFBQUFBZ0FBQUFBQXBnWUFBQUFBQUFBQUFBQUFBZ0FBQUFBQXpBWUEKQUFBQUFBQUFBQUFB
QWdBQUFBQUE3d1lBQUFBQUFBQUFBQUFBQWdBQUFBQUFDZ2NBQUFBQUFBQUFBQUFBQWdBdVluTnpB
QUFBQUFBQQpBQUFrQUFBQUF3RUVBQUFBQUFBQUFBQUFBQUFBQUFJQUFBQUFBQUFBSWdjQUFBQUFB
QUFrQUFBQUF3QXVkR1Y0ZEFBQUFBQUFBQUFsCkFBQUFBd0Z3QUFBQUNnQUFBRGFTU1ZNQUFBRUFB
QUF1WkdWaWRXY2tVd0FBQUFBbUFBQUFBd0dNQVFBQUVRQUFBQUFBQUFBbEFBVUEKQUFBQUFBQUFY
d2NBQUFBQUFBQWxBQ0FBQXdBdVluTnpBQUFBQUFBQUFBQW5BQUFBQXdFRUFBQUFBQUFBQUFBQUFB
QUFBQUlBQUFBQQpBQUFBa1FjQUFBQUFBQUFuQUFBQUF3QXVkR1Y0ZEFBQUFBQUFBQUFvQUFBQUF3
RndBQUFBQ2dBQUFJVi9PNjBBQUFFQUFBQXVaR1ZpCmRXY2tVd0FBQUFBcEFBQUFBd0dBQVFBQUVR
QUFBQUFBQUFBb0FBVUFBQUFBQUFBQTFRY0FBQUFBQUFBb0FDQUFBd0F1WW5OekFBQUEKQUFBQUFB
QXFBQUFBQXdFRUFBQUFBQUFBQUFBQUFBQUFBQUlBQUFBQUFBQUErZ2NBQUFBQUFBQXFBQUFBQXdB
dWRHVjRkQUFBQUFBQQpBQUFyQUFBQUF3RndBQUFBQ2dBQUFGdDdRd01BQUFFQUFBQXVaR1ZpZFdj
a1V3QUFBQUFzQUFBQUF3R0lBUUFBRVFBQUFBQUFBQUFyCkFBVUFBQUFBQUFBQU1RZ0FBQUFBQUFB
ckFDQUFBd0F1WW5OekFBQUFBQUFBQUFBdEFBQUFBd0VFQUFBQUFBQUFBQUFBQUFBQUFBSUEKQUFB
QUFBQUFYUWdBQUFBQUFBQXRBQUFBQXdBdWRHVjRkQUFBQUFBQUFBQXVBQUFBQXdGd0FBQUFDZ0FB
QUVvMVB0d0FBQUVBQUFBdQpaR1ZpZFdja1V3QUFBQUF2QUFBQUF3R0FBUUFBRVFBQUFBQUFBQUF1
QUFVQUFBQUFBQUFBbXdnQUFBQUFBQUF1QUNBQUF3QXVZbk56CkFBQUFBQUFBQUFBd0FBQUFBd0VF
QUFBQUFBQUFBQUFBQUFBQUFBSUFBQUFBQUFBQXdRZ0FBQUFBQUFBd0FBQUFBd0F1ZEdWNGRBQUEK
QUFBQUFBQXhBQUFBQXdGd0FBQUFDZ0FBQUhvTk9pQUFBQUVBQUFBdVpHVmlkV2NrVXdBQUFBQXlB
QUFBQXdHSUFRQUFFUUFBQUFBQQpBQUF4QUFVQUFBQUFBQUFBK1FnQUFBQUFBQUF4QUNBQUF3QXVZ
bk56QUFBQUFBQUFBQUF6QUFBQUF3RUVBQUFBQUFBQUFBQUFBQUFBCkFBSUFBQUFBQUFBQUpna0FB
QUFBQUFBekFBQUFBd0F1ZEdWNGRBQUFBQUFBQUFBMEFBQUFBd0Z3QUFBQUNnQUFBR3JsT1hRQUFB
RUEKQUFBdVpHVmlkV2NrVXdBQUFBQTFBQUFBQXdHQUFRQUFFUUFBQUFBQUFBQTBBQVVBQUFBQUFB
QUFaUWtBQUFBQUFBQTBBQ0FBQXdBdQpZbk56QUFBQUFBQUFBQUEyQUFBQUF3RUVBQUFBQUFBQUFB
QUFBQUFBQUFJQUFBQUFBQUFBaWdrQUFBQUFBQUEyQUFBQUF3QXVkR1Y0CmRBQUFBQUFBQUFBM0FB
QUFBd0Z3QUFBQUNnQUFBRVhnd1dJQUFBRUFBQUF1WkdWaWRXY2tVd0FBQUFBNEFBQUFBd0dJQVFB
QUVRQUEKQUFBQUFBQTNBQVVBQUFBQUFBQUF3UWtBQUFBQUFBQTNBQ0FBQXdBdVluTnpBQUFBQUFB
QUFBQTVBQUFBQXdFRUFBQUFBQUFBQUFBQQpBQUFBQUFJQUFBQUFBQUFBN1FrQUFBQUFBQUE1QUFB
QUF3QXVkR1Y0ZEFBQUFBQUFBQUE2QUFBQUF3RndBQUFBQ2dBQUFKcEN4MGNBCkFBRUFBQUF1WkdW
aWRXY2tVd0FBQUFBN0FBQUFBd0dFQVFBQUVRQUFBQUFBQUFBNkFBVUFBQUFBQUFBQUt3b0FBQUFB
QUFBNkFDQUEKQXdBdVluTnpBQUFBQUFBQUFBQThBQUFBQXdFRUFBQUFBQUFBQUFBQUFBQUFBQUlB
QUFBQUFBQUFVZ29BQUFBQUFBQThBQUFBQXdBdQpkR1Y0ZEFBQUFBQUFBQUE5QUFBQUF3RndBQUFB
Q2dBQUFIZWxSWlFBQUFFQUFBQXVaR1ZpZFdja1V3QUFBQUErQUFBQUF3R0lBUUFBCkVRQUFBQUFB
QUFBOUFBVUFBQUFBQUFBQWl3b0FBQUFBQUFBOUFDQUFBd0F1WW5OekFBQUFBQUFBQUFBL0FBQUFB
d0VFQUFBQUFBQUEKQUFBQUFBQUFBQUlBQUFBQUFBQUF1UW9BQUFBQUFBQS9BQUFBQXdBdWRHVjRk
QUFBQUFBQUFBQkFBQUFBQXdGd0FBQUFDZ0FBQUlxcQp4Qk1BQUFFQUFBQXVaR1ZpZFdja1V3QUFB
QUJCQUFBQUF3R0lBUUFBRVFBQUFBQUFBQUJBQUFVQUFBQUFBQUFBK1FvQUFBQUFBQUJBCkFDQUFB
d0F1WW5OekFBQUFBQUFBQUFCQ0FBQUFBd0VFQUFBQUFBQUFBQUFBQUFBQUFBSUFBQUFBQUFBQUpR
c0FBQUFBQUFCQ0FBQUEKQXdBdWRHVjRkQUFBQUFBQUFBQkRBQUFBQXdGd0FBQUFDZ0FBQUdPM1J0
VUFBQUVBQUFBdVpHVmlkV2NrVXdBQUFBQkVBQUFBQXdHUQpBUUFBRVFBQUFBQUFBQUJEQUFVQUFB
QUFBQUFBWXdzQUFBQUFBQUJEQUNBQUF3QXVZbk56QUFBQUFBQUFBQUJGQUFBQUF3RUVBQUFBCkFB
QUFBQUFBQUFBQUFBSUFBQUFBQUFBQWxnc0FBQUFBQUFCRkFBQUFBd0F1ZEdWNGRBQUFBQUFBQUFC
R0FBQUFBd0Z3QUFBQUNnQUEKQUFhUy9rSUFBQUVBQUFBdVpHVmlkV2NrVXdBQUFBQkhBQUFBQXdH
UUFRQUFFUUFBQUFBQUFBQkdBQVVBQUFBQUFBQUEyd3NBQUFBQQpBQUJHQUNBQUF3QXVZbk56QUFB
QUFBQUFBQUJJQUFBQUF3RUVBQUFBQUFBQUFBQUFBQUFBQUFJQUFBQUFBQUFBRGd3QUFBQUFBQUJJ
CkFBQUFBd0F1ZEdWNGRBQUFBQUFBQUFCSkFBQUFBd0Z3QUFBQUNnQUFBUHk4Z1ZFQUFBRUFBQUF1
WkdWaWRXY2tVd0FBQUFCS0FBQUEKQXdHVUFRQUFFUUFBQUFBQUFBQkpBQVVBQUFBQUFBQUFVd3dB
QUFBQUFBQkpBQ0FBQXdBdVluTnpBQUFBQUFBQUFBQkxBQUFBQXdFRQpBQUFBQUFBQUFBQUFBQUFB
QUFJQUFBQUFBQUFBalF3QUFBQUFBQUJMQUFBQUF3QXVkR1Y0ZEFBQUFBQUFBQUJNQUFBQUF3RndB
QUFBCkNnQUFBT0ovMlFZQUFBRUFBQUF1WkdWaWRXY2tVd0FBQUFCTkFBQUFBd0dNQVFBQUVRQUFB
QUFBQUFCTUFBVUFBQUFBQUFBQTJRd0EKQUFBQUFBQk1BQ0FBQXdBdVluTnpBQUFBQUFBQUFBQk9B
QUFBQXdFRUFBQUFBQUFBQUFBQUFBQUFBQUlBQUFBQUFBQUFDdzBBQUFBQQpBQUJPQUFBQUF3QXVk
R1Y0ZEFBQUFBQUFBQUJQQUFBQUF3RndBQUFBQ2dBQUFPcUwyQ3dBQUFFQUFBQXVaR1ZpZFdja1V3
QUFBQUJRCkFBQUFBd0dVQVFBQUVRQUFBQUFBQUFCUEFBVUFBQUFBQUFBQVR3MEFBQUFBQUFCUEFD
QUFBd0F1WW5OekFBQUFBQUFBQUFCUkFBQUEKQXdFRUFBQUFBQUFBQUFBQUFBQUFBQUlBQUFBQUFB
QUFpQTBBQUFBQUFBQlJBQUFBQXdBdWRHVjRkQUFBQUFBQUFBQlNBQUFBQXdGdwpBQUFBQ2dBQUFP
VmVKNUlBQUFFQUFBQXVaR1ZpZFdja1V3QUFBQUJUQUFBQUF3R1FBUUFBRVFBQUFBQUFBQUJTQUFV
QUFBQUFBQUFBCjB3MEFBQUFBQUFCU0FDQUFBd0F1WW5OekFBQUFBQUFBQUFCVUFBQUFBd0VFQUFB
QUFBQUFBQUFBQUFBQUFBSUFBQUFBQUFBQUJ3NEEKQUFBQUFBQlVBQUFBQXdBdWRHVjRkQUFBQUFB
QUFBQlZBQUFBQXdGd0FBQUFDZ0FBQUIwTjJJc0FBQUVBQUFBdVpHVmlkV2NrVXdBQQpBQUJXQUFB
QUF3R1lBUUFBRVFBQUFBQUFBQUJWQUFVQUFBQUFBQUFBVFE0QUFBQUFBQUJWQUNBQUF3QXVZbk56
QUFBQUFBQUFBQUJYCkFBQUFBd0VFQUFBQUFBQUFBQUFBQUFBQUFBSUFBQUFBQUFBQWlBNEFBQUFB
QUFCWEFBQUFBd0F1ZEdWNGRBQUFBQUFBQUFCWUFBQUEKQXdGd0FBQUFDZ0FBQUc4Sjg0Y0FBQUVB
QUFBdVpHVmlkV2NrVXdBQUFBQlpBQUFBQXdHQUFRQUFFUUFBQUFBQUFBQllBQVVBQUFBQQpBQUFB
MVE0QUFBQUFBQUJZQUNBQUF3QXVZbk56QUFBQUFBQUFBQUJhQUFBQUF3RUVBQUFBQUFBQUFBQUFB
QUFBQUFJQUFBQUFBQUFBCit3NEFBQUFBQUFCYUFBQUFBd0F1ZEdWNGRBQUFBQUFBQUFCYkFBQUFB
d0Z3QUFBQUNnQUFBTFgzaXp3QUFBRUFBQUF1WkdWaWRXY2sKVXdBQUFBQmNBQUFBQXdHSUFRQUFF
UUFBQUFBQUFBQmJBQVVBQUFBQUFBQUFNdzhBQUFBQUFBQmJBQ0FBQXdBdVluTnpBQUFBQUFBQQpB
QUJkQUFBQUF3RUVBQUFBQUFBQUFBQUFBQUFBQUFJQUFBQUFBQUFBWUE4QUFBQUFBQUJkQUFBQUF3
QXVkR1Y0ZEFBQUFBQUFBQUJlCkFBQUFBd0Z3QUFBQUNnQUFBRk9QUWlrQUFBRUFBQUF1WkdWaWRX
Y2tVd0FBQUFCZkFBQUFBd0dJQVFBQUVRQUFBQUFBQUFCZUFBVUEKQUFBQUFBQUFudzhBQUFBQUFB
QmVBQ0FBQXdBdVluTnpBQUFBQUFBQUFBQmdBQUFBQXdFRUFBQUFBQUFBQUFBQUFBQUFBQUlBQUFB
QQpBQUFBeWc4QUFBQUFBQUJnQUFBQUF3QXVkR1Y0ZEFBQUFBQUFBQUJoQUFBQUF3RndBQUFBQ2dB
QUFCSzRUdTRBQUFFQUFBQXVaR1ZpCmRXY2tVd0FBQUFCaUFBQUFBd0dNQVFBQUVRQUFBQUFBQUFC
aEFBVUFBQUFBQUFBQUJ4QUFBQUFBQUFCaEFDQUFBd0F1WW5OekFBQUEKQUFBQUFBQmpBQUFBQXdF
RUFBQUFBQUFBQUFBQUFBQUFBQUlBQUFBQUFBQUFPUkFBQUFBQUFBQmpBQUFBQXdBdWRHVjRkQUFB
QUFBQQpBQUJrQUFBQUF3RndBQUFBQ2dBQUFBVnhzeTRBQUFFQUFBQXVaR1ZpZFdja1V3QUFBQUJs
QUFBQUF3R01BUUFBRVFBQUFBQUFBQUJrCkFBVUFBQUFBQUFBQWZSQUFBQUFBQUFCa0FDQUFBd0F1
WW5OekFBQUFBQUFBQUFCbUFBQUFBd0VFQUFBQUFBQUFBQUFBQUFBQUFBSUEKQUFBQUFBQUFyQkFB
QUFBQUFBQm1BQUFBQXdBdWRHVjRkQUFBQUFBQUFBQm5BQUFBQXdGd0FBQUFDZ0FBQUNEOXloZ0FB
QUVBQUFBdQpaR1ZpZFdja1V3QUFBQUJvQUFBQUF3R1FBUUFBRVFBQUFBQUFBQUJuQUFVQUFBQUFB
QUFBN1JBQUFBQUFBQUJuQUNBQUF3QXVZbk56CkFBQUFBQUFBQUFCcEFBQUFBd0VFQUFBQUFBQUFB
QUFBQUFBQUFBSUFBQUFBQUFBQUl4RUFBQUFBQUFCcEFBQUFBd0F1ZEdWNGRBQUEKQUFBQUFBQnFB
QUFBQXdFRUFRQUFJQUFBQUpDYXZJQUFBQUVBQUFBdVpHVmlkV2NrVXdBQUFBQnJBQUFBQXdIc0FR
QUFHd0FBQUFBQQpBQUJxQUFVQUFBQUFBQUFBYXhFQUFBQUFBQUJxQUNBQUFnQWtURTR6TlFBQUFN
OEFBQUJxQUFBQUJnQWtURTR5QUFBQUFMd0FBQUJxCkFBQUFCZ0FrVEU0ekFBQUFBS2dBQUFCcUFB
QUFCZ0FrVEU0MEFBQUFBSlFBQUFCcUFBQUFCZ0FrVEU0MUFBQUFBSUVBQUFCcUFBQUEKQmdBa1RF
NDJBQUFBQUcwQUFBQnFBQUFBQmdBa1RFNDNBQUFBQUZrQUFBQnFBQUFBQmdBa1RFNDRBQUFBQUVZ
QUFBQnFBQUFBQmdBawpURTQ1QUFBQUFESUFBQUJxQUFBQUJnQWtURTR4TUFBQUFDTUFBQUJxQUFB
QUJnQWtURTR4TVFBQUFCVUFBQUJxQUFBQUJnQWtURTQyCk1BQUFBTkFBQUFCcUFBQUFBd0F1ZEdW
NGRBQUFBQUFBQUFCc0FBQUFBd0V6QlFBQUtBQUFBTVl2YVZRQUFBRUFBQUF1WkdWaWRXY2sKVXdB
QUFBQnRBQUFBQXdGZ0JRQUFPd0FBQUFBQUFBQnNBQVVBQUFBQUFBQUFueEVBQUFBQUFBQnNBQ0FB
QWdBQUFBQUE0UkVBQUFBQQpBQUFBQUFBQUFnQUFBQUFBOXhFQUFBQUFBQUFBQUFBQUFnQUFBQUFB
RnhJQUFBQUFBQUFBQUFBQUFnQUFBQUFBTUJJQUFBQUFBQUFBCkFBQUFBZ0FBQUFBQVVCSUFBQUFB
QUFBQUFBQUFBZ0FBQUFBQWJoSUFBQUFBQUFBQUFBQUFBZ0FBQUFBQWpSSUFBQUFBQUFBQUFBQUEK
QWdBQUFBQUFxQklBQUFBQUFBQUFBQUFBQWdBQUFBQUF3eElBQUFBQUFBQUFBQUFBQWdBQUFBQUEz
UklBQUFBQUFBQUFBQUFBQWdBdQpjbVJoZEdFQUFBQUFBQUJ1QUFBQUF3RUVBQUFBQUFBQUFFckU0
TjBBQUFJQUFBQUFBQUFBOVJJQUFBQUFBQUJ1QUFBQUFnQUFBQUFBCkJSTUFBQUFBQUFBQUFBQUFB
Z0FBQUFBQUhCTUFBQUFBQUFBQUFBQUFBZ0FBQUFBQU1oTUFBQUFBQUFBQUFBQUFBZ0FBQUFBQVNS
TUEKQUFBQUFBQUFBQUFBQWdBQUFBQUFZaE1BQUFBQUFBQUFBQUFBQWdBdWNtUmhkR0VBQUFBQUFB
QnZBQUFBQXdFRUFBQUFBQUFBQUZZMgpYV0FBQUFJQUFBQUFBQUFBZnhNQUFBQUFBQUJ2QUFBQUFn
QXVjbVJoZEdFQUFBQUFBQUJ3QUFBQUF3RUVBQUFBQUFBQUFBQUFBQUFBCkFBSUFBQUFBQUFBQWp4
TUFBQUFBQUFCd0FBQUFBZ0F1Y21SaGRHRUFBQUFBQUFCeEFBQUFBd0VFQUFBQUFBQUFBSGExNVkw
QUFBSUEKQUFBQUFBQUFueE1BQUFBQUFBQnhBQUFBQWdBQUFBQUFyeE1BQUFBQUFBQUFBQUFBQWdB
dWNtUmhkR0VBQUFBQUFBQnlBQUFBQXdFSQpBQUFBQUFBQUFJRE0ycUlBQUFJQUFBQUFBQUFBeGhN
QUFBQUFBQUJ5QUFBQUFnQXVkR1Y0ZEFBQUFBQUFBQUJ6QUFBQUF3RUpBQUFBCkFRQUFBRFRyMjFr
QUFBSUFBQUF1WkdWaWRXY2tVd0FBQUFCMEFBQUFBd0d3QUFBQUF3QUFBQUFBQUFCekFBVUFBQUFB
QUFBQTNoTUEKQUFBQUFBQnpBQ0FBQWdBdWRHVjRkQUFBQUFBQUFBQjFBQUFBQXdFSkFBQUFBUUFB
QURUcjIxa0FBQUlBQUFBdVpHVmlkV2NrVXdBQQpBQUIyQUFBQUF3SEFBQUFBQXdBQUFBQUFBQUIx
QUFVQUFBQUFBQUFBK0JNQUFBQUFBQUIxQUNBQUFnQXVjbVJoZEdFQUFBQUFBQUIzCkFBQUFBd0VZ
QUFBQUJnQUFBQUFBQUFBQUFBSUFBQUFBQUFBQUdSUUFBQUFBQUFCM0FBQUFBZ0FBQUFBQU9CUUFB
QUFBQUFBQUFDQUEKQWdBQUFBQUFYUlFBQUFBQUFBQUFBQ0FBYVFGL0FRQUFBZ0FBQUFBQUFBQUFB
QUFBQUFBdWRHVjRkQUFBQUFBQUFBQjRBQUFBQXdFSApBQUFBQVFBQUFLcmhpOEFBQUFJQUFBQXVa
R1ZpZFdja1V3QUFBQUI1QUFBQUF3SEFBQUFBQXdBQUFBQUFBQUI0QUFVQUFBQUFBQUFBCmdoUUFB
QUFBQUFCNEFDQUFBZ0F1ZEdWNGRBQUFBQUFBQUFCNkFBQUFBd0VmQUFBQUFnQUFBTHRJODVvQUFB
SUFBQUF1WkdWaWRXY2sKVXdBQUFBQjdBQUFBQXdIa0FBQUFBd0FBQUFBQUFBQjZBQVVBQUFBQUFB
QUFveFFBQUFBQUFBQjZBQ0FBQWdBdWRHVjRkQUFBQUFBQQpBQUI4QUFBQUF3RXNBUUFBQ1FBQUFG
UDVOeGtBQUFFQUFBQXVaR1ZpZFdja1V3QUFBQUI5QUFBQUF3RUlBZ0FBRndBQUFBQUFBQUI4CkFB
VUFBQUFBQUFBQXlCUUFBQUFBQUFCOEFDQUFBZ0F1ZEdWNGRBQUFBQUFBQUFCK0FBQUFBd0YvQUFB
QUJnQUFBQTdteVdNQUFBRUEKQUFBdVpHVmlkV2NrVXdBQUFBQi9BQUFBQXdGUUFRQUFDUUFBQUFB
QUFBQitBQVVBQUFBQUFBQUFDQlVBQUFBQUFBQitBQ0FBQWdBdQpkR1Y0ZEFBQUFBQUFBQUNBQUFB
QUF3RUpBQUFBQVFBQUFEVHIyMWtBQUFJQUFBQXVaR1ZpZFdja1V3QUFBQUNCQUFBQUF3SElBQUFB
CkF3QUFBQUFBQUFDQUFBVUFBQUFBQUFBQVFSVUFBQUFBQUFDQUFDQUFBZ0F1Y21SaGRHRUFBQUFB
QUFDQ0FBQUFBd0VZQUFBQUJnQUEKQUFBQUFBQUFBQUlBQUFBQUFBQUFaaFVBQUFBQUFBQ0NBQUFB
QWdBQUFBQUFpUlVBQUFBQUFBQUFBQ0FBQWdBQUFBQUFzaFVBQUFBQQpBQUFBQUNBQWFRR2VBUUFB
QWdBQUFBQUFBQUFBQUFBQUFBQXVkR1Y0ZEFBQUFBQUFBQUNEQUFBQUF3RVBBQUFBQVFBQUFPN3Np
YzBBCkFBSUFBQUF1WkdWaWRXY2tVd0FBQUFDRUFBQUFBd0VrQVFBQUJ3QUFBQUFBQUFDREFBVUFB
QUFBQUFBQTJ4VUFBQUFBQUFDREFDQUEKQWdBdWRHVjRkQUFBQUFBQUFBQ0ZBQUFBQXdFUEFBQUFB
UUFBQUwvK1M0Y0FBQUlBQUFBdVpHVmlkV2NrVXdBQUFBQ0dBQUFBQXdFVQpBUUFBQndBQUFBQUFB
QUNGQUFVQUFBQUFBQUFBTFJZQUFBQUFBQUNGQUNBQUFnQXVkR1Y0ZEFBQUFBQUFBQUNIQUFBQUF3
RUhBQUFBCkFRQUFBS3JoaThBQUFBSUFBQUF1WkdWaWRXY2tVd0FBQUFDSUFBQUFBd0hJQUFBQUF3
QUFBQUFBQUFDSEFBVUFBQUFBQUFBQWVoWUEKQUFBQUFBQ0hBQ0FBQWdBdWRHVjRkQUFBQUFBQUFB
Q0pBQUFBQXdFZkFBQUFBZ0FBQUx0STg1b0FBQUlBQUFBdVpHVmlkV2NrVXdBQQpBQUNLQUFBQUF3
SG9BQUFBQXdBQUFBQUFBQUNKQUFVQUFBQUFBQUFBbnhZQUFBQUFBQUNKQUNBQUFnQXVkR1Y0ZEFB
QUFBQUFBQUNMCkFBQUFBd0VKQUFBQUFRQUFBRFRyMjFrQUFBSUFBQUF1WkdWaWRXY2tVd0FBQUFD
TUFBQUFBd0hNQUFBQUF3QUFBQUFBQUFDTEFBVUEKQUFBQUFBQUF5QllBQUFBQUFBQ0xBQ0FBQWdB
dWNtUmhkR0VBQUFBQUFBQ05BQUFBQXdFWUFBQUFCZ0FBQUFBQUFBQUFBQUlBQUFBQQpBQUFBN3hZ
QUFBQUFBQUNOQUFBQUFnQUFBQUFBRkJjQUFBQUFBQUFBQUNBQUFnQUFBQUFBUHhjQUFBQUFBQUFB
QUNBQWFRRzlBUUFBCkFnQUFBQUFBQUFBQUFBQUFBQUF1ZEdWNGRBQUFBQUFBQUFDT0FBQUFBd0VQ
QUFBQUFRQUFBTzdzaWMwQUFBSUFBQUF1WkdWaWRXY2sKVXdBQUFBQ1BBQUFBQXdFb0FRQUFCd0FB
QUFBQUFBQ09BQVVBQUFBQUFBQUFhaGNBQUFBQUFBQ09BQ0FBQWdBdWRHVjRkQUFBQUFBQQpBQUNR
QUFBQUF3RVBBQUFBQVFBQUFMLytTNGNBQUFJQUFBQXVaR1ZpZFdja1V3QUFBQUNSQUFBQUF3RVlB
UUFBQndBQUFBQUFBQUNRCkFBVUFBQUFBQUFBQXZoY0FBQUFBQUFDUUFDQUFBZ0F1ZEdWNGRBQUFB
QUFBQUFDU0FBQUFBd0VIQUFBQUFRQUFBS3JoaThBQUFBSUEKQUFBdVpHVmlkV2NrVXdBQUFBQ1RB
QUFBQXdITUFBQUFBd0FBQUFBQUFBQ1NBQVVBQUFBQUFBQUFEUmdBQUFBQUFBQ1NBQ0FBQWdBdQpk
R1Y0ZEFBQUFBQUFBQUNVQUFBQUF3RWZBQUFBQWdBQUFMdEk4NW9BQUFJQUFBQXVaR1ZpZFdja1V3
QUFBQUNWQUFBQUF3SHNBQUFBCkF3QUFBQUFBQUFDVUFBVUFBQUFBQUFBQU5CZ0FBQUFBQUFDVUFD
QUFBZ0F1ZEdWNGRBQUFBQUFBQUFDV0FBQUFBd0Y5QUFBQUN3QUEKQUxFWEJGZ0FBQUVBQUFBdVpH
VmlkV2NrVXdBQUFBQ1hBQUFBQXdHb0FRQUFEUUFBQUFBQUFBQ1dBQVVBQUFBQUFBQUFYeGdBQUFB
QQpBQUNXQUNBQUFnQWtURTR4QUFBQUFHTUFBQUNXQUFBQUJnQXVZbk56QUFBQUFBQUFBQUNZQUFB
QUF3RUVBQUFBQUFBQUFBQUFBQUFBCkFBSUFBQUFBQUFBQW5oZ0FBQUFBQUFDWUFBQUFBd0FBQUFB
QUR4a0FBQUFBQUFBQUFDQUFBZ0F1WW5OekFBQUFBQUFBQUFDWkFBQUEKQXdFRUFBQUFBQUFBQUFB
QUFBQUFBQUlBQUFBQUFBQUFIQmtBQUFBQUFBQ1pBQUFBQXdBa1RFNDBBQUFBQUJvQUFBQ1dBQUFB
QmdBawpURTR4T1FBQUFHZ0FBQUNXQUFBQUF3QWtURTR4TndBQUFIQUFBQUNXQUFBQUF3QXVkR1Y0
ZEFBQUFBQUFBQUNhQUFBQUF3RTdBQUFBCkJ3QUFBUDd2Q0F3QUFBRUFBQUF1WkdWaWRXY2tVd0FB
QUFDYkFBQUFBd0VnQVFBQUJ3QUFBQUFBQUFDYUFBVUFBQUFBQUFBQVp4a0EKQUFBQUFBQ2FBQ0FB
QWdBdVluTnpBQUFBQUFBQUFBQ2NBQUFBQXdFRUFBQUFBQUFBQUFBQUFBQUFBQUlBQUFBQUFBQUFw
QmtBQUFBQQpBQUNjQUFBQUF3QXVZbk56QUFBQUFBQUFBQUNkQUFBQUF3RUVBQUFBQUFBQUFBQUFB
QUFBQUFJQUFBQUFBQUFBRlJvQUFBQUFBQUNkCkFBQUFBd0F1WkdWaWRXY2tVd0FBQUFDZUFBQUFB
d0VnQUFBQUFnQUFBQUFBQUFDWkFBVUFBQUF1WkdWaWRXY2tVd0FBQUFDZkFBQUEKQXdFZ0FBQUFB
Z0FBQUFBQUFBQ2RBQVVBQUFBdVpHVmlkV2NrVkFBQUFBQ2dBQUFBQXdGa0FBQUFBQUFBQUFBQUFB
QUFBQUFBQUFCZQpHZ0FBWDAxbFpHbGhSbUZ6ZEVadmNuZGhjbVJKYldGblpVUmhkR0ZmY0c1bkFG
OU5aV1JwWVVaaGMzUkdiM0ozWVhKa1VISmxjM05sClpFbHRZV2RsUkdGMFlWOXdibWNBWDAxbFpH
bGhSblZzYkZadmJIVnRaVWx0WVdkbFJHRjBZVjl3Ym1jQVgwMWxaR2xoUm5Wc2JGWnYKYkhWdFpW
QnlaWE56WldSSmJXRm5aVVJoZEdGZmNHNW5BRjlOWldScFlVWjFiR3h6WTNKbFpXNUpiV0ZuWlVS
aGRHRmZjRzVuQUY5TgpaV1JwWVVaMWJHeHpZM0psWlc1UWNtVnpjMlZrU1cxaFoyVkVZWFJoWDNC
dVp3QmZUV1ZrYVdGTmRYUmxTVzFoWjJWRVlYUmhYM0J1Clp3QmZUV1ZrYVdGTmRYUmxVSEpsYzNO
bFpFbHRZV2RsUkdGMFlWOXdibWNBWDAxbFpHbGhVR0YxYzJWSmJXRm5aVVJoZEdGZmNHNW4KQUY5
TlpXUnBZVkJoZFhObFVISmxjM05sWkVsdFlXZGxSR0YwWVY5d2JtY0FYMDFsWkdsaFVHeGhlVWx0
WVdkbFJHRjBZVjl3Ym1jQQpYMDFsWkdsaFVHeGhlVkJ5WlhOelpXUkpiV0ZuWlVSaGRHRmZjRzVu
QUY5TlpXUnBZVkpsZDJsdVpFbHRZV2RsUkdGMFlWOXdibWNBClgwMWxaR2xoVW1WM2FXNWtVSEps
YzNObFpFbHRZV2RsUkdGMFlWOXdibWNBWDAxbFpHbGhVMnhwWkdWeVZISmhZMnRNWldaMFEyRncK
U1cxaFoyVkVZWFJoWDNCdVp3QmZUV1ZrYVdGVGJHbGtaWEpVY21GamEweGxablJEWVhCTWIyRmth
VzVuU1cxaFoyVkVZWFJoWDNCdQpad0JmVFdWa2FXRlRiR2xrWlhKVWNtRmphMDFwWkdSc1pVbHRZ
V2RsUkdGMFlWOXdibWNBWDAxbFpHbGhVMnhwWkdWeVZISmhZMnROCmFXUmtiR1ZNYjJGa2FXNW5T
VzFoWjJWRVlYUmhYM0J1WndCZlRXVmthV0ZUYkdsa1pYSlVjbUZqYTFKcFoyaDBRMkZ3U1cxaFoy
VkUKWVhSaFgzQnVad0JmVFdWa2FXRlRiR2xrWlhKVWNtRmphMUpwWjJoMFEyRndURzloWkdsdVow
bHRZV2RsUkdGMFlWOXdibWNBWDAxbApaR2xoVkdoMWJXSkpiV0ZuWlVSaGRHRmZjRzVuQUY5TlpX
UnBZVlJvZFcxaVVISmxjM05sWkVsdFlXZGxSR0YwWVY5d2JtY0FYMDFsClpHbGhWRzluWjJ4bFEy
RndkR2x2Ym5OSmJXRm5aVVJoZEdGZmNHNW5BRjlOWldScFlWUnZaMmRzWlVOaGNIUnBiMjV6VUhK
bGMzTmwKWkVsdFlXZGxSR0YwWVY5d2JtY0FQME5IVTJsNlpVMWhhMlZBUUZsQlAwRlZRMGRUYVhw
bFFFQk5UVUJhQUY5ZlpteDBkWE5sWkFBLwpRMGRTWldOMFRXRnJaVUJBV1VFL1FWVkRSMUpsWTNS
QVFFMU5UVTFBV2dBL1B6Rk5aV1JwWVZWSlJXeGxiV1Z1ZEVCQVZVRkZRRmhhCkFEOC9YemROWldS
cFlWVkpSV3hsYldWdWRFQkFOa0pBQUQ4L1gwZE5aV1JwWVZWSlJXeGxiV1Z1ZEVCQVZVRkZVRUZZ
U1VCYUFEOC8KWDBWTlpXUnBZVlZKUld4bGJXVnVkRUJBVlVGRlVFRllTVUJhQUY5ZmNIVnlaV05o
Ykd3QVAzTmxkRlZ3UTI5dWRHVjRkRVp2Y2xCaAphVzUwYVc1blFFMWxaR2xoVlVsRmJHVnRaVzUw
UUVCTlFrVllVRUZWUTBkRGIyNTBaWGgwUUVCVlEwZFNaV04wUUVCQVdnQS9jbVZ6CmRHOXlaVU52
Ym5SbGVIUkJablJsY2xCaGFXNTBhVzVuUUUxbFpHbGhWVWxGYkdWdFpXNTBRRUJOUWtWWVVFRlZR
MGREYjI1MFpYaDAKUUVCQVdnQS9hR2wwVkdWemRFQk5aV1JwWVZWSlJXeGxiV1Z1ZEVCQVZVSkZY
MDVWUTBkU1pXTjBRRUJWUTBkUWIybHVkRUJBUUZvQQpYMTlwYlhCZlgwTkhVbVZqZEVOdmJuUmhh
VzV6VUc5cGJuUUFQMjVoZEhWeVlXeFRhWHBsUUUxbFpHbGhWVWxGYkdWdFpXNTBRRUJWClFrVS9R
VlZEUjFOcGVtVkFRRmhhQUY5ZmFXMXdYMTlEUjFOcGVtVmFaWEp2QUQ5elpYUlFZWEowU1VSQVRX
VmthV0ZWU1VWc1pXMWwKYm5SQVFGRkJSVmhJUUZvQVAzQmhjblJKUkVCTlpXUnBZVlZKUld4bGJX
VnVkRUJBVVVKRlNGaGFBRDlwYzFCeVpYTnpaV1JBVFdWawphV0ZWU1VWc1pXMWxiblJBUUZGQ1JW
OU9XRm9BUHo5ZlIwMWxaR2xoVlVsRmJHVnRaVzUwUUVCVlFVVlFRVmhKUUZvQVB6OHpRRmxCCldG
QkJXRUJhQUQ5MGFXMWxURzloWkdWa1FFMWxaR2xoVlVsVWFXMWxiR2x1WlZOc2FXUmxja0JBVVVK
RlRsaGFBRDlrZFhKaGRHbHYKYmtCTlpXUnBZVlZKVkdsdFpXeHBibVZUYkdsa1pYSkFRRkZDUlU1
WVdnQS9abkpoWTNScGIyNU1iMkZrWldSQVRXVmthV0ZWU1ZScApiV1ZzYVc1bFUyeHBaR1Z5UUVC
UlFrVk9XRm9BWDE5eVpXRnNRREF3TURBd01EQXdNREF3TURBd01EQUFQME5IUm14dmIzSkFRRmxC
ClRVMUFXZ0EvYldWa2FXRlFUa2RHZFd4c2MyTnlaV1Z1U1cxaFoyVkFRRmxCVUVGVlEwZEpiV0Zu
WlVCQVdGb0FYMTlwYlhCZlgwTkcKVW1Wc1pXRnpaUUJmWDJsdGNGOWZRMGRKYldGblpVTnlaV0Yw
WlZkcGRHaFFUa2RFWVhSaFVISnZkbWxrWlhJQVgxOXBiWEJmWDBOSApSR0YwWVZCeWIzWnBaR1Z5
UTNKbFlYUmxWMmwwYUVOR1JHRjBZUUJmWDJsdGNGOWZRMFpFWVhSaFEzSmxZWFJsVjJsMGFFSjVk
R1Z6ClRtOURiM0I1QUY5ZmFXMXdYMTlyUTBaQmJHeHZZMkYwYjNKRVpXWmhkV3gwQUY5ZmFXMXdY
MTlyUTBaQmJHeHZZMkYwYjNKT2RXeHMKQUQ5cGJXRm5aVUEvTVQ4L2JXVmthV0ZRVGtkR2RXeHNj
Mk55WldWdVNXMWhaMlZBUUZsQlVFRlZRMGRKYldGblpVQkFXRnBBTkZCQgpWVEpBUVFBL2JXVmth
V0ZRVGtkR2RXeHNjMk55WldWdVVISmxjM05sWkVsdFlXZGxRRUJaUVZCQlZVTkhTVzFoWjJWQVFG
aGFBRDlwCmJXRm5aVUEvTVQ4L2JXVmthV0ZRVGtkR2RXeHNjMk55WldWdVVISmxjM05sWkVsdFlX
ZGxRRUJaUVZCQlZVTkhTVzFoWjJWQVFGaGEKUURSUVFWVXlRRUVBUDIxbFpHbGhVRTVIVFhWMFpV
bHRZV2RsUUVCWlFWQkJWVU5IU1cxaFoyVkFRRmhhQUQ5cGJXRm5aVUEvTVQ4LwpiV1ZrYVdGUVRr
ZE5kWFJsU1cxaFoyVkFRRmxCVUVGVlEwZEpiV0ZuWlVCQVdGcEFORkJCVlRKQVFRQS9iV1ZrYVdG
UVRrZE5kWFJsClVISmxjM05sWkVsdFlXZGxRRUJaUVZCQlZVTkhTVzFoWjJWQVFGaGFBRDlwYldG
blpVQS9NVDgvYldWa2FXRlFUa2ROZFhSbFVISmwKYzNObFpFbHRZV2RsUUVCWlFWQkJWVU5IU1cx
aFoyVkFRRmhhUURSUVFWVXlRRUVBUDIxbFpHbGhVRTVIVUdGMWMyVkpiV0ZuWlVCQQpXVUZRUVZW
RFIwbHRZV2RsUUVCWVdnQS9hVzFoWjJWQVB6RS9QMjFsWkdsaFVFNUhVR0YxYzJWSmJXRm5aVUJB
V1VGUVFWVkRSMGx0CllXZGxRRUJZV2tBMFVFRlZNa0JCQUQ5dFpXUnBZVkJPUjFCaGRYTmxVSEps
YzNObFpFbHRZV2RsUUVCWlFWQkJWVU5IU1cxaFoyVkEKUUZoYUFEOXBiV0ZuWlVBL01UOC9iV1Zr
YVdGUVRrZFFZWFZ6WlZCeVpYTnpaV1JKYldGblpVQkFXVUZRUVZWRFIwbHRZV2RsUUVCWQpXa0Ew
VUVGVk1rQkJBRDl0WldScFlWQk9SMUJzWVhsSmJXRm5aVUJBV1VGUVFWVkRSMGx0WVdkbFFFQllX
Z0EvYVcxaFoyVkFQekUvClAyMWxaR2xoVUU1SFVHeGhlVWx0WVdkbFFFQlpRVkJCVlVOSFNXMWha
MlZBUUZoYVFEUlFRVlV5UUVFQVAyMWxaR2xoVUU1SFVHeGgKZVZCeVpYTnpaV1JKYldGblpVQkFX
VUZRUVZWRFIwbHRZV2RsUUVCWVdnQS9hVzFoWjJWQVB6RS9QMjFsWkdsaFVFNUhVR3hoZVZCeQpa
WE56WldSSmJXRm5aVUJBV1VGUVFWVkRSMGx0WVdkbFFFQllXa0EwVUVGVk1rQkJBRDl0WldScFlW
Qk9SMUpsZDJsdVpFbHRZV2RsClFFQlpRVkJCVlVOSFNXMWhaMlZBUUZoYUFEOXBiV0ZuWlVBL01U
OC9iV1ZrYVdGUVRrZFNaWGRwYm1SSmJXRm5aVUJBV1VGUVFWVkQKUjBsdFlXZGxRRUJZV2tBMFVF
RlZNa0JCQUQ5dFpXUnBZVkJPUjFKbGQybHVaRkJ5WlhOelpXUkpiV0ZuWlVCQVdVRlFRVlZEUjBs
dApZV2RsUUVCWVdnQS9hVzFoWjJWQVB6RS9QMjFsWkdsaFVFNUhVbVYzYVc1a1VISmxjM05sWkVs
dFlXZGxRRUJaUVZCQlZVTkhTVzFoCloyVkFRRmhhUURSUVFWVXlRRUVBUDIxbFpHbGhVRTVIUm1G
emRFWnZjbmRoY21SSmJXRm5aVUJBV1VGUVFWVkRSMGx0WVdkbFFFQlkKV2dBL2FXMWhaMlZBUHpF
L1AyMWxaR2xoVUU1SFJtRnpkRVp2Y25kaGNtUkpiV0ZuWlVCQVdVRlFRVlZEUjBsdFlXZGxRRUJZ
V2tBMApVRUZWTWtCQkFEOXRaV1JwWVZCT1IwWmhjM1JHYjNKM1lYSmtVSEpsYzNObFpFbHRZV2Rs
UUVCWlFWQkJWVU5IU1cxaFoyVkFRRmhhCkFEOXBiV0ZuWlVBL01UOC9iV1ZrYVdGUVRrZEdZWE4w
Um05eWQyRnlaRkJ5WlhOelpXUkpiV0ZuWlVCQVdVRlFRVlZEUjBsdFlXZGwKUUVCWVdrQTBVRUZW
TWtCQkFEOXRaV1JwWVZCT1IxTnNhV1JsY2xSeVlXTnJUR1ZtZEVOaGNFbHRZV2RsUUVCWlFWQkJW
VU5IU1cxaApaMlZBUUZoYUFEOXBiV0ZuWlVBL01UOC9iV1ZrYVdGUVRrZFRiR2xrWlhKVWNtRmph
MHhsWm5SRFlYQkpiV0ZuWlVCQVdVRlFRVlZEClIwbHRZV2RsUUVCWVdrQTBVRUZWTWtCQkFEOXRa
V1JwWVZCT1IxTnNhV1JsY2xSeVlXTnJUR1ZtZEVOaGNFeHZZV1JwYm1kSmJXRm4KWlVCQVdVRlFR
VlZEUjBsdFlXZGxRRUJZV2dBL2FXMWhaMlZBUHpFL1AyMWxaR2xoVUU1SFUyeHBaR1Z5VkhKaFky
dE1aV1owUTJGdwpURzloWkdsdVowbHRZV2RsUUVCWlFWQkJWVU5IU1cxaFoyVkFRRmhhUURSUVFW
VXlRRUVBUDIxbFpHbGhVRTVIVTJ4cFpHVnlWSEpoClkydE5hV1JrYkdWSmJXRm5aVUJBV1VGUVFW
VkRSMGx0WVdkbFFFQllXZ0EvYVcxaFoyVkFQekUvUDIxbFpHbGhVRTVIVTJ4cFpHVnkKVkhKaFky
dE5hV1JrYkdWSmJXRm5aVUJBV1VGUVFWVkRSMGx0WVdkbFFFQllXa0EwVUVGVk1rQkJBRDl0WldS
cFlWQk9SMU5zYVdSbApjbFJ5WVdOclRXbGtaR3hsVEc5aFpHbHVaMGx0WVdkbFFFQlpRVkJCVlVO
SFNXMWhaMlZBUUZoYUFEOXBiV0ZuWlVBL01UOC9iV1ZrCmFXRlFUa2RUYkdsa1pYSlVjbUZqYTAx
cFpHUnNaVXh2WVdScGJtZEpiV0ZuWlVCQVdVRlFRVlZEUjBsdFlXZGxRRUJZV2tBMFVFRlYKTWtC
QkFEOXRaV1JwWVZCT1IxTnNhV1JsY2xSeVlXTnJVbWxuYUhSRFlYQkpiV0ZuWlVCQVdVRlFRVlZE
UjBsdFlXZGxRRUJZV2dBLwphVzFoWjJWQVB6RS9QMjFsWkdsaFVFNUhVMnhwWkdWeVZISmhZMnRT
YVdkb2RFTmhjRWx0WVdkbFFFQlpRVkJCVlVOSFNXMWhaMlZBClFGaGFRRFJRUVZVeVFFRUFQMjFs
WkdsaFVFNUhVMnhwWkdWeVZISmhZMnRTYVdkb2RFTmhjRXh2WVdScGJtZEpiV0ZuWlVCQVdVRlEK
UVZWRFIwbHRZV2RsUUVCWVdnQS9hVzFoWjJWQVB6RS9QMjFsWkdsaFVFNUhVMnhwWkdWeVZISmhZ
MnRTYVdkb2RFTmhjRXh2WVdScApibWRKYldGblpVQkFXVUZRUVZWRFIwbHRZV2RsUUVCWVdrQTBV
RUZWTWtCQkFEOXRaV1JwWVZCT1IxUm9kVzFpU1cxaFoyVkFRRmxCClVFRlZRMGRKYldGblpVQkFX
Rm9BUDJsdFlXZGxRRDh4UHo5dFpXUnBZVkJPUjFSb2RXMWlTVzFoWjJWQVFGbEJVRUZWUTBkSmJX
Rm4KWlVCQVdGcEFORkJCVlRKQVFRQS9iV1ZrYVdGUVRrZFVhSFZ0WWxCeVpYTnpaV1JKYldGblpV
QkFXVUZRUVZWRFIwbHRZV2RsUUVCWQpXZ0EvYVcxaFoyVkFQekUvUDIxbFpHbGhVRTVIVkdoMWJX
SlFjbVZ6YzJWa1NXMWhaMlZBUUZsQlVFRlZRMGRKYldGblpVQkFXRnBBCk5GQkJWVEpBUVFBL2JX
VmthV0ZRVGtkR2RXeHNWbTlzZFcxbFNXMWhaMlZBUUZsQlVFRlZRMGRKYldGblpVQkFXRm9BUDJs
dFlXZGwKUUQ4eFB6OXRaV1JwWVZCT1IwWjFiR3hXYjJ4MWJXVkpiV0ZuWlVCQVdVRlFRVlZEUjBs
dFlXZGxRRUJZV2tBMFVFRlZNa0JCQUQ5dApaV1JwWVZCT1IwWjFiR3hXYjJ4MWJXVlFjbVZ6YzJW
a1NXMWhaMlZBUUZsQlVFRlZRMGRKYldGblpVQkFXRm9BUDJsdFlXZGxRRDh4ClB6OXRaV1JwWVZC
T1IwWjFiR3hXYjJ4MWJXVlFjbVZ6YzJWa1NXMWhaMlZBUUZsQlVFRlZRMGRKYldGblpVQkFXRnBB
TkZCQlZUSkEKUVFBL2JXVmthV0ZRVGtkVWIyZG5iR1ZEWVhCMGFXOXVjMGx0WVdkbFFFQlpRVkJC
VlVOSFNXMWhaMlZBUUZoYUFEOXBiV0ZuWlVBLwpNVDgvYldWa2FXRlFUa2RVYjJkbmJHVkRZWEIw
YVc5dWMwbHRZV2RsUUVCWlFWQkJWVU5IU1cxaFoyVkFRRmhhUURSUVFWVXlRRUVBClAyMWxaR2xo
VUU1SFZHOW5aMnhsUTJGd2RHbHZibk5RY21WemMyVmtTVzFoWjJWQVFGbEJVRUZWUTBkSmJXRm5a
VUJBV0ZvQVAybHQKWVdkbFFEOHhQejl0WldScFlWQk9SMVJ2WjJkc1pVTmhjSFJwYjI1elVISmxj
M05sWkVsdFlXZGxRRUJaUVZCQlZVTkhTVzFoWjJWQQpRRmhhUURSUVFWVXlRRUVBUDJsdFlXZGxR
RTFsWkdsaFRHVm5ZV041VlVsSmJXRm5aVVZzWlcxbGJuUkFRRUZDUlZCQlZVTkhTVzFoCloyVkFR
RmhhQUQ5d1lXbHVkRUJOWldScFlVeGxaMkZqZVZWSlZHbHRaV3hwYm1WVGJHbGtaWEpBUUZWQlJW
aFFRVlZEUjBOdmJuUmwKZUhSQVFGVkRSMUpsWTNSQVFFQmFBRjlmYVcxd1gxOURSMHhoZVdWeVVt
VnNaV0Z6WlFCZlgybHRjRjlmUTBkRGIyNTBaWGgwUkhKaApkMHhoZVdWeVNXNVNaV04wQUY5ZmFX
MXdYMTlEUjB4aGVXVnlSMlYwUTI5dWRHVjRkQUJmWDJsdGNGOWZRMGRNWVhsbGNrTnlaV0YwClpW
ZHBkR2hEYjI1MFpYaDBBRjlmYVcxd1gxOURSME52Ym5SbGVIUlNaWE4wYjNKbFIxTjBZWFJsQUY5
ZmFXMXdYMTlEUjBOdmJuUmwKZUhSRWNtRjNWR2xzWldSSmJXRm5aUUJmWDJsdGNGOWZRMGREYjI1
MFpYaDBRMnhwY0ZSdlVtVmpkQUJmWDJsdGNGOWZRMGREYjI1MApaWGgwVTJGMlpVZFRkR0YwWlFC
ZlgybHRjRjlmUTBkRGIyNTBaWGgwUkhKaGQwbHRZV2RsQUY5ZmFXMXdYMTlEUjBsdFlXZGxSMlYw
ClNHVnBaMmgwQUY5ZmNtVmhiRUEwWmpnd01EQXdNQUJmWDJsdGNGOWZRMGRKYldGblpVZGxkRmRw
WkhSb0FGOWZhVzF3WDE5RFIxSmwKWTNSSFpYUlhhV1IwYUFCZlgybHRjRjlmUTBkU1pXTjBSMlYw
U0dWcFoyaDBBRjlmYVcxd1gxOURSME52Ym5SbGVIUlRZMkZzWlVOVQpUUUJmWDJsdGNGOWZRMGRE
YjI1MFpYaDBWSEpoYm5Oc1lYUmxRMVJOQUY5ZmNtVmhiRUJpWmpnd01EQXdNQUJmWDNKbFlXeEFN
REF3Ck1EQXdNREFBWDE5eVpXRnNRRE5tT0RBd01EQXdBRjlmYVcxd1gxOURSME52Ym5SbGVIUkha
WFJEVkUwQVgxOXlaV0ZzUURObVpqQXcKTURBd01EQXdNREF3TURBQVB6OHdUV1ZrYVdGVlNVVnNa
VzFsYm5SQVFGRkJSVUJZV2dBL1B6Qk5aV1JwWVZWSlZHbHRaV3hwYm1WVApiR2xrWlhKQVFGRkJS
VUJZV2dBL1AxODNUV1ZrYVdGVlNWUnBiV1ZzYVc1bFUyeHBaR1Z5UUVBMlFrQUFQejlmUjAxbFpH
bGhWVWxVCmFXMWxiR2x1WlZOc2FXUmxja0JBVlVGRlVFRllTVUJhQUQ4L1gwVk5aV1JwWVZWSlZH
bHRaV3hwYm1WVGJHbGtaWEpBUUZWQlJWQkIKV0VsQVdnQS9QekZOWldScFlWVkpWR2x0Wld4cGJt
VlRiR2xrWlhKQVFGVkJSVUJZV2dBL1AxOUhUV1ZrYVdGVlNWUnBiV1ZzYVc1bApVMnhwWkdWeVFF
QlZRVVZRUVZoSlFGb0FQM0JoYVc1MFFFMWxaR2xoVEdWbllXTjVWVWxKYldGblpVVnNaVzFsYm5S
QVFGVkJSVmhRClFWVkRSME52Ym5SbGVIUkFRRlZEUjFKbFkzUkFRRUJhQUQ5dVlYUjFjbUZzVTJs
NlpVQk5aV1JwWVV4bFoyRmplVlZKU1cxaFoyVkYKYkdWdFpXNTBRRUJWUWtVL1FWVkRSMU5wZW1W
QVFGaGFBRDgvTUUxbFpHbGhUR1ZuWVdONVZVbEpiV0ZuWlVWc1pXMWxiblJBUUZGQgpSVUJZV2dB
L1AxODNUV1ZrYVdGTVpXZGhZM2xWU1VsdFlXZGxSV3hsYldWdWRFQkFOa0pBQUQ4L1gwZE5aV1Jw
WVV4bFoyRmplVlZKClNXMWhaMlZGYkdWdFpXNTBRRUJWUVVWUVFWaEpRRm9BUHo5ZlJVMWxaR2xo
VEdWbllXTjVWVWxKYldGblpVVnNaVzFsYm5SQVFGVkIKUlZCQldFbEFXZ0EvYzJWMFZYQkRiMjUw
WlhoMFJtOXlVR0ZwYm5ScGJtZEFUV1ZrYVdGTVpXZGhZM2xWU1VsdFlXZGxSV3hsYldWdQpkRUJB
UlVKRldGQkJWVU5IUTI5dWRHVjRkRUJBVlVOSFVtVmpkRUJBUUZvQVAzSmxjM1J2Y21WRGIyNTBa
WGgwUVdaMFpYSlFZV2x1CmRHbHVaMEJOWldScFlVeGxaMkZqZVZWSlNXMWhaMlZGYkdWdFpXNTBR
RUJGUWtWWVVFRlZRMGREYjI1MFpYaDBRRUJBV2dBL1B6Rk4KWldScFlVeGxaMkZqZVZWSlNXMWha
MlZGYkdWdFpXNTBRRUJWUVVWQVdGb0FQejlmUjAxbFpHbGhUR1ZuWVdONVZVbEpiV0ZuWlVWcwpa
VzFsYm5SQVFGVkJSVkJCV0VsQVdnQS9QekJOWldScFlVeGxaMkZqZVZWSlZHbHRaV3hwYm1WVGJH
bGtaWEpBUUZGQlJVQllXZ0EvClAxODNUV1ZrYVdGTVpXZGhZM2xWU1ZScGJXVnNhVzVsVTJ4cFpH
VnlRRUEyUWtBQVB6OWZSMDFsWkdsaFRHVm5ZV041VlVsVWFXMWwKYkdsdVpWTnNhV1JsY2tCQVZV
RkZVRUZZU1VCYUFEOC9YMFZOWldScFlVeGxaMkZqZVZWSlZHbHRaV3hwYm1WVGJHbGtaWEpBUUZW
QgpSVkJCV0VsQVdnQS9jMlYwVlhCRGIyNTBaWGgwUm05eVVHRnBiblJwYm1kQVRXVmthV0ZNWldk
aFkzbFZTVlJwYldWc2FXNWxVMnhwClpHVnlRRUJGUWtWWVVFRlZRMGREYjI1MFpYaDBRRUJWUTBk
U1pXTjBRRUJBV2dBL2NtVnpkRzl5WlVOdmJuUmxlSFJCWm5SbGNsQmgKYVc1MGFXNW5RRTFsWkds
aFRHVm5ZV041VlVsVWFXMWxiR2x1WlZOc2FXUmxja0JBUlVKRldGQkJWVU5IUTI5dWRHVjRkRUJB
UUZvQQpQejh4VFdWa2FXRk1aV2RoWTNsVlNWUnBiV1ZzYVc1bFUyeHBaR1Z5UUVCVlFVVkFXRm9B
UHo5ZlIwMWxaR2xoVEdWbllXTjVWVWxVCmFXMWxiR2x1WlZOc2FXUmxja0JBVlVGRlVFRllTVUJh
QUQ5amIyNTBjbTlzUm05eVVHRnlkRUJOWldScFlVeGxaMkZqZVVOdmJuUnkKYjJ4elFFQlZRa1ZR
UVZaTlpXUnBZVlZKUld4bGJXVnVkRUJBU0VCYUFEOXphR0Z5WldSQ2RYUjBiMjVBUHpRL1AyTnZi
blJ5YjJ4RwpiM0pRWVhKMFFFMWxaR2xoVEdWbllXTjVRMjl1ZEhKdmJITkFRRlZDUlZCQlZrMWxa
R2xoVlVsRmJHVnRaVzUwUUVCSVFGcEFORkJCClZrMWxaR2xoVEdWbllXTjVWVWxKYldGblpVVnNa
VzFsYm5SQVFFRUFQejh5UUZsQlVFRllTVUJhQUQ4a1V6RkFQelEvUDJOdmJuUnkKYjJ4R2IzSlFZ
WEowUUUxbFpHbGhUR1ZuWVdONVEyOXVkSEp2YkhOQVFGVkNSVkJCVmsxbFpHbGhWVWxGYkdWdFpX
NTBRRUJJUUZwQQpORWxCQUQ5emJHbGtaWEpBVFdWa2FXRk1aV2RoWTNsRGIyNTBjbTlzYzBCQVZV
SkZVRUZXVFdWa2FXRlZTVlJwYldWc2FXNWxVMnhwClpHVnlRRUJZV2dBL2MyaGhjbVZrVTJ4cFpH
VnlRRDh4UHo5emJHbGtaWEpBVFdWa2FXRk1aV2RoWTNsRGIyNTBjbTlzYzBCQVZVSkYKVUVGV1RX
VmthV0ZWU1ZScGJXVnNhVzVsVTJ4cFpHVnlRRUJZV2tBMFVFRldUV1ZrYVdGTVpXZGhZM2xWU1ZS
cGJXVnNhVzVsVTJ4cApaR1Z5UUVCQkFEOGtVekpBUHpFL1AzTnNhV1JsY2tCTlpXUnBZVXhsWjJG
amVVTnZiblJ5YjJ4elFFQlZRa1ZRUVZaTlpXUnBZVlZKClZHbHRaV3hwYm1WVGJHbGtaWEpBUUZo
YVFEUkpRUUFLCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76225</attachid>
            <date>2010-12-10 11:33:08 -0800</date>
            <delta_ts>2010-12-14 01:27:56 -0800</delta_ts>
            <desc>Patch adding CACFContextGetLastCommitTime to WKSI (gets rid of bogus .lib file)</desc>
            <filename>AddCACFToWKSI.patch</filename>
            <type>text/plain</type>
            <size>638478</size>
            <attacher name="Chris Marrin">cmarrin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdExpYnJhcmllcy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0TGli
cmFyaWVzL0NoYW5nZUxvZwkocmV2aXNpb24gNzM3NDEpCisrKyBXZWJLaXRMaWJyYXJpZXMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMTItMTAgIENocmlz
IE1hcnJpbiAgPGNtYXJyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBDQUNGQ29udGV4dEdldExhc3RDb21taXRUaW1lIHRv
IFdlYktpdFN5c3RlbUludGVyZmFjZSBmb3IgV2luZG93cy4KKyAgICAgICAgQWxzbyBnb3Qgcmlk
IG9mIFdlYktpdFN5c3RlbUludGVyZmFjZV9kZWJ1Zy5saWIgYXMgcmVjb21tZW5kZWQgYnkKKyAg
ICAgICAgQWRhbSBSb2Jlbi4KKworICAgICAgICAqIHdpbi9pbmNsdWRlL1dlYktpdFN5c3RlbUlu
dGVyZmFjZS9XZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaDoKKyAgICAgICAgKiB3aW4vbGliL1dlYktp
dFN5c3RlbUludGVyZmFjZS5saWI6CisgICAgICAgICogd2luL2xpYi9XZWJLaXRTeXN0ZW1JbnRl
cmZhY2VfZGVidWcubGliOiBSZW1vdmVkLgorCiAyMDEwLTEyLTA5ICBBbmRlcnMgQ2FybHNzb24g
IDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4K
SW5kZXg6IFdlYktpdExpYnJhcmllcy93aW4vaW5jbHVkZS9XZWJLaXRTeXN0ZW1JbnRlcmZhY2Uv
V2ViS2l0U3lzdGVtSW50ZXJmYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0TGlicmFyaWVzL3dp
bi9pbmNsdWRlL1dlYktpdFN5c3RlbUludGVyZmFjZS9XZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaAko
cmV2aXNpb24gNzM3MzEpCisrKyBXZWJLaXRMaWJyYXJpZXMvd2luL2luY2x1ZGUvV2ViS2l0U3lz
dGVtSW50ZXJmYWNlL1dlYktpdFN5c3RlbUludGVyZmFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
NDQsNiArMTQ0LDggQEAgdm9pZCB3a0NBQ0ZDb250ZXh0RGVzdHJveShXS0NBQ0ZDb250ZXh0Kgog
dm9pZCB3a0NBQ0ZDb250ZXh0U2V0TGF5ZXIoV0tDQUNGQ29udGV4dCosIENBQ0ZMYXllclJlZik7
CiB2b2lkIHdrQ0FDRkNvbnRleHRGbHVzaChXS0NBQ0ZDb250ZXh0Kik7CiAKK0NGVGltZUludGVy
dmFsIHdrQ0FDRkNvbnRleHRHZXRMYXN0Q29tbWl0VGltZShXS0NBQ0ZDb250ZXh0Kik7CisKIHZv
aWQgd2tDQUNGQ29udGV4dEluaXRpYWxpemVEM0REZXZpY2UoV0tDQUNGQ29udGV4dCosIElEaXJl
Y3QzRERldmljZTkqKTsKIHZvaWQgd2tDQUNGQ29udGV4dFJlbGVhc2VEM0RSZXNvdXJjZXMoV0tD
QUNGQ29udGV4dCopOwogCkluZGV4OiBXZWJLaXRMaWJyYXJpZXMvd2luL2xpYi9XZWJLaXRTeXN0
ZW1JbnRlcmZhY2UubGliCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFz
IGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0K
CklUeGhjbU5vUGdvdklDQWdJQ0FnSUNBZ0lDQWdJQ0FnTVRJNU1qQXdNemszTnlBZ0lDQWdJQ0Fn
SUNBZ0lDQWdNQ0FnSUNBZ0lDQXgKTWpBNU1DQWdJQ0FnWUFvQUFBRDFBQUJlcEFBQVhxUUFBRjZr
QUFCZXBBQUFYcVFBQUY2a0FBQmVwQUFBWHFRQUFGNmtBQUJlcEFBQQpYcVFBQUY2a0FBQmVwQUFB
WHFRQUFGNmtBQUJlcEFBQVhxUUFBRjZrQUFCZXBBQUFYcVFBQUY2a0FBQmVwQUFBWHFRQUFGNmtB
QUJlCnBBQUFYcVFBQUY2a0FBQmVwQUFBWHFRQUFGNmtBQUJlcEFBQVhxUUFBRjZrQUFCZXBBQUFY
cVFBQUY2a0FBQmVwQUFBWHFRQUFGNmsKQUFCZXBBQUFYcVFBQUY2a0FBQmVwQUFBWHFRQUFGNmtB
QUJlcEFBQVhxUUFBRjZrQUFCZXBBQUFYcVFBQUY2a0FBQmVwQUFBWHFRQQpBRjZrQUFCZXBBQUFY
cVFBQUY2a0FBQmVwQUFBWHFRQUFGNmtBQUJlcEFBQVhxUUFBRjZrQUFCZXBBQUFYcVFBQUY2a0FB
QmVwQUFBClhxUUFBRjZrQUFCZXBBQUFYcVFBQUY2a0FBQmVwQUFBWHFRQUFGNmtBQUJlcEFBQVhx
UUFBRjZrQUFCZXBBQUFYcVFBQUY2a0FBQmUKcEFBQjg1WUFBZk9XQUFIemxnQUI4NVlBQWZPV0FB
SHpsZ0FCODVZQUFmT1dBQUh6bGdBQjg1WUFBZk9XQUFIemxnQUI4NVlBQWZPVwpBQUh6bGdBQjg1
WUFBZk9XQUFIemxnQUI4NVlBQWZPV0FBSHpsZ0FCODVZQUFmT1dBQUh6bGdBQjg1WUFBZk9XQUFI
emxnQUI4NVlBCkFmT1dBQUh6bGdBQjg1WUFBZk9XQUFIemxnQUI4NVlBQWZPV0FBSHpsZ0FCODVZ
QUFmT1dBQUh6bGdBQjg1WUFBZk9XQUFIemxnQUIKODVZQUFmT1dBQUh6bGdBQjg1WUFBZk9XQUFI
emxnQUI4NVlBQWZPV0FBSHpsZ0FCODVZQUFmT1dBQUh6bGdBQjg1WUFBZk9XQUFIegpsZ0FCODVZ
QUFmT1dBQUh6bGdBQjg1WUFBZk9XQUFIemxnQUI4NVlBQWZPV0FBSHpsZ0FCODVZQUFmT1dBQUh6
bGdBQjg1WUFBZk9XCkFBSHpsZ0FCODVZQUFmT1dBQUh6bGdBQjg1WUFBZk9XQUFIemxnQUI4NVlB
QWZPV0FBSHpsZ0FCODVZQUFmT1dBQUh6bGdBQjg1WUEKQWZPV0FBSHpsZ0FCODVZQUFmT1dBQUh6
bGdBQjg1WUFBZk9XQUFIemxnQUI4NVlBQWZPV0FBSHpsZ0FCODVZQUFmT1dBQUh6bGdBQgo4NVlB
QWZPV0FBSHpsZ0FCODVZQUFmT1dBQUh6bGdBQjg1WUFBZk9XQUFIemxnQUI4NVlBQWZPV0FBSHps
Z0FCODVZQUFmT1dBQUh6CmxnQUI4NVlBQWZPV0FBSHpsZ0FCODVZQUFmT1dBQVQ3eWdBRSs4b0FC
UHZLQUFUN3lnQUUrOG9BQlB2S0FBVDd5Z0FFKzhvQUJQdksKQUFUN3lnQUUrOG9BQlB2S0FBVDd5
Z0FFKzhvQUJQdktBQVQ3eWdBRSs4b0FCUHZLQUFUN3lnQUUrOG9BQlB2S0FBVDd5Z0FFKzhvQQpC
UHZLQUFUN3lnQUZZallBQldJMkFBVmlOZ0FGWWpZQUJXSTJBQVZpTmdBRllqWUFCV0kyQUFWaU5n
QUZZallBQldJMkFBVmlOZ0FGCllqWUFCV0kyQUFWaU5nQUZZallBQldJMkFBVmlOZ0FGWWpZL1B6
QlhTME5CUTBaRGIyNTBaWGgwUUVCUlFVVkFXRm9BUHo4eFYwdEQKUVVOR1EyOXVkR1Y0ZEVCQVVV
RkZRRmhhQUQ4L1gwTkFYekJDUlVCRVEweExTMGxRUjBCUWNtOTRlVDg1UVhWMGFHOXlhWHBoZEds
dgpiajhrUVVGQUFEOC9YME5BWHpCQ1NFQkNUa2xDVDB4S1JrQmZhME5HVjJsdVpHOTNjMU5UVEZC
bFpYSkRaWEowUHlSQlFVQUFQejlmClEwQmZNRUpKUUVsRFVFZEZRVU5PUUY5clEwWlhhVzVrYjNk
elUxTk1URzlqWVd4RFpYSjBQeVJCUVVBQVB6OWZRMEJmTUVKTVFFZFEKVEV0RVVFcENRRjlyUTBa
WGFXNWtiM2R6VTFOTVEyaGhhVzVEYjI1MFpYaDBQeVJCUVVBQVB6OWZRMEJmTUVOR1FFZEhSVWRF
UTBaUQpRRjlyUTBaVlVreERiMjV1WldOMGFXOXVVSEp2Y0dWeWRIbFRhRzkxYkdSVFFBQS9QMTlE
UUY4d1EwWkFVRUpRUjFCRVVFWkFYMnREClJsTjBjbVZoYlZCeWIzQmxjblI1VjJsdVpHOTNjMU5U
VEVObGNuUkFBRDgvWDBOQVh6QkRSMEJKUjB4QlMwbEJRRjlEUms1bGRIZHYKY210SVZGUlFRMjl1
Ym1WamRHbHZia05oWTJobFUyVjBRQUEvUDE5RFFGOHdRMGRBVUVwRlNFSktVRTVBWDBOR1RtVjBk
Mjl5YTBoVQpWRkJEYjI1dVpXTjBhVzl1UTJGamFHVkhaWFJBQUQ4L1gwTkFYekZDVFVCUFFrZFBU
VUpPUzBBL0pFRkJRejhrUVVGR1B5UkJRVTQvCkpFRkJaVDhrUVVGMFB5UkJRWGMvSkVGQmJ6OGtR
VUZ5UHlSQlFXcy9KRUZCUHpRL0pFRkJaRDhrUVVGc1B5UkJRV3cvSkVGQlB5UkIKUVVBQVB6OWZS
MWRMUTBGRFJrTnZiblJsZUhSQVFGRkJSVkJCV0VsQVdnQS9abUZpYzBCQVdVRk5UVUJhQUQ5M2Ew
TkJRMFpEYjI1MApaWGgwUVdSa1ZYQmtZWFJsVW1WamRFQkFXVUZZVUVGVlYwdERRVU5HUTI5dWRH
VjRkRUJBUVVKVlEwZFNaV04wUUVCQVdnQS9kMnREClFVTkdRMjl1ZEdWNGRFSmxaMmx1VlhCa1lY
UmxRRUJaUVY5T1VFRlZWMHREUVVOR1EyOXVkR1Y0ZEVCQVVFRllTVTVCUWxWRFIxSmwKWTNSQVFG
RkNWVEpBU1VCYUFEOTNhME5CUTBaRGIyNTBaWGgwUTI5d2VWVndaR0YwWlZKbFkzUkZiblZ0WlhK
aGRHOXlRRUJaUVZCQgpWVmRMUTBGRFJsVndaR0YwWlZKbFkzUkZiblZ0WlhKaGRHOXlRRUJRUVZW
WFMwTkJRMFpEYjI1MFpYaDBRRUJBV2dBL2QydERRVU5HClEyOXVkR1Y0ZEVOeVpXRjBaVUJBV1VG
UVFWVlhTME5CUTBaRGIyNTBaWGgwUUVCWVdnQS9kMnREUVVOR1EyOXVkR1Y0ZEVSbGMzUnkKYjNs
QVFGbEJXRkJCVlZkTFEwRkRSa052Ym5SbGVIUkFRRUJhQUQ5M2EwTkJRMFpEYjI1MFpYaDBSbWx1
YVhOb1ZYQmtZWFJsUUVCWgpRVmhRUVZWWFMwTkJRMFpEYjI1MFpYaDBRRUJBV2dBL2QydERRVU5H
UTI5dWRHVjRkRVpzZFhOb1FFQlpRVmhRUVZWWFMwTkJRMFpECmIyNTBaWGgwUUVCQVdnQS9kMnRE
UVVOR1EyOXVkR1Y0ZEVkbGRFeGhjM1JEYjIxdGFYUlVhVzFsUUVCWlFVNVFRVlZYUzBOQlEwWkQK
YjI1MFpYaDBRRUJBV2dBL2QydERRVU5HUTI5dWRHVjRkRWx1YVhScFlXeHBlbVZFTTBSRVpYWnBZ
MlZBUUZsQldGQkJWVmRMUTBGRApSa052Ym5SbGVIUkFRRkJCVlVsRWFYSmxZM1F6UkVSbGRtbGpa
VGxBUUVCYUFEOTNhME5CUTBaRGIyNTBaWGgwVW1Wc1pXRnpaVVF6ClJGSmxjMjkxY21ObGMwQkFX
VUZZVUVGVlYwdERRVU5HUTI5dWRHVjRkRUJBUUZvQVAzZHJRMEZEUmtOdmJuUmxlSFJTWlc1a1pY
SlYKY0dSaGRHVkFRRmxCV0ZCQlZWZExRMEZEUmtOdmJuUmxlSFJBUUVCYUFEOTNhME5CUTBaRGIy
NTBaWGgwVTJWMFRHRjVaWEpBUUZsQgpXRkJCVlZkTFEwRkRSa052Ym5SbGVIUkFRRkJCVlY5RFFV
TkdUR0Y1WlhKQVFFQmFBRDkzYTBOQlEwWlZjR1JoZEdWU1pXTjBSVzUxCmJXVnlZWFJ2Y2s1bGVI
UlNaV04wUUVCWlFWQkNWVU5IVW1WamRFQkFVRUZWVjB0RFFVTkdWWEJrWVhSbFVtVmpkRVZ1ZFcx
bGNtRjAKYjNKQVFFQmFBRDkzYTBOQlEwWlZjR1JoZEdWU1pXTjBSVzUxYldWeVlYUnZjbEpsYkdW
aGMyVkFRRmxCV0ZCQlZWZExRMEZEUmxWdwpaR0YwWlZKbFkzUkZiblZ0WlhKaGRHOXlRRUJBV2dB
L2QydERRVWx0WVdkbFVYVmxkV1ZEYjJ4c1pXTjBRRUJaUVVsUVFWVmZRMEZKCmJXRm5aVkYxWlhW
bFFFQkFXZ0EvZDJ0RFFVbHRZV2RsVVhWbGRXVkRjbVZoZEdWQVFGbEJVRUZWWDBOQlNXMWhaMlZS
ZFdWMVpVQkEKU1VsSlFGb0FQM2RyUTBGSmJXRm5aVkYxWlhWbFIyVjBRMkZ3WVdOcGRIbEFRRmxC
U1ZCQlZWOURRVWx0WVdkbFVYVmxkV1ZBUUVCYQpBRDkzYTBOQlNXMWhaMlZSZFdWMVpVZGxkRVpz
WVdkelFFQlpRVWxRUVZWZlEwRkpiV0ZuWlZGMVpYVmxRRUJBV2dBL2QydERRVWx0CllXZGxVWFZs
ZFdWSFpYUlVlWEJsU1VSQVFGbEJTMWhhQUQ5M2EwTkJTVzFoWjJWUmRXVjFaVWx1YzJWeWRFbHRZ
V2RsUUVCWlFWOU8KVUVGVlgwTkJTVzFoWjJWUmRXVjFaVUJBVGtsZlMwbFFOa0ZZU1RGUVFWaEFX
akpBV2dBL2QydERRVWx0WVdkbFVYVmxkV1ZKYm5aaApiR2xrWVhSbFFFQlpRVmhRUVZWZlEwRkpi
V0ZuWlZGMVpYVmxRRUJBV2dBL2QydERRVWx0WVdkbFVYVmxkV1ZTWldkcGMzUmxjbEJwCmVHVnNR
blZtWm1WeVFFQlpRVjlMVUVGVlgwTkJTVzFoWjJWUmRXVjFaVUJBVUVGWVNVbEpTVWxRUWxWZlgw
TkdSR2xqZEdsdmJtRnkKZVVCQVNVQmFBRDkzYTBOQlNXMWhaMlZSZFdWMVpWTmxkRVpzWVdkelFF
QlpRVmhRUVZWZlEwRkpiV0ZuWlZGMVpYVmxRRUJKU1VCYQpBRDkzYTBOR1RtVjBkMjl5YTBWeWNt
OXlSMlYwVEc5allXeHBlbVZrUkdWelkzSnBjSFJwYjI1QVFGbEJVRUpWWDE5RFJsTjBjbWx1Clow
QkFTa0JhQUQ5M2EwTkdWVkpNVW1WeGRXVnpkRU52Y0hsSVZGUlFVbVZ4ZFdWemRFSnZaSGxRWVhK
MGMwQkFXVUZRUWxWZlgwTkcKUVhKeVlYbEFRRkJDVlY5RFJsVlNURkpsY1hWbGMzUkFRRUJhQUQ5
M2EwTkdWVkpNVW1WeGRXVnpkRk5sZEVoVVZGQlNaWEYxWlhOMApRbTlrZVZCaGNuUnpRRUJaUVZo
UVFWVmZRMFpWVWt4U1pYRjFaWE4wUUVCUVFsVmZYME5HUVhKeVlYbEFRRUJhQUQ5M2EwTnZjSGxE
ClQwNU9SVU5VVUhKdmVIbFNaWE53YjI1elpVQkFXVUZRUVZWZlgwTkdTRlJVVUUxbGMzTmhaMlZB
UUZCQlZWOWZRMFpTWldGa1UzUnkKWldGdFFFQlFRbFZmWDBOR1ZWSk1RRUJBV2dBL2QydERiM0I1
UTNKbFpHVnVkR2xoYkVaeWIyMURSbEJsY25OcGMzUmxiblJUZEc5eQpZV2RsUUVCWlFWQkJWVjlE
UmxWU1RFTnlaV1JsYm5ScFlXeEFRRkJCVlY5RFJsVlNURkJ5YjNSbFkzUnBiMjVUY0dGalpVQkFR
Rm9BClAzZHJRMjl3ZVVadmRXNWtZWFJwYjI1RFlXTm9aVVJwY21WamRHOXllVUJBV1VGUVFsVmZY
ME5HVTNSeWFXNW5RRUJZV2dBL2QydEQKY21WaGRHVlFjbWwyWVhSbFNGUlVVRU52YjJ0cFpWTjBi
M0poWjJWQVFGbEJVRUZWVDNCaGNYVmxRMFpJVkZSUVEyOXZhMmxsVTNSdgpjbUZuWlVCQVdGb0FQ
M2RyUkhKaGQwWnZZM1Z6VW1sdVowQkFXVUZZVUVGVlEwZERiMjUwWlhoMFFFQlFRVlZEUjBOdmJH
OXlRRUJOClFGb0FQM2RyUjJWMFJHVm1ZWFZzZEVoVVZGQkRiMjlyYVdWVGRHOXlZV2RsUUVCWlFW
QkJWVTl3WVhGMVpVTkdTRlJVVUVOdmIydHAKWlZOMGIzSmhaMlZBUUZoYUFEOTNhMGRsZEVadmJu
UlRiVzl2ZEdocGJtZERiMjUwY21GemRFQkFXVUZOV0ZvQVAzZHJSMlYwUm05dQpkRk50YjI5MGFH
bHVaMHhsZG1Wc1FFQlpRVWhZV2dBL2QydEhaWFJIYkhsd2FFRmtkbUZ1WTJWelFFQlpRVmhRUVZW
RFIwWnZiblJBClFFRkNWVU5IUVdabWFXNWxWSEpoYm5ObWIzSnRRRUJmVGpKSFFVRlZRMGRUYVhw
bFFFQkFXZ0EvZDJ0SFpYUkhiSGx3YUhOQVFGbEIKV0ZCQlZVTkhSbTl1ZEVCQVVVSmZWMUZCUjBs
QVdnQS9kMnRIWlhSVFUweERaWEowYVdacFkyRjBaVU5vWVdsdVEyOXVkR1Y0ZEVCQQpXVUZRUVZo
UVFsVmZYME5HUkdsamRHbHZibUZ5ZVVCQVFGb0FQM2RyUjJWMFUxTk1RMlZ5ZEdsbWFXTmhkR1ZK
Ym1adlFFQlpRVkJDClZWOWZRMFpFYVdOMGFXOXVZWEo1UUVCUVFWVmZRMFpWVWt4U1pYTndiMjV6
WlVCQVFGb0FQM2RyUjJWMFUxTk1VR1ZsY2tObGNuUnAKWm1sallYUmxSR0YwWVVCQVdVRlFRVmhR
UWxWZlgwTkdSR2xqZEdsdmJtRnllVUJBUUZvQVAzZHJSMlYwVlhObGNsUnZRbUZ6WlVOVQpUVUJB
V1VFL1FWVkRSMEZtWm1sdVpWUnlZVzV6Wm05eWJVQkFVRUZWUTBkRGIyNTBaWGgwUUVCQVdnQS9k
MnRKYm1sMGFXRnNhWHBsClRXRjRhVzExYlVoVVZGQkRiMjV1WldOMGFXOXVRMjkxYm5SUVpYSkli
M04wUUVCWlFVbEpRRm9BUDNkclVtVnpkRzl5WlVadmJuUlQKYlc5dmRHaHBibWRUZEhsc1pVQkFX
VUZZVUVGVlEwZERiMjUwWlhoMFFFQkpRRm9BUDNkclUyVjBRMFpWVWt4U1pYRjFaWE4wVTJodgpk
V3hrUTI5dWRHVnVkRk51YVdabVFFQlpRVmhRUVZWZlEwWlZVa3hTWlhGMVpYTjBRRUJmVGtCYUFE
OTNhMU5sZEVOSFEyOXVkR1Y0CmRFWnZiblJTWlc1a1pYSnBibWRUZEhsc1pVQkFXVUZZVUVGVlEw
ZERiMjUwWlhoMFFFQmZUakV4UUZvQVAzZHJVMlYwUTA5T1RrVkQKVkZCeWIzaDVRWFYwYUc5eWFY
cGhkR2x2YmtadmNsTjBjbVZoYlVCQVdVRllVRUZWWDE5RFJsSmxZV1JUZEhKbFlXMUFRRkJDVlY5
ZgpRMFpUZEhKcGJtZEFRRUJhQUQ5M2ExTmxkRU5QVGs1RlExUlFjbTk0ZVVadmNsTjBjbVZoYlVC
QVdVRllVRUZWWDE5RFJsSmxZV1JUCmRISmxZVzFBUUZCQ1ZWOWZRMFpUZEhKcGJtZEFRRkJDVlY5
ZlEwWk9kVzFpWlhKQVFFQmFBRDkzYTFObGRFTnNhV1Z1ZEVObGNuUnAKWm1sallYUmxTVzVUVTB4
UWNtOXdaWEowYVdWelFFQlpRVmhRUVZWZlgwTkdSR2xqZEdsdmJtRnllVUJBVUVKVlgxOURSa1Jo
ZEdGQQpRRUJhQUQ5M2ExTmxkRVp2Ym5SVGJXOXZkR2hwYm1kRGIyNTBjbUZ6ZEVCQVdVRllUVUJh
QUQ5M2ExTmxkRVp2Ym5SVGJXOXZkR2hwCmJtZE1aWFpsYkVCQVdVRllTRUJhQUQ5M2ExTmxkRVp2
Ym5SVGJXOXZkR2hwYm1kVGRIbHNaVUJBV1VGSlVFRlZRMGREYjI1MFpYaDAKUUVCZlRrQmFBRDkz
YTFObGRGQmhkSFJsY201Q1lYTmxRMVJOUUVCWlFWaFFRVlZEUjBOdmJuUmxlSFJBUUZWRFIwRm1a
bWx1WlZSeQpZVzV6Wm05eWJVQkFRRm9BUDNkclUyVjBVR0YwZEdWeWJsQm9ZWE5sU1c1VmMyVnlV
M0JoWTJWQVFGbEJXRkJCVlVOSFEyOXVkR1Y0CmRFQkFWVU5IVUc5cGJuUkFRRUJhQUQ5M2ExTmxk
RlZ3Um05dWRFTmhZMmhsUUVCWlFWaEpRRm9BUDNkclUzbHpkR1Z0Um05dWRGTnQKYjI5MGFHbHVa
ME5vWVc1blpXUkFRRmxCV0ZoYUFGOWZjbVZoYkVBd01EQXdNREF3TUFCZlgzSmxZV3hBTURBd01E
QXdNREF3TURBdwpNREF3TUFCZlgzSmxZV3hBTTJZNE1EQXdNREFBWDE5eVpXRnNRRE5tWWprNU9U
azVZVEF3TURBd01EQUFYMTl5WldGc1FETm1aVEF3Ck1EQXdNREF3TURBd01EQUFYMTl5WldGc1FE
Tm1aakF3TURBd01EQXdNREF3TURBQVgxOXlaV0ZzUURRd01EQXdNREF3QUY5ZmNtVmgKYkVBME1E
RXpNek16TXdCZlgzSmxZV3hBTkRBMlptVXdNREF3TURBd01EQXdNQUJmWDNKbFlXeEFOREE0WmpR
d01EQXdNREF3TURBdwpNQUJmWDNKbFlXeEFOR1k0TURBd01EQUFYMTl5WldGc1FHSm1PREF3TURB
d0FGOWpaV2xzWmdCZlptRmljMllBWDNCdmQyWUFQejh3ClRXVmthV0ZUYUdGeVpXUlZTVUpoWTJ0
bmNtOTFibVJGYkdWdFpXNTBRRUJSUVVWQVdGb0FQejh3VFdWa2FXRlRhR0Z5WldSVlNVTkQKU1cx
aFoyVkZiR1Z0Wlc1MFFFQlJRVVZBV0ZvQVB6OHdUV1ZrYVdGVGFHRnlaV1JWU1VsdFlXZGxSV3hs
YldWdWRFQkFVVUZGUUZoYQpBRDgvTUUxbFpHbGhVMmhoY21Wa1ZVbFVhVzFsYkdsdVpWTnNhV1Js
Y2tCQVVVRkZRRmhhQUQ4L01FMWxaR2xoVTJoaGNtVmtWVWxVCmFXMWxiR2x1WlZOc2FXUmxjbFJv
ZFcxaVJXeGxiV1Z1ZEVCQVVVRkZRRmhhQUQ4L01FMWxaR2xoVTJoaGNtVmtWVWxXYjJ4MWJXVlQK
Ykdsa1pYSkFRRkZCUlVCWVdnQS9QekJOWldScFlWTm9ZWEpsWkZWSlZtOXNkVzFsVTJ4cFpHVnlR
bUZqYTJkeWIzVnVaRVZzWlcxbApiblJBUUZGQlJVQllXZ0EvUHpCTlpXUnBZVk5vWVhKbFpGVkpW
bTlzZFcxbFUyeHBaR1Z5VkdoMWJXSkZiR1Z0Wlc1MFFFQlJRVVZBCldGb0FQejh3VFdWa2FXRlZT
VVZzWlcxbGJuUkFRRkZCUlVCWVdnQS9QekJOWldScFlWVkpWR2x0Wld4cGJtVlRiR2xrWlhKQVFG
RkIKUlVCWVdnQS9QekZOWldScFlWTm9ZWEpsWkZWSlFtRmphMmR5YjNWdVpFVnNaVzFsYm5SQVFG
VkJSVUJZV2dBL1B6Rk5aV1JwWVZObwpZWEpsWkZWSlEwTkpiV0ZuWlVWc1pXMWxiblJBUUZWQlJV
QllXZ0EvUHpGTlpXUnBZVk5vWVhKbFpGVkpTVzFoWjJWRmJHVnRaVzUwClFFQlZRVVZBV0ZvQVB6
OHhUV1ZrYVdGVGFHRnlaV1JWU1ZScGJXVnNhVzVsVTJ4cFpHVnlRRUJWUVVWQVdGb0FQejh4VFdW
a2FXRlQKYUdGeVpXUlZTVlJwYldWc2FXNWxVMnhwWkdWeVZHaDFiV0pGYkdWdFpXNTBRRUJWUVVW
QVdGb0FQejh4VFdWa2FXRlRhR0Z5WldSVgpTVlp2YkhWdFpWTnNhV1JsY2tCQVZVRkZRRmhhQUQ4
L01VMWxaR2xoVTJoaGNtVmtWVWxXYjJ4MWJXVlRiR2xrWlhKQ1lXTnJaM0p2CmRXNWtSV3hsYldW
dWRFQkFWVUZGUUZoYUFEOC9NVTFsWkdsaFUyaGhjbVZrVlVsV2IyeDFiV1ZUYkdsa1pYSlVhSFZ0
WWtWc1pXMWwKYm5SQVFGVkJSVUJZV2dBL1B6Rk5aV1JwWVZWSlJXeGxiV1Z1ZEVCQVZVRkZRRmhh
QUQ4L01VMWxaR2xoVlVsVWFXMWxiR2x1WlZOcwphV1JsY2tCQVZVRkZRRmhhQUQ4L1h6ZE5aV1Jw
WVZOb1lYSmxaRlZKUW1GamEyZHliM1Z1WkVWc1pXMWxiblJBUURaQ1FBQS9QMTgzClRXVmthV0ZU
YUdGeVpXUlZTVU5EU1cxaFoyVkZiR1Z0Wlc1MFFFQTJRa0FBUHo5Zk4wMWxaR2xoVTJoaGNtVmtW
VWxKYldGblpVVnMKWlcxbGJuUkFRRFpDUUFBL1AxODNUV1ZrYVdGVGFHRnlaV1JWU1ZScGJXVnNh
VzVsVTJ4cFpHVnlRRUEyUWtBQVB6OWZOMDFsWkdsaApVMmhoY21Wa1ZVbFVhVzFsYkdsdVpWTnNh
V1JsY2xSb2RXMWlSV3hsYldWdWRFQkFOa0pBQUQ4L1h6ZE5aV1JwWVZOb1lYSmxaRlZKClZtOXNk
VzFsVTJ4cFpHVnlRRUEyUWtBQVB6OWZOMDFsWkdsaFUyaGhjbVZrVlVsV2IyeDFiV1ZUYkdsa1pY
SkNZV05yWjNKdmRXNWsKUld4bGJXVnVkRUJBTmtKQUFEOC9YemROWldScFlWTm9ZWEpsWkZWSlZt
OXNkVzFsVTJ4cFpHVnlWR2gxYldKRmJHVnRaVzUwUUVBMgpRa0FBUHo5Zk4wMWxaR2xoVlVsRmJH
VnRaVzUwUUVBMlFrQUFQejlmTjAxbFpHbGhWVWxVYVcxbGJHbHVaVk5zYVdSbGNrQkFOa0pBCkFE
OC9YMGROWldScFlWTm9ZWEpsWkZWSlFtRmphMmR5YjNWdVpFVnNaVzFsYm5SQVFGVkJSVkJCV0Vs
QVdnQS9QMTlIVFdWa2FXRlQKYUdGeVpXUlZTVU5EU1cxaFoyVkZiR1Z0Wlc1MFFFQlZRVVZRUVZo
SlFGb0FQejlmUjAxbFpHbGhVMmhoY21Wa1ZVbEpiV0ZuWlVWcwpaVzFsYm5SQVFGVkJSVkJCV0Vs
QVdnQS9QMTlIVFdWa2FXRlRhR0Z5WldSVlNWUnBiV1ZzYVc1bFUyeHBaR1Z5UUVCVlFVVlFRVmhK
ClFGb0FQejlmUjAxbFpHbGhVMmhoY21Wa1ZVbFVhVzFsYkdsdVpWTnNhV1JsY2xSb2RXMWlSV3hs
YldWdWRFQkFWVUZGVUVGWVNVQmEKQUQ4L1gwZE5aV1JwWVZOb1lYSmxaRlZKVm05c2RXMWxVMnhw
WkdWeVFFQlZRVVZRUVZoSlFGb0FQejlmUjAxbFpHbGhVMmhoY21WawpWVWxXYjJ4MWJXVlRiR2xr
WlhKQ1lXTnJaM0p2ZFc1a1JXeGxiV1Z1ZEVCQVZVRkZVRUZZU1VCYUFEOC9YMGROWldScFlWTm9Z
WEpsClpGVkpWbTlzZFcxbFUyeHBaR1Z5VkdoMWJXSkZiR1Z0Wlc1MFFFQlZRVVZRUVZoSlFGb0FQ
ejlmUjAxbFpHbGhWVWxGYkdWdFpXNTAKUUVCVlFVVlFRVmhKUUZvQVB6OWZSMDFsWkdsaFZVbFVh
VzFsYkdsdVpWTnNhV1JsY2tCQVZVRkZVRUZZU1VCYUFEOWlZV05yWjNKdgpkVzVrVW1Ga2FYVnpR
RTFsWkdsaFUyaGhjbVZrVlVsV2IyeDFiV1ZUYkdsa1pYSkNZV05yWjNKdmRXNWtSV3hsYldWdWRF
QkFNRWxDCkFEOWlZV05yWjNKdmRXNWtVM1J5YjJ0bFZHaHBZMnR1WlhOelFFMWxaR2xoVTJoaGNt
VmtWVWxXYjJ4MWJXVlRiR2xrWlhKQ1lXTnIKWjNKdmRXNWtSV3hsYldWdWRFQkFNRWxDQUQ5amIy
NXpkSEpoYVc1QmMzQmxZM1JTWVhScGIwQk5aV1JwWVZOb1lYSmxaRlZKUTBOSgpiV0ZuWlVWc1pX
MWxiblJBUUZWQ1JWOU9XRm9BUDJOdmJuTjBjbUZwYmtGemNHVmpkRkpoZEdsdlFFMWxaR2xoVTJo
aGNtVmtWVWxKCmJXRm5aVVZzWlcxbGJuUkFRRlZDUlY5T1dGb0FQMk52Ym5SeWIyeEdiM0pRWVhK
MFFFMWxaR2xoVTJoaGNtVmtWVWxEYjI1MGNtOXMKYzBCQVZVSkZVRUZXVFdWa2FXRlZTVVZzWlcx
bGJuUkFRRWhBV2dBL1kzSmxZWFJsUW1GamEyZHliM1Z1WkVsdFlXZGxRRTFsWkdsaApVMmhoY21W
a1ZVbERRMGx0WVdkbFJXeGxiV1Z1ZEVCQVZVRkZVRUpZVUVGVlEwZERiMjUwWlhoMFFFQlZRMGRT
WldOMFFFQkFXZ0EvClkzSmxZWFJsUW1GamEyZHliM1Z1WkVsdFlXZGxRRTFsWkdsaFUyaGhjbVZr
VlVsSmJXRm5aVVZzWlcxbGJuUkFRRlZCUlZCQ1dGQkIKVlVOSFEyOXVkR1Y0ZEVCQVZVTkhVbVZq
ZEVCQVFGb0FQMlJ5WVhkQ1lXTnJaM0p2ZFc1a1FFMWxaR2xoVTJoaGNtVmtWVWxKYldGbgpaVVZz
WlcxbGJuUkFRRlZDUlZoUVFWVkRSME52Ym5SbGVIUkFRRlZEUjFKbFkzUkFRRUJhQUQ5a2RYSmhk
R2x2YmtCTlpXUnBZVlZKClZHbHRaV3hwYm1WVGJHbGtaWEpBUUZGQ1JVNVlXZ0EvWm1sc2JFMXZa
R1ZBVFdWa2FXRlRhR0Z5WldSVlNVbHRZV2RsUld4bGJXVnUKZEVCQVVVSkZQMEZYTkUxbFpHbGhW
VWxKYldGblpVWnBiR3hOYjJSbFFERkFXRm9BUDJaeVlXTjBhVzl1VEc5aFpHVmtRRTFsWkdsaApW
VWxVYVcxbGJHbHVaVk5zYVdSbGNrQkFVVUpGVGxoYUFEOW5iRzkzUTI5c2IzSkFUV1ZrYVdGVGFH
RnlaV1JWU1VsdFlXZGxSV3hsCmJXVnVkRUJBU1VGRlVFRlZRMGREYjJ4dmNrQkFXRm9BUDJobGFX
ZG9kRUJOWldScFlWTm9ZWEpsWkZWSlZHbHRaV3hwYm1WVGJHbGsKWlhKQVFGTkJUVmhhQUQ5b2FX
ZG9iR2xuYUhSVmJteHZZV1JsWkZKaGJtZGxRRTFsWkdsaFUyaGhjbVZrVlVsVWFXMWxiR2x1WlZO
cwphV1JsY2tCQVFVSkZXRkJCVlVOSFEyOXVkR1Y0ZEVCQVZVTkhVbVZqZEVCQVFGb0FQMmhwZEZS
bGMzUkFUV1ZrYVdGVGFHRnlaV1JWClNWUnBiV1ZzYVc1bFUyeHBaR1Z5VkdoMWJXSkZiR1Z0Wlc1
MFFFQlZRa1ZmVGxWRFIxSmxZM1JBUUZWRFIxQnZhVzUwUUVCQVdnQS8KYUdsMFZHVnpkRUJOWldS
cFlWTm9ZWEpsWkZWSlZtOXNkVzFsVTJ4cFpHVnlRbUZqYTJkeWIzVnVaRVZzWlcxbGJuUkFRRlZD
UlY5TwpWVU5IVW1WamRFQkFWVU5IVUc5cGJuUkFRRUJhQUQ5b2FYUlVaWE4wUUUxbFpHbGhVMmho
Y21Wa1ZVbFdiMngxYldWVGJHbGtaWEpVCmFIVnRZa1ZzWlcxbGJuUkFRRlZDUlY5T1ZVTkhVbVZq
ZEVCQVZVTkhVRzlwYm5SQVFFQmFBRDlvYVhSVVpYTjBRRTFsWkdsaFZVbEYKYkdWdFpXNTBRRUJW
UWtWZlRsVkRSMUpsWTNSQVFGVkRSMUJ2YVc1MFFFQkFXZ0EvYVcxaFoyVkFUV1ZrYVdGVGFHRnla
V1JWU1VsdApZV2RsUld4bGJXVnVkRUJBU1VKRlVFSllXRm9BUDJselJXNWhZbXhsWkVCTlpXUnBZ
VlZKUld4bGJXVnVkRUJBVVVKRlgwNVlXZ0EvCmFYTkdiMk4xYzJWa1FFMWxaR2xoVlVsRmJHVnRa
VzUwUUVCUlFrVmZUbGhhQUQ5cGMxQnlaWE56WldSQVRXVmthV0ZWU1VWc1pXMWwKYm5SQVFGRkNS
VjlPV0ZvQVAyNWhkSFZ5WVd4VGFYcGxRRTFsWkdsaFUyaGhjbVZrVlVsSmJXRm5aVVZzWlcxbGJu
UkFRRlZDUlQ5QgpWVU5IVTJsNlpVQkFXRm9BUDI1aGRIVnlZV3hUYVhwbFFFMWxaR2xoVTJoaGNt
VmtWVWxVYVcxbGJHbHVaVk5zYVdSbGNsUm9kVzFpClJXeGxiV1Z1ZEVCQVZVSkZQMEZWUTBkVGFY
cGxRRUJZV2dBL2JtRjBkWEpoYkZOcGVtVkFUV1ZrYVdGVGFHRnlaV1JWU1ZadmJIVnQKWlZOc2FX
UmxjbFJvZFcxaVJXeGxiV1Z1ZEVCQVZVSkZQMEZWUTBkVGFYcGxRRUJZV2dBL2JtRjBkWEpoYkZO
cGVtVkFUV1ZrYVdGVgpTVVZzWlcxbGJuUkFRRlZDUlQ5QlZVTkhVMmw2WlVCQVdGb0FQMjltWm5O
bGRFQk5aV1JwWVZOb1lYSmxaRlZKVkdsdFpXeHBibVZUCmJHbGtaWEpBUUZOQlRWaGFBRDl3WVds
dWRFQk5aV1JwWVZOb1lYSmxaRlZKUW1GamEyZHliM1Z1WkVWc1pXMWxiblJBUUZWQlJWaFEKUVZW
RFIwTnZiblJsZUhSQVFGVkRSMUpsWTNSQVFFQmFBRDl3WVdsdWRFQk5aV1JwWVZOb1lYSmxaRlZK
U1cxaFoyVkZiR1Z0Wlc1MApRRUJWUVVWWVVFRlZRMGREYjI1MFpYaDBRRUJWUTBkU1pXTjBRRUJB
V2dBL2NHRnBiblJBVFdWa2FXRlRhR0Z5WldSVlNWUnBiV1ZzCmFXNWxVMnhwWkdWeVFFQlZRVVZZ
VUVGVlEwZERiMjUwWlhoMFFFQlZRMGRTWldOMFFFQkFXZ0EvY0dGcGJuUkFUV1ZrYVdGVGFHRnkK
WldSVlNWUnBiV1ZzYVc1bFUyeHBaR1Z5VkdoMWJXSkZiR1Z0Wlc1MFFFQlZRVVZZVUVGVlEwZERi
MjUwWlhoMFFFQlZRMGRTWldOMApRRUJBV2dBL2NHRnBiblJBVFdWa2FXRlRhR0Z5WldSVlNWWnZi
SFZ0WlZOc2FXUmxja0JBVlVGRldGQkJWVU5IUTI5dWRHVjRkRUJBClZVTkhVbVZqZEVCQVFGb0FQ
M0JoYVc1MFFFMWxaR2xoVTJoaGNtVmtWVWxXYjJ4MWJXVlRiR2xrWlhKQ1lXTnJaM0p2ZFc1a1JX
eGwKYldWdWRFQkFWVUZGV0ZCQlZVTkhRMjl1ZEdWNGRFQkFWVU5IVW1WamRFQkFRRm9BUDNCaGFX
NTBRRTFsWkdsaFUyaGhjbVZrVlVsVwpiMngxYldWVGJHbGtaWEpVYUhWdFlrVnNaVzFsYm5SQVFG
VkJSVmhRUVZWRFIwTnZiblJsZUhSQVFGVkRSMUpsWTNSQVFFQmFBRDl3CllYSjBTVVJBVFdWa2FX
RlZTVVZzWlcxbGJuUkFRRkZDUlVoWVdnQS9jbUZrYVhWelFFMWxaR2xoVTJoaGNtVmtWVWxVYVcx
bGJHbHUKWlZOc2FXUmxjbFJvZFcxaVJXeGxiV1Z1ZEVCQVUwRk5XRm9BUDNKaFpHbDFjMEJOWldS
cFlWTm9ZWEpsWkZWSlZtOXNkVzFsVTJ4cApaR1Z5UUVCVFFVMVlXZ0EvY21Ga2FYVnpRRTFsWkds
aFUyaGhjbVZrVlVsV2IyeDFiV1ZUYkdsa1pYSkNZV05yWjNKdmRXNWtSV3hsCmJXVnVkRUJBVTBG
TldGb0FQM0poWkdsMWMwQk5aV1JwWVZOb1lYSmxaRlZKVm05c2RXMWxVMnhwWkdWeVZHaDFiV0pG
YkdWdFpXNTAKUUVCVFFVMVlXZ0EvYzJWMFVHRnlkRWxFUUUxbFpHbGhWVWxGYkdWdFpXNTBRRUJS
UVVWWVNFQmFBRDl6Ykdsa1pYSkFUV1ZrYVdGVAphR0Z5WldSVlNVTnZiblJ5YjJ4elFFQlZRa1ZR
UVZaTlpXUnBZVlZKVkdsdFpXeHBibVZUYkdsa1pYSkFRRmhhQUQ5emRISnZhMlZVCmFHbGphMjVs
YzNOQVRXVmthV0ZUYUdGeVpXUlZTVlp2YkhWdFpWTnNhV1JsY2tKaFkydG5jbTkxYm1SRmJHVnRa
VzUwUUVCVFFVMVkKV2dBL2RHaDFiV0pTWVdScGRYTkFUV1ZrYVdGVGFHRnlaV1JWU1ZScGJXVnNh
VzVsVTJ4cFpHVnlWR2gxYldKRmJHVnRaVzUwUUVBdwpTVUlBUDNSb2RXMWlVbUZrYVhWelFFMWxa
R2xoVTJoaGNtVmtWVWxXYjJ4MWJXVlRiR2xrWlhKVWFIVnRZa1ZzWlcxbGJuUkFRREJKClFnQS9k
R2x0WlV4dllXUmxaRUJOWldScFlWVkpWR2x0Wld4cGJtVlRiR2xrWlhKQVFGRkNSVTVZV2dBL2RH
bHRaV3hwYm1WU1pXTjAKUm05eVFtOTFibVJ6UUUxbFpHbGhVMmhoY21Wa1ZVbFVhVzFsYkdsdVpW
TnNhV1JsY2tCQVFVSkZQMEZWUTBkU1pXTjBRRUJWTWtCQQpXZ0EvZEhKaFkydElaV2xuYUhSQVRX
VmthV0ZUYUdGeVpXUlZTVlJwYldWc2FXNWxVMnhwWkdWeVFFQXdTVUlBUDNSeVlXTnJUMlptCmMy
VjBRRTFsWkdsaFUyaGhjbVZrVlVsVWFXMWxiR2x1WlZOc2FXUmxja0JBTUVsQ0FEOTBjbUZqYTFK
aFpHbDFjMEJOWldScFlWTm8KWVhKbFpGVkpWbTlzZFcxbFUyeHBaR1Z5UUVBd1NVSUFYMTl5WldG
c1FETmtZVE5rTnpCaEFGOWZjbVZoYkVBelpHWXdaakJtTVFCZgpYM0psWVd4QU0yVXdaalZqTWpr
QVgxOXlaV0ZzUURObE5HTmpZMk5rQUY5ZmNtVmhiRUF6WlRnd01EQXdNQUJmWDNKbFlXeEFNMlZp
Ck16TXpNek1BWDE5eVpXRnNRRE5tTURBd01EQXdBRjlmY21WaGJFQXpaakpsTVRRM1lnQmZYM0ps
WVd4QU0yWTBNREF3TURBQVgxOXkKWldGc1FETm1OR05qWTJOa0FGOWZjbVZoYkVBelpqVXdaREJr
TVFCZlgzSmxZV3hBTTJZMU9HUTRaRGtBWDE5eVpXRnNRRE5tTmpBdwpNREF3QUY5ZmNtVmhiRUF6
WmpaaU9EVXhaZ0JmWDNKbFlXeEFNMlkzTXpNek16TUFYMTl5WldGc1FETm1Zemt3Wm1SaUFGOWZj
bVZoCmJFQTBNREF3TURBd01EQXdNREF3TURBd0FGOWZjbVZoYkVBME1EQTVNakZtWWpVME5EUXla
REU0QUY5ZmNtVmhiRUEwTURFd01EQXcKTURBd01EQXdNREF3QUY5ZmNtVmhiRUEwTURJd01EQXdN
REF3TURBd01EQXdBRjlmY21WaGJFQTBNRE13TURBd01EQXdNREF3TURBdwpBRjlmY21WaGJFQTBN
RFE1TUdaa1lnQmZYM0psWVd4QU5EQTJOamd3TURBd01EQXdNREF3TUFCZlgzSmxZV3hBTkRBNE1E
QXdNREFBClgxOXlaV0ZzUURRd09UWmpZbVUwQUY5ZmNtVmhiRUEwTUdFd01EQXdNQUJmWDNKbFlX
eEFOREV4TURBd01EQUFYMTl5WldGc1FEUXgKTWpBd01EQXdBRjlmY21WaGJFQTBNVE13TURBd01B
QmZYM0psWVd4QVltWmpPVEJtWkdJQVB6OHdUV1ZrYVdGRGIyNTBjbTlzYzBCQQpVVUZGUUZoYUFE
OC9NRTFsWkdsaFRHVm5ZV041UTI5dWRISnZiSE5BUUZGQlJVQllXZ0EvUHpCTlpXUnBZVk5vWVhK
bFpGVkpRMjl1CmRISnZiSE5BUUZGQlJVQllXZ0EvUHpGTlpXUnBZVU52Ym5SeWIyeHpRRUJWUVVW
QVdGb0FQejh4VFdWa2FXRk1aV2RoWTNsRGIyNTAKY205c2MwQkFWVUZGUUZoYUFEOC9NVTFsWkds
aFUyaGhjbVZrVlVsRGIyNTBjbTlzYzBCQVZVRkZRRmhhQUQ4L1h6ZE5aV1JwWVVOdgpiblJ5YjJ4
elFFQTJRa0FBUHo5Zk4wMWxaR2xoVEdWbllXTjVRMjl1ZEhKdmJITkFRRFpDUUFBL1AxODNUV1Zr
YVdGVGFHRnlaV1JWClNVTnZiblJ5YjJ4elFFQTJRa0FBUHo5ZlIwMWxaR2xoUTI5dWRISnZiSE5B
UUZWQlJWQkJXRWxBV2dBL1AxOUhUV1ZrYVdGTVpXZGgKWTNsRGIyNTBjbTlzYzBCQVZVRkZVRUZZ
U1VCYUFEOC9YMGROWldScFlWTm9ZWEpsWkZWSlEyOXVkSEp2YkhOQVFGVkJSVkJCV0VsQQpXZ0Ev
WkhKaGQxQmhjblJBVFdWa2FXRkRiMjUwY205c2MwQkFWVUZGV0VoUVFWVkRSME52Ym5SbGVIUkFR
RlZEUjFKbFkzUkFRRWxBCldnQS9aSEpoZDFScGJXVnNhVzVsVTJ4cFpHVnlWSEpoWTJ0QVRXVmth
V0ZEYjI1MGNtOXNjMEJBVlVGRldGQkJWVU5IUTI5dWRHVjQKZEVCQVZVTkhVbVZqZEVCQVRrNUpR
Rm9BUDJocGRGUmxjM1JRWVhKMFFFMWxaR2xoUTI5dWRISnZiSE5BUUZWQ1JWOU9TRlZEUjFKbApZ
M1JBUUZWRFIxQnZhVzUwUUVCQVdnQS9ibUYwZFhKaGJGTnBlbVZBVFdWa2FXRkRiMjUwY205c2Mw
QkFWVUpGUDBGVlEwZFRhWHBsClFFQklRRm9BUDNKbGMzUnZjbVZEYjI1MFpYaDBRV1owWlhKUVlX
bHVkR2x1WjBCTlpXUnBZVlZKUld4bGJXVnVkRUJBVFVKRldGQkIKVlVOSFEyOXVkR1Y0ZEVCQVFG
b0FQM05sZEVSMWNtRjBhVzl1UUUxbFpHbGhWVWxVYVcxbGJHbHVaVk5zYVdSbGNrQkFVVUZGV0U1
QQpXZ0EvYzJWMFUzUmhkR1ZBVFdWa2FXRlZTVVZzWlcxbGJuUkFRRkZCUlZoWE5GZExUV1ZrYVdG
RGIyNTBjbTlzYkdWeVZHaGxiV1ZUCmRHRjBaVUJBUUZvQVAzTmxkRlJwYldWTWIyRmtaV1JBVFdW
a2FXRlZTVlJwYldWc2FXNWxVMnhwWkdWeVFFQlJRVVZZVGtCYUFEOXoKWlhSVmNFTnZiblJsZUhS
R2IzSlFZV2x1ZEdsdVowQk5aV1JwWVZWSlJXeGxiV1Z1ZEVCQVRVSkZXRkJCVlVOSFEyOXVkR1Y0
ZEVCQQpWVU5IVW1WamRFQkFRRm9BWDFkTFJISmhkMDFsWkdsaFUyeHBaR1Z5VkhKaFkyc0FYMWRM
UkhKaGQwMWxaR2xoVlVsUVlYSjBBRjlYClMwaHBkRlJsYzNSTlpXUnBZVlZKVUdGeWRBQmZWMHRO
WldGemRYSmxUV1ZrYVdGVlNWQmhjblFBUHo4d1RXVmthV0ZNWldkaFkzbFYKU1VsdFlXZGxSV3hs
YldWdWRFQkFVVUZGUUZoYUFEOC9NRTFsWkdsaFRHVm5ZV041VlVsVWFXMWxiR2x1WlZOc2FXUmxj
a0JBVVVGRgpRRmhhQUQ4L01VMWxaR2xoVEdWbllXTjVWVWxKYldGblpVVnNaVzFsYm5SQVFGVkJS
VUJZV2dBL1B6Rk5aV1JwWVV4bFoyRmplVlZKClZHbHRaV3hwYm1WVGJHbGtaWEpBUUZWQlJVQllX
Z0EvUDE4M1RXVmthV0ZNWldkaFkzbFZTVWx0WVdkbFJXeGxiV1Z1ZEVCQU5rSkEKQUQ4L1h6ZE5a
V1JwWVV4bFoyRmplVlZKVkdsdFpXeHBibVZUYkdsa1pYSkFRRFpDUUFBL1AxOUhUV1ZrYVdGTVpX
ZGhZM2xWU1VsdApZV2RsUld4bGJXVnVkRUJBVlVGRlVFRllTVUJhQUQ4L1gwZE5aV1JwWVV4bFoy
RmplVlZKVkdsdFpXeHBibVZUYkdsa1pYSkFRRlZCClJWQkJXRWxBV2dBL1kyOXVkSEp2YkVadmNs
QmhjblJBVFdWa2FXRk1aV2RoWTNsRGIyNTBjbTlzYzBCQVZVSkZVRUZXVFdWa2FXRlYKU1VWc1pX
MWxiblJBUUVoQVdnQS9hVzFoWjJWQVRXVmthV0ZNWldkaFkzbFZTVWx0WVdkbFJXeGxiV1Z1ZEVC
QVFVSkZVRUZWUTBkSgpiV0ZuWlVCQVdGb0FQMjVoZEhWeVlXeFRhWHBsUUUxbFpHbGhUR1ZuWVdO
NVZVbEpiV0ZuWlVWc1pXMWxiblJBUUZWQ1JUOUJWVU5IClUybDZaVUJBV0ZvQVAzQmhhVzUwUUUx
bFpHbGhUR1ZuWVdONVZVbEpiV0ZuWlVWc1pXMWxiblJBUUZWQlJWaFFRVlZEUjBOdmJuUmwKZUhS
QVFGVkRSMUpsWTNSQVFFQmFBRDl3WVdsdWRFQk5aV1JwWVV4bFoyRmplVlZKVkdsdFpXeHBibVZU
Ykdsa1pYSkFRRlZCUlZoUQpRVlZEUjBOdmJuUmxlSFJBUUZWRFIxSmxZM1JBUUVCYUFEOXlaWE4w
YjNKbFEyOXVkR1Y0ZEVGbWRHVnlVR0ZwYm5ScGJtZEFUV1ZrCmFXRk1aV2RoWTNsVlNVbHRZV2Rs
Uld4bGJXVnVkRUJBUlVKRldGQkJWVU5IUTI5dWRHVjRkRUJBUUZvQVAzSmxjM1J2Y21WRGIyNTAK
WlhoMFFXWjBaWEpRWVdsdWRHbHVaMEJOWldScFlVeGxaMkZqZVZWSlZHbHRaV3hwYm1WVGJHbGta
WEpBUUVWQ1JWaFFRVlZEUjBOdgpiblJsZUhSQVFFQmFBRDl6WlhSVmNFTnZiblJsZUhSR2IzSlFZ
V2x1ZEdsdVowQk5aV1JwWVV4bFoyRmplVlZKU1cxaFoyVkZiR1Z0ClpXNTBRRUJGUWtWWVVFRlZR
MGREYjI1MFpYaDBRRUJWUTBkU1pXTjBRRUJBV2dBL2MyVjBWWEJEYjI1MFpYaDBSbTl5VUdGcGJu
UnAKYm1kQVRXVmthV0ZNWldkaFkzbFZTVlJwYldWc2FXNWxVMnhwWkdWeVFFQkZRa1ZZVUVGVlEw
ZERiMjUwWlhoMFFFQlZRMGRTWldOMApRRUJBV2dBL2MyeHBaR1Z5UUUxbFpHbGhUR1ZuWVdONVEy
OXVkSEp2YkhOQVFGVkNSVkJCVmsxbFpHbGhWVWxVYVcxbGJHbHVaVk5zCmFXUmxja0JBV0ZvQVgy
WnNiMjl5WmdBdklDQWdJQ0FnSUNBZ0lDQWdJQ0FnTVRJNU1qQXdNemszTnlBZ0lDQWdJQ0FnSUNB
Z0lDQWcKTUNBZ0lDQWdJQ0F4TVRZeU1DQWdJQ0FnWUFvRUFBQUFwRjRBQUpiekFRREsrd1FBTm1J
RkFQVUFBQUFEQUFNQUJBQUVBQUlBQWdBRApBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUJBQU1BQXdB
RUFBUUFBZ0FDQUFNQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFFQUF3QURBQVFBCkJBQUNBQUlBQXdB
Q0FBSUFBZ0FDQUFJQUFnQUNBQUlBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQXdBREFBUUFCQUFD
QUFJQUF3QUMKQUFJQUFnQUNBQUlBQWdBQ0FBSUFBUUFDQUFJQUFnQUNBQVFBQWdBQ0FBSUFBZ0FE
QUFNQUFnQUJBQUlBQWdBQ0FBSUFBZ0FDQUFJQQpBZ0FDQUFNQUJBQUNBQUlBQWdBQ0FBTUFCQUFD
QUFJQUFnQUNBQUlBQkFBRUFBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDCkFBUUFCQUFE
QUFNQUFnQURBQU1BQkFBRUFBTUFCQUFDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FCQUFFQUFRQUJB
QUVBQVFBQkFBRUEKQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJB
QUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQgpBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJB
QUVBQVFBQkFBRUFBUUFCQUFFQUFRQURBQU1BQXdBREFBRUFBUUFDQUFJQUFnQUNBQUlBCkFnQUNB
QUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUJBQUVBQWdBQkFBRUFBUUFDQUFJQUFnQUJBQUlBQWdBQ0FB
SUFBUUFDQUFFQUFnQUMKQUFJQUFnQUNBQUVBQVFBQ0FBRUFBUUFFQUFFQVB6OHdUV1ZrYVdGRGIy
NTBjbTlzYzBCQVVVRkZRRmhhQUQ4L01FMWxaR2xoVEdWbgpZV041UTI5dWRISnZiSE5BUUZGQlJV
QllXZ0EvUHpCTlpXUnBZVXhsWjJGamVWVkpTVzFoWjJWRmJHVnRaVzUwUUVCUlFVVkFXRm9BClB6
OHdUV1ZrYVdGTVpXZGhZM2xWU1ZScGJXVnNhVzVsVTJ4cFpHVnlRRUJSUVVWQVdGb0FQejh3VFdW
a2FXRlRhR0Z5WldSVlNVSmgKWTJ0bmNtOTFibVJGYkdWdFpXNTBRRUJSUVVWQVdGb0FQejh3VFdW
a2FXRlRhR0Z5WldSVlNVTkRTVzFoWjJWRmJHVnRaVzUwUUVCUgpRVVZBV0ZvQVB6OHdUV1ZrYVdG
VGFHRnlaV1JWU1VOdmJuUnliMnh6UUVCUlFVVkFXRm9BUHo4d1RXVmthV0ZUYUdGeVpXUlZTVWx0
CllXZGxSV3hsYldWdWRFQkFVVUZGUUZoYUFEOC9NRTFsWkdsaFUyaGhjbVZrVlVsVWFXMWxiR2x1
WlZOc2FXUmxja0JBVVVGRlFGaGEKQUQ4L01FMWxaR2xoVTJoaGNtVmtWVWxVYVcxbGJHbHVaVk5z
YVdSbGNsUm9kVzFpUld4bGJXVnVkRUJBVVVGRlFGaGFBRDgvTUUxbApaR2xoVTJoaGNtVmtWVWxX
YjJ4MWJXVlRiR2xrWlhKQVFGRkJSVUJZV2dBL1B6Qk5aV1JwWVZOb1lYSmxaRlZKVm05c2RXMWxV
MnhwClpHVnlRbUZqYTJkeWIzVnVaRVZzWlcxbGJuUkFRRkZCUlVCWVdnQS9QekJOWldScFlWTm9Z
WEpsWkZWSlZtOXNkVzFsVTJ4cFpHVnkKVkdoMWJXSkZiR1Z0Wlc1MFFFQlJRVVZBV0ZvQVB6OHdU
V1ZrYVdGVlNVVnNaVzFsYm5SQVFGRkJSVUJZV2dBL1B6Qk5aV1JwWVZWSgpWR2x0Wld4cGJtVlRi
R2xrWlhKQVFGRkJSVUJZV2dBL1B6QlhTME5CUTBaRGIyNTBaWGgwUUVCUlFVVkFXRm9BUHo4eFRX
VmthV0ZECmIyNTBjbTlzYzBCQVZVRkZRRmhhQUQ4L01VMWxaR2xoVEdWbllXTjVRMjl1ZEhKdmJI
TkFRRlZCUlVCWVdnQS9QekZOWldScFlVeGwKWjJGamVWVkpTVzFoWjJWRmJHVnRaVzUwUUVCVlFV
VkFXRm9BUHo4eFRXVmthV0ZNWldkaFkzbFZTVlJwYldWc2FXNWxVMnhwWkdWeQpRRUJWUVVWQVdG
b0FQejh4VFdWa2FXRlRhR0Z5WldSVlNVSmhZMnRuY205MWJtUkZiR1Z0Wlc1MFFFQlZRVVZBV0Zv
QVB6OHhUV1ZrCmFXRlRhR0Z5WldSVlNVTkRTVzFoWjJWRmJHVnRaVzUwUUVCVlFVVkFXRm9BUHo4
eFRXVmthV0ZUYUdGeVpXUlZTVU52Ym5SeWIyeHoKUUVCVlFVVkFXRm9BUHo4eFRXVmthV0ZUYUdG
eVpXUlZTVWx0WVdkbFJXeGxiV1Z1ZEVCQVZVRkZRRmhhQUQ4L01VMWxaR2xoVTJoaApjbVZrVlVs
VWFXMWxiR2x1WlZOc2FXUmxja0JBVlVGRlFGaGFBRDgvTVUxbFpHbGhVMmhoY21Wa1ZVbFVhVzFs
YkdsdVpWTnNhV1JsCmNsUm9kVzFpUld4bGJXVnVkRUJBVlVGRlFGaGFBRDgvTVUxbFpHbGhVMmho
Y21Wa1ZVbFdiMngxYldWVGJHbGtaWEpBUUZWQlJVQlkKV2dBL1B6Rk5aV1JwWVZOb1lYSmxaRlZK
Vm05c2RXMWxVMnhwWkdWeVFtRmphMmR5YjNWdVpFVnNaVzFsYm5SQVFGVkJSVUJZV2dBLwpQekZO
WldScFlWTm9ZWEpsWkZWSlZtOXNkVzFsVTJ4cFpHVnlWR2gxYldKRmJHVnRaVzUwUUVCVlFVVkFX
Rm9BUHo4eFRXVmthV0ZWClNVVnNaVzFsYm5SQVFGVkJSVUJZV2dBL1B6Rk5aV1JwWVZWSlZHbHRa
V3hwYm1WVGJHbGtaWEpBUUZWQlJVQllXZ0EvUHpGWFMwTkIKUTBaRGIyNTBaWGgwUUVCUlFVVkFX
Rm9BUHo5Zk4wMWxaR2xoUTI5dWRISnZiSE5BUURaQ1FBQS9QMTgzVFdWa2FXRk1aV2RoWTNsRApi
MjUwY205c2MwQkFOa0pBQUQ4L1h6ZE5aV1JwWVV4bFoyRmplVlZKU1cxaFoyVkZiR1Z0Wlc1MFFF
QTJRa0FBUHo5Zk4wMWxaR2xoClRHVm5ZV041VlVsVWFXMWxiR2x1WlZOc2FXUmxja0JBTmtKQUFE
OC9YemROWldScFlWTm9ZWEpsWkZWSlFtRmphMmR5YjNWdVpFVnMKWlcxbGJuUkFRRFpDUUFBL1Ax
ODNUV1ZrYVdGVGFHRnlaV1JWU1VORFNXMWhaMlZGYkdWdFpXNTBRRUEyUWtBQVB6OWZOMDFsWkds
aApVMmhoY21Wa1ZVbERiMjUwY205c2MwQkFOa0pBQUQ4L1h6ZE5aV1JwWVZOb1lYSmxaRlZKU1cx
aFoyVkZiR1Z0Wlc1MFFFQTJRa0FBClB6OWZOMDFsWkdsaFUyaGhjbVZrVlVsVWFXMWxiR2x1WlZO
c2FXUmxja0JBTmtKQUFEOC9YemROWldScFlWTm9ZWEpsWkZWSlZHbHQKWld4cGJtVlRiR2xrWlhK
VWFIVnRZa1ZzWlcxbGJuUkFRRFpDUUFBL1AxODNUV1ZrYVdGVGFHRnlaV1JWU1ZadmJIVnRaVk5z
YVdSbApja0JBTmtKQUFEOC9YemROWldScFlWTm9ZWEpsWkZWSlZtOXNkVzFsVTJ4cFpHVnlRbUZq
YTJkeWIzVnVaRVZzWlcxbGJuUkFRRFpDClFBQS9QMTgzVFdWa2FXRlRhR0Z5WldSVlNWWnZiSFZ0
WlZOc2FXUmxjbFJvZFcxaVJXeGxiV1Z1ZEVCQU5rSkFBRDgvWHpkTlpXUnAKWVZWSlJXeGxiV1Z1
ZEVCQU5rSkFBRDgvWHpkTlpXUnBZVlZKVkdsdFpXeHBibVZUYkdsa1pYSkFRRFpDUUFBL1AxOURR
Rjh3UWtWQQpSRU5NUzB0SlVFZEFVSEp2ZUhrL09VRjFkR2h2Y21sNllYUnBiMjQvSkVGQlFBQS9Q
MTlEUUY4d1FraEFRazVKUWs5TVNrWkFYMnREClJsZHBibVJ2ZDNOVFUweFFaV1Z5UTJWeWREOGtR
VUZBQUQ4L1gwTkFYekJDU1VCSlExQkhSVUZEVGtCZmEwTkdWMmx1Wkc5M2MxTlQKVEV4dlkyRnNR
MlZ5ZEQ4a1FVRkFBRDgvWDBOQVh6QkNURUJIVUV4TFJGQktRa0JmYTBOR1YybHVaRzkzYzFOVFRF
Tm9ZV2x1UTI5dQpkR1Y0ZEQ4a1FVRkFBRDgvWDBOQVh6QkRSa0JIUjBWSFJFTkdVRUJmYTBOR1ZW
Sk1RMjl1Ym1WamRHbHZibEJ5YjNCbGNuUjVVMmh2CmRXeGtVMEFBUHo5ZlEwQmZNRU5HUUZCQ1VF
ZFFSRkJHUUY5clEwWlRkSEpsWVcxUWNtOXdaWEowZVZkcGJtUnZkM05UVTB4RFpYSjAKUUFBL1Ax
OURRRjh3UTBkQVNVZE1RVXRKUVVCZlEwWk9aWFIzYjNKclNGUlVVRU52Ym01bFkzUnBiMjVEWVdO
b1pWTmxkRUFBUHo5ZgpRMEJmTUVOSFFGQktSVWhDU2xCT1FGOURSazVsZEhkdmNtdElWRlJRUTI5
dWJtVmpkR2x2YmtOaFkyaGxSMlYwUUFBL1AxOURRRjh4ClFrMUFUMEpIVDAxQ1RrdEFQeVJCUVVN
L0pFRkJSajhrUVVGT1B5UkJRV1UvSkVGQmREOGtRVUYzUHlSQlFXOC9KRUZCY2o4a1FVRnIKUHlS
QlFUODBQeVJCUVdRL0pFRkJiRDhrUVVGc1B5UkJRVDhrUVVGQUFEOC9YMGROWldScFlVTnZiblJ5
YjJ4elFFQlZRVVZRUVZoSgpRRm9BUHo5ZlIwMWxaR2xoVEdWbllXTjVRMjl1ZEhKdmJITkFRRlZC
UlZCQldFbEFXZ0EvUDE5SFRXVmthV0ZNWldkaFkzbFZTVWx0CllXZGxSV3hsYldWdWRFQkFWVUZG
VUVGWVNVQmFBRDgvWDBkTlpXUnBZVXhsWjJGamVWVkpWR2x0Wld4cGJtVlRiR2xrWlhKQVFGVkIK
UlZCQldFbEFXZ0EvUDE5SFRXVmthV0ZUYUdGeVpXUlZTVUpoWTJ0bmNtOTFibVJGYkdWdFpXNTBR
RUJWUVVWUVFWaEpRRm9BUHo5ZgpSMDFsWkdsaFUyaGhjbVZrVlVsRFEwbHRZV2RsUld4bGJXVnVk
RUJBVlVGRlVFRllTVUJhQUQ4L1gwZE5aV1JwWVZOb1lYSmxaRlZKClEyOXVkSEp2YkhOQVFGVkJS
VkJCV0VsQVdnQS9QMTlIVFdWa2FXRlRhR0Z5WldSVlNVbHRZV2RsUld4bGJXVnVkRUJBVlVGRlVF
RlkKU1VCYUFEOC9YMGROWldScFlWTm9ZWEpsWkZWSlZHbHRaV3hwYm1WVGJHbGtaWEpBUUZWQlJW
QkJXRWxBV2dBL1AxOUhUV1ZrYVdGVAphR0Z5WldSVlNWUnBiV1ZzYVc1bFUyeHBaR1Z5VkdoMWJX
SkZiR1Z0Wlc1MFFFQlZRVVZRUVZoSlFGb0FQejlmUjAxbFpHbGhVMmhoCmNtVmtWVWxXYjJ4MWJX
VlRiR2xrWlhKQVFGVkJSVkJCV0VsQVdnQS9QMTlIVFdWa2FXRlRhR0Z5WldSVlNWWnZiSFZ0WlZO
c2FXUmwKY2tKaFkydG5jbTkxYm1SRmJHVnRaVzUwUUVCVlFVVlFRVmhKUUZvQVB6OWZSMDFsWkds
aFUyaGhjbVZrVlVsV2IyeDFiV1ZUYkdsawpaWEpVYUhWdFlrVnNaVzFsYm5SQVFGVkJSVkJCV0Vs
QVdnQS9QMTlIVFdWa2FXRlZTVVZzWlcxbGJuUkFRRlZCUlZCQldFbEFXZ0EvClAxOUhUV1ZrYVdG
VlNWUnBiV1ZzYVc1bFUyeHBaR1Z5UUVCVlFVVlFRVmhKUUZvQVB6OWZSMWRMUTBGRFJrTnZiblJs
ZUhSQVFGRkIKUlZCQldFbEFXZ0EvWW1GamEyZHliM1Z1WkZKaFpHbDFjMEJOWldScFlWTm9ZWEps
WkZWSlZtOXNkVzFsVTJ4cFpHVnlRbUZqYTJkeQpiM1Z1WkVWc1pXMWxiblJBUURCSlFnQS9ZbUZq
YTJkeWIzVnVaRk4wY205clpWUm9hV05yYm1WemMwQk5aV1JwWVZOb1lYSmxaRlZKClZtOXNkVzFs
VTJ4cFpHVnlRbUZqYTJkeWIzVnVaRVZzWlcxbGJuUkFRREJKUWdBL1kyOXVjM1J5WVdsdVFYTnda
V04wVW1GMGFXOUEKVFdWa2FXRlRhR0Z5WldSVlNVTkRTVzFoWjJWRmJHVnRaVzUwUUVCVlFrVmZU
bGhhQUQ5amIyNXpkSEpoYVc1QmMzQmxZM1JTWVhScApiMEJOWldScFlWTm9ZWEpsWkZWSlNXMWha
MlZGYkdWdFpXNTBRRUJWUWtWZlRsaGFBRDlqYjI1MGNtOXNSbTl5VUdGeWRFQk5aV1JwCllVeGxa
MkZqZVVOdmJuUnliMnh6UUVCVlFrVlFRVlpOWldScFlWVkpSV3hsYldWdWRFQkFTRUJhQUQ5amIy
NTBjbTlzUm05eVVHRnkKZEVCTlpXUnBZVk5vWVhKbFpGVkpRMjl1ZEhKdmJITkFRRlZDUlZCQlZr
MWxaR2xoVlVsRmJHVnRaVzUwUUVCSVFGb0FQMk55WldGMApaVUpoWTJ0bmNtOTFibVJKYldGblpV
Qk5aV1JwWVZOb1lYSmxaRlZKUTBOSmJXRm5aVVZzWlcxbGJuUkFRRlZCUlZCQ1dGQkJWVU5IClEy
OXVkR1Y0ZEVCQVZVTkhVbVZqZEVCQVFGb0FQMk55WldGMFpVSmhZMnRuY205MWJtUkpiV0ZuWlVC
TlpXUnBZVk5vWVhKbFpGVkoKU1cxaFoyVkZiR1Z0Wlc1MFFFQlZRVVZRUWxoUVFWVkRSME52Ym5S
bGVIUkFRRlZEUjFKbFkzUkFRRUJhQUQ5a2NtRjNRbUZqYTJkeQpiM1Z1WkVCTlpXUnBZVk5vWVhK
bFpGVkpTVzFoWjJWRmJHVnRaVzUwUUVCVlFrVllVRUZWUTBkRGIyNTBaWGgwUUVCVlEwZFNaV04w
ClFFQkFXZ0EvWkhKaGQxQmhjblJBVFdWa2FXRkRiMjUwY205c2MwQkFWVUZGV0VoUVFWVkRSME52
Ym5SbGVIUkFRRlZEUjFKbFkzUkEKUUVsQVdnQS9aSEpoZDFScGJXVnNhVzVsVTJ4cFpHVnlWSEpo
WTJ0QVRXVmthV0ZEYjI1MGNtOXNjMEJBVlVGRldGQkJWVU5IUTI5dQpkR1Y0ZEVCQVZVTkhVbVZq
ZEVCQVRrNUpRRm9BUDJSMWNtRjBhVzl1UUUxbFpHbGhWVWxVYVcxbGJHbHVaVk5zYVdSbGNrQkFV
VUpGClRsaGFBRDltWVdKelFFQlpRVTFOUUZvQVAyWnBiR3hOYjJSbFFFMWxaR2xoVTJoaGNtVmtW
VWxKYldGblpVVnNaVzFsYm5SQVFGRkMKUlQ5QlZ6Uk5aV1JwWVZWSlNXMWhaMlZHYVd4c1RXOWta
VUF4UUZoYUFEOW1jbUZqZEdsdmJreHZZV1JsWkVCTlpXUnBZVlZKVkdsdApaV3hwYm1WVGJHbGta
WEpBUUZGQ1JVNVlXZ0EvWjJ4dmQwTnZiRzl5UUUxbFpHbGhVMmhoY21Wa1ZVbEpiV0ZuWlVWc1pX
MWxiblJBClFFbEJSVkJCVlVOSFEyOXNiM0pBUUZoYUFEOW9aV2xuYUhSQVRXVmthV0ZUYUdGeVpX
UlZTVlJwYldWc2FXNWxVMnhwWkdWeVFFQlQKUVUxWVdnQS9hR2xuYUd4cFoyaDBWVzVzYjJGa1pX
UlNZVzVuWlVCTlpXUnBZVk5vWVhKbFpGVkpWR2x0Wld4cGJtVlRiR2xrWlhKQQpRRUZDUlZoUVFW
VkRSME52Ym5SbGVIUkFRRlZEUjFKbFkzUkFRRUJhQUQ5b2FYUlVaWE4wUUUxbFpHbGhVMmhoY21W
a1ZVbFVhVzFsCmJHbHVaVk5zYVdSbGNsUm9kVzFpUld4bGJXVnVkRUJBVlVKRlgwNVZRMGRTWldO
MFFFQlZRMGRRYjJsdWRFQkFRRm9BUDJocGRGUmwKYzNSQVRXVmthV0ZUYUdGeVpXUlZTVlp2YkhW
dFpWTnNhV1JsY2tKaFkydG5jbTkxYm1SRmJHVnRaVzUwUUVCVlFrVmZUbFZEUjFKbApZM1JBUUZW
RFIxQnZhVzUwUUVCQVdnQS9hR2wwVkdWemRFQk5aV1JwWVZOb1lYSmxaRlZKVm05c2RXMWxVMnhw
WkdWeVZHaDFiV0pGCmJHVnRaVzUwUUVCVlFrVmZUbFZEUjFKbFkzUkFRRlZEUjFCdmFXNTBRRUJB
V2dBL2FHbDBWR1Z6ZEVCTlpXUnBZVlZKUld4bGJXVnUKZEVCQVZVSkZYMDVWUTBkU1pXTjBRRUJW
UTBkUWIybHVkRUJBUUZvQVAyaHBkRlJsYzNSUVlYSjBRRTFsWkdsaFEyOXVkSEp2YkhOQQpRRlZD
UlY5T1NGVkRSMUpsWTNSQVFGVkRSMUJ2YVc1MFFFQkFXZ0EvYVcxaFoyVkFUV1ZrYVdGTVpXZGhZ
M2xWU1VsdFlXZGxSV3hsCmJXVnVkRUJBUVVKRlVFRlZRMGRKYldGblpVQkFXRm9BUDJsdFlXZGxR
RTFsWkdsaFUyaGhjbVZrVlVsSmJXRm5aVVZzWlcxbGJuUkEKUUVsQ1JWQkNXRmhhQUQ5cGMwVnVZ
V0pzWldSQVRXVmthV0ZWU1VWc1pXMWxiblJBUUZGQ1JWOU9XRm9BUDJselJtOWpkWE5sWkVCTgpa
V1JwWVZWSlJXeGxiV1Z1ZEVCQVVVSkZYMDVZV2dBL2FYTlFjbVZ6YzJWa1FFMWxaR2xoVlVsRmJH
VnRaVzUwUUVCUlFrVmZUbGhhCkFEOXVZWFIxY21Gc1UybDZaVUJOWldScFlVTnZiblJ5YjJ4elFF
QlZRa1UvUVZWRFIxTnBlbVZBUUVoQVdnQS9ibUYwZFhKaGJGTnAKZW1WQVRXVmthV0ZNWldkaFkz
bFZTVWx0WVdkbFJXeGxiV1Z1ZEVCQVZVSkZQMEZWUTBkVGFYcGxRRUJZV2dBL2JtRjBkWEpoYkZO
cAplbVZBVFdWa2FXRlRhR0Z5WldSVlNVbHRZV2RsUld4bGJXVnVkRUJBVlVKRlAwRlZRMGRUYVhw
bFFFQllXZ0EvYm1GMGRYSmhiRk5wCmVtVkFUV1ZrYVdGVGFHRnlaV1JWU1ZScGJXVnNhVzVsVTJ4
cFpHVnlWR2gxYldKRmJHVnRaVzUwUUVCVlFrVS9RVlZEUjFOcGVtVkEKUUZoYUFEOXVZWFIxY21G
c1UybDZaVUJOWldScFlWTm9ZWEpsWkZWSlZtOXNkVzFsVTJ4cFpHVnlWR2gxYldKRmJHVnRaVzUw
UUVCVgpRa1UvUVZWRFIxTnBlbVZBUUZoYUFEOXVZWFIxY21Gc1UybDZaVUJOWldScFlWVkpSV3hs
YldWdWRFQkFWVUpGUDBGVlEwZFRhWHBsClFFQllXZ0EvYjJabWMyVjBRRTFsWkdsaFUyaGhjbVZr
VlVsVWFXMWxiR2x1WlZOc2FXUmxja0JBVTBGTldGb0FQM0JoYVc1MFFFMWwKWkdsaFRHVm5ZV041
VlVsSmJXRm5aVVZzWlcxbGJuUkFRRlZCUlZoUVFWVkRSME52Ym5SbGVIUkFRRlZEUjFKbFkzUkFR
RUJhQUQ5dwpZV2x1ZEVCTlpXUnBZVXhsWjJGamVWVkpWR2x0Wld4cGJtVlRiR2xrWlhKQVFGVkJS
VmhRUVZWRFIwTnZiblJsZUhSQVFGVkRSMUpsClkzUkFRRUJhQUQ5d1lXbHVkRUJOWldScFlWTm9Z
WEpsWkZWSlFtRmphMmR5YjNWdVpFVnNaVzFsYm5SQVFGVkJSVmhRUVZWRFIwTnYKYm5SbGVIUkFR
RlZEUjFKbFkzUkFRRUJhQUQ5d1lXbHVkRUJOWldScFlWTm9ZWEpsWkZWSlNXMWhaMlZGYkdWdFpX
NTBRRUJWUVVWWQpVRUZWUTBkRGIyNTBaWGgwUUVCVlEwZFNaV04wUUVCQVdnQS9jR0ZwYm5SQVRX
VmthV0ZUYUdGeVpXUlZTVlJwYldWc2FXNWxVMnhwClpHVnlRRUJWUVVWWVVFRlZRMGREYjI1MFpY
aDBRRUJWUTBkU1pXTjBRRUJBV2dBL2NHRnBiblJBVFdWa2FXRlRhR0Z5WldSVlNWUnAKYldWc2FX
NWxVMnhwWkdWeVZHaDFiV0pGYkdWdFpXNTBRRUJWUVVWWVVFRlZRMGREYjI1MFpYaDBRRUJWUTBk
U1pXTjBRRUJBV2dBLwpjR0ZwYm5SQVRXVmthV0ZUYUdGeVpXUlZTVlp2YkhWdFpWTnNhV1JsY2tC
QVZVRkZXRkJCVlVOSFEyOXVkR1Y0ZEVCQVZVTkhVbVZqCmRFQkFRRm9BUDNCaGFXNTBRRTFsWkds
aFUyaGhjbVZrVlVsV2IyeDFiV1ZUYkdsa1pYSkNZV05yWjNKdmRXNWtSV3hsYldWdWRFQkEKVlVG
RldGQkJWVU5IUTI5dWRHVjRkRUJBVlVOSFVtVmpkRUJBUUZvQVAzQmhhVzUwUUUxbFpHbGhVMmho
Y21Wa1ZVbFdiMngxYldWVApiR2xrWlhKVWFIVnRZa1ZzWlcxbGJuUkFRRlZCUlZoUVFWVkRSME52
Ym5SbGVIUkFRRlZEUjFKbFkzUkFRRUJhQUQ5d1lYSjBTVVJBClRXVmthV0ZWU1VWc1pXMWxiblJB
UUZGQ1JVaFlXZ0EvY21Ga2FYVnpRRTFsWkdsaFUyaGhjbVZrVlVsVWFXMWxiR2x1WlZOc2FXUmwK
Y2xSb2RXMWlSV3hsYldWdWRFQkFVMEZOV0ZvQVAzSmhaR2wxYzBCTlpXUnBZVk5vWVhKbFpGVkpW
bTlzZFcxbFUyeHBaR1Z5UUVCVApRVTFZV2dBL2NtRmthWFZ6UUUxbFpHbGhVMmhoY21Wa1ZVbFdi
MngxYldWVGJHbGtaWEpDWVdOclozSnZkVzVrUld4bGJXVnVkRUJBClUwRk5XRm9BUDNKaFpHbDFj
MEJOWldScFlWTm9ZWEpsWkZWSlZtOXNkVzFsVTJ4cFpHVnlWR2gxYldKRmJHVnRaVzUwUUVCVFFV
MVkKV2dBL2NtVnpkRzl5WlVOdmJuUmxlSFJCWm5SbGNsQmhhVzUwYVc1blFFMWxaR2xoVEdWbllX
TjVWVWxKYldGblpVVnNaVzFsYm5SQQpRRVZDUlZoUVFWVkRSME52Ym5SbGVIUkFRRUJhQUQ5eVpY
TjBiM0psUTI5dWRHVjRkRUZtZEdWeVVHRnBiblJwYm1kQVRXVmthV0ZNClpXZGhZM2xWU1ZScGJX
VnNhVzVsVTJ4cFpHVnlRRUJGUWtWWVVFRlZRMGREYjI1MFpYaDBRRUJBV2dBL2NtVnpkRzl5WlVO
dmJuUmwKZUhSQlpuUmxjbEJoYVc1MGFXNW5RRTFsWkdsaFZVbEZiR1Z0Wlc1MFFFQk5Ra1ZZVUVG
VlEwZERiMjUwWlhoMFFFQkFXZ0EvYzJWMApSSFZ5WVhScGIyNUFUV1ZrYVdGVlNWUnBiV1ZzYVc1
bFUyeHBaR1Z5UUVCUlFVVllUa0JhQUQ5elpYUlFZWEowU1VSQVRXVmthV0ZWClNVVnNaVzFsYm5S
QVFGRkJSVmhJUUZvQVAzTmxkRk4wWVhSbFFFMWxaR2xoVlVsRmJHVnRaVzUwUUVCUlFVVllWelJY
UzAxbFpHbGgKUTI5dWRISnZiR3hsY2xSb1pXMWxVM1JoZEdWQVFFQmFBRDl6WlhSVWFXMWxURzlo
WkdWa1FFMWxaR2xoVlVsVWFXMWxiR2x1WlZOcwphV1JsY2tCQVVVRkZXRTVBV2dBL2MyVjBWWEJE
YjI1MFpYaDBSbTl5VUdGcGJuUnBibWRBVFdWa2FXRk1aV2RoWTNsVlNVbHRZV2RsClJXeGxiV1Z1
ZEVCQVJVSkZXRkJCVlVOSFEyOXVkR1Y0ZEVCQVZVTkhVbVZqZEVCQVFGb0FQM05sZEZWd1EyOXVk
R1Y0ZEVadmNsQmgKYVc1MGFXNW5RRTFsWkdsaFRHVm5ZV041VlVsVWFXMWxiR2x1WlZOc2FXUmxj
a0JBUlVKRldGQkJWVU5IUTI5dWRHVjRkRUJBVlVOSApVbVZqZEVCQVFGb0FQM05sZEZWd1EyOXVk
R1Y0ZEVadmNsQmhhVzUwYVc1blFFMWxaR2xoVlVsRmJHVnRaVzUwUUVCTlFrVllVRUZWClEwZERi
MjUwWlhoMFFFQlZRMGRTWldOMFFFQkFXZ0EvYzJ4cFpHVnlRRTFsWkdsaFRHVm5ZV041UTI5dWRI
SnZiSE5BUUZWQ1JWQkIKVmsxbFpHbGhWVWxVYVcxbGJHbHVaVk5zYVdSbGNrQkFXRm9BUDNOc2FX
Umxja0JOWldScFlWTm9ZWEpsWkZWSlEyOXVkSEp2YkhOQQpRRlZDUlZCQlZrMWxaR2xoVlVsVWFX
MWxiR2x1WlZOc2FXUmxja0JBV0ZvQVAzTjBjbTlyWlZSb2FXTnJibVZ6YzBCTlpXUnBZVk5vCllY
SmxaRlZKVm05c2RXMWxVMnhwWkdWeVFtRmphMmR5YjNWdVpFVnNaVzFsYm5SQVFGTkJUVmhhQUQ5
MGFIVnRZbEpoWkdsMWMwQk4KWldScFlWTm9ZWEpsWkZWSlZHbHRaV3hwYm1WVGJHbGtaWEpVYUhW
dFlrVnNaVzFsYm5SQVFEQkpRZ0EvZEdoMWJXSlNZV1JwZFhOQQpUV1ZrYVdGVGFHRnlaV1JWU1Za
dmJIVnRaVk5zYVdSbGNsUm9kVzFpUld4bGJXVnVkRUJBTUVsQ0FEOTBhVzFsVEc5aFpHVmtRRTFs
ClpHbGhWVWxVYVcxbGJHbHVaVk5zYVdSbGNrQkFVVUpGVGxoYUFEOTBhVzFsYkdsdVpWSmxZM1JH
YjNKQ2IzVnVaSE5BVFdWa2FXRlQKYUdGeVpXUlZTVlJwYldWc2FXNWxVMnhwWkdWeVFFQkJRa1Uv
UVZWRFIxSmxZM1JBUUZVeVFFQmFBRDkwY21GamEwaGxhV2RvZEVCTgpaV1JwWVZOb1lYSmxaRlZK
VkdsdFpXeHBibVZUYkdsa1pYSkFRREJKUWdBL2RISmhZMnRQWm1aelpYUkFUV1ZrYVdGVGFHRnla
V1JWClNWUnBiV1ZzYVc1bFUyeHBaR1Z5UUVBd1NVSUFQM1J5WVdOclVtRmthWFZ6UUUxbFpHbGhV
MmhoY21Wa1ZVbFdiMngxYldWVGJHbGsKWlhKQVFEQkpRZ0EvZDJ0RFFVTkdRMjl1ZEdWNGRFRmta
RlZ3WkdGMFpWSmxZM1JBUUZsQldGQkJWVmRMUTBGRFJrTnZiblJsZUhSQQpRRUZDVlVOSFVtVmpk
RUJBUUZvQVAzZHJRMEZEUmtOdmJuUmxlSFJDWldkcGJsVndaR0YwWlVCQVdVRmZUbEJCVlZkTFEw
RkRSa052CmJuUmxlSFJBUUZCQldFbE9RVUpWUTBkU1pXTjBRRUJSUWxVeVFFbEFXZ0EvZDJ0RFFV
TkdRMjl1ZEdWNGRFTnZjSGxWY0dSaGRHVlMKWldOMFJXNTFiV1Z5WVhSdmNrQkFXVUZRUVZWWFMw
TkJRMFpWY0dSaGRHVlNaV04wUlc1MWJXVnlZWFJ2Y2tCQVVFRlZWMHREUVVORwpRMjl1ZEdWNGRF
QkFRRm9BUDNkclEwRkRSa052Ym5SbGVIUkRjbVZoZEdWQVFGbEJVRUZWVjB0RFFVTkdRMjl1ZEdW
NGRFQkFXRm9BClAzZHJRMEZEUmtOdmJuUmxlSFJFWlhOMGNtOTVRRUJaUVZoUVFWVlhTME5CUTBa
RGIyNTBaWGgwUUVCQVdnQS9kMnREUVVOR1EyOXUKZEdWNGRFWnBibWx6YUZWd1pHRjBaVUJBV1VG
WVVFRlZWMHREUVVOR1EyOXVkR1Y0ZEVCQVFGb0FQM2RyUTBGRFJrTnZiblJsZUhSRwpiSFZ6YUVC
QVdVRllVRUZWVjB0RFFVTkdRMjl1ZEdWNGRFQkFRRm9BUDNkclEwRkRSa052Ym5SbGVIUkhaWFJN
WVhOMFEyOXRiV2wwClZHbHRaVUJBV1VGT1VFRlZWMHREUVVOR1EyOXVkR1Y0ZEVCQVFGb0FQM2Ry
UTBGRFJrTnZiblJsZUhSSmJtbDBhV0ZzYVhwbFJETkUKUkdWMmFXTmxRRUJaUVZoUVFWVlhTME5C
UTBaRGIyNTBaWGgwUUVCUVFWVkpSR2x5WldOME0wUkVaWFpwWTJVNVFFQkFXZ0EvZDJ0RApRVU5H
UTI5dWRHVjRkRkpsYkdWaGMyVkVNMFJTWlhOdmRYSmpaWE5BUUZsQldGQkJWVmRMUTBGRFJrTnZi
blJsZUhSQVFFQmFBRDkzCmEwTkJRMFpEYjI1MFpYaDBVbVZ1WkdWeVZYQmtZWFJsUUVCWlFWaFFR
VlZYUzBOQlEwWkRiMjUwWlhoMFFFQkFXZ0EvZDJ0RFFVTkcKUTI5dWRHVjRkRk5sZEV4aGVXVnlR
RUJaUVZoUVFWVlhTME5CUTBaRGIyNTBaWGgwUUVCUVFWVmZRMEZEUmt4aGVXVnlRRUJBV2dBLwpk
MnREUVVOR1ZYQmtZWFJsVW1WamRFVnVkVzFsY21GMGIzSk9aWGgwVW1WamRFQkFXVUZRUWxWRFIx
SmxZM1JBUUZCQlZWZExRMEZEClJsVndaR0YwWlZKbFkzUkZiblZ0WlhKaGRHOXlRRUJBV2dBL2Qy
dERRVU5HVlhCa1lYUmxVbVZqZEVWdWRXMWxjbUYwYjNKU1pXeGwKWVhObFFFQlpRVmhRUVZWWFMw
TkJRMFpWY0dSaGRHVlNaV04wUlc1MWJXVnlZWFJ2Y2tCQVFGb0FQM2RyUTBGSmJXRm5aVkYxWlhW
bApRMjlzYkdWamRFQkFXVUZKVUVGVlgwTkJTVzFoWjJWUmRXVjFaVUJBUUZvQVAzZHJRMEZKYldG
blpWRjFaWFZsUTNKbFlYUmxRRUJaClFWQkJWVjlEUVVsdFlXZGxVWFZsZFdWQVFFbEpTVUJhQUQ5
M2EwTkJTVzFoWjJWUmRXVjFaVWRsZEVOaGNHRmphWFI1UUVCWlFVbFEKUVZWZlEwRkpiV0ZuWlZG
MVpYVmxRRUJBV2dBL2QydERRVWx0WVdkbFVYVmxkV1ZIWlhSR2JHRm5jMEJBV1VGSlVFRlZYME5C
U1cxaApaMlZSZFdWMVpVQkFRRm9BUDNkclEwRkpiV0ZuWlZGMVpYVmxSMlYwVkhsd1pVbEVRRUJa
UVV0WVdnQS9kMnREUVVsdFlXZGxVWFZsCmRXVkpibk5sY25SSmJXRm5aVUJBV1VGZlRsQkJWVjlE
UVVsdFlXZGxVWFZsZFdWQVFFNUpYMHRKVURaQldFa3hVRUZZUUZveVFGb0EKUDNkclEwRkpiV0Zu
WlZGMVpYVmxTVzUyWVd4cFpHRjBaVUJBV1VGWVVFRlZYME5CU1cxaFoyVlJkV1YxWlVCQVFGb0FQ
M2RyUTBGSgpiV0ZuWlZGMVpYVmxVbVZuYVhOMFpYSlFhWGhsYkVKMVptWmxja0JBV1VGZlMxQkJW
VjlEUVVsdFlXZGxVWFZsZFdWQVFGQkJXRWxKClNVbEpVRUpWWDE5RFJrUnBZM1JwYjI1aGNubEFR
RWxBV2dBL2QydERRVWx0WVdkbFVYVmxkV1ZUWlhSR2JHRm5jMEJBV1VGWVVFRlYKWDBOQlNXMWha
MlZSZFdWMVpVQkFTVWxBV2dBL2QydERSazVsZEhkdmNtdEZjbkp2Y2tkbGRFeHZZMkZzYVhwbFpF
UmxjMk55YVhCMAphVzl1UUVCWlFWQkNWVjlmUTBaVGRISnBibWRBUUVwQVdnQS9kMnREUmxWU1RG
SmxjWFZsYzNSRGIzQjVTRlJVVUZKbGNYVmxjM1JDCmIyUjVVR0Z5ZEhOQVFGbEJVRUpWWDE5RFJr
RnljbUY1UUVCUVFsVmZRMFpWVWt4U1pYRjFaWE4wUUVCQVdnQS9kMnREUmxWU1RGSmwKY1hWbGMz
UlRaWFJJVkZSUVVtVnhkV1Z6ZEVKdlpIbFFZWEowYzBCQVdVRllVRUZWWDBOR1ZWSk1VbVZ4ZFdW
emRFQkFVRUpWWDE5RApSa0Z5Y21GNVFFQkFXZ0EvZDJ0RGIzQjVRMDlPVGtWRFZGQnliM2g1VW1W
emNHOXVjMlZBUUZsQlVFRlZYMTlEUmtoVVZGQk5aWE56CllXZGxRRUJRUVZWZlgwTkdVbVZoWkZO
MGNtVmhiVUJBVUVKVlgxOURSbFZTVEVCQVFGb0FQM2RyUTI5d2VVTnlaV1JsYm5ScFlXeEcKY205
dFEwWlFaWEp6YVhOMFpXNTBVM1J2Y21GblpVQkFXVUZRUVZWZlEwWlZVa3hEY21Wa1pXNTBhV0Zz
UUVCUVFWVmZRMFpWVWt4UQpjbTkwWldOMGFXOXVVM0JoWTJWQVFFQmFBRDkzYTBOdmNIbEdiM1Z1
WkdGMGFXOXVRMkZqYUdWRWFYSmxZM1J2Y25sQVFGbEJVRUpWClgxOURSbE4wY21sdVowQkFXRm9B
UDNkclEzSmxZWFJsVUhKcGRtRjBaVWhVVkZCRGIyOXJhV1ZUZEc5eVlXZGxRRUJaUVZCQlZVOXcK
WVhGMVpVTkdTRlJVVUVOdmIydHBaVk4wYjNKaFoyVkFRRmhhQUQ5M2EwUnlZWGRHYjJOMWMxSnBi
bWRBUUZsQldGQkJWVU5IUTI5dQpkR1Y0ZEVCQVVFRlZRMGREYjJ4dmNrQkFUVUJhQUQ5M2EwZGxk
RVJsWm1GMWJIUklWRlJRUTI5dmEybGxVM1J2Y21GblpVQkFXVUZRClFWVlBjR0Z4ZFdWRFJraFVW
RkJEYjI5cmFXVlRkRzl5WVdkbFFFQllXZ0EvZDJ0SFpYUkdiMjUwVTIxdmIzUm9hVzVuUTI5dWRI
SmgKYzNSQVFGbEJUVmhhQUQ5M2EwZGxkRVp2Ym5SVGJXOXZkR2hwYm1kTVpYWmxiRUJBV1VGSVdG
b0FQM2RyUjJWMFIyeDVjR2hCWkhaaApibU5sYzBCQVdVRllVRUZWUTBkR2IyNTBRRUJCUWxWRFIw
Rm1abWx1WlZSeVlXNXpabTl5YlVCQVgwNHlSMEZCVlVOSFUybDZaVUJBClFGb0FQM2RyUjJWMFIy
eDVjR2h6UUVCWlFWaFFRVlZEUjBadmJuUkFRRkZDWDFkUlFVZEpRRm9BUDNkclIyVjBVMU5NUTJW
eWRHbG0KYVdOaGRHVkRhR0ZwYmtOdmJuUmxlSFJBUUZsQlVFRllVRUpWWDE5RFJrUnBZM1JwYjI1
aGNubEFRRUJhQUQ5M2EwZGxkRk5UVEVObApjblJwWm1sallYUmxTVzVtYjBCQVdVRlFRbFZmWDBO
R1JHbGpkR2x2Ym1GeWVVQkFVRUZWWDBOR1ZWSk1VbVZ6Y0c5dWMyVkFRRUJhCkFEOTNhMGRsZEZO
VFRGQmxaWEpEWlhKMGFXWnBZMkYwWlVSaGRHRkFRRmxCVUVGWVVFSlZYMTlEUmtScFkzUnBiMjVo
Y25sQVFFQmEKQUQ5M2EwZGxkRlZ6WlhKVWIwSmhjMlZEVkUxQVFGbEJQMEZWUTBkQlptWnBibVZV
Y21GdWMyWnZjbTFBUUZCQlZVTkhRMjl1ZEdWNApkRUJBUUZvQVAzZHJTVzVwZEdsaGJHbDZaVTFo
ZUdsdGRXMUlWRlJRUTI5dWJtVmpkR2x2YmtOdmRXNTBVR1Z5U0c5emRFQkFXVUZKClNVQmFBRDkz
YTFKbGMzUnZjbVZHYjI1MFUyMXZiM1JvYVc1blUzUjViR1ZBUUZsQldGQkJWVU5IUTI5dWRHVjRk
RUJBU1VCYUFEOTMKYTFObGRFTkdWVkpNVW1WeGRXVnpkRk5vYjNWc1pFTnZiblJsYm5SVGJtbG1a
a0JBV1VGWVVFRlZYME5HVlZKTVVtVnhkV1Z6ZEVCQQpYMDVBV2dBL2QydFRaWFJEUjBOdmJuUmxl
SFJHYjI1MFVtVnVaR1Z5YVc1blUzUjViR1ZBUUZsQldGQkJWVU5IUTI5dWRHVjRkRUJBClgwNHhN
VUJhQUQ5M2ExTmxkRU5QVGs1RlExUlFjbTk0ZVVGMWRHaHZjbWw2WVhScGIyNUdiM0pUZEhKbFlX
MUFRRmxCV0ZCQlZWOWYKUTBaU1pXRmtVM1J5WldGdFFFQlFRbFZmWDBOR1UzUnlhVzVuUUVCQVdn
QS9kMnRUWlhSRFQwNU9SVU5VVUhKdmVIbEdiM0pUZEhKbApZVzFBUUZsQldGQkJWVjlmUTBaU1pX
RmtVM1J5WldGdFFFQlFRbFZmWDBOR1UzUnlhVzVuUUVCUVFsVmZYME5HVG5WdFltVnlRRUJBCldn
QS9kMnRUWlhSRGJHbGxiblJEWlhKMGFXWnBZMkYwWlVsdVUxTk1VSEp2Y0dWeWRHbGxjMEJBV1VG
WVVFRlZYMTlEUmtScFkzUnAKYjI1aGNubEFRRkJDVlY5ZlEwWkVZWFJoUUVCQVdnQS9kMnRUWlhS
R2IyNTBVMjF2YjNSb2FXNW5RMjl1ZEhKaGMzUkFRRmxCV0UxQQpXZ0EvZDJ0VFpYUkdiMjUwVTIx
dmIzUm9hVzVuVEdWMlpXeEFRRmxCV0VoQVdnQS9kMnRUWlhSR2IyNTBVMjF2YjNSb2FXNW5VM1I1
CmJHVkFRRmxCU1ZCQlZVTkhRMjl1ZEdWNGRFQkFYMDVBV2dBL2QydFRaWFJRWVhSMFpYSnVRbUZ6
WlVOVVRVQkFXVUZZVUVGVlEwZEQKYjI1MFpYaDBRRUJWUTBkQlptWnBibVZVY21GdWMyWnZjbTFB
UUVCYUFEOTNhMU5sZEZCaGRIUmxjbTVRYUdGelpVbHVWWE5sY2xOdwpZV05sUUVCWlFWaFFRVlZE
UjBOdmJuUmxlSFJBUUZWRFIxQnZhVzUwUUVCQVdnQS9kMnRUWlhSVmNFWnZiblJEWVdOb1pVQkFX
VUZZClNVQmFBRDkzYTFONWMzUmxiVVp2Ym5SVGJXOXZkR2hwYm1kRGFHRnVaMlZrUUVCWlFWaFlX
Z0JmVjB0RWNtRjNUV1ZrYVdGVGJHbGsKWlhKVWNtRmphd0JmVjB0RWNtRjNUV1ZrYVdGVlNWQmhj
blFBWDFkTFNHbDBWR1Z6ZEUxbFpHbGhWVWxRWVhKMEFGOVhTMDFsWVhOMQpjbVZOWldScFlWVkpV
R0Z5ZEFCZlgzSmxZV3hBTURBd01EQXdNREFBWDE5eVpXRnNRREF3TURBd01EQXdNREF3TURBd01E
QUFYMTl5ClpXRnNRRE5rWVROa056QmhBRjlmY21WaGJFQXpaR1l3WmpCbU1RQmZYM0psWVd4QU0y
VXdaalZqTWprQVgxOXlaV0ZzUURObE5HTmoKWTJOa0FGOWZjbVZoYkVBelpUZ3dNREF3TUFCZlgz
SmxZV3hBTTJWaU16TXpNek1BWDE5eVpXRnNRRE5tTURBd01EQXdBRjlmY21WaApiRUF6WmpKbE1U
UTNZZ0JmWDNKbFlXeEFNMlkwTURBd01EQUFYMTl5WldGc1FETm1OR05qWTJOa0FGOWZjbVZoYkVB
elpqVXdaREJrCk1RQmZYM0psWVd4QU0yWTFPR1E0WkRrQVgxOXlaV0ZzUURObU5qQXdNREF3QUY5
ZmNtVmhiRUF6WmpaaU9EVXhaZ0JmWDNKbFlXeEEKTTJZM016TXpNek1BWDE5eVpXRnNRRE5tT0RB
d01EQXdBRjlmY21WaGJFQXpabUk1T1RrNU9XRXdNREF3TURBd0FGOWZjbVZoYkVBegpabU01TUda
a1lnQmZYM0psWVd4QU0yWmxNREF3TURBd01EQXdNREF3TUFCZlgzSmxZV3hBTTJabU1EQXdNREF3
TURBd01EQXdNQUJmClgzSmxZV3hBTkRBd01EQXdNREFBWDE5eVpXRnNRRFF3TURBd01EQXdNREF3
TURBd01EQUFYMTl5WldGc1FEUXdNRGt5TVdaaU5UUTAKTkRKa01UZ0FYMTl5WldGc1FEUXdNVEF3
TURBd01EQXdNREF3TURBQVgxOXlaV0ZzUURRd01UTXpNek16QUY5ZmNtVmhiRUEwTURJdwpNREF3
TURBd01EQXdNREF3QUY5ZmNtVmhiRUEwTURNd01EQXdNREF3TURBd01EQXdBRjlmY21WaGJFQTBN
RFE1TUdaa1lnQmZYM0psCllXeEFOREEyTmpnd01EQXdNREF3TURBd01BQmZYM0psWVd4QU5EQTJa
bVV3TURBd01EQXdNREF3TUFCZlgzSmxZV3hBTkRBNE1EQXcKTURBQVgxOXlaV0ZzUURRd09HWTBN
REF3TURBd01EQXdNREFBWDE5eVpXRnNRRFF3T1RaalltVTBBRjlmY21WaGJFQTBNR0V3TURBdwpN
QUJmWDNKbFlXeEFOREV4TURBd01EQUFYMTl5WldGc1FEUXhNakF3TURBd0FGOWZjbVZoYkVBME1U
TXdNREF3TUFCZlgzSmxZV3hBCk5HWTRNREF3TURBQVgxOXlaV0ZzUUdKbU9EQXdNREF3QUY5ZmNt
VmhiRUJpWm1NNU1HWmtZZ0JmWTJWcGJHWUFYMlpoWW5ObUFGOW0KYkc5dmNtWUFYM0J2ZDJZQUx5
OGdJQ0FnSUNBZ0lDQWdJQ0FnSURFeU9USXdNRE01TnpjZ0lDQWdJQ0FnSUNBZ0lDQWdJREFnSUNB
ZwpJQ0FnTXpNd0lDQWdJQ0FnSUdBS0xpNWNMaTVjTGk1Y0xpNWNMaTVjTGk1Y1YyVmlTMmwwUW5W
cGJHUmNiMkpxWEZkbFlrdHBkRk41CmMzUmxiVWx1ZEdWeVptRmpaVnhTWld4bFlYTmxYRmRsWWt0
cGRGTjVjM1JsYlVsdWRHVnlabUZqWlM1dlltb0FMaTVjTGk1Y0xpNWMKTGk1Y0xpNWNMaTVjVjJW
aVMybDBRblZwYkdSY2IySnFYRmRsWWt0cGRGTjVjM1JsYlVsdWRHVnlabUZqWlZ4U1pXeGxZWE5s
WEZObwpZWEpsWkUxbFpHbGhWVWt1YjJKcUFDNHVYQzR1WEM0dVhDNHVYQzR1WEM0dVhGZGxZa3Rw
ZEVKMWFXeGtYRzlpYWx4WFpXSkxhWFJUCmVYTjBaVzFKYm5SbGNtWmhZMlZjVW1Wc1pXRnpaVnhO
WldScFlWVkpMbTlpYWdBdUxsd3VMbHd1TGx3dUxsd3VMbHd1TGx4WFpXSkwKYVhSQ2RXbHNaRnh2
WW1wY1YyVmlTMmwwVTNsemRHVnRTVzUwWlhKbVlXTmxYRkpsYkdWaGMyVmNUR1ZuWVdONVRXVmth
V0ZWU1M1dgpZbW9BTHpBZ0lDQWdJQ0FnSUNBZ0lDQWdJREV5T1RJd01ETTVOemNnSUNBZ0lDQWdJ
Q0FnSUNBZ0lERXdNRFkyTmlBZ01UQXpOakEyCklDQWdJR0FLVEFHdkFJbHFBazFYU3dFQVBnSUFB
QUFBQUFBdVpISmxZM1IyWlFBQUFBQUFBQUFBOFFBQUFHd2JBQUFBQUFBQUFBQUEKQUFBQUFBQUFD
aEFBTG1SbFluVm5KRk1BQUFBQUFBQUFBQUNZQUFCZEhBQUFYYlFBQUFBQUFBQTBBQUFBUUFBUVFp
NXlaR0YwWVFBQQpBQUFBQUFBQUFBQUVBQUFBWmJZQUFBQUFBQUFBQUFBQUFBQUFBRUFBTUVBdVpH
RjBZUUFBQUFBQUFBQUFBQUFBREFBQUFHbTJBQUFBCkFBQUFBQUFBQUFBQUFBQkFBRERBTG5SbGVI
UUFBQUFBQUFBQUFBQUFBQThBQUFCMXRnQUFBQUFBQUFBQUFBQUFBQUFBSUJCUVlDNWsKWldKMVp5
UlRBQUFBQUFBQUFBREFBQUFBaExZQUFFUzNBQUFBQUFBQUJRQUFBRUFRRUVJdWRHVjRkQUFBQUFB
QUFBQUFBQUFBSEFBQQpBSGEzQUFDU3R3QUFBQUFBQUFFQUFBQWdFRkJnTG1SbFluVm5KRk1BQUFB
QUFBQUFBTkFBQUFDY3R3QUFiTGdBQUFBQUFBQUhBQUFBClFCQVFRaTUwWlhoMEFBQUFBQUFBQUFB
QUFBQVdBQUFBc3JnQUFNaTRBQUFBQUFBQUFRQUFBQ0FRVUdBdVpHVmlkV2NrVXdBQUFBQUEKQUFB
QXpBQUFBTks0QUFDZXVRQUFBQUFBQUFVQUFBQkFFQkJDTG5SbGVIUUFBQUFBQUFBQUFBQUFBQThB
QUFEUXVRQUFBQUFBQUFBQQpBQUFBQUFBQUlCQlFZQzVrWldKMVp5UlRBQUFBQUFBQUFBREFBQUFB
MzdrQUFKKzZBQUFBQUFBQUJRQUFBRUFRRUVJdWRHVjRkQUFBCkFBQUFBQUFBQUFBQUhRQUFBTkc2
QUFBQUFBQUFBQUFBQUFBQUFBQWdFRkJnTG1SbFluVm5KRk1BQUFBQUFBQUFBUHdBQUFEdXVnQUEK
NnJzQUFBQUFBQUFGQUFBQVFCQVFRaTUwWlhoMEFBQUFBQUFBQUFBQUFBQS9BQUFBSEx3QUFBQUFB
QUFBQUFBQUFBQUFBQ0FRVUdBdQpaR1ZpZFdja1V3QUFBQUFBQUFBQUdBRUFBRnU4QUFCenZRQUFB
QUFBQUFVQUFBQkFFQkJDTG5SbGVIUUFBQUFBQUFBQUFBQUFBRFVBCkFBQ2x2UUFBQUFBQUFBQUFB
QUFBQUFBQUlCQlFZQzVrWldKMVp5UlRBQUFBQUFBQUFBQVVBUUFBMnIwQUFPNitBQUFBQUFBQUJR
QUEKQUVBUUVFSXVkR1Y0ZEFBQUFBQUFBQUFBQUFBQVFRQUFBQ0MvQUFCaHZ3QUFBQUFBQUFJQUFB
QWdFRkJnTG1SbFluVm5KRk1BQUFBQQpBQUFBQUJBQkFBQjF2d0FBaGNBQUFBQUFBQUFGQUFBQVFC
QVFRaTUwWlhoMEFBQUFBQUFBQUFBQUFBQUdBQUFBdDhBQUFMM0FBQUFBCkFBQUFBUUFBQUNBUVVH
QXVaR1ZpZFdja1V3QUFBQUFBQUFBQTFBQUFBTWZBQUFDYndRQUFBQUFBQUFVQUFBQkFFQkJDTG5S
bGVIUUEKQUFBQUFBQUFBQUFBQUFzQUFBRE53UUFBMk1FQUFBQUFBQUFCQUFBQUlCQlFZQzVrWldK
MVp5UlRBQUFBQUFBQUFBRHNBQUFBNHNFQQpBTTdDQUFBQUFBQUFCUUFBQUVBUUVFSXVkR1Y0ZEFB
QUFBQUFBQUFBQUFBQUJ3QUFBQUREQUFBSHd3QUFBQUFBQUFFQUFBQWdFRkJnCkxtUmxZblZuSkZN
QUFBQUFBQUFBQU5RQUFBQVJ3d0FBNWNNQUFBQUFBQUFGQUFBQVFCQVFRaTUwWlhoMEFBQUFBQUFB
QUFBQUFBQloKQXdBQUY4UUFBSERIQUFBQUFBQUFKQUFBQUNBUVVHQXVaR1ZpZFdja1V3QUFBQUFB
QUFBQVNBVUFBTmpJQUFBZ3pnQUFBQUFBQURNQQpBQUJBRUJCQ0xuSmtZWFJoQUFBQUFBQUFBQUFB
QUFRQUFBQWUwQUFBQUFBQUFBQUFBQUFBQUFBQVFCQXdRQzV5WkdGMFlRQUFBQUFBCkFBQUFBQUFJ
QUFBQUl0QUFBQUFBQUFBQUFBQUFBQUFBQUVBUVFFQXVaR0YwWVFBQUFBQUFBQUFBQUFBQUJBQUFB
Q3JRQUFBQUFBQUEKQUFBQUFBQUFBQUJBRUREQUxuSmtZWFJoQUFBQUFBQUFBQUFBQUFnQUFBQXUw
QUFBQUFBQUFBQUFBQUFBQUFBQVFCQkFRQzV5WkdGMApZUUFBQUFBQUFBQUFBQUFJQUFBQU50QUFB
QUFBQUFBQUFBQUFBQUFBQUVBUVFFQXVjbVJoZEdFQUFBQUFBQUFBQUFBQUJBQUFBRDdRCkFBQUFB
QUFBQUFBQUFBQUFBQUJBRURCQUxuSmtZWFJoQUFBQUFBQUFBQUFBQUFnQUFBQkMwQUFBQUFBQUFB
QUFBQUFBQUFBQVFCQkEKUUM1eVpHRjBZUUFBQUFBQUFBQUFBQUFFQUFBQVN0QUFBQUFBQUFBQUFB
QUFBQUFBQUVBUU1FQXVjbVJoZEdFQUFBQUFBQUFBQUFBQQpFQUFBQUU3UUFBQUFBQUFBQUFBQUFB
QUFBQUJBRURCQUxtUmhkR0VBQUFBQUFBQUFBQUFBQUFRQUFBQmUwQUFBQUFBQUFBQUFBQUFBCkFB
QUFRQkF3d0M1MFpYaDBBQUFBQUFBQUFBQUFBQUE0QUFBQVl0QUFBSnJRQUFBQUFBQUFCZ0FBQUNB
UVVHQXVaR1ZpZFdja1V3QUEKQUFBQUFBQUFNQUVBQU5iUUFBQUcwZ0FBQUFBQUFBa0FBQUJBRUJC
Q0xtSnpjd0FBQUFBQUFBQUFBQUFBQUJ3QUFBQUFBQUFBQUFBQQpBQUFBQUFBQUFBQUFnQUF3d0M1
MFpYaDBBQUFBQUFBQUFBQUFBQUFsQUFBQVlOSUFBSVhTQUFBQUFBQUFBd0FBQUNBUVVHQXVaR1Zp
CmRXY2tVd0FBQUFBQUFBQUFiQUVBQUtQU0FBQVAxQUFBQUFBQUFBc0FBQUJBRUJCQ0xuUmxlSFFB
QUFBQUFBQUFBQUFBQUYwQUFBQjkKMUFBQTJ0UUFBQUFBQUFBR0FBQUFJQkJRWUM1a1pXSjFaeVJU
QUFBQUFBQUFBQURvQVFBQUZ0VUFBUDdXQUFBQUFBQUFEd0FBQUVBUQpFRUl1ZEdWNGRBQUFBQUFB
QUFBQUFBQUFOQUFBQUpUWEFBREkxd0FBQUFBQUFBTUFBQUFnRUZCZ0xtUmxZblZuSkZNQUFBQUFB
QUFBCkFIZ0JBQURtMXdBQVh0a0FBQUFBQUFBTEFBQUFRQkFRUWk1MFpYaDBBQUFBQUFBQUFBQUFB
QUJTQVFBQXpOa0FBQjdiQUFBQUFBQUEKRHdBQUFDQVFVR0F1WkdWaWRXY2tVd0FBQUFBQUFBQUE5
QUlBQUxUYkFBQ28zZ0FBQUFBQUFCTUFBQUJBRUJCQ0xuSmtZWFJoQUFBQQpBQUFBQUFBQUFBUUFB
QUJtM3dBQUFBQUFBQUFBQUFBQUFBQUFRQkF3UUM1eVpHRjBZUUFBQUFBQUFBQUFBQUFFQUFBQWF0
OEFBQUFBCkFBQUFBQUFBQUFBQUFFQVFNRUF1Y21SaGRHRUFBQUFBQUFBQUFBQUFCQUFBQUc3ZkFB
QUFBQUFBQUFBQUFBQUFBQUJBRURCQUxuUmwKZUhRQUFBQUFBQUFBQUFBQUFCa0FBQUJ5M3dBQUFB
QUFBQUFBQUFBQUFBQUFJQkJRWUM1a1pXSjFaeVJUQUFBQUFBQUFBQUFVQVFBQQppOThBQUovZ0FB
QUFBQUFBQlFBQUFFQVFFRUl1ZEdWNGRBQUFBQUFBQUFBQUFBQUFhZ0FBQU5IZ0FBQTc0UUFBQUFB
QUFBUUFBQUFnCkVGQmdMbVJsWW5WbkpGTUFBQUFBQUFBQUFCUUJBQUJqNFFBQWQrSUFBQUFBQUFB
SEFBQUFRQkFRUWk1eVpHRjBZUUFBQUFBQUFBQUEKQUFBSUFBQUF2ZUlBQUFBQUFBQUFBQUFBQUFB
QUFFQVFRRUF1ZEdWNGRBQUFBQUFBQUFBQUFBQUFxZ0VBQU1YaUFBQnY1QUFBQUFBQQpBQXdBQUFB
Z0VGQmdMbVJsWW5WbkpGTUFBQUFBQUFBQUFKZ0RBQURuNUFBQWYrZ0FBQUFBQUFBZkFBQUFRQkFR
UWk1eVpHRjBZUUFBCkFBQUFBQUFBQUFBSUFBQUF0ZWtBQUFBQUFBQUFBQUFBQUFBQUFFQVFRRUF1
ZEdWNGRBQUFBQUFBQUFBQUFBQUFCZ0FBQUwzcEFBREQKNlFBQUFBQUFBQUVBQUFBZ0VGQmdMbVJs
WW5WbkpGTUFBQUFBQUFBQUFCd0JBQURONlFBQTZlb0FBQUFBQUFBSEFBQUFRQkFRUWk1MApaWGgw
QUFBQUFBQUFBQUFBQUFBckFBQUFMK3NBQUZyckFBQUFBQUFBQkFBQUFDQVFVR0F1WkdWaWRXY2tV
d0FBQUFBQUFBQUFVQUVBCkFJTHJBQURTN0FBQUFBQUFBQTBBQUFCQUVCQkNMblJsZUhRQUFBQUFB
QUFBQUFBQUFEMEFBQUJVN1FBQWtlMEFBQUFBQUFBQkFBQUEKSUJCUVlDNWtaV0oxWnlSVEFBQUFB
QUFBQUFBSUFRQUFtKzBBQUtQdUFBQUFBQUFBQndBQUFFQVFFRUl1ZEdWNGRBQUFBQUFBQUFBQQpB
QUFBWmdFQUFPbnVBQUJQOEFBQUFBQUFBQVVBQUFBZ0VGQmdMbVJsWW5WbkpGTUFBQUFBQUFBQUFL
UUJBQUNCOEFBQUpmSUFBQUFBCkFBQVBBQUFBUUJBUVFpNTBaWGgwQUFBQUFBQUFBQUFBQUFBQ0FR
QUF1L0lBQUwzekFBQUFBQUFBQkFBQUFDQVFVR0F1WkdWaWRXY2sKVXdBQUFBQUFBQUFBWUFFQUFP
WHpBQUJGOVFBQUFBQUFBQTBBQUFCQUVCQkNMblJsZUhRQUFBQUFBQUFBQUFBQUFFY0FBQURIOVFB
QQpEdllBQUFBQUFBQURBQUFBSUJCUVlDNWtaV0oxWnlSVEFBQUFBQUFBQUFCa0FRQUFMUFlBQUpE
M0FBQUFBQUFBQ3dBQUFFQVFFRUl1CmRHVjRkQUFBQUFBQUFBQUFBQUFBQmdBQUFQNzNBQUFFK0FB
QUFBQUFBQUVBQUFBZ0VGQmdMbVJsWW5WbkpGTUFBQUFBQUFBQUFQQUEKQUFBTytBQUEvdmdBQUFB
QUFBQUhBQUFBUUJBUVFpNTBaWGgwQUFBQUFBQUFBQUFBQUFBcUFBQUFSUGtBQUc3NUFBQUFBQUFB
QXdBQQpBQ0FRVUdBdVpHVmlkV2NrVXdBQUFBQUFBQUFBSUFFQUFJejVBQUNzK2dBQUFBQUFBQWtB
QUFCQUVCQkNMblJsZUhRQUFBQUFBQUFBCkFBQUFBQ29BQUFBRyt3QUFNUHNBQUFBQUFBQURBQUFB
SUJCUVlDNWtaV0oxWnlSVEFBQUFBQUFBQUFBa0FRQUFUdnNBQUhMOEFBQUEKQUFBQUNRQUFBRUFR
RUVJdWRHVjRkQUFBQUFBQUFBQUFBQUFBWkFBQUFNejhBQUF3L1FBQUFBQUFBQWdBQUFBZ0VGQmdM
bVJsWW5WbgpKRk1BQUFBQUFBQUFBTlFCQUFDQS9RQUFWUDhBQUFBQUFBQU5BQUFBUUJBUVFpNTBa
WGgwQUFBQUFBQUFBQUFBQUFBU0FBQUExdjhBCkFPai9BQUFBQUFBQUFnQUFBQ0FRVUdBdVpHVmlk
V2NrVXdBQUFBQUFBQUFBNkFBQUFQei9BQURrQUFFQUFBQUFBQWNBQUFCQUVCQkMKTG5SbGVIUUFB
QUFBQUFBQUFBQUFBQjhBQUFBcUFRRUFTUUVCQUFBQUFBQURBQUFBSUJCUVlDNWtaV0oxWnlSVEFB
QUFBQUFBQUFEOApBQUFBWndFQkFHTUNBUUFBQUFBQUNRQUFBRUFRRUVJdWRHVjRkQUFBQUFBQUFB
QUFBQUFBSWdBQUFMMENBUURmQWdFQUFBQUFBQU1BCkFBQWdFRkJnTG1SbFluVm5KRk1BQUFBQUFB
QUFBR0FCQUFEOUFnRUFYUVFCQUFBQUFBQUxBQUFBUUJBUVFpNTBaWGgwQUFBQUFBQUEKQUFBQUFB
QTNBQUFBeXdRQkFBSUZBUUFBQUFBQUJRQUFBQ0FRVUdBdVpHVmlkV2NrVXdBQUFBQUFBQUFBSkFF
QUFEUUZBUUJZQmdFQQpBQUFBQUFrQUFBQkFFQkJDTG5Ka1lYUmhBQUFBQUFBQUFBQUFBQ1VBQUFD
eUJnRUFBQUFBQUFBQUFBQUFBQUFBUUJBd1FDNTBaWGgwCkFBQUFBQUFBQUFBQUFBQUdBQUFBMXdZ
QkFOMEdBUUFBQUFBQUFRQUFBQ0FRVUdBdVpHVmlkV2NrVXdBQUFBQUFBQUFBL0FBQUFPY0cKQVFE
akJ3RUFBQUFBQUFjQUFBQkFFQkJDTG5SbGVIUUFBQUFBQUFBQUFBQUFBQVlBQUFBcENBRUFMd2dC
QUFBQUFBQUJBQUFBSUJCUQpZQzVrWldKMVp5UlRBQUFBQUFBQUFBQVVBUUFBT1FnQkFFMEpBUUFB
QUFBQUJ3QUFBRUFRRUVJdWRHVjRkQUFBQUFBQUFBQUFBQUFBCldBQUFBSk1KQVFEckNRRUFBQUFB
QUFVQUFBQWdFRkJnTG1SbFluVm5KRk1BQUFBQUFBQUFBR0FDQUFBZENnRUFmUXdCQUFBQUFBQVAK
QUFBQVFCQVFRaTV5WkdGMFlRQUFBQUFBQUFBQUFBQW1BQUFBRXcwQkFBQUFBQUFBQUFBQUFBQUFB
RUFRTUVBdWNtUmhkR0VBQUFBQQpBQUFBQUFBQUpnQUFBRGtOQVFBQUFBQUFBQUFBQUFBQUFBQkFF
REJBTG5Ka1lYUmhBQUFBQUFBQUFBQUFBQndBQUFCZkRRRUFBQUFBCkFBQUFBQUFBQUFBQVFCQXdR
QzUwWlhoMEFBQUFBQUFBQUFBQUFBQXBBQUFBZXcwQkFLUU5BUUFBQUFBQUF3QUFBQ0FRVUdBdVpH
VmkKZFdja1V3QUFBQUFBQUFBQWlBRUFBTUlOQVFCS0R3RUFBQUFBQUFzQUFBQkFFQkJDTG5SbGVI
UUFBQUFBQUFBQUFBQUFBQVlBQUFDNApEd0VBdmc4QkFBQUFBQUFCQUFBQUlCQlFZQzVrWldKMVp5
UlRBQUFBQUFBQUFBQUFBUUFBeUE4QkFNZ1FBUUFBQUFBQUJ3QUFBRUFRCkVFSXVkR1Y0ZEFBQUFB
QUFBQUFBQUFBQWNnQUFBQTRSQVFDQUVRRUFBQUFBQUFnQUFBQWdFRkJnTG1SbFluVm5KRk1BQUFB
QUFBQUEKQUxRQkFBRFFFUUVBaEJNQkFBQUFBQUFMQUFBQVFCQVFRaTUwWlhoMEFBQUFBQUFBQUFB
QUFBQ2hBQUFBOGhNQkFKTVVBUUFBQUFBQQpEUUFBQUNBUVVHQXVaR1ZpZFdja1V3QUFBQUFBQUFB
QXBBSUFBQlVWQVFDNUZ3RUFBQUFBQUJjQUFBQkFFQkJDTG5Ka1lYUmhBQUFBCkFBQUFBQUFBQUJR
QUFBQ2ZHQUVBQUFBQUFBQUFBQUFBQUFBQVFCQXdRQzUwWlhoMEFBQUFBQUFBQUFBQUFBQXBBQUFB
c3hnQkFOd1kKQVFBQUFBQUFBd0FBQUNBUVVHQXVaR1ZpZFdja1V3QUFBQUFBQUFBQVVBRUFBUG9Z
QVFCS0dnRUFBQUFBQUFrQUFBQkFFQkJDTG5SbAplSFFBQUFBQUFBQUFBQUFBQUFZQUFBQ2tHZ0VB
cWhvQkFBQUFBQUFCQUFBQUlCQlFZQzVrWldKMVp5UlRBQUFBQUFBQUFBQVFBUUFBCnRCb0JBTVFi
QVFBQUFBQUFCd0FBQUVBUUVFSXVkR1Y0ZEFBQUFBQUFBQUFBQUFBQUJnQUFBQW9jQVFBUUhBRUFB
QUFBQUFFQUFBQWcKRUZCZ0xtUmxZblZuSkZNQUFBQUFBQUFBQU93QUFBQWFIQUVBQmgwQkFBQUFB
QUFIQUFBQVFCQVFRaTUwWlhoMEFBQUFBQUFBQUFBQQpBQUFHQUFBQVRCMEJBRklkQVFBQUFBQUFB
UUFBQUNBUVVHQXVaR1ZpZFdja1V3QUFBQUFBQUFBQTdBQUFBRndkQVFCSUhnRUFBQUFBCkFBY0FB
QUJBRUJCQ0xuUmxlSFFBQUFBQUFBQUFBQUFBQUFZQUFBQ09IZ0VBbEI0QkFBQUFBQUFCQUFBQUlC
QlFZQzVrWldKMVp5UlQKQUFBQUFBQUFBQURvQUFBQW5oNEJBSVlmQVFBQUFBQUFCd0FBQUVBUUVF
SXVkR1Y0ZEFBQUFBQUFBQUFBQUFBQU53QUFBTXdmQVFBRApJQUVBQUFBQUFBRUFBQUFnRUZCZ0xt
UmxZblZuSkZNQUFBQUFBQUFBQUZnQkFBQU5JQUVBWlNFQkFBQUFBQUFIQUFBQVFCQVFRaTUwClpY
aDBBQUFBQUFBQUFBQUFBQUFHQUFBQXF5RUJBTEVoQVFBQUFBQUFBUUFBQUNBUVVHQXVaR1ZpZFdj
a1V3QUFBQUFBQUFBQW1BRUEKQUxzaEFRQlRJd0VBQUFBQUFBY0FBQUJBRUJCQ0xuUmxlSFFBQUFB
QUFBQUFBQUFBQUFZQUFBQ1pJd0VBbnlNQkFBQUFBQUFCQUFBQQpJQkJRWUM1a1pXSjFaeVJUQUFB
QUFBQUFBQUFNQVFBQXFTTUJBTFVrQVFBQUFBQUFCd0FBQUVBUUVFSXVkR1Y0ZEFBQUFBQUFBQUFB
CkFBQUFCZ0FBQVBza0FRQUJKUUVBQUFBQUFBRUFBQUFnRUZCZ0xtUmxZblZuSkZNQUFBQUFBQUFB
QU9nQUFBQUxKUUVBOHlVQkFBQUEKQUFBSEFBQUFRQkFRUWk1MFpYaDBBQUFBQUFBQUFBQUFBQUFH
QUFBQU9TWUJBRDhtQVFBQUFBQUFBUUFBQUNBUVVHQXVaR1ZpZFdjawpVd0FBQUFBQUFBQUEzQUFB
QUVrbUFRQWxKd0VBQUFBQUFBY0FBQUJBRUJCQ0xuUmxlSFFBQUFBQUFBQUFBQUFBQUNJQUFBQnJK
d0VBCmpTY0JBQUFBQUFBQkFBQUFJQkJRWUM1a1pXSjFaeVJUQUFBQUFBQUFBQUFRQVFBQWx5Y0JB
S2NvQVFBQUFBQUFCd0FBQUVBUUVFSXUKZEdWNGRBQUFBQUFBQUFBQUFBQUFNd0FBQU8wb0FRQWdL
UUVBQUFBQUFBTUFBQUFnRUZCZ0xtUmxZblZuSkZNQUFBQUFBQUFBQUZnQgpBQUErS1FFQWxpb0JB
QUFBQUFBTEFBQUFRQkFRUWk1MFpYaDBBQUFBQUFBQUFBQUFBQUEwQUFBQUJDc0JBRGdyQVFBQUFB
QUFBZ0FBCkFDQVFVR0F1WkdWaWRXY2tVd0FBQUFBQUFBQUFFQUVBQUV3ckFRQmNMQUVBQUFBQUFB
Y0FBQUJBRUJCQ0xuUmxlSFFBQUFBQUFBQUEKQUFBQUFFY0FBQUNpTEFFQTZTd0JBQUFBQUFBRUFB
QUFJQkJRWUM1a1pXSjFaeVJUQUFBQUFBQUFBQUFNQVFBQUVTMEJBQjB1QVFBQQpBQUFBQ1FBQUFF
QVFFRUl1ZEdWNGRBQUFBQUFBQUFBQUFBQUFFQUFBQUhjdUFRQ0hMZ0VBQUFBQUFBRUFBQUFnRUZC
Z0xtUmxZblZuCkpGTUFBQUFBQUFBQUFBQUJBQUNSTGdFQWtTOEJBQUFBQUFBSEFBQUFRQkFRUWk1
MFpYaDBBQUFBQUFBQUFBQUFBQUFRQUFBQTF5OEIKQU9jdkFRQUFBQUFBQVFBQUFDQVFVR0F1WkdW
aWRXY2tVd0FBQUFBQUFBQUE2QUFBQVBFdkFRRFpNQUVBQUFBQUFBY0FBQUJBRUJCQwpMblJsZUhR
QUFBQUFBQUFBQUFBQUFCQUFBQUFmTVFFQUx6RUJBQUFBQUFBQkFBQUFJQkJRWUM1a1pXSjFaeVJU
QUFBQUFBQUFBQUQwCkFBQUFPVEVCQUMweUFRQUFBQUFBQndBQUFFQVFFRUl1ZEdWNGRBQUFBQUFB
QUFBQUFBQUFId0FBQUhNeUFRQ1NNZ0VBQUFBQUFBSUEKQUFBZ0VGQmdMbVJsWW5WbkpGTUFBQUFB
QUFBQUFCUUJBQUNtTWdFQXVqTUJBQUFBQUFBSEFBQUFRQkFRUWk1MFpYaDBBQUFBQUFBQQpBQUFB
QUFDTEFBQUFBRFFCQUlzMEFRQUFBQUFBQmdBQUFDQVFVR0F1WkdWaWRXY2tVd0FBQUFBQUFBQUFt
QUlBQU1jMEFRQmZOd0VBCkFBQUFBQkVBQUFCQUVCQkNMblJsZUhRQUFBQUFBQUFBQUFBQUFCWUFB
QUFKT0FFQUh6Z0JBQUFBQUFBQkFBQUFJQkJRWUM1a1pXSjEKWnlSVEFBQUFBQUFBQUFENEFBQUFL
VGdCQUNFNUFRQUFBQUFBQndBQUFFQVFFRUl1ZEdWNGRBQUFBQUFBQUFBQUFBQUFHd0FBQUdjNQpB
UUNDT1FFQUFBQUFBQUVBQUFBZ0VGQmdMbVJsWW5WbkpGTUFBQUFBQUFBQUFDQUJBQUNNT1FFQXJE
b0JBQUFBQUFBSEFBQUFRQkFRClFpNTBaWGgwQUFBQUFBQUFBQUFBQUFBUkFBQUE4am9CQUFNN0FR
QUFBQUFBQVFBQUFDQVFVR0F1WkdWaWRXY2tVd0FBQUFBQUFBQUEKK0FBQUFBMDdBUUFGUEFFQUFB
QUFBQWNBQUFCQUVCQkNMblJsZUhRQUFBQUFBQUFBQUFBQUFCRUFBQUJMUEFFQVhEd0JBQUFBQUFB
QgpBQUFBSUJCUVlDNWtaV0oxWnlSVEFBQUFBQUFBQUFBRUFRQUFaandCQUdvOUFRQUFBQUFBQndB
QUFFQVFFRUl1ZEdWNGRBQUFBQUFBCkFBQUFBQUFBTXdBQUFMQTlBUURqUFFFQUFBQUFBQU1BQUFB
Z0VGQmdMbVJsWW5WbkpGTUFBQUFBQUFBQUFJd0JBQUFCUGdFQWpUOEIKQUFBQUFBQUxBQUFBUUJB
UVFpNTBaWGgwQUFBQUFBQUFBQUFBQUFBR0FBQUErejhCQUFGQUFRQUFBQUFBQVFBQUFDQVFVR0F1
WkdWaQpkV2NrVXdBQUFBQUFBQUFBL0FBQUFBdEFBUUFIUVFFQUFBQUFBQWNBQUFCQUVCQkNMblJs
ZUhRQUFBQUFBQUFBQUFBQUFBWUFBQUJOClFRRUFVMEVCQUFBQUFBQUJBQUFBSUJCUVlDNWtaV0ox
WnlSVEFBQUFBQUFBQUFEOEFBQUFYVUVCQUZsQ0FRQUFBQUFBQndBQUFFQVEKRUVJdWRHVjRkQUFB
QUFBQUFBQUFBQUFBUHdBQUFKOUNBUURlUWdFQUFBQUFBQVFBQUFBZ0VGQmdMbVJsWW5WbkpGTUFB
QUFBQUFBQQpBRFFCQUFBR1F3RUFPa1FCQUFBQUFBQUxBQUFBUUJBUVFpNTBaWGgwSkhsakFBQUFB
QUFBQUFBVUFBQUFxRVFCQUx4RUFRQUFBQUFBCkF3QUFBQ0FRVUdBdVpHVmlkV2NrVXdBQUFBQUFB
QUFBN0FBQUFOcEVBUURHUlFFQUFBQUFBQWNBQUFCQUVCQkNMbkprWVhSaEFBQUEKQUFBQUFBQUFB
QmNBQUFBTVJnRUFBQUFBQUFBQUFBQUFBQUFBUUJBd1FDNTBaWGgwSkhsakFBQUFBQUFBQUFBVUFB
QUFJMFlCQURkRwpBUUFBQUFBQUF3QUFBQ0FRVUdBdVpHVmlkV2NrVXdBQUFBQUFBQUFBOEFBQUFG
VkdBUUJGUndFQUFBQUFBQWNBQUFCQUVCQkNMbkprCllYUmhBQUFBQUFBQUFBQUFBQnNBQUFDTFJ3
RUFBQUFBQUFBQUFBQUFBQUFBUUJBd1FDNTBaWGgwSkhsakFBQUFBQUFBQUFBVUFBQUEKcGtjQkFM
cEhBUUFBQUFBQUF3QUFBQ0FRVUdBdVpHVmlkV2NrVXdBQUFBQUFBQUFBN0FBQUFOaEhBUURFU0FF
QUFBQUFBQWNBQUFCQQpFQkJDTG5Ka1lYUmhBQUFBQUFBQUFBQUFBQmdBQUFBS1NRRUFBQUFBQUFB
QUFBQUFBQUFBUUJBd1FDNTBaWGgwSkhsakFBQUFBQUFBCkFBQVVBQUFBSWtrQkFEWkpBUUFBQUFB
QUF3QUFBQ0FRVUdBdVpHVmlkV2NrVXdBQUFBQUFBQUFBL0FBQUFGUkpBUUJRU2dFQUFBQUEKQUFj
QUFBQkFFQkJDTG5Ka1lYUmhBQUFBQUFBQUFBQUFBQ1VBQUFDV1NnRUFBQUFBQUFBQUFBQUFBQUFB
UUJBd1FDNURVbFFrV0VOVgpBQUFBQUFBQUFBQVFBQUFBdTBvQkFNdEtBUUFBQUFBQUJBQUFBRUFB
TUVBdVpHVmlkV2NrVkFBQUFBQUFBQUFBWkFBQUFQTktBUUFBCkFBQUFBQUFBQUFBQUFBQkFBQkJD
SUNBZ0wyMWhibWxtWlhOMFpHVndaVzVrWlc1amVUb2lkSGx3WlQwbmQybHVNekluSUc1aGJXVTkK
SjAxcFkzSnZjMjltZEM1V1F6Z3dMa05TVkNjZ2RtVnljMmx2Ymowbk9DNHdMalV3TnpJM0xqUXdO
VE1uSUhCeWIyTmxjM052Y2tGeQpZMmhwZEdWamRIVnlaVDBuZURnMkp5QndkV0pzYVdOTFpYbFVi
MnRsYmowbk1XWmpPR0l6WWpsaE1XVXhPR1V6WWljaUlDOUVSVVpCClZVeFVURWxDT2lKMWRXbGtM
bXhwWWlJZ0wwUkZSa0ZWVEZSTVNVSTZJblYxYVdRdWJHbGlJaUF2UkVWR1FWVk1WRXhKUWpvaVRW
TlcKUTFKVUlpQXZSRVZHUVZWTVZFeEpRam9pVDB4RVRrRk5SVk1pSUFRQUFBRHhBQUFBbmdjQUFH
VUFBUkVBQUFBQVF6cGNZM2xuZDJsdQpYR2h2YldWY1kyMWhjbkpwYmx4WFpXSkxhWFJDZFdsc1pG
eHZZbXBjVjJWaVMybDBVM2x6ZEdWdFNXNTBaWEptWVdObFhGSmxiR1ZoCmMyVmNWMlZpUzJsMFUz
bHpkR1Z0U1c1MFpYSm1ZV05sTG05aWFnQTFCeFlSQVNBQUFBY0FEZ0FBQUNmR0RnQUFBQ2ZHVFds
amNtOXoKYjJaMElDaFNLU0JQY0hScGJXbDZhVzVuSUVOdmJYQnBiR1Z5QUdOM1pBQmpPbHhqZVdk
M2FXNWNhRzl0WlZ4amJXRnljbWx1WEhOdgpkWEpqWlZ4emRtNWNWMlZpUzJsMFhFbHVkR1Z5Ym1G
c1hGZGxZa3RwZEZONWMzUmxiVWx1ZEdWeVptRmpaVngzYVc0QVkyd0FRenBjClVISnZaM0poYlNC
R2FXeGxjeUFvZURnMktWeE5hV055YjNOdlpuUWdWbWx6ZFdGc0lGTjBkV1JwYnlBNFhGWkRYR0pw
Ymx4amJDNWwKZUdVQVkyMWtBQzFQTWlBdFNVTTZYR041WjNkcGJseG9iMjFsWEdOdFlYSnlhVzVj
VjJWaVMybDBRblZwYkdSY1NXNWpiSFZrWlNBdApTVU02WEVGd2NHeGxTVzUwWlhKdVlXeGNTVzVq
YkhWa1pTQXRTVU02WEVGd2NHeGxTVzUwWlhKdVlXeGNTVzVqYkhWa1pWeERiM0psClJtOTFibVJo
ZEdsdmJseFBVMWhEYjIxd1lYUnBZbWxzYVhSNVNHVmhaR1Z5Y3lBdFNVTTZYRUZ3Y0d4bFNXNTBa
WEp1WVd4Y1NXNWoKYkhWa1pWeERiM0psUm05MWJtUmhkR2x2Ymx4UFUxaERiMjF3WVhScFltbHNh
WFI1U0dWaFpHVnljMXhIVGxWRGIyMXdZWFJwWW1scwphWFI1SUMxSlF6cGNZM2xuZDJsdVhHaHZi
V1ZjWTIxaGNuSnBibHhYWldKTGFYUkNkV2xzWkZ4dlltcGNWMlZpUzJsMFUzbHpkR1Z0ClNXNTBa
WEptWVdObFhFUmxjbWwyWldSVGIzVnlZMlZ6SUMxSll6cGNZM2xuZDJsdVhHaHZiV1ZjWTIxaGNu
SnBibHh6YjNWeVkyVmMKYzNadVhGZGxZa3RwZEZ4SmJuUmxjbTVoYkZ4WFpXSkxhWFJUZVhOMFpX
MUpiblJsY21aaFkyVWdMVVJmWDFkSlRqTXlYMThnTFVSZgpURWxDSUMxRVRrUkZRbFZISUMxRVYw
bE9NeklnTFVSZlYwbE9SRTlYVXlBdFJGZEpUbFpGVWowd2VEVXdNU0F0UkY5WFNVNHpNbDlYClNV
NU9WRDB3ZURVd01TQXRSRjlYU1U0ek1sOUpSVDB3ZURZd01DQXRSRjlEVWxSZlUwVkRWVkpGWDBO
UVVGOVBWa1ZTVEU5QlJGOVQKVkVGT1JFRlNSRjlPUVUxRlV6MHhJQzFFWDE5UVVrOUVWVU5VU1U5
T1gxODlNQ0F0UkY5SVFWTmZSVmhEUlZCVVNVOU9VejB3SUMxRQpRbFZKVEVSSlRrZGZWMlZpUzJs
MFUzbHpkR1Z0U1c1MFpYSm1ZV05sSUMxRVgxVk9TVU5QUkVVZ0xVUlZUa2xEVDBSRklDMUdSQ0F0
ClRVUWdMVWRTTFNBdFJtOURPbHhqZVdkM2FXNWNhRzl0WlZ4amJXRnljbWx1WEZkbFlrdHBkRUox
YVd4a1hHOWlhbHhYWldKTGFYUlQKZVhOMFpXMUpiblJsY21aaFkyVmNVbVZzWldGelpWd2dMVVpr
UXpwY1kzbG5kMmx1WEdodmJXVmNZMjFoY25KcGJseFhaV0pMYVhSQwpkV2xzWkZ4c2FXSmNWMlZp
UzJsMFUzbHpkR1Z0U1c1MFpYSm1ZV05sTG5aak9EQXVjR1JpSUMxWE5DQXRWMWdnTFdNZ0xWcHBJ
QzFVClVDQXRkMlEwTURFNElDMTNaRFF3TmpnZ0xYZGtOREE1T1NBdGQyUTBNVEF3SUMxM1pEUXhN
amNnTFhka05ERXpPQ0F0ZDJRME1UZ3cKSUMxM1pEUXhPRGtnTFhka05ESXdNU0F0ZDJRME1qUTBJ
QzEzWkRReU5URWdMWGRrTkRJM05TQXRkMlEwTWpnNElDMTNaRFF5T1RFZwpMWGRrTkRNd05TQXRk
MlEwTXpRMElDMTNaRFF6TlRVZ0xYZGtORE00T1NBdGQyUTBOVEF6SUMxM1pEUTFNRFVnTFhka05E
VXhNQ0F0CmQyUTBOVEV5SUMxM1pEUTJNVEFnTFhka05EY3dOaUF0ZDJRME9EQXdJQzEzWkRRNU5U
RWdMWGRrTkRrMU1pQXRkMlEwT1RrMklDMTMKWkRZd01URWdMWGRrTmpBek1TQXRkMlEyTWpFeElD
MTNaRFl5TkRZZ0xYZGtOakkxTlNBdGQyUTJNemczSUMxSFV5QXRibTlzYjJkdgpJQzFsY25KdmNu
SmxjRzl5ZERweGRXVjFaU0F0U1NKRE9seFFjbTluY21GdElFWnBiR1Z6SUNoNE9EWXBYRTFwWTNK
dmMyOW1kQ0JFCmFYSmxZM1JZSUZORVN5QW9RWFZuZFhOMElESXdNRGtwWEVsdVkyeDFaR1VpSUMx
SklrTTZYRkJ5YjJkeVlXMGdSbWxzWlhNZ0tIZzQKTmlsY1RXbGpjbTl6YjJaMElGWnBjM1ZoYkNC
VGRIVmthVzhnT0Z4V1ExeHBibU5zZFdSbElpQXRTU0pET2x4UWNtOW5jbUZ0SUVacApiR1Z6SUNo
NE9EWXBYRTFwWTNKdmMyOW1kQ0JXYVhOMVlXd2dVM1IxWkdsdklEaGNWa05jWVhSc2JXWmpYR2x1
WTJ4MVpHVWlJQzFKCklrTTZYRkJ5YjJkeVlXMGdSbWxzWlhNZ0tIZzROaWxjVFdsamNtOXpiMlow
SUZacGMzVmhiQ0JUZEhWa2FXOGdPRnhXUTF4UWJHRjAKWm05eWJWTkVTMXhwYm1Oc2RXUmxJaUF0
U1NKRE9seFFjbTluY21GdElFWnBiR1Z6SUNoNE9EWXBYRTFwWTNKdmMyOW1kQ0JXYVhOMQpZV3dn
VTNSMVpHbHZJRGhjVmtOY1VHeGhkR1p2Y20xVFJFdGNZMjl0Ylc5dVhHbHVZMngxWkdVaUlDMUpJ
a002WEZCeWIyZHlZVzBnClJtbHNaWE1nS0hnNE5pbGNUV2xqY205emIyWjBJRlpwYzNWaGJDQlRk
SFZrYVc4Z09GeFRSRXRjZGpJdU1GeHBibU5zZFdSbElpQXQKV0FCemNtTUFMbHhYWldKTGFYUlRl
WE4wWlcxSmJuUmxjbVpoWTJVdVkzQndBSEJrWWdCRE9seGplV2QzYVc1Y2FHOXRaVnhqYldGeQpj
bWx1WEZkbFlrdHBkRUoxYVd4a1hHeHBZbHhYWldKTGFYUlRlWE4wWlcxSmJuUmxjbVpoWTJVdWRt
TTRNQzV3WkdJQUFBQUE4UUFBCkFPVTBBQUFmQUFjUmh4WUFBQXdBUWtsT1JGTlVVa2xPUjE5UVQx
TlVYME5QVDB0SlJRQW5BQWNSaHhZQUFCQUFRa2xPUkZOVVVrbE8KUjE5R1RFRkhYMEpKVGtSZlZF
OWZUMEpLUlVOVUFDRUFCeEZxRXdBQUFnQm1iMjUwVTIxdmIzUm9hVzVuVEdWMlpXeE5aV1JwZFcw
QQpIZ0FNRVZjU0FBQUFBQUFBQUFCaGJuUnBZV3hwWVhOcGJtZEhZVzF0WVFBZ0FBd1JkUUFBQUFB
QUFBQUFBSE5mWm05dWRGTnRiMjkwCmFHbHVaMVI1Y0dVQUlRQU1FWFFBQUFBQUFBQUFBQUJ6WDJa
dmJuUlRiVzl2ZEdocGJtZE1aWFpsYkFBaUFBd1J2eFFBQUFBQUFBQUEKQUd0RFJsZHBibVJ2ZDNO
VFUweFFaV1Z5UTJWeWRBQVpBQWNSWEJZQUFBRUFWVkpNV2s5T1JWOUpUbFJTUVU1RlZBQW9BQTBS
V3hRQQpBQUFBQUFBQUFGOXBiWEJmWDJ0RFFWSmxibVJsY2tSWU9VTmhiR3hpWVdOcmN3QXZBQXdS
dmhRQUFBQUFBQUFBQUd0RFJsZHBibVJ2CmQzTlRVMHhRWldWeVEyVnlkQ1JwYm1sMGFXRnNhWHBs
Y2lRQUpnQU1FYjhVQUFBQUFBQUFBQUJyUTBaWGFXNWtiM2R6VTFOTVEyaGgKYVc1RGIyNTBaWGgw
QURNQURCRytGQUFBQUFBQUFBQUFhME5HVjJsdVpHOTNjMU5UVEVOb1lXbHVRMjl1ZEdWNGRDUnBi
bWwwYVdGcwphWHBsY2lRQUl3QU1FYjhVQUFBQUFBQUFBQUJyUTBaWGFXNWtiM2R6VTFOTVRHOWpZ
V3hEWlhKMEFEQUFEQkcrRkFBQUFBQUFBQUFBCmEwTkdWMmx1Wkc5M2MxTlRURXh2WTJGc1EyVnlk
Q1JwYm1sMGFXRnNhWHBsY2lRQU1BQU1FYjhVQUFBQUFBQUFBQUJyUTBaVGRISmwKWVcxUWNtOXda
WEowZVZkcGJtUnZkM05UVTB4RFpYSjBTVzVtYndBOUFBd1J2aFFBQUFBQUFBQUFBR3REUmxOMGNt
VmhiVkJ5YjNCbApjblI1VjJsdVpHOTNjMU5UVEVObGNuUkpibVp2SkdsdWFYUnBZV3hwZW1WeUpB
QWtBQXdSUUFBQUFBQUFBQUFBQUhOZlptOXVkRk50CmIyOTBhR2x1WjBOdmJuUnlZWE4wQUNrQURC
RjBBQUFBQUFBQUFBQUFjMTl6ZVhOMFpXMUdiMjUwVTIxdmIzUm9hVzVuUlc1aFlteGwKWkFBbUFB
d1JkUUFBQUFBQUFBQUFBSE5mYzNsemRHVnRSbTl1ZEZOdGIyOTBhR2x1WjFSNWNHVUFKUUFNRVRB
QUFBQUFBQUFBQUFCegpYM041YzNSbGJVWnZiblJUYlc5dmRHaHBibWRUWlhRQUd3QUhFVUlXQUFB
QUFGVlNURnBQVGtWU1JVZGZSRVZHUVZWTVZBQVlBQWNSClFoWUFBQUVBVlZKTVdrOU9SVkpGUjE5
SVMweE5BREFBRFJIT0V3QUFBQUFBQUFBQVgybHRjRjlmYTBOR1ZIbHdaVVJwWTNScGIyNWgKY25s
TFpYbERZV3hzUW1GamEzTUFNZ0FORWRFVEFBQUFBQUFBQUFCZmFXMXdYMTlyUTBaVWVYQmxSR2xq
ZEdsdmJtRnllVlpoYkhWbApRMkZzYkVKaFkydHpBQlVBQnhGQUV3QUFBQUJWWDFwRlVrOWZSVkpT
VDFJQUZRQUhFZHNVQUFBQUFFbGtiR1ZUYUhWMFpHOTNiZ0FTCkFBY1JQQllBQUFFQVUxbFRYMWRK
VGpNeUFCQUFCeEU4RmdBQUFnQlRXVk5mVFVGREFBNEFCeEZJRmdBQUFnQldWRjlKTWdBcUFBY1IK
UUJNQUFBU0FBUUVCQUZWZlRWVk1WRWxRVEVWZlJFVkRTVTFCVEY5VFJWQkJVa0ZVVDFKVEFCQUFC
eEZJRmdBQUNBQldWRjlDVTFSUwpBQlFBQnhGSUZnQUFDUUJXVkY5RVNWTlFRVlJEU0FBaEFBMFJC
aFVBQUFBQUFBQUFBRjlwYlhCZlgydERSa0p2YjJ4bFlXNVVjblZsCkFDSUFEUkVHRlFBQUFBQUFB
QUFBWDJsdGNGOWZhME5HUW05dmJHVmhia1poYkhObEFCSUFCeEZJRmdBQUpBQldWRjlTUlVOUFVr
UUEKRmdBSEVVZ1dBQUFDZ0FDQVZsUmZVa1ZUUlZKV1JVUUFJd0FIRWJZVUFBQUJBR3REVmxScGJX
VlRkR0Z0Y0ZacFpHVnZWR2x0WlZaaApiR2xrQUNJQUJ4RzJGQUFBQWdCclExWlVhVzFsVTNSaGJY
QkliM04wVkdsdFpWWmhiR2xrQUNRQUJ4RkFFd0FBQklBQUJBRUFWVjlKClJFNUJYMUJTVDBoSlFr
bFVSVVJmUlZKU1QxSUFKQUFIRVVBVEFBQUVnQUVFQVFCVlgwbEVUa0ZmVlU1QlUxTkpSMDVGUkY5
RlVsSlAKVWdBa0FBY1JRQk1BQUFTQUFnUUJBRlZmU1VST1FWOURTRVZEUzE5Q1NVUkpYMFZTVWs5
U0FDRUFCeEcyRkFBQUJJQUFBQUVBYTBOVwpWR2x0WlZOMFlXMXdWRzl3Um1sbGJHUUFKQUFIRWJZ
VUFBQUVnQUFBQWdCclExWlVhVzFsVTNSaGJYQkNiM1IwYjIxR2FXVnNaQUFoCkFBY1JRQk1BQUFT
QUFnVUJBRlZmVUV4VlIwbE9YMFZTVWs5U1gweEpUVWxVQUJVQUJ4SGRGQUFBQUFCT1QwUkZYMGxP
VmtGTVNVUUEKRlFBSEVkMFVBQUFCQUU1UFJFVmZSVXhGVFVWT1ZBQVhBQWNSM1JRQUFBSUFUazlF
UlY5QlZGUlNTVUpWVkVVQUVnQUhFZDBVQUFBRApBRTVQUkVWZlZFVllWQUFiQUFjUjNSUUFBQVFB
VGs5RVJWOURSRUZVUVY5VFJVTlVTVTlPQUI0QUJ4SGRGQUFBQlFCT1QwUkZYMFZPClZFbFVXVjlT
UlVaRlVrVk9RMFVBR0FBSEVXa1dBQUFDQUZSWlUxQkZRMTlOU1UxRlZGbFFSUUFZQUFjUmFSWUFB
QU1BVkZsVFVFVkQKWDBaSlRFVk9RVTFGQUJRQUJ4SGRGQUFBQmdCT1QwUkZYMFZPVkVsVVdRQVdB
QWNSYVJZQUFBUUFWRmxUVUVWRFgxQlNUMGRKUkFBYgpBQWNSYVJZQUFBVUFWRmxUVUVWRFgxQkJR
MHRCUjBWT1FVMUZBQlVBQnhIZEZBQUFDQUJPVDBSRlgwTlBUVTFGVGxRQUZnQUhFZDBVCkFBQUpB
RTVQUkVWZlJFOURWVTFGVGxRQUd3QUhFZDBVQUFBS0FFNVBSRVZmUkU5RFZVMUZUbFJmVkZsUVJR
QWZBQWNSM1JRQUFBc0EKVGs5RVJWOUVUME5WVFVWT1ZGOUdVa0ZIVFVWT1ZBQWRBQWNScVJZQUFB
TUFXRTFNUlV4RlRWUlpVRVZmUkU5RFZVMUZUbFFBSXdBSApFZmtVQUFBQkFFSkpUa1JUVkVGVVZW
TmZSa2xPUkVsT1IxSkZVMDlWVWtORkFCNEFCeEg1RkFBQUFnQkNTVTVFVTFSQlZGVlRYME5QClRr
NUZRMVJKVGtjQUh3QUhFZmtVQUFBREFFSkpUa1JUVkVGVVZWTmZVa1ZFU1ZKRlExUkpUa2NBSlFB
SEVma1VBQUFFQUVKSlRrUlQKVkVGVVZWTmZRa1ZIU1U1RVQxZE9URTlCUkVSQlZFRUFJd0FIRWZr
VUFBQUdBRUpKVGtSVFZFRlVWVk5mUlU1RVJFOVhUa3hQUVVSRQpRVlJCQUNzQUJ4SDVGQUFBQndC
Q1NVNUVVMVJCVkZWVFgwSkZSMGxPUkU5WFRreFBRVVJEVDAxUVQwNUZUbFJUQUNnQUJ4SDVGQUFB
CkNBQkNTVTVFVTFSQlZGVlRYMGxPVTFSQlRFeEpUa2REVDAxUVQwNUZUbFJUQUNrQUJ4SDVGQUFB
Q1FCQ1NVNUVVMVJCVkZWVFgwVk8KUkVSUFYwNU1UMEZFUTA5TlVFOU9SVTVVVXdBakFBY1IrUlFB
QUFvQVFrbE9SRk5VUVZSVlUxOVZVMGxPUjBOQlEwaEZSRU5QVUZrQQpJZ0FIRWZrVUFBQUxBRUpK
VGtSVFZFRlVWVk5mVTBWT1JFbE9SMUpGVVZWRlUxUUFKUUFIRWZrVUFBQU5BRUpKVGtSVFZFRlVW
Vk5mClRVbE5SVlJaVUVWQlZrRkpURUZDVEVVQUtnQUhFZmtVQUFBT0FFSkpUa1JUVkVGVVZWTmZR
MEZEU0VWR1NVeEZUa0ZOUlVGV1FVbE0KUVVKTVJRQW1BQWNSK1JRQUFBOEFRa2xPUkZOVVFWUlZV
MTlDUlVkSlRsTlpUa05QVUVWU1FWUkpUMDRBSkFBSEVma1VBQUFRQUVKSgpUa1JUVkVGVVZWTmZS
VTVFVTFsT1EwOVFSVkpCVkVsUFRnQWpBQWNSK1JRQUFCRUFRa2xPUkZOVVFWUlZVMTlDUlVkSlRs
VlFURTlCClJFUkJWRUVBSVFBSEVma1VBQUFUQUVKSlRrUlRWRUZVVlZOZlJVNUVWVkJNVDBGRVJF
RlVRUUFqQUFjUitSUUFBQlFBUWtsT1JGTlUKUVZSVlUxOVFVazlVVDBOUFRFTk1RVk5UU1VRQUhB
QUhFZmtVQUFBVkFFSkpUa1JUVkVGVVZWTmZSVTVEVDBSSlRrY0FMUUFIRWZrVQpBQUFXQUVKSlRr
UlRWRUZVVlZOZlZrVlNTVVpKUlVSTlNVMUZWRmxRUlVGV1FVbE1RVUpNUlFBb0FBY1IrUlFBQUJj
QVFrbE9SRk5VClFWUlZVMTlEVEVGVFUwbE9VMVJCVEV4TVQwTkJWRWxQVGdBY0FBY1IrUlFBQUJn
QVFrbE9SRk5VUVZSVlUxOUVSVU5QUkVsT1J3QXYKQUFjUkV4VUFBQUFBYTBOR1NGUlVVRU52YjJ0
cFpWTjBiM0poWjJWQlkyTmxjSFJRYjJ4cFkzbEJiSGRoZVhNQUpnQUhFZmtVQUFBWgpBRUpKVGtS
VFZFRlVWVk5mVEU5QlJFbE9SMDFKVFVWSVFVNUVURVZTQUM0QUJ4RVRGUUFBQVFCclEwWklWRlJR
UTI5dmEybGxVM1J2CmNtRm5aVUZqWTJWd2RGQnZiR2xqZVU1bGRtVnlBRU1BQnhFVEZRQUFBZ0Jy
UTBaSVZGUlFRMjl2YTJsbFUzUnZjbUZuWlVGalkyVncKZEZCdmJHbGplVTl1YkhsR2NtOXRUV0Zw
YmtSdlkzVnRaVzUwUkc5dFlXbHVBQ3dBQnhINUZBQUFHZ0JDU1U1RVUxUkJWRlZUWDBOUApUbFJG
VGxSRVNWTlFUMU5KVkVsUFRrRlVWRUZEU0FBbkFBY1IrUlFBQUJ3QVFrbE9SRk5VUVZSVlUxOURU
Rk5KUkVOQlRrbE9VMVJCClRsUkpRVlJGQUJrQUJ4RU5GUUFBQUJCVlEwaEJVbDlDU1VSSlgwTk1R
Vk5UQUNVQUJ4SDVGQUFBSFFCQ1NVNUVVMVJCVkZWVFgwbFYKVGt0T1QxZE9RVlpCU1V4QlFreEZB
QjRBQnhINUZBQUFIZ0JDU1U1RVUxUkJWRlZUWDBSSlVrVkRWRUpKVGtRQUh3QUhFZmtVQUFBZgpB
RUpKVGtSVFZFRlVWVk5mVWtGWFRVbE5SVlJaVUVVQUlnQUhFZmtVQUFBZ0FFSkpUa1JUVkVGVVZW
TmZVRkpQV0ZsRVJWUkZRMVJKClRrY0FJQUFIRWZrVUFBQWhBRUpKVGtSVFZFRlVWVk5mUVVORFJW
QlVVa0ZPUjBWVEFCOEFCeEg1RkFBQUlnQkNTVTVFVTFSQlZGVlQKWDBOUFQwdEpSVjlUUlU1VUFD
c0FCeEg1RkFBQUl3QkNTVTVFVTFSQlZGVlRYME5QVFZCQlExUmZVRTlNU1VOWlgxSkZRMFZKVmtW
RQpBQ1VBQnhINUZBQUFKQUJDU1U1RVUxUkJWRlZUWDBOUFQwdEpSVjlUVlZCUVVrVlRVMFZFQUNj
QUJ4SDVGQUFBSmdCQ1NVNUVVMVJCClZGVlRYME5QVDB0SlJWOVRWRUZVUlY5QlEwTkZVRlFBSndB
SEVma1VBQUFuQUVKSlRrUlRWRUZVVlZOZlEwOVBTMGxGWDFOVVFWUkYKWDFKRlNrVkRWQUFuQUFj
UitSUUFBQ2dBUWtsT1JGTlVRVlJWVTE5RFQwOUxTVVZmVTFSQlZFVmZVRkpQVFZCVUFDNEFCeEg1
RkFBQQpMZ0JDU1U1RVUxUkJWRlZUWDFCRlVsTkpVMVJGVGxSZlEwOVBTMGxGWDFKRlEwVkpWa1ZF
QUNBQUJ4SDVGQUFBTUFCQ1NVNUVVMVJCClZGVlRYME5CUTBoRlEwOU9WRkpQVEFBdUFBY1IrUlFB
QURFQVFrbE9SRk5VUVZSVlUxOURUMDVVUlU1VVJFbFRVRTlUU1ZSSlQwNUcKU1V4RlRrRk5SUUFw
QUFjUitSUUFBRElBUWtsT1JGTlVRVlJWVTE5TlNVMUZWRVZZVkZCTVFVbE9UVWxUVFVGVVEwZ0FK
QUFIRVEwVgpBQUFBSUZWRFNFRlNYMGRGVGtWU1FVeGZRMEZVUlVkUFVsbGZUVUZUU3dBbUFBY1Ir
UlFBQURNQVFrbE9SRk5VUVZSVlUxOVFWVUpNClNWTklSVkpCVmtGSlRFRkNURVVBSEFBSEVRMFZB
QUFBTUZWRFNFRlNYMDVWVFVWU1NVTmZWa0ZNVlVVQUVnQUhFUTBWQUFBQVFGVkQKU0VGU1gwRkhS
UUFkQUFjUjB4UUFBQUFBUTBoQlRrZEZTMGxPUkY5QlJFUk5SVTFDUlZJQUdnQUhFWTBTQUFBQ2dQ
Ny9hME5IUm05dQpkRWx1WkdWNFRXRjRBQ0FBQnhIVEZBQUFBUUJEU0VGT1IwVkxTVTVFWDBSRlRF
VlVSVTFGVFVKRlVnQWNBQWNSMHhRQUFBSUFRMGhCClRrZEZTMGxPUkY5VFJWUk9RVTFGVXdBV0FB
Y1JqUklBQUFLQS92OXJRMGRIYkhsd2FFMWhlQUFrQUFjUjB4UUFBQU1BUTBoQlRrZEYKUzBsT1JG
OVRSVlJFVDBOVlRVVk9WRUZVU1U5T0FCc0FCeEhURkFBQUJBQkRTRUZPUjBWTFNVNUVYMGRGVGtW
U1FVd0FIZ0FIRWRNVQpBQUFGQUVOSVFVNUhSVXRKVGtSZlNVNVdRVXhKUkVGVVJRQWdBQWNSMHhR
QUFBWUFRMGhCVGtkRlMwbE9SRjlEU0VGT1IwVkdRVWxNClJVUUFLZ0FIRVpJU0FBQUFBR3REUjBO
dmJHOXlRMjlrWlVaeVlXZHRaVzUwVEc5dmEzVndWR1Y0ZEhWeVpRQW5BQWNSa2hJQUFBRUEKYTBO
SFEyOXNiM0pEYjJSbFJuSmhaMjFsYm5SUVlYSmhiV1YwY21sakFCc0FCeEd1RkFBQUFRQlFRVkpU
UlY5RFFVNVBUa2xEUVV4SgpXa1VBSmdBTkVZOFNBQUFBQUFBQUFBQmZhVzF3WDE5clEwWkJiR3h2
WTJGMGIzSkVaV1poZFd4MEFCY0FCeEd1RkFBQUFnQlFRVkpUClJWOUdVa2xGVGtSTVdRQWJBQWNS
cmhRQUFBTUFVRUZTVTBWZlUwVkRWVkpKVkZsZlZWSk1BQnNBQnhHdUZBQUFCQUJRUVZKVFJWOVMK
VDA5VVJFOURWVTFGVGxRQUZ3QUhFYTRVQUFBRkFGQkJVbE5GWDBSUFExVk5SVTVVQUJVQUJ4R3VG
QUFBQndCUVFWSlRSVjlGVGtOUApSRVVBRlFBSEVhNFVBQUFJQUZCQlVsTkZYMFJGUTA5RVJRQWNB
QWNScmhRQUFBa0FVRUZTVTBWZlVFRlVTRjlHVWs5TlgxVlNUQUFjCkFBY1JyaFFBQUFvQVVFRlNV
MFZmVlZKTVgwWlNUMDFmVUVGVVNBQVRBQWNScmhRQUFBc0FVRUZTVTBWZlRVbE5SUUFWQUFjUnJo
UUEKQUF3QVVFRlNVMFZmVTBWU1ZrVlNBQlVBQnhHdUZBQUFEUUJRUVZKVFJWOVRRMGhGVFVFQUV3
QUhFYTRVQUFBT0FGQkJVbE5GWDFOSgpWRVVBRlFBSEVhNFVBQUFQQUZCQlVsTkZYMFJQVFVGSlRn
QVhBQWNScmhRQUFCQUFVRUZTVTBWZlRFOURRVlJKVDA0QUhnQUhFYTRVCkFBQVJBRkJCVWxORlgx
TkZRMVZTU1ZSWlgwUlBUVUZKVGdBVkFBY1JyaFFBQUJJQVVFRlNVMFZmUlZORFFWQkZBQlFBQnhH
MUZRQUEKQVFCUVUxVmZSRVZHUVZWTVZBQWdBQWNSZ3hZQUFBb0FVVlZGVWxsZlNWTmZTVTVUVkVG
TVRFVkVSVTVVVWxrQUd3QUhFWUVWQUFCTwpBRlZDVEU5RFMxOVFVa2xXUVZSRlgxVlRSUUFtQUFj
UmdSVUFBR0VBVlVKTVQwTkxYME5aVWtsTVRFbERYMU5WVUZCTVJVMUZUbFJCClVsa0FLZ0FIRVFF
VkFBQUJBR3REUjBadmJuUlNaVzVrWlhKcGJtZFRkSGxzWlVGdWRHbGhiR2xoYzJsdVp3QXhBQWNS
QVJVQUFBUUEKYTBOSFJtOXVkRkpsYm1SbGNtbHVaMU4wZVd4bFUzVmljR2w0Wld4UWIzTnBkR2x2
Ym1sdVp3QXlBQWNSQVJVQUFBZ0FhME5IUm05dQpkRkpsYm1SbGNtbHVaMU4wZVd4bFUzVmljR2w0
Wld4UmRXRnVkR2w2WVhScGIyNEFKUUFIRWJnVUFBQVFBR3REUjBadmJuUlRiVzl2CmRHaHBibWRU
ZEhsc1pVMXBibWx0ZFcwQUl3QUhFYmdVQUFBZ0FHdERSMFp2Ym5SVGJXOXZkR2hwYm1kVGRIbHNa
VXhwWjJoMEFDUUEKQnhHNEZBQUFNQUJyUTBkR2IyNTBVMjF2YjNSb2FXNW5VM1I1YkdWTlpXUnBk
VzBBSXdBSEViZ1VBQUJBQUd0RFIwWnZiblJUYlc5dgpkR2hwYm1kVGRIbHNaVWhsWVhaNUFCZ0FC
eEh6RlFBQUF3QlVTMGxPUkY5SlRsUkZVa1pCUTBVQUZ3QUhFZk1WQUFBRUFGUkxTVTVFClgwUkpV
MUJCVkVOSUFCUUFCeEh6RlFBQUJnQlVTMGxPUkY5QlRFbEJVd0FmQUFjUnNoUUFBQUFBUmtWQlZG
VlNSVjlQUWtwRlExUmYKUTBGRFNFbE9Sd0FmQUFjUnNoUUFBQUVBUmtWQlZGVlNSVjlhVDA1Rlgw
Vk1SVlpCVkVsUFRnQWVBQWNSc2hRQUFBSUFSa1ZCVkZWUwpSVjlOU1UxRlgwaEJUa1JNU1U1SEFC
NEFCeEd5RkFBQUF3QkdSVUZVVlZKRlgwMUpUVVZmVTA1SlJrWkpUa2NBSkFBSEViSVVBQUFFCkFF
WkZRVlJWVWtWZlYwbE9SRTlYWDFKRlUxUlNTVU5VU1U5T1V3QVdBQWNSdkJRQUFBQUFRMGxRWDBS
SlUwdGZSbFZNVEFBYUFBY1IKdkJRQUFBRUFRMGxRWDBGRFEwVlRVMTlFUlU1SlJVUUFKZ0FIRWJJ
VUFBQUZBRVpGUVZSVlVrVmZWMFZDVDBOZlVFOVFWVkJOUVU1QgpSMFZOUlU1VUFDRUFCeEc4RkFB
QUFnQkRTVkJmVGtWWFJWSmZWa1ZTVTBsUFRsOUZXRWxUVkZNQUdnQUhFYklVQUFBR0FFWkZRVlJW
ClVrVmZRa1ZJUVZaSlQxSlRBQ1FBQnhHeUZBQUFCd0JHUlVGVVZWSkZYMFJKVTBGQ1RFVmZUVXRm
VUZKUFZFOURUMHdBSVFBSEVid1UKQUFBREFFTkpVRjlQVEVSRlVsOVdSVkpUU1U5T1gwVllTVk5V
VXdBYUFBY1J2QlFBQUFRQVEwbFFYMDVCVFVWZlEwOU9Sa3hKUTFRQQpKZ0FIRWJJVUFBQUlBRVpG
UVZSVlVrVmZURTlEUVV4TlFVTklTVTVGWDB4UFEwdEVUMWRPQURFQUJ4RzhGQUFBQlFCRFNWQmZW
RkpWClUxUmZWa1ZTU1VaSlEwRlVTVTlPWDBOUFRWQlBUa1ZPVkY5TlNWTlRTVTVIQUIwQUJ4R3lG
QUFBQ1FCR1JVRlVWVkpGWDFORlExVlMKU1ZSWlFrRk9SQUFyQUFjUnZCUUFBQVlBUTBsUVgwVllS
VjlUUlV4R1gxSkZSMGxUVkVWU1FWUkpUMDVmVkVsTlJVOVZWQUFvQUFjUgpzaFFBQUFvQVJrVkJW
RlZTUlY5U1JWTlVVa2xEVkY5QlExUkpWa1ZZU1U1VFZFRk1UQUFjQUFjUnZCUUFBQWNBUTBsUVgx
Vk9VMEZHClJWOVVUMTlCUWs5U1ZBQW1BQWNSc2hRQUFBd0FSa1ZCVkZWU1JWOVNSVk5VVWtsRFZG
OUdTVXhGUkU5WFRreFBRVVFBR0FBSEVid1UKQUFBSUFFTkpVRjlPUlVWRVgxSkZRazlQVkFBaEFB
Y1JzaFFBQUEwQVJrVkJWRlZTUlY5QlJFUlBUbDlOUVU1QlIwVk5SVTVVQUNJQQpCeEd5RkFBQURn
QkdSVUZVVlZKRlgxQlNUMVJQUTA5TVgweFBRMHRFVDFkT0FDOEFCeEd5RkFBQUR3QkdSVUZVVlZK
RlgwaFVWRkJmClZWTkZVazVCVFVWZlVFRlRVMWRQVWtSZlJFbFRRVUpNUlFBaUFBY1JzaFFBQUJB
QVJrVkJWRlZTUlY5VFFVWkZYMEpKVGtSVVQwOUMKU2tWRFZBQWpBQWNSc2hRQUFCRUFSa1ZCVkZW
U1JWOVZUa05mVTBGV1JVUkdTVXhGUTBoRlEwc0FMd0FIRWJJVUFBQVNBRVpGUVZSVgpVa1ZmUjBW
VVgxVlNURjlFVDAxZlJrbE1SVkJCVkVoZlZVNUZUa05QUkVWRUFDQUFCeEZyRmdBQUJBQkVSVk5E
UzBsT1JGOUpUVkJNClNVTkpWRUZRVUU5Q1NnQW1BQWNSbUJJQUFBQUFhME5IVTNSNWJHVkVjbUYz
VDNKa1pYSnBibWRUZEhsc1pVOXViSGtBSWdBSEVaZ1MKQUFBQkFHdERSMU4wZVd4bFJISmhkMDl5
WkdWeWFXNW5RbVZzYjNjQUhRQUhFVm9XQUFBQ0FFTlBVbDlXUlZKVFNVOU9YMDFCU2s5UwpYMVl5
QUJjQUJ4RUhGQUFBQUFCclNGUlVVRXh2WVdSWGFXUjBhQUF3QUEwUnZ4UUFBQUFBQUFBQUFGOXBi
WEJmWDJ0RFJsTjBjbVZoCmJWQnliM0JsY25SNVEwOU9Ua1ZEVkZCeWIzaDVBRFFBRFJHL0ZBQUFB
QUFBQUFBQVgybHRjRjlmYTBOR1UzUnlaV0Z0VUhKdmNHVnkKZEhsRFQwNU9SVU5VVUhKdmVIbEli
M04wQURRQURSRy9GQUFBQUFBQUFBQUFYMmx0Y0Y5ZmEwTkdVM1J5WldGdFVISnZjR1Z5ZEhsRApU
MDVPUlVOVVVISnZlSGxRYjNKMEFEd0FEUkcvRkFBQUFBQUFBQUFBWDJsdGNGOWZhME5HVTNSeVpX
RnRVSEp2Y0dWeWRIbERUMDVPClJVTlVRV1JrYVhScGIyNWhiRWhsWVdSbGNuTUFNd0FORWI4VUFB
QUFBQUFBQUFCZmFXMXdYMTlyUTBaVGRISmxZVzFRY205d1pYSjAKZVVOUFRrNUZRMVJTWlhOd2Iy
NXpaUUFSQUFjUnRCUUFBQUVBUTBOZlEwUkZRMHdBRlFBSEViUVVBQUFDQUVORFgwMVRRMUJCVTBO
QgpUQUFTQUFjUnRCUUFBQUlBUTBOZlVFRlRRMEZNQUJVQUJ4RzBGQUFBQXdCRFExOU5RVU5RUVZO
RFFVd0FFd0FIRWJRVUFBQUVBRU5EClgxTlVSRU5CVEV3QUZnQUhFYlFVQUFBRkFFTkRYMFpRUmtG
VFZFTkJURXdBRXdBSEViUVVBQUFHQUVORFgxTlpVME5CVEV3QUZBQUgKRWJRVUFBQUhBRU5EWDAx
UVYwTkVSVU5NQUJVQUJ4RzBGQUFBQ0FCRFExOU5VRmRRUVZORFFVd0FFd0FIRVlvV0FBQUJBRlpC
VWw5VApWRUZVU1VNQUlBQUhFWjhTQUFBQkFFTkdRbmwwWlU5eVpHVnlUR2wwZEd4bFJXNWthV0Z1
QUJNQUNCRzZGZ0FBZEdGblVFRlNRVTFFClJWTkRBQlVBQ0JHK0ZnQUFkR0ZuVUVGU1FVMUVSVk5E
UlZnQUVRQUlFYndXQUFCMFlXZENTVTVFVUZSU0FCUUFDQkc0RmdBQVRGQlEKUVZKQlRVUkZVME5G
V0FBUEFBZ1J0QlFBQUVOQlRFeERUMDVXQUE0QUNCRzhGZ0FBUWtsT1JGQlVVZ0FQQUFnUjh4VUFB
RlJaVUVWTApTVTVFQUE4QUNCRkVGZ0FBUmxWT1EwdEpUa1FBRUFBSUVib1dBQUJRUVZKQlRVUkZV
ME1BRUFBSUVmNFRBQUJJU1U1VFZFRk9RMFVBCkVnQUlFVDRXQUFCMFlXZFVURWxDUVZSVVVnQVBB
QWdSdEJZQUFFVk1SVTFFUlZOREFBb0FDQkVJRXdBQVUwNUNBQkVBQ0JFVkV3QUEKVmtGU1NVRk9W
RUZTUndBVkFBZ1JYaFlBQUZOQlJrVkJVbEpCV1VKUFZVNUVBQk1BQ0JGMUFBQUFSbTkxY2tOb1lY
SkRiMlJsQUNJQQpDQkhGRXdBQVEwWkVhV04wYVc5dVlYSjVVbVZzWldGelpVTmhiR3hDWVdOckFC
SUFDQkcwRmdBQWRHRm5SVXhGVFVSRlUwTUFEd0FJCkVXc1dBQUJFUlZORFMwbE9SQUFOQUFnUkVR
QUFBRk5KYm5ReE5nQVBBQWdSWlJZQUFGUlpVRVZFUlZOREFCTUFDQkdsRmdBQWRHRm4KUlZoRFJW
QkpUa1pQQUJFQUNCRzVGUUFBZEdGblUxUkJWRk5VUndBUUFBZ1JJZ0FBQUZWTVQwNUhYMUJVVWdB
T0FBZ1JpaFlBQUZaQgpVa3RKVGtRQUV3QUlFYkVXQUFCRFJrSnZiMnhsWVc1U1pXWUFEd0FJRVhF
RUFBQk1VRTlNUlZOVVVnQVNBQWdSckJZQUFIUmhaMFpWClRrTkVSVk5EQUF3QUNCRWlBQUFBVlV4
UFRrY0FFUUFJRVdBV0FBQjBZV2RKUkV4RVJWTkRBQ29BQ0JISEV3QUFRMFpFYVdOMGFXOXUKWVhK
NVEyOXdlVVJsYzJOeWFYQjBhVzl1UTJGc2JFSmhZMnNBQ2dBSUViZ1NBQUJKU1VRQUhRQUlFZHdU
QUFCRFJraFVWRkJEYjI5cgphV1ZUZEc5eVlXZGxVbVZtQUE4QUNCRVRBQUFBVEU5T1IweFBUa2NB
R1FBSUViQVdBQUIwWVdkQmNIQnNhV05oZEdsdmJsUjVjR1VBCkVBQUlFYWdVQUFCMFlXZERRVUpU
VkZJQUZnQUlFWEFTQUFCRFJrUnBZM1JwYjI1aGNubFNaV1lBR2dBSUVhNFdBQUJRU1VSTlUwbGYK
VTFSQlZGVlRYMVpCVEZWRkFCTUFDQkVoQUFBQVVGSlBVRlpCVWw5UVFVUXpBQTBBQ0JFREJBQUFU
RkJXVDBsRUFBd0FDQkY5RXdBQQpYMDFCVkRJQUR3QUlFYXdXQUFCR1ZVNURSRVZUUXdBUkFBZ1J5
aFFBQUhSaFowTkJRMHhUU1VRQUd3QUlFVm9VQUFCRFFWSmxibVJsCmNrOUhURU5oYkd4aVlXTnJj
d0FQQUFnUnp4UUFBSFJoWjBOQlJFSk1BQTRBQ0JGMEFBQUFRMGRGY25KdmNnQVlBQWdSNkJBQUFH
eHYKWTJGc1pXbHVabTlmYzNSeWRXTjBBQTBBQ0JFaUFBQUFVMGxhUlY5VUFCUUFDQkhzRXdBQVEw
WlZVa3hEWVdOb1pWSmxaZ0FQQUFnUgpJZ0FBQUVoU1JVWlVXVkJGQUJzQUNCRjFBQUFBUTBkR2Iy
NTBVbVZ1WkdWeWFXNW5VM1I1YkdVQUN3QUlFVVlXQUFCRFFWVkNBQXdBCkNCRnhBQUFBVlVOb1lY
SUFFZ0FJRWZNVkFBQjBZV2RVV1ZCRlMwbE9SQUFTQUFnUmF4WUFBSFJoWjBSRlUwTkxTVTVFQUE0
QUNCRisKRlFBQWRHRm5RMEZEV1FBU0FBZ1JJUUFBQUVOSFJtOXVkRWx1WkdWNEFCWUFDQkVkRkFB
QVEwWlNaV0ZrVTNSeVpXRnRVbVZtQUJFQQpDQkU4RmdBQWRHRm5VMWxUUzBsT1JBQVhBQWdSdHhV
QUFFSkpWRTFCVUVsT1JrOUlSVUZFUlZJQUZnQUlFYWtXQUFCMFlXZFlUVXhGClRVVk5YMVJaVUVV
QURnQUlFWEVBQUFCUFRFVkRTRUZTQUJFQUNCR0tGZ0FBZEdGblZrRlNTMGxPUkFBUUFBZ1JweFlB
QUY5RFZsSmwKZEhWeWJnQU9BQWdSZEFBQUFHVnljbTV2WDNRQUVBQUlFYVVXQUFCRldFTkZVRWxP
Ums4QURRQUlFYzBRQUFCTVVFTlRWRklBRUFBSQpFZjBVQUFCZlJrbE1SVlJKVFVVQUVBQUlFU01B
QUFCVlRFOU9SMHhQVGtjQURnQUlFWXdXQUFCV1FWSkVSVk5EQUJBQUNCSGFFQUFBClRGQkRUMHhG
VTFSU0FBd0FDQkZ3QkFBQVRGQlRWRklBS1FBSUVjY1RBQUJEUmtGc2JHOWpZWFJ2Y2tOdmNIbEVa
WE5qY21sd2RHbHYKYmtOaGJHeENZV05yQUJzQUNCR1FGQUFBVjB0RFJsVlNURU55WldSbGJuUnBZ
V3hTWldZQURBQUlFYThTQUFCc1kyOXVkZ0FQQUFnUgpvQllBQUVsVmJtdHViM2R1QUE4QUNCRVNB
QUFBVFVWTlFrVlNTVVFBRXdBSUVaQVdBQUIwWVdkQlVsSkJXVVJGVTBNQUhRQUlFZElUCkFBQkRS
azExZEdGaWJHVkVhV04wYVc5dVlYSjVVbVZtQUEwQUNCRkJBQUFBUkU5VlFreEZBQkVBQ0JHTUZn
QUFkR0ZuVmtGU1JFVlQKUXdBSkFBZ1JmeFlBQUVOWkFCUUFDQkdIRmdBQWRHRm5Ra2xPUkZOVVVr
bE9Sd0FSQUFnUmhSWUFBRlZNYVc1bFFuSmxZV3NBRGdBSQpFZnNWQUFCRVJVTkpUVUZNQUJFQUNC
RWlBQUFBUTBaSVlYTm9RMjlrWlFBaEFBZ1IwUk1BQUVOR1JHbGpkR2x2Ym1GeWVWWmhiSFZsClEy
RnNiRUpoWTJ0ekFCVUFDQkhtRUFBQWNIUm9jbVZoWkcxaVkybHVabThBRGdBSUVkb1FBQUJNVUVO
WFUxUlNBQTRBQ0JFOEZnQUEKVTFsVFMwbE9SQUFMQUFnUnFoUUFBRU5CVlV3QUR3QUlFVUFXQUFC
Q1UxUlNRa3hQUWdBTkFBZ1JDUlVBQUhSaFowTkJTQUFRQUFnUgpVQklBQUVOR1JHRjBZVkpsWmdB
T0FBZ1JkUUFBQUhKemFYcGxYM1FBRmdBSUVZTVdBQUJmZEdGblVWVkZVbGxQVUZSSlQwNEFEUUFJ
CkVYVUFBQUJWU1c1ME16SUFGd0FJRWFzU0FBQmZRMGRKYm5SbGNtNWhiRVZ5Y205eUFBd0FDQkYv
RmdBQWRHRm5RMWtBRUFBSUVYMFcKQUFCSlZIbHdaVU52YlhBQUN3QUlFWFFBQUFCQ1QwOU1BQjBB
Q0JIMUV3QUFRMFpOZFhSaFlteGxWVkpNVW1WeGRXVnpkRkpsWmdBTwpBQWdScnhVQUFIUmhaME5C
VlVrQUZnQUlFZklUQUFCRFJsVlNURkpsY1hWbGMzUlNaV1lBRkFBSUViNFZBQUIwWVdkRFFVWkpU
RVZVClNVMUZBQlFBQ0JHN0ZRQUFkR0ZuUkVsVFVGQkJVa0ZOVXdBVEFBZ1JFUUFBQUZaQlVrbEJU
bFJmUWs5UFRBQUxBQWdSSWdBQUFFeEQKU1VRQUV3QUlFYk1WQUFCMFlXZFRRVVpGUVZKU1FWa0FF
Z0FJRVEwVEFBQlFVazlRVmtGU1NVRk9WQUFVQUFnUjJCUUFBRU5CVUZKUApVRlpCVWtsQlRsUUFF
Z0FJRVJZUUFBQkRSbE4wY21sdVoxSmxaZ0FRQUFnUmFSWUFBSFJoWjFSWlUxQkZRd0FTQUFnUlpS
WUFBSFJoCloxUlpVRVZFUlZOREFCSUFDQkg1RlFBQWRHRm5RMHhKVUVSQlZFRUFEUUFJRWVvVkFB
QkRRVVJCVkVVQUh3QUlFY3dUQUFCRFJrUnAKWTNScGIyNWhjbmxJWVhOb1EyRnNiRUpoWTJzQUVR
QUlFUThWQUFCMFlXZFNSMEpSVlVGRUFCVUFDQkZRRXdBQVRGQkhURmxRU0UxRgpWRkpKUTFNQURR
QUlFY01VQUFCMFlXZERRVU1BRUFBSUVXNFJBQUJEUmxSNWNHVlNaV1lBRndBSUVhUVJBQUJEUmxO
M1lYQndaV1JHCmJHOWhkRE15QUJNQUNCRjZFd0FBUjB4WlVFaE5SVlJTU1VOVEFBOEFDQkVoQUFB
QWRXbHVkREUyWDNRQURRQUlFUk1BQUFCMGFXMWwKWDNRQURnQUlFVmNUQUFCSVFrbFVUVUZRQUE0
QUNCRjBBQUFBYVc1ME16SmZkQUFPQUFnUllCWUFBRWxFVEVSRlUwTUFFZ0FJRWZjVgpBQUIwWVdk
VVdWQkZRVlJVVWdBWUFBZ1JYaFlBQUhSaFoxTkJSa1ZCVWxKQldVSlBWVTVFQUJJQUNCRWlGQUFB
UTBaT2RXMWlaWEpTClpXWUFEZ0FJRWNFVUFBQjBZV2RDVEU5Q0FCRUFDQkZjRmdBQWRHRm5WVkpN
V2s5T1JRQU9BQWdSQXdRQUFFaEhSRWxQUWtvQUZRQUkKRVRvV0FBQmZURUZTUjBWZlNVNVVSVWRG
VWdBakFBZ1JXaFlBQUZKbGNHeGhZMlZ6UTI5eVNHUnlUblZ0WlhKcFkwUmxabWx1WlhNQQpGZ0FJ
RWVrVkFBQmZWVXhCVWtkRlgwbE9WRVZIUlZJQUlBQUlFUThVQUFCRFJsVlNURU55WldSbGJuUnBZ
V3hUZEc5eVlXZGxVbVZtCkFCZ0FDQkZZRmdBQVNWTmxjWFZsYm5ScFlXeFRkSEpsWVcwQURnQUlF
VUFBQUFCRFIwWnNiMkYwQUE4QUNCRjFBQUFBZFdsdWRETXkKWDNRQUR3QUlFU01BQUFCMWFXNTBO
alJmZEFBVkFBZ1JRUUFBQUVOR1ZHbHRaVWx1ZEdWeWRtRnNBQTRBQ0JGSUZnQUFWa0ZTUlU1VgpU
UUFNQUFnUkFoQUFBRXhEWDBsRUFBMEFDQkc5RkFBQWRHRm5RMEZKQUF3QUNCRzZGQUFBVUU5SlRs
UUFEZ0FJRVVZV0FBQjBZV2REClFWVkNBQk1BQ0JFcEVBQUFRMGREYjI1MFpYaDBVbVZtQUJJQUNC
RkVGZ0FBZEdGblJsVk9RMHRKVGtRQURnQUlFZG9RQUFCUVExVlgKVTFSU0FCSUFDQkh1RWdBQVRG
QlRRVVpGUVZKU1FWa0FEZ0FJRVNBQUFBQkNiMjlzWldGdUFCUUFDQkY2RXdBQVgwZE1XVkJJVFVW
VQpVa2xEVXdBT0FBZ1JDQkFBQUVOSFVHOXBiblFBRWdBSUVSRVZBQUJEVmxScGJXVlRkR0Z0Y0FB
U0FBZ1JRaFlBQUY5VlVreGFUMDVGClVrVkhBQjhBQ0JIT0V3QUFRMFpFYVdOMGFXOXVZWEo1UzJW
NVEyRnNiRUpoWTJ0ekFBNEFDQkVnQUFBQWRXbHVkRGhmZEFBV0FBZ1IKTVJRQUFFTkJTVzFoWjJW
UmRXVjFaVkpsWmdBU0FBZ1JRQllBQUhSaFowSlRWRkpDVEU5Q0FBOEFDQkUrRmdBQVZFeEpRa0ZV
VkZJQQpGQUFJRVRvV0FBQk1RVkpIUlY5SlRsUkZSMFZTQUJNQUNCRTJGZ0FBU1VWdWRXMVRWRUZV
VTFSSEFBNEFDQkVoQUFBQVZrRlNWRmxRClJRQVFBQWdSZEFBQUFIQjBjbVJwWm1aZmRBQU9BQWdS
QlJBQUFFTkdVbUZ1WjJVQUR3QUlFU1VXQUFCSlZIbHdaVXhwWWdBTkFBZ1IKK3hVQUFIUmhaMFJG
UXdBaEFBZ1J4aFFBQUVOR1FXeHNiMk5oZEc5eVVtVnNaV0Z6WlVOaGJHeENZV05yQUIwQUNCR0hF
Z0FBZEdoeQpaV0ZrYkc5allXeGxhVzVtYjNOMGNuVmpkQUFQQUFnUitSVUFBRU5NU1ZCRVFWUkJB
QThBQ0JIM0ZRQUFWRmxRUlVGVVZGSUFFUUFJCkVSVVRBQUIwWVdkV1FWSkpRVTVVQUEwQUNCRVNB
QUFBUkVsVFVFbEVBQTBBQ0JFaEFBQUFWVk5JVDFKVUFCY0FDQkc3RXdBQVEwWlYKVWt4U1pYTndi
MjV6WlZKbFpnQWhBQWdSd3hNQUFFTkdSR2xqZEdsdmJtRnllVkpsZEdGcGJrTmhiR3hDWVdOckFB
d0FDQkVEQkFBQQpVRlpQU1VRQUVBQUlFZW9WQUFCMFlXZERRVVJCVkVVQURnQUlFZjRUQUFCSVRV
OUVWVXhGQUFvQUNCSFpGQUFBUTBGTUFCQUFDQkhnCkVBQUFYMnh2WTJGc1pWOTBBQTBBQ0JGM0V3
QUFRa2xVVFVGUUFBMEFDQkYxQUFBQVQxTlVlWEJsQUFzQUNCRjlFd0FBVFVGVU1nQVcKQUFnUlp4
UUFBRU5CVW1WdVpHVnlRMjl1ZEdWNGRBQVNBQWdSTlJNQUFFTldVMDFRVkVWVWFXMWxBQTRBQ0JI
TkZBQUFkR0ZuUTBGVgpTQUFWQUFnUjZSVUFBRlZNUVZKSFJWOUpUbFJGUjBWU0FCSUFDQkhsRlFB
QVNWSmxZMjl5WkVsdVptOEFGd0FJRVNvVUFBQkRSa2hVClZGQk5aWE56WVdkbFVtVm1BQTRBQ0JF
REZBQUFSa0ZTVUZKUFF3QU5BQWdSTXhFQUFHeGthWFpmZEFBTkFBZ1JJUUFBQUhkcGJuUmYKZEFB
T0FBZ1JyQlFBQUVOQlUwTlBSRVVBRFFBSUVmOFVBQUJmUmtsWVJVUUFEUUFJRWZJUUFBQmZhVzlp
ZFdZQUR3QUlFU0lBQUFCRApUMHhQVWxKRlJnQWlBQWdST1JRQUFFTkJTVzFoWjJWUmRXVjFaVkps
YkdWaGMyVkRZV3hzWW1GamF3QVhBQWdSckJFQUFFTkdVM2RoCmNIQmxaRVpzYjJGME5qUUFKQUFJ
RVRrVUFBQjNhME5CU1cxaFoyVlJkV1YxWlZKbGJHVmhjMlZEWVd4c1ltRmphd0FRQUFnUmR4TUEK
QUhSaFowSkpWRTFCVUFBVUFBZ1JUQlFBQUZkTFEwRkRSa052Ym5SbGVIUUFGQUFJRVo4U0FBQmZY
ME5HUW5sMFpVOXlaR1Z5QUF3QQpDQkVnQUFBQVZVTklRVklBRVFBSUVYUVRBQUJDU1ZSTlFWQkpU
a1pQQUE0QUNCRVNBQUFBUTBaSmJtUmxlQUFSQUFnUnZoVUFBRU5CClJrbE1SVlJKVFVVQUVRQUlF
YnNWQUFCRVNWTlFVRUZTUVUxVEFCc0FDQkVhRUFBQVEwWlRkSEpwYm1kSmJteHBibVZDZFdabVpY
SUEKRUFBSUVUc1RBQUJEUjFOQ2IzVnVaSE1BRUFBSUVROFRBQUJNVUZaQlVrbEJUbFFBRUFBSUVY
VUFBQUJWVkVZek1rTm9ZWElBREFBSQpFU0lBQUFCRVYwOVNSQUFPQUFnUmNBUUFBSFpoWDJ4cGMz
UUFFUUFJRVZvVkFBQkpUbFpQUzBWTFNVNUVBQTRBQ0JHNUZRQUFVMVJCClZGTlVSd0FWQUFnUlNC
UUFBRU5CVW1WdVpHVnlWWEJrWVhSbEFBOEFDQkV0RkFBQVEwWlZVa3hTWldZQURRQUlFUU1FQUFC
SVFVNUUKVEVVQUdnQUlFYmNWQUFCMFlXZENTVlJOUVZCSlRrWlBTRVZCUkVWU0FCSUFDQkYvRlFB
QWRHRm5RMEZNVUZkVFZGSUFEZ0FJRVVBQQpBQUJHYkc5aGRETXlBQXNBQ0JFaEFBQUFWMDlTUkFB
TEFBZ1JJQUFBQUVKWlZFVUFJQUFJRWNvVEFBQkRSa1JwWTNScGIyNWhjbmxGCmNYVmhiRU5oYkd4
Q1lXTnJBQXdBQ0JIN0ZBQUFRMEZHVEZRQUZBQUlFYlVWQUFCZmRHRm5VRk5WUVVOVVNVOU9BQk1B
Q0JFaEFBQUEKVUZKUFVGWkJVbDlRUVVReEFBNEFDQkY4RlFBQVEwRk1VRk5VVWdBVkFBZ1J2QkVB
QUVOR1FXeHNiMk5oZEc5eVVtVm1BQkVBQ0JGQQpFd0FBVlVWeWNtOXlRMjlrWlFBTUFBZ1JjUUFB
QUZkRFNFRlNBQm9BQ0JHWUVnQUFRMGRUZEhsc1pVUnlZWGRQY21SbGNtbHVad0FlCkFBZ1JGUlFB
QUVOR1ZWSk1VSEp2ZEdWamRHbHZibE53WVdObFVtVm1BQkFBQ0JHekZRQUFVMEZHUlVGU1VrRlpB
QkVBQ0JFVEFBQUEKWDE5MGFXMWxOalJmZEFBUUFBZ1JzQlFBQUhSaFowTkJRazlQVEFBTEFBZ1Jy
eFVBQUVOQlZVa0FJQUFJRWNVVUFBQkRSa0ZzYkc5agpZWFJ2Y2xKbGRHRnBia05oYkd4Q1lXTnJB
QThBQ0JHdEZRQUFTVk4wYjNKaFoyVUFEd0FJRVNJQUFBQkRSbFI1Y0dWSlJBQVJBQWdSCmdSVUFB
RlZDYkc5amEwTnZaR1VBREFBSUVSRUFBQUJUU0U5U1ZBQUxBQWdSRWdBQUFFeFBUa2NBRmdBSUVl
RVRBQUJEUmtoVVZGQkQKYjI5cmFXVlNaV1lBQ1FBSUVaSVJBQUIwYlFBUkFBZ1IrQk1BQUVOR1FY
SnlZWGxTWldZQUl3QUlFUWNVQUFCSVZGUlFRMjl1Ym1WagpkR2x2YmtOaFkyaGxUR2x0YVhSTFpY
bHpBQmtBQ0JGR0ZBQUFRMEZTWlc1a1pYSlBSMHhEYjI1MFpYaDBBQXdBQ0JGQUFBQUFSa3hQClFW
UUFEd0FJRVg4VkFBQkRRVXhRVjFOVVVnQU5BQWdSY1FRQUFGQlZWMU5VVWdBTEFBZ1JmaFVBQUVO
QlExa0FKd0FJRWVRVEFBQkQKUmtoVVZGQkRiMjlyYVdWVGRHOXlZV2RsUm1sc2RHVnlVSEp2WTFC
MGNnQVRBQWdSQXdRQUFFTkhVMUpsWjJsdmJrOWlhZ0FiQUFnUgpkUUFBQUVOSFJtOXVkRk50YjI5
MGFHbHVaMU4wZVd4bEFCQUFDQkZlRXdBQVNFSkpWRTFCVUY5ZkFCa0FDQkVURkFBQVEwWlZVa3hE
CmNtVmtaVzUwYVdGc1VtVm1BQkVBQ0JGOEZRQUFkR0ZuUTBGTVVGTlVVZ0FRQUFnUmVoVUFBRWxV
ZVhCbFNXNW1id0FMQUFnUlFRQUEKQUVSQlZFVUFEUUFJRVhFRUFBQk1VRmRUVkZJQUdBQUlFZXdT
QUFCTVVGWkZVbE5KVDA1RlJGTlVVa1ZCVFFBT0FBZ1JOeFVBQUVsVApkSEpsWVcwQURRQUlFWFVB
QUFCemFYcGxYM1FBRGdBSUVSTUFBQUJwYm5RMk5GOTBBQThBQ0JFQ0VBQUFkR0ZuVEVOZlNVUUFG
QUFJCkVYUVRBQUIwWVdkQ1NWUk5RVkJKVGtaUEFBc0FDQkVERlFBQVVrVkRWQUFWQUFnUkRSTUFB
SFJoWjFCU1QxQldRVkpKUVU1VUFBNEEKQ0JFRkVBQUFRMFpTWVc1blpRQVhBQWdScEJFQUFFTkdV
M2RoY0hCbFpFWnNiMkYwTXpJQUZ3QUlFYXdSQUFCRFJsTjNZWEJ3WldSRwpiRzloZERZMEFCOEFD
QkhPRXdBQVEwWkVhV04wYVc5dVlYSjVTMlY1UTJGc2JFSmhZMnR6QUNFQUNCSFJFd0FBUTBaRWFX
TjBhVzl1CllYSjVWbUZzZFdWRFlXeHNRbUZqYTNNQUd3QUlFUm9RQUFCRFJsTjBjbWx1WjBsdWJH
bHVaVUoxWm1abGNnQVNBQWdSRVJVQUFFTlcKVkdsdFpWTjBZVzF3QUFvQUNCRkhFd0FBU0VSREFC
RUFDQkhXRkFBQVEwRkNVMVJTUWt4UFFnQWRBQWdSQXdRQUFFTkhVMUpsWjJsdgpia1Z1ZFcxbGNt
RjBiM0pQWW1vQURnQUlFUThWQUFCU1IwSlJWVUZFQUJBQUNCRU5GUUFBVlZCeWIzQmxjblI1QUJr
QUNCRUxGUUFBCmRHRm5WbVZ5YzJsdmJtVmtVM1J5WldGdEFBb0FDQkVKRlFBQVEwRklBQXdBQ0JH
NEVnQUFYMGRWU1VRQURnQUlFUU1WQUFCMFlXZFMKUlVOVUFBd0FDQkgvRkFBQVJrbFlSVVFBRFFB
SUVRc1FBQUJEUjFOcGVtVUFEd0FJRWYwVUFBQkdTVXhGVkVsTlJRQVBBQWdSK3hRQQpBSFJoWjBO
QlJreFVBQlFBQ0JIUkZBQUFkR0ZuUTBGRFRFbFFSRUZVUVFBWUFBZ1JFUkFBQUVOSFFXWm1hVzVs
VkhKaGJuTm1iM0p0CkFCUUFDQkg1RkFBQWRHRm5Ra2xPUkZOVVFWUlZVd0FPQUFnUkZSTUFBRlpC
VWtsQlRsUUFEZ0FJRVNFQUFBQkRSMGRzZVhCb0FCQUEKQ0JIM0ZBQUFTVVJwYzNCaGRHTm9BQlVB
Q0JIZEZBQUFkR0ZuUkU5TlRtOWtaVlI1Y0dVQUZnQUlFZHNVQUFCMFlXZFRhSFYwWkc5MwpibFI1
Y0dVQURBQUlFUklBQUFCVFEwOUVSUUFOQUFnUjJSUUFBSFJoWjBOQlRBQVhBQWdSMkJRQUFIUmha
ME5CVUZKUFVGWkJVa2xCClRsUUFDd0FJRVhFRUFBQkNVMVJTQUFzQUNCSHlFQUFBUmtsTVJRQVFB
QWdSalJNQUFFTkhSbTl1ZEZKbFpnQVVBQWdSMWhRQUFIUmgKWjBOQlFsTlVVa0pNVDBJQUNnQUlF
WFFBQUFCSlRsUUFGQUFJRWRNVUFBQjBZV2REU0VGT1IwVkxTVTVFQUJFQUNCSFJGQUFBUTBGRApU
RWxRUkVGVVFRQU1BQWdSenhRQUFFTkJSRUpNQUJVQUNCRkZGQUFBUTBGRFJrTnZiblJsZUhSU1pX
WUFDd0FJRWMwVUFBQkRRVlZJCkFBc0FDQkc0RWdBQVIxVkpSQUFPQUFnUnloUUFBRU5CUTB4VFNV
UUFKd0FJRWNnVUFBQkRSa2hVVkZCRGIyOXJhV1ZUZEc5eVlXZGwKUm1sc2RHVnlRMjl1ZEdWNGRB
QUxBQWdSY0FBQUFFTklRVklBREFBSUVTQUFBQUJWU1c1ME9BQVRBQWdSVlJRQUFFTkJRMFpNWVhs
bApjbEpsWmdBTUFBZ1JTeE1BQUVoRVExOWZBQW9BQ0JIREZBQUFRMEZEQUFzQUNCSEJGQUFBUWt4
UFFnQVNBQWdSQVJRQUFFaEpUbE5VClFVNURSVjlmQUE0QUNCRWhBQUFBVlc1cFEyaGhjZ0FLQUFn
UnZSUUFBRU5CU1FBTUFBZ1J1QklBQUVOTVUwbEVBQk1BQ0JFaEFBQUEKVUZKUFVGWkJVbDlRUVVR
eUFBNEFDQkV6RVFBQVgyeGthWFpmZEFBZkFBZ1J2QlFBQUY5ZlRVbEVURjlKUTI5a1pVbHVjM1Jo
Ykd4ZgpNREF3TVFBUEFBZ1J1aFFBQUhSaFoxQlBTVTVVQUE0QUNCRVNBQUFBU0ZKRlUxVk1WQUFM
QUFnUmRRQUFBRlZKVGxRQUVnQUlFYlFVCkFBQjBZV2REUVV4TVEwOU9WZ0FlQUFnUnNoUUFBRjkw
WVdkSlRsUkZVazVGVkVaRlFWUlZVa1ZNU1ZOVUFBMEFDQkd3RkFBQVEwRkMKVDA5TUFCWUFDQkd1
RkFBQVgzUmhaMUJCVWxORlFVTlVTVTlPQUE0QUNCRkJBQUFBUm14dllYUTJOQUFSQUFnUnRSTUFB
RU5IUTI5cwpiM0pTWldZQUZRQUlFZVFRQUFCd2RHaHlaV0ZrYkc5amFXNW1id0FSQUFnUnJCUUFB
SFJoWjBOQlUwTlBSRVVBRGdBSUVhb1VBQUIwCllXZERRVlZNQUEwQUNCR29GQUFBUTBGQ1UxUlNB
QTBBQ0JFT0VBQUFRMGRTWldOMEFBQUFBUFFBQUFEb0Z3QUFBUUFBQUJBQkxlVWkKd2YzYThSZzZB
ODRkZW5mWWdBQUFQQUFBQUJBQllFL2IvTjBWQXVZd2ZsYU9vdmNMYlFBQWJBQUFBQkFCMWU5Q2pV
NDExdDZldG9Jdgo5MzFmeUFBQW5nQUFBQkFCY1ZVbjNpcFpxSnRxMFdSMVh1bmpFUUFBMHdBQUFC
QUJDVWdHR09UM3FzOSttc3o2Ulc3SER3QUFDUUVBCkFCQUJMMSs0OHJMSU4zaTFQc1pEZ3FVeXBB
QUFQQUVBQUJBQjRUb29iN0UxQi9HM3grQ1l6SjRtc1FBQWpRRUFBQkFCL1hlcm8rcjEKN2I5aHla
OVFDWHArYUFBQTB3RUFBQkFCODU2VGt5dmhWSjVHZ2I0c3NQd2w5Z0FBSmdJQUFCQUJLQWl6bVhS
T2NKSVA3NjNHa21RdwpvUUFBWEFJQUFCQUJsZTB1SmFBWGNsN2hoWE9qU0tsTXBnQUFqUUlBQUJB
QmhPb2IyaWttdVR0OUN6RnZFdUhocGdBQXdRSUFBQkFCCnYwS1hNY2JFRTNOOHFTOEU1ei9rekFB
QUV3TUFBQkFCNDJGUGZBOUZHTjRYdVhGMnVuazNLd0FBUkFNQUFCQUJCZHlZZFJkZGpyTW8KQitO
a2p1NS95Z0FBY3dNQUFCQUJXZElHSXFKVjIvNDFHY1FKVWdUWHNBQUF4Z01BQUJBQk5wamxvcC8z
S3g2cU9XTjhmZ0thb0FBQQorZ01BQUJBQkxxdjkwN2RqUDR3UDRZcU45MWtROUFBQUtnUUFBQkFC
aFZYL0dGcnIwbkpQaE12RCtrQjdhQUFBV3dRQUFCQUJVN0ZjCjM3cXlzZzQ2ZmJSY1UxemZrd0FB
cmdRQUFCQUJEN3dUdG8yekViK3M1bzNZV1ZnNDhBQUE1d1FBQUJBQnhoQkFhMWdJckhWSVZWT1QK
d3VuanlBQUFGZ1VBQUJBQjMreUxNbS9DSFpxa0R1MGs2c3R3U0FBQVRRVUFBQkFCaldwbHN5N3Yy
WjBLbzdQM05pUHQ4UUFBa2dVQQpBQkFCZE01ZFRWR3E2QmhlMFdVVmxwQVIvQUFBNUFVQUFCQUJF
NXJzOFZhTDBUUUd1cWFYbDBXZk5RQUFOZ1lBQUJBQmM0RU1DbzZVCmxsUUNxY1pHbVRveml3QUFj
Z1lBQUJBQkFCaXkrM1dMU1RWSnZZdkRPYlpJZlFBQXFRWUFBQkFCVzZpaU9RUk11ME1PbTRnbHc5
dGQKbGdBQTRnWUFBQkFCVThFVmEyWUpkMlFLTklpeGNiM2dFUUFBR0FjQUFCQUJSNFpSWFJXeU1B
RWF2MmIvMGJsWTFBQUFSUWNBQUJBQgpCdEgwSnRDUHdFRmtEakFxbXNISkxRQUFpZ2NBQUJBQlUr
ZDluTUp4dkJPa1k3a2lUWUZvVFFBQXd3Y0FBQkFCNFNQSkZBSE1TMjVyCmdGQXhiRkRPemdBQTlR
Y0FBQkFCRFJGbllrTzRqdWo5OEVPSGl6QUpvUUFBTVFnQUFCQUJaeTgwTlVJUmFaQ2VZZ1dya3gz
WTF3QUEKWlFnQUFCQUJ0eFJaMElWZ1Y5VkJ1RFdUSDFVRGR3QUF0QWdBQUJBQjlYUTE1Y3NEc3dt
UGFHT2x0STZ4QmdBQUJna0FBQkFCaE92RApGK0t6WTZ2V1BxSEpOTVNlZWdBQU9na0FBQkFCeWZ6
VzJJbVFtMmlBVkNDOEM4TXFBQUFBYlFrQUFCQUJPY3BSZDVmMi9ieHozbndXCkxKaXozQUFBb3dr
QUFCQUJXZnVOVTAzU0hoWUV3bGhPZDRQdjFnQUE2QWtBQUJBQmdwTC9vcWx5c0NaRU1UMC91dGlM
SkFBQU53b0EKQUJBQlEwMllSaTgvRWNyc044WkJ0aml5VGdBQWlnb0FBQkFCY2F3RXZtUEY0NFFI
V2JxRzdWMVQ2UUFBc3dvQUFCQUI4ZDgwa05XTgovWTRHY3ZKTlBWeUFJd0FBQlFzQUFCQUJnMUxZ
blRUYkVlam42ZjFidTBwVjhBQUFWUXNBQUJBQkhXNmR3ZDU1NUl6NkoyRGlxdDJXCkdnQUFnQXNB
QUJBQmVlTWhrWnB1eVE2dkE5aHRWQUFhclFBQXhRc0FBQkFCbWNOU1hZajVVWWhYLy9UWWVwTW9E
d0FBOFFzQUFCQUIKMzlPSGk4SnltaUh2WU0vVlgwcmtGQUFBTmd3QUFCQUJIMHhRVitrSTd3QWh4
emd1MXRNaERnQUFiUXdBQUJBQnI3eGdwd3Vxc2FUTwo0djlKYXllR2R3QUFvQXdBQUJBQjBMejlY
R0VRdkp2d3B3QlRzUFNCZlFBQTVBd0FBQkFCb25ETDFTV1ZtMUVlZ2YwZHNVVVhCQUFBCkdnMEFB
QkFCdHBEc2dHU0xCS3JLcXdYcEpNenNKUUFBYUEwQUFCQUJrNXNiWHNWZSt5VStKTlRBOVVVTXRn
QUF1ZzBBQUJBQlN3SVIKK2UzdFBjcHE5Wkx6TDE5RDdBQUE5dzBBQUJBQmlTZHJITmF5UXRacUlO
cWwrVk1nZ2dBQVNRNEFBQkFCaElqM3lOSEFsVXBiNVczWgpQbFJlaFFBQWdRNEFBQkFCRXFheVNj
RE1ZUHZNSk4zcFBSK3lxZ0FBeEE0QUFCQUJMNFE4Y05hTTBwM0E0WGt3YnBRNzRnQUFLZzhBCkFC
QUJoZnNFMEptVllaaVZ2b21ka2I2aFFnQUFXZzhBQUJBQm9HMkVhUEpNTGU2QXZmb1VVbXR3SVFB
QWtBOEFBQkFCKzZNeVBTeFAKeUo0QlVybFpiWFk1emdBQXdROEFBQkFCcElKZUMvN29YMmkwK21E
d2pXVmFRUUFBOUE4QUFCQUJ6TTVha21VNkJDV1lKWkVTZlBxMgpId0FBS1JBQUFCQUJNN21ITVFO
V0t1alU4aTlMMzJrcGp3QUFZaEFBQUJBQmVqL3hFRWhGMEVJOWpZOWErNVhmZVFBQWxSQUFBQkFC
ClpVdWhaQnBBWEJpQlJGN3lBZVJlZVFBQXpoQUFBQkFCTVFkb3VOaTBuaE5uVWxiSDlQZVhjUUFB
QVJFQUFCQUJHTm9tTmU2QkhjbGYKbzhiK2VLaVlQZ0FBT1JFQUFCQUI1aTEyUDlVVVFoeTZsTC95
cG1JdWZBQUFhUkVBQUJBQlBiVnlsUTZUTlRpSzNPZEowd2RlU0FBQQp2QkVBQUJBQkJoNzNIeVgz
RjVaSHA5SHNadUpwZlFBQTV4RUFBQkFCbzJPcGV3bWtZbGRKRU9TZDI3NU9pZ0FBRkJJQUFCQUJY
TmIzCm9jOVMzNkFoM1RjRE1COE9VUUFBVFJJQUFCQUJoUUlxSFVwTVpJd1BTaStsb2p1bnd3QUFk
aElBQUJBQkxmVFZHcnpkOTRQWlBzRS8KbXRSdXJBQUF5UklBQUJBQnNrQ05vemhmNFdMTk9RcVlo
ZUpnMndBQS94SUFBQkFCTHBzNWVMdXlIWVpYNmkyYW8xSFhXZ0FBVUJNQQpBQkFCQXpRSEJIRmxy
djd1aUpORE5LZFhGd0FBZ2hNQUFCQUJ0UTlmWm9TdHpXZTl6YkkzRGlIK2lBQUF0Uk1BQUJBQkRB
Mi8wbEFtCnhlZmhEbVVyaHZwaDVRQUE2Qk1BQUJBQk0xUXVqdnM0MFYvczdxclg2cXdDSUFBQUV4
UUFBQkFCYnF5QzVVVzUrRkdoZFBkbGFuVncKNGdBQVNCUUFBQkFCSDhiYzg1QXhtYlAxWC81eHFa
VGk4Z0FBZ2hRQUFCQUJyQWJGelNSbFo0S2QxZGtUN2JtWFJ3QUF0UlFBQUJBQgo1UUdrOS9EL0RL
MlZNYjFrbjVIbTdBQUFDQlVBQUJBQjdDTWhKTzJOS1pHNE02Z2F2Q21ha2dBQVB4VUFBQkFCdXU2
UjNzOGxsc3QrCmlRSjJnMDc4UkFBQWRoVUFBQkFCY1g4WUtEQzArMEhYZHl3MmdYaVNHQUFBcVJV
QUFCQUJWWXJFNUwwQlFnaGZ2VjRVVkhUTE5nQUEKOXhVQUFCQUJQZ1ZKSE1sUVpiaS9lZzczWDZN
UklBQUFKQllBQUJBQnEvbkdKMTBpekU4T1RUTDVZSy9rdXdBQVdSWUFBQkFCTlRDVwpXckd1MFBu
M1FuWUpkNERkb2dBQWtoWUFBQkFCTWo1QSs1V0RGeXRuUmc2MDVnT0V2QUFBMmhZQUFCQUIzQ1pz
QUN6c0cyZ1QxRzFvCndNZGJQQUFBS3hjQUFCQUJzYlRhNzNyNURZTmRUUzVLRllvUnRBQUFXaGNB
QUJBQnpCTmFCTWQ3WVBGd2dmNmhjcU9aZndBQXF4Y0EKQUJBQjQ5K2sraUFhUTA4eUZoNS9WemJP
aUFBQTNSY0FBQkFCU3A1bmIzWGkzRHdCaVpPWnZYWkdGQUFBTUJnQUFCQUIxdzRZSGlqVQpUYXBR
TWdJL1VhYzAxd0FBYWhnQUFCQUJ5dDUrWXdpQ256RU1LelE2V2FCU0N3QUFsQmdBQUJBQk1XYm9v
c2FYOEJPazF0TThXTHJLCkZRQUF4UmdBQUJBQkluOCt4NXN1cGdGZUtGS2Qwc0xxS2dBQStCZ0FB
QkFCY1puQVBIZFMzaFcrZ0x5UmlMQzhRQUFBS1JrQUFCQUIKSkNMaVl2bXR1eWZSQlJURnMxRE9G
QUFBWEJrQUFCQUJOZXhlNHpDRzFtWW9qTHZJQWJSU2FBQUFsUmtBQUJBQmNraE5uanlrTlcrTQpB
a1FqOWx5TDZRQUF5QmtBQUJBQmhhZTFSK3ZlWkxCR1o1Z2hDeTFLQUFBQUFob0FBQkFCbFRTY05a
MmdTMUNCejJYZmcwRnA3QUFBCk1Cb0FBQkFCaEtid2Vua2xZejBLZ2Y0WmdrMDR1d0FBZFJvQUFC
QUJhbVVTWG55dGpoTnFnZ0NXSWZNWmJRQUF5eG9BQUJBQlFMMG8KMTNFYUtnR1FjdXRvYUVBMG5n
QUErUm9BQUJBQjc5NXRncmxnZk91UmwxL3VqOGNyV2dBQUd4c0FBQkFCdFlaKzFXTjRHMmZGbEpE
NQpDNDd4Q1FBQVh4c0FBQkFCbHpvMlNldXNDVlZLYmxMQ3R0SDFmd0FBc1JzQUFCQUJrVmVlc1Z6
RWI5UXlwSkoyYWpiL1JRQUEzeHNBCkFCQUI4cWZjbUEvYUh4VHlobEo0SDNrT2F3QUFHaHdBQUJB
QmxxZFozeHV3ajZxelNtOVpBV3VBUkFBQVhod0FBQkFCKzZSY3FHbkYKejA2bDY3SFQ2ZXVVN3dB
QW94d0FBQkFCOFdQSyt1WTdLbk9kdXJ6SStIdHRTUUFBNFJ3QUFCQUJWaHRLSFZPWmZjQkovemxY
bGlqTQpIUUFBRkIwQUFCQUJ2VWxJZnE0Z0w0eU96RElNbE12b0RnQUFaeDBBQUJBQndYKzY0ODI5
cUZDeUVvVUU5RnUrcFFBQXFSMEFBQkFCCktVUmpSZEU2SEV3Tlg1cEo1T2hpb0FBQTNSMEFBQkFC
dVVtOUw3a3FSL2crZnN0MDEzVU9qQUFBQmg0QUFCQUJFN0d5d0RpNWlMcSsKWHlsN2lKTmFMd0FB
Tng0QUFCQUIvSzFDMGFYd0NyeThwV2l2aTl5WmJRQUFhQjRBQUJBQnBEdHN4VTJpL3ZiSWt6RXhS
bnRjV0FBQQpzUjRBQUJBQllBWFk1cVlNdVM2VlFBNVNkSkFuWUFBQThCNEFBQkFCZ1JPR2IrNzNr
T2FPR0VyalROT1pxd0FBUGg4QUFCQUI0bCt4Cjd6dHA2N21RUUlVbElYVndCd0FBa1I4QUFCQUJJ
ZytMblVYendRNUcrNmlNRTVGcFhnQUF4UjhBQUJBQkxxczkzK1hva2xPTW9KbGkKVkxlZjFnQUFG
eUFBQUJBQnN2QjE2SHZITlQvTG95SzN0bE9vSFFBQVp5QUFBQkFCanQ1bUJnbXpYU21NTnFZSzRq
aTVrZ0FBbVNBQQpBQkFCQ21wM09UaUErVDJxNXVPWHlEMnNxQUFBMENBQUFCQUJjZk1HVVEvNy9K
RDdoUzQxeC9ZTGZnQUFBeUVBQUJBQndJSy92K2VWCkxQc2xEbktGZzVlK3F3QUFNeUVBQUJBQldw
UGtuTEhFbjc1NGw3YVhwMFZtbVFBQWJDRUFBQkFCWmtYZ3lVeWo5SlVJZE92MVVvNmYKSGdBQW1p
RUFBQkFCTzVPT3hsbUQ4akNIckZvc095eXlGZ0FBNnlFQUFCQUJjWG1nYnFkVXp3UWNsZ3ByRzN4
dTB3QUFGU0lBQUJBQgp1WHcrYVpMdUV5cTRaU3BOenBuK1h3QUFTaUlBQUJBQlpQaGdwMktqczJm
SStrMDRmUENISmdBQW15SUFBQkFCQ1M1ZFpPZURYbm5TCm9ZV0o4VGJBZ2dBQTFpSUFBQkFCdWJY
dXUwa3U3OW85VjRmc2ZYWFVsUUFBRENNQUFCQUJxaU02TUQ0Z2JWa3NJc3lwQkEvV0F3QUEKU0NN
QUFCQUI4amhPZFdZK3dsVml6UWVHbTB1R3pRQUFtaU1BQUJBQnhUOWwrdTBhL3FUSFlRZW1rTXpS
RkFBQTJpTUFBQkFCZU1jbQpDVjZtS3hsNWJMSjNLVm1kaFFBQS9TTUFBQkFCTEFEV05CN3RqSXhn
YTY3bHpzWHM3QUFBVFNRQUFCQUI4ck9HMThqK2FvQlZZdzNGCkNsdy9Id0FBZGlRQUFCQUIxS0Zj
d1NzRUk5WlhsNmlqOFRMdmNnQUFwQ1FBQUJBQjVNSmtIcjM0aWh1eGgzc0xxTnpYVkFBQTlTUUEK
QUJBQmgwTkNWTTg5Nmt5aFRrdGNsSm4rWXdBQUxDVUFBQkFCMDNBV2h0WmVFbWRoWTE3dEROaXp0
QUFBVkNVQUFCQUIybmNYY1RNYgpMbk92Mk9MTjJnZTFoUUFBb3lVQUFCQUJyZjJqN2RXUllFQVpB
aW1NalF0WXBRQUE5Q1VBQUJBQmpLQ29qeE1sdlY5NjYvQ21RVHJpCjFnQUFKQ1lBQUJBQnYwdU94
ek5lcjdPaS90VWx0aFQxU0FBQWR5WUFBQkFCTnloZTI5S2c4a0VXbUpTWUFmeDJ1d0FBeVNZQUFC
QUIKQUE2Mnd1anNRRU4vUnUyVmFXVkx6UUFBR2ljQUFCQUJ6LzJkTVp3MTgxTm9YM3VKUGdLVzN3
QUFYeWNBQUJBQjc2M0dJdTd6aHFFcApsQ1JCNU5aV1hnQUFzQ2NBQUJBQnNUQmZsRW5kOURGc0Ro
N1lXZXpraWdBQUFTZ0FBQkFCdVNIR0JnRzEyc3dlOW9FeUl2bDlsUUFBClV5Z0FBQkFCSFRjOVc5
K1hTaHgzWnR4MzJNeU5aZ0FBakNnQUFCQUI1UWJsaFg0S2JpN1BrMWliL2owcW53QUEzU2dBQUJB
Qm9meUYKV3liTDBXRENVWDhRa2ZFbjlRQUFGU2tBQUJBQmVIUnJpWVIrcWg0L29sdi9RV1daOWdB
QVppa0FBQkFCY0x4TloyU05seGZvMFNWdwpuTzVmd2dBQW5pa0FBQkFCYko4UjFsT0swUktveS92
NEI0OWZJUUFBMHlrQUFCQUI1by8rSFFyaWhuR0FNUXdIdkFMcFJ3QUFEU29BCkFCQUI5dE5YbG9P
NDliUWQ2aVpyM2FueDVBQUFQaW9BQUJBQjlDdFBkY2FacmcweXBrYUtrSDVmclFBQWdTb0FBQkFC
TnlTQ3ppNGYKdXltaHJjdGorVlVYcEFBQXR5b0FBQkFCWWxsbGJjWFZvVDQxcGtYNUc5T0NPd0FB
NXlvQUFCQUJ4bHFrejN2aHNza0FNeVpVaUFlMgp5UUFBT2lzQUFCQUJzd0tJSXhJeitkVitKMUNI
TkpGd3RBQUFpaXNBQUJBQkM0VW5ZZkhMWnF0anR3S3JidlpPV1FBQXZDc0FBQkFCCnRpZGlRNFcx
VXZvY0pZWVVWclBGWWdBQTZ5c0FBQkFCNGxReEM5cGFRb1VuT3RER05maDl5UUFBS0N3QUFCQUJE
Q2pvQ1ZzWlplNEQKd1ZVaGJyTzRLd0FBWml3QUFCQUJiVnMzK2d2bGxjMlgyODdmcWI2Q3JBQUFu
U3dBQUJBQjRPMjB4eC9BOTYzNWNvbW5UVlFtSFFBQQo4Q3dBQUJBQm90QTBCa1hTOUxOOElnTDB5
Tkt4WHdBQVFpMEFBQkFCR05HeUV5eWdkNk5qck11Zzg0Vjlrd0FBZWkwQUFCQUJEL0dMCkdTSGNY
TnZtYlhOQTNDUnFxZ0FBcWkwQUFCQUJNMUNmOC8wb1oyeGg3YmZCdFZjaWpBQUEvUzBBQUJBQlZX
dmplNW5pYUd6akhPV1gKYTBhYTZBQUFUaTRBQUJBQitPc3dyTzUwMlQ5MnJxQTloWVh4OXdBQWhD
NEFBQkFCUC9Db29WMytPTnhuWG9NQUVlb1EwZ0FBMVM0QQpBQkFCQkVRU2p4T2NmWDZESVlTMm5i
TTIvQUFBQ0M4QUFCQUI3SGxNQ2Jyb0VRYUhMaVZTSVJJRzF3QUFPeThBQUJBQjlrUXJVb3dICk5C
Q2pOa1p3alREV0NnQUFiaThBQUJBQnFsV2hkN0ZjeGRJeWJ5cDQrWDVJZFFBQW95OEFBQkFCMk10
OVRiejhtN0E0MFFDT1V5eGYKeUFBQTlpOEFBQkFCOFFLci9weDZRREtWOEpqU2hvM2Jod0FBSWpB
QUFCQUJVazBUVk5nTkdZandZdHVlZlQzUlNRQUFXVEFBQUJBQgpLTjJnQkluS2dOdVhJZ0VMMDlK
YkpnQUFsVEFBQUJBQnV4aUVkZkJ1SjlYZU45RXo2SElLV1FBQXh6QUFBQkFCblM1RzYweTV0RE1I
CjNmU0VpYUNGbVFBQURERUFBQkFCRS9MTzFLdWRtK3Nha2RxVkF1bThZQUFBUURFQUFCQUI3T2s0
MEhob28rUTdBbHN1YlhiTndBQUEKZHpFQUFCQUJYS094dmxuOHc3RjF3RFc1Zy9rd1NBQUFxVEVB
QUJBQmpOM0owMVptMkJET0ZXb0RXVUpjbVFBQTdqRUFBQkFCOEFERApIVFEydk16RTlLaFZpWDlC
aXdBQUhUSUFBQkFCMDgyN21CRzFaNEFmdmZmaXNZRXdnUUFBVkRJQUFCQUIrWlZvcCtXa05TUi9G
anZlCnRGSUVsd0FBZ3pJQUFCQUIwVXk3eERrbmkrQmZRcWgzeDlYQWx3QUExaklBQUJBQmRTQ2RP
bjJOOGkzWUVuZG8zekFmYXdBQUNqTUEKQUJBQklWUkd3QjUza09VbkNDV0Z3bWFXSEFBQVBETUFB
QkFCU2YxQWFjZVJxMlUyTENlei9aR2FXd0FBanpNQUFCQUJ2MWNVYXN0TwpOUEFqckpxb2JjOCs5
Z0FBNGpNQUFCQUJyT0UxVlgxVk5Ea1FMc2hOQmtHclVRQUFORFFBQUJBQmhVM24xaW5jWlVRMy9a
RWg0QnVCCjZ3QUFZelFBQUJBQlFOTHBFNmk2aW05OEJ2NmFYZnIyN0FBQW5UUUFBQkFCYk1KZXdC
Qm5lNXFDRGdOVUhMT1lrQUFBNFRRQUFCQUIKWlBZMWVwM1lvSnNhQTBUWWpjeVVSd0FBQ2pVQUFC
QUJiU1RtSGJKVThrb1hKQTM4ajhRS0dBQUFOelVBQUJBQkFtNEQ5UUlYWFhuWgp1L3VpUTFrcEFn
QUFpRFVBQUJBQmNSOVVMSExvaXh5RU5xMmVOM0w2R3dBQXpqVUFBQkFCRjcxVlNBeDlFYWxodlVQ
dnVJNmM0QUFBCitEVUFBQkFCdTIxMFlVMDI5MnVxeHlZM2x3bXRDUUFBS2pZQUFCQUJvSGlqa2VP
WXZ0QVpVS0hYdTQxVmhRQUFYellBQUJBQnZMQ0kKdXY2V083VXk2ZHlKV1o2eGN3QUFrallBQUJB
QlByaUdZeGZFbDl4Wno3eEpxak5LTFFBQTFEWUFBQkFCK1VTR0M5ZmxOeldwSlZlOApSWXdUdHdB
QUFEY0FBQkFCdm01cDNvaFRFK1hac0d6WVlFaHpCd0FBT0RjQUFCQUJGaEY1ck9tdkVZSzVDbHRn
TDV0UU1nQUFmemNBCkFCQUJqYXBMbWQ1Mk4vdEJVNFl1QTZVckRRQUFxVGNBQUJBQkpzNXViTGQw
VE5GaDVKQkZDaUo4WGdBQStUY0FBQkFCd3lTU2V0NkcKTWh4TjVFenRkdGlNL2dBQVNUZ0FBQkFC
d1BUeTFHOUVTWGR0RFFIbFAvY0ZZd0FBampnQUFCQUJiSUtpQnhSdmNUeFhLOFU2aTdSbgpkd0FB
eXpnQUFCQUJ4Y3IzM0MxZzRLSUNvM3dXRXVXMG5nQUFIamtBQUJBQmtRNU5mSTlYZjgzQU5WcFNJ
U2dWS3dBQWJEa0FBQkFCCitZYVVzY3FHMWNYSUFuNE1JeHgxSkFBQXZEa0FBQkFCdWhmMFZEeU5t
a2xhTjluKzU5NXB2d0FBNXprQUFCQUJ1VWhNRE1vcjdVakkKT3hmdm9RdUVqUUFBS3pvQUFCQUIr
aEU3bkdZbGZTK1RvaWcwckJxNWJ3QUFaVG9BQUJBQk5CaGdIWHFGbmYxdG4zbVBPbVdiemdBQQpz
em9BQUJBQldtU0MvRFVCK0tFME5HSmpaWVMvM3dBQTNqb0FBQkFCY1ExMzdnV1VjejE2N09tSWNQ
RVUyQUFBRmpzQUFCQUJoRzZuCi92R3BjVkJzM2ZWU1g2bjRMUUFBVXpzQUFCQUJkaEEzdHRiUE1x
cE1TN2p5T2hvZ0V3QUFnenNBQUJBQklRMkp0bFpIOFJubmJDd3gKNUZsckhnQUFyanNBQUJBQndP
RGEzYS9qSGJvTVhXUHA5clFIYUFBQS9qc0FBQkFCeHVYK2dZTmpibUtWclhIOU9XRmN0Z0FBUXp3
QQpBQkFCNGdOSUhwMXdLNjMwY28xTlhGenhLZ0FBYWp3QUFCQUJFcUVlU1RrNlU3cEtqYnFSVWFa
aVhBQUF1endBQUJBQnZ6VEM0NExhCjZsS1hpZXpJQ3MwZHZnQUE4d0FBQUdwREFBQUFZenBjWVhC
d2JHVnBiblJsY201aGJGeHBibU5zZFdSbFhHTnZjbVZuY21Gd2FHbGoKYzF4alozQmtabTl3WlhK
aGRHOXlkR0ZpYkdVdWFBQmpPbHhoY0hCc1pXbHVkR1Z5Ym1Gc1hHbHVZMngxWkdWY1kyOXlaV2R5
WVhCbwphV056WEdObmFXMWhaMlV1YUFCak9seGhjSEJzWldsdWRHVnlibUZzWEdsdVkyeDFaR1Zj
WTI5eVpXWnZkVzVrWVhScGIyNWNZMlpoCmNuSmhlUzVvQUdNNlhHRndjR3hsYVc1MFpYSnVZV3hj
YVc1amJIVmtaVnhqYjNKbFozSmhjR2hwWTNOY1kyZHdaR1p6WTJGdWJtVnkKTG1nQVl6cGNZWEJ3
YkdWcGJuUmxjbTVoYkZ4cGJtTnNkV1JsWEdOdmNtVm5jbUZ3YUdsamMxeGpaMlJwYzNCc1lYbHNh
WE4wTG1nQQpZenBjWVhCd2JHVnBiblJsY201aGJGeHBibU5zZFdSbFhHTnZjbVZtYjNWdVpHRjBh
Vzl1WEdObVluVnVaR3hsTG1nQVl6cGNjSEp2ClozSmhiU0JtYVd4bGN5QW9lRGcyS1Z4dGFXTnli
M052Wm5RZ2RtbHpkV0ZzSUhOMGRXUnBieUE0WEhaalhIQnNZWFJtYjNKdGMyUnIKWEdsdVkyeDFa
R1ZjYjJ4bGFXUnNMbWdBWXpwY2NISnZaM0poYlNCbWFXeGxjeUFvZURnMktWeHRhV055YjNOdlpu
UWdkbWx6ZFdGcwpJSE4wZFdScGJ5QTRYSFpqWEdsdVkyeDFaR1ZjZDNScGJXVXVhVzVzQUdNNlhI
QnliMmR5WVcwZ1ptbHNaWE1nS0hnNE5pbGNiV2xqCmNtOXpiMlowSUhacGMzVmhiQ0J6ZEhWa2FX
OGdPRngyWTF4d2JHRjBabTl5YlhOa2ExeHBibU5zZFdSbFhIQnphSEJoWTJzMExtZ0EKWXpwY1lY
QndiR1ZwYm5SbGNtNWhiRnhwYm1Oc2RXUmxYR052Y21WbmNtRndhR2xqYzF4aloyTnZiblJsZUhS
d1lYUm9MbWdBWXpwYwpZWEJ3YkdWcGJuUmxjbTVoYkZ4cGJtTnNkV1JsWEdOdmNtVm5jbUZ3YUds
amMxeGpaMk52Ym1acFp5NW9BR002WEdGd2NHeGxhVzUwClpYSnVZV3hjYVc1amJIVmtaVnhqYjNK
bFozSmhjR2hwWTNOY1kyZHdaR1p6ZEhKbFlXMHVhQUJqT2x4d2NtOW5jbUZ0SUdacGJHVnoKSUNo
NE9EWXBYRzFwWTNKdmMyOW1kQ0IyYVhOMVlXd2djM1IxWkdsdklEaGNkbU5jY0d4aGRHWnZjbTF6
Wkd0Y2FXNWpiSFZrWlZ4MwphVzV6YjJOckxtZ0FZenBjWVhCd2JHVnBiblJsY201aGJGeHBibU5z
ZFdSbFhHTnZjbVZuY21Gd2FHbGpjMXhqWjNOMGVYQmxjeTVvCkFHTTZYR0Z3Y0d4bGFXNTBaWEp1
WVd4Y2FXNWpiSFZrWlZ4amIzSmxaM0poY0docFkzTmNZMmRqYkdsd0xtZ0FZenBjY0hKdlozSmgK
YlNCbWFXeGxjeUFvZURnMktWeHRhV055YjNOdlpuUWdkbWx6ZFdGc0lITjBkV1JwYnlBNFhIWmpY
SEJzWVhSbWIzSnRjMlJyWEdsdQpZMngxWkdWY2QybHVZM0o1Y0hRdWFBQmpPbHhoY0hCc1pXbHVk
R1Z5Ym1Gc1hHbHVZMngxWkdWY1kyOXlaV2R5WVhCb2FXTnpYR05uClptOXVkR05oWTJobExtZ0FZ
enBjWVhCd2JHVnBiblJsY201aGJGeHBibU5zZFdSbFhHTnZjbVZuY21Gd2FHbGpjMXhqWjJWeWNt
OXkKTG1nQVl6cGNZWEJ3YkdWcGJuUmxjbTVoYkZ4cGJtTnNkV1JsWEdOdmNtVm1iM1Z1WkdGMGFX
OXVYR05tWkdGMFpTNW9BR002WEhCeQpiMmR5WVcwZ1ptbHNaWE1nS0hnNE5pbGNiV2xqY205emIy
WjBJSFpwYzNWaGJDQnpkSFZrYVc4Z09GeDJZMXh3YkdGMFptOXliWE5rCmExeHBibU5zZFdSbFhH
MXRjM2x6ZEdWdExtZ0FZenBjWVhCd2JHVnBiblJsY201aGJGeHBibU5zZFdSbFhHTm1ibVYwZDI5
eWExeGoKWm5WeWJHTnZibTVsWTNScGIyNXdjbWwyTG1nQVl6cGNZWEJ3YkdWcGJuUmxjbTVoYkZ4
cGJtTnNkV1JsWEdOdmNtVm5jbUZ3YUdsagpjMXhqWjJadmJuUXVhQUJqT2x4aGNIQnNaV2x1ZEdW
eWJtRnNYR2x1WTJ4MVpHVmNZMlp1WlhSM2IzSnJYR05tZFhKc2NISnZkRzlqCmIyeHdjbWwyTG1n
QVl6cGNjSEp2WjNKaGJTQm1hV3hsY3lBb2VEZzJLVnh0YVdOeWIzTnZablFnZG1semRXRnNJSE4w
ZFdScGJ5QTQKWEhaalhHbHVZMngxWkdWY2MybG5ibUZzTG1nQVl6cGNjSEp2WjNKaGJTQm1hV3hs
Y3lBb2VEZzJLVnh0YVdOeWIzTnZablFnZG1segpkV0ZzSUhOMGRXUnBieUE0WEhaalhIQnNZWFJt
YjNKdGMyUnJYR2x1WTJ4MVpHVmNjSEp2Y0dsa2JDNW9BR002WEhCeWIyZHlZVzBnClptbHNaWE1n
S0hnNE5pbGNiV2xqY205emIyWjBJSFpwYzNWaGJDQnpkSFZrYVc4Z09GeDJZMXh3YkdGMFptOXli
WE5rYTF4cGJtTnMKZFdSbFhIZHBiblZ6WlhJdWFBQmpPbHhoY0hCc1pXbHVkR1Z5Ym1Gc1hHbHVZ
MngxWkdWY1kyWnVaWFIzYjNKclhHTm1kWEpzWVhWMAphR05vWVd4c1pXNW5aWEJ5YVhZdWFBQmpP
bHhoY0hCc1pXbHVkR1Z5Ym1Gc1hHbHVZMngxWkdWY1kyOXlaV2R5WVhCb2FXTnpYR05uCmRHVjRk
R05zYVhCd2FXNW5MbWdBWXpwY1lYQndiR1ZwYm5SbGNtNWhiRnhwYm1Oc2RXUmxYR05tYm1WMGQy
OXlhMXhqWm5WeWJHTnkKWldSbGJuUnBZV3h3Y21sMkxtZ0FZenBjWVhCd2JHVnBiblJsY201aGJG
eHBibU5zZFdSbFhHTnZjbVZtYjNWdVpHRjBhVzl1WEdObQpkWEpzWVdOalpYTnpMbWdBWXpwY1lY
QndiR1ZwYm5SbGNtNWhiRnhwYm1Oc2RXUmxYSE5sWTNWeWFYUjVYSE5sWTNWeWFYUjVMbWdBCll6
cGNjSEp2WjNKaGJTQm1hV3hsY3lBb2VEZzJLVnh0YVdOeWIzTnZablFnZG1semRXRnNJSE4wZFdS
cGJ5QTRYSFpqWEdsdVkyeDEKWkdWY2RHbHRaUzVwYm13QVl6cGNZWEJ3YkdWcGJuUmxjbTVoYkZ4
cGJtTnNkV1JsWEdOdmNtVm5jbUZ3YUdsamMxeGpaMk52Ykc5eQpkSEpoYm5ObWIzSnRMbWdBWXpw
Y1lYQndiR1ZwYm5SbGNtNWhiRnhwYm1Oc2RXUmxYR052Y21WbWIzVnVaR0YwYVc5dVhHTm1aWEp5
CmIzSXVhQUJqT2x4aGNIQnNaV2x1ZEdWeWJtRnNYR2x1WTJ4MVpHVmNZMjl5WldkeVlYQm9hV056
WEdOblkyOXNiM0p6Y0dGalpYQnkKYVhaaGRHVXVhQUJqT2x4aGNIQnNaV2x1ZEdWeWJtRnNYR2x1
WTJ4MVpHVmNZMjl5WldkeVlYQm9hV056WEdObmNHUm1jM1J5YVc1bgpMbWdBWXpwY2NISnZaM0po
YlNCbWFXeGxjeUFvZURnMktWeHRhV055YjNOdlpuUWdkbWx6ZFdGc0lITjBkV1JwYnlBNFhIWmpY
SEJzCllYUm1iM0p0YzJSclhHbHVZMngxWkdWY2JtSXpNQzVvQUdNNlhIQnliMmR5WVcwZ1ptbHNa
WE1nS0hnNE5pbGNiV2xqY205emIyWjAKSUhacGMzVmhiQ0J6ZEhWa2FXOGdPRngyWTF4d2JHRjBa
bTl5YlhOa2ExeHBibU5zZFdSbFhIQnZjSEJoWTJzdWFBQmpPbHhoY0hCcwpaV2x1ZEdWeWJtRnNY
R2x1WTJ4MVpHVmNZMlp1WlhSM2IzSnJYR05tZFhKc1kyRmphR1Z3Y21sMkxtZ0FZenBjWVhCd2JH
VnBiblJsCmNtNWhiRnhwYm1Oc2RXUmxYR052Y21WbmNtRndhR2xqYzF4aloyTnNhWEJ0WVhOckxt
Z0FZenBjWVhCd2JHVnBiblJsY201aGJGeHAKYm1Oc2RXUmxYR05tYm1WMGQyOXlhMXhqWm5WeWJI
SmxjWFZsYzNSd2NtbDJMbWdBWXpwY2NISnZaM0poYlNCbWFXeGxjeUFvZURnMgpLVnh0YVdOeWIz
TnZablFnZG1semRXRnNJSE4wZFdScGJ5QTRYSFpqWEdsdVkyeDFaR1ZjYzNSa1pHVm1MbWdBWXpw
Y2NISnZaM0poCmJTQm1hV3hsY3lBb2VEZzJLVnh0YVdOeWIzTnZablFnZG1semRXRnNJSE4wZFdS
cGJ5QTRYSFpqWEhCc1lYUm1iM0p0YzJSclhHbHUKWTJ4MVpHVmNiMnhsTWk1b0FHTTZYSEJ5YjJk
eVlXMGdabWxzWlhNZ0tIZzROaWxjYldsamNtOXpiMlowSUhacGMzVmhiQ0J6ZEhWawphVzhnT0Z4
MlkxeHdiR0YwWm05eWJYTmthMXhwYm1Oc2RXUmxYSGRwYm1WeWNtOXlMbWdBWXpwY1lYQndiR1Zw
Ym5SbGNtNWhiRnhwCmJtTnNkV1JsWEhWdWFXTnZaR1ZjZFhSbU1UWXVhQUJqT2x4d2NtOW5jbUZ0
SUdacGJHVnpJQ2g0T0RZcFhHMXBZM0p2YzI5bWRDQjIKYVhOMVlXd2djM1IxWkdsdklEaGNkbU5j
Y0d4aGRHWnZjbTF6Wkd0Y2FXNWpiSFZrWlZ4dlltcGlZWE5sTG1nQVl6cGNjSEp2WjNKaApiU0Jt
YVd4bGN5QW9lRGcyS1Z4dGFXTnliM052Wm5RZ2RtbHpkV0ZzSUhOMGRXUnBieUE0WEhaalhIQnNZ
WFJtYjNKdGMyUnJYR2x1ClkyeDFaR1ZjWTJkMWFXUXVhQUJqT2x4aGNIQnNaV2x1ZEdWeWJtRnNY
R2x1WTJ4MVpHVmNkVzVwWTI5a1pWeDFkR1pmYjJ4a0xtZ0EKWXpwY2NISnZaM0poYlNCbWFXeGxj
eUFvZURnMktWeHRhV055YjNOdlpuUWdkbWx6ZFdGc0lITjBkV1JwYnlBNFhIWmpYR2x1WTJ4MQpa
R1ZjYzNSa2JHbGlMbWdBWXpwY1lYQndiR1ZwYm5SbGNtNWhiRnhwYm1Oc2RXUmxYSFZ1YVdOdlpH
VmNkWFpsY25OcGIyNHVhQUJqCk9seHdjbTluY21GdElHWnBiR1Z6SUNoNE9EWXBYRzFwWTNKdmMy
OW1kQ0IyYVhOMVlXd2djM1IxWkdsdklEaGNkbU5jYVc1amJIVmsKWlZ4c2FXMXBkSE11YUFCak9s
eGhjSEJzWldsdWRHVnlibUZzWEdsdVkyeDFaR1ZjWTJadVpYUjNiM0pyWEdObWFIUjBjRzFsYzNO
aApaMlZ3Y21sMkxtZ0FZenBjWVhCd2JHVnBiblJsY201aGJGeHBibU5zZFdSbFhHTm1ibVYwZDI5
eWExeGpabWgwZEhCdFpYTnpZV2RsCkxtZ0FZenBjY0hKdlozSmhiU0JtYVd4bGN5QW9lRGcyS1Z4
dGFXTnliM052Wm5RZ2RtbHpkV0ZzSUhOMGRXUnBieUE0WEhaalhHbHUKWTJ4MVpHVmNjM1JrYVc4
dWFBQmpPbHhoY0hCc1pXbHVkR1Z5Ym1Gc1hHbHVZMngxWkdWY1kyOXlaV2R5WVhCb2FXTnpYR05u
WW1GegpaWEJ5YVhaaGRHVXVhQUJqT2x4d2NtOW5jbUZ0SUdacGJHVnpJQ2g0T0RZcFhHMXBZM0p2
YzI5bWRDQjJhWE4xWVd3Z2MzUjFaR2x2CklEaGNkbU5jY0d4aGRHWnZjbTF6Wkd0Y2FXNWpiSFZr
WlZ4eGIzTXVhQUJqT2x4d2NtOW5jbUZ0SUdacGJHVnpJQ2g0T0RZcFhHMXAKWTNKdmMyOW1kQ0Iy
YVhOMVlXd2djM1IxWkdsdklEaGNkbU5jY0d4aGRHWnZjbTF6Wkd0Y2FXNWpiSFZrWlZ4M2FXNXda
WEptTG1nQQpZenBjWVhCd2JHVnBiblJsY201aGJGeHBibU5zZFdSbFhHTnZjbVZuY21Gd2FHbGpj
MXhqWjJadmJuUjFibWxqYjJSbGMzVndjRzl5CmRDNW9BR002WEhCeWIyZHlZVzBnWm1sc1pYTWdL
SGc0TmlsY2JXbGpjbTl6YjJaMElIWnBjM1ZoYkNCemRIVmthVzhnT0Z4MlkxeHcKYkdGMFptOXli
WE5rYTF4cGJtTnNkV1JsWEdOdmJXMWtiR2N1YUFCak9seGhjSEJzWldsdWRHVnlibUZzWEdsdVky
eDFaR1ZjWTI5eQpaV2R5WVhCb2FXTnpYR05uWTI5dWRHVjRkR2R6ZEdGMFpTNW9BR002WEhCeWIy
ZHlZVzBnWm1sc1pYTWdLSGc0TmlsY2JXbGpjbTl6CmIyWjBJSFpwYzNWaGJDQnpkSFZrYVc4Z09G
eDJZMXhwYm1Oc2RXUmxYRzFoZEdndWFBQmpPbHhqZVdkM2FXNWNhRzl0WlZ4amJXRnkKY21sdVhI
TnZkWEpqWlZ4emRtNWNkMlZpYTJsMFhHbHVkR1Z5Ym1Gc1hIZGxZbXRwZEhONWMzUmxiV2x1ZEdW
eVptRmpaVngzYVc1YwpkMlZpYTJsMGMzbHpkR1Z0YVc1MFpYSm1ZV05sTG1Od2NBQmpPbHhoY0hC
c1pXbHVkR1Z5Ym1Gc1hHbHVZMngxWkdWY1kyOXlaV2R5CllYQm9hV056WEdObmJHRjVaWEl1YUFC
ak9seGhjSEJzWldsdWRHVnlibUZzWEdsdVkyeDFaR1ZjWTI5eVpXZHlZWEJvYVdOelhHTm4KWm05
dWRIQnlhWFpoZEdVdWFBQmpPbHhoY0hCc1pXbHVkR1Z5Ym1Gc1hHbHVZMngxWkdWY1kyOXlaV2R5
WVhCb2FXTnpYR05uWTNKNQpjSFJ2TG1nQVl6cGNZWEJ3YkdWcGJuUmxjbTVoYkZ4cGJtTnNkV1Js
WEdOdmNtVm1iM1Z1WkdGMGFXOXVYR05tYzNSeWFXNW5MbWdBCll6cGNZWEJ3YkdWcGJuUmxjbTVo
YkZ4cGJtTnNkV1JsWEdOdmNtVm5jbUZ3YUdsamMxeGpaMlp2Ym5SamNtVmhkR1V1YUFCak9seGgK
Y0hCc1pXbHVkR1Z5Ym1Gc1hHbHVZMngxWkdWY1kyOXlaV1p2ZFc1a1lYUnBiMjVjWTJaamFHRnlZ
V04wWlhKelpYUXVhQUJqT2x4aApjSEJzWldsdWRHVnlibUZzWEdsdVkyeDFaR1ZjWTI5eVpXZHlZ
WEJvYVdOelhHTm5abTl1ZEdsdVptOHVhQUJqT2x4aGNIQnNaV2x1CmRHVnlibUZzWEdsdVkyeDFa
R1ZjWTI5eVpXWnZkVzVrWVhScGIyNWNZMlp3Y205d1pYSjBlV3hwYzNRdWFBQmpPbHhoY0hCc1pX
bHUKZEdWeWJtRnNYR2x1WTJ4MVpHVmNZMjl5WldadmRXNWtZWFJwYjI1Y1kyWnpkSEpsWVcwdWFB
QmpPbHhoY0hCc1pXbHVkR1Z5Ym1GcwpYR2x1WTJ4MVpHVmNZMjl5WldadmRXNWtZWFJwYjI1Y1ky
WnRaWE56WVdkbGNHOXlkQzVvQUdNNlhHRndjR3hsYVc1MFpYSnVZV3hjCmFXNWpiSFZrWlZ4amIz
SmxabTkxYm1SaGRHbHZibHhqWm5WeWJDNW9BR002WEhCeWIyZHlZVzBnWm1sc1pYTWdLSGc0Tmls
Y2JXbGoKY205emIyWjBJSFpwYzNWaGJDQnpkSFZrYVc4Z09GeDJZMXh3YkdGMFptOXliWE5rYTF4
cGJtTnNkV1JsWEhObGNuWndjbTkyTG1nQQpZenBjWVhCd2JHVnBiblJsY201aGJGeHBibU5zZFdS
bFhIVnVhV052WkdWY2RXTnZibVpwWnk1b0FHTTZYR0Z3Y0d4bGFXNTBaWEp1CllXeGNhVzVqYkhW
a1pWeGthWE53WVhSamFGeGthWE53WVhSamFDNW9BR002WEdGd2NHeGxhVzUwWlhKdVlXeGNhVzVq
YkhWa1pWeGoKYjNKbFozSmhjR2hwWTNOY1kyZG1iMjUwZG1GeWFXRjBhVzl1Y3k1b0FHTTZYR0Z3
Y0d4bGFXNTBaWEp1WVd4Y2FXNWpiSFZrWlZ4awphWE53WVhSamFGeGlZWE5sTG1nQVl6cGNjSEp2
WjNKaGJTQm1hV3hsY3lBb2VEZzJLVnh0YVdOeWIzTnZablFnZG1semRXRnNJSE4wCmRXUnBieUE0
WEhaalhIQnNZWFJtYjNKdGMyUnJYR2x1WTJ4MVpHVmNjM1J5WVd4cFoyNHVhQUJqT2x4aGNIQnNa
V2x1ZEdWeWJtRnMKWEdsdVkyeDFaR1ZjWTI5eVpXWnZkVzVrWVhScGIyNWNZMlppYVhSMlpXTjBi
M0l1YUFCak9seHdjbTluY21GdElHWnBiR1Z6SUNoNApPRFlwWEcxcFkzSnZjMjltZENCMmFYTjFZ
V3dnYzNSMVpHbHZJRGhjZG1OY2NHeGhkR1p2Y20xelpHdGNhVzVqYkhWa1pWeDNhVzV5ClpXY3Vh
QUJqT2x4aGNIQnNaV2x1ZEdWeWJtRnNYR2x1WTJ4MVpHVmNZMjl5WldkeVlYQm9hV056WEdObmMz
SmxaMmx2Ymk1b0FHTTYKWEdGd2NHeGxhVzUwWlhKdVlXeGNhVzVqYkhWa1pWeGpiM0psWjNKaGNH
aHBZM05jWTJkemIyWjBiV0Z6YXk1b0FHTTZYR0Z3Y0d4bAphVzUwWlhKdVlXeGNhVzVqYkhWa1pW
eGpiM0psWm05MWJtUmhkR2x2Ymx4alpuQnNkV2RwYmk1b0FHTTZYR0Z3Y0d4bGFXNTBaWEp1CllX
eGNhVzVqYkhWa1pWeGthWE53WVhSamFGeHZZbXBsWTNRdWFBQmpPbHhoY0hCc1pXbHVkR1Z5Ym1G
c1hHbHVZMngxWkdWY1kyOXkKWldadmRXNWtZWFJwYjI1Y1kyWmpZV3hsYm1SaGNpNW9BR002WEdG
d2NHeGxhVzUwWlhKdVlXeGNhVzVqYkhWa1pWeGpiM0psWjNKaApjR2hwWTNOY1kyZG5aVzl0WlhS
eWVYQnlhWFpoZEdVdWFBQmpPbHhoY0hCc1pXbHVkR1Z5Ym1Gc1hHbHVZMngxWkdWY1kyOXlaV1p2
CmRXNWtZWFJwYjI1Y1kyWnNiMk5oYkdVdWFBQmpPbHh3Y205bmNtRnRJR1pwYkdWeklDaDRPRFlw
WEcxcFkzSnZjMjltZENCMmFYTjEKWVd3Z2MzUjFaR2x2SURoY2RtTmNjR3hoZEdadmNtMXpaR3Rj
YVc1amJIVmtaVnh3YzJod1lXTnJPQzVvQUdNNlhHRndjR3hsYVc1MApaWEp1WVd4Y2FXNWpiSFZr
WlZ4amIzSmxabTkxYm1SaGRHbHZibHhqWm1ScFkzUnBiMjVoY25rdWFBQmpPbHhoY0hCc1pXbHVk
R1Z5CmJtRnNYR2x1WTJ4MVpHVmNZMlp1WlhSM2IzSnJYR05tYUhSMGNHTnZiMnRwWlhOd2NtbDJM
bWdBWXpwY1lYQndiR1ZwYm5SbGNtNWgKYkZ4cGJtTnNkV1JsWEdObWJtVjBkMjl5YTF4alptNWxk
SGR2Y210a1pXWnpMbWdBWXpwY2NISnZaM0poYlNCbWFXeGxjeUFvZURnMgpLVnh0YVdOeWIzTnZa
blFnZG1semRXRnNJSE4wZFdScGJ5QTRYSFpqWEhCc1lYUm1iM0p0YzJSclhHbHVZMngxWkdWY2Nu
QmpMbWdBCll6cGNZWEJ3YkdWcGJuUmxjbTVoYkZ4cGJtTnNkV1JsWEdOdmJtUnBkR2x2Ym1Gc2JX
RmpjbTl6TG1nQVl6cGNZWEJ3YkdWcGJuUmwKY201aGJGeHBibU5zZFdSbFhHTnZjbVZuY21Gd2FH
bGpjMXhqWjJOc2FYQnpkSEp2YTJVdWFBQmpPbHhoY0hCc1pXbHVkR1Z5Ym1GcwpYR2x1WTJ4MVpH
VmNZMjl5WldadmRXNWtZWFJwYjI1Y1kyOXlaV1p2ZFc1a1lYUnBiMjR1YUFCak9seHdjbTluY21G
dElHWnBiR1Z6CklDaDRPRFlwWEcxcFkzSnZjMjltZENCMmFYTjFZV3dnYzNSMVpHbHZJRGhjZG1O
Y2FXNWpiSFZrWlZ4emVYTmNkSGx3WlhNdWFBQmoKT2x4d2NtOW5jbUZ0SUdacGJHVnpJQ2g0T0RZ
cFhHMXBZM0p2YzI5bWRDQjJhWE4xWVd3Z2MzUjFaR2x2SURoY2RtTmNjR3hoZEdadgpjbTF6Wkd0
Y2FXNWpiSFZrWlZ4eWNHTmtZMlV1YUFCak9seGhjSEJzWldsdWRHVnlibUZzWEdsdVkyeDFaR1Zj
WTI5eVpXZHlZWEJvCmFXTnpYR05uWkdGemFDNW9BR002WEhCeWIyZHlZVzBnWm1sc1pYTWdLSGc0
TmlsY2JXbGpjbTl6YjJaMElIWnBjM1ZoYkNCemRIVmsKYVc4Z09GeDJZMXh3YkdGMFptOXliWE5r
YTF4cGJtTnNkV1JsWEhkcGJuTjJZeTVvQUdNNlhHRndjR3hsYVc1MFpYSnVZV3hjYVc1agpiSFZr
WlZ4amIzSmxaM0poY0docFkzTmNZMmR3WVhSMFpYSnVMbWdBWXpwY2NISnZaM0poYlNCbWFXeGxj
eUFvZURnMktWeHRhV055CmIzTnZablFnZG1semRXRnNJSE4wZFdScGJ5QTRYSFpqWEhCc1lYUm1i
M0p0YzJSclhHbHVZMngxWkdWY2QybHVhVzlqZEd3dWFBQmoKT2x4aGNIQnNaV2x1ZEdWeWJtRnNY
R2x1WTJ4MVpHVmNZMjl5WldkeVlYQm9hV056WEdOblkyOXVkR1Y0ZEdSbGJHVm5ZWFJsTG1nQQpZ
enBjWVhCd2JHVnBiblJsY201aGJGeHBibU5zZFdSbFhHUnBjM0JoZEdOb1hHZHliM1Z3TG1nQVl6
cGNZWEJ3YkdWcGJuUmxjbTVoCmJGeHBibU5zZFdSbFhHTnZjbVZtYjNWdVpHRjBhVzl1WEdObWRY
VnBaQzVvQUdNNlhHRndjR3hsYVc1MFpYSnVZV3hjYVc1amJIVmsKWlZ4amIzSmxkbWxrWlc5Y1kz
WndhWGhsYkdKMVptWmxjaTVvQUdNNlhHRndjR3hsYVc1MFpYSnVZV3hjYVc1amJIVmtaVnhqYjNK
bApabTkxYm1SaGRHbHZibHhqWm1KaGMyVXVhQUJqT2x4aGNIQnNaV2x1ZEdWeWJtRnNYR2x1WTJ4
MVpHVmNZMjl5WlhacFpHVnZYR04yCmFXMWhaMlZpZFdabVpYSXVhQUJqT2x4aGNIQnNaV2x1ZEdW
eWJtRnNYR2x1WTJ4MVpHVmNZMjl5WldkeVlYQm9hV056WEdObmNtVnUKWkdWeWFXNW5jM1JoZEdV
dWFBQmpPbHhoY0hCc1pXbHVkR1Z5Ym1Gc1hHbHVZMngxWkdWY1kyOXlaV1p2ZFc1a1lYUnBiMjVj
WTJadQpkVzFpWlhJdWFBQmpPbHhoY0hCc1pXbHVkR1Z5Ym1Gc1hHbHVZMngxWkdWY1kyOXlaV1p2
ZFc1a1lYUnBiMjVjWTJaa1lYUmxabTl5CmJXRjBkR1Z5TG1nQVl6cGNZWEJ3YkdWcGJuUmxjbTVo
YkZ4cGJtTnNkV1JsWEhSaGNtZGxkR052Ym1ScGRHbHZibUZzY3k1b0FHTTYKWEhCeWIyZHlZVzBn
Wm1sc1pYTWdLSGc0TmlsY2JXbGpjbTl6YjJaMElIWnBjM1ZoYkNCemRIVmthVzhnT0Z4MlkxeHBi
bU5zZFdSbApYR0Z6YzJWeWRDNW9BR002WEhCeWIyZHlZVzBnWm1sc1pYTWdLSGc0TmlsY2JXbGpj
bTl6YjJaMElIWnBjM1ZoYkNCemRIVmthVzhnCk9GeDJZMXh3YkdGMFptOXliWE5rYTF4cGJtTnNk
V1JsWEhOd1pXTnpkSEpwYm1kekxtZ0FZenBjWVhCd2JHVnBiblJsY201aGJGeHAKYm1Oc2RXUmxY
R052Y21WMmFXUmxiMXhqZG1KMVptWmxjaTVvQUdNNlhHRndjR3hsYVc1MFpYSnVZV3hjYVc1amJI
VmtaVnh6ZEdScApiblF1YUFCak9seHdjbTluY21GdElHWnBiR1Z6SUNoNE9EWXBYRzFwWTNKdmMy
OW1kQ0IyYVhOMVlXd2djM1IxWkdsdklEaGNkbU5jCmFXNWpiSFZrWlZ4bGNuSnVieTVvQUdNNlhI
QnliMmR5WVcwZ1ptbHNaWE1nS0hnNE5pbGNiV2xqY205emIyWjBJSFpwYzNWaGJDQnoKZEhWa2FX
OGdPRngyWTF4d2JHRjBabTl5YlhOa2ExeHBibU5zZFdSbFhHSmhjMlYwYzJRdWFBQmpPbHhoY0hC
c1pXbHVkR1Z5Ym1GcwpYR2x1WTJ4MVpHVmNZMjl5WlhacFpHVnZYR04yY21WMGRYSnVMbWdBWXpw
Y1lYQndiR1ZwYm5SbGNtNWhiRnhwYm1Oc2RXUmxYR052CmNtVm5jbUZ3YUdsamMxeGpaM0JrWm1O
dmJuUmxiblJ6ZEhKbFlXMHVhQUJqT2x4d2NtOW5jbUZ0SUdacGJHVnpJQ2g0T0RZcFhHMXAKWTNK
dmMyOW1kQ0IyYVhOMVlXd2djM1IxWkdsdklEaGNkbU5jYVc1amJIVmtaVnhtYkc5aGRDNW9BR002
WEhCeWIyZHlZVzBnWm1scwpaWE1nS0hnNE5pbGNiV2xqY205emIyWjBJSFpwYzNWaGJDQnpkSFZr
YVc4Z09GeDJZMXhwYm1Oc2RXUmxYR055ZEhkeWJpNW9BR002ClhHRndjR3hsYVc1MFpYSnVZV3hj
YVc1amJIVmtaVnhqYjNKbFptOTFibVJoZEdsdmJseGpabk4wY21sdVoyVnVZMjlrYVc1blpYaDAK
TG1nQVl6cGNZWEJ3YkdWcGJuUmxjbTVoYkZ4cGJtTnNkV1JsWEdOdmNtVm1iM1Z1WkdGMGFXOXVY
R05tYzI5amEyVjBMbWdBWXpwYwpjSEp2WjNKaGJTQm1hV3hsY3lBb2VEZzJLVnh0YVdOeWIzTnZa
blFnZG1semRXRnNJSE4wZFdScGJ5QTRYSFpqWEhCc1lYUm1iM0p0CmMyUnJYR2x1WTJ4MVpHVmNj
SE5vY0dGamF6RXVhQUJqT2x4aGNIQnNaV2x1ZEdWeWJtRnNYR2x1WTJ4MVpHVmNZMlp1WlhSM2Iz
SnIKWEdObWJtVjBkMjl5YTJOdmJtNWxZM1JwYjI1allXTm9aWEJ5YVhZdWFBQmpPbHhoY0hCc1pX
bHVkR1Z5Ym1Gc1hHbHVZMngxWkdWYwpZMjl5WldadmRXNWtZWFJwYjI1Y1kyWnlkVzVzYjI5d0xt
Z0FZenBjWVhCd2JHVnBiblJsY201aGJGeHBibU5zZFdSbFhHUnBjM0JoCmRHTm9YSFJwYldVdWFB
QmpPbHhoY0hCc1pXbHVkR1Z5Ym1Gc1hHbHVZMngxWkdWY1kyOXlaV1p2ZFc1a1lYUnBiMjVjWTJa
MGNtVmwKTG1nQVl6cGNZWEJ3YkdWcGJuUmxjbTVoYkZ4cGJtTnNkV1JsWEdOdmNtVm5jbUZ3YUds
amMxeGpaMmR6ZEdGMFpTNW9BR002WEhCeQpiMmR5WVcwZ1ptbHNaWE1nS0hnNE5pbGNiV2xqY205
emIyWjBJSFpwYzNWaGJDQnpkSFZrYVc4Z09GeDJZMXhwYm1Oc2RXUmxYSE4zCmNISnBiblJtTG1s
dWJBQmpPbHhoY0hCc1pXbHVkR1Z5Ym1Gc1hHbHVZMngxWkdWY1kyOXlaV1p2ZFc1a1lYUnBiMjVj
WTJadWIzUnAKWm1sallYUnBiMjVqWlc1MFpYSXVhQUJqT2x4d2NtOW5jbUZ0SUdacGJHVnpJQ2g0
T0RZcFhHMXBZM0p2YzI5bWRDQjJhWE4xWVd3ZwpjM1IxWkdsdklEaGNkbU5jY0d4aGRHWnZjbTF6
Wkd0Y2FXNWpiSFZrWlZ4dFkzZ3VhQUJqT2x4d2NtOW5jbUZ0SUdacGJHVnpJQ2g0Ck9EWXBYRzFw
WTNKdmMyOW1kQ0IyYVhOMVlXd2djM1IxWkdsdklEaGNkbU5jY0d4aGRHWnZjbTF6Wkd0Y2FXNWpi
SFZrWlZ4M2FXNXoKY0c5dmJDNW9BR002WEdGd2NHeGxhVzUwWlhKdVlXeGNhVzVqYkhWa1pWeGpi
M0psWjNKaGNHaHBZM05jWTJkamJHbHdjM1JoWTJzdQphQUJqT2x4d2NtOW5jbUZ0SUdacGJHVnpJ
Q2g0T0RZcFhHMXBZM0p2YzI5bWRDQjJhWE4xWVd3Z2MzUjFaR2x2SURoY2RtTmNjR3hoCmRHWnZj
bTF6Wkd0Y2FXNWpiSFZrWlZ4dmJHVmhkWFJ2TG1nQVl6cGNjSEp2WjNKaGJTQm1hV3hsY3lBb2VE
ZzJLVnh0YVdOeWIzTnYKWm5RZ2RtbHpkV0ZzSUhOMGRXUnBieUE0WEhaalhIQnNZWFJtYjNKdGMy
UnJYR2x1WTJ4MVpHVmNjSEp6YUhRdWFBQmpPbHhoY0hCcwpaV2x1ZEdWeWJtRnNYR2x1WTJ4MVpH
VmNZMjl5WldkeVlYQm9hV056WEdObmMyaGhaR2x1Wnk1b0FHTTZYR0Z3Y0d4bGFXNTBaWEp1CllX
eGNhVzVqYkhWa1pWeGpiM0psWjNKaGNHaHBZM05jWTJka1lYUmhZMjl1YzNWdFpYSXVhQUJqT2x4
aGNIQnNaV2x1ZEdWeWJtRnMKWEdsdVkyeDFaR1ZjWTI5eVpXZHlZWEJvYVdOelhHTm5ablZ1WTNS
cGIyNHVhQUJqT2x4aGNIQnNaV2x1ZEdWeWJtRnNYR2x1WTJ4MQpaR1ZjWTI5eVpXZHlZWEJvYVdO
elhHTm5jM1I1YkdVdWFBQmpPbHhoY0hCc1pXbHVkR1Z5Ym1Gc1hHbHVZMngxWkdWY1kyWnVaWFIz
CmIzSnJYR05tYm1WMGQyOXlhMlZ5Y205eWMzQnlhWFl1YUFCak9seGhjSEJzWldsdWRHVnlibUZz
WEdsdVkyeDFaR1ZjWkdsemNHRjAKWTJoY2MyVnRZWEJvYjNKbExtZ0FZenBjY0hKdlozSmhiU0Jt
YVd4bGN5QW9lRGcyS1Z4dGFXTnliM052Wm5RZ2RtbHpkV0ZzSUhOMApkV1JwYnlBNFhIWmpYSEJz
WVhSbWIzSnRjMlJyWEdsdVkyeDFaR1ZjZFc1cmJuZHVMbWdBWXpwY1lYQndiR1ZwYm5SbGNtNWhi
RnhwCmJtTnNkV1JsWEdScGMzQmhkR05vWEhGMVpYVmxMbWdBWXpwY1lYQndiR1ZwYm5SbGNtNWhi
RnhwYm1Oc2RXUmxYR052Y21WbmNtRncKYUdsamMxeGpaM0JrWm1OdmJuUmxlSFF1YUFCak9seHdj
bTluY21GdElHWnBiR1Z6SUNoNE9EWXBYRzFwWTNKdmMyOW1kQ0IyYVhOMQpZV3dnYzNSMVpHbHZJ
RGhjZG1OY2NHeGhkR1p2Y20xelpHdGNhVzVqYkhWa1pWeDNhVzUyWlhJdWFBQmpPbHhoY0hCc1pX
bHVkR1Z5CmJtRnNYR2x1WTJ4MVpHVmNZMjl5WldkeVlYQm9hV056WEdOblptOXVkR2RzZVhCb2Mz
VndjRzl5ZEM1b0FHTTZYR0Z3Y0d4bGFXNTAKWlhKdVlXeGNhVzVqYkhWa1pWeGpiM0psWjNKaGNH
aHBZM05jWTJkamIyNTBaWGgwZEdWNGRDNW9BR002WEdGd2NHeGxhVzUwWlhKdQpZV3hjYVc1amJI
VmtaVnhqYjNKbFozSmhjR2hwWTNOY1kyZGpiMnh2Y21OdlpHVm1jbUZuYldWdWRDNW9BR002WEhC
eWIyZHlZVzBnClptbHNaWE1nS0hnNE5pbGNiV2xqY205emIyWjBJSFpwYzNWaGJDQnpkSFZrYVc4
Z09GeDJZMXh3YkdGMFptOXliWE5rYTF4cGJtTnMKZFdSbFhISndZMlJqWlhBdWFBQmpPbHhoY0hC
c1pXbHVkR1Z5Ym1Gc1hHbHVZMngxWkdWY1kyWnVaWFIzYjNKclhHTm1kWEpzWTNKbApaR1Z1ZEds
aGJITjBiM0poWjJWd2NtbDJMbWdBWXpwY1lYQndiR1ZwYm5SbGNtNWhiRnhwYm1Oc2RXUmxYSE4w
WkdKdmIyd3VhQUJqCk9seHdjbTluY21GdElHWnBiR1Z6SUNoNE9EWXBYRzFwWTNKdmMyOW1kQ0Iy
YVhOMVlXd2djM1IxWkdsdklEaGNkbU5jY0d4aGRHWnYKY20xelpHdGNhVzVqYkhWa1pWeHRjM2h0
YkM1b0FHTTZYR0Z3Y0d4bGFXNTBaWEp1WVd4Y2FXNWpiSFZrWlZ4a2FYTndZWFJqYUZ4dgpibU5s
TG1nQVl6cGNZWEJ3YkdWcGJuUmxjbTVoYkZ4cGJtTnNkV1JsWEdGMllXbHNZV0pwYkdsMGVXMWhZ
M0p2Y3k1b0FHTTZYSEJ5CmIyZHlZVzBnWm1sc1pYTWdLSGc0TmlsY2JXbGpjbTl6YjJaMElIWnBj
M1ZoYkNCemRIVmthVzhnT0Z4MlkxeHdiR0YwWm05eWJYTmsKYTF4cGJtTnNkV1JsWEhKbFlYTnZi
aTVvQUdNNlhHRndjR3hsYVc1MFpYSnVZV3hjYVc1amJIVmtaVnhqYjNKbFptOTFibVJoZEdsdgpi
bHhqWm1KcGJtRnllV2hsWVhBdWFBQmpPbHhoY0hCc1pXbHVkR1Z5Ym1Gc1hHbHVZMngxWkdWY1lY
WmhhV3hoWW1sc2FYUjVMbWdBCll6cGNjSEp2WjNKaGJTQm1hV3hsY3lBb2VEZzJLVnh0YVdOeWIz
TnZablFnZG1semRXRnNJSE4wZFdScGJ5QTRYSFpqWEhCc1lYUm0KYjNKdGMyUnJYR2x1WTJ4MVpH
VmNaR3huY3k1b0FHTTZYSEJ5YjJkeVlXMGdabWxzWlhNZ0tIZzROaWxjYldsamNtOXpiMlowSUha
cApjM1ZoYkNCemRIVmthVzhnT0Z4MlkxeHdiR0YwWm05eWJYTmthMXhwYm1Oc2RXUmxYSGRwYm01
c2N5NW9BR002WEdGd2NHeGxhVzUwClpYSnVZV3hjYVc1amJIVmtaVnhoZG1GcGJHRmlhV3hwZEhs
cGJuUmxjbTVoYkM1b0FHTTZYSEJ5YjJkeVlXMGdabWxzWlhNZ0tIZzQKTmlsY2JXbGpjbTl6YjJa
MElIWnBjM1ZoYkNCemRIVmthVzhnT0Z4MlkxeHdiR0YwWm05eWJYTmthMXhwYm1Oc2RXUmxYSGRw
Ym5OagpZWEprTG1nQVl6cGNjSEp2WjNKaGJTQm1hV3hsY3lBb2VEZzJLVnh0YVdOeWIzTnZablFn
ZG1semRXRnNJSE4wZFdScGJ5QTRYSFpqClhIQnNZWFJtYjNKdGMyUnJYR2x1WTJ4MVpHVmNkMmx1
WW1GelpTNW9BR002WEhCeWIyZHlZVzBnWm1sc1pYTWdLSGc0TmlsY2JXbGoKY205emIyWjBJSFpw
YzNWaGJDQnpkSFZrYVc4Z09GeDJZMXh3YkdGMFptOXliWE5rYTF4cGJtTnNkV1JsWEhkMGVYQmxj
eTVvQUdNNgpYSEJ5YjJkeVlXMGdabWxzWlhNZ0tIZzROaWxjYldsamNtOXpiMlowSUhacGMzVmhi
Q0J6ZEhWa2FXOGdPRngyWTF4cGJtTnNkV1JsClhITjBaR0Z5Wnk1b0FHTTZYSEJ5YjJkeVlXMGda
bWxzWlhNZ0tIZzROaWxjYldsamNtOXpiMlowSUhacGMzVmhiQ0J6ZEhWa2FXOGcKT0Z4MlkxeHdi
R0YwWm05eWJYTmthMXhwYm1Oc2RXUmxYSEp3WTI1a2NpNW9BR002WEhCeWIyZHlZVzBnWm1sc1pY
TWdLSGc0TmlsYwpiV2xqY205emIyWjBJSFpwYzNWaGJDQnpkSFZrYVc4Z09GeDJZMXh3YkdGMFpt
OXliWE5rYTF4cGJtTnNkV1JsWEhkcGJtUmxaaTVvCkFHTTZYSEJ5YjJkeVlXMGdabWxzWlhNZ0tI
ZzROaWxjYldsamNtOXpiMlowSUhacGMzVmhiQ0J6ZEhWa2FXOGdPRngyWTF4d2JHRjAKWm05eWJY
TmthMXhwYm1Oc2RXUmxYSEp3WTI1emFYQXVhQUJqT2x4aGNIQnNaV2x1ZEdWeWJtRnNYR2x1WTJ4
MVpHVmNZMjl5WldkeQpZWEJvYVdOelhHTm5ZMjl1ZEdWNGRIQnlhWFpoZEdVdWFBQmpPbHh3Y205
bmNtRnRJR1pwYkdWeklDaDRPRFlwWEcxcFkzSnZjMjltCmRDQjJhWE4xWVd3Z2MzUjFaR2x2SURo
Y2RtTmNjR3hoZEdadmNtMXpaR3RjYVc1amJIVmtaVngxY214dGIyNHVhQUJqT2x4aGNIQnMKWlds
dWRHVnlibUZzWEdsdVkyeDFaR1ZjWTJadVpYUjNiM0pyWEdObWMyOWphMlYwYzNSeVpXRnRjSEpw
ZGk1b0FHTTZYSEJ5YjJkeQpZVzBnWm1sc1pYTWdLSGc0TmlsY2JXbGpjbTl6YjJaMElIWnBjM1Zo
YkNCemRIVmthVzhnT0Z4MlkxeHdiR0YwWm05eWJYTmthMXhwCmJtTnNkV1JsWEhkcGJtVm1jeTVv
QUdNNlhHRndjR3hsYVc1MFpYSnVZV3hjYVc1amJIVmtaVnhqYjNKbFptOTFibVJoZEdsdmJseGoK
Wm5CeVpXWmxjbVZ1WTJWekxtZ0FZenBjWVhCd2JHVnBiblJsY201aGJGeHBibU5zZFdSbFhHTnZj
bVZtYjNWdVpHRjBhVzl1WEdObQpkR2x0WlhwdmJtVXVhQUJqT2x4aGNIQnNaV2x1ZEdWeWJtRnNY
R2x1WTJ4MVpHVmNZMlp1WlhSM2IzSnJYR05tYUhSMGNHRjFkR2hsCmJuUnBZMkYwYVc5dUxtZ0FZ
enBjWVhCd2JHVnBiblJsY201aGJGeHBibU5zZFdSbFhHTnZjbVZtYjNWdVpHRjBhVzl1WEdObVpH
RjAKWVM1b0FHTTZYSEJ5YjJkeVlXMGdabWxzWlhNZ0tIZzROaWxjYldsamNtOXpiMlowSUhacGMz
VmhiQ0J6ZEhWa2FXOGdPRngyWTF4cApibU5zZFdSbFhIUnBiV1V1YUFCak9seGhjSEJzWldsdWRH
VnlibUZzWEdsdVkyeDFaR1ZjWTI5eVpXZHlZWEJvYVdOelhHTm5jR1JtClpHOWpkVzFsYm5RdWFB
QmpPbHhoY0hCc1pXbHVkR1Z5Ym1Gc1hHbHVZMngxWkdWY1kyOXlaV1p2ZFc1a1lYUnBiMjVjWTJa
elpYUXUKYUFCak9seHdjbTluY21GdElHWnBiR1Z6SUNoNE9EWXBYRzFwWTNKdmMyOW1kQ0IyYVhO
MVlXd2djM1IxWkdsdklEaGNkbU5jY0d4aApkR1p2Y20xelpHdGNhVzVqYkhWa1pWeHNlbVY0Y0dG
dVpDNW9BR002WEhCeWIyZHlZVzBnWm1sc1pYTWdLSGc0TmlsY2JXbGpjbTl6CmIyWjBJSFpwYzNW
aGJDQnpkSFZrYVc4Z09GeDJZMXh3YkdGMFptOXliWE5rYTF4cGJtTnNkV1JsWEdSa1pXMXNMbWdB
WXpwY1lYQncKYkdWcGJuUmxjbTVoYkZ4cGJtTnNkV1JsWEdOdmNtVm5jbUZ3YUdsamMxeGpaM0Jr
Wm5CaFoyVXVhQUJqT2x4aGNIQnNaV2x1ZEdWeQpibUZzWEdsdVkyeDFaR1ZjWTI5eVpXZHlZWEJv
YVdOelhHTm5jR0YwYUM1b0FHTTZYR0Z3Y0d4bGFXNTBaWEp1WVd4Y2FXNWpiSFZrClpWeGpiM0ps
WjNKaGNHaHBZM05jWTJkdWIzUnBabWxqWVhScGIyNWpaVzUwWlhJdWFBQmpPbHhoY0hCc1pXbHVk
R1Z5Ym1Gc1hHbHUKWTJ4MVpHVmNZMlp1WlhSM2IzSnJYR05tZFhKc2NISnZkR1ZqZEdsdmJuTndZ
V05sY0hKcGRpNW9BR002WEdGd2NHeGxhVzUwWlhKdQpZV3hjYVc1amJIVmtaVnhqWm01bGRIZHZj
bXRjWTJaMWNteHlaWE53YjI1elpYQnlhWFl1YUFCak9seHdjbTluY21GdElHWnBiR1Z6CklDaDRP
RFlwWEcxcFkzSnZjMjltZENCMmFYTjFZV3dnYzNSMVpHbHZJRGhjZG1OY2NHeGhkR1p2Y20xelpH
dGNhVzVqYkhWa1pWeHkKY0dOdWRHVnljaTVvQUdNNlhIQnliMmR5WVcwZ1ptbHNaWE1nS0hnNE5p
bGNiV2xqY205emIyWjBJSFpwYzNWaGJDQnpkSFZrYVc4ZwpPRngyWTF4d2JHRjBabTl5YlhOa2Ex
eHBibU5zZFdSbFhHZDFhV1JrWldZdWFBQmpPbHhoY0hCc1pXbHVkR1Z5Ym1Gc1hHbHVZMngxClpH
VmNZMjl5WldkeVlYQm9hV056WEdObmNHUm1aR2xqZEdsdmJtRnllUzVvQUdNNlhHRndjR3hsYVc1
MFpYSnVZV3hjYVc1amJIVmsKWlZ4amIzSmxaM0poY0docFkzTmNZMmRqYjJ4dmNpNW9BR002WEhC
eWIyZHlZVzBnWm1sc1pYTWdLSGc0TmlsY2JXbGpjbTl6YjJaMApJSFpwYzNWaGJDQnpkSFZrYVc4
Z09GeDJZMXh3YkdGMFptOXliWE5rYTF4cGJtTnNkV1JsWEhKd1kyRnplVzVqTG1nQVl6cGNjSEp2
ClozSmhiU0JtYVd4bGN5QW9lRGcyS1Z4dGFXTnliM052Wm5RZ2RtbHpkV0ZzSUhOMGRXUnBieUE0
WEhaalhIQnNZWFJtYjNKdGMyUnIKWEdsdVkyeDFaR1ZjY25CamJuTnBMbWdBWXpwY1lYQndiR1Zw
Ym5SbGNtNWhiRnhwYm1Oc2RXUmxYR052Y21WbWIzVnVaR0YwYVc5dQpYR05tWW5sMFpXOXlaR1Z5
TG1nQVl6cGNjSEp2WjNKaGJTQm1hV3hsY3lBb2VEZzJLVnh0YVdOeWIzTnZablFnZG1semRXRnNJ
SE4wCmRXUnBieUE0WEhaalhIQnNZWFJtYjNKdGMyUnJYR2x1WTJ4MVpHVmNkMmx1WjJScExtZ0FZ
enBjWVhCd2JHVnBiblJsY201aGJGeHAKYm1Oc2RXUmxYSEYxWVhKMGVtTnZjbVZjWTJGcGJXRm5a
WEYxWlhWbExtZ0FZenBjWVhCd2JHVnBiblJsY201aGJGeHBibU5zZFdSbApYR052Y21WbmNtRndh
R2xqYzF4alozQmtabUZ5Y21GNUxtZ0FZenBjWVhCd2JHVnBiblJsY201aGJGeHBibU5zZFdSbFhH
TnZjbVZuCmNtRndhR2xqYzF4aloyZHlZV1JwWlc1MExtZ0FZenBjWVhCd2JHVnBiblJsY201aGJG
eHBibU5zZFdSbFhHTnZjbVZuY21Gd2FHbGoKYzF4aloyTnZiRzl5YzNCaFkyVXVhQUJqT2x4d2Nt
OW5jbUZ0SUdacGJHVnpJQ2g0T0RZcFhHMXBZM0p2YzI5bWRDQjJhWE4xWVd3ZwpjM1IxWkdsdklE
aGNkbU5jY0d4aGRHWnZjbTF6Wkd0Y2FXNWpiSFZrWlZ4d2MyaHdZV05yTWk1b0FHTTZYR0Z3Y0d4
bGFXNTBaWEp1CllXeGNhVzVqYkhWa1pWeGpiM0psZG1sa1pXOWNZM1ppWVhObExtZ0FZenBjWVhC
d2JHVnBiblJsY201aGJGeHBibU5zZFdSbFhHTnYKY21WbmNtRndhR2xqYzF4aloyTnZiblJsZUhS
cGJXRm5aUzVvQUdNNlhHRndjR3hsYVc1MFpYSnVZV3hjYVc1amJIVmtaVnhqYjNKbApabTkxYm1S
aGRHbHZibHhqWm01MWJXSmxjbVp2Y20xaGRIUmxjaTVvQUdNNlhHRndjR3hsYVc1MFpYSnVZV3hj
YVc1amJIVmtaVnhqCmIzSmxaM0poY0docFkzTmNZMmRqYjI1MFpYaDBMbWdBWXpwY2NISnZaM0po
YlNCbWFXeGxjeUFvZURnMktWeHRhV055YjNOdlpuUWcKZG1semRXRnNJSE4wZFdScGJ5QTRYSFpq
WEdsdVkyeDFaR1ZjYkc5allXeGxMbWdBWXpwY1lYQndiR1ZwYm5SbGNtNWhiRnhwYm1OcwpkV1Js
WEdOdmNtVm5jbUZ3YUdsamMxeGpaM0JrWm05aWFtVmpkQzVvQUdNNlhHRndjR3hsYVc1MFpYSnVZ
V3hjYVc1amJIVmtaVnhqCmIzSmxaM0poY0docFkzTmNZMmRrWVhSaGNISnZkbWxrWlhJdWFBQmpP
bHhoY0hCc1pXbHVkR1Z5Ym1Gc1hHbHVZMngxWkdWY2NYVmgKY25SNlkyOXlaVnhqWVhKbGJtUmxj
bTluYkM1b0FHTTZYSEJ5YjJkeVlXMGdabWxzWlhNZ0tIZzROaWxjYldsamNtOXpiMlowSUhacApj
M1ZoYkNCemRIVmthVzhnT0Z4MlkxeHBibU5zZFdSbFhITmxkR3B0Y0M1b0FHTTZYR0Z3Y0d4bGFX
NTBaWEp1WVd4Y2FXNWpiSFZrClpWeHhkV0Z5ZEhwamIzSmxYR05oY21WdVpHVnlMbWdBWXpwY1lY
QndiR1ZwYm5SbGNtNWhiRnhwYm1Oc2RXUmxYR052Y21WbmNtRncKYUdsamMxeGpaMk52Ykc5eWNI
SnBkbUYwWlM1b0FHTTZYR0Z3Y0d4bGFXNTBaWEp1WVd4Y2FXNWpiSFZrWlZ4amIzSmxaM0poY0do
cApZM05jWTJkaVlYTmxMbWdBWXpwY2NISnZaM0poYlNCbWFXeGxjeUFvZURnMktWeHRhV055YjNO
dlpuUWdkbWx6ZFdGc0lITjBkV1JwCmJ5QTRYSFpqWEhCc1lYUm1iM0p0YzJSclhHbHVZMngxWkdW
Y2QybHVjMjlqYXpJdWFBQmpPbHhoY0hCc1pXbHVkR1Z5Ym1Gc1hHbHUKWTJ4MVpHVmNjWFZoY25S
NlkyOXlaVnhqWVhSeVlXNXpabTl5YlROa0xtZ0FZenBjWVhCd2JHVnBiblJsY201aGJGeHBibU5z
ZFdSbApYSEYxWVhKMGVtTnZjbVZjWTJGalptTnZiblJsZUhRdWFBQmpPbHh3Y205bmNtRnRJR1pw
YkdWeklDaDRPRFlwWEcxcFkzSnZjMjltCmRDQjJhWE4xWVd3Z2MzUjFaR2x2SURoY2RtTmNjR3ho
ZEdadmNtMXpaR3RjYVc1amJIVmtaVngzYVc1emJXTnlaQzVvQUdNNlhIQnkKYjJkeVlXMGdabWxz
WlhNZ0tIZzROaWxjYldsamNtOXpiMlowSUhacGMzVmhiQ0J6ZEhWa2FXOGdPRngyWTF4d2JHRjBa
bTl5YlhOawphMXhwYm1Oc2RXUmxYSGRwYm01bGRIZHJMbWdBWXpwY2NISnZaM0poYlNCbWFXeGxj
eUFvZURnMktWeHRhV055YjNOdlpuUWdkbWx6CmRXRnNJSE4wZFdScGJ5QTRYSFpqWEhCc1lYUm1i
M0p0YzJSclhHbHVZMngxWkdWY2QybHVaRzkzY3k1b0FHTTZYR0Z3Y0d4bGFXNTAKWlhKdVlXeGNh
VzVqYkhWa1pWeHhkV0Z5ZEhwamIzSmxYR05oWTJaaVlYTmxMbWdBWXpwY1lYQndiR1ZwYm5SbGNt
NWhiRnhwYm1OcwpkV1JsWEdOdmNtVm5jbUZ3YUdsamMxeGpaMkZtWm1sdVpYUnlZVzV6Wm05eWJT
NW9BR002WEhCeWIyZHlZVzBnWm1sc1pYTWdLSGc0Ck5pbGNiV2xqY205emIyWjBJSFpwYzNWaGJD
QnpkSFZrYVc4Z09GeDJZMXhwYm1Oc2RXUmxYR1Y0WTNCMExtZ0FZenBjWVhCd2JHVnAKYm5SbGNt
NWhiRnhwYm1Oc2RXUmxYSFZ1YVdOdlpHVmNkV05vWVhJdWFBQmpPbHhoY0hCc1pXbHVkR1Z5Ym1G
c1hHbHVZMngxWkdWYwpjWFZoY25SNlkyOXlaVnhqWVdKaGMyVXVhQUJqT2x4d2NtOW5jbUZ0SUda
cGJHVnpJQ2g0T0RZcFhHMXBZM0p2YzI5bWRDQjJhWE4xCllXd2djM1IxWkdsdklEaGNkbU5jY0d4
aGRHWnZjbTF6Wkd0Y2FXNWpiSFZrWlZ4dlltcHBaR3d1YUFCak9seHdjbTluY21GdElHWnAKYkdW
eklDaDRPRFlwWEcxcFkzSnZjMjltZENCMmFYTjFZV3dnYzNSMVpHbHZJRGhjZG1OY2FXNWpiSFZr
WlZ4amNuUmtaV1p6TG1nQQpZenBjWVhCd2JHVnBiblJsY201aGJGeHBibU5zZFdSbFhIVnVhV052
WkdWY2RYUjVjR1Z6TG1nQVl6cGNZWEJ3YkdWcGJuUmxjbTVoCmJGeHBibU5zZFdSbFhHTnZjbVZu
Y21Gd2FHbGpjMXhqWjNOaWIzVnVaSE11YUFCak9seGhjSEJzWldsdWRHVnlibUZzWEdsdVkyeDEK
WkdWY1kyOXlaV2R5WVhCb2FXTnpYR052Y21WbmNtRndhR2xqY3k1b0FHTTZYR0Z3Y0d4bGFXNTBa
WEp1WVd4Y2FXNWpiSFZrWlZ4agpiM0psWjNKaGNHaHBZM05jWTJkblpXOXRaWFJ5ZVM1b0FHTTZY
SEJ5YjJkeVlXMGdabWxzWlhNZ0tIZzROaWxjYldsamNtOXpiMlowCklIWnBjM1ZoYkNCemRIVmth
VzhnT0Z4MlkxeHBibU5zZFdSbFhITmhiQzVvQUdNNlhHRndjR3hsYVc1MFpYSnVZV3hjYVc1amJI
VmsKWlZ4MWJtbGpiMlJsWEhWdFlXTm9hVzVsTG1nQVl6cGNZWEJ3YkdWcGJuUmxjbTVoYkZ4cGJt
TnNkV1JsWEdOdmNtVm5jbUZ3YUdsagpjMXhqWjJKcGRHMWhjR052Ym5SbGVIUXVhQUJqT2x4d2Nt
OW5jbUZ0SUdacGJHVnpJQ2g0T0RZcFhHMXBZM0p2YzI5bWRDQjJhWE4xCllXd2djM1IxWkdsdklE
aGNkbU5jYVc1amJIVmtaVnhqY25SaGMzTmxiUzVvQUdNNlhHRndjR3hsYVc1MFpYSnVZV3hjYVc1
amJIVmsKWlZ4MWJtbGpiMlJsWEhCM2FXNHpNaTVvQUdNNlhIQnliMmR5WVcwZ1ptbHNaWE1nS0hn
NE5pbGNiV2xqY205emIyWjBJSFpwYzNWaApiQ0J6ZEhWa2FXOGdPRngyWTF4d2JHRjBabTl5YlhO
a2ExeHBibU5zZFdSbFhHOWhhV1JzTG1nQVl6cGNjSEp2WjNKaGJTQm1hV3hsCmN5QW9lRGcyS1Z4
dGFXTnliM052Wm5RZ2RtbHpkV0ZzSUhOMGRXUnBieUE0WEhaalhIQnNZWFJtYjNKdGMyUnJYR2x1
WTJ4MVpHVmMKWTJSbGNuSXVhQUJqT2x4d2NtOW5jbUZ0SUdacGJHVnpJQ2g0T0RZcFhHMXBZM0p2
YzI5bWRDQjJhWE4xWVd3Z2MzUjFaR2x2SURoYwpkbU5jYVc1amJIVmtaVngyWVdSbFpuTXVhQUJq
T2x4aGNIQnNaV2x1ZEdWeWJtRnNYR2x1WTJ4MVpHVmNZMjl5WldadmRXNWtZWFJwCmIyNWNZMlpo
ZEhSeWFXSjFkR1ZrYzNSeWFXNW5MbWdBWXpwY2NISnZaM0poYlNCbWFXeGxjeUFvZURnMktWeHRh
V055YjNOdlpuUWcKZG1semRXRnNJSE4wZFdScGJ5QTRYSFpqWEhCc1lYUm1iM0p0YzJSclhHbHVZ
MngxWkdWY2MyaGxiR3hoY0drdWFBQmpPbHh3Y205bgpjbUZ0SUdacGJHVnpJQ2g0T0RZcFhHMXBZ
M0p2YzI5bWRDQjJhWE4xWVd3Z2MzUjFaR2x2SURoY2RtTmNjR3hoZEdadmNtMXpaR3RjCmFXNWpi
SFZrWlZ4a1pHVXVhQUJqT2x4d2NtOW5jbUZ0SUdacGJHVnpJQ2g0T0RZcFhHMXBZM0p2YzI5bWRD
QjJhWE4xWVd3Z2MzUjEKWkdsdklEaGNkbU5jY0d4aGRHWnZjbTF6Wkd0Y2FXNWpiSFZrWlZ4M2FX
NXVkQzVvQUdNNlhHRndjR3hsYVc1MFpYSnVZV3hjYVc1agpiSFZrWlZ4a2FYTndZWFJqYUZ4emIz
VnlZMlV1YUFCak9seHdjbTluY21GdElHWnBiR1Z6SUNoNE9EWXBYRzFwWTNKdmMyOW1kQ0IyCmFY
TjFZV3dnYzNSMVpHbHZJRGhjZG1OY2FXNWpiSFZrWlZ4amRIbHdaUzVvQUdNNlhHRndjR3hsYVc1
MFpYSnVZV3hjYVc1amJIVmsKWlZ4amIzSmxabTkxYm1SaGRHbHZibHhqWm5WeWJHVnVkVzFsY21G
MGIzSXVhQUJqT2x4d2NtOW5jbUZ0SUdacGJHVnpJQ2g0T0RZcApYRzFwWTNKdmMyOW1kQ0IyYVhO
MVlXd2djM1IxWkdsdklEaGNkbU5jY0d4aGRHWnZjbTF6Wkd0Y2FXNWpiSFZrWlZ4cGJXMHVhQUJq
Ck9seGhjSEJzWldsdWRHVnlibUZzWEdsdVkyeDFaR1ZjZFc1cFkyOWtaVngxY21WdVlXMWxMbWdB
WXpwY1lYQndiR1ZwYm5SbGNtNWgKYkZ4cGJtTnNkV1JsWEdOdmNtVm5jbUZ3YUdsamMxeGpaMlp2
Ym5SeVpXNWtaWEpwYm1jdWFBQmpPbHhoY0hCc1pXbHVkR1Z5Ym1GcwpYR2x1WTJ4MVpHVmNZMjl5
WldadmRXNWtZWFJwYjI1Y1kyWjNhVzVrYjNkemJtRnRaV1J3YVhCbExtZ0FZenBjWVhCd2JHVnBi
blJsCmNtNWhiRnhwYm1Oc2RXUmxYR052Y21WbWIzVnVaR0YwYVc5dVhHTm1ZbUZuTG1nQVl6cGNZ
WEJ3YkdWcGJuUmxjbTVoYkZ4cGJtTnMKZFdSbFhIVnVhV052WkdWY2RYWmxjbTUxYlM1b0FHTTZY
SEJ5YjJkeVlXMGdabWxzWlhNZ0tIZzROaWxjYldsamNtOXpiMlowSUhacApjM1ZoYkNCemRIVmth
VzhnT0Z4MlkxeHdiR0YwWm05eWJYTmthMXhwYm1Oc2RXUmxYSFIyYjNWMExtZ0FZenBjY0hKdloz
SmhiU0JtCmFXeGxjeUFvZURnMktWeHRhV055YjNOdlpuUWdkbWx6ZFdGc0lITjBkV1JwYnlBNFhI
WmpYR2x1WTJ4MVpHVmNjM1J5YVc1bkxtZ0EKWXpwY1lYQndiR1ZwYm5SbGNtNWhiRnhwYm1Oc2RX
UmxYSFZ1YVdOdlpHVmNkWFJtTG1nQVl6cGNjSEp2WjNKaGJTQm1hV3hsY3lBbwplRGcyS1Z4dGFX
TnliM052Wm5RZ2RtbHpkV0ZzSUhOMGRXUnBieUE0WEhaalhIQnNZWFJtYjNKdGMyUnJYR2x1WTJ4
MVpHVmNkMmx1ClkyOXVMbWdBWXpwY1lYQndiR1ZwYm5SbGNtNWhiRnhwYm1Oc2RXUmxYSFZ1YVdO
dlpHVmNkWFJtT0M1b0FDUlVNaUFrWlhOd0lDNWoKWWt4dlkyRnNjeUFySUM1allsTmhkbVZrVW1W
bmN5QXJJRDBnSkZRd0lDNXlZVk5sWVhKamFGTjBZWEowSUQwZ0pHVnBjQ0FrVkRBZwpYaUE5SUNS
bGMzQWdKRlF3SURRZ0t5QTlBQ1JVTWlBa1pYTndJQzVqWWt4dlkyRnNjeUFySUM1allsTmhkbVZr
VW1WbmN5QXJJRDBnCkpGUXdJQzV5WVZObFlYSmphRk4wWVhKMElEMGdKR1ZwY0NBa1ZEQWdYaUE5
SUNSbGMzQWdKRlF3SURRZ0t5QTlJQ1JsWW5BZ0pGUXcKSURFME1DQXRJRjRnUFFBa1ZESWdKR1Z6
Y0NBdVkySk1iMk5oYkhNZ0t5QXVZMkpUWVhabFpGSmxaM01nS3lBOUlDUlVNQ0F1Y21GVApaV0Z5
WTJoVGRHRnlkQ0E5SUNSbGFYQWdKRlF3SUY0Z1BTQWtaWE53SUNSVU1DQTBJQ3NnUFNBa1pXSndJ
Q1JVTUNBeE5EQWdMU0JlCklEMGdKR1ZpZUNBa1ZEQWdNVFEwSUMwZ1hpQTlBQ1JVTWlBa1pYTndJ
QzVqWWt4dlkyRnNjeUFySUM1allsTmhkbVZrVW1WbmN5QXIKSUQwZ0pGUXdJQzV5WVZObFlYSmph
Rk4wWVhKMElEMGdKR1ZwY0NBa1ZEQWdYaUE5SUNSbGMzQWdKRlF3SURRZ0t5QTlJQ1JsWW5nZwpK
RlF3SURRZ0xTQmVJRDBBSkZReUlDUmxjM0FnTG1OaVRHOWpZV3h6SUNzZ0xtTmlVMkYyWldSU1pX
ZHpJQ3NnUFNBa1ZEQWdMbkpoClUyVmhjbU5vVTNSaGNuUWdQU0FrWldsd0lDUlVNQ0JlSUQwZ0pH
VnpjQ0FrVkRBZ05DQXJJRDBnSkdWaWVDQWtWREFnTmpRZ0xTQmUKSUQwQUpGUXlJQ1JsYzNBZ0xt
TmlURzlqWVd4eklDc2dMbU5pVTJGMlpXUlNaV2R6SUNzZ1BTQWtWREFnTG5KaFUyVmhjbU5vVTNS
aApjblFnUFNBa1pXbHdJQ1JVTUNCZUlEMGdKR1Z6Y0NBa1ZEQWdOQ0FySUQwZ0pHVmllQ0FrVkRB
Z05EQWdMU0JlSUQwQUpGUXlJQ1JsCmMzQWdMbU5pVEc5allXeHpJQ3NnTG1OaVUyRjJaV1JTWldk
eklDc2dQU0FrVkRBZ0xuSmhVMlZoY21Ob1UzUmhjblFnUFNBa1pXbHcKSUNSVU1DQmVJRDBnSkdW
emNDQWtWREFnTkNBcklEMGdKR1ZpY0NBa1ZEQWdORFFnTFNCZUlEMGdKR1ZpZUNBa1ZEQWdOREFn
TFNCZQpJRDBBSkZReUlDUmxjM0FnTG1OaVRHOWpZV3h6SUNzZ0xtTmlVMkYyWldSU1pXZHpJQ3Nn
UFNBa1ZEQWdMbkpoVTJWaGNtTm9VM1JoCmNuUWdQU0FrWldsd0lDUlVNQ0JlSUQwZ0pHVnpjQ0Fr
VkRBZ05DQXJJRDBnSkdWaWVDQWtWREFnTVRRd0lDMGdYaUE5QUNSVU1pQWsKWlhOd0lDNWpZa3h2
WTJGc2N5QXJJQzVqWWxOaGRtVmtVbVZuY3lBcklEMGdKRlF3SUM1eVlWTmxZWEpqYUZOMFlYSjBJ
RDBnSkdWcApjQ0FrVkRBZ1hpQTlJQ1JsYzNBZ0pGUXdJRFFnS3lBOUlDUmxZbkFnSkZRd0lERTBO
Q0F0SUY0Z1BTQWtaV0o0SUNSVU1DQXhOREFnCkxTQmVJRDBBSkZReUlDUmxjM0FnTG1OaVRHOWpZ
V3h6SUNzZ0xtTmlVMkYyWldSU1pXZHpJQ3NnUFNBa1ZEQWdMbkpoVTJWaGNtTm8KVTNSaGNuUWdQ
U0FrWldsd0lDUlVNQ0JlSUQwZ0pHVnpjQ0FrVkRBZ05DQXJJRDBnSkdWaWVDQWtWREFnTVRJMElD
MGdYaUE5QUNSVQpNaUFrWlhOd0lDNWpZa3h2WTJGc2N5QXJJQzVqWWxOaGRtVmtVbVZuY3lBcklE
MGdKRlF3SUM1eVlWTmxZWEpqYUZOMFlYSjBJRDBnCkpHVnBjQ0FrVkRBZ1hpQTlJQ1JsYzNBZ0pG
UXdJRFFnS3lBOUlDUmxZbkFnSkZRd0lERXlPQ0F0SUY0Z1BTQWtaV0o0SUNSVU1DQXgKTWpRZ0xT
QmVJRDBBSkZReUlDUmxjM0FnTG1OaVRHOWpZV3h6SUNzZ0xtTmlVMkYyWldSU1pXZHpJQ3NnUFNB
a1ZEQWdMbkpoVTJWaApjbU5vVTNSaGNuUWdQU0FrWldsd0lDUlVNQ0JlSUQwZ0pHVnpjQ0FrVkRB
Z05DQXJJRDBnSkdWaWVDQWtWREFnT0NBdElGNGdQUUFrClZESWdKR1Z6Y0NBdVkySk1iMk5oYkhN
Z0t5QXVZMkpUWVhabFpGSmxaM01nS3lBOUlDUlVNQ0F1Y21GVFpXRnlZMmhUZEdGeWRDQTkKSUNS
bGFYQWdKRlF3SUY0Z1BTQWtaWE53SUNSVU1DQTBJQ3NnUFNBa1pXSjRJQ1JVTUNBeE1pQXRJRjRn
UFFBa1ZESWdKR1Z6Y0NBdQpZMkpNYjJOaGJITWdLeUF1WTJKVFlYWmxaRkpsWjNNZ0t5QTlJQ1JV
TUNBdWNtRlRaV0Z5WTJoVGRHRnlkQ0E5SUNSbGFYQWdKRlF3CklGNGdQU0FrWlhOd0lDUlVNQ0Ew
SUNzZ1BTQWtaV0p3SUNSVU1DQXhOaUF0SUY0Z1BTQWtaV0o0SUNSVU1DQXhNaUF0SUY0Z1BRQWsK
VkRJZ0pHVnpjQ0F1WTJKTWIyTmhiSE1nS3lBdVkySlRZWFpsWkZKbFozTWdLeUE5SUNSVU1DQXVj
bUZUWldGeVkyaFRkR0Z5ZENBOQpJQ1JsYVhBZ0pGUXdJRjRnUFNBa1pYTndJQ1JVTUNBMElDc2dQ
U0FrWldKd0lDUlVNQ0F6TmlBdElGNGdQU0FrWldKNElDUlVNQ0E0CklDMGdYaUE5QUFBQUtRZ0FB
QWdBQUFBTEFDMElBQUFJQUFBQUNnQkpDQUFBQ3dBQUFBc0FUUWdBQUFzQUFBQUtBR3NJQUFBTUFB
QUEKQ3dCdkNBQUFEQUFBQUFvQWpnZ0FBRElDQUFBTEFKSUlBQUF5QWdBQUNnRE5DQUFBMXdFQUFB
c0EwUWdBQU5jQkFBQUtBUGNJQUFBNApBZ0FBQ3dEN0NBQUFPQUlBQUFvQUtBa0FBRFVDQUFBTEFD
d0pBQUExQWdBQUNnQlFDUUFBT1FJQUFBc0FWQWtBQURrQ0FBQUtBSVVKCkFBQTBBZ0FBQ3dDSkNR
QUFOQUlBQUFvQXFna0FBRG9DQUFBTEFLNEpBQUE2QWdBQUNnRGNDUUFBTXdJQUFBc0E0QWtBQURN
Q0FBQUsKQUE0S0FBQTdBZ0FBQ3dBU0NnQUFPd0lBQUFvQVRRb0FBQTBBQUFBTEFGRUtBQUFOQUFB
QUNnQnpDZ0FBZ3dBQUFBc0Fkd29BQUlNQQpBQUFLQUo0S0FBQ0NBQUFBQ3dDaUNnQUFnZ0FBQUFv
QXhnb0FBSUVBQUFBTEFNb0tBQUNCQUFBQUNnQWtDd0FBQ2dFQUFBc0FLQXNBCkFBb0JBQUFLQUZZ
TEFBQUxBUUFBQ3dCYUN3QUFDd0VBQUFvQVFnd0FBQ29CQUFBTEFFWU1BQUFxQVFBQUNnQmxEQUFB
S1FFQUFBc0EKYVF3QUFDa0JBQUFLQURRWUFBQUpBUUFBQ3dBNEdBQUFDUUVBQUFvQVVpQUFBRm9C
QUFBTEFGWWdBQUJhQVFBQUNnQ0VJQUFBWFFFQQpBQXNBaUNBQUFGMEJBQUFLQUxvZ0FBQmNBUUFB
Q3dDK0lBQUFYQUVBQUFvQThDQUFBR01CQUFBTEFQUWdBQUJqQVFBQUNnQXVJUUFBCmJ3RUFBQXNB
TWlFQUFHOEJBQUFLQURNekUwQXdBQUFBQWdBQUFBQUFBRURaUkNRRTJlSFpYQ1FFMlVRa0JNTUVB
QUFBOVFBQUFDUUEKQUFBQUFBQUFBQUFBQUE4QUFBQUFBQUFBQkFBQUFBQUFBQURqUEFBQUFBQUFB
QVFBQUFEeEFBQUFYZ0FBQUNzQUVCRUFBQUFBQUFBQQpBQUFBQUFBUEFBQUFBQUFBQUE0QUFBQzZF
QUFBQUFBQUFBQUFBR1poWW5ObUFCd0FFaEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFJ
QW9BQUEwQUN4RUVBQUFBUUFBQUFGOVlBQUlBQmdBQUFQSUFBQUFnQUFBQUFBQUFBQUFBQUFBUEFB
QUFvQVVBQUFFQUFBQVUKQUFBQUFBQUFBSUFCQUlBTUFBQUFFZ0FBQUFjQVdBQUFBQklBQUFBTEFG
d0FBQUFTQUFBQUNnQ2dBQUFBRWdBQUFBc0FwQUFBQUJJQQpBQUFLQU5sRUpBU0Q3QWpkSENUL0ZR
QUFBQURaWENRTWc4UUkyVVFrQk1NTUFBQUFHUUFBQUFZQUJBQUFBUFVBQUFBa0FBQUFBQUFBCkFB
QUFBQUFjQUFBQUFBQUFBQVFBQUFBQUFBQUE0endBQUFBQUFBQUVBQUFBOFFBQUFHNEFBQUFyQUJB
UkFBQUFBQUFBQUFBQUFBQUEKSEFBQUFBQUFBQUFiQUFBQXVoQUFBQUFBQUFBQUFBQmpaV2xzWmdB
Y0FCSVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBSwpBQUFOQUFzUkJBQUFBRUFBQUFC
ZldBQU9BRGtSQ2dBQUFBQUFBQUN1RUFBQUFnQUdBQUFBOGdBQUFDQUFBQUFBQUFBQUFBQUFBQndB
CkFBQ2dCUUFBQVFBQUFCUUFBQUFBQUFBQWpRRUFnQXdBQUFBWUFBQUFCd0JZQUFBQUdBQUFBQXNB
WEFBQUFCZ0FBQUFLQUpZQUFBQVkKQUFBQUN3Q2FBQUFBR0FBQUFBb0FzQUFBQUJnQUFBQUxBTFFB
QUFBWUFBQUFDZ0RaUkNRRTJVUWtDT2dBQUFBQTJWd2tCTmxFSkFURApDUUFBQUI4QUFBQVVBQVFB
QUFEMUFBQUFKQUFBQUFBQUFBQUFBQUFBRmdBQUFBQUFBQUFJQUFBQUFBQUFBT004QUFBQUFBQUFC
QUFBCkFQRUFBQUJzQUFBQUtnQVFFUUFBQUFBQUFBQUFBQUFBQUJZQUFBQUFBQUFBRlFBQUFMd1FB
QUFBQUFBQUFBQUFjRzkzWmdBY0FCSVEKQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQUtB
QUFOQUFzUkJBQUFBRUFBQUFCZldBQU5BQXNSQ0FBQUFFQUFBQUJmV1FBQwpBQVlBOGdBQUFDQUFB
QUFBQUFBQUFBQUFBQllBQUFDZ0JRQUFBUUFBQUJRQUFBQUFBQUFBb1FFQWdBd0FBQUFlQUFBQUJ3
QllBQUFBCkhnQUFBQXNBWEFBQUFCNEFBQUFLQUt3QUFBQWVBQUFBQ3dDd0FBQUFIZ0FBQUFvQTJV
UWtCTm5oMlZ3a0JObEVKQVREQkFBQUFQVUEKQUFBa0FBQUFBQUFBQUFBQUFBQVBBQUFBQUFBQUFB
UUFBQUFBQUFBQTR6d0FBQUFBQUFBRUFBQUE4UUFBQUYwQUFBQXFBQkFSQUFBQQpBQUFBQUFBQUFB
QUFEd0FBQUFBQUFBQU9BQUFBdWhBQUFBQUFBQUFBQUFCbVlXSnpBQndBRWhBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBCkFBQUFBQUFBSUFvQUFBMEFDeEVFQUFBQVFBQUFBRjlZQUFJQUJnQUFBQUR5QUFB
QUlBQUFBQUFBQUFBQUFBQUFEd0FBQUtBRkFBQUIKQUFBQUZBQUFBQUFBQUFEK0FRQ0FEQUFBQUNR
QUFBQUhBRmdBQUFBa0FBQUFDd0JjQUFBQUpBQUFBQW9Bb0FBQUFDUUFBQUFMQUtRQQpBQUFrQUFB
QUNnQ0Q3QWpaUkNRTTJSd2syVVFrRUlzRUpObGNKQVNMVkNRRWc4UUl3d1FBQUFEMUFBQUFKQUFB
QUFBQUFBQUFBQUFBCkhRQUFBQWdBQUFBSUFBQUFBQUFBQU9NOEFBQURBQUFBQkFBQUFQRUFBQUNL
QUFBQU1BQVBFUUFBQUFBQUFBQUFBQUFBQUIwQUFBQUQKQUFBQUdRQUFBR2NTQUFBQUFBQUFBQUFB
UTBkVGFYcGxUV0ZyWlFBY0FCSVFDQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBSwpBQUFR
QUFzUkJBQUFBRUFBQUFCM2FXUjBhQUFSQUFzUkNBQUFBRUFBQUFCb1pXbG5hSFFBRHdBTEVmVC8v
LzhMRUFBQWMybDZaUUFDCkFBWUFBQUR5QUFBQU1BQUFBQUFBQUFBQUFBQUFIUUFBQUdBVkFBQURB
QUFBSkFBQUFBQUFBQUFIQVFDQUF3QUFBQWdCQUlBWkFBQUEKQ1FFQWdBd0FBQUFwQUFBQUJ3QllB
QUFBS1FBQUFBc0FYQUFBQUNrQUFBQUtBTXdBQUFBcEFBQUFDd0RRQUFBQUtRQUFBQW9BMlVRawpD
Tm5BMkV3a0ZObEVKQVRad05oTUpBemV3dGxFSkJ6ZXd0bkoyVndrQk5sRUpCaUxSQ1FFM3NyWVRD
UVEzc0hZUkNRZzJWd2tDSXRVCkpBakRCQUFBQVBVQUFBQWtBQUFBQUFBQUFBQUFBQUEvQUFBQUFB
QUFBQ0FBQUFBQUFBQUE0endBQUFBQUFBQUVBQUFBOFFBQUFKVUEKQUFCREFBOFJBQUFBQUFBQUFB
QUFBQUFBUHdBQUFBQUFBQUErQUFBQXJ4TUFBQUFBQUFBQUFBQmZYME5IVUc5cGJuUkJjSEJzZVVG
bQpabWx1WlZSeVlXNXpabTl5YlFBY0FCSVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNB
S0FBQVFBQXNSQkFBQUFBZ1FBQUJ3CmIybHVkQUFNQUFzUkRBQUFBQkVRQUFCMEFBd0FDeEVFQUFB
QUNCQUFBSEFBQWdBR0FBQUFBUElBQUFCQUFBQUFBQUFBQUFBQUFBQS8KQUFBQWlCUUFBQVVBQUFB
MEFBQUFBQUFBQUgwQUFJQUFBQUFBZndBQWdDSUFBQUNBQUFDQUpnQUFBSUVBQUlBK0FBQUFnZ0FB
Z0F3QQpBQUF1QUFBQUJ3QllBQUFBTGdBQUFBc0FYQUFBQUM0QUFBQUtBTmdBQUFBdUFBQUFDd0Rj
QUFBQUxnQUFBQW9BMlVRa0NObkEyRXdrCkZObEVKQVRad05oTUpBemV3dG5KMlZ3a0JObEVKQmlM
UkNRRTNzcllUQ1FRM3NIWlhDUUlpMVFrQ01NRUFBQUE5UUFBQUNRQUFBQUEKQUFBQUFBQUFBRFVB
QUFBQUFBQUFJQUFBQUFBQUFBRGpQQUFBQUFBQUFBUUFBQUR4QUFBQWt3QUFBRUlBRHhFQUFBQUFB
QUFBQUFBQQpBQUExQUFBQUFBQUFBRFFBQUFDYUV3QUFBQUFBQUFBQUFGOWZRMGRUYVhwbFFYQndi
SGxCWm1acGJtVlVjbUZ1YzJadmNtMEFIQUFTCkVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFnQ2dBQUR3QUxFUVFBQUFBTEVBQUFjMmw2WlFBTUFBc1JEQUFBQUJFUUFBQjAKQUF3QUN4RUVB
QUFBQ3hBQUFITUFBZ0FHQUFEeUFBQUFRQUFBQUFBQUFBQUFBQUFBTlFBQUFJZ1VBQUFGQUFBQU5B
QUFBQUFBQUFDSApBQUNBQUFBQUFJa0FBSUFjQUFBQWlnQUFnQ0FBQUFDTEFBQ0FOQUFBQUl3QUFJ
QU1BQUFBTXdBQUFBY0FXQUFBQURNQUFBQUxBRndBCkFBQXpBQUFBQ2dEVUFBQUFNd0FBQUFzQTJB
QUFBRE1BQUFBS0FJUHNFSXRFSkJTRndNY0VKQUFBQUFESFJDUUVJQUFBQU1kRUpBZ3cKQUFBQXgw
UWtERUFBQUFCOEU0UDRCSGNPaXd5RWlRMEFBQUFBb3dBQUFBQ0R4QkRETkFBQUFBc0FBQUFHQURr
QUFBQU1BQUFBQmdBRQpBQUFBOVFBQUFDUUFBQUFBQUFBQUFBQUFBRUVBQUFBUUFBQUFCQUFBQUFB
QUFBRGpQQUFBQXdBQUFBUUFBQUR4QUFBQWpRQUFBRDBBCkVCRUFBQUFBQUFBQUFBQUFBQUJCQUFB
QUF3QUFBRDBBQUFCN0ZBQUFBQUFBQUFBQUFIZHJVMlYwUm05dWRGTnRiMjkwYUdsdVoweGwKZG1W
c0FCd0FFaEFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFBQkFBQ3hFRUFBQUFkQUFB
QUd4bGRtVnNBQmdBQ3hIcwovLy8vUXhNQUFITnRiMjkwYUdsdVoxUjVjR1VBQWdBR0FBQUFBUElB
QUFCQUFBQUFBQUFBQUFBQUFBQkJBQUFBdUFVQUFBVUFBQUEwCkFBQUFBQUFBQURjQUFJQURBQUFB
UHdBQWdDOEFBQUJDQUFDQU9BQUFBRU1BQUlBOUFBQUFSQUFBZ0F3QUFBQTRBQUFBQndCWUFBQUEK
T0FBQUFBc0FYQUFBQURnQUFBQUtBTkFBQUFBNEFBQUFDd0RVQUFBQU9BQUFBQW9Bb1FBQUFBRERB
UUFBQUF3QUFBQUdBQVFBQUFEMQpBQUFBSkFBQUFBQUFBQUFBQUFBQUJnQUFBQUFBQUFBQUFBQUFB
QUFBQU9NOEFBQUFBQUFBQkFBQUFQRUFBQUJoQUFBQVBRQVFFUUFBCkFBQUFBQUFBQUFBQUFBWUFB
QUFBQUFBQUJRQUFBSHdVQUFBQUFBQUFBQUFBZDJ0SFpYUkdiMjUwVTIxdmIzUm9hVzVuVEdWMlpX
d0EKSEFBU0VBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdBQUFnQUdBQUFBQVBJQUFB
QXdBQUFBQUFBQUFBQUFBQUFHQUFBQQp1QVVBQUFNQUFBQWtBQUFBQUFBQUFFY0FBSUFBQUFBQVNB
QUFnQVVBQUFCSkFBQ0FEQUFBQUQwQUFBQUhBRmdBQUFBOUFBQUFDd0JjCkFBQUFQUUFBQUFvQXBB
QUFBRDBBQUFBTEFLZ0FBQUE5QUFBQUNnRFpSQ1FFMlIwQUFBQUF3d1lBQUFBTkFBQUFCZ0FFQUFB
QTlRQUEKQUNRQUFBQUFBQUFBQUFBQUFBc0FBQUFBQUFBQUJBQUFBQUFBQUFEalBBQUFBQUFBQUFR
QUFBRHhBQUFBZVFBQUFFQUFFQkVBQUFBQQpBQUFBQUFBQUFBQUxBQUFBQUFBQUFBb0FBQUI5RkFB
QUFBQUFBQUFBQUhkclUyVjBSbTl1ZEZOdGIyOTBhR2x1WjBOdmJuUnlZWE4wCkFCd0FFaEFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFBQk1BQ3hFRUFBQUFRQUFBQUdOdmJuUnlZWE4w
QUFJQUJnQUEKQUFEeUFBQUFNQUFBQUFBQUFBQUFBQUFBQ3dBQUFMZ0ZBQUFEQUFBQUpBQUFBQUFB
QUFCTUFBQ0FBQUFBQUUwQUFJQUtBQUFBVGdBQQpnQXdBQUFCQ0FBQUFCd0JZQUFBQVFnQUFBQXNB
WEFBQUFFSUFBQUFLQUx3QUFBQkNBQUFBQ3dEQUFBQUFRZ0FBQUFvQTJRVUFBQUFBCnd3SUFBQUFO
QUFBQUJnQUVBQUFBOVFBQUFDUUFBQUFBQUFBQUFBQUFBQWNBQUFBQUFBQUFBQUFBQUFBQUFBRGpQ
QUFBQUFBQUFBUUEKQUFEeEFBQUFaQUFBQUVBQUVCRUFBQUFBQUFBQUFBQUFBQUFIQUFBQUFBQUFB
QVlBQUFCK0V3QUFBQUFBQUFBQUFIZHJSMlYwUm05dQpkRk50YjI5MGFHbHVaME52Ym5SeVlYTjBB
QndBRWhBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBQUFJQUJnRHlBQUFBCk1BQUFB
QUFBQUFBQUFBQUFCd0FBQUxnRkFBQURBQUFBSkFBQUFBQUFBQUJSQUFDQUFBQUFBRklBQUlBR0FB
QUFVd0FBZ0F3QUFBQkgKQUFBQUJ3QllBQUFBUndBQUFBc0FYQUFBQUVjQUFBQUtBS1FBQUFCSEFB
QUFDd0NvQUFBQVJ3QUFBQW9BZ2V5SUFBQUFWVFB0VlkxRQpKQ1JRVldnTUlBQUF4MFFrSkZ3QUFB
RC9GUUFBQUFDRndBK0VJQU1BQUl0RUpDQTdCUUFBQUFBUGhCQURBQUJUVmxXakFBQUFBUDhWCkFB
QUFBR29SaS9EL0ZRQUFBQUNMSFFBQUFBQlFWdi9UYUFBQUFBQlZWWTFNSkVoUlZXcGNWb2xFSkZE
L0ZRQUFBQUNEK1A5MUtvdFUKSkNqYlJDUW9oZEo5QnRnRkFBQUFBTncxQUFBQUFGNWJYZGxjSkJE
WlJDUVFnY1NJQUFBQXc0dEVKRHlMVENSQVYxVlZqVlFrTUZLSgpSQ1JrVlkxRUpHUlE5OWxWeDBR
a2JDZ0FBQUJteDBRa2VBRUFpV3drZkltc0pJQUFBQUNKckNTRUFBQUFpYXdraUFBQUFJbXNKSkFB
CkFBQ0pUQ1IwWnNkRUpIb2dBSW1zSkl3QUFBRC9GUUFBQUFDTCtGZFdpWHdrT1AvVGpZd2tnQUFB
QUZGcUdGZUpSQ1JJL3hVQUFBQUEKaTVRa2pBQUFBQSt2VkNSRWkwUWtLRkpWVU9nQUFBQUFnOFFN
YWdKVy94VUFBQUFBVlZiL0ZRQUFBQUJvLy8vL0FGYi9GUUFBQUFCVgpWdjhWQUFBQUFGVnFBWTFN
SkNoUlZWVlZWVmIvRlFBQUFBQXovekxiT1d3a1JJbHNKQmdQaG1ZQkFBQXowb2xVSkJBNy9YVmhp
MHdrClFBUEpBOGt6d0R2TmRpdUxYQ1FvQTlPTlpDUUFpaHdDZ1BzZ2RnV0ErL0J5Q1lQQUFUdkJj
dXpyQzR0VUpCQ05QQUlEZkNRb2kwUWsKR0l0VUpCQURsQ1NNQUFBQWc4QUJPMFFrUklsRUpCaUpW
Q1FRY3FNNy9RK0Urd0FBQUZWVy94VUFBQUFBYVAvLy93QlcveFVBQUFBQQpWV29CalVRa0tGQlZW
VlZWVnY4VkFBQUFBTm5vaWdmWlZDUVkyVndrRUErMnlJbE1KQndQdHRQYlJDUWMzUVVBQUFBQWlW
UWtITno1CjJjblpYQ1EwMjBRa0hON3gyVndrSE5sRUpCRFpSQ1FjMmNub0FBQUFBTmxjSkNUWlJD
UWsyVndrRk5sRUpEVFpSQ1FRNkFBQUFBRFoKWENRazJVUWtKTmhFSkJUY0pRQUFBQURaWENRVTJV
UWtGTm5oMlZ3a0ZObEVKQlRaWENRVTJVUWtGTmxFSkJqWTJkL2c5c1JCZFJEWgpYQ1FZMlVRa0VO
a2RBQUFBQU9zQzNkalpSQ1FRM0FVQUFBQUEyVndrRU5rRkFBQUFBTmxFSkJEWTBkL2czZG4yeEFV
UGkyci8vLy9kCjJPc2VpMFFrTE50RUpDeUZ3SDBHMkFVQUFBQUEzRFVBQUFBQTJSMEFBQUFBaTB3
a1BJczlBQUFBQUZGVy85ZUxWQ1E0VWxiLzE0dEUKSkRCUS94VUFBQUFBVnY4VkFBQUFBTmtGQUFB
QUFGOWVXMTJCeElnQUFBREQyUVVBQUFBQVhZSEVpQUFBQU1NZkFBQUFlQUFBQUFZQQpNUUFBQUhj
QUFBQUdBRDhBQUFCM0FBQUFCZ0JGQUFBQWRBQUFBQVlBVHdBQUFITUFBQUFHQUZVQUFBQnlBQUFB
QmdCZUFBQUFjUUFBCkFBWUFjd0FBQUc0QUFBQUdBSW9BQUFCdEFBQUFCZ0NRQUFBQWFnQUFBQVlB
QmdFQUFHY0FBQUFHQUNVQkFBQm1BQUFBQmdBOUFRQUEKZVFBQUFCUUFTUUVBQUdVQUFBQUdBRkVC
QUFCa0FBQUFCZ0JkQVFBQVl3QUFBQVlBWlFFQUFHSUFBQUFHQUhnQkFBQmhBQUFBQmdEOQpBUUFB
WXdBQUFBWUFDUUlBQUdJQUFBQUdBQndDQUFCaEFBQUFCZ0E4QWdBQVhRQUFBQVlBWVFJQUFCOEFB
QUFVQUhvQ0FBQWZBQUFBCkZBQ01BZ0FBV2dBQUFBWUF3UUlBQUZjQUFBQUdBTThDQUFCVUFBQUFC
Z0RaQWdBQVVRQUFBQVlBQWdNQUFHMEFBQUFHQUFnREFBQnEKQUFBQUJnQU9Bd0FBVndBQUFBWUFH
QU1BQUhJQUFBQUdBQzhEQUFCT0FBQUFCZ0EyQXdBQVRRQUFBQVlBUEFNQUFGY0FBQUFHQUUwRApB
QUJYQUFBQUJnQUVBQUFBOVFBQUFLUUFBQUFBQUFBQUFBQUFBRmtEQUFDSUFBQUFBQUFBQUFBQUFB
RGpQQUFBQndBQUFBUUFBQUFICkFBQUFTd01BQUlnQUFBQUFBQUFBQUFBQUFEbzlBQUFBQUFRQUFB
QUFBRHdBQUFBSEF3QUFpQUFBQUFBQUFBQUFBQUFBcEQwQUFBQUEKQ0FBQUFBQUFQUUFBQUFVREFB
Q0lBQUFBQUFBQUFBQUFBQUNrUFFBQUFBQU1BQUFBQUFDdkFBQUFrZ0lBQUlnQUFBQUFBQUFBQUFB
QQpBS1E5QUFBQUFCQUFBQUFBQVBFQUFBRHVBZ0FBTndBUEVRQUFBQUFBQUFBQUFBQUFBRmtEQUFB
SEFBQUFVZ01BQUg0VEFBQUFBQUFBCkFBQUFZMnhsWVhKVWVYQmxRMjl1ZEhKaGMzUUFIQUFTRUln
QUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQUFBQUFBZ0FBRlFBTUVYMFQKQUFBQUFBQUFBQUJwWkdW
dWRHbDBlUUFVQUFzUm9QLy8vd01FQUFCdmJHUkNhWFJ0WVhBQUhnQUxFWVQvLy8vWkVBQUFjbVZt
WlhKbApjbTVqWlVOb1lYSmhZM1JsY2dBVEFBc1JuUC8vL3dNRUFBQnZiR1JJUms5T1ZBQVhBQXNS
cFAvLy8zb1RBQUJuYkhsd2FFMWxkSEpwClkzTUFFUUFMRVl6Ly8vOGdCQUFBY0dsNFpXeHpBQklB
REJGQUFBQUFBQUFBQUFBQVoyRnRiV0VBRXdBTEVaRC8vLzkxQUFBQVkyOXUKZEhKaGMzUUFFUUFM
RVpULy8vOVhFd0FBWW1sMGJXRndBQklBQ3hIay8vLy9keE1BQUdKdGNFbHVabThBRlFBTEViai8v
LzkwRXdBQQpZbWwwYldGd1NXNW1id0FaQUF3UmRRQUFBQUFBQUFBQUFHeGhjM1JEYjI1MGNtRnpk
QUFNQUFzUmZQLy8vM1VBQUFCcEFCTUFDeEY4Ci8vLy9RQUFBQUcxcGJrUmxiSFJoQUF3QUN4RjAv
Ly8vUUFBQUFHY0FFQUFMRVhqLy8vOUFBQUFBWkdWc2RHRUFEZ0E1RVIwQUFBQUEKQUFBQVJSTUFB
QTRBT1JGREFBQUFBQUFBQUVrVEFBQU9BRGtSVFFBQUFBQUFBQUJPRXdBQURnQTVFVnNBQUFBQUFB
QUFUUk1BQUE0QQpPUkZ4QUFBQUFBQUFBRlVUQUFBT0FEa1JCQUVBQUFBQUFBQmRFd0FBRGdBNUVS
SUJBQUFBQUFBQVRSTUFBQTRBT1JFakFRQUFBQUFBCkFHQVRBQUFPQURrUlJ3RUFBQUFBQUFCaUV3
QUFEZ0E1RVU4QkFBQUFBQUFBWkJNQUFBNEFPUkZiQVFBQUFBQUFBR1lUQUFBT0FEa1IKWXdFQUFB
QUFBQUJtRXdBQURnQTVFWFlCQUFBQUFBQUFiUk1BQUE0QU9SSDdBUUFBQUFBQUFHWVRBQUFPQURr
UkJ3SUFBQUFBQUFCbQpFd0FBRGdBNUVSb0NBQUFBQUFBQWJSTUFBQTRBT1JFZUF3QUFBQUFBQUUw
VEFBQU9BRGtSSmdNQUFBQUFBQUJORXdBQURnQTVFUzBECkFBQUFBQUFBYmhNQUFBNEFPUkUwQXdB
QUFBQUFBRzhUQUFBQ0FBWUFBQUR5QUFBQW1BRUFBQUFBQUFBQUFBQUFXUU1BQUxnRkFBQXcKQUFB
QWpBRUFBQUFBQUFCV0FBQ0FCd0FBQUZ3QUFJQTlBQUFBWVFBQWdFa0FBQUJqQUFDQVhRQUFBR2NB
QUlCOEFBQUFhQUFBZ0o4QQpBQUNyQUFDQXBnQUFBSElBQUlDcUFBQUFjd0FBZ0s4QUFBQjRBQUNB
REFFQUFIa0FBSUFVQVFBQWZBQUFnQ2tCQUFCOUFBQ0FSQUVBCkFIOEFBSUJOQVFBQWdBQUFnRlVC
QUFDQ0FBQ0FZUUVBQUlNQUFJQnBBUUFBaEFBQWdId0JBQUNHQUFDQWZnRUFBSWNBQUlDQUFRQUEK
aUFBQWdKZ0JBQUNKQUFDQXNBRUFBSW9BQUlDekFRQUFqUUFBZ0wwQkFBQ0pBQUNBeEFFQUFJMEFB
SURHQVFBQWpnQUFnUEVCQUFDVQpBQUNBK1FFQUFKVUFBSUFCQWdBQWxnQUFnQTBDQUFDWEFBQ0FJ
QUlBQUpvQUFJQW9BZ0FBbXdBQWdGb0NBQUNjQUFDQXBnSUFBSjBBCkFJQzNBZ0FBbmdBQWdMc0NB
QUNmQUFDQXlRSUFBSnNBQUlEeUFnQUFvUUFBZ1BRQ0FBQ2pBQUNBRWdNQUFLVUFBSUFnQXdBQXBn
QUEKZ0NnREFBQ25BQUNBTXdNQUFLZ0FBSUE2QXdBQXFnQUFnRVFEQUFDckFBQ0FTd01BQUYwQUFJ
QlNBd0FBcXdBQWdBd0FBQUJNQUFBQQpCd0RZQUFBQVRBQUFBQXNBM0FBQUFFd0FBQUFLQUJjQkFB
QnhBQUFBQ3dBYkFRQUFjUUFBQUFvQXBRRUFBRmNBQUFBTEFLa0JBQUJYCkFBQUFDZ0FNQWdBQWR3
QUFBQXNBRUFJQUFIY0FBQUFLQUdZQ0FBQk1BQUFBQ3dCcUFnQUFUQUFBQUFvQWRnSUFBRXdBQUFB
TEFIb0MKQUFCTUFBQUFDZ0NHQWdBQVRBQUFBQXNBaWdJQUFFd0FBQUFLQUpZQ0FBQk1BQUFBQ3dD
YUFnQUFUQUFBQUFvQXBnSUFBRXdBQUFBTApBS29DQUFCTUFBQUFDZ0MyQWdBQVRBQUFBQXNBdWdJ
QUFFd0FBQUFLQU1ZQ0FBQk1BQUFBQ3dES0FnQUFUQUFBQUFvQTFnSUFBRXdBCkFBQUxBTm9DQUFC
TUFBQUFDZ0RtQWdBQVRBQUFBQXNBNmdJQUFFd0FBQUFLQVBZQ0FBQk1BQUFBQ3dENkFnQUFUQUFB
QUFvQUJnTUEKQUV3QUFBQUxBQW9EQUFCTUFBQUFDZ0FXQXdBQVRBQUFBQXNBR2dNQUFFd0FBQUFL
QUNZREFBQk1BQUFBQ3dBcUF3QUFUQUFBQUFvQQpOZ01BQUV3QUFBQUxBRG9EQUFCTUFBQUFDZ0JH
QXdBQVRBQUFBQXNBU2dNQUFFd0FBQUFLQUZZREFBQk1BQUFBQ3dCYUF3QUFUQUFBCkFBb0FaZ01B
QUV3QUFBQUxBR29EQUFCTUFBQUFDZ0IyQXdBQVRBQUFBQXNBZWdNQUFFd0FBQUFLQUlZREFBQk1B
QUFBQ3dDS0F3QUEKVEFBQUFBb0FsZ01BQUV3QUFBQUxBSm9EQUFCTUFBQUFDZ0N3QXdBQVRBQUFB
QXNBdEFNQUFFd0FBQUFLQURNekUwQUFBQUNnbVptNQpQd0FBQUVBQUFBQUFBQUR3UHdBQUFBQUE0
RzlBQUFDQVB3QUFBQUFBUUk5QUFBQ0FUd0FBQVFBQUFBQUFBQUFBQUFBQUFRRFFCd0FBClZvczFB
QUFBQUdvQWFBQUFBQUJxQUdwSy85WnFBR2dBQUFBQWFnQm9DaUFBQVAvVzZBQUFBQURaSFFBQUFB
REdCUUFBQUFBQlhzTUQKQUFBQWVBQUFBQVlBQ2dBQUFJTUFBQUFHQUJjQUFBQ0NBQUFBQmdBbEFB
QUFUQUFBQUJRQUt3QUFBQTBBQUFBR0FERUFBQUNCQUFBQQpCZ0FFQUFBQTlRQUFBRVFBQUFBQUFB
QUFBQUFBQURnQUFBQUFBQUFBQUFBQUFBQUFBQURqUEFBQUFRQUFBQVFBQUFBQkFBQUFOZ0FBCkFB
QUFBQUFBQUFBQUFBQUFBT004QUFBQUFBUUFBQUFBQVBFQUFBQ0dBQUFBUWdBUUVRQUFBQUFBQUFB
QUFBQUFBRGdBQUFBQkFBQUEKTndBQUFJY1RBQUFBQUFBQUFBQUFkMnRUZVhOMFpXMUdiMjUwVTIx
dmIzUm9hVzVuUTJoaGJtZGxaQUFjQUJJUUFBQUFBQUFBQUFBQQpBQUFBQkFBQUFBQUFBQUFBQUFB
Q0FBQU9BRGtSRWdBQUFBQUFBQUJGRXdBQURnQTVFU0lBQUFBQUFBQUFSUk1BQUFJQUJnQUFBUElB
CkFBQklBQUFBQUFBQUFBQUFBQUE0QUFBQXVBVUFBQVlBQUFBOEFBQUFBQUFBQUs0QUFJQUJBQUFB
cndBQWdCUUFBQUN3QUFDQUpBQUEKQUxFQUFJQXZBQUFBc2dBQWdEY0FBQUN6QUFDQURBQUFBSDRB
QUFBSEFIZ0FBQUIrQUFBQUN3QjhBQUFBZmdBQUFBb0F2Z0FBQUg0QQpBQUFMQU1JQUFBQitBQUFB
Q2dET0FBQUFmZ0FBQUFzQTBnQUFBSDRBQUFBS0FPZ0FBQUIrQUFBQUN3RHNBQUFBZmdBQUFBb0Fo
ZjkwCkZGQlcveFVBQUFBQVYxYi9GUUFBQUFDRHhCRERhZ0JXL3hVQUFBQUFnOFFJd3dnQUFBQ0tB
QUFBQmdBUUFBQUFpUUFBQUFZQUhRQUEKQUlvQUFBQUdBQVFBQUFEMUFBQUFKQUFBQUFBQUFBQUFB
QUFBSlFBQUFBQUFBQUFBQUFBQUFBQUFBT004QUFBQUFBQUFCQUFBQVBFQQpBQURaQUFBQU93QVBF
UUFBQUFBQUFBQUFBQUFBQUNVQUFBQUFBQUFBSkFBQUFJWVRBQUFBQUFBQUFBQUFjMlYwUm05dWRG
TnRiMjkwCmFHbHVaMU4wZVd4bEFCd0FFaEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
b0FBQklBQmhFcEVBQUFGd0JqWjBOdmJuUmwKZUhRQUZnQUdFWFVBQUFBWUFITnRiMjkwYUdsdVox
UjVjR1VBSEFBR0VUQUFBQUFCQUdadmJuUkJiR3h2ZDNOVGJXOXZkR2hwYm1jQQpEZ0E1RVFZQUFB
QUFBQUFBZ0JNQUFBNEFPUkVPQUFBQUFBQUFBSUlUQUFBT0FEa1JHd0FBQUFBQUFBQ0FFd0FBQWdB
R0FBQUFBUElBCkFBQlFBQUFBQUFBQUFBQUFBQUFsQUFBQXVBVUFBQWNBQUFCRUFBQUFBQUFBQUxZ
QUFJQUFBQUFBdHdBQWdBUUFBQUM0QUFDQURBQUEKQUxrQUFJQVhBQUFBdkFBQWdCZ0FBQUM3QUFD
QUpBQUFBTHdBQUlBTUFBQUFpQUFBQUFjQVdBQUFBSWdBQUFBTEFGd0FBQUNJQUFBQQpDZ0RoQUFB
QWlBQUFBQXNBNVFBQUFJZ0FBQUFLQVBFQUFBQ0lBQUFBQ3dEMUFBQUFpQUFBQUFvQUFRRUFBSWdB
QUFBTEFBVUJBQUNJCkFBQUFDZ0FjQVFBQWlBQUFBQXNBSUFFQUFJZ0FBQUFLQUZOV2kzUWtERmRX
TS8vL0ZRQUFBQUNEeEFTRXdIUU1WdjhWQUFBQUFJUEUKQkl2NG9RQUFBQUNGd0l2WWRCMkxSQ1FV
VUZiL0ZRQUFBQUJUVnY4VkFBQUFBSVBFRUl2SFgxNWJ3Mm9BVnY4VkFBQUFBSVBFQ0l2SApYMTVi
d3d3QUFBQ1JBQUFBQmdBYUFBQUFrQUFBQUFZQUpBQUFBQXNBQUFBR0FEWUFBQUNLQUFBQUJnQStB
QUFBaVFBQUFBWUFVQUFBCkFJb0FBQUFHQUFRQUFBRDFBQUFBaEFBQUFBQUFBQUFBQUFBQVhRQUFB
QUFBQUFBSUFBQUFBQUFBQU9NOEFBQUhBQUFBQkFBQUFBRUEKQUFCYkFBQUFBQUFBQUFnQUFBQUFB
QUFBSVQ0QUFBWUFCQUFBQUFBQUFnQUFBRmtBQUFBQUFBQUFDQUFBQUFBQUFBQWhQZ0FBQlFBSQpB
QUFBQUFBSEFBQUFVd0FBQUFBQUFBQUlBQUFBQUFBQUFDRStBQUFBQUF3QUFBQUFBUEVBQUFEbkFB
QUFQUUFRRVFBQUFBQUFBQUFBCkFBQUFBRjBBQUFBSEFBQUFYQUFBQUg0VUFBQUFBQUFBQUFBQWQy
dFRaWFJHYjI1MFUyMXZiM1JvYVc1blUzUjViR1VBSEFBU0VBQUEKQUFBQUFBQUFBQUFBQUF3QUFB
QUFBQUFBQUFBQUFnQUFGQUFMRVFRQUFBQXBFQUFBWTJkRGIyNTBaWGgwQUI0QUN4RUlBQUFBTUFB
QQpBR1p2Ym5SQmJHeHZkM05UYlc5dmRHaHBibWNBRGdBNUVRb0FBQUFBQUFBQWd4TUFBQTRBT1JF
WUFBQUFBQUFBQUlRVEFBQU9BRGtSCk5BQUFBQUFBQUFDQUV3QUFEZ0E1RVR3QUFBQUFBQUFBZ2hN
QUFBNEFPUkZPQUFBQUFBQUFBSUFUQUFBQ0FBWUFBUElBQUFCZ0FBQUEKQUFBQUFBQUFBQUJkQUFB
QXVBVUFBQWtBQUFCVUFBQUFBQUFBQUw4QUFJQUNBQUFBd1FBQWdCY0FBQURDQUFDQUl3QUFBTU1B
QUlCRgpBQUFBeFFBQWdFb0FBQURHQUFDQVN3QUFBTU1BQUlCWEFBQUF4UUFBZ0Z3QUFBREdBQUNB
REFBQUFJOEFBQUFIQUxnQUFBQ1BBQUFBCkN3QzhBQUFBandBQUFBb0FMd0VBQUk4QUFBQUxBRE1C
QUFDUEFBQUFDZ0EvQVFBQWp3QUFBQXNBUXdFQUFJOEFBQUFLQUU4QkFBQ1AKQUFBQUN3QlRBUUFB
andBQUFBb0FYd0VBQUk4QUFBQUxBR01CQUFDUEFBQUFDZ0J2QVFBQWp3QUFBQXNBY3dFQUFJOEFB
QUFLQUlnQgpBQUNQQUFBQUN3Q01BUUFBandBQUFBb0FWNHQ4SkF5Ri8zUWNWb3QwSkF4cUFWYi9G
UUFBQUFCWFZ2OFZBQUFBQUlQRUVGNWZ3MS9IClJDUUlBQUFBQVA4bEFBQUFBQk1BQUFDS0FBQUFC
Z0FiQUFBQWlRQUFBQVlBTUFBQUFJb0FBQUFHQUFRQUFBRDFBQUFBWkFBQUFBQUEKQUFBQUFBQUFO
QUFBQUFBQUFBQUlBQUFBQUFBQUFPTThBQUFCQUFBQUJBQUFBQUVBQUFBbEFBQUFBQUFBQUFnQUFB
QUFBQUFBNHp3QQpBQUFBQkFBQUFBQUFDZ0FBQUJrQUFBQUFBQUFBQ0FBQUFBQUFBQURqUEFBQUFB
QUlBQUFBQUFEeEFBQUF3QUFBQUVFQUVCRUFBQUFBCkFBQUFBQUFBQUFBMEFBQUFBUUFBQUNZQUFB
Q0NFd0FBQUFBQUFBQUFBSGRyVW1WemRHOXlaVVp2Ym5SVGJXOXZkR2hwYm1kVGRIbHMKWlFBY0FC
SVFBQUFBQUFBQUFBQUFBQUFBQ0FBQUFBQUFBQUFBQUFBQ0FBQVVBQXNSQkFBQUFDa1FBQUJqWjBO
dmJuUmxlSFFBRXdBTApFUWdBQUFCMUFBQUFiMnhrVTNSNWJHVUFEZ0E1RVJFQUFBQUFBQUFBZ0JN
QUFBNEFPUkVaQUFBQUFBQUFBSUlUQUFBT0FEa1JMZ0FBCkFBQUFBQUNBRXdBQUFnQUdBUElBQUFB
NEFBQUFBQUFBQUFBQUFBQTBBQUFBdUFVQUFBUUFBQUFzQUFBQUFBQUFBTWtBQUlBQkFBQUEKeWdB
QWdDUUFBQURMQUFDQUpRQUFBTW9BQUlBTUFBQUFsZ0FBQUFjQW1BQUFBSllBQUFBTEFKd0FBQUNX
QUFBQUNnQUlBUUFBbGdBQQpBQXNBREFFQUFKWUFBQUFLQUJnQkFBQ1dBQUFBQ3dBY0FRQUFsZ0FB
QUFvQUtBRUFBSllBQUFBTEFDd0JBQUNXQUFBQUNnQkFBUUFBCmxnQUFBQXNBUkFFQUFKWUFBQUFL
QUlQc1BOa0ZBQUFBQUZPTFhDUlEyVndrQ0lUYlZvdDBKRWpHUkNRUUFjWkVKQXNCZEVxQVBRQUEK
QUFBQXhrUWtDd0IxQmVnQUFBQUFnejBBQUFBQUFOa0ZBQUFBQU5sY0pBd1BsY0NEUFFBQUFBQUJp
RVFrRUhVV2FoQlcveFVBQUFBQQoyUVVBQUFBQTJWd2tGSVBFQ05sRUpBeFIyUndrVnY4VkFBQUFB
Rk5XL3hVQUFBQUFpMHdrSUZGVy94VUFBQUFBalZRa1JGWlMveFVBCkFBQUEyZWlMQ0l0UUJJbE1K
RFRZVkNRMGkwZ0lpVlFrT0l0UURJbE1KRHlMU0JDSlZDUkFpMUFVMytDRHhDRDJ4RVNKVENRa2lW
UWsKS0hvKzJVUWtJTjNoMytEZDJmYkVSSHNSMlFVQUFBQUEydW5mNFBiRVJIb2k2d0xkMk5udTJG
UWtHTi9nOXNSRWVnL1lYQ1FjMytEMgp4RVI2QnJBQjZ3VGQyRExBZ0h3a0N3Q0lSQ1JVZEErQWZD
Uk1BSFVFaE1CMUJMQUI2d0l5d0ZCVy94VUFBQUFBaTBRa1hGQlcveFVBCkFBQUFnOFFRWGx1RHhE
ekRCUUFBQUtvQUFBQUdBQ2NBQUFDQkFBQUFCZ0EwQUFBQWZnQUFBQlFBT2dBQUFJTUFBQUFHQUVF
QUFBQU4KQUFBQUJnQk9BQUFBZ2dBQUFBWUFYZ0FBQUlrQUFBQUdBR1FBQUFCUkFBQUFCZ0I2QUFB
QXB3QUFBQVlBZ2dBQUFLWUFBQUFHQUk0QQpBQUNsQUFBQUJnQ2FBQUFBcEFBQUFBWUE2QUFBQUtN
QUFBQUdBRGtCQUFDZEFBQUFCZ0JGQVFBQW5BQUFBQVlBQkFBQUFQVUFBQUJrCkFBQUFBQUFBQUFB
QUFBQlNBUUFBUEFBQUFCQUFBQUFBQUFBQTR6d0FBQlVBQUFBRUFBQUFDZ0FBQUVRQkFBQThBQUFB
RUFBQUFBQUEKQUFDSlBnQUFDd0FFQUFBQUFBQVZBQUFBT0FFQUFEd0FBQUFRQUFBQUFBQUFBSWsr
QUFBQUFBZ0FBQUFBQVBFQUFBRFRBUUFBUmdBUQpFUUFBQUFBQUFBQUFBQUFBQUZJQkFBQVZBQUFB
VGdFQUFJQVVBQUFBQUFBQUFBQUFkMnRUWlhSRFIwTnZiblJsZUhSR2IyNTBVbVZ1ClpHVnlhVzVu
VTNSNWJHVUFIQUFTRUR3QUFBQUFBQUFBQUFBQUFBZ0FBQUFBQUFBQUFBQUFBZ0FBRkFBTEVRUUFB
QUFwRUFBQVkyZEQKYjI1MFpYaDBBQmNBQ3hFSUFBQUFNQUFBQUdselUzbHpkR1Z0Um05dWRBQVlB
QXNSREFBQUFEQUFBQUJwYzFCeWFXNTBaWEpHYjI1MApBQ0lBQ3hFUUFBQUFNQUFBQUhWelpWQnNZ
WFJtYjNKdFRtRjBhWFpsUjJ4NWNHaHpBQndBQ3hFUUFBQUFNQUFBQUdselVIVnlaVlJ5CllXNXpi
R0YwYVc5dUFCTUFDeEhFLy8vL1FBQUFBR052Ym5SeVlYTjBBQm9BQ3hISS8vLy9NQUFBQUhOb2Iz
VnNaRUZ1ZEdsaGJHbGgKY3dBZUFBc1J3Ly8vL3pBQUFBQnRZWGxUZFdKd2FYaGxiRkJ2YzJsMGFX
OXVBQnNBQ3hITS8vLy9FUkFBQUdOdmJuUmxlSFJVY21GdQpjMlp2Y20wQURnQTVFVndBQUFBQUFB
QUFnaE1BQUE0QU9SRjRBQUFBQUFBQUFJa1RBQUFPQURrUmdBQUFBQUFBQUFDQUV3QUFEZ0E1CkVZ
d0FBQUFBQUFBQWdCTUFBQTRBT1JHWUFBQUFBQUFBQUdzU0FBQU9BRGtSTndFQUFBQUFBQUNBRXdB
QURnQTVFVU1CQUFBQUFBQUEKZ0JNQUFBSUFCZ0FBOGdBQUFLQUFBQUFBQUFBQUFBQUFBRklCQUFD
NEJRQUFFUUFBQUpRQUFBQUFBQUFBemdBQWdBTUFBQURSQUFDQQpDZ0FBQU5JQUFJQWxBQUFBMVFB
QWdETUFBQURXQUFDQU9BQUFBTmdBQUlCTUFBQUEyUUFBZ0ZrQUFBRGFBQUNBWWdBQUFOc0FBSUJ2
CkFBQUEzZ0FBZ0g0QUFBRGZBQUNBaGdBQUFPQUFBSUNTQUFBQTRRQUFnSjRBQUFEaUFBQ0FHUUVB
QU9NQUFJQTlBUUFBNUFBQWdFNEIKQUFEbEFBQ0FEQUFBQUpzQUFBQUhBSmdBQUFDYkFBQUFDd0Nj
QUFBQW13QUFBQW9BMndFQUFKc0FBQUFMQU44QkFBQ2JBQUFBQ2dEcgpBUUFBbXdBQUFBc0E3d0VB
QUpzQUFBQUtBUHNCQUFDYkFBQUFDd0QvQVFBQW13QUFBQW9BQ3dJQUFKc0FBQUFMQUE4Q0FBQ2JB
QUFBCkNnQWJBZ0FBbXdBQUFBc0FId0lBQUpzQUFBQUtBQ3NDQUFDYkFBQUFDd0F2QWdBQW13QUFB
QW9BT3dJQUFKc0FBQUFMQUQ4Q0FBQ2IKQUFBQUNnQlVBZ0FBbXdBQUFBc0FXQUlBQUpzQUFBQUtB
QUFBQUFBQUFJQy9BQUFBUUlCOEpBUUFkUXlBZkNRSUFMZ0JBQUFBZEFXNApEUUFBQU1NRUFBQUE5
UUFBQUNRQUFBQUFBQUFBQUFBQUFCa0FBQUFBQUFBQUNBQUFBQUFBQUFEalBBQUFBQUFBQUFRQUFB
RHhBQUFBCmtnQUFBRHNBRHhFQUFBQUFBQUFBQUFBQUFBQVpBQUFBQUFBQUFCZ0FBQUNMRXdBQUFB
QUFBQUFBQUhKbGJtUmxjbWx1WjFOMGVXeGwKUm05eVJtOXVkQUFjQUJJUUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQ0FLQUFBWEFBc1JCQUFBQURBQUFBQnBjMU41YzNSbApiVVp2Ym5RQUdB
QUxFUWdBQUFBd0FBQUFhWE5RY21sdWRHVnlSbTl1ZEFBQ0FBWUFBQUR5QUFBQVFBQUFBQUFBQUFB
QUFBQUFHUUFBCkFMZ0ZBQUFGQUFBQU5BQUFBQUFBQUFEb0FBQ0FBQUFBQU9zQUFJQU1BQUFBN2dB
QWdCTUFBQURzQUFDQUdBQUFBTzhBQUlBTUFBQUEKcndBQUFBY0FXQUFBQUs4QUFBQUxBRndBQUFD
dkFBQUFDZ0RVQUFBQXJ3QUFBQXNBMkFBQUFLOEFBQUFLQUZIWlJDUUlnK3dJM1J3awoveFVBQUFB
QTJWd2tDSVBFQ05rRUpOa2NKTm51MlVRa0NOalIzK0RkMmRrRUpQYkVRZG5BM3VMWnlkd2RBQUFB
QU4vZ2RSWDJ4RUYxCkJ0d2xBQUFBQU5sY0pBalpSQ1FJV2NQMnhBRjFCdHdsQUFBQUFObGNKQWpa
UkNRSVdjTU5BQUFBR1FBQUFBWUFPQUFBQUxjQUFBQUcKQUVjQUFBQmFBQUFBQmdCY0FBQUFXZ0FB
QUFZQUJBQUFBUFVBQUFBa0FBQUFBQUFBQUFBQUFBQnFBQUFBQkFBQUFBUUFBQUFBQUFBQQo0endB
QUFFQUFBQUVBQUFBOFFBQUFJUUFBQUFzQUE4UkFBQUFBQUFBQUFBQUFBQUFhZ0FBQUFFQUFBQm9B
QUFBdWhBQUFBQUFBQUFBCkFBQnliM1Z1WkdZQUhBQVNFQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFnQUFEZ0FMRVFRQUFBQkFBQUFBYm5WdEFCSUEKQ3hINC8vLy9RQUFBQUdsdWRHVm5a
WElBRGdBNUVRc0FBQUFBQUFBQXJoQUFBQUlBQmdEeUFBQUFVQUFBQUFBQUFBQUFBQUFBYWdBQQpB
TGdGQUFBSEFBQUFSQUFBQUFBQUFBRHlBQUNBQVFBQUFQTUFBSUFlQUFBQTlBQUFnQ29BQUFEMUFB
Q0FVd0FBQVBjQUFJQlZBQUFBCjlnQUFnR2dBQUFEM0FBQ0FEQUFBQUxRQUFBQUhBRmdBQUFDMEFB
QUFDd0JjQUFBQXRBQUFBQW9BckFBQUFMUUFBQUFMQUxBQUFBQzAKQUFBQUNnREVBQUFBdEFBQUFB
c0F5QUFBQUxRQUFBQUtBQUFBQUFBQUFPQS9nK3drZ0h3a01BQjFENEI4SkRRQXgwUWtNQUVBQUFC
MApDTWRFSkRBTkFBQUFpMFFrUEl0VUpEQlRWWXRzSkRCV2kzUWtPRmRRYWdHTlRDUlFVVkpXVmY4
VkFBQUFBSXNkQUFBQUFHaDRkRzFvClZmL1RpL2lEeENDRi93K0VRUUVBQUdoaFpXaG9WZi9UaTlp
RHhBaUYyM1VTVi84VkFBQUFBSVBFQkY5ZVhWdUR4Q1REVS84VkFBQUEKQUlQRUJJUDRKSE1YVjRz
MUFBQUFBUC9XVS8vV2c4UUlYMTVkVzRQRUpNTlQveFVBQUFBQVpvdEFJb1BFQkdiQndBZ1B0OEJt
aGNCMAp6Mlk1UkNSSWNncUR3UDhQdDhpSlRDUklWLzhWQUFBQUFBKzNWQ1JNZzhRRWpReVZCQUFB
QUR2QlYzeWsveFVBQUFBQUQ3ZFVKRXhtCml3U1Fac0hBQ0ErM3dBKzN5SWxNSkJSVjIwUWtHTjFj
SkJ6L0ZRQUFBQUNKUkNRWTIwUWtHSXNXaTA0SWkwWUUzSHdrSElsVUpDU0wKVmd5SlRDUXNpMDRV
aVVRa0tJdEdFSXQwSkZTRHhBajJSQ1JBQklsVUpDaUpSQ1FzaVV3a01ObGNKQlRaUkNRYzJFd2tG
TmxFSkNUYwpEUUFBQUFEZXdkbGNKQlRaUkNRVTJSWjFFRkhaSENUb0FBQUFBTmtlZzhRRTZ3TGQy
SXMxQUFBQUFGUC8xbGYvMW9QRUNGOWVYVnVECnhDVERRZ0FBQU1VQUFBQUdBRWdBQUFERUFBQUFC
Z0IxQUFBQXd3QUFBQVlBaHdBQUFNSUFBQUFHQUpZQUFBRERBQUFBQmdDdEFBQUEKd1FBQUFBWUEy
QUFBQU1JQUFBQUdBUElBQUFEQkFBQUFCZ0FZQVFBQXdBQUFBQVlBYndFQUFMOEFBQUFHQUlZQkFB
QzBBQUFBRkFDVgpBUUFBd3dBQUFBWUFCQUFBQVBVQUFBQ2tBQUFBQUFBQUFBQUFBQUNxQVFBQUpB
QUFBQmdBQUFBQUFBQUE0endBQUFNQUFBQUVBQUFBCktnQUFBSHdCQUFBa0FBQUFHQUFBQUFBQUFB
RHlQZ0FBQUFBRUFBQUFBQUFyQUFBQWVnRUFBQ1FBQUFBWUFBQUFBQUFBQUZzL0FBQUEKQUFnQUFB
QUFBREFBQUFCMEFRQUFKQUFBQUJnQUFBQUFBQUFBV3o4QUFBQUFEQUFBQUFBQU5RQUFBRzRCQUFB
a0FBQUFHQUFBQUFBQQpBQUJiUHdBQUFBQVFBQUFBQUFEeEFBQUF0Z0VBQURnQUVCRUFBQUFBQUFB
QUFBQUFBQUNxQVFBQUF3QUFBS1lCQUFDQ0ZBQUFBQUFBCkFBQUFBSGRyUjJWMFIyeDVjR2hCWkha
aGJtTmxjd0FjQUJJUUpBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQUFBQUFDQUFBUEFBc1IKQkFB
QUFJMFRBQUJtYjI1MEFBd0FDeEVJQUFBQW5CTUFBRzBBRndBTEVRd0FBQUF3QUFBQWFYTlRlWE4w
WlcxR2IyNTBBQmdBQ3hFUQpBQUFBTUFBQUFHbHpVSEpwYm5SbGNrWnZiblFBRUFBTEVSUUFBQUFo
QUFBQVoyeDVjR2dBRWdBTEVSZ0FBQUNiRXdBQVlXUjJZVzVqClpRQVFBQXNSREFBQUFIVUFBQUJ6
ZEhsc1pRQU9BRGtSUUFBQUFBQUFBQUNTRXdBQURnQTVFVklBQUFBQUFBQUFsQk1BQUE0QU9SRm4K
QUFBQUFBQUFBSlFUQUFBT0FEa1Jjd0FBQUFBQUFBQmVFZ0FBRGdBNUVZVUFBQUFBQUFBQWxSTUFB
QTRBT1JHYUFBQUFBQUFBQUY0UwpBQUFPQURrUm5RQUFBQUFBQUFCZUVnQUFEZ0E1RWFzQUFBQUFB
QUFBbGhNQUFBNEFPUkhXQUFBQUFBQUFBSlVUQUFBT0FEa1I4QUFBCkFBQUFBQUNXRXdBQURnQTVF
UllCQUFBQUFBQUFtQk1BQUE0QU9SR2FBUUFBQUFBQUFGNFNBQUFPQURrUm5RRUFBQUFBQUFCZUVn
QUEKQWdBR0FBQUE4Z0FBQUNBQkFBQUFBQUFBQUFBQUFLb0JBQUM0QlFBQUlRQUFBQlFCQUFBQUFB
QUErZ0FBZ0FNQUFBRDdBQUNBSVFBQQpBUHdBQUlCR0FBQUFBUUVBZ0ZrQUFBQUNBUUNBWVFBQUFB
UUJBSUJ1QUFBQUJRRUFnSElBQUFBR0FRQ0FnQUFBQUMwQkFJQ0VBQUFBCkRBRUFnSk1BQUFBTkFR
Q0FuQUFBQUE0QkFJQ2RBQUFBTEFFQWdLWUFBQUF0QVFDQXFnQUFBQklCQUlDeEFBQUFFd0VBZ0w4
QUFBQVUKQVFDQXdnQUFBQmNCQUlERUFBQUFHZ0VBZ01zQUFBQWJBUUNBMVFBQUFCMEJBSUR0QUFB
QUhnRUFnTzRBQUFBZ0FRQ0E4QUFBQUNNQgpBSUQyQUFBQUpBRUFnQVlCQUFBbEFRQ0FKQUVBQUNZ
QkFJQkZBUUFBSndFQWdFd0JBQUFvQVFDQWdRRUFBQ2tCQUlDVEFRQUFLd0VBCmdKd0JBQUFzQVFD
QXBnRUFBQzBCQUlBTUFBQUF2QUFBQUFjQTJBQUFBTHdBQUFBTEFOd0FBQUM4QUFBQUNnQ2VBUUFB
dkFBQUFBc0EKb2dFQUFMd0FBQUFLQUs0QkFBQzhBQUFBQ3dDeUFRQUF2QUFBQUFvQXZnRUFBTHdB
QUFBTEFNSUJBQUM4QUFBQUNnRE9BUUFBdkFBQQpBQXNBMGdFQUFMd0FBQUFLQU40QkFBQzhBQUFB
Q3dEaUFRQUF2QUFBQUFvQTdnRUFBTHdBQUFBTEFQSUJBQUM4QUFBQUNnRCtBUUFBCnZBQUFBQXNB
QWdJQUFMd0FBQUFLQUE0Q0FBQzhBQUFBQ3dBU0FnQUF2QUFBQUFvQUhnSUFBTHdBQUFBTEFDSUNB
QUM4QUFBQUNnQXUKQWdBQXZBQUFBQXNBTWdJQUFMd0FBQUFLQUQ0Q0FBQzhBQUFBQ3dCQ0FnQUF2
QUFBQUFvQVRnSUFBTHdBQUFBTEFGSUNBQUM4QUFBQQpDZ0JlQWdBQXZBQUFBQXNBWWdJQUFMd0FB
QUFLQUhnQ0FBQzhBQUFBQ3dCOEFnQUF2QUFBQUFvQUFBQUFBQUFBQUFEL0pRQUFBQUFDCkFBQUF5
d0FBQUFZQUJBQUFBUFVBQUFBa0FBQUFBQUFBQUFBQUFBQUdBQUFBQUFBQUFCQUFBQUFBQUFBQTR6
d0FBQUFBQUFBRUFBQUEKOFFBQUFMSUFBQUF4QUJBUkFBQUFBQUFBQUFBQUFBQUFCZ0FBQUFBQUFB
QUdBQUFBaEJRQUFBQUFBQUFBQUFCM2EwZGxkRWRzZVhCbwpjd0FjQUJJUUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFDQUFBUEFBc1JCQUFBQUkwVEFBQm1iMjUwQUJVQUN4RUlBQUFBCjJo
QUFBR05vWVhKaFkzUmxjbk1BRVFBTEVRd0FBQUFoQkFBQVoyeDVjR2h6QUJBQUN4RVFBQUFBZFFB
QUFHTnZkVzUwQUE0QU9SRUEKQUFBQUFBQUFBSjRUQUFBQ0FBWUFBQUR5QUFBQUtBQUFBQUFBQUFB
QUFBQUFCZ0FBQUxnRkFBQUNBQUFBSEFBQUFBQUFBQUF3QVFDQQpBQUFBQURFQkFJQU1BQUFBeWdB
QUFBY0FXQUFBQU1vQUFBQUxBRndBQUFES0FBQUFDZ0RhQUFBQXlnQUFBQXNBM2dBQUFNb0FBQUFL
CkFQUUFBQURLQUFBQUN3RDRBQUFBeWdBQUFBb0FWbW9CL3hVQUFBQUEveFVBQUFBQWkvQnFBRmIv
RlFBQUFBQ0xSQ1FVVUZiL0ZRQUEKQUFDRHhCUmV3d1VBQUFEVUFBQUFCZ0FMQUFBQTB3QUFBQVlB
RmdBQUFOSUFBQUFHQUNJQUFBRFJBQUFBQmdBRUFBQUE5UUFBQUVRQQpBQUFBQUFBQUFBQUFBQ3NB
QUFBQUFBQUFCQUFBQUFBQUFBRGpQQUFBQVFBQUFBUUFBQUFCQUFBQUtRQUFBQUFBQUFBRUFBQUFB
QUFBCkFPTThBQUFBQUFRQUFBQUFBUEVBQUFDb0FBQUFOZ0FRRVFBQUFBQUFBQUFBQUFBQUFDc0FB
QUFCQUFBQUtnQUFBSVVVQUFBQUFBQUEKQUFBQWQydFRaWFJWY0VadmJuUkRZV05vWlFBY0FCSVFB
QUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUFBQUFBQ0FBQU1BQXNSQkFBQQpBSFVBQUFCekFBNEFP
UkVEQUFBQUFBQUFBS0FUQUFBT0FEa1JDUUFBQUFBQUFBQ2pFd0FBRGdBNUVSUUFBQUFBQUFBQXBS
TUFBQTRBCk9SRWdBQUFBQUFBQUFLY1RBQUFDQUFZQThnQUFBRWdBQUFBQUFBQUFBQUFBQUNzQUFB
QzRCUUFBQmdBQUFEd0FBQUFBQUFBQU5RRUEKZ0FFQUFBQTNBUUNBQ1FBQUFEZ0JBSUFSQUFBQU9R
RUFnQm9BQUFBNkFRQ0FLZ0FBQURzQkFJQU1BQUFBMEFBQUFBY0FlQUFBQU5BQQpBQUFMQUh3QUFB
RFFBQUFBQ2dEQUFBQUEwQUFBQUFzQXhBQUFBTkFBQUFBS0FOQUFBQURRQUFBQUN3RFVBQUFBMEFB
QUFBb0E0QUFBCkFOQUFBQUFMQU9RQUFBRFFBQUFBQ2dEd0FBQUEwQUFBQUFzQTlBQUFBTkFBQUFB
S0FBZ0JBQURRQUFBQUN3QU1BUUFBMEFBQUFBb0EKaTB3a0NJdFVKQXlEN0JpTHhJa0lpMHdrS0ls
UUJJdFVKQ3lKU0FpTFRDUXdpVkFNaTFRa05JbElFSWxRRkl0RUpCeFEveFVBQUFBQQpnOFFjd3pV
QUFBRGFBQUFBQmdBRUFBQUE5UUFBQUNRQUFBQUFBQUFBQUFBQUFEMEFBQUFBQUFBQUhBQUFBQUFB
QUFEalBBQUFBQUFBCkFBUUFBQUR4QUFBQWx3QUFBRGtBRUJFQUFBQUFBQUFBQUFBQUFBQTlBQUFB
QUFBQUFEd0FBQUNwRXdBQUFBQUFBQUFBQUhkclUyVjAKVUdGMGRHVnlia0poYzJWRFZFMEFIQUFT
RUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0FBRWdBTEVRUUFBQUFwRUFBQQpZMjl1
ZEdWNGRBQVVBQXNSQ0FBQUFCRVFBQUIwY21GdWMyWnZjbTBBRGdBNUVUTUFBQUFBQUFBQXFSTUFB
QUlBQmdBQThnQUFBREFBCkFBQUFBQUFBQUFBQUFEMEFBQUM0QlFBQUF3QUFBQ1FBQUFBQUFBQUFQ
Z0VBZ0FBQUFBQS9BUUNBUEFBQUFFQUJBSUFNQUFBQTJRQUEKQUFjQVdBQUFBTmtBQUFBTEFGd0FB
QURaQUFBQUNnQy9BQUFBMlFBQUFBc0F3d0FBQU5rQUFBQUtBTmdBQUFEWkFBQUFDd0RjQUFBQQoy
UUFBQUFvQWdleUlBQUFBVTFWV2k3UWttQUFBQUZlTlJDUTRWbEQvRlFBQUFBQ0xFSVBzRUl2TWlS
R0xVQVNKVVFTTFVBaUpVUWlMClVBeUpVUXlMVUJDTFFCU0pVUkNKUVJTTmpDU0FBQUFBVWY4VkFB
QUFBSXRRREl0SUVJczRpMWdFaTJnSWlWUWtPSXRRRkkxRUpHeFcKVUlsTUpFU0pWQ1JJL3hVQUFB
QUFpMVFrUUlQRURJdk1pVG1KV1FTSmFRaUpVUXlMVkNRNGlWRVFpMVFrUElsUkZJc1FnK3dZaTh5
SgpFWXRRQklsUkJJdFFDSWxSQ0l0UURJbFJESXRRRUl0QUZJbFJFSWxCRkkyTUpMQUFBQUJSL3hV
QUFBQUEyWVFrMkFBQUFJc1EyY0NMClNBU0pWQ1JFaTFBSWlVd2tTSXRJRElsVUpFeUxVQkNMUUJT
SlRDUlFpVlFrVklsRUpGallUQ1JNMllRazFBQUFBTm5BMkV3a1JON0MKMlVRa1ZON0MyY25aWENS
azJVUWtVTjdLMkV3a1NON0IyRVFrV05sY0pHalpSQ1JrMlZ3a1hJdFVKRnpaUkNSbzJWd2tZSXRN
SkdCUgpVbGIvRlFBQUFBQ0R4RUJmWGwxYmdjU0lBQUFBd3hrQUFBRGpBQUFBQmdCT0FBQUE0Z0FB
QUFZQWR3QUFBS1FBQUFBR0FNNEFBQURoCkFBQUFCZ0JVQVFBQTRBQUFBQVlBQkFBQUFQVUFBQUJr
QUFBQUFBQUFBQUFBQUFCbUFRQUFpQUFBQUF3QUFBQUFBQUFBNHp3QUFCRUEKQ0FBRUFBQUFCd0FB
QUY4QkFBQ0lBQUFBREFBQUFBQUFBQURXUHdBQUNnQU1BQUFBQUFBSUFBQUFYZ0VBQUlnQUFBQU1B
QUFBQUFBQQpBRUJBQUFBSkFCQUFBQUFBQVBFQUFBRGhBQUFBUWdBUUVRQUFBQUFBQUFBQUFBQUFB
R1lCQUFBUkFBQUFXd0VBQUljVUFBQUFBQUFBCkFBQUFkMnRUWlhSUVlYUjBaWEp1VUdoaGMyVkpi
bFZ6WlhKVGNHRmpaUUFjQUJJUWlBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQUEKQUFBQ0FBQVNB
QXNSQkFBQUFDa1FBQUJqYjI1MFpYaDBBQlVBQ3hFSUFBQUFDQkFBQUhCb1lYTmxVRzlwYm5RQURn
QTVFUmNBQUFBQQpBQUFBYXhJQUFBNEFPUkZNQUFBQUFBQUFBSzBUQUFBT0FEa1JkUUFBQUFBQUFB
QnJFZ0FBRGdBNUVjd0FBQUFBQUFBQXF4TUFBQTRBCk9SRlNBUUFBQUFBQUFMRVRBQUFDQUFZQUFB
QUE4Z0FBQUVBQUFBQUFBQUFBQUFBQUFHWUJBQUM0QlFBQUJRQUFBRFFBQUFBQUFBQUEKUXdFQWdB
a0FBQUJFQVFDQTBnQUFBRVVCQUlBM0FRQUFSd0VBZ0ZzQkFBQklBUUNBREFBQUFOOEFBQUFIQUpn
QUFBRGZBQUFBQ3dDYwpBQUFBM3dBQUFBb0FDUUVBQU44QUFBQUxBQTBCQUFEZkFBQUFDZ0FaQVFB
QTN3QUFBQXNBSFFFQUFOOEFBQUFLQUNrQkFBRGZBQUFBCkN3QXRBUUFBM3dBQUFBb0FPUUVBQU44
QUFBQUxBRDBCQUFEZkFBQUFDZ0JKQVFBQTN3QUFBQXNBVFFFQUFOOEFBQUFLQUdRQkFBRGYKQUFB
QUN3Qm9BUUFBM3dBQUFBb0FnK3g0VTFWV2k3UWtqQUFBQUZlTlJDUW9WbEQvRlFBQUFBQ0xFSVBz
RUl2TWlSR0xVQVNKVVFTTApVQWlKVVFpTFVBeUpVUXlMVUJDTFFCU0pVUkNKUVJTTlRDUllVZjhW
QUFBQUFJdFFESXRJRUlzNGkxZ0VpMmdJaVZRa09JdFFGSTFFCkpIUldVSWxNSkVTSlZDUkkveFVB
QUFBQWkxUWtRSVBFREl2TWlUbUpXUVNKYVFpSlVReUxWQ1E0aVZFUWkxUWtQSWxSRklzUWcrd1kK
aTh5SkVZdFFCSWxSQkl0UUNJbFJDSXRRRElsUkRJdFFFSXRBRklsUkVJbEJGSTJNSktBQUFBQlIv
eFVBQUFBQWk0d2t3QUFBQUlzUQppUkdMVUFTSlVRU0xVQWlKVVFpTFVBeUpVUXlMVUJDTFFCU0pV
UkNEeERTSlFSUmZYbDJMd1Z1RHhIakRGZ0FBQU9NQUFBQUdBRWdBCkFBRGlBQUFBQmdCeEFBQUFw
QUFBQUFZQXlBQUFBT0VBQUFBR0FBUUFBQUQxQUFBQVpBQUFBQUFBQUFBQUFBQUFBZ0VBQUhnQUFB
QUkKQUFBQUFBQUFBT004QUFBT0FBZ0FCQUFBQUFRQUFBRCtBQUFBZUFBQUFBZ0FBQUFBQUFBQXZV
QUFBQW9BREFBQUFBQUFCUUFBQVAwQQpBQUI0QUFBQUNBQUFBQUFBQUFBblFRQUFDUUFRQUFBQUFB
RHhBQUFBc0FBQUFEZ0FFQkVBQUFBQUFBQUFBQUFBQUFBQ0FRQUFEZ0FBCkFQZ0FBQUJyRWdBQUFB
QUFBQUFBQUhkclIyVjBWWE5sY2xSdlFtRnpaVU5VVFFBY0FCSVFlQUFBQUFBQUFBQUFBQUFBRUFB
QUFBQUEKQUFBQUFBQUNBQUFTQUFzUkNBQUFBQ2tRQUFCamIyNTBaWGgwQUE0QU9SRVVBQUFBQUFB
QUFHc1NBQUFPQURrUlJnQUFBQUFBQUFDdApFd0FBRGdBNUVXOEFBQUFBQUFBQWF4SUFBQTRBT1JI
R0FBQUFBQUFBQUtzVEFBQUNBQVlBOGdBQUFEQUFBQUFBQUFBQUFBQUFBQUlCCkFBQzRCUUFBQXdB
QUFDUUFBQUFBQUFBQVN3RUFnQVlBQUFCTUFRQ0ErQUFBQUUwQkFJQU1BQUFBNkFBQUFBY0FtQUFB
QU9nQUFBQUwKQUp3QUFBRG9BQUFBQ2dEb0FBQUE2QUFBQUFzQTdBQUFBT2dBQUFBS0FQZ0FBQURv
QUFBQUN3RDhBQUFBNkFBQUFBb0FDQUVBQU9nQQpBQUFMQUF3QkFBRG9BQUFBQ2dBWUFRQUE2QUFB
QUFzQUhBRUFBT2dBQUFBS0FEQUJBQURvQUFBQUN3QTBBUUFBNkFBQUFBb0EyZTVXCmkzUWtDSVBz
RU5sVUpBelpWQ1FJMlZRa0JOa2NKRmIvRlFBQUFBRFpSQ1FraTBRa0lJUEVGR29BYWdCUVVka2NK
RmIvRlFBQUFBQlcKL3hVQUFBQUFnOFFZWHNNY0FBQUE4QUFBQUFZQU53QUFBTzhBQUFBR0FENEFB
QUR1QUFBQUJnQUVBQUFBOVFBQUFFUUFBQUFBQUFBQQpBQUFBQUVjQUFBQUFBQUFBREFBQUFBQUFB
QURqUEFBQUF3QUFBQVFBQUFBREFBQUFRd0FBQUFBQUFBQU1BQUFBQUFBQUFPTThBQUFBCkFBUUFB
QUFBQVBFQUFBRENBQUFBTlFBUUVRQUFBQUFBQUFBQUFBQUFBRWNBQUFBREFBQUFSZ0FBQUlrVUFB
QUFBQUFBQUFBQWQydEUKY21GM1JtOWpkWE5TYVc1bkFCd0FFaEFBQUFBQUFBQUFBQUFBQUFBRUFB
QUFBQUFBQUFBQUFBSUFBQklBQ3hFRUFBQUFLUkFBQUdOdgpiblJsZUhRQUVBQUxFUWdBQUFDMUV3
QUFZMjlzYjNJQUVRQUxFUXdBQUFCQUFBQUFjbUZrYVhWekFBNEFPUkVhQUFBQUFBQUFBTE1UCkFB
QU9BRGtSTlFBQUFBQUFBQUM1RXdBQURnQTVFVHdBQUFBQUFBQUFqQkFBQUFJQUJnQUFBUElBQUFC
QUFBQUFBQUFBQUFBQUFBQkgKQUFBQXVBVUFBQVVBQUFBMEFBQUFBQUFBQUZBQkFJQUFBQUFBVXdF
QWdDQUFBQUJWQVFDQU93QUFBRllCQUlCR0FBQUFWd0VBZ0F3QQpBQUR0QUFBQUJ3QjRBQUFBN1FB
QUFBc0FmQUFBQU8wQUFBQUtBT29BQUFEdEFBQUFDd0R1QUFBQTdRQUFBQW9BK2dBQUFPMEFBQUFM
CkFQNEFBQUR0QUFBQUNnQUtBUUFBN1FBQUFBc0FEZ0VBQU8wQUFBQUtBQ1FCQUFEdEFBQUFDd0Fv
QVFBQTdRQUFBQW9BL3lVQUFBQUEKQWdBQUFQWUFBQUFHQUFRQUFBRDFBQUFBSkFBQUFBQUFBQUFB
QUFBQUJnQUFBQUFBQUFBRUFBQUFBQUFBQU9NOEFBQUFBQUFBQkFBQQpBUEVBQUFDR0FBQUFQUUFR
RVFBQUFBQUFBQUFBQUFBQUFBWUFBQUFBQUFBQUJnQUFBTDBUQUFBQUFBQUFBQUFBZDJ0SFpYUlRV
MHhEClpYSjBhV1pwWTJGMFpVbHVabThBSEFBU0VBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQWdBQUV3QUxFUVFBQUFDN0V3QUEKY21WemNHOXVjMlVBRGdBNUVRQUFBQUFBQUFBQXZSTUFB
QUlBQmdBQUFQSUFBQUFvQUFBQUFBQUFBQUFBQUFBR0FBQUF1QVVBQUFJQQpBQUFjQUFBQUFBQUFB
RnNCQUlBQUFBQUFYQUVBZ0F3QUFBRDFBQUFBQndCWUFBQUE5UUFBQUFzQVhBQUFBUFVBQUFBS0FL
NEFBQUQxCkFBQUFDd0N5QUFBQTlRQUFBQW9BeUFBQUFQVUFBQUFMQU13QUFBRDFBQUFBQ2dDTFJD
UUVoY0IwSDRzTkFBQUFBRkZRL3hVQUFBQUEKZzhRSWhjQjBDb2xFSkFUL0pRQUFBQUF6d01NS0FB
QUFNZ0lBQUFZQUVnQUFBUHdBQUFBR0FDTUFBQURCQUFBQUJnQUVBQUFBOVFBQQpBQ1FBQUFBQUFB
QUFBQUFBQUNvQUFBQUFBQUFBQkFBQUFBQUFBQURqUEFBQUFBQUFBQVFBQUFEeEFBQUFsZ0FBQUVF
QUVCRUFBQUFBCkFBQUFBQUFBQUFBcUFBQUFBQUFBQUNrQUFBQ0tGQUFBQUFBQUFBQUFBSGRyUjJW
MFUxTk1VR1ZsY2tObGNuUnBabWxqWVhSbFJHRjAKWVFBY0FCSVFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQ0FBQVBBQXNSQkFBQUFIQVNBQUJrYVdOMEFBNEFPUkVRQUFBQQpBQUFBQUw4
VEFBQU9BRGtSSVFBQUFBQUFBQUNXRXdBQUFnQUdBQUFBOGdBQUFFZ0FBQUFBQUFBQUFBQUFBQ29B
QUFDNEJRQUFCZ0FBCkFEd0FBQUFBQUFBQVlBRUFnQUFBQUFCaEFRQ0FCZ0FBQUdJQkFJQUlBQUFB
WXdFQWdCa0FBQUJrQVFDQUtRQUFBR1VCQUlBTUFBQUEKK3dBQUFBY0FXQUFBQVBzQUFBQUxBRndB
QUFEN0FBQUFDZ0N1QUFBQSt3QUFBQXNBc2dBQUFQc0FBQUFLQUw0QUFBRDdBQUFBQ3dEQwpBQUFB
K3dBQUFBb0EyQUFBQVBzQUFBQUxBTndBQUFEN0FBQUFDZ0NMUkNRRWhjQjBINHNOQUFBQUFGRlEv
eFVBQUFBQWc4UUloY0IwCkNvbEVKQVQvSlFBQUFBQXp3TU1LQUFBQU5RSUFBQVlBRWdBQUFQd0FB
QUFHQUNNQUFBREJBQUFBQmdBRUFBQUE5UUFBQUNRQUFBQUEKQUFBQUFBQUFBQ29BQUFBQUFBQUFC
QUFBQUFBQUFBRGpQQUFBQUFBQUFBUUFBQUR4QUFBQW1nQUFBRVVBRUJFQUFBQUFBQUFBQUFBQQpB
QUFxQUFBQUFBQUFBQ2tBQUFDS0ZBQUFBQUFBQUFBQUFIZHJSMlYwVTFOTVEyVnlkR2xtYVdOaGRH
VkRhR0ZwYmtOdmJuUmxlSFFBCkhBQVNFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFn
QUFEd0FMRVFRQUFBQndFZ0FBWkdsamRBQU9BRGtSRUFBQUFBQUEKQUFDL0V3QUFEZ0E1RVNFQUFB
QUFBQUFBbGhNQUFBSUFCZ0FBQVBJQUFBQklBQUFBQUFBQUFBQUFBQUFxQUFBQXVBVUFBQVlBQUFB
OApBQUFBQUFBQUFHZ0JBSUFBQUFBQWFRRUFnQVlBQUFCcUFRQ0FDQUFBQUdzQkFJQVpBQUFBYkFF
QWdDa0FBQUJ0QVFDQURBQUFBQUVCCkFBQUhBRmdBQUFBQkFRQUFDd0JjQUFBQUFRRUFBQW9Bc2dB
QUFBRUJBQUFMQUxZQUFBQUJBUUFBQ2dEQ0FBQUFBUUVBQUFzQXhnQUEKQUFFQkFBQUtBTndBQUFB
QkFRQUFDd0RnQUFBQUFRRUFBQW9BVTR0Y0pBaUYyM1JaVjR0OEpCQ0YvM1JQb1FBQUFBQ0xEUUFB
QUFDTApGUUFBQUFCV1VJc0NVV29BVVA4VkFBQUFBSXZ3ZzhRUWhmWjBKb3NOQUFBQUFGZUxQUUFB
QUFCUlZ2L1hpeFVBQUFBQVZsSlQvOWRXCi94VUFBQUFBZzhRY1hsOWJ3eE1BQUFBTEFRQUFCZ0Fa
QUFBQUNnRUFBQVlBSHdBQUFBa0JBQUFHQUMwQUFBQUlBUUFBQmdBOEFBQUEKTkFJQUFBWUFRd0FB
QUFjQkFBQUdBRTBBQUFBekFnQUFCZ0JaQUFBQXd3QUFBQVlBQkFBQUFQVUFBQUNFQUFBQUFBQUFB
QUFBQUFCawpBQUFBQUFBQUFBZ0FBQUFBQUFBQTR6d0FBQUVBQUFBRUFBQUFBUUFBQUdJQUFBQUFB
QUFBQ0FBQUFBQUFBQUFoUGdBQUFBQUVBQUFBCkFBQUtBQUFBV0FBQUFBQUFBQUFJQUFBQUFBQUFB
Q0UrQUFBQUFBZ0FBQUFBQUNRQUFBQTlBQUFBQUFBQUFBZ0FBQUFBQUFBQUlUNEEKQUFBQURBQUFB
QUFBOFFBQUFOa0FBQUJMQUJBUkFBQUFBQUFBQUFBQUFBQUFaQUFBQUFFQUFBQmpBQUFBakJRQUFB
QUFBQUFBQUFCMwphMU5sZEVOc2FXVnVkRU5sY25ScFptbGpZWFJsU1c1VFUweFFjbTl3WlhKMGFX
VnpBQndBRWhBQUFBQUFBQUFBQUFBQUFBQU1BQUFBCkFBQUFBQUFBQUFJQUFCTUFDeEVFQUFBQTBo
TUFBSE56YkZCeWIzQnpBQk1BQ3hFSUFBQUFVQklBQUdObGNuUkVZWFJoQUE0QU9SRXIKQUFBQUFB
QUFBTmdUQUFBT0FEa1JTUUFBQUFBQUFBRGFFd0FBRGdBNUVWUUFBQUFBQUFBQTJoTUFBQTRBT1JG
WEFBQUFBQUFBQUY0UwpBQUFDQUFZQUFBQUE4Z0FBQUZnQUFBQUFBQUFBQUFBQUFHUUFBQUM0QlFB
QUNBQUFBRXdBQUFBQUFBQUFjQUVBZ0FFQUFBQnhBUUNBCkVnQUFBSE1CQUlBMkFBQUFkQUVBZ0Rv
QUFBQjJBUUNBU3dBQUFIY0JBSUJXQUFBQWVBRUFnR01BQUFCNUFRQ0FEQUFBQUFZQkFBQUgKQUxn
QUFBQUdBUUFBQ3dDOEFBQUFCZ0VBQUFvQU1RRUFBQVlCQUFBTEFEVUJBQUFHQVFBQUNnQkJBUUFB
QmdFQUFBc0FSUUVBQUFZQgpBQUFLQUZFQkFBQUdBUUFBQ3dCVkFRQUFCZ0VBQUFvQVlRRUFBQVlC
QUFBTEFHVUJBQUFHQVFBQUNnQjhBUUFBQmdFQUFBc0FnQUVBCkFBWUJBQUFLQUtFQUFBQUFpd2hS
L3hVQUFBQUFnOFFFd3dFQUFBQUpBUUFBQmdBS0FBQUFFUUVBQUFZQUJBQUFBUFVBQUFBa0FBQUEK
QUFBQUFBQUFBQUFTQUFBQUFBQUFBQUFBQUFBQUFBQUE0endBQUFBQUFBQUVBQUFBOFFBQUFIY0FB
QUJEQUJBUkFBQUFBQUFBQUFBQQpBQUFBRWdBQUFBQUFBQUFSQUFBQTZSTUFBQUFBQUFBQUFBQjNh
MGRsZEVSbFptRjFiSFJJVkZSUVEyOXZhMmxsVTNSdmNtRm5aUUFjCkFCSVFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBS0FBQU9BRGtSQ0FBQUFBQUFBQURlRXdBQUFnQUdBQUR5QUFBQU1B
QUEKQUFBQUFBQUFBQUFBRWdBQUFMZ0ZBQUFEQUFBQUpBQUFBQUFBQUFCOEFRQ0FBQUFBQUgwQkFJ
QVJBQUFBZmdFQWdBd0FBQUFRQVFBQQpCd0JZQUFBQUVBRUFBQXNBWEFBQUFCQUJBQUFLQUo4QUFB
QVFBUUFBQ3dDakFBQUFFQUVBQUFvQXVBQUFBQkFCQUFBTEFMd0FBQUFRCkFRQUFDZ0NoQUFBQUFJ
c0lVZjhWQUFBQUFHb0FhZ0JRYWdEL0ZRQUFBQUNEeEJUREFRQUFBQWtCQUFBR0FBb0FBQUFSQVFB
QUJnQVgKQUFBQUZ3RUFBQVlBQkFBQUFQVUFBQUFrQUFBQUFBQUFBQUFBQUFBZkFBQUFBQUFBQUFB
QUFBQUFBQUFBNHp3QUFBQUFBQUFFQUFBQQo4UUFBQUlvQUFBQkdBQkFSQUFBQUFBQUFBQUFBQUFB
QUh3QUFBQUFBQUFBZUFBQUE2Uk1BQUFBQUFBQUFBQUIzYTBOeVpXRjBaVkJ5CmFYWmhkR1ZJVkZS
UVEyOXZhMmxsVTNSdmNtRm5aUUFjQUJJUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFD
QUFBT0FEa1IKQ0FBQUFBQUFBQURlRXdBQURnQTVFUlVBQUFBQUFBQUE2Qk1BQUFJQUJnQUFBUElB
QUFBd0FBQUFBQUFBQUFBQUFBQWZBQUFBdUFVQQpBQU1BQUFBa0FBQUFBQUFBQUlFQkFJQUFBQUFB
Z2dFQWdCNEFBQUNEQVFDQURBQUFBQllCQUFBSEFGZ0FBQUFXQVFBQUN3QmNBQUFBCkZnRUFBQW9B
b2dBQUFCWUJBQUFMQUtZQUFBQVdBUUFBQ2dDeUFBQUFGZ0VBQUFzQXRnQUFBQllCQUFBS0FNd0FB
QUFXQVFBQUN3RFEKQUFBQUZnRUFBQW9BVmxmL0ZRQUFBQUNMOEZiL0ZRQUFBQUJXaS9qL0ZRQUFB
QUNEeEFpTHgxOWV3d1FBQUFBZUFRQUFCZ0FOQUFBQQpIUUVBQUFZQUZnQUFBTU1BQUFBR0FBUUFB
QUQxQUFBQVpBQUFBQUFBQUFBQUFBQUFJZ0FBQUFBQUFBQUFBQUFBQUFBQUFPTThBQUFDCkFBQUFC
QUFBQUFFQUFBQWdBQUFBQUFBQUFBQUFBQUFBQUFBQTR6d0FBQUVBQkFBQUFBQUFBZ0FBQUI0QUFB
QUFBQUFBQUFBQUFBQUEKQUFEalBBQUFBQUFJQUFBQUFBRHhBQUFBbUFBQUFFUUFFQkVBQUFBQUFB
QUFBQUFBQUFBaUFBQUFBZ0FBQUNFQUFBQ05GQUFBQUFBQQpBQUFBQUhkclEyOXdlVVp2ZFc1a1lY
UnBiMjVEWVdOb1pVUnBjbVZqZEc5eWVRQWNBQklRQUFBQUFBQUFBQUFBQUFBQUNBQUFBQUFBCkFB
QUFBQUFDQUFBT0FEa1JBZ0FBQUFBQUFBRHRFd0FBRGdBNUVRc0FBQUFBQUFBQTd4TUFBQTRBT1JF
VUFBQUFBQUFBQUY0U0FBQUMKQUFZQThnQUFBRWdBQUFBQUFBQUFBQUFBQUNJQUFBQzRCUUFBQmdB
QUFEd0FBQUFBQUFBQWhnRUFnQUlBQUFDSEFRQ0FDZ0FBQUlnQgpBSUFSQUFBQWlRRUFnQjBBQUFD
S0FRQ0FJUUFBQUlzQkFJQU1BQUFBSEFFQUFBY0FtQUFBQUJ3QkFBQUxBSndBQUFBY0FRQUFDZ0Rn
CkFBQUFIQUVBQUFzQTVBQUFBQndCQUFBS0FQQUFBQUFjQVFBQUN3RDBBQUFBSEFFQUFBb0FBQUVB
QUJ3QkFBQUxBQVFCQUFBY0FRQUEKQ2dBWUFRQUFIQUVBQUFzQUhBRUFBQndCQUFBS0FJQjhKQWdB
ZEFtaEFBQUFBSXNBNndpTERRQUFBQUNMQVZCb0FBQUFBUDhWQUFBQQpBSXRVSkF5RHhBUlFVdjhW
QUFBQUFJUEVETU1JQUFBQUtnRUFBQVlBRWdBQUFDa0JBQUFHQUJvQUFBQW9BUUFBQmdBZ0FBQUFK
UUVBCkFBWUFMd0FBQUNRQkFBQUdBQVFBQUFEMUFBQUFKQUFBQUFBQUFBQUFBQUFBTndBQUFBQUFB
QUFJQUFBQUFBQUFBT004QUFBQUFBQUEKQkFBQUFQRUFBQUN5QUFBQVNRQVFFUUFBQUFBQUFBQUFB
QUFBQURjQUFBQUFBQUFBTmdBQUFJOFVBQUFBQUFBQUFBQUFkMnRUWlhSRApSbFZTVEZKbGNYVmxj
M1JUYUc5MWJHUkRiMjUwWlc1MFUyNXBabVlBSEFBU0VBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBCkFnQUFFZ0FMRVFRQUFBRDFFd0FBY21WeGRXVnpkQUFQQUFzUkNBQUFBREFBQUFCbWJH
Rm5BQTRBT1JFZUFBQUFBQUFBQUVJVEFBQU8KQURrUkxRQUFBQUFBQUFEMEV3QUFBZ0FHQUFBQThn
QUFBREFBQUFBQUFBQUFBQUFBQURjQUFBQzRCUUFBQXdBQUFDUUFBQUFBQUFBQQpqZ0VBZ0FBQUFB
Q1BBUUNBTmdBQUFKQUJBSUFNQUFBQUl3RUFBQWNBV0FBQUFDTUJBQUFMQUZ3QUFBQWpBUUFBQ2dE
S0FBQUFJd0VBCkFBc0F6Z0FBQUNNQkFBQUtBTm9BQUFBakFRQUFDd0RlQUFBQUl3RUFBQW9BOUFB
QUFDTUJBQUFMQVBnQUFBQWpBUUFBQ2dCZmEwTkcKVlZKTVEyOXVibVZqZEdsdmJsQnliM0JsY25S
NVUyaHZkV3hrVTI1cFptWUEveVVBQUFBQUFnQUFBREFCQUFBR0FBUUFBQUQxQUFBQQpKQUFBQUFB
QUFBQUFBQUFBQmdBQUFBQUFBQUFFQUFBQUFBQUFBT004QUFBQUFBQUFCQUFBQVBFQUFBQ1VBQUFB
VEFBUUVRQUFBQUFBCkFBQUFBQUFBQUFZQUFBQUFBQUFBQmdBQUFQb1RBQUFBQUFBQUFBQUFkMnRE
UmxWU1RGSmxjWFZsYzNSRGIzQjVTRlJVVUZKbGNYVmwKYzNSQ2IyUjVVR0Z5ZEhNQUhBQVNFQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQUFFZ0FMRVFRQUFBRHlFd0FBY21WeApkV1Z6
ZEFBT0FEa1JBQUFBQUFBQUFBRDZFd0FBQWdBR0FQSUFBQUFvQUFBQUFBQUFBQUFBQUFBR0FBQUF1
QVVBQUFJQUFBQWNBQUFBCkFBQUFBSk1CQUlBQUFBQUFsQUVBZ0F3QUFBQXZBUUFBQndCWUFBQUFM
d0VBQUFzQVhBQUFBQzhCQUFBS0FMd0FBQUF2QVFBQUN3REEKQUFBQUx3RUFBQW9BMUFBQUFDOEJB
QUFMQU5nQUFBQXZBUUFBQ2dEL0pRQUFBQUFDQUFBQU5nRUFBQVlBQkFBQUFQVUFBQUFrQUFBQQpB
QUFBQUFBQUFBQUdBQUFBQUFBQUFBZ0FBQUFBQUFBQTR6d0FBQUFBQUFBRUFBQUE4UUFBQUtrQUFB
QkxBQkFSQUFBQUFBQUFBQUFBCkFBQUFCZ0FBQUFBQUFBQUdBQUFBL0JNQUFBQUFBQUFBQUFCM2Ew
TkdWVkpNVW1WeGRXVnpkRk5sZEVoVVZGQlNaWEYxWlhOMFFtOWsKZVZCaGNuUnpBQndBRWhBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBQUJJQUN4RUVBQUFBOVJNQUFISmxjWFZsYzNR
QQpGQUFMRVFnQUFBRDRFd0FBWW05a2VWQmhjblJ6QUE0QU9SRUFBQUFBQUFBQUFQd1RBQUFDQUFZ
QUFBQUE4Z0FBQUNnQUFBQUFBQUFBCkFBQUFBQVlBQUFDNEJRQUFBZ0FBQUJ3QUFBQUFBQUFBbUFF
QWdBQUFBQUNaQVFDQURBQUFBRFVCQUFBSEFGZ0FBQUExQVFBQUN3QmMKQUFBQU5RRUFBQW9BMFFB
QUFEVUJBQUFMQU5VQUFBQTFBUUFBQ2dEc0FBQUFOUUVBQUFzQThBQUFBRFVCQUFBS0FGWm9BQUFB
QVA4VgpBQUFBQUl2d2hmWjFCWTFHQkY3RFU0c2RBQUFBQUZkb0FBQUFBRmIvMDR2NGhmOTBEbWdB
QUFBQVZ2L1RpL0NGOW5VSlgxdTRCQUFBCkFGN0RpMFFrRUZCcUFQL1hhZ0QvMW9QRURGOWJYc01D
QUFBQVJnRUFBQVlBQ0FBQUFFTUJBQUFHQUJvQUFBQkNBUUFBQmdBZ0FBQUEKUVFFQUFBWUFMZ0FB
QUQ0QkFBQUdBQVFBQUFEMUFBQUFoQUFBQUFBQUFBQUFBQUFBV0FBQUFBQUFBQUFFQUFBQUFBQUFB
T004QUFBQgpBQUFBQkFBQUFBRUFBQUJXQUFBQUFBQUFBQVFBQUFBQUFBQUE0endBQUFBQUJBQUFB
QUFBR0FBQUFENEFBQUFBQUFBQUJBQUFBQUFBCkFBQ2tRUUFBQUFBSUFBQUFBQUFmQUFBQU5nQUFB
QUFBQUFBRUFBQUFBQUFBQUtSQkFBQUFBQXdBQUFBQUFQRUFBQUF3QVFBQVV3QVEKRVFBQUFBQUFB
QUFBQUFBQUFGZ0FBQUFCQUFBQVZ3QUFBSmtSQUFBQUFBQUFBQUFBZDJ0SmJtbDBhV0ZzYVhwbFRX
RjRhVzExYlVoVQpWRkJEYjI1dVpXTjBhVzl1UTI5MWJuUlFaWEpJYjNOMEFCd0FFaEFBQUFBQUFB
QUFBQUFBQUFBTUFBQUFBQUFBQUFBQUFBSUFBQ01BCkN4RUVBQUFBZFFBQUFIQnlaV1psY25KbFpF
TnZibTVsWTNScGIyNURiM1Z1ZEFBZ0FBZ1JEUlFBQUVOdmJtNWxZM1JwYjI1SFpYUk0KYVcxcGRG
QnliMk5RZEhJQUlBQUlFUW9VQUFCRGIyNXVaV04wYVc5dVUyVjBUR2x0YVhSUWNtOWpVSFJ5QUE0
QU9SRUdBQUFBQUFBQQpBQUFVQUFBT0FEa1JKUUFBQUFBQUFBQUZGQUFBRGdBNUVUTUFBQUFBQUFB
QUJSUUFBQTRBT1JGTEFBQUFBQUFBQUFvVUFBQU9BRGtSClR3QUFBQUFBQUFBTkZBQUFBZ0FHQVBJ
QUFBQ1FBQUFBQUFBQUFBQUFBQUJZQUFBQXVBVUFBQThBQUFDRUFBQUFBQUFBQUowQkFJQUIKQUFB
QW9RRUFnQTRBQUFDbEFRQ0FFZ0FBQUtZQkFJQVdBQUFBc3dFQWdCZ0FBQUNwQVFDQUtRQUFBS29C
QUlBckFBQUFxd0VBZ0MwQQpBQUN0QVFDQU53QUFBSzRCQUlBOUFBQUFyd0VBZ0VNQUFBQ3pBUUNB
UkFBQUFMRUJBSUJOQUFBQXNnRUFnRmNBQUFDekFRQ0FEQUFBCkFEc0JBQUFIQUxnQUFBQTdBUUFB
Q3dDOEFBQUFPd0VBQUFvQWVBRUFBRHNCQUFBTEFId0JBQUE3QVFBQUNnQ0lBUUFBT3dFQUFBc0EK
akFFQUFEc0JBQUFLQUpnQkFBQTdBUUFBQ3dDY0FRQUFPd0VBQUFvQXFBRUFBRHNCQUFBTEFLd0JB
QUE3QVFBQUNnQzRBUUFBT3dFQQpBQXNBdkFFQUFEc0JBQUFLQU5BQkFBQTdBUUFBQ3dEVUFRQUFP
d0VBQUFvQVgwTkdUbVYwZDI5eWEwaFVWRkJEYjI1dVpXTjBhVzl1ClEyRmphR1ZIWlhSTWFXMXBk
QUJmUTBaT1pYUjNiM0pyU0ZSVVVFTnZibTVsWTNScGIyNURZV05vWlZObGRFeHBiV2wwQUVNQVJn
Qk8KQUdVQWRBQjNBRzhBY2dCckFDNEFaQUJzQUd3QUFBQldWMm9BL3hVQUFBQUFpL0NMUkNRUVVG
Yi9GUUFBQUFCV2kvai9GUUFBQUFDRAp4QkNMeDE5ZXd3WUFBQUJOQVFBQUJnQVVBQUFBVEFFQUFB
WUFIUUFBQU1NQUFBQUdBQVFBQUFEMUFBQUFaQUFBQUFBQUFBQUFBQUFBCktRQUFBQUFBQUFBRUFB
QUFBQUFBQU9NOEFBQUNBQUFBQkFBQUFBRUFBQUFuQUFBQUFBQUFBQVFBQUFBQUFBQUE0endBQUFF
QUJBQUEKQUFBQUFnQUFBQ1VBQUFBQUFBQUFCQUFBQUFBQUFBRGpQQUFBQUFBSUFBQUFBQUR4QUFB
QXZRQUFBRTBBRUJFQUFBQUFBQUFBQUFBQQpBQUFwQUFBQUFnQUFBQ2dBQUFDU0ZBQUFBQUFBQUFB
QUFIZHJRMjl3ZVVOeVpXUmxiblJwWVd4R2NtOXRRMFpRWlhKemFYTjBaVzUwClUzUnZjbUZuWlFB
Y0FCSVFBQUFBQUFBQUFBQUFBQUFBQ0FBQUFBQUFBQUFBQUFBQ0FBQWFBQXNSQkFBQUFCVVVBQUJ3
Y205MFpXTjAKYVc5dVUzQmhZMlVBRGdBNUVRUUFBQUFBQUFBQUVCUUFBQTRBT1JFU0FBQUFBQUFB
QUJjVUFBQU9BRGtSR3dBQUFBQUFBQUJlRWdBQQpBZ0FHQUFBQUFQSUFBQUJJQUFBQUFBQUFBQUFB
QUFBcEFBQUF1QVVBQUFZQUFBQThBQUFBQUFBQUFMWUJBSUFDQUFBQXR3RUFnQXdBCkFBQzRBUUNB
R0FBQUFMa0JBSUFrQUFBQXVnRUFnQ2dBQUFDN0FRQ0FEQUFBQUVzQkFBQUhBSmdBQUFCTEFRQUFD
d0NjQUFBQVN3RUEKQUFvQUJRRUFBRXNCQUFBTEFBa0JBQUJMQVFBQUNnQVZBUUFBU3dFQUFBc0FH
UUVBQUVzQkFBQUtBQ1VCQUFCTEFRQUFDd0FwQVFBQQpTd0VBQUFvQVFBRUFBRXNCQUFBTEFFUUJB
QUJMQVFBQUNnRC9KUUFBQUFBQ0FBQUFVd0VBQUFZQUJBQUFBUFVBQUFBa0FBQUFBQUFBCkFBQUFB
QUFHQUFBQUFBQUFBQVFBQUFBQUFBQUE0endBQUFBQUFBQUVBQUFBOFFBQUFKY0FBQUJOQUJBUkFB
QUFBQUFBQUFBQUFBQUEKQmdBQUFBQUFBQUFHQUFBQUdCUUFBQUFBQUFBQUFBQjNhME5HVG1WMGQy
OXlhMFZ5Y205eVIyVjBURzlqWVd4cGVtVmtSR1Z6WTNKcApjSFJwYjI0QUhBQVNFQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQUFGQUFMRVFRQUFBQVNBQUFBWlhKeWIzSkRiMlJsCkFB
NEFPUkVBQUFBQUFBQUFBQmdVQUFBQ0FBWUFBUElBQUFBb0FBQUFBQUFBQUFBQUFBQUdBQUFBdUFV
QUFBSUFBQUFjQUFBQUFBQUEKQUw0QkFJQUFBQUFBdndFQWdBd0FBQUJTQVFBQUJ3QllBQUFBVWdF
QUFBc0FYQUFBQUZJQkFBQUtBTDhBQUFCU0FRQUFDd0REQUFBQQpVZ0VBQUFvQTJBQUFBRklCQUFB
TEFOd0FBQUJTQVFBQUNnQ0Q3QkNoQUFBQUFJc0lpeFVBQUFBQWlVd2tDSXNDaTB3a0dJdFVKQnhX
CmlVUWtFS0VBQUFBQVVJbE1KQWlMRFFBQUFBQlJpVlFrRUdvQ2pWUWtFRktOUkNRY1VHb0EveFVB
QUFBQWl3MEFBQUFBaXhHTDhJdEUKSkRCV1VsRC9GUUFBQUFCVy94VUFBQUFBZzhRb1hvUEVFTU1F
QUFBQVhRRUFBQVlBREFBQUFGd0JBQUFHQUNRQUFBQUxBUUFBQmdBdgpBQUFBQ2dFQUFBWUFTQUFB
QUZzQkFBQUdBRTRBQUFCYUFRQUFCZ0JmQUFBQVdRRUFBQVlBWmdBQUFNTUFBQUFHQUFRQUFBRDFB
QUFBClJBQUFBQUFBQUFBQUFBQUFjZ0FBQUJBQUFBQU1BQUFBQUFBQUFPTThBQUFmQUFBQUJBQUFB
QjhBQUFCUEFBQUFFQUFBQUF3QUFBQUEKQUFBQTR6d0FBQUFBQkFBQUFBQUE4UUFBQUFFQkFBQkFB
QkFSQUFBQUFBQUFBQUFBQUFBQWNnQUFBQjhBQUFCdUFBQUFsQlFBQUFBQQpBQUFBQUFCM2ExTmxk
RU5QVGs1RlExUlFjbTk0ZVVadmNsTjBjbVZoYlFBY0FCSVFFQUFBQUFBQUFBQUFBQUFBQkFBQUFB
QUFBQUFBCkFBQUNBQUFSQUFzUkJBQUFBQjBVQUFCemRISmxZVzBBRkFBTEVRZ0FBQUFXRUFBQWNI
SnZlSGxJYjNOMEFCUUFDeEVNQUFBQUloUUEKQUhCeWIzaDVVRzl5ZEFBV0FBc1I3UC8vL3lNVUFB
QndjbTk0ZVZaaGJIVmxjd0FVQUFzUjlQLy8veU1VQUFCd2NtOTRlVXRsZVhNQQpEZ0E1RVVZQUFB
QUFBQUFBR3hRQUFBNEFPUkZkQUFBQUFBQUFBQjhVQUFBT0FEa1JaQUFBQUFBQUFBQmVFZ0FBQWdB
R0FBQUFBUElBCkFBQlFBQUFBQUFBQUFBQUFBQUJ5QUFBQXVBVUFBQWNBQUFCRUFBQUFBQUFBQU1N
QkFJQURBQUFBeEFFQWdCWUFBQURGQVFDQUl3QUEKQU1ZQkFJQk1BQUFBeHdFQWdHTUFBQURJQVFD
QWJnQUFBTWtCQUlBTUFBQUFXQUVBQUFjQWVBQUFBRmdCQUFBTEFId0FBQUJZQVFBQQpDZ0FwQVFB
QVdBRUFBQXNBTFFFQUFGZ0JBQUFLQURrQkFBQllBUUFBQ3dBOUFRQUFXQUVBQUFvQVNRRUFBRmdC
QUFBTEFFMEJBQUJZCkFRQUFDZ0JrQVFBQVdBRUFBQXNBYUFFQUFGZ0JBQUFLQUlQc0NLRUFBQUFB
aXdoVFZZdHNKQlJXVjFGVi94VUFBQUFBaS9oWGFnQnEKQVA4VkFBQUFBRmVMUFFBQUFBQ0w4UC9Y
YUFBQUFBRC9GUUFBQUFDTERRQUFBQUNMVkNROGlVUWtNS0VBQUFBQVVGR0pWQ1EwYWdHTgpWQ1E0
VW8xRUpFQlFhZ0QvRlFBQUFBQ0xEUUFBQUFDTEVZdllVMUpXL3hVQUFBQUFnOFJBVS8vWG9RQUFB
QUNMQ0ZaUlZmOFZBQUFBCkFGYi8xNFBFRkY5ZVhWdUR4QWpEQkFBQUFGb0JBQUFHQUJZQUFBQm9B
UUFBQmdBakFBQUFad0VBQUFZQUtnQUFBTU1BQUFBR0FETUEKQUFCbUFRQUFCZ0E1QUFBQUpRRUFB
QVlBUHdBQUFBb0JBQUFHQUV3QUFBQUxBUUFBQmdCbUFBQUFXd0VBQUFZQWJBQUFBR01CQUFBRwpB
SGtBQUFBSEFRQUFCZ0NFQUFBQVdnRUFBQVlBandBQUFGa0JBQUFHQUFRQUFBRDFBQUFBcEFBQUFB
QUFBQUFBQUFBQW9RQUFBQWdBCkFBQUlBQUFBQUFBQUFPTThBQUFTQUFBQUJBQUFBQXNBQUFDU0FB
QUFDQUFBQUFnQUFBQUFBQUFBREVJQUFBY0FCQUFBQUFBQURBQUEKQUpBQUFBQUlBQUFBQ0FBQUFB
QUFBQUIxUWdBQUJnQUlBQUFBQUFBUkFBQUFpZ0FBQUFnQUFBQUlBQUFBQUFBQUFIVkNBQUFCQUF3
QQpBQUFBQUJJQUFBQ0lBQUFBQ0FBQUFBZ0FBQUFBQUFBQWRVSUFBQUFBRUFBQUFBQUE4UUFBQUhR
QkFBQk5BQkFSQUFBQUFBQUFBQUFBCkFBQUFvUUFBQUJJQUFBQ2RBQUFBbFJRQUFBQUFBQUFBQUFC
M2ExTmxkRU5QVGs1RlExUlFjbTk0ZVVGMWRHaHZjbWw2WVhScGIyNUcKYjNKVGRISmxZVzBBSEFB
U0VBZ0FBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUFBQUFBQWdBQUVRQUxFUVFBQUFBZEZBQUFjM1J5
WldGdApBQ01BQ3hFSUFBQUFGaEFBQUhCeWIzaDVRWFYwYUc5eWFYcGhkR2x2YmxOMGNtbHVad0Fj
QUFzUjlQLy8veWdVQUFCb1pXRmtaWEpHCmFXVnNaRlpoYkhWbGN3QWJBQXNSK1AvLy95Z1VBQUJv
WldGa1pYSkdhV1ZzWkU1aGJXVnpBQTRBT1JFVUFBQUFBQUFBQUNVVUFBQU8KQURrUklRQUFBQUFB
QUFBbkZBQUFEZ0E1RVRBQUFBQUFBQUFBWGhJQUFBNEFPUkUzQUFBQUFBQUFBRUlUQUFBT0FEa1Ja
QUFBQUFBQQpBQUFiRkFBQURnQTVFWGNBQUFBQUFBQUEyaE1BQUE0QU9SR0JBQUFBQUFBQUFGNFNB
QUFPQURrUmpRQUFBQUFBQUFBZkZBQUFEZ0E1CkVaUUFBQUFBQUFBQVhoSUFBQUlBQmdEeUFBQUFj
QUFBQUFBQUFBQUFBQUFBb1FBQUFMZ0ZBQUFMQUFBQVpBQUFBQUFBQUFETUFRQ0EKQXdBQUFNMEJB
SUFjQUFBQXpnRUFnQ2NBQUFEUEFRQ0FNZ0FBQU5FQkFJQTlBQUFBMHdFQWdHb0FBQURWQVFDQWdB
QUFBTllCQUlDRApBQUFBMkFFQWdKTUFBQURaQVFDQW5RQUFBTm9CQUlBTUFBQUFZZ0VBQUFjQTJB
QUFBR0lCQUFBTEFOd0FBQUJpQVFBQUNnQ2NBUUFBCllnRUFBQXNBb0FFQUFHSUJBQUFLQUt3QkFB
QmlBUUFBQ3dDd0FRQUFZZ0VBQUFvQXZBRUFBR0lCQUFBTEFNQUJBQUJpQVFBQUNnRE0KQVFBQVln
RUFBQXNBMEFFQUFHSUJBQUFLQU53QkFBQmlBUUFBQ3dEZ0FRQUFZZ0VBQUFvQTdBRUFBR0lCQUFB
TEFQQUJBQUJpQVFBQQpDZ0Q4QVFBQVlnRUFBQXNBQUFJQUFHSUJBQUFLQUF3Q0FBQmlBUUFBQ3dB
UUFnQUFZZ0VBQUFvQUhBSUFBR0lCQUFBTEFDQUNBQUJpCkFRQUFDZ0EwQWdBQVlnRUFBQXNBT0FJ
QUFHSUJBQUFLQUZCeWIzaDVMVUYxZEdodmNtbDZZWFJwYjI0QW9RQUFBQUNMQ0l0VUpBUlcKVVZM
L0ZRQUFBQUNMOEl0RUpCUlFWdjhWQUFBQUFJUEVFSXZHWHNNQkFBQUFid0VBQUFZQUVBQUFBR2dC
QUFBR0FCNEFBQUJ1QVFBQQpCZ0FFQUFBQTlRQUFBRVFBQUFBQUFBQUFBQUFBQUNrQUFBQUFBQUFB
Q0FBQUFBQUFBQURqUEFBQURBQUFBQVFBQUFBTUFBQUFIQUFBCkFBQUFBQUFJQUFBQUFBQUFBT004
QUFBQUFBUUFBQUFBQVBFQUFBQ3ZBQUFBUUFBUUVRQUFBQUFBQUFBQUFBQUFBQ2tBQUFBTUFBQUEK
S0FBQUFKY1VBQUFBQUFBQUFBQUFkMnREYjNCNVEwOU9Ua1ZEVkZCeWIzaDVVbVZ6Y0c5dWMyVUFI
QUFTRUFBQUFBQUFBQUFBQUFBQQpBQVFBQUFBQUFBQUFBQUFBQWdBQUVRQUxFUVFBQUFBZEZBQUFj
M1J5WldGdEFCWUFDeEVJQUFBQUxSUUFBSEpsYzNCdmJuTmxWVkpNCkFBNEFPUkVPQUFBQUFBQUFB
Q1VVQUFBT0FEa1JIQUFBQUFBQUFBQXZGQUFBQWdBR0FBRHlBQUFBUUFBQUFBQUFBQUFBQUFBQUtR
QUEKQUxnRkFBQUZBQUFBTkFBQUFBQUFBQURkQVFDQUFBQUFBTjRCQUlBV0FBQUE0UUVBZ0NVQUFB
RGlBUUNBS0FBQUFPTUJBSUFNQUFBQQpiUUVBQUFjQWVBQUFBRzBCQUFBTEFId0FBQUJ0QVFBQUNn
RG5BQUFBYlFFQUFBc0E2d0FBQUcwQkFBQUtBUGNBQUFCdEFRQUFDd0Q3CkFBQUFiUUVBQUFvQUVB
RUFBRzBCQUFBTEFCUUJBQUJ0QVFBQUNnRC9KUUFBQUFBQ0FBQUFkUUVBQUFZQUJBQUFBUFVBQUFB
a0FBQUEKQUFBQUFBQUFBQUFHQUFBQUFBQUFBQXdBQUFBQUFBQUE0endBQUFBQUFBQUVBQUFBOFFB
QUFLZ0FBQUE2QUJBUkFBQUFBQUFBQUFBQQpBQUFBQmdBQUFBQUFBQUFHQUFBQU14UUFBQUFBQUFB
QUFBQjNhME5CU1cxaFoyVlJkV1YxWlVOeVpXRjBaUUFjQUJJUUFBQUFBQUFBCkFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQ0FBQVFBQXNSQkFBQUFIVUFBQUIzYVdSMGFBQVJBQXNSQ0FBQUFIVUFBQUJv
WldsbmFIUUEKRXdBTEVRd0FBQUIxQUFBQVkyRndZV05wZEhrQURnQTVFUUFBQUFBQUFBQUFNeFFB
QUFJQUJnRHlBQUFBS0FBQUFBQUFBQUFBQUFBQQpCZ0FBQUxnRkFBQUNBQUFBSEFBQUFBQUFBQURv
QVFDQUFBQUFBT2tCQUlBTUFBQUFkQUVBQUFjQVdBQUFBSFFCQUFBTEFGd0FBQUIwCkFRQUFDZ0RR
QUFBQWRBRUFBQXNBMUFBQUFIUUJBQUFLQU9nQUFBQjBBUUFBQ3dEc0FBQUFkQUVBQUFvQS95VUFB
QUFBQWdBQUFIc0IKQUFBR0FBUUFBQUQxQUFBQUpBQUFBQUFBQUFBQUFBQUFCZ0FBQUFBQUFBQUVB
QUFBQUFBQUFPTThBQUFBQUFBQUJBQUFBUEVBQUFDQwpBQUFBUHdBUUVRQUFBQUFBQUFBQUFBQUFB
QVlBQUFBQUFBQUFCZ0FBQURVVUFBQUFBQUFBQUFBQWQydERRVWx0WVdkbFVYVmxkV1ZIClpYUkRZ
WEJoWTJsMGVRQWNBQklRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBQUFOQUFzUkJB
QUFBREVVQUFCcGNRQU8KQURrUkFBQUFBQUFBQUFBMUZBQUFBZ0FHQUFBQThnQUFBQ2dBQUFBQUFB
QUFBQUFBQUFZQUFBQzRCUUFBQWdBQUFCd0FBQUFBQUFBQQo3UUVBZ0FBQUFBRHVBUUNBREFBQUFI
b0JBQUFIQUZnQUFBQjZBUUFBQ3dCY0FBQUFlZ0VBQUFvQXFnQUFBSG9CQUFBTEFLNEFBQUI2CkFR
QUFDZ0RFQUFBQWVnRUFBQXNBeUFBQUFIb0JBQUFLQVA4bEFBQUFBQUlBQUFDQkFRQUFCZ0FFQUFB
QTlRQUFBQ1FBQUFBQUFBQUEKQUFBQUFBWUFBQUFBQUFBQUJBQUFBQUFBQUFEalBBQUFBQUFBQUFR
QUFBRHhBQUFBZ1FBQUFENEFFQkVBQUFBQUFBQUFBQUFBQUFBRwpBQUFBQUFBQUFBWUFBQUEyRkFB
QUFBQUFBQUFBQUhkclEwRkpiV0ZuWlZGMVpYVmxTVzUyWVd4cFpHRjBaUUFjQUJJUUFBQUFBQUFB
CkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FBQU5BQXNSQkFBQUFERVVBQUJwY1FBT0FEa1JBQUFB
QUFBQUFBQTJGQUFBQWdBR0FBQUEKQVBJQUFBQW9BQUFBQUFBQUFBQUFBQUFHQUFBQXVBVUFBQUlB
QUFBY0FBQUFBQUFBQVBNQkFJQUFBQUFBOUFFQWdBd0FBQUNBQVFBQQpCd0JZQUFBQWdBRUFBQXNB
WEFBQUFJQUJBQUFLQUtrQUFBQ0FBUUFBQ3dDdEFBQUFnQUVBQUFvQXhBQUFBSUFCQUFBTEFNZ0FB
QUNBCkFRQUFDZ0QvSlFBQUFBQUNBQUFBaHdFQUFBWUFCQUFBQVBVQUFBQWtBQUFBQUFBQUFBQUFB
QUFHQUFBQUFBQUFBQVFBQUFBQUFBQUEKNHp3QUFBQUFBQUFFQUFBQThRQUFBSDRBQUFBN0FCQVJB
QUFBQUFBQUFBQUFBQUFBQmdBQUFBQUFBQUFHQUFBQU5SUUFBQUFBQUFBQQpBQUIzYTBOQlNXMWha
MlZSZFdWMVpVTnZiR3hsWTNRQUhBQVNFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFn
QUFEUUFMCkVRUUFBQUF4RkFBQWFYRUFEZ0E1RVFBQUFBQUFBQUFBTlJRQUFBSUFCZ0FBQVBJQUFB
QW9BQUFBQUFBQUFBQUFBQUFHQUFBQXVBVUEKQUFJQUFBQWNBQUFBQUFBQUFQZ0JBSUFBQUFBQStR
RUFnQXdBQUFDR0FRQUFCd0JZQUFBQWhnRUFBQXNBWEFBQUFJWUJBQUFLQUtZQQpBQUNHQVFBQUN3
Q3FBQUFBaGdFQUFBb0F3QUFBQUlZQkFBQUxBTVFBQUFDR0FRQUFDZ0NMUkNRazNVUWtDSXRNSkND
TFZDUWNVSXRFCkpCeFJpMHdrSEZLTFZDUWNVSXRFSkJSUlVvUHNDTjBjSkZEL0ZRQUFBQUNEeENU
REx3QUFBSTBCQUFBR0FBUUFBQUQxQUFBQUpBQUEKQUFBQUFBQUFBQUFBTndBQUFBQUFBQUFrQUFB
QUFBQUFBT004QUFBQUFBQUFCQUFBQVBFQUFBRG5BQUFBUHdBUUVRQUFBQUFBQUFBQQpBQUFBQURj
QUFBQUFBQUFBTmdBQUFEc1VBQUFBQUFBQUFBQUFkMnREUVVsdFlXZGxVWFZsZFdWSmJuTmxjblJK
YldGblpRQWNBQklRCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQUFBTkFBc1JCQUFB
QURFVUFBQnBjUUFNQUFzUkNBQUFBRUVBQUFCMEFBOEEKQ3hFUUFBQUFkUUFBQUhSNWNHVUFEUUFM
RVJRQUFBQWpBQUFBYVdRQUVBQUxFUndBQUFCMUFBQUFabXhoWjNNQUVnQUxFU0FBQUFBNQpGQUFB
Y21Wc1pXRnpaUUFQQUFzUkpBQUFBQU1FQUFCcGJtWnZBQTRBT1JFdEFBQUFBQUFBQURzVUFBQUNB
QVlBQVBJQUFBQXdBQUFBCkFBQUFBQUFBQUFBM0FBQUF1QVVBQUFNQUFBQWtBQUFBQUFBQUFQMEJB
SUFBQUFBQS9nRUFnRFlBQUFEL0FRQ0FEQUFBQUl3QkFBQUgKQUZnQUFBQ01BUUFBQ3dCY0FBQUFq
QUVBQUFvQUR3RUFBSXdCQUFBTEFCTUJBQUNNQVFBQUNnQW9BUUFBakFFQUFBc0FMQUVBQUl3QgpB
QUFLQVA4bEFBQUFBQUlBQUFDVEFRQUFCZ0FFQUFBQTlRQUFBQ1FBQUFBQUFBQUFBQUFBQUFZQUFB
QUFBQUFBSkFBQUFBQUFBQURqClBBQUFBQUFBQUFRQUFBRHhBQUFBTGdFQUFFY0FFQkVBQUFBQUFB
QUFBQUFBQUFBR0FBQUFBQUFBQUFZQUFBQTlGQUFBQUFBQUFBQUEKQUhkclEwRkpiV0ZuWlZGMVpY
VmxVbVZuYVhOMFpYSlFhWGhsYkVKMVptWmxjZ0FjQUJJUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QQpBQUFBQUFBQ0FBQU5BQXNSQkFBQUFERVVBQUJwY1FBUEFBc1JDQUFBQUFNRUFBQmtZWFJoQUJR
QUN4RU1BQUFBZFFBQUFHUmhkR0ZmCmMybDZaUUFUQUFzUkVBQUFBSFVBQUFCeWIzZGllWFJsY3dB
UUFBc1JGQUFBQUhVQUFBQjNhV1IwYUFBUkFBc1JHQUFBQUhVQUFBQm8KWldsbmFIUUFGd0FMRVJ3
QUFBQjFBQUFBY0dsNFpXeGZabTl5YldGMEFCWUFDeEVnQUFBQWNCSUFBR0YwZEdGamFHMWxiblJ6
QUJBQQpDeEVrQUFBQWRRQUFBR1pzWVdkekFBNEFPUkVBQUFBQUFBQUFBRDBVQUFBQ0FBWUFBQUR5
QUFBQUtBQUFBQUFBQUFBQUFBQUFCZ0FBCkFMZ0ZBQUFDQUFBQUhBQUFBQUFBQUFBQ0FnQ0FBQUFB
QUFNQ0FJQU1BQUFBa2dFQUFBY0FXQUFBQUpJQkFBQUxBRndBQUFDU0FRQUEKQ2dCV0FRQUFrZ0VB
QUFzQVdnRUFBSklCQUFBS0FIQUJBQUNTQVFBQUN3QjBBUUFBa2dFQUFBb0EveVVBQUFBQUFnQUFB
SmtCQUFBRwpBQVFBQUFEMUFBQUFKQUFBQUFBQUFBQUFBQUFBQmdBQUFBQUFBQUFNQUFBQUFBQUFB
T004QUFBQUFBQUFCQUFBQVBFQUFBQ2lBQUFBClBBQVFFUUFBQUFBQUFBQUFBQUFBQUFZQUFBQUFB
QUFBQmdBQUFEOFVBQUFBQUFBQUFBQUFkMnREUVVsdFlXZGxVWFZsZFdWVFpYUkcKYkdGbmN3QWNB
QklRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBQUFOQUFzUkJBQUFBREVVQUFCcGNR
QVBBQXNSQ0FBQQpBSFVBQUFCdFlYTnJBQkFBQ3hFTUFBQUFkUUFBQUdac1lXZHpBQTRBT1JFQUFB
QUFBQUFBQUQ4VUFBQUNBQVlBQUFEeUFBQUFLQUFBCkFBQUFBQUFBQUFBQUJnQUFBTGdGQUFBQ0FB
QUFIQUFBQUFBQUFBQUhBZ0NBQUFBQUFBZ0NBSUFNQUFBQW1BRUFBQWNBV0FBQUFKZ0IKQUFBTEFG
d0FBQUNZQVFBQUNnREtBQUFBbUFFQUFBc0F6Z0FBQUpnQkFBQUtBT1FBQUFDWUFRQUFDd0RvQUFB
QW1BRUFBQW9BL3lVQQpBQUFBQWdBQUFKOEJBQUFHQUFRQUFBRDFBQUFBSkFBQUFBQUFBQUFBQUFB
QUJnQUFBQUFBQUFBRUFBQUFBQUFBQU9NOEFBQUFBQUFBCkJBQUFBUEVBQUFCL0FBQUFQQUFRRVFB
QUFBQUFBQUFBQUFBQUFBWUFBQUFBQUFBQUJnQUFBRFVVQUFBQUFBQUFBQUFBZDJ0RFFVbHQKWVdk
bFVYVmxkV1ZIWlhSR2JHRm5jd0FjQUJJUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFD
QUFBTkFBc1JCQUFBQURFVQpBQUJwY1FBT0FEa1JBQUFBQUFBQUFBQTFGQUFBQWdBR0FBRHlBQUFB
S0FBQUFBQUFBQUFBQUFBQUJnQUFBTGdGQUFBQ0FBQUFIQUFBCkFBQUFBQUFNQWdDQUFBQUFBQTBD
QUlBTUFBQUFuZ0VBQUFjQVdBQUFBSjRCQUFBTEFGd0FBQUNlQVFBQUNnQ25BQUFBbmdFQUFBc0EK
cXdBQUFKNEJBQUFLQU1BQUFBQ2VBUUFBQ3dERUFBQUFuZ0VBQUFvQS95VUFBQUFBQWdBQUFLVUJB
QUFHQUFRQUFBRDFBQUFBSkFBQQpBQUFBQUFBQUFBQUFCZ0FBQUFBQUFBQUFBQUFBQUFBQUFPTThB
QUFBQUFBQUJBQUFBUEVBQUFCeEFBQUFQUUFRRVFBQUFBQUFBQUFBCkFBQUFBQVlBQUFBQUFBQUFC
Z0FBQUVBVUFBQUFBQUFBQUFBQWQydERRVWx0WVdkbFVYVmxkV1ZIWlhSVWVYQmxTVVFBSEFBU0VB
QUEKQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQUFEZ0E1RVFBQUFBQUFBQUFBUUJRQUFB
SUFCZ0FBQUFEeUFBQUFLQUFBQUFBQQpBQUFBQUFBQUJnQUFBTGdGQUFBQ0FBQUFIQUFBQUFBQUFB
QVJBZ0NBQUFBQUFCSUNBSUFNQUFBQXBBRUFBQWNBV0FBQUFLUUJBQUFMCkFGd0FBQUNrQVFBQUNn
Q1pBQUFBcEFFQUFBc0FuUUFBQUtRQkFBQUtBTFFBQUFDa0FRQUFDd0M0QUFBQXBBRUFBQW9BVm1v
QWkvSC8KRlFBQUFBQ0pCb1BFQk1kR0JBQUFBQURIUmdnQUFBQUFpOFpld3djQUFBQ3JBUUFBQmdB
RUFBQUE5UUFBQUVRQUFBQUFBQUFBQUFBQQpBQ0lBQUFBQUFBQUFBQUFBQUFBQUFBRGpQQUFBQlFB
QUFBUUFBQUFCQUFBQUlBQUFBQUFBQUFBQUFBQUFBQUFBQU9NOEFBQUVBQVFBCkFBQUFBUEVBQUFD
RkFBQUFRZ0FRRVFBQUFBQUFBQUFBQUFBQUFDSUFBQUFGQUFBQUlRQUFBRU1VQUFBQUFBQUFBQUFB
VjB0RFFVTkcKUTI5dWRHVjRkRG82VjB0RFFVTkdRMjl1ZEdWNGRBQWNBQklRQUFBQUFBQUFBQUFB
QUFBQUJBQUFBQUFBQUFBQUFDQUtBQUFOQUFZUgpRaFFBQUJJQWRHaHBjd0FPQURrUkJRQUFBQUFB
QUFCT0ZBQUFBZ0FHQUFBQUFQSUFBQUFvQUFBQUFBQUFBQUFBQUFBaUFBQUF1QVVBCkFBSUFBQUFj
QUFBQUFBQUFBQm9DQUlBZUFBQUFHd0lBZ0F3QUFBQ3FBUUFBQndCNEFBQUFxZ0VBQUFzQWZBQUFB
S29CQUFBS0FNMEEKQUFDcUFRQUFDd0RSQUFBQXFnRUFBQW9BNkFBQUFLb0JBQUFMQU93QUFBQ3FB
UUFBQ2dCV2kvR0xSZ1NGd0hRS1VQOFZBQUFBQUlQRQpCSXRHQ0lYQWRBcFEveFVBQUFBQWc4UUVp
d1pRL3hVQUFBQUFnOFFFWHNNTkFBQUFzZ0VBQUFZQUhnQUFBTEVCQUFBR0FDb0FBQURECkFBQUFC
Z0FFQUFBQTlRQUFBRVFBQUFBQUFBQUFBQUFBQURNQUFBQUFBQUFBQUFBQUFBQUFBQURqUEFBQUF3
QUFBQVFBQUFBQkFBQUEKTVFBQUFBQUFBQUFBQUFBQUFBQUFBT004QUFBQ0FBUUFBQUFBQVBFQUFB
Q21BQUFBUXdBUUVRQUFBQUFBQUFBQUFBQUFBRE1BQUFBRApBQUFBTWdBQUFFTVVBQUFBQUFBQUFB
QUFWMHREUVVOR1EyOXVkR1Y0ZERvNmZsZExRMEZEUmtOdmJuUmxlSFFBSEFBU0VBQUFBQUFBCkFB
QUFBQUFBQUFRQUFBQUFBQUFBQUFBZ0NnQUFEUUFHRVVJVUFBQVNBSFJvYVhNQURnQTVFUXNBQUFB
QUFBQUFVQlFBQUE0QU9SRWMKQUFBQUFBQUFBRklVQUFBT0FEa1JLQUFBQUFBQUFBQmVFZ0FBQWdB
R0FBQUE4Z0FBQUZBQUFBQUFBQUFBQUFBQUFETUFBQUM0QlFBQQpCd0FBQUVRQUFBQUFBQUFBSGdJ
QWdBTUFBQUFmQWdDQUNnQUFBQ0FDQUlBVUFBQUFJUUlBZ0JzQUFBQWlBZ0NBSlFBQUFDTUNBSUF5
CkFBQUFKQUlBZ0F3QUFBQ3dBUUFBQndCNEFBQUFzQUVBQUFzQWZBQUFBTEFCQUFBS0FNNEFBQUN3
QVFBQUN3RFNBQUFBc0FFQUFBb0EKM2dBQUFMQUJBQUFMQU9JQUFBQ3dBUUFBQ2dEdUFBQUFzQUVB
QUFzQThnQUFBTEFCQUFBS0FBZ0JBQUN3QVFBQUN3QU1BUUFBc0FFQQpBQW9BVm1vTTZBQUFBQUNM
OElQRUJJWDJkQjlxQVA4VkFBQUFBSWtHZzhRRXgwWUVBQUFBQU1kR0NBQUFBQUNMeGw3RE04QmV3
d1FBCkFBQzRBUUFBRkFBVkFBQUFxd0VBQUFZQUJBQUFBUFVBQUFCRUFBQUFBQUFBQUFBQUFBQTBB
QUFBQUFBQUFBQUFBQUFBQUFBQTR6d0EKQUFFQUFBQUVBQUFBQVFBQUFESUFBQUFBQUFBQUFBQUFB
QUFBQUFEalBBQUFBQUFFQUFBQUFBRHhBQUFBYlFBQUFEa0FFQkVBQUFBQQpBQUFBQUFBQUFBQTBB
QUFBQVFBQUFETUFBQUNZRkFBQUFBQUFBQUFBQUhkclEwRkRSa052Ym5SbGVIUkRjbVZoZEdVQUhB
QVNFQUFBCkFBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQUFBQUFBZ0FBRGdBNUVSTUFBQUFBQUFBQVRo
UUFBQUlBQmdBQUFBRHlBQUFBUUFBQUFBQUEKQUFBQUFBQUFOQUFBQUxnRkFBQUZBQUFBTkFBQUFB
QUFBQUFzQWdDQUFRQUFBQzBDQUlBdkFBQUFMZ0lBZ0RBQUFBQXRBZ0NBTXdBQQpBQzRDQUlBTUFB
QUF0d0VBQUFjQWVBQUFBTGNCQUFBTEFId0FBQUMzQVFBQUNnQzFBQUFBdHdFQUFBc0F1UUFBQUxj
QkFBQUtBTkFBCkFBQzNBUUFBQ3dEVUFBQUF0d0VBQUFvQVZvdnhpMFlFaGNCMENsRC9GUUFBQUFD
RHhBU0xSZ2lGd0hRS1VQOFZBQUFBQUlQRUJJc0cKVVA4VkFBQUFBSVBFQlBaRUpBZ0JkQWxXNkFB
QUFBQ0R4QVNMeGw3Q0JBQU5BQUFBc2dFQUFBWUFIZ0FBQUxFQkFBQUdBQ29BQUFERApBQUFBQmdB
NkFBQUF2Z0VBQUJRQUJBQUFBUFVBQUFCRUFBQUFBQUFBQUFBQUFBQkhBQUFBQUFBQUFBUUFBQUFB
QUFBQTR6d0FBQU1BCkFBQUVBQUFBQVFBQUFFTUFBQUFBQUFBQUJBQUFBQUFBQUFEalBBQUFBZ0FF
QUFBQUFBRHhBQUFBdEFBQUFGRUFFQkVBQUFBQUFBQUEKQUFBQUFBQkhBQUFBQXdBQUFFUUFBQUJL
RkFBQUFBQUFBQUFBQUZkTFEwRkRSa052Ym5SbGVIUTZPbUJ6WTJGc1lYSWdaR1ZzWlhScApibWNn
WkdWemRISjFZM1J2Y2ljQUhBQVNFQUFBQUFBQUFBQUFBQUFBQUFRQUFBQUFBQUFBQUFBZ0NnQUFE
UUFHRVVJVUFBQVNBSFJvCmFYTUFEZ0E1RVFzQUFBQUFBQUFBVUJRQUFBNEFPUkVjQUFBQUFBQUFB
RklVQUFBT0FEa1JLQUFBQUFBQUFBQmVFZ0FBQWdBR0FBd0EKQUFDOUFRQUFCd0I0QUFBQXZRRUFB
QXNBZkFBQUFMMEJBQUFLQU53QUFBQzlBUUFBQ3dEZ0FBQUF2UUVBQUFvQTdBQUFBTDBCQUFBTApB
UEFBQUFDOUFRQUFDZ0Q4QUFBQXZRRUFBQXNBQUFFQUFMMEJBQUFLQUl0TUpBU0xFWWxVSkFUL0pR
QUFBQUFNQUFBQXhBRUFBQVlBCkJBQUFBUFVBQUFBa0FBQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFB
Z0FBQUFBQUFBQTR6d0FBQUFBQUFBRUFBQUE4UUFBQUpVQUFBQTcKQUJBUkFBQUFBQUFBQUFBQUFB
QUFFQUFBQUFBQUFBQVFBQUFBbkJRQUFBQUFBQUFBQUFCM2EwTkJRMFpEYjI1MFpYaDBVMlYwVEdG
NQpaWElBSEFBU0VBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdBQUVnQUxFUVFBQUFC
VEZBQUFZMjl1ZEdWNGRBQVFBQXNSCkNBQUFBRlVVQUFCc1lYbGxjZ0FPQURrUkNnQUFBQUFBQUFC
WEZBQUFBZ0FHQUFBQUFQSUFBQUFvQUFBQUFBQUFBQUFBQUFBUUFBQUEKdUFVQUFBSUFBQUFjQUFB
QUFBQUFBRFlDQUlBQUFBQUFOd0lBZ0F3QUFBRERBUUFBQndCWUFBQUF3d0VBQUFzQVhBQUFBTU1C
QUFBSwpBTDBBQUFEREFRQUFDd0RCQUFBQXd3RUFBQW9BMkFBQUFNTUJBQUFMQU53QUFBRERBUUFB
Q2dDTFJDUUVpd2lKVENRRS95VUFBQUFBCkRBQUFBTW9CQUFBR0FBUUFBQUQxQUFBQUpBQUFBQUFB
QUFBQUFBQUFFQUFBQUFBQUFBQUVBQUFBQUFBQUFPTThBQUFBQUFBQUJBQUEKQVBFQUFBQ0FBQUFB
T0FBUUVRQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUFFQUFBQUpvVUFBQUFBQUFBQUFBQWQydERR
VU5HUTI5dQpkR1Y0ZEVac2RYTm9BQndBRWhBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUlBQUJJQUN4RUVBQUFBVXhRQUFHTnZiblJsCmVIUUFEZ0E1RVFvQUFBQUFBQUFBV1JRQUFBSUFC
Z0R5QUFBQUtBQUFBQUFBQUFBQUFBQUFFQUFBQUxnRkFBQUNBQUFBSEFBQUFBQUEKQUFBN0FnQ0FB
QUFBQUR3Q0FJQU1BQUFBeVFFQUFBY0FXQUFBQU1rQkFBQUxBRndBQUFESkFRQUFDZ0NvQUFBQXlR
RUFBQXNBckFBQQpBTWtCQUFBS0FNQUFBQURKQVFBQUN3REVBQUFBeVFFQUFBb0FpMFFrQklzSWlV
d2tCUDhsQUFBQUFBd0FBQURRQVFBQUJnQUVBQUFBCjlRQUFBQ1FBQUFBQUFBQUFBQUFBQUJBQUFB
QUFBQUFBQkFBQUFBQUFBQURqUEFBQUFBQUFBQVFBQUFEeEFBQUFqQUFBQUVRQUVCRUEKQUFBQUFB
QUFBQUFBQUFBUUFBQUFBQUFBQUJBQUFBRHRGd0FBQUFBQUFBQUFBSGRyUTBGRFJrTnZiblJsZUhS
SFpYUk1ZWE4wUTI5dApiV2wwVkdsdFpRQWNBQklRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUNBQUFTQUFzUkJBQUFBRk1VQUFCamIyNTBaWGgwCkFBNEFPUkVLQUFBQUFBQUFBT3dYQUFB
Q0FBWUE4Z0FBQUNnQUFBQUFBQUFBQUFBQUFCQUFBQUM0QlFBQUFnQUFBQndBQUFBQUFBQUEKUUFJ
QWdBQUFBQUJCQWdDQURBQUFBTThCQUFBSEFGZ0FBQURQQVFBQUN3QmNBQUFBendFQUFBb0F0QUFB
QU04QkFBQUxBTGdBQUFEUApBUUFBQ2dETUFBQUF6d0VBQUFzQTBBQUFBTThCQUFBS0FJdEVKQWlM
RFFBQUFBQnFBRkJSL3hVQUFBQUFpMVFrRUlQRURJbENCTU1HCkFBQUExd0VBQUFZQUVBQUFBTllC
QUFBR0FBUUFBQUQxQUFBQUpBQUFBQUFBQUFBQUFBQUFId0FBQUFBQUFBQUlBQUFBQUFBQUFPTTgK
QUFBQUFBQUFCQUFBQVBFQUFBQ2hBQUFBUmdBUUVRQUFBQUFBQUFBQUFBQUFBQjhBQUFBQUFBQUFI
Z0FBQUo0VUFBQUFBQUFBQUFBQQpkMnREUVVOR1EyOXVkR1Y0ZEVsdWFYUnBZV3hwZW1WRU0wUkVa
WFpwWTJVQUhBQVNFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBZ0FBRWdBTEVRUUFB
QUJURkFBQVkyOXVkR1Y0ZEFBUkFBc1JDQUFBQUdBVUFBQmtaWFpwWTJVQURnQTVFUTRBQUFBQUFB
QUEKWGhRQUFBSUFCZ0FBQUFEeUFBQUFNQUFBQUFBQUFBQUFBQUFBSHdBQUFMZ0ZBQUFEQUFBQUpB
QUFBQUFBQUFCRUFnQ0FBQUFBQUVVQwpBSUFlQUFBQVJnSUFnQXdBQUFEVkFRQUFCd0JZQUFBQTFR
RUFBQXNBWEFBQUFOVUJBQUFLQU1rQUFBRFZBUUFBQ3dETkFBQUExUUVBCkFBb0E1QUFBQU5VQkFB
QUxBT2dBQUFEVkFRQUFDZ0NMUkNRWTNVUWtFSXRNSkF5TFZDUUlWMUJxQUdvQWcrd0kzUndrVVZM
L0ZRQUEKQUFDTGZDUWtnOFFjaGNDSlJ3aDFCRExBWDhPTEIxTldVUDhWQUFBQUFJdndWdjhWQUFB
QUFJdFBDRlpSL3hVQUFBQUFWdjhWQUFBQQpBSXRjSkVDRHhCU0YyM1llaTNRa0tGV0xMUUFBQUFD
TFZ3aFdVdi9WZzhRSWc4WVFnK3NCZGU1ZFhsdXdBVi9ESUFBQUFPSUJBQUFHCkFEMEFBQURoQVFB
QUJnQkdBQUFBNEFFQUFBWUFVUUFBQU44QkFBQUdBRmdBQUFEZUFRQUFCZ0J1QUFBQTNRRUFBQVlB
QkFBQUFQVUEKQUFDa0FBQUFBQUFBQUFBQUFBQ0xBQUFBQUFBQUFDQUFBQUFBQUFBQTR6d0FBQkVB
QUFBRUFBQUFFUUFBQUhrQUFBQUFBQUFBSUFBQQpBQUFBQUFEalBBQUFBQUFFQUFBQUFBQTVBQUFB
VGdBQUFBQUFBQUFnQUFBQUFBQUFBS1JCQUFBQUFBZ0FBQUFBQURvQUFBQk1BQUFBCkFBQUFBQ0FB
QUFBQUFBQUFwRUVBQUFBQURBQUFBQUFBYkFBQUFCa0FBQUFBQUFBQUlBQUFBQUFBQUFEd1FnQUFB
QUFRQUFBQUFBRHgKQUFBQVZnRUFBRDRBRUJFQUFBQUFBQUFBQUFBQUFBQ0xBQUFBRVFBQUFJb0FB
QUNnRkFBQUFBQUFBQUFBQUhkclEwRkRSa052Ym5SbAplSFJDWldkcGJsVndaR0YwWlFBY0FCSVFB
QUFBQUFBQUFBQUFBQUFBRUFBQUFBQUFBQUFBQUFBQ0FBQVNBQXNSQkFBQUFGTVVBQUJqCmIyNTBa
WGgwQUJFQUN4RUlBQUFBQXdRQUFHSjFabVpsY2dBVkFBc1JEQUFBQUhVQUFBQmlkV1ptWlhKVGFY
cGxBQThBQ3hFUUFBQUEKUVFBQUFIUnBiV1VBRVFBTEVSZ0FBQUJ2RkFBQVltOTFibVJ6QUJVQUN4
RWNBQUFBdHhNQUFHUnBjblI1VW1WamRITUFHUUFMRVNBQQpBQUIxQUFBQVpHbHlkSGxTWldOMFEy
OTFiblFBRGdBNUVSNEFBQUFBQUFBQVpSUUFBQTRBT1JFN0FBQUFBQUFBQUdZVUFBQU9BRGtSClJB
QUFBQUFBQUFCcUZBQUFEZ0E1RVU4QUFBQUFBQUFBYkJRQUFBNEFPUkZXQUFBQUFBQUFBR29VQUFB
T0FEa1Jkd0FBQUFBQUFBQnUKRkFBQUFnQUdBQUFBOGdBQUFJQUFBQUFBQUFBQUFBQUFBSXNBQUFD
NEJRQUFEUUFBQUhRQUFBQUFBQUFBU1FJQWdBQUFBQUJLQWdDQQpLd0FBQUVzQ0FJQXlBQUFBVEFJ
QWdEVUFBQUJYQWdDQU5nQUFBRTRDQUlCREFBQUFUd0lBZ0VvQUFBQlFBZ0NBVlFBQUFGRUNBSUJj
CkFBQUFVd0lBZ0hJQUFBQlVBZ0NBaHdBQUFGWUNBSUNLQUFBQVZ3SUFnQXdBQUFEY0FRQUFCd0RZ
QUFBQTNBRUFBQXNBM0FBQUFOd0IKQUFBS0FLNEJBQURjQVFBQUN3Q3lBUUFBM0FFQUFBb0F2Z0VB
QU53QkFBQUxBTUlCQUFEY0FRQUFDZ0RPQVFBQTNBRUFBQXNBMGdFQQpBTndCQUFBS0FONEJBQURj
QVFBQUN3RGlBUUFBM0FFQUFBb0E3Z0VBQU53QkFBQUxBUElCQUFEY0FRQUFDZ0QrQVFBQTNBRUFB
QXNBCkFnSUFBTndCQUFBS0FCZ0NBQURjQVFBQUN3QWNBZ0FBM0FFQUFBb0FpMFFrQkl0SUNJdFFC
RkZTL3hVQUFBQUFnOFFJd3c0QUFBRG8KQVFBQUJnQUVBQUFBOVFBQUFDUUFBQUFBQUFBQUFBQUFB
QllBQUFBQUFBQUFCQUFBQUFBQUFBRGpQQUFBQUFBQUFBUUFBQUR4QUFBQQpod0FBQUQ4QUVCRUFB
QUFBQUFBQUFBQUFBQUFXQUFBQUFBQUFBQlVBQUFDYUZBQUFBQUFBQUFBQUFIZHJRMEZEUmtOdmJu
UmxlSFJTClpXNWtaWEpWY0dSaGRHVUFIQUFTRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBZ0FBRWdBTEVRUUFBQUJURkFBQVkyOXUKZEdWNGRBQU9BRGtSREFBQUFBQUFBQUJ4RkFBQUFn
QUdBQUR5QUFBQU1BQUFBQUFBQUFBQUFBQUFGZ0FBQUxnRkFBQURBQUFBSkFBQQpBQUFBQUFCYUFn
Q0FBQUFBQUZzQ0FJQVZBQUFBWEFJQWdBd0FBQURuQVFBQUJ3QllBQUFBNXdFQUFBc0FYQUFBQU9j
QkFBQUtBSzhBCkFBRG5BUUFBQ3dDekFBQUE1d0VBQUFvQXlBQUFBT2NCQUFBTEFNd0FBQURuQVFB
QUNnQldpM1FrQ0l0R0NGRC9GUUFBQUFDRHhBVEgKUmdnQUFBQUFYc01MQUFBQXNRRUFBQVlBQkFB
QUFQVUFBQUJFQUFBQUFBQUFBQUFBQUFBYkFBQUFBQUFBQUFRQUFBQUFBQUFBNHp3QQpBQUVBQUFB
RUFBQUFBUUFBQUJrQUFBQUFBQUFBQkFBQUFBQUFBQURqUEFBQUFBQUVBQUFBQUFEeEFBQUFod0FB
QUQ4QUVCRUFBQUFBCkFBQUFBQUFBQUFBYkFBQUFBUUFBQUJvQUFBQ2FGQUFBQUFBQUFBQUFBSGRy
UTBGRFJrTnZiblJsZUhSR2FXNXBjMmhWY0dSaGRHVUEKSEFBU0VBQUFBQUFBQUFBQUFBQUFBQVFB
QUFBQUFBQUFBQUFBQWdBQUVnQUxFUVFBQUFCVEZBQUFZMjl1ZEdWNGRBQU9BRGtSQ1FBQQpBQUFB
QUFCU0ZBQUFBZ0FHQUFEeUFBQUFPQUFBQUFBQUFBQUFBQUFBR3dBQUFMZ0ZBQUFFQUFBQUxBQUFB
QUFBQUFCZkFnQ0FBUUFBCkFHQUNBSUFTQUFBQVlRSUFnQm9BQUFCaUFnQ0FEQUFBQU8wQkFBQUhB
SGdBQUFEdEFRQUFDd0I4QUFBQTdRRUFBQW9BendBQUFPMEIKQUFBTEFOTUFBQUR0QVFBQUNnRG9B
QUFBN1FFQUFBc0E3QUFBQU8wQkFBQUtBSXRFSkFTTFNBU0pUQ1FFL3lVQUFBQUFEUUFBQVBNQgpB
QUFHQUFRQUFBRDFBQUFBSkFBQUFBQUFBQUFBQUFBQUVRQUFBQUFBQUFBRUFBQUFBQUFBQU9NOEFB
QUFBQUFBQkFBQUFQRUFBQUNPCkFBQUFSZ0FRRVFBQUFBQUFBQUFBQUFBQUFCRUFBQUFBQUFBQUVR
QUFBSm9VQUFBQUFBQUFBQUFBZDJ0RFFVTkdRMjl1ZEdWNGRGSmwKYkdWaGMyVkVNMFJTWlhOdmRY
SmpaWE1BSEFBU0VBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdBQUVnQUxFUVFBQUFC
VApGQUFBWTI5dWRHVjRkQUFPQURrUkN3QUFBQUFBQUFCUUZBQUFBZ0FHQUFBQThnQUFBQ2dBQUFB
QUFBQUFBQUFBQUJFQUFBQzRCUUFBCkFnQUFBQndBQUFBQUFBQUFaUUlBZ0FBQUFBQm1BZ0NBREFB
QUFQSUJBQUFIQUZnQUFBRHlBUUFBQ3dCY0FBQUE4Z0VBQUFvQXRnQUEKQVBJQkFBQUxBTG9BQUFE
eUFRQUFDZ0RRQUFBQThnRUFBQXNBMUFBQUFQSUJBQUFLQUl0TUpBU0xVUWlKVkNRRS95VUFBQUFB
RFFBQQpBTjBCQUFBR0FBUUFBQUQxQUFBQUpBQUFBQUFBQUFBQUFBQUFFUUFBQUFBQUFBQUlBQUFB
QUFBQUFPTThBQUFBQUFBQUJBQUFBUEVBCkFBQ2JBQUFBUUFBUUVRQUFBQUFBQUFBQUFBQUFBQkVB
QUFBQUFBQUFFUUFBQUtJVUFBQUFBQUFBQUFBQWQydERRVU5HUTI5dWRHVjQKZEVGa1pGVndaR0Yw
WlZKbFkzUUFIQUFTRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0FBRWdBTEVRUUFB
QUJURkFBQQpZMjl1ZEdWNGRBQVJBQXNSQ0FBQUFHOFVBQUJpYjNWdVpITUFEZ0E1RVFzQUFBQUFB
QUFBYmhRQUFBSUFCZ0FBOGdBQUFDZ0FBQUFBCkFBQUFBQUFBQUJFQUFBQzRCUUFBQWdBQUFCd0FB
QUFBQUFBQWFnSUFnQUFBQUFCckFnQ0FEQUFBQVBnQkFBQUhBRmdBQUFENEFRQUEKQ3dCY0FBQUEr
QUVBQUFvQXd3QUFBUGdCQUFBTEFNY0FBQUQ0QVFBQUNnRGNBQUFBK0FFQUFBc0E0QUFBQVBnQkFB
QUtBSXRFSkFTTApTQWhXVWY4VkFBQUFBSXZ3ZzhRRWhmWjFBbDdEVjFiL0ZRQUFBQUJXaS9qL0ZR
QUFBQUNEeEFpTHgxOWV3d3NBQUFBQUFnQUFCZ0FlCkFBQUEvd0VBQUFZQUp3QUFBUDRCQUFBR0FB
UUFBQUQxQUFBQVpBQUFBQUFBQUFBQUFBQUFNd0FBQUFBQUFBQUVBQUFBQUFBQUFPTTgKQUFBSUFB
QUFCQUFBQUFnQUFBQXFBQUFBQUFBQUFBUUFBQUFBQUFBQTR6d0FBQUFBQkFBQUFBQUFHd0FBQUJZ
QUFBQUFBQUFBQkFBQQpBQUFBQUFEalBBQUFBQUFJQUFBQUFBRHhBQUFBc3dBQUFFc0FFQkVBQUFB
QUFBQUFBQUFBQUFBekFBQUFDQUFBQURJQUFBQ2pGQUFBCkFBQUFBQUFBQUhkclEwRkRSa052Ym5S
bGVIUkRiM0I1VlhCa1lYUmxVbVZqZEVWdWRXMWxjbUYwYjNJQUhBQVNFQUFBQUFBQUFBQUEKQUFB
QUFBZ0FBQUFBQUFBQUFBQUFBZ0FBRWdBTEVRUUFBQUJURkFBQVkyOXVkR1Y0ZEFBT0FEa1JDUUFB
QUFBQUFBQnlGQUFBRGdBNQpFUndBQUFBQUFBQUFjeFFBQUE0QU9SRWxBQUFBQUFBQUFIWVVBQUFD
QUFZQUFQSUFBQUJZQUFBQUFBQUFBQUFBQUFBekFBQUF1QVVBCkFBZ0FBQUJNQUFBQUFBQUFBRzhD
QUlBQUFBQUFjQUlBZ0JRQUFBQnhBZ0NBR1FBQUFIY0NBSUFiQUFBQWRBSUFnQ0lBQUFCMUFnQ0EK
TGdBQUFIWUNBSUF5QUFBQWR3SUFnQXdBQUFEOUFRQUFCd0NZQUFBQS9RRUFBQXNBbkFBQUFQMEJB
QUFLQVBzQUFBRDlBUUFBQ3dELwpBQUFBL1FFQUFBb0FDd0VBQVAwQkFBQUxBQThCQUFEOUFRQUFD
Z0FiQVFBQS9RRUFBQXNBSHdFQUFQMEJBQUFLQURRQkFBRDlBUUFBCkN3QTRBUUFBL1FFQUFBb0Ev
eVVBQUFBQUFnQUFBQVlDQUFBR0FBUUFBQUQxQUFBQUpBQUFBQUFBQUFBQUFBQUFCZ0FBQUFBQUFB
QUUKQUFBQUFBQUFBT004QUFBQUFBQUFCQUFBQVBFQUFBQ1RBQUFBU0FBUUVRQUFBQUFBQUFBQUFB
QUFBQVlBQUFBQUFBQUFCZ0FBQUtVVQpBQUFBQUFBQUFBQUFkMnREUVVOR1ZYQmtZWFJsVW1WamRF
VnVkVzFsY21GMGIzSk9aWGgwVW1WamRBQWNBQklRQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFB
QUFBQUFDQUFBVkFBc1JCQUFBQUhvVUFBQmxiblZ0WlhKaGRHOXlBQTRBT1JFQUFBQUFBQUFBQUhn
VUFBQUMKQUFZQUFQSUFBQUFvQUFBQUFBQUFBQUFBQUFBR0FBQUF1QVVBQUFJQUFBQWNBQUFBQUFB
QUFIb0NBSUFBQUFBQWV3SUFnQXdBQUFBRgpBZ0FBQndCWUFBQUFCUUlBQUFzQVhBQUFBQVVDQUFB
S0FMc0FBQUFGQWdBQUN3Qy9BQUFBQlFJQUFBb0ExQUFBQUFVQ0FBQUxBTmdBCkFBQUZBZ0FBQ2dE
L0pRQUFBQUFDQUFBQURBSUFBQVlBQkFBQUFQVUFBQUFrQUFBQUFBQUFBQUFBQUFBR0FBQUFBQUFB
QUFRQUFBQUEKQUFBQTR6d0FBQUFBQUFBRUFBQUE4UUFBQUpJQUFBQkhBQkFSQUFBQUFBQUFBQUFB
QUFBQUJnQUFBQUFBQUFBR0FBQUFwaFFBQUFBQQpBQUFBQUFCM2EwTkJRMFpWY0dSaGRHVlNaV04w
Ulc1MWJXVnlZWFJ2Y2xKbGJHVmhjMlVBSEFBU0VBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFB
QUFBQUFnQUFGUUFMRVFRQUFBQjZGQUFBWlc1MWJXVnlZWFJ2Y2dBT0FEa1JBQUFBQUFBQUFBQjJG
QUFBQWdBR0FBQUEKOGdBQUFDZ0FBQUFBQUFBQUFBQUFBQVlBQUFDNEJRQUFBZ0FBQUJ3QUFBQUFB
QUFBZndJQWdBQUFBQUNBQWdDQURBQUFBQXNDQUFBSApBRmdBQUFBTEFnQUFDd0JjQUFBQUN3SUFB
QW9BdWdBQUFBc0NBQUFMQUw0QUFBQUxBZ0FBQ2dEVUFBQUFDd0lBQUFzQTJBQUFBQXNDCkFBQUtB
RmFMZENRSWhmWjBOSXRHQklYQWRBcFEveFVBQUFBQWc4UUVpMFlJaGNCMENsRC9GUUFBQUFDRHhB
U0xCbEQvRlFBQUFBQlcKNkFBQUFBQ0R4QWhld3hNQUFBQ3lBUUFBQmdBa0FBQUFzUUVBQUFZQU1B
QUFBTU1BQUFBR0FEWUFBQUMrQVFBQUZBQUVBQUFBOVFBQQpBRVFBQUFBQUFBQUFBQUFBQUQ4QUFB
QUFBQUFBQkFBQUFBQUFBQURqUEFBQUFRQUFBQVFBQUFBQkFBQUFQUUFBQUFBQUFBQUVBQUFBCkFB
QUFBT004QUFBQUFBUUFBQUFBQVBFQUFBQ2lBQUFBT2dBUUVRQUFBQUFBQUFBQUFBQUFBRDhBQUFB
QkFBQUFQZ0FBQUpvVUFBQUEKQUFBQUFBQUFkMnREUVVOR1EyOXVkR1Y0ZEVSbGMzUnliM2tBSEFB
U0VBQUFBQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFBQUFBQWdBQQpFZ0FMRVFRQUFBQlRGQUFBWTI5
dWRHVjRkQUFPQURrUkVRQUFBQUFBQUFCUUZBQUFEZ0E1RVNJQUFBQUFBQUFBVWhRQUFBNEFPUkV1
CkFBQUFBQUFBQUY0U0FBQUNBQVlBQUFEeUFBQUFNQUFBQUFBQUFBQUFBQUFBUHdBQUFMZ0ZBQUFE
QUFBQUpBQUFBQUFBQUFBeEFnQ0EKQVFBQUFESUNBSUErQUFBQU13SUFnQXdBQUFBUkFnQUFCd0I0
QUFBQUVRSUFBQXNBZkFBQUFCRUNBQUFLQU1vQUFBQVJBZ0FBQ3dETwpBQUFBRVFJQUFBb0EyZ0FB
QUJFQ0FBQUxBTjRBQUFBUkFnQUFDZ0RxQUFBQUVRSUFBQXNBN2dBQUFCRUNBQUFLQUFRQkFBQVJB
Z0FBCkN3QUlBUUFBRVFJQUFBb0FhQUFBQUFEL0ZRQUFBQUNEeEFTakFBQUFBTU1CQUFBQUdRSUFB
QVlBQndBQUFDVUJBQUFHQUE4QUFBQXkKQWdBQUJnQUVBQUFBOVFBQUFDUUFBQUFBQUFBQUFBQUFB
QlFBQUFBQUFBQUFBQUFBQUFBQUFBRGpQQUFBQUFBQUFBUUFBQUR4QUFBQQppd0FBQUZjQUR4RUFB
QUFBQUFBQUFBQUFBQUFVQUFBQUFBQUFBQk1BQUFDSEV3QUFBQUFBQUFBQUFHQmtlVzVoYldsaklH
bHVhWFJwCllXeHBlbVZ5SUdadmNpQW5hME5HVjJsdVpHOTNjMU5UVEZCbFpYSkRaWEowSnljQUhB
QVNFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEKQUFBQUFBQUFBZ0FBRGdBNUVRVUFBQUFBQUFBQVFo
TUFBQUlBQmdBQThnQUFBQ0FBQUFBQUFBQUFBQUFBQUJRQUFBQzRCUUFBQVFBQQpBQlFBQUFBQUFB
QUFMUUFBZ0F3QUFBQVdBZ0FBQndCWUFBQUFGZ0lBQUFzQVhBQUFBQllDQUFBS0FMTUFBQUFXQWdB
QUN3QzNBQUFBCkZnSUFBQW9BekFBQUFCWUNBQUFMQU5BQUFBQVdBZ0FBQ2dCZmEwTkdWMmx1Wkc5
M2MxTlRURkJsWlhKRFpYSjBBR2dBQUFBQS94VUEKQUFBQWc4UUVvd0FBQUFEREFRQUFBQ0VDQUFB
R0FBY0FBQUFsQVFBQUJnQVBBQUFBTlFJQUFBWUFCQUFBQVBVQUFBQWtBQUFBQUFBQQpBQUFBQUFB
VUFBQUFBQUFBQUFBQUFBQUFBQUFBNHp3QUFBQUFBQUFFQUFBQThRQUFBSThBQUFCYkFBOFJBQUFB
QUFBQUFBQUFBQUFBCkZBQUFBQUFBQUFBVEFBQUFoeE1BQUFBQUFBQUFBQUJnWkhsdVlXMXBZeUJw
Ym1sMGFXRnNhWHBsY2lCbWIzSWdKMnREUmxkcGJtUnYKZDNOVFUweERhR0ZwYmtOdmJuUmxlSFFu
SndBY0FCSVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FBQU9BRGtSQlFBQQpBQUFB
QUFCQ0V3QUFBZ0FHQUFEeUFBQUFJQUFBQUFBQUFBQUFBQUFBRkFBQUFMZ0ZBQUFCQUFBQUZBQUFB
QUFBQUFBdUFBQ0FEQUFBCkFCNENBQUFIQUZnQUFBQWVBZ0FBQ3dCY0FBQUFIZ0lBQUFvQXR3QUFB
QjRDQUFBTEFMc0FBQUFlQWdBQUNnRFFBQUFBSGdJQUFBc0EKMUFBQUFCNENBQUFLQUY5clEwWlhh
VzVrYjNkelUxTk1RMmhoYVc1RGIyNTBaWGgwQUdnQUFBQUEveFVBQUFBQWc4UUVvd0FBQUFERApB
UUFBQUNrQ0FBQUdBQWNBQUFBbEFRQUFCZ0FQQUFBQU5BSUFBQVlBQkFBQUFQVUFBQUFrQUFBQUFB
QUFBQUFBQUFBVUFBQUFBQUFBCkFBQUFBQUFBQUFBQTR6d0FBQUFBQUFBRUFBQUE4UUFBQUl3QUFB
QllBQThSQUFBQUFBQUFBQUFBQUFBQUZBQUFBQUFBQUFBVEFBQUEKaHhNQUFBQUFBQUFBQUFCZ1pI
bHVZVzFwWXlCcGJtbDBhV0ZzYVhwbGNpQm1iM0lnSjJ0RFJsZHBibVJ2ZDNOVFUweE1iMk5oYkVO
bApjblFuSndBY0FCSVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FBQU9BRGtSQlFB
QUFBQUFBQUJDRXdBQUFnQUdBUElBCkFBQWdBQUFBQUFBQUFBQUFBQUFVQUFBQXVBVUFBQUVBQUFB
VUFBQUFBQUFBQUM4QUFJQU1BQUFBSmdJQUFBY0FXQUFBQUNZQ0FBQUwKQUZ3QUFBQW1BZ0FBQ2dD
MEFBQUFKZ0lBQUFzQXVBQUFBQ1lDQUFBS0FNd0FBQUFtQWdBQUN3RFFBQUFBSmdJQUFBb0FYMnRE
UmxkcApibVJ2ZDNOVFUweE1iMk5oYkVObGNuUUFhQUFBQUFEL0ZRQUFBQUNEeEFTakFBQUFBTU1C
QUFBQU1RSUFBQVlBQndBQUFDVUJBQUFHCkFBOEFBQUF6QWdBQUJnQUVBQUFBOVFBQUFDUUFBQUFB
QUFBQUFBQUFBQlFBQUFBQUFBQUFBQUFBQUFBQUFBRGpQQUFBQUFBQUFBUUEKQUFEeEFBQUFtUUFB
QUdVQUR4RUFBQUFBQUFBQUFBQUFBQUFVQUFBQUFBQUFBQk1BQUFDSEV3QUFBQUFBQUFBQUFHQmtl
VzVoYldsagpJR2x1YVhScFlXeHBlbVZ5SUdadmNpQW5hME5HVTNSeVpXRnRVSEp2Y0dWeWRIbFhh
VzVrYjNkelUxTk1RMlZ5ZEVsdVptOG5Kd0FjCkFCSVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQ0FBQU9BRGtSQlFBQUFBQUFBQUJDRXdBQUFnQUdBQUFBQVBJQUFBQWcKQUFBQUFBQUFB
QUFBQUFBVUFBQUF1QVVBQUFFQUFBQVVBQUFBQUFBQUFEQUFBSUFNQUFBQUxnSUFBQWNBV0FBQUFD
NENBQUFMQUZ3QQpBQUF1QWdBQUNnREJBQUFBTGdJQUFBc0F4UUFBQUM0Q0FBQUtBTndBQUFBdUFn
QUFDd0RnQUFBQUxnSUFBQW9BWDJ0RFJsTjBjbVZoCmJWQnliM0JsY25SNVYybHVaRzkzYzFOVFRF
TmxjblJKYm1adkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFGZ0lBQUFZQUJBQUEKQUI0Q0FB
QUdBQWdBQUFBbUFnQUFCZ0FNQUFBQUxnSUFBQVlBQkFBQUFGNEFGUlY1MFM5TFBUa1BSNWVZR0I4
Z3laQlFCQUFBQUdNNgpYR041WjNkcGJseG9iMjFsWEdOdFlYSnlhVzVjZDJWaWEybDBZblZwYkdS
Y2JHbGlYSGRsWW10cGRITjVjM1JsYldsdWRHVnlabUZqClpTNTJZemd3TG5Ca1lnRHk4VUJqYjIx
d0xtbGtKOFp1QVAvL0FBQURBRUJtWldGMExqQXdBUUFBQVAvL0FBQURBQzVrY21WamRIWmwKQUFB
QUFBRUFBQUFEQWZFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUM1a1pXSjFaeVJUQUFBQUFBSUFBQUFE
QVFDWUFBQTBBQUFBQUFBQQpBQUFBQUFBQUFDNXlaR0YwWVFBQUFBQUFBQU1BQUFBREFRUUFBQUFB
QUFBQWhBeUEwd0FBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQU1BCkFBQURBQzVrWVhSaEFBQUFBQUFB
QUFRQUFBQURBUXdBQUFBQUFBQUE2WERRSUFBQUFBQUFBQUFBQUFBWEFBQUFBQUFBQUFRQUFBQUQK
QUFBQUFBQXNBQUFBQkFBQUFBUUFBQUFEQUFBQUFBQkNBQUFBQ0FBQUFBUUFBQUFEQUM1MFpYaDBB
QUFBQUFBQUFBVUFBQUFEQVE4QQpBQUFBQUFBQVkvVVM0UUFBQWdBQUFDNWtaV0oxWnlSVEFBQUFB
QVlBQUFBREFjQUFBQUFGQUFBQUFBQUFBQVVBQlFBQUFGOW1ZV0p6ClpnQUFBQUFBQUFVQUlBQUNB
QUFBQUFCYkFBQUFBQUFBQUFBQUFBQUNBQzUwWlhoMEFBQUFBQUFBQUFjQUFBQURBUndBQUFBQkFB
QUEKQjkzSTVRQUFBZ0FBQUM1a1pXSjFaeVJUQUFBQUFBZ0FBQUFEQWRBQUFBQUhBQUFBQUFBQUFB
Y0FCUUFBQUY5alpXbHNaZ0FBQUFBQQpBQWNBSUFBQ0FBQUFBQUJsQUFBQUFBQUFBQUFBQUFBQ0FD
NTBaWGgwQUFBQUFBQUFBQWtBQUFBREFSWUFBQUFCQUFBQTNxUysxZ0FBCkFnQUFBQzVrWldKMVp5
UlRBQUFBQUFvQUFBQURBY3dBQUFBRkFBQUFBQUFBQUFrQUJRQUFBRjl3YjNkbUFBQUFBQUFBQUFr
QUlBQUMKQUY5ZlEwbHdiM2NBQUFBQUFBQUFJQUFDQUM1MFpYaDBBQUFBQUFBQUFBc0FBQUFEQVE4
QUFBQUFBQUFBWS9VUzRRQUFBZ0FBQUM1awpaV0oxWnlSVEFBQUFBQXdBQUFBREFjQUFBQUFGQUFB
QUFBQUFBQXNBQlFBQUFBQUFBQUJ4QUFBQUFBQUFBQXNBSUFBQ0FDNTBaWGgwCkFBQUFBQUFBQUEw
QUFBQURBUjBBQUFBQUFBQUFUNHQ1b2dBQUFnQUFBQzVrWldKMVp5UlRBQUFBQUE0QUFBQURBZndB
QUFBRkFBQUEKQUFBQUFBMEFCUUFBQUFBQUFBQi9BQUFBQUFBQUFBMEFJQUFEQUM1MFpYaDBBQUFB
QUFBQUFBOEFBQUFEQVQ4QUFBQUFBQUFBTmxISwp5QUFBQWdBQUFDNWtaV0oxWnlSVEFBQUFBQkFB
QUFBREFSZ0JBQUFGQUFBQUFBQUFBQThBQlFBQUFBQUFBQUNlQUFBQUFBQUFBQThBCklBQURBQzUw
WlhoMEFBQUFBQUFBQUJFQUFBQURBVFVBQUFBQUFBQUFZR0pPdVFBQUFnQUFBQzVrWldKMVp5UlRB
QUFBQUJJQUFBQUQKQVJRQkFBQUZBQUFBQUFBQUFCRUFCUUFBQUFBQUFBRG1BQUFBQUFBQUFCRUFJ
QUFEQUM1MFpYaDBBQUFBQUFBQUFCTUFBQUFEQVVFQQpBQUFDQUFBQWZsam1KZ0FBQVFBQUFDNWta
V0oxWnlSVEFBQUFBQlFBQUFBREFSQUJBQUFGQUFBQUFBQUFBQk1BQlFBQUFBQUFBQUFzCkFRQUFB
QUFBQUJNQUlBQUNBQzUwWlhoMEFBQUFBQUFBQUJVQUFBQURBUVlBQUFBQkFBQUFRVkV0MEFBQUFR
QUFBQzVrWldKMVp5UlQKQUFBQUFCWUFBQUFEQWRRQUFBQUZBQUFBQUFBQUFCVUFCUUFBQUFBQUFB
Qk5BUUFBQUFBQUFCVUFJQUFDQUM1MFpYaDBBQUFBQUFBQQpBQmNBQUFBREFRc0FBQUFCQUFBQWFH
aHFPd0FBQVFBQUFDNWtaV0oxWnlSVEFBQUFBQmdBQUFBREFld0FBQUFGQUFBQUFBQUFBQmNBCkJR
QUFBQUFBQUFCdEFRQUFBQUFBQUJjQUlBQUNBQzUwWlhoMEFBQUFBQUFBQUJrQUFBQURBUWNBQUFB
QkFBQUFMMFQ3YkFBQUFRQUEKQUM1a1pXSjFaeVJUQUFBQUFCb0FBQUFEQWRRQUFBQUZBQUFBQUFB
QUFCa0FCUUFBQUFBQUFBQ1JBUUFBQUFBQUFCa0FJQUFDQUM1MApaWGgwQUFBQUFBQUFBQnNBQUFB
REFWa0RBQUFrQUFBQVVJUm5Hd0FBQVFBQUFDNWtaV0oxWnlSVEFBQUFBQndBQUFBREFVZ0ZBQUF6
CkFBQUFBQUFBQUJzQUJRQUFBQUFBQUFDMEFRQUFBQUFBQUJzQUlBQURBQUFBQUFET0FRQUFBQUFB
QUFBQUFBQUNBQUFBQUFEZ0FRQUEKQUFBQUFBQUFBQUFDQUM1eVpHRjBZUUFBQUFBQUFCMEFBQUFE
QVFRQUFBQUFBQUFBaEF5QTB3QUFBZ0FBQUFBQUFBRDJBUUFBQUFBQQpBQjBBQUFBQ0FDNXlaR0Yw
WVFBQUFBQUFBQjRBQUFBREFRZ0FBQUFBQUFBQUM0ck13UUFBQWdBQUFBQUFBQUFHQWdBQUFBQUFB
QjRBCkFBQUNBQzVrWVhSaEFBQUFBQUFBQUI4QUFBQURBUVFBQUFBQUFBQUFrRUhjZGdBQUFnQUFB
QUFBQUFBZUFnQUFBQUFBQUI4QUFBQUQKQUM1eVpHRjBZUUFBQUFBQUFDQUFBQUFEQVFnQUFBQUFB
QUFBZ016YW9nQUFBZ0FBQUFBQUFBQkdBZ0FBQUFBQUFDQUFBQUFDQUM1eQpaR0YwWVFBQUFBQUFB
Q0VBQUFBREFRZ0FBQUFBQUFBQVdPWmJQUUFBQWdBQUFBQUFBQUJlQWdBQUFBQUFBQ0VBQUFBQ0FD
NXlaR0YwCllRQUFBQUFBQUNJQUFBQURBUVFBQUFBQUFBQUFkclhsalFBQUFnQUFBQUFBQUFCMkFn
QUFBQUFBQUNJQUFBQUNBQUFBQUFDR0FnQUEKQUFBQUFBQUFBQUFDQUFBQUFBQ2NBZ0FBQUFBQUFB
QUFBQUFDQUFBQUFBQ3dBZ0FBQUFBQUFBQUFBQUFDQUFBQUFBREdBZ0FBQUFBQQpBQUFBQUFBQ0FB
QUFBQURjQWdBQUFBQUFBQUFBQUFBQ0FBQUFBQUR2QWdBQUFBQUFBQUFBQUFBQ0FBQUFBQUFFQXdB
QUFBQUFBQUFBCkFBQUNBQzV5WkdGMFlRQUFBQUFBQUNNQUFBQURBUWdBQUFBQUFBQUExRWhkdWdB
QUFnQUFBQUFBQUFBZkF3QUFBQUFBQUNNQUFBQUMKQUM1eVpHRjBZUUFBQUFBQUFDUUFBQUFEQVFR
QUFBQUFBQUFBU3NUZzNRQUFBZ0FBQUFBQUFBQTNBd0FBQUFBQUFDUUFBQUFDQUFBQQpBQUJIQXdB
QUFBQUFBQUFBQUFBQ0FDNXlaR0YwWVFBQUFBQUFBQ1VBQUFBREFSQUFBQUFBQUFBQU45QVVoQUFB
QWdBQUFBQUFBQUJpCkF3QUFBQUFBQUNVQUFBQURBQUFBQUFDVUF3QUFBQUFBQUFBQUFBQUNBQUFB
QUFDcUF3QUFBQUFBQUFBQUFBQUNBQUFBQUFEQ0F3QUEKQUFBQUFBQUFBQUFDQUM1a1lYUmhBQUFB
QUFBQUFDWUFBQUFEQVFRQUFBQUFBQUFBSEs4Ykl3QUFBZ0FBQUFBQUFBRGVBd0FBQUFBQQpBQ1lB
QUFBREFBQUFBQUFOQkFBQUFBQUFBQUFBQUFBQ0FGOXRaVzF6WlhRQUFBQUFBQUFBSUFBQ0FDNTBa
WGgwQUFBQUFBQUFBQ2NBCkFBQURBVGdBQUFBR0FBQUFWRUtKaFFBQUFRQUFBQzVrWldKMVp5UlRB
QUFBQUNnQUFBQURBVEFCQUFBSkFBQUFBQUFBQUNjQUJRQUEKQUFBQUFBQXRCQUFBQUFBQUFDY0FJ
QUFDQUM1aWMzTUFBQUFBQUFBQUFDa0FBQUFEQVJ3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQQpB
QUJTQkFBQUJBQUFBQ2tBQUFBREFBQUFBQUJzQkFBQUFBQUFBQ2tBQUFBREFBQUFBQUNIQkFBQUNB
QUFBQ2tBQUFBREFDNTBaWGgwCkFBQUFBQUFBQUNvQUFBQURBU1VBQUFBREFBQUFDU1hDR1FBQUFR
QUFBQzVrWldKMVp5UlRBQUFBQUNzQUFBQURBV3dCQUFBTEFBQUEKQUFBQUFDb0FCUUFBQUFBQUFB
Q2xCQUFBQUFBQUFDb0FJQUFEQUFBQUFBRFVCQUFBQUFBQUFBQUFBQUFDQUFBQUFBRDZCQUFBQUFB
QQpBQUFBQUFBQ0FDNTBaWGgwQUFBQUFBQUFBQ3dBQUFBREFWMEFBQUFHQUFBQUQxMkJVZ0FBQVFB
QUFDNWtaV0oxWnlSVEFBQUFBQzBBCkFBQURBZWdCQUFBUEFBQUFBQUFBQUN3QUJRQUFBQUFBQUFB
ZkJRQUFBQUFBQUN3QUlBQUNBQUFBQUFCUEJRQUFBQUFBQUFBQUFBQUMKQUFBQUFBQjFCUUFBQUFB
QUFBQUFBQUFDQUM1MFpYaDBBQUFBQUFBQUFDNEFBQUFEQVRRQUFBQURBQUFBT0lpNjVnQUFBUUFB
QUM1awpaV0oxWnlSVEFBQUFBQzhBQUFBREFYZ0JBQUFMQUFBQUFBQUFBQzRBQlFBQUFBQUFBQUNh
QlFBQUFBQUFBQzRBSUFBQ0FDNTBaWGgwCkFBQUFBQUFBQURBQUFBQURBVklCQUFBUEFBQUFrNkxt
M3dBQUFRQUFBQzVrWldKMVp5UlRBQUFBQURFQUFBQURBZlFDQUFBVEFBQUEKQUFBQUFEQUFCUUFB
QUFBQUFBRE5CUUFBQUFBQUFEQUFJQUFDQUFBQUFBQUlCZ0FBQUFBQUFBQUFBQUFDQUFBQUFBQTNC
Z0FBQUFBQQpBQUFBQUFBQ0FDNXlaR0YwWVFBQUFBQUFBRElBQUFBREFRUUFBQUFBQUFBQUFBQUFB
QUFBQWdBQUFBQUFBQUJtQmdBQUFBQUFBRElBCkFBQUNBQzV5WkdGMFlRQUFBQUFBQURNQUFBQURB
UVFBQUFBQUFBQUFWalpkWUFBQUFnQUFBQUFBQUFCMkJnQUFBQUFBQURNQUFBQUMKQUFBQUFBQ0dC
Z0FBQUFBQUFBQUFBQUFDQUFBQUFBQ2RCZ0FBQUFBQUFBQUFBQUFDQUFBQUFBREZCZ0FBQUFBQUFB
QUFBQUFDQUFBQQpBQUQyQmdBQUFBQUFBQUFBQUFBQ0FDNXlaR0YwWVFBQUFBQUFBRFFBQUFBREFR
UUFBQUFBQUFBQWtFSGNkZ0FBQWdBQUFBQUFBQUFmCkJ3QUFBQUFBQURRQUFBQUNBQzUwWlhoMEFB
QUFBQUFBQURVQUFBQURBUmtBQUFBQUFBQUFZZGRxcUFBQUFnQUFBQzVrWldKMVp5UlQKQUFBQUFE
WUFBQUFEQVJRQkFBQUZBQUFBQUFBQUFEVUFCUUFBQUFBQUFBQXZCd0FBQUFBQUFEVUFJQUFEQUM1
MFpYaDBBQUFBQUFBQQpBRGNBQUFBREFXb0FBQUFFQUFBQTdGa3VSQUFBQVFBQUFDNWtaV0oxWnlS
VEFBQUFBRGdBQUFBREFSUUJBQUFIQUFBQUFBQUFBRGNBCkJRQUFBQUFBQUFCUUJ3QUFBQUFBQURj
QUlBQURBQzV5WkdGMFlRQUFBQUFBQURrQUFBQURBUWdBQUFBQUFBQUEwZDRZNkFBQUFnQUEKQUFB
QUFBQmdCd0FBQUFBQUFEa0FBQUFDQUM1MFpYaDBBQUFBQUFBQUFEb0FBQUFEQWFvQkFBQU1BQUFB
clVUQ3d3QUFBUUFBQUM1awpaV0oxWnlSVEFBQUFBRHNBQUFBREFaZ0RBQUFmQUFBQUFBQUFBRG9B
QlFBQUFBQUFBQUI0QndBQUFBQUFBRG9BSUFBQ0FDNXlaR0YwCllRQUFBQUFBQUR3QUFBQURBUWdB
QUFBQUFBQUFBQUFBQUFBQUFnQUFBQUFBQUFEREJ3QUFBQUFBQUR3QUFBQUNBQUFBQUFEYkJ3QUEK
QUFBQUFBQUFBQUFDQUFBQUFBRDJCd0FBQUFBQUFBQUFBQUFDQUFBQUFBQU9DQUFBQUFBQUFBQUFB
QUFDQUFBQUFBQWxDQUFBQUFBQQpBQUFBQUFBQ0FBQUFBQUEyQ0FBQUFBQUFBQUFBQUFBQ0FBQUFB
QUJUQ0FBQUFBQUFBQUFBQUFBQ0FDNTBaWGgwQUFBQUFBQUFBRDBBCkFBQURBUVlBQUFBQkFBQUF1
QXZsN1FBQUFRQUFBQzVrWldKMVp5UlRBQUFBQUQ0QUFBQURBUndCQUFBSEFBQUFBQUFBQUQwQUJR
QUEKQUFBQUFBQjVDQUFBQUFBQUFEMEFJQUFDQUFBQUFBQ2dDQUFBQUFBQUFBQUFBQUFDQUM1MFpY
aDBBQUFBQUFBQUFEOEFBQUFEQVNzQQpBQUFFQUFBQVErTzBzQUFBQVFBQUFDNWtaV0oxWnlSVEFB
QUFBRUFBQUFBREFWQUJBQUFOQUFBQUFBQUFBRDhBQlFBQUFBQUFBQURDCkNBQUFBQUFBQUQ4QUlB
QUNBQUFBQUFEY0NBQUFBQUFBQUFBQUFBQUNBQUFBQUFENUNBQUFBQUFBQUFBQUFBQUNBQUFBQUFB
ZkNRQUEKQUFBQUFBQUFBQUFDQUFBQUFBQS9DUUFBQUFBQUFBQUFBQUFDQUM1MFpYaDBBQUFBQUFB
QUFFRUFBQUFEQVQwQUFBQUJBQUFBUDN5ZwpvQUFBQVFBQUFDNWtaV0oxWnlSVEFBQUFBRUlBQUFB
REFRZ0JBQUFIQUFBQUFBQUFBRUVBQlFBQUFBQUFBQUJqQ1FBQUFBQUFBRUVBCklBQUNBQUFBQUFD
aENRQUFBQUFBQUFBQUFBQUNBQzUwWlhoMEFBQUFBQUFBQUVNQUFBQURBV1lCQUFBRkFBQUErS1Aw
N2dBQUFRQUEKQUM1a1pXSjFaeVJUQUFBQUFFUUFBQUFEQWFRQkFBQVBBQUFBQUFBQUFFTUFCUUFB
QUFBQUFBQzhDUUFBQUFBQUFFTUFJQUFDQUFBQQpBQUQ1Q1FBQUFBQUFBQUFBQUFBQ0FBQUFBQUFa
Q2dBQUFBQUFBQUFBQUFBQ0FBQUFBQUE0Q2dBQUFBQUFBQUFBQUFBQ0FBQUFBQUJYCkNnQUFBQUFB
QUFBQUFBQUNBQzUwWlhoMEFBQUFBQUFBQUVVQUFBQURBUUlCQUFBRUFBQUFCVTdwa2dBQUFRQUFB
QzVrWldKMVp5UlQKQUFBQUFFWUFBQUFEQVdBQkFBQU5BQUFBQUFBQUFFVUFCUUFBQUFBQUFBQnlD
Z0FBQUFBQUFFVUFJQUFDQUM1MFpYaDBBQUFBQUFBQQpBRWNBQUFBREFVY0FBQUFEQUFBQUxEU1hQ
UUFBQVFBQUFDNWtaV0oxWnlSVEFBQUFBRWdBQUFBREFXUUJBQUFMQUFBQUFBQUFBRWNBCkJRQUFB
QUFBQUFDd0NnQUFBQUFBQUVjQUlBQUNBQUFBQUFEakNnQUFBQUFBQUFBQUFBQUNBQUFBQUFEOENn
QUFBQUFBQUFBQUFBQUMKQUFBQUFBQWlDd0FBQUFBQUFBQUFBQUFDQUM1MFpYaDBBQUFBQUFBQUFF
a0FBQUFEQVFZQUFBQUJBQUFBdUF2bDdRQUFBUUFBQUM1awpaV0oxWnlSVEFBQUFBRW9BQUFBREFm
QUFBQUFIQUFBQUFBQUFBRWtBQlFBQUFBQUFBQUJDQ3dBQUFBQUFBRWtBSUFBQ0FBQUFBQUNICkN3
QUFBQUFBQUFBQUFBQUNBQzUwWlhoMEFBQUFBQUFBQUVzQUFBQURBU29BQUFBREFBQUFLUFNMRWdB
QUFRQUFBQzVrWldKMVp5UlQKQUFBQUFFd0FBQUFEQVNBQkFBQUpBQUFBQUFBQUFFc0FCUUFBQUFB
QUFBQzFDd0FBQUFBQUFFc0FJQUFDQUFBQUFBRHVDd0FBQUFBQQpBQUFBQUFBQ0FDNTBaWGgwQUFB
QUFBQUFBRTBBQUFBREFTb0FBQUFEQUFBQUtQU0xFZ0FBQVFBQUFDNWtaV0oxWnlSVEFBQUFBRTRB
CkFBQURBU1FCQUFBSkFBQUFBQUFBQUUwQUJRQUFBQUFBQUFBS0RBQUFBQUFBQUUwQUlBQUNBQzUw
WlhoMEFBQUFBQUFBQUU4QUFBQUQKQVdRQUFBQUlBQUFBMER1ZnZRQUFBUUFBQUM1a1pXSjFaeVJU
QUFBQUFGQUFBQUFEQWRRQkFBQU5BQUFBQUFBQUFFOEFCUUFBQUFBQQpBQUJIREFBQUFBQUFBRThB
SUFBQ0FBQUFBQUNWREFBQUFBQUFBQUFBQUFBQ0FBQUFBQUN4REFBQUFBQUFBQUFBQUFBQ0FBQUFB
QURTCkRBQUFBQUFBQUFBQUFBQUNBQUFBQUFEdERBQUFBQUFBQUFBQUFBQUNBQUFBQUFBU0RRQUFB
QUFBQUFBQUFBQUNBQzUwWlhoMEFBQUEKQUFBQUFGRUFBQUFEQVJJQUFBQUNBQUFBazZlNzdBQUFB
UUFBQUM1a1pXSjFaeVJUQUFBQUFGSUFBQUFEQWVnQUFBQUhBQUFBQUFBQQpBRkVBQlFBQUFBQUFB
QUE1RFFBQUFBQUFBRkVBSUFBQ0FBQUFBQUI4RFFBQUFBQUFBQUFBQUFBQ0FDNTBaWGgwQUFBQUFB
QUFBRk1BCkFBQURBUjhBQUFBREFBQUFaSWxBWWdBQUFRQUFBQzVrWldKMVp5UlRBQUFBQUZRQUFB
QURBZndBQUFBSkFBQUFBQUFBQUZNQUJRQUEKQUFBQUFBQ2lEUUFBQUFBQUFGTUFJQUFDQUFBQUFB
RG9EUUFBQUFBQUFBQUFBQUFDQUM1MFpYaDBBQUFBQUFBQUFGVUFBQUFEQVNJQQpBQUFEQUFBQXF0
NmFQQUFBQVFBQUFDNWtaV0oxWnlSVEFBQUFBRllBQUFBREFXQUJBQUFMQUFBQUFBQUFBRlVBQlFB
QUFBQUFBQUFTCkRnQUFBQUFBQUZVQUlBQUNBQUFBQUFCSERnQUFBQUFBQUFBQUFBQUNBQUFBQUFC
c0RnQUFBQUFBQUFBQUFBQUNBQzUwWlhoMEFBQUEKQUFBQUFGY0FBQUFEQVRjQUFBQUZBQUFBT3R1
R0d3QUFBUUFBQUM1a1pXSjFaeVJUQUFBQUFGZ0FBQUFEQVNRQkFBQUpBQUFBQUFBQQpBRmNBQlFB
QUFBQUFBQUNRRGdBQUFBQUFBRmNBSUFBQ0FBQUFBQURRRGdBQUFBQUFBQUFBQUFBQ0FBQUFBQUQ0
RGdBQUFBQUFBQUFBCkFBQUNBQzV5WkdGMFlRQUFBQUFBQUZrQUFBQURBU1VBQUFBQUFBQUF4TEpv
dlFBQUFnQUFBQUFBQUFBY0R3QUFBQUFBQUZrQUFBQUMKQUFBQUFBQlJEd0FBQUFBQUFBQUFBQUFD
QUFBQUFBQm9Ed0FBQUFBQUFBQUFBQUFDQUM1MFpYaDBBQUFBQUFBQUFGb0FBQUFEQVFZQQpBQUFC
QUFBQXVBdmw3UUFBQVFBQUFDNWtaV0oxWnlSVEFBQUFBRnNBQUFBREFmd0FBQUFIQUFBQUFBQUFB
Rm9BQlFBQUFBQUFBQUIrCkR3QUFBQUFBQUZvQUlBQUNBQUFBQUFETUR3QUFBQUFBQUFBQUFBQUNB
QzUwWlhoMEFBQUFBQUFBQUZ3QUFBQURBUVlBQUFBQkFBQUEKdUF2bDdRQUFBUUFBQUM1a1pXSjFa
eVJUQUFBQUFGMEFBQUFEQVJRQkFBQUhBQUFBQUFBQUFGd0FCUUFBQUFBQUFBRDREd0FBQUFBQQpB
RndBSUFBQ0FBQUFBQUJHRUFBQUFBQUFBQUFBQUFBQ0FDNTBaWGgwQUFBQUFBQUFBRjRBQUFBREFW
Z0FBQUFGQUFBQXpsNVlyQUFBCkFRQUFBQzVrWldKMVp5UlRBQUFBQUY4QUFBQURBV0FDQUFBUEFB
QUFBQUFBQUY0QUJRQUFBQUFBQUFCeEVBQUFBQUFBQUY0QUlBQUMKQUM1eVpHRjBZUUFBQUFBQUFH
QUFBQUFEQVNZQUFBQUFBQUFBc1gxQm5nQUFBZ0FBQUFBQUFBQ29FQUFBQUFBQUFHQUFBQUFDQUM1
eQpaR0YwWVFBQUFBQUFBR0VBQUFBREFTWUFBQUFBQUFBQXpHNXRid0FBQWdBQUFBQUFBQURkRUFB
QUFBQUFBR0VBQUFBQ0FBQUFBQUFSCkVRQUFBQUFBQUFBQUFBQUNBQUFBQUFBcEVRQUFBQUFBQUFB
QUFBQUNBQzV5WkdGMFlRQUFBQUFBQUdJQUFBQURBUndBQUFBQUFBQUEKekVuaG5nQUFBZ0FBQUFB
QUFBQkRFUUFBQUFBQUFHSUFBQUFDQUM1MFpYaDBBQUFBQUFBQUFHTUFBQUFEQVNrQUFBQURBQUFB
blQ0aApuQUFBQVFBQUFDNWtaV0oxWnlSVEFBQUFBR1FBQUFBREFZZ0JBQUFMQUFBQUFBQUFBR01B
QlFBQUFBQUFBQUNpRVFBQUFBQUFBR01BCklBQUNBQUFBQUFBQUVnQUFBQUFBQUFBQUFBQUNBQUFB
QUFCRkVnQUFBQUFBQUFBQUFBQUNBQzUwWlhoMEFBQUFBQUFBQUdVQUFBQUQKQVFZQUFBQUJBQUFB
dUF2bDdRQUFBUUFBQUM1a1pXSjFaeVJUQUFBQUFHWUFBQUFEQVFBQkFBQUhBQUFBQUFBQUFHVUFC
UUFBQUFBQQpBQUJwRWdBQUFBQUFBR1VBSUFBQ0FBQUFBQUNvRWdBQUFBQUFBQUFBQUFBQ0FDNTBa
WGgwQUFBQUFBQUFBR2NBQUFBREFYSUFBQUFJCkFBQUF1ajFVRVFBQUFRQUFBQzVrWldKMVp5UlRB
QUFBQUdnQUFBQURBYlFCQUFBTEFBQUFBQUFBQUdjQUJRQUFBQUFBQUFEV0VnQUEKQUFBQUFHY0FJ
QUFDQUFBQUFBQXFFd0FBQUFBQUFBQUFBQUFDQUFBQUFBQkpFd0FBQUFBQUFBQUFBQUFDQUFBQUFB
QnVFd0FBQUFBQQpBQUFBQUFBQ0FBQUFBQUNJRXdBQUFBQUFBQUFBQUFBQ0FBQUFBQUN4RXdBQUFB
QUFBQUFBQUFBQ0FDNTBaWGgwQUFBQUFBQUFBR2tBCkFBQURBYUVBQUFBTkFBQUE5am13eEFBQUFR
QUFBQzVrWldKMVp5UlRBQUFBQUdvQUFBQURBYVFDQUFBWEFBQUFBQUFBQUdrQUJRQUEKQUFBQUFB
RGFFd0FBQUFBQUFHa0FJQUFDQUFBQUFBQXNGQUFBQUFBQUFBQUFBQUFDQUM1eVpHRjBZUUFBQUFB
QUFHc0FBQUFEQVJRQQpBQUFBQUFBQWhNeVF3Z0FBQWdBQUFBQUFBQUJkRkFBQUFBQUFBR3NBQUFB
Q0FBQUFBQUNLRkFBQUFBQUFBQUFBQUFBQ0FBQUFBQUN2CkZBQUFBQUFBQUFBQUFBQUNBQzUwWlho
MEFBQUFBQUFBQUd3QUFBQURBU2tBQUFBREFBQUFVbC9vTXdBQUFRQUFBQzVrWldKMVp5UlQKQUFB
QUFHMEFBQUFEQVZBQkFBQUpBQUFBQUFBQUFHd0FCUUFBQUFBQUFBRFBGQUFBQUFBQUFHd0FJQUFD
QUFBQUFBQWtGUUFBQUFBQQpBQUFBQUFBQ0FBQUFBQUJJRlFBQUFBQUFBQUFBQUFBQ0FDNTBaWGgw
QUFBQUFBQUFBRzRBQUFBREFRWUFBQUFCQUFBQXVBdmw3UUFBCkFRQUFBQzVrWldKMVp5UlRBQUFB
QUc4QUFBQURBUkFCQUFBSEFBQUFBQUFBQUc0QUJRQUFBQUFBQUFCd0ZRQUFBQUFBQUc0QUlBQUMK
QUFBQUFBQ2hGUUFBQUFBQUFBQUFBQUFDQUM1MFpYaDBBQUFBQUFBQUFIQUFBQUFEQVFZQUFBQUJB
QUFBdUF2bDdRQUFBUUFBQUM1awpaV0oxWnlSVEFBQUFBSEVBQUFBREFld0FBQUFIQUFBQUFBQUFB
SEFBQlFBQUFBQUFBQUM3RlFBQUFBQUFBSEFBSUFBQ0FBQUFBQUR2CkZRQUFBQUFBQUFBQUFBQUNB
QzUwWlhoMEFBQUFBQUFBQUhJQUFBQURBUVlBQUFBQkFBQUF1QXZsN1FBQUFRQUFBQzVrWldKMVp5
UlQKQUFBQUFITUFBQUFEQWV3QUFBQUhBQUFBQUFBQUFISUFCUUFBQUFBQUFBQU9GZ0FBQUFBQUFI
SUFJQUFDQUFBQUFBQkJGZ0FBQUFBQQpBQUFBQUFBQ0FDNTBaWGgwQUFBQUFBQUFBSFFBQUFBREFR
WUFBQUFCQUFBQXVBdmw3UUFBQVFBQUFDNWtaV0oxWnlSVEFBQUFBSFVBCkFBQURBZWdBQUFBSEFB
QUFBQUFBQUhRQUJRQUFBQUFBQUFCZkZnQUFBQUFBQUhRQUlBQUNBQUFBQUFDUEZnQUFBQUFBQUFB
QUFBQUMKQUM1MFpYaDBBQUFBQUFBQUFIWUFBQUFEQVRjQUFBQUJBQUFBeGkvUmR3QUFBUUFBQUM1
a1pXSjFaeVJUQUFBQUFIY0FBQUFEQVZnQgpBQUFIQUFBQUFBQUFBSFlBQlFBQUFBQUFBQUNxRmdB
QUFBQUFBSFlBSUFBQ0FBQUFBQUR3RmdBQUFBQUFBQUFBQUFBQ0FDNTBaWGgwCkFBQUFBQUFBQUhn
QUFBQURBUVlBQUFBQkFBQUF1QXZsN1FBQUFRQUFBQzVrWldKMVp5UlRBQUFBQUhrQUFBQURBWmdC
QUFBSEFBQUEKQUFBQUFIZ0FCUUFBQUFBQUFBQVBGd0FBQUFBQUFIZ0FJQUFDQUFBQUFBQm9Gd0FB
QUFBQUFBQUFBQUFDQUM1MFpYaDBBQUFBQUFBQQpBSG9BQUFBREFRWUFBQUFCQUFBQXVBdmw3UUFB
QVFBQUFDNWtaV0oxWnlSVEFBQUFBSHNBQUFBREFRd0JBQUFIQUFBQUFBQUFBSG9BCkJRQUFBQUFB
QUFDUEZ3QUFBQUFBQUhvQUlBQUNBQUFBQUFEQ0Z3QUFBQUFBQUFBQUFBQUNBQzUwWlhoMEFBQUFB
QUFBQUh3QUFBQUQKQVFZQUFBQUJBQUFBdUF2bDdRQUFBUUFBQUM1a1pXSjFaeVJUQUFBQUFIMEFB
QUFEQWVnQUFBQUhBQUFBQUFBQUFId0FCUUFBQUFBQQpBQURlRndBQUFBQUFBSHdBSUFBQ0FBQUFB
QUFQR0FBQUFBQUFBQUFBQUFBQ0FDNTBaWGgwQUFBQUFBQUFBSDRBQUFBREFRWUFBQUFCCkFBQUF1
QXZsN1FBQUFRQUFBQzVrWldKMVp5UlRBQUFBQUg4QUFBQURBZHdBQUFBSEFBQUFBQUFBQUg0QUJR
QUFBQUFBQUFBckdBQUEKQUFBQUFINEFJQUFDQUFBQUFBQkxHQUFBQUFBQUFBQUFBQUFDQUM1MFpY
aDBBQUFBQUFBQUFJQUFBQUFEQVNJQUFBQUJBQUFBeVVIRApCUUFBQWdBQUFDNWtaV0oxWnlSVEFB
QUFBSUVBQUFBREFSQUJBQUFIQUFBQUFBQUFBSUFBQlFBQUFBQUFBQUJvR0FBQUFBQUFBSUFBCklB
QUNBQUFBQUFDQkdBQUFBQUFBQUFBQUFBQUNBQzUwWlhoMEFBQUFBQUFBQUlJQUFBQURBVE1BQUFB
REFBQUFXUU5tRHdBQUFnQUEKQUM1a1pXSjFaeVJUQUFBQUFJTUFBQUFEQVZnQkFBQUxBQUFBQUFB
QUFJSUFCUUFBQUFBQUFBQ2FHQUFBQUFBQUFJSUFJQUFDQUFBQQpBQUN6R0FBQUFBQUFBQUFBQUFB
Q0FBQUFBQURQR0FBQUFBQUFBQUFBQUFBQ0FDNTBaWGgwQUFBQUFBQUFBSVFBQUFBREFUUUFBQUFD
CkFBQUFSN1E0d2dBQUFRQUFBQzVrWldKMVp5UlRBQUFBQUlVQUFBQURBUkFCQUFBSEFBQUFBQUFB
QUlRQUJRQUFBQUFBQUFEcEdBQUEKQUFBQUFJUUFJQUFDQUFBQUFBQVdHUUFBQUFBQUFBQUFJQUFD
QUM1MFpYaDBBQUFBQUFBQUFJWUFBQUFEQVVjQUFBQUVBQUFBZnlmNQo5Z0FBQWdBQUFDNWtaV0ox
WnlSVEFBQUFBSWNBQUFBREFRd0JBQUFKQUFBQUFBQUFBSVlBQlFBQUFBQUFBQUFqR1FBQUFBQUFB
SVlBCklBQUNBQUFBQUFCQUdRQUFBQUFBQUFBQUlBQUNBQzUwWlhoMEFBQUFBQUFBQUlnQUFBQURB
UkFBQUFBQkFBQUExaWhNc2dBQUFRQUEKQUM1a1pXSjFaeVJUQUFBQUFJa0FBQUFEQVFBQkFBQUhB
QUFBQUFBQUFJZ0FCUUFBQUFBQUFBQk5HUUFBQUFBQUFJZ0FJQUFDQUFBQQpBQUNNR1FBQUFBQUFB
QUFBQUFBQ0FDNTBaWGgwQUFBQUFBQUFBSW9BQUFBREFSQUFBQUFCQUFBQWR2NW12d0FBQVFBQUFD
NWtaV0oxClp5UlRBQUFBQUlzQUFBQURBZWdBQUFBSEFBQUFBQUFBQUlvQUJRQUFBQUFBQUFDbkdR
QUFBQUFBQUlvQUlBQUNBQUFBQUFEVUdRQUEKQUFBQUFBQUFBQUFDQUM1MFpYaDBBQUFBQUFBQUFJ
d0FBQUFEQVJBQUFBQUJBQUFBZHY1bXZ3QUFBUUFBQUM1a1pXSjFaeVJUQUFBQQpBSTBBQUFBREFm
UUFBQUFIQUFBQUFBQUFBSXdBQlFBQUFBQUFBQURzR1FBQUFBQUFBSXdBSUFBQ0FBQUFBQUFsR2dB
QUFBQUFBQUFBCkFBQUNBQzUwWlhoMEFBQUFBQUFBQUk0QUFBQURBUjhBQUFBQ0FBQUFYRzJKWHdB
QUFRQUFBQzVrWldKMVp5UlRBQUFBQUk4QUFBQUQKQVJRQkFBQUhBQUFBQUFBQUFJNEFCUUFBQUFB
QUFBQkpHZ0FBQUFBQUFJNEFJQUFDQUFBQUFBQ1pHZ0FBQUFBQUFBQUFBQUFDQUFBQQpBQUN2R2dB
QUFBQUFBQUFBQUFBQ0FDNTBaWGgwQUFBQUFBQUFBSkFBQUFBREFZc0FBQUFHQUFBQXhRbDNHd0FB
QVFBQUFDNWtaV0oxClp5UlRBQUFBQUpFQUFBQURBWmdDQUFBUkFBQUFBQUFBQUpBQUJRQUFBQUFB
QUFETUdnQUFBQUFBQUpBQUlBQUNBQUFBQUFBV0d3QUEKQUFBQUFBQUFBQUFDQUFBQUFBQXpHd0FB
QUFBQUFBQUFBQUFDQUFBQUFBQlFHd0FBQUFBQUFBQUFBQUFDQUFBQUFBQndHd0FBQUFBQQpBQUFB
QUFBQ0FBQUFBQUNMR3dBQUFBQUFBQUFBQUFBQ0FBQUFBQUN1R3dBQUFBQUFBQUFBQUFBQ0FDNTBa
WGgwQUFBQUFBQUFBSklBCkFBQURBUllBQUFBQkFBQUFGbjV0V3dBQUFRQUFBQzVrWldKMVp5UlRB
QUFBQUpNQUFBQURBZmdBQUFBSEFBQUFBQUFBQUpJQUJRQUEKQUFBQUFBREpHd0FBQUFBQUFKSUFJ
QUFDQUFBQUFBRDlHd0FBQUFBQUFBQUFBQUFDQUM1MFpYaDBBQUFBQUFBQUFKUUFBQUFEQVJzQQpB
QUFCQUFBQXk2VEIzd0FBQVFBQUFDNWtaV0oxWnlSVEFBQUFBSlVBQUFBREFTQUJBQUFIQUFBQUFB
QUFBSlFBQlFBQUFBQUFBQUFXCkhBQUFBQUFBQUpRQUlBQUNBQzUwWlhoMEFBQUFBQUFBQUpZQUFB
QURBUkVBQUFBQkFBQUFqZ2hwYVFBQUFRQUFBQzVrWldKMVp5UlQKQUFBQUFKY0FBQUFEQWZnQUFB
QUhBQUFBQUFBQUFKWUFCUUFBQUFBQUFBQktIQUFBQUFBQUFKWUFJQUFDQUFBQUFBQ0ZIQUFBQUFB
QQpBQUFBQUFBQ0FDNTBaWGgwQUFBQUFBQUFBSmdBQUFBREFSRUFBQUFCQUFBQUFqTEpsZ0FBQVFB
QUFDNWtaV0oxWnlSVEFBQUFBSmtBCkFBQURBUVFCQUFBSEFBQUFBQUFBQUpnQUJRQUFBQUFBQUFD
ZEhBQUFBQUFBQUpnQUlBQUNBQzUwWlhoMEFBQUFBQUFBQUpvQUFBQUQKQVRNQUFBQURBQUFBa0My
UFF3QUFBUUFBQUM1a1pXSjFaeVJUQUFBQUFKc0FBQUFEQVl3QkFBQUxBQUFBQUFBQUFKb0FCUUFB
QUFBQQpBQURkSEFBQUFBQUFBSm9BSUFBQ0FBQUFBQUE3SFFBQUFBQUFBQUFBQUFBQ0FBQUFBQUJU
SFFBQUFBQUFBQUFBQUFBQ0FBQUFBQUJ1CkhRQUFBQUFBQUFBQUFBQUNBQzUwWlhoMEFBQUFBQUFB
QUp3QUFBQURBUVlBQUFBQkFBQUF1QXZsN1FBQUFRQUFBQzVrWldKMVp5UlQKQUFBQUFKMEFBQUFE
QWZ3QUFBQUhBQUFBQUFBQUFKd0FCUUFBQUFBQUFBQ09IUUFBQUFBQUFKd0FJQUFDQUFBQUFBRGlI
UUFBQUFBQQpBQUFBQUFBQ0FDNTBaWGgwQUFBQUFBQUFBSjRBQUFBREFRWUFBQUFCQUFBQXVBdmw3
UUFBQVFBQUFDNWtaV0oxWnlSVEFBQUFBSjhBCkFBQURBZndBQUFBSEFBQUFBQUFBQUo0QUJRQUFB
QUFBQUFEMUhRQUFBQUFBQUo0QUlBQUNBQUFBQUFBK0hnQUFBQUFBQUFBQUFBQUMKQUM1MFpYaDBB
QUFBQUFBQUFLQUFBQUFEQVQ4QUFBQUVBQUFBbEVaUklRQUFBUUFBQUM1a1pXSjFaeVJUQUFBQUFL
RUFBQUFEQVRRQgpBQUFMQUFBQUFBQUFBS0FBQlFBQUFBQUFBQUJnSGdBQUFBQUFBS0FBSUFBQ0FD
NTBaWGgwSkhsakFBQUFBS0lBQUFBREFSUUFBQUFECkFBQUFPandEaEFBQUFnQUFBQzVrWldKMVp5
UlRBQUFBQUtNQUFBQURBZXdBQUFBSEFBQUFBQUFBQUtJQUJRQUFBQUFBQUFDUEhnQUEKQUFBQUFL
SUFJQUFEQUM1eVpHRjBZUUFBQUFBQUFLUUFBQUFEQVJjQUFBQUFBQUFBTGpEZWtBQUFBZ0FBQUFB
QUFBQ3hIZ0FBQUFBQQpBS1FBQUFBQ0FDNTBaWGgwSkhsakFBQUFBS1VBQUFBREFSUUFBQUFEQUFB
QU9qd0RoQUFBQWdBQUFDNWtaV0oxWnlSVEFBQUFBS1lBCkFBQURBZkFBQUFBSEFBQUFBQUFBQUtV
QUJRQUFBQUFBQUFEZ0hnQUFBQUFBQUtVQUlBQURBQzV5WkdGMFlRQUFBQUFBQUtjQUFBQUQKQVJz
QUFBQUFBQUFBM1pJL2lnQUFBZ0FBQUFBQUFBQUdId0FBQUFBQUFLY0FBQUFDQUM1MFpYaDBKSGxq
QUFBQUFLZ0FBQUFEQVJRQQpBQUFEQUFBQU9qd0RoQUFBQWdBQUFDNWtaV0oxWnlSVEFBQUFBS2tB
QUFBREFld0FBQUFIQUFBQUFBQUFBS2dBQlFBQUFBQUFBQUE1Ckh3QUFBQUFBQUtnQUlBQURBQzV5
WkdGMFlRQUFBQUFBQUtvQUFBQURBUmdBQUFBQUFBQUE4blhJM2dBQUFnQUFBQUFBQUFCY0h3QUEK
QUFBQUFLb0FBQUFDQUM1MFpYaDBKSGxqQUFBQUFLc0FBQUFEQVJRQUFBQURBQUFBT2p3RGhBQUFB
Z0FBQUM1a1pXSjFaeVJUQUFBQQpBS3dBQUFBREFmd0FBQUFIQUFBQUFBQUFBS3NBQlFBQUFBQUFB
QUNNSHdBQUFBQUFBS3NBSUFBREFDNXlaR0YwWVFBQUFBQUFBSzBBCkFBQURBU1VBQUFBQUFBQUFi
blBZS2dBQUFnQUFBQUFBQUFDOEh3QUFBQUFBQUswQUFBQUNBQUFBQUFEeEh3QUFHQUFBQUNrQUFB
QUQKQUFBQUFBQUlJQUFBRkFBQUFDa0FBQUFEQUFBQUFBQXRJQUFBRUFBQUFDa0FBQUFEQUFBQUFB
QkZJQUFBREFBQUFDa0FBQUFEQUM1RApVbFFrV0VOVkFBQUFBSzRBQUFBREFSQUFBQUFFQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUJnSUFBQUFBQUFBSzRBQUFBREFBQUFBQUNFCklBQUFCQUFBQUs0QUFB
QURBQUFBQUFDc0lBQUFDQUFBQUs0QUFBQURBQUFBQUFEUklBQUFEQUFBQUs0QUFBQURBQzVrWldK
MVp5UlUKQUFBQUFLOEFBQUFEQVdRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFNaEFBQmZZVzUwYVdG
c2FXRnphVzVuUjJGdGJXRUFYM05mWm05dQpkRk50YjI5MGFHbHVaMVI1Y0dVQVgzTmZabTl1ZEZO
dGIyOTBhR2x1WjB4bGRtVnNBRjl6WDJadmJuUlRiVzl2ZEdocGJtZERiMjUwCmNtRnpkQUJmWDJa
c2RIVnpaV1FBWDE5cGJYQmZYMk5sYVd3QVAyWmhZbk5BUUZsQlRVMUFXZ0EvUTBkVGFYcGxUV0Zy
WlVCQVdVRS8KUVZWRFIxTnBlbVZBUUUxTlFGb0FQMTlmUTBkUWIybHVkRUZ3Y0d4NVFXWm1hVzVs
VkhKaGJuTm1iM0p0UUVCWlFUOUJWVU5IVUc5cApiblJBUUZVeFFGVkRSMEZtWm1sdVpWUnlZVzV6
Wm05eWJVQkFRRm9BUDE5ZlEwZFRhWHBsUVhCd2JIbEJabVpwYm1WVWNtRnVjMlp2CmNtMUFRRmxC
UDBGVlEwZFRhWHBsUUVCVk1VQlZRMGRCWm1acGJtVlVjbUZ1YzJadmNtMUFRRUJhQUQ5M2ExTmxk
RVp2Ym5SVGJXOXYKZEdocGJtZE1aWFpsYkVCQVdVRllTRUJhQUQ5M2EwZGxkRVp2Ym5SVGJXOXZk
R2hwYm1kTVpYWmxiRUJBV1VGSVdGb0FQM2RyVTJWMApSbTl1ZEZOdGIyOTBhR2x1WjBOdmJuUnlZ
WE4wUUVCWlFWaE5RRm9BUDNkclIyVjBSbTl1ZEZOdGIyOTBhR2x1WjBOdmJuUnlZWE4wClFFQlpR
VTFZV2dBL1kyeGxZWEpVZVhCbFEyOXVkSEpoYzNSQVFGbEJUVmhhQUY5ZmFXMXdYMTlFWld4bGRH
VkVRMEEwQUY5ZmFXMXcKWDE5RVpXeGxkR1ZQWW1wbFkzUkFOQUJmWDNKbFlXeEFOREF4TXpNek16
TUFYMTl5WldGc1FETm1Zams1T1RrNVlUQXdNREF3TURBQQpQMmRoYlcxaFFEOHhQejlqYkdWaGNs
UjVjR1ZEYjI1MGNtRnpkRUJBV1VGTldGcEFORTFCQUY5ZmNtVmhiRUF6Wm1Zd01EQXdNREF3Ck1E
QXdNREF3QUY5ZmNtVmhiRUEwTURabVpUQXdNREF3TURBd01EQXdBRjlmY21WaGJFQXpaamd3TURB
d01BQmZYMmx0Y0Y5ZlJYaDAKVkdWNGRFOTFkRmRBTXpJQVgxOXBiWEJmWDFObGRFSnJRMjlzYjNK
QU9BQmZYMmx0Y0Y5ZlUyVjBWR1Y0ZEVOdmJHOXlRRGdBWDE5cApiWEJmWDFObGRGUmxlSFJCYkds
bmJrQTRBRjlmYVcxd1gxOVRaWFJDYTAxdlpHVkFPQUJmWDJsdGNGOWZSMlYwVDJKcVpXTjBWMEF4
Ck1nQmZYMmx0Y0Y5ZlEzSmxZWFJsUkVsQ1UyVmpkR2x2YmtBeU5BQmZYM0psWVd4QU5EQTRaalF3
TURBd01EQXdNREF3TUFCZlgzSmwKWVd4QU5HWTRNREF3TURBQVgxOXBiWEJmWDBkbGRFZHNlWEJv
VDNWMGJHbHVaVmRBTWpnQVAybGtaVzUwYVhSNVFEOHpQejlqYkdWaApjbFI1Y0dWRGIyNTBjbUZ6
ZEVCQVdVRk5XRnBBTkZWZlRVRlVNa0JBUWdCZlgybHRjRjlmVTJWc1pXTjBUMkpxWldOMFFEZ0FY
MTlwCmJYQmZYMGRsZEZOMGIyTnJUMkpxWldOMFFEUUFYMTlwYlhCZlgwTnlaV0YwWlVOdmJYQmhk
R2xpYkdWRVEwQTBBRDlzWVhOMFEyOXUKZEhKaGMzUkFQekUvUDJOc1pXRnlWSGx3WlVOdmJuUnlZ
WE4wUUVCWlFVMVlXa0EwU1VFQVgxOXBiWEJmWDFONWMzUmxiVkJoY21GdApaWFJsY25OSmJtWnZW
MEF4TmdBL2QydFRlWE4wWlcxR2IyNTBVMjF2YjNSb2FXNW5RMmhoYm1kbFpFQkFXVUZZV0ZvQVgz
TmZjM2x6CmRHVnRSbTl1ZEZOdGIyOTBhR2x1WjFObGRBQmZjMTl6ZVhOMFpXMUdiMjUwVTIxdmIz
Um9hVzVuVkhsd1pRQmZjMTl6ZVhOMFpXMUcKYjI1MFUyMXZiM1JvYVc1blJXNWhZbXhsWkFBL2My
VjBSbTl1ZEZOdGIyOTBhR2x1WjFOMGVXeGxRRUJaUVZoUVFWVkRSME52Ym5SbAplSFJBUUVsZlRr
QmFBRjlmYVcxd1gxOURSME52Ym5SbGVIUlRaWFJHYjI1MFUyMXZiM1JvYVc1blUzUjViR1VBWDE5
cGJYQmZYME5IClEyOXVkR1Y0ZEZObGRGTm9iM1ZzWkZOdGIyOTBhRVp2Ym5SekFEOTNhMU5sZEVa
dmJuUlRiVzl2ZEdocGJtZFRkSGxzWlVCQVdVRkoKVUVGVlEwZERiMjUwWlhoMFFFQmZUa0JhQUY5
ZmFXMXdYMTlEUjBOdmJuUmxlSFJIWlhSR2IyNTBVMjF2YjNSb2FXNW5VM1I1YkdVQQpYMTlwYlhC
ZlgwTkhRMjl1ZEdWNGRFZGxkRk5vYjNWc1pGTnRiMjkwYUVadmJuUnpBRDkzYTFKbGMzUnZjbVZH
YjI1MFUyMXZiM1JvCmFXNW5VM1I1YkdWQVFGbEJXRkJCVlVOSFEyOXVkR1Y0ZEVCQVNVQmFBRDkz
YTFObGRFTkhRMjl1ZEdWNGRFWnZiblJTWlc1a1pYSnAKYm1kVGRIbHNaVUJBV1VGWVVFRlZRMGRE
YjI1MFpYaDBRRUJmVGpFeFFGb0FYMTlwYlhCZlgwTkhRMjl1ZEdWNGRGTmxkRk5vYjNWcwpaRk4x
WW5CcGVHVnNVWFZoYm5ScGVtVkdiMjUwY3dCZlgybHRjRjlmUTBkRGIyNTBaWGgwVTJWMFUyaHZk
V3hrVTNWaWNHbDRaV3hRCmIzTnBkR2x2YmtadmJuUnpBRjlmY21WaGJFQXdNREF3TURBd01BQmZY
M0psWVd4QVltWTRNREF3TURBQVgxOXBiWEJmWDBOSFEyOXUKZEdWNGRFZGxkRU5VVFFCZlgybHRj
RjlmUTBkRGIyNTBaWGgwVTJWMFUyaHZkV3hrUVc1MGFXRnNhV0Z6Um05dWRITUFYMTlwYlhCZgpY
ME5IUTI5dWRHVjRkRk5sZEZOb2IzVnNaRlZ6WlZCc1lYUm1iM0p0VG1GMGFYWmxSMng1Y0doekFG
OWZhVzF3WDE5RFIwTnZiblJsCmVIUlRaWFJHYjI1MFUyMXZiM1JvYVc1blEyOXVkSEpoYzNRQVgx
OXlaV0ZzUURRd01EQXdNREF3QUQ5eVpXNWtaWEpwYm1kVGRIbHMKWlVadmNrWnZiblJBUUZsQlNW
OU9NRUJhQUQ5eWIzVnVaR1pBUUZsQlRVMUFXZ0JmWDNKbFlXeEFNMlpsTURBd01EQXdNREF3TURB
dwpNQUEvZDJ0SFpYUkhiSGx3YUVGa2RtRnVZMlZ6UUVCWlFWaFFRVlZEUjBadmJuUkFRRUZDVlVO
SFFXWm1hVzVsVkhKaGJuTm1iM0p0ClFFQmZUakpIUVVGVlEwZFRhWHBsUUVCQVdnQmZYM0psWVd4
QU1EQXdNREF3TURBd01EQXdNREF3TUFCZlgybHRjRjlmUTBkR2IyNTAKUjJWMFZXNXBkSE5RWlhK
RmJRQmZYMmx0Y0Y5ZlEwWkVZWFJoUjJWMFFubDBaVkIwY2dCZlgybHRjRjlmUTBaRVlYUmhSMlYw
VEdWdQpaM1JvQUY5ZmFXMXdYMTlEUmxKbGJHVmhjMlVBWDE5cGJYQmZYME5IUm05dWRFTnZjSGxV
WVdKc1pVWnZjbFJoWndCZlgybHRjRjlmClEwZEdiMjUwUjJWMFIyeDVjR2hCWkhaaGJtTmxjMFp2
Y2xOMGVXeGxBRDkzYTBkbGRFZHNlWEJvYzBCQVdVRllVRUZWUTBkR2IyNTAKUUVCUlFsOVhVVUZI
U1VCYUFGOWZhVzF3WDE5RFIwWnZiblJIWlhSSGJIbHdhSE5HYjNKVmJtbGphR0Z5Y3dBL2QydFRa
WFJWY0VadgpiblJEWVdOb1pVQkFXVUZZU1VCYUFGOWZhVzF3WDE5RFIwWnZiblJEWVdOb1pWTmxk
RTFoZUZOcGVtVUFYMTlwYlhCZlgwTkhSbTl1CmRFTmhZMmhsVTJWMFUyaHZkV3hrUVhWMGIwVjRj
R2x5WlFCZlgybHRjRjlmUTBkR2IyNTBRMkZqYUdWSFpYUk1iMk5oYkVOaFkyaGwKQUY5ZmFXMXdY
MTlEUjBadmJuUlRaWFJUYUc5MWJHUlZjMlZOZFd4MGFXTmhZMmhsQUQ5M2ExTmxkRkJoZEhSbGNt
NUNZWE5sUTFSTgpRRUJaUVZoUVFWVkRSME52Ym5SbGVIUkFRRlZEUjBGbVptbHVaVlJ5WVc1elpt
OXliVUJBUUZvQVgxOXBiWEJmWDBOSFEyOXVkR1Y0CmRGTmxkRUpoYzJWRFZFMEFQM2RyVTJWMFVH
RjBkR1Z5YmxCb1lYTmxTVzVWYzJWeVUzQmhZMlZBUUZsQldGQkJWVU5IUTI5dWRHVjQKZEVCQVZV
TkhVRzlwYm5SQVFFQmFBRjlmYVcxd1gxOURSME52Ym5SbGVIUlRaWFJRWVhSMFpYSnVVR2hoYzJV
QVgxOXBiWEJmWDBOSApRV1ptYVc1bFZISmhibk5tYjNKdFEyOXVZMkYwQUY5ZmFXMXdYMTlEUjBG
bVptbHVaVlJ5WVc1elptOXliVWx1ZG1WeWRBQmZYMmx0CmNGOWZRMGREYjI1MFpYaDBSMlYwUW1G
elpVTlVUUUEvZDJ0SFpYUlZjMlZ5Vkc5Q1lYTmxRMVJOUUVCWlFUOUJWVU5IUVdabWFXNWwKVkhK
aGJuTm1iM0p0UUVCUVFWVkRSME52Ym5SbGVIUkFRRUJhQUQ5M2EwUnlZWGRHYjJOMWMxSnBibWRB
UUZsQldGQkJWVU5IUTI5dQpkR1Y0ZEVCQVVFRlZRMGREYjJ4dmNrQkFUVUJhQUY5ZmFXMXdYMTlE
UjBOdmJuUmxlSFJHYVd4c1VHRjBhQUJmWDJsdGNGOWZRMGRECmIyNTBaWGgwVTJWMFJtOWpkWE5T
YVc1blYybDBhRU52Ykc5eUFGOWZhVzF3WDE5RFIwTnZiblJsZUhSVFpYUlNSMEpHYVd4c1EyOXMK
YjNJQVAzZHJSMlYwVTFOTVEyVnlkR2xtYVdOaGRHVkpibVp2UUVCWlFWQkNWVjlmUTBaRWFXTjBh
Vzl1WVhKNVFFQlFRVlZmUTBaVgpVa3hTWlhOd2IyNXpaVUJBUUZvQVgxOXBiWEJmWDE5RFJsVlNU
RkpsYzNCdmJuTmxSMlYwVTFOTVEyVnlkR2xtYVdOaGRHVkRiMjUwClpYaDBBRDkzYTBkbGRGTlRU
RkJsWlhKRFpYSjBhV1pwWTJGMFpVUmhkR0ZBUUZsQlVFRllVRUpWWDE5RFJrUnBZM1JwYjI1aGNu
bEEKUUVCYUFGOWZhVzF3WDE5RFJrUnBZM1JwYjI1aGNubEhaWFJXWVd4MVpRQS9kMnRIWlhSVFUw
eERaWEowYVdacFkyRjBaVU5vWVdsdQpRMjl1ZEdWNGRFQkFXVUZRUVZoUVFsVmZYME5HUkdsamRH
bHZibUZ5ZVVCQVFGb0FQM2RyVTJWMFEyeHBaVzUwUTJWeWRHbG1hV05oCmRHVkpibE5UVEZCeWIz
QmxjblJwWlhOQVFGbEJXRkJCVlY5ZlEwWkVhV04wYVc5dVlYSjVRRUJRUWxWZlgwTkdSR0YwWVVC
QVFGb0EKWDE5cGJYQmZYME5HUkdsamRHbHZibUZ5ZVZObGRGWmhiSFZsQUY5ZmFXMXdYMTlEUmtS
cFkzUnBiMjVoY25sRGNtVmhkR1ZOZFhSaApZbXhsQUY5ZmFXMXdYMTlyUTBaQmJHeHZZMkYwYjNK
RVpXWmhkV3gwQUY5ZmFXMXdYMTlyUTBaVWVYQmxSR2xqZEdsdmJtRnllVXRsCmVVTmhiR3hDWVdO
cmN3QmZYMmx0Y0Y5ZmEwTkdWSGx3WlVScFkzUnBiMjVoY25sV1lXeDFaVU5oYkd4Q1lXTnJjd0Ev
ZDJ0SFpYUkUKWldaaGRXeDBTRlJVVUVOdmIydHBaVk4wYjNKaFoyVkFRRmxCVUVGVlQzQmhjWFZs
UTBaSVZGUlFRMjl2YTJsbFUzUnZjbUZuWlVCQQpXRm9BWDE5cGJYQmZYMTlEUmtoVVZGQkRiMjly
YVdWVGRHOXlZV2RsUjJWMFJHVm1ZWFZzZEFBL2QydERjbVZoZEdWUWNtbDJZWFJsClNGUlVVRU52
YjJ0cFpWTjBiM0poWjJWQVFGbEJVRUZWVDNCaGNYVmxRMFpJVkZSUVEyOXZhMmxsVTNSdmNtRm5a
VUJBV0ZvQVgxOXAKYlhCZlgxOURSa2hVVkZCRGIyOXJhV1ZUZEc5eVlXZGxRM0psWVhSbFNXNU5a
VzF2Y25rQVAzZHJRMjl3ZVVadmRXNWtZWFJwYjI1RApZV05vWlVScGNtVmpkRzl5ZVVCQVdVRlFR
bFZmWDBOR1UzUnlhVzVuUUVCWVdnQmZYMmx0Y0Y5ZlgwTkdWVkpNUTJGamFHVkRiM0I1ClEyRmph
R1ZFYVhKbFkzUnZjbmtBWDE5cGJYQmZYME5HVlZKTVEyRmphR1ZEYjNCNVUyaGhjbVZrVlZKTVEy
RmphR1VBUDNkclUyVjAKUTBaVlVreFNaWEYxWlhOMFUyaHZkV3hrUTI5dWRHVnVkRk51YVdabVFF
QlpRVmhRUVZWZlEwWlZVa3hTWlhGMVpYTjBRRUJmVGtCYQpBRjlmYVcxd1gxOWZRMFpWVWt4U1pY
RjFaWE4wVTJWMFVISnZkRzlqYjJ4UWNtOXdaWEowZVFCZlgybHRjRjlmWDE5RFJsTjBjbWx1Clow
MWhhMlZEYjI1emRHRnVkRk4wY21sdVp3QS9QMTlEUUY4d1EwWkFSMGRGUjBSRFJsQkFYMnREUmxW
U1RFTnZibTVsWTNScGIyNVEKY205d1pYSjBlVk5vYjNWc1pGTkFBRjlmYVcxd1gxOXJRMFpDYjI5
c1pXRnVSbUZzYzJVQVgxOXBiWEJmWDJ0RFJrSnZiMnhsWVc1VQpjblZsQUQ5M2EwTkdWVkpNVW1W
eGRXVnpkRU52Y0hsSVZGUlFVbVZ4ZFdWemRFSnZaSGxRWVhKMGMwQkFXVUZRUWxWZlgwTkdRWEp5
CllYbEFRRkJDVlY5RFJsVlNURkpsY1hWbGMzUkFRRUJhQUY5ZmFXMXdYMTlEUmxWU1RGSmxjWFZs
YzNSRGIzQjVTRlJVVUZKbGNYVmwKYzNSQ2IyUjVVR0Z5ZEhNQVAzZHJRMFpWVWt4U1pYRjFaWE4w
VTJWMFNGUlVVRkpsY1hWbGMzUkNiMlI1VUdGeWRITkFRRmxCV0ZCQgpWVjlEUmxWU1RGSmxjWFZs
YzNSQVFGQkNWVjlmUTBaQmNuSmhlVUJBUUZvQVgxOXBiWEJmWDBOR1ZWSk1VbVZ4ZFdWemRGTmxk
RWhVClZGQlNaWEYxWlhOMFFtOWtlVkJoY25SekFEOTNhMGx1YVhScFlXeHBlbVZOWVhocGJYVnRT
RlJVVUVOdmJtNWxZM1JwYjI1RGIzVnUKZEZCbGNraHZjM1JBUUZsQlNVbEFXZ0EvUDE5RFFGOHdR
MGRBVUVwRlNFSktVRTVBWDBOR1RtVjBkMjl5YTBoVVZGQkRiMjV1WldOMAphVzl1UTJGamFHVkha
WFJBQUQ4L1gwTkFYekJEUjBCSlIweEJTMGxCUUY5RFJrNWxkSGR2Y210SVZGUlFRMjl1Ym1WamRH
bHZia05oClkyaGxVMlYwUUFCZlgybHRjRjlmUjJWMFVISnZZMEZrWkhKbGMzTkFPQUJmWDJsdGNG
OWZSMlYwVFc5a2RXeGxTR0Z1Wkd4bFYwQTAKQUQ4L1gwTkFYekZDVFVCUFFrZFBUVUpPUzBBL0pF
RkJRejhrUVVGR1B5UkJRVTQvSkVGQlpUOGtRVUYwUHlSQlFYYy9KRUZCYno4awpRVUZ5UHlSQlFX
cy9KRUZCUHpRL0pFRkJaRDhrUVVGc1B5UkJRV3cvSkVGQlB5UkJRVUFBUDNkclEyOXdlVU55WldS
bGJuUnBZV3hHCmNtOXRRMFpRWlhKemFYTjBaVzUwVTNSdmNtRm5aVUJBV1VGUVFWVmZRMFpWVWt4
RGNtVmtaVzUwYVdGc1FFQlFRVlZmUTBaVlVreFEKY205MFpXTjBhVzl1VTNCaFkyVkFRRUJhQUY5
ZmFXMXdYMTlEUmxWU1RFTnlaV1JsYm5ScFlXeFRkRzl5WVdkbFEyOXdlVVJsWm1GMQpiSFJEY21W
a1pXNTBhV0ZzUm05eVVISnZkR1ZqZEdsdmJsTndZV05sQUY5ZmFXMXdYMTlEUmxWU1RFTnlaV1Js
Ym5ScFlXeFRkRzl5CllXZGxRM0psWVhSbEFEOTNhME5HVG1WMGQyOXlhMFZ5Y205eVIyVjBURzlq
WVd4cGVtVmtSR1Z6WTNKcGNIUnBiMjVBUUZsQlVFSlYKWDE5RFJsTjBjbWx1WjBCQVNrQmFBRjlm
YVcxd1gxOWZRMFpPWlhSM2IzSnJSWEp5YjNKSFpYUk1iMk5oYkdsNlpXUkVaWE5qY21sdwpkR2x2
YmdBL2QydFRaWFJEVDA1T1JVTlVVSEp2ZUhsR2IzSlRkSEpsWVcxQVFGbEJXRkJCVlY5ZlEwWlNa
V0ZrVTNSeVpXRnRRRUJRClFsVmZYME5HVTNSeWFXNW5RRUJRUWxWZlgwTkdUblZ0WW1WeVFFQkFX
Z0JmWDJsdGNGOWZRMFpTWldGa1UzUnlaV0Z0VTJWMFVISnYKY0dWeWRIa0FYMTlwYlhCZlgydERS
bE4wY21WaGJWQnliM0JsY25SNVEwOU9Ua1ZEVkZCeWIzaDVBRjlmYVcxd1gxOURSa1JwWTNScApi
MjVoY25sRGNtVmhkR1VBWDE5cGJYQmZYMnREUmxOMGNtVmhiVkJ5YjNCbGNuUjVRMDlPVGtWRFZG
QnliM2g1VUc5eWRBQmZYMmx0CmNGOWZhME5HVTNSeVpXRnRVSEp2Y0dWeWRIbERUMDVPUlVOVVVI
SnZlSGxJYjNOMEFEOTNhMU5sZEVOUFRrNUZRMVJRY205NGVVRjEKZEdodmNtbDZZWFJwYjI1R2Iz
SlRkSEpsWVcxQVFGbEJXRkJCVlY5ZlEwWlNaV0ZrVTNSeVpXRnRRRUJRUWxWZlgwTkdVM1J5YVc1
bgpRRUJBV2dCZlgybHRjRjlmYTBOR1UzUnlaV0Z0VUhKdmNHVnlkSGxEVDA1T1JVTlVRV1JrYVhS
cGIyNWhiRWhsWVdSbGNuTUFQejlmClEwQmZNRUpGUUVSRFRFdExTVkJIUUZCeWIzaDVQemxCZFhS
b2IzSnBlbUYwYVc5dVB5UkJRVUFBWDE5cGJYQmZYME5HUkdsamRHbHYKYm1GeWVVTnlaV0YwWlUx
MWRHRmliR1ZEYjNCNUFGOWZhVzF3WDE5RFJsSmxZV1JUZEhKbFlXMURiM0I1VUhKdmNHVnlkSGtB
UDNkcgpRMjl3ZVVOUFRrNUZRMVJRY205NGVWSmxjM0J2Ym5ObFFFQlpRVkJCVlY5ZlEwWklWRlJR
VFdWemMyRm5aVUJBVUVGVlgxOURSbEpsCllXUlRkSEpsWVcxQVFGQkNWVjlmUTBaVlVreEFRRUJh
QUY5ZmFXMXdYMTlmUTBaSVZGUlFUV1Z6YzJGblpWTmxkRkpsYzNCdmJuTmwKVlZKTUFGOWZhVzF3
WDE5clEwWlRkSEpsWVcxUWNtOXdaWEowZVVOUFRrNUZRMVJTWlhOd2IyNXpaUUEvZDJ0RFFVbHRZ
V2RsVVhWbApkV1ZEY21WaGRHVkFRRmxCVUVGVlgwTkJTVzFoWjJWUmRXVjFaVUJBU1VsSlFGb0FY
MTlwYlhCZlgwTkJTVzFoWjJWUmRXVjFaVU55ClpXRjBaUUEvZDJ0RFFVbHRZV2RsVVhWbGRXVkha
WFJEWVhCaFkybDBlVUJBV1VGSlVFRlZYME5CU1cxaFoyVlJkV1YxWlVCQVFGb0EKWDE5cGJYQmZY
ME5CU1cxaFoyVlJkV1YxWlVkbGRFTmhjR0ZqYVhSNUFEOTNhME5CU1cxaFoyVlJkV1YxWlVsdWRt
RnNhV1JoZEdWQQpRRmxCV0ZCQlZWOURRVWx0WVdkbFVYVmxkV1ZBUUVCYUFGOWZhVzF3WDE5RFFV
bHRZV2RsVVhWbGRXVkpiblpoYkdsa1lYUmxBRDkzCmEwTkJTVzFoWjJWUmRXVjFaVU52Ykd4bFkz
UkFRRmxCU1ZCQlZWOURRVWx0WVdkbFVYVmxkV1ZBUUVCYUFGOWZhVzF3WDE5RFFVbHQKWVdkbFVY
VmxkV1ZEYjJ4c1pXTjBBRDkzYTBOQlNXMWhaMlZSZFdWMVpVbHVjMlZ5ZEVsdFlXZGxRRUJaUVY5
T1VFRlZYME5CU1cxaApaMlZSZFdWMVpVQkFUa2xmUzBsUU5rRllTVEZRUVZoQVdqSkFXZ0JmWDJs
dGNGOWZRMEZKYldGblpWRjFaWFZsU1c1elpYSjBTVzFoCloyVUFQM2RyUTBGSmJXRm5aVkYxWlhW
bFVtVm5hWE4wWlhKUWFYaGxiRUoxWm1abGNrQkFXVUZmUzFCQlZWOURRVWx0WVdkbFVYVmwKZFdW
QVFGQkJXRWxKU1VsSlVFSlZYMTlEUmtScFkzUnBiMjVoY25sQVFFbEFXZ0JmWDJsdGNGOWZRMEZK
YldGblpWRjFaWFZsVW1WbgphWE4wWlhKUWFYaGxiRUoxWm1abGNnQS9kMnREUVVsdFlXZGxVWFZs
ZFdWVFpYUkdiR0ZuYzBCQVdVRllVRUZWWDBOQlNXMWhaMlZSCmRXVjFaVUJBU1VsQVdnQmZYMmx0
Y0Y5ZlEwRkpiV0ZuWlZGMVpYVmxVMlYwUm14aFozTUFQM2RyUTBGSmJXRm5aVkYxWlhWbFIyVjAK
Um14aFozTkFRRmxCU1ZCQlZWOURRVWx0WVdkbFVYVmxkV1ZBUUVCYUFGOWZhVzF3WDE5RFFVbHRZ
V2RsVVhWbGRXVkhaWFJHYkdGbgpjd0EvZDJ0RFFVbHRZV2RsVVhWbGRXVkhaWFJVZVhCbFNVUkFR
RmxCUzFoYUFGOWZhVzF3WDE5RFFVbHRZV2RsVVhWbGRXVkhaWFJVCmVYQmxTVVFBUHo4d1YwdERR
VU5HUTI5dWRHVjRkRUJBVVVGRlFGaGFBRjlmYVcxd1gxOURRVU5HUTI5dWRHVjRkRU55WldGMFpR
QS8KUHpGWFMwTkJRMFpEYjI1MFpYaDBRRUJSUVVWQVdGb0FYMTlwYlhCZlgwTkJVbVZ1WkdWeVZY
QmtZWFJsUm1sdWFYTm9BRjlmYVcxdwpYMTlEUVZKbGJtUmxjazlIVEVSbGMzUnliM2tBUDNkclEw
RkRSa052Ym5SbGVIUkRjbVZoZEdWQVFGbEJVRUZWVjB0RFFVTkdRMjl1CmRHVjRkRUJBV0ZvQVB6
OHlRRmxCVUVGWVNVQmFBRDgvWDBkWFMwTkJRMFpEYjI1MFpYaDBRRUJSUVVWUVFWaEpRRm9BUHo4
elFGbEIKV0ZCQldFQmFBRDkzYTBOQlEwWkRiMjUwWlhoMFUyVjBUR0Y1WlhKQVFGbEJXRkJCVlZk
TFEwRkRSa052Ym5SbGVIUkFRRkJCVlY5RApRVU5HVEdGNVpYSkFRRUJhQUY5ZmFXMXdYMTlEUVVO
R1EyOXVkR1Y0ZEZObGRFeGhlV1Z5QUQ5M2EwTkJRMFpEYjI1MFpYaDBSbXgxCmMyaEFRRmxCV0ZC
QlZWZExRMEZEUmtOdmJuUmxlSFJBUUVCYUFGOWZhVzF3WDE5RFFVTkdRMjl1ZEdWNGRFWnNkWE5v
QUQ5M2EwTkIKUTBaRGIyNTBaWGgwUjJWMFRHRnpkRU52YlcxcGRGUnBiV1ZBUUZsQlRsQkJWVmRM
UTBGRFJrTnZiblJsZUhSQVFFQmFBRjlmYVcxdwpYMTlEUVVOR1EyOXVkR1Y0ZEVkbGRFeGhjM1JE
YjIxdGFYUlVhVzFsQUQ5M2EwTkJRMFpEYjI1MFpYaDBTVzVwZEdsaGJHbDZaVVF6ClJFUmxkbWxq
WlVCQVdVRllVRUZWVjB0RFFVTkdRMjl1ZEdWNGRFQkFVRUZWU1VScGNtVmpkRE5FUkdWMmFXTmxP
VUJBUUZvQVgxOXAKYlhCZlgwTkJVbVZ1WkdWeVQwZE1UbVYzQUY5ZmFXMXdYMTlyUTBGU1pXNWta
WEpFV0RsRFlXeHNZbUZqYTNNQVAzZHJRMEZEUmtOdgpiblJsZUhSQ1pXZHBibFZ3WkdGMFpVQkFX
VUZmVGxCQlZWZExRMEZEUmtOdmJuUmxlSFJBUUZCQldFbE9RVUpWUTBkU1pXTjBRRUJSClFsVXlR
RWxBV2dCZlgybHRjRjlmUTBGU1pXNWtaWEpWY0dSaGRHVkJaR1JTWldOMEFGOWZhVzF3WDE5RFFW
SmxibVJsY2tOdmJuUmwKZUhSVmJteHZZMnNBWDE5cGJYQmZYME5CVW1WdVpHVnlWWEJrWVhSbFFX
UmtRMjl1ZEdWNGRBQmZYMmx0Y0Y5ZlEwRlNaVzVrWlhKRApiMjUwWlhoMFRHOWphd0JmWDJsdGNG
OWZRMEZEUmtOdmJuUmxlSFJIWlhSU1pXNWtaWEpEYjI1MFpYaDBBRjlmYVcxd1gxOURRVkpsCmJt
UmxjbFZ3WkdGMFpVSmxaMmx1QUQ5M2EwTkJRMFpEYjI1MFpYaDBVbVZ1WkdWeVZYQmtZWFJsUUVC
WlFWaFFRVlZYUzBOQlEwWkQKYjI1MFpYaDBRRUJBV2dCZlgybHRjRjlmUTBGU1pXNWtaWEpQUjB4
U1pXNWtaWElBUDNkclEwRkRSa052Ym5SbGVIUkdhVzVwYzJoVgpjR1JoZEdWQVFGbEJXRkJCVlZk
TFEwRkRSa052Ym5SbGVIUkFRRUJhQUQ5M2EwTkJRMFpEYjI1MFpYaDBVbVZzWldGelpVUXpSRkps
CmMyOTFjbU5sYzBCQVdVRllVRUZWVjB0RFFVTkdRMjl1ZEdWNGRFQkFRRm9BWDE5cGJYQmZYME5C
VW1WdVpHVnlUMGRNVUhWeVoyVUEKUDNkclEwRkRSa052Ym5SbGVIUkJaR1JWY0dSaGRHVlNaV04w
UUVCWlFWaFFRVlZYUzBOQlEwWkRiMjUwWlhoMFFFQkJRbFZEUjFKbApZM1JBUUVCYUFEOTNhME5C
UTBaRGIyNTBaWGgwUTI5d2VWVndaR0YwWlZKbFkzUkZiblZ0WlhKaGRHOXlRRUJaUVZCQlZWZExR
MEZEClJsVndaR0YwWlZKbFkzUkZiblZ0WlhKaGRHOXlRRUJRUVZWWFMwTkJRMFpEYjI1MFpYaDBR
RUJBV2dCZlgybHRjRjlmUTBkVFVtVnMKWldGelpWSmxaMmx2YmdCZlgybHRjRjlmUTBkVFVtVm5h
Vzl1Ulc1MWJXVnlZWFJ2Y2dCZlgybHRjRjlmUTBGU1pXNWtaWEpWY0dSaApkR1ZEYjNCNVVtVm5h
Vzl1QUQ5M2EwTkJRMFpWY0dSaGRHVlNaV04wUlc1MWJXVnlZWFJ2Y2s1bGVIUlNaV04wUUVCWlFW
QkNWVU5IClVtVmpkRUJBVUVGVlYwdERRVU5HVlhCa1lYUmxVbVZqZEVWdWRXMWxjbUYwYjNKQVFF
QmFBRjlmYVcxd1gxOURSMU5PWlhoMFVtVmoKZEFBL2QydERRVU5HVlhCa1lYUmxVbVZqZEVWdWRX
MWxjbUYwYjNKU1pXeGxZWE5sUUVCWlFWaFFRVlZYUzBOQlEwWlZjR1JoZEdWUwpaV04wUlc1MWJX
VnlZWFJ2Y2tCQVFGb0FYMTlwYlhCZlgwTkhVMUpsYkdWaGMyVlNaV2RwYjI1RmJuVnRaWEpoZEc5
eUFEOTNhME5CClEwWkRiMjUwWlhoMFJHVnpkSEp2ZVVCQVdVRllVRUZWVjB0RFFVTkdRMjl1ZEdW
NGRFQkFRRm9BUHo5ZlgwVnJRMFpYYVc1a2IzZHoKVTFOTVVHVmxja05sY25SQVFGbEJXRmhhQUQ4
L1gwTkFYekJDU0VCQ1RrbENUMHhLUmtCZmEwTkdWMmx1Wkc5M2MxTlRURkJsWlhKRApaWEowUHlS
QlFVQUFQejlmWDBWclEwWlhhVzVrYjNkelUxTk1RMmhoYVc1RGIyNTBaWGgwUUVCWlFWaFlXZ0Ev
UDE5RFFGOHdRa3hBClIxQk1TMFJRU2tKQVgydERSbGRwYm1SdmQzTlRVMHhEYUdGcGJrTnZiblJs
ZUhRL0pFRkJRQUEvUDE5ZlJXdERSbGRwYm1SdmQzTlQKVTB4TWIyTmhiRU5sY25SQVFGbEJXRmhh
QUQ4L1gwTkFYekJDU1VCSlExQkhSVUZEVGtCZmEwTkdWMmx1Wkc5M2MxTlRURXh2WTJGcwpRMlZ5
ZEQ4a1FVRkFBRDgvWDE5RmEwTkdVM1J5WldGdFVISnZjR1Z5ZEhsWGFXNWtiM2R6VTFOTVEyVnlk
RWx1Wm05QVFGbEJXRmhhCkFEOC9YME5BWHpCRFJrQlFRbEJIVUVSUVJrQmZhME5HVTNSeVpXRnRV
SEp2Y0dWeWRIbFhhVzVrYjNkelUxTk1RMlZ5ZEVBQVgydEQKUmxkcGJtUnZkM05UVTB4UVpXVnlR
MlZ5ZEFCZmEwTkdVM1J5WldGdFVISnZjR1Z5ZEhsWGFXNWtiM2R6VTFOTVEyVnlkRWx1Wm04QQpY
MnREUmxkcGJtUnZkM05UVTB4TWIyTmhiRU5sY25RQVgydERSbGRwYm1SdmQzTlRVMHhEYUdGcGJr
TnZiblJsZUhRQVgydERSbGRwCmJtUnZkM05UVTB4UVpXVnlRMlZ5ZENScGJtbDBhV0ZzYVhwbGNp
UUFYMnREUmxkcGJtUnZkM05UVTB4RGFHRnBia052Ym5SbGVIUWsKYVc1cGRHbGhiR2w2WlhJa0FG
OXJRMFpYYVc1a2IzZHpVMU5NVEc5allXeERaWEowSkdsdWFYUnBZV3hwZW1WeUpBQmZhME5HVTNS
eQpaV0Z0VUhKdmNHVnlkSGxYYVc1a2IzZHpVMU5NUTJWeWRFbHVabThrYVc1cGRHbGhiR2w2WlhJ
a0FDODVNQ0FnSUNBZ0lDQWdJQ0FnCklDQXhNamt5TURBek9UYzNJQ0FnSUNBZ0lDQWdJQ0FnSUNB
eE1EQTJOallnSURFNU9EWTBOeUFnSUNCZ0Nrd0JnUUdKYWdKTnhtc0MKQUpnRUFBQUFBQUFBTG1S
eVpXTjBkbVVBQUFBQUFBQUFBTU1BQUFBOFBBQUFBQUFBQUFBQUFBQUFBQUFBQUFvUUFDNWtaV0ox
WnlSVApBQUFBQUFBQUFBRGdSQUFBL3p3QUFOK0JBQUFBQUFBQUlBQUFBRUFBRUVJdWNtUmhkR0VB
QUFBQUFBQUFBQUFBQkFBQUFCK0RBQUFBCkFBQUFBQUFBQUFBQUFBQkFFREJBTG5Ka1lYUmhBQUFB
QUFBQUFBQUFBQVFBQUFBamd3QUFBQUFBQUFBQUFBQUFBQUFBUUJBd1FDNXkKWkdGMFlRQUFBQUFB
QUFBQUFBQUVBQUFBSjRNQUFBQUFBQUFBQUFBQUFBQUFBRUFRTUVBdWNtUmhkR0VBQUFBQUFBQUFB
QUFBQkFBQQpBQ3VEQUFBQUFBQUFBQUFBQUFBQUFBQkFFREJBTG5Ka1lYUmhBQUFBQUFBQUFBQUFB
QVFBQUFBdmd3QUFBQUFBQUFBQUFBQUFBQUFBClFCQXdRQzV5WkdGMFlRQUFBQUFBQUFBQUFBQUVB
QUFBTTRNQUFBQUFBQUFBQUFBQUFBQUFBRUFRTUVBdWNtUmhkR0VBQUFBQUFBQUEKQUFBQUJBQUFB
RGVEQUFBQUFBQUFBQUFBQUFBQUFBQkFFREJBTG5Ka1lYUmhBQUFBQUFBQUFBQUFBRHlqQUFBN2d3
QUFBQUFBQUFBQQpBQUFBQUFBQVFBQkFRQzUwWlhoMEFBQUFBQUFBQUFBQUFBQWRBQUFBZHlZQkFB
QUFBQUFBQUFBQUFBQUFBQ0FRVUdBdVpHVmlkV2NrClV3QUFBQUFBQUFBQThBQUFBSlFtQVFDRUp3
RUFBQUFBQUFVQUFBQkFFQkJDTG5SbGVIUUFBQUFBQUFBQUFBQUFBQjBBQUFDMkp3RUEKQUFBQUFB
QUFBQUFBQUFBQUlCQlFZQzVrWldKMVp5UlRBQUFBQUFBQUFBRDhBQUFBMHljQkFNOG9BUUFBQUFB
QUJRQUFBRUFRRUVJdQpkR1Y0ZEFBQUFBQUFBQUFBQUFBQUhBQUFBQUVwQVFBQUFBQUFBQUFBQUFB
QUFBQWdFRkJnTG1SbFluVm5KRk1BQUFBQUFBQUFBQkFCCkFBQWRLUUVBTFNvQkFBQUFBQUFGQUFB
QVFCQVFRaTUwWlhoMEFBQUFBQUFBQUFBQUFBQS9BQUFBWHlvQkFBQUFBQUFBQUFBQUFBQUEKQUNB
UVVHQXVaR1ZpZFdja1V3QUFBQUFBQUFBQUdBRUFBSjRxQVFDMkt3RUFBQUFBQUFVQUFBQkFFQkJD
TG5SbGVIUUFBQUFBQUFBQQpBQUFBQUFjQUFBRG9Ld0VBN3lzQkFBQUFBQUFCQUFBQUlCQlFZQzVr
WldKMVp5UlRBQUFBQUFBQUFBRFlBQUFBK1NzQkFORXNBUUFBCkFBQUFCUUFBQUVBUUVFSXVjbVJo
ZEdFQUFBQUFBQUFBQUFBQUdBQUFBQU10QVFBYkxRRUFBQUFBQUFZQUFBQkFFREJBTG5SbGVIUUEK
QUFBQUFBQUFBQUFBQURZQUFBQlhMUUVBalMwQkFBQUFBQUFCQUFBQUlCQlFZQzVrWldKMVp5UlRB
QUFBQUFBQUFBQUlBUUFBbHkwQgpBSjh1QVFBQUFBQUFCd0FBQUVBUUVFSXVkR1Y0ZEFBQUFBQUFB
QUFBQUFBQUZ3QUFBT1V1QVFEOExnRUFBQUFBQUFFQUFBQWdFRkJnCkxtUmxZblZuSkZNQUFBQUFB
QUFBQU5RQUFBQUdMd0VBMmk4QkFBQUFBQUFGQUFBQVFCQVFRaTUwWlhoMEFBQUFBQUFBQUFBQUFB
QUsKQUFBQUREQUJBQUFBQUFBQUFBQUFBQUFBQUNBUVVHQXVaR1ZpZFdja1V3QUFBQUFBQUFBQTZB
QUFBQll3QVFEK01BRUFBQUFBQUFVQQpBQUJBRUJCQ0xuUmxlSFFBQUFBQUFBQUFBQUFBQUFRQUFB
QXdNUUVBQUFBQUFBQUFBQUFBQUFBQUlCQlFZQzVrWldKMVp5UlRBQUFBCkFBQUFBQURRQUFBQU5E
RUJBQVF5QVFBQUFBQUFCUUFBQUVBUUVFSXVkR1Y0ZEFBQUFBQUFBQUFBQUFBQUNBQUFBRFl5QVFB
QUFBQUEKQUFBQUFBQUFBQUFnRUZCZ0xtUmxZblZuSkZNQUFBQUFBQUFBQU5RQUFBQStNZ0VBRWpN
QkFBQUFBQUFGQUFBQVFCQVFRaTUwWlhoMApBQUFBQUFBQUFBQUFBQUFKQUFBQVJETUJBQUFBQUFB
QUFBQUFBQUFBQUNBUVVHQXVaR1ZpZFdja1V3QUFBQUFBQUFBQTFBQUFBRTB6CkFRQWhOQUVBQUFB
QUFBVUFBQUJBRUJCQ0xuUmxlSFFBQUFBQUFBQUFBQUFBQUFrQUFBQlROQUVBQUFBQUFBQUFBQUFB
QUFBQUlCQlEKWUM1a1pXSjFaeVJUQUFBQUFBQUFBQURVQUFBQVhEUUJBREExQVFBQUFBQUFCUUFB
QUVBUUVFSXVkR1Y0ZEFBQUFBQUFBQUFBQUFBQQpId0FBQUdJMUFRQ0JOUUVBQUFBQUFBSUFBQUFn
RUZCZ0xtUmxZblZuSkZNQUFBQUFBQUFBQU9BQUFBQ1ZOUUVBZFRZQkFBQUFBQUFECkFBQUFRQkFR
UWk1MFpYaDBBQUFBQUFBQUFBQUFBQUFFQUFBQWt6WUJBQUFBQUFBQUFBQUFBQUFBQUNBUVVHQXVa
R1ZpZFdja1V3QUEKQUFBQUFBQUEzQUFBQUpjMkFRQnpOd0VBQUFBQUFBVUFBQUJBRUJCQ0xuUmxl
SFFBQUFBQUFBQUFBQUFBQUFRQUFBQ2xOd0VBQUFBQQpBQUFBQUFBQUFBQUFJQkJRWUM1a1pXSjFa
eVJUQUFBQUFBQUFBQURZQUFBQXFUY0JBSUU0QVFBQUFBQUFCUUFBQUVBUUVFSXVkR1Y0CmRBQUFB
QUFBQUFBQUFBQUFGUUFBQUxNNEFRQUFBQUFBQUFBQUFBQUFBQUFnRUZCZ0xtUmxZblZuSkZNQUFB
QUFBQUFBQU9BQUFBREkKT0FFQXFEa0JBQUFBQUFBRkFBQUFRQkFRUWk1eVpHRjBZUUFBQUFBQUFB
QUFBQUFJQUFBQTJqa0JBQUFBQUFBQUFBQUFBQUFBQUVBUQpRRUF1ZEdWNGRBQUFBQUFBQUFBQUFB
QUFCQUFBQU9JNUFRQUFBQUFBQUFBQUFBQUFBQUFnRUZCZ0xtUmxZblZuSkZNQUFBQUFBQUFBCkFO
d0FBQURtT1FFQXdqb0JBQUFBQUFBRkFBQUFRQkFRUWk1MFpYaDBBQUFBQUFBQUFBQUFBQUFKQUFB
QTlEb0JBUDA2QVFBQUFBQUEKQVFBQUFDQVFVR0F1WkdWaWRXY2tVd0FBQUFBQUFBQUFzQUFBQUFj
N0FRQzNPd0VBQUFBQUFBTUFBQUJBRUJCQ0xuUmxlSFFBQUFBQQpBQUFBQUFBQUFBY0FBQURWT3dF
QTNEc0JBQUFBQUFBQkFBQUFJQkJRWUM1a1pXSjFaeVJUQUFBQUFBQUFBQURJQUFBQTVqc0JBSzQ4
CkFRQUFBQUFBQXdBQUFFQVFFRUl1ZEdWNGRBQUFBQUFBQUFBQUFBQUFCd0FBQU13OEFRRFRQQUVB
QUFBQUFBRUFBQUFnRUZCZ0xtUmwKWW5WbkpGTUFBQUFBQUFBQUFOd0FBQURkUEFFQXVUMEJBQUFB
QUFBRkFBQUFRQkFRUWk1eVpHRjBZUUFBQUFBQUFBQUFBQUFFQUFBQQo2ejBCQUFBQUFBQUFBQUFB
QUFBQUFFQVFNRUF1ZEdWNGRBQUFBQUFBQUFBQUFBQUFBd0FBQU84OUFRQUFBQUFBQUFBQUFBQUFB
QUFnCkVGQmdMbVJsWW5WbkpGTUFBQUFBQUFBQUFPZ0FBQUR5UFFFQTJqNEJBQUFBQUFBRkFBQUFR
QkFRUWk1eVpHRjBZUUFBQUFBQUFBQUEKQUFBRUFBQUFERDhCQUFBQUFBQUFBQUFBQUFBQUFFQVFN
RUF1ZEdWNGRBQUFBQUFBQUFBQUFBQUFCd0FBQUJBL0FRQVhQd0VBQUFBQQpBQUVBQUFBZ0VGQmdM
bVJsWW5WbkpGTUFBQUFBQUFBQUFOQUFBQUFoUHdFQThUOEJBQUFBQUFBRkFBQUFRQkFRUWk1eVpH
RjBZUUFBCkFBQUFBQUFBQUFBRUFBQUFJMEFCQUFBQUFBQUFBQUFBQUFBQUFFQVFNRUF1ZEdWNGRB
QUFBQUFBQUFBQUFBQUFCd0FBQUNkQUFRQXUKUUFFQUFBQUFBQUVBQUFBZ0VGQmdMbVJsWW5WbkpG
TUFBQUFBQUFBQUFOQUFBQUE0UUFFQUNFRUJBQUFBQUFBRkFBQUFRQkFRUWk1eQpaR0YwWVFBQUFB
QUFBQUFBQUFBRUFBQUFPa0VCQUFBQUFBQUFBQUFBQUFBQUFFQVFNRUF1ZEdWNGRBQUFBQUFBQUFB
QUFBQUFCd0FBCkFENUJBUUJGUVFFQUFBQUFBQUVBQUFBZ0VGQmdMbVJsWW5WbkpGTUFBQUFBQUFB
QUFOd0FBQUJQUVFFQUswSUJBQUFBQUFBRkFBQUEKUUJBUVFpNXlaR0YwWVFBQUFBQUFBQUFBQUFB
RUFBQUFYVUlCQUFBQUFBQUFBQUFBQUFBQUFFQVFNRUF1ZEdWNGRBQUFBQUFBQUFBQQpBQUFBQndB
QUFHRkNBUUJvUWdFQUFBQUFBQUVBQUFBZ0VGQmdMbVJsWW5WbkpGTUFBQUFBQUFBQUFNd0FBQUJ5
UWdFQVBrTUJBQUFBCkFBQUZBQUFBUUJBUVFpNXlaR0YwWVFBQUFBQUFBQUFBQUFBRUFBQUFjRU1C
QUFBQUFBQUFBQUFBQUFBQUFFQVFNRUF1ZEdWNGRBQUEKQUFBQUFBQUFBQUFBQndBQUFIUkRBUUI3
UXdFQUFBQUFBQUVBQUFBZ0VGQmdMbVJsWW5WbkpGTUFBQUFBQUFBQUFOZ0FBQUNGUXdFQQpYVVFC
QUFBQUFBQUZBQUFBUUJBUVFpNTBaWGgwQUFBQUFBQUFBQUFBQUFBUEFBQUFqMFFCQUFBQUFBQUFB
QUFBQUFBQUFDQVFVR0F1ClpHVmlkV2NrVXdBQUFBQUFBQUFBd0FBQUFKNUVBUUJlUlFFQUFBQUFB
QVVBQUFCQUVCQkNMblJsZUhRQUFBQUFBQUFBQUFBQUFBOEEKQUFDUVJRRUFBQUFBQUFBQUFBQUFB
QUFBSUJCUVlDNWtaV0oxWnlSVEFBQUFBQUFBQUFEQUFBQUFuMFVCQUY5R0FRQUFBQUFBQlFBQQpB
RUFRRUVJdWRHVjRkQUFBQUFBQUFBQUFBQUFBcWdJQUFKRkdBUUE3U1FFQUFBQUFBQklBQUFBZ0VG
QmdMbVJsWW5WbkpGTUFBQUFBCkFBQUFBSHdEQUFEdlNRRUFhMDBCQUFBQUFBQW5BQUFBUUJBUVFp
NXlaR0YwWVFBQUFBQUFBQUFBQUFBSUFBQUE4VTRCQUFBQUFBQUEKQUFBQUFBQUFBRUFRUUVBdWNt
UmhkR0VBQUFBQUFBQUFBQUFBQ0FBQUFQbE9BUUFBQUFBQUFBQUFBQUFBQUFCQUVFQkFMblJsZUhR
QQpBQUFBQUFBQUFBQUFBT3NBQUFBQlR3RUE3RThCQUFBQUFBQUdBQUFBSUJCUVlDNWtaV0oxWnlS
VEFBQUFBQUFBQUFENEFRQUFLRkFCCkFDQlNBUUFBQUFBQUVRQUFBRUFRRUVJdWRHVjRkQUFBQUFB
QUFBQUFBQUFBZ3dBQUFNcFNBUUJOVXdFQUFBQUFBQVVBQUFBZ0VGQmcKTG1SbFluVm5KRk1BQUFB
QUFBQUFBSVFCQUFCL1V3RUFBMVVCQUFBQUFBQVBBQUFBUUJBUVFpNTBaWGgwQUFBQUFBQUFBQUFB
QUFCWQpBQUFBbVZVQkFBQUFBQUFBQUFBQUFBQUFBQ0FRVUdBdVpHVmlkV2NrVXdBQUFBQUFBQUFB
Q0FFQUFQRlZBUUQ1VmdFQUFBQUFBQVVBCkFBQkFFQkJDTG5SbGVIUUFBQUFBQUFBQUFBQUFBTVlC
QUFBclZ3RUE4VmdCQUFBQUFBQUxBQUFBSUJCUVlDNWtaV0oxWnlSVEFBQUEKQUFBQUFBQ1VBZ0FB
WDFrQkFQTmJBUUFBQUFBQUdRQUFBRUFRRUVJdWNtUmhkR0VBQUFBQUFBQUFBQUFBQkFBQUFPMWNB
UUFBQUFBQQpBQUFBQUFBQUFBQkFFREJBTG5SbGVIUUFBQUFBQUFBQUFBQUFBRWtBQUFEeFhBRUFP
bDBCQUFBQUFBQUhBQUFBSUJCUVlDNWtaV0oxClp5UlRBQUFBQUFBQUFBQlVBUUFBZ0YwQkFOUmVB
UUFBQUFBQUN3QUFBRUFRRUVJdVluTnpBQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUEKQUFBQUFBQUFB
QUFBQUFBQUFBQ0FFRERBTG1KemN3QUFBQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBZ0JBdwp3QzUwWlhoMEFBQUFBQUFBQUFBQUFBQkFBZ0FBUWw4QkFJSmhBUUFBQUFBQUVB
QUFBQ0FRVUdBdVpHVmlkV2NrVXdBQUFBQUFBQUFBCnZBSUFBQ0ppQVFEZVpBRUFBQUFBQUI4QUFB
QkFFQkJDTG5SbGVIUUFBQUFBQUFBQUFBQUFBSTRBQUFBVVpnRUFvbVlCQUFBQUFBQUkKQUFBQUlC
QlFZQzVrWldKMVp5UlRBQUFBQUFBQUFBQTRBUUFBOG1ZQkFDcG9BUUFBQUFBQUNRQUFBRUFRRUVJ
dWNtUmhkR0VBQUFBQQpBQUFBQUFBQUJBQUFBSVJvQVFBQUFBQUFBQUFBQUFBQUFBQkFFREJBTG1K
emN3QUFBQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBQWdCQXd3QzV5WkdG
MFlRQUFBQUFBQUFBQUFBQUVBQUFBaUdnQkFBQUFBQUFBQUFBQUFBQUFBRUFRTUVBdVluTnoKQUFB
QUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FFRERBTG5SbGVIUUFBQUFB
QUFBQUFBQUFBTGdBQUFDTQphQUVBUkdrQkFBQUFBQUFNQUFBQUlCQlFZQzVrWldKMVp5UlRBQUFB
QUFBQUFBRFFBUUFBdkdrQkFJeHJBUUFBQUFBQUR3QUFBRUFRCkVFSXVjbVJoZEdFQUFBQUFBQUFB
QUFBQUJBQUFBQ0pzQVFBQUFBQUFBQUFBQUFBQUFBQkFFREJBTG1KemN3QUFBQUFBQUFBQUFBQUEK
QUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdCQXd3QzUwWlhoMEFBQUFBQUFBQUFBQUFBRE9C
QUFBSm13QkFQUndBUUFBQUFBQQpMd0FBQUNBUVVHQXVaR1ZpZFdja1V3QUFBQUFBQUFBQXdBVUFB
TXB5QVFDS2VBRUFBQUFBQUZrQUFBQkFFQkJDTG5Ka1lYUmhBQUFBCkFBQUFBQUFBQUFnQUFBQUVm
QUVBQUFBQUFBQUFBQUFBQUFBQVFCQkFRQzV5WkdGMFlRQUFBQUFBQUFBQUFBQUVBQUFBREh3QkFB
QUEKQUFBQUFBQUFBQUFBQUVBUU1FQXVjbVJoZEdFQUFBQUFBQUFBQUFBQUJBQUFBQkI4QVFBQUFB
QUFBQUFBQUFBQUFBQkFFREJBTG5SbAplSFFBQUFBQUFBQUFBQUFBQUZzQkFBQVVmQUVBYjMwQkFB
QUFBQUFNQUFBQUlCQlFZQzVrWldKMVp5UlRBQUFBQUFBQUFBQmdBZ0FBCjUzMEJBRWVBQVFBQUFB
QUFGd0FBQUVBUUVFSXVjbVJoZEdFQUFBQUFBQUFBQUFBQUJBQUFBQzJCQVFBQUFBQUFBQUFBQUFB
QUFBQkEKRURCQUxuSmtZWFJoQUFBQUFBQUFBQUFBQUFRQUFBQXhnUUVBQUFBQUFBQUFBQUFBQUFB
QVFCQXdRQzUwWlhoMEFBQUFBQUFBQUFBQQpBQUNhQVFBQU5ZRUJBTStDQVFBQUFBQUFEQUFBQUNB
UVVHQXVaR1ZpZFdja1V3QUFBQUFBQUFBQVFBSUFBRWVEQVFDSGhRRUFBQUFBCkFCa0FBQUJBRUJC
Q0xuUmxlSFFBQUFBQUFBQUFBQUFBQURRQUFBQ0JoZ0VBQUFBQUFBQUFBQUFBQUFBQUlCQlFZQzVr
WldKMVp5UlQKQUFBQUFBQUFBQUFzQVFBQXRZWUJBT0dIQVFBQUFBQUFCUUFBQUVBUUVFSXVkR1Y0
ZEFBQUFBQUFBQUFBQUFBQWhnRUFBQk9JQVFDWgppUUVBQUFBQUFBRUFBQUFnRUZCZ0xtUmxZblZu
SkZNQUFBQUFBQUFBQU5RQkFBQ2ppUUVBZDRzQkFBQUFBQUFGQUFBQVFCQVFRaTUwClpYaDBBQUFB
QUFBQUFBQUFBQUI1QUFBQXFZc0JBQ0tNQVFBQUFBQUFDZ0FBQUNBUVVHQXVaR1ZpZFdja1V3QUFB
QUFBQUFBQXRBRUEKQUlhTUFRQTZqZ0VBQUFBQUFBMEFBQUJBRUJCQ0xtSnpjd0FBQUFBQUFBQUFB
QUFBQUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQQpnQkF3d0M1aWMzTUFBQUFBQUFBQUFBQUFB
QUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBUU1NQXVZbk56QUFBQUFBQUFBQUFBCkFBQUFC
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBRUREQUxuUmxlSFFBQUFBQUFBQUFBQUFBQUNVQkFB
QzhqZ0VBNFk4QkFBQUEKQUFBYUFBQUFJQkJRWUM1a1pXSjFaeVJUQUFBQUFBQUFBQURrQVFBQTVa
QUJBTW1TQVFBQUFBQUFGd0FBQUVBUUVFSXVZbk56QUFBQQpBQUFBQUFBQUFBQUFCQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUNBRUREQUxtUmhkR0VBQUFBQUFBQUFBQUFBQUJBQUFBQ3Zrd0VBCkFB
QUFBQUFBQUFBQUFBQUFRQkF3d0M1aWMzTUFBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUlBUU1NQXUKY21SaGRHRUFBQUFBQUFBQUFBQUFCQUFBQUwrVEFRQUFBQUFBQUFB
QUFBQUFBQUJBRURCQUxtSnpjd0FBQUFBQUFBQUFBQUFBQUFRQQpBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFnQkF3d0M1eVpHRjBZUUFBQUFBQUFBQUFBQUFFQUFBQXc1TUJBQUFBQUFBQUFBQUFBQUFB
CkFFQVFNRUF1WW5OekFBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNB
RUREQUxuUmxlSFFBQUFBQUFBQUEKQUFBQUFFY0NBQURIa3dFQURwWUJBQUFBQUFBVEFBQUFJQkJR
WUM1a1pXSjFaeVJUQUFBQUFBQUFBQUI0QWdBQXpKWUJBRVNaQVFBQQpBQUFBRndBQUFFQVFFRUl1
WW5OekFBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBRUREQUxuSmtZ
WFJoCkFBQUFBQUFBQUFBQUFBUUFBQUFxbWdFQUFBQUFBQUFBQUFBQUFBQUFRQkF3UUM1aWMzTUFB
QUFBQUFBQUFBQUFBQUFFQUFBQUFBQUEKQUFBQUFBQUFBQUFBQUFBQUFJQVFNTUF1ZEdWNGRBQUFB
QUFBQUFBQUFBQUFGQU1BQUM2YUFRQkNuUUVBQUFBQUFEa0FBQUFnRUZCZwpMbVJsWW5WbkpGTUFB
QUFBQUFBQUFMQURBQUI4bndFQUxLTUJBQUFBQUFBOUFBQUFRQkFRUWk1eVpHRjBZUUFBQUFBQUFB
QUFBQUFJCkFBQUFqcVVCQUFBQUFBQUFBQUFBQUFBQUFFQVFRRUF1Y21SaGRHRUFBQUFBQUFBQUFB
QUFDQUFBQUphbEFRQUFBQUFBQUFBQUFBQUEKQUFCQUVFQkFMbkprWVhSaEFBQUFBQUFBQUFBQUFB
UUFBQUNlcFFFQUFBQUFBQUFBQUFBQUFBQUFRQkF3UUM1aWMzTUFBQUFBQUFBQQpBQUFBQUFBSUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQVFNTUF1WW5OekFBQUFBQUFBQUFBQUFBQUFCQUFBQUFB
QUFBQUFBQUFBCkFBQUFBQUFBQUFDQUVEREFMbVJoZEdFQUFBQUFBQUFBQUFBQUFCQUFBQUNpcFFF
QUFBQUFBQUFBQUFBQUFBQUFRQkF3d0M1aWMzTUEKQUFBQUFBQUFBQUFBQUFBRUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFJQVFNTUF1Y21SaGRHRUFBQUFBQUFBQUFBQUFCQUFBQUxLbApBUUFBQUFB
QUFBQUFBQUFBQUFCQUVEQkFMbkprWVhSaEFBQUFBQUFBQUFBQUFBUUFBQUMycFFFQUFBQUFBQUFB
QUFBQUFBQUFRQkF3ClFDNWljM01BQUFBQUFBQUFBQUFBQUFBRUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFJQVFNTUF1WkdGMFlRQUFBQUFBQUFBQUFBQUEKRUFBQUFMcWxBUUFBQUFBQUFBQUFBQUFB
QUFCQUVEREFMbUp6Y3dBQUFBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQQpBQUFB
Z0JBd3dDNTBaWGgwQUFBQUFBQUFBQUFBQUFDQ0FBQUF5cVVCQUV5bUFRQUFBQUFBQXdBQUFDQVFV
R0F1WkdWaWRXY2tVd0FBCkFBQUFBQUFBaEFFQUFHcW1BUUR1cHdFQUFBQUFBQWtBQUFCQUVCQkNM
bkprWVhSaEFBQUFBQUFBQUFBQUFBZ0FBQUJJcUFFQUFBQUEKQUFBQUFBQUFBQUFBUUJCQVFDNTBa
WGgwQUFBQUFBQUFBQUFBQUFBd0FBQUFVS2dCQUlDb0FRQUFBQUFBQWdBQUFDQVFVR0F1WkdWaQpk
V2NrVXdBQUFBQUFBQUFBQ0FFQUFKU29BUUNjcVFFQUFBQUFBQVVBQUFCQUVCQkNMblJsZUhRQUFB
QUFBQUFBQUFBQUFPd0ZBQURPCnFRRUF1cThCQUFBQUFBQk1BQUFBSUJCUVlDNWtaV0oxWnlSVEFB
QUFBQUFBQUFCd0JnQUFzcklCQUNLNUFRQUFBQUFBYXdBQUFFQVEKRUVJdVluTnpBQUFBQUFBQUFB
QUFBQUFBQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQUVEREFMbUp6Y3dBQUFBQUFBQUFBQUFB
QQpBQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0JBd3dDNWljM01BQUFBQUFBQUFBQUFBQUFB
RUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBSUFRTU1BdVpHRjBZUUFBQUFBQUFBQUFBQUFBRUFB
QUFGQzlBUUFBQUFBQUFBQUFBQUFBQUFCQUVEREFMbUp6Y3dBQUFBQUEKQUFBQUFBQUFBQVFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0JBd3dDNWtZWFJoQUFBQUFBQUFBQUFBQUFBUUFBQUFZTDBC
QUFBQQpBQUFBQUFBQUFBQUFBRUFRTU1BdVluTnpBQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFDQUVEREFMblJsCmVIUUFBQUFBQUFBQUFBQUFBS0VBQUFCd3ZRRUFFYjRC
QUFBQUFBQUhBQUFBSUJCUVlDNWtaV0oxWnlSVEFBQUFBQUFBQUFDQUFRQUEKVjc0QkFOZS9BUUFB
QUFBQUN3QUFBRUFRRUVJdWNtUmhkR0VBQUFBQUFBQUFBQUFBQ0FBQUFFWEFBUUFBQUFBQUFBQUFB
QUFBQUFCQQpFRUJBTG5Ka1lYUmhBQUFBQUFBQUFBQUFBQWdBQUFCTndBRUFBQUFBQUFBQUFBQUFB
QUFBUUJCQVFDNTBaWGgwQUFBQUFBQUFBQUFBCkFBRENBd0FBVmNBQkFCZkVBUUFBQUFBQUlRQUFB
Q0FRVUdBdVpHVmlkV2NrVXdBQUFBQUFBQUFBcUFNQUFHSEZBUUFKeVFFQUFBQUEKQURFQUFBQkFF
QkJDTG5Ka1lYUmhBQUFBQUFBQUFBQUFBQVFBQUFEenlnRUFBQUFBQUFBQUFBQUFBQUFBUUJBd1FD
NWljM01BQUFBQQpBQUFBQUFBQUFBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFRTU1BdWNt
UmhkR0VBQUFBQUFBQUFBQUFBQkFBQUFQZktBUUFBCkFBQUFBQUFBQUFBQUFBQkFFREJBTG1KemN3
QUFBQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0JBd3dDNTAKWlhoMEFB
QUFBQUFBQUFBQUFBQlhCQUFBKzhvQkFGTFBBUUFBQUFBQU9BQUFBQ0FRVUdBdVpHVmlkV2NrVXdB
QUFBQUFBQUFBb0FRQQpBSUxSQVFBaTFnRUFBQUFBQUVjQUFBQkFFQkJDTG1KemN3QUFBQUFBQUFB
QUFBQUFBQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCmdCQXd3QzV5WkdGMFlRQUFBQUFBQUFB
QUFBQUVBQUFBNk5nQkFBQUFBQUFBQUFBQUFBQUFBRUFRTUVBdVluTnpBQUFBQUFBQUFBQUEKQUFB
QUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FFRERBTG5Ka1lYUmhBQUFBQUFBQUFBQUFBQVFB
QUFEczJBRUFBQUFBQUFBQQpBQUFBQUFBQVFCQXdRQzVpYzNNQUFBQUFBQUFBQUFBQUFBQUVBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFRTU1BdVpHRjBZUUFBCkFBQUFBQUFBQUFBQUVBQUFBUERZ
QVFBQUFBQUFBQUFBQUFBQUFBQkFFRERBTG1KemN3QUFBQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUEK
QUFBQUFBQUFBQUFBQUFBQWdCQXd3QzUwWlhoMEFBQUFBQUFBQUFBQUFBQ29BZ0FBQU5rQkFLamJB
UUFBQUFBQUtBQUFBQ0FRVUdBdQpaR1ZpZFdja1V3QUFBQUFBQUFBQVpBTUFBRGpkQVFDYzRBRUFB
QUFBQUM4QUFBQkFFQkJDTG5Ka1lYUmhBQUFBQUFBQUFBQUFBQVFBCkFBQnk0Z0VBQUFBQUFBQUFB
QUFBQUFBQVFCQXdRQzVpYzNNQUFBQUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUEKQUlBUU1NQXVZbk56QUFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
Q0FFRERBTG1SaGRHRUFBQUFBQUFBQQpBQUFBQUJnQUFBQjI0Z0VBQUFBQUFBQUFBQUFBQUFBQVFC
QXd3QzVpYzNNQUFBQUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUlBUU1N
QXVkR1Y0ZEFBQUFBQUFBQUFBQUFBQWdnQUFBSTdpQVFBUTR3RUFBQUFBQUFNQUFBQWdFRkJnTG1S
bFluVm4KSkZNQUFBQUFBQUFBQUlRQkFBQXU0d0VBc3VRQkFBQUFBQUFKQUFBQVFCQVFRaTUwWlho
MEFBQUFBQUFBQUFBQUFBQXdBQUFBRE9VQgpBRHpsQVFBQUFBQUFBZ0FBQUNBUVVHQXVaR1ZpZFdj
a1V3QUFBQUFBQUFBQUJBRUFBRkRsQVFCVTVnRUFBQUFBQUFVQUFBQkFFQkJDCkxuUmxlSFFBQUFB
QUFBQUFBQUFBQUF3RkFBQ0c1Z0VBa3VzQkFBQUFBQUJFQUFBQUlCQlFZQzVrWldKMVp5UlRBQUFB
QUFBQUFBQjgKQlFBQU91NEJBTGJ6QVFBQUFBQUFUUUFBQUVBUUVFSXVZbk56QUFBQUFBQUFBQUFB
QUFBQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQQpBQUNBRUREQUxtSnpjd0FBQUFBQUFBQUFBQUFB
QUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdCQXd3QzV5WkdGMFlRQUFBQUFBCkFBQUFBQUFF
QUFBQXVQWUJBQUFBQUFBQUFBQUFBQUFBQUVBUU1FQXVZbk56QUFBQUFBQUFBQUFBQUFBQUJBQUFB
QUFBQUFBQUFBQUEKQUFBQUFBQUFBQUNBRUREQUxtSnpjd0FBQUFBQUFBQUFBQUFBQUFRQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQWdCQXd3QzVrWVhSaApBQUFBQUFBQUFBQUFBQUFRQUFBQXZQWUJB
QUFBQUFBQUFBQUFBQUFBQUVBUU1NQXVZbk56QUFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBCkFBQUFB
QUFBQUFBQUFBQUFBQUNBRUREQUxtUmhkR0VBQUFBQUFBQUFBQUFBQUJBQUFBRE05Z0VBQUFBQUFB
QUFBQUFBQUFBQVFCQXcKd0M1aWMzTUFBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUlBUU1NQXVkR1Y0ZEFBQUFBQUFBQUFBQUFBQQpQd0FBQU56MkFRQWI5d0VBQUFBQUFB
SUFBQUFnRUZCZ0xtUmxZblZuSkZNQUFBQUFBQUFBQUNBQkFBQXY5d0VBVC9nQkFBQUFBQUFGCkFB
QUFRQkFRUWk1MFpYaDBBQUFBQUFBQUFBQUFBQUE5QXdBQWdmZ0JBTDc3QVFBQUFBQUFLd0FBQUNB
UVVHQXVaR1ZpZFdja1V3QUEKQUFBQUFBQUF2QU1BQUd6OUFRQW9BUUlBQUFBQUFERUFBQUJBRUJC
Q0xuSmtZWFJoQUFBQUFBQUFBQUFBQUFRQUFBQVNBd0lBQUFBQQpBQUFBQUFBQUFBQUFRQkF3UUM1
aWMzTUFBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBUU1NQXVZbk56
CkFBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBRUREQUxtUmhkR0VB
QUFBQUFBQUFBQUFBQUJBQUFBQVcKQXdJQUFBQUFBQUFBQUFBQUFBQUFRQkF3d0M1aWMzTUFBQUFB
QUFBQUFBQUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBUQpNTUF1ZEdWNGRBQUFBQUFB
QUFBQUFBQUFDUUFBQUNZREFnQXZBd0lBQUFBQUFBRUFBQUFnRUZCZ0xtUmxZblZuSkZNQUFBQUFB
QUFBCkFOQUFBQUE1QXdJQUNRUUNBQUFBQUFBREFBQUFRQkFRUWk1eVpHRjBZUUFBQUFBQUFBQUFB
QUFZQUFBQUp3UUNBRDhFQWdBQUFBQUEKQmdBQUFFQVFNRUF1ZEdWNGRBQUFBQUFBQUFBQUFBQUFD
UUFBQUhzRUFnQ0VCQUlBQUFBQUFBRUFBQUFnRUZCZ0xtUmxZblZuSkZNQQpBQUFBQUFBQUFPZ0FB
QUNPQkFJQWRnVUNBQUFBQUFBREFBQUFRQkFRUWk1eVpHRjBZUUFBQUFBQUFBQUFBQUFZQUFBQWxB
VUNBS3dGCkFnQUFBQUFBQmdBQUFFQVFNRUF1ZEdWNGRBQUFBQUFBQUFBQUFBQUFDUUFBQU9nRkFn
RHhCUUlBQUFBQUFBRUFBQUFnRUZCZ0xtUmwKWW5WbkpGTUFBQUFBQUFBQUFPUUFBQUQ3QlFJQTN3
WUNBQUFBQUFBREFBQUFRQkFRUWk1eVpHRjBZUUFBQUFBQUFBQUFBQUFZQUFBQQovUVlDQUJVSEFn
QUFBQUFBQmdBQUFFQVFNRUF1ZEdWNGRBQUFBQUFBQUFBQUFBQUFDUUFBQUZFSEFnQmFCd0lBQUFB
QUFBRUFBQUFnCkVGQmdMbVJsWW5WbkpGTUFBQUFBQUFBQUFNZ0FBQUJrQndJQUxBZ0NBQUFBQUFB
REFBQUFRQkFRUWk1eVpHRjBZUUFBQUFBQUFBQUEKQUFBWUFBQUFTZ2dDQUdJSUFnQUFBQUFBQmdB
QUFFQVFNRUF1ZEdWNGRBQUFBQUFBQUFBQUFBQUFDUUFBQUo0SUFnQ25DQUlBQUFBQQpBQUVBQUFB
Z0VGQmdMbVJsWW5WbkpGTUFBQUFBQUFBQUFPQUFBQUN4Q0FJQWtRa0NBQUFBQUFBREFBQUFRQkFR
UWk1eVpHRjBZUUFBCkFBQUFBQUFBQUFBWUFBQUFyd2tDQU1jSkFnQUFBQUFBQmdBQUFFQVFNRUF1
ZEdWNGRBQUFBQUFBQUFBQUFBQUFCd0FBQUFNS0FnQUsKQ2dJQUFBQUFBQUVBQUFBZ0VGQmdMbVJs
WW5WbkpGTUFBQUFBQUFBQUFOQUFBQUFVQ2dJQTVBb0NBQUFBQUFBREFBQUFRQkFRUWk1MApaWGgw
QUFBQUFBQUFBQUFBQUFBSEFBQUFBZ3NDQUFrTEFnQUFBQUFBQVFBQUFDQVFVR0F1WkdWaWRXY2tV
d0FBQUFBQUFBQUE2QUFBCkFCTUxBZ0Q3Q3dJQUFBQUFBQU1BQUFCQUVCQkNMblJsZUhRQUFBQUFB
QUFBQUFBQUFBY0FBQUFaREFJQUlBd0NBQUFBQUFBQkFBQUEKSUJCUVlDNWtaV0oxWnlSVEFBQUFB
QUFBQUFEa0FBQUFLZ3dDQUE0TkFnQUFBQUFBQXdBQUFFQVFFRUl1ZEdWNGRBQUFBQUFBQUFBQQpB
QUFBQndBQUFDd05BZ0F6RFFJQUFBQUFBQUVBQUFBZ0VGQmdMbVJsWW5WbkpGTUFBQUFBQUFBQUFN
Z0FBQUE5RFFJQUJRNENBQUFBCkFBQURBQUFBUUJBUVFpNTBaWGgwQUFBQUFBQUFBQUFBQUFBSEFB
QUFJdzRDQUNvT0FnQUFBQUFBQVFBQUFDQVFVR0F1WkdWaWRXY2sKVXdBQUFBQUFBQUFBNEFBQUFE
UU9BZ0FVRHdJQUFBQUFBQU1BQUFCQUVCQkNMblJsZUhRQUFBQUFBQUFBQUFBQUFBa0FBQUF5RHdJ
QQpPdzhDQUFBQUFBQUJBQUFBSUJCUVlDNWtaV0oxWnlSVEFBQUFBQUFBQUFEQUFBQUFSUThDQUFV
UUFnQUFBQUFBQXdBQUFFQVFFRUl1CmNtUmhkR0VBQUFBQUFBQUFBQUFBR0FBQUFDTVFBZ0E3RUFJ
QUFBQUFBQVlBQUFCQUVEQkFMblJsZUhRQUFBQUFBQUFBQUFBQUFBY0EKQUFCM0VBSUFmaEFDQUFB
QUFBQUJBQUFBSUJCUVlDNWtaV0oxWnlSVEFBQUFBQUFBQUFEQUFBQUFpQkFDQUVnUkFnQUFBQUFB
QXdBQQpBRUFRRUVJdWRHVjRkQUFBQUFBQUFBQUFBQUFBSHdBQUFHWVJBZ0NGRVFJQUFBQUFBQUlB
QUFBZ0VGQmdMbVJsWW5WbkpGTUFBQUFBCkFBQUFBT1FBQUFDWkVRSUFmUklDQUFBQUFBQURBQUFB
UUJBUVFpNTBaWGgwQUFBQUFBQUFBQUFBQUFBUUFBQUFteElDQUtzU0FnQUEKQUFBQUFRQUFBQ0FR
VUdBdVpHVmlkV2NrVXdBQUFBQUFBQUFBOEFBQUFMVVNBZ0NsRXdJQUFBQUFBQVVBQUFCQUVCQkNM
bkprWVhSaApBQUFBQUFBQUFBQUFBQ1FBQUFEWEV3SUEreE1DQUFBQUFBQUpBQUFBUUJBd1FDNTBa
WGgwQUFBQUFBQUFBQUFBQUFBREFBQUFWUlFDCkFBQUFBQUFBQUFBQUFBQUFBQ0FRVUdBdVpHVmlk
V2NrVXdBQUFBQUFBQUFBNkFBQUFGZ1VBZ0JBRlFJQUFBQUFBQVVBQUFCQUVCQkMKTG5SbGVIUUFB
QUFBQUFBQUFBQUFBQjhBQUFCeUZRSUFrUlVDQUFBQUFBQUNBQUFBSUJCUVlDNWtaV0oxWnlSVEFB
QUFBQUFBQUFEbwpBQUFBcFJVQ0FJMFdBZ0FBQUFBQUF3QUFBRUFRRUVJdWRHVjRkQUFBQUFBQUFB
QUFBQUFBYUFBQUFLc1dBZ0FURndJQUFBQUFBQW9BCkFBQWdFRkJnTG1SbFluVm5KRk1BQUFBQUFB
QUFBSUFCQUFCM0Z3SUE5eGdDQUFBQUFBQVBBQUFBUUJBUVFpNWljM01BQUFBQUFBQUEKQUFBQUFB
QUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFRTU1BdWRHVjRkQUFBQUFBQUFBQUFBQUFBSkFB
QUFJMFpBZ0N4R1FJQQpBQUFBQUFVQUFBQWdFRkJnTG1SbFluVm5KRk1BQUFBQUFBQUFBTndBQUFE
akdRSUF2eG9DQUFBQUFBQUhBQUFBUUJBUVFpNWljM01BCkFBQUFBQUFBQUFBQUFBQUVBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBSUFRTU1BdVluTnpBQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUEKQUFB
QUFBQUFBQUFBQUFBQUFBQ0FFRERBTG5SbGVIUUFBQUFBQUFBQUFBQUFBR2dBQUFBRkd3SUFiUnND
QUFBQUFBQUtBQUFBSUJCUQpZQzVrWldKMVp5UlRBQUFBQUFBQUFBQ0FBUUFBMFJzQ0FGRWRBZ0FB
QUFBQUR3QUFBRUFRRUVJdVluTnpBQUFBQUFBQUFBQUFBQUFBCkJBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQ0FFRERBTG5SbGVIUUFBQUFBQUFBQUFBQUFBQ1FBQUFEbkhRSUFDeDRDQUFBQUFBQUYK
QUFBQUlCQlFZQzVrWldKMVp5UlRBQUFBQUFBQUFBRGNBQUFBUFI0Q0FCa2ZBZ0FBQUFBQUJ3QUFB
RUFRRUVJdVluTnpBQUFBQUFBQQpBQUFBQUFBQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FF
RERBTG1KemN3QUFBQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBQWdCQXd3
QzUwWlhoMEFBQUFBQUFBQUFBQUFBQm9BQUFBWHg4Q0FNY2ZBZ0FBQUFBQUNnQUFBQ0FRVUdBdVpH
VmkKZFdja1V3QUFBQUFBQUFBQWdBRUFBQ3NnQWdDcklRSUFBQUFBQUE4QUFBQkFFQkJDTG1KemN3
QUFBQUFBQUFBQUFBQUFBQVFBQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFBQWdCQXd3QzUwWlhoMEFB
QUFBQUFBQUFBQUFBQWtBQUFBUVNJQ0FHVWlBZ0FBQUFBQUJRQUFBQ0FRClVHQXVaR1ZpZFdja1V3
QUFBQUFBQUFBQTNBQUFBSmNpQWdCekl3SUFBQUFBQUFjQUFBQkFFQkJDTG1KemN3QUFBQUFBQUFB
QUFBQUEKQUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdCQXd3QzVpYzNNQUFBQUFBQUFBQUFB
QUFBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQQpBQUFBQUlBUU1NQXVkR1Y0ZEFBQUFBQUFBQUFBQUFB
QWFBQUFBTGtqQWdBaEpBSUFBQUFBQUFvQUFBQWdFRkJnTG1SbFluVm5KRk1BCkFBQUFBQUFBQUh3
QkFBQ0ZKQUlBQVNZQ0FBQUFBQUFQQUFBQVFCQVFRaTVpYzNNQUFBQUFBQUFBQUFBQUFBQUVBQUFB
QUFBQUFBQUEKQUFBQUFBQUFBQUFBQUlBUU1NQXVkR1Y0ZEFBQUFBQUFBQUFBQUFBQUpBQUFBSmNt
QWdDN0pnSUFBQUFBQUFVQUFBQWdFRkJnTG1SbApZblZuSkZNQUFBQUFBQUFBQU5nQUFBRHRKZ0lB
eFNjQ0FBQUFBQUFIQUFBQVFCQVFRaTVpYzNNQUFBQUFBQUFBQUFBQUFBQUVBQUFBCkFBQUFBQUFB
QUFBQUFBQUFBQUFBQUlBUU1NQXVZbk56QUFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQ0EKRUREQUxuUmxlSFFBQUFBQUFBQUFBQUFBQUdnQUFBQUxLQUlBY3lnQ0FBQUFB
QUFLQUFBQUlCQlFZQzVrWldKMVp5UlRBQUFBQUFBQQpBQUI4QVFBQTF5Z0NBRk1xQWdBQUFBQUFE
d0FBQUVBUUVFSXVZbk56QUFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFB
QUNBRUREQUxuUmxlSFFBQUFBQUFBQUFBQUFBQUNRQUFBRHBLZ0lBRFNzQ0FBQUFBQUFGQUFBQUlC
QlFZQzVrWldKMVp5UlQKQUFBQUFBQUFBQURZQUFBQVB5c0NBQmNzQWdBQUFBQUFCd0FBQUVBUUVF
SXVZbk56QUFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFBQQpBQUFBQUFBQUFBQUFBQUNBRUREQUxt
Snpjd0FBQUFBQUFBQUFBQUFBQUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdCQXd3QzUwClpY
aDBBQUFBQUFBQUFBQUFBQUJvQUFBQVhTd0NBTVVzQWdBQUFBQUFDZ0FBQUNBUVVHQXVaR1ZpZFdj
a1V3QUFBQUFBQUFBQWdBRUEKQUNrdEFnQ3BMZ0lBQUFBQUFBOEFBQUJBRUJCQ0xtSnpjd0FBQUFB
QUFBQUFBQUFBQUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQQpnQkF3d0M1MFpYaDBBQUFBQUFB
QUFBQUFBQUFrQUFBQVB5OENBR012QWdBQUFBQUFCUUFBQUNBUVVHQXVaR1ZpZFdja1V3QUFBQUFB
CkFBQUEzQUFBQUpVdkFnQnhNQUlBQUFBQUFBY0FBQUJBRUJCQ0xtSnpjd0FBQUFBQUFBQUFBQUFB
QUFRQUFBQUFBQUFBQUFBQUFBQUEKQUFBQUFBQUFnQkF3d0M1aWMzTUFBQUFBQUFBQUFBQUFBQUFF
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBUU1NQXVkR1Y0ZEFBQQpBQUFBQUFBQUFBQUFhQUFB
QUxjd0FnQWZNUUlBQUFBQUFBb0FBQUFnRUZCZ0xtUmxZblZuSkZNQUFBQUFBQUFBQUlBQkFBQ0RN
UUlBCkF6TUNBQUFBQUFBUEFBQUFRQkFRUWk1aWMzTUFBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUlBUU1NQXUKZEdWNGRBQUFBQUFBQUFBQUFBQUFKQUFBQUprekFnQzlN
d0lBQUFBQUFBVUFBQUFnRUZCZ0xtUmxZblZuSkZNQUFBQUFBQUFBQU53QQpBQUR2TXdJQXl6UUNB
QUFBQUFBSEFBQUFRQkFRUWk1aWMzTUFBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBCkFJQVFNTUF1WW5OekFBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUNBRUREQUxuUmxlSFFBQUFBQUFBQUEKQUFBQUFHZ0FBQUFSTlFJQWVUVUNBQUFBQUFBS0FB
QUFJQkJRWUM1a1pXSjFaeVJUQUFBQUFBQUFBQUI4QVFBQTNUVUNBRmszQWdBQQpBQUFBRHdBQUFF
QVFFRUl1WW5OekFBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBRURE
QUxuUmxlSFFBCkFBQUFBQUFBQUFBQUFDUUFBQUR2TndJQUV6Z0NBQUFBQUFBRkFBQUFJQkJRWUM1
a1pXSjFaeVJUQUFBQUFBQUFBQURVQUFBQVJUZ0MKQUJrNUFnQUFBQUFBQndBQUFFQVFFRUl1WW5O
ekFBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBRUREQQpMbUp6Y3dB
QUFBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQkF3d0M1MFpYaDBBQUFB
QUFBQUFBQUFBQUJrCkFRQUFYemtDQU1NNkFnQUFBQUFBTmdBQUFDQVFVR0F1WkdWaWRXY2tVd0FB
QUFBQUFBQUE5QUVBQU44OEFnRFRQZ0lBQUFBQUFCY0EKQUFCQUVCQkNMblJsZUhRQUFBQUFBQUFB
QUFBQUFQSUFBQUM1UHdJQXEwQUNBQUFBQUFBS0FBQUFJQkJRWUM1a1pXSjFaeVJUQUFBQQpBQUFB
QUFCVUFnQUFEMEVDQUdOREFnQUFBQUFBRndBQUFFQVFFRUl1ZEdWNGRBQUFBQUFBQUFBQUFBQUFS
QUFBQUVsRUFnQ05SQUlBCkFBQUFBQVFBQUFBZ0VGQmdMbVJsWW5WbkpGTUFBQUFBQUFBQUFEZ0JB
QUMxUkFJQTdVVUNBQUFBQUFBSEFBQUFRQkFRUWk1MFpYaDAKQUFBQUFBQUFBQUFBQUFCK0FRQUFN
MFlDQUxGSEFnQUFBQUFBRlFBQUFDQVFVR0F1WkdWaWRXY2tVd0FBQUFBQUFBQUF1QUlBQUlOSQpB
Z0E3U3dJQUFBQUFBQ0VBQUFCQUVCQkNMbUp6Y3dBQUFBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFnQkF3CndDNXlaR0YwWVFBQUFBQUFBQUFBQUFBRUFBQUFoVXdDQUFBQUFB
QUFBQUFBQUFBQUFFQVFNRUF1WW5OekFBQUFBQUFBQUFBQUFBQUEKQkFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFDQUVEREFMblJsZUhRQUFBQUFBQUFBQUFBQUFCQUFBQUNKVEFJQW1Vd0NBQUFBQUFB
QgpBQUFBSUJCUVlDNWtaV0oxWnlSVEFBQUFBQUFBQUFETUFBQUFvMHdDQUc5TkFnQUFBQUFBQXdB
QUFFQVFFRUl1Y21SaGRHRUFBQUFBCkFBQUFBQUFBSkFBQUFJMU5BZ0N4VFFJQUFBQUFBQWtBQUFC
QUVEQkFMblJsZUhRQUFBQUFBQUFBQUFBQUFBTUFBQUFMVGdJQUFBQUEKQUFBQUFBQUFBQUFBSUJC
UVlDNWtaV0oxWnlSVEFBQUFBQUFBQUFEc0FBQUFEazRDQVBwT0FnQUFBQUFBQlFBQUFFQVFFRUl1
ZEdWNApkQUFBQUFBQUFBQUFBQUFBQndBQUFDeFBBZ0F6VHdJQUFBQUFBQUVBQUFBZ0VGQmdMbVJs
WW5WbkpGTUFBQUFBQUFBQUFNd0FBQUE5ClR3SUFDVkFDQUFBQUFBQURBQUFBUUJBUVFpNTBaWGgw
QUFBQUFBQUFBQUFBQUFBZkFBQUFKMUFDQUVaUUFnQUFBQUFBQWdBQUFDQVEKVUdBdVpHVmlkV2Nr
VXdBQUFBQUFBQUFBN0FBQUFGcFFBZ0JHVVFJQUFBQUFBQU1BQUFCQUVCQkNMblJsZUhRQUFBQUFB
QUFBQUFBQQpBQjhBQUFCa1VRSUFnMUVDQUFBQUFBQUNBQUFBSUJCUVlDNWtaV0oxWnlSVEFBQUFB
QUFBQUFEd0FBQUFsMUVDQUlkU0FnQUFBQUFBCkF3QUFBRUFRRUVJdWRHVjRkQUFBQUFBQUFBQUFB
QUFBSHdBQUFLVlNBZ0RFVWdJQUFBQUFBQUlBQUFBZ0VGQmdMbVJsWW5WbkpGTUEKQUFBQUFBQUFB
UHdBQUFEWVVnSUExRk1DQUFBQUFBQURBQUFBUUJBUVFpNTBaWGgwQUFBQUFBQUFBQUFBQUFBZkFB
QUE4bE1DQUJGVQpBZ0FBQUFBQUFnQUFBQ0FRVUdBdVpHVmlkV2NrVXdBQUFBQUFBQUFBK0FBQUFD
VlVBZ0FkVlFJQUFBQUFBQU1BQUFCQUVCQkNMblJsCmVIUUFBQUFBQUFBQUFBQUFBQjhBQUFBN1ZR
SUFXbFVDQUFBQUFBQUNBQUFBSUJCUVlDNWtaV0oxWnlSVEFBQUFBQUFBQUFEb0FBQUEKYmxVQ0FG
WldBZ0FBQUFBQUF3QUFBRUFRRUVJdWRHVjRkQUFBQUFBQUFBQUFBQUFBSHdBQUFIUldBZ0NUVmdJ
QUFBQUFBQUlBQUFBZwpFRkJnTG1SbFluVm5KRk1BQUFBQUFBQUFBUFFBQUFDblZnSUFtMWNDQUFB
QUFBQURBQUFBUUJBUVFpNTBaWGgwQUFBQUFBQUFBQUFBCkFBQUpBQUFBdVZjQ0FNSlhBZ0FBQUFB
QUFRQUFBQ0FRVUdBdVpHVmlkV2NrVXdBQUFBQUFBQUFBekFBQUFNeFhBZ0NZV0FJQUFBQUEKQUFN
QUFBQkFFQkJDTG5Ka1lYUmhBQUFBQUFBQUFBQUFBQmdBQUFDMldBSUF6bGdDQUFBQUFBQUdBQUFB
UUJBd1FDNTBaWGgwQUFBQQpBQUFBQUFBQUFBQUhBQUFBQ2xrQ0FCRlpBZ0FBQUFBQUFRQUFBQ0FR
VUdBdVpHVmlkV2NrVXdBQUFBQUFBQUFBekFBQUFCdFpBZ0RuCldRSUFBQUFBQUFNQUFBQkFFQkJD
TG5SbGVIUUFBQUFBQUFBQUFBQUFBQjhBQUFBRldnSUFKRm9DQUFBQUFBQUNBQUFBSUJCUVlDNWsK
WldKMVp5UlRBQUFBQUFBQUFBRHNBQUFBT0ZvQ0FDUmJBZ0FBQUFBQUF3QUFBRUFRRUVJdWRHVjRk
QUFBQUFBQUFBQUFBQUFBSVFJQQpBRUpiQWdCalhRSUFBQUFBQURzQUFBQWdFRkJnTG1SbFluVm5K
Rk1BQUFBQUFBQUFBS2dEQUFDeFh3SUFXV01DQUFBQUFBQWxBQUFBClFCQVFRaTVpYzNNQUFBQUFB
QUFBQUFBQUFBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFRTU1BdVluTnpBQUFBQUFBQUFB
QUEKQUFBQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FFRERBTG1KemN3QUFBQUFBQUFBQUFB
QUFBQVFBQUFBQUFBQUFBQUFBQUFBQQpBQUFBQUFBQWdCQXd3QzVpYzNNQUFBQUFBQUFBQUFBQUFB
QUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFRTU1BdVluTnpBQUFBCkFBQUFBQUFBQUFBQUJB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FFRERBTG1KemN3QUFBQUFBQUFBQUFBQUFBQVFBQUFB
QUFBQUEKQUFBQUFBQUFBQUFBQUFBQWdCQXd3QzVpYzNNQUFBQUFBQUFBQUFBQUFBQUVBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBSUFRTU1BdQpZbk56QUFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQ0FFRERBTG5SbGVIUUFBQUFBQUFBQUFBQUFBRHNBCkFBRExaQUlBQm1V
Q0FBQUFBQUFIQUFBQUlCQlFZQzVrWldKMVp5UlRBQUFBQUFBQUFBQWtBUUFBVEdVQ0FIQm1BZ0FB
QUFBQUJ3QUEKQUVBUUVFSXVZbk56QUFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQ0FFRERBTG1KemN3QUFBQUFBQUFBQQpBQUFBQUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQWdCQXd3QzVrWldKMVp5UlRBQUFBQUFBQUFBQWdBQUFBdG1ZQ0FOWm1BZ0FBCkFBQUFBZ0FB
QUVBUUVFSXVaR1ZpZFdja1V3QUFBQUFBQUFBQUlBQUFBT3BtQWdBS1p3SUFBQUFBQUFJQUFBQkFF
QkJDTG1SbFluVm4KSkZNQUFBQUFBQUFBQUNBQUFBQWVad0lBUG1jQ0FBQUFBQUFDQUFBQVFCQVFR
aTVrWldKMVp5UlRBQUFBQUFBQUFBQWdBQUFBVW1jQwpBSEpuQWdBQUFBQUFBZ0FBQUVBUUVFSXVa
R1ZpZFdja1V3QUFBQUFBQUFBQUlBQUFBSVpuQWdDbVp3SUFBQUFBQUFJQUFBQkFFQkJDCkxtUmxZ
blZuSkZNQUFBQUFBQUFBQUNBQUFBQzZad0lBMm1jQ0FBQUFBQUFDQUFBQVFCQVFRaTVrWldKMVp5
UlRBQUFBQUFBQUFBQWcKQUFBQTdtY0NBQTVvQWdBQUFBQUFBZ0FBQUVBUUVFSXVaR1ZpZFdja1V3
QUFBQUFBQUFBQUlBQUFBQ0pvQWdCQ2FBSUFBQUFBQUFJQQpBQUJBRUJCQ0xtUmxZblZuSkZNQUFB
QUFBQUFBQUNBQUFBQldhQUlBZG1nQ0FBQUFBQUFDQUFBQVFCQVFRaTVrWldKMVp5UlRBQUFBCkFB
QUFBQUFnQUFBQWltZ0NBS3BvQWdBQUFBQUFBZ0FBQUVBUUVFSXVaR1ZpZFdja1V3QUFBQUFBQUFB
QUlBQUFBTDVvQWdEZWFBSUEKQUFBQUFBSUFBQUJBRUJCQ0xtUmxZblZuSkZNQUFBQUFBQUFBQUNB
QUFBRHlhQUlBRW1rQ0FBQUFBQUFDQUFBQVFCQVFRaTVrWldKMQpaeVJUQUFBQUFBQUFBQUFnQUFB
QUpta0NBRVpwQWdBQUFBQUFBZ0FBQUVBUUVFSXVaR1ZpZFdja1V3QUFBQUFBQUFBQUlBQUFBRnBw
CkFnQjZhUUlBQUFBQUFBSUFBQUJBRUJCQ0xtUmxZblZuSkZNQUFBQUFBQUFBQUNBQUFBQ09hUUlB
cm1rQ0FBQUFBQUFDQUFBQVFCQVEKUWk1a1pXSjFaeVJUQUFBQUFBQUFBQUFnQUFBQXdta0NBT0pw
QWdBQUFBQUFBZ0FBQUVBUUVFSXVaR1ZpZFdja1V3QUFBQUFBQUFBQQpJQUFBQVBacEFnQVdhZ0lB
QUFBQUFBSUFBQUJBRUJCQ0xtUmxZblZuSkZNQUFBQUFBQUFBQUNBQUFBQXFhZ0lBU21vQ0FBQUFB
QUFDCkFBQUFRQkFRUWk1a1pXSjFaeVJUQUFBQUFBQUFBQUFnQUFBQVhtb0NBSDVxQWdBQUFBQUFB
Z0FBQUVBUUVFSXVaR1ZpZFdja1V3QUEKQUFBQUFBQUFJQUFBQUpKcUFnQ3lhZ0lBQUFBQUFBSUFB
QUJBRUJCQ0xtUmxZblZuSkZNQUFBQUFBQUFBQUNBQUFBREdhZ0lBNW1vQwpBQUFBQUFBQ0FBQUFR
QkFRUWk1a1pXSjFaeVJUQUFBQUFBQUFBQUFnQUFBQSttb0NBQnByQWdBQUFBQUFBZ0FBQUVBUUVF
SXVaR1ZpCmRXY2tVd0FBQUFBQUFBQUFJQUFBQUM1ckFnQk9hd0lBQUFBQUFBSUFBQUJBRUJCQ0xt
UmxZblZuSkZRQUFBQUFBQUFBQUdRQUFBQmkKYXdJQUFBQUFBQUFBQUFBQUFBQUFRQUFRUWlBZ0lD
OXRZVzVwWm1WemRHUmxjR1Z1WkdWdVkzazZJblI1Y0dVOUozZHBiak15SnlCdQpZVzFsUFNkTmFX
TnliM052Wm5RdVZrTTRNQzVEVWxRbklIWmxjbk5wYjI0OUp6Z3VNQzQxTURjeU55NDBNRFV6SnlC
d2NtOWpaWE56CmIzSkJjbU5vYVhSbFkzUjFjbVU5SjNnNE5pY2djSFZpYkdsalMyVjVWRzlyWlc0
OUp6Rm1ZemhpTTJJNVlURmxNVGhsTTJJbklpQXYKUkVWR1FWVk1WRXhKUWpvaVRWTldRMUpVSWlB
dlJFVkdRVlZNVkV4SlFqb2lUMHhFVGtGTlJWTWlJQVFBQUFEeEFBQUFqd2NBQUYwQQpBUkVBQUFB
QVF6cGNZM2xuZDJsdVhHaHZiV1ZjWTIxaGNuSnBibHhYWldKTGFYUkNkV2xzWkZ4dlltcGNWMlZp
UzJsMFUzbHpkR1Z0ClNXNTBaWEptWVdObFhGSmxiR1ZoYzJWY1UyaGhjbVZrVFdWa2FXRlZTUzV2
WW1vQUxnY1dFUUVnQUFBSEFBNEFBQUFueGc0QUFBQW4KeGsxcFkzSnZjMjltZENBb1Vpa2dUM0Iw
YVcxcGVtbHVaeUJEYjIxd2FXeGxjZ0JqZDJRQVl6cGNZM2xuZDJsdVhHaHZiV1ZjWTIxaApjbkpw
Ymx4emIzVnlZMlZjYzNadVhGZGxZa3RwZEZ4SmJuUmxjbTVoYkZ4WFpXSkxhWFJUZVhOMFpXMUpi
blJsY21aaFkyVmNkMmx1CkFHTnNBRU02WEZCeWIyZHlZVzBnUm1sc1pYTWdLSGc0TmlsY1RXbGpj
bTl6YjJaMElGWnBjM1ZoYkNCVGRIVmthVzhnT0Z4V1ExeGkKYVc1Y1kyd3VaWGhsQUdOdFpBQXRU
eklnTFVsRE9seGplV2QzYVc1Y2FHOXRaVnhqYldGeWNtbHVYRmRsWWt0cGRFSjFhV3hrWEVsdQpZ
MngxWkdVZ0xVbERPbHhCY0hCc1pVbHVkR1Z5Ym1Gc1hFbHVZMngxWkdVZ0xVbERPbHhCY0hCc1pV
bHVkR1Z5Ym1Gc1hFbHVZMngxClpHVmNRMjl5WlVadmRXNWtZWFJwYjI1Y1QxTllRMjl0Y0dGMGFX
SnBiR2wwZVVobFlXUmxjbk1nTFVsRE9seEJjSEJzWlVsdWRHVnkKYm1Gc1hFbHVZMngxWkdWY1Ey
OXlaVVp2ZFc1a1lYUnBiMjVjVDFOWVEyOXRjR0YwYVdKcGJHbDBlVWhsWVdSbGNuTmNSMDVWUTI5
dApjR0YwYVdKcGJHbDBlU0F0U1VNNlhHTjVaM2RwYmx4b2IyMWxYR050WVhKeWFXNWNWMlZpUzJs
MFFuVnBiR1JjYjJKcVhGZGxZa3RwCmRGTjVjM1JsYlVsdWRHVnlabUZqWlZ4RVpYSnBkbVZrVTI5
MWNtTmxjeUF0U1dNNlhHTjVaM2RwYmx4b2IyMWxYR050WVhKeWFXNWMKYzI5MWNtTmxYSE4yYmx4
WFpXSkxhWFJjU1c1MFpYSnVZV3hjVjJWaVMybDBVM2x6ZEdWdFNXNTBaWEptWVdObElDMUVYMTlY
U1U0egpNbDlmSUMxRVgweEpRaUF0UkU1RVJVSlZSeUF0UkZkSlRqTXlJQzFFWDFkSlRrUlBWMU1n
TFVSWFNVNVdSVkk5TUhnMU1ERWdMVVJmClYwbE9NekpmVjBsT1RsUTlNSGcxTURFZ0xVUmZWMGxP
TXpKZlNVVTlNSGcyTURBZ0xVUmZRMUpVWDFORlExVlNSVjlEVUZCZlQxWkYKVWt4UFFVUmZVMVJC
VGtSQlVrUmZUa0ZOUlZNOU1TQXRSRjlmVUZKUFJGVkRWRWxQVGw5ZlBUQWdMVVJmU0VGVFgwVllR
MFZRVkVsUApUbE05TUNBdFJFSlZTVXhFU1U1SFgxZGxZa3RwZEZONWMzUmxiVWx1ZEdWeVptRmpa
U0F0UkY5VlRrbERUMFJGSUMxRVZVNUpRMDlFClJTQXRSa1FnTFUxRUlDMUhVaTBnTFVadlF6cGNZ
M2xuZDJsdVhHaHZiV1ZjWTIxaGNuSnBibHhYWldKTGFYUkNkV2xzWkZ4dlltcGMKVjJWaVMybDBV
M2x6ZEdWdFNXNTBaWEptWVdObFhGSmxiR1ZoYzJWY0lDMUdaRU02WEdONVozZHBibHhvYjIxbFhH
TnRZWEp5YVc1YwpWMlZpUzJsMFFuVnBiR1JjYkdsaVhGZGxZa3RwZEZONWMzUmxiVWx1ZEdWeVpt
RmpaUzUyWXpnd0xuQmtZaUF0VnpRZ0xWZFlJQzFqCklDMWFhU0F0VkZBZ0xYZGtOREF4T0NBdGQy
UTBNRFk0SUMxM1pEUXdPVGtnTFhka05ERXdNQ0F0ZDJRME1USTNJQzEzWkRReE16Z2cKTFhka05E
RTRNQ0F0ZDJRME1UZzVJQzEzWkRReU1ERWdMWGRrTkRJME5DQXRkMlEwTWpVeElDMTNaRFF5TnpV
Z0xYZGtOREk0T0NBdApkMlEwTWpreElDMTNaRFF6TURVZ0xYZGtORE0wTkNBdGQyUTBNelUxSUMx
M1pEUXpPRGtnTFhka05EVXdNeUF0ZDJRME5UQTFJQzEzClpEUTFNVEFnTFhka05EVXhNaUF0ZDJR
ME5qRXdJQzEzWkRRM01EWWdMWGRrTkRnd01DQXRkMlEwT1RVeElDMTNaRFE1TlRJZ0xYZGsKTkRr
NU5pQXRkMlEyTURFeElDMTNaRFl3TXpFZ0xYZGtOakl4TVNBdGQyUTJNalEySUMxM1pEWXlOVFVn
TFhka05qTTROeUF0UjFNZwpMVzV2Ykc5bmJ5QXRaWEp5YjNKeVpYQnZjblE2Y1hWbGRXVWdMVWtp
UXpwY1VISnZaM0poYlNCR2FXeGxjeUFvZURnMktWeE5hV055CmIzTnZablFnUkdseVpXTjBXQ0JU
UkVzZ0tFRjFaM1Z6ZENBeU1EQTVLVnhKYm1Oc2RXUmxJaUF0U1NKRE9seFFjbTluY21GdElFWnAK
YkdWeklDaDRPRFlwWEUxcFkzSnZjMjltZENCV2FYTjFZV3dnVTNSMVpHbHZJRGhjVmtOY2FXNWpi
SFZrWlNJZ0xVa2lRenBjVUhKdgpaM0poYlNCR2FXeGxjeUFvZURnMktWeE5hV055YjNOdlpuUWdW
bWx6ZFdGc0lGTjBkV1JwYnlBNFhGWkRYR0YwYkcxbVkxeHBibU5zCmRXUmxJaUF0U1NKRE9seFFj
bTluY21GdElFWnBiR1Z6SUNoNE9EWXBYRTFwWTNKdmMyOW1kQ0JXYVhOMVlXd2dVM1IxWkdsdklE
aGMKVmtOY1VHeGhkR1p2Y20xVFJFdGNhVzVqYkhWa1pTSWdMVWtpUXpwY1VISnZaM0poYlNCR2FX
eGxjeUFvZURnMktWeE5hV055YjNOdgpablFnVm1semRXRnNJRk4wZFdScGJ5QTRYRlpEWEZCc1lY
Um1iM0p0VTBSTFhHTnZiVzF2Ymx4cGJtTnNkV1JsSWlBdFNTSkRPbHhRCmNtOW5jbUZ0SUVacGJH
VnpJQ2g0T0RZcFhFMXBZM0p2YzI5bWRDQldhWE4xWVd3Z1UzUjFaR2x2SURoY1UwUkxYSFl5TGpC
Y2FXNWoKYkhWa1pTSWdMVmdBYzNKakFDNHVYRk5vWVhKbFpFMWxaR2xoVlVrdVkzQndBSEJrWWdC
RE9seGplV2QzYVc1Y2FHOXRaVnhqYldGeQpjbWx1WEZkbFlrdHBkRUoxYVd4a1hHeHBZbHhYWldK
TGFYUlRlWE4wWlcxSmJuUmxjbVpoWTJVdWRtTTRNQzV3WkdJQUFBRHhBQUFBCml3Z0FBQ3dBQnhG
OEVnQUFMUU5OWldScFlVWmhjM1JHYjNKM1lYSmtTVzFoWjJWRVlYUmhUR1Z1WjNSb1gzQnVad0F6
QUFjUmZCSUEKQUZFRFRXVmthV0ZHWVhOMFJtOXlkMkZ5WkZCeVpYTnpaV1JKYldGblpVUmhkR0ZN
Wlc1bmRHaGZjRzVuQUNzQUJ4RjhFZ0FBZVFOTgpaV1JwWVVaMWJHeFdiMngxYldWSmJXRm5aVVJo
ZEdGTVpXNW5kR2hmY0c1bkFESUFCeEY4RWdBQXVnTk5aV1JwWVVaMWJHeFdiMngxCmJXVlFjbVZ6
YzJWa1NXMWhaMlZFWVhSaFRHVnVaM1JvWDNCdVp3QW1BQWNSbUJJQUFBQUFhME5IVTNSNWJHVkVj
bUYzVDNKa1pYSnAKYm1kVGRIbHNaVTl1YkhrQUlnQUhFWmdTQUFBQkFHdERSMU4wZVd4bFJISmhk
MDl5WkdWeWFXNW5RbVZzYjNjQUt3QUhFWHdTQUFCbApBMDFsWkdsaFJuVnNiSE5qY21WbGJrbHRZ
V2RsUkdGMFlVeGxibWQwYUY5d2JtY0FNZ0FIRVh3U0FBQ01BMDFsWkdsaFJuVnNiSE5qCmNtVmxi
bEJ5WlhOelpXUkpiV0ZuWlVSaGRHRk1aVzVuZEdoZmNHNW5BQ1VBQnhGOEVnQUFSQU5OWldScFlV
MTFkR1ZKYldGblpVUmgKZEdGTVpXNW5kR2hmY0c1bkFDd0FCeEY4RWdBQWRRTk5aV1JwWVUxMWRH
VlFjbVZ6YzJWa1NXMWhaMlZFWVhSaFRHVnVaM1JvWDNCdQpad0FtQUFjUmZCSUFBQTBEVFdWa2FX
RlFZWFZ6WlVsdFlXZGxSR0YwWVV4bGJtZDBhRjl3Ym1jQUxRQUhFWHdTQUFBbEEwMWxaR2xoClVH
RjFjMlZRY21WemMyVmtTVzFoWjJWRVlYUmhUR1Z1WjNSb1gzQnVad0FsQUFjUmZCSUFBRDBEVFdW
a2FXRlFiR0Y1U1cxaFoyVkUKWVhSaFRHVnVaM1JvWDNCdVp3QXNBQWNSZkJJQUFHUURUV1ZrYVdG
UWJHRjVVSEpsYzNObFpFbHRZV2RsUkdGMFlVeGxibWQwYUY5dwpibWNBSndBSEVYd1NBQUExQTAx
bFpHbGhVbVYzYVc1a1NXMWhaMlZFWVhSaFRHVnVaM1JvWDNCdVp3QWhBQWNSbUJjQUFBQUFhME5I
ClJtOWpkWE5TYVc1blQzSmtaWEpwYm1kT2IyNWxBQzRBQnhGOEVnQUFUd05OWldScFlWSmxkMmx1
WkZCeVpYTnpaV1JKYldGblpVUmgKZEdGTVpXNW5kR2hmY0c1bkFETUFCeEY4RWdBQUJnNU5aV1Jw
WVZOc2FXUmxjbFJ5WVdOclRHVm1kRU5oY0VsdFlXZGxSR0YwWVV4bApibWQwYUY5d2JtY0FIUUFI
RVpZWEFBQUFBR3REUjBadlkzVnpVbWx1WjFScGJuUkNiSFZsQURvQUJ4RjhFZ0FBQVE1TlpXUnBZ
Vk5zCmFXUmxjbFJ5WVdOclRHVm1kRU5oY0V4dllXUnBibWRKYldGblpVUmhkR0ZNWlc1bmRHaGZj
RzVuQURJQUJ4RjhFZ0FBbWcxTlpXUnAKWVZOc2FXUmxjbFJ5WVdOclRXbGtaR3hsU1cxaFoyVkVZ
WFJoVEdWdVozUm9YM0J1WndBNUFBY1JmQklBQUpZTlRXVmthV0ZUYkdsawpaWEpVY21GamEwMXBa
R1JzWlV4dllXUnBibWRKYldGblpVUmhkR0ZNWlc1bmRHaGZjRzVuQURRQUJ4RjhFZ0FBL3cxTlpX
UnBZVk5zCmFXUmxjbFJ5WVdOclVtbG5hSFJEWVhCSmJXRm5aVVJoZEdGTVpXNW5kR2hmY0c1bkFE
c0FCeEY4RWdBQSt3MU5aV1JwWVZOc2FXUmwKY2xSeVlXTnJVbWxuYUhSRFlYQk1iMkZrYVc1blNX
MWhaMlZFWVhSaFRHVnVaM1JvWDNCdVp3QW1BQWNSZkJJQUFFOEVUV1ZrYVdGVQphSFZ0WWtsdFlX
ZGxSR0YwWVV4bGJtZDBhRjl3Ym1jQUxRQUhFWHdTQUFCNEJFMWxaR2xoVkdoMWJXSlFjbVZ6YzJW
a1NXMWhaMlZFCllYUmhUR1Z1WjNSb1gzQnVad0F2QUFjUmZCSUFBTWNEVFdWa2FXRlViMmRuYkdW
RFlYQjBhVzl1YzBsdFlXZGxSR0YwWVV4bGJtZDAKYUY5d2JtY0FOZ0FIRVh3U0FBQ1JBMDFsWkds
aFZHOW5aMnhsUTJGd2RHbHZibk5RY21WemMyVmtTVzFoWjJWRVlYUmhUR1Z1WjNSbwpYM0J1WndB
ekFBd1IyQmNBQUFBQUFBQUFBRTFsWkdsaFRtVjNWVWxCZFdScGIxWnZiSFZ0WlVocFoyaEpiV0Zu
WlVSaGRHRmZjR1JtCkFEVUFCeEY4RWdBQUVBbE5aV1JwWVU1bGQxVkpRWFZrYVc5V2IyeDFiV1ZJ
YVdkb1NXMWhaMlZFWVhSaFRHVnVaM1JvWDNCa1pnQXkKQUF3UjF4Y0FBQUFBQUFBQUFFMWxaR2xo
VG1WM1ZVbEJkV1JwYjFadmJIVnRaVTltWmtsdFlXZGxSR0YwWVY5d1pHWUFOQUFIRVh3UwpBQUFS
Q0UxbFpHbGhUbVYzVlVsQmRXUnBiMVp2YkhWdFpVOW1aa2x0WVdkbFJHRjBZVXhsYm1kMGFGOXda
R1lBTWdBTUVkUVhBQUFBCkFBQUFBQUJOWldScFlVNWxkMVZKUTJ4dmMyVmtRMkZ3ZEdsdmJuTkpi
V0ZuWlVSaGRHRmZjR1JtQURRQUJ4RjhFZ0FBWjFOTlpXUnAKWVU1bGQxVkpRMnh2YzJWa1EyRndk
R2x2Ym5OSmJXRm5aVVJoZEdGTVpXNW5kR2hmY0dSbUFETUFEQkhaRndBQUFBQUFBQUFBVFdWawph
V0ZPWlhkVlNVVnVkR1Z5Um5Wc2JITmpjbVZsYmtsdFlXZGxSR0YwWVY5d1pHWUFOUUFIRVh3U0FB
QTVDRTFsWkdsaFRtVjNWVWxGCmJuUmxja1oxYkd4elkzSmxaVzVKYldGblpVUmhkR0ZNWlc1bmRH
aGZjR1JtQUMwQUJ4RjhFZ0FBZ2c5TlpXUnBZVTVsZDFWSlJtOXkKZDJGeVpFbHRZV2RsUkdGMFlV
eGxibWQwYUY5d1pHWUFMd0FNRWRvWEFBQUFBQUFBQUFCTlpXUnBZVTVsZDFWSlVHRjFjMlZDZFhS
MApiMjVKYldGblpVUmhkR0ZmY0dSbUFERUFCeEY4RWdBQWVBOU5aV1JwWVU1bGQxVkpVR0YxYzJW
Q2RYUjBiMjVKYldGblpVUmhkR0ZNClpXNW5kR2hmY0dSbUFDNEFEQkhXRndBQUFBQUFBQUFBVFdW
a2FXRk9aWGRWU1ZCc1lYbENkWFIwYjI1SmJXRm5aVVJoZEdGZmNHUm0KQURBQUJ4RjhFZ0FBYnc5
TlpXUnBZVTVsZDFWSlVHeGhlVUoxZEhSdmJrbHRZV2RsUkdGMFlVeGxibWQwYUY5d1pHWUFMUUFN
RWRVWApBQUFBQUFBQUFBQk5aV1JwWVU1bGQxVkpVbVYwY21WaGRETXdTVzFoWjJWRVlYUmhYM0Jr
WmdBdkFBY1JmQklBQU5rSFRXVmthV0ZPClpYZFZTVkpsZEhKbFlYUXpNRWx0WVdkbFJHRjBZVXhs
Ym1kMGFGOXdaR1lBTWdBTUVkc1hBQUFBQUFBQUFBQk5aV1JwWVU1bGQxVkoKVTJWbGExUnZVbVZo
YkhScGJXVkpiV0ZuWlVSaGRHRmZjR1JtQURRQUJ4RjhFZ0FBb0E5TlpXUnBZVTVsZDFWSlUyVmxh
MVJ2VW1WaApiSFJwYldWSmJXRm5aVVJoZEdGTVpXNW5kR2hmY0dSbUFBRHhBQUFBT2dFQUFCc0FC
eEdMRndBQUFBQnJRMGRDYkdWdVpFMXZaR1ZPCmIzSnRZV3dBR2dBSEVZc1hBQUFPQUd0RFIwSnNa
VzVrVFc5a1pVTnZiRzl5QUJrQUJ4R0xGd0FBRVFCclEwZENiR1Z1WkUxdlpHVkQKYjNCNUFCMEFC
eEdMRndBQUVnQnJRMGRDYkdWdVpFMXZaR1ZUYjNWeVkyVkpiZ0FqQUFjUml4Y0FBQmNBYTBOSFFt
eGxibVJOYjJSbApSR1Z6ZEdsdVlYUnBiMjVQZFhRQUtnQUhFWklTQUFBQUFHdERSME52Ykc5eVEy
OWtaVVp5WVdkdFpXNTBURzl2YTNWd1ZHVjRkSFZ5ClpRQW5BQWNSa2hJQUFBRUFhME5IUTI5c2Iz
SkRiMlJsUm5KaFoyMWxiblJRWVhKaGJXVjBjbWxqQUI0QURCRlhFZ0FBQUFBQUFBQUEKY0hKbGMz
TmxaRk5vWVdSdmQwSnNkWElBS3dBTkViOFVBQUFBQUFBQUFBQmZhVzF3WDE5clEwZERiMnh2Y2xO
d1lXTmxSMlZ1WlhKcApZMGR5WVhrQUFBRHhBQUFBVmdBQUFDQUFEUkcvRkFBQUFBQUFBQUFBWDJs
dGNGOWZhME5IUTI5c2IzSlhhR2wwWlFBYUFBY1JqUklBCkFBS0EvdjlyUTBkR2IyNTBTVzVrWlho
TllYZ0FGZ0FIRVkwU0FBQUNnUDcvYTBOSFIyeDVjR2hOWVhnQUFBRHhBQUFBUlFNQUFDWUEKQnhH
SkVnQUFBQUJYUzAxbFpHbGhWVWxRWVhKMFJuVnNiSE5qY21WbGJrSjFkSFJ2YmdBZ0FBY1JpUklB
QUFFQVYwdE5aV1JwWVZWSgpVR0Z5ZEUxMWRHVkNkWFIwYjI0QUlBQUhFWWtTQUFBQ0FGZExUV1Zr
YVdGVlNWQmhjblJRYkdGNVFuVjBkRzl1QUNRQUJ4R0pFZ0FBCkF3QlhTMDFsWkdsaFZVbFFZWEow
VTJWbGEwSmhZMnRDZFhSMGIyNEFKd0FIRVlrU0FBQUVBRmRMVFdWa2FXRlZTVkJoY25SVFpXVnIK
Um05eWQyRnlaRUoxZEhSdmJnQXBBQWNSaVJJQUFBWUFWMHROWldScFlWVkpVR0Z5ZEZScGJXVnNh
VzVsVTJ4cFpHVnlWR2gxYldJQQpJZ0FIRVlrU0FBQUhBRmRMVFdWa2FXRlZTVkJoY25SU1pYZHBi
bVJDZFhSMGIyNEFLZ0FIRVlrU0FBQUlBRmRMVFdWa2FXRlZTVkJoCmNuUlRaV1ZyVkc5U1pXRnNk
R2x0WlVKMWRIUnZiZ0F1QUFjUmlSSUFBQWtBVjB0TlpXUnBZVlZKVUdGeWRGTm9iM2REYkc5elpX
UkQKWVhCMGFXOXVjMEoxZEhSdmJnQXVBQWNSaVJJQUFBb0FWMHROWldScFlWVkpVR0Z5ZEVocFpH
VkRiRzl6WldSRFlYQjBhVzl1YzBKMQpkSFJ2YmdBaUFBY1JpUklBQUFzQVYwdE5aV1JwWVZWSlVH
RnlkRlZ1VFhWMFpVSjFkSFJ2YmdBaEFBY1JpUklBQUF3QVYwdE5aV1JwCllWVkpVR0Z5ZEZCaGRY
TmxRblYwZEc5dUFDQUFCeEdKRWdBQURRQlhTMDFsWkdsaFZVbFFZWEowUW1GamEyZHliM1Z1WkFB
b0FBY1IKaVJJQUFBNEFWMHROWldScFlWVkpVR0Z5ZEVOMWNuSmxiblJVYVcxbFJHbHpjR3hoZVFB
cUFBY1JpUklBQUE4QVYwdE5aV1JwWVZWSgpVR0Z5ZEZScGJXVlNaVzFoYVc1cGJtZEVhWE53YkdG
NUFDc0FCeEdKRWdBQUVnQlhTMDFsWkdsaFZVbFFZWEowVm05c2RXMWxVMnhwClpHVnlRMjl1ZEdG
cGJtVnlBQ0lBQnhHSkVnQUFFd0JYUzAxbFpHbGhWVWxRWVhKMFZtOXNkVzFsVTJ4cFpHVnlBQ2NB
QnhHSkVnQUEKRkFCWFMwMWxaR2xoVlVsUVlYSjBWbTlzZFcxbFUyeHBaR1Z5VkdoMWJXSUFKZ0FI
RVRJUUFBQUJBRmRMVFdWa2FXRkRiMjUwY205cwpiR1Z5Um14aFowUnBjMkZpYkdWa0FDVUFCeEV5
RUFBQUFnQlhTMDFsWkdsaFEyOXVkSEp2Ykd4bGNrWnNZV2RRY21WemMyVmtBQ1VBCkJ4RXlFQUFB
RUFCWFMwMWxaR2xoUTI5dWRISnZiR3hsY2tac1lXZEdiMk4xYzJWa0FBQUFBUEVBQUFCTkFBQUFK
Z0FORVk4U0FBQUEKQUFBQUFBQmZhVzF3WDE5clEwWkJiR3h2WTJGMGIzSkVaV1poZFd4MEFDTUFE
UkdQRWdBQUFBQUFBQUFBWDJsdGNGOWZhME5HUVd4cwpiMk5oZEc5eVRuVnNiQUFBQUFEeEFBQUF4
UUFBQUJjQUJ4R25Gd0FBQUFCRFIxSmxZM1JOYVc1WVJXUm5aUUFYQUFjUnB4Y0FBQUVBClEwZFNa
V04wVFdsdVdVVmtaMlVBRndBSEVhY1hBQUFDQUVOSFVtVmpkRTFoZUZoRlpHZGxBQmNBQnhHbkZ3
QUFBd0JEUjFKbFkzUk4KWVhoWlJXUm5aUUFkQUEwUkN4QUFBQUFBQUFBQUFGOXBiWEJmWDBOSFUy
bDZaVnBsY204QUhRQU5FUTRRQUFBQUFBQUFBQUJmYVcxdwpYMTlEUjFKbFkzUmFaWEp2QUNFQURS
RU9FQUFBQUFBQUFBQUFYMmx0Y0Y5ZlEwZFNaV04wU1c1bWFXNXBkR1VBQUFBQThRQUFBTjBHCkFB
QVhBQWNSYkJjQUFBQUFhME5IVUVSR1RXVmthV0ZDYjNnQUZnQUhFV3dYQUFBQkFHdERSMUJFUmtO
eWIzQkNiM2dBRmdBSUVYQVMKQUFCRFJrUnBZM1JwYjI1aGNubFNaV1lBR0FBSUVlZ1FBQUJzYjJO
aGJHVnBibVp2WDNOMGNuVmpkQUFXQUFnUmxoY0FBRU5IUm05agpkWE5TYVc1blZHbHVkQUFPQUFn
UmRBQUFBR1Z5Y201dlgzUUFGUUFJRWVZUUFBQndkR2h5WldGa2JXSmphVzVtYndBUUFBZ1JVQklB
CkFFTkdSR0YwWVZKbFpnQU9BQWdSZFFBQUFISnphWHBsWDNRQURRQUlFWFVBQUFCVlNXNTBNeklB
RndBSUVhc1NBQUJmUTBkSmJuUmwKY201aGJFVnljbTl5QUM0QUNCRXFGd0FBVFdWa2FXRlRhR0Z5
WldSVlNWUnBiV1ZzYVc1bFUyeHBaR1Z5VkdoMWJXSkZiR1Z0Wlc1MApBQ0lBQ0JIMUZnQUFUV1Zr
YVdGVGFHRnlaV1JWU1VORFNXMWhaMlZGYkdWdFpXNTBBQlFBQ0JHRUZ3QUFRMGRIY21Ga2FXVnVk
RkpsClpnQVNBQWdSRmhBQUFFTkdVM1J5YVc1blVtVm1BQ1VBQ0JITUZnQUFUV1ZrYVdGVGFHRnla
V1JWU1VKaFkydG5jbTkxYm1SRmJHVnQKWlc1MEFCQUFDQkZ1RVFBQVEwWlVlWEJsVW1WbUFCTUFD
QkZtRndBQVEwZFFSRVpRWVdkbFVtVm1BQmNBQ0JHcEZ3QUFRMGROZFhSaApZbXhsVUdGMGFGSmxa
Z0FXQUFnUkVCRUFBRU5IUTI5c2IzSlRjR0ZqWlZKbFpnQVBBQWdSYkJjQUFFTkhVRVJHUW05NEFB
NEFDQkZBCkFBQUFRMGRHYkc5aGRBQVBBQWdSZFFBQUFIVnBiblF6TWw5MEFBd0FDQkVDRUFBQVRF
TmZTVVFBRXdBSUVTa1FBQUJEUjBOdmJuUmwKZUhSU1pXWUFMQUFJRVU0WEFBQk5aV1JwWVZOb1lY
SmxaRlZKVm05c2RXMWxVMnhwWkdWeVZHaDFiV0pGYkdWdFpXNTBBQTRBQ0JFSQpFQUFBUTBkUWIy
bHVkQUFPQUFnUkJSQUFBRU5HVW1GdVoyVUFIUUFJRVljU0FBQjBhSEpsWVdSc2IyTmhiR1ZwYm1a
dmMzUnlkV04wCkFCd0FDQkZlRndBQVRXVmthV0ZUYUdGeVpXUlZTVU52Ym5SeWIyeHpBQkFBQ0JH
eUZ3QUFRMGRRWVhSb1VtVm1BQkVBQ0JHQUVBQUEKUTBkSmJXRm5aVkpsWmdBY0FBZ1JXeEFBQUUx
bFpHbGhWVWxVYVcxbGJHbHVaVk5zYVdSbGNnQVFBQWdSNEJBQUFGOXNiMk5oYkdWZgpkQUFnQUFn
UlBCY0FBRTFsWkdsaFUyaGhjbVZrVlVsV2IyeDFiV1ZUYkdsa1pYSUFEUUFJRVNFQUFBQjNhVzUw
WDNRQURRQUlFZklRCkFBQmZhVzlpZFdZQUdBQUlFUTBSQUFCRFIwUmhkR0ZRY205MmFXUmxjbEps
WmdBUkFBZ1JweGNBQUVOSFVtVmpkRVZrWjJVQU1RQUkKRVFZWEFBQk5aV1JwWVZOb1lYSmxaRlZK
Vm05c2RXMWxVMnhwWkdWeVFtRmphMmR5YjNWdVpFVnNaVzFsYm5RQUVRQUlFWndYQUFCRApSMU4w
ZVd4bFVtVm1BQTRBQ0JFU0FBQUFRMFpKYm1SbGVBQWlBQWdSR0JjQUFFMWxaR2xoVTJoaGNtVmtW
VWxVYVcxbGJHbHVaVk5zCmFXUmxjZ0FiQUFnUkdoQUFBRU5HVTNSeWFXNW5TVzVzYVc1bFFuVm1a
bVZ5QUJjQUNCR2FGd0FBUTBkR2IyTjFjMUpwYm1kVGRIbHMKWlFBUUFBZ1JkUUFBQUZWVVJqTXlR
MmhoY2dBT0FBZ1JjQVFBQUhaaFgyeHBjM1FBRlFBSUVid1JBQUJEUmtGc2JHOWpZWFJ2Y2xKbApa
Z0FmQUFnUmRRQUFBRU5IUjNKaFpHbGxiblJFY21GM2FXNW5UM0IwYVc5dWN3QWFBQWdSbUJJQUFF
TkhVM1I1YkdWRWNtRjNUM0prClpYSnBibWNBRHdBSUVTSUFBQUJEUmxSNWNHVkpSQUFTQUFnUml4
Y0FBRU5IUW14bGJtUk5iMlJsQUJFQUNCRnRFZ0FBUTBkTVlYbGwKY2xKbFpnQVZBQWdSUmhBQUFF
MWxaR2xoVlVsRmJHVnRaVzUwQUEwQUNCRjFBQUFBYzJsNlpWOTBBQlFBQ0JGMkVBQUFUV1ZrYVdG
RApiMjUwY205c2N3QVBBQWdSQWhBQUFIUmhaMHhEWDBsRUFBNEFDQkVGRUFBQVEwWlNZVzVuWlFB
YkFBZ1JHaEFBQUVOR1UzUnlhVzVuClNXNXNhVzVsUW5WbVptVnlBQlFBQ0JHSkVnQUFWMHROWldS
cFlWVkpVR0Z5ZEFBaUFBZ1JNaEFBQUZkTFRXVmthV0ZEYjI1MGNtOXMKYkdWeVZHaGxiV1ZUZEdG
MFpRQVhBQWdSWXhjQUFFTkhVRVJHUkc5amRXMWxiblJTWldZQURRQUlFUXNRQUFCRFIxTnBlbVVB
R0FBSQpFUkVRQUFCRFIwRm1abWx1WlZSeVlXNXpabTl5YlFBaUFBZ1JNaEFBQUZkTFRXVmthV0ZE
YjI1MGNtOXNiR1Z5VkdobGJXVlRkR0YwClpRQUxBQWdSOGhBQUFFWkpURVVBREFBSUVTQUFBQUJW
U1c1ME9BQU9BQWdSSVFBQUFGVnVhVU5vWVhJQUdnQUlFWmdYQUFCRFIwWnYKWTNWelVtbHVaMDl5
WkdWeWFXNW5BQkVBQ0JHMUV3QUFRMGREYjJ4dmNsSmxaZ0FWQUFnUjVCQUFBSEIwYUhKbFlXUnNi
Mk5wYm1adgpBQ0FBQ0JIbEZnQUFUV1ZrYVdGVGFHRnlaV1JWU1VsdFlXZGxSV3hsYldWdWRBQTJB
QWdSM0JZQUFFMWxaR2xoVTJoaGNtVmtWVWxKCmJXRm5aVVZzWlcxbGJuUTZPazFsWkdsaFZVbEpi
V0ZuWlVacGJHeE5iMlJsQUEwQUNCRU9FQUFBUTBkU1pXTjBBQUFBQVBRQUFBQlkKQ0FBQUFRQUFB
QkFCWE5iM29jOVMzNkFoM1RjRE1COE9VUUFBT2dBQUFCQUJNN21ITVFOV0t1alU4aTlMMzJrcGp3
QUFjd0FBQUJBQgpVK2Q5bk1KeHZCT2tZN2tpVFlGb1RRQUFyQUFBQUJBQkVxYXlTY0RNWVB2TUpO
M3BQUit5cWdBQTd3QUFBQkFCRFJGbllrTzRqdWo5CjhFT0hpekFKb1FBQUt3RUFBQkFCMDNBV2h0
WmVFbWRoWTE3dEROaXp0QUFBVXdFQUFCQUI0U1BKRkFITVMyNXJnRkF4YkZET3pnQUEKaFFFQUFC
QUJqS0NvanhNbHZWOTY2L0NtUVRyaTFnQUF0UUVBQUJBQnBJSmVDLzdvWDJpMCttRHdqV1ZhUVFB
QTZBRUFBQkFCMWU5QwpqVTQxMXQ2ZXRvSXY5MzFmeUFBQUdnSUFBQkFCUU5McEU2aTZpbTk4QnY2
YVhmcjI3QUFBVkFJQUFCQUJ2TENJdXY2V083VXk2ZHlKCldaNnhjd0FBaHdJQUFCQUI3Q01oSk8y
TktaRzRNNmdhdkNtYWtnQUF2Z0lBQUJBQmNabkFQSGRTM2hXK2dMeVJpTEM4UUFBQTd3SUEKQUJB
QmxUU2NOWjJnUzFDQnoyWGZnMEZwN0FBQUhRTUFBQkFCNzk1dGdybGdmT3VSbDEvdWo4Y3JXZ0FB
UHdNQUFCQUJvbkRMMVNXVgptMUVlZ2YwZHNVVVhCQUFBZFFNQUFCQUJVazBUVk5nTkdZandZdHVl
ZlQzUlNRQUFyQU1BQUJBQis2TXlQU3hQeUo0QlVybFpiWFk1CnpnQUEzUU1BQUJBQkFCaXkrM1dM
U1RWSnZZdkRPYlpJZlFBQUZBUUFBQkFCMEx6OVhHRVF2SnZ3cHdCVHNQU0JmUUFBV0FRQUFCQUIK
MzlPSGk4SnltaUh2WU0vVlgwcmtGQUFBblFRQUFCQUJ3RXJBQzNsak1GV04zRE1HUzFndU1nQUE5
d1FBQUJBQkNTNWRaT2VEWG5uUwpvWVdKOFRiQWdnQUFNZ1VBQUJBQmNRMTM3Z1dVY3oxNjdPbUlj
UEVVMkFBQWFnVUFBQkFCL0sxQzBhWHdDcnk4cFdpdmk5eVpiUUFBCm13VUFBQkFCTnlTQ3ppNGZ1
eW1ocmN0aitWVVhwQUFBMFFVQUFCQUIxdzRZSGlqVVRhcFFNZ0kvVWFjMDF3QUFDd1lBQUJBQkln
K0wKblVYendRNUcrNmlNRTVGcFhnQUFQd1lBQUJBQkM0VW5ZZkhMWnF0anR3S3JidlpPV1FBQWNR
WUFBQkFCdGlkaVE0VzFVdm9jSllZVQpWclBGWWdBQW9BWUFBQkFCQ1VnR0dPVDNxczkrbXN6NlJX
N0hEd0FBMWdZQUFCQUIxS0Zjd1NzRUk5WlhsNmlqOFRMdmNnQUFCQWNBCkFCQUJLQWl6bVhST2NK
SVA3NjNHa21Rd29RQUFPZ2NBQUJBQk5leGU0ekNHMW1Zb2pMdklBYlJTYUFBQWN3Y0FBQkFCR05H
eUV5eWcKZDZOanJNdWc4NFY5a3dBQXF3Y0FBQkFCNDJGUGZBOUZHTjRYdVhGMnVuazNLd0FBM0Fj
QUFCQUJCZHlZZFJkZGpyTW9CK05ranU1Lwp5Z0FBQ3dnQUFCQUJ0UTlmWm9TdHpXZTl6YkkzRGlI
K2lBQUFQZ2dBQUJBQkxxdjkwN2RqUDR3UDRZcU45MWtROUFBQWJnZ0FBQkFCCk1qNUErNVdERnl0
blJnNjA1Z09FdkFBQXRnZ0FBQkFCN0hsTUNicm9FUWFITGlWU0lSSUcxd0FBNlFnQUFCQUI5a1Fy
VW93SE5CQ2oKTmtad2pURFdDZ0FBSEFrQUFCQUJlbGZvaStyaG5zMFE2OXRhK0FmRGhBQUFkZ2tB
QUJBQkUvTE8xS3VkbStzYWtkcVZBdW04WUFBQQpxZ2tBQUJBQnovMmRNWncxODFOb1gzdUpQZ0tX
M3dBQTd3a0FBQkFCeWZ6VzJJbVFtMmlBVkNDOEM4TXFBQUFBSWdvQUFCQUJDbXAzCk9UaUErVDJx
NXVPWHlEMnNxQUFBV1FvQUFCQUJEL0dMR1NIY1hOdm1iWE5BM0NScXFnQUFpUW9BQUJBQnFsV2hk
N0ZjeGRJeWJ5cDQKK1g1SWRRQUF2Z29BQUJBQnBEdHN4VTJpL3ZiSWt6RXhSbnRjV0FBQUJ3c0FB
QkFCcWlNNk1ENGdiVmtzSXN5cEJBL1dBd0FBUXdzQQpBQkFCN09rNDBIaG9vK1E3QWxzdWJYYk53
QUFBZWdzQUFCQUJZRS9iL04wVkF1WXdmbGFPb3ZjTGJRQUFxZ3NBQUJBQjVpMTJQOVVVClFoeTZs
TC95cG1JdWZBQUEyZ3NBQUJBQmhPb2IyaWttdVR0OUN6RnZFdUhocGdBQURnd0FBQkFCOXROWGxv
TzQ5YlFkNmlacjNhbngKNUFBQVB3d0FBQkFCd0lLL3YrZVZMUHNsRG5LRmc1ZStxd0FBYnd3QUFC
QUJ4aEJBYTFnSXJIVklWVk9Ud3VuanlBQUFuZ3dBQUJBQgowODI3bUJHMVo0QWZ2ZmZpc1lFd2dR
QUExUXdBQUJBQmxxZFozeHV3ajZxelNtOVpBV3VBUkFBQUdRMEFBQkFCckFiRnpTUmxaNEtkCjFk
a1Q3Ym1YUndBQVRBMEFBQkFCKzZSY3FHbkZ6MDZsNjdIVDZldVU3d0FBa1EwQUFCQUJaeTgwTlVJ
UmFaQ2VZZ1dya3gzWTF3QUEKeFEwQUFCQUJxL25HSjEwaXpFOE9UVEw1WUsva3V3QUErZzBBQUJB
QmhWWC9HRnJyMG5KUGhNdkQra0I3YUFBQUt3NEFBQkFCc2JUYQo3M3I1RFlOZFRTNUtGWW9SdEFB
QVdnNEFBQkFCSFRjOVc5K1hTaHgzWnR4MzJNeU5aZ0FBa3c0QUFCQUI0bFF4QzlwYVFvVW5PdERH
Ck5maDl5UUFBMEE0QUFCQUJqdDVtQmdtelhTbU1OcVlLNGppNWtnQUFBZzhBQUJBQmNmTUdVUS83
L0pEN2hTNDF4L1lMZmdBQU5ROEEKQUJBQmhmc0UwSm1WWVppVnZvbWRrYjZoUWdBQVpROEFBQkFC
WkdRTzNZWlJVclRCRXJkNllrWjF6QUFBdlE4QUFCQUJzK2xvckZKcApKd090WnBpNmNlR2Jyd0FB
RHhBQUFCQUJ1eGlFZGZCdUo5WGVOOUV6NkhJS1dRQUFRUkFBQUJBQitaVm9wK1drTlNSL0ZqdmV0
RklFCmx3QUFjQkFBQUJBQmhJajN5TkhBbFVwYjVXM1pQbFJlaFFBQXFCQUFBQkFCZU1jbUNWNm1L
eGw1YkxKM0tWbWRoUUFBeXhBQUFCQUIKb0cyRWFQSk1MZTZBdmZvVVVtdHdJUUFBQVJFQUFCQUJX
ZnVOVTAzU0hoWUV3bGhPZDRQdjFnQUFSaEVBQUJBQnViWHV1MGt1NzlvOQpWNGZzZlhYVWxRQUFm
QkVBQUJBQnpNNWFrbVU2QkNXWUpaRVNmUHEySHdBQXNSRUFBQkFCNDkraytpQWFRMDh5Rmg1L1Z6
Yk9pQUFBCjR4RUFBQkFCY1I5VUxITG9peHlFTnEyZU4zTDZHd0FBS1JJQUFCQUJlai94RUVoRjBF
STlqWTlhKzVYZmVRQUFYQklBQUJBQlByaUcKWXhmRWw5eFp6N3hKcWpOS0xRQUFuaElBQUJBQkZo
RjVyT212RVlLNUNsdGdMNXRRTWdBQTVSSUFBQkFCd1BUeTFHOUVTWGR0RFFIbApQL2NGWXdBQUto
TUFBQkFCbGUwdUphQVhjbDdoaFhPalNLbE1wZ0FBOHdBQUFFSWZBQUFBWXpwY1lYQndiR1ZwYm5S
bGNtNWhiRnhwCmJtTnNkV1JsWEdOdmNtVm5jbUZ3YUdsamMxeGpaMlp2Ym5SMllYSnBZWFJwYjI1
ekxtZ0FZenBjWVhCd2JHVnBiblJsY201aGJGeHAKYm1Oc2RXUmxYR052Y21WbWIzVnVaR0YwYVc5
dVhHTm1ZMmhoY21GamRHVnljMlYwTG1nQVl6cGNZWEJ3YkdWcGJuUmxjbTVoYkZ4cApibU5zZFdS
bFhHTnZjbVZuY21Gd2FHbGpjMXhqWjJOdmJHOXlkSEpoYm5ObWIzSnRMbWdBWXpwY2NISnZaM0po
YlNCbWFXeGxjeUFvCmVEZzJLVnh0YVdOeWIzTnZablFnZG1semRXRnNJSE4wZFdScGJ5QTRYSFpq
WEdsdVkyeDFaR1ZjYldGMGFDNW9BR002WEdGd2NHeGwKYVc1MFpYSnVZV3hjYVc1amJIVmtaVnhq
YjNKbFozSmhjR2hwWTNOY1kyZGpiMnh2Y25Od1lXTmxjSEpwZG1GMFpTNW9BR002WEdGdwpjR3hs
YVc1MFpYSnVZV3hjYVc1amJIVmtaVnhoZG1GcGJHRmlhV3hwZEhrdWFBQmpPbHhoY0hCc1pXbHVk
R1Z5Ym1Gc1hHbHVZMngxClpHVmNZMjl5WldadmRXNWtZWFJwYjI1Y1kyWmxjbkp2Y2k1b0FHTTZY
R0Z3Y0d4bGFXNTBaWEp1WVd4Y2FXNWpiSFZrWlZ4aGRtRnAKYkdGaWFXeHBkSGxwYm5SbGNtNWhi
QzVvQUdNNlhHRndjR3hsYVc1MFpYSnVZV3hjYVc1amJIVmtaVnhqYjNKbFptOTFibVJoZEdsdgpi
bHhqWm5OMGNtbHVaeTVvQUdNNlhHRndjR3hsYVc1MFpYSnVZV3hjYVc1amJIVmtaVnhqYjNKbFpt
OTFibVJoZEdsdmJseGpabUZ5CmNtRjVMbWdBWXpwY1lYQndiR1ZwYm5SbGNtNWhiRnhwYm1Oc2RX
UmxYR052Y21WbmNtRndhR2xqYzF4aloyRm1abWx1WlhSeVlXNXoKWm05eWJTNW9BR002WEdGd2NH
eGxhVzUwWlhKdVlXeGNhVzVqYkhWa1pWeGpiM0psWjNKaGNHaHBZM05jWTJkblpXOXRaWFJ5ZVM1
bwpBR002WEdGd2NHeGxhVzUwWlhKdVlXeGNhVzVqYkhWa1pWeGpiM0psWm05MWJtUmhkR2x2Ymx4
alptUnBZM1JwYjI1aGNua3VhQUJqCk9seGhjSEJzWldsdWRHVnlibUZzWEdsdVkyeDFaR1ZjWTI5
eVpXWnZkVzVrWVhScGIyNWNZMlppWVhObExtZ0FZenBjWVhCd2JHVnAKYm5SbGNtNWhiRnhwYm1O
c2RXUmxYSFJoY21kbGRHTnZibVJwZEdsdmJtRnNjeTVvQUdNNlhHRndjR3hsYVc1MFpYSnVZV3hj
YVc1agpiSFZrWlZ4emRHUnBiblF1YUFCak9seGhjSEJzWldsdWRHVnlibUZzWEdsdVkyeDFaR1Zj
WTI5eVpXZHlZWEJvYVdOelhHTm5ZbUZ6ClpYQnlhWFpoZEdVdWFBQmpPbHhoY0hCc1pXbHVkR1Z5
Ym1Gc1hHbHVZMngxWkdWY1kyOXlaV2R5WVhCb2FXTnpYR05uWTI5dWRHVjQKZEdsdFlXZGxMbWdB
WXpwY1lYQndiR1ZwYm5SbGNtNWhiRnhwYm1Oc2RXUmxYR052Y21WbmNtRndhR2xqYzF4aloyTnll
WEIwYnk1bwpBR002WEdGd2NHeGxhVzUwWlhKdVlXeGNhVzVqYkhWa1pWeGpiM0psWjNKaGNHaHBZ
M05jWTJkMFpYaDBZMnhwY0hCcGJtY3VhQUJqCk9seHdjbTluY21GdElHWnBiR1Z6SUNoNE9EWXBY
RzFwWTNKdmMyOW1kQ0IyYVhOMVlXd2djM1IxWkdsdklEaGNkbU5jYVc1amJIVmsKWlZ4emRHUnBi
eTVvQUdNNlhIQnliMmR5WVcwZ1ptbHNaWE1nS0hnNE5pbGNiV2xqY205emIyWjBJSFpwYzNWaGJD
QnpkSFZrYVc4ZwpPRngyWTF4cGJtTnNkV1JsWEd4cGJXbDBjeTVvQUdNNlhHTjVaM2RwYmx4b2Iy
MWxYR050WVhKeWFXNWNjMjkxY21ObFhITjJibHgzClpXSnJhWFJjYVc1MFpYSnVZV3hjZDJWaWEy
bDBjM2x6ZEdWdGFXNTBaWEptWVdObFhITm9ZWEpsWkcxbFpHbGhkV2t1WTNCd0FHTTYKWEdGd2NH
eGxhVzUwWlhKdVlXeGNhVzVqYkhWa1pWeGpiM0psWjNKaGNHaHBZM05jWTJkbWIyNTBaMng1Y0do
emRYQndiM0owTG1nQQpZenBjWVhCd2JHVnBiblJsY201aGJGeHBibU5zZFdSbFhHTnZjbVZuY21G
d2FHbGpjMXhqWjJadmJuUnlaVzVrWlhKcGJtY3VhQUJqCk9seGhjSEJzWldsdWRHVnlibUZzWEds
dVkyeDFaR1ZjWTI5eVpXZHlZWEJvYVdOelhHTm5aM04wWVhSbExtZ0FZenBjWVhCd2JHVnAKYm5S
bGNtNWhiRnhwYm1Oc2RXUmxYR052Y21WbmNtRndhR2xqYzF4alozQmtabVJ2WTNWdFpXNTBMbWdB
WXpwY1lYQndiR1ZwYm5SbApjbTVoYkZ4cGJtTnNkV1JsWEdOdmNtVm5jbUZ3YUdsamMxeGpaMk52
Ym5SbGVIUmtaV3hsWjJGMFpTNW9BR002WEdGd2NHeGxhVzUwClpYSnVZV3hjYVc1amJIVmtaVnhq
YjNKbFozSmhjR2hwWTNOY1kyZGpiR2x3YzNSaFkyc3VhQUJqT2x4aGNIQnNaV2x1ZEdWeWJtRnMK
WEdsdVkyeDFaR1ZjWTI5eVpXZHlZWEJvYVdOelhHTm5jR1JtY0dGblpTNW9BR002WEdGd2NHeGxh
VzUwWlhKdVlXeGNhVzVqYkhWawpaVnhqYjNKbFozSmhjR2hwWTNOY1kyZHdZWFJvTG1nQVl6cGNZ
WEJ3YkdWcGJuUmxjbTVoYkZ4cGJtTnNkV1JsWEdOdmNtVm5jbUZ3CmFHbGpjMXhqWjJScGMzQnNZ
WGxzYVhOMExtZ0FZenBjWVhCd2JHVnBiblJsY201aGJGeHBibU5zZFdSbFhHRjJZV2xzWVdKcGJH
bDAKZVcxaFkzSnZjeTVvQUdNNlhHRndjR3hsYVc1MFpYSnVZV3hjYVc1amJIVmtaVnhqYjNKbFoz
SmhjR2hwWTNOY1kyZGpiMjUwWlhoMApjR0YwYUM1b0FHTTZYR0Z3Y0d4bGFXNTBaWEp1WVd4Y2FX
NWpiSFZrWlZ4amIzSmxaM0poY0docFkzTmNZMmR5Wlc1a1pYSnBibWR6CmRHRjBaUzVvQUdNNlhH
RndjR3hsYVc1MFpYSnVZV3hjYVc1amJIVmtaVnhqYjNKbFozSmhjR2hwWTNOY1kyZHdaR1prYVdO
MGFXOXUKWVhKNUxtZ0FZenBjWVhCd2JHVnBiblJsY201aGJGeHBibU5zZFdSbFhHTnZjbVZuY21G
d2FHbGpjMXhqWjNOMGVYQmxjeTVvQUdNNgpYR0Z3Y0d4bGFXNTBaWEp1WVd4Y2FXNWpiSFZrWlZ4
amIzSmxaM0poY0docFkzTmNZMmRqYkdsd0xtZ0FZenBjWVhCd2JHVnBiblJsCmNtNWhiRnhwYm1O
c2RXUmxYR052Y21WbmNtRndhR2xqYzF4alozTnZablJ0WVhOckxtZ0FZenBjWVhCd2JHVnBiblJs
Y201aGJGeHAKYm1Oc2RXUmxYR052Y21WbmNtRndhR2xqYzF4aloyVnljbTl5TG1nQVl6cGNjSEp2
WjNKaGJTQm1hV3hsY3lBb2VEZzJLVnh0YVdOeQpiM052Wm5RZ2RtbHpkV0ZzSUhOMGRXUnBieUE0
WEhaalhHbHVZMngxWkdWY2MzbHpYSFI1Y0dWekxtZ0FZenBjWVhCd2JHVnBiblJsCmNtNWhiRnhw
Ym1Oc2RXUmxYR052Y21WbmNtRndhR2xqYzF4alozQmtabUZ5Y21GNUxtZ0FZenBjWVhCd2JHVnBi
blJsY201aGJGeHAKYm1Oc2RXUmxYR052Y21WbmNtRndhR2xqYzF4aloyZHlZV1JwWlc1MExtZ0FZ
enBjWTNsbmQybHVYR2h2YldWY1kyMWhjbkpwYmx4MwpaV0pyYVhSaWRXbHNaRnh2WW1wY2QyVmlh
MmwwYzNsemRHVnRhVzUwWlhKbVlXTmxYR1JsY21sMlpXUnpiM1Z5WTJWelhHMWxaR2xoCmFXMWha
MlZ6TG1nQVl6cGNZWEJ3YkdWcGJuUmxjbTVoYkZ4cGJtTnNkV1JsWEdOdmNtVm5jbUZ3YUdsamMx
eGpaM0JrWm05aWFtVmoKZEM1b0FHTTZYSEJ5YjJkeVlXMGdabWxzWlhNZ0tIZzROaWxjYldsamNt
OXpiMlowSUhacGMzVmhiQ0J6ZEhWa2FXOGdPRngyWTF4cApibU5zZFdSbFhITjBaR0Z5Wnk1b0FH
TTZYR0Z3Y0d4bGFXNTBaWEp1WVd4Y2FXNWpiSFZrWlZ4amIzSmxaM0poY0docFkzTmNZMmRqCmJH
bHdiV0Z6YXk1b0FHTTZYR0Z3Y0d4bGFXNTBaWEp1WVd4Y2FXNWpiSFZrWlZ4amIzSmxaM0poY0do
cFkzTmNZMmRrWVhSaFkyOXUKYzNWdFpYSXVhQUJqT2x4aGNIQnNaV2x1ZEdWeWJtRnNYR2x1WTJ4
MVpHVmNZMjl5WldkeVlYQm9hV056WEdOblkyOXNiM0l1YUFCagpPbHhoY0hCc1pXbHVkR1Z5Ym1G
c1hHbHVZMngxWkdWY1kyOXlaV2R5WVhCb2FXTnpYR05uWTI5c2IzSnpjR0ZqWlM1b0FHTTZYSEJ5
CmIyZHlZVzBnWm1sc1pYTWdLSGc0TmlsY2JXbGpjbTl6YjJaMElIWnBjM1ZoYkNCemRIVmthVzhn
T0Z4MlkxeHBibU5zZFdSbFhITjMKY0hKcGJuUm1MbWx1YkFCak9seGhjSEJzWldsdWRHVnlibUZz
WEdsdVkyeDFaR1ZjWTI5eVpXZHlZWEJvYVdOelhHTm5ZMjlzYjNKagpiMlJsWm5KaFoyMWxiblF1
YUFCak9seGhjSEJzWldsdWRHVnlibUZzWEdsdVkyeDFaR1ZjWTI5eVpXZHlZWEJvYVdOelhHTm5a
R0YwCllYQnliM1pwWkdWeUxtZ0FZenBjWVhCd2JHVnBiblJsY201aGJGeHBibU5zZFdSbFhHTnZj
bVZuY21Gd2FHbGpjMXhqWjJsdFlXZGwKTG1nQVl6cGNZWEJ3YkdWcGJuUmxjbTVoYkZ4cGJtTnNk
V1JsWEdOdmNtVm1iM1Z1WkdGMGFXOXVYR05tZFhKc0xtZ0FZenBjWVhCdwpiR1ZwYm5SbGNtNWhi
RnhwYm1Oc2RXUmxYR052Y21WbmNtRndhR2xqYzF4alozQmtabk4wY21WaGJTNW9BR002WEdGd2NH
eGxhVzUwClpYSnVZV3hjYVc1amJIVmtaVnhqYjNKbFptOTFibVJoZEdsdmJseGpabVJoZEdFdWFB
QmpPbHhoY0hCc1pXbHVkR1Z5Ym1Gc1hHbHUKWTJ4MVpHVmNZMjl5WldkeVlYQm9hV056WEdObmMz
UjViR1V1YUFCak9seGhjSEJzWldsdWRHVnlibUZzWEdsdVkyeDFaR1ZjWTI5eQpaV2R5WVhCb2FX
TnpYR05uWm05dWRDNW9BR002WEdGd2NHeGxhVzUwWlhKdVlXeGNhVzVqYkhWa1pWeGpiM0psWjNK
aGNHaHBZM05jClkyZGpiMnh2Y25CeWFYWmhkR1V1YUFCak9seHdjbTluY21GdElHWnBiR1Z6SUNo
NE9EWXBYRzFwWTNKdmMyOW1kQ0IyYVhOMVlXd2cKYzNSMVpHbHZJRGhjZG1OY2FXNWpiSFZrWlZ4
bWJHOWhkQzVvQUdNNlhHRndjR3hsYVc1MFpYSnVZV3hjYVc1amJIVmtaVnhqYjNKbApabTkxYm1S
aGRHbHZibHhqWm14dlkyRnNaUzVvQUdNNlhIQnliMmR5WVcwZ1ptbHNaWE1nS0hnNE5pbGNiV2xq
Y205emIyWjBJSFpwCmMzVmhiQ0J6ZEhWa2FXOGdPRngyWTF4cGJtTnNkV1JsWEdOeWRIZHliaTVv
QUdNNlhHRndjR3hsYVc1MFpYSnVZV3hjYVc1amJIVmsKWlZ4amIzSmxaM0poY0docFkzTmNZMmR3
WkdaemRISnBibWN1YUFCak9seGhjSEJzWldsdWRHVnlibUZzWEdsdVkyeDFaR1ZjWTI5eQpaV2R5
WVhCb2FXTnpYR05uWTJ4cGNITjBjbTlyWlM1b0FHTTZYR0Z3Y0d4bGFXNTBaWEp1WVd4Y2FXNWpi
SFZrWlZ4amIzSmxabTkxCmJtUmhkR2x2Ymx4alptUmhkR1V1YUFCak9seGhjSEJzWldsdWRHVnli
bUZzWEdsdVkyeDFaR1ZjWTI5eVpXZHlZWEJvYVdOelhHTm4KWkdGemFDNW9BR002WEdGd2NHeGxh
VzUwWlhKdVlXeGNhVzVqYkhWa1pWeGpiM0psWjNKaGNHaHBZM05jWTJkamIyNTBaWGgwY0hKcApk
bUYwWlM1b0FHTTZYR0Z3Y0d4bGFXNTBaWEp1WVd4Y2FXNWpiSFZrWlZ4amIzSmxaM0poY0docFkz
TmNZMmR1YjNScFptbGpZWFJwCmIyNWpaVzUwWlhJdWFBQmpPbHhoY0hCc1pXbHVkR1Z5Ym1Gc1hH
bHVZMngxWkdWY1kyOXlaV2R5WVhCb2FXTnpYR05uYzJoaFpHbHUKWnk1b0FHTTZYR0Z3Y0d4bGFX
NTBaWEp1WVd4Y2FXNWpiSFZrWlZ4amIzSmxaM0poY0docFkzTmNZMmRtZFc1amRHbHZiaTVvQUdN
NgpYR0Z3Y0d4bGFXNTBaWEp1WVd4Y2FXNWpiSFZrWlZ4amIzSmxaM0poY0docFkzTmNZMmRzWVhs
bGNpNW9BR002WEdONVozZHBibHhvCmIyMWxYR050WVhKeWFXNWNjMjkxY21ObFhITjJibHgzWldK
cmFYUmNhVzUwWlhKdVlXeGNkMlZpYTJsMGMzbHpkR1Z0YVc1MFpYSm0KWVdObFhITm9ZWEpsWkcx
bFpHbGhkV2t1YUFCak9seGplV2QzYVc1Y2FHOXRaVnhqYldGeWNtbHVYSE52ZFhKalpWeHpkbTVj
ZDJWaQphMmwwWEdsdWRHVnlibUZzWEhkbFltdHBkSE41YzNSbGJXbHVkR1Z5Wm1GalpWeHRaV1Jw
WVhWcExtZ0FZenBjWVhCd2JHVnBiblJsCmNtNWhiRnhwYm1Oc2RXUmxYR052Y21WbmNtRndhR2xq
YzF4aloyTnZiblJsZUhRdWFBQmpPbHhoY0hCc1pXbHVkR1Z5Ym1Gc1hHbHUKWTJ4MVpHVmNZMjl5
WldkeVlYQm9hV056WEdOblltRnpaUzVvQUdNNlhHRndjR3hsYVc1MFpYSnVZV3hjYVc1amJIVmta
VnhqYjNKbApaM0poY0docFkzTmNZMmRqYjI1MFpYaDBaM04wWVhSbExtZ0FZenBjWVhCd2JHVnBi
blJsY201aGJGeHBibU5zZFdSbFhITjBaR0p2CmIyd3VhQUJqT2x4aGNIQnNaV2x1ZEdWeWJtRnNY
R2x1WTJ4MVpHVmNZMjl5WldkeVlYQm9hV056WEdOblptOXVkSEJ5YVhaaGRHVXUKYUFCak9seHdj
bTluY21GdElHWnBiR1Z6SUNoNE9EWXBYRzFwWTNKdmMyOW1kQ0IyYVhOMVlXd2djM1IxWkdsdklE
aGNkbU5jYVc1agpiSFZrWlZ4emRHUmtaV1l1YUFCak9seGhjSEJzWldsdWRHVnlibUZzWEdsdVky
eDFaR1ZjWTI5eVpXZHlZWEJvYVdOelhHTm5ZMjl1CmRHVjRkSFJsZUhRdWFBQmpPbHhoY0hCc1pX
bHVkR1Z5Ym1Gc1hHbHVZMngxWkdWY1kyOXlaV2R5WVhCb2FXTnpYR05uWm05dWRHTnkKWldGMFpT
NW9BR002WEdGd2NHeGxhVzUwWlhKdVlXeGNhVzVqYkhWa1pWeGpiM0psWjNKaGNHaHBZM05jWTJk
d1lYUjBaWEp1TG1nQQpZenBjY0hKdlozSmhiU0JtYVd4bGN5QW9lRGcyS1Z4dGFXTnliM052Wm5R
Z2RtbHpkV0ZzSUhOMGRXUnBieUE0WEhaalhHbHVZMngxClpHVmNZM0owWkdWbWN5NW9BR002WEdG
d2NHeGxhVzUwWlhKdVlXeGNhVzVqYkhWa1pWeGpiM0psWjNKaGNHaHBZM05jWTJkbWIyNTAKYVc1
bWJ5NW9BR002WEhCeWIyZHlZVzBnWm1sc1pYTWdLSGc0TmlsY2JXbGpjbTl6YjJaMElIWnBjM1Zo
YkNCemRIVmthVzhnT0Z4MgpZMXhwYm1Oc2RXUmxYSE5oYkM1b0FHTTZYSEJ5YjJkeVlXMGdabWxz
WlhNZ0tIZzROaWxjYldsamNtOXpiMlowSUhacGMzVmhiQ0J6CmRIVmthVzhnT0Z4MlkxeHBibU5z
ZFdSbFhHTnlkR0Z6YzJWdExtZ0FZenBjY0hKdlozSmhiU0JtYVd4bGN5QW9lRGcyS1Z4dGFXTnkK
YjNOdlpuUWdkbWx6ZFdGc0lITjBkV1JwYnlBNFhIWmpYR2x1WTJ4MVpHVmNkbUZrWldaekxtZ0FZ
enBjWVhCd2JHVnBiblJsY201aApiRnhwYm1Oc2RXUmxYR052Y21WbmNtRndhR2xqYzF4aloyTnZi
bVpwWnk1b0FDUlVNaUFrWlhOd0lDNWpZa3h2WTJGc2N5QXJJQzVqCllsTmhkbVZrVW1WbmN5QXJJ
RDBnSkZRd0lDNXlZVk5sWVhKamFGTjBZWEowSUQwZ0pHVnBjQ0FrVkRBZ1hpQTlJQ1JsYzNBZ0pG
UXcKSURRZ0t5QTlBQ1JVTWlBa1pYTndJQzVqWWt4dlkyRnNjeUFySUM1allsTmhkbVZrVW1WbmN5
QXJJRDBnSkZRd0lDNXlZVk5sWVhKagphRk4wWVhKMElEMGdKR1ZwY0NBa1ZEQWdYaUE5SUNSbGMz
QWdKRlF3SURRZ0t5QTlJQ1JsWW5nZ0pGUXdJRGsySUMwZ1hpQTlBQ1JVCk1pQWtaWE53SUM1allr
eHZZMkZzY3lBcklDNWpZbE5oZG1Wa1VtVm5jeUFySUQwZ0pGUXdJQzV5WVZObFlYSmphRk4wWVhK
MElEMGcKSkdWcGNDQWtWREFnWGlBOUlDUmxjM0FnSkZRd0lEUWdLeUE5SUNSbFluQWdKRlF3SURF
d01DQXRJRjRnUFNBa1pXSjRJQ1JVTUNBNQpOaUF0SUY0Z1BRQWtWRElnSkdWemNDQXVZMkpNYjJO
aGJITWdLeUF1WTJKVFlYWmxaRkpsWjNNZ0t5QTlJQ1JVTUNBdWNtRlRaV0Z5ClkyaFRkR0Z5ZENB
OUlDUmxhWEFnSkZRd0lGNGdQU0FrWlhOd0lDUlVNQ0EwSUNzZ1BTQWtaV0o0SUNSVU1DQTNNaUF0
SUY0Z1BRQWsKVkRJZ0pHVnpjQ0F1WTJKTWIyTmhiSE1nS3lBdVkySlRZWFpsWkZKbFozTWdLeUE5
SUNSVU1DQXVjbUZUWldGeVkyaFRkR0Z5ZENBOQpJQ1JsYVhBZ0pGUXdJRjRnUFNBa1pYTndJQ1JV
TUNBMElDc2dQU0FrWldKd0lDUlVNQ0EzTmlBdElGNGdQU0FrWldKNElDUlVNQ0EzCk1pQXRJRjRn
UFFBa1ZESWdKR1Z6Y0NBdVkySk1iMk5oYkhNZ0t5QXVZMkpUWVhabFpGSmxaM01nS3lBOUlDUlVN
Q0F1Y21GVFpXRnkKWTJoVGRHRnlkQ0E5SUNSbGFYQWdKRlF3SUY0Z1BTQWtaWE53SUNSVU1DQTBJ
Q3NnUFNBa1pXSjRJQ1JVTUNBMk9DQXRJRjRnUFFBawpWRElnSkdWemNDQXVZMkpNYjJOaGJITWdL
eUF1WTJKVFlYWmxaRkpsWjNNZ0t5QTlJQ1JVTUNBdWNtRlRaV0Z5WTJoVGRHRnlkQ0E5CklDUmxh
WEFnSkZRd0lGNGdQU0FrWlhOd0lDUlVNQ0EwSUNzZ1BTQWtaV0p3SUNSVU1DQTNNaUF0SUY0Z1BT
QWtaV0o0SUNSVU1DQTIKT0NBdElGNGdQUUFrVkRJZ0pHVnpjQ0F1WTJKTWIyTmhiSE1nS3lBdVky
SlRZWFpsWkZKbFozTWdLeUE5SUNSVU1DQXVjbUZUWldGeQpZMmhUZEdGeWRDQTlJQ1JsYVhBZ0pG
UXdJRjRnUFNBa1pYTndJQ1JVTUNBMElDc2dQU0FrWldKNElDUlVNQ0EwT0NBdElGNGdQUUFrClZE
SWdKR1Z6Y0NBdVkySk1iMk5oYkhNZ0t5QXVZMkpUWVhabFpGSmxaM01nS3lBOUlDUlVNQ0F1Y21G
VFpXRnlZMmhUZEdGeWRDQTkKSUNSbGFYQWdKRlF3SUY0Z1BTQWtaWE53SUNSVU1DQTBJQ3NnUFNB
a1pXSjRJQ1JVTUNBME1DQXRJRjRnUFFBa1ZESWdKR1Z6Y0NBdQpZMkpNYjJOaGJITWdLeUF1WTJK
VFlYWmxaRkpsWjNNZ0t5QTlJQ1JVTUNBdWNtRlRaV0Z5WTJoVGRHRnlkQ0E5SUNSbGFYQWdKRlF3
CklGNGdQU0FrWlhOd0lDUlVNQ0EwSUNzZ1BTQWtaV0p3SUNSVU1DQTBOQ0F0SUY0Z1BTQWtaV0o0
SUNSVU1DQTBNQ0F0SUY0Z1BRQWsKVkRJZ0pHVnpjQ0F1WTJKTWIyTmhiSE1nS3lBdVkySlRZWFps
WkZKbFozTWdLeUE5SUNSVU1DQXVjbUZUWldGeVkyaFRkR0Z5ZENBOQpJQ1JsYVhBZ0pGUXdJRjRn
UFNBa1pYTndJQ1JVTUNBMElDc2dQU0FrWldKNElDUlVNQ0F4TmlBdElGNGdQUUFrVkRJZ0pHVnpj
Q0F1ClkySk1iMk5oYkhNZ0t5QXVZMkpUWVhabFpGSmxaM01nS3lBOUlDUlVNQ0F1Y21GVFpXRnlZ
MmhUZEdGeWRDQTlJQ1JsYVhBZ0pGUXcKSUY0Z1BTQWtaWE53SUNSVU1DQTBJQ3NnUFNBa1pXSndJ
Q1JVTUNBeU1DQXRJRjRnUFNBa1pXSjRJQ1JVTUNBeE5pQXRJRjRnUFFBawpWRElnSkdWemNDQXVZ
MkpNYjJOaGJITWdLeUF1WTJKVFlYWmxaRkpsWjNNZ0t5QTlJQ1JVTUNBdWNtRlRaV0Z5WTJoVGRH
RnlkQ0E5CklDUmxhWEFnSkZRd0lGNGdQU0FrWlhOd0lDUlVNQ0EwSUNzZ1BTQWtaV0o0SUNSVU1D
QXlPQ0F0SUY0Z1BRQWtWRElnSkdWemNDQXUKWTJKTWIyTmhiSE1nS3lBdVkySlRZWFpsWkZKbFoz
TWdLeUE5SUNSVU1DQXVjbUZUWldGeVkyaFRkR0Z5ZENBOUlDUmxhWEFnSkZRdwpJRjRnUFNBa1pY
TndJQ1JVTUNBMElDc2dQU0FrWldKd0lDUlVNQ0F6TWlBdElGNGdQU0FrWldKNElDUlVNQ0F5T0NB
dElGNGdQUUFrClZESWdKR1Z6Y0NBdVkySk1iMk5oYkhNZ0t5QXVZMkpUWVhabFpGSmxaM01nS3lB
OUlDUlVNQ0F1Y21GVFpXRnlZMmhUZEdGeWRDQTkKSUNSbGFYQWdKRlF3SUY0Z1BTQWtaWE53SUNS
VU1DQTBJQ3NnUFNBa1pXSjRJQ1JVTUNBeU5DQXRJRjRnUFFBa1ZESWdKR1Z6Y0NBdQpZMkpNYjJO
aGJITWdLeUF1WTJKVFlYWmxaRkpsWjNNZ0t5QTlJQ1JVTUNBdWNtRlRaV0Z5WTJoVGRHRnlkQ0E5
SUNSbGFYQWdKRlF3CklGNGdQU0FrWlhOd0lDUlVNQ0EwSUNzZ1BTQWtaV0p3SUNSVU1DQXlPQ0F0
SUY0Z1BTQWtaV0o0SUNSVU1DQXlOQ0F0SUY0Z1BRQWsKVkRJZ0pHVnpjQ0F1WTJKTWIyTmhiSE1n
S3lBdVkySlRZWFpsWkZKbFozTWdLeUE5SUNSVU1DQXVjbUZUWldGeVkyaFRkR0Z5ZENBOQpJQ1Js
YVhBZ0pGUXdJRjRnUFNBa1pYTndJQ1JVTUNBMElDc2dQU0FrWldKNElDUlVNQ0EwSUMwZ1hpQTlB
Q1JVTWlBa1pYTndJQzVqCllreHZZMkZzY3lBcklDNWpZbE5oZG1Wa1VtVm5jeUFySUQwZ0pGUXdJ
QzV5WVZObFlYSmphRk4wWVhKMElEMGdKR1ZwY0NBa1ZEQWcKWGlBOUlDUmxjM0FnSkZRd0lEUWdL
eUE5SUNSbFluQWdKRlF3SURnZ0xTQmVJRDBnSkdWaWVDQWtWREFnTkNBdElGNGdQUUFrVkRJZwpK
R1Z6Y0NBdVkySk1iMk5oYkhNZ0t5QXVZMkpUWVhabFpGSmxaM01nS3lBOUlDUlVNQ0F1Y21GVFpX
RnlZMmhUZEdGeWRDQTlJQ1JsCmFYQWdKRlF3SUY0Z1BTQWtaWE53SUNSVU1DQTBJQ3NnUFNBa1pX
SjRJQ1JVTUNBMU1pQXRJRjRnUFFBa1ZESWdKR1Z6Y0NBdVkySk0KYjJOaGJITWdLeUF1WTJKVFlY
WmxaRkpsWjNNZ0t5QTlJQ1JVTUNBdWNtRlRaV0Z5WTJoVGRHRnlkQ0E5SUNSbGFYQWdKRlF3SUY0
ZwpQU0FrWlhOd0lDUlVNQ0EwSUNzZ1BTQWtaV0p3SUNSVU1DQTFOaUF0SUY0Z1BTQWtaV0o0SUNS
VU1DQTFNaUF0SUY0Z1BRQWtWRElnCkpHVnpjQ0F1WTJKTWIyTmhiSE1nS3lBdVkySlRZWFpsWkZK
bFozTWdLeUE5SUNSVU1DQXVjbUZUWldGeVkyaFRkR0Z5ZENBOUlDUmwKYVhBZ0pGUXdJRjRnUFNB
a1pYTndJQ1JVTUNBMElDc2dQU0FrWldKNElDUlVNQ0EyTkNBdElGNGdQUUFrVkRJZ0pHVnpjQ0F1
WTJKTQpiMk5oYkhNZ0t5QXVZMkpUWVhabFpGSmxaM01nS3lBOUlDUlVNQ0F1Y21GVFpXRnlZMmhU
ZEdGeWRDQTlJQ1JsYVhBZ0pGUXdJRjRnClBTQWtaWE53SUNSVU1DQTBJQ3NnUFNBa1pXSndJQ1JV
TUNBMk9DQXRJRjRnUFNBa1pXSjRJQ1JVTUNBMk5DQXRJRjRnUFFBa1ZESWcKSkdWemNDQXVZMkpN
YjJOaGJITWdLeUF1WTJKVFlYWmxaRkpsWjNNZ0t5QTlJQ1JVTUNBdWNtRlRaV0Z5WTJoVGRHRnlk
Q0E5SUNSbAphWEFnSkZRd0lGNGdQU0FrWlhOd0lDUlVNQ0EwSUNzZ1BTQWtaV0p3SUNSVU1DQTFN
aUF0SUY0Z1BTQWtaV0o0SUNSVU1DQTBPQ0F0CklGNGdQUUFrVkRJZ0pHVnpjQ0F1WTJKTWIyTmhi
SE1nS3lBdVkySlRZWFpsWkZKbFozTWdLeUE5SUNSVU1DQXVjbUZUWldGeVkyaFQKZEdGeWRDQTlJ
Q1JsYVhBZ0pGUXdJRjRnUFNBa1pYTndJQ1JVTUNBMElDc2dQU0FrWldKNElDUlVNQ0F6TmlBdElG
NGdQUUFrVkRJZwpKR1Z6Y0NBdVkySk1iMk5oYkhNZ0t5QXVZMkpUWVhabFpGSmxaM01nS3lBOUlD
UlVNQ0F1Y21GVFpXRnlZMmhUZEdGeWRDQTlJQ1JsCmFYQWdKRlF3SUY0Z1BTQWtaWE53SUNSVU1D
QTBJQ3NnUFNBa1pXSndJQ1JVTUNBME1DQXRJRjRnUFNBa1pXSjRJQ1JVTUNBek5pQXQKSUY0Z1BR
QWtWRElnSkdWemNDQXVZMkpNYjJOaGJITWdLeUF1WTJKVFlYWmxaRkpsWjNNZ0t5QTlJQ1JVTUNB
dWNtRlRaV0Z5WTJoVApkR0Z5ZENBOUlDUmxhWEFnSkZRd0lGNGdQU0FrWlhOd0lDUlVNQ0EwSUNz
Z1BTQWtaV0o0SUNSVU1DQTRJQzBnWGlBOUFDUlVNaUFrClpYTndJQzVqWWt4dlkyRnNjeUFySUM1
allsTmhkbVZrVW1WbmN5QXJJRDBnSkZRd0lDNXlZVk5sWVhKamFGTjBZWEowSUQwZ0pHVnAKY0NB
a1ZEQWdYaUE5SUNSbGMzQWdKRlF3SURRZ0t5QTlJQ1JsWW5BZ0pGUXdJREV5SUMwZ1hpQTlJQ1Js
WW5nZ0pGUXdJRGdnTFNCZQpJRDBBQUFETURBQUFIUUFBQUFzQTBBd0FBQjBBQUFBS0FEZ05BQUFl
QUFBQUN3QThEUUFBSGdBQUFBb0FvZzBBQUI4QUFBQUxBS1lOCkFBQWZBQUFBQ2dBTURnQUFJQUFB
QUFzQUVBNEFBQ0FBQUFBS0FLY09BQUFoQUFBQUN3Q3JEZ0FBSVFBQUFBb0FDdzhBQUNJQUFBQUwK
QUE4UEFBQWlBQUFBQ2dCdER3QUFJd0FBQUFzQWNROEFBQ01BQUFBS0FNMFBBQUFrQUFBQUN3RFJE
d0FBSkFBQUFBb0FMUkVBQUNVQQpBQUFMQURFUkFBQWxBQUFBQ2dCTkVRQUFJQUVBQUFzQVVSRUFB
Q0FCQUFBS0FJUVJBQUFyQVFBQUN3Q0lFUUFBS3dFQUFBb0FOQlVBCkFDNERBQUFMQURnVkFBQXVB
d0FBQ2dCY0ZRQUFMd01BQUFzQVlCVUFBQzhEQUFBS0FQQVZBQUJVQUFBQUN3RDBGUUFBVkFBQUFB
b0EKRHhZQUFFOEJBQUFMQUJNV0FBQlBBUUFBQ2dBdUZnQUFMUUVBQUFzQU1oWUFBQzBCQUFBS0FB
c0FBQUFCQUFBQUNnQUFBQUlBQUFBRQpBQUFBQlFBQUFBUUFBQUFsVUVSR0xURXVNd29seE9YeTVl
dW44NkRReE1ZS05DQXdJRzlpYWdvOFBDQXZUR1Z1WjNSb0lEVWdNQ0JTCklDOUdhV3gwWlhJZ0ww
WnNZWFJsUkdWamIyUmxJRDQrQ25OMGNtVmhiUXA0QVVWUU8wN0VVQXpzYzRvNWdkZCtIMy9xRkVo
SUZLc1UKSENEaVV3U2tKUVhYeHk5aFFaR2VQR1BQakowYnJyaUI4NU1PYWZoNndUTStjWmwzd2Jv
ZkRjYSs0dktReE5zZ25DSVVIMWwxWXU3WQpVTTlxMnFBb3Y1eEM1QmdjN1ZPeTRSMnZFQ29kM3hB
OG91RnArSmJoZXdUT3l4azRMVE9FcWJYSWNYYkxOQ25VcEtTOXRBS3BaQ1pvClZNM3ZRQ25Vc2Q1
aGtNb1FWWTBwTjNGUHhGU2JEVEtrNXVTQ29DeHFQbTBrWktCRVFoOS9RcWlLNUYzRmprc0dHQWt4
WmNMWmN6SXAKektldjVWSk1oU005dWFTRXlWV1BFQ09MbGs1aVBWT2NHdGVoNnRSQ0ppY3ZOcUNT
cUdYM0QwWWV1UDRUbG10NXd0bzEzMTRQa1pINgpJTDFvN3JYZytnTSsrMXk3Q21WdVpITjBjbVZo
YlFwbGJtUnZZbW9LTlNBd0lHOWlhZ295TmpVS1pXNWtiMkpxQ2pJZ01DQnZZbW9LClBEd2dMMVI1
Y0dVZ0wxQmhaMlVnTDFCaGNtVnVkQ0F6SURBZ1VpQXZVbVZ6YjNWeVkyVnpJRFlnTUNCU0lDOURi
MjUwWlc1MGN5QTAKSURBZ1VpQXZUV1ZrYVdGQ2IzZ2dXekFnTUNBeE5TQXhORjBLUGo0S1pXNWti
MkpxQ2pZZ01DQnZZbW9LUER3Z0wxQnliMk5UWlhRZwpXeUF2VUVSR0lGMGdMME52Ykc5eVUzQmhZ
MlVnUER3Z0wwTnpNU0EzSURBZ1VpQStQaUF2UlhoMFIxTjBZWFJsSUR3OElDOUhjeklnCk9DQXdJ
RklLTDBkek1TQTVJREFnVWlBK1BpQStQZ3BsYm1Sdlltb0tPQ0F3SUc5aWFnbzhQQ0F2Vkhsd1pT
QXZSWGgwUjFOMFlYUmwKSUM5VFFTQjBjblZsSUQ0K0NtVnVaRzlpYWdvNUlEQWdiMkpxQ2p3OElD
OVVlWEJsSUM5RmVIUkhVM1JoZEdVZ0wwOVFUU0F4SUQ0KwpDbVZ1Wkc5aWFnb3hNQ0F3SUc5aWFn
bzhQQ0F2VEdWdVozUm9JREV4SURBZ1VpQXZUaUF6SUM5QmJIUmxjbTVoZEdVZ0wwUmxkbWxqClpW
SkhRaUF2Um1sc2RHVnlJQzlHYkdGMFpVUmxZMjlrWlNBK1BncHpkSEpsWVcwS2VBR0ZsRTFJRkdF
WXgvK3pqUVN4QnRHWENNWFEKd1NSVUpndFNBdFAxSzFPMlpkVk1DV0tkZlhlZEhHZW5tZDB0UlNL
RTZKaDFqQzVXUkllSVR1R2hRNmM2UkFTWmRZbWdvMFVRQlY0aQp0djg3azd0alZMNHdNNzk1bnYv
N2ZMM0RBRldQVW81alJUUmd5czY3eWQ2WWRucDBUTnY4R2xXb1JoUmNLY056T2hLSkFaK3BsYy8x
CmEvVXRGR2xaYXBTeDF2czJmS3QybVJCUU5DcDNaQU0rTEhrODRPT1NMK1NkUERWbkpCc1RxVFRa
SVRlNFE4bE84aTN5MW15SXgwT2MKRnA0QlZMVlRrek1jbDNFaU84Z3RSU01yWXo0ZzYzYmF0TW52
cFQzdEdWUFVzTi9JTnprTDJyankvVURiSG1EVGk0cHR6QU1lM0FOMgoxMVZzOVRYQXpoRmc4VkRG
OWozcHowZlo5Y3JMSEdyMnd5blJHR3Y2VUNwOXJ3TTIzd0IrWGkrVmZ0d3VsWDdlWVE3VzhkUXlD
bTdSCjE3SXc1U1VRMUJ2c1p2emtHdjJMZzU1OFZRdXd3RG1PYkFINnJ3QTNQd0w3SHdMYkh3T0ph
bUNvRlpITGJEZTQ4dUlpNXdKMDVweHAKMTh4TzVMVm1YVCtpZGZCb2hkWm5HMDBOV3NxeU5OL2xh
YTd3aEZzVTZTWk1XUVhPMlYvYmVJOEtlM2lRVC9ZWHVTUzg3dCtzektWVApYWndsbXRqV3A3VG82
aVkza085bnpKNCtjajJ2OXhtM1p6aGc1WUNaN3hzS09ITEt0dUk4RjZtSjFOamo4Wk5reGxkVUp4
K1Q4NUE4CjV4VUhaVXpmZmk1MUlrR3VwVDA1bWV1WG1sM2MyejR6TWNRemtxeFlNeE9kOGQvOHhp
MGtaZDU5MU54MUxQK2JaMjJSWnhpRkJRRVQKTnU4Mk5DVFJpeGdhNGNCRkRobDZUQ3BNV3FWZjBH
ckN3K1JmbFJZUzVWMFdGYjFZNFo0VmY4OTVGTGhieGorRldCeHpEZVVJbXY1TwovNkl2Nnd2Nlhm
M3pmRzJodnVLWmM4K2F4cXRyWHhsWFpwYlZ5TGhCalRLK3JDbUliN0RhRG5vdFpHbWQ0aFgwNUpY
MWplSHFNdlo4CmJkbWp5UnppYW53MTFLVUlaV3JFT09QSnJtWDNSYkxGTitIblc4djJyK2xSKzN6
MlNVMGwxN0s2ZUdZcCtudzJYQTFyLzdPcllOS3kKcS9Ea2paQXVQR3VoN2xVUHFuMXFpOW9LVFQy
bXRxdHRhaGZmanFvRDVSM0RuSldKQzZ6YlpmVXA5bUJqbXQ3S1NWZG1pK0Rmd2krRwovNlZlWVF2
WE5EVDVEMDI0dVl4cENkOFIzRFp3aDVUL3cxK3pBdzNlQ21WdVpITjBjbVZoYlFwbGJtUnZZbW9L
TVRFZ01DQnZZbW9LCk56a3lDbVZ1Wkc5aWFnbzNJREFnYjJKcUNsc2dMMGxEUTBKaGMyVmtJREV3
SURBZ1VpQmRDbVZ1Wkc5aWFnb3pJREFnYjJKcUNqdzgKSUM5VWVYQmxJQzlRWVdkbGN5QXZUV1Zr
YVdGQ2IzZ2dXekFnTUNBeE5TQXhORjBnTDBOdmRXNTBJREVnTDB0cFpITWdXeUF5SURBZwpVaUJk
SUQ0K0NtVnVaRzlpYWdveE1pQXdJRzlpYWdvOFBDQXZWSGx3WlNBdlEyRjBZV3h2WnlBdlVHRm5a
WE1nTXlBd0lGSWdQajRLClpXNWtiMkpxQ2pFZ01DQnZZbW9LUER3Z0wxQnliMlIxWTJWeUlDaE5Z
V01nVDFNZ1dDQXhNQzQySUZGMVlYSjBlaUJRUkVaRGIyNTAKWlhoMEtTQXZRM0psWVhScGIyNUVZ
WFJsSUNoRU9qSXdNRFl3TWpFME1USXpNVEl5TFRBNEp6QXdKeWtLTDAxdlpFUmhkR1VnS0VRNgpN
akF3TmpBeU1UUXhNak14TWpJdE1EZ25NREFuS1NBK1BncGxibVJ2WW1vS2VISmxaZ293SURFekNq
QXdNREF3TURBd01EQWdOalUxCk16VWdaaUFLTURBd01EQXdNVGMyTXlBd01EQXdNQ0J1SUFvd01E
QXdNREF3TXpnd0lEQXdNREF3SUc0Z0NqQXdNREF3TURFMk16SWcKTURBd01EQWdiaUFLTURBd01E
QXdNREF5TWlBd01EQXdNQ0J1SUFvd01EQXdNREF3TXpZeElEQXdNREF3SUc0Z0NqQXdNREF3TURB
MApPRElnTURBd01EQWdiaUFLTURBd01EQXdNVFU1TmlBd01EQXdNQ0J1SUFvd01EQXdNREF3TlRn
NUlEQXdNREF3SUc0Z0NqQXdNREF3Ck1EQTJNellnTURBd01EQWdiaUFLTURBd01EQXdNRFk0TVNB
d01EQXdNQ0J1SUFvd01EQXdNREF4TlRjMklEQXdNREF3SUc0Z0NqQXcKTURBd01ERTNNVE1nTURB
d01EQWdiaUFLZEhKaGFXeGxjZ284UENBdlUybDZaU0F4TXlBdlVtOXZkQ0F4TWlBd0lGSWdMMGx1
Wm04ZwpNU0F3SUZJZ0wwbEVJRnNnUEVSRE9EbEZOalEyT1VRNU9ERXhSRUU0UVRKRU1EQXdSRGt6
TnpCQlEwSTRQZ284UkVNNVFUTTFNamc1ClJEazRNVEZFUVRoQk1rUXdNREJFT1RNM01FRkRRamcr
SUYwZ1BqNEtjM1JoY25SNGNtVm1DakU1TURNS0pTVkZUMFlLSlZCRVJpMHgKTGpNS0pjVGw4dVhy
cC9PZzBNVEdDalFnTUNCdlltb0tQRHdnTDB4bGJtZDBhQ0ExSURBZ1VpQXZSbWxzZEdWeUlDOUdi
R0YwWlVSbApZMjlrWlNBK1BncHpkSEpsWVcwS2VBRXRpenNPZ0NBVUJIdFBNU2NRbmdyUjJzS2F5
Z01RUHdXYUtQZFA1R08yMmN6c1BqZ2VkSW9ZClpPRGRXTGxSY3hSOExFSVRQV3BKNE1oZ2JLZkpj
cVZtV3EwTmdiNjJKbURwZm1ZUktjT3M2eVZ3c3VNK3ZEb1kvZ3BsYm1SemRISmwKWVcwS1pXNWti
MkpxQ2pVZ01DQnZZbW9LT1RFS1pXNWtiMkpxQ2pJZ01DQnZZbW9LUER3Z0wxUjVjR1VnTDFCaFoy
VWdMMUJoY21WdQpkQ0F6SURBZ1VpQXZVbVZ6YjNWeVkyVnpJRFlnTUNCU0lDOURiMjUwWlc1MGN5
QTBJREFnVWlBdlRXVmthV0ZDYjNnZ1d6QWdNQ0F4Ck5TQXhORjBLUGo0S1pXNWtiMkpxQ2pZZ01D
QnZZbW9LUER3Z0wxQnliMk5UWlhRZ1d5QXZVRVJHSUYwZ0wwTnZiRzl5VTNCaFkyVWcKUER3Z0ww
TnpNU0EzSURBZ1VpQStQaUF2UlhoMFIxTjBZWFJsSUR3OElDOUhjekVnT0NBd0lGSUtQajRnUGo0
S1pXNWtiMkpxQ2pnZwpNQ0J2WW1vS1BEd2dMMVI1Y0dVZ0wwVjRkRWRUZEdGMFpTQXZUMUJOSURF
Z1BqNEtaVzVrYjJKcUNqa2dNQ0J2WW1vS1BEd2dMMHhsCmJtZDBhQ0F4TUNBd0lGSWdMMDRnTXlB
dlFXeDBaWEp1WVhSbElDOUVaWFpwWTJWU1IwSWdMMFpwYkhSbGNpQXZSbXhoZEdWRVpXTnYKWkdV
Z1BqNEtjM1J5WldGdENuZ0JoWlJOU0JSaEdNZi9zNDBFc1FiUmx3akYwTUVrVkNZTFVnTFQ5U3RU
dG1YVlRBbGluWDEzblJ4bgpwNW5kTFVVaWhPaVlkWXd1VmtTSGlFN2hvVU9uT2tRRW1YV0pvS05G
RUFWZUlyYi9PNU83WTFTK01ETy9lWjcvKzN5OXd3QlZqMUtPClkwVTBZTXJPdThuZW1IWjZkRXpi
L0JwVnFFWVVYQ25EY3pvU2lRR2ZxWlhQOVd2MUxSUnBXV3FVc2RiN05ueXJkcGtRVURRcWQyUUQK
UGl4NVBPRGpraS9rblR3MVp5UWJFNmswMlNFM3VFUEpUdkl0OHRac2lNZERuQmFlQVZTMVU1TXpI
SmR4SWp2SUxVVWpLMk0rSU90MgoyclRKNzZVOTdSbFQxTERmeURjNUM5cTQ4djFBMng1ZzA0dUti
Y3dESHR3RGR0ZFZiUFUxd000UllQRlF4Zlk5NmM5SDJmWEt5eHhxCjlzTXAwUmhyK2xBcWZhOERO
dDhBZmw0dmxYN2NMcFYrM21FTzF2SFVNZ3B1MGRleU1PVWxFTlFiN0diODVCcjlpNE9lZkZVTHNN
QTUKam13QitxOEFOejhDK3g4QzJ4OERpV3BncUJXUnkydzN1UExpSXVjQ2RPYWNhZGZNVHVTMVps
MC9vblh3YUlYV1p4dE5EVnJLc2pUZgo1V211OElSYkZPa21URmtGenRsZjIzaVBDbnQ0a0UvMkY3
a2t2Tzdmck15bFUxMmNKWnJZMXFlMDZPb21ONUR2Wjh5ZVBuSTlyL2NaCnQyYzRZT1dBbWU4YkNq
aHl5cmJpUEJlcGlkVFk0L0dUWk1aWFZDY2ZrL09RUE9jVkIyVk0zMzR1ZFNKQnJxVTlPWm5ybDVw
ZDNOcysKTXpIRU01S3NXRE1UbmZIZi9NWXRKR1hlZmRUY2RTei9tMmR0a1djWWhRVUJFemJ2TmpR
azBZc1lHdUhBUlE0WmVrd3FURnFsWDlCcQp3c1BrWDVVV0V1VmRGaFc5V09HZUZYL1BlUlM0VzhZ
L2hWZ2NjdzNsQ0pyK1R2K2lMK3NMK2wzOTgzeHRvYjdpbVhQUG1zYXJhMThaClYyYVcxY2k0UVkw
eXZxd3BpRyt3Mmc1NkxXUnBuZUlWOU9TVjlZM2g2akwyZkczWm84a2M0bXA4TmRTbENHVnF4RGpq
eWE1bDkwV3kKeFRmaDUxdkw5cS9wVWZ0ODlrbE5KZGV5dW5obUtmcDhObHdOYS8renEyRFNzcXZ3
NUkyUUxqeHJvZTVWRDZwOWFvdmFDazA5cHJhcgpiV29YMzQ2cUErVWR3NXlWaVF1czIyWDFLZlpn
WTVyZXlrbFhab3ZnMzhJdmh2K2xYbUVMMXpRMCtROU51TG1NYVFuZkVkdzJjSWVVCi84TmZzd01O
M2dwbGJtUnpkSEpsWVcwS1pXNWtiMkpxQ2pFd0lEQWdiMkpxQ2pjNU1ncGxibVJ2WW1vS055QXdJ
RzlpYWdwYklDOUoKUTBOQ1lYTmxaQ0E1SURBZ1VpQmRDbVZ1Wkc5aWFnb3pJREFnYjJKcUNqdzhJ
QzlVZVhCbElDOVFZV2RsY3lBdlRXVmthV0ZDYjNnZwpXekFnTUNBeE5TQXhORjBnTDBOdmRXNTBJ
REVnTDB0cFpITWdXeUF5SURBZ1VpQmRJRDQrQ21WdVpHOWlhZ294TVNBd0lHOWlhZ284ClBDQXZW
SGx3WlNBdlEyRjBZV3h2WnlBdlVHRm5aWE1nTXlBd0lGSWdQajRLWlc1a2IySnFDakVnTUNCdllt
b0tQRHdnTDFCeWIyUjEKWTJWeUlDaE5ZV01nVDFNZ1dDQXhNQzQySUZGMVlYSjBlaUJRUkVaRGIy
NTBaWGgwS1NBdlEzSmxZWFJwYjI1RVlYUmxJQ2hFT2pJdwpNRFl3TWpFME1USXpNVFV4TFRBNEp6
QXdKeWtLTDAxdlpFUmhkR1VnS0VRNk1qQXdOakF5TVRReE1qTXhOVEV0TURnbk1EQW5LU0ErClBn
cGxibVJ2WW1vS2VISmxaZ293SURFeUNqQXdNREF3TURBd01EQWdOalUxTXpVZ1ppQUtNREF3TURB
d01UVXlPQ0F3TURBd01DQnUKSUFvd01EQXdNREF3TWpBMUlEQXdNREF3SUc0Z0NqQXdNREF3TURF
ek9UY2dNREF3TURBZ2JpQUtNREF3TURBd01EQXlNaUF3TURBdwpNQ0J1SUFvd01EQXdNREF3TVRn
M0lEQXdNREF3SUc0Z0NqQXdNREF3TURBek1EY2dNREF3TURBZ2JpQUtNREF3TURBd01UTTJNaUF3
Ck1EQXdNQ0J1SUFvd01EQXdNREF3TkRBeklEQXdNREF3SUc0Z0NqQXdNREF3TURBME5EZ2dNREF3
TURBZ2JpQUtNREF3TURBd01UTTAKTWlBd01EQXdNQ0J1SUFvd01EQXdNREF4TkRjNElEQXdNREF3
SUc0Z0NuUnlZV2xzWlhJS1BEd2dMMU5wZW1VZ01USWdMMUp2YjNRZwpNVEVnTUNCU0lDOUpibVp2
SURFZ01DQlNJQzlKUkNCYklEeEZSRVl6UlRJNVF6bEVPVGd4TVVSQk9FRXlSREF3TUVRNU16Y3dR
VU5DCk9ENEtQRVZFUmtGRlEwTXhPVVE1T0RFeFJFRTRRVEpFTURBd1JEa3pOekJCUTBJNFBpQmRJ
RDQrQ25OMFlYSjBlSEpsWmdveE5qWTQKQ2lVbFJVOUdDZ0FBQUFBQUFBQWxVRVJHTFRFdU5BMGw0
dVBQMHcwS01TQXdJRzlpYWcwOFBDOU5aWFJoWkdGMFlTQXlJREFnVWk5UQpZV2RsY3lBeklEQWdV
aTlVZVhCbEwwTmhkR0ZzYjJjK1BnMWxibVJ2WW1vTk1pQXdJRzlpYWcwOFBDOU1aVzVuZEdnZ01U
azJNVFV2ClUzVmlkSGx3WlM5WVRVd3ZWSGx3WlM5TlpYUmhaR0YwWVQ0K2MzUnlaV0Z0RFFvOFAz
aHdZV05yWlhRZ1ltVm5hVzQ5SXUrN3Z5SWcKYVdROUlsYzFUVEJOY0VObGFHbEllbkpsVTNwT1ZH
TjZhMk01WkNJL1BnbzhlRHA0YlhCdFpYUmhJSGh0Ykc1ek9uZzlJbUZrYjJKbApPbTV6T20xbGRH
RXZJaUI0T25odGNIUnJQU0pCWkc5aVpTQllUVkFnUTI5eVpTQTBMakl1TWkxak1EWXpJRFV6TGpN
MU1qWXlOQ3dnCk1qQXdPQzh3Tnk4ek1DMHhPRG93TlRvME1TQWdJQ0FnSUNBZ0lqNEtJQ0FnUEhK
a1pqcFNSRVlnZUcxc2JuTTZjbVJtUFNKb2RIUncKT2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpB
eUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNEtJQ0FnSUNBZ1BISmtaanBFWlhOagpjbWx3ZEds
dmJpQnlaR1k2WVdKdmRYUTlJaUlLSUNBZ0lDQWdJQ0FnSUNBZ2VHMXNibk02ZUcxd1BTSm9kSFJ3
T2k4dmJuTXVZV1J2ClltVXVZMjl0TDNoaGNDOHhMakF2SWdvZ0lDQWdJQ0FnSUNBZ0lDQjRiV3h1
Y3pwNGJYQkhTVzFuUFNKb2RIUndPaTh2Ym5NdVlXUnYKWW1VdVkyOXRMM2hoY0M4eExqQXZaeTlw
YldjdklqNEtJQ0FnSUNBZ0lDQWdQSGh0Y0RwRGNtVmhkRzl5Vkc5dmJENUJaRzlpWlNCSgpiR3gx
YzNSeVlYUnZjaUJEVXpROEwzaHRjRHBEY21WaGRHOXlWRzl2YkQ0S0lDQWdJQ0FnSUNBZ1BIaHRj
RHBEY21WaGRHVkVZWFJsClBqSXdNRGt0TVRFdE1qTlVNVE02TlRjNk1UZ3RNRGc2TURBOEwzaHRj
RHBEY21WaGRHVkVZWFJsUGdvZ0lDQWdJQ0FnSUNBOGVHMXcKT2sxbGRHRmtZWFJoUkdGMFpUNHlN
REE1TFRFeExUSXpWREV6T2pVM09qRTRMVEE0T2pBd1BDOTRiWEE2VFdWMFlXUmhkR0ZFWVhSbApQ
Z29nSUNBZ0lDQWdJQ0E4ZUcxd09rMXZaR2xtZVVSaGRHVStNakF3T1MweE1TMHlNMVF4TXpvMU56
b3hPQzB3T0Rvd01Ed3ZlRzF3Ck9rMXZaR2xtZVVSaGRHVStDaUFnSUNBZ0lDQWdJRHg0YlhBNlZH
aDFiV0p1WVdsc2N6NEtJQ0FnSUNBZ0lDQWdJQ0FnUEhKa1pqcEIKYkhRK0NpQWdJQ0FnSUNBZ0lD
QWdJQ0FnSUR4eVpHWTZiR2tnY21SbU9uQmhjbk5sVkhsd1pUMGlVbVZ6YjNWeVkyVWlQZ29nSUNB
ZwpJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGVHMXdSMGx0WnpwM2FXUjBhRDR5TlRZOEwzaHRjRWRKYldj
NmQybGtkR2crQ2lBZ0lDQWdJQ0FnCklDQWdJQ0FnSUNBZ0lEeDRiWEJIU1cxbk9taGxhV2RvZEQ0
eU1USThMM2h0Y0VkSmJXYzZhR1ZwWjJoMFBnb2dJQ0FnSUNBZ0lDQWcKSUNBZ0lDQWdJQ0E4ZUcx
d1IwbHRaenBtYjNKdFlYUStTbEJGUnp3dmVHMXdSMGx0WnpwbWIzSnRZWFErQ2lBZ0lDQWdJQ0Fn
SUNBZwpJQ0FnSUNBZ0lEeDRiWEJIU1cxbk9tbHRZV2RsUGk4NWFpODBRVUZSVTJ0YVNsSm5RVUpC
WjBWQlUwRkNTVUZCUkM4M1VVRnpWVWRvCmRtUkhPWHBoUnpsM1NVUk5kVTFCUVRSUmEyeE9RU3N3
UVVGQlFVRkJRa0ZCVTBGQlFVRkJSVUVtSTNoQk8wRlJRa2xCUVVGQlFWRkIKUWk4ck5FRkVhMFpy
WWpKS2JFRkhWRUZCUVVGQlFXWXZZa0ZKVVVGQ1oxRkZRa0ZWUlVKblZVWkNaMnRIUWxGWlNrTjNa
MGRDWjJkTQpSRUZ2UzBOM2Iwc21JM2hCTzBSQ1FVMUVRWGROUkVGM1VVUkJORkJGUVRoUFJFSk5W
RVpDVVZSRmVIZGlSM2h6WTBoNE9HWkllRGhtClNIZzRaa2gzUlVoQ2QyTk9SRUV3V1VWQ1FWbEhh
RlZTUmxKdlpraDRPR1ltSTNoQk8waDRPR1pJZURobVNIZzRaa2g0T0daSWVEaG0KU0hnNFpraDRP
R1pJZURobVNIZzRaa2g0T0daSWVEaG1TSGc0WmtoNE9HWkllRGhtU0hnNFppODRRVUZGVVdkQk1V
RkZRVUYzUlZJbQpJM2hCTzBGQlNWSkJVVTFTUVdZdlJVRmhTVUZCUVVGSVFWRkZRa0ZSUlVGQlFV
RkJRVUZCUVVGQlVVWkJkMGxIUVZGQlNFTkJhMHRECmQwVkJRV2RKUkVGUlJVSkJVVVZCUVVGQlFV
RkJRVUVtSTNoQk8wRlJRVU5CZDFGR1FtZGpTVU5SYjB4RlFVRkRRVkZOUkVGblVVTkMKWjJORVFr
RkpSMEZ1VFVKQlowMVNRa0ZCUmtsU1NYaFJWa1ZIUlRKRmFXTlpSVlZOY0Vkb1FuaFhlRkZwVUVJ
bUkzaEJPMVYwU0doTgplRnBwT0VOU2VXZDJSV3hSZWxKVWEzRkxlVmt6VUVOT1ZWRnVhelpQZWs1
b1pGVmFTRlJFTUhWSlNVcHZUVXBEYUdkYWFFcFNSbEp4ClV6QldkRTVXUzBKeWVUUXZVRVVtSTNo
Qk96RlBWREJhV0ZkR2JHRlhNWGhrV0d3NVYxb3lhSEJoYlhSellsYzFkbGt6VWpGa2JtUTAKWlZo
d04yWklNU3RtTTA5RmFGbGhTR2xKYlV0cE5IbE9hbThyUTJzMVUxWnNjR1ZaYlZvbUkzaEJPM0Zp
YmtveVpXNDFTMnB3UzFkdApjRFpwY0hGeGRYTnlZVFoyYjFKQlFVbERRVkZKUkVKUlZVVkNVVmxG
UTBGTlJHSlJSVUZCYUVWRVFrTkZVMDFWUlVaVlVrNW9TV2RhCmVHZGFSWGttSTNoQk8yOWlTSGRH
VFVoU05GTk9RMFpXU21samRrVjZTa1JTUkdkb1lWTlZlVmRwV1RkTVEwSXpVRk5PWlVwRlozaGsK
Vld0M1owcERhR2RhU21wYVJrZHBaR3RrUmxVek9IRlBlbmQ1WjNBbUkzaEJPekFyVUhwb1NsTnJk
RTFVVlRWUVVteGtXVmRXY0dKWQpSakZsV0RGU2JGcHRaRzloVjNCeVlrY3hkV0l5VWpGa2JtUTBa
Vmh3TjJaSU1TdG1NMDlGYUZsaFNHbEpiVXRwTkhsT2FtOG1JM2hCCk95dEViRXBYVjJ3MWFWcHRj
SFZqYmxvMlptdHhUMnR3WVdGdWNVdHRjWEUyZVhSeWNTdDJMMkZCUVhkRVFWRkJRMFZSVFZKQlJE
aEIKT1ZVMGNUZEdXRmx4TjBaWGJtUkZVbTVrWjNFbUkzaEJPMHREVjFsdFowRkhOVXBLZUZab0sz
UXZia1lyVml0cFJtd3hSSHBNV1hKSgpkakp2YjBwUWNrMW5jREpMVnpSc1lYWjBWRVpYUWpaMkwz
ZEJOV0ptYkc1aFZsZDRkRGxSTVVvdk1sY21JM2hCTzJwb1UwdE5MMDE1CmRXcHFMMEZKUkVaWFNX
RnVMM2RCTlcxVVIzRTJXRFZZVm1aRFZ6WjFlVEZrTHpWRmFWZ3ZhV1ZMTUhobVZWQXJZM1YyZWsx
MVMya3gKZEU1TmMyd3ZXa3RSZVhrbUkzaEJPMUE1U210c1dtWXJSbmhVVkVnM015OUJTbmxWTDA5
VE5rSlZZVFpNWkVjMmNrUmhNbkU1TmpkTgpXVzFqWm1acGRFcEtZeTl1VWl0aE1YZGhlV1ZoWkZG
WWNpOWtla2RNY2k5M1FWa21JM2hCT3l0UFN6QnNaSGdyV1ZCdU5qVlpUbU5sCldtUldiVmxEWjAx
c04yTk5ZV1ZITjI1R1ZYVnNNVGRZU214RGVtRnFaRk5MUkZWTE9EQnFRM1pxZFRKTGIxZGhOblZh
Tm1WMlN6aDIKUjNZbUkzaEJPMGh0ZUdGc1pYUkxOSEZ3V1hFM1JsaFpjVEp5VFdwQ01FcFdiRTVX
V1dKRlJXUkRSR2x4UzJveFpsWnZNMFI0TTNNMgpUMDlxVEVzMFNTdHJTRVpWV2tRMWRqaEJUbk5C
U1djeGRTOG1JM2hCTzJsRVptRTBXRlY1TVhBME1HSkdWVEIwTDNwWUwwMDJSQ3MzCk9ERTJjMlZ0
ZWpOek4ycGlkMFIxTVUxV1ZHRXdMMUF2T0VGUFJ6QlpSMHg2VG1OTlVWTm1NekJqUlhjelJrOXJj
MkltSTNoQk96UnkKVTJReVpqaEJlbXhPSzJJeGRsUXhZakl4ZGt0a1psZDBXV2hZWVcwdmNFTk1O
VFJ5VkVseVNDOXVUVmg2Y1doSU1UZFNUazUxUVU5MgpieXQyUTFRdmQwRkdTazVwYVcxVk5sb21J
M2hCT3k5M1FUVnNOazAxUVRGUWVYcGpNalF2WVdFeWRWVnVLelJQYTBnMk9GWmFhbkJJCkwwRkVi
RW9yVldRclZrVTVOV1JoV1hwVk1uVTNXbnBSYm5OVVFqWTBMMGhHVjJSaFJpdFpibXNtSTNoQk8x
UllhWEUyVW5JNWFtVlQKZEhOSlJXNXFPVmhtY0NzMldXZ3ZkM2hXYTA5TGRYaFdNa3QxZUZZeVMz
VjRWakpMYzA0NEwyWnRNelZJT0dwUkx6ZHROelJISzFwbApWVmR0TWpRNVZ6VW1JM2hCTzJOa2Rt
ZENRVkZJZUdObldYRXJaVkJQVURoQmVteDZOWGN4UVhaQ05WcHpiMlJHZEdwVlRHTlRNSFZpCmEy
cDRLMGxEU21ac2QySTFOSEpVZVVSNlJEVXlPRE1yV1ROTU5qZHlSak1tSTNoQk8zRkJTbkZKTlRW
WVlVNVVMMEZLVFdSbFF5OVIKVFZWd1NtbHljMVprYVhKelZtUnBjbk5XWkdseWMxWmthWEp6Vm1S
cGNuTldaR2x5YzFaa2FYSnpWbVJwY25OV1pHbHljMVprYVhJbQpJM2hCTzNOV1dsQTFZeTlOTXpo
M1VFeGlUQ3RvZEdWMlRGZE9TMFppWTNsSFYwUmlMMmx0V0c1RlppdENlRlkyT1RWU0x6VjVMemg0
ClYzQlRTSHBVY0ZWUGIzZHFXbkoxZWxBeFpXVnVhVlVtSTNoQk8xQkxUbW80ZFVkTFMyWlJTR3RV
T0RGMlNTOXVaVWhzYjFkdlN6a3kKYnpWVE5tUlBVRk4xYTBoMlIyWjBSQzlMVVd0bEswdHpkWGhX
TWt0MWVGWTFUaTk2YTBncllqaHVhMVJSU1hJbUkzaEJPMGhUYlZndgpSVzF5UW1oaGMxRkhSblpE
ZFhwNmEwZzVjWEEwYjBSMFYzQXZXbkJwY2pSemRtSXlPSFp5ZFdFNGRsb3pkV0oxTkZsNVZIcDVj
MWhrCk0ySmpjM3BPVldzMGNGVk5WbVFtSTNoQk8ybHljMVprYVhKelZtUnBjbk5XWkdseWMxWmth
WEp6Vm1ScGNuTldaR2x5YzFaa2FYSnoKVm1ScGNuTldaR2x5YzFaa2FYSnpWbVJwY25OV1pHbHhk
bGt6T1Rkd09UVkVaVEpOT0d3bUkzaEJPM0prTWpkQ05FeHBTbWxxYjNjMgpSbGRHUTAxV1ptRklM
MEZFYWpVclkxUXJaVGxHYkRBelZqTllMMFYxYkc5d2RVTkJSaXR6VVdKTGN6UlZablJCTDBNNVRu
RXdVR1Z0ClMwaHliVXNtSTNoQk8zVjRWamhDWm01S05YcG1lbVlyV1hWeU5uRnphR1Y1VTFVeWRX
NUVjMHhoTTBwU1EzWXJkV0YyT0RKUFMxZEYKTkhFM1JsaFpjVGRHV0ZseE4wWllXWEUzUmxoWmNU
ZEdXRmx4TjBZbUkzaEJPMWhaY1RkR1dGbHhOMFpZV1hFM1JsaFpjVGRHV0ZseApOMFpZV1hFM1Js
aFpjVGRHV0ZseE4wWlhWUzlzYkRVd2RWQktibTVtVXpsbWFsa3JhbUo1YUV3eVRXSTROMkZVTkZw
c2NETW1JM2hCCk8xQkJNVmd6UVhoV0syaEZWWE5qYzFOVGVFMUlhbXRWVFdweFlXZHhkM0ZEUkRj
MGIxbDBLMkV6YlVrcldGQjVOVGgzTm5WcVkwcHYKVEU5U1RHUTJNRFI2ZWk5MVdWUTVSV3RwTkhF
bUkzaEJPeTlRWmtaTWMxWmthWEp6VmxKbGJXRlVjVzF4TTJsWFYyMVhhekU1WlZObQpXWFEzWlU1
d1drUTRiRkZGTkhFNVdUaHpMemcwY21adFpIRjVja3h4UTFjeWFWRk9kbE0zYXpWNlZWQW1JM2hC
TzJoSVEwcE9MMXB0CldFWmlaV2cyWWk5QlRUUmhZVTlwUzJSVU9Ia3pSVGN3SzBsWE1YVnJTVUk1
YVRkNlZpczNSa05rUkM5QlNuY3JMMHhUYlN0d05ucFkKZGpoQmRqZFlMMEZNU25NbUkzaEJPMVpS
T1RNdmQwRTBaQ3RTU0ZndlVUbGFNVk5HY1dSYWFtSjVhWFo1VjB0TVJsZEtZVE12ZW1oMgpjbXRS
VEdGS05XbDBjbk13Y1VrM2VVWTNZekU0VDFWYWJuSTVkM2hYTTJzdmJrUW1JM2hCT3podUwzcEdP
Rzl4T0RKek5rNU5kR3R0Ck5YWTBTMVF5TkVocE1HdG1TVW92Y3paWmNGbGFhWEp6Vm1ScGNuTlda
R2x5YzFaa2FYSnpWbVJwY2s5bVMwZzFTMlp0VmpWeVUwOWkKVXprbUkzaEJPMGRzYW5Od1FsWmlO
amR3WW5kR1ZDc3djbE5WVEdvdlZVSjRWalowYjJZdlFVUm9kSEZ6YVhFcmRTdFpORXhqTDNSUgpN
bFZFZWk5U05tdHdhSEF2ZDBkTFRGcFdZV1k0UVU5SVptc21JM2hCTzBaVmNHUTJlSEZ6ZWpkbVJr
VXhkRVZRWmxwdldtWXhOSEZ5ClVDOUJUVFJtWm14elZWbEtjVzF6Y1RsRWVFcHRkRk5CWlRGUlRG
bFdLeTlHVldveFVDOUJTbmN3TURGcldUWllOVzBtSTNoQk8yMXAKWmpsb1RIRXlWMUZJTWt4Sk9H
UlFLMEo0VmpVeE5XNHZOWGhqTDA1SVVtdGxZWHBuZERsaWRERXpjbGw1Wm5aUlVHVkxWVkp6VkRk
SwplWGhVWW5sdEx6QXJMM2RDVUhVMVRFOG1JM2hCT3k5MGNHSlROMmxRUjFjemJsSnZOVVpRWjNs
elFWSnBjVWg0VmpKTGRYaFdPVE5tCk9EUXZaVnB0T0hkbWJGSnZhemh5YlZNMmMxVmlWRGRyYm1N
NGNsVTRSWEZsTlUxWVFTOVVhV2dtSTNoQk8ybFlMMDlZWlhSbVZsQjUKTjNOMFRWSnhVMkZ1Y1VO
Q2VEUjRVVWt3YW1ZNFVIZDRWamhtV1hCa2FYSnpWbVUyWm14TUwzcHFTSEpRYlZOTFNGZFFUbUpU
TmxKdgpjMmRFZDFkcFowTW1JM2hCT3pkMVJrODBUa2N2ZFZWUWFYZEtVR2d6ZUZFcmNHWkxNMnQ2
ZVhZMVZuTkdjMlpNSzIxM01rVkJRVVJ0ClRtWXphMnhQT0d0b2NUZHVNMWx1UmxVMmVGWXlTM1Y0
VmpKTGRYaFdla3NtSTNoQk8wZENWbWREY0VaRFJEQkplRlkwTnl0aFNDOVAKVGxoc1RIcFhhekV2
YjJGU05rWnllbFpaVUVWMFRGTmFjV1JLV1d3cmVWTm1NakJHWlRWRVdYRXJVbEJPU0d4WVdIWkxL
M042Tms0bQpJM2hCTzNKc2NURndaakkxSzBwSE0xWnNVREpZVW1nNFRFc3pXV3BHUzFVMGNUZEdX
Rmx4TjBaWVdYRjViamgyTDNkQmRDOU9VRzUyClZuaHdLMmd5TTBwRmIySjFPV3h4ZEhaQmNDOWhh
MlVtSTNoQk8yZ3JhRkpXYWpKSFMzWnlhamgwZGl0alpXWkpMMnN5VDBzMmRWbFcKTVhKWVJtOTZX
RGt3WjB0Sk5DOHplRU5sVTNBM1JURmlNM2hST1ZONFZqSkxkWGhXTWt0MWVGWXlTM05rT0RVbUkz
aEJPeTlzTnpWUgpPRFZYU25SUVRVZHVVak5XUVZab2RXRmpZbWxNTDJwSVMxQnFXR1psYkdGSWRV
MVdaa2t6TlhjdmEwSnlNMnROZG5Ga2FUYzJjRFZhClNpOHpjME13YkhRMmJXZFhORlltSTNoQk8y
UjFjRzlJUjNndmVXVnRTMWhySzB0MWVGWTVVMlk0UVU5SGRYUTRPVTA0ZURaSGVpOTMKUW5oUVFt
WlJlQ3RRY2tsWmNFTlFiRFpMVm5oUmF5OTNSSHB0Vm5Gb1psY3ZUR1ZzUW5RbUkzaEJPM0psTW01
MWJWZ3pibXRYVFVVdgpPRUZKWnpSeFNIcHVhV3d5UzNaeFRDOXVTR280WjBsSmNtVXlPRFZsWW1K
WlUxaEZiMFYxYTJGV1RYUldhbFUzY0dOVVMyVnlTSEZwCmJuQXhUemttSTNoQk8wdExTREJxYVhK
elZtUnBjbk5XWkdseWMxWmthWEp6Vm1ScGNrSXZkMEV5ZG5sek1HbzRkM1pNYWpKT2VIaG4KTVZj
elJGQndaVzlWSzB0TFUyNHlWMGxHVkVjdlVuZzVVRlZaY1NzbUkzaEJPMFYwWWpCaVZYUkZNV0Uz
TUc1Vk5GZDBOeXQ1YTJGSApOR2hpY1VkWWR6aFJaVzlRWTJJMGNGRlBTM1Y0VmpKTGN6SXZTMm80
Y2s1YUwwMU1la05PVUhSRFltWlVjbUZyYlhBMmFWWW1JM2hCCk8zRnpUVnBPUVVJdlRra3ZOME12
VkRCQ2VGWTVlU3RWZGt0WFp5dFZPVVIwT1VZd1R6SlhNbk55WTJaT05VZ3ZZV3RzWWpsd01qZHUK
SzBkTFJUUjRWakpMZFhoV01rdDFlRll5UzNVbUkzaEJPM2hXTWt0eFpERmhNakV6WWxNeWRERkZh
emwwVDJwU2VsRjVTMGRTTUZsVgpXbGRWTjBWRldYRXJURkFyWTJkUWVXRlFhMWhYVlRGUVUwa3lZ
bmw0Y1ZSclZ6bFRWeXR5VkZVMVIwSW1JM2hCTzIxUE9VTk9OSGxsCk1qTlZWa3RzTlVocGNqSXpM
MjVGYWxaVVlTOXRZbU5YVWxCM1lXcHdNREJaV0M5TWFXUktVV1p2VmtkNFZXOVVMMjVMZVM5T01T
dGkKVFhOQ1RsSlpNazUwWW1jbUkzaEJPMlZCV1U1UUwzcFBlRlZRU0dOV1pYcG1PRFF4TDJ4UmJt
MDNla2N5ZFRaMFJEWnRaMkZMTm5RMgpZbWx4V0VZeE9YQkphbGhaY1c0eU0waDVTRkUwY1N0Nlkx
VlBlRll5UzNWNFZqSW1JM2hCTzB0MWVGWXlTM1Y0VmpKTGRYaFdNa3QyCmJrZ3ZRVXA1TVM5TWJF
bzNRekk0T0RabVJDc3ZkRk4wY0hKSVJXWmhhRmt3WjIxaFp5OVpXVGhEWmtGeU5GbHhLMWR6VlhW
NFZrYzIKVEc4bUkzaEJPeXR2WVRGeE1YQndUMjVTUjJVcmRuQldaM1EwYUROa2VsRldVRmxsU25o
V09TdG1iSEFyV0N0c0sxSlFTMnh5YjJScApRVGgzU0hFMmFHUm5WV0ZsTlZsRWJrbG1ZbUZwYW5O
dlIwc21JM2hCTzBkV1dYRTNSbGhaY1RkR1dGbHhOMFpZV1hFM1JsaFpjVGRHClZXdzROU3RWT1Uw
NE1tVlhZaTlCVFhZMmEyOU9kR1pTUmtKS1UzSlNlVVJsVDFabGJuaEpORVJFUmxnMU4yVlpUa1Ft
STNoQk8zWTUKUWpGNUt6QllWVVUwV0hWdWVuWmllbWRrVDFOSGJGWlFaRmMyWnl0SFMxZGhMemcw
T1RNM1YxQTFkeXRZU2tGa2NGcGFZbVJvTkdsbApRMU5RT0VGWGQwOUxiRk12VURJNVRqVW1JM2hC
T3l0alNHMWhWVzEyUnpWVFIzVXpLelpKV1RSMU15dHdhVzlaVEZveWJIaGxXR05HCmJtSkpXbUp0
Tld0WFIwTktaSGw2ZFhkV1ZraDZTbmhXSzJoSU5XTmxVemRVZVZvMVRqQXplUzhtSTNoQk8ySXdX
amRYVFVjM2JWZ3YKWkd4M0wzaFRkamhCVXpVeWNqSnZUVlZOYkhoV01rdDFlRll5UzNaT1VIcERM
M2REWTJkbWVTODRiRmhOYlc1NmVsTmhibkpGVmxKSwpXVmRKVm5wSE0yZ21JM2hCTzA1SmVGWkZV
R2xMYkdnMFdYRTRlbXd2ZDBOak1FbG5OVVZZYkVKdGFpOWFXblJSUTJzdlRVTXlZVzR6Ck5IQndi
VWhyZWk5QlNubHZMMHd2V0hKeFQza3hWMDlpVVV4dFZtZHpZMndtSTNoQk8zbFdhM1JwVkRCeVQz
UlBTSHBrVVZCbVJrUXkKV2toU01GWXdXVTFxUVVaWFFuRkRSSFZEUTAxV1luaFdNa3QxZUZaTUww
MVBhREpYZG1GR1pqWk9aa3g1ZEU1UloydDBOWFJ4YTBNbQpJM2hCTzFKVGRrbFdOM0l4U0hacGNq
ZzJUbGt3ZFRjd2JsWnlNMU0zZUdWR00xbFVlVmN3Tml0RWVFOVZZamhTYVd4Q05IRXJhMllyClkx
SlFTVXRVTTFZdk5USjJXWEZ5WVdzeVQyeGphSFFtSTNoQk96WnFRVWRsVVdVMmIxRm5MekZ0ZUZF
cmIzTldaR2x5YzFaa2FYRlUKSzJGMlQwaHNkbmx3Y0dKaGNEVm5kalEzUTNwVk9GWmFObXh1WW5K
M2FsSlJXR1IyV2xGalZtVkpZVEV2ZW0wbUkzaEJPMUkxWldkMQpSMVJTZGt3eGVtWjNaekJGTVhw
UGJIQllNME54YkhvclQwdHhWMnhtT0RWc05rNU1ZMHQxY1N0WFlta3dkSGxtYVd4MGNuQk1iR2RR
ClNHYzRaSFl2UVUxVGVGWTNaRFVtSTNoQk8wODRPV1ZXZGs5UGJXWndTSGs1Wm5CbFVVdFJjM2xE
Y1hsNFRWSllha3hITVVkVkwwMVYKVUdGMVMzQTVhWEp6Vm1ScGNuTldaa3BtTDA5WWJtczVZa1I2
Vm5BemJXVXpVMnRYYzFFbUkzaEJPMjFETjFsa1VISkdjMEZCZUM5MwpRbUZLYkVncmVIaFZVRW92
ZVhkMWVGb3ZiVkkxVjNWSFRrVnFNVmQ1Tlcxc1ptaE5Oa0owYURkSVJreDJlbEIxZUdRdmJWSTFj
SFZHClVFcElNV0VtSTNoQk96azVUbWRMVmxGWVJHaGthaTlyWjFseGVsZ3ZRVXA0Wnpod2NuSnVO
VzR5T1RkTmJrOHdNRTlHTnprMk9VUkwKUzFKM1JEVm9NelZxTDFaNFZYWjBaa1pFYzFaa2FYSnpW
bVZLTHpnbUkzaEJPelZLTDI1Q1l5dFZaRXBwT0hVMlNFNDJXRzFFVmxsNQpPSFIzYUN0UE1uUmhi
R1ZoSzBSNVJVWldVRmxCYm5KVVJsaDRlWHBOZWtadFNreEZNVXBQTlVwUFMxZHpWbVJwY2paWEx6
VW1JM2hCCk8zaFhMMDVwTm1FM1NHdE1WMG95Ykdsa1Iyc3dTMVo2Vlc5Wk1UVlRWekZVSzNwNFFt
UlFRMmhJYUdsb09VODBjVGRHV0ZseE4wWlkKZUVZdmVtc3piMHMyVkN0aVpXOTVVbkIzYVRFbUkz
aEJPMU5IUXk5UlpHbFlXREExUkRsTmMxUklSa2xsVmtGRmEwRkRjRTkzUVhoVwpLMmhtTlZrclZr
VTRjV1ZSZEVZd1NVeDRiWFJpV2xSa1pUbDRUQ3M0YlZBdlNYZ3llRkY1WmtaWVdYRW1JM2hCT3pk
R1ZYVTRlR0V2CmNIWnNOMUZ5TjFjNVZHczVTM2d3SzBad05USTNhMHRPYkZWa01sa3dWbEl6U25o
V09FUXZiVkFyV1cxMUsyVXZUV015Y2pad1NWSkYKUTNsWFJtdEVWMDh6WjNJbUkzaEJPMVpWVldW
UU9IcG1kRWhHVEVaalZtUnBja2t2U1VodWNsZDJTbEJ0VnpJeE0xTndRMGhwVUVjMQpkR2xUU1RV
MFUyWnFhV3RJWjFJd09FUlJhbU5aY1NzdmQwUjVOM0l5Ym1WWlRrTW1JM2hCTzNOa1lqQTFMMVZ6
ZEZGb1UyVkJibkZCCk5ISjRXVVJ2ZVc1YWFESlBTMFY0ZUZZeVMzVjRWalZNTDNwc1JHOUpNVlE0
Y0hJeU5WWlJNREpyV0VWR04wZzBNRFVyWnpsUU9XaE4KVTJZbUkzaEJPMnhwY2pRek9IVllTREZp
ZWtSd1pIaDVTMlZxWkhkVFkyZ3hTRWRXVkZnNFRWVnlkazA0TlhWUVRYVnlXRUpaVDFweQplVFJy
VEdsc1JIbHNXVEV5T0dOV1psUXpMMDlJWldkcE16Z21JM2hCTzNGaE0zSnFTMEpLWmpOcFYzRkZP
V1pVZEZrclZsSTNSbkI1ClVHOTRVU3RuYzFaa2FYSnpWbU42UWxGWFdXZExRbFZyT1VGTlZtWnVj
Q3RhZG0weVdIcGlOVGN4YmxoWFkzUkVZek1tSTNoQk8wUk0KWVVFdmN6SXdXRGQxUm1aRUt6ZFZW
ams0VlhOWWVGWXlTM1Y0VmsxMlRHVjBNMDlvWlZsT1RqRnRNa3BGSzI1WVRWWjViRTgxYVdOTwpW
R1o0Y0ZSR1dEWkdVbVZqVUV0cmMxTW1JM2hCTzFOd2NrWnNlR3RWVFhSaWFVbEhhRVpTYzFkNFVY
WTRRVGhXSzFaMkszSjRXUzg0ClFWTlVSQzlCVFRGWmNUY3ZSbVpzWWk5QlMzWkdhaTh3YTNjdk9F
Rk9WMHQxTDNkQlZpdFdkaXNtSTNoQk8zSjRXUzg1U2sxUUwwNVgKUzNadFVDOUJTbms1YkRCeE9E
RnFlVE54Vm1obFVWaGFhM1EzYVROc09VTldTbE4yYjNWcWNuazBSVEJ5Tm5od09HcHBiMlZWTDJ4
TQpiMU0yT1N0YVdHd21JM2hCTzNwVVNGaHVSa3hsZUhsVVNqUjRVVWd4Y0VJdmQwVmFlRk12VVdK
R1JITldaR2x5YzFabVR6TXZUMWxRCmJTdFRNVEJZVTFCTGRIVXZSVFpxU1RFM1prRmtWRVpDVWxs
c1VITXdha1ltSTNoQk8zWnRiVXQyYkZoR1RITldaR2x5YzFabVYyWXYKUVVScGJEVTBNRGhsVWt4
NlVtUlZkbTlpV25STWRrZE9jamxaYkZOUU9FRmpXRU5vSzBzNGVVc3dhMFJyTURoalZWQmlVRGhX
SzFZbQpJM2hCTzNZcmNuaFpMemhCVTFSRUwwRk5NVmx4Tnk5R1pteGlMMEZMZGtacUx6QnJkeTg0
UVU1WFMzVXZkMEZXSzFaMkszSjRXUzg1ClNrMVFMMDVYUzNObEwwMVVWaTlMTW5FclVYWk5WMjRt
STNoQk8wUldZa3RTTjNKVWNuRlBTa0pqVWtVcmIxbFhPVTluUkdSUk9VMVcKWmtGMGRrMVpUR2xM
V1VOd2FXUllRVkJtYVdFMGNGaFlhM2w2V0dNNGVVRm9XbHBIWkZGbGRFZFphMVo0VmprbUkzaEJP
M2N2T0VGUApUakp1VEZrdmF6ZHZWekZLVEhJMmVHTjVSMnhMYlZNMGF6UnVMMmRCZFV0SWNHMUxk
WGhXTWt0eldDOU9TRll5TUdvNGRXWk5iVzlKCllWTjNObVJqUTBrM04xTlFSMVVtSTNoQk8xRTNa
alZVUkVaWU5UWlpjR1JwY25OV1pHbHljMVprYVhKelZtUnBjbk5XWkdseU1sQXYKYmtaTVZIWnlX
RFZ6ZUhvd2NqbFJjMHh0TkhJMFkzVk5TR292ZDBGWU5IRllNbWhwYURJbUkzaEJPMHQxZUZZeVMz
WnBhaTl1UzFoVwpiWFoyZW1SMllsbDBlVlJVVEZjeWRFVTRRVWRxSzNORlpqaEdUMk5WYURWSWFY
SnpWbVJwY25OV1pHbHljMVprYVhKelZtUnBjbk5XClpHbHlOeThtSTNoQk8wRlFlVmhwVTFBNGNX
WkxlVzlMUVRaa1EzaElXR1F4TlU0eE9YcHBhRzF0UzNWNFZqSkxkazUySzJOcWNGZHAKTDBwbWVr
ZDVNSEZXZEZVek9FaDJXVlpRTkVoR1dIZHlhV3d5UzNVbUkzaEJPM2hXTWt0MWVGWXlTM1Y0VmpK
TGRYaFdNa3QyWm1ZNApRVzVFY1VkMmJtcFhjSFZKVUVSVVQwaFFZVzgxTTBWYWNEbFFSRGhOVlVZ
NVlsbHhOMFpZV1hFM1JsaDNUQ3RsVFRWdUwwNG1JM2hCCk8zSjZVVFZaVUZNNVlVOXZjQzkxZEZa
VGJUTm9lSEJwYTAxSGVGWXlTM1Y0VmpKTGRYaFdNa3QxZUZZeVMzVjRWakpMZFhoV0syZFEKTlU1
TmNtWnNWalZXUzJ0RlptOHlRVlpIS3pRbUkzaEJPMWRvZUZGNlRFWllXWEUzUmxodGJpOUJSR3Rw
YW5ZNFFXdDBOV3BXUWxWbgpWMnBGWlhrek1FUkZMMk5OVm1aREswdFlXWEUzUmxoWmNUZEdXRmx4
TjBaWVdYRTNSbGhaY1N0blVDc21JM2hCTzJOUFdsZElia3hZCldXRkVhU3R1UW5sbE9WVnVVVVF2
YVdWTFF5dHpPRlprYVhKelZtUnBjalJETDA5MVJWRXZiWGcxY0ZGQlowY3ZiR1ptZUdWcWJpOUIK
U1d4cGEwMUtlRll5UzNVbUkzaEJPM2hXTWt0MWVGWXlTM1Y0VmpKTGRYaFdNa3QxZUZZNU1tWTRO
RGRZTmpOdU5VOWxXRmhDY1RCTgpZemhFYW5kTlZuaEpaeTgwVlVFMGIyVnFOSEUzUmxoWmNYYzNP
RFIwVEdaVkwza21JM2hCTzNVNGVqSnBRVVl2TUdaT1RXbHVkVEYxCmRuSkJSRE5LYWpKNFZpdG1k
VXRZV1hFM1JsaFpjVGRHVlRacU9HeGxZM0JGVjFOUVVXUlNaVTUzUjFJeGRFcDVRMFIxUTBORmVG
WjIKT0VFbUkzaEJPM2RPTlRFdmQwTndaakZNTDBGTFVUVXZkMFJ0YWtaWVpqUkhPRFl2ZDBSVmRq
WnNMekJvZWk5QlVFNUhTM1V2ZDA0MQpNUzgyYkM5VmRpdHJUMll2YldwR1ZVcHhVR3czZWtKd2Ex
TW1JM2hCTzNrMmJIQnNNMWw0VHpOQ1NreHRRMU5LVjJGc1lVRjFjV2R0ClozaFdObmd2ZW1sWWNV
RjBkbnBWWlVGclpqWmtjSFI0UVVGbVJsaHFiVEl6UnpsSlkxWk1OMHg0VVRkR1dGbHhOMFltSTNo
Qk8xaDMKTHk5QlRUVk5ObGxpU0RnMFpGaHJjSGhxZG04M1lUWnFSeTlsUWtreVR6VlFWalF5ZUZO
SWJHMUxkWGhXTWt0MWVGWklZV0p2WlhRMgpjalp1Tmswd0t6VjJkbEkwSzNRNVYyZ21JM2hCTzJ0
dE5HTnhPR1ZZUVU1VGRrVXdjbWx4VGk5M1RqVXhMelpzTDFWMksydFBaaTl0CmFrWllaalJIT0RZ
dk9WTXZjVmd2VTBoUUwzcFNhWEoyT0VSbFpHWXJjR1l4VEM5d1JHNHZOVzhtSTNoQk8zaFdNeXRD
ZGs5MkwxVjIKTm13dk1HaDZMemhCVGtkTGNGcHdOa3BLWmpKNVQwOVRVRXRwYzNBM1ozTkJVbWx4
Ym1OM2JVTTFiR2hLTlVkS01sUnNNSEo0VGtzMApjU3QwZGl0alVVNG1JM2hCTzJGWE5UaHBObkJ3
VEVnNU4zQXhLMXBDTDNocGRWa3hTeTkzUkVSNFVHbG9OM3BwY25OV1pHbHhlV1ZEClMyVkRVME5h
VVRoTmNXeEtSVkJTYkZsVlNWQjZSMHQyZW00NE5DdFlZbTRtSTNoQk8za3pOWEF4V0ZGeVowVlRZ
V1JqZVZGQmJqbHcKUm1JMFNDOTNRbXRzUjNoVGF5dExkWGhXTWt0d2NqVldNRTlpV0M5TmRXdzJT
a1JZTVU1U2RXOWlXVVZrYUVrMFZYUTRiRUp5YVhJbQpJM2hCT3psSVNXOXZORzlyYVdwVlNraEhi
MVpHU0ZGTGIyOUNhV2hrYVhKelZtUnBjalV3THpWNlRIVjNkV2dyVjJKUWExRXdNVEZqCmVrSmhO
MFZTVW05MFlXVXpjVFJ4T0U4dlNsQlhlRzhtSTNoQk8zWTFjU3RYY2pGdVExSjBaVXhpVTAxbFox
TTNWVEkzVmpseFV6UncKWm1adFMwaFpjVGRHV0ZseEsxcDJLMk40ZGt0NmF6WkdOWEZwVVd4UlNE
QjVOMlZ1VkdONlVXWm1WMWhHV0hvbUkzaEJPMHhwYkRKTApkWGhXTWt0MmMwd3Zia1ZtZVRZNWFD
dFlNVE55UlhGc1dERnRPRnB2YVZKVGMwNXpVRk5WTDNkRVNYb3hUVlZRWTJOV1pHbHljMVpWClRs
RjJSWE55UXpWMlNFWlZkRzhtSTNoQk8yNXRXV1JPYnpGTVNITm1SRVpZTlRBclZXOVhiamd4WVU1
RGNFRmhWeXQwYTBKUVVVWncKYkVkTFZraDZSRUZKVG1ZeFQwRkJjVWx5ZFdSQmNEWnFha2wzYjJO
V1pYUm1PRFJ2SzJFbUkzaEJPMnd3YmpoNGNFNUpiV1pxWWpZMwpZazVCYjA5M0szTlJablpaZG1J
M1NXdFZaVFY0VlhaemJrWkVjMVprYVhKelZtWk9NeTlCUkd4YUsxWmtlR1J4Ym01MlUwbFVTVGwy
ClIwbGtZMmttSTNoQk8xRkZkRFpUUkRrelkxVTRSVWgzZGpkVlVGazBjU3RZWTFWMWVGWXlTM1p2
YWk5dVJYbzRkVXhwTmpGdFlucDQKWmxKR1lrdDNWamRtVTJsM0wzWk1hVkZHU2xwR2NpdDZSMmhM
TDA0bUkzaEJPM1paTkc5bVZtVkxkWGhXTWt0MWVGWTRhR1k0TldWaApLMnczTlRrd0wxSTBNalZL
Y0U1cFJFdFFOVnB5Y0hrM1JDOXJWM05hZUZOSWFHdFZjMnROY1ZONFRWVnJhbGxQYW1wWmFHd21J
M2hCCk8wNVJVbWx5T1VaUVNUTnRWMGg2VURWUU1HcFlOSEZtTjJ0TVYwOVhVbEl3VjFkc1NsVXZN
azFuV21OVlNqVnBjbk5XWkdseVNDOVEKTTJzMmR6ZzBLMVYwVWpoMldIWjNjR1ZTTUdnbUkzaEJP
MjF3VlhoVVNXVlZWV2N2TVZoQmNqUnBiemMwY1M5UUwwRk5lV1ZZVGxnNApkRFl6WkRaTWNUaENk
RGxSYzI1Tll6QmFNMEk0UjFVdmRFdDNNMVU1ZUdsc1RFMVdaR2x4WWl0Vkwwc21JM2hCT3l0eEsy
RlFUVTVzCmIxZHNVa2RYT0had1FrZDFNVlpTWlhKNVVEUkxhVEZhZG1KR1dEWkZLMWRtVERsb05X
UTRkalptYjJSbmRFeFVWRzlGWjJsS05uUjMKUmtNM1pqVlVSM0pJTTA4bUkzaEJPMHRGZW5oV01r
dDFlRlpuTXpVMFlTdDFhR1pzVmpWcWRrOVJWMU5oTUdGNmFISXhURE5hUlVGdwpOMmRUUm5admVG
WTRXR1pzV0dKRE5TOU5lbmx5UTFGRGNERmhlVnBzV1ZaQ1ZtSW1JM2hCTzJoSFNVazVkMDFWY1ZB
MWF6SndkRkI2ClJEaDZNakk1U1hSWGRsWlZkREZMYVRSbWFXWndSeXRMY0ZKdk1uSllkV28yZGxw
aGNsbDJObVExV1ZSNE0wNTFMMmM0VkVKc2NqZFcKUnlzbUkzaEJPMHQyTUZJNGNHVmFURWg2VGpW
aE1ETllOMFV4ZEhSU1oxZGFWbkpZWjNneVpVMHJOazlEY0RsNGFXaE9jMVprYVhKegpWbGQ1VW5o
NWVIUklTVzlsVG5kV1pFZEJTM053UmtORFJERW1JM2hCTzBKNFZqUklLMWx1TDA5S01tbGhlR1I1
Tm1vMVUzWkdNR0UwCmJGQktPVTl0VlhaaFJtbGtla2RXSzA5SlpURkhTR2RDYVhKNU5tSXZRVXA0
VVM5T1pVODBPVXBHTUN0YVN6QTVaRXdtSTNoQk8ydG8KUzFad1YycHZjaXN2TW1OVk1ucFVlVkl2
ZW1sQ1RXeDZSbVJsWXpsVmFtVkNRMGRpVkdSUVRHNXVNelIyVHpSUmNqYzRWaXRVV1c5bQpVMWR0
Tm1KWllWcFpVV0ZtY0RoRFYzUW1JM2hCTzJ4aGIwbHlaVE5wUVZaRlVsSlJRVUZaY1dsalZtUnBj
bk5XVldJeU9IUmlSM3B1CmRtSjFVVkV5ZEhKSE9ERjRUVE15VldwcVZYTTNTREpEYVhWTGRucDFP
RGhsV25BdlRraHRMMVltSTNoQk8zWk5SWGRMYmxWaWJEVloKTUdKamNFWllha1Z1SzNkcVEzSTVS
MHRWYW5oV09WTm1PRFJvSzJaRmJUQXJMM2RFU2xZelNsTmhNbHB5TjFSQmVEWjRUMUZLTkhndgpj
WFpTTm1ZMVVqZ21JM2hCTzAxVlVHOHZSbGhaY1RkR1dGbHhkMm80ZVM5NVp6aHZMMjFDV25GMWNY
aE9RbkZWU3poaVZGWk1aV2R1CmFrWmhPRlJZV2pCeFpuTjBPVVpFZG1seU5UUXhlaTl1UlZCNkww
RkhhM29tSTNoQk8yWnZiUzl6VGxSMGNXNW5WMW8zWlZWcGRtUkgKVmpCSUwwRkJaVXRpVlRsSEwz
ZERZMUoyZWtkMU5XeEhjRmhrYUhCMGRsZzBNamxTTlRWTFpVdHZhVGhVT1V4cVJtSm1VUzkzUTFZ
bQpJM2hCT3pNMVR5dFdabms0Y3pOSGJrSnlkbFppYUZGME0zRnpORWh4ZFc4ek5FbHZNbXBxY25a
NFNGaDFWRkZaYjFvemFYSnpWbVJwCmNuTldaazB2TDBGRWJVUTFNRmhxY0Vock5qSnJjV0VtSTNo
Qk95OXdURlZHUWtjek1tODNaRlF2ZHpkRlpqWndPRTFXWlZNdmEwSmEKYlRjdlFVUm9PSE40UTNS
V2RVcEtkR2xDZEVKQ1NrdGxkamhCY1Zsd1Myd3JaVEZyWWxBNE0yWk5PRXBZYVZjbUkzaEJPM1V2
VjNCUgphbUZsVGxweE55dFFUM1ZMYUdkbFMzWnZWQzl1UmxnNE1Hc3dkbFUxVUVwUGNYcGpZa3hW
Y0ZCVk1HMVNhbk5zTW1GQ2IyUXJNSGRJCmR5ODFVUzk1YzFWUWNTOUdXRmttSTNoQk8zRTNSbGha
Y1RkR1dGbHhOMFpZV1hFM1JsaFpjVGRHV0dkSUwwOVdialZ0VW1GYWIwc3IKVTNSUWJFSXhTRlpS
YzIxd1JsUjJSbUZMWVdoRU5FZGFhQzkzU1ZBNE1rdDJhM1pHVEhNbUkzaEJPMVpVYW5sb05XOHhU
SGx5Tld3dwpMMWc1VG1Gc01WbFRhVkZNVldkUGJsTlRUbkZtYzNWb1MyNHlUMHQyTUVRNGIyVmhk
RXM0TVN0WVRFaFlkRXhtYm1GWWMxbGpTMU5QClZXSnFXalFtSTNoQk96TndLekJxUVhGalZVcDRh
WEp6Vm1ScGNuTldaR2x5YzFaa2FYSnpWbVJwY25OV1UzWjZValZyTUhaNU1UVm0KZG5Sa01WTlVN
SEpIZDJsTmMzQTNjMlZwYjNacGVuTlJjV3A0VDBzbUkzaEJPM1o2TlRnMVpXRmtVamd4SzFvNVVU
aDNZV2xoTTA0dgpTMXBEYkdGb1JVaDNlSGh5V0hOcFFVdFFiR2xzTmxBNFFUZzBjVEpNV0ZBMWRE
STRkMFpTV2xkV01VOW1XVTF2YURoUU9FRW1JM2hCCk8ya3pSbE53THpoQlQxVjBhRGxYTDA0Mksy
MXdWRFkzWVRKek9XWklha1ZKWml0YVQwdG9OVWhwY1RaUFVqUXpWMU5PYVdwdlVYbFAKY0c5UlVu
VkRRMDFXWmxwbU5VRXZibXhoSzJNbUkzaEJPMlJRYVRCRVdFcHNhamd4VjJsVlZtMHlSalZIWnk5
MlJTOTNRMHhCVUhSeQpMM05vZEZkcGFEZE9hWEp6Vm1ScGNuTldaR2x5YzFaa2FYSnpWbVJwY2tO
bWVsY3ZUa3hTWm5rck9IWW1JM2hCTzFCbU0xcFhabFUxCmQzazJXbkF6UzJwNlUwUjFZV0p5UjNS
aGN6TXdaRk5OVm1aRFYzWTJPWEZ0ZGpaNlpEWjRjWE0xZFV3ck9XdE5jemh3T0ZRd1FVaGEKVmtk
M1NGbFpjRk12UmxnbUkzaEJPMWx4TjBaWWNXWTFSaTl1VUdNdmJDOXlSRmRzSzFodU9ITmhaelJP
TjBGMmVFNUVTamxyV0VWVApLMGxIZW1kbVlVaDFRbWx5TjFnd00xVnlSRlUzUTBSVlRsQnVVelp6
Y25CQ1RHSW1JM2hCT3pORlVrUkpOazFMWjJkcVJrTktlRll5ClMzVjRWakpMZFhoV01rdDFlRll5
UzNKS2NHOVpTVnBLTlRWR2FXaHBWWFpNU3pWRGNYRnhTM042VFdSblFVOXdlRlk0V1M4NFFVOVIK
YmpVbUkzaEJPekJJZW5aeGR6QmlVbkJUVUVzcmJrOVRhbWx2SzNSNmFXODVXV2N3SzBKU2RFZFFi
VlF4YjBaTWVETkdXREJNTDBGTgpOR0kyWTFwUVRraHRTRlYxVHpGMFdYaFhlR0Z1VkRaNFRub21J
M2hCTzNCWGJtWTJkalEwYjB4bUwwRkViVlJ3YUdvNGVpdFlkRlZ3CmRHUlhWWFIwZVM4MWFIQmxa
aTlCUjAwMGNVaDZlbWxzTWt0eGRIQmtNMVp1WTNoWVZuQk5PWFpqZDAxS1NWbzBiVXNtSTNoQk8w
OXEKY1dGb2JGcGhSVVZaY1N0dmRubHJMelY1YlhOeWNVdElVblpRYW1reWRURkJVMGhZUmxkclZX
NWlMMU5HV0NzM1lpOUJRekZJU0hnMApORzltVWtaeVpGY3hNMko0TTA1eVRXc21JM2hCT3psMlRX
OWxTMkZLWnpaUGNEWk5ja3hWUldaTVJsWlVSbGhaY1RkR1dGbHhOMFpZCldYRTRjQzlPWWk5dVNW
UjVjRFZLYW0xelRFWXdNV1o2UjB0eFRFZEtjWGhSVGpRelJXY3JlbFFtSTNoQk95dFJaa1k0ZFhW
TGRtcHkKZWxvMWRURXZkMEV5WVRGT2NrOTFNMVJZVmpkT2MwTmthMnBSUld4Wk5ERTJTMmt4TWtF
dldHbHNTamhXWkdseWMxWmthWEp6Vm1WcwpMMnhJSzJWWWJWQW1JM2hCT3poMmNtZFhjRUl4U0hr
M1N6TkxabFJJWVc1QmF6ZDVWemRIZGtKMlJXWmFZbloyZFVaWU1rWTFSeTlOCmFubG9OVE56VUhK
bFoxaDVlazl2UW5WTVRqWktZM2N4TjFOU1JURkhMemNtSTNoQk8xRnhjRGRGTkc5YVRtbHljMVpr
YVhKelZtUnAKY25OV1UyWjZWRFYzT0hRclZtUk5abFYwWm5ZMGNrY3hWVWhwV0ZCNGVVVkRka2RP
UWxadVlqSlZXWEVyVVM5NmJDODFlVVF4Ym5vbQpJM2hCTzNjd2RXdGhVVXBPVGpoeWFIUTBZVEJ1
ZFhGSVdYcHNWRkZNTXpsTlJXcDRjblJTVXpobmVGWXlTM1p5VEM5dVJHNVRha1ExClV6RXpWbE4w
VUhKc09HeDFjSEJSYTFjd1VXSTNjVE1tSTNoQk8wSjRVV2xtSzJOMk9VWk9NVFZFTUhwV1ZVWlhN
RFl2UTFCME1HcDEKV1RKQ1RtWTRRVmhxVVZseEsxSk5WWFY0VmpKTGRYaFdiRmhyZGpnd1VGQllh
ekpSU0ZGT1ZteDBOMlYyU2pjbUkzaEJPMFl2TTNSegplRkJYYzB3NGEwSlFPRUZOZEVRM05IRTVk
VGh6THpnMWFuTkZVMHg2VG05SVNtaFJVR1JoWkVwVGRtbFNRazR2ZDBKV1kxVlZPVVV3CmRpOUJT
bmxtTDB0RE9VRTVZbFVtSTNoQk8zQTVVRms1UlhWeVYySnlOMjFHV214SU16UnhibFZtTlRobWJF
TTJRakU0ZWpKblFqWkMKYUVsd0t6VnJRbmhXUXpNekwwOVNTRFZQVjJGeldEaDRVbmx6VDJsUlVW
aE5jRXB3VjJjbUkzaEJPMHRTYkdaNGVGWm9VRzFJTDBGSwpla0U0YlRKeFRXMW9ZVlJsWVd4UVVU
aFlia3RYYzA1bE1qbGFXRkF2UVVGQmVGWTBlRFUwTHpWNVN5OU5ibnBXU0VwaEwxaEdNR1pVCldr
dG9jbEFtSTNoQk8xUjNXV2w1Ym1GcWVrVnRWblpqUW1kd09FMVZNRGgzU2twT1ZERjRWakpMZFho
V01rdDFlRll5UzNWNFZqSkwKYjI1VWRGTXhTRlJNZVVzck1EWTFiSE0zZVVVNGIySnRRakpxYTFV
bUkzaEJPeXRMYzNCQ1IwdDJXbVpLTHk5UFZpOXVOMUl3YW5RNQpZMmRuT0hkWGNWVkljVk12TmxC
ak1FaGlNVmwzVlZCNllVMXVNM2hYYm5FeWFTODRRVTlZU0RWaU0ybExUbE4wWWk5VE5YWW1JM2hC
Ck96SjFWVk42ZUVRMVRrVjRZeTkzUkVGRVJrUk1URmd2YmtsUU9FRktlVFZCVFdadFYwWmhNUzky
V1hKcFRIQXZlR3RwVkVaV1YxZzQKSzNaNWFHbFlhek50WlRGSmNsUTBRa3MxS3pVbUkzaEJPMVZL
ZUZacWRYTm1PRFZXWm14T1dYRXpNVk0wZGs1V1kyWmFSbkppVDJkSwpjRFF6U0c5aVdYRTRkamhC
VG5ZNFFYcHNMelZ0ZGtabFJIbDRjR05QYkZKdVdtSjFOVkF4YldObU5WTW1JM2hCTzNCU1dXeFFL
M05JCmVGZHVhQ3QyT0VGdFdGZ3ZRVVJFWm5SeFIzVllPQ3R2V0dwaVpYSlBOV05uWm5seFQybHlO
MHRMV1hCVGVrWllXWEUzUmxnelVpOTYKYW1wdmJ6QjJPRzlrUlVRbUkzaEJPMHg0Ylhab1RtVjVL
eTl5VTNOWmVpOUJUV2xuYlV0Rk5pOVBTSGswWmsxWU5Wb3JXV1JNVW1WVgplakpxVkRJMk9YcE1Z
a1ZVZUdkbU5ucFNaMWx4TDFBelJreHpWbVJwY25OV1pHa21JM2hCTzNKelZtUnBjbk5XWkdseWMx
WmthWEp6ClZtUnBjbk5XWkdseWMxWmthWEp6Vm1ScGNuTldaR2x5YzFaa2FYSnpWbVJwY25OV1pH
bHljMVprYVhGMFdsZGtlR1V6YTBadVluSjYKZFV3bUkzaEJPMjFTU1ZsVlNHUTFSME54VUhCS2VG
WXJhMGRvTmxaRWNFZHBZV1p3VFVjNFQyNHlNRTV5UldWdWQzZFNhVTVtZDFoRwpRMDU0VmpoQlpt
NUVOVXRyT0c1bWJVWnhNbXRDUTJ4ck1HZ21JM2hCTzNWa1QxQlpNakExVEhnd05tWlpNMUVyTm01
R1RFTTRWbVJwCmNuTldaR2x5YzFaa2FYSnpWbVJwY25OV1pHbHljMVprYVhKelZtUnBjbk5XWkds
eWMxWmthWEp6Vm1ScGNuTldaR2ttSTNoQk8zSnoKVm1ScGNuTldaR2x5YzFaa2FYSXhWQzl1UjNa
NWFTOXRSRGd3WWtNMFpHRXlaV2xCTm1walRqSTFlRVZEUVZZNFpsWmFWRGhuWTFaTQpOMlo0VVRk
R1dHMVFOVFZtYXpWQ0sxa21JM2hCTzJWcFVsTlhZbkJpWlZsMFQwUkhkM1ZLUzJoS1JXSmtiMHBU
UVZSNFNqTlZNQ3RGCkwwMDBjU3RPTDA1UWEyWjZZalZWZGtSaEsxbE9URzV6U0VKTGNrcEpkRmx1
Y0ROcWJGZHpZbW9tSTNoQk95OVdXVFJ3VTB4R1dGbHgKTjBaWVdYRTNSbGhaY1RkR1dGbHhOMFpZ
V1hFM1JsaFpjVGRHV0ZseE4wWllXWEUzUmxoWmNUZEdXRmx4TjBaWVdYRTNSbGhaY1RkRwpXRmx4
Ymxoc2Fua21JM2hCTzFvMWNUZ3dXR2QwVGtFd2RUUXhRMWQwUjAxVFNEQXdPVFZLUkZKRlJ5OVdh
VTFXWm1GbU5VZ3ZiRlJJCksxaDJiR1J5WlRWa1NuUmpNVVpzYlRGVFpWQmtVVlpDUldOTFJUbFdh
a0ltSTNoQk8wOHZZMnR1UmtRd1lrWllXWEUzUmxaUE5YUmkKWVRkblpUTjFiMVZ1ZERWQ1UxTkhW
bEUyVFZCQ2JHRnZUMHR6UWpFM09HZFFlV3d4YjNVNEwyd3JSekJ0WWk5a2RHbDZNblJEWlRRbQpJ
M2hCTzFOSmNrZzVOalJ4ZDFCV2RpdGpUeTlLYzNoTVlWaHlaQzlhVmk5YWJsZExOVlZIZG1GcGQw
NVVOVzVHVjBrMmFpOTNRVFJpClpWcEplVE0yVGpoNFYyUjVVREpVWTFGNU1qbG1ibmNtSTNoQk8w
NTRWRVppV1RObVpqZzBjR1p0ZW1KRksycElXVE4wUkhOWlRHNXEKV0dWdE0zSk1SbWx0TUdsMlpq
aEJia2h1T0RRM1UzWnhaVmMxV2tGTGEwZEhZVEp0Y1VGaFpFazFWMDlMY0ZBbUkzaEJPMk12YkVR
cgpZVloyV0RGUVMyMXhUbEV3TDJSWGMzTjJXQzlxUjNKWmNXeFdlalZMT0RWWE1XWnlUMmMyYWtK
NFlta3pjVmRyTmxWWlpHcDVVV0kwCmNXZGFaRW94VjBadFYxZDVibW9tSTNoQk8xcGtNa1I0VDNC
SE1XUTJha1pWU21seWMxWmthWEp6Vm1ScGNuTldaR2x5YzFaa2FYRTIKVDB0WFZuaElSV3BQTlRa
SmIwcEtjSFl3UjB0dmVVaFJkR0p0UWsxUGJqTk5aMWh5ZDJnbUkzaEJPMnRoYmpORVJsVjRkSFpK
U0c1NQpOazVNWW5remNXczFTemhuU1RkTE5HWTBaa2cwVlU4eUswdHdibUl2UVVwT0wyMXlUMEZW
T0hFMmEwdHFiQ3M0ZEROcU1sQXJkVVl6Ck9YTldWRzBtSTNoQk8zb3ZOWGg0TDA5WE5rOHpiRFZ2
YkhKUmRrNWpNbk5rVG5FNVJFeDVLelJaY21GbFYxQXZUMHAyTlhKWVJsQlgKVDI1WFpHVjJjak5N
UjIweFpqa3dlSGt2VEVaaVdrcHdNeTlQUjNVbUkzaEJPM1YxZHk5VFVHMVhNWFF4Tnk5V04yVlRZ
emt2TlRKbgpPWE5WVjNsMlUzWXJZMUJRU2xWS1JHRnVjazl2V0hCSU4wMUphSFF4VUhweGMzcG1Z
Mk5XV2pGdldDOVBVRE0xVTJGTlZXVW1JM2hCCk8waDVMMFJrZWtwUmJWY3JXamR4Y0VoamNFdDZV
aTlqZFV0ekszUmlVekJ6TkVWME4xTkhUek4wTkRscmFHbFZTV2xxTWxaUlFVMVcKVm1OV1pHbHlj
MVprYVhKelZtUnBjbk5XWkdrbUkzaEJPM0p6Vm1ScGNuTldaR2x5YzFaVmNuSTJjalpFTDFkMVNE
Rm1PRUV6V2paMApUMGhZZG5reU5qUnhiR016SzBSbVUyWXhkakJrTmxaRWVqVXJhSGh3TTNKWVlr
TnhXQzg0UVVsTWRpc21JM2hCT3pGSUx6QTJXWEYwCmF5ODFWbFkyWW1WeUsyZDJWRzlsWmt3MmJu
ZzBNRE55V0hScGNVRXZOVUZpTHpNM1NDOWpkbmRMY1ZGbU9IRlZPVlptY1M5M1JHaDIKTVhZeVVG
UXJiMk4yYjNBbUkzaEJPM1pwY1U0dmQwTlJXR1k0UVdGcUx6WmtUVXR5TkZBNFFXeFhkbkpNTmtn
MlJ6bGhkbmRqVUhGMgpTM1owVkdaR1ZYbHFMM2QyTm1rcmJqbFNPVk52TkdObVVqVmpjVGRWY0RO
M1MyMG1JM2hCTzIxTGRYaFdNa3QxZUZZeVMzVjRWakpMCmRYaFdNa3QxZUZZeVMzVjRWaTh2TWxF
OVBUd3ZlRzF3UjBsdFp6cHBiV0ZuWlQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEM5eVpHWTYKYkdr
K0NpQWdJQ0FnSUNBZ0lDQWdJRHd2Y21SbU9rRnNkRDRLSUNBZ0lDQWdJQ0FnUEM5NGJYQTZWR2gx
YldKdVlXbHNjejRLSUNBZwpJQ0FnUEM5eVpHWTZSR1Z6WTNKcGNIUnBiMjQrQ2lBZ0lDQWdJRHh5
WkdZNlJHVnpZM0pwY0hScGIyNGdjbVJtT21GaWIzVjBQU0lpCkNpQWdJQ0FnSUNBZ0lDQWdJSGh0
Ykc1ek9uaHRjRlJRWnowaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOTRZWEF2TVM0d0wzUXYK
Y0djdklnb2dJQ0FnSUNBZ0lDQWdJQ0I0Yld4dWN6cHpkRVJwYlQwaWFIUjBjRG92TDI1ekxtRmti
MkpsTG1OdmJTOTRZWEF2TVM0dwpMM05VZVhCbEwwUnBiV1Z1YzJsdmJuTWpJZ29nSUNBZ0lDQWdJ
Q0FnSUNCNGJXeHVjenA0YlhCSFBTSm9kSFJ3T2k4dmJuTXVZV1J2ClltVXVZMjl0TDNoaGNDOHhM
akF2Wnk4aVBnb2dJQ0FnSUNBZ0lDQThlRzF3VkZCbk9rNVFZV2RsY3o0eFBDOTRiWEJVVUdjNlRs
QmgKWjJWelBnb2dJQ0FnSUNBZ0lDQThlRzF3VkZCbk9raGhjMVpwYzJsaWJHVlVjbUZ1YzNCaGNt
VnVZM2srUm1Gc2MyVThMM2h0Y0ZSUQpaenBJWVhOV2FYTnBZbXhsVkhKaGJuTndZWEpsYm1ONVBn
b2dJQ0FnSUNBZ0lDQThlRzF3VkZCbk9raGhjMVpwYzJsaWJHVlBkbVZ5CmNISnBiblErUm1Gc2My
VThMM2h0Y0ZSUVp6cElZWE5XYVhOcFlteGxUM1psY25CeWFXNTBQZ29nSUNBZ0lDQWdJQ0E4ZUcx
d1ZGQm4KT2sxaGVGQmhaMlZUYVhwbElISmtaanB3WVhKelpWUjVjR1U5SWxKbGMyOTFjbU5sSWo0
S0lDQWdJQ0FnSUNBZ0lDQWdQSE4wUkdsdApPbmMrTVRRNExqQXdNREF3TUR3dmMzUkVhVzA2ZHo0
S0lDQWdJQ0FnSUNBZ0lDQWdQSE4wUkdsdE9tZytNVEl4TGpBd01EQXdNRHd2CmMzUkVhVzA2YUQ0
S0lDQWdJQ0FnSUNBZ0lDQWdQSE4wUkdsdE9uVnVhWFErVUc5cGJuUnpQQzl6ZEVScGJUcDFibWww
UGdvZ0lDQWcKSUNBZ0lDQThMM2h0Y0ZSUVp6cE5ZWGhRWVdkbFUybDZaVDRLSUNBZ0lDQWdJQ0Fn
UEhodGNGUlFaenBRYkdGMFpVNWhiV1Z6UGdvZwpJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9sTmxjVDRL
SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FUNUNiR0ZqYXp3dmNtUm1PbXhwClBnb2dJQ0Fn
SUNBZ0lDQWdJQ0E4TDNKa1pqcFRaWEUrQ2lBZ0lDQWdJQ0FnSUR3dmVHMXdWRkJuT2xCc1lYUmxU
bUZ0WlhNK0NpQWcKSUNBZ0lDQWdJRHg0YlhCVVVHYzZVM2RoZEdOb1IzSnZkWEJ6UGdvZ0lDQWdJ
Q0FnSUNBZ0lDQThjbVJtT2xObGNUNEtJQ0FnSUNBZwpJQ0FnSUNBZ0lDQWdQSEprWmpwc2FTQnla
R1k2Y0dGeWMyVlVlWEJsUFNKU1pYTnZkWEpqWlNJK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnCklDQWdJ
RHg0YlhCSE9tZHliM1Z3VG1GdFpUNUVaV1poZFd4MElGTjNZWFJqYUNCSGNtOTFjRHd2ZUcxd1J6
cG5jbTkxY0U1aGJXVSsKQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4NGJYQkhPbWR5YjNWd1ZI
bHdaVDR3UEM5NGJYQkhPbWR5YjNWd1ZIbHdaVDRLSUNBZwpJQ0FnSUNBZ0lDQWdJQ0FnUEM5eVpH
WTZiR2srQ2lBZ0lDQWdJQ0FnSUNBZ0lEd3ZjbVJtT2xObGNUNEtJQ0FnSUNBZ0lDQWdQQzk0CmJY
QlVVR2M2VTNkaGRHTm9SM0p2ZFhCelBnb2dJQ0FnSUNBOEwzSmtaanBFWlhOamNtbHdkR2x2Ymo0
S0lDQWdJQ0FnUEhKa1pqcEUKWlhOamNtbHdkR2x2YmlCeVpHWTZZV0p2ZFhROUlpSUtJQ0FnSUNB
Z0lDQWdJQ0FnZUcxc2JuTTZaR005SW1oMGRIQTZMeTl3ZFhKcwpMbTl5Wnk5a1l5OWxiR1Z0Wlc1
MGN5OHhMakV2SWo0S0lDQWdJQ0FnSUNBZ1BHUmpPbVp2Y20xaGRENWhjSEJzYVdOaGRHbHZiaTl3
ClpHWThMMlJqT21admNtMWhkRDRLSUNBZ0lDQWdJQ0FnUEdSak9uUnBkR3hsUGdvZ0lDQWdJQ0Fn
SUNBZ0lDQThjbVJtT2tGc2RENEsKSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FTQjRiV3c2
YkdGdVp6MGllQzFrWldaaGRXeDBJajVEYkc5elpXUmZRMkZ3ZEdsdgpiand2Y21SbU9teHBQZ29n
SUNBZ0lDQWdJQ0FnSUNBOEwzSmtaanBCYkhRK0NpQWdJQ0FnSUNBZ0lEd3ZaR002ZEdsMGJHVStD
aUFnCklDQWdJRHd2Y21SbU9rUmxjMk55YVhCMGFXOXVQZ29nSUNBZ0lDQThjbVJtT2tSbGMyTnlh
WEIwYVc5dUlISmtaanBoWW05MWREMGkKSWdvZ0lDQWdJQ0FnSUNBZ0lDQjRiV3h1Y3pwNGJYQk5U
VDBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5NFlYQXZNUzR3TDIxdApMeUlLSUNBZ0lDQWdJ
Q0FnSUNBZ2VHMXNibk02YzNSU1pXWTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6
RXVNQzl6ClZIbHdaUzlTWlhOdmRYSmpaVkpsWmlNaUNpQWdJQ0FnSUNBZ0lDQWdJSGh0Ykc1ek9u
TjBSWFowUFNKb2RIUndPaTh2Ym5NdVlXUnYKWW1VdVkyOXRMM2hoY0M4eExqQXZjMVI1Y0dVdlVt
VnpiM1Z5WTJWRmRtVnVkQ01pUGdvZ0lDQWdJQ0FnSUNBOGVHMXdUVTA2VW1WdQpaR2wwYVc5dVEy
eGhjM00rY0hKdmIyWTZjR1JtUEM5NGJYQk5UVHBTWlc1a2FYUnBiMjVEYkdGemN6NEtJQ0FnSUNB
Z0lDQWdQSGh0CmNFMU5Pa1J2WTNWdFpXNTBTVVErZUcxd0xtUnBaRHBHTnpkR01URTNOREEzTWpB
Mk9ERXhPVFZHUlVVd01rWXdNRFU1UVRWQlJUd3YKZUcxd1RVMDZSRzlqZFcxbGJuUkpSRDRLSUNB
Z0lDQWdJQ0FnUEhodGNFMU5Pa2x1YzNSaGJtTmxTVVErZFhWcFpEcGtabUk1T0RkaQpNUzB5TjJJ
MUxUa3hOR1V0WVdJNVpDMDJNalV5WWpRd1lqaGpOemM4TDNodGNFMU5Pa2x1YzNSaGJtTmxTVVEr
Q2lBZ0lDQWdJQ0FnCklEeDRiWEJOVFRwUGNtbG5hVzVoYkVSdlkzVnRaVzUwU1VRK2VHMXdMbVJw
WkRwR056ZEdNVEUzTkRBM01qQTJPREV4T1RWR1JVVXcKTWtZd01EVTVRVFZCUlR3dmVHMXdUVTA2
VDNKcFoybHVZV3hFYjJOMWJXVnVkRWxFUGdvZ0lDQWdJQ0FnSUNBOGVHMXdUVTA2UkdWeQphWFps
WkVaeWIyMGdjbVJtT25CaGNuTmxWSGx3WlQwaVVtVnpiM1Z5WTJVaVBnb2dJQ0FnSUNBZ0lDQWdJ
Q0E4YzNSU1pXWTZjbVZ1ClpHbDBhVzl1UTJ4aGMzTStjSEp2YjJZNmNHUm1QQzl6ZEZKbFpqcHla
VzVrYVhScGIyNURiR0Z6Y3o0S0lDQWdJQ0FnSUNBZ1BDOTQKYlhCTlRUcEVaWEpwZG1Wa1JuSnZi
VDRLSUNBZ0lDQWdJQ0FnUEhodGNFMU5Pa2hwYzNSdmNuaytDaUFnSUNBZ0lDQWdJQ0FnSUR4eQpa
R1k2VTJWeFBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtUm1PbXhwSUhKa1pqcHdZWEp6WlZSNWNH
VTlJbEpsYzI5MWNtTmxJajRLCklDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BITjBSWFowT21GamRH
bHZiajV6WVhabFpEd3ZjM1JGZG5RNllXTjBhVzl1UGdvZ0lDQWcKSUNBZ0lDQWdJQ0FnSUNBZ0lD
QThjM1JGZG5RNmFXNXpkR0Z1WTJWSlJENTRiWEF1YVdsa09rWTNOMFl4TVRjME1EY3lNRFk0TVRF
NQpOVVpGUlRBeVJqQXdOVGxCTlVGRlBDOXpkRVYyZERwcGJuTjBZVzVqWlVsRVBnb2dJQ0FnSUNB
Z0lDQWdJQ0FnSUNBZ0lDQThjM1JGCmRuUTZkMmhsYmo0eU1EQTVMVEV4TFRJelZERXpPalUzT2pF
eUxUQTRPakF3UEM5emRFVjJkRHAzYUdWdVBnb2dJQ0FnSUNBZ0lDQWcKSUNBZ0lDQWdJQ0E4YzNS
RmRuUTZjMjltZEhkaGNtVkJaMlZ1ZEQ1QlpHOWlaU0JKYkd4MWMzUnlZWFJ2Y2lCRFV6UThMM04w
UlhaMApPbk52Wm5SM1lYSmxRV2RsYm5RK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHpkRVYy
ZERwamFHRnVaMlZrUGk4OEwzTjBSWFowCk9tTm9ZVzVuWldRK0NpQWdJQ0FnSUNBZ0lDQWdJQ0Fn
SUR3dmNtUm1PbXhwUGdvZ0lDQWdJQ0FnSUNBZ0lDQThMM0prWmpwVFpYRSsKQ2lBZ0lDQWdJQ0Fn
SUR3dmVHMXdUVTA2U0dsemRHOXllVDRLSUNBZ0lDQWdQQzl5WkdZNlJHVnpZM0pwY0hScGIyNCtD
aUFnSUNBZwpJRHh5WkdZNlJHVnpZM0pwY0hScGIyNGdjbVJtT21GaWIzVjBQU0lpQ2lBZ0lDQWdJ
Q0FnSUNBZ0lIaHRiRzV6T25Ca1pqMGlhSFIwCmNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5d1pHWXZN
UzR6THlJK0NpQWdJQ0FnSUNBZ0lEeHdaR1k2VUhKdlpIVmpaWEkrUVdSdlltVWcKVUVSR0lHeHBZ
bkpoY25rZ09TNHdNRHd2Y0dSbU9sQnliMlIxWTJWeVBnb2dJQ0FnSUNBOEwzSmtaanBFWlhOamNt
bHdkR2x2Ymo0SwpJQ0FnUEM5eVpHWTZVa1JHUGdvOEwzZzZlRzF3YldWMFlUNEtJQ0FnSUNBZ0lD
QWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnCklDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lD
QWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWcKSUNBZ0lD
QWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNB
Z0lDQWdJQ0FnSUNBZwpJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNB
Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnCkNpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNB
Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWcKSUNB
Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FL
SUNBZ0lDQWdJQ0FnSUNBZwpJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0Fn
SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnCklDQWdJQ0FnSUNBZ0lDQWdJQ0Fn
SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWcK
SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJ
Q0FnSUNBZ0lDQWdJQ0FnSUNBZwpJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJ
Q0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnCklDQWdJQ0FnSUNBZ0lDQWdJ
Q0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lD
QWcKSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lD
QWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZwpJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lD
QWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnCklDQWdJQ0FnSUNBZ0lD
QWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNB
Z0lDQWcKSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lB
Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZwpJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNB
Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnCklDQWdJQ0FnSUNB
Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0Fn
SUNBZ0lDQWcKSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0Fn
SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZwpJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0Fn
SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnCklDQWdJQ0Fn
SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJ
Q0FnSUNBZ0NpQWcKSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJ
Q0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZwpJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJ
Q0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnCklDQWdJ
Q0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lD
QWdJQ0FnSUNBZ0lDQWcKSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lD
QWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZwpJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lD
QWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnCklD
QWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNB
Z0lDQWdJQ0FnSUNBZ0lDQWcKSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNB
Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZwpJQ0FLSUNBZ0lDQWdJQ0FnSUNB
Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0Fn
CklDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0Fn
SUNBZ0lBb2dJQ0FnSUNBZ0lDQWcKSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0Fn
SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZwpJQ0FnSUNBZ0lDQWdJQ0Fn
SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJ
Q0FnCklDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJ
Q0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWcKSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJ
Q0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZwpJQ0FnSUNBZ0lDQWdJ
Q0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lD
QWdJQ0FnCklDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lD
QWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWcKSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lD
QWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZwpJQ0FnSUNBZ0lD
QWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvOFAzaHdZV05yWlhRZ1pXNWtQU0ozSWo4K0RXVnVaSE4wY21W
aGJRMWxibVJ2Clltb05NeUF3SUc5aWFnMDhQQzlEYjNWdWRDQXhMMHRwWkhOYk5TQXdJRkpkTDFS
NWNHVXZVR0ZuWlhNK1BnMWxibVJ2WW1vTk5TQXcKSUc5aWFnMDhQQzlCY25SQ2IzaGJNQzR3TWpF
NU56STNJREF1TkRjME5qQTVJREUwTnk0NU5ERWdNVEl3TGprMk5GMHZRbXhsWldSQwpiM2hiTUM0
d0lEQXVNQ0F4TkRndU1DQXhNakV1TUYwdlEyOXVkR1Z1ZEhNZ05pQXdJRkl2VFdWa2FXRkNiM2hi
TUM0d0lEQXVNQ0F4Ck5EZ3VNQ0F4TWpFdU1GMHZVR0Z5Wlc1MElETWdNQ0JTTDFKbGMyOTFjbU5s
Y3p3OEwwVjRkRWRUZEdGMFpUdzhMMGRUTUNBM0lEQWcKVWo0K0wxQnliM0JsY25ScFpYTThQQzlO
UXpBOFBDOURiMnh2Y2xzeU1ESXlOQ0F6TWpjMk9DQTJOVFV6TlYwdlJHbHRiV1ZrSUdaaApiSE5s
TDBWa2FYUmhZbXhsSUhSeWRXVXZVSEpsZG1sbGR5QjBjblZsTDFCeWFXNTBaV1FnZEhKMVpTOVVh
WFJzWlNoTVlYbGxjaUF4CktTOVdhWE5wWW14bElIUnlkV1UrUGo0K1BqNHZWSEpwYlVKdmVGc3dM
akFnTUM0d0lERTBPQzR3SURFeU1TNHdYUzlVZVhCbEwxQmgKWjJVK1BnMWxibVJ2WW1vTk5pQXdJ
RzlpYWcwOFBDOUdhV3gwWlhJdlJteGhkR1ZFWldOdlpHVXZUR1Z1WjNSb0lEUTVNajQrYzNSeQpa
V0Z0RFFwSWlWUlVPMjhXTVJEcy9TdTJSdkptSDM2MkJFUkRpb2lDR3AwQ0JRbFNRc1cvWjN5ZjdR
TmRjWjd6N25wMlpuMTNuNy85CmVYcWp1NGQ3b2ZjZjdpbThCaUUxSlUyTjRsaThQWVd2OUF0Zng2
UDBNOXg5K2lMMDQzZDRCYnA5VTFXdU9YY3lZU21TNlhnNTQxOUMKTk9PVUM5YlJNMnMzMHNwRmZj
TWtuSlNPc0hCSlhJMmlLWHVyMUlTYk5tVFB4UkcwcytROGNFVVY2NXlCQ2w3TnlaVVRaV0ZMYVVR
Swo1OTRYZmg3WUJOaFJ3S214RmFlaVNPd1VFZHJTUWlCejV0YTlyYzVOeWloVmNjeUNtL3JFanVa
OVJOK1N3ZFE4cmRvVEhhR2cvWVU2CkoxZXl4QTFOSUsxME5HRXNnd09hdWVEemdsbzR1dytkL2RS
bFBHQlFJWmZXbStMZHVkWThGRmRCdEc3Rko3eG8zL0JVdkJ0WE5ER0YKWGhXMzdqSGJxZGdVUGlZ
NFh0SlNQbnJucnVVU1B4YkVZWGkyK2hGYVlreVcvTEdNOTVaOEhOZEYvM0dnNlZsdzdUZE1oL2wy
WU1MZAp5c1RMZ1ptOEhKakZ0d1Z4dEN5WFF6aWt0Ylo4R05TTHBXM0U2SzFZM2s0c1BLMkk0TlF4
WjBLWEMwZXdpaGx3NmlCVUhhNWdSR3JECjhBdEc1V3lnc1RRd0ZCREhDTVN4b2Ftc2hPR09Kb2Jl
dFVHQWNSTUJjeGxLczRwZENiaWlYRTZET2h3eE5JOGJOOWkxY1NQUGk1UmgKNE9Tem83MmNvNGRx
elRISnVEaUNzOHBwOGYvY2ovRDlYWGdNSHgvd2IzZ01md1VZQUVQZXpESU5aVzVrYzNSeVpXRnRE
V1Z1Wkc5aQphZzAzSURBZ2IySnFEVHc4TDBGSlV5Qm1ZV3h6WlM5Q1RTOU9iM0p0WVd3dlEwRWdN
UzR3TDA5UUlHWmhiSE5sTDA5UVRTQXhMMU5CCklIUnlkV1V2VTAxaGMyc3ZUbTl1WlM5VWVYQmxM
MFY0ZEVkVGRHRjBaUzlqWVNBeExqQXZiM0FnWm1Gc2MyVStQZzFsYm1Sdlltb04KT0NBd0lHOWlh
ZzA4UEM5RGNtVmhkR2x2YmtSaGRHVW9SRG95TURBNU1URXlNekV6TlRjeE9DMHdPQ2N3TUNjcEww
TnlaV0YwYjNJbwpRV1J2WW1VZ1NXeHNkWE4wY21GMGIzSWdRMU0wS1M5TmIyUkVZWFJsS0VRNk1q
QXdPVEV4TWpNeE16VTNNVGd0TURnbk1EQW5LUzlRCmNtOWtkV05sY2loQlpHOWlaU0JRUkVZZ2JH
bGljbUZ5ZVNBNUxqQXdLUzlVYVhSc1pTaERiRzl6WldSZlEyRndkR2x2YmlrK1BnMWwKYm1Sdllt
b05lSEpsWmcwd0lEa05NREF3TURBd01EQXdNQ0EyTlRVek5TQm1EUW93TURBd01EQXdNREUySURB
d01EQXdJRzROQ2pBdwpNREF3TURBd056WWdNREF3TURBZ2JnMEtNREF3TURBeE9UYzJPQ0F3TURB
d01DQnVEUW93TURBd01EQXdNREF3SURBd01EQXdJR1lOCkNqQXdNREF3TVRrNE1Ua2dNREF3TURB
Z2JnMEtNREF3TURBeU1ERTNOaUF3TURBd01DQnVEUW93TURBd01ESXdOek0ySURBd01EQXcKSUc0
TkNqQXdNREF3TWpBNE5EZ2dNREF3TURBZ2JnMEtkSEpoYVd4bGNnMDhQQzlUYVhwbElEa3ZVbTl2
ZENBeElEQWdVaTlKYm1adgpJRGdnTUNCU0wwbEVXencxTURjd01qQTRRVUk1TkVRME5EbENRamsz
TlVWRlJqQXpSa1kzTXpjMU5qNDhNME16UWpVME16WTJOakF5Ck5FRkRSamc1TWtNM09Ua3dSVFF5
TWtZME56SStYVDQrRFhOMFlYSjBlSEpsWmcweU1UQXlOUTBsSlVWUFJnMEFKVkJFUmkweExqTUsK
SmNUbDh1WHJwL09nME1UR0NqUWdNQ0J2WW1vS1BEd2dMMHhsYm1kMGFDQTFJREFnVWlBdlJtbHNk
R1Z5SUM5R2JHRjBaVVJsWTI5awpaU0ErUGdwemRISmxZVzBLZUFFdGpFRU93akFNQk85OXhmeWdN
VzBTZXViQXVTY2VFTFZ3Q0VnbC81ZFlwOGlLTi9hTzkyRGxJS2dzCllaSHZ4b01QNDYwWnBYVWow
QXJqWFl0bmM4UjR1MlFxTmhGZGpEeWNnZ1d1TEhLTE5Pa1greXNPVFdJWDNWZGU3RktiUFVwY2xh
WEQKS2xqRDREMHBJa3M5eHVOazkxYkUyRVdvcHZtZnRQNEFXR2dvMFFwbGJtUnpkSEpsWVcwS1pX
NWtiMkpxQ2pVZ01DQnZZbW9LTVRNdwpDbVZ1Wkc5aWFnb3lJREFnYjJKcUNqdzhJQzlVZVhCbElD
OVFZV2RsSUM5UVlYSmxiblFnTXlBd0lGSWdMMUpsYzI5MWNtTmxjeUEyCklEQWdVaUF2UTI5dWRH
VnVkSE1nTkNBd0lGSWdMMDFsWkdsaFFtOTRJRnN3SURBZ01UWWdNVFZkQ2o0K0NtVnVaRzlpYWdv
MklEQWcKYjJKcUNqdzhJQzlRY205alUyVjBJRnNnTDFCRVJpQmRJQzlEYjJ4dmNsTndZV05sSUR3
OElDOURjekVnTnlBd0lGSWdQajRnTDBWNApkRWRUZEdGMFpTQThQQ0F2UjNNeElEZ2dNQ0JTQ2o0
K0lENCtDbVZ1Wkc5aWFnbzRJREFnYjJKcUNqdzhJQzlVZVhCbElDOUZlSFJIClUzUmhkR1VnTDA5
UVRTQXhJRDQrQ21WdVpHOWlhZ281SURBZ2IySnFDanc4SUM5TVpXNW5kR2dnTVRBZ01DQlNJQzlP
SURNZ0wwRnMKZEdWeWJtRjBaU0F2UkdWMmFXTmxVa2RDSUM5R2FXeDBaWElnTDBac1lYUmxSR1Zq
YjJSbElENCtDbk4wY21WaGJRcDRBWVdVVFVnVQpZUmpILzdPTkJMRUcwWmNJeGREQkpGUW1DMUlD
MC9VclU3WmwxVXdKWXAxOWQ1MGNaNmVaM1MxRklvVG9tSFdNTGxaRWg0aE80YUZECnB6cEVCSmwx
aWFDalJSQUZYaUsyL3p1VHUyTlV2akF6djNtZS8vdDh2Y01BVlk5U2ptTkZOR0RLenJ2SjNwaDJl
blJNMi93YVZhaEcKRkZ3cHczTTZFb2tCbjZtVnovVnI5UzBVYVZscWxMSFcrelo4cTNhWkVGQTBL
bmRrQXo0c2VUemc0NUl2NUowOE5XY2tHeE9wTk5raApON2hEeVU3eUxmTFdiSWpIUTV3V25nRlV0
Vk9UTXh5WGNTSTd5QzFGSXl0alBpRHJkdHEweWUrbFBlMFpVOVN3MzhnM09RdmF1UEw5ClFOc2VZ
Tk9MaW0zTUF4N2NBM2JYVld6MU5jRE9FV0R4VU1YMlBlblBSOW4xeXNzY2F2YkRLZEVZYS9wUUtu
MnZBemJmQUg1ZUw1VisKM0M2VmZ0NWhEdGJ4MURJS2J0SFhzakRsSlJEVUcreG0vT1FhL1l1RG5u
eFZDN0RBT1k1c0FmcXZBRGMvQXZzZkF0c2ZBNGxxWUtnVgprY3RzTjdqeTRpTG5BblRtbkduWHpF
N2t0V1pkUDZKMThHaUYxbWNiVFFwYXlySTAzK1ZwcnZDRVd4VHBKa3haQmM3Wlg5dDRqd3A3CmVK
QlA5aGU1Skx6dTM2ek1wVk5kbkNXYTJOYW50T2pxSmplUTcyZk1uajV5UGEvM0diZG5PR0RsZ0pu
dkd3bzRjc3EyNGp3WHFZblUKMk9QeGsyVEdWMVFuSDVQemtEem5GUWRsVE45K0xuVWlRYTZsUFRt
WjY1ZWFYZHpiUGpNeHhET1NyRmd6RTUzeDMvekdMU1JsM24zVQozSFVzLzV0bmJaRm5HSVVGQVJN
Mjd6WTBKTkdMR0JyaHdFVU9HWHBNS2t4YXBWL1Fhc0xENUYrVkZoTGxYUllWdlZqaG5oVi96M2tV
CnVGdkdQNFZZSEhNSzVRaWEvazcvb2kvckMvcGQvZk44YmFHKzRwbHp6NXJHcTJ0ZkdWZG1sdFhJ
dUVHTk1yNnNLWWh2c05vT2VpMWsKYVozaUZmVGtsZldONGVveTlueHQyYVBKSE9KcWZEWFVwUWhs
YXNRNDQ4bXVaZmRGc3NVMzRlZGJ5L2F2NlZIN2ZQWkpUU1hYc3JwNApaaW42ZkRaY0Ntdi9zNnRn
MHJLcjhPU05rQzQ4YTZIdVZRK3FmV3FMMmdwTlBhYTJxMjFxRjkrT3FnUGxIY09jbFlrTHJOdGw5
U24yCllHT2Ezc3BKVjJhTDROL0NMNGIvcFY1aEM5YzBOUGtQVGJpNWpHa0ozeEhjTm5DSGxQL0RY
N01EQ3Q0S1pXNWtjM1J5WldGdENtVnUKWkc5aWFnb3hNQ0F3SUc5aWFnbzNPVElLWlc1a2IySnFD
amNnTUNCdlltb0tXeUF2U1VORFFtRnpaV1FnT1NBd0lGSWdYUXBsYm1SdgpZbW9LTXlBd0lHOWlh
Z284UENBdlZIbHdaU0F2VUdGblpYTWdMMDFsWkdsaFFtOTRJRnN3SURBZ01UWWdNVFZkSUM5RGIz
VnVkQ0F4CklDOUxhV1J6SUZzZ01pQXdJRklnWFNBK1BncGxibVJ2WW1vS01URWdNQ0J2WW1vS1BE
d2dMMVI1Y0dVZ0wwTmhkR0ZzYjJjZ0wxQmgKWjJWeklETWdNQ0JTSUQ0K0NtVnVaRzlpYWdveElE
QWdiMkpxQ2p3OElDOVFjbTlrZFdObGNpQW9UV0ZqSUU5VElGZ2dNVEF1TmlCUgpkV0Z5ZEhvZ1VF
UkdRMjl1ZEdWNGRDa2dMME55WldGMGFXOXVSR0YwWlNBb1JEb3lNREEyTURFek1URTFOVFkwTnkw
d09DY3dNQ2NwCkNpOU5iMlJFWVhSbElDaEVPakl3TURZd01qRXpNVEV4TXpVeExUQTRKekF3Snlr
Z1BqNEtaVzVrYjJKcUNuaHlaV1lLTUNBeE1nb3cKTURBd01EQXdNREF3SURZMU5UTTFJR1lnQ2pB
d01EQXdNREUxTmpnZ01EQXdNREFnYmlBS01EQXdNREF3TURJME5TQXdNREF3TUNCdQpJQW93TURB
d01EQXhORE0zSURBd01EQXdJRzRnQ2pBd01EQXdNREF3TWpJZ01EQXdNREFnYmlBS01EQXdNREF3
TURJeU5pQXdNREF3Ck1DQnVJQW93TURBd01EQXdNelEzSURBd01EQXdJRzRnQ2pBd01EQXdNREUw
TURJZ01EQXdNREFnYmlBS01EQXdNREF3TURRME15QXcKTURBd01DQnVJQW93TURBd01EQXdORGc0
SURBd01EQXdJRzRnQ2pBd01EQXdNREV6T0RJZ01EQXdNREFnYmlBS01EQXdNREF3TVRVeApPQ0F3
TURBd01DQnVJQXAwY21GcGJHVnlDanc4SUM5VGFYcGxJREV5SUM5U2IyOTBJREV4SURBZ1VpQXZT
VzVtYnlBeElEQWdVaUF2ClNVUWdXeUE4TTBRMU1qWkZSVVU1TWtJMU1URkVRVUk0T1VVd01EQkVP
VE0zTUVGRFFqZytDanhFUlRJMFF6ZEJORGxEUXpReE1VUkIKUVRCRE1EQXdNRVE1TXpjd1FVTkNP
RDRnWFNBK1BncHpkR0Z5ZEhoeVpXWUtNVGN3T0FvbEpVVlBSZ29BQUFBQUFBQUFKVkJFUmkweApM
ak1LSmNUbDh1WHJwL09nME1UR0NqUWdNQ0J2WW1vS1BEd2dMMHhsYm1kMGFDQTFJREFnVWlBdlJt
bHNkR1Z5SUM5R2JHRjBaVVJsClkyOWtaU0ErUGdwemRISmxZVzBLZUFFOWpURUt3Q0FNUmZlZTRw
OUFZeFNzYzRmT25rRm9IZEpCdkQvVWFwVkE0SDMrU3dvaUN2UlIKRFZJRjlha0orbXpCWFdHc0lt
dEFiVHM4WUZKaG55Z1RtVld3ZnBQWkhneEI3aUl2M1RmYi9TUVl0TXJmRDhhNmxYRWh2cUFRSVVr
SwpaVzVrYzNSeVpXRnRDbVZ1Wkc5aWFnbzFJREFnYjJKcUNqazRDbVZ1Wkc5aWFnb3lJREFnYjJK
cUNqdzhJQzlVZVhCbElDOVFZV2RsCklDOVFZWEpsYm5RZ015QXdJRklnTDFKbGMyOTFjbU5sY3lB
MklEQWdVaUF2UTI5dWRHVnVkSE1nTkNBd0lGSWdMMDFsWkdsaFFtOTQKSUZzd0lEQWdNakVnTWpO
ZENqNCtDbVZ1Wkc5aWFnbzJJREFnYjJKcUNqdzhJQzlRY205alUyVjBJRnNnTDFCRVJpQmRJQzlE
YjJ4dgpjbE53WVdObElEdzhJQzlEY3pFZ055QXdJRklnUGo0Z0wwVjRkRWRUZEdGMFpTQThQQ0F2
UjNNeElEZ2dNQ0JTQ2o0K0lENCtDbVZ1ClpHOWlhZ280SURBZ2IySnFDanc4SUM5VWVYQmxJQzlG
ZUhSSFUzUmhkR1VnTDA5UVRTQXhJRDQrQ21WdVpHOWlhZ281SURBZ2IySnEKQ2p3OElDOU1aVzVu
ZEdnZ01UQWdNQ0JTSUM5T0lETWdMMEZzZEdWeWJtRjBaU0F2UkdWMmFXTmxVa2RDSUM5R2FXeDBa
WElnTDBacwpZWFJsUkdWamIyUmxJRDQrQ25OMGNtVmhiUXA0QVoyV2QxUlQyUmFIejcwM3ZkQVNJ
aUFsOUJwNkNTRFNPMGdWQkZHSlNZQlFBb2FFCkpuWkVCVVlVRVNsV1pGVEFBVWVISW1ORkZBdURn
bUxYQ2ZJUVVNYkJVVVJGNWQyTWF3bnZyVFh6M3ByOXgxbmYyZWUzMTlsbjczM1gKdWdCUS9JSUV3
blJZQVlBMG9WZ1U3dXZCWEJJVHk4VDNBaGdRQVE1WUFjRGhabVlFUi9oRUF0VDh2VDJabWFoSXhy
UDI3aTZBWkx2YgpMTDlRSm5QVy8zK1JJamRESkFZQUNrWFZOangrSmhmbEFwUlRzOFVaTXY4RXl2
U1ZLVEtHTVRJV29RbWlyQ0xqeEs5czlxZm1LN3ZKCm1KY201S0VhV2M0WnZEU2VqTHRRM3BvbDRh
T01CS0ZjbUNYZ1o2TjhCMlc5VkVtYUFPWDNLTlBUK0p4TUFEQVVtVi9NNXlhaGJJa3kKUlJRWjdv
bnlBZ0FJbE1RNXZISU9pL2s1YUo0QWVLWm41SW9FaVVsaXBoSFhtR25sNk1obSt2R3pVL2xpTVN1
VXcwM2hpSGhNei9TMApESTR3RjRDdmI1WkZBU1ZaYlpsb2tlMnRITzN0V2RibWFQbS8yZDhlZmxQ
OVBjaDYrMVh4SnV6UG5rR01ubG5mYk95c0w3MFdBUFlrCldwc2RzNzZWVlFDMGJRWkE1ZUdzVCs4
Z0FQSUZBTFRlblBNZWhteGVrc1RpRENjTGkrenNiSE1CbjJzdUsrZzMrNStDYjhxL2hqbjMKbWN2
dSsxWTdwaGMvZ1NOSkZUTmxSZVdtcDZaTFJNek1EQTZYejJUOTl4RC80OEE1YWMzSnd5eWNuOEFY
OFlYb1ZWSG9sQW1FaVdpNwpoVHlCV0pBdVpBcUVmOVhoZnhnMkp3Y1pmcDFyRkdoMVh3QjloVGxR
dUVrSHlHODlBRU1qQXlSdVAzb0NmZXRiRURFS3lMNjhhSzJSCnIzT1BNbnIrNS9vZkMxeUtidUZN
UVNKVDV2WU1qMlJ5SmFJc0dhUGZoR3pCQWhLUUIzU2dDalNCTGpBQ0xHQU5ISUF6Y0FQZUlBQ0UK
Z0VnUUE1WURMa2dDYVVBRXNrRSsyQUFLUVRIWUFYYURhbkFBMUlGNjBBUk9nalp3Qmx3RVY4QU5j
QXNNZ0VkQUNvYkJTekFCM29GcApDSUx3RUJXaVFhcVFGcVFQbVVMV0VCdGFDSGxEUVZBNEZBUEZR
NG1RRUpKQStkQW1xQmdxZzZxaFExQTk5Q04wR3JvSVhZUDZvQWZRCklEUUcvUUY5aEJHWUF0TmhE
ZGdBdG9EWnNEc2NDRWZDeStCRWVCV2NCeGZBMitGS3VCWStEcmZDRitFYjhBQXNoVi9Da3doQXlB
Z0QKMFVaWUNCdnhSRUtRV0NRQkVTRnJrU0trQXFsRm1wQU9wQnU1alVpUmNlUURCb2VoWVpnWUZz
WVo0NGRaak9GaVZtSFdZa293MVpoagptRlpNRitZMlpoQXpnZm1DcFdMVnNhWllKNncvZGdrMkVa
dU5MY1JXWUk5Z1c3Q1hzUVBZWWV3N0hBN0h3Qm5pSEhCK3VCaGNNbTQxCnJnUzNEOWVNdTREcnd3
M2hKdkY0dkNyZUZPK0NEOEZ6OEdKOEliNEtmeHgvSHQrUEg4YS9KNUFKV2dScmdnOGhsaUFrYkNS
VUVCb0kKNXdqOWhCSENORkdCcUU5MElvWVFlY1JjWWlteGp0aEJ2RWtjSms2VEZFbUdKQmRTSkNt
WnRJRlVTV29pWFNZOUpyMGhrOGs2WkVkeQpHRmxBWGsrdUpKOGdYeVVQa2o5UWxDZ21GRTlLSEVW
QzJVNDVTcmxBZVVCNVE2VlNEYWh1MUZpcW1McWRXays5UkgxS2ZTOUhrek9YCjg1Zmp5YTJUcTVG
cmxldVhleVZQbE5lWGQ1ZGZMcDhuWHlGL1N2Nm0vTGdDVWNGQXdWT0JvN0JXb1ViaHRNSTloVWxG
bXFLVllvaGkKbW1LSllvUGlOY1ZSSmJ5U2daSzNFaytwUU9tdzBpV2xJUnBDMDZWNTByaTBUYlE2
Mm1YYU1CMUhONlQ3MDVQcHhmUWY2TDMwQ1dVbApaVnZsS09VYzVScmxzOHBTQnNJd1lQZ3pVaG1s
akpPTXU0eVA4elRtdWMvano5czJyMmxlLzd3cGxma3FiaXA4bFNLVlpwVUJsWStxClRGVnYxUlRW
bmFwdHFrL1VNR29tYW1GcTJXcjcxUzZyamMrbnozZWV6NTFmTlAvay9JZnFzTHFKZXJqNmF2WEQ2
ajNxa3hxYUdyNGEKR1JwVkdwYzB4alVabW02YXlacmxtdWMweDdSb1dndTFCRnJsV3VlMVhqQ1Zt
ZTdNVkdZbHM0czVvYTJ1N2FjdDBUNmszYXM5cldPbwpzMWhubzA2enpoTmRraTViTjBHM1hMZFRk
MEpQU3k5WUwxK3ZVZStoUGxHZnJaK2t2MGUvVzMvS3dOQWcybUNMUVp2QnFLR0tvYjloCm5tR2o0
V01qcXBHcjBTcWpXcU03eGpoanRuR0s4VDdqV3lhd2laMUpra21OeVUxVDJOVGVWR0M2ejdUUERH
dm1hQ1kwcXpXN3g2S3cKM0ZsWnJFYldvRG5EUE1oOG8zbWIrU3NMUFl0WWk1MFczUlpmTE8wc1V5
M3JMQjlaS1ZrRldHMjA2ckQ2dzlyRW1tdGRZMzNIaG1yagpZN1BPcHQzbXRhMnBMZDkydisxOU81
cGRzTjBXdTA2N3ovWU85aUw3SnZzeEJ6MkhlSWU5RHZmWWRIWW91NFI5MVJIcjZPRzR6dkdNCjR3
Y25leWV4MDBtbjM1MVp6aW5PRGM2akN3d1g4QmZVTFJoeTBYSGh1Qnh5a1M1a0xveGZlSENoMUZY
YmxlTmE2L3JNVGRlTjUzYkUKYmNUZDJEM1ovYmo3S3c5TEQ1RkhpOGVVcDVQbkdzOExYb2lYcjFl
UlY2KzNrdmRpNzJydnB6NDZQb2sralQ0VHZuYStxMzB2K0dIOQpBdjEyK3QzejEvRG4rdGY3VHdR
NEJLd0o2QXFrQkVZRVZnYytDeklKRWdWMUJNUEJBY0c3Z2g4djBsOGtYTlFXQWtMOFEzYUZQQWsx
CkRGMFYrbk1ZTGl3MHJDYnNlYmhWZUg1NGR3UXRZa1ZFUThTN1NJL0kwc2hIaTQwV1N4WjNSc2xI
eFVYVlIwMUZlMFdYUlV1WFdDeFoKcytSR2pGcU1JS1k5Rmg4YkZYc2tkbktwOTlMZFM0Zmo3T0lL
NCs0dU0xeVdzK3phY3JYbHFjdlBycEJmd1ZseEtoNGJIeDNmRVArSgpFOEtwNVV5dTlGKzVkK1VF
MTVPN2gvdVM1OFlyNTQzeFhmaGwvSkVFbDRTeWhORkVsOFJkaVdOSnJra1ZTZU1DVDBHMTRIV3lY
L0tCCjVLbVVrSlNqS1RPcDBhbk5hWVMwK0xUVFFpVmhpckFyWFRNOUo3MHZ3elNqTUVPNnltblY3
bFVUb2tEUmtVd29jMWxtdTVpTy9rejEKU0l3a215V0RXUXV6YXJMZVowZGxuOHBSekJIbTlPU2E1
RzdMSGNuenlmdCtOV1kxZDNWbnZuYitodnpCTmU1ckRxMkYxcTVjMjdsTwpkMTNCdXVIMXZ1dVBi
U0J0U05ud3kwYkxqV1ViMzI2SzN0UlJvRkd3dm1Cb3MrL214a0s1UWxIaHZTM09XdzVzeFd3VmJP
M2Rack90CmF0dVhJbDdSOVdMTDRvcmlUeVhja3V2ZldYMVgrZDNNOW9UdHZhWDJwZnQzNEhZSWQ5
emQ2YnJ6V0psaVdWN1owSzdnWGEzbHpQS2kKOHJlN1YreStWbUZiY1dBUGFZOWtqN1F5cUxLOVNx
OXFSOVduNnFUcWdScVBtdWE5Nm51MzdaM2F4OXZYdjk5dGY5TUJqUVBGQno0ZQpGQnk4ZjhqM1VH
dXRRVzNGWWR6aHJNUFA2NkxxdXI5bmYxOS9STzFJOFpIUFI0VkhwY2ZDajNYVk85VFhONmczbERi
Q2paTEdzZU54CngyLzk0UFZEZXhPcjZWQXpvN240QkRnaE9mSGl4L2dmNzU0TVBObDVpbjJxNlNm
OW4vYTIwRnFLV3FIVzNOYUp0cVEyYVh0TWU5L3AKZ05PZEhjNGRMVCtiLzN6MGpQYVptclBLWjB2
UGtjNFZuSnM1bjNkKzhrTEdoZkdMaVJlSE9sZDBQcnEwNU5LZHJyQ3Uzc3VCbDY5ZQo4Ymx5cWR1
OSsveFZsNnRucmpsZE8zMmRmYjN0aHYyTjFoNjducFpmN0g1cDZiWHZiYjNwY0xQOWx1T3RqcjRG
ZmVmNlhmc3YzdmE2CmZlV08vNTBiQTRzRyt1NHV2bnYvWHR3OTZYM2UvZEVIcVE5ZVA4eDZPUDFv
L1dQczQ2SW5DazhxbnFvL3JmM1YrTmRtcWIzMDdLRFgKWU0remlHZVBocmhETC8rVithOVB3d1hQ
cWM4clJyUkc2a2V0UjgrTStZemRlckgweGZETGpKZlQ0NFcvS2Y2Mjk1WFJxNTkrZC91OQpaMkxK
eFBCcjBldVpQMHJlcUw0NSt0YjJiZWRrNk9UVGQybnZwcWVLM3F1K1AvYUIvYUg3WS9USGtlbnNU
L2hQbForTlAzZDhDZnp5CmVDWnRadWJmOTRUeit3cGxibVJ6ZEhKbFlXMEtaVzVrYjJKcUNqRXdJ
REFnYjJKcUNqSTJNVElLWlc1a2IySnFDamNnTUNCdlltb0sKV3lBdlNVTkRRbUZ6WldRZ09TQXdJ
RklnWFFwbGJtUnZZbW9LTXlBd0lHOWlhZ284UENBdlZIbHdaU0F2VUdGblpYTWdMMDFsWkdsaApR
bTk0SUZzd0lEQWdNakVnTWpOZElDOURiM1Z1ZENBeElDOUxhV1J6SUZzZ01pQXdJRklnWFNBK1Bn
cGxibVJ2WW1vS01URWdNQ0J2Clltb0tQRHdnTDFSNWNHVWdMME5oZEdGc2IyY2dMMUJoWjJWeklE
TWdNQ0JTSUQ0K0NtVnVaRzlpYWdveE1pQXdJRzlpYWdvb1RXRmoKSUU5VElGZ2dNVEF1TmlCUmRX
RnlkSG9nVUVSR1EyOXVkR1Y0ZENrS1pXNWtiMkpxQ2pFeklEQWdiMkpxQ2loRU9qSXdNRGd4TWpJ
eQpNak0xTWpJMVdqQXdKekF3SnlrS1pXNWtiMkpxQ2pFZ01DQnZZbW9LUER3Z0wxQnliMlIxWTJW
eUlERXlJREFnVWlBdlEzSmxZWFJwCmIyNUVZWFJsSURFeklEQWdVaUF2VFc5a1JHRjBaU0F4TXlB
d0lGSWdQajRLWlc1a2IySnFDbmh5WldZS01DQXhOQW93TURBd01EQXcKTURBd0lEWTFOVE0xSUdZ
Z0NqQXdNREF3TURNME5EZ2dNREF3TURBZ2JpQUtNREF3TURBd01ESXhNaUF3TURBd01DQnVJQW93
TURBdwpNREF6TWpJMUlEQXdNREF3SUc0Z0NqQXdNREF3TURBd01qSWdNREF3TURBZ2JpQUtNREF3
TURBd01ERTVOQ0F3TURBd01DQnVJQW93Ck1EQXdNREF3TXpFMElEQXdNREF3SUc0Z0NqQXdNREF3
TURNeE9UQWdNREF3TURBZ2JpQUtNREF3TURBd01EUXhNQ0F3TURBd01DQnUKSUFvd01EQXdNREF3
TkRVMUlEQXdNREF3SUc0Z0NqQXdNREF3TURNeE5qa2dNREF3TURBZ2JpQUtNREF3TURBd016TXdO
aUF3TURBdwpNQ0J1SUFvd01EQXdNREF6TXpVMklEQXdNREF3SUc0Z0NqQXdNREF3TURNME1EWWdN
REF3TURBZ2JpQUtkSEpoYVd4bGNnbzhQQ0F2ClUybDZaU0F4TkNBdlVtOXZkQ0F4TVNBd0lGSWdM
MGx1Wm04Z01TQXdJRklnTDBsRUlGc2dQRGczWWpVMVpqWTJNamczTmpFd1lqQTQKT1Rkak1qYzBa
VEZpWVdabU1qQXdQZ284T0RkaU5UVm1Oall5T0RjMk1UQmlNRGc1TjJNeU56UmxNV0poWm1ZeU1E
QStJRjBnUGo0SwpjM1JoY25SNGNtVm1Dak0xTWpNS0pTVkZUMFlLSlZCRVJpMHhMak1LSmNUbDh1
WHJwL09nME1UR0NqUWdNQ0J2WW1vS1BEd2dMMHhsCmJtZDBhQ0ExSURBZ1VpQXZSbWxzZEdWeUlD
OUdiR0YwWlVSbFkyOWtaU0ErUGdwemRISmxZVzBLZUFFMXlqRUtnREFNQmREZFUvd1QKcEVtYkNK
a2RuRDFEUVIzcVVIcC9NQlVrdytlL240NERIV2tiZ2pyQTM0Mkt0QWRjQWNUcWhseUltUlhQRCtG
bFZiVFp4V3hHN0V0RAp6dVFsRzBSSTNlZkhqUlBIQzdJVEZsQUtaVzVrYzNSeVpXRnRDbVZ1Wkc5
aWFnbzFJREFnYjJKcUNqZzVDbVZ1Wkc5aWFnb3lJREFnCmIySnFDanc4SUM5VWVYQmxJQzlRWVdk
bElDOVFZWEpsYm5RZ015QXdJRklnTDFKbGMyOTFjbU5sY3lBMklEQWdVaUF2UTI5dWRHVnUKZEhN
Z05DQXdJRklnTDAxbFpHbGhRbTk0SUZzd0lEQWdNak1nTWpOZENqNCtDbVZ1Wkc5aWFnbzJJREFn
YjJKcUNqdzhJQzlRY205agpVMlYwSUZzZ0wxQkVSaUJkSUM5RGIyeHZjbE53WVdObElEdzhJQzlE
Y3pFZ055QXdJRklnUGo0Z0wwVjRkRWRUZEdGMFpTQThQQ0F2ClIzTXhJRGdnTUNCU0NqNCtJRDQr
Q21WdVpHOWlhZ280SURBZ2IySnFDanc4SUM5VWVYQmxJQzlGZUhSSFUzUmhkR1VnTDA5UVRTQXgK
SUQ0K0NtVnVaRzlpYWdvNUlEQWdiMkpxQ2p3OElDOU1aVzVuZEdnZ01UQWdNQ0JTSUM5T0lETWdM
MEZzZEdWeWJtRjBaU0F2UkdWMgphV05sVWtkQ0lDOUdhV3gwWlhJZ0wwWnNZWFJsUkdWamIyUmxJ
RDQrQ25OMGNtVmhiUXA0QVoyV2QxUlQyUmFIejcwM3ZkQVNJaUFsCjlCcDZDU0RTTzBnVkJGR0pT
WUJRQW9hRUpuWkVCVVlVRVNsV1pGVEFBVWVISW1ORkZBdURnbUxYQ2ZJUVVNYkJVVVJGNWQyTWF3
bnYKclRYejNwcjl4MW5mMmVlMzE5bG43MzNYdWdCUS9JSUV3blJZQVlBMG9WZ1U3dXZCWEJJVHk4
VDNBaGdRQVE1WUFjRGhabVlFUi9oRQpBdFQ4dlQyWm1haEl4clAyN2k2QVpMdmJMTDlRSm5QVy8z
K1JJamRESkFZQUNrWFZOangrSmhmbEFwUlRzOFVaTXY4RXl2U1ZLVEtHCk1USVdvUW1pckNManhL
OXM5cWZtSzd2Sm1KY201S0VhV2M0WnZEU2VqTHRRM3BvbDRhT01CS0ZjbUNYZ1o2TjhCMlc5VkVt
YUFPWDMKS05QVCtKeE1BREFVbVYvTTV5YWhiSWt5UlJRWjdvbnlBZ0FJbE1RNXZISU9pL2s1YUo0
QWVLWm41SW9FaVVsaXBoSFhtR25sNk1obQordkd6VS9saU1TdVV3MDNoaUhoTXovUzBESTR3RjRD
dmI1WkZBU1ZaYlpsb2tlMnRITzN0V2RibWFQbS8yZDhlZmxQOVBjaDYrMVh4Ckp1elBua0dNbmxu
ZmJPeXNMNzBXQVBZa1dwc2RzNzZWVlFDMGJRWkE1ZUdzVCs4Z0FQSUZBTFRlblBNZWhteGVrc1Rp
RENjTGkrenMKYkhNQm4yc3VLK2czKzUrQ2I4cS9oam4zbWN2dSsxWTdwaGMvZ1NOSkZUTmxSZVdt
cDZaTFJNek1EQTZYejJUOTl4RC80OEE1YWMzSgp3eXljbjhBWDhZWG9WVkhvbEFtRWlXaTdoVHlC
V0pBdVpBcUVmOVhoZnhnMkp3Y1pmcDFyRkdoMVh3QjloVGxRdUVrSHlHODlBRU1qCkF5UnVQM29D
ZmV0YkVERUt5TDY4YUsyUnIzT1BNbnIrNS9vZkMxeUtidUZNUVNKVDV2WU1qMlJ5SmFJc0dhUGZo
R3pCQWhLUUIzU2cKQ2pTQkxqQUNMR0FOSElBemNBUGVJQUNFZ0VnUUE1WURMa2dDYVVBRXNrRSsy
QUFLUVRIWUFYYURhbkFBMUlGNjBBUk9nalp3Qmx3RQpWOEFOY0FzTWdFZEFDb2JCU3pBQjNvRnBD
SUx3RUJXaVFhcVFGcVFQbVVMV0VCdGFDSGxEUVZBNEZBUEZRNG1RRUpKQStkQW1xQmdxCmc2cWhR
MUE5OUNOMEdyb0lYWVA2b0FmUUlEUUcvUUY5aEJHWUF0TmhEZGdBdG9EWnNEc2NDRWZDeStCRWVC
V2NCeGZBMitGS3VCWSsKRHJmQ0YrRWI4QUFzaFYvQ2t3aEF5QWdEMFVaWUNCdnhSRUtRV0NRQkVT
RnJrU0trQXFsRm1wQU9wQnU1alVpUmNlUURCb2VoWVpnWQpGc1laNDRkWmpPRmlWbUhXWWtvdzFa
aGptRlpNRitZMlpoQXpnZm1DcFdMVnNhWllKNncvZGdrMkVadU5MY1JXWUk5Z1c3Q1hzUVBZClll
dzdIQTdId0JuaUhIQit1QmhjTW00MXJnUzNEOWVNdTREcnd3M2hKdkY0dkNyZUZPK0NEOEZ6OEdK
OEliNEtmeHgvSHQrUEg4YS8KSjVBSldnUnJnZzhobGlBa2JDUlVFQm9JNXdqOWhCSENORkdCcUU5
MElvWVFlY1JjWWlteGp0aEJ2RWtjSms2VEZFbUdKQmRTSkNtWgp0SUZVU1dvaVhTWTlKcjBoazhr
NlpFZHlHRmxBWGsrdUpKOGdYeVVQa2o5UWxDZ21GRTlLSEVWQzJVNDVTcmxBZVVCNVE2VlNEYWh1
CjFGaXFtTHFkV2srOVJIMUtmUzlIa3pPWDg1Zmp5YTJUcTVGcmxldVhleVZQbE5lWGQ1ZGZMcDhu
WHlGL1N2Nm0vTGdDVWNGQXdWT0IKbzdCV29VYmh0TUk5aFVsRm1xS1ZZb2hpbW1LSllvUGlOY1ZS
SmJ5U2daSzNFaytwUU9tdzBpV2xJUnBDMDZWNTByaTBUYlE2Mm1YYQpNQjFITjZUNzA1UHB4ZlFm
NkwzMENXVWxaVnZsS09VYzVScmxzOHBTQnNJd1lQZ3pVaG1sakpPTXU0eVA4elRtdWMvano5czJy
MmxlCi83d3BsZmtxYmlwOGxTS1ZacFVCbFkrcVRGVnYxUlRWbmFwdHFrL1VNR29tYW1GcTJXcjcx
UzZyamMrbnozZWV6NTFmTlAvay9JZnEKc0xxSmVyajZhdlhENmozcWt4cWFHcjRhR1JwVkdwYzB4
alVabW02YXlacmxtdWMweDdSb1dndTFCRnJsV3VlMVhqQ1ZtZTdNVkdZbApzNHM1b2EydTdhY3Qw
VDZrM2FzOXJXT29zMWhubzA2enpoTmRraTViTjBHM1hMZFRkMEpQU3k5WUwxK3ZVZStoUGxHZnJa
K2t2MGUvClczL0t3TkFnMm1DTFFadkJxS0dLb2I5aG5tR2o0V01qcXBHcjBTcWpXcU03eGpoanRu
R0s4VDdqV3lhd2laMUpra21OeVUxVDJOVGUKVkdDNno3VFBER3ZtYUNZMHF6Vzd4Nkt3M0ZsWnJF
YldvRG5EUE1oOG8zbWIrU3NMUFl0WWk1MFczUlpmTE8wc1V5M3JMQjlaS1ZrRgpXRzIwNnJENnc5
ckVtbXRkWTMzSGhtcmpZN1BPcHQzbXRhMnBMZDkydisxOU81cGRzTjBXdTA2N3ovWU85aUw3SnZz
eEJ6MkhlSWU5CkR2ZllkSFlvdTRSOTFSSHI2T0c0enZHTTR3Y25leWV4MDBtbjM1MVp6aW5PRGM2
akN3d1g4QmZVTFJoeTBYSGh1Qnh5a1M1a0xveGYKZUhDaDFGWGJsZU5hNi9yTVRkZU41M2JFYmNU
ZDJEM1ovYmo3S3c5TEQ1RkhpOGVVcDVQbkdzOExYb2lYcjFlUlY2KzNrdmRpNzJydgpwejQ2UG9r
K2pUNFR2bmErcTMwditHSDlBdjEyK3QzejEvRG4rdGY3VHdRNEJLd0o2QXFrQkVZRVZnYytDeklK
RWdWMUJNUEJBY0c3CmdoOHYwbDhrWE5RV0FrTDhRM2FGUEFrMURGMFYrbk1ZTGl3MHJDYnNlYmhW
ZUg1NGR3UXRZa1ZFUThTN1NJL0kwc2hIaTQwV1N4WjMKUnNsSHhVWFZSMDFGZTBXWFJVdVhXQ3ha
cytSR2pGcU1JS1k5Rmg4YkZYc2tkbktwOTlMZFM0Zmo3T0lLNCs0dU0xeVdzK3phY3JYbApxY3ZQ
cnBCZndWbHhLaDRiSHgzZkVQK0pFOEtwNVV5dTlGKzVkK1VFMTVPN2gvdVM1OFlyNTQzeFhmaGwv
SkVFbDRTeWhORkVsOFJkCmlXTkpya2tWU2VNQ1QwRzE0SFd5WC9LQjVLbVVrSlNqS1RPcDBhbk5h
WVMwK0xUVFFpVmhpckFyWFRNOUo3MHZ3elNqTUVPNnltblYKN2xVVG9rRFJrVXdvYzFsbXU1aU8v
a3oxU0l3a215V0RXUXV6YXJMZVowZGxuOHBSekJIbTlPU2E1RzdMSGNuenlmdCtOV1kxZDNWbgp2
bmIraHZ6Qk5lNXJEcTJGMXE1YzI3bE9kMTNCdXVIMXZ1dVBiU0J0U05ud3kwYkxqV1ViMzI2SzN0
UlJvRkd3dm1Cb3MrL214a0s1ClFsSGh2UzNPV3c1c3hXd1ZiTzNkWnJPdGF0dVhJbDdSOVdMTDRv
cmlUeVhja3V2ZldYMVgrZDNNOW9UdHZhWDJwZnQzNEhZSWQ5emQKNmJyeldKbGlXVjdaMEs3Z1hh
M2x6UEtpOHJlN1YreStWbUZiY1dBUGFZOWtqN1F5cUxLOVNxOXFSOVduNnFUcWdScVBtdWE5Nm51
Mwo3WjNheDl2WHY5OXRmOU1CalFQRkJ6NGVGQnk4ZjhqM1VHdXRRVzNGWWR6aHJNUFA2NkxxdXI5
bmYxOS9STzFJOFpIUFI0VkhwY2ZDCmozWFZPOVRYTjZnM2xEYkNqWkxHc2VOeHgyLzk0UFZEZXhP
cjZWQXpvN240QkRnaE9mSGl4L2dmNzU0TVBObDVpbjJxNlNmOW4vYTIKMEZxS1dxSFczTmFKdHFR
MmFYdE1lOS9wZ05PZEhjNGRMVCtiLzN6MGpQYVptclBLWjB2UGtjNFZuSnM1bjNkKzhrTEdoZkdM
aVJlSApPbGQwUHJxMDVOS2RyckN1M3N1Qmw2OWU4Ymx5cWR1OSsveFZsNnRucmpsZE8zMmRmYjN0
aHYyTjFoNjducFpmN0g1cDZiWHZiYjNwCmNMUDlsdU90anI0RmZlZjZYZnN2M3ZhNmZlV08vNTBi
QTRzRyt1NHV2bnYvWHR3OTZYM2UvZEVIcVE5ZVA4eDZPUDFvL1dQczQ2SW4KQ2s4cW5xby9yZjNW
K05kbXFiMzA3S0RYWU0remlHZVBocmhETC8rVithOVB3d1hQcWM4clJyUkc2a2V0UjgrTStZemRl
ckgweGZETApqSmZUNDRXL0tmNjI5NVhScTU5K2QvdTlaMkxKeFBCcjBldVpQMHJlcUw0NSt0YjJi
ZWRrNk9UVGQybnZwcWVLM3F1K1AvYUIvYUg3ClkvVEhrZW5zVC9oUGxaK05QM2Q4Q2Z6eWVDWnRa
dWJmOTRUeit3cGxibVJ6ZEhKbFlXMEtaVzVrYjJKcUNqRXdJREFnYjJKcUNqSTIKTVRJS1pXNWti
MkpxQ2pjZ01DQnZZbW9LV3lBdlNVTkRRbUZ6WldRZ09TQXdJRklnWFFwbGJtUnZZbW9LTXlBd0lH
OWlhZ284UENBdgpWSGx3WlNBdlVHRm5aWE1nTDAxbFpHbGhRbTk0SUZzd0lEQWdNak1nTWpOZElD
OURiM1Z1ZENBeElDOUxhV1J6SUZzZ01pQXdJRklnClhTQStQZ3BsYm1Sdlltb0tNVEVnTUNCdllt
b0tQRHdnTDFSNWNHVWdMME5oZEdGc2IyY2dMMUJoWjJWeklETWdNQ0JTSUQ0K0NtVnUKWkc5aWFn
b3hNaUF3SUc5aWFnb29UV0ZqSUU5VElGZ2dNVEF1TmlCUmRXRnlkSG9nVUVSR1EyOXVkR1Y0ZENr
S1pXNWtiMkpxQ2pFegpJREFnYjJKcUNpaEVPakl3TURneE1qSXlNak0xTWpJMVdqQXdKekF3Snlr
S1pXNWtiMkpxQ2pFZ01DQnZZbW9LUER3Z0wxQnliMlIxClkyVnlJREV5SURBZ1VpQXZRM0psWVhS
cGIyNUVZWFJsSURFeklEQWdVaUF2VFc5a1JHRjBaU0F4TXlBd0lGSWdQajRLWlc1a2IySnEKQ25o
eVpXWUtNQ0F4TkFvd01EQXdNREF3TURBd0lEWTFOVE0xSUdZZ0NqQXdNREF3TURNME16a2dNREF3
TURBZ2JpQUtNREF3TURBdwpNREl3TXlBd01EQXdNQ0J1SUFvd01EQXdNREF6TWpFMklEQXdNREF3
SUc0Z0NqQXdNREF3TURBd01qSWdNREF3TURBZ2JpQUtNREF3Ck1EQXdNREU0TlNBd01EQXdNQ0J1
SUFvd01EQXdNREF3TXpBMUlEQXdNREF3SUc0Z0NqQXdNREF3TURNeE9ERWdNREF3TURBZ2JpQUsK
TURBd01EQXdNRFF3TVNBd01EQXdNQ0J1SUFvd01EQXdNREF3TkRRMklEQXdNREF3SUc0Z0NqQXdN
REF3TURNeE5qQWdNREF3TURBZwpiaUFLTURBd01EQXdNekk1TnlBd01EQXdNQ0J1SUFvd01EQXdN
REF6TXpRM0lEQXdNREF3SUc0Z0NqQXdNREF3TURNek9UY2dNREF3Ck1EQWdiaUFLZEhKaGFXeGxj
Z284UENBdlUybDZaU0F4TkNBdlVtOXZkQ0F4TVNBd0lGSWdMMGx1Wm04Z01TQXdJRklnTDBsRUlG
c2cKUEdaaE1EWXpOVEZtTkRnNE5qTTNNakppTXpJME1UQTFZVFZpWXpGbU4yTXhQZ284Wm1Fd05q
TTFNV1kwT0RnMk16Y3lNbUl6TWpReApNRFZoTldKak1XWTNZekUrSUYwZ1BqNEtjM1JoY25SNGNt
Vm1Dak0xTVRRS0pTVkZUMFlLQUNWUVJFWXRNUzR6Q2lYRTVmTGw2NmZ6Cm9OREV4Z28wSURBZ2Iy
SnFDanc4SUM5TVpXNW5kR2dnTlNBd0lGSWdMMFpwYkhSbGNpQXZSbXhoZEdWRVpXTnZaR1VnUGo0
S2MzUnkKWldGdENuZ0JYWlJKamlRM0RFWDNjUXF0dmFCRlRaUk8wT3RhK1FBQnR3MDRxNEhxdmov
Z1I4WlUxVWdnQTUrVFByOG9mcVMzOUpFeQpQeDFKTGYzOE8vMlZmb1FCVS9vdi9mbnRsNlovZmlX
VHBWV1Rkc25hTmIzZmhpRjk0SGh0WFdveElwcTBQREdreTBDRUxUY1VzVVl1CkVkWDBjMFFSWGVN
eGJCNVJpWHpkcHhBeDgyZERsZFlqUlZWeXA1clc4M3c4dVlHem1IWGRzRWVreVZCbzdVbUx0RUx4
MC9BS1E2T0MKa2VpZGVLa3o1VEZVQ0c1TlNvaVFaVWFyTWlvbEtVUS9TV2tUaXZ1RmkvUVpPbEMz
VVBjM3ZCRS9TSHVscXlvRW5iZU1VaFNqTHJJOQo2S0cyVTJSazJyNnBVblJsM1o1ZXBMdkVuM0Ji
bk0zdGVacEtjZDVUaW5HRUM4UzluR2dIRjJUWWJtOEdrbW5lUlpZVGRTZm5zWUhSCjNLakxwM01x
UmcxeVBTUEVnVFlFcDZXRy9YVDdDRG1aTS9lQ0ptZnB5MEJhbjM2eEtxdFJqNkdZOEtYWEw1TzRw
KzkvTUdwcVpmRloKYlJhR3M0bXRCemZwdWEwMEpKc1ZsN3VZbzZxdFFBK2xXM2pyN081bGVOemJ2
RktWT2RlTmR2QlE2dDdlYXROUjBWdzI3d2NFQjlSRgpvaHViVmErRUJPNGRaVGpxdkFsUWIrMklY
VDI4WEhwaHpOcWdVaE1tb0JDay9VRzdIMWY3N1IweVYxUWFqQTIrUUx5NHVhaTczWGhrCnZLL0xq
OVlLSnlyMXNiamlPV0FNdFF3SDVEVTY5M042d3p1OVpOazgxeXBhTE1tVGFDcVA2cWhVT3JoUnp6
RDIzTk5yQzAwSER3VEcKS3lyRHFaWWJoVTdMT1Bmd3dyR0tsYWdjUEZCS1liSEVSdHpIaWZweGQ3
ZTNjQzlQSmd2QjBWazMwRTUvUEdxdkZOaWZYVmVVbTVJWAp0K2VZbFJQOUY3S1pFcjk1eHQ4N3VC
R0Q3UDNkbUxYZzNyWkNSNTNWYjg5OG5veU5oY1lldXpUZjJOZGlUT1BwN3pJN2FneGh2L2dkCm5B
aWJ6K2FERzVwNzd1bG5HM3AwNTByNHhOUi9mUVB4TE5pQnRUZW90TkhuOXU0NzBYR014d3pGZTJS
bkI5VnVzS09LMmJoOFUrcXMKbnJYNnhBUGdFVFpiays0T0gzRHBoT0FCK2JjSU5iWU5ndXVNQTVE
cUJMc2ZEcE1EYmljdjBqcHBEK3ZqaUg4SmMzSStJVFo1M1pQWApmdERuWTFLSFlacVRMZ0k4NUE3
ZjBUN2tEc2dhR00zNzBPc1ZYZVRpd1hsVE1HQTMrODFOblJzTHFNYkVaMWFocnlOSHR3QVBQaFE0
CnNUK2JHcjE0cFlQNjlxV1B1S0czL3dFc2pIYjNDbVZ1WkhOMGNtVmhiUXBsYm1Sdlltb0tOU0F3
SUc5aWFnbzRNVFVLWlc1a2IySnEKQ2pJZ01DQnZZbW9LUER3Z0wxUjVjR1VnTDFCaFoyVWdMMUJo
Y21WdWRDQXpJREFnVWlBdlVtVnpiM1Z5WTJWeklEWWdNQ0JTSUM5RApiMjUwWlc1MGN5QTBJREFn
VWlBdlRXVmthV0ZDYjNnZ1d6QWdNQ0F4Tmk0d01EQTFJREUzWFFvdlFYSjBRbTk0SUZzd0xqQXlN
emt5Ck5UZ2dNQzR3TVRZMk1ERTJJREUxTGpBd05qTWdNVFl1TlRjNU5sMGdQajRLWlc1a2IySnFD
allnTUNCdlltb0tQRHdnTDFCeWIyTlQKWlhRZ1d5QXZVRVJHSUYwZ0wwVjRkRWRUZEdGMFpTQThQ
Q0F2UjNNeElEY2dNQ0JTSUQ0K0lENCtDbVZ1Wkc5aWFnbzNJREFnYjJKcQpDanc4SUM5VWVYQmxJ
QzlGZUhSSFUzUmhkR1VnTDA5UVRTQXhJRDQrQ21WdVpHOWlhZ296SURBZ2IySnFDanc4SUM5VWVY
QmxJQzlRCllXZGxjeUF2VFdWa2FXRkNiM2dnV3pBZ01DQTJNVElnTnpreVhTQXZRMjkxYm5RZ01T
QXZTMmxrY3lCYklESWdNQ0JTSUYwZ1BqNEsKWlc1a2IySnFDamdnTUNCdlltb0tQRHdnTDFSNWNH
VWdMME5oZEdGc2IyY2dMMUJoWjJWeklETWdNQ0JTSUQ0K0NtVnVaRzlpYWdvNQpJREFnYjJKcUNp
Z3pNSE5sWTJKaFkydGZjMjBwQ21WdVpHOWlhZ294TUNBd0lHOWlhZ29vVFdGaklFOVRJRmdnTVRB
dU5pQlJkV0Z5CmRIb2dVRVJHUTI5dWRHVjRkQ2tLWlc1a2IySnFDakV4SURBZ2IySnFDaWhCWkc5
aVpTQkpiR3gxYzNSeVlYUnZjaUJEVXpRcENtVnUKWkc5aWFnb3hNaUF3SUc5aWFnb29SRG95TURB
NU1EVXhOVEV3TVRNME9Gb3dNQ2N3TUNjcENtVnVaRzlpYWdveElEQWdiMkpxQ2p3OApJQzlVYVhS
c1pTQTVJREFnVWlBdlVISnZaSFZqWlhJZ01UQWdNQ0JTSUM5RGNtVmhkRzl5SURFeElEQWdVaUF2
UTNKbFlYUnBiMjVFCllYUmxJREV5SURBZ1VpQXZUVzlrUkdGMFpRb3hNaUF3SUZJZ1BqNEtaVzVr
YjJKcUNuaHlaV1lLTUNBeE13b3dNREF3TURBd01EQXcKSURZMU5UTTFJR1lnQ2pBd01EQXdNREUw
T0RrZ01EQXdNREFnYmlBS01EQXdNREF3TURrek1DQXdNREF3TUNCdUlBb3dNREF3TURBeApNVGsx
SURBd01EQXdJRzRnQ2pBd01EQXdNREF3TWpJZ01EQXdNREFnYmlBS01EQXdNREF3TURreE1TQXdN
REF3TUNCdUlBb3dNREF3Ck1EQXhNRGd6SURBd01EQXdJRzRnQ2pBd01EQXdNREV4TlRBZ01EQXdN
REFnYmlBS01EQXdNREF3TVRJM09DQXdNREF3TUNCdUlBb3cKTURBd01EQXhNekkzSURBd01EQXdJ
RzRnQ2pBd01EQXdNREV6TlRjZ01EQXdNREFnYmlBS01EQXdNREF3TVRRd055QXdNREF3TUNCdQpJ
QW93TURBd01EQXhORFEzSURBd01EQXdJRzRnQ25SeVlXbHNaWElLUER3Z0wxTnBlbVVnTVRNZ0wx
SnZiM1FnT0NBd0lGSWdMMGx1ClptOGdNU0F3SUZJZ0wwbEVJRnNnUERZek9URTNZVE01TXpZeFlq
QmxaR1F3WXpabU9EQmhORE5oTWpjM016WmpQZ284TmpNNU1UZGgKTXprek5qRmlNR1ZrWkRCak5t
WTRNR0UwTTJFeU56Y3pObU0rSUYwZ1BqNEtjM1JoY25SNGNtVm1DakUxT1RNS0pTVkZUMFlLQUFB
QQpBQUFBQUNWUVJFWXRNUzR6Q2lYRTVmTGw2NmZ6b05ERXhnbzBJREFnYjJKcUNqdzhJQzlNWlc1
bmRHZ2dOU0F3SUZJZ0wwWnBiSFJsCmNpQXZSbXhoZEdWRVpXTnZaR1VnUGo0S2MzUnlaV0Z0Q25n
QlRZOHhEc013Q0VYM25PS2ZnR0JNd0o0N1pNNFpJclVkMGlIeS9hVWEKTDdIWW5oNy93NDBETjla
WFN6Z2JlRXc3c2U0ZGZCckVpSzBvbURobndXK0FJZ29uZFJOY1NKbllVeGhKUlppWEJ6bHRJdUhF
dGcxRgp2Q3Y4b0tSVTNlY2NKMHZiQkpaUWF1KytwbTZUT29OUXRBeFNxZWNySmxLb2xsRWVIL1Ry
dm5qaitBTVd4VExFQ21WdVpITjBjbVZoCmJRcGxibVJ2WW1vS05TQXdJRzlpYWdveE16Y0taVzVr
YjJKcUNqSWdNQ0J2WW1vS1BEd2dMMVI1Y0dVZ0wxQmhaMlVnTDFCaGNtVnUKZENBeklEQWdVaUF2
VW1WemIzVnlZMlZ6SURZZ01DQlNJQzlEYjI1MFpXNTBjeUEwSURBZ1VpQXZUV1ZrYVdGQ2IzZ2dX
ekFnTUNBeQpPU0F4TlYwS1BqNEtaVzVrYjJKcUNqWWdNQ0J2WW1vS1BEd2dMMUJ5YjJOVFpYUWdX
eUF2VUVSR0lGMGdMME52Ykc5eVUzQmhZMlVnClBEd2dMME56TVNBM0lEQWdVaUErUGlBdlJYaDBS
MU4wWVhSbElEdzhJQzlIY3pFZ09DQXdJRklLUGo0Z1BqNEtaVzVrYjJKcUNqZ2cKTUNCdlltb0tQ
RHdnTDFSNWNHVWdMMFY0ZEVkVGRHRjBaU0F2VDFCTklERWdQajRLWlc1a2IySnFDamtnTUNCdllt
b0tQRHdnTDB4bApibWQwYUNBeE1DQXdJRklnTDA0Z015QXZRV3gwWlhKdVlYUmxJQzlFWlhacFky
VlNSMElnTDBacGJIUmxjaUF2Um14aGRHVkVaV052ClpHVWdQajRLYzNSeVpXRnRDbmdCblpaM1ZG
UFpGb2ZQdlRlOTBCSWlJQ1gwR25vSklOSTdTQlVFVVlsSmdGQUNob1FtZGtRRlJoUVIKS1Zaa1ZN
QUJSNGNpWTBVVUM0T0NZdGNKOGhCUXhzRlJSRVhsM1l4ckNlK3ROZlBlbXYzSFdkL1o1N2ZYMldm
dmZkZTZBRkQ4Z2dUQwpkRmdCZ0RTaFdCVHU2OEZjRWhQTHhQY0NHQkFCRGxnQndPRm1aZ1JIK0VR
QzFQeTlQWm1acUVqR3MvYnVMb0JrdTlzc3YxQW1jOWIvCmY1RWlOME1rQmdBS1JkVTJQSDRtRitV
Q2xGT3p4Umt5L3dUSzlKVXBNb1l4TWhhaENhS3NJdVBFcjJ6MnArWXJ1OG1ZbHlia29ScFoKemht
OE5KNk11MURlbWlYaG80d0VvVnlZSmVCbm8zd0haYjFVU1pvQTVmY28wOVA0bkV3QU1CU1pYOHpu
SnFGc2lUSkZGQm51aWZJQwpBQWlVeERtOGNnNkwrVGxvbmdCNHBtZmtpZ1NKU1dLbUVkZVlhZVhv
eUdiNjhiTlQrV0l4SzVURFRlR0llRXpQOUxRTWpqQVhnSzl2CmxrVUJKVmx0bVdpUjdhMGM3ZTFa
MXVabytiL1ozeDUrVS8wOXlIcjdWZkVtN00rZVFZeWVXZDlzN0t3dnZSWUE5aVJhbXgyenZwVlYK
QUxSdEJrRGw0YXhQN3lBQThnVUF0TjZjOHg2R2JGNlN4T0lNSnd1TDdPeHNjd0dmYXk0cjZEZjdu
NEp2eXIrR09mZVp5Kzc3Vmp1bQpGeitCSTBrVk0yVkY1YWFucGt0RXpNd01EcGZQWlAzM0VQL2p3
RGxwemNuRExKeWZ3QmZ4aGVoVlVlaVVDWVNKYUx1RlBJRllrQzVrCkNvUi8xZUYvR0RZbkJ4bCtu
V3NVYUhWZkFIMkZPVkM0U1FmSWJ6MEFReU1ESkc0L2VnSjk2MXNRTVFySXZyeG9yWkd2YzQ4eWV2
N24KK2g4TFhJcHU0VXhCSWxQbTlneVBaSElsb2l3Wm85K0ViTUVDRXBBSGRLQUtOSUV1TUFJc1lB
MGNnRE53QTk0Z0FJU0FTQkFEbGdNdQpTQUpwUUFTeVFUN1lBQXBCTWRnQmRvTnFjQURVZ1hyUUJF
NkNObkFHWEFSWHdBMXdDd3lBUjBBS2hzRkxNQUhlZ1drSWd2QVFGYUpCCnFwQVdwQStaUXRZUUcx
b0llVU5CVURnVUE4VkRpWkFRa2tENTBDYW9HQ3FEcXFGRFVEMzBJM1FhdWdoZGcvcWdCOUFnTkFi
OUFYMkUKRVpnQzAyRU4yQUMyZ05td094d0lSOExMNEVSNEZad0hGOERiNFVxNEZqNE90OElYNFJ2
d0FDeUZYOEtUQ0VESUNBUFJSbGdJRy9GRQpRcEJZSkFFUklXdVJJcVFDcVVXYWtBNmtHN21OU0pG
eDVBTUdoNkZobUJnV3hobmpoMW1NNFdKV1lkWmlTakRWbUdPWVZrd1g1alptCkVET0IrWUtsWXRX
eHBsZ25yRDkyQ1RZUm00MHR4RlpnajJCYnNKZXhBOWhoN0RzY0RzZkFHZUljY0g2NEdGd3liald1
QkxjUDE0eTcKZ092RERlRW04WGk4S3Q0VTc0SVB3WFB3WW53aHZncC9ISDhlMzQ4ZnhyOG5rQWxh
Qkd1Q0R5R1dJQ1JzSkZRUUdnam5DUDJFRWNJMApVWUdvVDNRaWhoQjV4RnhpS2JHTzJFRzhTUndt
VHBNVVNZWWtGMUlrS1ptMGdWUkphaUpkSmowbXZTR1R5VHBrUjNJWVdVQmVUNjRrCm55QmZKUStT
UDFDVUtDWVVUMG9jUlVMWlRqbEt1VUI1UUhsRHBWSU5xRzdVV0txWXVwMWFUNzFFZlVwOUwwZVRN
NWZ6bCtQSnJaT3IKa1d1VjY1ZDdKVStVMTVkM2wxOHVueWRmSVg5Sy9xYjh1QUpSd1VEQlU0R2pz
RmFoUnVHMHdqMkZTVVdhb3BWaWlHS2FZb2xpZytJMQp4VkVsdkpLQmtyY1NUNmxBNmJEU0phVWhH
a0xUcFhuU3VMUk50RHJhWmRvd0hVYzNwUHZUaytuRjlCL292ZlFKWlNWbFcrVW81UnpsCkd1V3p5
bElHd2pCZytETlNHYVdNazR5N2pJL3pOT2E1eitQUDJ6YXZhVjcvdkNtVitTcHVLbnlWSXBWbWxR
R1ZqNnBNVlcvVkZOV2QKcW0ycVQ5UXdhaVpxWVdyWmF2dlZMcXVOejZmUGQ1N1BuVjgwLytUOGgr
cXd1b2w2dVBwcTljUHFQZXFUR3BvYXZob1pHbFVhbHpURwpOUm1hYnBySm11V2E1elRIdEdoYUM3
VUVXdVZhNTdWZU1KV1o3c3hVWmlXeml6bWhyYTd0cHkzUlBxVGRxejJ0WTZpeldHZWpUclBPCkUx
MlNMbHMzUWJkY3QxTjNRazlMTDFndlg2OVI3NkUrVVordG42Uy9SNzliZjhyQTBDRGFZSXRCbThH
b29ZcWh2MkdlWWFQaFl5T3EKa2F2UktxTmFvenZHT0dPMmNZcnhQdU5iSnJDSm5VbVNTWTNKVFZQ
WTFONVVZTHJQdE04TWErWm9KalNyTmJ2SG9yRGNXVm1zUnRhZwpPY004eUh5amVadjVLd3M5aTFp
TG5SYmRGbDhzN1N4VExlc3NIMWtwV1FWWWJiVHFzUHJEMnNTYWExMWpmY2VHYXVOanM4Nm0zZWEx
CnJha3QzM2EvN1gwN21sMnczUmE3VHJ2UDlnNzJJdnNtK3pFSFBZZDRoNzBPOTloMGRpaTdoSDNW
RWV2bzRiak84WXpqQnlkN0o3SFQKU2FmZm5Wbk9LYzROenFNTERCZndGOVF0R0hMUmNlRzRISEtS
TG1RdWpGOTRjS0hVVmR1VjQxcnIrc3hOMTQzbmRzUnR4TjNZUGRuOQp1UHNyRDBzUGtVZUx4NVNu
aytjYXp3dGVpSmV2VjVGWHI3ZVM5Mkx2YXUrblBqbytpVDZOUGhPK2RyNnJmUy80WWYwQy9YYjYz
ZlBYCjhPZjYxL3RQQkRnRXJBbm9DcVFFUmdSV0J6NExNZ2tTQlhVRXc4RUJ3YnVDSHkvU1h5UmMx
QllDUXZ4RGRvVThDVFVNWFJYNmN4Z3UKTERTc0p1eDV1RlY0Zm5oM0JDMWlSVVJEeEx0SWo4alN5
RWVMalJaTEZuZEd5VWZGUmRWSFRVVjdSWmRGUzVkWUxGbXo1RWFNV293ZwpwajBXSHhzVmV5UjJj
cW4zMHQxTGgrUHM0Z3JqN2k0elhKYXo3TnB5dGVXcHk4K3VrRi9CV1hFcUhoc2ZIZDhRLzRrVHdx
bmxUSzcwClg3bDM1UVRYazd1SCs1TG54aXZuamZGZCtHWDhrUVNYaExLRTBVU1h4RjJKWTBtdVNS
Vko0d0pQUWJYZ2RiSmY4b0hrcVpTUWxLTXAKTTZuUnFjMXBoTFQ0dE5OQ0pXR0tzQ3RkTXowbnZT
L0ROS013UTdyS2FkWHVWUk9pUU5HUlRDaHpXV2E3bUk3K1RQVklqQ1NiSllOWgpDN05xc3Q1blIy
V2Z5bEhNRWViMDVKcmtic3NkeWZQSiszNDFaalYzZFdlK2R2NkcvTUUxN21zT3JZWFdybHpidVU1
M1hjRzY0ZlcrCjY0OXRJRzFJMmZETFJzdU5aUnZmYm9yZTFGR2dVYkMrWUdpejcrYkdRcmxDVWVH
OUxjNWJEbXpGYkJWczdkMW1zNjFxMjVjaVh0SDEKWXN2aWl1SlBKZHlTNjk5WmZWZjUzY3oyaE8y
OXBmYWwrM2ZnZGdoMzNOM3B1dk5ZbVdKWlh0blFydUJkcmVYTThxTHl0N3RYN0w1VwpZVnR4WUE5
cGoyU1B0REtvc3IxS3IycEgxYWZxcE9xQkdvK2E1cjNxZTdmdG5kckgyOWUvMzIxLzB3R05BOFVI
UGg0VUhMeC95UGRRCmE2MUJiY1ZoM09Hc3c4L3JvdXE2djJkL1gzOUU3VWp4a2M5SGhVZWx4OEtQ
ZGRVNzFOYzNxRGVVTnNLTmtzYXg0M0hIYi8zZzlVTjcKRTZ2cFVET2p1ZmdFT0NFNThlTEgrQi92
bmd3ODJYbUtmYXJwSi8yZjlyYlFXb3Bhb2RiYzFvbTJwRFpwZTB4NzMrbUEwNTBkemgwdApQNXYv
ZlBTTTlwbWFzOHBuUzgrUnpoV2Ntem1mZDM3eVFzYUY4WXVKRjRjNlYzUSt1clRrMHAydXNLN2V5
NEdYcjE3eHVYS3AyNzM3Ci9GV1hxMmV1T1YwN2ZaMTl2ZTJHL1kzV0hydWVsbC9zZm1ucHRlOXR2
ZWx3cy8yVzQ2Mk92Z1Y5NS9wZCt5L2U5cnA5NVk3L25Sc0QKaXdiNjdpNitlLzllM0QzcGZkNzkw
UWVwRDE0L3pIbzQvV2o5WSt6am9pY0tUeXFlcWordC9kWDQxMmFwdmZUc29OZGd6N09JWjQrRwp1
RU12LzVYNXIwL0RCYytwenl0R3RFYnFSNjFIejR6NWpOMTZzZlRGOE11TWw5UGpoYjhwL3JiM2xk
R3JuMzUzKzcxbllzbkU4R3ZSCjY1ay9TdDZvdmpuNjF2WnQ1MlRvNU5OM2FlK21wNHJlcTc0Lzlv
SDlvZnRqOU1lUjZleFArRStWbjQwL2Qzd0ovUEo0Sm0xbTV0LzMKaFBQN0NtVnVaSE4wY21WaGJR
cGxibVJ2WW1vS01UQWdNQ0J2WW1vS01qWXhNZ3BsYm1Sdlltb0tOeUF3SUc5aWFncGJJQzlKUTBO
QwpZWE5sWkNBNUlEQWdVaUJkQ21WdVpHOWlhZ296SURBZ2IySnFDanc4SUM5VWVYQmxJQzlRWVdk
bGN5QXZUV1ZrYVdGQ2IzZ2dXekFnCk1DQXlPU0F4TlYwZ0wwTnZkVzUwSURFZ0wwdHBaSE1nV3lB
eUlEQWdVaUJkSUQ0K0NtVnVaRzlpYWdveE1TQXdJRzlpYWdvOFBDQXYKVkhsd1pTQXZRMkYwWVd4
dlp5QXZVR0ZuWlhNZ015QXdJRklnUGo0S1pXNWtiMkpxQ2pFeUlEQWdiMkpxQ2loTllXTWdUMU1n
V0NBeApNQzQySUZGMVlYSjBlaUJRUkVaRGIyNTBaWGgwS1FwbGJtUnZZbW9LTVRNZ01DQnZZbW9L
S0VRNk1qQXdPREV5TWpJeU16VXlNalphCk1EQW5NREFuS1FwbGJtUnZZbW9LTVNBd0lHOWlhZ284
UENBdlVISnZaSFZqWlhJZ01USWdNQ0JTSUM5RGNtVmhkR2x2YmtSaGRHVWcKTVRNZ01DQlNJQzlO
YjJSRVlYUmxJREV6SURBZ1VpQStQZ3BsYm1Sdlltb0tlSEpsWmdvd0lERTBDakF3TURBd01EQXdN
REFnTmpVMQpNelVnWmlBS01EQXdNREF3TXpRNE9DQXdNREF3TUNCdUlBb3dNREF3TURBd01qVXlJ
REF3TURBd0lHNGdDakF3TURBd01ETXlOalVnCk1EQXdNREFnYmlBS01EQXdNREF3TURBeU1pQXdN
REF3TUNCdUlBb3dNREF3TURBd01qTXpJREF3TURBd0lHNGdDakF3TURBd01EQXoKTlRRZ01EQXdN
REFnYmlBS01EQXdNREF3TXpJek1DQXdNREF3TUNCdUlBb3dNREF3TURBd05EVXdJREF3TURBd0lH
NGdDakF3TURBdwpNREEwT1RVZ01EQXdNREFnYmlBS01EQXdNREF3TXpJd09TQXdNREF3TUNCdUlB
b3dNREF3TURBek16UTJJREF3TURBd0lHNGdDakF3Ck1EQXdNRE16T1RZZ01EQXdNREFnYmlBS01E
QXdNREF3TXpRME5pQXdNREF3TUNCdUlBcDBjbUZwYkdWeUNqdzhJQzlUYVhwbElERTAKSUM5U2Iy
OTBJREV4SURBZ1VpQXZTVzVtYnlBeElEQWdVaUF2U1VRZ1d5QThaRFkwWkRNME5EUTNaR1ZqT1Rj
elpqUmhNVEZsTm1ZeQpPRGRrTW1VME5qSStDanhrTmpSa016UTBORGRrWldNNU56Tm1OR0V4TVdV
MlpqSTROMlF5WlRRMk1qNGdYU0ErUGdwemRHRnlkSGh5ClpXWUtNelUyTXdvbEpVVlBSZ29BQUFC
Qmcrd0kyVVFrRE5rY0pObEVKQkNMQkNUWlhDUUVpMVFrQklQRUNNTUVBQUFBOVFBQUFDUUEKQUFB
QUFBQUFBQUFBQUIwQUFBQUlBQUFBQ0FBQUFBQUFBQUJiRXdBQUF3QUFBQVFBQUFEeEFBQUFmd0FB
QURFQUR4RUFBQUFBQUFBQQpBQUFBQUFBZEFBQUFBd0FBQUJrQUFBQ2xGd0FBQUFBQUFBQUFBRU5I
VUc5cGJuUk5ZV3RsQUJ3QUVoQUlBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBQUlBb0FBQXdB
Q3hFRUFBQUFRQUFBQUhnQURBQUxFUWdBQUFCQUFBQUFlUUFNQUFzUjlQLy8vd2dRQUFCd0FBSUEK
QmdBQThnQUFBREFBQUFBQUFBQUFBQUFBQUIwQUFBQUlBUUFBQXdBQUFDUUFBQUFBQUFBQUFRRUFn
QU1BQUFBQ0FRQ0FHUUFBQUFNQgpBSUFNQUFBQUtnQUFBQWNBV0FBQUFDb0FBQUFMQUZ3QUFBQXFB
QUFBQ2dEQUFBQUFLZ0FBQUFzQXhBQUFBQ29BQUFBS0FJUHNDTmxFCkpBelpIQ1RaUkNRUWl3UWsy
VndrQkl0VUpBU0R4QWpEQkFBQUFQVUFBQUFrQUFBQUFBQUFBQUFBQUFBZEFBQUFDQUFBQUFnQUFB
QUEKQUFBQVd4TUFBQU1BQUFBRUFBQUE4UUFBQUlvQUFBQXdBQThSQUFBQUFBQUFBQUFBQUFBQUhR
QUFBQU1BQUFBWkFBQUFaeElBQUFBQQpBQUFBQUFCRFIxTnBlbVZOWVd0bEFCd0FFaEFJQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBb0FBQkFBQ3hFRUFBQUFRQUFBCkFIZHBaSFJvQUJFQUN4
RUlBQUFBUUFBQUFHaGxhV2RvZEFBUEFBc1I5UC8vL3dzUUFBQnphWHBsQUFJQUJnQUFBUElBQUFB
d0FBQUEKQUFBQUFBQUFBQUFkQUFBQUNBRUFBQU1BQUFBa0FBQUFBQUFBQUFjQkFJQURBQUFBQ0FF
QWdCa0FBQUFKQVFDQURBQUFBREFBQUFBSApBRmdBQUFBd0FBQUFDd0JjQUFBQU1BQUFBQW9BekFB
QUFEQUFBQUFMQU5BQUFBQXdBQUFBQ2dEWlJDUUUyUmpaUkNRSTJWZ0UyVVFrCkRObFlDTmxFSkJE
WldBekRCQUFBQVBVQUFBQWtBQUFBQUFBQUFBQUFBQUFjQUFBQUFBQUFBQkFBQUFBQUFBQUFXeE1B
QUFBQUFBQUUKQUFBQThRQUFBSlVBQUFBd0FBOFJBQUFBQUFBQUFBQUFBQUFBSEFBQUFBQUFBQUFi
QUFBQVpoSUFBQUFBQUFBQUFBQkRSMUpsWTNSTgpZV3RsQUJ3QUVoQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBSUFvQUFBd0FDeEVFQUFBQVFBQUFBSGdBREFBTEVRZ0FBQUJBCkFBQUFlUUFR
QUFzUkRBQUFBRUFBQUFCM2FXUjBhQUFSQUFzUkVBQUFBRUFBQUFCb1pXbG5hSFFBQWdBR0FBQUFB
UElBQUFBNEFBQUEKQUFBQUFBQUFBQUFjQUFBQUNBRUFBQVFBQUFBc0FBQUFBQUFBQUEwQkFJQUFB
QUFBRHdFQWdBMEFBQUFRQVFDQUd3QUFBQklCQUlBTQpBQUFBTlFBQUFBY0FXQUFBQURVQUFBQUxB
RndBQUFBMUFBQUFDZ0RZQUFBQU5RQUFBQXNBM0FBQUFEVUFBQUFLQU5sRUpBalp3TmhNCkpCVFpS
Q1FFMmNEWVRDUU0zc0xaUkNRYzNzTFp5ZGxjSkFUWlJDUVlpMFFrQk43SzJFd2tFTjdCMkVRa0lO
bGNKQWlMVkNRSXd3UUEKQUFEMUFBQUFKQUFBQUFBQUFBQUFBQUFBUHdBQUFBQUFBQUFnQUFBQUFB
QUFBRnNUQUFBQUFBQUFCQUFBQVBFQUFBQ1ZBQUFBUXdBUApFUUFBQUFBQUFBQUFBQUFBQUQ4QUFB
QUFBQUFBUGdBQUFLOFRBQUFBQUFBQUFBQUFYMTlEUjFCdmFXNTBRWEJ3YkhsQlptWnBibVZVCmNt
RnVjMlp2Y20wQUhBQVNFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0NnQUFFQUFMRVFR
QUFBQUlFQUFBY0c5cGJuUUEKREFBTEVRd0FBQUFSRUFBQWRBQU1BQXNSQkFBQUFBZ1FBQUJ3QUFJ
QUJnQUFBQUR5QUFBQVFBQUFBQUFBQUFBQUFBQUFQd0FBQVBBQQpBQUFGQUFBQU5BQUFBQUFBQUFC
OUFBQ0FBQUFBQUg4QUFJQWlBQUFBZ0FBQWdDWUFBQUNCQUFDQVBnQUFBSUlBQUlBTUFBQUFPZ0FB
CkFBY0FXQUFBQURvQUFBQUxBRndBQUFBNkFBQUFDZ0RZQUFBQU9nQUFBQXNBM0FBQUFEb0FBQUFL
QU1jQkFBQUFBTU1DQUFBQVFnQUEKQUFZQUJBQUFBUFVBQUFBa0FBQUFBQUFBQUFBQUFBQUhBQUFB
QUFBQUFBQUFBQUFBQUFBQVd4TUFBQUFBQUFBRUFBQUE4UUFBQUhnQQpBQUJGQUJBUkFBQUFBQUFB
QUFBQUFBQUFCd0FBQUFBQUFBQUdBQUFBSnhBQUFBQUFBQUFBQUFCTlpXUnBZVlZKUld4bGJXVnVk
RG82CmZrMWxaR2xoVlVsRmJHVnRaVzUwQUJ3QUVoQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBSUFvQUFBMEFCaEVqRUFBQUVnQjAKYUdsekFBSUFCZ0R5QUFBQUlBQUFBQUFBQUFBQUFBQUFC
d0FBQU5nR0FBQUJBQUFBRkFBQUFBQUFBQUJCQUFDQURBQUFBRDhBQUFBSApBRmdBQUFBL0FBQUFD
d0JjQUFBQVB3QUFBQW9BdUFBQUFEOEFBQUFMQUx3QUFBQS9BQUFBQ2dBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBCkFBQUFBQUFBQUFBQUFBQUFSQUFBQUFZQUJBQUFBRVlBQUFBR0FBZ0FBQUJOQUFBQUJn
QU1BQUFBVXdBQUFBWUFFQUFBQUVjQUFBQUcKQUJRQUFBQklBQUFBQmdDTFJDUVlpMHdrRkl0VUpB
UlFVWXRNSkJDRDdCQ0x4SWtRaTFRa0pJbElCSXRNSkNpSlVBaUpTQXovRlFBQQpBQUNEeEJqQ0dB
QXNBQUFBVGdBQUFBWUFCQUFBQVBVQUFBQWtBQUFBQUFBQUFBQUFBQUEyQUFBQUFBQUFBQmdBQUFB
QUFBQUFXeE1BCkFBQUFBQUFFQUFBQThRQUFBS1VBQUFBOUFCQVJBQUFBQUFBQUFBQUFBQUFBTmdB
QUFBQUFBQUF6QUFBQUx4QUFBQUFBQUFBQUFBQk4KWldScFlWVkpSV3hsYldWdWREbzZhR2wwVkdW
emRBQWNBQklRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQUNBQUFOQUFZUgpMaEFBQUJJ
QWRHaHBjd0FSQUFzUkJBQUFBQTRRQUFCaWIzVnVaSE1BRUFBTEVSUUFBQUFJRUFBQWNHOXBiblFB
RGdBNUVTb0FBQUFBCkFBQUFSeEFBQUFJQUJnQUFBQUR5QUFBQUlBQUFBQUFBQUFBQUFBQUFOZ0FB
QU5nR0FBQUJBQUFBRkFBQUFBQUFBQUJFQUFDQURBQUEKQUUwQUFBQUhBRmdBQUFCTkFBQUFDd0Jj
QUFBQVRRQUFBQW9BelFBQUFFMEFBQUFMQU5FQUFBQk5BQUFBQ2dEb0FBQUFUUUFBQUFzQQo3QUFB
QUUwQUFBQUtBSXNOQUFBQUFJc1JpMFFrQkl0SkJJa1FpVWdFd2dRQUFnQUFBRlFBQUFBR0FBUUFB
QUQxQUFBQUpBQUFBQUFBCkFBQUFBQUFBRndBQUFBQUFBQUFFQUFBQUFBQUFBRnNUQUFBQUFBQUFC
QUFBQVBFQUFBQjBBQUFBUVFBUUVRQUFBQUFBQUFBQUFBQUEKQUJjQUFBQUFBQUFBRkFBQUFEQVFB
QUFBQUFBQUFBQUFUV1ZrYVdGVlNVVnNaVzFsYm5RNk9tNWhkSFZ5WVd4VGFYcGxBQndBRWhBQQpB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFJQUFBMEFCaEV1RUFBQUVnQjBhR2x6QUFJQUJn
RHlBQUFBSUFBQUFBQUFBQUFBCkFBQUFGd0FBQU5nR0FBQUJBQUFBRkFBQUFBQUFBQUJGQUFDQURB
QUFBRk1BQUFBSEFGZ0FBQUJUQUFBQUN3QmNBQUFBVXdBQUFBb0EKdEFBQUFGTUFBQUFMQUxnQUFB
QlRBQUFBQ2dDTFJDUUVpVUVFd2dRQUJBQUFBUFVBQUFBa0FBQUFBQUFBQUFBQUFBQUtBQUFBQUFB
QQpBQVFBQUFBQUFBQUFXeE1BQUFBQUFBQUVBQUFBOFFBQUFJVUFBQUEvQUJBUkFBQUFBQUFBQUFB
QUFBQUFDZ0FBQUFBQUFBQUhBQUFBCk54QUFBQUFBQUFBQUFBQk5aV1JwWVZWSlJXeGxiV1Z1ZERv
NmMyVjBVR0Z5ZEVsRUFCd0FFaEFBQUFBQUFBQUFBQUFBQUFBQUFBQUEKQUFBQUFBQUFJQW9BQUEw
QUJoRWpFQUFBRWdCMGFHbHpBQkVBQ3hFRUFBQUFkQUFBQUhCaGNuUkpSQUFDQUFZQUFBQUE4Z0FB
QUNBQQpBQUFBQUFBQUFBQUFBQW9BQUFEWUJnQUFBUUFBQUJRQUFBQUFBQUFBU2dBQWdBd0FBQUJa
QUFBQUJ3QllBQUFBV1FBQUFBc0FYQUFBCkFGa0FBQUFLQU1nQUFBQlpBQUFBQ3dETUFBQUFXUUFB
QUFvQWkwRUV3d1FBQUFEMUFBQUFKQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUEKQUFBQUFBQUFBQUFB
QUZzVEFBQUFBQUFBQkFBQUFQRUFBQUJ2QUFBQVBBQVFFUUFBQUFBQUFBQUFBQUFBQUFRQUFBQUFB
QUFBQXdBQQpBRGdRQUFBQUFBQUFBQUFBVFdWa2FXRlZTVVZzWlcxbGJuUTZPbkJoY25SSlJBQWNB
QklRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQ0FLQUFBTkFBWVJMaEFBQUJJQWRHaHBj
d0FDQUFZQUFQSUFBQUFnQUFBQUFBQUFBQUFBQUFBRUFBQUEyQVlBQUFFQUFBQVUKQUFBQUFBQUFB
RXNBQUlBTUFBQUFYZ0FBQUFjQVdBQUFBRjRBQUFBTEFGd0FBQUJlQUFBQUNnQ3dBQUFBWGdBQUFB
c0F0QUFBQUY0QQpBQUFLQUl0QkNOSG9KQUhEQkFBQUFQVUFBQUFrQUFBQUFBQUFBQUFBQUFBSUFB
QUFBQUFBQUFBQUFBQUFBQUFBV3hNQUFBQUFBQUFFCkFBQUE4UUFBQUhJQUFBQS9BQkFSQUFBQUFB
QUFBQUFBQUFBQUNBQUFBQUFBQUFBSEFBQUFPUkFBQUFBQUFBQUFBQUJOWldScFlWVkoKUld4bGJX
VnVkRG82YVhOUWNtVnpjMlZrQUJ3QUVoQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFv
QUFBMEFCaEV1RUFBQQpFZ0IwYUdsekFBSUFCZ0FBQVBJQUFBQWdBQUFBQUFBQUFBQUFBQUFJQUFB
QTJBWUFBQUVBQUFBVUFBQUFBQUFBQUUwQUFJQU1BQUFBCll3QUFBQWNBV0FBQUFHTUFBQUFMQUZ3
QUFBQmpBQUFBQ2dDMEFBQUFZd0FBQUFzQXVBQUFBR01BQUFBS0FJdEJDTUhvQkNRQnd3UUEKQUFE
MUFBQUFKQUFBQUFBQUFBQUFBQUFBQ1FBQUFBQUFBQUFBQUFBQUFBQUFBRnNUQUFBQUFBQUFCQUFB
QVBFQUFBQnlBQUFBUHdBUQpFUUFBQUFBQUFBQUFBQUFBQUFrQUFBQUFBQUFBQ0FBQUFEa1FBQUFB
QUFBQUFBQUFUV1ZrYVdGVlNVVnNaVzFsYm5RNk9tbHpSbTlqCmRYTmxaQUFjQUJJUUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FLQUFBTkFBWVJMaEFBQUJJQWRHaHBjd0FDQUFZQUFBRHkK
QUFBQUlBQUFBQUFBQUFBQUFBQUFDUUFBQU5nR0FBQUJBQUFBRkFBQUFBQUFBQUJPQUFDQURBQUFB
R2dBQUFBSEFGZ0FBQUJvQUFBQQpDd0JjQUFBQWFBQUFBQW9BdEFBQUFHZ0FBQUFMQUxnQUFBQm9B
QUFBQ2dDTFFRajMwSVBnQWNNRUFBQUE5UUFBQUNRQUFBQUFBQUFBCkFBQUFBQWtBQUFBQUFBQUFB
QUFBQUFBQUFBQmJFd0FBQUFBQUFBUUFBQUR4QUFBQWNnQUFBRDhBRUJFQUFBQUFBQUFBQUFBQUFB
QUoKQUFBQUFBQUFBQWdBQUFBNUVBQUFBQUFBQUFBQUFFMWxaR2xoVlVsRmJHVnRaVzUwT2pwcGMw
VnVZV0pzWldRQUhBQVNFQUFBQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdDZ0FBRFFBR0VT
NFFBQUFTQUhSb2FYTUFBZ0FHQUFBQThnQUFBQ0FBQUFBQUFBQUFBQUFBCkFBa0FBQURZQmdBQUFR
QUFBQlFBQUFBQUFBQUFUd0FBZ0F3QUFBQnRBQUFBQndCWUFBQUFiUUFBQUFzQVhBQUFBRzBBQUFB
S0FMUUEKQUFCdEFBQUFDd0M0QUFBQWJRQUFBQW9BOWtRa0JBRldpL0hIQmdBQUFBQjBDVmJvQUFB
QUFJUEVCSXZHWHNJRUFBb0FBQUJDQUFBQQpCZ0FTQUFBQWN3QUFBQlFBQkFBQUFQVUFBQUJFQUFB
QUFBQUFBQUFBQUFBZkFBQUFBQUFBQUFRQUFBQUFBQUFBV3hNQUFBZ0FBQUFFCkFBQUFCZ0FBQUJZ
QUFBQUFBQUFBQkFBQUFBQUFBQUJiRXdBQUFnQUVBQUFBQUFEeEFBQUFoUUFBQUZJQUVCRUFBQUFB
QUFBQUFBQUEKQUFBZkFBQUFDQUFBQUJ3QUFBQkVFQUFBQUFBQUFBQUFBRTFsWkdsaFZVbEZiR1Z0
Wlc1ME9qcGdjMk5oYkdGeUlHUmxiR1YwYVc1bgpJR1JsYzNSeWRXTjBiM0luQUJ3QUVoQUFBQUFB
QUFBQUFBQUFBQUFFQUFBQUFBQUFBQUFBSUFJQUFBMEFCaEVqRUFBQUVnQjBhR2x6CkFBSUFCZ0FB
QUFBTUFBQUFRd0FBQUFjQWVBQUFBRU1BQUFBTEFId0FBQUJEQUFBQUNnRGRRUkREQkFBQUFQVUFB
QUFrQUFBQUFBQUEKQUFBQUFBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQVd4TUFBQUFBQUFBRUFBQUE4
UUFBQUhvQUFBQkhBQkFSQUFBQUFBQUFBQUFBQUFBQQpCQUFBQUFBQUFBQURBQUFBVUJBQUFBQUFB
QUFBQUFCTlpXUnBZVlZKVkdsdFpXeHBibVZUYkdsa1pYSTZPblJwYldWTWIyRmtaV1FBCkhBQVNF
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0NnQUFEUUFHRVU4UUFBQVNBSFJvYVhNQUFn
QUdBQUFBOGdBQUFDQUEKQUFBQUFBQUFBQUFBQUFRQUFBRFlCZ0FBQVFBQUFCUUFBQUFBQUFBQVhB
QUFnQXdBQUFCNEFBQUFCd0JZQUFBQWVBQUFBQXNBWEFBQQpBSGdBQUFBS0FMd0FBQUI0QUFBQUN3
REFBQUFBZUFBQUFBb0EzVUVZd3dRQUFBRDFBQUFBSkFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBCkFB
QUFBQUFBQUFBQUFGc1RBQUFBQUFBQUJBQUFBUEVBQUFCNEFBQUFSUUFRRVFBQUFBQUFBQUFBQUFB
QUFBUUFBQUFBQUFBQUF3QUEKQUZBUUFBQUFBQUFBQUFBQVRXVmthV0ZWU1ZScGJXVnNhVzVsVTJ4
cFpHVnlPanBrZFhKaGRHbHZiZ0FjQUJJUUFBQUFBQUFBQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUNB
S0FBQU5BQVlSVHhBQUFCSUFkR2hwY3dBQ0FBWUE4Z0FBQUNBQUFBQUFBQUFBQUFBQUFBUUFBQURZ
CkJnQUFBUUFBQUJRQUFBQUFBQUFBWHdBQWdBd0FBQUI5QUFBQUJ3QllBQUFBZlFBQUFBc0FYQUFB
QUgwQUFBQUtBTGdBQUFCOUFBQUEKQ3dDOEFBQUFmUUFBQUFvQTJlN2NVUmpmNFBiRVJIc0kzZGpk
UVJEY2NSakRCQUFBQVBVQUFBQWtBQUFBQUFBQUFBQUFBQUFWQUFBQQpBQUFBQUFBQUFBQUFBQUFB
V3hNQUFBQUFBQUFFQUFBQThRQUFBSDRBQUFCTEFCQVJBQUFBQUFBQUFBQUFBQUFBRlFBQUFBQUFB
QUFVCkFBQUFVQkFBQUFBQUFBQUFBQUJOWldScFlWVkpWR2x0Wld4cGJtVlRiR2xrWlhJNk9tWnlZ
V04wYVc5dVRHOWhaR1ZrQUJ3QUVoQUEKQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBb0FB
QTBBQmhGUEVBQUFFZ0IwYUdsekFBSUFCZ0FBQVBJQUFBQWdBQUFBQUFBQQpBQUFBQUFBVkFBQUEy
QVlBQUFFQUFBQVVBQUFBQUFBQUFHRUFBSUFNQUFBQWdnQUFBQWNBV0FBQUFJSUFBQUFMQUZ3QUFB
Q0NBQUFBCkNnREFBQUFBZ2dBQUFBc0F4QUFBQUlJQUFBQUtBQUFBQUFBQUFBQUFpMEVNd3dRQUFB
RDFBQUFBSkFBQUFBQUFBQUFBQUFBQUJBQUEKQUFBQUFBQUFBQUFBQUFBQUFGc1RBQUFBQUFBQUJB
QUFBUEVBQUFCOEFBQUFTUUFRRVFBQUFBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQQpBd0FBQU4wV0FB
QUFBQUFBQUFBQVRXVmthV0ZUYUdGeVpXUlZTVWx0WVdkbFJXeGxiV1Z1ZERvNlptbHNiRTF2WkdV
QUhBQVNFQUFBCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdDZ0FBRFFBR0VkWVdBQUFTQUhS
b2FYTUFBZ0FHQVBJQUFBQWdBQUFBQUFBQUFBQUEKQUFBRUFBQUF3QVlBQUFFQUFBQVVBQUFBQUFB
QUFDSUFBSUFNQUFBQWlnQUFBQWNBV0FBQUFJb0FBQUFMQUZ3QUFBQ0tBQUFBQ2dDOApBQUFBaWdB
QUFBc0F3QUFBQUlvQUFBQUtBSXZCeHdBQUFBQUF3d1FBQUFCQ0FBQUFCZ0FFQUFBQTlRQUFBQ1FB
QUFBQUFBQUFBQUFBCkFBa0FBQUFBQUFBQUFBQUFBQUFBQUFCYkV3QUFBZ0FBQUFRQUFBRHhBQUFB
ZHdBQUFFUUFFQkVBQUFBQUFBQUFBQUFBQUFBSkFBQUEKQWdBQUFBZ0FBQUFuRUFBQUFBQUFBQUFB
QUUxbFpHbGhWVWxGYkdWdFpXNTBPanBOWldScFlWVkpSV3hsYldWdWRBQWNBQklRQUFBQQpBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FLQUFBTkFBWVJJeEFBQUJJQWRHaHBjd0FDQUFZQUFBd0FB
QUNQQUFBQUJ3QllBQUFBCmp3QUFBQXNBWEFBQUFJOEFBQUFLQU1jQkFBQUFBTU1DQUFBQVFnQUFB
QVlBQkFBQUFQVUFBQUFrQUFBQUFBQUFBQUFBQUFBSEFBQUEKQUFBQUFBQUFBQUFBQUFBQVd4TUFB
QUFBQUFBRUFBQUE4UUFBQUk0QUFBQmJBQkFSQUFBQUFBQUFBQUFBQUFBQUJ3QUFBQUFBQUFBRwpB
QUFBMHhZQUFBQUFBQUFBQUFCTlpXUnBZVk5vWVhKbFpGVkpTVzFoWjJWRmJHVnRaVzUwT2pwK1RX
VmthV0ZUYUdGeVpXUlZTVWx0CllXZGxSV3hsYldWdWRBQWNBQklRQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFDQUtBQUFOQUFZUjBSWUFBQklBZEdocGN3QUMKQUFZQUFBQU1BQUFBbEFBQUFB
Y0FXQUFBQUpRQUFBQUxBRndBQUFDVUFBQUFDZ0RaQlFBQUFBRERBZ0FBQUp3QUFBQUdBQVFBQUFE
MQpBQUFBSkFBQUFBQUFBQUFBQUFBQUJ3QUFBQUFBQUFBQUFBQUFBQUFBQUZzVEFBQUFBQUFBQkFB
QUFQRUFBQUI4QUFBQVdBQVFFUUFBCkFBQUFBQUFBQUFBQUFBY0FBQUFBQUFBQUJnQUFBUHdXQUFB
QUFBQUFBQUFBVFdWa2FXRlRhR0Z5WldSVlNWWnZiSFZ0WlZOc2FXUmwKY2tKaFkydG5jbTkxYm1S
RmJHVnRaVzUwT2pweVlXUnBkWE1BSEFBU0VBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFn
Q2dBQQpBZ0FHQVBJQUFBQWdBQUFBQUFBQUFBQUFBQUFIQUFBQXdBWUFBQUVBQUFBVUFBQUFBQUFB
QURrQUFJQU1BQUFBbVFBQUFBY0FXQUFBCkFKa0FBQUFMQUZ3QUFBQ1pBQUFBQ2dDOEFBQUFtUUFB
QUFzQXdBQUFBSmtBQUFBS0FBQUFNRUhaNk1NRUFBQUE5UUFBQUNRQUFBQUEKQUFBQUFBQUFBQU1B
QUFBQUFBQUFBQUFBQUFBQUFBQmJFd0FBQUFBQUFBUUFBQUR4QUFBQWhRQUFBR0VBRUJFQUFBQUFB
QUFBQUFBQQpBQUFEQUFBQUFBQUFBQUlBQUFEOEZnQUFBQUFBQUFBQUFFMWxaR2xoVTJoaGNtVmtW
VWxXYjJ4MWJXVlRiR2xrWlhKQ1lXTnJaM0p2CmRXNWtSV3hsYldWdWREbzZjM1J5YjJ0bFZHaHBZ
MnR1WlhOekFCd0FFaEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBb0EKQUFJQUJnQUFB
QUR5QUFBQUlBQUFBQUFBQUFBQUFBQUFBd0FBQU1BR0FBQUJBQUFBRkFBQUFBQUFBQUE2QUFDQURB
QUFBS0VBQUFBSApBRmdBQUFDaEFBQUFDd0JjQUFBQW9RQUFBQW9BeUFBQUFLRUFBQUFMQU13QUFB
Q2hBQUFBQ2dBQUFJQS8yUVVBQUFBQXd3SUFBQUNzCkFBQUFCZ0FFQUFBQTlRQUFBQ1FBQUFBQUFB
QUFBQUFBQUFjQUFBQUFBQUFBQUFBQUFBQUFBQUJiRXdBQUFBQUFBQVFBQUFEeEFBQUEKYlFBQUFF
a0FFQkVBQUFBQUFBQUFBQUFBQUFBSEFBQUFBQUFBQUFZQUFBQUtGd0FBQUFBQUFBQUFBRTFsWkds
aFUyaGhjbVZrVlVsVQphVzFsYkdsdVpWTnNhV1JsY2pvNmFHVnBaMmgwQUJ3QUVoQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFvQUFBSUFCZ0FBCkFBRHlBQUFBSUFBQUFBQUFBQUFBQUFB
QUJ3QUFBTUFHQUFBQkFBQUFGQUFBQUFBQUFBQkdBQUNBREFBQUFLa0FBQUFIQUZnQUFBQ3AKQUFB
QUN3QmNBQUFBcVFBQUFBb0FzQUFBQUtrQUFBQUxBTFFBQUFDcEFBQUFDZ0FBQUNCQjJRVUFBQUFB
d3dJQUFBQzBBQUFBQmdBRQpBQUFBOVFBQUFDUUFBQUFBQUFBQUFBQUFBQWNBQUFBQUFBQUFBQUFB
QUFBQUFBQmJFd0FBQUFBQUFBUUFBQUR4QUFBQWJRQUFBRWtBCkVCRUFBQUFBQUFBQUFBQUFBQUFI
QUFBQUFBQUFBQVlBQUFBS0Z3QUFBQUFBQUFBQUFFMWxaR2xoVTJoaGNtVmtWVWxVYVcxbGJHbHUK
WlZOc2FXUmxjam82YjJabWMyVjBBQndBRWhBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJ
QW9BQUFJQUJnQUFBQUR5QUFBQQpJQUFBQUFBQUFBQUFBQUFBQndBQUFNQUdBQUFCQUFBQUZBQUFB
QUFBQUFCSEFBQ0FEQUFBQUxFQUFBQUhBRmdBQUFDeEFBQUFDd0JjCkFBQUFzUUFBQUFvQXNBQUFB
TEVBQUFBTEFMUUFBQUN4QUFBQUNnQUFBQUJBMlFVQUFBQUF3d0lBQUFDOEFBQUFCZ0FFQUFBQTlR
QUEKQUNRQUFBQUFBQUFBQUFBQUFBY0FBQUFBQUFBQUFBQUFBQUFBQUFCYkV3QUFBQUFBQUFRQUFB
RHhBQUFBZVFBQUFGVUFFQkVBQUFBQQpBQUFBQUFBQUFBQUhBQUFBQUFBQUFBWUFBQUFnRndBQUFB
QUFBQUFBQUUxbFpHbGhVMmhoY21Wa1ZVbFVhVzFsYkdsdVpWTnNhV1JsCmNsUm9kVzFpUld4bGJX
VnVkRG82Y21Ga2FYVnpBQndBRWhBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQW9BQUFJ
QUJnQUEKQUFEeUFBQUFJQUFBQUFBQUFBQUFBQUFBQndBQUFNQUdBQUFCQUFBQUZBQUFBQUFBQUFC
WEFBQ0FEQUFBQUxrQUFBQUhBRmdBQUFDNQpBQUFBQ3dCY0FBQUF1UUFBQUFvQXZBQUFBTGtBQUFB
TEFNQUFBQUM1QUFBQUNnQUFBSUJBMlFVQUFBQUF3d0lBQUFERUFBQUFCZ0FFCkFBQUE5UUFBQUNR
QUFBQUFBQUFBQUFBQUFBY0FBQUFBQUFBQUFBQUFBQUFBQUFCYkV3QUFBQUFBQUFRQUFBRHhBQUFB
YXdBQUFFY0EKRUJFQUFBQUFBQUFBQUFBQUFBQUhBQUFBQUFBQUFBWUFBQUF1RndBQUFBQUFBQUFB
QUUxbFpHbGhVMmhoY21Wa1ZVbFdiMngxYldWVApiR2xrWlhJNk9uSmhaR2wxY3dBY0FCSVFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBS0FBQUNBQVlBQVBJQUFBQWdBQUFBCkFBQUFBQUFB
QUFBSEFBQUF3QVlBQUFFQUFBQVVBQUFBQUFBQUFHSUFBSUFNQUFBQXdRQUFBQWNBV0FBQUFNRUFB
QUFMQUZ3QUFBREIKQUFBQUNnQ3NBQUFBd1FBQUFBc0FzQUFBQU1FQUFBQUtBQUFBb0VEWkJRQUFB
QUREQWdBQUFMd0FBQUFHQUFRQUFBRDFBQUFBSkFBQQpBQUFBQUFBQUFBQUFCd0FBQUFBQUFBQUFB
QUFBQUFBQUFGc1RBQUFBQUFBQUJBQUFBUEVBQUFCM0FBQUFVd0FRRVFBQUFBQUFBQUFBCkFBQUFB
QWNBQUFBQUFBQUFCZ0FBQUVRWEFBQUFBQUFBQUFBQVRXVmthV0ZUYUdGeVpXUlZTVlp2YkhWdFpW
TnNhV1JsY2xSb2RXMWkKUld4bGJXVnVkRG82Y21Ga2FYVnpBQndBRWhBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFJQW9BQUFJQUJnQUE4Z0FBQUNBQQpBQUFBQUFBQUFBQUFBQWNBQUFEQUJn
QUFBUUFBQUJRQUFBQUFBQUFBY1FBQWdBd0FBQURKQUFBQUJ3QllBQUFBeVFBQUFBc0FYQUFBCkFN
a0FBQUFLQUxnQUFBREpBQUFBQ3dDOEFBQUF5UUFBQUFvQTJVUWtCTm5oMlZ3a0JObEVKQVREQkFB
QUFQVUFBQUFrQUFBQUFBQUEKQUFBQUFBQVBBQUFBQUFBQUFBUUFBQUFBQUFBQVd4TUFBQUFBQUFB
RUFBQUE4UUFBQUY0QUFBQXJBQkFSQUFBQUFBQUFBQUFBQUFBQQpEd0FBQUFBQUFBQU9BQUFBdWhB
QUFBQUFBQUFBQUFCbVlXSnpaZ0FjQUJJUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FL
CkFBQU5BQXNSQkFBQUFFQUFBQUJmV0FBQ0FBWUFBQUR5QUFBQUlBQUFBQUFBQUFBQUFBQUFEd0FB
QUVnQUFBQUJBQUFBRkFBQUFBQUEKQUFDQUFRQ0FEQUFBQU00QUFBQUhBRmdBQUFET0FBQUFDd0Jj
QUFBQXpnQUFBQW9Bb0FBQUFNNEFBQUFMQUtRQUFBRE9BQUFBQ2dEWgpSQ1FFMmVIWlhDUUUyVVFr
Qk1NRUFBQUE5UUFBQUNRQUFBQUFBQUFBQUFBQUFBOEFBQUFBQUFBQUJBQUFBQUFBQUFCYkV3QUFB
QUFBCkFBUUFBQUR4QUFBQVhRQUFBQ29BRUJFQUFBQUFBQUFBQUFBQUFBQVBBQUFBQUFBQUFBNEFB
QUM2RUFBQUFBQUFBQUFBQUdaaFluTUEKSEFBU0VBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFnQ2dBQURRQUxFUVFBQUFCQUFBQUFYMWdBQWdBR0FBQUFBUElBQUFBZwpBQUFBQUFBQUFBQUFB
QUFQQUFBQVNBQUFBQUVBQUFBVUFBQUFBQUFBQVA0QkFJQU1BQUFBMHdBQUFBY0FXQUFBQU5NQUFB
QUxBRndBCkFBRFRBQUFBQ2dDZ0FBQUEwd0FBQUFzQXBBQUFBTk1BQUFBS0FJUHNYRk5WVmxkUS94
VUFBQUFBaS9pRHhBU0YvNGw4SkJSMEhHb0IKVi84VkFBQUFBSXZ3ZzhRSWhmWjFGRmYvRlFBQUFB
Q0R4QVF6d0Y5ZVhWdUR4RnpEaXowQUFBQUFhZ0dOVENRd1ZsSC8xNHRRQ0lzWQppMmdFaTBBTWFn
Q05UQ1JNVmxHSlZDUThpVVFrUVAvWGkxUWtQSVBFQ0l2TWlSbUphUVNKVVFpTFZDUTRpVkVNaXhD
RDdCQ0x6SWtSCmkxQUVpVkVFaTFBSWkwQU1pVkVJaVVFTWpVd2tkRkgvRlFBQUFBQ0xPSXRZQkl0
UURJdG9DRmFKZkNSRWlWd2tTSWxVSkZEL0ZRQUEKQUFDSlJDUTQyMFFrT0lQRUpJMUVKRmpjRFFB
QUFBRGNOUUFBQUFEWlhDUVUyVVFrRk5rY0pGRC9GUUFBQUFDTENJdFFCSWxVSkVpTApVQXlKVENS
RWkwZ0lpVlFrVUl0UUZJbE1KRXlMU0JDSlZDUllpeENEN0JDSlRDUmtpOHlKRVl0UUJJbFJCSXRR
Q0lsUkNJdFFESWxSCkRJdFFFSXRBRklsUkVJbEJGSXRNSkVDRDdCQ0x4SWs0aVZnRWpWUWtmSWxv
Q0ZLSlNBei9GUUFBQUFEWlJDUm8yVVFrU0lzSTJjQ0wKVUFUZXlvbE1KRmpaUkNSd2kwZ0kyVVFr
VEl0QURObkFhZ0RleWxEWnkxRnFBTjdCaVZRa2JOaUVKSWdBQUFEWlhDUlkyRXdrZk5tRQpKSVFB
QUFEZXl0N0IySVFrakFBQUFObGNKRnovRlFBQUFBQ0wrSVBFUElYL2RSaUxSQ1FVVVA4VkFBQUFB
SVBFQkRQQVgxNWRXNFBFClhNTlgveFVBQUFBQTJVUWtKTmhrSkRTTDJObGNKQnpaUkNRYzJSd2tV
ZGxFSkNTTlRDUmMyR1FrTk5sY0pDRFpSQ1FnMlJ3a1VmOFYKQUFBQUFObEVKQnlMRUlQc0VJdk0y
VndrR0lrUmkxQUVpVkVFaTFBSWlWRUlpMUFNaVZFTWkxQVFpMEFVaVZFUWlVRVVqVXdrY0ZILwpG
UUFBQUFDTEVJUEVDSXZNaVJHTFVBU0pVUVNMVUFpSlVRaUxVQXlKVVF5TFVCQ0xRQlNKVVJCVGlV
RVUveFVBQUFBQVZsUC9GUUFBCkFBQ0xUQ1E0VWY4VkFBQUFBSVBFS0l2SFgxNWRXNFBFWE1NS0FB
QUE3QUFBQUFZQUlBQUFBT3NBQUFBR0FEQUFBQURxQUFBQUJnQkQKQUFBQTZRQUFBQVlBcUFBQUFP
Z0FBQUFHQU1ZQUFBRG5BQUFBQmdEYkFBQUE1Z0FBQUFZQTRRQUFBT01BQUFBR0FQTUFBQURnQUFB
QQpCZ0JpQVFBQTN3QUFBQVlBd2dFQUFONEFBQUFHQU5ZQkFBRHFBQUFBQmdEcUFRQUEzUUFBQUFZ
QUhnSUFBTndBQUFBR0FGZ0NBQURiCkFBQUFCZ0NHQWdBQTJnQUFBQVlBamdJQUFOa0FBQUFHQUpr
Q0FBRHFBQUFBQmdBRUFBQUE5UUFBQUdRQUFBQUFBQUFBQUFBQUFLb0MKQUFCY0FBQUFBQUFBQUFB
QUFBQmJFd0FBQndBSUFBUUFBQUFFQUFBQXBnSUFBRndBQUFBQUFBQUFBQUFBQUxJVEFBQURBQXdB
QUFBQQpBQVVBQUFDbEFnQUFYQUFBQUFBQUFBQUFBQUFBR3hRQUFBSUFFQUFBQUFBQThRQUFBQWtD
QUFCR0FBOFJBQUFBQUFBQUFBQUFBQUFBCnFnSUFBQWNBQUFDaUFnQUFZQmNBQUFBQUFBQUFBQUJq
Y21WaGRHVkRSMHhoZVdWeVJuSnZiVkJFUmtSaGRHRlFjbTkyYVdSbGNnQWMKQUJJUVhBQUFBQUFB
QUFBQUFBQUFFQUFBQUFBQUFBQUFBQUFDQUFBVkFBWVJEUkVBQUJFQVpHRjBZVkJ5YjNacFpHVnlB
QlFBQ3hITQovLy8vRVJBQUFIUnlZVzV6Wm05eWJRQWFBQXNSdlAvLy93NFFBQUJrWlhOMGFXNWhk
R2x2YmxKbFkzUUFHQUFMRWFELy8vOUFBQUFBCmNtOTBZWFJwYjI1QmJtZHNaUUFWQUFzUnJQLy8v
dzRRQUFCemIzVnlZMlZTWldOMEFCTUFDeEdrLy8vL1l4Y0FBR1J2WTNWdFpXNTAKQUE0QU9SRUlB
QUFBQUFBQUFHUVhBQUFPQURrUkhnQUFBQUFBQUFCb0Z3QUFEZ0E1RVM0QUFBQUFBQUFBWGhJQUFB
NEFPUkZQQUFBQQpBQUFBQUc0WEFBQU9BRGtSYkFBQUFBQUFBQUJ1RndBQURnQTVFYVlBQUFBQUFB
QUFhaGNBQUE0QU9SSEVBQUFBQUFBQUFIQVhBQUFPCkFEa1I4UUFBQUFBQUFBQnhGd0FBRGdBNUVX
QUJBQUFBQUFBQWN4Y0FBQTRBT1JIQUFRQUFBQUFBQUhJU0FBQU9BRGtSMUFFQUFBQUEKQUFCZUVn
QUFEZ0E1RWVnQkFBQUFBQUFBZEJJQUFBNEFPUkVjQWdBQUFBQUFBSFFYQUFBT0FEa1JWZ0lBQUFB
QUFBQjJGd0FBRGdBNQpFWVFDQUFBQUFBQUFxUk1BQUE0QU9SR01BZ0FBQUFBQUFIZ1hBQUFPQURr
Umx3SUFBQUFBQUFCZUVnQUFBZ0FHQUFBQUFQSUFBQUR3CkFBQUFBQUFBQUFBQUFBQ3FBZ0FBRUFJ
QUFCc0FBQURrQUFBQUFBQUFBRWNBQUlBSEFBQUFTQUFBZ0JNQUFBQkpBQUNBR1FBQUFFb0EKQUlB
YkFBQUFUQUFBZ0NrQUFBQk5BQUNBTFFBQUFFNEFBSUEzQUFBQVR3QUFnRGtBQUFCb0FBQ0FRUUFB
QUZJQUFJQzNBQUFBVXdBQQpnTklBQUFCVUFBQ0FIQUVBQUZVQUFJQm1BUUFBVmdBQWdJc0JBQUJa
QUFDQXl3RUFBRm9BQUlEUEFRQUFXd0FBZ04wQkFBQmNBQUNBCjN3RUFBR2dBQUlEbkFRQUFYZ0FB
Z080QkFBQmdBQUNBSWdJQUFHRUFBSUJjQWdBQVlnQUFnSW9DQUFCakFBQ0FrZ0lBQUdVQUFJQ2cK
QWdBQVp3QUFnS0lDQUFCb0FBQ0FEQUFBQU5nQUFBQUhBSmdBQUFEWUFBQUFDd0NjQUFBQTJBQUFB
QW9BY1FFQUFOZ0FBQUFMQUhVQgpBQURZQUFBQUNnQ0JBUUFBMkFBQUFBc0FoUUVBQU5nQUFBQUtB
SkVCQUFEWUFBQUFDd0NWQVFBQTJBQUFBQW9Bb1FFQUFOZ0FBQUFMCkFLVUJBQURZQUFBQUNnQ3hB
UUFBMkFBQUFBc0F0UUVBQU5nQUFBQUtBTUVCQUFEWUFBQUFDd0RGQVFBQTJBQUFBQW9BMFFFQUFO
Z0EKQUFBTEFOVUJBQURZQUFBQUNnRGhBUUFBMkFBQUFBc0E1UUVBQU5nQUFBQUtBUEVCQUFEWUFB
QUFDd0QxQVFBQTJBQUFBQW9BQVFJQQpBTmdBQUFBTEFBVUNBQURZQUFBQUNnQVJBZ0FBMkFBQUFB
c0FGUUlBQU5nQUFBQUtBQ0VDQUFEWUFBQUFDd0FsQWdBQTJBQUFBQW9BCk1RSUFBTmdBQUFBTEFE
VUNBQURZQUFBQUNnQkJBZ0FBMkFBQUFBc0FSUUlBQU5nQUFBQUtBRkVDQUFEWUFBQUFDd0JWQWdB
QTJBQUEKQUFvQVlRSUFBTmdBQUFBTEFHVUNBQURZQUFBQUNnQnhBZ0FBMkFBQUFBc0FkUUlBQU5n
QUFBQUtBSXdDQUFEWUFBQUFDd0NRQWdBQQoyQUFBQUFvQUFBQUFBQUNBWmtBWUxVUlUreUVKUUlQ
c0ZGYUw4SVgyVjNRaWkwUWtMSXRNSkNoUVVWYi9GUUFBQUFDSlJDUWdnOFFNCmlWUWtHSTFFSkJU
ckJJMUVKQ2lMRUl0QUJJdE1KRENKVkNRTTJVUWtETm5oaVVRa0VObGNKQWhSMlVRa0RObGNKQmlM
UkNRWTJVUWsKRk5uaDJWd2tETmxFSkF6WlhDUWNpMVFrSEZKUVZ2OFZBQUFBQUl2d1Z2OFZBQUFB
QUZhTCtQOFZBQUFBQUlsVUpERFpSQ1F3MkhRawpSSVBFRUlsRUpCelpYQ1FRMlVRa0VObGNKQVRa
UkNRYzJIUWtNTmxjSkJEWlJDUVEyUndrVi84VkFBQUFBTmxFSkREWjRJUEVCTmxjCkpBVFpSQ1Fv
MmVEWkhDUlgveFVBQUFBQWc4UU1YNHZHWG9QRUZNTVlBQUFBOVFBQUFBWUFkQUFBQU40QUFBQUdB
SDBBQUFEZEFBQUEKQmdDR0FBQUE5QUFBQUFZQXZ3QUFBUE1BQUFBR0FOd0FBQUR5QUFBQUJnQUVB
QUFBOVFBQUFHUUFBQUFBQUFBQUFBQUFBT3NBQUFBVQpBQUFBRkFBQUFBQUFBQUJiRXdBQUJnQUFB
QVFBQUFBRUFBQUE0d0FBQUJRQUFBQVVBQUFBQUFBQUFGc1RBQUFDQUFRQUFBQUFBQWtBCkFBRGJB
QUFBRkFBQUFCUUFBQUFBQUFBQVd4TUFBQUFBQ0FBQUFBQUE4UUFBQUJVQkFBQkVBQThSQUFBQUFB
QUFBQUFBQUFBQTZ3QUEKQUFZQUFBRG5BQUFBeGhjQUFBQUFBQUFBQUFCamNtVmhkR1ZEUjB4aGVX
VnlWMmwwYUVOdmJuUmxlSFJKYmxKbFkzUUFIQUFTRUJRQQpBQUFBQUFBQUFBQUFBQWdBQUFBQUFB
QUFBQUFBQWdBQUVBQUdFU2tRQUFBUkFHTnZiblJsZUhRQUR3QUxFUVFBQUFBT0VBQUFjbVZqCmRB
QVNBQXNSRkFBQUFIQVNBQUJ2Y0hScGIyNXpBQlFBQ3hIcy8vLy9DeEFBQUd4aGVXVnlVMmw2WlFB
T0FEa1JGZ0FBQUFBQUFBQjUKRndBQURnQTVFWElBQUFBQUFBQUFjaElBQUE0QU9SRjdBQUFBQUFB
QUFIUVNBQUFPQURrUmhBQUFBQUFBQUFCNkZ3QUFEZ0E1RWIwQQpBQUFBQUFBQVlCSUFBQTRBT1JI
YUFBQUFBQUFBQUdBU0FBQUNBQVlBQUFBQThnQUFBR0FBQUFBQUFBQUFBQUFBQU9zQUFBQVFBZ0FB
CkNRQUFBRlFBQUFBQUFBQUFhd0FBZ0FZQUFBQnNBQUNBTmdBQUFHMEFBSUI2QUFBQWJnQUFnSUVB
QUFCdkFBQ0FqZ0FBQUhFQUFJREQKQUFBQWNnQUFnT1FBQUFCMEFBQ0E1d0FBQUhVQUFJQU1BQUFB
OFFBQUFBY0FtQUFBQVBFQUFBQUxBSndBQUFEeEFBQUFDZ0F0QVFBQQo4UUFBQUFzQU1RRUFBUEVB
QUFBS0FEMEJBQUR4QUFBQUN3QkJBUUFBOFFBQUFBb0FUUUVBQVBFQUFBQUxBRkVCQUFEeEFBQUFD
Z0JkCkFRQUE4UUFBQUFzQVlRRUFBUEVBQUFBS0FHMEJBQUR4QUFBQUN3QnhBUUFBOFFBQUFBb0Fm
UUVBQVBFQUFBQUxBSUVCQUFEeEFBQUEKQ2dDWUFRQUE4UUFBQUFzQW5BRUFBUEVBQUFBS0FJWDJW
M1FPVnY4VkFBQUFBSVBFQkl2NDZ3SXovLzhWQUFBQUFEdjRkUzJMVENRSQppMVFrREZhRDdCQ0x4
SWtJaTB3a0pJbFFCSXRVSkNpSlNBaFRpVkFNL3hVQUFBQUFnOFFZWDhQL0ZRQUFBQUE3K0hVcmkw
d2tDSXRVCkpBeFdnK3dRaThTSkNJdE1KQ1NKVUFTTFZDUW9pVWdJVTRsUURQOFZBQUFBQUlQRUdG
L0RDQUFBQVA4QUFBQUdBQmNBQUFEK0FBQUEKQmdCREFBQUEvUUFBQUFZQVRnQUFBUHdBQUFBR0FI
b0FBQUQ3QUFBQUJnQUVBQUFBOVFBQUFDUUFBQUFBQUFBQUFBQUFBSU1BQUFBQQpBQUFBRUFBQUFB
QUFBQUJiRXdBQUF3QUVBQVFBQUFEeEFBQUE1QUFBQURZQUR4RUFBQUFBQUFBQUFBQUFBQUNEQUFB
QUF3QUFBSUVBCkFBQ0JGd0FBQUFBQUFBQUFBR1J5WVhkSmJXRm5aVTl5VEdGNVpYSUFIQUFTRUFB
QUFBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQUFBQUEKQWdBQUVBQUdFU2tRQUFBVUFHTnZiblJsZUhR
QUR3QUxFUVFBQUFBT0VBQUFjbVZqZEFBVkFBWVJiaEVBQUJjQWFXMWhaMlZQY2t4aAplV1Z5QUE0
QU9SRUdBQUFBQUFBQUFNc1RBQUFPQURrUkZRQUFBQUFBQUFCQUZBQUFEZ0E1RVVFQUFBQUFBQUFB
WkJJQUFBNEFPUkZNCkFBQUFBQUFBQUVBVUFBQU9BRGtSZUFBQUFBQUFBQUIzRWdBQUFnQUdBUElB
QUFCZ0FBQUFBQUFBQUFBQUFBQ0RBQUFBRUFJQUFBa0EKQUFCVUFBQUFBQUFBQUhnQUFJQUFBQUFB
ZVFBQWdCVUFBQUI3QUFDQUh3QUFBSHdBQUlCSEFBQUFmZ0FBZ0VvQUFBQi9BQUNBVEFBQQpBSDBB
QUlCV0FBQUFmZ0FBZ0lFQUFBQi9BQUNBREFBQUFQb0FBQUFIQUZnQUFBRDZBQUFBQ3dCY0FBQUEr
Z0FBQUFvQXpBQUFBUG9BCkFBQUxBTkFBQUFENkFBQUFDZ0RjQUFBQStnQUFBQXNBNEFBQUFQb0FB
QUFLQU93QUFBRDZBQUFBQ3dEd0FBQUErZ0FBQUFvQS9BQUEKQVBvQUFBQUxBQUFCQUFENkFBQUFD
Z0FNQVFBQStnQUFBQXNBRUFFQUFQb0FBQUFLQUNRQkFBRDZBQUFBQ3dBb0FRQUErZ0FBQUFvQQpn
K3dRMlVRa0pOaEVKQlRaUkNRczJjRGU2dG5KMlJ3a2l3d2syVVFrS0lrSTJFUWtHTmpoMlZ3a0JJ
dFVKQVNKVUFUY3dObEVKQnpZCndkbGNKQWlMVENRSWlVZ0kyRVFrSU5sY0pBeUxWQ1FNaVZBTWc4
UVF3d1FBQUFEMUFBQUFKQUFBQUFBQUFBQUFBQUFBV0FBQUFCQUEKQUFBY0FBQUFBQUFBQUZzVEFB
QURBQUFBQkFBQUFQRUFBQUNWQUFBQVBBQVBFUUFBQUFBQUFBQUFBQUFBQUZnQUFBQURBQUFBVkFB
QQpBSHdYQUFBQUFBQUFBQUFBY21WamRFWnZjbE5vWVdSdmQwOXdaWEpoZEdsdmJnQWNBQklRRUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFLQUFBUEFBc1JCQUFBQUE0UUFBQnlaV04wQUJF
QUN4RVVBQUFBQ3hBQUFHOW1abk5sZEFBUEFBc1JIQUFBQUVBQUFBQmkKYkhWeUFBSUFCZ0FBQUFE
eUFBQUFNQUFBQUFBQUFBQUFBQUFBV0FBQUFCQUNBQUFEQUFBQUpBQUFBQUFBQUFDQ0FBQ0FBd0FB
QUlNQQpBSUJVQUFBQWhBQUFnQXdBQUFBRUFRQUFCd0JZQUFBQUJBRUFBQXNBWEFBQUFBUUJBQUFL
QU5nQUFBQUVBUUFBQ3dEY0FBQUFCQUVBCkFBb0FnK3hFVTFWV2k5aFhVLzhWQUFBQUFObEVKRnpZ
UkNSd2crd00yWVFraEFBQUFJdkUyY0JUM3VyWnlkbGNKQ2lMVENRbzJVUWsKY0lrSTJJUWtoQUFB
QU5qaDJWd2tMSXRVSkN5SlVBVGN3TmxFSkhUWXdkbGNKRENMVENRd2lVZ0kyRVFrZU5sY0pEU0xW
Q1EwaVZBTQpqVVFrS0ZEL0ZRQUFBQUNMRUlQRUNJdk1pUkdMVUFTSlVRU0xVQWlMUUF5SlVRaUpR
UXlOVENSRVVmOFZBQUFBQUlzUWc4UUVpOHlKCkVZdFFCSWxSQkl0UUNJdEFESWxSQ0lsQkRJMU1K
RlJUVWY4VkFBQUFBSXRRRElzd2kzZ0VpMmdJaTBBTWlWUWtTSVBFQ0l2TWk5YUoKRVl2WGlWRUVp
OVdKVVFpSlFRei9GUUFBQUFDTFRDUm8zVndrSkl0VUpHeUx4SWtJaTB3a2NJbFFCSXRVSkhTSlNB
aUpVQXovRlFBQQpBQURjYkNRa2kwd2tRSXZFaVREWlhDUWdpWGdFaVdnSVU0bElEUDhWQUFBQUFO
bEVKQ1NEeEF6WlhDUUUyZTdaSENSVC94VUFBQUFBCjJVUWtlSXVVSklRQUFBRFpYQ1FnMlVRa2ZJ
UEVETmhrSkJCU1VZdE1KQnpaWENRZ2kwUWtJTmxFSkh6WkhDUlFVVlAvRlFBQUFBQ0wKVkNSc2kw
d2tjSXQwSkh5RHhBU0x4SWtRaTFRa2NJbElCSXRNSkhTSlVBaUpTQXpvQUFBQUFGUC9GUUFBQUFD
RHhCUmZYbDFiZzhSRQp3d3dBQUFBVkFRQUFCZ0IyQUFBQUZBRUFBQVlBbkFBQUFCTUJBQUFHQU1N
QUFBQVNBUUFBQmdEeEFBQUFFUUVBQUFZQUdBRUFBQkFCCkFBQUdBRGdCQUFBUEFRQUFCZ0JQQVFB
QThnQUFBQVlBaHdFQUFBc0JBQUFHQUxBQkFBRDZBQUFBRkFDM0FRQUFDZ0VBQUFZQUJBQUEKQVBV
QUFBQmtBQUFBQUFBQUFBQUFBQURHQVFBQVJBQUFBQ1FBQUFBQUFBQUFXeE1BQUFnQUNBQUVBQUFB
QkFBQUFNSUJBQUJFQUFBQQpKQUFBQUFBQUFBQ1hGQUFBQkFBTUFBQUFBQUFGQUFBQXdRRUFBRVFB
QUFBa0FBQUFBQUFBQUFBVkFBQURBQkFBQUFBQUFQRUFBQUNoCkFRQUFNQUFQRVFBQUFBQUFBQUFB
QUFBQUFNWUJBQUFJQUFBQXZnRUFBSkVYQUFBQUFBQUFBQUFBWkhKaGQxTm9ZV1J2ZHdBY0FCSVEK
UkFBQUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFBQUFBQUNBQUFRQUFZUktSQUFBQkVBWTI5dWRHVjRk
QUFVQUFzUkJBQUFBQTRRQUFCcApiV0ZuWlZKbFkzUUFGd0FMRVJRQUFBQnVFUUFBYVcxaFoyVlBj
a3hoZVdWeUFCY0FDeEVZQUFBQUN4QUFBSE5vWVdSdmQwOW1abk5sCmRBQVZBQXNSSUFBQUFFQUFB
QUJ6YUdGa2IzZENiSFZ5QUJZQUN4RWtBQUFBdFJNQUFITm9ZV1J2ZDBOdmJHOXlBQk1BQ3hITS8v
Ly8KRGhBQUFHTnNhWEJTWldOMEFBMEFDeEc0Ly8vL1FBQUFBSFI1QUE0QU9SRUtBQUFBQUFBQUFJ
d1FBQUFPQURrUmRBQUFBQUFBQUFCOQpGd0FBRGdBNUVab0FBQUFBQUFBQVBCTUFBQTRBT1JIQkFB
QUFBQUFBQUgwWEFBQU9BRGtSN3dBQUFBQUFBQUJpRWdBQURnQTVFUllCCkFBQUFBQUFBWWhJQUFB
NEFPUkUyQVFBQUFBQUFBSFVTQUFBT0FEa1JUUUVBQUFBQUFBQmdFZ0FBRGdBNUVZVUJBQUFBQUFB
QWZ4Y0EKQUE0QU9SRzFBUUFBQUFBQUFJd1FBQUFDQUFZQUFBQUE4Z0FBQUhBQUFBQUFBQUFBQUFB
QUFNWUJBQUFRQWdBQUN3QUFBR1FBQUFBQQpBQUFBaUFBQWdBa0FBQUNKQUFDQUVBQUFBSXNBQUlB
WUFBQUFqQUFBZ05JQUFBQ05BQUNBSUFFQUFJOEFBSUE4QVFBQWtBQUFnRk1CCkFBQ1JBQUNBaXdF
QUFKTUFBSUMwQVFBQWxBQUFnTDRCQUFDVkFBQ0FEQUFBQUFrQkFBQUhBSmdBQUFBSkFRQUFDd0Nj
QUFBQUNRRUEKQUFvQWVRRUFBQWtCQUFBTEFIMEJBQUFKQVFBQUNnQ0pBUUFBQ1FFQUFBc0FqUUVB
QUFrQkFBQUtBSmtCQUFBSkFRQUFDd0NkQVFBQQpDUUVBQUFvQXFRRUFBQWtCQUFBTEFLMEJBQUFK
QVFBQUNnQzVBUUFBQ1FFQUFBc0F2UUVBQUFrQkFBQUtBTWtCQUFBSkFRQUFDd0ROCkFRQUFDUUVB
QUFvQTJRRUFBQWtCQUFBTEFOMEJBQUFKQVFBQUNnRHBBUUFBQ1FFQUFBc0E3UUVBQUFrQkFBQUtB
UGtCQUFBSkFRQUEKQ3dEOUFRQUFDUUVBQUFvQUNRSUFBQWtCQUFBTEFBMENBQUFKQVFBQUNnQWtB
Z0FBQ1FFQUFBc0FLQUlBQUFrQkFBQUtBQUFBQUFDNApBUUFBQUlRRkFBQUFBSFVjQ1FVQUFBQUFv
UUFBQUFDTENGSC9GUUFBQUFDRHhBU2pBQUFBQUl0VUpBeUxSQ1FJaTB3a0JGS0xGUUFBCkFBQlFV
VkwvRlFBQUFBQ0R4QkREQndBQUFDTUJBQUFHQUE4QUFBQWpBUUFBQmdBVUFBQUFJQUVBQUFZQUhR
QUFBQjhCQUFBR0FDVUEKQUFBZUFRQUFCZ0E0QUFBQUhnRUFBQVlBUVFBQUFCc0JBQUFHQUFRQUFB
RDFBQUFBSkFBQUFBQUFBQUFBQUFBQVNRQUFBQUFBQUFBTQpBQUFBQUFBQUFGc1RBQUFBQUFBQUJB
QUFBUEVBQUFEYkFBQUFQd0FQRVFBQUFBQUFBQUFBQUFBQUFFa0FBQUFBQUFBQVNBQUFBTG9YCkFB
QUFBQUFBQUFBQVkzSmxZWFJsUjJWdVpYSnBZMGR5WVhsSGNtRmthV1Z1ZEFBY0FCSVFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUEKQUFBQUFBQUtBQUFWQUFzUkJBQUFBRmdTQUFCamIyMXdiMjVsYm5S
ekFCUUFDeEVJQUFBQVdCSUFBR3h2WTJGMGFXOXVjd0FRQUFzUgpEQUFBQUhVQUFBQmpiM1Z1ZEFB
WEFBd1JFQkVBQUFBQUFBQUFBR052Ykc5eVUzQmhZMlVBRGdBNUVSc0FBQUFBQUFBQWdoY0FBQTRB
Ck9SRS9BQUFBQUFBQUFJWVhBQUFDQUFZQUFQSUFBQUE0QUFBQUFBQUFBQUFBQUFCSkFBQUFFQUlB
QUFRQUFBQXNBQUFBQUFBQUFKZ0EKQUlBQUFBQUFtUUFBZ0NrQUFBQ2FBQUNBU0FBQUFKMEFBSUFN
QUFBQUdnRUFBQWNBV0FBQUFCb0JBQUFMQUZ3QUFBQWFBUUFBQ2dEZQpBQUFBSGdFQUFBc0E0Z0FB
QUI0QkFBQUtBUE1BQUFBYUFRQUFDd0QzQUFBQUdnRUFBQW9BQXdFQUFCb0JBQUFMQUFjQkFBQWFB
UUFBCkNnQWNBUUFBR2dFQUFBc0FJQUVBQUJvQkFBQUtBSVBzUU5sRUpGaFQyRVFrU0ZYWlJDUm9p
MndrVU5uQVZ0N3FpM1FrV05uSlY0dDgKSkZUWlhDUVFpMHdrRU5sRUpHeUwyTmhFSkZpRDdCQ0x4
SWtJMk9HRDdCRFpYQ1EwaTFRa05JbFFCTnpBMlVRa2ZOakIyVndrT0l0TQpKRGlKU0FqWWhDU0FB
QUFBaTR3a2dBQUFBTmxjSkR5TFZDUThpVkFNaThTSk9JbG9CSWx3Q0lsSURQOFZBQUFBQUlQRUlJ
VEFENFNnCkFRQUFpMVFrRUl0TUpCU0Q3QkNMeElrUWkxUWtLSWxJQkl0TUpDeUpVQWlMVkNSd2lV
Z01nK3dRaThTSk9JbG9CSWx3Q0lsUURJMUUKSkRCUS94VUFBQUFBaXhDRHhCU0x6SWtSaTFBRWlW
RUVpMUFJaTBBTWlWRUlpVUVNalV3a01GTlIveFVBQUFBQWl4Q0R4QWlMeklrUgppMUFFaVZFRWkx
QUlpMEFNaVZFSWlVRU1qVXdrUUZIL0ZRQUFBQUNMRUlQRUJJdk1pUkdMVUFTSlVRU0xVQWlMUUF5
SlVRaUpRUXlOClRDUlFVMUgvRlFBQUFBQ0xFSVBFR0dvQWcrd1FpOHlKRVl0UUJJbFJCSXRRQ0l0
QURJbFJDRk9KUVF6L0ZRQUFBQUJxRVZQL0ZRQUEKQUFDRHhCQ0x4SWs0aTB3a2NJbG9CSWx3Q0l0
MEpIU0pTQXpvQUFBQUFJczFBQUFBQUdvU1UvL1dpNVFrakFBQUFGSlQveFVBQUFBQQppdzBBQUFB
QWl4R0R4QkNMeElrUWkxRUVpVkFFaTFFSWkwa01pVkFJVTRsSURQOFZBQUFBQUdvWFUvL1dpeFVB
QUFBQWl3SlEveFVBCkFBQUEyWVFra0FBQUFJdVVKSWdBQUFDRHhDQlFpMFFrYUZHTFRDUjAyUndr
VVl0TUpHaFNpMVFrY0ZDRDdCQ0x4SWs0aVdnRWlVZ0kKaVZBTWk4UG9BQUFBQUZQL0ZRQUFBQUNE
eENoZlhsMWJnOFJBdzRrQUFBQXlBUUFBQmdEVEFBQUFNUUVBQUFZQStnQUFBQlFCQUFBRwpBQ0FC
QUFBVEFRQUFCZ0JIQVFBQUVnRUFBQVlBYmdFQUFEQUJBQUFHQUhjQkFBQXZBUUFBQmdDVUFRQUEr
Z0FBQUJRQW1nRUFBQzhCCkFBQUdBSzRCQUFBdUFRQUFCZ0MwQVFBQUxRRUFBQVlBMWdFQUFDd0JB
QUFHQU9FQkFBQXJBUUFBQmdEcUFRQUFLZ0VBQUFZQUtnSUEKQUFrQkFBQVVBREVDQUFBcEFRQUFC
Z0FFQUFBQTlRQUFBR1FBQUFBQUFBQUFBQUFBQUVBQ0FBQkFBQUFBSkFBQUFBQUFBQUJiRXdBQQpN
d0FJQUFRQUFBQUlBQUFBT0FJQUFFQUFBQUFrQUFBQUFBQUFBSHNWQUFBckFBd0FBQUFBQUEwQUFB
QXpBZ0FBUUFBQUFDUUFBQUFBCkFBQUE1QlVBQUNZQUVBQUFBQUFBOFFBQUFMUUJBQUExQUE4UkFB
QUFBQUFBQUFBQUFBQUFRQUlBQURNQUFBQTRBZ0FBa1JjQUFBQUEKQUFBQUFBQmtjbUYzU1c1dVpY
SlRhR0ZrYjNjQUhBQVNFRUFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFBQUFBQUFnQUFFQUFHRVNr
UQpBQUFSQUdOdmJuUmxlSFFBRmdBTEVRUUFBQUFPRUFBQVkyOXVkR1Z1ZEZKbFkzUUFGd0FMRVJR
QUFBQnVFUUFBYVcxaFoyVlBja3hoCmVXVnlBQmNBQ3hFWUFBQUFDeEFBQUhOb1lXUnZkMDltWm5O
bGRBQVZBQXNSSUFBQUFFQUFBQUJ6YUdGa2IzZENiSFZ5QUJZQUN4RWsKQUFBQXRSTUFBSE5vWVdS
dmQwTnZiRzl5QUE0QU9SR0hBQUFBQUFBQUFJY1hBQUFPQURrUjBRQUFBQUFBQUFCcUZ3QUFEZ0E1
RWZnQQpBQUFBQUFBQWZSY0FBQTRBT1JFZUFRQUFBQUFBQUR3VEFBQU9BRGtSUlFFQUFBQUFBQUI5
RndBQURnQTVFV3dCQUFBQUFBQUFpUmNBCkFBNEFPUkYxQVFBQUFBQUFBSTBYQUFBT0FEa1JvUUVB
QUFBQUFBQ05Gd0FBRGdBNUVhd0JBQUFBQUFBQWp4Y0FBQTRBT1JIVUFRQUEKQUFBQUFIVVNBQUFP
QURrUjNRRUFBQUFBQUFDTkZ3QUFEZ0E1RWVnQkFBQUFBQUFBa2hjQUFBNEFPUkV2QWdBQUFBQUFB
SXdRQUFBQwpBQVlBOGdBQUFJZ0FBQUFBQUFBQUFBQUFBRUFDQUFBUUFnQUFEZ0FBQUh3QUFBQUFB
QUFBb1FBQWdBTUFBQUNpQUFDQUVRQUFBS1FBCkFJQ1lBQUFBcFFBQWdFc0JBQUNtQUFDQWNnRUFB
S2dBQUlCN0FRQUFxUUFBZ0pnQkFBQ3FBQUNBb3dFQUFLc0FBSUN5QVFBQXJBQUEKZ05vQkFBQ3RB
QUNBM3dFQUFLNEFBSUF1QWdBQXNBQUFnRGdDQUFDeUFBQ0FEQUFBQUNnQkFBQUhBSmdBQUFBb0FR
QUFDd0NjQUFBQQpLQUVBQUFvQVhBRUFBQ2dCQUFBTEFHQUJBQUFvQVFBQUNnQnNBUUFBS0FFQUFB
c0FjQUVBQUNnQkFBQUtBSHdCQUFBb0FRQUFDd0NBCkFRQUFLQUVBQUFvQWpBRUFBQ2dCQUFBTEFK
QUJBQUFvQVFBQUNnQ2NBUUFBS0FFQUFBc0FvQUVBQUNnQkFBQUtBS3dCQUFBb0FRQUEKQ3dDd0FR
QUFLQUVBQUFvQXZBRUFBQ2dCQUFBTEFNQUJBQUFvQVFBQUNnRE1BUUFBS0FFQUFBc0EwQUVBQUNn
QkFBQUtBTndCQUFBbwpBUUFBQ3dEZ0FRQUFLQUVBQUFvQTdBRUFBQ2dCQUFBTEFQQUJBQUFvQVFB
QUNnRDhBUUFBS0FFQUFBc0FBQUlBQUNnQkFBQUtBQXdDCkFBQW9BUUFBQ3dBUUFnQUFLQUVBQUFv
QUhBSUFBQ2dCQUFBTEFDQUNBQUFvQVFBQUNnQTBBZ0FBS0FFQUFBc0FPQUlBQUNnQkFBQUsKQUxn
QkFBQUFnK3dJaEFVQUFBQUFkU2JaQlFBQUFBQUpCUUFBQUFDRDdBalpYQ1FFMmU3WkhDVC9GUUFB
QUFDRHhBaWpBQUFBQU5udQpvUUFBQUFCUTJWd2tCTmtGQUFBQUFJdFVKQVNMUkNRazJWd2tDTm5v
VVl0TUpBelpIQ1JSaTB3a0hGS0xWQ1FrVUlQc0VJdkVpUWlMClRDUThpVkFFaTFRa1FJbElDSWxR
REl0RUpERG9BQUFBQUlQRUxNTUtBQUFBUkFFQUFBWUFFZ0FBQUVFQkFBQUdBQmdBQUFCRUFRQUEK
QmdBcUFBQUFQZ0VBQUFZQU1nQUFBRDBCQUFBR0FEa0FBQUE5QVFBQUJnQkVBQUFBT2dFQUFBWUFo
Z0FBQUFrQkFBQVVBQVFBQUFEMQpBQUFBSkFBQUFBQUFBQUFBQUFBQWpnQUFBQWdBQUFBWUFBQUFB
QUFBQUZzVEFBQUlBQUFBQkFBQUFQRUFBQUMrQUFBQU5RQVBFUUFBCkFBQUFBQUFBQUFBQUFJNEFB
QUFJQUFBQWlnQUFBSUVYQUFBQUFBQUFBQUFBWkhKaGQwOTFkR1Z5VTJoaFpHOTNBQndBRWhBSUFB
QUEKQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQUFCSUFDeEVFQUFBQUtSQUFBR052Ym5SbGVI
UUFEd0FMRVFnQUFBQU9FQUFBY21WagpkQUFRQUFzUkdBQUFBRzRSQUFCcGJXRm5aUUFjQUF3UnRS
TUFBQUFBQUFBQUFHUnliM0JUYUdGa2IzZERiMnh2Y2dBT0FEa1JLQUFBCkFBQUFBQUNURndBQUFn
QUdBQUFBOGdBQUFEZ0FBQUFBQUFBQUFBQUFBSTRBQUFBUUFnQUFCQUFBQUN3QUFBQUFBQUFBdFFB
QWdBQUEKQUFDMkFBQ0FOZ0FBQUxjQUFJQ0tBQUFBdUFBQWdBd0FBQUEzQVFBQUJ3QllBQUFBTndF
QUFBc0FYQUFBQURjQkFBQUtBTXdBQUFBOQpBUUFBQ3dEUUFBQUFQUUVBQUFvQTVnQUFBRGNCQUFB
TEFPb0FBQUEzQVFBQUNnQUFBUUFBTndFQUFBc0FCQUVBQURjQkFBQUtBQUFBCmdML056RXcvZyt3
c004azVEUUFBQUFCVGk5aDFZZGtGQUFBQUFLRUFBQUFBMlZ3a0VJbE1KQVRaQlFBQUFBQ0pUQ1FJ
MlZ3a0ZJbE0KSkF6WkJRQUFBQURaWENRWWl4Q0pWQ1FjaTFBRWlWUWtJSXRRQ0lsVUpDU0xRQXlK
VENRc2pVd2tCRkdKUkNRcy94VUFBQUFBZzhRRQpvd0FBQUFCVC94VUFBQUFBaXhVQUFBQUFVbFAv
RlFBQUFBQ0xWQ1JFVVl0TUpFU0x4SWtJaTB3a1RJbFFCSXRVSkZDSlNBaUpVQXpvCkFBQUFBRlAv
RlFBQUFBQ0R4QlJiZzhRc3d3Y0FBQUJTQVFBQUJnQVNBQUFBUVFFQUFBWUFGd0FBQUU4QkFBQUdB
Q1VBQUFDMEFBQUEKQmdBM0FBQUFUZ0VBQUFZQVpRQUFBRXNCQUFBR0FHMEFBQUJTQVFBQUJnQjBB
QUFBRlFFQUFBWUFlZ0FBQUZJQkFBQUdBSUlBQUFCSwpBUUFBQmdDbEFBQUErZ0FBQUJRQXJBQUFB
QW9CQUFBR0FBUUFBQUQxQUFBQVJBQUFBQUFBQUFBQUFBQUF1QUFBQUN3QUFBQVFBQUFBCkFBQUFB
RnNUQUFBT0FBQUFCQUFBQUF3QUFBQ3NBQUFBTEFBQUFCQUFBQUFBQUFBQVh4WUFBQUlBQkFBQUFB
QUE4UUFBQUFBQkFBQXoKQUE4UkFBQUFBQUFBQUFBQUFBQUF1QUFBQUE0QUFBQ3pBQUFBZ1JjQUFB
QUFBQUFBQUFCa2NtRjNSbTlqZFhOU2FXNW5BQndBRWhBcwpBQUFBQUFBQUFBQUFBQUFFQUFBQUFB
QUFBQUFBQUFJQUFCQUFCaEVwRUFBQUVRQmpiMjUwWlhoMEFBOEFDeEVFQUFBQURoQUFBSEpsClkz
UUFGUUFHRVc0UkFBQVhBR2x0WVdkbFQzSk1ZWGxsY2dBU0FBd1JuQmNBQUFBQUFBQUFBSE4wZVd4
bEFCa0FDeEhRLy8vL21oY0EKQUdadlkzVnpVbWx1WjFOMGVXeGxBQTRBT1JGakFBQUFBQUFBQUtB
WEFBQU9BRGtSY2dBQUFBQUFBQUNNRUFBQURnQTVFWUFBQUFBQQpBQUFBb2hjQUFBNEFPUkdxQUFB
QUFBQUFBSXdRQUFBQ0FBWUE4Z0FBQUhBQUFBQUFBQUFBQUFBQUFMZ0FBQUFRQWdBQUN3QUFBR1FB
CkFBQUFBQUFBdXdBQWdBTUFBQUM5QUFDQUVBQUFBTU1BQUlBV0FBQUF4Z0FBZ0ZZQUFBREhBQUNB
V2dBQUFNa0FBSUJ4QUFBQXpBQUEKZ0hnQUFBRE5BQUNBaGdBQUFNNEFBSUNwQUFBQXp3QUFnTE1B
QUFEUUFBQ0FEQUFBQUVrQkFBQUhBSGdBQUFCSkFRQUFDd0I4QUFBQQpTUUVBQUFvQTdRQUFBRklC
QUFBTEFQRUFBQUJTQVFBQUNnQVlBUUFBU1FFQUFBc0FIQUVBQUVrQkFBQUtBQ2dCQUFCSkFRQUFD
d0FzCkFRQUFTUUVBQUFvQU9BRUFBRWtCQUFBTEFEd0JBQUJKQVFBQUNnQklBUUFBU1FFQUFBc0FU
QUVBQUVrQkFBQUtBR0FCQUFCSkFRQUEKQ3dCa0FRQUFTUUVBQUFvQUFBQUFQNHRFSkFTRDdDUlRW
VlpYVVA4VkFBQUFBSXRFSkZDTGRDUk1pM3drU0l0Y0pFU0xiQ1JBZzhRRQpnK2dBRDRTaUFBQUFn
K2dDZEZ1RDZBRVBoZHdBQUFDRDdCQ0x4SWtvaVZnRWlYZ0lpWEFNL3hVQUFBQUEyVndrRE5udWkw
d2tTSVBFCkNOa2NKRkgvRlFBQUFBRFpCUUFBQUFDTFZDUkUyVndrQ05ub2c4UUUyUndrVXY4VkFB
QUFBSVBFRE9tS0FBQUEyZTZEN0JTTHhObGMKSkJDSktJbFlCSWw0Q0lsd0RQOFZBQUFBQU5sY0pB
eUxSQ1JNZzhRTVVQOFZBQUFBQU5rRkFBQUFBSXRNSkVUWlhDUUlnOFFJVWVzLwpnK3dRaThTSktJ
bFlCSWw0Q0lsd0RQOFZBQUFBQU5sY0pBelo3b3RVSkVpRHhBalpIQ1JTL3hVQUFBQUEyUVVBQUFB
QWkwUWtSTmxjCkpBaUR4QWhRL3hVQUFBQUFnOFFJZyt3UWk4U0pLSWxZQklsNENJbHdEUDhWQUFB
QUFObGNKQ0NMeElrb2lWZ0VpWGdJaVhBTS94VUEKQUFBQTJFd2tZSXZFaVNpSldBVGRYQ1EwaVhn
SWlYQU0veFVBQUFBQTNFUWtOSXZFaVNqY0pRQUFBQUNKV0FTSmVBaUpjQXpaWENSYwoveFVBQUFB
QTJFd2tZSXZFaVNpSldBU0plQWpkWENRMGlYQU0veFVBQUFBQTNFUWtOSXZFaVNqY0JRQUFBQUNK
V0FTSmVBaUpjQXpaClhDUmcveFVBQUFBQWkwd2tTTmxjSkN4cUFGSC9GUUFBQUFDTFZDUlFnOFFJ
aThTSktJbFlCSWw0Q0ZLSmNBei9GUUFBQUFDTFJDUm8KZzhRVWhjQVBoQllCQUFCUS94VUFBQUFB
ZzhRRWlVUWtGUDhWQUFBQUFEbEVKQlFQaFlJQUFBQ0xSQ1JVaTB3a09GQlIveFVBQUFBQQpnK3dJ
aThTSktJbFlCSWw0Q0lsd0RQOFZBQUFBQU5sY0pEVFpSQ1FnaThTSktObGNKRGlKV0FTSmVBaUpj
QXovRlFBQUFBRFpYQ1E4CmkxUWtOTmxFSkZ5TFRDUTQyR1FrSUl2RWlSQ0xWQ1E4MlZ3a1FJbElC
SXRNSkVDSlVBaUxWQ1JJVW9sSURQOFZBQUFBQUlQRUZPdDIKL3hVQUFBQUFPVVFrRkhWcWcrd1Fp
OFNKS0lsWUJJbDRDSWx3RFA4VkFBQUFBTmxjSkNUWlJDUmNpOFNKS05sY0pDaUpXQVNKZUFpSgpj
QXovRlFBQUFBRFpYQ1EwaTBRa0tObEVKQ0NMVENRazJWd2tPSXRVSkRocUFGQ0xSQ1E4VVl0TUpI
QlNpMVFrV0ZCUlV2OFZBQUFBCkFJUEVMSXRFSkZpRndIUjhVSXRFSkR4US94VUFBQUFBZyt3SWk4
U0pLSWxZQklsNENJbHdEUDhWQUFBQUFObGNKRFRaUkNSY2k4U0oKS05sY0pEaUpXQVNKZUFpSmNB
ei9GUUFBQUFEWlhDUTgyVVFrWUl0TUpEVFlaQ1JjaTFRa09JdkVpUWlMVENRODJWd2tRSWxRQkl0
VQpKRUNKU0FpSlVBeUxSQ1JJVVA4VkFBQUFBSVBFRkl0RUpGeUZ3QStFRmdFQUFGRC9GUUFBQUFD
RHhBU0pSQ1JVL3hVQUFBQUFPVVFrClZBK0ZnZ0FBQUl0TUpGeUxWQ1E0VVZML0ZRQUFBQUNEN0Fp
THhJa29pVmdFaVhnSWlYQU0veFVBQUFBQTJWd2tOTmxFSkdDTHhJa28KMlZ3a09JbFlCSWw0Q0ls
d0RQOFZBQUFBQU5sY0pEelpSQ1FzaTB3a05OaGtKR0NMVkNRNGk4U0pDSXRNSkR6WlhDUkFpVkFF
aTFRawpRSWxJQ0lsUURJdEVKRWhRL3hVQUFBQUFnOFFVNjNiL0ZRQUFBQUE1UkNSVWRXcUQ3QkNM
eElrb2lWZ0VpWGdJaVhBTS94VUFBQUFBCjJWd2tOTmxFSkN5THhJa28yVndrT0lsWUJJbDRDSWx3
RFA4VkFBQUFBTmxjSkN5TFRDUTQyVVFrWUl0VUpEVFpYQ1F3aTBRa01Hb0EKVVl0TUpEUlNpMVFr
ZUZDTFJDUllVVkpRL3hVQUFBQUFnOFFzaTB3a09GSC9GUUFBQUFDRHhBUmZYbDFiZzhRa3d3NEFB
QUFWQVFBQQpCZ0JTQUFBQWFRRUFBQVlBYVFBQUFQSUFBQUFHQUc4QUFBQTZBUUFBQmdDR0FBQUE4
d0FBQUFZQXFnQUFBR2dCQUFBR0FMd0FBQUR5CkFBQUFCZ0RDQUFBQVp3RUFBQVlBNWdBQUFHa0JB
QUFHQVAwQUFBRHlBQUFBQmdBREFRQUFaQUVBQUFZQUZRRUFBR0VCQUFBR0FDNEIKQUFBUUFRQUFC
Z0JGQVFBQWFRRUFBQVlBWUFFQUFCQUJBQUFHQUc0QkFBQmdBUUFBQmdDQkFRQUFhUUVBQUFZQW5B
RUFBQkFCQUFBRwpBS29CQUFCZ0FRQUFCZ0M5QVFBQUVRRUFBQVlBemdFQUFGMEJBQUFHQU9rQkFB
QVBBUUFBQmdEL0FRQUEvd0FBQUFZQURBSUFBRndCCkFBQUdBQ1lDQUFBdUFRQUFCZ0E4QWdBQVd3
RUFBQVlBV3dJQUFHZ0JBQUFHQUpNQ0FBQXNBUUFBQmdDZUFnQUFXZ0VBQUFZQXVnSUEKQUZrQkFB
QUdBTmtDQUFCWkFRQUFCZ0FMQXdBQVdBRUFBQVlBSWdNQUFDNEJBQUFHQURnREFBQmJBUUFBQmdC
WEF3QUFhQUVBQUFZQQpqd01BQUN3QkFBQUdBS1VEQUFEL0FBQUFCZ0N5QXdBQVhBRUFBQVlBekFN
QUFDNEJBQUFHQU9JREFBQmJBUUFBQmdBQkJBQUFhQUVBCkFBWUFPUVFBQUN3QkFBQUdBRVFFQUFC
YUFRQUFCZ0JnQkFBQVdRRUFBQVlBZndRQUFGa0JBQUFHQUxFRUFBQllBUUFBQmdDL0JBQUEKQ2dF
QUFBWUFCQUFBQVBVQUFBQmtBQUFBQUFBQUFBQUFBQURPQkFBQUpBQUFBQ2dBQUFBQUFBQUFXeE1B
QUFzQUNBQUVBQUFBQ0FBQQpBTVlFQUFBa0FBQUFLQUFBQUFBQUFBRElGZ0FBQXdBTUFBQUFBQUFK
QUFBQXhRUUFBQ1FBQUFBb0FBQUFBQUFBQURFWEFBQUNBQkFBCkFBQUFBUEVBQUFBSUJBQUFTUUFQ
RVFBQUFBQUFBQUFBQUFBQUFNNEVBQUFMQUFBQXhnUUFBTHdYQUFBQUFBQUFBQUFBWkhKaGR6TlEK
WVhKMFFtRnVibVZ5U1c1U1pXTjBVbVZzWVhScGRtVlViMFZrWjJVQUhBQVNFQ1FBQUFBQUFBQUFB
QUFBQUJBQUFBQUFBQUFBQUFBQQpBZ0FBRWdBTEVRUUFBQUFwRUFBQVkyOXVkR1Y0ZEFBUEFBc1JD
QUFBQUE0UUFBQnlaV04wQUE4QUN4RVlBQUFBcHhjQUFHVmtaMlVBCkV3QUxFUndBQUFCQUFBQUFa
bkpoWTNScGIyNEFFUUFMRVNBQUFBQnVFUUFBWW05MGRHOXRBQkVBQ3hFa0FBQUF0Uk1BQUcxcFpH
UnMKWlFBT0FBc1JLQUFBQUc0UkFBQjBiM0FBRkFBTEVSd0FBQUJBQUFBQWRYQndaWEpOYVc1WkFC
UUFDeEVZQUFBQVFBQUFBR3h2ZDJWeQpUV0Y0V1FBVUFBc1I1UC8vLzBBQUFBQjFjSEJsY2sxaGVG
a0FGQUFMRWRqLy8vOUFBQUFBYkc5M1pYSk5hVzVaQUE4QUN4SGMvLy8vCklnQUFBSFI1Y0dVQUR3
QUxFU0FBQUFBaUFBQUFkSGx3WlFBT0FEa1JEQUFBQUFBQUFBQ01FQUFBRGdBNUVWQUFBQUFBQUFB
QVloSUEKQUE0QU9SRm5BQUFBQUFBQUFHQVNBQUFPQURrUmhBQUFBQUFBQUFCZ0VnQUFEZ0E1RWFn
QUFBQUFBQUFBWWhJQUFBNEFPUkc2QUFBQQpBQUFBQUdBU0FBQU9BRGtSNUFBQUFBQUFBQUJpRWdB
QURnQTVFZnNBQUFBQUFBQUFZQklBQUE0QU9SRVRBUUFBQUFBQUFJa1RBQUFPCkFEa1JMQUVBQUFB
QUFBQmlFZ0FBRGdBNUVVTUJBQUFBQUFBQVloSUFBQTRBT1JGZUFRQUFBQUFBQUdJU0FBQU9BRGtS
ZndFQUFBQUEKQUFCaUVnQUFEZ0E1RVpvQkFBQUFBQUFBWWhJQUFBNEFPUkc3QVFBQUFBQUFBR0lT
QUFBT0FEa1J6QUVBQUFBQUFBQ0FFd0FBRGdBNQpFZWNCQUFBQUFBQUFkUklBQUE0QU9SSDlBUUFB
QUFBQUFNc1RBQUFPQURrUkNnSUFBQUFBQUFCQUZBQUFEZ0E1RVNRQ0FBQUFBQUFBCmp4Y0FBQTRB
T1JFNkFnQUFBQUFBQUdJU0FBQU9BRGtSV1FJQUFBQUFBQUJpRWdBQURnQTVFWkVDQUFBQUFBQUFk
UklBQUE0QU9SR2MKQWdBQUFBQUFBRUFVQUFBT0FEa1J1QUlBQUFBQUFBQmlFZ0FBRGdBNUVkY0NB
QUFBQUFBQVloSUFBQTRBT1JFSkF3QUFBQUFBQUtRWApBQUFPQURrUklBTUFBQUFBQUFDUEZ3QUFE
Z0E1RVRZREFBQUFBQUFBWWhJQUFBNEFPUkZWQXdBQUFBQUFBR0lTQUFBT0FEa1JqUU1BCkFBQUFB
QUIxRWdBQURnQTVFYU1EQUFBQUFBQUF5eE1BQUE0QU9SR3dBd0FBQUFBQUFFQVVBQUFPQURrUnln
TUFBQUFBQUFDUEZ3QUEKRGdBNUVlQURBQUFBQUFBQVloSUFBQTRBT1JIL0F3QUFBQUFBQUdJU0FB
QU9BRGtSTndRQUFBQUFBQUIxRWdBQURnQTVFVUlFQUFBQQpBQUFBUUJRQUFBNEFPUkZlQkFBQUFB
QUFBR0lTQUFBT0FEa1JmUVFBQUFBQUFBQmlFZ0FBRGdBNUVhOEVBQUFBQUFBQXBCY0FBQTRBCk9S
RzlCQUFBQUFBQUFJd1FBQUFDQUFZQThnQUFBRGdCQUFBQUFBQUFBQUFBQU00RUFBQVFBZ0FBSkFB
QUFDd0JBQUFBQUFBQTFBQUEKZ0FBQUFBRFZBQUNBRWdBQUFOY0FBSUJBQUFBQTJnQUFnRzBBQUFE
YkFBQ0FqUUFBQU53QUFJQ1NBQUFBNUFBQWdNQUFBQURsQUFDQQowZ0FBQU9ZQUFJRFVBQUFBM3dB
QWdBRUJBQURnQUFDQUhBRUFBTzBBQUlBMkFRQUE3Z0FBZ0dnQkFBRHZBQUNBcEFFQUFQQUFBSURC
CkFRQUE4Z0FBZ05JQkFBRHpBQUNBN1FFQUFQVUFBSUQ4QVFBQTlnQUFnQW9DQUFENEFBQ0FHZ0lB
QVBrQUFJQXFBZ0FBK2dBQWdKd0MKQUFEOEFBQ0FxQUlBQVAwQUFJQVNBd0FBL3dBQWdCb0RBQUFB
QVFDQUpnTUFBQUVCQUlDV0F3QUFBd0VBZ0tJREFBQUVBUUNBc0FNQQpBQVlCQUlEQUF3QUFCd0VB
Z05BREFBQUlBUUNBUWdRQUFBa0JBSUJPQkFBQUNnRUFnTGdFQUFBTkFRQ0F4Z1FBQUE0QkFJQU1B
QUFBClZ3RUFBQWNBbUFBQUFGY0JBQUFMQUp3QUFBQlhBUUFBQ2dEZ0FRQUFWd0VBQUFzQTVBRUFB
RmNCQUFBS0FQQUJBQUJYQVFBQUN3RDAKQVFBQVZ3RUFBQW9BQUFJQUFGY0JBQUFMQUFRQ0FBQlhB
UUFBQ2dBUUFnQUFWd0VBQUFzQUZBSUFBRmNCQUFBS0FDQUNBQUJYQVFBQQpDd0FrQWdBQVZ3RUFB
QW9BTUFJQUFGY0JBQUFMQURRQ0FBQlhBUUFBQ2dCQUFnQUFWd0VBQUFzQVJBSUFBRmNCQUFBS0FG
QUNBQUJYCkFRQUFDd0JVQWdBQVZ3RUFBQW9BWUFJQUFGY0JBQUFMQUdRQ0FBQlhBUUFBQ2dCd0Fn
QUFWd0VBQUFzQWRBSUFBRmNCQUFBS0FJQUMKQUFCWEFRQUFDd0NFQWdBQVZ3RUFBQW9Ba0FJQUFG
Y0JBQUFMQUpRQ0FBQlhBUUFBQ2dDZ0FnQUFWd0VBQUFzQXBBSUFBRmNCQUFBSwpBTEFDQUFCWEFR
QUFDd0MwQWdBQVZ3RUFBQW9Bd0FJQUFGY0JBQUFMQU1RQ0FBQlhBUUFBQ2dEUUFnQUFWd0VBQUFz
QTFBSUFBRmNCCkFBQUtBT0FDQUFCWEFRQUFDd0RrQWdBQVZ3RUFBQW9BOEFJQUFGY0JBQUFMQVBR
Q0FBQlhBUUFBQ2dBQUF3QUFWd0VBQUFzQUJBTUEKQUZjQkFBQUtBQkFEQUFCWEFRQUFDd0FVQXdB
QVZ3RUFBQW9BSUFNQUFGY0JBQUFMQUNRREFBQlhBUUFBQ2dBd0F3QUFWd0VBQUFzQQpOQU1BQUZj
QkFBQUtBRUFEQUFCWEFRQUFDd0JFQXdBQVZ3RUFBQW9BVUFNQUFGY0JBQUFMQUZRREFBQlhBUUFB
Q2dCZ0F3QUFWd0VBCkFBc0FaQU1BQUZjQkFBQUtBSEFEQUFCWEFRQUFDd0IwQXdBQVZ3RUFBQW9B
Z0FNQUFGY0JBQUFMQUlRREFBQlhBUUFBQ2dDUUF3QUEKVndFQUFBc0FsQU1BQUZjQkFBQUtBS0FE
QUFCWEFRQUFDd0NrQXdBQVZ3RUFBQW9Bc0FNQUFGY0JBQUFMQUxRREFBQlhBUUFBQ2dEQQpBd0FB
VndFQUFBc0F4QU1BQUZjQkFBQUtBTkFEQUFCWEFRQUFDd0RVQXdBQVZ3RUFBQW9BNEFNQUFGY0JB
QUFMQU9RREFBQlhBUUFBCkNnRHdBd0FBVndFQUFBc0E5QU1BQUZjQkFBQUtBQUFFQUFCWEFRQUFD
d0FFQkFBQVZ3RUFBQW9BRUFRQUFGY0JBQUFMQUJRRUFBQlgKQVFBQUNnQWdCQUFBVndFQUFBc0FK
QVFBQUZjQkFBQUtBREFFQUFCWEFRQUFDd0EwQkFBQVZ3RUFBQW9BUUFRQUFGY0JBQUFMQUVRRQpB
QUJYQVFBQUNnQlFCQUFBVndFQUFBc0FWQVFBQUZjQkFBQUtBR0FFQUFCWEFRQUFDd0JrQkFBQVZ3
RUFBQW9BY0FRQUFGY0JBQUFMCkFIUUVBQUJYQVFBQUNnQ0lCQUFBVndFQUFBc0FqQVFBQUZjQkFB
QUtBQUFBQUFBQUFPQS8ydy9KdjlzUHlUK0Q3QXhXVi84VkFBQUEKQU5sRUpCelp3SVBzQ05sRUpE
U0w4Tm5BM3NMWnlkbGNKQmpaUkNRczJNTFk0ZGxjSkJUWlJDUW8yY0RZd3RsY0pCRFlSQ1F3M3VI
WgpYQ1FrMlVRa0VObGNKQVRaSENScUFGYi9GUUFBQUFEWkJRQUFBQUNMUFFBQUFBQ0R4QkJxQVlQ
c0ZObGNKQkRaQlFBQUFBRFpYQ1FNCjJVUWtSTmxjSkFqWlJDUTAyVndrQk5sRUpDalpIQ1JxQUZi
LzE5bnVnOFFnYWdHRDdCVFpYQ1FRMlFVQUFBQUEyVndrRE5sRUpFVFoKWENRSTJVUWtOTmxjSkFU
WlJDUWsyUndrYWdCVy85ZlpCUUFBQUFDRHhDQnFBWVBzRk5sY0pCRFo3dGxjSkF6WlJDUkUyVndr
Q05sRQpKQ0RaWENRRTJVUWtKTmtjSkdvQVZ2L1hnOFFnYWdHRDdCVFpCUUFBQUFEWlhDUVEyUVVB
QUFBQTJWd2tETmxFSkVUWlhDUUkyVVFrCklObGNKQVRaUkNRbzJSd2thZ0JXLzlkVy94VUFBQUFB
aTBRa1BGWlEveFVBQUFBQVZ2OFZBQUFBQUlQRU1GOWVnOFFNd3djQUFBQjYKQVFBQUJnQldBQUFB
ZVFFQUFBWUFYQUFBQUdjQkFBQUdBR0lBQUFCNEFRQUFCZ0IwQUFBQWR3RUFBQVlBcUFBQUFHY0JB
QUFHQU00QQpBQUIwQVFBQUJnQUtBUUFBZHdFQUFBWUFGQUVBQUhRQkFBQUdBRHNCQUFCeEFRQUFC
Z0JIQVFBQWNBRUFBQVlBVGdFQUFHOEJBQUFHCkFBUUFBQUQxQUFBQVpBQUFBQUFBQUFBQUFBQUFX
d0VBQUF3QUFBQVlBQUFBQUFBQUFGc1RBQUFGQUFBQUJBQUFBQVFBQUFCVEFRQUEKREFBQUFCZ0FB
QUFBQUFBQVd4TUFBQUVBQkFBQUFBQUFCUUFBQUZFQkFBQU1BQUFBR0FBQUFBQUFBQUJiRXdBQUFB
QUlBQUFBQUFEeApBQUFBWlFFQUFEMEFEeEVBQUFBQUFBQUFBQUFBQUFCYkFRQUFCUUFBQUZjQkFB
REZGd0FBQUFBQUFBQUFBR0ZrWkZKdmRXNWtaV1JTClpXTjBWRzlEYjI1MFpYaDBBQndBRWhBTUFB
QUFBQUFBQUFBQUFBQUlBQUFBQUFBQUFBQUFBQUlBQUJJQUN4RUVBQUFBS1JBQUFHTnYKYm5SbGVI
UUFEd0FMRVFnQUFBQU9FQUFBY21WamRBQVJBQXNSR0FBQUFFQUFBQUJ5WVdScGRYTUFEUUFMRWZq
Ly8vOUFBQUFBZURFQQpEUUFMRWZELy8vOUFBQUFBZVRFQURRQUxFZlQvLy85QUFBQUFlRElBRFFB
TEVRZ0FBQUJBQUFBQWVUSUFEZ0E1RVFVQUFBQUFBQUFBCnFoY0FBQTRBT1JGVUFBQUFBQUFBQUt3
WEFBQU9BRGtSbGdBQUFBQUFBQUN1RndBQURnQTVFY29BQUFBQUFBQUFyaGNBQUE0QU9SSCsKQUFB
QUFBQUFBSzRYQUFBT0FEa1JOZ0VBQUFBQUFBQ3VGd0FBRGdBNUVUa0JBQUFBQUFBQXNCY0FBQTRB
T1JGRkFRQUFBQUFBQUxRWApBQUFPQURrUlRBRUFBQUFBQUFDMkZ3QUFBZ0FHQUFBQUFQSUFBQUI0
QUFBQUFBQUFBQUFBQUFCYkFRQUFFQUlBQUF3QUFBQnNBQUFBCkFBQUFBQkVCQUlBRkFBQUFFZ0VB
Z0FzQUFBQVZBUUNBRVFBQUFCb0JBSUJhQUFBQUd3RUFnSmdBQUFBY0FRQ0F6QUFBQUIwQkFJQUQK
QVFBQUhnRUFnRGdCQUFBZkFRQ0FQd0VBQUNFQkFJQkxBUUFBSWdFQWdGY0JBQUFqQVFDQURBQUFB
RzRCQUFBSEFKZ0FBQUJ1QVFBQQpDd0NjQUFBQWJnRUFBQW9BVFFFQUFHNEJBQUFMQUZFQkFBQnVB
UUFBQ2dCZEFRQUFiZ0VBQUFzQVlRRUFBRzRCQUFBS0FHMEJBQUJ1CkFRQUFDd0J4QVFBQWJnRUFB
QW9BZlFFQUFHNEJBQUFMQUlFQkFBQnVBUUFBQ2dDTkFRQUFiZ0VBQUFzQWtRRUFBRzRCQUFBS0FK
MEIKQUFCdUFRQUFDd0NoQVFBQWJnRUFBQW9BclFFQUFHNEJBQUFMQUxFQkFBQnVBUUFBQ2dDOUFR
QUFiZ0VBQUFzQXdRRUFBRzRCQUFBSwpBTTBCQUFCdUFRQUFDd0RSQVFBQWJnRUFBQW9BNkFFQUFH
NEJBQUFMQU93QkFBQnVBUUFBQ2dEa3k1WkEydzlKUUlQc0RJdE1KQnhUCmkxd2tHRldMYkNRZ1Y0
dDhKQnlEN0JDTHhJazRpVmdFaVdnSWlVZ00veFVBQUFBQTJIUWtQSXRVSkRpTHhJazRpVmdFaVdn
SWlWQU0KMlZ3a0hQOFZBQUFBQU5oMEpFQ0xUQ1E0ZzhRUWcrd1EyVndrSU5sRUpCelpSQ1FnMk5I
ZjROM1o5c1JCaThTSk9JbFlCSWxvQ0lsSQpEQStGZ2dBQUFOM1kveFVBQUFBQWkwd2tPTmxjSkNE
WlJDUkFpMVFrSU5oTUpCeUpWZ2paWENRa2kwUWtKSWxHREl2RWlUaUpXQVNKCmFBaUpTQXovRlFB
QUFBRFpYQ1E4aTFRa09JdkVpVGlKV0FTSmFBaUpVQXovRlFBQUFBRFlaZ3lMVENRNGk4VGNEUUFB
QUFDSk9JbFkKQklsb0NOMWNKQ0NKU0F6L0ZRQUFBQURjUkNRZzYzcllUQ1E4MlZ3a1BQOFZBQUFB
QUl0VUpEelpYQ1JBaTBRa1FJdE1KRGlKUmd5TAp4SWs0aVZnRWlXZ0lpVllJaVVnTS94VUFBQUFB
MkdZSWkxUWtPSXZFM0EwQUFBQUFpVGlKV0FTSmFBamRYQ1E4aVZBTS94VUFBQUFBCjNFUWtQSXRN
SkRpTHhJazQyVndrUElsWUJJbG9DSWxJRFA4VkFBQUFBSXRVSkR6WlhDUkFpMFFrUUlQRUVGOWRp
VVlFaThhSkZsdUQKeEF6REtBQUFBR2dCQUFBR0FFY0FBQUJwQVFBQUJnQ0ZBQUFBYUFFQUFBWUF1
Z0FBQUZzQkFBQUdBTlVBQUFCcEFRQUFCZ0RrQUFBQQpZQUVBQUFZQStRQUFBQkFCQUFBR0FBMEJB
QUJwQVFBQUJnQTJBUUFBYUFFQUFBWUFSUUVBQUdBQkFBQUdBRm9CQUFCYkFRQUFCZ0I1CkFRQUFF
QUVBQUFZQUJBQUFBUFVBQUFCa0FBQUFBQUFBQUFBQUFBQ2FBUUFBREFBQUFCZ0FBQUFBQUFBQVd4
TUFBQklBQkFBRUFBQUEKQ0FBQUFKSUJBQUFNQUFBQUdBQUFBQUFBQUFDc0Z3QUFDZ0FJQUFBQUFB
QU5BQUFBalFFQUFBd0FBQUFZQUFBQUFBQUFBQlVZQUFBRgpBQXdBQUFBQUFQRUFBQUJkQVFBQVNB
QVBFUUFBQUFBQUFBQUFBQUFBQUpvQkFBQVNBQUFBakFFQUFMNFhBQUFBQUFBQUFBQUFZMjl1CmMz
UnlZV2x1VW1WamRGQnlaWE5sY25acGJtZEJjM0JsWTNSU1lYUnBid0FjQUJJUURBQUFBQUFBQUFB
QUFBQUFEQUFBQUFBQUFBQUEKQUFBQ0FBQVJBQXNSQkFBQUFBNFFBQUJpYjNWdVpITUFGZ0FMRVJR
QUFBQUxFQUFBWVhOd1pXTjBVbUYwYVc4QUVRQUxFZkQvLy85QQpBQUFBZUZOallXeGxBQkVBQ3hI
MC8vLy9RQUFBQUhsVFkyRnNaUUFPQURrUkpnQUFBQUFBQUFCaUVnQUFEZ0E1RVVVQUFBQUFBQUFB
ClloSUFBQTRBT1JHREFBQUFBQUFBQUdJU0FBQU9BRGtSdUFBQUFBQUFBQUJpRWdBQURnQTVFZE1B
QUFBQUFBQUFZaElBQUE0QU9SSDMKQUFBQUFBQUFBR0lTQUFBT0FEa1JDd0VBQUFBQUFBQmlFZ0FB
RGdBNUVUUUJBQUFBQUFBQVloSUFBQTRBT1JGWUFRQUFBQUFBQUdJUwpBQUFPQURrUmR3RUFBQUFB
QUFCaUVnQUFBZ0FHQUFBQUFQSUFBQUJnQUFBQUFBQUFBQUFBQUFDYUFRQUFFQUlBQUFrQUFBQlVB
QUFBCkFBQUFBQ1lCQUlBREFBQUFKd0VBZ0RBQUFBQW9BUUNBVHdBQUFDd0JBSUNKQUFBQUxRRUFn
QUVCQUFBdUFRQ0FBd0VBQUM4QkFJQWQKQVFBQU1BRUFnSXdCQUFBMEFRQ0FEQUFBQUg4QkFBQUhB
SmdBQUFCL0FRQUFDd0NjQUFBQWZ3RUFBQW9BTlFFQUFIOEJBQUFMQURrQgpBQUIvQVFBQUNnQkZB
UUFBZndFQUFBc0FTUUVBQUg4QkFBQUtBRlVCQUFCL0FRQUFDd0JaQVFBQWZ3RUFBQW9BWlFFQUFI
OEJBQUFMCkFHa0JBQUIvQVFBQUNnQjFBUUFBZndFQUFBc0FlUUVBQUg4QkFBQUtBSVVCQUFCL0FR
QUFDd0NKQVFBQWZ3RUFBQW9BbFFFQUFIOEIKQUFBTEFKa0JBQUIvQVFBQUNnQ2xBUUFBZndFQUFB
c0FxUUVBQUg4QkFBQUtBTFVCQUFCL0FRQUFDd0M1QVFBQWZ3RUFBQW9BeFFFQQpBSDhCQUFBTEFN
a0JBQUIvQVFBQUNnRGdBUUFBZndFQUFBc0E1QUVBQUg4QkFBQUtBTmxFSkFUWVpDUU0yVVFrQ05o
a0pCRFpSQ1FVCjJjSGV5dG5DM3N2WnlkN0MzTWplMmQvZzlzUUJkUWE0QVFBQUFNTXp3TU1FQUFB
QTlRQUFBQ1FBQUFBQUFBQUFBQUFBQURRQUFBQUEKQUFBQUZBQUFBQUFBQUFCYkV3QUFBQUFBQUFR
QUFBRHhBQUFBbVFBQUFFSUFEeEVBQUFBQUFBQUFBQUFBQUFBMEFBQUFBQUFBQURNQQpBQUM0RndB
QUFBQUFBQUFBQUhCdmFXNTBTWE5YYVhSb2FXNUVhWE4wWVc1alpVOW1VRzlwYm5RQUhBQVNFQUFB
QUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFBQUFDZ0FBRFFBTEVRUUFBQUFJRUFBQWNERUFEUUFM
RVF3QUFBQUlFQUFBY0RJQUV3QUxFUlFBQUFCQUFBQUEKWkdsemRHRnVZMlVBQWdBR0FBQUFBUElB
QUFCUUFBQUFBQUFBQUFBQUFBQTBBQUFBRUFJQUFBY0FBQUJFQUFBQUFBQUFBRGNCQUlBQQpBQUFB
T0FFQWdBZ0FBQUE1QVFDQUVBQUFBRHNCQUlBd0FBQUFQQUVBZ0RFQUFBQTdBUUNBTXdBQUFEd0JB
SUFNQUFBQWhBRUFBQWNBCldBQUFBSVFCQUFBTEFGd0FBQUNFQVFBQUNnRGNBQUFBaEFFQUFBc0E0
QUFBQUlRQkFBQUtBSVBzQ05sRUpCRFp3TmxFSkJ6WndON0MKMmNuWlhDUWMyVVFrR05qQzJjSFk2
ZGtjSk5sRUpBelpSQ1FnMk5IZjRObEVKQ1QyeEFGMVF0bEVKQlRZdzlsY0pBVFpSQ1FFMk5yZgo0
UGJFQVhVcjJVUWtITmpaMytEMnhFRjZIdGtFSk5qWjMrRDJ4QUYxRXQzYXNBSGQzTjNaM2RuZDJk
M1lnOFFJdzluQzJNWFpYQ1FFCjJVUWtGTjdEMmNUZTY5bksyVndrRE5sRUpBVFkwZC9nOXNSQmVq
blpSQ1FNMk5yZjRQYkVBWFVzMmMzWTJ0L2c5c1JCZWlQWnl0bGMKSkFUWlJDUUUyTm5mNFBiRUFY
VVMzZHZkMmQzWXNBSGQySVBFQ01QZDNkM2EyY0hlN05uRDJVUWtITmppMmNUY3lObkIzc3Jad3Q3
TAoyY25ld3RqUjMrRGQyZmJFQVhVUTNkaXdBZDNhM2RqZDJkM1lnOFFJdzlrRUpON2kyY0hjeU5u
RjNzN2V4ZGpVMytEZDNQYkVBWFNkCjJVUWtETm5BM3VQWndkN0syY0xleTluSjNzTFp5ZGpiMytE
ZDJ2YkVRWHVBaTBRa0pObkoyVndrREZIWlJDUWdpMHdrSk5sY0pCU0wKVkNRVTJSd2tVSXRFSkJS
UlVsRG9BQUFBQUlQRUZJVEFENVhBZzhRSXczWUJBQUNFQVFBQUZBQUVBQUFBOVFBQUFDUUFBQUFB
QUFBQQpBQUFBQUlZQkFBQUlBQUFBSEFBQUFBQUFBQUJiRXdBQUF3QUFBQVFBQUFEeEFBQUEwZ0FB
QUR3QUR4RUFBQUFBQUFBQUFBQUFBQUNHCkFRQUFBd0FBQUlJQkFBRExGd0FBQUFBQUFBQUFBSEp2
ZFc1a1VtVmpkRU52Ym5SaGFXNXpVRzlwYm5RQUhBQVNFQWdBQUFBQUFBQUEKQUFBQUFBQUFBQUFB
QUFBQUFBQUFBZ0FBRHdBTEVRUUFBQUFPRUFBQWNtVmpkQUFSQUFzUkZBQUFBRUFBQUFCeVlXUnBk
WE1BRUFBTApFUmdBQUFBSUVBQUFjRzlwYm5RQURRQUxFUVFBQUFCQUFBQUFlRE1BRFFBTEVmVC8v
LzlBQUFBQWVUTUFEUUFMRVJRQUFBQkFBQUFBCmVUSUFEUUFMRWZqLy8vOUFBQUFBZURJQUFnQUdB
QUFBOGdBQUFNQUFBQUFBQUFBQUFBQUFBSVlCQUFBUUFnQUFGUUFBQUxRQUFBQUEKQUFBQVB3RUFn
QU1BQUFCQ0FRQ0FGd0FBQUVNQkFJQWtBQUFBUlFFQWdHc0FBQUJHQVFDQWR3QUFBRmtCQUlCN0FB
QUFTQUVBZ0lNQQpBQUJKQVFDQWt3QUFBRTBCQUlEUkFBQUFUZ0VBZ05VQUFBQlpBUUNBMlFBQUFF
MEJBSURkQUFBQVR3RUFnQVlCQUFCUUFRQ0FFQUVBCkFGa0JBSUFVQVFBQVVRRUFnQ3dCQUFCU0FR
Q0FMZ0VBQUZNQkFJQk5BUUFBVkFFQWdFOEJBQUJWQVFDQWdnRUFBRmtCQUlBTUFBQUEKaVFFQUFB
Y0FXQUFBQUlrQkFBQUxBRndBQUFDSkFRQUFDZ0FVQVFBQWlRRUFBQXNBR0FFQUFJa0JBQUFLQU5u
b1ZvczFBQUFBQUxnQgpBQUFBaEFVQUFBQUFWNHY1ZFJ3SkJRQUFBQUNEN0FqWlZDUUUyUndrLzli
WjZJUEVDS01BQUFBQXVBSUFBQUNFQlFBQUFBQjFJdGtGCkFBQUFBQWtGQUFBQUFJUHNDTmxjSkFU
WkhDVC8xb1BFQ0tNQUFBQUE2d0xkMklOL0RBQ2hBQUFBQUY5ZWRBV2hBQUFBQU1NRkFBQUEKUGdF
QUFBWUFFQUFBQUpjQkFBQUdBQnNBQUFDWEFRQUFCZ0F4QUFBQWxBRUFBQVlBUEFBQUFKY0JBQUFH
QUVRQUFBQk9BUUFBQmdCSwpBQUFBbHdFQUFBWUFYZ0FBQUpFQkFBQUdBR3NBQUFDVUFRQUFCZ0Iw
QUFBQWtRRUFBQVlBQkFBQUFQVUFBQUJrQUFBQUFBQUFBQUFBCkFBQjVBQUFBQUFBQUFBQUFBQUFB
QUFBQVd4TUFBQmNBQUFBRUFBQUFBd0FBQUc0QUFBQUFBQUFBQUFBQUFBQUFBQUJiRXdBQUZBQUUK
QUFBQUFBQVZBQUFBV3dBQUFBQUFBQUFBQUFBQUFBQUFBRnNUQUFBQ0FBZ0FBQUFBQVBFQUFBRGhB
QUFBU2dBUUVRQUFBQUFBQUFBQQpBQUFBQUhrQUFBQVhBQUFBZUFBQUFOOFdBQUFBQUFBQUFBQUFU
V1ZrYVdGVGFHRnlaV1JWU1VsdFlXZGxSV3hsYldWdWREbzZaMnh2CmQwTnZiRzl5QUJ3QUVoQUFB
QUFBQUFBQUFBQUFBQUFJQUFBQUFBQUFBQUFBQUFJQUFBMEFCaEhSRmdBQUVnQjBhR2x6QUI4QURC
RzEKRXdBQUFBQUFBQUFBYjNSb1pYSkdhV3hzUjJ4dmQwTnZiRzl5QUNFQURCRzFFd0FBQUFBQUFB
QUFabWxzYkZKbGNHeGhZMlZIYkc5MwpRMjlzYjNJQURnQTVFU2tBQUFBQUFBQUFreGNBQUE0QU9S
RllBQUFBQUFBQUFKTVhBQUFDQUFZQUFBQUE4Z0FBQUZBQUFBQUFBQUFBCkFBQUFBSGtBQUFBUUFn
QUFCd0FBQUVRQUFBQUFBQUFBWFFFQWdBQUFBQUJlQVFDQU5RQUFBRjhCQUlCbUFBQUFZUUVBZ0dv
QUFBQmkKQVFDQWN3QUFBR01CQUlCNEFBQUFaQUVBZ0F3QUFBQ09BUUFBQndDWUFBQUFqZ0VBQUFz
QW5BQUFBSTRCQUFBS0FQa0FBQUNSQVFBQQpDd0Q5QUFBQWtRRUFBQW9BR2dFQUFKUUJBQUFMQUI0
QkFBQ1VBUUFBQ2dBNUFRQUFqZ0VBQUFzQVBRRUFBSTRCQUFBS0FFa0JBQUNPCkFRQUFDd0JOQVFB
QWpnRUFBQW9BWkFFQUFJNEJBQUFMQUdnQkFBQ09BUUFBQ2dEMkJRQUFBQUFCVm9zMUFBQUFBRmVM
K1hVajJlaUQKRFFBQUFBQUJnK3dJMlZ3a0JOa0ZBQUFBQU5rY0pQL1dnOFFJb3dBQUFBRDJCUUFB
QUFBQ2RTUFo2SU1OQUFBQUFBS0Q3QWpaWENRRQoyUVVBQUFBQTJSd2svOWFEeEFpakFBQUFBTGdF
QUFBQWhBVUFBQUFBZFVvSkJRQUFBQUQyQlFBQUFBQUJkUjJoQUFBQUFJc0lndzBBCkFBQUFBVkgv
RlFBQUFBQ0R4QVNqQUFBQUFJc1ZBQUFBQUdvQ2FnQm9BQUFBQUZML0ZRQUFBQUNEeEJDakFBQUFB
SXQwSkF3endEbEgKREErVXdJMEVoUTRBQUFCUVZ2OFZBQUFBQU5rRkFBQUFBSXNOQUFBQUFJc1ZB
QUFBQUtFQUFBQUFnOFFJVVZLTFZDUWNVRkdMVENRZwoyUndrYWdHRDdCQ0x4SWtJaTB3a1BJbFFC
SXRVSkVDSlNBaFdpVkFNNkFBQUFBQ0R4Q2hmWHNJVUFBSUFBQUN4QVFBQUJnQUtBQUFBClBnRUFB
QVlBRndBQUFMRUJBQUFHQUNVQUFBQ3VBUUFBQmdBeUFBQUFxd0VBQUFZQU9BQUFBTEVCQUFBR0FF
TUFBQUN4QVFBQUJnQlIKQUFBQXFBRUFBQVlBWGdBQUFLVUJBQUFHQUdrQUFBQ3hBUUFBQmdCeEFB
QUFzUUVBQUFZQWR3QUFBQ01CQUFBR0FIOEFBQUFnQVFBQQpCZ0NIQUFBQUl3RUFBQVlBandBQUFC
OEJBQUFHQUpjQUFBQWVBUUFBQmdDZEFBQUFIZ0VBQUFZQXBnQUFBS0lCQUFBR0FLMEFBQUFiCkFR
QUFCZ0MxQUFBQW53RUFBQVlBMEFBQUFDOEJBQUFHQU5ZQUFBQk9BUUFBQmdEY0FBQUFxd0VBQUFZ
QTRnQUFBS1VCQUFBR0FPY0EKQUFDZkFRQUFCZ0FaQVFBQVZ3RUFBQlFBQkFBQUFQVUFBQUFrQUFB
QUFBQUFBQUFBQUFBbEFRQUFBQUFBQUJRQUFBQUFBQUFBV3hNQQpBQkVBQ0FBRUFBQUE4UUFBQUZN
QkFBQlBBQkFSQUFBQUFBQUFBQUFBQUFBQUpRRUFBQkVBQUFBZ0FRQUExeFlBQUFBQUFBQUFBQUJO
ClpXUnBZVk5vWVhKbFpGVkpTVzFoWjJWRmJHVnRaVzUwT2pwa2NtRjNRbUZqYTJkeWIzVnVaQUFj
QUJJUUFBQUFBQUFBQUFBQUFBQUEKQ0FBQUFBQUFBQUFBQUFBQ0FBQU5BQVlSMWhZQUFCSUFkR2hw
Y3dBU0FBc1JCQUFBQUNrUUFBQmpiMjUwWlhoMEFBOEFDeEVJQUFBQQpEaEFBQUhKbFkzUUFGQUFN
RWJVVEFBQUFBQUFBQUFCMGIzQkdhV3hzQUJZQURCR0VGd0FBQUFBQUFBQUFiRzkzWlhKR2FXeHNB
Qk1BCkRCRUdFUUFBQUFBQUFBQUFZMjlzYjNKekFCY0FEQkcxRXdBQUFBQUFBQUFBYldsa1pHeGxS
bWxzYkFBT0FEa1JMQUFBQUFBQUFBQ1QKRndBQURnQTVFVmdBQUFBQUFBQUFreGNBQUE0QU9SR05B
QUFBQUFBQUFJSVhBQUFPQURrUnF3QUFBQUFBQUFDR0Z3QUFEZ0E1RWM0QQpBQUFBQUFBQWpSY0FB
QUlBQmdBQThnQUFBRkFBQUFBQUFBQUFBQUFBQUNVQkFBQVFBZ0FBQndBQUFFUUFBQUFBQUFBQW53
RUFnQUFBCkFBQ2dBUUNBTmdBQUFLRUJBSUJpQUFBQW93RUFnTGtBQUFDbEFRQ0ExQUFBQUtZQkFJ
QWdBUUFBcHdFQWdBd0FBQUNjQVFBQUJ3QlkKQUFBQW5BRUFBQXNBWEFBQUFKd0JBQUFLQU9NQUFB
Q3JBUUFBQ3dEbkFBQUFxd0VBQUFvQStRQUFBSjhCQUFBTEFQMEFBQUNmQVFBQQpDZ0FSQVFBQW9n
RUFBQXNBRlFFQUFLSUJBQUFLQUNZQkFBQ2xBUUFBQ3dBcUFRQUFwUUVBQUFvQU93RUFBSndCQUFB
TEFEOEJBQUNjCkFRQUFDZ0JMQVFBQW5BRUFBQXNBVHdFQUFKd0JBQUFLQUZzQkFBQ2NBUUFBQ3dC
ZkFRQUFuQUVBQUFvQWF3RUFBSndCQUFBTEFHOEIKQUFDY0FRQUFDZ0I3QVFBQW5BRUFBQXNBZndF
QUFKd0JBQUFLQUpRQkFBQ2NBUUFBQ3dDWUFRQUFuQUVBQUFvQTBkQlFQd0FBZ0QvSgp5RWcvQUFD
QVA5SFFVRC9aMkZnL2crd1lVNHRjSkNCVmkyd2tLRmFMZENRd1Y0UHNFSXZFaS9tTFRDUklpeGVM
VWhDSktJbHdCSWxJCkNJdE1KRXlKU0F4VGk4Ly8wb3NIaTFBZ2k4Ly8wb1RBZEZLTEI0dFFESTFN
SkJCUmk4Ly8wb3RJQklzUVVZdE1KRHhTaTFRa1JJUHMKRUl2RWlTaUpjQVNKU0FpTmRDUXdpVkFN
NkFBQUFBQ0xTQVNMVUFpTEtJdEFESVBFR0lsTUpEU0pWQ1E0aVVRa1BJdnhpazhJOXRIMgp3UUYx
Rk5rRkFBQUFBRkhaSENSVC94VUFBQUFBZzhRSWkwd2tPSXNYaTFJY2crd1FpOFNKS0lsd0JJbElD
SXRNSkV5SlNBeFRpOC8vCjBvTi9EQUtMOEhRbWkwd2tOSXRVSkRoV2crd1FpOFNKS0lsSUJJdE1K
RkNKVUFoVGlVZ002QUFBQUFDRHhCaUxWd2pCNmdUMndnRjAKSm90TUpEU0xWQ1E0Zyt3UWk4U0pL
SWxJQkl0TUpFeUpVQWlKU0F5THcrZ0FBQUFBZzhRUWkxUWtOSXRNSkRpRDdCQ0x4SWtvaVZBRQpp
MVFrVElsSUNJbFFET2dBQUFBQWc4UVFnMzhNQW5SNzlnVUFBQUFBQVhVbjJRVUFBQUFBZ3cwQUFB
QUFBWVBzQ05sY0pBVFo2TmtjCkpQOFZBQUFBQUlQRUNLTUFBQUFBMmU2aEFBQUFBRkRaVkNRVTJR
VUFBQUFBaTFRa0ZGSFpYQ1FjaTB3a0hOa2NKRkdMVENSQVVvdFUKSkVoV2crd1FpOFNKS0lsSUJJ
dE1KR0NKVUFpSlNBeUx3K2dBQUFBQWc4UWtpMWNJMGVyMndnRjBSWXZQNkFBQUFBRFpCUUFBQUFC
UQpvUUFBQUFDTEVGR0xTQVRaSENSUmkwd2tRRktMVkNSSVZvUHNFSXZFaVNpSlNBU0xUQ1JnaVZB
SWlVZ01pOFBvQUFBQUFJUEVKRmIvCkZRQUFBQUNMRjR0Q0ZJUEVCRk9Mei8vUVgxNWRXNFBFR01J
VUFIWUFBQUIvQVFBQUZBQ2lBQUFBVGdFQUFBWUFyUUFBQU1BQkFBQUcKQVAwQUFBQTNBUUFBRkFB
dUFRQUFTUUVBQUJRQVVnRUFBUG9BQUFBVUFHRUJBQUMvQVFBQUJnQnFBUUFBdkFFQUFBWUFjQUVB
QUw4QgpBQUFHQUlNQkFBQStBUUFBQmdDTEFRQUF1UUVBQUFZQWtnRUFBTGtCQUFBR0FKMEJBQUE2
QVFBQUJnRFRBUUFBS0FFQUFCUUE1d0VBCkFJNEJBQUFVQU8wQkFBQWxBQUFBQmdEekFRQUFWQUFB
QUFZQUlnSUFBQWtCQUFBVUFDd0NBQURxQUFBQUJnQUVBQUFBOVFBQUFHUUEKQUFBQUFBQUFBQUFB
QUVjQ0FBQVlBQUFBRkFBQUFBQUFBQUJiRXdBQUdnQUlBQVFBQUFBRUFBQUFRd0lBQUJnQUFBQVVB
QUFBQUFBQQpBSkFZQUFBV0FBd0FBQUFBQUFrQUFBQStBZ0FBR0FBQUFCUUFBQUFBQUFBQStSZ0FB
QkVBRUFBQUFBQUE4UUFBQUQwQkFBQkdBQkFSCkFBQUFBQUFBQUFBQUFBQUFSd0lBQUJvQUFBQTlB
Z0FBMVJZQUFBQUFBQUFBQUFCTlpXUnBZVk5vWVhKbFpGVkpTVzFoWjJWRmJHVnQKWlc1ME9qcHdZ
V2x1ZEFBY0FCSVFHQUFBQUFBQUFBQUFBQUFBRUFBQUFBQUFBQUFBQUFBQ0FBQU5BQVlSMFJZQUFC
SUFkR2hwY3dBUwpBQXNSQkFBQUFDa1FBQUJqYjI1MFpYaDBBQThBQ3hFSUFBQUFEaEFBQUhKbFkz
UUFIUUFNRWJVVEFBQUFBQUFBQUFCcGJtNWxjbE5vCllXUnZkME52Ykc5eUFBNEFPUkUxQUFBQUFB
QUFBRG9RQUFBT0FEa1JQZ0FBQUFBQUFBRGFGZ0FBRGdBNUVWQUFBQUFBQUFBQTJSWUEKQUE0QU9S
R3JBQUFBQUFBQUFJa1RBQUFPQURrUjFBQUFBQUFBQUFEWUZnQUFEZ0E1RVlFQkFBQUFBQUFBa3hj
QUFBNEFPUkVxQWdBQQpBQUFBQUY0U0FBQU9BRGtST3dJQUFBQUFBQUE4RUFBQUFnQUdBQUFBQVBJ
QUFBQzRBQUFBQUFBQUFBQUFBQUJIQWdBQUVBSUFBQlFBCkFBQ3NBQUFBQUFBQUFMd0JBSUFFQUFB
QXZRRUFnRGNBQUFDL0FRQ0FSQUFBQU1BQkFJQ1dBQUFBd2dFQWdLQUFBQUREQVFDQXRBQUEKQU1V
QkFJRFdBQUFBeHdFQWdONEFBQURJQVFDQUJBRUFBTW9CQUlBUEFRQUF5d0VBZ0RVQkFBRE5BUUNB
V1FFQUFNOEJBSUJmQVFBQQowQUVBZ0k4QkFBRFJBUUNBMmdFQUFOUUJBSURrQVFBQTFRRUFnQ2tD
QUFEWEFRQ0FNQUlBQU5rQkFJQTlBZ0FBMmdFQWdBd0FBQUMyCkFRQUFCd0NZQUFBQXRnRUFBQXNB
bkFBQUFMWUJBQUFLQUJvQkFBQzVBUUFBQ3dBZUFRQUF1UUVBQUFvQU5RRUFBTFlCQUFBTEFEa0IK
QUFDMkFRQUFDZ0JGQVFBQXRnRUFBQXNBU1FFQUFMWUJBQUFLQUZVQkFBQzJBUUFBQ3dCWkFRQUF0
Z0VBQUFvQVpRRUFBTFlCQUFBTApBR2tCQUFDMkFRQUFDZ0IxQVFBQXRnRUFBQXNBZVFFQUFMWUJB
QUFLQUlVQkFBQzJBUUFBQ3dDSkFRQUF0Z0VBQUFvQWxRRUFBTFlCCkFBQUxBSmtCQUFDMkFRQUFD
Z0NsQVFBQXRnRUFBQXNBcVFFQUFMWUJBQUFLQU1BQkFBQzJBUUFBQ3dERUFRQUF0Z0VBQUFvQUFB
QkEKUDRQc0ZQWUZBQUFBQUFGVGl4MEFBQUFBVlZhTDhWZUxQUUFBQUFDSmRDUVF2UUVBQUFCMVFR
a3RBQUFBQVBZRkFBQUFBQUYxR0tFQQpBQUFBaXdnSkxRQUFBQUJSLzllRHhBU2pBQUFBQUlzVkFB
QUFBR29DYWdCb0FBQUFBRkwvMDRQRUVLTUFBQUFBOWdVQUFBQUFBblVyCjJRVUFBQUFBZ3cwQUFB
QUFBb1BzQ05sY0pBVFpCUUFBQUFEWkhDVC9GUUFBQUFDRHhBaWpBQUFBQUxnRUFBQUFoQVVBQUFB
QWRVRUoKQlFBQUFBRDJCUUFBQUFBQmRSaWhBQUFBQUlzSUNTMEFBQUFBVWYvWGc4UUVvd0FBQUFD
TEZRQUFBQUJxQW1vQWFBQUFBQUJTLzlPRAp4QkNqQUFBQUFJdDhKQ3lMRm90Y0pEQ0xiQ1EwaTB3
a09JdDBKQ2lMVWhDRDdCQ0x4SWs0aVZnRWlXZ0lpVWdNaTB3a0lGYi8wb3RNCkpEaUQ3QkNMeElr
NGlWZ0VpV2dJVm9sSURQOFZBQUFBQUdvUlZ2OFZBQUFBQU5rRkFBQUFBSXNWQUFBQUFLRUFBQUFB
aXcwQUFBQUEKZzhRY1VvdFVKRHhRVVZIWkhDUnFBWVBzRUl2RWlUaUpXQVNKYUFoV2lWQU02QUFB
QUFCcUFGYi9GUUFBQUFDNENBQUFBSVBFTUlRRgpBQUFBQUhWRTJRVUFBQUFBQ1FVQUFBQUFnK3dJ
MlZ3a0JObnUyUndrL3hVQUFBQUEyUVVBQUFBQTJWd2tCS01BQUFBQTJRVUFBQUFBCjJSd2sveFVB
QUFBQWc4UUlvd1FBQUFDaEFBQUFBRkJXL3hVQUFBQUFpMHdrUUlQc0NJdkVpVGlKV0FTSmFBaUpT
QXovRlFBQUFBRFoKWENRa2kxUWtTSXZFaVRpSldBU0phQWlKVUF6L0ZRQUFBQURjSlFBQUFBQ0xU
Q1JJaThTSk9ObGNKQ2lKV0FTSmFBaUpTQXovRlFBQQpBQURaWENRc2kxUWtKTm5vaTB3a0tObGNK
RENMeElrUWkxUWtMSWxJQkl0TUpEQ0pVQWhXaVVnTS94VUFBQUFBaXhVRUFBQUFVbGIvCkZRQUFB
QUNMVENSVWc4UU1pOFNKT0lsWUJJbG9DSWxJRFA4VkFBQUFBTmxjSkNTTFZDUklpOFNKT0lsWUJJ
bG9DSWxRRFA4VkFBQUEKQU53bEFBQUFBSXRNSkVpTHhJazQyVndrS0lsWUJJbG9DSWxJRFA4VkFB
QUFBTmxjSkN5TFZDUWsyZWlMVENRbzJWd2tNSXZFaVJDTApWQ1FzaVVnRWkwd2tNSWxRQ0ZhSlNB
ei9GUUFBQUFDTFRDUWtpeEdMUWhTRHhCUlcvOUJmWGwxYmc4UVV3aFFBQlFBQUFPa0JBQUFHCkFB
MEFBQUFiQVFBQUJnQVlBQUFBSHdFQUFBWUFLUUFBQU9rQkFBQUdBQzhBQUFBakFRQUFCZ0EzQUFB
QUlBRUFBQVlBUHdBQUFDTUIKQUFBR0FFb0FBQUFlQVFBQUJnQlFBQUFBSGdFQUFBWUFXUUFBQU9Z
QkFBQUdBR1FBQUFEakFRQUFCZ0JxQUFBQTZRRUFBQVlBY3dBQQpBT0FCQUFBR0FIa0FBQURwQVFB
QUJnQ0hBQUFBM1FFQUFBWUFrQUFBQUQ0QkFBQUdBSmdBQUFEYUFRQUFCZ0NqQUFBQTZRRUFBQVlB
CnF3QUFBT2tCQUFBR0FMRUFBQUFqQVFBQUJnQzVBQUFBSUFFQUFBWUF3UUFBQUNNQkFBQUdBTXdB
QUFBZUFRQUFCZ0RTQUFBQUhnRUEKQUFZQTJ3QUFBTmNCQUFBR0FPWUFBQURVQVFBQUJnQXhBUUFB
RHdFQUFBWUFPZ0VBQUM4QkFBQUdBRUFCQUFCT0FRQUFCZ0JHQVFBQQo0d0VBQUFZQVN3RUFBTm9C
QUFBR0FGRUJBQURVQVFBQUJnQjNBUUFBVndFQUFCUUFnQUVBQUM4QkFBQUdBSTRCQUFEcEFRQUFC
Z0NXCkFRQUE0QUVBQUFZQW5BRUFBT2tCQUFBR0FLNEJBQUErQVFBQUJnQzBBUUFBNEFFQUFBWUF2
UUVBQU5FQkFBQUdBTU1CQUFET0FRQUEKQmdETUFRQUFQZ0VBQUFZQTFBRUFBTkVCQUFBR0FOa0JB
QURSQVFBQUJnRGhBUUFBTGdFQUFBWUErd0VBQUZzQkFBQUdBQllDQUFBUgpBUUFBQmdBY0FnQUF5
d0VBQUFZQU53SUFBR2dCQUFBR0FHVUNBQUFzQVFBQUJnQnJBZ0FBMFFFQUFBWUFjd0lBQUM0QkFB
QUdBSTBDCkFBQmJBUUFBQmdDb0FnQUFFUUVBQUFZQXJnSUFBTWdCQUFBR0FNa0NBQUJvQVFBQUJn
RDNBZ0FBTEFFQUFBWUFCQUFBQVBVQUFBQmsKQUFBQUFBQUFBQUFBQUFBVUF3QUFGQUFBQUJRQUFB
QUFBQUFBV3hNQUFDQUFDQUFFQUFBQUN3QUFBQWtEQUFBVUFBQUFGQUFBQUFBQQpBQUIwR1FBQUZR
QU1BQUFBQUFBU0FBQUFBZ01BQUJRQUFBQVVBQUFBQUFBQUFOMFpBQUFPQUJBQUFBQUFBUEVBQUFD
V0FnQUFTd0FRCkVRQUFBQUFBQUFBQUFBQUFBQlFEQUFBZ0FBQUFDZ01BQU1FV0FBQUFBQUFBQUFB
QVRXVmthV0ZUYUdGeVpXUlZTVUpoWTJ0bmNtOTEKYm1SRmJHVnRaVzUwT2pwd1lXbHVkQUFjQUJJ
UUZBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQUFBQUFDQUFBTkFBWVJ3QllBQUJJQQpkR2hwY3dB
U0FBc1JCQUFBQUNrUUFBQmpiMjUwWlhoMEFBOEFDeEVJQUFBQURoQUFBSEpsWTNRQUZ3QU1FWVFY
QUFBQUFBQUFBQUJpCmIzUjBiMjFHYVd4c0FCUUFEQkdFRndBQUFBQUFBQUFBZEc5d1JtbHNiQUFX
QUF3UndoY0FBQUFBQUFBQUFIUnZjRUp2Y21SbGNnQVcKQUF3UkJoRUFBQUFBQUFBQUFIUnZjRU52
Ykc5eWN3QVpBQXdSQmhFQUFBQUFBQUFBQUdKdmRIUnZiVU52Ykc5eWN3QVhBQXdSdFJNQQpBQUFB
QUFBQUFHMXBaR1JzWlVacGJHd0FEZ0E1RVVRQUFBQUFBQUFBZ2hjQUFBNEFPUkZlQUFBQUFBQUFB
SVlYQUFBT0FEa1JqZ0FBCkFBQUFBQUNURndBQURnQTVFY1lBQUFBQUFBQUFnaGNBQUE0QU9SSGdB
QUFBQUFBQUFJWVhBQUFPQURrUkdBRUFBQUFBQUFBNkVBQUEKRGdBNUVTOEJBQUFBQUFBQWRSSUFB
QTRBT1JFNEFRQUFBQUFBQUkwWEFBQU9BRGtSZmdFQUFBQUFBQUNORndBQURnQTVFYXdCQUFBQQpB
QUFBa3hjQUFBNEFPUkhLQVFBQUFBQUFBSk1YQUFBT0FEa1Izd0VBQUFBQUFBQ1BGd0FBRGdBNUVm
a0JBQUFBQUFBQVloSUFBQTRBCk9SRVVBZ0FBQUFBQUFHSVNBQUFPQURrUk5RSUFBQUFBQUFCaUVn
QUFEZ0E1RVdNQ0FBQUFBQUFBZFJJQUFBNEFPUkZ4QWdBQUFBQUEKQUk4WEFBQU9BRGtSaXdJQUFB
QUFBQUJpRWdBQURnQTVFYVlDQUFBQUFBQUFZaElBQUE0QU9SSEhBZ0FBQUFBQUFHSVNBQUFPQURr
Ugo5UUlBQUFBQUFBQjFFZ0FBRGdBNUVRZ0RBQUFBQUFBQVBCQUFBQUlBQmdBQUFQSUFBQUNZQUFB
QUFBQUFBQUFBQUFBVUF3QUFFQUlBCkFCQUFBQUNNQUFBQUFBQUFBUDhCQUlBREFBQUFBZ0lBZ0dn
QUFBQURBZ0NBbkFBQUFBUUNBSURxQUFBQUJnSUFnQm9CQUFBSUFnQ0EKTlFFQUFBb0NBSUErQVFB
QUN3SUFnSHNCQUFBTkFnQ0FoQUVBQUE4Q0FJRFlBUUFBRUFJQWdPVUJBQUFSQWdDQWFRSUFBQklD
QUlCMwpBZ0FBRXdJQWdQc0NBQUFWQWdDQUNnTUFBQllDQUlBTUFBQUF4UUVBQUFjQW1BQUFBTVVC
QUFBTEFKd0FBQURGQVFBQUNnQWZBUUFBCjFBRUFBQXNBSXdFQUFOUUJBQUFLQURnQkFBRGpBUUFB
Q3dBOEFRQUE0d0VBQUFvQVRnRUFBTkVCQUFBTEFGSUJBQURSQVFBQUNnQm0KQVFBQTVnRUFBQXNB
YWdFQUFPWUJBQUFLQUg0QkFBRFhBUUFBQ3dDQ0FRQUExd0VBQUFvQW1RRUFBTm9CQUFBTEFKMEJB
QURhQVFBQQpDZ0N1QVFBQXhRRUFBQXNBc2dFQUFNVUJBQUFLQUw0QkFBREZBUUFBQ3dEQ0FRQUF4
UUVBQUFvQXpnRUFBTVVCQUFBTEFOSUJBQURGCkFRQUFDZ0RlQVFBQXhRRUFBQXNBNGdFQUFNVUJB
QUFLQU80QkFBREZBUUFBQ3dEeUFRQUF4UUVBQUFvQS9nRUFBTVVCQUFBTEFBSUMKQUFERkFRQUFD
Z0FPQWdBQXhRRUFBQXNBRWdJQUFNVUJBQUFLQUI0Q0FBREZBUUFBQ3dBaUFnQUF4UUVBQUFvQUxn
SUFBTVVCQUFBTApBRElDQUFERkFRQUFDZ0ErQWdBQXhRRUFBQXNBUWdJQUFNVUJBQUFLQUU0Q0FB
REZBUUFBQ3dCU0FnQUF4UUVBQUFvQVhnSUFBTVVCCkFBQUxBR0lDQUFERkFRQUFDZ0J1QWdBQXhR
RUFBQXNBY2dJQUFNVUJBQUFLQUg0Q0FBREZBUUFBQ3dDQ0FnQUF4UUVBQUFvQWpnSUEKQU1VQkFB
QUxBSklDQUFERkFRQUFDZ0NlQWdBQXhRRUFBQXNBb2dJQUFNVUJBQUFLQUs0Q0FBREZBUUFBQ3dD
eUFnQUF4UUVBQUFvQQp2Z0lBQU1VQkFBQUxBTUlDQUFERkFRQUFDZ0RPQWdBQXhRRUFBQXNBMGdJ
QUFNVUJBQUFLQU40Q0FBREZBUUFBQ3dEaUFnQUF4UUVBCkFBb0E3Z0lBQU1VQkFBQUxBUElDQUFE
RkFRQUFDZ0QrQWdBQXhRRUFBQXNBQWdNQUFNVUJBQUFLQUJnREFBREZBUUFBQ3dBY0F3QUEKeFFF
QUFBb0FBQUFBQUFBQUFFQUFBQUFBQUFEd1B6TXpzejZKaUlnOUg0VnJQOG5JeUQwZmhXcy84ZkR3
UFIrRmF6K05qQXcrSDRWcgpQL0h3Y0Q0ZmhXcy9VNHRjSkJCVmkyd2tHRmFMZENRUVY0dDhKQmlE
N0JDTHhJa3dpWGdFaVZnSWlXZ00veFVBQUFBQTJWd2tKSXZFCmlUQ0plQVNKV0FpSmFBei9GUUFB
QUFEWlhDUW8yVVFrTklQRUVOaGtKQlRaUkNRbzJHUWtHTnpJMmNIZXl0N0IzQjBBQUFBQTMrRDIK
eEVGNkRMZ0JBQUFBWDE1ZFc4SVlBRjllWFRQQVc4SVlBQ1lBQUFCWkFRQUFCZ0E5QUFBQThnRUFB
QVlBWWdBQUFQRUJBQUFHQUFRQQpBQUQxQUFBQVpBQUFBQUFBQUFBQUFBQUFnZ0FBQUFBQUFBQVlB
QUFBQUFBQUFGc1RBQUFRQUFnQUJBQUFBQUVBQUFDQkFBQUFBQUFBCkFCZ0FBQUFBQUFBQVdCb0FB
QThBREFBQUFBQUFCZ0FBQUh3QUFBQUFBQUFBR0FBQUFBQUFBQURBR2dBQUNnQVFBQUFBQUFEeEFB
QUEKekFBQUFGWUFFQkVBQUFBQUFBQUFBQUFBQUFDQ0FBQUFFQUFBQUhrQUFBQWZGd0FBQUFBQUFB
QUFBRTFsWkdsaFUyaGhjbVZrVlVsVQphVzFsYkdsdVpWTnNhV1JsY2xSb2RXMWlSV3hsYldWdWRE
bzZhR2wwVkdWemRBQWNBQklRQUFBQUFBQUFBQUFBQUFBQUVBQUFBQUFBCkFBQUFBQUFDQUFBTkFB
WVJIUmNBQUJJQWRHaHBjd0FQQUFzUkJBQUFBQTRRQUFCeVpXTjBBQkFBQ3hFVUFBQUFDQkFBQUhC
dmFXNTAKQUE0QU9SRWtBQUFBQUFBQUFHSVNBQUFPQURrUk93QUFBQUFBQUFCaUVnQUFBZ0FHQVBJ
QUFBQTRBQUFBQUFBQUFBQUFBQUNDQUFBQQpFQUlBQUFRQUFBQXNBQUFBQUFBQUFCa0NBSUFCQUFB
QUdnSUFnRVVBQUFBYkFnQ0FjZ0FBQUJ3Q0FJQU1BQUFBN2dFQUFBY0FtQUFBCkFPNEJBQUFMQUp3
QUFBRHVBUUFBQ2dBa0FRQUE3Z0VBQUFzQUtBRUFBTzRCQUFBS0FEUUJBQUR1QVFBQUN3QTRBUUFB
N2dFQUFBb0EKVEFFQUFPNEJBQUFMQUZBQkFBRHVBUUFBQ2dBQUFBQUFBQUF3UUlQc0NOa0ZBQUFB
QUl0RUpBelpGQ1NMRENUWlhDUUVpMVFrQklrSQoyUURjQlFBQUFBQ0pVQVRaR0lQRUNNSUVBQVVB
QUFBbEFBQUFCZ0FoQUFBQXlBRUFBQVlBQkFBQUFQVUFBQUFrQUFBQUFBQUFBQUFBCkFBQXdBQUFB
Q0FBQUFBUUFBQUFBQUFBQVd4TUFBQU1BQUFBRUFBQUE4UUFBQUkwQUFBQmFBQkFSQUFBQUFBQUFB
QUFBQUFBQU1BQUEKQUFNQUFBQXFBQUFBSGhjQUFBQUFBQUFBQUFCTlpXUnBZVk5vWVhKbFpGVkpW
R2x0Wld4cGJtVlRiR2xrWlhKVWFIVnRZa1ZzWlcxbApiblE2T201aGRIVnlZV3hUYVhwbEFCd0FF
aEFJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFBQTBBQmhFZEZ3QUFFZ0IwCmFHbHpB
QUlBQmdBQUFBRHlBQUFBT0FBQUFBQUFBQUFBQUFBQU1BQUFBQkFDQUFBRUFBQUFMQUFBQUFBQUFB
QWZBZ0NBQXdBQUFDQUMKQUlBZEFBQUFJZ0lBZ0NvQUFBQWxBZ0NBREFBQUFQY0JBQUFIQUZnQUFB
RDNBUUFBQ3dCY0FBQUE5d0VBQUFvQTBBQUFBUGNCQUFBTApBTlFBQUFEM0FRQUFDZ0NEN0REMkJR
QUFBQUFCVTRzZEFBQUFBRlZXaXpVQUFBQUFWNHY1aVh3a0dMMEJBQUFBZFVFSkxRQUFBQUQyCkJR
QUFBQUFCZFJpaEFBQUFBSXNJQ1MwQUFBQUFVZi9XZzhRRW93QUFBQUNMRlFBQUFBQnFBbW9BYUFB
QUFBQlMvOU9EeEJDakFBQUEKQVBZRkFBQUFBQUoxUW9NTkFBQUFBQUwyQlFBQUFBQUJkUmloQUFB
QUFJc0lDUzBBQUFBQVVmL1dnOFFFb3dBQUFBQ0xGUUFBQUFCcQpBbW9BYUFBQUFBQlMvOU9EeEJD
akFBQUFBSXMxQUFBQUFMZ0VBQUFBaEFVQUFBQUFkU0xaQlFBQUFBQUpCUUFBQUFDRDdBalpYQ1FF
CjJlalpIQ1QvMW9QRUNLTUFBQUFBdUFnQUFBQ0VCUUFBQUFCMUl0a0ZBQUFBQUFrRkFBQUFBSVBz
Q05sY0pBVFo3dGtjSlAvV2c4UUkKb3dBQUFBQ0xGNHRzSkVpTGRDUk1pM3drVUl0Y0pGU0xUQ1FZ
aTFJUWcrd1FpOFNKS0lsd0JJbDRDSWxZREl0RUpGUlEvOUtEN0JDTAp4SWtvaVhBRWlYZ0lpVmdN
L3hVQUFBQUEyVndrUUl2RWlTaUpjQVNKZUFpSldBei9GUUFBQUFEWlhDUkVpMFFrVkdvQVUxZFEv
eFVBCkFBQUFVSWxFSkVEL0ZRQUFBQUNEeEJTSlJDUWdpOFNKS0lsd0JJbDRDSWxZRFA4VkFBQUFB
Tm5nVVl2RTJWd2tFSWtvaVhBRWlYZ0kKaVZnTS94VUFBQUFBMmVDTFRDUWsyVndrRElQRURGSC9G
UUFBQUFCUmk4U0pLSWx3QklsNENJbFlEUDhWQUFBQUFOd05BQUFBQUl0VQpKQ0JTMlZ3a0tQOFZB
QUFBQU5sRUpFaUR4QXpaWENRRTJVUWtPTmhFSkJ6WlhDUW8yVVFrS0l0RUpCalpIQ1JRL3hVQUFB
QUEyVVFrClFOaGtKQ0NMVENRY2c4UUUyVndrS05sRUpDalpYQ1FFMlVRa09Oa2NKRkgvRlFBQUFB
RFpSQ1JBaTFRa0hObGNKQWpaUkNROGc4UUUKMkdRa0hObGNKQ2paUkNRbzJSd2tVdjhWQUFBQUFO
bEVKRURZUkNRZ2kwUWtISVBFQk5sY0pDalpSQ1FvMlZ3a0JObEVKRGpaSENSUQoveFVBQUFBQWkw
d2tIRkgvRlFBQUFBQ0xWQ1FnVXY4VkFBQUFBSVBFQkl2RWlTaUpjQVNKZUFpSldBei9GUUFBQUFE
WlhDUkFpOFNKCktJbHdCSWw0Q0lsWURQOFZBQUFBQU5sY0pFU0x4SWtvaVhBRWlYZ0lpVmdNL3hV
QUFBQUEyVndrTUl2RWlTaUpjQVNKZUFpSldBei8KRlFBQUFBRFpYQ1EwaTBRa0tJdElDS0VBQUFB
QTBlbUR4QkQyd1FGMUJhRUFBQUFBaTFRa05JdE1KREJxQUZLTFZDUXNVWXRNSkN4UwppMVFrSUZG
UVV2OFZBQUFBQUl0RUpHQnFBRk5YVVA4VkFBQUFBRkNKUkNSRS94VUFBQUFBZzhRZ2lVUWtJSXZF
aVNpSmNBU0plQWlKCldBei9GUUFBQUFEWjRGR0x4TmxjSkJDSktJbHdCSWw0Q0lsWURQOFZBQUFB
QU5uZ2kwd2tKTmxjSkF5RHhBeFIveFVBQUFBQWkxUWsKS0lQRURGS0Q3QkNMeElrb2lYQUVpWGdJ
aVZnTWkwUWtKRkQvRlFBQUFBRFo3b3NOQUFBQUFObFVKRWpaQlFBQUFBQ0xSQ1JJZzhRWQoyVndr
Tkl0VUpEUlJVWXRNSkNUWkhDUlNVRkdEN0JDTHhJa29pWEFFaVhnSWlWZ01pMFFrTk9nQUFBQUFp
MVFrUUZML0ZRQUFBQUNMClJDUnNVUDhWQUFBQUFJdE1KSEJSalZRa1VGTC9GUUFBQUFDTENJdFFC
SWxVSkdpTFVBeUpUQ1JraTBnSWlWUWtjSXNRZzhRa2lVd2sKU0l2TWlSR0xVQVNKVVFTTFVBaUxR
QXlKVVFpSlFRei9GUUFBQUFEWlhDUXdpOFNKS0lsd0JJbDRDSWxZRFA4VkFBQUFBTmxjSkN5TApU
Q1JBaTFRa1JJdkVpUWlMVENSSWlWQUVpMVFrVElsSUNJbFFEUDhWQUFBQUFObGNKQ0RaUkNRd2k4
VFpYQ1JBaVNqWlJDUXNpWEFFCjJWd2tSSWw0Q05sRUpDQ0pXQXpaWENSSS94VUFBQUFBaTB3a1FO
bGNKRXlMVkNSRWk4U0pDSXRNSkVpSlVBU0xWQ1JNaVVnSWlWQU0KaTBRa1ZGRC9GUUFBQUFEWjdv
c05BQUFBQU5sY0pFVFpCUUFBQUFDRHhCUlIyVndrT0ZIWjZJdFVKRHlMUkNRNDJSd2tpMHdrSEZK
UQpVWVBzRUl2RWlTaUpjQVNKZUFpSldBeUxSQ1JvNkFBQUFBQ0xWQ1JvVXY4VkFBQUFBSXRFSkVD
TFNBakI2UVNEeENqMndRRjBKSVBzCkVJdkVpU2lKY0FTTGRDUWtpWGdJaVZnTWkwUWtWT2dBQUFB
QWkzUWtYSVBFRUl0VUpCUlNnK3dRaThTSktJbHdCSXQwSkZpSmVBaFcKaVZnTS94VUFBQUFBaTBR
a0xGRC9GUUFBQUFDTFRDUTBpeEdMUWhTRHhCeFcvOUJmWGwxYmc4UXd3aFFBQlFBQUFCZ0NBQUFH
QUEwQQpBQUFiQVFBQUJnQVZBQUFBSHdFQUFBWUFLUUFBQUJnQ0FBQUdBQzhBQUFBakFRQUFCZ0Ez
QUFBQUlBRUFBQVlBUHdBQUFDTUJBQUFHCkFFb0FBQUFlQVFBQUJnQlFBQUFBSGdFQUFBWUFXUUFB
QUJVQ0FBQUdBR1FBQUFBU0FnQUFCZ0JxQUFBQUdBSUFBQVlBY3dBQUFCZ0MKQUFBR0FIb0FBQUFq
QVFBQUJnQ0NBQUFBSUFFQUFBWUFpZ0FBQUNNQkFBQUdBSlVBQUFBZUFRQUFCZ0NiQUFBQUhnRUFB
QVlBcEFBQQpBQThDQUFBR0FLOEFBQUFNQWdBQUJnQzFBQUFBUGdFQUFBWUF3QUFBQUJnQ0FBQUdB
TWdBQUFET0FRQUFCZ0RPQUFBQUdBSUFBQVlBCjVBQUFBQWtDQUFBR0FPOEFBQUFZQWdBQUJnRDNB
QUFBUVFFQUFBWUEvUUFBQUJnQ0FBQUdBQk1CQUFBR0FnQUFCZ0JaQVFBQVdRRUEKQUFZQWNBRUFB
UElCQUFBR0FJTUJBQURlQUFBQUJnQ09BUUFBM1FBQUFBWUFxQUVBQUJBQkFBQUdBTUlCQUFCYkFR
QUFCZ0RXQVFBQQo4Z0FBQUFZQTZnRUFBR2tCQUFBR0FQQUJBQUJnQVFBQUJnRC9BUUFBQXdJQUFB
WUFLQUlBQUFJQ0FBQUdBRkVDQUFBQkFnQUFCZ0I2CkFnQUFBUUlBQUFZQW93SUFBQUVDQUFBR0FL
NENBQUFBQWdBQUJnQzVBZ0FBL3dFQUFBWUF6d0lBQUZrQkFBQUdBT1lDQUFBUkFRQUEKQmdEOUFn
QUFXUUVBQUFZQUZBTUFBQkFCQUFBR0FDUURBQUFTQWdBQUJnQXpBd0FBREFJQUFBWUFWUU1BQUZn
QkFBQUdBR1FEQUFEZQpBQUFBQmdCdkF3QUEzUUFBQUFZQWlRTUFBQkFCQUFBR0FLTURBQUJiQVFB
QUJnQzNBd0FBOGdBQUFBWUEyZ01BQVBzQUFBQUdBT0lECkFBQUpBZ0FBQmdEc0F3QUFPZ0VBQUFZ
QUlBUUFBQ2dCQUFBVUFDc0VBQUQrQVFBQUJnQTJCQUFBRlFFQUFBWUFSZ1FBQVAwQkFBQUcKQUlJ
RUFBQmJBUUFBQmdDWkJBQUFFQUVBQUFZQXdBUUFBR2dCQUFBR0FPOEVBQUJwQVFBQUJnQWJCUUFB
RHdFQUFBWUFJd1VBQUFZQwpBQUFHQUMwRkFBQTZBUUFBQmdCakJRQUFDUUVBQUJRQWJnVUFBQW9C
QUFBR0FKMEZBQUJKQVFBQUZBREVCUUFBK3dBQUFBWUF6d1VBCkFQNEJBQUFHQUFRQUFBRDFBQUFB
WkFBQUFBQUFBQUFBQUFBQTdBVUFBREFBQUFBVUFBQUFBQUFBQUZzVEFBQWdBQWdBQkFBQUFBc0EK
QUFEaEJRQUFNQUFBQUJRQUFBQUFBQUFBT1JzQUFCVUFEQUFBQUFBQUVnQUFBTm9GQUFBd0FBQUFG
QUFBQUFBQUFBQ2lHd0FBRGdBUQpBQUFBQUFEeEFBQUF0d1FBQUZRQUVCRUFBQUFBQUFBQUFBQUFB
QURzQlFBQUlBQUFBT0lGQUFBYkZ3QUFBQUFBQUFBQUFFMWxaR2xoClUyaGhjbVZrVlVsVWFXMWxi
R2x1WlZOc2FXUmxjbFJvZFcxaVJXeGxiV1Z1ZERvNmNHRnBiblFBSEFBU0VEQUFBQUFBQUFBQUFB
QUEKQUJBQUFBQUFBQUFBQUFBQUFnQUFEUUFHRVJvWEFBQVNBSFJvYVhNQUVnQUxFUVFBQUFBcEVB
QUFZMjl1ZEdWNGRBQVBBQXNSQ0FBQQpBQTRRQUFCeVpXTjBBQndBREJHRUZ3QUFBQUFBQUFBQWNI
SmxjM05sWkVkeVlXUnBaVzUwQUJrQURCRUdFUUFBQUFBQUFBQUFibTl5CmJXRnNRMjlzYjNKekFC
Z0FEQkcxRXdBQUFBQUFBQUFBYzJoaFpHOTNRMjlzYjNJQUVRQUxFZEQvLy85QUFBQUFjbUZrYVhW
ekFCc0EKREJHRUZ3QUFBQUFBQUFBQWJtOXliV0ZzUjNKaFpHbGxiblFBR0FBTEVkai8vLzl0RWdB
QVozSmhaR2xsYm5STVlYbGxjZ0FhQUFzUgp6UC8vL3lrUUFBQm5jbUZrYVdWdWRFTnZiblJsZUhR
QUZ3QUxFZEQvLy85dEVnQUFibTl0YVc1aGJFeGhlV1Z5QUJVQUN4SHMvLy8vCkRoQUFBR05zYVhC
Q2IzVnVaSE1BRndBTEVjei8vLzhwRUFBQWJHRjVaWEpEYjI1MFpYaDBBQm9BREJFR0VRQUFBQUFB
QUFBQWNISmwKYzNObFpFTnZiRzl5Y3dBYkFBd1J0Uk1BQUFBQUFBQUFBR2hwWjJoc2FXZG9kRU52
Ykc5eUFBNEFPUkZFQUFBQUFBQUFBSUlYQUFBTwpBRGtSWGdBQUFBQUFBQUNHRndBQURnQTVFWThB
QUFBQUFBQUFnaGNBQUE0QU9SR3BBQUFBQUFBQUFJWVhBQUFPQURrUjNnQUFBQUFBCkFBQ1RGd0FB
RGdBNUVRMEJBQUFBQUFBQWt4Y0FBQTRBT1JGRkFRQUFBQUFBQURvUUFBQU9BRGtSVndFQUFBQUFB
QUJpRWdBQURnQTUKRVc0QkFBQUFBQUFBWWhJQUFBNEFPUkdCQVFBQUFBQUFBSElTQUFBT0FEa1Jq
QUVBQUFBQUFBQjBFZ0FBRGdBNUVhWUJBQUFBQUFBQQpZaElBQUE0QU9SSEFBUUFBQUFBQUFHSVNB
QUFPQURrUjFBRUFBQUFBQUFCZ0VnQUFEZ0E1RWVnQkFBQUFBQUFBWWhJQUFBNEFPUkg5CkFRQUFB
QUFBQUl3UUFBQU9BRGtSSmdJQUFBQUFBQUJnRWdBQURnQTVFVThDQUFBQUFBQUFZQklBQUE0QU9S
RjRBZ0FBQUFBQUFHQVMKQUFBT0FEa1JvUUlBQUFBQUFBQmdFZ0FBRGdBNUVhd0NBQUFBQUFBQWpC
QUFBQTRBT1JHM0FnQUFBQUFBQUl3UUFBQU9BRGtSelFJQQpBQUFBQUFCaUVnQUFEZ0E1RWVRQ0FB
QUFBQUFBWWhJQUFBNEFPUkg3QWdBQUFBQUFBR0lTQUFBT0FEa1JFZ01BQUFBQUFBQmlFZ0FBCkRn
QTVFVk1EQUFBQUFBQUFwQmNBQUE0QU9SRmlBd0FBQUFBQUFISVNBQUFPQURrUmJRTUFBQUFBQUFC
MEVnQUFEZ0E1RVljREFBQUEKQUFBQVloSUFBQTRBT1JHaEF3QUFBQUFBQUdJU0FBQU9BRGtSdFFN
QUFBQUFBQUJnRWdBQURnQTVFZGdEQUFBQUFBQUFkeElBQUE0QQpPUkVwQkFBQUFBQUFBSGdTQUFB
T0FEa1JOQVFBQUFBQUFBQ01FQUFBRGdBNUVVUUVBQUFBQUFBQXd4Y0FBQTRBT1JHQUJBQUFBQUFB
CkFHSVNBQUFPQURrUmx3UUFBQUFBQUFCaUVnQUFEZ0E1RWI0RUFBQUFBQUFBWWhJQUFBNEFPUkh0
QkFBQUFBQUFBR0lTQUFBT0FEa1IKR1FVQUFBQUFBQUIxRWdBQURnQTVFV3dGQUFBQUFBQUFqQkFB
QUE0QU9SSENCUUFBQUFBQUFIY1NBQUFPQURrUnpRVUFBQUFBQUFCNApFZ0FBRGdBNUVlQUZBQUFB
QUFBQVBCQUFBQUlBQmdBQThnQUFBRGdCQUFBQUFBQUFBQUFBQU93RkFBQVFBZ0FBSkFBQUFDd0JB
QUFBCkFBQUFLQUlBZ0FNQUFBQXJBZ0NBYUFBQUFDd0NBSUN6QUFBQUxRSUFnT2dBQUFBdUFnQ0FG
d0VBQURBQ0FJQkhBUUFBTWdJQWdIZ0IKQUFBekFnQ0Fod0VBQURRQ0FJQ1NBUUFBTmdJQWdOb0JB
QUE0QWdDQTlBRUFBRGtDQUlBREFnQUFPZ0lBZ0N3Q0FBQTdBZ0NBVlFJQQpBRHdDQUlCK0FnQUFQ
UUlBZ0tjQ0FBQStBZ0NBc2dJQUFFQUNBSUM5QWdBQVJBSUFnRmtEQUFCR0FnQ0FhQU1BQUVjQ0FJ
QnpBd0FBClNRSUFnTHNEQUFCS0FnQ0EzZ01BQUVzQ0FJQWtCQUFBVEFJQWdDOEVBQUJPQWdDQU9n
UUFBRThDQUlCaEJBQUFVQUlBZ0I4RkFBQlMKQWdDQVp3VUFBRlFDQUlCeUJRQUFWZ0lBZ0lRRkFB
QlhBZ0NBcUFVQUFGa0NBSURJQlFBQVd3SUFnTk1GQUFCZEFnQ0E0Z1VBQUY0QwpBSUFNQUFBQS9B
RUFBQWNBbUFBQUFQd0JBQUFMQUp3QUFBRDhBUUFBQ2dBb0FRQUFFZ0lBQUFzQUxBRUFBQklDQUFB
S0FFWUJBQUFQCkFnQUFDd0JLQVFBQUR3SUFBQW9BWVFFQUFBWUNBQUFMQUdVQkFBQUdBZ0FBQ2dD
T0FRQUFEQUlBQUFzQWtnRUFBQXdDQUFBS0FDb0MKQUFBVkFnQUFDd0F1QWdBQUZRSUFBQW9BUmdJ
QUFBa0NBQUFMQUVvQ0FBQUpBZ0FBQ2dCZkFnQUEvQUVBQUFzQVl3SUFBUHdCQUFBSwpBRzhDQUFE
OEFRQUFDd0J6QWdBQS9BRUFBQW9BZndJQUFQd0JBQUFMQUlNQ0FBRDhBUUFBQ2dDUEFnQUEvQUVB
QUFzQWt3SUFBUHdCCkFBQUtBSjhDQUFEOEFRQUFDd0NqQWdBQS9BRUFBQW9BcndJQUFQd0JBQUFM
QUxNQ0FBRDhBUUFBQ2dDL0FnQUEvQUVBQUFzQXd3SUEKQVB3QkFBQUtBTThDQUFEOEFRQUFDd0RU
QWdBQS9BRUFBQW9BM3dJQUFQd0JBQUFMQU9NQ0FBRDhBUUFBQ2dEdkFnQUEvQUVBQUFzQQo4d0lB
QVB3QkFBQUtBUDhDQUFEOEFRQUFDd0FEQXdBQS9BRUFBQW9BRHdNQUFQd0JBQUFMQUJNREFBRDhB
UUFBQ2dBZkF3QUEvQUVBCkFBc0FJd01BQVB3QkFBQUtBQzhEQUFEOEFRQUFDd0F6QXdBQS9BRUFB
QW9BUHdNQUFQd0JBQUFMQUVNREFBRDhBUUFBQ2dCUEF3QUEKL0FFQUFBc0FVd01BQVB3QkFBQUtB
RjhEQUFEOEFRQUFDd0JqQXdBQS9BRUFBQW9BYndNQUFQd0JBQUFMQUhNREFBRDhBUUFBQ2dCLwpB
d0FBL0FFQUFBc0Fnd01BQVB3QkFBQUtBSThEQUFEOEFRQUFDd0NUQXdBQS9BRUFBQW9BbndNQUFQ
d0JBQUFMQUtNREFBRDhBUUFBCkNnQ3ZBd0FBL0FFQUFBc0Fzd01BQVB3QkFBQUtBTDhEQUFEOEFR
QUFDd0REQXdBQS9BRUFBQW9BendNQUFQd0JBQUFMQU5NREFBRDgKQVFBQUNnRGZBd0FBL0FFQUFB
c0E0d01BQVB3QkFBQUtBTzhEQUFEOEFRQUFDd0R6QXdBQS9BRUFBQW9BL3dNQUFQd0JBQUFMQUFN
RQpBQUQ4QVFBQUNnQVBCQUFBL0FFQUFBc0FFd1FBQVB3QkFBQUtBQjhFQUFEOEFRQUFDd0FqQkFB
QS9BRUFBQW9BTHdRQUFQd0JBQUFMCkFETUVBQUQ4QVFBQUNnQS9CQUFBL0FFQUFBc0FRd1FBQVB3
QkFBQUtBRThFQUFEOEFRQUFDd0JUQkFBQS9BRUFBQW9BWHdRQUFQd0IKQUFBTEFHTUVBQUQ4QVFB
QUNnQnZCQUFBL0FFQUFBc0Fjd1FBQVB3QkFBQUtBSDhFQUFEOEFRQUFDd0NEQkFBQS9BRUFBQW9B
andRQQpBUHdCQUFBTEFKTUVBQUQ4QVFBQUNnQ2ZCQUFBL0FFQUFBc0Fvd1FBQVB3QkFBQUtBSzhF
QUFEOEFRQUFDd0N6QkFBQS9BRUFBQW9BCnZ3UUFBUHdCQUFBTEFNTUVBQUQ4QVFBQUNnRFBCQUFB
L0FFQUFBc0Ewd1FBQVB3QkFBQUtBTjhFQUFEOEFRQUFDd0RqQkFBQS9BRUEKQUFvQTd3UUFBUHdC
QUFBTEFQTUVBQUQ4QVFBQUNnRC9CQUFBL0FFQUFBc0FBd1VBQVB3QkFBQUtBQThGQUFEOEFRQUFD
d0FUQlFBQQovQUVBQUFvQUh3VUFBUHdCQUFBTEFDTUZBQUQ4QVFBQUNnQTRCUUFBL0FFQUFBc0FQ
QVVBQVB3QkFBQUtBTWZHeGo0QUFJQS9rWkFRClB3QUFnRCtob0NBL0FBQ0FQOTdkWFQ4QUFJQS9V
NHRjSkJSVmkyd2tIRmFMZENRVVY0dDhKQnlEN0JDTHhJa3dpWGdFaVZnSWlXZ00KL3hVQUFBQUEz
QVVBQUFBQWk4U0pNSWw0Qk5sY0pDaUpXQWlKYUF6L0ZRQUFBQURjQlFBQUFBQ0x4SWt3aVhnRTJW
d2tMSWxZQ0lsbwpEUDhWQUFBQUFOd2xBQUFBQUl0RUpDU0xUQ1FvaTFRa0xObGNKRERaQlFBQUFB
Q0R4QkJmMlZ3a0lJa0lpMHdrSElsUUJJdFVKQ0JlClhZbElDSWxRREZ2Q0ZBQW1BQUFBV3dFQUFB
WUFMQUFBQUNNQ0FBQUdBRU1BQUFBUUFRQUFCZ0JKQUFBQXlBRUFBQVlBWUFBQUFHZ0IKQUFBR0FH
WUFBQUFnQWdBQUJnQjhBQUFBckFBQUFBWUFCQUFBQVBVQUFBQmtBQUFBQUFBQUFBQUFBQUNoQUFB
QUFBQUFBQlFBQUFBQQpBQUFBV3hNQUFCQUFDQUFFQUFBQUFRQUFBS0FBQUFBQUFBQUFGQUFBQUFB
QUFBQllHZ0FBRHdBTUFBQUFBQUFHQUFBQW13QUFBQUFBCkFBQVVBQUFBQUFBQUFNQWFBQUFLQUJB
QUFBQUFBUEVBQUFET0FBQUFXQUFRRVFBQUFBQUFBQUFBQUFBQUFLRUFBQUFRQUFBQWd3QUEKQUE0
WEFBQUFBQUFBQUFBQVRXVmthV0ZUYUdGeVpXUlZTVlJwYldWc2FXNWxVMnhwWkdWeU9qcDBhVzFs
YkdsdVpWSmxZM1JHYjNKQwpiM1Z1WkhNQUhBQVNFQUFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFB
QUFBQUFnQUFEUUFHRVF3WEFBQVNBSFJvYVhNQUVRQUxFUWdBCkFBQU9FQUFBWW05MWJtUnpBQTRB
T1JFa0FBQUFBQUFBQUdJU0FBQU9BRGtSUVFBQUFBQUFBQUJpRWdBQURnQTVFVjRBQUFBQUFBQUEK
WWhJQUFBSUFCZ0FBQVBJQUFBQXdBQUFBQUFBQUFBQUFBQUNoQUFBQUVBSUFBQU1BQUFBa0FBQUFB
QUFBQUdJQ0FJQUJBQUFBWmdJQQpnSU1BQUFCbkFnQ0FEQUFBQUIwQ0FBQUhBSmdBQUFBZEFnQUFD
d0NjQUFBQUhRSUFBQW9BRmdFQUFCMENBQUFMQUJvQkFBQWRBZ0FBCkNnQW1BUUFBSFFJQUFBc0FL
Z0VBQUIwQ0FBQUtBRFlCQUFBZEFnQUFDd0E2QVFBQUhRSUFBQW9BVUFFQUFCMENBQUFMQUZRQkFB
QWQKQWdBQUNnQUFBQUFBQUFBZ1FBQUFBQUFBQUJCQWcrdzgyZTVUM0ZFWVZWWlhpVXdrRU4vZzlz
UkVld2pkUVJEY2NSanJBdG5BMmVqZQo0ZDFVSkJUYTZkL2c5c1JFRDR1Q0F3QUF1QUVBQUFDRUJR
QUFBQUIxSnRrRkFBQUFBQWtGQUFBQUFJUHNDTmxjSkFUWjZOa2NKUDhWCkFBQUFBSVBFQ0tNQUFB
QUFpM1FrVkl0OEpGaUxYQ1JjaTJ3a1lJdE1KQkNEN0JDTHhJa3dpWGdFaVZnSWlXZ01qVVFrTEZE
b0FBQUEKQU5udWkwd2tFTm5BM0ZrWTMrRDJ4RVI3Q04zWTNVRVEzSEVZaTB3a0hOMWNKRlNMVkNR
Z2crd1FpOFNKQ0l0TUpEU0pVQVNMVkNRNAppVWdJaVZBTS94VUFBQUFBM0V3a1pJdE1KQ3lMVkNR
d2k4VGRYQ1JraVFpTFRDUTBpVkFFaTFRa09JbElDSWxRRFA4VkFBQUFBTnhFCkpHU0x4SWt3aVhn
RTJWd2tUSWxZQ0lsb0RQOFZBQUFBQU5sY0pGQ0xUQ1FzaTFRa01JdkVpUWlMVENRMGlWQUVpMVFr
T0lsSUNJbFEKRFA4VkFBQUFBTnhNSkNTTHhJa3dpWGdFMlZ3a1ZJbFlDSWxvRFA4VkFBQUFBTmxj
SkZqWjZJdE1KRkNMUkNSTTJWUWtaSXRVSkZUWgpYQ1JvaVVRa1BJdEVKRmlKVENSQWkwd2thSWxV
SkVTTFZDUmtVWWxFSkV5TFJDUmtVbEQvRlFBQUFBQ0xUQ1JZaVVRa2NObEVKSERjCkRRQUFBQUNE
eEF5THhJbFVKR2lMVkNSUTJWd2taSWtJaVZBRWkwd2tWSXRVSkZpSlNBaUpVQXovRlFBQUFBRGRY
Q1FraTB3a0xJdFUKSkRDTHhJa0lpMHdrTklsUUJJdFVKRGlKU0FpSlVBei9GUUFBQUFEWVJDUmtn
OFFRM0Z3a0ZOL2c5c1FCZFVUWlJDUThnK3dRaThUZApYQ1FraVRDSmVBU0pXQWlKYUF6L0ZRQUFB
QURjYkNRa2k4U0pNTmhFSkZTSmVBU0pXQWlKYUF6WlhDUkUveFVBQUFBQTJWd2tQSVBFCkVJdE1K
Q3lMVkNRd2crd1FpOFNKQ0l0TUpFU0pVQVNMVkNSSWlVZ0lpVkFNL3hVQUFBQUEzVndrSkl0TUpD
eUxWQ1F3aThTSkNJdE0KSkRTSlVBU0xWQ1E0aVVnSWlWQU0veFVBQUFBQTJHUWtaSVBFRU54Y0pC
VGY0UGJFUVhvaGcrd1FpOFNKTUlsNEJJbFlDSWxvRFA4VgpBQUFBQU5oa0pEeUR4QkRaWENRMGkw
UWtVRkQvRlFBQUFBQ0Q3QXlMeElrd2lYZ0VpVmdJaVdnTS94VUFBQUFBMlZ3a1pJdkVpVENKCmVB
U0pXQWlKYUF6L0ZRQUFBQURjQlFBQUFBQ0x4SWt3M0FVQUFBQUFpWGdFaVZnSWlXZ00yVndrYVA4
VkFBQUFBSXRVSkdqWlhDUnMKMlFVQUFBQUFpM1FrWUZIWlhDUjAyUVVBQUFBQWkwd2thSXZFMlZ3
a0VJa0lpMHdrY0lsUUJJdFVKSFNKU0FoV2lWQU02QUFBQUFCVwoveFVBQUFBQW9RQUFBQUJRVnY4
VkFBQUFBSXRNSkZDTFZDUlVnOFFVaThTSkNJdE1KRVNKVUFTTFZDUklpVWdJVm9sUURQOFZBQUFB
CkFJUEVGRjllWFZ1RHhEekNGQUE5QUFBQU5nSUFBQVlBUlFBQUFETUNBQUFHQUVzQUFBQTJBZ0FB
QmdCZEFBQUFQZ0VBQUFZQVpRQUEKQURBQ0FBQUdBSk1BQUFBZEFnQUFGQURYQUFBQWFBRUFBQVlB
QWdFQUFGc0JBQUFHQUIwQkFBQVFBUUFBQmdCRUFRQUFhQUVBQUFZQQpYd0VBQUdrQkFBQUdBS0lC
QUFBdEFnQUFCZ0MwQVFBQVlBRUFBQVlBM2dFQUFGc0JBQUFHQUFVQ0FBQmJBUUFBQmdBMUFnQUFX
d0VBCkFBWUFWQUlBQUZzQkFBQUdBSUVDQUFBc0FnQUFCZ0NvQWdBQUxBSUFBQVlBMEFJQUFDd0NB
QUFHQU9ZQ0FBQURBZ0FBQmdEOEFnQUEKV3dFQUFBWUFFd01BQUJBQkFBQUdBQmtEQUFESUFRQUFC
Z0FqQXdBQXl3RUFBQVlBTmdNQUFHZ0JBQUFHQUVRREFBQXJBZ0FBQmdCVApBd0FBeEFBQUFBWUFk
Z01BQUc0QkFBQVVBSDBEQUFEL0FRQUFCZ0NDQXdBQU1BSUFBQVlBaWdNQUFDNEJBQUFHQUxFREFB
QXNBUUFBCkJnQUVBQUFBOVFBQUFHUUFBQUFBQUFBQUFBQUFBTUlEQUFBOEFBQUFGQUFBQUFBQUFB
QmJFd0FBRUFBSUFBUUFBQUFHQUFBQXZBTUEKQUR3QUFBQVVBQUFBQUFBQUFCMGNBQUFLQUF3QUFB
QUFBQW9BQUFDNEF3QUFQQUFBQUJRQUFBQUFBQUFBaGh3QUFBWUFFQUFBQUFBQQo4UUFBQUhZQ0FB
QlpBQkFSQUFBQUFBQUFBQUFBQUFBQXdnTUFBQkFBQUFDNEF3QUFEUmNBQUFBQUFBQUFBQUJOWldS
cFlWTm9ZWEpsClpGVkpWR2x0Wld4cGJtVlRiR2xrWlhJNk9taHBaMmhzYVdkb2RGVnViRzloWkdW
a1VtRnVaMlVBSEFBU0VEd0FBQUFBQUFBQUFBQUEKQUJBQUFBQUFBQUFBQUFBQUFnQUFEUUFHRVF3
WEFBQVNBSFJvYVhNQUVnQUxFUVFBQUFBcEVBQUFZMjl1ZEdWNGRBQVBBQXNSQ0FBQQpBQTRRQUFC
eVpXTjBBQm9BREJHMUV3QUFBQUFBQUFBQVozSmhlVVpwYkd4RGIyeHZjZ0FQQUFzUkNBQUFBRUFB
QUFCemJHOXdBQndBCkN4SEUvLy8vUVFBQUFHWnlZV04wYVc5dVVtVnRZV2x1YVc1bkFCVUFDeEhj
Ly8vL0RoQUFBR3h2WVdSbFpGSmxZM1FBRVFBTEVjei8KLy84T0VBQUFZbTkxYm1SekFBNEFPUkZi
QUFBQUFBQUFBSk1YQUFBT0FEa1IxUUFBQUFBQUFBQmlFZ0FBRGdBNUVRQUJBQUFBQUFBQQpZaElB
QUE0QU9SRWJBUUFBQUFBQUFHSVNBQUFPQURrUlFnRUFBQUFBQUFCaUVnQUFEZ0E1RVYwQkFBQUFB
QUFBWWhJQUFBNEFPUkdnCkFRQUFBQUFBQUhrWEFBQU9BRGtSM0FFQUFBQUFBQUJpRWdBQURnQTVF
UU1DQUFBQUFBQUFZaElBQUE0QU9SRXpBZ0FBQUFBQUFHSVMKQUFBT0FEa1JVZ0lBQUFBQUFBQmlF
Z0FBRGdBNUVYOENBQUFBQUFBQVloSUFBQTRBT1JHbUFnQUFBQUFBQUdJU0FBQU9BRGtSemdJQQpB
QUFBQUFCaUVnQUFEZ0E1RWVRQ0FBQUFBQUFBakJBQUFBNEFPUkg2QWdBQUFBQUFBR0lTQUFBT0FE
a1JFUU1BQUFBQUFBQmlFZ0FBCkRnQTVFVFFEQUFBQUFBQUFZaElBQUE0QU9SRjdBd0FBQUFBQUFJ
d1FBQUFPQURrUmlBTUFBQUFBQUFDUEZ3QUFEZ0E1RWE4REFBQUEKQUFBQWRSSUFBQUlBQmdBQUFQ
SUFBQUN3QUFBQUFBQUFBQUFBQUFEQ0F3QUFFQUlBQUJNQUFBQ2tBQUFBQUFBQUFHb0NBSUFEQUFB
QQphd0lBZ0NrQUFBQnNBZ0NBTmdBQUFHOENBSUJwQUFBQWNBSUFnSmNBQUFCeUFnQ0Fad0VBQUhN
Q0FJQ21BUUFBZFFJQWdCc0NBQUIyCkFnQ0FQUUlBQUhjQ0FJQmZBZ0FBZWdJQWdMNENBQUI3QWdD
QTN3SUFBSDBDQUlEcUFnQUFmZ0lBZ0RvREFBQi9BZ0NBZWdNQUFJRUMKQUlDQkF3QUFnZ0lBZ0k0
REFBQ0RBZ0NBdUFNQUFJUUNBSUFNQUFBQUtBSUFBQWNBbUFBQUFDZ0NBQUFMQUp3QUFBQW9BZ0FB
Q2dBdApBUUFBTUFJQUFBc0FNUUVBQURBQ0FBQUtBSjRCQUFBb0FnQUFDd0NpQVFBQUtBSUFBQW9B
cmdFQUFDZ0NBQUFMQUxJQkFBQW9BZ0FBCkNnQytBUUFBS0FJQUFBc0F3Z0VBQUNnQ0FBQUtBTTRC
QUFBb0FnQUFDd0RTQVFBQUtBSUFBQW9BM2dFQUFDZ0NBQUFMQU9JQkFBQW8KQWdBQUNnRHVBUUFB
S0FJQUFBc0E4Z0VBQUNnQ0FBQUtBUDRCQUFBb0FnQUFDd0FDQWdBQUtBSUFBQW9BRGdJQUFDZ0NB
QUFMQUJJQwpBQUFvQWdBQUNnQWVBZ0FBS0FJQUFBc0FJZ0lBQUNnQ0FBQUtBQzRDQUFBb0FnQUFD
d0F5QWdBQUtBSUFBQW9BUGdJQUFDZ0NBQUFMCkFFSUNBQUFvQWdBQUNnQk9BZ0FBS0FJQUFBc0FV
Z0lBQUNnQ0FBQUtBRjRDQUFBb0FnQUFDd0JpQWdBQUtBSUFBQW9BYmdJQUFDZ0MKQUFBTEFISUNB
QUFvQWdBQUNnQitBZ0FBS0FJQUFBc0FnZ0lBQUNnQ0FBQUtBSTRDQUFBb0FnQUFDd0NTQWdBQUtB
SUFBQW9BbmdJQQpBQ2dDQUFBTEFLSUNBQUFvQWdBQUNnQ3VBZ0FBS0FJQUFBc0FzZ0lBQUNnQ0FB
QUtBTDRDQUFBb0FnQUFDd0RDQWdBQUtBSUFBQW9BCnpnSUFBQ2dDQUFBTEFOSUNBQUFvQWdBQUNn
RGVBZ0FBS0FJQUFBc0E0Z0lBQUNnQ0FBQUtBUGdDQUFBb0FnQUFDd0Q4QWdBQUtBSUEKQUFvQUFB
QVFRUUFBZ0Q2RDdDeFRWVmE0QVFBQUFJUUZBQUFBQUl2eFY0bDBKQ0M3QWdBQUFIVkhDUVVBQUFB
QWhBVUFBQUFBZFJ3SgpCUUFBQUFDaEFBQUFBSXNJVWY4VkFBQUFBSVBFQktNQUFBQUFpeFVBQUFB
QVUyb0FhQUFBQUFCUy94VUFBQUFBZzhRUW93QUFBQUNFCkhRQUFBQUNMUFFBQUFBQjFJdGtGQUFB
QUFBa2RBQUFBQUlQc0NObGNKQVRaN3RrY0pQL1hnOFFJb3dBQUFBQzRCQUFBQUlRRkFBQUEKQUhV
aTJRVUFBQUFBQ1FVQUFBQUFnK3dJMlZ3a0JObm8yUndrLzllRHhBaWpBQUFBQUlzV2kxd2tSSXRz
SkVpTGRDUk1pM3drVUl0TQpKQ0NMVWhDRDdCQ0x4SWtZaVdnRWlYQUlpWGdNaTBRa1VGRC8wb1Bz
RUl2RWlSaUphQVNKY0FpSmVBei9GUUFBQUFEWlhDUThpOFNKCkdJbG9CSWx3Q0lsNERQOFZBQUFB
QU53RkFBQUFBSXZFaVJqY0JRQUFBQUNKYUFTSmNBaUplQXpaWENSQS94VUFBQUFBaTBRa1VObGMK
SkVUWkJRQUFBQUNMYkNSRWFnRFpYQ1JNaTF3a1RGTlZVUDhWQUFBQUFGQ0pSQ1E0L3hVQUFBQUFp
MHdrVUl0VUpGU0R4QlNKUkNRZwppOFNKQ0lsUUJJbG9DSWxZRFA4VkFBQUFBTm5naTFRa1FGR0xU
Q1JBMlZ3a0VJdkVpUWlKVUFTSmFBaUpXQXovRlFBQUFBRFo0SXRFCkpDVFpYQ1FNZzhRTVVQOFZB
QUFBQUlQc0NOa0ZBQUFBQUl0TUpFQ0xWQ1JFMlZ3a0VJdkVpUWlKVUFTSmFBaUpXQXlMUkNRa1VP
Z0EKQUFBQWkwd2tLRkgvRlFBQUFBQ0xWQ1JJaTB3a1RJUEVESXZFaVJDSlNBU0phQWlKV0F6L0ZR
QUFBQURaWENRb2kxUWtQSXRNSkVDTAp4SWtRaVVnRWlXZ0lpVmdNL3hVQUFBQUEyVndrTEl0VUpE
eUxUQ1JBaThTSkVJbElCSWxvQ0lsWURQOFZBQUFBQU5sY0pEU0xWQ1E4Cmkwd2tRSXZFaVJDSlNB
U0phQWlKV0F6L0ZRQUFBQURaWENRNGkxUWtMSXRFSkNpTFRDUTRhZ0JTaTFRa1BGQ2hBQUFBQUZH
TFRDUXcKVWxCUi94VUFBQUFBaTFRa2JHb0FWMVpTL3hVQUFBQUFVSWxFSkZqL0ZRQUFBQUNMakNT
RUFBQUFnOFJBZyt3UWlVUWtJSXZFaVFpTApWQ1JZaVZBRWlYQUlpWGdNL3hVQUFBQUEyZUNMVkNS
WVVZdE1KRmpaWENRUWk4U0pDSWxRQklsd0NJbDREUDhWQUFBQUFObmdpMFFrCkpObGNKQXlEeEF4
US94VUFBQUFBaTB3a0lJdFVKRGlEeEF4Umkwd2tOSVBzRUl2RWlSQ0xWQ1FraVVnRWlXZ0lVb2xZ
RFA4VkFBQUEKQU5udW9RQUFBQURaVkNRODJRVUFBQUFBaTFRa1BJUEVHTmxjSkNoUWkwUWtHRkdM
VENRdzJSd2tVWXRNSkRoU2kxUWtRRkNEN0JDTAp4SWtJaVZBRWlXZ0lpVmdNaTBRa05PZ0FBQUFB
aTBRa09GRC9GUUFBQUFEWjdvc05BQUFBQU5sVUpFelpCUUFBQUFDTFJDUk1nOFFvCjJWd2tLSXRV
SkNoUlVZdE1KQ0RaSENSU1VGR0Q3QkNMeEl0c0pHaUxWQ1JzaTF3a1pJa29pVkFFaVhBSWlYZ01p
OFBvQUFBQUFJdEUKSkR5TFRDUnNnOFFrVUlQc0VJdkVpU2lKU0FTSmNBaFRpWGdNL3hVQUFBQUFp
MVFrTUZML0ZRQUFBQUNMVENSa2c4UU1pOFNKS0lsSQpCSWx3Q0l0MEpEQlRpODZKZUF6b0FBQUFB
SXNXaTBJVVU0dk8vOUJmWGwxYmc4UXN3aFFBRFFBQUFGQUNBQUFHQUNFQUFBQlFBZ0FBCkJnQW5B
QUFBSXdFQUFBWUFMd0FBQUNNQkFBQUdBRFFBQUFBZ0FRQUFCZ0E5QUFBQUh3RUFBQVlBUlFBQUFC
NEJBQUFHQUVzQUFBQWUKQVFBQUJnQlRBQUFBVFFJQUFBWUFXZ0FBQUJzQkFBQUdBR0lBQUFCS0Fn
QUFCZ0JvQUFBQVVBSUFBQVlBYmdBQUFENEJBQUFHQUhZQQpBQUJIQWdBQUJnQjhBQUFBVUFJQUFB
WUFrZ0FBQUVRQ0FBQUdBSjBBQUFCUUFnQUFCZ0NsQUFBQVFRSUFBQVlBcXdBQUFGQUNBQUFHCkFN
RUFBQUErQWdBQUJnQUhBUUFBV3dFQUFBWUFIZ0VBQUJBQkFBQUdBQ1FCQUFESUFRQUFCZ0F1QVFB
QXl3RUFBQVlBUVFFQUFHZ0IKQUFBR0FFOEJBQUFyQWdBQUJnQm1BUUFBM2dBQUFBWUFjUUVBQU4w
QUFBQUdBSk1CQUFBUUFRQUFCZ0MxQVFBQVd3RUFBQVlBeVFFQQpBUElBQUFBR0FOSUJBQURFQUFB
QUJnRDFBUUFBYmdFQUFCUUFBQUlBQVA4QkFBQUdBQjRDQUFCWkFRQUFCZ0E5QWdBQUVRRUFBQVlB
ClhBSUFBRmtCQUFBR0FIc0NBQUFRQVFBQUJnQ1lBZ0FBU2dJQUFBWUFwZ0lBQUZnQkFBQUdBTFVD
QUFEZUFBQUFCZ0RBQWdBQTNRQUEKQUFZQTZBSUFBQkFCQUFBR0FBb0RBQUJiQVFBQUJnQWVBd0FB
OGdBQUFBWUFTUU1BQVBzQUFBQUdBRkFEQUFCRUFnQUFCZ0JhQXdBQQpPZ0VBQUFZQWxnTUFBQ2dC
QUFBVUFLRURBQUQrQVFBQUJnQ3BBd0FBUGdJQUFBWUFzd01BQURvQkFBQUdBUEVEQUFBSkFRQUFG
QUFVCkJBQUErd0FBQUFZQUh3UUFBUDRCQUFBR0FEOEVBQUFvQWdBQUZBQUVBQUFBOVFBQUFHUUFB
QUFBQUFBQUFBQUFBRmNFQUFBc0FBQUEKRkFBQUFBQUFBQUJiRXdBQUdBQUlBQVFBQUFBRUFBQUFV
d1FBQUN3QUFBQVVBQUFBQUFBQUFGOFdBQUFVQUF3QUFBQUFBQVVBQUFCUwpCQUFBTEFBQUFCUUFB
QUFBQUFBQUFSMEFBQk1BRUFBQUFBQUE4UUFBQUVVREFBQklBQkFSQUFBQUFBQUFBQUFBQUFBQVZ3
UUFBQmdBCkFBQk5CQUFBQ1JjQUFBQUFBQUFBQUFCTlpXUnBZVk5vWVhKbFpGVkpWR2x0Wld4cGJt
VlRiR2xrWlhJNk9uQmhhVzUwQUJ3QUVoQXMKQUFBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQUFBQUFB
SUFBQTBBQmhFSUZ3QUFFZ0IwYUdsekFCSUFDeEVFQUFBQUtSQUFBR052Ym5SbAplSFFBRHdBTEVR
Z0FBQUFPRUFBQWNtVmpkQUFmQUF3UmhCY0FBQUFBQUFBQUFHSmhZMnRuY205MWJtUkhjbUZrYVdW
dWRBQVlBQXdSCnRSTUFBQUFBQUFBQUFITm9ZV1J2ZDBOdmJHOXlBQmdBQ3hIVS8vLy9iUklBQUdk
eVlXUnBaVzUwVEdGNVpYSUFHZ0FMRWRELy8vOHAKRUFBQVozSmhaR2xsYm5SRGIyNTBaWGgwQUJj
QUN4SFkvLy8vYlJJQUFHNXZiV2x1WVd4TVlYbGxjZ0FUQUF3UkJoRUFBQUFBQUFBQQpBR052Ykc5
eWN3QVhBQXNSMFAvLy95a1FBQUJzWVhsbGNrTnZiblJsZUhRQUd3QU1FYlVUQUFBQUFBQUFBQUJv
YVdkb2JHbG5hSFJECmIyeHZjZ0FPQURrUk93QUFBQUFBQUFDQ0Z3QUFEZ0E1RVZnQUFBQUFBQUFB
aGhjQUFBNEFPUkdNQUFBQUFBQUFBSk1YQUFBT0FEa1IKdXdBQUFBQUFBQUNURndBQURnQTVFZk1B
QUFBQUFBQUFPaEFBQUE0QU9SRUZBUUFBQUFBQUFHSVNBQUFPQURrUkhBRUFBQUFBQUFCaQpFZ0FB
RGdBNUVUOEJBQUFBQUFBQVloSUFBQTRBT1JGa0FRQUFBQUFBQUhJU0FBQU9BRGtSYndFQUFBQUFB
QUIwRWdBQURnQTVFWkVCCkFBQUFBQUFBWWhJQUFBNEFPUkd6QVFBQUFBQUFBR0lTQUFBT0FEa1J4
d0VBQUFBQUFBQmdFZ0FBRGdBNUVmNEJBQUFBQUFBQWpCQUEKQUE0QU9SRWNBZ0FBQUFBQUFHSVNB
QUFPQURrUk93SUFBQUFBQUFCaUVnQUFEZ0E1RVZvQ0FBQUFBQUFBWWhJQUFBNEFPUkY1QWdBQQpB
QUFBQUdJU0FBQU9BRGtScEFJQUFBQUFBQUNrRndBQURnQTVFYk1DQUFBQUFBQUFjaElBQUE0QU9S
RytBZ0FBQUFBQUFIUVNBQUFPCkFEa1I1Z0lBQUFBQUFBQmlFZ0FBRGdBNUVRZ0RBQUFBQUFBQVlo
SUFBQTRBT1JFY0F3QUFBQUFBQUdBU0FBQU9BRGtSUndNQUFBQUEKQUFCM0VnQUFEZ0E1RVo4REFB
QUFBQUFBZUJJQUFBNEFPUkVTQkFBQUFBQUFBSGNTQUFBT0FEa1JIUVFBQUFBQUFBQjRFZ0FBRGdB
NQpFVXNFQUFBQUFBQUFQQkFBQUFJQUJnQUFBQUR5QUFBQTJBQUFBQUFBQUFBQUFBQUFWd1FBQUJB
Q0FBQVlBQUFBekFBQUFBQUFBQUNICkFnQ0FCZ0FBQUlrQ0FJQm1BQUFBaWdJQWdKWUFBQUNMQWdD
QXhRQUFBSTBDQUlEMUFBQUFqd0lBZ0VVQkFBQ1JBZ0NBYWdFQUFKSUMKQUlCMUFRQUFsQUlBZ00w
QkFBQ1dBZ0NBK1FFQUFKZ0NBSUFFQWdBQW13SUFnS29DQUFDZEFnQ0F1UUlBQUo0Q0FJREVBZ0FB
b0FJQQpnQ0lEQUFDaUFnQ0FUUU1BQUtRQ0FJQ2FBd0FBcGdJQWdLVURBQUNvQWdDQTlRTUFBS29D
QUlBWUJBQUFyQUlBZ0NNRUFBQ3VBZ0NBClF3UUFBTEFDQUlCTkJBQUFzUUlBZ0F3QUFBQTdBZ0FB
QndDWUFBQUFPd0lBQUFzQW5BQUFBRHNDQUFBS0FCd0JBQUJLQWdBQUN3QWcKQVFBQVNnSUFBQW9B
UFFFQUFFUUNBQUFMQUVFQkFBQkVBZ0FBQ2dDbUFRQUFUUUlBQUFzQXFnRUFBRTBDQUFBS0FOUUJB
QUErQWdBQQpDd0RZQVFBQVBnSUFBQW9BN1FFQUFEc0NBQUFMQVBFQkFBQTdBZ0FBQ2dEOUFRQUFP
d0lBQUFzQUFRSUFBRHNDQUFBS0FBMENBQUE3CkFnQUFDd0FSQWdBQU93SUFBQW9BSFFJQUFEc0NB
QUFMQUNFQ0FBQTdBZ0FBQ2dBdEFnQUFPd0lBQUFzQU1RSUFBRHNDQUFBS0FEMEMKQUFBN0FnQUFD
d0JCQWdBQU93SUFBQW9BVFFJQUFEc0NBQUFMQUZFQ0FBQTdBZ0FBQ2dCZEFnQUFPd0lBQUFzQVlR
SUFBRHNDQUFBSwpBRzBDQUFBN0FnQUFDd0J4QWdBQU93SUFBQW9BZlFJQUFEc0NBQUFMQUlFQ0FB
QTdBZ0FBQ2dDTkFnQUFPd0lBQUFzQWtRSUFBRHNDCkFBQUtBSjBDQUFBN0FnQUFDd0NoQWdBQU93
SUFBQW9BclFJQUFEc0NBQUFMQUxFQ0FBQTdBZ0FBQ2dDOUFnQUFPd0lBQUFzQXdRSUEKQURzQ0FB
QUtBTTBDQUFBN0FnQUFDd0RSQWdBQU93SUFBQW9BM1FJQUFEc0NBQUFMQU9FQ0FBQTdBZ0FBQ2dE
dEFnQUFPd0lBQUFzQQo4UUlBQURzQ0FBQUtBUDBDQUFBN0FnQUFDd0FCQXdBQU93SUFBQW9BRFFN
QUFEc0NBQUFMQUJFREFBQTdBZ0FBQ2dBZEF3QUFPd0lBCkFBc0FJUU1BQURzQ0FBQUtBQzBEQUFB
N0FnQUFDd0F4QXdBQU93SUFBQW9BUFFNQUFEc0NBQUFMQUVFREFBQTdBZ0FBQ2dCTkF3QUEKT3dJ
QUFBc0FVUU1BQURzQ0FBQUtBRjBEQUFBN0FnQUFDd0JoQXdBQU93SUFBQW9BYlFNQUFEc0NBQUFM
QUhFREFBQTdBZ0FBQ2dCOQpBd0FBT3dJQUFBc0FnUU1BQURzQ0FBQUtBSTBEQUFBN0FnQUFDd0NS
QXdBQU93SUFBQW9BblFNQUFEc0NBQUFMQUtFREFBQTdBZ0FBCkNnQ3RBd0FBT3dJQUFBc0FzUU1B
QURzQ0FBQUtBTWdEQUFBN0FnQUFDd0RNQXdBQU93SUFBQW9BQ3RlalBYc1VMai9oNE9BOG1wbVoK
UGdOZmJqd2xCaUUvZyt3Z1UxVld1QUVBQUFDRUJRQUFBQUNMOFZlSmRDUVVkVWdKQlFBQUFBQ0VC
UUFBQUFCMUhBa0ZBQUFBQUtFQQpBQUFBaXdoUi94VUFBQUFBZzhRRW93QUFBQUNMRlFBQUFBQnFB
Mm9BYUFBQUFBQlMveFVBQUFBQWc4UVFvd0FBQUFDNEFnQUFBSVFGCkFBQUFBSFVtMlFVQUFBQUFD
UVVBQUFBQWcrd0kyVndrQk5ubzJSd2sveFVBQUFBQWc4UUlvd0FBQUFDTEZvdDhKRGlMWENROGky
d2sKUUl0MEpFU0xUQ1FVaTFJUWcrd1FpOFNKT0lsWUJJbG9DSWx3REl0RUpFUlEvOUpxQUlQc0VJ
dkVpVGlKV0FTSmFBaUpjQXlMUkNSSQo2QUFBQUFCUWlVUWtLUDhWQUFBQUFJdndWdjhWQUFBQUFO
a0ZBQUFBQUl0TUpHRFpYQ1FZZzhRSWk4U0pPSWxZQklsb0NGYUpTQXpvCkFBQUFBRmIvRlFBQUFB
Q0xWQ1JnZzhRTWk4U0pPSWxZQklsb0NJbFFEUDhWQUFBQUFObGNKQ2paN290TUpGU0x4TmxjSkN5
Sk9JbFkKQklsb0NJbElEUDhWQUFBQUFObGNKRENMVkNRczJlNkxSQ1FvMlZ3a05JdE1KRFJxQUZL
TFZDUTRVS0VBQUFBQVVWSlFWdjhWQUFBQQpBRmIvRlFBQUFBQ0R4QmpaQlFBQUFBQ0xUQ1JjMlZR
a0ZJdkUyVndrRUlrNGlWZ0VqVlFrT0lsb0NGS0pTQXovRlFBQUFBRFpCUUFBCkFBQ0xFTmxjSkJp
RHhBaUx6SWtSaTFBRWlWRUVpMUFJaTBBTWlWRUlWb2xCRE9nQUFBQUEyUVVBQUFBQWc4UVEyVndr
Qk5udTJSd2sKVnY4VkFBQUFBTm5vZzhRSTJSd2tWdjhWQUFBQUFGYi9GUUFBQUFEWjdvc05BQUFB
QU5sVUpDelpCUUFBQUFDTFJDUXNpM1FrUU5sYwpKRENMVkNRd2c4UU1VVkdMVENRWTJSd2tVb3RV
SkZCUVVZUHNFSXZFaVRpSldBU0phQWlKVUF5THh1Z0FBQUFBaTBRa05JdE1KR2lECnhDUlFnK3dR
aThTSk9JbFlCSWxvQ0ZhSlNBei9GUUFBQUFDTFZDUW9VdjhWQUFBQUFJUEVISXRNSkJTTEFZdFFG
RmIvMGw5ZVhWdUQKeENEQ0ZBQU5BQUFBYUFJQUFBWUFIQUFBQUdnQ0FBQUdBQ0lBQUFBakFRQUFC
Z0FxQUFBQUl3RUFBQVlBTHdBQUFDQUJBQUFHQURnQQpBQUFmQVFBQUJnQkFBQUFBSGdFQUFBWUFS
Z0FBQUI0QkFBQUdBRThBQUFCbEFnQUFCZ0JXQUFBQUd3RUFBQVlBWGdBQUFHSUNBQUFHCkFHa0FB
QUJvQWdBQUJnQnhBQUFBTXdJQUFBWUFkd0FBQUdnQ0FBQUdBSWtBQUFBK0FRQUFCZ0NSQUFBQVh3
SUFBQVlBM0FBQUFQRUEKQUFBVUFPY0FBQURkQUFBQUJnRHdBQUFBRlFFQUFBWUE5Z0FBQU1RQUFB
QUdBQlFCQUFCdUFRQUFGQUFiQVFBQS93RUFBQVlBTlFFQQpBQ3dDQUFBR0FGWUJBQUJiQVFBQUJn
QjVBUUFBWWdJQUFBWUFnd0VBQUZnQkFBQUdBSW9CQUFBS0FRQUFCZ0NUQVFBQVRnRUFBQVlBCnR3
RUFBRndDQUFBR0FMMEJBQURFQUFBQUJnRGlBUUFBYmdFQUFCUUE2QUVBQUZzQ0FBQUdBUHNCQUFC
WUFnQUFCZ0FLQWdBQVZ3SUEKQUFZQUVRSUFBRllDQUFBR0FCa0NBQUJmQWdBQUJnQWpBZ0FBT2dF
QUFBWUFYUUlBQUFrQkFBQVVBSUFDQUFEN0FBQUFCZ0NMQWdBQQovZ0VBQUFZQUJBQUFBUFVBQUFC
a0FBQUFBQUFBQUFBQUFBQ29BZ0FBSUFBQUFCUUFBQUFBQUFBQVd4TUFBQmdBQ0FBRUFBQUFCQUFB
CkFLUUNBQUFnQUFBQUZBQUFBQUFBQUFCOEhRQUFGQUFNQUFBQUFBQUZBQUFBb3dJQUFDQUFBQUFV
QUFBQUFBQUFBT1VkQUFBVEFCQUEKQUFBQUFQRUFBQUFxQWdBQVJnQVFFUUFBQUFBQUFBQUFBQUFB
QUtnQ0FBQVlBQUFBbmdJQUFDMFhBQUFBQUFBQUFBQUFUV1ZrYVdGVAphR0Z5WldSVlNWWnZiSFZ0
WlZOc2FXUmxjam82Y0dGcGJuUUFIQUFTRUNBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQUFBQUFB
Z0FBCkRRQUdFU3dYQUFBU0FIUm9hWE1BRWdBTEVRUUFBQUFwRUFBQVkyOXVkR1Y0ZEFBUEFBc1JD
QUFBQUE0UUFBQnlaV04wQUI4QURCR0UKRndBQUFBQUFBQUFBWW1GamEyZHliM1Z1WkVkeVlXUnBa
VzUwQUJjQUN4SGMvLy8vYlJJQUFHNXZiV2x1WVd4TVlYbGxjZ0FUQUF3Ugp5UmNBQUFBQUFBQUFB
R052Ykc5eWN3QWJBQXdSdFJNQUFBQUFBQUFBQUdocFoyaHNhV2RvZEVOdmJHOXlBQTRBT1JFMkFB
QUFBQUFBCkFJSVhBQUFPQURrUlZBQUFBQUFBQUFDR0Z3QUFEZ0E1RVljQUFBQUFBQUFBa3hjQUFB
NEFPUkhEQUFBQUFBQUFBRG9RQUFBT0FEa1IKNVFBQUFBQUFBQUIwRWdBQURnQTVFZTRBQUFBQUFB
QUFqQkFBQUE0QU9SRVpBUUFBQUFBQUFJd1FBQUFPQURrUk13RUFBQUFBQUFCaQpFZ0FBRGdBNUVW
UUJBQUFBQUFBQVloSUFBQTRBT1JHQkFRQUFBQUFBQUtRWEFBQU9BRGtSaUFFQUFBQUFBQUNNRUFB
QURnQTVFYlVCCkFBQUFBQUFBeUJjQUFBNEFPUkg1QVFBQUFBQUFBR0FTQUFBT0FEa1JDQUlBQUFB
QUFBQ0pFd0FBRGdBNUVROENBQUFBQUFBQWpCQUEKQUE0QU9SRitBZ0FBQUFBQUFIY1NBQUFPQURr
UmlRSUFBQUFBQUFCNEVnQUFEZ0E1RVp3Q0FBQUFBQUFBUEJBQUFBSUFCZ0FBQVBJQQpBQUM0QUFB
QUFBQUFBQUFBQUFDb0FnQUFFQUlBQUJRQUFBQ3NBQUFBQUFBQUFMVUNBSUFHQUFBQXR3SUFnR0lB
QUFDNEFnQ0FsUUFBCkFMb0NBSURGQUFBQXZBSUFnT0FBQUFDOUFnQ0E3UUFBQUw4Q0FJRDBBQUFB
d0FJQWdCZ0JBQURCQWdDQUh3RUFBTUlDQUlDSEFRQUEKd3dJQWdJNEJBQURGQWdDQTVnRUFBTVlD
QUlEL0FRQUF4d0lBZ0E0Q0FBRElBZ0NBRlFJQUFNb0NBSUJoQWdBQXpBSUFnSVFDQUFETwpBZ0NB
a2dJQUFOQUNBSUNlQWdBQTBRSUFnQXdBQUFCVkFnQUFCd0NZQUFBQVZRSUFBQXNBbkFBQUFGVUNB
QUFLQUJvQkFBQmlBZ0FBCkN3QWVBUUFBWWdJQUFBb0FWQUVBQUdVQ0FBQUxBRmdCQUFCbEFnQUFD
Z0JwQVFBQVh3SUFBQXNBYlFFQUFGOENBQUFLQUlJQkFBQlYKQWdBQUN3Q0dBUUFBVlFJQUFBb0Fr
Z0VBQUZVQ0FBQUxBSllCQUFCVkFnQUFDZ0NpQVFBQVZRSUFBQXNBcGdFQUFGVUNBQUFLQUxJQgpB
QUJWQWdBQUN3QzJBUUFBVlFJQUFBb0F3Z0VBQUZVQ0FBQUxBTVlCQUFCVkFnQUFDZ0RTQVFBQVZR
SUFBQXNBMWdFQUFGVUNBQUFLCkFPSUJBQUJWQWdBQUN3RG1BUUFBVlFJQUFBb0E4Z0VBQUZVQ0FB
QUxBUFlCQUFCVkFnQUFDZ0FDQWdBQVZRSUFBQXNBQmdJQUFGVUMKQUFBS0FCSUNBQUJWQWdBQUN3
QVdBZ0FBVlFJQUFBb0FJZ0lBQUZVQ0FBQUxBQ1lDQUFCVkFnQUFDZ0F5QWdBQVZRSUFBQXNBTmdJ
QQpBRlVDQUFBS0FFSUNBQUJWQWdBQUN3QkdBZ0FBVlFJQUFBb0FVZ0lBQUZVQ0FBQUxBRllDQUFC
VkFnQUFDZ0JpQWdBQVZRSUFBQXNBClpnSUFBRlVDQUFBS0FISUNBQUJWQWdBQUN3QjJBZ0FBVlFJ
QUFBb0FnZ0lBQUZVQ0FBQUxBSVlDQUFCVkFnQUFDZ0NTQWdBQVZRSUEKQUFzQWxnSUFBRlVDQUFB
S0FLd0NBQUJWQWdBQUN3Q3dBZ0FBVlFJQUFBb0FBQUJnUDQvQ2RUMmFtVmsvN0ZHNFBacVpXVCtQ
d25VOQptcGxaUDFPTFhDUVFWWXRzSkJoV2kzUWtFRmVMZkNRWWcrd1FpOFNKTUlsNEJJbFlDSWxv
RFA4VkFBQUFBTmxjSkNTTHhJa3dpWGdFCmlWZ0lpV2dNL3hVQUFBQUEyVndrS05sRUpEU0R4QkRZ
WkNRVTJVUWtLTmhrSkJqY3lObkIzc3Jld2R3ZEFBQUFBTi9nOXNSQmVneTQKQVFBQUFGOWVYVnZD
R0FCZlhsMHp3RnZDR0FBbUFBQUFXUUVBQUFZQVBRQUFBUElCQUFBR0FHSUFBQUR4QVFBQUJnQUVB
QUFBOVFBQQpBR1FBQUFBQUFBQUFBQUFBQUlJQUFBQUFBQUFBR0FBQUFBQUFBQUJiRXdBQUVBQUlB
QVFBQUFBQkFBQUFnUUFBQUFBQUFBQVlBQUFBCkFBQUFBRmdhQUFBUEFBd0FBQUFBQUFZQUFBQjhB
QUFBQUFBQUFCZ0FBQUFBQUFBQXdCb0FBQW9BRUFBQUFBQUE4UUFBQU1vQUFBQlUKQUJBUkFBQUFB
QUFBQUFBQUFBQUFnZ0FBQUJBQUFBQjVBQUFBUXhjQUFBQUFBQUFBQUFCTlpXUnBZVk5vWVhKbFpG
VkpWbTlzZFcxbApVMnhwWkdWeVZHaDFiV0pGYkdWdFpXNTBPanBvYVhSVVpYTjBBQndBRWhBQUFB
QUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFBQUFBQUlBCkFBMEFCaEZCRndBQUVnQjBhR2x6QUE4QUN4
RUVBQUFBRGhBQUFISmxZM1FBRUFBTEVSUUFBQUFJRUFBQWNHOXBiblFBRGdBNUVTUUEKQUFBQUFB
QUFZaElBQUE0QU9SRTdBQUFBQUFBQUFHSVNBQUFDQUFZQUFBRHlBQUFBT0FBQUFBQUFBQUFBQUFB
QWdnQUFBQkFDQUFBRQpBQUFBTEFBQUFBQUFBQURVQWdDQUFRQUFBTlVDQUlCRkFBQUExZ0lBZ0hJ
QUFBRFhBZ0NBREFBQUFHMENBQUFIQUpnQUFBQnRBZ0FBCkN3Q2NBQUFBYlFJQUFBb0FJZ0VBQUcw
Q0FBQUxBQ1lCQUFCdEFnQUFDZ0F5QVFBQWJRSUFBQXNBTmdFQUFHMENBQUFLQUV3QkFBQnQKQWdB
QUN3QlFBUUFBYlFJQUFBb0FnK3dJMlFVQUFBQUFpMFFrRE5rVUpJc01KTmxjSkFTTFZDUUVpUWpa
QU53RkFBQUFBSWxRQk5rWQpnOFFJd2dRQUJRQUFBQ1VBQUFBR0FDRUFBQURJQVFBQUJnQUVBQUFB
OVFBQUFDUUFBQUFBQUFBQUFBQUFBREFBQUFBSUFBQUFCQUFBCkFBQUFBQUJiRXdBQUF3QUFBQVFB
QUFEeEFBQUFpd0FBQUZnQUVCRUFBQUFBQUFBQUFBQUFBQUF3QUFBQUF3QUFBQ29BQUFCQ0Z3QUEK
QUFBQUFBQUFBRTFsWkdsaFUyaGhjbVZrVlVsV2IyeDFiV1ZUYkdsa1pYSlVhSFZ0WWtWc1pXMWxi
blE2T201aGRIVnlZV3hUYVhwbApBQndBRWhBSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUlBQUEwQUJoRkJGd0FBRWdCMGFHbHpBQUlBQmdBQThnQUFBRGdBCkFBQUFBQUFBQUFBQUFEQUFB
QUFRQWdBQUJBQUFBQ3dBQUFBQUFBQUEyZ0lBZ0FNQUFBRGJBZ0NBSFFBQUFOMENBSUFxQUFBQTRB
SUEKZ0F3QUFBQnlBZ0FBQndCWUFBQUFjZ0lBQUFzQVhBQUFBSElDQUFBS0FNd0FBQUJ5QWdBQUN3
RFFBQUFBY2dJQUFBb0FnK3d3OWdVQQpBQUFBQVZOVlZvczFBQUFBQUl2WlY0czlBQUFBQUlsY0pC
aTlBUUFBQUhWQkNTMEFBQUFBOWdVQUFBQUFBWFVZb1FBQUFBQ0xDQWt0CkFBQUFBRkgvMW9QRUJL
TUFBQUFBaXhVQUFBQUFhZ0pxQUdnQUFBQUFVdi9YZzhRUW93QUFBQUQyQlFBQUFBQUNkVUtERFFB
QUFBQUMKOWdVQUFBQUFBWFVZb1FBQUFBQ0xDQWt0QUFBQUFGSC8xb1BFQktNQUFBQUFpeFVBQUFB
QWFnSnFBR2dBQUFBQVV2L1hnOFFRb3dBQQpBQUNMTlFBQUFBQzRCQUFBQUlRRkFBQUFBSFVpMlFV
QUFBQUFDUVVBQUFBQWcrd0kyVndrQk5ubzJSd2svOWFEeEFpakFBQUFBTGdJCkFBQUFoQVVBQUFB
QWRTTFpCUUFBQUFBSkJRQUFBQUNEN0FqWlhDUUUyZWpaSENULzFvUEVDS01BQUFBQXVCQUFBQUNF
QlFBQUFBQjEKSXRrRkFBQUFBQWtGQUFBQUFJUHNDTmxjSkFUWjd0a2NKUC9XZzhRSW93QUFBQUNM
RTR0OEpFaUxYQ1JNaTJ3a1VJdDBKRlNMVENRWQppMUlRZyt3UWk4U0pPSWxZQklsb0NJbHdESXRF
SkZSUS85S0Q3QkNMeElrNGlWZ0VpV2dJaVhBTS94VUFBQUFBMlZ3a09JdkVpVGlKCldBU0phQWlK
Y0F6L0ZRQUFBQURaWENROGc4UVFhZ0NEN0JDTHhJazRpVmdFaVdnSWlYQU1pMFFrV09nQUFBQUFV
SWxFSkN6L0ZRQUEKQUFCUWlVUWtMUDhWQUFBQUFObEVKRWlMUkNRczJWd2tHTmxFSkVTRHhCVGNC
UUFBQUFEWlhDUWsyVVFrSk5rY0pGRC9GUUFBQUFCUgppOFNKT0lsWUJJbG9DSWx3RFA4VkFBQUFB
TmxjSkN5THhJazRpVmdFaVdnSWlYQU0veFVBQUFBQTJWd2tNTmxFSkN5RHhCRFpSQ1FnCjJOSGY0
UGJFUVhVRTNkanJBdDNaMlZ3a0hJUHNFTmxFSkN5THhOd05BQUFBQU5sY0pERFpSQ1E0MlVRa01O
bkEzdXJaeWRsY0pFQ0wKVENSQTJVUWtQSWtJMk9IWlhDUkVpMVFrUklsUUJOekEyVndrTU5sRUpE
RFpWQ1JJaTB3a1NObGNKRXlMVkNSTWlVZ0lpVkFNaTBRawpJRkQvRlFBQUFBQ0xUQ1FrVWY4VkFB
QUFBSXRVSkNoUy94VUFBQUFBZzhRTWk4U0pPSWxZQklsb0NJbHdEUDhWQUFBQUFObGNKRGlMCnhJ
azRpVmdFaVdnSWlYQU0veFVBQUFBQTJWd2tQSXZFaVRpSldBU0phQWlKY0F6L0ZRQUFBQURaWENR
d2k4U0pPSWxZQklsb0NJbHcKRFA4VkFBQUFBTmxjSkRTTFJDUW9pMGdJb1FBQUFBRFI2WVBFRVBi
QkFYVUZvUUFBQUFDTFZDUXNpMHdrS0dvQVVvdFVKQ3hSaTB3awpMRktMVkNRZ1VWQlMveFVBQUFB
QWc4UWNhZ0NEN0JDTHhJazRpVmdFaVdnSWlYQU1pMFFrV09nQUFBQUFVSWxFSkNqL0ZRQUFBQUNM
ClRDUXNnOFFZVVlQc0VJdk1pVG1KV1FTSmFRaFFpVVFrTklseERQOFZBQUFBQU5udWl4VUFBQUFB
MlZRa1FOa0ZBQUFBQUlQRUdGTFoKWENRd2kwUWtNSXRVSkJoUmkwd2tNTmtjSkZCUlVvUHNFSXZF
aVRpSldBU0phQWlKY0F5TFJDUkE2QUFBQUFEWjdxRUFBQUFBMlZRawpUTm5vaTFRa1RJUEVKTmxj
SkN4UWkwUWtHRkdMVENRMDJSd2tVVkpRZyt3UWk4U0pPSWxZQklsb0NJbHdESXRFSkVEb0FBQUFB
SXRNCkpEaFIveFVBQUFBQTJlNkxGUUFBQUFEWlhDUlEyUVVBQUFBQWc4UW9VdGxjSkREWjZJdEVK
RENMVkNRVVVka2NKSXRNSkRCUVVWS0QKN0JDTHhJazRpVmdFaVdnSWlYQU1pMFFrYU9nQUFBQUFp
MFFrUEl0SUNNSHBCSVBFSlBiQkFYUWtnK3dRaThTSk9JbFlCSWxvQ0lsdwpESXQwSkNDTFJDUlU2
QUFBQUFDTGRDUmtnOFFRaTFRa0VGS0Q3QkNMeElrNGlWZ0VpV2dJaVhBTWkzUWtXRmIvRlFBQUFB
Q0xSQ1FvClVQOFZBQUFBQUl0TUpEU0xFWXRDRklQRUhGYi8wRjllWFZ1RHhERENGQUFGQUFBQWt3
SUFBQVlBRHdBQUFCOEJBQUFHQUJnQUFBQWIKQVFBQUJnQXBBQUFBa3dJQUFBWUFMd0FBQUNNQkFB
QUdBRGNBQUFBZ0FRQUFCZ0EvQUFBQUl3RUFBQVlBU2dBQUFCNEJBQUFHQUZBQQpBQUFlQVFBQUJn
QlpBQUFBa0FJQUFBWUFaQUFBQUkwQ0FBQUdBR29BQUFDVEFnQUFCZ0J6QUFBQWt3SUFBQVlBZWdB
QUFDTUJBQUFHCkFJSUFBQUFnQVFBQUJnQ0tBQUFBSXdFQUFBWUFsUUFBQUI0QkFBQUdBSnNBQUFB
ZUFRQUFCZ0NrQUFBQWlnSUFBQVlBcndBQUFJY0MKQUFBR0FMVUFBQUErQVFBQUJnREFBQUFBa3dJ
QUFBWUF5QUFBQUU0QkFBQUdBTTRBQUFDVEFnQUFCZ0RrQUFBQWhBSUFBQVlBN3dBQQpBSk1DQUFB
R0FQY0FBQUNCQWdBQUJnRDlBQUFBa3dJQUFBWUFFd0VBQUg0Q0FBQUdBQjRCQUFDVEFnQUFCZ0Ft
QVFBQVFRRUFBQVlBCkxBRUFBSk1DQUFBR0FFSUJBQUI3QWdBQUJnQ0lBUUFBV1FFQUFBWUFud0VB
QVBJQkFBQUdBTUVCQUFEeEFBQUFGQURNQVFBQTNRQUEKQUFZQTF3RUFBQU1DQUFBR0FQQUJBQUFq
QWdBQUJnQUNBZ0FBQWdJQUFBWUFGZ0lBQUdnQkFBQUdBQzBDQUFCcEFRQUFCZ0JlQWdBQQpZQUVB
QUFZQXRnSUFBSGdDQUFBR0FNRUNBQUFBQWdBQUJnRE1BZ0FBL3dFQUFBWUE0Z0lBQUZrQkFBQUdB
UGtDQUFBUkFRQUFCZ0FRCkF3QUFXUUVBQUFZQUp3TUFBQkFCQUFBR0FEY0RBQUNOQWdBQUJnQkdB
d0FBaHdJQUFBWUFhQU1BQUZnQkFBQUdBSVlEQUFEeEFBQUEKRkFDUkF3QUEzUUFBQUFZQXRBTUFB
UHNBQUFBR0FMd0RBQUNFQWdBQUJnREdBd0FBT2dFQUFBWUErZ01BQUNnQkFBQVVBQUVFQUFCKwpB
Z0FBQmdBN0JBQUFLQUVBQUJRQVJnUUFBUDRCQUFBR0FFNEVBQUI3QWdBQUJnQllCQUFBT2dFQUFB
WUFqZ1FBQUFrQkFBQVVBTDBFCkFBQkpBUUFBRkFEa0JBQUErd0FBQUFZQTd3UUFBUDRCQUFBR0FB
UUFBQUQxQUFBQVpBQUFBQUFBQUFBQUFBQUFEQVVBQURBQUFBQVUKQUFBQUFBQUFBRnNUQUFBZ0FB
Z0FCQUFBQUFzQUFBQUJCUUFBTUFBQUFCUUFBQUFBQUFBQU9Sc0FBQlVBREFBQUFBQUFEQUFBQUFB
RgpBQUF3QUFBQUZBQUFBQUFBQUFDaUd3QUFGQUFRQUFBQUFBRHhBQUFBNGdNQUFGSUFFQkVBQUFB
QUFBQUFBQUFBQUFBTUJRQUFJQUFBCkFBSUZBQUEvRndBQUFBQUFBQUFBQUUxbFpHbGhVMmhoY21W
a1ZVbFdiMngxYldWVGJHbGtaWEpVYUhWdFlrVnNaVzFsYm5RNk9uQmgKYVc1MEFCd0FFaEF3QUFB
QUFBQUFBQUFBQUFBUUFBQUFBQUFBQUFBQUFBSUFBQTBBQmhFK0Z3QUFFZ0IwYUdsekFCSUFDeEVF
QUFBQQpLUkFBQUdOdmJuUmxlSFFBRHdBTEVRZ0FBQUFPRUFBQWNtVmpkQUFjQUF3UmhCY0FBQUFB
QUFBQUFIQnlaWE56WldSSGNtRmthV1Z1CmRBQVpBQXdSQmhFQUFBQUFBQUFBQUc1dmNtMWhiRU52
Ykc5eWN3QVFBQXNSMlAvLy8wQUFBQUIzYVdSMGFBQVJBQXNSM1AvLy8wQUEKQUFCb1pXbG5hSFFB
R0FBTUViVVRBQUFBQUFBQUFBQnphR0ZrYjNkRGIyeHZjZ0FSQUFzUjNQLy8vMEFBQUFCeVlXUnBk
WE1BR3dBTQpFWVFYQUFBQUFBQUFBQUJ1YjNKdFlXeEhjbUZrYVdWdWRBQVlBQXNSMFAvLy8yMFNB
QUJuY21Ga2FXVnVkRXhoZVdWeUFCb0FDeEhNCi8vLy9LUkFBQUdkeVlXUnBaVzUwUTI5dWRHVjRk
QUFkQUF3UnRSTUFBQUFBQUFBQUFHbHVibVZ5VTJoaFpHOTNRMjlzYjNJQUZ3QUwKRWN6Ly8vOXRF
Z0FBYm05dGFXNWhiRXhoZVdWeUFCY0FDeEhZLy8vL0tSQUFBR3hoZVdWeVEyOXVkR1Y0ZEFBYUFB
d1JCaEVBQUFBQQpBQUFBQUhCeVpYTnpaV1JEYjJ4dmNuTUFHd0FNRWJVVEFBQUFBQUFBQUFCb2FX
ZG9iR2xuYUhSRGIyeHZjZ0FPQURrUlJBQUFBQUFBCkFBQ0NGd0FBRGdBNUVWNEFBQUFBQUFBQWho
Y0FBQTRBT1JHUEFBQUFBQUFBQUlJWEFBQU9BRGtScVFBQUFBQUFBQUNHRndBQURnQTUKRWQ0QUFB
QUFBQUFBa3hjQUFBNEFPUkVOQVFBQUFBQUFBSk1YQUFBT0FEa1JQQUVBQUFBQUFBQ1RGd0FBRGdB
NUVYUUJBQUFBQUFBQQpPaEFBQUE0QU9SR0dBUUFBQUFBQUFHSVNBQUFPQURrUm5RRUFBQUFBQUFC
aUVnQUFEZ0E1RWNvQkFBQUFBQUFBZEJJQUFBNEFPUkhWCkFRQUFBQUFBQUl3UUFBQU9BRGtSQUFJ
QUFBQUFBQUJnRWdBQURnQTVFUlFDQUFBQUFBQUFZaElBQUE0QU9SRXJBZ0FBQUFBQUFHSVMKQUFB
T0FEa1J0QUlBQUFBQUFBQjFFZ0FBRGdBNUViOENBQUFBQUFBQWpCQUFBQTRBT1JIS0FnQUFBQUFB
QUl3UUFBQU9BRGtSNEFJQQpBQUFBQUFCaUVnQUFEZ0E1RWZjQ0FBQUFBQUFBWWhJQUFBNEFPUkVP
QXdBQUFBQUFBR0lTQUFBT0FEa1JKUU1BQUFBQUFBQmlFZ0FBCkRnQTVFV1lEQUFBQUFBQUFwQmNB
QUE0QU9SR1BBd0FBQUFBQUFIUVNBQUFPQURrUnNnTUFBQUFBQUFCM0VnQUFEZ0E1RVVRRUFBQUEK
QUFBQWVCSUFBQTRBT1JIaUJBQUFBQUFBQUhjU0FBQU9BRGtSN1FRQUFBQUFBQUI0RWdBQURnQTVF
UUFGQUFBQUFBQUFQQkFBQUFJQQpCZ0FBQVBJQUFBQVlBUUFBQUFBQUFBQUFBQUFNQlFBQUVBSUFB
Q0FBQUFBTUFRQUFBQUFBQU9NQ0FJQURBQUFBNWdJQWdHZ0FBQURuCkFnQ0Fzd0FBQU9nQ0FJRG9B
QUFBNlFJQWdCY0JBQURxQWdDQVJnRUFBT3dDQUlCMkFRQUE3Z0lBZ0tvQkFBRHZBZ0NBeFFFQUFQ
QUMKQUlEUUFRQUE4Z0lBZ05zQkFBRHpBZ0NBQmdJQUFQWUNBSUFlQWdBQTl3SUFnRFVDQUFENEFn
Q0FVd0lBQVBvQ0FJQzZBZ0FBK3dJQQpnTVVDQUFEOUFnQ0EwQUlBQUFFREFJQnZBd0FBQXdNQWdJ
b0RBQUFFQXdDQWxRTUFBQVlEQUlDNEF3QUFCd01BZ1A0REFBQUlBd0NBClB3UUFBQWtEQUlCS0JB
QUFDd01BZ0pJRUFBQU5Bd0NBcEFRQUFBNERBSURJQkFBQUVBTUFnT2dFQUFBU0F3Q0E4d1FBQUJR
REFJQUMKQlFBQUZRTUFnQXdBQUFCM0FnQUFCd0NZQUFBQWR3SUFBQXNBbkFBQUFIY0NBQUFLQUNZ
QkFBQ05BZ0FBQ3dBcUFRQUFqUUlBQUFvQQpSQUVBQUlvQ0FBQUxBRWdCQUFDS0FnQUFDZ0NFQVFB
QWV3SUFBQXNBaUFFQUFIc0NBQUFLQUxFQkFBQ0hBZ0FBQ3dDMUFRQUFod0lBCkFBb0FCQUlBQUg0
Q0FBQUxBQWdDQUFCK0FnQUFDZ0JWQWdBQWtBSUFBQXNBV1FJQUFKQUNBQUFLQUhFQ0FBQ0VBZ0FB
Q3dCMUFnQUEKaEFJQUFBb0FpZ0lBQUhjQ0FBQUxBSTRDQUFCM0FnQUFDZ0NhQWdBQWR3SUFBQXNB
bmdJQUFIY0NBQUFLQUtvQ0FBQjNBZ0FBQ3dDdQpBZ0FBZHdJQUFBb0F1Z0lBQUhjQ0FBQUxBTDRD
QUFCM0FnQUFDZ0RLQWdBQWR3SUFBQXNBemdJQUFIY0NBQUFLQU5vQ0FBQjNBZ0FBCkN3RGVBZ0FB
ZHdJQUFBb0E2Z0lBQUhjQ0FBQUxBTzRDQUFCM0FnQUFDZ0Q2QWdBQWR3SUFBQXNBL2dJQUFIY0NB
QUFLQUFvREFBQjMKQWdBQUN3QU9Bd0FBZHdJQUFBb0FHZ01BQUhjQ0FBQUxBQjREQUFCM0FnQUFD
Z0FxQXdBQWR3SUFBQXNBTGdNQUFIY0NBQUFLQURvRApBQUIzQWdBQUN3QStBd0FBZHdJQUFBb0FT
Z01BQUhjQ0FBQUxBRTREQUFCM0FnQUFDZ0JhQXdBQWR3SUFBQXNBWGdNQUFIY0NBQUFLCkFHb0RB
QUIzQWdBQUN3QnVBd0FBZHdJQUFBb0FlZ01BQUhjQ0FBQUxBSDREQUFCM0FnQUFDZ0NLQXdBQWR3
SUFBQXNBamdNQUFIY0MKQUFBS0FKb0RBQUIzQWdBQUN3Q2VBd0FBZHdJQUFBb0FxZ01BQUhjQ0FB
QUxBSzREQUFCM0FnQUFDZ0M2QXdBQWR3SUFBQXNBdmdNQQpBSGNDQUFBS0FNb0RBQUIzQWdBQUN3
RE9Bd0FBZHdJQUFBb0EyZ01BQUhjQ0FBQUxBTjREQUFCM0FnQUFDZ0RxQXdBQWR3SUFBQXNBCjdn
TUFBSGNDQUFBS0FQb0RBQUIzQWdBQUN3RCtBd0FBZHdJQUFBb0FDZ1FBQUhjQ0FBQUxBQTRFQUFC
M0FnQUFDZ0FhQkFBQWR3SUEKQUFzQUhnUUFBSGNDQUFBS0FDb0VBQUIzQWdBQUN3QXVCQUFBZHdJ
QUFBb0FPZ1FBQUhjQ0FBQUxBRDRFQUFCM0FnQUFDZ0JLQkFBQQpkd0lBQUFzQVRnUUFBSGNDQUFB
S0FHUUVBQUIzQWdBQUN3Qm9CQUFBZHdJQUFBb0FLVndQUHNmR3hqNEFBSUEva1pBUVB3QUFnRCto
Cm9DQS9BQUNBUDk3ZFhUOEFBSUEvaTBRa0dOa0ZBQUFBQUl0TUpCU0xWQ1FFVUZHTFRDUVFnK3dV
aThUWlhDUVFpUkNMVkNRb2lVZ0UKaTB3a0xJbFFDSWxJRE9nQUFBQUFnOFFjd2hnQUJnQUFBS3dB
QUFBR0FEVUFBQUNKQVFBQUZBQUVBQUFBOVFBQUFDUUFBQUFBQUFBQQpBQUFBQUQ4QUFBQUFBQUFB
R0FBQUFBQUFBQUJiRXdBQUFBQUFBQVFBQUFEeEFBQUFyd0FBQUZrQUVCRUFBQUFBQUFBQUFBQUFB
QUEvCkFBQUFBQUFBQUR3QUFBRDdGZ0FBQUFBQUFBQUFBRTFsWkdsaFUyaGhjbVZrVlVsV2IyeDFi
V1ZUYkdsa1pYSkNZV05yWjNKdmRXNWsKUld4bGJXVnVkRG82YUdsMFZHVnpkQUFjQUJJUUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQUFBTkFBWVIraFlBQUJJQQpkR2hwY3dBUEFBc1JC
QUFBQUE0UUFBQnlaV04wQUJBQUN4RVVBQUFBQ0JBQUFIQnZhVzUwQUFJQUJnQUE4Z0FBQURBQUFB
QUFBQUFBCkFBQUFBRDhBQUFBUUFnQUFBd0FBQUNRQUFBQUFBQUFBR1FNQWdBQUFBQUFhQXdDQVBB
QUFBQnNEQUlBTUFBQUFtQUlBQUFjQVdBQUEKQUpnQ0FBQUxBRndBQUFDWUFnQUFDZ0R3QUFBQW1B
SUFBQXNBOUFBQUFKZ0NBQUFLQUlQc01GTlZWcmdCQUFBQWhBVUFBQUFBaS9GWAppWFFrRkxzQ0FB
QUFkVWNKQlFBQUFBQ0VCUUFBQUFCMUhBa0ZBQUFBQUtFQUFBQUFpd2hSL3hVQUFBQUFnOFFFb3dB
QUFBQ0xGUUFBCkFBQlRhZ0JvQUFBQUFGTC9GUUFBQUFDRHhCQ2pBQUFBQUlRZEFBQUFBSFVtMlFV
QUFBQUFDUjBBQUFBQWcrd0kyVndrQk5ubzJSd2sKL3hVQUFBQUFnOFFJb3dBQUFBQ0xmQ1JJaXhh
TFhDUk1pMndrVUl0TUpGU0xkQ1JFaTFJUWcrd1FpOFNKT0lsWUJJbG9DSWxJREl0TQpKQ1JXLzlM
WjZJdE1KRlNEN0JqWlZDUVVpOFRaWENRUWlUaUpXQVNOVkNRNGlXZ0lVb2xJRFA4VkFBQUFBSXRJ
RElzNGkxZ0VpMmdJCmkwQU1nOFFjYWdDRDdCQ0pUQ1JRaTh5TDE0a1JpOU9KVVFTTDFZbFJDSWxC
REl2RzZBQUFBQUJRaVVRa0tQOFZBQUFBQU5rRkFBQUEKQUl0VUpGVFpYQ1FVZzhRRWk4eUpPWWxa
QklscENGQ0pSQ1JjaVZFTTZBQUFBQUNMUkNSY1VQOFZBQUFBQUl0TUpHQnFFVkgvRlFBQQpBQUNM
VkNSZ2c4UVVpOFNKT0lsWUJJbG9DSWxRRFA4VkFBQUFBTmxjSkNpTHhJazRpMHdrVElsWUJJbG9D
SWxJRFA4VkFBQUFBTmxjCkpDeUxWQ1JNaThTSk9JbFlCSWxvQ0lsUURQOFZBQUFBQU5sY0pEQ0xU
Q1JNaThTSk9JbFlCSWxvQ0lsSURQOFZBQUFBQU5sY0pEU0wKVkNRc2kwUWtLSXRNSkRScUFGS0xW
Q1E0VUtFQUFBQUFVWXRNSkdSU1VGSC9GUUFBQUFDTFZDUThpMHdrYUlQRUxGS0Q3QkNMeElrNApp
VmdFaVdnSVZvbElEUDhWQUFBQUFObnVpeFVBQUFBQTJWd2tPTmtGQUFBQUFJUEVHRkxaWENRbzJl
aUxSQ1FvaTFRa0ZGSFpIQ1NMClRDUW9VRkdMVENSTVVvUHNFSXZFaVRpSldBU0phQWlKU0F5THh1
Z0FBQUFBMlFVQUFBQUFpMVFrWU5sY0pDQ0R4QkNMeElrNGlWZ0UKaVdnSWlWQU1pMFFrV0ZEb0FB
QUFBTmtGQUFBQUFJdE1KR0RaVkNRVWkxUWtaTmxjSkJDTHhJa0lpMHdrYUlsUUJJdFVKR3lKU0Fp
SgpVQXlOUkNSZ1VQOFZBQUFBQU5rRkFBQUFBSXNRMlZ3a0dJUEVDSXZNaVJHTFVBU0pVUVNMVUFp
TFFBeUpVUWhXaVVFTTZBQUFBQURaCjZJUEVGTmtjSkZiL0ZRQUFBQURaQlFBQUFBRFpYQ1FFMmU3
WkhDUlcveFVBQUFBQVZ2OFZBQUFBQUl0TUpDU0xFWXRDRklQRUVGYi8KMEY5ZVhWdUR4RERDRkFB
TkFBQUFyQUlBQUFZQUlRQUFBS3dDQUFBR0FDY0FBQUFqQVFBQUJnQXZBQUFBSXdFQUFBWUFOQUFB
QUNBQgpBQUFHQUQwQUFBQWZBUUFBQmdCRkFBQUFIZ0VBQUFZQVN3QUFBQjRCQUFBR0FGTUFBQUNw
QWdBQUJnQmFBQUFBR3dFQUFBWUFZZ0FBCkFLWUNBQUFHQUdnQUFBQ3NBZ0FBQmdCd0FBQUFUZ0VB
QUFZQWRnQUFBS3dDQUFBR0FJZ0FBQUErQVFBQUJnQ1FBQUFBb3dJQUFBWUEKNlFBQUFGd0NBQUFH
QUIwQkFBRHhBQUFBRkFBb0FRQUEzUUFBQUFZQUxnRUFBS3dBQUFBR0FGQUJBQUJ1QVFBQUZBQmJB
UUFBL3dFQQpBQVlBYUFFQUFDOEJBQUFHQUlJQkFBQlpBUUFBQmdDZEFRQUFFUUVBQUFZQXVBRUFB
RmtCQUFBR0FOTUJBQUFRQVFBQUJnRHdBUUFBCnBnSUFBQVlBL2dFQUFGZ0JBQUFHQUNFQ0FBRDdB
QUFBQmdBcEFnQUFvd0lBQUFZQU13SUFBRG9CQUFBR0FHc0NBQUFvQVFBQUZBQngKQWdBQXJBQUFB
QVlBa3dJQUFHNEJBQUFVQUprQ0FBQk9BUUFBQmdESkFnQUFYQUlBQUFZQXp3SUFBSndBQUFBR0FQ
UUNBQUJ1QVFBQQpGQUFEQXdBQVZ3SUFBQVlBQ1FNQUFLQUNBQUFHQUJrREFBQllBZ0FBQmdBZ0F3
QUFWZ0lBQUFZQUJBQUFBUFVBQUFCa0FBQUFBQUFBCkFBQUFBQUE5QXdBQU1BQUFBQlFBQUFBQUFB
QUFXeE1BQUJnQUNBQUVBQUFBQkFBQUFEa0RBQUF3QUFBQUZBQUFBQUFBQUFBNUd3QUEKRkFBTUFB
QUFBQUFGQUFBQU9BTUFBREFBQUFBVUFBQUFBQUFBQUtJYkFBQVRBQkFBQUFBQUFQRUFBQUNEQWdB
QVZ3QVFFUUFBQUFBQQpBQUFBQUFBQUFEMERBQUFZQUFBQU13TUFBUGdXQUFBQUFBQUFBQUFBVFdW
a2FXRlRhR0Z5WldSVlNWWnZiSFZ0WlZOc2FXUmxja0poClkydG5jbTkxYm1SRmJHVnRaVzUwT2pw
d1lXbHVkQUFjQUJJUU1BQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQUFBQUFDQUFBTkFBWVIKOXhZ
QUFCSUFkR2hwY3dBU0FBc1JCQUFBQUNrUUFBQmpiMjUwWlhoMEFBOEFDeEVJQUFBQURoQUFBSEps
WTNRQUhRQU1FYlVUQUFBQQpBQUFBQUFCcGJtNWxjbE5vWVdSdmQwTnZiRzl5QUJrQUN4SHMvLy8v
RGhBQUFHSmhZMnRuY205MWJtUlNaV04wQUJvQUN4SE0vLy8vCmJSSUFBR0poWTJ0bmNtOTFibVJN
WVhsbGNnQWNBQXNSQkFBQUFDa1FBQUJpWVdOclozSnZkVzVrUTI5dWRHVjRkQUFUQUF3UkJoRUEK
QUFBQUFBQUFBR052Ykc5eWN3QVpBQXdSaEJjQUFBQUFBQUFBQUdacGJHeEhjbUZrYVdWdWRBQU9B
RGtST3dBQUFBQUFBQUNDRndBQQpEZ0E1RVZnQUFBQUFBQUFBaGhjQUFBNEFPUkdHQUFBQUFBQUFB
Sk1YQUFBT0FEa1J3Z0FBQUFBQUFBQTZFQUFBRGdBNUVlY0FBQUFBCkFBQUF5QmNBQUE0QU9SRW1B
UUFBQUFBQUFIUVNBQUFPQURrUldRRUFBQUFBQUFDTUVBQUFEZ0E1RVdZQkFBQUFBQUFBalJjQUFB
NEEKT1JHQUFRQUFBQUFBQUdJU0FBQU9BRGtSbXdFQUFBQUFBQUJpRWdBQURnQTVFYllCQUFBQUFB
QUFZaElBQUE0QU9SSFJBUUFBQUFBQQpBR0lTQUFBT0FEa1IvQUVBQUFBQUFBQ2tGd0FBRGdBNUVS
OENBQUFBQUFBQWR4SUFBQTRBT1JISEFnQUFBQUFBQU1nWEFBQU9BRGtSCkFRTUFBQUFBQUFDSkV3
QUFEZ0E1RVJjREFBQUFBQUFBWUJJQUFBNEFPUkVlQXdBQUFBQUFBSXdRQUFBT0FEa1JNUU1BQUFB
QUFBQTgKRUFBQUFnQUdBQUR5QUFBQXVBQUFBQUFBQUFBQUFBQUFQUU1BQUJBQ0FBQVVBQUFBckFB
QUFBQUFBQUFlQXdDQUJnQUFBQ0FEQUlCbQpBQUFBSVFNQWdKUUFBQUFqQXdDQXhBQUFBQ1VEQUlE
NEFBQUFKZ01BZ0NFQkFBQW5Bd0NBTEFFQUFDa0RBSUJVQVFBQUtnTUFnRjhCCkFBQXNBd0NBYkFF
QUFDMERBSUFDQWdBQUx3TUFnQ1VDQUFBeEF3Q0Fid0lBQURRREFJQ1hBZ0FBTmdNQWdQZ0NBQUEz
QXdDQUJ3TUEKQURnREFJQWRBd0FBT1FNQWdDUURBQUE3QXdDQU13TUFBRHdEQUlBTUFBQUFuUUlB
QUFjQW1BQUFBSjBDQUFBTEFKd0FBQUNkQWdBQQpDZ0FyQVFBQW93SUFBQXNBTHdFQUFLTUNBQUFL
QUo4QkFBQ3BBZ0FBQ3dDakFRQUFxUUlBQUFvQXRBRUFBS1lDQUFBTEFMZ0JBQUNtCkFnQUFDZ0RM
QVFBQW5RSUFBQXNBendFQUFKMENBQUFLQU5zQkFBQ2RBZ0FBQ3dEZkFRQUFuUUlBQUFvQTZ3RUFB
SjBDQUFBTEFPOEIKQUFDZEFnQUFDZ0Q3QVFBQW5RSUFBQXNBL3dFQUFKMENBQUFLQUFzQ0FBQ2RB
Z0FBQ3dBUEFnQUFuUUlBQUFvQUd3SUFBSjBDQUFBTApBQjhDQUFDZEFnQUFDZ0FyQWdBQW5RSUFB
QXNBTHdJQUFKMENBQUFLQURzQ0FBQ2RBZ0FBQ3dBL0FnQUFuUUlBQUFvQVN3SUFBSjBDCkFBQUxB
RThDQUFDZEFnQUFDZ0JiQWdBQW5RSUFBQXNBWHdJQUFKMENBQUFLQUdzQ0FBQ2RBZ0FBQ3dCdkFn
QUFuUUlBQUFvQWV3SUEKQUowQ0FBQUxBSDhDQUFDZEFnQUFDZ0NMQWdBQW5RSUFBQXNBandJQUFK
MENBQUFLQUpzQ0FBQ2RBZ0FBQ3dDZkFnQUFuUUlBQUFvQQpxd0lBQUowQ0FBQUxBSzhDQUFDZEFn
QUFDZ0M3QWdBQW5RSUFBQXNBdndJQUFKMENBQUFLQU1zQ0FBQ2RBZ0FBQ3dEUEFnQUFuUUlBCkFB
b0Eyd0lBQUowQ0FBQUxBTjhDQUFDZEFnQUFDZ0RyQWdBQW5RSUFBQXNBN3dJQUFKMENBQUFLQUFR
REFBQ2RBZ0FBQ3dBSUF3QUEKblFJQUFBb0FNek56UDRtSWlEMGZoV3MvcWFnb1BoK0ZheitMd2Nj
QUFBQUFBTU1FQUFBQXRBSUFBQVlBQkFBQUFQVUFBQUFrQUFBQQpBQUFBQUFBQUFBQUpBQUFBQUFB
QUFBQUFBQUFBQUFBQVd4TUFBQUlBQUFBRUFBQUE4UUFBQUpjQUFBQmtBQkFSQUFBQUFBQUFBQUFB
CkFBQUFDUUFBQUFJQUFBQUlBQUFBeGhZQUFBQUFBQUFBQUFCTlpXUnBZVk5vWVhKbFpGVkpRbUZq
YTJkeWIzVnVaRVZzWlcxbGJuUTYKT2sxbFpHbGhVMmhoY21Wa1ZVbENZV05yWjNKdmRXNWtSV3hs
YldWdWRBQWNBQklRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQQpBQ0FLQUFBTkFBWVJ3QllB
QUJJQWRHaHBjd0FDQUFZQUFBd0FBQUN4QWdBQUJ3QllBQUFBc1FJQUFBc0FYQUFBQUxFQ0FBQUtB
QUFBCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDMkFnQUFCZ0FFQUFBQXhRRUFB
QVlBQ0FBQUFFMEFBQUFHQUF3QUFBQlQKQUFBQUJnQVFBQUFBUndBQUFBWUFGQUFBQUVnQUFBQUdB
SXZCeHdBQUFBQUF3d1FBQUFDL0FnQUFCZ0FFQUFBQTlRQUFBQ1FBQUFBQQpBQUFBQUFBQUFBa0FB
QUFBQUFBQUFBQUFBQUFBQUFCYkV3QUFBZ0FBQUFRQUFBRHhBQUFBcndBQUFId0FFQkVBQUFBQUFB
QUFBQUFBCkFBQUpBQUFBQWdBQUFBZ0FBQUFBRndBQUFBQUFBQUFBQUUxbFpHbGhVMmhoY21Wa1ZV
bFdiMngxYldWVGJHbGtaWEpDWVdOclozSnYKZFc1a1JXeGxiV1Z1ZERvNlRXVmthV0ZUYUdGeVpX
UlZTVlp2YkhWdFpWTnNhV1JsY2tKaFkydG5jbTkxYm1SRmJHVnRaVzUwQUJ3QQpFaEFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBb0FBQTBBQmhIM0ZnQUFFZ0IwYUdsekFBSUFCZ0FBREFB
QUFMd0NBQUFICkFGZ0FBQUM4QWdBQUN3QmNBQUFBdkFJQUFBb0FBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBTUVDQUFBR0FBUUEKQUFDZEFnQUFCZ0FJQUFBQW1BSUFBQVlBREFB
QUFGTUFBQUFHQUJBQUFBQkhBQUFBQmdBVUFBQUFTQUFBQUFZQWk4SEhBQUFBQUFERApCQUFBQU1v
Q0FBQUdBQVFBQUFEMUFBQUFKQUFBQUFBQUFBQUFBQUFBQ1FBQUFBQUFBQUFBQUFBQUFBQUFBRnNU
QUFBQ0FBQUFCQUFBCkFQRUFBQUNwQUFBQWRnQVFFUUFBQUFBQUFBQUFBQUFBQUFrQUFBQUNBQUFB
Q0FBQUFDUVhBQUFBQUFBQUFBQUFUV1ZrYVdGVGFHRnkKWldSVlNWUnBiV1ZzYVc1bFUyeHBaR1Z5
VkdoMWJXSkZiR1Z0Wlc1ME9qcE5aV1JwWVZOb1lYSmxaRlZKVkdsdFpXeHBibVZUYkdsawpaWEpV
YUhWdFlrVnNaVzFsYm5RQUhBQVNFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0NnQUFE
UUFHRVJvWEFBQVNBSFJvCmFYTUFBZ0FHQUFBQUFBd0FBQURIQWdBQUJ3QllBQUFBeHdJQUFBc0FY
QUFBQU1jQ0FBQUtBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEKQUFBQUFBQUFBQUFBQUFETUFnQUFC
Z0FFQUFBQS9BRUFBQVlBQ0FBQUFPNEJBQUFHQUF3QUFBRDNBUUFBQmdBUUFBQUFSd0FBQUFZQQpG
QUFBQUVnQUFBQUdBSXZCeHdBQUFBQUF3d1FBQUFEVkFnQUFCZ0FFQUFBQTlRQUFBQ1FBQUFBQUFB
QUFBQUFBQUFrQUFBQUFBQUFBCkFBQUFBQUFBQUFCYkV3QUFBZ0FBQUFRQUFBRHhBQUFBalFBQUFG
b0FFQkVBQUFBQUFBQUFBQUFBQUFBSkFBQUFBZ0FBQUFnQUFBQTIKRndBQUFBQUFBQUFBQUUxbFpH
bGhVMmhoY21Wa1ZVbFdiMngxYldWVGJHbGtaWEk2T2sxbFpHbGhVMmhoY21Wa1ZVbFdiMngxYldW
VApiR2xrWlhJQUhBQVNFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0NnQUFEUUFHRVN3
WEFBQVNBSFJvYVhNQUFnQUdBQUFBCkFBd0FBQURTQWdBQUJ3QllBQUFBMGdJQUFBc0FYQUFBQU5J
Q0FBQUtBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEKQUFEWEFnQUFCZ0FFQUFB
QVZRSUFBQVlBQ0FBQUFFMEFBQUFHQUF3QUFBQlRBQUFBQmdBUUFBQUFSd0FBQUFZQUZBQUFBRWdB
QUFBRwpBSXZCeHdBQUFBQUF3d1FBQUFEZ0FnQUFCZ0FFQUFBQTlRQUFBQ1FBQUFBQUFBQUFBQUFB
QUFrQUFBQUFBQUFBQUFBQUFBQUFBQUJiCkV3QUFBZ0FBQUFRQUFBRHhBQUFBcFFBQUFISUFFQkVB
QUFBQUFBQUFBQUFBQUFBSkFBQUFBZ0FBQUFnQUFBQklGd0FBQUFBQUFBQUEKQUUxbFpHbGhVMmho
Y21Wa1ZVbFdiMngxYldWVGJHbGtaWEpVYUhWdFlrVnNaVzFsYm5RNk9rMWxaR2xoVTJoaGNtVmtW
VWxXYjJ4MQpiV1ZUYkdsa1pYSlVhSFZ0WWtWc1pXMWxiblFBSEFBU0VBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFnQ2dBQURRQUdFVDRYCkFBQVNBSFJvYVhNQUFnQUdBQUFBQUF3QUFBRGRB
Z0FBQndCWUFBQUEzUUlBQUFzQVhBQUFBTjBDQUFBS0FBQUFBQUFBQUFBQUFBQUEKQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQURpQWdBQUJnQUVBQUFBZHdJQUFBWUFDQUFBQUcwQ0FBQUdBQXdBQUFCeUFn
QUFCZ0FRQUFBQQpSd0FBQUFZQUZBQUFBRWdBQUFBR0FNY0JBQUFBQU1NQ0FBQUFRZ0FBQUFZQUJB
QUFBUFVBQUFBa0FBQUFBQUFBQUFBQUFBQUhBQUFBCkFBQUFBQUFBQUFBQUFBQUFXeE1BQUFBQUFB
QUVBQUFBOFFBQUFKZ0FBQUJsQUJBUkFBQUFBQUFBQUFBQUFBQUFCd0FBQUFBQUFBQUcKQUFBQXho
WUFBQUFBQUFBQUFBQk5aV1JwWVZOb1lYSmxaRlZKUW1GamEyZHliM1Z1WkVWc1pXMWxiblE2T241
TlpXUnBZVk5vWVhKbApaRlZKUW1GamEyZHliM1Z1WkVWc1pXMWxiblFBSEFBU0VBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFnQ2dBQURRQUdFY0FXCkFBQVNBSFJvYVhNQUFnQUdBQXdBQUFE
b0FnQUFCd0JZQUFBQTZBSUFBQXNBWEFBQUFPZ0NBQUFLQU1jQkFBQUFBTU1DQUFBQVFnQUEKQUFZ
QUJBQUFBUFVBQUFBa0FBQUFBQUFBQUFBQUFBQUhBQUFBQUFBQUFBQUFBQUFBQUFBQVd4TUFBQUFB
QUFBRUFBQUE4UUFBQUxBQQpBQUI5QUJBUkFBQUFBQUFBQUFBQUFBQUFCd0FBQUFBQUFBQUdBQUFB
QUJjQUFBQUFBQUFBQUFCTlpXUnBZVk5vWVhKbFpGVkpWbTlzCmRXMWxVMnhwWkdWeVFtRmphMmR5
YjNWdVpFVnNaVzFsYm5RNk9uNU5aV1JwWVZOb1lYSmxaRlZKVm05c2RXMWxVMnhwWkdWeVFtRmoK
YTJkeWIzVnVaRVZzWlcxbGJuUUFIQUFTRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdD
Z0FBRFFBR0VmY1dBQUFTQUhSbwphWE1BQWdBR0FBd0FBQUR0QWdBQUJ3QllBQUFBN1FJQUFBc0FY
QUFBQU8wQ0FBQUtBTWNCQUFBQUFNTUNBQUFBUWdBQUFBWUFCQUFBCkFQVUFBQUFrQUFBQUFBQUFB
QUFBQUFBSEFBQUFBQUFBQUFBQUFBQUFBQUFBV3hNQUFBQUFBQUFFQUFBQThRQUFBS29BQUFCM0FC
QVIKQUFBQUFBQUFBQUFBQUFBQUJ3QUFBQUFBQUFBR0FBQUFKQmNBQUFBQUFBQUFBQUJOWldScFlW
Tm9ZWEpsWkZWSlZHbHRaV3hwYm1WVApiR2xrWlhKVWFIVnRZa1ZzWlcxbGJuUTZPbjVOWldScFlW
Tm9ZWEpsWkZWSlZHbHRaV3hwYm1WVGJHbGtaWEpVYUhWdFlrVnNaVzFsCmJuUUFIQUFTRUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdDZ0FBRFFBR0VSb1hBQUFTQUhSb2FYTUFBZ0FHQUFB
QURBQUEKQVBJQ0FBQUhBRmdBQUFEeUFnQUFDd0JjQUFBQThnSUFBQW9BeHdFQUFBQUF3d0lBQUFC
Q0FBQUFCZ0FFQUFBQTlRQUFBQ1FBQUFBQQpBQUFBQUFBQUFBY0FBQUFBQUFBQUFBQUFBQUFBQUFC
YkV3QUFBQUFBQUFRQUFBRHhBQUFBamdBQUFGc0FFQkVBQUFBQUFBQUFBQUFBCkFBQUhBQUFBQUFB
QUFBWUFBQUEyRndBQUFBQUFBQUFBQUUxbFpHbGhVMmhoY21Wa1ZVbFdiMngxYldWVGJHbGtaWEk2
T241TlpXUnAKWVZOb1lYSmxaRlZKVm05c2RXMWxVMnhwWkdWeUFCd0FFaEFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUlBb0FBQTBBQmhFcwpGd0FBRWdCMGFHbHpBQUlBQmdBQUFBd0FBQUQz
QWdBQUJ3QllBQUFBOXdJQUFBc0FYQUFBQVBjQ0FBQUtBTWNCQUFBQUFNTUNBQUFBClFnQUFBQVlB
QkFBQUFQVUFBQUFrQUFBQUFBQUFBQUFBQUFBSEFBQUFBQUFBQUFBQUFBQUFBQUFBV3hNQUFBQUFB
QUFFQUFBQThRQUEKQUtZQUFBQnpBQkFSQUFBQUFBQUFBQUFBQUFBQUJ3QUFBQUFBQUFBR0FBQUFT
QmNBQUFBQUFBQUFBQUJOWldScFlWTm9ZWEpsWkZWSgpWbTlzZFcxbFUyeHBaR1Z5VkdoMWJXSkZi
R1Z0Wlc1ME9qcCtUV1ZrYVdGVGFHRnlaV1JWU1ZadmJIVnRaVk5zYVdSbGNsUm9kVzFpClJXeGxi
V1Z1ZEFBY0FCSVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBS0FBQU5BQVlSUGhjQUFC
SUFkR2hwY3dBQ0FBWUEKQUFBTUFBQUEvQUlBQUFjQVdBQUFBUHdDQUFBTEFGd0FBQUQ4QWdBQUNn
Q0x3Y2NBQUFBQUFNTUVBQUFBQkFNQUFBWUFCQUFBQVBVQQpBQUFrQUFBQUFBQUFBQUFBQUFBSkFB
QUFBQUFBQUFBQUFBQUFBQUFBV3hNQUFBSUFBQUFFQUFBQThRQUFBSVVBQUFCU0FCQVJBQUFBCkFB
QUFBQUFBQUFBQUNRQUFBQUlBQUFBSUFBQUFWUkFBQUFBQUFBQUFBQUJOWldScFlWVkpWR2x0Wld4
cGJtVlRiR2xrWlhJNk9rMWwKWkdsaFZVbFVhVzFsYkdsdVpWTnNhV1JsY2dBY0FCSVFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBS0FBQU5BQVlSVEJBQQpBQklBZEdocGN3QUNBQVlBQUFB
QURBQUFBQUVEQUFBSEFGZ0FBQUFCQXdBQUN3QmNBQUFBQVFNQUFBb0FBQUFBQUFBQUFBQUFBQUFB
CkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFZREFBQUdBQVFBQUFCR0FBQUFCZ0FJQUFBQVRRQUFBQVlB
REFBQUFGTUFBQUFHQUJBQUFBQkgKQUFBQUJnQVVBQUFBU0FBQUFBWUF4d0VBQUFBQXd3SUFBQUJD
QUFBQUJnQUVBQUFBOVFBQUFDUUFBQUFBQUFBQUFBQUFBQWNBQUFBQQpBQUFBQUFBQUFBQUFBQUJi
RXdBQUFBQUFBQVFBQUFEeEFBQUFoZ0FBQUZNQUVCRUFBQUFBQUFBQUFBQUFBQUFIQUFBQUFBQUFB
QVlBCkFBQlZFQUFBQUFBQUFBQUFBRTFsWkdsaFZVbFVhVzFsYkdsdVpWTnNhV1JsY2pvNmZrMWxa
R2xoVlVsVWFXMWxiR2x1WlZOc2FXUmwKY2dBY0FCSVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUNBS0FBQU5BQVlSVEJBQUFCSUFkR2hwY3dBQ0FBWUFBQUFNQUFBQQpEQU1BQUFjQVdBQUFB
QXdEQUFBTEFGd0FBQUFNQXdBQUNnRDJSQ1FFQVZhTDhjY0dBQUFBQUhRSlZ1Z0FBQUFBZzhRRWk4
WmV3Z1FBCkNnQUFBRUlBQUFBR0FCSUFBQUJ6QUFBQUZBQUVBQUFBOVFBQUFFUUFBQUFBQUFBQUFB
QUFBQjhBQUFBQUFBQUFCQUFBQUFBQUFBQmIKRXdBQUNBQUFBQVFBQUFBR0FBQUFGZ0FBQUFBQUFB
QUVBQUFBQUFBQUFGc1RBQUFDQUFRQUFBQUFBUEVBQUFDTUFBQUFXUUFRRVFBQQpBQUFBQUFBQUFB
QUFBQjhBQUFBSUFBQUFIQUFBQUZrUUFBQUFBQUFBQUFBQVRXVmthV0ZWU1ZScGJXVnNhVzVsVTJ4
cFpHVnlPanBnCmMyTmhiR0Z5SUdSbGJHVjBhVzVuSUdSbGMzUnlkV04wYjNJbkFCd0FFaEFBQUFB
QUFBQUFBQUFBQUFBRUFBQUFBQUFBQUFBQUlBSUEKQUEwQUJoRk1FQUFBRWdCMGFHbHpBQUlBQmdB
TUFBQUFCUU1BQUFjQWVBQUFBQVVEQUFBTEFId0FBQUFGQXdBQUNnQ0x3Y2NBQUFBQQpBTWRBREFB
QUFBRERCQUFBQUJrREFBQUdBQVFBQUFEMUFBQUFKQUFBQUFBQUFBQUFBQUFBRUFBQUFBQUFBQUFB
QUFBQUFBQUFBRnNUCkFBQUNBQUFBQkFBQUFQRUFBQUNOQUFBQVdnQVFFUUFBQUFBQUFBQUFBQUFB
QUJBQUFBQUNBQUFBRHdBQUFOTVdBQUFBQUFBQUFBQUEKVFdWa2FXRlRhR0Z5WldSVlNVbHRZV2Rs
Uld4bGJXVnVkRG82VFdWa2FXRlRhR0Z5WldSVlNVbHRZV2RsUld4bGJXVnVkQUFjQUJJUQpBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBS0FBQU5BQVlSMFJZQUFCSUFkR2hwY3dBQ0FBWUFB
QUFBOGdBQUFDQUFBQUFBCkFBQUFBQUFBQUJBQUFBREFCZ0FBQVFBQUFCUUFBQUFBQUFBQUV3QUFn
QXdBQUFBV0F3QUFCd0JZQUFBQUZnTUFBQXNBWEFBQUFCWUQKQUFBS0FOQUFBQUFXQXdBQUN3RFVB
QUFBRmdNQUFBb0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQQpB
QUFBQUFBQUFCc0RBQUFHQUFRQUFBQzJBUUFBQmdBSUFBQUFUUUFBQUFZQURBQUFBTndEQUFBR0FC
QUFBQUJIQUFBQUJnQVVBQUFBClNBQUFBQVlBR0FBQUFKd0JBQUFHQUJ3QUFBRFdBd0FBQmdBZ0FB
QUFJUU1BQUFZQU1zRERCQUFBQVBVQUFBQWtBQUFBQUFBQUFBQUEKQUFBREFBQUFBQUFBQUFBQUFB
QUFBQUFBV3hNQUFBQUFBQUFFQUFBQThRQUFBSWdBQUFCVkFCQVJBQUFBQUFBQUFBQUFBQUFBQXdB
QQpBQUFBQUFBQ0FBQUEyaFlBQUFBQUFBQUFBQUJOWldScFlWTm9ZWEpsWkZWSlNXMWhaMlZGYkdW
dFpXNTBPanBqYjI1emRISmhhVzVCCmMzQmxZM1JTWVhScGJ3QWNBQklRQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFDQUNBQUFOQUFZUjFoWUFBQklBZEdocGN3QUMKQUFZQThnQUFBQ0FBQUFB
QUFBQUFBQUFBQUFNQUFBREFCZ0FBQVFBQUFCUUFBQUFBQUFBQUd3QUFnQXdBQUFBaEF3QUFCd0JZ
QUFBQQpJUU1BQUFzQVhBQUFBQ0VEQUFBS0FNZ0FBQUFoQXdBQUN3RE1BQUFBSVFNQUFBb0E5a1Fr
QkFGV2kvSEhCZ0FBQUFCMENWYm9BQUFBCkFJUEVCSXZHWHNJRUFBb0FBQUJDQUFBQUJnQVNBQUFB
Y3dBQUFCUUFCQUFBQVBVQUFBQkVBQUFBQUFBQUFBQUFBQUFmQUFBQUFBQUEKQUFRQUFBQUFBQUFB
V3hNQUFBZ0FBQUFFQUFBQUJnQUFBQllBQUFBQUFBQUFCQUFBQUFBQUFBQmJFd0FBQWdBRUFBQUFB
QUR4QUFBQQprQUFBQUYwQUVCRUFBQUFBQUFBQUFBQUFBQUFmQUFBQUNBQUFBQndBQUFEaUZnQUFB
QUFBQUFBQUFFMWxaR2xoVTJoaGNtVmtWVWxKCmJXRm5aVVZzWlcxbGJuUTZPbUJ6WTJGc1lYSWda
R1ZzWlhScGJtY2daR1Z6ZEhKMVkzUnZjaWNBSEFBU0VBQUFBQUFBQUFBQUFBQUEKQUFRQUFBQUFB
QUFBQUFBZ0FnQUFEUUFHRWRFV0FBQVNBSFJvYVhNQUFnQUdBQXdBQUFBYUF3QUFCd0I0QUFBQUdn
TUFBQXNBZkFBQQpBQm9EQUFBS0FLRUFBQUFBaGNCMVhxRUFBQUFBaXdpTEZRQUFBQUNMQWxOV1Yx
Rm9aMU1BQUdnQUFBQUFVUDhWQUFBQUFJdjRWLzhWCkFBQUFBSVBFRkl2dzZBQUFBQUNGOW9zZEFB
QUFBS01BQUFBQWRBWlcvOU9EeEFTRi8zUUdWLy9UZzhRRW9RQUFBQUJmWGx2REFRQUEKQURJREFB
QUdBQW9BQUFBdkF3QUFCZ0FTQUFBQUxnTUFBQVlBSWdBQUFCOEFBQUFHQUNrQUFBQXRBd0FBQmdB
eUFBQUFMQU1BQUFZQQpQQUFBQU5nQUFBQVVBRVFBQUFEcUFBQUFCZ0JKQUFBQU1nTUFBQVlBWUFB
QUFESURBQUFHQUFRQUFBRDFBQUFBaEFBQUFBQUFBQUFBCkFBQUFhQUFBQUFBQUFBQUFBQUFBQUFB
QUFGc1RBQUFBQUFBQUJBQUFBQmtBQUFCT0FBQUFBQUFBQUFBQUFBQUFBQUFBV0JvQUFBQUEKQkFB
QUFBQUFHZ0FBQUV3QUFBQUFBQUFBQUFBQUFBQUFBQUJZR2dBQUFBQUlBQUFBQUFBYkFBQUFTZ0FB
QUFBQUFBQUFBQUFBQUFBQQpBRmdhQUFBQUFBd0FBQUFBQVBFQUFBQy9BQUFBUndBUEVRQUFBQUFB
QUFBQUFBQUFBR2dBQUFBQUFBQUFad0FBQUdFWEFBQUFBQUFBCkFBQUFZM0psWVhSbFRXVmthV0ZR
UkVaRGJHOXpaV1JEWVhCMGFXOXVjMGx0WVdkbEFCd0FFaEFBQUFBQUFBQUFBQUFBQUFBTUFBQUEK
QUFBQUFBQUFBQUlBQUJJQURCRnRFZ0FBQUFBQUFBQUFhVzFoWjJVQURnQTVFU2NBQUFBQUFBQUFW
QklBQUE0QU9SRXdBQUFBQUFBQQpBRllTQUFBT0FEa1JVQUFBQUFBQUFBQmVFZ0FBRGdBNUVWb0FB
QUFBQUFBQVhoSUFBQUlBQmdBQThnQUFBQ0FBQUFBQUFBQUFBQUFBCkFHZ0FBQUFRQWdBQUFRQUFB
QlFBQUFBQUFBQUFQUUFBZ0F3QUFBQXJBd0FBQndDNEFBQUFLd01BQUFzQXZBQUFBQ3NEQUFBS0FB
Y0IKQUFBeUF3QUFDd0FMQVFBQU1nTUFBQW9BRndFQUFDc0RBQUFMQUJzQkFBQXJBd0FBQ2dBbkFR
QUFLd01BQUFzQUt3RUFBQ3NEQUFBSwpBRGNCQUFBckF3QUFDd0E3QVFBQUt3TUFBQW9BUndFQUFD
c0RBQUFMQUVzQkFBQXJBd0FBQ2dCZ0FRQUFLd01BQUFzQVpBRUFBQ3NECkFBQUtBTGdCQUFBQWhB
VUFBQUFBZFJFSkJRQUFBQURvQUFBQUFLTUFBQUFBdzZFQUFBQUF3d2NBQUFBOUF3QUFCZ0FQQUFB
QVBRTUEKQUFZQUZBQUFBQ3NEQUFBVUFCa0FBQUE2QXdBQUJnQWZBQUFBT2dNQUFBWUFCQUFBQVBV
QUFBQWtBQUFBQUFBQUFBQUFBQUFrQUFBQQpBQUFBQUFBQUFBQUFBQUFBV3hNQUFBQUFBQUFFQUFB
QThRQUFBSGtBQUFCQkFBOFJBQUFBQUFBQUFBQUFBQUFBSkFBQUFBQUFBQUFqCkFBQUFZUmNBQUFB
QUFBQUFBQUJ0WldScFlWQkVSa05zYjNObFpFTmhjSFJwYjI1elNXMWhaMlVBSEFBU0VBQUFBQUFB
QUFBQUFBQUEKQUFBQUFBQUFBQUFBQUFBQUNnQUFFZ0FNRVcwU0FBQUFBQUFBQUFCcGJXRm5aUUFD
QUFZQUFBQUE4Z0FBQUNBQUFBQUFBQUFBQUFBQQpBQ1FBQUFBUUFnQUFBUUFBQUJRQUFBQUFBQUFB
UFFBQWdBd0FBQUEzQXdBQUJ3QllBQUFBTndNQUFBc0FYQUFBQURjREFBQUtBS0VBCkFBQTZBd0FB
Q3dDbEFBQUFPZ01BQUFvQXZBQUFBRGNEQUFBTEFNQUFBQUEzQXdBQUNnQ2hBQUFBQUlYQWRWNmhB
QUFBQUlzSWl4VUEKQUFBQWl3SlRWbGRSYUJBSkFBQm9BQUFBQUZEL0ZRQUFBQUNMK0ZmL0ZRQUFB
QUNEeEJTTDhPZ0FBQUFBaGZhTEhRQUFBQUNqQUFBQQpBSFFHVnYvVGc4UUVoZjkwQmxmLzA0UEVC
S0VBQUFBQVgxNWJ3d0VBQUFCRkF3QUFCZ0FLQUFBQUx3TUFBQVlBRWdBQUFDNERBQUFHCkFDSUFB
QUFkQUFBQUJnQXBBQUFBTFFNQUFBWUFNZ0FBQUN3REFBQUdBRHdBQUFEWUFBQUFGQUJFQUFBQTZn
QUFBQVlBU1FBQUFFVUQKQUFBR0FHQUFBQUJGQXdBQUJnQUVBQUFBOVFBQUFJUUFBQUFBQUFBQUFB
QUFBR2dBQUFBQUFBQUFBQUFBQUFBQUFBQmJFd0FBQUFBQQpBQVFBQUFBWkFBQUFUZ0FBQUFBQUFB
QUFBQUFBQUFBQUFGZ2FBQUFBQUFRQUFBQUFBQm9BQUFCTUFBQUFBQUFBQUFBQUFBQUFBQUFBCldC
b0FBQUFBQ0FBQUFBQUFHd0FBQUVvQUFBQUFBQUFBQUFBQUFBQUFBQUJZR2dBQUFBQU1BQUFBQUFE
eEFBQUF3QUFBQUVnQUR4RUEKQUFBQUFBQUFBQUFBQUFCb0FBQUFBQUFBQUdjQUFBQmhGd0FBQUFB
QUFBQUFBR055WldGMFpVMWxaR2xoVUVSR1FYVmthVzlXYjJ4MQpiV1ZJYVdkb1NXMWhaMlVBSEFB
U0VBQUFBQUFBQUFBQUFBQUFBQXdBQUFBQUFBQUFBQUFBQWdBQUVnQU1FVzBTQUFBQUFBQUFBQUJw
CmJXRm5aUUFPQURrUkp3QUFBQUFBQUFCVUVnQUFEZ0E1RVRBQUFBQUFBQUFBVmhJQUFBNEFPUkZR
QUFBQUFBQUFBRjRTQUFBT0FEa1IKV2dBQUFBQUFBQUJlRWdBQUFnQUdBUElBQUFBZ0FBQUFBQUFB
QUFBQUFBQm9BQUFBRUFJQUFBRUFBQUFVQUFBQUFBQUFBRDRBQUlBTQpBQUFBUWdNQUFBY0F1QUFB
QUVJREFBQUxBTHdBQUFCQ0F3QUFDZ0FJQVFBQVJRTUFBQXNBREFFQUFFVURBQUFLQUJnQkFBQkNB
d0FBCkN3QWNBUUFBUWdNQUFBb0FLQUVBQUVJREFBQUxBQ3dCQUFCQ0F3QUFDZ0E0QVFBQVFnTUFB
QXNBUEFFQUFFSURBQUFLQUVnQkFBQkMKQXdBQUN3Qk1BUUFBUWdNQUFBb0FZQUVBQUVJREFBQUxB
R1FCQUFCQ0F3QUFDZ0M0QVFBQUFJUUZBQUFBQUhVUkNRVUFBQUFBNkFBQQpBQUNqQUFBQUFNT2hB
QUFBQU1NSEFBQUFVQU1BQUFZQUR3QUFBRkFEQUFBR0FCUUFBQUJDQXdBQUZBQVpBQUFBVFFNQUFB
WUFId0FBCkFFMERBQUFHQUFRQUFBRDFBQUFBSkFBQUFBQUFBQUFBQUFBQUpBQUFBQUFBQUFBQUFB
QUFBQUFBQUZzVEFBQUFBQUFBQkFBQUFQRUEKQUFCNkFBQUFRZ0FQRVFBQUFBQUFBQUFBQUFBQUFD
UUFBQUFBQUFBQUl3QUFBR0VYQUFBQUFBQUFBQUFBYldWa2FXRlFSRVpCZFdScApiMVp2YkhWdFpV
aHBaMmhKYldGblpRQWNBQklRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUtBQUFTQUF3
UmJSSUFBQUFBCkFBQUFBR2x0WVdkbEFBSUFCZ0FBQVBJQUFBQWdBQUFBQUFBQUFBQUFBQUFrQUFB
QUVBSUFBQUVBQUFBVUFBQUFBQUFBQUQ0QUFJQU0KQUFBQVNnTUFBQWNBV0FBQUFFb0RBQUFMQUZ3
QUFBQktBd0FBQ2dDaUFBQUFUUU1BQUFzQXBnQUFBRTBEQUFBS0FMd0FBQUJLQXdBQQpDd0RBQUFB
QVNnTUFBQW9Bb1FBQUFBQ0Z3SFZlb1FBQUFBQ0xDSXNWQUFBQUFJc0NVMVpYVVdnUkNBQUFhQUFB
QUFCUS94VUFBQUFBCmkvaFgveFVBQUFBQWc4UVVpL0RvQUFBQUFJWDJpeDBBQUFBQW93QUFBQUIw
QmxiLzA0UEVCSVgvZEFaWC85T0R4QVNoQUFBQUFGOWUKVzhNQkFBQUFXQU1BQUFZQUNnQUFBQzhE
QUFBR0FCSUFBQUF1QXdBQUJnQWlBQUFBSGdBQUFBWUFLUUFBQUMwREFBQUdBRElBQUFBcwpBd0FB
QmdBOEFBQUEyQUFBQUJRQVJBQUFBT29BQUFBR0FFa0FBQUJZQXdBQUJnQmdBQUFBV0FNQUFBWUFC
QUFBQVBVQUFBQ0VBQUFBCkFBQUFBQUFBQUFCb0FBQUFBQUFBQUFBQUFBQUFBQUFBV3hNQUFBQUFB
QUFFQUFBQUdRQUFBRTRBQUFBQUFBQUFBQUFBQUFBQUFBQlkKR2dBQUFBQUVBQUFBQUFBYUFBQUFU
QUFBQUFBQUFBQUFBQUFBQUFBQUFGZ2FBQUFBQUFnQUFBQUFBQnNBQUFCS0FBQUFBQUFBQUFBQQpB
QUFBQUFBQVdCb0FBQUFBREFBQUFBQUE4UUFBQUw4QUFBQkhBQThSQUFBQUFBQUFBQUFBQUFBQWFB
QUFBQUFBQUFCbkFBQUFZUmNBCkFBQUFBQUFBQUFCamNtVmhkR1ZOWldScFlWQkVSa0YxWkdsdlZt
OXNkVzFsVDJabVNXMWhaMlVBSEFBU0VBQUFBQUFBQUFBQUFBQUEKQUF3QUFBQUFBQUFBQUFBQUFn
QUFFZ0FNRVcwU0FBQUFBQUFBQUFCcGJXRm5aUUFPQURrUkp3QUFBQUFBQUFCVUVnQUFEZ0E1RVRB
QQpBQUFBQUFBQVZoSUFBQTRBT1JGUUFBQUFBQUFBQUY0U0FBQU9BRGtSV2dBQUFBQUFBQUJlRWdB
QUFnQUdBQUR5QUFBQUlBQUFBQUFBCkFBQUFBQUFBYUFBQUFCQUNBQUFCQUFBQUZBQUFBQUFBQUFB
L0FBQ0FEQUFBQUZVREFBQUhBTGdBQUFCVkF3QUFDd0M4QUFBQVZRTUEKQUFvQUJ3RUFBRmdEQUFB
TEFBc0JBQUJZQXdBQUNnQVhBUUFBVlFNQUFBc0FHd0VBQUZVREFBQUtBQ2NCQUFCVkF3QUFDd0Fy
QVFBQQpWUU1BQUFvQU53RUFBRlVEQUFBTEFEc0JBQUJWQXdBQUNnQkhBUUFBVlFNQUFBc0FTd0VB
QUZVREFBQUtBR0FCQUFCVkF3QUFDd0JrCkFRQUFWUU1BQUFvQXVBRUFBQUNFQlFBQUFBQjFFUWtG
QUFBQUFPZ0FBQUFBb3dBQUFBRERvUUFBQUFEREJ3QUFBR01EQUFBR0FBOEEKQUFCakF3QUFCZ0FV
QUFBQVZRTUFBQlFBR1FBQUFHQURBQUFHQUI4QUFBQmdBd0FBQmdBRUFBQUE5UUFBQUNRQUFBQUFB
QUFBQUFBQQpBQ1FBQUFBQUFBQUFBQUFBQUFBQUFBQmJFd0FBQUFBQUFBUUFBQUR4QUFBQWVRQUFB
RUVBRHhFQUFBQUFBQUFBQUFBQUFBQWtBQUFBCkFBQUFBQ01BQUFCaEZ3QUFBQUFBQUFBQUFHMWxa
R2xoVUVSR1FYVmthVzlXYjJ4MWJXVlBabVpKYldGblpRQWNBQklRQUFBQUFBQUEKQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFLQUFBU0FBd1JiUklBQUFBQUFBQUFBR2x0WVdkbEFBSUFCZ0FBQUFEeUFB
QUFJQUFBQUFBQQpBQUFBQUFBQUpBQUFBQkFDQUFBQkFBQUFGQUFBQUFBQUFBQS9BQUNBREFBQUFG
MERBQUFIQUZnQUFBQmRBd0FBQ3dCY0FBQUFYUU1BCkFBb0FvUUFBQUdBREFBQUxBS1VBQUFCZ0F3
QUFDZ0M4QUFBQVhRTUFBQXNBd0FBQUFGMERBQUFLQUtFQUFBQUFoY0IxWHFFQUFBQUEKaXdpTEZR
QUFBQUNMQWxOV1YxRm9lQThBQUdnQUFBQUFVUDhWQUFBQUFJdjRWLzhWQUFBQUFJUEVGSXZ3NkFB
QUFBQ0Y5b3NkQUFBQQpBS01BQUFBQWRBWlcvOU9EeEFTRi8zUUdWLy9UZzhRRW9RQUFBQUJmWGx2
REFRQUFBR3NEQUFBR0FBb0FBQUF2QXdBQUJnQVNBQUFBCkxnTUFBQVlBSWdBQUFDRUFBQUFHQUNr
QUFBQXRBd0FBQmdBeUFBQUFMQU1BQUFZQVBBQUFBTmdBQUFBVUFFUUFBQURxQUFBQUJnQkoKQUFB
QWF3TUFBQVlBWUFBQUFHc0RBQUFHQUFRQUFBRDFBQUFBaEFBQUFBQUFBQUFBQUFBQWFBQUFBQUFB
QUFBQUFBQUFBQUFBQUZzVApBQUFBQUFBQUJBQUFBQmtBQUFCT0FBQUFBQUFBQUFBQUFBQUFBQUFB
V0JvQUFBQUFCQUFBQUFBQUdnQUFBRXdBQUFBQUFBQUFBQUFBCkFBQUFBQUJZR2dBQUFBQUlBQUFB
QUFBYkFBQUFTZ0FBQUFBQUFBQUFBQUFBQUFBQUFGZ2FBQUFBQUF3QUFBQUFBUEVBQUFDOEFBQUEK
UkFBUEVRQUFBQUFBQUFBQUFBQUFBR2dBQUFBQUFBQUFad0FBQUdFWEFBQUFBQUFBQUFBQVkzSmxZ
WFJsVFdWa2FXRlFSRVpRWVhWegpaVUoxZEhSdmJrbHRZV2RsQUJ3QUVoQUFBQUFBQUFBQUFBQUFB
QUFNQUFBQUFBQUFBQUFBQUFJQUFCSUFEQkZ0RWdBQUFBQUFBQUFBCmFXMWhaMlVBRGdBNUVTY0FB
QUFBQUFBQVZCSUFBQTRBT1JFd0FBQUFBQUFBQUZZU0FBQU9BRGtSVUFBQUFBQUFBQUJlRWdBQURn
QTUKRVZvQUFBQUFBQUFBWGhJQUFBSUFCZ0R5QUFBQUlBQUFBQUFBQUFBQUFBQUFhQUFBQUJBQ0FB
QUJBQUFBRkFBQUFBQUFBQUJBQUFDQQpEQUFBQUdnREFBQUhBTGdBQUFCb0F3QUFDd0M4QUFBQWFB
TUFBQW9BQkFFQUFHc0RBQUFMQUFnQkFBQnJBd0FBQ2dBVUFRQUFhQU1BCkFBc0FHQUVBQUdnREFB
QUtBQ1FCQUFCb0F3QUFDd0FvQVFBQWFBTUFBQW9BTkFFQUFHZ0RBQUFMQURnQkFBQm9Bd0FBQ2dC
RUFRQUEKYUFNQUFBc0FTQUVBQUdnREFBQUtBRndCQUFCb0F3QUFDd0JnQVFBQWFBTUFBQW9BdUFF
QUFBQ0VCUUFBQUFCMUVRa0ZBQUFBQU9nQQpBQUFBb3dBQUFBRERvUUFBQUFEREJ3QUFBSFlEQUFB
R0FBOEFBQUIyQXdBQUJnQVVBQUFBYUFNQUFCUUFHUUFBQUhNREFBQUdBQjhBCkFBQnpBd0FBQmdB
RUFBQUE5UUFBQUNRQUFBQUFBQUFBQUFBQUFDUUFBQUFBQUFBQUFBQUFBQUFBQUFCYkV3QUFBQUFB
QUFRQUFBRHgKQUFBQWRnQUFBRDRBRHhFQUFBQUFBQUFBQUFBQUFBQWtBQUFBQUFBQUFDTUFBQUJo
RndBQUFBQUFBQUFBQUcxbFpHbGhVRVJHVUdGMQpjMlZDZFhSMGIyNUpiV0ZuWlFBY0FCSVFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBS0FBQVNBQXdSYlJJQUFBQUFBQUFBCkFHbHRZV2Rs
QUFJQUJnQUFBUElBQUFBZ0FBQUFBQUFBQUFBQUFBQWtBQUFBRUFJQUFBRUFBQUFVQUFBQUFBQUFB
RUFBQUlBTUFBQUEKY0FNQUFBY0FXQUFBQUhBREFBQUxBRndBQUFCd0F3QUFDZ0NlQUFBQWN3TUFB
QXNBb2dBQUFITURBQUFLQUxnQUFBQndBd0FBQ3dDOApBQUFBY0FNQUFBb0FvUUFBQUFDRndIVmVv
UUFBQUFDTENJc1ZBQUFBQUlzQ1UxWlhVV2h2RHdBQWFBQUFBQUJRL3hVQUFBQUFpL2hYCi94VUFB
QUFBZzhRVWkvRG9BQUFBQUlYMml4MEFBQUFBb3dBQUFBQjBCbGIvMDRQRUJJWC9kQVpYLzlPRHhB
U2hBQUFBQUY5ZVc4TUIKQUFBQWZnTUFBQVlBQ2dBQUFDOERBQUFHQUJJQUFBQXVBd0FBQmdBaUFB
QUFJZ0FBQUFZQUtRQUFBQzBEQUFBR0FESUFBQUFzQXdBQQpCZ0E4QUFBQTJBQUFBQlFBUkFBQUFP
b0FBQUFHQUVrQUFBQitBd0FBQmdCZ0FBQUFmZ01BQUFZQUJBQUFBUFVBQUFDRUFBQUFBQUFBCkFB
QUFBQUJvQUFBQUFBQUFBQUFBQUFBQUFBQUFXeE1BQUFBQUFBQUVBQUFBR1FBQUFFNEFBQUFBQUFB
QUFBQUFBQUFBQUFCWUdnQUEKQUFBRUFBQUFBQUFhQUFBQVRBQUFBQUFBQUFBQUFBQUFBQUFBQUZn
YUFBQUFBQWdBQUFBQUFCc0FBQUJLQUFBQUFBQUFBQUFBQUFBQQpBQUFBV0JvQUFBQUFEQUFBQUFB
QThRQUFBTHNBQUFCREFBOFJBQUFBQUFBQUFBQUFBQUFBYUFBQUFBQUFBQUJuQUFBQVlSY0FBQUFB
CkFBQUFBQUJqY21WaGRHVk5aV1JwWVZCRVJsQnNZWGxDZFhSMGIyNUpiV0ZuWlFBY0FCSVFBQUFB
QUFBQUFBQUFBQUFBREFBQUFBQUEKQUFBQUFBQUNBQUFTQUF3UmJSSUFBQUFBQUFBQUFHbHRZV2Rs
QUE0QU9SRW5BQUFBQUFBQUFGUVNBQUFPQURrUk1BQUFBQUFBQUFCVwpFZ0FBRGdBNUVWQUFBQUFB
QUFBQVhoSUFBQTRBT1JGYUFBQUFBQUFBQUY0U0FBQUNBQVlBQVBJQUFBQWdBQUFBQUFBQUFBQUFB
QUJvCkFBQUFFQUlBQUFFQUFBQVVBQUFBQUFBQUFFRUFBSUFNQUFBQWV3TUFBQWNBdUFBQUFIc0RB
QUFMQUx3QUFBQjdBd0FBQ2dBREFRQUEKZmdNQUFBc0FCd0VBQUg0REFBQUtBQk1CQUFCN0F3QUFD
d0FYQVFBQWV3TUFBQW9BSXdFQUFIc0RBQUFMQUNjQkFBQjdBd0FBQ2dBegpBUUFBZXdNQUFBc0FO
d0VBQUhzREFBQUtBRU1CQUFCN0F3QUFDd0JIQVFBQWV3TUFBQW9BWEFFQUFIc0RBQUFMQUdBQkFB
QjdBd0FBCkNnQzRBUUFBQUlRRkFBQUFBSFVSQ1FVQUFBQUE2QUFBQUFDakFBQUFBTU9oQUFBQUFN
TUhBQUFBaVFNQUFBWUFEd0FBQUlrREFBQUcKQUJRQUFBQjdBd0FBRkFBWkFBQUFoZ01BQUFZQUh3
QUFBSVlEQUFBR0FBUUFBQUQxQUFBQUpBQUFBQUFBQUFBQUFBQUFKQUFBQUFBQQpBQUFBQUFBQUFB
QUFBRnNUQUFBQUFBQUFCQUFBQVBFQUFBQjFBQUFBUFFBUEVRQUFBQUFBQUFBQUFBQUFBQ1FBQUFB
QUFBQUFJd0FBCkFHRVhBQUFBQUFBQUFBQUFiV1ZrYVdGUVJFWlFiR0Y1UW5WMGRHOXVTVzFoWjJV
QUhBQVNFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEKQUFBQUFBQUFDZ0FBRWdBTUVXMFNBQUFBQUFB
QUFBQnBiV0ZuWlFBQ0FBWUFBQUFBOGdBQUFDQUFBQUFBQUFBQUFBQUFBQ1FBQUFBUQpBZ0FBQVFB
QUFCUUFBQUFBQUFBQVFRQUFnQXdBQUFDREF3QUFCd0JZQUFBQWd3TUFBQXNBWEFBQUFJTURBQUFL
QUowQUFBQ0dBd0FBCkN3Q2hBQUFBaGdNQUFBb0F1QUFBQUlNREFBQUxBTHdBQUFDREF3QUFDZ0No
QUFBQUFJWEFkVjZoQUFBQUFJc0lpeFVBQUFBQWl3SlQKVmxkUmFEa0lBQUJvQUFBQUFGRC9GUUFB
QUFDTCtGZi9GUUFBQUFDRHhCU0w4T2dBQUFBQWhmYUxIUUFBQUFDakFBQUFBSFFHVnYvVApnOFFF
aGY5MEJsZi8wNFBFQktFQUFBQUFYMTVid3dFQUFBQ1JBd0FBQmdBS0FBQUFMd01BQUFZQUVnQUFB
QzREQUFBR0FDSUFBQUFnCkFBQUFCZ0FwQUFBQUxRTUFBQVlBTWdBQUFDd0RBQUFHQUR3QUFBRFlB
QUFBRkFCRUFBQUE2Z0FBQUFZQVNRQUFBSkVEQUFBR0FHQUEKQUFDUkF3QUFCZ0FFQUFBQTlRQUFB
SVFBQUFBQUFBQUFBQUFBQUdnQUFBQUFBQUFBQUFBQUFBQUFBQUJiRXdBQUFBQUFBQVFBQUFBWgpB
QUFBVGdBQUFBQUFBQUFBQUFBQUFBQUFBRmdhQUFBQUFBUUFBQUFBQUJvQUFBQk1BQUFBQUFBQUFB
QUFBQUFBQUFBQVdCb0FBQUFBCkNBQUFBQUFBR3dBQUFFb0FBQUFBQUFBQUFBQUFBQUFBQUFCWUdn
QUFBQUFNQUFBQUFBRHhBQUFBd0FBQUFFZ0FEeEVBQUFBQUFBQUEKQUFBQUFBQm9BQUFBQUFBQUFH
Y0FBQUJoRndBQUFBQUFBQUFBQUdOeVpXRjBaVTFsWkdsaFVFUkdSVzUwWlhKR2RXeHNjMk55WldW
dQpTVzFoWjJVQUhBQVNFQUFBQUFBQUFBQUFBQUFBQUF3QUFBQUFBQUFBQUFBQUFnQUFFZ0FNRVcw
U0FBQUFBQUFBQUFCcGJXRm5aUUFPCkFEa1JKd0FBQUFBQUFBQlVFZ0FBRGdBNUVUQUFBQUFBQUFB
QVZoSUFBQTRBT1JGUUFBQUFBQUFBQUY0U0FBQU9BRGtSV2dBQUFBQUEKQUFCZUVnQUFBZ0FHQVBJ
QUFBQWdBQUFBQUFBQUFBQUFBQUJvQUFBQUVBSUFBQUVBQUFBVUFBQUFBQUFBQUVJQUFJQU1BQUFB
amdNQQpBQWNBdUFBQUFJNERBQUFMQUx3QUFBQ09Bd0FBQ2dBSUFRQUFrUU1BQUFzQURBRUFBSkVE
QUFBS0FCZ0JBQUNPQXdBQUN3QWNBUUFBCmpnTUFBQW9BS0FFQUFJNERBQUFMQUN3QkFBQ09Bd0FB
Q2dBNEFRQUFqZ01BQUFzQVBBRUFBSTREQUFBS0FFZ0JBQUNPQXdBQUN3Qk0KQVFBQWpnTUFBQW9B
WUFFQUFJNERBQUFMQUdRQkFBQ09Bd0FBQ2dDNEFRQUFBSVFGQUFBQUFIVVJDUVVBQUFBQTZBQUFB
QUNqQUFBQQpBTU9oQUFBQUFNTUhBQUFBbkFNQUFBWUFEd0FBQUp3REFBQUdBQlFBQUFDT0F3QUFG
QUFaQUFBQW1RTUFBQVlBSHdBQUFKa0RBQUFHCkFBUUFBQUQxQUFBQUpBQUFBQUFBQUFBQUFBQUFK
QUFBQUFBQUFBQUFBQUFBQUFBQUFGc1RBQUFBQUFBQUJBQUFBUEVBQUFCNkFBQUEKUWdBUEVRQUFB
QUFBQUFBQUFBQUFBQ1FBQUFBQUFBQUFJd0FBQUdFWEFBQUFBQUFBQUFBQWJXVmthV0ZRUkVaRmJu
Umxja1oxYkd4egpZM0psWlc1SmJXRm5aUUFjQUJJUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFLQUFBU0FBd1JiUklBQUFBQUFBQUFBR2x0CllXZGxBQUlBQmdBQUFQSUFBQUFnQUFBQUFB
QUFBQUFBQUFBa0FBQUFFQUlBQUFFQUFBQVVBQUFBQUFBQUFFSUFBSUFNQUFBQWxnTUEKQUFjQVdB
QUFBSllEQUFBTEFGd0FBQUNXQXdBQUNnQ2lBQUFBbVFNQUFBc0FwZ0FBQUprREFBQUtBTHdBQUFD
V0F3QUFDd0RBQUFBQQpsZ01BQUFvQW9RQUFBQUNGd0hWZW9RQUFBQUNMQ0lzVkFBQUFBSXNDVTFa
WFVXaWdEd0FBYUFBQUFBQlEveFVBQUFBQWkvaFgveFVBCkFBQUFnOFFVaS9Eb0FBQUFBSVgyaXgw
QUFBQUFvd0FBQUFCMEJsYi8wNFBFQklYL2RBWlgvOU9EeEFTaEFBQUFBRjllVzhNQkFBQUEKcEFN
QUFBWUFDZ0FBQUM4REFBQUdBQklBQUFBdUF3QUFCZ0FpQUFBQUpBQUFBQVlBS1FBQUFDMERBQUFH
QURJQUFBQXNBd0FBQmdBOApBQUFBMkFBQUFCUUFSQUFBQU9vQUFBQUdBRWtBQUFDa0F3QUFCZ0Jn
QUFBQXBBTUFBQVlBQkFBQUFQVUFBQUNFQUFBQUFBQUFBQUFBCkFBQm9BQUFBQUFBQUFBQUFBQUFB
QUFBQVd4TUFBQUFBQUFBRUFBQUFHUUFBQUU0QUFBQUFBQUFBQUFBQUFBQUFBQUJZR2dBQUFBQUUK
QUFBQUFBQWFBQUFBVEFBQUFBQUFBQUFBQUFBQUFBQUFBRmdhQUFBQUFBZ0FBQUFBQUJzQUFBQktB
QUFBQUFBQUFBQUFBQUFBQUFBQQpXQm9BQUFBQURBQUFBQUFBOFFBQUFMOEFBQUJIQUE4UkFBQUFB
QUFBQUFBQUFBQUFhQUFBQUFBQUFBQm5BQUFBWVJjQUFBQUFBQUFBCkFBQmpjbVZoZEdWTlpXUnBZ
VkJFUmxObFpXdFViMUpsWVd4MGFXMWxTVzFoWjJVQUhBQVNFQUFBQUFBQUFBQUFBQUFBQUF3QUFB
QUEKQUFBQUFBQUFBZ0FBRWdBTUVXMFNBQUFBQUFBQUFBQnBiV0ZuWlFBT0FEa1JKd0FBQUFBQUFB
QlVFZ0FBRGdBNUVUQUFBQUFBQUFBQQpWaElBQUE0QU9SRlFBQUFBQUFBQUFGNFNBQUFPQURrUldn
QUFBQUFBQUFCZUVnQUFBZ0FHQUFEeUFBQUFJQUFBQUFBQUFBQUFBQUFBCmFBQUFBQkFDQUFBQkFB
QUFGQUFBQUFBQUFBQkRBQUNBREFBQUFLRURBQUFIQUxnQUFBQ2hBd0FBQ3dDOEFBQUFvUU1BQUFv
QUJ3RUEKQUtRREFBQUxBQXNCQUFDa0F3QUFDZ0FYQVFBQW9RTUFBQXNBR3dFQUFLRURBQUFLQUNj
QkFBQ2hBd0FBQ3dBckFRQUFvUU1BQUFvQQpOd0VBQUtFREFBQUxBRHNCQUFDaEF3QUFDZ0JIQVFB
QW9RTUFBQXNBU3dFQUFLRURBQUFLQUdBQkFBQ2hBd0FBQ3dCa0FRQUFvUU1BCkFBb0F1QUVBQUFD
RUJRQUFBQUIxRVFrRkFBQUFBT2dBQUFBQW93QUFBQUREb1FBQUFBRERCd0FBQUs4REFBQUdBQThB
QUFDdkF3QUEKQmdBVUFBQUFvUU1BQUJRQUdRQUFBS3dEQUFBR0FCOEFBQUNzQXdBQUJnQUVBQUFB
OVFBQUFDUUFBQUFBQUFBQUFBQUFBQ1FBQUFBQQpBQUFBQUFBQUFBQUFBQUJiRXdBQUFBQUFBQVFB
QUFEeEFBQUFlUUFBQUVFQUR4RUFBQUFBQUFBQUFBQUFBQUFrQUFBQUFBQUFBQ01BCkFBQmhGd0FB
QUFBQUFBQUFBRzFsWkdsaFVFUkdVMlZsYTFSdlVtVmhiSFJwYldWSmJXRm5aUUFjQUJJUUFBQUFB
QUFBQUFBQUFBQUEKQUFBQUFBQUFBQUFBQUFBS0FBQVNBQXdSYlJJQUFBQUFBQUFBQUdsdFlXZGxB
QUlBQmdBQUFBRHlBQUFBSUFBQUFBQUFBQUFBQUFBQQpKQUFBQUJBQ0FBQUJBQUFBRkFBQUFBQUFB
QUJEQUFDQURBQUFBS2tEQUFBSEFGZ0FBQUNwQXdBQUN3QmNBQUFBcVFNQUFBb0FvUUFBCkFLd0RB
QUFMQUtVQUFBQ3NBd0FBQ2dDOEFBQUFxUU1BQUFzQXdBQUFBS2tEQUFBS0FLRUFBQUFBaGNCMVhx
RUFBQUFBaXdpTEZRQUEKQUFDTEFsTldWMUZvMlFjQUFHZ0FBQUFBVVA4VkFBQUFBSXY0Vi84VkFB
QUFBSVBFRkl2dzZBQUFBQUNGOW9zZEFBQUFBS01BQUFBQQpkQVpXLzlPRHhBU0YvM1FHVi8vVGc4
UUVvUUFBQUFCZlhsdkRBUUFBQUxjREFBQUdBQW9BQUFBdkF3QUFCZ0FTQUFBQUxnTUFBQVlBCkln
QUFBQ01BQUFBR0FDa0FBQUF0QXdBQUJnQXlBQUFBTEFNQUFBWUFQQUFBQU5nQUFBQVVBRVFBQUFE
cUFBQUFCZ0JKQUFBQXR3TUEKQUFZQVlBQUFBTGNEQUFBR0FBUUFBQUQxQUFBQWhBQUFBQUFBQUFB
QUFBQUFhQUFBQUFBQUFBQUFBQUFBQUFBQUFGc1RBQUFBQUFBQQpCQUFBQUJrQUFBQk9BQUFBQUFB
QUFBQUFBQUFBQUFBQVdCb0FBQUFBQkFBQUFBQUFHZ0FBQUV3QUFBQUFBQUFBQUFBQUFBQUFBQUJZ
CkdnQUFBQUFJQUFBQUFBQWJBQUFBU2dBQUFBQUFBQUFBQUFBQUFBQUFBRmdhQUFBQUFBd0FBQUFB
QVBFQUFBQzZBQUFBUWdBUEVRQUEKQUFBQUFBQUFBQUFBQUdnQUFBQUFBQUFBWndBQUFHRVhBQUFB
QUFBQUFBQUFZM0psWVhSbFRXVmthV0ZRUkVaU1pYUnlaV0YwTXpCSgpiV0ZuWlFBY0FCSVFBQUFB
QUFBQUFBQUFBQUFBREFBQUFBQUFBQUFBQUFBQ0FBQVNBQXdSYlJJQUFBQUFBQUFBQUdsdFlXZGxB
QTRBCk9SRW5BQUFBQUFBQUFGUVNBQUFPQURrUk1BQUFBQUFBQUFCV0VnQUFEZ0E1RVZBQUFBQUFB
QUFBWGhJQUFBNEFPUkZhQUFBQUFBQUEKQUY0U0FBQUNBQVlBQUFEeUFBQUFJQUFBQUFBQUFBQUFB
QUFBYUFBQUFCQUNBQUFCQUFBQUZBQUFBQUFBQUFCRUFBQ0FEQUFBQUxRRApBQUFIQUxnQUFBQzBB
d0FBQ3dDOEFBQUF0QU1BQUFvQUFnRUFBTGNEQUFBTEFBWUJBQUMzQXdBQUNnQVNBUUFBdEFNQUFB
c0FGZ0VBCkFMUURBQUFLQUNJQkFBQzBBd0FBQ3dBbUFRQUF0QU1BQUFvQU1nRUFBTFFEQUFBTEFE
WUJBQUMwQXdBQUNnQkNBUUFBdEFNQUFBc0EKUmdFQUFMUURBQUFLQUZ3QkFBQzBBd0FBQ3dCZ0FR
QUF0QU1BQUFvQXVBRUFBQUNFQlFBQUFBQjFFUWtGQUFBQUFPZ0FBQUFBb3dBQQpBQUREb1FBQUFB
RERCd0FBQU1JREFBQUdBQThBQUFEQ0F3QUFCZ0FVQUFBQXRBTUFBQlFBR1FBQUFMOERBQUFHQUI4
QUFBQy9Bd0FBCkJnQUVBQUFBOVFBQUFDUUFBQUFBQUFBQUFBQUFBQ1FBQUFBQUFBQUFBQUFBQUFB
QUFBQmJFd0FBQUFBQUFBUUFBQUR4QUFBQWRBQUEKQUR3QUR4RUFBQUFBQUFBQUFBQUFBQUFrQUFB
QUFBQUFBQ01BQUFCaEZ3QUFBQUFBQUFBQUFHMWxaR2xoVUVSR1VtVjBjbVZoZERNdwpTVzFoWjJV
QUhBQVNFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNnQUFFZ0FNRVcwU0FBQUFBQUFB
QUFCcGJXRm5aUUFDCkFBWUE4Z0FBQUNBQUFBQUFBQUFBQUFBQUFDUUFBQUFRQWdBQUFRQUFBQlFB
QUFBQUFBQUFSQUFBZ0F3QUFBQzhBd0FBQndCWUFBQUEKdkFNQUFBc0FYQUFBQUx3REFBQUtBSndB
QUFDL0F3QUFDd0NnQUFBQXZ3TUFBQW9BdEFBQUFMd0RBQUFMQUxnQUFBQzhBd0FBQ2dDTApTUVF6
d0lQNURBK0hIZ0VBQVA4a2pRQUFBQUM0QVFBQUFJUUZBQUFBQUhVUUNRVUFBQUFBNkFBQUFBQ2pB
QUFBQUtFQUFBQUF3N2dCCkFBQUFoQVVBQUFBQWRSQUpCUUFBQUFEb0FBQUFBS01BQUFBQW9RQUFB
QUREdUFFQUFBQ0VCUUFBQUFCMUVBa0ZBQUFBQU9nQUFBQUEKb3dBQUFBQ2hBQUFBQU1PNEFRQUFB
SVFGQUFBQUFIVVFDUVVBQUFBQTZBQUFBQUNqQUFBQUFLRUFBQUFBdzdnQkFBQUFoQVVBQUFBQQpk
UkFKQlFBQUFBRG9BQUFBQUtNQUFBQUFvUUFBQUFERHVBRUFBQUNFQlFBQUFBQjFFQWtGQUFBQUFP
Z0FBQUFBb3dBQUFBQ2hBQUFBCkFNTzRBUUFBQUlRRkFBQUFBSFVRQ1FVQUFBQUE2QUFBQUFDakFB
QUFBS0VBQUFBQXc3Z0JBQUFBaEFVQUFBQUFkUkFKQlFBQUFBRG8KQUFBQUFLTUFBQUFBb1FBQUFB
RERqVWtBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QQpBQUFBQUFBQUFBQUFBQUFBQUJFQUFBRFJBd0FBQmdBY0FBQUFQUU1BQUFZQUpBQUFBRDBEQUFB
R0FDa0FBQUFyQXdBQUZBQXVBQUFBCk9nTUFBQVlBTXdBQUFEb0RBQUFHQUQ4QUFBQlFBd0FBQmdC
SEFBQUFVQU1BQUFZQVRBQUFBRUlEQUFBVUFGRUFBQUJOQXdBQUJnQlcKQUFBQVRRTUFBQVlBWWdB
QUFHTURBQUFHQUdvQUFBQmpBd0FBQmdCdkFBQUFWUU1BQUJRQWRBQUFBR0FEQUFBR0FIa0FBQUJn
QXdBQQpCZ0NGQUFBQWlRTUFBQVlBalFBQUFJa0RBQUFHQUpJQUFBQjdBd0FBRkFDWEFBQUFoZ01B
QUFZQW5BQUFBSVlEQUFBR0FLZ0FBQUIyCkF3QUFCZ0N3QUFBQWRnTUFBQVlBdFFBQUFHZ0RBQUFV
QUxvQUFBQnpBd0FBQmdDL0FBQUFjd01BQUFZQXl3QUFBSndEQUFBR0FOTUEKQUFDY0F3QUFCZ0RZ
QUFBQWpnTUFBQlFBM1FBQUFKa0RBQUFHQU9JQUFBQ1pBd0FBQmdEdUFBQUFyd01BQUFZQTlnQUFB
SzhEQUFBRwpBUHNBQUFDaEF3QUFGQUFBQVFBQXJBTUFBQVlBQlFFQUFLd0RBQUFHQUJFQkFBRENB
d0FBQmdBWkFRQUF3Z01BQUFZQUhnRUFBTFFECkFBQVVBQ01CQUFDL0F3QUFCZ0FvQVFBQXZ3TUFB
QVlBTUFFQUFNc0RBQUFHQURRQkFBRFBBd0FBQmdBNEFRQUF6UU1BQUFZQVBBRUEKQU1nREFBQUdB
RUFCQUFESUF3QUFCZ0JFQVFBQXlBTUFBQVlBU0FFQUFNZ0RBQUFHQUV3QkFBREpBd0FBQmdCUUFR
QUF5Z01BQUFZQQpWQUVBQU5BREFBQUdBRmdCQUFEUUF3QUFCZ0JjQVFBQXpnTUFBQVlBWUFFQUFN
d0RBQUFHQUFRQUFBRDFBQUFBSkFBQUFBQUFBQUFBCkFBQUFaQUVBQUFBQUFBQUFBQUFBQUFBQUFG
c1RBQUFBQUFBQUJBQUFBUEVBQUFBTEFRQUFSZ0FRRVFBQUFBQUFBQUFBQUFBQUFHUUIKQUFBQUFB
QUFMQUVBQU40V0FBQUFBQUFBQUFBQVRXVmthV0ZUYUdGeVpXUlZTVWx0WVdkbFJXeGxiV1Z1ZERv
NmFXMWhaMlVBSEFBUwpFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQUFEUUFNRVFB
QUFBQUFBQUFBQUFBQUR3QUZFUUFBQUFBQUFBQWtURTR4Ck1nQVBBQVVSQUFBQUFBQUFBQ1JNVGpF
eEFBOEFCUkVBQUFBQUFBQUFKRXhPTVRBQURnQUZFUUFBQUFBQUFBQWtURTQ1QUE0QUJSRUEKQUFB
QUFBQUFKRXhPT0FBT0FBVVJBQUFBQUFBQUFDUk1UamNBRGdBRkVRQUFBQUFBQUFBa1RFNDJBQTRB
QlJFQUFBQUFBQUFBSkV4TwpOUUFOQUFZUjFoWUFBQklBZEdocGN3QUNBQVlBQVBJQUFBQ29BQUFB
QUFBQUFBQUFBQUJrQVFBQUVBSUFBQklBQUFDY0FBQUFBQUFBCkFHY0JBSUFBQUFBQWFnRUFnQlVB
QUFCdEFRQ0FOd0FBQUp3QkFJQTRBQUFBY0FFQWdGb0FBQUNjQVFDQVd3QUFBSE1CQUlCOUFBQUEK
bkFFQWdINEFBQUIyQVFDQW9BQUFBSndCQUlDaEFBQUFlUUVBZ01NQUFBQ2NBUUNBeEFBQUFId0JB
SURtQUFBQW5BRUFnT2NBQUFCLwpBUUNBQ1FFQUFKd0JBSUFLQVFBQWdnRUFnQ3dCQUFDY0FRQ0FE
QUFBQU1jREFBQUhBRmdBQUFESEF3QUFDd0JjQUFBQXh3TUFBQW9BCnBnQUFBTkVEQUFBTEFLb0FB
QURSQXdBQUNnQ3hBQUFBMEFNQUFBc0F0UUFBQU5BREFBQUtBTUlBQUFEUEF3QUFDd0RHQUFBQXp3
TUEKQUFvQTB3QUFBTTREQUFBTEFOY0FBQURPQXdBQUNnRGtBQUFBelFNQUFBc0E2QUFBQU0wREFB
QUtBUFFBQUFETUF3QUFDd0Q0QUFBQQp6QU1BQUFvQUJBRUFBTXNEQUFBTEFBZ0JBQURMQXdBQUNn
QVVBUUFBeWdNQUFBc0FHQUVBQU1vREFBQUtBQ1FCQUFESkF3QUFDd0FvCkFRQUF5UU1BQUFvQVRB
RUFBTWNEQUFBTEFGQUJBQURIQXdBQUNnQlJnM2tNQWxOVlZsZUpUQ1FRZFJmb0FBQUFBRkQvRlFB
QUFBQ0QKeEFSZlhsMWJXY0lVQUl0MEpDaUxmQ1FraTBRa0dHb0FWbGRRL3hVQUFBQUFVSWxFSkN6
L0ZRQUFBQUNMYkNRd2kwd2tOSVBFQkl2WQppOFNKS0lsSUJJbDRDSWx3RFA4VkFBQUFBTm5naTFR
a01GR0x4TmxjSkJDSktJbFFCSWw0Q0lsd0RQOFZBQUFBQU5uZ2c4UU0yUndrClUvOFZBQUFBQUdv
UlUvOFZBQUFBQUl0TUpDU0R4QlRvQUFBQUFJdE1KQ0JRZyt3UWk4U0pLSWxJQklsNENGT0pjQXov
RlFBQUFBQ0wKVENRb2l4R0R4QWlMeElrb2kyd2tNSWxvQklsNENJbHdESXRDR0ZQLzBJdEVKQmhm
WGwxYldjSVVBQkFBQUFESEF3QUFGQUFYQUFBQQoxd01BQUFZQU9RQUFBTjRBQUFBR0FFUUFBQURk
QUFBQUJnQmtBQUFBRUFFQUFBWUFnZ0FBQUZzQkFBQUdBSkVBQUFEeUFBQUFCZ0NhCkFBQUFMd0VB
QUFZQXBnQUFBTWNEQUFBVUFNSUFBQUQ3QUFBQUJnQUVBQUFBOVFBQUFHUUFBQUFBQUFBQUFBQUFB
UElBQUFBRUFBQUEKRkFBQUFBQUFBQUJiRXdBQURRQUlBQVFBQUFBR0FBQUE3QUFBQUFRQUFBQVVB
QUFBQUFBQUFHQWVBQUFIQUF3QUFBQUFBQWNBQUFEcgpBQUFBQkFBQUFCUUFBQUFBQUFBQXlCNEFB
QVlBRUFBQUFBQUE4UUFBQUZrQkFBQldBQkFSQUFBQUFBQUFBQUFBQUFBQThnQUFBQTBBCkFBRHFB
QUFBMkJZQUFBQUFBQUFBQUFCTlpXUnBZVk5vWVhKbFpGVkpTVzFoWjJWRmJHVnRaVzUwT2pwamNt
VmhkR1ZDWVdOclozSnYKZFc1a1NXMWhaMlVBSEFBU0VBUUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFB
QUFBQUFBQWdBQURRQUdFZEVXQUFBU0FIUm9hWE1BRWdBTApFUVFBQUFBcEVBQUFZMjl1ZEdWNGRB
QVBBQXNSQ0FBQUFBNFFBQUJ5WldOMEFCa0FDeEVFQUFBQWJSSUFBR052Ykc5eVpXUkRiMjUwClpX
NTBBQTRBT1JFVkFBQUFBQUFBQU1RVUFBQU9BRGtSTndBQUFBQUFBQUJ5RWdBQURnQTVFVUlBQUFB
QUFBQUFkQklBQUE0QU9SRmkKQUFBQUFBQUFBR0lTQUFBT0FEa1JnQUFBQUFBQUFBQmlFZ0FBRGdB
NUVZOEFBQUFBQUFBQVlCSUFBQTRBT1JHWUFBQUFBQUFBQUkwWApBQUFPQURrUndBQUFBQUFBQUFC
M0VnQUFEZ0E1RWVRQUFBQUFBQUFBMXhZQUFBSUFCZ0FBQUFEeUFBQUFlQUFBQUFBQUFBQUFBQUFB
CjhnQUFBQkFDQUFBTUFBQUFiQUFBQUFBQUFBQ3FBUUNBQVFBQUFLc0JBSUFQQUFBQXJBRUFnQjRB
QUFDNUFRQ0FKZ0FBQUs0QkFJQTkKQUFBQXJ3RUFnRWdBQUFDeEFRQ0FsUUFBQUxNQkFJQ2VBQUFB
dEFFQWdNWUFBQUMyQVFDQTVnQUFBTGdCQUlEcUFBQUF1UUVBZ0F3QQpBQURXQXdBQUJ3Q1lBQUFB
MWdNQUFBc0FuQUFBQU5ZREFBQUtBRUVCQUFEV0F3QUFDd0JGQVFBQTFnTUFBQW9BVVFFQUFOWURB
QUFMCkFGVUJBQURXQXdBQUNnQmhBUUFBMWdNQUFBc0FaUUVBQU5ZREFBQUtBSEVCQUFEV0F3QUFD
d0IxQVFBQTFnTUFBQW9BZ1FFQUFOWUQKQUFBTEFJVUJBQURXQXdBQUNnQ1JBUUFBMWdNQUFBc0Fs
UUVBQU5ZREFBQUtBS0VCQUFEV0F3QUFDd0NsQVFBQTFnTUFBQW9Bc1FFQQpBTllEQUFBTEFMVUJB
QURXQXdBQUNnREJBUUFBMWdNQUFBc0F4UUVBQU5ZREFBQUtBTndCQUFEV0F3QUFDd0RnQVFBQTFn
TUFBQW9BClZvdng2QUFBQUFDRndIUWdpODdvQUFBQUFGRC9GUUFBQUFDTHlJdEVKQXlEeEFTSkNJ
bFFCRjdDQkFDTERRQUFBQUNMRVl0RUpBaUwKU1FTSkVJbElCRjdDQkFBRUFBQUF4d01BQUJRQUR3
QUFBTWNEQUFBVUFCWUFBQUQwQUFBQUJnQXVBQUFBVkFBQUFBWUFCQUFBQVBVQQpBQUJFQUFBQUFB
QUFBQUFBQUFCRUFBQUFBQUFBQUFRQUFBQUFBQUFBV3hNQUFBTUFBQUFFQUFBQUFRQUFBRUFBQUFB
QUFBQUFCQUFBCkFBQUFBQUJiRXdBQUFnQUVBQUFBQUFEeEFBQUFqd0FBQUV3QUVCRUFBQUFBQUFB
QUFBQUFBQUJFQUFBQUF3QUFBRUVBQUFEWkZnQUEKQUFBQUFBQUFBRTFsWkdsaFUyaGhjbVZrVlVs
SmJXRm5aVVZzWlcxbGJuUTZPbTVoZEhWeVlXeFRhWHBsQUJ3QUVoQUFBQUFBQUFBQQpBQUFBQUFB
RUFBQUFBQUFBQUFBQUFBSUFBQTBBQmhIV0ZnQUFFZ0IwYUdsekFBNEFPUkVVQUFBQUFBQUFBSG9Y
QUFBQ0FBWUFBUElBCkFBQklBQUFBQUFBQUFBQUFBQUJFQUFBQUVBSUFBQVlBQUFBOEFBQUFBQUFB
QU4wQkFJQURBQUFBM2dFQWdBd0FBQURmQVFDQUtRQUEKQU9FQkFJQXNBQUFBNEFFQWdFRUFBQURo
QVFDQURBQUFBTndEQUFBSEFIZ0FBQURjQXdBQUN3QjhBQUFBM0FNQUFBb0Exd0FBQU53RApBQUFM
QU5zQUFBRGNBd0FBQ2dEd0FBQUEzQU1BQUFzQTlBQUFBTndEQUFBS0FGR0RlUVFKVTFWV1Y0bE1K
QkIxTW90VUpCeUQ3QkNMCnhJa1FpMVFrTUlsUUJJdFVKRFNKVUFpTFZDUTRpVkFNaTBRa0tGRG9B
QUFBQUY5ZVhWdFp3aFFBdUFFQUFBQ0VCUUFBQUFCMUx0bm8KQ1FVQUFBQUFnK3dRMlZRa0RObGNK
QWpaQlFBQUFBRFpWQ1FFMlJ3ay94VUFBQUFBZzhRUW93QUFBQUNMZkNRb2kxd2tKSXRNSkJocQpB
RmRUVWY4VkFBQUFBSXZvVmY4VkFBQUFBSXZ3YWdCVy94VUFBQUFBaTFRa09JdE1KRHlEeEF5THhJ
a1FpVWdFaVZnSWlYZ00veFVBCkFBQUEyZUNMVkNRc1VZdE1KRFRaWENRUWk4U0pFSWxJQklsWUNJ
bDREUDhWQUFBQUFObmdnOFFNMlJ3a1Z2OFZBQUFBQUdvUlZ2OFYKQUFBQUFJdE1KQ1NEeEJUb0FB
QUFBSXRVSkJ5TFRDUWdVSVBzRUl2RWlSQ0pTQVNKV0FoV2lYZ00veFVBQUFBQWFoSlcveFVBQUFB
QQppeFVBQUFBQVVsYi9GUUFBQUFDTERRQUFBQUNMRVlQRUdJdkVpUkNMVVFTSlVBU0xVUWlMU1F5
SlVBaFdpVWdNL3hVQUFBQUFWdjhWCkFBQUFBSVBFR0l2RlgxNWRXMW5DRkFBMUFBQUExZ01BQUJR
QVNBQUFBT3dEQUFBR0FGSUFBQURzQXdBQUJnQmpBQUFBNlFNQUFBWUEKY0FBQUFPWURBQUFHQUhn
QUFBRGxBd0FBQmdDUEFBQUEzZ0FBQUFZQW1BQUFBTjBBQUFBR0FLTUFBQURpQXdBQUJnREJBQUFB
RUFFQQpBQVlBNHdBQUFGc0JBQUFHQVBJQUFBRHlBQUFBQmdEN0FBQUFMd0VBQUFZQUJ3RUFBTWNE
QUFBVUFDY0JBQUQ3QUFBQUJnQXdBUUFBCkx3RUFBQVlBTmdFQUFPVURBQUFHQUQ0QkFBQXVBUUFB
QmdCRUFRQUFMUUVBQUFZQVpnRUFBQ3dCQUFBR0FHMEJBQUFwQVFBQUJnQUUKQUFBQTlRQUFBR1FB
QUFBQUFBQUFBQUFBQUg0QkFBQUVBQUFBRkFBQUFBQUFBQUJiRXdBQURRQUlBQVFBQUFBR0FBQUFl
QUVBQUFRQQpBQUFVQUFBQUFBQUFBR0FlQUFBSEFBd0FBQUFBQUFjQUFBQjNBUUFBQkFBQUFCUUFB
QUFBQUFBQXlCNEFBQVlBRUFBQUFBQUE4UUFBCkFKZ0JBQUJZQUJBUkFBQUFBQUFBQUFBQUFBQUFm
Z0VBQUEwQUFBQjJBUUFBNkJZQUFBQUFBQUFBQUFCTlpXUnBZVk5vWVhKbFpGVkoKUTBOSmJXRm5a
VVZzWlcxbGJuUTZPbU55WldGMFpVSmhZMnRuY205MWJtUkpiV0ZuWlFBY0FCSVFCQUFBQUFBQUFB
QUFBQUFBRUFBQQpBQUFBQUFBQUFBQUNBQUFOQUFZUjV4WUFBQklBZEdocGN3QVNBQXNSQkFBQUFD
a1FBQUJqYjI1MFpYaDBBQThBQ3hFSUFBQUFEaEFBCkFISmxZM1FBRmdBTUViVVRBQUFBQUFBQUFB
QmliSFZsUTI5c2IzSUFEZ0E1RVc0QUFBQUFBQUFBdnhjQUFBNEFPUkdOQUFBQUFBQUEKQUhJU0FB
QU9BRGtSbGdBQUFBQUFBQUIwRWdBQURnQTVFYUVBQUFBQUFBQUF3UmNBQUE0QU9SRy9BQUFBQUFB
QUFHSVNBQUFPQURrUgo0UUFBQUFBQUFBQmlFZ0FBRGdBNUVmQUFBQUFBQUFBQVlCSUFBQTRBT1JI
NUFBQUFBQUFBQUkwWEFBQU9BRGtSSlFFQUFBQUFBQUIzCkVnQUFEZ0E1RVM0QkFBQUFBQUFBalJj
QUFBNEFPUkU4QVFBQUFBQUFBSThYQUFBT0FEa1JaQUVBQUFBQUFBQjFFZ0FBRGdBNUVXc0IKQUFB
QUFBQUFqQkFBQUFJQUJnRHlBQUFBb0FBQUFBQUFBQUFBQUFBQWZnRUFBQkFDQUFBUkFBQUFsQUFB
QUFBQUFBRGtBUUNBQVFBQQpBT1VCQUlBUEFBQUE1Z0VBZ0RrQUFBRDhBUUNBUVFBQUFPa0JBSUI4
QUFBQTZ3RUFnSlVBQUFEc0FRQ0FuZ0FBQU80QkFJQ25BQUFBCjhBRUFnUFlBQUFEeEFRQ0Evd0FB
QVBNQkFJQXJBUUFBOVFFQWdEUUJBQUQyQVFDQVFnRUFBUGNCQUlCcUFRQUErUUVBZ0hRQkFBRDcK
QVFDQWRnRUFBUHdCQUlBTUFBQUE0UU1BQUFjQW1BQUFBT0VEQUFBTEFKd0FBQURoQXdBQUNnQXNB
UUFBNVFNQUFBc0FNQUVBQU9VRApBQUFLQUVBQkFBRGhBd0FBQ3dCRUFRQUE0UU1BQUFvQVVBRUFB
T0VEQUFBTEFGUUJBQURoQXdBQUNnQmdBUUFBNFFNQUFBc0FaQUVBCkFPRURBQUFLQUhBQkFBRGhB
d0FBQ3dCMEFRQUE0UU1BQUFvQWdBRUFBT0VEQUFBTEFJUUJBQURoQXdBQUNnQ1FBUUFBNFFNQUFB
c0EKbEFFQUFPRURBQUFLQUtBQkFBRGhBd0FBQ3dDa0FRQUE0UU1BQUFvQXNBRUFBT0VEQUFBTEFM
UUJBQURoQXdBQUNnREFBUUFBNFFNQQpBQXNBeEFFQUFPRURBQUFLQU5BQkFBRGhBd0FBQ3dEVUFR
QUE0UU1BQUFvQTRBRUFBT0VEQUFBTEFPUUJBQURoQXdBQUNnRHdBUUFBCjRRTUFBQXNBOUFFQUFP
RURBQUFLQUFBQ0FBRGhBd0FBQ3dBRUFnQUE0UU1BQUFvQUdBSUFBT0VEQUFBTEFCd0NBQURoQXdB
QUNnRE4KekV3K2k4SEhRQXdBQUFBQXh3QUFBQUFBd3dzQUFBRDBBd0FBQmdBRUFBQUE5UUFBQUNR
QUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQQpBQUFBQUFBQUFBQmJFd0FBQWdBQUFBUUFBQUR4QUFB
QWtRQUFBRjRBRUJFQUFBQUFBQUFBQUFBQUFBQVFBQUFBQWdBQUFBOEFBQUR2CkZnQUFBQUFBQUFB
QUFFMWxaR2xoVTJoaGNtVmtWVWxEUTBsdFlXZGxSV3hsYldWdWREbzZUV1ZrYVdGVGFHRnlaV1JW
U1VORFNXMWgKWjJWRmJHVnRaVzUwQUJ3QUVoQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
SUFvQUFBMEFCaEhuRmdBQUVnQjBhR2x6QUFJQQpCZ0FBQUFBTUFBQUE4UU1BQUFjQVdBQUFBUEVE
QUFBTEFGd0FBQUR4QXdBQUNnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQTlnTUFBQVlBQkFBQUFMWUJBQUFHQUFnQUFBQk5BQUFBQmdBTUFBQUEz
QU1BQUFZQUVBQUEKQUVjQUFBQUdBQlFBQUFCSUFBQUFCZ0FZQUFBQW5BRUFBQVlBSEFBQUFPRURB
QUFHQUNBQUFBRDhBd0FBQmdDd0FjTUVBQUFBOVFBQQpBQ1FBQUFBQUFBQUFBQUFBQUFNQUFBQUFB
QUFBQUFBQUFBQUFBQUJiRXdBQUFBQUFBQVFBQUFEeEFBQUFpZ0FBQUZjQUVCRUFBQUFBCkFBQUFB
QUFBQUFBREFBQUFBQUFBQUFJQUFBRHJGZ0FBQUFBQUFBQUFBRTFsWkdsaFUyaGhjbVZrVlVsRFEw
bHRZV2RsUld4bGJXVnUKZERvNlkyOXVjM1J5WVdsdVFYTndaV04wVW1GMGFXOEFIQUFTRUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdBZ0FBRFFBRwpFZW9XQUFBU0FIUm9hWE1BQWdBR0FB
QUE4Z0FBQUNBQUFBQUFBQUFBQUFBQUFBTUFBQURBQmdBQUFRQUFBQlFBQUFBQUFBQUFNQUFBCmdB
d0FBQUQ4QXdBQUJ3QllBQUFBL0FNQUFBc0FYQUFBQVB3REFBQUtBTXdBQUFEOEF3QUFDd0RRQUFB
QS9BTUFBQW9BeHdFQUFBQUEKd3dJQUFBQkNBQUFBQmdBRUFBQUE5UUFBQUNRQUFBQUFBQUFBQUFB
QUFBY0FBQUFBQUFBQUFBQUFBQUFBQUFCYkV3QUFBQUFBQUFRQQpBQUR4QUFBQWtnQUFBRjhBRUJF
QUFBQUFBQUFBQUFBQUFBQUhBQUFBQUFBQUFBWUFBQUR2RmdBQUFBQUFBQUFBQUUxbFpHbGhVMmho
CmNtVmtWVWxEUTBsdFlXZGxSV3hsYldWdWREbzZmazFsWkdsaFUyaGhjbVZrVlVsRFEwbHRZV2Rs
Uld4bGJXVnVkQUFjQUJJUUFBQUEKQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBS0FBQU5BQVlS
NXhZQUFCSUFkR2hwY3dBQ0FBWUFBQUFNQUFBQUFRUUFBQWNBV0FBQQpBQUVFQUFBTEFGd0FBQUFC
QkFBQUNnRDJSQ1FFQVZhTDhjY0dBQUFBQUhRSlZ1Z0FBQUFBZzhRRWk4WmV3Z1FBQ2dBQUFFSUFB
QUFHCkFCSUFBQUJ6QUFBQUZBQUVBQUFBOVFBQUFFUUFBQUFBQUFBQUFBQUFBQjhBQUFBQUFBQUFC
QUFBQUFBQUFBQmJFd0FBQ0FBQUFBUUEKQUFBR0FBQUFGZ0FBQUFBQUFBQUVBQUFBQUFBQUFGc1RB
QUFDQUFRQUFBQUFBUEVBQUFDU0FBQUFYd0FRRVFBQUFBQUFBQUFBQUFBQQpBQjhBQUFBSUFBQUFI
QUFBQVBNV0FBQUFBQUFBQUFBQVRXVmthV0ZUYUdGeVpXUlZTVU5EU1cxaFoyVkZiR1Z0Wlc1ME9q
cGdjMk5oCmJHRnlJR1JsYkdWMGFXNW5JR1JsYzNSeWRXTjBiM0luQUJ3QUVoQUFBQUFBQUFBQUFB
QUFBQUFFQUFBQUFBQUFBQUFBSUFJQUFBMEEKQmhIbkZnQUFFZ0IwYUdsekFBSUFCZ0FBQUF3QUFB
RDFBd0FBQndCNEFBQUE5UU1BQUFzQWZBQUFBUFVEQUFBS0FQWkVKQVFCVm92eAp4d1lBQUFBQWRB
bFc2QUFBQUFDRHhBU0x4bDdDQkFBS0FBQUFRZ0FBQUFZQUVnQUFBSE1BQUFBVUFBUUFBQUQxQUFB
QVJBQUFBQUFBCkFBQUFBQUFBSHdBQUFBQUFBQUFFQUFBQUFBQUFBRnNUQUFBSUFBQUFCQUFBQUFZ
QUFBQVdBQUFBQUFBQUFBUUFBQUFBQUFBQVd4TUEKQUFJQUJBQUFBQUFBOFFBQUFKVUFBQUJpQUJB
UkFBQUFBQUFBQUFBQUFBQUFId0FBQUFnQUFBQWNBQUFBeWhZQUFBQUFBQUFBQUFCTgpaV1JwWVZO
b1lYSmxaRlZKUW1GamEyZHliM1Z1WkVWc1pXMWxiblE2T21CelkyRnNZWElnWkdWc1pYUnBibWNn
WkdWemRISjFZM1J2CmNpY0FIQUFTRUFBQUFBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQUFBQWdBZ0FB
RFFBR0VjQVdBQUFTQUhSb2FYTUFBZ0FHQUFBQUFBd0EKQUFDMUFnQUFCd0I0QUFBQXRRSUFBQXNB
ZkFBQUFMVUNBQUFLQVBaRUpBUUJWb3Z4eHdZQUFBQUFkQWxXNkFBQUFBQ0R4QVNMeGw3QwpCQUFL
QUFBQVFnQUFBQVlBRWdBQUFITUFBQUFVQUFRQUFBRDFBQUFBUkFBQUFBQUFBQUFBQUFBQUh3QUFB
QUFBQUFBRUFBQUFBQUFBCkFGc1RBQUFJQUFBQUJBQUFBQVlBQUFBV0FBQUFBQUFBQUFRQUFBQUFB
QUFBV3hNQUFBSUFCQUFBQUFBQThRQUFBS0VBQUFCdUFCQVIKQUFBQUFBQUFBQUFBQUFBQUh3QUFB
QWdBQUFBY0FBQUFCQmNBQUFBQUFBQUFBQUJOWldScFlWTm9ZWEpsWkZWSlZtOXNkVzFsVTJ4cApa
R1Z5UW1GamEyZHliM1Z1WkVWc1pXMWxiblE2T21CelkyRnNZWElnWkdWc1pYUnBibWNnWkdWemRI
SjFZM1J2Y2ljQUhBQVNFQUFBCkFBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQUFBQWdBZ0FBRFFBR0Vm
Y1dBQUFTQUhSb2FYTUFBZ0FHQUFBQUFBd0FBQURBQWdBQUJ3QjQKQUFBQXdBSUFBQXNBZkFBQUFN
QUNBQUFLQVBaRUpBUUJWb3Z4eHdZQUFBQUFkQWxXNkFBQUFBQ0R4QVNMeGw3Q0JBQUtBQUFBUWdB
QQpBQVlBRWdBQUFITUFBQUFVQUFRQUFBRDFBQUFBUkFBQUFBQUFBQUFBQUFBQUh3QUFBQUFBQUFB
RUFBQUFBQUFBQUZzVEFBQUlBQUFBCkJBQUFBQVlBQUFBV0FBQUFBQUFBQUFRQUFBQUFBQUFBV3hN
QUFBSUFCQUFBQUFBQThRQUFBSjRBQUFCckFCQVJBQUFBQUFBQUFBQUEKQUFBQUh3QUFBQWdBQUFB
Y0FBQUFLQmNBQUFBQUFBQUFBQUJOWldScFlWTm9ZWEpsWkZWSlZHbHRaV3hwYm1WVGJHbGtaWEpV
YUhWdApZa1ZzWlcxbGJuUTZPbUJ6WTJGc1lYSWdaR1ZzWlhScGJtY2daR1Z6ZEhKMVkzUnZjaWNB
SEFBU0VBQUFBQUFBQUFBQUFBQUFBQVFBCkFBQUFBQUFBQUFBZ0FnQUFEUUFHRVJvWEFBQVNBSFJv
YVhNQUFnQUdBQUFBREFBQUFNc0NBQUFIQUhnQUFBRExBZ0FBQ3dCOEFBQUEKeXdJQUFBb0E5a1Fr
QkFGV2kvSEhCZ0FBQUFCMENWYm9BQUFBQUlQRUJJdkdYc0lFQUFvQUFBQkNBQUFBQmdBU0FBQUFj
d0FBQUJRQQpCQUFBQVBVQUFBQkVBQUFBQUFBQUFBQUFBQUFmQUFBQUFBQUFBQVFBQUFBQUFBQUFX
eE1BQUFnQUFBQUVBQUFBQmdBQUFCWUFBQUFBCkFBQUFCQUFBQUFBQUFBQmJFd0FBQWdBRUFBQUFB
QUR4QUFBQWtBQUFBRjBBRUJFQUFBQUFBQUFBQUFBQUFBQWZBQUFBQ0FBQUFCd0EKQUFBNkZ3QUFB
QUFBQUFBQUFFMWxaR2xoVTJoaGNtVmtWVWxXYjJ4MWJXVlRiR2xrWlhJNk9tQnpZMkZzWVhJZ1pH
VnNaWFJwYm1jZwpaR1Z6ZEhKMVkzUnZjaWNBSEFBU0VBQUFBQUFBQUFBQUFBQUFBQVFBQUFBQUFB
QUFBQUFnQWdBQURRQUdFU3dYQUFBU0FIUm9hWE1BCkFnQUdBQXdBQUFEV0FnQUFCd0I0QUFBQTFn
SUFBQXNBZkFBQUFOWUNBQUFLQVBaRUpBUUJWb3Z4eHdZQUFBQUFkQWxXNkFBQUFBQ0QKeEFTTHhs
N0NCQUFLQUFBQVFnQUFBQVlBRWdBQUFITUFBQUFVQUFRQUFBRDFBQUFBUkFBQUFBQUFBQUFBQUFB
QUh3QUFBQUFBQUFBRQpBQUFBQUFBQUFGc1RBQUFJQUFBQUJBQUFBQVlBQUFBV0FBQUFBQUFBQUFR
QUFBQUFBQUFBV3hNQUFBSUFCQUFBQUFBQThRQUFBSndBCkFBQnBBQkFSQUFBQUFBQUFBQUFBQUFB
QUh3QUFBQWdBQUFBY0FBQUFUQmNBQUFBQUFBQUFBQUJOWldScFlWTm9ZWEpsWkZWSlZtOXMKZFcx
bFUyeHBaR1Z5VkdoMWJXSkZiR1Z0Wlc1ME9qcGdjMk5oYkdGeUlHUmxiR1YwYVc1bklHUmxjM1J5
ZFdOMGIzSW5BQndBRWhBQQpBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQUFBSUFJQUFBMEFCaEUr
RndBQUVnQjBhR2x6QUFJQUJnQU1BQUFBNFFJQUFBY0FlQUFBCkFPRUNBQUFMQUh3QUFBRGhBZ0FB
Q2dDTHdjY0FBQUFBQU1NRUFBQUFKd1FBQUFZQUJBQUFBUFVBQUFBa0FBQUFBQUFBQUFBQUFBQUoK
QUFBQUFBQUFBQUFBQUFBQUFBQUFXeE1BQUFJQUFBQUVBQUFBOFFBQUFKRUFBQUJlQUJBUkFBQUFB
QUFBQUFBQUFBQUFDUUFBQUFJQQpBQUFJQUFBQUVoY0FBQUFBQUFBQUFBQk5aV1JwWVZOb1lYSmxa
RlZKVkdsdFpXeHBibVZUYkdsa1pYSTZPazFsWkdsaFUyaGhjbVZrClZVbFVhVzFsYkdsdVpWTnNh
V1JsY2dBY0FCSVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBS0FBQU5BQVlSQ0JjQUFC
SUEKZEdocGN3QUNBQVlBQUFBQURBQUFBQ1FFQUFBSEFGZ0FBQUFrQkFBQUN3QmNBQUFBSkFRQUFB
b0FBQUFBQUFBQUFBQUFBQUFBQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUNrRUFBQUdBQVFBQUFBN0Fn
QUFCZ0FJQUFBQVRRQUFBQVlBREFBQUFGTUFBQUFHQUJBQUFBQkhBQUFBCkJnQVVBQUFBU0FBQUFB
WUF4d0VBQUFBQXd3SUFBQUJDQUFBQUJnQUVBQUFBOVFBQUFDUUFBQUFBQUFBQUFBQUFBQWNBQUFB
QUFBQUEKQUFBQUFBQUFBQUJiRXdBQUFBQUFBQVFBQUFEeEFBQUFrZ0FBQUY4QUVCRUFBQUFBQUFB
QUFBQUFBQUFIQUFBQUFBQUFBQVlBQUFBUwpGd0FBQUFBQUFBQUFBRTFsWkdsaFUyaGhjbVZrVlVs
VWFXMWxiR2x1WlZOc2FXUmxjam82ZmsxbFpHbGhVMmhoY21Wa1ZVbFVhVzFsCmJHbHVaVk5zYVdS
bGNnQWNBQklRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQUtBQUFOQUFZUkNCY0FBQklB
ZEdocGN3QUMKQUFZQUFBQU1BQUFBTHdRQUFBY0FXQUFBQUM4RUFBQUxBRndBQUFBdkJBQUFDZ0Qy
UkNRRUFWYUw4Y2NHQUFBQUFIUUpWdWdBQUFBQQpnOFFFaThaZXdnUUFDZ0FBQUVJQUFBQUdBQklB
QUFCekFBQUFGQUFFQUFBQTlRQUFBRVFBQUFBQUFBQUFBQUFBQUI4QUFBQUFBQUFBCkJBQUFBQUFB
QUFCYkV3QUFDQUFBQUFRQUFBQUdBQUFBRmdBQUFBQUFBQUFFQUFBQUFBQUFBRnNUQUFBQ0FBUUFB
QUFBQVBFQUFBQ1MKQUFBQVh3QVFFUUFBQUFBQUFBQUFBQUFBQUI4QUFBQUlBQUFBSEFBQUFCWVhB
QUFBQUFBQUFBQUFUV1ZrYVdGVGFHRnlaV1JWU1ZScApiV1ZzYVc1bFUyeHBaR1Z5T2pwZ2MyTmhi
R0Z5SUdSbGJHVjBhVzVuSUdSbGMzUnlkV04wYjNJbkFCd0FFaEFBQUFBQUFBQUFBQUFBCkFBQUVB
QUFBQUFBQUFBQUFJQUlBQUEwQUJoRUlGd0FBRWdCMGFHbHpBQUlBQmdBQUFBd0FBQUFvQkFBQUJ3
QjRBQUFBS0FRQUFBc0EKZkFBQUFDZ0VBQUFLQUZaWGkzd2tERFAyTThDRC94UVBoOUVCQUFBUHRv
OEFBQUFBL3lTTkFBQUFBTGdCQUFBQWhBVUFBQUFBZFMwSgpCUUFBQUFCcUVPZ0FBQUFBZzhRRU84
WjBFOGNBQUFBQUFJbHdES01BQUFBQTZZZ0JBQUNKTlFBQUFBQ2hBQUFBQU9sNEFRQUF1QUlBCkFB
Q0VCUUFBQUFCMUxRa0ZBQUFBQUdvUTZBQUFBQUNEeEFRN3huUVRpWEFNeHdBQUFBQUFvd0FBQUFE
cFJBRUFBSWsxQUFBQUFLRUEKQUFBQTZUUUJBQUM0QkFBQUFJUUZBQUFBQUhVcUNRVUFBQUFBYWd6
b0FBQUFBSVBFQkR2R2RCREhBQUFBQUFDakFBQUFBT2tEQVFBQQppVFVBQUFBQW9RQUFBQURwOHdB
QUFMZ0lBQUFBaEFVQUFBQUFkU29KQlFBQUFBQnFET2dBQUFBQWc4UUVPOFowRU1jQUFBQUFBS01B
CkFBQUE2Y0lBQUFDSk5RQUFBQUNoQUFBQUFPbXlBQUFBdUJBQUFBQ0VCUUFBQUFCMUtna0ZBQUFB
QUdvTTZBQUFBQUNEeEFRN3huUVEKeHdBQUFBQUFvd0FBQUFEcGdRQUFBSWsxQUFBQUFLRUFBQUFB
NjNTNElBQUFBSVFGQUFBQUFIVW5DUVVBQUFBQWFnem9BQUFBQUlQRQpCRHZHZEEzSEFBQUFBQUNq
QUFBQUFPdEdpVFVBQUFBQW9RQUFBQURyT2JoQUFBQUFoQVVBQUFBQWRTY0pCUUFBQUFCcURPZ0FB
QUFBCmc4UUVPOFowRGNjQUFBQUFBS01BQUFBQTZ3YUpOUUFBQUFDaEFBQUFBRHZHZEFPSmVBUmZY
c0lFQUkxSkFBQUFBQUFBQUFBQUFBQUEKQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFC
d2NIQVFBQUFnSUFBQU1IQndjSEJBVUdGZ0FBQUZ3RUFBQUdBQjBBQUFCYgpCQUFBQmdBb0FBQUFX
UVFBQUFZQU1BQUFBRmtFQUFBR0FEY0FBQUJXQkFBQUZBQkVBQUFBR1FNQUFBWUFUQUFBQUZVRUFB
QUdBRmNBCkFBQlZCQUFBQmdCY0FBQUFWUVFBQUFZQWJBQUFBRmtFQUFBR0FIUUFBQUJaQkFBQUJn
QjdBQUFBVmdRQUFCUUFpd0FBQVBRREFBQUcKQUpBQUFBQlJCQUFBQmdDYkFBQUFVUVFBQUFZQW9B
QUFBRkVFQUFBR0FMQUFBQUJaQkFBQUJnQzRBQUFBV1FRQUFBWUF2d0FBQUZZRQpBQUFVQU13QUFB
QzBBZ0FBQmdEUkFBQUFUUVFBQUFZQTNBQUFBRTBFQUFBR0FPRUFBQUJOQkFBQUJnRHhBQUFBV1FR
QUFBWUErUUFBCkFGa0VBQUFHQUFBQkFBQldCQUFBRkFBTkFRQUF2d0lBQUFZQUVnRUFBRWtFQUFB
R0FCMEJBQUJKQkFBQUJnQWlBUUFBU1FRQUFBWUEKTWdFQUFGa0VBQUFHQURvQkFBQlpCQUFBQmdC
QkFRQUFWZ1FBQUJRQVRnRUFBTW9DQUFBR0FGTUJBQUJGQkFBQUJnQmVBUUFBUlFRQQpBQVlBWXdF
QUFFVUVBQUFHQUhBQkFBQlpCQUFBQmdCNEFRQUFXUVFBQUFZQWZ3RUFBRllFQUFBVUFJd0JBQURW
QWdBQUJnQ1JBUUFBClFRUUFBQVlBbVFFQUFFRUVBQUFHQUo0QkFBQkJCQUFBQmdDckFRQUFXUVFB
QUFZQXN3RUFBRmtFQUFBR0FMb0JBQUJXQkFBQUZBREgKQVFBQTRBSUFBQVlBekFFQUFEMEVBQUFH
QU5RQkFBQTlCQUFBQmdEWkFRQUFQUVFBQUFZQTdBRUFBRm9FQUFBR0FQQUJBQUJHQkFBQQpCZ0Qw
QVFBQVVnUUFBQVlBK0FFQUFFNEVBQUFHQVB3QkFBQktCQUFBQmdBQUFnQUFRZ1FBQUFZQUJBSUFB
RDRFQUFBR0FBZ0NBQUE2CkJBQUFCZ0FFQUFBQTlRQUFBR1FBQUFBQUFBQUFBQUFBQUNFQ0FBQUFB
QUFBQkFBQUFBQUFBQUJiRXdBQUFnQUFBQVFBQUFBQkFBQUEKNVFFQUFBQUFBQUFFQUFBQUFBQUFB
RnNUQUFBQkFBUUFBQUFBQUFJQUFBRGpBUUFBQUFBQUFBUUFBQUFBQUFBQVd4TUFBQUFBQ0FBQQpB
QUFBOFFBQUFPVUJBQUJMQUJBUkFBQUFBQUFBQUFBQUFBQUFJUUlBQUFJQUFBRG1BUUFBVWhjQUFB
QUFBQUFBQUFCTlpXUnBZVk5vCllYSmxaRlZKUTI5dWRISnZiSE02T21OdmJuUnliMnhHYjNKUVlY
SjBBQndBRWhBQUFBQUFBQUFBQUFBQUFBQUlBQUFBQUFBQUFBQUEKQUFJQUFBMEFEQkVBQUFBQUFB
QUFBQUFBQUEwQURCRUFBQUFBQUFBQUFBQUFBQThBQlJFQUFBQUFBQUFBSkV4T01UWUFEd0FGRVFB
QQpBQUFBQUFBa1RFNHhOQUFQQUFVUkFBQUFBQUFBQUNSTVRqRXlBQThBQlJFQUFBQUFBQUFBSkV4
T01UQUFEZ0FGRVFBQUFBQUFBQUFrClRFNDRBQTRBQlJFQUFBQUFBQUFBSkV4T05nQU9BQVVSQUFB
QUFBQUFBQ1JNVGpRQURRQUdFVkVYQUFBU0FIUm9hWE1BRVFBTEVRUUEKQUFCMEFBQUFjR0Z5ZEVs
RUFCb0FEQkhNRndBQUFBQUFBQUFBWjJWdVpYSnBZMEoxZEhSdmJnQWJBQXdSelJjQUFBQUFBQUFB
QUdOaApjSFJwYjI1elFuVjBkRzl1QUJjQURCSE9Gd0FBQUFBQUFBQUFZbUZqYTJkeWIzVnVaQUFq
QUF3Unp4Y0FBQUFBQUFBQUFIWnZiSFZ0ClpWTnNhV1JsY2tKaFkydG5jbTkxYm1RQUdnQU1FZEFY
QUFBQUFBQUFBQUIwYVcxbGJHbHVaVlJvZFcxaUFCTUFEQkhSRndBQUFBQUEKQUFBQWMyeHBaR1Z5
QUJnQURCSFNGd0FBQUFBQUFBQUFkbTlzZFcxbFZHaDFiV0lBQWdBR0FBQUFBUElBQUFCQUFRQUFB
QUFBQUFBQQpBQUFoQWdBQUVBSUFBQ1VBQUFBMEFRQUFBQUFBQUQ4REFJQUNBQUFBUWdNQWdDRUFB
QUJMQXdDQVVBQUFBRTREQUlCVkFBQUFTd01BCmdGc0FBQUJNQXdDQVlBQUFBRTREQUlCbEFBQUFV
d01BZ0pRQUFBQldBd0NBbVFBQUFGTURBSUNmQUFBQVZBTUFnS1FBQUFCV0F3Q0EKcVFBQUFGb0RB
SURWQUFBQVhRTUFnTm9BQUFCYUF3Q0E0QUFBQUZzREFJRGxBQUFBWFFNQWdPb0FBQUJoQXdDQUZn
RUFBR1FEQUlBYgpBUUFBWVFNQWdDRUJBQUJpQXdDQUpnRUFBR1FEQUlBckFRQUFhQU1BZ0ZjQkFB
QnJBd0NBWEFFQUFHZ0RBSUJpQVFBQWFRTUFnR2NCCkFBQnJBd0NBYVFFQUFHOERBSUNWQVFBQWNn
TUFnSmNCQUFCdkF3Q0FuUUVBQUhBREFJQ2lBUUFBY2dNQWdLUUJBQUIyQXdDQTJBRUEKQUhjREFJ
RGRBUUFBaGdNQWdPRUJBQUNIQXdDQTVnRUFBSW9EQUlBTUFBQUFPUVFBQUFjQW1BQUFBRGtFQUFB
TEFKd0FBQUE1QkFBQQpDZ0RyQUFBQVhBUUFBQXNBN3dBQUFGd0VBQUFLQVBvQUFBQmJCQUFBQ3dE
K0FBQUFXd1FBQUFvQUJRRUFBRm9FQUFBTEFBa0JBQUJhCkJBQUFDZ0FXQVFBQVVnUUFBQXNBR2dF
QUFGSUVBQUFLQUNjQkFBQk9CQUFBQ3dBckFRQUFUZ1FBQUFvQU9BRUFBRW9FQUFBTEFEd0IKQUFC
S0JBQUFDZ0JKQVFBQVJnUUFBQXNBVFFFQUFFWUVBQUFLQUZrQkFBQkNCQUFBQ3dCZEFRQUFRZ1FB
QUFvQWFRRUFBRDRFQUFBTApBRzBCQUFBK0JBQUFDZ0NmQVFBQVZRUUFBQXNBb3dFQUFGVUVBQUFL
QUxzQkFBQlJCQUFBQ3dDL0FRQUFVUVFBQUFvQTJBRUFBRTBFCkFBQUxBTndCQUFCTkJBQUFDZ0R4
QVFBQVNRUUFBQXNBOVFFQUFFa0VBQUFLQUJZQ0FBQkZCQUFBQ3dBYUFnQUFSUVFBQUFvQU1nSUEK
QUVFRUFBQUxBRFlDQUFCQkJBQUFDZ0JIQWdBQVBRUUFBQXNBU3dJQUFEMEVBQUFLQUdnQ0FBQTVC
QUFBQ3dCc0FnQUFPUVFBQUFvQQp1QUVBQUFDRUJRQUFBQUIxS0FrRkFBQUFBR29nNkFBQUFBQ0R4
QVNGd0hRTXh3QUFBQUFBb3dBQUFBRERNOENqQUFBQUFNT2hBQUFBCkFNTUhBQUFBWndRQUFBWUFE
d0FBQUdjRUFBQUdBQllBQUFCV0JBQUFGQUFqQUFBQUp3UUFBQVlBS0FBQUFHUUVBQUFHQURBQUFB
QmsKQkFBQUJnQTJBQUFBWkFRQUFBWUFCQUFBQVBVQUFBQWtBQUFBQUFBQUFBQUFBQUE3QUFBQUFB
QUFBQUFBQUFBQUFBQUFXeE1BQUFBQQpBQUFFQUFBQThRQUFBSkVBQUFCREFCQVJBQUFBQUFBQUFB
QUFBQUFBT3dBQUFBQUFBQUE2QUFBQVV4Y0FBQUFBQUFBQUFBQk5aV1JwCllWTm9ZWEpsWkZWSlEy
OXVkSEp2YkhNNk9uTnNhV1JsY2dBY0FCSVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
Q0FBQU4KQUFZUlVSY0FBQklBZEdocGN3QVpBQXdSMHhjQUFBQUFBQUFBQUhOb1lYSmxaRk5zYVdS
bGNnQUNBQVlBQUFBQThnQUFBRkFBQUFBQQpBQUFBQUFBQUFEc0FBQUFRQWdBQUJ3QUFBRVFBQUFB
QUFBQUFqUU1BZ0FBQUFBQ09Bd0NBTEFBQUFKRURBSUF0QUFBQWpnTUFnRFFBCkFBQ1JBd0NBTlFB
QUFKQURBSUE2QUFBQWtRTUFnQXdBQUFCaEJBQUFCd0JZQUFBQVlRUUFBQXNBWEFBQUFHRUVBQUFL
QUxJQUFBQmsKQkFBQUN3QzJBQUFBWkFRQUFBb0ExQUFBQUdFRUFBQUxBTmdBQUFCaEJBQUFDZ0FF
QUFBQThRQUFBQk1BQUFBUkFBd1JkUUFBQUFBQQpBQUFBQUNSVE1qTUFBQlFBQUFCbkJBQUFDd0FZ
QUFBQVp3UUFBQW9BQkFBQUFQRUFBQUFTQUFBQUVBQU1FWFVBQUFBQUFBQUFBQUFrClV6RUFBQUFV
QUFBQVBRTUFBQXNBR0FBQUFEMERBQUFLQUFRQUFBRHhBQUFBRWdBQUFCQUFEQkYxQUFBQUFBQUFB
QUFBSkZNeUFBQUEKRkFBQUFGQURBQUFMQUJnQUFBQlFBd0FBQ2dBRUFBQUE4UUFBQUJJQUFBQVFB
QXdSZFFBQUFBQUFBQUFBQUNSVE13QUFBQlFBQUFCagpBd0FBQ3dBWUFBQUFZd01BQUFvQUJBQUFB
UEVBQUFBU0FBQUFFQUFNRVhVQUFBQUFBQUFBQUFBa1V6UUFBQUFVQUFBQWRnTUFBQXNBCkdBQUFB
SFlEQUFBS0FBUUFBQUR4QUFBQUVnQUFBQkFBREJGMUFBQUFBQUFBQUFBQUpGTTFBQUFBRkFBQUFJ
a0RBQUFMQUJnQUFBQ0oKQXdBQUNnQUVBQUFBOFFBQUFCSUFBQUFRQUF3UmRRQUFBQUFBQUFBQUFD
UlROZ0FBQUJRQUFBQ2NBd0FBQ3dBWUFBQUFuQU1BQUFvQQpCQUFBQVBFQUFBQVNBQUFBRUFBTUVY
VUFBQUFBQUFBQUFBQWtVemNBQUFBVUFBQUFyd01BQUFzQUdBQUFBSzhEQUFBS0FBUUFBQUR4CkFB
QUFFZ0FBQUJBQURCRjFBQUFBQUFBQUFBQUFKRk00QUFBQUZBQUFBTUlEQUFBTEFCZ0FBQURDQXdB
QUNnQUVBQUFBOFFBQUFCSUEKQUFBUUFBd1JkUUFBQUFBQUFBQUFBQ1JUT1FBQUFCUUFBQUFqQVFB
QUN3QVlBQUFBSXdFQUFBb0FCQUFBQVBFQUFBQVRBQUFBRVFBTQpFWFVBQUFBQUFBQUFBQUFrVXpF
d0FBQVVBQUFBUkFFQUFBc0FHQUFBQUVRQkFBQUtBQVFBQUFEeEFBQUFFd0FBQUJFQURCRjFBQUFB
CkFBQUFBQUFBSkZNeE1RQUFGQUFBQUpjQkFBQUxBQmdBQUFDWEFRQUFDZ0FFQUFBQThRQUFBQk1B
QUFBUkFBd1JkUUFBQUFBQUFBQUEKQUNSVE1USUFBQlFBQUFDeEFRQUFDd0FZQUFBQXNRRUFBQW9B
QkFBQUFQRUFBQUFUQUFBQUVRQU1FWFVBQUFBQUFBQUFBQUFrVXpFegpBQUFVQUFBQXZ3RUFBQXNB
R0FBQUFMOEJBQUFLQUFRQUFBRHhBQUFBRXdBQUFCRUFEQkYxQUFBQUFBQUFBQUFBSkZNeE5BQUFG
QUFBCkFPd0RBQUFMQUJnQUFBRHNBd0FBQ2dBRUFBQUE4UUFBQUJNQUFBQVJBQXdSZFFBQUFBQUFB
QUFBQUNSVE1UVUFBQlFBQUFEcEFRQUEKQ3dBWUFBQUE2UUVBQUFvQUJBQUFBUEVBQUFBVEFBQUFF
UUFNRVhVQUFBQUFBQUFBQUFBa1V6RTJBQUFVQUFBQUdBSUFBQXNBR0FBQQpBQmdDQUFBS0FBUUFB
QUR4QUFBQUV3QUFBQkVBREJGMUFBQUFBQUFBQUFBQUpGTXhOd0FBRkFBQUFEWUNBQUFMQUJnQUFB
QTJBZ0FBCkNnQUVBQUFBOFFBQUFCTUFBQUFSQUF3UmRRQUFBQUFBQUFBQUFDUlRNVGdBQUJRQUFB
QlFBZ0FBQ3dBWUFBQUFVQUlBQUFvQUJBQUEKQVBFQUFBQVRBQUFBRVFBTUVYVUFBQUFBQUFBQUFB
QWtVekU1QUFBVUFBQUFhQUlBQUFzQUdBQUFBR2dDQUFBS0FBUUFBQUR4QUFBQQpFd0FBQUJFQURC
RjFBQUFBQUFBQUFBQUFKRk15TUFBQUZBQUFBSk1DQUFBTEFCZ0FBQUNUQWdBQUNnQUVBQUFBOFFB
QUFCTUFBQUFSCkFBd1JkUUFBQUFBQUFBQUFBQ1JUTWpFQUFCUUFBQUNzQWdBQUN3QVlBQUFBckFJ
QUFBb0FCQUFBQVBFQUFBQVRBQUFBRVFBTUVYVUEKQUFBQUFBQUFBQUFrVXpJeUFBQVVBQUFBV1FR
QUFBc0FHQUFBQUZrRUFBQUtBQVFBQUFCZUFCVVZlZEV2U3owNUQwZVhtQmdmSU1tUQpVQVFBQUFC
ak9seGplV2QzYVc1Y2FHOXRaVnhqYldGeWNtbHVYSGRsWW10cGRHSjFhV3hrWEd4cFlseDNaV0py
YVhSemVYTjBaVzFwCmJuUmxjbVpoWTJVdWRtTTRNQzV3WkdJQTh2RkFZMjl0Y0M1cFpDZkdiZ0Qv
L3dBQUF3QkFabVZoZEM0d01BRUFBQUQvL3dBQUF3QXUKWkhKbFkzUjJaUUFBQUFBQkFBQUFBd0hE
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUF1WkdWaWRXY2tVd0FBQUFBQ0FBQUFBd0hnUkFBQQpJQUFB
QUFBQUFBQUFBQUFBQUFBdWNtUmhkR0VBQUFBQUFBQURBQUFBQXdFRUFBQUFBQUFBQUFHSEFkY0FB
QUlBQUFBQUFBQUFCQUFBCkFBQUFBQUFEQUFBQUFnQXVjbVJoZEdFQUFBQUFBQUFFQUFBQUF3RUVB
QUFBQUFBQUFHVm52TGdBQUFJQUFBQUFBQUFBUmdBQUFBQUEKQUFBRUFBQUFBZ0F1Y21SaGRHRUFB
QUFBQUFBRkFBQUFBd0VFQUFBQUFBQUFBR1Rndlc4QUFBSUFBQUFBQUFBQWtRQUFBQUFBQUFBRgpB
QUFBQWdBdWNtUmhkR0VBQUFBQUFBQUdBQUFBQXdFRUFBQUFBQUFBQUl2SUNhb0FBQUlBQUFBQUFB
QUF2d0FBQUFBQUFBQUdBQUFBCkFnQXVjbVJoZEdFQUFBQUFBQUFIQUFBQUF3RUVBQUFBQUFBQUFG
ZVhZbzhBQUFJQUFBQUFBQUFBN1FBQUFBQUFBQUFIQUFBQUFnQXUKY21SaGRHRUFBQUFBQUFBSUFB
QUFBd0VFQUFBQUFBQUFBREx3M2pjQUFBSUFBQUFBQUFBQUp3RUFBQUFBQUFBSUFBQUFBZ0F1Y21S
aApkR0VBQUFBQUFBQUpBQUFBQXdFRUFBQUFBQUFBQUZlWFlvOEFBQUlBQUFBQUFBQUFVd0VBQUFB
QUFBQUpBQUFBQWdBdWNtUmhkR0VBCkFBQUFBQUFLQUFBQUF3RThvd0FBQUFBQUFQQkt2bTBBQUFB
QUFBQUFBQUFBaXdFQUFBQUFBQUFLQUFBQUF3QUFBQUFBc3dFQUFCQUoKQUFBS0FBQUFBd0FBQUFB
QTJnRUFBQ2dSQUFBS0FBQUFBd0FBQUFBQUFRSUFBSkJrQUFBS0FBQUFBd0FBQUFBQUtRSUFBTkJz
QUFBSwpBQUFBQXdBQUFBQUFUUUlBQUVoOEFBQUtBQUFBQXdBQUFBQUFjQUlBQUxpTEFBQUtBQUFB
QXdBQUFBQUFrZ0lBQUppVEFBQUtBQUFBCkF3QUFBQUFBdVFJQUFEaWpBQUFLQUFBQUF3QXVkR1Y0
ZEFBQUFBQUFBQUFMQUFBQUF3RWRBQUFBQUFBQUFFK0xlYUlBQUFJQUFBQXUKWkdWaWRXY2tVd0FB
QUFBTUFBQUFBd0h3QUFBQUJRQUFBQUFBQUFBTEFBVUFBQUFBQUFBQXpBSUFBQUFBQUFBTEFDQUFB
d0FBQUFBQQo3UUlBQUFBQUFBQUFBQUFBQWdBdWRHVjRkQUFBQUFBQUFBQU5BQUFBQXdFZEFBQUFB
QUFBQUUrTGVhSUFBQUlBQUFBdVpHVmlkV2NrClV3QUFBQUFPQUFBQUF3SDhBQUFBQlFBQUFBQUFB
QUFOQUFVQUFBQUFBQUFBOXdJQUFBQUFBQUFOQUNBQUF3QXVkR1Y0ZEFBQUFBQUEKQUFBUEFBQUFB
d0VjQUFBQUFBQUFBRGI1amNjQUFBSUFBQUF1WkdWaWRXY2tVd0FBQUFBUUFBQUFBd0VRQVFBQUJR
QUFBQUFBQUFBUApBQVVBQUFBQUFBQUFGZ01BQUFBQUFBQVBBQ0FBQXdBdWRHVjRkQUFBQUFBQUFB
QVJBQUFBQXdFL0FBQUFBQUFBQURaUnlzZ0FBQUlBCkFBQXVaR1ZpZFdja1V3QUFBQUFTQUFBQUF3
RVlBUUFBQlFBQUFBQUFBQUFSQUFVQUFBQUFBQUFBTndNQUFBQUFBQUFSQUNBQUF3QXUKZEdWNGRB
QUFBQUFBQUFBVEFBQUFBd0VIQUFBQUFRQUFBS3JoaThBQUFBSUFBQUF1WkdWaWRXY2tVd0FBQUFB
VUFBQUFBd0hZQUFBQQpCUUFBQUFBQUFBQVRBQVVBQUFBQUFBQUFmd01BQUFBQUFBQVRBQ0FBQWdB
dWNtUmhkR0VBQUFBQUFBQVZBQUFBQXdFWUFBQUFCZ0FBCkFBQUFBQUFBQUFJQUFBQUFBQUFBbVFN
QUFBQUFBQUFWQUFBQUFnQUFBQUFBc1FNQUFBQUFBQUFBQUNBQUFnQUFBQUFBendNQUFBQUEKQUFB
QUFDQUFhUUZEQUFBQUFnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQTdRTUFBQUFBQUFBQUFDQUFBZ0FB
QUFBQStBTUFBQUFBQUFBQQpBQ0FBQWdBQUFBQUFQd1FBQUFBQUFBQUFBQ0FBQWdBdWRHVjRkQUFB
QUFBQUFBQVdBQUFBQXdFMkFBQUFBUUFBQU1hbXg1TUFBQUlBCkFBQXVaR1ZpZFdja1V3QUFBQUFY
QUFBQUF3RUlBUUFBQndBQUFBQUFBQUFXQUFVQUFBQUFBQUFBZ1FRQUFBQUFBQUFXQUNBQUFnQUEK
QUFBQXRRUUFBQUFBQUFBQUFBQUFBZ0F1ZEdWNGRBQUFBQUFBQUFBWUFBQUFBd0VYQUFBQUFRQUFB
SkpXM0JnQUFBSUFBQUF1WkdWaQpkV2NrVXdBQUFBQVpBQUFBQXdIVUFBQUFCUUFBQUFBQUFBQVlB
QVVBQUFBQUFBQUEwQVFBQUFBQUFBQVlBQ0FBQWdBQUFBQUEvZ1FBCkFBQUFBQUFBQUFBQUFnQXVk
R1Y0ZEFBQUFBQUFBQUFhQUFBQUF3RUtBQUFBQUFBQUFOYk00VEVBQUFJQUFBQXVaR1ZpZFdja1V3
QUEKQUFBYkFBQUFBd0hvQUFBQUJRQUFBQUFBQUFBYUFBVUFBQUFBQUFBQUVBVUFBQUFBQUFBYUFD
QUFBZ0F1ZEdWNGRBQUFBQUFBQUFBYwpBQUFBQXdFRUFBQUFBQUFBQU1PQUFTMEFBQUlBQUFBdVpH
VmlkV2NrVXdBQUFBQWRBQUFBQXdIUUFBQUFCUUFBQUFBQUFBQWNBQVVBCkFBQUFBQUFBTXdVQUFB
QUFBQUFjQUNBQUFnQXVkR1Y0ZEFBQUFBQUFBQUFlQUFBQUF3RUlBQUFBQUFBQUFHVVdFb01BQUFJ
QUFBQXUKWkdWaWRXY2tVd0FBQUFBZkFBQUFBd0hVQUFBQUJRQUFBQUFBQUFBZUFBVUFBQUFBQUFB
QVVnVUFBQUFBQUFBZUFDQUFBZ0F1ZEdWNApkQUFBQUFBQUFBQWdBQUFBQXdFSkFBQUFBQUFBQUtt
SW1Gc0FBQUlBQUFBdVpHVmlkV2NrVXdBQUFBQWhBQUFBQXdIVUFBQUFCUUFBCkFBQUFBQUFnQUFV
QUFBQUFBQUFBZFFVQUFBQUFBQUFnQUNBQUFnQXVkR1Y0ZEFBQUFBQUFBQUFpQUFBQUF3RUpBQUFB
QUFBQUFFQXYKd3Y0QUFBSUFBQUF1WkdWaWRXY2tVd0FBQUFBakFBQUFBd0hVQUFBQUJRQUFBQUFB
QUFBaUFBVUFBQUFBQUFBQW1BVUFBQUFBQUFBaQpBQ0FBQWdBdWRHVjRkQUFBQUFBQUFBQWtBQUFB
QXdFZkFBQUFBZ0FBQUx0STg1b0FBQUlBQUFBdVpHVmlkV2NrVXdBQUFBQWxBQUFBCkF3SGdBQUFB
QXdBQUFBQUFBQUFrQUFVQUFBQUFBQUFBdXdVQUFBQUFBQUFrQUNBQUFnQUFBQUFBMlFVQUFBQUFB
QUFBQUNBQUFnQXUKZEdWNGRBQUFBQUFBQUFBbUFBQUFBd0VFQUFBQUFBQUFBT2dIeWUwQUFBSUFB
QUF1WkdWaWRXY2tVd0FBQUFBbkFBQUFBd0hjQUFBQQpCUUFBQUFBQUFBQW1BQVVBQUFBQUFBQUE1
Z1VBQUFBQUFBQW1BQ0FBQWdBdWRHVjRkQUFBQUFBQUFBQW9BQUFBQXdFRUFBQUFBQUFBCkFPQ05F
Q1VBQUFJQUFBQXVaR1ZpZFdja1V3QUFBQUFwQUFBQUF3SFlBQUFBQlFBQUFBQUFBQUFvQUFVQUFB
QUFBQUFBRUFZQUFBQUEKQUFBb0FDQUFBZ0F1ZEdWNGRBQUFBQUFBQUFBcUFBQUFBd0VWQUFBQUFB
QUFBSFl2ZllRQUFBSUFBQUF1WkdWaWRXY2tVd0FBQUFBcgpBQUFBQXdIZ0FBQUFCUUFBQUFBQUFB
QXFBQVVBQUFBQUFBQUFPQVlBQUFBQUFBQXFBQ0FBQWdBdWNtUmhkR0VBQUFBQUFBQXNBQUFBCkF3
RUlBQUFBQUFBQUFBQUFBQUFBQUFJQUFBQUFBQUFBWmdZQUFBQUFBQUFzQUFBQUFnQXVkR1Y0ZEFB
QUFBQUFBQUF0QUFBQUF3RUUKQUFBQUFBQUFBTXNLMk9VQUFBSUFBQUF1WkdWaWRXY2tVd0FBQUFB
dUFBQUFBd0hjQUFBQUJRQUFBQUFBQUFBdEFBVUFBQUFBQUFBQQpmZ1lBQUFBQUFBQXRBQ0FBQWdB
dWRHVjRkQUFBQUFBQUFBQXZBQUFBQXdFSkFBQUFBUUFBQURUcjIxa0FBQUlBQUFBdVpHVmlkV2Nr
ClV3QUFBQUF3QUFBQUF3R3dBQUFBQXdBQUFBQUFBQUF2QUFVQUFBQUFBQUFBeEFZQUFBQUFBQUF2
QUNBQUFnQXVkR1Y0ZEFBQUFBQUEKQUFBeEFBQUFBd0VIQUFBQUFRQUFBS3JoaThBQUFBSUFBQUF1
WkdWaWRXY2tVd0FBQUFBeUFBQUFBd0hJQUFBQUF3QUFBQUFBQUFBeApBQVVBQUFBQUFBQUEzZ1lB
QUFBQUFBQXhBQ0FBQWdBdWRHVjRkQUFBQUFBQUFBQXpBQUFBQXdFSEFBQUFBUUFBQUM5RSsyd0FB
QUlBCkFBQXVaR1ZpZFdja1V3QUFBQUEwQUFBQUF3SGNBQUFBQlFBQUFBQUFBQUF6QUFVQUFBQUFB
QUFBQXdjQUFBQUFBQUF6QUNBQUFnQXUKY21SaGRHRUFBQUFBQUFBMUFBQUFBd0VFQUFBQUFBQUFB
UFZIbmQ0QUFBSUFBQUFBQUFBQVBRY0FBQUFBQUFBMUFBQUFBZ0F1ZEdWNApkQUFBQUFBQUFBQTJB
QUFBQXdFREFBQUFBQUFBQUZIa2toWUFBQUlBQUFBdVpHVmlkV2NrVXdBQUFBQTNBQUFBQXdIb0FB
QUFCUUFBCkFBQUFBQUEyQUFVQUFBQUFBQUFBVFFjQUFBQUFBQUEyQUNBQUFnQXVjbVJoZEdFQUFB
QUFBQUE0QUFBQUF3RUVBQUFBQUFBQUFIYTEKNVkwQUFBSUFBQUFBQUFBQWtBY0FBQUFBQUFBNEFB
QUFBZ0F1ZEdWNGRBQUFBQUFBQUFBNUFBQUFBd0VIQUFBQUFRQUFBQzlFKzJ3QQpBQUlBQUFBdVpH
VmlkV2NrVXdBQUFBQTZBQUFBQXdIUUFBQUFCUUFBQUFBQUFBQTVBQVVBQUFBQUFBQUFvQWNBQUFB
QUFBQTVBQ0FBCkFnQXVjbVJoZEdFQUFBQUFBQUE3QUFBQUF3RUVBQUFBQUFBQUFLUlZYNVFBQUFJ
QUFBQUFBQUFBeXdjQUFBQUFBQUE3QUFBQUFnQXUKZEdWNGRBQUFBQUFBQUFBOEFBQUFBd0VIQUFB
QUFRQUFBQzlFKzJ3QUFBSUFBQUF1WkdWaWRXY2tVd0FBQUFBOUFBQUFBd0hRQUFBQQpCUUFBQUFB
QUFBQThBQVVBQUFBQUFBQUEyd2NBQUFBQUFBQThBQ0FBQWdBdWNtUmhkR0VBQUFBQUFBQStBQUFB
QXdFRUFBQUFBQUFBCkFKQkIzSFlBQUFJQUFBQUFBQUFBQmdnQUFBQUFBQUErQUFBQUFnQXVkR1Y0
ZEFBQUFBQUFBQUEvQUFBQUF3RUhBQUFBQVFBQUFDOUUKKzJ3QUFBSUFBQUF1WkdWaWRXY2tVd0FB
QUFCQUFBQUFBd0hjQUFBQUJRQUFBQUFBQUFBL0FBVUFBQUFBQUFBQUZnZ0FBQUFBQUFBLwpBQ0FB
QWdBdWNtUmhkR0VBQUFBQUFBQkJBQUFBQXdFRUFBQUFBQUFBQU52WlgwMEFBQUlBQUFBQUFBQUFU
UWdBQUFBQUFBQkJBQUFBCkFnQXVkR1Y0ZEFBQUFBQUFBQUJDQUFBQUF3RUhBQUFBQVFBQUFDOUUr
MndBQUFJQUFBQXVaR1ZpZFdja1V3QUFBQUJEQUFBQUF3SE0KQUFBQUJRQUFBQUFBQUFCQ0FBVUFB
QUFBQUFBQVhRZ0FBQUFBQUFCQ0FDQUFBZ0F1Y21SaGRHRUFBQUFBQUFCRUFBQUFBd0VFQUFBQQpB
QUFBQUhuOTI5Z0FBQUlBQUFBQUFBQUFoZ2dBQUFBQUFBQkVBQUFBQWdBdWRHVjRkQUFBQUFBQUFB
QkZBQUFBQXdFSEFBQUFBUUFBCkFDOUUrMndBQUFJQUFBQXVaR1ZpZFdja1V3QUFBQUJHQUFBQUF3
SFlBQUFBQlFBQUFBQUFBQUJGQUFVQUFBQUFBQUFBbGdnQUFBQUEKQUFCRkFDQUFBZ0F1ZEdWNGRB
QUFBQUFBQUFCSEFBQUFBd0VQQUFBQUFBQUFBR1AxRXVFQUFBSUFBQUF1WkdWaWRXY2tVd0FBQUFC
SQpBQUFBQXdIQUFBQUFCUUFBQUFBQUFBQkhBQVVBQUFCZlptRmljMllBQUFBQUFBQkhBQ0FBQWdB
dWRHVjRkQUFBQUFBQUFBQkpBQUFBCkF3RVBBQUFBQUFBQUFHUDFFdUVBQUFJQUFBQXVaR1ZpZFdj
a1V3QUFBQUJLQUFBQUF3SEFBQUFBQlFBQUFBQUFBQUJKQUFVQUFBQUEKQUFBQXl3Z0FBQUFBQUFC
SkFDQUFBZ0F1ZEdWNGRBQUFBQUFBQUFCTEFBQUFBd0dxQWdBQUVnQUFBSmV0TEVjQUFBRUFBQUF1
WkdWaQpkV2NrVXdBQUFBQk1BQUFBQXdGOEF3QUFKd0FBQUFBQUFBQkxBQVVBQUFBQUFBQUEyUWdB
QUFBQUFBQkxBQ0FBQXdBQUFBQUFJQWtBCkFBQUFBQUFBQUFBQUFnQUFBQUFBUEFrQUFBQUFBQUFB
QUFBQUFnQUFBQUFBVmdrQUFBQUFBQUFBQUFBQUFnQUFBQUFBZFFrQUFBQUEKQUFBQUFBQUFBZ0FB
QUFBQW5Ra0FBQUFBQUFBQUFBQUFBZ0FBQUFBQXRna0FBQUFBQUFBQUFBQUFBZ0FBQUFBQTFna0FB
QUFBQUFBQQpBQUFBQWdBQUFBQUErQWtBQUFBQUFBQUFBQUFBQWdBdWNtUmhkR0VBQUFBQUFBQk5B
QUFBQXdFSUFBQUFBQUFBQURHV1RxUUFBQUlBCkFBQUFBQUFBSFFvQUFBQUFBQUJOQUFBQUFnQXVj
bVJoZEdFQUFBQUFBQUJPQUFBQUF3RUlBQUFBQUFBQUFCc1VtSmNBQUFJQUFBQUEKQUFBQU5Rb0FB
QUFBQUFCT0FBQUFBZ0FBQUFBQVRRb0FBQUFBQUFBQUFBQUFBZ0FBQUFBQWJnb0FBQUFBQUFBQUFB
QUFBZ0FBQUFBQQppQW9BQUFBQUFBQUFBQUFBQWdBQUFBQUFvd29BQUFBQUFBQUFBQUFBQWdBQUFB
QUF0QW9BQUFBQUFBQUFBQUFBQWdBQUFBQUEwQW9BCkFBQUFBQUFBQUFBQUFnQXVkR1Y0ZEFBQUFB
QUFBQUJQQUFBQUF3SHJBQUFBQmdBQUFBb3ByMTRBQUFFQUFBQXVaR1ZpZFdja1V3QUEKQUFCUUFB
QUFBd0g0QVFBQUVRQUFBQUFBQUFCUEFBVUFBQUFBQUFBQTl3b0FBQUFBQUFCUEFDQUFBd0FBQUFB
QVV3c0FBQUFBQUFBQQpBQUFBQWdBQUFBQUFjQXNBQUFBQUFBQUFBQUFBQWdBQUFBQUFpUXNBQUFB
QUFBQUFBQUFBQWdBQUFBQUFud3NBQUFBQUFBQUFBQUFBCkFnQXVkR1Y0ZEFBQUFBQUFBQUJSQUFB
QUF3R0RBQUFBQlFBQUFDaWRjQW9BQUFFQUFBQXVaR1ZpZFdja1V3QUFBQUJTQUFBQUF3R0UKQVFB
QUR3QUFBQUFBQUFCUkFBVUFBQUFBQUFBQXlBc0FBQUFBQUFCUkFDQUFBd0FBQUFBQSt3c0FBQUFB
QUFBQUFBQUFBZ0FBQUFBQQpHd3dBQUFBQUFBQUFBQUFBQWdBQUFBQUFNd3dBQUFBQUFBQUFBQUFB
QWdBQUFBQUFUUXdBQUFBQUFBQUFBQUFBQWdBQUFBQUFaUXdBCkFBQUFBQUFBQUFBQUFnQXVkR1Y0
ZEFBQUFBQUFBQUJUQUFBQUF3RllBQUFBQUFBQUFKdGRsL2NBQUFFQUFBQXVaR1ZpZFdja1V3QUEK
QUFCVUFBQUFBd0VJQVFBQUJRQUFBQUFBQUFCVEFBVUFBQUFBQUFBQWVBd0FBQUFBQUFCVEFDQUFB
d0F1ZEdWNGRBQUFBQUFBQUFCVgpBQUFBQXdIR0FRQUFDd0FBQUVRNUVKVUFBQUVBQUFBdVpHVmlk
V2NrVXdBQUFBQldBQUFBQXdHVUFnQUFHUUFBQUFBQUFBQlZBQVVBCkFBQUFBQUFBcmd3QUFBQUFB
QUJWQUNBQUF3QUFBQUFBOFF3QUFBQUFBQUFBQUFBQUFnQUFBQUFBRHcwQUFBQUFBQUFBQUFBQUFn
QXUKY21SaGRHRUFBQUFBQUFCWEFBQUFBd0VFQUFBQUFBQUFBQUFBQUFBQUFBSUFBQUFBQUFBQU1n
MEFBQUFBQUFCWEFBQUFBZ0FBQUFBQQpRZzBBQUFBQUFBQUFBQUFBQWdBQUFBQUFYUTBBQUFBQUFB
QUFBQUFBQWdBQUFBQUFjZzBBQUFBQUFBQUFBQUFBQWdBQUFBQUFodzBBCkFBQUFBQUFBQUFBQUFn
QUFBQUFBcmcwQUFBQUFBQUFBQUFBQUFnQUFBQUFBeEEwQUFBQUFBQUFBQUFBQUFnQUFBQUFBN1Ew
QUFBQUEKQUFBQUFBQUFBZ0F1ZEdWNGRBQUFBQUFBQUFCWUFBQUFBd0ZKQUFBQUJ3QUFBSGIyNExv
QUFBRUFBQUF1WkdWaWRXY2tVd0FBQUFCWgpBQUFBQXdGVUFRQUFDd0FBQUFBQUFBQllBQVVBQUFB
QUFBQUFDQTRBQUFBQUFBQllBQ0FBQXdBQUFBQUFQUTRBQUFBQUFBQUFBQUFBCkFnQXVZbk56QUFB
QUFBQUFBQUJhQUFBQUF3RUVBQUFBQUFBQUFBQUFBQUFBQUFJQUFBQUFBQUFBYUE0QUFBQUFBQUJh
QUFBQUF3QUEKQUFBQXdBNEFBQUFBQUFBQUFBQUFBZ0FBQUFBQTRnNEFBQUFBQUFBQUFBQUFBZ0F1
WW5OekFBQUFBQUFBQUFCYkFBQUFBd0VFQUFBQQpBQUFBQUFBQUFBQUFBQUlBQUFBQUFBQUFBZzhB
QUFBQUFBQmJBQUFBQXdBdWRHVjRkQUFBQUFBQUFBQmNBQUFBQXdGQUFnQUFFQUFBCkFCS2t3dVlB
QUFFQUFBQXVaR1ZpZFdja1V3QUFBQUJkQUFBQUF3RzhBZ0FBSHdBQUFBQUFBQUJjQUFVQUFBQUFB
QUFBUXc4QUFBQUEKQUFCY0FDQUFBd0FBQUFBQWl3OEFBQUFBQUFBQUFBQUFBZ0FBQUFBQXNBOEFB
QUFBQUFBQUFBQUFBZ0FBQUFBQXp3OEFBQUFBQUFBQQpBQUFBQWdBQUFBQUE1QThBQUFBQUFBQUFB
QUFBQWdBQUFBQUEvUThBQUFBQUFBQUFBQUFBQWdBQUFBQUFFeEFBQUFBQUFBQUFBQUFBCkFnQUFB
QUFBT1JBQUFBQUFBQUFBQUFBQUFnQUFBQUFBVmhBQUFBQUFBQUFBQUFBQUFnQUFBQUFBaFJBQUFB
QUFBQUFBQUFBQUFnQUEKQUFBQW1CQUFBQUFBQUFBQUFBQUFBZ0F1ZEdWNGRBQUFBQUFBQUFCZUFB
QUFBd0dPQUFBQUNBQUFBS3BUQUZ3QUFBRUFBQUF1WkdWaQpkV2NrVXdBQUFBQmZBQUFBQXdFNEFR
QUFDUUFBQUFBQUFBQmVBQVVBQUFBQUFBQUF0QkFBQUFBQUFBQmVBQ0FBQXdBdWNtUmhkR0VBCkFB
QUFBQUJnQUFBQUF3RUVBQUFBQUFBQUFGWTJYV0FBQUFJQUFBQUFBQUFBNWhBQUFBQUFBQUJnQUFB
QUFnQXVZbk56QUFBQUFBQUEKQUFCaEFBQUFBd0VFQUFBQUFBQUFBQUFBQUFBQUFBSUFBQUFBQUFB
QTloQUFBQUFBQUFCaEFBQUFBd0FBQUFBQVN4RUFBQUFBQUFBQQpBQUFBQWdBdWNtUmhkR0VBQUFB
QUFBQmlBQUFBQXdFRUFBQUFBQUFBQU10ME9QWUFBQUlBQUFBQUFBQUFheEVBQUFBQUFBQmlBQUFB
CkFnQXVZbk56QUFBQUFBQUFBQUJqQUFBQUF3RUVBQUFBQUFBQUFBQUFBQUFBQUFJQUFBQUFBQUFB
ZXhFQUFBQUFBQUJqQUFBQUF3QXUKZEdWNGRBQUFBQUFBQUFCa0FBQUFBd0c0QUFBQURBQUFBQ2pO
Z0dnQUFBRUFBQUF1WkdWaWRXY2tVd0FBQUFCbEFBQUFBd0hRQVFBQQpEd0FBQUFBQUFBQmtBQVVB
QUFBQUFBQUF1aEVBQUFBQUFBQmtBQ0FBQXdBQUFBQUE2aEVBQUFBQUFBQUFBQUFBQWdBQUFBQUFB
eElBCkFBQUFBQUFBQUFBQUFnQXVjbVJoZEdFQUFBQUFBQUJtQUFBQUF3RUVBQUFBQUFBQUFEMHRa
cllBQUFJQUFBQUFBQUFBSVJJQUFBQUEKQUFCbUFBQUFBZ0FBQUFBQU1SSUFBQUFBQUFBQUFBQUFB
Z0F1WW5OekFBQUFBQUFBQUFCbkFBQUFBd0VFQUFBQUFBQUFBQUFBQUFBQQpBQUlBQUFBQUFBQUFR
eElBQUFBQUFBQm5BQUFBQXdBdWRHVjRkQUFBQUFBQUFBQm9BQUFBQXdIT0JBQUFMd0FBQUx5dHIw
QUFBQUVBCkFBQXVaR1ZpZFdja1V3QUFBQUJwQUFBQUF3SEFCUUFBV1FBQUFBQUFBQUJvQUFVQUFB
QUFBQUFBakJJQUFBQUFBQUJvQUNBQUF3QUEKQUFBQTdoSUFBQUFBQUFBQUFBQUFBZ0FBQUFBQUVS
TUFBQUFBQUFBQUFBQUFBZ0FBQUFBQUpoTUFBQUFBQUFBQUFBQUFBZ0FBQUFBQQpRUk1BQUFBQUFB
QUFBQUFBQWdBQUFBQUFWaE1BQUFBQUFBQUFBQUFBQWdBQUFBQUFiaE1BQUFBQUFBQUFBQUFBQWdB
dWNtUmhkR0VBCkFBQUFBQUJxQUFBQUF3RUlBQUFBQUFBQUFOSGVHT2dBQUFJQUFBQUFBQUFBa1JN
QUFBQUFBQUJxQUFBQUFnQUFBQUFBcVJNQUFBQUEKQUFBQUFBQUFBZ0F1Y21SaGRHRUFBQUFBQUFC
ckFBQUFBd0VFQUFBQUFBQUFBTCs3NzdzQUFBSUFBQUFBQUFBQXd4TUFBQUFBQUFCcgpBQUFBQWdB
dWNtUmhkR0VBQUFBQUFBQnNBQUFBQXdFRUFBQUFBQUFBQUo4NFYxWUFBQUlBQUFBQUFBQUEweE1B
QUFBQUFBQnNBQUFBCkFnQUFBQUFBNHhNQUFBQUFBQUFBQUFBQUFnQUFBQUFBK1JNQUFBQUFBQUFB
QUFBQUFnQXVkR1Y0ZEFBQUFBQUFBQUJ0QUFBQUF3RmIKQVFBQURBQUFBRjRmZStRQUFBRUFBQUF1
WkdWaWRXY2tVd0FBQUFCdUFBQUFBd0ZnQWdBQUZ3QUFBQUFBQUFCdEFBVUFBQUFBQUFBQQpFQlFB
QUFBQUFBQnRBQ0FBQXdBQUFBQUFTQlFBQUFBQUFBQUFBQUFBQWdBQUFBQUFYUlFBQUFBQUFBQUFB
QUFBQWdBQUFBQUFkUlFBCkFBQUFBQUFBQUFBQUFnQXVjbVJoZEdFQUFBQUFBQUJ2QUFBQUF3RUVB
QUFBQUFBQUFNTERJSlVBQUFJQUFBQUFBQUFBanhRQUFBQUEKQUFCdkFBQUFBZ0F1Y21SaGRHRUFB
QUFBQUFCd0FBQUFBd0VFQUFBQUFBQUFBSG5NYnEwQUFBSUFBQUFBQUFBQW54UUFBQUFBQUFCdwpB
QUFBQWdBQUFBQUFyeFFBQUFBQUFBQUFBQUFBQWdBQUFBQUF3eFFBQUFBQUFBQUFBQUFBQWdBQUFB
QUEzQlFBQUFBQUFBQUFBQUFBCkFnQXVkR1Y0ZEFBQUFBQUFBQUJ4QUFBQUF3R2FBUUFBREFBQUFD
d3pSbndBQUFFQUFBQXVaR1ZpZFdja1V3QUFBQUJ5QUFBQUF3RkEKQWdBQUdRQUFBQUFBQUFCeEFB
VUFBQUFBQUFBQTl4UUFBQUFBQUFCeEFDQUFBd0F1ZEdWNGRBQUFBQUFBQUFCekFBQUFBd0UwQUFB
QQpBQUFBQUNyUjRmY0FBQUVBQUFBdVpHVmlkV2NrVXdBQUFBQjBBQUFBQXdFc0FRQUFCUUFBQUFB
QUFBQnpBQVVBQUFBQUFBQUFPQlVBCkFBQUFBQUJ6QUNBQUF3QXVkR1Y0ZEFBQUFBQUFBQUIxQUFB
QUF3R0dBUUFBQVFBQUFJMFczZDhBQUFFQUFBQXVaR1ZpZFdja1V3QUEKQUFCMkFBQUFBd0hVQVFB
QUJRQUFBQUFBQUFCMUFBVUFBQUFBQUFBQWFoVUFBQUFBQUFCMUFDQUFBd0F1ZEdWNGRBQUFBQUFB
QUFCMwpBQUFBQXdGNUFBQUFDZ0FBQUVSUWtYMEFBQUVBQUFBdVpHVmlkV2NrVXdBQUFBQjRBQUFB
QXdHMEFRQUFEUUFBQUFBQUFBQjNBQVVBCkFBQUFBQUFBbmhVQUFBQUFBQUIzQUNBQUFnQXVZbk56
QUFBQUFBQUFBQUI1QUFBQUF3RUVBQUFBQUFBQUFBQUFBQUFBQUFJQUFBQUEKQUFBQTFoVUFBQUFB
QUFCNUFBQUFBd0F1WW5OekFBQUFBQUFBQUFCNkFBQUFBd0VFQUFBQUFBQUFBQUFBQUFBQUFBSUFB
QUFBQUFBQQpMUllBQUFBQUFBQjZBQUFBQXdBdVluTnpBQUFBQUFBQUFBQjdBQUFBQXdFRUFBQUFB
QUFBQUFBQUFBQUFBQUlBQUFBQUFBQUFoaFlBCkFBQUFBQUI3QUFBQUF3QXVkR1Y0ZEFBQUFBQUFB
QUI4QUFBQUF3RWxBUUFBR2dBQUFPWWtuMm9BQUFFQUFBQXVaR1ZpZFdja1V3QUEKQUFCOUFBQUFB
d0hrQVFBQUZ3QUFBQUFBQUFCOEFBVUFBQUFBQUFBQXl4WUFBQUFBQUFCOEFDQUFBZ0F1WW5OekFB
QUFBQUFBQUFCKwpBQUFBQXdFRUFBQUFBQUFBQUFBQUFBQUFBQUlBQUFBQUFBQUFGQmNBQUFBQUFB
QitBQUFBQXdBdVpHRjBZUUFBQUFBQUFBQi9BQUFBCkF3RVFBQUFBQUFBQUFOM0syVDBBQUFJQUFB
QUFBQUFBZlJjQUFBQUFBQUIvQUFBQUF3QXVZbk56QUFBQUFBQUFBQUNBQUFBQUF3RUUKQUFBQUFB
QUFBQUFBQUFBQUFBSUFBQUFBQUFBQTF4Y0FBQUFBQUFDQUFBQUFBd0F1Y21SaGRHRUFBQUFBQUFD
QkFBQUFBd0VFQUFBQQpBQUFBQUtXYnZCOEFBQUlBQUFBQUFBQUFQaGdBQUFBQUFBQ0JBQUFBQWdB
dVluTnpBQUFBQUFBQUFBQ0NBQUFBQXdFRUFBQUFBQUFBCkFBQUFBQUFBQUFJQUFBQUFBQUFBVGhn
QUFBQUFBQUNDQUFBQUF3QXVjbVJoZEdFQUFBQUFBQUNEQUFBQUF3RUVBQUFBQUFBQUFQcG8Kd2h3
QUFBSUFBQUFBQUFBQXNoZ0FBQUFBQUFDREFBQUFBZ0F1WW5OekFBQUFBQUFBQUFDRUFBQUFBd0VF
QUFBQUFBQUFBQUFBQUFBQQpBQUlBQUFBQUFBQUF3aGdBQUFBQUFBQ0VBQUFBQXdBdWRHVjRkQUFB
QUFBQUFBQ0ZBQUFBQXdGSEFnQUFFd0FBQUtCOHA1NEFBQUVBCkFBQXVaR1ZpZFdja1V3QUFBQUNH
QUFBQUF3RjRBZ0FBRndBQUFBQUFBQUNGQUFVQUFBQUFBQUFBR0JrQUFBQUFBQUNGQUNBQUFnQXUK
WW5OekFBQUFBQUFBQUFDSEFBQUFBd0VFQUFBQUFBQUFBQUFBQUFBQUFBSUFBQUFBQUFBQVdCa0FB
QUFBQUFDSEFBQUFBd0F1Y21SaApkR0VBQUFBQUFBQ0lBQUFBQXdFRUFBQUFBQUFBQURoaUgwWUFB
QUlBQUFBQUFBQUF2UmtBQUFBQUFBQ0lBQUFBQWdBdVluTnpBQUFBCkFBQUFBQUNKQUFBQUF3RUVB
QUFBQUFBQUFBQUFBQUFBQUFJQUFBQUFBQUFBelJrQUFBQUFBQUNKQUFBQUF3QUFBQUFBR3hvQUFB
QUEKQUFBQUFBQUFBZ0F1ZEdWNGRBQUFBQUFBQUFDS0FBQUFBd0VVQXdBQU9RQUFBQUdzeXVjQUFB
RUFBQUF1WkdWaWRXY2tVd0FBQUFDTApBQUFBQXdHd0F3QUFQUUFBQUFBQUFBQ0tBQVVBQUFBQUFB
QUFOQm9BQUFBQUFBQ0tBQ0FBQWdBdWNtUmhkR0VBQUFBQUFBQ01BQUFBCkF3RUlBQUFBQUFBQUFK
QkIzSFlBQUFJQUFBQUFBQUFBZVJvQUFBQUFBQUNNQUFBQUFnQXVjbVJoZEdFQUFBQUFBQUNOQUFB
QUF3RUkKQUFBQUFBQUFBSURNMnFJQUFBSUFBQUFBQUFBQWtSb0FBQUFBQUFDTkFBQUFBZ0F1Y21S
aGRHRUFBQUFBQUFDT0FBQUFBd0VFQUFBQQpBQUFBQUZic09zb0FBQUlBQUFBQUFBQUFxUm9BQUFB
QUFBQ09BQUFBQWdBdVluTnpBQUFBQUFBQUFBQ1BBQUFBQXdFSUFBQUFBQUFBCkFBQUFBQUFBQUFJ
QUFBQUFBQUFBdVJvQUFBQUFBQUNQQUFBQUF3QXVZbk56QUFBQUFBQUFBQUNRQUFBQUF3RUVBQUFB
QUFBQUFBQUEKQUFBQUFBSUFBQUFBQUFBQUhSc0FBQUFBQUFDUUFBQUFBd0F1WkdGMFlRQUFBQUFB
QUFDUkFBQUFBd0VRQUFBQUFBQUFBS3JVdUxFQQpBQUlBQUFBQUFBQUFneHNBQUFBQUFBQ1JBQUFB
QXdBdVluTnpBQUFBQUFBQUFBQ1NBQUFBQXdFRUFBQUFBQUFBQUFBQUFBQUFBQUlBCkFBQUFBQUFB
M3hzQUFBQUFBQUNTQUFBQUF3QXVjbVJoZEdFQUFBQUFBQUNUQUFBQUF3RUVBQUFBQUFBQUFMNnZ5
c2NBQUFJQUFBQUEKQUFBQVFod0FBQUFBQUFDVEFBQUFBZ0F1Y21SaGRHRUFBQUFBQUFDVUFBQUFB
d0VFQUFBQUFBQUFBUE1CNjk4QUFBSUFBQUFBQUFBQQpVaHdBQUFBQUFBQ1VBQUFBQWdBdVluTnpB
QUFBQUFBQUFBQ1ZBQUFBQXdFRUFBQUFBQUFBQUFBQUFBQUFBQUlBQUFBQUFBQUFZaHdBCkFBQUFB
QUNWQUFBQUF3QXVaR0YwWVFBQUFBQUFBQUNXQUFBQUF3RVFBQUFBQUFBQUFFeTVmYlFBQUFJQUFB
QUFBQUFBeFJ3QUFBQUEKQUFDV0FBQUFBd0F1WW5OekFBQUFBQUFBQUFDWEFBQUFBd0VFQUFBQUFB
QUFBQUFBQUFBQUFBSUFBQUFBQUFBQUhoMEFBQUFBQUFDWApBQUFBQXdBdWRHVjRkQUFBQUFBQUFB
Q1lBQUFBQXdHQ0FBQUFBd0FBQUpXMnB3SUFBQUVBQUFBdVpHVmlkV2NrVXdBQUFBQ1pBQUFBCkF3
R0VBUUFBQ1FBQUFBQUFBQUNZQUFVQUFBQUFBQUFBY0IwQUFBQUFBQUNZQUNBQUFnQXVjbVJoZEdF
QUFBQUFBQUNhQUFBQUF3RUkKQUFBQUFBQUFBR04zbXFrQUFBSUFBQUFBQUFBQXZSMEFBQUFBQUFD
YUFBQUFBZ0FBQUFBQTFSMEFBQUFBQUFBQUFBQUFBZ0F1ZEdWNApkQUFBQUFBQUFBQ2JBQUFBQXdF
d0FBQUFBZ0FBQUg3RGhKNEFBQUVBQUFBdVpHVmlkV2NrVXdBQUFBQ2NBQUFBQXdFSUFRQUFCUUFB
CkFBQUFBQUNiQUFVQUFBQUFBQUFBNmgwQUFBQUFBQUNiQUNBQUFnQXVkR1Y0ZEFBQUFBQUFBQUNk
QUFBQUF3SHNCUUFBVEFBQUFHcXkKMG1RQUFBRUFBQUF1WkdWaWRXY2tVd0FBQUFDZUFBQUFBd0Z3
QmdBQWF3QUFBQUFBQUFDZEFBVUFBQUFBQUFBQU1SNEFBQUFBQUFDZApBQ0FBQWdBQUFBQUFmeDRB
QUFBQUFBQUFBQUFBQWdBQUFBQUFvaDRBQUFBQUFBQUFBQUFBQWdBQUFBQUF1QjRBQUFBQUFBQUFB
QUFBCkFnQUFBQUFBelI0QUFBQUFBQUFBQUFBQUFnQUFBQUFBNXg0QUFBQUFBQUFBQUFBQUFnQUFB
QUFBQmg4QUFBQUFBQUFBQUFBQUFnQUEKQUFBQUloOEFBQUFBQUFBQUFBQUFBZ0F1WW5OekFBQUFB
QUFBQUFDZkFBQUFBd0VFQUFBQUFBQUFBQUFBQUFBQUFBSUFBQUFBQUFBQQpQQjhBQUFBQUFBQ2ZB
QUFBQXdBdVluTnpBQUFBQUFBQUFBQ2dBQUFBQXdFRUFBQUFBQUFBQUFBQUFBQUFBQUlBQUFBQUFB
QUFxUjhBCkFBQUFBQUNnQUFBQUF3QXVZbk56QUFBQUFBQUFBQUNoQUFBQUF3RUVBQUFBQUFBQUFB
QUFBQUFBQUFJQUFBQUFBQUFBR1NBQUFBQUEKQUFDaEFBQUFBd0F1WkdGMFlRQUFBQUFBQUFDaUFB
QUFBd0VRQUFBQUFBQUFBSjVTUmxnQUFBSUFBQUFBQUFBQWpDQUFBQUFBQUFDaQpBQUFBQXdBdVlu
TnpBQUFBQUFBQUFBQ2pBQUFBQXdFRUFBQUFBQUFBQUFBQUFBQUFBQUlBQUFBQUFBQUE4U0FBQUFB
QUFBQ2pBQUFBCkF3QXVaR0YwWVFBQUFBQUFBQUNrQUFBQUF3RVFBQUFBQUFBQUFGNElEeDRBQUFJ
QUFBQUFBQUFBWlNFQUFBQUFBQUNrQUFBQUF3QXUKWW5OekFBQUFBQUFBQUFDbEFBQUFBd0VFQUFB
QUFBQUFBQUFBQUFBQUFBSUFBQUFBQUFBQXl5RUFBQUFBQUFDbEFBQUFBd0F1ZEdWNApkQUFBQUFB
QUFBQ21BQUFBQXdHaEFBQUFCd0FBQUZNemJaOEFBQUVBQUFBdVpHVmlkV2NrVXdBQUFBQ25BQUFB
QXdHQUFRQUFDd0FBCkFBQUFBQUNtQUFVQUFBQUFBQUFBSmlJQUFBQUFBQUNtQUNBQUFnQXVjbVJo
ZEdFQUFBQUFBQUNvQUFBQUF3RUlBQUFBQUFBQUFESmwKV09NQUFBSUFBQUFBQUFBQWJpSUFBQUFB
QUFDb0FBQUFBZ0F1Y21SaGRHRUFBQUFBQUFDcEFBQUFBd0VJQUFBQUFBQUFBTUZUSGp3QQpBQUlB
QUFBQUFBQUFoaUlBQUFBQUFBQ3BBQUFBQWdBdWRHVjRkQUFBQUFBQUFBQ3FBQUFBQXdIQ0F3QUFJ
UUFBQUhsdXE4QUFBQUVBCkFBQXVaR1ZpZFdja1V3QUFBQUNyQUFBQUF3R29Bd0FBTVFBQUFBQUFB
QUNxQUFVQUFBQUFBQUFBbmlJQUFBQUFBQUNxQUNBQUFnQXUKY21SaGRHRUFBQUFBQUFDc0FBQUFB
d0VFQUFBQUFBQUFBRmRqR1VzQUFBSUFBQUFBQUFBQThTSUFBQUFBQUFDc0FBQUFBZ0FBQUFBQQpB
U01BQUFBQUFBQUFBQUFBQWdBQUFBQUFGaU1BQUFBQUFBQUFBQUFBQWdBdVluTnpBQUFBQUFBQUFB
Q3RBQUFBQXdFRUFBQUFBQUFBCkFBQUFBQUFBQUFJQUFBQUFBQUFBUFNNQUFBQUFBQUN0QUFBQUF3
QXVjbVJoZEdFQUFBQUFBQUN1QUFBQUF3RUVBQUFBQUFBQUFPQ0YKNHZvQUFBSUFBQUFBQUFBQXNT
TUFBQUFBQUFDdUFBQUFBZ0F1WW5OekFBQUFBQUFBQUFDdkFBQUFBd0VFQUFBQUFBQUFBQUFBQUFB
QQpBQUlBQUFBQUFBQUF3U01BQUFBQUFBQ3ZBQUFBQXdBdWRHVjRkQUFBQUFBQUFBQ3dBQUFBQXdG
WEJBQUFPQUFBQU1sbUxFQUFBQUVBCkFBQXVaR1ZpZFdja1V3QUFBQUN4QUFBQUF3R2dCQUFBUndB
QUFBQUFBQUN3QUFVQUFBQUFBQUFBSVNRQUFBQUFBQUN3QUNBQUFnQXUKWW5OekFBQUFBQUFBQUFD
eUFBQUFBd0VFQUFBQUFBQUFBQUFBQUFBQUFBSUFBQUFBQUFBQVl5UUFBQUFBQUFDeUFBQUFBd0F1
Y21SaApkR0VBQUFBQUFBQ3pBQUFBQXdFRUFBQUFBQUFBQU9wZ09Ub0FBQUlBQUFBQUFBQUF4eVFB
QUFBQUFBQ3pBQUFBQWdBdVluTnpBQUFBCkFBQUFBQUMwQUFBQUF3RUVBQUFBQUFBQUFBQUFBQUFB
QUFJQUFBQUFBQUFBMXlRQUFBQUFBQUMwQUFBQUF3QXVjbVJoZEdFQUFBQUEKQUFDMUFBQUFBd0VF
QUFBQUFBQUFBQ0FJY0JvQUFBSUFBQUFBQUFBQU9DVUFBQUFBQUFDMUFBQUFBZ0F1WW5OekFBQUFB
QUFBQUFDMgpBQUFBQXdFRUFBQUFBQUFBQUFBQUFBQUFBQUlBQUFBQUFBQUFTQ1VBQUFBQUFBQzJB
QUFBQXdBdVpHRjBZUUFBQUFBQUFBQzNBQUFBCkF3RVFBQUFBQUFBQUFCclRXZzRBQUFJQUFBQUFB
QUFBc3lVQUFBQUFBQUMzQUFBQUF3QXVZbk56QUFBQUFBQUFBQUM0QUFBQUF3RUUKQUFBQUFBQUFB
QUFBQUFBQUFBSUFBQUFBQUFBQUJpWUFBQUFBQUFDNEFBQUFBd0F1ZEdWNGRBQUFBQUFBQUFDNUFB
QUFBd0dvQWdBQQpLQUFBQVBSYnZiY0FBQUVBQUFBdVpHVmlkV2NrVXdBQUFBQzZBQUFBQXdGa0F3
QUFMd0FBQUFBQUFBQzVBQVVBQUFBQUFBQUFWU1lBCkFBQUFBQUM1QUNBQUFnQUFBQUFBbFNZQUFB
QUFBQUFBQUFBQUFnQUFBQUFBc0NZQUFBQUFBQUFBQUFBQUFnQUFBQUFBelNZQUFBQUEKQUFBQUFB
QUFBZ0F1Y21SaGRHRUFBQUFBQUFDN0FBQUFBd0VFQUFBQUFBQUFBSnBHbTlNQUFBSUFBQUFBQUFB
QThDWUFBQUFBQUFDNwpBQUFBQWdBQUFBQUFBQ2NBQUFBQUFBQUFBQUFBQWdBdVluTnpBQUFBQUFB
QUFBQzhBQUFBQXdFRUFBQUFBQUFBQUFBQUFBQUFBQUlBCkFBQUFBQUFBRXljQUFBQUFBQUM4QUFB
QUF3QXVZbk56QUFBQUFBQUFBQUM5QUFBQUF3RUVBQUFBQUFBQUFBQUFBQUFBQUFJQUFBQUEKQUFB
QWRTY0FBQUFBQUFDOUFBQUFBd0F1WkdGMFlRQUFBQUFBQUFDK0FBQUFBd0VZQUFBQUFBQUFBUHdw
MEpFQUFBSUFBQUFBQUFBQQozaWNBQUFBQUFBQytBQUFBQXdBdVluTnpBQUFBQUFBQUFBQy9BQUFB
QXdFRUFBQUFBQUFBQUFBQUFBQUFBQUlBQUFBQUFBQUFMeWdBCkFBQUFBQUMvQUFBQUF3QXVkR1Y0
ZEFBQUFBQUFBQURBQUFBQUF3R0NBQUFBQXdBQUFKVzJwd0lBQUFFQUFBQXVaR1ZpZFdja1V3QUEK
QUFEQkFBQUFBd0dFQVFBQUNRQUFBQUFBQUFEQUFBVUFBQUFBQUFBQWZDZ0FBQUFBQUFEQUFDQUFB
Z0F1ZEdWNGRBQUFBQUFBQUFEQwpBQUFBQXdFd0FBQUFBZ0FBQUg3RGhKNEFBQUVBQUFBdVpHVmlk
V2NrVXdBQUFBRERBQUFBQXdFRUFRQUFCUUFBQUFBQUFBRENBQVVBCkFBQUFBQUFBeHlnQUFBQUFB
QURDQUNBQUFnQXVkR1Y0ZEFBQUFBQUFBQURFQUFBQUF3RU1CUUFBUkFBQUFDZ1hCSDhBQUFFQUFB
QXUKWkdWaWRXY2tVd0FBQUFERkFBQUFBd0Y4QlFBQVRRQUFBQUFBQUFERUFBVUFBQUFBQUFBQURD
a0FBQUFBQUFERUFDQUFBZ0FBQUFBQQpXQ2tBQUFBQUFBQUFBQUFBQWdBdVluTnpBQUFBQUFBQUFB
REdBQUFBQXdFRUFBQUFBQUFBQUFBQUFBQUFBQUlBQUFBQUFBQUFlU2tBCkFBQUFBQURHQUFBQUF3
QXVZbk56QUFBQUFBQUFBQURIQUFBQUF3RUVBQUFBQUFBQUFBQUFBQUFBQUFJQUFBQUFBQUFBNUNr
QUFBQUEKQUFESEFBQUFBd0F1Y21SaGRHRUFBQUFBQUFESUFBQUFBd0VFQUFBQUFBQUFBQVEyWmY0
QUFBSUFBQUFBQUFBQVZDb0FBQUFBQUFESQpBQUFBQWdBdVluTnpBQUFBQUFBQUFBREpBQUFBQXdF
RUFBQUFBQUFBQUFBQUFBQUFBQUlBQUFBQUFBQUFaQ29BQUFBQUFBREpBQUFBCkF3QXVZbk56QUFB
QUFBQUFBQURLQUFBQUF3RUVBQUFBQUFBQUFBQUFBQUFBQUFJQUFBQUFBQUFBMGlvQUFBQUFBQURL
QUFBQUF3QXUKWkdGMFlRQUFBQUFBQUFETEFBQUFBd0VRQUFBQUFBQUFBSjVTUmxnQUFBSUFBQUFB
QUFBQVF5c0FBQUFBQUFETEFBQUFBd0F1WW5OegpBQUFBQUFBQUFBRE1BQUFBQXdFRUFBQUFBQUFB
QUFBQUFBQUFBQUlBQUFBQUFBQUFwaXNBQUFBQUFBRE1BQUFBQXdBdVpHRjBZUUFBCkFBQUFBQURO
QUFBQUF3RVFBQUFBQUFBQUFGNElEeDRBQUFJQUFBQUFBQUFBR0N3QUFBQUFBQUROQUFBQUF3QXVZ
bk56QUFBQUFBQUEKQUFET0FBQUFBd0VFQUFBQUFBQUFBQUFBQUFBQUFBSUFBQUFBQUFBQWZDd0FB
QUFBQUFET0FBQUFBd0F1ZEdWNGRBQUFBQUFBQUFEUApBQUFBQXdFL0FBQUFBZ0FBQU8vZGg4Y0FB
QUVBQUFBdVpHVmlkV2NrVXdBQUFBRFFBQUFBQXdFZ0FRQUFCUUFBQUFBQUFBRFBBQVVBCkFBQUFB
QUFBMVN3QUFBQUFBQURQQUNBQUFnQXVkR1Y0ZEFBQUFBQUFBQURSQUFBQUF3RTlBd0FBS3dBQUFD
eWhmVndBQUFFQUFBQXUKWkdWaWRXY2tVd0FBQUFEU0FBQUFBd0c4QXdBQU1RQUFBQUFBQUFEUkFB
VUFBQUFBQUFBQUpTMEFBQUFBQUFEUkFDQUFBZ0F1Y21SaApkR0VBQUFBQUFBRFRBQUFBQXdFRUFB
QUFBQUFBQUk0THgzWUFBQUlBQUFBQUFBQUFkaTBBQUFBQUFBRFRBQUFBQWdBdVluTnpBQUFBCkFB
QUFBQURVQUFBQUF3RUVBQUFBQUFBQUFBQUFBQUFBQUFJQUFBQUFBQUFBaGkwQUFBQUFBQURVQUFB
QUF3QXVZbk56QUFBQUFBQUEKQUFEVkFBQUFBd0VFQUFBQUFBQUFBQUFBQUFBQUFBSUFBQUFBQUFB
QSt5MEFBQUFBQUFEVkFBQUFBd0F1WkdGMFlRQUFBQUFBQUFEVwpBQUFBQXdFUUFBQUFBQUFBQUta
WkFic0FBQUlBQUFBQUFBQUFieTRBQUFBQUFBRFdBQUFBQXdBdVluTnpBQUFBQUFBQUFBRFhBQUFB
CkF3RUVBQUFBQUFBQUFBQUFBQUFBQUFJQUFBQUFBQUFBMFM0QUFBQUFBQURYQUFBQUF3QXVkR1Y0
ZEFBQUFBQUFBQURZQUFBQUF3RUoKQUFBQUFRQUFBRFRyMjFrQUFBSUFBQUF1WkdWaWRXY2tVd0FB
QUFEWkFBQUFBd0hRQUFBQUF3QUFBQUFBQUFEWUFBVUFBQUFBQUFBQQpMeThBQUFBQUFBRFlBQ0FB
QWdBdWNtUmhkR0VBQUFBQUFBRGFBQUFBQXdFWUFBQUFCZ0FBQUFBQUFBQUFBQUlBQUFBQUFBQUFX
UzhBCkFBQUFBQURhQUFBQUFnQUFBQUFBZ1M4QUFBQUFBQUFBQUNBQUFnQUFBQUFBcnk4QUFBQUFB
QUFBQUNBQWFRRzFBZ0FBQWdBQUFBQUEKQUFBQUFBQUFBQUF1ZEdWNGRBQUFBQUFBQUFEYkFBQUFB
d0VKQUFBQUFRQUFBRFRyMjFrQUFBSUFBQUF1WkdWaWRXY2tVd0FBQUFEYwpBQUFBQXdIb0FBQUFB
d0FBQUFBQUFBRGJBQVVBQUFBQUFBQUEzUzhBQUFBQUFBRGJBQ0FBQWdBdWNtUmhkR0VBQUFBQUFB
RGRBQUFBCkF3RVlBQUFBQmdBQUFBQUFBQUFBQUFJQUFBQUFBQUFBRXpBQUFBQUFBQURkQUFBQUFn
QUFBQUFBUnpBQUFBQUFBQUFBQUNBQUFnQUEKQUFBQWdUQUFBQUFBQUFBQUFDQUFhUUhBQWdBQUFn
QUFBQUFBQUFBQUFBQUFBQUF1ZEdWNGRBQUFBQUFBQUFEZUFBQUFBd0VKQUFBQQpBUUFBQURUcjIx
a0FBQUlBQUFBdVpHVmlkV2NrVXdBQUFBRGZBQUFBQXdIa0FBQUFBd0FBQUFBQUFBRGVBQVVBQUFB
QUFBQUF1ekFBCkFBQUFBQURlQUNBQUFnQXVjbVJoZEdFQUFBQUFBQURnQUFBQUF3RVlBQUFBQmdB
QUFBQUFBQUFBQUFJQUFBQUFBQUFBN2pBQUFBQUEKQUFEZ0FBQUFBZ0FBQUFBQUh6RUFBQUFBQUFB
QUFDQUFBZ0FBQUFBQVZqRUFBQUFBQUFBQUFDQUFhUUhMQWdBQUFnQUFBQUFBQUFBQQpBQUFBQUFB
dWRHVjRkQUFBQUFBQUFBRGhBQUFBQXdFSkFBQUFBUUFBQURUcjIxa0FBQUlBQUFBdVpHVmlkV2Nr
VXdBQUFBRGlBQUFBCkF3SElBQUFBQXdBQUFBQUFBQURoQUFVQUFBQUFBQUFBalRFQUFBQUFBQURo
QUNBQUFnQXVjbVJoZEdFQUFBQUFBQURqQUFBQUF3RVkKQUFBQUJnQUFBQUFBQUFBQUFBSUFBQUFB
QUFBQXNqRUFBQUFBQUFEakFBQUFBZ0FBQUFBQTFURUFBQUFBQUFBQUFDQUFBZ0FBQUFBQQovakVB
QUFBQUFBQUFBQ0FBYVFIV0FnQUFBZ0FBQUFBQUFBQUFBQUFBQUFBdWRHVjRkQUFBQUFBQUFBRGtB
QUFBQXdFSkFBQUFBUUFBCkFEVHIyMWtBQUFJQUFBQXVaR1ZpZFdja1V3QUFBQURsQUFBQUF3SGdB
QUFBQXdBQUFBQUFBQURrQUFVQUFBQUFBQUFBSnpJQUFBQUEKQUFEa0FDQUFBZ0F1Y21SaGRHRUFB
QUFBQUFEbUFBQUFBd0VZQUFBQUJnQUFBQUFBQUFBQUFBSUFBQUFBQUFBQVdESUFBQUFBQUFEbQpB
QUFBQWdBQUFBQUFoeklBQUFBQUFBQUFBQ0FBQWdBQUFBQUF2RElBQUFBQUFBQUFBQ0FBYVFIaEFn
QUFBZ0FBQUFBQUFBQUFBQUFBCkFBQXVkR1Y0ZEFBQUFBQUFBQURuQUFBQUF3RUhBQUFBQVFBQUFL
cmhpOEFBQUFJQUFBQXVaR1ZpZFdja1V3QUFBQURvQUFBQUF3SFEKQUFBQUF3QUFBQUFBQUFEbkFB
VUFBQUFBQUFBQThUSUFBQUFBQUFEbkFDQUFBZ0F1ZEdWNGRBQUFBQUFBQUFEcEFBQUFBd0VIQUFB
QQpBUUFBQUtyaGk4QUFBQUlBQUFBdVpHVmlkV2NrVXdBQUFBRHFBQUFBQXdIb0FBQUFBd0FBQUFB
QUFBRHBBQVVBQUFBQUFBQUFHek1BCkFBQUFBQURwQUNBQUFnQXVkR1Y0ZEFBQUFBQUFBQURyQUFB
QUF3RUhBQUFBQVFBQUFLcmhpOEFBQUFJQUFBQXVaR1ZpZFdja1V3QUEKQUFEc0FBQUFBd0hrQUFB
QUF3QUFBQUFBQUFEckFBVUFBQUFBQUFBQVVUTUFBQUFBQUFEckFDQUFBZ0F1ZEdWNGRBQUFBQUFB
QUFEdApBQUFBQXdFSEFBQUFBUUFBQUtyaGk4QUFBQUlBQUFBdVpHVmlkV2NrVXdBQUFBRHVBQUFB
QXdISUFBQUFBd0FBQUFBQUFBRHRBQVVBCkFBQUFBQUFBaERNQUFBQUFBQUR0QUNBQUFnQXVkR1Y0
ZEFBQUFBQUFBQUR2QUFBQUF3RUhBQUFBQVFBQUFLcmhpOEFBQUFJQUFBQXUKWkdWaWRXY2tVd0FB
QUFEd0FBQUFBd0hnQUFBQUF3QUFBQUFBQUFEdkFBVUFBQUFBQUFBQXFUTUFBQUFBQUFEdkFDQUFB
Z0F1ZEdWNApkQUFBQUFBQUFBRHhBQUFBQXdFSkFBQUFBUUFBQURUcjIxa0FBQUlBQUFBdVpHVmlk
V2NrVXdBQUFBRHlBQUFBQXdIQUFBQUFBd0FBCkFBQUFBQUR4QUFVQUFBQUFBQUFBMmpNQUFBQUFB
QUR4QUNBQUFnQXVjbVJoZEdFQUFBQUFBQUR6QUFBQUF3RVlBQUFBQmdBQUFBQUEKQUFBQUFBSUFB
QUFBQUFBQSt6TUFBQUFBQUFEekFBQUFBZ0FBQUFBQUdqUUFBQUFBQUFBQUFDQUFBZ0FBQUFBQVB6
UUFBQUFBQUFBQQpBQ0FBYVFFRkF3QUFBZ0FBQUFBQUFBQUFBQUFBQUFBdWRHVjRkQUFBQUFBQUFB
RDBBQUFBQXdFSEFBQUFBUUFBQUtyaGk4QUFBQUlBCkFBQXVaR1ZpZFdja1V3QUFBQUQxQUFBQUF3
SEFBQUFBQXdBQUFBQUFBQUQwQUFVQUFBQUFBQUFBWkRRQUFBQUFBQUQwQUNBQUFnQXUKZEdWNGRB
QUFBQUFBQUFEMkFBQUFBd0VmQUFBQUFnQUFBTHRJODVvQUFBSUFBQUF1WkdWaWRXY2tVd0FBQUFE
M0FBQUFBd0hrQUFBQQpBd0FBQUFBQUFBRDJBQVVBQUFBQUFBQUFoVFFBQUFBQUFBRDJBQ0FBQWdB
dWRHVjRkQUFBQUFBQUFBRDRBQUFBQXdFUUFBQUFBUUFBCkFKSk1ZZDBBQUFJQUFBQXVaR1ZpZFdj
a1V3QUFBQUQ1QUFBQUF3SHdBQUFBQlFBQUFBQUFBQUQ0QUFVQUFBQUFBQUFBcWpRQUFBQUEKQUFE
NEFDQUFBZ0F1Y21SaGRHRUFBQUFBQUFENkFBQUFBd0VrQUFBQUNRQUFBQUFBQUFBQUFBSUFBQUFB
QUFBQXp6UUFBQUFBQUFENgpBQUFBQWdBQUFBQUE4alFBQUFBQUFBQUFBQ0FBQWdBQUFBQUFHelVB
QUFBQUFBQUFBQ0FBYVFFYUF3QUFBZ0FBQUFBQUFBQUFBQUFBCkFBQXVkR1Y0ZEFBQUFBQUFBQUQ3
QUFBQUF3RURBQUFBQUFBQUFMcDFlTzRBQUFJQUFBQXVaR1ZpZFdja1V3QUFBQUQ4QUFBQUF3SG8K
QUFBQUJRQUFBQUFBQUFEN0FBVUFBQUFBQUFBQVJEVUFBQUFBQUFEN0FDQUFBZ0F1ZEdWNGRBQUFB
QUFBQUFEOUFBQUFBd0VmQUFBQQpBZ0FBQUx0STg1b0FBQUlBQUFBdVpHVmlkV2NrVXdBQUFBRCtB
QUFBQXdIb0FBQUFBd0FBQUFBQUFBRDlBQVVBQUFBQUFBQUFmVFVBCkFBQUFBQUQ5QUNBQUFnQXVk
R1Y0ZEFBQUFBQUFBQUQvQUFBQUF3Rm9BQUFBQ2dBQUFObmE2WnNBQUFFQUFBQXVaR1ZpZFdja1V3
QUEKQUFBQUFRQUFBd0dBQVFBQUR3QUFBQUFBQUFEL0FBVUFBQUFBQUFBQXBqVUFBQUFBQUFEL0FD
QUFBd0FBQUFBQTJ6VUFBQUFBQUFBQQpBQUFBQWdBQUFBQUFBVFlBQUFBQUFBQUFBQUFBQWdBQUFB
QUFKRFlBQUFBQUFBQUFBQUFBQWdBQUFBQUFQellBQUFBQUFBQUFBQUFBCkFnQXVZbk56QUFBQUFB
QUFBQUFCQVFBQUF3RUVBQUFBQUFBQUFBQUFBQUFBQUFJQUFBQUFBQUFBVnpZQUFBQUFBQUFCQVFB
QUF3QXUKZEdWNGRBQUFBQUFBQUFBQ0FRQUFBd0VrQUFBQUJRQUFBQjY5NmVZQUFBRUFBQUF1WkdW
aWRXY2tVd0FBQUFBREFRQUFBd0hjQUFBQQpCd0FBQUFBQUFBQUNBUVVBQUFBQUFBQUFuallBQUFB
QUFBQUNBU0FBQXdBdVluTnpBQUFBQUFBQUFBQUVBUUFBQXdFRUFBQUFBQUFBCkFBQUFBQUFBQUFJ
QUFBQUFBQUFBelRZQUFBQUFBQUFFQVFBQUF3QXVZbk56QUFBQUFBQUFBQUFGQVFBQUF3RUVBQUFB
QUFBQUFBQUEKQUFBQUFBSUFBQUFBQUFBQURqY0FBQUFBQUFBRkFRQUFBd0F1ZEdWNGRBQUFBQUFB
QUFBR0FRQUFBd0ZvQUFBQUNnQUFBSFVJY3dnQQpBQUVBQUFBdVpHVmlkV2NrVXdBQUFBQUhBUUFB
QXdHQUFRQUFEd0FBQUFBQUFBQUdBUVVBQUFBQUFBQUFTVGNBQUFBQUFBQUdBU0FBCkF3QXVZbk56
QUFBQUFBQUFBQUFJQVFBQUF3RUVBQUFBQUFBQUFBQUFBQUFBQUFJQUFBQUFBQUFBZnpjQUFBQUFB
QUFJQVFBQUF3QXUKZEdWNGRBQUFBQUFBQUFBSkFRQUFBd0VrQUFBQUJRQUFBQjY5NmVZQUFBRUFB
QUF1WkdWaWRXY2tVd0FBQUFBS0FRQUFBd0hjQUFBQQpCd0FBQUFBQUFBQUpBUVVBQUFBQUFBQUF4
emNBQUFBQUFBQUpBU0FBQXdBdVluTnpBQUFBQUFBQUFBQUxBUUFBQXdFRUFBQUFBQUFBCkFBQUFB
QUFBQUFJQUFBQUFBQUFBOXpjQUFBQUFBQUFMQVFBQUF3QXVZbk56QUFBQUFBQUFBQUFNQVFBQUF3
RUVBQUFBQUFBQUFBQUEKQUFBQUFBSUFBQUFBQUFBQU9UZ0FBQUFBQUFBTUFRQUFBd0F1ZEdWNGRB
QUFBQUFBQUFBTkFRQUFBd0ZvQUFBQUNnQUFBTE11WWhNQQpBQUVBQUFBdVpHVmlkV2NrVXdBQUFB
QU9BUUFBQXdHQUFRQUFEd0FBQUFBQUFBQU5BUVVBQUFBQUFBQUFkVGdBQUFBQUFBQU5BU0FBCkF3
QXVZbk56QUFBQUFBQUFBQUFQQVFBQUF3RUVBQUFBQUFBQUFBQUFBQUFBQUFJQUFBQUFBQUFBcWpn
QUFBQUFBQUFQQVFBQUF3QXUKZEdWNGRBQUFBQUFBQUFBUUFRQUFBd0VrQUFBQUJRQUFBQjY5NmVZ
QUFBRUFBQUF1WkdWaWRXY2tVd0FBQUFBUkFRQUFBd0hjQUFBQQpCd0FBQUFBQUFBQVFBUVVBQUFB
QUFBQUE4VGdBQUFBQUFBQVFBU0FBQXdBdVluTnpBQUFBQUFBQUFBQVNBUUFBQXdFRUFBQUFBQUFB
CkFBQUFBQUFBQUFJQUFBQUFBQUFBSURrQUFBQUFBQUFTQVFBQUF3QXVZbk56QUFBQUFBQUFBQUFU
QVFBQUF3RUVBQUFBQUFBQUFBQUEKQUFBQUFBSUFBQUFBQUFBQVlUa0FBQUFBQUFBVEFRQUFBd0F1
ZEdWNGRBQUFBQUFBQUFBVUFRQUFBd0ZvQUFBQUNnQUFBQlhIbmtvQQpBQUVBQUFBdVpHVmlkV2Nr
VXdBQUFBQVZBUUFBQXdGOEFRQUFEd0FBQUFBQUFBQVVBUVVBQUFBQUFBQUFuRGtBQUFBQUFBQVVB
U0FBCkF3QXVZbk56QUFBQUFBQUFBQUFXQVFBQUF3RUVBQUFBQUFBQUFBQUFBQUFBQUFJQUFBQUFB
QUFBemprQUFBQUFBQUFXQVFBQUF3QXUKZEdWNGRBQUFBQUFBQUFBWEFRQUFBd0VrQUFBQUJRQUFB
QjY5NmVZQUFBRUFBQUF1WkdWaWRXY2tVd0FBQUFBWUFRQUFBd0hZQUFBQQpCd0FBQUFBQUFBQVhB
UVVBQUFBQUFBQUFFam9BQUFBQUFBQVhBU0FBQXdBdVluTnpBQUFBQUFBQUFBQVpBUUFBQXdFRUFB
QUFBQUFBCkFBQUFBQUFBQUFJQUFBQUFBQUFBUGpvQUFBQUFBQUFaQVFBQUF3QXVZbk56QUFBQUFB
QUFBQUFhQVFBQUF3RUVBQUFBQUFBQUFBQUEKQUFBQUFBSUFBQUFBQUFBQWZEb0FBQUFBQUFBYUFR
QUFBd0F1ZEdWNGRBQUFBQUFBQUFBYkFRQUFBd0ZvQUFBQUNnQUFBSnpXZ0JjQQpBQUVBQUFBdVpH
VmlkV2NrVXdBQUFBQWNBUUFBQXdGOEFRQUFEd0FBQUFBQUFBQWJBUVVBQUFBQUFBQUF0RG9BQUFB
QUFBQWJBU0FBCkF3QXVZbk56QUFBQUFBQUFBQUFkQVFBQUF3RUVBQUFBQUFBQUFBQUFBQUFBQUFJ
QUFBQUFBQUFBNVRvQUFBQUFBQUFkQVFBQUF3QXUKZEdWNGRBQUFBQUFBQUFBZUFRQUFBd0VrQUFB
QUJRQUFBQjY5NmVZQUFBRUFBQUF1WkdWaWRXY2tVd0FBQUFBZkFRQUFBd0hZQUFBQQpCd0FBQUFB
QUFBQWVBUVVBQUFBQUFBQUFLRHNBQUFBQUFBQWVBU0FBQXdBdVluTnpBQUFBQUFBQUFBQWdBUUFB
QXdFRUFBQUFBQUFBCkFBQUFBQUFBQUFJQUFBQUFBQUFBVXpzQUFBQUFBQUFnQVFBQUF3QXVZbk56
QUFBQUFBQUFBQUFoQVFBQUF3RUVBQUFBQUFBQUFBQUEKQUFBQUFBSUFBQUFBQUFBQWtEc0FBQUFB
QUFBaEFRQUFBd0F1ZEdWNGRBQUFBQUFBQUFBaUFRQUFBd0ZvQUFBQUNnQUFBQ3lXQzgwQQpBQUVB
QUFBdVpHVmlkV2NrVXdBQUFBQWpBUUFBQXdHQUFRQUFEd0FBQUFBQUFBQWlBUVVBQUFBQUFBQUF4
enNBQUFBQUFBQWlBU0FBCkF3QXVZbk56QUFBQUFBQUFBQUFrQVFBQUF3RUVBQUFBQUFBQUFBQUFB
QUFBQUFJQUFBQUFBQUFBL1RzQUFBQUFBQUFrQVFBQUF3QXUKZEdWNGRBQUFBQUFBQUFBbEFRQUFB
d0VrQUFBQUJRQUFBQjY5NmVZQUFBRUFBQUF1WkdWaWRXY2tVd0FBQUFBbUFRQUFBd0hjQUFBQQpC
d0FBQUFBQUFBQWxBUVVBQUFBQUFBQUFSVHdBQUFBQUFBQWxBU0FBQXdBdVluTnpBQUFBQUFBQUFB
QW5BUUFBQXdFRUFBQUFBQUFBCkFBQUFBQUFBQUFJQUFBQUFBQUFBZFR3QUFBQUFBQUFuQVFBQUF3
QXVZbk56QUFBQUFBQUFBQUFvQVFBQUF3RUVBQUFBQUFBQUFBQUEKQUFBQUFBSUFBQUFBQUFBQXR6
d0FBQUFBQUFBb0FRQUFBd0F1ZEdWNGRBQUFBQUFBQUFBcEFRQUFBd0ZvQUFBQUNnQUFBQXZtRVR3
QQpBQUVBQUFBdVpHVmlkV2NrVXdBQUFBQXFBUUFBQXdHQUFRQUFEd0FBQUFBQUFBQXBBUVVBQUFB
QUFBQUE4endBQUFBQUFBQXBBU0FBCkF3QXVZbk56QUFBQUFBQUFBQUFyQVFBQUF3RUVBQUFBQUFB
QUFBQUFBQUFBQUFJQUFBQUFBQUFBS0QwQUFBQUFBQUFyQVFBQUF3QXUKZEdWNGRBQUFBQUFBQUFB
c0FRQUFBd0VrQUFBQUJRQUFBQjY5NmVZQUFBRUFBQUF1WkdWaWRXY2tVd0FBQUFBdEFRQUFBd0hj
QUFBQQpCd0FBQUFBQUFBQXNBUVVBQUFBQUFBQUFiejBBQUFBQUFBQXNBU0FBQXdBdVluTnpBQUFB
QUFBQUFBQXVBUUFBQXdFRUFBQUFBQUFBCkFBQUFBQUFBQUFJQUFBQUFBQUFBbmowQUFBQUFBQUF1
QVFBQUF3QXVZbk56QUFBQUFBQUFBQUF2QVFBQUF3RUVBQUFBQUFBQUFBQUEKQUFBQUFBSUFBQUFB
QUFBQTN6MEFBQUFBQUFBdkFRQUFBd0F1ZEdWNGRBQUFBQUFBQUFBd0FRQUFBd0ZvQUFBQUNnQUFB
S3I5UHk0QQpBQUVBQUFBdVpHVmlkV2NrVXdBQUFBQXhBUUFBQXdGOEFRQUFEd0FBQUFBQUFBQXdB
UVVBQUFBQUFBQUFHajRBQUFBQUFBQXdBU0FBCkF3QXVZbk56QUFBQUFBQUFBQUF5QVFBQUF3RUVB
QUFBQUFBQUFBQUFBQUFBQUFJQUFBQUFBQUFBU2o0QUFBQUFBQUF5QVFBQUF3QXUKZEdWNGRBQUFB
QUFBQUFBekFRQUFBd0VrQUFBQUJRQUFBQjY5NmVZQUFBRUFBQUF1WkdWaWRXY2tVd0FBQUFBMEFR
QUFBd0hVQUFBQQpCd0FBQUFBQUFBQXpBUVVBQUFBQUFBQUFqRDRBQUFBQUFBQXpBU0FBQXdBdVlu
TnpBQUFBQUFBQUFBQTFBUUFBQXdFRUFBQUFBQUFBCkFBQUFBQUFBQUFJQUFBQUFBQUFBdGo0QUFB
QUFBQUExQVFBQUF3QXVZbk56QUFBQUFBQUFBQUEyQVFBQUF3RUVBQUFBQUFBQUFBQUEKQUFBQUFB
SUFBQUFBQUFBQThqNEFBQUFBQUFBMkFRQUFBd0F1ZEdWNGRBQUFBQUFBQUFBM0FRQUFBd0ZrQVFB
QU5nQUFBTVliNmFRQQpBQUVBQUFBdVpHVmlkV2NrVXdBQUFBQTRBUUFBQXdIMEFRQUFGd0FBQUFB
QUFBQTNBUVVBQUFBQUFBQUFLRDhBQUFBQUFBQTNBU0FBCkFnQWtURTR4QUFBQUFDd0JBQUEzQVFB
QUJnQWtURTQxQUFBQUFBb0JBQUEzQVFBQUJnQWtURTQyQUFBQUFPY0FBQUEzQVFBQUJnQWsKVEU0
M0FBQUFBTVFBQUFBM0FRQUFCZ0FrVEU0NEFBQUFBS0VBQUFBM0FRQUFCZ0FrVEU0NUFBQUFBSDRB
QUFBM0FRQUFCZ0FrVEU0eApNQUFBQUZzQUFBQTNBUUFBQmdBa1RFNHhNUUFBQURnQUFBQTNBUUFB
QmdBa1RFNHhNZ0FBQUJVQUFBQTNBUUFBQmdBa1RFNDFNUUFBCkFEQUJBQUEzQVFBQUF3QXVkR1Y0
ZEFBQUFBQUFBQUE1QVFBQUF3SHlBQUFBQ2dBQUFLclRTN1VBQUFFQUFBQXVaR1ZpZFdja1V3QUEK
QUFBNkFRQUFBd0ZVQWdBQUZ3QUFBQUFBQUFBNUFRVUFBQUFBQUFBQVV6OEFBQUFBQUFBNUFTQUFB
Z0FBQUFBQXBUOEFBQUFBQUFBQQpBQUFBQWdBdWRHVjRkQUFBQUFBQUFBQTdBUUFBQXdGRUFBQUFC
QUFBQUFlR3JTOEFBQUVBQUFBdVpHVmlkV2NrVXdBQUFBQThBUUFBCkF3RTRBUUFBQndBQUFBQUFB
QUE3QVFVQUFBQUFBQUFBdFQ4QUFBQUFBQUE3QVNBQUFnQXVkR1Y0ZEFBQUFBQUFBQUE5QVFBQUF3
RisKQVFBQUZRQUFBSkh0TzFJQUFBRUFBQUF1WkdWaWRXY2tVd0FBQUFBK0FRQUFBd0c0QWdBQUlR
QUFBQUFBQUFBOUFRVUFBQUFBQUFBQQo3ajhBQUFBQUFBQTlBU0FBQWdBQUFBQUFRa0FBQUFBQUFB
QUFBQUFBQWdBdVluTnpBQUFBQUFBQUFBQS9BUUFBQXdFRUFBQUFBQUFBCkFBQUFBQUFBQUFJQUFB
QUFBQUFBYVVBQUFBQUFBQUEvQVFBQUF3QUFBQUFBMmtBQUFBQUFBQUFBQUFBQUFnQXVjbVJoZEdF
QUFBQUEKQUFCQUFRQUFBd0VFQUFBQUFBQUFBRjFFUDRFQUFBSUFBQUFBQUFBQStVQUFBQUFBQUFC
QUFRQUFBZ0F1WW5OekFBQUFBQUFBQUFCQgpBUUFBQXdFRUFBQUFBQUFBQUFBQUFBQUFBQUlBQUFB
QUFBQUFDVUVBQUFBQUFBQkJBUUFBQXdBdWRHVjRkQUFBQUFBQUFBQkNBUUFBCkF3RVFBQUFBQVFB
QUFKSEs5aThBQUFJQUFBQXVaR1ZpZFdja1V3QUFBQUJEQVFBQUF3SE1BQUFBQXdBQUFBQUFBQUJD
QVFVQUFBQUEKQUFBQWFrRUFBQUFBQUFCQ0FTQUFBZ0F1Y21SaGRHRUFBQUFBQUFCRUFRQUFBd0Vr
QUFBQUNRQUFBQUFBQUFBQUFBSUFBQUFBQUFBQQprVUVBQUFBQUFBQkVBUUFBQWdBQUFBQUF0a0VB
QUFBQUFBQUFBQ0FBQWdBQUFBQUE0VUVBQUFBQUFBQUFBQ0FBYVFIMUF3QUFBZ0FBCkFBQUFBQUFB
QUFBQUFBQXVkR1Y0ZEFBQUFBQUFBQUJGQVFBQUF3RURBQUFBQUFBQUFGdGNLTjRBQUFJQUFBQXVa
R1ZpZFdja1V3QUEKQUFCR0FRQUFBd0hzQUFBQUJRQUFBQUFBQUFCRkFRVUFBQUFBQUFBQURFSUFB
QUFBQUFCRkFTQUFBZ0F1ZEdWNGRBQUFBQUFBQUFCSApBUUFBQXdFSEFBQUFBUUFBQUtyaGk4QUFB
QUlBQUFBdVpHVmlkV2NrVXdBQUFBQklBUUFBQXdITUFBQUFBd0FBQUFBQUFBQkhBUVVBCkFBQUFB
QUFBUjBJQUFBQUFBQUJIQVNBQUFnQXVkR1Y0ZEFBQUFBQUFBQUJKQVFBQUF3RWZBQUFBQWdBQUFM
dEk4NW9BQUFJQUFBQXUKWkdWaWRXY2tVd0FBQUFCS0FRQUFBd0hzQUFBQUF3QUFBQUFBQUFCSkFR
VUFBQUFBQUFBQWJrSUFBQUFBQUFCSkFTQUFBZ0F1ZEdWNApkQUFBQUFBQUFBQkxBUUFBQXdFZkFB
QUFBZ0FBQUx0STg1b0FBQUlBQUFBdVpHVmlkV2NrVXdBQUFBQk1BUUFBQXdId0FBQUFBd0FBCkFB
QUFBQUJMQVFVQUFBQUFBQUFBbVVJQUFBQUFBQUJMQVNBQUFnQXVkR1Y0ZEFBQUFBQUFBQUJOQVFB
QUF3RWZBQUFBQWdBQUFMdEkKODVvQUFBSUFBQUF1WkdWaWRXY2tVd0FBQUFCT0FRQUFBd0g4QUFB
QUF3QUFBQUFBQUFCTkFRVUFBQUFBQUFBQXgwSUFBQUFBQUFCTgpBU0FBQWdBdWRHVjRkQUFBQUFB
QUFBQlBBUUFBQXdFZkFBQUFBZ0FBQUx0STg1b0FBQUlBQUFBdVpHVmlkV2NrVXdBQUFBQlFBUUFB
CkF3SDRBQUFBQXdBQUFBQUFBQUJQQVFVQUFBQUFBQUFBQVVNQUFBQUFBQUJQQVNBQUFnQXVkR1Y0
ZEFBQUFBQUFBQUJSQVFBQUF3RWYKQUFBQUFnQUFBTHRJODVvQUFBSUFBQUF1WkdWaWRXY2tVd0FB
QUFCU0FRQUFBd0hvQUFBQUF3QUFBQUFBQUFCUkFRVUFBQUFBQUFBQQpPRU1BQUFBQUFBQlJBU0FB
QWdBdWRHVjRkQUFBQUFBQUFBQlRBUUFBQXdFZkFBQUFBZ0FBQUx0STg1b0FBQUlBQUFBdVpHVmlk
V2NrClV3QUFBQUJVQVFBQUF3SDBBQUFBQXdBQUFBQUFBQUJUQVFVQUFBQUFBQUFBWVVNQUFBQUFB
QUJUQVNBQUFnQXVkR1Y0ZEFBQUFBQUEKQUFCVkFRQUFBd0VKQUFBQUFRQUFBRFRyMjFrQUFBSUFB
QUF1WkdWaWRXY2tVd0FBQUFCV0FRQUFBd0hNQUFBQUF3QUFBQUFBQUFCVgpBUVVBQUFBQUFBQUFs
a01BQUFBQUFBQlZBU0FBQWdBdWNtUmhkR0VBQUFBQUFBQlhBUUFBQXdFWUFBQUFCZ0FBQUFBQUFB
QUFBQUlBCkFBQUFBQUFBdlVNQUFBQUFBQUJYQVFBQUFnQUFBQUFBNGtNQUFBQUFBQUFBQUNBQUFn
QUFBQUFBRFVRQUFBQUFBQUFBQUNBQWFRRW8KQkFBQUFnQUFBQUFBQUFBQUFBQUFBQUF1ZEdWNGRB
QUFBQUFBQUFCWUFRQUFBd0VIQUFBQUFRQUFBS3JoaThBQUFBSUFBQUF1WkdWaQpkV2NrVXdBQUFB
QlpBUUFBQXdITUFBQUFBd0FBQUFBQUFBQllBUVVBQUFBQUFBQUFPRVFBQUFBQUFBQllBU0FBQWdB
dWRHVjRkQUFBCkFBQUFBQUJhQVFBQUF3RWZBQUFBQWdBQUFMdEk4NW9BQUFJQUFBQXVaR1ZpZFdj
a1V3QUFBQUJiQVFBQUF3SHNBQUFBQXdBQUFBQUEKQUFCYUFRVUFBQUFBQUFBQVgwUUFBQUFBQUFC
YUFTQUFBZ0F1ZEdWNGRBQUFBQUFBQUFCY0FRQUFBd0VoQWdBQU93QUFBSEpOYUJVQQpBQUVBQUFB
dVpHVmlkV2NrVXdBQUFBQmRBUUFBQXdHb0F3QUFKUUFBQUFBQUFBQmNBUVVBQUFBQUFBQUFpa1FB
QUFBQUFBQmNBU0FBCkFnQWtURTQyTlFBQUFPUUJBQUJjQVFBQUJnQXVZbk56QUFBQUFBQUFBQUJl
QVFBQUF3RUVBQUFBQUFBQUFBQUFBQUFBQUFJQUFBQUEKQUFBQXkwUUFBQUFBQUFCZUFRQUFBd0Fr
VEU0MEFBQUFBS1FCQUFCY0FRQUFCZ0F1WW5OekFBQUFBQUFBQUFCZkFRQUFBd0VFQUFBQQpBQUFB
QUFBQUFBQUFBQUlBQUFBQUFBQUFTa1VBQUFBQUFBQmZBUUFBQXdBa1RFNDJBQUFBQUdrQkFBQmNB
UUFBQmdBdVluTnpBQUFBCkFBQUFBQUJnQVFBQUF3RUVBQUFBQUFBQUFBQUFBQUFBQUFJQUFBQUFB
QUFBdDBVQUFBQUFBQUJnQVFBQUF3QWtURTQ0QUFBQUFDc0IKQUFCY0FRQUFCZ0F1WW5OekFBQUFB
QUFBQUFCaEFRQUFBd0VFQUFBQUFBQUFBQUFBQUFBQUFBSUFBQUFBQUFBQU9VWUFBQUFBQUFCaApB
UUFBQXdBa1RFNHhNQUFBQU9vQUFBQmNBUUFBQmdBdVluTnpBQUFBQUFBQUFBQmlBUUFBQXdFRUFB
QUFBQUFBQUFBQUFBQUFBQUlBCkFBQUFBQUFBeDBZQUFBQUFBQUJpQVFBQUF3QWtURTR4TWdBQUFL
a0FBQUJjQVFBQUJnQXVZbk56QUFBQUFBQUFBQUJqQVFBQUF3RUUKQUFBQUFBQUFBQUFBQUFBQUFB
SUFBQUFBQUFBQVBVY0FBQUFBQUFCakFRQUFBd0FrVEU0eE5BQUFBR1VBQUFCY0FRQUFCZ0F1WW5O
egpBQUFBQUFBQUFBQmtBUUFBQXdFRUFBQUFBQUFBQUFBQUFBQUFBQUlBQUFBQUFBQUF0RWNBQUFB
QUFBQmtBUUFBQXdBQUFBQUFLRWdBCkFBQUFBQUFBQUNBQUFnQXVZbk56QUFBQUFBQUFBQUJsQVFB
QUF3RUVBQUFBQUFBQUFBQUFBQUFBQUFJQUFBQUFBQUFBTlVnQUFBQUEKQUFCbEFRQUFBd0FrVEU0
eE5nQUFBQ0VBQUFCY0FRQUFCZ0FrVEU0M05RQUFBT3dCQUFCY0FRQUFBd0FrVEU0Mk53QUFBQXdD
QUFCYwpBUUFBQXdBdWRHVjRkQUFBQUFBQUFBQm1BUUFBQXdFN0FBQUFCd0FBQVA3dkNBd0FBQUVB
QUFBdVpHVmlkV2NrVXdBQUFBQm5BUUFBCkF3RWtBUUFBQndBQUFBQUFBQUJtQVFVQUFBQUFBQUFB
ZzBnQUFBQUFBQUJtQVNBQUFnQXVZbk56QUFBQUFBQUFBQUJvQVFBQUF3RUUKQUFBQUFBQUFBQUFB
QUFBQUFBSUFBQUFBQUFBQXdrZ0FBQUFBQUFCb0FRQUFBd0F1WW5OekFBQUFBQUFBQUFCcEFRQUFB
d0VFQUFBQQpBQUFBQUFBQUFBQUFBQUlBQUFBQUFBQUFOVWtBQUFBQUFBQnBBUUFBQXdBdVpHVmlk
V2NrVXdBQUFBQnFBUUFBQXdFZ0FBQUFBZ0FBCkFBQUFBQUJwQVFVQUFBQXVaR1ZpZFdja1V3QUFB
QUJyQVFBQUF3RWdBQUFBQWdBQUFBQUFBQUFGQVFVQUFBQXVaR1ZpZFdja1V3QUEKQUFCc0FRQUFB
d0VnQUFBQUFnQUFBQUFBQUFBTUFRVUFBQUF1WkdWaWRXY2tVd0FBQUFCdEFRQUFBd0VnQUFBQUFn
QUFBQUFBQUFBVApBUVVBQUFBdVpHVmlkV2NrVXdBQUFBQnVBUUFBQXdFZ0FBQUFBZ0FBQUFBQUFB
QWFBUVVBQUFBdVpHVmlkV2NrVXdBQUFBQnZBUUFBCkF3RWdBQUFBQWdBQUFBQUFBQUFoQVFVQUFB
QXVaR1ZpZFdja1V3QUFBQUJ3QVFBQUF3RWdBQUFBQWdBQUFBQUFBQUFvQVFVQUFBQXUKWkdWaWRX
Y2tVd0FBQUFCeEFRQUFBd0VnQUFBQUFnQUFBQUFBQUFBdkFRVUFBQUF1WkdWaWRXY2tVd0FBQUFC
eUFRQUFBd0VnQUFBQQpBZ0FBQUFBQUFBQTJBUVVBQUFBdVpHVmlkV2NrVXdBQUFBQnpBUUFBQXdF
Z0FBQUFBZ0FBQUFBQUFBQmJBQVVBQUFBdVpHVmlkV2NrClV3QUFBQUIwQVFBQUF3RWdBQUFBQWdB
QUFBQUFBQUJqQUFVQUFBQXVaR1ZpZFdja1V3QUFBQUIxQVFBQUF3RWdBQUFBQWdBQUFBQUEKQUFC
N0FBVUFBQUF1WkdWaWRXY2tVd0FBQUFCMkFRQUFBd0VnQUFBQUFnQUFBQUFBQUFDRUFBVUFBQUF1
WkdWaWRXY2tVd0FBQUFCMwpBUUFBQXdFZ0FBQUFBZ0FBQUFBQUFBQ0pBQVVBQUFBdVpHVmlkV2Nr
VXdBQUFBQjRBUUFBQXdFZ0FBQUFBZ0FBQUFBQUFBQkJBUVVBCkFBQXVaR1ZpZFdja1V3QUFBQUI1
QVFBQUF3RWdBQUFBQWdBQUFBQUFBQUNYQUFVQUFBQXVaR1ZpZFdja1V3QUFBQUI2QVFBQUF3RWcK
QUFBQUFnQUFBQUFBQUFDbEFBVUFBQUF1WkdWaWRXY2tVd0FBQUFCN0FRQUFBd0VnQUFBQUFnQUFB
QUFBQUFDdkFBVUFBQUF1WkdWaQpkV2NrVXdBQUFBQjhBUUFBQXdFZ0FBQUFBZ0FBQUFBQUFBQzRB
QVVBQUFBdVpHVmlkV2NrVXdBQUFBQjlBUUFBQXdFZ0FBQUFBZ0FBCkFBQUFBQUMvQUFVQUFBQXVa
R1ZpZFdja1V3QUFBQUIrQVFBQUF3RWdBQUFBQWdBQUFBQUFBQURPQUFVQUFBQXVaR1ZpZFdja1V3
QUEKQUFCL0FRQUFBd0VnQUFBQUFnQUFBQUFBQUFEWEFBVUFBQUF1WkdWaWRXY2tVd0FBQUFDQUFR
QUFBd0VnQUFBQUFnQUFBQUFBQUFCbApBUVVBQUFBdVpHVmlkV2NrVkFBQUFBQ0JBUUFBQXdGa0FB
QUFBQUFBQUFBQUFBQUFBQUFBQUFDQlNRQUFQMkpoWTJ0bmNtOTFibVJTCllXUnBkWE5BVFdWa2FX
RlRhR0Z5WldSVlNWWnZiSFZ0WlZOc2FXUmxja0poWTJ0bmNtOTFibVJGYkdWdFpXNTBRRUF3U1VJ
QVAySmgKWTJ0bmNtOTFibVJUZEhKdmEyVlVhR2xqYTI1bGMzTkFUV1ZrYVdGVGFHRnlaV1JWU1Za
dmJIVnRaVk5zYVdSbGNrSmhZMnRuY205MQpibVJGYkdWdFpXNTBRRUF3U1VJQVAzUnlZV05yU0dW
cFoyaDBRRTFsWkdsaFUyaGhjbVZrVlVsVWFXMWxiR2x1WlZOc2FXUmxja0JBCk1FbENBRDkwY21G
amEwOW1abk5sZEVCTlpXUnBZVk5vWVhKbFpGVkpWR2x0Wld4cGJtVlRiR2xrWlhKQVFEQkpRZ0Ev
ZEdoMWJXSlMKWVdScGRYTkFUV1ZrYVdGVGFHRnlaV1JWU1ZScGJXVnNhVzVsVTJ4cFpHVnlWR2gx
YldKRmJHVnRaVzUwUUVBd1NVSUFQM1J5WVdOcgpVbUZrYVhWelFFMWxaR2xoVTJoaGNtVmtWVWxX
YjJ4MWJXVlRiR2xrWlhKQVFEQkpRZ0EvZEdoMWJXSlNZV1JwZFhOQVRXVmthV0ZUCmFHRnlaV1JW
U1ZadmJIVnRaVk5zYVdSbGNsUm9kVzFpUld4bGJXVnVkRUJBTUVsQ0FGOU5aV1JwWVU1bGQxVkpR
WFZrYVc5V2IyeDEKYldWSWFXZG9TVzFoWjJWRVlYUmhYM0JrWmdCZlRXVmthV0ZPWlhkVlNVRjFa
R2x2Vm05c2RXMWxUMlptU1cxaFoyVkVZWFJoWDNCawpaZ0JmVFdWa2FXRk9aWGRWU1VOc2IzTmxa
RU5oY0hScGIyNXpTVzFoWjJWRVlYUmhYM0JrWmdCZlRXVmthV0ZPWlhkVlNVVnVkR1Z5ClJuVnNi
SE5qY21WbGJrbHRZV2RsUkdGMFlWOXdaR1lBWDAxbFpHbGhUbVYzVlVsUVlYVnpaVUoxZEhSdmJr
bHRZV2RsUkdGMFlWOXcKWkdZQVgwMWxaR2xoVG1WM1ZVbFFiR0Y1UW5WMGRHOXVTVzFoWjJWRVlY
UmhYM0JrWmdCZlRXVmthV0ZPWlhkVlNWSmxkSEpsWVhRegpNRWx0WVdkbFJHRjBZVjl3WkdZQVgw
MWxaR2xoVG1WM1ZVbFRaV1ZyVkc5U1pXRnNkR2x0WlVsdFlXZGxSR0YwWVY5d1pHWUFYM0J5ClpY
TnpaV1JUYUdGa2IzZENiSFZ5QUQ5RFIxQnZhVzUwVFdGclpVQkFXVUUvUVZWRFIxQnZhVzUwUUVC
TlRVQmFBRjlmWm14MGRYTmwKWkFBL1EwZFRhWHBsVFdGclpVQkFXVUUvUVZWRFIxTnBlbVZBUUUx
TlFGb0FQME5IVW1WamRFMWhhMlZBUUZsQlAwRlZRMGRTWldOMApRRUJOVFUxTlFGb0FQMTlmUTBk
UWIybHVkRUZ3Y0d4NVFXWm1hVzVsVkhKaGJuTm1iM0p0UUVCWlFUOUJWVU5IVUc5cGJuUkFRRlV4
ClFGVkRSMEZtWm1sdVpWUnlZVzV6Wm05eWJVQkFRRm9BUHo4eFRXVmthV0ZWU1VWc1pXMWxiblJB
UUZWQlJVQllXZ0EvUDE4M1RXVmsKYVdGVlNVVnNaVzFsYm5SQVFEWkNRQUEvUDE5SFRXVmthV0ZW
U1VWc1pXMWxiblJBUUZWQlJWQkJXRWxBV2dBL1AxOUZUV1ZrYVdGVgpTVVZzWlcxbGJuUkFRRlZC
UlZCQldFbEFXZ0JmWDNCMWNtVmpZV3hzQUQ5elpYUlZjRU52Ym5SbGVIUkdiM0pRWVdsdWRHbHVa
MEJOClpXUnBZVlZKUld4bGJXVnVkRUJBVFVKRldGQkJWVU5IUTI5dWRHVjRkRUJBVlVOSFVtVmpk
RUJBUUZvQVAzSmxjM1J2Y21WRGIyNTAKWlhoMFFXWjBaWEpRWVdsdWRHbHVaMEJOWldScFlWVkpS
V3hsYldWdWRFQkFUVUpGV0ZCQlZVTkhRMjl1ZEdWNGRFQkFRRm9BUDJocApkRlJsYzNSQVRXVmth
V0ZWU1VWc1pXMWxiblJBUUZWQ1JWOU9WVU5IVW1WamRFQkFWVU5IVUc5cGJuUkFRRUJhQUY5ZmFX
MXdYMTlEClIxSmxZM1JEYjI1MFlXbHVjMUJ2YVc1MEFEOXVZWFIxY21Gc1UybDZaVUJOWldScFlW
VkpSV3hsYldWdWRFQkFWVUpGUDBGVlEwZFQKYVhwbFFFQllXZ0JmWDJsdGNGOWZRMGRUYVhwbFdt
Vnlid0EvYzJWMFVHRnlkRWxFUUUxbFpHbGhWVWxGYkdWdFpXNTBRRUJSUVVWWQpTRUJhQUQ5d1lY
SjBTVVJBVFdWa2FXRlZTVVZzWlcxbGJuUkFRRkZDUlVoWVdnQS9hWE5RY21WemMyVmtRRTFsWkds
aFZVbEZiR1Z0ClpXNTBRRUJSUWtWZlRsaGFBRDlwYzBadlkzVnpaV1JBVFdWa2FXRlZTVVZzWlcx
bGJuUkFRRkZDUlY5T1dGb0FQMmx6Ulc1aFlteGwKWkVCTlpXUnBZVlZKUld4bGJXVnVkRUJBVVVK
RlgwNVlXZ0EvUDE5SFRXVmthV0ZWU1VWc1pXMWxiblJBUUZWQlJWQkJXRWxBV2dBLwpQek5BV1VG
WVVFRllRRm9BUDNScGJXVk1iMkZrWldSQVRXVmthV0ZWU1ZScGJXVnNhVzVsVTJ4cFpHVnlRRUJS
UWtWT1dGb0FQMlIxCmNtRjBhVzl1UUUxbFpHbGhWVWxVYVcxbGJHbHVaVk5zYVdSbGNrQkFVVUpG
VGxoYUFEOW1jbUZqZEdsdmJreHZZV1JsWkVCTlpXUnAKWVZWSlZHbHRaV3hwYm1WVGJHbGtaWEpB
UUZGQ1JVNVlXZ0JmWDNKbFlXeEFNREF3TURBd01EQXdNREF3TURBd01BQS9abWxzYkUxdgpaR1ZB
VFdWa2FXRlRhR0Z5WldSVlNVbHRZV2RsUld4bGJXVnVkRUJBVVVKRlAwRlhORTFsWkdsaFZVbEpi
V0ZuWlVacGJHeE5iMlJsClFERkFXRm9BUHo4d1RXVmthV0ZWU1VWc1pXMWxiblJBUUZGQlJVQllX
Z0EvUHpGTlpXUnBZVk5vWVhKbFpGVkpTVzFoWjJWRmJHVnQKWlc1MFFFQlZRVVZBV0ZvQVAzSmha
R2wxYzBCTlpXUnBZVk5vWVhKbFpGVkpWbTlzZFcxbFUyeHBaR1Z5UW1GamEyZHliM1Z1WkVWcwpa
VzFsYm5SQVFGTkJUVmhhQUY5ZmNtVmhiRUEwTVRNd01EQXdNQUEvYzNSeWIydGxWR2hwWTJ0dVpY
TnpRRTFsWkdsaFUyaGhjbVZrClZVbFdiMngxYldWVGJHbGtaWEpDWVdOclozSnZkVzVrUld4bGJX
VnVkRUJBVTBGTldGb0FYMTl5WldGc1FETm1PREF3TURBd0FEOW8KWldsbmFIUkFUV1ZrYVdGVGFH
RnlaV1JWU1ZScGJXVnNhVzVsVTJ4cFpHVnlRRUJUUVUxWVdnQmZYM0psWVd4QU5ERXlNREF3TURB
QQpQMjltWm5ObGRFQk5aV1JwWVZOb1lYSmxaRlZKVkdsdFpXeHBibVZUYkdsa1pYSkFRRk5CVFZo
YUFGOWZjbVZoYkVBME1EQXdNREF3Ck1BQS9jbUZrYVhWelFFMWxaR2xoVTJoaGNtVmtWVWxVYVcx
bGJHbHVaVk5zYVdSbGNsUm9kVzFpUld4bGJXVnVkRUJBVTBGTldGb0EKWDE5eVpXRnNRRFF3T0RB
d01EQXdBRDl5WVdScGRYTkFUV1ZrYVdGVGFHRnlaV1JWU1ZadmJIVnRaVk5zYVdSbGNrQkFVMEZO
V0ZvQQpYMTl5WldGc1FEUXdZVEF3TURBd0FEOXlZV1JwZFhOQVRXVmthV0ZUYUdGeVpXUlZTVlp2
YkhWdFpWTnNhV1JsY2xSb2RXMWlSV3hsCmJXVnVkRUJBVTBGTldGb0FQMlpoWW5OQVFGbEJUVTFB
V2dBL1kzSmxZWFJsUTBkTVlYbGxja1p5YjIxUVJFWkVZWFJoVUhKdmRtbGsKWlhKQVFGbEJVRUZW
UTBkTVlYbGxja0JBVUVGVlEwZEVZWFJoVUhKdmRtbGtaWEpBUUVCYUFGOWZhVzF3WDE5RFIwTnZi
blJsZUhSRQpjbUYzVUVSR1VHRm5aUUJmWDJsdGNGOWZRMGREYjI1MFpYaDBRMjl1WTJGMFExUk5B
RjlmYVcxd1gxOURSMEZtWm1sdVpWUnlZVzV6ClptOXliVkp2ZEdGMFpRQmZYMmx0Y0Y5ZlEwZEJa
bVpwYm1WVWNtRnVjMlp2Y20xTllXdGxWSEpoYm5Oc1lYUnBiMjRBWDE5cGJYQmYKWDBOSFRHRjVa
WEpIWlhSRGIyNTBaWGgwQUY5ZmFXMXdYMTlEUjB4aGVXVnlRM0psWVhSbFYybDBhRU52Ym5SbGVI
UUFYMTlwYlhCZgpYME5IVW1WamRFRndjR3g1UVdabWFXNWxWSEpoYm5ObWIzSnRBRjlmYVcxd1gx
OURSMEZtWm1sdVpWUnlZVzV6Wm05eWJVMWhhMlZTCmIzUmhkR2x2YmdCZlgzSmxZV3hBTkRBMk5q
Z3dNREF3TURBd01EQXdNQUJmWDNKbFlXeEFOREF3T1RJeFptSTFORFEwTW1ReE9BQmYKWDJsdGNG
OWZRMGRRUkVaUVlXZGxSMlYwVW05MFlYUnBiMjVCYm1kc1pRQmZYMmx0Y0Y5ZlEwZFNaV04wU1c1
MFpYSnpaV04wYVc5dQpBRjlmYVcxd1gxOURSMUJFUmxCaFoyVkhaWFJDYjNoU1pXTjBBRjlmYVcx
d1gxOURSbEpsYkdWaGMyVUFYMTlwYlhCZlgwTkhVRVJHClJHOWpkVzFsYm5SSFpYUlFZV2RsQUY5
ZmFXMXdYMTlEUjFCRVJrUnZZM1Z0Wlc1MFEzSmxZWFJsVjJsMGFGQnliM1pwWkdWeUFEOWoKY21W
aGRHVkRSMHhoZVdWeVYybDBhRU52Ym5SbGVIUkpibEpsWTNSQVFGbEJVRUZWUTBkTVlYbGxja0JB
VUVGVlEwZERiMjUwWlhoMApRRUJWUTBkU1pXTjBRRUJRUWxWZlgwTkdSR2xqZEdsdmJtRnllVUJB
UUZvQVgxOXBiWEJmWDBOSFEyOXVkR1Y0ZEZSeVlXNXpiR0YwClpVTlVUUUJmWDJsdGNGOWZRMGRE
YjI1MFpYaDBVMk5oYkdWRFZFMEFYMTlwYlhCZlgwTkhUR0Y1WlhKSFpYUlRhWHBsQUY5ZmFXMXcK
WDE5RFIwTnZiblJsZUhSRGIyNTJaWEowVTJsNlpWUnZSR1YyYVdObFUzQmhZMlVBUDJSeVlYZEpi
V0ZuWlU5eVRHRjVaWEpBUUZsQgpXRkJCVlVOSFEyOXVkR1Y0ZEVCQVZVTkhVbVZqZEVCQVVFSllR
Rm9BWDE5cGJYQmZYME5IUTI5dWRHVjRkRVJ5WVhkTVlYbGxja2x1ClVtVmpkQUJmWDJsdGNGOWZR
MGRNWVhsbGNrZGxkRlI1Y0dWSlJBQmZYMmx0Y0Y5ZlEwZERiMjUwWlhoMFJISmhkMGx0WVdkbEFG
OWYKYVcxd1gxOURSMGx0WVdkbFIyVjBWSGx3WlVsRUFGOWZhVzF3WDE5RFJrZGxkRlI1Y0dWSlJB
QS9jbVZqZEVadmNsTm9ZV1J2ZDA5dwpaWEpoZEdsdmJrQkFXVUUvUVZWRFIxSmxZM1JBUUZVeFFG
VkRSMU5wZW1WQVFFMUFXZ0EvWkhKaGQxTm9ZV1J2ZDBCQVdVRllVRUZWClEwZERiMjUwWlhoMFFF
QlZRMGRTWldOMFFFQlFRbGhWUTBkVGFYcGxRRUJOVUVGVlEwZERiMnh2Y2tCQVFGb0FYMTlwYlhC
ZlgwTkgKUTI5dWRHVjRkRkpsYzNSdmNtVkhVM1JoZEdVQVgxOXBiWEJmWDBOSFEyOXVkR1Y0ZEZO
bGRGTm9ZV1J2ZDFkcGRHaERiMnh2Y2dCZgpYM0psWVd4QU1EQXdNREF3TURBQVgxOXBiWEJmWDBO
SFEyOXVkR1Y0ZEVOc2FYQlViMUpsWTNRQVgxOXBiWEJmWDBOSFVtVmpkRWRsCmRFMXBibGtBWDE5
cGJYQmZYME5IVW1WamRFZGxkRTFoZUZrQVgxOXBiWEJmWDBOSFEyOXVkR1Y0ZEVOdmJuWmxjblJT
WldOMFZHOVYKYzJWeVUzQmhZMlVBWDE5cGJYQmZYME5IVW1WamRFbHVkR1ZuY21Gc0FGOWZhVzF3
WDE5RFIwTnZiblJsZUhSRGIyNTJaWEowVW1WagpkRlJ2UkdWMmFXTmxVM0JoWTJVQVgxOXBiWEJm
WDBOSFEyOXVkR1Y0ZEZOaGRtVkhVM1JoZEdVQVAyTnlaV0YwWlVkbGJtVnlhV05ICmNtRjVSM0po
WkdsbGJuUkFRRmxCVUVGVlEwZEhjbUZrYVdWdWRFQkFVVUpOTUVsQVdnQmZYMmx0Y0Y5ZlEwZEhj
bUZrYVdWdWRFTnkKWldGMFpWZHBkR2hEYjJ4dmNrTnZiWEJ2Ym1WdWRITUFQMk52Ykc5eVUzQmhZ
MlZBUHpFL1AyTnlaV0YwWlVkbGJtVnlhV05IY21GNQpSM0poWkdsbGJuUkFRRmxCVUVGVlEwZEhj
bUZrYVdWdWRFQkFVVUpOTUVsQVdrQTBVRUZWUTBkRGIyeHZjbE53WVdObFFFQkJBRjlmCmFXMXdY
MTlEUjBOdmJHOXlVM0JoWTJWRGNtVmhkR1ZYYVhSb1RtRnRaUUJmWDJsdGNGOWZhME5IUTI5c2Iz
SlRjR0ZqWlVkbGJtVnkKYVdOSGNtRjVBRDhrVXpsQVB6RS9QMk55WldGMFpVZGxibVZ5YVdOSGNt
RjVSM0poWkdsbGJuUkFRRmxCVUVGVlEwZEhjbUZrYVdWdQpkRUJBVVVKTk1FbEFXa0EwU1VFQVAy
UnlZWGRKYm01bGNsTm9ZV1J2ZDBCQVdVRllVRUZWUTBkRGIyNTBaWGgwUUVCVlEwZFNaV04wClFF
QlFRbGhWUTBkVGFYcGxRRUJOVUVGVlEwZERiMnh2Y2tCQVFGb0FYMTlwYlhCZlgwTkhRMjl1ZEdW
NGRFVnVaRlJ5WVc1emNHRnkKWlc1amVVeGhlV1Z5QUY5ZmFXMXdYMTlEUjBOdmJHOXlSMlYwUTI5
dWMzUmhiblJEYjJ4dmNnQmZYMmx0Y0Y5ZmEwTkhRMjlzYjNKWAphR2wwWlFCZlgybHRjRjlmUTBk
RGIyNTBaWGgwUm1sc2JGSmxZM1FBWDE5cGJYQmZYME5IVW1WamRFbHVabWx1YVhSbEFGOWZhVzF3
ClgxOURSME52Ym5SbGVIUlRaWFJHYVd4c1EyOXNiM0pYYVhSb1EyOXNiM0lBWDE5cGJYQmZYME5I
UTI5dWRHVjRkRk5sZEVKc1pXNWsKVFc5a1pRQmZYMmx0Y0Y5ZlEwZERiMjUwWlhoMFFtVm5hVzVV
Y21GdWMzQmhjbVZ1WTNsTVlYbGxjbGRwZEdoU1pXTjBBRjlmYVcxdwpYMTlEUjFKbFkzUlZibWx2
YmdCZlgybHRjRjlmUTBkU1pXTjBTVzUwWlhKelpXTjBjMUpsWTNRQVAyUnlZWGRQZFhSbGNsTm9Z
V1J2CmQwQkFXVUZZVUVGVlEwZERiMjUwWlhoMFFFQlZRMGRTWldOMFFFQlFRbGhBV2dCZlgzSmxZ
V3hBWW1ZNE1EQXdNREFBUDJSeWIzQlQKYUdGa2IzZERiMnh2Y2tBL01UOC9aSEpoZDA5MWRHVnlV
MmhoWkc5M1FFQlpRVmhRUVZWRFIwTnZiblJsZUhSQVFGVkRSMUpsWTNSQQpRRkJDV0VCYVFEUlFR
VlZEUjBOdmJHOXlRRUJCQUY5ZmFXMXdYMTlEUjBOdmJHOXlRM0psWVhSbFIyVnVaWEpwWTBkeVlY
a0FYMTl5ClpXRnNRRE5tTkdOalkyTmtBRDhrVXpFd1FEOHhQejlrY21GM1QzVjBaWEpUYUdGa2Iz
ZEFRRmxCV0ZCQlZVTkhRMjl1ZEdWNGRFQkEKVlVOSFVtVmpkRUJBVUVKWVFGcEFORWxCQUQ5a2Nt
RjNSbTlqZFhOU2FXNW5RRUJaUVZoUVFWVkRSME52Ym5SbGVIUkFRRlZEUjFKbApZM1JBUUZCQ1dF
QmFBRjlmYVcxd1gxOURSME52Ym5SbGVIUlRaWFJUZEhsc1pRQmZYMmx0Y0Y5ZlEwZFRkSGxzWlVO
eVpXRjBaVVp2ClkzVnpVbWx1WndCZlgzSmxZV3hBTTJZd01EQXdNREFBWDE5cGJYQmZYME5IVW1W
amRGcGxjbThBUDNOMGVXeGxRRDh4UHo5a2NtRjMKUm05amRYTlNhVzVuUUVCWlFWaFFRVlZEUjBO
dmJuUmxlSFJBUUZWRFIxSmxZM1JBUUZCQ1dFQmFRRFJRUVZWRFIxTjBlV3hsUUVCQgpBRDlrY21G
M00xQmhjblJDWVc1dVpYSkpibEpsWTNSU1pXeGhkR2wyWlZSdlJXUm5aVUJBV1VGWVVFRlZRMGRE
YjI1MFpYaDBRRUJWClEwZFNaV04wUUVCWE5FTkhVbVZqZEVWa1oyVkFRRTFRUWxoUVFWVkRSME52
Ykc5eVFFQXpRRm9BWDE5cGJYQmZYME5IUTI5dWRHVjQKZEVSeVlYZE1hVzVsWVhKSGNtRmthV1Z1
ZEFCZlgybHRjRjlmUTBkU1pXTjBSMlYwVFdsa1dBQmZYMmx0Y0Y5ZlEwZEhjbUZrYVdWdQpkRWRs
ZEZSNWNHVkpSQUJmWDJsdGNGOWZRMGRTWldOMFIyVjBUV2x1V0FCZlgybHRjRjlmUTBkRGIyeHZj
a2RsZEZSNWNHVkpSQUJmClgybHRjRjlmUTBkRGIyNTBaWGgwVTJWMFUyaHZkV3hrUVc1MGFXRnNh
V0Z6QUY5ZmNtVmhiRUF6Wm1Vd01EQXdNREF3TURBd01EQXcKQUY5ZmFXMXdYMTlEUjBOdmJuUmxl
SFJTYjNSaGRHVkRWRTBBWDE5eVpXRnNRR0ptWXprd1ptUmlBRjlmY21WaGJFQXpabU01TUdaawpZ
Z0JmWDJsdGNGOWZRMGRTWldOMFIyVjBWMmxrZEdnQVgxOXBiWEJmWDBOSFVtVmpkRWRsZEVobGFX
ZG9kQUEvWVdSa1VtOTFibVJsClpGSmxZM1JVYjBOdmJuUmxlSFJBUUZsQldGQkJWVU5IUTI5dWRH
VjRkRUJBVlVOSFVtVmpkRUJBVFVCYUFGOWZhVzF3WDE5RFIxQmgKZEdoU1pXeGxZWE5sQUY5ZmFX
MXdYMTlEUjBOdmJuUmxlSFJCWkdSUVlYUm9BRjlmYVcxd1gxOURSMUJoZEdoRGJHOXpaVk4xWW5C
aApkR2dBWDE5eVpXRnNRRFF3T1RaalltVTBBRjlmY21WaGJFQTBNRFE1TUdaa1lnQmZYMmx0Y0Y5
ZlEwZFFZWFJvUVdSa1FYSmpBRjlmCmFXMXdYMTlEUjFCaGRHaE5iM1psVkc5UWIybHVkQUJmWDJs
dGNGOWZRMGRRWVhSb1EzSmxZWFJsVFhWMFlXSnNaUUEvWTI5dWMzUnkKWVdsdVVtVmpkRkJ5WlhO
bGNuWnBibWRCYzNCbFkzUlNZWFJwYjBCQVdVRS9RVlZEUjFKbFkzUkFRRlV4UUZWRFIxTnBlbVZB
UUVCYQpBRDl3YjJsdWRFbHpWMmwwYUdsdVJHbHpkR0Z1WTJWUFpsQnZhVzUwUUVCWlFWOU9WVU5I
VUc5cGJuUkFRREJOUUZvQVAzSnZkVzVrClVtVmpkRU52Ym5SaGFXNXpVRzlwYm5SQVFGbEJYMDVW
UTBkU1pXTjBRRUJOVlVOSFVHOXBiblJBUUVCYUFEOW5iRzkzUTI5c2IzSkEKVFdWa2FXRlRhR0Z5
WldSVlNVbHRZV2RsUld4bGJXVnVkRUJBU1VGRlVFRlZRMGREYjJ4dmNrQkFXRm9BUDI5MGFHVnlS
bWxzYkVkcwpiM2REYjJ4dmNrQS9NVDgvWjJ4dmQwTnZiRzl5UUUxbFpHbGhVMmhoY21Wa1ZVbEpi
V0ZuWlVWc1pXMWxiblJBUUVsQlJWQkJWVU5IClEyOXNiM0pBUUZoYVFEUlFRVlV6UUVFQVAyWnBi
R3hTWlhCc1lXTmxSMnh2ZDBOdmJHOXlRRDh4UHo5bmJHOTNRMjlzYjNKQVRXVmsKYVdGVGFHRnla
V1JWU1VsdFlXZGxSV3hsYldWdWRFQkFTVUZGVUVGVlEwZERiMnh2Y2tCQVdGcEFORkJCVlROQVFR
QS9KRk14TVVBLwpNVDgvWjJ4dmQwTnZiRzl5UUUxbFpHbGhVMmhoY21Wa1ZVbEpiV0ZuWlVWc1pX
MWxiblJBUUVsQlJWQkJWVU5IUTI5c2IzSkFRRmhhClFEUkpRUUEvWkhKaGQwSmhZMnRuY205MWJt
UkFUV1ZrYVdGVGFHRnlaV1JWU1VsdFlXZGxSV3hsYldWdWRFQkFWVUpGV0ZCQlZVTkgKUTI5dWRH
VjRkRUJBVlVOSFVtVmpkRUJBUUZvQVAyeHZkMlZ5Um1sc2JFQS9NVDgvWkhKaGQwSmhZMnRuY205
MWJtUkFUV1ZrYVdGVAphR0Z5WldSVlNVbHRZV2RsUld4bGJXVnVkRUJBVlVKRldGQkJWVU5IUTI5
dWRHVjRkRUJBVlVOSFVtVmpkRUJBUUZwQU5GQkJWVU5IClIzSmhaR2xsYm5SQVFFRUFQMk52Ykc5
eWMwQS9NVDgvWkhKaGQwSmhZMnRuY205MWJtUkFUV1ZrYVdGVGFHRnlaV1JWU1VsdFlXZGwKUld4
bGJXVnVkRUJBVlVKRldGQkJWVU5IUTI5dWRHVjRkRUJBVlVOSFVtVmpkRUJBUUZwQU5GQkJUVUVB
UDIxcFpHUnNaVVpwYkd4QQpQekUvUDJSeVlYZENZV05yWjNKdmRXNWtRRTFsWkdsaFUyaGhjbVZr
VlVsSmJXRm5aVVZzWlcxbGJuUkFRRlZDUlZoUVFWVkRSME52CmJuUmxlSFJBUUZWRFIxSmxZM1JB
UUVCYVFEUlFRVlZEUjBOdmJHOXlRRUJCQUY5ZmNtVmhiRUF6WmpVd1pEQmtNUUEvZEc5d1JtbHMK
YkVBL01UOC9aSEpoZDBKaFkydG5jbTkxYm1SQVRXVmthV0ZUYUdGeVpXUlZTVWx0WVdkbFJXeGxi
V1Z1ZEVCQVZVSkZXRkJCVlVOSApRMjl1ZEdWNGRFQkFWVU5IVW1WamRFQkFRRnBBTkZCQlZVTkhR
MjlzYjNKQVFFRUFYMTl5WldGc1FETm1OVGhrT0dRNUFEOGtVekV5ClFEOHhQejlrY21GM1FtRmph
MmR5YjNWdVpFQk5aV1JwWVZOb1lYSmxaRlZKU1cxaFoyVkZiR1Z0Wlc1MFFFQlZRa1ZZVUVGVlEw
ZEQKYjI1MFpYaDBRRUJWUTBkU1pXTjBRRUJBV2tBMFNVRUFQM0JoYVc1MFFFMWxaR2xoVTJoaGNt
VmtWVWxKYldGblpVVnNaVzFsYm5SQQpRRlZCUlZoUVFWVkRSME52Ym5SbGVIUkFRRlZEUjFKbFkz
UkFRRUJhQUQ5cGJtNWxjbE5vWVdSdmQwTnZiRzl5UUQ5T1FEOC9jR0ZwCmJuUkFUV1ZrYVdGVGFH
RnlaV1JWU1VsdFlXZGxSV3hsYldWdWRFQkFWVUZGV0ZCQlZVTkhRMjl1ZEdWNGRFQkFWVU5IVW1W
amRFQkEKUUZwQU5GQkJWVU5IUTI5c2IzSkFRRUVBWDE5eVpXRnNRRE5tTkRBd01EQXdBRDhrVXpF
elFEOU9RRDgvY0dGcGJuUkFUV1ZrYVdGVAphR0Z5WldSVlNVbHRZV2RsUld4bGJXVnVkRUJBVlVG
RldGQkJWVU5IUTI5dWRHVjRkRUJBVlVOSFVtVmpkRUJBUUZwQU5FbEJBRjlmCmFXMXdYMTlEUjBO
dmJuUmxlSFJUWlhSQmJIQm9ZUUEvY0dGcGJuUkFUV1ZrYVdGVGFHRnlaV1JWU1VKaFkydG5jbTkx
Ym1SRmJHVnQKWlc1MFFFQlZRVVZZVUVGVlEwZERiMjUwWlhoMFFFQlZRMGRTWldOMFFFQkFXZ0Jm
WDNKbFlXeEFOREF3TURBd01EQXdNREF3TURBdwpNQUJmWDNKbFlXeEFNMlptTURBd01EQXdNREF3
TURBd01BQmZYM0psWVd4QU0yVmlNek16TXpNQVAzUnZjRUp2Y21SbGNrQS9NVDgvCmNHRnBiblJB
VFdWa2FXRlRhR0Z5WldSVlNVSmhZMnRuY205MWJtUkZiR1Z0Wlc1MFFFQlZRVVZZVUVGVlEwZERi
MjUwWlhoMFFFQlYKUTBkU1pXTjBRRUJBV2tBMFVFRlFRVlZEUjBOdmJHOXlRRUJCQUQ5aWIzUjBi
MjFHYVd4c1FEOHhQejl3WVdsdWRFQk5aV1JwWVZObwpZWEpsWkZWSlFtRmphMmR5YjNWdVpFVnNa
VzFsYm5SQVFGVkJSVmhRUVZWRFIwTnZiblJsZUhSQVFGVkRSMUpsWTNSQVFFQmFRRFJRClFWVkRS
MGR5WVdScFpXNTBRRUJCQUQ5aWIzUjBiMjFEYjJ4dmNuTkFQekUvUDNCaGFXNTBRRTFsWkdsaFUy
aGhjbVZrVlVsQ1lXTnIKWjNKdmRXNWtSV3hsYldWdWRFQkFWVUZGV0ZCQlZVTkhRMjl1ZEdWNGRF
QkFWVU5IVW1WamRFQkFRRnBBTkZCQlRVRUFQMjFwWkdScwpaVVpwYkd4QVB6RS9QM0JoYVc1MFFF
MWxaR2xoVTJoaGNtVmtWVWxDWVdOclozSnZkVzVrUld4bGJXVnVkRUJBVlVGRldGQkJWVU5IClEy
OXVkR1Y0ZEVCQVZVTkhVbVZqZEVCQVFGcEFORkJCVlVOSFEyOXNiM0pBUUVFQVgxOXlaV0ZzUURO
a1pqQm1NR1l4QUY5ZmNtVmgKYkVBelpqWmlPRFV4WmdBL2RHOXdSbWxzYkVBL01UOC9jR0ZwYm5S
QVRXVmthV0ZUYUdGeVpXUlZTVUpoWTJ0bmNtOTFibVJGYkdWdApaVzUwUUVCVlFVVllVRUZWUTBk
RGIyNTBaWGgwUUVCVlEwZFNaV04wUUVCQVdrQTBVRUZWUTBkSGNtRmthV1Z1ZEVCQVFRQS9kRzl3
ClEyOXNiM0p6UUQ4eFB6OXdZV2x1ZEVCTlpXUnBZVk5vWVhKbFpGVkpRbUZqYTJkeWIzVnVaRVZz
WlcxbGJuUkFRRlZCUlZoUVFWVkQKUjBOdmJuUmxlSFJBUUZWRFIxSmxZM1JBUUVCYVFEUlFRVTFC
QUQ4a1V6RTFRRDh4UHo5d1lXbHVkRUJOWldScFlWTm9ZWEpsWkZWSgpRbUZqYTJkeWIzVnVaRVZz
WlcxbGJuUkFRRlZCUlZoUVFWVkRSME52Ym5SbGVIUkFRRlZEUjFKbFkzUkFRRUJhUURSSlFRQS9h
R2wwClZHVnpkRUJOWldScFlWTm9ZWEpsWkZWSlZHbHRaV3hwYm1WVGJHbGtaWEpVYUhWdFlrVnNa
VzFsYm5SQVFGVkNSVjlPVlVOSFVtVmoKZEVCQVZVTkhVRzlwYm5SQVFFQmFBRjlmY21WaGJFQTBN
RE13TURBd01EQXdNREF3TURBd0FGOWZhVzF3WDE5RFIxSmxZM1JIWlhSTgphV1JaQUQ5dVlYUjFj
bUZzVTJsNlpVQk5aV1JwWVZOb1lYSmxaRlZKVkdsdFpXeHBibVZUYkdsa1pYSlVhSFZ0WWtWc1pX
MWxiblJBClFGVkNSVDlCVlVOSFUybDZaVUJBV0ZvQVAzQmhhVzUwUUUxbFpHbGhVMmhoY21Wa1ZV
bFVhVzFsYkdsdVpWTnNhV1JsY2xSb2RXMWkKUld4bGJXVnVkRUJBVlVGRldGQkJWVU5IUTI5dWRH
VjRkRUJBVlVOSFVtVmpkRUJBUUZvQVgxOXBiWEJmWDBOSFEyOXVkR1Y0ZEVkbApkRU5zYVhCQ2Iz
VnVaR2x1WjBKdmVBQmZYMmx0Y0Y5ZlEwZE1ZWGxsY2xKbGJHVmhjMlVBWDE5cGJYQmZYME5IUTI5
dWRHVjRkRU5zCmFYQUFYMTlwYlhCZlgwTkhRMjl1ZEdWNGRFTnNiM05sVUdGMGFBQmZYMmx0Y0Y5
ZlEwZERiMjUwWlhoMFFXUmtUR2x1WlZSdlVHOXAKYm5RQVgxOXBiWEJmWDBOSFEyOXVkR1Y0ZEUx
dmRtVlViMUJ2YVc1MEFGOWZhVzF3WDE5RFIwTnZiblJsZUhSQ1pXZHBibEJoZEdnQQpQM05vWVdS
dmQwTnZiRzl5UUQ4eFB6OXdZV2x1ZEVCTlpXUnBZVk5vWVhKbFpGVkpWR2x0Wld4cGJtVlRiR2xr
WlhKVWFIVnRZa1ZzClpXMWxiblJBUUZWQlJWaFFRVlZEUjBOdmJuUmxlSFJBUUZWRFIxSmxZM1JB
UUVCYVFEUlFRVlZEUjBOdmJHOXlRRUJCQUQ5b2FXZG8KYkdsbmFIUkRiMnh2Y2tBL01UOC9jR0Zw
Ym5SQVRXVmthV0ZUYUdGeVpXUlZTVlJwYldWc2FXNWxVMnhwWkdWeVZHaDFiV0pGYkdWdApaVzUw
UUVCVlFVVllVRUZWUTBkRGIyNTBaWGgwUUVCVlEwZFNaV04wUUVCQVdrQTBVRUZWUTBkRGIyeHZj
a0JBUVFBL2JtOXliV0ZzClIzSmhaR2xsYm5SQVB6RS9QM0JoYVc1MFFFMWxaR2xoVTJoaGNtVmtW
VWxVYVcxbGJHbHVaVk5zYVdSbGNsUm9kVzFpUld4bGJXVnUKZEVCQVZVRkZXRkJCVlVOSFEyOXVk
R1Y0ZEVCQVZVTkhVbVZqZEVCQVFGcEFORkJCVlVOSFIzSmhaR2xsYm5SQVFFRUFQMjV2Y20xaApi
RU52Ykc5eWMwQS9NVDgvY0dGcGJuUkFUV1ZrYVdGVGFHRnlaV1JWU1ZScGJXVnNhVzVsVTJ4cFpH
VnlWR2gxYldKRmJHVnRaVzUwClFFQlZRVVZZVUVGVlEwZERiMjUwWlhoMFFFQlZRMGRTWldOMFFF
QkFXa0EwVUVGTlFRQS9jSEpsYzNObFpFZHlZV1JwWlc1MFFEOHgKUHo5d1lXbHVkRUJOWldScFlW
Tm9ZWEpsWkZWSlZHbHRaV3hwYm1WVGJHbGtaWEpVYUhWdFlrVnNaVzFsYm5SQVFGVkJSVmhRUVZW
RApSME52Ym5SbGVIUkFRRlZEUjFKbFkzUkFRRUJhUURSUVFWVkRSMGR5WVdScFpXNTBRRUJCQUQ5
d2NtVnpjMlZrUTI5c2IzSnpRRDh4ClB6OXdZV2x1ZEVCTlpXUnBZVk5vWVhKbFpGVkpWR2x0Wld4
cGJtVlRiR2xrWlhKVWFIVnRZa1ZzWlcxbGJuUkFRRlZCUlZoUVFWVkQKUjBOdmJuUmxlSFJBUUZW
RFIxSmxZM1JBUUVCYVFEUlFRVTFCQUQ4a1V6RTJRRDh4UHo5d1lXbHVkRUJOWldScFlWTm9ZWEps
WkZWSgpWR2x0Wld4cGJtVlRiR2xrWlhKVWFIVnRZa1ZzWlcxbGJuUkFRRlZCUlZoUVFWVkRSME52
Ym5SbGVIUkFRRlZEUjFKbFkzUkFRRUJhClFEUkpRUUEvZEdsdFpXeHBibVZTWldOMFJtOXlRbTkx
Ym1SelFFMWxaR2xoVTJoaGNtVmtWVWxVYVcxbGJHbHVaVk5zYVdSbGNrQkEKUVVKRlAwRlZRMGRT
WldOMFFFQlZNa0JBV2dCZlgzSmxZV3hBTkRBeU1EQXdNREF3TURBd01EQXdNQUJmWDNKbFlXeEFO
REF4TURBdwpNREF3TURBd01EQXdNQUEvYUdsbmFHeHBaMmgwVlc1c2IyRmtaV1JTWVc1blpVQk5a
V1JwWVZOb1lYSmxaRlZKVkdsdFpXeHBibVZUCmJHbGtaWEpBUUVGQ1JWaFFRVlZEUjBOdmJuUmxl
SFJBUUZWRFIxSmxZM1JBUUVCYUFGOWZjbVZoYkVBME1URXdNREF3TUFCZlgybHQKY0Y5ZlEwZFNa
V04wUjJWMFRXRjRXQUJmWDJsdGNGOWZRMGREYjI1MFpYaDBRMjl1ZG1WeWRGTnBlbVZVYjFWelpY
SlRjR0ZqWlFBLwpaM0poZVVacGJHeERiMnh2Y2tBL016OC9hR2xuYUd4cFoyaDBWVzVzYjJGa1pX
UlNZVzVuWlVCTlpXUnBZVk5vWVhKbFpGVkpWR2x0ClpXeHBibVZUYkdsa1pYSkFRRUZDUlZoUVFW
VkRSME52Ym5SbGVIUkFRRlZEUjFKbFkzUkFRRUJhUURSUVFWVkRSME52Ykc5eVFFQkIKQUY5ZmNt
VmhiRUF6WlRnd01EQXdNQUEvSkZNeE4wQS9NejgvYUdsbmFHeHBaMmgwVlc1c2IyRmtaV1JTWVc1
blpVQk5aV1JwWVZObwpZWEpsWkZWSlZHbHRaV3hwYm1WVGJHbGtaWEpBUUVGQ1JWaFFRVlZEUjBO
dmJuUmxlSFJBUUZWRFIxSmxZM1JBUUVCYVFEUkpRUUEvCmNHRnBiblJBVFdWa2FXRlRhR0Z5WldS
VlNWUnBiV1ZzYVc1bFUyeHBaR1Z5UUVCVlFVVllVRUZWUTBkRGIyNTBaWGgwUUVCVlEwZFMKWldO
MFFFQkFXZ0EvYUdsbmFHeHBaMmgwUTI5c2IzSkFQekUvUDNCaGFXNTBRRTFsWkdsaFUyaGhjbVZr
VlVsVWFXMWxiR2x1WlZOcwphV1JsY2tCQVZVRkZXRkJCVlVOSFEyOXVkR1Y0ZEVCQVZVTkhVbVZq
ZEVCQVFGcEFORkJCVlVOSFEyOXNiM0pBUUVFQVgxOXlaV0ZzClFETmtZVE5rTnpCaEFEOXphR0Zr
YjNkRGIyeHZja0EvTVQ4L2NHRnBiblJBVFdWa2FXRlRhR0Z5WldSVlNWUnBiV1ZzYVc1bFUyeHAK
WkdWeVFFQlZRVVZZVUVGVlEwZERiMjUwWlhoMFFFQlZRMGRTWldOMFFFQkFXa0EwVUVGVlEwZERi
Mnh2Y2tCQVFRQmZYM0psWVd4QQpNMll5WlRFME4ySUFQMkpoWTJ0bmNtOTFibVJIY21Ga2FXVnVk
RUEvTVQ4L2NHRnBiblJBVFdWa2FXRlRhR0Z5WldSVlNWUnBiV1ZzCmFXNWxVMnhwWkdWeVFFQlZR
VVZZVUVGVlEwZERiMjUwWlhoMFFFQlZRMGRTWldOMFFFQkFXa0EwVUVGVlEwZEhjbUZrYVdWdWRF
QkEKUVFBL1kyOXNiM0p6UUQ4eFB6OXdZV2x1ZEVCTlpXUnBZVk5vWVhKbFpGVkpWR2x0Wld4cGJt
VlRiR2xrWlhKQVFGVkJSVmhRUVZWRApSME52Ym5SbGVIUkFRRlZEUjFKbFkzUkFRRUJhUURSUVFV
MUJBRDhrVXpFNFFEOHhQejl3WVdsdWRFQk5aV1JwWVZOb1lYSmxaRlZKClZHbHRaV3hwYm1WVGJH
bGtaWEpBUUZWQlJWaFFRVlZEUjBOdmJuUmxlSFJBUUZWRFIxSmxZM1JBUUVCYVFEUkpRUUEvY0dG
cGJuUkEKVFdWa2FXRlRhR0Z5WldSVlNWWnZiSFZ0WlZOc2FXUmxja0JBVlVGRldGQkJWVU5IUTI5
dWRHVjRkRUJBVlVOSFVtVmpkRUJBUUZvQQpYMTlwYlhCZlgwTkhRMjl1ZEdWNGRGTjBjbTlyWlZC
aGRHZ0FYMTlwYlhCZlgwTkhRMjl1ZEdWNGRGTmxkRXhwYm1WWGFXUjBhQUJmClgybHRjRjlmUTBk
RGIyNTBaWGgwVTJWMFIzSmhlVk4wY205clpVTnZiRzl5QUY5ZmNtVmhiRUF6WmpZd01EQXdNQUJm
WDJsdGNGOWYKUTBkU1pXTjBTVzV6WlhRQVAyaHBaMmhzYVdkb2RFTnZiRzl5UUQ4eFB6OXdZV2x1
ZEVCTlpXUnBZVk5vWVhKbFpGVkpWbTlzZFcxbApVMnhwWkdWeVFFQlZRVVZZVUVGVlEwZERiMjUw
WlhoMFFFQlZRMGRTWldOMFFFQkFXa0EwVUVGVlEwZERiMnh2Y2tCQVFRQS9ZbUZqCmEyZHliM1Z1
WkVkeVlXUnBaVzUwUUQ4eFB6OXdZV2x1ZEVCTlpXUnBZVk5vWVhKbFpGVkpWbTlzZFcxbFUyeHBa
R1Z5UUVCVlFVVlkKVUVGVlEwZERiMjUwWlhoMFFFQlZRMGRTWldOMFFFQkFXa0EwVUVGVlEwZEhj
bUZrYVdWdWRFQkFRUUEvWTI5c2IzSnpRRDh4UHo5dwpZV2x1ZEVCTlpXUnBZVk5vWVhKbFpGVkpW
bTlzZFcxbFUyeHBaR1Z5UUVCVlFVVllVRUZWUTBkRGIyNTBaWGgwUUVCVlEwZFNaV04wClFFQkFX
a0EwVUVGTlFRQS9KRk14T1VBL01UOC9jR0ZwYm5SQVRXVmthV0ZUYUdGeVpXUlZTVlp2YkhWdFpW
TnNhV1JsY2tCQVZVRkYKV0ZCQlZVTkhRMjl1ZEdWNGRFQkFWVU5IVW1WamRFQkFRRnBBTkVsQkFE
OW9hWFJVWlhOMFFFMWxaR2xoVTJoaGNtVmtWVWxXYjJ4MQpiV1ZUYkdsa1pYSlVhSFZ0WWtWc1pX
MWxiblJBUUZWQ1JWOU9WVU5IVW1WamRFQkFWVU5IVUc5cGJuUkFRRUJhQUQ5dVlYUjFjbUZzClUy
bDZaVUJOWldScFlWTm9ZWEpsWkZWSlZtOXNkVzFsVTJ4cFpHVnlWR2gxYldKRmJHVnRaVzUwUUVC
VlFrVS9RVlZEUjFOcGVtVkEKUUZoYUFEOXdZV2x1ZEVCTlpXUnBZVk5vWVhKbFpGVkpWbTlzZFcx
bFUyeHBaR1Z5VkdoMWJXSkZiR1Z0Wlc1MFFFQlZRVVZZVUVGVgpRMGREYjI1MFpYaDBRRUJWUTBk
U1pXTjBRRUJBV2dCZlgybHRjRjlmUTBkRGIyNTBaWGgwUVdSa1JXeHNhWEJ6WlVsdVVtVmpkQUEv
CmMyaGhaRzkzUTI5c2IzSkFQekUvUDNCaGFXNTBRRTFsWkdsaFUyaGhjbVZrVlVsV2IyeDFiV1ZU
Ykdsa1pYSlVhSFZ0WWtWc1pXMWwKYm5SQVFGVkJSVmhRUVZWRFIwTnZiblJsZUhSQVFGVkRSMUps
WTNSQVFFQmFRRFJRUVZWRFIwTnZiRzl5UUVCQkFEOXBibTVsY2xObwpZV1J2ZDBOdmJHOXlRRDh4
UHo5d1lXbHVkRUJOWldScFlWTm9ZWEpsWkZWSlZtOXNkVzFsVTJ4cFpHVnlWR2gxYldKRmJHVnRa
VzUwClFFQlZRVVZZVUVGVlEwZERiMjUwWlhoMFFFQlZRMGRTWldOMFFFQkFXa0EwVUVGVlEwZERi
Mnh2Y2tCQVFRQmZYM0psWVd4QU0yVXcKWmpWak1qa0FQMmhwWjJoc2FXZG9kRU52Ykc5eVFEOHhQ
ejl3WVdsdWRFQk5aV1JwWVZOb1lYSmxaRlZKVm05c2RXMWxVMnhwWkdWeQpWR2gxYldKRmJHVnRa
VzUwUUVCVlFVVllVRUZWUTBkRGIyNTBaWGgwUUVCVlEwZFNaV04wUUVCQVdrQTBVRUZWUTBkRGIy
eHZja0JBClFRQS9ibTl5YldGc1IzSmhaR2xsYm5SQVB6RS9QM0JoYVc1MFFFMWxaR2xoVTJoaGNt
VmtWVWxXYjJ4MWJXVlRiR2xrWlhKVWFIVnQKWWtWc1pXMWxiblJBUUZWQlJWaFFRVlZEUjBOdmJu
UmxlSFJBUUZWRFIxSmxZM1JBUUVCYVFEUlFRVlZEUjBkeVlXUnBaVzUwUUVCQgpBRDl1YjNKdFlX
eERiMnh2Y25OQVB6RS9QM0JoYVc1MFFFMWxaR2xoVTJoaGNtVmtWVWxXYjJ4MWJXVlRiR2xrWlhK
VWFIVnRZa1ZzClpXMWxiblJBUUZWQlJWaFFRVlZEUjBOdmJuUmxlSFJBUUZWRFIxSmxZM1JBUUVC
YVFEUlFRVTFCQUQ5d2NtVnpjMlZrUjNKaFpHbGwKYm5SQVB6RS9QM0JoYVc1MFFFMWxaR2xoVTJo
aGNtVmtWVWxXYjJ4MWJXVlRiR2xrWlhKVWFIVnRZa1ZzWlcxbGJuUkFRRlZCUlZoUQpRVlZEUjBO
dmJuUmxlSFJBUUZWRFIxSmxZM1JBUUVCYVFEUlFRVlZEUjBkeVlXUnBaVzUwUUVCQkFEOXdjbVZ6
YzJWa1EyOXNiM0p6ClFEOHhQejl3WVdsdWRFQk5aV1JwWVZOb1lYSmxaRlZKVm05c2RXMWxVMnhw
WkdWeVZHaDFiV0pGYkdWdFpXNTBRRUJWUVVWWVVFRlYKUTBkRGIyNTBaWGgwUUVCVlEwZFNaV04w
UUVCQVdrQTBVRUZOUVFBL0pGTXlNRUEvTVQ4L2NHRnBiblJBVFdWa2FXRlRhR0Z5WldSVgpTVlp2
YkhWdFpWTnNhV1JsY2xSb2RXMWlSV3hsYldWdWRFQkFWVUZGV0ZCQlZVTkhRMjl1ZEdWNGRFQkFW
VU5IVW1WamRFQkFRRnBBCk5FbEJBRDlvYVhSVVpYTjBRRTFsWkdsaFUyaGhjbVZrVlVsV2IyeDFi
V1ZUYkdsa1pYSkNZV05yWjNKdmRXNWtSV3hsYldWdWRFQkEKVlVKRlgwNVZRMGRTWldOMFFFQlZR
MGRRYjJsdWRFQkFRRm9BUDNCaGFXNTBRRTFsWkdsaFUyaGhjbVZrVlVsV2IyeDFiV1ZUYkdsawpa
WEpDWVdOclozSnZkVzVrUld4bGJXVnVkRUJBVlVGRldGQkJWVU5IUTI5dWRHVjRkRUJBVlVOSFVt
VmpkRUJBUUZvQVgxOXlaV0ZzClFETm1Oek16TXpNekFEOXBibTVsY2xOb1lXUnZkME52Ykc5eVFE
OHhQejl3WVdsdWRFQk5aV1JwWVZOb1lYSmxaRlZKVm05c2RXMWwKVTJ4cFpHVnlRbUZqYTJkeWIz
VnVaRVZzWlcxbGJuUkFRRlZCUlZoUVFWVkRSME52Ym5SbGVIUkFRRlZEUjFKbFkzUkFRRUJhUURS
UQpRVlZEUjBOdmJHOXlRRUJCQUQ5bWFXeHNSM0poWkdsbGJuUkFQekUvUDNCaGFXNTBRRTFsWkds
aFUyaGhjbVZrVlVsV2IyeDFiV1ZUCmJHbGtaWEpDWVdOclozSnZkVzVrUld4bGJXVnVkRUJBVlVG
RldGQkJWVU5IUTI5dWRHVjRkRUJBVlVOSFVtVmpkRUJBUUZwQU5GQkIKVlVOSFIzSmhaR2xsYm5S
QVFFRUFQMk52Ykc5eWMwQS9NVDgvY0dGcGJuUkFUV1ZrYVdGVGFHRnlaV1JWU1ZadmJIVnRaVk5z
YVdSbApja0poWTJ0bmNtOTFibVJGYkdWdFpXNTBRRUJWUVVWWVVFRlZRMGREYjI1MFpYaDBRRUJW
UTBkU1pXTjBRRUJBV2tBMFVFRk5RUUEvCkpGTXlNVUEvTVQ4L2NHRnBiblJBVFdWa2FXRlRhR0Z5
WldSVlNWWnZiSFZ0WlZOc2FXUmxja0poWTJ0bmNtOTFibVJGYkdWdFpXNTAKUUVCVlFVVllVRUZW
UTBkRGIyNTBaWGgwUUVCVlEwZFNaV04wUUVCQVdrQTBTVUVBUHo4d1RXVmthV0ZUYUdGeVpXUlZT
VUpoWTJ0bgpjbTkxYm1SRmJHVnRaVzUwUUVCUlFVVkFXRm9BUHo5Zk4wMWxaR2xoVTJoaGNtVmtW
VWxDWVdOclozSnZkVzVrUld4bGJXVnVkRUJBCk5rSkFBRDgvWDBkTlpXUnBZVk5vWVhKbFpGVkpR
bUZqYTJkeWIzVnVaRVZzWlcxbGJuUkFRRlZCUlZCQldFbEFXZ0EvUDE5RlRXVmsKYVdGVGFHRnla
V1JWU1VKaFkydG5jbTkxYm1SRmJHVnRaVzUwUUVCVlFVVlFRVmhKUUZvQVB6OHdUV1ZrYVdGVGFH
RnlaV1JWU1ZadgpiSFZ0WlZOc2FXUmxja0poWTJ0bmNtOTFibVJGYkdWdFpXNTBRRUJSUVVWQVdG
b0FQejlmTjAxbFpHbGhVMmhoY21Wa1ZVbFdiMngxCmJXVlRiR2xrWlhKQ1lXTnJaM0p2ZFc1a1JX
eGxiV1Z1ZEVCQU5rSkFBRDgvWDBkTlpXUnBZVk5vWVhKbFpGVkpWbTlzZFcxbFUyeHAKWkdWeVFt
RmphMmR5YjNWdVpFVnNaVzFsYm5SQVFGVkJSVkJCV0VsQVdnQS9QMTlGVFdWa2FXRlRhR0Z5WldS
VlNWWnZiSFZ0WlZOcwphV1JsY2tKaFkydG5jbTkxYm1SRmJHVnRaVzUwUUVCVlFVVlFRVmhKUUZv
QVB6OHdUV1ZrYVdGVGFHRnlaV1JWU1ZScGJXVnNhVzVsClUyeHBaR1Z5VkdoMWJXSkZiR1Z0Wlc1
MFFFQlJRVVZBV0ZvQVB6OWZOMDFsWkdsaFUyaGhjbVZrVlVsVWFXMWxiR2x1WlZOc2FXUmwKY2xS
b2RXMWlSV3hsYldWdWRFQkFOa0pBQUQ4L1gwZE5aV1JwWVZOb1lYSmxaRlZKVkdsdFpXeHBibVZU
Ykdsa1pYSlVhSFZ0WWtWcwpaVzFsYm5SQVFGVkJSVkJCV0VsQVdnQS9QMTlGVFdWa2FXRlRhR0Z5
WldSVlNWUnBiV1ZzYVc1bFUyeHBaR1Z5VkdoMWJXSkZiR1Z0ClpXNTBRRUJWUVVWUVFWaEpRRm9B
UHo4d1RXVmthV0ZUYUdGeVpXUlZTVlp2YkhWdFpWTnNhV1JsY2tCQVVVRkZRRmhhQUQ4L1h6ZE4K
WldScFlWTm9ZWEpsWkZWSlZtOXNkVzFsVTJ4cFpHVnlRRUEyUWtBQVB6OWZSMDFsWkdsaFUyaGhj
bVZrVlVsV2IyeDFiV1ZUYkdsawpaWEpBUUZWQlJWQkJXRWxBV2dBL1AxOUZUV1ZrYVdGVGFHRnla
V1JWU1ZadmJIVnRaVk5zYVdSbGNrQkFWVUZGVUVGWVNVQmFBRDgvCk1FMWxaR2xoVTJoaGNtVmtW
VWxXYjJ4MWJXVlRiR2xrWlhKVWFIVnRZa1ZzWlcxbGJuUkFRRkZCUlVCWVdnQS9QMTgzVFdWa2FX
RlQKYUdGeVpXUlZTVlp2YkhWdFpWTnNhV1JsY2xSb2RXMWlSV3hsYldWdWRFQkFOa0pBQUQ4L1gw
ZE5aV1JwWVZOb1lYSmxaRlZKVm05cwpkVzFsVTJ4cFpHVnlWR2gxYldKRmJHVnRaVzUwUUVCVlFV
VlFRVmhKUUZvQVB6OWZSVTFsWkdsaFUyaGhjbVZrVlVsV2IyeDFiV1ZUCmJHbGtaWEpVYUhWdFlr
VnNaVzFsYm5SQVFGVkJSVkJCV0VsQVdnQS9QekZOWldScFlWTm9ZWEpsWkZWSlFtRmphMmR5YjNW
dVpFVnMKWlcxbGJuUkFRRlZCUlVCWVdnQS9QekZOWldScFlWTm9ZWEpsWkZWSlZtOXNkVzFsVTJ4
cFpHVnlRbUZqYTJkeWIzVnVaRVZzWlcxbApiblJBUUZWQlJVQllXZ0EvUHpGTlpXUnBZVk5vWVhK
bFpGVkpWR2x0Wld4cGJtVlRiR2xrWlhKVWFIVnRZa1ZzWlcxbGJuUkFRRlZCClJVQllXZ0EvUHpG
TlpXUnBZVk5vWVhKbFpGVkpWbTlzZFcxbFUyeHBaR1Z5UUVCVlFVVkFXRm9BUHo4eFRXVmthV0ZU
YUdGeVpXUlYKU1ZadmJIVnRaVk5zYVdSbGNsUm9kVzFpUld4bGJXVnVkRUJBVlVGRlFGaGFBRDgv
TUUxbFpHbGhWVWxVYVcxbGJHbHVaVk5zYVdSbApja0JBVVVGRlFGaGFBRDgvWHpkTlpXUnBZVlZK
VkdsdFpXeHBibVZUYkdsa1pYSkFRRFpDUUFBL1AxOUhUV1ZrYVdGVlNWUnBiV1ZzCmFXNWxVMnhw
WkdWeVFFQlZRVVZRUVZoSlFGb0FQejlmUlUxbFpHbGhWVWxVYVcxbGJHbHVaVk5zYVdSbGNrQkFW
VUZGVUVGWVNVQmEKQUQ4L01VMWxaR2xoVlVsVWFXMWxiR2x1WlZOc2FXUmxja0JBVlVGRlFGaGFB
RDgvWDBkTlpXUnBZVlZKVkdsdFpXeHBibVZUYkdsawpaWEpBUUZWQlJWQkJXRWxBV2dBL1B6Qk5a
V1JwWVZOb1lYSmxaRlZKU1cxaFoyVkZiR1Z0Wlc1MFFFQlJRVVZBV0ZvQVB6OWZOMDFsClpHbGhV
MmhoY21Wa1ZVbEpiV0ZuWlVWc1pXMWxiblJBUURaQ1FBQS9QMTlIVFdWa2FXRlRhR0Z5WldSVlNV
bHRZV2RsUld4bGJXVnUKZEVCQVZVRkZVRUZZU1VCYUFEOC9YMFZOWldScFlWTm9ZWEpsWkZWSlNX
MWhaMlZGYkdWdFpXNTBRRUJWUVVWUVFWaEpRRm9BUDJOdgpibk4wY21GcGJrRnpjR1ZqZEZKaGRH
bHZRRTFsWkdsaFUyaGhjbVZrVlVsSmJXRm5aVVZzWlcxbGJuUkFRRlZDUlY5T1dGb0FQejlmClIw
MWxaR2xoVTJoaGNtVmtWVWxKYldGblpVVnNaVzFsYm5SQVFGVkJSVkJCV0VsQVdnQS9ZM0psWVhS
bFRXVmthV0ZRUkVaRGJHOXoKWldSRFlYQjBhVzl1YzBsdFlXZGxRRUJaUVZCQlZVTkhUR0Y1WlhK
QVFGaGFBRjlmYVcxd1gxOURSMFJoZEdGUWNtOTJhV1JsY2tOeQpaV0YwWlZkcGRHaERSa1JoZEdF
QVgxOXBiWEJmWDBOR1JHRjBZVU55WldGMFpWZHBkR2hDZVhSbGMwNXZRMjl3ZVFCZlgybHRjRjlm
CmEwTkdRV3hzYjJOaGRHOXlSR1ZtWVhWc2RBQmZYMmx0Y0Y5ZmEwTkdRV3hzYjJOaGRHOXlUblZz
YkFBL2FXMWhaMlZBUHpFL1AyTnkKWldGMFpVMWxaR2xoVUVSR1EyeHZjMlZrUTJGd2RHbHZibk5K
YldGblpVQkFXVUZRUVZWRFIweGhlV1Z5UUVCWVdrQTBVRUZWTWtCQgpBRDl0WldScFlWQkVSa05z
YjNObFpFTmhjSFJwYjI1elNXMWhaMlZBUUZsQlVFRlZRMGRNWVhsbGNrQkFXRm9BUDJsdFlXZGxR
RDh4ClB6OXRaV1JwWVZCRVJrTnNiM05sWkVOaGNIUnBiMjV6U1cxaFoyVkFRRmxCVUVGVlEwZE1Z
WGxsY2tCQVdGcEFORkJCVlRKQVFRQS8KSkZNeFFEOHhQejl0WldScFlWQkVSa05zYjNObFpFTmhj
SFJwYjI1elNXMWhaMlZBUUZsQlVFRlZRMGRNWVhsbGNrQkFXRnBBTkVsQgpBRDlqY21WaGRHVk5a
V1JwWVZCRVJrRjFaR2x2Vm05c2RXMWxTR2xuYUVsdFlXZGxRRUJaUVZCQlZVTkhUR0Y1WlhKQVFG
aGFBRDlwCmJXRm5aVUEvTVQ4L1kzSmxZWFJsVFdWa2FXRlFSRVpCZFdScGIxWnZiSFZ0WlVocFoy
aEpiV0ZuWlVCQVdVRlFRVlZEUjB4aGVXVnkKUUVCWVdrQTBVRUZWTWtCQkFEOXRaV1JwWVZCRVJr
RjFaR2x2Vm05c2RXMWxTR2xuYUVsdFlXZGxRRUJaUVZCQlZVTkhUR0Y1WlhKQQpRRmhhQUQ5cGJX
Rm5aVUEvTVQ4L2JXVmthV0ZRUkVaQmRXUnBiMVp2YkhWdFpVaHBaMmhKYldGblpVQkFXVUZRUVZW
RFIweGhlV1Z5ClFFQllXa0EwVUVGVk1rQkJBRDhrVXpKQVB6RS9QMjFsWkdsaFVFUkdRWFZrYVc5
V2IyeDFiV1ZJYVdkb1NXMWhaMlZBUUZsQlVFRlYKUTBkTVlYbGxja0JBV0ZwQU5FbEJBRDlqY21W
aGRHVk5aV1JwWVZCRVJrRjFaR2x2Vm05c2RXMWxUMlptU1cxaFoyVkFRRmxCVUVGVgpRMGRNWVhs
bGNrQkFXRm9BUDJsdFlXZGxRRDh4UHo5amNtVmhkR1ZOWldScFlWQkVSa0YxWkdsdlZtOXNkVzFs
VDJabVNXMWhaMlZBClFGbEJVRUZWUTBkTVlYbGxja0JBV0ZwQU5GQkJWVEpBUVFBL2JXVmthV0ZR
UkVaQmRXUnBiMVp2YkhWdFpVOW1aa2x0WVdkbFFFQloKUVZCQlZVTkhUR0Y1WlhKQVFGaGFBRDlw
YldGblpVQS9NVDgvYldWa2FXRlFSRVpCZFdScGIxWnZiSFZ0WlU5bVprbHRZV2RsUUVCWgpRVkJC
VlVOSFRHRjVaWEpBUUZoYVFEUlFRVlV5UUVFQVB5UlRNMEEvTVQ4L2JXVmthV0ZRUkVaQmRXUnBi
MVp2YkhWdFpVOW1aa2x0CllXZGxRRUJaUVZCQlZVTkhUR0Y1WlhKQVFGaGFRRFJKUVFBL1kzSmxZ
WFJsVFdWa2FXRlFSRVpRWVhWelpVSjFkSFJ2YmtsdFlXZGwKUUVCWlFWQkJWVU5IVEdGNVpYSkFR
RmhhQUQ5cGJXRm5aVUEvTVQ4L1kzSmxZWFJsVFdWa2FXRlFSRVpRWVhWelpVSjFkSFJ2YmtsdApZ
V2RsUUVCWlFWQkJWVU5IVEdGNVpYSkFRRmhhUURSUVFWVXlRRUVBUDIxbFpHbGhVRVJHVUdGMWMy
VkNkWFIwYjI1SmJXRm5aVUJBCldVRlFRVlZEUjB4aGVXVnlRRUJZV2dBL2FXMWhaMlZBUHpFL1Ay
MWxaR2xoVUVSR1VHRjFjMlZDZFhSMGIyNUpiV0ZuWlVCQVdVRlEKUVZWRFIweGhlV1Z5UUVCWVdr
QTBVRUZWTWtCQkFEOGtVelJBUHpFL1AyMWxaR2xoVUVSR1VHRjFjMlZDZFhSMGIyNUpiV0ZuWlVC
QQpXVUZRUVZWRFIweGhlV1Z5UUVCWVdrQTBTVUVBUDJOeVpXRjBaVTFsWkdsaFVFUkdVR3hoZVVK
MWRIUnZia2x0WVdkbFFFQlpRVkJCClZVTkhUR0Y1WlhKQVFGaGFBRDlwYldGblpVQS9NVDgvWTNK
bFlYUmxUV1ZrYVdGUVJFWlFiR0Y1UW5WMGRHOXVTVzFoWjJWQVFGbEIKVUVGVlEwZE1ZWGxsY2tC
QVdGcEFORkJCVlRKQVFRQS9iV1ZrYVdGUVJFWlFiR0Y1UW5WMGRHOXVTVzFoWjJWQVFGbEJVRUZW
UTBkTQpZWGxsY2tCQVdGb0FQMmx0WVdkbFFEOHhQejl0WldScFlWQkVSbEJzWVhsQ2RYUjBiMjVK
YldGblpVQkFXVUZRUVZWRFIweGhlV1Z5ClFFQllXa0EwVUVGVk1rQkJBRDhrVXpWQVB6RS9QMjFs
WkdsaFVFUkdVR3hoZVVKMWRIUnZia2x0WVdkbFFFQlpRVkJCVlVOSFRHRjUKWlhKQVFGaGFRRFJK
UVFBL1kzSmxZWFJsVFdWa2FXRlFSRVpGYm5SbGNrWjFiR3h6WTNKbFpXNUpiV0ZuWlVCQVdVRlFR
VlZEUjB4aAplV1Z5UUVCWVdnQS9hVzFoWjJWQVB6RS9QMk55WldGMFpVMWxaR2xoVUVSR1JXNTBa
WEpHZFd4c2MyTnlaV1Z1U1cxaFoyVkFRRmxCClVFRlZRMGRNWVhsbGNrQkFXRnBBTkZCQlZUSkFR
UUEvYldWa2FXRlFSRVpGYm5SbGNrWjFiR3h6WTNKbFpXNUpiV0ZuWlVCQVdVRlEKUVZWRFIweGhl
V1Z5UUVCWVdnQS9hVzFoWjJWQVB6RS9QMjFsWkdsaFVFUkdSVzUwWlhKR2RXeHNjMk55WldWdVNX
MWhaMlZBUUZsQgpVRUZWUTBkTVlYbGxja0JBV0ZwQU5GQkJWVEpBUVFBL0pGTTJRRDh4UHo5dFpX
UnBZVkJFUmtWdWRHVnlSblZzYkhOamNtVmxia2x0CllXZGxRRUJaUVZCQlZVTkhUR0Y1WlhKQVFG
aGFRRFJKUVFBL1kzSmxZWFJsVFdWa2FXRlFSRVpUWldWclZHOVNaV0ZzZEdsdFpVbHQKWVdkbFFF
QlpRVkJCVlVOSFRHRjVaWEpBUUZoYUFEOXBiV0ZuWlVBL01UOC9ZM0psWVhSbFRXVmthV0ZRUkVa
VFpXVnJWRzlTWldGcwpkR2x0WlVsdFlXZGxRRUJaUVZCQlZVTkhUR0Y1WlhKQVFGaGFRRFJRUVZV
eVFFRUFQMjFsWkdsaFVFUkdVMlZsYTFSdlVtVmhiSFJwCmJXVkpiV0ZuWlVCQVdVRlFRVlZEUjB4
aGVXVnlRRUJZV2dBL2FXMWhaMlZBUHpFL1AyMWxaR2xoVUVSR1UyVmxhMVJ2VW1WaGJIUnAKYldW
SmJXRm5aVUJBV1VGUVFWVkRSMHhoZVdWeVFFQllXa0EwVUVGVk1rQkJBRDhrVXpkQVB6RS9QMjFs
WkdsaFVFUkdVMlZsYTFSdgpVbVZoYkhScGJXVkpiV0ZuWlVCQVdVRlFRVlZEUjB4aGVXVnlRRUJZ
V2tBMFNVRUFQMk55WldGMFpVMWxaR2xoVUVSR1VtVjBjbVZoCmRETXdTVzFoWjJWQVFGbEJVRUZW
UTBkTVlYbGxja0JBV0ZvQVAybHRZV2RsUUQ4eFB6OWpjbVZoZEdWTlpXUnBZVkJFUmxKbGRISmwK
WVhRek1FbHRZV2RsUUVCWlFWQkJWVU5IVEdGNVpYSkFRRmhhUURSUVFWVXlRRUVBUDIxbFpHbGhV
RVJHVW1WMGNtVmhkRE13U1cxaApaMlZBUUZsQlVFRlZRMGRNWVhsbGNrQkFXRm9BUDJsdFlXZGxR
RDh4UHo5dFpXUnBZVkJFUmxKbGRISmxZWFF6TUVsdFlXZGxRRUJaClFWQkJWVU5IVEdGNVpYSkFR
RmhhUURSUVFWVXlRRUVBUHlSVE9FQS9NVDgvYldWa2FXRlFSRVpTWlhSeVpXRjBNekJKYldGblpV
QkEKV1VGUVFWVkRSMHhoZVdWeVFFQllXa0EwU1VFQVAybHRZV2RsUUUxbFpHbGhVMmhoY21Wa1ZV
bEpiV0ZuWlVWc1pXMWxiblJBUUVsQwpSVkJDV0ZoYUFEOWpjbVZoZEdWQ1lXTnJaM0p2ZFc1a1NX
MWhaMlZBVFdWa2FXRlRhR0Z5WldSVlNVbHRZV2RsUld4bGJXVnVkRUJBClZVRkZVRUpZVUVGVlEw
ZERiMjUwWlhoMFFFQlZRMGRTWldOMFFFQkFXZ0JmWDJsdGNGOWZRMFpTWlhSaGFXNEFQMjVoZEhW
eVlXeFQKYVhwbFFFMWxaR2xoVTJoaGNtVmtWVWxKYldGblpVVnNaVzFsYm5SQVFGVkNSVDlCVlVO
SFUybDZaVUJBV0ZvQVAyTnlaV0YwWlVKaApZMnRuY205MWJtUkpiV0ZuWlVCTlpXUnBZVk5vWVhK
bFpGVkpRME5KYldGblpVVnNaVzFsYm5SQVFGVkJSVkJDV0ZCQlZVTkhRMjl1CmRHVjRkRUJBVlVO
SFVtVmpkRUJBUUZvQVgxOXBiWEJmWDBOSFEyOXVkR1Y0ZEVKbFoybHVWSEpoYm5Od1lYSmxibU41
VEdGNVpYSUEKUDJKc2RXVkRiMnh2Y2tBL016OC9ZM0psWVhSbFFtRmphMmR5YjNWdVpFbHRZV2Rs
UUUxbFpHbGhVMmhoY21Wa1ZVbERRMGx0WVdkbApSV3hsYldWdWRFQkFWVUZGVUVKWVVFRlZRMGRE
YjI1MFpYaDBRRUJWUTBkU1pXTjBRRUJBV2tBMFVFRlZRMGREYjJ4dmNrQkFRUUJmClgybHRjRjlm
UTBkRGIyeHZja055WldGMFpVZGxibVZ5YVdOU1IwSUFYMTl5WldGc1FETmxOR05qWTJOa0FEOGtV
ekUwUUQ4elB6OWoKY21WaGRHVkNZV05yWjNKdmRXNWtTVzFoWjJWQVRXVmthV0ZUYUdGeVpXUlZT
VU5EU1cxaFoyVkZiR1Z0Wlc1MFFFQlZRVVZRUWxoUQpRVlZEUjBOdmJuUmxlSFJBUUZWRFIxSmxZ
M1JBUUVCYVFEUkpRUUEvUHpCTlpXUnBZVk5vWVhKbFpGVkpRME5KYldGblpVVnNaVzFsCmJuUkFR
RkZCUlVCWVdnQS9QMTgzVFdWa2FXRlRhR0Z5WldSVlNVTkRTVzFoWjJWRmJHVnRaVzUwUUVBMlFr
QUFQejlmUjAxbFpHbGgKVTJoaGNtVmtWVWxEUTBsdFlXZGxSV3hsYldWdWRFQkFWVUZGVUVGWVNV
QmFBRDgvWDBWTlpXUnBZVk5vWVhKbFpGVkpRME5KYldGbgpaVVZzWlcxbGJuUkFRRlZCUlZCQldF
bEFXZ0EvWTI5dWMzUnlZV2x1UVhOd1pXTjBVbUYwYVc5QVRXVmthV0ZUYUdGeVpXUlZTVU5EClNX
MWhaMlZGYkdWdFpXNTBRRUJWUWtWZlRsaGFBRDgvTVUxbFpHbGhVMmhoY21Wa1ZVbERRMGx0WVdk
bFJXeGxiV1Z1ZEVCQVZVRkYKUUZoYUFEOC9YMGROWldScFlWTm9ZWEpsWkZWSlEwTkpiV0ZuWlVW
c1pXMWxiblJBUUZWQlJWQkJXRWxBV2dBL1AxOUhUV1ZrYVdGVAphR0Z5WldSVlNVSmhZMnRuY205
MWJtUkZiR1Z0Wlc1MFFFQlZRVVZRUVZoSlFGb0FQejlmUjAxbFpHbGhVMmhoY21Wa1ZVbFdiMngx
CmJXVlRiR2xrWlhKQ1lXTnJaM0p2ZFc1a1JXeGxiV1Z1ZEVCQVZVRkZVRUZZU1VCYUFEOC9YMGRO
WldScFlWTm9ZWEpsWkZWSlZHbHQKWld4cGJtVlRiR2xrWlhKVWFIVnRZa1ZzWlcxbGJuUkFRRlZC
UlZCQldFbEFXZ0EvUDE5SFRXVmthV0ZUYUdGeVpXUlZTVlp2YkhWdApaVk5zYVdSbGNrQkFWVUZG
VUVGWVNVQmFBRDgvWDBkTlpXUnBZVk5vWVhKbFpGVkpWbTlzZFcxbFUyeHBaR1Z5VkdoMWJXSkZi
R1Z0ClpXNTBRRUJWUVVWUVFWaEpRRm9BUHo4d1RXVmthV0ZUYUdGeVpXUlZTVlJwYldWc2FXNWxV
MnhwWkdWeVFFQlJRVVZBV0ZvQVB6OWYKTjAxbFpHbGhVMmhoY21Wa1ZVbFVhVzFsYkdsdVpWTnNh
V1JsY2tCQU5rSkFBRDgvWDBkTlpXUnBZVk5vWVhKbFpGVkpWR2x0Wld4cApibVZUYkdsa1pYSkFR
RlZCUlZCQldFbEFXZ0EvUDE5RlRXVmthV0ZUYUdGeVpXUlZTVlJwYldWc2FXNWxVMnhwWkdWeVFF
QlZRVVZRClFWaEpRRm9BUHo4eFRXVmthV0ZUYUdGeVpXUlZTVlJwYldWc2FXNWxVMnhwWkdWeVFF
QlZRVVZBV0ZvQVB6OWZSMDFsWkdsaFUyaGgKY21Wa1ZVbFVhVzFsYkdsdVpWTnNhV1JsY2tCQVZV
RkZVRUZZU1VCYUFEOWpiMjUwY205c1JtOXlVR0Z5ZEVCTlpXUnBZVk5vWVhKbApaRlZKUTI5dWRI
SnZiSE5BUUZWQ1JWQkJWazFsWkdsaFZVbEZiR1Z0Wlc1MFFFQklRRm9BUDNadmJIVnRaVlJvZFcx
aVFEOU1RRDgvClkyOXVkSEp2YkVadmNsQmhjblJBVFdWa2FXRlRhR0Z5WldSVlNVTnZiblJ5YjJ4
elFFQlZRa1ZRUVZaTlpXUnBZVlZKUld4bGJXVnUKZEVCQVNFQmFRRFJRUVZaTlpXUnBZVk5vWVhK
bFpGVkpWbTlzZFcxbFUyeHBaR1Z5VkdoMWJXSkZiR1Z0Wlc1MFFFQkJBRDl6YkdsawpaWEpBUHpr
L1AyTnZiblJ5YjJ4R2IzSlFZWEowUUUxbFpHbGhVMmhoY21Wa1ZVbERiMjUwY205c2MwQkFWVUpG
VUVGV1RXVmthV0ZWClNVVnNaVzFsYm5SQVFFaEFXa0EwVUVGV1RXVmthV0ZUYUdGeVpXUlZTVlp2
YkhWdFpWTnNhV1JsY2tCQVFRQS9kR2x0Wld4cGJtVlUKYUhWdFlrQS9PRDgvWTI5dWRISnZiRVp2
Y2xCaGNuUkFUV1ZrYVdGVGFHRnlaV1JWU1VOdmJuUnliMnh6UUVCVlFrVlFRVlpOWldScApZVlZK
Uld4bGJXVnVkRUJBU0VCYVFEUlFRVlpOWldScFlWTm9ZWEpsWkZWSlZHbHRaV3hwYm1WVGJHbGta
WEpVYUhWdFlrVnNaVzFsCmJuUkFRRUVBUDNadmJIVnRaVk5zYVdSbGNrSmhZMnRuY205MWJtUkFQ
emMvUDJOdmJuUnliMnhHYjNKUVlYSjBRRTFsWkdsaFUyaGgKY21Wa1ZVbERiMjUwY205c2MwQkFW
VUpGVUVGV1RXVmthV0ZWU1VWc1pXMWxiblJBUUVoQVdrQTBVRUZXVFdWa2FXRlRhR0Z5WldSVgpT
Vlp2YkhWdFpWTnNhV1JsY2tKaFkydG5jbTkxYm1SRmJHVnRaVzUwUUVCQkFEOWlZV05yWjNKdmRX
NWtRRDgyUHo5amIyNTBjbTlzClJtOXlVR0Z5ZEVCTlpXUnBZVk5vWVhKbFpGVkpRMjl1ZEhKdmJI
TkFRRlZDUlZCQlZrMWxaR2xoVlVsRmJHVnRaVzUwUUVCSVFGcEEKTkZCQlZrMWxaR2xoVTJoaGNt
VmtWVWxDWVdOclozSnZkVzVrUld4bGJXVnVkRUJBUVFBL1kyRndkR2x2Ym5OQ2RYUjBiMjVBUHpV
LwpQMk52Ym5SeWIyeEdiM0pRWVhKMFFFMWxaR2xoVTJoaGNtVmtWVWxEYjI1MGNtOXNjMEJBVlVK
RlVFRldUV1ZrYVdGVlNVVnNaVzFsCmJuUkFRRWhBV2tBMFVFRldUV1ZrYVdGVGFHRnlaV1JWU1VO
RFNXMWhaMlZGYkdWdFpXNTBRRUJCQUQ5blpXNWxjbWxqUW5WMGRHOXUKUUQ4MFB6OWpiMjUwY205
c1JtOXlVR0Z5ZEVCTlpXUnBZVk5vWVhKbFpGVkpRMjl1ZEhKdmJITkFRRlZDUlZCQlZrMWxaR2xo
VlVsRgpiR1Z0Wlc1MFFFQklRRnBBTkZCQlZrMWxaR2xoVTJoaGNtVmtWVWxKYldGblpVVnNaVzFs
Ym5SQVFFRUFQejh5UUZsQlVFRllTVUJhCkFEOGtVekl5UUQ4MFB6OWpiMjUwY205c1JtOXlVR0Z5
ZEVCTlpXUnBZVk5vWVhKbFpGVkpRMjl1ZEhKdmJITkFRRlZDUlZCQlZrMWwKWkdsaFZVbEZiR1Z0
Wlc1MFFFQklRRnBBTkVsQkFEOXpiR2xrWlhKQVRXVmthV0ZUYUdGeVpXUlZTVU52Ym5SeWIyeHpR
RUJWUWtWUQpRVlpOWldScFlWVkpWR2x0Wld4cGJtVlRiR2xrWlhKQVFGaGFBRDl6YUdGeVpXUlRi
R2xrWlhKQVB6RS9QM05zYVdSbGNrQk5aV1JwCllWTm9ZWEpsWkZWSlEyOXVkSEp2YkhOQVFGVkNS
VkJCVmsxbFpHbGhWVWxVYVcxbGJHbHVaVk5zYVdSbGNrQkFXRnBBTkZCQlZrMWwKWkdsaFUyaGhj
bVZrVlVsVWFXMWxiR2x1WlZOc2FXUmxja0JBUVFBL0pGTXlNMEEvTVQ4L2MyeHBaR1Z5UUUxbFpH
bGhVMmhoY21WawpWVWxEYjI1MGNtOXNjMEJBVlVKRlVFRldUV1ZrYVdGVlNWUnBiV1ZzYVc1bFUy
eHBaR1Z5UUVCWVdrQTBTVUVBQ2k4eE56SWdJQ0FnCklDQWdJQ0FnSUNBeE1qa3lNREF6T1RjMklD
QWdJQ0FnSUNBZ0lDQWdJQ0F4TURBMk5qWWdJREkyTVRZd0lDQWdJQ0JnQ2t3QlFnQ0kKYWdKTkYw
OEFBTVVBQUFBQUFBQUFMbVJ5WldOMGRtVUFBQUFBQUFBQUFNTUFBQUJrQ2dBQUFBQUFBQUFBQUFB
QUFBQUFBQW9RQUM1awpaV0oxWnlSVEFBQUFBQUFBQUFENEhRQUFKd3NBQUI4cEFBQUFBQUFBQWdB
QUFFQUFFRUl1Y21SaGRHRUFBQUFBQUFBQUFBQUFCQUFBCkFETXBBQUFBQUFBQUFBQUFBQUFBQUFC
QUVEQkFMbkprWVhSaEFBQUFBQUFBQUFBQUFBUUFBQUEzS1FBQUFBQUFBQUFBQUFBQUFBQUEKUUJB
d1FDNXlaR0YwWVFBQUFBQUFBQUFBQUFBRUFBQUFPeWtBQUFBQUFBQUFBQUFBQUFBQUFFQVFNRUF1
Y21SaGRHRUFBQUFBQUFBQQpBQUFBQkFBQUFEOHBBQUFBQUFBQUFBQUFBQUFBQUFCQUVEQkFMbkpr
WVhSaEFBQUFBQUFBQUFBQUFBUUFBQUJES1FBQUFBQUFBQUFBCkFBQUFBQUFBUUJBd1FDNXlaR0Yw
WVFBQUFBQUFBQUFBQUFBRUFBQUFSeWtBQUFBQUFBQUFBQUFBQUFBQUFFQVFNRUF1Y21SaGRHRUEK
QUFBQUFBQUFBQUFBQkFBQUFFc3BBQUFBQUFBQUFBQUFBQUFBQUFCQUVEQkFMblJsZUhRQUFBQUFB
QUFBQUFBQUFBb0FBQUJQS1FBQQpBQUFBQUFBQUFBQUFBQUFBSUJCUVlDNWtaV0oxWnlSVEFBQUFB
QUFBQUFEa0FBQUFXU2tBQUQwcUFBQUFBQUFBQlFBQUFFQVFFRUl1CmRHVjRkQUFBQUFBQUFBQUFB
QUFBQ2dBQUFHOHFBQUFBQUFBQUFBQUFBQUFBQUFBZ0VGQmdMbVJsWW5WbkpGTUFBQUFBQUFBQUFQ
QUEKQUFCNUtnQUFhU3NBQUFBQUFBQUZBQUFBUUJBUVFpNTBaWGgwQUFBQUFBQUFBQUFBQUFBS0FB
QUFteXNBQUFBQUFBQUFBQUFBQUFBQQpBQ0FRVUdBdVpHVmlkV2NrVXdBQUFBQUFBQUFBOEFBQUFL
VXJBQUNWTEFBQUFBQUFBQVVBQUFCQUVCQkNMblJsZUhRQUFBQUFBQUFBCkFBQUFBQWNBQUFESExB
QUF6aXdBQUFBQUFBQUJBQUFBSUJCUVlDNWtaV0oxWnlSVEFBQUFBQUFBQUFEWUFBQUEyQ3dBQUxB
dEFBQUEKQUFBQUJRQUFBRUFRRUVJdWNtUmhkR0VBQUFBQUFBQUFBQUFBSEFBQUFPSXRBQUQrTFFB
QUFBQUFBQWNBQUFCQUVEQkFMblJsZUhRQQpBQUFBQUFBQUFBQUFBQjhBQUFCRUxnQUFZeTRBQUFB
QUFBQUNBQUFBSUJCUVlDNWtaV0oxWnlSVEFBQUFBQUFBQUFEY0FBQUFkeTRBCkFGTXZBQUFBQUFB
QUF3QUFBRUFRRUVJdWRHVjRkQUFBQUFBQUFBQUFBQUFBQ1FBQUFIRXZBQUI2THdBQUFBQUFBQUVB
QUFBZ0VGQmcKTG1SbFluVm5KRk1BQUFBQUFBQUFBTEFBQUFDRUx3QUFOREFBQUFBQUFBQURBQUFB
UUJBUVFpNTBaWGgwQUFBQUFBQUFBQUFBQUFDWQpBQUFBVWpBQUFPb3dBQUFBQUFBQUJnQUFBQ0FR
VUdBdVpHVmlkV2NrVXdBQUFBQUFBQUFBdUFFQUFDWXhBQURlTWdBQUFBQUFBQThBCkFBQkFFQkJD
TG5Ka1lYUmhBQUFBQUFBQUFBQUFBQVFBQUFCME13QUFBQUFBQUFBQUFBQUFBQUFBUUJBd1FDNXla
R0YwWVFBQUFBQUEKQUFBQUFBQUVBQUFBZURNQUFBQUFBQUFBQUFBQUFBQUFBRUFRTUVBdWNtUmhk
R0VBQUFBQUFBQUFBQUFBQkFBQUFId3pBQUFBQUFBQQpBQUFBQUFBQUFBQkFFREJBTG5SbGVIUUFB
QUFBQUFBQUFBQUFBQThBQUFDQU13QUFqek1BQUFBQUFBQUJBQUFBSUJCUVlDNWtaV0oxClp5UlRB
QUFBQUFBQUFBQVlBUUFBbVRNQUFMRTBBQUFBQUFBQUJ3QUFBRUFRRUVJdWRHVjRkQUFBQUFBQUFB
QUFBQUFBU2dBQUFQYzAKQUFBQUFBQUFBQUFBQUFBQUFBQWdFRkJnTG1SbFluVm5KRk1BQUFBQUFB
QUFBR1FCQUFCQk5RQUFwVFlBQUFBQUFBQUpBQUFBUUJBUQpRaTUwWlhoMEFBQUFBQUFBQUFBQUFB
Qk9BQUFBL3pZQUFBQUFBQUFBQUFBQUFBQUFBQ0FRVUdBdVpHVmlkV2NrVXdBQUFBQUFBQUFBClhB
RUFBRTAzQUFDcE9BQUFBQUFBQUFrQUFBQkFFQkJDTG5SbGVIUUFBQUFBQUFBQUFBQUFBRHdBQUFB
RE9RQUFQemtBQUFBQUFBQUIKQUFBQUlCQlFZQzVrWldKMVp5UlRBQUFBQUFBQUFBQllBUUFBU1Rr
QUFLRTZBQUFBQUFBQUNRQUFBRUFRRUVJdWRHVjRkQUFBQUFBQQpBQUFBQUFBQVR3QUFBUHM2QUFB
QUFBQUFBQUFBQUFBQUFBQWdFRkJnTG1SbFluVm5KRk1BQUFBQUFBQUFBSVFCQUFCS093QUF6andB
CkFBQUFBQUFKQUFBQVFCQVFRaTUwWlhoMEFBQUFBQUFBQUFBQUFBQUpBQUFBS0QwQUFERTlBQUFB
QUFBQUFRQUFBQ0FRVUdBdVpHVmkKZFdja1V3QUFBQUFBQUFBQXZBQUFBRHM5QUFEM1BRQUFBQUFB
QUFNQUFBQkFFQkJDTG5Ka1lYUmhBQUFBQUFBQUFBQUFBQndBQUFBVgpQZ0FBTVQ0QUFBQUFBQUFI
QUFBQVFCQXdRQzUwWlhoMEFBQUFBQUFBQUFBQUFBQUhBQUFBZHo0QUFINCtBQUFBQUFBQUFRQUFB
Q0FRClVHQXVaR1ZpZFdja1V3QUFBQUFBQUFBQXZBQUFBSWcrQUFCRVB3QUFBQUFBQUFNQUFBQkFF
QkJDTG5SbGVIUUFBQUFBQUFBQUFBQUEKQUFrQUFBQmlQd0FBYXo4QUFBQUFBQUFCQUFBQUlCQlFZ
QzVrWldKMVp5UlRBQUFBQUFBQUFBREFBQUFBZFQ4QUFEVkFBQUFBQUFBQQpBd0FBQUVBUUVFSXVj
bVJoZEdFQUFBQUFBQUFBQUFBQUhBQUFBRk5BQUFCdlFBQUFBQUFBQUFjQUFBQkFFREJBTG5SbGVI
UUFBQUFBCkFBQUFBQUFBQUFjQUFBQzFRQUFBdkVBQUFBQUFBQUFCQUFBQUlCQlFZQzVrWldKMVp5
UlRBQUFBQUFBQUFBREFBQUFBeGtBQUFJWkIKQUFBQUFBQUFBd0FBQUVBUUVFSXVkR1Y0ZEFBQUFB
QUFBQUFBQUFBQUh3QUFBS1JCQUFERFFRQUFBQUFBQUFJQUFBQWdFRkJnTG1SbApZblZuSkZNQUFB
QUFBQUFBQU9RQUFBRFhRUUFBdTBJQUFBQUFBQUFEQUFBQVFCQVFRaTUwWlhoMEFBQUFBQUFBQUFB
QUFBQWZBQUFBCjJVSUFBUGhDQUFBQUFBQUFBZ0FBQUNBUVVHQXVaR1ZpZFdja1V3QUFBQUFBQUFB
QTVBQUFBQXhEQUFEd1F3QUFBQUFBQUFNQUFBQkEKRUJCQ0xuUmxlSFFBQUFBQUFBQUFBQUFBQUlV
QUFBQU9SQUFBazBRQUFBQUFBQUFPQUFBQUlCQlFZQzVrWldKMVp5UlRBQUFBQUFBQQpBQUI4QVFB
QUgwVUFBSnRHQUFBQUFBQUFDUUFBQUVBUUVFSXVZbk56QUFBQUFBQUFBQUFBQUFBQUJBQUFBQUFB
QUFBQUFBQUFBQUFBCkFBQUFBQUNBRUREQUxtSnpjd0FBQUFBQUFBQUFBQUFBQUFRQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQWdCQXd3QzVpYzNNQUFBQUEKQUFBQUFBQUFBQUFFQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUlBUU1NQXVkR1Y0ZEFBQUFBQUFBQUFBQUFBQU53QUFBUFZHQUFBcwpSd0FB
QUFBQUFBRUFBQUFnRUZCZ0xtUmxZblZuSkZNQUFBQUFBQUFBQUZ3QkFBQTJSd0FBa2tnQUFBQUFB
QUFIQUFBQVFCQVFRaTUwClpYaDBBQUFBQUFBQUFBQUFBQUJFQUFBQTJFZ0FBQnhKQUFBQUFBQUFB
UUFBQUNBUVVHQXVaR1ZpZFdja1V3QUFBQUFBQUFBQU1BRUEKQUNaSkFBQldTZ0FBQUFBQUFBY0FB
QUJBRUJCQ0xuUmxlSFFBQUFBQUFBQUFBQUFBQUVRQUFBQ2NTZ0FBNEVvQUFBQUFBQUFCQUFBQQpJ
QkJRWUM1a1pXSjFaeVJUQUFBQUFBQUFBQUE4QVFBQTZrb0FBQ1pNQUFBQUFBQUFCd0FBQUVBUUVF
SXVkR1Y0ZEFBQUFBQUFBQUFBCkFBQUFUd0FBQUd4TUFBQzdUQUFBQUFBQUFBRUFBQUFnRUZCZ0xt
UmxZblZuSkZNQUFBQUFBQUFBQUhRQkFBREZUQUFBT1U0QUFBQUEKQUFBSEFBQUFRQkFRUWk1a1pX
SjFaeVJUQUFBQUFBQUFBQUFnQUFBQWYwNEFBSjlPQUFBQUFBQUFBZ0FBQUVBUUVFSXVaR1ZpZFdj
awpWQUFBQUFBQUFBQUFaQUFBQUxOT0FBQUFBQUFBQUFBQUFBQUFBQUJBQUJCQ0lDQWdMMjFoYm1s
bVpYTjBaR1Z3Wlc1a1pXNWplVG9pCmRIbHdaVDBuZDJsdU16SW5JRzVoYldVOUowMXBZM0p2YzI5
bWRDNVdRemd3TGtOU1ZDY2dkbVZ5YzJsdmJqMG5PQzR3TGpVd056STMKTGpRd05UTW5JSEJ5YjJO
bGMzTnZja0Z5WTJocGRHVmpkSFZ5WlQwbmVEZzJKeUJ3ZFdKc2FXTkxaWGxVYjJ0bGJqMG5NV1pq
T0dJegpZamxoTVdVeE9HVXpZaWNpSUM5RVJVWkJWVXhVVEVsQ09pSk5VMVpEVWxRaUlDOUVSVVpC
VlV4VVRFbENPaUpQVEVST1FVMUZVeUlnCkJBQUFBUEVBQUFDREJ3QUFWd0FCRVFBQUFBQkRPbHhq
ZVdkM2FXNWNhRzl0WlZ4amJXRnljbWx1WEZkbFlrdHBkRUoxYVd4a1hHOWkKYWx4WFpXSkxhWFJU
ZVhOMFpXMUpiblJsY21aaFkyVmNVbVZzWldGelpWeE5aV1JwWVZWSkxtOWlhZ0FvQnhZUkFTQUFB
QWNBRGdBQQpBQ2ZHRGdBQUFDZkdUV2xqY205emIyWjBJQ2hTS1NCUGNIUnBiV2w2YVc1bklFTnZi
WEJwYkdWeUFHTjNaQUJqT2x4amVXZDNhVzVjCmFHOXRaVnhqYldGeWNtbHVYSE52ZFhKalpWeHpk
bTVjVjJWaVMybDBYRWx1ZEdWeWJtRnNYRmRsWWt0cGRGTjVjM1JsYlVsdWRHVnkKWm1GalpWeDNh
VzRBWTJ3QVF6cGNVSEp2WjNKaGJTQkdhV3hsY3lBb2VEZzJLVnhOYVdOeWIzTnZablFnVm1semRX
RnNJRk4wZFdScApieUE0WEZaRFhHSnBibHhqYkM1bGVHVUFZMjFrQUMxUE1pQXRTVU02WEdONVoz
ZHBibHhvYjIxbFhHTnRZWEp5YVc1Y1YyVmlTMmwwClFuVnBiR1JjU1c1amJIVmtaU0F0U1VNNlhF
RndjR3hsU1c1MFpYSnVZV3hjU1c1amJIVmtaU0F0U1VNNlhFRndjR3hsU1c1MFpYSnUKWVd4Y1NX
NWpiSFZrWlZ4RGIzSmxSbTkxYm1SaGRHbHZibHhQVTFoRGIyMXdZWFJwWW1sc2FYUjVTR1ZoWkdW
eWN5QXRTVU02WEVGdwpjR3hsU1c1MFpYSnVZV3hjU1c1amJIVmtaVnhEYjNKbFJtOTFibVJoZEds
dmJseFBVMWhEYjIxd1lYUnBZbWxzYVhSNVNHVmhaR1Z5CmMxeEhUbFZEYjIxd1lYUnBZbWxzYVhS
NUlDMUpRenBjWTNsbmQybHVYR2h2YldWY1kyMWhjbkpwYmx4WFpXSkxhWFJDZFdsc1pGeHYKWW1w
Y1YyVmlTMmwwVTNsemRHVnRTVzUwWlhKbVlXTmxYRVJsY21sMlpXUlRiM1Z5WTJWeklDMUpZenBj
WTNsbmQybHVYR2h2YldWYwpZMjFoY25KcGJseHpiM1Z5WTJWY2MzWnVYRmRsWWt0cGRGeEpiblJs
Y201aGJGeFhaV0pMYVhSVGVYTjBaVzFKYm5SbGNtWmhZMlVnCkxVUmZYMWRKVGpNeVgxOGdMVVJm
VEVsQ0lDMUVUa1JGUWxWSElDMUVWMGxPTXpJZ0xVUmZWMGxPUkU5WFV5QXRSRmRKVGxaRlVqMHcK
ZURVd01TQXRSRjlYU1U0ek1sOVhTVTVPVkQwd2VEVXdNU0F0UkY5WFNVNHpNbDlKUlQwd2VEWXdN
Q0F0UkY5RFVsUmZVMFZEVlZKRgpYME5RVUY5UFZrVlNURTlCUkY5VFZFRk9SRUZTUkY5T1FVMUZV
ejB4SUMxRVgxOVFVazlFVlVOVVNVOU9YMTg5TUNBdFJGOUlRVk5mClJWaERSVkJVU1U5T1V6MHdJ
QzFFUWxWSlRFUkpUa2RmVjJWaVMybDBVM2x6ZEdWdFNXNTBaWEptWVdObElDMUVYMVZPU1VOUFJF
VWcKTFVSVlRrbERUMFJGSUMxR1JDQXRUVVFnTFVkU0xTQXRSbTlET2x4amVXZDNhVzVjYUc5dFpW
eGpiV0Z5Y21sdVhGZGxZa3RwZEVKMQphV3hrWEc5aWFseFhaV0pMYVhSVGVYTjBaVzFKYm5SbGNt
WmhZMlZjVW1Wc1pXRnpaVndnTFVaa1F6cGNZM2xuZDJsdVhHaHZiV1ZjClkyMWhjbkpwYmx4WFpX
SkxhWFJDZFdsc1pGeHNhV0pjVjJWaVMybDBVM2x6ZEdWdFNXNTBaWEptWVdObExuWmpPREF1Y0dS
aUlDMVgKTkNBdFYxZ2dMV01nTFZwcElDMVVVQ0F0ZDJRME1ERTRJQzEzWkRRd05qZ2dMWGRrTkRB
NU9TQXRkMlEwTVRBd0lDMTNaRFF4TWpjZwpMWGRrTkRFek9DQXRkMlEwTVRnd0lDMTNaRFF4T0Rr
Z0xYZGtOREl3TVNBdGQyUTBNalEwSUMxM1pEUXlOVEVnTFhka05ESTNOU0F0CmQyUTBNamc0SUMx
M1pEUXlPVEVnTFhka05ETXdOU0F0ZDJRME16UTBJQzEzWkRRek5UVWdMWGRrTkRNNE9TQXRkMlEw
TlRBeklDMTMKWkRRMU1EVWdMWGRrTkRVeE1DQXRkMlEwTlRFeUlDMTNaRFEyTVRBZ0xYZGtORGN3
TmlBdGQyUTBPREF3SUMxM1pEUTVOVEVnTFhkawpORGsxTWlBdGQyUTBPVGsySUMxM1pEWXdNVEVn
TFhka05qQXpNU0F0ZDJRMk1qRXhJQzEzWkRZeU5EWWdMWGRrTmpJMU5TQXRkMlEyCk16ZzNJQzFI
VXlBdGJtOXNiMmR2SUMxbGNuSnZjbkpsY0c5eWREcHhkV1YxWlNBdFNTSkRPbHhRY205bmNtRnRJ
RVpwYkdWeklDaDQKT0RZcFhFMXBZM0p2YzI5bWRDQkVhWEpsWTNSWUlGTkVTeUFvUVhWbmRYTjBJ
REl3TURrcFhFbHVZMngxWkdVaUlDMUpJa002WEZCeQpiMmR5WVcwZ1JtbHNaWE1nS0hnNE5pbGNU
V2xqY205emIyWjBJRlpwYzNWaGJDQlRkSFZrYVc4Z09GeFdRMXhwYm1Oc2RXUmxJaUF0ClNTSkRP
bHhRY205bmNtRnRJRVpwYkdWeklDaDRPRFlwWEUxcFkzSnZjMjltZENCV2FYTjFZV3dnVTNSMVpH
bHZJRGhjVmtOY1lYUnMKYldaalhHbHVZMngxWkdVaUlDMUpJa002WEZCeWIyZHlZVzBnUm1sc1pY
TWdLSGc0TmlsY1RXbGpjbTl6YjJaMElGWnBjM1ZoYkNCVApkSFZrYVc4Z09GeFdRMXhRYkdGMFpt
OXliVk5FUzF4cGJtTnNkV1JsSWlBdFNTSkRPbHhRY205bmNtRnRJRVpwYkdWeklDaDRPRFlwClhF
MXBZM0p2YzI5bWRDQldhWE4xWVd3Z1UzUjFaR2x2SURoY1ZrTmNVR3hoZEdadmNtMVRSRXRjWTI5
dGJXOXVYR2x1WTJ4MVpHVWkKSUMxSklrTTZYRkJ5YjJkeVlXMGdSbWxzWlhNZ0tIZzROaWxjVFds
amNtOXpiMlowSUZacGMzVmhiQ0JUZEhWa2FXOGdPRnhUUkV0Ywpkakl1TUZ4cGJtTnNkV1JsSWlB
dFdBQnpjbU1BTGk1Y1RXVmthV0ZWU1M1amNIQUFjR1JpQUVNNlhHTjVaM2RwYmx4b2IyMWxYR050
CllYSnlhVzVjVjJWaVMybDBRblZwYkdSY2JHbGlYRmRsWWt0cGRGTjVjM1JsYlVsdWRHVnlabUZq
WlM1Mll6Z3dMbkJrWWdBQUFQRUEKQUFBWEJRQUFHZ0FIRVkwU0FBQUNnUDcvYTBOSFJtOXVkRWx1
WkdWNFRXRjRBQllBQnhHTkVnQUFBb0QrLzJ0RFIwZHNlWEJvVFdGNApBQ1lBQnhIckZ3QUFBUUJY
UzAxbFpHbGhRMjl1ZEhKdmJHeGxjbFJvWlcxbFEyeGhjM05wWXdBb0FBY1I2eGNBQUFJQVYwdE5a
V1JwCllVTnZiblJ5YjJ4c1pYSlVhR1Z0WlZGMWFXTnJWR2x0WlFBbUFBY1JNaEFBQUFFQVYwdE5a
V1JwWVVOdmJuUnliMnhzWlhKR2JHRm4KUkdsellXSnNaV1FBSlFBSEVUSVFBQUFDQUZkTFRXVmth
V0ZEYjI1MGNtOXNiR1Z5Um14aFoxQnlaWE56WldRQUpRQUhFVElRQUFBUQpBRmRMVFdWa2FXRkRi
MjUwY205c2JHVnlSbXhoWjBadlkzVnpaV1FBSFFBTkVRc1FBQUFBQUFBQUFBQmZhVzF3WDE5RFIx
TnBlbVZhClpYSnZBQ0lBQ0JHZEVBQUFUV1ZrYVdGTVpXZGhZM2xWU1ZScGJXVnNhVzVsVTJ4cFpH
VnlBQTBBQ0JGMUFBQUFWVWx1ZERNeUFDNEEKQ0JFcUZ3QUFUV1ZrYVdGVGFHRnlaV1JWU1ZScGJX
VnNhVzVsVTJ4cFpHVnlWR2gxYldKRmJHVnRaVzUwQUNJQUNCSDFGZ0FBVFdWawphV0ZUYUdGeVpX
UlZTVU5EU1cxaFoyVkZiR1Z0Wlc1MEFBc0FDQkVRQUFBQVFrOVBUQUFTQUFnUkZoQUFBRU5HVTNS
eWFXNW5VbVZtCkFCQUFDQkZ1RVFBQVEwWlVlWEJsVW1WbUFBNEFDQkZBQUFBQVEwZEdiRzloZEFB
VEFBZ1JLUkFBQUVOSFEyOXVkR1Y0ZEZKbFpnQXMKQUFnUlRoY0FBRTFsWkdsaFUyaGhjbVZrVlVs
V2IyeDFiV1ZUYkdsa1pYSlVhSFZ0WWtWc1pXMWxiblFBRGdBSUVRZ1FBQUJEUjFCdgphVzUwQUE0
QUNCRUZFQUFBUTBaU1lXNW5aUUFjQUFnUlhoY0FBRTFsWkdsaFUyaGhjbVZrVlVsRGIyNTBjbTlz
Y3dBUkFBZ1JnQkFBCkFFTkhTVzFoWjJWU1pXWUFIQUFJRVZzUUFBQk5aV1JwWVZWSlZHbHRaV3hw
Ym1WVGJHbGtaWElBSUFBSUVZc1FBQUJOWldScFlVeGwKWjJGamVWVkpTVzFoWjJWRmJHVnRaVzUw
QUNBQUNCRThGd0FBVFdWa2FXRlRhR0Z5WldSVlNWWnZiSFZ0WlZOc2FXUmxjZ0FhQUFnUgpyUkFB
QUUxbFpHbGhUR1ZuWVdONVEyOXVkSEp2YkhNQU1RQUlFUVlYQUFCTlpXUnBZVk5vWVhKbFpGVkpW
bTlzZFcxbFUyeHBaR1Z5ClFtRmphMmR5YjNWdVpFVnNaVzFsYm5RQURnQUlFUklBQUFCRFJrbHVa
R1Y0QUNJQUNCRVlGd0FBVFdWa2FXRlRhR0Z5WldSVlNWUnAKYldWc2FXNWxVMnhwWkdWeUFCc0FD
QkVhRUFBQVEwWlRkSEpwYm1kSmJteHBibVZDZFdabVpYSUFFQUFJRVhVQUFBQlZWRVl6TWtObwpZ
WElBRlFBSUVVWVFBQUJOWldScFlWVkpSV3hsYldWdWRBQU5BQWdSZFFBQUFITnBlbVZmZEFBVUFB
Z1JkaEFBQUUxbFpHbGhRMjl1CmRISnZiSE1BRGdBSUVRVVFBQUJEUmxKaGJtZGxBQnNBQ0JFYUVB
QUFRMFpUZEhKcGJtZEpibXhwYm1WQ2RXWm1aWElBSWdBSUVlc1gKQUFCWFMwMWxaR2xoUTI5dWRI
SnZiR3hsY2xSb1pXMWxVM1I1YkdVQUlnQUlFVElRQUFCWFMwMWxaR2xoUTI5dWRISnZiR3hsY2xS
bwpaVzFsVTNSaGRHVUFEUUFJRVFzUUFBQkRSMU5wZW1VQUdBQUlFUkVRQUFCRFIwRm1abWx1WlZS
eVlXNXpabTl5YlFBaUFBZ1JNaEFBCkFGZExUV1ZrYVdGRGIyNTBjbTlzYkdWeVZHaGxiV1ZUZEdG
MFpRQU9BQWdSSVFBQUFGVnVhVU5vWVhJQUVRQUlFYlVUQUFCRFIwTnYKYkc5eVVtVm1BQ0FBQ0JI
bEZnQUFUV1ZrYVdGVGFHRnlaV1JWU1VsdFlXZGxSV3hsYldWdWRBQTJBQWdSM0JZQUFFMWxaR2xo
VTJoaApjbVZrVlVsSmJXRm5aVVZzWlcxbGJuUTZPazFsWkdsaFZVbEpiV0ZuWlVacGJHeE5iMlJs
QUEwQUNCRU9FQUFBUTBkU1pXTjBBQUQwCkFBQUF5QVFBQUFFQUFBQVFBVE81aHpFRFZpcm8xUEl2
Uzk5cEtZOEFBRG9BQUFBUUFkTndGb2JXWGhKbllXTmU3UXpZczdRQUFHSUEKQUFBUUFlRWp5UlFC
ekV0dWE0QlFNV3hRenM0QUFKUUFBQUFRQVl5Z3FJOFRKYjFmZXV2d3BrRTY0dFlBQU1RQUFBQVFB
YVNDWGd2Kwo2RjlvdFBwZzhJMWxXa0VBQVBjQUFBQVFBZFh2UW8xT05kYmVucmFDTC9kOVg4Z0FB
Q2tCQUFBUUFVRFM2Uk9vdW9wdmZBYittbDM2Cjl1d0FBR01CQUFBUUFieXdpTHIrbGp1MU11bmNp
Vm1lc1hNQUFKWUJBQUFRQWV3aklTVHRqU21SdURPb0dyd3BtcElBQU0wQkFBQVEKQVdSa0R0MkdV
Vkswd1JLM2VtSkdkY3dBQUNVQ0FBQVFBWEdad0R4M1V0NFZ2b0M4a1lpd3ZFQUFBRllDQUFBUUFa
VTBuRFdkb0V0UQpnYzlsMzROQmFld0FBSVFDQUFBUUFlL2ViWUs1WUh6cmtaZGY3by9ISzFvQUFL
WUNBQUFRQVFSUWRQU1lxN2Y5N1ZJMGhsVEtRVWNBCkFQb0NBQUFRQVRja2dzNHVIN3Nwb2EzTFkv
bFZGNlFBQURBREFBQVFBUXVGSjJIeHkyYXJZN2NDcTI3MlRsa0FBR0lEQUFBUUFiWW4KWWtPRnRW
TDZIQ1dHRkZhenhXSUFBSkVEQUFBUUFkU2hYTUVyQkNQV1Y1ZW9vL0V5NzNJQUFMOERBQUFRQVJq
UnNoTXNvSGVqWTZ6TApvUE9GZlpNQUFQY0RBQUFRQVRJK1FQdVZneGNyWjBZT3RPWURoTHdBQUQ4
RUFBQVFBZXg1VEFtNjZCRUdoeTRsVWlFU0J0Y0FBSElFCkFBQVFBZlpFSzFLTUJ6UVFvelpHY0kw
dzFnb0FBS1VFQUFBUUFSUHl6dFNyblp2ckdwSGFsUUxwdkdBQUFOa0VBQUFRQWMvOW5UR2MKTmZO
VGFGOTdpVDRDbHQ4QUFCNEZBQUFRQVEveGl4a2gzRnpiNW0xelFOd2thcW9BQUU0RkFBQVFBYXBW
b1hleFhNWFNNbThxZVBsKwpTSFVBQUlNRkFBQVFBWVNtOEhwNUpXTTlDb0grR1lKTk9Mc0FBTWdG
QUFBUUFWZ2REQTNCL2tReHE4djg1V2ppVm1ZQUFDQUdBQUFRCkFlenBPTkI0YUtQa093SmJMbTEy
emNBQUFGY0dBQUFRQVdCUDIvemRGUUxtTUg1V2pxTDNDMjBBQUljR0FBQVFBZVl0ZGovVkZFSWMK
dXBTLzhxWmlMbndBQUxjR0FBQVFBWVRxRzlvcEpyazdmUXN4YnhMaDRhWUFBT3NHQUFBUUFmYlRW
NWFEdVBXMEhlb21hOTJwOGVRQQpBQndIQUFBUUFjWVFRR3RZQ0t4MVNGVlRrOExwNDhnQUFFc0hB
QUFRQVphbldkOGJzSStxczBwdldRRnJnRVFBQUk4SEFBQVFBYXdHCnhjMGtaV2VDbmRYWkUrMjVs
MGNBQU1JSEFBQVFBZnVrWEtocHhjOU9wZXV4MCtucmxPOEFBQWNJQUFBUUFXY3ZORFZDRVdtUW5t
SUYKcTVNZDJOY0FBRHNJQUFBUUFZVlYveGhhNjlKeVQ0VEx3L3BBZTJnQUFHd0lBQUFRQVk3ZVpn
WUpzMTBwakRhbUN1STR1WklBQUo0SQpBQUFRQVhIekJsRVArL3lRKzRVdU5jZjJDMzRBQU5FSUFB
QVFBYlBwYUt4U2FTY0RyV2FZdW5IaG02OEFBQ01KQUFBUUFic1loSFh3CmJpZlYzamZSTStoeUNs
a0FBRlVKQUFBUUFmbVZhS2ZscERVa2Z4WTczclJTQkpjQUFJUUpBQUFRQVhqSEpnbGVwaXNaZVd5
eWR5bFoKbllVQUFLY0pBQUFRQVZuN2pWTk4waDRXQk1KWVRuZUQ3OVlBQU93SkFBQVFBZVBmcFBv
Z0drTlBNaFllZjFjMnpvZ0FBQjRLQUFBUQpBWEVmVkN4eTZJc2NoRGF0bmpkeStoc0FBR1FLQUFB
UUFUNjRobU1YeEpmY1djKzhTYW96U2kwQUFLWUtBQUFRQVJZUmVhenByeEdDCnVRcGJZQytiVURJ
QUFPMEtBQUFRQWNEMDh0UnZSRWwzYlEwQjVULzNCV01BQVBNQUFBQnREQUFBQUdNNlhHRndjR3hs
YVc1MFpYSnUKWVd4Y2FXNWpiSFZrWlZ4amIzSmxabTkxYm1SaGRHbHZibHhqWm1Ob1lYSmhZM1Js
Y25ObGRDNW9BR002WEdGd2NHeGxhVzUwWlhKdQpZV3hjYVc1amJIVmtaVnhoZG1GcGJHRmlhV3hw
ZEhrdWFBQmpPbHhoY0hCc1pXbHVkR1Z5Ym1Gc1hHbHVZMngxWkdWY1kyOXlaV1p2CmRXNWtZWFJw
YjI1Y1kyWmxjbkp2Y2k1b0FHTTZYR0Z3Y0d4bGFXNTBaWEp1WVd4Y2FXNWpiSFZrWlZ4aGRtRnBi
R0ZpYVd4cGRIbHAKYm5SbGNtNWhiQzVvQUdNNlhHRndjR3hsYVc1MFpYSnVZV3hjYVc1amJIVmta
VnhqYjNKbFptOTFibVJoZEdsdmJseGpabk4wY21sdQpaeTVvQUdNNlhHRndjR3hsYVc1MFpYSnVZ
V3hjYVc1amJIVmtaVnhqYjNKbFptOTFibVJoZEdsdmJseGpabUZ5Y21GNUxtZ0FZenBjCllYQndi
R1ZwYm5SbGNtNWhiRnhwYm1Oc2RXUmxYR052Y21WbmNtRndhR2xqYzF4aloyRm1abWx1WlhSeVlX
NXpabTl5YlM1b0FHTTYKWEdGd2NHeGxhVzUwWlhKdVlXeGNhVzVqYkhWa1pWeGpiM0psWjNKaGNH
aHBZM05jWTJkblpXOXRaWFJ5ZVM1b0FHTTZYR0Z3Y0d4bAphVzUwWlhKdVlXeGNhVzVqYkhWa1pW
eGpiM0psWm05MWJtUmhkR2x2Ymx4alptUnBZM1JwYjI1aGNua3VhQUJqT2x4amVXZDNhVzVjCmFH
OXRaVnhqYldGeWNtbHVYSE52ZFhKalpWeHpkbTVjZDJWaWEybDBYR2x1ZEdWeWJtRnNYSGRsWW10
cGRITjVjM1JsYldsdWRHVnkKWm1GalpWeHphR0Z5WldSdFpXUnBZWFZwTG1nQVl6cGNZWEJ3YkdW
cGJuUmxjbTVoYkZ4cGJtTnNkV1JsWEdOdmNtVm1iM1Z1WkdGMAphVzl1WEdObVltRnpaUzVvQUdN
NlhHRndjR3hsYVc1MFpYSnVZV3hjYVc1amJIVmtaVngwWVhKblpYUmpiMjVrYVhScGIyNWhiSE11
CmFBQmpPbHhoY0hCc1pXbHVkR1Z5Ym1Gc1hHbHVZMngxWkdWY2MzUmthVzUwTG1nQVl6cGNZM2xu
ZDJsdVhHaHZiV1ZjWTIxaGNuSnAKYmx4emIzVnlZMlZjYzNadVhIZGxZbXRwZEZ4cGJuUmxjbTVo
YkZ4M1pXSnJhWFJ6ZVhOMFpXMXBiblJsY21aaFkyVmNiV1ZrYVdGMQphUzVqY0hBQVl6cGNZWEJ3
YkdWcGJuUmxjbTVoYkZ4cGJtTnNkV1JsWEdOdmNtVm5jbUZ3YUdsamMxeGpaM0JrWm1SdlkzVnRa
VzUwCkxtZ0FZenBjWVhCd2JHVnBiblJsY201aGJGeHBibU5zZFdSbFhHTnZjbVZuY21Gd2FHbGpj
MXhqWjNCa1puQmhaMlV1YUFCak9seGgKY0hCc1pXbHVkR1Z5Ym1Gc1hHbHVZMngxWkdWY1kyOXla
V2R5WVhCb2FXTnpYR05uY0dGMGFDNW9BR002WEdGd2NHeGxhVzUwWlhKdQpZV3hjYVc1amJIVmta
VnhoZG1GcGJHRmlhV3hwZEhsdFlXTnliM011YUFCak9seGhjSEJzWldsdWRHVnlibUZzWEdsdVky
eDFaR1ZjClkyOXlaV2R5WVhCb2FXTnpYR05uY0dSbVpHbGpkR2x2Ym1GeWVTNW9BR002WEhCeWIy
ZHlZVzBnWm1sc1pYTWdLSGc0TmlsY2JXbGoKY205emIyWjBJSFpwYzNWaGJDQnpkSFZrYVc4Z09G
eDJZMXhwYm1Oc2RXUmxYSE41YzF4MGVYQmxjeTVvQUdNNlhHRndjR3hsYVc1MApaWEp1WVd4Y2FX
NWpiSFZrWlZ4amIzSmxaM0poY0docFkzTmNZMmR3WkdaaGNuSmhlUzVvQUdNNlhHRndjR3hsYVc1
MFpYSnVZV3hjCmFXNWpiSFZrWlZ4amIzSmxaM0poY0docFkzTmNZMmRuY21Ga2FXVnVkQzVvQUdN
NlhHRndjR3hsYVc1MFpYSnVZV3hjYVc1amJIVmsKWlZ4amIzSmxaM0poY0docFkzTmNZMmR3Wkda
dlltcGxZM1F1YUFCak9seHdjbTluY21GdElHWnBiR1Z6SUNoNE9EWXBYRzFwWTNKdgpjMjltZENC
MmFYTjFZV3dnYzNSMVpHbHZJRGhjZG1OY2FXNWpiSFZrWlZ4emRHUmhjbWN1YUFCak9seGhjSEJz
WldsdWRHVnlibUZzClhHbHVZMngxWkdWY1kyOXlaV2R5WVhCb2FXTnpYR05uWTI5c2IzSXVhQUJq
T2x4aGNIQnNaV2x1ZEdWeWJtRnNYR2x1WTJ4MVpHVmMKWTI5eVpXZHlZWEJvYVdOelhHTm5ZMjlz
YjNKemNHRmpaUzVvQUdNNlhIQnliMmR5WVcwZ1ptbHNaWE1nS0hnNE5pbGNiV2xqY205egpiMlow
SUhacGMzVmhiQ0J6ZEhWa2FXOGdPRngyWTF4cGJtTnNkV1JsWEdGemMyVnlkQzVvQUdNNlhHTjVa
M2RwYmx4b2IyMWxYR050CllYSnlhVzVjYzI5MWNtTmxYSE4yYmx4M1pXSnJhWFJjYVc1MFpYSnVZ
V3hjZDJWaWEybDBjM2x6ZEdWdGFXNTBaWEptWVdObFhHeGwKWjJGamVXMWxaR2xoZFdrdWFBQmpP
bHhoY0hCc1pXbHVkR1Z5Ym1Gc1hHbHVZMngxWkdWY1kyOXlaV2R5WVhCb2FXTnpYR05uWkdGMApZ
WEJ5YjNacFpHVnlMbWdBWXpwY1lYQndiR1ZwYm5SbGNtNWhiRnhwYm1Oc2RXUmxYR052Y21WbmNt
RndhR2xqYzF4aloybHRZV2RsCkxtZ0FZenBjWVhCd2JHVnBiblJsY201aGJGeHBibU5zZFdSbFhH
TnZjbVZtYjNWdVpHRjBhVzl1WEdObWRYSnNMbWdBWXpwY1lYQncKYkdWcGJuUmxjbTVoYkZ4cGJt
TnNkV1JsWEdOdmNtVm5jbUZ3YUdsamMxeGpaM0JrWm5OMGNtVmhiUzVvQUdNNlhHRndjR3hsYVc1
MApaWEp1WVd4Y2FXNWpiSFZrWlZ4amIzSmxabTkxYm1SaGRHbHZibHhqWm1SaGRHRXVhQUJqT2x4
aGNIQnNaV2x1ZEdWeWJtRnNYR2x1ClkyeDFaR1ZjWTI5eVpXZHlZWEJvYVdOelhHTm5abTl1ZEM1
b0FHTTZYSEJ5YjJkeVlXMGdabWxzWlhNZ0tIZzROaWxjYldsamNtOXoKYjJaMElIWnBjM1ZoYkNC
emRIVmthVzhnT0Z4MlkxeHBibU5zZFdSbFhHWnNiMkYwTG1nQVl6cGNZWEJ3YkdWcGJuUmxjbTVo
YkZ4cApibU5zZFdSbFhHTnZjbVZtYjNWdVpHRjBhVzl1WEdObWJHOWpZV3hsTG1nQVl6cGNjSEp2
WjNKaGJTQm1hV3hsY3lBb2VEZzJLVnh0CmFXTnliM052Wm5RZ2RtbHpkV0ZzSUhOMGRXUnBieUE0
WEhaalhHbHVZMngxWkdWY1kzSjBkM0p1TG1nQVl6cGNZWEJ3YkdWcGJuUmwKY201aGJGeHBibU5z
ZFdSbFhHTnZjbVZuY21Gd2FHbGpjMXhqWjNCa1puTjBjbWx1Wnk1b0FHTTZYR0Z3Y0d4bGFXNTBa
WEp1WVd4YwphVzVqYkhWa1pWeGpiM0psWm05MWJtUmhkR2x2Ymx4alptUmhkR1V1YUFCak9seGhj
SEJzWldsdWRHVnlibUZzWEdsdVkyeDFaR1ZjClkyOXlaV2R5WVhCb2FXTnpYR05uYzJoaFpHbHVa
eTVvQUdNNlhHRndjR3hsYVc1MFpYSnVZV3hjYVc1amJIVmtaVnhqYjNKbFozSmgKY0docFkzTmNZ
MmRtZFc1amRHbHZiaTVvQUdNNlhHTjVaM2RwYmx4b2IyMWxYR050WVhKeWFXNWNjMjkxY21ObFhI
TjJibHgzWldKcgphWFJjYVc1MFpYSnVZV3hjZDJWaWEybDBjM2x6ZEdWdGFXNTBaWEptWVdObFhH
MWxaR2xoZFdrdWFBQmpPbHhoY0hCc1pXbHVkR1Z5CmJtRnNYR2x1WTJ4MVpHVmNZMjl5WldkeVlY
Qm9hV056WEdOblkyOXVkR1Y0ZEM1b0FHTTZYR0Z3Y0d4bGFXNTBaWEp1WVd4Y2FXNWoKYkhWa1pW
eGpiM0psWjNKaGNHaHBZM05jWTJkaVlYTmxMbWdBWXpwY1lYQndiR1ZwYm5SbGNtNWhiRnhwYm1O
c2RXUmxYSE4wWkdKdgpiMnd1YUFCak9seHdjbTluY21GdElHWnBiR1Z6SUNoNE9EWXBYRzFwWTNK
dmMyOW1kQ0IyYVhOMVlXd2djM1IxWkdsdklEaGNkbU5jCmFXNWpiSFZrWlZ4emRHUmtaV1l1YUFC
ak9seGhjSEJzWldsdWRHVnlibUZzWEdsdVkyeDFaR1ZjWTI5eVpXZHlZWEJvYVdOelhHTm4KY0dG
MGRHVnliaTVvQUdNNlhIQnliMmR5WVcwZ1ptbHNaWE1nS0hnNE5pbGNiV2xqY205emIyWjBJSFpw
YzNWaGJDQnpkSFZrYVc4ZwpPRngyWTF4cGJtTnNkV1JsWEdOeWRHUmxabk11YUFCak9seHdjbTlu
Y21GdElHWnBiR1Z6SUNoNE9EWXBYRzFwWTNKdmMyOW1kQ0IyCmFYTjFZV3dnYzNSMVpHbHZJRGhj
ZG1OY2FXNWpiSFZrWlZ4ellXd3VhQUJqT2x4d2NtOW5jbUZ0SUdacGJHVnpJQ2g0T0RZcFhHMXAK
WTNKdmMyOW1kQ0IyYVhOMVlXd2djM1IxWkdsdklEaGNkbU5jYVc1amJIVmtaVnhqY25SaGMzTmxi
UzVvQUdNNlhIQnliMmR5WVcwZwpabWxzWlhNZ0tIZzROaWxjYldsamNtOXpiMlowSUhacGMzVmhi
Q0J6ZEhWa2FXOGdPRngyWTF4cGJtTnNkV1JsWEhaaFpHVm1jeTVvCkFDUlVNaUFrWlhOd0lDNWpZ
a3h2WTJGc2N5QXJJQzVqWWxOaGRtVmtVbVZuY3lBcklEMGdKRlF3SUM1eVlWTmxZWEpqYUZOMFlY
SjAKSUQwZ0pHVnBjQ0FrVkRBZ1hpQTlJQ1JsYzNBZ0pGUXdJRFFnS3lBOUFDUlVNaUFrWlhOd0lD
NWpZa3h2WTJGc2N5QXJJQzVqWWxOaApkbVZrVW1WbmN5QXJJRDBnSkZRd0lDNXlZVk5sWVhKamFG
TjBZWEowSUQwZ0pHVnBjQ0FrVkRBZ1hpQTlJQ1JsYzNBZ0pGUXdJRFFnCkt5QTlJQ1JsWW5nZ0pG
UXdJREV5SUMwZ1hpQTlBQ1JVTWlBa1pYTndJQzVqWWt4dlkyRnNjeUFySUM1allsTmhkbVZrVW1W
bmN5QXIKSUQwZ0pGUXdJQzV5WVZObFlYSmphRk4wWVhKMElEMGdKR1ZwY0NBa1ZEQWdYaUE5SUNS
bGMzQWdKRlF3SURRZ0t5QTlJQ1JsWW5BZwpKRlF3SURFMklDMGdYaUE5SUNSbFluZ2dKRlF3SURF
eUlDMGdYaUE5QUFBQUFKd0lBQUJxQUFBQUN3Q2dDQUFBYWdBQUFBb0FDd0FBCkFBRUFBQUFLQUFB
QUFnQUFBQVFBQUFBRkFBQUFCQUFBQUl0RUpBU0pRUWpDQkFBRUFBQUE5UUFBQUNRQUFBQUFBQUFB
QUFBQUFBb0EKQUFBQUFBQUFCQUFBQUFBQUFBQXlDd0FBQUFBQUFBUUFBQUR4QUFBQWd3QUFBRDRB
RUJFQUFBQUFBQUFBQUFBQUFBQUtBQUFBQUFBQQpBQWNBQUFBMEVBQUFBQUFBQUFBQUFFMWxaR2xo
VlVsRmJHVnRaVzUwT2pwelpYUlRkR0YwWlFBY0FCSVFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFB
QUFBQUFDQUtBQUFOQUFZUkl4QUFBQklBZEdocGN3QVFBQXNSQkFBQUFESVFBQUJ6ZEdGMFpRQUNB
QVlBQVBJQUFBQWcKQUFBQUFBQUFBQUFBQUFBS0FBQUEyQU1BQUFFQUFBQVVBQUFBQUFBQUFFY0FB
SUFNQUFBQUh3QUFBQWNBV0FBQUFCOEFBQUFMQUZ3QQpBQUFmQUFBQUNnREVBQUFBSHdBQUFBc0F5
QUFBQUI4QUFBQUtBTjFFSkFUZFdSRENDQUFFQUFBQTlRQUFBQ1FBQUFBQUFBQUFBQUFBCkFBb0FB
QUFBQUFBQUNBQUFBQUFBQUFBeUN3QUFBQUFBQUFRQUFBRHhBQUFBa0FBQUFFb0FFQkVBQUFBQUFB
QUFBQUFBQUFBS0FBQUEKQUFBQUFBY0FBQUJORUFBQUFBQUFBQUFBQUUxbFpHbGhWVWxVYVcxbGJH
bHVaVk5zYVdSbGNqbzZjMlYwVkdsdFpVeHZZV1JsWkFBYwpBQklRQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFDQUtBQUFOQUFZUlRCQUFBQklBZEdocGN3QVJBQXNSQkFBQUFFRUFBQUJzCmIy
RmtaV1FBQWdBR0FQSUFBQUFnQUFBQUFBQUFBQUFBQUFBS0FBQUEyQU1BQUFFQUFBQVVBQUFBQUFB
QUFGc0FBSUFNQUFBQUpBQUEKQUFjQVdBQUFBQ1FBQUFBTEFGd0FBQUFrQUFBQUNnRFFBQUFBSkFB
QUFBc0ExQUFBQUNRQUFBQUtBTjFFSkFUZFdSakNDQUFFQUFBQQo5UUFBQUNRQUFBQUFBQUFBQUFB
QUFBb0FBQUFBQUFBQUNBQUFBQUFBQUFBeUN3QUFBQUFBQUFRQUFBRHhBQUFBa0FBQUFFZ0FFQkVB
CkFBQUFBQUFBQUFBQUFBQUtBQUFBQUFBQUFBY0FBQUJORUFBQUFBQUFBQUFBQUUxbFpHbGhWVWxV
YVcxbGJHbHVaVk5zYVdSbGNqbzYKYzJWMFJIVnlZWFJwYjI0QUhBQVNFQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBZ0NnQUFEUUFHRVV3UUFBQVNBSFJvYVhNQQpFd0FMRVFRQUFBQkJBQUFB
WkhWeVlYUnBiMjRBQWdBR0FQSUFBQUFnQUFBQUFBQUFBQUFBQUFBS0FBQUEyQU1BQUFFQUFBQVVB
QUFBCkFBQUFBRjRBQUlBTUFBQUFLZ0FBQUFjQVdBQUFBQ29BQUFBTEFGd0FBQUFxQUFBQUNnRFFB
QUFBS2dBQUFBc0ExQUFBQUNvQUFBQUsKQU1jQkFBQUFBTU1DQUFBQU1nQUFBQVlBQkFBQUFQVUFB
QUFrQUFBQUFBQUFBQUFBQUFBSEFBQUFBQUFBQUFBQUFBQUFBQUFBTWdzQQpBQUFBQUFBRUFBQUE4
UUFBQUhZQUFBQkRBQkFSQUFBQUFBQUFBQUFBQUFBQUJ3QUFBQUFBQUFBR0FBQUFZQkFBQUFBQUFB
QUFBQUJOClpXUnBZVU52Ym5SeWIyeHpPanArVFdWa2FXRkRiMjUwY205c2N3QWNBQklRQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQUsKQUFBTkFBWVJYUkFBQUJJQWRHaHBjd0FDQUFZQUFB
RHlBQUFBSUFBQUFBQUFBQUFBQUFBQUJ3QUFBTmdEQUFBQkFBQUFGQUFBQUFBQQpBQUJyQUFDQURB
QUFBQzhBQUFBSEFGZ0FBQUF2QUFBQUN3QmNBQUFBTHdBQUFBb0F1QUFBQUM4QUFBQUxBTHdBQUFB
dkFBQUFDZ0FBCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRFFBQUFB
R0FBUUFBQUJmQUFBQUJnQUlBQUFBYndBQUFBWUEKREFBQUFHUUFBQUFHQUJBQUFBQnBBQUFBQmdB
VUFBQUFOZ0FBQUFZQUdBQUFBRFlBQUFBR0FQWkVKQVFCVm92eHh3WUFBQUFBZEFsVwo2QUFBQUFD
RHhBU0x4bDdDQkFBS0FBQUFNZ0FBQUFZQUVnQUFBRHdBQUFBVUFBUUFBQUQxQUFBQVJBQUFBQUFB
QUFBQUFBQUFId0FBCkFBQUFBQUFFQUFBQUFBQUFBRElMQUFBSUFBQUFCQUFBQUFZQUFBQVdBQUFB
QUFBQUFBUUFBQUFBQUFBQU1nc0FBQUlBQkFBQUFBQUEKOFFBQUFJUUFBQUJSQUJBUkFBQUFBQUFB
QUFBQUFBQUFId0FBQUFnQUFBQWNBQUFBZEJBQUFBQUFBQUFBQUFCTlpXUnBZVU52Ym5SeQpiMnh6
T2pwZ2MyTmhiR0Z5SUdSbGJHVjBhVzVuSUdSbGMzUnlkV04wYjNJbkFCd0FFaEFBQUFBQUFBQUFB
QUFBQUFBRUFBQUFBQUFBCkFBQUFJQUlBQUEwQUJoRmRFQUFBRWdCMGFHbHpBQUlBQmdBTUFBQUFN
d0FBQUFjQWVBQUFBRE1BQUFBTEFId0FBQUF6QUFBQUNnQ0wKd2NjQUFBQUFBTU1FQUFBQU1nQUFB
QVlBQkFBQUFQVUFBQUFrQUFBQUFBQUFBQUFBQUFBSkFBQUFBQUFBQUFBQUFBQUFBQUFBTWdzQQpB
QUlBQUFBRUFBQUE4UUFBQUhVQUFBQkNBQkFSQUFBQUFBQUFBQUFBQUFBQUNRQUFBQUlBQUFBSUFB
QUFZQkFBQUFBQUFBQUFBQUJOClpXUnBZVU52Ym5SeWIyeHpPanBOWldScFlVTnZiblJ5YjJ4ekFC
d0FFaEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBb0EKQUEwQUJoRmRFQUFBRWdCMGFH
bHpBQUlBQmdBQUFBQU1BQUFBUVFBQUFBY0FXQUFBQUVFQUFBQUxBRndBQUFCQkFBQUFDZ0NEN0Fo
VApWVmFMZENRWVYxYi9GUUFBQUFDTGZDUWtpMXdrS0l0c0pDeUxUQ1F3Zyt3TWk4U0pPSWxZQkls
b0NJbElEUDhWQUFBQUFOMWNKQ0NMClZDUThpOFNKT0lsWUJJbG9DSWxRRFA4VkFBQUFBTnhFSkND
RHhBalpYQ1FrMlVRa0pObGNKQVRaN3RrY0pGYi9GUUFBQUFEWkJRQUEKQUFDRHhBVFpYQ1FFMmVq
WkhDUlcveFVBQUFBQWc4UU1YMTVkVzRQRUNNSVVBQTRBQUFCVUFBQUFCZ0EwQUFBQVV3QUFBQVlB
VHdBQQpBRklBQUFBR0FHNEFBQUJPQUFBQUJnQjBBQUFBVFFBQUFBWUFod0FBQUVjQUFBQUdBQVFB
QUFEMUFBQUFaQUFBQUFBQUFBQUFBQUFBCm1BQUFBQWdBQUFBVUFBQUFBQUFBQURJTEFBQUxBQWdB
QkFBQUFBUUFBQUNVQUFBQUNBQUFBQlFBQUFBQUFBQUFpUXNBQUFjQURBQUEKQUFBQUJRQUFBSk1B
QUFBSUFBQUFGQUFBQUFBQUFBRHlDd0FBQmdBUUFBQUFBQUR4QUFBQTlRQUFBRTBBRUJFQUFBQUFB
QUFBQUFBQQpBQUNZQUFBQUN3QUFBSTRBQUFBNkVBQUFBQUFBQUFBQUFFMWxaR2xoVlVsRmJHVnRa
VzUwT2pwelpYUlZjRU52Ym5SbGVIUkdiM0pRCllXbHVkR2x1WndBY0FCSVFDQUFBQUFBQUFBQUFB
QUFBRUFBQUFBQUFBQUFBQUFBQ0FBQU5BQVlSTGhBQUFCSUFkR2hwY3dBU0FBc1IKQkFBQUFDa1FB
QUJqYjI1MFpYaDBBQThBQ3hFSUFBQUFEaEFBQUhKbFkzUUFEZ0E1RVF3QUFBQUFBQUFBakJBQUFB
NEFPUkV5QUFBQQpBQUFBQUdJU0FBQU9BRGtSVFFBQUFBQUFBQUJpRWdBQURnQTVFV3dBQUFBQUFB
QUFZQklBQUE0QU9SR0ZBQUFBQUFBQUFHQVNBQUFDCkFBWUFBQUFBOGdBQUFFQUFBQUFBQUFBQUFB
QUFBSmdBQUFBNEFRQUFCUUFBQURRQUFBQUFBQUFBTXdBQWdBWUFBQUEwQUFDQUVnQUEKQURVQUFJ
QnlBQUFBTmdBQWdJNEFBQUEzQUFDQURBQUFBRVlBQUFBSEFKZ0FBQUJHQUFBQUN3Q2NBQUFBUmdB
QUFBb0FIUUVBQUVZQQpBQUFMQUNFQkFBQkdBQUFBQ2dBdEFRQUFSZ0FBQUFzQU1RRUFBRVlBQUFB
S0FEMEJBQUJHQUFBQUN3QkJBUUFBUmdBQUFBb0FUUUVBCkFFWUFBQUFMQUZFQkFBQkdBQUFBQ2dC
ZEFRQUFSZ0FBQUFzQVlRRUFBRVlBQUFBS0FIZ0JBQUJHQUFBQUN3QjhBUUFBUmdBQUFBb0EKQUFD
QVB3QUFnTDhBQUFBQWkwUWtCRkQvRlFBQUFBQlp3Z1FBQndBQUFGb0FBQUFHQUFRQUFBRDFBQUFB
SkFBQUFBQUFBQUFBQUFBQQpEd0FBQUFBQUFBQUVBQUFBQUFBQUFESUxBQUFBQUFBQUJBQUFBUEVB
QUFDb0FBQUFVUUFRRVFBQUFBQUFBQUFBQUFBQUFBOEFBQUFBCkFBQUFEQUFBQUR3UUFBQUFBQUFB
QUFBQVRXVmthV0ZWU1VWc1pXMWxiblE2T25KbGMzUnZjbVZEYjI1MFpYaDBRV1owWlhKUVlXbHUK
ZEdsdVp3QWNBQklRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBQUFOQUFZUkxoQUFB
QklBZEdocGN3QVNBQXNSQkFBQQpBQ2tRQUFCamIyNTBaWGgwQUE0QU9SRUZBQUFBQUFBQUFJd1FB
QUFDQUFZQThnQUFBREFBQUFBQUFBQUFBQUFBQUE4QUFBQTRBUUFBCkF3QUFBQ1FBQUFBQUFBQUFP
Z0FBZ0FBQUFBQTdBQUNBREFBQUFEd0FBSUFNQUFBQVdRQUFBQWNBV0FBQUFGa0FBQUFMQUZ3QUFB
QloKQUFBQUNnRFFBQUFBV1FBQUFBc0ExQUFBQUZrQUFBQUtBT2dBQUFCWkFBQUFDd0RzQUFBQVdR
QUFBQW9BaXdHTFZDUUVpMEFVVmxMLwowSVhBZERXTFRDUWdpekNKU0FpTFRDUVFnK3dRaTlTSkNv
dE1KQ1NKU2dTTFRDUW9pVW9JaTB3a0xJbEtESXRVSkJ5THlJdEdCRkwvCjBGN0NIQUFFQUFBQTlR
QUFBQ1FBQUFBQUFBQUFBQUFBQUVvQUFBQUFBQUFBSEFBQUFBQUFBQUF5Q3dBQUNnQUVBQVFBQUFE
eEFBQUEKMmdBQUFEMEFFQkVBQUFBQUFBQUFBQUFBQUFCS0FBQUFDZ0FBQUVZQUFBQmlFQUFBQUFB
QUFBQUFBRTFsWkdsaFEyOXVkSEp2YkhNNgpPbVJ5WVhkUVlYSjBBQndBRWhBQUFBQUFBQUFBQUFB
QUFBQUVBQUFBQUFBQUFBQUFBQUlBQUEwQUJoRmRFQUFBRWdCMGFHbHpBQkVBCkN4RUVBQUFBZEFB
QUFIQmhjblJKUkFBU0FBc1JDQUFBQUNrUUFBQmpiMjUwWlhoMEFBOEFDeEVNQUFBQURoQUFBSEps
WTNRQUVBQUwKRVJ3QUFBQjFBQUFBYzNSaGRHVUFEZ0E1RVFzQUFBQUFBQUFBYXhBQUFBNEFPUkZF
QUFBQUFBQUFBQ3NRQUFBQ0FBWUFBQUR5QUFBQQpTQUFBQUFBQUFBQUFBQUFBU2dBQUFEZ0JBQUFH
QUFBQVBBQUFBQUFBQUFBL0FBQ0FBQUFBQUVBQUFJQU5BQUFBUWdBQWdCRUFBQUJGCkFBQ0FGUUFB
QUVZQUFJQkdBQUFBUndBQWdBd0FBQUJmQUFBQUJ3QllBQUFBWHdBQUFBc0FYQUFBQUY4QUFBQUtB
UElBQUFCZkFBQUEKQ3dEMkFBQUFYd0FBQUFvQUFnRUFBRjhBQUFBTEFBWUJBQUJmQUFBQUNnQWNB
UUFBWHdBQUFBc0FJQUVBQUY4QUFBQUtBSXNCaTFRawpCSXRBRkZaUy85Q0Z3SFVHTXNCZXdod0Fp
MHdrSUl0VUpCeUxNRkdMVENRUVVvUHNFSXZVaVFxTFRDUW9pVW9FaTB3a0xJbEtDSXRNCkpEQ0pT
Z3lMVmdpTHlQL1NYc0ljQUFRQUFBRDFBQUFBSkFBQUFBQUFBQUFBQUFBQVRnQUFBQUFBQUFBY0FB
QUFBQUFBQURJTEFBQUsKQUFRQUJBQUFBUEVBQUFETEFBQUFRQUFRRVFBQUFBQUFBQUFBQUFBQUFF
NEFBQUFLQUFBQVNnQUFBR2dRQUFBQUFBQUFBQUFBVFdWawphV0ZEYjI1MGNtOXNjem82YUdsMFZH
VnpkRkJoY25RQUhBQVNFQUFBQUFBQUFBQUFBQUFBQUFRQUFBQUFBQUFBQUFBQUFnQUFEUUFHCkVX
Y1FBQUFTQUhSb2FYTUFFUUFMRVFRQUFBQjBBQUFBY0dGeWRFbEVBQkVBQ3hFSUFBQUFEaEFBQUdK
dmRXNWtjd0FRQUFzUkdBQUEKQUFnUUFBQndiMmx1ZEFBT0FEa1JDd0FBQUFBQUFBQnJFQUFBRGdB
NUVVZ0FBQUFBQUFBQUx4QUFBQUlBQmdBQThnQUFBRkFBQUFBQQpBQUFBQUFBQUFFNEFBQUE0QVFB
QUJ3QUFBRVFBQUFBQUFBQUFTZ0FBZ0FBQUFBQkxBQUNBRFFBQUFFMEFBSUFSQUFBQVRnQUFnQk1B
CkFBQlJBQUNBRndBQUFGQUFBSUJLQUFBQVVRQUFnQXdBQUFCa0FBQUFCd0JZQUFBQVpBQUFBQXNB
WEFBQUFHUUFBQUFLQU9NQUFBQmsKQUFBQUN3RG5BQUFBWkFBQUFBb0E4d0FBQUdRQUFBQUxBUGNB
QUFCa0FBQUFDZ0FNQVFBQVpBQUFBQXNBRUFFQUFHUUFBQUFLQUlzQgppMVFrQ0l0QUZGTC8wSVhB
ZFJlTERRQUFBQUNMRVl0RUpBU0pFSXRKQklsSUJNSUlBSXNRVm90MEpBaUx5SXRDREZiLzBJdkdY
c0lJCkFCSUFBQUJxQUFBQUJnQUVBQUFBOVFBQUFFUUFBQUFBQUFBQUFBQUFBRHdBQUFBQUFBQUFD
QUFBQUFBQUFBQXlDd0FBQUFBQUFBUUEKQUFBcUFBQUFEd0FBQUFBQUFBQUlBQUFBQUFBQUFESUxB
QUFBQUFRQUFBQUFBUEVBQUFDbUFBQUFRQUFRRVFBQUFBQUFBQUFBQUFBQQpBRHdBQUFBQUFBQUFP
UUFBQUdrUUFBQUFBQUFBQUFBQVRXVmthV0ZEYjI1MGNtOXNjem82Ym1GMGRYSmhiRk5wZW1VQUhB
QVNFQUFBCkFBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQUFBQUFBZ0FBRFFBR0VXY1FBQUFTQUhSb2FY
TUFFUUFMRVFnQUFBQjBBQUFBY0dGeWRFbEUKQUE0QU9SRUtBQUFBQUFBQUFHc1FBQUFPQURrUk5B
QUFBQUFBQUFBd0VBQUFBZ0FHQUFBQThnQUFBRkFBQUFBQUFBQUFBQUFBQUR3QQpBQUE0QVFBQUJ3
QUFBRVFBQUFBQUFBQUFWQUFBZ0FBQUFBQlZBQUNBREFBQUFGY0FBSUFRQUFBQVdBQUFnQ1FBQUFC
YkFBQ0FKd0FBCkFGb0FBSUE1QUFBQVd3QUFnQXdBQUFCcEFBQUFCd0I0QUFBQWFRQUFBQXNBZkFB
QUFHa0FBQUFLQU40QUFBQnBBQUFBQ3dEaUFBQUEKYVFBQUFBb0E3Z0FBQUdrQUFBQUxBUElBQUFC
cEFBQUFDZ0FJQVFBQWFRQUFBQXNBREFFQUFHa0FBQUFLQUlzQmkxQVlWdi9TM1VRawpISXRNSkN6
ZFdCQ0xkQ1FNM1VRa0pJc1EzVmdZaTFJRWlVZ0lnK3dRaTh5Sk1ZdDBKQ0NKY1FTTGRDUWtpWEVJ
aTNRa0tJbHhESXRNCkpCaFJpOGovMGw3Q0tBQUVBQUFBOVFBQUFDUUFBQUFBQUFBQUFBQUFBRThB
QUFBQUFBQUFLQUFBQUFBQUFBQXlDd0FBQmdBRUFBUUEKQUFEeEFBQUFBZ0VBQUV3QUVCRUFBQUFB
QUFBQUFBQUFBQUJQQUFBQUJnQUFBRXNBQUFCa0VBQUFBQUFBQUFBQUFFMWxaR2xoUTI5dQpkSEp2
YkhNNk9tUnlZWGRVYVcxbGJHbHVaVk5zYVdSbGNsUnlZV05yQUJ3QUVoQUFBQUFBQUFBQUFBQUFB
QUFFQUFBQUFBQUFBQUFBCkFBSUFBQTBBQmhGZEVBQUFFZ0IwYUdsekFCSUFDeEVFQUFBQUtSQUFB
R052Ym5SbGVIUUFEd0FMRVFnQUFBQU9FQUFBY21WamRBQVYKQUFzUkdBQUFBRUVBQUFCMGFXMWxU
RzloWkdWa0FCTUFDeEVnQUFBQVFRQUFBR1IxY21GMGFXOXVBQkFBQ3hFb0FBQUFkUUFBQUhOMApZ
WFJsQUE0QU9SRUdBQUFBQUFBQUFHMFFBQUFPQURrUlNRQUFBQUFBQUFBckVBQUFBZ0FHQUFBQThn
QUFBRUFBQUFBQUFBQUFBQUFBCkFFOEFBQUE0QVFBQUJRQUFBRFFBQUFBQUFBQUFYZ0FBZ0FBQUFB
QmZBQUNBQ0FBQUFHSUFBSUFUQUFBQVpBQUFnRXNBQUFCbEFBQ0EKREFBQUFHOEFBQUFIQUZnQUFB
QnZBQUFBQ3dCY0FBQUFid0FBQUFvQUdnRUFBRzhBQUFBTEFCNEJBQUJ2QUFBQUNnQXFBUUFBYndB
QQpBQXNBTGdFQUFHOEFBQUFLQUVRQkFBQnZBQUFBQ3dCSUFRQUFid0FBQUFvQWk4SEhBQUFBQUFE
REJBQUFBSGNBQUFBR0FBUUFBQUQxCkFBQUFKQUFBQUFBQUFBQUFBQUFBQ1FBQUFBQUFBQUFBQUFB
QUFBQUFBRElMQUFBQ0FBQUFCQUFBQVBFQUFBQ0JBQUFBVGdBUUVRQUEKQUFBQUFBQUFBQUFBQUFr
QUFBQUNBQUFBQ0FBQUFLY1FBQUFBQUFBQUFBQUFUV1ZrYVdGTVpXZGhZM2xEYjI1MGNtOXNjem82
VFdWawphV0ZNWldkaFkzbERiMjUwY205c2N3QWNBQklRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFDQUtBQUFOQUFZUnBSQUFBQklBCmRHaHBjd0FDQUFZQUFBQUFEQUFBQUhRQUFBQUhBRmdB
QUFCMEFBQUFDd0JjQUFBQWRBQUFBQW9BQUFBQUFBQUFBQUFBQUFBQUFBQUEKQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUI1QUFBQUJnQUVBQUFBWHdBQUFBWUFDQUFBQUc4QUFBQUdBQXdBQUFCa0FBQUFC
Z0FRQUFBQQphUUFBQUFZQUZBQUFBSHNBQUFBR0FCZ0FBQUI4QUFBQUJnREhBUUFBQUFEREFnQUFB
RElBQUFBR0FBUUFBQUQxQUFBQUpBQUFBQUFBCkFBQUFBQUFBQndBQUFBQUFBQUFBQUFBQUFBQUFB
RElMQUFBQUFBQUFCQUFBQVBFQUFBQ0NBQUFBVHdBUUVRQUFBQUFBQUFBQUFBQUEKQUFjQUFBQUFB
QUFBQmdBQUFLY1FBQUFBQUFBQUFBQUFUV1ZrYVdGTVpXZGhZM2xEYjI1MGNtOXNjem82ZmsxbFpH
bGhUR1ZuWVdONQpRMjl1ZEhKdmJITUFIQUFTRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QWdDZ0FBRFFBR0VhVVFBQUFTQUhSb2FYTUFBZ0FHCkFBQUFEQUFBQUlFQUFBQUhBRmdBQUFDQkFB
QUFDd0JjQUFBQWdRQUFBQW9BaThISEFBQUFBQUREQkFBQUFJa0FBQUFHQUFRQUFBRDEKQUFBQUpB
QUFBQUFBQUFBQUFBQUFDUUFBQUFBQUFBQUFBQUFBQUFBQUFESUxBQUFDQUFBQUJBQUFBUEVBQUFD
RkFBQUFVZ0FRRVFBQQpBQUFBQUFBQUFBQUFBQWtBQUFBQ0FBQUFDQUFBQUZnWEFBQUFBQUFBQUFB
QVRXVmthV0ZUYUdGeVpXUlZTVU52Ym5SeWIyeHpPanBOClpXUnBZVk5vWVhKbFpGVkpRMjl1ZEhK
dmJITUFIQUFTRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdDZ0FBRFFBR0VWWVgKQUFB
U0FIUm9hWE1BQWdBR0FBQUFBQXdBQUFDR0FBQUFCd0JZQUFBQWhnQUFBQXNBWEFBQUFJWUFBQUFL
QUFBQUFBQUFBQUFBQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBaXdBQUFBWUFCQUFB
QUY4QUFBQUdBQWdBQUFCdkFBQUFCZ0FNQUFBQVpBQUFBQVlBCkVBQUFBR2tBQUFBR0FCUUFBQUNO
QUFBQUJnQVlBQUFBamdBQUFBWUF4d0VBQUFBQXd3SUFBQUF5QUFBQUJnQUVBQUFBOVFBQUFDUUEK
QUFBQUFBQUFBQUFBQUFjQUFBQUFBQUFBQUFBQUFBQUFBQUF5Q3dBQUFBQUFBQVFBQUFEeEFBQUFo
Z0FBQUZNQUVCRUFBQUFBQUFBQQpBQUFBQUFBSEFBQUFBQUFBQUFZQUFBQllGd0FBQUFBQUFBQUFB
RTFsWkdsaFUyaGhjbVZrVlVsRGIyNTBjbTlzY3pvNmZrMWxaR2xoClUyaGhjbVZrVlVsRGIyNTBj
bTlzY3dBY0FCSVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBS0FBQU5BQVlSVmhjQUFC
SUEKZEdocGN3QUNBQVlBQUFBTUFBQUFrd0FBQUFjQVdBQUFBSk1BQUFBTEFGd0FBQUNUQUFBQUNn
RDJSQ1FFQVZhTDhjY0dBQUFBQUhRSgpWdWdBQUFBQWc4UUVpOFpld2dRQUNnQUFBRElBQUFBR0FC
SUFBQUE4QUFBQUZBQUVBQUFBOVFBQUFFUUFBQUFBQUFBQUFBQUFBQjhBCkFBQUFBQUFBQkFBQUFB
QUFBQUF5Q3dBQUNBQUFBQVFBQUFBR0FBQUFGZ0FBQUFBQUFBQUVBQUFBQUFBQUFESUxBQUFDQUFR
QUFBQUEKQVBFQUFBQ0tBQUFBVndBUUVRQUFBQUFBQUFBQUFBQUFBQjhBQUFBSUFBQUFIQUFBQUtz
UUFBQUFBQUFBQUFBQVRXVmthV0ZNWldkaApZM2xEYjI1MGNtOXNjem82WUhOallXeGhjaUJrWld4
bGRHbHVaeUJrWlhOMGNuVmpkRzl5SndBY0FCSVFBQUFBQUFBQUFBQUFBQUFBCkJBQUFBQUFBQUFB
QUFDQUNBQUFOQUFZUnBSQUFBQklBZEdocGN3QUNBQVlBQUFBTUFBQUFlQUFBQUFjQWVBQUFBSGdB
QUFBTEFId0EKQUFCNEFBQUFDZ0QyUkNRRUFWYUw4Y2NHQUFBQUFIUUpWdWdBQUFBQWc4UUVpOFpl
d2dRQUNnQUFBRElBQUFBR0FCSUFBQUE4QUFBQQpGQUFFQUFBQTlRQUFBRVFBQUFBQUFBQUFBQUFB
QUI4QUFBQUFBQUFBQkFBQUFBQUFBQUF5Q3dBQUNBQUFBQVFBQUFBR0FBQUFGZ0FBCkFBQUFBQUFF
QUFBQUFBQUFBRElMQUFBQ0FBUUFBQUFBQVBFQUFBQ01BQUFBV1FBUUVRQUFBQUFBQUFBQUFBQUFB
QjhBQUFBSUFBQUEKSEFBQUFGd1hBQUFBQUFBQUFBQUFUV1ZrYVdGVGFHRnlaV1JWU1VOdmJuUnli
Mnh6T2pwZ2MyTmhiR0Z5SUdSbGJHVjBhVzVuSUdSbApjM1J5ZFdOMGIzSW5BQndBRWhBQUFBQUFB
QUFBQUFBQUFBQUVBQUFBQUFBQUFBQUFJQUlBQUEwQUJoRldGd0FBRWdCMGFHbHpBQUlBCkJnQU1B
QUFBaWdBQUFBY0FlQUFBQUlvQUFBQUxBSHdBQUFDS0FBQUFDZ0M1QVFBQUFEdkJkVGlFRFFBQUFB
QjFLZ2tOQUFBQUFHb0UKNkFBQUFBQ0R4QVNGd0hRTXh3QUFBQUFBb3dBQUFBRER4d1VBQUFBQUFB
QUFBS0VBQUFBQXc3a0NBQUFBTzhGMU9JUU5BQUFBQUhVcQpDUTBBQUFBQWFnVG9BQUFBQUlQRUJJ
WEFkQXpIQUFBQUFBQ2pBQUFBQU1QSEJRQUFBQUFBQUFBQW9RQUFBQURETThEREN3QUFBS3dBCkFB
QUdBQk1BQUFDc0FBQUFCZ0FhQUFBQXFRQUFBQlFBSndBQUFIY0FBQUFHQUN3QUFBQ29BQUFBQmdB
ekFBQUFxQUFBQUFZQVBBQUEKQUtnQUFBQUdBRXdBQUFDc0FBQUFCZ0JVQUFBQXJBQUFBQVlBV3dB
QUFLa0FBQUFVQUdnQUFBQ0pBQUFBQmdCdEFBQUFwUUFBQUFZQQpkQUFBQUtVQUFBQUdBSDBBQUFD
bEFBQUFCZ0FFQUFBQTlRQUFBQ1FBQUFBQUFBQUFBQUFBQUlVQUFBQUFBQUFBQUFBQUFBQUFBQUF5
CkN3QUFBQUFBQUFRQUFBRHhBQUFBcXdBQUFEWUFEeEVBQUFBQUFBQUFBQUFBQUFDRkFBQUFBQUFB
QUlRQUFBRGhGd0FBQUFBQUFBQUEKQUdOdmJuUnliMnh6Um05eVZHaGxiV1VBSEFBU0VBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdBQUV3QUdFWFFBQUFBUgpBSFJvWlcxbFUzUjViR1VB
R3dBTUVkNFhBQUFBQUFBQUFBQnNaV2RoWTNsRGIyNTBjbTlzY3dBZEFBd1IzeGNBQUFBQUFBQUFB
SE5vCllYSmxaRlZKUTI5dWRISnZiSE1BQWdBR0FBRHlBQUFBa0FBQUFBQUFBQUFBQUFBQWhRQUFB
RGdCQUFBUEFBQUFoQUFBQUFBQUFBQU4KQUFDQUFBQUFBQTRBQUlBSkFBQUFEd0FBZ0RBQUFBQWJB
QUNBTVFBQUFBOEFBSUE3QUFBQUVBQUFnRUFBQUFBYkFBQ0FRUUFBQUJNQQpBSUJLQUFBQUZBQUFn
SEVBQUFBYkFBQ0FjZ0FBQUJRQUFJQjhBQUFBRlFBQWdJRUFBQUFiQUFDQWdnQUFBQm9BQUlDRUFB
QUFHd0FBCmdBd0FBQUNpQUFBQUJ3QllBQUFBb2dBQUFBc0FYQUFBQUtJQUFBQUtBS3NBQUFDb0FB
QUFDd0N2QUFBQXFBQUFBQW9BeUFBQUFLVUEKQUFBTEFNd0FBQUNsQUFBQUNnRHNBQUFBb2dBQUFB
c0E4QUFBQUtJQUFBQUtBSVBzQ0ZhTGRDUWNoZlowSm90RUpCVG9BQUFBQUl0TQpKQkNMRUl0U0VG
R05UQ1FJVVl2SS85S0xDSWtPaTFBRWlWWUVYb1BFQ01NUkFBQUFvZ0FBQUJRQUJBQUFBUFVBQUFC
RUFBQUFBQUFBCkFBQUFBQUEzQUFBQUNBQUFBQkFBQUFBQUFBQUFNZ3NBQUFRQUFBQUVBQUFBQkFB
QUFDOEFBQUFJQUFBQUVBQUFBQUFBQUFBeUN3QUEKQUFBRUFBQUFBQUR4QUFBQXd3QUFBRG9BRUJF
QUFBQUFBQUFBQUFBQUFBQTNBQUFBQkFBQUFETUFBQURqRndBQUFBQUFBQUFBQUZkTApUV1ZoYzNW
eVpVMWxaR2xoVlVsUVlYSjBBQndBRWhBSUFBQUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFBQUFBQUlB
QUJFQUN4RUVBQUFBCmRBQUFBSEJoY25SSlJBQVZBQXNSQ0FBQUFIUUFBQUIwYUdWdFpWTjBlV3hs
QUJFQUN4RU1BQUFBZHhRQUFHSnZkVzVrY3dBV0FBc1IKRUFBQUFKQVRBQUJ1WVhSMWNtRnNVMmw2
WlFBT0FEa1JKZ0FBQUFBQUFBQnBFQUFBQWdBR0FBRHlBQUFBT0FBQUFBQUFBQUFBQUFBQQpOd0FB
QURnQkFBQUVBQUFBTEFBQUFBQUFBQUFlQUFDQUJBQUFBQjhBQUlBTUFBQUFJQUFBZ0RNQUFBQWhB
QUNBREFBQUFMRUFBQUFICkFIZ0FBQUN4QUFBQUN3QjhBQUFBc1FBQUFBb0FDd0VBQUxFQUFBQUxB
QThCQUFDeEFBQUFDZ0FrQVFBQXNRQUFBQXNBS0FFQUFMRUEKQUFBS0FJdEVKQWhXNkFBQUFBQ0xU
Q1FraTFRa0lJc3dVWXRNSkJSU2crd1FpOVNKQ290TUpDeUpTZ1NMVENRd2lVb0lpMHdrTklsSwpE
SXRVSkNDTHlJdEdERkwvMEY3REJnQUFBS0lBQUFBVUFBUUFBQUQxQUFBQUpBQUFBQUFBQUFBQUFB
QUFSQUFBQUFBQUFBQWdBQUFBCkFBQUFBRElMQUFBRkFBUUFCQUFBQVBFQUFBQzlBQUFBT2dBUUVR
QUFBQUFBQUFBQUFBQUFBRVFBQUFBRkFBQUFRZ0FBQU9VWEFBQUEKQUFBQUFBQUFWMHRJYVhSVVpY
TjBUV1ZrYVdGVlNWQmhjblFBSEFBU0VBQUFBQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFBQUFBQWdB
QQpFUUFMRVFRQUFBQjBBQUFBY0dGeWRFbEVBQlVBQ3hFSUFBQUFkQUFBQUhSb1pXMWxVM1I1YkdV
QUVRQUxFUXdBQUFBT0VBQUFZbTkxCmJtUnpBQkFBQ3hFY0FBQUFDQkFBQUhCdmFXNTBBQTRBT1JG
QUFBQUFBQUFBQUdnUUFBQUNBQVlBQUFBQThnQUFBREFBQUFBQUFBQUEKQUFBQUFFUUFBQUE0QVFB
QUF3QUFBQ1FBQUFBQUFBQUFKQUFBZ0FBQUFBQWxBQUNBUWdBQUFDWUFBSUFNQUFBQXRnQUFBQWNB
V0FBQQpBTFlBQUFBTEFGd0FBQUMyQUFBQUNnRGxBQUFBdGdBQUFBc0E2UUFBQUxZQUFBQUtBQUFC
QUFDMkFBQUFDd0FFQVFBQXRnQUFBQW9BCmkwUWtDRmJvQUFBQUFJdE1KQ1NMTUZHTFRDUVlnK3dR
aTlTSkNvdE1KQ3lKU2dTTFRDUXdpVW9JaTB3a05JbEtESXRVSkNTTFRDUWMKVW90V0JGR0x5UC9T
WHNNR0FBQUFvZ0FBQUJRQUJBQUFBUFVBQUFBa0FBQUFBQUFBQUFBQUFBQkVBQUFBQUFBQUFDQUFB
QUFBQUFBQQpNZ3NBQUFVQUJBQUVBQUFBOFFBQUFNd0FBQUEzQUJBUkFBQUFBQUFBQUFBQUFBQUFS
QUFBQUFVQUFBQkNBQUFBNXhjQUFBQUFBQUFBCkFBQlhTMFJ5WVhkTlpXUnBZVlZKVUdGeWRBQWNB
QklRQUFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFBQUFBQUNBQUFSQUFzUkJBQUEKQUhRQUFBQndZ
WEowU1VRQUZRQUxFUWdBQUFCMEFBQUFkR2hsYldWVGRIbHNaUUFTQUFzUkRBQUFBQ2tRQUFCamIy
NTBaWGgwQUE4QQpDeEVRQUFBQURoQUFBSEpsWTNRQUVBQUxFU0FBQUFCMUFBQUFjM1JoZEdVQURn
QTVFVUFBQUFBQUFBQUFZaEFBQUFJQUJnRHlBQUFBCk1BQUFBQUFBQUFBQUFBQUFSQUFBQURnQkFB
QURBQUFBSkFBQUFBQUFBQUFwQUFDQUFBQUFBQ29BQUlCQ0FBQUFLd0FBZ0F3QUFBQzcKQUFBQUJ3
QllBQUFBdXdBQUFBc0FYQUFBQUxzQUFBQUtBUFFBQUFDN0FBQUFDd0Q0QUFBQXV3QUFBQW9BREFF
QUFMc0FBQUFMQUJBQgpBQUM3QUFBQUNnQ0xSQ1FFVnVnQUFBQUEyVVFrS0l0TUpDeUxNRkdMVENR
VWcrd2czVndrR0l2VTJVUWtSTjFjSkJDSkNvdE1KRGlKClNnU0xUQ1E4aVVvSWkwd2tRSWxLREl0
VUpEQ0x5SXRHQ0ZMLzBGN0RCZ0FBQUtJQUFBQVVBQVFBQUFEMUFBQUFKQUFBQUFBQUFBQUEKQUFB
QVR3QUFBQUFBQUFBb0FBQUFBQUFBQURJTEFBQUZBQVFBQkFBQUFQRUFBQUFDQVFBQVBBQVFFUUFB
QUFBQUFBQUFBQUFBQUU4QQpBQUFGQUFBQVRRQUFBT2tYQUFBQUFBQUFBQUFBVjB0RWNtRjNUV1Zr
YVdGVGJHbGtaWEpVY21GamF3QWNBQklRQUFBQUFBQUFBQUFBCkFBQUFCQUFBQUFBQUFBQUFBQUFD
QUFBVkFBc1JCQUFBQUhRQUFBQjBhR1Z0WlZOMGVXeGxBQklBQ3hFSUFBQUFLUkFBQUdOdmJuUmwK
ZUhRQUR3QUxFUXdBQUFBT0VBQUFjbVZqZEFBVkFBc1JIQUFBQUVBQUFBQjBhVzFsVEc5aFpHVmtB
QllBQ3hFZ0FBQUFRQUFBQUdOMQpjbkpsYm5SVWFXMWxBQk1BQ3hFa0FBQUFRQUFBQUdSMWNtRjBh
Vzl1QUJBQUN4RW9BQUFBZFFBQUFITjBZWFJsQUE0QU9SRkxBQUFBCkFBQUFBR1FRQUFBQ0FBWUFB
QUR5QUFBQU1BQUFBQUFBQUFBQUFBQUFUd0FBQURnQkFBQURBQUFBSkFBQUFBQUFBQUF1QUFDQUFB
QUEKQUM4QUFJQk5BQUFBTUFBQWdBd0FBQURBQUFBQUJ3QllBQUFBd0FBQUFBc0FYQUFBQU1BQUFB
QUtBQ29CQUFEQUFBQUFDd0F1QVFBQQp3QUFBQUFvQVJBRUFBTUFBQUFBTEFFZ0JBQURBQUFBQUNn
QUVBQUFBOFFBQUFCSUFBQUFRQUF3UmRRQUFBQUFBQUFBQUFDUlRNUUFBCkFCUUFBQUNzQUFBQUN3
QVlBQUFBckFBQUFBb0FCQUFBQUY0QUZSVjUwUzlMUFRrUFI1ZVlHQjhneVpCUUJBQUFBR002WEdO
NVozZHAKYmx4b2IyMWxYR050WVhKeWFXNWNkMlZpYTJsMFluVnBiR1JjYkdsaVhIZGxZbXRwZEhO
NWMzUmxiV2x1ZEdWeVptRmpaUzUyWXpndwpMbkJrWWdEeThVQmpiMjF3TG1sa0o4WnVBUC8vQUFB
REFFQm1aV0YwTGpBd0FRQUFBUC8vQUFBREFDNWtjbVZqZEhabEFBQUFBQUVBCkFBQURBY01BQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQzVrWldKMVp5UlRBQUFBQUFJQUFBQURBZmdkQUFBQ0FBQUFBQUFB
QUFBQUFBQUEKQUM1eVpHRjBZUUFBQUFBQUFBTUFBQUFEQVFRQUFBQUFBQUFBQVljQjF3QUFBZ0FB
QUFBQUFBQUVBQUFBQUFBQUFBTUFBQUFDQUM1eQpaR0YwWVFBQUFBQUFBQVFBQUFBREFRUUFBQUFB
QUFBQVpXZTh1QUFBQWdBQUFBQUFBQUJHQUFBQUFBQUFBQVFBQUFBQ0FDNXlaR0YwCllRQUFBQUFB
QUFVQUFBQURBUVFBQUFBQUFBQUFaT0M5YndBQUFnQUFBQUFBQUFDUkFBQUFBQUFBQUFVQUFBQUNB
QzV5WkdGMFlRQUEKQUFBQUFBWUFBQUFEQVFRQUFBQUFBQUFBaThnSnFnQUFBZ0FBQUFBQUFBQy9B
QUFBQUFBQUFBWUFBQUFDQUM1eVpHRjBZUUFBQUFBQQpBQWNBQUFBREFRUUFBQUFBQUFBQVY1ZGlq
d0FBQWdBQUFBQUFBQUR0QUFBQUFBQUFBQWNBQUFBQ0FDNXlaR0YwWVFBQUFBQUFBQWdBCkFBQURB
UVFBQUFBQUFBQUFNdkRlTndBQUFnQUFBQUFBQUFBbkFRQUFBQUFBQUFnQUFBQUNBQzV5WkdGMFlR
QUFBQUFBQUFrQUFBQUQKQVFRQUFBQUFBQUFBVjVkaWp3QUFBZ0FBQUFBQUFBQlRBUUFBQUFBQUFB
a0FBQUFDQUM1MFpYaDBBQUFBQUFBQUFBb0FBQUFEQVFvQQpBQUFBQUFBQWJuTTNld0FBQWdBQUFD
NWtaV0oxWnlSVEFBQUFBQXNBQUFBREFlUUFBQUFGQUFBQUFBQUFBQW9BQlFBQUFBQUFBQUNMCkFR
QUFBQUFBQUFvQUlBQUNBQzUwWlhoMEFBQUFBQUFBQUF3QUFBQURBUW9BQUFBQUFBQUF2eU9xTVFB
QUFnQUFBQzVrWldKMVp5UlQKQUFBQUFBMEFBQUFEQWZBQUFBQUZBQUFBQUFBQUFBd0FCUUFBQUFB
QUFBRExBUUFBQUFBQUFBd0FJQUFDQUFBQUFBRDVBUUFBQUFBQQpBQUFBQUFBQ0FDNTBaWGgwQUFB
QUFBQUFBQTRBQUFBREFRb0FBQUFBQUFBQVVBc2U5QUFBQWdBQUFDNWtaV0oxWnlSVEFBQUFBQThB
CkFBQURBZkFBQUFBRkFBQUFBQUFBQUE0QUJRQUFBQUFBQUFBREFnQUFBQUFBQUE0QUlBQUNBQzUw
WlhoMEFBQUFBQUFBQUJBQUFBQUQKQVFjQUFBQUJBQUFBcXVHTHdBQUFBZ0FBQUM1a1pXSjFaeVJU
QUFBQUFCRUFBQUFEQWRnQUFBQUZBQUFBQUFBQUFCQUFCUUFBQUFBQQpBQUF2QWdBQUFBQUFBQkFB
SUFBQ0FDNXlaR0YwWVFBQUFBQUFBQklBQUFBREFSd0FBQUFIQUFBQUFBQUFBQUFBQWdBQUFBQUFB
QUJJCkFnQUFBQUFBQUJJQUFBQUNBQUFBQUFCZkFnQUFBQUFBQUFBQUlBQUNBQUFBQUFCOEFnQUFB
QUFBQUFBQUlBQnBBVE1BQUFBQ0FBQUEKQUFBQUFBQUFBQUFBQUFBQUFBQ1pBZ0FBQUFBQUFBQUFJ
QUFDQUM1MFpYaDBBQUFBQUFBQUFCTUFBQUFEQVI4QUFBQUNBQUFBdTBqegptZ0FBQWdBQUFDNWta
V0oxWnlSVEFBQUFBQlFBQUFBREFkd0FBQUFEQUFBQUFBQUFBQk1BQlFBQUFBQUFBQUNrQWdBQUFB
QUFBQk1BCklBQUNBQUFBQUFEQkFnQUFBQUFBQUFBQUlBQUNBQzUwWlhoMEFBQUFBQUFBQUJVQUFB
QURBUWtBQUFBQkFBQUFOT3ZiV1FBQUFnQUEKQUM1a1pXSjFaeVJUQUFBQUFCWUFBQUFEQWJBQUFB
QURBQUFBQUFBQUFCVUFCUUFBQUFBQUFBRE9BZ0FBQUFBQUFCVUFJQUFDQUM1MApaWGgwQUFBQUFB
QUFBQmNBQUFBREFaZ0FBQUFHQUFBQThERTVwd0FBQVFBQUFDNWtaV0oxWnlSVEFBQUFBQmdBQUFB
REFiZ0JBQUFQCkFBQUFBQUFBQUJjQUJRQUFBQUFBQUFEbkFnQUFBQUFBQUJjQUlBQUNBQUFBQUFB
dUF3QUFBQUFBQUFBQUFBQUNBQzV5WkdGMFlRQUEKQUFBQUFCa0FBQUFEQVFRQUFBQUFBQUFBZHJY
bGpRQUFBZ0FBQUFBQUFBQkhBd0FBQUFBQUFCa0FBQUFDQUM1eVpHRjBZUUFBQUFBQQpBQm9BQUFB
REFRUUFBQUFBQUFBQVZqWmRZQUFBQWdBQUFBQUFBQUJYQXdBQUFBQUFBQm9BQUFBQ0FBQUFBQUJu
QXdBQUFBQUFBQUFBCkFBQUNBQzV5WkdGMFlRQUFBQUFBQUJzQUFBQURBUVFBQUFBQUFBQUFBQUFB
QUFBQUFnQUFBQUFBQUFDRUF3QUFBQUFBQUJzQUFBQUMKQUFBQUFBQ1VBd0FBQUFBQUFBQUFBQUFD
QUFBQUFBQ3BBd0FBQUFBQUFBQUFBQUFDQUFBQUFBQytBd0FBQUFBQUFBQUFBQUFDQUM1MApaWGgw
QUFBQUFBQUFBQndBQUFBREFROEFBQUFCQUFBQXYvNUxod0FBQVFBQUFDNWtaV0oxWnlSVEFBQUFB
QjBBQUFBREFSZ0JBQUFICkFBQUFBQUFBQUJ3QUJRQUFBQUFBQUFEWkF3QUFBQUFBQUJ3QUlBQUNB
QUFBQUFBYkJBQUFBQUFBQUFBQUFBQUNBQzUwWlhoMEFBQUEKQUFBQUFCNEFBQUFEQVVvQUFBQUFB
QUFBd0R0WWdRQUFBUUFBQUM1a1pXSjFaeVJUQUFBQUFCOEFBQUFEQVdRQkFBQUpBQUFBQUFBQQpB
QjRBQlFBQUFBQUFBQUE1QkFBQUFBQUFBQjRBSUFBQ0FDNTBaWGgwQUFBQUFBQUFBQ0FBQUFBREFV
NEFBQUFBQUFBQUIwdDQvQUFBCkFRQUFBQzVrWldKMVp5UlRBQUFBQUNFQUFBQURBVndCQUFBSkFB
QUFBQUFBQUNBQUJRQUFBQUFBQUFCeUJBQUFBQUFBQUNBQUlBQUMKQUM1MFpYaDBBQUFBQUFBQUFD
SUFBQUFEQVR3QUFBQUJBQUFBdUd5ZzdnQUFBUUFBQUM1a1pXSjFaeVJUQUFBQUFDTUFBQUFEQVZn
QgpBQUFKQUFBQUFBQUFBQ0lBQlFBQUFBQUFBQUNxQkFBQUFBQUFBQ0lBSUFBQ0FBQUFBQURZQkFB
QUFBQUFBQUFBQUFBQ0FDNTBaWGgwCkFBQUFBQUFBQUNRQUFBQURBVThBQUFBQUFBQUE1SkRVa1FB
QUFRQUFBQzVrWldKMVp5UlRBQUFBQUNVQUFBQURBWVFCQUFBSkFBQUEKQUFBQUFDUUFCUUFBQUFB
QUFBRHFCQUFBQUFBQUFDUUFJQUFDQUM1MFpYaDBBQUFBQUFBQUFDWUFBQUFEQVFrQUFBQUJBQUFB
Tk92YgpXUUFBQWdBQUFDNWtaV0oxWnlSVEFBQUFBQ2NBQUFBREFid0FBQUFEQUFBQUFBQUFBQ1lB
QlFBQUFBQUFBQUF6QlFBQUFBQUFBQ1lBCklBQUNBQzV5WkdGMFlRQUFBQUFBQUNnQUFBQURBUndB
QUFBSEFBQUFBQUFBQUFBQUFnQUFBQUFBQUFCU0JRQUFBQUFBQUNnQUFBQUMKQUFBQUFBQnZCUUFB
QUFBQUFBQUFJQUFDQUFBQUFBQ1NCUUFBQUFBQUFBQUFJQUJwQVhnQUFBQUNBQUFBQUFBQUFBQUFB
QUFBQUFBQQpBQUMxQlFBQUFBQUFBQUFBSUFBQ0FBQUFBQUQwQlFBQUFBQUFBQUFBSUFBQ0FDNTBa
WGgwQUFBQUFBQUFBQ2tBQUFBREFRY0FBQUFCCkFBQUFxdUdMd0FBQUFnQUFBQzVrWldKMVp5UlRB
QUFBQUNvQUFBQURBYndBQUFBREFBQUFBQUFBQUNrQUJRQUFBQUFBQUFBeEJnQUEKQUFBQUFDa0FJ
QUFDQUM1MFpYaDBBQUFBQUFBQUFDc0FBQUFEQVFrQUFBQUJBQUFBTk92YldRQUFBZ0FBQUM1a1pX
SjFaeVJUQUFBQQpBQ3dBQUFBREFjQUFBQUFEQUFBQUFBQUFBQ3NBQlFBQUFBQUFBQUJRQmdBQUFB
QUFBQ3NBSUFBQ0FDNXlaR0YwWVFBQUFBQUFBQzBBCkFBQURBUndBQUFBSEFBQUFBQUFBQUFBQUFn
QUFBQUFBQUFCeEJnQUFBQUFBQUMwQUFBQUNBQUFBQUFDUUJnQUFBQUFBQUFBQUlBQUMKQUFBQUFB
QzFCZ0FBQUFBQUFBQUFJQUJwQVlvQUFBQUNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRGFCZ0FBQUFB
QUFBQUFJQUFDQUFBQQpBQUFiQndBQUFBQUFBQUFBSUFBQ0FDNTBaWGgwQUFBQUFBQUFBQzRBQUFB
REFRY0FBQUFCQUFBQXF1R0x3QUFBQWdBQUFDNWtaV0oxClp5UlRBQUFBQUM4QUFBQURBY0FBQUFB
REFBQUFBQUFBQUM0QUJRQUFBQUFBQUFCYUJ3QUFBQUFBQUM0QUlBQUNBQzUwWlhoMEFBQUEKQUFB
QUFEQUFBQUFEQVI4QUFBQUNBQUFBdTBqem1nQUFBZ0FBQUM1a1pXSjFaeVJUQUFBQUFERUFBQUFE
QWVRQUFBQURBQUFBQUFBQQpBREFBQlFBQUFBQUFBQUI3QndBQUFBQUFBREFBSUFBQ0FDNTBaWGgw
QUFBQUFBQUFBRElBQUFBREFSOEFBQUFDQUFBQXUwanptZ0FBCkFnQUFBQzVrWldKMVp5UlRBQUFB
QURNQUFBQURBZVFBQUFBREFBQUFBQUFBQURJQUJRQUFBQUFBQUFDZUJ3QUFBQUFBQURJQUlBQUMK
QUM1MFpYaDBBQUFBQUFBQUFEUUFBQUFEQVlVQUFBQU9BQUFBcE9QTnpRQUFBUUFBQUM1a1pXSjFa
eVJUQUFBQUFEVUFBQUFEQVh3QgpBQUFKQUFBQUFBQUFBRFFBQlFBQUFBQUFBQUREQndBQUFBQUFB
RFFBSUFBREFDNWljM01BQUFBQUFBQUFBRFlBQUFBREFRUUFBQUFBCkFBQUFBQUFBQUFBQUFnQUFB
QUFBQUFEdUJ3QUFBQUFBQURZQUFBQURBQzVpYzNNQUFBQUFBQUFBQURjQUFBQURBUVFBQUFBQUFB
QUEKQUFBQUFBQUFBZ0FBQUFBQUFBQkxDQUFBQUFBQUFEY0FBQUFEQUFBQUFBQ2tDQUFBQUFBQUFB
QUFJQUFDQUM1aWMzTUFBQUFBQUFBQQpBRGdBQUFBREFRUUFBQUFBQUFBQUFBQUFBQUFBQWdBQUFB
QUFBQUN4Q0FBQUFBQUFBRGdBQUFBREFDNTBaWGgwQUFBQUFBQUFBRGtBCkFBQURBVGNBQUFBQkFB
QUE4ckcxRWdBQUFRQUFBQzVrWldKMVp5UlRBQUFBQURvQUFBQURBVndCQUFBSEFBQUFBQUFBQURr
QUJRQUEKQUFBQUFBRG9DQUFBQUFBQUFEa0FJQUFDQUM1MFpYaDBBQUFBQUFBQUFEc0FBQUFEQVVR
QUFBQUJBQUFBRUxxRDhnQUFBUUFBQUM1awpaV0oxWnlSVEFBQUFBRHdBQUFBREFUQUJBQUFIQUFB
QUFBQUFBRHNBQlFBQUFBQUFBQUQrQ0FBQUFBQUFBRHNBSUFBQ0FDNTBaWGgwCkFBQUFBQUFBQUQw
QUFBQURBVVFBQUFBQkFBQUFCU0JOcmdBQUFRQUFBQzVrWldKMVp5UlRBQUFBQUQ0QUFBQURBVHdC
QUFBSEFBQUEKQUFBQUFEMEFCUUFBQUFBQUFBQVVDUUFBQUFBQUFEMEFJQUFDQUM1MFpYaDBBQUFB
QUFBQUFEOEFBQUFEQVU4QUFBQUJBQUFBVjVVTQpJQUFBQVFBQUFDNWtaV0oxWnlSVEFBQUFBRUFB
QUFBREFYUUJBQUFIQUFBQUFBQUFBRDhBQlFBQUFBQUFBQUFuQ1FBQUFBQUFBRDhBCklBQUNBQzVr
WldKMVp5UlRBQUFBQUVFQUFBQURBU0FBQUFBQ0FBQUFBQUFBQURnQUJRQUFBQzVrWldKMVp5UlVB
QUFBQUVJQUFBQUQKQVdRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUQ4SkFBQS9ZbUZqYTJkeWIzVnVa
RkpoWkdsMWMwQk5aV1JwWVZOb1lYSmxaRlZKVm05cwpkVzFsVTJ4cFpHVnlRbUZqYTJkeWIzVnVa
RVZzWlcxbGJuUkFRREJKUWdBL1ltRmphMmR5YjNWdVpGTjBjbTlyWlZSb2FXTnJibVZ6CmMwQk5a
V1JwWVZOb1lYSmxaRlZKVm05c2RXMWxVMnhwWkdWeVFtRmphMmR5YjNWdVpFVnNaVzFsYm5SQVFE
QkpRZ0EvZEhKaFkydEkKWldsbmFIUkFUV1ZrYVdGVGFHRnlaV1JWU1ZScGJXVnNhVzVsVTJ4cFpH
VnlRRUF3U1VJQVAzUnlZV05yVDJabWMyVjBRRTFsWkdsaApVMmhoY21Wa1ZVbFVhVzFsYkdsdVpW
TnNhV1JsY2tCQU1FbENBRDkwYUhWdFlsSmhaR2wxYzBCTlpXUnBZVk5vWVhKbFpGVkpWR2x0ClpX
eHBibVZUYkdsa1pYSlVhSFZ0WWtWc1pXMWxiblJBUURCSlFnQS9kSEpoWTJ0U1lXUnBkWE5BVFdW
a2FXRlRhR0Z5WldSVlNWWnYKYkhWdFpWTnNhV1JsY2tCQU1FbENBRDkwYUhWdFlsSmhaR2wxYzBC
TlpXUnBZVk5vWVhKbFpGVkpWbTlzZFcxbFUyeHBaR1Z5VkdoMQpiV0pGYkdWdFpXNTBRRUF3U1VJ
QVAzTmxkRk4wWVhSbFFFMWxaR2xoVlVsRmJHVnRaVzUwUUVCUlFVVllWelJYUzAxbFpHbGhRMjl1
CmRISnZiR3hsY2xSb1pXMWxVM1JoZEdWQVFFQmFBRDl6WlhSVWFXMWxURzloWkdWa1FFMWxaR2xo
VlVsVWFXMWxiR2x1WlZOc2FXUmwKY2tCQVVVRkZXRTVBV2dCZlgyWnNkSFZ6WldRQVAzTmxkRVIx
Y21GMGFXOXVRRTFsWkdsaFZVbFVhVzFsYkdsdVpWTnNhV1JsY2tCQQpVVUZGV0U1QVdnQS9QekZO
WldScFlVTnZiblJ5YjJ4elFFQlZRVVZBV0ZvQVB6OWZOMDFsWkdsaFEyOXVkSEp2YkhOQVFEWkNR
QUEvClAxOUhUV1ZrYVdGRGIyNTBjbTlzYzBCQVZVRkZVRUZZU1VCYUFEOC9YMFZOWldScFlVTnZi
blJ5YjJ4elFFQlZRVVZRUVZoSlFGb0EKWDE5d2RYSmxZMkZzYkFBL1AxOUhUV1ZrYVdGRGIyNTBj
bTlzYzBCQVZVRkZVRUZZU1VCYUFEOC9NMEJaUVZoUVFWaEFXZ0EvUHpCTgpaV1JwWVVOdmJuUnli
Mnh6UUVCUlFVVkFXRm9BUDNObGRGVndRMjl1ZEdWNGRFWnZjbEJoYVc1MGFXNW5RRTFsWkdsaFZV
bEZiR1Z0ClpXNTBRRUJOUWtWWVVFRlZRMGREYjI1MFpYaDBRRUJWUTBkU1pXTjBRRUJBV2dCZlgy
bHRjRjlmUTBkRGIyNTBaWGgwVTJOaGJHVkQKVkUwQVgxOXlaV0ZzUURObU9EQXdNREF3QUY5ZmNt
VmhiRUJpWmpnd01EQXdNQUJmWDJsdGNGOWZRMGREYjI1MFpYaDBWSEpoYm5OcwpZWFJsUTFSTkFG
OWZjbVZoYkVBd01EQXdNREF3TUFCZlgybHRjRjlmUTBkU1pXTjBSMlYwVFdsdVdRQmZYMmx0Y0Y5
ZlEwZFNaV04wClIyVjBUV0Y0V1FCZlgybHRjRjlmUTBkRGIyNTBaWGgwVTJGMlpVZFRkR0YwWlFB
L2NtVnpkRzl5WlVOdmJuUmxlSFJCWm5SbGNsQmgKYVc1MGFXNW5RRTFsWkdsaFZVbEZiR1Z0Wlc1
MFFFQk5Ra1ZZVUVGVlEwZERiMjUwWlhoMFFFQkFXZ0JmWDJsdGNGOWZRMGREYjI1MApaWGgwVW1W
emRHOXlaVWRUZEdGMFpRQS9aSEpoZDFCaGNuUkFUV1ZrYVdGRGIyNTBjbTlzYzBCQVZVRkZXRWhR
UVZWRFIwTnZiblJsCmVIUkFRRlZEUjFKbFkzUkFRRWxBV2dBL2FHbDBWR1Z6ZEZCaGNuUkFUV1Zr
YVdGRGIyNTBjbTlzYzBCQVZVSkZYMDVJVlVOSFVtVmoKZEVCQVZVTkhVRzlwYm5SQVFFQmFBRDl1
WVhSMWNtRnNVMmw2WlVCTlpXUnBZVU52Ym5SeWIyeHpRRUJWUWtVL1FWVkRSMU5wZW1WQQpRRWhB
V2dCZlgybHRjRjlmUTBkVGFYcGxXbVZ5YndBL1pISmhkMVJwYldWc2FXNWxVMnhwWkdWeVZISmhZ
MnRBVFdWa2FXRkRiMjUwCmNtOXNjMEJBVlVGRldGQkJWVU5IUTI5dWRHVjRkRUJBVlVOSFVtVmpk
RUJBVGs1SlFGb0FQejh3VFdWa2FXRk1aV2RoWTNsRGIyNTAKY205c2MwQkFVVUZGUUZoYUFEOC9Y
emROWldScFlVeGxaMkZqZVVOdmJuUnliMnh6UUVBMlFrQUFQejlmUjAxbFpHbGhUR1ZuWVdONQpR
Mjl1ZEhKdmJITkFRRlZCUlZCQldFbEFXZ0EvUDE5RlRXVmthV0ZNWldkaFkzbERiMjUwY205c2Mw
QkFWVUZGVUVGWVNVQmFBRDlqCmIyNTBjbTlzUm05eVVHRnlkRUJOWldScFlVeGxaMkZqZVVOdmJu
UnliMnh6UUVCVlFrVlFRVlpOWldScFlWVkpSV3hsYldWdWRFQkEKU0VCYUFEOXpiR2xrWlhKQVRX
VmthV0ZNWldkaFkzbERiMjUwY205c2MwQkFWVUpGVUVGV1RXVmthV0ZWU1ZScGJXVnNhVzVsVTJ4
cApaR1Z5UUVCWVdnQS9QekZOWldScFlVeGxaMkZqZVVOdmJuUnliMnh6UUVCVlFVVkFXRm9BUHo4
d1RXVmthV0ZUYUdGeVpXUlZTVU52CmJuUnliMnh6UUVCUlFVVkFXRm9BUHo5Zk4wMWxaR2xoVTJo
aGNtVmtWVWxEYjI1MGNtOXNjMEJBTmtKQUFEOC9YMGROWldScFlWTm8KWVhKbFpGVkpRMjl1ZEhK
dmJITkFRRlZCUlZCQldFbEFXZ0EvUDE5RlRXVmthV0ZUYUdGeVpXUlZTVU52Ym5SeWIyeHpRRUJW
UVVWUQpRVmhKUUZvQVAyTnZiblJ5YjJ4R2IzSlFZWEowUUUxbFpHbGhVMmhoY21Wa1ZVbERiMjUw
Y205c2MwQkFWVUpGVUVGV1RXVmthV0ZWClNVVnNaVzFsYm5SQVFFaEFXZ0EvYzJ4cFpHVnlRRTFs
WkdsaFUyaGhjbVZrVlVsRGIyNTBjbTlzYzBCQVZVSkZVRUZXVFdWa2FXRlYKU1ZScGJXVnNhVzVs
VTJ4cFpHVnlRRUJZV2dBL1B6Rk5aV1JwWVZOb1lYSmxaRlZKUTI5dWRISnZiSE5BUUZWQlJVQllX
Z0EvUDE5SApUV1ZrYVdGTVpXZGhZM2xEYjI1MGNtOXNjMEJBVlVGRlVFRllTVUJhQUQ4L1gwZE5a
V1JwWVZOb1lYSmxaRlZKUTI5dWRISnZiSE5BClFGVkJSVkJCV0VsQVdnQS9ZMjl1ZEhKdmJITkdi
M0pVYUdWdFpVQkFXVUZRUVZaTlpXUnBZVU52Ym5SeWIyeHpRRUJJUUZvQVAzTm8KWVhKbFpGVkpR
Mjl1ZEhKdmJITkFQemMvUDJOdmJuUnliMnh6Um05eVZHaGxiV1ZBUUZsQlVFRldUV1ZrYVdGRGIy
NTBjbTlzYzBCQQpTRUJhUURSUVFWWk5aV1JwWVZOb1lYSmxaRlZKUTI5dWRISnZiSE5BUUVFQVAy
eGxaMkZqZVVOdmJuUnliMnh6UUQ4MFB6OWpiMjUwCmNtOXNjMFp2Y2xSb1pXMWxRRUJaUVZCQlZr
MWxaR2xoUTI5dWRISnZiSE5BUUVoQVdrQTBVRUZXVFdWa2FXRk1aV2RoWTNsRGIyNTAKY205c2Mw
QkFRUUEvUHpKQVdVRlFRVmhKUUZvQVB5UlRNVUEvTkQ4L1kyOXVkSEp2YkhOR2IzSlVhR1Z0WlVC
QVdVRlFRVlpOWldScApZVU52Ym5SeWIyeHpRRUJJUUZwQU5FbEJBRjlYUzAxbFlYTjFjbVZOWldS
cFlWVkpVR0Z5ZEFCZlYwdElhWFJVWlhOMFRXVmthV0ZWClNWQmhjblFBWDFkTFJISmhkMDFsWkds
aFZVbFFZWEowQUY5WFMwUnlZWGROWldScFlWTnNhV1JsY2xSeVlXTnJBQzh5TkRnZ0lDQWcKSUNB
Z0lDQWdJQ0F4TWpreU1EQXpPVGMzSUNBZ0lDQWdJQ0FnSUNBZ0lDQXhNREEyTmpZZ0lERXhPRFV6
TVNBZ0lDQmdDa3dCb0FDSgphZ0pOYTVFQkFQVUJBQUFBQUFBQUxtUnlaV04wZG1VQUFBQUFBQUFB
QU1NQUFBQVVHUUFBQUFBQUFBQUFBQUFBQUFBQUFBb1FBQzVrClpXSjFaeVJUQUFBQUFBQUFBQUR3
VndBQTF4a0FBTWR4QUFBQUFBQUFOZ0FBQUVBQUVFSXVjbVJoZEdFQUFBQUFBQUFBQUFBQVVaSUEK
QU9OekFBQUFBQUFBQUFBQUFBQUFBQUJBQUVCQUxuUmxlSFFBQUFBQUFBQUFBQUFBQUIwQUFBQTBC
Z0VBQUFBQUFBQUFBQUFBQUFBQQpJQkJRWUM1a1pXSjFaeVJUQUFBQUFBQUFBQUQ4QUFBQVVRWUJB
RTBIQVFBQUFBQUFCUUFBQUVBUUVFSXVkR1Y0ZEFBQUFBQUFBQUFBCkFBQUFIQUFBQUg4SEFRQUFB
QUFBQUFBQUFBQUFBQUFnRUZCZ0xtUmxZblZuSkZNQUFBQUFBQUFBQUJBQkFBQ2JCd0VBcXdnQkFB
QUEKQUFBRkFBQUFRQkFRUWk1MFpYaDBBQUFBQUFBQUFBQUFBQUFIQUFBQTNRZ0JBT1FJQVFBQUFB
QUFBUUFBQUNBUVVHQXVaR1ZpZFdjawpVd0FBQUFBQUFBQUEyQUFBQU80SUFRREdDUUVBQUFBQUFB
VUFBQUJBRUJCQ0xuSmtZWFJoQUFBQUFBQUFBQUFBQUJnQUFBRDRDUUVBCkVBb0JBQUFBQUFBR0FB
QUFRQkF3UUM1MFpYaDBBQUFBQUFBQUFBQUFBQUEyQUFBQVRBb0JBSUlLQVFBQUFBQUFBUUFBQUNB
UVVHQXUKWkdWaWRXY2tVd0FBQUFBQUFBQUFDQUVBQUl3S0FRQ1VDd0VBQUFBQUFBY0FBQUJBRUJC
Q0xuUmxlSFFBQUFBQUFBQUFBQUFBQUJjQQpBQURhQ3dFQThRc0JBQUFBQUFBQkFBQUFJQkJRWUM1
a1pXSjFaeVJUQUFBQUFBQUFBQURVQUFBQSt3c0JBTThNQVFBQUFBQUFCUUFBCkFFQVFFRUl1ZEdW
NGRBQUFBQUFBQUFBQUFBQUFDZ0FBQUFFTkFRQUFBQUFBQUFBQUFBQUFBQUFnRUZCZ0xtUmxZblZu
SkZNQUFBQUEKQUFBQUFPZ0FBQUFMRFFFQTh3MEJBQUFBQUFBRkFBQUFRQkFRUWk1MFpYaDBBQUFB
QUFBQUFBQUFBQUFFQUFBQUpRNEJBQUFBQUFBQQpBQUFBQUFBQUFDQVFVR0F1WkdWaWRXY2tVd0FB
QUFBQUFBQUEwQUFBQUNrT0FRRDVEZ0VBQUFBQUFBVUFBQUJBRUJCQ0xuUmxlSFFBCkFBQUFBQUFB
QUFBQUFBZ0FBQUFyRHdFQUFBQUFBQUFBQUFBQUFBQUFJQkJRWUM1a1pXSjFaeVJUQUFBQUFBQUFB
QURVQUFBQU13OEIKQUFjUUFRQUFBQUFBQlFBQUFFQVFFRUl1ZEdWNGRBQUFBQUFBQUFBQUFBQUFI
d0FBQURrUUFRQllFQUVBQUFBQUFBSUFBQUFnRUZCZwpMbVJsWW5WbkpGTUFBQUFBQUFBQUFPQUFB
QUJzRUFFQVRCRUJBQUFBQUFBREFBQUFRQkFRUWk1MFpYaDBBQUFBQUFBQUFBQUFBQUFFCkFBQUFh
aEVCQUFBQUFBQUFBQUFBQUFBQUFDQVFVR0F1WkdWaWRXY2tVd0FBQUFBQUFBQUEzQUFBQUc0UkFR
QktFZ0VBQUFBQUFBVUEKQUFCQUVCQkNMblJsZUhRQUFBQUFBQUFBQUFBQUFBUUFBQUI4RWdFQUFB
QUFBQUFBQUFBQUFBQUFJQkJRWUM1a1pXSjFaeVJUQUFBQQpBQUFBQUFEWUFBQUFnQklCQUZnVEFR
QUFBQUFBQlFBQUFFQVFFRUl1ZEdWNGRBQUFBQUFBQUFBQUFBQUFGUUFBQUlvVEFRQUFBQUFBCkFB
QUFBQUFBQUFBZ0VGQmdMbVJsWW5WbkpGTUFBQUFBQUFBQUFPQUFBQUNmRXdFQWZ4UUJBQUFBQUFB
RkFBQUFRQkFRUWk1eVpHRjAKWVFBQUFBQUFBQUFBQUFBSUFBQUFzUlFCQUFBQUFBQUFBQUFBQUFB
QUFFQVFRRUF1ZEdWNGRBQUFBQUFBQUFBQUFBQUFHd0FBQUxrVQpBUURVRkFFQUFBQUFBQUVBQUFB
Z0VGQmdMbVJsWW5WbkpGTUFBQUFBQUFBQUFNQUFBQURlRkFFQW5oVUJBQUFBQUFBRkFBQUFRQkFR
ClFpNTBaWGgwQUFBQUFBQUFBQUFBQUFBYkFBQUEwQlVCQU9zVkFRQUFBQUFBQVFBQUFDQVFVR0F1
WkdWaWRXY2tVd0FBQUFBQUFBQUEKMUFBQUFQVVZBUURKRmdFQUFBQUFBQVVBQUFCQUVCQkNMblJs
ZUhRQUFBQUFBQUFBQUFBQUFIQUFBQUQ3RmdFQWF4Y0JBQUFBQUFBSwpBQUFBSUJCUVlDNWtaV0ox
WnlSVEFBQUFBQUFBQUFDSUFRQUF6eGNCQUZjWkFRQUFBQUFBRVFBQUFFQVFFRUl1WW5OekFBQUFB
QUFBCkFBQUFBQUFBQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQUVEREFMblJsZUhRQUFBQUFB
QUFBQUFBQUFIQUFBQUFCR2dFQWNSb0IKQUFBQUFBQUtBQUFBSUJCUVlDNWtaV0oxWnlSVEFBQUFB
QUFBQUFDTUFRQUExUm9CQUdFY0FRQUFBQUFBRVFBQUFFQVFFRUl1WW5OegpBQUFBQUFBQUFBQUFB
QUFBQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQUVEREFMblJsZUhRQUFBQUFBQUFBQUFBQUFI
QUFBQUFMCkhRRUFleDBCQUFBQUFBQUtBQUFBSUJCUVlDNWtaV0oxWnlSVEFBQUFBQUFBQUFDQUFR
QUEzeDBCQUY4ZkFRQUFBQUFBRVFBQUFFQVEKRUVJdVluTnpBQUFBQUFBQUFBQUFBQUFBQkFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFDQUVEREFMblJsZUhRQUFBQUFBQUFBQUFBQQpBSEFBQUFBSklB
RUFlU0FCQUFBQUFBQUtBQUFBSUJCUVlDNWtaV0oxWnlSVEFBQUFBQUFBQUFDSUFRQUEzU0FCQUdV
aUFRQUFBQUFBCkVRQUFBRUFRRUVJdVluTnpBQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFDQUVEREFMblJsZUhRQUFBQUEKQUFBQUFBQUFBSEFBQUFBUEl3RUFmeU1CQUFB
QUFBQUtBQUFBSUJCUVlDNWtaV0oxWnlSVEFBQUFBQUFBQUFDQUFRQUE0eU1CQUdNbApBUUFBQUFB
QUVRQUFBRUFRRUVJdVluTnpBQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFDQUVEREFMblJsCmVIUUFBQUFBQUFBQUFBQUFBSEFBQUFBTkpnRUFmU1lCQUFBQUFBQUtBQUFB
SUJCUVlDNWtaV0oxWnlSVEFBQUFBQUFBQUFDSUFRQUEKNFNZQkFHa29BUUFBQUFBQUVRQUFBRUFR
RUVJdVluTnpBQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQQpFRERB
TG5SbGVIUUFBQUFBQUFBQUFBQUFBSEFBQUFBVEtRRUFneWtCQUFBQUFBQUtBQUFBSUJCUVlDNWta
V0oxWnlSVEFBQUFBQUFBCkFBQ0FBUUFBNXlrQkFHY3JBUUFBQUFBQUVRQUFBRUFRRUVJdVluTnpB
QUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUFBQUFBQUFBQUEKQUFBQUFBQ0FFRERBTG5SbGVIUUFB
QUFBQUFBQUFBQUFBSEFBQUFBUkxBRUFnU3dCQUFBQUFBQUtBQUFBSUJCUVlDNWtaV0oxWnlSVApB
QUFBQUFBQUFBQ0lBUUFBNVN3QkFHMHVBUUFBQUFBQUVRQUFBRUFRRUVJdVluTnpBQUFBQUFBQUFB
QUFBQUFBQkFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFBQ0FFRERBTG5SbGVIUUFBQUFBQUFBQUFB
QUFBSEFBQUFBWEx3RUFoeThCQUFBQUFBQUtBQUFBSUJCUVlDNWsKWldKMVp5UlRBQUFBQUFBQUFB
Q0VBUUFBNnk4QkFHOHhBUUFBQUFBQUVRQUFBRUFRRUVJdVluTnpBQUFBQUFBQUFBQUFBQUFBQkFB
QQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FFRERBTG5SbGVIUUFBQUFBQUFBQUFBQUFBSEFBQUFB
Wk1nRUFpVElCQUFBQUFBQUtBQUFBCklCQlFZQzVrWldKMVp5UlRBQUFBQUFBQUFBQ0lBUUFBN1RJ
QkFIVTBBUUFBQUFBQUVRQUFBRUFRRUVJdVluTnpBQUFBQUFBQUFBQUEKQUFBQUJBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQ0FFRERBTG5SbGVIUUFBQUFBQUFBQUFBQUFBSEFBQUFBZk5RRUFqelVC
QUFBQQpBQUFLQUFBQUlCQlFZQzVrWldKMVp5UlRBQUFBQUFBQUFBQ0lBUUFBOHpVQkFIczNBUUFB
QUFBQUVRQUFBRUFRRUVJdVluTnpBQUFBCkFBQUFBQUFBQUFBQUJBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQ0FFRERBTG5SbGVIUUFBQUFBQUFBQUFBQUFBSEFBQUFBbE9BRUEKbFRnQkFBQUFBQUFL
QUFBQUlCQlFZQzVrWldKMVp5UlRBQUFBQUFBQUFBQ1FBUUFBK1RnQkFJazZBUUFBQUFBQUVRQUFB
RUFRRUVJdQpZbk56QUFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FF
RERBTG5SbGVIUUFBQUFBQUFBQUFBQUFBSEFBCkFBQXpPd0VBb3pzQkFBQUFBQUFLQUFBQUlCQlFZ
QzVrWldKMVp5UlRBQUFBQUFBQUFBQ1FBUUFBQnp3QkFKYzlBUUFBQUFBQUVRQUEKQUVBUUVFSXVZ
bk56QUFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FFRERBTG5SbGVI
UUFBQUFBQUFBQQpBQUFBQUhBQUFBQkJQZ0VBc1Q0QkFBQUFBQUFLQUFBQUlCQlFZQzVrWldKMVp5
UlRBQUFBQUFBQUFBQ1VBUUFBRlQ4QkFLbEFBUUFBCkFBQUFFUUFBQUVBUUVFSXVZbk56QUFBQUFB
QUFBQUFBQUFBQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FFRERBTG5SbGVIUUEKQUFBQUFB
QUFBQUFBQUhBQUFBQlRRUUVBdzBFQkFBQUFBQUFLQUFBQUlCQlFZQzVrWldKMVp5UlRBQUFBQUFB
QUFBQ01BUUFBSjBJQgpBTE5EQVFBQUFBQUFFUUFBQUVBUUVFSXVZbk56QUFBQUFBQUFBQUFBQUFB
QUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FFRERBCkxuUmxlSFFBQUFBQUFBQUFBQUFBQUhB
QUFBQmRSQUVBelVRQkFBQUFBQUFLQUFBQUlCQlFZQzVrWldKMVp5UlRBQUFBQUFBQUFBQ1UKQVFB
QU1VVUJBTVZHQVFBQUFBQUFFUUFBQUVBUUVFSXVZbk56QUFBQUFBQUFBQUFBQUFBQUJBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQQpBQUNBRUREQUxuUmxlSFFBQUFBQUFBQUFBQUFBQUhBQUFBQnZSd0VB
MzBjQkFBQUFBQUFLQUFBQUlCQlFZQzVrWldKMVp5UlRBQUFBCkFBQUFBQUNRQVFBQVEwZ0JBTk5K
QVFBQUFBQUFFUUFBQUVBUUVFSXVZbk56QUFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFBQUFBQUEK
QUFBQUFBQUFBQUNBRUREQUxuUmxlSFFBQUFBQUFBQUFBQUFBQUhBQUFBQjlTZ0VBN1VvQkFBQUFB
QUFLQUFBQUlCQlFZQzVrWldKMQpaeVJUQUFBQUFBQUFBQUNZQVFBQVVVc0JBT2xNQVFBQUFBQUFF
UUFBQUVBUUVFSXVZbk56QUFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBCkFBQUFBQUFBQUFBQUFBQUFB
QUNBRUREQUxuUmxlSFFBQUFBQUFBQUFBQUFBQUhBQUFBQ1RUUUVBQTA0QkFBQUFBQUFLQUFBQUlC
QlEKWUM1a1pXSjFaeVJUQUFBQUFBQUFBQUNBQVFBQVowNEJBT2RQQVFBQUFBQUFFUUFBQUVBUUVF
SXVZbk56QUFBQUFBQUFBQUFBQUFBQQpCQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBRUREQUxu
UmxlSFFBQUFBQUFBQUFBQUFBQUhBQUFBQ1JVQUVBQVZFQkFBQUFBQUFLCkFBQUFJQkJRWUM1a1pX
SjFaeVJUQUFBQUFBQUFBQUNJQVFBQVpWRUJBTzFTQVFBQUFBQUFFUUFBQUVBUUVFSXVZbk56QUFB
QUFBQUEKQUFBQUFBQUFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBRUREQUxuUmxlSFFBQUFB
QUFBQUFBQUFBQUhBQUFBQ1hVd0VBQjFRQgpBQUFBQUFBS0FBQUFJQkJRWUM1a1pXSjFaeVJUQUFB
QUFBQUFBQUNJQVFBQWExUUJBUE5WQVFBQUFBQUFFUUFBQUVBUUVFSXVZbk56CkFBQUFBQUFBQUFB
QUFBQUFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBRUREQUxuUmxlSFFBQUFBQUFBQUFBQUFB
QUhBQUFBQ2QKVmdFQURWY0JBQUFBQUFBS0FBQUFJQkJRWUM1a1pXSjFaeVJUQUFBQUFBQUFBQUNN
QVFBQWNWY0JBUDFZQVFBQUFBQUFFUUFBQUVBUQpFRUl1WW5OekFBQUFBQUFBQUFBQUFBQUFCQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBRUREQUxuUmxlSFFBQUFBQUFBQUFBQUFBCkFIQUFBQUNu
V1FFQUYxb0JBQUFBQUFBS0FBQUFJQkJRWUM1a1pXSjFaeVJUQUFBQUFBQUFBQUNNQVFBQWUxb0JB
QWRjQVFBQUFBQUEKRVFBQUFFQVFFRUl1WW5OekFBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUNBRUREQUxuUmxlSFFBQUFBQQpBQUFBQUFBQUFIQUFBQUN4WEFFQUlWMEJB
QUFBQUFBS0FBQUFJQkJRWUM1a1pXSjFaeVJUQUFBQUFBQUFBQUNRQVFBQWhWMEJBQlZmCkFRQUFB
QUFBRVFBQUFFQVFFRUl1WW5OekFBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUNBRUREQUxuUmwKZUhRQUFBQUFBQUFBQUFBQUFBUUJBQUMvWHdFQXcyQUJBQUFBQUFBZ0FB
QUFJQkJRWUM1a1pXSjFaeVJUQUFBQUFBQUFBQURzQVFBQQpBMklCQU85akFRQUFBQUFBR3dBQUFF
QVFFRUl1ZEdWNGRBQUFBQUFBQUFBQUFBQUFNd1VBQVAxa0FRQXdhZ0VBQUFBQUFDZ0FBQUFnCkVG
QmdMbVJsWW5WbkpGTUFBQUFBQUFBQUFHQUZBQURBYXdFQUlIRUJBQUFBQUFBN0FBQUFRQkFRUWk1
eVpHRjBZUUFBQUFBQUFBQUEKQUFBRUFBQUFibk1CQUFBQUFBQUFBQUFBQUFBQUFFQVFNRUF1Y21S
aGRHRUFBQUFBQUFBQUFBQUFCQUFBQUhKekFRQUFBQUFBQUFBQQpBQUFBQUFCQUVEQkFMbkprWVhS
aEFBQUFBQUFBQUFBQUFBUUFBQUIyY3dFQUFBQUFBQUFBQUFBQUFBQUFRQkF3UUM1eVpHRjBZUUFB
CkFBQUFBQUFBQUFBRUFBQUFlbk1CQUFBQUFBQUFBQUFBQUFBQUFFQVFNRUF1Y21SaGRHRUFBQUFB
QUFBQUFBQUFDQUFBQUg1ekFRQUEKQUFBQUFBQUFBQUFBQUFCQUVFQkFMblJsZUhRQUFBQUFBQUFB
QUFBQUFBa0FBQUNHY3dFQWozTUJBQUFBQUFBQkFBQUFJQkJRWUM1awpaV0oxWnlSVEFBQUFBQUFB
QUFDd0FBQUFtWE1CQUVsMEFRQUFBQUFBQXdBQUFFQVFFRUl1ZEdWNGRBQUFBQUFBQUFBQUFBQUFD
UUFBCkFHZDBBUUJ3ZEFFQUFBQUFBQUVBQUFBZ0VGQmdMbVJsWW5WbkpGTUFBQUFBQUFBQUFNQUFB
QUI2ZEFFQU9uVUJBQUFBQUFBREFBQUEKUUJBUVFpNXlaR0YwWVFBQUFBQUFBQUFBQUFBWUFBQUFX
SFVCQUhCMUFRQUFBQUFBQmdBQUFFQVFNRUF1ZEdWNGRBQUFBQUFBQUFBQQpBQUFBQndBQUFLeDFB
UUN6ZFFFQUFBQUFBQUVBQUFBZ0VGQmdMbVJsWW5WbkpGTUFBQUFBQUFBQUFNQUFBQUM5ZFFFQWZY
WUJBQUFBCkFBQURBQUFBUUJBUVFpNTBaWGgwQUFBQUFBQUFBQUFBQUFBZkFBQUFtM1lCQUxwMkFR
QUFBQUFBQWdBQUFDQVFVR0F1WkdWaWRXY2sKVXdBQUFBQUFBQUFBNUFBQUFNNTJBUUN5ZHdFQUFB
QUFBQU1BQUFCQUVCQkNMblJsZUhRQUFBQUFBQUFBQUFBQUFDd0JBQURRZHdFQQovSGdCQUFBQUFB
QUpBQUFBSUJCUVlDNWtaV0oxWnlSVEFBQUFBQUFBQUFBSUFnQUFWbmtCQUY1N0FRQUFBQUFBRndB
QUFFQVFFRUl1CmRHVjRkQUFBQUFBQUFBQUFBQUFBZndBQUFFUjhBUUREZkFFQUFBQUFBQVlBQUFB
Z0VGQmdMbVJsWW5WbkpGTUFBQUFBQUFBQUFGQUIKQUFEL2ZBRUFUMzRCQUFBQUFBQUpBQUFBUUJB
UVFpNTBaWGgwQUFBQUFBQUFBQUFBQUFBSkFBQUFxWDRCQUxKK0FRQUFBQUFBQVFBQQpBQ0FRVUdB
dVpHVmlkV2NrVXdBQUFBQUFBQUFBeUFBQUFMeCtBUUNFZndFQUFBQUFBQU1BQUFCQUVCQkNMbkpr
WVhSaEFBQUFBQUFBCkFBQUFBQmdBQUFDaWZ3RUF1bjhCQUFBQUFBQUdBQUFBUUJBd1FDNTBaWGgw
QUFBQUFBQUFBQUFBQUFBUEFBQUE5bjhCQUFXQUFRQUEKQUFBQUFRQUFBQ0FRVUdBdVpHVmlkV2Nr
VXdBQUFBQUFBQUFBSkFFQUFBK0FBUUF6Z1FFQUFBQUFBQWNBQUFCQUVCQkNMblJsZUhRQQpBQUFB
QUFBQUFBQUFBQThBQUFCNWdRRUFpSUVCQUFBQUFBQUJBQUFBSUJCUVlDNWtaV0oxWnlSVEFBQUFB
QUFBQUFBVUFRQUFrb0VCCkFLYUNBUUFBQUFBQUJ3QUFBRUFRRUVJdWRHVjRkQUFBQUFBQUFBQUFB
QUFBQndBQUFPeUNBUUR6Z2dFQUFBQUFBQUVBQUFBZ0VGQmcKTG1SbFluVm5KRk1BQUFBQUFBQUFB
TWdBQUFEOWdnRUF4WU1CQUFBQUFBQURBQUFBUUJBUVFpNTBaWGgwQUFBQUFBQUFBQUFBQUFBZgpB
QUFBNDRNQkFBS0VBUUFBQUFBQUFnQUFBQ0FRVUdBdVpHVmlkV2NrVXdBQUFBQUFBQUFBNkFBQUFC
YUVBUUQraEFFQUFBQUFBQU1BCkFBQkFFQkJDTG5SbGVIUUFBQUFBQUFBQUFBQUFBQWtBQUFBY2hR
RUFKWVVCQUFBQUFBQUJBQUFBSUJCUVlDNWtaV0oxWnlSVEFBQUEKQUFBQUFBRE1BQUFBTDRVQkFQ
dUZBUUFBQUFBQUF3QUFBRUFRRUVJdWNtUmhkR0VBQUFBQUFBQUFBQUFBR0FBQUFCbUdBUUF4aGdF
QQpBQUFBQUFZQUFBQkFFREJBTG5SbGVIUUFBQUFBQUFBQUFBQUFBQThBQUFCdGhnRUFmSVlCQUFB
QUFBQUJBQUFBSUJCUVlDNWtaV0oxClp5UlRBQUFBQUFBQUFBQW9BUUFBaG9ZQkFLNkhBUUFBQUFB
QUJ3QUFBRUFRRUVJdWRHVjRkQUFBQUFBQUFBQUFBQUFBRHdBQUFQU0gKQVFBRGlBRUFBQUFBQUFF
QUFBQWdFRkJnTG1SbFluVm5KRk1BQUFBQUFBQUFBQmdCQUFBTmlBRUFKWWtCQUFBQUFBQUhBQUFB
UUJBUQpRaTUwWlhoMEFBQUFBQUFBQUFBQUFBQUhBQUFBYTRrQkFIS0pBUUFBQUFBQUFRQUFBQ0FR
VUdBdVpHVmlkV2NrVXdBQUFBQUFBQUFBCnpBQUFBSHlKQVFCSWlnRUFBQUFBQUFNQUFBQkFFQkJD
TG5SbGVIUUFBQUFBQUFBQUFBQUFBQjhBQUFCbWlnRUFoWW9CQUFBQUFBQUMKQUFBQUlCQlFZQzVr
WldKMVp5UlRBQUFBQUFBQUFBRHNBQUFBbVlvQkFJV0xBUUFBQUFBQUF3QUFBRUFRRUVJdWRHVjRk
QUFBQUFBQQpBQUFBQUFBQWZRQUFBS09MQVFBZ2pBRUFBQUFBQUFzQUFBQWdFRkJnTG1SbFluVm5K
Rk1BQUFBQUFBQUFBS2dCQUFDT2pBRUFObzRCCkFBQUFBQUFOQUFBQVFCQVFRaTVpYzNNQUFBQUFB
QUFBQUFBQUFBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFRTU1BdVluTnoKQUFBQUFBQUFB
QUFBQUFBQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FFRERBTG5SbGVIUUFBQUFBQUFBQUFB
QUFBRHNBQUFDNApqZ0VBODQ0QkFBQUFBQUFIQUFBQUlCQlFZQzVrWldKMVp5UlRBQUFBQUFBQUFB
QWdBUUFBT1k4QkFGbVFBUUFBQUFBQUJ3QUFBRUFRCkVFSXVZbk56QUFBQUFBQUFBQUFBQUFBQUJB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FFRERBTG1KemN3QUFBQUFBQUFBQUFBQUEKQUFRQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdCQXd3QzVrWldKMVp5UlRBQUFBQUFBQUFBQWdBQUFBbjVB
QkFMK1FBUUFBQUFBQQpBZ0FBQUVBUUVFSXVaR1ZpZFdja1V3QUFBQUFBQUFBQUlBQUFBTk9RQVFE
emtBRUFBQUFBQUFJQUFBQkFFQkJDTG1SbFluVm5KRlFBCkFBQUFBQUFBQUdRQUFBQUhrUUVBQUFB
QUFBQUFBQUFBQUFBQVFBQVFRaUFnSUM5dFlXNXBabVZ6ZEdSbGNHVnVaR1Z1WTNrNkluUjUKY0dV
OUozZHBiak15SnlCdVlXMWxQU2ROYVdOeWIzTnZablF1VmtNNE1DNURVbFFuSUhabGNuTnBiMjQ5
SnpndU1DNDFNRGN5Tnk0MApNRFV6SnlCd2NtOWpaWE56YjNKQmNtTm9hWFJsWTNSMWNtVTlKM2c0
TmljZ2NIVmliR2xqUzJWNVZHOXJaVzQ5SnpGbVl6aGlNMkk1CllURmxNVGhsTTJJbklpQXZSRVZH
UVZWTVZFeEpRam9pVFZOV1ExSlVJaUF2UkVWR1FWVk1WRXhKUWpvaVQweEVUa0ZOUlZNaUlBUUEK
QUFEeEFBQUFqd2NBQUYwQUFSRUFBQUFBUXpwY1kzbG5kMmx1WEdodmJXVmNZMjFoY25KcGJseFha
V0pMYVhSQ2RXbHNaRnh2WW1wYwpWMlZpUzJsMFUzbHpkR1Z0U1c1MFpYSm1ZV05sWEZKbGJHVmhj
MlZjVEdWbllXTjVUV1ZrYVdGVlNTNXZZbW9BTGdjV0VRRWdBQUFICkFBNEFBQUFueGc0QUFBQW54
azFwWTNKdmMyOW1kQ0FvVWlrZ1QzQjBhVzFwZW1sdVp5QkRiMjF3YVd4bGNnQmpkMlFBWXpwY1kz
bG4KZDJsdVhHaHZiV1ZjWTIxaGNuSnBibHh6YjNWeVkyVmNjM1p1WEZkbFlrdHBkRnhKYm5SbGNt
NWhiRnhYWldKTGFYUlRlWE4wWlcxSgpiblJsY21aaFkyVmNkMmx1QUdOc0FFTTZYRkJ5YjJkeVlX
MGdSbWxzWlhNZ0tIZzROaWxjVFdsamNtOXpiMlowSUZacGMzVmhiQ0JUCmRIVmthVzhnT0Z4V1Ex
eGlhVzVjWTJ3dVpYaGxBR050WkFBdFR6SWdMVWxET2x4amVXZDNhVzVjYUc5dFpWeGpiV0Z5Y21s
dVhGZGwKWWt0cGRFSjFhV3hrWEVsdVkyeDFaR1VnTFVsRE9seEJjSEJzWlVsdWRHVnlibUZzWEVs
dVkyeDFaR1VnTFVsRE9seEJjSEJzWlVsdQpkR1Z5Ym1Gc1hFbHVZMngxWkdWY1EyOXlaVVp2ZFc1
a1lYUnBiMjVjVDFOWVEyOXRjR0YwYVdKcGJHbDBlVWhsWVdSbGNuTWdMVWxECk9seEJjSEJzWlVs
dWRHVnlibUZzWEVsdVkyeDFaR1ZjUTI5eVpVWnZkVzVrWVhScGIyNWNUMU5ZUTI5dGNHRjBhV0pw
YkdsMGVVaGwKWVdSbGNuTmNSMDVWUTI5dGNHRjBhV0pwYkdsMGVTQXRTVU02WEdONVozZHBibHhv
YjIxbFhHTnRZWEp5YVc1Y1YyVmlTMmwwUW5WcApiR1JjYjJKcVhGZGxZa3RwZEZONWMzUmxiVWx1
ZEdWeVptRmpaVnhFWlhKcGRtVmtVMjkxY21ObGN5QXRTV002WEdONVozZHBibHhvCmIyMWxYR050
WVhKeWFXNWNjMjkxY21ObFhITjJibHhYWldKTGFYUmNTVzUwWlhKdVlXeGNWMlZpUzJsMFUzbHpk
R1Z0U1c1MFpYSm0KWVdObElDMUVYMTlYU1U0ek1sOWZJQzFFWDB4SlFpQXRSRTVFUlVKVlJ5QXRS
RmRKVGpNeUlDMUVYMWRKVGtSUFYxTWdMVVJYU1U1VwpSVkk5TUhnMU1ERWdMVVJmVjBsT016SmZW
MGxPVGxROU1IZzFNREVnTFVSZlYwbE9NekpmU1VVOU1IZzJNREFnTFVSZlExSlVYMU5GClExVlNS
VjlEVUZCZlQxWkZVa3hQUVVSZlUxUkJUa1JCVWtSZlRrRk5SVk05TVNBdFJGOWZVRkpQUkZWRFZF
bFBUbDlmUFRBZ0xVUmYKU0VGVFgwVllRMFZRVkVsUFRsTTlNQ0F0UkVKVlNVeEVTVTVIWDFkbFlr
dHBkRk41YzNSbGJVbHVkR1Z5Wm1GalpTQXRSRjlWVGtsRApUMFJGSUMxRVZVNUpRMDlFUlNBdFJr
UWdMVTFFSUMxSFVpMGdMVVp2UXpwY1kzbG5kMmx1WEdodmJXVmNZMjFoY25KcGJseFhaV0pMCmFY
UkNkV2xzWkZ4dlltcGNWMlZpUzJsMFUzbHpkR1Z0U1c1MFpYSm1ZV05sWEZKbGJHVmhjMlZjSUMx
R1pFTTZYR041WjNkcGJseG8KYjIxbFhHTnRZWEp5YVc1Y1YyVmlTMmwwUW5WcGJHUmNiR2xpWEZk
bFlrdHBkRk41YzNSbGJVbHVkR1Z5Wm1GalpTNTJZemd3TG5CawpZaUF0VnpRZ0xWZFlJQzFqSUMx
YWFTQXRWRkFnTFhka05EQXhPQ0F0ZDJRME1EWTRJQzEzWkRRd09Ua2dMWGRrTkRFd01DQXRkMlEw
Ck1USTNJQzEzWkRReE16Z2dMWGRrTkRFNE1DQXRkMlEwTVRnNUlDMTNaRFF5TURFZ0xYZGtOREkw
TkNBdGQyUTBNalV4SUMxM1pEUXkKTnpVZ0xYZGtOREk0T0NBdGQyUTBNamt4SUMxM1pEUXpNRFVn
TFhka05ETTBOQ0F0ZDJRME16VTFJQzEzWkRRek9Ea2dMWGRrTkRVdwpNeUF0ZDJRME5UQTFJQzEz
WkRRMU1UQWdMWGRrTkRVeE1pQXRkMlEwTmpFd0lDMTNaRFEzTURZZ0xYZGtORGd3TUNBdGQyUTBP
VFV4CklDMTNaRFE1TlRJZ0xYZGtORGs1TmlBdGQyUTJNREV4SUMxM1pEWXdNekVnTFhka05qSXhN
U0F0ZDJRMk1qUTJJQzEzWkRZeU5UVWcKTFhka05qTTROeUF0UjFNZ0xXNXZiRzluYnlBdFpYSnli
M0p5WlhCdmNuUTZjWFZsZFdVZ0xVa2lRenBjVUhKdlozSmhiU0JHYVd4bApjeUFvZURnMktWeE5h
V055YjNOdlpuUWdSR2x5WldOMFdDQlRSRXNnS0VGMVozVnpkQ0F5TURBNUtWeEpibU5zZFdSbElp
QXRTU0pECk9seFFjbTluY21GdElFWnBiR1Z6SUNoNE9EWXBYRTFwWTNKdmMyOW1kQ0JXYVhOMVlX
d2dVM1IxWkdsdklEaGNWa05jYVc1amJIVmsKWlNJZ0xVa2lRenBjVUhKdlozSmhiU0JHYVd4bGN5
QW9lRGcyS1Z4TmFXTnliM052Wm5RZ1ZtbHpkV0ZzSUZOMGRXUnBieUE0WEZaRApYR0YwYkcxbVkx
eHBibU5zZFdSbElpQXRTU0pET2x4UWNtOW5jbUZ0SUVacGJHVnpJQ2g0T0RZcFhFMXBZM0p2YzI5
bWRDQldhWE4xCllXd2dVM1IxWkdsdklEaGNWa05jVUd4aGRHWnZjbTFUUkV0Y2FXNWpiSFZrWlNJ
Z0xVa2lRenBjVUhKdlozSmhiU0JHYVd4bGN5QW8KZURnMktWeE5hV055YjNOdlpuUWdWbWx6ZFdG
c0lGTjBkV1JwYnlBNFhGWkRYRkJzWVhSbWIzSnRVMFJMWEdOdmJXMXZibHhwYm1OcwpkV1JsSWlB
dFNTSkRPbHhRY205bmNtRnRJRVpwYkdWeklDaDRPRFlwWEUxcFkzSnZjMjltZENCV2FYTjFZV3dn
VTNSMVpHbHZJRGhjClUwUkxYSFl5TGpCY2FXNWpiSFZrWlNJZ0xWZ0FjM0pqQUM0dVhFeGxaMkZq
ZVUxbFpHbGhWVWt1WTNCd0FIQmtZZ0JET2x4amVXZDMKYVc1Y2FHOXRaVnhqYldGeWNtbHVYRmRs
WWt0cGRFSjFhV3hrWEd4cFlseFhaV0pMYVhSVGVYTjBaVzFKYm5SbGNtWmhZMlV1ZG1NNApNQzV3
WkdJQUFBRHhBQUFBbGhVQUFDWUFCeEdZRWdBQUFBQnJRMGRUZEhsc1pVUnlZWGRQY21SbGNtbHVa
MU4wZVd4bFQyNXNlUUFpCkFBY1JtQklBQUFFQWEwTkhVM1I1YkdWRWNtRjNUM0prWlhKcGJtZENa
V3h2ZHdBaUFBY1JXaElBQUFBQWEwTkhVbVZ1WkdWeWFXNW4KU1c1MFpXNTBSR1ZtWVhWc2RBQWdB
QWNSbnhJQUFBRUFRMFpDZVhSbFQzSmtaWEpNYVhSMGJHVkZibVJwWVc0QUdnQUhFWTBTQUFBQwpn
UDcvYTBOSFJtOXVkRWx1WkdWNFRXRjRBQllBQnhHTkVnQUFBb0QrLzJ0RFIwZHNlWEJvVFdGNEFC
b0FCeEdiRWdBQUFBQnJRMGRKCmJXRm5aVUZzY0doaFRtOXVaUUFuQUFjUm14SUFBQUVBYTBOSFNX
MWhaMlZCYkhCb1lWQnlaVzExYkhScGNHeHBaV1JNWVhOMEFCb0EKQnhHYkVnQUFBd0JyUTBkSmJX
Rm5aVUZzY0doaFRHRnpkQUFiQUFjUm14SUFBQVFBYTBOSFNXMWhaMlZCYkhCb1lVWnBjbk4wQUNN
QQpCeEdiRWdBQUJnQnJRMGRKYldGblpVRnNjR2hoVG05dVpWTnJhWEJHYVhKemRBQW1BQWNSaVJJ
QUFBQUFWMHROWldScFlWVkpVR0Z5CmRFWjFiR3h6WTNKbFpXNUNkWFIwYjI0QUlBQUhFWWtTQUFB
QkFGZExUV1ZrYVdGVlNWQmhjblJOZFhSbFFuVjBkRzl1QUNBQUJ4R0oKRWdBQUFnQlhTMDFsWkds
aFZVbFFZWEowVUd4aGVVSjFkSFJ2YmdBa0FBY1JpUklBQUFNQVYwdE5aV1JwWVZWSlVHRnlkRk5s
Wld0QwpZV05yUW5WMGRHOXVBQ2NBQnhHSkVnQUFCQUJYUzAxbFpHbGhWVWxRWVhKMFUyVmxhMFp2
Y25kaGNtUkNkWFIwYjI0QUtRQUhFWWtTCkFBQUdBRmRMVFdWa2FXRlZTVkJoY25SVWFXMWxiR2x1
WlZOc2FXUmxjbFJvZFcxaUFDSUFCeEdKRWdBQUJ3QlhTMDFsWkdsaFZVbFEKWVhKMFVtVjNhVzVr
UW5WMGRHOXVBQ29BQnhHSkVnQUFDQUJYUzAxbFpHbGhWVWxRWVhKMFUyVmxhMVJ2VW1WaGJIUnBi
V1ZDZFhSMApiMjRBTGdBSEVZa1NBQUFKQUZkTFRXVmthV0ZWU1ZCaGNuUlRhRzkzUTJ4dmMyVmtR
MkZ3ZEdsdmJuTkNkWFIwYjI0QUxnQUhFWWtTCkFBQUtBRmRMVFdWa2FXRlZTVkJoY25SSWFXUmxR
Mnh2YzJWa1EyRndkR2x2Ym5OQ2RYUjBiMjRBSWdBSEVZa1NBQUFMQUZkTFRXVmsKYVdGVlNWQmhj
blJWYmsxMWRHVkNkWFIwYjI0QUlRQUhFWWtTQUFBTUFGZExUV1ZrYVdGVlNWQmhjblJRWVhWelpV
SjFkSFJ2YmdBZwpBQWNSaVJJQUFBMEFWMHROWldScFlWVkpVR0Z5ZEVKaFkydG5jbTkxYm1RQUtB
QUhFWWtTQUFBT0FGZExUV1ZrYVdGVlNWQmhjblJECmRYSnlaVzUwVkdsdFpVUnBjM0JzWVhrQUtn
QUhFWWtTQUFBUEFGZExUV1ZrYVdGVlNWQmhjblJVYVcxbFVtVnRZV2x1YVc1blJHbHoKY0d4aGVR
QXJBQWNSaVJJQUFCSUFWMHROWldScFlWVkpVR0Z5ZEZadmJIVnRaVk5zYVdSbGNrTnZiblJoYVc1
bGNnQWlBQWNSaVJJQQpBQk1BVjB0TlpXUnBZVlZKVUdGeWRGWnZiSFZ0WlZOc2FXUmxjZ0FuQUFj
UmlSSUFBQlFBVjB0TlpXUnBZVlZKVUdGeWRGWnZiSFZ0ClpWTnNhV1JsY2xSb2RXMWlBQ1lBQnhF
eUVBQUFBUUJYUzAxbFpHbGhRMjl1ZEhKdmJHeGxja1pzWVdkRWFYTmhZbXhsWkFBbEFBY1IKTWhB
QUFBSUFWMHROWldScFlVTnZiblJ5YjJ4c1pYSkdiR0ZuVUhKbGMzTmxaQUFsQUFjUk1oQUFBQkFB
VjB0TlpXUnBZVU52Ym5SeQpiMnhzWlhKR2JHRm5SbTlqZFhObFpBQXFBQWNSa2hJQUFBQUFhME5I
UTI5c2IzSkRiMlJsUm5KaFoyMWxiblJNYjI5cmRYQlVaWGgwCmRYSmxBQ2NBQnhHU0VnQUFBUUJy
UTBkRGIyeHZja052WkdWR2NtRm5iV1Z1ZEZCaGNtRnRaWFJ5YVdNQUpnQU5FWThTQUFBQUFBQUEK
QUFCZmFXMXdYMTlyUTBaQmJHeHZZMkYwYjNKRVpXWmhkV3gwQUNNQURSR1BFZ0FBQUFBQUFBQUFY
Mmx0Y0Y5ZmEwTkdRV3hzYjJOaApkRzl5VG5Wc2JBQXFBQXdSckJJQUFBQUFBQUFBQUUxbFpHbGhS
bUZ6ZEVadmNuZGhjbVJKYldGblpVUmhkR0ZmY0c1bkFDd0FCeEY4CkVnQUFMUU5OWldScFlVWmhj
M1JHYjNKM1lYSmtTVzFoWjJWRVlYUmhUR1Z1WjNSb1gzQnVad0F4QUF3UmxCSUFBQUFBQUFBQUFF
MWwKWkdsaFJtRnpkRVp2Y25kaGNtUlFjbVZ6YzJWa1NXMWhaMlZFWVhSaFgzQnVad0F6QUFjUmZC
SUFBRkVEVFdWa2FXRkdZWE4wUm05eQpkMkZ5WkZCeVpYTnpaV1JKYldGblpVUmhkR0ZNWlc1bmRH
aGZjRzVuQUNrQURCR0tFZ0FBQUFBQUFBQUFUV1ZrYVdGR2RXeHNWbTlzCmRXMWxTVzFoWjJWRVlY
UmhYM0J1WndBckFBY1JmQklBQUhrRFRXVmthV0ZHZFd4c1ZtOXNkVzFsU1cxaFoyVkVZWFJoVEdW
dVozUm8KWDNCdVp3QXdBQXdScUJJQUFBQUFBQUFBQUUxbFpHbGhSblZzYkZadmJIVnRaVkJ5WlhO
elpXUkpiV0ZuWlVSaGRHRmZjRzVuQURJQQpCeEY4RWdBQXVnTk5aV1JwWVVaMWJHeFdiMngxYldW
UWNtVnpjMlZrU1cxaFoyVkVZWFJoVEdWdVozUm9YM0J1WndBcEFBd1JreElBCkFBQUFBQUFBQUUx
bFpHbGhSblZzYkhOamNtVmxia2x0WVdkbFJHRjBZVjl3Ym1jQUt3QUhFWHdTQUFCbEEwMWxaR2xo
Um5Wc2JITmoKY21WbGJrbHRZV2RsUkdGMFlVeGxibWQwYUY5d2JtY0FNQUFNRWFrU0FBQUFBQUFB
QUFCTlpXUnBZVVoxYkd4elkzSmxaVzVRY21WegpjMlZrU1cxaFoyVkVZWFJoWDNCdVp3QXlBQWNS
ZkJJQUFJd0RUV1ZrYVdGR2RXeHNjMk55WldWdVVISmxjM05sWkVsdFlXZGxSR0YwCllVeGxibWQw
YUY5d2JtY0FJd0FNRVk0U0FBQUFBQUFBQUFCTlpXUnBZVTExZEdWSmJXRm5aVVJoZEdGZmNHNW5B
Q1VBQnhGOEVnQUEKUkFOTlpXUnBZVTExZEdWSmJXRm5aVVJoZEdGTVpXNW5kR2hmY0c1bkFDb0FE
QkdpRWdBQUFBQUFBQUFBVFdWa2FXRk5kWFJsVUhKbApjM05sWkVsdFlXZGxSR0YwWVY5d2JtY0FM
QUFIRVh3U0FBQjFBMDFsWkdsaFRYVjBaVkJ5WlhOelpXUkpiV0ZuWlVSaGRHRk1aVzVuCmRHaGZj
RzVuQUNRQURCR2NFZ0FBQUFBQUFBQUFUV1ZrYVdGUVlYVnpaVWx0WVdkbFJHRjBZVjl3Ym1jQUpn
QUhFWHdTQUFBTkEwMWwKWkdsaFVHRjFjMlZKYldGblpVUmhkR0ZNWlc1bmRHaGZjRzVuQUNzQURC
R1ZFZ0FBQUFBQUFBQUFUV1ZrYVdGUVlYVnpaVkJ5WlhOegpaV1JKYldGblpVUmhkR0ZmY0c1bkFD
MEFCeEY4RWdBQUpRTk5aV1JwWVZCaGRYTmxVSEpsYzNObFpFbHRZV2RsUkdGMFlVeGxibWQwCmFG
OXdibWNBSXdBTUViRVNBQUFBQUFBQUFBQk5aV1JwWVZCc1lYbEpiV0ZuWlVSaGRHRmZjRzVuQUNV
QUJ4RjhFZ0FBUFFOTlpXUnAKWVZCc1lYbEpiV0ZuWlVSaGRHRk1aVzVuZEdoZmNHNW5BQ29BREJH
d0VnQUFBQUFBQUFBQVRXVmthV0ZRYkdGNVVISmxjM05sWkVsdApZV2RsUkdGMFlWOXdibWNBTEFB
SEVYd1NBQUJrQTAxbFpHbGhVR3hoZVZCeVpYTnpaV1JKYldGblpVUmhkR0ZNWlc1bmRHaGZjRzVu
CkFDVUFEQkdXRWdBQUFBQUFBQUFBVFdWa2FXRlNaWGRwYm1SSmJXRm5aVVJoZEdGZmNHNW5BQ2NB
QnhGOEVnQUFOUU5OWldScFlWSmwKZDJsdVpFbHRZV2RsUkdGMFlVeGxibWQwYUY5d2JtY0FMQUFN
RWFRU0FBQUFBQUFBQUFCTlpXUnBZVkpsZDJsdVpGQnlaWE56WldSSgpiV0ZuWlVSaGRHRmZjRzVu
QUM0QUJ4RjhFZ0FBVHdOTlpXUnBZVkpsZDJsdVpGQnlaWE56WldSSmJXRm5aVVJoZEdGTVpXNW5k
R2hmCmNHNW5BREVBREJHWkVnQUFBQUFBQUFBQVRXVmthV0ZUYkdsa1pYSlVjbUZqYTB4bFpuUkRZ
WEJKYldGblpVUmhkR0ZmY0c1bkFETUEKQnhGOEVnQUFCZzVOWldScFlWTnNhV1JsY2xSeVlXTnJU
R1ZtZEVOaGNFbHRZV2RsUkdGMFlVeGxibWQwYUY5d2JtY0FPQUFNRVlzUwpBQUFBQUFBQUFBQk5a
V1JwWVZOc2FXUmxjbFJ5WVdOclRHVm1kRU5oY0V4dllXUnBibWRKYldGblpVUmhkR0ZmY0c1bkFE
b0FCeEY4CkVnQUFBUTVOWldScFlWTnNhV1JsY2xSeVlXTnJUR1ZtZEVOaGNFeHZZV1JwYm1kSmJX
Rm5aVVJoZEdGTVpXNW5kR2hmY0c1bkFEQUEKREJHdEVnQUFBQUFBQUFBQVRXVmthV0ZUYkdsa1pY
SlVjbUZqYTAxcFpHUnNaVWx0WVdkbFJHRjBZVjl3Ym1jQU1nQUhFWHdTQUFDYQpEVTFsWkdsaFUy
eHBaR1Z5VkhKaFkydE5hV1JrYkdWSmJXRm5aVVJoZEdGTVpXNW5kR2hmY0c1bkFEY0FEQkdqRWdB
QUFBQUFBQUFBClRXVmthV0ZUYkdsa1pYSlVjbUZqYTAxcFpHUnNaVXh2WVdScGJtZEpiV0ZuWlVS
aGRHRmZjRzVuQURrQUJ4RjhFZ0FBbGcxTlpXUnAKWVZOc2FXUmxjbFJ5WVdOclRXbGtaR3hsVEc5
aFpHbHVaMGx0WVdkbFJHRjBZVXhsYm1kMGFGOXdibWNBTWdBTUVhVVNBQUFBQUFBQQpBQUJOWldS
cFlWTnNhV1JsY2xSeVlXTnJVbWxuYUhSRFlYQkpiV0ZuWlVSaGRHRmZjRzVuQURRQUJ4RjhFZ0FB
L3cxTlpXUnBZVk5zCmFXUmxjbFJ5WVdOclVtbG5hSFJEWVhCSmJXRm5aVVJoZEdGTVpXNW5kR2hm
Y0c1bkFEa0FEQkdnRWdBQUFBQUFBQUFBVFdWa2FXRlQKYkdsa1pYSlVjbUZqYTFKcFoyaDBRMkZ3
VEc5aFpHbHVaMGx0WVdkbFJHRjBZVjl3Ym1jQU93QUhFWHdTQUFEN0RVMWxaR2xoVTJ4cApaR1Z5
VkhKaFkydFNhV2RvZEVOaGNFeHZZV1JwYm1kSmJXRm5aVVJoZEdGTVpXNW5kR2hmY0c1bkFDUUFE
QkduRWdBQUFBQUFBQUFBClRXVmthV0ZVYUhWdFlrbHRZV2RsUkdGMFlWOXdibWNBSmdBSEVYd1NB
QUJQQkUxbFpHbGhWR2gxYldKSmJXRm5aVVJoZEdGTVpXNW4KZEdoZmNHNW5BQ3NBREJHZEVnQUFB
QUFBQUFBQVRXVmthV0ZVYUhWdFlsQnlaWE56WldSSmJXRm5aVVJoZEdGZmNHNW5BQzBBQnhGOApF
Z0FBZUFSTlpXUnBZVlJvZFcxaVVISmxjM05sWkVsdFlXZGxSR0YwWVV4bGJtZDBhRjl3Ym1jQUxR
QU1FYVlTQUFBQUFBQUFBQUJOClpXUnBZVlJ2WjJkc1pVTmhjSFJwYjI1elNXMWhaMlZFWVhSaFgz
QnVad0F2QUFjUmZCSUFBTWNEVFdWa2FXRlViMmRuYkdWRFlYQjAKYVc5dWMwbHRZV2RsUkdGMFlV
eGxibWQwYUY5d2JtY0FOQUFNRVpBU0FBQUFBQUFBQUFCTlpXUnBZVlJ2WjJkc1pVTmhjSFJwYjI1
egpVSEpsYzNObFpFbHRZV2RsUkdGMFlWOXdibWNBTmdBSEVYd1NBQUNSQTAxbFpHbGhWRzluWjJ4
bFEyRndkR2x2Ym5OUWNtVnpjMlZrClNXMWhaMlZFWVhSaFRHVnVaM1JvWDNCdVp3QTFBQWNSZkJJ
QUFCQUpUV1ZrYVdGT1pYZFZTVUYxWkdsdlZtOXNkVzFsU0dsbmFFbHQKWVdkbFJHRjBZVXhsYm1k
MGFGOXdaR1lBTkFBSEVYd1NBQUFSQ0UxbFpHbGhUbVYzVlVsQmRXUnBiMVp2YkhWdFpVOW1aa2x0
WVdkbApSR0YwWVV4bGJtZDBhRjl3WkdZQU5BQUhFWHdTQUFCblUwMWxaR2xoVG1WM1ZVbERiRzl6
WldSRFlYQjBhVzl1YzBsdFlXZGxSR0YwCllVeGxibWQwYUY5d1pHWUFOUUFIRVh3U0FBQTVDRTFs
WkdsaFRtVjNWVWxGYm5SbGNrWjFiR3h6WTNKbFpXNUpiV0ZuWlVSaGRHRk0KWlc1bmRHaGZjR1Jt
QUMwQUJ4RjhFZ0FBZ2c5TlpXUnBZVTVsZDFWSlJtOXlkMkZ5WkVsdFlXZGxSR0YwWVV4bGJtZDBh
Rjl3WkdZQQpNUUFIRVh3U0FBQjREMDFsWkdsaFRtVjNWVWxRWVhWelpVSjFkSFJ2YmtsdFlXZGxS
R0YwWVV4bGJtZDBhRjl3WkdZQU1BQUhFWHdTCkFBQnZEMDFsWkdsaFRtVjNWVWxRYkdGNVFuVjBk
Rzl1U1cxaFoyVkVZWFJoVEdWdVozUm9YM0JrWmdBdkFBY1JmQklBQU5rSFRXVmsKYVdGT1pYZFZT
VkpsZEhKbFlYUXpNRWx0WVdkbFJHRjBZVXhsYm1kMGFGOXdaR1lBTkFBSEVYd1NBQUNnRDAxbFpH
bGhUbVYzVlVsVApaV1ZyVkc5U1pXRnNkR2x0WlVsdFlXZGxSR0YwWVV4bGJtZDBhRjl3WkdZQUhR
QU5FUXNRQUFBQUFBQUFBQUJmYVcxd1gxOURSMU5wCmVtVmFaWEp2QUJZQUNCRndFZ0FBUTBaRWFX
TjBhVzl1WVhKNVVtVm1BQmdBQ0JIb0VBQUFiRzlqWVd4bGFXNW1iMTl6ZEhKMVkzUUEKSWdBSUVa
MFFBQUJOWldScFlVeGxaMkZqZVZWSlZHbHRaV3hwYm1WVGJHbGtaWElBRGdBSUVYUUFBQUJsY25K
dWIxOTBBQXdBQ0JHdgpFZ0FBYkdOdmJuWUFGUUFJRWVZUUFBQndkR2h5WldGa2JXSmphVzVtYndB
UUFBZ1JVQklBQUVOR1JHRjBZVkpsWmdBT0FBZ1JkUUFBCkFISnphWHBsWDNRQURRQUlFWFVBQUFC
VlNXNTBNeklBRndBSUVhc1NBQUJmUTBkSmJuUmxjbTVoYkVWeWNtOXlBQklBQ0JFV0VBQUEKUTBa
VGRISnBibWRTWldZQUVBQUlFVzRSQUFCRFJsUjVjR1ZTWldZQUZ3QUlFYVFSQUFCRFJsTjNZWEJ3
WldSR2JHOWhkRE15QUE4QQpDQkVoQUFBQWRXbHVkREUyWDNRQURRQUlFUk1BQUFCMGFXMWxYM1FB
RGdBSUVVQUFBQUJEUjBac2IyRjBBQThBQ0JGMUFBQUFkV2x1CmRETXlYM1FBRHdBSUVTTUFBQUIx
YVc1ME5qUmZkQUFNQUFnUkFoQUFBRXhEWDBsRUFCTUFDQkVwRUFBQVEwZERiMjUwWlhoMFVtVm0K
QUE0QUNCRUlFQUFBUTBkUWIybHVkQUFPQUFnUkJSQUFBRU5HVW1GdVoyVUFIUUFJRVljU0FBQjBh
SEpsWVdSc2IyTmhiR1ZwYm1adgpjM1J5ZFdOMEFCRUFDQkdBRUFBQVEwZEpiV0ZuWlZKbFpnQWNB
QWdSV3hBQUFFMWxaR2xoVlVsVWFXMWxiR2x1WlZOc2FXUmxjZ0FRCkFBZ1I0QkFBQUY5c2IyTmhi
R1ZmZEFBZ0FBZ1JpeEFBQUUxbFpHbGhUR1ZuWVdONVZVbEpiV0ZuWlVWc1pXMWxiblFBR2dBSUVh
MFEKQUFCTlpXUnBZVXhsWjJGamVVTnZiblJ5YjJ4ekFBMEFDQkV6RVFBQWJHUnBkbDkwQUEwQUNC
RWhBQUFBZDJsdWRGOTBBQTBBQ0JIeQpFQUFBWDJsdlluVm1BQmdBQ0JFTkVRQUFRMGRFWVhSaFVI
SnZkbWxrWlhKU1pXWUFIUUFJRVZvU0FBQkRSME52Ykc5eVVtVnVaR1Z5CmFXNW5TVzUwWlc1MEFC
Y0FDQkdzRVFBQVEwWlRkMkZ3Y0dWa1JteHZZWFEyTkFBVUFBZ1JueElBQUY5ZlEwWkNlWFJsVDNK
a1pYSUEKRGdBSUVSSUFBQUJEUmtsdVpHVjRBQnNBQ0JFYUVBQUFRMFpUZEhKcGJtZEpibXhwYm1W
Q2RXWm1aWElBRUFBSUVYVUFBQUJWVkVZegpNa05vWVhJQURnQUlFWEFFQUFCMllWOXNhWE4wQUJj
QUNCR2JFZ0FBUTBkSmJXRm5aVUZzY0doaFNXNW1id0FPQUFnUlFBQUFBRVpzCmIyRjBNeklBRlFB
SUVid1JBQUJEUmtGc2JHOWpZWFJ2Y2xKbFpnQWFBQWdSbUJJQUFFTkhVM1I1YkdWRWNtRjNUM0pr
WlhKcGJtY0EKRVFBSUVSTUFBQUJmWDNScGJXVTJORjkwQUFrQUNCR1NFUUFBZEcwQUVRQUlFVzBT
QUFCRFIweGhlV1Z5VW1WbUFCVUFDQkZHRUFBQQpUV1ZrYVdGVlNVVnNaVzFsYm5RQURRQUlFWFVB
QUFCemFYcGxYM1FBRkFBSUVYWVFBQUJOWldScFlVTnZiblJ5YjJ4ekFBOEFDQkVDCkVBQUFkR0Zu
VEVOZlNVUUFEZ0FJRVFVUUFBQkRSbEpoYm1kbEFCc0FDQkVhRUFBQVEwWlRkSEpwYm1kSmJteHBi
bVZDZFdabVpYSUEKRkFBSUVZa1NBQUJYUzAxbFpHbGhWVWxRWVhKMEFDSUFDQkV5RUFBQVYwdE5a
V1JwWVVOdmJuUnliMnhzWlhKVWFHVnRaVk4wWVhSbApBQmNBQ0JHa0VRQUFRMFpUZDJGd2NHVmtS
bXh2WVhRek1nQVhBQWdSckJFQUFFTkdVM2RoY0hCbFpFWnNiMkYwTmpRQURRQUlFUXNRCkFBQkRS
MU5wZW1VQUdBQUlFUkVRQUFCRFIwRm1abWx1WlZSeVlXNXpabTl5YlFBaUFBZ1JNaEFBQUZkTFRX
VmthV0ZEYjI1MGNtOXMKYkdWeVZHaGxiV1ZUZEdGMFpRQUxBQWdSOGhBQUFFWkpURVVBREFBSUVT
QUFBQUJWU1c1ME9BQU9BQWdSSVFBQUFGVnVhVU5vWVhJQQpEZ0FJRVRNUkFBQmZiR1JwZGw5MEFB
NEFDQkZCQUFBQVJteHZZWFEyTkFBVkFBZ1I1QkFBQUhCMGFISmxZV1JzYjJOcGJtWnZBQTBBCkNC
RU9FQUFBUTBkU1pXTjBBQUFBOUFBQUFQZ1FBQUFCQUFBQUVBRzVTYjB2dVNwSCtENSt5M1RYZFE2
TUFBQXFBQUFBRUFFVHNiTEEKT0xtSXVyNWZLWHVJazFvdkFBQmJBQUFBRUFFMTdGN2pNSWJXWmlp
TXU4Z0J0RkpvQUFDVUFBQUFFQUZnQmRqbXBneTVMcFZBRGxKMAprQ2RnQUFEVEFBQUFFQUdpY012
VkpaV2JVUjZCL1IyeFJSY0VBQUFKQVFBQUVBR0dKTXd2R2s4M2NnUmNTd3BkV0JkSEFBQTdBUUFB
CkVBRzFobjdWWTNnYlo4V1VrUGtManZFSkFBQi9BUUFBRUFFenVZY3hBMVlxNk5UeUwwdmZhU21Q
QUFDNEFRQUFFQUdNM2NuVFZtYlkKRU00VmFnTlpRbHlaQUFEOUFRQUFFQUg3b3pJOUxFL0luZ0ZT
dVZsdGRqbk9BQUF1QWdBQUVBRUFHTEw3ZFl0Sk5VbTlpOE01dGtoOQpBQUJsQWdBQUVBRm1SZURK
VEtQMGxRaDA2L1ZTanA4ZUFBQ1RBZ0FBRUFGeGVhQnVwMVRQQkJ5V0Ntc2JmRzdUQUFDOUFnQUFF
QUhRCnZQMWNZUkM4bS9DbkFGT3c5SUY5QUFBQkF3QUFFQUhpVkRFTDJscENoU2M2ME1ZMStIM0pB
QUErQXdBQUVBSFRjQmFHMWw0U1oyRmoKWHUwTTJMTzBBQUJtQXdBQUVBSGhJOGtVQWN4TGJtdUFV
REZzVU03T0FBQ1lBd0FBRUFHTW9LaVBFeVc5WDNycjhLWkJPdUxXQUFESQpBd0FBRUFGNytFVkZm
TWVQOVRtVkVSYnJ1REM2QUFBQUJBQUFFQUdrZ2w0TC91aGZhTFQ2WVBDTlpWcEJBQUF6QkFBQUVB
SFY3MEtOClRqWFczcDYyZ2kvM2ZWL0lBQUJsQkFBQUVBRkEwdWtUcUxxS2Izd0cvcHBkK3Zic0FB
Q2ZCQUFBRUFGNlYraUw2dUdlelJEcjIxcjQKQjhPRUFBRDVCQUFBRUFHOHNJaTYvcFk3dFRMcDNJ
bFpuckZ6QUFBc0JRQUFFQUhzSXlFazdZMHBrYmd6cUJxOEtacVNBQUJqQlFBQQpFQUZ4bWNBOGQx
TGVGYjZBdkpHSXNMeEFBQUNVQlFBQUVBSHlzNGJYeVA1cWdGVmpEY1VLWEQ4ZkFBQzlCUUFBRUFG
eVNFMmVQS1ExCmI0d0NSQ1AyWEl2cEFBRHdCUUFBRUFHVk5KdzFuYUJMVUlIUFpkK0RRV25zQUFB
ZUJnQUFFQUdxSXpvd1BpQnRXU3dpektrRUQ5WUQKQUFCYUJnQUFFQUh2M20yQ3VXQjg2NUdYWCs2
UHh5dGFBQUI4QmdBQUVBSFhEaGdlS05STnFsQXlBajlScHpUWEFBQzJCZ0FBRUFIaAphMjNOeU1I
Mzh0K1BxVE92TTFBR0FBRHJCZ0FBRUFHblg0M2FLWjVBeWp3em10ODdVcDIrQUFBakJ3QUFFQUd4
a3V6YmFwYWMrMFFPClhmcFJwcWNjQUFCWEJ3QUFFQUg4clVMUnBmQUt2THlsYUsrTDNKbHRBQUNJ
QndBQUVBRUxVMFZNcStTUHluNUFmaUttM3hTMkFBQzQKQndBQUVBSDBXZWJwY1U2U3FZSjBybkJ3
STJEdkFBRHJCd0FBRUFGNTR5R1JtbTdKRHE4RDJHMVVBQnF0QUFBd0NBQUFFQUVpRDR1ZApSZlBC
RGtiN3FJd1RrV2xlQUFCa0NBQUFFQUhmMDRlTHduS2FJZTlnejlWZlN1UVVBQUNwQ0FBQUVBRUYz
SmgxRjEyT3N5Z0g0MlNPCjduL0tBQURZQ0FBQUVBRmlXV1Z0eGRXaFBqV21SZmtiMDRJN0FBQUlD
UUFBRUFILzRaZWc2OTJRUStmcnJ1eDV5VWIwQUFCaUNRQUEKRUFIMEswOTF4cG11RFRLbVJvcVFm
bCt0QUFDbENRQUFFQUdOYW1Xekx1L1puUXFqcy9jMkkrM3hBQURxQ1FBQUVBRzJhVkpqWTZLbQpj
dG1zN09HaVo1MGlBQUFuQ2dBQUVBR3lRSTJqT0YvaFlzMDVDcGlGNG1EYkFBQmRDZ0FBRUFHSEhq
SmNWTmR1RERPMEQ0QnFjZWo4CkFBQ1ZDZ0FBRUFGdXJJTGxSYm40VWFGMDkyVnFkWERpQUFES0Nn
QUFFQUZzbnhIV1U0clJFcWpMKy9nSGoxOGhBQUQvQ2dBQUVBSHUKdXJCS3FTMzMzNGJXTUZiYTc2
OVBBQUF4Q3dBQUVBRUpMbDFrNTROZWVkS2hoWW54TnNDQ0FBQnNDd0FBRUFGeERYZnVCWlJ6UFhy
cwo2WWh3OFJUWUFBQ2tDd0FBRUFHMUQxOW1oSzNOWjczTnNqY09JZjZJQUFEWEN3QUFFQUUzSklM
T0xoKzdLYUd0eTJQNVZSZWtBQUFOCkRBQUFFQUhHNWY2QmcyTnVZcFd0Y2YwNVlWeTJBQUJTREFB
QUVBRUxoU2RoOGN0bXEyTzNBcXR1OWs1WkFBQ0VEQUFBRUFHMkoySkQKaGJWUytod2xoaFJXczhW
aUFBQ3pEQUFBRUFISi9OYllpWkNiYUlCVUlMd0x3eW9BQUFEbURBQUFFQUhVb1Z6Qkt3UWoxbGVY
cUtQeApNdTl5QUFBVURRQUFFQUVLYW5jNU9JRDVQYXJtNDVmSVBheW9BQUJMRFFBQUVBRVkwYklU
TEtCM28yT3N5NkR6aFgyVEFBQ0REUUFBCkVBRXQ1U0xCL2RyeEdEb0R6aDE2ZDlpQUFBQytEUUFB
RUFFL293TlFBSmlOK21ZUGs1WmZWelg0QUFEMkRRQUFFQUV5UGtEN2xZTVgKSzJkR0RyVG1BNFM4
QUFBK0RnQUFFQUhzZVV3SnV1Z1JCb2N1SlZJaEVnYlhBQUJ4RGdBQUVBSDJSQ3RTakFjMEVLTTJS
bkNOTU5ZSwpBQUNrRGdBQUVBRnhWU2ZlS2xtb20yclJaSFZlNmVNUkFBRFpEZ0FBRUFHa08yekZU
YUwrOXNpVE1URkdlMXhZQUFBaUR3QUFFQUZzCmdxSUhGRzl4UEZjcnhUcUx0R2QzQUFCZkR3QUFF
QUVoVjVSS3BuSVd5S0h2TzR3K3FscFBBQUNtRHdBQUVBSGNjZGMwRlVtdGc1OHYKZHdHTGN3d0FB
QURiRHdBQUVBRzZGL1JVUEkyYVNWbzMyZjduM21tL0FBQUdFQUFBRUFISmtLaUlJMGYzME9PMzVh
UWt4VGVzQUFCQwpFQUFBRUFFVDhzN1VxNTJiNnhxUjJwVUM2YnhnQUFCMkVBQUFFQUg2RVR1Y1pp
VjlMNU9pS0RTc0dybHZBQUN3RUFBQUVBR1Y3UzRsCm9CZHlYdUdGYzZOSXFVeW1BQURoRUFBQUVB
R0VicWYrOGFseFVHemQ5VkpmcWZndEFBQWVFUUFBRUFHcTBhSjlaOGZ0OElvTFpjWXEKMkdZbEFB
QkJFUUFBRUFFaGsvV0N3ZytOZ2hKT0pCUFVxL2tlQUFDQUVRQUFFQUdkTGticlRMbTBNd2ZkOUlT
Sm9JV1pBQURGRVFBQQpFQUc1dGU2N1NTN3YyajFYaCt4OWRkU1ZBQUQ3RVFBQUVBRytibW5laUZN
VDVkbXdiTmhnU0hNSEFBQXpFZ0FBRUFGd3ZFMW5aSTJYCkYralJKWENjN2wvQ0FBQnJFZ0FBRUFH
RnA3Vkg2OTVrc0Vabm1DRUxMVW9BQUFDbEVnQUFFQUVFK0RWbnhPR1BLaTNJNkZIWnlMRFEKQUFE
Y0VnQUFFQUYzZjZrRUpQNmhGZXUwbDh0QlpsZFJBQUFURXdBQUVBRXJIMkFqTnVyZVVlVDJ0OWZS
dy9YYkFBQlJFd0FBRUFIUAovWjB4bkRYelUyaGZlNGsrQXBiZkFBQ1dFd0FBRUFIN2k1aVBrVFZK
Z2tQcmJ0NUVkcWJtQUFESkV3QUFFQUhldFEyZkMyTkNCVzRBCktwTjc1b0dJQUFENEV3QUFFQUd3
U3dLaCtRSGRKYlRqei9hVjNQekVBQUFyRkFBQUVBRXZYN2p5c3NnM2VMVSt4a09DcFRLa0FBQmUK
RkFBQUVBRXZKREZRQVBlQlRWOG9UcVk3a3V0TUFBQ1VGQUFBRUFIVHpidVlFYlZuZ0IrOTkrS3hn
VENCQUFETEZBQUFFQUVQOFlzWgpJZHhjMitadGMwRGNKR3FxQUFEN0ZBQUFFQUg5ZDZ1ajZ2WHR2
MkhKbjFBSmVuNW9BQUJCRlFBQUVBR3FWYUYzc1Z6RjBqSnZLbmo1CmZraDFBQUIyRlFBQUVBRW8z
YUFFaWNxQTI1Y2lBUXZUMGxzbUFBQ3lGUUFBRUFHQ3hvZm5lZlVoYjYzTVBMbEtFSkVBQUFEbEZR
QUEKRUFIQWdyKy81NVVzK3lVT2NvV0RsNzZyQUFBVkZnQUFFQUdyK2NZblhTTE1UdzVOTXZsZ3Ir
UzdBQUJLRmdBQUVBSHM2VGpRZUdpago1RHNDV3k1dGRzM0FBQUNCRmdBQUVBRlR3UlZyWmdsM1pB
bzBpTEZ4dmVBUkFBQzNGZ0FBRUFIZzliU1l6YUlxeUlKMm9GQzhRRVJoCkFBRGlGZ0FBRUFGZ1Q5
djgzUlVDNWpCK1ZvNmk5d3R0QUFBU0Z3QUFFQUUxTUpaYXNhN1ErZmRDZGdsM2dOMmlBQUJMRndB
QUVBR3gKdE5ydmV2a05nMTFOTGtvVmloRzBBQUI2RndBQUVBR0VwdkI2ZVNWalBRcUIvaG1DVFRp
N0FBQy9Gd0FBRUFHVkRibUFoazBLYnRWaQplRGU2UEJFdEFBRHhGd0FBRUFFZE56MWIzNWRLSEhk
bTNIZll6STFtQUFBcUdBQUFFQUhtTFhZLzFSUkNITHFVdi9LbVlpNThBQUJhCkdBQUFFQUVHMGZR
bTBJL0FRV1FPTUNxYXdja3RBQUNmR0FBQUVBRzVTRXdNeWl2dFNNZzdGKytoQzRTTkFBRGpHQUFB
RUFIeTJKaDAKOEVJK0RoUmh2NVhEeVQwcUFBQWJHUUFBRUFHRTZodmFLU2E1TzMwTE1XOFM0ZUdt
QUFCUEdRQUFFQUgyMDFlV2c3ajF0QjNxSm12ZApxZkhrQUFDQUdRQUFFQUhPbjlRY0lsSnFrQ1l6
QSt6UUNadVpBQUN4R1FBQUVBR0hRMEpVenozcVRLRk9TMXlVbWY1akFBRG9HUUFBCkVBR2dlS09S
NDVpKzBCbFFvZGU3alZXRkFBQWRHZ0FBRUFHRit3VFFtWlZobUpXK2laMlJ2cUZDQUFCTkdnQUFF
QUhHRUVCcldBaXMKZFVoVlU1UEM2ZVBJQUFCOEdnQUFFQUVTcHJKSndNeGcrOHdrM2VrOUg3S3FB
QUMvR2dBQUVBR1dwMW5mRzdDUHFyTktiMWtCYTRCRQpBQUFER3dBQUVBR3NCc1hOSkdWbmdwM1Yy
UlB0dVpkSEFBQTJHd0FBRUFIN3BGeW9hY1hQVHFYcnNkUHA2NVR2QUFCN0d3QUFFQUZTClRSTlUy
QTBaaVBCaTI1NTlQZEZKQUFDeUd3QUFFQUZuTHpRMVFoRnBrSjVpQmF1VEhkalhBQURtR3dBQUVB
R0ZWZjhZV3V2U2NrK0UKeThQNlFIdG9BQUFYSEFBQUVBRVkyaVkxN29FZHlWK2p4djU0cUpnK0FB
QlBIQUFBRUFFTTVUTVlQbWVwZVdXclIrZU5JZGNPQUFDTgpIQUFBRUFHalk2bDdDYVJpVjBrUTVK
M2J2azZLQUFDNkhBQUFFQUdGQWlvZFNreGtqQTlLTDZXaU82ZkRBQURqSEFBQUVBRUtOZ0RpCkgz
K1ZnZEVwc1QxVE1nWGtBQUFhSFFBQUVBRXlhQmQ5NXV2aTA2UkZoL1N4K0V1R0FBQlFIUUFBRUFH
U2lVUmlhNkJjMDhGbkV3dysKZHRPVEFBQjVIUUFBRUFINDZ6Q3M3blRaUDNhdW9EMkZoZkgzQUFD
dkhRQUFFQUVNRGIvU1VDYkY1K0VPWlN1RyttSGxBQURpSFFBQQpFQUV6VkM2Tyt6alJYK3p1cXRm
cXJBSWdBQUFOSGdBQUVBRkxBaEg1N2UwOXltcjFrdk12WDBQc0FBQktIZ0FBRUFHTzNtWUdDYk5k
CktZdzJwZ3JpT0xtU0FBQjhIZ0FBRUFGeDh3WlJEL3Y4a1B1RkxqWEg5Z3QrQUFDdkhnQUFFQUh5
cDl5WUQ5b2ZGUEtHVW5nZmVRNXIKQUFEcUhnQUFFQUVFL1JFaGVHZVBGbFBVTTZGeElNNDlBQUFu
SHdBQUVBR1hGak5Qb3NWYmJ3TFRTSXRNQVU4REFBQmRId0FBRUFFSgpTQVlZNVBlcXozNmF6UHBG
YnNjUEFBQ1RId0FBRUFFb0NMT1pkRTV3a2cvdnJjYVNaRENoQUFESkh3QUFFQUhqWVU5OEQwVVkz
aGU1CmNYYTZlVGNyQUFENkh3QUFFQUhLM241akNJS2ZNUXdyTkRwWm9GSUxBQUFrSUFBQUVBRXha
dWlpeHBmd0U2VFcwenhZdXNvVkFBQlYKSUFBQUVBRXVxLzNUdDJNL2pBL2hpbzMzV1JEMEFBQ0ZJ
QUFBRUFGWUhRd053ZjVFTWF2TC9PVm80bFptQUFEZElBQUFFQUd6NldpcwpVbWtuQTYxbW1McHg0
WnV2QUFBdklRQUFFQUdOMGhPcEZiQzVtTXZ4ZXlxdm1vTjBBQUJtSVFBQUVBRzdHSVIxOEc0bjFk
NDMwVFBvCmNncFpBQUNZSVFBQUVBRk1pci9BY1N4clJHSmxsbzdPaGJjQkFBRFNJUUFBRUFGVDUz
MmN3bkc4RTZSanVTSk5nV2hOQUFBTElnQUEKRUFGMkVEZTIxczh5cWt4THVQSTZHaUFUQUFBN0ln
QUFFQUg1bFdpbjVhUTFKSDhXTzk2MFVnU1hBQUJxSWdBQUVBR0VpUGZJMGNDVgpTbHZsYmRrK1ZG
NkZBQUNpSWdBQUVBRU5FV2RpUTdpTzZQM3dRNGVMTUFtaEFBRGVJZ0FBRUFGNHh5WUpYcVlyR1hs
c3NuY3BXWjJGCkFBQUJJd0FBRUFHZ2JZUm84a3d0N29DOStoUlNhM0FoQUFBM0l3QUFFQUZaKzQx
VFRkSWVGZ1RDV0U1M2crL1dBQUI4SXdBQUVBR04Kb2VtaEczMVBvRzBZR2V5WjRuUTBBQUMxSXdB
QUVBSE16bHFTWlRvRUpaZ2xrUko4K3JZZkFBRHFJd0FBRUFIajM2VDZJQnBEVHpJVwpIbjlYTnM2
SUFBQWNKQUFBRUFGeEgxUXNjdWlMSElRMnJaNDNjdm9iQUFCaUpBQUFFQUh4WThyNjVqc3FjNTI2
dk1qNGUyMUpBQUNnCkpBQUFFQUY2UC9FUVNFWFFRajJOajFyN2xkOTVBQURUSkFBQUVBRSt1SVpq
RjhTWDNGblB2RW1xTTBvdEFBQVZKUUFBRUFGV0cwb2QKVTVsOXdFbi9PVmVXS013ZEFBQklKUUFB
RUFFV0VYbXM2YThSZ3JrS1cyQXZtMUF5QUFDUEpRQUFFQUVFQUJTSnE2ZVFxeTBOdzhCcwpkNzBF
QUFERUpRQUFFQUZsUzZGa0drQmNHSUZFWHZJQjVGNTVBQUQ5SlFBQUVBSEE5UExVYjBSSmQyME5B
ZVUvOXdWakFBQkNKZ0FBCkVBRXhCMmk0MkxTZUUyZFNWc2YwOTVkeEFBQjFKZ0FBRUFHNWZENXBr
dTRUS3JobEtrM09tZjVmQUFDcUpnQUFFQUVwUkdORjBUb2MKVEExZm1rbms2R0tnQUFEZUpnQUFF
QUZjMXZlaHoxTGZvQ0hkTndNd0h3NVJBQUR6QUFBQXF5a0FBQUJqT2x4aGNIQnNaV2x1ZEdWeQpi
bUZzWEdsdVkyeDFaR1ZjWkdsemNHRjBZMmhjZEdsdFpTNW9BR002WEdGd2NHeGxhVzUwWlhKdVlX
eGNhVzVqYkhWa1pWeGpiM0psClptOTFibVJoZEdsdmJseGpablJ5WldVdWFBQmpPbHhoY0hCc1pX
bHVkR1Z5Ym1Gc1hHbHVZMngxWkdWY1kyOXlaV2R5WVhCb2FXTnoKWEdObmNtVnVaR1Z5YVc1bmMz
UmhkR1V1YUFCak9seGhjSEJzWldsdWRHVnlibUZzWEdsdVkyeDFaR1ZjWTI5eVpXWnZkVzVrWVhS
cApiMjVjWTJadWIzUnBabWxqWVhScGIyNWpaVzUwWlhJdWFBQmpPbHhoY0hCc1pXbHVkR1Z5Ym1G
c1hHbHVZMngxWkdWY1kyOXlaV2R5CllYQm9hV056WEdOblltRnpaWEJ5YVhaaGRHVXVhQUJqT2x4
aGNIQnNaV2x1ZEdWeWJtRnNYR2x1WTJ4MVpHVmNZMjlzYjNKemVXNWoKWEdOdmJHOXljM2x1WTJO
dGJTNW9BR002WEhCeWIyZHlZVzBnWm1sc1pYTWdLSGc0TmlsY2JXbGpjbTl6YjJaMElIWnBjM1Zo
YkNCegpkSFZrYVc4Z09GeDJZMXhwYm1Oc2RXUmxYR1Z5Y201dkxtZ0FZenBjWVhCd2JHVnBiblJs
Y201aGJGeHBibU5zZFdSbFhHTnZjbVZtCmIzVnVaR0YwYVc5dVhHTm1ZMmhoY21GamRHVnljMlYw
TG1nQVl6cGNjSEp2WjNKaGJTQm1hV3hsY3lBb2VEZzJLVnh0YVdOeWIzTnYKWm5RZ2RtbHpkV0Zz
SUhOMGRXUnBieUE0WEhaalhHbHVZMngxWkdWY2MyVjBhbTF3TG1nQVl6cGNZWEJ3YkdWcGJuUmxj
bTVoYkZ4cApibU5zZFdSbFhHTnZjbVZuY21Gd2FHbGpjMXhqWjJOeWVYQjBieTVvQUdNNlhHRndj
R3hsYVc1MFpYSnVZV3hjYVc1amJIVmtaVnhqCmIzSmxaM0poY0docFkzTmNZMmQwWlhoMFkyeHBj
SEJwYm1jdWFBQmpPbHhoY0hCc1pXbHVkR1Z5Ym1Gc1hHbHVZMngxWkdWY1pHbHoKY0dGMFkyaGNj
MlZ0WVhCb2IzSmxMbWdBWXpwY1lYQndiR1ZwYm5SbGNtNWhiRnhwYm1Oc2RXUmxYR1JwYzNCaGRH
Tm9YSEYxWlhWbApMbWdBWXpwY2NISnZaM0poYlNCbWFXeGxjeUFvZURnMktWeHRhV055YjNOdlpu
UWdkbWx6ZFdGc0lITjBkV1JwYnlBNFhIWmpYR2x1ClkyeDFaR1ZjYzNSa2FXOHVhQUJqT2x4aGNI
QnNaV2x1ZEdWeWJtRnNYR2x1WTJ4MVpHVmNZMjl5WldkeVlYQm9hV056WEdObmJtOTAKYVdacFky
RjBhVzl1WTJWdWRHVnlMbWdBWXpwY1lYQndiR1ZwYm5SbGNtNWhiRnhwYm1Oc2RXUmxYR0YyWVds
c1lXSnBiR2wwZVM1bwpBR002WEdGd2NHeGxhVzUwWlhKdVlXeGNhVzVqYkhWa1pWeGpiM0psWm05
MWJtUmhkR2x2Ymx4alptVnljbTl5TG1nQVl6cGNZWEJ3CmJHVnBiblJsY201aGJGeHBibU5zZFdS
bFhHRjJZV2xzWVdKcGJHbDBlV2x1ZEdWeWJtRnNMbWdBWXpwY1lYQndiR1ZwYm5SbGNtNWgKYkZ4
cGJtTnNkV1JsWEdOdmNtVm5jbUZ3YUdsamMxeGpaMmx0WVdkbGNISnZkbWxrWlhJdWFBQmpPbHho
Y0hCc1pXbHVkR1Z5Ym1GcwpYR2x1WTJ4MVpHVmNZMjl5WldadmRXNWtZWFJwYjI1Y1kyWnpkSEpw
Ym1jdWFBQmpPbHhoY0hCc1pXbHVkR1Z5Ym1Gc1hHbHVZMngxClpHVmNZMjl5WldadmRXNWtZWFJw
YjI1Y1kyWmhjbkpoZVM1b0FHTTZYR0Z3Y0d4bGFXNTBaWEp1WVd4Y2FXNWpiSFZrWlZ4amIzSmwK
WjNKaGNHaHBZM05jWTJkaFptWnBibVYwY21GdWMyWnZjbTB1YUFCak9seGplV2QzYVc1Y2FHOXRa
VnhqYldGeWNtbHVYSGRsWW10cApkR0oxYVd4a1hHOWlhbHgzWldKcmFYUnplWE4wWlcxcGJuUmxj
bVpoWTJWY1pHVnlhWFpsWkhOdmRYSmpaWE5jYldWa2FXRnBiV0ZuClpYTXVhQUJqT2x4aGNIQnNa
V2x1ZEdWeWJtRnNYR2x1WTJ4MVpHVmNZMjl5WldkeVlYQm9hV056WEdObloyVnZiV1YwY25rdWFB
QmoKT2x4aGNIQnNaV2x1ZEdWeWJtRnNYR2x1WTJ4MVpHVmNZMjl5WldadmRXNWtZWFJwYjI1Y1ky
WmthV04wYVc5dVlYSjVMbWdBWXpwYwpZWEJ3YkdWcGJuUmxjbTVoYkZ4cGJtTnNkV1JsWEdOdmNt
Vm1iM1Z1WkdGMGFXOXVYR05tWW1GelpTNW9BR002WEdGd2NHeGxhVzUwClpYSnVZV3hjYVc1amJI
VmtaVnhrYVhOd1lYUmphRnh2Ym1ObExtZ0FZenBjWVhCd2JHVnBiblJsY201aGJGeHBibU5zZFdS
bFhHTnYKY21WbWIzVnVaR0YwYVc5dVhHTm1iblZ0WW1WeUxtZ0FZenBjWVhCd2JHVnBiblJsY201
aGJGeHBibU5zZFdSbFhIUmhjbWRsZEdOdgpibVJwZEdsdmJtRnNjeTVvQUdNNlhHRndjR3hsYVc1
MFpYSnVZV3hjYVc1amJIVmtaVnhqYjNKbFozSmhjR2hwWTNOY1kyZGpiMnh2CmNtTnZaR1ZtY21G
bmJXVnVkQzVvQUdNNlhHRndjR3hsYVc1MFpYSnVZV3hjYVc1amJIVmtaVnh6ZEdScGJuUXVhQUJq
T2x4aGNIQnMKWldsdWRHVnlibUZzWEdsdVkyeDFaR1ZjWTI5eVpXZHlZWEJvYVdOelhHTm5ZMjl1
ZEdWNGRHUmxiR1ZuWVhSbExtZ0FZenBjWVhCdwpiR1ZwYm5SbGNtNWhiRnhwYm1Oc2RXUmxYR052
Y21WbmNtRndhR2xqYzF4aloybHRZV2RsWW14dlkyc3VhQUJqT2x4aGNIQnNaV2x1CmRHVnlibUZz
WEdsdVkyeDFaR1ZjYVcxaFoyVnBiMXhqWjJsdFlXZGxZV05qWlhOemMyVnpjMmx2Ymk1b0FHTTZY
R0Z3Y0d4bGFXNTAKWlhKdVlXeGNhVzVqYkhWa1pWeGpiM0psWm05MWJtUmhkR2x2Ymx4alpuSjFi
blJwYldVdWFBQmpPbHhoY0hCc1pXbHVkR1Z5Ym1GcwpYR2x1WTJ4MVpHVmNZMjl5WldkeVlYQm9h
V056WEdOblozTjBZWFJsTG1nQVl6cGNZWEJ3YkdWcGJuUmxjbTVoYkZ4cGJtTnNkV1JsClhHTnZj
bVZuY21Gd2FHbGpjMXhqWjJac2IyRjBMbWdBWXpwY1lYQndiR1ZwYm5SbGNtNWhiRnhwYm1Oc2RX
UmxYR2x0WVdkbGFXOWMKWTJkcGJXRm5aV052Y0hsd2NtbDJMbWdBWXpwY2NISnZaM0poYlNCbWFX
eGxjeUFvZURnMktWeHRhV055YjNOdlpuUWdkbWx6ZFdGcwpJSE4wZFdScGJ5QTRYSFpqWEdsdVky
eDFaR1ZjYzNSa2JHbGlMbWdBWXpwY1lYQndiR1ZwYm5SbGNtNWhiRnhwYm1Oc2RXUmxYR052CmNt
Vm5jbUZ3YUdsamMxeGpaMk5zYVhCemRHRmpheTVvQUdNNlhIQnliMmR5WVcwZ1ptbHNaWE1nS0hn
NE5pbGNiV2xqY205emIyWjAKSUhacGMzVmhiQ0J6ZEhWa2FXOGdPRngyWTF4cGJtTnNkV1JsWEd4
cGJXbDBjeTVvQUdNNlhHRndjR3hsYVc1MFpYSnVZV3hjYVc1agpiSFZrWlZ4amIzSmxaM0poY0do
cFkzTmNZMmRqYkdsd0xtZ0FZenBjWVhCd2JHVnBiblJsY201aGJGeHBibU5zZFdSbFhHTnZjbVZt
CmIzVnVaR0YwYVc5dVhHTm1jMlYwTG1nQVl6cGNZM2xuZDJsdVhHaHZiV1ZjWTIxaGNuSnBibHh6
YjNWeVkyVmNjM1p1WEhkbFltdHAKZEZ4cGJuUmxjbTVoYkZ4M1pXSnJhWFJ6ZVhOMFpXMXBiblJs
Y21aaFkyVmNiR1ZuWVdONWJXVmthV0YxYVM1amNIQUFZenBjY0hKdgpaM0poYlNCbWFXeGxjeUFv
ZURnMktWeHRhV055YjNOdlpuUWdkbWx6ZFdGc0lITjBkV1JwYnlBNFhIWmpYR2x1WTJ4MVpHVmNk
R2x0ClpTNW9BR002WEhCeWIyZHlZVzBnWm1sc1pYTWdLSGc0TmlsY2JXbGpjbTl6YjJaMElIWnBj
M1ZoYkNCemRIVmthVzhnT0Z4MlkxeHAKYm1Oc2RXUmxYSE5wWjI1aGJDNW9BR002WEdGd2NHeGxh
VzUwWlhKdVlXeGNhVzVqYkhWa1pWeGpiM0psWjNKaGNHaHBZM05jWTJkdwpaR1prYjJOMWJXVnVk
SEJ5YVhaaGRHVXVhQUJqT2x4aGNIQnNaV2x1ZEdWeWJtRnNYR2x1WTJ4MVpHVmNZMjl5WldadmRX
NWtZWFJwCmIyNWNZMlppYVhSMlpXTjBiM0l1YUFCak9seGhjSEJzWldsdWRHVnlibUZzWEdsdVky
eDFaR1ZjWTI5c2IzSnplVzVqWEdOdmJHOXkKYzNsdVkzUnlZVzV6Wm05eWJTNW9BR002WEdGd2NH
eGxhVzUwWlhKdVlXeGNhVzVqYkhWa1pWeGpiM0psWm05MWJtUmhkR2x2Ymx4agpabU5oYkdWdVpH
RnlMbWdBWXpwY1lYQndiR1ZwYm5SbGNtNWhiRnhwYm1Oc2RXUmxYR052Y21WbWIzVnVaR0YwYVc5
dVhHTm1kR2x0ClpYcHZibVV1YUFCak9seGhjSEJzWldsdWRHVnlibUZzWEdsdVkyeDFaR1ZjWTI5
eVpXZHlZWEJvYVdOelhHTm5jMlZ5Y205eWN5NW8KQUdNNlhHRndjR3hsYVc1MFpYSnVZV3hjYVc1
amJIVmtaVnhqYjNKbFozSmhjR2hwWTNOY1kyZG1iMjUwWjJ4NWNHaHpkWEJ3YjNKMApMbWdBWXpw
Y1lYQndiR1ZwYm5SbGNtNWhiRnhwYm1Oc2RXUmxYR052Y21WbmNtRndhR2xqYzF4aloyWnZiblJ5
Wlc1a1pYSnBibWN1CmFBQmpPbHhoY0hCc1pXbHVkR1Z5Ym1Gc1hHbHVZMngxWkdWY1kyOXlaV2R5
WVhCb2FXTnpYR05uYzI5bWRHMWhjMnN1YUFCak9seGgKY0hCc1pXbHVkR1Z5Ym1Gc1hHbHVZMngx
WkdWY1kyOXlaV2R5WVhCb2FXTnpYR05uY0dSbVpHOWpkVzFsYm5RdWFBQmpPbHh3Y205bgpjbUZ0
SUdacGJHVnpJQ2g0T0RZcFhHMXBZM0p2YzI5bWRDQjJhWE4xWVd3Z2MzUjFaR2x2SURoY2RtTmNh
VzVqYkhWa1pWeHpkSEpwCmJtY3VhQUJqT2x4aGNIQnNaV2x1ZEdWeWJtRnNYR2x1WTJ4MVpHVmNZ
Mjl5WldkeVlYQm9hV056WEdObmNHUm1jR0ZuWlM1b0FHTTYKWEdGd2NHeGxhVzUwWlhKdVlXeGNh
VzVqYkhWa1pWeGpiM0psWjNKaGNHaHBZM05jWTJkd1lYUm9MbWdBWXpwY1lYQndiR1ZwYm5SbApj
bTVoYkZ4cGJtTnNkV1JsWEdOdmNtVm5jbUZ3YUdsamMxeGpaMk5zYVhCdFlYTnJMbWdBWXpwY1lY
QndiR1ZwYm5SbGNtNWhiRnhwCmJtTnNkV1JsWEdGMllXbHNZV0pwYkdsMGVXMWhZM0p2Y3k1b0FH
TTZYR0Z3Y0d4bGFXNTBaWEp1WVd4Y2FXNWpiSFZrWlZ4amIzSmwKWjNKaGNHaHBZM05jWTJka1lY
UmhZMjl1YzNWdFpYSXVhQUJqT2x4aGNIQnNaV2x1ZEdWeWJtRnNYR2x1WTJ4MVpHVmNZMjl5Wldk
eQpZWEJvYVdOelhHTm5jR1JtWkdsamRHbHZibUZ5ZVM1b0FHTTZYR0Z3Y0d4bGFXNTBaWEp1WVd4
Y2FXNWpiSFZrWlZ4amIzSmxaM0poCmNHaHBZM05jWTJkd1pHWnZjR1Z5WVhSdmNuUmhZbXhsTG1n
QVl6cGNZWEJ3YkdWcGJuUmxjbTVoYkZ4cGJtTnNkV1JsWEdOdmNtVm4KY21Gd2FHbGpjMXhqWjJs
dFlXZGxZbXh2WTJ0elpYUXVhQUJqT2x4d2NtOW5jbUZ0SUdacGJHVnpJQ2g0T0RZcFhHMXBZM0p2
YzI5bQpkQ0IyYVhOMVlXd2djM1IxWkdsdklEaGNkbU5jYVc1amJIVmtaVnh6ZVhOY2RIbHdaWE11
YUFCak9seGhjSEJzWldsdWRHVnlibUZzClhHbHVZMngxWkdWY1kyOXlaV2R5WVhCb2FXTnpYR05u
Y0dSbVlYSnlZWGt1YUFCak9seGhjSEJzWldsdWRHVnlibUZzWEdsdVkyeDEKWkdWY1kyOXlaV2R5
WVhCb2FXTnpYR05uWjNKaFpHbGxiblF1YUFCak9seGhjSEJzWldsdWRHVnlibUZzWEdsdVkyeDFa
R1ZjWTI5eQpaV2R5WVhCb2FXTnpYR05uY0dSbWMyTmhibTVsY2k1b0FHTTZYSEJ5YjJkeVlXMGda
bWxzWlhNZ0tIZzROaWxjYldsamNtOXpiMlowCklIWnBjM1ZoYkNCemRIVmthVzhnT0Z4MlkxeHBi
bU5zZFdSbFhITjNjSEpwYm5SbUxtbHViQUJqT2x4aGNIQnNaV2x1ZEdWeWJtRnMKWEdsdVkyeDFa
R1ZjWTI5eVpXWnZkVzVrWVhScGIyNWNZMlpoZEhSeWFXSjFkR1ZrYzNSeWFXNW5MbWdBWXpwY1lY
QndiR1ZwYm5SbApjbTVoYkZ4cGJtTnNkV1JsWEdGd2NHeHBZMkYwYVc5dWMyVnlkbWxqWlhOY1lY
QndiR2xqWVhScGIyNXpaWEoyYVdObGMzQnlhWFl1CmFBQmpPbHhoY0hCc1pXbHVkR1Z5Ym1Gc1hH
bHVZMngxWkdWY1kyOXNiM0p6ZVc1alhHTnZiRzl5YzNsdVkyUmxkbWxqWlM1b0FHTTYKWEdGd2NH
eGxhVzUwWlhKdVlXeGNhVzVqYkhWa1pWeGthWE53WVhSamFGeHpiM1Z5WTJVdWFBQmpPbHhoY0hC
c1pXbHVkR1Z5Ym1GcwpYR2x1WTJ4MVpHVmNZMjl5WldkeVlYQm9hV056WEdOdmNtVm5jbUZ3YUds
amMzQnlhWFpoZEdVdWFBQmpPbHhoY0hCc1pXbHVkR1Z5CmJtRnNYR2x1WTJ4MVpHVmNZMjl5Wldk
eVlYQm9hV056WEdObmNHUm1iMkpxWldOMExtZ0FZenBjWVhCd2JHVnBiblJsY201aGJGeHAKYm1O
c2RXUmxYR052Y21WbWIzVnVaR0YwYVc5dVhHTm1kWEpzWlc1MWJXVnlZWFJ2Y2k1b0FHTTZYR0Z3
Y0d4bGFXNTBaWEp1WVd4YwphVzVqYkhWa1pWeGpiM0psWjNKaGNHaHBZM05jWTJkamIyNW1hV2N1
YUFCak9seGhjSEJzWldsdWRHVnlibUZzWEdsdVkyeDFaR1ZjClkyOXlaV1p2ZFc1a1lYUnBiMjVj
WTJaM2FXNWtiM2R6Ym1GdFpXUndhWEJsTG1nQVl6cGNZWEJ3YkdWcGJuUmxjbTVoYkZ4cGJtTnMK
ZFdSbFhIaHNiMk5oYkdVdWFBQmpPbHhoY0hCc1pXbHVkR1Z5Ym1Gc1hHbHVZMngxWkdWY1kyOXla
V2R5WVhCb2FXTnpYR05uWW1sMApiV0Z3WTI5dWRHVjRkSEJ5YVhaaGRHVXVhQUJqT2x4d2NtOW5j
bUZ0SUdacGJHVnpJQ2g0T0RZcFhHMXBZM0p2YzI5bWRDQjJhWE4xCllXd2djM1IxWkdsdklEaGNk
bU5jYVc1amJIVmtaVnhzYjJOaGJHVXVhQUJqT2x4aGNIQnNaV2x1ZEdWeWJtRnNYR2x1WTJ4MVpH
VmMKWTI5eVpXZHlZWEJvYVdOelhHTm5ZMjl1ZEdWNGRIUmxlSFF1YUFCak9seGhjSEJzWldsdWRH
VnlibUZzWEdsdVkyeDFaR1ZjWTI5eQpaV2R5WVhCb2FXTnpYR05uWW1sMGJXRndZMjl1ZEdWNGRD
NW9BR002WEdGd2NHeGxhVzUwWlhKdVlXeGNhVzVqYkhWa1pWeGpiM0psClptOTFibVJoZEdsdmJs
eGpabkJ5WldabGNtVnVZMlZ6TG1nQVl6cGNZWEJ3YkdWcGJuUmxjbTVoYkZ4cGJtTnNkV1JsWEdO
dmNtVm0KYjNWdVpHRjBhVzl1WEdObVpHRjBaV1p2Y20xaGRIUmxjaTVvQUdNNlhHRndjR3hsYVc1
MFpYSnVZV3hjYVc1amJIVmtaVnhqYjNKbApaM0poY0docFkzTmNZMmRtYjI1MFpXNWpiMlJwYm1j
dWFBQmpPbHhoY0hCc1pXbHVkR1Z5Ym1Gc1hHbHVZMngxWkdWY1kyOXlaV2R5CllYQm9hV056WEdO
blptOXVkR2x1WkdWNGJXRndMbWdBWXpwY1lYQndiR1ZwYm5SbGNtNWhiRnhwYm1Oc2RXUmxYR052
Y21WbmNtRncKYUdsamMxeGpaMlJoZEdGamIyNXpkVzFsY25CeWFYWmhkR1V1YUFCak9seHdjbTlu
Y21GdElHWnBiR1Z6SUNoNE9EWXBYRzFwWTNKdgpjMjltZENCMmFYTjFZV3dnYzNSMVpHbHZJRGhj
ZG1OY2FXNWpiSFZrWlZ4emRHUmhjbWN1YUFCak9seGhjSEJzWldsdWRHVnlibUZzClhHbHVZMngx
WkdWY1kyOXNiM0p6ZVc1alhHTnZiRzl5YzNsdVkzQnlhWFl1YUFCak9seGhjSEJzWldsdWRHVnli
bUZzWEdsdVkyeDEKWkdWY1kyOXNiM0p6ZVc1alhHTnZiRzl5YzNsdVl5NW9BR002WEdGd2NHeGxh
VzUwWlhKdVlXeGNhVzVqYkhWa1pWeGpiMnh2Y25ONQpibU5jWTI5c2IzSnplVzVqWW1GelpTNW9B
R002WEdGd2NHeGxhVzUwWlhKdVlXeGNhVzVqYkhWa1pWeGpiM0psWm05MWJtUmhkR2x2CmJseGpa
bUoxYm1Sc1pTNW9BR002WEdGd2NHeGxhVzUwWlhKdVlXeGNhVzVqYkhWa1pWeGpiMnh2Y25ONWJt
TmNZMjlzYjNKemVXNWoKY0hKdlptbHNaUzVvQUdNNlhHRndjR3hsYVc1MFpYSnVZV3hjYVc1amJI
VmtaVnhqYjNKbFozSmhjR2hwWTNOY1kyZGpiMnh2Y25CeQphWFpoZEdVdWFBQmpPbHhoY0hCc1pX
bHVkR1Z5Ym1Gc1hHbHVZMngxWkdWY1kyOXlaV2R5WVhCb2FXTnpYR05uWTI5c2IzSXVhQUJqCk9s
eHdjbTluY21GdElHWnBiR1Z6SUNoNE9EWXBYRzFwWTNKdmMyOW1kQ0IyYVhOMVlXd2djM1IxWkds
dklEaGNkbU5jYVc1amJIVmsKWlZ4M2RHbHRaUzVwYm13QVl6cGNZWEJ3YkdWcGJuUmxjbTVoYkZ4
cGJtTnNkV1JsWEdOdmNtVm5jbUZ3YUdsamMxeGpaMk52Ykc5eQpjM0JoWTJVdWFBQmpPbHhoY0hC
c1pXbHVkR1Z5Ym1Gc1hHbHVZMngxWkdWY1kyOXlaV1p2ZFc1a1lYUnBiMjVjWTJadWRXMWlaWEpt
CmIzSnRZWFIwWlhJdWFBQmpPbHhoY0hCc1pXbHVkR1Z5Ym1Gc1hHbHVZMngxWkdWY2FXMWhaMlZw
YjF4aloybHRZV2RsYVc5d2JIVm4KYVc0dWFBQmpPbHhoY0hCc1pXbHVkR1Z5Ym1Gc1hHbHVZMngx
WkdWY1kyOXlaV2R5WVhCb2FXTnpYR05uYzNSNWJHVXVhQUJqT2x4aApjSEJzWldsdWRHVnlibUZz
WEdsdVkyeDFaR1ZjWTI5eVpXZHlZWEJvYVdOelhHTm5ZMnhwY0hOMGNtOXJaUzVvQUdNNlhHRndj
R3hsCmFXNTBaWEp1WVd4Y2FXNWpiSFZrWlZ4amIzSmxaM0poY0docFkzTmNZMmRrWVhSaGNISnZk
bWxrWlhJdWFBQmpPbHhoY0hCc1pXbHUKZEdWeWJtRnNYR2x1WTJ4MVpHVmNZMjl5WldadmRXNWtZ
WFJwYjI1Y1kyWjFjbXhoWTJObGMzTXVhQUJqT2x4aGNIQnNaV2x1ZEdWeQpibUZzWEdsdVkyeDFa
R1ZjYVcxaFoyVnBiMXhwYldGblpXbHZMbWdBWXpwY1lYQndiR1ZwYm5SbGNtNWhiRnhwYm1Oc2RX
UmxYR052CmNtVm5jbUZ3YUdsamMxeGpaMmx0WVdkbExtZ0FZenBjWVhCd2JHVnBiblJsY201aGJG
eHBibU5zZFdSbFhHTnZjbVZtYjNWdVpHRjAKYVc5dVhHTnZjbVZtYjNWdVpHRjBhVzl1TG1nQVl6
cGNZWEJ3YkdWcGJuUmxjbTVoYkZ4cGJtTnNkV1JsWEdOdmNtVm5jbUZ3YUdsagpjMXhqWjJSaGMy
Z3VhQUJqT2x4d2NtOW5jbUZ0SUdacGJHVnpJQ2g0T0RZcFhHMXBZM0p2YzI5bWRDQjJhWE4xWVd3
Z2MzUjFaR2x2CklEaGNkbU5jYVc1amJIVmtaVnhoYzNObGNuUXVhQUJqT2x4aGNIQnNaV2x1ZEdW
eWJtRnNYR2x1WTJ4MVpHVmNhVzFoWjJWcGIxeHAKYldGblpXbHZjSEpwZG1GMFpTNW9BR002WEdG
d2NHeGxhVzUwWlhKdVlXeGNhVzVqYkhWa1pWeGpiM0psWjNKaGNHaHBZM05jWTJkagpiMjUwWlho
MGNISnBkbUYwWlM1b0FHTTZYR0Z3Y0d4bGFXNTBaWEp1WVd4Y2FXNWpiSFZrWlZ4amIzSmxabTkx
Ym1SaGRHbHZibHhqClpuVnliQzVvQUdNNlhIQnliMmR5WVcwZ1ptbHNaWE1nS0hnNE5pbGNiV2xq
Y205emIyWjBJSFpwYzNWaGJDQnpkSFZrYVc4Z09GeDIKWTF4cGJtTnNkV1JsWEhScGJXVXVhVzVz
QUdNNlhIQnliMmR5WVcwZ1ptbHNaWE1nS0hnNE5pbGNiV2xqY205emIyWjBJSFpwYzNWaApiQ0J6
ZEhWa2FXOGdPRngyWTF4cGJtTnNkV1JsWEdOMGVYQmxMbWdBWXpwY1lYQndiR1ZwYm5SbGNtNWhi
RnhwYm1Oc2RXUmxYR2x0CllXZGxhVzljWTJkcGJXRm5aWE52ZFhKalpYQnlhWFpoZEdVdWFBQmpP
bHhoY0hCc1pXbHVkR1Z5Ym1Gc1hHbHVZMngxWkdWY1kyOXkKWldkeVlYQm9hV056WEdObmNHUm1j
M1J5WldGdExtZ0FZenBjWVhCd2JHVnBiblJsY201aGJGeHBibU5zZFdSbFhHTnZjbVZtYjNWdQpa
R0YwYVc5dVhHTm1aR0YwWVM1b0FHTTZYR0Z3Y0d4bGFXNTBaWEp1WVd4Y2FXNWpiSFZrWlZ4cGJX
Rm5aV2x2WEdObmFXMWhaMlZ6CmIzVnlZMlV1YUFCak9seGhjSEJzWldsdWRHVnlibUZzWEdsdVky
eDFaR1ZjWTI5eVpXWnZkVzVrWVhScGIyNWNZMlppYVc1aGNubG8KWldGd0xtZ0FZenBjWVhCd2JH
VnBiblJsY201aGJGeHBibU5zZFdSbFhHTnZjbVZuY21Gd2FHbGpjMXhqYjNKbFozSmhjR2hwWTNN
dQphQUJqT2x4aGNIQnNaV2x1ZEdWeWJtRnNYR2x1WTJ4MVpHVmNZMjl5WldkeVlYQm9hV056WEdO
bmJHRjVaWEl1YUFCak9seGhjSEJzClpXbHVkR1Z5Ym1Gc1hHbHVZMngxWkdWY1kyOXlaV2R5WVhC
b2FXTnpYR05uWm05dWRDNW9BR002WEhCeWIyZHlZVzBnWm1sc1pYTWcKS0hnNE5pbGNiV2xqY205
emIyWjBJSFpwYzNWaGJDQnpkSFZrYVc4Z09GeDJZMXhwYm1Oc2RXUmxYRzFoZEdndWFBQmpPbHh3
Y205bgpjbUZ0SUdacGJHVnpJQ2g0T0RZcFhHMXBZM0p2YzI5bWRDQjJhWE4xWVd3Z2MzUjFaR2x2
SURoY2RtTmNhVzVqYkhWa1pWeG1iRzloCmRDNW9BR002WEdGd2NHeGxhVzUwWlhKdVlXeGNhVzVq
YkhWa1pWeGpiM0psWm05MWJtUmhkR2x2Ymx4alpteHZZMkZzWlM1b0FHTTYKWEhCeWIyZHlZVzBn
Wm1sc1pYTWdLSGc0TmlsY2JXbGpjbTl6YjJaMElIWnBjM1ZoYkNCemRIVmthVzhnT0Z4MlkxeHBi
bU5zZFdSbApYR055ZEhkeWJpNW9BR002WEdGd2NHeGxhVzUwWlhKdVlXeGNhVzVqYkhWa1pWeGpi
M0psWjNKaGNHaHBZM05jWTJkamIyNTBaWGgwCmFXMWhaMlV1YUFCak9seGhjSEJzWldsdWRHVnli
bUZzWEdsdVkyeDFaR1ZjWTI5eVpXZHlZWEJvYVdOelhHTm5jR1JtYzNSeWFXNW4KTG1nQVl6cGNZ
WEJ3YkdWcGJuUmxjbTVoYkZ4cGJtTnNkV1JsWEdOdmNtVm1iM1Z1WkdGMGFXOXVYR05tWkdGMFpT
NW9BR002WEdGdwpjR3hsYVc1MFpYSnVZV3hjYVc1amJIVmtaVnhqYjNKbFptOTFibVJoZEdsdmJs
eGpabTFsYzNOaFoyVndiM0owTG1nQVl6cGNZWEJ3CmJHVnBiblJsY201aGJGeHBibU5zZFdSbFhH
TnZjbVZuY21Gd2FHbGpjMXhqWjJSaGRHRndjbTkyYVdSbGNuQnlhWFpoZEdVdWFBQmoKT2x4aGNI
QnNaV2x1ZEdWeWJtRnNYR2x1WTJ4MVpHVmNaR2x6Y0dGMFkyaGNaR2x6Y0dGMFkyZ3VhQUJqT2x4
aGNIQnNaV2x1ZEdWeQpibUZzWEdsdVkyeDFaR1ZjWkdsemNHRjBZMmhjWW1GelpTNW9BR002WEdG
d2NHeGxhVzUwWlhKdVlXeGNhVzVqYkhWa1pWeGpiM0psClozSmhjR2hwWTNOY1kyZHBiV0ZuWlhC
eWFYWmhkR1V1YUFCak9seGhjSEJzWldsdWRHVnlibUZzWEdsdVkyeDFaR1ZjWTI5eVpXZHkKWVhC
b2FXTnpYR05uYVcxaFoyVmxjSE55WlhBdWFBQmpPbHhoY0hCc1pXbHVkR1Z5Ym1Gc1hHbHVZMngx
WkdWY1kyOXNiM0p6ZVc1agpYR2xqWXk1b0FHTTZYR0Z3Y0d4bGFXNTBaWEp1WVd4Y2FXNWpiSFZr
WlZ4amIzSmxabTkxYm1SaGRHbHZibHhqWm1KNWRHVnZjbVJsCmNpNW9BR002WEdGd2NHeGxhVzUw
WlhKdVlXeGNhVzVqYkhWa1pWeGpiM0psWm05MWJtUmhkR2x2Ymx4alpuQnNkV2RwYmk1b0FHTTYK
WEdGd2NHeGxhVzUwWlhKdVlXeGNhVzVqYkhWa1pWeGthWE53WVhSamFGeHZZbXBsWTNRdWFBQmpP
bHhoY0hCc1pXbHVkR1Z5Ym1GcwpYR2x1WTJ4MVpHVmNZMjl5WldkeVlYQm9hV056WEdOblptOXVk
SFZ1YVdOdlpHVnpkWEJ3YjNKMExtZ0FZenBjWVhCd2JHVnBiblJsCmNtNWhiRnhwYm1Oc2RXUmxY
R052Y21WbmNtRndhR2xqYzF4alozTm9ZV1JwYm1jdWFBQmpPbHhoY0hCc1pXbHVkR1Z5Ym1Gc1hH
bHUKWTJ4MVpHVmNZMjl5WldkeVlYQm9hV056WEdOblpuVnVZM1JwYjI0dWFBQmpPbHhoY0hCc1pX
bHVkR1Z5Ym1Gc1hHbHVZMngxWkdWYwpZMjl5WldkeVlYQm9hV056WEdObmNHUm1ZMjl1ZEdWdWRI
TjBjbVZoYlM1b0FHTTZYR0Z3Y0d4bGFXNTBaWEp1WVd4Y2FXNWpiSFZrClpWeHBiV0ZuWldsdlhH
Tm5hVzFoWjJWa1pYTjBhVzVoZEdsdmJuQnlhWFpoZEdVdWFBQmpPbHhoY0hCc1pXbHVkR1Z5Ym1G
c1hHbHUKWTJ4MVpHVmNhVzFoWjJWcGIxeGpaMmx0WVdkbFpHVnpkR2x1WVhScGIyNHVhQUJqT2x4
aGNIQnNaV2x1ZEdWeWJtRnNYR2x1WTJ4MQpaR1ZjWTI5eVpXZHlZWEJvYVdOelhHTm5aR2x6Y0d4
aGVXeHBjM1F1YUFCak9seGhjSEJzWldsdWRHVnlibUZzWEdsdVkyeDFaR1ZjClkyOXlaV2R5WVhC
b2FXTnpYR05uWTI5dWRHVjRkSEJoZEdndWFBQmpPbHhoY0hCc1pXbHVkR1Z5Ym1Gc1hHbHVZMngx
WkdWY1kyOXkKWldkeVlYQm9hV056WEdObmMzUjVjR1Z6TG1nQVl6cGNZWEJ3YkdWcGJuUmxjbTVo
YkZ4cGJtTnNkV1JsWEdScGMzQmhkR05vWEdkeQpiM1Z3TG1nQVl6cGNZWEJ3YkdWcGJuUmxjbTVo
YkZ4cGJtTnNkV1JsWEdOdmNtVm1iM1Z1WkdGMGFXOXVYR05tZFhWcFpDNW9BR002ClhHRndjR3hs
YVc1MFpYSnVZV3hjYVc1amJIVmtaVnhqYjNKbFozSmhjR2hwWTNOY1kyZGxjbkp2Y2k1b0FHTTZY
R041WjNkcGJseG8KYjIxbFhHTnRZWEp5YVc1Y2MyOTFjbU5sWEhOMmJseDNaV0pyYVhSY2FXNTBa
WEp1WVd4Y2QyVmlhMmwwYzNsemRHVnRhVzUwWlhKbQpZV05sWEd4bFoyRmplVzFsWkdsaGRXa3Vh
QUJqT2x4amVXZDNhVzVjYUc5dFpWeGpiV0Z5Y21sdVhITnZkWEpqWlZ4emRtNWNkMlZpCmEybDBY
R2x1ZEdWeWJtRnNYSGRsWW10cGRITjVjM1JsYldsdWRHVnlabUZqWlZ4dFpXUnBZWFZwTG1nQVl6
cGNZWEJ3YkdWcGJuUmwKY201aGJGeHBibU5zZFdSbFhHTnZjbVZuY21Gd2FHbGpjMXhqWjJsdFlX
ZGxhbkJsWjNKbGNDNW9BR002WEdGd2NHeGxhVzUwWlhKdQpZV3hjYVc1amJIVmtaVnhqYjNKbFoz
SmhjR2hwWTNOY1kyZGpiMjUwWlhoMExtZ0FZenBjWVhCd2JHVnBiblJsY201aGJGeHBibU5zCmRX
UmxYR052Y21WbmNtRndhR2xqYzF4aloyWjFibU4wYVc5dWNISnBkbUYwWlM1b0FHTTZYR0Z3Y0d4
bGFXNTBaWEp1WVd4Y2FXNWoKYkhWa1pWeGpiM0psWjNKaGNHaHBZM05jWTJkamIyeHZjblJ5WVc1
elptOXliUzVvQUdNNlhHRndjR3hsYVc1MFpYSnVZV3hjYVc1agpiSFZrWlZ4amIzSmxabTkxYm1S
aGRHbHZibHhqWm1KaFp5NW9BR002WEdGd2NHeGxhVzUwWlhKdVlXeGNhVzVqYkhWa1pWeGpiM0ps
ClozSmhjR2hwWTNOY1kyZGlZWE5sTG1nQVl6cGNZWEJ3YkdWcGJuUmxjbTVoYkZ4cGJtTnNkV1Js
WEdOdmNtVm5jbUZ3YUdsamMxeGoKWjJOdmJuUmxlSFJuYzNSaGRHVXVhQUJqT2x4aGNIQnNaV2x1
ZEdWeWJtRnNYR2x1WTJ4MVpHVmNZMjl5WldkeVlYQm9hV056WEdObgpZMjlzYjNKemNHRmpaWEJ5
YVhaaGRHVXVhQUJqT2x4aGNIQnNaV2x1ZEdWeWJtRnNYR2x1WTJ4MVpHVmNjM1JrWW05dmJDNW9B
R002ClhHRndjR3hsYVc1MFpYSnVZV3hjYVc1amJIVmtaVnhqYjNKbFozSmhjR2hwWTNOY1kyZG1i
MjUwY0hKcGRtRjBaUzVvQUdNNlhIQnkKYjJkeVlXMGdabWxzWlhNZ0tIZzROaWxjYldsamNtOXpi
MlowSUhacGMzVmhiQ0J6ZEhWa2FXOGdPRngyWTF4cGJtTnNkV1JsWEhOMApaR1JsWmk1b0FHTTZY
R0Z3Y0d4bGFXNTBaWEp1WVd4Y2FXNWpiSFZrWlZ4amIzSmxaM0poY0docFkzTmNZMmR3WVhSMFpY
SnVjSEpwCmRtRjBaUzVvQUdNNlhHRndjR3hsYVc1MFpYSnVZV3hjYVc1amJIVmtaVnhqYjNKbFoz
SmhjR2hwWTNOY1kyZG1iMjUwWTNKbFlYUmwKTG1nQVl6cGNZWEJ3YkdWcGJuUmxjbTVoYkZ4cGJt
TnNkV1JsWEdOdmNtVm5jbUZ3YUdsamMxeGpaM0JoZEhSbGNtNHVhQUJqT2x4dwpjbTluY21GdElH
WnBiR1Z6SUNoNE9EWXBYRzFwWTNKdmMyOW1kQ0IyYVhOMVlXd2djM1IxWkdsdklEaGNkbU5jYVc1
amJIVmtaVnhqCmNuUmtaV1p6TG1nQVl6cGNZWEJ3YkdWcGJuUmxjbTVoYkZ4cGJtTnNkV1JsWEdO
dmNtVm1iM1Z1WkdGMGFXOXVYR05tYzNSeWFXNW4KWlc1amIyUnBibWRsZUhRdWFBQmpPbHhoY0hC
c1pXbHVkR1Z5Ym1Gc1hHbHVZMngxWkdWY1kyOXlaV2R5WVhCb2FXTnpYR05uWm05dQpkR2x1Wm04
dWFBQmpPbHh3Y205bmNtRnRJR1pwYkdWeklDaDRPRFlwWEcxcFkzSnZjMjltZENCMmFYTjFZV3dn
YzNSMVpHbHZJRGhjCmRtTmNhVzVqYkhWa1pWeHpZV3d1YUFCak9seGhjSEJzWldsdWRHVnlibUZz
WEdsdVkyeDFaR1ZjWTI5eVpXWnZkVzVrWVhScGIyNWMKWTJaemIyTnJaWFF1YUFCak9seHdjbTlu
Y21GdElHWnBiR1Z6SUNoNE9EWXBYRzFwWTNKdmMyOW1kQ0IyYVhOMVlXd2djM1IxWkdsdgpJRGhj
ZG1OY2FXNWpiSFZrWlZ4amNuUmhjM05sYlM1b0FHTTZYR0Z3Y0d4bGFXNTBaWEp1WVd4Y2FXNWpi
SFZrWlZ4cGJXRm5aV2x2ClhHTm5hVzFoWjJWd2NtOXdaWEowYVdWekxtZ0FZenBjWVhCd2JHVnBi
blJsY201aGJGeHBibU5zZFdSbFhHTnZjbVZtYjNWdVpHRjAKYVc5dVhHTm1jSEp2Y0dWeWRIbHNh
WE4wTG1nQVl6cGNjSEp2WjNKaGJTQm1hV3hsY3lBb2VEZzJLVnh0YVdOeWIzTnZablFnZG1segpk
V0ZzSUhOMGRXUnBieUE0WEhaalhHbHVZMngxWkdWY2RtRmtaV1p6TG1nQVl6cGNZWEJ3YkdWcGJu
UmxjbTVoYkZ4cGJtTnNkV1JsClhHTnZjbVZtYjNWdVpHRjBhVzl1WEdObWMzUnlaV0Z0TG1nQVl6
cGNZWEJ3YkdWcGJuUmxjbTVoYkZ4cGJtTnNkV1JsWEdOdmNtVm4KY21Gd2FHbGpjMXhqWjNCa1pt
TnZiblJsZUhRdWFBQmpPbHhoY0hCc1pXbHVkR1Z5Ym1Gc1hHbHVZMngxWkdWY1kyOXlaV1p2ZFc1
awpZWFJwYjI1Y1kyWnlkVzVzYjI5d0xtZ0FZenBjWVhCd2JHVnBiblJsY201aGJGeHBibU5zZFdS
bFhHTnZjbVZuY21Gd2FHbGpjMXhqCloyWnZiblIyWVhKcFlYUnBiMjV6TG1nQUpGUXlJQ1JsYzNB
Z0xtTmlURzlqWVd4eklDc2dMbU5pVTJGMlpXUlNaV2R6SUNzZ1BTQWsKVkRBZ0xuSmhVMlZoY21O
b1UzUmhjblFnUFNBa1pXbHdJQ1JVTUNCZUlEMGdKR1Z6Y0NBa1ZEQWdOQ0FySUQwQUpGUXlJQ1Js
YzNBZwpMbU5pVEc5allXeHpJQ3NnTG1OaVUyRjJaV1JTWldkeklDc2dQU0FrVkRBZ0xuSmhVMlZo
Y21Ob1UzUmhjblFnUFNBa1pXbHdJQ1JVCk1DQmVJRDBnSkdWemNDQWtWREFnTkNBcklEMGdKR1Zp
ZUNBa1ZEQWdOQ0F0SUY0Z1BRQWtWRElnSkdWemNDQTlJQ1JVTUNBdWNtRlQKWldGeVkyaFRkR0Z5
ZENBOUlDUmxhWEFnSkZRd0lGNGdQU0FrWldKd0lDUlVNQ0EwSUMwZ1hpQTlJQ1JNSUNSVU1pQTlJ
Q1JRSUNSVQpNQ0EwSUNzZ0xtTmlVR0Z5WVcxeklDc2dQU0FrWlhOd0lDUlVNQ0EwSUNzZ1BRQWtW
RElnSkdWemNDQTlJQ1JVTUNBdWNtRlRaV0Z5ClkyaFRkR0Z5ZENBOUlDUmxhWEFnSkZRd0lGNGdQ
U0FrWldKd0lDUlVNQ0EwSUMwZ1hpQTlJQ1JNSUNSVU1pQTlJQ1JRSUNSVU1DQTAKSUNzZ0xtTmlV
R0Z5WVcxeklDc2dQU0FrWlhOd0lDUlVNQ0EwSUNzZ1BTQWtaV0o0SUNSVU1DQXhNamdnTFNCZUlE
MEFKRlF5SUNSbApjM0FnTG1OaVRHOWpZV3h6SUNzZ0xtTmlVMkYyWldSU1pXZHpJQ3NnUFNBa1ZE
QWdMbkpoVTJWaGNtTm9VM1JoY25RZ1BTQWtaV2x3CklDUlVNQ0JlSUQwZ0pHVnpjQ0FrVkRBZ05D
QXJJRDBnSkdWaWVDQWtWREFnTWpBZ0xTQmVJRDBBSkZReUlDUmxjM0FnTG1OaVRHOWoKWVd4eklD
c2dMbU5pVTJGMlpXUlNaV2R6SUNzZ1BTQWtWREFnTG5KaFUyVmhjbU5vVTNSaGNuUWdQU0FrWlds
d0lDUlVNQ0JlSUQwZwpKR1Z6Y0NBa1ZEQWdOQ0FySUQwZ0pHVmljQ0FrVkRBZ01qUWdMU0JlSUQw
Z0pHVmllQ0FrVkRBZ01qQWdMU0JlSUQwQUFLOE1BQUNBCkFBQUFDd0N6REFBQWdBQUFBQW9BMXd3
QUFJRUFBQUFMQU5zTUFBQ0JBQUFBQ2dEOERBQUFDQUFBQUFzQUFBMEFBQWdBQUFBS0FGWU4KQUFB
SkFBQUFDd0JhRFFBQUNRQUFBQW9BdmcwQUFBb0FBQUFMQU1JTkFBQUtBQUFBQ2dBV0RnQUFDd0FB
QUFzQUdnNEFBQXNBQUFBSwpBSHdPQUFBTUFBQUFDd0NBRGdBQURBQUFBQW9BMUE0QUFBMEFBQUFM
QU5nT0FBQU5BQUFBQ2dBNkR3QUFEZ0FBQUFzQVBnOEFBQTRBCkFBQUtBSVlQQUFBUEFBQUFDd0NL
RHdBQUR3QUFBQW9BNEE4QUFCQUFBQUFMQU9RUEFBQVFBQUFBQ2dBdUVBQUFFUUFBQUFzQU1oQUEK
QUJFQUFBQUtBSW9RQUFBU0FBQUFDd0NPRUFBQUVnQUFBQW9BMWhBQUFCTUFBQUFMQU5vUUFBQVRB
QUFBQ2dBd0VRQUFGQUFBQUFzQQpOQkVBQUJRQUFBQUtBSUFSQUFBVkFBQUFDd0NFRVFBQUZRQUFB
QW9BM2hFQUFCWUFBQUFMQU9JUkFBQVdBQUFBQ2dCR0VnQUFGd0FBCkFBc0FTaElBQUJjQUFBQUtB
THdTQUFBWUFBQUFDd0RBRWdBQUdBQUFBQW9BSWhNQUFCa0FBQUFMQUNZVEFBQVpBQUFBQ2dDV0V3
QUEKR2dBQUFBc0FtaE1BQUJvQUFBQUtBQUFVQUFBYkFBQUFDd0FFRkFBQUd3QUFBQW9BZUJRQUFC
d0FBQUFMQUh3VUFBQWNBQUFBQ2dERwpGQUFBSFFBQUFBc0F5aFFBQUIwQUFBQUtBQ0lWQUFBZUFB
QUFDd0FtRlFBQUhnQUFBQW9BZ2hVQUFCOEFBQUFMQUlZVkFBQWZBQUFBCkNnREZGd0FBUkFBQUFB
c0F5UmNBQUVRQUFBQUtBSWxRVGtjTkNob0tBQUFBRFVsSVJGSUFBQUFRQUFBQUVBZ0dBQUFBSC9Q
L1lRQUEKQWVkcFEwTlFTVU5ESUZCeWIyWnBiR1VBQUhnQnJaSS9hQlJSRU1hLzNTTTVpeU4vUkZN
WjNDSkVpNHNzdVNKSkl4ZnZRTVFVUjNKQgprMjZ6dDk0dDdtNDJ1NXZUQXdWTGEyc3RSSXRBa2w1
aVFxNFJSTEVReFQra1RTbFlCRVRSdUg3dlBjSVJTRWpqd052M20yOW41dTNNCld5QmpXbUhvNlFE
OElJbW1yMTR4YnM3Tkc5blB5S0dmcXh0OWxoMkhrNVhLRkVPT3NSK2ZvSWxYSDBaRXJWVnY3dVhz
ekt1dGorMXYKYjM5dGZyOTlUTktCM0JQeFFFRExVemhUVjF3VXZLQzRLdmhPRWlhTWFRaTJHMWFO
ZkkrY2o2clRKZklLdWFldStJWGdCY1d2QlRmdAp1c2o5UWphRG1oc0EraW55ZU0ySmJYS1I3Tlpp
MnlldmtjZDlmNUgxOVYzeVJUdU1tSnZKa1lmRVhMalRtdWVCeXhjWTg3Q2p6VWZBCitqWnc5azlI
R3k3emM4ZUFqYWNkYlc5QXprb2JlQlBmS296S2NscU91VjAvMDNSdkVNaHVBUHRSbXY1K2txYjd6
M24yVjZDOVpDOUgKVFJuTFJyUjN3RW0rNmxsVkI5NnpCNXE4bzZOWnpVVkdtY0N6Tm5DRHp2VUh3
T01pTUV6bjlBNVFvVll0UWk4VURwYWFJV1dndCtRRwpqbThaWlRjT1Bhc2x0Zi82OEwxbDNwYzAw
VW5PQ1dabnVKK1Rxd1FYQVJ6NHNHQ2dUQzlHQ0k5ZVM5Mm55T3Z1QXg0TjZuOHo5N2V6CkUwSTRa
SWx6Vjg2cHRCaTJJcmZlU0l4Si9zMU8zcmdXMkpmeXhxaHBqdUVmRmFLS3RQS2dzdkFBQUFBSmNF
aFpjd0FBQ3hNQUFBc1QKQVFDYW5CZ0FBQURzU1VSQlZEZ1JwVk83RFlRd0RIMUI1bHZRTVFJRlBX
SVNKQnJtWUJQV29LTmtBVVJEeVE0TUFBWGNuVGtGR1k0cQo5eVNUcCtkbkt6R0pxdXY2aFQ5QVNa
SVlsMC9UQklxaXlMakJQTThnei9PTUd3UkJBT3NEL3B3Unh6RTRXT04xSE1jekozM01HZGEyCmJa
Q2h0OE1hSTg5ekRNTnc4V2ovdnUrdzFuV0ZETjJBTlkyaUtORDMvY1hIK1dWWlFJN2phTjlsdmV0
bFdZS25MbUhiTnNoMVhhbWQKL0s0M1RZTzdGb1loeVBmOXMwZ1NxYmR0aXpSTlpmcmd2RXZpWC9F
RXJYZGRoeXpMbml6Z0svQXpBems4eVo4NjhKR0lCMkdLNHdoSwpLZE42Y08zM09obTNBRlJWVlg4
OTV6Zk94R2E2SEhycC9RQUFBQUJKUlU1RXJrSmdnZ0FBQUlsUVRrY05DaG9LQUFBQURVbElSRklB
CkFBQVFBQUFBRUFnR0FBQUFIL1AvWVFBQUFlZHBRME5RU1VORElGQnliMlpwYkdVQUFIZ0JyWkkv
YUJSUkVNYS8zU001aXlOL1JGTVoKM0NKRWk0c3N1U0pKSXhmdlFNUVVSM0pCazI2enQ5NHQ3bTQy
dTV2VEF3VkxhMnN0Ukl0QWtsNWlRcTRSUkxFUXhUK2tUU2xZQkVUUgp1SDd2UGNJUlNFamp3TnYz
bTI5bjV1M01XeUJqV21IbzZRRDhJSW1tcjE0eGJzN05HOW5QeUtHZnF4dDlsaDJIazVYS0ZFT09z
UitmCm9JbFhIMFpFclZWdjd1WHN6S3V0aisxdmIzOXRmcjk5VE5LQjNCUHhRRURMVXpoVFYxd1V2
S0M0S3ZoT0VpYU1hUWkyRzFhTmZJK2MKajZyVEpmSUt1YWV1K0lYZ0JjV3ZCVGZ0dXNqOVFqYURt
aHNBK2lueWVNMkpiWEtSN05aaTJ5ZXZrY2Q5ZjVIMTlWM3lSVHVNbUp2SgprWWZFWExqVG11ZUJ5
eGNZODdDanpVZkEralp3OWs5SEd5N3pjOGVBamFjZGJXOUF6a29iZUJQZktvektjbHFPdVYwLzAz
UnZFTWh1CkFQdFJtdjUra3FiN3ozbjJWNkM5WkM5SFRSbkxSclIzd0VtKzZsbFZCOTZ6QjVxOG82
Tlp6VVZHbWNDek5uQ0R6dlVId09NaU1Fem4KOUE1UW9WWXRRaThVRHBhYUlXV2d0K1FHam04WlpU
Y09QYXNsdGYvNjhMMWwzcGMwMFVuT0NXWm51SitUcXdRWEFSejRzR0NnVEM5RwpDSTllUzkybnlP
dnVBeDRONm44ejk3ZXpFMEk0WklselY4NnB0QmkySXJmZVNJeEovczFPM3JnVzJKZnl4cWhwanVF
ZkZhS0t0UEtnCnN2QUFBQUFKY0VoWmN3QUFDeE1BQUFzVEFRQ2FuQmdBQUFFUVNVUkJWRGdSWTR5
TXovM1BRQ2I0Ly84L0E0dUZoVEdaMmhrWXJseTUKeXNBaUtTbE90Z0h2M3IxaFlPSGw0U2JiQUQ0
K1hnWW1JQUFSY096cFlzY0F3aUF4RUgzenhqVzRITEk2RUJzRW1MNTgrOEdBakdITwpBWW1CUUVG
T0JzUFpjK2RRMU1EVWYvdnhrNEhsM1llUE1EMG9OTEo0VlVrZVEwVjlHNE95cWpxS21yZnZQakl3
c2JLeU1pQmptQXFRCkdETG9hS3hDVVFlU1p3RmhIaDRlWkhWd05ycDRXKzhVQm5ReEFYNCtCaFp1
TGs2NEptUUdzbmpmbE5rTW10bzZ5TkpnTmdjSEIyRVgKVEorM2hFRkhWeDlETTBpQWw1ZUhnZkhr
aFJ0a0orVXIxNjR4c0RDek1HTTFuUmhCVnFCZVlFQ1Nid0FiR3pBV21Ka2hLWW9ZRzlIVgpNREV4
TXJBc21qVU5YWndrUGdEWVpsSFRrMWFoSlFBQUFBQkpSVTVFcmtKZ2dnQUFBQUFBQUFDSlVFNUhE
UW9hQ2dBQUFBMUpTRVJTCkFBQUFFQUFBQUJBSUJnQUFBQi96LzJFQUFBSG5hVU5EVUVsRFF5QlFj
bTltYVd4bEFBQjRBYTJTUDJnVVVSREd2OTBqT1lzamYwUlQKR2R3aVJJdUxMTGtpU1NNWDcwREVG
RWR5UVpOdXM3ZmVMZTV1TnJ1YjB3TUZTMnRyTFVTTFFKSmVZa0t1RVVTeEVNVS9wRTBwV0FSRQow
YmgrN3ozQ0VVaEk0OERiOTV0dlorYnR6RnNnWTFwaDZPa0EvQ0NKcHE5ZU1XN096UnZaejhpaG42
c2JmWllkaDVPVnloUkRqckVmCm42Q0pWeDlHUksxVmIrN2w3TXlyclkvdGIyOS9iWDYvZlV6U2dk
d1Q4VUJBeTFNNFUxZGNGTHlndUNyNFRoSW1qR2tJdGh0V2pYeVAKbkkrcTB5WHlDcm1ucnZpRjRB
WEZyd1UzN2JySS9VSTJnNW9iQVBvcDhuak5pVzF5a2V6V1l0c25yNUhIZlgrUjlmVmQ4a1U3akpp
Ygp5WkdIeEZ5NDA1cm5nY3NYR1BPd284MUh3UG8yY1BaUFJ4c3U4M1BIZ0kybkhXMXZRTTVLRzNn
VDN5cU15bkphanJsZFA5TjBieERJCmJnRDdVWnIrZnBLbSs4OTU5bGVndldRdlIwMFp5MGEwZDhC
SnZ1cFpWUWZlc3dlYXZLT2pXYzFGUnBuQXN6WndnODcxQjhEaklqQk0KNS9RT1VLRldMVUl2RkE2
V21pRmxvTGZrQm81dkdXVTNEajJySmJYLyt2QzlaZDZYTk5GSnpnbG1aN2lmazZzRUZ3RWMrTEJn
b0V3dgpSZ2lQWGt2ZHA4anI3Z01lRGVwL00vZTNzeE5DT0dTSmMxZk9xYlFZdGlLMzNraU1TZjdO
VHQ2NEZ0aVg4c2FvYVk3aEh4V2lpclR5Cm9MTHdBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZ
QUFBQk9FbEVRVlE0RWFXU01hNkNRQlJGTDJRQW9iQXhWQ1lVTkZaMnhNWU4KVUZteUJDdEt0bUtz
VEZ5RWNRTzJOcG9RQ2xvS1RWZ0FrSUQrUzhKOHc5ZGY0RTFld3J3NTl3MXYzaWliemVhQkx5UlVW
Y1ZzTmh0YwpRa3dtRTlpMlBieUFaVmtZalVZZkN5UkpndFZxaFRSTjN6SXFzMnpqWFp6UDU5YmNN
WG1lSTRvaXhISDh5emROZzdxdS84VHhlTVI2CnZaYW5rbUc3eStVUysvMWU4cUlvQ3BSbEtjSDVm
TjUrNjdxT3FxcGtuZ3ozRG9jRGZpWW5QVUxUTkJEdTY5WE12WTV4WFJkWmxzbTEKR0kvSE1BeWo3
MitCMXlJZGM3L2Y0VGlPOUtpc2JKcW1EQUtNN1hZTEZ1OUVobmxlb09kNWtoY2NJVWZaVnhBRW1F
Nm44SDIvM1NKegp1OTF3T3AwUWhxSDBLTmZyOWZIZlM3eGNMbGdzRnZMUytnY0p0c0NML0NUK0xr
ZjlTVUpSRkRDR3FuMkpRODMwaWQxdTk0MGZUL1ZmCmU3Rzc5eHZkQUFBQUFFbEZUa1N1UW1DQ0FB
QUFBQUFBQUlsUVRrY05DaG9LQUFBQURVbElSRklBQUFBUUFBQUFFQWdHQUFBQUgvUC8KWVFBQUFl
ZHBRME5RU1VORElGQnliMlpwYkdVQUFIZ0JyWkkvYUJSUkVNYS8zU001aXlOL1JGTVozQ0pFaTRz
c3VTSkpJeGZ2UU1RVQpSM0pCazI2enQ5NHQ3bTQydTV2VEF3VkxhMnN0Ukl0QWtsNWlRcTRSUkxF
UXhUK2tUU2xZQkVUUnVIN3ZQY0lSU0VqandOdjNtMjluCjV1M01XeUJqV21IbzZRRDhJSW1tcjE0
eGJzN05HOW5QeUtHZnF4dDlsaDJIazVYS0ZFT09zUitmb0lsWEgwWkVyVlZ2N3VYc3pLdXQKaisx
dmIzOXRmcjk5VE5LQjNCUHhRRURMVXpoVFYxd1V2S0M0S3ZoT0VpYU1hUWkyRzFhTmZJK2NqNnJU
SmZJS3VhZXUrSVhnQmNXdgpCVGZ0dXNqOVFqYURtaHNBK2lueWVNMkpiWEtSN05aaTJ5ZXZrY2Q5
ZjVIMTlWM3lSVHVNbUp2SmtZZkVYTGpUbXVlQnl4Y1k4N0NqCnpVZkEralp3OWs5SEd5N3pjOGVB
amFjZGJXOUF6a29iZUJQZktvektjbHFPdVYwLzAzUnZFTWh1QVB0Um12NStrcWI3ejNuMlY2QzkK
WkM5SFRSbkxSclIzd0VtKzZsbFZCOTZ6QjVxOG82Tlp6VVZHbWNDek5uQ0R6dlVId09NaU1Fem45
QTVRb1ZZdFFpOFVEcGFhSVdXZwp0K1FHam04WlpUY09QYXNsdGYvNjhMMWwzcGMwMFVuT0NXWm51
SitUcXdRWEFSejRzR0NnVEM5R0NJOWVTOTJueU92dUF4NE42bjh6Cjk3ZXpFMEk0WklselY4NnB0
QmkySXJmZVNJeEovczFPM3JnVzJKZnl4cWhwanVFZkZhS0t0UEtnc3ZBQUFBQUpjRWhaY3dBQUN4
TUEKQUFzVEFRQ2FuQmdBQUFGNVNVUkJWRGdSWTR5SXkvblB5TWpJUUM1ZzRlWGxaTkRSMFNaWFB3
T0xsSlE0ZzZTa09Qa0c4UEh4TXZEeQpjT00wNE43ZDJ3elo2Y2tNMi9jY3dxcUdDU1RLeE1TRUZW
KzljZ21zR2FibXcvdjNETjBkTFF4M2J0OUNxUC8yNHlmRGwyOC9NUENlCjNic1o2cXJMNGJhQzFM
QnhjalBvNkJreXJGbTlFcTZlNWUyN2p3enZQbnlFSzB5TkNRYXpXVmhaR2Y3OC9nMFhCNmtCeWJY
MFRHYTQKc1d3eFhBOExTQ0VyRUtNRFpNMGdPWmdhU1NrWmhqZXZYOEw1TEFMOGZBdzhQRHpvK3NF
S2ZpTzVBS2JtNjVmUERPSVNrbkE5TEJ3YwpIQXpjWEp4d0E3YnZQdzVtSHptMG4yRkNWeHZEMTY5
ZndIeVFHcERjM2wzYkdUUzFkZUY2Z0FtSkIyNGEzQlFndzhQTEY1ZytwQmh5CjBoTEF3aUFYdkgz
em11SFMrYk1NRVRIeGNEMk1jNWV0KzYranBZV3NGNFY5NitaMWh0andRSWFURjI2Z2lNTTRMS3dz
ekF6TVFJd0wKYUdyck1KeTVjaHVYTkFNTEd4c29GbkFiZ0ZNblZJS0ZpWW1SZ1prWm5DQUpxY1Vx
ejNMbXlINEdFQ1lYQUFEYi9uNzJjbmMvR3dBQQpBQUJKUlU1RXJrSmdnZ0FBQUFBQUFJbFFUa2NO
Q2hvS0FBQUFEVWxJUkZJQUFBQVFBQUFBRUFnR0FBQUFIL1AvWVFBQUFlZHBRME5RClNVTkRJRkJ5
YjJacGJHVUFBSGdCclpJL2FCUlJFTWEvM1NNNWl5Ti9SRk1aM0NKRWk0c3N1U0pKSXhmdlFNUVVS
M0pCazI2enQ5NHQKN200MnU1dlRBd1ZMYTJzdFJJdEFrbDVpUXE0UlJMRVF4VCtrVFNsWUJFVFJ1
SDd2UGNJUlNFamp3TnYzbTI5bjV1M01XeUJqV21Ibwo2UUQ4SUltbXIxNHhiczdORzluUHlLR2Zx
eHQ5bGgySGs1WEtGRU9Pc1IrZm9JbFhIMFpFclZWdjd1WHN6S3V0aisxdmIzOXRmcjk5ClROS0Iz
QlB4UUVETFV6aFRWMXdVdktDNEt2aE9FaWFNYVFpMkcxYU5mSStjajZyVEpmSUt1YWV1K0lYZ0Jj
V3ZCVGZ0dXNqOVFqYUQKbWhzQStpbnllTTJKYlhLUjdOWmkyeWV2a2NkOWY1SDE5VjN5UlR1TW1K
dkprWWZFWExqVG11ZUJ5eGNZODdDanpVZkEralp3OWs5SApHeTd6YzhlQWphY2RiVzlBemtvYmVC
UGZLb3pLY2xxT3VWMC8wM1J2RU1odUFQdFJtdjUra3FiN3ozbjJWNkM5WkM5SFRSbkxSclIzCndF
bSs2bGxWQjk2ekI1cThvNk5aelVWR21jQ3pObkNEenZVSHdPTWlNRXpuOUE1UW9WWXRRaThVRHBh
YUlXV2d0K1FHam04WlpUY08KUGFzbHRmLzY4TDFsM3BjMDBVbk9DV1pudUorVHF3UVhBUno0c0dD
Z1RDOUdDSTllUzkybnlPdnVBeDRONm44ejk3ZXpFMEk0WklsegpWODZwdEJpMklyZmVTSXhKL3Mx
TzNyZ1cySmZ5eHFocGp1RWZGYUtLdFBLZ3N2QUFBQUFKY0VoWmN3QUFDeE1BQUFzVEFRQ2FuQmdB
CkFBRWtTVVJCVkRnUnBWSTdxb05BRkQwakVveU5vdWdDWXVWYXNnb2hhM0FkTmhaWmhwMk5ZSk1t
NmYxQndNWktxOWhva2N4ekJIMXYKaEdlQ0VRNTNydWZNdVhmdURQRjluK0tMVDdSdGUvUDJQTTho
R29heDJhQnBHb2lTSkcwMmtHVVpvaUFJczRGbFdlTmFVUlNFWVFqVApOR2Z1djRYNGZENDVqaEFD
ei9PZzZ6cVdIQ2Nja3RmckJhSHZlMHhRVlJYbjh4bU80eUNPNC9uL3hDOWoxM1Vnd3lUbmE2enJH
bXlvCmw4c0ZwOU1KYVpvdWkzSjVraVFnWlZuT0JoejdRWEsvM3lIczkzdXM0WEE0NEhxOWpwckg0
OEZwZDdzZDBMWXRYVU1RQkt4RHlxS20KYVp6MmRydFJNZ3ptN1JHaUtNTHhlQVNsZEJ6c2REcjJF
dGxWMERWVVZUVldabDB3L05WbVdVYko0UHEyZzZuaU1oWkZnZDludUdRLwp6SW5ydXBzN1lEVitB
TXVVNEFRQjRMcGlBQUFBQUVsRlRrU3VRbUNDQUFBQWlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFC
QUFBQUFRCkNBWUFBQUFmOC85aEFBQUI1MmxEUTFCSlEwTWdVSEp2Wm1sc1pRQUFlQUd0a2o5b0ZG
RVF4ci9kSXptTEkzOUVVeG5jSWtTTGl5eTUKSWtrakYrOUF4QlJIY2tHVGJyTzMzaTN1YmphN205
TURCVXRyYXkxRWkwQ1NYbUpDcmhGRXNSREZQNlJOS1ZnRVJORzRmdTg5d2hGSQpTT1BBMi9lYmIy
Zm03Y3hiSUdOYVllanBBUHdnaWFhdlhqRnV6czBiMmMvSW9aK3JHMzJXSFllVGxjb1VRNDZ4SDUr
Z2lWY2ZSa1N0ClZXL3U1ZXpNcTYyUDdXOXZmMjErdjMxTTBvSGNFL0ZBUU10VE9GTlhYQlM4b0xn
cStFNFNKb3hwQ0xZYlZvMThqNXlQcXRNbDhncTUKcDY3NGhlQUZ4YThGTisyNnlQMUNOb09hR3dE
NktmSjR6WWx0Y3BIczFtTGJKNitSeDMxL2tmWDFYZkpGTzR5WW04bVJoOFJjdU5PYQo1NEhMRnhq
enNLUE5SOEQ2Tm5EMlQwY2JMdk56eDRDTnB4MXRiMERPU2h0NEU5OHFqTXB5V282NVhUL1RkRzhR
eUc0QSsxR2EvbjZTCnB2dlBlZlpYb0wxa0wwZE5HY3RHdEhmQVNiN3FXVlVIM3JNSG1yeWpvMW5O
UlVhWndMTTJjSVBPOVFmQTR5SXdUT2YwRGxDaFZpMUMKTHhRT2xwb2haYUMzNUFhT2J4bGxOdzQ5
cXlXMS8vcnd2V1hlbHpUUlNjNEpabWU0bjVPckJCY0JIUGl3WUtCTUwwWUlqMTVMM2FmSQo2KzRE
SGczcWZ6UDN0N01UUWpoa2lYTlh6cW0wR0xZaXQ5NUlqRW4relU3ZXVCYllsL0xHcUdtTzRSOFZv
b3EwOHFDeThBQUFBQWx3ClNGbHpBQUFMRXdBQUN4TUJBSnFjR0FBQUFVdEpSRUZVT0JGampJelAv
YzlBSnZqLy96OERpNFdGTVpuYUdSaXVYTG5Ld0NJcEtVNjIKQWUvZXZXRmc0ZVhoSnRzQVBqNWVC
aFltSmlhNEFlNU9ObUEyTHk4Znc2eDVpeG1FaElYaGNyZ1lMRisrL1VDUlkyUmtaQ2dzcTJaZwo0
K1JtUUpkRFVRamtmUHZ4azRIbDNZZVBjSEVlSGw2RzFKeENocWJhY29iQ2lqb0dMUjE5dUJ3Mnh0
dDNIeGtZRjZ6Y0JJL0dEKy9mCk13Z0lDakpjdlhTQm9hZXRubUgraW8zWTlNSEZybHk5eHNDNFp1
cyt1QUZ3R1NJWk4yN2NZR0RpNXVKa3dJZERmVndZYmw2N0RGYnoKOC90WEZMVWNIQndNVER3OFBB
ejRjTy9rR1F6VnBma00xNjllWnNoS2prVlJ5OHZMdzhEQ3hzcUsxOEhXTm5ZTWsyZk1ZOGpMVEdZ
QQpKVjFrOVN3c0xBd3N6Q3pNZUExNDgvbzFRM1Y1SVZnelNDR3llbGFnWHNhTE4rK1JIWWpYcjk4
QXVvQVprUkx4T2dXTEpCTVRJd1BMCm9sblRzRWdSTHdRQWltOWQwQVQzbFU0QUFBQUFTVVZPUks1
Q1lJSUFBQUFBaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJBQUFBQVEKQ0FZQUFBQWY4LzloQUFB
QjUybERRMUJKUTBNZ1VISnZabWxzWlFBQWVBR3RrajlvRkZFUXhyL2RJem1MSTM5RVV4bmNJa1NM
aXl5NQpJa2tqRis5QXhCUkhja0dUYnJPMzNpM3ViamE3bTlNREJVdHJheTFFaTBDU1htSkNyaEZF
c1JERlA2Uk5LVmdFUk5HNGZ1ODl3aEZJClNPUEEyL2ViYjJmbTdjeGJJR05hWWVqcEFQd2dpYWF2
WGpGdXpzMGIyYy9Jb1orckczMldIWWVUbGNvVVE0NnhINStnaVZjZlJrU3QKVlcvdTVlek1xNjJQ
N1c5dmYyMSt2MzFNMG9IY0UvRkFRTXRUT0ZOWFhCUzhvTGdxK0U0U0pveHBDTFliVm8xOGo1eVBx
dE1sOGdxNQpwNjc0aGVBRnhhOEZOKzI2eVAxQ05vT2FHd0Q2S2ZKNHpZbHRjcEhzMW1MYko2K1J4
MzEva2ZYMVhmSkZPNHlZbThtUmg4UmN1Tk9hCjU0SExGeGp6c0tQTlI4RDZObkQyVDBjYkx2Tnp4
NENOcHgxdGIwRE9TaHQ0RTk4cWpNcHlXbzY1WFQvVGRHOFF5RzRBKzFHYS9uNlMKcHZ2UGVmWlhv
TDFrTDBkTkdjdEd0SGZBU2I3cVdWVUgzck1IbXJ5am8xbk5SVWFad0xNMmNJUE85UWZBNHlJd1RP
ZjBEbENoVmkxQwpMeFFPbHBvaFphQzM1QWFPYnhsbE53NDlxeVcxLy9yd3ZXWGVselRSU2M0Slpt
ZTRuNU9yQkJjQkhQaXdZS0JNTDBZSWoxNUwzYWZJCjYrNERIZzNxZnpQM3Q3TVRRamhraVhOWHpx
bTBHTFlpdDk1SWpFbit6VTdldUJiWWwvTEdxR21PNFI4Vm9vcTA4cUN5OEFBQUFBbHcKU0ZsekFB
QUxFd0FBQ3hNQkFKcWNHQUFBQVFOSlJFRlVPQkdsa2o4T1JVQVF4b2VNdjRWR1ZBNmcwb2xlcDFK
S0hFUHJIa3EzMExpQwpDeWljUUt0Q3dudG1pNDNuN1JiUCt4TEorT1kzazUyZFZlcTZmc0VmUWxW
VklRaUN4eTNRZFYzd1BPOTVBOXUyd1RSTmFZTmhHQ0RMCk1oakhVY2dndVRTR1NIM2ZRMUVVTENW
ajhEZ08yUGY5cTc3ck9xaXFpdnNpaHBLNExBdXM2OHJCTUF4WnJPczZiTnZHL1N2RHpUTkEKVGRP
QTRMdXV4WlFUTWVTajR6aGdHQWJGSDdxZlFNUlFBUkpvV1JZdm5xYUp4VzNiUWxtV01NOHorNzh5
SEQ0RHBCWFNLdS9LOHh4OAozNGMwVFZsS3hGQUM2V2l5K1pJa0FWcGxITWRTaG8xQUZ5bFRGRVZB
cTVZSkZVVUIrcDVLL0FSLzZJWk4wL3lBZjZOdmo2bENLajgyCk5WUUFBQUFBU1VWT1JLNUNZSUlB
QUFBQWlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCQUFBQUFRQ0FZQUFBQWY4LzloQUFBQjUybEQK
UTFCSlEwTWdVSEp2Wm1sc1pRQUFlQUd0a2o5b0ZGRVF4ci9kSXptTEkzOUVVeG5jSWtTTGl5eTVJ
a2tqRis5QXhCUkhja0dUYnJPMwozaTN1YmphN205TURCVXRyYXkxRWkwQ1NYbUpDcmhGRXNSREZQ
NlJOS1ZnRVJORzRmdTg5d2hGSVNPUEEyL2ViYjJmbTdjeGJJR05hClllanBBUHdnaWFhdlhqRnV6
czBiMmMvSW9aK3JHMzJXSFllVGxjb1VRNDZ4SDUrZ2lWY2ZSa1N0VlcvdTVlek1xNjJQN1c5dmYy
MSsKdjMxTTBvSGNFL0ZBUU10VE9GTlhYQlM4b0xncStFNFNKb3hwQ0xZYlZvMThqNXlQcXRNbDhn
cTVwNjc0aGVBRnhhOEZOKzI2eVAxQwpOb09hR3dENktmSjR6WWx0Y3BIczFtTGJKNitSeDMxL2tm
WDFYZkpGTzR5WW04bVJoOFJjdU5PYTU0SExGeGp6c0tQTlI4RDZObkQyClQwY2JMdk56eDRDTnB4
MXRiMERPU2h0NEU5OHFqTXB5V282NVhUL1RkRzhReUc0QSsxR2EvbjZTcHZ2UGVmWlhvTDFrTDBk
TkdjdEcKdEhmQVNiN3FXVlVIM3JNSG1yeWpvMW5OUlVhWndMTTJjSVBPOVFmQTR5SXdUT2YwRGxD
aFZpMUNMeFFPbHBvaFphQzM1QWFPYnhsbApOdzQ5cXlXMS8vcnd2V1hlbHpUUlNjNEpabWU0bjVP
ckJCY0JIUGl3WUtCTUwwWUlqMTVMM2FmSTYrNERIZzNxZnpQM3Q3TVRRamhrCmlYTlh6cW0wR0xZ
aXQ5NUlqRW4relU3ZXVCYllsL0xHcUdtTzRSOFZvb3EwOHFDeThBQUFBQWx3U0ZsekFBQUxFd0FB
Q3hNQkFKcWMKR0FBQUFUUkpSRUZVT0JGampJakwrYy9JeU1oQUxtRGg1ZVZrME5IUkpsYy9BNHVV
bERpRHBLUTQrUWJ3OGZFeThQSnc0elRnM3QzYgpETm5weVF6Yjl4ekNxb1lGSk1yRXhJUlY4dkts
Q3d3bEJUbGdPVnhxV0w3OStNbnc1ZHNQREFOT0hEM01NSFZTRDF3Y214cVFKTXZiCmR4OFozbjM0
Q0ZlWUdoTU1ack93c2pMOCtmMGJMbzZzQmk0SVpMQ0FGTElDTVRwQTFneVN3NllHSk00aXdNL0h3
TVBEQTJLakFKQ0cKMzBndXdLWUdwSUdGZzRPRGdadUxFNjU1Ky83allQYVJRL3NaSm5TMU1Yejkr
Z1hNUjFZRFZ3eGtBQk1TRDFZWGVIajVBdE9IRkVOTwpXZ0pZUFM0WE1MR3dzREN3QVoyTERadWFX
VEFzWHJrZWJBQTJlWkFZQ3lzTE13TXpFT01DbXRvNkRHZXUzTVlsemNEQ3hnYUtCZHdHCjROUUps
V0JoWW1Ka1lHYkduaElKYVFiSnM1dzVzcDhCaE1rRkFMbGJSTnBzTmx2QUFBQUFBRWxGVGtTdVFt
Q0NBQUFBaVZCT1J3MEsKR2dvQUFBQU5TVWhFVWdBQUFCQUFBQUFRQ0FZQUFBQWY4LzloQUFBQjUy
bERRMUJKUTBNZ1VISnZabWxzWlFBQWVBR3RrajlvRkZFUQp4ci9kSXptTEkzOUVVeG5jSWtTTGl5
eTVJa2tqRis5QXhCUkhja0dUYnJPMzNpM3ViamE3bTlNREJVdHJheTFFaTBDU1htSkNyaEZFCnNS
REZQNlJOS1ZnRVJORzRmdTg5d2hGSVNPUEEyL2ViYjJmbTdjeGJJR05hWWVqcEFQd2dpYWF2WGpG
dXpzMGIyYy9Jb1orckczMlcKSFllVGxjb1VRNDZ4SDUrZ2lWY2ZSa1N0VlcvdTVlek1xNjJQN1c5
dmYyMSt2MzFNMG9IY0UvRkFRTXRUT0ZOWFhCUzhvTGdxK0U0UwpKb3hwQ0xZYlZvMThqNXlQcXRN
bDhncTVwNjc0aGVBRnhhOEZOKzI2eVAxQ05vT2FHd0Q2S2ZKNHpZbHRjcEhzMW1MYko2K1J4MzEv
CmtmWDFYZkpGTzR5WW04bVJoOFJjdU5PYTU0SExGeGp6c0tQTlI4RDZObkQyVDBjYkx2Tnp4NENO
cHgxdGIwRE9TaHQ0RTk4cWpNcHkKV282NVhUL1RkRzhReUc0QSsxR2EvbjZTcHZ2UGVmWlhvTDFr
TDBkTkdjdEd0SGZBU2I3cVdWVUgzck1IbXJ5am8xbk5SVWFad0xNMgpjSVBPOVFmQTR5SXdUT2Yw
RGxDaFZpMUNMeFFPbHBvaFphQzM1QWFPYnhsbE53NDlxeVcxLy9yd3ZXWGVselRSU2M0SlptZTRu
NU9yCkJCY0JIUGl3WUtCTUwwWUlqMTVMM2FmSTYrNERIZzNxZnpQM3Q3TVRRamhraVhOWHpxbTBH
TFlpdDk1SWpFbit6VTdldUJiWWwvTEcKcUdtTzRSOFZvb3EwOHFDeThBQUFBQWx3U0ZsekFBQUxF
d0FBQ3hNQkFKcWNHQUFBQU14SlJFRlVPQkdsVXJrUmhEQU1sRDB5WDBEQwpVQU1kMEtsREdxSU9G
d0VCK0VZYzB1aDBsK0JUNHRYdVNwWWZGMlBNOEVlZzl4Nm1hU3B1Z2NNd3dEaU81UTI2cm9PbWFj
b2JVQ1VkCnc4WTh6eGUxcml0b2JIMTRuaWNjeDJGNXliV21NUnR3MnpiWTk1MXpXWE4rUHc1cEdv
dmhCaGhDZ0txcUxBL091WXNqVFdOcnhMN3YKb2E1cnkwdXVOWTNaZ0xSRDI3YWN5OHE3a3FheEdH
NkE5SVQwbERhNGlEU05yUTlwckY5M2tGSVNyOFpDM3VBNkFsMWthU0NOeHlPVwpOUG4rZ2crNzRM
SXNEMHMrN1M4bDlqQzlkeG1WWVFBQUFBQkpSVTVFcmtKZ2dnQUFBSWxRVGtjTkNob0tBQUFBRFVs
SVJGSUFBQUFRCkFBQUFFQWdHQUFBQUgvUC9ZUUFBQWVkcFEwTlFTVU5ESUZCeWIyWnBiR1VBQUhn
QnJaSS9hQlJSRU1hLzNTTTVpeU4vUkZNWjNDSkUKaTRzc3VTSkpJeGZ2UU1RVVIzSkJrMjZ6dDk0
dDdtNDJ1NXZUQXdWTGEyc3RSSXRBa2w1aVFxNFJSTEVReFQra1RTbFlCRVRSdUg3dgpQY0lSU0Vq
andOdjNtMjluNXUzTVd5QmpXbUhvNlFEOElJbW1yMTR4YnM3Tkc5blB5S0dmcXh0OWxoMkhrNVhL
RkVPT3NSK2ZvSWxYCkgwWkVyVlZ2N3VYc3pLdXRqKzF2YjM5dGZyOTlUTktCM0JQeFFFRExVemhU
VjF3VXZLQzRLdmhPRWlhTWFRaTJHMWFOZkkrY2o2clQKSmZJS3VhZXUrSVhnQmNXdkJUZnR1c2o5
UWphRG1oc0EraW55ZU0ySmJYS1I3TlppMnlldmtjZDlmNUgxOVYzeVJUdU1tSnZKa1lmRQpYTGpU
bXVlQnl4Y1k4N0NqelVmQStqWnc5azlIR3k3emM4ZUFqYWNkYlc5QXprb2JlQlBmS296S2NscU91
VjAvMDNSdkVNaHVBUHRSCm12NStrcWI3ejNuMlY2QzlaQzlIVFJuTFJyUjN3RW0rNmxsVkI5NnpC
NXE4bzZOWnpVVkdtY0N6Tm5DRHp2VUh3T01pTUV6bjlBNVEKb1ZZdFFpOFVEcGFhSVdXZ3QrUUdq
bThaWlRjT1Bhc2x0Zi82OEwxbDNwYzAwVW5PQ1dabnVKK1Rxd1FYQVJ6NHNHQ2dUQzlHQ0k5ZQpT
OTJueU92dUF4NE42bjh6OTdlekUwSTRaSWx6Vjg2cHRCaTJJcmZlU0l4Si9zMU8zcmdXMkpmeXhx
aHBqdUVmRmFLS3RQS2dzdkFBCkFBQUpjRWhaY3dBQUN4TUFBQXNUQVFDYW5CZ0FBQURrU1VSQlZE
Z1JwVkl4RG9KQUVOdzdGZ0p5b0IyQkp5QmZzYkhSeWhmNEpWc1QKR3hvZllHUHBWeVNTR0lJTmVD
c3h1U3dXNUp6TEpzUHM3R1RKbmRqdTlyMFFBbXlCVVJSQVVTeHQ1d0d6TElFMFRld0Q0amlDU0lY
MgpBVFFwcFJ3RmJOYXJqM1lxejJCeWJzU21mY0d6YWJrT3ZUNEU2cG1jRy9GZTFWQTlhcTVEMXcw
QjFETTVOeUs2THJpNk9MNDNTejJUCmN4OHU1akVvcGJpdWg0YTNRVDJUY3lQNnZnL2hMT0E2Q0gw
STFETTVOK3FIcEg1dklJME5ETTREeE9GWTlrV2VjMzN5Tjdyb2dLUEwKRnVoNWRBdC9CRWo5ZjQ0
emZvbFROOExiOVFKVXRuZ0QvWE0wNFFPWWRzc0FBQUFBU1VWT1JLNUNZSUlBQUFDSlVFNUhEUW9h
Q2dBQQpBQTFKU0VSU0FBQUFFQUFBQUJBSUJnQUFBQi96LzJFQUFBSG5hVU5EVUVsRFF5QlFjbTlt
YVd4bEFBQjRBYTJTUDJnVVVSREd2OTBqCk9Zc2pmMFJUR2R3aVJJdUxMTGtpU1NNWDcwREVGRWR5
UVpOdXM3ZmVMZTV1TnJ1YjB3TUZTMnRyTFVTTFFKSmVZa0t1RVVTeEVNVS8KcEUwcFdBUkUwYmgr
N3ozQ0VVaEk0OERiOTV0dlorYnR6RnNnWTFwaDZPa0EvQ0NKcHE5ZU1XN096UnZaejhpaG42c2Jm
WllkaDVPVgp5aFJEanJFZm42Q0pWeDlHUksxVmIrN2w3TXlyclkvdGIyOS9iWDYvZlV6U2dkd1Q4
VUJBeTFNNFUxZGNGTHlndUNyNFRoSW1qR2tJCnRodFdqWHlQbkkrcTB5WHlDcm1ucnZpRjRBWEZy
d1UzN2JySS9VSTJnNW9iQVBvcDhuak5pVzF5a2V6V1l0c25yNUhIZlgrUjlmVmQKOGtVN2pKaWJ5
WkdIeEZ5NDA1cm5nY3NYR1BPd284MUh3UG8yY1BaUFJ4c3U4M1BIZ0kybkhXMXZRTTVLRzNnVDN5
cU15bkphanJsZApQOU4wYnhESWJnRDdVWnIrZnBLbSs4OTU5bGVndldRdlIwMFp5MGEwZDhCSnZ1
cFpWUWZlc3dlYXZLT2pXYzFGUnBuQXN6WndnODcxCkI4RGpJakJNNS9RT1VLRldMVUl2RkE2V21p
RmxvTGZrQm81dkdXVTNEajJySmJYLyt2QzlaZDZYTk5GSnpnbG1aN2lmazZzRUZ3RWMKK0xCZ29F
d3ZSZ2lQWGt2ZHA4anI3Z01lRGVwL00vZTNzeE5DT0dTSmMxZk9xYlFZdGlLMzNraU1TZjdOVHQ2
NEZ0aVg4c2FvYVk3aApIeFdpaXJUeW9MTHdBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFB
QS9FbEVRVlE0RWFWU1M2cUVNQkFzUS93dTNLaEhFTS9nClZVUVFiK0FCeEkxbkVISGhBYnlIZDNE
aDFyVmJkYUh2VFFmZWd4a3pNR1FLT3FHVHF1Nmt1N1dtYVg3d0JUaGpERkVVS1lmZ251Y2gKQ0FM
MUFJN2p3TElzNVFDTWxQU05Wd3ZERUdWWllsMVhFZnoxL3QrL3Jndm5lZDZNVk1Nd0lFMVRqT09J
YmR0dUhOS3hmZDl4SE1mTgpSTnJITXM4ejhqekhvMXRZbHVYRzQ3cXV3ekNNUC83YnZXMWJUTk9F
cnV1ZU9OeDFYWmltK1hRb2M0cWlRSklrTnk2bjdMWnR5elRpCmpHYWtybXZFY1N4OUthY1dVaXRs
eUxJTVZWWEI5MzNSSlJtSDAvTmxOYURDZmdMeEJTcWtLcmltYVNCVGhaaEVWVEhwZU4vMzMrangK
QzU4TWF5V1hvMlFVQUFBQUFFbEZUa1N1UW1DQ0FBQUFpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFB
QkFBQUFBUUNBWUFBQUFmOC85aApBQUFCNTJsRFExQkpRME1nVUhKdlptbHNaUUFBZUFHdGtqOW9G
RkVReHIvZEl6bUxJMzlFVXhuY0lrU0xpeXk1SWtrakYrOUF4QlJICmNrR1Rick8zM2kzdWJqYTdt
OU1EQlV0cmF5MUVpMENTWG1KQ3JoRkVzUkRGUDZSTktWZ0VSTkc0ZnU4OXdoRklTT1BBMi9lYmIy
Zm0KN2N4YklHTmFZZWpwQVB3Z2lhYXZYakZ1enMwYjJjL0lvWityRzMyV0hZZVRsY29VUTQ2eEg1
K2dpVmNmUmtTdFZXL3U1ZXpNcTYyUAo3Vzl2ZjIxK3YzMU0wb0hjRS9GQVFNdFRPRk5YWEJTOG9M
Z3ErRTRTSm94cENMWWJWbzE4ajV5UHF0TWw4Z3E1cDY3NGhlQUZ4YThGCk4rMjZ5UDFDTm9PYUd3
RDZLZko0ellsdGNwSHMxbUxiSjYrUngzMS9rZlgxWGZKRk80eVltOG1SaDhSY3VOT2E1NEhMRnhq
enNLUE4KUjhENk5uRDJUMGNiTHZOeng0Q05weDF0YjBET1NodDRFOThxak1weVdvNjVYVC9UZEc4
UXlHNEErMUdhL242U3B2dlBlZlpYb0wxawpMMGROR2N0R3RIZkFTYjdxV1ZVSDNyTUhtcnlqbzFu
TlJVYVp3TE0yY0lQTzlRZkE0eUl3VE9mMERsQ2hWaTFDTHhRT2xwb2haYUMzCjVBYU9ieGxsTnc0
OXF5VzEvL3J3dldYZWx6VFJTYzRKWm1lNG41T3JCQmNCSFBpd1lLQk1MMFlJajE1TDNhZkk2KzRE
SGczcWZ6UDMKdDdNVFFqaGtpWE5YenFtMEdMWWl0OTVJakVuK3pVN2V1QmJZbC9MR3FHbU80UjhW
b29xMDhxQ3k4QUFBQUFsd1NGbHpBQUFMRXdBQQpDeE1CQUpxY0dBQUFBU05KUkVGVU9CRmpqSWpM
K2MvSXlNaEFMbURoNWVWazBOSFJKbGMvQTR1VWxEaURwS1E0K1FidzhmRXk4UEp3CmsyMEFFMGdu
RXhNVEJ2WjBzV09ZMU4vTjhQSGpCd1pRRUdGVEF4SmorZmJqSjhPWGJ6K3d1bUQ3MXMwTVZ5NWZa
a2hNeldUUTB0RmoKWUdWbHhWREhyRzlpMWNETHg4ZndIV2dRTXQ2OGJoVlk4U2VnQ3c3dTM4UHc4
L2R2Qm41QllZYi9ESXdvNnBoWWdLYUNURWJINkZhQgpERnc4YndhR09oWUJmajRHSGg0ZWRQVVkv
TENvZUFaWFR4OE10U3djSEJ3TTNGeWNHQnBnQXZJS1NneHAyZmtNdXZxR1dNTUFtSkI0Ck1FeUZh
ZllKQ0daSXpjeGxFQkFRQk1jQ1RCeVpaZ0VDQmpZc29Ydnl3ZzFrZFRqWkxLd3N6QXpNUUV3dVlH
RmpBOFVBQlFZd01URXkKTURPREV5UlpqbUE1YzJRL0F3aVRDd0RwM2tuUWxyZVdLUUFBQUFCSlJV
NUVya0pnZ2dBQUFBQ0pVRTVIRFFvYUNnQUFBQTFKU0VSUwpBQUFBRUFBQUFCQUlCZ0FBQUIvei8y
RUFBQUhuYVVORFVFbERReUJRY205bWFXeGxBQUI0QWEyU1AyZ1VVUkRHdjkwak9Zc2pmMFJUCkdk
d2lSSXVMTExraVNTTVg3MERFRkVkeVFaTnVzN2ZlTGU1dU5ydWIwd01GUzJ0ckxVU0xRSkplWWtL
dUVVU3hFTVUvcEUwcFdBUkUKMGJoKzd6M0NFVWhJNDhEYjk1dHZaK2J0ekZzZ1kxcGg2T2tBL0ND
SnBxOWVNVzdPelJ2Wno4aWhuNnNiZlpZZGg1T1Z5aFJEanJFZgpuNkNKVng5R1JLMVZiKzdsN015
cnJZL3RiMjkvYlg2L2ZVelNnZHdUOFVCQXkxTTRVMWRjRkx5Z3VDcjRUaEltakdrSXRodFdqWHlQ
Cm5JK3EweVh5Q3JtbnJ2aUY0QVhGcndVMzdickkvVUkyZzVvYkFQb3A4bmpOaVcxeWtleldZdHNu
cjVISGZYK1I5ZlZkOGtVN2pKaWIKeVpHSHhGeTQwNXJuZ2NzWEdQT3dvODFId1BvMmNQWlBSeHN1
ODNQSGdJMm5IVzF2UU01S0czZ1QzeXFNeW5KYWpybGRQOU4wYnhESQpiZ0Q3VVpyK2ZwS20rODk1
OWxlZ3ZXUXZSMDBaeTBhMGQ4Qkp2dXBaVlFmZXN3ZWF2S09qV2MxRlJwbkFzelp3Zzg3MUI4RGpJ
akJNCjUvUU9VS0ZXTFVJdkZBNldtaUZsb0xma0JvNXZHV1UzRGoyckpiWC8rdkM5WmQ2WE5ORkp6
Z2xtWjdpZms2c0VGd0VjK0xCZ29Fd3YKUmdpUFhrdmRwOGpyN2dNZURlcC9NL2Uzc3hOQ09HU0pj
MWZPcWJRWXRpSzMza2lNU2Y3TlR0NjRGdGlYOHNhb2FZN2hIeFdpaXJUeQpvTEx3QUFBQUNYQklX
WE1BQUFzVEFBQUxFd0VBbXB3WUFBQUE5RWxFUVZRNEVhVlN1NjJFTUJBY0kvT1ZJS01FQW1vZ3BB
Z1M2cUFUCjJpQ2pDUkpFQmoyUWtVQUE3ekhvUUh1NmU0bmZTb3ZIT3pOcnM3S3E2L29IL3dpZHBx
bXhmWm9tNkRpT2pSdk04d3p0ZVo1eGd5QUkKWUozQnowY093NEFrU2E0NjF4dExMVS9XKzc1LzNL
RHZleFJGY2RVbEx6SEo0emlndDIxN2E4Q1R5N0o4YXBLWG1JSjFYYUVkeDNuRQpCTkxNdmVRbEpt
ZmJOaXpYZFNHemFScHlUNUM3UStxSW95aUM1ZnMrWkdaWmhyWnRiOC9GM1J1cEkrYU4xTElzWDE5
aTEzWEk4eHduCmp6QU1yeDdFTXNaeGhEb0g4N1dCRlA2RnI1ZklRWmdHZjBFcnBVejlvTmN5ZHIr
TXFxb3E0eG13eHk5Q1lFd3B0SmsrL3dBQUFBQkoKUlU1RXJrSmdnZ0FBQUlsUVRrY05DaG9LQUFB
QURVbElSRklBQUFBUUFBQUFFQWdHQUFBQUgvUC9ZUUFBQWVkcFEwTlFTVU5ESUZCeQpiMlpwYkdV
QUFIZ0JyWkkvYUJSUkVNYS8zU001aXlOL1JGTVozQ0pFaTRzc3VTSkpJeGZ2UU1RVVIzSkJrMjZ6
dDk0dDdtNDJ1NXZUCkF3VkxhMnN0Ukl0QWtsNWlRcTRSUkxFUXhUK2tUU2xZQkVUUnVIN3ZQY0lS
U0VqandOdjNtMjluNXUzTVd5QmpXbUhvNlFEOElJbW0KcjE0eGJzN05HOW5QeUtHZnF4dDlsaDJI
azVYS0ZFT09zUitmb0lsWEgwWkVyVlZ2N3VYc3pLdXRqKzF2YjM5dGZyOTlUTktCM0JQeApRRURM
VXpoVFYxd1V2S0M0S3ZoT0VpYU1hUWkyRzFhTmZJK2NqNnJUSmZJS3VhZXUrSVhnQmNXdkJUZnR1
c2o5UWphRG1oc0EraW55CmVNMkpiWEtSN05aaTJ5ZXZrY2Q5ZjVIMTlWM3lSVHVNbUp2SmtZZkVY
TGpUbXVlQnl4Y1k4N0NqelVmQStqWnc5azlIR3k3emM4ZUEKamFjZGJXOUF6a29iZUJQZktvektj
bHFPdVYwLzAzUnZFTWh1QVB0Um12NStrcWI3ejNuMlY2QzlaQzlIVFJuTFJyUjN3RW0rNmxsVgpC
OTZ6QjVxOG82Tlp6VVZHbWNDek5uQ0R6dlVId09NaU1Fem45QTVRb1ZZdFFpOFVEcGFhSVdXZ3Qr
UUdqbThaWlRjT1Bhc2x0Zi82CjhMMWwzcGMwMFVuT0NXWm51SitUcXdRWEFSejRzR0NnVEM5R0NJ
OWVTOTJueU92dUF4NE42bjh6OTdlekUwSTRaSWx6Vjg2cHRCaTIKSXJmZVNJeEovczFPM3JnVzJK
Znl4cWhwanVFZkZhS0t0UEtnc3ZBQUFBQUpjRWhaY3dBQUN4TUFBQXNUQVFDYW5CZ0FBQUVPU1VS
QgpWRGdSWTR5TXovM1BRQ2I0Ly84L0E0dUZoVEdaMmhrWXJseTV5c0FpS1NsT3RnSHYzcjFoWU9I
bDRTYmJBRDQrWGdZbUlBQVJHUGptCmpXc01uaTUyWUhFUURXTWpxd1haelBMbDJ3OE1GNEEwVjVY
a2djV1I1WkhaSU1sdlAzNHlzTHo3OEJIRmdMdTNiekowTkZiQnhaRGwKa2RrZ0JXL2ZmV1JnWVdW
bGhTc0dNWkExZy9qSThzaHNrQnhRTXdNVER3OFBBekp1NjUwQ2tvTURrQndNSUtzRHNRWDQrUmlZ
dUxrNApHWkN4b1pFeFE5K1UyVEE5WURrWUIxa2RpTTNCd1lIcEFwREpwdVlXRE5QbkxRSHJ3K2ND
WGw0ZUJzYVRGMjZRblpTdlhMdkd3TUxNCndneHpJY2swSzFBdk1DREpONENOalJYb0FtWW1rbTJH
YVdCaVltUmdXVFJyR294UEZnMEFIZFZFRnQreDZJMEFBQUFBU1VWT1JLNUMKWUlJQWlWQk9SdzBL
R2dvQUFBQU5TVWhFVWdBQUFBZ0FBQUFRQ0FJQUFBQ2s2S2txQUFBTkZtbERRMUJKUTBNZ1VISnZa
bWxzWlFBQQplSnlWMTNrMGxQMzdCL0RybmhtR01XYkdZR3hoWk4rVm5aQWxzaVQ3WHBLZGliRWts
YklraGNnU2lqYUtOcUZFb3FKNnlKSWtXWklsCktuc3BSTExNN3c5NTZ2ZWM4M3kvNS92NTY3cXZj
Kzc3L3R6M09hLzM1MXdBUkx3SG5VNURBY0Mrb1BCUUd4TURxcE96Q3hYYkF3Z2cKUUFFMW9IaDRo
dEgxcmF3czRGL1hmQmNnQUFBZDhoNTBPaTJ4VnI4NFJ4QjNrdlNaR01EM1JLTGszKzhEQUFCQ3FK
T3pDd0FpQndCYwp2bXYxVmdEZzJydFcyd0VBMTRGd2VqZ0E0Z2NBWEo1K0hsNEFTQlFBeUlYYTJS
Z0NJTmNCZ09DN1ZsY0JBR0h2V3QwSUFJUUlUOTl3CkFLUUhnSmtjNU9VZkJJQ2RBbURXOWZJTzh3
UWd5QUdBbDFlWTV6NEFRaG9BS096YkYrd0ZRS2dEQUNsUGVtZzRBR0VNQU1TY25GMm8KYTF0MlRR
SlE0UU5nTWYvZE81QUZVSkVQSUxYamQwLzBQZ0RGQTZBZzVYZHYxZ1lRQUVBb2JXRSt5cHNCQUFE
Qkd3QXdEVEFZc3hJQQoyQXlBbFhRR1k2bUF3Vmk1QW9EdUE2aWplZTRQamZqMXZ4Q2tGZUMvWGE5
OTg2K0ZSZ0JRQUlnWVVvUTZoSTdDUkRFZFpZN0J4ckVjCll6VmlyY2VkWUR1SlQyUS9SYWdrK1hH
a2s5TTVNN2pPY0dkUnNuaHllT3Y1Z3dYeU51UUpYaEJxcE80WEtkaDRSYlJOL0xCRWtXUzcKOUZH
Wlc3SmQ4bkVLdHhWN041M1lmRmQ1VVBXVVdxWDZrR2FxVnJYMmlFNm03bU85Q2Yxc2c2ZUdYN2Js
R2plWXpKaGVNbXMybjk5UgpZUGx5NXl1clY5YnROc3QyTiswN0hib2N1NTE2WERDdWQ5ejZkdlh2
SG5BZjNQTitMOTd6Z2RkSDcwOCtJNzZqZm1QKzQ0SGN0Q2Y3ClBnZDlDWjZtZnczNUZqb1ROaGMr
dC85N3hQeUJoY2dmQnhjUC9UeThITFY4WkNWYU9xWXpEam1HaWtjZnh5UXduV0EraVUxa1NXSk4K
eHAxaVM4R25zcDhtcEJIVFNSa2NtZVF6bkZsYzJkdzVsTE04NTNoeitmTDR6d3RjMkhCUjhKTFFa
ZUY4YW9ISWxZMVhSUXZGaXNTdgpTVjZYdkNGMVUvcVd6SzNKWXRwdHVSTDVVc1V5cFR1YjdtNHEz
M3hQcFVLMVVxMXkvbjVFbGZvRGpXcXRHdTJIV3g1dGVhenplTFUyCnVrN3Z5ZGFuK3M4TS9qS3N4
OVRITjJ4N2J0eG8wbVRhYk5xQ2EwbCtZZDVxOGRLeWpkQjIrcFZWdS9Wcm13NXlSOFliMjA2N0x2
dHUKU25kT2orTmJwMTZYZC96djh2cmMrdDBHZGcwS0RWNTY3ejYwWjFoa3VPREQzbytlbjd4R3hF
ZUtSbjNHZk1mOUpxUW5iazRHVEFWKwpwbjJSLzFJeUhmUTErQnQ5WnRQTTNkblF1YkR2NGZPcTg1
VUxFVDhpRncvK1BMaWt0VlN6ZkhnbGFsVm45VEdEQVlDSW9naW9yK2dXCnpDMm1UT1lvckMrTEhh
c2hUb1ZORWkvSnprdmdJZktTZURtNHlSS2NVbHdhM0JhVTNUeGh2S2w4cGZ3dEF1T0NuRUpxd3I3
VXN5TFAKUlJFeEhmRVFpVHVTMDlKU01qVFpHbm0wZ3I1aXV0TFFabW5sQkpWdU5SbDF1a2E5Rm85
MjVKWVh1aFM5NEsxUERjUU1EeHUxR3d1WgpSRzUvWkxwb3ZzbkNlMGVXWmJzVndkckVKdEsyME82
TkE4NXhxMU9JOHdXWEJ0ZnBYY0s3ZDdvZjJsUGdVYjkzM0l2Ylc4L0h5ZmVvCjMyWC91b0Qrd01W
OW5FR3l3VVowdjVDbzBMU3dndkNLL1kwUjd3NU1STTRmUWgvbWlLSWVrVHVxR3IwMXhqeDJaNXpy
c1QzeDNzZHAKQ2VFblFrL0dKTVlrSFV0T1BKV1JrcHlhZS9wY1drNTZlc2I1ekl3ejJWbG5zNi9u
WER0YmN1NTY3cTI4MHZNUEx6eThXSC9weGVYMgovSTZDamlzZFY5OFZmaXdhdlRaOC9kT042WnZm
YmswWGY3azlVekpkT2xrMmRXZjA3bEQ1OEwzZWl2YktwdnQxVmZjZmxGYWZyOGw0CkdQTm8zMlBY
V3ZPNkxVOWtucEtmTGo1Ny8xZHovYjJHek9laGpiWk5hczBDell5VzNoZjNXcE5ldXJTSnRvMjhL
bTgvOG5wYkI2R2oKLzgzbHpvQXU1YTZWN3RhZXpMZTdlcVY3Wjk5Vjk4WDFtdzl3RFF3TTNuZ2ZO
cVE5akJsdS9uRG00KzVQa3ArbVJxcEhZOGZNeHJuSAoreWV1VHRLbVZLZFdQemQ5eVpoMi9TcjJk
ZXBiK1V6VXJNa2NlYTduZStGODhJTG1EL1NQNTR2cFAxMlhSSmMrTDFldXhLeWFNaWdNCkJnQWNR
eUpSaDlEYTZHck1FU1k5cGxybVdPeHhGbU9XZXRZRTNBbTJKTHdadm9VOWhaQkNUQ1h0SkxWeHBK
RXpPRE81TXJudHVOOVEKc25teWVjL3k1ZkxuQ2VSdE9DL29KdGd2ZEVuNE1qVmZKSDlqdnVnVnNh
dmloUkpGa3Rla3JrdmZrUEdYbVpDOUtWY3NmMXVoUkxGVQpxV3pUbmMxM2xjdFY3cWxXcWxXcVYy
cEVhdnpRck5hcTFxN1o4bERua2U1UjNWVzkycTExK2s4TW5obytNNHJmaHRsV2I5eGc4bng3Cm8y
bVRXYk41c2dYZTRzV09Wc3VYTzl1czBxeEoxdTAycjIwNzdON1lkemxrTzFJY3U1MTZuTis2OUxy
bXVRbTQ5ZTNxM3ozby9uN1AKZTQvOHZTSjdoejAvZUgzMC91UlQ1Q3V4bGlBQkU0RzNhSEswcWYr
WElyTi9wMGpWUVkyRGk0ZCtIbDZLV2o2eWNuUTFtaEVMY2FpLwprd1I3RXB2SWt0aVVaSmJNZGdx
ZmdrOWxQMDFNSTZWei9KMGxsQnllczd5L3NtVERuMWxTTUh6Rjg2cG9vVmlSeERXSjlUUXBscnN0
Clg2THdSNVlvVjZoVXF0NVhyMUovb0ZHdFdhUDlVUHZSbHNlNnRicC81TWkyQnVQbnhvMG1UZHVi
VFZ2TVgwUzgzTmhtK2NxcTNlcTEKZGNlUlRwa3VoMjdIbnJoZXhYY3VmUWtEeW9PSlE2ckRwejU2
aldpUHBvLzdUd1o4cGswSGYwdWFjNWsvdlppOFlzTmdBS3lkZlFBQQp6R29BMmJJQURya0F0Z1VB
Q2JJQWt1NEFsT3NBVnV3QWRwcUFZaElDbEE0ZEVET2Q5Zk1ERUNDQklDaUFBVGhER0tSQkdmeEFx
SWc1CkVvbGNSMTRpb3lnaXlnUVZpM3FFV2ticm9HUFJEZWhsakFqR0dWT0UrYzVrekhTY3FaUnBt
dG1FT1o5NUJNdU5kY00rWXNHeWFMTEUKczB5eWFyRUdzOWJoNUhFeHVDbzJBbHNzMjFzOEZ6NElQ
OGEramYwWSt4REJnL0NVaUNiNkVLZEkxcVJzMGdwSElzY01XWXRjeUtuTwpXY2c1emVYT3RjRHR6
MTFKa2FVODUvSGh4ZkxlNUJQbk84QTN4MzlCd0VSZ2RzTmxRVEhCS0NGRXFFSTRnQ3BDN1JVNXMz
SGp4aGhSCm9taWJXTHE0dlFTL3hMRGtMU2xEcVJ2U0JqSWNNa095NVhJbjVOMFVsQlh4aXFOS2Yy
MHEyQnluN0tWaW9pcW54cW0yckQ2aWthTkoKMEt6VEt0UE8zM0pHNTZSdXRONkJyU0g2TkFOL1F6
OGp2MjJCeGtFbTRkc1BtOGFiblRiUHM3aXhvOHF5YVdlZjFUY2JySzJRbllhOQpyUVBkTWRXcHhQ
bVZ5NndiN3k3ZDNUN3VhWHRxUE1ZOGVieE12QS82RlB2ekJsZ0ZKdEhxZzFEQit2VFlrR2Roek9I
bSt6TWl4UTRHCkgzb1loVHZpY3JRNG1oRnJGNDg2N3Bady95Um5Za2hTZTBwVzZtS2FlM3BEcHVL
WjNKeXdzeDl5YmZQcUw1WmNGcysvY0lXbmlIUXQKOVFiaDV1bmJPYVdDWlZmdnlsY1lWYlpYZVR6
NDlvam5jWEdkd2JQd2VtSkRjYU5aUzFLci9NdjJWeEVkRFozMGJvR2V4ajZKL3A3QgpwQ0c5ajhV
alhtUEM0NzJmSGFZcFg3dG5jdWZjRjZZV0s1YWlHYndNQmdDZ0FBYzhJQTE2NEFUN0lRdXFZQURC
SWtxSU81S0sxQ0t6CktCbVVPeW9YOVFaTlJPOUFuMEszWXRneE96RlptSGRNVkNaL3BqS21IOHlH
ektlWjMyTEZzZnV4ejFqSUxGNHNWYXhzckc2c0pUZ00KYmpmdUhodU96Wk90RnMrTnArTmIyV1hZ
VTlpbkNCYUVVaUk3TVpqWVJkcEt1c3BCNElqZ2VFYzJKdC9ocEhKbWNLNXloWEY5NWc3ZwpucURR
S0RNODRUenp2SWY0RUw1VC9QejhOd1UwQlJvMk9Hd1lGNHdSNGhPcUZMWVducUFtaUVpSU5HNE1F
dVVSZlN6bUtZNFhmeUlSCkpDa3MrVm9xVWRwQWVrV21SalpLVGtkdVFiNVc0YVNpblpLSTB2U20y
czNweWdFcVJxcENxa3RxbmVvUE5DNW94bXI1YWp0dTBkRlIKMUJYUkkyL0Y2S1AxWnd5K0dVNGJU
VzRiTVo0MW1keiszUXhsem1YQnMyT1RwZTdPblZZMjFvRTJCMjN6N083YXYzQjQ1N2pzek9XaQo2
R3JwRnJMcjNPNTY5MUVQMXIxS25uNWV1ZDYxUGwvOXBQMjlBM0lDTy9jSkJOa0g1OUhIUXFYQ0lz
S2JJZ1FQaEVVMkh4STluQm8xCmNkUTV1akZXTGE0d25udzg5UVQ1WkhZU2IzSmVpbXJxeXpUdjlK
K1pLVm5xMlovT1hzd05PRzkvVWZveVUvN1VsYWVGRmRmTzNVaTQKNVhuYnJkVDRqa2E1U29YQ2Zm
a0hValhpajZScWxaN29QZHRlYi8yYzFoVFNrdDU2dWUxaCswQUhvMHU0UjZmWHF5OTVvUHI5MUFl
KwpUd2FqTWVQWEp6OSs0Zi9xTTNOeGJtUkJhakZvcVhJVllUQUFnQmxJSUFnRzRBeHBVQWF2MSsy
dnUxOVRqeUZpbkRIZm1ZeVpjbjk1Clg4VzZzUWl6eExOTXN0cXgxdUhrY2VmWkNHeXhiQXY0SVB3
WXV4ZkJnL0NCNkVPY0lvV1JWamdTeVJSeUlhYzZaek9YTzljQ2Q5cmYKcGkzNTVuNTV0aEpDaENw
K1diWmVrL3pMY1lTMHdaK0dmd3YrNWZlMVpwMVcyVys3ditYK3U5di9wTlozeUo4M3dPcWZhaU42
LytrMgo3dWFmY2s5dC9pMDNtM25kN2dYTmRiMVhNOWY5RnBQWEJaZFhyUnV1T2JhbStFbnZ1dU9t
OFpha0YzKzFacjlzZnhYeFdyQ2pvWlBlClZkYWQwTlBZRzlFbjBSODRZRFNZTktRM2ZPTEQzby9G
bitaSE9zYUV4d01uVENlbHByQ2ZIYjRVVFNkODlmMjJmVVptbG0zMnk5eXIKNytYejJRdDJDMU0v
NGhjTmZrcitIRm1LWHVaZHZyakNzUksvc3JCNmxaSE1ZQUNzelVzQUFJQXpES1lGaDFJdERJMyt5
M0QzdjY1OQp0UDNyNzBBQUFPOGRaRzhMQUdRQTJBQ0dFQXcwQ0laUW9JSUZHSUlSd05xc0JnREFU
QUk0N3dnQVVQdmpjTXcvbnh2dUhSa09BR0FZClREOFk2dS9yRjA3VnA5TnAzbkpVMHlCUEJUbnFa
aVVsRGZnL0dDVCtPd1FBdkpvQUFBQ3JTVVJCVkJpVmJjOHhDb1JBREFYUVpNaGsKWmxLSUlJSlky
RnBZZTFSTHorQXB2SW9naUFqVGFLSFlMTE1MbTNTZlI4Z1BEc01BMnBBeHBtMWJCWXFpS010U0FS
SHgzaXNBQU1ZWQpCWjdudWU4NzVXM2JwbWxhbG9YTzg3eXVLOEU4enpIR3VxN0pXc3ZNQ1k3amFK
b21oRUJabGpubkVuUmRGMlBNODV5WU9ZU1FvTy83CmRWMzNmU2Z2dllna0VKR3FxZ0NBbkhPL043
NTFtZGxhcXdBaUl1SS9LRDkvTnNaeFZPRUZ1d1FzS09waTlPNEFBQUFBU1VWT1JLNUMKWUlJQUFJ
bFFUa2NOQ2hvS0FBQUFEVWxJUkZJQUFBQUlBQUFBRUFnQ0FBQUFwT2lwS2dBQURSWnBRME5RU1VO
RElGQnliMlpwYkdVQQpBSGljbGRkNU5KVDkrd2Z3NjU0WmhqRm14bUJzWVdUZmxaMlFKYklrKzE2
U25ZbXhKSld5SklYSUVvbzJpamFoUktLaWVzaVNKRm1TCkpTcDdLVVN5ek84UGVlcjNuUE44ditm
NytldTZyM1B1Ky83Yzl6bXY5K2RjQUVTOEI1MU9Rd0hBdnFEd1VCc1RBNnFUc3dzVjJ3TUkKSUVB
Qk5hQjRlSWJSOWEyc0xPQmYxM3dYSUFBQUhmSWVkRG90c1ZhL09FY1FkNUwwbVJqQTkwU2k1Ti92
QXdBQVFxaVRzd3NBSWdjQQpYTDVyOVZZQTROcTdWdHNCQU5lQmNIbzRBT0lIQUZ5ZWZoNWVBRWdV
QU1pRjJ0a1lBaURYQVlEZ3UxWlhBUUJoNzFyZENBQ0VDRS9mCmNBQ2tCNENaSE9UbEh3U0FuUUpn
MXZYeUR2TUVJTWdCZ0pkWG1PYytBRUlhQUNqczJ4ZnNCVUNvQXdBcFQzcG9PQUJoREFERW5KeGQK
cUd0YmRrMENVT0VEWURILzNUdVFCVkNSRHlDMTQzZFA5RDRBeFFPZ0lPVjNiOVlHRUFCQUtHMWhQ
c3FiQVFBQXdSc0FNQTB3R0xNUwpBTmdNZ0pWMEJtT3BnTUZZdVFLQTdnT29vM251RDQzNDliOFFw
QlhndjEydmZmT3ZoVVlBVUFDSUdGS0VPb1NPd2tReEhXV093Y2F4CkhHTTFZcTNIbldBN2lVOWtQ
MFdvSlBseHBKUFRPVE80em5CblViSjRjbmpyK1lNRjhqYmtDVjRRYXFUdUZ5blllRVcwVGZ5d1JK
RmsKdS9SUm1WdXlYZkp4Q3JjVmV6ZWQySHhYZVZEMWxGcWwrcEJtcWxhMTlvaE9wdTVqdlFuOWJJ
T25obCsyNVJvM21NeVlYakpyTnAvZgpVV0Q1Y3VjcnExZlc3VGJMZGpmdE94MjZITHVkZWx3d3Ju
ZmMrbmIxN3g1d0g5enpmaS9lODRIWFIrOVBQaU8rbzM1ai91T0IzTFFuCit6NEhmUW1lcG44TitS
WTZFellYUHJmL2U4VDhnWVhJSHdjWEQvMDh2QnkxZkdRbFdqcW1NdzQ1aG9wSEg4Y2tNSjFnUG9s
TlpFbGkKVGNhZFlrdkJwN0tmSnFRUjAwa1pISm5rTTV4WlhObmNPWlN6UE9kNGMvbnkrTThMWE5o
d1VmQ1MwR1hoZkdxQnlKV05WMFVMeFlyRQpyMGxlbDd3aGRWUDZsc3l0eVdMYWJia1MrVkxGTXFV
N20rNXVLdDk4VDZWQ3RWS3RjdjUrUkpYNkE0MXFyUnJ0aDFzZWJYbXM4M2kxCk5ycE83OG5XcC9y
UERQNHlyTWZVeHpkc2UyN2NhTkprMm16YWdtdEpmbUhlYXZIU3NvM1FkdnFWVmJ2MWE1c09ja2ZH
Rzl0T3V5NzcKYmtwM1RvL2pXNmRlbDNmODcvTDYzUHJkQm5ZTkNnMWVldTgrdEdkWVpMamd3OTZQ
bnArOFJzUkhpa1o5eG56SC9TYWtKMjVPQmt3RgpmcVo5a2Y5U01oMzBOZmdiZldiVHpOM1owTG13
NytIenF2T1ZDeEUvSWhjUC9qeTRwTFZVczN4NEpXcFZaL1V4Z3dHQWlLSUlxSy9vCkZzd3Rwa3pt
S0t3dml4MnJJVTZGVFJJdnljNUw0Q0h5a25nNXVNa1NuRkpjR3R3V2xOMDhZYnlwZktYOExRTGpn
cHhDYXNLKzFMTWkKejBVUk1SM3hFSWs3a3RQU1VqSTAyUnA1dElLK1lyclMwR1pwNVFTVmJqVVpk
YnBHdlJhUGR1U1dGN29VdmVDdFR3M0VEQThidFJzTAptVVJ1ZjJTNmFMN0p3bnRIbG1XN0ZjSGF4
Q2JTdHREdWpRUE9jYXRUaVBNRmx3Ylg2VjNDdTNlNkg5cFQ0RkcvZDl5TDIxdlB4OG4zCnFOOWwv
N3FBL3NERmZaeEJzc0ZHZEwrUXFOQzBzSUx3aXYyTkVlOE9URVRPSDBJZjVvaWlIcEU3cWhxOU5j
WThkbWVjNjdFOThkN0gKYVFuaEowSlB4aVRHSkIxTFRqeVZrWktjbW52NlhGcE9lbnJHK2N5TU05
bFpaN092NTF3N1czTHVldTZ0dk5MekR5ODh2RmgvNmNYbAo5dnlPZ280ckhWZmZGWDRzR3IwMmZQ
M1RqZW1iMzI1TkYzKzVQVk15WFRwWk5uVm45TzVRK2ZDOTNvcjJ5cWI3ZFZYM0g1UlduNi9KCmVC
anphTjlqMTFyenVpMVBaSjZTbnk0K2UvOVhjLzI5aHN6bm9ZMjJUV3JOQXMyTWx0NFg5MXFUWHJx
MGliYU52Q3B2UC9KNld3ZWgKby8vTjVjNkFMdVd1bGU3V25zeTN1M3FsZTJmZlZmZkY5WnNQY0Ew
TURONTRIemFrUFl3WmJ2NXc1dVB1VDVLZnBrYXFSMlBIek1hNQp4L3Nucms3U3BsU25WajgzZmNt
WWR2MHE5blhxVy9sTTFLekpISG11NTN2aGZQQ0M1Zy8waitlTDZUOWRsMFNYUGk5WHJzU3Ntaklv
CkRBWUFIRU1pVVlmUTJ1aHF6QkVtUGFaYTVsanNjUlpqbG5yV0JOd0p0aVM4R2I2RlBZV1FRa3ds
N1NTMWNhU1JNemd6dVRLNTdiamYKVUxKNXNublA4dVh5NXdua2JUZ3Y2Q2JZTDNSSitESTFYeVIv
WTc3b0ZiR3I0b1VTUlpMWHBLNUwzNUR4bDVtUXZTbFhMSDlib1VTeApWS2xzMDUzTmQ1WExWZTZw
VnFwVnFsZHFSR3I4MEt6V3F0YXUyZkpRNTVIdVVkMVZ2ZHF0ZGZwUERKNGFQak9LMzRiWlZtL2NZ
UEo4CmU2TnBrMW16ZWJJRjN1TEZqbGJMbHp2YnJOS3NTZGJ0TnE5dE8remUySGM1WkR0U0hMdWRl
cHpmdXZTNjVya0p1UFh0NnQ4OTZQNSsKejN1UC9MMGllNGM5UDNoOTlQN2tVK1Fyc1pZZ0FST0J0
Mmh5dEtuL2x5S3pmNmRJMVVHTmc0dUhmaDVlaWxvK3NuSjBOWm9SQzNHbwp2NU1FZXhLYnlKTFls
R1NXekhZS240SlBaVDlOVENPbGMveWRKWlFjbnJPOHY3Smt3NTlaVWpCOHhmT3FhS0ZZa2NRMWlm
VTBLWmE3CkxWK2k4RWVXS0Zlb1ZLcmVWNjlTZjZCUnJWbWovVkQ3MFpiSHVyVzZmK1RJdGdiajU4
YU5KazNibTAxYnpGOUV2TnpZWnZuS3F0M3EKdFhYSGtVNlpMb2R1eDU2NFhzVjNMbjBKQThxRGlV
T3F3NmMrZW8xb2o2YVArMDhHZktaTkIzOUxtbk9aUDcyWXZHTERZQUNzblgwQQpBTXhxQU5teUFB
NjVBTFlGQUFteUFKTHVBSlRyQUZic0FIYWFnR0lTQXBRT0hSQXpuZlh6QXhBZ2dTQW9nQUU0UXhp
a1FSbjhRS2lJCk9SS0pYRWRlSXFNb0lzb0VGWXQ2aEZwRzY2QmowUTNvWll3SXhobFRoUG5PWk14
MG5LbVVhWnJaaERtZmVRVExqWFhEUG1MQnNtaXkKeExOTXNtcXhCclBXNGVSeE1iZ3FOZ0piTE50
YlBCYytDRC9Hdm8zOUdQc1F3WVB3bElnbStoQ25TTmFrYk5JS1J5TEhERm1MWE1pcAp6bG5JT2Mz
bHpyWEE3YzlkU1pHbFBPZng0Y1h5M3VRVDV6dkFOOGQvUWNCRVlIYkRaVUV4d1NnaFJLaENPSUFx
UXUwVk9iTng0OFlZClVhSm9tMWk2dUwwRXY4U3c1QzBwUTZrYjBnWXlIREpEc3VWeUorVGRGSlFW
OFlxalNuOXRLdGdjcCt5bFlxSXFwOGFwdHF3K29wR2oKU2RDczB5clR6dDl5UnVla2JyVGVnYTBo
K2pRRGYwTS9JNzl0Z2NaQkp1SGJENXZHbTUwMno3TzRzYVBLc21sbm45VTNHNnl0a0oyRwp2YTBE
M1RIVnFjVDVsY3VzRys4dTNkMCs3bWw3YWp6R1BIbThUTHdQK2hUNzh3WllCU2JSNm9OUXdmcjAy
SkJuWWN6aDV2c3pJc1VPCkJoOTZHSVU3NG5LME9Kb1JheGVQT3U2V2NQOGtaMkpJVW50S1Z1cGlt
bnQ2UTZiaW1keWNzTE1mY20zejZpK1dYQmJQdjNDRnA0aDAKTGZVRzRlYnAyem1sZ21WWDc4cFhH
RlcyVjNrOCtQYUk1M0Z4bmNHejhIcGlRM0dqV1V0U3Evekw5bGNSSFEyZDlHNkJuc1kraWY2ZQp3
YVFodlkvRkkxNWp3dU85bngybUtWKzdaM0xuM0JlbUZpdVdvaG04REFZQW9BQUhQQ0FOZXVBRSt5
RUxxbUFBd1NKS2lEdVNpdFFpCnN5Z1psRHNxRi9VR1RVVHZRSjlDdDJMWU1Uc3hXWmgzVEZRbWY2
WXlwaC9NaHN5bm1kOWl4Ykg3c2M5WXlDeGVMRldzYkt4dXJDVTQKREc0MzdoNGJqczJUclJiUGph
ZmpXOWxsMkZQWXB3Z1doRklpT3pHWTJFWGFTcnJLUWVDSTRIaEhOaWJmNGFSeVpuQ3Vjb1Z4ZmVZ
Two0SjZnMENnelBPRTg4N3lIK0JDK1UvejgvRGNGTkFVYU5qaHNHQmVNRWVJVHFoUzJGcDZnSm9o
SWlEUnVEQkxsRVgwczVpbU9GMzhpCkVTUXBMUGxhS2xIYVFIcEZwa1kyU2s1SGJrRytWdUdrb3Ay
U2lOTDBwdHJONmNvQktrYXFRcXBMYXAzcUR6UXVhTVpxK1dvN2J0SFIKVWRRVjBTTnZ4ZWlqOVdj
TXZobE9HMDF1R3pHZU5abmMvdDBNWmM1bHdiTmprNlh1enAxV050YUJOZ2R0OCt6dTJyOXdlT2U0
N016bApvdWhxNlJheTY5enVldmRSRDlhOVNwNStYcm5ldFQ1Zi9hVDl2UU55QWp2M0NRVFpCK2ZS
eDBLbHdpTENteUlFRDRSRk5oOFNQWndhCk5YSFVPYm94VmkydU1KNThQUFVFK1dSMkVtOXlYb3Bx
NnNzMDcvU2ZtU2xaNnRtZnpsN01EVGh2ZjFINk1sUCsxSlduaFJYWHp0MUkKdU9WNTI2M1UrSTVH
dVVxRnduMzVCMUkxNG8ra2FwV2U2RDNiWG0vOW5OWVUwcExlZXJudFlmdEFCNk5MdUVlbjE2c3Zl
YUQ2L2RRSAp2azhHb3pIajF5Yy9mdUgvNmpOemNXNWtRV294YUtseUZXRXdBSUFaU0NBSUJ1QU1h
VkFHcjlmdHI3dGZVNDhoWXB3eDM1bU1tWEovCmVWL0Z1ckVJczhTelRMTGFzZGJoNUhIbjJRaHNz
V3dMK0NEOEdMc1h3WVB3Z2VoRG5DS0ZrVlk0RXNrVWNpR25PbWN6bHp2WEFuZmEKMzZZdCtlWitl
YllTUW9RcWZsbTJYcFA4eTNHRXRNR2ZobjhML3VYM3RXYWRWdGx2dTcvbC9ydmIvNlRXZDhpZk44
RHFuMm9qZXYvcApOdTdtbjNKUGJmNHRONXQ1M2U0RnpYVzlWelBYL1JhVDF3V1hWNjBicmptMnB2
aEo3N3JqcHZHV3BCZC90V2EvYkg4VjhWcXdvNkdUCjNsWFduZERUMkJ2Uko5RWZPR0EwbURTa04z
eml3OTZQeFovbVJ6ckdoTWNESjB3bnBhYXdueDIrRkUwbmZQWDl0bjFHWnBadDlzdmMKcSsvbDg5
a0xkZ3RUUCtJWERYNUsvaHhaaWw3bVhiNjR3ckVTdjdLd2VwV1J6R0FBck0xTEFBQ0FNd3ltQllk
U0xReU4vc3R3OTcrdQpmYlQ5Nis5QUFBRHZIV1J2Q3dCa0FOZ0FoaEFNTkFpR1VLQ0NCUmlDRWNE
YXJBWUF3RXdDT084SUFGRDc0M0RNUDU4YjdoMFpEZ0JnCkdFdy9HT3J2NnhkTzFhZlRhZDV5Vk5N
Z1R3VTU2bVlsSlEzNFB4Z2svanNFQUx5YUFBQUFwa2xFUVZRWWxXM1BzUTJFTUF3RlVEdEsKbk1S
RkdvUVlnUTZ4WW9aSW1TbVlBbVVKV2lvb29RQlJITXFkVHY2ZDlXUjlHMU5LSUVVcnBmcStGNkJw
bXJadEJXQm01NXdBQUtDVQpFdUMrNyt1NjZyenYrelJOeTdMbzR6ak84NnhRU29reElxSTJ4aEJS
aFhWZEVSRUFkQWpCV2x0aEhNZTNnNGk4OXhXR1laam5lZHMyCjdaeGo1Z3JNM0hVZEFHaHI3Vy9I
OTF3aU1zWUlnSWlmTS80aS9QeHU1SnhGZUFDUjBTYXA0V0diSndBQUFBQkpSVTVFcmtKZ2dnQUEK
QUFBQUFBQ0pVRTVIRFFvYUNnQUFBQTFKU0VSU0FBQUFBUUFBQUJBSUFnQUFBRmo5Z3VBQUFBMFdh
VU5EVUVsRFF5QlFjbTltYVd4bApBQUI0bkpYWGVUU1UvZnNIOE91ZUdZWXhac1pnYkdGazM1V2Rr
Q1d5SlB0ZWtwMkpzU1NWc2lTRnlCS0tOb28yb1VTaW9ucklraVJaCmtpVXFleWxFc3N6dkQzbnE5
NXp6ZkwvbisvbnJ1cTl6N3Z2KzNQYzVyL2ZuWEFCRXZBZWRUa01Cd0w2ZzhGQWJFd09xazdNTEZk
c0QKQ0NCQUFUV2dlSGlHMGZXdHJDemdYOWQ4RnlBQUFCM3lIblE2TGJGV3Z6aEhFSGVTOUprWXdQ
ZEVvdVRmN3dNQUFFS29rN01MQUNJSApBRnkrYS9WV0FPRGF1MWJiQVFEWGdYQjZPQURpQndCY25u
NGVYZ0JJRkFESWhkclpHQUlnMXdHQTRMdFdWd0VBWWU5YTNRZ0FoQWhQCjMzQUFwQWVBbVJ6azVS
OEVnSjBDWU5iMThnN3pCQ0RJQVlDWFY1am5QZ0JDR2dBbzdOc1g3QVZBcUFNQUtVOTZhRGdBWVF3
QXhKeWMKWGFoclczWk5BbERoQTJBeC85MDdrQVZRa1E4Z3RlTjNUL1ErQU1VRG9DRGxkMi9XQmhB
QVFDaHRZVDdLbXdFQUFNRWJBREFOTUJpegpFZ0RZRElDVmRBWmpxWURCV0xrQ2dPNERxS041N2cr
TitQVy9FS1FWNEw5ZHIzM3pyNFZHQUZBQWlCaFNoRHFFanNKRU1SMWxqc0hHCnNSeGpOV0t0eDUx
Z080bFBaRDlGcUNUNWNhU1Qwemt6dU01d1oxR3llSEo0Ni9tREJmSTI1QWxlRUdxazdoY3AySGhG
dEUzOHNFU1IKWkx2MFVabGJzbDN5Y1FxM0ZYczNuZGg4VjNsUTlaUmFwZnFRWnFwV3RmYUlUcWJ1
WTcwSi9XeURwNFpmdHVVYU41ak1tRjR5YXphZgozMUZnK1hMbks2dFgxdTAyeTNZMzdUc2R1aHk3
blhwY01LNTMzUHAyOWU4ZWNCL2M4MzR2M3ZPQjEwZnZUejRqdnFOK1kvN2pnZHkwCkovcytCMzBK
bnFaL0Rma1dPaE0yRno2My8zdkUvSUdGeUI4SEZ3LzlQTHdjdFh4a0pWbzZwak1PT1lhS1J4L0hK
RENkWUQ2SlRXUkoKWWszR25XSkx3YWV5bnlha0VkTkpHUnlaNURPY1dWelozRG1Vc3p6bmVIUDU4
dmpQQzF6WWNGSHdrdEJsNFh4cWdjaVZqVmRGQzhXSwp4SzlKWHBlOElYVlQrcGJNcmNsaTJtMjVF
dmxTeFRLbE81dnViaXJmZkUrbFFyVlNyWEwrZmtTVitnT05hcTBhN1lkYkhtMTVyUE40CnRUYTZU
dS9KMXFmNnp3eitNcXpIMU1jM2JIdHUzR2pTWk5wczJvSnJTWDVoM21yeDByS04wSGI2bFZXNzlX
dWJEbkpIeGh2YlRyc3UKKzI1S2QwNlA0MXVuWHBkMy9PL3krdHo2M1FaMkRRb05YbnJ2UHJSbldH
UzQ0TVBlajU2ZnZFYkVSNHBHZmNaOHgvMG1wQ2R1VGdaTQpCWDZtZlpIL1VqSWQ5RFg0RzMxbTA4
emQyZEM1c08vaDg2cnpsUXNSUHlJWEQvNDh1S1MxVkxOOGVDVnFWV2YxTVlNQmdJaWlDS2l2CjZC
Yk1MYVpNNWlpc0w0c2RxeUZPaFUwU0w4bk9TK0FoOHBKNE9iakpFcHhTWEJyY0ZwVGRQR0c4cVh5
bC9DMEM0NEtjUW1yQ3Z0U3oKSXM5RkVURWQ4UkNKTzVMVDBsSXlOTmthZWJTQ3ZtSzYwdEJtYWVV
RWxXNDFHWFc2UnIwV2ozYmtsaGU2RkwzZ3JVOE54QXdQRzdVYgpDNWxFYm45a3VtaSt5Y0o3UjVa
bHV4WEIyc1FtMHJiUTdvMER6bkdyVTRqekJaY0cxK2xkd3J0M3VoL2FVK0JSdjNmY2k5dGJ6OGZK
Cjk2amZaZis2Z1A3QXhYMmNRYkxCUm5TL2tLalF0TENDOElyOWpSSHZEa3hFemg5Q0grYUlvaDZS
TzZvYXZUWEdQSFpubk91eFBmSGUKeDJrSjRTZENUOFlreGlRZFMwNDhsWkdTbkpwNytseGFUbnA2
eHZuTWpEUFpXV2V6citkY08xdHk3bnJ1cmJ6Uzh3OHZQTHhZZituRgo1ZmI4am9LT0t4MVgzeFYr
TEJxOU5uejkwNDNwbTk5dVRSZC91VDFUTWwwNldUWjFaL1R1VVBud3ZkNks5c3FtKzNWVjl4K1VW
cCt2CnlYZ1k4MmpmWTlkYTg3b3RUMlNla3A4dVBudi9WM1A5dlliTTU2R050azFxelFMTmpKYmVG
L2RhazE2NnRJbTJqYndxYnoveWVsc0gKb2FQL3plWE9nQzdscnBYdTFwN010N3Q2cFh0bjMxWDN4
ZldiRDNBTkRBemVlQjgycEQyTUdXNytjT2JqN2srU242Wkdxa2RqeDh6Rwp1Y2Y3SjY1TzBxWlVw
MVkvTjMzSm1IYjlLdloxNmx2NVROU3N5Ung1cnVkNzRYendndVlQOUkvbmkray9YWmRFbHo0dlY2
N0VySm95CktBd0dBQnhESWxHSDBOcm9hc3dSSmoybVd1Wlk3SEVXWTVaNjFnVGNDYllrdkJtK2hU
MkZrRUpNSmUwa3RYR2trVE00TTdreXVlMjQKMzFDeWViSjV6L0xsOHVjSjVHMDRMK2dtMkM5MFNm
Z3lOVjhrZjJPKzZCV3hxK0tGRWtXUzE2U3VTOStROFplWmtMMHBWeXgvVzZGRQpzVlNwYk5PZHpY
ZVZ5MVh1cVZhcVZhcFhha1JxL05DczFxcldydG55VU9lUjdsSGRWYjNhclhYNlR3eWVHajR6aXQr
RzJWWnYzR0R5CmZIdWphWk5aczNteUJkN2l4WTVXeTVjNzI2elNyRW5XN1RhdmJUdnMzdGgzT1dR
N1VoeTduWHFjMzdyMHV1YTVDYmoxN2VyZlBlaisKZnM5N2oveTlJbnVIUFQ5NGZmVCs1RlBrSzdH
V0lBRVRnYmRvY3JTcC81Y2lzMytuU05WQmpZT0xoMzRlWG9wYVBySnlkRFdhRVF0eApxTCtUQkhz
U204aVMySlJrbHN4MkNwK0NUMlUvVFV3anBYUDhuU1dVSEo2enZMK3laTU9mV1ZJd2ZNWHpxbWlo
V0pIRU5ZbjFOQ21XCnV5MWZvdkJIbGloWHFGU3EzbGV2VW4rZ1VhMVpvLzFRKzlHV3g3cTF1bi9r
eUxZRzQrZkdqU1pOMjV0Tlc4eGZSTHpjMkdiNXlxcmQKNnJWMXg1Rk9tUzZIYnNlZXVGN0ZkeTU5
Q1FQS2c0bERxc09uUG5xTmFJK21qL3RQQm55bVRRZC9TNXB6bVQrOW1MeGl3MkFBckoxOQpBQURN
YWdEWnNnQU91UUMyQlFBSnNnQ1M3Z0NVNndCVzdBQjJtb0JpRWdLVURoMFFNNTMxOHdNUUlJRWdL
SUFCT0VNWXBFRVovRUNvCmlEa1NpVnhIWGlLaktDTEtCQldMZW9SYVJ1dWdZOUVONkdXTUNNWVpV
NFQ1em1UTWRKeXBsR21hMllRNW4za0V5NDExd3o1aXdiSm8Kc3NTelRMSnFzUWF6MXVIa2NURzRL
allDV3l6Yld6d1hQZ2cveHI2Ti9SajdFTUdEOEpTSUp2b1FwMGpXcEd6U0NrY2l4d3haaTF6SQpx
YzVaeURuTjVjNjF3TzNQWFVtUnBUem44ZUhGOHQ3a0UrYzd3RGZIZjBIQVJHQjJ3MlZCTWNFb0lV
U29RamlBS2tMdEZUbXpjZVBHCkdGR2lhSnRZdXJpOUJML0VzT1F0S1VPcEc5SUdNaHd5UTdMbGNp
ZmszUlNVRmZHS28wcC9iU3JZSEtmc3BXS2lLcWZHcWJhc1BxS1IKbzBuUXJOTXEwODdmY2tibnBH
NjAzb0d0SWZvMEEzOURQeU8vYllIR1FTYmgydytieHB1ZE5zK3p1TEdqeXJKcFo1L1ZOeHVzclpD
ZApocjJ0QTkweDFhbkUrWlhMckJ2dkx0M2RQdTVwZTJvOHhqeDV2RXk4RC9vVSsvTUdXQVVtMGVx
RFVNSDY5TmlRWjJITTRlYjdNeUxGCkRnWWZlaGlGTytKeXREaWFFV3NYanpydWxuRC9KR2RpU0ZK
N1NsYnFZcHA3ZWtPbTRwbmNuTEN6SDNKdDgrb3ZsbHdXejc5d2hhZUkKZEMzMUJ1SG02ZHM1cFlK
bFYrL0tWeGhWdGxkNVBQajJpT2R4Y1ozQnMvQjZZa054bzFsTFVxdjh5L1pYRVIwTm5mUnVnWjdH
UG9uKwpuc0drSWIyUHhTTmVZOExqdlo4ZHBpbGZ1MmR5NTl3WHBoWXJscUladkF3R0FLQUFCendn
RFhyZ0JQc2hDNnBnQU1FaVNvZzdrb3JVCklyTW9HWlE3S2hmMUJrMUU3MENmUXJkaTJERTdNVm1Z
ZDB4VUpuK21NcVlmekliTXA1bmZZc1d4KzdIUFdNZ3NYaXhWckd5c2Jxd2wKT0F4dU4rNGVHNDdO
azYwV3o0Mm40MXZaWmRoVDJLY0lGb1JTSWpzeG1OaEYya3E2eWtIZ2lPQjRSelltMytHa2NtWndy
bktGY1gzbQpEdUNlb05Bb016emhQUE84aC9nUXZsUDgvUHczQlRRRkdqWTRiQmdYakJIaUU2b1V0
aGFlb0NhSVNJZzBiZ3dTNVJGOUxPWXBqaGQvCkloRWtLU3o1V2lwUjJrQjZSYVpHTmtwT1IyNUJ2
bGJocEtLZGtvalM5S2JhemVuS0FTcEdxa0txUzJxZDZnODBMbWpHYXZscU8yN1IKMFZIVUZkRWpi
OFhvby9WbkRMNFpUaHROYmhzeG5qV1ozUDdkREdYT1pjR3pZNU9sN3M2ZFZqYldnVFlIYmZQczd0
cS9jSGpudU96TQo1YUxvYXVrV3N1dmM3bnIzVVEvV3ZVcWVmbDY1M3JVK1gvMmsvYjBEY2dJNzl3
a0UyUWZuMGNkQ3BjSWl3cHNpQkErRVJUWWZFajJjCkdqVngxRG02TVZZdHJqQ2VmRHoxQlBsa2Ro
SnZjbDZLYXVyTE5PLzBuNWtwV2VyWm44NWV6QTA0YjM5UitqSlQvdFNWcDRVVjE4N2QKU0xqbGVk
dXQxUGlPUnJsS2hjSjkrUWRTTmVLUHBHcVZudWc5MjE1di9aeldGTktTM25xNTdXSDdRQWVqUzdo
SHA5ZXJMM21nK3YzVQpCNzVQQnFNeDQ5Y25QMzdoLytvemMzRnVaRUZxTVdpcGNoVmhNQUNBR1Vn
Z0NBYmdER2xRQnEvWDdhKzdYMU9QSVdLY01kK1pqSmx5CmYzbGZ4YnF4Q0xQRXMweXkyckhXNGVS
eDU5a0liTEZzQy9nZy9CaTdGOEdEOElIb1E1d2loWkZXT0JMSkZISWhwenBuTTVjNzF3SjMKMnQr
bUxmbm1mbm0yRWtLRUtuNVp0bDZUL010eGhMVEJuNFovQy83bDk3Vm1uVmJaYjd1LzVmNjcyLytr
MW5mSW56ZkE2cDlxSTNyLwo2VGJ1NXA5eVQyMytMVGViZWQzdUJjMTF2VmN6MS8wV2s5Y0ZsMWV0
RzY0NXRxYjRTZSs2NDZieGxxUVhmN1ZtdjJ4L0ZmRmFzS09oCms5NVYxcDNRMDlnYjBTZlJIemhn
TkpnMHBEZDg0c1BlajhXZjVrYzZ4b1RIQXlkTUo2V21zSjhkdmhSTkozejEvYlo5Um1hV2JmYkwK
M0t2djVmUFpDM1lMVXovaUZ3MStTdjRjV1lwZTVsMit1TUt4RXIreXNIcVZrY3hnQUt6TlN3QUFn
RE1NcGdXSFVpME1qZjdMY1BlLwpybjIwL2V2dlFBQUE3eDFrYndzQVpBRFlBSVlRRERRSWhsQ2dn
Z1VZZ2hIQTJxd0dBTUJNQWpqdkNBQlErK053ekQrZkcrNGRHUTRBCllCaE1QeGpxNytzWFR0V24w
Mm5lY2xUVElFOEZPZXBtSlNVTitEOFlKUDQ3QkFDOG1nQUFBRDlKUkVGVUNKa0Z3U0VPQUNBTUJN
SEwKa2hCTUpRSU5oZ2Z6VVNycUNqTTY1N0QzcHZkT2F3MmczSHVaYzdMV1lveUJtY25kcWJVcU0v
WGVRMUtKaUEvT0VSS1dWdTJ1dGdBQQpBQUJKUlU1RXJrSmdnZ0FBQUFBQUFJbFFUa2NOQ2hvS0FB
QUFEVWxJUkZJQUFBQUJBQUFBRUFnQ0FBQUFXUDJDNEFBQURSWnBRME5RClNVTkRJRkJ5YjJacGJH
VUFBSGljbGRkNU5KVDkrd2Z3NjU0WmhqRm14bUJzWVdUZmxaMlFKYklrKzE2U25ZbXhKSld5SklY
SUVvbzIKaWphaFJLS2llc2lTSkZtU0pTcDdLVVN5ek84UGVlcjNuUE44ditmNytldTZyM1B1Ky83
Yzl6bXY5K2RjQUVTOEI1MU9Rd0hBdnFEdwpVQnNUQTZxVHN3c1Yyd01JSUVBQk5hQjRlSWJSOWEy
c0xPQmYxM3dYSUFBQUhmSWVkRG90c1ZhL09FY1FkNUwwbVJqQTkwU2k1Ti92CkF3QUFRcWlUc3dz
QUlnY0FYTDVyOVZZQTROcTdWdHNCQU5lQmNIbzRBT0lIQUZ5ZWZoNWVBRWdVQU1pRjJ0a1lBaURY
QVlEZ3UxWlgKQVFCaDcxcmRDQUNFQ0UvZmNBQ2tCNENaSE9UbEh3U0FuUUpnMXZYeUR2TUVJTWdC
Z0pkWG1PYytBRUlhQUNqczJ4ZnNCVUNvQXdBcApUM3BvT0FCaERBREVuSnhkcUd0YmRrMENVT0VE
WURILzNUdVFCVkNSRHlDMTQzZFA5RDRBeFFPZ0lPVjNiOVlHRUFCQUtHMWhQc3FiCkFRQUF3UnNB
TUEwd0dMTVNBTmdNZ0pWMEJtT3BnTUZZdVFLQTdnT29vM251RDQzNDliOFFwQlhndjEydmZmT3Zo
VVlBVUFDSUdGS0UKT29TT3drUXhIV1dPd2NheEhHTTFZcTNIbldBN2lVOWtQMFdvSlBseHBKUFRP
VE80em5CblViSjRjbmpyK1lNRjhqYmtDVjRRYXFUdQpGeW5ZZUVXMFRmeXdSSkZrdS9SUm1WdXlY
Zkp4Q3JjVmV6ZWQySHhYZVZEMWxGcWwrcEJtcWxhMTlvaE9wdTVqdlFuOWJJT25obCsyCjVSbzNt
TXlZWGpKck5wL2ZVV0Q1Y3VjcnExZlc3VGJMZGpmdE94MjZITHVkZWx3d3JuZmMrbmIxN3g1d0g5
enpmaS9lODRIWFIrOVAKUGlPK28zNWovdU9CM0xRbit6NEhmUW1lcG44TitSWTZFellYUHJmL2U4
VDhnWVhJSHdjWEQvMDh2QnkxZkdRbFdqcW1NdzQ1aG9wSApIOGNrTUoxZ1BvbE5aRWxpVGNhZFlr
dkJwN0tmSnFRUjAwa1pISm5rTTV4WlhObmNPWlN6UE9kNGMvbnkrTThMWE5od1VmQ1MwR1hoCmZH
cUJ5SldOVjBVTHhZckVyMGxlbDd3aGRWUDZsc3l0eVdMYWJia1MrVkxGTXFVN20rNXVLdDk4VDZW
Q3RWS3RjdjUrUkpYNkE0MXEKclJydGgxc2ViWG1zODNpMU5ycE83OG5XcC9yUERQNHlyTWZVeHpk
c2UyN2NhTkprMm16YWdtdEpmbUhlYXZIU3NvM1FkdnFWVmJ2MQphNXNPY2tmR0c5dE91eTc3Ymtw
M1RvL2pXNmRlbDNmODcvTDYzUHJkQm5ZTkNnMWVldTgrdEdkWVpMamd3OTZQbnArOFJzUkhpa1o5
CnhuekgvU2FrSjI1T0Jrd0ZmcVo5a2Y5U01oMzBOZmdiZldiVHpOM1owTG13NytIenF2T1ZDeEUv
SWhjUC9qeTRwTFZVczN4NEpXcFYKWi9VeGd3R0FpS0lJcUsvb0Zzd3Rwa3ptS0t3dml4MnJJVTZG
VFJJdnljNUw0Q0h5a25nNXVNa1NuRkpjR3R3V2xOMDhZYnlwZktYOApMUUxqZ3B4Q2FzSysxTE1p
ejBVUk1SM3hFSWs3a3RQU1VqSTAyUnA1dElLK1lyclMwR1pwNVFTVmJqVVpkYnBHdlJhUGR1U1dG
N29VCnZlQ3RUdzNFREE4YnRSc0xtVVJ1ZjJTNmFMN0p3bnRIbG1XN0ZjSGF4Q2JTdHREdWpRUE9j
YXRUaVBNRmx3Ylg2VjNDdTNlNkg5cFQKNEZHL2Q5eUwyMXZQeDhuM3FOOWwvN3FBL3NERmZaeEJz
c0ZHZEwrUXFOQzBzSUx3aXYyTkVlOE9URVRPSDBJZjVvaWlIcEU3cWhxOQpOY1k4ZG1lYzY3RTk4
ZDdIYVFuaEowSlB4aVRHSkIxTFRqeVZrWktjbW52NlhGcE9lbnJHK2N5TU05bFpaN092NTF3N1cz
THVldTZ0CnZOTHpEeTg4dkZoLzZjWGw5dnlPZ280ckhWZmZGWDRzR3IwMmZQM1RqZW1iMzI1TkYz
KzVQVk15WFRwWk5uVm45TzVRK2ZDOTNvcjIKeXFiN2RWWDNINVJXbjYvSmVCanphTjlqMTFyenVp
MVBaSjZTbnk0K2UvOVhjLzI5aHN6bm9ZMjJUV3JOQXMyTWx0NFg5MXFUWHJxMAppYmFOdkNwdlAv
SjZXd2Voby8vTjVjNkFMdVd1bGU3V25zeTN1M3FsZTJmZlZmZkY5WnNQY0EwTURONTRIemFrUFl3
WmJ2NXc1dVB1ClQ1S2Zwa2FxUjJQSHpNYTV4L3Nucms3U3BsU25WajgzZmNtWWR2MHE5blhxVy9s
TTFLekpISG11NTN2aGZQQ0M1Zy8waitlTDZUOWQKbDBTWFBpOVhyc1NzbWpJb0RBWUFIRU1pVVlm
UTJ1aHF6QkVtUGFaYTVsanNjUlpqbG5yV0JOd0p0aVM4R2I2RlBZV1FRa3dsN1NTMQpjYVNSTXpn
enVUSzU3YmpmVUxKNXNublA4dVh5NXdua2JUZ3Y2Q2JZTDNSSitESTFYeVIvWTc3b0ZiR3I0b1VT
UlpMWHBLNUwzNUR4Cmw1bVF2U2xYTEg5Ym9VU3hWS2xzMDUzTmQ1WExWZTZwVnFwVnFsZHFSR3I4
MEt6V3F0YXUyZkpRNTVIdVVkMVZ2ZHF0ZGZwUERKNGEKUGpPSzM0YlpWbS9jWVBKOGU2TnBrMW16
ZWJJRjN1TEZqbGJMbHp2YnJOS3NTZGJ0TnE5dE8remUySGM1WkR0U0hMdWRlcHpmdXZTNgo1cmtK
dVBYdDZ0ODk2UDUrejN1UC9MMGllNGM5UDNoOTlQN2tVK1Fyc1pZZ0FST0J0Mmh5dEtuL2x5S3pm
NmRJMVVHTmc0dUhmaDVlCmlsbytzbkowTlpvUkMzR292NU1FZXhLYnlKTFlsR1NXekhZS240SlBa
VDlOVENPbGMveWRKWlFjbnJPOHY3Smt3NTlaVWpCOHhmT3EKYUtGWWtjUTFpZlUwS1phN0xWK2k4
RWVXS0Zlb1ZLcmVWNjlTZjZCUnJWbWovVkQ3MFpiSHVyVzZmK1RJdGdiajU4YU5KazNibTAxYgp6
RjlFdk56WVp2bktxdDNxdFhYSGtVNlpMb2R1eDU2NFhzVjNMbjBKQThxRGlVT3F3NmMrZW8xb2o2
YVArMDhHZktaTkIzOUxtbk9aClA3Mll2R0xEWUFDc25YMEFBTXhxQU5teUFBNjVBTFlGQUFteUFK
THVBSlRyQUZic0FIYWFnR0lTQXBRT0hSQXpuZlh6QXhBZ2dTQW8KZ0FFNFF4aWtRUm44UUtpSU9S
S0pYRWRlSXFNb0lzb0VGWXQ2aEZwRzY2QmowUTNvWll3SXhobFRoUG5PWk14MG5LbVVhWnJaaERt
ZgplUVRMalhYRFBtTEJzbWl5eExOTXNtcXhCclBXNGVSeE1iZ3FOZ0piTE50YlBCYytDRC9Hdm8z
OUdQc1F3WVB3bElnbStoQ25TTmFrCmJOSUtSeUxIREZtTFhNaXB6bG5JT2MzbHpyWEE3YzlkU1pH
bFBPZng0Y1h5M3VRVDV6dkFOOGQvUWNCRVlIYkRaVUV4d1NnaFJLaEMKT0lBcVF1MFZPYk54NDhZ
WVVhSm9tMWk2dUwwRXY4U3c1QzBwUTZrYjBnWXlIREpEc3VWeUorVGRGSlFWOFlxalNuOXRLdGdj
cCt5bApZcUlxcDhhcHRxdytvcEdqU2RDczB5clR6dDl5UnVla2JyVGVnYTBoK2pRRGYwTS9JNzl0
Z2NaQkp1SGJENXZHbTUwMno3TzRzYVBLCnNtbG5uOVUzRzZ5dGtKMkd2YTBEM1RIVnFjVDVsY3Vz
Rys4dTNkMCs3bWw3YWp6R1BIbThUTHdQK2hUNzh3WllCU2JSNm9OUXdmcjAKMkpCblljemg1dnN6
SXNVT0JoOTZHSVU3NG5LME9Kb1JheGVQT3U2V2NQOGtaMkpJVW50S1Z1cGltbnQ2UTZiaW1keWNz
TE1mY20zego2aStXWEJiUHYzQ0ZwNGgwTGZVRzRlYnAyem1sZ21WWDc4cFhHRlcyVjNrOCtQYUk1
M0Z4bmNHejhIcGlRM0dqV1V0U3Evekw5bGNSCkhRMmQ5RzZCbnNZK2lmNmV3YVFodlkvRkkxNWp3
dU85bngybUtWKzdaM0xuM0JlbUZpdVdvaG04REFZQW9BQUhQQ0FOZXVBRSt5RUwKcW1BQXdTSktp
RHVTaXRRaXN5Z1psRHNxRi9VR1RVVHZRSjlDdDJMWU1Uc3hXWmgzVEZRbWY2WXlwaC9NaHN5bm1k
OWl4Ykg3c2M5WQp5Q3hlTEZXc2JLeHVyQ1U0REc0MzdoNGJqczJUclJiUGphZmpXOWxsMkZQWXB3
Z1doRklpT3pHWTJFWGFTcnJLUWVDSTRIaEhOaWJmCjRhUnlabkN1Y29WeGZlWU80SjZnMENnelBP
RTg4N3lIK0JDK1UvejgvRGNGTkFVYU5qaHNHQmVNRWVJVHFoUzJGcDZnSm9oSWlEUnUKREJMbEVY
MHM1aW1PRjM4aUVTUXBMUGxhS2xIYVFIcEZwa1kyU2s1SGJrRytWdUdrb3AyU2lOTDBwdHJONmNv
QktrYXFRcXBMYXAzcQpEelF1YU1acStXbzdidEhSVWRRVjBTTnZ4ZWlqOVdjTXZobE9HMDF1R3pH
ZU5abmMvdDBNWmM1bHdiTmprNlh1enAxV050YUJOZ2R0CjgrenUycjl3ZU9lNDdNemxvdWhxNlJh
eTY5enVldmRSRDlhOVNwNStYcm5ldFQ1Zi9hVDl2UU55QWp2M0NRVFpCK2ZSeDBLbHdpTEMKbXlJ
RUQ0UkZOaDhTUFp3YU5YSFVPYm94VmkydU1KNThQUFVFK1dSMkVtOXlYb3BxNnNzMDcvU2ZtU2xa
NnRtZnpsN01EVGh2ZjFINgpNbFArMUpXbmhSWFh6dDFJdU9WNTI2M1UrSTVHdVVxRnduMzVCMUkx
NG8ra2FwV2U2RDNiWG0vOW5OWVUwcExlZXJudFlmdEFCNk5MCnVFZW4xNnN2ZWFENi9kUUh2azhH
b3pIajF5Yy9mdUgvNmpOemNXNWtRV294YUtseUZXRXdBSUFaU0NBSUJ1QU1hVkFHcjlmdHI3dGYK
VTQ4aFlwd3gzNW1NbVhKL2VWL0Z1ckVJczhTelRMTGFzZGJoNUhIbjJRaHNzV3dMK0NEOEdMc1h3
WVB3Z2VoRG5DS0ZrVlk0RXNrVQpjaUduT21jemx6dlhBbmZhMzZZdCtlWitlYllTUW9RcWZsbTJY
cFA4eTNHRXRNR2ZobjhML3VYM3RXYWRWdGx2dTcvbC9ydmIvNlRXCmQ4aWZOOERxbjJvamV2L3BO
dTdtbjNKUGJmNHRONXQ1M2U0RnpYVzlWelBYL1JhVDF3V1hWNjBicmptMnB2aEo3N3JqcHZHV3BC
ZC8KdFdhL2JIOFY4VnF3bzZHVDNsWFduZERUMkJ2Uko5RWZPR0EwbURTa04zeml3OTZQeFovbVJ6
ckdoTWNESjB3bnBhYXdueDIrRkUwbgpmUFg5dG4xR1pwWnQ5c3ZjcSsvbDg5a0xkZ3RUUCtJWERY
NUsvaHhaaWw3bVhiNjR3ckVTdjdLd2VwV1J6R0FBck0xTEFBQ0FNd3ltCkJZZFNMUXlOL3N0dzk3
K3VmYlQ5Nis5QUFBRHZIV1J2Q3dCa0FOZ0FoaEFNTkFpR1VLQ0NCUmlDRWNEYXJBWUF3RXdDT084
SUFGRDcKNDNETVA1OGI3aDBaRGdCZ0dFdy9HT3J2NnhkTzFhZlRhZDV5Vk5NZ1R3VTU2bVlsSlEz
NFB4Z2svanNFQUx5YUFBQUFPMGxFUVZRSQptVFhKTVEwQVFRZ0V3TTFlUWpDQUNBUWpEQ3RRME1G
WFArMGdJdWp1TkRPcUtrbStxc0xkRVFBQk1EUFIzUlFSN081L2IyWStWRjRXCnZXdW5oY01BQUFB
QVNVVk9SSzVDWUlJQUFJbFFUa2NOQ2hvS0FBQUFEVWxJUkZJQUFBQUlBQUFBRUFnQ0FBQUFwT2lw
S2dBQURSWnAKUTBOUVNVTkRJRkJ5YjJacGJHVUFBSGljbGRkNU5KVDkrd2Z3NjU0WmhqRm14bUJz
WVdUZmxaMlFKYklrKzE2U25ZbXhKSld5SklYSQpFb28yaWphaFJLS2llc2lTSkZtU0pTcDdLVVN5
ek84UGVlcjNuUE44ditmNytldTZyM1B1Ky83Yzl6bXY5K2RjQUVTOEI1MU9Rd0hBCnZxRHdVQnNU
QTZxVHN3c1Yyd01JSUVBQk5hQjRlSWJSOWEyc0xPQmYxM3dYSUFBQUhmSWVkRG90c1ZhL09FY1Fk
NUwwbVJqQTkwU2kKNU4vdkF3QUFRcWlUc3dzQUlnY0FYTDVyOVZZQTROcTdWdHNCQU5lQmNIbzRB
T0lIQUZ5ZWZoNWVBRWdVQU1pRjJ0a1lBaURYQVlEZwp1MVpYQVFCaDcxcmRDQUNFQ0UvZmNBQ2tC
NENaSE9UbEh3U0FuUUpnMXZYeUR2TUVJTWdCZ0pkWG1PYytBRUlhQUNqczJ4ZnNCVUNvCkF3QXBU
M3BvT0FCaERBREVuSnhkcUd0YmRrMENVT0VEWURILzNUdVFCVkNSRHlDMTQzZFA5RDRBeFFPZ0lP
VjNiOVlHRUFCQUtHMWgKUHNxYkFRQUF3UnNBTUEwd0dMTVNBTmdNZ0pWMEJtT3BnTUZZdVFLQTdn
T29vM251RDQzNDliOFFwQlhndjEydmZmT3ZoVVlBVUFDSQpHRktFT29TT3drUXhIV1dPd2NheEhH
TTFZcTNIbldBN2lVOWtQMFdvSlBseHBKUFRPVE80em5CblViSjRjbmpyK1lNRjhqYmtDVjRRCmFx
VHVGeW5ZZUVXMFRmeXdSSkZrdS9SUm1WdXlYZkp4Q3JjVmV6ZWQySHhYZVZEMWxGcWwrcEJtcWxh
MTlvaE9wdTVqdlFuOWJJT24KaGwrMjVSbzNtTXlZWGpKck5wL2ZVV0Q1Y3VjcnExZlc3VGJMZGpm
dE94MjZITHVkZWx3d3JuZmMrbmIxN3g1d0g5enpmaS9lODRIWApSKzlQUGlPK28zNWovdU9CM0xR
bit6NEhmUW1lcG44TitSWTZFellYUHJmL2U4VDhnWVhJSHdjWEQvMDh2QnkxZkdRbFdqcW1NdzQ1
CmhvcEhIOGNrTUoxZ1BvbE5aRWxpVGNhZFlrdkJwN0tmSnFRUjAwa1pISm5rTTV4WlhObmNPWlN6
UE9kNGMvbnkrTThMWE5od1VmQ1MKMEdYaGZHcUJ5SldOVjBVTHhZckVyMGxlbDd3aGRWUDZsc3l0
eVdMYWJia1MrVkxGTXFVN20rNXVLdDk4VDZWQ3RWS3RjdjUrUkpYNgpBNDFxclJydGgxc2ViWG1z
ODNpMU5ycE83OG5XcC9yUERQNHlyTWZVeHpkc2UyN2NhTkprMm16YWdtdEpmbUhlYXZIU3NvM1Fk
dnFWClZidjFhNXNPY2tmR0c5dE91eTc3YmtwM1RvL2pXNmRlbDNmODcvTDYzUHJkQm5ZTkNnMWVl
dTgrdEdkWVpMamd3OTZQbnArOFJzUkgKaWtaOXhuekgvU2FrSjI1T0Jrd0ZmcVo5a2Y5U01oMzBO
ZmdiZldiVHpOM1owTG13NytIenF2T1ZDeEUvSWhjUC9qeTRwTFZVczN4NApKV3BWWi9VeGd3R0Fp
S0lJcUsvb0Zzd3Rwa3ptS0t3dml4MnJJVTZGVFJJdnljNUw0Q0h5a25nNXVNa1NuRkpjR3R3V2xO
MDhZYnlwCmZLWDhMUUxqZ3B4Q2FzSysxTE1pejBVUk1SM3hFSWs3a3RQU1VqSTAyUnA1dElLK1ly
clMwR1pwNVFTVmJqVVpkYnBHdlJhUGR1U1cKRjdvVXZlQ3RUdzNFREE4YnRSc0xtVVJ1ZjJTNmFM
N0p3bnRIbG1XN0ZjSGF4Q2JTdHREdWpRUE9jYXRUaVBNRmx3Ylg2VjNDdTNlNgpIOXBUNEZHL2Q5
eUwyMXZQeDhuM3FOOWwvN3FBL3NERmZaeEJzc0ZHZEwrUXFOQzBzSUx3aXYyTkVlOE9URVRPSDBJ
ZjVvaWlIcEU3CnFocTlOY1k4ZG1lYzY3RTk4ZDdIYVFuaEowSlB4aVRHSkIxTFRqeVZrWktjbW52
NlhGcE9lbnJHK2N5TU05bFpaN092NTF3N1czTHUKZXU2dHZOTHpEeTg4dkZoLzZjWGw5dnlPZ280
ckhWZmZGWDRzR3IwMmZQM1RqZW1iMzI1TkYzKzVQVk15WFRwWk5uVm45TzVRK2ZDOQozb3IyeXFi
N2RWWDNINVJXbjYvSmVCanphTjlqMTFyenVpMVBaSjZTbnk0K2UvOVhjLzI5aHN6bm9ZMjJUV3JO
QXMyTWx0NFg5MXFUClhycTBpYmFOdkNwdlAvSjZXd2Voby8vTjVjNkFMdVd1bGU3V25zeTN1M3Fs
ZTJmZlZmZkY5WnNQY0EwTURONTRIemFrUFl3WmJ2NXcKNXVQdVQ1S2Zwa2FxUjJQSHpNYTV4L3Nu
cms3U3BsU25WajgzZmNtWWR2MHE5blhxVy9sTTFLekpISG11NTN2aGZQQ0M1Zy8waitlTAo2VDlk
bDBTWFBpOVhyc1NzbWpJb0RBWUFIRU1pVVlmUTJ1aHF6QkVtUGFaYTVsanNjUlpqbG5yV0JOd0p0
aVM4R2I2RlBZV1FRa3dsCjdTUzFjYVNSTXpnenVUSzU3YmpmVUxKNXNublA4dVh5NXdua2JUZ3Y2
Q2JZTDNSSitESTFYeVIvWTc3b0ZiR3I0b1VTUlpMWHBLNUwKMzVEeGw1bVF2U2xYTEg5Ym9VU3hW
S2xzMDUzTmQ1WExWZTZwVnFwVnFsZHFSR3I4MEt6V3F0YXUyZkpRNTVIdVVkMVZ2ZHF0ZGZwUApE
SjRhUGpPSzM0YlpWbS9jWVBKOGU2TnBrMW16ZWJJRjN1TEZqbGJMbHp2YnJOS3NTZGJ0TnE5dE8r
emUySGM1WkR0U0hMdWRlcHpmCnV2UzY1cmtKdVBYdDZ0ODk2UDUrejN1UC9MMGllNGM5UDNoOTlQ
N2tVK1Fyc1pZZ0FST0J0Mmh5dEtuL2x5S3pmNmRJMVVHTmc0dUgKZmg1ZWlsbytzbkowTlpvUkMz
R292NU1FZXhLYnlKTFlsR1NXekhZS240SlBaVDlOVENPbGMveWRKWlFjbnJPOHY3Smt3NTlaVWpC
OAp4Zk9xYUtGWWtjUTFpZlUwS1phN0xWK2k4RWVXS0Zlb1ZLcmVWNjlTZjZCUnJWbWovVkQ3MFpi
SHVyVzZmK1RJdGdiajU4YU5KazNiCm0wMWJ6RjlFdk56WVp2bktxdDNxdFhYSGtVNlpMb2R1eDU2
NFhzVjNMbjBKQThxRGlVT3F3NmMrZW8xb2o2YVArMDhHZktaTkIzOUwKbW5PWlA3Mll2R0xEWUFD
c25YMEFBTXhxQU5teUFBNjVBTFlGQUFteUFKTHVBSlRyQUZic0FIYWFnR0lTQXBRT0hSQXpuZlh6
QXhBZwpnU0FvZ0FFNFF4aWtRUm44UUtpSU9SS0pYRWRlSXFNb0lzb0VGWXQ2aEZwRzY2QmowUTNv
Wll3SXhobFRoUG5PWk14MG5LbVVhWnJaCmhEbWZlUVRMalhYRFBtTEJzbWl5eExOTXNtcXhCclBX
NGVSeE1iZ3FOZ0piTE50YlBCYytDRC9Hdm8zOUdQc1F3WVB3bElnbStoQ24KU05ha2JOSUtSeUxI
REZtTFhNaXB6bG5JT2MzbHpyWEE3YzlkU1pHbFBPZng0Y1h5M3VRVDV6dkFOOGQvUWNCRVlIYkRa
VUV4d1NnaApSS2hDT0lBcVF1MFZPYk54NDhZWVVhSm9tMWk2dUwwRXY4U3c1QzBwUTZrYjBnWXlI
REpEc3VWeUorVGRGSlFWOFlxalNuOXRLdGdjCnAreWxZcUlxcDhhcHRxdytvcEdqU2RDczB5clR6
dDl5UnVla2JyVGVnYTBoK2pRRGYwTS9JNzl0Z2NaQkp1SGJENXZHbTUwMno3TzQKc2FQS3NtbG5u
OVUzRzZ5dGtKMkd2YTBEM1RIVnFjVDVsY3VzRys4dTNkMCs3bWw3YWp6R1BIbThUTHdQK2hUNzh3
WllCU2JSNm9OUQp3ZnIwMkpCblljemg1dnN6SXNVT0JoOTZHSVU3NG5LME9Kb1JheGVQT3U2V2NQ
OGtaMkpJVW50S1Z1cGltbnQ2UTZiaW1keWNzTE1mCmNtM3o2aStXWEJiUHYzQ0ZwNGgwTGZVRzRl
YnAyem1sZ21WWDc4cFhHRlcyVjNrOCtQYUk1M0Z4bmNHejhIcGlRM0dqV1V0U3EvekwKOWxjUkhR
MmQ5RzZCbnNZK2lmNmV3YVFodlkvRkkxNWp3dU85bngybUtWKzdaM0xuM0JlbUZpdVdvaG04REFZ
QW9BQUhQQ0FOZXVBRQoreUVMcW1BQXdTSktpRHVTaXRRaXN5Z1psRHNxRi9VR1RVVHZRSjlDdDJM
WU1Uc3hXWmgzVEZRbWY2WXlwaC9NaHN5bm1kOWl4Ykg3CnNjOVl5Q3hlTEZXc2JLeHVyQ1U0REc0
MzdoNGJqczJUclJiUGphZmpXOWxsMkZQWXB3Z1doRklpT3pHWTJFWGFTcnJLUWVDSTRIaEgKTmli
ZjRhUnlabkN1Y29WeGZlWU80SjZnMENnelBPRTg4N3lIK0JDK1UvejgvRGNGTkFVYU5qaHNHQmVN
RWVJVHFoUzJGcDZnSm9oSQppRFJ1REJMbEVYMHM1aW1PRjM4aUVTUXBMUGxhS2xIYVFIcEZwa1ky
U2s1SGJrRytWdUdrb3AyU2lOTDBwdHJONmNvQktrYXFRcXBMCmFwM3FEelF1YU1acStXbzdidEhS
VWRRVjBTTnZ4ZWlqOVdjTXZobE9HMDF1R3pHZU5abmMvdDBNWmM1bHdiTmprNlh1enAxV050YUIK
TmdkdDgrenUycjl3ZU9lNDdNemxvdWhxNlJheTY5enVldmRSRDlhOVNwNStYcm5ldFQ1Zi9hVDl2
UU55QWp2M0NRVFpCK2ZSeDBLbAp3aUxDbXlJRUQ0UkZOaDhTUFp3YU5YSFVPYm94VmkydU1KNThQ
UFVFK1dSMkVtOXlYb3BxNnNzMDcvU2ZtU2xaNnRtZnpsN01EVGh2CmYxSDZNbFArMUpXbmhSWFh6
dDFJdU9WNTI2M1UrSTVHdVVxRnduMzVCMUkxNG8ra2FwV2U2RDNiWG0vOW5OWVUwcExlZXJudFlm
dEEKQjZOTHVFZW4xNnN2ZWFENi9kUUh2azhHb3pIajF5Yy9mdUgvNmpOemNXNWtRV294YUtseUZX
RXdBSUFaU0NBSUJ1QU1hVkFHcjlmdApyN3RmVTQ4aFlwd3gzNW1NbVhKL2VWL0Z1ckVJczhTelRM
TGFzZGJoNUhIbjJRaHNzV3dMK0NEOEdMc1h3WVB3Z2VoRG5DS0ZrVlk0CkVza1VjaUduT21jemx6
dlhBbmZhMzZZdCtlWitlYllTUW9RcWZsbTJYcFA4eTNHRXRNR2ZobjhML3VYM3RXYWRWdGx2dTcv
bC9ydmIKLzZUV2Q4aWZOOERxbjJvamV2L3BOdTdtbjNKUGJmNHRONXQ1M2U0RnpYVzlWelBYL1Jh
VDF3V1hWNjBicmptMnB2aEo3N3JqcHZHVwpwQmQvdFdhL2JIOFY4VnF3bzZHVDNsWFduZERUMkJ2
Uko5RWZPR0EwbURTa04zeml3OTZQeFovbVJ6ckdoTWNESjB3bnBhYXdueDIrCkZFMG5mUFg5dG4x
R1pwWnQ5c3ZjcSsvbDg5a0xkZ3RUUCtJWERYNUsvaHhaaWw3bVhiNjR3ckVTdjdLd2VwV1J6R0FB
ck0xTEFBQ0EKTXd5bUJZZFNMUXlOL3N0dzk3K3VmYlQ5Nis5QUFBRHZIV1J2Q3dCa0FOZ0FoaEFN
TkFpR1VLQ0NCUmlDRWNEYXJBWUF3RXdDT084SQpBRkQ3NDNETVA1OGI3aDBaRGdCZ0dFdy9HT3J2
NnhkTzFhZlRhZDV5Vk5NZ1R3VTU2bVlsSlEzNFB4Z2svanNFQUx5YUFBQUFwRWxFClFWUVlsVzNQ
UFFxRU1CQUY0RXgyTXZsUmJDU0ZZTURXQzNxVFhDdTlsUWZRUWdRaHNkbXROZ2pKSytlRE56encz
ck5hY0o3bjhycXUKSzFwclN6aU9BNVZTSlJoamtITmUvZkU1ejNQYnRtRVl0TmJmZi9aOTUrTTRQ
czhUUWtpdnhCaHhtcWI3dmxOS1JKUjdoQkRvbkx1dQpxMjFiS1dXR3J1dXc3M3ZuWE5NMFd1c01S
RlFmcUpUQ2QzV09sQktGRUNVUUVRSkFDUUJRbjgwWWcyVlpxdkFERFlZN0FSWC9Fc2NBCkFBQUFT
VVZPUks1Q1lJSUFpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQWdBQUFBUUNBSUFBQUNrNktrcUFB
QU5GbWxEUTFCSlEwTWcKVUhKdlptbHNaUUFBZUp5VjEzazBsUDM3Qi9Ecm5obUdNV2JHWUd4aFpO
K1ZuWkFsc2lUN1hwS2RpYkVrbGJJa2hjZ1NpamFLTnFGRQpvcUo2eUpJa1daSWxLbnNwUkxMTTd3
OTU2dmVjODN5LzUvdjU2N3F2Yys3Ny90ejNPYS8zNTF3QVJMd0huVTVEQWNDK29QQlFHeE1ECnFw
T3pDeFhiQXdnZ1FBRTFvSGg0aHRIMXJhd3M0Ri9YZkJjZ0FBQWQ4aDUwT2kyeFZyODRSeEIza3ZT
WkdNRDNSS0xrMys4REFBQkMKcUpPekN3QWlCd0Jjdm12MVZnRGcycnRXMndFQTE0RndlamdBNGdj
QVhKNStIbDRBU0JRQXlJWGEyUmdDSU5jQmdPQzdWbGNCQUdIdgpXdDBJQUlRSVQ5OXdBS1FIZ0pr
YzVPVWZCSUNkQW1EVzlmSU84d1FneUFHQWwxZVk1ejRBUWhvQUtPemJGK3dGUUtnREFDbFBlbWc0
CkFHRU1BTVNjbkYyb2ExdDJUUUpRNFFOZ01mL2RPNUFGVUpFUElMWGpkMC8wUGdERkE2QWc1WGR2
MWdZUUFFQW9iV0UreXBzQkFBREIKR3dBd0RUQVlzeElBMkF5QWxYUUdZNm1Bd1ZpNUFvRHVBNmlq
ZWU0UGpmajF2eENrRmVDL1hhOTk4NitGUmdCUUFJZ1lVb1E2aEk3QwpSREVkWlk3QnhyRWNZelZp
cmNlZFlEdUpUMlEvUmFnaytYR2trOU01TTdqT2NHZFJzbmh5ZU92NWd3WHlOdVFKWGhCcXBPNFhL
ZGg0ClJiUk4vTEJFa1dTNzlGR1pXN0pkOG5FS3R4VjdONTNZZkZkNVVQV1VXcVg2a0dhcVZyWDJp
RTZtN21POUNmMXNnNmVHWDdibEdqZVkKekpoZU1tczJuOTlSWVBseTV5dXJWOWJ0TnN0Mk4rMDdI
Ym9jdTUxNlhEQ3VkOXo2ZHZYdkhuQWYzUE4rTDk3emdkZEg3MDgrSTc2agpmbVArNDRIY3RDZjdQ
Z2Q5Q1o2bWZ3MzVGam9UTmhjK3QvOTd4UHlCaGNnZkJ4Y1AvVHk4SExWOFpDVmFPcVl6RGptR2lr
Y2Z4eVF3Cm5XQStpVTFrU1dKTnhwMWlTOEduc3A4bXBCSFRTUmtjbWVRem5GbGMyZHc1bExNODUz
aHorZkw0end0YzJIQlI4SkxRWmVGOGFvSEkKbFkxWFJRdkZpc1N2U1Y2WHZDRjFVL3FXekszSll0
cHR1Ukw1VXNVeXBUdWI3bTRxMzN4UHBVSzFVcTF5L241RWxmb0RqV3F0R3UySApXeDV0ZWF6emVM
VTJ1azd2eWRhbitzOE0vaktzeDlUSE4yeDdidHhvMG1UYWJOcUNhMGwrWWQ1cThkS3lqZEIyK3BW
VnUvVnJtdzV5ClI4WWIyMDY3THZ0dVNuZE9qK05icDE2WGQvenY4dnJjK3QwR2RnMEtEVjU2N3o2
MFoxaGt1T0REM28rZW43eEd4RWVLUm4zR2ZNZjkKSnFRbmJrNEdUQVYrcG4yUi8xSXlIZlExK0J0
OVp0UE0zZG5RdWJEdjRmT3E4NVVMRVQ4aUZ3LytQTGlrdFZTemZIZ2xhbFZuOVRHRApBWUNJb2dp
b3IrZ1d6QzJtVE9Zb3JDK0xIYXNoVG9WTkVpL0p6a3ZnSWZLU2VEbTR5UktjVWx3YTNCYVUzVHho
dktsOHBmd3RBdU9DCm5FSnF3cjdVc3lMUFJSRXhIZkVRaVR1UzA5SlNNalRaR25tMGdyNWl1dExR
Wm1ubEJKVnVOUmwxdWthOUZvOTI1SllYdWhTOTRLMVAKRGNRTUR4dTFHd3VaUkc1L1pMcG92c25D
ZTBlV1pic1Z3ZHJFSnRLMjBPNk5BODV4cTFPSTh3V1hCdGZwWGNLN2Q3b2YybFBnVWI5MwozSXZi
VzgvSHlmZW8zMlgvdW9EK3dNVjluRUd5d1VaMHY1Q28wTFN3Z3ZDSy9ZMFI3dzVNUk00ZlFoL21p
S0lla1R1cUdyMDF4angyClo1enJzVDN4M3NkcENlRW5Ray9HSk1Za0hVdE9QSldSa3B5YWUvcGNX
azU2ZXNiNXpJd3oyVmxuczYvblhEdGJjdTU2N3EyODB2TVAKTHp5OFdIL3B4ZVgyL0k2Q2ppc2RW
OThWZml3YXZUWjgvZE9ONlp2ZmJrMFhmN2s5VXpKZE9sazJkV2YwN2xENThMM2VpdmJLcHZ0MQpW
ZmNmbEZhZnI4bDRHUE5vMzJQWFd2TzZMVTlrbnBLZkxqNTcvMWR6L2IyR3pPZWhqYlpOYXMwQ3pZ
eVczaGYzV3BOZXVyU0p0bzI4CkttOC84bnBiQjZHai84M2x6b0F1NWE2Vjd0YWV6TGU3ZXFWN1o5
OVY5OFgxbXc5d0RRd00zbmdmTnFROWpCbHUvbkRtNCs1UGtwK20KUnFwSFk4Zk14cm5IK3lldVR0
S21WS2RXUHpkOXlaaDIvU3IyZGVwYitVelVyTWtjZWE3bmUrRjg4SUxtRC9TUDU0dnBQMTJYUkpj
KwpMMWV1eEt5YU1pZ01CZ0FjUXlKUmg5RGE2R3JNRVNZOXBscm1XT3h4Rm1PV2V0WUUzQW0ySkx3
WnZvVTloWkJDVENYdEpMVnhwSkV6Ck9ETzVNcm50dU45UXNubXllYy95NWZMbkNlUnRPQy9vSnRn
dmRFbjRNalZmSkg5anZ1Z1ZzYXZpaFJKRmt0ZWtya3Zma1BHWG1aQzkKS1Zjc2YxdWhSTEZVcVd6
VG5jMTNsY3RWN3FsV3FsV3FWMnBFYXZ6UXJOYXExcTdaOGxEbmtlNVIzVlc5MnExMStrOE1uaG8r
TTRyZgpodGxXYjl4ZzhueDdvMm1UV2JONXNnWGU0c1dPVnN1WE85dXMwcXhKMXUwMnIyMDc3TjdZ
ZHpsa08xSWN1NTE2bk4rNjlMcm11UW00CjllM3EzejNvL243UGU0Lzh2U0o3aHowL2VIMzAvdVJU
NUN1eGxpQUJFNEczYUhLMHFmK1hJck4vcDBqVlFZMkRpNGQrSGw2S1dqNnkKY25RMW1oRUxjYWkv
a3dSN0VwdklrdGlVWkpiTWRncWZnazlsUDAxTUk2VnovSjBsbEJ5ZXM3eS9zbVREbjFsU01IekY4
NnBvb1ZpUgp4RFdKOVRRcGxyc3RYNkx3UjVZb1Y2aFVxdDVYcjFKL29GR3RXYVA5VVB2UmxzZTZ0
YnAvNU1pMkJ1UG54bzBtVGR1YlRWdk1YMFM4CjNOaG0rY3FxM2VxMWRjZVJUcGt1aDI3SG5yaGV4
WGN1ZlFrRHlvT0pRNnJEcHo1NmpXaVBwby83VHdaOHBrMEhmMHVhYzVrL3ZaaTgKWXNOZ0FLeWRm
UUFBekdvQTJiSUFEcmtBdGdVQUNiSUFrdTRBbE9zQVZ1d0FkcHFBWWhJQ2xBNGRFRE9kOWZNREVD
Q0JJQ2lBQVRoRApHS1JCR2Z4QXFJZzVFb2xjUjE0aW95Z2l5Z1FWaTNxRVdrYnJvR1BSRGVobGpB
akdHVk9FK2M1a3pIU2NxWlJwbXRtRU9aOTVCTXVOCmRjTStZc0d5YUxMRXMweXlhckVHczliaDVI
RXh1Q28yQWxzczIxczhGejRJUDhhK2pmMFkreERCZy9DVWlDYjZFS2RJMXFSczBncEgKSXNjTVdZ
dGN5S25PV2NnNXplWE90Y0R0ejExSmthVTg1L0hoeGZMZTVCUG5POEEzeDM5QndFUmdkc05sUVRI
QktDRkVxRUk0Z0NwQwo3UlU1czNIanhoaFJvbWliV0xxNHZRUy94TERrTFNsRHFSdlNCakljTWtP
eTVYSW41TjBVbEJYeGlxTktmMjBxMkJ5bjdLVmlvaXFuCnhxbTJyRDZpa2FOSjBLelRLdFBPMzNK
RzU2UnV0TjZCclNINk5BTi9RejhqdjIyQnhrRW00ZHNQbThhYm5UYlBzN2l4bzhxeWFXZWYKMVRj
YnJLMlFuWWE5clFQZE1kV3B4UG1WeTZ3Yjd5N2QzVDd1YVh0cVBNWThlYnhNdkEvNkZQdnpCbGdG
SnRIcWcxREIrdlRZa0dkaAp6T0htK3pNaXhRNEdIM29ZaFR2aWNyUTRtaEZyRjQ4NjdwWncveVJu
WWtoU2UwcFc2bUthZTNwRHB1S1ozSnl3c3g5eWJmUHFMNVpjCkZzKy9jSVduaUhRdDlRYmg1dW5i
T2FXQ1pWZnZ5bGNZVmJaWGVUejQ5b2puY1hHZHdiUHdlbUpEY2FOWlMxS3IvTXYyVnhFZERaMzAK
Ym9HZXhqNkovcDdCcENHOWo4VWpYbVBDNDcyZkhhWXBYN3RuY3VmY0Y2WVdLNWFpR2J3TUJnQ2dB
QWM4SUExNjRBVDdJUXVxWUFEQgpJa3FJTzVLSzFDS3pLQm1VT3lvWDlRWk5STzlBbjBLM1l0Z3hP
ekZabUhkTVZDWi9wakttSDh5R3pLZVozMkxGc2Z1eHoxaklMRjRzClZheHNyRzZzSlRnTWJqZnVI
aHVPelpPdEZzK05wK05iMldYWVU5aW5DQmFFVWlJN01aallSZHBLdXNwQjRJamdlRWMySnQvaHBI
Sm0KY0s1eWhYRjk1ZzdnbnFEUUtETTg0VHp6dklmNEVMNVQvUHo4TndVMEJSbzJPR3dZRjR3UjRo
T3FGTFlXbnFBbWlFaUlORzRNRXVVUgpmU3ptS1k0WGZ5SVJKQ2tzK1ZvcVVkcEFla1dtUmpaS1Rr
ZHVRYjVXNGFTaW5aS0kwdlNtMnMzcHlnRXFScXBDcWt0cW5lb1BOQzVvCnhtcjVhanR1MGRGUjFC
WFJJMi9GNktQMVp3eStHVTRiVFc0Yk1aNDFtZHorM1F4bHptWEJzMk9UcGU3T25WWTIxb0UyQjIz
ejdPN2EKdjNCNDU3anN6T1dpNkdycEZyTHIzTzU2OTFFUDFyMUtubjVldWQ2MVBsLzlwUDI5QTNJ
Q08vY0pCTmtINTlISFFxWENJc0tiSWdRUApoRVUySHhJOW5CbzFjZFE1dWpGV0xhNHdubnc4OVFU
NVpIWVNiM0plaW1ycXl6VHY5SitaS1ZucTJaL09Yc3dOT0c5L1Vmb3lVLzdVCmxhZUZGZGZPM1Vp
NDVYbmJyZFQ0amthNVNvWENmZmtIVWpYaWo2UnFsWjdvUGR0ZWIvMmMxaFRTa3Q1NnVlMWgrMEFI
bzB1NFI2ZlgKcXk5NW9QcjkxQWUrVHdhak1lUFhKejkrNGYvcU0zTnhibVJCYWpGb3FYSVZZVEFB
Z0JsSUlBZ0c0QXhwVUFhdjErMnZ1MTlUanlGaQpuREhmbVl5WmNuOTVYOFc2c1FpenhMTk1zdHF4
MXVIa2NlZlpDR3l4YkF2NElQd1l1eGZCZy9DQjZFT2NJb1dSVmpnU3lSUnlJYWM2Clp6T1hPOWND
ZDlyZnBpMzU1bjU1dGhKQ2hDcCtXYlplay96TGNZUzB3WitHZnd2KzVmZTFacDFXMlcrN3YrWCt1
OXYvcE5aM3lKODMKd09xZmFpTjYvK2syN3VhZmNrOXQvaTAzbTNuZDdnWE5kYjFYTTlmOUZwUFhC
WmRYclJ1dU9iYW0rRW52dXVPbThaYWtGMysxWnI5cwpmeFh4V3JDam9aUGVWZGFkME5QWUc5RW4w
Ujg0WURTWU5LUTNmT0xEM28vRm4rWkhPc2FFeHdNblRDZWxwckNmSGI0VVRTZDg5ZjIyCmZVWm1s
bTMyeTl5cjcrWHoyUXQyQzFNLzRoY05ma3IrSEZtS1h1WmR2cmpDc1JLL3NyQjZsWkhNWUFDc3pV
c0FBSUF6REtZRmgxSXQKREkzK3kzRDN2NjU5dFAzcjcwQUFBTzhkWkc4TEFHUUEyQUNHRUF3MENJ
WlFvSUlGR0lJUndOcXNCZ0RBVEFJNDd3Z0FVUHZqY013LwpueHZ1SFJrT0FHQVlURDhZNnUvckYw
N1ZwOU5wM25KVTB5QlBCVG5xWmlVbERmZy9HQ1QrT3dRQXZKb0FBQUNnU1VSQlZCaVZiYzhoCkRv
VXdEQWJnbHRlMUJZSERvR2RtNW5hMTNXUitSOElSTG9BQlFiakFlNEt3dkdUN1ZiT3Y2VnBNS1VF
cjVKeXJYN2R0bzJtYWFqalAKazFTMWhtRVlxT3U2NWgrZis3NzNmWi9uV1VTK2I0N2p3S2ZLT1lj
UVN2dTZyZ1FBaUhoZEZ6TVhNTWJRVTNudlJhVEFPSTYwTEl1cQpXbXY3dmkvQXpHU3RyVmRTVmZv
ZlhTSWlaSXlwZ1prSkVXdEF4UGJaQUlBeHhpYjhBRTdGTGV3WmFxZDVBQUFBQUVsRlRrU3VRbUND
CkFBQUFBQUNKVUU1SERRb2FDZ0FBQUExSlNFUlNBQUFBRFFBQUFBNElCZ0FBQVBSL2x0SUFBQUhV
YVVORFVFbERReUJRY205bWFXeGwKQUFCNG5KMlJQMmdUVVJ6SFArK0NqY01ScTV5ZFdyeEJxa09V
b3hsYUYwbE5RRVNIMEtZMHlYYTlPNVBEdSt2ejdob050T0RvN0d5SApvb09nN2xLVlpoRkVjUkRG
UDdnNkNnNEZVYlNld3pOa2tGRHdCdzgrM3krODkvdTk3dzl5bGkxbG9BRmhsTVlMNTgrWmpXYkx6
TDlICjV6QTZZNHpiVGlMbmE3VkxqS3h2N3hBQWIwN1pVZ2IzZytianBjVm5UOS8ydjd6ODhlVHJs
ZEgzQUNqRWpXWUxSQkV3Mm9yTGdMR2kKdUE0WTExS1pndWdBaHRPeFhSRHJRREd1TDFSQTNBTUti
Y1dQZ01LSzR1ZEFvZXUwVXhBZkFDdHkvUWkwZzhDYzZ5VU9hR1hBZHhNbgpCTzBCTUJlR3F5NW9u
NEdUam94VHlPbkE4VWF6WmFxUnU4Zmc3QW5RYmc2OVZnd1BkK0RvcjZFM1hRVmpGcmEzaHQ3dUJB
SVFFeStTCnk2VVpBSVFldzRIdldiWTdCZmx0Mkl1ejdPZG1sdTNkaGR4SDZGOTExdUx1Mzd5RWVB
WDdhZlZucGVGMU9xQlJySElCd0lJN2ZWZ0cKTHQ2QTIyV1lYb1lqbjZBRzFNdG9wZExncUF3Qk9G
VHhJeSswemFxZnlNRHU3YlAxLzZnd1dCdjBFb0R1UlV1THdDUXdTUVdmQ0k4UQpHNU1xUGdtU0FK
dWUyaWZBMkRqY210Sis1eloyOG1mK2VULzFycWNBbFZYWmkvMTJKelhucFF5OG9ua2hjazRYelJu
TG11VVBGYUtLCnRJNzUrUVFBQUFJMlNVUkJWQ2lSWmRLL1N4dHhITWJ4OTkxOUw5NTl6NTVIMHBB
RUxvSTJ4a0dMVUt5Z1V5WUo5Ri9vM3FsYkVmb1AKT1BVLzBNR2hVSFJ6S0haeWNpdGtNUjBFYWNV
UTBtamppY2xkZmx4eTN5NXRzUFNCei9hOGhnODhHdjlHU2ltWGRWMWYwSFhkU1pJawpUSkxrUnhS
RkYwRDB0NlE5QWs5OTM2K1d5K1ZYdVZ6dXVaVFNpcUpvMEc2M3p5OHZMejlmWDE5L0FYNDlSdG4x
OWZWMzI5dmJyemMzCk43UDVmTjQwVFpNNGptazJtL0haMmRudDZlbnB4MXF0OWdHNE5RQnpkWFgx
VGJWYWZWdXBWSEtsVXNsd0hJZVptUmxzMnlhZFRodXUKNno3Uk5HMzU0ZUdoZDNOejg5VndYZmRs
cFZKNXY3UzA5R3gyZGhZaEJKUEpoRGlPR1F3R0RJZER3akFram1PcGxNbzJtODJheUdReQphNzd2
ejBzcGlhS0lUcWVENHpqb3VzNWtNbUU0SE5McjlaQlNVaXdXNTEzWFhST2U1K1VLaFlLWW01dERT
b2xwbWdnaE1BeGpDbTNiClJpbEZvVkFRbnVmbGhLWnBodWQ1V2lhVHdYRWNMTXNpbFVvaGhHQThI
bVBiTnJadEU0WWhvOUZJMHpUTkVHRVkzZ054TnB0RkNQRWYKR28xR3BGSXBwSlMwV3EwNERNTjcw
V2cwTHVyMSt0WFcxbFphU3FrWmhvRmxXVk0wR0F6NDg2K3ExK3RYalViakFzQXZsVXE3UjBkSApk
LzErWHltbFZKSWswMU5LcVg2L3J3NFBEKzhXRnhkM0FSL0FBamJLNWZMQjN0NWVLd2lDYVRsSkVo
VUVnZHJmMzIrdHJLd2NBQnVBClpRQmpJT2gwT2xjbkp5ZUJaVmtMM1c1MzNPMTJ4N1Zhclh0OGZO
emUyZG5aYTdmYm40QnZRUC94OWl3Z0E3d0Fpa0FlK0FsOEI4NkIKRGpBQStBM01zd2daNTNZMytR
QUFBQUJKUlU1RXJrSmdnZ0NKVUU1SERRb2FDZ0FBQUExSlNFUlNBQUFBRFFBQUFBNElCZ0FBQVBS
LwpsdElBQUFIVWFVTkRVRWxEUXlCUWNtOW1hV3hsQUFCNG5KMlJQMmdUVVJ6SFArK0NqY01ScTV5
ZFdyeEJxa09Vb3hsYUYwbE5RRVNICjBLWTB5WGE5TzVQRHUrdno3aG9OdE9EbzdHeUhvb09nN2xL
VlpoRkVjUkRGUDdnNkNnNEZVYlNld3pOa2tGRHdCdzgrM3krODkvdTkKN3c5eWxpMWxvQUZobE1Z
TDU4K1pqV2JMekw5SDV6QTZZNHpiVGlMbmE3VkxqS3h2N3hBQWIwN1pVZ2IzZytianBjVm5UOS8y
djd6OAo4ZVRybGRIM0FDakVqV1lMUkJFdzJvckxnTEdpdUE0WTExS1pndWdBaHRPeFhSRHJRREd1
TDFSQTNBTUtiY1dQZ01LSzR1ZEFvZXUwClV4QWZBQ3R5L1FpMGc4Q2M2eVVPYUdYQWR4TW5CTzBC
TUJlR3F5NW9uNEdUam94VHlPbkE4VWF6WmFxUnU4Zmc3QW5RYmc2OVZnd1AKZCtEb3I2RTNYUVZq
RnJhM2h0N3VCQUlRRXkrU3k2VVpBSVFldzRIdldiWTdCZmx0Mkl1ejdPZG1sdTNkaGR4SDZGOTEx
dUx1Mzd5RQplQVg3YWZWbnBlRjFPcUJSckhJQndJSTdmVmdHTHQ2QTIyV1lYb1lqbjZBRzFNdG9w
ZExncUF3Qk9GVHhJeSswemFxZnlNRHU3YlAxCi82Z3dXQnYwRW9EdVJVdUx3Q1F3U1FXZkNJOFFH
NU1xUGdtU0FKdWUyaWZBMkRqY210Sis1eloyOG1mK2VULzFycWNBbFZYWmkvMTIKSnpYbnBReThv
bmtoY2s0WHpSbkxtdVVQRmFLS3RJNzUrUVFBQUFKZlNVUkJWQ2lSVlpMUGE5TmdBSWJmNVB1KzVF
dlNwbDIzZHEzTwpTcWx1RXpiR3BqSW5qSG1TZ2YrQ2QwL2V2UGdYQ09KdFI4V0xnK0ZCOExJcERq
eUlIa1pGQm11RmdyZzZaOWUxcSttdnRFbnpKZkhnCmhQbWUzK2Z3dkx3Uy9vL09tRDVGVlRrbnk3
SVJCSUV0M0dEZjgvcGxBUDEvSmVrTU1KYktUS3htYzVOM0VzblVMT2NHZHh6YitkMm8KNy8wNitM
WjVkSGp3RnNESldTaDVaZTdhZzZXVjIzZXZ6czhuejZXVFRHRVVRMC9nc0hyc0ZRcWZHenVmdHRm
TGU3dFBBRFFJQUphZgpucm0zZEd2MS92TE5HK09UK1N6Uk5RNUZZZEM0aXNSSWpCaFJNK3BEbWJM
dFRzODZxUmVJYVpyWDV4ZFhIbDdNVCtZamhnNUtDWUlnCmdDY0VISGNJMXgzQzdqdHdSYWdMSVpL
TjZvOHYxRERpYzZuTVJGYlhPUG9EQjAyckRVUFhJTXNTZkQrQTZ3N1I3ZldoYXh6cDg5bXMKWWNU
bktEZWo0OGxVaHNhaUVlZ2FCNk1VbEJJUVdZWXNCeERDaDY3eHYrS3BET1ZtZEp4S1lVamlzWWcw
T2hKRHhOQ2dxZ29VeGtBcApnUkErTks3QzBEbDY5Z0NPNjBwU0dCSTZzSHV0TUF5ODFOZ0lDQ0hn
cWdKRllhQ0VRUGcraGtNUERtUFFOWTdEbzVvM3NQc3RXcThkCmwwdkZZbVY1Y1NHaGExd2lSQVpY
RlZCS0lVN0hPUFVOUzhWaXBWNDdLcE13OUoxbXZacklYcDZkV1ppZDF1Sm1CSXJDd0NpRnFpaUkK
R2pvWW85aitzTlBhZUw3MnN0dXhOZ21BWWEvYnNVckZYVlBTeDlLWGN0bUlxaXFRSlFraGdIYlh4
dnFycmRxenRjZGIxWitWRndEMgpDUUFCd09xMlc1V1A3OTlZamh6SnRUb0QwZTdhb3JEN3RmdDY4
OTN4MnFPSFQxdFdjd05BQ2NEZzdQYzRnRkVBQ3dBdUFFZ0RxQUg0CkRtQVBRQk9BQXdCL0FKSmQ5
M3JDbUZHa0FBQUFBRWxGVGtTdVFtQ0NpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQkFBQUFBUUNB
SUEKQUFDUWtXZzJBQUFCNTJsRFExQkpRME1nVUhKdlptbHNaUUFBZUFHdGtqOW9GRkVReHIvZEl6
bUxJMzlFVXhuY0lrU0xpeXk1SWtragpGKzlBeEJSSGNrR1Rick8zM2kzdWJqYTdtOU1EQlV0cmF5
MUVpMENTWG1KQ3JoRkVzUkRGUDZSTktWZ0VSTkc0ZnU4OXdoRklTT1BBCjIvZWJiMmZtN2N4YklH
TmFZZWpwQVB3Z2lhYXZYakZ1enMwYjJjL0lvWityRzMyV0hZZVRsY29VUTQ2eEg1K2dpVmNmUmtT
dFZXL3UKNWV6TXE2MlA3Vzl2ZjIxK3YzMU0wb0hjRS9GQVFNdFRPRk5YWEJTOG9MZ3ErRTRTSm94
cENMWWJWbzE4ajV5UHF0TWw4Z3E1cDY3NApoZUFGeGE4Rk4rMjZ5UDFDTm9PYUd3RDZLZko0ells
dGNwSHMxbUxiSjYrUngzMS9rZlgxWGZKRk80eVltOG1SaDhSY3VOT2E1NEhMCkZ4anpzS1BOUjhE
Nk5uRDJUMGNiTHZOeng0Q05weDF0YjBET1NodDRFOThxak1weVdvNjVYVC9UZEc4UXlHNEErMUdh
L242U3B2dlAKZWZaWG9MMWtMMGROR2N0R3RIZkFTYjdxV1ZVSDNyTUhtcnlqbzFuTlJVYVp3TE0y
Y0lQTzlRZkE0eUl3VE9mMERsQ2hWaTFDTHhRTwpscG9oWmFDMzVBYU9ieGxsTnc0OXF5VzEvL3J3
dldYZWx6VFJTYzRKWm1lNG41T3JCQmNCSFBpd1lLQk1MMFlJajE1TDNhZkk2KzRECkhnM3FmelAz
dDdNVFFqaGtpWE5YenFtMEdMWWl0OTVJakVuK3pVN2V1QmJZbC9MR3FHbU80UjhWb29xMDhxQ3k4
QUFBQUFsd1NGbHoKQUFBTEV3QUFDeE1CQUpxY0dBQUFBWVpKUkVGVUtCV1ZrcnV1QVZFVWhzMmU3
WElrRElXZzBhaVVHbzJDNkx5QVI1bmFBMmc5eW1SSwpoVWhVdXBPZzBvaHJJUzRKd1RoZnJHUm5v
amc1WnhVN2EvL3JYNWY5cjIzMSsvM0lmMHhYS3BXLzgyZXptYzdsY2lZaENJTHI5WHE3CjNSNlBo
OVk2SG84bkVnbWxsQ0hzOTNzTkpQZm44N2xlcjMzZkg0MUdtODBtbjgvWDYvVjJ1MTBvRkd6YkZr
NHltZFJTZ05yYjdiYlgKNjhFK244OGtMeGFMNzdlNXJsc3NGazBmUlF5N1hDNmU1OEUrSEE3Mys1
MThUbndRY0tKQ0ExZE1qQjJQeCtGd1NPM1g2MlVteGdjQgpKeW8wWHFoanNSZ01PdTUyTzhvWXRq
Z2c0RVNGRm8xR0ZWSmd2Q2I4T0pQR2M4R0pDaTJkVHF1dnQyVXltVmFybFVxbExNc3liSHdRCmNL
SkNvNDhtR3diaWRqb2RWQmtNQnFmVGlUMHdCc1phbTgwbUNRd2pOTHZiN2RLWE5UbU9VNnZWc3Rr
c2N6TkF1VndtRFhISDQzR2oKMFdBdDVLQmJCS1dNd1VBUXRyWmNMbGVyMVdReXFWYXJwVktKOVFG
Q20wNm5WbGhITTcwNEloRW5JL0NET09menVmNGdoYThpVVJqQgp0OWo4Qi9UNzlRZnZYUEh0VEJY
QzJnQUFBQUJKUlU1RXJrSmdnZ0NKVUU1SERRb2FDZ0FBQUExSlNFUlNBQUFBRUFBQUFCQUlBZ0FB
CkFKQ1JhRFlBQUFIbmFVTkRVRWxEUXlCUWNtOW1hV3hsQUFCNEFhMlNQMmdVVVJER3Y5MGpPWXNq
ZjBSVEdkd2lSSXVMTExraVNTTVgKNzBERUZFZHlRWk51czdmZUxlNXVOcnViMHdNRlMydHJMVVNM
UUpKZVlrS3VFVVN4RU1VL3BFMHBXQVJFMGJoKzd6M0NFVWhJNDhEYgo5NXR2WitidHpGc2dZMXBo
Nk9rQS9DQ0pwcTllTVc3T3pSdlp6OGlobjZzYmZaWWRoNU9WeWhSRGpyRWZuNkNKVng5R1JLMVZi
KzdsCjdNeXJyWS90YjI5L2JYNi9mVXpTZ2R3VDhVQkF5MU00VTFkY0ZMeWd1Q3I0VGhJbWpHa0l0
aHRXalh5UG5JK3EweVh5Q3JtbnJ2aUYKNEFYRnJ3VTM3YnJJL1VJMmc1b2JBUG9wOG5qTmlXMXlr
ZXpXWXRzbnI1SEhmWCtSOWZWZDhrVTdqSmlieVpHSHhGeTQwNXJuZ2NzWApHUE93bzgxSHdQbzJj
UFpQUnhzdTgzUEhnSTJuSFcxdlFNNUtHM2dUM3lxTXluSmFqcmxkUDlOMGJ4REliZ0Q3VVpyK2Zw
S20rODk1CjlsZWd2V1F2UjAwWnkwYTBkOEJKdnVwWlZRZmVzd2VhdktPaldjMUZScG5Bc3pad2c4
NzFCOERqSWpCTTUvUU9VS0ZXTFVJdkZBNlcKbWlGbG9MZmtCbzV2R1dVM0RqMnJKYlgvK3ZDOVpk
NlhOTkZKemdsbVo3aWZrNnNFRndFYytMQmdvRXd2UmdpUFhrdmRwOGpyN2dNZQpEZXAvTS9lM3N4
TkNPR1NKYzFmT3FiUVl0aUszM2tpTVNmN05UdDY0RnRpWDhzYW9hWTdoSHhXaWlyVHlvTEx3QUFB
QUNYQklXWE1BCkFBc1RBQUFMRXdFQW1wd1lBQUFCVUVsRVFWUW9GV09jT25VcUF5bUE1UThUTi9I
cTJSaStzMGhLaWhPdmdlSFhaeFplSG9RTi8vNzkKVzdkbTVZRjllNTQ5ZlNJbExlUGc1QklVRXM3
RXhBUTM4ZStQdjR3Nzl4MkI4SUdxeTB2eUwxMDRENWNHTXZRTUREdDdKc0wxL1A3MgpnVGt3Tk9y
WDd6OUF0R2JsOGwwN3RpS3JCckpmdm5qQnpNeXFwS29PVWNQMDd4Zkx1dzhmSVlvTzdOK05waG91
YnV2c0RtSHpzLzFsCllXVmxoWEJldlhpT1ZRTlFISzZHbFpXSmhZZUhCNkpPVWxyMi90M2JtSHFB
NG5BMWZCei9tYmk1T0NISXlRVnFMNW9lb0RoY0RSc2IKRzhLR3VLVFVjMmRPbmo5N0dsbURvYkVw
VUJ3ZVNod01QeGhQWHJnQlYvSHYzOTlsaXhmczJyN2wwYU9IY25MeVg3OThmdkxraWE2dQo3cHpG
cXlGcU9KbCtNWjY1Z3NYZGNDTlNZOFBPbnovdjZlblozRDBKS01qRDhwZng0czE3Y0dtQ0RBNkcz
eXpNeklpWUo2aUI0UzhECnk2Slowd2lyUTFJQkFIVkxmVlM5S3R4ZUFBQUFBRWxGVGtTdVFtQ0Nn
K3dJMlVRa0ROa2NKTmxFSkJDTEJDVFpYQ1FFaTFRa0JJUEUKQ01NRUFBQUE5UUFBQUNRQUFBQUFB
QUFBQUFBQUFCMEFBQUFJQUFBQUNBQUFBQUFBQUFBWEp3QUFBd0FBQUFRQUFBRHhBQUFBaWdBQQpB
REFBRHhFQUFBQUFBQUFBQUFBQUFBQWRBQUFBQXdBQUFCa0FBQUJuRWdBQUFBQUFBQUFBQUVOSFUy
bDZaVTFoYTJVQUhBQVNFQWdBCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdDZ0FBRUFBTEVR
UUFBQUJBQUFBQWQybGtkR2dBRVFBTEVRZ0FBQUJBQUFBQWFHVnAKWjJoMEFBOEFDeEgwLy8vL0N4
QUFBSE5wZW1VQUFnQUdBQUFBOGdBQUFEQUFBQUFBQUFBQUFBQUFBQjBBQUFBb0FnQUFBd0FBQUNR
QQpBQUFBQUFBQUJ3RUFnQU1BQUFBSUFRQ0FHUUFBQUFrQkFJQU1BQUFBSkFBQUFBY0FXQUFBQUNR
QUFBQUxBRndBQUFBa0FBQUFDZ0RNCkFBQUFKQUFBQUFzQTBBQUFBQ1FBQUFBS0FObEVKQVRaR05s
RUpBalpXQVRaUkNRTTJWZ0kyVVFrRU5sWURNTUVBQUFBOVFBQUFDUUEKQUFBQUFBQUFBQUFBQUJ3
QUFBQUFBQUFBRUFBQUFBQUFBQUFYSndBQUFBQUFBQVFBQUFEeEFBQUFsUUFBQURBQUR4RUFBQUFB
QUFBQQpBQUFBQUFBY0FBQUFBQUFBQUJzQUFBQm1FZ0FBQUFBQUFBQUFBRU5IVW1WamRFMWhhMlVB
SEFBU0VBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBZ0NnQUFEQUFMRVFRQUFBQkFBQUFB
ZUFBTUFBc1JDQUFBQUVBQUFBQjVBQkFBQ3hFTUFBQUFRQUFBQUhkcFpIUm8KQUJFQUN4RVFBQUFB
UUFBQUFHaGxhV2RvZEFBQ0FBWUFBQUFBOGdBQUFEZ0FBQUFBQUFBQUFBQUFBQndBQUFBb0FnQUFC
QUFBQUN3QQpBQUFBQUFBQURRRUFnQUFBQUFBUEFRQ0FEUUFBQUJBQkFJQWJBQUFBRWdFQWdBd0FB
QUFxQUFBQUJ3QllBQUFBS2dBQUFBc0FYQUFBCkFDb0FBQUFLQU5nQUFBQXFBQUFBQ3dEY0FBQUFL
Z0FBQUFvQXh3RUFBQUFBd3dJQUFBQXlBQUFBQmdBRUFBQUE5UUFBQUNRQUFBQUEKQUFBQUFBQUFB
QWNBQUFBQUFBQUFBQUFBQUFBQUFBQVhKd0FBQUFBQUFBUUFBQUR4QUFBQWVBQUFBRVVBRUJFQUFB
QUFBQUFBQUFBQQpBQUFIQUFBQUFBQUFBQVlBQUFBbkVBQUFBQUFBQUFBQUFFMWxaR2xoVlVsRmJH
VnRaVzUwT2pwK1RXVmthV0ZWU1VWc1pXMWxiblFBCkhBQVNFQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBZ0NnQUFEUUFHRVNNUUFBQVNBSFJvYVhNQUFnQUdBUElBQUFBZ0FBQUEKQUFBQUFB
QUFBQUFIQUFBQVdBNEFBQUVBQUFBVUFBQUFBQUFBQUVFQUFJQU1BQUFBTHdBQUFBY0FXQUFBQUM4
QUFBQUxBRndBQUFBdgpBQUFBQ2dDNEFBQUFMd0FBQUFzQXZBQUFBQzhBQUFBS0FBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQTBBQUFBCkJnQUVBQUFBTmdBQUFBWUFDQUFBQUQw
QUFBQUdBQXdBQUFCREFBQUFCZ0FRQUFBQU53QUFBQVlBRkFBQUFEZ0FBQUFHQUl0RUpCaUwKVENR
VWkxUWtCRkJSaTB3a0VJUHNFSXZFaVJDTFZDUWtpVWdFaTB3a0tJbFFDSWxJRFA4VkFBQUFBSVBF
R01JWUFDd0FBQUErQUFBQQpCZ0FFQUFBQTlRQUFBQ1FBQUFBQUFBQUFBQUFBQURZQUFBQUFBQUFB
R0FBQUFBQUFBQUFYSndBQUFBQUFBQVFBQUFEeEFBQUFwUUFBCkFEMEFFQkVBQUFBQUFBQUFBQUFB
QUFBMkFBQUFBQUFBQURNQUFBQXZFQUFBQUFBQUFBQUFBRTFsWkdsaFZVbEZiR1Z0Wlc1ME9qcG8K
YVhSVVpYTjBBQndBRWhBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQUlBQUEwQUJoRXVF
QUFBRWdCMGFHbHpBQkVBQ3hFRQpBQUFBRGhBQUFHSnZkVzVrY3dBUUFBc1JGQUFBQUFnUUFBQndi
Mmx1ZEFBT0FEa1JLZ0FBQUFBQUFBQkhFQUFBQWdBR0FBQUFBUElBCkFBQWdBQUFBQUFBQUFBQUFB
QUEyQUFBQVdBNEFBQUVBQUFBVUFBQUFBQUFBQUVRQUFJQU1BQUFBUFFBQUFBY0FXQUFBQUQwQUFB
QUwKQUZ3QUFBQTlBQUFBQ2dETkFBQUFQUUFBQUFzQTBRQUFBRDBBQUFBS0FPZ0FBQUE5QUFBQUN3
RHNBQUFBUFFBQUFBb0FpdzBBQUFBQQppeEdMUkNRRWkwa0VpUkNKU0FUQ0JBQUNBQUFBUkFBQUFB
WUFCQUFBQVBVQUFBQWtBQUFBQUFBQUFBQUFBQUFYQUFBQUFBQUFBQVFBCkFBQUFBQUFBRnljQUFB
QUFBQUFFQUFBQThRQUFBSFFBQUFCQkFCQVJBQUFBQUFBQUFBQUFBQUFBRndBQUFBQUFBQUFVQUFB
QU1CQUEKQUFBQUFBQUFBQUJOWldScFlWVkpSV3hsYldWdWREbzZibUYwZFhKaGJGTnBlbVVBSEFB
U0VBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQQpBQUFBQUFBZ0FnQUFEUUFHRVM0UUFBQVNBSFJvYVhN
QUFnQUdBUElBQUFBZ0FBQUFBQUFBQUFBQUFBQVhBQUFBV0E0QUFBRUFBQUFVCkFBQUFBQUFBQUVV
QUFJQU1BQUFBUXdBQUFBY0FXQUFBQUVNQUFBQUxBRndBQUFCREFBQUFDZ0MwQUFBQVF3QUFBQXNB
dUFBQUFFTUEKQUFBS0FJdEVKQVNKUVFUQ0JBQUVBQUFBOVFBQUFDUUFBQUFBQUFBQUFBQUFBQW9B
QUFBQUFBQUFCQUFBQUFBQUFBQVhKd0FBQUFBQQpBQVFBQUFEeEFBQUFoUUFBQUQ4QUVCRUFBQUFB
QUFBQUFBQUFBQUFLQUFBQUFBQUFBQWNBQUFBM0VBQUFBQUFBQUFBQUFFMWxaR2xoClZVbEZiR1Z0
Wlc1ME9qcHpaWFJRWVhKMFNVUUFIQUFTRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdD
Z0FBRFFBR0VTTVEKQUFBU0FIUm9hWE1BRVFBTEVRUUFBQUIwQUFBQWNHRnlkRWxFQUFJQUJnQUFB
QUR5QUFBQUlBQUFBQUFBQUFBQUFBQUFDZ0FBQUZnTwpBQUFCQUFBQUZBQUFBQUFBQUFCS0FBQ0FE
QUFBQUVrQUFBQUhBRmdBQUFCSkFBQUFDd0JjQUFBQVNRQUFBQW9BeUFBQUFFa0FBQUFMCkFNd0FB
QUJKQUFBQUNnQ0xRUVREQkFBQUFQVUFBQUFrQUFBQUFBQUFBQUFBQUFBRUFBQUFBQUFBQUFBQUFB
QUFBQUFBRnljQUFBQUEKQUFBRUFBQUE4UUFBQUc4QUFBQThBQkFSQUFBQUFBQUFBQUFBQUFBQUJB
QUFBQUFBQUFBREFBQUFPQkFBQUFBQUFBQUFBQUJOWldScApZVlZKUld4bGJXVnVkRG82Y0dGeWRF
bEVBQndBRWhBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQW9BQUEwQUJoRXVFQUFBCkVn
QjBhR2x6QUFJQUJnQUE4Z0FBQUNBQUFBQUFBQUFBQUFBQUFBUUFBQUJZRGdBQUFRQUFBQlFBQUFB
QUFBQUFTd0FBZ0F3QUFBQk8KQUFBQUJ3QllBQUFBVGdBQUFBc0FYQUFBQUU0QUFBQUtBTEFBQUFC
T0FBQUFDd0MwQUFBQVRnQUFBQW9BaTBFSTBlZ2tBY01FQUFBQQo5UUFBQUNRQUFBQUFBQUFBQUFB
QUFBZ0FBQUFBQUFBQUFBQUFBQUFBQUFBWEp3QUFBQUFBQUFRQUFBRHhBQUFBY2dBQUFEOEFFQkVB
CkFBQUFBQUFBQUFBQUFBQUlBQUFBQUFBQUFBY0FBQUE1RUFBQUFBQUFBQUFBQUUxbFpHbGhWVWxG
YkdWdFpXNTBPanBwYzFCeVpYTnoKWldRQUhBQVNFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBZ0NnQUFEUUFHRVM0UUFBQVNBSFJvYVhNQUFnQUdBQUFBOGdBQQpBQ0FBQUFBQUFBQUFBQUFB
QUFnQUFBQllEZ0FBQVFBQUFCUUFBQUFBQUFBQVRRQUFnQXdBQUFCVEFBQUFCd0JZQUFBQVV3QUFB
QXNBClhBQUFBRk1BQUFBS0FMUUFBQUJUQUFBQUN3QzRBQUFBVXdBQUFBb0E5a1FrQkFGV2kvSEhC
Z0FBQUFCMENWYm9BQUFBQUlQRUJJdkcKWHNJRUFBb0FBQUF5QUFBQUJnQVNBQUFBV1FBQUFCUUFC
QUFBQVBVQUFBQkVBQUFBQUFBQUFBQUFBQUFmQUFBQUFBQUFBQVFBQUFBQQpBQUFBRnljQUFBZ0FB
QUFFQUFBQUJnQUFBQllBQUFBQUFBQUFCQUFBQUFBQUFBQVhKd0FBQWdBRUFBQUFBQUR4QUFBQWhR
QUFBRklBCkVCRUFBQUFBQUFBQUFBQUFBQUFmQUFBQUNBQUFBQndBQUFCRUVBQUFBQUFBQUFBQUFF
MWxaR2xoVlVsRmJHVnRaVzUwT2pwZ2MyTmgKYkdGeUlHUmxiR1YwYVc1bklHUmxjM1J5ZFdOMGIz
SW5BQndBRWhBQUFBQUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFBQUFJQUlBQUEwQQpCaEVqRUFBQUVn
QjBhR2x6QUFJQUJnQUFBQUFNQUFBQU13QUFBQWNBZUFBQUFETUFBQUFMQUh3QUFBQXpBQUFBQ2dE
ZFFSRERCQUFBCkFQVUFBQUFrQUFBQUFBQUFBQUFBQUFBRUFBQUFBQUFBQUFBQUFBQUFBQUFBRnlj
QUFBQUFBQUFFQUFBQThRQUFBSG9BQUFCSEFCQVIKQUFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFB
REFBQUFVQkFBQUFBQUFBQUFBQUJOWldScFlWVkpWR2x0Wld4cGJtVlRiR2xrWlhJNgpPblJwYldW
TWIyRmtaV1FBSEFBU0VBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQ2dBQURRQUdFVThR
QUFBU0FIUm9hWE1BCkFnQUdBQUFBOGdBQUFDQUFBQUFBQUFBQUFBQUFBQVFBQUFCWURnQUFBUUFB
QUJRQUFBQUFBQUFBWEFBQWdBd0FBQUJlQUFBQUJ3QlkKQUFBQVhnQUFBQXNBWEFBQUFGNEFBQUFL
QUx3QUFBQmVBQUFBQ3dEQUFBQUFYZ0FBQUFvQTNVRVl3d1FBQUFEMUFBQUFKQUFBQUFBQQpBQUFB
QUFBQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUJjbkFBQUFBQUFBQkFBQUFQRUFBQUI0QUFBQVJRQVFF
UUFBQUFBQUFBQUFBQUFBCkFBUUFBQUFBQUFBQUF3QUFBRkFRQUFBQUFBQUFBQUFBVFdWa2FXRlZT
VlJwYldWc2FXNWxVMnhwWkdWeU9qcGtkWEpoZEdsdmJnQWMKQUJJUUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQ0FLQUFBTkFBWVJUeEFBQUJJQWRHaHBjd0FDQUFZQThnQUFBQ0FBQUFBQQpB
QUFBQUFBQUFBUUFBQUJZRGdBQUFRQUFBQlFBQUFBQUFBQUFYd0FBZ0F3QUFBQmpBQUFBQndCWUFB
QUFZd0FBQUFzQVhBQUFBR01BCkFBQUtBTGdBQUFCakFBQUFDd0M4QUFBQVl3QUFBQW9BMmU3Y1VS
amY0UGJFUkhzSTNkamRRUkRjY1JqREJBQUFBUFVBQUFBa0FBQUEKQUFBQUFBQUFBQUFWQUFBQUFB
QUFBQUFBQUFBQUFBQUFGeWNBQUFBQUFBQUVBQUFBOFFBQUFINEFBQUJMQUJBUkFBQUFBQUFBQUFB
QQpBQUFBRlFBQUFBQUFBQUFVQUFBQVVCQUFBQUFBQUFBQUFBQk5aV1JwWVZWSlZHbHRaV3hwYm1W
VGJHbGtaWEk2T21aeVlXTjBhVzl1ClRHOWhaR1ZrQUJ3QUVoQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBSUFvQUFBMEFCaEZQRUFBQUVnQjBhR2x6QUFJQUJnQUEKQVBJQUFBQWdBQUFBQUFB
QUFBQUFBQUFWQUFBQVdBNEFBQUVBQUFBVUFBQUFBQUFBQUdFQUFJQU1BQUFBYUFBQUFBY0FXQUFB
QUdnQQpBQUFMQUZ3QUFBQm9BQUFBQ2dEQUFBQUFhQUFBQUFzQXhBQUFBR2dBQUFBS0FBQUFBQUFB
QUFBQTJVUWtCSVBzQ04wY0pPZ0FBQUFBCjJWd2tESVBFQ05sRUpBVERDd0FBQUhFQUFBQVVBQVFB
QUFEMUFBQUFKQUFBQUFBQUFBQUFBQUFBR3dBQUFBQUFBQUFFQUFBQUFBQUEKQUJjbkFBQUFBQUFB
QkFBQUFQRUFBQUJmQUFBQUxBQVFFUUFBQUFBQUFBQUFBQUFBQUJzQUFBQUFBQUFBR2dBQUFMb1FB
QUFBQUFBQQpBQUFBWm14dmIzSm1BQndBRWhBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJ
QW9BQUEwQUN4RUVBQUFBUUFBQUFGOVlBQUlBCkJnQUE4Z0FBQUNBQUFBQUFBQUFBQUFBQUFCc0FB
QUNJQ3dBQUFRQUFBQlFBQUFBQUFBQUFsUUVBZ0F3QUFBQndBQUFBQndCWUFBQUEKY0FBQUFBc0FY
QUFBQUhBQUFBQUtBS0FBQUFCd0FBQUFDd0NrQUFBQWNBQUFBQW9BMlVRa0JJUHNDTjBjSk9nQUFB
QUEyVndrRElQRQpDTmxFSkFUREN3QUFBSEVBQUFBVUFBUUFBQUQxQUFBQUpBQUFBQUFBQUFBQUFB
QUFHd0FBQUFBQUFBQUVBQUFBQUFBQUFCY25BQUFBCkFBQUFCQUFBQVBFQUFBQmpBQUFBTFFBUEVR
QUFBQUFBQUFBQUFBQUFBQnNBQUFBQUFBQUFHZ0FBQUxvUUFBQUFBQUFBQUFBQVEwZEcKYkc5dmNn
QWNBQklRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQUtBQUFRQUFzUkJBQUFBRUFBQUFC
MllXeDFaUUFDQUFZQQpBUElBQUFBd0FBQUFBQUFBQUFBQUFBQWJBQUFBWUFNQUFBTUFBQUFrQUFB
QUFBQUFBQjRBQUlBQUFBQUFJQUFBZ0JvQUFBQWtBQUNBCkRBQUFBSFlBQUFBSEFGZ0FBQUIyQUFB
QUN3QmNBQUFBZGdBQUFBb0FwQUFBQUhZQUFBQUxBS2dBQUFCMkFBQUFDZ0NoQUFBQUFJWEEKZFdh
aEFBQUFBSXNJaXhVQUFBQUFpd0pUVmxkUmFHVURBQUJvQUFBQUFGRC9GUUFBQUFDTCtGZi9GUUFB
QUFCcUFHb0FpL0JxQUZiLwpGUUFBQUFDTEhRQUFBQUNEeENTRjlxTUFBQUFBZEFaVy85T0R4QVNG
LzNRR1YvL1RnOFFFb1FBQUFBQmZYbHZEQVFBQUFJUUFBQUFHCkFBb0FBQUNCQUFBQUJnQVNBQUFB
Z0FBQUFBWUFJZ0FBQUF3QUFBQUdBQ2tBQUFCL0FBQUFCZ0F5QUFBQWZnQUFBQVlBUVFBQUFIMEEK
QUFBR0FFY0FBQUI4QUFBQUJnQlJBQUFBaEFBQUFBWUFhQUFBQUlRQUFBQUdBQVFBQUFEMUFBQUFo
QUFBQUFBQUFBQUFBQUFBY0FBQQpBQUFBQUFBQUFBQUFBQUFBQUJjbkFBQUFBQUFBQkFBQUFCa0FB
QUJXQUFBQUFBQUFBQUFBQUFBQUFBQUFiaWNBQUFBQUJBQUFBQUFBCkdnQUFBRlFBQUFBQUFBQUFB
QUFBQUFBQUFBQnVKd0FBQUFBSUFBQUFBQUFiQUFBQVVnQUFBQUFBQUFBQUFBQUFBQUFBQUc0bkFB
QUEKQUF3QUFBQUFBUEVBQUFERkFBQUFQUUFQRVFBQUFBQUFBQUFBQUFBQUFIQUFBQUFBQUFBQWJ3
QUFBR29TQUFBQUFBQUFBQUFBYldWawphV0ZRVGtkR2RXeHNjMk55WldWdVNXMWhaMlVBSEFBU0VB
QUFBQUFBQUFBQUFBQUFBQXdBQUFBQUFBQUFBQUFBQWdBQUVnQU1FWUFRCkFBQUFBQUFBQUFCcGJX
Rm5aUUFPQURrUkp3QUFBQUFBQUFCVUVnQUFEZ0E1RVRBQUFBQUFBQUFBVmhJQUFBNEFPUkUvQUFB
QUFBQUEKQUZ3U0FBQU9BRGtSV0FBQUFBQUFBQUJlRWdBQURnQTVFV0lBQUFBQUFBQUFYaElBQUFJ
QUJnQUFBQUR5QUFBQUlBQUFBQUFBQUFBQQpBQUFBY0FBQUFBZ0VBQUFCQUFBQUZBQUFBQUFBQUFB
akFBQ0FEQUFBQUhzQUFBQUhBTGdBQUFCN0FBQUFDd0M4QUFBQWV3QUFBQW9BCi9RQUFBSVFBQUFB
TEFBRUJBQUNFQUFBQUNnQU5BUUFBZXdBQUFBc0FFUUVBQUhzQUFBQUtBQjBCQUFCN0FBQUFDd0Fo
QVFBQWV3QUEKQUFvQUxRRUFBSHNBQUFBTEFERUJBQUI3QUFBQUNnQTlBUUFBZXdBQUFBc0FRUUVB
QUhzQUFBQUtBRTBCQUFCN0FBQUFDd0JSQVFBQQpld0FBQUFvQWFBRUFBSHNBQUFBTEFHd0JBQUI3
QUFBQUNnQ2hBQUFBQUlYQWRXYWhBQUFBQUlzSWl4VUFBQUFBaXdKVFZsZFJhSXdECkFBQm9BQUFB
QUZEL0ZRQUFBQUNMK0ZmL0ZRQUFBQUJxQUdvQWkvQnFBRmIvRlFBQUFBQ0xIUUFBQUFDRHhDU0Y5
cU1BQUFBQWRBWlcKLzlPRHhBU0YvM1FHVi8vVGc4UUVvUUFBQUFCZlhsdkRBUUFBQUl3QUFBQUdB
QW9BQUFDQkFBQUFCZ0FTQUFBQWdBQUFBQVlBSWdBQQpBQTBBQUFBR0FDa0FBQUIvQUFBQUJnQXlB
QUFBZmdBQUFBWUFRUUFBQUgwQUFBQUdBRWNBQUFCOEFBQUFCZ0JSQUFBQWpBQUFBQVlBCmFBQUFB
SXdBQUFBR0FBUUFBQUQxQUFBQWhBQUFBQUFBQUFBQUFBQUFjQUFBQUFBQUFBQUFBQUFBQUFBQUFC
Y25BQUFBQUFBQUJBQUEKQUJrQUFBQldBQUFBQUFBQUFBQUFBQUFBQUFBQWJpY0FBQUFBQkFBQUFB
QUFHZ0FBQUZRQUFBQUFBQUFBQUFBQUFBQUFBQUJ1SndBQQpBQUFJQUFBQUFBQWJBQUFBVWdBQUFB
QUFBQUFBQUFBQUFBQUFBRzRuQUFBQUFBd0FBQUFBQVBFQUFBRE1BQUFBUkFBUEVRQUFBQUFBCkFB
QUFBQUFBQUhBQUFBQUFBQUFBYndBQUFHb1NBQUFBQUFBQUFBQUFiV1ZrYVdGUVRrZEdkV3hzYzJO
eVpXVnVVSEpsYzNObFpFbHQKWVdkbEFCd0FFaEFBQUFBQUFBQUFBQUFBQUFBTUFBQUFBQUFBQUFB
QUFBSUFBQklBREJHQUVBQUFBQUFBQUFBQWFXMWhaMlVBRGdBNQpFU2NBQUFBQUFBQUFWQklBQUE0
QU9SRXdBQUFBQUFBQUFGWVNBQUFPQURrUlB3QUFBQUFBQUFCY0VnQUFEZ0E1RVZnQUFBQUFBQUFB
ClhoSUFBQTRBT1JGaUFBQUFBQUFBQUY0U0FBQUNBQVlBOGdBQUFDQUFBQUFBQUFBQUFBQUFBSEFB
QUFBSUJBQUFBUUFBQUJRQUFBQUEKQUFBQUpBQUFnQXdBQUFDSkFBQUFCd0M0QUFBQWlRQUFBQXNB
dkFBQUFJa0FBQUFLQUFRQkFBQ01BQUFBQ3dBSUFRQUFqQUFBQUFvQQpGQUVBQUlrQUFBQUxBQmdC
QUFDSkFBQUFDZ0FrQVFBQWlRQUFBQXNBS0FFQUFJa0FBQUFLQURRQkFBQ0pBQUFBQ3dBNEFRQUFp
UUFBCkFBb0FSQUVBQUlrQUFBQUxBRWdCQUFDSkFBQUFDZ0JVQVFBQWlRQUFBQXNBV0FFQUFJa0FB
QUFLQUd3QkFBQ0pBQUFBQ3dCd0FRQUEKaVFBQUFBb0FvUUFBQUFDRndIVm1vUUFBQUFDTENJc1ZB
QUFBQUlzQ1UxWlhVV2hFQXdBQWFBQUFBQUJRL3hVQUFBQUFpL2hYL3hVQQpBQUFBYWdCcUFJdndh
Z0JXL3hVQUFBQUFpeDBBQUFBQWc4UWtoZmFqQUFBQUFIUUdWdi9UZzhRRWhmOTBCbGYvMDRQRUJL
RUFBQUFBClgxNWJ3d0VBQUFDVUFBQUFCZ0FLQUFBQWdRQUFBQVlBRWdBQUFJQUFBQUFHQUNJQUFB
QU9BQUFBQmdBcEFBQUFmd0FBQUFZQU1nQUEKQUg0QUFBQUdBRUVBQUFCOUFBQUFCZ0JIQUFBQWZB
QUFBQVlBVVFBQUFKUUFBQUFHQUdnQUFBQ1VBQUFBQmdBRUFBQUE5UUFBQUlRQQpBQUFBQUFBQUFB
QUFBSEFBQUFBQUFBQUFBQUFBQUFBQUFBQVhKd0FBQUFBQUFBUUFBQUFaQUFBQVZnQUFBQUFBQUFB
QUFBQUFBQUFBCkFHNG5BQUFBQUFRQUFBQUFBQm9BQUFCVUFBQUFBQUFBQUFBQUFBQUFBQUFBYmlj
QUFBQUFDQUFBQUFBQUd3QUFBRklBQUFBQUFBQUEKQUFBQUFBQUFBQUJ1SndBQUFBQU1BQUFBQUFE
eEFBQUF2d0FBQURjQUR4RUFBQUFBQUFBQUFBQUFBQUJ3QUFBQUFBQUFBRzhBQUFCcQpFZ0FBQUFB
QUFBQUFBRzFsWkdsaFVFNUhUWFYwWlVsdFlXZGxBQndBRWhBQUFBQUFBQUFBQUFBQUFBQU1BQUFB
QUFBQUFBQUFBQUlBCkFCSUFEQkdBRUFBQUFBQUFBQUFBYVcxaFoyVUFEZ0E1RVNjQUFBQUFBQUFB
VkJJQUFBNEFPUkV3QUFBQUFBQUFBRllTQUFBT0FEa1IKUHdBQUFBQUFBQUJjRWdBQURnQTVFVmdB
QUFBQUFBQUFYaElBQUE0QU9SRmlBQUFBQUFBQUFGNFNBQUFDQUFZQUFQSUFBQUFnQUFBQQpBQUFB
QUFBQUFBQndBQUFBQ0FRQUFBRUFBQUFVQUFBQUFBQUFBQ1VBQUlBTUFBQUFrUUFBQUFjQXVBQUFB
SkVBQUFBTEFMd0FBQUNSCkFBQUFDZ0QzQUFBQWxBQUFBQXNBK3dBQUFKUUFBQUFLQUFjQkFBQ1JB
QUFBQ3dBTEFRQUFrUUFBQUFvQUZ3RUFBSkVBQUFBTEFCc0IKQUFDUkFBQUFDZ0FuQVFBQWtRQUFB
QXNBS3dFQUFKRUFBQUFLQURjQkFBQ1JBQUFBQ3dBN0FRQUFrUUFBQUFvQVJ3RUFBSkVBQUFBTApB
RXNCQUFDUkFBQUFDZ0JnQVFBQWtRQUFBQXNBWkFFQUFKRUFBQUFLQUtFQUFBQUFoY0IxWnFFQUFB
QUFpd2lMRlFBQUFBQ0xBbE5XClYxRm9kUU1BQUdnQUFBQUFVUDhWQUFBQUFJdjRWLzhWQUFBQUFH
b0FhZ0NMOEdvQVZ2OFZBQUFBQUlzZEFBQUFBSVBFSklYMm93QUEKQUFCMEJsYi8wNFBFQklYL2RB
WlgvOU9EeEFTaEFBQUFBRjllVzhNQkFBQUFuQUFBQUFZQUNnQUFBSUVBQUFBR0FCSUFBQUNBQUFB
QQpCZ0FpQUFBQUR3QUFBQVlBS1FBQUFIOEFBQUFHQURJQUFBQitBQUFBQmdCQkFBQUFmUUFBQUFZ
QVJ3QUFBSHdBQUFBR0FGRUFBQUNjCkFBQUFCZ0JvQUFBQW5BQUFBQVlBQkFBQUFQVUFBQUNFQUFB
QUFBQUFBQUFBQUFCd0FBQUFBQUFBQUFBQUFBQUFBQUFBRnljQUFBQUEKQUFBRUFBQUFHUUFBQUZZ
QUFBQUFBQUFBQUFBQUFBQUFBQUJ1SndBQUFBQUVBQUFBQUFBYUFBQUFWQUFBQUFBQUFBQUFBQUFB
QUFBQQpBRzRuQUFBQUFBZ0FBQUFBQUJzQUFBQlNBQUFBQUFBQUFBQUFBQUFBQUFBQWJpY0FBQUFB
REFBQUFBQUE4UUFBQU1ZQUFBQStBQThSCkFBQUFBQUFBQUFBQUFBQUFjQUFBQUFBQUFBQnZBQUFB
YWhJQUFBQUFBQUFBQUFCdFpXUnBZVkJPUjAxMWRHVlFjbVZ6YzJWa1NXMWgKWjJVQUhBQVNFQUFB
QUFBQUFBQUFBQUFBQUF3QUFBQUFBQUFBQUFBQUFnQUFFZ0FNRVlBUUFBQUFBQUFBQUFCcGJXRm5a
UUFPQURrUgpKd0FBQUFBQUFBQlVFZ0FBRGdBNUVUQUFBQUFBQUFBQVZoSUFBQTRBT1JFL0FBQUFB
QUFBQUZ3U0FBQU9BRGtSV0FBQUFBQUFBQUJlCkVnQUFEZ0E1RVdJQUFBQUFBQUFBWGhJQUFBSUFC
Z0FBQVBJQUFBQWdBQUFBQUFBQUFBQUFBQUJ3QUFBQUNBUUFBQUVBQUFBVUFBQUEKQUFBQUFDWUFB
SUFNQUFBQW1RQUFBQWNBdUFBQUFKa0FBQUFMQUx3QUFBQ1pBQUFBQ2dEK0FBQUFuQUFBQUFzQUFn
RUFBSndBQUFBSwpBQTRCQUFDWkFBQUFDd0FTQVFBQW1RQUFBQW9BSGdFQUFKa0FBQUFMQUNJQkFB
Q1pBQUFBQ2dBdUFRQUFtUUFBQUFzQU1nRUFBSmtBCkFBQUtBRDRCQUFDWkFBQUFDd0JDQVFBQW1R
QUFBQW9BVGdFQUFKa0FBQUFMQUZJQkFBQ1pBQUFBQ2dCb0FRQUFtUUFBQUFzQWJBRUEKQUprQUFB
QUtBS0VBQUFBQWhjQjFacUVBQUFBQWl3aUxGUUFBQUFDTEFsTldWMUZvRFFNQUFHZ0FBQUFBVVA4
VkFBQUFBSXY0Vi84VgpBQUFBQUdvQWFnQ0w4R29BVnY4VkFBQUFBSXNkQUFBQUFJUEVKSVgyb3dB
QUFBQjBCbGIvMDRQRUJJWC9kQVpYLzlPRHhBU2hBQUFBCkFGOWVXOE1CQUFBQXBBQUFBQVlBQ2dB
QUFJRUFBQUFHQUJJQUFBQ0FBQUFBQmdBaUFBQUFFQUFBQUFZQUtRQUFBSDhBQUFBR0FESUEKQUFC
K0FBQUFCZ0JCQUFBQWZRQUFBQVlBUndBQUFId0FBQUFHQUZFQUFBQ2tBQUFBQmdCb0FBQUFwQUFB
QUFZQUJBQUFBUFVBQUFDRQpBQUFBQUFBQUFBQUFBQUJ3QUFBQUFBQUFBQUFBQUFBQUFBQUFGeWNB
QUFBQUFBQUVBQUFBR1FBQUFGWUFBQUFBQUFBQUFBQUFBQUFBCkFBQnVKd0FBQUFBRUFBQUFBQUFh
QUFBQVZBQUFBQUFBQUFBQUFBQUFBQUFBQUc0bkFBQUFBQWdBQUFBQUFCc0FBQUJTQUFBQUFBQUEK
QUFBQUFBQUFBQUFBYmljQUFBQUFEQUFBQUFBQThRQUFBTUFBQUFBNEFBOFJBQUFBQUFBQUFBQUFB
QUFBY0FBQUFBQUFBQUJ2QUFBQQphaElBQUFBQUFBQUFBQUJ0WldScFlWQk9SMUJoZFhObFNXMWha
MlVBSEFBU0VBQUFBQUFBQUFBQUFBQUFBQXdBQUFBQUFBQUFBQUFBCkFnQUFFZ0FNRVlBUUFBQUFB
QUFBQUFCcGJXRm5aUUFPQURrUkp3QUFBQUFBQUFCVUVnQUFEZ0E1RVRBQUFBQUFBQUFBVmhJQUFB
NEEKT1JFL0FBQUFBQUFBQUZ3U0FBQU9BRGtSV0FBQUFBQUFBQUJlRWdBQURnQTVFV0lBQUFBQUFB
QUFYaElBQUFJQUJnRHlBQUFBSUFBQQpBQUFBQUFBQUFBQUFjQUFBQUFnRUFBQUJBQUFBRkFBQUFB
QUFBQUFuQUFDQURBQUFBS0VBQUFBSEFMZ0FBQUNoQUFBQUN3QzhBQUFBCm9RQUFBQW9BK0FBQUFL
UUFBQUFMQVB3QUFBQ2tBQUFBQ2dBSUFRQUFvUUFBQUFzQURBRUFBS0VBQUFBS0FCZ0JBQUNoQUFB
QUN3QWMKQVFBQW9RQUFBQW9BS0FFQUFLRUFBQUFMQUN3QkFBQ2hBQUFBQ2dBNEFRQUFvUUFBQUFz
QVBBRUFBS0VBQUFBS0FFZ0JBQUNoQUFBQQpDd0JNQVFBQW9RQUFBQW9BWUFFQUFLRUFBQUFMQUdR
QkFBQ2hBQUFBQ2dDaEFBQUFBSVhBZFdhaEFBQUFBSXNJaXhVQUFBQUFpd0pUClZsZFJhQ1VEQUFC
b0FBQUFBRkQvRlFBQUFBQ0wrRmYvRlFBQUFBQnFBR29BaS9CcUFGYi9GUUFBQUFDTEhRQUFBQUNE
eENTRjlxTUEKQUFBQWRBWlcvOU9EeEFTRi8zUUdWLy9UZzhRRW9RQUFBQUJmWGx2REFRQUFBS3dB
QUFBR0FBb0FBQUNCQUFBQUJnQVNBQUFBZ0FBQQpBQVlBSWdBQUFCRUFBQUFHQUNrQUFBQi9BQUFB
QmdBeUFBQUFmZ0FBQUFZQVFRQUFBSDBBQUFBR0FFY0FBQUI4QUFBQUJnQlJBQUFBCnJBQUFBQVlB
YUFBQUFLd0FBQUFHQUFRQUFBRDFBQUFBaEFBQUFBQUFBQUFBQUFBQWNBQUFBQUFBQUFBQUFBQUFB
QUFBQUJjbkFBQUEKQUFBQUJBQUFBQmtBQUFCV0FBQUFBQUFBQUFBQUFBQUFBQUFBYmljQUFBQUFC
QUFBQUFBQUdnQUFBRlFBQUFBQUFBQUFBQUFBQUFBQQpBQUJ1SndBQUFBQUlBQUFBQUFBYkFBQUFV
Z0FBQUFBQUFBQUFBQUFBQUFBQUFHNG5BQUFBQUF3QUFBQUFBUEVBQUFESEFBQUFQd0FQCkVRQUFB
QUFBQUFBQUFBQUFBSEFBQUFBQUFBQUFid0FBQUdvU0FBQUFBQUFBQUFBQWJXVmthV0ZRVGtkUVlY
VnpaVkJ5WlhOelpXUkoKYldGblpRQWNBQklRQUFBQUFBQUFBQUFBQUFBQURBQUFBQUFBQUFBQUFB
QUNBQUFTQUF3UmdCQUFBQUFBQUFBQUFHbHRZV2RsQUE0QQpPUkVuQUFBQUFBQUFBRlFTQUFBT0FE
a1JNQUFBQUFBQUFBQldFZ0FBRGdBNUVUOEFBQUFBQUFBQVhCSUFBQTRBT1JGWUFBQUFBQUFBCkFG
NFNBQUFPQURrUllnQUFBQUFBQUFCZUVnQUFBZ0FHQUFEeUFBQUFJQUFBQUFBQUFBQUFBQUFBY0FB
QUFBZ0VBQUFCQUFBQUZBQUEKQUFBQUFBQW9BQUNBREFBQUFLa0FBQUFIQUxnQUFBQ3BBQUFBQ3dD
OEFBQUFxUUFBQUFvQS93QUFBS3dBQUFBTEFBTUJBQUNzQUFBQQpDZ0FQQVFBQXFRQUFBQXNBRXdF
QUFLa0FBQUFLQUI4QkFBQ3BBQUFBQ3dBakFRQUFxUUFBQUFvQUx3RUFBS2tBQUFBTEFETUJBQUNw
CkFBQUFDZ0EvQVFBQXFRQUFBQXNBUXdFQUFLa0FBQUFLQUU4QkFBQ3BBQUFBQ3dCVEFRQUFxUUFB
QUFvQWFBRUFBS2tBQUFBTEFHd0IKQUFDcEFBQUFDZ0NoQUFBQUFJWEFkV2FoQUFBQUFJc0lpeFVB
QUFBQWl3SlRWbGRSYUQwREFBQm9BQUFBQUZEL0ZRQUFBQUNMK0ZmLwpGUUFBQUFCcUFHb0FpL0Jx
QUZiL0ZRQUFBQUNMSFFBQUFBQ0R4Q1NGOXFNQUFBQUFkQVpXLzlPRHhBU0YvM1FHVi8vVGc4UUVv
UUFBCkFBQmZYbHZEQVFBQUFMUUFBQUFHQUFvQUFBQ0JBQUFBQmdBU0FBQUFnQUFBQUFZQUlnQUFB
QklBQUFBR0FDa0FBQUIvQUFBQUJnQXkKQUFBQWZnQUFBQVlBUVFBQUFIMEFBQUFHQUVjQUFBQjhB
QUFBQmdCUkFBQUF0QUFBQUFZQWFBQUFBTFFBQUFBR0FBUUFBQUQxQUFBQQpoQUFBQUFBQUFBQUFB
QUFBY0FBQUFBQUFBQUFBQUFBQUFBQUFBQmNuQUFBQUFBQUFCQUFBQUJrQUFBQldBQUFBQUFBQUFB
QUFBQUFBCkFBQUFiaWNBQUFBQUJBQUFBQUFBR2dBQUFGUUFBQUFBQUFBQUFBQUFBQUFBQUFCdUp3
QUFBQUFJQUFBQUFBQWJBQUFBVWdBQUFBQUEKQUFBQUFBQUFBQUFBQUc0bkFBQUFBQXdBQUFBQUFQ
RUFBQUMvQUFBQU53QVBFUUFBQUFBQUFBQUFBQUFBQUhBQUFBQUFBQUFBYndBQQpBR29TQUFBQUFB
QUFBQUFBYldWa2FXRlFUa2RRYkdGNVNXMWhaMlVBSEFBU0VBQUFBQUFBQUFBQUFBQUFBQXdBQUFB
QUFBQUFBQUFBCkFnQUFFZ0FNRVlBUUFBQUFBQUFBQUFCcGJXRm5aUUFPQURrUkp3QUFBQUFBQUFC
VUVnQUFEZ0E1RVRBQUFBQUFBQUFBVmhJQUFBNEEKT1JFL0FBQUFBQUFBQUZ3U0FBQU9BRGtSV0FB
QUFBQUFBQUJlRWdBQURnQTVFV0lBQUFBQUFBQUFYaElBQUFJQUJnQUE4Z0FBQUNBQQpBQUFBQUFB
QUFBQUFBSEFBQUFBSUJBQUFBUUFBQUJRQUFBQUFBQUFBS1FBQWdBd0FBQUN4QUFBQUJ3QzRBQUFB
c1FBQUFBc0F2QUFBCkFMRUFBQUFLQVBjQUFBQzBBQUFBQ3dEN0FBQUF0QUFBQUFvQUJ3RUFBTEVB
QUFBTEFBc0JBQUN4QUFBQUNnQVhBUUFBc1FBQUFBc0EKR3dFQUFMRUFBQUFLQUNjQkFBQ3hBQUFB
Q3dBckFRQUFzUUFBQUFvQU53RUFBTEVBQUFBTEFEc0JBQUN4QUFBQUNnQkhBUUFBc1FBQQpBQXNB
U3dFQUFMRUFBQUFLQUdBQkFBQ3hBQUFBQ3dCa0FRQUFzUUFBQUFvQW9RQUFBQUNGd0hWbW9RQUFB
QUNMQ0lzVkFBQUFBSXNDClUxWlhVV2hrQXdBQWFBQUFBQUJRL3hVQUFBQUFpL2hYL3hVQUFBQUFh
Z0JxQUl2d2FnQlcveFVBQUFBQWl4MEFBQUFBZzhRa2hmYWoKQUFBQUFIUUdWdi9UZzhRRWhmOTBC
bGYvMDRQRUJLRUFBQUFBWDE1Ynd3RUFBQUM4QUFBQUJnQUtBQUFBZ1FBQUFBWUFFZ0FBQUlBQQpB
QUFHQUNJQUFBQVRBQUFBQmdBcEFBQUFmd0FBQUFZQU1nQUFBSDRBQUFBR0FFRUFBQUI5QUFBQUJn
QkhBQUFBZkFBQUFBWUFVUUFBCkFMd0FBQUFHQUdnQUFBQzhBQUFBQmdBRUFBQUE5UUFBQUlRQUFB
QUFBQUFBQUFBQUFIQUFBQUFBQUFBQUFBQUFBQUFBQUFBWEp3QUEKQUFBQUFBUUFBQUFaQUFBQVZn
QUFBQUFBQUFBQUFBQUFBQUFBQUc0bkFBQUFBQVFBQUFBQUFCb0FBQUJVQUFBQUFBQUFBQUFBQUFB
QQpBQUFBYmljQUFBQUFDQUFBQUFBQUd3QUFBRklBQUFBQUFBQUFBQUFBQUFBQUFBQnVKd0FBQUFB
TUFBQUFBQUR4QUFBQXhnQUFBRDRBCkR4RUFBQUFBQUFBQUFBQUFBQUJ3QUFBQUFBQUFBRzhBQUFC
cUVnQUFBQUFBQUFBQUFHMWxaR2xoVUU1SFVHeGhlVkJ5WlhOelpXUkoKYldGblpRQWNBQklRQUFB
QUFBQUFBQUFBQUFBQURBQUFBQUFBQUFBQUFBQUNBQUFTQUF3UmdCQUFBQUFBQUFBQUFHbHRZV2Rs
QUE0QQpPUkVuQUFBQUFBQUFBRlFTQUFBT0FEa1JNQUFBQUFBQUFBQldFZ0FBRGdBNUVUOEFBQUFB
QUFBQVhCSUFBQTRBT1JGWUFBQUFBQUFBCkFGNFNBQUFPQURrUllnQUFBQUFBQUFCZUVnQUFBZ0FH
QUFBQThnQUFBQ0FBQUFBQUFBQUFBQUFBQUhBQUFBQUlCQUFBQVFBQUFCUUEKQUFBQUFBQUFLZ0FB
Z0F3QUFBQzVBQUFBQndDNEFBQUF1UUFBQUFzQXZBQUFBTGtBQUFBS0FQNEFBQUM4QUFBQUN3QUNB
UUFBdkFBQQpBQW9BRGdFQUFMa0FBQUFMQUJJQkFBQzVBQUFBQ2dBZUFRQUF1UUFBQUFzQUlnRUFB
TGtBQUFBS0FDNEJBQUM1QUFBQUN3QXlBUUFBCnVRQUFBQW9BUGdFQUFMa0FBQUFMQUVJQkFBQzVB
QUFBQ2dCT0FRQUF1UUFBQUFzQVVnRUFBTGtBQUFBS0FHZ0JBQUM1QUFBQUN3QnMKQVFBQXVRQUFB
QW9Bb1FBQUFBQ0Z3SFZtb1FBQUFBQ0xDSXNWQUFBQUFJc0NVMVpYVVdnMUF3QUFhQUFBQUFCUS94
VUFBQUFBaS9oWAoveFVBQUFBQWFnQnFBSXZ3YWdCVy94VUFBQUFBaXgwQUFBQUFnOFFraGZhakFB
QUFBSFFHVnYvVGc4UUVoZjkwQmxmLzA0UEVCS0VBCkFBQUFYMTVid3dFQUFBREVBQUFBQmdBS0FB
QUFnUUFBQUFZQUVnQUFBSUFBQUFBR0FDSUFBQUFVQUFBQUJnQXBBQUFBZndBQUFBWUEKTWdBQUFI
NEFBQUFHQUVFQUFBQjlBQUFBQmdCSEFBQUFmQUFBQUFZQVVRQUFBTVFBQUFBR0FHZ0FBQURFQUFB
QUJnQUVBQUFBOVFBQQpBSVFBQUFBQUFBQUFBQUFBQUhBQUFBQUFBQUFBQUFBQUFBQUFBQUFYSndB
QUFBQUFBQVFBQUFBWkFBQUFWZ0FBQUFBQUFBQUFBQUFBCkFBQUFBRzRuQUFBQUFBUUFBQUFBQUJv
QUFBQlVBQUFBQUFBQUFBQUFBQUFBQUFBQWJpY0FBQUFBQ0FBQUFBQUFHd0FBQUZJQUFBQUEKQUFB
QUFBQUFBQUFBQUFCdUp3QUFBQUFNQUFBQUFBRHhBQUFBd1FBQUFEa0FEeEVBQUFBQUFBQUFBQUFB
QUFCd0FBQUFBQUFBQUc4QQpBQUJxRWdBQUFBQUFBQUFBQUcxbFpHbGhVRTVIVW1WM2FXNWtTVzFo
WjJVQUhBQVNFQUFBQUFBQUFBQUFBQUFBQUF3QUFBQUFBQUFBCkFBQUFBZ0FBRWdBTUVZQVFBQUFB
QUFBQUFBQnBiV0ZuWlFBT0FEa1JKd0FBQUFBQUFBQlVFZ0FBRGdBNUVUQUFBQUFBQUFBQVZoSUEK
QUE0QU9SRS9BQUFBQUFBQUFGd1NBQUFPQURrUldBQUFBQUFBQUFCZUVnQUFEZ0E1RVdJQUFBQUFB
QUFBWGhJQUFBSUFCZ0FBQUFEeQpBQUFBSUFBQUFBQUFBQUFBQUFBQWNBQUFBQWdFQUFBQkFBQUFG
QUFBQUFBQUFBQXJBQUNBREFBQUFNRUFBQUFIQUxnQUFBREJBQUFBCkN3QzhBQUFBd1FBQUFBb0Er
UUFBQU1RQUFBQUxBUDBBQUFERUFBQUFDZ0FKQVFBQXdRQUFBQXNBRFFFQUFNRUFBQUFLQUJrQkFB
REIKQUFBQUN3QWRBUUFBd1FBQUFBb0FLUUVBQU1FQUFBQUxBQzBCQUFEQkFBQUFDZ0E1QVFBQXdR
QUFBQXNBUFFFQUFNRUFBQUFLQUVrQgpBQURCQUFBQUN3Qk5BUUFBd1FBQUFBb0FaQUVBQU1FQUFB
QUxBR2dCQUFEQkFBQUFDZ0NoQUFBQUFJWEFkV2FoQUFBQUFJc0lpeFVBCkFBQUFpd0pUVmxkUmFF
OERBQUJvQUFBQUFGRC9GUUFBQUFDTCtGZi9GUUFBQUFCcUFHb0FpL0JxQUZiL0ZRQUFBQUNMSFFB
QUFBQ0QKeENTRjlxTUFBQUFBZEFaVy85T0R4QVNGLzNRR1YvL1RnOFFFb1FBQUFBQmZYbHZEQVFB
QUFNd0FBQUFHQUFvQUFBQ0JBQUFBQmdBUwpBQUFBZ0FBQUFBWUFJZ0FBQUJVQUFBQUdBQ2tBQUFC
L0FBQUFCZ0F5QUFBQWZnQUFBQVlBUVFBQUFIMEFBQUFHQUVjQUFBQjhBQUFBCkJnQlJBQUFBekFB
QUFBWUFhQUFBQU13QUFBQUdBQVFBQUFEMUFBQUFoQUFBQUFBQUFBQUFBQUFBY0FBQUFBQUFBQUFB
QUFBQUFBQUEKQUJjbkFBQUFBQUFBQkFBQUFCa0FBQUJXQUFBQUFBQUFBQUFBQUFBQUFBQUFiaWNB
QUFBQUJBQUFBQUFBR2dBQUFGUUFBQUFBQUFBQQpBQUFBQUFBQUFBQnVKd0FBQUFBSUFBQUFBQUFi
QUFBQVVnQUFBQUFBQUFBQUFBQUFBQUFBQUc0bkFBQUFBQXdBQUFBQUFQRUFBQURJCkFBQUFRQUFQ
RVFBQUFBQUFBQUFBQUFBQUFIQUFBQUFBQUFBQWJ3QUFBR29TQUFBQUFBQUFBQUFBYldWa2FXRlFU
a2RTWlhkcGJtUlEKY21WemMyVmtTVzFoWjJVQUhBQVNFQUFBQUFBQUFBQUFBQUFBQUF3QUFBQUFB
QUFBQUFBQUFnQUFFZ0FNRVlBUUFBQUFBQUFBQUFCcApiV0ZuWlFBT0FEa1JKd0FBQUFBQUFBQlVF
Z0FBRGdBNUVUQUFBQUFBQUFBQVZoSUFBQTRBT1JFL0FBQUFBQUFBQUZ3U0FBQU9BRGtSCldBQUFB
QUFBQUFCZUVnQUFEZ0E1RVdJQUFBQUFBQUFBWGhJQUFBSUFCZ0R5QUFBQUlBQUFBQUFBQUFBQUFB
QUFjQUFBQUFnRUFBQUIKQUFBQUZBQUFBQUFBQUFBc0FBQ0FEQUFBQU1rQUFBQUhBTGdBQUFESkFB
QUFDd0M4QUFBQXlRQUFBQW9BQUFFQUFNd0FBQUFMQUFRQgpBQURNQUFBQUNnQVFBUUFBeVFBQUFB
c0FGQUVBQU1rQUFBQUtBQ0FCQUFESkFBQUFDd0FrQVFBQXlRQUFBQW9BTUFFQUFNa0FBQUFMCkFE
UUJBQURKQUFBQUNnQkFBUUFBeVFBQUFBc0FSQUVBQU1rQUFBQUtBRkFCQUFESkFBQUFDd0JVQVFB
QXlRQUFBQW9BYUFFQUFNa0EKQUFBTEFHd0JBQURKQUFBQUNnQ2hBQUFBQUlYQWRXYWhBQUFBQUlz
SWl4VUFBQUFBaXdKVFZsZFJhQzBEQUFCb0FBQUFBRkQvRlFBQQpBQUNMK0ZmL0ZRQUFBQUJxQUdv
QWkvQnFBRmIvRlFBQUFBQ0xIUUFBQUFDRHhDU0Y5cU1BQUFBQWRBWlcvOU9EeEFTRi8zUUdWLy9U
Cmc4UUVvUUFBQUFCZlhsdkRBUUFBQU5RQUFBQUdBQW9BQUFDQkFBQUFCZ0FTQUFBQWdBQUFBQVlB
SWdBQUFBZ0FBQUFHQUNrQUFBQi8KQUFBQUJnQXlBQUFBZmdBQUFBWUFRUUFBQUgwQUFBQUdBRWNB
QUFCOEFBQUFCZ0JSQUFBQTFBQUFBQVlBYUFBQUFOUUFBQUFHQUFRQQpBQUQxQUFBQWhBQUFBQUFB
QUFBQUFBQUFjQUFBQUFBQUFBQUFBQUFBQUFBQUFCY25BQUFBQUFBQUJBQUFBQmtBQUFCV0FBQUFB
QUFBCkFBQUFBQUFBQUFBQWJpY0FBQUFBQkFBQUFBQUFHZ0FBQUZRQUFBQUFBQUFBQUFBQUFBQUFB
QUJ1SndBQUFBQUlBQUFBQUFBYkFBQUEKVWdBQUFBQUFBQUFBQUFBQUFBQUFBRzRuQUFBQUFBd0FB
QUFBQVBFQUFBREdBQUFBUGdBUEVRQUFBQUFBQUFBQUFBQUFBSEFBQUFBQQpBQUFBYndBQUFHb1NB
QUFBQUFBQUFBQUFiV1ZrYVdGUVRrZEdZWE4wUm05eWQyRnlaRWx0WVdkbEFCd0FFaEFBQUFBQUFB
QUFBQUFBCkFBQU1BQUFBQUFBQUFBQUFBQUlBQUJJQURCR0FFQUFBQUFBQUFBQUFhVzFoWjJVQURn
QTVFU2NBQUFBQUFBQUFWQklBQUE0QU9SRXcKQUFBQUFBQUFBRllTQUFBT0FEa1JQd0FBQUFBQUFB
QmNFZ0FBRGdBNUVWZ0FBQUFBQUFBQVhoSUFBQTRBT1JGaUFBQUFBQUFBQUY0UwpBQUFDQUFZQUFB
RHlBQUFBSUFBQUFBQUFBQUFBQUFBQWNBQUFBQWdFQUFBQkFBQUFGQUFBQUFBQUFBQXRBQUNBREFB
QUFORUFBQUFICkFMZ0FBQURSQUFBQUN3QzhBQUFBMFFBQUFBb0EvZ0FBQU5RQUFBQUxBQUlCQUFE
VUFBQUFDZ0FPQVFBQTBRQUFBQXNBRWdFQUFORUEKQUFBS0FCNEJBQURSQUFBQUN3QWlBUUFBMFFB
QUFBb0FMZ0VBQU5FQUFBQUxBRElCQUFEUkFBQUFDZ0ErQVFBQTBRQUFBQXNBUWdFQQpBTkVBQUFB
S0FFNEJBQURSQUFBQUN3QlNBUUFBMFFBQUFBb0FhQUVBQU5FQUFBQUxBR3dCQUFEUkFBQUFDZ0No
QUFBQUFJWEFkV2FoCkFBQUFBSXNJaXhVQUFBQUFpd0pUVmxkUmFGRURBQUJvQUFBQUFGRC9GUUFB
QUFDTCtGZi9GUUFBQUFCcUFHb0FpL0JxQUZiL0ZRQUEKQUFDTEhRQUFBQUNEeENTRjlxTUFBQUFB
ZEFaVy85T0R4QVNGLzNRR1YvL1RnOFFFb1FBQUFBQmZYbHZEQVFBQUFOd0FBQUFHQUFvQQpBQUNC
QUFBQUJnQVNBQUFBZ0FBQUFBWUFJZ0FBQUFrQUFBQUdBQ2tBQUFCL0FBQUFCZ0F5QUFBQWZnQUFB
QVlBUVFBQUFIMEFBQUFHCkFFY0FBQUI4QUFBQUJnQlJBQUFBM0FBQUFBWUFhQUFBQU53QUFBQUdB
QVFBQUFEMUFBQUFoQUFBQUFBQUFBQUFBQUFBY0FBQUFBQUEKQUFBQUFBQUFBQUFBQUJjbkFBQUFB
QUFBQkFBQUFCa0FBQUJXQUFBQUFBQUFBQUFBQUFBQUFBQUFiaWNBQUFBQUJBQUFBQUFBR2dBQQpB
RlFBQUFBQUFBQUFBQUFBQUFBQUFBQnVKd0FBQUFBSUFBQUFBQUFiQUFBQVVnQUFBQUFBQUFBQUFB
QUFBQUFBQUc0bkFBQUFBQXdBCkFBQUFBUEVBQUFETkFBQUFSUUFQRVFBQUFBQUFBQUFBQUFBQUFI
QUFBQUFBQUFBQWJ3QUFBR29TQUFBQUFBQUFBQUFBYldWa2FXRlEKVGtkR1lYTjBSbTl5ZDJGeVpG
QnlaWE56WldSSmJXRm5aUUFjQUJJUUFBQUFBQUFBQUFBQUFBQUFEQUFBQUFBQUFBQUFBQUFDQUFB
UwpBQXdSZ0JBQUFBQUFBQUFBQUdsdFlXZGxBQTRBT1JFbkFBQUFBQUFBQUZRU0FBQU9BRGtSTUFB
QUFBQUFBQUJXRWdBQURnQTVFVDhBCkFBQUFBQUFBWEJJQUFBNEFPUkZZQUFBQUFBQUFBRjRTQUFB
T0FEa1JZZ0FBQUFBQUFBQmVFZ0FBQWdBR0FBQUFBUElBQUFBZ0FBQUEKQUFBQUFBQUFBQUJ3QUFB
QUNBUUFBQUVBQUFBVUFBQUFBQUFBQUM0QUFJQU1BQUFBMlFBQUFBY0F1QUFBQU5rQUFBQUxBTHdB
QUFEWgpBQUFBQ2dBRkFRQUEzQUFBQUFzQUNRRUFBTndBQUFBS0FCVUJBQURaQUFBQUN3QVpBUUFB
MlFBQUFBb0FKUUVBQU5rQUFBQUxBQ2tCCkFBRFpBQUFBQ2dBMUFRQUEyUUFBQUFzQU9RRUFBTmtB
QUFBS0FFVUJBQURaQUFBQUN3QkpBUUFBMlFBQUFBb0FWUUVBQU5rQUFBQUwKQUZrQkFBRFpBQUFB
Q2dCd0FRQUEyUUFBQUFzQWRBRUFBTmtBQUFBS0FLRUFBQUFBaGNCMVpxRUFBQUFBaXdpTEZRQUFB
QUNMQWxOVwpWMUZvQmc0QUFHZ0FBQUFBVVA4VkFBQUFBSXY0Vi84VkFBQUFBR29BYWdDTDhHb0FW
djhWQUFBQUFJc2RBQUFBQUlQRUpJWDJvd0FBCkFBQjBCbGIvMDRQRUJJWC9kQVpYLzlPRHhBU2hB
QUFBQUY5ZVc4TUJBQUFBNUFBQUFBWUFDZ0FBQUlFQUFBQUdBQklBQUFDQUFBQUEKQmdBaUFBQUFG
Z0FBQUFZQUtRQUFBSDhBQUFBR0FESUFBQUIrQUFBQUJnQkJBQUFBZlFBQUFBWUFSd0FBQUh3QUFB
QUdBRkVBQUFEawpBQUFBQmdCb0FBQUE1QUFBQUFZQUJBQUFBUFVBQUFDRUFBQUFBQUFBQUFBQUFB
QndBQUFBQUFBQUFBQUFBQUFBQUFBQUZ5Y0FBQUFBCkFBQUVBQUFBR1FBQUFGWUFBQUFBQUFBQUFB
QUFBQUFBQUFCdUp3QUFBQUFFQUFBQUFBQWFBQUFBVkFBQUFBQUFBQUFBQUFBQUFBQUEKQUc0bkFB
QUFBQWdBQUFBQUFCc0FBQUJTQUFBQUFBQUFBQUFBQUFBQUFBQUFiaWNBQUFBQURBQUFBQUFBOFFB
QUFNMEFBQUJGQUE4UgpBQUFBQUFBQUFBQUFBQUFBY0FBQUFBQUFBQUJ2QUFBQWFoSUFBQUFBQUFB
QUFBQnRaV1JwWVZCT1IxTnNhV1JsY2xSeVlXTnJUR1ZtCmRFTmhjRWx0WVdkbEFCd0FFaEFBQUFB
QUFBQUFBQUFBQUFBTUFBQUFBQUFBQUFBQUFBSUFBQklBREJHQUVBQUFBQUFBQUFBQWFXMWgKWjJV
QURnQTVFU2NBQUFBQUFBQUFWQklBQUE0QU9SRXdBQUFBQUFBQUFGWVNBQUFPQURrUlB3QUFBQUFB
QUFCY0VnQUFEZ0E1RVZnQQpBQUFBQUFBQVhoSUFBQTRBT1JGaUFBQUFBQUFBQUY0U0FBQUNBQVlB
QUFBQThnQUFBQ0FBQUFBQUFBQUFBQUFBQUhBQUFBQUlCQUFBCkFRQUFBQlFBQUFBQUFBQUFMd0FB
Z0F3QUFBRGhBQUFBQndDNEFBQUE0UUFBQUFzQXZBQUFBT0VBQUFBS0FBVUJBQURrQUFBQUN3QUoK
QVFBQTVBQUFBQW9BRlFFQUFPRUFBQUFMQUJrQkFBRGhBQUFBQ2dBbEFRQUE0UUFBQUFzQUtRRUFB
T0VBQUFBS0FEVUJBQURoQUFBQQpDd0E1QVFBQTRRQUFBQW9BUlFFQUFPRUFBQUFMQUVrQkFBRGhB
QUFBQ2dCVkFRQUE0UUFBQUFzQVdRRUFBT0VBQUFBS0FIQUJBQURoCkFBQUFDd0IwQVFBQTRRQUFB
QW9Bb1FBQUFBQ0Z3SFZtb1FBQUFBQ0xDSXNWQUFBQUFJc0NVMVpYVVdnQkRnQUFhQUFBQUFCUS94
VUEKQUFBQWkvaFgveFVBQUFBQWFnQnFBSXZ3YWdCVy94VUFBQUFBaXgwQUFBQUFnOFFraGZhakFB
QUFBSFFHVnYvVGc4UUVoZjkwQmxmLwowNFBFQktFQUFBQUFYMTVid3dFQUFBRHNBQUFBQmdBS0FB
QUFnUUFBQUFZQUVnQUFBSUFBQUFBR0FDSUFBQUFYQUFBQUJnQXBBQUFBCmZ3QUFBQVlBTWdBQUFI
NEFBQUFHQUVFQUFBQjlBQUFBQmdCSEFBQUFmQUFBQUFZQVVRQUFBT3dBQUFBR0FHZ0FBQURzQUFB
QUJnQUUKQUFBQTlRQUFBSVFBQUFBQUFBQUFBQUFBQUhBQUFBQUFBQUFBQUFBQUFBQUFBQUFYSndB
QUFBQUFBQVFBQUFBWkFBQUFWZ0FBQUFBQQpBQUFBQUFBQUFBQUFBRzRuQUFBQUFBUUFBQUFBQUJv
QUFBQlVBQUFBQUFBQUFBQUFBQUFBQUFBQWJpY0FBQUFBQ0FBQUFBQUFHd0FBCkFGSUFBQUFBQUFB
QUFBQUFBQUFBQUFCdUp3QUFBQUFNQUFBQUFBRHhBQUFBMUFBQUFFd0FEeEVBQUFBQUFBQUFBQUFB
QUFCd0FBQUEKQUFBQUFHOEFBQUJxRWdBQUFBQUFBQUFBQUcxbFpHbGhVRTVIVTJ4cFpHVnlWSEpo
WTJ0TVpXWjBRMkZ3VEc5aFpHbHVaMGx0WVdkbApBQndBRWhBQUFBQUFBQUFBQUFBQUFBQU1BQUFB
QUFBQUFBQUFBQUlBQUJJQURCR0FFQUFBQUFBQUFBQUFhVzFoWjJVQURnQTVFU2NBCkFBQUFBQUFB
VkJJQUFBNEFPUkV3QUFBQUFBQUFBRllTQUFBT0FEa1JQd0FBQUFBQUFBQmNFZ0FBRGdBNUVWZ0FB
QUFBQUFBQVhoSUEKQUE0QU9SRmlBQUFBQUFBQUFGNFNBQUFDQUFZQThnQUFBQ0FBQUFBQUFBQUFB
QUFBQUhBQUFBQUlCQUFBQVFBQUFCUUFBQUFBQUFBQQpNQUFBZ0F3QUFBRHBBQUFBQndDNEFBQUE2
UUFBQUFzQXZBQUFBT2tBQUFBS0FBd0JBQURzQUFBQUN3QVFBUUFBN0FBQUFBb0FIQUVBCkFPa0FB
QUFMQUNBQkFBRHBBQUFBQ2dBc0FRQUE2UUFBQUFzQU1BRUFBT2tBQUFBS0FEd0JBQURwQUFBQUN3
QkFBUUFBNlFBQUFBb0EKVEFFQUFPa0FBQUFMQUZBQkFBRHBBQUFBQ2dCY0FRQUE2UUFBQUFzQVlB
RUFBT2tBQUFBS0FIUUJBQURwQUFBQUN3QjRBUUFBNlFBQQpBQW9Bb1FBQUFBQ0Z3SFZtb1FBQUFB
Q0xDSXNWQUFBQUFJc0NVMVpYVVdpYURRQUFhQUFBQUFCUS94VUFBQUFBaS9oWC94VUFBQUFBCmFn
QnFBSXZ3YWdCVy94VUFBQUFBaXgwQUFBQUFnOFFraGZhakFBQUFBSFFHVnYvVGc4UUVoZjkwQmxm
LzA0UEVCS0VBQUFBQVgxNWIKd3dFQUFBRDBBQUFBQmdBS0FBQUFnUUFBQUFZQUVnQUFBSUFBQUFB
R0FDSUFBQUFZQUFBQUJnQXBBQUFBZndBQUFBWUFNZ0FBQUg0QQpBQUFHQUVFQUFBQjlBQUFBQmdC
SEFBQUFmQUFBQUFZQVVRQUFBUFFBQUFBR0FHZ0FBQUQwQUFBQUJnQUVBQUFBOVFBQUFJUUFBQUFB
CkFBQUFBQUFBQUhBQUFBQUFBQUFBQUFBQUFBQUFBQUFYSndBQUFBQUFBQVFBQUFBWkFBQUFWZ0FB
QUFBQUFBQUFBQUFBQUFBQUFHNG4KQUFBQUFBUUFBQUFBQUJvQUFBQlVBQUFBQUFBQUFBQUFBQUFB
QUFBQWJpY0FBQUFBQ0FBQUFBQUFHd0FBQUZJQUFBQUFBQUFBQUFBQQpBQUFBQUFCdUp3QUFBQUFN
QUFBQUFBRHhBQUFBekFBQUFFUUFEeEVBQUFBQUFBQUFBQUFBQUFCd0FBQUFBQUFBQUc4QUFBQnFF
Z0FBCkFBQUFBQUFBQUcxbFpHbGhVRTVIVTJ4cFpHVnlWSEpoWTJ0TmFXUmtiR1ZKYldGblpRQWNB
QklRQUFBQUFBQUFBQUFBQUFBQURBQUEKQUFBQUFBQUFBQUFDQUFBU0FBd1JnQkFBQUFBQUFBQUFB
R2x0WVdkbEFBNEFPUkVuQUFBQUFBQUFBRlFTQUFBT0FEa1JNQUFBQUFBQQpBQUJXRWdBQURnQTVF
VDhBQUFBQUFBQUFYQklBQUE0QU9SRllBQUFBQUFBQUFGNFNBQUFPQURrUllnQUFBQUFBQUFCZUVn
QUFBZ0FHCkFQSUFBQUFnQUFBQUFBQUFBQUFBQUFCd0FBQUFDQVFBQUFFQUFBQVVBQUFBQUFBQUFE
RUFBSUFNQUFBQThRQUFBQWNBdUFBQUFQRUEKQUFBTEFMd0FBQUR4QUFBQUNnQUVBUUFBOUFBQUFB
c0FDQUVBQVBRQUFBQUtBQlFCQUFEeEFBQUFDd0FZQVFBQThRQUFBQW9BSkFFQQpBUEVBQUFBTEFD
Z0JBQUR4QUFBQUNnQTBBUUFBOFFBQUFBc0FPQUVBQVBFQUFBQUtBRVFCQUFEeEFBQUFDd0JJQVFB
QThRQUFBQW9BClZBRUFBUEVBQUFBTEFGZ0JBQUR4QUFBQUNnQnNBUUFBOFFBQUFBc0FjQUVBQVBF
QUFBQUtBS0VBQUFBQWhjQjFacUVBQUFBQWl3aUwKRlFBQUFBQ0xBbE5XVjFGb2xnMEFBR2dBQUFB
QVVQOFZBQUFBQUl2NFYvOFZBQUFBQUdvQWFnQ0w4R29BVnY4VkFBQUFBSXNkQUFBQQpBSVBFSklY
Mm93QUFBQUIwQmxiLzA0UEVCSVgvZEFaWC85T0R4QVNoQUFBQUFGOWVXOE1CQUFBQS9BQUFBQVlB
Q2dBQUFJRUFBQUFHCkFCSUFBQUNBQUFBQUJnQWlBQUFBR1FBQUFBWUFLUUFBQUg4QUFBQUdBRElB
QUFCK0FBQUFCZ0JCQUFBQWZRQUFBQVlBUndBQUFId0EKQUFBR0FGRUFBQUQ4QUFBQUJnQm9BQUFB
L0FBQUFBWUFCQUFBQVBVQUFBQ0VBQUFBQUFBQUFBQUFBQUJ3QUFBQUFBQUFBQUFBQUFBQQpBQUFB
RnljQUFBQUFBQUFFQUFBQUdRQUFBRllBQUFBQUFBQUFBQUFBQUFBQUFBQnVKd0FBQUFBRUFBQUFB
QUFhQUFBQVZBQUFBQUFBCkFBQUFBQUFBQUFBQUFHNG5BQUFBQUFnQUFBQUFBQnNBQUFCU0FBQUFB
QUFBQUFBQUFBQUFBQUFBYmljQUFBQUFEQUFBQUFBQThRQUEKQU5NQUFBQkxBQThSQUFBQUFBQUFB
QUFBQUFBQWNBQUFBQUFBQUFCdkFBQUFhaElBQUFBQUFBQUFBQUJ0WldScFlWQk9SMU5zYVdSbApj
bFJ5WVdOclRXbGtaR3hsVEc5aFpHbHVaMGx0WVdkbEFCd0FFaEFBQUFBQUFBQUFBQUFBQUFBTUFB
QUFBQUFBQUFBQUFBSUFBQklBCkRCR0FFQUFBQUFBQUFBQUFhVzFoWjJVQURnQTVFU2NBQUFBQUFB
QUFWQklBQUE0QU9SRXdBQUFBQUFBQUFGWVNBQUFPQURrUlB3QUEKQUFBQUFBQmNFZ0FBRGdBNUVW
Z0FBQUFBQUFBQVhoSUFBQTRBT1JGaUFBQUFBQUFBQUY0U0FBQUNBQVlBQVBJQUFBQWdBQUFBQUFB
QQpBQUFBQUFCd0FBQUFDQVFBQUFFQUFBQVVBQUFBQUFBQUFESUFBSUFNQUFBQStRQUFBQWNBdUFB
QUFQa0FBQUFMQUx3QUFBRDVBQUFBCkNnQUxBUUFBL0FBQUFBc0FEd0VBQVB3QUFBQUtBQnNCQUFE
NUFBQUFDd0FmQVFBQStRQUFBQW9BS3dFQUFQa0FBQUFMQUM4QkFBRDUKQUFBQUNnQTdBUUFBK1FB
QUFBc0FQd0VBQVBrQUFBQUtBRXNCQUFENUFBQUFDd0JQQVFBQStRQUFBQW9BV3dFQUFQa0FBQUFM
QUY4QgpBQUQ1QUFBQUNnQjBBUUFBK1FBQUFBc0FlQUVBQVBrQUFBQUtBS0VBQUFBQWhjQjFacUVB
QUFBQWl3aUxGUUFBQUFDTEFsTldWMUZvCi93MEFBR2dBQUFBQVVQOFZBQUFBQUl2NFYvOFZBQUFB
QUdvQWFnQ0w4R29BVnY4VkFBQUFBSXNkQUFBQUFJUEVKSVgyb3dBQUFBQjAKQmxiLzA0UEVCSVgv
ZEFaWC85T0R4QVNoQUFBQUFGOWVXOE1CQUFBQUJBRUFBQVlBQ2dBQUFJRUFBQUFHQUJJQUFBQ0FB
QUFBQmdBaQpBQUFBR2dBQUFBWUFLUUFBQUg4QUFBQUdBRElBQUFCK0FBQUFCZ0JCQUFBQWZRQUFB
QVlBUndBQUFId0FBQUFHQUZFQUFBQUVBUUFBCkJnQm9BQUFBQkFFQUFBWUFCQUFBQVBVQUFBQ0VB
QUFBQUFBQUFBQUFBQUJ3QUFBQUFBQUFBQUFBQUFBQUFBQUFGeWNBQUFBQUFBQUUKQUFBQUdRQUFB
RllBQUFBQUFBQUFBQUFBQUFBQUFBQnVKd0FBQUFBRUFBQUFBQUFhQUFBQVZBQUFBQUFBQUFBQUFB
QUFBQUFBQUc0bgpBQUFBQUFnQUFBQUFBQnNBQUFCU0FBQUFBQUFBQUFBQUFBQUFBQUFBYmljQUFB
QUFEQUFBQUFBQThRQUFBTTRBQUFCR0FBOFJBQUFBCkFBQUFBQUFBQUFBQWNBQUFBQUFBQUFCdkFB
QUFhaElBQUFBQUFBQUFBQUJ0WldScFlWQk9SMU5zYVdSbGNsUnlZV05yVW1sbmFIUkQKWVhCSmJX
Rm5aUUFjQUJJUUFBQUFBQUFBQUFBQUFBQUFEQUFBQUFBQUFBQUFBQUFDQUFBU0FBd1JnQkFBQUFB
QUFBQUFBR2x0WVdkbApBQTRBT1JFbkFBQUFBQUFBQUZRU0FBQU9BRGtSTUFBQUFBQUFBQUJXRWdB
QURnQTVFVDhBQUFBQUFBQUFYQklBQUE0QU9SRllBQUFBCkFBQUFBRjRTQUFBT0FEa1JZZ0FBQUFB
QUFBQmVFZ0FBQWdBR0FBQUE4Z0FBQUNBQUFBQUFBQUFBQUFBQUFIQUFBQUFJQkFBQUFRQUEKQUJR
QUFBQUFBQUFBTXdBQWdBd0FBQUFCQVFBQUJ3QzRBQUFBQVFFQUFBc0F2QUFBQUFFQkFBQUtBQVlC
QUFBRUFRQUFDd0FLQVFBQQpCQUVBQUFvQUZnRUFBQUVCQUFBTEFCb0JBQUFCQVFBQUNnQW1BUUFB
QVFFQUFBc0FLZ0VBQUFFQkFBQUtBRFlCQUFBQkFRQUFDd0E2CkFRQUFBUUVBQUFvQVJnRUFBQUVC
QUFBTEFFb0JBQUFCQVFBQUNnQldBUUFBQVFFQUFBc0FXZ0VBQUFFQkFBQUtBSEFCQUFBQkFRQUEK
Q3dCMEFRQUFBUUVBQUFvQW9RQUFBQUNGd0hWbW9RQUFBQUNMQ0lzVkFBQUFBSXNDVTFaWFVXajdE
UUFBYUFBQUFBQlEveFVBQUFBQQppL2hYL3hVQUFBQUFhZ0JxQUl2d2FnQlcveFVBQUFBQWl4MEFB
QUFBZzhRa2hmYWpBQUFBQUhRR1Z2L1RnOFFFaGY5MEJsZi8wNFBFCkJLRUFBQUFBWDE1Ynd3RUFB
QUFNQVFBQUJnQUtBQUFBZ1FBQUFBWUFFZ0FBQUlBQUFBQUdBQ0lBQUFBYkFBQUFCZ0FwQUFBQWZ3
QUEKQUFZQU1nQUFBSDRBQUFBR0FFRUFBQUI5QUFBQUJnQkhBQUFBZkFBQUFBWUFVUUFBQUF3QkFB
QUdBR2dBQUFBTUFRQUFCZ0FFQUFBQQo5UUFBQUlRQUFBQUFBQUFBQUFBQUFIQUFBQUFBQUFBQUFB
QUFBQUFBQUFBWEp3QUFBQUFBQUFRQUFBQVpBQUFBVmdBQUFBQUFBQUFBCkFBQUFBQUFBQUc0bkFB
QUFBQVFBQUFBQUFCb0FBQUJVQUFBQUFBQUFBQUFBQUFBQUFBQUFiaWNBQUFBQUNBQUFBQUFBR3dB
QUFGSUEKQUFBQUFBQUFBQUFBQUFBQUFBQnVKd0FBQUFBTUFBQUFBQUR4QUFBQTFRQUFBRTBBRHhF
QUFBQUFBQUFBQUFBQUFBQndBQUFBQUFBQQpBRzhBQUFCcUVnQUFBQUFBQUFBQUFHMWxaR2xoVUU1
SFUyeHBaR1Z5VkhKaFkydFNhV2RvZEVOaGNFeHZZV1JwYm1kSmJXRm5aUUFjCkFCSVFBQUFBQUFB
QUFBQUFBQUFBREFBQUFBQUFBQUFBQUFBQ0FBQVNBQXdSZ0JBQUFBQUFBQUFBQUdsdFlXZGxBQTRB
T1JFbkFBQUEKQUFBQUFGUVNBQUFPQURrUk1BQUFBQUFBQUFCV0VnQUFEZ0E1RVQ4QUFBQUFBQUFB
WEJJQUFBNEFPUkZZQUFBQUFBQUFBRjRTQUFBTwpBRGtSWWdBQUFBQUFBQUJlRWdBQUFnQUdBQUFB
QVBJQUFBQWdBQUFBQUFBQUFBQUFBQUJ3QUFBQUNBUUFBQUVBQUFBVUFBQUFBQUFBCkFEUUFBSUFN
QUFBQUNRRUFBQWNBdUFBQUFBa0JBQUFMQUx3QUFBQUpBUUFBQ2dBTkFRQUFEQUVBQUFzQUVRRUFB
QXdCQUFBS0FCMEIKQUFBSkFRQUFDd0FoQVFBQUNRRUFBQW9BTFFFQUFBa0JBQUFMQURFQkFBQUpB
UUFBQ2dBOUFRQUFDUUVBQUFzQVFRRUFBQWtCQUFBSwpBRTBCQUFBSkFRQUFDd0JSQVFBQUNRRUFB
QW9BWFFFQUFBa0JBQUFMQUdFQkFBQUpBUUFBQ2dCNEFRQUFDUUVBQUFzQWZBRUFBQWtCCkFBQUtB
S0VBQUFBQWhjQjFacUVBQUFBQWl3aUxGUUFBQUFDTEFsTldWMUZvVHdRQUFHZ0FBQUFBVVA4VkFB
QUFBSXY0Vi84VkFBQUEKQUdvQWFnQ0w4R29BVnY4VkFBQUFBSXNkQUFBQUFJUEVKSVgyb3dBQUFB
QjBCbGIvMDRQRUJJWC9kQVpYLzlPRHhBU2hBQUFBQUY5ZQpXOE1CQUFBQUZBRUFBQVlBQ2dBQUFJ
RUFBQUFHQUJJQUFBQ0FBQUFBQmdBaUFBQUFIQUFBQUFZQUtRQUFBSDhBQUFBR0FESUFBQUIrCkFB
QUFCZ0JCQUFBQWZRQUFBQVlBUndBQUFId0FBQUFHQUZFQUFBQVVBUUFBQmdCb0FBQUFGQUVBQUFZ
QUJBQUFBUFVBQUFDRUFBQUEKQUFBQUFBQUFBQUJ3QUFBQUFBQUFBQUFBQUFBQUFBQUFGeWNBQUFB
QUFBQUVBQUFBR1FBQUFGWUFBQUFBQUFBQUFBQUFBQUFBQUFCdQpKd0FBQUFBRUFBQUFBQUFhQUFB
QVZBQUFBQUFBQUFBQUFBQUFBQUFBQUc0bkFBQUFBQWdBQUFBQUFCc0FBQUJTQUFBQUFBQUFBQUFB
CkFBQUFBQUFBYmljQUFBQUFEQUFBQUFBQThRQUFBTUFBQUFBNEFBOFJBQUFBQUFBQUFBQUFBQUFB
Y0FBQUFBQUFBQUJ2QUFBQWFoSUEKQUFBQUFBQUFBQUJ0WldScFlWQk9SMVJvZFcxaVNXMWhaMlVB
SEFBU0VBQUFBQUFBQUFBQUFBQUFBQXdBQUFBQUFBQUFBQUFBQWdBQQpFZ0FNRVlBUUFBQUFBQUFB
QUFCcGJXRm5aUUFPQURrUkp3QUFBQUFBQUFCVUVnQUFEZ0E1RVRBQUFBQUFBQUFBVmhJQUFBNEFP
UkUvCkFBQUFBQUFBQUZ3U0FBQU9BRGtSV0FBQUFBQUFBQUJlRWdBQURnQTVFV0lBQUFBQUFBQUFY
aElBQUFJQUJnRHlBQUFBSUFBQUFBQUEKQUFBQUFBQUFjQUFBQUFnRUFBQUJBQUFBRkFBQUFBQUFB
QUExQUFDQURBQUFBQkVCQUFBSEFMZ0FBQUFSQVFBQUN3QzhBQUFBRVFFQQpBQW9BK0FBQUFCUUJB
QUFMQVB3QUFBQVVBUUFBQ2dBSUFRQUFFUUVBQUFzQURBRUFBQkVCQUFBS0FCZ0JBQUFSQVFBQUN3
QWNBUUFBCkVRRUFBQW9BS0FFQUFCRUJBQUFMQUN3QkFBQVJBUUFBQ2dBNEFRQUFFUUVBQUFzQVBB
RUFBQkVCQUFBS0FFZ0JBQUFSQVFBQUN3Qk0KQVFBQUVRRUFBQW9BWUFFQUFCRUJBQUFMQUdRQkFB
QVJBUUFBQ2dDaEFBQUFBSVhBZFdhaEFBQUFBSXNJaXhVQUFBQUFpd0pUVmxkUgphSGdFQUFCb0FB
QUFBRkQvRlFBQUFBQ0wrRmYvRlFBQUFBQnFBR29BaS9CcUFGYi9GUUFBQUFDTEhRQUFBQUNEeENT
RjlxTUFBQUFBCmRBWlcvOU9EeEFTRi8zUUdWLy9UZzhRRW9RQUFBQUJmWGx2REFRQUFBQndCQUFB
R0FBb0FBQUNCQUFBQUJnQVNBQUFBZ0FBQUFBWUEKSWdBQUFCMEFBQUFHQUNrQUFBQi9BQUFBQmdB
eUFBQUFmZ0FBQUFZQVFRQUFBSDBBQUFBR0FFY0FBQUI4QUFBQUJnQlJBQUFBSEFFQQpBQVlBYUFB
QUFCd0JBQUFHQUFRQUFBRDFBQUFBaEFBQUFBQUFBQUFBQUFBQWNBQUFBQUFBQUFBQUFBQUFBQUFB
QUJjbkFBQUFBQUFBCkJBQUFBQmtBQUFCV0FBQUFBQUFBQUFBQUFBQUFBQUFBYmljQUFBQUFCQUFB
QUFBQUdnQUFBRlFBQUFBQUFBQUFBQUFBQUFBQUFBQnUKSndBQUFBQUlBQUFBQUFBYkFBQUFVZ0FB
QUFBQUFBQUFBQUFBQUFBQUFHNG5BQUFBQUF3QUFBQUFBUEVBQUFESEFBQUFQd0FQRVFBQQpBQUFB
QUFBQUFBQUFBSEFBQUFBQUFBQUFid0FBQUdvU0FBQUFBQUFBQUFBQWJXVmthV0ZRVGtkVWFIVnRZ
bEJ5WlhOelpXUkpiV0ZuClpRQWNBQklRQUFBQUFBQUFBQUFBQUFBQURBQUFBQUFBQUFBQUFBQUNB
QUFTQUF3UmdCQUFBQUFBQUFBQUFHbHRZV2RsQUE0QU9SRW4KQUFBQUFBQUFBRlFTQUFBT0FEa1JN
QUFBQUFBQUFBQldFZ0FBRGdBNUVUOEFBQUFBQUFBQVhCSUFBQTRBT1JGWUFBQUFBQUFBQUY0UwpB
QUFPQURrUllnQUFBQUFBQUFCZUVnQUFBZ0FHQUFEeUFBQUFJQUFBQUFBQUFBQUFBQUFBY0FBQUFB
Z0VBQUFCQUFBQUZBQUFBQUFBCkFBQTJBQUNBREFBQUFCa0JBQUFIQUxnQUFBQVpBUUFBQ3dDOEFB
QUFHUUVBQUFvQS93QUFBQndCQUFBTEFBTUJBQUFjQVFBQUNnQVAKQVFBQUdRRUFBQXNBRXdFQUFC
a0JBQUFLQUI4QkFBQVpBUUFBQ3dBakFRQUFHUUVBQUFvQUx3RUFBQmtCQUFBTEFETUJBQUFaQVFB
QQpDZ0EvQVFBQUdRRUFBQXNBUXdFQUFCa0JBQUFLQUU4QkFBQVpBUUFBQ3dCVEFRQUFHUUVBQUFv
QWFBRUFBQmtCQUFBTEFHd0JBQUFaCkFRQUFDZ0NoQUFBQUFJWEFkV2FoQUFBQUFJc0lpeFVBQUFB
QWl3SlRWbGRSYUhrREFBQm9BQUFBQUZEL0ZRQUFBQUNMK0ZmL0ZRQUEKQUFCcUFHb0FpL0JxQUZi
L0ZRQUFBQUNMSFFBQUFBQ0R4Q1NGOXFNQUFBQUFkQVpXLzlPRHhBU0YvM1FHVi8vVGc4UUVvUUFB
QUFCZgpYbHZEQVFBQUFDUUJBQUFHQUFvQUFBQ0JBQUFBQmdBU0FBQUFnQUFBQUFZQUlnQUFBQW9B
QUFBR0FDa0FBQUIvQUFBQUJnQXlBQUFBCmZnQUFBQVlBUVFBQUFIMEFBQUFHQUVjQUFBQjhBQUFB
QmdCUkFBQUFKQUVBQUFZQWFBQUFBQ1FCQUFBR0FBUUFBQUQxQUFBQWhBQUEKQUFBQUFBQUFBQUFB
Y0FBQUFBQUFBQUFBQUFBQUFBQUFBQmNuQUFBQUFBQUFCQUFBQUJrQUFBQldBQUFBQUFBQUFBQUFB
QUFBQUFBQQpiaWNBQUFBQUJBQUFBQUFBR2dBQUFGUUFBQUFBQUFBQUFBQUFBQUFBQUFCdUp3QUFB
QUFJQUFBQUFBQWJBQUFBVWdBQUFBQUFBQUFBCkFBQUFBQUFBQUc0bkFBQUFBQXdBQUFBQUFQRUFB
QURGQUFBQVBRQVBFUUFBQUFBQUFBQUFBQUFBQUhBQUFBQUFBQUFBYndBQUFHb1MKQUFBQUFBQUFB
QUFBYldWa2FXRlFUa2RHZFd4c1ZtOXNkVzFsU1cxaFoyVUFIQUFTRUFBQUFBQUFBQUFBQUFBQUFB
d0FBQUFBQUFBQQpBQUFBQWdBQUVnQU1FWUFRQUFBQUFBQUFBQUJwYldGblpRQU9BRGtSSndBQUFB
QUFBQUJVRWdBQURnQTVFVEFBQUFBQUFBQUFWaElBCkFBNEFPUkUvQUFBQUFBQUFBRndTQUFBT0FE
a1JXQUFBQUFBQUFBQmVFZ0FBRGdBNUVXSUFBQUFBQUFBQVhoSUFBQUlBQmdBQUFBRHkKQUFBQUlB
QUFBQUFBQUFBQUFBQUFjQUFBQUFnRUFBQUJBQUFBRkFBQUFBQUFBQUEzQUFDQURBQUFBQ0VCQUFB
SEFMZ0FBQUFoQVFBQQpDd0M4QUFBQUlRRUFBQW9BL1FBQUFDUUJBQUFMQUFFQkFBQWtBUUFBQ2dB
TkFRQUFJUUVBQUFzQUVRRUFBQ0VCQUFBS0FCMEJBQUFoCkFRQUFDd0FoQVFBQUlRRUFBQW9BTFFF
QUFDRUJBQUFMQURFQkFBQWhBUUFBQ2dBOUFRQUFJUUVBQUFzQVFRRUFBQ0VCQUFBS0FFMEIKQUFB
aEFRQUFDd0JSQVFBQUlRRUFBQW9BYUFFQUFDRUJBQUFMQUd3QkFBQWhBUUFBQ2dDaEFBQUFBSVhB
ZFdhaEFBQUFBSXNJaXhVQQpBQUFBaXdKVFZsZFJhTG9EQUFCb0FBQUFBRkQvRlFBQUFBQ0wrRmYv
RlFBQUFBQnFBR29BaS9CcUFGYi9GUUFBQUFDTEhRQUFBQUNECnhDU0Y5cU1BQUFBQWRBWlcvOU9E
eEFTRi8zUUdWLy9UZzhRRW9RQUFBQUJmWGx2REFRQUFBQ3dCQUFBR0FBb0FBQUNCQUFBQUJnQVMK
QUFBQWdBQUFBQVlBSWdBQUFBc0FBQUFHQUNrQUFBQi9BQUFBQmdBeUFBQUFmZ0FBQUFZQVFRQUFB
SDBBQUFBR0FFY0FBQUI4QUFBQQpCZ0JSQUFBQUxBRUFBQVlBYUFBQUFDd0JBQUFHQUFRQUFBRDFB
QUFBaEFBQUFBQUFBQUFBQUFBQWNBQUFBQUFBQUFBQUFBQUFBQUFBCkFCY25BQUFBQUFBQUJBQUFB
QmtBQUFCV0FBQUFBQUFBQUFBQUFBQUFBQUFBYmljQUFBQUFCQUFBQUFBQUdnQUFBRlFBQUFBQUFB
QUEKQUFBQUFBQUFBQUJ1SndBQUFBQUlBQUFBQUFBYkFBQUFVZ0FBQUFBQUFBQUFBQUFBQUFBQUFH
NG5BQUFBQUF3QUFBQUFBUEVBQUFETQpBQUFBUkFBUEVRQUFBQUFBQUFBQUFBQUFBSEFBQUFBQUFB
QUFid0FBQUdvU0FBQUFBQUFBQUFBQWJXVmthV0ZRVGtkR2RXeHNWbTlzCmRXMWxVSEpsYzNObFpF
bHRZV2RsQUJ3QUVoQUFBQUFBQUFBQUFBQUFBQUFNQUFBQUFBQUFBQUFBQUFJQUFCSUFEQkdBRUFB
QUFBQUEKQUFBQWFXMWhaMlVBRGdBNUVTY0FBQUFBQUFBQVZCSUFBQTRBT1JFd0FBQUFBQUFBQUZZ
U0FBQU9BRGtSUHdBQUFBQUFBQUJjRWdBQQpEZ0E1RVZnQUFBQUFBQUFBWGhJQUFBNEFPUkZpQUFB
QUFBQUFBRjRTQUFBQ0FBWUE4Z0FBQUNBQUFBQUFBQUFBQUFBQUFIQUFBQUFJCkJBQUFBUUFBQUJR
QUFBQUFBQUFBT0FBQWdBd0FBQUFwQVFBQUJ3QzRBQUFBS1FFQUFBc0F2QUFBQUNrQkFBQUtBQVFC
QUFBc0FRQUEKQ3dBSUFRQUFMQUVBQUFvQUZBRUFBQ2tCQUFBTEFCZ0JBQUFwQVFBQUNnQWtBUUFB
S1FFQUFBc0FLQUVBQUNrQkFBQUtBRFFCQUFBcApBUUFBQ3dBNEFRQUFLUUVBQUFvQVJBRUFBQ2tC
QUFBTEFFZ0JBQUFwQVFBQUNnQlVBUUFBS1FFQUFBc0FXQUVBQUNrQkFBQUtBR3dCCkFBQXBBUUFB
Q3dCd0FRQUFLUUVBQUFvQW9RQUFBQUNGd0hWbW9RQUFBQUNMQ0lzVkFBQUFBSXNDVTFaWFVXakhB
d0FBYUFBQUFBQlEKL3hVQUFBQUFpL2hYL3hVQUFBQUFhZ0JxQUl2d2FnQlcveFVBQUFBQWl4MEFB
QUFBZzhRa2hmYWpBQUFBQUhRR1Z2L1RnOFFFaGY5MApCbGYvMDRQRUJLRUFBQUFBWDE1Ynd3RUFB
QUEwQVFBQUJnQUtBQUFBZ1FBQUFBWUFFZ0FBQUlBQUFBQUdBQ0lBQUFBZUFBQUFCZ0FwCkFBQUFm
d0FBQUFZQU1nQUFBSDRBQUFBR0FFRUFBQUI5QUFBQUJnQkhBQUFBZkFBQUFBWUFVUUFBQURRQkFB
QUdBR2dBQUFBMEFRQUEKQmdBRUFBQUE5UUFBQUlRQUFBQUFBQUFBQUFBQUFIQUFBQUFBQUFBQUFB
QUFBQUFBQUFBWEp3QUFBQUFBQUFRQUFBQVpBQUFBVmdBQQpBQUFBQUFBQUFBQUFBQUFBQUc0bkFB
QUFBQVFBQUFBQUFCb0FBQUJVQUFBQUFBQUFBQUFBQUFBQUFBQUFiaWNBQUFBQUNBQUFBQUFBCkd3
QUFBRklBQUFBQUFBQUFBQUFBQUFBQUFBQnVKd0FBQUFBTUFBQUFBQUR4QUFBQXlRQUFBRUVBRHhF
QUFBQUFBQUFBQUFBQUFBQncKQUFBQUFBQUFBRzhBQUFCcUVnQUFBQUFBQUFBQUFHMWxaR2xoVUU1
SFZHOW5aMnhsUTJGd2RHbHZibk5KYldGblpRQWNBQklRQUFBQQpBQUFBQUFBQUFBQUFEQUFBQUFB
QUFBQUFBQUFDQUFBU0FBd1JnQkFBQUFBQUFBQUFBR2x0WVdkbEFBNEFPUkVuQUFBQUFBQUFBRlFT
CkFBQU9BRGtSTUFBQUFBQUFBQUJXRWdBQURnQTVFVDhBQUFBQUFBQUFYQklBQUE0QU9SRllBQUFB
QUFBQUFGNFNBQUFPQURrUllnQUEKQUFBQUFBQmVFZ0FBQWdBR0FBQUFBUElBQUFBZ0FBQUFBQUFB
QUFBQUFBQndBQUFBQ0FRQUFBRUFBQUFVQUFBQUFBQUFBRGtBQUlBTQpBQUFBTVFFQUFBY0F1QUFB
QURFQkFBQUxBTHdBQUFBeEFRQUFDZ0FCQVFBQU5BRUFBQXNBQlFFQUFEUUJBQUFLQUJFQkFBQXhB
UUFBCkN3QVZBUUFBTVFFQUFBb0FJUUVBQURFQkFBQUxBQ1VCQUFBeEFRQUFDZ0F4QVFBQU1RRUFB
QXNBTlFFQUFERUJBQUFLQUVFQkFBQXgKQVFBQUN3QkZBUUFBTVFFQUFBb0FVUUVBQURFQkFBQUxB
RlVCQUFBeEFRQUFDZ0JzQVFBQU1RRUFBQXNBY0FFQUFERUJBQUFLQUtFQQpBQUFBaGNCMVpxRUFB
QUFBaXdpTEZRQUFBQUNMQWxOV1YxRm9rUU1BQUdnQUFBQUFVUDhWQUFBQUFJdjRWLzhWQUFBQUFH
b0FhZ0NMCjhHb0FWdjhWQUFBQUFJc2RBQUFBQUlQRUpJWDJvd0FBQUFCMEJsYi8wNFBFQklYL2RB
WlgvOU9EeEFTaEFBQUFBRjllVzhNQkFBQUEKUEFFQUFBWUFDZ0FBQUlFQUFBQUdBQklBQUFDQUFB
QUFCZ0FpQUFBQUh3QUFBQVlBS1FBQUFIOEFBQUFHQURJQUFBQitBQUFBQmdCQgpBQUFBZlFBQUFB
WUFSd0FBQUh3QUFBQUdBRkVBQUFBOEFRQUFCZ0JvQUFBQVBBRUFBQVlBQkFBQUFQVUFBQUNFQUFB
QUFBQUFBQUFBCkFBQndBQUFBQUFBQUFBQUFBQUFBQUFBQUZ5Y0FBQUFBQUFBRUFBQUFHUUFBQUZZ
QUFBQUFBQUFBQUFBQUFBQUFBQUJ1SndBQUFBQUUKQUFBQUFBQWFBQUFBVkFBQUFBQUFBQUFBQUFB
QUFBQUFBRzRuQUFBQUFBZ0FBQUFBQUJzQUFBQlNBQUFBQUFBQUFBQUFBQUFBQUFBQQpiaWNBQUFB
QURBQUFBQUFBOFFBQUFOQUFBQUJJQUE4UkFBQUFBQUFBQUFBQUFBQUFjQUFBQUFBQUFBQnZBQUFB
YWhJQUFBQUFBQUFBCkFBQnRaV1JwWVZCT1IxUnZaMmRzWlVOaGNIUnBiMjV6VUhKbGMzTmxaRWx0
WVdkbEFCd0FFaEFBQUFBQUFBQUFBQUFBQUFBTUFBQUEKQUFBQUFBQUFBQUlBQUJJQURCR0FFQUFB
QUFBQUFBQUFhVzFoWjJVQURnQTVFU2NBQUFBQUFBQUFWQklBQUE0QU9SRXdBQUFBQUFBQQpBRllT
QUFBT0FEa1JQd0FBQUFBQUFBQmNFZ0FBRGdBNUVWZ0FBQUFBQUFBQVhoSUFBQTRBT1JGaUFBQUFB
QUFBQUY0U0FBQUNBQVlBCjhnQUFBQ0FBQUFBQUFBQUFBQUFBQUhBQUFBQUlCQUFBQVFBQUFCUUFB
QUFBQUFBQU9nQUFnQXdBQUFBNUFRQUFCd0M0QUFBQU9RRUEKQUFzQXZBQUFBRGtCQUFBS0FBZ0JB
QUE4QVFBQUN3QU1BUUFBUEFFQUFBb0FHQUVBQURrQkFBQUxBQndCQUFBNUFRQUFDZ0FvQVFBQQpP
UUVBQUFzQUxBRUFBRGtCQUFBS0FEZ0JBQUE1QVFBQUN3QThBUUFBT1FFQUFBb0FTQUVBQURrQkFB
QUxBRXdCQUFBNUFRQUFDZ0JZCkFRQUFPUUVBQUFzQVhBRUFBRGtCQUFBS0FIQUJBQUE1QVFBQUN3
QjBBUUFBT1FFQUFBb0FpMUVFTThDRCtnd1BoOEVBQUFEL0pKVUEKQUFBQWkwRUkwZWlvQVhRUDZR
QUFBQUNMU1FqUjZmYkJBWFR4NlFBQUFBQ0xVUWpSNnZiQ0FYUUY2UUFBQUFEcEFBQUFBSXRCQ05I
bwpxQUYwQmVrQUFBQUE2UUFBQUFDTFNRalI2ZmJCQVhRRjZRQUFBQURwQUFBQUFJdFJDTkhxOXNJ
QmRBWHBBQUFBQU9rQUFBQUFpMEVJCjBlaW9BWFFGNlFBQUFBRHBBQUFBQUl0SkNOSHA5c0VCZEFY
cEFBQUFBT2tBQUFBQWkxRUkwZXIyd2dGMEJla0FBQUFBNlFBQUFBQ0wKUVFqUjZLZ0JkQVhwQUFB
QUFPa0FBQUFBd3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFBUkFBQUFUUUVBQUFZQUh3QUFBREVCQUFBVUFDNEFBQUE1
QVFBQUZBQTlBQUFBS1FFQUFCUUFRZ0FBCkFDRUJBQUFVQUZBQUFBQ1pBQUFBRkFCVkFBQUFrUUFB
QUJRQVpBQUFBTGtBQUFBVUFHa0FBQUN4QUFBQUZBQjRBQUFBcVFBQUFCUUEKZlFBQUFLRUFBQUFV
QUlzQUFBQ0pBQUFBRkFDUUFBQUFld0FBQUJRQW53QUFBTWtBQUFBVUFLUUFBQURCQUFBQUZBQ3pB
QUFBMlFBQQpBQlFBdUFBQUFORUFBQUFVQU1ZQUFBQVpBUUFBRkFETEFBQUFFUUVBQUJRQTBBQUFB
RVlCQUFBR0FOUUFBQUJLQVFBQUJnRFlBQUFBClNBRUFBQVlBM0FBQUFFVUJBQUFHQU9BQUFBQkVB
UUFBQmdEa0FBQUFRZ0VBQUFZQTZBQUFBRU1CQUFBR0FPd0FBQUJDQVFBQUJnRHcKQUFBQVFnRUFB
QVlBOUFBQUFFc0JBQUFHQVBnQUFBQk1BUUFBQmdEOEFBQUFTUUVBQUFZQUFBRUFBRWNCQUFBR0FB
UUFBQUQxQUFBQQpKQUFBQUFBQUFBQUFBQUFBQkFFQUFBQUFBQUFBQUFBQUFBQUFBQmNuQUFBQUFB
QUFCQUFBQVBFQUFBQXFBUUFBUmdBUUVRQUFBQUFBCkFBQUFBQUFBQUFRQkFBQUFBQUFBendBQUFJ
RVFBQUFBQUFBQUFBQUFUV1ZrYVdGTVpXZGhZM2xWU1VsdFlXZGxSV3hsYldWdWREbzYKYVcxaFoy
VUFIQUFTRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0FBRFFBTUVRQUFBQUFBQUFB
QUFBQUFEd0FGRVFBQQpBQUFBQUFBa1RFNHhNUUFQQUFVUkFBQUFBQUFBQUNSTVRqRXdBQTRBQlJF
QUFBQUFBQUFBSkV4T09RQU9BQVVSQUFBQUFBQUFBQ1JNClRqZ0FEZ0FGRVFBQUFBQUFBQUFrVEU0
M0FBNEFCUkVBQUFBQUFBQUFKRXhPTmdBT0FBVVJBQUFBQUFBQUFDUk1UalVBRGdBRkVRQUEKQUFB
QUFBQWtURTQwQUE0QUJSRUFBQUFBQUFBQUpFeE9Nd0FPQUFVUkFBQUFBQUFBQUNSTVRqSUFEUUFH
RVhzUUFBQVNBSFJvYVhNQQpBZ0FHQUFBQThnQUFBSUFBQUFBQUFBQUFBQUFBQUFRQkFBQUlCQUFB
RFFBQUFIUUFBQUFBQUFBQVR3QUFnQUFBQUFCU0FBQ0FGUUFBCkFGUUFBSUFqQUFBQVZ3QUFnRElB
QUFCYUFBQ0FSZ0FBQUYwQUFJQlpBQUFBWUFBQWdHMEFBQUJqQUFDQWdRQUFBR1lBQUlDVUFBQUEK
YVFBQWdLZ0FBQUJzQUFDQXZBQUFBRzhBQUlEUEFBQUFld0FBZ0F3QUFBQkJBUUFBQndCWUFBQUFR
UUVBQUFzQVhBQUFBRUVCQUFBSwpBS1lBQUFCTkFRQUFDd0NxQUFBQVRRRUFBQW9Bc1FBQUFFd0JB
QUFMQUxVQUFBQk1BUUFBQ2dEQ0FBQUFTd0VBQUFzQXhnQUFBRXNCCkFBQUtBTk1BQUFCS0FRQUFD
d0RYQUFBQVNnRUFBQW9BNHdBQUFFa0JBQUFMQU9jQUFBQkpBUUFBQ2dEekFBQUFTQUVBQUFzQTl3
QUEKQUVnQkFBQUtBQU1CQUFCSEFRQUFDd0FIQVFBQVJ3RUFBQW9BRXdFQUFFWUJBQUFMQUJjQkFB
QkdBUUFBQ2dBakFRQUFSUUVBQUFzQQpKd0VBQUVVQkFBQUtBRE1CQUFCRUFRQUFDd0EzQVFBQVJB
RUFBQW9BUXdFQUFFTUJBQUFMQUVjQkFBQkRBUUFBQ2dCc0FRQUFRUUVBCkFBc0FjQUVBQUVFQkFB
QUtBRldMN0lQa3dJUHNkTm51VTFhTDhkeFdHRmVKZENRODMrRDJ4RVI3TU4xR0VOeDJHTjFVSkVE
ZTJkL2cKOXNSQmRTSG9BQUFBQU5ubzNGd2tRSWxFSkREZjRQYkVSSG9VNkFBQUFBRHJFdDFjSkVE
b0FBQUFBSWxFSkREb0FBQUFBSXRORElzVwppMzBVaTNVSWkxMFlpMUlRZyt3UWlVUWtPSXZFaVFp
TFRSQ0pTQVNMVENSTWlYZ0lWb2xZRFAvU2pVUWthRlpRL3hVQUFBQUEyZWlMCkNJdFFCSWxNSkZq
WVZDUllpMGdJaVZRa1hJdFFESWxNSkdDTFNCQ0pWQ1JraTFBVTMrRFo3b1BFQ1BiRVJJbE1KR0NK
VkNSa3gwUWsKT0FBQUFBQVBpdElEQUFEWVZDUlUzK0QyeEVRUGlzTURBQURZWENSWTMrRDJ4RVFQ
aXJZREFBRFpSQ1JjM2VIZjROM1o5c1JFZXhYWgpCUUFBQUFEYTZkL2c5c1JFRDRxV0F3QUE2d0xk
Mk5sRkVJUHNDTmxjSkFTTHp0bEZETVpFSkNzQjJSd2tVZjhWQUFBQUFJUEVETmtGCkFBQUFBSVBz
Q05sY0pBVFo2TmtjSkZiL0ZRQUFBQUNMVlF4UmkwMFFpOFNKRUlsSUJJbDRDSWxZRFA4VkFBQUFB
Tm5nZzhRSTJWd2sKQk5udTJSd2tWdjhWQUFBQUFJdFZERkdMVFJDTHhJa1FpVWdFaVhnSWlWZ00v
eFVBQUFBQTJWd2tOSXRWREl0TkVJdkVpUkNKU0FTSgplQWlKV0F6L0ZRQUFBQURaWENSRWkxUWtR
RkwvRlFBQUFBQ0Z3SWxFSkVEYlJDUkFmUWJZQlFBQUFBRFlUQ1E0aTBRa1JGRGRYQ1JnCi94VUFB
QUFBaGNDSlJDUkUyMFFrUkgwRzJBVUFBQUFBM0h3a1lJUEVFTmxjSkRUWlJDUTAzUndrNkFBQUFB
RFpYQ1EwMlVRa05JdE0KSkRqWlhDUTBnOFFJMmU1UjJWUWtWSVBzRU5sY0pHaUx4TmxFSkVDTFZD
UmtpMHdrYU5sY0pHelpSQ1E0aVJDTFZDUnMyVndrY0lsSQpCSXRNSkhDSlVBaFdpVWdNL3hVQUFB
QUFpMVFrUUZML0ZRQUFBQUNGd0lsRUpFemJSQ1JNZlFiWUJRQUFBQURZVENSQWkwUWtSRkRkClhD
Um8yVVFrVk5oa0pFemRYQ1J3L3hVQUFBQUFoY0NKUkNSUTIwUWtVSDBHMkFVQUFBQUEzSHdrYUlQ
RUdObGNKRGpaUkNRNDNHd2sKV05sY0pEalpSQ1E0M1J3azZBQUFBQUNMVENRdzJWd2tPTmxFSkRp
RHhBalpYQ1F3VWRsRUpEU0Q3QkRZUkNSQWk4UlcyVlFrYUl0VQpKR2paN29rUTJWd2tiSXRNSkd5
SlNBVFliQ1JNMlZ3a2NJdFVKSERaUkNROGlWQUkyVndrZEl0TUpIU0pTQXovRlFBQUFBRFpSQ1JJ
CjNFd2tXSVBFRU5sY0pEelpSQ1E4M1J3azZBQUFBQURaWENROGc4UUkyVVFrTk5sY0pEVFpSQ1F3
MlVRa05ObkEzdXJaeWRsY0pERFoKN3RuQTNlcmY0UGJFUkErTGhnQUFBTmxFSkN4VzJWd2tWTmxj
SkZqWlhDUmMyVVFrS05sY0pHRC9GUUFBQUFDTFZDUlVpMHdrV0lQcwpESXZFaVJDTFZDUm9pVWdF
aTB3a2JJbFFDRmFKU0F6L0ZRQUFBQUNEeEJUb0FBQUFBSXRVSkZDTFRDUlVVSVBzRUl2RWlSQ0xW
Q1JzCmlVZ0VpMHdrY0lsUUNGYUpTQXovRlFBQUFBQlcveFVBQUFBQTJVUWtVTm51ZzhRYzJjRFpS
Q1F3M2VIZjROM1o5c1JFRDR1eEFBQUEKMlVRa0xGYmV3OW5LMlZ3a1ZObGNKRmpaWENSYzJVUWtL
TmxjSkdEL0ZRQUFBQUNMVkNSVWkwd2tXSVBzREl2RWlSQ0xWQ1JvaVVnRQppMHdrYklsUUNGYUpT
QXovRlFBQUFBQ0R4QlRvQUFBQUFJdFVKRkNMVENSVVVJUHNFSXZFaVJDTFZDUnNpVWdFaTB3a2NJ
bFFDRmFKClNBei9GUUFBQUFCVy94VUFBQUFBZzhRYzZ6SGQyZDNZYWdCVGk4WlhVTVpFSkRNQS94
VUFBQUFBVUlsRUpFei9GUUFBQUFDRHhCU0wKOE9sby9QLy8zZHJkMk4zWWdId2tJd0IxTDR0MEpE
aUxWUXlMVFJCV2crd1FpOFNKRUl0VkNJbElCSWw0Q0ZLSldBei9GUUFBQUFCVwoveFVBQUFBQWc4
UWNpMHdrUElzQmkxVUlpMEFVVXYvUVgxNWJpK1Zkd2hRQU1nQUFBT0VBQUFBVUFFZ0FBQUFCQVFB
QUZBQlRBQUFBCjZRQUFBQlFBWEFBQUFBa0JBQUFVQUpjQUFBQnVBUUFBQmdBUkFRQUFad0VBQUFZ
QVFBRUFBR1FCQUFBR0FFa0JBQUJuQVFBQUJnQmMKQVFBQVl3RUFBQVlBZGdFQUFHSUJBQUFHQUlz
QkFBQmtBUUFBQmdDbEFRQUFZZ0VBQUFZQXdnRUFBR0VCQUFBR0FORUJBQUJnQVFBQQpCZ0RqQVFB
QVh3RUFBQVlBOWdFQUFGd0JBQUFHQUFnQ0FBQmZBUUFBQmdBZkFnQUFjUUFBQUJRQWRBSUFBRnNC
QUFBR0FIOENBQUJnCkFRQUFCZ0NSQWdBQVh3RUFBQVlBc0FJQUFGd0JBQUFHQU1JQ0FBQmZBUUFB
QmdEbEFnQUFjUUFBQUJRQVFnTUFBRnNCQUFBR0FGMEQKQUFCeEFBQUFGQUN1QXdBQVdnRUFBQVlB
MVFNQUFGa0JBQUFHQU4wREFBRHhBQUFBRkFBRkJBQUFXQUVBQUFZQURBUUFBRmNCQUFBRwpBRTBF
QUFCYUFRQUFCZ0IwQkFBQVdRRUFBQVlBZkFRQUFQa0FBQUFVQUtRRUFBQllBUUFBQmdDckJBQUFW
d0VBQUFZQXhnUUFBRllCCkFBQUdBTkVFQUFCVkFRQUFCZ0FOQlFBQVZBRUFBQVlBRkFVQUFGTUJB
QUFHQUFRQUFBRDFBQUFBUkFBQUFBQUFBQUFBQUFBQU13VUEKQUhRQUFBQVVBQUFBQUFBQUFOWW5B
QUFYQUFnQUJBQUFBQXdBQUFBbkJRQUFkQUFBQUJRQUFBQUFBQUFBUlNnQUFBc0FEQUFBQUFBQQo4
UUFBQUc4REFBQklBQkFSQUFBQUFBQUFBQUFBQUFBQU13VUFBQmNBQUFBcUJRQUFqeEFBQUFBQUFB
QUFBQUZOWldScFlVeGxaMkZqCmVWVkpWR2x0Wld4cGJtVlRiR2xrWlhJNk9uQmhhVzUwQUJ3QUVo
QjBBQUFBQUFBQUFBQUFBQUFNQUFBQUFBQUFBQUFBQUFJQUFBMEEKQmhHT0VBQUFFZ0IwYUdsekFC
UUFFUkVJQUFBQUtSQUFBQllBWTI5dWRHVjRkQUFSQUJFUkRBQUFBQTRRQUFBV0FISmxZM1FBR2dB
TApFYVAvLy84d0FBQUFZMkZ1UkhKaGQwUnBjbVZqZEd4NUFCVUFDeEhRLy8vL0VSQUFBR04xY25K
bGJuUkRWRTBBRUFBTEViai8vLzl0CkVnQUFiR0Y1WlhJQUZRQUxFYVQvLy85QUFBQUFaR1Z6ZEVo
bGFXZG9kQUFZQUFzUnJQLy8vMEFBQUFCa1pYTjBUR1ZtZEZkcFpIUm8KQUJZQUN4RzAvLy8vUUFB
QUFHeHZZV1JsWkZkcFpIUm9BQkVBQ3hIQS8vLy9RUUFBQUd4dllXUmxaQUFVQUFzUnRQLy8vMEFB
QUFCawpaWE4wVjJsa2RHZ0FGUUFMRWFqLy8vK0FFQUFBY21sbmFIUkpiV0ZuWlFBWkFBc1JzUC8v
LzBBQUFBQnlaVzFoYVc1cGJtZFhhV1IwCmFBQVVBQXNSc1AvLy80QVFBQUJzWldaMFNXMWhaMlVB
R2dBTEViRC8vLzlBQUFBQVpHVnpkRTFwWkdSc1pWZHBaSFJvQUE0QU9SR04KQUFBQUFBQUFBSklR
QUFBT0FEa1JsUUFBQUFBQUFBQnJFZ0FBRGdBNUVUNEJBQUFBQUFBQVlCSUFBQTRBT1JGYUFRQUFB
QUFBQUdBUwpBQUFPQURrUmRBRUFBQUFBQUFCaUVnQUFEZ0E1RVlrQkFBQUFBQUFBWUJJQUFBNEFP
UkdqQVFBQUFBQUFBR0lTQUFBT0FEa1J3QUVBCkFBQUFBQUJpRWdBQURnQTVFYzhCQUFBQUFBQUFh
UklBQUE0QU9SSDBBUUFBQUFBQUFHa1NBQUFPQURrUmNnSUFBQUFBQUFCa0VnQUEKRGdBNUVYMENB
QUFBQUFBQWFSSUFBQTRBT1JHdUFnQUFBQUFBQUdrU0FBQU9BRGtSUUFNQUFBQUFBQUJrRWdBQURn
QTVFYXdEQUFBQQpBQUFBakJBQUFBNEFPUkhUQXdBQUFBQUFBSFVTQUFBT0FEa1JBd1FBQUFBQUFB
QmtFZ0FBRGdBNUVRb0VBQUFBQUFBQWpCQUFBQTRBCk9SRkxCQUFBQUFBQUFJd1FBQUFPQURrUmNn
UUFBQUFBQUFCMUVnQUFEZ0E1RWFJRUFBQUFBQUFBWkJJQUFBNEFPUkdwQkFBQUFBQUEKQUl3UUFB
QU9BRGtSeEFRQUFBQUFBQUJ5RWdBQURnQTVFYzhFQUFBQUFBQUFkQklBQUE0QU9SRUxCUUFBQUFB
QUFIY1NBQUFPQURrUgpFZ1VBQUFBQUFBQjRFZ0FBRGdBNUVTZ0ZBQUFBQUFBQWt4QUFBQUlBQmdB
QThnQUFBSkFCQUFBQUFBQUFBQUFBQURNRkFBQUlCQUFBCkx3QUFBSVFCQUFBQUFBQUFmd0FBZ0Fr
QUFBQ0RBQUNBS0FBQUFJUUFBSUF4QUFBQWhRQUFnRFlBQUFDR0FBQ0FUZ0FBQUlNQUFJQlMKQUFB
QWlBQUFnRnNBQUFDSkFBQ0FZQUFBQUl3QUFJQ1BBQUFBamdBQWdKc0FBQUNUQUFDQUpnRUFBSmdB
QUlCSEFRQUFtZ0FBZ0dBQgpBQUNiQUFDQWp3RUFBSjBBQUlDdEFRQUFuZ0FBZ01vQkFBQ2dBQUNB
S3dJQUFLRUFBSUI0QWdBQW93QUFnS0lDQUFDa0FBQ0F4Z0lBCkFLTUFBSURLQWdBQXBBQUFnT2tD
QUFDbkFBQ0FSZ01BQUtrQUFJQndBd0FBcWdBQWdJSURBQUNyQUFDQWt3TUFBS3dBQUlDWEF3QUEK
clFBQWdMSURBQUN1QUFDQTNBTUFBSzhBQUlBSkJBQUFzQUFBZ0JrRUFBQ3pBQUNBTGdRQUFMUUFB
SUF5QkFBQXRRQUFnRkVFQUFDMgpBQUNBZXdRQUFMY0FBSUNvQkFBQXVBQUFnTFFFQUFDVEFBQ0F1
QVFBQUpVQUFJREtCQUFBbGdBQWdOb0VBQUNYQUFDQTN3UUFBTGdBCkFJRGxCQUFBdXdBQWdPd0VB
QUM4QUFDQUVRVUFBTDBBQUlBYkJRQUF3QUFBZ0NvRkFBREJBQUNBREFBQUFGSUJBQUFIQUhnQUFB
QlMKQVFBQUN3QjhBQUFBVWdFQUFBb0FGd0lBQUZJQkFBQUxBQnNDQUFCU0FRQUFDZ0FuQWdBQVVn
RUFBQXNBS3dJQUFGSUJBQUFLQURjQwpBQUJTQVFBQUN3QTdBZ0FBVWdFQUFBb0FSd0lBQUZJQkFB
QUxBRXNDQUFCU0FRQUFDZ0JYQWdBQVVnRUFBQXNBV3dJQUFGSUJBQUFLCkFHY0NBQUJTQVFBQUN3
QnJBZ0FBVWdFQUFBb0Fkd0lBQUZJQkFBQUxBSHNDQUFCU0FRQUFDZ0NIQWdBQVVnRUFBQXNBaXdJ
QUFGSUIKQUFBS0FKY0NBQUJTQVFBQUN3Q2JBZ0FBVWdFQUFBb0Fwd0lBQUZJQkFBQUxBS3NDQUFC
U0FRQUFDZ0MzQWdBQVVnRUFBQXNBdXdJQQpBRklCQUFBS0FNY0NBQUJTQVFBQUN3RExBZ0FBVWdF
QUFBb0Exd0lBQUZJQkFBQUxBTnNDQUFCU0FRQUFDZ0RuQWdBQVVnRUFBQXNBCjZ3SUFBRklCQUFB
S0FQY0NBQUJTQVFBQUN3RDdBZ0FBVWdFQUFBb0FCd01BQUZJQkFBQUxBQXNEQUFCU0FRQUFDZ0FY
QXdBQVVnRUEKQUFzQUd3TUFBRklCQUFBS0FDY0RBQUJTQVFBQUN3QXJBd0FBVWdFQUFBb0FOd01B
QUZJQkFBQUxBRHNEQUFCU0FRQUFDZ0JIQXdBQQpVZ0VBQUFzQVN3TUFBRklCQUFBS0FGY0RBQUJT
QVFBQUN3QmJBd0FBVWdFQUFBb0Fad01BQUZJQkFBQUxBR3NEQUFCU0FRQUFDZ0IzCkF3QUFVZ0VB
QUFzQWV3TUFBRklCQUFBS0FJY0RBQUJTQVFBQUN3Q0xBd0FBVWdFQUFBb0Fsd01BQUZJQkFBQUxB
SnNEQUFCU0FRQUEKQ2dDbkF3QUFVZ0VBQUFzQXF3TUFBRklCQUFBS0FMY0RBQUJTQVFBQUN3QzdB
d0FBVWdFQUFBb0EwQU1BQUZJQkFBQUxBTlFEQUFCUwpBUUFBQ2dBQUFJQlBBQUNBdndBQUFBQUFB
SUEvQUFBQUFBQUE4RCtMd2NjQUFBQUFBTU1FQUFBQU1nQUFBQVlBQkFBQUFQVUFBQUFrCkFBQUFB
QUFBQUFBQUFBQUpBQUFBQUFBQUFBQUFBQUFBQUFBQUZ5Y0FBQUlBQUFBRUFBQUE4UUFBQUhjQUFB
QkVBQkFSQUFBQUFBQUEKQUFBQUFBQUFDUUFBQUFJQUFBQUlBQUFBSnhBQUFBQUFBQUFBQUFCTlpX
UnBZVlZKUld4bGJXVnVkRG82VFdWa2FXRlZTVVZzWlcxbApiblFBSEFBU0VBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFnQ2dBQURRQUdFU01RQUFBU0FIUm9hWE1BQWdBR0FBQU1BQUFBCmRn
RUFBQWNBV0FBQUFIWUJBQUFMQUZ3QUFBQjJBUUFBQ2dDTHdjY0FBQUFBQU1NRUFBQUFmZ0VBQUFZ
QUJBQUFBUFVBQUFBa0FBQUEKQUFBQUFBQUFBQUFKQUFBQUFBQUFBQUFBQUFBQUFBQUFGeWNBQUFJ
QUFBQUVBQUFBOFFBQUFJVUFBQUJTQUJBUkFBQUFBQUFBQUFBQQpBQUFBQ1FBQUFBSUFBQUFJQUFB
QVZSQUFBQUFBQUFBQUFBQk5aV1JwWVZWSlZHbHRaV3hwYm1WVGJHbGtaWEk2T2sxbFpHbGhWVWxV
CmFXMWxiR2x1WlZOc2FXUmxjZ0FjQUJJUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FL
QUFBTkFBWVJUQkFBQUJJQWRHaHAKY3dBQ0FBWUFBQUFBREFBQUFIc0JBQUFIQUZnQUFBQjdBUUFB
Q3dCY0FBQUFld0VBQUFvQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQQpBQUFBQUFBQUFBQUFBSUFC
QUFBR0FBUUFBQUEyQUFBQUJnQUlBQUFBUFFBQUFBWUFEQUFBQUVNQUFBQUdBQkFBQUFBM0FBQUFC
Z0FVCkFBQUFPQUFBQUFZQXh3RUFBQUFBd3dJQUFBQXlBQUFBQmdBRUFBQUE5UUFBQUNRQUFBQUFB
QUFBQUFBQUFBY0FBQUFBQUFBQUFBQUEKQUFBQUFBQVhKd0FBQUFBQUFBUUFBQUR4QUFBQWhnQUFB
Rk1BRUJFQUFBQUFBQUFBQUFBQUFBQUhBQUFBQUFBQUFBWUFBQUJWRUFBQQpBQUFBQUFBQUFFMWxa
R2xoVlVsVWFXMWxiR2x1WlZOc2FXUmxjam82ZmsxbFpHbGhWVWxVYVcxbGJHbHVaVk5zYVdSbGNn
QWNBQklRCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FLQUFBTkFBWVJUQkFBQUJJQWRH
aHBjd0FDQUFZQUFBQU1BQUFBaGdFQUFBY0EKV0FBQUFJWUJBQUFMQUZ3QUFBQ0dBUUFBQ2dEMlJD
UUVBVmFMOGNjR0FBQUFBSFFKVnVnQUFBQUFnOFFFaThaZXdnUUFDZ0FBQURJQQpBQUFHQUJJQUFB
QlpBQUFBRkFBRUFBQUE5UUFBQUVRQUFBQUFBQUFBQUFBQUFCOEFBQUFBQUFBQUJBQUFBQUFBQUFB
WEp3QUFDQUFBCkFBUUFBQUFHQUFBQUZnQUFBQUFBQUFBRUFBQUFBQUFBQUJjbkFBQUNBQVFBQUFB
QUFQRUFBQUNNQUFBQVdRQVFFUUFBQUFBQUFBQUEKQUFBQUFCOEFBQUFJQUFBQUhBQUFBRmtRQUFB
QUFBQUFBQUFBVFdWa2FXRlZTVlJwYldWc2FXNWxVMnhwWkdWeU9qcGdjMk5oYkdGeQpJR1JsYkdW
MGFXNW5JR1JsYzNSeWRXTjBiM0luQUJ3QUVoQUFBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQUFB
SUFJQUFBMEFCaEZNCkVBQUFFZ0IwYUdsekFBSUFCZ0FNQUFBQWZ3RUFBQWNBZUFBQUFIOEJBQUFM
QUh3QUFBQi9BUUFBQ2dDRDdCQlRpMXdrSEZXTGJDUWsKVmxlTGZDUWtnK3dRaThTTDhZdE1KRUNM
Rm90U0VJa1lpV2dFaVVnSWkwd2tSSWxJREZlTHp2L1MyVVFrTElQc0NObGNKQVRaUkNRdwoyUndr
Vi84VkFBQUFBTmtGQUFBQUFJUEVCTmxjSkFUWjZOa2NKRmYvRlFBQUFBQ0xWQ1JBVVl0TUpFQ0x4
SWtZaVdnRWlVZ0lpVkFNCi94VUFBQUFBMmVDRHhBalpYQ1FFMmU3WkhDUlgveFVBQUFBQTJlNkxW
Q1JBMlZRa0hGSFpYQ1FraTB3a1FJdkVpUmlKYUFTSlNBaUoKVUF6L0ZRQUFBQURaWENRb2kwd2tR
SXRVSkVTTHhJa1lpV2dFaVVnSWlWQU0veFVBQUFBQTJWd2tMSVBFRUl2TzZBQUFBQUNMVENRUQpV
SVBzRUl2RWlRaUxWQ1FvaTB3a0xJbFFCSXRVSkRDSlNBaFhpVkFNL3hVQUFBQUFpd2FMVUJTRHhC
aFhpODcvMGw5ZVhWdUR4QkRDCkZBQk1BQUFBWkFFQUFBWUFVZ0FBQUdjQkFBQUdBR1VBQUFCakFR
QUFCZ0NCQUFBQVlnRUFBQVlBbGdBQUFHUUJBQUFHQUx3QUFBQmgKQVFBQUJnRGJBQUFBWWdFQUFB
WUE2UUFBQUVFQkFBQVVBQkVCQUFCYkFRQUFCZ0FFQUFBQTlRQUFBR1FBQUFBQUFBQUFBQUFBQUN3
QgpBQUFRQUFBQUZBQUFBQUFBQUFBWEp3QUFHZ0FJQUFRQUFBQUVBQUFBS0FFQUFCQUFBQUFVQUFB
QUFBQUFBTWNvQUFBV0FBd0FBQUFBCkFBa0FBQUFqQVFBQUVBQUFBQlFBQUFBQUFBQUFNQ2tBQUJF
QUVBQUFBQUFBOFFBQUFDNEJBQUJHQUJBUkFBQUFBQUFBQUFBQUFBQUEKTEFFQUFCb0FBQUFpQVFB
QWVSQUFBQUFBQUFBQUFBQk5aV1JwWVV4bFoyRmplVlZKU1cxaFoyVkZiR1Z0Wlc1ME9qcHdZV2x1
ZEFBYwpBQklRRUFBQUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFBQUFBQUNBQUFOQUFZUmVCQUFBQklB
ZEdocGN3QVNBQXNSQkFBQUFDa1FBQUJqCmIyNTBaWGgwQUE4QUN4RUlBQUFBRGhBQUFISmxZM1FB
RGdBNUVUVUFBQUFBQUFBQWZSQUFBQTRBT1JGS0FBQUFBQUFBQUdBU0FBQU8KQURrUll3QUFBQUFB
QUFCZ0VnQUFEZ0E1RVg4QUFBQUFBQUFBWWhJQUFBNEFPUkdVQUFBQUFBQUFBR0FTQUFBT0FEa1J1
Z0FBQUFBQQpBQUJpRWdBQURnQTVFZGtBQUFBQUFBQUFZaElBQUE0QU9SRVBBUUFBQUFBQUFHUVNB
QUFPQURrUklBRUFBQUFBQUFCK0VBQUFBZ0FHCkFBQUE4Z0FBQUZnQUFBQUFBQUFBQUFBQUFDd0JB
QUFJQkFBQUNBQUFBRXdBQUFBQUFBQUFQUUFBZ0FRQUFBQStBQUNBTndBQUFEOEEKQUlCUUFBQUFR
QUFBZ0drQUFBQkJBQUNBbWdBQUFFSUFBSUFWQVFBQVF3QUFnQ0lCQUFCRUFBQ0FEQUFBQUpBQkFB
QUhBSmdBQUFDUQpBUUFBQ3dDY0FBQUFrQUVBQUFvQUZnRUFBSkFCQUFBTEFCb0JBQUNRQVFBQUNn
QW1BUUFBa0FFQUFBc0FLZ0VBQUpBQkFBQUtBRFlCCkFBQ1FBUUFBQ3dBNkFRQUFrQUVBQUFvQVJn
RUFBSkFCQUFBTEFFb0JBQUNRQVFBQUNnQldBUUFBa0FFQUFBc0FXZ0VBQUpBQkFBQUsKQUdZQkFB
Q1FBUUFBQ3dCcUFRQUFrQUVBQUFvQWRnRUFBSkFCQUFBTEFIb0JBQUNRQVFBQUNnQ0dBUUFBa0FF
QUFBc0FpZ0VBQUpBQgpBQUFLQUpZQkFBQ1FBUUFBQ3dDYUFRQUFrQUVBQUFvQXNBRUFBSkFCQUFB
TEFMUUJBQUNRQVFBQUNnQ0Q3QXhXNkFBQUFBQ0w4SVgyCmRGVlcveFVBQUFBQWhjQ0pSQ1FJMjBR
a0NIMEcyQVVBQUFBQVZ0bGNKQkQvRlFBQUFBQ0R4QWlGd0lsRUpBVGJSQ1FFZlFiWUJRQUEKQUFD
TFJDUVUyVndrREl0TUpBaUxWQ1FNaVFpSlVBUmVnOFFNd2dRQWl3MEFBQUFBaXhHTFJDUVVpMGtF
aVJDSlNBUmVnOFFNd2dRQQpCUUFBQUVFQkFBQVVBQklBQUFCZ0FRQUFCZ0FrQUFBQVh3RUFBQVlB
THdBQUFGd0JBQUFHQUVRQUFBQmZBUUFBQmdCbUFBQUFSQUFBCkFBWUFCQUFBQVBVQUFBQkVBQUFB
QUFBQUFBQUFBQUIvQUFBQURBQUFBQVFBQUFBQUFBQUFGeWNBQUFRQUFBQUVBQUFBQkFBQUFIVUEK
QUFBTUFBQUFCQUFBQUFBQUFBQVhKd0FBQUFBRUFBQUFBQUR4QUFBQW53QUFBRXdBRUJFQUFBQUFB
QUFBQUFBQUFBQi9BQUFBQkFBQQpBSGtBQUFCOEVBQUFBQUFBQUFBQUFFMWxaR2xoVEdWbllXTjVW
VWxKYldGblpVVnNaVzFsYm5RNk9tNWhkSFZ5WVd4VGFYcGxBQndBCkVoQU1BQUFBQUFBQUFBQUFB
QUFFQUFBQUFBQUFBQUFBQUFJQUFBMEFCaEY3RUFBQUVnQjBhR2x6QUE0QU9SRVFBQUFBQUFBQUFH
a1MKQUFBT0FEa1JMUUFBQUFBQUFBQnBFZ0FBQWdBR0FBRHlBQUFBVUFBQUFBQUFBQUFBQUFBQWZ3
QUFBQWdFQUFBSEFBQUFSQUFBQUFBQQpBQUJIQUFDQUJBQUFBRWdBQUlBTEFBQUFTUUFBZ0E4QUFB
QktBQUNBWGdBQUFFd0FBSUJrQUFBQVN3QUFnSGtBQUFCTUFBQ0FEQUFBCkFKVUJBQUFIQUhnQUFB
Q1ZBUUFBQ3dCOEFBQUFsUUVBQUFvQTF3QUFBSlVCQUFBTEFOc0FBQUNWQVFBQUNnRG5BQUFBbFFF
QUFBc0EKNndBQUFKVUJBQUFLQUFBQkFBQ1ZBUUFBQ3dBRUFRQUFsUUVBQUFvQWk4SEhBQUFBQUFE
REJBQUFBSjBCQUFBR0FBUUFBQUQxQUFBQQpKQUFBQUFBQUFBQUFBQUFBQ1FBQUFBQUFBQUFBQUFB
QUFBQUFBQmNuQUFBQ0FBQUFCQUFBQVBFQUFBQ05BQUFBV2dBUUVRQUFBQUFBCkFBQUFBQUFBQUFr
QUFBQUNBQUFBQ0FBQUFJVVFBQUFBQUFBQUFBQUFUV1ZrYVdGTVpXZGhZM2xWU1VsdFlXZGxSV3hs
YldWdWREbzYKVFdWa2FXRk1aV2RoWTNsVlNVbHRZV2RsUld4bGJXVnVkQUFjQUJJUUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FLQUFBTgpBQVlSZUJBQUFCSUFkR2hwY3dBQ0FBWUFBQUFB
REFBQUFKb0JBQUFIQUZnQUFBQ2FBUUFBQ3dCY0FBQUFtZ0VBQUFvQUFBQUFBQUFBCkFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBSjhCQUFBR0FBUUFBQUNRQVFBQUJnQUlBQUFBUFFBQUFBWUFE
QUFBQUpVQkFBQUcKQUJBQUFBQ2xBUUFBQmdBVUFBQUFxZ0VBQUFZQWkwUWtCRkQvRlFBQUFBQlp3
aFFBQndBQUFGb0JBQUFHQUFRQUFBRDFBQUFBSkFBQQpBQUFBQUFBQUFBQUFEd0FBQUFBQUFBQVVB
QUFBQUFBQUFCY25BQUFBQUFBQUJBQUFBUEVBQUFERUFBQUFXQUFRRVFBQUFBQUFBQUFBCkFBQUFB
QThBQUFBQUFBQUFEQUFBQUgwUUFBQUFBQUFBQUFBQVRXVmthV0ZNWldkaFkzbFZTVWx0WVdkbFJX
eGxiV1Z1ZERvNmMyVjAKVlhCRGIyNTBaWGgwUm05eVVHRnBiblJwYm1jQUhBQVNFQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0FnQUFEUUFHRVhzUQpBQUFTQUhSb2FYTUFFZ0FMRVFRQUFB
QXBFQUFBWTI5dWRHVjRkQUFUQUFzUkNBQUFBQTRRQUFCZlgyWnZjbTFoYkFBT0FEa1JCUUFBCkFB
QUFBQUNNRUFBQUFnQUdBUElBQUFBZ0FBQUFBQUFBQUFBQUFBQVBBQUFBUUE0QUFBRUFBQUFVQUFB
QUFBQUFBQkVBQUlBTUFBQUEKcFFFQUFBY0FXQUFBQUtVQkFBQUxBRndBQUFDbEFRQUFDZ0RzQUFB
QXBRRUFBQXNBOEFBQUFLVUJBQUFLQUFRQkFBQ2xBUUFBQ3dBSQpBUUFBcFFFQUFBb0FpMFFrQkZE
L0ZRQUFBQUJad2dRQUJ3QUFBRmNCQUFBR0FBUUFBQUQxQUFBQUpBQUFBQUFBQUFBQUFBQUFEd0FB
CkFBQUFBQUFFQUFBQUFBQUFBQmNuQUFBQUFBQUFCQUFBQVBFQUFBQ3pBQUFBWEFBUUVRQUFBQUFB
QUFBQUFBQUFBQThBQUFBQUFBQUEKREFBQUFINFFBQUFBQUFBQUFBQUFUV1ZrYVdGTVpXZGhZM2xW
U1VsdFlXZGxSV3hsYldWdWREbzZjbVZ6ZEc5eVpVTnZiblJsZUhSQgpablJsY2xCaGFXNTBhVzVu
QUJ3QUVoQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFJQUFBMEFCaEY3RUFBQUVnQjBh
R2x6CkFCSUFDeEVFQUFBQUtSQUFBR052Ym5SbGVIUUFEZ0E1RVFVQUFBQUFBQUFBakJBQUFBSUFC
Z0FBOGdBQUFDQUFBQUFBQUFBQUFBQUEKQUE4QUFBQkFEZ0FBQVFBQUFCUUFBQUFBQUFBQUVnQUFn
QXdBQUFDcUFRQUFCd0JZQUFBQXFnRUFBQXNBWEFBQUFLb0JBQUFLQU5zQQpBQUNxQVFBQUN3RGZB
QUFBcWdFQUFBb0E5QUFBQUtvQkFBQUxBUGdBQUFDcUFRQUFDZ0RIQVFBQUFBRERBZ0FBQURJQUFB
QUdBQVFBCkFBRDFBQUFBSkFBQUFBQUFBQUFBQUFBQUJ3QUFBQUFBQUFBQUFBQUFBQUFBQUJjbkFB
QUFBQUFBQkFBQUFQRUFBQUNPQUFBQVd3QVEKRVFBQUFBQUFBQUFBQUFBQUFBY0FBQUFBQUFBQUJn
QUFBSVVRQUFBQUFBQUFBQUFBVFdWa2FXRk1aV2RoWTNsVlNVbHRZV2RsUld4bApiV1Z1ZERvNmZr
MWxaR2xoVEdWbllXTjVWVWxKYldGblpVVnNaVzFsYm5RQUhBQVNFQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBCkFBQWdDZ0FBRFFBR0VYZ1FBQUFTQUhSb2FYTUFBZ0FHQUFBQURBQUFBSzhCQUFB
SEFGZ0FBQUN2QVFBQUN3QmNBQUFBcndFQUFBb0EKOWtRa0JBRldpL0hIQmdBQUFBQjBDVmJvQUFB
QUFJUEVCSXZHWHNJRUFBb0FBQUF5QUFBQUJnQVNBQUFBV1FBQUFCUUFCQUFBQVBVQQpBQUJFQUFB
QUFBQUFBQUFBQUFBZkFBQUFBQUFBQUFRQUFBQUFBQUFBRnljQUFBZ0FBQUFFQUFBQUJnQUFBQllB
QUFBQUFBQUFCQUFBCkFBQUFBQUFYSndBQUFnQUVBQUFBQUFEeEFBQUFrQUFBQUYwQUVCRUFBQUFB
QUFBQUFBQUFBQUFmQUFBQUNBQUFBQndBQUFDSkVBQUEKQUFBQUFBQUFBRTFsWkdsaFRHVm5ZV041
VlVsSmJXRm5aVVZzWlcxbGJuUTZPbUJ6WTJGc1lYSWdaR1ZzWlhScGJtY2daR1Z6ZEhKMQpZM1J2
Y2ljQUhBQVNFQUFBQUFBQUFBQUFBQUFBQUFRQUFBQUFBQUFBQUFBZ0FnQUFEUUFHRVhnUUFBQVNB
SFJvYVhNQUFnQUdBQXdBCkFBQ2VBUUFBQndCNEFBQUFuZ0VBQUFzQWZBQUFBSjRCQUFBS0FJdkJ4
d0FBQUFBQXd3UUFBQUM4QVFBQUJnQUVBQUFBOVFBQUFDUUEKQUFBQUFBQUFBQUFBQUFrQUFBQUFB
QUFBQUFBQUFBQUFBQUFYSndBQUFnQUFBQVFBQUFEeEFBQUFrUUFBQUY0QUVCRUFBQUFBQUFBQQpB
QUFBQUFBSkFBQUFBZ0FBQUFnQUFBQ1hFQUFBQUFBQUFBQUFBRTFsWkdsaFRHVm5ZV041VlVsVWFX
MWxiR2x1WlZOc2FXUmxjam82ClRXVmthV0ZNWldkaFkzbFZTVlJwYldWc2FXNWxVMnhwWkdWeUFC
d0FFaEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBb0EKQUEwQUJoR09FQUFBRWdCMGFH
bHpBQUlBQmdBQUFBQU1BQUFBdVFFQUFBY0FXQUFBQUxrQkFBQUxBRndBQUFDNUFRQUFDZ0FBQUFB
QQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQXZnRUFBQVlBQkFBQUFGSUJBQUFHQUFn
QUFBQTlBQUFBQmdBTUFBQUFRd0FBCkFBWUFFQUFBQU1RQkFBQUdBQlFBQUFESkFRQUFCZ0NMUkNR
RVVQOFZBQUFBQUZuQ0ZBQUhBQUFBV2dFQUFBWUFCQUFBQVBVQUFBQWsKQUFBQUFBQUFBQUFBQUFB
UEFBQUFBQUFBQUJRQUFBQUFBQUFBRnljQUFBQUFBQUFFQUFBQThRQUFBTVlBQUFCYUFCQVJBQUFB
QUFBQQpBQUFBQUFBQUR3QUFBQUFBQUFBTUFBQUFraEFBQUFBQUFBQUFBQUJOWldScFlVeGxaMkZq
ZVZWSlZHbHRaV3hwYm1WVGJHbGtaWEk2Ck9uTmxkRlZ3UTI5dWRHVjRkRVp2Y2xCaGFXNTBhVzVu
QUJ3QUVoQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFJQUFBMEEKQmhHUkVBQUFFZ0Iw
YUdsekFCSUFDeEVFQUFBQUtSQUFBR052Ym5SbGVIUUFFd0FMRVFnQUFBQU9FQUFBWDE5bWIzSnRZ
V3dBRGdBNQpFUVVBQUFBQUFBQUFqQkFBQUFJQUJnQUFBUElBQUFBZ0FBQUFBQUFBQUFBQUFBQVBB
QUFBUUE0QUFBRUFBQUFVQUFBQUFBQUFBQjBBCkFJQU1BQUFBeEFFQUFBY0FXQUFBQU1RQkFBQUxB
RndBQUFERUFRQUFDZ0R1QUFBQXhBRUFBQXNBOGdBQUFNUUJBQUFLQUFnQkFBREUKQVFBQUN3QU1B
UUFBeEFFQUFBb0FpMFFrQkZEL0ZRQUFBQUJad2dRQUJ3QUFBRmNCQUFBR0FBUUFBQUQxQUFBQUpB
QUFBQUFBQUFBQQpBQUFBRHdBQUFBQUFBQUFFQUFBQUFBQUFBQmNuQUFBQUFBQUFCQUFBQVBFQUFB
QzFBQUFBWGdBUUVRQUFBQUFBQUFBQUFBQUFBQThBCkFBQUFBQUFBREFBQUFKTVFBQUFBQUFBQUFB
QUFUV1ZrYVdGTVpXZGhZM2xWU1ZScGJXVnNhVzVsVTJ4cFpHVnlPanB5WlhOMGIzSmwKUTI5dWRH
VjRkRUZtZEdWeVVHRnBiblJwYm1jQUhBQVNFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
Z0FnQUFEUUFHRVpFUQpBQUFTQUhSb2FYTUFFZ0FMRVFRQUFBQXBFQUFBWTI5dWRHVjRkQUFPQURr
UkJRQUFBQUFBQUFDTUVBQUFBZ0FHQUFBQUFQSUFBQUFnCkFBQUFBQUFBQUFBQUFBQVBBQUFBUUE0
QUFBRUFBQUFVQUFBQUFBQUFBQjRBQUlBTUFBQUF5UUVBQUFjQVdBQUFBTWtCQUFBTEFGd0EKQUFE
SkFRQUFDZ0RkQUFBQXlRRUFBQXNBNFFBQUFNa0JBQUFLQVBnQUFBREpBUUFBQ3dEOEFBQUF5UUVB
QUFvQXh3RUFBQUFBd3dJQQpBQUF5QUFBQUJnQUVBQUFBOVFBQUFDUUFBQUFBQUFBQUFBQUFBQWNB
QUFBQUFBQUFBQUFBQUFBQUFBQVhKd0FBQUFBQUFBUUFBQUR4CkFBQUFrZ0FBQUY4QUVCRUFBQUFB
QUFBQUFBQUFBQUFIQUFBQUFBQUFBQVlBQUFDWEVBQUFBQUFBQUFBQUFFMWxaR2xoVEdWbllXTjUK
VlVsVWFXMWxiR2x1WlZOc2FXUmxjam82ZmsxbFpHbGhUR1ZuWVdONVZVbFVhVzFsYkdsdVpWTnNh
V1JsY2dBY0FCSVFBQUFBQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQUtBQUFOQUFZUmpoQUFB
QklBZEdocGN3QUNBQVlBQUFBTUFBQUF6Z0VBQUFjQVdBQUFBTTRCCkFBQUxBRndBQUFET0FRQUFD
Z0QyUkNRRUFWYUw4Y2NHQUFBQUFIUUpWdWdBQUFBQWc4UUVpOFpld2dRQUNnQUFBRElBQUFBR0FC
SUEKQUFCWkFBQUFGQUFFQUFBQTlRQUFBRVFBQUFBQUFBQUFBQUFBQUI4QUFBQUFBQUFBQkFBQUFB
QUFBQUFYSndBQUNBQUFBQVFBQUFBRwpBQUFBRmdBQUFBQUFBQUFFQUFBQUFBQUFBQmNuQUFBQ0FB
UUFBQUFBQVBFQUFBQ1NBQUFBWHdBUUVRQUFBQUFBQUFBQUFBQUFBQjhBCkFBQUlBQUFBSEFBQUFK
c1FBQUFBQUFBQUFBQUFUV1ZrYVdGTVpXZGhZM2xWU1ZScGJXVnNhVzVsVTJ4cFpHVnlPanBnYzJO
aGJHRnkKSUdSbGJHVjBhVzVuSUdSbGMzUnlkV04wYjNJbkFCd0FFaEFBQUFBQUFBQUFBQUFBQUFB
RUFBQUFBQUFBQUFBQUlBSUFBQTBBQmhHTwpFQUFBRWdCMGFHbHpBQUlBQmdBQUFBd0FBQUM5QVFB
QUJ3QjRBQUFBdlFFQUFBc0FmQUFBQUwwQkFBQUtBRmFMZENRSU04Q0QvZ3gzClZ3KzJqZ0FBQUFE
L0pJMEFBQUFBdUFFQUFBQ0VCUUFBQUFCMU5Ba0ZBQUFBQUdvTTZBQUFBQUNEeEFTRndIUVN4d0FB
QUFBQWlYQUUKb3dBQUFBQmV3Z1FBTThDSmNBU2pBQUFBQUY3Q0JBQ2hBQUFBQUlsd0JGN0NCQUNR
QUFBQUFBQUFBQUFBQUFBQUFBRUFBUUVBQUFBQQpEd0FBQU9NQkFBQUdBQllBQUFEaUFRQUFCZ0Fo
QUFBQTRBRUFBQVlBS1FBQUFPQUJBQUFHQURBQUFBRGRBUUFBRkFBOUFBQUFuUUVBCkFBWUFSUUFB
QU53QkFBQUdBRk1BQUFEY0FRQUFCZ0JjQUFBQTNBRUFBQVlBYUFBQUFPRUJBQUFHQUd3QUFBRFpB
UUFBQmdBRUFBQUEKOVFBQUFFUUFBQUFBQUFBQUFBQUFBSDBBQUFBQUFBQUFCQUFBQUFBQUFBQVhK
d0FBQVFBQUFBUUFBQUFCQUFBQVl3QUFBQUFBQUFBRQpBQUFBQUFBQUFCY25BQUFBQUFRQUFBQUFB
UEVBQUFEWUFBQUFTUUFRRVFBQUFBQUFBQUFBQUFBQUFIMEFBQUFCQUFBQVpBQUFBS0VRCkFBQUFB
QUFBQUFBQVRXVmthV0ZNWldkaFkzbERiMjUwY205c2N6bzZZMjl1ZEhKdmJFWnZjbEJoY25RQUhB
QVNFQUFBQUFBQUFBQUEKQUFBQUFBUUFBQUFBQUFBQUFBQUFBZ0FBRFFBTUVRQUFBQUFBQUFBQUFB
QUFEUUFNRVFBQUFBQUFBQUFBQUFBQURnQUZFUUFBQUFBQQpBQUFrVEU0MEFBMEFCaEdnRUFBQUVn
QjBhR2x6QUJFQUN4RUVBQUFBZEFBQUFIQmhjblJKUkFBWkFBd1JlaElBQUFBQUFBQUFBSE5vCllY
SmxaRUoxZEhSdmJnQUNBQVlBOGdBQUFIQUFBQUFBQUFBQUFBQUFBSDBBQUFBSUJBQUFDd0FBQUdR
QUFBQUFBQUFBeFFBQWdBRUEKQUFESUFBQ0FHZ0FBQU5RQUFJQkJBQUFBMWdBQWdFb0FBQURyQUFD
QVRRQUFBTlFBQUlCUEFBQUExZ0FBZ0ZnQUFBRHJBQUNBV3dBQQpBTlFBQUlCZ0FBQUExZ0FBZ0dR
QUFBRHJBQUNBREFBQUFOZ0JBQUFIQUhnQUFBRFlBUUFBQ3dCOEFBQUEyQUVBQUFvQXlRQUFBT01C
CkFBQUxBTTBBQUFEakFRQUFDZ0RZQUFBQTRnRUFBQXNBM0FBQUFPSUJBQUFLQU9NQUFBRGhBUUFB
Q3dEbkFBQUE0UUVBQUFvQUdRRUEKQU53QkFBQUxBQjBCQUFEY0FRQUFDZ0E0QVFBQTJBRUFBQXNB
UEFFQUFOZ0JBQUFLQUxnQkFBQUFoQVVBQUFBQWRTZ0pCUUFBQUFCcQpJT2dBQUFBQWc4UUVoY0Iw
RE1jQUFBQUFBS01BQUFBQXd6UEFvd0FBQUFERG9RQUFBQUREQndBQUFPNEJBQUFHQUE4QUFBRHVB
UUFBCkJnQVdBQUFBM1FFQUFCUUFJd0FBQUx3QkFBQUdBQ2dBQUFEckFRQUFCZ0F3QUFBQTZ3RUFB
QVlBTmdBQUFPc0JBQUFHQUFRQUFBRDEKQUFBQUpBQUFBQUFBQUFBQUFBQUFPd0FBQUFBQUFBQUFB
QUFBQUFBQUFCY25BQUFBQUFBQUJBQUFBUEVBQUFDUEFBQUFRUUFRRVFBQQpBQUFBQUFBQUFBQUFB
RHNBQUFBQUFBQUFPZ0FBQUtJUUFBQUFBQUFBQUFBQVRXVmthV0ZNWldkaFkzbERiMjUwY205c2N6
bzZjMnhwClpHVnlBQndBRWhBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBQUEwQUJo
R2dFQUFBRWdCMGFHbHpBQmtBREJGN0VnQUEKQUFBQUFBQUFjMmhoY21Wa1UyeHBaR1Z5QUFJQUJn
QUE4Z0FBQUZBQUFBQUFBQUFBQUFBQUFEc0FBQUFJQkFBQUJ3QUFBRVFBQUFBQQpBQUFBN2dBQWdB
QUFBQUR2QUFDQUxBQUFBUElBQUlBdEFBQUE3d0FBZ0RRQUFBRHlBQUNBTlFBQUFQRUFBSUE2QUFB
QThnQUFnQXdBCkFBRG9BUUFBQndCWUFBQUE2QUVBQUFzQVhBQUFBT2dCQUFBS0FMQUFBQURyQVFB
QUN3QzBBQUFBNndFQUFBb0EwQUFBQU9nQkFBQUwKQU5RQUFBRG9BUUFBQ2dBRUFBQUE4UUFBQUJJ
QUFBQVFBQXdSZFFBQUFBQUFBQUFBQUNSVE1RQUFBQlFBQUFEZ0FRQUFDd0FZQUFBQQo0QUVBQUFv
QUJBQUFBUEVBQUFBU0FBQUFFQUFNRVhVQUFBQUFBQUFBQUFBa1V6SUFBQUFVQUFBQTdnRUFBQXNB
R0FBQUFPNEJBQUFLCkFBUUFBQUJlQUJVVmVkRXZTejA1RDBlWG1CZ2ZJTW1RVUFRQUFBQmpPbHhq
ZVdkM2FXNWNhRzl0WlZ4amJXRnljbWx1WEhkbFltdHAKZEdKMWFXeGtYR3hwWWx4M1pXSnJhWFJ6
ZVhOMFpXMXBiblJsY21aaFkyVXVkbU00TUM1d1pHSUE4dkZBWTI5dGNDNXBaQ2ZHYmdELwovd0FB
QXdCQVptVmhkQzR3TUFFQUFBRC8vd0FBQXdBdVpISmxZM1IyWlFBQUFBQUJBQUFBQXdIREFBQUFB
QUFBQUFBQUFBQUFBQUFBCkFBQXVaR1ZpZFdja1V3QUFBQUFDQUFBQUF3SHdWd0FBTmdBQUFBQUFB
QUFBQUFBQUFBQXVjbVJoZEdFQUFBQUFBQUFEQUFBQUF3RlIKa2dBQUFBQUFBR0RXWUU4QUFBQUFB
QUFBQUFBQUJBQUFBQUFBQUFBREFBQUFBd0FBQUFBQUl3QUFBREFEQUFBREFBQUFBd0FBQUFBQQpT
UUFBQUlnR0FBQURBQUFBQXdBQUFBQUFad0FBQUFnS0FBQURBQUFBQXdBQUFBQUFqQUFBQU1nTkFB
QURBQUFBQXdBQUFBQUFxZ0FBCkFEQVJBQUFEQUFBQUF3QUFBQUFBendBQUFNQVVBQUFEQUFBQUF3
QUFBQUFBNXdBQUFBZ1lBQUFEQUFBQUF3QUFBQUFBQmdFQUFJQWIKQUFBREFBQUFBd0FBQUFBQUh3
RUFBSkFlQUFBREFBQUFBd0FBQUFBQVB3RUFBTGdoQUFBREFBQUFBd0FBQUFBQVZ3RUFBUGdrQUFB
RApBQUFBQXdBQUFBQUFkZ0VBQUdBb0FBQURBQUFBQXdBQUFBQUFrQUVBQUpnckFBQURBQUFBQXdB
QUFBQUFzUUVBQU9ndUFBQURBQUFBCkF3QUFBQUFBMXdFQUFQQThBQUFEQUFBQUF3QUFBQUFBQkFJ
QUFQaEtBQUFEQUFBQUF3QUFBQUFBS1FJQUFKaFlBQUFEQUFBQUF3QUEKQUFBQVZRSUFBREJtQUFB
REFBQUFBd0FBQUFBQWZBSUFBREIwQUFBREFBQUFBd0FBQUFBQXFnSUFBRENDQUFBREFBQUFBd0FB
QUFBQQp3d0lBQUlDR0FBQURBQUFBQXdBQUFBQUE0d0lBQVBpS0FBQURBQUFBQXdBQUFBQUFCUU1B
QU1DT0FBQURBQUFBQXdBdWRHVjRkQUFBCkFBQUFBQUFFQUFBQUF3RWRBQUFBQUFBQUFFK0xlYUlB
QUFJQUFBQXVaR1ZpZFdja1V3QUFBQUFGQUFBQUF3SDhBQUFBQlFBQUFBQUEKQUFBRUFBVUFBQUFB
QUFBQUxnTUFBQUFBQUFBRUFDQUFBd0FBQUFBQVRRTUFBQUFBQUFBQUFBQUFBZ0F1ZEdWNGRBQUFB
QUFBQUFBRwpBQUFBQXdFY0FBQUFBQUFBQURiNWpjY0FBQUlBQUFBdVpHVmlkV2NrVXdBQUFBQUhB
QUFBQXdFUUFRQUFCUUFBQUFBQUFBQUdBQVVBCkFBQUFBQUFBVndNQUFBQUFBQUFHQUNBQUF3QXVk
R1Y0ZEFBQUFBQUFBQUFJQUFBQUF3RUhBQUFBQVFBQUFLcmhpOEFBQUFJQUFBQXUKWkdWaWRXY2tV
d0FBQUFBSkFBQUFBd0hZQUFBQUJRQUFBQUFBQUFBSUFBVUFBQUFBQUFBQWVBTUFBQUFBQUFBSUFD
QUFBZ0F1Y21SaApkR0VBQUFBQUFBQUtBQUFBQXdFWUFBQUFCZ0FBQUFBQUFBQUFBQUlBQUFBQUFB
QUFrZ01BQUFBQUFBQUtBQUFBQWdBQUFBQUFxZ01BCkFBQUFBQUFBQUNBQUFnQUFBQUFBeUFNQUFB
QUFBQUFBQUNBQWFRRXpBQUFBQWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBNWdNQUFBQUEKQUFBQUFD
QUFBZ0FBQUFBQThRTUFBQUFBQUFBQUFDQUFBZ0FBQUFBQU9BUUFBQUFBQUFBQUFDQUFBZ0F1ZEdW
NGRBQUFBQUFBQUFBTApBQUFBQXdFMkFBQUFBUUFBQU1hbXg1TUFBQUlBQUFBdVpHVmlkV2NrVXdB
QUFBQU1BQUFBQXdFSUFRQUFCd0FBQUFBQUFBQUxBQVVBCkFBQUFBQUFBZWdRQUFBQUFBQUFMQUNB
QUFnQUFBQUFBcmdRQUFBQUFBQUFBQUFBQUFnQXVkR1Y0ZEFBQUFBQUFBQUFOQUFBQUF3RVgKQUFB
QUFRQUFBSkpXM0JnQUFBSUFBQUF1WkdWaWRXY2tVd0FBQUFBT0FBQUFBd0hVQUFBQUJRQUFBQUFB
QUFBTkFBVUFBQUFBQUFBQQp5UVFBQUFBQUFBQU5BQ0FBQWdBQUFBQUE5d1FBQUFBQUFBQUFBQUFB
QWdBdWRHVjRkQUFBQUFBQUFBQVBBQUFBQXdFS0FBQUFBQUFBCkFOYk00VEVBQUFJQUFBQXVaR1Zp
ZFdja1V3QUFBQUFRQUFBQUF3SG9BQUFBQlFBQUFBQUFBQUFQQUFVQUFBQUFBQUFBQ1FVQUFBQUEK
QUFBUEFDQUFBZ0F1ZEdWNGRBQUFBQUFBQUFBUkFBQUFBd0VFQUFBQUFBQUFBTU9BQVMwQUFBSUFB
QUF1WkdWaWRXY2tVd0FBQUFBUwpBQUFBQXdIUUFBQUFCUUFBQUFBQUFBQVJBQVVBQUFBQUFBQUFM
QVVBQUFBQUFBQVJBQ0FBQWdBdWRHVjRkQUFBQUFBQUFBQVRBQUFBCkF3RUlBQUFBQUFBQUFHVVdF
b01BQUFJQUFBQXVaR1ZpZFdja1V3QUFBQUFVQUFBQUF3SFVBQUFBQlFBQUFBQUFBQUFUQUFVQUFB
QUEKQUFBQVN3VUFBQUFBQUFBVEFDQUFBZ0F1ZEdWNGRBQUFBQUFBQUFBVkFBQUFBd0VmQUFBQUFn
QUFBTHRJODVvQUFBSUFBQUF1WkdWaQpkV2NrVXdBQUFBQVdBQUFBQXdIZ0FBQUFBd0FBQUFBQUFB
QVZBQVVBQUFBQUFBQUFiZ1VBQUFBQUFBQVZBQ0FBQWdBQUFBQUFqQVVBCkFBQUFBQUFBQUNBQUFn
QXVkR1Y0ZEFBQUFBQUFBQUFYQUFBQUF3RUVBQUFBQUFBQUFPZ0h5ZTBBQUFJQUFBQXVaR1ZpZFdj
a1V3QUEKQUFBWUFBQUFBd0hjQUFBQUJRQUFBQUFBQUFBWEFBVUFBQUFBQUFBQW1RVUFBQUFBQUFB
WEFDQUFBZ0F1ZEdWNGRBQUFBQUFBQUFBWgpBQUFBQXdFRUFBQUFBQUFBQU9DTkVDVUFBQUlBQUFB
dVpHVmlkV2NrVXdBQUFBQWFBQUFBQXdIWUFBQUFCUUFBQUFBQUFBQVpBQVVBCkFBQUFBQUFBd3dV
QUFBQUFBQUFaQUNBQUFnQXVkR1Y0ZEFBQUFBQUFBQUFiQUFBQUF3RVZBQUFBQUFBQUFIWXZmWVFB
QUFJQUFBQXUKWkdWaWRXY2tVd0FBQUFBY0FBQUFBd0hnQUFBQUJRQUFBQUFBQUFBYkFBVUFBQUFB
QUFBQTZ3VUFBQUFBQUFBYkFDQUFBZ0F1Y21SaApkR0VBQUFBQUFBQWRBQUFBQXdFSUFBQUFBQUFB
QUFBQUFBQUFBQUlBQUFBQUFBQUFHUVlBQUFBQUFBQWRBQUFBQWdBdWRHVjRkQUFBCkFBQUFBQUFl
QUFBQUF3RWJBQUFBQVFBQUFJaXF1K01BQUFJQUFBQXVaR1ZpZFdja1V3QUFBQUFmQUFBQUF3SEFB
QUFBQlFBQUFBQUEKQUFBZUFBVUFBQUJmWm14dmIzSm1BQUFBQUFBZUFDQUFBZ0JmWm14dmIzSUFB
QUFBQUFBQUFDQUFBZ0F1ZEdWNGRBQUFBQUFBQUFBZwpBQUFBQXdFYkFBQUFBUUFBQUlpcXUrTUFB
QUlBQUFBdVpHVmlkV2NrVXdBQUFBQWhBQUFBQXdIVUFBQUFCUUFBQUFBQUFBQWdBQVVBCkFBQUFB
QUFBTVFZQUFBQUFBQUFnQUNBQUF3QXVkR1Y0ZEFBQUFBQUFBQUFpQUFBQUF3RndBQUFBQ2dBQUFM
czB2bVFBQUFFQUFBQXUKWkdWaWRXY2tVd0FBQUFBakFBQUFBd0dJQVFBQUVRQUFBQUFBQUFBaUFB
VUFBQUFBQUFBQVFnWUFBQUFBQUFBaUFDQUFBd0FBQUFBQQpiUVlBQUFBQUFBQUFBQUFBQWdBQUFB
QUFmZ1lBQUFBQUFBQUFBQUFBQWdBQUFBQUFwZ1lBQUFBQUFBQUFBQUFBQWdBQUFBQUF6QVlBCkFB
QUFBQUFBQUFBQUFnQUFBQUFBN3dZQUFBQUFBQUFBQUFBQUFnQUFBQUFBQ2djQUFBQUFBQUFBQUFB
QUFnQXVZbk56QUFBQUFBQUEKQUFBa0FBQUFBd0VFQUFBQUFBQUFBQUFBQUFBQUFBSUFBQUFBQUFB
QUlnY0FBQUFBQUFBa0FBQUFBd0F1ZEdWNGRBQUFBQUFBQUFBbApBQUFBQXdGd0FBQUFDZ0FBQURh
U1NWTUFBQUVBQUFBdVpHVmlkV2NrVXdBQUFBQW1BQUFBQXdHTUFRQUFFUUFBQUFBQUFBQWxBQVVB
CkFBQUFBQUFBWHdjQUFBQUFBQUFsQUNBQUF3QXVZbk56QUFBQUFBQUFBQUFuQUFBQUF3RUVBQUFB
QUFBQUFBQUFBQUFBQUFJQUFBQUEKQUFBQWtRY0FBQUFBQUFBbkFBQUFBd0F1ZEdWNGRBQUFBQUFB
QUFBb0FBQUFBd0Z3QUFBQUNnQUFBSVYvTzYwQUFBRUFBQUF1WkdWaQpkV2NrVXdBQUFBQXBBQUFB
QXdHQUFRQUFFUUFBQUFBQUFBQW9BQVVBQUFBQUFBQUExUWNBQUFBQUFBQW9BQ0FBQXdBdVluTnpB
QUFBCkFBQUFBQUFxQUFBQUF3RUVBQUFBQUFBQUFBQUFBQUFBQUFJQUFBQUFBQUFBK2djQUFBQUFB
QUFxQUFBQUF3QXVkR1Y0ZEFBQUFBQUEKQUFBckFBQUFBd0Z3QUFBQUNnQUFBRnQ3UXdNQUFBRUFB
QUF1WkdWaWRXY2tVd0FBQUFBc0FBQUFBd0dJQVFBQUVRQUFBQUFBQUFBcgpBQVVBQUFBQUFBQUFN
UWdBQUFBQUFBQXJBQ0FBQXdBdVluTnpBQUFBQUFBQUFBQXRBQUFBQXdFRUFBQUFBQUFBQUFBQUFB
QUFBQUlBCkFBQUFBQUFBWFFnQUFBQUFBQUF0QUFBQUF3QXVkR1Y0ZEFBQUFBQUFBQUF1QUFBQUF3
RndBQUFBQ2dBQUFFbzFQdHdBQUFFQUFBQXUKWkdWaWRXY2tVd0FBQUFBdkFBQUFBd0dBQVFBQUVR
QUFBQUFBQUFBdUFBVUFBQUFBQUFBQW13Z0FBQUFBQUFBdUFDQUFBd0F1WW5OegpBQUFBQUFBQUFB
QXdBQUFBQXdFRUFBQUFBQUFBQUFBQUFBQUFBQUlBQUFBQUFBQUF3UWdBQUFBQUFBQXdBQUFBQXdB
dWRHVjRkQUFBCkFBQUFBQUF4QUFBQUF3RndBQUFBQ2dBQUFIb05PaUFBQUFFQUFBQXVaR1ZpZFdj
a1V3QUFBQUF5QUFBQUF3R0lBUUFBRVFBQUFBQUEKQUFBeEFBVUFBQUFBQUFBQStRZ0FBQUFBQUFB
eEFDQUFBd0F1WW5OekFBQUFBQUFBQUFBekFBQUFBd0VFQUFBQUFBQUFBQUFBQUFBQQpBQUlBQUFB
QUFBQUFKZ2tBQUFBQUFBQXpBQUFBQXdBdWRHVjRkQUFBQUFBQUFBQTBBQUFBQXdGd0FBQUFDZ0FB
QUdybE9YUUFBQUVBCkFBQXVaR1ZpZFdja1V3QUFBQUExQUFBQUF3R0FBUUFBRVFBQUFBQUFBQUEw
QUFVQUFBQUFBQUFBWlFrQUFBQUFBQUEwQUNBQUF3QXUKWW5OekFBQUFBQUFBQUFBMkFBQUFBd0VF
QUFBQUFBQUFBQUFBQUFBQUFBSUFBQUFBQUFBQWlna0FBQUFBQUFBMkFBQUFBd0F1ZEdWNApkQUFB
QUFBQUFBQTNBQUFBQXdGd0FBQUFDZ0FBQUVYZ3dXSUFBQUVBQUFBdVpHVmlkV2NrVXdBQUFBQTRB
QUFBQXdHSUFRQUFFUUFBCkFBQUFBQUEzQUFVQUFBQUFBQUFBd1FrQUFBQUFBQUEzQUNBQUF3QXVZ
bk56QUFBQUFBQUFBQUE1QUFBQUF3RUVBQUFBQUFBQUFBQUEKQUFBQUFBSUFBQUFBQUFBQTdRa0FB
QUFBQUFBNUFBQUFBd0F1ZEdWNGRBQUFBQUFBQUFBNkFBQUFBd0Z3QUFBQUNnQUFBSnBDeDBjQQpB
QUVBQUFBdVpHVmlkV2NrVXdBQUFBQTdBQUFBQXdHRUFRQUFFUUFBQUFBQUFBQTZBQVVBQUFBQUFB
QUFLd29BQUFBQUFBQTZBQ0FBCkF3QXVZbk56QUFBQUFBQUFBQUE4QUFBQUF3RUVBQUFBQUFBQUFB
QUFBQUFBQUFJQUFBQUFBQUFBVWdvQUFBQUFBQUE4QUFBQUF3QXUKZEdWNGRBQUFBQUFBQUFBOUFB
QUFBd0Z3QUFBQUNnQUFBSGVsUlpRQUFBRUFBQUF1WkdWaWRXY2tVd0FBQUFBK0FBQUFBd0dJQVFB
QQpFUUFBQUFBQUFBQTlBQVVBQUFBQUFBQUFpd29BQUFBQUFBQTlBQ0FBQXdBdVluTnpBQUFBQUFB
QUFBQS9BQUFBQXdFRUFBQUFBQUFBCkFBQUFBQUFBQUFJQUFBQUFBQUFBdVFvQUFBQUFBQUEvQUFB
QUF3QXVkR1Y0ZEFBQUFBQUFBQUJBQUFBQUF3RndBQUFBQ2dBQUFJcXEKeEJNQUFBRUFBQUF1WkdW
aWRXY2tVd0FBQUFCQkFBQUFBd0dJQVFBQUVRQUFBQUFBQUFCQUFBVUFBQUFBQUFBQStRb0FBQUFB
QUFCQQpBQ0FBQXdBdVluTnpBQUFBQUFBQUFBQkNBQUFBQXdFRUFBQUFBQUFBQUFBQUFBQUFBQUlB
QUFBQUFBQUFKUXNBQUFBQUFBQkNBQUFBCkF3QXVkR1Y0ZEFBQUFBQUFBQUJEQUFBQUF3RndBQUFB
Q2dBQUFHTzNSdFVBQUFFQUFBQXVaR1ZpZFdja1V3QUFBQUJFQUFBQUF3R1EKQVFBQUVRQUFBQUFB
QUFCREFBVUFBQUFBQUFBQVl3c0FBQUFBQUFCREFDQUFBd0F1WW5OekFBQUFBQUFBQUFCRkFBQUFB
d0VFQUFBQQpBQUFBQUFBQUFBQUFBQUlBQUFBQUFBQUFsZ3NBQUFBQUFBQkZBQUFBQXdBdWRHVjRk
QUFBQUFBQUFBQkdBQUFBQXdGd0FBQUFDZ0FBCkFBYVMva0lBQUFFQUFBQXVaR1ZpZFdja1V3QUFB
QUJIQUFBQUF3R1FBUUFBRVFBQUFBQUFBQUJHQUFVQUFBQUFBQUFBMndzQUFBQUEKQUFCR0FDQUFB
d0F1WW5OekFBQUFBQUFBQUFCSUFBQUFBd0VFQUFBQUFBQUFBQUFBQUFBQUFBSUFBQUFBQUFBQURn
d0FBQUFBQUFCSQpBQUFBQXdBdWRHVjRkQUFBQUFBQUFBQkpBQUFBQXdGd0FBQUFDZ0FBQVB5OGdW
RUFBQUVBQUFBdVpHVmlkV2NrVXdBQUFBQktBQUFBCkF3R1VBUUFBRVFBQUFBQUFBQUJKQUFVQUFB
QUFBQUFBVXd3QUFBQUFBQUJKQUNBQUF3QXVZbk56QUFBQUFBQUFBQUJMQUFBQUF3RUUKQUFBQUFB
QUFBQUFBQUFBQUFBSUFBQUFBQUFBQWpRd0FBQUFBQUFCTEFBQUFBd0F1ZEdWNGRBQUFBQUFBQUFC
TUFBQUFBd0Z3QUFBQQpDZ0FBQU9KLzJRWUFBQUVBQUFBdVpHVmlkV2NrVXdBQUFBQk5BQUFBQXdH
TUFRQUFFUUFBQUFBQUFBQk1BQVVBQUFBQUFBQUEyUXdBCkFBQUFBQUJNQUNBQUF3QXVZbk56QUFB
QUFBQUFBQUJPQUFBQUF3RUVBQUFBQUFBQUFBQUFBQUFBQUFJQUFBQUFBQUFBQ3cwQUFBQUEKQUFC
T0FBQUFBd0F1ZEdWNGRBQUFBQUFBQUFCUEFBQUFBd0Z3QUFBQUNnQUFBT3FMMkN3QUFBRUFBQUF1
WkdWaWRXY2tVd0FBQUFCUQpBQUFBQXdHVUFRQUFFUUFBQUFBQUFBQlBBQVVBQUFBQUFBQUFUdzBB
QUFBQUFBQlBBQ0FBQXdBdVluTnpBQUFBQUFBQUFBQlJBQUFBCkF3RUVBQUFBQUFBQUFBQUFBQUFB
QUFJQUFBQUFBQUFBaUEwQUFBQUFBQUJSQUFBQUF3QXVkR1Y0ZEFBQUFBQUFBQUJTQUFBQUF3RncK
QUFBQUNnQUFBT1ZlSjVJQUFBRUFBQUF1WkdWaWRXY2tVd0FBQUFCVEFBQUFBd0dRQVFBQUVRQUFB
QUFBQUFCU0FBVUFBQUFBQUFBQQowdzBBQUFBQUFBQlNBQ0FBQXdBdVluTnpBQUFBQUFBQUFBQlVB
QUFBQXdFRUFBQUFBQUFBQUFBQUFBQUFBQUlBQUFBQUFBQUFCdzRBCkFBQUFBQUJVQUFBQUF3QXVk
R1Y0ZEFBQUFBQUFBQUJWQUFBQUF3RndBQUFBQ2dBQUFCME4ySXNBQUFFQUFBQXVaR1ZpZFdja1V3
QUEKQUFCV0FBQUFBd0dZQVFBQUVRQUFBQUFBQUFCVkFBVUFBQUFBQUFBQVRRNEFBQUFBQUFCVkFD
QUFBd0F1WW5OekFBQUFBQUFBQUFCWApBQUFBQXdFRUFBQUFBQUFBQUFBQUFBQUFBQUlBQUFBQUFB
QUFpQTRBQUFBQUFBQlhBQUFBQXdBdWRHVjRkQUFBQUFBQUFBQllBQUFBCkF3RndBQUFBQ2dBQUFH
OEo4NGNBQUFFQUFBQXVaR1ZpZFdja1V3QUFBQUJaQUFBQUF3R0FBUUFBRVFBQUFBQUFBQUJZQUFV
QUFBQUEKQUFBQTFRNEFBQUFBQUFCWUFDQUFBd0F1WW5OekFBQUFBQUFBQUFCYUFBQUFBd0VFQUFB
QUFBQUFBQUFBQUFBQUFBSUFBQUFBQUFBQQordzRBQUFBQUFBQmFBQUFBQXdBdWRHVjRkQUFBQUFB
QUFBQmJBQUFBQXdGd0FBQUFDZ0FBQUxYM2l6d0FBQUVBQUFBdVpHVmlkV2NrClV3QUFBQUJjQUFB
QUF3R0lBUUFBRVFBQUFBQUFBQUJiQUFVQUFBQUFBQUFBTXc4QUFBQUFBQUJiQUNBQUF3QXVZbk56
QUFBQUFBQUEKQUFCZEFBQUFBd0VFQUFBQUFBQUFBQUFBQUFBQUFBSUFBQUFBQUFBQVlBOEFBQUFB
QUFCZEFBQUFBd0F1ZEdWNGRBQUFBQUFBQUFCZQpBQUFBQXdGd0FBQUFDZ0FBQUZPUFFpa0FBQUVB
QUFBdVpHVmlkV2NrVXdBQUFBQmZBQUFBQXdHSUFRQUFFUUFBQUFBQUFBQmVBQVVBCkFBQUFBQUFB
bnc4QUFBQUFBQUJlQUNBQUF3QXVZbk56QUFBQUFBQUFBQUJnQUFBQUF3RUVBQUFBQUFBQUFBQUFB
QUFBQUFJQUFBQUEKQUFBQXlnOEFBQUFBQUFCZ0FBQUFBd0F1ZEdWNGRBQUFBQUFBQUFCaEFBQUFB
d0Z3QUFBQUNnQUFBQks0VHU0QUFBRUFBQUF1WkdWaQpkV2NrVXdBQUFBQmlBQUFBQXdHTUFRQUFF
UUFBQUFBQUFBQmhBQVVBQUFBQUFBQUFCeEFBQUFBQUFBQmhBQ0FBQXdBdVluTnpBQUFBCkFBQUFB
QUJqQUFBQUF3RUVBQUFBQUFBQUFBQUFBQUFBQUFJQUFBQUFBQUFBT1JBQUFBQUFBQUJqQUFBQUF3
QXVkR1Y0ZEFBQUFBQUEKQUFCa0FBQUFBd0Z3QUFBQUNnQUFBQVZ4c3k0QUFBRUFBQUF1WkdWaWRX
Y2tVd0FBQUFCbEFBQUFBd0dNQVFBQUVRQUFBQUFBQUFCawpBQVVBQUFBQUFBQUFmUkFBQUFBQUFB
QmtBQ0FBQXdBdVluTnpBQUFBQUFBQUFBQm1BQUFBQXdFRUFBQUFBQUFBQUFBQUFBQUFBQUlBCkFB
QUFBQUFBckJBQUFBQUFBQUJtQUFBQUF3QXVkR1Y0ZEFBQUFBQUFBQUJuQUFBQUF3RndBQUFBQ2dB
QUFDRDl5aGdBQUFFQUFBQXUKWkdWaWRXY2tVd0FBQUFCb0FBQUFBd0dRQVFBQUVRQUFBQUFBQUFC
bkFBVUFBQUFBQUFBQTdSQUFBQUFBQUFCbkFDQUFBd0F1WW5OegpBQUFBQUFBQUFBQnBBQUFBQXdF
RUFBQUFBQUFBQUFBQUFBQUFBQUlBQUFBQUFBQUFJeEVBQUFBQUFBQnBBQUFBQXdBdWRHVjRkQUFB
CkFBQUFBQUJxQUFBQUF3RUVBUUFBSUFBQUFKQ2F2SUFBQUFFQUFBQXVaR1ZpZFdja1V3QUFBQUJy
QUFBQUF3SHNBUUFBR3dBQUFBQUEKQUFCcUFBVUFBQUFBQUFBQWF4RUFBQUFBQUFCcUFDQUFBZ0Fr
VEU0ek5RQUFBTThBQUFCcUFBQUFCZ0FrVEU0eUFBQUFBTHdBQUFCcQpBQUFBQmdBa1RFNHpBQUFB
QUtnQUFBQnFBQUFBQmdBa1RFNDBBQUFBQUpRQUFBQnFBQUFBQmdBa1RFNDFBQUFBQUlFQUFBQnFB
QUFBCkJnQWtURTQyQUFBQUFHMEFBQUJxQUFBQUJnQWtURTQzQUFBQUFGa0FBQUJxQUFBQUJnQWtU
RTQ0QUFBQUFFWUFBQUJxQUFBQUJnQWsKVEU0NUFBQUFBRElBQUFCcUFBQUFCZ0FrVEU0eE1BQUFB
Q01BQUFCcUFBQUFCZ0FrVEU0eE1RQUFBQlVBQUFCcUFBQUFCZ0FrVEU0MgpNQUFBQU5BQUFBQnFB
QUFBQXdBdWRHVjRkQUFBQUFBQUFBQnNBQUFBQXdFekJRQUFLQUFBQU1ZdmFWUUFBQUVBQUFBdVpH
VmlkV2NrClV3QUFBQUJ0QUFBQUF3RmdCUUFBT3dBQUFBQUFBQUJzQUFVQUFBQUFBQUFBbnhFQUFB
QUFBQUJzQUNBQUFnQUFBQUFBNFJFQUFBQUEKQUFBQUFBQUFBZ0FBQUFBQTl4RUFBQUFBQUFBQUFB
QUFBZ0FBQUFBQUZ4SUFBQUFBQUFBQUFBQUFBZ0FBQUFBQU1CSUFBQUFBQUFBQQpBQUFBQWdBQUFB
QUFVQklBQUFBQUFBQUFBQUFBQWdBQUFBQUFiaElBQUFBQUFBQUFBQUFBQWdBQUFBQUFqUklBQUFB
QUFBQUFBQUFBCkFnQUFBQUFBcUJJQUFBQUFBQUFBQUFBQUFnQUFBQUFBd3hJQUFBQUFBQUFBQUFB
QUFnQUFBQUFBM1JJQUFBQUFBQUFBQUFBQUFnQXUKY21SaGRHRUFBQUFBQUFCdUFBQUFBd0VFQUFB
QUFBQUFBRXJFNE4wQUFBSUFBQUFBQUFBQTlSSUFBQUFBQUFCdUFBQUFBZ0FBQUFBQQpCUk1BQUFB
QUFBQUFBQUFBQWdBQUFBQUFIQk1BQUFBQUFBQUFBQUFBQWdBQUFBQUFNaE1BQUFBQUFBQUFBQUFB
QWdBQUFBQUFTUk1BCkFBQUFBQUFBQUFBQUFnQUFBQUFBWWhNQUFBQUFBQUFBQUFBQUFnQXVjbVJo
ZEdFQUFBQUFBQUJ2QUFBQUF3RUVBQUFBQUFBQUFGWTIKWFdBQUFBSUFBQUFBQUFBQWZ4TUFBQUFB
QUFCdkFBQUFBZ0F1Y21SaGRHRUFBQUFBQUFCd0FBQUFBd0VFQUFBQUFBQUFBQUFBQUFBQQpBQUlB
QUFBQUFBQUFqeE1BQUFBQUFBQndBQUFBQWdBdWNtUmhkR0VBQUFBQUFBQnhBQUFBQXdFRUFBQUFB
QUFBQUhhMTVZMEFBQUlBCkFBQUFBQUFBbnhNQUFBQUFBQUJ4QUFBQUFnQUFBQUFBcnhNQUFBQUFB
QUFBQUFBQUFnQXVjbVJoZEdFQUFBQUFBQUJ5QUFBQUF3RUkKQUFBQUFBQUFBSURNMnFJQUFBSUFB
QUFBQUFBQXhoTUFBQUFBQUFCeUFBQUFBZ0F1ZEdWNGRBQUFBQUFBQUFCekFBQUFBd0VKQUFBQQpB
UUFBQURUcjIxa0FBQUlBQUFBdVpHVmlkV2NrVXdBQUFBQjBBQUFBQXdHd0FBQUFBd0FBQUFBQUFB
QnpBQVVBQUFBQUFBQUEzaE1BCkFBQUFBQUJ6QUNBQUFnQXVkR1Y0ZEFBQUFBQUFBQUIxQUFBQUF3
RUpBQUFBQVFBQUFEVHIyMWtBQUFJQUFBQXVaR1ZpZFdja1V3QUEKQUFCMkFBQUFBd0hBQUFBQUF3
QUFBQUFBQUFCMUFBVUFBQUFBQUFBQStCTUFBQUFBQUFCMUFDQUFBZ0F1Y21SaGRHRUFBQUFBQUFC
MwpBQUFBQXdFWUFBQUFCZ0FBQUFBQUFBQUFBQUlBQUFBQUFBQUFHUlFBQUFBQUFBQjNBQUFBQWdB
QUFBQUFPQlFBQUFBQUFBQUFBQ0FBCkFnQUFBQUFBWFJRQUFBQUFBQUFBQUNBQWFRRi9BUUFBQWdB
QUFBQUFBQUFBQUFBQUFBQXVkR1Y0ZEFBQUFBQUFBQUI0QUFBQUF3RUgKQUFBQUFRQUFBS3JoaThB
QUFBSUFBQUF1WkdWaWRXY2tVd0FBQUFCNUFBQUFBd0hBQUFBQUF3QUFBQUFBQUFCNEFBVUFBQUFB
QUFBQQpnaFFBQUFBQUFBQjRBQ0FBQWdBdWRHVjRkQUFBQUFBQUFBQjZBQUFBQXdFZkFBQUFBZ0FB
QUx0STg1b0FBQUlBQUFBdVpHVmlkV2NrClV3QUFBQUI3QUFBQUF3SGtBQUFBQXdBQUFBQUFBQUI2
QUFVQUFBQUFBQUFBb3hRQUFBQUFBQUI2QUNBQUFnQXVkR1Y0ZEFBQUFBQUEKQUFCOEFBQUFBd0Vz
QVFBQUNRQUFBRlA1TnhrQUFBRUFBQUF1WkdWaWRXY2tVd0FBQUFCOUFBQUFBd0VJQWdBQUZ3QUFB
QUFBQUFCOApBQVVBQUFBQUFBQUF5QlFBQUFBQUFBQjhBQ0FBQWdBdWRHVjRkQUFBQUFBQUFBQitB
QUFBQXdGL0FBQUFCZ0FBQUE3bXlXTUFBQUVBCkFBQXVaR1ZpZFdja1V3QUFBQUIvQUFBQUF3RlFB
UUFBQ1FBQUFBQUFBQUIrQUFVQUFBQUFBQUFBQ0JVQUFBQUFBQUIrQUNBQUFnQXUKZEdWNGRBQUFB
QUFBQUFDQUFBQUFBd0VKQUFBQUFRQUFBRFRyMjFrQUFBSUFBQUF1WkdWaWRXY2tVd0FBQUFDQkFB
QUFBd0hJQUFBQQpBd0FBQUFBQUFBQ0FBQVVBQUFBQUFBQUFRUlVBQUFBQUFBQ0FBQ0FBQWdBdWNt
UmhkR0VBQUFBQUFBQ0NBQUFBQXdFWUFBQUFCZ0FBCkFBQUFBQUFBQUFJQUFBQUFBQUFBWmhVQUFB
QUFBQUNDQUFBQUFnQUFBQUFBaVJVQUFBQUFBQUFBQUNBQUFnQUFBQUFBc2hVQUFBQUEKQUFBQUFD
QUFhUUdlQVFBQUFnQUFBQUFBQUFBQUFBQUFBQUF1ZEdWNGRBQUFBQUFBQUFDREFBQUFBd0VQQUFB
QUFRQUFBTzdzaWMwQQpBQUlBQUFBdVpHVmlkV2NrVXdBQUFBQ0VBQUFBQXdFa0FRQUFCd0FBQUFB
QUFBQ0RBQVVBQUFBQUFBQUEyeFVBQUFBQUFBQ0RBQ0FBCkFnQXVkR1Y0ZEFBQUFBQUFBQUNGQUFB
QUF3RVBBQUFBQVFBQUFMLytTNGNBQUFJQUFBQXVaR1ZpZFdja1V3QUFBQUNHQUFBQUF3RVUKQVFB
QUJ3QUFBQUFBQUFDRkFBVUFBQUFBQUFBQUxSWUFBQUFBQUFDRkFDQUFBZ0F1ZEdWNGRBQUFBQUFB
QUFDSEFBQUFBd0VIQUFBQQpBUUFBQUtyaGk4QUFBQUlBQUFBdVpHVmlkV2NrVXdBQUFBQ0lBQUFB
QXdISUFBQUFBd0FBQUFBQUFBQ0hBQVVBQUFBQUFBQUFlaFlBCkFBQUFBQUNIQUNBQUFnQXVkR1Y0
ZEFBQUFBQUFBQUNKQUFBQUF3RWZBQUFBQWdBQUFMdEk4NW9BQUFJQUFBQXVaR1ZpZFdja1V3QUEK
QUFDS0FBQUFBd0hvQUFBQUF3QUFBQUFBQUFDSkFBVUFBQUFBQUFBQW54WUFBQUFBQUFDSkFDQUFB
Z0F1ZEdWNGRBQUFBQUFBQUFDTApBQUFBQXdFSkFBQUFBUUFBQURUcjIxa0FBQUlBQUFBdVpHVmlk
V2NrVXdBQUFBQ01BQUFBQXdITUFBQUFBd0FBQUFBQUFBQ0xBQVVBCkFBQUFBQUFBeUJZQUFBQUFB
QUNMQUNBQUFnQXVjbVJoZEdFQUFBQUFBQUNOQUFBQUF3RVlBQUFBQmdBQUFBQUFBQUFBQUFJQUFB
QUEKQUFBQTd4WUFBQUFBQUFDTkFBQUFBZ0FBQUFBQUZCY0FBQUFBQUFBQUFDQUFBZ0FBQUFBQVB4
Y0FBQUFBQUFBQUFDQUFhUUc5QVFBQQpBZ0FBQUFBQUFBQUFBQUFBQUFBdWRHVjRkQUFBQUFBQUFB
Q09BQUFBQXdFUEFBQUFBUUFBQU83c2ljMEFBQUlBQUFBdVpHVmlkV2NrClV3QUFBQUNQQUFBQUF3
RW9BUUFBQndBQUFBQUFBQUNPQUFVQUFBQUFBQUFBYWhjQUFBQUFBQUNPQUNBQUFnQXVkR1Y0ZEFB
QUFBQUEKQUFDUUFBQUFBd0VQQUFBQUFRQUFBTC8rUzRjQUFBSUFBQUF1WkdWaWRXY2tVd0FBQUFD
UkFBQUFBd0VZQVFBQUJ3QUFBQUFBQUFDUQpBQVVBQUFBQUFBQUF2aGNBQUFBQUFBQ1FBQ0FBQWdB
dWRHVjRkQUFBQUFBQUFBQ1NBQUFBQXdFSEFBQUFBUUFBQUtyaGk4QUFBQUlBCkFBQXVaR1ZpZFdj
a1V3QUFBQUNUQUFBQUF3SE1BQUFBQXdBQUFBQUFBQUNTQUFVQUFBQUFBQUFBRFJnQUFBQUFBQUNT
QUNBQUFnQXUKZEdWNGRBQUFBQUFBQUFDVUFBQUFBd0VmQUFBQUFnQUFBTHRJODVvQUFBSUFBQUF1
WkdWaWRXY2tVd0FBQUFDVkFBQUFBd0hzQUFBQQpBd0FBQUFBQUFBQ1VBQVVBQUFBQUFBQUFOQmdB
QUFBQUFBQ1VBQ0FBQWdBdWRHVjRkQUFBQUFBQUFBQ1dBQUFBQXdGOUFBQUFDd0FBCkFMRVhCRmdB
QUFFQUFBQXVaR1ZpZFdja1V3QUFBQUNYQUFBQUF3R29BUUFBRFFBQUFBQUFBQUNXQUFVQUFBQUFB
QUFBWHhnQUFBQUEKQUFDV0FDQUFBZ0FrVEU0eEFBQUFBR01BQUFDV0FBQUFCZ0F1WW5OekFBQUFB
QUFBQUFDWUFBQUFBd0VFQUFBQUFBQUFBQUFBQUFBQQpBQUlBQUFBQUFBQUFuaGdBQUFBQUFBQ1lB
QUFBQXdBQUFBQUFEeGtBQUFBQUFBQUFBQ0FBQWdBdVluTnpBQUFBQUFBQUFBQ1pBQUFBCkF3RUVB
QUFBQUFBQUFBQUFBQUFBQUFJQUFBQUFBQUFBSEJrQUFBQUFBQUNaQUFBQUF3QWtURTQwQUFBQUFC
b0FBQUNXQUFBQUJnQWsKVEU0eE9RQUFBR2dBQUFDV0FBQUFBd0FrVEU0eE53QUFBSEFBQUFDV0FB
QUFBd0F1ZEdWNGRBQUFBQUFBQUFDYUFBQUFBd0U3QUFBQQpCd0FBQVA3dkNBd0FBQUVBQUFBdVpH
VmlkV2NrVXdBQUFBQ2JBQUFBQXdFZ0FRQUFCd0FBQUFBQUFBQ2FBQVVBQUFBQUFBQUFaeGtBCkFB
QUFBQUNhQUNBQUFnQXVZbk56QUFBQUFBQUFBQUNjQUFBQUF3RUVBQUFBQUFBQUFBQUFBQUFBQUFJ
QUFBQUFBQUFBcEJrQUFBQUEKQUFDY0FBQUFBd0F1WW5OekFBQUFBQUFBQUFDZEFBQUFBd0VFQUFB
QUFBQUFBQUFBQUFBQUFBSUFBQUFBQUFBQUZSb0FBQUFBQUFDZApBQUFBQXdBdVpHVmlkV2NrVXdB
QUFBQ2VBQUFBQXdFZ0FBQUFBZ0FBQUFBQUFBQ1pBQVVBQUFBdVpHVmlkV2NrVXdBQUFBQ2ZBQUFB
CkF3RWdBQUFBQWdBQUFBQUFBQUNkQUFVQUFBQXVaR1ZpZFdja1ZBQUFBQUNnQUFBQUF3RmtBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQmUKR2dBQVgwMWxaR2xoUm1GemRFWnZjbmRoY21SSmJXRm5aVVJo
ZEdGZmNHNW5BRjlOWldScFlVWmhjM1JHYjNKM1lYSmtVSEpsYzNObApaRWx0WVdkbFJHRjBZVjl3
Ym1jQVgwMWxaR2xoUm5Wc2JGWnZiSFZ0WlVsdFlXZGxSR0YwWVY5d2JtY0FYMDFsWkdsaFJuVnNi
Rlp2CmJIVnRaVkJ5WlhOelpXUkpiV0ZuWlVSaGRHRmZjRzVuQUY5TlpXUnBZVVoxYkd4elkzSmxa
VzVKYldGblpVUmhkR0ZmY0c1bkFGOU4KWldScFlVWjFiR3h6WTNKbFpXNVFjbVZ6YzJWa1NXMWha
MlZFWVhSaFgzQnVad0JmVFdWa2FXRk5kWFJsU1cxaFoyVkVZWFJoWDNCdQpad0JmVFdWa2FXRk5k
WFJsVUhKbGMzTmxaRWx0WVdkbFJHRjBZVjl3Ym1jQVgwMWxaR2xoVUdGMWMyVkpiV0ZuWlVSaGRH
RmZjRzVuCkFGOU5aV1JwWVZCaGRYTmxVSEpsYzNObFpFbHRZV2RsUkdGMFlWOXdibWNBWDAxbFpH
bGhVR3hoZVVsdFlXZGxSR0YwWVY5d2JtY0EKWDAxbFpHbGhVR3hoZVZCeVpYTnpaV1JKYldGblpV
UmhkR0ZmY0c1bkFGOU5aV1JwWVZKbGQybHVaRWx0WVdkbFJHRjBZVjl3Ym1jQQpYMDFsWkdsaFVt
VjNhVzVrVUhKbGMzTmxaRWx0WVdkbFJHRjBZVjl3Ym1jQVgwMWxaR2xoVTJ4cFpHVnlWSEpoWTJ0
TVpXWjBRMkZ3ClNXMWhaMlZFWVhSaFgzQnVad0JmVFdWa2FXRlRiR2xrWlhKVWNtRmphMHhsWm5S
RFlYQk1iMkZrYVc1blNXMWhaMlZFWVhSaFgzQnUKWndCZlRXVmthV0ZUYkdsa1pYSlVjbUZqYTAx
cFpHUnNaVWx0WVdkbFJHRjBZVjl3Ym1jQVgwMWxaR2xoVTJ4cFpHVnlWSEpoWTJ0TgphV1JrYkdW
TWIyRmthVzVuU1cxaFoyVkVZWFJoWDNCdVp3QmZUV1ZrYVdGVGJHbGtaWEpVY21GamExSnBaMmgw
UTJGd1NXMWhaMlZFCllYUmhYM0J1WndCZlRXVmthV0ZUYkdsa1pYSlVjbUZqYTFKcFoyaDBRMkZ3
VEc5aFpHbHVaMGx0WVdkbFJHRjBZVjl3Ym1jQVgwMWwKWkdsaFZHaDFiV0pKYldGblpVUmhkR0Zm
Y0c1bkFGOU5aV1JwWVZSb2RXMWlVSEpsYzNObFpFbHRZV2RsUkdGMFlWOXdibWNBWDAxbApaR2xo
Vkc5bloyeGxRMkZ3ZEdsdmJuTkpiV0ZuWlVSaGRHRmZjRzVuQUY5TlpXUnBZVlJ2WjJkc1pVTmhj
SFJwYjI1elVISmxjM05sClpFbHRZV2RsUkdGMFlWOXdibWNBUDBOSFUybDZaVTFoYTJWQVFGbEJQ
MEZWUTBkVGFYcGxRRUJOVFVCYUFGOWZabXgwZFhObFpBQS8KUTBkU1pXTjBUV0ZyWlVCQVdVRS9R
VlZEUjFKbFkzUkFRRTFOVFUxQVdnQS9QekZOWldScFlWVkpSV3hsYldWdWRFQkFWVUZGUUZoYQpB
RDgvWHpkTlpXUnBZVlZKUld4bGJXVnVkRUJBTmtKQUFEOC9YMGROWldScFlWVkpSV3hsYldWdWRF
QkFWVUZGVUVGWVNVQmFBRDgvClgwVk5aV1JwWVZWSlJXeGxiV1Z1ZEVCQVZVRkZVRUZZU1VCYUFG
OWZjSFZ5WldOaGJHd0FQM05sZEZWd1EyOXVkR1Y0ZEVadmNsQmgKYVc1MGFXNW5RRTFsWkdsaFZV
bEZiR1Z0Wlc1MFFFQk5Ra1ZZVUVGVlEwZERiMjUwWlhoMFFFQlZRMGRTWldOMFFFQkFXZ0EvY21W
egpkRzl5WlVOdmJuUmxlSFJCWm5SbGNsQmhhVzUwYVc1blFFMWxaR2xoVlVsRmJHVnRaVzUwUUVC
TlFrVllVRUZWUTBkRGIyNTBaWGgwClFFQkFXZ0EvYUdsMFZHVnpkRUJOWldScFlWVkpSV3hsYldW
dWRFQkFWVUpGWDA1VlEwZFNaV04wUUVCVlEwZFFiMmx1ZEVCQVFGb0EKWDE5cGJYQmZYME5IVW1W
amRFTnZiblJoYVc1elVHOXBiblFBUDI1aGRIVnlZV3hUYVhwbFFFMWxaR2xoVlVsRmJHVnRaVzUw
UUVCVgpRa1UvUVZWRFIxTnBlbVZBUUZoYUFGOWZhVzF3WDE5RFIxTnBlbVZhWlhKdkFEOXpaWFJR
WVhKMFNVUkFUV1ZrYVdGVlNVVnNaVzFsCmJuUkFRRkZCUlZoSVFGb0FQM0JoY25SSlJFQk5aV1Jw
WVZWSlJXeGxiV1Z1ZEVCQVVVSkZTRmhhQUQ5cGMxQnlaWE56WldSQVRXVmsKYVdGVlNVVnNaVzFs
Ym5SQVFGRkNSVjlPV0ZvQVB6OWZSMDFsWkdsaFZVbEZiR1Z0Wlc1MFFFQlZRVVZRUVZoSlFGb0FQ
ejh6UUZsQgpXRkJCV0VCYUFEOTBhVzFsVEc5aFpHVmtRRTFsWkdsaFZVbFVhVzFsYkdsdVpWTnNh
V1JsY2tCQVVVSkZUbGhhQUQ5a2RYSmhkR2x2CmJrQk5aV1JwWVZWSlZHbHRaV3hwYm1WVGJHbGta
WEpBUUZGQ1JVNVlXZ0EvWm5KaFkzUnBiMjVNYjJGa1pXUkFUV1ZrYVdGVlNWUnAKYldWc2FXNWxV
MnhwWkdWeVFFQlJRa1ZPV0ZvQVgxOXlaV0ZzUURBd01EQXdNREF3TURBd01EQXdNREFBUDBOSFJt
eHZiM0pBUUZsQgpUVTFBV2dBL2JXVmthV0ZRVGtkR2RXeHNjMk55WldWdVNXMWhaMlZBUUZsQlVF
RlZRMGRKYldGblpVQkFXRm9BWDE5cGJYQmZYME5HClVtVnNaV0Z6WlFCZlgybHRjRjlmUTBkSmJX
Rm5aVU55WldGMFpWZHBkR2hRVGtkRVlYUmhVSEp2ZG1sa1pYSUFYMTlwYlhCZlgwTkgKUkdGMFlW
QnliM1pwWkdWeVEzSmxZWFJsVjJsMGFFTkdSR0YwWVFCZlgybHRjRjlmUTBaRVlYUmhRM0psWVhS
bFYybDBhRUo1ZEdWegpUbTlEYjNCNUFGOWZhVzF3WDE5clEwWkJiR3h2WTJGMGIzSkVaV1poZFd4
MEFGOWZhVzF3WDE5clEwWkJiR3h2WTJGMGIzSk9kV3hzCkFEOXBiV0ZuWlVBL01UOC9iV1ZrYVdG
UVRrZEdkV3hzYzJOeVpXVnVTVzFoWjJWQVFGbEJVRUZWUTBkSmJXRm5aVUJBV0ZwQU5GQkIKVlRK
QVFRQS9iV1ZrYVdGUVRrZEdkV3hzYzJOeVpXVnVVSEpsYzNObFpFbHRZV2RsUUVCWlFWQkJWVU5I
U1cxaFoyVkFRRmhhQUQ5cApiV0ZuWlVBL01UOC9iV1ZrYVdGUVRrZEdkV3hzYzJOeVpXVnVVSEps
YzNObFpFbHRZV2RsUUVCWlFWQkJWVU5IU1cxaFoyVkFRRmhhClFEUlFRVlV5UUVFQVAyMWxaR2xo
VUU1SFRYVjBaVWx0WVdkbFFFQlpRVkJCVlVOSFNXMWhaMlZBUUZoYUFEOXBiV0ZuWlVBL01UOC8K
YldWa2FXRlFUa2ROZFhSbFNXMWhaMlZBUUZsQlVFRlZRMGRKYldGblpVQkFXRnBBTkZCQlZUSkFR
UUEvYldWa2FXRlFUa2ROZFhSbApVSEpsYzNObFpFbHRZV2RsUUVCWlFWQkJWVU5IU1cxaFoyVkFR
RmhhQUQ5cGJXRm5aVUEvTVQ4L2JXVmthV0ZRVGtkTmRYUmxVSEpsCmMzTmxaRWx0WVdkbFFFQlpR
VkJCVlVOSFNXMWhaMlZBUUZoYVFEUlFRVlV5UUVFQVAyMWxaR2xoVUU1SFVHRjFjMlZKYldGblpV
QkEKV1VGUVFWVkRSMGx0WVdkbFFFQllXZ0EvYVcxaFoyVkFQekUvUDIxbFpHbGhVRTVIVUdGMWMy
VkpiV0ZuWlVCQVdVRlFRVlZEUjBsdApZV2RsUUVCWVdrQTBVRUZWTWtCQkFEOXRaV1JwWVZCT1Ix
QmhkWE5sVUhKbGMzTmxaRWx0WVdkbFFFQlpRVkJCVlVOSFNXMWhaMlZBClFGaGFBRDlwYldGblpV
QS9NVDgvYldWa2FXRlFUa2RRWVhWelpWQnlaWE56WldSSmJXRm5aVUJBV1VGUVFWVkRSMGx0WVdk
bFFFQlkKV2tBMFVFRlZNa0JCQUQ5dFpXUnBZVkJPUjFCc1lYbEpiV0ZuWlVCQVdVRlFRVlZEUjBs
dFlXZGxRRUJZV2dBL2FXMWhaMlZBUHpFLwpQMjFsWkdsaFVFNUhVR3hoZVVsdFlXZGxRRUJaUVZC
QlZVTkhTVzFoWjJWQVFGaGFRRFJRUVZVeVFFRUFQMjFsWkdsaFVFNUhVR3hoCmVWQnlaWE56WldS
SmJXRm5aVUJBV1VGUVFWVkRSMGx0WVdkbFFFQllXZ0EvYVcxaFoyVkFQekUvUDIxbFpHbGhVRTVI
VUd4aGVWQnkKWlhOelpXUkpiV0ZuWlVCQVdVRlFRVlZEUjBsdFlXZGxRRUJZV2tBMFVFRlZNa0JC
QUQ5dFpXUnBZVkJPUjFKbGQybHVaRWx0WVdkbApRRUJaUVZCQlZVTkhTVzFoWjJWQVFGaGFBRDlw
YldGblpVQS9NVDgvYldWa2FXRlFUa2RTWlhkcGJtUkpiV0ZuWlVCQVdVRlFRVlZEClIwbHRZV2Rs
UUVCWVdrQTBVRUZWTWtCQkFEOXRaV1JwWVZCT1IxSmxkMmx1WkZCeVpYTnpaV1JKYldGblpVQkFX
VUZRUVZWRFIwbHQKWVdkbFFFQllXZ0EvYVcxaFoyVkFQekUvUDIxbFpHbGhVRTVIVW1WM2FXNWtV
SEpsYzNObFpFbHRZV2RsUUVCWlFWQkJWVU5IU1cxaApaMlZBUUZoYVFEUlFRVlV5UUVFQVAyMWxa
R2xoVUU1SFJtRnpkRVp2Y25kaGNtUkpiV0ZuWlVCQVdVRlFRVlZEUjBsdFlXZGxRRUJZCldnQS9h
VzFoWjJWQVB6RS9QMjFsWkdsaFVFNUhSbUZ6ZEVadmNuZGhjbVJKYldGblpVQkFXVUZRUVZWRFIw
bHRZV2RsUUVCWVdrQTAKVUVGVk1rQkJBRDl0WldScFlWQk9SMFpoYzNSR2IzSjNZWEprVUhKbGMz
TmxaRWx0WVdkbFFFQlpRVkJCVlVOSFNXMWhaMlZBUUZoYQpBRDlwYldGblpVQS9NVDgvYldWa2FX
RlFUa2RHWVhOMFJtOXlkMkZ5WkZCeVpYTnpaV1JKYldGblpVQkFXVUZRUVZWRFIwbHRZV2RsClFF
QllXa0EwVUVGVk1rQkJBRDl0WldScFlWQk9SMU5zYVdSbGNsUnlZV05yVEdWbWRFTmhjRWx0WVdk
bFFFQlpRVkJCVlVOSFNXMWgKWjJWQVFGaGFBRDlwYldGblpVQS9NVDgvYldWa2FXRlFUa2RUYkds
a1pYSlVjbUZqYTB4bFpuUkRZWEJKYldGblpVQkFXVUZRUVZWRApSMGx0WVdkbFFFQllXa0EwVUVG
Vk1rQkJBRDl0WldScFlWQk9SMU5zYVdSbGNsUnlZV05yVEdWbWRFTmhjRXh2WVdScGJtZEpiV0Zu
ClpVQkFXVUZRUVZWRFIwbHRZV2RsUUVCWVdnQS9hVzFoWjJWQVB6RS9QMjFsWkdsaFVFNUhVMnhw
WkdWeVZISmhZMnRNWldaMFEyRncKVEc5aFpHbHVaMGx0WVdkbFFFQlpRVkJCVlVOSFNXMWhaMlZB
UUZoYVFEUlFRVlV5UUVFQVAyMWxaR2xoVUU1SFUyeHBaR1Z5VkhKaApZMnROYVdSa2JHVkpiV0Zu
WlVCQVdVRlFRVlZEUjBsdFlXZGxRRUJZV2dBL2FXMWhaMlZBUHpFL1AyMWxaR2xoVUU1SFUyeHBa
R1Z5ClZISmhZMnROYVdSa2JHVkpiV0ZuWlVCQVdVRlFRVlZEUjBsdFlXZGxRRUJZV2tBMFVFRlZN
a0JCQUQ5dFpXUnBZVkJPUjFOc2FXUmwKY2xSeVlXTnJUV2xrWkd4bFRHOWhaR2x1WjBsdFlXZGxR
RUJaUVZCQlZVTkhTVzFoWjJWQVFGaGFBRDlwYldGblpVQS9NVDgvYldWawphV0ZRVGtkVGJHbGta
WEpVY21GamEwMXBaR1JzWlV4dllXUnBibWRKYldGblpVQkFXVUZRUVZWRFIwbHRZV2RsUUVCWVdr
QTBVRUZWCk1rQkJBRDl0WldScFlWQk9SMU5zYVdSbGNsUnlZV05yVW1sbmFIUkRZWEJKYldGblpV
QkFXVUZRUVZWRFIwbHRZV2RsUUVCWVdnQS8KYVcxaFoyVkFQekUvUDIxbFpHbGhVRTVIVTJ4cFpH
VnlWSEpoWTJ0U2FXZG9kRU5oY0VsdFlXZGxRRUJaUVZCQlZVTkhTVzFoWjJWQQpRRmhhUURSUVFW
VXlRRUVBUDIxbFpHbGhVRTVIVTJ4cFpHVnlWSEpoWTJ0U2FXZG9kRU5oY0V4dllXUnBibWRKYldG
blpVQkFXVUZRClFWVkRSMGx0WVdkbFFFQllXZ0EvYVcxaFoyVkFQekUvUDIxbFpHbGhVRTVIVTJ4
cFpHVnlWSEpoWTJ0U2FXZG9kRU5oY0V4dllXUnAKYm1kSmJXRm5aVUJBV1VGUVFWVkRSMGx0WVdk
bFFFQllXa0EwVUVGVk1rQkJBRDl0WldScFlWQk9SMVJvZFcxaVNXMWhaMlZBUUZsQgpVRUZWUTBk
SmJXRm5aVUJBV0ZvQVAybHRZV2RsUUQ4eFB6OXRaV1JwWVZCT1IxUm9kVzFpU1cxaFoyVkFRRmxC
VUVGVlEwZEpiV0ZuClpVQkFXRnBBTkZCQlZUSkFRUUEvYldWa2FXRlFUa2RVYUhWdFlsQnlaWE56
WldSSmJXRm5aVUJBV1VGUVFWVkRSMGx0WVdkbFFFQlkKV2dBL2FXMWhaMlZBUHpFL1AyMWxaR2xo
VUU1SFZHaDFiV0pRY21WemMyVmtTVzFoWjJWQVFGbEJVRUZWUTBkSmJXRm5aVUJBV0ZwQQpORkJC
VlRKQVFRQS9iV1ZrYVdGUVRrZEdkV3hzVm05c2RXMWxTVzFoWjJWQVFGbEJVRUZWUTBkSmJXRm5a
VUJBV0ZvQVAybHRZV2RsClFEOHhQejl0WldScFlWQk9SMFoxYkd4V2IyeDFiV1ZKYldGblpVQkFX
VUZRUVZWRFIwbHRZV2RsUUVCWVdrQTBVRUZWTWtCQkFEOXQKWldScFlWQk9SMFoxYkd4V2IyeDFi
V1ZRY21WemMyVmtTVzFoWjJWQVFGbEJVRUZWUTBkSmJXRm5aVUJBV0ZvQVAybHRZV2RsUUQ4eApQ
ejl0WldScFlWQk9SMFoxYkd4V2IyeDFiV1ZRY21WemMyVmtTVzFoWjJWQVFGbEJVRUZWUTBkSmJX
Rm5aVUJBV0ZwQU5GQkJWVEpBClFRQS9iV1ZrYVdGUVRrZFViMmRuYkdWRFlYQjBhVzl1YzBsdFlX
ZGxRRUJaUVZCQlZVTkhTVzFoWjJWQVFGaGFBRDlwYldGblpVQS8KTVQ4L2JXVmthV0ZRVGtkVWIy
ZG5iR1ZEWVhCMGFXOXVjMGx0WVdkbFFFQlpRVkJCVlVOSFNXMWhaMlZBUUZoYVFEUlFRVlV5UUVF
QQpQMjFsWkdsaFVFNUhWRzluWjJ4bFEyRndkR2x2Ym5OUWNtVnpjMlZrU1cxaFoyVkFRRmxCVUVG
VlEwZEpiV0ZuWlVCQVdGb0FQMmx0CllXZGxRRDh4UHo5dFpXUnBZVkJPUjFSdloyZHNaVU5oY0hS
cGIyNXpVSEpsYzNObFpFbHRZV2RsUUVCWlFWQkJWVU5IU1cxaFoyVkEKUUZoYVFEUlFRVlV5UUVF
QVAybHRZV2RsUUUxbFpHbGhUR1ZuWVdONVZVbEpiV0ZuWlVWc1pXMWxiblJBUUVGQ1JWQkJWVU5I
U1cxaApaMlZBUUZoYUFEOXdZV2x1ZEVCTlpXUnBZVXhsWjJGamVWVkpWR2x0Wld4cGJtVlRiR2xr
WlhKQVFGVkJSVmhRUVZWRFIwTnZiblJsCmVIUkFRRlZEUjFKbFkzUkFRRUJhQUY5ZmFXMXdYMTlE
UjB4aGVXVnlVbVZzWldGelpRQmZYMmx0Y0Y5ZlEwZERiMjUwWlhoMFJISmgKZDB4aGVXVnlTVzVT
WldOMEFGOWZhVzF3WDE5RFIweGhlV1Z5UjJWMFEyOXVkR1Y0ZEFCZlgybHRjRjlmUTBkTVlYbGxj
a055WldGMApaVmRwZEdoRGIyNTBaWGgwQUY5ZmFXMXdYMTlEUjBOdmJuUmxlSFJTWlhOMGIzSmxS
MU4wWVhSbEFGOWZhVzF3WDE5RFIwTnZiblJsCmVIUkVjbUYzVkdsc1pXUkpiV0ZuWlFCZlgybHRj
RjlmUTBkRGIyNTBaWGgwUTJ4cGNGUnZVbVZqZEFCZlgybHRjRjlmUTBkRGIyNTAKWlhoMFUyRjJa
VWRUZEdGMFpRQmZYMmx0Y0Y5ZlEwZERiMjUwWlhoMFJISmhkMGx0WVdkbEFGOWZhVzF3WDE5RFIw
bHRZV2RsUjJWMApTR1ZwWjJoMEFGOWZjbVZoYkVBMFpqZ3dNREF3TUFCZlgybHRjRjlmUTBkSmJX
Rm5aVWRsZEZkcFpIUm9BRjlmYVcxd1gxOURSMUpsClkzUkhaWFJYYVdSMGFBQmZYMmx0Y0Y5ZlEw
ZFNaV04wUjJWMFNHVnBaMmgwQUY5ZmFXMXdYMTlEUjBOdmJuUmxlSFJUWTJGc1pVTlUKVFFCZlgy
bHRjRjlmUTBkRGIyNTBaWGgwVkhKaGJuTnNZWFJsUTFSTkFGOWZjbVZoYkVCaVpqZ3dNREF3TUFC
ZlgzSmxZV3hBTURBdwpNREF3TURBQVgxOXlaV0ZzUURObU9EQXdNREF3QUY5ZmFXMXdYMTlEUjBO
dmJuUmxlSFJIWlhSRFZFMEFYMTl5WldGc1FETm1aakF3Ck1EQXdNREF3TURBd01EQUFQejh3VFdW
a2FXRlZTVVZzWlcxbGJuUkFRRkZCUlVCWVdnQS9QekJOWldScFlWVkpWR2x0Wld4cGJtVlQKYkds
a1pYSkFRRkZCUlVCWVdnQS9QMTgzVFdWa2FXRlZTVlJwYldWc2FXNWxVMnhwWkdWeVFFQTJRa0FB
UHo5ZlIwMWxaR2xoVlVsVQphVzFsYkdsdVpWTnNhV1JsY2tCQVZVRkZVRUZZU1VCYUFEOC9YMFZO
WldScFlWVkpWR2x0Wld4cGJtVlRiR2xrWlhKQVFGVkJSVkJCCldFbEFXZ0EvUHpGTlpXUnBZVlZK
VkdsdFpXeHBibVZUYkdsa1pYSkFRRlZCUlVCWVdnQS9QMTlIVFdWa2FXRlZTVlJwYldWc2FXNWwK
VTJ4cFpHVnlRRUJWUVVWUVFWaEpRRm9BUDNCaGFXNTBRRTFsWkdsaFRHVm5ZV041VlVsSmJXRm5a
VVZzWlcxbGJuUkFRRlZCUlZoUQpRVlZEUjBOdmJuUmxlSFJBUUZWRFIxSmxZM1JBUUVCYUFEOXVZ
WFIxY21Gc1UybDZaVUJOWldScFlVeGxaMkZqZVZWSlNXMWhaMlZGCmJHVnRaVzUwUUVCVlFrVS9R
VlZEUjFOcGVtVkFRRmhhQUQ4L01FMWxaR2xoVEdWbllXTjVWVWxKYldGblpVVnNaVzFsYm5SQVFG
RkIKUlVCWVdnQS9QMTgzVFdWa2FXRk1aV2RoWTNsVlNVbHRZV2RsUld4bGJXVnVkRUJBTmtKQUFE
OC9YMGROWldScFlVeGxaMkZqZVZWSgpTVzFoWjJWRmJHVnRaVzUwUUVCVlFVVlFRVmhKUUZvQVB6
OWZSVTFsWkdsaFRHVm5ZV041VlVsSmJXRm5aVVZzWlcxbGJuUkFRRlZCClJWQkJXRWxBV2dBL2My
VjBWWEJEYjI1MFpYaDBSbTl5VUdGcGJuUnBibWRBVFdWa2FXRk1aV2RoWTNsVlNVbHRZV2RsUld4
bGJXVnUKZEVCQVJVSkZXRkJCVlVOSFEyOXVkR1Y0ZEVCQVZVTkhVbVZqZEVCQVFGb0FQM0psYzNS
dmNtVkRiMjUwWlhoMFFXWjBaWEpRWVdsdQpkR2x1WjBCTlpXUnBZVXhsWjJGamVWVkpTVzFoWjJW
RmJHVnRaVzUwUUVCRlFrVllVRUZWUTBkRGIyNTBaWGgwUUVCQVdnQS9QekZOClpXUnBZVXhsWjJG
amVWVkpTVzFoWjJWRmJHVnRaVzUwUUVCVlFVVkFXRm9BUHo5ZlIwMWxaR2xoVEdWbllXTjVWVWxK
YldGblpVVnMKWlcxbGJuUkFRRlZCUlZCQldFbEFXZ0EvUHpCTlpXUnBZVXhsWjJGamVWVkpWR2x0
Wld4cGJtVlRiR2xrWlhKQVFGRkJSVUJZV2dBLwpQMTgzVFdWa2FXRk1aV2RoWTNsVlNWUnBiV1Zz
YVc1bFUyeHBaR1Z5UUVBMlFrQUFQejlmUjAxbFpHbGhUR1ZuWVdONVZVbFVhVzFsCmJHbHVaVk5z
YVdSbGNrQkFWVUZGVUVGWVNVQmFBRDgvWDBWTlpXUnBZVXhsWjJGamVWVkpWR2x0Wld4cGJtVlRi
R2xrWlhKQVFGVkIKUlZCQldFbEFXZ0EvYzJWMFZYQkRiMjUwWlhoMFJtOXlVR0ZwYm5ScGJtZEFU
V1ZrYVdGTVpXZGhZM2xWU1ZScGJXVnNhVzVsVTJ4cApaR1Z5UUVCRlFrVllVRUZWUTBkRGIyNTBa
WGgwUUVCVlEwZFNaV04wUUVCQVdnQS9jbVZ6ZEc5eVpVTnZiblJsZUhSQlpuUmxjbEJoCmFXNTBh
VzVuUUUxbFpHbGhUR1ZuWVdONVZVbFVhVzFsYkdsdVpWTnNhV1JsY2tCQVJVSkZXRkJCVlVOSFEy
OXVkR1Y0ZEVCQVFGb0EKUHo4eFRXVmthV0ZNWldkaFkzbFZTVlJwYldWc2FXNWxVMnhwWkdWeVFF
QlZRVVZBV0ZvQVB6OWZSMDFsWkdsaFRHVm5ZV041VlVsVQphVzFsYkdsdVpWTnNhV1JsY2tCQVZV
RkZVRUZZU1VCYUFEOWpiMjUwY205c1JtOXlVR0Z5ZEVCTlpXUnBZVXhsWjJGamVVTnZiblJ5CmIy
eHpRRUJWUWtWUVFWWk5aV1JwWVZWSlJXeGxiV1Z1ZEVCQVNFQmFBRDl6YUdGeVpXUkNkWFIwYjI1
QVB6US9QMk52Ym5SeWIyeEcKYjNKUVlYSjBRRTFsWkdsaFRHVm5ZV041UTI5dWRISnZiSE5BUUZW
Q1JWQkJWazFsWkdsaFZVbEZiR1Z0Wlc1MFFFQklRRnBBTkZCQgpWazFsWkdsaFRHVm5ZV041VlVs
SmJXRm5aVVZzWlcxbGJuUkFRRUVBUHo4eVFGbEJVRUZZU1VCYUFEOGtVekZBUHpRL1AyTnZiblJ5
CmIyeEdiM0pRWVhKMFFFMWxaR2xoVEdWbllXTjVRMjl1ZEhKdmJITkFRRlZDUlZCQlZrMWxaR2xo
VlVsRmJHVnRaVzUwUUVCSVFGcEEKTkVsQkFEOXpiR2xrWlhKQVRXVmthV0ZNWldkaFkzbERiMjUw
Y205c2MwQkFWVUpGVUVGV1RXVmthV0ZWU1ZScGJXVnNhVzVsVTJ4cApaR1Z5UUVCWVdnQS9jMmho
Y21Wa1UyeHBaR1Z5UUQ4eFB6OXpiR2xrWlhKQVRXVmthV0ZNWldkaFkzbERiMjUwY205c2MwQkFW
VUpGClVFRldUV1ZrYVdGVlNWUnBiV1ZzYVc1bFUyeHBaR1Z5UUVCWVdrQTBVRUZXVFdWa2FXRk1a
V2RoWTNsVlNWUnBiV1ZzYVc1bFUyeHAKWkdWeVFFQkJBRDhrVXpKQVB6RS9QM05zYVdSbGNrQk5a
V1JwWVV4bFoyRmplVU52Ym5SeWIyeHpRRUJWUWtWUVFWWk5aV1JwWVZWSgpWR2x0Wld4cGJtVlRi
R2xrWlhKQVFGaGFRRFJKUVFBSwoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78154</attachid>
            <date>2011-01-06 13:36:02 -0800</date>
            <delta_ts>2011-01-06 18:12:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-49388-20110106133602.patch</filename>
            <type>text/plain</type>
            <size>39103</size>
            <attacher name="Chris Marrin">cmarrin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3NTE5MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNzkgQEAKKzIwMTEtMDEtMDYgIENocmlzIE1hcnJpbiAgPGNtYXJyaW5AYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNo
YXJlIGNvZGUgYmV0d2VlbiBNYWMgKENBKSBhbmQgV2luZG93cyAoQ0FDRikgR3JhcGhpY3NMYXll
ciBpbXBsZW1lbnRhdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQ5Mzg4CisKKyAgICAgICAgQ2hhbmdlZCBQbGF0Zm9ybUNBTGF5ZXIgQVBJLiBB
ZGRlZCBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQgYWJzdHJhY3QgY2xhc3Mgd2hpY2ggaXMKKyAgICAg
ICAgdXNlZCB0byBjb21tdW5pY2F0ZSBmcm9tIFBsYXRmb3JtQ0FMYXllciB0byB0aGUgb3duZXIu
IFRoaXMgcmVwbGFjZXMgcGFzc2luZworICAgICAgICBHcmFwaGljc0xheWVyQ0EgcG9pbnRlciB3
aGVuIGNyZWF0aW5nIFBsYXRmb3JtQ0FMYXllci4gSXQgYWxzbyBpbmNsdWRlcyB0aGUKKyAgICAg
ICAgQVBJIHRoYXQgdXNlZCB0byBiZSBpbiBQbGF0Zm9ybUNBTGF5ZXJMYXlvdXQuIEdyYXBoaWNz
TGF5ZXJDQSBub3cgaW1wbGVtZW50cworICAgICAgICB0aGUgUGxhdGZvcm1DQUxheWVyQ2xpZW50
IEFQSS4KKworICAgICAgICBUaGlzIGNoYW5nZSBoYXMgbGl0dGxlIGltcGFjdCBvbiB0aGUgTWFj
IHNpZGUgYnV0IG1ha2VzIHRoZSBXaW5kb3dzCisgICAgICAgIGludGVyZmFjZSBzaW1wbGVyLCBl
c3BlY2lhbGx5IHdoZW4gaGFuZGxpbmcgdmlkZW8gbGF5ZXJzIG9uIFdpbmRvd3MuCisKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogY29uZmln
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6bGF5ZXJEaWREaXNwbGF5KToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXI6OnNob3dEZWJ1Z0JvcmRlcnMpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NMYXllcjo6c2hvd1JlcGFpbnRDb3VudGVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllckNBOjpwbGF0Zm9ybUNBTGF5ZXJBbmltYXRpb25TdGFydGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6c2V0Q29udGVudHNUb0ltYWdlKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6c2V0Q29udGVudHNUb01lZGlhKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6bGF5ZXJEaWREaXNwbGF5KToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlU3VibGF5ZXJMaXN0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXJDQTo6cGxhdGZvcm1DQUxheWVyTGF5b3V0U3VibGF5ZXJzT2ZMYXllcik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnBsYXRmb3JtQ0FMYXllclJlc3Bv
bmRzVG9MYXlvdXRDaGFuZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6
cGxhdGZvcm1DQUxheWVyQ29udGVudHNPcmllbnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0xheWVyQ0E6OnBsYXRmb3JtQ0FMYXllclBhaW50Q29udGVudHMpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpwbGF0Zm9ybUNBTGF5ZXJTaG93RGVidWdCb3JkZXJz
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6cGxhdGZvcm1DQUxheWVyU2hv
d1JlcGFpbnRDb3VudGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6cGxh
dGZvcm1DQUxheWVySW5jcmVtZW50UmVwYWludENvdW50KToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXJDQTo6cGxhdGZvcm1DQUxheWVyQ29udGVudHNPcGFxdWUpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpwbGF0Zm9ybUNBTGF5ZXJEcmF3c0NvbnRlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpwbGF0Zm9ybUNBTGF5ZXJMYXllckRp
ZERpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpwbGF0Zm9ybUNB
TGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5o
OgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpvd25lcik6CisgICAgICAgIChX
ZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OmFuaW1hdGlvblN0YXJ0ZWQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllckNsaWVudC5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllckNsaWVudDo6flBsYXRmb3JtQ0FMYXllckNsaWVu
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1BsYXRmb3JtQ0FMYXllck1h
Yy5tbToKKyAgICAgICAgKFBsYXRmb3JtQ0FMYXllcjo6c2V0T3duZXIpOgorICAgICAgICAoUGxh
dGZvcm1DQUxheWVyOjpjcmVhdGUpOgorICAgICAgICAoUGxhdGZvcm1DQUxheWVyOjpQbGF0Zm9y
bUNBTGF5ZXIpOgorICAgICAgICAoUGxhdGZvcm1DQUxheWVyOjpjb250ZW50cyk6CisgICAgICAg
IChQbGF0Zm9ybUNBTGF5ZXI6OnNldENvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9tYWMvV2ViR0xMYXllci5tbToKKyAgICAgICAgKC1bV2ViR0xMYXllciBkaXNwbGF5XSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLm1tOgorICAgICAgICAoZHJhd0xheWVyQ29u
dGVudHMpOgorICAgICAgICAoc2V0TGF5ZXJOZWVkc0Rpc3BsYXlJblJlY3QpOgorICAgICAgICAo
LVtXZWJMYXllciBzZXROZWVkc0Rpc3BsYXldKToKKyAgICAgICAgKC1bV2ViTGF5ZXIgZGlzcGxh
eV0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJUaWxlZExheWVyLm1tOgor
ICAgICAgICAoLVtXZWJUaWxlZExheWVyIHNldE5lZWRzRGlzcGxheV0pOgorICAgICAgICAoLVtX
ZWJUaWxlZExheWVyIGRpc3BsYXldKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJC
YWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6c2hvd0Rl
YnVnQm9yZGVycyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnNob3dS
ZXBhaW50Q291bnRlcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OmVuc3VyZVJv
b3RQbGF0Zm9ybUxheWVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3Np
dG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OmNvbXBvc2l0
b3JTaG93RGVidWdCb3JkZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9z
aXRvcjo6Y29tcG9zaXRvclNob3dSZXBhaW50Q291bnRlcik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJMYXllckNvbXBvc2l0b3I6Om5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpub3RpZnlTeW5jUmVxdWlyZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpwYWludENvbnRlbnRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6c2hvd0RlYnVnQm9yZGVycyk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnNob3dSZXBhaW50Q291
bnRlcik6CisKIDIwMTEtMDEtMDYgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCkluZGV4OiBXZWJDb3JlL2Nv
bmZpZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY29uZmlnLmgJKHJldmlzaW9uIDc1MTIzKQor
KysgV2ViQ29yZS9jb25maWcuaAkod29ya2luZyBjb3B5KQpAQCAtMjIwLDYgKzIyMCwxMSBAQCB0
eXBlZGVmIGZsb2F0IENHRmxvYXQ7CiAjZGVmaW5lIFdURl9VU0VfU0FGQVJJX1RIRU1FIDEKICNl
bmRpZgogCisvLyBDb3JlQW5pbWF0aW9uIGlzIGF2YWlsYWJsZSB0byBJT1MsIE1hYyBhbmQgV2lu
ZG93cyBpZiB1c2luZyBDRworI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oSU9TKSB8fCAo
UExBVEZPUk0oV0lOKSAmJiBQTEFURk9STShDRykpCisjZGVmaW5lIFdURl9QTEFURk9STV9DQSAx
CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKFFUKSAmJiBVU0UoVjgpICYmIGRlZmluZWQoUV9XU19Y
MTEpCiAvKiBwcm90ZWN0IG91cnNlbHZlcyBmcm9tIGV2aWwgWDExIGRlZmluZXMgKi8KICNpbmNs
dWRlIDxicmlkZ2UvbnBydW50aW1lX2ludGVybmFsLmg+CkluZGV4OiBXZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gNzUxMjMpCisrKyBXZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTAwNSw2
ICsxMDA1LDcgQEAKIAkJNDkwNzA3RTYxMjE5QzA0MzAwRDkwRTUxIC8qIEFOR0xFV2ViS2l0QnJp
ZGdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5
MDcwN0U0MTIxOUMwNDMwMEQ5MEU1MSAvKiBBTkdMRVdlYktpdEJyaWRnZS5jcHAgKi87IH07CiAJ
CTQ5MDcwN0U3MTIxOUMwNDMwMEQ5MEU1MSAvKiBBTkdMRVdlYktpdEJyaWRnZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDkwNzA3RTUxMjE5QzA0MzAw
RDkwRTUxIC8qIEFOR0xFV2ViS2l0QnJpZGdlLmggKi87IH07CiAJCTQ5Mjg2Mzk5MTI1M0I4RkMw
MEY3OTJENiAvKiBSZXNvdXJjZUxvYWRJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0OTI4NjM5ODEyNTNCOEZDMDBGNzkyRDYgLyogUmVzb3VyY2VM
b2FkSW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTQ5M0U1RTA5MTJENjQyMDUwMDAyMDA4MSAvKiBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5M0U1RTA4MTJE
NjQyMDUwMDAyMDA4MSAvKiBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQuaCAqLzsgfTsKIAkJNDk0ODRG
QzExMDJDRjIzQzAwMTg3REQzIC8qIENhbnZhc0dyYWRpZW50LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5NDg0RkIzMTAyQ0YyM0MwMDE4N0REMyAv
KiBDYW52YXNHcmFkaWVudC5jcHAgKi87IH07CiAJCTQ5NDg0RkMyMTAyQ0YyM0MwMDE4N0REMyAv
KiBDYW52YXNHcmFkaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDk0ODRGQjQxMDJDRjIzQzAwMTg3REQzIC8qIENhbnZhc0dyYWRpZW50LmggKi87
IH07CiAJCTQ5NDg0RkM0MTAyQ0YyM0MwMDE4N0REMyAvKiBDYW52YXNQYXR0ZXJuLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5NDg0RkI2MTAyQ0Yy
M0MwMDE4N0REMyAvKiBDYW52YXNQYXR0ZXJuLmNwcCAqLzsgfTsKQEAgLTczMjksNiArNzMzMCw3
IEBACiAJCTQ5MDcwN0U0MTIxOUMwNDMwMEQ5MEU1MSAvKiBBTkdMRVdlYktpdEJyaWRnZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBTkdMRVdlYktpdEJyaWRnZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5MDcwN0U1MTIxOUMwNDMwMEQ5MEU1
MSAvKiBBTkdMRVdlYktpdEJyaWRnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBBTkdMRVdlYktpdEJyaWRnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OTI4
NjM5ODEyNTNCOEZDMDBGNzkyRDYgLyogUmVzb3VyY2VMb2FkSW5mby5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZXNvdXJjZUxvYWRJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTQ5M0U1RTA4MTJENjQyMDUwMDAyMDA4MSAvKiBQbGF0Zm9ybUNBTGF5ZXJD
bGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUGxhdGZvcm1DQUxheWVy
Q2xpZW50Lmg7IHBhdGggPSBjYS9QbGF0Zm9ybUNBTGF5ZXJDbGllbnQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDk0ODRGQjMxMDJDRjIzQzAwMTg3REQzIC8qIENhbnZhc0dyYWRp
ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENhbnZhc0dyYWRp
ZW50LmNwcDsgcGF0aCA9IGNhbnZhcy9DYW52YXNHcmFkaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQ5NDg0RkI0MTAyQ0YyM0MwMDE4N0REMyAvKiBDYW52YXNHcmFkaWVu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDYW52YXNHcmFkaWVudC5oOyBw
YXRoID0gY2FudmFzL0NhbnZhc0dyYWRpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQ5NDg0RkI1MTAyQ0YyM0MwMDE4N0REMyAvKiBDYW52YXNHcmFkaWVudC5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBuYW1lID0gQ2FudmFzR3JhZGllbnQuaWRsOyBwYXRoID0gY2FudmFzL0NhbnZh
c0dyYWRpZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzMjM1LDYgKzEz
MjM3LDcgQEAKIAkJCQk0OTlCM0VENTEyOENEMzE0MDBFNzI2QzIgLyogR3JhcGhpY3NMYXllckNB
LmggKi8sCiAJCQkJNDk5QjNFREMxMjhEQjUwMTAwRTcyNkMyIC8qIFBsYXRmb3JtQ0FBbmltYXRp
b24uaCAqLywKIAkJCQk0OTlCM0VDMzEyOENDQzQ3MDBFNzI2QzIgLyogUGxhdGZvcm1DQUxheWVy
LmggKi8sCisJCQkJNDkzRTVFMDgxMkQ2NDIwNTAwMDIwMDgxIC8qIFBsYXRmb3JtQ0FMYXllckNs
aWVudC5oICovLAogCQkJCTQ5NEJDNDBDMTJBRUREOUUwMDc0M0JEMiAvKiBUcmFuc2Zvcm1hdGlv
bk1hdHJpeENBLmNwcCAqLywKIAkJCSk7CiAJCQluYW1lID0gY2E7CkBAIC0yMjI2NSw2ICsyMjI2
OCw3IEBACiAJCQkJN0VFNjg0NkQxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJN0VFNjg0NkYxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNl
UmVxdWVzdENGTmV0LmggaW4gSGVhZGVycyAqLywKIAkJCQk3RUU2ODQ3MDEyRDI2RTM4MDBFNzk0
MTUgLyogUmVzb3VyY2VSZXNwb25zZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDkzRTVFMDkxMkQ2
NDIwNTAwMDIwMDgxIC8qIFBsYXRmb3JtQ0FMYXllckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07Cklu
ZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAkocmV2aXNpb24g
NzUxMjMpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtNTMsMTAgKzUzLDcgQEAgdHlwZWRlZiBDQUxheWVyIFBsYXRmb3JtTGF5
ZXI7CiB0eXBlZGVmIHZvaWQqIFBsYXRmb3JtTGF5ZXI7CiAjZW5kaWYKICNlbGlmIFBMQVRGT1JN
KFdJTikKLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFdLQ0FDRkxheWVyOwotdHlwZWRlZiBX
S0NBQ0ZMYXllciBQbGF0Zm9ybUxheWVyOwotfQordHlwZWRlZiBzdHJ1Y3QgX0NBQ0ZMYXllciBQ
bGF0Zm9ybUxheWVyOwogI2VsaWYgUExBVEZPUk0oUVQpCiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVS
KQogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzE0LDcgKzMxMSw3IEBAIHB1YmxpYzoKICAgICAv
LyBDYWxsYmFjayBmcm9tIHRoZSB1bmRlcmx5aW5nIGdyYXBoaWNzIHN5c3RlbSB0byBkcmF3IGxh
eWVyIGNvbnRlbnRzLgogICAgIHZvaWQgcGFpbnRHcmFwaGljc0xheWVyQ29udGVudHMoR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgY2xpcCk7CiAgICAgLy8gQ2FsbGJhY2sgZnJvbSB0
aGUgdW5kZXJseWluZyBncmFwaGljcyBzeXN0ZW0gd2hlbiB0aGUgbGF5ZXIgaGFzIGJlZW4gZGlz
cGxheWVkCi0gICAgdmlydHVhbCB2b2lkIGRpZERpc3BsYXkoUGxhdGZvcm1MYXllciopIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCBsYXllckRpZERpc3BsYXkoUGxhdGZvcm1MYXllciopIHsgfQogICAg
IAogICAgIC8vIEZvciBob3N0aW5nIHRoaXMgR3JhcGhpY3NMYXllciBpbiBhIG5hdGl2ZSBsYXll
ciBoaWVyYXJjaHkuCiAgICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkg
Y29uc3QgeyByZXR1cm4gMDsgfQpAQCAtMzMwLDggKzMyNyw4IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgc2V0Q29udGVudHNPcmllbnRhdGlvbihDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3Jp
ZW50YXRpb24gb3JpZW50YXRpb24pIHsgbV9jb250ZW50c09yaWVudGF0aW9uID0gb3JpZW50YXRp
b247IH0KICAgICBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRpb24gY29udGVudHNPcmll
bnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudHNPcmllbnRhdGlvbjsgfQogCi0gICAg
Ym9vbCBzaG93RGVidWdCb3JkZXJzKCkgeyByZXR1cm4gbV9jbGllbnQgPyBtX2NsaWVudC0+c2hv
d0RlYnVnQm9yZGVycygpIDogZmFsc2U7IH0KLSAgICBib29sIHNob3dSZXBhaW50Q291bnRlcigp
IHsgcmV0dXJuIG1fY2xpZW50ID8gbV9jbGllbnQtPnNob3dSZXBhaW50Q291bnRlcigpIDogZmFs
c2U7IH0KKyAgICBib29sIHNob3dEZWJ1Z0JvcmRlcnMoKSBjb25zdCB7IHJldHVybiBtX2NsaWVu
dCA/IG1fY2xpZW50LT5zaG93RGVidWdCb3JkZXJzKCkgOiBmYWxzZTsgfQorICAgIGJvb2wgc2hv
d1JlcGFpbnRDb3VudGVyKCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnQgPyBtX2NsaWVudC0+c2hv
d1JlcGFpbnRDb3VudGVyKCkgOiBmYWxzZTsgfQogICAgIAogICAgIHZvaWQgdXBkYXRlRGVidWdJ
bmRpY2F0b3JzKCk7CiAgICAgCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dy
YXBoaWNzTGF5ZXJDQS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCShyZXZpc2lvbiA3NTEyMykKKysrIFdlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjQwLDcgKzY0MCw3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpyZW1vdmVBbmltYXRpb24oY28K
ICAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoQW5pbWF0aW9uQ2hhbmdlZCk7CiB9CiAKLXZv
aWQgR3JhcGhpY3NMYXllckNBOjphbmltYXRpb25TdGFydGVkKENGVGltZUludGVydmFsIHN0YXJ0
VGltZSkKK3ZvaWQgR3JhcGhpY3NMYXllckNBOjpwbGF0Zm9ybUNBTGF5ZXJBbmltYXRpb25TdGFy
dGVkKENGVGltZUludGVydmFsIHN0YXJ0VGltZSkKIHsKICAgICBpZiAobV9jbGllbnQpCiAgICAg
ICAgIG1fY2xpZW50LT5ub3RpZnlBbmltYXRpb25TdGFydGVkKHRoaXMsIHN0YXJ0VGltZSk7CkBA
IC02NjAsNiArNjYwLDggQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRzVG9JbWFn
ZQogICAgICAgICAKICAgICAgICAgbV91bmNvcnJlY3RlZENvbnRlbnRzSW1hZ2UgPSBuZXdJbWFn
ZTsKICAgICAgICAgbV9wZW5kaW5nQ29udGVudHNJbWFnZSA9IG5ld0ltYWdlOworCisjaWYgIVBM
QVRGT1JNKFdJTikKICAgICAgICAgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UgPSBDR0ltYWdl
R2V0Q29sb3JTcGFjZShtX3BlbmRpbmdDb250ZW50c0ltYWdlLmdldCgpKTsKIAogICAgICAgICBz
dGF0aWMgQ0dDb2xvclNwYWNlUmVmIGRldmljZVJHQiA9IENHQ29sb3JTcGFjZUNyZWF0ZURldmlj
ZVJHQigpOwpAQCAtNjY5LDYgKzY3MSw3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRDb250
ZW50c1RvSW1hZ2UKICAgICAgICAgICAgIHN0YXRpYyBDR0NvbG9yU3BhY2VSZWYgZ2VuZXJpY1JH
QiA9IENHRGlzcGxheUNvcHlDb2xvclNwYWNlKGtDR0RpcmVjdE1haW5EaXNwbGF5KTsKICAgICAg
ICAgICAgIG1fcGVuZGluZ0NvbnRlbnRzSW1hZ2UuYWRvcHRDRihDR0ltYWdlQ3JlYXRlQ29weVdp
dGhDb2xvclNwYWNlKG1fcGVuZGluZ0NvbnRlbnRzSW1hZ2UuZ2V0KCksIGdlbmVyaWNSR0IpKTsK
ICAgICAgICAgfQorI2VuZGlmCiAgICAgICAgIG1fY29udGVudHNMYXllclB1cnBvc2UgPSBDb250
ZW50c0xheWVyRm9ySW1hZ2U7CiAgICAgICAgIGlmICghbV9jb250ZW50c0xheWVyKQogICAgICAg
ICAgICAgbm90ZVN1YmxheWVyc0NoYW5nZWQoKTsKQEAgLTY4OCw5ICs2OTEsMTUgQEAgdm9pZCBH
cmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRzVG9NZWRpYQogICAgIGlmIChtX2NvbnRlbnRzTGF5
ZXIgJiYgbWVkaWFMYXllciA9PSBtX2NvbnRlbnRzTGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSkKICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAKLSAgICAvLyBDcmVhdGUgdGhlIFBsYXRmb3JtQ0FMYXll
ciB0byB3cmFwIHRoZSBpbmNvbWluZyBsYXllcgotICAgIG1fY29udGVudHNMYXllciA9IG1lZGlh
TGF5ZXIgPyBQbGF0Zm9ybUNBTGF5ZXI6OmNyZWF0ZShtZWRpYUxheWVyLCB0aGlzKSA6IDA7Ci0K
KyAgICAvLyBGSVhNRTogVGhlIHBhc3NlZCBpbiBsYXllciBtaWdodCBiZSBhIHJhdyBsYXllciBv
ciBhbiBleHRlcm5hbGx5IGNyZWF0ZWQgCisgICAgLy8gUGxhdGZvcm1DQUxheWVyLiBUbyBkZXRl
cm1pbmUgdGhpcyB3ZSBhdHRlbXB0IHRvIGdldCB0aGUKKyAgICAvLyBQbGF0Zm9ybUNBTGF5ZXIg
cG9pbnRlci4gSWYgdGhpcyByZXR1cm5zIGEgbnVsbCBwb2ludGVyIHdlIGFzc3VtZSBpdCdzCisg
ICAgLy8gcmF3LiBUaGlzIHRlc3QgbWlnaHQgYmUgaW52YWxpZCBpZiB0aGUgcmF3IGxheWVyIGlz
LCBmb3IgaW5zdGFuY2UsIHRoZQorICAgIC8vIFBsYXRmb3JtQ0FMYXllciBpcyB1c2luZyBhIHVz
ZXIgZGF0YSBwb2ludGVyIGluIHRoZSByYXcgbGF5ZXIsIGFuZAorICAgIC8vIHRoZSBjcmVhdG9y
IG9mIHRoZSByYXcgbGF5ZXIgaXMgdXNpbmcgaXQgZm9yIHNvbWUgb3RoZXIgcHVycG9zZS4KKyAg
ICAvLyBGb3Igbm93IHdlIGRvbid0IHN1cHBvcnQgc3VjaCBhIGNhc2UuCisgICAgUGxhdGZvcm1D
QUxheWVyKiBwbGF0Zm9ybUNBTGF5ZXIgPSBQbGF0Zm9ybUNBTGF5ZXI6OnBsYXRmb3JtQ0FMYXll
cihtZWRpYUxheWVyKTsKKyAgICBtX2NvbnRlbnRzTGF5ZXIgPSBtZWRpYUxheWVyID8gKHBsYXRm
b3JtQ0FMYXllciA/IHBsYXRmb3JtQ0FMYXllciA6IFBsYXRmb3JtQ0FMYXllcjo6Y3JlYXRlKG1l
ZGlhTGF5ZXIsIHRoaXMpKSA6IDA7CiAgICAgbV9jb250ZW50c0xheWVyUHVycG9zZSA9IG1lZGlh
TGF5ZXIgPyBDb250ZW50c0xheWVyRm9yTWVkaWEgOiBOb0NvbnRlbnRzTGF5ZXI7CiAKICAgICBu
b3RlU3VibGF5ZXJzQ2hhbmdlZCgpOwpAQCAtNzExLDcgKzcyMCw3IEBAIHZvaWQgR3JhcGhpY3NM
YXllckNBOjpzZXRDb250ZW50c1RvQ2FudmEKICAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQo
Q29udGVudHNDYW52YXNMYXllckNoYW5nZWQpOwogfQogICAgIAotdm9pZCBHcmFwaGljc0xheWVy
Q0E6OmRpZERpc3BsYXkoUGxhdGZvcm1MYXllciogbGF5ZXIpCit2b2lkIEdyYXBoaWNzTGF5ZXJD
QTo6bGF5ZXJEaWREaXNwbGF5KFBsYXRmb3JtTGF5ZXIqIGxheWVyKQogewogICAgIFBsYXRmb3Jt
Q0FMYXllciogY3VycmVudExheWVyID0gUGxhdGZvcm1DQUxheWVyOjpwbGF0Zm9ybUNBTGF5ZXIo
bGF5ZXIpOwogICAgIFBsYXRmb3JtQ0FMYXllciogc291cmNlTGF5ZXI7CkBAIC05MDMsNyArOTEy
LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZVN1YmxheWVyTGlzdAogICAgICAgICAg
ICAgbmV3U3VibGF5ZXJzLmFwcGVuZChjaGlsZExheWVyKTsKICAgICAgICAgfQogCi0gICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbmV3U3VibGF5ZXJzLnNpemUoKTsgKytpKQorICAgICAg
ICBmb3IgKGludCBpID0gbmV3U3VibGF5ZXJzLnNpemUoKSAtIDE7IGkgPj0gMDsgLS1pKQogICAg
ICAgICAgICAgbmV3U3VibGF5ZXJzW2ldLT5yZW1vdmVGcm9tU3VwZXJsYXllcigpOwogICAgIH0K
IApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJD
QS5oCShyZXZpc2lvbiA3NTEyMykKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3Jh
cGhpY3NMYXllckNBLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRl
ICJHcmFwaGljc0xheWVyLmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJQbGF0Zm9y
bUNBQW5pbWF0aW9uLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1DQUxheWVyQ2xpZW50LmgiCiAjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUg
PHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTQwLDcgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBQbGF0Zm9ybUNBTGF5ZXI7CiAKLWNsYXNzIEdyYXBoaWNzTGF5ZXJDQSA6IHB1Ymxp
YyBHcmFwaGljc0xheWVyIHsKK2NsYXNzIEdyYXBoaWNzTGF5ZXJDQSA6IHB1YmxpYyBHcmFwaGlj
c0xheWVyLCBwdWJsaWMgUGxhdGZvcm1DQUxheWVyQ2xpZW50IHsKIHB1YmxpYzoKICAgICAvLyBU
aGUgd2lkdGggYW5kIGhlaWdodCBvZiBhIHNpbmdsZSB0aWxlIGluIGEgdGlsZWQgbGF5ZXIuIFNo
b3VsZCBiZSBsYXJnZSBlbm91Z2ggdG8KICAgICAvLyBhdm9pZCBsb3RzIG9mIHNtYWxsIHRpbGVz
IChhbmQgdGhlcmVmb3JlIGxvdHMgb2YgZHJhd2luZyBjYWxsYmFja3MpLCBidXQgc21hbGwgZW5v
dWdoCkBAIC00OSwxMiArNTAsMjYgQEAgcHVibGljOgogCiAgICAgR3JhcGhpY3NMYXllckNBKEdy
YXBoaWNzTGF5ZXJDbGllbnQqKTsKICAgICB2aXJ0dWFsIH5HcmFwaGljc0xheWVyQ0EoKTsKLSAg
ICAKLSAgICB2aXJ0dWFsIHZvaWQgYW5pbWF0aW9uU3RhcnRlZChDRlRpbWVJbnRlcnZhbCBiZWdp
blRpbWUpOworCisgICAgLy8gUGxhdGZvcm1DQUxheWVyQ2xpZW50IG92ZXJyaWRlcworICAgIHZp
cnR1YWwgdm9pZCBwbGF0Zm9ybUNBTGF5ZXJMYXlvdXRTdWJsYXllcnNPZkxheWVyKFBsYXRmb3Jt
Q0FMYXllciopIHsgfQorICAgIHZpcnR1YWwgYm9vbCBwbGF0Zm9ybUNBTGF5ZXJSZXNwb25kc1Rv
TGF5b3V0Q2hhbmdlcygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICB2aXJ0dWFsIHZv
aWQgcGxhdGZvcm1DQUxheWVyQW5pbWF0aW9uU3RhcnRlZChDRlRpbWVJbnRlcnZhbCBiZWdpblRp
bWUpOworICAgIHZpcnR1YWwgQ29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uIHBsYXRm
b3JtQ0FMYXllckNvbnRlbnRzT3JpZW50YXRpb24oKSBjb25zdCB7IHJldHVybiBjb250ZW50c09y
aWVudGF0aW9uKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1DQUxheWVyUGFpbnRDb250
ZW50cyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGNsaXApIHsgcGFp
bnRHcmFwaGljc0xheWVyQ29udGVudHMoY29udGV4dCwgY2xpcCk7IH0KKyAgICB2aXJ0dWFsIGJv
b2wgcGxhdGZvcm1DQUxheWVyU2hvd0RlYnVnQm9yZGVycygpIGNvbnN0IHsgcmV0dXJuIHNob3dE
ZWJ1Z0JvcmRlcnMoKTsgfQorICAgIHZpcnR1YWwgYm9vbCBwbGF0Zm9ybUNBTGF5ZXJTaG93UmVw
YWludENvdW50ZXIoKSBjb25zdCB7IHJldHVybiBzaG93UmVwYWludENvdW50ZXIoKTsgfQorICAg
IHZpcnR1YWwgaW50IHBsYXRmb3JtQ0FMYXllckluY3JlbWVudFJlcGFpbnRDb3VudCgpIHsgcmV0
dXJuIGluY3JlbWVudFJlcGFpbnRDb3VudCgpOyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgcGxhdGZv
cm1DQUxheWVyQ29udGVudHNPcGFxdWUoKSBjb25zdCB7IHJldHVybiBjb250ZW50c09wYXF1ZSgp
OyB9CisgICAgdmlydHVhbCBib29sIHBsYXRmb3JtQ0FMYXllckRyYXdzQ29udGVudCgpIGNvbnN0
IHsgcmV0dXJuIGRyYXdzQ29udGVudCgpOyB9CisgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQ0FM
YXllckxheWVyRGlkRGlzcGxheShQbGF0Zm9ybUxheWVyKiBsYXllcikgeyByZXR1cm4gbGF5ZXJE
aWREaXNwbGF5KGxheWVyKTsgfQogCiAgICAgdmlydHVhbCB2b2lkIHNldE5hbWUoY29uc3QgU3Ry
aW5nJik7CiAKICAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25z
dDsKKyAgICB2aXJ0dWFsIFBsYXRmb3JtQ0FMYXllciogcGxhdGZvcm1DQUxheWVyKCkgY29uc3Qg
eyByZXR1cm4gcHJpbWFyeUxheWVyKCk7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBzZXRDaGlsZHJl
bihjb25zdCBWZWN0b3I8R3JhcGhpY3NMYXllcio+Jik7CiAgICAgdmlydHVhbCB2b2lkIGFkZENo
aWxkKEdyYXBoaWNzTGF5ZXIqKTsKQEAgLTExMiw3ICsxMjcsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIHNldERlYnVnQmFja2dyb3VuZENvbG9yKGNvbnN0IENvbG9yJik7CiAgICAgdmly
dHVhbCB2b2lkIHNldERlYnVnQm9yZGVyKGNvbnN0IENvbG9yJiwgZmxvYXQgYm9yZGVyV2lkdGgp
OwogCi0gICAgdmlydHVhbCB2b2lkIGRpZERpc3BsYXkoUGxhdGZvcm1MYXllciopOworICAgIHZp
cnR1YWwgdm9pZCBsYXllckRpZERpc3BsYXkoUGxhdGZvcm1MYXllciopOwogCiAgICAgdm9pZCBy
ZWN1cnNpdmVDb21taXRDaGFuZ2VzKCk7CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvUGxhdGZvcm1DQUxheWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaAkocmV2aXNpb24gNzUxMjMpCisrKyBXZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yOSw4ICsyOSw4IEBACiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogCiAjaW5j
bHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCi0jaW5jbHVkZSAiR3JhcGhpY3NMYXllckNBLmgiCiAj
aW5jbHVkZSAiUGxhdGZvcm1DQUFuaW1hdGlvbi5oIgorI2luY2x1ZGUgIlBsYXRmb3JtQ0FMYXll
ckNsaWVudC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAtNDcsMjcgKzQ3LDE3IEBA
IHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+ID4KIAogY2xhc3MgUGxhdGZv
cm1DQUxheWVyIDogcHVibGljIFJlZkNvdW50ZWQ8UGxhdGZvcm1DQUxheWVyPiB7CiBwdWJsaWM6
Ci0gICAgLy8gVGlsZWRMYXllciB1c2VkIGluIEdyYXBoaWNzTGF5ZXIgaGFzIGNvbnN0YW50IHNl
dHRpbmdzOgotICAgIC8vICAgICAgY1RpbGVkTGF5ZXJUaWxlU2l6ZSA9IDUxMgotICAgIC8vICAg
ICAgc2V0VGlsZVNpemU6KGNUaWxlZExheWVyVGlsZVNpemUsIGNUaWxlZExheWVyVGlsZVNpemUp
Ci0gICAgLy8gICAgICBzZXRMZXZlbHNPZkRldGFpbDoxCi0gICAgLy8gICAgICBzZXRMZXZlbHNP
ZkRldGFpbEJpYXM6MAotICAgIC8vICAgICAgc2V0Q29udGVudHNHcmF2aXR5OkAiYm90dG9tTGVm
dCIKLSAgICAvLwotICAgIC8vIFRpbGVkTGF5ZXIgYWxzbyBoYXMgZHJhd2luZyBmdW5jdGlvbnMg
bGlrZSBXZWJMYXllcgotICAgIC8vCi0gICAgLy8gV2ViTGF5ZXIgaXMgYSBDQUxheWVyIHdpdGgg
ZHJhd2luZyBmdW5jdGlvbnMgc3BlY2lmaWMgdG8gV2ViS2l0Ci0gICAgLy8KLSAgICAvLyBMYXll
ciBhbmQgVHJhbnNmb3JtTGF5ZXIgYXJlIHVzZWQgYXMgaXMKLQotICAgIGVudW0gTGF5ZXJUeXBl
IHsgTGF5ZXJUeXBlTGF5ZXIsIExheWVyVHlwZVdlYkxheWVyLCBMYXllclR5cGVUcmFuc2Zvcm1M
YXllciwgTGF5ZXJUeXBlV2ViVGlsZWRMYXllciwgTGF5ZXJUeXBlQ3VzdG9tIH07CisgICAgLy8g
TGF5ZXJUeXBlUm9vdExheWVyIGlzIHVzZWQgb24gc29tZSBwbGF0Zm9ybXMuIEl0IGhhcyBubyBi
YWNraW5nIHN0b3JlLCBzbyBzZXROZWVkc0Rpc3BsYXkKKyAgICAvLyBzaG91bGQgbm90IGNhbGwg
Q0FDRkxheWVyU2V0TmVlZHNEaXNwbGF5LCBidXQgcmF0aGVyIGp1c3Qgbm90aWZ5IHRoZSByZW5k
ZXJlciB0aGF0IGl0CisgICAgLy8gaGFzIGNoYW5nZWQgYW5kIHNob3VsZCBiZSByZS1yZW5kZXJl
ZC4KKyAgICBlbnVtIExheWVyVHlwZSB7IExheWVyVHlwZUxheWVyLCBMYXllclR5cGVXZWJMYXll
ciwgTGF5ZXJUeXBlVHJhbnNmb3JtTGF5ZXIsIExheWVyVHlwZVdlYlRpbGVkTGF5ZXIsIExheWVy
VHlwZVJvb3RMYXllciwgTGF5ZXJUeXBlQ3VzdG9tIH07CiAgICAgZW51bSBGaWx0ZXJUeXBlIHsg
TGluZWFyLCBOZWFyZXN0LCBUcmlsaW5lYXIgfTsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBs
YXRmb3JtQ0FMYXllcj4gY3JlYXRlKExheWVyVHlwZSwgR3JhcGhpY3NMYXllckNBKik7CisgICAg
c3RhdGljIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBjcmVhdGUoTGF5ZXJUeXBlLCBQbGF0
Zm9ybUNBTGF5ZXJDbGllbnQqKTsKICAgICAKICAgICAvLyBUaGlzIGZ1bmN0aW9uIHBhc3NlcyB0
aGUgbGF5ZXIgYXMgYSB2b2lkKiByYXRoZXIgdGhhbiBhIFBsYXRmb3JtTGF5ZXIgYmVjYXVzZSBQ
bGF0Zm9ybUxheWVyCiAgICAgLy8gaXMgZGVmaW5lZCBkaWZmZXJlbnRseSBmb3IgT2JqIEMgYW5k
IEMrKy4gVGhpcyBhbGxvd3MgY2FsbGVycyBmcm9tIGJvdGggbGFuZ3VhZ2VzLgotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gY3JlYXRlKHZvaWQqIHBsYXRmb3JtTGF5ZXIs
IEdyYXBoaWNzTGF5ZXJDQSopOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXll
cj4gY3JlYXRlKHZvaWQqIHBsYXRmb3JtTGF5ZXIsIFBsYXRmb3JtQ0FMYXllckNsaWVudCopOwog
CiAgICAgflBsYXRmb3JtQ0FMYXllcigpOwogICAgIApAQCAtNzYsMjAgKzY2LDI5IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgUGxhdGZvcm1DQUxheWVyKiBwbGF0Zm9ybUNBTGF5ZXIodm9pZCogcGxh
dGZvcm1MYXllcik7CiAgICAgCiAgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNv
bnN0OworCisgICAgUGxhdGZvcm1DQUxheWVyKiByb290TGF5ZXIoKSBjb25zdDsKICAgICAKICAg
ICBzdGF0aWMgYm9vbCBpc1ZhbHVlRnVuY3Rpb25TdXBwb3J0ZWQoKTsKICAgICAKLSAgICBHcmFw
aGljc0xheWVyQ0EqIG93bmVyKCkgY29uc3QgeyByZXR1cm4gbV9vd25lcjsgfQotICAgIHZvaWQg
c2V0T3duZXIoR3JhcGhpY3NMYXllckNBKiBvd25lcik7CisgICAgUGxhdGZvcm1DQUxheWVyQ2xp
ZW50KiBvd25lcigpIGNvbnN0IHsgcmV0dXJuIG1fb3duZXI7IH0KKyAgICB2b2lkIHNldE93bmVy
KFBsYXRmb3JtQ0FMYXllckNsaWVudCopOwogCiAgICAgdm9pZCBhbmltYXRpb25TdGFydGVkKENG
VGltZUludGVydmFsIGJlZ2luVGltZSkKICAgICB7CiAgICAgICAgIGlmIChtX293bmVyKQotICAg
ICAgICAgICAgbV9vd25lci0+YW5pbWF0aW9uU3RhcnRlZChiZWdpblRpbWUpOworICAgICAgICAg
ICAgbV9vd25lci0+cGxhdGZvcm1DQUxheWVyQW5pbWF0aW9uU3RhcnRlZChiZWdpblRpbWUpOwog
ICAgIH0KIAorICAgIC8vIExheW91dCBzdXBwb3J0CisgICAgdm9pZCBzZXROZWVkc0xheW91dCgp
OworCisKICAgICB2b2lkIHNldE5lZWRzRGlzcGxheShjb25zdCBGbG9hdFJlY3QqIGRpcnR5UmVj
dCA9IDApOwogICAgIAorICAgIC8vIFRoaXMgdGVsbHMgdGhlIGxheWVyIHRyZWUgdG8gY29tbWl0
IGNoYW5nZXMgYW5kIHBlcmZvcm0gYSByZW5kZXIsIHdpdGhvdXQgZG8gYSBzZXROZWVkc0Rpc3Bs
YXkgb24gYW55IGxheWVyLgorICAgIHZvaWQgc2V0TmVlZHNDb21taXQoKTsKKwogICAgIHZvaWQg
c2V0Q29udGVudHNDaGFuZ2VkKCk7CiAgICAgCiAgICAgTGF5ZXJUeXBlIGxheWVyVHlwZSgpIGNv
bnN0IHsgcmV0dXJuIG1fbGF5ZXJUeXBlOyB9CkBAIC0xMDQsNiArMTAzLDcgQEAgcHVibGljOgog
ICAgIHNpemVfdCBzdWJsYXllckNvdW50KCkgY29uc3Q7CiAKICAgICAvLyBUaGlzIG1ldGhvZCBy
ZW1vdmVzIHRoZSBzdWJsYXllcnMgZnJvbSB0aGUgc291cmNlIGFuZCByZXBhcmVudHMgdGhlbSB0
byB0aGUgY3VycmVudCBsYXllci4KKyAgICAvLyBBbnkgc3VibGF5ZXJzIHByZXZpb3VzbHkgaW4g
dGhlIGN1cnJlbnQgbGF5ZXIgYXJlIHJlbW92ZWQuCiAgICAgdm9pZCBhZG9wdFN1YmxheWVycyhQ
bGF0Zm9ybUNBTGF5ZXIqIHNvdXJjZSk7CiAgICAgCiAgICAgdm9pZCBhZGRBbmltYXRpb25Gb3JL
ZXkoY29uc3QgU3RyaW5nJiBrZXksIFBsYXRmb3JtQ0FBbmltYXRpb24qIGFuaW1hdGlvbik7ICAg
IApAQCAtMTUwLDggKzE1MCw4IEBAIHB1YmxpYzoKICAgICBib29sIGFjY2VsZXJhdGVzRHJhd2lu
ZygpIGNvbnN0OwogICAgIHZvaWQgc2V0QWNjZWxlcmF0ZXNEcmF3aW5nKGJvb2wpOwogCi0gICAg
dm9pZCogY29udGVudHMoKSBjb25zdDsKLSAgICB2b2lkIHNldENvbnRlbnRzKHZvaWQqKTsKKyAg
ICBDRlR5cGVSZWYgY29udGVudHMoKSBjb25zdDsKKyAgICB2b2lkIHNldENvbnRlbnRzKENGVHlw
ZVJlZik7CiAKICAgICBGbG9hdFJlY3QgY29udGVudHNSZWN0KCkgY29uc3Q7CiAgICAgdm9pZCBz
ZXRDb250ZW50c1JlY3QoY29uc3QgRmxvYXRSZWN0Jik7CkBAIC0xODMsMTggKzE4MywyNSBAQCBw
dWJsaWM6CiAgICAgQ0ZUaW1lSW50ZXJ2YWwgdGltZU9mZnNldCgpIGNvbnN0OwogICAgIHZvaWQg
c2V0VGltZU9mZnNldChDRlRpbWVJbnRlcnZhbCk7CiAKKyNpZiBQTEFURk9STShXSU4pICYmICFk
ZWZpbmVkKE5ERUJVRykKKyAgICB2b2lkIHByaW50VHJlZSgpIGNvbnN0OworI2VuZGlmCisKIHBy
b3RlY3RlZDoKLSAgICBQbGF0Zm9ybUNBTGF5ZXIoTGF5ZXJUeXBlLCBQbGF0Zm9ybUxheWVyKiwg
R3JhcGhpY3NMYXllckNBKik7CisgICAgUGxhdGZvcm1DQUxheWVyKExheWVyVHlwZSwgUGxhdGZv
cm1MYXllciosIFBsYXRmb3JtQ0FMYXllckNsaWVudCopOwogICAgIAogcHJpdmF0ZToKLSAgICAK
LSAgICBHcmFwaGljc0xheWVyQ0EqIG1fb3duZXI7CisgICAgUGxhdGZvcm1DQUxheWVyQ2xpZW50
KiBtX293bmVyOwogICAgIExheWVyVHlwZSBtX2xheWVyVHlwZTsKICAgICAKICNpZiBQTEFURk9S
TShNQUMpIHx8IFBMQVRGT1JNKFdJTikKICAgICBSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gbV9s
YXllcjsKICNlbmRpZgogCisjaWYgUExBVEZPUk0oV0lOKQorICAgIEhhc2hNYXA8U3RyaW5nLCBS
ZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gPiBtX2FuaW1hdGlvbnM7CisjZW5kaWYKKwogI2lm
IFBMQVRGT1JNKE1BQykKICNpZmRlZiBfX09CSkNfXwogICAgIFJldGFpblB0cjxOU09iamVjdD4g
bV9kZWxlZ2F0ZTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1D
QUxheWVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS9QbGF0Zm9ybUNBTGF5ZXJDbGllbnQuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyQ2xpZW50LmgJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENP
TVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNpZm5kZWYgUGxhdGZvcm1DQUxheWVyQ2xpZW50X2gKKyNkZWZpbmUgUGxh
dGZvcm1DQUxheWVyQ2xpZW50X2gKKworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykK
KworI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIu
aCIKKyNpbmNsdWRlICJQbGF0Zm9ybUNBQW5pbWF0aW9uLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1T
dHJpbmcuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVm
UHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0hhc2guaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBQbGF0Zm9ybUNBTGF5ZXI7
CisKK2NsYXNzIFBsYXRmb3JtQ0FMYXllckNsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB2
b2lkIHBsYXRmb3JtQ0FMYXllckxheW91dFN1YmxheWVyc09mTGF5ZXIoUGxhdGZvcm1DQUxheWVy
KikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBwbGF0Zm9ybUNBTGF5ZXJSZXNwb25kc1RvTGF5b3V0
Q2hhbmdlcygpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNBTGF5ZXJB
bmltYXRpb25TdGFydGVkKENGVGltZUludGVydmFsIGJlZ2luVGltZSkgPSAwOworICAgIHZpcnR1
YWwgR3JhcGhpY3NMYXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uIHBsYXRm
b3JtQ0FMYXllckNvbnRlbnRzT3JpZW50YXRpb24oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHBsYXRmb3JtQ0FMYXllclBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
SW50UmVjdCYgaW5DbGlwKSA9IDA7CisgICAgdmlydHVhbCBib29sIHBsYXRmb3JtQ0FMYXllclNo
b3dEZWJ1Z0JvcmRlcnMoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIHBsYXRmb3JtQ0FM
YXllclNob3dSZXBhaW50Q291bnRlcigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGludCBwbGF0
Zm9ybUNBTGF5ZXJJbmNyZW1lbnRSZXBhaW50Q291bnQoKSA9IDA7CisgICAgCisgICAgdmlydHVh
bCBib29sIHBsYXRmb3JtQ0FMYXllckNvbnRlbnRzT3BhcXVlKCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgYm9vbCBwbGF0Zm9ybUNBTGF5ZXJEcmF3c0NvbnRlbnQoKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHBsYXRmb3JtQ0FMYXllckxheWVyRGlkRGlzcGxheShQbGF0Zm9ybUxheWVy
KikgPSAwOworCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB+UGxhdGZvcm1DQUxheWVyQ2xpZW50
KCkge30KK307CisKK30KKworI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykK
KworI2VuZGlmIC8vIFBsYXRmb3JtQ0FMYXllckNsaWVudF9oCkluZGV4OiBXZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL21hYy9QbGF0Zm9ybUNBTGF5ZXJNYWMubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvUGxhdGZvcm1DQUxheWVyTWFjLm1tCShy
ZXZpc2lvbiA3NTEyMykKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1BsYXRm
b3JtQ0FMYXllck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTA1LDcgKzEwNSw3IEBAIGJvb2wg
UGxhdGZvcm1DQUxheWVyOjppc1ZhbHVlRnVuY3Rpb25TdXAKICAgICByZXR1cm4gc0hhdmVWYWx1
ZUZ1bmN0aW9uOwogfQogCi12b2lkIFBsYXRmb3JtQ0FMYXllcjo6c2V0T3duZXIoR3JhcGhpY3NM
YXllckNBKiBvd25lcikKK3ZvaWQgUGxhdGZvcm1DQUxheWVyOjpzZXRPd25lcihQbGF0Zm9ybUNB
TGF5ZXJDbGllbnQqIG93bmVyKQogewogICAgIG1fb3duZXIgPSBvd25lcjsKICAgICAKQEAgLTE0
NSwxNyArMTQ1LDE3IEBAIHN0YXRpYyBOU1N0cmluZyogdG9DQUZpbHRlclR5cGUoUGxhdGZvcm0K
IH0KICNlbmRpZgogCi1QYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gUGxhdGZvcm1DQUxheWVy
OjpjcmVhdGUoTGF5ZXJUeXBlIGxheWVyVHlwZSwgR3JhcGhpY3NMYXllckNBKiBvd25lcikKK1Bh
c3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBQbGF0Zm9ybUNBTGF5ZXI6OmNyZWF0ZShMYXllclR5
cGUgbGF5ZXJUeXBlLCBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVyKQogewogICAgIHJldHVy
biBhZG9wdFJlZihuZXcgUGxhdGZvcm1DQUxheWVyKGxheWVyVHlwZSwgMCwgb3duZXIpKTsKIH0K
IAotUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IFBsYXRmb3JtQ0FMYXllcjo6Y3JlYXRlKHZv
aWQqIHBsYXRmb3JtTGF5ZXIsIEdyYXBoaWNzTGF5ZXJDQSogb3duZXIpCitQYXNzUmVmUHRyPFBs
YXRmb3JtQ0FMYXllcj4gUGxhdGZvcm1DQUxheWVyOjpjcmVhdGUodm9pZCogcGxhdGZvcm1MYXll
ciwgUGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd25lcikKIHsKICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFBsYXRmb3JtQ0FMYXllcihMYXllclR5cGVDdXN0b20sIHN0YXRpY19jYXN0PFBsYXRmb3Jt
TGF5ZXIqPihwbGF0Zm9ybUxheWVyKSwgb3duZXIpKTsKIH0KIAotUGxhdGZvcm1DQUxheWVyOjpQ
bGF0Zm9ybUNBTGF5ZXIoTGF5ZXJUeXBlIGxheWVyVHlwZSwgUGxhdGZvcm1MYXllciogbGF5ZXIs
IEdyYXBoaWNzTGF5ZXJDQSogb3duZXIpCitQbGF0Zm9ybUNBTGF5ZXI6OlBsYXRmb3JtQ0FMYXll
cihMYXllclR5cGUgbGF5ZXJUeXBlLCBQbGF0Zm9ybUxheWVyKiBsYXllciwgUGxhdGZvcm1DQUxh
eWVyQ2xpZW50KiBvd25lcikKICAgICA6IG1fb3duZXIob3duZXIpCiB7CiAgICAgQkVHSU5fQkxP
Q0tfT0JKQ19FWENFUFRJT05TCkBAIC0xNjgsNiArMTY4LDcgQEAgUGxhdGZvcm1DQUxheWVyOjpQ
bGF0Zm9ybUNBTGF5ZXIoTGF5ZXJUeQogICAgICAgICBDbGFzcyBsYXllckNsYXNzID0gTmlsOwog
ICAgICAgICBzd2l0Y2gobGF5ZXJUeXBlKSB7CiAgICAgICAgICAgICBjYXNlIExheWVyVHlwZUxh
eWVyOgorICAgICAgICAgICAgY2FzZSBMYXllclR5cGVSb290TGF5ZXI6CiAgICAgICAgICAgICAg
ICAgbGF5ZXJDbGFzcyA9IFtDQUxheWVyIGNsYXNzXTsKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIGNhc2UgTGF5ZXJUeXBlV2ViTGF5ZXI6CkBAIC01NjgsMTUgKzU2OSwxNSBA
QCB2b2lkIFBsYXRmb3JtQ0FMYXllcjo6c2V0QWNjZWxlcmF0ZXNEcmF3CiAjZW5kaWYKIH0KIAot
dm9pZCogUGxhdGZvcm1DQUxheWVyOjpjb250ZW50cygpIGNvbnN0CitDRlR5cGVSZWYgUGxhdGZv
cm1DQUxheWVyOjpjb250ZW50cygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFttX2xheWVyLmdldCgp
IGNvbnRlbnRzXTsKIH0KIAotdm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OnNldENvbnRlbnRzKHZvaWQq
IHZhbHVlKQordm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OnNldENvbnRlbnRzKENGVHlwZVJlZiB2YWx1
ZSkKIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICBbbV9sYXllci5nZXQo
KSBzZXRDb250ZW50czpzdGF0aWNfY2FzdDxpZD4odmFsdWUpXTsKKyAgICBbbV9sYXllci5nZXQo
KSBzZXRDb250ZW50czpzdGF0aWNfY2FzdDxpZD4oY29uc3RfY2FzdDx2b2lkKj4odmFsdWUpKV07
CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogfQogCkluZGV4OiBXZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9XZWJHTExheWVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkdMTGF5ZXIubW0JKHJldmlzaW9uIDc1MTIzKQorKysgV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViR0xMYXllci5tbQkod29ya2luZyBjb3B5KQpA
QCAtMTQ0LDcgKzE0NCw3IEBAIC0gKHZvaWQpZGlzcGxheQogewogICAgIFtzdXBlciBkaXNwbGF5
XTsKICAgICBpZiAobV9sYXllck93bmVyKQotICAgICAgICBtX2xheWVyT3duZXItPmRpZERpc3Bs
YXkoc2VsZik7CisgICAgICAgIG1fbGF5ZXJPd25lci0+bGF5ZXJEaWREaXNwbGF5KHNlbGYpOwog
fQogCiBAZW5kCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJMYXllci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLmgJ
KHJldmlzaW9uIDc1MTIzKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViTGF5
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgY2xhc3MgR3JhcGhpY3NMYXllcjsKKyAgICBjbGFzcyBQbGF0Zm9ybUNBTGF5ZXJD
bGllbnQ7CiB9CiAKICNpZiBkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpCkBAIC00Nyw4ICs0
OCw4IEBAIEBpbnRlcmZhY2UgV2ViTGF5ZXIgOiBDQUxheWVyIAogQGVuZAogCiAvLyBGdW5jdGlv
bnMgYWxsb3dzIHVzIHRvIHNoYXJlIGltcGxlbWVudGF0aW9uIGFjcm9zcyBXZWJUaWxlZExheWVy
IGFuZCBXZWJMYXllcgotdm9pZCBkcmF3TGF5ZXJDb250ZW50cyhDR0NvbnRleHRSZWYsIENBTGF5
ZXIgKiwgV2ViQ29yZTo6R3JhcGhpY3NMYXllciopOwotdm9pZCBzZXRMYXllck5lZWRzRGlzcGxh
eUluUmVjdChDQUxheWVyICosIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqLCBDR1JlY3QpOwordm9p
ZCBkcmF3TGF5ZXJDb250ZW50cyhDR0NvbnRleHRSZWYsIENBTGF5ZXIgKiwgV2ViQ29yZTo6UGxh
dGZvcm1DQUxheWVyQ2xpZW50Kik7Cit2b2lkIHNldExheWVyTmVlZHNEaXNwbGF5SW5SZWN0KENB
TGF5ZXIgKiwgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ2xpZW50KiwgQ0dSZWN0KTsKIAogI2Vu
ZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIApJbmRleDogV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tYWMvV2ViTGF5ZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tYWMvV2ViTGF5ZXIubW0JKHJldmlzaW9uIDc1MTIzKQorKysgV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViTGF5ZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTQw
LDcgKzQwLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIEBpbXBsZW1lbnRhdGlvbiBX
ZWJMYXllcgogCi12b2lkIGRyYXdMYXllckNvbnRlbnRzKENHQ29udGV4dFJlZiBjb250ZXh0LCBD
QUxheWVyICpsYXllciwgV2ViQ29yZTo6R3JhcGhpY3NMYXllciogbGF5ZXJDb250ZW50cykKK3Zv
aWQgZHJhd0xheWVyQ29udGVudHMoQ0dDb250ZXh0UmVmIGNvbnRleHQsIENBTGF5ZXIgKmxheWVy
LCBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIGxheWVyQ29udGVudHMpCiB7CiAgICAg
aWYgKCFsYXllckNvbnRlbnRzKQogICAgICAgICByZXR1cm47CkBAIC00OCw1MCArNDgsMzggQEAg
dm9pZCBkcmF3TGF5ZXJDb250ZW50cyhDR0NvbnRleHRSZWYgY29udAogICAgIENHQ29udGV4dFNh
dmVHU3RhdGUoY29udGV4dCk7CiAKICAgICBDR1JlY3QgbGF5ZXJCb3VuZHMgPSBbbGF5ZXIgYm91
bmRzXTsKLSAgICBpZiAobGF5ZXJDb250ZW50cy0+Y29udGVudHNPcmllbnRhdGlvbigpID09IFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNCb3R0b21VcCkgewor
ICAgIGlmIChsYXllckNvbnRlbnRzLT5wbGF0Zm9ybUNBTGF5ZXJDb250ZW50c09yaWVudGF0aW9u
KCkgPT0gV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc0JvdHRv
bVVwKSB7CiAgICAgICAgIENHQ29udGV4dFNjYWxlQ1RNKGNvbnRleHQsIDEsIC0xKTsKICAgICAg
ICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKGNvbnRleHQsIDAsIC1sYXllckJvdW5kcy5zaXplLmhl
aWdodCk7CiAgICAgfQogCi0gICAgaWYgKGxheWVyQ29udGVudHMtPmNsaWVudCgpKSB7Ci0gICAg
ICAgIFtOU0dyYXBoaWNzQ29udGV4dCBzYXZlR3JhcGhpY3NTdGF0ZV07CisgICAgW05TR3JhcGhp
Y3NDb250ZXh0IHNhdmVHcmFwaGljc1N0YXRlXTsKIAotICAgICAgICAvLyBTZXQgdXAgYW4gTlNH
cmFwaGljc0NvbnRleHQgZm9yIHRoZSBjb250ZXh0LCBzbyB0aGF0IHBhcnRzIG9mIEFwcEtpdCB0
aGF0IHJlbHkgb24KLSAgICAgICAgLy8gdGhlIGN1cnJlbnQgTlNHcmFwaGljc0NvbnRleHQgKGUu
Zy4gTlNDZWxsIGRyYXdpbmcpIGdldCB0aGUgcmlnaHQgb25lLgotICAgICAgICBOU0dyYXBoaWNz
Q29udGV4dCogbGF5ZXJDb250ZXh0ID0gW05TR3JhcGhpY3NDb250ZXh0IGdyYXBoaWNzQ29udGV4
dFdpdGhHcmFwaGljc1BvcnQ6Y29udGV4dCBmbGlwcGVkOllFU107Ci0gICAgICAgIFtOU0dyYXBo
aWNzQ29udGV4dCBzZXRDdXJyZW50Q29udGV4dDpsYXllckNvbnRleHRdOwotCi0gICAgICAgIEdy
YXBoaWNzQ29udGV4dCBncmFwaGljc0NvbnRleHQoY29udGV4dCk7Ci0KLSAgICAgICAgaWYgKCFs
YXllckNvbnRlbnRzLT5jb250ZW50c09wYXF1ZSgpKSB7Ci0gICAgICAgICAgICAvLyBUdXJuIG9m
ZiBmb250IHNtb290aGluZyB0byBpbXByb3ZlIHRoZSBhcHBlYXJhbmNlIG9mIHRleHQgcmVuZGVy
ZWQgb250byBhIHRyYW5zcGFyZW50IGJhY2tncm91bmQuCi0gICAgICAgICAgICBncmFwaGljc0Nv
bnRleHQuc2V0U2hvdWxkU21vb3RoRm9udHMoZmFsc2UpOwotICAgICAgICB9Ci0gICAgICAgIAot
ICAgICAgICAvLyBJdCdzIGltcG9ydGFudCB0byBnZXQgdGhlIGNsaXAgZnJvbSB0aGUgY29udGV4
dCwgYmVjYXVzZSBpdCBtYXkgYmUgc2lnbmlmaWNhbnRseQotICAgICAgICAvLyBzbWFsbGVyIHRo
YW4gdGhlIGxheWVyIGJvdW5kcyAoZS5nLiB0aWxlZCBsYXllcnMpCi0gICAgICAgIENHUmVjdCBj
bGlwQm91bmRzID0gQ0dDb250ZXh0R2V0Q2xpcEJvdW5kaW5nQm94KGNvbnRleHQpOwotICAgICAg
ICBJbnRSZWN0IGNsaXAoZW5jbG9zaW5nSW50UmVjdChjbGlwQm91bmRzKSk7Ci0gICAgICAgIGxh
eWVyQ29udGVudHMtPnBhaW50R3JhcGhpY3NMYXllckNvbnRlbnRzKGdyYXBoaWNzQ29udGV4dCwg
Y2xpcCk7Ci0KLSAgICAgICAgW05TR3JhcGhpY3NDb250ZXh0IHJlc3RvcmVHcmFwaGljc1N0YXRl
XTsKKyAgICAvLyBTZXQgdXAgYW4gTlNHcmFwaGljc0NvbnRleHQgZm9yIHRoZSBjb250ZXh0LCBz
byB0aGF0IHBhcnRzIG9mIEFwcEtpdCB0aGF0IHJlbHkgb24KKyAgICAvLyB0aGUgY3VycmVudCBO
U0dyYXBoaWNzQ29udGV4dCAoZS5nLiBOU0NlbGwgZHJhd2luZykgZ2V0IHRoZSByaWdodCBvbmUu
CisgICAgTlNHcmFwaGljc0NvbnRleHQqIGxheWVyQ29udGV4dCA9IFtOU0dyYXBoaWNzQ29udGV4
dCBncmFwaGljc0NvbnRleHRXaXRoR3JhcGhpY3NQb3J0OmNvbnRleHQgZmxpcHBlZDpZRVNdOwor
ICAgIFtOU0dyYXBoaWNzQ29udGV4dCBzZXRDdXJyZW50Q29udGV4dDpsYXllckNvbnRleHRdOwor
CisgICAgR3JhcGhpY3NDb250ZXh0IGdyYXBoaWNzQ29udGV4dChjb250ZXh0KTsKKworICAgIGlm
ICghbGF5ZXJDb250ZW50cy0+cGxhdGZvcm1DQUxheWVyQ29udGVudHNPcGFxdWUoKSkgeworICAg
ICAgICAvLyBUdXJuIG9mZiBmb250IHNtb290aGluZyB0byBpbXByb3ZlIHRoZSBhcHBlYXJhbmNl
IG9mIHRleHQgcmVuZGVyZWQgb250byBhIHRyYW5zcGFyZW50IGJhY2tncm91bmQuCisgICAgICAg
IGdyYXBoaWNzQ29udGV4dC5zZXRTaG91bGRTbW9vdGhGb250cyhmYWxzZSk7CiAgICAgfQotI2lm
bmRlZiBOREVCVUcKLSAgICBlbHNlIHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgCisgICAgLy8gSXQncyBpbXBvcnRhbnQgdG8gZ2V0IHRoZSBjbGlwIGZyb20gdGhlIGNvbnRl
eHQsIGJlY2F1c2UgaXQgbWF5IGJlIHNpZ25pZmljYW50bHkKKyAgICAvLyBzbWFsbGVyIHRoYW4g
dGhlIGxheWVyIGJvdW5kcyAoZS5nLiB0aWxlZCBsYXllcnMpCisgICAgQ0dSZWN0IGNsaXBCb3Vu
ZHMgPSBDR0NvbnRleHRHZXRDbGlwQm91bmRpbmdCb3goY29udGV4dCk7CisgICAgSW50UmVjdCBj
bGlwKGVuY2xvc2luZ0ludFJlY3QoY2xpcEJvdW5kcykpOworICAgIGxheWVyQ29udGVudHMtPnBs
YXRmb3JtQ0FMYXllclBhaW50Q29udGVudHMoZ3JhcGhpY3NDb250ZXh0LCBjbGlwKTsKIAotICAg
ICAgICAvLyBGSVhNRTogaWRlYWxseSB3ZSdkIGF2b2lkIGNhbGxpbmcgLXNldE5lZWRzRGlzcGxh
eSBvbiBhIGxheWVyIHRoYXQgaXMgYSBwbGFpbiBjb2xvciwKLSAgICAgICAgLy8gc28gQ0EgbmV2
ZXIgbWFrZXMgYmFja2luZyBzdG9yZSBmb3IgaXQgKHdoaWNoIGlzIHdoYXQgLXNldE5lZWRzRGlz
cGxheSB3aWxsIGRvIGFib3ZlKS4KLSAgICAgICAgQ0dDb250ZXh0U2V0UkdCRmlsbENvbG9yKGNv
bnRleHQsIDAuMGYsIDEuMGYsIDAuMGYsIDEuMGYpOwotICAgICAgICBDR0NvbnRleHRGaWxsUmVj
dChjb250ZXh0LCBsYXllckJvdW5kcyk7Ci0gICAgfQotI2VuZGlmCisgICAgW05TR3JhcGhpY3ND
b250ZXh0IHJlc3RvcmVHcmFwaGljc1N0YXRlXTsKIAotICAgIGlmIChsYXllckNvbnRlbnRzLT5z
aG93UmVwYWludENvdW50ZXIoKSkgeworICAgIGlmIChsYXllckNvbnRlbnRzLT5wbGF0Zm9ybUNB
TGF5ZXJTaG93UmVwYWludENvdW50ZXIoKSkgewogICAgICAgICBib29sIGlzVGlsZWRMYXllciA9
IFtsYXllciBpc0tpbmRPZkNsYXNzOltDQVRpbGVkTGF5ZXIgY2xhc3NdXTsKIAogICAgICAgICBj
aGFyIHRleHRbMTZdOyAvLyB0aGF0J3MgYSBsb3Qgb2YgcmVwYWludHMKLSAgICAgICAgc25wcmlu
dGYodGV4dCwgc2l6ZW9mKHRleHQpLCAiJWQiLCBsYXllckNvbnRlbnRzLT5pbmNyZW1lbnRSZXBh
aW50Q291bnQoKSk7CisgICAgICAgIHNucHJpbnRmKHRleHQsIHNpemVvZih0ZXh0KSwgIiVkIiwg
bGF5ZXJDb250ZW50cy0+cGxhdGZvcm1DQUxheWVySW5jcmVtZW50UmVwYWludENvdW50KCkpOwog
CiAgICAgICAgIENHQ29udGV4dFNhdmVHU3RhdGUoY29udGV4dCk7CiAgICAgICAgIGlmIChpc1Rp
bGVkTGF5ZXIpCkBAIC0xMTcsMjYgKzEwNSwyNiBAQCB2b2lkIGRyYXdMYXllckNvbnRlbnRzKENH
Q29udGV4dFJlZiBjb250CiAgICAgQ0dDb250ZXh0UmVzdG9yZUdTdGF0ZShjb250ZXh0KTsKIH0K
IAotdm9pZCBzZXRMYXllck5lZWRzRGlzcGxheUluUmVjdChDQUxheWVyICpsYXllciwgV2ViQ29y
ZTo6R3JhcGhpY3NMYXllciogbGF5ZXJDb250ZW50cywgQ0dSZWN0IHJlY3QpCit2b2lkIHNldExh
eWVyTmVlZHNEaXNwbGF5SW5SZWN0KENBTGF5ZXIgKmxheWVyLCBXZWJDb3JlOjpQbGF0Zm9ybUNB
TGF5ZXJDbGllbnQqIGxheWVyQ29udGVudHMsIENHUmVjdCByZWN0KQogewotICAgIGlmIChsYXll
ckNvbnRlbnRzICYmIGxheWVyQ29udGVudHMtPmNsaWVudCgpICYmIGxheWVyQ29udGVudHMtPmRy
YXdzQ29udGVudCgpKSB7CisgICAgaWYgKGxheWVyQ29udGVudHMgJiYgbGF5ZXJDb250ZW50cy0+
cGxhdGZvcm1DQUxheWVyRHJhd3NDb250ZW50KCkpIHsKICAgICAgICAgc3RydWN0IG9iamNfc3Vw
ZXIgbGF5ZXJTdXBlciA9IHsgbGF5ZXIsIGNsYXNzX2dldFN1cGVyY2xhc3Mob2JqZWN0X2dldENs
YXNzKGxheWVyKSkgfTsKICNpZiBkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpCiAgICAgICAg
IHJlY3QgPSBDR1JlY3RBcHBseUFmZmluZVRyYW5zZm9ybShyZWN0LCBbbGF5ZXIgY29udGVudHNU
cmFuc2Zvcm1dKTsKICNlbHNlCi0gICAgICAgIGlmIChsYXllckNvbnRlbnRzLT5jb250ZW50c09y
aWVudGF0aW9uKCkgPT0gV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6Q29tcG9zaXRpbmdDb29yZGlu
YXRlc0JvdHRvbVVwKQorICAgICAgICBpZiAobGF5ZXJDb250ZW50cy0+cGxhdGZvcm1DQUxheWVy
Q29udGVudHNPcmllbnRhdGlvbigpID09IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OkNvbXBvc2l0
aW5nQ29vcmRpbmF0ZXNCb3R0b21VcCkKICAgICAgICAgICAgIHJlY3Qub3JpZ2luLnkgPSBbbGF5
ZXIgYm91bmRzXS5zaXplLmhlaWdodCAtIHJlY3Qub3JpZ2luLnkgLSByZWN0LnNpemUuaGVpZ2h0
OwogI2VuZGlmCiAgICAgICAgIG9iamNfbXNnU2VuZFN1cGVyKCZsYXllclN1cGVyLCBAc2VsZWN0
b3Ioc2V0TmVlZHNEaXNwbGF5SW5SZWN0OiksIHJlY3QpOwogCiAjaWZuZGVmIE5ERUJVRwotICAg
ICAgICBpZiAobGF5ZXJDb250ZW50cy0+c2hvd1JlcGFpbnRDb3VudGVyKCkpIHsKKyAgICAgICAg
aWYgKGxheWVyQ29udGVudHMtPnBsYXRmb3JtQ0FMYXllclNob3dSZXBhaW50Q291bnRlcigpKSB7
CiAgICAgICAgICAgICBDR1JlY3QgYm91bmRzID0gW2xheWVyIGJvdW5kc107CiAgICAgICAgICAg
ICBDR1JlY3QgaW5kaWNhdG9yUmVjdCA9IENHUmVjdE1ha2UoYm91bmRzLm9yaWdpbi54LCBib3Vu
ZHMub3JpZ2luLnksIDQ2LCAyNSk7CiAjaWYgZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKQog
ICAgICAgICAgICAgaW5kaWNhdG9yUmVjdCA9IENHUmVjdEFwcGx5QWZmaW5lVHJhbnNmb3JtKGlu
ZGljYXRvclJlY3QsIFtsYXllciBjb250ZW50c1RyYW5zZm9ybV0pOwogI2Vsc2UKLSAgICAgICAg
ICAgIGlmIChsYXllckNvbnRlbnRzLT5jb250ZW50c09yaWVudGF0aW9uKCkgPT0gV2ViQ29yZTo6
R3JhcGhpY3NMYXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc0JvdHRvbVVwKQorICAgICAgICAg
ICAgaWYgKGxheWVyQ29udGVudHMtPnBsYXRmb3JtQ0FMYXllckNvbnRlbnRzT3JpZW50YXRpb24o
KSA9PSBXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpDb21wb3NpdGluZ0Nvb3JkaW5hdGVzQm90dG9t
VXApCiAgICAgICAgICAgICAgICAgaW5kaWNhdG9yUmVjdC5vcmlnaW4ueSA9IFtsYXllciBib3Vu
ZHNdLnNpemUuaGVpZ2h0IC0gaW5kaWNhdG9yUmVjdC5vcmlnaW4ueSAtIGluZGljYXRvclJlY3Qu
c2l6ZS5oZWlnaHQ7CiAjZW5kaWYKICAgICAgICAgICAgIG9iamNfbXNnU2VuZFN1cGVyKCZsYXll
clN1cGVyLCBAc2VsZWN0b3Ioc2V0TmVlZHNEaXNwbGF5SW5SZWN0OiksIGluZGljYXRvclJlY3Qp
OwpAQCAtMTU1LDcgKzE0Myw3IEBAIC0gKGlkPENBQWN0aW9uPilhY3Rpb25Gb3JLZXk6KE5TU3Ry
aW5nICoKIC0gKHZvaWQpc2V0TmVlZHNEaXNwbGF5CiB7CiAgICAgUGxhdGZvcm1DQUxheWVyKiBs
YXllciA9IFBsYXRmb3JtQ0FMYXllcjo6cGxhdGZvcm1DQUxheWVyKHNlbGYpOwotICAgIGlmIChs
YXllciAmJiBsYXllci0+b3duZXIoKSAmJiBsYXllci0+b3duZXIoKS0+Y2xpZW50KCkgJiYgbGF5
ZXItPm93bmVyKCktPmRyYXdzQ29udGVudCgpKQorICAgIGlmIChsYXllciAmJiBsYXllci0+b3du
ZXIoKSAmJiBsYXllci0+b3duZXIoKS0+cGxhdGZvcm1DQUxheWVyRHJhd3NDb250ZW50KCkpCiAg
ICAgICAgIFtzdXBlciBzZXROZWVkc0Rpc3BsYXldOwogfQogCkBAIC0xNzEsNyArMTU5LDcgQEAg
LSAodm9pZClkaXNwbGF5CiAgICAgW3N1cGVyIGRpc3BsYXldOwogICAgIFBsYXRmb3JtQ0FMYXll
ciogbGF5ZXIgPSBQbGF0Zm9ybUNBTGF5ZXI6OnBsYXRmb3JtQ0FMYXllcihzZWxmKTsKICAgICBp
ZiAobGF5ZXIgJiYgbGF5ZXItPm93bmVyKCkpCi0gICAgICAgIGxheWVyLT5vd25lcigpLT5kaWRE
aXNwbGF5KHNlbGYpOworICAgICAgICBsYXllci0+b3duZXIoKS0+cGxhdGZvcm1DQUxheWVyTGF5
ZXJEaWREaXNwbGF5KHNlbGYpOwogfQogCiAtICh2b2lkKWRyYXdJbkNvbnRleHQ6KENHQ29udGV4
dFJlZiljb250ZXh0CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJUaWxl
ZExheWVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dl
YlRpbGVkTGF5ZXIubW0JKHJldmlzaW9uIDc1MTIzKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvV2ViVGlsZWRMYXllci5tbQkod29ya2luZyBjb3B5KQpAQCAtNjAsNyArNjAsNyBA
QCAtIChpZDxDQUFjdGlvbj4pYWN0aW9uRm9yS2V5OihOU1N0cmluZyAqCiAtICh2b2lkKXNldE5l
ZWRzRGlzcGxheQogewogICAgIFBsYXRmb3JtQ0FMYXllciogbGF5ZXIgPSBQbGF0Zm9ybUNBTGF5
ZXI6OnBsYXRmb3JtQ0FMYXllcihzZWxmKTsKLSAgICBpZiAobGF5ZXIgJiYgbGF5ZXItPm93bmVy
KCkgJiYgbGF5ZXItPm93bmVyKCktPmNsaWVudCgpICYmIGxheWVyLT5vd25lcigpLT5kcmF3c0Nv
bnRlbnQoKSkKKyAgICBpZiAobGF5ZXIgJiYgbGF5ZXItPm93bmVyKCkgJiYgbGF5ZXItPm93bmVy
KCktPnBsYXRmb3JtQ0FMYXllckRyYXdzQ29udGVudCgpKQogICAgICAgICBbc3VwZXIgc2V0TmVl
ZHNEaXNwbGF5XTsKIH0KIApAQCAtNzYsNyArNzYsNyBAQCAtICh2b2lkKWRpc3BsYXkKICAgICBb
c3VwZXIgZGlzcGxheV07CiAgICAgUGxhdGZvcm1DQUxheWVyKiBsYXllciA9IFBsYXRmb3JtQ0FM
YXllcjo6cGxhdGZvcm1DQUxheWVyKHNlbGYpOwogICAgIGlmIChsYXllciAmJiBsYXllci0+b3du
ZXIoKSkKLSAgICAgICAgbGF5ZXItPm93bmVyKCktPmRpZERpc3BsYXkoc2VsZik7CisgICAgICAg
IGxheWVyLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJMYXllckRpZERpc3BsYXkoc2VsZik7CiB9
CiAKIC0gKHZvaWQpZHJhd0luQ29udGV4dDooQ0dDb250ZXh0UmVmKWNvbnRleHQKSW5kZXg6IFdl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAkocmV2aXNpb24gNzUxMjMpCisr
KyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMTAxLDEyICsxMTAxLDEyIEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjpwYWludENv
bnRlbnRzKGMKIAogYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6OnNob3dEZWJ1Z0JvcmRlcnMoKSBj
b25zdAogewotICAgIHJldHVybiBjb21wb3NpdG9yKCkgPyBjb21wb3NpdG9yKCktPnNob3dEZWJ1
Z0JvcmRlcnMoKSA6IGZhbHNlOworICAgIHJldHVybiBjb21wb3NpdG9yKCkgPyBjb21wb3NpdG9y
KCktPmNvbXBvc2l0b3JTaG93RGVidWdCb3JkZXJzKCkgOiBmYWxzZTsKIH0KIAogYm9vbCBSZW5k
ZXJMYXllckJhY2tpbmc6OnNob3dSZXBhaW50Q291bnRlcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IGNvbXBvc2l0b3IoKSA/IGNvbXBvc2l0b3IoKS0+c2hvd1JlcGFpbnRDb3VudGVyKCkgOiBmYWxz
ZTsKKyAgICByZXR1cm4gY29tcG9zaXRvcigpID8gY29tcG9zaXRvcigpLT5jb21wb3NpdG9yU2hv
d1JlcGFpbnRDb3VudGVyKCkgOiBmYWxzZTsKIH0KIAogYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6
OnN0YXJ0QW5pbWF0aW9uKGRvdWJsZSB0aW1lT2Zmc2V0LCBjb25zdCBBbmltYXRpb24qIGFuaW0s
IGNvbnN0IEtleWZyYW1lTGlzdCYga2V5ZnJhbWVzKQpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCShyZXZpc2lvbiA3NTEyMykKKysrIFdlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEz
NTEsMTMgKzEzNTEsMTMgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmVuc3VyZVJvb3RQ
bAogICAgICAgICBpZiAoIW1fY2xpcExheWVyKSB7CiAgICAgICAgICAgICBBU1NFUlQoIW1fc2Ny
b2xsTGF5ZXIpOwogICAgICAgICAgICAgLy8gQ3JlYXRlIGEgY2xpcHBpbmcgbGF5ZXIgaWYgdGhp
cyBpcyBhbiBpZnJhbWUKLSAgICAgICAgICAgIG1fY2xpcExheWVyID0gR3JhcGhpY3NMYXllcjo6
Y3JlYXRlKDApOworICAgICAgICAgICAgbV9jbGlwTGF5ZXIgPSBHcmFwaGljc0xheWVyOjpjcmVh
dGUodGhpcyk7CiAjaWZuZGVmIE5ERUJVRwogICAgICAgICAgICAgbV9jbGlwTGF5ZXItPnNldE5h
bWUoImlmcmFtZSBDbGlwcGluZyIpOwogI2VuZGlmCiAgICAgICAgICAgICBtX2NsaXBMYXllci0+
c2V0TWFza3NUb0JvdW5kcyh0cnVlKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgbV9zY3Jv
bGxMYXllciA9IEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZSgwKTsKKyAgICAgICAgICAgIG1fc2Nyb2xs
TGF5ZXIgPSBHcmFwaGljc0xheWVyOjpjcmVhdGUodGhpcyk7CiAjaWZuZGVmIE5ERUJVRwogICAg
ICAgICAgICAgbV9zY3JvbGxMYXllci0+c2V0TmFtZSgiaWZyYW1lIHNjcm9sbGluZyIpOwogI2Vu
ZGlmCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaAkocmV2
aXNpb24gNzUxMjMpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3Iu
aAkod29ya2luZyBjb3B5KQpAQCAtNTQsMTEgKzU0LDExIEBAIGVudW0gQ29tcG9zaXRpbmdVcGRh
dGVUeXBlIHsKIC8vIAogLy8gVGhlcmUgaXMgb25lIFJlbmRlckxheWVyQ29tcG9zaXRvciBwZXIg
UmVuZGVyVmlldy4KIAotY2xhc3MgUmVuZGVyTGF5ZXJDb21wb3NpdG9yIHsKK2NsYXNzIFJlbmRl
ckxheWVyQ29tcG9zaXRvciA6IHB1YmxpYyBHcmFwaGljc0xheWVyQ2xpZW50IHsKIHB1YmxpYzoK
ICAgICBSZW5kZXJMYXllckNvbXBvc2l0b3IoUmVuZGVyVmlldyopOwogICAgIH5SZW5kZXJMYXll
ckNvbXBvc2l0b3IoKTsKLSAgICAKKwogICAgIC8vIFJldHVybiB0cnVlIGlmIHRoaXMgUmVuZGVy
VmlldyBpcyBpbiAiY29tcG9zaXRpbmcgbW9kZSIgKGkuZS4gaGFzIG9uZSBvciBtb3JlCiAgICAg
Ly8gY29tcG9zaXRlZCBSZW5kZXJMYXllcnMpCiAgICAgYm9vbCBpbkNvbXBvc2l0aW5nTW9kZSgp
IGNvbnN0IHsgcmV0dXJuIG1fY29tcG9zaXRpbmc7IH0KQEAgLTcxLDkgKzcxLDYgQEAgcHVibGlj
OgogCiAgICAgYm9vbCBjYW5SZW5kZXIzRFRyYW5zZm9ybXMoKSBjb25zdDsKIAotICAgIGJvb2wg
c2hvd0RlYnVnQm9yZGVycygpIGNvbnN0IHsgcmV0dXJuIG1fc2hvd0RlYnVnQm9yZGVyczsgfQot
ICAgIGJvb2wgc2hvd1JlcGFpbnRDb3VudGVyKCkgY29uc3QgeyByZXR1cm4gbV9zaG93UmVwYWlu
dENvdW50ZXI7IH0KLSAgICAKICAgICAvLyBDb3B5IHRoZSBhY2NlbGVyYXRlZCBjb21wb3NpdGlu
ZyByZWxhdGVkIGZsYWdzIGZyb20gU2V0dGluZ3MKICAgICB2b2lkIGNhY2hlQWNjZWxlcmF0ZWRD
b21wb3NpdGluZ0ZsYWdzKCk7CiAKQEAgLTE3Miw3ICsxNjksMjIgQEAgcHVibGljOgogCiAgICAg
U3RyaW5nIGxheWVyVHJlZUFzVGV4dCgpOwogCisgICAgLy8gVGhlc2UgYXJlIG5hbWVkIHRvIGF2
b2lkIGNvbmZsaWN0cyB3aXRoIHRoZSBmdW5jdGlvbnMgaW4gR3JhcGhpY3NMYXllckNsaWVudAor
ICAgIC8vIFRoZXNlIHJldHVybiB0aGUgYWN0dWFsIGludGVybmFsIHZhcmlhYmxlcy4KKyAgICBi
b29sIGNvbXBvc2l0b3JTaG93RGVidWdCb3JkZXJzKCkgY29uc3QgeyByZXR1cm4gbV9zaG93RGVi
dWdCb3JkZXJzOyB9CisgICAgYm9vbCBjb21wb3NpdG9yU2hvd1JlcGFpbnRDb3VudGVyKCkgY29u
c3QgeyByZXR1cm4gbV9zaG93UmVwYWludENvdW50ZXI7IH0KKwogcHJpdmF0ZToKKyAgICAvLyBH
cmFwaGljc0xheWVyQ2xpZW50IEltcGxlbWVudGF0aW9uCisgICAgdmlydHVhbCB2b2lkIG5vdGlm
eUFuaW1hdGlvblN0YXJ0ZWQoY29uc3QgR3JhcGhpY3NMYXllciosIGRvdWJsZSkgeyB9CisgICAg
dmlydHVhbCB2b2lkIG5vdGlmeVN5bmNSZXF1aXJlZChjb25zdCBHcmFwaGljc0xheWVyKikgeyBz
Y2hlZHVsZVN5bmMoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0IEdy
YXBoaWNzTGF5ZXIqLCBHcmFwaGljc0NvbnRleHQmLCBHcmFwaGljc0xheWVyUGFpbnRpbmdQaGFz
ZSwgY29uc3QgSW50UmVjdCYpIHsgfQorCisgICAgLy8gVGhlc2UgY2FsbHMgcmV0dXJuIGZhbHNl
IGFsd2F5cy4gVGhleSBhcmUgc2F5aW5nIHRoYXQgdGhlIGxheWVycyBhc3NvY2lhdGVkIHdpdGgg
dGhpcyBjbGllbnQKKyAgICAvLyAodGhlIGNsaXBMYXllciBhbmQgc2Nyb2xsTGF5ZXIpIHNob3Vs
ZCBuZXZlciBzaG93IGRlYnVnZ2luZyBpbmZvLgorICAgIHZpcnR1YWwgYm9vbCBzaG93RGVidWdC
b3JkZXJzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgc2hvd1Jl
cGFpbnRDb3VudGVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAKICAgICAvLyBXaGV0
aGVyIHRoZSBnaXZlbiBSTCBuZWVkcyBhIGNvbXBvc2l0aW5nIGxheWVyLgogICAgIGJvb2wgbmVl
ZHNUb0JlQ29tcG9zaXRlZChjb25zdCBSZW5kZXJMYXllciopIGNvbnN0OwogICAgIC8vIFdoZXRo
ZXIgdGhlIGxheWVyIGhhcyBhbiBpbnRyaW5zaWMgbmVlZCBmb3IgY29tcG9zaXRpbmcgbGF5ZXIu
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78196</attachid>
            <date>2011-01-06 18:12:23 -0800</date>
            <delta_ts>2011-01-06 18:37:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-49388-20110106181119.patch</filename>
            <type>text/plain</type>
            <size>122193</size>
            <attacher name="Chris Marrin">cmarrin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3NTIxNSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDQgQEAKKzIwMTEtMDEtMDYgIENocmlzIE1hcnJpbiAgPGNtYXJyaW5AYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNo
YXJlIGNvZGUgYmV0d2VlbiBNYWMgKENBKSBhbmQgV2luZG93cyAoQ0FDRikgR3JhcGhpY3NMYXll
ciBpbXBsZW1lbnRhdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQ5Mzg4CisKKyAgICAgICAgRmluYWwgc3RlcCBpbiB1bmlmeWluZyBHcmFwaGlj
c0xheWVyIGxvZ2ljIGFjcm9zcyBXaW4gYW5kIE1hYy4gVGhpcyAKKyAgICAgICAgaW1wbGVtZW50
cyB0aGUgV2luZG93cyBzaWRlIGNsYXNzZXMgZm9yIFBsYXRmb3JtQ0FMYXllciBhbmQgc3VwcG9y
dGluZworICAgICAgICBjbGFzc2VzLiBBbHNvIGNoYW5nZWQgTWVkaWFQbGF5ZXIgdG8gdXNlIG5l
dyBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQKKyAgICAgICAgc28gaXQgY2FuIHVzZSBQbGF0Zm9ybUNB
TGF5ZXIgZGlyZWN0bHkgcmF0aGVyIHRoYW4gYSBkdW1teSBHcmFwaGljc0xheWVyLgorICAgICAg
ICBXS0NBQ0ZMYXllclJlbmRlcmVyIG5vdyBkb2VzIHRoZSB0YXNrIG9mIG5vdGlmeWluZyBhbmlt
YXRpb25zIG9mIHRoZWlyCisgICAgICAgIHN0YXJ0IHRpbWUuIEFsc28gY29tbWVudGVkIG91dCBh
biBhc3NlcnQgaW4gQW5pbWF0aW9uQmFzZSBiZWNhdXNlCisgICAgICAgIEFuaW1hdGlvbkNvbnRy
b2xsZXIncyBmcmFtZSB0aW1lIGlzIG5vdCBpbiBzeW5jIHdpdGggdGhlIG5ldyAKKyAgICAgICAg
QW5pbWF0aW9uVGltZUNvbnRyb2xsZXIuIEkndmUgb3BlbmVkIGEgbmV3IGJ1ZyBmb3IgdGhhdCBp
c3N1ZToKKworICAgICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTUyMDM3CisKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAg
ICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlQ29tbW9uLnZzcHJvcHM6CisgICAgICAgICog
V2ViQ29yZS52Y3Byb2ovY29weUZvcndhcmRpbmdIZWFkZXJzLmNtZDoKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0Lmg6CisgICAgICAgICogcGFnZS9hbmltYXRp
b24vQW5pbWF0aW9uQmFzZS5jcHA6CisgICAgICAgICogcGFnZS9hbmltYXRpb24vQW5pbWF0aW9u
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25Db250cm9sbGVyUHJp
dmF0ZTo6YmVnaW5BbmltYXRpb25VcGRhdGVUaW1lKToKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlv
bi9LZXlmcmFtZUFuaW1hdGlvbi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
UGxhdGZvcm1DQUFuaW1hdGlvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL3dp
bjogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FB
bmltYXRpb25XaW4uY3BwOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS93
aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbkludGVybmFsLmNwcDogQWRkZWQuCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbkludGVybmFs
Lmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRl
eHRDR1dpbi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVy
UHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3cuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3dpbi9NZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93Lmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvbnRl
eHQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZh
dGVRdWlja1RpbWVWaXN1YWxDb250ZXh0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL01lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVdpbi5jcHA6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL1dLQ0FDRkxheWVyUmVuZGVyZXIuY3BwOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3dpbi9XS0NBQ0ZMYXllclJlbmRlcmVyLmg6CisKIDIwMTEtMDEtMDUgIFpo
ZW55YW8gTW8gIDx6bW9AZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRo
IFJ1c3NlbGwuCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlz
aW9uIDc1MjEzKQorKysgV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29y
a2luZyBjb3B5KQpAQCAtMTgsNyArMTgsNyBAQAogCQk8Q29uZmlndXJhdGlvbgogCQkJTmFtZT0i
RGVidWd8V2luMzIiCiAJCQlDb25maWd1cmF0aW9uVHlwZT0iNCIKLQkJCUluaGVyaXRlZFByb3Bl
cnR5U2hlZXRzPSIkKFdlYktpdFZTUHJvcHNSZWRpcmVjdGlvbkRpcikuLlwuLlxXZWJLaXRMaWJy
YXJpZXNcd2luXHRvb2xzXHZzcHJvcHNcRmVhdHVyZURlZmluZXMudnNwcm9wczskKFdlYktpdFZT
UHJvcHNSZWRpcmVjdGlvbkRpcikuLlwuLlxXZWJLaXRMaWJyYXJpZXNcd2luXHRvb2xzXHZzcHJv
cHNcY29tbW9uLnZzcHJvcHM7JChXZWJLaXRWU1Byb3BzUmVkaXJlY3Rpb25EaXIpLi5cLi5cV2Vi
S2l0TGlicmFyaWVzXHdpblx0b29sc1x2c3Byb3BzXGRlYnVnLnZzcHJvcHM7LlxXZWJDb3JlQ29t
bW9uLnZzcHJvcHM7LlxXZWJDb3JlQ0cudnNwcm9wczsuXFdlYkNvcmVDRk5ldHdvcmsudnNwcm9w
czsuXFdlYkNvcmVQdGhyZWFkcy52c3Byb3BzOy5cV2ViQ29yZU1lZGlhUVQudnNwcm9wczsuXFdl
YkNvcmVRdWFydHpDb3JlLnZzcHJvcHMiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLi5c
Li5cV2ViS2l0TGlicmFyaWVzXHdpblx0b29sc1x2c3Byb3BzXEZlYXR1cmVEZWZpbmVzLnZzcHJv
cHM7Li5cLi5cV2ViS2l0TGlicmFyaWVzXHdpblx0b29sc1x2c3Byb3BzXGNvbW1vbi52c3Byb3Bz
Oy4uXC4uXFdlYktpdExpYnJhcmllc1x3aW5cdG9vbHNcdnNwcm9wc1xkZWJ1Zy52c3Byb3BzOy5c
V2ViQ29yZUNvbW1vbi52c3Byb3BzOy5cV2ViQ29yZUNHLnZzcHJvcHM7LlxXZWJDb3JlQ0ZOZXR3
b3JrLnZzcHJvcHM7LlxXZWJDb3JlUHRocmVhZHMudnNwcm9wczsuXFdlYkNvcmVNZWRpYVFULnZz
cHJvcHM7LlxXZWJDb3JlUXVhcnR6Q29yZS52c3Byb3BzIgogCQkJQ2hhcmFjdGVyU2V0PSIxIgog
CQkJPgogCQkJPFRvb2wKQEAgLTcyLDcgKzcyLDcgQEAKIAkJPENvbmZpZ3VyYXRpb24KIAkJCU5h
bWU9IlJlbGVhc2V8V2luMzIiCiAJCQlDb25maWd1cmF0aW9uVHlwZT0iNCIKLQkJCUluaGVyaXRl
ZFByb3BlcnR5U2hlZXRzPSIkKFdlYktpdFZTUHJvcHNSZWRpcmVjdGlvbkRpcikuLlwuLlxXZWJL
aXRMaWJyYXJpZXNcd2luXHRvb2xzXHZzcHJvcHNcRmVhdHVyZURlZmluZXMudnNwcm9wczskKFdl
YktpdFZTUHJvcHNSZWRpcmVjdGlvbkRpcikuLlwuLlxXZWJLaXRMaWJyYXJpZXNcd2luXHRvb2xz
XHZzcHJvcHNcY29tbW9uLnZzcHJvcHM7JChXZWJLaXRWU1Byb3BzUmVkaXJlY3Rpb25EaXIpLi5c
Li5cV2ViS2l0TGlicmFyaWVzXHdpblx0b29sc1x2c3Byb3BzXHJlbGVhc2UudnNwcm9wczsuXFdl
YkNvcmVDb21tb24udnNwcm9wczsuXFdlYkNvcmVDRy52c3Byb3BzOy5cV2ViQ29yZUNGTmV0d29y
ay52c3Byb3BzOy5cV2ViQ29yZVB0aHJlYWRzLnZzcHJvcHM7LlxXZWJDb3JlTWVkaWFRVC52c3By
b3BzOy5cV2ViQ29yZVF1YXJ0ekNvcmUudnNwcm9wcyIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hl
ZXRzPSIuLlwuLlxXZWJLaXRMaWJyYXJpZXNcd2luXHRvb2xzXHZzcHJvcHNcRmVhdHVyZURlZmlu
ZXMudnNwcm9wczsuLlwuLlxXZWJLaXRMaWJyYXJpZXNcd2luXHRvb2xzXHZzcHJvcHNcY29tbW9u
LnZzcHJvcHM7Li5cLi5cV2ViS2l0TGlicmFyaWVzXHdpblx0b29sc1x2c3Byb3BzXHJlbGVhc2Uu
dnNwcm9wczsuXFdlYkNvcmVDb21tb24udnNwcm9wczsuXFdlYkNvcmVDRy52c3Byb3BzOy5cV2Vi
Q29yZUNGTmV0d29yay52c3Byb3BzOy5cV2ViQ29yZVB0aHJlYWRzLnZzcHJvcHM7LlxXZWJDb3Jl
TWVkaWFRVC52c3Byb3BzOy5cV2ViQ29yZVF1YXJ0ekNvcmUudnNwcm9wcyIKIAkJCUNoYXJhY3Rl
clNldD0iMSIKIAkJCT4KIAkJCTxUb29sCkBAIC0xMjYsNyArMTI2LDcgQEAKIAkJPENvbmZpZ3Vy
YXRpb24KIAkJCU5hbWU9IkRlYnVnX0NhaXJvX0NGTGl0ZXxXaW4zMiIKIAkJCUNvbmZpZ3VyYXRp
b25UeXBlPSI0IgotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9IiQoV2ViS2l0VlNQcm9wc1Jl
ZGlyZWN0aW9uRGlyKS4uXC4uXFdlYktpdExpYnJhcmllc1x3aW5cdG9vbHNcdnNwcm9wc1xGZWF0
dXJlRGVmaW5lc0NhaXJvLnZzcHJvcHM7JChXZWJLaXRWU1Byb3BzUmVkaXJlY3Rpb25EaXIpLi5c
Li5cV2ViS2l0TGlicmFyaWVzXHdpblx0b29sc1x2c3Byb3BzXGNvbW1vbi52c3Byb3BzOyQoV2Vi
S2l0VlNQcm9wc1JlZGlyZWN0aW9uRGlyKS4uXC4uXFdlYktpdExpYnJhcmllc1x3aW5cdG9vbHNc
dnNwcm9wc1xkZWJ1Zy52c3Byb3BzOyQoV2ViS2l0VlNQcm9wc1JlZGlyZWN0aW9uRGlyKS4uXC4u
XFdlYktpdExpYnJhcmllc1x3aW5cdG9vbHNcdnNwcm9wc1xkZWJ1Z193aW5jYWlyby52c3Byb3Bz
Oy5cV2ViQ29yZUNvbW1vbi52c3Byb3BzOy5cV2ViQ29yZUNhaXJvLnZzcHJvcHM7LlxXZWJDb3Jl
Q1VSTC52c3Byb3BzIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii4uXC4uXFdlYktpdExp
YnJhcmllc1x3aW5cdG9vbHNcdnNwcm9wc1xGZWF0dXJlRGVmaW5lc0NhaXJvLnZzcHJvcHM7Li5c
Li5cV2ViS2l0TGlicmFyaWVzXHdpblx0b29sc1x2c3Byb3BzXGNvbW1vbi52c3Byb3BzOy4uXC4u
XFdlYktpdExpYnJhcmllc1x3aW5cdG9vbHNcdnNwcm9wc1xkZWJ1Zy52c3Byb3BzOy4uXC4uXFdl
YktpdExpYnJhcmllc1x3aW5cdG9vbHNcdnNwcm9wc1xkZWJ1Z193aW5jYWlyby52c3Byb3BzOy5c
V2ViQ29yZUNvbW1vbi52c3Byb3BzOy5cV2ViQ29yZUNhaXJvLnZzcHJvcHM7LlxXZWJDb3JlQ1VS
TC52c3Byb3BzIgogCQkJQ2hhcmFjdGVyU2V0PSIxIgogCQkJPgogCQkJPFRvb2wKQEAgLTE4MCw3
ICsxODAsNyBAQAogCQk8Q29uZmlndXJhdGlvbgogCQkJTmFtZT0iUmVsZWFzZV9DYWlyb19DRkxp
dGV8V2luMzIiCiAJCQlDb25maWd1cmF0aW9uVHlwZT0iNCIKLQkJCUluaGVyaXRlZFByb3BlcnR5
U2hlZXRzPSIkKFdlYktpdFZTUHJvcHNSZWRpcmVjdGlvbkRpcikuLlwuLlxXZWJLaXRMaWJyYXJp
ZXNcd2luXHRvb2xzXHZzcHJvcHNcRmVhdHVyZURlZmluZXNDYWlyby52c3Byb3BzOyQoV2ViS2l0
VlNQcm9wc1JlZGlyZWN0aW9uRGlyKS4uXC4uXFdlYktpdExpYnJhcmllc1x3aW5cdG9vbHNcdnNw
cm9wc1xjb21tb24udnNwcm9wczskKFdlYktpdFZTUHJvcHNSZWRpcmVjdGlvbkRpcikuLlwuLlxX
ZWJLaXRMaWJyYXJpZXNcd2luXHRvb2xzXHZzcHJvcHNccmVsZWFzZS52c3Byb3BzOyQoV2ViS2l0
VlNQcm9wc1JlZGlyZWN0aW9uRGlyKS4uXC4uXFdlYktpdExpYnJhcmllc1x3aW5cdG9vbHNcdnNw
cm9wc1xXaW5DYWlyby52c3Byb3BzOy5cV2ViQ29yZUNvbW1vbi52c3Byb3BzOy5cV2ViQ29yZUNh
aXJvLnZzcHJvcHM7LlxXZWJDb3JlQ1VSTC52c3Byb3BzIgorCQkJSW5oZXJpdGVkUHJvcGVydHlT
aGVldHM9Ii4uXC4uXFdlYktpdExpYnJhcmllc1x3aW5cdG9vbHNcdnNwcm9wc1xGZWF0dXJlRGVm
aW5lc0NhaXJvLnZzcHJvcHM7Li5cLi5cV2ViS2l0TGlicmFyaWVzXHdpblx0b29sc1x2c3Byb3Bz
XGNvbW1vbi52c3Byb3BzOy4uXC4uXFdlYktpdExpYnJhcmllc1x3aW5cdG9vbHNcdnNwcm9wc1xy
ZWxlYXNlLnZzcHJvcHM7Li5cLi5cV2ViS2l0TGlicmFyaWVzXHdpblx0b29sc1x2c3Byb3BzXFdp
bkNhaXJvLnZzcHJvcHM7LlxXZWJDb3JlQ29tbW9uLnZzcHJvcHM7LlxXZWJDb3JlQ2Fpcm8udnNw
cm9wczsuXFdlYkNvcmVDVVJMLnZzcHJvcHMiCiAJCQlDaGFyYWN0ZXJTZXQ9IjEiCiAJCQk+CiAJ
CQk8VG9vbApAQCAtMjM0LDcgKzIzNCw3IEBACiAJCTxDb25maWd1cmF0aW9uCiAJCQlOYW1lPSJE
ZWJ1Z19BbGx8V2luMzIiCiAJCQlDb25maWd1cmF0aW9uVHlwZT0iNCIKLQkJCUluaGVyaXRlZFBy
b3BlcnR5U2hlZXRzPSIkKFdlYktpdFZTUHJvcHNSZWRpcmVjdGlvbkRpcikuLlwuLlxXZWJLaXRM
aWJyYXJpZXNcd2luXHRvb2xzXHZzcHJvcHNcRmVhdHVyZURlZmluZXMudnNwcm9wczskKFdlYktp
dFZTUHJvcHNSZWRpcmVjdGlvbkRpcikuLlwuLlxXZWJLaXRMaWJyYXJpZXNcd2luXHRvb2xzXHZz
cHJvcHNcY29tbW9uLnZzcHJvcHM7JChXZWJLaXRWU1Byb3BzUmVkaXJlY3Rpb25EaXIpLi5cLi5c
V2ViS2l0TGlicmFyaWVzXHdpblx0b29sc1x2c3Byb3BzXGRlYnVnLnZzcHJvcHM7LlxXZWJDb3Jl
Q29tbW9uLnZzcHJvcHM7LlxXZWJDb3JlQ0cudnNwcm9wczsuXFdlYkNvcmVDRk5ldHdvcmsudnNw
cm9wczsuXFdlYkNvcmVQdGhyZWFkcy52c3Byb3BzOy5cV2ViQ29yZU1lZGlhUVQudnNwcm9wczsk
KFdlYktpdFZTUHJvcHNSZWRpcmVjdGlvbkRpcikuLlwuLlxXZWJLaXRMaWJyYXJpZXNcd2luXHRv
b2xzXHZzcHJvcHNcZGVidWdfYWxsLnZzcHJvcHM7LlxXZWJDb3JlUXVhcnR6Q29yZS52c3Byb3Bz
IgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii4uXC4uXFdlYktpdExpYnJhcmllc1x3aW5c
dG9vbHNcdnNwcm9wc1xGZWF0dXJlRGVmaW5lcy52c3Byb3BzOy4uXC4uXFdlYktpdExpYnJhcmll
c1x3aW5cdG9vbHNcdnNwcm9wc1xjb21tb24udnNwcm9wczsuLlwuLlxXZWJLaXRMaWJyYXJpZXNc
d2luXHRvb2xzXHZzcHJvcHNcZGVidWcudnNwcm9wczsuXFdlYkNvcmVDb21tb24udnNwcm9wczsu
XFdlYkNvcmVDRy52c3Byb3BzOy5cV2ViQ29yZUNGTmV0d29yay52c3Byb3BzOy5cV2ViQ29yZVB0
aHJlYWRzLnZzcHJvcHM7LlxXZWJDb3JlTWVkaWFRVC52c3Byb3BzOy4uXC4uXFdlYktpdExpYnJh
cmllc1x3aW5cdG9vbHNcdnNwcm9wc1xkZWJ1Z19hbGwudnNwcm9wczsuXFdlYkNvcmVRdWFydHpD
b3JlLnZzcHJvcHMiCiAJCQlDaGFyYWN0ZXJTZXQ9IjEiCiAJCQk+CiAJCQk8VG9vbApAQCAtMjg4
LDcgKzI4OCw3IEBACiAJCTxDb25maWd1cmF0aW9uCiAJCQlOYW1lPSJSZWxlYXNlX0xUQ0d8V2lu
MzIiCiAJCQlDb25maWd1cmF0aW9uVHlwZT0iNCIKLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRz
PSIkKFdlYktpdFZTUHJvcHNSZWRpcmVjdGlvbkRpcikuLlwuLlxXZWJLaXRMaWJyYXJpZXNcd2lu
XHRvb2xzXHZzcHJvcHNcRmVhdHVyZURlZmluZXMudnNwcm9wczskKFdlYktpdFZTUHJvcHNSZWRp
cmVjdGlvbkRpcikuLlwuLlxXZWJLaXRMaWJyYXJpZXNcd2luXHRvb2xzXHZzcHJvcHNcY29tbW9u
LnZzcHJvcHM7JChXZWJLaXRWU1Byb3BzUmVkaXJlY3Rpb25EaXIpLi5cLi5cV2ViS2l0TGlicmFy
aWVzXHdpblx0b29sc1x2c3Byb3BzXHJlbGVhc2UudnNwcm9wczsuXFdlYkNvcmVDb21tb24udnNw
cm9wczsuXFdlYkNvcmVDRy52c3Byb3BzOy5cV2ViQ29yZUNGTmV0d29yay52c3Byb3BzOy5cV2Vi
Q29yZVB0aHJlYWRzLnZzcHJvcHM7LlxXZWJDb3JlTWVkaWFRVC52c3Byb3BzOy5cV2ViQ29yZVF1
YXJ0ekNvcmUudnNwcm9wcyIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuLlwuLlxXZWJL
aXRMaWJyYXJpZXNcd2luXHRvb2xzXHZzcHJvcHNcRmVhdHVyZURlZmluZXMudnNwcm9wczsuLlwu
LlxXZWJLaXRMaWJyYXJpZXNcd2luXHRvb2xzXHZzcHJvcHNcY29tbW9uLnZzcHJvcHM7Li5cLi5c
V2ViS2l0TGlicmFyaWVzXHdpblx0b29sc1x2c3Byb3BzXHJlbGVhc2UudnNwcm9wczsuXFdlYkNv
cmVDb21tb24udnNwcm9wczsuXFdlYkNvcmVDRy52c3Byb3BzOy5cV2ViQ29yZUNGTmV0d29yay52
c3Byb3BzOy5cV2ViQ29yZVB0aHJlYWRzLnZzcHJvcHM7LlxXZWJDb3JlTWVkaWFRVC52c3Byb3Bz
Oy5cV2ViQ29yZVF1YXJ0ekNvcmUudnNwcm9wcyIKIAkJCUNoYXJhY3RlclNldD0iMSIKIAkJCVdo
b2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSIKIAkJCT4KQEAgLTI0NzkwLDEwICsyNDc5MCw2IEBA
CiAJCQlOYW1lPSJsb2FkZXIiCiAJCQk+CiAJCQk8RmlsZQotCQkJCVJlbGF0aXZlUGF0aD0iLi5c
bG9hZGVyXFJlc291cmNlTG9hZFNjaGVkdWxlci5oIgotCQkJCT4KLQkJCTwvRmlsZT4KLQkJCTxG
aWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxsb2FkZXJcQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9s
LmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CkBAIC0yNTAxOCwxMCArMjUwMTQsMTggQEAKIAkJCQk+
CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cbG9hZGVyXFJlc291
cmNlTG9hZFByaW9yaXR5LmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXGxvYWRlclxSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwIgogCQkJCT4KIAkJ
CTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxsb2FkZXJcUmVzb3VyY2VM
b2FkU2NoZWR1bGVyLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXGxvYWRlclxTaW5rRG9jdW1lbnQuY3BwIgogCQkJCT4KIAkJCTwvRmlsZT4KQEAg
LTI1MzY5LDcgKzI1MzczLDcgQEAKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXENvbnRl
bnRUeXBlLmgiCiAJCQkJPgogCQkJPC9GaWxlPgotICAgICAgICAgICAgPEZpbGUKKwkJCTxGaWxl
CiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxDb250ZXh0TWVudS5jcHAiCiAJCQkJPgog
CQkJPC9GaWxlPgpAQCAtMjUzNzcsNyArMjUzODEsNyBAQAogCQkJCVJlbGF0aXZlUGF0aD0iLi5c
cGxhdGZvcm1cQ29udGV4dE1lbnUuaCIKIAkJCQk+CiAJCQk8L0ZpbGU+Ci0gICAgICAgICAgICA8
RmlsZQorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXENvbnRleHRNZW51
SXRlbS5jcHAiCiAJCQkJPgogCQkJPC9GaWxlPgpAQCAtMjY5OTYsNDYgKzI3MDAwLDYgQEAKIAkJ
CQkJCT4KIAkJCQkJPC9GaWxlPgogCQkJCQk8RmlsZQotCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxw
bGF0Zm9ybVxncmFwaGljc1x3aW5cR3JhcGhpY3NMYXllckNBQ0YuY3BwIgotCQkJCQkJPgotCQkJ
CQkJPEZpbGVDb25maWd1cmF0aW9uCi0JCQkJCQkJTmFtZT0iRGVidWdfQ2Fpcm9fQ0ZMaXRlfFdp
bjMyIgotCQkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgotCQkJCQkJCT4KLQkJCQkJCQk8
VG9vbAotCQkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgotCQkJCQkJCS8+Ci0JCQkJCQk8
L0ZpbGVDb25maWd1cmF0aW9uPgotCQkJCQkJPEZpbGVDb25maWd1cmF0aW9uCi0JCQkJCQkJTmFt
ZT0iUmVsZWFzZV9DYWlyb19DRkxpdGV8V2luMzIiCi0JCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9
InRydWUiCi0JCQkJCQkJPgotCQkJCQkJCTxUb29sCi0JCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxl
clRvb2wiCi0JCQkJCQkJLz4KLQkJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+Ci0JCQkJCTwvRmls
ZT4KLQkJCQkJPEZpbGUKLQkJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3Nc
d2luXEdyYXBoaWNzTGF5ZXJDQUNGLmgiCi0JCQkJCQk+Ci0JCQkJCQk8RmlsZUNvbmZpZ3VyYXRp
b24KLQkJCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb19DRkxpdGV8V2luMzIiCi0JCQkJCQkJRXhjbHVk
ZWRGcm9tQnVpbGQ9InRydWUiCi0JCQkJCQkJPgotCQkJCQkJCTxUb29sCi0JCQkJCQkJCU5hbWU9
IlZDQ3VzdG9tQnVpbGRUb29sIgotCQkJCQkJCS8+Ci0JCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9u
PgotCQkJCQkJPEZpbGVDb25maWd1cmF0aW9uCi0JCQkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb19D
RkxpdGV8V2luMzIiCi0JCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCi0JCQkJCQkJPgot
CQkJCQkJCTxUb29sCi0JCQkJCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgotCQkJCQkJCS8+
Ci0JCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgotCQkJCQk8L0ZpbGU+Ci0JCQkJCTxGaWxlCiAJ
CQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXHdpblxJY29uV2luLmNwcCIK
IAkJCQkJCT4KIAkJCQkJPC9GaWxlPgpAQCAtMjc0NDgsNDYgKzI3NDEyLDYgQEAKIAkJCQkJCTwv
RmlsZUNvbmZpZ3VyYXRpb24+CiAJCQkJCTwvRmlsZT4KIAkJCQkJPEZpbGUKLQkJCQkJCVJlbGF0
aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3Ncd2luXFdLQ0FDRkxheWVyLmNwcCIKLQkJCQkJ
CT4KLQkJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgotCQkJCQkJCU5hbWU9IkRlYnVnX0NhaXJvX0NG
TGl0ZXxXaW4zMiIKLQkJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKLQkJCQkJCQk+Ci0J
CQkJCQkJPFRvb2wKLQkJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJCQkJCQkvPgot
CQkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KLQkJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgotCQkJ
CQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgotCQkJCQkJCUV4Y2x1ZGVkRnJv
bUJ1aWxkPSJ0cnVlIgotCQkJCQkJCT4KLQkJCQkJCQk8VG9vbAotCQkJCQkJCQlOYW1lPSJWQ0NM
Q29tcGlsZXJUb29sIgotCQkJCQkJCS8+Ci0JCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgotCQkJ
CQk8L0ZpbGU+Ci0JCQkJCTxGaWxlCi0JCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdy
YXBoaWNzXHdpblxXS0NBQ0ZMYXllci5oIgotCQkJCQkJPgotCQkJCQkJPEZpbGVDb25maWd1cmF0
aW9uCi0JCQkJCQkJTmFtZT0iRGVidWdfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgotCQkJCQkJCUV4Y2x1
ZGVkRnJvbUJ1aWxkPSJ0cnVlIgotCQkJCQkJCT4KLQkJCQkJCQk8VG9vbAotCQkJCQkJCQlOYW1l
PSJWQ0N1c3RvbUJ1aWxkVG9vbCIKLQkJCQkJCQkvPgotCQkJCQkJPC9GaWxlQ29uZmlndXJhdGlv
bj4KLQkJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgotCQkJCQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm9f
Q0ZMaXRlfFdpbjMyIgotCQkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgotCQkJCQkJCT4K
LQkJCQkJCQk8VG9vbAotCQkJCQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKLQkJCQkJCQkv
PgotCQkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KLQkJCQkJPC9GaWxlPgotCQkJCQk8RmlsZQog
CQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGljc1x3aW5cV0tDQUNGTGF5ZXJS
ZW5kZXJlci5jcHAiCiAJCQkJCQk+CiAJCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KQEAgLTI4OTU2
LDYgKzI4ODgwLDU0IEBACiAJCQkJCQk+CiAJCQkJCTwvRmlsZT4KIAkJCQk8L0ZpbHRlcj4KKwkJ
CQk8RmlsdGVyCisJCQkJCU5hbWU9ImNhIgorCQkJCQk+CisJCQkJCTxGaWxlCisJCQkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGNhXEdyYXBoaWNzTGF5ZXJDQS5jcHAiCisJ
CQkJCQk+CisJCQkJCTwvRmlsZT4KKwkJCQkJPEZpbGUKKwkJCQkJCVJlbGF0aXZlUGF0aD0iLi5c
cGxhdGZvcm1cZ3JhcGhpY3NcY2FcR3JhcGhpY3NMYXllckNBLmgiCisJCQkJCQk+CisJCQkJCTwv
RmlsZT4KKwkJCQkJPEZpbGUKKwkJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhp
Y3NcY2FcUGxhdGZvcm1DQUFuaW1hdGlvbi5oIgorCQkJCQkJPgorCQkJCQk8L0ZpbGU+CisJCQkJ
CTxGaWxlCisJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGNhXFBsYXRm
b3JtQ0FMYXllci5oIgorCQkJCQkJPgorCQkJCQk8L0ZpbGU+CisJCQkJCTxGaWxlCisJCQkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGNhXFBsYXRmb3JtQ0FMYXllckNsaWVu
dC5oIgorCQkJCQkJPgorCQkJCQk8L0ZpbGU+CisJCQkJCTxGaWxlCisJCQkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGNhXFRyYW5zZm9ybWF0aW9uTWF0cml4Q0EuY3BwIgor
CQkJCQkJPgorCQkJCQk8L0ZpbGU+CisJCQkJCTxGaWx0ZXIKKwkJCQkJCU5hbWU9IndpbiIKKwkJ
CQkJCT4KKwkJCQkJCTxGaWxlCisJCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFw
aGljc1xjYVx3aW5cUGxhdGZvcm1DQUFuaW1hdGlvbldpbi5jcHAiCisJCQkJCQkJPgorCQkJCQkJ
PC9GaWxlPgorCQkJCQkJPEZpbGUKKwkJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdy
YXBoaWNzXGNhXHdpblxQbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwIgorCQkJCQkJCT4KKwkJCQkJCTwv
RmlsZT4KKwkJCQkJCTxGaWxlCisJCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFw
aGljc1xjYVx3aW5cUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWwuY3BwIgorCQkJCQkJCT4KKwkJ
CQkJCTwvRmlsZT4KKwkJCQkJCTxGaWxlCisJCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9y
bVxncmFwaGljc1xjYVx3aW5cUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWwuaCIKKwkJCQkJCQk+
CisJCQkJCQk8L0ZpbGU+CisJCQkJCTwvRmlsdGVyPgorCQkJCTwvRmlsdGVyPgogCQkJPC9GaWx0
ZXI+CiAJCQk8RmlsdGVyCiAJCQkJTmFtZT0ibmV0d29yayIKQEAgLTQzNjU0LDcgKzQzNjI2LDcg
QEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9t
XEV2ZW50VGFyZ2V0LmNwcCIKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGRvbVxFdmVudFF1ZXVlLmNw
cCIKIAkJCQk+CiAJCQkJPEZpbGVDb25maWd1cmF0aW9uCiAJCQkJCU5hbWU9IkRlYnVnfFdpbjMy
IgpAQCAtNDM2NzMsNyArNDM2NDUsNyBAQAogCQkJCQkvPgogCQkJCTwvRmlsZUNvbmZpZ3VyYXRp
b24+CiAJCQkJPEZpbGVDb25maWd1cmF0aW9uCi0JCQkJCU5hbWU9IkRlYnVnX0NhaXJvX0NGTGl0
ZXxXaW4zMiIKKwkJCQkJTmFtZT0iRGVidWdfQWxsfFdpbjMyIgogCQkJCQlFeGNsdWRlZEZyb21C
dWlsZD0idHJ1ZSIKIAkJCQkJPgogCQkJCQk8VG9vbApAQCAtNDM2ODEsNyArNDM2NTMsNyBAQAog
CQkJCQkvPgogCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CiAJCQkJPEZpbGVDb25maWd1cmF0aW9u
Ci0JCQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQlOYW1lPSJEZWJ1
Z19JbnRlcm5hbHxXaW4zMiIKIAkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCiAJCQkJCT4K
IAkJCQkJPFRvb2wKQEAgLTQzNjg5LDcgKzQzNjYxLDcgQEAKIAkJCQkJLz4KIAkJCQk8L0ZpbGVD
b25maWd1cmF0aW9uPgogCQkJCTxGaWxlQ29uZmlndXJhdGlvbgotCQkJCQlOYW1lPSJEZWJ1Z19B
bGx8V2luMzIiCisJCQkJCU5hbWU9IkRlYnVnX0NhaXJvfFdpbjMyIgogCQkJCQlFeGNsdWRlZEZy
b21CdWlsZD0idHJ1ZSIKIAkJCQkJPgogCQkJCQk8VG9vbApAQCAtNDM2OTcsNyArNDM2NjksNyBA
QAogCQkJCQkvPgogCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CiAJCQkJPEZpbGVDb25maWd1cmF0
aW9uCi0JCQkJCU5hbWU9IlJlbGVhc2VfTFRDR3xXaW4zMiIKKwkJCQkJTmFtZT0iUmVsZWFzZV9D
YWlyb3xXaW4zMiIKIAkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCiAJCQkJCT4KIAkJCQkJ
PFRvb2wKQEAgLTQzNzA2LDExICs0MzY3OCwxMSBAQAogCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+
CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXEV2ZW50VGFy
Z2V0LmgiCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cRXZlbnRRdWV1ZS5oIgogCQkJCT4KIAkJ
CTwvRmlsZT4KLQkJICA8RmlsZQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXEV2ZW50UXVldWUu
Y3BwIgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGRvbVxFdmVudFRhcmdldC5jcHAi
CiAJCQkJPgogCQkJCTxGaWxlQ29uZmlndXJhdGlvbgogCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIK
QEAgLTQzNzI5LDcgKzQzNzAxLDcgQEAKIAkJCQkJLz4KIAkJCQk8L0ZpbGVDb25maWd1cmF0aW9u
PgogCQkJCTxGaWxlQ29uZmlndXJhdGlvbgotCQkJCQlOYW1lPSJEZWJ1Z19JbnRlcm5hbHxXaW4z
MiIKKwkJCQkJTmFtZT0iRGVidWdfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgogCQkJCQlFeGNsdWRlZEZy
b21CdWlsZD0idHJ1ZSIKIAkJCQkJPgogCQkJCQk8VG9vbApAQCAtNDM3MzcsNyArNDM3MDksNyBA
QAogCQkJCQkvPgogCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CiAJCQkJPEZpbGVDb25maWd1cmF0
aW9uCi0JCQkJCU5hbWU9IkRlYnVnX0NhaXJvfFdpbjMyIgorCQkJCQlOYW1lPSJSZWxlYXNlX0Nh
aXJvX0NGTGl0ZXxXaW4zMiIKIAkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCiAJCQkJCT4K
IAkJCQkJPFRvb2wKQEAgLTQzNzQ1LDcgKzQzNzE3LDcgQEAKIAkJCQkJLz4KIAkJCQk8L0ZpbGVD
b25maWd1cmF0aW9uPgogCQkJCTxGaWxlQ29uZmlndXJhdGlvbgotCQkJCQlOYW1lPSJSZWxlYXNl
X0NhaXJvfFdpbjMyIgorCQkJCQlOYW1lPSJEZWJ1Z19BbGx8V2luMzIiCiAJCQkJCUV4Y2x1ZGVk
RnJvbUJ1aWxkPSJ0cnVlIgogCQkJCQk+CiAJCQkJCTxUb29sCkBAIC00Mzc1Myw3ICs0MzcyNSw3
IEBACiAJCQkJCS8+CiAJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KIAkJCQk8RmlsZUNvbmZpZ3Vy
YXRpb24KLQkJCQkJTmFtZT0iRGVidWdfQWxsfFdpbjMyIgorCQkJCQlOYW1lPSJSZWxlYXNlX0xU
Q0d8V2luMzIiCiAJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgogCQkJCQk+CiAJCQkJCTxU
b29sCkBAIC00Mzc2Miw3ICs0MzczNCw3IEBACiAJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KIAkJ
CTwvRmlsZT4KIAkJCTxGaWxlCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cRXZlbnRRdWV1ZS5o
IgorCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXEV2ZW50VGFyZ2V0LmgiCiAJCQkJPgogCQkJPC9G
aWxlPgogCQkJPEZpbGUKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZUNvbW1v
bi52c3Byb3BzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZUNv
bW1vbi52c3Byb3BzCShyZXZpc2lvbiA3NTIxMykKKysrIFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZUNvbW1vbi52c3Byb3BzCSh3b3JraW5nIGNvcHkpCkBAIC03LDcgKzcsNyBAQAogCT4K
IAk8VG9vbAogCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgotCQlBZGRpdGlvbmFsSW5jbHVkZURp
cmVjdG9yaWVzPSImcXVvdDskKFByb2plY3REaXIpLi4mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGly
KS4uXGFjY2Vzc2liaWxpdHkmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGFjY2Vzc2liaWxp
dHlcd2luJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxicmlkZ2UmcXVvdDs7JnF1b3Q7JChQ
cm9qZWN0RGlyKS4uXGJyaWRnZVxjJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxicmlkZ2Vc
anNjJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxjc3MmcXVvdDs7JnF1b3Q7JChQcm9qZWN0
RGlyKS4uXGVkaXRpbmcmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGZpbGVhcGkmcXVvdDs7
JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHJlbmRlcmluZyZxdW90OzsmcXVvdDskKFByb2plY3REaXIp
Li5ccmVuZGVyaW5nXHN0eWxlJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxyZW5kZXJpbmdc
c3ZnJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxiaW5kaW5ncyZxdW90OzsmcXVvdDskKFBy
b2plY3REaXIpLi5cYmluZGluZ3NcZ2VuZXJpYyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5c
YmluZGluZ3NcanMmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGJpbmRpbmdzXGpzXHNwZWNp
YWxpemF0aW9uJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxkb20mcXVvdDs7JnF1b3Q7JChQ
cm9qZWN0RGlyKS4uXGRvbVxkZWZhdWx0JnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxoaXN0
b3J5JnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxodG1sJnF1b3Q7OyZxdW90OyQoUHJvamVj
dERpcikuLlxodG1sXGNhbnZhcyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5caHRtbFxwYXJz
ZXImcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGh0bWxcc2hhZG93JnF1b3Q7OyZxdW90OyQo
UHJvamVjdERpcikuLlxpbnNwZWN0b3ImcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGxvYWRl
ciZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cbG9hZGVyXGFwcGNhY2hlJnF1b3Q7OyZxdW90
OyQoUHJvamVjdERpcikuLlxsb2FkZXJcYXJjaGl2ZSZxdW90OzsmcXVvdDskKFByb2plY3REaXIp
Li5cbG9hZGVyXGFyY2hpdmVcY2YmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGxvYWRlclxj
YWNoZSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cbG9hZGVyXGljb24mcXVvdDs7JnF1b3Q7
JChQcm9qZWN0RGlyKS4uXG1hdGhtbCZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cbm90aWZp
Y2F0aW9ucyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGFnZSZxdW90OzsmcXVvdDskKFBy
b2plY3REaXIpLi5ccGFnZVxhbmltYXRpb24mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBh
Z2Vcd2luJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybSZxdW90OzsmcXVvdDsk
KFByb2plY3REaXIpLi5ccGxhdGZvcm1cYW5pbWF0aW9uJnF1b3Q7OyZxdW90OyQoUHJvamVjdERp
cikuLlxwbGF0Zm9ybVxtb2NrJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxz
cWwmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXHdpbiZxdW90OzsmcXVvdDsk
KFByb2plY3REaXIpLi5ccGxhdGZvcm1cbmV0d29yayZxdW90OzsmcXVvdDskKFByb2plY3REaXIp
Li5ccGxhdGZvcm1cbmV0d29ya1x3aW4mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRm
b3JtXGNmJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGljcyZxdW90
OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3NcZmlsdGVycyZxdW90Ozsm
cXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3Ncb3BlbnR5cGUmcXVvdDs7JnF1
b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXHRyYW5zZm9ybXMmcXVvdDs7JnF1
b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXHRleHQmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGly
KS4uXHBsYXRmb3JtXHRleHRcdHJhbnNjb2RlciZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5c
cGxhdGZvcm1cZ3JhcGhpY3Ncd2luJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlx4bWwmcXVv
dDs7JnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9ialxXZWJDb3JlXERlcml2ZWRTb3Vy
Y2VzJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbHVnaW5zJnF1b3Q7OyZxdW90OyQoUHJv
amVjdERpcikuLlxwbHVnaW5zXHdpbiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cc3ZnXGFu
aW1hdGlvbiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cc3ZnXGdyYXBoaWNzJnF1b3Q7OyZx
dW90OyQoUHJvamVjdERpcikuLlxzdmdccHJvcGVydGllcyZxdW90OzsmcXVvdDskKFByb2plY3RE
aXIpLi5cc3ZnXGdyYXBoaWNzXGZpbHRlcnMmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHN2
ZyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cd21sJnF1b3Q7OyZxdW90OyQoUHJvamVjdERp
cikuLlxzdG9yYWdlJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlx3ZWJzb2NrZXRzJnF1b3Q7
OyZxdW90OyQoUHJvamVjdERpcikuLlx3b3JrZXJzJnF1b3Q7OyZxdW90OyQoQ29uZmlndXJhdGlv
bkJ1aWxkRGlyKVxpbmNsdWRlJnF1b3Q7OyZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxp
bmNsdWRlXHByaXZhdGUmcXVvdDs7JnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1
ZGVcSmF2YVNjcmlwdENvcmUmcXVvdDs7JnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGlu
Y2x1ZGVccHJpdmF0ZVxKYXZhU2NyaXB0Q29yZSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5c
Rm9yd2FyZGluZ0hlYWRlcnMmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1
ZGUmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGVccHJpdmF0ZSZxdW90
OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVkZVxwcml2YXRlXEphdmFTY3JpcHRD
b3JlJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlXHB0aHJlYWRzJnF1
b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlXHNxbGl0ZSZxdW90OzsmcXVv
dDskKFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVkZVxKYXZhU2NyaXB0Q29yZSZxdW90OzsmcXVv
dDskKFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVkZVx6bGliJnF1b3Q7IgorCQlBZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzPSImcXVvdDskKFByb2plY3REaXIpLi4mcXVvdDs7JnF1b3Q7JChQ
cm9qZWN0RGlyKS4uXGFjY2Vzc2liaWxpdHkmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGFj
Y2Vzc2liaWxpdHlcd2luJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxicmlkZ2UmcXVvdDs7
JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGJyaWRnZVxjJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpciku
LlxicmlkZ2VcanNjJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxjc3MmcXVvdDs7JnF1b3Q7
JChQcm9qZWN0RGlyKS4uXGVkaXRpbmcmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGZpbGVh
cGkmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHJlbmRlcmluZyZxdW90OzsmcXVvdDskKFBy
b2plY3REaXIpLi5ccmVuZGVyaW5nXHN0eWxlJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxy
ZW5kZXJpbmdcc3ZnJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxiaW5kaW5ncyZxdW90Ozsm
cXVvdDskKFByb2plY3REaXIpLi5cYmluZGluZ3NcZ2VuZXJpYyZxdW90OzsmcXVvdDskKFByb2pl
Y3REaXIpLi5cYmluZGluZ3NcanMmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGJpbmRpbmdz
XGpzXHNwZWNpYWxpemF0aW9uJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxkb20mcXVvdDs7
JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGRvbVxkZWZhdWx0JnF1b3Q7OyZxdW90OyQoUHJvamVjdERp
cikuLlxoaXN0b3J5JnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxodG1sJnF1b3Q7OyZxdW90
OyQoUHJvamVjdERpcikuLlxodG1sXGNhbnZhcyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5c
aHRtbFxwYXJzZXImcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGh0bWxcc2hhZG93JnF1b3Q7
OyZxdW90OyQoUHJvamVjdERpcikuLlxpbnNwZWN0b3ImcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGly
KS4uXGxvYWRlciZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cbG9hZGVyXGFwcGNhY2hlJnF1
b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxsb2FkZXJcYXJjaGl2ZSZxdW90OzsmcXVvdDskKFBy
b2plY3REaXIpLi5cbG9hZGVyXGFyY2hpdmVcY2YmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4u
XGxvYWRlclxjYWNoZSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cbG9hZGVyXGljb24mcXVv
dDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXG1hdGhtbCZxdW90OzsmcXVvdDskKFByb2plY3REaXIp
Li5cbm90aWZpY2F0aW9ucyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGFnZSZxdW90Ozsm
cXVvdDskKFByb2plY3REaXIpLi5ccGFnZVxhbmltYXRpb24mcXVvdDs7JnF1b3Q7JChQcm9qZWN0
RGlyKS4uXHBhZ2Vcd2luJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybSZxdW90
OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cYW5pbWF0aW9uJnF1b3Q7OyZxdW90OyQo
UHJvamVjdERpcikuLlxwbGF0Zm9ybVxtb2NrJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxw
bGF0Zm9ybVxzcWwmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXHdpbiZxdW90
OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cbmV0d29yayZxdW90OzsmcXVvdDskKFBy
b2plY3REaXIpLi5ccGxhdGZvcm1cbmV0d29ya1x3aW4mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGly
KS4uXHBsYXRmb3JtXGNmJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFw
aGljcyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3NcY2EmcXVv
dDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXGZpbHRlcnMmcXVvdDs7
JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXG9wZW50eXBlJnF1b3Q7OyZx
dW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGljc1x0cmFuc2Zvcm1zJnF1b3Q7OyZx
dW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVx0ZXh0JnF1b3Q7OyZxdW90OyQoUHJvamVjdERp
cikuLlxwbGF0Zm9ybVx0ZXh0XHRyYW5zY29kZXImcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4u
XHBsYXRmb3JtXGdyYXBoaWNzXHdpbiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ceG1sJnF1
b3Q7OyZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmpcV2ViQ29yZVxEZXJpdmVkU291
cmNlcyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGx1Z2lucyZxdW90OzsmcXVvdDskKFBy
b2plY3REaXIpLi5ccGx1Z2luc1x3aW4mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHN2Z1xh
bmltYXRpb24mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHN2Z1xncmFwaGljcyZxdW90Ozsm
cXVvdDskKFByb2plY3REaXIpLi5cc3ZnXHByb3BlcnRpZXMmcXVvdDs7JnF1b3Q7JChQcm9qZWN0
RGlyKS4uXHN2Z1xncmFwaGljc1xmaWx0ZXJzJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxz
dmcmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHdtbCZxdW90OzsmcXVvdDskKFByb2plY3RE
aXIpLi5cc3RvcmFnZSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cd2Vic29ja2V0cyZxdW90
OzsmcXVvdDskKFByb2plY3REaXIpLi5cd29ya2VycyZxdW90OzsmcXVvdDskKENvbmZpZ3VyYXRp
b25CdWlsZERpcilcaW5jbHVkZSZxdW90OzsmcXVvdDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilc
aW5jbHVkZVxwcml2YXRlJnF1b3Q7OyZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNs
dWRlXEphdmFTY3JpcHRDb3JlJnF1b3Q7OyZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxp
bmNsdWRlXHByaXZhdGVcSmF2YVNjcmlwdENvcmUmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4u
XEZvcndhcmRpbmdIZWFkZXJzJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNs
dWRlJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlXHByaXZhdGUmcXVv
dDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGVccHJpdmF0ZVxKYXZhU2NyaXB0
Q29yZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVkZVxwdGhyZWFkcyZx
dW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVkZVxzcWxpdGUmcXVvdDs7JnF1
b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGVcSmF2YVNjcmlwdENvcmUmcXVvdDs7JnF1
b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGVcemxpYiZxdW90OyIKIAkJUHJlcHJvY2Vz
c29yRGVmaW5pdGlvbnM9Il9fV0lOMzJfXztESVNBQkxFXzNEX1JFTkRFUklORztXRUJDT1JFX0NP
TlRFWFRfTUVOVVMiCiAJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIyIgogCQlQcmVjb21waWxlZEhl
YWRlclRocm91Z2g9IldlYkNvcmVQcmVmaXguaCIKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS52Y3By
b2ovY29weUZvcndhcmRpbmdIZWFkZXJzLmNtZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkluZGV4OiBXZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaAkocmV2aXNpb24gNzUyMTMpCisr
KyBXZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaAkod29ya2luZyBj
b3B5KQpAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHBhaW50c0lu
dG9DYW52YXNCdWZmZXIoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKICNpZiBVU0UoQUNDRUxF
UkFURURfQ09NUE9TSVRJTkcpCi0gICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxh
eWVyKCkgY29uc3QgeyByZXR1cm4gMDsgfQorLy8gICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiBw
bGF0Zm9ybUxheWVyKCkgY29uc3QgeyByZXR1cm4gMDsgfQogI2VuZGlmCiAKIHByb3RlY3RlZDoK
SW5kZXg6IFdlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcAkocmV2aXNpb24g
NzUyMTMpCisrKyBXZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMzYyLDYgKzEzNjIsMTEgQEAgdm9pZCBBbmltYXRpb25CYXNlOjpnb0lu
dG9FbmRpbmdPckxvb3BpbgogICAKIHZvaWQgQW5pbWF0aW9uQmFzZTo6ZnJlZXplQXRUaW1lKGRv
dWJsZSB0KQogeworICAgIGlmICghbV9zdGFydFRpbWUpIHsKKyAgICAgICAgLy8gSWYgd2UgaGF2
ZW4ndCBzdGFydGVkIHlldCwganVzdCBnZW5lcmF0ZSB0aGUgc3RhcnQgZXZlbnQgbm93CisgICAg
ICAgIG1fY29tcEFuaW0tPmFuaW1hdGlvbkNvbnRyb2xsZXIoKS0+cmVjZWl2ZWRTdGFydFRpbWVS
ZXNwb25zZShjdXJyZW50VGltZSgpKTsKKyAgICB9CisKICAgICBBU1NFUlQobV9zdGFydFRpbWUp
OyAgICAgICAgLy8gaWYgbV9zdGFydFRpbWUgaXMgemVybywgd2UgaGF2ZW4ndCBzdGFydGVkIHll
dCwgc28gd2UnbGwgZ2V0IGEgYmFkIHBhdXNlIHRpbWUuCiAgICAgbV9wYXVzZVRpbWUgPSBtX3N0
YXJ0VGltZSArIHQgLSBtX2FuaW1hdGlvbi0+ZGVsYXkoKTsKIApAQCAtMTM4Nyw2ICsxMzkyLDcg
QEAgZG91YmxlIEFuaW1hdGlvbkJhc2U6OmdldEVsYXBzZWRUaW1lKCkgYwogICAgICAgICByZXR1
cm4gMDsKICAgICBpZiAocG9zdEFjdGl2ZSgpKQogICAgICAgICByZXR1cm4gMTsKKwogICAgIHJl
dHVybiBiZWdpbkFuaW1hdGlvblVwZGF0ZVRpbWUoKSAtIG1fc3RhcnRUaW1lOwogfQogICAgIApJ
bmRleDogV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkNvbnRyb2xsZXIuY3Bw
CShyZXZpc2lvbiA3NTIxMykKKysrIFdlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29u
dHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxNyw2ICszMTcsNyBAQCBkb3VibGUgQW5p
bWF0aW9uQ29udHJvbGxlclByaXZhdGU6OmJlZ2luCiB7CiAgICAgaWYgKG1fYmVnaW5BbmltYXRp
b25VcGRhdGVUaW1lID09IGNCZWdpbkFuaW1hdGlvblVwZGF0ZVRpbWVOb3RTZXQpCiAgICAgICAg
IG1fYmVnaW5BbmltYXRpb25VcGRhdGVUaW1lID0gbV9mcmFtZS0+Y3VycmVudEFuaW1hdGlvblRp
bWUoKTsKKwogICAgIHJldHVybiBtX2JlZ2luQW5pbWF0aW9uVXBkYXRlVGltZTsKIH0KIApJbmRl
eDogV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9LZXlmcmFtZUFuaW1hdGlvbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBQW5pbWF0aW9u
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNB
QW5pbWF0aW9uLmgJKHJldmlzaW9uIDc1MjEzKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9QbGF0Zm9ybUNBQW5pbWF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDEwICs0NCw4
IEBAIHR5cGVkZWYgdm9pZCogQ0FQcm9wZXJ0eUFuaW1hdGlvbjsgLy8gU28KIHR5cGVkZWYgdm9p
ZCogUGxhdGZvcm1BbmltYXRpb25SZWY7CiAjZW5kaWYKICNlbGlmIFBMQVRGT1JNKFdJTikKLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFdLQ0FDRkFuaW1hdGlvbjsKLXR5cGVkZWYgV0tDQUNG
QW5pbWF0aW9uKiBQbGF0Zm9ybUFuaW1hdGlvblJlZjsKLX0KK3R5cGVkZWYgc3RydWN0IF9DQUNG
QW5pbWF0aW9uICpDQUNGQW5pbWF0aW9uUmVmOwordHlwZWRlZiBDQUNGQW5pbWF0aW9uUmVmIFBs
YXRmb3JtQW5pbWF0aW9uUmVmOwogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKSW5kZXg6
IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FBbmltYXRpb25XaW4u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRm
b3JtQ0FBbmltYXRpb25XaW4uY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUFuaW1hdGlvbldpbi5jcHAJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNTQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBVU0UoQUNDRUxFUkFU
RURfQ09NUE9TSVRJTkcpCisKKyNpbmNsdWRlICJQbGF0Zm9ybUNBQW5pbWF0aW9uLmgiCisKKyNp
bmNsdWRlICJGbG9hdENvbnZlcnNpb24uaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgor
I2luY2x1ZGUgIlRpbWluZ0Z1bmN0aW9uLmgiCisjaW5jbHVkZSA8UXVhcnR6Q29yZS9DQUNGQW5p
bWF0aW9uLmg+CisjaW5jbHVkZSA8UXVhcnR6Q29yZS9DQUNGVGltaW5nLmg+CisjaW5jbHVkZSA8
UXVhcnR6Q29yZS9DQUNGVGltaW5nRnVuY3Rpb24uaD4KKyNpbmNsdWRlIDxRdWFydHpDb3JlL0NB
Q0ZWYWx1ZUZ1bmN0aW9uLmg+CisjaW5jbHVkZSA8UXVhcnR6Q29yZS9DQUNGVmVjdG9yLmg+Cisj
aW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwor
CitzdGF0aWMgU3RyaW5nIHRvQ0FDRkZpbGxNb2RlVHlwZShQbGF0Zm9ybUNBQW5pbWF0aW9uOjpG
aWxsTW9kZVR5cGUgdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIFBsYXRm
b3JtQ0FBbmltYXRpb246Ok5vRmlsbE1vZGU6CisgICAgY2FzZSBQbGF0Zm9ybUNBQW5pbWF0aW9u
OjpGb3J3YXJkczogcmV0dXJuIGtDQUNGRmlsbE1vZGVGb3J3YXJkczsKKyAgICBjYXNlIFBsYXRm
b3JtQ0FBbmltYXRpb246OkJhY2t3YXJkczogcmV0dXJuIGtDQUNGRmlsbE1vZGVCYWNrd2FyZHM7
CisgICAgY2FzZSBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpCb3RoOiByZXR1cm4ga0NBQ0ZGaWxsTW9k
ZUJvdGg7CisgICAgfQorICAgIHJldHVybiAiIjsKK30KKworc3RhdGljIFBsYXRmb3JtQ0FBbmlt
YXRpb246OkZpbGxNb2RlVHlwZSBmcm9tQ0FDRkZpbGxNb2RlVHlwZShjb25zdCBTdHJpbmcmIHN0
cmluZykKK3sKKyAgICBpZiAoc3RyaW5nID09IGtDQUNGRmlsbE1vZGVCYWNrd2FyZHMpCisgICAg
ICAgIHJldHVybiBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpCYWNrd2FyZHM7CisKKyAgICBpZiAoc3Ry
aW5nID09IGtDQUNGRmlsbE1vZGVCb3RoKQorICAgICAgICByZXR1cm4gUGxhdGZvcm1DQUFuaW1h
dGlvbjo6Qm90aDsKKworICAgIHJldHVybiBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpGb3J3YXJkczsK
K30KKworc3RhdGljIFN0cmluZyB0b0NBQ0ZWYWx1ZUZ1bmN0aW9uVHlwZShQbGF0Zm9ybUNBQW5p
bWF0aW9uOjpWYWx1ZUZ1bmN0aW9uVHlwZSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkgewor
ICAgIGNhc2UgUGxhdGZvcm1DQUFuaW1hdGlvbjo6Tm9WYWx1ZUZ1bmN0aW9uOiByZXR1cm4gIiI7
CisgICAgY2FzZSBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpSb3RhdGVYOiByZXR1cm4ga0NBQ0ZWYWx1
ZUZ1bmN0aW9uUm90YXRlWDsKKyAgICBjYXNlIFBsYXRmb3JtQ0FBbmltYXRpb246OlJvdGF0ZVk6
IHJldHVybiBrQ0FDRlZhbHVlRnVuY3Rpb25Sb3RhdGVZOworICAgIGNhc2UgUGxhdGZvcm1DQUFu
aW1hdGlvbjo6Um90YXRlWjogcmV0dXJuIGtDQUNGVmFsdWVGdW5jdGlvblJvdGF0ZVo7CisgICAg
Y2FzZSBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpTY2FsZVg6IHJldHVybiBrQ0FDRlZhbHVlRnVuY3Rp
b25TY2FsZVg7CisgICAgY2FzZSBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpTY2FsZVk6IHJldHVybiBr
Q0FDRlZhbHVlRnVuY3Rpb25TY2FsZVk7CisgICAgY2FzZSBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpT
Y2FsZVo6IHJldHVybiBrQ0FDRlZhbHVlRnVuY3Rpb25TY2FsZVo7CisgICAgY2FzZSBQbGF0Zm9y
bUNBQW5pbWF0aW9uOjpTY2FsZTogcmV0dXJuIGtDQUNGVmFsdWVGdW5jdGlvblNjYWxlOworICAg
IGNhc2UgUGxhdGZvcm1DQUFuaW1hdGlvbjo6VHJhbnNsYXRlWDogcmV0dXJuIGtDQUNGVmFsdWVG
dW5jdGlvblRyYW5zbGF0ZVg7CisgICAgY2FzZSBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpUcmFuc2xh
dGVZOiByZXR1cm4ga0NBQ0ZWYWx1ZUZ1bmN0aW9uVHJhbnNsYXRlWTsKKyAgICBjYXNlIFBsYXRm
b3JtQ0FBbmltYXRpb246OlRyYW5zbGF0ZVo6IHJldHVybiBrQ0FDRlZhbHVlRnVuY3Rpb25UcmFu
c2xhdGVaOworICAgIGNhc2UgUGxhdGZvcm1DQUFuaW1hdGlvbjo6VHJhbnNsYXRlOiByZXR1cm4g
a0NBQ0ZWYWx1ZUZ1bmN0aW9uVHJhbnNsYXRlOworICAgIH0KKyAgICByZXR1cm4gIiI7Cit9CisK
K3N0YXRpYyBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpWYWx1ZUZ1bmN0aW9uVHlwZSBmcm9tQ0FDRlZh
bHVlRnVuY3Rpb25UeXBlKGNvbnN0IFN0cmluZyBzdHJpbmcpCit7CisgICAgaWYgKHN0cmluZyA9
PSBrQ0FDRlZhbHVlRnVuY3Rpb25Sb3RhdGVYKQorICAgICAgICByZXR1cm4gUGxhdGZvcm1DQUFu
aW1hdGlvbjo6Um90YXRlWDsKKworICAgIGlmIChzdHJpbmcgPT0ga0NBQ0ZWYWx1ZUZ1bmN0aW9u
Um90YXRlWSkKKyAgICAgICAgcmV0dXJuIFBsYXRmb3JtQ0FBbmltYXRpb246OlJvdGF0ZVk7CisK
KyAgICBpZiAoc3RyaW5nID09IGtDQUNGVmFsdWVGdW5jdGlvblJvdGF0ZVopCisgICAgICAgIHJl
dHVybiBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpSb3RhdGVaOworCisgICAgaWYgKHN0cmluZyA9PSBr
Q0FDRlZhbHVlRnVuY3Rpb25TY2FsZVgpCisgICAgICAgIHJldHVybiBQbGF0Zm9ybUNBQW5pbWF0
aW9uOjpTY2FsZVg7CisKKyAgICBpZiAoc3RyaW5nID09IGtDQUNGVmFsdWVGdW5jdGlvblNjYWxl
WSkKKyAgICAgICAgcmV0dXJuIFBsYXRmb3JtQ0FBbmltYXRpb246OlNjYWxlWTsKKworICAgIGlm
IChzdHJpbmcgPT0ga0NBQ0ZWYWx1ZUZ1bmN0aW9uU2NhbGVaKQorICAgICAgICByZXR1cm4gUGxh
dGZvcm1DQUFuaW1hdGlvbjo6U2NhbGVaOworCisgICAgaWYgKHN0cmluZyA9PSBrQ0FDRlZhbHVl
RnVuY3Rpb25TY2FsZSkKKyAgICAgICAgcmV0dXJuIFBsYXRmb3JtQ0FBbmltYXRpb246OlNjYWxl
OworCisgICAgaWYgKHN0cmluZyA9PSBrQ0FDRlZhbHVlRnVuY3Rpb25UcmFuc2xhdGVYKQorICAg
ICAgICByZXR1cm4gUGxhdGZvcm1DQUFuaW1hdGlvbjo6VHJhbnNsYXRlWDsKKworICAgIGlmIChz
dHJpbmcgPT0ga0NBQ0ZWYWx1ZUZ1bmN0aW9uVHJhbnNsYXRlWSkKKyAgICAgICAgcmV0dXJuIFBs
YXRmb3JtQ0FBbmltYXRpb246OlRyYW5zbGF0ZVk7CisKKyAgICBpZiAoc3RyaW5nID09IGtDQUNG
VmFsdWVGdW5jdGlvblRyYW5zbGF0ZVopCisgICAgICAgIHJldHVybiBQbGF0Zm9ybUNBQW5pbWF0
aW9uOjpUcmFuc2xhdGVaOworCisgICAgaWYgKHN0cmluZyA9PSBrQ0FDRlZhbHVlRnVuY3Rpb25U
cmFuc2xhdGUpCisgICAgICAgIHJldHVybiBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpUcmFuc2xhdGU7
CisKKyAgICByZXR1cm4gUGxhdGZvcm1DQUFuaW1hdGlvbjo6Tm9WYWx1ZUZ1bmN0aW9uOworfQor
CitzdGF0aWMgQ0FDRlRpbWluZ0Z1bmN0aW9uUmVmIHRvQ0FDRlRpbWluZ0Z1bmN0aW9uKGNvbnN0
IFRpbWluZ0Z1bmN0aW9uKiB0aW1pbmdGdW5jdGlvbikKK3sKKyAgICBpZiAoIXRpbWluZ0Z1bmN0
aW9uKQorICAgICAgICByZXR1cm4gQ0FDRlRpbWluZ0Z1bmN0aW9uQ3JlYXRlKDAuMjVmLCAwLjFm
LCAwLjI1ZiwgMC4xZik7CisgICAgICAgICAgICAKKyAgICBpZiAodGltaW5nRnVuY3Rpb24tPmlz
Q3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbigpKSB7CisgICAgICAgIGNvbnN0IEN1YmljQmV6aWVy
VGltaW5nRnVuY3Rpb24qIGN0ZiA9IHN0YXRpY19jYXN0PGNvbnN0IEN1YmljQmV6aWVyVGltaW5n
RnVuY3Rpb24qPih0aW1pbmdGdW5jdGlvbik7CisgICAgICAgIHJldHVybiBDQUNGVGltaW5nRnVu
Y3Rpb25DcmVhdGUoc3RhdGljX2Nhc3Q8ZmxvYXQ+KGN0Zi0+eDEoKSksIHN0YXRpY19jYXN0PGZs
b2F0PihjdGYtPnkxKCkpLCBzdGF0aWNfY2FzdDxmbG9hdD4oY3RmLT54MigpKSwgc3RhdGljX2Nh
c3Q8ZmxvYXQ+KGN0Zi0+eTIoKSkpOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gQ0FDRlRpbWlu
Z0Z1bmN0aW9uR2V0RnVuY3Rpb25XaXRoTmFtZShrQ0FDRlRpbWluZ0Z1bmN0aW9uTGluZWFyKTsK
K30KKworUGFzc1JlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBQbGF0Zm9ybUNBQW5pbWF0aW9u
OjpjcmVhdGUoQW5pbWF0aW9uVHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIGtleVBhdGgpCit7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQbGF0Zm9ybUNBQW5pbWF0aW9uKHR5cGUsIGtleVBhdGgp
KTsKK30KKworUGFzc1JlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBQbGF0Zm9ybUNBQW5pbWF0
aW9uOjpjcmVhdGUoUGxhdGZvcm1BbmltYXRpb25SZWYgYW5pbWF0aW9uKQoreworICAgIHJldHVy
biBhZG9wdFJlZihuZXcgUGxhdGZvcm1DQUFuaW1hdGlvbihhbmltYXRpb24pKTsKK30KKworUGFz
c1JlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpjcmVhdGUo
Y29uc3QgUGxhdGZvcm1DQUFuaW1hdGlvbiogYW5pbWF0aW9uKQoreworICAgIHJldHVybiBhZG9w
dFJlZihuZXcgUGxhdGZvcm1DQUFuaW1hdGlvbihhbmltYXRpb24pKTsKK30KKworc3RhdGljIHZv
aWQgaW5pdGlhbGl6ZShQbGF0Zm9ybUNBQW5pbWF0aW9uKiBhbmltYXRpb24pCit7Cit9CisKK1Bs
YXRmb3JtQ0FBbmltYXRpb246OlBsYXRmb3JtQ0FBbmltYXRpb24oQW5pbWF0aW9uVHlwZSB0eXBl
LCBjb25zdCBTdHJpbmcmIGtleVBhdGgpCisgICAgOiBtX3R5cGUodHlwZSkKK3sKKyAgICBpZiAo
dHlwZSA9PSBCYXNpYykKKyAgICAgICAgbV9hbmltYXRpb24uYWRvcHRDRihDQUNGQW5pbWF0aW9u
Q3JlYXRlKGtDQUNGQmFzaWNBbmltYXRpb24pKTsKKyAgICBlbHNlCisgICAgICAgIG1fYW5pbWF0
aW9uLmFkb3B0Q0YoQ0FDRkFuaW1hdGlvbkNyZWF0ZShrQ0FDRktleWZyYW1lQW5pbWF0aW9uKSk7
CisgICAgCisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBzKEFkb3B0Q0YsIGtleVBhdGguY3Jl
YXRlQ0ZTdHJpbmcoKSk7CisgICAgQ0FDRkFuaW1hdGlvblNldEtleVBhdGgobV9hbmltYXRpb24u
Z2V0KCksIHMuZ2V0KCkpOworCisgICAgaW5pdGlhbGl6ZSh0aGlzKTsKK30KKworUGxhdGZvcm1D
QUFuaW1hdGlvbjo6UGxhdGZvcm1DQUFuaW1hdGlvbihQbGF0Zm9ybUFuaW1hdGlvblJlZiBhbmlt
YXRpb24pCit7CisgICAgaWYgKFN0cmluZyhDQUNGQW5pbWF0aW9uR2V0Q2xhc3MoYW5pbWF0aW9u
KSkgPT0ga0NBQ0ZCYXNpY0FuaW1hdGlvbikKKyAgICAgICAgbV90eXBlID0gQmFzaWM7CisgICAg
ZWxzZSBpZiAoU3RyaW5nKENBQ0ZBbmltYXRpb25HZXRDbGFzcyhhbmltYXRpb24pKSA9PSBrQ0FD
RktleWZyYW1lQW5pbWF0aW9uKQorICAgICAgICBtX3R5cGUgPSBLZXlmcmFtZTsKKyAgICBlbHNl
IHsKKyAgICAgICAgQVNTRVJUKDApOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAg
IG1fYW5pbWF0aW9uID0gYW5pbWF0aW9uOworICAgIGluaXRpYWxpemUodGhpcyk7Cit9CisKK1Bs
YXRmb3JtQ0FBbmltYXRpb246OlBsYXRmb3JtQ0FBbmltYXRpb24oY29uc3QgUGxhdGZvcm1DQUFu
aW1hdGlvbiogYW5pbWF0aW9uKQoreworICAgIG1fYW5pbWF0aW9uLmFkb3B0Q0YoQ0FDRkFuaW1h
dGlvbkNyZWF0ZSgoYW5pbWF0aW9uLT5hbmltYXRpb25UeXBlKCkgPT0gQmFzaWMpID8ga0NBQ0ZC
YXNpY0FuaW1hdGlvbiA6IGtDQUNGS2V5ZnJhbWVBbmltYXRpb24pKTsKKyAgICBSZXRhaW5QdHI8
Q0ZTdHJpbmdSZWY+IHMoQWRvcHRDRiwgYW5pbWF0aW9uLT5rZXlQYXRoKCkuY3JlYXRlQ0ZTdHJp
bmcoKSk7CisgICAgQ0FDRkFuaW1hdGlvblNldEtleVBhdGgobV9hbmltYXRpb24uZ2V0KCksIHMu
Z2V0KCkpOworCisgICAgc2V0QmVnaW5UaW1lKGFuaW1hdGlvbi0+YmVnaW5UaW1lKCkpOworICAg
IHNldER1cmF0aW9uKGFuaW1hdGlvbi0+ZHVyYXRpb24oKSk7CisgICAgc2V0U3BlZWQoYW5pbWF0
aW9uLT5zcGVlZCgpKTsKKyAgICBzZXRUaW1lT2Zmc2V0KGFuaW1hdGlvbi0+dGltZU9mZnNldCgp
KTsKKyAgICBzZXRSZXBlYXRDb3VudChhbmltYXRpb24tPnJlcGVhdENvdW50KCkpOworICAgIHNl
dEF1dG9yZXZlcnNlcyhhbmltYXRpb24tPmF1dG9yZXZlcnNlcygpKTsKKyAgICBzZXRGaWxsTW9k
ZShhbmltYXRpb24tPmZpbGxNb2RlKCkpOworICAgIHNldFJlbW92ZWRPbkNvbXBsZXRpb24oYW5p
bWF0aW9uLT5pc1JlbW92ZWRPbkNvbXBsZXRpb24oKSk7CisgICAgc2V0QWRkaXRpdmUoYW5pbWF0
aW9uLT5pc0FkZGl0aXZlKCkpOworICAgIGNvcHlUaW1pbmdGdW5jdGlvbkZyb20oYW5pbWF0aW9u
KTsKKyAgICBzZXRWYWx1ZUZ1bmN0aW9uKGFuaW1hdGlvbi0+dmFsdWVGdW5jdGlvbigpKTsKKwor
ICAgIC8vIENvcHkgdGhlIHNwZWNpZmljIEJhc2ljIG9yIEtleWZyYW1lIHZhbHVlcworICAgIGlm
IChhbmltYXRpb24tPmFuaW1hdGlvblR5cGUoKSA9PSBLZXlmcmFtZSkgeworICAgICAgICBjb3B5
VmFsdWVzRnJvbShhbmltYXRpb24pOworICAgICAgICBjb3B5S2V5VGltZXNGcm9tKGFuaW1hdGlv
bik7CisgICAgICAgIGNvcHlUaW1pbmdGdW5jdGlvbnNGcm9tKGFuaW1hdGlvbik7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgY29weUZyb21WYWx1ZUZyb20oYW5pbWF0aW9uKTsKKyAgICAgICAgY29w
eVRvVmFsdWVGcm9tKGFuaW1hdGlvbik7CisgICAgfQorfQorCitQbGF0Zm9ybUNBQW5pbWF0aW9u
Ojp+UGxhdGZvcm1DQUFuaW1hdGlvbigpCit7Cit9CisKK2Jvb2wgUGxhdGZvcm1DQUFuaW1hdGlv
bjo6c3VwcG9ydHNWYWx1ZUZ1bmN0aW9uKCkKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworUGxh
dGZvcm1BbmltYXRpb25SZWYgUGxhdGZvcm1DQUFuaW1hdGlvbjo6cGxhdGZvcm1BbmltYXRpb24o
KSBjb25zdAoreworICAgIHJldHVybiBtX2FuaW1hdGlvbi5nZXQoKTsKK30KKworU3RyaW5nIFBs
YXRmb3JtQ0FBbmltYXRpb246OmtleVBhdGgoKSBjb25zdAoreworICAgIHJldHVybiBDQUNGQW5p
bWF0aW9uR2V0S2V5UGF0aChtX2FuaW1hdGlvbi5nZXQoKSk7Cit9CisKK0NGVGltZUludGVydmFs
IFBsYXRmb3JtQ0FBbmltYXRpb246OmJlZ2luVGltZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIENB
Q0ZBbmltYXRpb25HZXRCZWdpblRpbWUobV9hbmltYXRpb24uZ2V0KCkpOworfQorCit2b2lkIFBs
YXRmb3JtQ0FBbmltYXRpb246OnNldEJlZ2luVGltZShDRlRpbWVJbnRlcnZhbCB2YWx1ZSkKK3sK
KyAgICBDQUNGQW5pbWF0aW9uU2V0QmVnaW5UaW1lKG1fYW5pbWF0aW9uLmdldCgpLCB2YWx1ZSk7
Cit9CisKK0NGVGltZUludGVydmFsIFBsYXRmb3JtQ0FBbmltYXRpb246OmR1cmF0aW9uKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gQ0FDRkFuaW1hdGlvbkdldER1cmF0aW9uKG1fYW5pbWF0aW9uLmdl
dCgpKTsKK30KKwordm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpzZXREdXJhdGlvbihDRlRpbWVJ
bnRlcnZhbCB2YWx1ZSkKK3sKKyAgICBDQUNGQW5pbWF0aW9uU2V0RHVyYXRpb24obV9hbmltYXRp
b24uZ2V0KCksIHZhbHVlKTsKK30KKworZmxvYXQgUGxhdGZvcm1DQUFuaW1hdGlvbjo6c3BlZWQo
KSBjb25zdAoreworICAgIHJldHVybiBDQUNGQW5pbWF0aW9uR2V0U3BlZWQobV9hbmltYXRpb24u
Z2V0KCkpOworfQorCit2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb246OnNldFNwZWVkKGZsb2F0IHZh
bHVlKQoreworICAgIENBQ0ZBbmltYXRpb25TZXRTcGVlZChtX2FuaW1hdGlvbi5nZXQoKSwgdmFs
dWUpOworfQorCitDRlRpbWVJbnRlcnZhbCBQbGF0Zm9ybUNBQW5pbWF0aW9uOjp0aW1lT2Zmc2V0
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gQ0FDRkFuaW1hdGlvbkdldFRpbWVPZmZzZXQobV9hbmlt
YXRpb24uZ2V0KCkpOworfQorCit2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb246OnNldFRpbWVPZmZz
ZXQoQ0ZUaW1lSW50ZXJ2YWwgdmFsdWUpCit7CisgICAgQ0FDRkFuaW1hdGlvblNldFRpbWVPZmZz
ZXQobV9hbmltYXRpb24uZ2V0KCksIHZhbHVlKTsKK30KKworZmxvYXQgUGxhdGZvcm1DQUFuaW1h
dGlvbjo6cmVwZWF0Q291bnQoKSBjb25zdAoreworICAgIHJldHVybiBDQUNGQW5pbWF0aW9uR2V0
UmVwZWF0Q291bnQobV9hbmltYXRpb24uZ2V0KCkpOworfQorCit2b2lkIFBsYXRmb3JtQ0FBbmlt
YXRpb246OnNldFJlcGVhdENvdW50KGZsb2F0IHZhbHVlKQoreworICAgIENBQ0ZBbmltYXRpb25T
ZXRSZXBlYXRDb3VudChtX2FuaW1hdGlvbi5nZXQoKSwgdmFsdWUpOworfQorCitib29sIFBsYXRm
b3JtQ0FBbmltYXRpb246OmF1dG9yZXZlcnNlcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIENBQ0ZB
bmltYXRpb25HZXRBdXRvcmV2ZXJzZXMobV9hbmltYXRpb24uZ2V0KCkpOworfQorCit2b2lkIFBs
YXRmb3JtQ0FBbmltYXRpb246OnNldEF1dG9yZXZlcnNlcyhib29sIHZhbHVlKQoreworICAgIENB
Q0ZBbmltYXRpb25TZXRBdXRvcmV2ZXJzZXMobV9hbmltYXRpb24uZ2V0KCksIHZhbHVlKTsKK30K
KworUGxhdGZvcm1DQUFuaW1hdGlvbjo6RmlsbE1vZGVUeXBlIFBsYXRmb3JtQ0FBbmltYXRpb246
OmZpbGxNb2RlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZnJvbUNBQ0ZGaWxsTW9kZVR5cGUoQ0FD
RkFuaW1hdGlvbkdldEZpbGxNb2RlKG1fYW5pbWF0aW9uLmdldCgpKSk7Cit9CisKK3ZvaWQgUGxh
dGZvcm1DQUFuaW1hdGlvbjo6c2V0RmlsbE1vZGUoRmlsbE1vZGVUeXBlIHZhbHVlKQoreworICAg
IFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcyhBZG9wdENGLCB0b0NBQ0ZGaWxsTW9kZVR5cGUodmFs
dWUpLmNyZWF0ZUNGU3RyaW5nKCkpOworICAgIENBQ0ZBbmltYXRpb25TZXRGaWxsTW9kZShtX2Fu
aW1hdGlvbi5nZXQoKSwgcy5nZXQoKSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbjo6
c2V0VGltaW5nRnVuY3Rpb24oY29uc3QgVGltaW5nRnVuY3Rpb24qIHZhbHVlKQoreworICAgIENB
Q0ZBbmltYXRpb25TZXRUaW1pbmdGdW5jdGlvbihtX2FuaW1hdGlvbi5nZXQoKSwgdG9DQUNGVGlt
aW5nRnVuY3Rpb24odmFsdWUpKTsKK30KKwordm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpjb3B5
VGltaW5nRnVuY3Rpb25Gcm9tKGNvbnN0IFBsYXRmb3JtQ0FBbmltYXRpb24qIHZhbHVlKQorewor
ICAgIENBQ0ZBbmltYXRpb25TZXRUaW1pbmdGdW5jdGlvbihtX2FuaW1hdGlvbi5nZXQoKSwgQ0FD
RkFuaW1hdGlvbkdldFRpbWluZ0Z1bmN0aW9uKHZhbHVlLT5tX2FuaW1hdGlvbi5nZXQoKSkpOwor
fQorCitib29sIFBsYXRmb3JtQ0FBbmltYXRpb246OmlzUmVtb3ZlZE9uQ29tcGxldGlvbigpIGNv
bnN0Cit7CisgICAgcmV0dXJuIENBQ0ZBbmltYXRpb25Jc1JlbW92ZWRPbkNvbXBsZXRpb24obV9h
bmltYXRpb24uZ2V0KCkpOworfQorCit2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb246OnNldFJlbW92
ZWRPbkNvbXBsZXRpb24oYm9vbCB2YWx1ZSkKK3sKKyAgICBDQUNGQW5pbWF0aW9uU2V0UmVtb3Zl
ZE9uQ29tcGxldGlvbihtX2FuaW1hdGlvbi5nZXQoKSwgdmFsdWUpOworfQorCitib29sIFBsYXRm
b3JtQ0FBbmltYXRpb246OmlzQWRkaXRpdmUoKSBjb25zdAoreworICAgIHJldHVybiBDQUNGQW5p
bWF0aW9uSXNBZGRpdGl2ZShtX2FuaW1hdGlvbi5nZXQoKSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1D
QUFuaW1hdGlvbjo6c2V0QWRkaXRpdmUoYm9vbCB2YWx1ZSkKK3sKKyAgICBDQUNGQW5pbWF0aW9u
U2V0QWRkaXRpdmUobV9hbmltYXRpb24uZ2V0KCksIHZhbHVlKTsKK30KKworUGxhdGZvcm1DQUFu
aW1hdGlvbjo6VmFsdWVGdW5jdGlvblR5cGUgUGxhdGZvcm1DQUFuaW1hdGlvbjo6dmFsdWVGdW5j
dGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZyb21DQUNGVmFsdWVGdW5jdGlvblR5cGUoQ0FD
RlZhbHVlRnVuY3Rpb25HZXROYW1lKENBQ0ZBbmltYXRpb25HZXRWYWx1ZUZ1bmN0aW9uKG1fYW5p
bWF0aW9uLmdldCgpKSkpOworfQorCit2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb246OnNldFZhbHVl
RnVuY3Rpb24oVmFsdWVGdW5jdGlvblR5cGUgdmFsdWUpCit7CisgICAgUmV0YWluUHRyPENGU3Ry
aW5nUmVmPiBzKEFkb3B0Q0YsIHRvQ0FDRlZhbHVlRnVuY3Rpb25UeXBlKHZhbHVlKS5jcmVhdGVD
RlN0cmluZygpKTsKKyAgICBDQUNGQW5pbWF0aW9uU2V0VmFsdWVGdW5jdGlvbihtX2FuaW1hdGlv
bi5nZXQoKSwgQ0FDRlZhbHVlRnVuY3Rpb25HZXRGdW5jdGlvbldpdGhOYW1lKHMuZ2V0KCkpKTsK
K30KKwordm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpzZXRGcm9tVmFsdWUoZmxvYXQgdmFsdWUp
Cit7CisgICAgaWYgKGFuaW1hdGlvblR5cGUoKSAhPSBCYXNpYykKKyAgICAgICAgcmV0dXJuOwor
CisgICAgUmV0YWluUHRyPENGTnVtYmVyUmVmPiB2KEFkb3B0Q0YsIENGTnVtYmVyQ3JlYXRlKDAs
IGtDRk51bWJlckZsb2F0VHlwZSwgJnZhbHVlKSk7CisgICAgQ0FDRkFuaW1hdGlvblNldEZyb21W
YWx1ZShtX2FuaW1hdGlvbi5nZXQoKSwgdi5nZXQoKSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUFu
aW1hdGlvbjo6c2V0RnJvbVZhbHVlKGNvbnN0IFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4
JiB2YWx1ZSkKK3sKKyAgICBpZiAoYW5pbWF0aW9uVHlwZSgpICE9IEJhc2ljKQorICAgICAgICBy
ZXR1cm47CisgICAgCisgICAgUmV0YWluUHRyPENBQ0ZWZWN0b3JSZWY+IHYoQWRvcHRDRiwgQ0FD
RlZlY3RvckNyZWF0ZVRyYW5zZm9ybSh2YWx1ZSkpOworICAgIENBQ0ZBbmltYXRpb25TZXRGcm9t
VmFsdWUobV9hbmltYXRpb24uZ2V0KCksIHYuZ2V0KCkpOworfQorCit2b2lkIFBsYXRmb3JtQ0FB
bmltYXRpb246OnNldEZyb21WYWx1ZShjb25zdCBGbG9hdFBvaW50M0QmIHZhbHVlKQoreworICAg
IGlmIChhbmltYXRpb25UeXBlKCkgIT0gQmFzaWMpCisgICAgICAgIHJldHVybjsKKworICAgIGZs
b2F0IGFbM10gPSB7IHZhbHVlLngoKSwgdmFsdWUueSgpLCB2YWx1ZS56KCkgfTsKKyAgICBSZXRh
aW5QdHI8Q0FDRlZlY3RvclJlZj4gdihBZG9wdENGLCBDQUNGVmVjdG9yQ3JlYXRlKDMsIGEpKTsK
KyAgICBDQUNGQW5pbWF0aW9uU2V0RnJvbVZhbHVlKG1fYW5pbWF0aW9uLmdldCgpLCB2LmdldCgp
KTsKK30KKwordm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpzZXRGcm9tVmFsdWUoY29uc3QgV2Vi
Q29yZTo6Q29sb3ImIHZhbHVlKQoreworICAgIGlmIChhbmltYXRpb25UeXBlKCkgIT0gQmFzaWMp
CisgICAgICAgIHJldHVybjsKKworICAgIGZsb2F0IGFbNF0gPSB7IHZhbHVlLnJlZCgpLCB2YWx1
ZS5ncmVlbigpLCB2YWx1ZS5ibHVlKCksIHZhbHVlLmFscGhhKCkgfTsKKyAgICBSZXRhaW5QdHI8
Q0FDRlZlY3RvclJlZj4gdihBZG9wdENGLCBDQUNGVmVjdG9yQ3JlYXRlKDQsIGEpKTsKKyAgICBD
QUNGQW5pbWF0aW9uU2V0RnJvbVZhbHVlKG1fYW5pbWF0aW9uLmdldCgpLCB2LmdldCgpKTsKK30K
Kwordm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpjb3B5RnJvbVZhbHVlRnJvbShjb25zdCBQbGF0
Zm9ybUNBQW5pbWF0aW9uKiB2YWx1ZSkKK3sKKyAgICBpZiAoYW5pbWF0aW9uVHlwZSgpICE9IEJh
c2ljIHx8IHZhbHVlLT5hbmltYXRpb25UeXBlKCkgIT0gQmFzaWMpCisgICAgICAgIHJldHVybjsK
KyAgICAKKyAgICBDQUNGQW5pbWF0aW9uU2V0RnJvbVZhbHVlKG1fYW5pbWF0aW9uLmdldCgpLCBD
QUNGQW5pbWF0aW9uR2V0RnJvbVZhbHVlKHZhbHVlLT5wbGF0Zm9ybUFuaW1hdGlvbigpKSk7Cit9
CisKK3ZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbjo6c2V0VG9WYWx1ZShmbG9hdCB2YWx1ZSkKK3sK
KyAgICBpZiAoYW5pbWF0aW9uVHlwZSgpICE9IEJhc2ljKQorICAgICAgICByZXR1cm47CisKKyAg
ICBSZXRhaW5QdHI8Q0ZOdW1iZXJSZWY+IHYoQWRvcHRDRiwgQ0ZOdW1iZXJDcmVhdGUoMCwga0NG
TnVtYmVyRmxvYXRUeXBlLCAmdmFsdWUpKTsKKyAgICBDQUNGQW5pbWF0aW9uU2V0VG9WYWx1ZSht
X2FuaW1hdGlvbi5nZXQoKSwgdi5nZXQoKSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUFuaW1hdGlv
bjo6c2V0VG9WYWx1ZShjb25zdCBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdmFsdWUp
Cit7CisgICAgaWYgKGFuaW1hdGlvblR5cGUoKSAhPSBCYXNpYykKKyAgICAgICAgcmV0dXJuOwor
CisgICAgUmV0YWluUHRyPENBQ0ZWZWN0b3JSZWY+IHYoQWRvcHRDRiwgQ0FDRlZlY3RvckNyZWF0
ZVRyYW5zZm9ybSh2YWx1ZSkpOworICAgIENBQ0ZBbmltYXRpb25TZXRUb1ZhbHVlKG1fYW5pbWF0
aW9uLmdldCgpLCB2LmdldCgpKTsKK30KKwordm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpzZXRU
b1ZhbHVlKGNvbnN0IEZsb2F0UG9pbnQzRCYgdmFsdWUpCit7CisgICAgaWYgKGFuaW1hdGlvblR5
cGUoKSAhPSBCYXNpYykKKyAgICAgICAgcmV0dXJuOworCisgICAgZmxvYXQgYVszXSA9IHsgdmFs
dWUueCgpLCB2YWx1ZS55KCksIHZhbHVlLnooKSB9OworICAgIFJldGFpblB0cjxDQUNGVmVjdG9y
UmVmPiB2KEFkb3B0Q0YsIENBQ0ZWZWN0b3JDcmVhdGUoMywgYSkpOworICAgIENBQ0ZBbmltYXRp
b25TZXRUb1ZhbHVlKG1fYW5pbWF0aW9uLmdldCgpLCB2LmdldCgpKTsKK30KKwordm9pZCBQbGF0
Zm9ybUNBQW5pbWF0aW9uOjpzZXRUb1ZhbHVlKGNvbnN0IFdlYkNvcmU6OkNvbG9yJiB2YWx1ZSkK
K3sKKyAgICBpZiAoYW5pbWF0aW9uVHlwZSgpICE9IEJhc2ljKQorICAgICAgICByZXR1cm47CisK
KyAgICBmbG9hdCBhWzRdID0geyB2YWx1ZS5yZWQoKSwgdmFsdWUuZ3JlZW4oKSwgdmFsdWUuYmx1
ZSgpLCB2YWx1ZS5hbHBoYSgpIH07CisgICAgUmV0YWluUHRyPENBQ0ZWZWN0b3JSZWY+IHYoQWRv
cHRDRiwgQ0FDRlZlY3RvckNyZWF0ZSg0LCBhKSk7CisgICAgQ0FDRkFuaW1hdGlvblNldFRvVmFs
dWUobV9hbmltYXRpb24uZ2V0KCksIHYuZ2V0KCkpOworfQorCit2b2lkIFBsYXRmb3JtQ0FBbmlt
YXRpb246OmNvcHlUb1ZhbHVlRnJvbShjb25zdCBQbGF0Zm9ybUNBQW5pbWF0aW9uKiB2YWx1ZSkK
K3sKKyAgICBpZiAoYW5pbWF0aW9uVHlwZSgpICE9IEJhc2ljIHx8IHZhbHVlLT5hbmltYXRpb25U
eXBlKCkgIT0gQmFzaWMpCisgICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgQ0FDRkFuaW1h
dGlvblNldFRvVmFsdWUobV9hbmltYXRpb24uZ2V0KCksIENBQ0ZBbmltYXRpb25HZXRUb1ZhbHVl
KHZhbHVlLT5wbGF0Zm9ybUFuaW1hdGlvbigpKSk7Cit9CisKKworLy8gS2V5ZnJhbWUtYW5pbWF0
aW9uIHByb3BlcnRpZXMuCit2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb246OnNldFZhbHVlcyhjb25z
dCBWZWN0b3I8ZmxvYXQ+JiB2YWx1ZSkKK3sKKyAgICBpZiAoYW5pbWF0aW9uVHlwZSgpICE9IEtl
eWZyYW1lKQorICAgICAgICByZXR1cm47CisKKyAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlQXJyYXlS
ZWY+IGFycmF5KEFkb3B0Q0YsIENGQXJyYXlDcmVhdGVNdXRhYmxlKDAsIHZhbHVlLnNpemUoKSwg
JmtDRlR5cGVBcnJheUNhbGxCYWNrcykpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmFs
dWUuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgUmV0YWluUHRyPENGTnVtYmVyUmVmPiB2KEFkb3B0
Q0YsIENGTnVtYmVyQ3JlYXRlKDAsIGtDRk51bWJlckZsb2F0VHlwZSwgJnZhbHVlW2ldKSk7Cisg
ICAgICAgIENGQXJyYXlBcHBlbmRWYWx1ZShhcnJheS5nZXQoKSwgdi5nZXQoKSk7CisgICAgfQor
CisgICAgQ0FDRkFuaW1hdGlvblNldFZhbHVlcyhtX2FuaW1hdGlvbi5nZXQoKSwgYXJyYXkuZ2V0
KCkpOworfQorCit2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb246OnNldFZhbHVlcyhjb25zdCBWZWN0
b3I8V2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg+JiB2YWx1ZSkKK3sKKyAgICBpZiAoYW5p
bWF0aW9uVHlwZSgpICE9IEtleWZyYW1lKQorICAgICAgICByZXR1cm47CisKKyAgICBSZXRhaW5Q
dHI8Q0ZNdXRhYmxlQXJyYXlSZWY+IGFycmF5KEFkb3B0Q0YsIENGQXJyYXlDcmVhdGVNdXRhYmxl
KDAsIHZhbHVlLnNpemUoKSwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcykpOworICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgdmFsdWUuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgUmV0YWluUHRyPENB
Q0ZWZWN0b3JSZWY+IHYoQWRvcHRDRiwgQ0FDRlZlY3RvckNyZWF0ZVRyYW5zZm9ybSh2YWx1ZVtp
XSkpOworICAgICAgICBDRkFycmF5QXBwZW5kVmFsdWUoYXJyYXkuZ2V0KCksIHYuZ2V0KCkpOwor
ICAgIH0KKworICAgIENBQ0ZBbmltYXRpb25TZXRWYWx1ZXMobV9hbmltYXRpb24uZ2V0KCksIGFy
cmF5LmdldCgpKTsKK30KKwordm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpzZXRWYWx1ZXMoY29u
c3QgVmVjdG9yPEZsb2F0UG9pbnQzRD4mIHZhbHVlKQoreworICAgIGlmIChhbmltYXRpb25UeXBl
KCkgIT0gS2V5ZnJhbWUpCisgICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgUmV0YWluUHRy
PENGTXV0YWJsZUFycmF5UmVmPiBhcnJheShBZG9wdENGLCBDRkFycmF5Q3JlYXRlTXV0YWJsZSgw
LCB2YWx1ZS5zaXplKCksICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpKTsKKyAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHZhbHVlLnNpemUoKTsgKytpKSB7CisgICAgICAgIGZsb2F0IGFbM10gPSB7
IHZhbHVlW2ldLngoKSwgdmFsdWVbaV0ueSgpLCB2YWx1ZVtpXS56KCkgfTsKKyAgICAgICAgUmV0
YWluUHRyPENBQ0ZWZWN0b3JSZWY+IHYoQWRvcHRDRiwgQ0FDRlZlY3RvckNyZWF0ZSgzLCBhKSk7
CisgICAgICAgIENGQXJyYXlBcHBlbmRWYWx1ZShhcnJheS5nZXQoKSwgdi5nZXQoKSk7CisgICAg
fQorCisgICAgQ0FDRkFuaW1hdGlvblNldFZhbHVlcyhtX2FuaW1hdGlvbi5nZXQoKSwgYXJyYXku
Z2V0KCkpOworfQorCit2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb246OnNldFZhbHVlcyhjb25zdCBW
ZWN0b3I8V2ViQ29yZTo6Q29sb3I+JiB2YWx1ZSkKK3sKKyAgICBpZiAoYW5pbWF0aW9uVHlwZSgp
ICE9IEtleWZyYW1lKQorICAgICAgICByZXR1cm47CisgICAgICAgIAorICAgIFJldGFpblB0cjxD
Rk11dGFibGVBcnJheVJlZj4gYXJyYXkoQWRvcHRDRiwgQ0ZBcnJheUNyZWF0ZU11dGFibGUoMCwg
dmFsdWUuc2l6ZSgpLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKSk7CisgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCB2YWx1ZS5zaXplKCk7ICsraSkgeworICAgICAgICBmbG9hdCBhWzRdID0geyB2
YWx1ZVtpXS5yZWQoKSwgdmFsdWVbaV0uZ3JlZW4oKSwgdmFsdWVbaV0uYmx1ZSgpLCB2YWx1ZVtp
XS5hbHBoYSgpIH07CisgICAgICAgIFJldGFpblB0cjxDQUNGVmVjdG9yUmVmPiB2KEFkb3B0Q0Ys
IENBQ0ZWZWN0b3JDcmVhdGUoNCwgYSkpOworICAgICAgICBDRkFycmF5QXBwZW5kVmFsdWUoYXJy
YXkuZ2V0KCksIHYuZ2V0KCkpOworICAgIH0KKworICAgIENBQ0ZBbmltYXRpb25TZXRWYWx1ZXMo
bV9hbmltYXRpb24uZ2V0KCksIGFycmF5LmdldCgpKTsKK30KKwordm9pZCBQbGF0Zm9ybUNBQW5p
bWF0aW9uOjpjb3B5VmFsdWVzRnJvbShjb25zdCBQbGF0Zm9ybUNBQW5pbWF0aW9uKiB2YWx1ZSkK
K3sKKyAgICBpZiAoYW5pbWF0aW9uVHlwZSgpICE9IEtleWZyYW1lIHx8IHZhbHVlLT5hbmltYXRp
b25UeXBlKCkgIT0gS2V5ZnJhbWUpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBDQUNGQW5p
bWF0aW9uU2V0VmFsdWVzKG1fYW5pbWF0aW9uLmdldCgpLCBDQUNGQW5pbWF0aW9uR2V0VmFsdWVz
KHZhbHVlLT5wbGF0Zm9ybUFuaW1hdGlvbigpKSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUFuaW1h
dGlvbjo6c2V0S2V5VGltZXMoY29uc3QgVmVjdG9yPGZsb2F0PiYgdmFsdWUpCit7CisgICAgaWYg
KGFuaW1hdGlvblR5cGUoKSAhPSBLZXlmcmFtZSkKKyAgICAgICAgcmV0dXJuOworICAgICAgICAK
KyAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlQXJyYXlSZWY+IGFycmF5KEFkb3B0Q0YsIENGQXJyYXlD
cmVhdGVNdXRhYmxlKDAsIHZhbHVlLnNpemUoKSwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcykpOwor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmFsdWUuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAg
UmV0YWluUHRyPENGTnVtYmVyUmVmPiB2KEFkb3B0Q0YsIENGTnVtYmVyQ3JlYXRlKDAsIGtDRk51
bWJlckZsb2F0VHlwZSwgJnZhbHVlW2ldKSk7CisgICAgICAgIENGQXJyYXlBcHBlbmRWYWx1ZShh
cnJheS5nZXQoKSwgdi5nZXQoKSk7CisgICAgfQorCisgICAgQ0FDRkFuaW1hdGlvblNldEtleVRp
bWVzKG1fYW5pbWF0aW9uLmdldCgpLCBhcnJheS5nZXQoKSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1D
QUFuaW1hdGlvbjo6Y29weUtleVRpbWVzRnJvbShjb25zdCBQbGF0Zm9ybUNBQW5pbWF0aW9uKiB2
YWx1ZSkKK3sKKyAgICBpZiAoYW5pbWF0aW9uVHlwZSgpICE9IEtleWZyYW1lKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBDQUNGQW5pbWF0aW9uU2V0S2V5VGltZXMobV9hbmltYXRpb24uZ2V0KCks
IENBQ0ZBbmltYXRpb25HZXRLZXlUaW1lcyh2YWx1ZS0+cGxhdGZvcm1BbmltYXRpb24oKSkpOwor
fQorCit2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb246OnNldFRpbWluZ0Z1bmN0aW9ucyhjb25zdCBW
ZWN0b3I8Y29uc3QgVGltaW5nRnVuY3Rpb24qPiYgdmFsdWUpCit7CisgICAgaWYgKGFuaW1hdGlv
blR5cGUoKSAhPSBLZXlmcmFtZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUmV0YWluUHRyPENG
TXV0YWJsZUFycmF5UmVmPiBhcnJheShBZG9wdENGLCBDRkFycmF5Q3JlYXRlTXV0YWJsZSgwLCB2
YWx1ZS5zaXplKCksICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpKTsKKyAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHZhbHVlLnNpemUoKTsgKytpKSB7CisgICAgICAgIFJldGFpblB0cjxDRk51bWJl
clJlZj4gdihBZG9wdENGLCBDRk51bWJlckNyZWF0ZSgwLCBrQ0ZOdW1iZXJGbG9hdFR5cGUsICZ2
YWx1ZVtpXSkpOworICAgICAgICBDRkFycmF5QXBwZW5kVmFsdWUoYXJyYXkuZ2V0KCksIHRvQ0FD
RlRpbWluZ0Z1bmN0aW9uKHZhbHVlW2ldKSk7CisgICAgfQorCisgICAgQ0FDRkFuaW1hdGlvblNl
dFRpbWluZ0Z1bmN0aW9ucyhtX2FuaW1hdGlvbi5nZXQoKSwgYXJyYXkuZ2V0KCkpOworfQorCit2
b2lkIFBsYXRmb3JtQ0FBbmltYXRpb246OmNvcHlUaW1pbmdGdW5jdGlvbnNGcm9tKGNvbnN0IFBs
YXRmb3JtQ0FBbmltYXRpb24qIHZhbHVlKQoreworICAgIENBQ0ZBbmltYXRpb25TZXRUaW1pbmdG
dW5jdGlvbnMobV9hbmltYXRpb24uZ2V0KCksIENBQ0ZBbmltYXRpb25HZXRUaW1pbmdGdW5jdGlv
bnModmFsdWUtPnBsYXRmb3JtQW5pbWF0aW9uKCkpKTsKK30KKworI2VuZGlmIC8vIFVTRShBQ0NF
TEVSQVRFRF9DT01QT1NJVElORykKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
d2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcAkocmV2aXNpb24gMCkKKysr
IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzEzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNp
ZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisKKyNpbmNsdWRlICJQbGF0Zm9ybUNBTGF5
ZXIuaCIKKworI2luY2x1ZGUgIkZvbnQuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIK
KyNpbmNsdWRlICJQbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbC5oIgorI2luY2x1ZGUgIldLQ0FD
RkxheWVyUmVuZGVyZXIuaCIKKyNpbmNsdWRlIDxRdWFydHpDb3JlL0NBQ0ZBbmltYXRpb24uaD4K
KyNpbmNsdWRlIDxRdWFydHpDb3JlL0NBQ0ZDb250ZXh0Lmg+CisjaW5jbHVkZSA8UXVhcnR6Q29y
ZS9DQUNGTGF5ZXIuaD4KKyNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9DU3RyaW5nLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitib29sIFBs
YXRmb3JtQ0FMYXllcjo6aXNWYWx1ZUZ1bmN0aW9uU3VwcG9ydGVkKCkKK3sKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKwordm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OnNldE93bmVyKFBsYXRmb3JtQ0FMYXll
ckNsaWVudCogb3duZXIpCit7CisgICAgbV9vd25lciA9IG93bmVyOworfQorCitzdGF0aWMgQ0ZT
dHJpbmdSZWYgdG9DQUNGTGF5ZXJUeXBlKFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlIHR5cGUp
Cit7CisgICAgcmV0dXJuICh0eXBlID09IFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlVHJhbnNm
b3JtTGF5ZXIpID8ga0NBQ0ZUcmFuc2Zvcm1MYXllciA6IGtDQUNGTGF5ZXI7Cit9CisKK3N0YXRp
YyBDRlN0cmluZ1JlZiB0b0NBQ0ZGaWx0ZXJUeXBlKFBsYXRmb3JtQ0FMYXllcjo6RmlsdGVyVHlw
ZSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgUGxhdGZvcm1DQUxheWVy
OjpMaW5lYXI6IHJldHVybiBrQ0FDRkZpbHRlckxpbmVhcjsKKyAgICBjYXNlIFBsYXRmb3JtQ0FM
YXllcjo6TmVhcmVzdDogcmV0dXJuIGtDQUNGRmlsdGVyTmVhcmVzdDsKKyAgICBjYXNlIFBsYXRm
b3JtQ0FMYXllcjo6VHJpbGluZWFyOiByZXR1cm4ga0NBQ0ZGaWx0ZXJUcmlsaW5lYXI7CisgICAg
ZGVmYXVsdDogcmV0dXJuIDA7CisgICAgfQorfQorCitzdGF0aWMgV0tDQUNGTGF5ZXJSZW5kZXJl
ciogcmVuZGVyZXJGb3JMYXllcihjb25zdCBQbGF0Zm9ybUNBTGF5ZXIqIGxheWVyKQoreworICAg
IC8vIFdlIG5lZWQgdGhlIFdLQ0FDRkxheWVyUmVuZGVyZXIgYXNzb2NpYXRlZCB3aXRoIHRoaXMg
bGF5ZXIsIHdoaWNoIGlzIHN0b3JlZCBpbiB0aGUgVXNlckRhdGEgb2YgdGhlIENBQ0ZDb250ZXh0
CisgICAgQ0FDRkNvbnRleHRSZWYgY29udGV4dCA9IENBQ0ZMYXllckdldENvbnRleHQobGF5ZXIt
PnBsYXRmb3JtTGF5ZXIoKSk7CisgICAgaWYgKCFjb250ZXh0KQorICAgICAgICByZXR1cm4gMDsK
KworICAgIFdLQ0FDRkxheWVyUmVuZGVyZXIqIHJlbmRlcmVyID0gc3RhdGljX2Nhc3Q8V0tDQUNG
TGF5ZXJSZW5kZXJlcio+KENBQ0ZDb250ZXh0R2V0VXNlckRhdGEoY29udGV4dCkpOworICAgIEFT
U0VSVChyZW5kZXJlcik7CisgICAgcmV0dXJuIHJlbmRlcmVyOworfQorCitzdGF0aWMgUGxhdGZv
cm1DQUxheWVyV2luSW50ZXJuYWwqIGludGVybihjb25zdCBQbGF0Zm9ybUNBTGF5ZXIqIGxheWVy
KQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxQbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbCo+
KENBQ0ZMYXllckdldFVzZXJEYXRhKGxheWVyLT5wbGF0Zm9ybUxheWVyKCkpKTsKK30KKworc3Rh
dGljIFBsYXRmb3JtQ0FMYXllcldpbkludGVybmFsKiBpbnRlcm4odm9pZCogbGF5ZXIpCit7Cisg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PFBsYXRmb3JtQ0FMYXllcldpbkludGVybmFsKj4oQ0FDRkxh
eWVyR2V0VXNlckRhdGEoc3RhdGljX2Nhc3Q8Q0FDRkxheWVyUmVmPihsYXllcikpKTsKK30KKwor
UGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IFBsYXRmb3JtQ0FMYXllcjo6Y3JlYXRlKExheWVy
VHlwZSBsYXllclR5cGUsIFBsYXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIpCit7CisgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBQbGF0Zm9ybUNBTGF5ZXIobGF5ZXJUeXBlLCAwLCBvd25lcikpOwor
fQorCitQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gUGxhdGZvcm1DQUxheWVyOjpjcmVhdGUo
dm9pZCogcGxhdGZvcm1MYXllciwgUGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd25lcikKK3sKKyAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFBsYXRmb3JtQ0FMYXllcihMYXllclR5cGVDdXN0b20sIHN0
YXRpY19jYXN0PFBsYXRmb3JtTGF5ZXIqPihwbGF0Zm9ybUxheWVyKSwgb3duZXIpKTsKK30KKwor
c3RhdGljIHZvaWQgZGlzcGxheUNhbGxiYWNrKENBQ0ZMYXllclJlZiBjYUxheWVyLCBDR0NvbnRl
eHRSZWYgY29udGV4dCkKK3sKKyAgICBBU1NFUlRfQVJHKGNhTGF5ZXIsIENBQ0ZMYXllckdldFVz
ZXJEYXRhKGNhTGF5ZXIpKTsKKyAgICBpbnRlcm4oY2FMYXllciktPmRpc3BsYXlDYWxsYmFjayhj
YUxheWVyLCBjb250ZXh0KTsKK30KKworc3RhdGljIHZvaWQgbGF5b3V0U3VibGF5ZXJzUHJvYyhD
QUNGTGF5ZXJSZWYgY2FMYXllcikgCit7CisgICAgUGxhdGZvcm1DQUxheWVyKiBsYXllciA9IFBs
YXRmb3JtQ0FMYXllcjo6cGxhdGZvcm1DQUxheWVyKGNhTGF5ZXIpOworICAgIGlmIChsYXllciAm
JiBsYXllci0+b3duZXIoKSkKKyAgICAgICAgbGF5ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXll
ckxheW91dFN1YmxheWVyc09mTGF5ZXIobGF5ZXIpOworfQorCitQbGF0Zm9ybUNBTGF5ZXI6OlBs
YXRmb3JtQ0FMYXllcihMYXllclR5cGUgbGF5ZXJUeXBlLCBQbGF0Zm9ybUxheWVyKiBsYXllciwg
UGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd25lcikKKyAgICA6IG1fb3duZXIob3duZXIpCit7Cisg
ICAgaWYgKGxheWVyKSB7CisgICAgICAgIG1fbGF5ZXJUeXBlID0gTGF5ZXJUeXBlQ3VzdG9tOwor
ICAgICAgICBtX2xheWVyID0gbGF5ZXI7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9sYXllclR5
cGUgPSBsYXllclR5cGU7CisgICAgICAgIG1fbGF5ZXIuYWRvcHRDRihDQUNGTGF5ZXJDcmVhdGUo
dG9DQUNGTGF5ZXJUeXBlKGxheWVyVHlwZSkpKTsKKworICAgICAgICAvLyBDcmVhdGUgdGhlIFBs
YXRmb3JtQ0FMYXllcldpbkludGVybmFsIG9iamVjdCBhbmQgcG9pbnQgdG8gaXQgaW4gdGhlIHVz
ZXJkYXRhLgorICAgICAgICBQbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbCogaW50ZXJuID0gbmV3
IFBsYXRmb3JtQ0FMYXllcldpbkludGVybmFsKHRoaXMpOworICAgICAgICBDQUNGTGF5ZXJTZXRV
c2VyRGF0YShtX2xheWVyLmdldCgpLCBpbnRlcm4pOworCisgICAgICAgIC8vIFNldCB0aGUgZGlz
cGxheSBjYWxsYmFjaworICAgICAgICBDQUNGTGF5ZXJTZXREaXNwbGF5Q2FsbGJhY2sobV9sYXll
ci5nZXQoKSwgZGlzcGxheUNhbGxiYWNrKTsKKyAgICAgICAgQ0FDRkxheWVyU2V0TGF5b3V0Q2Fs
bGJhY2sobV9sYXllci5nZXQoKSwgbGF5b3V0U3VibGF5ZXJzUHJvYyk7ICAgIAorICAgIH0KK30K
KworUGxhdGZvcm1DQUxheWVyOjp+UGxhdGZvcm1DQUxheWVyKCkKK3sKKyAgICAvLyBUb3NzIGFs
bCB0aGUga2lkcworICAgIHJlbW92ZUFsbFN1YmxheWVycygpOworCisgICAgLy8gR2V0IHJpZCBv
ZiB0aGUgdXNlciBkYXRhCisgICAgUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWwqIGxheWVySW50
ZXJuID0gaW50ZXJuKHRoaXMpOworICAgIENBQ0ZMYXllclNldFVzZXJEYXRhKG1fbGF5ZXIuZ2V0
KCksIDApOworCisgICAgZGVsZXRlIGxheWVySW50ZXJuOworfQorCitQbGF0Zm9ybUNBTGF5ZXIq
IFBsYXRmb3JtQ0FMYXllcjo6cGxhdGZvcm1DQUxheWVyKHZvaWQqIHBsYXRmb3JtTGF5ZXIpCit7
CisgICAgaWYgKCFwbGF0Zm9ybUxheWVyKQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICBQ
bGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbCogbGF5ZXJJbnRlcm4gPSBpbnRlcm4ocGxhdGZvcm1M
YXllcik7CisgICAgcmV0dXJuIGxheWVySW50ZXJuID8gbGF5ZXJJbnRlcm4tPm93bmVyKCkgOiAw
OworfQorCitQbGF0Zm9ybUxheWVyKiBQbGF0Zm9ybUNBTGF5ZXI6OnBsYXRmb3JtTGF5ZXIoKSBj
b25zdAoreworICAgIHJldHVybiBtX2xheWVyLmdldCgpOworfQorCitQbGF0Zm9ybUNBTGF5ZXIq
IFBsYXRmb3JtQ0FMYXllcjo6cm9vdExheWVyKCkgY29uc3QKK3sKKyAgICBXS0NBQ0ZMYXllclJl
bmRlcmVyKiByZW5kZXJlciA9IHJlbmRlcmVyRm9yTGF5ZXIodGhpcyk7CisgICAgcmV0dXJuIHJl
bmRlcmVyID8gcmVuZGVyZXItPnJvb3RMYXllcigpIDogMDsKK30KKwordm9pZCBQbGF0Zm9ybUNB
TGF5ZXI6OnNldE5lZWRzRGlzcGxheShjb25zdCBGbG9hdFJlY3QqIGRpcnR5UmVjdCkKK3sKKyAg
ICBpbnRlcm4odGhpcyktPnNldE5lZWRzRGlzcGxheShkaXJ0eVJlY3QpOworfQorICAgIAordm9p
ZCBQbGF0Zm9ybUNBTGF5ZXI6OnNldE5lZWRzQ29tbWl0KCkKK3sKKyAgICBXS0NBQ0ZMYXllclJl
bmRlcmVyKiByZW5kZXJlciA9IHJlbmRlcmVyRm9yTGF5ZXIodGhpcyk7CisgICAgaWYgKHJlbmRl
cmVyKQorICAgICAgICByZW5kZXJlci0+bGF5ZXJUcmVlRGlkQ2hhbmdlKCk7Cit9CisKK3ZvaWQg
UGxhdGZvcm1DQUxheWVyOjpzZXRDb250ZW50c0NoYW5nZWQoKQoreworICAgIC8vIEZJWE1FOiBU
aGVyZSBpcyBubyBlcXVpdmFsZW50IG9mIHNldENvbnRlbnRzQ2hhbmdlZCBpbiBDQUNGLiBGb3Ig
bm93IEkgd2lsbAorICAgIC8vIHNldCBjb250ZW50cyB0byAwIGFuZCB0aGVuIGJhY2sgdG8gaXRz
IG9yaWdpbmFsIHZhbHVlIHRvIHNlZSBpZiB0aGF0CisgICAgLy8ga2lja3MgQ0FDRiBpbnRvIHJl
ZGlzcGxheWluZy4KKyAgICBSZXRhaW5QdHI8Q0ZUeXBlUmVmPiBjb250ZW50cyA9IENBQ0ZMYXll
ckdldENvbnRlbnRzKG1fbGF5ZXIuZ2V0KCkpOworICAgIENBQ0ZMYXllclNldENvbnRlbnRzKG1f
bGF5ZXIuZ2V0KCksIDApOworICAgIENBQ0ZMYXllclNldENvbnRlbnRzKG1fbGF5ZXIuZ2V0KCks
IGNvbnRlbnRzLmdldCgpKTsKKyAgICBzZXROZWVkc0NvbW1pdCgpOworfQorCit2b2lkIFBsYXRm
b3JtQ0FMYXllcjo6c2V0TmVlZHNMYXlvdXQoKQoreworICAgIGlmICghbV9vd25lciB8fCAhbV9v
d25lci0+cGxhdGZvcm1DQUxheWVyUmVzcG9uZHNUb0xheW91dENoYW5nZXMoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgQ0FDRkxheWVyU2V0TmVlZHNMYXlvdXQobV9sYXllci5nZXQoKSk7Cisg
ICAgc2V0TmVlZHNDb21taXQoKTsKK30KKworUGxhdGZvcm1DQUxheWVyKiBQbGF0Zm9ybUNBTGF5
ZXI6OnN1cGVybGF5ZXIoKSBjb25zdAoreworICAgIHJldHVybiBwbGF0Zm9ybUNBTGF5ZXIoQ0FD
RkxheWVyR2V0U3VwZXJsYXllcihtX2xheWVyLmdldCgpKSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1D
QUxheWVyOjpyZW1vdmVGcm9tU3VwZXJsYXllcigpCit7CisgICAgQ0FDRkxheWVyUmVtb3ZlRnJv
bVN1cGVybGF5ZXIobV9sYXllci5nZXQoKSk7CisgICAgc2V0TmVlZHNDb21taXQoKTsKK30KKwor
dm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OnNldFN1YmxheWVycyhjb25zdCBQbGF0Zm9ybUNBTGF5ZXJM
aXN0JiBsaXN0KQoreworICAgIGludGVybih0aGlzKS0+c2V0U3VibGF5ZXJzKGxpc3QpOworfQor
Cit2b2lkIFBsYXRmb3JtQ0FMYXllcjo6cmVtb3ZlQWxsU3VibGF5ZXJzKCkKK3sKKyAgICBpbnRl
cm4odGhpcyktPnJlbW92ZUFsbFN1YmxheWVycygpOworfQorCit2b2lkIFBsYXRmb3JtQ0FMYXll
cjo6YXBwZW5kU3VibGF5ZXIoUGxhdGZvcm1DQUxheWVyKiBsYXllcikKK3sKKyAgICAvLyBUaGlz
IG11c3QgYmUgaW4gdGVybXMgb2YgaW5zZXJ0U3VibGF5ZXIgaW5zdGVhZCBvZiBhIGRpcmVjdCBj
YWxsIHNvIFBsYXRmb3JtQ0FMYXllckludGVybmFsIGNhbiBvdmVycmlkZS4KKyAgICBpbnNlcnRT
dWJsYXllcihsYXllciwgc3VibGF5ZXJDb3VudCgpKTsKK30KKwordm9pZCBQbGF0Zm9ybUNBTGF5
ZXI6Omluc2VydFN1YmxheWVyKFBsYXRmb3JtQ0FMYXllciogbGF5ZXIsIHNpemVfdCBpbmRleCkK
K3sKKyAgICBpbnRlcm4odGhpcyktPmluc2VydFN1YmxheWVyKGxheWVyLCBpbmRleCk7Cit9CisK
K3ZvaWQgUGxhdGZvcm1DQUxheWVyOjpyZXBsYWNlU3VibGF5ZXIoUGxhdGZvcm1DQUxheWVyKiBy
ZWZlcmVuY2UsIFBsYXRmb3JtQ0FMYXllciogbmV3TGF5ZXIpCit7CisgICAgLy8gVGhpcyBtdXN0
IG5vdCB1c2UgZGlyZWN0IGNhbGxzIHRvIGFsbG93IFBsYXRmb3JtQ0FMYXllckludGVybmFsIHRv
IG92ZXJyaWRlLgorICAgIEFTU0VSVF9BUkcocmVmZXJlbmNlLCByZWZlcmVuY2UpOworICAgIEFT
U0VSVF9BUkcocmVmZXJlbmNlLCByZWZlcmVuY2UtPnN1cGVybGF5ZXIoKSA9PSB0aGlzKTsKKwor
ICAgIGlmIChyZWZlcmVuY2UgPT0gbmV3TGF5ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGlu
dCByZWZlcmVuY2VJbmRleCA9IGludGVybih0aGlzKS0+aW5kZXhPZlN1YmxheWVyKHJlZmVyZW5j
ZSk7CisgICAgQVNTRVJUKHJlZmVyZW5jZUluZGV4ICE9IC0xKTsKKyAgICBpZiAocmVmZXJlbmNl
SW5kZXggPT0gLTEpCisgICAgICAgIHJldHVybjsKKworICAgIHJlZmVyZW5jZS0+cmVtb3ZlRnJv
bVN1cGVybGF5ZXIoKTsKKworICAgIGlmIChuZXdMYXllcikgeworICAgICAgICBuZXdMYXllci0+
cmVtb3ZlRnJvbVN1cGVybGF5ZXIoKTsKKyAgICAgICAgaW5zZXJ0U3VibGF5ZXIobmV3TGF5ZXIs
IHJlZmVyZW5jZUluZGV4KTsKKyAgICB9Cit9CisKK3NpemVfdCBQbGF0Zm9ybUNBTGF5ZXI6OnN1
YmxheWVyQ291bnQoKSBjb25zdAoreworICAgIHJldHVybiBpbnRlcm4odGhpcyktPnN1YmxheWVy
Q291bnQoKTsKK30KKwordm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OmFkb3B0U3VibGF5ZXJzKFBsYXRm
b3JtQ0FMYXllciogc291cmNlKQoreworICAgIC8vIE1ha2UgYSBsaXN0IG9mIHRoZSBzdWJsYXll
cnMgZnJvbSBzb3VyY2UKKyAgICBQbGF0Zm9ybUNBTGF5ZXJMaXN0IHN1YmxheWVyczsKKyAgICBz
aXplX3QgbiA9IHNvdXJjZS0+c3VibGF5ZXJDb3VudCgpOworICAgIENGQXJyYXlSZWYgc291cmNl
U3VibGF5ZXJzID0gQ0FDRkxheWVyR2V0U3VibGF5ZXJzKHNvdXJjZS0+cGxhdGZvcm1MYXllcigp
KTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbjsgKytpKSB7CisgICAgICAgIENBQ0ZM
YXllclJlZiBsYXllciA9IHN0YXRpY19jYXN0PENBQ0ZMYXllclJlZj4oY29uc3RfY2FzdDx2b2lk
Kj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChzb3VyY2VTdWJsYXllcnMsIGkpKSk7CisgICAgICAg
IHN1YmxheWVycy5hcHBlbmQocGxhdGZvcm1DQUxheWVyKGxheWVyKSk7CisgICAgfQorCisgICAg
Ly8gVXNlIHNldFN1YmxheWVycygpIGJlY2F1c2UgaXQgcHJvcGVybHkgbnVsbHMgb3V0IHRoZSBz
dXBlcmxheWVyIHBvaW50ZXJzLgorICAgIHNldFN1YmxheWVycyhzdWJsYXllcnMpOworfQorCit2
b2lkIFBsYXRmb3JtQ0FMYXllcjo6YWRkQW5pbWF0aW9uRm9yS2V5KGNvbnN0IFN0cmluZyYga2V5
LCBQbGF0Zm9ybUNBQW5pbWF0aW9uKiBhbmltYXRpb24pCit7CisgICAgLy8gQWRkIGl0IHRvIHRo
ZSBhbmltYXRpb24gbGlzdAorICAgIG1fYW5pbWF0aW9ucy5hZGQoa2V5LCBhbmltYXRpb24pOwor
CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBzKEFkb3B0Q0YsIGtleS5jcmVhdGVDRlN0cmlu
ZygpKTsKKyAgICBDQUNGTGF5ZXJBZGRBbmltYXRpb24obV9sYXllci5nZXQoKSwgcy5nZXQoKSwg
YW5pbWF0aW9uLT5wbGF0Zm9ybUFuaW1hdGlvbigpKTsKKyAgICBzZXROZWVkc0NvbW1pdCgpOwor
CisgICAgLy8gVGVsbCB0aGUgcmVuZGVyZXIgYWJvdXQgaXQgc28gd2UgY2FuIGZpcmUgdGhlIHN0
YXJ0IGFuaW1hdGlvbiBldmVudAorICAgIFdLQ0FDRkxheWVyUmVuZGVyZXIqIHJlbmRlcmVyID0g
cmVuZGVyZXJGb3JMYXllcih0aGlzKTsKKyAgICBpZiAocmVuZGVyZXIpCisgICAgICAgIHJlbmRl
cmVyLT5hZGRQZW5kaW5nQW5pbWF0ZWRMYXllcih0aGlzKTsKK30KKwordm9pZCBQbGF0Zm9ybUNB
TGF5ZXI6OnJlbW92ZUFuaW1hdGlvbkZvcktleShjb25zdCBTdHJpbmcmIGtleSkKK3sKKyAgICAv
LyBSZW1vdmUgaXQgZnJvbSB0aGUgYW5pbWF0aW9uIGxpc3QKKyAgICBtX2FuaW1hdGlvbnMucmVt
b3ZlKGtleSk7CisKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHMoQWRvcHRDRiwga2V5LmNy
ZWF0ZUNGU3RyaW5nKCkpOworICAgIENBQ0ZMYXllclJlbW92ZUFuaW1hdGlvbihtX2xheWVyLmdl
dCgpLCBzLmdldCgpKTsKKworICAgIC8vIFdlIGRvbid0ICJyZW1vdmUiIGEgbGF5ZXIgZnJvbSBX
S0NBQ0ZMYXllclJlbmRlcmVyIHdoZW4gaXQgbG9zZXMgYW4gYW5pbWF0aW9uLgorICAgIC8vIFRo
ZXJlIG1heSBiZSBvdGhlciBhY3RpdmUgYW5pbWF0aW9ucyBvbiB0aGUgbGF5ZXIgYW5kIGlmIGFu
IGFuaW1hdGlvbgorICAgIC8vIGNhbGxiYWNrIGlzIGZpcmVkIG9uIGEgbGF5ZXIgd2l0aG91dCBh
bnkgYW5pbWF0aW9ucyBubyBoYXJtIGlzIGRvbmUuCisKKyAgICBzZXROZWVkc0NvbW1pdCgpOwor
fQorCitQYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IFBsYXRmb3JtQ0FMYXllcjo6YW5p
bWF0aW9uRm9yS2V5KGNvbnN0IFN0cmluZyYga2V5KQoreworICAgIEhhc2hNYXA8U3RyaW5nLCBS
ZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gPjo6aXRlcmF0b3IgaXQgPSBtX2FuaW1hdGlvbnMu
ZmluZChrZXkpOworICAgIGlmIChpdCA9PSBtX2FuaW1hdGlvbnMuZW5kKCkpCisgICAgICAgIHJl
dHVybiAwOworCisgICAgcmV0dXJuIGl0LT5zZWNvbmQ7Cit9CisKK1BsYXRmb3JtQ0FMYXllciog
UGxhdGZvcm1DQUxheWVyOjptYXNrKCkgY29uc3QKK3sKKyAgICByZXR1cm4gcGxhdGZvcm1DQUxh
eWVyKENBQ0ZMYXllckdldE1hc2sobV9sYXllci5nZXQoKSkpOworfQorCit2b2lkIFBsYXRmb3Jt
Q0FMYXllcjo6c2V0TWFzayhQbGF0Zm9ybUNBTGF5ZXIqIGxheWVyKQoreworICAgIENBQ0ZMYXll
clNldE1hc2sobV9sYXllci5nZXQoKSwgbGF5ZXIgPyBsYXllci0+cGxhdGZvcm1MYXllcigpIDog
MCk7CisgICAgc2V0TmVlZHNDb21taXQoKTsKK30KKworYm9vbCBQbGF0Zm9ybUNBTGF5ZXI6Omlz
T3BhcXVlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gQ0FDRkxheWVySXNPcGFxdWUobV9sYXllci5n
ZXQoKSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyOjpzZXRPcGFxdWUoYm9vbCB2YWx1ZSkK
K3sKKyAgICBDQUNGTGF5ZXJTZXRPcGFxdWUobV9sYXllci5nZXQoKSwgdmFsdWUpOworICAgIHNl
dE5lZWRzQ29tbWl0KCk7Cit9CisKK0Zsb2F0UmVjdCBQbGF0Zm9ybUNBTGF5ZXI6OmJvdW5kcygp
IGNvbnN0Cit7CisgICAgcmV0dXJuIENBQ0ZMYXllckdldEJvdW5kcyhtX2xheWVyLmdldCgpKTsK
K30KKwordm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OnNldEJvdW5kcyhjb25zdCBGbG9hdFJlY3QmIHZh
bHVlKQoreworICAgIGludGVybih0aGlzKS0+c2V0Qm91bmRzKHZhbHVlKTsKKyAgICBzZXROZWVk
c0xheW91dCgpOworfQorCitGbG9hdFBvaW50M0QgUGxhdGZvcm1DQUxheWVyOjpwb3NpdGlvbigp
IGNvbnN0Cit7CisgICAgQ0dQb2ludCBwb2ludCA9IENBQ0ZMYXllckdldFBvc2l0aW9uKG1fbGF5
ZXIuZ2V0KCkpOworICAgIHJldHVybiBGbG9hdFBvaW50M0QocG9pbnQueCwgcG9pbnQueSwgQ0FD
RkxheWVyR2V0WlBvc2l0aW9uKG1fbGF5ZXIuZ2V0KCkpKTsKK30KKwordm9pZCBQbGF0Zm9ybUNB
TGF5ZXI6OnNldFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQzRCYgdmFsdWUpCit7CisgICAgQ0FD
RkxheWVyU2V0UG9zaXRpb24obV9sYXllci5nZXQoKSwgQ0dQb2ludE1ha2UodmFsdWUueCgpLCB2
YWx1ZS55KCkpKTsKKyAgICBDQUNGTGF5ZXJTZXRaUG9zaXRpb24obV9sYXllci5nZXQoKSwgdmFs
dWUueigpKTsKKyAgICBzZXROZWVkc0NvbW1pdCgpOworfQorCitGbG9hdFBvaW50M0QgUGxhdGZv
cm1DQUxheWVyOjphbmNob3JQb2ludCgpIGNvbnN0Cit7CisgICAgQ0dQb2ludCBwb2ludCA9IENB
Q0ZMYXllckdldEFuY2hvclBvaW50KG1fbGF5ZXIuZ2V0KCkpOworICAgIGZsb2F0IHogPSBDQUNG
TGF5ZXJHZXRBbmNob3JQb2ludFoobV9sYXllci5nZXQoKSk7CisgICAgcmV0dXJuIEZsb2F0UG9p
bnQzRChwb2ludC54LCBwb2ludC55LCB6KTsKK30KKwordm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OnNl
dEFuY2hvclBvaW50KGNvbnN0IEZsb2F0UG9pbnQzRCYgdmFsdWUpCit7CisgICAgQ0FDRkxheWVy
U2V0QW5jaG9yUG9pbnQobV9sYXllci5nZXQoKSwgQ0dQb2ludE1ha2UodmFsdWUueCgpLCB2YWx1
ZS55KCkpKTsKKyAgICBDQUNGTGF5ZXJTZXRBbmNob3JQb2ludFoobV9sYXllci5nZXQoKSwgdmFs
dWUueigpKTsKKyAgICBzZXROZWVkc0NvbW1pdCgpOworfQorCitUcmFuc2Zvcm1hdGlvbk1hdHJp
eCBQbGF0Zm9ybUNBTGF5ZXI6OnRyYW5zZm9ybSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIENBQ0ZM
YXllckdldFRyYW5zZm9ybShtX2xheWVyLmdldCgpKTsKK30KKwordm9pZCBQbGF0Zm9ybUNBTGF5
ZXI6OnNldFRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdmFsdWUpCit7Cisg
ICAgQ0FDRkxheWVyU2V0VHJhbnNmb3JtKG1fbGF5ZXIuZ2V0KCksIHZhbHVlKTsKKyAgICBzZXRO
ZWVkc0NvbW1pdCgpOworfQorCitUcmFuc2Zvcm1hdGlvbk1hdHJpeCBQbGF0Zm9ybUNBTGF5ZXI6
OnN1YmxheWVyVHJhbnNmb3JtKCkgY29uc3QKK3sKKyAgICByZXR1cm4gQ0FDRkxheWVyR2V0U3Vi
bGF5ZXJUcmFuc2Zvcm0obV9sYXllci5nZXQoKSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVy
OjpzZXRTdWJsYXllclRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdmFsdWUp
Cit7CisgICAgQ0FDRkxheWVyU2V0U3VibGF5ZXJUcmFuc2Zvcm0obV9sYXllci5nZXQoKSwgdmFs
dWUpOworICAgIHNldE5lZWRzQ29tbWl0KCk7Cit9CisKK1RyYW5zZm9ybWF0aW9uTWF0cml4IFBs
YXRmb3JtQ0FMYXllcjo6Y29udGVudHNUcmFuc2Zvcm0oKSBjb25zdAoreworICAgIC8vIENvbnRl
bnRzVHJhbnNmb3JtIGlzIG5vdCB1c2VkCisgICAgcmV0dXJuIFRyYW5zZm9ybWF0aW9uTWF0cml4
KCk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyOjpzZXRDb250ZW50c1RyYW5zZm9ybShjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpCit7CisgICAgLy8gQ29udGVudHNUcmFuc2Zvcm0gaXMg
bm90IHVzZWQKK30KKworYm9vbCBQbGF0Zm9ybUNBTGF5ZXI6OmlzSGlkZGVuKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gQ0FDRkxheWVySXNIaWRkZW4obV9sYXllci5nZXQoKSk7Cit9CisKK3ZvaWQg
UGxhdGZvcm1DQUxheWVyOjpzZXRIaWRkZW4oYm9vbCB2YWx1ZSkKK3sKKyAgICBDQUNGTGF5ZXJT
ZXRIaWRkZW4obV9sYXllci5nZXQoKSwgdmFsdWUpOworICAgIHNldE5lZWRzQ29tbWl0KCk7Cit9
CisKK2Jvb2wgUGxhdGZvcm1DQUxheWVyOjppc0dlb21ldHJ5RmxpcHBlZCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIENBQ0ZMYXllcklzR2VvbWV0cnlGbGlwcGVkKG1fbGF5ZXIuZ2V0KCkpOworfQor
Cit2b2lkIFBsYXRmb3JtQ0FMYXllcjo6c2V0R2VvbWV0cnlGbGlwcGVkKGJvb2wgdmFsdWUpCit7
CisgICAgQ0FDRkxheWVyU2V0R2VvbWV0cnlGbGlwcGVkKG1fbGF5ZXIuZ2V0KCksIHZhbHVlKTsK
KyAgICBzZXROZWVkc0NvbW1pdCgpOworfQorCitib29sIFBsYXRmb3JtQ0FMYXllcjo6aXNEb3Vi
bGVTaWRlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIENBQ0ZMYXllcklzRG91YmxlU2lkZWQobV9s
YXllci5nZXQoKSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyOjpzZXREb3VibGVTaWRlZChi
b29sIHZhbHVlKQoreworICAgIENBQ0ZMYXllclNldERvdWJsZVNpZGVkKG1fbGF5ZXIuZ2V0KCks
IHZhbHVlKTsKKyAgICBzZXROZWVkc0NvbW1pdCgpOworfQorCitib29sIFBsYXRmb3JtQ0FMYXll
cjo6bWFza3NUb0JvdW5kcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIENBQ0ZMYXllckdldE1hc2tz
VG9Cb3VuZHMobV9sYXllci5nZXQoKSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyOjpzZXRN
YXNrc1RvQm91bmRzKGJvb2wgdmFsdWUpCit7CisgICAgQ0FDRkxheWVyU2V0TWFza3NUb0JvdW5k
cyhtX2xheWVyLmdldCgpLCB2YWx1ZSk7CisgICAgc2V0TmVlZHNDb21taXQoKTsKK30KKworYm9v
bCBQbGF0Zm9ybUNBTGF5ZXI6OmFjY2VsZXJhdGVzRHJhd2luZygpIGNvbnN0Cit7CisgICAgcmV0
dXJuIGZhbHNlOworfQorCit2b2lkIFBsYXRmb3JtQ0FMYXllcjo6c2V0QWNjZWxlcmF0ZXNEcmF3
aW5nKGJvb2wpCit7Cit9CisKK0NGVHlwZVJlZiBQbGF0Zm9ybUNBTGF5ZXI6OmNvbnRlbnRzKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gY29uc3RfY2FzdDx2b2lkKj4oQ0FDRkxheWVyR2V0Q29udGVu
dHMobV9sYXllci5nZXQoKSkpOworfQorCit2b2lkIFBsYXRmb3JtQ0FMYXllcjo6c2V0Q29udGVu
dHMoQ0ZUeXBlUmVmIHZhbHVlKQoreworICAgIENBQ0ZMYXllclNldENvbnRlbnRzKG1fbGF5ZXIu
Z2V0KCksIHZhbHVlKTsKKyAgICBzZXROZWVkc0NvbW1pdCgpOworfQorCitGbG9hdFJlY3QgUGxh
dGZvcm1DQUxheWVyOjpjb250ZW50c1JlY3QoKSBjb25zdAoreworICAgIHJldHVybiBDQUNGTGF5
ZXJHZXRDb250ZW50c1JlY3QobV9sYXllci5nZXQoKSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxh
eWVyOjpzZXRDb250ZW50c1JlY3QoY29uc3QgRmxvYXRSZWN0JiB2YWx1ZSkKK3sKKyAgICBDQUNG
TGF5ZXJTZXRDb250ZW50c1JlY3QobV9sYXllci5nZXQoKSwgdmFsdWUpOworICAgIHNldE5lZWRz
Q29tbWl0KCk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyOjpzZXRNaW5pZmljYXRpb25GaWx0
ZXIoRmlsdGVyVHlwZSB2YWx1ZSkKK3sKKyAgICBDQUNGTGF5ZXJTZXRNaW5pZmljYXRpb25GaWx0
ZXIobV9sYXllci5nZXQoKSwgdG9DQUNGRmlsdGVyVHlwZSh2YWx1ZSkpOworfQorCit2b2lkIFBs
YXRmb3JtQ0FMYXllcjo6c2V0TWFnbmlmaWNhdGlvbkZpbHRlcihGaWx0ZXJUeXBlIHZhbHVlKQor
eworICAgIENBQ0ZMYXllclNldE1hZ25pZmljYXRpb25GaWx0ZXIobV9sYXllci5nZXQoKSwgdG9D
QUNGRmlsdGVyVHlwZSh2YWx1ZSkpOworICAgIHNldE5lZWRzQ29tbWl0KCk7Cit9CisKK0NvbG9y
IFBsYXRmb3JtQ0FMYXllcjo6YmFja2dyb3VuZENvbG9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
Q0FDRkxheWVyR2V0QmFja2dyb3VuZENvbG9yKG1fbGF5ZXIuZ2V0KCkpOworfQorCit2b2lkIFBs
YXRmb3JtQ0FMYXllcjo6c2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IENvbG9yJiB2YWx1ZSkKK3sK
KyAgICBDR0Zsb2F0IGNvbXBvbmVudHNbNF07CisgICAgdmFsdWUuZ2V0UkdCQShjb21wb25lbnRz
WzBdLCBjb21wb25lbnRzWzFdLCBjb21wb25lbnRzWzJdLCBjb21wb25lbnRzWzNdKTsKKworICAg
IFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+IGNvbG9yU3BhY2UoQWRvcHRDRiwgQ0dDb2xvclNw
YWNlQ3JlYXRlRGV2aWNlUkdCKCkpOworICAgIFJldGFpblB0cjxDR0NvbG9yUmVmPiBjb2xvcihB
ZG9wdENGLCBDR0NvbG9yQ3JlYXRlKGNvbG9yU3BhY2UuZ2V0KCksIGNvbXBvbmVudHMpKTsKKwor
ICAgIENBQ0ZMYXllclNldEJhY2tncm91bmRDb2xvcihtX2xheWVyLmdldCgpLCBjb2xvci5nZXQo
KSk7CisgICAgc2V0TmVlZHNDb21taXQoKTsKK30KKworZmxvYXQgUGxhdGZvcm1DQUxheWVyOjpi
b3JkZXJXaWR0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIENBQ0ZMYXllckdldEJvcmRlcldpZHRo
KG1fbGF5ZXIuZ2V0KCkpOworfQorCit2b2lkIFBsYXRmb3JtQ0FMYXllcjo6c2V0Qm9yZGVyV2lk
dGgoZmxvYXQgdmFsdWUpCit7CisgICAgQ0FDRkxheWVyU2V0Qm9yZGVyV2lkdGgobV9sYXllci5n
ZXQoKSwgdmFsdWUpOworICAgIHNldE5lZWRzQ29tbWl0KCk7Cit9CisKK0NvbG9yIFBsYXRmb3Jt
Q0FMYXllcjo6Ym9yZGVyQ29sb3IoKSBjb25zdAoreworICAgIHJldHVybiBDQUNGTGF5ZXJHZXRC
b3JkZXJDb2xvcihtX2xheWVyLmdldCgpKTsKK30KKwordm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OnNl
dEJvcmRlckNvbG9yKGNvbnN0IENvbG9yJiB2YWx1ZSkKK3sKKyAgICBDR0Zsb2F0IGNvbXBvbmVu
dHNbNF07CisgICAgdmFsdWUuZ2V0UkdCQShjb21wb25lbnRzWzBdLCBjb21wb25lbnRzWzFdLCBj
b21wb25lbnRzWzJdLCBjb21wb25lbnRzWzNdKTsKKworICAgIFJldGFpblB0cjxDR0NvbG9yU3Bh
Y2VSZWY+IGNvbG9yU3BhY2UoQWRvcHRDRiwgQ0dDb2xvclNwYWNlQ3JlYXRlRGV2aWNlUkdCKCkp
OworICAgIFJldGFpblB0cjxDR0NvbG9yUmVmPiBjb2xvcihBZG9wdENGLCBDR0NvbG9yQ3JlYXRl
KGNvbG9yU3BhY2UuZ2V0KCksIGNvbXBvbmVudHMpKTsKKworICAgIENBQ0ZMYXllclNldEJvcmRl
ckNvbG9yKG1fbGF5ZXIuZ2V0KCksIGNvbG9yLmdldCgpKTsKKyAgICBzZXROZWVkc0NvbW1pdCgp
OworfQorCitmbG9hdCBQbGF0Zm9ybUNBTGF5ZXI6Om9wYWNpdHkoKSBjb25zdAoreworICAgIHJl
dHVybiBDQUNGTGF5ZXJHZXRPcGFjaXR5KG1fbGF5ZXIuZ2V0KCkpOworfQorCit2b2lkIFBsYXRm
b3JtQ0FMYXllcjo6c2V0T3BhY2l0eShmbG9hdCB2YWx1ZSkKK3sKKyAgICBDQUNGTGF5ZXJTZXRP
cGFjaXR5KG1fbGF5ZXIuZ2V0KCksIHZhbHVlKTsKKyAgICBzZXROZWVkc0NvbW1pdCgpOworfQor
CitTdHJpbmcgUGxhdGZvcm1DQUxheWVyOjpuYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gQ0FD
RkxheWVyR2V0TmFtZShtX2xheWVyLmdldCgpKTsKK30KKwordm9pZCBQbGF0Zm9ybUNBTGF5ZXI6
OnNldE5hbWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IHMoQWRvcHRDRiwgdmFsdWUuY3JlYXRlQ0ZTdHJpbmcoKSk7CisgICAgQ0FDRkxheWVyU2V0
TmFtZShtX2xheWVyLmdldCgpLCBzLmdldCgpKTsKKyAgICBzZXROZWVkc0NvbW1pdCgpOworfQor
CitGbG9hdFJlY3QgUGxhdGZvcm1DQUxheWVyOjpmcmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IENBQ0ZMYXllckdldEZyYW1lKG1fbGF5ZXIuZ2V0KCkpOworfQorCit2b2lkIFBsYXRmb3JtQ0FM
YXllcjo6c2V0RnJhbWUoY29uc3QgRmxvYXRSZWN0JiB2YWx1ZSkKK3sKKyAgICBpbnRlcm4odGhp
cyktPnNldEZyYW1lKHZhbHVlKTsKKyAgICBzZXROZWVkc0xheW91dCgpOworfQorCitmbG9hdCBQ
bGF0Zm9ybUNBTGF5ZXI6OnNwZWVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gQ0FDRkxheWVyR2V0
U3BlZWQobV9sYXllci5nZXQoKSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyOjpzZXRTcGVl
ZChmbG9hdCB2YWx1ZSkKK3sKKyAgICBDQUNGTGF5ZXJTZXRTcGVlZChtX2xheWVyLmdldCgpLCB2
YWx1ZSk7CisgICAgc2V0TmVlZHNDb21taXQoKTsKK30KKworQ0ZUaW1lSW50ZXJ2YWwgUGxhdGZv
cm1DQUxheWVyOjp0aW1lT2Zmc2V0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gQ0FDRkxheWVyR2V0
VGltZU9mZnNldChtX2xheWVyLmdldCgpKTsKK30KKwordm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OnNl
dFRpbWVPZmZzZXQoQ0ZUaW1lSW50ZXJ2YWwgdmFsdWUpCit7CisgICAgQ0FDRkxheWVyU2V0VGlt
ZU9mZnNldChtX2xheWVyLmdldCgpLCB2YWx1ZSk7CisgICAgc2V0TmVlZHNDb21taXQoKTsKK30K
KworI2lmbmRlZiBOREVCVUcKK3N0YXRpYyB2b2lkIHByaW50SW5kZW50KGludCBpbmRlbnQpCit7
CisgICAgZm9yICggOyBpbmRlbnQgPiAwOyAtLWluZGVudCkKKyAgICAgICAgZnByaW50ZihzdGRl
cnIsICIgICIpOworfQorCitzdGF0aWMgdm9pZCBwcmludFRyYW5zZm9ybShjb25zdCBDQVRyYW5z
Zm9ybTNEJiB0cmFuc2Zvcm0pCit7CisgICAgZnByaW50ZihzdGRlcnIsICJbJWcgJWcgJWcgJWc7
ICVnICVnICVnICVnOyAlZyAlZyAlZyAlZzsgJWcgJWcgJWcgJWddIiwKKyAgICAgICAgICAgICAg
ICAgICAgdHJhbnNmb3JtLm0xMSwgdHJhbnNmb3JtLm0xMiwgdHJhbnNmb3JtLm0xMywgdHJhbnNm
b3JtLm0xNCwgCisgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybS5tMjEsIHRyYW5zZm9ybS5t
MjIsIHRyYW5zZm9ybS5tMjMsIHRyYW5zZm9ybS5tMjQsIAorICAgICAgICAgICAgICAgICAgICB0
cmFuc2Zvcm0ubTMxLCB0cmFuc2Zvcm0ubTMyLCB0cmFuc2Zvcm0ubTMzLCB0cmFuc2Zvcm0ubTM0
LCAKKyAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtLm00MSwgdHJhbnNmb3JtLm00MiwgdHJh
bnNmb3JtLm00MywgdHJhbnNmb3JtLm00NCk7Cit9CisKK3N0YXRpYyB2b2lkIHByaW50TGF5ZXIo
Y29uc3QgUGxhdGZvcm1DQUxheWVyKiBsYXllciwgaW50IGluZGVudCkKK3sKKyAgICBGbG9hdFBv
aW50M0QgbGF5ZXJQb3NpdGlvbiA9IGxheWVyLT5wb3NpdGlvbigpOworICAgIEZsb2F0UG9pbnQz
RCBsYXllckFuY2hvclBvaW50ID0gbGF5ZXItPmFuY2hvclBvaW50KCk7CisgICAgRmxvYXRSZWN0
IGxheWVyQm91bmRzID0gbGF5ZXItPmJvdW5kcygpOworICAgIHByaW50SW5kZW50KGluZGVudCk7
CisKKyAgICBjaGFyKiBsYXllclR5cGVOYW1lID0gMDsKKyAgICBzd2l0Y2ggKGxheWVyLT5sYXll
clR5cGUoKSkgeworICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVMYXllcjogbGF5
ZXJUeXBlTmFtZSA9ICJsYXllciI7IGJyZWFrOworICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpM
YXllclR5cGVXZWJMYXllcjogbGF5ZXJUeXBlTmFtZSA9ICJ3ZWItbGF5ZXIiOyBicmVhazsKKyAg
ICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlVHJhbnNmb3JtTGF5ZXI6IGxheWVyVHlw
ZU5hbWUgPSAidHJhbnNmb3JtLWxheWVyIjsgYnJlYWs7CisgICAgY2FzZSBQbGF0Zm9ybUNBTGF5
ZXI6OkxheWVyVHlwZVdlYlRpbGVkTGF5ZXI6IGxheWVyVHlwZU5hbWUgPSAid2ViLXRpbGVkLWxh
eWVyIjsgYnJlYWs7CisgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVJvb3RMYXll
cjogbGF5ZXJUeXBlTmFtZSA9ICJyb290LWxheWVyIjsgYnJlYWs7CisgICAgY2FzZSBQbGF0Zm9y
bUNBTGF5ZXI6OkxheWVyVHlwZUN1c3RvbTogbGF5ZXJUeXBlTmFtZSA9ICJjdXN0b20tbGF5ZXIi
OyBicmVhazsKKyAgICB9CisKKyAgICBmcHJpbnRmKHN0ZGVyciwgIiglcyBbJWcgJWcgJWddIFsl
ZyAlZyAlZyAlZ10gWyVnICVnICVnXSBzdXBlcmxheWVyPSVwXG4iLAorICAgICAgICBsYXllclR5
cGVOYW1lLAorICAgICAgICBsYXllclBvc2l0aW9uLngoKSwgbGF5ZXJQb3NpdGlvbi55KCksIGxh
eWVyUG9zaXRpb24ueigpLCAKKyAgICAgICAgbGF5ZXJCb3VuZHMueCgpLCBsYXllckJvdW5kcy55
KCksIGxheWVyQm91bmRzLndpZHRoKCksIGxheWVyQm91bmRzLmhlaWdodCgpLAorICAgICAgICBs
YXllckFuY2hvclBvaW50LngoKSwgbGF5ZXJBbmNob3JQb2ludC55KCksIGxheWVyQW5jaG9yUG9p
bnQueigpLCBsYXllci0+c3VwZXJsYXllcigpKTsKKworICAgIC8vIFByaW50IG5hbWUgaWYgbmVl
ZGVkCisgICAgU3RyaW5nIGxheWVyTmFtZSA9IGxheWVyLT5uYW1lKCk7CisgICAgaWYgKCFsYXll
ck5hbWUuaXNFbXB0eSgpKSB7CisgICAgICAgIHByaW50SW5kZW50KGluZGVudCArIDEpOworICAg
ICAgICBmcHJpbnRmKHN0ZGVyciwgIihuYW1lICVzKVxuIiwgbGF5ZXJOYW1lLnV0ZjgoKS5kYXRh
KCkpOworICAgIH0KKworICAgIC8vIFByaW50IG1hc2tzVG9Cb3VuZHMgaWYgbmVlZGVkCisgICAg
Ym9vbCBsYXllck1hc2tzVG9Cb3VuZHMgPSBsYXllci0+bWFza3NUb0JvdW5kcygpOworICAgIGlm
IChsYXllck1hc2tzVG9Cb3VuZHMpIHsKKyAgICAgICAgcHJpbnRJbmRlbnQoaW5kZW50ICsgMSk7
CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiKG1hc2tzVG9Cb3VuZHMgdHJ1ZSlcbiIpOworICAg
IH0KKworICAgIC8vIFByaW50IG9wYWNpdHkgaWYgbmVlZGVkCisgICAgZmxvYXQgbGF5ZXJPcGFj
aXR5ID0gbGF5ZXItPm9wYWNpdHkoKTsKKyAgICBpZiAobGF5ZXJPcGFjaXR5ICE9IDEpIHsKKyAg
ICAgICAgcHJpbnRJbmRlbnQoaW5kZW50ICsgMSk7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAi
KG9wYWNpdHkgJWhmKVxuIiwgbGF5ZXJPcGFjaXR5KTsKKyAgICB9CisKKyAgICAvLyBQcmludCBz
dWJsYXllclRyYW5zZm9ybSBpZiBuZWVkZWQKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBsYXll
clRyYW5zZm9ybSA9IGxheWVyLT5zdWJsYXllclRyYW5zZm9ybSgpOworICAgIGlmICghbGF5ZXJU
cmFuc2Zvcm0uaXNJZGVudGl0eSgpKSB7CisgICAgICAgIHByaW50SW5kZW50KGluZGVudCArIDEp
OworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIihzdWJsYXllclRyYW5zZm9ybSAiKTsKKyAgICAg
ICAgcHJpbnRUcmFuc2Zvcm0obGF5ZXJUcmFuc2Zvcm0pOworICAgICAgICBmcHJpbnRmKHN0ZGVy
ciwgIilcbiIpOworICAgIH0KKworICAgIC8vIFByaW50IHRyYW5zZm9ybSBpZiBuZWVkZWQKKyAg
ICBsYXllclRyYW5zZm9ybSA9IGxheWVyLT50cmFuc2Zvcm0oKTsKKyAgICBpZiAoIWxheWVyVHJh
bnNmb3JtLmlzSWRlbnRpdHkoKSkgeworICAgICAgICBwcmludEluZGVudChpbmRlbnQgKyAxKTsK
KyAgICAgICAgZnByaW50ZihzdGRlcnIsICIodHJhbnNmb3JtICIpOworICAgICAgICBwcmludFRy
YW5zZm9ybShsYXllclRyYW5zZm9ybSk7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiKVxuIik7
CisgICAgfQorCisgICAgLy8gUHJpbnQgY29udGVudHMgaWYgbmVlZGVkCisgICAgQ0ZUeXBlUmVm
IGxheWVyQ29udGVudHMgPSBsYXllci0+Y29udGVudHMoKTsKKyAgICBpZiAobGF5ZXJDb250ZW50
cykgeworICAgICAgICBpZiAoQ0ZHZXRUeXBlSUQobGF5ZXJDb250ZW50cykgPT0gQ0dJbWFnZUdl
dFR5cGVJRCgpKSB7CisgICAgICAgICAgICBDR0ltYWdlUmVmIGltYWdlQ29udGVudHMgPSBzdGF0
aWNfY2FzdDxDR0ltYWdlUmVmPihjb25zdF9jYXN0PHZvaWQqPihsYXllckNvbnRlbnRzKSk7Cisg
ICAgICAgICAgICBwcmludEluZGVudChpbmRlbnQgKyAxKTsKKyAgICAgICAgICAgIGZwcmludGYo
c3RkZXJyLCAiKGNvbnRlbnRzIChpbWFnZSBbJWQgJWRdKSlcbiIsCisgICAgICAgICAgICAgICAg
Q0dJbWFnZUdldFdpZHRoKGltYWdlQ29udGVudHMpLCBDR0ltYWdlR2V0SGVpZ2h0KGltYWdlQ29u
dGVudHMpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIFByaW50IHN1YmxheWVycyBpZiBu
ZWVkZWQKKyAgICBpbnQgbiA9IGxheWVyLT5zdWJsYXllckNvdW50KCk7CisgICAgaWYgKG4gPiAw
KSB7CisgICAgICAgIHByaW50SW5kZW50KGluZGVudCArIDEpOworICAgICAgICBmcHJpbnRmKHN0
ZGVyciwgIihzdWJsYXllcnNcbiIpOworCisgICAgICAgIENGQXJyYXlSZWYgc3VibGF5ZXJzID0g
Q0FDRkxheWVyR2V0U3VibGF5ZXJzKGxheWVyLT5wbGF0Zm9ybUxheWVyKCkpOworICAgICAgICBm
b3IgKGludCBpID0gMDsgaSA8IG47ICsraSkgeworICAgICAgICAgICAgUGxhdGZvcm1DQUxheWVy
KiBzdWJsYXllciA9IFBsYXRmb3JtQ0FMYXllcjo6cGxhdGZvcm1DQUxheWVyKGNvbnN0X2Nhc3Q8
dm9pZCo+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoc3VibGF5ZXJzLCBpKSkpOworICAgICAgICAg
ICAgcHJpbnRMYXllcihzdWJsYXllciwgaW5kZW50ICsgMik7CisgICAgICAgIH0KKworICAgICAg
ICBwcmludEluZGVudChpbmRlbnQgKyAxKTsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICIpXG4i
KTsKKyAgICB9CisKKyAgICBwcmludEluZGVudChpbmRlbnQpOworICAgIGZwcmludGYoc3RkZXJy
LCAiKVxuIik7Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyOjpwcmludFRyZWUoKSBjb25zdAor
eworICAgIC8vIFByaW50IGhlYWRpbmcgaW5mbworICAgIENHUmVjdCByb290Qm91bmRzID0gYm91
bmRzKCk7CisgICAgZnByaW50ZihzdGRlcnIsICJcblxuKiogUmVuZGVyIHRyZWUgYXQgdGltZSAl
ZyAoYm91bmRzICVnLCAlZyAlZ3glZykgKipcblxuIiwgCisgICAgICAgIGN1cnJlbnRUaW1lKCks
IHJvb3RCb3VuZHMub3JpZ2luLngsIHJvb3RCb3VuZHMub3JpZ2luLnksIHJvb3RCb3VuZHMuc2l6
ZS53aWR0aCwgcm9vdEJvdW5kcy5zaXplLmhlaWdodCk7CisKKyAgICAvLyBQcmludCBsYXllciB0
cmVlIGZyb20gdGhlIHJvb3QKKyAgICBwcmludExheWVyKHRoaXMsIDApOworfQorI2VuZGlmIC8v
ICNpZm5kZWYgTkRFQlVHCisKKyNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcp
CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJX
aW5JbnRlcm5hbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS93aW4vUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWwuY3BwCShyZXZpc2lvbiAwKQorKysgV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWwu
Y3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
CisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorCisjaW5jbHVkZSAiUGxhdGZvcm1D
QUxheWVyV2luSW50ZXJuYWwuaCIKKworI2luY2x1ZGUgIkZvbnQuaCIKKyNpbmNsdWRlICJQbGF0
Zm9ybUNBTGF5ZXIuaCIKKyNpbmNsdWRlIDxRdWFydHpDb3JlL0NBQ0ZMYXllci5oPgorCit1c2lu
ZyBuYW1lc3BhY2Ugc3RkOwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKKy8vIFRoZSB3aWR0
aCBhbmQgaGVpZ2h0IG9mIGEgc2luZ2xlIHRpbGUgaW4gYSB0aWxlZCBsYXllci4gU2hvdWxkIGJl
IGxhcmdlIGVub3VnaCB0bworLy8gYXZvaWQgbG90cyBvZiBzbWFsbCB0aWxlcyAoYW5kIHRoZXJl
Zm9yZSBsb3RzIG9mIGRyYXdpbmcgY2FsbGJhY2tzKSwgYnV0IHNtYWxsIGVub3VnaAorLy8gdG8g
a2VlcCB0aGUgb3ZlcmFsbCB0aWxlIGNvc3QgbG93Lgorc3RhdGljIGNvbnN0IGludCBjVGlsZWRM
YXllclRpbGVTaXplID0gNTEyOworCitQbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbDo6UGxhdGZv
cm1DQUxheWVyV2luSW50ZXJuYWwoUGxhdGZvcm1DQUxheWVyKiBvd25lcikKKyAgICA6IG1fdGls
ZVNpemUoQ0dTaXplTWFrZShjVGlsZWRMYXllclRpbGVTaXplLCBjVGlsZWRMYXllclRpbGVTaXpl
KSkKKyAgICAsIG1fY29uc3RyYWluZWRTaXplKGNvbnN0cmFpbmVkU2l6ZShvd25lci0+Ym91bmRz
KCkuc2l6ZSgpKSkKKyAgICAsIG1fb3duZXIob3duZXIpCit7CisgICAgaWYgKG1fb3duZXItPmxh
eWVyVHlwZSgpID09IFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlV2ViVGlsZWRMYXllcikgewor
ICAgICAgICAvLyBUaWxlZCBsYXllcnMgYXJlIHBsYWNlZCBpbiBhIGNoaWxkIGxheWVyIHRoYXQg
aXMgYWx3YXlzIHRoZSBmaXJzdCBjaGlsZCBvZiB0aGUgVGlsZWRMYXllcgorICAgICAgICBtX3Rp
bGVQYXJlbnQuYWRvcHRDRihDQUNGTGF5ZXJDcmVhdGUoa0NBQ0ZMYXllcikpOworICAgICAgICBD
QUNGTGF5ZXJJbnNlcnRTdWJsYXllcihtX293bmVyLT5wbGF0Zm9ybUxheWVyKCksIG1fdGlsZVBh
cmVudC5nZXQoKSwgMCk7CisgICAgICAgIHVwZGF0ZVRpbGVzKCk7CisgICAgfQorfQorCitQbGF0
Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbDo6flBsYXRmb3JtQ0FMYXllcldpbkludGVybmFsKCkKK3sK
K30KKwordm9pZCBQbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbDo6ZGlzcGxheUNhbGxiYWNrKENB
Q0ZMYXllclJlZiBjYUxheWVyLCBDR0NvbnRleHRSZWYgY29udGV4dCkKK3sKKyAgICBpZiAoIW93
bmVyKCkgfHwgIW93bmVyKCktPm93bmVyKCkpCisgICAgICAgIHJldHVybjsKKworICAgIENHQ29u
dGV4dFNhdmVHU3RhdGUoY29udGV4dCk7CisKKyAgICBDR1JlY3QgbGF5ZXJCb3VuZHMgPSBvd25l
cigpLT5ib3VuZHMoKTsKKyAgICBpZiAob3duZXIoKS0+b3duZXIoKS0+cGxhdGZvcm1DQUxheWVy
Q29udGVudHNPcmllbnRhdGlvbigpID09IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OkNvbXBvc2l0
aW5nQ29vcmRpbmF0ZXNUb3BEb3duKSB7CisgICAgICAgIENHQ29udGV4dFNjYWxlQ1RNKGNvbnRl
eHQsIDEsIC0xKTsKKyAgICAgICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKGNvbnRleHQsIDAsIC1s
YXllckJvdW5kcy5zaXplLmhlaWdodCk7CisgICAgfQorCisgICAgaWYgKG93bmVyKCktPm93bmVy
KCkpIHsKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0IGdyYXBoaWNzQ29udGV4dChjb250ZXh0KTsK
KworICAgICAgICAvLyBJdCdzIGltcG9ydGFudCB0byBnZXQgdGhlIGNsaXAgZnJvbSB0aGUgY29u
dGV4dCwgYmVjYXVzZSBpdCBtYXkgYmUgc2lnbmlmaWNhbnRseQorICAgICAgICAvLyBzbWFsbGVy
IHRoYW4gdGhlIGxheWVyIGJvdW5kcyAoZS5nLiB0aWxlZCBsYXllcnMpCisgICAgICAgIENHUmVj
dCBjbGlwQm91bmRzID0gQ0dDb250ZXh0R2V0Q2xpcEJvdW5kaW5nQm94KGNvbnRleHQpOworICAg
ICAgICBJbnRSZWN0IGNsaXAoZW5jbG9zaW5nSW50UmVjdChjbGlwQm91bmRzKSk7CisgICAgICAg
IG93bmVyKCktPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllclBhaW50Q29udGVudHMoZ3JhcGhpY3ND
b250ZXh0LCBjbGlwKTsKKyAgICB9CisjaWZuZGVmIE5ERUJVRworICAgIGVsc2UgeworICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKworICAgICAgICAvLyBGSVhNRTogaWRlYWxseSB3ZSdk
IGF2b2lkIGNhbGxpbmcgLXNldE5lZWRzRGlzcGxheSBvbiBhIGxheWVyIHRoYXQgaXMgYSBwbGFp
biBjb2xvciwKKyAgICAgICAgLy8gc28gQ0EgbmV2ZXIgbWFrZXMgYmFja2luZyBzdG9yZSBmb3Ig
aXQgKHdoaWNoIGlzIHdoYXQgLXNldE5lZWRzRGlzcGxheSB3aWxsIGRvIGFib3ZlKS4KKyAgICAg
ICAgQ0dDb250ZXh0U2V0UkdCRmlsbENvbG9yKGNvbnRleHQsIDAuMGYsIDEuMGYsIDAuMGYsIDEu
MGYpOworICAgICAgICBDR0NvbnRleHRGaWxsUmVjdChjb250ZXh0LCBsYXllckJvdW5kcyk7Cisg
ICAgfQorI2VuZGlmCisKKyAgICBpZiAob3duZXIoKS0+b3duZXIoKS0+cGxhdGZvcm1DQUxheWVy
U2hvd1JlcGFpbnRDb3VudGVyKCkpIHsKKyAgICAgICAgU3RyaW5nIHRleHQgPSBTdHJpbmc6Om51
bWJlcihvd25lcigpLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJJbmNyZW1lbnRSZXBhaW50Q291
bnQoKSk7CisKKyAgICAgICAgQ0dDb250ZXh0U2F2ZUdTdGF0ZShjb250ZXh0KTsKKworICAgICAg
ICAvLyBNYWtlIHRoZSBiYWNrZ3JvdW5kIG9mIHRoZSBjb3VudGVyIHRoZSBzYW1lIGFzIHRoZSBi
b3JkZXIgY29sb3IsCisgICAgICAgIC8vIHVubGVzcyB0aGVyZSBpcyBubyBib3JkZXIsIHRoZW4g
bWFrZSBpdCByZWQKKyAgICAgICAgZmxvYXQgYm9yZGVyV2lkdGggPSBDQUNGTGF5ZXJHZXRCb3Jk
ZXJXaWR0aChjYUxheWVyKTsKKyAgICAgICAgaWYgKGJvcmRlcldpZHRoID4gMCkgeworICAgICAg
ICAgICAgQ0dDb2xvclJlZiBib3JkZXJDb2xvciA9IENBQ0ZMYXllckdldEJvcmRlckNvbG9yKGNh
TGF5ZXIpOworICAgICAgICAgICAgY29uc3QgQ0dGbG9hdCogY29sb3JzID0gQ0dDb2xvckdldENv
bXBvbmVudHMoYm9yZGVyQ29sb3IpOworICAgICAgICAgICAgQ0dDb250ZXh0U2V0UkdCRmlsbENv
bG9yKGNvbnRleHQsIGNvbG9yc1swXSwgY29sb3JzWzFdLCBjb2xvcnNbMl0sIGNvbG9yc1szXSk7
CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgQ0dDb250ZXh0U2V0UkdCRmlsbENvbG9yKGNv
bnRleHQsIDEuMGYsIDAuMGYsIDAuMGYsIDAuOGYpOworICAgICAgICAKKyAgICAgICAgQ0dSZWN0
IGFCb3VuZHMgPSBsYXllckJvdW5kczsKKworICAgICAgICBhQm91bmRzLnNpemUud2lkdGggPSAx
MCArIDEwICogdGV4dC5sZW5ndGgoKTsKKyAgICAgICAgYUJvdW5kcy5zaXplLmhlaWdodCA9IDIy
OworICAgICAgICBDR0NvbnRleHRGaWxsUmVjdChjb250ZXh0LCBhQm91bmRzKTsKKyAgICAgICAg
CisgICAgICAgIEZvbnREZXNjcmlwdGlvbiBkZXNjOworCisgICAgICAgIE5PTkNMSUVOVE1FVFJJ
Q1MgbWV0cmljczsKKyAgICAgICAgbWV0cmljcy5jYlNpemUgPSBzaXplb2YobWV0cmljcyk7Cisg
ICAgICAgIFN5c3RlbVBhcmFtZXRlcnNJbmZvKFNQSV9HRVROT05DTElFTlRNRVRSSUNTLCBtZXRy
aWNzLmNiU2l6ZSwgJm1ldHJpY3MsIDApOworICAgICAgICBGb250RmFtaWx5IGZhbWlseTsKKyAg
ICAgICAgZmFtaWx5LnNldEZhbWlseShtZXRyaWNzLmxmU21DYXB0aW9uRm9udC5sZkZhY2VOYW1l
KTsKKyAgICAgICAgZGVzYy5zZXRGYW1pbHkoZmFtaWx5KTsKKworICAgICAgICBkZXNjLnNldENv
bXB1dGVkU2l6ZSgxOCk7CisgICAgICAgIAorICAgICAgICBGb250IGZvbnQgPSBGb250KGRlc2Ms
IDAsIDApOworICAgICAgICBmb250LnVwZGF0ZSgwKTsKKworICAgICAgICBHcmFwaGljc0NvbnRl
eHQgY2coY29udGV4dCk7CisgICAgICAgIGNnLnNldEZpbGxDb2xvcihDb2xvcjo6YmxhY2ssIENv
bG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICBjZy5kcmF3VGV4dChmb250LCBUZXh0UnVuKHRl
eHQpLCBJbnRQb2ludChhQm91bmRzLm9yaWdpbi54ICsgNSwgYUJvdW5kcy5vcmlnaW4ueSArIDE3
KSk7CisKKyAgICAgICAgQ0dDb250ZXh0UmVzdG9yZUdTdGF0ZShjb250ZXh0KTsgICAgICAgIAor
ICAgIH0KKworICAgIENHQ29udGV4dFJlc3RvcmVHU3RhdGUoY29udGV4dCk7CisKKyAgICBvd25l
cigpLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJMYXllckRpZERpc3BsYXkoY2FMYXllcik7Cit9
CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWw6OmludGVybmFsU2V0TmVlZHNEaXNw
bGF5KGNvbnN0IEZsb2F0UmVjdCogZGlydHlSZWN0KQoreworICAgIGlmIChkaXJ0eVJlY3QpIHsK
KyAgICAgICAgQ0dSZWN0IHJlY3QgPSAqZGlydHlSZWN0OworICAgICAgICBDQUNGTGF5ZXJTZXRO
ZWVkc0Rpc3BsYXkob3duZXIoKS0+cGxhdGZvcm1MYXllcigpLCAmcmVjdCk7CisgICAgfSBlbHNl
CisgICAgICAgIENBQ0ZMYXllclNldE5lZWRzRGlzcGxheShvd25lcigpLT5wbGF0Zm9ybUxheWVy
KCksIDApOworfQorCit2b2lkIFBsYXRmb3JtQ0FMYXllcldpbkludGVybmFsOjpzZXROZWVkc0Rp
c3BsYXkoY29uc3QgRmxvYXRSZWN0KiBkaXJ0eVJlY3QpCit7CisgICAgaWYgKG93bmVyKCktPmxh
eWVyVHlwZSgpID09IFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlV2ViVGlsZWRMYXllcikgewor
ICAgICAgICAvLyBGSVhNRTogT25seSBzZXROZWVkc0Rpc3BsYXkgZm9yIHRpbGVzIHRoYXQgYXJl
IGN1cnJlbnRseSB2aXNpYmxlCisgICAgICAgIGludCBudW1UaWxlTGF5ZXJzID0gdGlsZUNvdW50
KCk7CisgICAgICAgIENHUmVjdCByZWN0OworICAgICAgICBpZiAoZGlydHlSZWN0KQorICAgICAg
ICAgICAgcmVjdCA9ICpkaXJ0eVJlY3Q7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVt
VGlsZUxheWVyczsgKytpKQorICAgICAgICAgICAgQ0FDRkxheWVyU2V0TmVlZHNEaXNwbGF5KHRp
bGVBdEluZGV4KGkpLCBkaXJ0eVJlY3QgPyAmcmVjdCA6IDApOworCisgICAgICAgIGlmIChtX293
bmVyLT5vd25lcigpICYmIG1fb3duZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllclNob3dSZXBh
aW50Q291bnRlcigpKSB7CisgICAgICAgICAgICBDR1JlY3QgbGF5ZXJCb3VuZHMgPSBtX293bmVy
LT5ib3VuZHMoKTsKKyAgICAgICAgICAgIENHUmVjdCBpbmRpY2F0b3JSZWN0ID0gQ0dSZWN0TWFr
ZShsYXllckJvdW5kcy5vcmlnaW4ueCwgbGF5ZXJCb3VuZHMub3JpZ2luLnksIDgwLCAyNSk7Cisg
ICAgICAgICAgICBDQUNGTGF5ZXJTZXROZWVkc0Rpc3BsYXkodGlsZUF0SW5kZXgoMCksICZpbmRp
Y2F0b3JSZWN0KTsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAob3duZXIoKS0+bGF5ZXJUeXBl
KCkgPT0gUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVXZWJMYXllcikgeworICAgICAgICBpZiAo
b3duZXIoKSAmJiBvd25lcigpLT5vd25lcigpKSB7CisgICAgICAgICAgICBpZiAob3duZXIoKS0+
b3duZXIoKS0+cGxhdGZvcm1DQUxheWVyU2hvd1JlcGFpbnRDb3VudGVyKCkpIHsKKyAgICAgICAg
ICAgICAgICBGbG9hdFJlY3QgbGF5ZXJCb3VuZHMgPSBvd25lcigpLT5ib3VuZHMoKTsKKyAgICAg
ICAgICAgICAgICBGbG9hdFJlY3QgcmVwYWludENvdW50ZXJSZWN0ID0gbGF5ZXJCb3VuZHM7CisK
KyAgICAgICAgICAgICAgICAvLyBXZSBhc3N1bWUgYSBtYXhpbXVtIG9mIDQgZGlnaXRzIGFuZCBh
IGZvbnQgc2l6ZSBvZiAxOC4KKyAgICAgICAgICAgICAgICByZXBhaW50Q291bnRlclJlY3Quc2V0
V2lkdGgoODApOworICAgICAgICAgICAgICAgIHJlcGFpbnRDb3VudGVyUmVjdC5zZXRIZWlnaHQo
MjIpOworICAgICAgICAgICAgICAgIGlmIChvd25lcigpLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5
ZXJDb250ZW50c09yaWVudGF0aW9uKCkgPT0gV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6Q29tcG9z
aXRpbmdDb29yZGluYXRlc1RvcERvd24pCisgICAgICAgICAgICAgICAgICAgIHJlcGFpbnRDb3Vu
dGVyUmVjdC5zZXRZKGxheWVyQm91bmRzLmhlaWdodCgpIC0gKGxheWVyQm91bmRzLnkoKSArIHJl
cGFpbnRDb3VudGVyUmVjdC5oZWlnaHQoKSkpOworICAgICAgICAgICAgICAgIGludGVybmFsU2V0
TmVlZHNEaXNwbGF5KCZyZXBhaW50Q291bnRlclJlY3QpOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgaWYgKGRpcnR5UmVjdCAmJiBvd25lcigpLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJD
b250ZW50c09yaWVudGF0aW9uKCkgPT0gV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6Q29tcG9zaXRp
bmdDb29yZGluYXRlc1RvcERvd24pIHsKKyAgICAgICAgICAgICAgICBGbG9hdFJlY3QgZmxpcHBl
ZERpcnR5UmVjdCA9ICpkaXJ0eVJlY3Q7CisgICAgICAgICAgICAgICAgZmxpcHBlZERpcnR5UmVj
dC5zZXRZKG93bmVyKCktPmJvdW5kcygpLmhlaWdodCgpIC0gKGZsaXBwZWREaXJ0eVJlY3QueSgp
ICsgZmxpcHBlZERpcnR5UmVjdC5oZWlnaHQoKSkpOworICAgICAgICAgICAgICAgIGludGVybmFs
U2V0TmVlZHNEaXNwbGF5KCZmbGlwcGVkRGlydHlSZWN0KTsKKyAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpbnRlcm5hbFNldE5lZWRz
RGlzcGxheShkaXJ0eVJlY3QpOworICAgIH0KKyAgICBvd25lcigpLT5zZXROZWVkc0NvbW1pdCgp
OworfQorCit2b2lkIFBsYXRmb3JtQ0FMYXllcldpbkludGVybmFsOjpzZXRTdWJsYXllcnMoY29u
c3QgUGxhdGZvcm1DQUxheWVyTGlzdCYgbGlzdCkKK3sKKyAgICAvLyBSZW1vdmUgYWxsIHRoZSBj
dXJyZW50IHN1YmxheWVycyBhbmQgYWRkIHRoZSBwYXNzZWQgbGF5ZXJzCisgICAgQ0FDRkxheWVy
U2V0U3VibGF5ZXJzKG93bmVyKCktPnBsYXRmb3JtTGF5ZXIoKSwgMCk7CisKKyAgICAvLyBQZXJm
b3JtIHJlbW92ZUZyb21TdXBlckxheWVyIGluIGEgc2VwYXJhdGUgcGFzcy4gQ0FDRiByZXF1aXJl
cyBzdXBlcmxheWVyIHRvCisgICAgLy8gYmUgbnVsbCBvciBDQUNGTGF5ZXJJbnNlcnRTdWJsYXll
ciBzaWxlbnRseSBmYWlscy4KKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxpc3Quc2l6ZSgp
OyBpKyspCisgICAgICAgIENBQ0ZMYXllclJlbW92ZUZyb21TdXBlcmxheWVyKGxpc3RbaV0tPnBs
YXRmb3JtTGF5ZXIoKSk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxpc3Quc2l6ZSgp
OyBpKyspCisgICAgICAgIENBQ0ZMYXllckluc2VydFN1YmxheWVyKG93bmVyKCktPnBsYXRmb3Jt
TGF5ZXIoKSwgbGlzdFtpXS0+cGxhdGZvcm1MYXllcigpLCBpKTsKKworICAgIG93bmVyKCktPnNl
dE5lZWRzQ29tbWl0KCk7CisKKyAgICBpZiAob3duZXIoKS0+bGF5ZXJUeXBlKCkgPT0gUGxhdGZv
cm1DQUxheWVyOjpMYXllclR5cGVXZWJUaWxlZExheWVyKSB7CisgICAgICAgIC8vIFByZXNlcnZl
IHRoZSB0aWxlIHBhcmVudCBhZnRlciBzZXQKKyAgICAgICAgQ0FDRkxheWVySW5zZXJ0U3VibGF5
ZXIob3duZXIoKS0+cGxhdGZvcm1MYXllcigpLCBtX3RpbGVQYXJlbnQuZ2V0KCksIDApOworICAg
IH0KK30KKwordm9pZCBQbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbDo6cmVtb3ZlQWxsU3VibGF5
ZXJzKCkKK3sKKyAgICBDQUNGTGF5ZXJTZXRTdWJsYXllcnMob3duZXIoKS0+cGxhdGZvcm1MYXll
cigpLCAwKTsKKyAgICBvd25lcigpLT5zZXROZWVkc0NvbW1pdCgpOworCisgICAgaWYgKG93bmVy
KCktPmxheWVyVHlwZSgpID09IFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlV2ViVGlsZWRMYXll
cikgeworICAgICAgICAvLyBSZXN0b3JlIHRoZSB0aWxlIHBhcmVudCBhZnRlciByZW1vdmFsCisg
ICAgICAgIENBQ0ZMYXllckluc2VydFN1YmxheWVyKG93bmVyKCktPnBsYXRmb3JtTGF5ZXIoKSwg
bV90aWxlUGFyZW50LmdldCgpLCAwKTsKKyAgICB9Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVy
V2luSW50ZXJuYWw6Omluc2VydFN1YmxheWVyKFBsYXRmb3JtQ0FMYXllciogbGF5ZXIsIHNpemVf
dCBpbmRleCkKK3sKKyAgICBpbmRleCA9IG1pbihpbmRleCwgc3VibGF5ZXJDb3VudCgpKTsKKyAg
ICBpZiAob3duZXIoKS0+bGF5ZXJUeXBlKCkgPT0gUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVX
ZWJUaWxlZExheWVyKSB7CisgICAgICAgIC8vIEFkZCAxIHRvIGFjY291bnQgZm9yIHRoZSB0aWxl
IHBhcmVudCBsYXllcgorICAgICAgICBpbmRleCsrOworICAgIH0KKworICAgIGxheWVyLT5yZW1v
dmVGcm9tU3VwZXJsYXllcigpOworICAgIENBQ0ZMYXllckluc2VydFN1YmxheWVyKG93bmVyKCkt
PnBsYXRmb3JtTGF5ZXIoKSwgbGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSwgaW5kZXgpOworICAgIG93
bmVyKCktPnNldE5lZWRzQ29tbWl0KCk7Cit9CisKK3NpemVfdCBQbGF0Zm9ybUNBTGF5ZXJXaW5J
bnRlcm5hbDo6c3VibGF5ZXJDb3VudCgpIGNvbnN0Cit7CisgICAgQ0ZBcnJheVJlZiBzdWJsYXll
cnMgPSBDQUNGTGF5ZXJHZXRTdWJsYXllcnMob3duZXIoKS0+cGxhdGZvcm1MYXllcigpKTsKKyAg
ICBzaXplX3QgY291bnQgPSBzdWJsYXllcnMgPyBDRkFycmF5R2V0Q291bnQoc3VibGF5ZXJzKSA6
IDA7CisKKyAgICBpZiAob3duZXIoKS0+bGF5ZXJUeXBlKCkgPT0gUGxhdGZvcm1DQUxheWVyOjpM
YXllclR5cGVXZWJUaWxlZExheWVyKSB7CisgICAgICAgIC8vIFN1YnRyYWN0IDEgdG8gYWNjb3Vu
dCBmb3IgdGhlIHRpbGUgcGFyZW50IGxheWVyCisgICAgICAgIEFTU0VSVChjb3VudCA+IDApOwor
ICAgICAgICBjb3VudC0tOworICAgIH0KKworICAgIHJldHVybiBjb3VudDsKK30KKworaW50IFBs
YXRmb3JtQ0FMYXllcldpbkludGVybmFsOjppbmRleE9mU3VibGF5ZXIoY29uc3QgUGxhdGZvcm1D
QUxheWVyKiByZWZlcmVuY2UpCit7CisgICAgQ0FDRkxheWVyUmVmIHJlZiA9IHJlZmVyZW5jZS0+
cGxhdGZvcm1MYXllcigpOworICAgIGlmICghcmVmKQorICAgICAgICByZXR1cm4gLTE7CisKKyAg
ICBDRkFycmF5UmVmIHN1YmxheWVycyA9IENBQ0ZMYXllckdldFN1YmxheWVycyhvd25lcigpLT5w
bGF0Zm9ybUxheWVyKCkpOworICAgIGlmICghc3VibGF5ZXJzKQorICAgICAgICByZXR1cm4gLTE7
CisKKyAgICBzaXplX3QgbiA9IENGQXJyYXlHZXRDb3VudChzdWJsYXllcnMpOworCisgICAgaWYg
KG93bmVyKCktPmxheWVyVHlwZSgpID09IFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlV2ViVGls
ZWRMYXllcikgeworICAgICAgICBmb3IgKHNpemVfdCBpID0gMTsgaSA8IG47ICsraSkgeworICAg
ICAgICAgICAgaWYgKENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoc3VibGF5ZXJzLCBpKSA9PSByZWYp
CisgICAgICAgICAgICAgICAgcmV0dXJuIGkgLSAxOworICAgICAgICB9CisgICAgfSBlbHNlIHsK
KyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBuOyArK2kpIHsKKyAgICAgICAgICAgIGlm
IChDRkFycmF5R2V0VmFsdWVBdEluZGV4KHN1YmxheWVycywgaSkgPT0gcmVmKQorICAgICAgICAg
ICAgICAgIHJldHVybiBpOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIC0xOworfQor
CitQbGF0Zm9ybUNBTGF5ZXIqIFBsYXRmb3JtQ0FMYXllcldpbkludGVybmFsOjpzdWJsYXllckF0
SW5kZXgoaW50IGluZGV4KSBjb25zdAoreworICAgIGlmIChvd25lcigpLT5sYXllclR5cGUoKSA9
PSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVdlYlRpbGVkTGF5ZXIpIHsKKyAgICAgICAgLy8g
QWRkIDEgdG8gYWNjb3VudCBmb3IgdGhlIHRpbGUgcGFyZW50IGxheWVyCisgICAgICAgIGluZGV4
Kys7CisgICAgfQorCisgICAgQ0ZBcnJheVJlZiBzdWJsYXllcnMgPSBDQUNGTGF5ZXJHZXRTdWJs
YXllcnMob3duZXIoKS0+cGxhdGZvcm1MYXllcigpKTsKKyAgICBpZiAoIXN1YmxheWVycyB8fCBp
bmRleCA8IDAgfHwgQ0ZBcnJheUdldENvdW50KHN1YmxheWVycykgPD0gaW5kZXgpCisgICAgICAg
IHJldHVybiAwOworICAgIAorICAgIHJldHVybiBQbGF0Zm9ybUNBTGF5ZXI6OnBsYXRmb3JtQ0FM
YXllcihzdGF0aWNfY2FzdDxDQUNGTGF5ZXJSZWY+KGNvbnN0X2Nhc3Q8dm9pZCo+KENGQXJyYXlH
ZXRWYWx1ZUF0SW5kZXgoc3VibGF5ZXJzLCBpbmRleCkpKSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1D
QUxheWVyV2luSW50ZXJuYWw6OnNldEJvdW5kcyhjb25zdCBGbG9hdFJlY3QmIHJlY3QpCit7Cisg
ICAgaWYgKENHUmVjdEVxdWFsVG9SZWN0KHJlY3QsIG93bmVyKCktPmJvdW5kcygpKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgQ0FDRkxheWVyU2V0Qm91bmRzKG93bmVyKCktPnBsYXRmb3JtTGF5
ZXIoKSwgcmVjdCk7CisgICAgb3duZXIoKS0+c2V0TmVlZHNDb21taXQoKTsKKworICAgIGlmIChv
d25lcigpLT5sYXllclR5cGUoKSA9PSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVdlYlRpbGVk
TGF5ZXIpIHsKKyAgICAgICAgbV9jb25zdHJhaW5lZFNpemUgPSBjb25zdHJhaW5lZFNpemUocmVj
dC5zaXplKCkpOworICAgICAgICB1cGRhdGVUaWxlcygpOworICAgIH0KK30KKwordm9pZCBQbGF0
Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbDo6c2V0RnJhbWUoY29uc3QgRmxvYXRSZWN0JiByZWN0KQor
eworICAgIENHUmVjdCBvbGRGcmFtZSA9IG93bmVyKCktPmZyYW1lKCk7CisgICAgaWYgKENHUmVj
dEVxdWFsVG9SZWN0KHJlY3QsIG9sZEZyYW1lKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQ0FD
RkxheWVyU2V0RnJhbWUob3duZXIoKS0+cGxhdGZvcm1MYXllcigpLCByZWN0KTsKKyAgICBvd25l
cigpLT5zZXROZWVkc0NvbW1pdCgpOworCisgICAgaWYgKG93bmVyKCktPmxheWVyVHlwZSgpID09
IFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlV2ViVGlsZWRMYXllcikKKyAgICAgICAgdXBkYXRl
VGlsZXMoKTsKK30KKworQ0dTaXplIFBsYXRmb3JtQ0FMYXllcldpbkludGVybmFsOjpjb25zdHJh
aW5lZFNpemUoY29uc3QgQ0dTaXplJiBzaXplKSBjb25zdAoreworICAgIGNvbnN0IGludCBjTWF4
VGlsZUNvdW50ID0gNTEyOworICAgIGNvbnN0IGZsb2F0IGNTcXJ0TWF4VGlsZUNvdW50ID0gc3Fy
dGYoY01heFRpbGVDb3VudCk7CisKKyAgICBDR1NpemUgY29uc3RyYWluZWRTaXplID0gc2l6ZTsK
KworICAgIGludCB0aWxlQ29sdW1ucyA9IGNlaWxmKGNvbnN0cmFpbmVkU2l6ZS53aWR0aCAvIG1f
dGlsZVNpemUud2lkdGgpOworICAgIGludCB0aWxlUm93cyA9IGNlaWxmKGNvbnN0cmFpbmVkU2l6
ZS5oZWlnaHQgLyBtX3RpbGVTaXplLmhlaWdodCk7CisgICAgaW50IG51bVRpbGVzID0gdGlsZUNv
bHVtbnMgKiB0aWxlUm93czsKKworICAgIC8vIElmIG51bWJlciBvZiB0aWxlcyB2ZXJ0aWNhbGx5
IG9yIGhvcml6b250YWxseSBpcyA8IHNxcnQoY01heFRpbGVDb3VudCkKKyAgICAvLyBqdXN0IHNo
b3J0ZW4gdGhlIGxvbmdlciBkaW1lbnNpb24uIE90aGVyd2lzZSBzaG9ydGVuIGJvdGggZGltZW5z
aW9ucworICAgIC8vIGFjY29yZGluZyB0byB0aGUgcmF0aW8gb2Ygd2lkdGggdG8gaGVpZ2h0CisK
KyAgICBpZiAobnVtVGlsZXMgPiBjTWF4VGlsZUNvdW50KSB7CisgICAgICAgIGlmICh0aWxlUm93
cyA8IGNTcXJ0TWF4VGlsZUNvdW50KQorICAgICAgICAgICAgdGlsZUNvbHVtbnMgPSBmbG9vcmYo
Y01heFRpbGVDb3VudCAvIHRpbGVSb3dzKTsKKyAgICAgICAgZWxzZSBpZiAodGlsZUNvbHVtbnMg
PCBjU3FydE1heFRpbGVDb3VudCkKKyAgICAgICAgICAgIHRpbGVSb3dzID0gZmxvb3JmKGNNYXhU
aWxlQ291bnQgLyB0aWxlQ29sdW1ucyk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgdGls
ZVJvd3MgPSBjZWlsZihzcXJ0ZihjTWF4VGlsZUNvdW50ICogY29uc3RyYWluZWRTaXplLmhlaWdo
dCAvIGNvbnN0cmFpbmVkU2l6ZS53aWR0aCkpOworICAgICAgICAgICAgdGlsZUNvbHVtbnMgPSBm
bG9vcmYoY01heFRpbGVDb3VudCAvIHRpbGVSb3dzKTsKKyAgICAgICAgfQorICAgICAgICAKKyAg
ICAgICAgY29uc3RyYWluZWRTaXplLndpZHRoID0gdGlsZUNvbHVtbnMgKiBtX3RpbGVTaXplLndp
ZHRoOworICAgICAgICBjb25zdHJhaW5lZFNpemUuaGVpZ2h0ID0gdGlsZVJvd3MgKiBtX3RpbGVT
aXplLmhlaWdodDsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIGNvbnN0cmFpbmVkU2l6ZTsKK30K
Kwordm9pZCBQbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbDo6dGlsZURpc3BsYXlDYWxsYmFjayhD
QUNGTGF5ZXJSZWYgbGF5ZXIsIENHQ29udGV4dFJlZiBjb250ZXh0KQoreworICAgIHN0YXRpY19j
YXN0PFBsYXRmb3JtQ0FMYXllcldpbkludGVybmFsKj4oQ0FDRkxheWVyR2V0VXNlckRhdGEobGF5
ZXIpKS0+ZHJhd1RpbGUobGF5ZXIsIGNvbnRleHQpOworfQorCit2b2lkIFBsYXRmb3JtQ0FMYXll
cldpbkludGVybmFsOjphZGRUaWxlKCkKK3sKKyAgICBSZXRhaW5QdHI8Q0FDRkxheWVyUmVmPiBu
ZXdMYXllcihBZG9wdENGLCBDQUNGTGF5ZXJDcmVhdGUoa0NBQ0ZMYXllcikpOworICAgIENBQ0ZM
YXllclNldEFuY2hvclBvaW50KG5ld0xheWVyLmdldCgpLCBDR1BvaW50TWFrZSgwLCAxKSk7Cisg
ICAgQ0FDRkxheWVyU2V0VXNlckRhdGEobmV3TGF5ZXIuZ2V0KCksIHRoaXMpOworICAgIENBQ0ZM
YXllclNldERpc3BsYXlDYWxsYmFjayhuZXdMYXllci5nZXQoKSwgdGlsZURpc3BsYXlDYWxsYmFj
ayk7CisKKyAgICBDRkFycmF5UmVmIHN1YmxheWVycyA9IENBQ0ZMYXllckdldFN1YmxheWVycyht
X3RpbGVQYXJlbnQuZ2V0KCkpOworICAgIENBQ0ZMYXllckluc2VydFN1YmxheWVyKG1fdGlsZVBh
cmVudC5nZXQoKSwgbmV3TGF5ZXIuZ2V0KCksIHN1YmxheWVycyA/IENGQXJyYXlHZXRDb3VudChz
dWJsYXllcnMpIDogMCk7CisKKyAgICBpZiAob3duZXIoKS0+b3duZXIoKS0+cGxhdGZvcm1DQUxh
eWVyU2hvd0RlYnVnQm9yZGVycygpKSB7CisgICAgICAgIENHQ29sb3JSZWYgYm9yZGVyQ29sb3Ig
PSBDR0NvbG9yQ3JlYXRlR2VuZXJpY1JHQigwLjUsIDAsIDAuNSwgMC43KTsKKyAgICAgICAgQ0FD
RkxheWVyU2V0Qm9yZGVyQ29sb3IobmV3TGF5ZXIuZ2V0KCksIGJvcmRlckNvbG9yKTsKKyAgICAg
ICAgQ0dDb2xvclJlbGVhc2UoYm9yZGVyQ29sb3IpOworICAgICAgICBDQUNGTGF5ZXJTZXRCb3Jk
ZXJXaWR0aChuZXdMYXllci5nZXQoKSwgMik7CisgICAgfQorfQorCit2b2lkIFBsYXRmb3JtQ0FM
YXllcldpbkludGVybmFsOjpyZW1vdmVUaWxlKCkKK3sKKyAgICBDQUNGTGF5ZXJSZW1vdmVGcm9t
U3VwZXJsYXllcih0aWxlQXRJbmRleCh0aWxlQ291bnQoKSAtIDEpKTsKK30KKworQ0FDRkxheWVy
UmVmIFBsYXRmb3JtQ0FMYXllcldpbkludGVybmFsOjp0aWxlQXRJbmRleChpbnQgaW5kZXgpCit7
CisgICAgQ0ZBcnJheVJlZiBzdWJsYXllcnMgPSBDQUNGTGF5ZXJHZXRTdWJsYXllcnMobV90aWxl
UGFyZW50LmdldCgpKTsKKyAgICBpZiAoIXN1YmxheWVycyB8fCBpbmRleCA8IDAgfHwgaW5kZXgg
Pj0gdGlsZUNvdW50KCkpCisgICAgICAgIHJldHVybiAwOworICAgIAorICAgIHJldHVybiBzdGF0
aWNfY2FzdDxDQUNGTGF5ZXJSZWY+KGNvbnN0X2Nhc3Q8dm9pZCo+KENGQXJyYXlHZXRWYWx1ZUF0
SW5kZXgoc3VibGF5ZXJzLCBpbmRleCkpKTsKK30KKworaW50IFBsYXRmb3JtQ0FMYXllcldpbklu
dGVybmFsOjp0aWxlQ291bnQoKSBjb25zdAoreworICAgIENGQXJyYXlSZWYgc3VibGF5ZXJzID0g
Q0FDRkxheWVyR2V0U3VibGF5ZXJzKG1fdGlsZVBhcmVudC5nZXQoKSk7CisgICAgcmV0dXJuIHN1
YmxheWVycyA/IENGQXJyYXlHZXRDb3VudChzdWJsYXllcnMpIDogMDsKK30KKwordm9pZCBQbGF0
Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbDo6dXBkYXRlVGlsZXMoKQoreworICAgIC8vIEZJWE1FOiBJ
biBhZGRpdGlvbiB0byByZWRvaW5nIHRoZSBudW1iZXIgb2YgdGlsZXMsIHdlIG5lZWQgdG8gb25s
eSByZW5kZXIgYW5kIGhhdmUgYmFja2luZworICAgIC8vIHN0b3JlIGZvciB2aXNpYmxlIGxheWVy
cworICAgIGludCBudW1UaWxlc0hvcml6b250YWwgPSBjZWlsKG1fY29uc3RyYWluZWRTaXplLndp
ZHRoIC8gbV90aWxlU2l6ZS53aWR0aCk7CisgICAgaW50IG51bVRpbGVzVmVydGljYWwgPSBjZWls
KG1fY29uc3RyYWluZWRTaXplLmhlaWdodCAvIG1fdGlsZVNpemUuaGVpZ2h0KTsKKyAgICBpbnQg
bnVtVGlsZXNUb3RhbCA9IG51bVRpbGVzSG9yaXpvbnRhbCAqIG51bVRpbGVzVmVydGljYWw7CisK
KyAgICBpbnQgbnVtVGlsZXNUb0NoYW5nZSA9IG51bVRpbGVzVG90YWwgLSB0aWxlQ291bnQoKTsK
KyAgICBpZiAobnVtVGlsZXNUb0NoYW5nZSA+PSAwKSB7CisgICAgICAgIC8vIEFkZCBuZXcgdGls
ZXMKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1UaWxlc1RvQ2hhbmdlOyArK2kpCisg
ICAgICAgICAgICBhZGRUaWxlKCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gUmVtb3ZlIG9s
ZCB0aWxlcworICAgICAgICBudW1UaWxlc1RvQ2hhbmdlID0gLW51bVRpbGVzVG9DaGFuZ2U7Cisg
ICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtVGlsZXNUb0NoYW5nZTsgKytpKQorICAgICAg
ICAgICAgcmVtb3ZlVGlsZSgpOworICAgIH0KKworICAgIC8vIFNldCBjb29yZGluYXRlcyBmb3Ig
YWxsIHRpbGVzCisgICAgQ0ZBcnJheVJlZiB0aWxlQXJyYXkgPSBDQUNGTGF5ZXJHZXRTdWJsYXll
cnMobV90aWxlUGFyZW50LmdldCgpKTsKKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtVGls
ZXNIb3Jpem9udGFsOyArK2kpIHsKKyAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBudW1UaWxl
c1ZlcnRpY2FsOyArK2opIHsKKyAgICAgICAgICAgIENBQ0ZMYXllclJlZiB0aWxlID0gc3RhdGlj
X2Nhc3Q8Q0FDRkxheWVyUmVmPihjb25zdF9jYXN0PHZvaWQqPihDRkFycmF5R2V0VmFsdWVBdElu
ZGV4KHRpbGVBcnJheSwgaSAqIG51bVRpbGVzVmVydGljYWwgKyBqKSkpOworICAgICAgICAgICAg
Q0FDRkxheWVyU2V0UG9zaXRpb24odGlsZSwgQ0dQb2ludE1ha2UoaSAqIG1fdGlsZVNpemUud2lk
dGgsIGogKiBtX3RpbGVTaXplLmhlaWdodCkpOworICAgICAgICAgICAgaW50IHdpZHRoID0gbWlu
KG1fdGlsZVNpemUud2lkdGgsIG1fY29uc3RyYWluZWRTaXplLndpZHRoIC0gaSAqIG1fdGlsZVNp
emUud2lkdGgpOworICAgICAgICAgICAgaW50IGhlaWdodCA9IG1pbihtX3RpbGVTaXplLmhlaWdo
dCwgbV9jb25zdHJhaW5lZFNpemUuaGVpZ2h0IC0gaiAqIG1fdGlsZVNpemUuaGVpZ2h0KTsKKyAg
ICAgICAgICAgIENBQ0ZMYXllclNldEJvdW5kcyh0aWxlLCBDR1JlY3RNYWtlKGkgKiBtX3RpbGVT
aXplLndpZHRoLCBqICogbV90aWxlU2l6ZS5oZWlnaHQsIHdpZHRoLCBoZWlnaHQpKTsKKworICAg
ICAgICAgICAgLy8gRmxpcCBZIHRvIGNvbXBlbnNhdGUgZm9yIHRoZSBmbGlwcGluZyB0aGF0IGhh
cHBlbnMgZHVyaW5nIHJlbmRlciB0byBtYXRjaCB0aGUgQ0cgY29udGV4dCBjb29yZGluYXRlIHNw
YWNlCisgICAgICAgICAgICBDQVRyYW5zZm9ybTNEIHRyYW5zZm9ybSA9IENBVHJhbnNmb3JtM0RN
YWtlU2NhbGUoMSwgLTEsIDEpOworICAgICAgICAgICAgQ0FUcmFuc2Zvcm0zRFRyYW5zbGF0ZSh0
cmFuc2Zvcm0sIDAsIGhlaWdodCwgMCk7CisgICAgICAgICAgICBDQUNGTGF5ZXJTZXRUcmFuc2Zv
cm0odGlsZSwgdHJhbnNmb3JtKTsKKworI2lmbmRlZiBOREVCVUcKKyAgICAgICAgICAgIFN0cmlu
ZyBuYW1lID0gIlRpbGUgKCIgKyBTdHJpbmc6Om51bWJlcihpKSArICIsIiArIFN0cmluZzo6bnVt
YmVyKGopICsgIikiOworICAgICAgICAgICAgQ0FDRkxheWVyU2V0TmFtZSh0aWxlLCBSZXRhaW5Q
dHI8Q0ZTdHJpbmdSZWY+KEFkb3B0Q0YsIG5hbWUuY3JlYXRlQ0ZTdHJpbmcoKSkuZ2V0KCkpOwor
I2VuZGlmCisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyV2luSW50
ZXJuYWw6OmRyYXdUaWxlKENBQ0ZMYXllclJlZiB0aWxlLCBDR0NvbnRleHRSZWYgY29udGV4dCkK
K3sKKyAgICBDR1BvaW50IHRpbGVQb3NpdGlvbiA9IENBQ0ZMYXllckdldFBvc2l0aW9uKHRpbGUp
OworICAgIENHUmVjdCB0aWxlQm91bmRzID0gQ0FDRkxheWVyR2V0Qm91bmRzKHRpbGUpOworCisg
ICAgQ0dDb250ZXh0U2F2ZUdTdGF0ZShjb250ZXh0KTsKKworICAgIC8vIFRyYW5zZm9ybSBjb250
ZXh0IHRvIGJlIGF0IHRoZSBvcmlnaW4gb2YgdGhlIHBhcmVudCBsYXllcgorICAgIENHQ29udGV4
dFRyYW5zbGF0ZUNUTShjb250ZXh0LCAtdGlsZVBvc2l0aW9uLngsIC10aWxlUG9zaXRpb24ueSk7
CisKKyAgICAvLyBTZXQgdGhlIGNvbnRleHQgY2xpcHBpbmcgcmVjdGFuZ2xlIHRvIHRoZSBjdXJy
ZW50IHRpbGUKKyAgICBDR0NvbnRleHRDbGlwVG9SZWN0KGNvbnRleHQsIENHUmVjdE1ha2UodGls
ZVBvc2l0aW9uLngsIHRpbGVQb3NpdGlvbi55LCB0aWxlQm91bmRzLnNpemUud2lkdGgsIHRpbGVC
b3VuZHMuc2l6ZS5oZWlnaHQpKTsKKworICAgIGlmIChvd25lcigpLT5vd25lcigpLT5wbGF0Zm9y
bUNBTGF5ZXJDb250ZW50c09yaWVudGF0aW9uKCkgPT0gV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6
Q29tcG9zaXRpbmdDb29yZGluYXRlc1RvcERvd24pIHsKKyAgICAgICAgLy8gSWYgdGhlIGxheWVy
IGlzIHJlbmRlcmluZyB0b3AtZG93biwgaXQgd2lsbCBmbGlwIHRoZSBjb29yZGluYXRlcyBpbiB5
LiBUaWxlZCBsYXllcnMgYXJlCisgICAgICAgIC8vIGFscmVhZHkgZmxpcHBpbmcsIHNvIHdlIG5l
ZWQgdG8gdW5kbyB0aGF0IGhlcmUuCisgICAgICAgIENHQ29udGV4dFRyYW5zbGF0ZUNUTShjb250
ZXh0LCAwLCBvd25lcigpLT5ib3VuZHMoKS5oZWlnaHQoKSk7CisgICAgICAgIENHQ29udGV4dFNj
YWxlQ1RNKGNvbnRleHQsIDEsIC0xKTsKKyAgICB9CisKKyAgICAvLyBEcmF3IHRoZSB0aWxlCisg
ICAgZGlzcGxheUNhbGxiYWNrKG93bmVyKCktPnBsYXRmb3JtTGF5ZXIoKSwgY29udGV4dCk7CisK
KyAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKGNvbnRleHQpOworfQorCisjZW5kaWYgLy8gVVNF
KEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWwuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbC5o
CShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZv
cm1DQUxheWVyV2luSW50ZXJuYWwuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4OCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lm
bmRlZiBQbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbF9oCisjZGVmaW5lIFBsYXRmb3JtQ0FMYXll
cldpbkludGVybmFsX2gKKworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKworI2lu
Y2x1ZGUgPENvcmVHcmFwaGljcy9DR0dlb21ldHJ5Lmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0
ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKwordHlwZWRlZiBzdHJ1Y3QgX0NBQ0ZMYXll
ciAqQ0FDRkxheWVyUmVmOwordHlwZWRlZiBzdHJ1Y3QgQ0dDb250ZXh0ICpDR0NvbnRleHRSZWY7
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRmxvYXRSZWN0OworY2xhc3MgUGxhdGZv
cm1DQUxheWVyOworCit0eXBlZGVmIFZlY3RvcjxSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiA+IFBs
YXRmb3JtQ0FMYXllckxpc3Q7CisKK2NsYXNzIFBsYXRmb3JtQ0FMYXllcldpbkludGVybmFsIHsK
K3B1YmxpYzoKKyAgICBQbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbChQbGF0Zm9ybUNBTGF5ZXIq
KTsKKyAgICB+UGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWwoKTsKKworICAgIHZvaWQgZGlzcGxh
eUNhbGxiYWNrKENBQ0ZMYXllclJlZiwgQ0dDb250ZXh0UmVmKTsKKyAgICB2b2lkIHNldE5lZWRz
RGlzcGxheShjb25zdCBGbG9hdFJlY3QqKTsKKyAgICBQbGF0Zm9ybUNBTGF5ZXIqIG93bmVyKCkg
Y29uc3QgeyByZXR1cm4gbV9vd25lcjsgfQorCisgICAgdm9pZCBzZXRTdWJsYXllcnMoY29uc3Qg
UGxhdGZvcm1DQUxheWVyTGlzdCYpOworICAgIHZvaWQgcmVtb3ZlQWxsU3VibGF5ZXJzKCk7Cisg
ICAgdm9pZCBpbnNlcnRTdWJsYXllcihQbGF0Zm9ybUNBTGF5ZXIqLCBzaXplX3QpOworICAgIHNp
emVfdCBzdWJsYXllckNvdW50KCkgY29uc3Q7CisgICAgaW50IGluZGV4T2ZTdWJsYXllcihjb25z
dCBQbGF0Zm9ybUNBTGF5ZXIqIHJlZmVyZW5jZSk7CisKKyAgICB2b2lkIHNldEJvdW5kcyhjb25z
dCBGbG9hdFJlY3QmKTsKKyAgICB2b2lkIHNldEZyYW1lKGNvbnN0IEZsb2F0UmVjdCYpOworCitw
cml2YXRlOgorICAgIHZvaWQgaW50ZXJuYWxTZXROZWVkc0Rpc3BsYXkoY29uc3QgRmxvYXRSZWN0
Kik7CisgICAgUGxhdGZvcm1DQUxheWVyKiBzdWJsYXllckF0SW5kZXgoaW50KSBjb25zdDsKKwor
ICAgIHN0YXRpYyB2b2lkIHRpbGVEaXNwbGF5Q2FsbGJhY2soQ0FDRkxheWVyUmVmLCBDR0NvbnRl
eHRSZWYpOworCisgICAgdm9pZCBkcmF3VGlsZShDQUNGTGF5ZXJSZWYsIENHQ29udGV4dFJlZik7
CisgICAgQ0dTaXplIGNvbnN0cmFpbmVkU2l6ZShjb25zdCBDR1NpemUmKSBjb25zdDsKKyAgICB2
b2lkIGFkZFRpbGUoKTsKKyAgICB2b2lkIHJlbW92ZVRpbGUoKTsKKyAgICBDQUNGTGF5ZXJSZWYg
dGlsZUF0SW5kZXgoaW50KTsKKyAgICBpbnQgdGlsZUNvdW50KCkgY29uc3Q7CisgICAgdm9pZCB1
cGRhdGVUaWxlcygpOworCisgICAgUGxhdGZvcm1DQUxheWVyKiBtX293bmVyOworCisgICAgQ0dT
aXplIG1fdGlsZVNpemU7CisgICAgQ0dTaXplIG1fY29uc3RyYWluZWRTaXplOworICAgIFJldGFp
blB0cjxDQUNGTGF5ZXJSZWY+IG1fdGlsZVBhcmVudDsKK307CisKK30KKworI2VuZGlmIC8vIFVT
RShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKworI2VuZGlmIC8vIFBsYXRmb3JtQ0FMYXllcldp
bkludGVybmFsX2gKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNz
Q29udGV4dENHV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9HcmFwaGljc0NvbnRleHRDR1dpbi5jcHAJKHJldmlzaW9uIDc1MjEzKQorKysgV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0Q0dXaW4uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00Myw2ICs0MywxMCBAQCBzdGF0aWMgQ0dDb250ZXh0UmVmIENHQ29udGV4dFdp
dGhIREMoSERDCiAgICAgQklUTUFQIGluZm87CiAKICAgICBHZXRPYmplY3QoYml0bWFwLCBzaXpl
b2YoaW5mbyksICZpbmZvKTsKKworICAgIGlmIChpbmZvLmJtQml0c1BpeGVsICE9IDMyKQorICAg
ICAgICByZXR1cm4gMDsKKwogICAgIEFTU0VSVChpbmZvLmJtQml0c1BpeGVsID09IDMyKTsKIAog
ICAgIENHQml0bWFwSW5mbyBiaXRtYXBJbmZvID0ga0NHQml0bWFwQnl0ZU9yZGVyMzJMaXR0bGUg
fCAoaGFzQWxwaGEgPyBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0IDoga0NHSW1hZ2VB
bHBoYU5vbmVTa2lwRmlyc3QpOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
TWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldp
bmRvdy5jcHAJKHJldmlzaW9uIDc1MjEzKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTkwLDcgKzkwLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93
OgogfQogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotdm9pZCBNZWRpYVBsYXll
clByaXZhdGVGdWxsc2NyZWVuV2luZG93OjpzZXRSb290Q2hpbGRMYXllcihQYXNzUmVmUHRyPFdL
Q0FDRkxheWVyPiByb290Q2hpbGQpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5X
aW5kb3c6OnNldFJvb3RDaGlsZExheWVyKFBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiByb290
Q2hpbGQpCiB7CiAgICAgaWYgKG1fcm9vdENoaWxkID09IHJvb3RDaGlsZCkKICAgICAgICAgcmV0
dXJuOwpAQCAtMTA0LDcgKzEwNCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVl
bldpbmRvdzoKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9sYXllclJlbmRlcmVyLT5zZXRSb290
Q2hpbGRMYXllcihtX3Jvb3RDaGlsZC5nZXQoKSk7Ci0gICAgV0tDQUNGTGF5ZXIqIHJvb3RMYXll
ciA9IG1fcm9vdENoaWxkLT5yb290TGF5ZXIoKTsKKyAgICBQbGF0Zm9ybUNBTGF5ZXIqIHJvb3RM
YXllciA9IG1fcm9vdENoaWxkLT5yb290TGF5ZXIoKTsKICAgICBDR1JlY3Qgcm9vdEJvdW5kcyA9
IG1fcm9vdENoaWxkLT5yb290TGF5ZXIoKS0+Ym91bmRzKCk7CiAgICAgbV9yb290Q2hpbGQtPnNl
dEZyYW1lKHJvb3RCb3VuZHMpOwogICAgIG1fcm9vdENoaWxkLT5zZXRCYWNrZ3JvdW5kQ29sb3Io
Q0dDb2xvckdldENvbnN0YW50Q29sb3Ioa0NHQ29sb3JCbGFjaykpOwpAQCAtMTYwLDcgKzE2MCw3
IEBAIExSRVNVTFQgTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmQKICAgICAgICAgICAg
ICAgICBicmVhazsKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgICAgICAg
ICBtX2xheWVyUmVuZGVyZXItPnJlc2l6ZSgpOwotICAgICAgICAgICAgV0tDQUNGTGF5ZXIqIHJv
b3RMYXllciA9IG1fcm9vdENoaWxkLT5yb290TGF5ZXIoKTsKKyAgICAgICAgICAgIFBsYXRmb3Jt
Q0FMYXllciogcm9vdExheWVyID0gbV9yb290Q2hpbGQtPnJvb3RMYXllcigpOwogICAgICAgICAg
ICAgQ0dSZWN0IHJvb3RCb3VuZHMgPSBtX3Jvb3RDaGlsZC0+cm9vdExheWVyKCktPmJvdW5kcygp
OwogICAgICAgICAgICAgbV9yb290Q2hpbGQtPnNldEZyYW1lKHJvb3RCb3VuZHMpOwogICAgICAg
ICAgICAgbV9yb290Q2hpbGQtPnNldE5lZWRzTGF5b3V0KCk7CkluZGV4OiBXZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2
YXRlRnVsbHNjcmVlbldpbmRvdy5oCShyZXZpc2lvbiA3NTIxMykKKysrIFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3cuaAkod29y
a2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNyBAQAogI2RlZmluZSBNZWRpYVBsYXllclByaXZhdGVG
dWxsc2NyZWVuV2luZG93X2gKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLSNp
bmNsdWRlICJXS0NBQ0ZMYXllci5oIgorI2luY2x1ZGUgIlBsYXRmb3JtQ0FMYXllci5oIgogI2lu
Y2x1ZGUgIldLQ0FDRkxheWVyUmVuZGVyZXIuaCIKICNlbmRpZgogI2luY2x1ZGUgPHd0Zi9Pd25Q
dHIuaD4KQEAgLTYxLDggKzYxLDggQEAgcHVibGljOgogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01Q
T1NJVElORykKICAgICBXS0NBQ0ZMYXllclJlbmRlcmVyKiBsYXllclJlbmRlcmVyKCkgY29uc3Qg
eyByZXR1cm4gbV9sYXllclJlbmRlcmVyLmdldCgpOyB9CiAKLSAgICBXS0NBQ0ZMYXllciogcm9v
dENoaWxkTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3Jvb3RDaGlsZC5nZXQoKTsgfQotICAgIHZv
aWQgc2V0Um9vdENoaWxkTGF5ZXIoUGFzc1JlZlB0cjxXS0NBQ0ZMYXllcj4pOworICAgIFBsYXRm
b3JtQ0FMYXllciogcm9vdENoaWxkTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3Jvb3RDaGlsZC5n
ZXQoKTsgfQorICAgIHZvaWQgc2V0Um9vdENoaWxkTGF5ZXIoUGFzc1JlZlB0cjxQbGF0Zm9ybUNB
TGF5ZXI+KTsKICNlbmRpZgogCiBwcml2YXRlOgpAQCAtNzIsNyArNzIsNyBAQCBwcml2YXRlOgog
ICAgIE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5DbGllbnQqIG1fY2xpZW50OwogI2lmIFVT
RShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICBPd25QdHI8V0tDQUNGTGF5ZXJSZW5kZXJl
cj4gbV9sYXllclJlbmRlcmVyOwotICAgIFJlZlB0cjxXS0NBQ0ZMYXllcj4gbV9yb290Q2hpbGQ7
CisgICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gbV9yb290Q2hpbGQ7CiAjZW5kaWYKICAgICBI
V05EIG1faHduZDsKIH07CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRp
YVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVW
aXN1YWxDb250ZXh0LmNwcAkocmV2aXNpb24gNzUyMTMpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTcsOCArNTcsNyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0hhc2guaD4KIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLSNpbmNsdWRlICJH
cmFwaGljc0xheWVyQ0FDRi5oIgotI2luY2x1ZGUgIldLQ0FDRkxheWVyLmgiCisjaW5jbHVkZSAi
UGxhdGZvcm1DQUxheWVyLmgiCiAjaW5jbHVkZSAiV0tDQUltYWdlUXVldWUuaCIKICNlbmRpZgog
CkBAIC04NSw0OCArODQsNDkgQEAgcHJpdmF0ZToKIH07CiAKICNpZiBVU0UoQUNDRUxFUkFURURf
Q09NUE9TSVRJTkcpCi0vLyBJbnRlcmZhY2UgZGVjbGFyYXRpb24gZm9yIE1lZGlhUGxheWVyUHJp
dmF0ZVF1aWNrVGltZVZpc3VhbENvbnRleHQncyBHcmFwaGljc0xheWVyQ2xpZW50IGFnZ3JlZ2F0
ZQotY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dDo6TGF5ZXJD
bGllbnQgOiBwdWJsaWMgR3JhcGhpY3NMYXllckNsaWVudCB7CitjbGFzcyBNZWRpYVBsYXllclBy
aXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0OjpMYXllckNsaWVudCA6IHB1YmxpYyBQbGF0Zm9y
bUNBTGF5ZXJDbGllbnQgewogcHVibGljOgogICAgIExheWVyQ2xpZW50KE1lZGlhUGxheWVyUHJp
dmF0ZVF1aWNrVGltZVZpc3VhbENvbnRleHQqIHBhcmVudCkgOiBtX3BhcmVudChwYXJlbnQpIHt9
CiAgICAgdmlydHVhbCB+TGF5ZXJDbGllbnQoKSB7IG1fcGFyZW50ID0gMDsgfQotICAgIHZpcnR1
YWwgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqLCBHcmFwaGljc0NvbnRl
eHQmLCBHcmFwaGljc0xheWVyUGFpbnRpbmdQaGFzZSwgY29uc3QgSW50UmVjdCYgaW5DbGlwKTsK
LSAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5QW5pbWF0aW9uU3RhcnRlZChjb25zdCBHcmFwaGljc0xh
eWVyKiwgZG91YmxlIHRpbWUpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBub3RpZnlTeW5jUmVxdWly
ZWQoY29uc3QgR3JhcGhpY3NMYXllciopIHsgfQotICAgIHZpcnR1YWwgYm9vbCBzaG93RGVidWdC
b3JkZXJzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgc2hvd1Jl
cGFpbnRDb3VudGVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLXByaXZhdGU6Ci0gICAgTWVk
aWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dCogbV9wYXJlbnQ7Ci19OwogCi1j
bGFzcyBNZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0OjpMYXlvdXRDbGll
bnQgOiBwdWJsaWMgV0tDQUNGTGF5ZXJMYXlvdXRDbGllbnQgewotcHVibGljOgotICAgIExheW91
dENsaWVudChNZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0KiBwYXJlbnQp
IDogbV9wYXJlbnQocGFyZW50KSB7fQotICAgIHZpcnR1YWwgdm9pZCBsYXlvdXRTdWJsYXllcnNP
ZkxheWVyKFdLQ0FDRkxheWVyKik7CisgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQ0FMYXllckxh
eW91dFN1YmxheWVyc09mTGF5ZXIoUGxhdGZvcm1DQUxheWVyKik7CisgICAgdmlydHVhbCBib29s
IHBsYXRmb3JtQ0FMYXllclJlc3BvbmRzVG9MYXlvdXRDaGFuZ2VzKCkgY29uc3QgeyByZXR1cm4g
dHJ1ZTsgfQorCisgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQ0FMYXllckFuaW1hdGlvblN0YXJ0
ZWQoQ0ZUaW1lSW50ZXJ2YWwgYmVnaW5UaW1lKSB7IH0KKyAgICB2aXJ0dWFsIEdyYXBoaWNzTGF5
ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBwbGF0Zm9ybUNBTGF5ZXJDb250
ZW50c09yaWVudGF0aW9uKCkgY29uc3QgeyByZXR1cm4gR3JhcGhpY3NMYXllcjo6Q29tcG9zaXRp
bmdDb29yZGluYXRlc0JvdHRvbVVwOyB9CisgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQ0FMYXll
clBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgaW5DbGlwKSB7
IH0KKyAgICB2aXJ0dWFsIGJvb2wgcGxhdGZvcm1DQUxheWVyU2hvd0RlYnVnQm9yZGVycygpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIHBsYXRmb3JtQ0FMYXllclNo
b3dSZXBhaW50Q291bnRlcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBp
bnQgcGxhdGZvcm1DQUxheWVySW5jcmVtZW50UmVwYWludENvdW50KCkgeyByZXR1cm4gMDsgfQor
CisgICAgdmlydHVhbCBib29sIHBsYXRmb3JtQ0FMYXllckNvbnRlbnRzT3BhcXVlKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgcGxhdGZvcm1DQUxheWVyRHJhd3ND
b250ZW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcGxhdGZv
cm1DQUxheWVyTGF5ZXJEaWREaXNwbGF5KFBsYXRmb3JtTGF5ZXIqKSB7IH0KKwogcHJpdmF0ZToK
ICAgICBNZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0KiBtX3BhcmVudDsK
IH07CiAKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dDo6TGF5
b3V0Q2xpZW50OjpsYXlvdXRTdWJsYXllcnNPZkxheWVyKFdLQ0FDRkxheWVyKiBsYXllcikKK3Zv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dDo6TGF5ZXJDbGllbnQ6
OnBsYXRmb3JtQ0FMYXllckxheW91dFN1YmxheWVyc09mTGF5ZXIoUGxhdGZvcm1DQUxheWVyKiBs
YXllcikKIHsKICAgICBBU1NFUlQobV9wYXJlbnQpOwotICAgIEFTU0VSVChtX3BhcmVudC0+bV90
cmFuc2Zvcm1MYXllci0+cGxhdGZvcm1MYXllcigpID09IGxheWVyKTsKKyAgICBBU1NFUlQobV9w
YXJlbnQtPm1fdHJhbnNmb3JtTGF5ZXIgPT0gbGF5ZXIpOwogCi0gICAgQ0dTaXplIHBhcmVudFNp
emUgPSBsYXllci0+Ym91bmRzKCkuc2l6ZTsKLSAgICBDR1NpemUgbmF0dXJhbFNpemUgPSBtX3Bh
cmVudC0+bmF0dXJhbFNpemUoKTsKKyAgICBGbG9hdFNpemUgcGFyZW50U2l6ZSA9IGxheWVyLT5i
b3VuZHMoKS5zaXplKCk7CisgICAgRmxvYXRTaXplIG5hdHVyYWxTaXplID0gbV9wYXJlbnQtPm5h
dHVyYWxTaXplKCk7CiAKICAgICAvLyBDYWxjdWxhdGUgdGhlIHJhdGlvIG9mIHRoZXNlIHR3byBz
aXplcyBhbmQgdXNlIHRoYXQgcmF0aW8gdG8gc2NhbGUgdGhlIHF0VmlkZW9MYXllcjoKLSAgICBD
R1NpemUgcmF0aW8gPSBDR1NpemVNYWtlKHBhcmVudFNpemUud2lkdGggLyBuYXR1cmFsU2l6ZS53
aWR0aCwgcGFyZW50U2l6ZS5oZWlnaHQgLyBuYXR1cmFsU2l6ZS5oZWlnaHQpOworICAgIEZsb2F0
U2l6ZSByYXRpbyhwYXJlbnRTaXplLndpZHRoKCkgLyBuYXR1cmFsU2l6ZS53aWR0aCgpLCBwYXJl
bnRTaXplLmhlaWdodCgpIC8gbmF0dXJhbFNpemUuaGVpZ2h0KCkpOwogCiAgICAgaW50IHZpZGVv
V2lkdGggPSAwOwogICAgIGludCB2aWRlb0hlaWdodCA9IDA7CiAgICAgbV9wYXJlbnQtPm1fbW92
aWUtPmdldE5hdHVyYWxTaXplKHZpZGVvV2lkdGgsIHZpZGVvSGVpZ2h0KTsKLSAgICBDR1JlY3Qg
dmlkZW9Cb3VuZHMgPSBDR1JlY3RNYWtlKDAsIDAsIHZpZGVvV2lkdGggKiByYXRpby53aWR0aCwg
dmlkZW9IZWlnaHQgKiByYXRpby5oZWlnaHQpOwotICAgIENHUG9pbnQgdmlkZW9BbmNob3IgPSBt
X3BhcmVudC0+bV9xdFZpZGVvTGF5ZXItPmFuY2hvclBvaW50KCk7CisgICAgRmxvYXRSZWN0IHZp
ZGVvQm91bmRzKDAsIDAsIHZpZGVvV2lkdGggKiByYXRpby53aWR0aCgpLCB2aWRlb0hlaWdodCAq
IHJhdGlvLmhlaWdodCgpKTsKKyAgICBGbG9hdFBvaW50M0QgdmlkZW9BbmNob3IgPSBtX3BhcmVu
dC0+bV9xdFZpZGVvTGF5ZXItPmFuY2hvclBvaW50KCk7CiAKICAgICAvLyBDYWxjdWxhdGUgdGhl
IG5ldyBwb3NpdGlvbiBiYXNlZCBvbiB0aGUgcGFyZW50J3Mgc2l6ZToKLSAgICBDR1BvaW50IHBv
c2l0aW9uID0gQ0dQb2ludE1ha2UocGFyZW50U2l6ZS53aWR0aCAqIDAuNSAtIHZpZGVvQm91bmRz
LnNpemUud2lkdGggKiAoMC41IC0gdmlkZW9BbmNob3IueCksCi0gICAgICAgIHBhcmVudFNpemUu
aGVpZ2h0ICogMC41IC0gdmlkZW9Cb3VuZHMuc2l6ZS5oZWlnaHQgKiAoMC41IC0gdmlkZW9BbmNo
b3IueSkpOyAKKyAgICBGbG9hdFBvaW50IHBvc2l0aW9uKHBhcmVudFNpemUud2lkdGgoKSAqIDAu
NSAtIHZpZGVvQm91bmRzLndpZHRoKCkgKiAoMC41IC0gdmlkZW9BbmNob3IueCgpKSwKKyAgICAg
ICAgcGFyZW50U2l6ZS5oZWlnaHQoKSAqIDAuNSAtIHZpZGVvQm91bmRzLmhlaWdodCgpICogKDAu
NSAtIHZpZGVvQW5jaG9yLnkoKSkpOyAKIAogICAgIG1fcGFyZW50LT5tX3F0VmlkZW9MYXllci0+
c2V0Qm91bmRzKHZpZGVvQm91bmRzKTsKICAgICBtX3BhcmVudC0+bV9xdFZpZGVvTGF5ZXItPnNl
dFBvc2l0aW9uKHBvc2l0aW9uKTsKQEAgLTE3MSw3ICsxNzEsNiBAQCBNZWRpYVBsYXllclByaXZh
dGVRdWlja1RpbWVWaXN1YWxDb250ZXh0CiAgICAgLCBtX21vdmllQ2xpZW50KG5ldyBNZWRpYVBs
YXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0OjpNb3ZpZUNsaWVudCh0aGlzKSkKICNp
ZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgLCBtX2xheWVyQ2xpZW50KG5ldyBN
ZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0OjpMYXllckNsaWVudCh0aGlz
KSkKLSAgICAsIG1fbGF5b3V0Q2xpZW50KG5ldyBNZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVW
aXN1YWxDb250ZXh0OjpMYXlvdXRDbGllbnQodGhpcykpCiAgICAgLCBtX21vdmllVHJhbnNmb3Jt
KENHQWZmaW5lVHJhbnNmb3JtSWRlbnRpdHkpCiAjZW5kaWYKICAgICAsIG1fdmlzdWFsQ29udGV4
dENsaWVudChuZXcgTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dDo6Vmlz
dWFsQ29udGV4dENsaWVudCh0aGlzKSkKQEAgLTIwMyw4ICsyMDIsOCBAQCBQbGF0Zm9ybU1lZGlh
IE1lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltCiAgICAgcC5tZWRpYS5xdE1vdmllVmlzdWFsQ29u
dGV4dCA9IG1fdmlzdWFsQ29udGV4dC5nZXQoKTsKICAgICByZXR1cm4gcDsKIH0KLQogI2lmIFVT
RShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKwogUGxhdGZvcm1MYXllciogTWVkaWFQbGF5ZXJQ
cml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dDo6cGxhdGZvcm1MYXllcigpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIG1fdHJhbnNmb3JtTGF5ZXIgPyBtX3RyYW5zZm9ybUxheWVyLT5wbGF0Zm9ybUxh
eWVyKCkgOiAwOwpAQCAtODY2LDcgKzg2NSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUXVp
Y2tUaW1lVmlzdWFsQ28KICAgICAgICAgaWYgKCFidWZmZXIucGl4ZWxCdWZmZXJSZWYoKSkKICAg
ICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBXS0NBQ0ZMYXllciogbGF5ZXIgPSBtX3F0Vmlk
ZW9MYXllci5nZXQoKTsKKyAgICAgICAgUGxhdGZvcm1DQUxheWVyKiBsYXllciA9IG1fcXRWaWRl
b0xheWVyLmdldCgpOwogCiAgICAgICAgIGlmICghYnVmZmVyLmxvY2tCYXNlQWRkcmVzcygpKSB7
CiAgICAgICAgICAgICBpZiAocmVxdWlyZWREbGxzQXZhaWxhYmxlKCkpIHsKQEAgLTkwMCw3ICs4
OTksNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvCiAgICAgICAg
ICAgICB9CiAKICAgICAgICAgICAgIGJ1ZmZlci51bmxvY2tCYXNlQWRkcmVzcygpOwotICAgICAg
ICAgICAgbGF5ZXItPnJvb3RMYXllcigpLT5zZXROZWVkc1JlbmRlcigpOworICAgICAgICAgICAg
bGF5ZXItPnNldE5lZWRzQ29tbWl0KCk7CiAgICAgICAgIH0KICAgICB9IGVsc2UKICNlbmRpZgpA
QCAtMTE3OSwyMCArMTE3OCwxNiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZp
c3VhbENvCiAgICAgaWYgKCFtX21vdmllIHx8IG1fcXRWaWRlb0xheWVyKQogICAgICAgICByZXR1
cm47CiAKLSAgICAvLyBDcmVhdGUgYSBHcmFwaGljc0xheWVyIHRoYXQgd29uJ3QgYmUgaW5zZXJ0
ZWQgZGlyZWN0bHkgaW50byB0aGUgcmVuZGVyIHRyZWUsIGJ1dCB3aWxsIHVzZWQgCi0gICAgLy8g
YXMgYSB3cmFwcGVyIGZvciBhIFdLQ0FDRkxheWVyIHdoaWNoIGdldHMgaW5zZXJ0ZWQgYXMgdGhl
IGNvbnRlbnQgbGF5ZXIgb2YgdGhlIHZpZGVvIAotICAgIC8vIHJlbmRlcmVyJ3MgR3JhcGhpY3NM
YXllci4KLSAgICBtX3RyYW5zZm9ybUxheWVyLnNldChuZXcgR3JhcGhpY3NMYXllckNBQ0YobV9s
YXllckNsaWVudC5nZXQoKSkpOworICAgIC8vIENyZWF0ZSBhIFBsYXRmb3JtQ0FMYXllciB3aGlj
aCB3aWxsIHRyYW5zZm9ybSB0aGUgY29udGVudHMgb2YgdGhlIHZpZGVvIGxheWVyCisgICAgLy8g
d2hpY2ggaXMgaW4gbV9xdFZpZGVvTGF5ZXIuCisgICAgbV90cmFuc2Zvcm1MYXllciA9IFBsYXRm
b3JtQ0FMYXllcjo6Y3JlYXRlKFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlTGF5ZXIsIG1fbGF5
ZXJDbGllbnQuZ2V0KCkpOwogICAgIGlmICghbV90cmFuc2Zvcm1MYXllcikKICAgICAgICAgcmV0
dXJuOwogCi0gICAgLy8gTWFyayB0aGUgbGF5ZXIgYXMgZHJhd2luZyBpdHNlbGYsIGFuY2hvcmVk
IGluIHRoZSB0b3AgbGVmdCwgYW5kIGJvdHRvbS11cC4KLSAgICBtX3RyYW5zZm9ybUxheWVyLT5z
ZXREcmF3c0NvbnRlbnQoZmFsc2UpOworICAgIC8vIE1hcmsgdGhlIGxheWVyIGFzIGFuY2hvcmVk
IGluIHRoZSB0b3AgbGVmdC4KICAgICBtX3RyYW5zZm9ybUxheWVyLT5zZXRBbmNob3JQb2ludChG
bG9hdFBvaW50M0QoKSk7Ci0gICAgbV90cmFuc2Zvcm1MYXllci0+c2V0Q29udGVudHNPcmllbnRh
dGlvbihHcmFwaGljc0xheWVyOjpDb21wb3NpdGluZ0Nvb3JkaW5hdGVzQm90dG9tVXApOwotICAg
IG1fdHJhbnNmb3JtTGF5ZXItPnBsYXRmb3JtTGF5ZXIoKS0+c2V0TGF5b3V0Q2xpZW50KG1fbGF5
b3V0Q2xpZW50LmdldCgpKTsKIAotICAgIG1fcXRWaWRlb0xheWVyID0gV0tDQUNGTGF5ZXI6OmNy
ZWF0ZShXS0NBQ0ZMYXllcjo6TGF5ZXIpOworICAgIG1fcXRWaWRlb0xheWVyID0gUGxhdGZvcm1D
QUxheWVyOjpjcmVhdGUoUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVMYXllciwgMCk7CiAgICAg
aWYgKCFtX3F0VmlkZW9MYXllcikKICAgICAgICAgcmV0dXJuOwogCkBAIC0xMjA5LDggKzEyMDQs
OCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvCiAjaWZuZGVmIE5E
RUJVRwogICAgIG1fcXRWaWRlb0xheWVyLT5zZXROYW1lKCJWaWRlbyBsYXllciIpOwogI2VuZGlm
Ci0gICAgbV90cmFuc2Zvcm1MYXllci0+cGxhdGZvcm1MYXllcigpLT5hZGRTdWJsYXllcihtX3F0
VmlkZW9MYXllci5nZXQoKSk7Ci0gICAgbV90cmFuc2Zvcm1MYXllci0+cGxhdGZvcm1MYXllcigp
LT5zZXROZWVkc0xheW91dCgpOworICAgIG1fdHJhbnNmb3JtTGF5ZXItPmFwcGVuZFN1YmxheWVy
KG1fcXRWaWRlb0xheWVyLmdldCgpKTsKKyAgICBtX3RyYW5zZm9ybUxheWVyLT5zZXROZWVkc0xh
eW91dCgpOwogICAgIC8vIFRoZSBsYXllciB3aWxsIGdldCBob29rZWQgdXAgdmlhIFJlbmRlckxh
eWVyQmFja2luZzo6dXBkYXRlR3JhcGhpY3NMYXllckNvbmZpZ3VyYXRpb24oKS4KICNlbmRpZgog
CkBAIC0xMjM4LDEwICsxMjMzLDYgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVW
aXN1YWxDbwogfQogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotdm9pZCBNZWRp
YVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0OjpMYXllckNsaWVudDo6cGFpbnRD
b250ZW50cyhjb25zdCBHcmFwaGljc0xheWVyKiwgR3JhcGhpY3NDb250ZXh0JiwgR3JhcGhpY3NM
YXllclBhaW50aW5nUGhhc2UsIGNvbnN0IEludFJlY3QmIGluQ2xpcCkKLXsKLX0KLQogYm9vbCBN
ZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0OjpzdXBwb3J0c0FjY2VsZXJh
dGVkUmVuZGVyaW5nKCkgY29uc3QKIHsKICAgICByZXR1cm4gaXNSZWFkeUZvclJlbmRlcmluZygp
OwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRl
UXVpY2tUaW1lVmlzdWFsQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvbnRleHQuaAko
cmV2aXNpb24gNzUyMTMpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBs
YXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4
LDcgKzI4LDYgQEAKIAogI2lmIEVOQUJMRShWSURFTykKIAotI2luY2x1ZGUgIkdyYXBoaWNzTGF5
ZXIuaCIKICNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGUuaCIKICNpbmNsdWRlICJUaW1lci5o
IgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CkBAIC01MSw3ICs1MCw3IEBAIGNsYXNzIEludFNp
emU7CiBjbGFzcyBJbnRSZWN0OwogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQot
Y2xhc3MgV0tDQUNGTGF5ZXI7CitjbGFzcyBQbGF0Zm9ybUNBTGF5ZXI7CiBjbGFzcyBXS0NBSW1h
Z2VRdWV1ZTsKICNlbmRpZgogCkBAIC02Nyw4ICs2Niw5IEBAIHByaXZhdGU6CiAgICAgdmlydHVh
bCBib29sIHN1cHBvcnRzRnVsbHNjcmVlbigpIGNvbnN0OwogICAgIHZpcnR1YWwgUGxhdGZvcm1N
ZWRpYSBwbGF0Zm9ybU1lZGlhKCkgY29uc3Q7CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lU
SU5HKQotICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdDsKKyAgICB2aXJ0
dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdDsKICNlbmRpZgorCiAgICAg
SW50U2l6ZSBuYXR1cmFsU2l6ZSgpIGNvbnN0OwogICAgIGJvb2wgaGFzVmlkZW8oKSBjb25zdDsK
ICAgICBib29sIGhhc0F1ZGlvKCkgY29uc3Q7CkBAIC0xNjEsMTAgKzE2MSw2IEBAIHByaXZhdGU6
CiAgICAgY2xhc3MgTGF5ZXJDbGllbnQ7CiAgICAgZnJpZW5kIGNsYXNzIExheWVyQ2xpZW50Owog
ICAgIE93blB0cjxMYXllckNsaWVudD4gbV9sYXllckNsaWVudDsKLQotICAgIGNsYXNzIExheW91
dENsaWVudDsKLSAgICBmcmllbmQgY2xhc3MgTGF5b3V0Q2xpZW50OwotICAgIE93blB0cjxMYXlv
dXRDbGllbnQ+IG1fbGF5b3V0Q2xpZW50OwogI2VuZGlmCiAKICAgICBjbGFzcyBWaXN1YWxDb250
ZXh0Q2xpZW50OwpAQCAtMTc4LDggKzE3NCw4IEBAIHByaXZhdGU6CiAgICAgTWVkaWFQbGF5ZXIq
IG1fcGxheWVyOwogICAgIFJlZlB0cjxRVE1vdmllPiBtX21vdmllOwogI2lmIFVTRShBQ0NFTEVS
QVRFRF9DT01QT1NJVElORykKLSAgICBSZWZQdHI8V0tDQUNGTGF5ZXI+IG1fcXRWaWRlb0xheWVy
OwotICAgIE93blB0cjxHcmFwaGljc0xheWVyPiBtX3RyYW5zZm9ybUxheWVyOworICAgIFJlZlB0
cjxQbGF0Zm9ybUNBTGF5ZXI+IG1fcXRWaWRlb0xheWVyOworICAgIFJlZlB0cjxQbGF0Zm9ybUNB
TGF5ZXI+IG1fdHJhbnNmb3JtTGF5ZXI7CiAgICAgT3duUHRyPFdLQ0FJbWFnZVF1ZXVlPiBtX2lt
YWdlUXVldWU7CiAgICAgT3duUHRyPFFURGVjb21wcmVzc2lvblNlc3Npb24+IG1fZGVjb21wcmVz
c2lvblNlc3Npb247CiAgICAgQ0dBZmZpbmVUcmFuc2Zvcm0gbV9tb3ZpZVRyYW5zZm9ybTsgCklu
ZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVRdWlj
a1RpbWVXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL1dLQ0FDRkxheWVyUmVuZGVyZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL1dLQ0FDRkxheWVyUmVuZGVyZXIuY3BwCShyZXZpc2lvbiA3NTIxMykK
KysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1dLQ0FDRkxheWVyUmVuZGVyZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMywxMCArMzMsMTIgQEAKIAogI2luY2x1ZGUgIldLQ0FDRkxh
eWVyUmVuZGVyZXIuaCIKIAorI2luY2x1ZGUgIlBsYXRmb3JtQ0FMYXllci5oIgogI2luY2x1ZGUg
IldLQ0FDRkNvbnRleHRGbHVzaGVyLmgiCi0jaW5jbHVkZSAiV0tDQUNGTGF5ZXIuaCIKICNpbmNs
dWRlICJXZWJDb3JlSW5zdGFuY2VIYW5kbGUuaCIKICNpbmNsdWRlIDxXZWJLaXRTeXN0ZW1JbnRl
cmZhY2UvV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CisjaW5jbHVkZSA8bGltaXRzLmg+CisjaW5j
bHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNs
dWRlIDx3dGYvT3duQXJyYXlQdHIuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CkBAIC00NSw2
ICs0Nyw4IEBACiAjaW5jbHVkZSA8ZDNkOS5oPgogI2luY2x1ZGUgPGQzZHg5Lmg+CiAKK3VzaW5n
IG5hbWVzcGFjZSBzdGQ7CisKICNwcmFnbWEgY29tbWVudChsaWIsICJkM2Q5IikKICNwcmFnbWEg
Y29tbWVudChsaWIsICJkM2R4OSIpCiAjaWZkZWYgREVCVUdfQUxMCkBAIC03OSwzMyArODMsNiBA
QCBpbmxpbmUgc3RhdGljIENHUmVjdCB3aW5SZWN0VG9DR1JlY3QoUkVDCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotLy8gU3ViY2xhc3Mgb2YgV0tDQUNGTGF5ZXIgdG8gYWxsb3cgdGhlIHJvb3Qg
bGF5ZXIgdG8gaGF2ZSBhIGJhY2sgcG9pbnRlciB0byB0aGUgbGF5ZXIgcmVuZGVyZXIKLS8vIHRv
IGZpcmUgb2ZmIGEgZHJhdwotY2xhc3MgV0tDQUNGUm9vdExheWVyIDogcHVibGljIFdLQ0FDRkxh
eWVyIHsKLXB1YmxpYzoKLSAgICBXS0NBQ0ZSb290TGF5ZXIoV0tDQUNGTGF5ZXJSZW5kZXJlciog
cmVuZGVyZXIpCi0gICAgICAgIDogV0tDQUNGTGF5ZXIoV0tDQUNGTGF5ZXI6OkxheWVyKQotICAg
IHsKLSAgICAgICAgbV9yZW5kZXJlciA9IHJlbmRlcmVyOwotICAgIH0KLQotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFdLQ0FDRlJvb3RMYXllcj4gY3JlYXRlKFdLQ0FDRkxheWVyUmVuZGVyZXIqIHJl
bmRlcmVyKQotICAgIHsKLSAgICAgICAgaWYgKCFXS0NBQ0ZMYXllclJlbmRlcmVyOjphY2NlbGVy
YXRlZENvbXBvc2l0aW5nQXZhaWxhYmxlKCkpCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXS0NBQ0ZSb290TGF5ZXIocmVuZGVyZXIpKTsKLSAgICB9
Ci0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNSZW5kZXIoKSB7IG1fcmVuZGVyZXItPmxheWVy
VHJlZURpZENoYW5nZSgpOyB9Ci0KLSAgICAvLyBPdmVybG9hZCB0aGlzIHRvIGF2b2lkIGNhbGxp
bmcgc2V0TmVlZHNEaXNwbGF5IG9uIHRoZSBsYXllciwgd2hpY2ggd291bGQgb3ZlcnJpZGUgdGhl
IGNvbnRlbnRzCi0gICAgLy8gd2UgaGF2ZSBwbGFjZWQgb24gdGhlIHJvb3QgbGF5ZXIuCi0gICAg
dmlydHVhbCB2b2lkIHNldE5lZWRzRGlzcGxheShjb25zdCBDR1JlY3QqIGRpcnR5UmVjdCkgeyBz
ZXROZWVkc0NvbW1pdCgpOyB9Ci0KLXByaXZhdGU6Ci0gICAgV0tDQUNGTGF5ZXJSZW5kZXJlciog
bV9yZW5kZXJlcjsKLX07Ci0KIHN0YXRpYyBEM0RQUkVTRU5UX1BBUkFNRVRFUlMgaW5pdGlhbFBy
ZXNlbnRhdGlvblBhcmFtZXRlcnMoKQogewogICAgIEQzRFBSRVNFTlRfUEFSQU1FVEVSUyBwYXJh
bWV0ZXJzID0gezB9OwpAQCAtMjA2LDEzICsxODMsMTcgQEAgUGFzc093blB0cjxXS0NBQ0ZMYXll
clJlbmRlcmVyPiBXS0NBQ0ZMYQogV0tDQUNGTGF5ZXJSZW5kZXJlcjo6V0tDQUNGTGF5ZXJSZW5k
ZXJlcihXS0NBQ0ZMYXllclJlbmRlcmVyQ2xpZW50KiBjbGllbnQpCiAgICAgOiBtX2NsaWVudChj
bGllbnQpCiAgICAgLCBtX21pZ2h0QmVBYmxlVG9DcmVhdGVEZXZpY2VMYXRlcih0cnVlKQotICAg
ICwgbV9yb290TGF5ZXIoV0tDQUNGUm9vdExheWVyOjpjcmVhdGUodGhpcykpCisgICAgLCBtX3Jv
b3RMYXllcihQbGF0Zm9ybUNBTGF5ZXI6OmNyZWF0ZShQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlw
ZVJvb3RMYXllciwgMCkpCiAgICAgLCBtX2NvbnRleHQod2tDQUNGQ29udGV4dENyZWF0ZSgpKQog
ICAgICwgbV9ob3N0V2luZG93KDApCiAgICAgLCBtX3JlbmRlclRpbWVyKHRoaXMsICZXS0NBQ0ZM
YXllclJlbmRlcmVyOjpyZW5kZXJUaW1lckZpcmVkKQogICAgICwgbV9iYWNraW5nU3RvcmVEaXJ0
eShmYWxzZSkKICAgICAsIG1fbXVzdFJlc2V0TG9zdERldmljZUJlZm9yZVJlbmRlcmluZyhmYWxz
ZSkKKyAgICAsIG1fc3luY0xheWVyQ2hhbmdlcyhmYWxzZSkKIHsKKyAgICAvLyBQb2ludCB0aGUg
Q0FDRkNvbnRleHQgdG8gdGhpcworICAgIHdrQ0FDRkNvbnRleHRTZXRVc2VyRGF0YShtX2NvbnRl
eHQsIHRoaXMpOworCiAgICAgLy8gVW5kZXIgdGhlIHJvb3QgbGF5ZXIsIHdlIGhhdmUgYSBjbGlw
cGluZyBsYXllciB0byBjbGlwIHRoZSBjb250ZW50LAogICAgIC8vIHRoYXQgY29udGFpbnMgYSBz
Y3JvbGwgbGF5ZXIgdGhhdCB3ZSB1c2UgZm9yIHNjcm9sbGluZyB0aGUgY29udGVudC4KICAgICAv
LyBUaGUgcm9vdCBsYXllciBpcyB0aGUgc2l6ZSBvZiB0aGUgY2xpZW50IGFyZWEgb2YgdGhlIHdp
bmRvdy4KQEAgLTIyMyw3ICsyMDQsNyBAQCBXS0NBQ0ZMYXllclJlbmRlcmVyOjpXS0NBQ0ZMYXll
clJlbmRlcmVyCiAgICAgLy8gU2Nyb2xsaW5nIHdpbGwgYWZmZWN0IG9ubHkgdGhlIHBvc2l0aW9u
IG9mIHRoZSBzY3JvbGwgbGF5ZXIgd2l0aG91dCBhZmZlY3RpbmcgdGhlIGJvdW5kcy4KIAogICAg
IG1fcm9vdExheWVyLT5zZXROYW1lKCJXS0NBQ0ZMYXllclJlbmRlcmVyIHJvb3RMYXllciIpOwot
ICAgIG1fcm9vdExheWVyLT5zZXRBbmNob3JQb2ludChDR1BvaW50TWFrZSgwLCAwKSk7CisgICAg
bV9yb290TGF5ZXItPnNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQzRCgwLCAwLCAwKSk7CiAgICAg
bV9yb290TGF5ZXItPnNldEdlb21ldHJ5RmxpcHBlZCh0cnVlKTsKIAogI2lmbmRlZiBOREVCVUcK
QEAgLTIzMyw3ICsyMTQsNyBAQCBXS0NBQ0ZMYXllclJlbmRlcmVyOjpXS0NBQ0ZMYXllclJlbmRl
cmVyCiAjZW5kaWYKIAogICAgIGlmIChtX2NvbnRleHQpCi0gICAgICAgIG1fcm9vdExheWVyLT5i
ZWNvbWVSb290TGF5ZXJGb3JDb250ZXh0KG1fY29udGV4dCk7CisgICAgICAgIHdrQ0FDRkNvbnRl
eHRTZXRMYXllcihtX2NvbnRleHQsIG1fcm9vdExheWVyLT5wbGF0Zm9ybUxheWVyKCkpOwogCiAj
aWZuZGVmIE5ERUJVRwogICAgIGNoYXIqIHByaW50VHJlZUZsYWcgPSBnZXRlbnYoIkNBX1BSSU5U
X1RSRUUiKTsKQEAgLTI0NywxMSArMjI4LDE2IEBAIFdLQ0FDRkxheWVyUmVuZGVyZXI6On5XS0NB
Q0ZMYXllclJlbmRlcmUKICAgICB3a0NBQ0ZDb250ZXh0RGVzdHJveShtX2NvbnRleHQpOwogfQog
Ci1XS0NBQ0ZMYXllciogV0tDQUNGTGF5ZXJSZW5kZXJlcjo6cm9vdExheWVyKCkgY29uc3QKK1Bs
YXRmb3JtQ0FMYXllciogV0tDQUNGTGF5ZXJSZW5kZXJlcjo6cm9vdExheWVyKCkgY29uc3QKIHsK
ICAgICByZXR1cm4gbV9yb290TGF5ZXIuZ2V0KCk7CiB9CiAKK3ZvaWQgV0tDQUNGTGF5ZXJSZW5k
ZXJlcjo6YWRkUGVuZGluZ0FuaW1hdGVkTGF5ZXIoUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+
IGxheWVyKQoreworICAgIG1fcGVuZGluZ0FuaW1hdGVkTGF5ZXJzLmFkZChsYXllcik7Cit9CisK
IHZvaWQgV0tDQUNGTGF5ZXJSZW5kZXJlcjo6c2V0Um9vdENvbnRlbnRzKENHSW1hZ2VSZWYgaW1h
Z2UpCiB7CiAgICAgQVNTRVJUKG1fcm9vdExheWVyKTsKQEAgLTI2NiwxMiArMjUyLDEyIEBAIHZv
aWQgV0tDQUNGTGF5ZXJSZW5kZXJlcjo6c2V0Um9vdENvbnRlbnQKICAgICBwYWludCgpOwogfQog
Ci12b2lkIFdLQ0FDRkxheWVyUmVuZGVyZXI6OnNldFJvb3RDaGlsZExheWVyKFdLQ0FDRkxheWVy
KiBsYXllcikKK3ZvaWQgV0tDQUNGTGF5ZXJSZW5kZXJlcjo6c2V0Um9vdENoaWxkTGF5ZXIoUGxh
dGZvcm1DQUxheWVyKiBsYXllcikKIHsKICAgICBtX3Jvb3RMYXllci0+cmVtb3ZlQWxsU3VibGF5
ZXJzKCk7CiAgICAgbV9yb290Q2hpbGRMYXllciA9IGxheWVyOwogICAgIGlmIChtX3Jvb3RDaGls
ZExheWVyKQotICAgICAgICBtX3Jvb3RMYXllci0+YWRkU3VibGF5ZXIobV9yb290Q2hpbGRMYXll
cik7CisgICAgICAgIG1fcm9vdExheWVyLT5hcHBlbmRTdWJsYXllcihtX3Jvb3RDaGlsZExheWVy
LmdldCgpKTsKIH0KICAgIAogdm9pZCBXS0NBQ0ZMYXllclJlbmRlcmVyOjpsYXllclRyZWVEaWRD
aGFuZ2UoKQpAQCAtMjgwLDggKzI2NiwxMSBAQCB2b2lkIFdLQ0FDRkxheWVyUmVuZGVyZXI6Omxh
eWVyVHJlZURpZENoCiAgICAgcmVuZGVyU29vbigpOwogfQogCi12b2lkIFdLQ0FDRkxheWVyUmVu
ZGVyZXI6OnNldE5lZWRzRGlzcGxheSgpCit2b2lkIFdLQ0FDRkxheWVyUmVuZGVyZXI6OnNldE5l
ZWRzRGlzcGxheShib29sIHN5bmMpCiB7CisgICAgaWYgKCFtX3N5bmNMYXllckNoYW5nZXMgJiYg
c3luYykKKyAgICAgICAgbV9zeW5jTGF5ZXJDaGFuZ2VzID0gdHJ1ZTsKKwogICAgIEFTU0VSVCht
X3Jvb3RMYXllcik7CiAgICAgbV9yb290TGF5ZXItPnNldE5lZWRzRGlzcGxheSgwKTsKICAgICBy
ZW5kZXJTb29uKCk7CkBAIC0zNjEsOCArMzUwLDcgQEAgYm9vbCBXS0NBQ0ZMYXllclJlbmRlcmVy
OjpjcmVhdGVSZW5kZXJlcgogCiB2b2lkIFdLQ0FDRkxheWVyUmVuZGVyZXI6OmRlc3Ryb3lSZW5k
ZXJlcigpCiB7Ci0gICAgaWYgKG1fY29udGV4dCkKLSAgICAgICAgV0tDQUNGQ29udGV4dEZsdXNo
ZXI6OnNoYXJlZCgpLnJlbW92ZUNvbnRleHQobV9jb250ZXh0KTsKKyAgICB3a0NBQ0ZDb250ZXh0
U2V0TGF5ZXIobV9jb250ZXh0LCBtX3Jvb3RMYXllci0+cGxhdGZvcm1MYXllcigpKTsKIAogICAg
IG1fZDNkRGV2aWNlID0gMDsKICAgICBpZiAoc19kM2QpCkBAIC00NjMsMjAgKzQ1MSwzOSBAQCB2
b2lkIFdLQ0FDRkxheWVyUmVuZGVyZXI6OnJlbmRlcihjb25zdCBWCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKKyAgICAvLyBTeW5jIHRoZSBsYXllciBpZiBuZWVkZWQKKyAgICBpZiAobV9zeW5j
TGF5ZXJDaGFuZ2VzKSB7CisgICAgICAgIG1fY2xpZW50LT5zeW5jQ29tcG9zaXRpbmdTdGF0ZSgp
OworICAgICAgICBtX3N5bmNMYXllckNoYW5nZXMgPSBmYWxzZTsKKyAgICB9CisKICAgICAvLyBG
bHVzaCB0aGUgcm9vdCBsYXllciB0byB0aGUgcmVuZGVyIHRyZWUuCi0gICAgV0tDQUNGQ29udGV4
dEZsdXNoZXI6OnNoYXJlZCgpLmZsdXNoQWxsQ29udGV4dHMoKTsKKyAgICB3a0NBQ0ZDb250ZXh0
Rmx1c2gobV9jb250ZXh0KTsKIAotICAgIENHUmVjdCBib3VuZHMgPSB0aGlzLT5ib3VuZHMoKTsK
KyAgICAvLyBBbGwgcGVuZGluZyBhbmltYXRpb25zIHdpbGwgaGF2ZSBiZWVuIHN0YXJ0ZWQgd2l0
aCB0aGUgZmx1c2guIEZpcmUgdGhlIGFuaW1hdGlvblN0YXJ0ZWQgY2FsbHMKKyAgICBkb3VibGUg
Y3VycmVudFRpbWUgPSBXVEY6OmN1cnJlbnRUaW1lKCk7CisgICAgQ0ZUaW1lSW50ZXJ2YWwgdCA9
IGN1cnJlbnRUaW1lICsgd2tDQUNGQ29udGV4dEdldExhc3RDb21taXRUaW1lKG1fY29udGV4dCkg
LSBDQUN1cnJlbnRNZWRpYVRpbWUoKTsKKyAgICBBU1NFUlQodCA8PSBjdXJyZW50VGltZSk7CisK
KyAgICBIYXNoU2V0PFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+ID46Oml0ZXJhdG9yIGVuZCA9IG1f
cGVuZGluZ0FuaW1hdGVkTGF5ZXJzLmVuZCgpOworICAgIGZvciAoSGFzaFNldDxSZWZQdHI8UGxh
dGZvcm1DQUxheWVyPiA+OjppdGVyYXRvciBpdCA9IG1fcGVuZGluZ0FuaW1hdGVkTGF5ZXJzLmJl
Z2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQq
IG93bmVyID0gKCppdCktPm93bmVyKCk7CisgICAgICAgIG93bmVyLT5wbGF0Zm9ybUNBTGF5ZXJB
bmltYXRpb25TdGFydGVkKHQpOworICAgIH0KIAotICAgIENGVGltZUludGVydmFsIHQgPSBDQUN1
cnJlbnRNZWRpYVRpbWUoKTsKKyAgICBtX3BlbmRpbmdBbmltYXRlZExheWVycy5jbGVhcigpOwor
CisgICAgQ0dSZWN0IGJvdW5kcyA9IHRoaXMtPmJvdW5kcygpOwogCiAgICAgLy8gR2l2ZSB0aGUg
cmVuZGVyZXIgc29tZSBzcGFjZSB0byB1c2UuIFRoaXMgbmVlZHMgdG8gYmUgdmFsaWQgdW50aWwg
dGhlCiAgICAgLy8gd2tDQUNGQ29udGV4dEZpbmlzaFVwZGF0ZSgpIGNhbGwgYmVsb3cuCiAgICAg
Y2hhciBzcGFjZVs0MDk2XTsKLSAgICBpZiAoIXdrQ0FDRkNvbnRleHRCZWdpblVwZGF0ZShtX2Nv
bnRleHQsIHNwYWNlLCBzaXplb2Yoc3BhY2UpLCB0LCBib3VuZHMsIHdpbmRvd0RpcnR5UmVjdHMu
ZGF0YSgpLCB3aW5kb3dEaXJ0eVJlY3RzLnNpemUoKSkpCisgICAgaWYgKCF3a0NBQ0ZDb250ZXh0
QmVnaW5VcGRhdGUobV9jb250ZXh0LCBzcGFjZSwgc2l6ZW9mKHNwYWNlKSwgQ0FDdXJyZW50TWVk
aWFUaW1lKCksIGJvdW5kcywgd2luZG93RGlydHlSZWN0cy5kYXRhKCksIHdpbmRvd0RpcnR5UmVj
dHMuc2l6ZSgpKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgSFJFU1VMVCBlcnIgPSBTX09LOwor
ICAgIENGVGltZUludGVydmFsIHRpbWVUb05leHRSZW5kZXIgPSBudW1lcmljX2xpbWl0czxDRlRp
bWVJbnRlcnZhbD46OmluZmluaXR5KCk7CisKICAgICBkbyB7CiAgICAgICAgIC8vIEZJWE1FOiBk
b24ndCBuZWVkIHRvIGNsZWFyIGRpcnR5IHJlZ2lvbiBpZiBsYXllciB0cmVlIGlzIG9wYXF1ZS4K
IApAQCAtNDk2LDYgKzUwMyw4IEBAIHZvaWQgV0tDQUNGTGF5ZXJSZW5kZXJlcjo6cmVuZGVyKGNv
bnN0IFYKICAgICAgICAgfQogICAgICAgICB3a0NBQ0ZVcGRhdGVSZWN0RW51bWVyYXRvclJlbGVh
c2UoZSk7CiAKKyAgICAgICAgdGltZVRvTmV4dFJlbmRlciA9IHdrQ0FDRkNvbnRleHRHZXROZXh0
VXBkYXRlVGltZShtX2NvbnRleHQpOworCiAgICAgICAgIGlmIChyZWN0cy5pc0VtcHR5KCkpCiAg
ICAgICAgICAgICBicmVhazsKIApAQCAtNTIzLDYgKzUzMiwxMCBAQCB2b2lkIFdLQ0FDRkxheWVy
UmVuZGVyZXI6OnJlbmRlcihjb25zdCBWCiAgICAgaWYgKG1fcHJpbnRUcmVlKQogICAgICAgICBt
X3Jvb3RMYXllci0+cHJpbnRUcmVlKCk7CiAjZW5kaWYKKworICAgIC8vIElmIHRpbWVUb05leHRS
ZW5kZXIgaXMgbm90IGluZmluaXR5LCBpdCBtZWFucyBhbmltYXRpb25zIGFyZSBydW5uaW5nLCBz
byBxdWV1ZSB1cCB0byByZW5kZXIgYWdhaW4KKyAgICBpZiAodGltZVRvTmV4dFJlbmRlciAhPSBu
dW1lcmljX2xpbWl0czxDRlRpbWVJbnRlcnZhbD46OmluZmluaXR5KCkpCisgICAgICAgIHJlbmRl
clNvb24oKTsKIH0KIAogdm9pZCBXS0NBQ0ZMYXllclJlbmRlcmVyOjpyZW5kZXJTb29uKCkKSW5k
ZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1dLQ0FDRkxheWVyUmVuZGVyZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9XS0NBQ0ZMYXllclJl
bmRlcmVyLmgJKHJldmlzaW9uIDc1MjEzKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vV0tDQUNGTGF5ZXJSZW5kZXJlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwzMyArMzAsNDAg
QEAKIAogI2luY2x1ZGUgIkNPTVB0ci5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCi0jaW5jbHVkZSAi
V0tDQUNGTGF5ZXIuaCIKIAorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3Rm
L05vbmNvcHlhYmxlLmg+Ci0KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKICNpbmNsdWRlIDxDb3Jl
R3JhcGhpY3MvQ0dHZW9tZXRyeS5oPgogCiBpbnRlcmZhY2UgSURpcmVjdDNERGV2aWNlOTsKIHN0
cnVjdCBXS0NBQ0ZDb250ZXh0OwogCit0eXBlZGVmIHN0cnVjdCBDR0ltYWdlKiBDR0ltYWdlUmVm
OworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFdLQ0FDRlJvb3RMYXllcjsKK2NsYXNz
IFBsYXRmb3JtQ0FMYXllcjsKIAogY2xhc3MgV0tDQUNGTGF5ZXJSZW5kZXJlckNsaWVudCB7CiBw
dWJsaWM6CiAgICAgdmlydHVhbCB+V0tDQUNGTGF5ZXJSZW5kZXJlckNsaWVudCgpIHsgfQogICAg
IHZpcnR1YWwgYm9vbCBzaG91bGRSZW5kZXIoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lk
IGFuaW1hdGlvbnNTdGFydGVkKENGVGltZUludGVydmFsKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
c3luY0NvbXBvc2l0aW5nU3RhdGUoKSB7IH0KIH07CiAKIC8vIEZJWE1FOiBDdXJyZW50bHkgdGhl
cmUgaXMgYSBXS0NBQ0ZMYXllclJlbmRlcmVyIGZvciBlYWNoIFdlYlZpZXcgYW5kIGVhY2gKIC8v
IGhhcyBpdHMgb3duIENBUmVuZGVyT0dMQ29udGV4dCBhbmQgRGlyZWN0M0REZXZpY2U5LCB3aGlj
aCBpcyBpbmVmZmljaWVudC4KIC8vIChodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MzE4NTUpCiBjbGFzcyBXS0NBQ0ZMYXllclJlbmRlcmVyIDogcHVibGljIE5vbmNvcHlh
YmxlIHsKKyAgICBmcmllbmQgUGxhdGZvcm1DQUxheWVyOworCiBwdWJsaWM6CiAgICAgc3RhdGlj
IFBhc3NPd25QdHI8V0tDQUNGTGF5ZXJSZW5kZXJlcj4gY3JlYXRlKFdLQ0FDRkxheWVyUmVuZGVy
ZXJDbGllbnQqKTsKICAgICB+V0tDQUNGTGF5ZXJSZW5kZXJlcigpOwpAQCAtNjUsOSArNzIsOSBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFJvb3RDb250ZW50cyhDR0ltYWdlUmVmKTsKICAgICB2
b2lkIHNldFJvb3RDb250ZW50c0FuZERpc3BsYXkoQ0dJbWFnZVJlZik7Ci0gICAgdm9pZCBzZXRS
b290Q2hpbGRMYXllcihXS0NBQ0ZMYXllciogbGF5ZXIpOworICAgIHZvaWQgc2V0Um9vdENoaWxk
TGF5ZXIoUGxhdGZvcm1DQUxheWVyKik7CiAgICAgdm9pZCBsYXllclRyZWVEaWRDaGFuZ2UoKTsK
LSAgICB2b2lkIHNldE5lZWRzRGlzcGxheSgpOworICAgIHZvaWQgc2V0TmVlZHNEaXNwbGF5KGJv
b2wgc3luYyA9IGZhbHNlKTsKICAgICB2b2lkIHNldEhvc3RXaW5kb3coSFdORCB3aW5kb3cpIHsg
bV9ob3N0V2luZG93ID0gd2luZG93OyB9CiAgICAgdm9pZCBzZXRCYWNraW5nU3RvcmVEaXJ0eShi
b29sIGRpcnR5KSB7IG1fYmFja2luZ1N0b3JlRGlydHkgPSBkaXJ0eTsgfQogICAgIGJvb2wgY3Jl
YXRlUmVuZGVyZXIoKTsKQEAgLTc2LDcgKzgzLDggQEAgcHVibGljOgogICAgIHZvaWQgcmVuZGVy
U29vbigpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgV0tDQUNGTGF5ZXIqIHJvb3RMYXllcigpIGNvbnN0
OworICAgIFBsYXRmb3JtQ0FMYXllciogcm9vdExheWVyKCkgY29uc3Q7CisgICAgdm9pZCBhZGRQ
ZW5kaW5nQW5pbWF0ZWRMYXllcihQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4pOwogCiBwcml2
YXRlOgogICAgIFdLQ0FDRkxheWVyUmVuZGVyZXIoV0tDQUNGTGF5ZXJSZW5kZXJlckNsaWVudCop
OwpAQCAtOTksMTMgKzEwNywxNiBAQCBwcml2YXRlOgogICAgIFdLQ0FDRkxheWVyUmVuZGVyZXJD
bGllbnQqIG1fY2xpZW50OwogICAgIGJvb2wgbV9taWdodEJlQWJsZVRvQ3JlYXRlRGV2aWNlTGF0
ZXI7CiAgICAgQ09NUHRyPElEaXJlY3QzRERldmljZTk+IG1fZDNkRGV2aWNlOwotICAgIFJlZlB0
cjxXS0NBQ0ZSb290TGF5ZXI+IG1fcm9vdExheWVyOwotICAgIFJlZlB0cjxXS0NBQ0ZMYXllcj4g
bV9yb290Q2hpbGRMYXllcjsKKyAgICBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBtX3Jvb3RMYXll
cjsKKyAgICBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBtX3Jvb3RDaGlsZExheWVyOwogICAgIFdL
Q0FDRkNvbnRleHQqIG1fY29udGV4dDsKICAgICBIV05EIG1faG9zdFdpbmRvdzsKICAgICBUaW1l
cjxXS0NBQ0ZMYXllclJlbmRlcmVyPiBtX3JlbmRlclRpbWVyOwogICAgIGJvb2wgbV9iYWNraW5n
U3RvcmVEaXJ0eTsKICAgICBib29sIG1fbXVzdFJlc2V0TG9zdERldmljZUJlZm9yZVJlbmRlcmlu
ZzsKKyAgICBib29sIG1fc3luY0xheWVyQ2hhbmdlczsKKyAgICBIYXNoU2V0PFJlZlB0cjxQbGF0
Zm9ybUNBTGF5ZXI+ID4gbV9wZW5kaW5nQW5pbWF0ZWRMYXllcnM7CisKICNpZm5kZWYgTkRFQlVH
CiAgICAgYm9vbCBtX3ByaW50VHJlZTsKICNlbmRpZgpJbmRleDogV2ViS2l0L3dpbi9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHJldmlzaW9uIDc1MjE1KQor
KysgV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0MiBAQAor
MjAxMS0wMS0wNiAgQ2hyaXMgTWFycmluICA8Y21hcnJpbkBhcHBsZS5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2hhcmUgY29kZSBiZXR3ZWVu
IE1hYyAoQ0EpIGFuZCBXaW5kb3dzIChDQUNGKSBHcmFwaGljc0xheWVyIGltcGxlbWVudGF0aW9u
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDkzODgK
KworICAgICAgICBDaGFuZ2UgY2xpZW50IEFQSSBmb3IgdGhlIGZ1bGxzY3JlZW4gdmlkZW8gY29u
dHJvbGxlci4gSXQgbm93IHVzZXMgYSAKKyAgICAgICAgUGxhdGZvcm1DQUxheWVyQ2xpZW50IHNv
IGl0IGNhbiB1c2UgYSBQbGFmb3JtQ0FMYXllciBkaXJlY3RseS4gQWxzbworICAgICAgICB1cGRh
dGVkIGhvdyB0byBjb25uZWN0IHRoZSBsYXllciB0cmVlIHRvIHRoZSB2aWV3IHRvIHJlZmxlY3Qg
dGhlIHVwZGF0ZWQKKyAgICAgICAgaGFyZHdhcmUgY29tcG9zaXRpbmcgbG9naWMuCisKKyAgICAg
ICAgKiBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKEZ1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXI6OkxheWVyQ2xpZW50OjpMYXllckNsaWVudCk6CisgICAgICAgIChGdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyOjpMYXllckNsaWVudDo6cGxhdGZvcm1DQUxheWVyUmVzcG9u
ZHNUb0xheW91dENoYW5nZXMpOgorICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6
TGF5ZXJDbGllbnQ6OnBsYXRmb3JtQ0FMYXllckFuaW1hdGlvblN0YXJ0ZWQpOgorICAgICAgICAo
RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6TGF5ZXJDbGllbnQ6OnBsYXRmb3JtQ0FMYXllckNv
bnRlbnRzT3JpZW50YXRpb24pOgorICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6
TGF5ZXJDbGllbnQ6OnBsYXRmb3JtQ0FMYXllclBhaW50Q29udGVudHMpOgorICAgICAgICAoRnVs
bHNjcmVlblZpZGVvQ29udHJvbGxlcjo6TGF5ZXJDbGllbnQ6OnBsYXRmb3JtQ0FMYXllclNob3dE
ZWJ1Z0JvcmRlcnMpOgorICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6TGF5ZXJD
bGllbnQ6OnBsYXRmb3JtQ0FMYXllclNob3dSZXBhaW50Q291bnRlcik6CisgICAgICAgIChGdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyOjpMYXllckNsaWVudDo6cGxhdGZvcm1DQUxheWVySW5jcmVt
ZW50UmVwYWludENvdW50KToKKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6Okxh
eWVyQ2xpZW50OjpwbGF0Zm9ybUNBTGF5ZXJDb250ZW50c09wYXF1ZSk6CisgICAgICAgIChGdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyOjpMYXllckNsaWVudDo6cGxhdGZvcm1DQUxheWVyRHJhd3ND
b250ZW50KToKKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OkxheWVyQ2xpZW50
OjpwbGF0Zm9ybUNBTGF5ZXJMYXllckRpZERpc3BsYXkpOgorICAgICAgICAoRnVsbHNjcmVlblZp
ZGVvQ29udHJvbGxlcjo6TGF5ZXJDbGllbnQ6OnBsYXRmb3JtQ0FMYXllckxheW91dFN1YmxheWVy
c09mTGF5ZXIpOgorICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6RnVsbHNjcmVl
blZpZGVvQ29udHJvbGxlcik6CisgICAgICAgIChGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjp+
RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcik6CisgICAgICAgIChGdWxsc2NyZWVuVmlkZW9Db250
cm9sbGVyOjplbnRlckZ1bGxzY3JlZW4pOgorICAgICAgICAqIEZ1bGxzY3JlZW5WaWRlb0NvbnRy
b2xsZXIuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgor
ICAgICAgICAoV2ViQ2hyb21lQ2xpZW50OjphdHRhY2hSb290R3JhcGhpY3NMYXllcik6CisgICAg
ICAgIChXZWJDaHJvbWVDbGllbnQ6OnNjaGVkdWxlQ29tcG9zaXRpbmdMYXllclN5bmMpOgorICAg
ICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoV2ViVmlldzo6c2V0Um9vdENoaWxkTGF5ZXIp
OgorICAgICAgICAoV2ViVmlldzo6YW5pbWF0aW9uc1N0YXJ0ZWQpOgorICAgICAgICAoV2ViVmll
dzo6c3luY0NvbXBvc2l0aW5nU3RhdGUpOgorICAgICAgICAqIFdlYlZpZXcuaDoKKyAgICAgICAg
KFdlYlZpZXc6OnNldFJvb3RMYXllck5lZWRzRGlzcGxheSk6CisKIDIwMTEtMDEtMDUgIFN0ZXZl
IEZhbGtlbmJ1cmcgIDxzZmFsa2VuQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBE
YXJpbiBBZGxlci4KSW5kZXg6IFdlYktpdC93aW4vRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNw
cAkocmV2aXNpb24gNzUyMTMpCisrKyBXZWJLaXQvd2luL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xs
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw4ICszOCw4IEBACiAjaW5jbHVkZSA8V2ViQ29y
ZS9Gb250U2VsZWN0b3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1DQUxh
eWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0UnVuLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9X
S0NBQ0ZMYXllci5oPgogI2luY2x1ZGUgPFdlYktpdFN5c3RlbUludGVyZmFjZS9XZWJLaXRTeXN0
ZW1JbnRlcmZhY2UuaD4KICNpbmNsdWRlIDx3aW5kb3dzeC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRM
aWJFeHRyYXMuaD4KQEAgLTE3NCwyMCArMTc0LDI4IEBAIHZvaWQgSFVEU2xpZGVyOjpkcmFnKGNv
bnN0IEludFBvaW50JiBwb2kKIH0KIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykK
LWNsYXNzIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OkxheW91dENsaWVudCA6IHB1YmxpYyBX
S0NBQ0ZMYXllckxheW91dENsaWVudCB7CitjbGFzcyBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVy
OjpMYXllckNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJDbGllbnQgewog
cHVibGljOgotICAgIExheW91dENsaWVudChGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKiBwYXJl
bnQpOwotICAgIHZvaWQgbGF5b3V0U3VibGF5ZXJzT2ZMYXllcihXS0NBQ0ZMYXllciogbGF5ZXIp
OworICAgIExheWVyQ2xpZW50KEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIqIHBhcmVudCkgOiBt
X3BhcmVudChwYXJlbnQpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQ0FMYXllckxh
eW91dFN1YmxheWVyc09mTGF5ZXIoUGxhdGZvcm1DQUxheWVyKik7CisgICAgdmlydHVhbCBib29s
IHBsYXRmb3JtQ0FMYXllclJlc3BvbmRzVG9MYXlvdXRDaGFuZ2VzKCkgY29uc3QgeyByZXR1cm4g
dHJ1ZTsgfQorCisgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQ0FMYXllckFuaW1hdGlvblN0YXJ0
ZWQoQ0ZUaW1lSW50ZXJ2YWwgYmVnaW5UaW1lKSB7IH0KKyAgICB2aXJ0dWFsIEdyYXBoaWNzTGF5
ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBwbGF0Zm9ybUNBTGF5ZXJDb250
ZW50c09yaWVudGF0aW9uKCkgY29uc3QgeyByZXR1cm4gR3JhcGhpY3NMYXllcjo6Q29tcG9zaXRp
bmdDb29yZGluYXRlc0JvdHRvbVVwOyB9CisgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQ0FMYXll
clBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgaW5DbGlwKSB7
IH0KKyAgICB2aXJ0dWFsIGJvb2wgcGxhdGZvcm1DQUxheWVyU2hvd0RlYnVnQm9yZGVycygpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIHBsYXRmb3JtQ0FMYXllclNo
b3dSZXBhaW50Q291bnRlcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBp
bnQgcGxhdGZvcm1DQUxheWVySW5jcmVtZW50UmVwYWludENvdW50KCkgeyByZXR1cm4gMDsgfQor
CisgICAgdmlydHVhbCBib29sIHBsYXRmb3JtQ0FMYXllckNvbnRlbnRzT3BhcXVlKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgcGxhdGZvcm1DQUxheWVyRHJhd3ND
b250ZW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcGxhdGZv
cm1DQUxheWVyTGF5ZXJEaWREaXNwbGF5KFBsYXRmb3JtTGF5ZXIqKSB7IH0KIAogICAgIEZ1bGxz
Y3JlZW5WaWRlb0NvbnRyb2xsZXIqIG1fcGFyZW50OwogfTsKIAotRnVsbHNjcmVlblZpZGVvQ29u
dHJvbGxlcjo6TGF5b3V0Q2xpZW50OjpMYXlvdXRDbGllbnQoRnVsbHNjcmVlblZpZGVvQ29udHJv
bGxlciogcGFyZW50KQotICAgIDogbV9wYXJlbnQocGFyZW50KQotewotfQotCi12b2lkIEZ1bGxz
Y3JlZW5WaWRlb0NvbnRyb2xsZXI6OkxheW91dENsaWVudDo6bGF5b3V0U3VibGF5ZXJzT2ZMYXll
cihXS0NBQ0ZMYXllciogbGF5ZXIpIAordm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpM
YXllckNsaWVudDo6cGxhdGZvcm1DQUxheWVyTGF5b3V0U3VibGF5ZXJzT2ZMYXllcihQbGF0Zm9y
bUNBTGF5ZXIqIGxheWVyKSAKIHsKICAgICBBU1NFUlRfQVJHKGxheWVyLCBsYXllciA9PSBtX3Bh
cmVudC0+bV9yb290Q2hpbGQpOwogCkBAIC0xOTUsNyArMjAzLDggQEAgdm9pZCBGdWxsc2NyZWVu
VmlkZW9Db250cm9sbGVyOjpMYXlvdXRDbAogICAgIGlmICghbWVkaWFFbGVtZW50KQogICAgICAg
ICByZXR1cm47CiAKLSAgICBXS0NBQ0ZMYXllciogdmlkZW9MYXllciA9IG1lZGlhRWxlbWVudC0+
cGxhdGZvcm1MYXllcigpOworCisgICAgUGxhdGZvcm1DQUxheWVyKiB2aWRlb0xheWVyID0gUGxh
dGZvcm1DQUxheWVyOjpwbGF0Zm9ybUNBTGF5ZXIobWVkaWFFbGVtZW50LT5wbGF0Zm9ybUxheWVy
KCkpOwogICAgIGlmICghdmlkZW9MYXllciB8fCB2aWRlb0xheWVyLT5zdXBlcmxheWVyKCkgIT0g
bGF5ZXIpCiAgICAgICAgIHJldHVybjsKIApAQCAtMjMyLDIwICsyNDEsMTcgQEAgRnVsbHNjcmVl
blZpZGVvQ29udHJvbGxlcjo6RnVsbHNjcmVlblZpZAogICAgICwgbV9tb3ZpbmdXaW5kb3coZmFs
c2UpCiAgICAgLCBtX3RpbWVyKHRoaXMsICZGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjp0aW1l
ckZpcmVkKQogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLSAgICAsIG1fcm9vdENo
aWxkKFdLQ0FDRkxheWVyOjpjcmVhdGUoV0tDQUNGTGF5ZXI6OkxheWVyKSkKLSAgICAsIG1fbGF5
b3V0Q2xpZW50KG5ldyBMYXlvdXRDbGllbnQodGhpcykpCisgICAgLCBtX2xheWVyQ2xpZW50KG5l
dyBMYXllckNsaWVudCh0aGlzKSkKKyAgICAsIG1fcm9vdENoaWxkKFBsYXRmb3JtQ0FMYXllcjo6
Y3JlYXRlKFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlTGF5ZXIsIG1fbGF5ZXJDbGllbnQuZ2V0
KCkpKQogI2VuZGlmCiAgICAgLCBtX2Z1bGxzY3JlZW5XaW5kb3cobmV3IE1lZGlhUGxheWVyUHJp
dmF0ZUZ1bGxzY3JlZW5XaW5kb3codGhpcykpCiB7Ci0jaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBP
U0lUSU5HKQotICAgIG1fcm9vdENoaWxkLT5zZXRMYXlvdXRDbGllbnQobV9sYXlvdXRDbGllbnQu
Z2V0KCkpOwotI2VuZGlmCiB9CiAKIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6On5GdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyKCkKIHsKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcp
Ci0gICAgbV9yb290Q2hpbGQtPnNldExheW91dENsaWVudCgwKTsKKyAgICBtX3Jvb3RDaGlsZC0+
c2V0T3duZXIoMCk7CiAjZW5kaWYKIH0KIApAQCAtMjczLDggKzI3OSw4IEBAIHZvaWQgRnVsbHNj
cmVlblZpZGVvQ29udHJvbGxlcjo6ZW50ZXJGdWwKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9T
SVRJTkcpCiAgICAgbV9mdWxsc2NyZWVuV2luZG93LT5zZXRSb290Q2hpbGRMYXllcihtX3Jvb3RD
aGlsZCk7CiAKLSAgICBXS0NBQ0ZMYXllciogdmlkZW9MYXllciA9IG1fbWVkaWFFbGVtZW50LT5w
bGF0Zm9ybUxheWVyKCk7Ci0gICAgbV9yb290Q2hpbGQtPmFkZFN1YmxheWVyKHZpZGVvTGF5ZXIp
OworICAgIFBsYXRmb3JtQ0FMYXllciogdmlkZW9MYXllciA9IFBsYXRmb3JtQ0FMYXllcjo6cGxh
dGZvcm1DQUxheWVyKG1fbWVkaWFFbGVtZW50LT5wbGF0Zm9ybUxheWVyKCkpOworICAgIG1fcm9v
dENoaWxkLT5hcHBlbmRTdWJsYXllcih2aWRlb0xheWVyKTsKICAgICBtX3Jvb3RDaGlsZC0+c2V0
TmVlZHNMYXlvdXQoKTsKICAgICBtX3Jvb3RDaGlsZC0+c2V0R2VvbWV0cnlGbGlwcGVkKDEpOwog
I2VuZGlmCkluZGV4OiBXZWJLaXQvd2luL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQvd2luL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuaAkocmV2aXNp
b24gNzUyMTMpCisrKyBXZWJLaXQvd2luL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
R3JhcGhpY3NDb250ZXh0OwogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLWNsYXNz
IFdLQ0FDRkxheWVyOworY2xhc3MgUGxhdGZvcm1DQUxheWVyOwogI2VuZGlmCiB9CiAKQEAgLTE1
NywxMCArMTU3LDEwIEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgbV9odWRQb3Np
dGlvbjsKICAgICBPd25QdHI8V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldp
bmRvdz4gbV9mdWxsc2NyZWVuV2luZG93OwogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElO
RykKLSAgICBSZWZQdHI8V2ViQ29yZTo6V0tDQUNGTGF5ZXI+IG1fcm9vdENoaWxkOwotICAgIGNs
YXNzIExheW91dENsaWVudDsKLSAgICBmcmllbmQgY2xhc3MgTGF5b3V0Q2xpZW50OwotICAgIE93
blB0cjxMYXlvdXRDbGllbnQ+IG1fbGF5b3V0Q2xpZW50OworICAgIGNsYXNzIExheWVyQ2xpZW50
OworICAgIGZyaWVuZCBjbGFzcyBMYXllckNsaWVudDsKKyAgICBPd25QdHI8TGF5ZXJDbGllbnQ+
IG1fbGF5ZXJDbGllbnQ7CisgICAgUmVmUHRyPFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcj4gbV9y
b290Q2hpbGQ7CiAjZW5kaWYKIAogICAgIEhVREJ1dHRvbiBtX3BsYXlQYXVzZUJ1dHRvbjsKSW5k
ZXg6IFdlYktpdC93aW4vV2ViVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJW
aWV3LmNwcAkocmV2aXNpb24gNzUyMTMpCisrKyBXZWJLaXQvd2luL1dlYlZpZXcuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02MjMxLDcgKzYyMzEsNyBAQCB2b2lkIFdlYlZpZXc6OmRvd25sb2FkVVJM
KGNvbnN0IEtVUkwmIHVyCiB9CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi12
b2lkIFdlYlZpZXc6OnNldFJvb3RDaGlsZExheWVyKFdlYkNvcmU6OldLQ0FDRkxheWVyKiBsYXll
cikKK3ZvaWQgV2ViVmlldzo6c2V0Um9vdENoaWxkTGF5ZXIoV2ViQ29yZTo6UGxhdGZvcm1DQUxh
eWVyKiBsYXllcikKIHsKICAgICBzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nKGxheWVyID8gdHJ1
ZSA6IGZhbHNlKTsKICAgICBpZiAobV9sYXllclJlbmRlcmVyKQpAQCAtNjQ2OSw2ICs2NDY5LDIw
IEBAIGJvb2wgV2ViVmlldzo6c2hvdWxkUmVuZGVyKCkgY29uc3QKIAogICAgIHJldHVybiAhZnJh
bWVWaWV3LT5sYXlvdXRQZW5kaW5nKCk7CiB9CisKK3ZvaWQgV2ViVmlldzo6YW5pbWF0aW9uc1N0
YXJ0ZWQoQ0ZUaW1lSW50ZXJ2YWwgdCkKK3sKKyAgICAvLyBUZWxsIHRoZSBhbmltYXRpb24gY29u
dHJvbGxlciB0aGF0IGl0cyBhbmltYXRpb25zIGhhdmUgc3RhcnRlZAorICAgIG1fcGFnZS0+bWFp
bkZyYW1lKCktPmFuaW1hdGlvbigpLT5ub3RpZnlBbmltYXRpb25TdGFydGVkKDAsIHQpOworfQor
Cit2b2lkIFdlYlZpZXc6OnN5bmNDb21wb3NpdGluZ1N0YXRlKCkKK3sKKyAgICBGcmFtZSogY29y
ZUZyYW1lID0gY29yZShtX21haW5GcmFtZSk7CisgICAgaWYgKGNvcmVGcmFtZSAmJiBjb3JlRnJh
bWUtPnZpZXcoKSkKKyAgICAgICAgY29yZUZyYW1lLT52aWV3KCktPnN5bmNDb21wb3NpdGluZ1N0
YXRlUmVjdXJzaXZlKCk7Cit9CisKICNlbmRpZgogCiBjbGFzcyBFbnVtVGV4dE1hdGNoZXMgOiBw
dWJsaWMgSUVudW1UZXh0TWF0Y2hlcwpJbmRleDogV2ViS2l0L3dpbi9XZWJWaWV3LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0L3dpbi9XZWJWaWV3LmgJKHJldmlzaW9uIDc1MjEzKQorKysgV2ViS2l0
L3dpbi9XZWJWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAKICNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0jaW5j
bHVkZSA8V2ViQ29yZS9XS0NBQ0ZMYXllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1D
QUxheWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9XS0NBQ0ZMYXllclJlbmRlcmVyLmg+CiAjZW5k
aWYKIApAQCAtOTA0LDggKzkwNCwxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBkb3dubG9hZFVSTChj
b25zdCBXZWJDb3JlOjpLVVJMJik7CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcp
Ci0gICAgdm9pZCBzZXRSb290TGF5ZXJOZWVkc0Rpc3BsYXkoKSB7IGlmIChtX2xheWVyUmVuZGVy
ZXIpIG1fbGF5ZXJSZW5kZXJlci0+c2V0TmVlZHNEaXNwbGF5KCk7IH0KLSAgICB2b2lkIHNldFJv
b3RDaGlsZExheWVyKFdlYkNvcmU6OldLQ0FDRkxheWVyKiBsYXllcik7CisgICAgdm9pZCBzZXRS
b290TGF5ZXJOZWVkc0Rpc3BsYXkoYm9vbCBzeW5jID0gZmFsc2UpCisgICAgeworICAgICAgICBp
ZiAobV9sYXllclJlbmRlcmVyKQorICAgICAgICAgICAgbV9sYXllclJlbmRlcmVyLT5zZXROZWVk
c0Rpc3BsYXkoc3luYyk7CisgICAgfQorICAgIHZvaWQgc2V0Um9vdENoaWxkTGF5ZXIoV2ViQ29y
ZTo6UGxhdGZvcm1DQUxheWVyKik7CiAjZW5kaWYKIAogICAgIHZvaWQgZW50ZXJGdWxsc2NyZWVu
Rm9yTm9kZShXZWJDb3JlOjpOb2RlKik7CkBAIC05NDEsNiArOTQ1LDggQEAgcHJpdmF0ZToKICNp
ZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgLy8gV0tDQUNGTGF5ZXJSZW5kZXJl
ckNsaWVudAogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRSZW5kZXIoKSBjb25zdDsKKyAgICB2aXJ0
dWFsIHZvaWQgYW5pbWF0aW9uc1N0YXJ0ZWQoQ0ZUaW1lSW50ZXJ2YWwpOworICAgIHZpcnR1YWwg
dm9pZCBzeW5jQ29tcG9zaXRpbmdTdGF0ZSgpOwogI2VuZGlmCiAKIHByb3RlY3RlZDoKSW5kZXg6
IFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAJKHJldmlz
aW9uIDc1MjEzKQorKysgV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MjAsMTIgKzgyMCwxMiBAQCB2b2lkIFdlYkNocm9tZUNs
aWVudDo6c2V0TGFzdFNldEN1cnNvclRvCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5H
KQogdm9pZCBXZWJDaHJvbWVDbGllbnQ6OmF0dGFjaFJvb3RHcmFwaGljc0xheWVyKEZyYW1lKiBm
cmFtZSwgR3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXllcikKIHsKLSAgICBtX3dlYlZpZXctPnNl
dFJvb3RDaGlsZExheWVyKGdyYXBoaWNzTGF5ZXIgPyBzdGF0aWNfY2FzdDxXS0NBQ0ZMYXllcio+
KGdyYXBoaWNzTGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSkgOiAwKTsKKyAgICBtX3dlYlZpZXctPnNl
dFJvb3RDaGlsZExheWVyKGdyYXBoaWNzTGF5ZXIgPyBQbGF0Zm9ybUNBTGF5ZXI6OnBsYXRmb3Jt
Q0FMYXllcihncmFwaGljc0xheWVyLT5wbGF0Zm9ybUxheWVyKCkpIDogMCk7CiB9CiAKIHZvaWQg
V2ViQ2hyb21lQ2xpZW50OjpzY2hlZHVsZUNvbXBvc2l0aW5nTGF5ZXJTeW5jKCkKIHsKLSAgICBt
X3dlYlZpZXctPnNldFJvb3RMYXllck5lZWRzRGlzcGxheSgpOworICAgIG1fd2ViVmlldy0+c2V0
Um9vdExheWVyTmVlZHNEaXNwbGF5KHRydWUpOwogfQogCiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78197</attachid>
            <date>2011-01-06 18:28:44 -0800</date>
            <delta_ts>2011-01-06 18:33:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-49388-20110106182739.patch</filename>
            <type>text/plain</type>
            <size>110707</size>
            <attacher name="Chris Marrin">cmarrin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3NTIxNSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDQgQEAKKzIwMTEtMDEtMDYgIENocmlzIE1hcnJpbiAgPGNtYXJyaW5AYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNo
YXJlIGNvZGUgYmV0d2VlbiBNYWMgKENBKSBhbmQgV2luZG93cyAoQ0FDRikgR3JhcGhpY3NMYXll
ciBpbXBsZW1lbnRhdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQ5Mzg4CisKKyAgICAgICAgRmluYWwgc3RlcCBpbiB1bmlmeWluZyBHcmFwaGlj
c0xheWVyIGxvZ2ljIGFjcm9zcyBXaW4gYW5kIE1hYy4gVGhpcyAKKyAgICAgICAgaW1wbGVtZW50
cyB0aGUgV2luZG93cyBzaWRlIGNsYXNzZXMgZm9yIFBsYXRmb3JtQ0FMYXllciBhbmQgc3VwcG9y
dGluZworICAgICAgICBjbGFzc2VzLiBBbHNvIGNoYW5nZWQgTWVkaWFQbGF5ZXIgdG8gdXNlIG5l
dyBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQKKyAgICAgICAgc28gaXQgY2FuIHVzZSBQbGF0Zm9ybUNB
TGF5ZXIgZGlyZWN0bHkgcmF0aGVyIHRoYW4gYSBkdW1teSBHcmFwaGljc0xheWVyLgorICAgICAg
ICBXS0NBQ0ZMYXllclJlbmRlcmVyIG5vdyBkb2VzIHRoZSB0YXNrIG9mIG5vdGlmeWluZyBhbmlt
YXRpb25zIG9mIHRoZWlyCisgICAgICAgIHN0YXJ0IHRpbWUuIEFsc28gY29tbWVudGVkIG91dCBh
biBhc3NlcnQgaW4gQW5pbWF0aW9uQmFzZSBiZWNhdXNlCisgICAgICAgIEFuaW1hdGlvbkNvbnRy
b2xsZXIncyBmcmFtZSB0aW1lIGlzIG5vdCBpbiBzeW5jIHdpdGggdGhlIG5ldyAKKyAgICAgICAg
QW5pbWF0aW9uVGltZUNvbnRyb2xsZXIuIEkndmUgb3BlbmVkIGEgbmV3IGJ1ZyBmb3IgdGhhdCBp
c3N1ZToKKworICAgICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTUyMDM3CisKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAg
ICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlQ29tbW9uLnZzcHJvcHM6CisgICAgICAgICog
V2ViQ29yZS52Y3Byb2ovY29weUZvcndhcmRpbmdIZWFkZXJzLmNtZDoKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0Lmg6CisgICAgICAgICogcGFnZS9hbmltYXRp
b24vQW5pbWF0aW9uQmFzZS5jcHA6CisgICAgICAgICogcGFnZS9hbmltYXRpb24vQW5pbWF0aW9u
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25Db250cm9sbGVyUHJp
dmF0ZTo6YmVnaW5BbmltYXRpb25VcGRhdGVUaW1lKToKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlv
bi9LZXlmcmFtZUFuaW1hdGlvbi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
UGxhdGZvcm1DQUFuaW1hdGlvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL3dp
bjogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FB
bmltYXRpb25XaW4uY3BwOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS93
aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbkludGVybmFsLmNwcDogQWRkZWQuCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbkludGVybmFs
Lmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRl
eHRDR1dpbi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVy
UHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3cuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3dpbi9NZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93Lmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvbnRl
eHQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZh
dGVRdWlja1RpbWVWaXN1YWxDb250ZXh0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL01lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVdpbi5jcHA6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL1dLQ0FDRkxheWVyUmVuZGVyZXIuY3BwOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3dpbi9XS0NBQ0ZMYXllclJlbmRlcmVyLmg6CisKIDIwMTEtMDEtMDUgIFpo
ZW55YW8gTW8gIDx6bW9AZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRo
IFJ1c3NlbGwuCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZUNvbW1vbi52c3By
b3BzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZUNvbW1vbi52
c3Byb3BzCShyZXZpc2lvbiA3NTIxMykKKysrIFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZUNvbW1vbi52c3Byb3BzCSh3b3JraW5nIGNvcHkpCkBAIC03LDcgKzcsNyBAQAogCT4KIAk8VG9v
bAogCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgotCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9y
aWVzPSImcXVvdDskKFByb2plY3REaXIpLi4mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGFj
Y2Vzc2liaWxpdHkmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGFjY2Vzc2liaWxpdHlcd2lu
JnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxicmlkZ2UmcXVvdDs7JnF1b3Q7JChQcm9qZWN0
RGlyKS4uXGJyaWRnZVxjJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxicmlkZ2VcanNjJnF1
b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxjc3MmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4u
XGVkaXRpbmcmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGZpbGVhcGkmcXVvdDs7JnF1b3Q7
JChQcm9qZWN0RGlyKS4uXHJlbmRlcmluZyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccmVu
ZGVyaW5nXHN0eWxlJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxyZW5kZXJpbmdcc3ZnJnF1
b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxiaW5kaW5ncyZxdW90OzsmcXVvdDskKFByb2plY3RE
aXIpLi5cYmluZGluZ3NcZ2VuZXJpYyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cYmluZGlu
Z3NcanMmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGJpbmRpbmdzXGpzXHNwZWNpYWxpemF0
aW9uJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxkb20mcXVvdDs7JnF1b3Q7JChQcm9qZWN0
RGlyKS4uXGRvbVxkZWZhdWx0JnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxoaXN0b3J5JnF1
b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxodG1sJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpciku
LlxodG1sXGNhbnZhcyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5caHRtbFxwYXJzZXImcXVv
dDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGh0bWxcc2hhZG93JnF1b3Q7OyZxdW90OyQoUHJvamVj
dERpcikuLlxpbnNwZWN0b3ImcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGxvYWRlciZxdW90
OzsmcXVvdDskKFByb2plY3REaXIpLi5cbG9hZGVyXGFwcGNhY2hlJnF1b3Q7OyZxdW90OyQoUHJv
amVjdERpcikuLlxsb2FkZXJcYXJjaGl2ZSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cbG9h
ZGVyXGFyY2hpdmVcY2YmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGxvYWRlclxjYWNoZSZx
dW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cbG9hZGVyXGljb24mcXVvdDs7JnF1b3Q7JChQcm9q
ZWN0RGlyKS4uXG1hdGhtbCZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cbm90aWZpY2F0aW9u
cyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGFnZSZxdW90OzsmcXVvdDskKFByb2plY3RE
aXIpLi5ccGFnZVxhbmltYXRpb24mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBhZ2Vcd2lu
JnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybSZxdW90OzsmcXVvdDskKFByb2pl
Y3REaXIpLi5ccGxhdGZvcm1cYW5pbWF0aW9uJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxw
bGF0Zm9ybVxtb2NrJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxzcWwmcXVv
dDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXHdpbiZxdW90OzsmcXVvdDskKFByb2pl
Y3REaXIpLi5ccGxhdGZvcm1cbmV0d29yayZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxh
dGZvcm1cbmV0d29ya1x3aW4mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGNm
JnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGljcyZxdW90OzsmcXVv
dDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3NcZmlsdGVycyZxdW90OzsmcXVvdDsk
KFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3Ncb3BlbnR5cGUmcXVvdDs7JnF1b3Q7JChQ
cm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXHRyYW5zZm9ybXMmcXVvdDs7JnF1b3Q7JChQ
cm9qZWN0RGlyKS4uXHBsYXRmb3JtXHRleHQmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBs
YXRmb3JtXHRleHRcdHJhbnNjb2RlciZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZv
cm1cZ3JhcGhpY3Ncd2luJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlx4bWwmcXVvdDs7JnF1
b3Q7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9ialxXZWJDb3JlXERlcml2ZWRTb3VyY2VzJnF1
b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbHVnaW5zJnF1b3Q7OyZxdW90OyQoUHJvamVjdERp
cikuLlxwbHVnaW5zXHdpbiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cc3ZnXGFuaW1hdGlv
biZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cc3ZnXGdyYXBoaWNzJnF1b3Q7OyZxdW90OyQo
UHJvamVjdERpcikuLlxzdmdccHJvcGVydGllcyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5c
c3ZnXGdyYXBoaWNzXGZpbHRlcnMmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHN2ZyZxdW90
OzsmcXVvdDskKFByb2plY3REaXIpLi5cd21sJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxz
dG9yYWdlJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlx3ZWJzb2NrZXRzJnF1b3Q7OyZxdW90
OyQoUHJvamVjdERpcikuLlx3b3JrZXJzJnF1b3Q7OyZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxk
RGlyKVxpbmNsdWRlJnF1b3Q7OyZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRl
XHByaXZhdGUmcXVvdDs7JnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVcSmF2
YVNjcmlwdENvcmUmcXVvdDs7JnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVc
cHJpdmF0ZVxKYXZhU2NyaXB0Q29yZSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cRm9yd2Fy
ZGluZ0hlYWRlcnMmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGUmcXVv
dDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGVccHJpdmF0ZSZxdW90OzsmcXVv
dDskKFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVkZVxwcml2YXRlXEphdmFTY3JpcHRDb3JlJnF1
b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlXHB0aHJlYWRzJnF1b3Q7OyZx
dW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlXHNxbGl0ZSZxdW90OzsmcXVvdDskKFdl
YktpdExpYnJhcmllc0RpcilcaW5jbHVkZVxKYXZhU2NyaXB0Q29yZSZxdW90OzsmcXVvdDskKFdl
YktpdExpYnJhcmllc0RpcilcaW5jbHVkZVx6bGliJnF1b3Q7IgorCQlBZGRpdGlvbmFsSW5jbHVk
ZURpcmVjdG9yaWVzPSImcXVvdDskKFByb2plY3REaXIpLi4mcXVvdDs7JnF1b3Q7JChQcm9qZWN0
RGlyKS4uXGFjY2Vzc2liaWxpdHkmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGFjY2Vzc2li
aWxpdHlcd2luJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxicmlkZ2UmcXVvdDs7JnF1b3Q7
JChQcm9qZWN0RGlyKS4uXGJyaWRnZVxjJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxicmlk
Z2VcanNjJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxjc3MmcXVvdDs7JnF1b3Q7JChQcm9q
ZWN0RGlyKS4uXGVkaXRpbmcmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGZpbGVhcGkmcXVv
dDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHJlbmRlcmluZyZxdW90OzsmcXVvdDskKFByb2plY3RE
aXIpLi5ccmVuZGVyaW5nXHN0eWxlJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxyZW5kZXJp
bmdcc3ZnJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxiaW5kaW5ncyZxdW90OzsmcXVvdDsk
KFByb2plY3REaXIpLi5cYmluZGluZ3NcZ2VuZXJpYyZxdW90OzsmcXVvdDskKFByb2plY3REaXIp
Li5cYmluZGluZ3NcanMmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGJpbmRpbmdzXGpzXHNw
ZWNpYWxpemF0aW9uJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxkb20mcXVvdDs7JnF1b3Q7
JChQcm9qZWN0RGlyKS4uXGRvbVxkZWZhdWx0JnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxo
aXN0b3J5JnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxodG1sJnF1b3Q7OyZxdW90OyQoUHJv
amVjdERpcikuLlxodG1sXGNhbnZhcyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5caHRtbFxw
YXJzZXImcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGh0bWxcc2hhZG93JnF1b3Q7OyZxdW90
OyQoUHJvamVjdERpcikuLlxpbnNwZWN0b3ImcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGxv
YWRlciZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cbG9hZGVyXGFwcGNhY2hlJnF1b3Q7OyZx
dW90OyQoUHJvamVjdERpcikuLlxsb2FkZXJcYXJjaGl2ZSZxdW90OzsmcXVvdDskKFByb2plY3RE
aXIpLi5cbG9hZGVyXGFyY2hpdmVcY2YmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGxvYWRl
clxjYWNoZSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cbG9hZGVyXGljb24mcXVvdDs7JnF1
b3Q7JChQcm9qZWN0RGlyKS4uXG1hdGhtbCZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cbm90
aWZpY2F0aW9ucyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGFnZSZxdW90OzsmcXVvdDsk
KFByb2plY3REaXIpLi5ccGFnZVxhbmltYXRpb24mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4u
XHBhZ2Vcd2luJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybSZxdW90OzsmcXVv
dDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cYW5pbWF0aW9uJnF1b3Q7OyZxdW90OyQoUHJvamVj
dERpcikuLlxwbGF0Zm9ybVxtb2NrJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9y
bVxzcWwmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXHdpbiZxdW90OzsmcXVv
dDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cbmV0d29yayZxdW90OzsmcXVvdDskKFByb2plY3RE
aXIpLi5ccGxhdGZvcm1cbmV0d29ya1x3aW4mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBs
YXRmb3JtXGNmJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGljcyZx
dW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3NcY2EmcXVvdDs7JnF1
b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXGZpbHRlcnMmcXVvdDs7JnF1b3Q7
JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXG9wZW50eXBlJnF1b3Q7OyZxdW90OyQo
UHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGljc1x0cmFuc2Zvcm1zJnF1b3Q7OyZxdW90OyQo
UHJvamVjdERpcikuLlxwbGF0Zm9ybVx0ZXh0JnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxw
bGF0Zm9ybVx0ZXh0XHRyYW5zY29kZXImcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRm
b3JtXGdyYXBoaWNzXHdpbiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ceG1sJnF1b3Q7OyZx
dW90OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmpcV2ViQ29yZVxEZXJpdmVkU291cmNlcyZx
dW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGx1Z2lucyZxdW90OzsmcXVvdDskKFByb2plY3RE
aXIpLi5ccGx1Z2luc1x3aW4mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHN2Z1xhbmltYXRp
b24mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHN2Z1xncmFwaGljcyZxdW90OzsmcXVvdDsk
KFByb2plY3REaXIpLi5cc3ZnXHByb3BlcnRpZXMmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4u
XHN2Z1xncmFwaGljc1xmaWx0ZXJzJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxzdmcmcXVv
dDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHdtbCZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5c
c3RvcmFnZSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cd2Vic29ja2V0cyZxdW90OzsmcXVv
dDskKFByb2plY3REaXIpLi5cd29ya2VycyZxdW90OzsmcXVvdDskKENvbmZpZ3VyYXRpb25CdWls
ZERpcilcaW5jbHVkZSZxdW90OzsmcXVvdDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVk
ZVxwcml2YXRlJnF1b3Q7OyZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXEph
dmFTY3JpcHRDb3JlJnF1b3Q7OyZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRl
XHByaXZhdGVcSmF2YVNjcmlwdENvcmUmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXEZvcndh
cmRpbmdIZWFkZXJzJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlJnF1
b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlXHByaXZhdGUmcXVvdDs7JnF1
b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGVccHJpdmF0ZVxKYXZhU2NyaXB0Q29yZSZx
dW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVkZVxwdGhyZWFkcyZxdW90Ozsm
cXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVkZVxzcWxpdGUmcXVvdDs7JnF1b3Q7JChX
ZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGVcSmF2YVNjcmlwdENvcmUmcXVvdDs7JnF1b3Q7JChX
ZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGVcemxpYiZxdW90OyIKIAkJUHJlcHJvY2Vzc29yRGVm
aW5pdGlvbnM9Il9fV0lOMzJfXztESVNBQkxFXzNEX1JFTkRFUklORztXRUJDT1JFX0NPTlRFWFRf
TUVOVVMiCiAJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIyIgogCQlQcmVjb21waWxlZEhlYWRlclRo
cm91Z2g9IldlYkNvcmVQcmVmaXguaCIKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovY29w
eUZvcndhcmRpbmdIZWFkZXJzLmNtZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUudmNw
cm9qL2NvcHlGb3J3YXJkaW5nSGVhZGVycy5jbWQJKHJldmlzaW9uIDc1MjEzKQorKysgV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9jb3B5Rm9yd2FyZGluZ0hlYWRlcnMuY21kCSh3b3JraW5nIGNvcHkp
CkBAIC0zOCw2ICszOCw3IEBAIHhjb3B5IC95IC9kICIlUHJvamVjdERpciUuLlxwbGF0Zm9ybVxj
ZlwKIHhjb3B5IC95IC9kICIlUHJvamVjdERpciUuLlxwbGF0Zm9ybVxncmFwaGljc1wqLmgiICIl
Q09ORklHVVJBVElPTkJVSUxERElSJVxpbmNsdWRlXFdlYkNvcmUiCiB4Y29weSAveSAvZCAiJVBy
b2plY3REaXIlLi5ccGxhdGZvcm1cZ3JhcGhpY3NcJTFcKi5oIiAiJUNPTkZJR1VSQVRJT05CVUlM
RERJUiVcaW5jbHVkZVxXZWJDb3JlIgogeGNvcHkgL3kgL2QgIiVQcm9qZWN0RGlyJS4uXHBsYXRm
b3JtXGdyYXBoaWNzXHRyYW5zZm9ybXNcKi5oIiAiJUNPTkZJR1VSQVRJT05CVUlMRERJUiVcaW5j
bHVkZVxXZWJDb3JlIgoreGNvcHkgL3kgL2QgIiVQcm9qZWN0RGlyJS4uXHBsYXRmb3JtXGdyYXBo
aWNzXGNhXCouaCIgIiVDT05GSUdVUkFUSU9OQlVJTERESVIlXGluY2x1ZGVcV2ViQ29yZSIKIHhj
b3B5IC95IC9kICIlUHJvamVjdERpciUuLlxwbGF0Zm9ybVxncmFwaGljc1x3aW5cKi5oIiAiJUNP
TkZJR1VSQVRJT05CVUlMRERJUiVcaW5jbHVkZVxXZWJDb3JlIgogeGNvcHkgL3kgL2QgIiVQcm9q
ZWN0RGlyJS4uXHBsYXRmb3JtXGdyYXBoaWNzXHdpblwlMVwqLmgiICIlQ09ORklHVVJBVElPTkJV
SUxERElSJVxpbmNsdWRlXFdlYkNvcmUiCiB4Y29weSAveSAvZCAiJVByb2plY3REaXIlLi5ccGxh
dGZvcm1cZ3JhcGhpY3Ncb3BlbnR5cGVcKi5oIiAiJUNPTkZJR1VSQVRJT05CVUlMRERJUiVcaW5j
bHVkZVxXZWJDb3JlIgpJbmRleDogV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJp
bmdDb250ZXh0LmgJKHJldmlzaW9uIDc1MjEzKQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDcgKzYwLDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgYm9vbCBwYWludHNJbnRvQ2FudmFzQnVmZmVyKCkgY29uc3QgeyBy
ZXR1cm4gdHJ1ZTsgfQogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotICAgIHZp
cnR1YWwgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IHsgcmV0dXJuIDA7IH0K
Ky8vICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IHsgcmV0
dXJuIDA7IH0KICNlbmRpZgogCiBwcm90ZWN0ZWQ6CkluZGV4OiBXZWJDb3JlL3BhZ2UvYW5pbWF0
aW9uL0FuaW1hdGlvbkJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9hbmltYXRp
b24vQW5pbWF0aW9uQmFzZS5jcHAJKHJldmlzaW9uIDc1MjEzKQorKysgV2ViQ29yZS9wYWdlL2Fu
aW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM2Miw2ICsxMzYy
LDExIEBAIHZvaWQgQW5pbWF0aW9uQmFzZTo6Z29JbnRvRW5kaW5nT3JMb29waW4KICAgCiB2b2lk
IEFuaW1hdGlvbkJhc2U6OmZyZWV6ZUF0VGltZShkb3VibGUgdCkKIHsKKyAgICBpZiAoIW1fc3Rh
cnRUaW1lKSB7CisgICAgICAgIC8vIElmIHdlIGhhdmVuJ3Qgc3RhcnRlZCB5ZXQsIGp1c3QgZ2Vu
ZXJhdGUgdGhlIHN0YXJ0IGV2ZW50IG5vdworICAgICAgICBtX2NvbXBBbmltLT5hbmltYXRpb25D
b250cm9sbGVyKCktPnJlY2VpdmVkU3RhcnRUaW1lUmVzcG9uc2UoY3VycmVudFRpbWUoKSk7Cisg
ICAgfQorCiAgICAgQVNTRVJUKG1fc3RhcnRUaW1lKTsgICAgICAgIC8vIGlmIG1fc3RhcnRUaW1l
IGlzIHplcm8sIHdlIGhhdmVuJ3Qgc3RhcnRlZCB5ZXQsIHNvIHdlJ2xsIGdldCBhIGJhZCBwYXVz
ZSB0aW1lLgogICAgIG1fcGF1c2VUaW1lID0gbV9zdGFydFRpbWUgKyB0IC0gbV9hbmltYXRpb24t
PmRlbGF5KCk7CiAKQEAgLTEzODcsNiArMTM5Miw3IEBAIGRvdWJsZSBBbmltYXRpb25CYXNlOjpn
ZXRFbGFwc2VkVGltZSgpIGMKICAgICAgICAgcmV0dXJuIDA7CiAgICAgaWYgKHBvc3RBY3RpdmUo
KSkKICAgICAgICAgcmV0dXJuIDE7CisKICAgICByZXR1cm4gYmVnaW5BbmltYXRpb25VcGRhdGVU
aW1lKCkgLSBtX3N0YXJ0VGltZTsKIH0KICAgICAKSW5kZXg6IFdlYkNvcmUvcGFnZS9hbmltYXRp
b24vQW5pbWF0aW9uQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL2Fu
aW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyLmNwcAkocmV2aXNpb24gNzUyMTMpCisrKyBXZWJD
b3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMTcsNiArMzE3LDcgQEAgZG91YmxlIEFuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlOjpi
ZWdpbgogewogICAgIGlmIChtX2JlZ2luQW5pbWF0aW9uVXBkYXRlVGltZSA9PSBjQmVnaW5Bbmlt
YXRpb25VcGRhdGVUaW1lTm90U2V0KQogICAgICAgICBtX2JlZ2luQW5pbWF0aW9uVXBkYXRlVGlt
ZSA9IG1fZnJhbWUtPmN1cnJlbnRBbmltYXRpb25UaW1lKCk7CisKICAgICByZXR1cm4gbV9iZWdp
bkFuaW1hdGlvblVwZGF0ZVRpbWU7CiB9CiAKSW5kZXg6IFdlYkNvcmUvcGFnZS9hbmltYXRpb24v
S2V5ZnJhbWVBbmltYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9hbmltYXRp
b24vS2V5ZnJhbWVBbmltYXRpb24uY3BwCShyZXZpc2lvbiA3NTIxMykKKysrIFdlYkNvcmUvcGFn
ZS9hbmltYXRpb24vS2V5ZnJhbWVBbmltYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3
ICs3NCwxMSBAQCB2b2lkIEtleWZyYW1lQW5pbWF0aW9uOjpmZXRjaEludGVydmFsRW5kCiAKICAg
ICBkb3VibGUgZnJhY3Rpb25hbFRpbWUgPSBtX2FuaW1hdGlvbi0+ZHVyYXRpb24oKSA/IChlbGFw
c2VkVGltZSAvIG1fYW5pbWF0aW9uLT5kdXJhdGlvbigpKSA6IDE7CiAKLSAgICBBU1NFUlQoZnJh
Y3Rpb25hbFRpbWUgPj0gMCk7CisgICAgLy8gRklYTUU6IHN0YXJ0VGltZSBjYW4gYmUgYmVmb3Jl
IHRoZSBjdXJyZW50IGFuaW1hdGlvbiAiZnJhbWUiIHRpbWUuIFRoaXMgaXMgdG8gc3luYyB3aXRo
IHRoZSBmcmFtZSB0aW1lCisgICAgLy8gY29uY2VwdCBpbiBBbmltYXRpb25UaW1lQ29udHJvbGxl
ci4gU28gd2UgbmVlZCB0byBzb21laG93IHN5bmMgdGhlIHR3by4gVW50aWwgdGhlbiwgdGhlIHBv
c3NpYmxlCisgICAgLy8gZXJyb3IgaXMgc21hbGwgYW5kIHdpbGwgcHJvYmFibHkgbm90IGJlIG5v
dGljZWFibGUuIFVudGlsIHdlIGZpeCB0aGlzLCByZW1vdmUgdGhlIGFzc2VydC4KKyAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTIwMzcKKyAgICAvLyBBU1NF
UlQoZnJhY3Rpb25hbFRpbWUgPj0gMCk7CiAgICAgaWYgKGZyYWN0aW9uYWxUaW1lIDwgMCkKICAg
ICAgICAgZnJhY3Rpb25hbFRpbWUgPSAwOwogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL1BsYXRmb3JtQ0FBbmltYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FBbmltYXRpb24uaAkocmV2aXNpb24gNzUyMTMpCisr
KyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FBbmltYXRpb24uaAkod29y
a2luZyBjb3B5KQpAQCAtNDQsMTAgKzQ0LDggQEAgdHlwZWRlZiB2b2lkKiBDQVByb3BlcnR5QW5p
bWF0aW9uOyAvLyBTbwogdHlwZWRlZiB2b2lkKiBQbGF0Zm9ybUFuaW1hdGlvblJlZjsKICNlbmRp
ZgogI2VsaWYgUExBVEZPUk0oV0lOKQotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgV0tDQUNG
QW5pbWF0aW9uOwotdHlwZWRlZiBXS0NBQ0ZBbmltYXRpb24qIFBsYXRmb3JtQW5pbWF0aW9uUmVm
OwotfQordHlwZWRlZiBzdHJ1Y3QgX0NBQ0ZBbmltYXRpb24gKkNBQ0ZBbmltYXRpb25SZWY7Cit0
eXBlZGVmIENBQ0ZBbmltYXRpb25SZWYgUGxhdGZvcm1BbmltYXRpb25SZWY7CiAjZW5kaWYKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93
aW4vUGxhdGZvcm1DQUFuaW1hdGlvbldpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUFuaW1hdGlvbldpbi5jcHAJKHJldmlzaW9u
IDApCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBQW5pbWF0
aW9uV2luLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NDUgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKworI2luY2x1ZGUgIlBs
YXRmb3JtQ0FBbmltYXRpb24uaCIKKworI2luY2x1ZGUgIkZsb2F0Q29udmVyc2lvbi5oIgorI2lu
Y2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSAiVGltaW5nRnVuY3Rpb24uaCIKKyNp
bmNsdWRlIDxRdWFydHpDb3JlL0NBQ0ZBbmltYXRpb24uaD4KKyNpbmNsdWRlIDxRdWFydHpDb3Jl
L0NBQ0ZUaW1pbmcuaD4KKyNpbmNsdWRlIDxRdWFydHpDb3JlL0NBQ0ZUaW1pbmdGdW5jdGlvbi5o
PgorI2luY2x1ZGUgPFF1YXJ0ekNvcmUvQ0FDRlZhbHVlRnVuY3Rpb24uaD4KKyNpbmNsdWRlIDxR
dWFydHpDb3JlL0NBQ0ZWZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KKwor
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK3N0YXRpYyBTdHJpbmcgdG9DQUNGRmlsbE1vZGVU
eXBlKFBsYXRmb3JtQ0FBbmltYXRpb246OkZpbGxNb2RlVHlwZSB0eXBlKQoreworICAgIHN3aXRj
aCAodHlwZSkgeworICAgIGNhc2UgUGxhdGZvcm1DQUFuaW1hdGlvbjo6Tm9GaWxsTW9kZToKKyAg
ICBjYXNlIFBsYXRmb3JtQ0FBbmltYXRpb246OkZvcndhcmRzOiByZXR1cm4ga0NBQ0ZGaWxsTW9k
ZUZvcndhcmRzOworICAgIGNhc2UgUGxhdGZvcm1DQUFuaW1hdGlvbjo6QmFja3dhcmRzOiByZXR1
cm4ga0NBQ0ZGaWxsTW9kZUJhY2t3YXJkczsKKyAgICBjYXNlIFBsYXRmb3JtQ0FBbmltYXRpb246
OkJvdGg6IHJldHVybiBrQ0FDRkZpbGxNb2RlQm90aDsKKyAgICB9CisgICAgcmV0dXJuICIiOwor
fQorCitzdGF0aWMgUGxhdGZvcm1DQUFuaW1hdGlvbjo6RmlsbE1vZGVUeXBlIGZyb21DQUNGRmls
bE1vZGVUeXBlKGNvbnN0IFN0cmluZyYgc3RyaW5nKQoreworICAgIGlmIChzdHJpbmcgPT0ga0NB
Q0ZGaWxsTW9kZUJhY2t3YXJkcykKKyAgICAgICAgcmV0dXJuIFBsYXRmb3JtQ0FBbmltYXRpb246
OkJhY2t3YXJkczsKKworICAgIGlmIChzdHJpbmcgPT0ga0NBQ0ZGaWxsTW9kZUJvdGgpCisgICAg
ICAgIHJldHVybiBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpCb3RoOworCisgICAgcmV0dXJuIFBsYXRm
b3JtQ0FBbmltYXRpb246OkZvcndhcmRzOworfQorCitzdGF0aWMgU3RyaW5nIHRvQ0FDRlZhbHVl
RnVuY3Rpb25UeXBlKFBsYXRmb3JtQ0FBbmltYXRpb246OlZhbHVlRnVuY3Rpb25UeXBlIHR5cGUp
Cit7CisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpO
b1ZhbHVlRnVuY3Rpb246IHJldHVybiAiIjsKKyAgICBjYXNlIFBsYXRmb3JtQ0FBbmltYXRpb246
OlJvdGF0ZVg6IHJldHVybiBrQ0FDRlZhbHVlRnVuY3Rpb25Sb3RhdGVYOworICAgIGNhc2UgUGxh
dGZvcm1DQUFuaW1hdGlvbjo6Um90YXRlWTogcmV0dXJuIGtDQUNGVmFsdWVGdW5jdGlvblJvdGF0
ZVk7CisgICAgY2FzZSBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpSb3RhdGVaOiByZXR1cm4ga0NBQ0ZW
YWx1ZUZ1bmN0aW9uUm90YXRlWjsKKyAgICBjYXNlIFBsYXRmb3JtQ0FBbmltYXRpb246OlNjYWxl
WDogcmV0dXJuIGtDQUNGVmFsdWVGdW5jdGlvblNjYWxlWDsKKyAgICBjYXNlIFBsYXRmb3JtQ0FB
bmltYXRpb246OlNjYWxlWTogcmV0dXJuIGtDQUNGVmFsdWVGdW5jdGlvblNjYWxlWTsKKyAgICBj
YXNlIFBsYXRmb3JtQ0FBbmltYXRpb246OlNjYWxlWjogcmV0dXJuIGtDQUNGVmFsdWVGdW5jdGlv
blNjYWxlWjsKKyAgICBjYXNlIFBsYXRmb3JtQ0FBbmltYXRpb246OlNjYWxlOiByZXR1cm4ga0NB
Q0ZWYWx1ZUZ1bmN0aW9uU2NhbGU7CisgICAgY2FzZSBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpUcmFu
c2xhdGVYOiByZXR1cm4ga0NBQ0ZWYWx1ZUZ1bmN0aW9uVHJhbnNsYXRlWDsKKyAgICBjYXNlIFBs
YXRmb3JtQ0FBbmltYXRpb246OlRyYW5zbGF0ZVk6IHJldHVybiBrQ0FDRlZhbHVlRnVuY3Rpb25U
cmFuc2xhdGVZOworICAgIGNhc2UgUGxhdGZvcm1DQUFuaW1hdGlvbjo6VHJhbnNsYXRlWjogcmV0
dXJuIGtDQUNGVmFsdWVGdW5jdGlvblRyYW5zbGF0ZVo7CisgICAgY2FzZSBQbGF0Zm9ybUNBQW5p
bWF0aW9uOjpUcmFuc2xhdGU6IHJldHVybiBrQ0FDRlZhbHVlRnVuY3Rpb25UcmFuc2xhdGU7Cisg
ICAgfQorICAgIHJldHVybiAiIjsKK30KKworc3RhdGljIFBsYXRmb3JtQ0FBbmltYXRpb246OlZh
bHVlRnVuY3Rpb25UeXBlIGZyb21DQUNGVmFsdWVGdW5jdGlvblR5cGUoY29uc3QgU3RyaW5nIHN0
cmluZykKK3sKKyAgICBpZiAoc3RyaW5nID09IGtDQUNGVmFsdWVGdW5jdGlvblJvdGF0ZVgpCisg
ICAgICAgIHJldHVybiBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpSb3RhdGVYOworCisgICAgaWYgKHN0
cmluZyA9PSBrQ0FDRlZhbHVlRnVuY3Rpb25Sb3RhdGVZKQorICAgICAgICByZXR1cm4gUGxhdGZv
cm1DQUFuaW1hdGlvbjo6Um90YXRlWTsKKworICAgIGlmIChzdHJpbmcgPT0ga0NBQ0ZWYWx1ZUZ1
bmN0aW9uUm90YXRlWikKKyAgICAgICAgcmV0dXJuIFBsYXRmb3JtQ0FBbmltYXRpb246OlJvdGF0
ZVo7CisKKyAgICBpZiAoc3RyaW5nID09IGtDQUNGVmFsdWVGdW5jdGlvblNjYWxlWCkKKyAgICAg
ICAgcmV0dXJuIFBsYXRmb3JtQ0FBbmltYXRpb246OlNjYWxlWDsKKworICAgIGlmIChzdHJpbmcg
PT0ga0NBQ0ZWYWx1ZUZ1bmN0aW9uU2NhbGVZKQorICAgICAgICByZXR1cm4gUGxhdGZvcm1DQUFu
aW1hdGlvbjo6U2NhbGVZOworCisgICAgaWYgKHN0cmluZyA9PSBrQ0FDRlZhbHVlRnVuY3Rpb25T
Y2FsZVopCisgICAgICAgIHJldHVybiBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpTY2FsZVo7CisKKyAg
ICBpZiAoc3RyaW5nID09IGtDQUNGVmFsdWVGdW5jdGlvblNjYWxlKQorICAgICAgICByZXR1cm4g
UGxhdGZvcm1DQUFuaW1hdGlvbjo6U2NhbGU7CisKKyAgICBpZiAoc3RyaW5nID09IGtDQUNGVmFs
dWVGdW5jdGlvblRyYW5zbGF0ZVgpCisgICAgICAgIHJldHVybiBQbGF0Zm9ybUNBQW5pbWF0aW9u
OjpUcmFuc2xhdGVYOworCisgICAgaWYgKHN0cmluZyA9PSBrQ0FDRlZhbHVlRnVuY3Rpb25UcmFu
c2xhdGVZKQorICAgICAgICByZXR1cm4gUGxhdGZvcm1DQUFuaW1hdGlvbjo6VHJhbnNsYXRlWTsK
KworICAgIGlmIChzdHJpbmcgPT0ga0NBQ0ZWYWx1ZUZ1bmN0aW9uVHJhbnNsYXRlWikKKyAgICAg
ICAgcmV0dXJuIFBsYXRmb3JtQ0FBbmltYXRpb246OlRyYW5zbGF0ZVo7CisKKyAgICBpZiAoc3Ry
aW5nID09IGtDQUNGVmFsdWVGdW5jdGlvblRyYW5zbGF0ZSkKKyAgICAgICAgcmV0dXJuIFBsYXRm
b3JtQ0FBbmltYXRpb246OlRyYW5zbGF0ZTsKKworICAgIHJldHVybiBQbGF0Zm9ybUNBQW5pbWF0
aW9uOjpOb1ZhbHVlRnVuY3Rpb247Cit9CisKK3N0YXRpYyBDQUNGVGltaW5nRnVuY3Rpb25SZWYg
dG9DQUNGVGltaW5nRnVuY3Rpb24oY29uc3QgVGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0aW9u
KQoreworICAgIGlmICghdGltaW5nRnVuY3Rpb24pCisgICAgICAgIHJldHVybiBDQUNGVGltaW5n
RnVuY3Rpb25DcmVhdGUoMC4yNWYsIDAuMWYsIDAuMjVmLCAwLjFmKTsKKyAgICAgICAgICAgIAor
ICAgIGlmICh0aW1pbmdGdW5jdGlvbi0+aXNDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKCkpIHsK
KyAgICAgICAgY29uc3QgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbiogY3RmID0gc3RhdGljX2Nh
c3Q8Y29uc3QgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbio+KHRpbWluZ0Z1bmN0aW9uKTsKKyAg
ICAgICAgcmV0dXJuIENBQ0ZUaW1pbmdGdW5jdGlvbkNyZWF0ZShzdGF0aWNfY2FzdDxmbG9hdD4o
Y3RmLT54MSgpKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGN0Zi0+eTEoKSksIHN0YXRpY19jYXN0PGZs
b2F0PihjdGYtPngyKCkpLCBzdGF0aWNfY2FzdDxmbG9hdD4oY3RmLT55MigpKSk7CisgICAgfQor
ICAgIAorICAgIHJldHVybiBDQUNGVGltaW5nRnVuY3Rpb25HZXRGdW5jdGlvbldpdGhOYW1lKGtD
QUNGVGltaW5nRnVuY3Rpb25MaW5lYXIpOworfQorCitQYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmlt
YXRpb24+IFBsYXRmb3JtQ0FBbmltYXRpb246OmNyZWF0ZShBbmltYXRpb25UeXBlIHR5cGUsIGNv
bnN0IFN0cmluZyYga2V5UGF0aCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBsYXRmb3Jt
Q0FBbmltYXRpb24odHlwZSwga2V5UGF0aCkpOworfQorCitQYXNzUmVmUHRyPFBsYXRmb3JtQ0FB
bmltYXRpb24+IFBsYXRmb3JtQ0FBbmltYXRpb246OmNyZWF0ZShQbGF0Zm9ybUFuaW1hdGlvblJl
ZiBhbmltYXRpb24pCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQbGF0Zm9ybUNBQW5pbWF0
aW9uKGFuaW1hdGlvbikpOworfQorCitQYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IFBs
YXRmb3JtQ0FBbmltYXRpb246OmNyZWF0ZShjb25zdCBQbGF0Zm9ybUNBQW5pbWF0aW9uKiBhbmlt
YXRpb24pCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQbGF0Zm9ybUNBQW5pbWF0aW9uKGFu
aW1hdGlvbikpOworfQorCitzdGF0aWMgdm9pZCBpbml0aWFsaXplKFBsYXRmb3JtQ0FBbmltYXRp
b24qIGFuaW1hdGlvbikKK3sKK30KKworUGxhdGZvcm1DQUFuaW1hdGlvbjo6UGxhdGZvcm1DQUFu
aW1hdGlvbihBbmltYXRpb25UeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCkKKyAgICA6
IG1fdHlwZSh0eXBlKQoreworICAgIGlmICh0eXBlID09IEJhc2ljKQorICAgICAgICBtX2FuaW1h
dGlvbi5hZG9wdENGKENBQ0ZBbmltYXRpb25DcmVhdGUoa0NBQ0ZCYXNpY0FuaW1hdGlvbikpOwor
ICAgIGVsc2UKKyAgICAgICAgbV9hbmltYXRpb24uYWRvcHRDRihDQUNGQW5pbWF0aW9uQ3JlYXRl
KGtDQUNGS2V5ZnJhbWVBbmltYXRpb24pKTsKKyAgICAKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IHMoQWRvcHRDRiwga2V5UGF0aC5jcmVhdGVDRlN0cmluZygpKTsKKyAgICBDQUNGQW5pbWF0
aW9uU2V0S2V5UGF0aChtX2FuaW1hdGlvbi5nZXQoKSwgcy5nZXQoKSk7CisKKyAgICBpbml0aWFs
aXplKHRoaXMpOworfQorCitQbGF0Zm9ybUNBQW5pbWF0aW9uOjpQbGF0Zm9ybUNBQW5pbWF0aW9u
KFBsYXRmb3JtQW5pbWF0aW9uUmVmIGFuaW1hdGlvbikKK3sKKyAgICBpZiAoU3RyaW5nKENBQ0ZB
bmltYXRpb25HZXRDbGFzcyhhbmltYXRpb24pKSA9PSBrQ0FDRkJhc2ljQW5pbWF0aW9uKQorICAg
ICAgICBtX3R5cGUgPSBCYXNpYzsKKyAgICBlbHNlIGlmIChTdHJpbmcoQ0FDRkFuaW1hdGlvbkdl
dENsYXNzKGFuaW1hdGlvbikpID09IGtDQUNGS2V5ZnJhbWVBbmltYXRpb24pCisgICAgICAgIG1f
dHlwZSA9IEtleWZyYW1lOworICAgIGVsc2UgeworICAgICAgICBBU1NFUlQoMCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgCisgICAgbV9hbmltYXRpb24gPSBhbmltYXRpb247CisgICAg
aW5pdGlhbGl6ZSh0aGlzKTsKK30KKworUGxhdGZvcm1DQUFuaW1hdGlvbjo6UGxhdGZvcm1DQUFu
aW1hdGlvbihjb25zdCBQbGF0Zm9ybUNBQW5pbWF0aW9uKiBhbmltYXRpb24pCit7CisgICAgbV9h
bmltYXRpb24uYWRvcHRDRihDQUNGQW5pbWF0aW9uQ3JlYXRlKChhbmltYXRpb24tPmFuaW1hdGlv
blR5cGUoKSA9PSBCYXNpYykgPyBrQ0FDRkJhc2ljQW5pbWF0aW9uIDoga0NBQ0ZLZXlmcmFtZUFu
aW1hdGlvbikpOworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcyhBZG9wdENGLCBhbmltYXRp
b24tPmtleVBhdGgoKS5jcmVhdGVDRlN0cmluZygpKTsKKyAgICBDQUNGQW5pbWF0aW9uU2V0S2V5
UGF0aChtX2FuaW1hdGlvbi5nZXQoKSwgcy5nZXQoKSk7CisKKyAgICBzZXRCZWdpblRpbWUoYW5p
bWF0aW9uLT5iZWdpblRpbWUoKSk7CisgICAgc2V0RHVyYXRpb24oYW5pbWF0aW9uLT5kdXJhdGlv
bigpKTsKKyAgICBzZXRTcGVlZChhbmltYXRpb24tPnNwZWVkKCkpOworICAgIHNldFRpbWVPZmZz
ZXQoYW5pbWF0aW9uLT50aW1lT2Zmc2V0KCkpOworICAgIHNldFJlcGVhdENvdW50KGFuaW1hdGlv
bi0+cmVwZWF0Q291bnQoKSk7CisgICAgc2V0QXV0b3JldmVyc2VzKGFuaW1hdGlvbi0+YXV0b3Jl
dmVyc2VzKCkpOworICAgIHNldEZpbGxNb2RlKGFuaW1hdGlvbi0+ZmlsbE1vZGUoKSk7CisgICAg
c2V0UmVtb3ZlZE9uQ29tcGxldGlvbihhbmltYXRpb24tPmlzUmVtb3ZlZE9uQ29tcGxldGlvbigp
KTsKKyAgICBzZXRBZGRpdGl2ZShhbmltYXRpb24tPmlzQWRkaXRpdmUoKSk7CisgICAgY29weVRp
bWluZ0Z1bmN0aW9uRnJvbShhbmltYXRpb24pOworICAgIHNldFZhbHVlRnVuY3Rpb24oYW5pbWF0
aW9uLT52YWx1ZUZ1bmN0aW9uKCkpOworCisgICAgLy8gQ29weSB0aGUgc3BlY2lmaWMgQmFzaWMg
b3IgS2V5ZnJhbWUgdmFsdWVzCisgICAgaWYgKGFuaW1hdGlvbi0+YW5pbWF0aW9uVHlwZSgpID09
IEtleWZyYW1lKSB7CisgICAgICAgIGNvcHlWYWx1ZXNGcm9tKGFuaW1hdGlvbik7CisgICAgICAg
IGNvcHlLZXlUaW1lc0Zyb20oYW5pbWF0aW9uKTsKKyAgICAgICAgY29weVRpbWluZ0Z1bmN0aW9u
c0Zyb20oYW5pbWF0aW9uKTsKKyAgICB9IGVsc2UgeworICAgICAgICBjb3B5RnJvbVZhbHVlRnJv
bShhbmltYXRpb24pOworICAgICAgICBjb3B5VG9WYWx1ZUZyb20oYW5pbWF0aW9uKTsKKyAgICB9
Cit9CisKK1BsYXRmb3JtQ0FBbmltYXRpb246On5QbGF0Zm9ybUNBQW5pbWF0aW9uKCkKK3sKK30K
KworYm9vbCBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpzdXBwb3J0c1ZhbHVlRnVuY3Rpb24oKQorewor
ICAgIHJldHVybiB0cnVlOworfQorCitQbGF0Zm9ybUFuaW1hdGlvblJlZiBQbGF0Zm9ybUNBQW5p
bWF0aW9uOjpwbGF0Zm9ybUFuaW1hdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fYW5pbWF0
aW9uLmdldCgpOworfQorCitTdHJpbmcgUGxhdGZvcm1DQUFuaW1hdGlvbjo6a2V5UGF0aCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIENBQ0ZBbmltYXRpb25HZXRLZXlQYXRoKG1fYW5pbWF0aW9uLmdl
dCgpKTsKK30KKworQ0ZUaW1lSW50ZXJ2YWwgUGxhdGZvcm1DQUFuaW1hdGlvbjo6YmVnaW5UaW1l
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gQ0FDRkFuaW1hdGlvbkdldEJlZ2luVGltZShtX2FuaW1h
dGlvbi5nZXQoKSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbjo6c2V0QmVnaW5UaW1l
KENGVGltZUludGVydmFsIHZhbHVlKQoreworICAgIENBQ0ZBbmltYXRpb25TZXRCZWdpblRpbWUo
bV9hbmltYXRpb24uZ2V0KCksIHZhbHVlKTsKK30KKworQ0ZUaW1lSW50ZXJ2YWwgUGxhdGZvcm1D
QUFuaW1hdGlvbjo6ZHVyYXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBDQUNGQW5pbWF0aW9u
R2V0RHVyYXRpb24obV9hbmltYXRpb24uZ2V0KCkpOworfQorCit2b2lkIFBsYXRmb3JtQ0FBbmlt
YXRpb246OnNldER1cmF0aW9uKENGVGltZUludGVydmFsIHZhbHVlKQoreworICAgIENBQ0ZBbmlt
YXRpb25TZXREdXJhdGlvbihtX2FuaW1hdGlvbi5nZXQoKSwgdmFsdWUpOworfQorCitmbG9hdCBQ
bGF0Zm9ybUNBQW5pbWF0aW9uOjpzcGVlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIENBQ0ZBbmlt
YXRpb25HZXRTcGVlZChtX2FuaW1hdGlvbi5nZXQoKSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUFu
aW1hdGlvbjo6c2V0U3BlZWQoZmxvYXQgdmFsdWUpCit7CisgICAgQ0FDRkFuaW1hdGlvblNldFNw
ZWVkKG1fYW5pbWF0aW9uLmdldCgpLCB2YWx1ZSk7Cit9CisKK0NGVGltZUludGVydmFsIFBsYXRm
b3JtQ0FBbmltYXRpb246OnRpbWVPZmZzZXQoKSBjb25zdAoreworICAgIHJldHVybiBDQUNGQW5p
bWF0aW9uR2V0VGltZU9mZnNldChtX2FuaW1hdGlvbi5nZXQoKSk7Cit9CisKK3ZvaWQgUGxhdGZv
cm1DQUFuaW1hdGlvbjo6c2V0VGltZU9mZnNldChDRlRpbWVJbnRlcnZhbCB2YWx1ZSkKK3sKKyAg
ICBDQUNGQW5pbWF0aW9uU2V0VGltZU9mZnNldChtX2FuaW1hdGlvbi5nZXQoKSwgdmFsdWUpOwor
fQorCitmbG9hdCBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpyZXBlYXRDb3VudCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIENBQ0ZBbmltYXRpb25HZXRSZXBlYXRDb3VudChtX2FuaW1hdGlvbi5nZXQoKSk7
Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbjo6c2V0UmVwZWF0Q291bnQoZmxvYXQgdmFs
dWUpCit7CisgICAgQ0FDRkFuaW1hdGlvblNldFJlcGVhdENvdW50KG1fYW5pbWF0aW9uLmdldCgp
LCB2YWx1ZSk7Cit9CisKK2Jvb2wgUGxhdGZvcm1DQUFuaW1hdGlvbjo6YXV0b3JldmVyc2VzKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gQ0FDRkFuaW1hdGlvbkdldEF1dG9yZXZlcnNlcyhtX2FuaW1h
dGlvbi5nZXQoKSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbjo6c2V0QXV0b3JldmVy
c2VzKGJvb2wgdmFsdWUpCit7CisgICAgQ0FDRkFuaW1hdGlvblNldEF1dG9yZXZlcnNlcyhtX2Fu
aW1hdGlvbi5nZXQoKSwgdmFsdWUpOworfQorCitQbGF0Zm9ybUNBQW5pbWF0aW9uOjpGaWxsTW9k
ZVR5cGUgUGxhdGZvcm1DQUFuaW1hdGlvbjo6ZmlsbE1vZGUoKSBjb25zdAoreworICAgIHJldHVy
biBmcm9tQ0FDRkZpbGxNb2RlVHlwZShDQUNGQW5pbWF0aW9uR2V0RmlsbE1vZGUobV9hbmltYXRp
b24uZ2V0KCkpKTsKK30KKwordm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpzZXRGaWxsTW9kZShG
aWxsTW9kZVR5cGUgdmFsdWUpCit7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBzKEFkb3B0
Q0YsIHRvQ0FDRkZpbGxNb2RlVHlwZSh2YWx1ZSkuY3JlYXRlQ0ZTdHJpbmcoKSk7CisgICAgQ0FD
RkFuaW1hdGlvblNldEZpbGxNb2RlKG1fYW5pbWF0aW9uLmdldCgpLCBzLmdldCgpKTsKK30KKwor
dm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpzZXRUaW1pbmdGdW5jdGlvbihjb25zdCBUaW1pbmdG
dW5jdGlvbiogdmFsdWUpCit7CisgICAgQ0FDRkFuaW1hdGlvblNldFRpbWluZ0Z1bmN0aW9uKG1f
YW5pbWF0aW9uLmdldCgpLCB0b0NBQ0ZUaW1pbmdGdW5jdGlvbih2YWx1ZSkpOworfQorCit2b2lk
IFBsYXRmb3JtQ0FBbmltYXRpb246OmNvcHlUaW1pbmdGdW5jdGlvbkZyb20oY29uc3QgUGxhdGZv
cm1DQUFuaW1hdGlvbiogdmFsdWUpCit7CisgICAgQ0FDRkFuaW1hdGlvblNldFRpbWluZ0Z1bmN0
aW9uKG1fYW5pbWF0aW9uLmdldCgpLCBDQUNGQW5pbWF0aW9uR2V0VGltaW5nRnVuY3Rpb24odmFs
dWUtPm1fYW5pbWF0aW9uLmdldCgpKSk7Cit9CisKK2Jvb2wgUGxhdGZvcm1DQUFuaW1hdGlvbjo6
aXNSZW1vdmVkT25Db21wbGV0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gQ0FDRkFuaW1hdGlv
bklzUmVtb3ZlZE9uQ29tcGxldGlvbihtX2FuaW1hdGlvbi5nZXQoKSk7Cit9CisKK3ZvaWQgUGxh
dGZvcm1DQUFuaW1hdGlvbjo6c2V0UmVtb3ZlZE9uQ29tcGxldGlvbihib29sIHZhbHVlKQorewor
ICAgIENBQ0ZBbmltYXRpb25TZXRSZW1vdmVkT25Db21wbGV0aW9uKG1fYW5pbWF0aW9uLmdldCgp
LCB2YWx1ZSk7Cit9CisKK2Jvb2wgUGxhdGZvcm1DQUFuaW1hdGlvbjo6aXNBZGRpdGl2ZSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIENBQ0ZBbmltYXRpb25Jc0FkZGl0aXZlKG1fYW5pbWF0aW9uLmdl
dCgpKTsKK30KKwordm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpzZXRBZGRpdGl2ZShib29sIHZh
bHVlKQoreworICAgIENBQ0ZBbmltYXRpb25TZXRBZGRpdGl2ZShtX2FuaW1hdGlvbi5nZXQoKSwg
dmFsdWUpOworfQorCitQbGF0Zm9ybUNBQW5pbWF0aW9uOjpWYWx1ZUZ1bmN0aW9uVHlwZSBQbGF0
Zm9ybUNBQW5pbWF0aW9uOjp2YWx1ZUZ1bmN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZnJv
bUNBQ0ZWYWx1ZUZ1bmN0aW9uVHlwZShDQUNGVmFsdWVGdW5jdGlvbkdldE5hbWUoQ0FDRkFuaW1h
dGlvbkdldFZhbHVlRnVuY3Rpb24obV9hbmltYXRpb24uZ2V0KCkpKSk7Cit9CisKK3ZvaWQgUGxh
dGZvcm1DQUFuaW1hdGlvbjo6c2V0VmFsdWVGdW5jdGlvbihWYWx1ZUZ1bmN0aW9uVHlwZSB2YWx1
ZSkKK3sKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHMoQWRvcHRDRiwgdG9DQUNGVmFsdWVG
dW5jdGlvblR5cGUodmFsdWUpLmNyZWF0ZUNGU3RyaW5nKCkpOworICAgIENBQ0ZBbmltYXRpb25T
ZXRWYWx1ZUZ1bmN0aW9uKG1fYW5pbWF0aW9uLmdldCgpLCBDQUNGVmFsdWVGdW5jdGlvbkdldEZ1
bmN0aW9uV2l0aE5hbWUocy5nZXQoKSkpOworfQorCit2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb246
OnNldEZyb21WYWx1ZShmbG9hdCB2YWx1ZSkKK3sKKyAgICBpZiAoYW5pbWF0aW9uVHlwZSgpICE9
IEJhc2ljKQorICAgICAgICByZXR1cm47CisKKyAgICBSZXRhaW5QdHI8Q0ZOdW1iZXJSZWY+IHYo
QWRvcHRDRiwgQ0ZOdW1iZXJDcmVhdGUoMCwga0NGTnVtYmVyRmxvYXRUeXBlLCAmdmFsdWUpKTsK
KyAgICBDQUNGQW5pbWF0aW9uU2V0RnJvbVZhbHVlKG1fYW5pbWF0aW9uLmdldCgpLCB2LmdldCgp
KTsKK30KKwordm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpzZXRGcm9tVmFsdWUoY29uc3QgV2Vi
Q29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXgmIHZhbHVlKQoreworICAgIGlmIChhbmltYXRpb25U
eXBlKCkgIT0gQmFzaWMpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBSZXRhaW5QdHI8Q0FD
RlZlY3RvclJlZj4gdihBZG9wdENGLCBDQUNGVmVjdG9yQ3JlYXRlVHJhbnNmb3JtKHZhbHVlKSk7
CisgICAgQ0FDRkFuaW1hdGlvblNldEZyb21WYWx1ZShtX2FuaW1hdGlvbi5nZXQoKSwgdi5nZXQo
KSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbjo6c2V0RnJvbVZhbHVlKGNvbnN0IEZs
b2F0UG9pbnQzRCYgdmFsdWUpCit7CisgICAgaWYgKGFuaW1hdGlvblR5cGUoKSAhPSBCYXNpYykK
KyAgICAgICAgcmV0dXJuOworCisgICAgZmxvYXQgYVszXSA9IHsgdmFsdWUueCgpLCB2YWx1ZS55
KCksIHZhbHVlLnooKSB9OworICAgIFJldGFpblB0cjxDQUNGVmVjdG9yUmVmPiB2KEFkb3B0Q0Ys
IENBQ0ZWZWN0b3JDcmVhdGUoMywgYSkpOworICAgIENBQ0ZBbmltYXRpb25TZXRGcm9tVmFsdWUo
bV9hbmltYXRpb24uZ2V0KCksIHYuZ2V0KCkpOworfQorCit2b2lkIFBsYXRmb3JtQ0FBbmltYXRp
b246OnNldEZyb21WYWx1ZShjb25zdCBXZWJDb3JlOjpDb2xvciYgdmFsdWUpCit7CisgICAgaWYg
KGFuaW1hdGlvblR5cGUoKSAhPSBCYXNpYykKKyAgICAgICAgcmV0dXJuOworCisgICAgZmxvYXQg
YVs0XSA9IHsgdmFsdWUucmVkKCksIHZhbHVlLmdyZWVuKCksIHZhbHVlLmJsdWUoKSwgdmFsdWUu
YWxwaGEoKSB9OworICAgIFJldGFpblB0cjxDQUNGVmVjdG9yUmVmPiB2KEFkb3B0Q0YsIENBQ0ZW
ZWN0b3JDcmVhdGUoNCwgYSkpOworICAgIENBQ0ZBbmltYXRpb25TZXRGcm9tVmFsdWUobV9hbmlt
YXRpb24uZ2V0KCksIHYuZ2V0KCkpOworfQorCit2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb246OmNv
cHlGcm9tVmFsdWVGcm9tKGNvbnN0IFBsYXRmb3JtQ0FBbmltYXRpb24qIHZhbHVlKQoreworICAg
IGlmIChhbmltYXRpb25UeXBlKCkgIT0gQmFzaWMgfHwgdmFsdWUtPmFuaW1hdGlvblR5cGUoKSAh
PSBCYXNpYykKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIENBQ0ZBbmltYXRpb25TZXRGcm9t
VmFsdWUobV9hbmltYXRpb24uZ2V0KCksIENBQ0ZBbmltYXRpb25HZXRGcm9tVmFsdWUodmFsdWUt
PnBsYXRmb3JtQW5pbWF0aW9uKCkpKTsKK30KKwordm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpz
ZXRUb1ZhbHVlKGZsb2F0IHZhbHVlKQoreworICAgIGlmIChhbmltYXRpb25UeXBlKCkgIT0gQmFz
aWMpCisgICAgICAgIHJldHVybjsKKworICAgIFJldGFpblB0cjxDRk51bWJlclJlZj4gdihBZG9w
dENGLCBDRk51bWJlckNyZWF0ZSgwLCBrQ0ZOdW1iZXJGbG9hdFR5cGUsICZ2YWx1ZSkpOworICAg
IENBQ0ZBbmltYXRpb25TZXRUb1ZhbHVlKG1fYW5pbWF0aW9uLmdldCgpLCB2LmdldCgpKTsKK30K
Kwordm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpzZXRUb1ZhbHVlKGNvbnN0IFdlYkNvcmU6OlRy
YW5zZm9ybWF0aW9uTWF0cml4JiB2YWx1ZSkKK3sKKyAgICBpZiAoYW5pbWF0aW9uVHlwZSgpICE9
IEJhc2ljKQorICAgICAgICByZXR1cm47CisKKyAgICBSZXRhaW5QdHI8Q0FDRlZlY3RvclJlZj4g
dihBZG9wdENGLCBDQUNGVmVjdG9yQ3JlYXRlVHJhbnNmb3JtKHZhbHVlKSk7CisgICAgQ0FDRkFu
aW1hdGlvblNldFRvVmFsdWUobV9hbmltYXRpb24uZ2V0KCksIHYuZ2V0KCkpOworfQorCit2b2lk
IFBsYXRmb3JtQ0FBbmltYXRpb246OnNldFRvVmFsdWUoY29uc3QgRmxvYXRQb2ludDNEJiB2YWx1
ZSkKK3sKKyAgICBpZiAoYW5pbWF0aW9uVHlwZSgpICE9IEJhc2ljKQorICAgICAgICByZXR1cm47
CisKKyAgICBmbG9hdCBhWzNdID0geyB2YWx1ZS54KCksIHZhbHVlLnkoKSwgdmFsdWUueigpIH07
CisgICAgUmV0YWluUHRyPENBQ0ZWZWN0b3JSZWY+IHYoQWRvcHRDRiwgQ0FDRlZlY3RvckNyZWF0
ZSgzLCBhKSk7CisgICAgQ0FDRkFuaW1hdGlvblNldFRvVmFsdWUobV9hbmltYXRpb24uZ2V0KCks
IHYuZ2V0KCkpOworfQorCit2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb246OnNldFRvVmFsdWUoY29u
c3QgV2ViQ29yZTo6Q29sb3ImIHZhbHVlKQoreworICAgIGlmIChhbmltYXRpb25UeXBlKCkgIT0g
QmFzaWMpCisgICAgICAgIHJldHVybjsKKworICAgIGZsb2F0IGFbNF0gPSB7IHZhbHVlLnJlZCgp
LCB2YWx1ZS5ncmVlbigpLCB2YWx1ZS5ibHVlKCksIHZhbHVlLmFscGhhKCkgfTsKKyAgICBSZXRh
aW5QdHI8Q0FDRlZlY3RvclJlZj4gdihBZG9wdENGLCBDQUNGVmVjdG9yQ3JlYXRlKDQsIGEpKTsK
KyAgICBDQUNGQW5pbWF0aW9uU2V0VG9WYWx1ZShtX2FuaW1hdGlvbi5nZXQoKSwgdi5nZXQoKSk7
Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbjo6Y29weVRvVmFsdWVGcm9tKGNvbnN0IFBs
YXRmb3JtQ0FBbmltYXRpb24qIHZhbHVlKQoreworICAgIGlmIChhbmltYXRpb25UeXBlKCkgIT0g
QmFzaWMgfHwgdmFsdWUtPmFuaW1hdGlvblR5cGUoKSAhPSBCYXNpYykKKyAgICAgICAgcmV0dXJu
OworICAgICAgICAKKyAgICBDQUNGQW5pbWF0aW9uU2V0VG9WYWx1ZShtX2FuaW1hdGlvbi5nZXQo
KSwgQ0FDRkFuaW1hdGlvbkdldFRvVmFsdWUodmFsdWUtPnBsYXRmb3JtQW5pbWF0aW9uKCkpKTsK
K30KKworCisvLyBLZXlmcmFtZS1hbmltYXRpb24gcHJvcGVydGllcy4KK3ZvaWQgUGxhdGZvcm1D
QUFuaW1hdGlvbjo6c2V0VmFsdWVzKGNvbnN0IFZlY3RvcjxmbG9hdD4mIHZhbHVlKQoreworICAg
IGlmIChhbmltYXRpb25UeXBlKCkgIT0gS2V5ZnJhbWUpCisgICAgICAgIHJldHVybjsKKworICAg
IFJldGFpblB0cjxDRk11dGFibGVBcnJheVJlZj4gYXJyYXkoQWRvcHRDRiwgQ0ZBcnJheUNyZWF0
ZU11dGFibGUoMCwgdmFsdWUuc2l6ZSgpLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKSk7CisgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCB2YWx1ZS5zaXplKCk7ICsraSkgeworICAgICAgICBSZXRh
aW5QdHI8Q0ZOdW1iZXJSZWY+IHYoQWRvcHRDRiwgQ0ZOdW1iZXJDcmVhdGUoMCwga0NGTnVtYmVy
RmxvYXRUeXBlLCAmdmFsdWVbaV0pKTsKKyAgICAgICAgQ0ZBcnJheUFwcGVuZFZhbHVlKGFycmF5
LmdldCgpLCB2LmdldCgpKTsKKyAgICB9CisKKyAgICBDQUNGQW5pbWF0aW9uU2V0VmFsdWVzKG1f
YW5pbWF0aW9uLmdldCgpLCBhcnJheS5nZXQoKSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUFuaW1h
dGlvbjo6c2V0VmFsdWVzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJp
eD4mIHZhbHVlKQoreworICAgIGlmIChhbmltYXRpb25UeXBlKCkgIT0gS2V5ZnJhbWUpCisgICAg
ICAgIHJldHVybjsKKworICAgIFJldGFpblB0cjxDRk11dGFibGVBcnJheVJlZj4gYXJyYXkoQWRv
cHRDRiwgQ0ZBcnJheUNyZWF0ZU11dGFibGUoMCwgdmFsdWUuc2l6ZSgpLCAma0NGVHlwZUFycmF5
Q2FsbEJhY2tzKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2YWx1ZS5zaXplKCk7ICsr
aSkgeworICAgICAgICBSZXRhaW5QdHI8Q0FDRlZlY3RvclJlZj4gdihBZG9wdENGLCBDQUNGVmVj
dG9yQ3JlYXRlVHJhbnNmb3JtKHZhbHVlW2ldKSk7CisgICAgICAgIENGQXJyYXlBcHBlbmRWYWx1
ZShhcnJheS5nZXQoKSwgdi5nZXQoKSk7CisgICAgfQorCisgICAgQ0FDRkFuaW1hdGlvblNldFZh
bHVlcyhtX2FuaW1hdGlvbi5nZXQoKSwgYXJyYXkuZ2V0KCkpOworfQorCit2b2lkIFBsYXRmb3Jt
Q0FBbmltYXRpb246OnNldFZhbHVlcyhjb25zdCBWZWN0b3I8RmxvYXRQb2ludDNEPiYgdmFsdWUp
Cit7CisgICAgaWYgKGFuaW1hdGlvblR5cGUoKSAhPSBLZXlmcmFtZSkKKyAgICAgICAgcmV0dXJu
OworICAgICAgICAKKyAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlQXJyYXlSZWY+IGFycmF5KEFkb3B0
Q0YsIENGQXJyYXlDcmVhdGVNdXRhYmxlKDAsIHZhbHVlLnNpemUoKSwgJmtDRlR5cGVBcnJheUNh
bGxCYWNrcykpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmFsdWUuc2l6ZSgpOyArK2kp
IHsKKyAgICAgICAgZmxvYXQgYVszXSA9IHsgdmFsdWVbaV0ueCgpLCB2YWx1ZVtpXS55KCksIHZh
bHVlW2ldLnooKSB9OworICAgICAgICBSZXRhaW5QdHI8Q0FDRlZlY3RvclJlZj4gdihBZG9wdENG
LCBDQUNGVmVjdG9yQ3JlYXRlKDMsIGEpKTsKKyAgICAgICAgQ0ZBcnJheUFwcGVuZFZhbHVlKGFy
cmF5LmdldCgpLCB2LmdldCgpKTsKKyAgICB9CisKKyAgICBDQUNGQW5pbWF0aW9uU2V0VmFsdWVz
KG1fYW5pbWF0aW9uLmdldCgpLCBhcnJheS5nZXQoKSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUFu
aW1hdGlvbjo6c2V0VmFsdWVzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb2xvcj4mIHZhbHVlKQor
eworICAgIGlmIChhbmltYXRpb25UeXBlKCkgIT0gS2V5ZnJhbWUpCisgICAgICAgIHJldHVybjsK
KyAgICAgICAgCisgICAgUmV0YWluUHRyPENGTXV0YWJsZUFycmF5UmVmPiBhcnJheShBZG9wdENG
LCBDRkFycmF5Q3JlYXRlTXV0YWJsZSgwLCB2YWx1ZS5zaXplKCksICZrQ0ZUeXBlQXJyYXlDYWxs
QmFja3MpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHZhbHVlLnNpemUoKTsgKytpKSB7
CisgICAgICAgIGZsb2F0IGFbNF0gPSB7IHZhbHVlW2ldLnJlZCgpLCB2YWx1ZVtpXS5ncmVlbigp
LCB2YWx1ZVtpXS5ibHVlKCksIHZhbHVlW2ldLmFscGhhKCkgfTsKKyAgICAgICAgUmV0YWluUHRy
PENBQ0ZWZWN0b3JSZWY+IHYoQWRvcHRDRiwgQ0FDRlZlY3RvckNyZWF0ZSg0LCBhKSk7CisgICAg
ICAgIENGQXJyYXlBcHBlbmRWYWx1ZShhcnJheS5nZXQoKSwgdi5nZXQoKSk7CisgICAgfQorCisg
ICAgQ0FDRkFuaW1hdGlvblNldFZhbHVlcyhtX2FuaW1hdGlvbi5nZXQoKSwgYXJyYXkuZ2V0KCkp
OworfQorCit2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb246OmNvcHlWYWx1ZXNGcm9tKGNvbnN0IFBs
YXRmb3JtQ0FBbmltYXRpb24qIHZhbHVlKQoreworICAgIGlmIChhbmltYXRpb25UeXBlKCkgIT0g
S2V5ZnJhbWUgfHwgdmFsdWUtPmFuaW1hdGlvblR5cGUoKSAhPSBLZXlmcmFtZSkKKyAgICAgICAg
cmV0dXJuOworICAgIAorICAgIENBQ0ZBbmltYXRpb25TZXRWYWx1ZXMobV9hbmltYXRpb24uZ2V0
KCksIENBQ0ZBbmltYXRpb25HZXRWYWx1ZXModmFsdWUtPnBsYXRmb3JtQW5pbWF0aW9uKCkpKTsK
K30KKwordm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpzZXRLZXlUaW1lcyhjb25zdCBWZWN0b3I8
ZmxvYXQ+JiB2YWx1ZSkKK3sKKyAgICBpZiAoYW5pbWF0aW9uVHlwZSgpICE9IEtleWZyYW1lKQor
ICAgICAgICByZXR1cm47CisgICAgICAgIAorICAgIFJldGFpblB0cjxDRk11dGFibGVBcnJheVJl
Zj4gYXJyYXkoQWRvcHRDRiwgQ0ZBcnJheUNyZWF0ZU11dGFibGUoMCwgdmFsdWUuc2l6ZSgpLCAm
a0NGVHlwZUFycmF5Q2FsbEJhY2tzKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2YWx1
ZS5zaXplKCk7ICsraSkgeworICAgICAgICBSZXRhaW5QdHI8Q0ZOdW1iZXJSZWY+IHYoQWRvcHRD
RiwgQ0ZOdW1iZXJDcmVhdGUoMCwga0NGTnVtYmVyRmxvYXRUeXBlLCAmdmFsdWVbaV0pKTsKKyAg
ICAgICAgQ0ZBcnJheUFwcGVuZFZhbHVlKGFycmF5LmdldCgpLCB2LmdldCgpKTsKKyAgICB9CisK
KyAgICBDQUNGQW5pbWF0aW9uU2V0S2V5VGltZXMobV9hbmltYXRpb24uZ2V0KCksIGFycmF5Lmdl
dCgpKTsKK30KKwordm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpjb3B5S2V5VGltZXNGcm9tKGNv
bnN0IFBsYXRmb3JtQ0FBbmltYXRpb24qIHZhbHVlKQoreworICAgIGlmIChhbmltYXRpb25UeXBl
KCkgIT0gS2V5ZnJhbWUpCisgICAgICAgIHJldHVybjsKKworICAgIENBQ0ZBbmltYXRpb25TZXRL
ZXlUaW1lcyhtX2FuaW1hdGlvbi5nZXQoKSwgQ0FDRkFuaW1hdGlvbkdldEtleVRpbWVzKHZhbHVl
LT5wbGF0Zm9ybUFuaW1hdGlvbigpKSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbjo6
c2V0VGltaW5nRnVuY3Rpb25zKGNvbnN0IFZlY3Rvcjxjb25zdCBUaW1pbmdGdW5jdGlvbio+JiB2
YWx1ZSkKK3sKKyAgICBpZiAoYW5pbWF0aW9uVHlwZSgpICE9IEtleWZyYW1lKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlQXJyYXlSZWY+IGFycmF5KEFkb3B0Q0Ys
IENGQXJyYXlDcmVhdGVNdXRhYmxlKDAsIHZhbHVlLnNpemUoKSwgJmtDRlR5cGVBcnJheUNhbGxC
YWNrcykpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmFsdWUuc2l6ZSgpOyArK2kpIHsK
KyAgICAgICAgUmV0YWluUHRyPENGTnVtYmVyUmVmPiB2KEFkb3B0Q0YsIENGTnVtYmVyQ3JlYXRl
KDAsIGtDRk51bWJlckZsb2F0VHlwZSwgJnZhbHVlW2ldKSk7CisgICAgICAgIENGQXJyYXlBcHBl
bmRWYWx1ZShhcnJheS5nZXQoKSwgdG9DQUNGVGltaW5nRnVuY3Rpb24odmFsdWVbaV0pKTsKKyAg
ICB9CisKKyAgICBDQUNGQW5pbWF0aW9uU2V0VGltaW5nRnVuY3Rpb25zKG1fYW5pbWF0aW9uLmdl
dCgpLCBhcnJheS5nZXQoKSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbjo6Y29weVRp
bWluZ0Z1bmN0aW9uc0Zyb20oY29uc3QgUGxhdGZvcm1DQUFuaW1hdGlvbiogdmFsdWUpCit7Cisg
ICAgQ0FDRkFuaW1hdGlvblNldFRpbWluZ0Z1bmN0aW9ucyhtX2FuaW1hdGlvbi5nZXQoKSwgQ0FD
RkFuaW1hdGlvbkdldFRpbWluZ0Z1bmN0aW9ucyh2YWx1ZS0+cGxhdGZvcm1BbmltYXRpb24oKSkp
OworfQorCisjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpJbmRleDogV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5
ZXJXaW4uY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93
aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3MTMgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykK
KworI2luY2x1ZGUgIlBsYXRmb3JtQ0FMYXllci5oIgorCisjaW5jbHVkZSAiRm9udC5oIgorI2lu
Y2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtQ0FMYXllcldpbklu
dGVybmFsLmgiCisjaW5jbHVkZSAiV0tDQUNGTGF5ZXJSZW5kZXJlci5oIgorI2luY2x1ZGUgPFF1
YXJ0ekNvcmUvQ0FDRkFuaW1hdGlvbi5oPgorI2luY2x1ZGUgPFF1YXJ0ekNvcmUvQ0FDRkNvbnRl
eHQuaD4KKyNpbmNsdWRlIDxRdWFydHpDb3JlL0NBQ0ZMYXllci5oPgorI2luY2x1ZGUgPHd0Zi9D
dXJyZW50VGltZS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKwordXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CisKK2Jvb2wgUGxhdGZvcm1DQUxheWVyOjppc1ZhbHVlRnVuY3Rpb25T
dXBwb3J0ZWQoKQoreworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFBsYXRmb3JtQ0FMYXll
cjo6c2V0T3duZXIoUGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd25lcikKK3sKKyAgICBtX293bmVy
ID0gb3duZXI7Cit9CisKK3N0YXRpYyBDRlN0cmluZ1JlZiB0b0NBQ0ZMYXllclR5cGUoUGxhdGZv
cm1DQUxheWVyOjpMYXllclR5cGUgdHlwZSkKK3sKKyAgICByZXR1cm4gKHR5cGUgPT0gUGxhdGZv
cm1DQUxheWVyOjpMYXllclR5cGVUcmFuc2Zvcm1MYXllcikgPyBrQ0FDRlRyYW5zZm9ybUxheWVy
IDoga0NBQ0ZMYXllcjsKK30KKworc3RhdGljIENGU3RyaW5nUmVmIHRvQ0FDRkZpbHRlclR5cGUo
UGxhdGZvcm1DQUxheWVyOjpGaWx0ZXJUeXBlIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKSB7
CisgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxpbmVhcjogcmV0dXJuIGtDQUNGRmlsdGVyTGlu
ZWFyOworICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpOZWFyZXN0OiByZXR1cm4ga0NBQ0ZGaWx0
ZXJOZWFyZXN0OworICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpUcmlsaW5lYXI6IHJldHVybiBr
Q0FDRkZpbHRlclRyaWxpbmVhcjsKKyAgICBkZWZhdWx0OiByZXR1cm4gMDsKKyAgICB9Cit9CisK
K3N0YXRpYyBXS0NBQ0ZMYXllclJlbmRlcmVyKiByZW5kZXJlckZvckxheWVyKGNvbnN0IFBsYXRm
b3JtQ0FMYXllciogbGF5ZXIpCit7CisgICAgLy8gV2UgbmVlZCB0aGUgV0tDQUNGTGF5ZXJSZW5k
ZXJlciBhc3NvY2lhdGVkIHdpdGggdGhpcyBsYXllciwgd2hpY2ggaXMgc3RvcmVkIGluIHRoZSBV
c2VyRGF0YSBvZiB0aGUgQ0FDRkNvbnRleHQKKyAgICBDQUNGQ29udGV4dFJlZiBjb250ZXh0ID0g
Q0FDRkxheWVyR2V0Q29udGV4dChsYXllci0+cGxhdGZvcm1MYXllcigpKTsKKyAgICBpZiAoIWNv
bnRleHQpCisgICAgICAgIHJldHVybiAwOworCisgICAgV0tDQUNGTGF5ZXJSZW5kZXJlciogcmVu
ZGVyZXIgPSBzdGF0aWNfY2FzdDxXS0NBQ0ZMYXllclJlbmRlcmVyKj4oQ0FDRkNvbnRleHRHZXRV
c2VyRGF0YShjb250ZXh0KSk7CisgICAgQVNTRVJUKHJlbmRlcmVyKTsKKyAgICByZXR1cm4gcmVu
ZGVyZXI7Cit9CisKK3N0YXRpYyBQbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbCogaW50ZXJuKGNv
bnN0IFBsYXRmb3JtQ0FMYXllciogbGF5ZXIpCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFBs
YXRmb3JtQ0FMYXllcldpbkludGVybmFsKj4oQ0FDRkxheWVyR2V0VXNlckRhdGEobGF5ZXItPnBs
YXRmb3JtTGF5ZXIoKSkpOworfQorCitzdGF0aWMgUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWwq
IGludGVybih2b2lkKiBsYXllcikKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UGxhdGZvcm1D
QUxheWVyV2luSW50ZXJuYWwqPihDQUNGTGF5ZXJHZXRVc2VyRGF0YShzdGF0aWNfY2FzdDxDQUNG
TGF5ZXJSZWY+KGxheWVyKSkpOworfQorCitQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gUGxh
dGZvcm1DQUxheWVyOjpjcmVhdGUoTGF5ZXJUeXBlIGxheWVyVHlwZSwgUGxhdGZvcm1DQUxheWVy
Q2xpZW50KiBvd25lcikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBsYXRmb3JtQ0FMYXll
cihsYXllclR5cGUsIDAsIG93bmVyKSk7Cit9CisKK1Bhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVy
PiBQbGF0Zm9ybUNBTGF5ZXI6OmNyZWF0ZSh2b2lkKiBwbGF0Zm9ybUxheWVyLCBQbGF0Zm9ybUNB
TGF5ZXJDbGllbnQqIG93bmVyKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGxhdGZvcm1D
QUxheWVyKExheWVyVHlwZUN1c3RvbSwgc3RhdGljX2Nhc3Q8UGxhdGZvcm1MYXllcio+KHBsYXRm
b3JtTGF5ZXIpLCBvd25lcikpOworfQorCitzdGF0aWMgdm9pZCBkaXNwbGF5Q2FsbGJhY2soQ0FD
RkxheWVyUmVmIGNhTGF5ZXIsIENHQ29udGV4dFJlZiBjb250ZXh0KQoreworICAgIEFTU0VSVF9B
UkcoY2FMYXllciwgQ0FDRkxheWVyR2V0VXNlckRhdGEoY2FMYXllcikpOworICAgIGludGVybihj
YUxheWVyKS0+ZGlzcGxheUNhbGxiYWNrKGNhTGF5ZXIsIGNvbnRleHQpOworfQorCitzdGF0aWMg
dm9pZCBsYXlvdXRTdWJsYXllcnNQcm9jKENBQ0ZMYXllclJlZiBjYUxheWVyKSAKK3sKKyAgICBQ
bGF0Zm9ybUNBTGF5ZXIqIGxheWVyID0gUGxhdGZvcm1DQUxheWVyOjpwbGF0Zm9ybUNBTGF5ZXIo
Y2FMYXllcik7CisgICAgaWYgKGxheWVyICYmIGxheWVyLT5vd25lcigpKQorICAgICAgICBsYXll
ci0+b3duZXIoKS0+cGxhdGZvcm1DQUxheWVyTGF5b3V0U3VibGF5ZXJzT2ZMYXllcihsYXllcik7
Cit9CisKK1BsYXRmb3JtQ0FMYXllcjo6UGxhdGZvcm1DQUxheWVyKExheWVyVHlwZSBsYXllclR5
cGUsIFBsYXRmb3JtTGF5ZXIqIGxheWVyLCBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVyKQor
ICAgIDogbV9vd25lcihvd25lcikKK3sKKyAgICBpZiAobGF5ZXIpIHsKKyAgICAgICAgbV9sYXll
clR5cGUgPSBMYXllclR5cGVDdXN0b207CisgICAgICAgIG1fbGF5ZXIgPSBsYXllcjsKKyAgICB9
IGVsc2UgeworICAgICAgICBtX2xheWVyVHlwZSA9IGxheWVyVHlwZTsKKyAgICAgICAgbV9sYXll
ci5hZG9wdENGKENBQ0ZMYXllckNyZWF0ZSh0b0NBQ0ZMYXllclR5cGUobGF5ZXJUeXBlKSkpOwor
CisgICAgICAgIC8vIENyZWF0ZSB0aGUgUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWwgb2JqZWN0
IGFuZCBwb2ludCB0byBpdCBpbiB0aGUgdXNlcmRhdGEuCisgICAgICAgIFBsYXRmb3JtQ0FMYXll
cldpbkludGVybmFsKiBpbnRlcm4gPSBuZXcgUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWwodGhp
cyk7CisgICAgICAgIENBQ0ZMYXllclNldFVzZXJEYXRhKG1fbGF5ZXIuZ2V0KCksIGludGVybik7
CisKKyAgICAgICAgLy8gU2V0IHRoZSBkaXNwbGF5IGNhbGxiYWNrCisgICAgICAgIENBQ0ZMYXll
clNldERpc3BsYXlDYWxsYmFjayhtX2xheWVyLmdldCgpLCBkaXNwbGF5Q2FsbGJhY2spOworICAg
ICAgICBDQUNGTGF5ZXJTZXRMYXlvdXRDYWxsYmFjayhtX2xheWVyLmdldCgpLCBsYXlvdXRTdWJs
YXllcnNQcm9jKTsgICAgCisgICAgfQorfQorCitQbGF0Zm9ybUNBTGF5ZXI6On5QbGF0Zm9ybUNB
TGF5ZXIoKQoreworICAgIC8vIFRvc3MgYWxsIHRoZSBraWRzCisgICAgcmVtb3ZlQWxsU3VibGF5
ZXJzKCk7CisKKyAgICAvLyBHZXQgcmlkIG9mIHRoZSB1c2VyIGRhdGEKKyAgICBQbGF0Zm9ybUNB
TGF5ZXJXaW5JbnRlcm5hbCogbGF5ZXJJbnRlcm4gPSBpbnRlcm4odGhpcyk7CisgICAgQ0FDRkxh
eWVyU2V0VXNlckRhdGEobV9sYXllci5nZXQoKSwgMCk7CisKKyAgICBkZWxldGUgbGF5ZXJJbnRl
cm47Cit9CisKK1BsYXRmb3JtQ0FMYXllciogUGxhdGZvcm1DQUxheWVyOjpwbGF0Zm9ybUNBTGF5
ZXIodm9pZCogcGxhdGZvcm1MYXllcikKK3sKKyAgICBpZiAoIXBsYXRmb3JtTGF5ZXIpCisgICAg
ICAgIHJldHVybiAwOworICAgIAorICAgIFBsYXRmb3JtQ0FMYXllcldpbkludGVybmFsKiBsYXll
ckludGVybiA9IGludGVybihwbGF0Zm9ybUxheWVyKTsKKyAgICByZXR1cm4gbGF5ZXJJbnRlcm4g
PyBsYXllckludGVybi0+b3duZXIoKSA6IDA7Cit9CisKK1BsYXRmb3JtTGF5ZXIqIFBsYXRmb3Jt
Q0FMYXllcjo6cGxhdGZvcm1MYXllcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbGF5ZXIuZ2V0
KCk7Cit9CisKK1BsYXRmb3JtQ0FMYXllciogUGxhdGZvcm1DQUxheWVyOjpyb290TGF5ZXIoKSBj
b25zdAoreworICAgIFdLQ0FDRkxheWVyUmVuZGVyZXIqIHJlbmRlcmVyID0gcmVuZGVyZXJGb3JM
YXllcih0aGlzKTsKKyAgICByZXR1cm4gcmVuZGVyZXIgPyByZW5kZXJlci0+cm9vdExheWVyKCkg
OiAwOworfQorCit2b2lkIFBsYXRmb3JtQ0FMYXllcjo6c2V0TmVlZHNEaXNwbGF5KGNvbnN0IEZs
b2F0UmVjdCogZGlydHlSZWN0KQoreworICAgIGludGVybih0aGlzKS0+c2V0TmVlZHNEaXNwbGF5
KGRpcnR5UmVjdCk7Cit9CisgICAgCit2b2lkIFBsYXRmb3JtQ0FMYXllcjo6c2V0TmVlZHNDb21t
aXQoKQoreworICAgIFdLQ0FDRkxheWVyUmVuZGVyZXIqIHJlbmRlcmVyID0gcmVuZGVyZXJGb3JM
YXllcih0aGlzKTsKKyAgICBpZiAocmVuZGVyZXIpCisgICAgICAgIHJlbmRlcmVyLT5sYXllclRy
ZWVEaWRDaGFuZ2UoKTsKK30KKwordm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OnNldENvbnRlbnRzQ2hh
bmdlZCgpCit7CisgICAgLy8gRklYTUU6IFRoZXJlIGlzIG5vIGVxdWl2YWxlbnQgb2Ygc2V0Q29u
dGVudHNDaGFuZ2VkIGluIENBQ0YuIEZvciBub3cgSSB3aWxsCisgICAgLy8gc2V0IGNvbnRlbnRz
IHRvIDAgYW5kIHRoZW4gYmFjayB0byBpdHMgb3JpZ2luYWwgdmFsdWUgdG8gc2VlIGlmIHRoYXQK
KyAgICAvLyBraWNrcyBDQUNGIGludG8gcmVkaXNwbGF5aW5nLgorICAgIFJldGFpblB0cjxDRlR5
cGVSZWY+IGNvbnRlbnRzID0gQ0FDRkxheWVyR2V0Q29udGVudHMobV9sYXllci5nZXQoKSk7Cisg
ICAgQ0FDRkxheWVyU2V0Q29udGVudHMobV9sYXllci5nZXQoKSwgMCk7CisgICAgQ0FDRkxheWVy
U2V0Q29udGVudHMobV9sYXllci5nZXQoKSwgY29udGVudHMuZ2V0KCkpOworICAgIHNldE5lZWRz
Q29tbWl0KCk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyOjpzZXROZWVkc0xheW91dCgpCit7
CisgICAgaWYgKCFtX293bmVyIHx8ICFtX293bmVyLT5wbGF0Zm9ybUNBTGF5ZXJSZXNwb25kc1Rv
TGF5b3V0Q2hhbmdlcygpKQorICAgICAgICByZXR1cm47CisKKyAgICBDQUNGTGF5ZXJTZXROZWVk
c0xheW91dChtX2xheWVyLmdldCgpKTsKKyAgICBzZXROZWVkc0NvbW1pdCgpOworfQorCitQbGF0
Zm9ybUNBTGF5ZXIqIFBsYXRmb3JtQ0FMYXllcjo6c3VwZXJsYXllcigpIGNvbnN0Cit7CisgICAg
cmV0dXJuIHBsYXRmb3JtQ0FMYXllcihDQUNGTGF5ZXJHZXRTdXBlcmxheWVyKG1fbGF5ZXIuZ2V0
KCkpKTsKK30KKwordm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OnJlbW92ZUZyb21TdXBlcmxheWVyKCkK
K3sKKyAgICBDQUNGTGF5ZXJSZW1vdmVGcm9tU3VwZXJsYXllcihtX2xheWVyLmdldCgpKTsKKyAg
ICBzZXROZWVkc0NvbW1pdCgpOworfQorCit2b2lkIFBsYXRmb3JtQ0FMYXllcjo6c2V0U3VibGF5
ZXJzKGNvbnN0IFBsYXRmb3JtQ0FMYXllckxpc3QmIGxpc3QpCit7CisgICAgaW50ZXJuKHRoaXMp
LT5zZXRTdWJsYXllcnMobGlzdCk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyOjpyZW1vdmVB
bGxTdWJsYXllcnMoKQoreworICAgIGludGVybih0aGlzKS0+cmVtb3ZlQWxsU3VibGF5ZXJzKCk7
Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyOjphcHBlbmRTdWJsYXllcihQbGF0Zm9ybUNBTGF5
ZXIqIGxheWVyKQoreworICAgIC8vIFRoaXMgbXVzdCBiZSBpbiB0ZXJtcyBvZiBpbnNlcnRTdWJs
YXllciBpbnN0ZWFkIG9mIGEgZGlyZWN0IGNhbGwgc28gUGxhdGZvcm1DQUxheWVySW50ZXJuYWwg
Y2FuIG92ZXJyaWRlLgorICAgIGluc2VydFN1YmxheWVyKGxheWVyLCBzdWJsYXllckNvdW50KCkp
OworfQorCit2b2lkIFBsYXRmb3JtQ0FMYXllcjo6aW5zZXJ0U3VibGF5ZXIoUGxhdGZvcm1DQUxh
eWVyKiBsYXllciwgc2l6ZV90IGluZGV4KQoreworICAgIGludGVybih0aGlzKS0+aW5zZXJ0U3Vi
bGF5ZXIobGF5ZXIsIGluZGV4KTsKK30KKwordm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OnJlcGxhY2VT
dWJsYXllcihQbGF0Zm9ybUNBTGF5ZXIqIHJlZmVyZW5jZSwgUGxhdGZvcm1DQUxheWVyKiBuZXdM
YXllcikKK3sKKyAgICAvLyBUaGlzIG11c3Qgbm90IHVzZSBkaXJlY3QgY2FsbHMgdG8gYWxsb3cg
UGxhdGZvcm1DQUxheWVySW50ZXJuYWwgdG8gb3ZlcnJpZGUuCisgICAgQVNTRVJUX0FSRyhyZWZl
cmVuY2UsIHJlZmVyZW5jZSk7CisgICAgQVNTRVJUX0FSRyhyZWZlcmVuY2UsIHJlZmVyZW5jZS0+
c3VwZXJsYXllcigpID09IHRoaXMpOworCisgICAgaWYgKHJlZmVyZW5jZSA9PSBuZXdMYXllcikK
KyAgICAgICAgcmV0dXJuOworCisgICAgaW50IHJlZmVyZW5jZUluZGV4ID0gaW50ZXJuKHRoaXMp
LT5pbmRleE9mU3VibGF5ZXIocmVmZXJlbmNlKTsKKyAgICBBU1NFUlQocmVmZXJlbmNlSW5kZXgg
IT0gLTEpOworICAgIGlmIChyZWZlcmVuY2VJbmRleCA9PSAtMSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgcmVmZXJlbmNlLT5yZW1vdmVGcm9tU3VwZXJsYXllcigpOworCisgICAgaWYgKG5ld0xh
eWVyKSB7CisgICAgICAgIG5ld0xheWVyLT5yZW1vdmVGcm9tU3VwZXJsYXllcigpOworICAgICAg
ICBpbnNlcnRTdWJsYXllcihuZXdMYXllciwgcmVmZXJlbmNlSW5kZXgpOworICAgIH0KK30KKwor
c2l6ZV90IFBsYXRmb3JtQ0FMYXllcjo6c3VibGF5ZXJDb3VudCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIGludGVybih0aGlzKS0+c3VibGF5ZXJDb3VudCgpOworfQorCit2b2lkIFBsYXRmb3JtQ0FM
YXllcjo6YWRvcHRTdWJsYXllcnMoUGxhdGZvcm1DQUxheWVyKiBzb3VyY2UpCit7CisgICAgLy8g
TWFrZSBhIGxpc3Qgb2YgdGhlIHN1YmxheWVycyBmcm9tIHNvdXJjZQorICAgIFBsYXRmb3JtQ0FM
YXllckxpc3Qgc3VibGF5ZXJzOworICAgIHNpemVfdCBuID0gc291cmNlLT5zdWJsYXllckNvdW50
KCk7CisgICAgQ0ZBcnJheVJlZiBzb3VyY2VTdWJsYXllcnMgPSBDQUNGTGF5ZXJHZXRTdWJsYXll
cnMoc291cmNlLT5wbGF0Zm9ybUxheWVyKCkpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBuOyArK2kpIHsKKyAgICAgICAgQ0FDRkxheWVyUmVmIGxheWVyID0gc3RhdGljX2Nhc3Q8Q0FD
RkxheWVyUmVmPihjb25zdF9jYXN0PHZvaWQqPihDRkFycmF5R2V0VmFsdWVBdEluZGV4KHNvdXJj
ZVN1YmxheWVycywgaSkpKTsKKyAgICAgICAgc3VibGF5ZXJzLmFwcGVuZChwbGF0Zm9ybUNBTGF5
ZXIobGF5ZXIpKTsKKyAgICB9CisKKyAgICAvLyBVc2Ugc2V0U3VibGF5ZXJzKCkgYmVjYXVzZSBp
dCBwcm9wZXJseSBudWxscyBvdXQgdGhlIHN1cGVybGF5ZXIgcG9pbnRlcnMuCisgICAgc2V0U3Vi
bGF5ZXJzKHN1YmxheWVycyk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyOjphZGRBbmltYXRp
b25Gb3JLZXkoY29uc3QgU3RyaW5nJiBrZXksIFBsYXRmb3JtQ0FBbmltYXRpb24qIGFuaW1hdGlv
bikKK3sKKyAgICAvLyBBZGQgaXQgdG8gdGhlIGFuaW1hdGlvbiBsaXN0CisgICAgbV9hbmltYXRp
b25zLmFkZChrZXksIGFuaW1hdGlvbik7CisKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHMo
QWRvcHRDRiwga2V5LmNyZWF0ZUNGU3RyaW5nKCkpOworICAgIENBQ0ZMYXllckFkZEFuaW1hdGlv
bihtX2xheWVyLmdldCgpLCBzLmdldCgpLCBhbmltYXRpb24tPnBsYXRmb3JtQW5pbWF0aW9uKCkp
OworICAgIHNldE5lZWRzQ29tbWl0KCk7CisKKyAgICAvLyBUZWxsIHRoZSByZW5kZXJlciBhYm91
dCBpdCBzbyB3ZSBjYW4gZmlyZSB0aGUgc3RhcnQgYW5pbWF0aW9uIGV2ZW50CisgICAgV0tDQUNG
TGF5ZXJSZW5kZXJlciogcmVuZGVyZXIgPSByZW5kZXJlckZvckxheWVyKHRoaXMpOworICAgIGlm
IChyZW5kZXJlcikKKyAgICAgICAgcmVuZGVyZXItPmFkZFBlbmRpbmdBbmltYXRlZExheWVyKHRo
aXMpOworfQorCit2b2lkIFBsYXRmb3JtQ0FMYXllcjo6cmVtb3ZlQW5pbWF0aW9uRm9yS2V5KGNv
bnN0IFN0cmluZyYga2V5KQoreworICAgIC8vIFJlbW92ZSBpdCBmcm9tIHRoZSBhbmltYXRpb24g
bGlzdAorICAgIG1fYW5pbWF0aW9ucy5yZW1vdmUoa2V5KTsKKworICAgIFJldGFpblB0cjxDRlN0
cmluZ1JlZj4gcyhBZG9wdENGLCBrZXkuY3JlYXRlQ0ZTdHJpbmcoKSk7CisgICAgQ0FDRkxheWVy
UmVtb3ZlQW5pbWF0aW9uKG1fbGF5ZXIuZ2V0KCksIHMuZ2V0KCkpOworCisgICAgLy8gV2UgZG9u
J3QgInJlbW92ZSIgYSBsYXllciBmcm9tIFdLQ0FDRkxheWVyUmVuZGVyZXIgd2hlbiBpdCBsb3Nl
cyBhbiBhbmltYXRpb24uCisgICAgLy8gVGhlcmUgbWF5IGJlIG90aGVyIGFjdGl2ZSBhbmltYXRp
b25zIG9uIHRoZSBsYXllciBhbmQgaWYgYW4gYW5pbWF0aW9uCisgICAgLy8gY2FsbGJhY2sgaXMg
ZmlyZWQgb24gYSBsYXllciB3aXRob3V0IGFueSBhbmltYXRpb25zIG5vIGhhcm0gaXMgZG9uZS4K
KworICAgIHNldE5lZWRzQ29tbWl0KCk7Cit9CisKK1Bhc3NSZWZQdHI8UGxhdGZvcm1DQUFuaW1h
dGlvbj4gUGxhdGZvcm1DQUxheWVyOjphbmltYXRpb25Gb3JLZXkoY29uc3QgU3RyaW5nJiBrZXkp
Cit7CisgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiA+Ojpp
dGVyYXRvciBpdCA9IG1fYW5pbWF0aW9ucy5maW5kKGtleSk7CisgICAgaWYgKGl0ID09IG1fYW5p
bWF0aW9ucy5lbmQoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gaXQtPnNlY29u
ZDsKK30KKworUGxhdGZvcm1DQUxheWVyKiBQbGF0Zm9ybUNBTGF5ZXI6Om1hc2soKSBjb25zdAor
eworICAgIHJldHVybiBwbGF0Zm9ybUNBTGF5ZXIoQ0FDRkxheWVyR2V0TWFzayhtX2xheWVyLmdl
dCgpKSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyOjpzZXRNYXNrKFBsYXRmb3JtQ0FMYXll
ciogbGF5ZXIpCit7CisgICAgQ0FDRkxheWVyU2V0TWFzayhtX2xheWVyLmdldCgpLCBsYXllciA/
IGxheWVyLT5wbGF0Zm9ybUxheWVyKCkgOiAwKTsKKyAgICBzZXROZWVkc0NvbW1pdCgpOworfQor
Citib29sIFBsYXRmb3JtQ0FMYXllcjo6aXNPcGFxdWUoKSBjb25zdAoreworICAgIHJldHVybiBD
QUNGTGF5ZXJJc09wYXF1ZShtX2xheWVyLmdldCgpKTsKK30KKwordm9pZCBQbGF0Zm9ybUNBTGF5
ZXI6OnNldE9wYXF1ZShib29sIHZhbHVlKQoreworICAgIENBQ0ZMYXllclNldE9wYXF1ZShtX2xh
eWVyLmdldCgpLCB2YWx1ZSk7CisgICAgc2V0TmVlZHNDb21taXQoKTsKK30KKworRmxvYXRSZWN0
IFBsYXRmb3JtQ0FMYXllcjo6Ym91bmRzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gQ0FDRkxheWVy
R2V0Qm91bmRzKG1fbGF5ZXIuZ2V0KCkpOworfQorCit2b2lkIFBsYXRmb3JtQ0FMYXllcjo6c2V0
Qm91bmRzKGNvbnN0IEZsb2F0UmVjdCYgdmFsdWUpCit7CisgICAgaW50ZXJuKHRoaXMpLT5zZXRC
b3VuZHModmFsdWUpOworICAgIHNldE5lZWRzTGF5b3V0KCk7Cit9CisKK0Zsb2F0UG9pbnQzRCBQ
bGF0Zm9ybUNBTGF5ZXI6OnBvc2l0aW9uKCkgY29uc3QKK3sKKyAgICBDR1BvaW50IHBvaW50ID0g
Q0FDRkxheWVyR2V0UG9zaXRpb24obV9sYXllci5nZXQoKSk7CisgICAgcmV0dXJuIEZsb2F0UG9p
bnQzRChwb2ludC54LCBwb2ludC55LCBDQUNGTGF5ZXJHZXRaUG9zaXRpb24obV9sYXllci5nZXQo
KSkpOworfQorCit2b2lkIFBsYXRmb3JtQ0FMYXllcjo6c2V0UG9zaXRpb24oY29uc3QgRmxvYXRQ
b2ludDNEJiB2YWx1ZSkKK3sKKyAgICBDQUNGTGF5ZXJTZXRQb3NpdGlvbihtX2xheWVyLmdldCgp
LCBDR1BvaW50TWFrZSh2YWx1ZS54KCksIHZhbHVlLnkoKSkpOworICAgIENBQ0ZMYXllclNldFpQ
b3NpdGlvbihtX2xheWVyLmdldCgpLCB2YWx1ZS56KCkpOworICAgIHNldE5lZWRzQ29tbWl0KCk7
Cit9CisKK0Zsb2F0UG9pbnQzRCBQbGF0Zm9ybUNBTGF5ZXI6OmFuY2hvclBvaW50KCkgY29uc3QK
K3sKKyAgICBDR1BvaW50IHBvaW50ID0gQ0FDRkxheWVyR2V0QW5jaG9yUG9pbnQobV9sYXllci5n
ZXQoKSk7CisgICAgZmxvYXQgeiA9IENBQ0ZMYXllckdldEFuY2hvclBvaW50WihtX2xheWVyLmdl
dCgpKTsKKyAgICByZXR1cm4gRmxvYXRQb2ludDNEKHBvaW50LngsIHBvaW50LnksIHopOworfQor
Cit2b2lkIFBsYXRmb3JtQ0FMYXllcjo6c2V0QW5jaG9yUG9pbnQoY29uc3QgRmxvYXRQb2ludDNE
JiB2YWx1ZSkKK3sKKyAgICBDQUNGTGF5ZXJTZXRBbmNob3JQb2ludChtX2xheWVyLmdldCgpLCBD
R1BvaW50TWFrZSh2YWx1ZS54KCksIHZhbHVlLnkoKSkpOworICAgIENBQ0ZMYXllclNldEFuY2hv
clBvaW50WihtX2xheWVyLmdldCgpLCB2YWx1ZS56KCkpOworICAgIHNldE5lZWRzQ29tbWl0KCk7
Cit9CisKK1RyYW5zZm9ybWF0aW9uTWF0cml4IFBsYXRmb3JtQ0FMYXllcjo6dHJhbnNmb3JtKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gQ0FDRkxheWVyR2V0VHJhbnNmb3JtKG1fbGF5ZXIuZ2V0KCkp
OworfQorCit2b2lkIFBsYXRmb3JtQ0FMYXllcjo6c2V0VHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JiB2YWx1ZSkKK3sKKyAgICBDQUNGTGF5ZXJTZXRUcmFuc2Zvcm0obV9sYXll
ci5nZXQoKSwgdmFsdWUpOworICAgIHNldE5lZWRzQ29tbWl0KCk7Cit9CisKK1RyYW5zZm9ybWF0
aW9uTWF0cml4IFBsYXRmb3JtQ0FMYXllcjo6c3VibGF5ZXJUcmFuc2Zvcm0oKSBjb25zdAorewor
ICAgIHJldHVybiBDQUNGTGF5ZXJHZXRTdWJsYXllclRyYW5zZm9ybShtX2xheWVyLmdldCgpKTsK
K30KKwordm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OnNldFN1YmxheWVyVHJhbnNmb3JtKGNvbnN0IFRy
YW5zZm9ybWF0aW9uTWF0cml4JiB2YWx1ZSkKK3sKKyAgICBDQUNGTGF5ZXJTZXRTdWJsYXllclRy
YW5zZm9ybShtX2xheWVyLmdldCgpLCB2YWx1ZSk7CisgICAgc2V0TmVlZHNDb21taXQoKTsKK30K
KworVHJhbnNmb3JtYXRpb25NYXRyaXggUGxhdGZvcm1DQUxheWVyOjpjb250ZW50c1RyYW5zZm9y
bSgpIGNvbnN0Cit7CisgICAgLy8gQ29udGVudHNUcmFuc2Zvcm0gaXMgbm90IHVzZWQKKyAgICBy
ZXR1cm4gVHJhbnNmb3JtYXRpb25NYXRyaXgoKTsKK30KKwordm9pZCBQbGF0Zm9ybUNBTGF5ZXI6
OnNldENvbnRlbnRzVHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JikKK3sKKyAg
ICAvLyBDb250ZW50c1RyYW5zZm9ybSBpcyBub3QgdXNlZAorfQorCitib29sIFBsYXRmb3JtQ0FM
YXllcjo6aXNIaWRkZW4oKSBjb25zdAoreworICAgIHJldHVybiBDQUNGTGF5ZXJJc0hpZGRlbiht
X2xheWVyLmdldCgpKTsKK30KKwordm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OnNldEhpZGRlbihib29s
IHZhbHVlKQoreworICAgIENBQ0ZMYXllclNldEhpZGRlbihtX2xheWVyLmdldCgpLCB2YWx1ZSk7
CisgICAgc2V0TmVlZHNDb21taXQoKTsKK30KKworYm9vbCBQbGF0Zm9ybUNBTGF5ZXI6OmlzR2Vv
bWV0cnlGbGlwcGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gQ0FDRkxheWVySXNHZW9tZXRyeUZs
aXBwZWQobV9sYXllci5nZXQoKSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyOjpzZXRHZW9t
ZXRyeUZsaXBwZWQoYm9vbCB2YWx1ZSkKK3sKKyAgICBDQUNGTGF5ZXJTZXRHZW9tZXRyeUZsaXBw
ZWQobV9sYXllci5nZXQoKSwgdmFsdWUpOworICAgIHNldE5lZWRzQ29tbWl0KCk7Cit9CisKK2Jv
b2wgUGxhdGZvcm1DQUxheWVyOjppc0RvdWJsZVNpZGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
Q0FDRkxheWVySXNEb3VibGVTaWRlZChtX2xheWVyLmdldCgpKTsKK30KKwordm9pZCBQbGF0Zm9y
bUNBTGF5ZXI6OnNldERvdWJsZVNpZGVkKGJvb2wgdmFsdWUpCit7CisgICAgQ0FDRkxheWVyU2V0
RG91YmxlU2lkZWQobV9sYXllci5nZXQoKSwgdmFsdWUpOworICAgIHNldE5lZWRzQ29tbWl0KCk7
Cit9CisKK2Jvb2wgUGxhdGZvcm1DQUxheWVyOjptYXNrc1RvQm91bmRzKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gQ0FDRkxheWVyR2V0TWFza3NUb0JvdW5kcyhtX2xheWVyLmdldCgpKTsKK30KKwor
dm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OnNldE1hc2tzVG9Cb3VuZHMoYm9vbCB2YWx1ZSkKK3sKKyAg
ICBDQUNGTGF5ZXJTZXRNYXNrc1RvQm91bmRzKG1fbGF5ZXIuZ2V0KCksIHZhbHVlKTsKKyAgICBz
ZXROZWVkc0NvbW1pdCgpOworfQorCitib29sIFBsYXRmb3JtQ0FMYXllcjo6YWNjZWxlcmF0ZXNE
cmF3aW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgUGxhdGZvcm1D
QUxheWVyOjpzZXRBY2NlbGVyYXRlc0RyYXdpbmcoYm9vbCkKK3sKK30KKworQ0ZUeXBlUmVmIFBs
YXRmb3JtQ0FMYXllcjo6Y29udGVudHMoKSBjb25zdAoreworICAgIHJldHVybiBjb25zdF9jYXN0
PHZvaWQqPihDQUNGTGF5ZXJHZXRDb250ZW50cyhtX2xheWVyLmdldCgpKSk7Cit9CisKK3ZvaWQg
UGxhdGZvcm1DQUxheWVyOjpzZXRDb250ZW50cyhDRlR5cGVSZWYgdmFsdWUpCit7CisgICAgQ0FD
RkxheWVyU2V0Q29udGVudHMobV9sYXllci5nZXQoKSwgdmFsdWUpOworICAgIHNldE5lZWRzQ29t
bWl0KCk7Cit9CisKK0Zsb2F0UmVjdCBQbGF0Zm9ybUNBTGF5ZXI6OmNvbnRlbnRzUmVjdCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIENBQ0ZMYXllckdldENvbnRlbnRzUmVjdChtX2xheWVyLmdldCgp
KTsKK30KKwordm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OnNldENvbnRlbnRzUmVjdChjb25zdCBGbG9h
dFJlY3QmIHZhbHVlKQoreworICAgIENBQ0ZMYXllclNldENvbnRlbnRzUmVjdChtX2xheWVyLmdl
dCgpLCB2YWx1ZSk7CisgICAgc2V0TmVlZHNDb21taXQoKTsKK30KKwordm9pZCBQbGF0Zm9ybUNB
TGF5ZXI6OnNldE1pbmlmaWNhdGlvbkZpbHRlcihGaWx0ZXJUeXBlIHZhbHVlKQoreworICAgIENB
Q0ZMYXllclNldE1pbmlmaWNhdGlvbkZpbHRlcihtX2xheWVyLmdldCgpLCB0b0NBQ0ZGaWx0ZXJU
eXBlKHZhbHVlKSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyOjpzZXRNYWduaWZpY2F0aW9u
RmlsdGVyKEZpbHRlclR5cGUgdmFsdWUpCit7CisgICAgQ0FDRkxheWVyU2V0TWFnbmlmaWNhdGlv
bkZpbHRlcihtX2xheWVyLmdldCgpLCB0b0NBQ0ZGaWx0ZXJUeXBlKHZhbHVlKSk7CisgICAgc2V0
TmVlZHNDb21taXQoKTsKK30KKworQ29sb3IgUGxhdGZvcm1DQUxheWVyOjpiYWNrZ3JvdW5kQ29s
b3IoKSBjb25zdAoreworICAgIHJldHVybiBDQUNGTGF5ZXJHZXRCYWNrZ3JvdW5kQ29sb3IobV9s
YXllci5nZXQoKSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyOjpzZXRCYWNrZ3JvdW5kQ29s
b3IoY29uc3QgQ29sb3ImIHZhbHVlKQoreworICAgIENHRmxvYXQgY29tcG9uZW50c1s0XTsKKyAg
ICB2YWx1ZS5nZXRSR0JBKGNvbXBvbmVudHNbMF0sIGNvbXBvbmVudHNbMV0sIGNvbXBvbmVudHNb
Ml0sIGNvbXBvbmVudHNbM10pOworCisgICAgUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gY29s
b3JTcGFjZShBZG9wdENGLCBDR0NvbG9yU3BhY2VDcmVhdGVEZXZpY2VSR0IoKSk7CisgICAgUmV0
YWluUHRyPENHQ29sb3JSZWY+IGNvbG9yKEFkb3B0Q0YsIENHQ29sb3JDcmVhdGUoY29sb3JTcGFj
ZS5nZXQoKSwgY29tcG9uZW50cykpOworCisgICAgQ0FDRkxheWVyU2V0QmFja2dyb3VuZENvbG9y
KG1fbGF5ZXIuZ2V0KCksIGNvbG9yLmdldCgpKTsKKyAgICBzZXROZWVkc0NvbW1pdCgpOworfQor
CitmbG9hdCBQbGF0Zm9ybUNBTGF5ZXI6OmJvcmRlcldpZHRoKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gQ0FDRkxheWVyR2V0Qm9yZGVyV2lkdGgobV9sYXllci5nZXQoKSk7Cit9CisKK3ZvaWQgUGxh
dGZvcm1DQUxheWVyOjpzZXRCb3JkZXJXaWR0aChmbG9hdCB2YWx1ZSkKK3sKKyAgICBDQUNGTGF5
ZXJTZXRCb3JkZXJXaWR0aChtX2xheWVyLmdldCgpLCB2YWx1ZSk7CisgICAgc2V0TmVlZHNDb21t
aXQoKTsKK30KKworQ29sb3IgUGxhdGZvcm1DQUxheWVyOjpib3JkZXJDb2xvcigpIGNvbnN0Cit7
CisgICAgcmV0dXJuIENBQ0ZMYXllckdldEJvcmRlckNvbG9yKG1fbGF5ZXIuZ2V0KCkpOworfQor
Cit2b2lkIFBsYXRmb3JtQ0FMYXllcjo6c2V0Qm9yZGVyQ29sb3IoY29uc3QgQ29sb3ImIHZhbHVl
KQoreworICAgIENHRmxvYXQgY29tcG9uZW50c1s0XTsKKyAgICB2YWx1ZS5nZXRSR0JBKGNvbXBv
bmVudHNbMF0sIGNvbXBvbmVudHNbMV0sIGNvbXBvbmVudHNbMl0sIGNvbXBvbmVudHNbM10pOwor
CisgICAgUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gY29sb3JTcGFjZShBZG9wdENGLCBDR0Nv
bG9yU3BhY2VDcmVhdGVEZXZpY2VSR0IoKSk7CisgICAgUmV0YWluUHRyPENHQ29sb3JSZWY+IGNv
bG9yKEFkb3B0Q0YsIENHQ29sb3JDcmVhdGUoY29sb3JTcGFjZS5nZXQoKSwgY29tcG9uZW50cykp
OworCisgICAgQ0FDRkxheWVyU2V0Qm9yZGVyQ29sb3IobV9sYXllci5nZXQoKSwgY29sb3IuZ2V0
KCkpOworICAgIHNldE5lZWRzQ29tbWl0KCk7Cit9CisKK2Zsb2F0IFBsYXRmb3JtQ0FMYXllcjo6
b3BhY2l0eSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIENBQ0ZMYXllckdldE9wYWNpdHkobV9sYXll
ci5nZXQoKSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyOjpzZXRPcGFjaXR5KGZsb2F0IHZh
bHVlKQoreworICAgIENBQ0ZMYXllclNldE9wYWNpdHkobV9sYXllci5nZXQoKSwgdmFsdWUpOwor
ICAgIHNldE5lZWRzQ29tbWl0KCk7Cit9CisKK1N0cmluZyBQbGF0Zm9ybUNBTGF5ZXI6Om5hbWUo
KSBjb25zdAoreworICAgIHJldHVybiBDQUNGTGF5ZXJHZXROYW1lKG1fbGF5ZXIuZ2V0KCkpOwor
fQorCit2b2lkIFBsYXRmb3JtQ0FMYXllcjo6c2V0TmFtZShjb25zdCBTdHJpbmcmIHZhbHVlKQor
eworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcyhBZG9wdENGLCB2YWx1ZS5jcmVhdGVDRlN0
cmluZygpKTsKKyAgICBDQUNGTGF5ZXJTZXROYW1lKG1fbGF5ZXIuZ2V0KCksIHMuZ2V0KCkpOwor
ICAgIHNldE5lZWRzQ29tbWl0KCk7Cit9CisKK0Zsb2F0UmVjdCBQbGF0Zm9ybUNBTGF5ZXI6OmZy
YW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gQ0FDRkxheWVyR2V0RnJhbWUobV9sYXllci5nZXQo
KSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyOjpzZXRGcmFtZShjb25zdCBGbG9hdFJlY3Qm
IHZhbHVlKQoreworICAgIGludGVybih0aGlzKS0+c2V0RnJhbWUodmFsdWUpOworICAgIHNldE5l
ZWRzTGF5b3V0KCk7Cit9CisKK2Zsb2F0IFBsYXRmb3JtQ0FMYXllcjo6c3BlZWQoKSBjb25zdAor
eworICAgIHJldHVybiBDQUNGTGF5ZXJHZXRTcGVlZChtX2xheWVyLmdldCgpKTsKK30KKwordm9p
ZCBQbGF0Zm9ybUNBTGF5ZXI6OnNldFNwZWVkKGZsb2F0IHZhbHVlKQoreworICAgIENBQ0ZMYXll
clNldFNwZWVkKG1fbGF5ZXIuZ2V0KCksIHZhbHVlKTsKKyAgICBzZXROZWVkc0NvbW1pdCgpOwor
fQorCitDRlRpbWVJbnRlcnZhbCBQbGF0Zm9ybUNBTGF5ZXI6OnRpbWVPZmZzZXQoKSBjb25zdAor
eworICAgIHJldHVybiBDQUNGTGF5ZXJHZXRUaW1lT2Zmc2V0KG1fbGF5ZXIuZ2V0KCkpOworfQor
Cit2b2lkIFBsYXRmb3JtQ0FMYXllcjo6c2V0VGltZU9mZnNldChDRlRpbWVJbnRlcnZhbCB2YWx1
ZSkKK3sKKyAgICBDQUNGTGF5ZXJTZXRUaW1lT2Zmc2V0KG1fbGF5ZXIuZ2V0KCksIHZhbHVlKTsK
KyAgICBzZXROZWVkc0NvbW1pdCgpOworfQorCisjaWZuZGVmIE5ERUJVRworc3RhdGljIHZvaWQg
cHJpbnRJbmRlbnQoaW50IGluZGVudCkKK3sKKyAgICBmb3IgKCA7IGluZGVudCA+IDA7IC0taW5k
ZW50KQorICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiAgIik7Cit9CisKK3N0YXRpYyB2b2lkIHBy
aW50VHJhbnNmb3JtKGNvbnN0IENBVHJhbnNmb3JtM0QmIHRyYW5zZm9ybSkKK3sKKyAgICBmcHJp
bnRmKHN0ZGVyciwgIlslZyAlZyAlZyAlZzsgJWcgJWcgJWcgJWc7ICVnICVnICVnICVnOyAlZyAl
ZyAlZyAlZ10iLAorICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm0ubTExLCB0cmFuc2Zvcm0u
bTEyLCB0cmFuc2Zvcm0ubTEzLCB0cmFuc2Zvcm0ubTE0LCAKKyAgICAgICAgICAgICAgICAgICAg
dHJhbnNmb3JtLm0yMSwgdHJhbnNmb3JtLm0yMiwgdHJhbnNmb3JtLm0yMywgdHJhbnNmb3JtLm0y
NCwgCisgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybS5tMzEsIHRyYW5zZm9ybS5tMzIsIHRy
YW5zZm9ybS5tMzMsIHRyYW5zZm9ybS5tMzQsIAorICAgICAgICAgICAgICAgICAgICB0cmFuc2Zv
cm0ubTQxLCB0cmFuc2Zvcm0ubTQyLCB0cmFuc2Zvcm0ubTQzLCB0cmFuc2Zvcm0ubTQ0KTsKK30K
Kworc3RhdGljIHZvaWQgcHJpbnRMYXllcihjb25zdCBQbGF0Zm9ybUNBTGF5ZXIqIGxheWVyLCBp
bnQgaW5kZW50KQoreworICAgIEZsb2F0UG9pbnQzRCBsYXllclBvc2l0aW9uID0gbGF5ZXItPnBv
c2l0aW9uKCk7CisgICAgRmxvYXRQb2ludDNEIGxheWVyQW5jaG9yUG9pbnQgPSBsYXllci0+YW5j
aG9yUG9pbnQoKTsKKyAgICBGbG9hdFJlY3QgbGF5ZXJCb3VuZHMgPSBsYXllci0+Ym91bmRzKCk7
CisgICAgcHJpbnRJbmRlbnQoaW5kZW50KTsKKworICAgIGNoYXIqIGxheWVyVHlwZU5hbWUgPSAw
OworICAgIHN3aXRjaCAobGF5ZXItPmxheWVyVHlwZSgpKSB7CisgICAgY2FzZSBQbGF0Zm9ybUNB
TGF5ZXI6OkxheWVyVHlwZUxheWVyOiBsYXllclR5cGVOYW1lID0gImxheWVyIjsgYnJlYWs7Cisg
ICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVdlYkxheWVyOiBsYXllclR5cGVOYW1l
ID0gIndlYi1sYXllciI7IGJyZWFrOworICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5
cGVUcmFuc2Zvcm1MYXllcjogbGF5ZXJUeXBlTmFtZSA9ICJ0cmFuc2Zvcm0tbGF5ZXIiOyBicmVh
azsKKyAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlV2ViVGlsZWRMYXllcjogbGF5
ZXJUeXBlTmFtZSA9ICJ3ZWItdGlsZWQtbGF5ZXIiOyBicmVhazsKKyAgICBjYXNlIFBsYXRmb3Jt
Q0FMYXllcjo6TGF5ZXJUeXBlUm9vdExheWVyOiBsYXllclR5cGVOYW1lID0gInJvb3QtbGF5ZXIi
OyBicmVhazsKKyAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQ3VzdG9tOiBsYXll
clR5cGVOYW1lID0gImN1c3RvbS1sYXllciI7IGJyZWFrOworICAgIH0KKworICAgIGZwcmludGYo
c3RkZXJyLCAiKCVzIFslZyAlZyAlZ10gWyVnICVnICVnICVnXSBbJWcgJWcgJWddIHN1cGVybGF5
ZXI9JXBcbiIsCisgICAgICAgIGxheWVyVHlwZU5hbWUsCisgICAgICAgIGxheWVyUG9zaXRpb24u
eCgpLCBsYXllclBvc2l0aW9uLnkoKSwgbGF5ZXJQb3NpdGlvbi56KCksIAorICAgICAgICBsYXll
ckJvdW5kcy54KCksIGxheWVyQm91bmRzLnkoKSwgbGF5ZXJCb3VuZHMud2lkdGgoKSwgbGF5ZXJC
b3VuZHMuaGVpZ2h0KCksCisgICAgICAgIGxheWVyQW5jaG9yUG9pbnQueCgpLCBsYXllckFuY2hv
clBvaW50LnkoKSwgbGF5ZXJBbmNob3JQb2ludC56KCksIGxheWVyLT5zdXBlcmxheWVyKCkpOwor
CisgICAgLy8gUHJpbnQgbmFtZSBpZiBuZWVkZWQKKyAgICBTdHJpbmcgbGF5ZXJOYW1lID0gbGF5
ZXItPm5hbWUoKTsKKyAgICBpZiAoIWxheWVyTmFtZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgcHJp
bnRJbmRlbnQoaW5kZW50ICsgMSk7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiKG5hbWUgJXMp
XG4iLCBsYXllck5hbWUudXRmOCgpLmRhdGEoKSk7CisgICAgfQorCisgICAgLy8gUHJpbnQgbWFz
a3NUb0JvdW5kcyBpZiBuZWVkZWQKKyAgICBib29sIGxheWVyTWFza3NUb0JvdW5kcyA9IGxheWVy
LT5tYXNrc1RvQm91bmRzKCk7CisgICAgaWYgKGxheWVyTWFza3NUb0JvdW5kcykgeworICAgICAg
ICBwcmludEluZGVudChpbmRlbnQgKyAxKTsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICIobWFz
a3NUb0JvdW5kcyB0cnVlKVxuIik7CisgICAgfQorCisgICAgLy8gUHJpbnQgb3BhY2l0eSBpZiBu
ZWVkZWQKKyAgICBmbG9hdCBsYXllck9wYWNpdHkgPSBsYXllci0+b3BhY2l0eSgpOworICAgIGlm
IChsYXllck9wYWNpdHkgIT0gMSkgeworICAgICAgICBwcmludEluZGVudChpbmRlbnQgKyAxKTsK
KyAgICAgICAgZnByaW50ZihzdGRlcnIsICIob3BhY2l0eSAlaGYpXG4iLCBsYXllck9wYWNpdHkp
OworICAgIH0KKworICAgIC8vIFByaW50IHN1YmxheWVyVHJhbnNmb3JtIGlmIG5lZWRlZAorICAg
IFRyYW5zZm9ybWF0aW9uTWF0cml4IGxheWVyVHJhbnNmb3JtID0gbGF5ZXItPnN1YmxheWVyVHJh
bnNmb3JtKCk7CisgICAgaWYgKCFsYXllclRyYW5zZm9ybS5pc0lkZW50aXR5KCkpIHsKKyAgICAg
ICAgcHJpbnRJbmRlbnQoaW5kZW50ICsgMSk7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiKHN1
YmxheWVyVHJhbnNmb3JtICIpOworICAgICAgICBwcmludFRyYW5zZm9ybShsYXllclRyYW5zZm9y
bSk7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiKVxuIik7CisgICAgfQorCisgICAgLy8gUHJp
bnQgdHJhbnNmb3JtIGlmIG5lZWRlZAorICAgIGxheWVyVHJhbnNmb3JtID0gbGF5ZXItPnRyYW5z
Zm9ybSgpOworICAgIGlmICghbGF5ZXJUcmFuc2Zvcm0uaXNJZGVudGl0eSgpKSB7CisgICAgICAg
IHByaW50SW5kZW50KGluZGVudCArIDEpOworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIih0cmFu
c2Zvcm0gIik7CisgICAgICAgIHByaW50VHJhbnNmb3JtKGxheWVyVHJhbnNmb3JtKTsKKyAgICAg
ICAgZnByaW50ZihzdGRlcnIsICIpXG4iKTsKKyAgICB9CisKKyAgICAvLyBQcmludCBjb250ZW50
cyBpZiBuZWVkZWQKKyAgICBDRlR5cGVSZWYgbGF5ZXJDb250ZW50cyA9IGxheWVyLT5jb250ZW50
cygpOworICAgIGlmIChsYXllckNvbnRlbnRzKSB7CisgICAgICAgIGlmIChDRkdldFR5cGVJRChs
YXllckNvbnRlbnRzKSA9PSBDR0ltYWdlR2V0VHlwZUlEKCkpIHsKKyAgICAgICAgICAgIENHSW1h
Z2VSZWYgaW1hZ2VDb250ZW50cyA9IHN0YXRpY19jYXN0PENHSW1hZ2VSZWY+KGNvbnN0X2Nhc3Q8
dm9pZCo+KGxheWVyQ29udGVudHMpKTsKKyAgICAgICAgICAgIHByaW50SW5kZW50KGluZGVudCAr
IDEpOworICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIoY29udGVudHMgKGltYWdlIFslZCAl
ZF0pKVxuIiwKKyAgICAgICAgICAgICAgICBDR0ltYWdlR2V0V2lkdGgoaW1hZ2VDb250ZW50cyks
IENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2VDb250ZW50cykpOworICAgICAgICB9CisgICAgfQorCisg
ICAgLy8gUHJpbnQgc3VibGF5ZXJzIGlmIG5lZWRlZAorICAgIGludCBuID0gbGF5ZXItPnN1Ymxh
eWVyQ291bnQoKTsKKyAgICBpZiAobiA+IDApIHsKKyAgICAgICAgcHJpbnRJbmRlbnQoaW5kZW50
ICsgMSk7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiKHN1YmxheWVyc1xuIik7CisKKyAgICAg
ICAgQ0ZBcnJheVJlZiBzdWJsYXllcnMgPSBDQUNGTGF5ZXJHZXRTdWJsYXllcnMobGF5ZXItPnBs
YXRmb3JtTGF5ZXIoKSk7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgKytpKSB7Cisg
ICAgICAgICAgICBQbGF0Zm9ybUNBTGF5ZXIqIHN1YmxheWVyID0gUGxhdGZvcm1DQUxheWVyOjpw
bGF0Zm9ybUNBTGF5ZXIoY29uc3RfY2FzdDx2b2lkKj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChz
dWJsYXllcnMsIGkpKSk7CisgICAgICAgICAgICBwcmludExheWVyKHN1YmxheWVyLCBpbmRlbnQg
KyAyKTsKKyAgICAgICAgfQorCisgICAgICAgIHByaW50SW5kZW50KGluZGVudCArIDEpOworICAg
ICAgICBmcHJpbnRmKHN0ZGVyciwgIilcbiIpOworICAgIH0KKworICAgIHByaW50SW5kZW50KGlu
ZGVudCk7CisgICAgZnByaW50ZihzdGRlcnIsICIpXG4iKTsKK30KKwordm9pZCBQbGF0Zm9ybUNB
TGF5ZXI6OnByaW50VHJlZSgpIGNvbnN0Cit7CisgICAgLy8gUHJpbnQgaGVhZGluZyBpbmZvCisg
ICAgQ0dSZWN0IHJvb3RCb3VuZHMgPSBib3VuZHMoKTsKKyAgICBmcHJpbnRmKHN0ZGVyciwgIlxu
XG4qKiBSZW5kZXIgdHJlZSBhdCB0aW1lICVnIChib3VuZHMgJWcsICVnICVneCVnKSAqKlxuXG4i
LCAKKyAgICAgICAgY3VycmVudFRpbWUoKSwgcm9vdEJvdW5kcy5vcmlnaW4ueCwgcm9vdEJvdW5k
cy5vcmlnaW4ueSwgcm9vdEJvdW5kcy5zaXplLndpZHRoLCByb290Qm91bmRzLnNpemUuaGVpZ2h0
KTsKKworICAgIC8vIFByaW50IGxheWVyIHRyZWUgZnJvbSB0aGUgcm9vdAorICAgIHByaW50TGF5
ZXIodGhpcywgMCk7Cit9CisjZW5kaWYgLy8gI2lmbmRlZiBOREVCVUcKKworI2VuZGlmIC8vIFVT
RShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbkludGVybmFsLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5h
bC5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9Q
bGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDY0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJ
TkcpCisKKyNpbmNsdWRlICJQbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbC5oIgorCisjaW5jbHVk
ZSAiRm9udC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtQ0FMYXllci5oIgorI2luY2x1ZGUgPFF1YXJ0
ekNvcmUvQ0FDRkxheWVyLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBzdGQ7Cit1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKKworLy8gVGhlIHdpZHRoIGFuZCBoZWlnaHQgb2YgYSBzaW5nbGUgdGlsZSBp
biBhIHRpbGVkIGxheWVyLiBTaG91bGQgYmUgbGFyZ2UgZW5vdWdoIHRvCisvLyBhdm9pZCBsb3Rz
IG9mIHNtYWxsIHRpbGVzIChhbmQgdGhlcmVmb3JlIGxvdHMgb2YgZHJhd2luZyBjYWxsYmFja3Mp
LCBidXQgc21hbGwgZW5vdWdoCisvLyB0byBrZWVwIHRoZSBvdmVyYWxsIHRpbGUgY29zdCBsb3cu
CitzdGF0aWMgY29uc3QgaW50IGNUaWxlZExheWVyVGlsZVNpemUgPSA1MTI7CisKK1BsYXRmb3Jt
Q0FMYXllcldpbkludGVybmFsOjpQbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbChQbGF0Zm9ybUNB
TGF5ZXIqIG93bmVyKQorICAgIDogbV90aWxlU2l6ZShDR1NpemVNYWtlKGNUaWxlZExheWVyVGls
ZVNpemUsIGNUaWxlZExheWVyVGlsZVNpemUpKQorICAgICwgbV9jb25zdHJhaW5lZFNpemUoY29u
c3RyYWluZWRTaXplKG93bmVyLT5ib3VuZHMoKS5zaXplKCkpKQorICAgICwgbV9vd25lcihvd25l
cikKK3sKKyAgICBpZiAobV9vd25lci0+bGF5ZXJUeXBlKCkgPT0gUGxhdGZvcm1DQUxheWVyOjpM
YXllclR5cGVXZWJUaWxlZExheWVyKSB7CisgICAgICAgIC8vIFRpbGVkIGxheWVycyBhcmUgcGxh
Y2VkIGluIGEgY2hpbGQgbGF5ZXIgdGhhdCBpcyBhbHdheXMgdGhlIGZpcnN0IGNoaWxkIG9mIHRo
ZSBUaWxlZExheWVyCisgICAgICAgIG1fdGlsZVBhcmVudC5hZG9wdENGKENBQ0ZMYXllckNyZWF0
ZShrQ0FDRkxheWVyKSk7CisgICAgICAgIENBQ0ZMYXllckluc2VydFN1YmxheWVyKG1fb3duZXIt
PnBsYXRmb3JtTGF5ZXIoKSwgbV90aWxlUGFyZW50LmdldCgpLCAwKTsKKyAgICAgICAgdXBkYXRl
VGlsZXMoKTsKKyAgICB9Cit9CisKK1BsYXRmb3JtQ0FMYXllcldpbkludGVybmFsOjp+UGxhdGZv
cm1DQUxheWVyV2luSW50ZXJuYWwoKQoreworfQorCit2b2lkIFBsYXRmb3JtQ0FMYXllcldpbklu
dGVybmFsOjpkaXNwbGF5Q2FsbGJhY2soQ0FDRkxheWVyUmVmIGNhTGF5ZXIsIENHQ29udGV4dFJl
ZiBjb250ZXh0KQoreworICAgIGlmICghb3duZXIoKSB8fCAhb3duZXIoKS0+b3duZXIoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgQ0dDb250ZXh0U2F2ZUdTdGF0ZShjb250ZXh0KTsKKworICAg
IENHUmVjdCBsYXllckJvdW5kcyA9IG93bmVyKCktPmJvdW5kcygpOworICAgIGlmIChvd25lcigp
LT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJDb250ZW50c09yaWVudGF0aW9uKCkgPT0gV2ViQ29y
ZTo6R3JhcGhpY3NMYXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc1RvcERvd24pIHsKKyAgICAg
ICAgQ0dDb250ZXh0U2NhbGVDVE0oY29udGV4dCwgMSwgLTEpOworICAgICAgICBDR0NvbnRleHRU
cmFuc2xhdGVDVE0oY29udGV4dCwgMCwgLWxheWVyQm91bmRzLnNpemUuaGVpZ2h0KTsKKyAgICB9
CisKKyAgICBpZiAob3duZXIoKS0+b3duZXIoKSkgeworICAgICAgICBHcmFwaGljc0NvbnRleHQg
Z3JhcGhpY3NDb250ZXh0KGNvbnRleHQpOworCisgICAgICAgIC8vIEl0J3MgaW1wb3J0YW50IHRv
IGdldCB0aGUgY2xpcCBmcm9tIHRoZSBjb250ZXh0LCBiZWNhdXNlIGl0IG1heSBiZSBzaWduaWZp
Y2FudGx5CisgICAgICAgIC8vIHNtYWxsZXIgdGhhbiB0aGUgbGF5ZXIgYm91bmRzIChlLmcuIHRp
bGVkIGxheWVycykKKyAgICAgICAgQ0dSZWN0IGNsaXBCb3VuZHMgPSBDR0NvbnRleHRHZXRDbGlw
Qm91bmRpbmdCb3goY29udGV4dCk7CisgICAgICAgIEludFJlY3QgY2xpcChlbmNsb3NpbmdJbnRS
ZWN0KGNsaXBCb3VuZHMpKTsKKyAgICAgICAgb3duZXIoKS0+b3duZXIoKS0+cGxhdGZvcm1DQUxh
eWVyUGFpbnRDb250ZW50cyhncmFwaGljc0NvbnRleHQsIGNsaXApOworICAgIH0KKyNpZm5kZWYg
TkRFQlVHCisgICAgZWxzZSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworCisgICAg
ICAgIC8vIEZJWE1FOiBpZGVhbGx5IHdlJ2QgYXZvaWQgY2FsbGluZyAtc2V0TmVlZHNEaXNwbGF5
IG9uIGEgbGF5ZXIgdGhhdCBpcyBhIHBsYWluIGNvbG9yLAorICAgICAgICAvLyBzbyBDQSBuZXZl
ciBtYWtlcyBiYWNraW5nIHN0b3JlIGZvciBpdCAod2hpY2ggaXMgd2hhdCAtc2V0TmVlZHNEaXNw
bGF5IHdpbGwgZG8gYWJvdmUpLgorICAgICAgICBDR0NvbnRleHRTZXRSR0JGaWxsQ29sb3IoY29u
dGV4dCwgMC4wZiwgMS4wZiwgMC4wZiwgMS4wZik7CisgICAgICAgIENHQ29udGV4dEZpbGxSZWN0
KGNvbnRleHQsIGxheWVyQm91bmRzKTsKKyAgICB9CisjZW5kaWYKKworICAgIGlmIChvd25lcigp
LT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJTaG93UmVwYWludENvdW50ZXIoKSkgeworICAgICAg
ICBTdHJpbmcgdGV4dCA9IFN0cmluZzo6bnVtYmVyKG93bmVyKCktPm93bmVyKCktPnBsYXRmb3Jt
Q0FMYXllckluY3JlbWVudFJlcGFpbnRDb3VudCgpKTsKKworICAgICAgICBDR0NvbnRleHRTYXZl
R1N0YXRlKGNvbnRleHQpOworCisgICAgICAgIC8vIE1ha2UgdGhlIGJhY2tncm91bmQgb2YgdGhl
IGNvdW50ZXIgdGhlIHNhbWUgYXMgdGhlIGJvcmRlciBjb2xvciwKKyAgICAgICAgLy8gdW5sZXNz
IHRoZXJlIGlzIG5vIGJvcmRlciwgdGhlbiBtYWtlIGl0IHJlZAorICAgICAgICBmbG9hdCBib3Jk
ZXJXaWR0aCA9IENBQ0ZMYXllckdldEJvcmRlcldpZHRoKGNhTGF5ZXIpOworICAgICAgICBpZiAo
Ym9yZGVyV2lkdGggPiAwKSB7CisgICAgICAgICAgICBDR0NvbG9yUmVmIGJvcmRlckNvbG9yID0g
Q0FDRkxheWVyR2V0Qm9yZGVyQ29sb3IoY2FMYXllcik7CisgICAgICAgICAgICBjb25zdCBDR0Zs
b2F0KiBjb2xvcnMgPSBDR0NvbG9yR2V0Q29tcG9uZW50cyhib3JkZXJDb2xvcik7CisgICAgICAg
ICAgICBDR0NvbnRleHRTZXRSR0JGaWxsQ29sb3IoY29udGV4dCwgY29sb3JzWzBdLCBjb2xvcnNb
MV0sIGNvbG9yc1syXSwgY29sb3JzWzNdKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBD
R0NvbnRleHRTZXRSR0JGaWxsQ29sb3IoY29udGV4dCwgMS4wZiwgMC4wZiwgMC4wZiwgMC44Zik7
CisgICAgICAgIAorICAgICAgICBDR1JlY3QgYUJvdW5kcyA9IGxheWVyQm91bmRzOworCisgICAg
ICAgIGFCb3VuZHMuc2l6ZS53aWR0aCA9IDEwICsgMTAgKiB0ZXh0Lmxlbmd0aCgpOworICAgICAg
ICBhQm91bmRzLnNpemUuaGVpZ2h0ID0gMjI7CisgICAgICAgIENHQ29udGV4dEZpbGxSZWN0KGNv
bnRleHQsIGFCb3VuZHMpOworICAgICAgICAKKyAgICAgICAgRm9udERlc2NyaXB0aW9uIGRlc2M7
CisKKyAgICAgICAgTk9OQ0xJRU5UTUVUUklDUyBtZXRyaWNzOworICAgICAgICBtZXRyaWNzLmNi
U2l6ZSA9IHNpemVvZihtZXRyaWNzKTsKKyAgICAgICAgU3lzdGVtUGFyYW1ldGVyc0luZm8oU1BJ
X0dFVE5PTkNMSUVOVE1FVFJJQ1MsIG1ldHJpY3MuY2JTaXplLCAmbWV0cmljcywgMCk7CisgICAg
ICAgIEZvbnRGYW1pbHkgZmFtaWx5OworICAgICAgICBmYW1pbHkuc2V0RmFtaWx5KG1ldHJpY3Mu
bGZTbUNhcHRpb25Gb250LmxmRmFjZU5hbWUpOworICAgICAgICBkZXNjLnNldEZhbWlseShmYW1p
bHkpOworCisgICAgICAgIGRlc2Muc2V0Q29tcHV0ZWRTaXplKDE4KTsKKyAgICAgICAgCisgICAg
ICAgIEZvbnQgZm9udCA9IEZvbnQoZGVzYywgMCwgMCk7CisgICAgICAgIGZvbnQudXBkYXRlKDAp
OworCisgICAgICAgIEdyYXBoaWNzQ29udGV4dCBjZyhjb250ZXh0KTsKKyAgICAgICAgY2cuc2V0
RmlsbENvbG9yKENvbG9yOjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgIGNn
LmRyYXdUZXh0KGZvbnQsIFRleHRSdW4odGV4dCksIEludFBvaW50KGFCb3VuZHMub3JpZ2luLngg
KyA1LCBhQm91bmRzLm9yaWdpbi55ICsgMTcpKTsKKworICAgICAgICBDR0NvbnRleHRSZXN0b3Jl
R1N0YXRlKGNvbnRleHQpOyAgICAgICAgCisgICAgfQorCisgICAgQ0dDb250ZXh0UmVzdG9yZUdT
dGF0ZShjb250ZXh0KTsKKworICAgIG93bmVyKCktPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllckxh
eWVyRGlkRGlzcGxheShjYUxheWVyKTsKK30KKwordm9pZCBQbGF0Zm9ybUNBTGF5ZXJXaW5JbnRl
cm5hbDo6aW50ZXJuYWxTZXROZWVkc0Rpc3BsYXkoY29uc3QgRmxvYXRSZWN0KiBkaXJ0eVJlY3Qp
Cit7CisgICAgaWYgKGRpcnR5UmVjdCkgeworICAgICAgICBDR1JlY3QgcmVjdCA9ICpkaXJ0eVJl
Y3Q7CisgICAgICAgIENBQ0ZMYXllclNldE5lZWRzRGlzcGxheShvd25lcigpLT5wbGF0Zm9ybUxh
eWVyKCksICZyZWN0KTsKKyAgICB9IGVsc2UKKyAgICAgICAgQ0FDRkxheWVyU2V0TmVlZHNEaXNw
bGF5KG93bmVyKCktPnBsYXRmb3JtTGF5ZXIoKSwgMCk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxh
eWVyV2luSW50ZXJuYWw6OnNldE5lZWRzRGlzcGxheShjb25zdCBGbG9hdFJlY3QqIGRpcnR5UmVj
dCkKK3sKKyAgICBpZiAob3duZXIoKS0+bGF5ZXJUeXBlKCkgPT0gUGxhdGZvcm1DQUxheWVyOjpM
YXllclR5cGVXZWJUaWxlZExheWVyKSB7CisgICAgICAgIC8vIEZJWE1FOiBPbmx5IHNldE5lZWRz
RGlzcGxheSBmb3IgdGlsZXMgdGhhdCBhcmUgY3VycmVudGx5IHZpc2libGUKKyAgICAgICAgaW50
IG51bVRpbGVMYXllcnMgPSB0aWxlQ291bnQoKTsKKyAgICAgICAgQ0dSZWN0IHJlY3Q7CisgICAg
ICAgIGlmIChkaXJ0eVJlY3QpCisgICAgICAgICAgICByZWN0ID0gKmRpcnR5UmVjdDsKKyAgICAg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1UaWxlTGF5ZXJzOyArK2kpCisgICAgICAgICAgICBD
QUNGTGF5ZXJTZXROZWVkc0Rpc3BsYXkodGlsZUF0SW5kZXgoaSksIGRpcnR5UmVjdCA/ICZyZWN0
IDogMCk7CisKKyAgICAgICAgaWYgKG1fb3duZXItPm93bmVyKCkgJiYgbV9vd25lci0+b3duZXIo
KS0+cGxhdGZvcm1DQUxheWVyU2hvd1JlcGFpbnRDb3VudGVyKCkpIHsKKyAgICAgICAgICAgIENH
UmVjdCBsYXllckJvdW5kcyA9IG1fb3duZXItPmJvdW5kcygpOworICAgICAgICAgICAgQ0dSZWN0
IGluZGljYXRvclJlY3QgPSBDR1JlY3RNYWtlKGxheWVyQm91bmRzLm9yaWdpbi54LCBsYXllckJv
dW5kcy5vcmlnaW4ueSwgODAsIDI1KTsKKyAgICAgICAgICAgIENBQ0ZMYXllclNldE5lZWRzRGlz
cGxheSh0aWxlQXRJbmRleCgwKSwgJmluZGljYXRvclJlY3QpOworICAgICAgICB9CisgICAgfSBl
bHNlIGlmIChvd25lcigpLT5sYXllclR5cGUoKSA9PSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlw
ZVdlYkxheWVyKSB7CisgICAgICAgIGlmIChvd25lcigpICYmIG93bmVyKCktPm93bmVyKCkpIHsK
KyAgICAgICAgICAgIGlmIChvd25lcigpLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJTaG93UmVw
YWludENvdW50ZXIoKSkgeworICAgICAgICAgICAgICAgIEZsb2F0UmVjdCBsYXllckJvdW5kcyA9
IG93bmVyKCktPmJvdW5kcygpOworICAgICAgICAgICAgICAgIEZsb2F0UmVjdCByZXBhaW50Q291
bnRlclJlY3QgPSBsYXllckJvdW5kczsKKworICAgICAgICAgICAgICAgIC8vIFdlIGFzc3VtZSBh
IG1heGltdW0gb2YgNCBkaWdpdHMgYW5kIGEgZm9udCBzaXplIG9mIDE4LgorICAgICAgICAgICAg
ICAgIHJlcGFpbnRDb3VudGVyUmVjdC5zZXRXaWR0aCg4MCk7CisgICAgICAgICAgICAgICAgcmVw
YWludENvdW50ZXJSZWN0LnNldEhlaWdodCgyMik7CisgICAgICAgICAgICAgICAgaWYgKG93bmVy
KCktPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllckNvbnRlbnRzT3JpZW50YXRpb24oKSA9PSBXZWJD
b3JlOjpHcmFwaGljc0xheWVyOjpDb21wb3NpdGluZ0Nvb3JkaW5hdGVzVG9wRG93bikKKyAgICAg
ICAgICAgICAgICAgICAgcmVwYWludENvdW50ZXJSZWN0LnNldFkobGF5ZXJCb3VuZHMuaGVpZ2h0
KCkgLSAobGF5ZXJCb3VuZHMueSgpICsgcmVwYWludENvdW50ZXJSZWN0LmhlaWdodCgpKSk7Cisg
ICAgICAgICAgICAgICAgaW50ZXJuYWxTZXROZWVkc0Rpc3BsYXkoJnJlcGFpbnRDb3VudGVyUmVj
dCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoZGlydHlSZWN0ICYmIG93bmVyKCkt
Pm93bmVyKCktPnBsYXRmb3JtQ0FMYXllckNvbnRlbnRzT3JpZW50YXRpb24oKSA9PSBXZWJDb3Jl
OjpHcmFwaGljc0xheWVyOjpDb21wb3NpdGluZ0Nvb3JkaW5hdGVzVG9wRG93bikgeworICAgICAg
ICAgICAgICAgIEZsb2F0UmVjdCBmbGlwcGVkRGlydHlSZWN0ID0gKmRpcnR5UmVjdDsKKyAgICAg
ICAgICAgICAgICBmbGlwcGVkRGlydHlSZWN0LnNldFkob3duZXIoKS0+Ym91bmRzKCkuaGVpZ2h0
KCkgLSAoZmxpcHBlZERpcnR5UmVjdC55KCkgKyBmbGlwcGVkRGlydHlSZWN0LmhlaWdodCgpKSk7
CisgICAgICAgICAgICAgICAgaW50ZXJuYWxTZXROZWVkc0Rpc3BsYXkoJmZsaXBwZWREaXJ0eVJl
Y3QpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
CisgICAgICAgIGludGVybmFsU2V0TmVlZHNEaXNwbGF5KGRpcnR5UmVjdCk7CisgICAgfQorICAg
IG93bmVyKCktPnNldE5lZWRzQ29tbWl0KCk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyV2lu
SW50ZXJuYWw6OnNldFN1YmxheWVycyhjb25zdCBQbGF0Zm9ybUNBTGF5ZXJMaXN0JiBsaXN0KQor
eworICAgIC8vIFJlbW92ZSBhbGwgdGhlIGN1cnJlbnQgc3VibGF5ZXJzIGFuZCBhZGQgdGhlIHBh
c3NlZCBsYXllcnMKKyAgICBDQUNGTGF5ZXJTZXRTdWJsYXllcnMob3duZXIoKS0+cGxhdGZvcm1M
YXllcigpLCAwKTsKKworICAgIC8vIFBlcmZvcm0gcmVtb3ZlRnJvbVN1cGVyTGF5ZXIgaW4gYSBz
ZXBhcmF0ZSBwYXNzLiBDQUNGIHJlcXVpcmVzIHN1cGVybGF5ZXIgdG8KKyAgICAvLyBiZSBudWxs
IG9yIENBQ0ZMYXllckluc2VydFN1YmxheWVyIHNpbGVudGx5IGZhaWxzLgorICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbGlzdC5zaXplKCk7IGkrKykKKyAgICAgICAgQ0FDRkxheWVyUmVtb3Zl
RnJvbVN1cGVybGF5ZXIobGlzdFtpXS0+cGxhdGZvcm1MYXllcigpKTsKKworICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbGlzdC5zaXplKCk7IGkrKykKKyAgICAgICAgQ0FDRkxheWVySW5zZXJ0
U3VibGF5ZXIob3duZXIoKS0+cGxhdGZvcm1MYXllcigpLCBsaXN0W2ldLT5wbGF0Zm9ybUxheWVy
KCksIGkpOworCisgICAgb3duZXIoKS0+c2V0TmVlZHNDb21taXQoKTsKKworICAgIGlmIChvd25l
cigpLT5sYXllclR5cGUoKSA9PSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVdlYlRpbGVkTGF5
ZXIpIHsKKyAgICAgICAgLy8gUHJlc2VydmUgdGhlIHRpbGUgcGFyZW50IGFmdGVyIHNldAorICAg
ICAgICBDQUNGTGF5ZXJJbnNlcnRTdWJsYXllcihvd25lcigpLT5wbGF0Zm9ybUxheWVyKCksIG1f
dGlsZVBhcmVudC5nZXQoKSwgMCk7CisgICAgfQorfQorCit2b2lkIFBsYXRmb3JtQ0FMYXllcldp
bkludGVybmFsOjpyZW1vdmVBbGxTdWJsYXllcnMoKQoreworICAgIENBQ0ZMYXllclNldFN1Ymxh
eWVycyhvd25lcigpLT5wbGF0Zm9ybUxheWVyKCksIDApOworICAgIG93bmVyKCktPnNldE5lZWRz
Q29tbWl0KCk7CisKKyAgICBpZiAob3duZXIoKS0+bGF5ZXJUeXBlKCkgPT0gUGxhdGZvcm1DQUxh
eWVyOjpMYXllclR5cGVXZWJUaWxlZExheWVyKSB7CisgICAgICAgIC8vIFJlc3RvcmUgdGhlIHRp
bGUgcGFyZW50IGFmdGVyIHJlbW92YWwKKyAgICAgICAgQ0FDRkxheWVySW5zZXJ0U3VibGF5ZXIo
b3duZXIoKS0+cGxhdGZvcm1MYXllcigpLCBtX3RpbGVQYXJlbnQuZ2V0KCksIDApOworICAgIH0K
K30KKwordm9pZCBQbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbDo6aW5zZXJ0U3VibGF5ZXIoUGxh
dGZvcm1DQUxheWVyKiBsYXllciwgc2l6ZV90IGluZGV4KQoreworICAgIGluZGV4ID0gbWluKGlu
ZGV4LCBzdWJsYXllckNvdW50KCkpOworICAgIGlmIChvd25lcigpLT5sYXllclR5cGUoKSA9PSBQ
bGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVdlYlRpbGVkTGF5ZXIpIHsKKyAgICAgICAgLy8gQWRk
IDEgdG8gYWNjb3VudCBmb3IgdGhlIHRpbGUgcGFyZW50IGxheWVyCisgICAgICAgIGluZGV4Kys7
CisgICAgfQorCisgICAgbGF5ZXItPnJlbW92ZUZyb21TdXBlcmxheWVyKCk7CisgICAgQ0FDRkxh
eWVySW5zZXJ0U3VibGF5ZXIob3duZXIoKS0+cGxhdGZvcm1MYXllcigpLCBsYXllci0+cGxhdGZv
cm1MYXllcigpLCBpbmRleCk7CisgICAgb3duZXIoKS0+c2V0TmVlZHNDb21taXQoKTsKK30KKwor
c2l6ZV90IFBsYXRmb3JtQ0FMYXllcldpbkludGVybmFsOjpzdWJsYXllckNvdW50KCkgY29uc3QK
K3sKKyAgICBDRkFycmF5UmVmIHN1YmxheWVycyA9IENBQ0ZMYXllckdldFN1YmxheWVycyhvd25l
cigpLT5wbGF0Zm9ybUxheWVyKCkpOworICAgIHNpemVfdCBjb3VudCA9IHN1YmxheWVycyA/IENG
QXJyYXlHZXRDb3VudChzdWJsYXllcnMpIDogMDsKKworICAgIGlmIChvd25lcigpLT5sYXllclR5
cGUoKSA9PSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVdlYlRpbGVkTGF5ZXIpIHsKKyAgICAg
ICAgLy8gU3VidHJhY3QgMSB0byBhY2NvdW50IGZvciB0aGUgdGlsZSBwYXJlbnQgbGF5ZXIKKyAg
ICAgICAgQVNTRVJUKGNvdW50ID4gMCk7CisgICAgICAgIGNvdW50LS07CisgICAgfQorCisgICAg
cmV0dXJuIGNvdW50OworfQorCitpbnQgUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWw6OmluZGV4
T2ZTdWJsYXllcihjb25zdCBQbGF0Zm9ybUNBTGF5ZXIqIHJlZmVyZW5jZSkKK3sKKyAgICBDQUNG
TGF5ZXJSZWYgcmVmID0gcmVmZXJlbmNlLT5wbGF0Zm9ybUxheWVyKCk7CisgICAgaWYgKCFyZWYp
CisgICAgICAgIHJldHVybiAtMTsKKworICAgIENGQXJyYXlSZWYgc3VibGF5ZXJzID0gQ0FDRkxh
eWVyR2V0U3VibGF5ZXJzKG93bmVyKCktPnBsYXRmb3JtTGF5ZXIoKSk7CisgICAgaWYgKCFzdWJs
YXllcnMpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIHNpemVfdCBuID0gQ0ZBcnJheUdldENv
dW50KHN1YmxheWVycyk7CisKKyAgICBpZiAob3duZXIoKS0+bGF5ZXJUeXBlKCkgPT0gUGxhdGZv
cm1DQUxheWVyOjpMYXllclR5cGVXZWJUaWxlZExheWVyKSB7CisgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAxOyBpIDwgbjsgKytpKSB7CisgICAgICAgICAgICBpZiAoQ0ZBcnJheUdldFZhbHVlQXRJ
bmRleChzdWJsYXllcnMsIGkpID09IHJlZikKKyAgICAgICAgICAgICAgICByZXR1cm4gaSAtIDE7
CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG47ICsraSkgeworICAgICAgICAgICAgaWYgKENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoc3VibGF5
ZXJzLCBpKSA9PSByZWYpCisgICAgICAgICAgICAgICAgcmV0dXJuIGk7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICByZXR1cm4gLTE7Cit9CisKK1BsYXRmb3JtQ0FMYXllciogUGxhdGZvcm1DQUxh
eWVyV2luSW50ZXJuYWw6OnN1YmxheWVyQXRJbmRleChpbnQgaW5kZXgpIGNvbnN0Cit7CisgICAg
aWYgKG93bmVyKCktPmxheWVyVHlwZSgpID09IFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlV2Vi
VGlsZWRMYXllcikgeworICAgICAgICAvLyBBZGQgMSB0byBhY2NvdW50IGZvciB0aGUgdGlsZSBw
YXJlbnQgbGF5ZXIKKyAgICAgICAgaW5kZXgrKzsKKyAgICB9CisKKyAgICBDRkFycmF5UmVmIHN1
YmxheWVycyA9IENBQ0ZMYXllckdldFN1YmxheWVycyhvd25lcigpLT5wbGF0Zm9ybUxheWVyKCkp
OworICAgIGlmICghc3VibGF5ZXJzIHx8IGluZGV4IDwgMCB8fCBDRkFycmF5R2V0Q291bnQoc3Vi
bGF5ZXJzKSA8PSBpbmRleCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgCisgICAgcmV0dXJuIFBs
YXRmb3JtQ0FMYXllcjo6cGxhdGZvcm1DQUxheWVyKHN0YXRpY19jYXN0PENBQ0ZMYXllclJlZj4o
Y29uc3RfY2FzdDx2b2lkKj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChzdWJsYXllcnMsIGluZGV4
KSkpKTsKK30KKwordm9pZCBQbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbDo6c2V0Qm91bmRzKGNv
bnN0IEZsb2F0UmVjdCYgcmVjdCkKK3sKKyAgICBpZiAoQ0dSZWN0RXF1YWxUb1JlY3QocmVjdCwg
b3duZXIoKS0+Ym91bmRzKCkpKQorICAgICAgICByZXR1cm47CisKKyAgICBDQUNGTGF5ZXJTZXRC
b3VuZHMob3duZXIoKS0+cGxhdGZvcm1MYXllcigpLCByZWN0KTsKKyAgICBvd25lcigpLT5zZXRO
ZWVkc0NvbW1pdCgpOworCisgICAgaWYgKG93bmVyKCktPmxheWVyVHlwZSgpID09IFBsYXRmb3Jt
Q0FMYXllcjo6TGF5ZXJUeXBlV2ViVGlsZWRMYXllcikgeworICAgICAgICBtX2NvbnN0cmFpbmVk
U2l6ZSA9IGNvbnN0cmFpbmVkU2l6ZShyZWN0LnNpemUoKSk7CisgICAgICAgIHVwZGF0ZVRpbGVz
KCk7CisgICAgfQorfQorCit2b2lkIFBsYXRmb3JtQ0FMYXllcldpbkludGVybmFsOjpzZXRGcmFt
ZShjb25zdCBGbG9hdFJlY3QmIHJlY3QpCit7CisgICAgQ0dSZWN0IG9sZEZyYW1lID0gb3duZXIo
KS0+ZnJhbWUoKTsKKyAgICBpZiAoQ0dSZWN0RXF1YWxUb1JlY3QocmVjdCwgb2xkRnJhbWUpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBDQUNGTGF5ZXJTZXRGcmFtZShvd25lcigpLT5wbGF0Zm9y
bUxheWVyKCksIHJlY3QpOworICAgIG93bmVyKCktPnNldE5lZWRzQ29tbWl0KCk7CisKKyAgICBp
ZiAob3duZXIoKS0+bGF5ZXJUeXBlKCkgPT0gUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVXZWJU
aWxlZExheWVyKQorICAgICAgICB1cGRhdGVUaWxlcygpOworfQorCitDR1NpemUgUGxhdGZvcm1D
QUxheWVyV2luSW50ZXJuYWw6OmNvbnN0cmFpbmVkU2l6ZShjb25zdCBDR1NpemUmIHNpemUpIGNv
bnN0Cit7CisgICAgY29uc3QgaW50IGNNYXhUaWxlQ291bnQgPSA1MTI7CisgICAgY29uc3QgZmxv
YXQgY1NxcnRNYXhUaWxlQ291bnQgPSBzcXJ0ZihjTWF4VGlsZUNvdW50KTsKKworICAgIENHU2l6
ZSBjb25zdHJhaW5lZFNpemUgPSBzaXplOworCisgICAgaW50IHRpbGVDb2x1bW5zID0gY2VpbGYo
Y29uc3RyYWluZWRTaXplLndpZHRoIC8gbV90aWxlU2l6ZS53aWR0aCk7CisgICAgaW50IHRpbGVS
b3dzID0gY2VpbGYoY29uc3RyYWluZWRTaXplLmhlaWdodCAvIG1fdGlsZVNpemUuaGVpZ2h0KTsK
KyAgICBpbnQgbnVtVGlsZXMgPSB0aWxlQ29sdW1ucyAqIHRpbGVSb3dzOworCisgICAgLy8gSWYg
bnVtYmVyIG9mIHRpbGVzIHZlcnRpY2FsbHkgb3IgaG9yaXpvbnRhbGx5IGlzIDwgc3FydChjTWF4
VGlsZUNvdW50KQorICAgIC8vIGp1c3Qgc2hvcnRlbiB0aGUgbG9uZ2VyIGRpbWVuc2lvbi4gT3Ro
ZXJ3aXNlIHNob3J0ZW4gYm90aCBkaW1lbnNpb25zCisgICAgLy8gYWNjb3JkaW5nIHRvIHRoZSBy
YXRpbyBvZiB3aWR0aCB0byBoZWlnaHQKKworICAgIGlmIChudW1UaWxlcyA+IGNNYXhUaWxlQ291
bnQpIHsKKyAgICAgICAgaWYgKHRpbGVSb3dzIDwgY1NxcnRNYXhUaWxlQ291bnQpCisgICAgICAg
ICAgICB0aWxlQ29sdW1ucyA9IGZsb29yZihjTWF4VGlsZUNvdW50IC8gdGlsZVJvd3MpOworICAg
ICAgICBlbHNlIGlmICh0aWxlQ29sdW1ucyA8IGNTcXJ0TWF4VGlsZUNvdW50KQorICAgICAgICAg
ICAgdGlsZVJvd3MgPSBmbG9vcmYoY01heFRpbGVDb3VudCAvIHRpbGVDb2x1bW5zKTsKKyAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICB0aWxlUm93cyA9IGNlaWxmKHNxcnRmKGNNYXhUaWxlQ291
bnQgKiBjb25zdHJhaW5lZFNpemUuaGVpZ2h0IC8gY29uc3RyYWluZWRTaXplLndpZHRoKSk7Cisg
ICAgICAgICAgICB0aWxlQ29sdW1ucyA9IGZsb29yZihjTWF4VGlsZUNvdW50IC8gdGlsZVJvd3Mp
OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBjb25zdHJhaW5lZFNpemUud2lkdGggPSB0
aWxlQ29sdW1ucyAqIG1fdGlsZVNpemUud2lkdGg7CisgICAgICAgIGNvbnN0cmFpbmVkU2l6ZS5o
ZWlnaHQgPSB0aWxlUm93cyAqIG1fdGlsZVNpemUuaGVpZ2h0OworICAgIH0KKyAgICAKKyAgICBy
ZXR1cm4gY29uc3RyYWluZWRTaXplOworfQorCit2b2lkIFBsYXRmb3JtQ0FMYXllcldpbkludGVy
bmFsOjp0aWxlRGlzcGxheUNhbGxiYWNrKENBQ0ZMYXllclJlZiBsYXllciwgQ0dDb250ZXh0UmVm
IGNvbnRleHQpCit7CisgICAgc3RhdGljX2Nhc3Q8UGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWwq
PihDQUNGTGF5ZXJHZXRVc2VyRGF0YShsYXllcikpLT5kcmF3VGlsZShsYXllciwgY29udGV4dCk7
Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWw6OmFkZFRpbGUoKQoreworICAg
IFJldGFpblB0cjxDQUNGTGF5ZXJSZWY+IG5ld0xheWVyKEFkb3B0Q0YsIENBQ0ZMYXllckNyZWF0
ZShrQ0FDRkxheWVyKSk7CisgICAgQ0FDRkxheWVyU2V0QW5jaG9yUG9pbnQobmV3TGF5ZXIuZ2V0
KCksIENHUG9pbnRNYWtlKDAsIDEpKTsKKyAgICBDQUNGTGF5ZXJTZXRVc2VyRGF0YShuZXdMYXll
ci5nZXQoKSwgdGhpcyk7CisgICAgQ0FDRkxheWVyU2V0RGlzcGxheUNhbGxiYWNrKG5ld0xheWVy
LmdldCgpLCB0aWxlRGlzcGxheUNhbGxiYWNrKTsKKworICAgIENGQXJyYXlSZWYgc3VibGF5ZXJz
ID0gQ0FDRkxheWVyR2V0U3VibGF5ZXJzKG1fdGlsZVBhcmVudC5nZXQoKSk7CisgICAgQ0FDRkxh
eWVySW5zZXJ0U3VibGF5ZXIobV90aWxlUGFyZW50LmdldCgpLCBuZXdMYXllci5nZXQoKSwgc3Vi
bGF5ZXJzID8gQ0ZBcnJheUdldENvdW50KHN1YmxheWVycykgOiAwKTsKKworICAgIGlmIChvd25l
cigpLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJTaG93RGVidWdCb3JkZXJzKCkpIHsKKyAgICAg
ICAgQ0dDb2xvclJlZiBib3JkZXJDb2xvciA9IENHQ29sb3JDcmVhdGVHZW5lcmljUkdCKDAuNSwg
MCwgMC41LCAwLjcpOworICAgICAgICBDQUNGTGF5ZXJTZXRCb3JkZXJDb2xvcihuZXdMYXllci5n
ZXQoKSwgYm9yZGVyQ29sb3IpOworICAgICAgICBDR0NvbG9yUmVsZWFzZShib3JkZXJDb2xvcik7
CisgICAgICAgIENBQ0ZMYXllclNldEJvcmRlcldpZHRoKG5ld0xheWVyLmdldCgpLCAyKTsKKyAg
ICB9Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWw6OnJlbW92ZVRpbGUoKQor
eworICAgIENBQ0ZMYXllclJlbW92ZUZyb21TdXBlcmxheWVyKHRpbGVBdEluZGV4KHRpbGVDb3Vu
dCgpIC0gMSkpOworfQorCitDQUNGTGF5ZXJSZWYgUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWw6
OnRpbGVBdEluZGV4KGludCBpbmRleCkKK3sKKyAgICBDRkFycmF5UmVmIHN1YmxheWVycyA9IENB
Q0ZMYXllckdldFN1YmxheWVycyhtX3RpbGVQYXJlbnQuZ2V0KCkpOworICAgIGlmICghc3VibGF5
ZXJzIHx8IGluZGV4IDwgMCB8fCBpbmRleCA+PSB0aWxlQ291bnQoKSkKKyAgICAgICAgcmV0dXJu
IDA7CisgICAgCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PENBQ0ZMYXllclJlZj4oY29uc3RfY2Fz
dDx2b2lkKj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChzdWJsYXllcnMsIGluZGV4KSkpOworfQor
CitpbnQgUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWw6OnRpbGVDb3VudCgpIGNvbnN0Cit7Cisg
ICAgQ0ZBcnJheVJlZiBzdWJsYXllcnMgPSBDQUNGTGF5ZXJHZXRTdWJsYXllcnMobV90aWxlUGFy
ZW50LmdldCgpKTsKKyAgICByZXR1cm4gc3VibGF5ZXJzID8gQ0ZBcnJheUdldENvdW50KHN1Ymxh
eWVycykgOiAwOworfQorCit2b2lkIFBsYXRmb3JtQ0FMYXllcldpbkludGVybmFsOjp1cGRhdGVU
aWxlcygpCit7CisgICAgLy8gRklYTUU6IEluIGFkZGl0aW9uIHRvIHJlZG9pbmcgdGhlIG51bWJl
ciBvZiB0aWxlcywgd2UgbmVlZCB0byBvbmx5IHJlbmRlciBhbmQgaGF2ZSBiYWNraW5nCisgICAg
Ly8gc3RvcmUgZm9yIHZpc2libGUgbGF5ZXJzCisgICAgaW50IG51bVRpbGVzSG9yaXpvbnRhbCA9
IGNlaWwobV9jb25zdHJhaW5lZFNpemUud2lkdGggLyBtX3RpbGVTaXplLndpZHRoKTsKKyAgICBp
bnQgbnVtVGlsZXNWZXJ0aWNhbCA9IGNlaWwobV9jb25zdHJhaW5lZFNpemUuaGVpZ2h0IC8gbV90
aWxlU2l6ZS5oZWlnaHQpOworICAgIGludCBudW1UaWxlc1RvdGFsID0gbnVtVGlsZXNIb3Jpem9u
dGFsICogbnVtVGlsZXNWZXJ0aWNhbDsKKworICAgIGludCBudW1UaWxlc1RvQ2hhbmdlID0gbnVt
VGlsZXNUb3RhbCAtIHRpbGVDb3VudCgpOworICAgIGlmIChudW1UaWxlc1RvQ2hhbmdlID49IDAp
IHsKKyAgICAgICAgLy8gQWRkIG5ldyB0aWxlcworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8
IG51bVRpbGVzVG9DaGFuZ2U7ICsraSkKKyAgICAgICAgICAgIGFkZFRpbGUoKTsKKyAgICB9IGVs
c2UgeworICAgICAgICAvLyBSZW1vdmUgb2xkIHRpbGVzCisgICAgICAgIG51bVRpbGVzVG9DaGFu
Z2UgPSAtbnVtVGlsZXNUb0NoYW5nZTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1U
aWxlc1RvQ2hhbmdlOyArK2kpCisgICAgICAgICAgICByZW1vdmVUaWxlKCk7CisgICAgfQorCisg
ICAgLy8gU2V0IGNvb3JkaW5hdGVzIGZvciBhbGwgdGlsZXMKKyAgICBDRkFycmF5UmVmIHRpbGVB
cnJheSA9IENBQ0ZMYXllckdldFN1YmxheWVycyhtX3RpbGVQYXJlbnQuZ2V0KCkpOworCisgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBudW1UaWxlc0hvcml6b250YWw7ICsraSkgeworICAgICAgICBm
b3IgKGludCBqID0gMDsgaiA8IG51bVRpbGVzVmVydGljYWw7ICsraikgeworICAgICAgICAgICAg
Q0FDRkxheWVyUmVmIHRpbGUgPSBzdGF0aWNfY2FzdDxDQUNGTGF5ZXJSZWY+KGNvbnN0X2Nhc3Q8
dm9pZCo+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgodGlsZUFycmF5LCBpICogbnVtVGlsZXNWZXJ0
aWNhbCArIGopKSk7CisgICAgICAgICAgICBDQUNGTGF5ZXJTZXRQb3NpdGlvbih0aWxlLCBDR1Bv
aW50TWFrZShpICogbV90aWxlU2l6ZS53aWR0aCwgaiAqIG1fdGlsZVNpemUuaGVpZ2h0KSk7Cisg
ICAgICAgICAgICBpbnQgd2lkdGggPSBtaW4obV90aWxlU2l6ZS53aWR0aCwgbV9jb25zdHJhaW5l
ZFNpemUud2lkdGggLSBpICogbV90aWxlU2l6ZS53aWR0aCk7CisgICAgICAgICAgICBpbnQgaGVp
Z2h0ID0gbWluKG1fdGlsZVNpemUuaGVpZ2h0LCBtX2NvbnN0cmFpbmVkU2l6ZS5oZWlnaHQgLSBq
ICogbV90aWxlU2l6ZS5oZWlnaHQpOworICAgICAgICAgICAgQ0FDRkxheWVyU2V0Qm91bmRzKHRp
bGUsIENHUmVjdE1ha2UoaSAqIG1fdGlsZVNpemUud2lkdGgsIGogKiBtX3RpbGVTaXplLmhlaWdo
dCwgd2lkdGgsIGhlaWdodCkpOworCisgICAgICAgICAgICAvLyBGbGlwIFkgdG8gY29tcGVuc2F0
ZSBmb3IgdGhlIGZsaXBwaW5nIHRoYXQgaGFwcGVucyBkdXJpbmcgcmVuZGVyIHRvIG1hdGNoIHRo
ZSBDRyBjb250ZXh0IGNvb3JkaW5hdGUgc3BhY2UKKyAgICAgICAgICAgIENBVHJhbnNmb3JtM0Qg
dHJhbnNmb3JtID0gQ0FUcmFuc2Zvcm0zRE1ha2VTY2FsZSgxLCAtMSwgMSk7CisgICAgICAgICAg
ICBDQVRyYW5zZm9ybTNEVHJhbnNsYXRlKHRyYW5zZm9ybSwgMCwgaGVpZ2h0LCAwKTsKKyAgICAg
ICAgICAgIENBQ0ZMYXllclNldFRyYW5zZm9ybSh0aWxlLCB0cmFuc2Zvcm0pOworCisjaWZuZGVm
IE5ERUJVRworICAgICAgICAgICAgU3RyaW5nIG5hbWUgPSAiVGlsZSAoIiArIFN0cmluZzo6bnVt
YmVyKGkpICsgIiwiICsgU3RyaW5nOjpudW1iZXIoaikgKyAiKSI7CisgICAgICAgICAgICBDQUNG
TGF5ZXJTZXROYW1lKHRpbGUsIFJldGFpblB0cjxDRlN0cmluZ1JlZj4oQWRvcHRDRiwgbmFtZS5j
cmVhdGVDRlN0cmluZygpKS5nZXQoKSk7CisjZW5kaWYKKyAgICAgICAgfQorICAgIH0KK30KKwor
dm9pZCBQbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbDo6ZHJhd1RpbGUoQ0FDRkxheWVyUmVmIHRp
bGUsIENHQ29udGV4dFJlZiBjb250ZXh0KQoreworICAgIENHUG9pbnQgdGlsZVBvc2l0aW9uID0g
Q0FDRkxheWVyR2V0UG9zaXRpb24odGlsZSk7CisgICAgQ0dSZWN0IHRpbGVCb3VuZHMgPSBDQUNG
TGF5ZXJHZXRCb3VuZHModGlsZSk7CisKKyAgICBDR0NvbnRleHRTYXZlR1N0YXRlKGNvbnRleHQp
OworCisgICAgLy8gVHJhbnNmb3JtIGNvbnRleHQgdG8gYmUgYXQgdGhlIG9yaWdpbiBvZiB0aGUg
cGFyZW50IGxheWVyCisgICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKGNvbnRleHQsIC10aWxlUG9z
aXRpb24ueCwgLXRpbGVQb3NpdGlvbi55KTsKKworICAgIC8vIFNldCB0aGUgY29udGV4dCBjbGlw
cGluZyByZWN0YW5nbGUgdG8gdGhlIGN1cnJlbnQgdGlsZQorICAgIENHQ29udGV4dENsaXBUb1Jl
Y3QoY29udGV4dCwgQ0dSZWN0TWFrZSh0aWxlUG9zaXRpb24ueCwgdGlsZVBvc2l0aW9uLnksIHRp
bGVCb3VuZHMuc2l6ZS53aWR0aCwgdGlsZUJvdW5kcy5zaXplLmhlaWdodCkpOworCisgICAgaWYg
KG93bmVyKCktPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllckNvbnRlbnRzT3JpZW50YXRpb24oKSA9
PSBXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpDb21wb3NpdGluZ0Nvb3JkaW5hdGVzVG9wRG93bikg
eworICAgICAgICAvLyBJZiB0aGUgbGF5ZXIgaXMgcmVuZGVyaW5nIHRvcC1kb3duLCBpdCB3aWxs
IGZsaXAgdGhlIGNvb3JkaW5hdGVzIGluIHkuIFRpbGVkIGxheWVycyBhcmUKKyAgICAgICAgLy8g
YWxyZWFkeSBmbGlwcGluZywgc28gd2UgbmVlZCB0byB1bmRvIHRoYXQgaGVyZS4KKyAgICAgICAg
Q0dDb250ZXh0VHJhbnNsYXRlQ1RNKGNvbnRleHQsIDAsIG93bmVyKCktPmJvdW5kcygpLmhlaWdo
dCgpKTsKKyAgICAgICAgQ0dDb250ZXh0U2NhbGVDVE0oY29udGV4dCwgMSwgLTEpOworICAgIH0K
KworICAgIC8vIERyYXcgdGhlIHRpbGUKKyAgICBkaXNwbGF5Q2FsbGJhY2sob3duZXIoKS0+cGxh
dGZvcm1MYXllcigpLCBjb250ZXh0KTsKKworICAgIENHQ29udGV4dFJlc3RvcmVHU3RhdGUoY29u
dGV4dCk7Cit9CisKKyNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCkluZGV4
OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW5JbnRl
cm5hbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1Bs
YXRmb3JtQ0FMYXllcldpbkludGVybmFsLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbC5oCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDg4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFBsYXRmb3JtQ0FMYXllcldpbkludGVybmFs
X2gKKyNkZWZpbmUgUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWxfaAorCisjaWYgVVNFKEFDQ0VM
RVJBVEVEX0NPTVBPU0lUSU5HKQorCisjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NHR2VvbWV0cnku
aD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgor
Cit0eXBlZGVmIHN0cnVjdCBfQ0FDRkxheWVyICpDQUNGTGF5ZXJSZWY7Cit0eXBlZGVmIHN0cnVj
dCBDR0NvbnRleHQgKkNHQ29udGV4dFJlZjsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBGbG9hdFJlY3Q7CitjbGFzcyBQbGF0Zm9ybUNBTGF5ZXI7CisKK3R5cGVkZWYgVmVjdG9yPFJl
ZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+ID4gUGxhdGZvcm1DQUxheWVyTGlzdDsKKworY2xhc3MgUGxh
dGZvcm1DQUxheWVyV2luSW50ZXJuYWwgeworcHVibGljOgorICAgIFBsYXRmb3JtQ0FMYXllcldp
bkludGVybmFsKFBsYXRmb3JtQ0FMYXllciopOworICAgIH5QbGF0Zm9ybUNBTGF5ZXJXaW5JbnRl
cm5hbCgpOworCisgICAgdm9pZCBkaXNwbGF5Q2FsbGJhY2soQ0FDRkxheWVyUmVmLCBDR0NvbnRl
eHRSZWYpOworICAgIHZvaWQgc2V0TmVlZHNEaXNwbGF5KGNvbnN0IEZsb2F0UmVjdCopOworICAg
IFBsYXRmb3JtQ0FMYXllciogb3duZXIoKSBjb25zdCB7IHJldHVybiBtX293bmVyOyB9CisKKyAg
ICB2b2lkIHNldFN1YmxheWVycyhjb25zdCBQbGF0Zm9ybUNBTGF5ZXJMaXN0Jik7CisgICAgdm9p
ZCByZW1vdmVBbGxTdWJsYXllcnMoKTsKKyAgICB2b2lkIGluc2VydFN1YmxheWVyKFBsYXRmb3Jt
Q0FMYXllciosIHNpemVfdCk7CisgICAgc2l6ZV90IHN1YmxheWVyQ291bnQoKSBjb25zdDsKKyAg
ICBpbnQgaW5kZXhPZlN1YmxheWVyKGNvbnN0IFBsYXRmb3JtQ0FMYXllciogcmVmZXJlbmNlKTsK
KworICAgIHZvaWQgc2V0Qm91bmRzKGNvbnN0IEZsb2F0UmVjdCYpOworICAgIHZvaWQgc2V0RnJh
bWUoY29uc3QgRmxvYXRSZWN0Jik7CisKK3ByaXZhdGU6CisgICAgdm9pZCBpbnRlcm5hbFNldE5l
ZWRzRGlzcGxheShjb25zdCBGbG9hdFJlY3QqKTsKKyAgICBQbGF0Zm9ybUNBTGF5ZXIqIHN1Ymxh
eWVyQXRJbmRleChpbnQpIGNvbnN0OworCisgICAgc3RhdGljIHZvaWQgdGlsZURpc3BsYXlDYWxs
YmFjayhDQUNGTGF5ZXJSZWYsIENHQ29udGV4dFJlZik7CisKKyAgICB2b2lkIGRyYXdUaWxlKENB
Q0ZMYXllclJlZiwgQ0dDb250ZXh0UmVmKTsKKyAgICBDR1NpemUgY29uc3RyYWluZWRTaXplKGNv
bnN0IENHU2l6ZSYpIGNvbnN0OworICAgIHZvaWQgYWRkVGlsZSgpOworICAgIHZvaWQgcmVtb3Zl
VGlsZSgpOworICAgIENBQ0ZMYXllclJlZiB0aWxlQXRJbmRleChpbnQpOworICAgIGludCB0aWxl
Q291bnQoKSBjb25zdDsKKyAgICB2b2lkIHVwZGF0ZVRpbGVzKCk7CisKKyAgICBQbGF0Zm9ybUNB
TGF5ZXIqIG1fb3duZXI7CisKKyAgICBDR1NpemUgbV90aWxlU2l6ZTsKKyAgICBDR1NpemUgbV9j
b25zdHJhaW5lZFNpemU7CisgICAgUmV0YWluUHRyPENBQ0ZMYXllclJlZj4gbV90aWxlUGFyZW50
OworfTsKKworfQorCisjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorCisj
ZW5kaWYgLy8gUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWxfaApJbmRleDogV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0Q0dXaW4uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENHV2luLmNwcAko
cmV2aXNpb24gNzUyMTMpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGlj
c0NvbnRleHRDR1dpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDEwIEBAIHN0YXRp
YyBDR0NvbnRleHRSZWYgQ0dDb250ZXh0V2l0aEhEQyhIREMKICAgICBCSVRNQVAgaW5mbzsKIAog
ICAgIEdldE9iamVjdChiaXRtYXAsIHNpemVvZihpbmZvKSwgJmluZm8pOworCisgICAgaWYgKGlu
Zm8uYm1CaXRzUGl4ZWwgIT0gMzIpCisgICAgICAgIHJldHVybiAwOworCiAgICAgQVNTRVJUKGlu
Zm8uYm1CaXRzUGl4ZWwgPT0gMzIpOwogCiAgICAgQ0dCaXRtYXBJbmZvIGJpdG1hcEluZm8gPSBr
Q0dCaXRtYXBCeXRlT3JkZXIzMkxpdHRsZSB8IChoYXNBbHBoYSA/IGtDR0ltYWdlQWxwaGFQcmVt
dWx0aXBsaWVkRmlyc3QgOiBrQ0dJbWFnZUFscGhhTm9uZVNraXBGaXJzdCk7CkluZGV4OiBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2lu
ZG93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRp
YVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93LmNwcAkocmV2aXNpb24gNzUyMTMpCisrKyBX
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVu
V2luZG93LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTAsNyArOTAsNyBAQCB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3c6CiB9CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09N
UE9TSVRJTkcpCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3c6OnNldFJv
b3RDaGlsZExheWVyKFBhc3NSZWZQdHI8V0tDQUNGTGF5ZXI+IHJvb3RDaGlsZCkKK3ZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdzo6c2V0Um9vdENoaWxkTGF5ZXIoUGFzc1Jl
ZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IHJvb3RDaGlsZCkKIHsKICAgICBpZiAobV9yb290Q2hpbGQg
PT0gcm9vdENoaWxkKQogICAgICAgICByZXR1cm47CkBAIC0xMDQsNyArMTA0LDcgQEAgdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93OgogICAgICAgICByZXR1cm47CiAKICAg
ICBtX2xheWVyUmVuZGVyZXItPnNldFJvb3RDaGlsZExheWVyKG1fcm9vdENoaWxkLmdldCgpKTsK
LSAgICBXS0NBQ0ZMYXllciogcm9vdExheWVyID0gbV9yb290Q2hpbGQtPnJvb3RMYXllcigpOwor
ICAgIFBsYXRmb3JtQ0FMYXllciogcm9vdExheWVyID0gbV9yb290Q2hpbGQtPnJvb3RMYXllcigp
OwogICAgIENHUmVjdCByb290Qm91bmRzID0gbV9yb290Q2hpbGQtPnJvb3RMYXllcigpLT5ib3Vu
ZHMoKTsKICAgICBtX3Jvb3RDaGlsZC0+c2V0RnJhbWUocm9vdEJvdW5kcyk7CiAgICAgbV9yb290
Q2hpbGQtPnNldEJhY2tncm91bmRDb2xvcihDR0NvbG9yR2V0Q29uc3RhbnRDb2xvcihrQ0dDb2xv
ckJsYWNrKSk7CkBAIC0xNjAsNyArMTYwLDcgQEAgTFJFU1VMVCBNZWRpYVBsYXllclByaXZhdGVG
dWxsc2NyZWVuV2luZAogICAgICAgICAgICAgICAgIGJyZWFrOwogI2lmIFVTRShBQ0NFTEVSQVRF
RF9DT01QT1NJVElORykKICAgICAgICAgICAgIG1fbGF5ZXJSZW5kZXJlci0+cmVzaXplKCk7Ci0g
ICAgICAgICAgICBXS0NBQ0ZMYXllciogcm9vdExheWVyID0gbV9yb290Q2hpbGQtPnJvb3RMYXll
cigpOworICAgICAgICAgICAgUGxhdGZvcm1DQUxheWVyKiByb290TGF5ZXIgPSBtX3Jvb3RDaGls
ZC0+cm9vdExheWVyKCk7CiAgICAgICAgICAgICBDR1JlY3Qgcm9vdEJvdW5kcyA9IG1fcm9vdENo
aWxkLT5yb290TGF5ZXIoKS0+Ym91bmRzKCk7CiAgICAgICAgICAgICBtX3Jvb3RDaGlsZC0+c2V0
RnJhbWUocm9vdEJvdW5kcyk7CiAgICAgICAgICAgICBtX3Jvb3RDaGlsZC0+c2V0TmVlZHNMYXlv
dXQoKTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJp
dmF0ZUZ1bGxzY3JlZW5XaW5kb3cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93LmgJKHJldmlzaW9u
IDc1MjEzKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2
YXRlRnVsbHNjcmVlbldpbmRvdy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBACiAj
ZGVmaW5lIE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3dfaAogCiAjaWYgVVNFKEFD
Q0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotI2luY2x1ZGUgIldLQ0FDRkxheWVyLmgiCisjaW5jbHVk
ZSAiUGxhdGZvcm1DQUxheWVyLmgiCiAjaW5jbHVkZSAiV0tDQUNGTGF5ZXJSZW5kZXJlci5oIgog
I2VuZGlmCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgpAQCAtNjEsOCArNjEsOCBAQCBwdWJsaWM6
CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIFdLQ0FDRkxheWVyUmVuZGVy
ZXIqIGxheWVyUmVuZGVyZXIoKSBjb25zdCB7IHJldHVybiBtX2xheWVyUmVuZGVyZXIuZ2V0KCk7
IH0KIAotICAgIFdLQ0FDRkxheWVyKiByb290Q2hpbGRMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1f
cm9vdENoaWxkLmdldCgpOyB9Ci0gICAgdm9pZCBzZXRSb290Q2hpbGRMYXllcihQYXNzUmVmUHRy
PFdLQ0FDRkxheWVyPik7CisgICAgUGxhdGZvcm1DQUxheWVyKiByb290Q2hpbGRMYXllcigpIGNv
bnN0IHsgcmV0dXJuIG1fcm9vdENoaWxkLmdldCgpOyB9CisgICAgdm9pZCBzZXRSb290Q2hpbGRM
YXllcihQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4pOwogI2VuZGlmCiAKIHByaXZhdGU6CkBA
IC03Miw3ICs3Miw3IEBAIHByaXZhdGU6CiAgICAgTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVl
bkNsaWVudCogbV9jbGllbnQ7CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAg
IE93blB0cjxXS0NBQ0ZMYXllclJlbmRlcmVyPiBtX2xheWVyUmVuZGVyZXI7Ci0gICAgUmVmUHRy
PFdLQ0FDRkxheWVyPiBtX3Jvb3RDaGlsZDsKKyAgICBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBt
X3Jvb3RDaGlsZDsKICNlbmRpZgogICAgIEhXTkQgbV9od25kOwogfTsKSW5kZXg6IFdlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENv
bnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01l
ZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvbnRleHQuY3BwCShyZXZpc2lvbiA3NTIx
MykKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZVF1
aWNrVGltZVZpc3VhbENvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw4ICs1Nyw3IEBA
CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiAjaWYgVVNFKEFDQ0VMRVJBVEVE
X0NPTVBPU0lUSU5HKQotI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDQUNGLmgiCi0jaW5jbHVkZSAi
V0tDQUNGTGF5ZXIuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUNBTGF5ZXIuaCIKICNpbmNsdWRlICJX
S0NBSW1hZ2VRdWV1ZS5oIgogI2VuZGlmCiAKQEAgLTg1LDQ4ICs4NCw0OSBAQCBwcml2YXRlOgog
fTsKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLS8vIEludGVyZmFjZSBkZWNs
YXJhdGlvbiBmb3IgTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dCdzIEdy
YXBoaWNzTGF5ZXJDbGllbnQgYWdncmVnYXRlCi1jbGFzcyBNZWRpYVBsYXllclByaXZhdGVRdWlj
a1RpbWVWaXN1YWxDb250ZXh0OjpMYXllckNsaWVudCA6IHB1YmxpYyBHcmFwaGljc0xheWVyQ2xp
ZW50IHsKK2NsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvbnRleHQ6Okxh
eWVyQ2xpZW50IDogcHVibGljIFBsYXRmb3JtQ0FMYXllckNsaWVudCB7CiBwdWJsaWM6CiAgICAg
TGF5ZXJDbGllbnQoTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dCogcGFy
ZW50KSA6IG1fcGFyZW50KHBhcmVudCkge30KICAgICB2aXJ0dWFsIH5MYXllckNsaWVudCgpIHsg
bV9wYXJlbnQgPSAwOyB9Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoY29uc3QgR3Jh
cGhpY3NMYXllciosIEdyYXBoaWNzQ29udGV4dCYsIEdyYXBoaWNzTGF5ZXJQYWludGluZ1BoYXNl
LCBjb25zdCBJbnRSZWN0JiBpbkNsaXApOwotICAgIHZpcnR1YWwgdm9pZCBub3RpZnlBbmltYXRp
b25TdGFydGVkKGNvbnN0IEdyYXBoaWNzTGF5ZXIqLCBkb3VibGUgdGltZSkgeyB9Ci0gICAgdmly
dHVhbCB2b2lkIG5vdGlmeVN5bmNSZXF1aXJlZChjb25zdCBHcmFwaGljc0xheWVyKikgeyB9Ci0g
ICAgdmlydHVhbCBib29sIHNob3dEZWJ1Z0JvcmRlcnMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQotICAgIHZpcnR1YWwgYm9vbCBzaG93UmVwYWludENvdW50ZXIoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQotcHJpdmF0ZToKLSAgICBNZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxD
b250ZXh0KiBtX3BhcmVudDsKLX07CiAKLWNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGlt
ZVZpc3VhbENvbnRleHQ6OkxheW91dENsaWVudCA6IHB1YmxpYyBXS0NBQ0ZMYXllckxheW91dENs
aWVudCB7Ci1wdWJsaWM6Ci0gICAgTGF5b3V0Q2xpZW50KE1lZGlhUGxheWVyUHJpdmF0ZVF1aWNr
VGltZVZpc3VhbENvbnRleHQqIHBhcmVudCkgOiBtX3BhcmVudChwYXJlbnQpIHt9Ci0gICAgdmly
dHVhbCB2b2lkIGxheW91dFN1YmxheWVyc09mTGF5ZXIoV0tDQUNGTGF5ZXIqKTsKKyAgICB2aXJ0
dWFsIHZvaWQgcGxhdGZvcm1DQUxheWVyTGF5b3V0U3VibGF5ZXJzT2ZMYXllcihQbGF0Zm9ybUNB
TGF5ZXIqKTsKKyAgICB2aXJ0dWFsIGJvb2wgcGxhdGZvcm1DQUxheWVyUmVzcG9uZHNUb0xheW91
dENoYW5nZXMoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgcGxh
dGZvcm1DQUxheWVyQW5pbWF0aW9uU3RhcnRlZChDRlRpbWVJbnRlcnZhbCBiZWdpblRpbWUpIHsg
fQorICAgIHZpcnR1YWwgR3JhcGhpY3NMYXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVu
dGF0aW9uIHBsYXRmb3JtQ0FMYXllckNvbnRlbnRzT3JpZW50YXRpb24oKSBjb25zdCB7IHJldHVy
biBHcmFwaGljc0xheWVyOjpDb21wb3NpdGluZ0Nvb3JkaW5hdGVzQm90dG9tVXA7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgcGxhdGZvcm1DQUxheWVyUGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBJbnRSZWN0JiBpbkNsaXApIHsgfQorICAgIHZpcnR1YWwgYm9vbCBwbGF0Zm9ybUNB
TGF5ZXJTaG93RGVidWdCb3JkZXJzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0
dWFsIGJvb2wgcGxhdGZvcm1DQUxheWVyU2hvd1JlcGFpbnRDb3VudGVyKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGludCBwbGF0Zm9ybUNBTGF5ZXJJbmNyZW1lbnRSZXBh
aW50Q291bnQoKSB7IHJldHVybiAwOyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgcGxhdGZvcm1DQUxh
eWVyQ29udGVudHNPcGFxdWUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwg
Ym9vbCBwbGF0Zm9ybUNBTGF5ZXJEcmF3c0NvbnRlbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQorICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNBTGF5ZXJMYXllckRpZERpc3BsYXkoUGxhdGZv
cm1MYXllciopIHsgfQorCiBwcml2YXRlOgogICAgIE1lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGlt
ZVZpc3VhbENvbnRleHQqIG1fcGFyZW50OwogfTsKIAotdm9pZCBNZWRpYVBsYXllclByaXZhdGVR
dWlja1RpbWVWaXN1YWxDb250ZXh0OjpMYXlvdXRDbGllbnQ6OmxheW91dFN1YmxheWVyc09mTGF5
ZXIoV0tDQUNGTGF5ZXIqIGxheWVyKQordm9pZCBNZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVW
aXN1YWxDb250ZXh0OjpMYXllckNsaWVudDo6cGxhdGZvcm1DQUxheWVyTGF5b3V0U3VibGF5ZXJz
T2ZMYXllcihQbGF0Zm9ybUNBTGF5ZXIqIGxheWVyKQogewogICAgIEFTU0VSVChtX3BhcmVudCk7
Ci0gICAgQVNTRVJUKG1fcGFyZW50LT5tX3RyYW5zZm9ybUxheWVyLT5wbGF0Zm9ybUxheWVyKCkg
PT0gbGF5ZXIpOworICAgIEFTU0VSVChtX3BhcmVudC0+bV90cmFuc2Zvcm1MYXllciA9PSBsYXll
cik7CiAKLSAgICBDR1NpemUgcGFyZW50U2l6ZSA9IGxheWVyLT5ib3VuZHMoKS5zaXplOwotICAg
IENHU2l6ZSBuYXR1cmFsU2l6ZSA9IG1fcGFyZW50LT5uYXR1cmFsU2l6ZSgpOworICAgIEZsb2F0
U2l6ZSBwYXJlbnRTaXplID0gbGF5ZXItPmJvdW5kcygpLnNpemUoKTsKKyAgICBGbG9hdFNpemUg
bmF0dXJhbFNpemUgPSBtX3BhcmVudC0+bmF0dXJhbFNpemUoKTsKIAogICAgIC8vIENhbGN1bGF0
ZSB0aGUgcmF0aW8gb2YgdGhlc2UgdHdvIHNpemVzIGFuZCB1c2UgdGhhdCByYXRpbyB0byBzY2Fs
ZSB0aGUgcXRWaWRlb0xheWVyOgotICAgIENHU2l6ZSByYXRpbyA9IENHU2l6ZU1ha2UocGFyZW50
U2l6ZS53aWR0aCAvIG5hdHVyYWxTaXplLndpZHRoLCBwYXJlbnRTaXplLmhlaWdodCAvIG5hdHVy
YWxTaXplLmhlaWdodCk7CisgICAgRmxvYXRTaXplIHJhdGlvKHBhcmVudFNpemUud2lkdGgoKSAv
IG5hdHVyYWxTaXplLndpZHRoKCksIHBhcmVudFNpemUuaGVpZ2h0KCkgLyBuYXR1cmFsU2l6ZS5o
ZWlnaHQoKSk7CiAKICAgICBpbnQgdmlkZW9XaWR0aCA9IDA7CiAgICAgaW50IHZpZGVvSGVpZ2h0
ID0gMDsKICAgICBtX3BhcmVudC0+bV9tb3ZpZS0+Z2V0TmF0dXJhbFNpemUodmlkZW9XaWR0aCwg
dmlkZW9IZWlnaHQpOwotICAgIENHUmVjdCB2aWRlb0JvdW5kcyA9IENHUmVjdE1ha2UoMCwgMCwg
dmlkZW9XaWR0aCAqIHJhdGlvLndpZHRoLCB2aWRlb0hlaWdodCAqIHJhdGlvLmhlaWdodCk7Ci0g
ICAgQ0dQb2ludCB2aWRlb0FuY2hvciA9IG1fcGFyZW50LT5tX3F0VmlkZW9MYXllci0+YW5jaG9y
UG9pbnQoKTsKKyAgICBGbG9hdFJlY3QgdmlkZW9Cb3VuZHMoMCwgMCwgdmlkZW9XaWR0aCAqIHJh
dGlvLndpZHRoKCksIHZpZGVvSGVpZ2h0ICogcmF0aW8uaGVpZ2h0KCkpOworICAgIEZsb2F0UG9p
bnQzRCB2aWRlb0FuY2hvciA9IG1fcGFyZW50LT5tX3F0VmlkZW9MYXllci0+YW5jaG9yUG9pbnQo
KTsKIAogICAgIC8vIENhbGN1bGF0ZSB0aGUgbmV3IHBvc2l0aW9uIGJhc2VkIG9uIHRoZSBwYXJl
bnQncyBzaXplOgotICAgIENHUG9pbnQgcG9zaXRpb24gPSBDR1BvaW50TWFrZShwYXJlbnRTaXpl
LndpZHRoICogMC41IC0gdmlkZW9Cb3VuZHMuc2l6ZS53aWR0aCAqICgwLjUgLSB2aWRlb0FuY2hv
ci54KSwKLSAgICAgICAgcGFyZW50U2l6ZS5oZWlnaHQgKiAwLjUgLSB2aWRlb0JvdW5kcy5zaXpl
LmhlaWdodCAqICgwLjUgLSB2aWRlb0FuY2hvci55KSk7IAorICAgIEZsb2F0UG9pbnQgcG9zaXRp
b24ocGFyZW50U2l6ZS53aWR0aCgpICogMC41IC0gdmlkZW9Cb3VuZHMud2lkdGgoKSAqICgwLjUg
LSB2aWRlb0FuY2hvci54KCkpLAorICAgICAgICBwYXJlbnRTaXplLmhlaWdodCgpICogMC41IC0g
dmlkZW9Cb3VuZHMuaGVpZ2h0KCkgKiAoMC41IC0gdmlkZW9BbmNob3IueSgpKSk7IAogCiAgICAg
bV9wYXJlbnQtPm1fcXRWaWRlb0xheWVyLT5zZXRCb3VuZHModmlkZW9Cb3VuZHMpOwogICAgIG1f
cGFyZW50LT5tX3F0VmlkZW9MYXllci0+c2V0UG9zaXRpb24ocG9zaXRpb24pOwpAQCAtMTcxLDcg
KzE3MSw2IEBAIE1lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvbnRleHQKICAgICAs
IG1fbW92aWVDbGllbnQobmV3IE1lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvbnRl
eHQ6Ok1vdmllQ2xpZW50KHRoaXMpKQogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykK
ICAgICAsIG1fbGF5ZXJDbGllbnQobmV3IE1lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3Vh
bENvbnRleHQ6OkxheWVyQ2xpZW50KHRoaXMpKQotICAgICwgbV9sYXlvdXRDbGllbnQobmV3IE1l
ZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvbnRleHQ6OkxheW91dENsaWVudCh0aGlz
KSkKICAgICAsIG1fbW92aWVUcmFuc2Zvcm0oQ0dBZmZpbmVUcmFuc2Zvcm1JZGVudGl0eSkKICNl
bmRpZgogICAgICwgbV92aXN1YWxDb250ZXh0Q2xpZW50KG5ldyBNZWRpYVBsYXllclByaXZhdGVR
dWlja1RpbWVWaXN1YWxDb250ZXh0OjpWaXN1YWxDb250ZXh0Q2xpZW50KHRoaXMpKQpAQCAtMjAz
LDggKzIwMiw4IEBAIFBsYXRmb3JtTWVkaWEgTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW0KICAg
ICBwLm1lZGlhLnF0TW92aWVWaXN1YWxDb250ZXh0ID0gbV92aXN1YWxDb250ZXh0LmdldCgpOwog
ICAgIHJldHVybiBwOwogfQotCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorCiBQ
bGF0Zm9ybUxheWVyKiBNZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0Ojpw
bGF0Zm9ybUxheWVyKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV90cmFuc2Zvcm1MYXllciA/IG1f
dHJhbnNmb3JtTGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSA6IDA7CkBAIC04NjYsNyArODY1LDcgQEAg
dm9pZCBNZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDbwogICAgICAgICBpZiAoIWJ1
ZmZlci5waXhlbEJ1ZmZlclJlZigpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIFdL
Q0FDRkxheWVyKiBsYXllciA9IG1fcXRWaWRlb0xheWVyLmdldCgpOworICAgICAgICBQbGF0Zm9y
bUNBTGF5ZXIqIGxheWVyID0gbV9xdFZpZGVvTGF5ZXIuZ2V0KCk7CiAKICAgICAgICAgaWYgKCFi
dWZmZXIubG9ja0Jhc2VBZGRyZXNzKCkpIHsKICAgICAgICAgICAgIGlmIChyZXF1aXJlZERsbHNB
dmFpbGFibGUoKSkgewpAQCAtOTAwLDcgKzg5OSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
UXVpY2tUaW1lVmlzdWFsQ28KICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgYnVmZmVyLnVu
bG9ja0Jhc2VBZGRyZXNzKCk7Ci0gICAgICAgICAgICBsYXllci0+cm9vdExheWVyKCktPnNldE5l
ZWRzUmVuZGVyKCk7CisgICAgICAgICAgICBsYXllci0+c2V0TmVlZHNDb21taXQoKTsKICAgICAg
ICAgfQogICAgIH0gZWxzZQogI2VuZGlmCkBAIC0xMTc5LDIwICsxMTc4LDE2IEBAIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ28KICAgICBpZiAoIW1fbW92aWUgfHwgbV9x
dFZpZGVvTGF5ZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIC8vIENyZWF0ZSBhIEdyYXBoaWNz
TGF5ZXIgdGhhdCB3b24ndCBiZSBpbnNlcnRlZCBkaXJlY3RseSBpbnRvIHRoZSByZW5kZXIgdHJl
ZSwgYnV0IHdpbGwgdXNlZCAKLSAgICAvLyBhcyBhIHdyYXBwZXIgZm9yIGEgV0tDQUNGTGF5ZXIg
d2hpY2ggZ2V0cyBpbnNlcnRlZCBhcyB0aGUgY29udGVudCBsYXllciBvZiB0aGUgdmlkZW8gCi0g
ICAgLy8gcmVuZGVyZXIncyBHcmFwaGljc0xheWVyLgotICAgIG1fdHJhbnNmb3JtTGF5ZXIuc2V0
KG5ldyBHcmFwaGljc0xheWVyQ0FDRihtX2xheWVyQ2xpZW50LmdldCgpKSk7CisgICAgLy8gQ3Jl
YXRlIGEgUGxhdGZvcm1DQUxheWVyIHdoaWNoIHdpbGwgdHJhbnNmb3JtIHRoZSBjb250ZW50cyBv
ZiB0aGUgdmlkZW8gbGF5ZXIKKyAgICAvLyB3aGljaCBpcyBpbiBtX3F0VmlkZW9MYXllci4KKyAg
ICBtX3RyYW5zZm9ybUxheWVyID0gUGxhdGZvcm1DQUxheWVyOjpjcmVhdGUoUGxhdGZvcm1DQUxh
eWVyOjpMYXllclR5cGVMYXllciwgbV9sYXllckNsaWVudC5nZXQoKSk7CiAgICAgaWYgKCFtX3Ry
YW5zZm9ybUxheWVyKQogICAgICAgICByZXR1cm47CiAKLSAgICAvLyBNYXJrIHRoZSBsYXllciBh
cyBkcmF3aW5nIGl0c2VsZiwgYW5jaG9yZWQgaW4gdGhlIHRvcCBsZWZ0LCBhbmQgYm90dG9tLXVw
LgotICAgIG1fdHJhbnNmb3JtTGF5ZXItPnNldERyYXdzQ29udGVudChmYWxzZSk7CisgICAgLy8g
TWFyayB0aGUgbGF5ZXIgYXMgYW5jaG9yZWQgaW4gdGhlIHRvcCBsZWZ0LgogICAgIG1fdHJhbnNm
b3JtTGF5ZXItPnNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQzRCgpKTsKLSAgICBtX3RyYW5zZm9y
bUxheWVyLT5zZXRDb250ZW50c09yaWVudGF0aW9uKEdyYXBoaWNzTGF5ZXI6OkNvbXBvc2l0aW5n
Q29vcmRpbmF0ZXNCb3R0b21VcCk7Ci0gICAgbV90cmFuc2Zvcm1MYXllci0+cGxhdGZvcm1MYXll
cigpLT5zZXRMYXlvdXRDbGllbnQobV9sYXlvdXRDbGllbnQuZ2V0KCkpOwogCi0gICAgbV9xdFZp
ZGVvTGF5ZXIgPSBXS0NBQ0ZMYXllcjo6Y3JlYXRlKFdLQ0FDRkxheWVyOjpMYXllcik7CisgICAg
bV9xdFZpZGVvTGF5ZXIgPSBQbGF0Zm9ybUNBTGF5ZXI6OmNyZWF0ZShQbGF0Zm9ybUNBTGF5ZXI6
OkxheWVyVHlwZUxheWVyLCAwKTsKICAgICBpZiAoIW1fcXRWaWRlb0xheWVyKQogICAgICAgICBy
ZXR1cm47CiAKQEAgLTEyMDksOCArMTIwNCw4IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUXVp
Y2tUaW1lVmlzdWFsQ28KICNpZm5kZWYgTkRFQlVHCiAgICAgbV9xdFZpZGVvTGF5ZXItPnNldE5h
bWUoIlZpZGVvIGxheWVyIik7CiAjZW5kaWYKLSAgICBtX3RyYW5zZm9ybUxheWVyLT5wbGF0Zm9y
bUxheWVyKCktPmFkZFN1YmxheWVyKG1fcXRWaWRlb0xheWVyLmdldCgpKTsKLSAgICBtX3RyYW5z
Zm9ybUxheWVyLT5wbGF0Zm9ybUxheWVyKCktPnNldE5lZWRzTGF5b3V0KCk7CisgICAgbV90cmFu
c2Zvcm1MYXllci0+YXBwZW5kU3VibGF5ZXIobV9xdFZpZGVvTGF5ZXIuZ2V0KCkpOworICAgIG1f
dHJhbnNmb3JtTGF5ZXItPnNldE5lZWRzTGF5b3V0KCk7CiAgICAgLy8gVGhlIGxheWVyIHdpbGwg
Z2V0IGhvb2tlZCB1cCB2aWEgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVHcmFwaGljc0xheWVy
Q29uZmlndXJhdGlvbigpLgogI2VuZGlmCiAKQEAgLTEyMzgsMTAgKzEyMzMsNiBAQCB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvCiB9CiAKICNpZiBVU0UoQUNDRUxFUkFU
RURfQ09NUE9TSVRJTkcpCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENv
bnRleHQ6OkxheWVyQ2xpZW50OjpwYWludENvbnRlbnRzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqLCBH
cmFwaGljc0NvbnRleHQmLCBHcmFwaGljc0xheWVyUGFpbnRpbmdQaGFzZSwgY29uc3QgSW50UmVj
dCYgaW5DbGlwKQotewotfQotCiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3Vh
bENvbnRleHQ6OnN1cHBvcnRzQWNjZWxlcmF0ZWRSZW5kZXJpbmcoKSBjb25zdAogewogICAgIHJl
dHVybiBpc1JlYWR5Rm9yUmVuZGVyaW5nKCk7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2
YXRlUXVpY2tUaW1lV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVXaW4uY3BwCShyZXZpc2lvbiA3NTIx
MykKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZVF1
aWNrVGltZVdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDcgQEAKIAogI2lmIFVT
RShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICNpbmNsdWRlICJHcmFwaGljc0xheWVyQ0FDRi5o
IgotI2luY2x1ZGUgIldLQ0FDRkxheWVyLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1DQUxheWVyLmgi
CiAjZW5kaWYKIAogI2lmIERSQVdfRlJBTUVfUkFURQpAQCAtNzYwLDcgKzc2MCw3IEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlOjptb3ZpZU5ld0ltYWdlQXYKIAogI2lmIFVTRShBQ0NFTEVSQVRF
RF9DT01QT1NJVElORykKICAgICBpZiAobV9xdFZpZGVvTGF5ZXIpCi0gICAgICAgIG1fcXRWaWRl
b0xheWVyLT5wbGF0Zm9ybUxheWVyKCktPnNldE5lZWRzRGlzcGxheSgpOworICAgICAgICBtX3F0
VmlkZW9MYXllci0+c2V0TmVlZHNEaXNwbGF5KCk7CiAgICAgZWxzZQogI2VuZGlmCiAgICAgICAg
IG1fcGxheWVyLT5yZXBhaW50KCk7CkBAIC04ODcsNyArODg3LDcgQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGU6OmNyZWF0ZUxheWVyRm9yTQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBDcmVh
dGUgYSBHcmFwaGljc0xheWVyIHRoYXQgd29uJ3QgYmUgaW5zZXJ0ZWQgZGlyZWN0bHkgaW50byB0
aGUgcmVuZGVyIHRyZWUsIGJ1dCB3aWxsIHVzZWQgCi0gICAgLy8gYXMgYSB3cmFwcGVyIGZvciBh
IFdLQ0FDRkxheWVyIHdoaWNoIGdldHMgaW5zZXJ0ZWQgYXMgdGhlIGNvbnRlbnQgbGF5ZXIgb2Yg
dGhlIHZpZGVvIAorICAgIC8vIGFzIGEgd3JhcHBlciBmb3IgYSBQbGF0Zm9ybUNBTGF5ZXIgd2hp
Y2ggZ2V0cyBpbnNlcnRlZCBhcyB0aGUgY29udGVudCBsYXllciBvZiB0aGUgdmlkZW8gCiAgICAg
Ly8gcmVuZGVyZXIncyBHcmFwaGljc0xheWVyLgogICAgIG1fcXRWaWRlb0xheWVyLnNldChuZXcg
R3JhcGhpY3NMYXllckNBQ0YodGhpcykpOwogICAgIGlmICghbV9xdFZpZGVvTGF5ZXIpCkluZGV4
OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9XS0NBQ0ZMYXllclJlbmRlcmVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9XS0NBQ0ZMYXllclJl
bmRlcmVyLmNwcAkocmV2aXNpb24gNzUyMTMpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9XS0NBQ0ZMYXllclJlbmRlcmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTAgKzMz
LDEyIEBACiAKICNpbmNsdWRlICJXS0NBQ0ZMYXllclJlbmRlcmVyLmgiCiAKKyNpbmNsdWRlICJQ
bGF0Zm9ybUNBTGF5ZXIuaCIKICNpbmNsdWRlICJXS0NBQ0ZDb250ZXh0Rmx1c2hlci5oIgotI2lu
Y2x1ZGUgIldLQ0FDRkxheWVyLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUluc3RhbmNlSGFuZGxlLmgi
CiAjaW5jbHVkZSA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlL1dlYktpdFN5c3RlbUludGVyZmFjZS5o
PgorI2luY2x1ZGUgPGxpbWl0cy5oPgorI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL093bkFycmF5UHRyLmg+CiAjaW5j
bHVkZSA8d3RmL093blB0ci5oPgpAQCAtNDUsNiArNDcsOCBAQAogI2luY2x1ZGUgPGQzZDkuaD4K
ICNpbmNsdWRlIDxkM2R4OS5oPgogCit1c2luZyBuYW1lc3BhY2Ugc3RkOworCiAjcHJhZ21hIGNv
bW1lbnQobGliLCAiZDNkOSIpCiAjcHJhZ21hIGNvbW1lbnQobGliLCAiZDNkeDkiKQogI2lmZGVm
IERFQlVHX0FMTApAQCAtNzksMzMgKzgzLDYgQEAgaW5saW5lIHN0YXRpYyBDR1JlY3Qgd2luUmVj
dFRvQ0dSZWN0KFJFQwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIFN1YmNsYXNzIG9mIFdL
Q0FDRkxheWVyIHRvIGFsbG93IHRoZSByb290IGxheWVyIHRvIGhhdmUgYSBiYWNrIHBvaW50ZXIg
dG8gdGhlIGxheWVyIHJlbmRlcmVyCi0vLyB0byBmaXJlIG9mZiBhIGRyYXcKLWNsYXNzIFdLQ0FD
RlJvb3RMYXllciA6IHB1YmxpYyBXS0NBQ0ZMYXllciB7Ci1wdWJsaWM6Ci0gICAgV0tDQUNGUm9v
dExheWVyKFdLQ0FDRkxheWVyUmVuZGVyZXIqIHJlbmRlcmVyKQotICAgICAgICA6IFdLQ0FDRkxh
eWVyKFdLQ0FDRkxheWVyOjpMYXllcikKLSAgICB7Ci0gICAgICAgIG1fcmVuZGVyZXIgPSByZW5k
ZXJlcjsKLSAgICB9Ci0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXS0NBQ0ZSb290TGF5ZXI+IGNy
ZWF0ZShXS0NBQ0ZMYXllclJlbmRlcmVyKiByZW5kZXJlcikKLSAgICB7Ci0gICAgICAgIGlmICgh
V0tDQUNGTGF5ZXJSZW5kZXJlcjo6YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0F2YWlsYWJsZSgpKQot
ICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV0tDQUNG
Um9vdExheWVyKHJlbmRlcmVyKSk7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkIHNldE5lZWRz
UmVuZGVyKCkgeyBtX3JlbmRlcmVyLT5sYXllclRyZWVEaWRDaGFuZ2UoKTsgfQotCi0gICAgLy8g
T3ZlcmxvYWQgdGhpcyB0byBhdm9pZCBjYWxsaW5nIHNldE5lZWRzRGlzcGxheSBvbiB0aGUgbGF5
ZXIsIHdoaWNoIHdvdWxkIG92ZXJyaWRlIHRoZSBjb250ZW50cwotICAgIC8vIHdlIGhhdmUgcGxh
Y2VkIG9uIHRoZSByb290IGxheWVyLgotICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0Rpc3BsYXko
Y29uc3QgQ0dSZWN0KiBkaXJ0eVJlY3QpIHsgc2V0TmVlZHNDb21taXQoKTsgfQotCi1wcml2YXRl
OgotICAgIFdLQ0FDRkxheWVyUmVuZGVyZXIqIG1fcmVuZGVyZXI7Ci19OwotCiBzdGF0aWMgRDNE
UFJFU0VOVF9QQVJBTUVURVJTIGluaXRpYWxQcmVzZW50YXRpb25QYXJhbWV0ZXJzKCkKIHsKICAg
ICBEM0RQUkVTRU5UX1BBUkFNRVRFUlMgcGFyYW1ldGVycyA9IHswfTsKQEAgLTIwNiwxMyArMTgz
LDE3IEBAIFBhc3NPd25QdHI8V0tDQUNGTGF5ZXJSZW5kZXJlcj4gV0tDQUNGTGEKIFdLQ0FDRkxh
eWVyUmVuZGVyZXI6OldLQ0FDRkxheWVyUmVuZGVyZXIoV0tDQUNGTGF5ZXJSZW5kZXJlckNsaWVu
dCogY2xpZW50KQogICAgIDogbV9jbGllbnQoY2xpZW50KQogICAgICwgbV9taWdodEJlQWJsZVRv
Q3JlYXRlRGV2aWNlTGF0ZXIodHJ1ZSkKLSAgICAsIG1fcm9vdExheWVyKFdLQ0FDRlJvb3RMYXll
cjo6Y3JlYXRlKHRoaXMpKQorICAgICwgbV9yb290TGF5ZXIoUGxhdGZvcm1DQUxheWVyOjpjcmVh
dGUoUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVSb290TGF5ZXIsIDApKQogICAgICwgbV9jb250
ZXh0KHdrQ0FDRkNvbnRleHRDcmVhdGUoKSkKICAgICAsIG1faG9zdFdpbmRvdygwKQogICAgICwg
bV9yZW5kZXJUaW1lcih0aGlzLCAmV0tDQUNGTGF5ZXJSZW5kZXJlcjo6cmVuZGVyVGltZXJGaXJl
ZCkKICAgICAsIG1fYmFja2luZ1N0b3JlRGlydHkoZmFsc2UpCiAgICAgLCBtX211c3RSZXNldExv
c3REZXZpY2VCZWZvcmVSZW5kZXJpbmcoZmFsc2UpCisgICAgLCBtX3N5bmNMYXllckNoYW5nZXMo
ZmFsc2UpCiB7CisgICAgLy8gUG9pbnQgdGhlIENBQ0ZDb250ZXh0IHRvIHRoaXMKKyAgICB3a0NB
Q0ZDb250ZXh0U2V0VXNlckRhdGEobV9jb250ZXh0LCB0aGlzKTsKKwogICAgIC8vIFVuZGVyIHRo
ZSByb290IGxheWVyLCB3ZSBoYXZlIGEgY2xpcHBpbmcgbGF5ZXIgdG8gY2xpcCB0aGUgY29udGVu
dCwKICAgICAvLyB0aGF0IGNvbnRhaW5zIGEgc2Nyb2xsIGxheWVyIHRoYXQgd2UgdXNlIGZvciBz
Y3JvbGxpbmcgdGhlIGNvbnRlbnQuCiAgICAgLy8gVGhlIHJvb3QgbGF5ZXIgaXMgdGhlIHNpemUg
b2YgdGhlIGNsaWVudCBhcmVhIG9mIHRoZSB3aW5kb3cuCkBAIC0yMjMsNyArMjA0LDcgQEAgV0tD
QUNGTGF5ZXJSZW5kZXJlcjo6V0tDQUNGTGF5ZXJSZW5kZXJlcgogICAgIC8vIFNjcm9sbGluZyB3
aWxsIGFmZmVjdCBvbmx5IHRoZSBwb3NpdGlvbiBvZiB0aGUgc2Nyb2xsIGxheWVyIHdpdGhvdXQg
YWZmZWN0aW5nIHRoZSBib3VuZHMuCiAKICAgICBtX3Jvb3RMYXllci0+c2V0TmFtZSgiV0tDQUNG
TGF5ZXJSZW5kZXJlciByb290TGF5ZXIiKTsKLSAgICBtX3Jvb3RMYXllci0+c2V0QW5jaG9yUG9p
bnQoQ0dQb2ludE1ha2UoMCwgMCkpOworICAgIG1fcm9vdExheWVyLT5zZXRBbmNob3JQb2ludChG
bG9hdFBvaW50M0QoMCwgMCwgMCkpOwogICAgIG1fcm9vdExheWVyLT5zZXRHZW9tZXRyeUZsaXBw
ZWQodHJ1ZSk7CiAKICNpZm5kZWYgTkRFQlVHCkBAIC0yMzMsNyArMjE0LDcgQEAgV0tDQUNGTGF5
ZXJSZW5kZXJlcjo6V0tDQUNGTGF5ZXJSZW5kZXJlcgogI2VuZGlmCiAKICAgICBpZiAobV9jb250
ZXh0KQotICAgICAgICBtX3Jvb3RMYXllci0+YmVjb21lUm9vdExheWVyRm9yQ29udGV4dChtX2Nv
bnRleHQpOworICAgICAgICB3a0NBQ0ZDb250ZXh0U2V0TGF5ZXIobV9jb250ZXh0LCBtX3Jvb3RM
YXllci0+cGxhdGZvcm1MYXllcigpKTsKIAogI2lmbmRlZiBOREVCVUcKICAgICBjaGFyKiBwcmlu
dFRyZWVGbGFnID0gZ2V0ZW52KCJDQV9QUklOVF9UUkVFIik7CkBAIC0yNDcsMTEgKzIyOCwxNiBA
QCBXS0NBQ0ZMYXllclJlbmRlcmVyOjp+V0tDQUNGTGF5ZXJSZW5kZXJlCiAgICAgd2tDQUNGQ29u
dGV4dERlc3Ryb3kobV9jb250ZXh0KTsKIH0KIAotV0tDQUNGTGF5ZXIqIFdLQ0FDRkxheWVyUmVu
ZGVyZXI6OnJvb3RMYXllcigpIGNvbnN0CitQbGF0Zm9ybUNBTGF5ZXIqIFdLQ0FDRkxheWVyUmVu
ZGVyZXI6OnJvb3RMYXllcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcm9vdExheWVyLmdldCgp
OwogfQogCit2b2lkIFdLQ0FDRkxheWVyUmVuZGVyZXI6OmFkZFBlbmRpbmdBbmltYXRlZExheWVy
KFBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBsYXllcikKK3sKKyAgICBtX3BlbmRpbmdBbmlt
YXRlZExheWVycy5hZGQobGF5ZXIpOworfQorCiB2b2lkIFdLQ0FDRkxheWVyUmVuZGVyZXI6OnNl
dFJvb3RDb250ZW50cyhDR0ltYWdlUmVmIGltYWdlKQogewogICAgIEFTU0VSVChtX3Jvb3RMYXll
cik7CkBAIC0yNjYsMTIgKzI1MiwxMiBAQCB2b2lkIFdLQ0FDRkxheWVyUmVuZGVyZXI6OnNldFJv
b3RDb250ZW50CiAgICAgcGFpbnQoKTsKIH0KIAotdm9pZCBXS0NBQ0ZMYXllclJlbmRlcmVyOjpz
ZXRSb290Q2hpbGRMYXllcihXS0NBQ0ZMYXllciogbGF5ZXIpCit2b2lkIFdLQ0FDRkxheWVyUmVu
ZGVyZXI6OnNldFJvb3RDaGlsZExheWVyKFBsYXRmb3JtQ0FMYXllciogbGF5ZXIpCiB7CiAgICAg
bV9yb290TGF5ZXItPnJlbW92ZUFsbFN1YmxheWVycygpOwogICAgIG1fcm9vdENoaWxkTGF5ZXIg
PSBsYXllcjsKICAgICBpZiAobV9yb290Q2hpbGRMYXllcikKLSAgICAgICAgbV9yb290TGF5ZXIt
PmFkZFN1YmxheWVyKG1fcm9vdENoaWxkTGF5ZXIpOworICAgICAgICBtX3Jvb3RMYXllci0+YXBw
ZW5kU3VibGF5ZXIobV9yb290Q2hpbGRMYXllci5nZXQoKSk7CiB9CiAgICAKIHZvaWQgV0tDQUNG
TGF5ZXJSZW5kZXJlcjo6bGF5ZXJUcmVlRGlkQ2hhbmdlKCkKQEAgLTI4MCw4ICsyNjYsMTEgQEAg
dm9pZCBXS0NBQ0ZMYXllclJlbmRlcmVyOjpsYXllclRyZWVEaWRDaAogICAgIHJlbmRlclNvb24o
KTsKIH0KIAotdm9pZCBXS0NBQ0ZMYXllclJlbmRlcmVyOjpzZXROZWVkc0Rpc3BsYXkoKQordm9p
ZCBXS0NBQ0ZMYXllclJlbmRlcmVyOjpzZXROZWVkc0Rpc3BsYXkoYm9vbCBzeW5jKQogeworICAg
IGlmICghbV9zeW5jTGF5ZXJDaGFuZ2VzICYmIHN5bmMpCisgICAgICAgIG1fc3luY0xheWVyQ2hh
bmdlcyA9IHRydWU7CisKICAgICBBU1NFUlQobV9yb290TGF5ZXIpOwogICAgIG1fcm9vdExheWVy
LT5zZXROZWVkc0Rpc3BsYXkoMCk7CiAgICAgcmVuZGVyU29vbigpOwpAQCAtMzYxLDggKzM1MCw3
IEBAIGJvb2wgV0tDQUNGTGF5ZXJSZW5kZXJlcjo6Y3JlYXRlUmVuZGVyZXIKIAogdm9pZCBXS0NB
Q0ZMYXllclJlbmRlcmVyOjpkZXN0cm95UmVuZGVyZXIoKQogewotICAgIGlmIChtX2NvbnRleHQp
Ci0gICAgICAgIFdLQ0FDRkNvbnRleHRGbHVzaGVyOjpzaGFyZWQoKS5yZW1vdmVDb250ZXh0KG1f
Y29udGV4dCk7CisgICAgd2tDQUNGQ29udGV4dFNldExheWVyKG1fY29udGV4dCwgbV9yb290TGF5
ZXItPnBsYXRmb3JtTGF5ZXIoKSk7CiAKICAgICBtX2QzZERldmljZSA9IDA7CiAgICAgaWYgKHNf
ZDNkKQpAQCAtNDYzLDIwICs0NTEsMzkgQEAgdm9pZCBXS0NBQ0ZMYXllclJlbmRlcmVyOjpyZW5k
ZXIoY29uc3QgVgogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgLy8gU3luYyB0aGUgbGF5
ZXIgaWYgbmVlZGVkCisgICAgaWYgKG1fc3luY0xheWVyQ2hhbmdlcykgeworICAgICAgICBtX2Ns
aWVudC0+c3luY0NvbXBvc2l0aW5nU3RhdGUoKTsKKyAgICAgICAgbV9zeW5jTGF5ZXJDaGFuZ2Vz
ID0gZmFsc2U7CisgICAgfQorCiAgICAgLy8gRmx1c2ggdGhlIHJvb3QgbGF5ZXIgdG8gdGhlIHJl
bmRlciB0cmVlLgotICAgIFdLQ0FDRkNvbnRleHRGbHVzaGVyOjpzaGFyZWQoKS5mbHVzaEFsbENv
bnRleHRzKCk7CisgICAgd2tDQUNGQ29udGV4dEZsdXNoKG1fY29udGV4dCk7CiAKLSAgICBDR1Jl
Y3QgYm91bmRzID0gdGhpcy0+Ym91bmRzKCk7CisgICAgLy8gQWxsIHBlbmRpbmcgYW5pbWF0aW9u
cyB3aWxsIGhhdmUgYmVlbiBzdGFydGVkIHdpdGggdGhlIGZsdXNoLiBGaXJlIHRoZSBhbmltYXRp
b25TdGFydGVkIGNhbGxzCisgICAgZG91YmxlIGN1cnJlbnRUaW1lID0gV1RGOjpjdXJyZW50VGlt
ZSgpOworICAgIENGVGltZUludGVydmFsIHQgPSBjdXJyZW50VGltZSArIHdrQ0FDRkNvbnRleHRH
ZXRMYXN0Q29tbWl0VGltZShtX2NvbnRleHQpIC0gQ0FDdXJyZW50TWVkaWFUaW1lKCk7CisgICAg
QVNTRVJUKHQgPD0gY3VycmVudFRpbWUpOworCisgICAgSGFzaFNldDxSZWZQdHI8UGxhdGZvcm1D
QUxheWVyPiA+OjppdGVyYXRvciBlbmQgPSBtX3BlbmRpbmdBbmltYXRlZExheWVycy5lbmQoKTsK
KyAgICBmb3IgKEhhc2hTZXQ8UmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gPjo6aXRlcmF0b3IgaXQg
PSBtX3BlbmRpbmdBbmltYXRlZExheWVycy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAg
ICAgICAgUGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd25lciA9ICgqaXQpLT5vd25lcigpOworICAg
ICAgICBvd25lci0+cGxhdGZvcm1DQUxheWVyQW5pbWF0aW9uU3RhcnRlZCh0KTsKKyAgICB9CiAK
LSAgICBDRlRpbWVJbnRlcnZhbCB0ID0gQ0FDdXJyZW50TWVkaWFUaW1lKCk7CisgICAgbV9wZW5k
aW5nQW5pbWF0ZWRMYXllcnMuY2xlYXIoKTsKKworICAgIENHUmVjdCBib3VuZHMgPSB0aGlzLT5i
b3VuZHMoKTsKIAogICAgIC8vIEdpdmUgdGhlIHJlbmRlcmVyIHNvbWUgc3BhY2UgdG8gdXNlLiBU
aGlzIG5lZWRzIHRvIGJlIHZhbGlkIHVudGlsIHRoZQogICAgIC8vIHdrQ0FDRkNvbnRleHRGaW5p
c2hVcGRhdGUoKSBjYWxsIGJlbG93LgogICAgIGNoYXIgc3BhY2VbNDA5Nl07Ci0gICAgaWYgKCF3
a0NBQ0ZDb250ZXh0QmVnaW5VcGRhdGUobV9jb250ZXh0LCBzcGFjZSwgc2l6ZW9mKHNwYWNlKSwg
dCwgYm91bmRzLCB3aW5kb3dEaXJ0eVJlY3RzLmRhdGEoKSwgd2luZG93RGlydHlSZWN0cy5zaXpl
KCkpKQorICAgIGlmICghd2tDQUNGQ29udGV4dEJlZ2luVXBkYXRlKG1fY29udGV4dCwgc3BhY2Us
IHNpemVvZihzcGFjZSksIENBQ3VycmVudE1lZGlhVGltZSgpLCBib3VuZHMsIHdpbmRvd0RpcnR5
UmVjdHMuZGF0YSgpLCB3aW5kb3dEaXJ0eVJlY3RzLnNpemUoKSkpCiAgICAgICAgIHJldHVybjsK
IAogICAgIEhSRVNVTFQgZXJyID0gU19PSzsKKyAgICBDRlRpbWVJbnRlcnZhbCB0aW1lVG9OZXh0
UmVuZGVyID0gbnVtZXJpY19saW1pdHM8Q0ZUaW1lSW50ZXJ2YWw+OjppbmZpbml0eSgpOworCiAg
ICAgZG8gewogICAgICAgICAvLyBGSVhNRTogZG9uJ3QgbmVlZCB0byBjbGVhciBkaXJ0eSByZWdp
b24gaWYgbGF5ZXIgdHJlZSBpcyBvcGFxdWUuCiAKQEAgLTQ5Niw2ICs1MDMsOCBAQCB2b2lkIFdL
Q0FDRkxheWVyUmVuZGVyZXI6OnJlbmRlcihjb25zdCBWCiAgICAgICAgIH0KICAgICAgICAgd2tD
QUNGVXBkYXRlUmVjdEVudW1lcmF0b3JSZWxlYXNlKGUpOwogCisgICAgICAgIHRpbWVUb05leHRS
ZW5kZXIgPSB3a0NBQ0ZDb250ZXh0R2V0TmV4dFVwZGF0ZVRpbWUobV9jb250ZXh0KTsKKwogICAg
ICAgICBpZiAocmVjdHMuaXNFbXB0eSgpKQogICAgICAgICAgICAgYnJlYWs7CiAKQEAgLTUyMyw2
ICs1MzIsMTAgQEAgdm9pZCBXS0NBQ0ZMYXllclJlbmRlcmVyOjpyZW5kZXIoY29uc3QgVgogICAg
IGlmIChtX3ByaW50VHJlZSkKICAgICAgICAgbV9yb290TGF5ZXItPnByaW50VHJlZSgpOwogI2Vu
ZGlmCisKKyAgICAvLyBJZiB0aW1lVG9OZXh0UmVuZGVyIGlzIG5vdCBpbmZpbml0eSwgaXQgbWVh
bnMgYW5pbWF0aW9ucyBhcmUgcnVubmluZywgc28gcXVldWUgdXAgdG8gcmVuZGVyIGFnYWluCisg
ICAgaWYgKHRpbWVUb05leHRSZW5kZXIgIT0gbnVtZXJpY19saW1pdHM8Q0ZUaW1lSW50ZXJ2YWw+
OjppbmZpbml0eSgpKQorICAgICAgICByZW5kZXJTb29uKCk7CiB9CiAKIHZvaWQgV0tDQUNGTGF5
ZXJSZW5kZXJlcjo6cmVuZGVyU29vbigpCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9XS0NBQ0ZMYXllclJlbmRlcmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vV0tDQUNGTGF5ZXJSZW5kZXJlci5oCShyZXZpc2lvbiA3NTIxMykKKysr
IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1dLQ0FDRkxheWVyUmVuZGVyZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtMzAsMzMgKzMwLDQwIEBACiAKICNpbmNsdWRlICJDT01QdHIuaCIKICNp
bmNsdWRlICJUaW1lci5oIgotI2luY2x1ZGUgIldLQ0FDRkxheWVyLmgiCiAKKyNpbmNsdWRlIDx3
dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotCisjaW5jbHVkZSA8
d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgogCiAjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NHR2VvbWV0cnkuaD4KIAogaW50
ZXJmYWNlIElEaXJlY3QzRERldmljZTk7CiBzdHJ1Y3QgV0tDQUNGQ29udGV4dDsKIAordHlwZWRl
ZiBzdHJ1Y3QgQ0dJbWFnZSogQ0dJbWFnZVJlZjsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBXS0NBQ0ZSb290TGF5ZXI7CitjbGFzcyBQbGF0Zm9ybUNBTGF5ZXI7CiAKIGNsYXNzIFdL
Q0FDRkxheWVyUmVuZGVyZXJDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgfldLQ0FDRkxh
eWVyUmVuZGVyZXJDbGllbnQoKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUmVuZGVyKCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhbmltYXRpb25zU3RhcnRlZChDRlRpbWVJbnRl
cnZhbCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHN5bmNDb21wb3NpdGluZ1N0YXRlKCkgeyB9CiB9
OwogCiAvLyBGSVhNRTogQ3VycmVudGx5IHRoZXJlIGlzIGEgV0tDQUNGTGF5ZXJSZW5kZXJlciBm
b3IgZWFjaCBXZWJWaWV3IGFuZCBlYWNoCiAvLyBoYXMgaXRzIG93biBDQVJlbmRlck9HTENvbnRl
eHQgYW5kIERpcmVjdDNERGV2aWNlOSwgd2hpY2ggaXMgaW5lZmZpY2llbnQuCiAvLyAoaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxODU1KQogY2xhc3MgV0tDQUNGTGF5
ZXJSZW5kZXJlciA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CisgICAgZnJpZW5kIFBsYXRmb3JtQ0FM
YXllcjsKKwogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPFdLQ0FDRkxheWVyUmVuZGVy
ZXI+IGNyZWF0ZShXS0NBQ0ZMYXllclJlbmRlcmVyQ2xpZW50Kik7CiAgICAgfldLQ0FDRkxheWVy
UmVuZGVyZXIoKTsKQEAgLTY1LDkgKzcyLDkgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRSb290
Q29udGVudHMoQ0dJbWFnZVJlZik7CiAgICAgdm9pZCBzZXRSb290Q29udGVudHNBbmREaXNwbGF5
KENHSW1hZ2VSZWYpOwotICAgIHZvaWQgc2V0Um9vdENoaWxkTGF5ZXIoV0tDQUNGTGF5ZXIqIGxh
eWVyKTsKKyAgICB2b2lkIHNldFJvb3RDaGlsZExheWVyKFBsYXRmb3JtQ0FMYXllciopOwogICAg
IHZvaWQgbGF5ZXJUcmVlRGlkQ2hhbmdlKCk7Ci0gICAgdm9pZCBzZXROZWVkc0Rpc3BsYXkoKTsK
KyAgICB2b2lkIHNldE5lZWRzRGlzcGxheShib29sIHN5bmMgPSBmYWxzZSk7CiAgICAgdm9pZCBz
ZXRIb3N0V2luZG93KEhXTkQgd2luZG93KSB7IG1faG9zdFdpbmRvdyA9IHdpbmRvdzsgfQogICAg
IHZvaWQgc2V0QmFja2luZ1N0b3JlRGlydHkoYm9vbCBkaXJ0eSkgeyBtX2JhY2tpbmdTdG9yZURp
cnR5ID0gZGlydHk7IH0KICAgICBib29sIGNyZWF0ZVJlbmRlcmVyKCk7CkBAIC03Niw3ICs4Myw4
IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbmRlclNvb24oKTsKIAogcHJvdGVjdGVkOgotICAgIFdL
Q0FDRkxheWVyKiByb290TGF5ZXIoKSBjb25zdDsKKyAgICBQbGF0Zm9ybUNBTGF5ZXIqIHJvb3RM
YXllcigpIGNvbnN0OworICAgIHZvaWQgYWRkUGVuZGluZ0FuaW1hdGVkTGF5ZXIoUGFzc1JlZlB0
cjxQbGF0Zm9ybUNBTGF5ZXI+KTsKIAogcHJpdmF0ZToKICAgICBXS0NBQ0ZMYXllclJlbmRlcmVy
KFdLQ0FDRkxheWVyUmVuZGVyZXJDbGllbnQqKTsKQEAgLTk5LDEzICsxMDcsMTYgQEAgcHJpdmF0
ZToKICAgICBXS0NBQ0ZMYXllclJlbmRlcmVyQ2xpZW50KiBtX2NsaWVudDsKICAgICBib29sIG1f
bWlnaHRCZUFibGVUb0NyZWF0ZURldmljZUxhdGVyOwogICAgIENPTVB0cjxJRGlyZWN0M0REZXZp
Y2U5PiBtX2QzZERldmljZTsKLSAgICBSZWZQdHI8V0tDQUNGUm9vdExheWVyPiBtX3Jvb3RMYXll
cjsKLSAgICBSZWZQdHI8V0tDQUNGTGF5ZXI+IG1fcm9vdENoaWxkTGF5ZXI7CisgICAgUmVmUHRy
PFBsYXRmb3JtQ0FMYXllcj4gbV9yb290TGF5ZXI7CisgICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXll
cj4gbV9yb290Q2hpbGRMYXllcjsKICAgICBXS0NBQ0ZDb250ZXh0KiBtX2NvbnRleHQ7CiAgICAg
SFdORCBtX2hvc3RXaW5kb3c7CiAgICAgVGltZXI8V0tDQUNGTGF5ZXJSZW5kZXJlcj4gbV9yZW5k
ZXJUaW1lcjsKICAgICBib29sIG1fYmFja2luZ1N0b3JlRGlydHk7CiAgICAgYm9vbCBtX211c3RS
ZXNldExvc3REZXZpY2VCZWZvcmVSZW5kZXJpbmc7CisgICAgYm9vbCBtX3N5bmNMYXllckNoYW5n
ZXM7CisgICAgSGFzaFNldDxSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiA+IG1fcGVuZGluZ0FuaW1h
dGVkTGF5ZXJzOworCiAjaWZuZGVmIE5ERUJVRwogICAgIGJvb2wgbV9wcmludFRyZWU7CiAjZW5k
aWYKSW5kZXg6IFdlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4v
Q2hhbmdlTG9nCShyZXZpc2lvbiA3NTIxNSkKKysrIFdlYktpdC93aW4vQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsNDIgQEAKKzIwMTEtMDEtMDYgIENocmlzIE1hcnJpbiAgPGNt
YXJyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFNoYXJlIGNvZGUgYmV0d2VlbiBNYWMgKENBKSBhbmQgV2luZG93cyAoQ0FDRikg
R3JhcGhpY3NMYXllciBpbXBsZW1lbnRhdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTQ5Mzg4CisKKyAgICAgICAgQ2hhbmdlIGNsaWVudCBBUEkg
Zm9yIHRoZSBmdWxsc2NyZWVuIHZpZGVvIGNvbnRyb2xsZXIuIEl0IG5vdyB1c2VzIGEgCisgICAg
ICAgIFBsYXRmb3JtQ0FMYXllckNsaWVudCBzbyBpdCBjYW4gdXNlIGEgUGxhZm9ybUNBTGF5ZXIg
ZGlyZWN0bHkuIEFsc28KKyAgICAgICAgdXBkYXRlZCBob3cgdG8gY29ubmVjdCB0aGUgbGF5ZXIg
dHJlZSB0byB0aGUgdmlldyB0byByZWZsZWN0IHRoZSB1cGRhdGVkCisgICAgICAgIGhhcmR3YXJl
IGNvbXBvc2l0aW5nIGxvZ2ljLgorCisgICAgICAgICogRnVsbHNjcmVlblZpZGVvQ29udHJvbGxl
ci5jcHA6CisgICAgICAgIChGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpMYXllckNsaWVudDo6
TGF5ZXJDbGllbnQpOgorICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6TGF5ZXJD
bGllbnQ6OnBsYXRmb3JtQ0FMYXllclJlc3BvbmRzVG9MYXlvdXRDaGFuZ2VzKToKKyAgICAgICAg
KEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OkxheWVyQ2xpZW50OjpwbGF0Zm9ybUNBTGF5ZXJB
bmltYXRpb25TdGFydGVkKToKKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6Okxh
eWVyQ2xpZW50OjpwbGF0Zm9ybUNBTGF5ZXJDb250ZW50c09yaWVudGF0aW9uKToKKyAgICAgICAg
KEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OkxheWVyQ2xpZW50OjpwbGF0Zm9ybUNBTGF5ZXJQ
YWludENvbnRlbnRzKToKKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OkxheWVy
Q2xpZW50OjpwbGF0Zm9ybUNBTGF5ZXJTaG93RGVidWdCb3JkZXJzKToKKyAgICAgICAgKEZ1bGxz
Y3JlZW5WaWRlb0NvbnRyb2xsZXI6OkxheWVyQ2xpZW50OjpwbGF0Zm9ybUNBTGF5ZXJTaG93UmVw
YWludENvdW50ZXIpOgorICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6TGF5ZXJD
bGllbnQ6OnBsYXRmb3JtQ0FMYXllckluY3JlbWVudFJlcGFpbnRDb3VudCk6CisgICAgICAgIChG
dWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpMYXllckNsaWVudDo6cGxhdGZvcm1DQUxheWVyQ29u
dGVudHNPcGFxdWUpOgorICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6TGF5ZXJD
bGllbnQ6OnBsYXRmb3JtQ0FMYXllckRyYXdzQ29udGVudCk6CisgICAgICAgIChGdWxsc2NyZWVu
VmlkZW9Db250cm9sbGVyOjpMYXllckNsaWVudDo6cGxhdGZvcm1DQUxheWVyTGF5ZXJEaWREaXNw
bGF5KToKKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OkxheWVyQ2xpZW50Ojpw
bGF0Zm9ybUNBTGF5ZXJMYXlvdXRTdWJsYXllcnNPZkxheWVyKToKKyAgICAgICAgKEZ1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXI6OkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIpOgorICAgICAgICAo
RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6fkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIpOgor
ICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6ZW50ZXJGdWxsc2NyZWVuKToKKyAg
ICAgICAgKiBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmg6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkNocm9tZUNsaWVudDo6YXR0
YWNoUm9vdEdyYXBoaWNzTGF5ZXIpOgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50OjpzY2hlZHVs
ZUNvbXBvc2l0aW5nTGF5ZXJTeW5jKToKKyAgICAgICAgKiBXZWJWaWV3LmNwcDoKKyAgICAgICAg
KFdlYlZpZXc6OnNldFJvb3RDaGlsZExheWVyKToKKyAgICAgICAgKFdlYlZpZXc6OmFuaW1hdGlv
bnNTdGFydGVkKToKKyAgICAgICAgKFdlYlZpZXc6OnN5bmNDb21wb3NpdGluZ1N0YXRlKToKKyAg
ICAgICAgKiBXZWJWaWV3Lmg6CisgICAgICAgIChXZWJWaWV3OjpzZXRSb290TGF5ZXJOZWVkc0Rp
c3BsYXkpOgorCiAyMDExLTAxLTA1ICBTdGV2ZSBGYWxrZW5idXJnICA8c2ZhbGtlbkBhcHBsZS5j
b20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBXZWJLaXQvd2lu
L0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4v
RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDc1MjEzKQorKysgV2ViS2l0
L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgs
OCArMzgsOCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRm9udFNlbGVjdG9yLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9HcmFwaGljc0NvbnRleHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtQ0FMYXllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4
dFJ1bi5oPgotI2luY2x1ZGUgPFdlYkNvcmUvV0tDQUNGTGF5ZXIuaD4KICNpbmNsdWRlIDxXZWJL
aXRTeXN0ZW1JbnRlcmZhY2UvV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CiAjaW5jbHVkZSA8d2lu
ZG93c3guaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CkBAIC0xNzQsMjAgKzE3NCwy
OCBAQCB2b2lkIEhVRFNsaWRlcjo6ZHJhZyhjb25zdCBJbnRQb2ludCYgcG9pCiB9CiAKICNpZiBV
U0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi1jbGFzcyBGdWxsc2NyZWVuVmlkZW9Db250cm9s
bGVyOjpMYXlvdXRDbGllbnQgOiBwdWJsaWMgV0tDQUNGTGF5ZXJMYXlvdXRDbGllbnQgeworY2xh
c3MgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6TGF5ZXJDbGllbnQgOiBwdWJsaWMgV2ViQ29y
ZTo6UGxhdGZvcm1DQUxheWVyQ2xpZW50IHsKIHB1YmxpYzoKLSAgICBMYXlvdXRDbGllbnQoRnVs
bHNjcmVlblZpZGVvQ29udHJvbGxlciogcGFyZW50KTsKLSAgICB2b2lkIGxheW91dFN1YmxheWVy
c09mTGF5ZXIoV0tDQUNGTGF5ZXIqIGxheWVyKTsKKyAgICBMYXllckNsaWVudChGdWxsc2NyZWVu
VmlkZW9Db250cm9sbGVyKiBwYXJlbnQpIDogbV9wYXJlbnQocGFyZW50KSB7IH0KKworICAgIHZp
cnR1YWwgdm9pZCBwbGF0Zm9ybUNBTGF5ZXJMYXlvdXRTdWJsYXllcnNPZkxheWVyKFBsYXRmb3Jt
Q0FMYXllciopOworICAgIHZpcnR1YWwgYm9vbCBwbGF0Zm9ybUNBTGF5ZXJSZXNwb25kc1RvTGF5
b3V0Q2hhbmdlcygpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKworICAgIHZpcnR1YWwgdm9pZCBw
bGF0Zm9ybUNBTGF5ZXJBbmltYXRpb25TdGFydGVkKENGVGltZUludGVydmFsIGJlZ2luVGltZSkg
eyB9CisgICAgdmlydHVhbCBHcmFwaGljc0xheWVyOjpDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3Jp
ZW50YXRpb24gcGxhdGZvcm1DQUxheWVyQ29udGVudHNPcmllbnRhdGlvbigpIGNvbnN0IHsgcmV0
dXJuIEdyYXBoaWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNCb3R0b21VcDsgfQorICAg
IHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNBTGF5ZXJQYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4
dCYsIGNvbnN0IEludFJlY3QmIGluQ2xpcCkgeyB9CisgICAgdmlydHVhbCBib29sIHBsYXRmb3Jt
Q0FMYXllclNob3dEZWJ1Z0JvcmRlcnMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZp
cnR1YWwgYm9vbCBwbGF0Zm9ybUNBTGF5ZXJTaG93UmVwYWludENvdW50ZXIoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgaW50IHBsYXRmb3JtQ0FMYXllckluY3JlbWVudFJl
cGFpbnRDb3VudCgpIHsgcmV0dXJuIDA7IH0KKworICAgIHZpcnR1YWwgYm9vbCBwbGF0Zm9ybUNB
TGF5ZXJDb250ZW50c09wYXF1ZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVh
bCBib29sIHBsYXRmb3JtQ0FMYXllckRyYXdzQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CisgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQ0FMYXllckxheWVyRGlkRGlzcGxheShQbGF0
Zm9ybUxheWVyKikgeyB9CiAKICAgICBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKiBtX3BhcmVu
dDsKIH07CiAKLUZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OkxheW91dENsaWVudDo6TGF5b3V0
Q2xpZW50KEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIqIHBhcmVudCkKLSAgICA6IG1fcGFyZW50
KHBhcmVudCkKLXsKLX0KLQotdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpMYXlvdXRD
bGllbnQ6OmxheW91dFN1YmxheWVyc09mTGF5ZXIoV0tDQUNGTGF5ZXIqIGxheWVyKSAKK3ZvaWQg
RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6TGF5ZXJDbGllbnQ6OnBsYXRmb3JtQ0FMYXllckxh
eW91dFN1YmxheWVyc09mTGF5ZXIoUGxhdGZvcm1DQUxheWVyKiBsYXllcikgCiB7CiAgICAgQVNT
RVJUX0FSRyhsYXllciwgbGF5ZXIgPT0gbV9wYXJlbnQtPm1fcm9vdENoaWxkKTsKIApAQCAtMTk1
LDcgKzIwMyw4IEBAIHZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6TGF5b3V0Q2wKICAg
ICBpZiAoIW1lZGlhRWxlbWVudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgV0tDQUNGTGF5ZXIq
IHZpZGVvTGF5ZXIgPSBtZWRpYUVsZW1lbnQtPnBsYXRmb3JtTGF5ZXIoKTsKKworICAgIFBsYXRm
b3JtQ0FMYXllciogdmlkZW9MYXllciA9IFBsYXRmb3JtQ0FMYXllcjo6cGxhdGZvcm1DQUxheWVy
KG1lZGlhRWxlbWVudC0+cGxhdGZvcm1MYXllcigpKTsKICAgICBpZiAoIXZpZGVvTGF5ZXIgfHwg
dmlkZW9MYXllci0+c3VwZXJsYXllcigpICE9IGxheWVyKQogICAgICAgICByZXR1cm47CiAKQEAg
LTIzMiwyMCArMjQxLDE3IEBAIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OkZ1bGxzY3JlZW5W
aWQKICAgICAsIG1fbW92aW5nV2luZG93KGZhbHNlKQogICAgICwgbV90aW1lcih0aGlzLCAmRnVs
bHNjcmVlblZpZGVvQ29udHJvbGxlcjo6dGltZXJGaXJlZCkKICNpZiBVU0UoQUNDRUxFUkFURURf
Q09NUE9TSVRJTkcpCi0gICAgLCBtX3Jvb3RDaGlsZChXS0NBQ0ZMYXllcjo6Y3JlYXRlKFdLQ0FD
RkxheWVyOjpMYXllcikpCi0gICAgLCBtX2xheW91dENsaWVudChuZXcgTGF5b3V0Q2xpZW50KHRo
aXMpKQorICAgICwgbV9sYXllckNsaWVudChuZXcgTGF5ZXJDbGllbnQodGhpcykpCisgICAgLCBt
X3Jvb3RDaGlsZChQbGF0Zm9ybUNBTGF5ZXI6OmNyZWF0ZShQbGF0Zm9ybUNBTGF5ZXI6OkxheWVy
VHlwZUxheWVyLCBtX2xheWVyQ2xpZW50LmdldCgpKSkKICNlbmRpZgogICAgICwgbV9mdWxsc2Ny
ZWVuV2luZG93KG5ldyBNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93KHRoaXMpKQog
ewotI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLSAgICBtX3Jvb3RDaGlsZC0+c2V0
TGF5b3V0Q2xpZW50KG1fbGF5b3V0Q2xpZW50LmdldCgpKTsKLSNlbmRpZgogfQogCiBGdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyOjp+RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcigpCiB7CiAjaWYg
VVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotICAgIG1fcm9vdENoaWxkLT5zZXRMYXlvdXRD
bGllbnQoMCk7CisgICAgbV9yb290Q2hpbGQtPnNldE93bmVyKDApOwogI2VuZGlmCiB9CiAKQEAg
LTI3Myw4ICsyNzksOCBAQCB2b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmVudGVyRnVs
CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIG1fZnVsbHNjcmVlbldpbmRv
dy0+c2V0Um9vdENoaWxkTGF5ZXIobV9yb290Q2hpbGQpOwogCi0gICAgV0tDQUNGTGF5ZXIqIHZp
ZGVvTGF5ZXIgPSBtX21lZGlhRWxlbWVudC0+cGxhdGZvcm1MYXllcigpOwotICAgIG1fcm9vdENo
aWxkLT5hZGRTdWJsYXllcih2aWRlb0xheWVyKTsKKyAgICBQbGF0Zm9ybUNBTGF5ZXIqIHZpZGVv
TGF5ZXIgPSBQbGF0Zm9ybUNBTGF5ZXI6OnBsYXRmb3JtQ0FMYXllcihtX21lZGlhRWxlbWVudC0+
cGxhdGZvcm1MYXllcigpKTsKKyAgICBtX3Jvb3RDaGlsZC0+YXBwZW5kU3VibGF5ZXIodmlkZW9M
YXllcik7CiAgICAgbV9yb290Q2hpbGQtPnNldE5lZWRzTGF5b3V0KCk7CiAgICAgbV9yb290Q2hp
bGQtPnNldEdlb21ldHJ5RmxpcHBlZCgxKTsKICNlbmRpZgpJbmRleDogV2ViS2l0L3dpbi9GdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9GdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyLmgJKHJldmlzaW9uIDc1MjEzKQorKysgV2ViS2l0L3dpbi9GdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKICNpZiBVU0UoQUND
RUxFUkFURURfQ09NUE9TSVRJTkcpCi1jbGFzcyBXS0NBQ0ZMYXllcjsKK2NsYXNzIFBsYXRmb3Jt
Q0FMYXllcjsKICNlbmRpZgogfQogCkBAIC0xNTcsMTAgKzE1NywxMCBAQCBwcml2YXRlOgogICAg
IFdlYkNvcmU6OkludFBvaW50IG1faHVkUG9zaXRpb247CiAgICAgT3duUHRyPFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3c+IG1fZnVsbHNjcmVlbldpbmRvdzsKICNp
ZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAgUmVmUHRyPFdlYkNvcmU6OldLQ0FD
RkxheWVyPiBtX3Jvb3RDaGlsZDsKLSAgICBjbGFzcyBMYXlvdXRDbGllbnQ7Ci0gICAgZnJpZW5k
IGNsYXNzIExheW91dENsaWVudDsKLSAgICBPd25QdHI8TGF5b3V0Q2xpZW50PiBtX2xheW91dENs
aWVudDsKKyAgICBjbGFzcyBMYXllckNsaWVudDsKKyAgICBmcmllbmQgY2xhc3MgTGF5ZXJDbGll
bnQ7CisgICAgT3duUHRyPExheWVyQ2xpZW50PiBtX2xheWVyQ2xpZW50OworICAgIFJlZlB0cjxX
ZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI+IG1fcm9vdENoaWxkOwogI2VuZGlmCiAKICAgICBIVURC
dXR0b24gbV9wbGF5UGF1c2VCdXR0b247CkluZGV4OiBXZWJLaXQvd2luL1dlYlZpZXcuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViVmlldy5jcHAJKHJldmlzaW9uIDc1MjEzKQorKysg
V2ViS2l0L3dpbi9XZWJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIzMSw3ICs2MjMxLDcg
QEAgdm9pZCBXZWJWaWV3Ojpkb3dubG9hZFVSTChjb25zdCBLVVJMJiB1cgogfQogCiAjaWYgVVNF
KEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotdm9pZCBXZWJWaWV3OjpzZXRSb290Q2hpbGRMYXll
cihXZWJDb3JlOjpXS0NBQ0ZMYXllciogbGF5ZXIpCit2b2lkIFdlYlZpZXc6OnNldFJvb3RDaGls
ZExheWVyKFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllciogbGF5ZXIpCiB7CiAgICAgc2V0QWNjZWxl
cmF0ZWRDb21wb3NpdGluZyhsYXllciA/IHRydWUgOiBmYWxzZSk7CiAgICAgaWYgKG1fbGF5ZXJS
ZW5kZXJlcikKQEAgLTY0NjksNiArNjQ2OSwyMCBAQCBib29sIFdlYlZpZXc6OnNob3VsZFJlbmRl
cigpIGNvbnN0CiAKICAgICByZXR1cm4gIWZyYW1lVmlldy0+bGF5b3V0UGVuZGluZygpOwogfQor
Cit2b2lkIFdlYlZpZXc6OmFuaW1hdGlvbnNTdGFydGVkKENGVGltZUludGVydmFsIHQpCit7Cisg
ICAgLy8gVGVsbCB0aGUgYW5pbWF0aW9uIGNvbnRyb2xsZXIgdGhhdCBpdHMgYW5pbWF0aW9ucyBo
YXZlIHN0YXJ0ZWQKKyAgICBtX3BhZ2UtPm1haW5GcmFtZSgpLT5hbmltYXRpb24oKS0+bm90aWZ5
QW5pbWF0aW9uU3RhcnRlZCgwLCB0KTsKK30KKwordm9pZCBXZWJWaWV3OjpzeW5jQ29tcG9zaXRp
bmdTdGF0ZSgpCit7CisgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUobV9tYWluRnJhbWUpOwor
ICAgIGlmIChjb3JlRnJhbWUgJiYgY29yZUZyYW1lLT52aWV3KCkpCisgICAgICAgIGNvcmVGcmFt
ZS0+dmlldygpLT5zeW5jQ29tcG9zaXRpbmdTdGF0ZVJlY3Vyc2l2ZSgpOworfQorCiAjZW5kaWYK
IAogY2xhc3MgRW51bVRleHRNYXRjaGVzIDogcHVibGljIElFbnVtVGV4dE1hdGNoZXMKSW5kZXg6
IFdlYktpdC93aW4vV2ViVmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViVmlldy5o
CShyZXZpc2lvbiA3NTIxMykKKysrIFdlYktpdC93aW4vV2ViVmlldy5oCSh3b3JraW5nIGNvcHkp
CkBAIC00MCw3ICs0MCw3IEBACiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiAjaWYgVVNFKEFD
Q0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotI2luY2x1ZGUgPFdlYkNvcmUvV0tDQUNGTGF5ZXIuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtQ0FMYXllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
V0tDQUNGTGF5ZXJSZW5kZXJlci5oPgogI2VuZGlmCiAKQEAgLTkwNCw4ICs5MDQsMTIgQEAgcHVi
bGljOgogICAgIHZvaWQgZG93bmxvYWRVUkwoY29uc3QgV2ViQ29yZTo6S1VSTCYpOwogCiAjaWYg
VVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotICAgIHZvaWQgc2V0Um9vdExheWVyTmVlZHNE
aXNwbGF5KCkgeyBpZiAobV9sYXllclJlbmRlcmVyKSBtX2xheWVyUmVuZGVyZXItPnNldE5lZWRz
RGlzcGxheSgpOyB9Ci0gICAgdm9pZCBzZXRSb290Q2hpbGRMYXllcihXZWJDb3JlOjpXS0NBQ0ZM
YXllciogbGF5ZXIpOworICAgIHZvaWQgc2V0Um9vdExheWVyTmVlZHNEaXNwbGF5KGJvb2wgc3lu
YyA9IGZhbHNlKQorICAgIHsKKyAgICAgICAgaWYgKG1fbGF5ZXJSZW5kZXJlcikKKyAgICAgICAg
ICAgIG1fbGF5ZXJSZW5kZXJlci0+c2V0TmVlZHNEaXNwbGF5KHN5bmMpOworICAgIH0KKyAgICB2
b2lkIHNldFJvb3RDaGlsZExheWVyKFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllciopOwogI2VuZGlm
CiAKICAgICB2b2lkIGVudGVyRnVsbHNjcmVlbkZvck5vZGUoV2ViQ29yZTo6Tm9kZSopOwpAQCAt
OTQxLDYgKzk0NSw4IEBAIHByaXZhdGU6CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5H
KQogICAgIC8vIFdLQ0FDRkxheWVyUmVuZGVyZXJDbGllbnQKICAgICB2aXJ0dWFsIGJvb2wgc2hv
dWxkUmVuZGVyKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFuaW1hdGlvbnNTdGFydGVkKENG
VGltZUludGVydmFsKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3luY0NvbXBvc2l0aW5nU3RhdGUoKTsK
ICNlbmRpZgogCiBwcm90ZWN0ZWQ6CkluZGV4OiBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuY3BwCShyZXZpc2lvbiA3NTIxMykKKysrIFdlYktpdC93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODIwLDEy
ICs4MjAsMTIgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OnNldExhc3RTZXRDdXJzb3JUbwogI2lm
IFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjphdHRh
Y2hSb290R3JhcGhpY3NMYXllcihGcmFtZSogZnJhbWUsIEdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNz
TGF5ZXIpCiB7Ci0gICAgbV93ZWJWaWV3LT5zZXRSb290Q2hpbGRMYXllcihncmFwaGljc0xheWVy
ID8gc3RhdGljX2Nhc3Q8V0tDQUNGTGF5ZXIqPihncmFwaGljc0xheWVyLT5wbGF0Zm9ybUxheWVy
KCkpIDogMCk7CisgICAgbV93ZWJWaWV3LT5zZXRSb290Q2hpbGRMYXllcihncmFwaGljc0xheWVy
ID8gUGxhdGZvcm1DQUxheWVyOjpwbGF0Zm9ybUNBTGF5ZXIoZ3JhcGhpY3NMYXllci0+cGxhdGZv
cm1MYXllcigpKSA6IDApOwogfQogCiB2b2lkIFdlYkNocm9tZUNsaWVudDo6c2NoZWR1bGVDb21w
b3NpdGluZ0xheWVyU3luYygpCiB7Ci0gICAgbV93ZWJWaWV3LT5zZXRSb290TGF5ZXJOZWVkc0Rp
c3BsYXkoKTsKKyAgICBtX3dlYlZpZXctPnNldFJvb3RMYXllck5lZWRzRGlzcGxheSh0cnVlKTsK
IH0KIAogI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78200</attachid>
            <date>2011-01-06 18:33:05 -0800</date>
            <delta_ts>2011-01-07 11:35:24 -0800</delta_ts>
            <desc>Final Patch</desc>
            <filename>49388-final.patch</filename>
            <type>text/plain</type>
            <size>125316</size>
            <attacher name="Chris Marrin">cmarrin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC93aW4vRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdC93aW4vRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5oCShyZXZpc2lvbiA3NTIx
MykKKysrIFdlYktpdC93aW4vRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zOSw3ICszOSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBHcmFwaGlj
c0NvbnRleHQ7CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotY2xhc3MgV0tDQUNG
TGF5ZXI7CitjbGFzcyBQbGF0Zm9ybUNBTGF5ZXI7CiAjZW5kaWYKIH0KIApAQCAtMTU3LDEwICsx
NTcsMTAgQEAKICAgICBXZWJDb3JlOjpJbnRQb2ludCBtX2h1ZFBvc2l0aW9uOwogICAgIE93blB0
cjxXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93PiBtX2Z1bGxzY3Jl
ZW5XaW5kb3c7CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotICAgIFJlZlB0cjxX
ZWJDb3JlOjpXS0NBQ0ZMYXllcj4gbV9yb290Q2hpbGQ7Ci0gICAgY2xhc3MgTGF5b3V0Q2xpZW50
OwotICAgIGZyaWVuZCBjbGFzcyBMYXlvdXRDbGllbnQ7Ci0gICAgT3duUHRyPExheW91dENsaWVu
dD4gbV9sYXlvdXRDbGllbnQ7CisgICAgY2xhc3MgTGF5ZXJDbGllbnQ7CisgICAgZnJpZW5kIGNs
YXNzIExheWVyQ2xpZW50OworICAgIE93blB0cjxMYXllckNsaWVudD4gbV9sYXllckNsaWVudDsK
KyAgICBSZWZQdHI8V2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyPiBtX3Jvb3RDaGlsZDsKICNlbmRp
ZgogCiAgICAgSFVEQnV0dG9uIG1fcGxheVBhdXNlQnV0dG9uOwpJbmRleDogV2ViS2l0L3dpbi9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHJldmlzaW9uIDc1
MjE1KQorKysgV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0
MiBAQAorMjAxMS0wMS0wNiAgQ2hyaXMgTWFycmluICA8Y21hcnJpbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2hhcmUgY29kZSBi
ZXR3ZWVuIE1hYyAoQ0EpIGFuZCBXaW5kb3dzIChDQUNGKSBHcmFwaGljc0xheWVyIGltcGxlbWVu
dGF0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NDkzODgKKworICAgICAgICBDaGFuZ2UgY2xpZW50IEFQSSBmb3IgdGhlIGZ1bGxzY3JlZW4gdmlk
ZW8gY29udHJvbGxlci4gSXQgbm93IHVzZXMgYSAKKyAgICAgICAgUGxhdGZvcm1DQUxheWVyQ2xp
ZW50IHNvIGl0IGNhbiB1c2UgYSBQbGFmb3JtQ0FMYXllciBkaXJlY3RseS4gQWxzbworICAgICAg
ICB1cGRhdGVkIGhvdyB0byBjb25uZWN0IHRoZSBsYXllciB0cmVlIHRvIHRoZSB2aWV3IHRvIHJl
ZmxlY3QgdGhlIHVwZGF0ZWQKKyAgICAgICAgaGFyZHdhcmUgY29tcG9zaXRpbmcgbG9naWMuCisK
KyAgICAgICAgKiBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKEZ1bGxz
Y3JlZW5WaWRlb0NvbnRyb2xsZXI6OkxheWVyQ2xpZW50OjpMYXllckNsaWVudCk6CisgICAgICAg
IChGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpMYXllckNsaWVudDo6cGxhdGZvcm1DQUxheWVy
UmVzcG9uZHNUb0xheW91dENoYW5nZXMpOgorICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJv
bGxlcjo6TGF5ZXJDbGllbnQ6OnBsYXRmb3JtQ0FMYXllckFuaW1hdGlvblN0YXJ0ZWQpOgorICAg
ICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6TGF5ZXJDbGllbnQ6OnBsYXRmb3JtQ0FM
YXllckNvbnRlbnRzT3JpZW50YXRpb24pOgorICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJv
bGxlcjo6TGF5ZXJDbGllbnQ6OnBsYXRmb3JtQ0FMYXllclBhaW50Q29udGVudHMpOgorICAgICAg
ICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6TGF5ZXJDbGllbnQ6OnBsYXRmb3JtQ0FMYXll
clNob3dEZWJ1Z0JvcmRlcnMpOgorICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6
TGF5ZXJDbGllbnQ6OnBsYXRmb3JtQ0FMYXllclNob3dSZXBhaW50Q291bnRlcik6CisgICAgICAg
IChGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpMYXllckNsaWVudDo6cGxhdGZvcm1DQUxheWVy
SW5jcmVtZW50UmVwYWludENvdW50KToKKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xs
ZXI6OkxheWVyQ2xpZW50OjpwbGF0Zm9ybUNBTGF5ZXJDb250ZW50c09wYXF1ZSk6CisgICAgICAg
IChGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpMYXllckNsaWVudDo6cGxhdGZvcm1DQUxheWVy
RHJhd3NDb250ZW50KToKKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OkxheWVy
Q2xpZW50OjpwbGF0Zm9ybUNBTGF5ZXJMYXllckRpZERpc3BsYXkpOgorICAgICAgICAoRnVsbHNj
cmVlblZpZGVvQ29udHJvbGxlcjo6TGF5ZXJDbGllbnQ6OnBsYXRmb3JtQ0FMYXllckxheW91dFN1
YmxheWVyc09mTGF5ZXIpOgorICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6RnVs
bHNjcmVlblZpZGVvQ29udHJvbGxlcik6CisgICAgICAgIChGdWxsc2NyZWVuVmlkZW9Db250cm9s
bGVyOjp+RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcik6CisgICAgICAgIChGdWxsc2NyZWVuVmlk
ZW9Db250cm9sbGVyOjplbnRlckZ1bGxzY3JlZW4pOgorICAgICAgICAqIEZ1bGxzY3JlZW5WaWRl
b0NvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
Y3BwOgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50OjphdHRhY2hSb290R3JhcGhpY3NMYXllcik6
CisgICAgICAgIChXZWJDaHJvbWVDbGllbnQ6OnNjaGVkdWxlQ29tcG9zaXRpbmdMYXllclN5bmMp
OgorICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoV2ViVmlldzo6c2V0Um9vdENoaWxk
TGF5ZXIpOgorICAgICAgICAoV2ViVmlldzo6YW5pbWF0aW9uc1N0YXJ0ZWQpOgorICAgICAgICAo
V2ViVmlldzo6c3luY0NvbXBvc2l0aW5nU3RhdGUpOgorICAgICAgICAqIFdlYlZpZXcuaDoKKyAg
ICAgICAgKFdlYlZpZXc6OnNldFJvb3RMYXllck5lZWRzRGlzcGxheSk6CisKIDIwMTEtMDEtMDUg
IFN0ZXZlIEZhbGtlbmJ1cmcgIDxzZmFsa2VuQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6IFdlYktpdC93aW4vV2ViVmlldy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAkocmV2aXNpb24gNzUyMTMpCisrKyBXZWJLaXQv
d2luL1dlYlZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MjMxLDcgKzYyMzEsNyBAQAogfQog
CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotdm9pZCBXZWJWaWV3OjpzZXRSb290
Q2hpbGRMYXllcihXZWJDb3JlOjpXS0NBQ0ZMYXllciogbGF5ZXIpCit2b2lkIFdlYlZpZXc6OnNl
dFJvb3RDaGlsZExheWVyKFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllciogbGF5ZXIpCiB7CiAgICAg
c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZyhsYXllciA/IHRydWUgOiBmYWxzZSk7CiAgICAgaWYg
KG1fbGF5ZXJSZW5kZXJlcikKQEAgLTY0NjksNiArNjQ2OSwyMCBAQAogCiAgICAgcmV0dXJuICFm
cmFtZVZpZXctPmxheW91dFBlbmRpbmcoKTsKIH0KKwordm9pZCBXZWJWaWV3OjphbmltYXRpb25z
U3RhcnRlZChDRlRpbWVJbnRlcnZhbCB0KQoreworICAgIC8vIFRlbGwgdGhlIGFuaW1hdGlvbiBj
b250cm9sbGVyIHRoYXQgaXRzIGFuaW1hdGlvbnMgaGF2ZSBzdGFydGVkCisgICAgbV9wYWdlLT5t
YWluRnJhbWUoKS0+YW5pbWF0aW9uKCktPm5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQoMCwgdCk7Cit9
CisKK3ZvaWQgV2ViVmlldzo6c3luY0NvbXBvc2l0aW5nU3RhdGUoKQoreworICAgIEZyYW1lKiBj
b3JlRnJhbWUgPSBjb3JlKG1fbWFpbkZyYW1lKTsKKyAgICBpZiAoY29yZUZyYW1lICYmIGNvcmVG
cmFtZS0+dmlldygpKQorICAgICAgICBjb3JlRnJhbWUtPnZpZXcoKS0+c3luY0NvbXBvc2l0aW5n
U3RhdGVSZWN1cnNpdmUoKTsKK30KKwogI2VuZGlmCiAKIGNsYXNzIEVudW1UZXh0TWF0Y2hlcyA6
IHB1YmxpYyBJRW51bVRleHRNYXRjaGVzCkluZGV4OiBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCShyZXZpc2lvbiA3NTIxMykKKysrIFdlYktpdC93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODIw
LDEyICs4MjAsMTIgQEAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiB2b2lkIFdl
YkNocm9tZUNsaWVudDo6YXR0YWNoUm9vdEdyYXBoaWNzTGF5ZXIoRnJhbWUqIGZyYW1lLCBHcmFw
aGljc0xheWVyKiBncmFwaGljc0xheWVyKQogewotICAgIG1fd2ViVmlldy0+c2V0Um9vdENoaWxk
TGF5ZXIoZ3JhcGhpY3NMYXllciA/IHN0YXRpY19jYXN0PFdLQ0FDRkxheWVyKj4oZ3JhcGhpY3NM
YXllci0+cGxhdGZvcm1MYXllcigpKSA6IDApOworICAgIG1fd2ViVmlldy0+c2V0Um9vdENoaWxk
TGF5ZXIoZ3JhcGhpY3NMYXllciA/IFBsYXRmb3JtQ0FMYXllcjo6cGxhdGZvcm1DQUxheWVyKGdy
YXBoaWNzTGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSkgOiAwKTsKIH0KIAogdm9pZCBXZWJDaHJvbWVD
bGllbnQ6OnNjaGVkdWxlQ29tcG9zaXRpbmdMYXllclN5bmMoKQogewotICAgIG1fd2ViVmlldy0+
c2V0Um9vdExheWVyTmVlZHNEaXNwbGF5KCk7CisgICAgbV93ZWJWaWV3LT5zZXRSb290TGF5ZXJO
ZWVkc0Rpc3BsYXkodHJ1ZSk7CiB9CiAKICNlbmRpZgpJbmRleDogV2ViS2l0L3dpbi9GdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL0Z1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA3NTIxMykKKysrIFdlYktpdC93aW4vRnVs
bHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDggKzM4LDgg
QEAKICNpbmNsdWRlIDxXZWJDb3JlL0ZvbnRTZWxlY3Rvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
R3JhcGhpY3NDb250ZXh0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9QbGF0Zm9ybUNBTGF5ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RleHRSdW4uaD4K
LSNpbmNsdWRlIDxXZWJDb3JlL1dLQ0FDRkxheWVyLmg+CiAjaW5jbHVkZSA8V2ViS2l0U3lzdGVt
SW50ZXJmYWNlL1dlYktpdFN5c3RlbUludGVyZmFjZS5oPgogI2luY2x1ZGUgPHdpbmRvd3N4Lmg+
CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgpAQCAtMTc0LDI4ICsxNzQsMzcgQEAKIH0K
IAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLWNsYXNzIEZ1bGxzY3JlZW5WaWRl
b0NvbnRyb2xsZXI6OkxheW91dENsaWVudCA6IHB1YmxpYyBXS0NBQ0ZMYXllckxheW91dENsaWVu
dCB7CitjbGFzcyBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpMYXllckNsaWVudCA6IHB1Ymxp
YyBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJDbGllbnQgewogcHVibGljOgotICAgIExheW91dENs
aWVudChGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKiBwYXJlbnQpOwotICAgIHZvaWQgbGF5b3V0
U3VibGF5ZXJzT2ZMYXllcihXS0NBQ0ZMYXllciogbGF5ZXIpOworICAgIExheWVyQ2xpZW50KEZ1
bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIqIHBhcmVudCkgOiBtX3BhcmVudChwYXJlbnQpIHsgfQog
CisgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQ0FMYXllckxheW91dFN1YmxheWVyc09mTGF5ZXIo
UGxhdGZvcm1DQUxheWVyKik7CisgICAgdmlydHVhbCBib29sIHBsYXRmb3JtQ0FMYXllclJlc3Bv
bmRzVG9MYXlvdXRDaGFuZ2VzKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgdmlydHVh
bCB2b2lkIHBsYXRmb3JtQ0FMYXllckFuaW1hdGlvblN0YXJ0ZWQoQ0ZUaW1lSW50ZXJ2YWwgYmVn
aW5UaW1lKSB7IH0KKyAgICB2aXJ0dWFsIEdyYXBoaWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRp
bmF0ZXNPcmllbnRhdGlvbiBwbGF0Zm9ybUNBTGF5ZXJDb250ZW50c09yaWVudGF0aW9uKCkgY29u
c3QgeyByZXR1cm4gR3JhcGhpY3NMYXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc0JvdHRvbVVw
OyB9CisgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQ0FMYXllclBhaW50Q29udGVudHMoR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgaW5DbGlwKSB7IH0KKyAgICB2aXJ0dWFsIGJvb2wg
cGxhdGZvcm1DQUxheWVyU2hvd0RlYnVnQm9yZGVycygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgdmlydHVhbCBib29sIHBsYXRmb3JtQ0FMYXllclNob3dSZXBhaW50Q291bnRlcigpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBpbnQgcGxhdGZvcm1DQUxheWVySW5j
cmVtZW50UmVwYWludENvdW50KCkgeyByZXR1cm4gMDsgfQorCisgICAgdmlydHVhbCBib29sIHBs
YXRmb3JtQ0FMYXllckNvbnRlbnRzT3BhcXVlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICB2aXJ0dWFsIGJvb2wgcGxhdGZvcm1DQUxheWVyRHJhd3NDb250ZW50KCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1DQUxheWVyTGF5ZXJEaWREaXNw
bGF5KFBsYXRmb3JtTGF5ZXIqKSB7IH0KKwogICAgIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIq
IG1fcGFyZW50OwogfTsKIAotRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6TGF5b3V0Q2xpZW50
OjpMYXlvdXRDbGllbnQoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlciogcGFyZW50KQotICAgIDog
bV9wYXJlbnQocGFyZW50KQordm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpMYXllckNs
aWVudDo6cGxhdGZvcm1DQUxheWVyTGF5b3V0U3VibGF5ZXJzT2ZMYXllcihQbGF0Zm9ybUNBTGF5
ZXIqIGxheWVyKSAKIHsKLX0KLQotdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpMYXlv
dXRDbGllbnQ6OmxheW91dFN1YmxheWVyc09mTGF5ZXIoV0tDQUNGTGF5ZXIqIGxheWVyKSAKLXsK
ICAgICBBU1NFUlRfQVJHKGxheWVyLCBsYXllciA9PSBtX3BhcmVudC0+bV9yb290Q2hpbGQpOwog
CiAgICAgSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50ID0gbV9wYXJlbnQtPm1fbWVkaWFF
bGVtZW50LmdldCgpOwogICAgIGlmICghbWVkaWFFbGVtZW50KQogICAgICAgICByZXR1cm47CiAK
LSAgICBXS0NBQ0ZMYXllciogdmlkZW9MYXllciA9IG1lZGlhRWxlbWVudC0+cGxhdGZvcm1MYXll
cigpOworCisgICAgUGxhdGZvcm1DQUxheWVyKiB2aWRlb0xheWVyID0gUGxhdGZvcm1DQUxheWVy
OjpwbGF0Zm9ybUNBTGF5ZXIobWVkaWFFbGVtZW50LT5wbGF0Zm9ybUxheWVyKCkpOwogICAgIGlm
ICghdmlkZW9MYXllciB8fCB2aWRlb0xheWVyLT5zdXBlcmxheWVyKCkgIT0gbGF5ZXIpCiAgICAg
ICAgIHJldHVybjsKIApAQCAtMjMyLDIwICsyNDEsMTcgQEAKICAgICAsIG1fbW92aW5nV2luZG93
KGZhbHNlKQogICAgICwgbV90aW1lcih0aGlzLCAmRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6
dGltZXJGaXJlZCkKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAgLCBtX3Jv
b3RDaGlsZChXS0NBQ0ZMYXllcjo6Y3JlYXRlKFdLQ0FDRkxheWVyOjpMYXllcikpCi0gICAgLCBt
X2xheW91dENsaWVudChuZXcgTGF5b3V0Q2xpZW50KHRoaXMpKQorICAgICwgbV9sYXllckNsaWVu
dChuZXcgTGF5ZXJDbGllbnQodGhpcykpCisgICAgLCBtX3Jvb3RDaGlsZChQbGF0Zm9ybUNBTGF5
ZXI6OmNyZWF0ZShQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUxheWVyLCBtX2xheWVyQ2xpZW50
LmdldCgpKSkKICNlbmRpZgogICAgICwgbV9mdWxsc2NyZWVuV2luZG93KG5ldyBNZWRpYVBsYXll
clByaXZhdGVGdWxsc2NyZWVuV2luZG93KHRoaXMpKQogewotI2lmIFVTRShBQ0NFTEVSQVRFRF9D
T01QT1NJVElORykKLSAgICBtX3Jvb3RDaGlsZC0+c2V0TGF5b3V0Q2xpZW50KG1fbGF5b3V0Q2xp
ZW50LmdldCgpKTsKLSNlbmRpZgogfQogCiBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjp+RnVs
bHNjcmVlblZpZGVvQ29udHJvbGxlcigpCiB7CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lU
SU5HKQotICAgIG1fcm9vdENoaWxkLT5zZXRMYXlvdXRDbGllbnQoMCk7CisgICAgbV9yb290Q2hp
bGQtPnNldE93bmVyKDApOwogI2VuZGlmCiB9CiAKQEAgLTI3Myw4ICsyNzksOCBAQAogI2lmIFVT
RShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICBtX2Z1bGxzY3JlZW5XaW5kb3ctPnNldFJv
b3RDaGlsZExheWVyKG1fcm9vdENoaWxkKTsKIAotICAgIFdLQ0FDRkxheWVyKiB2aWRlb0xheWVy
ID0gbV9tZWRpYUVsZW1lbnQtPnBsYXRmb3JtTGF5ZXIoKTsKLSAgICBtX3Jvb3RDaGlsZC0+YWRk
U3VibGF5ZXIodmlkZW9MYXllcik7CisgICAgUGxhdGZvcm1DQUxheWVyKiB2aWRlb0xheWVyID0g
UGxhdGZvcm1DQUxheWVyOjpwbGF0Zm9ybUNBTGF5ZXIobV9tZWRpYUVsZW1lbnQtPnBsYXRmb3Jt
TGF5ZXIoKSk7CisgICAgbV9yb290Q2hpbGQtPmFwcGVuZFN1YmxheWVyKHZpZGVvTGF5ZXIpOwog
ICAgIG1fcm9vdENoaWxkLT5zZXROZWVkc0xheW91dCgpOwogICAgIG1fcm9vdENoaWxkLT5zZXRH
ZW9tZXRyeUZsaXBwZWQoMSk7CiAjZW5kaWYKSW5kZXg6IFdlYktpdC93aW4vV2ViVmlldy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViVmlldy5oCShyZXZpc2lvbiA3NTIxMykKKysrIFdl
YktpdC93aW4vV2ViVmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBACiAjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQot
I2luY2x1ZGUgPFdlYkNvcmUvV0tDQUNGTGF5ZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRm
b3JtQ0FMYXllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvV0tDQUNGTGF5ZXJSZW5kZXJlci5oPgog
I2VuZGlmCiAKQEAgLTkwNCw4ICs5MDQsMTIgQEAKICAgICB2b2lkIGRvd25sb2FkVVJMKGNvbnN0
IFdlYkNvcmU6OktVUkwmKTsKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLSAg
ICB2b2lkIHNldFJvb3RMYXllck5lZWRzRGlzcGxheSgpIHsgaWYgKG1fbGF5ZXJSZW5kZXJlcikg
bV9sYXllclJlbmRlcmVyLT5zZXROZWVkc0Rpc3BsYXkoKTsgfQotICAgIHZvaWQgc2V0Um9vdENo
aWxkTGF5ZXIoV2ViQ29yZTo6V0tDQUNGTGF5ZXIqIGxheWVyKTsKKyAgICB2b2lkIHNldFJvb3RM
YXllck5lZWRzRGlzcGxheShib29sIHN5bmMgPSBmYWxzZSkKKyAgICB7CisgICAgICAgIGlmICht
X2xheWVyUmVuZGVyZXIpCisgICAgICAgICAgICBtX2xheWVyUmVuZGVyZXItPnNldE5lZWRzRGlz
cGxheShzeW5jKTsKKyAgICB9CisgICAgdm9pZCBzZXRSb290Q2hpbGRMYXllcihXZWJDb3JlOjpQ
bGF0Zm9ybUNBTGF5ZXIqKTsKICNlbmRpZgogCiAgICAgdm9pZCBlbnRlckZ1bGxzY3JlZW5Gb3JO
b2RlKFdlYkNvcmU6Ok5vZGUqKTsKQEAgLTk0MSw2ICs5NDUsOCBAQAogI2lmIFVTRShBQ0NFTEVS
QVRFRF9DT01QT1NJVElORykKICAgICAvLyBXS0NBQ0ZMYXllclJlbmRlcmVyQ2xpZW50CiAgICAg
dmlydHVhbCBib29sIHNob3VsZFJlbmRlcigpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhbmlt
YXRpb25zU3RhcnRlZChDRlRpbWVJbnRlcnZhbCk7CisgICAgdmlydHVhbCB2b2lkIHN5bmNDb21w
b3NpdGluZ1N0YXRlKCk7CiAjZW5kaWYKIAogcHJvdGVjdGVkOgpJbmRleDogV2ViQ29yZS9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc1MjE1KQor
KysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0NCBAQAorMjAx
MS0wMS0wNiAgQ2hyaXMgTWFycmluICA8Y21hcnJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2hhcmUgY29kZSBiZXR3ZWVuIE1h
YyAoQ0EpIGFuZCBXaW5kb3dzIChDQUNGKSBHcmFwaGljc0xheWVyIGltcGxlbWVudGF0aW9ucwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDkzODgKKwor
ICAgICAgICBGaW5hbCBzdGVwIGluIHVuaWZ5aW5nIEdyYXBoaWNzTGF5ZXIgbG9naWMgYWNyb3Nz
IFdpbiBhbmQgTWFjLiBUaGlzIAorICAgICAgICBpbXBsZW1lbnRzIHRoZSBXaW5kb3dzIHNpZGUg
Y2xhc3NlcyBmb3IgUGxhdGZvcm1DQUxheWVyIGFuZCBzdXBwb3J0aW5nCisgICAgICAgIGNsYXNz
ZXMuIEFsc28gY2hhbmdlZCBNZWRpYVBsYXllciB0byB1c2UgbmV3IFBsYXRmb3JtQ0FMYXllckNs
aWVudAorICAgICAgICBzbyBpdCBjYW4gdXNlIFBsYXRmb3JtQ0FMYXllciBkaXJlY3RseSByYXRo
ZXIgdGhhbiBhIGR1bW15IEdyYXBoaWNzTGF5ZXIuCisgICAgICAgIFdLQ0FDRkxheWVyUmVuZGVy
ZXIgbm93IGRvZXMgdGhlIHRhc2sgb2Ygbm90aWZ5aW5nIGFuaW1hdGlvbnMgb2YgdGhlaXIKKyAg
ICAgICAgc3RhcnQgdGltZS4gQWxzbyBjb21tZW50ZWQgb3V0IGFuIGFzc2VydCBpbiBBbmltYXRp
b25CYXNlIGJlY2F1c2UKKyAgICAgICAgQW5pbWF0aW9uQ29udHJvbGxlcidzIGZyYW1lIHRpbWUg
aXMgbm90IGluIHN5bmMgd2l0aCB0aGUgbmV3IAorICAgICAgICBBbmltYXRpb25UaW1lQ29udHJv
bGxlci4gSSd2ZSBvcGVuZWQgYSBuZXcgYnVnIGZvciB0aGF0IGlzc3VlOgorCisgICAgICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTIwMzcKKworICAgICAg
ICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUudmNw
cm9qL1dlYkNvcmVDb21tb24udnNwcm9wczoKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9jb3B5
Rm9yd2FyZGluZ0hlYWRlcnMuY21kOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQuaDoKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNw
cDoKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlOjpiZWdpbkFuaW1hdGlv
blVwZGF0ZVRpbWUpOgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0tleWZyYW1lQW5pbWF0aW9u
LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBQW5pbWF0aW9u
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luOiBBZGRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUFuaW1hdGlvbldpbi5jcHA6IEFk
ZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJX
aW4uY3BwOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZv
cm1DQUxheWVyV2luSW50ZXJuYWwuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWwuaDogQWRkZWQuCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENHV2luLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldp
bmRvdy5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJp
dmF0ZUZ1bGxzY3JlZW5XaW5kb3cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
TWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dC5jcHA6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENv
bnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2
YXRlUXVpY2tUaW1lV2luLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vV0tD
QUNGTGF5ZXJSZW5kZXJlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1dL
Q0FDRkxheWVyUmVuZGVyZXIuaDoKKwogMjAxMS0wMS0wNSAgWmhlbnlhbyBNbyAgPHptb0Bnb29n
bGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUnVzc2VsbC4KSW5kZXg6IFdl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkocmV2aXNpb24gNzUyMTMpCisrKyBXZWJD
b3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xOCw3
ICsxOCw3IEBACiAJCTxDb25maWd1cmF0aW9uCiAJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKIAkJCUNv
bmZpZ3VyYXRpb25UeXBlPSI0IgotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9IiQoV2ViS2l0
VlNQcm9wc1JlZGlyZWN0aW9uRGlyKS4uXC4uXFdlYktpdExpYnJhcmllc1x3aW5cdG9vbHNcdnNw
cm9wc1xGZWF0dXJlRGVmaW5lcy52c3Byb3BzOyQoV2ViS2l0VlNQcm9wc1JlZGlyZWN0aW9uRGly
KS4uXC4uXFdlYktpdExpYnJhcmllc1x3aW5cdG9vbHNcdnNwcm9wc1xjb21tb24udnNwcm9wczsk
KFdlYktpdFZTUHJvcHNSZWRpcmVjdGlvbkRpcikuLlwuLlxXZWJLaXRMaWJyYXJpZXNcd2luXHRv
b2xzXHZzcHJvcHNcZGVidWcudnNwcm9wczsuXFdlYkNvcmVDb21tb24udnNwcm9wczsuXFdlYkNv
cmVDRy52c3Byb3BzOy5cV2ViQ29yZUNGTmV0d29yay52c3Byb3BzOy5cV2ViQ29yZVB0aHJlYWRz
LnZzcHJvcHM7LlxXZWJDb3JlTWVkaWFRVC52c3Byb3BzOy5cV2ViQ29yZVF1YXJ0ekNvcmUudnNw
cm9wcyIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuLlwuLlxXZWJLaXRMaWJyYXJpZXNc
d2luXHRvb2xzXHZzcHJvcHNcRmVhdHVyZURlZmluZXMudnNwcm9wczsuLlwuLlxXZWJLaXRMaWJy
YXJpZXNcd2luXHRvb2xzXHZzcHJvcHNcY29tbW9uLnZzcHJvcHM7Li5cLi5cV2ViS2l0TGlicmFy
aWVzXHdpblx0b29sc1x2c3Byb3BzXGRlYnVnLnZzcHJvcHM7LlxXZWJDb3JlQ29tbW9uLnZzcHJv
cHM7LlxXZWJDb3JlQ0cudnNwcm9wczsuXFdlYkNvcmVDRk5ldHdvcmsudnNwcm9wczsuXFdlYkNv
cmVQdGhyZWFkcy52c3Byb3BzOy5cV2ViQ29yZU1lZGlhUVQudnNwcm9wczsuXFdlYkNvcmVRdWFy
dHpDb3JlLnZzcHJvcHMiCiAJCQlDaGFyYWN0ZXJTZXQ9IjEiCiAJCQk+CiAJCQk8VG9vbApAQCAt
NzIsNyArNzIsNyBAQAogCQk8Q29uZmlndXJhdGlvbgogCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIK
IAkJCUNvbmZpZ3VyYXRpb25UeXBlPSI0IgotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9IiQo
V2ViS2l0VlNQcm9wc1JlZGlyZWN0aW9uRGlyKS4uXC4uXFdlYktpdExpYnJhcmllc1x3aW5cdG9v
bHNcdnNwcm9wc1xGZWF0dXJlRGVmaW5lcy52c3Byb3BzOyQoV2ViS2l0VlNQcm9wc1JlZGlyZWN0
aW9uRGlyKS4uXC4uXFdlYktpdExpYnJhcmllc1x3aW5cdG9vbHNcdnNwcm9wc1xjb21tb24udnNw
cm9wczskKFdlYktpdFZTUHJvcHNSZWRpcmVjdGlvbkRpcikuLlwuLlxXZWJLaXRMaWJyYXJpZXNc
d2luXHRvb2xzXHZzcHJvcHNccmVsZWFzZS52c3Byb3BzOy5cV2ViQ29yZUNvbW1vbi52c3Byb3Bz
Oy5cV2ViQ29yZUNHLnZzcHJvcHM7LlxXZWJDb3JlQ0ZOZXR3b3JrLnZzcHJvcHM7LlxXZWJDb3Jl
UHRocmVhZHMudnNwcm9wczsuXFdlYkNvcmVNZWRpYVFULnZzcHJvcHM7LlxXZWJDb3JlUXVhcnR6
Q29yZS52c3Byb3BzIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii4uXC4uXFdlYktpdExp
YnJhcmllc1x3aW5cdG9vbHNcdnNwcm9wc1xGZWF0dXJlRGVmaW5lcy52c3Byb3BzOy4uXC4uXFdl
YktpdExpYnJhcmllc1x3aW5cdG9vbHNcdnNwcm9wc1xjb21tb24udnNwcm9wczsuLlwuLlxXZWJL
aXRMaWJyYXJpZXNcd2luXHRvb2xzXHZzcHJvcHNccmVsZWFzZS52c3Byb3BzOy5cV2ViQ29yZUNv
bW1vbi52c3Byb3BzOy5cV2ViQ29yZUNHLnZzcHJvcHM7LlxXZWJDb3JlQ0ZOZXR3b3JrLnZzcHJv
cHM7LlxXZWJDb3JlUHRocmVhZHMudnNwcm9wczsuXFdlYkNvcmVNZWRpYVFULnZzcHJvcHM7LlxX
ZWJDb3JlUXVhcnR6Q29yZS52c3Byb3BzIgogCQkJQ2hhcmFjdGVyU2V0PSIxIgogCQkJPgogCQkJ
PFRvb2wKQEAgLTEyNiw3ICsxMjYsNyBAQAogCQk8Q29uZmlndXJhdGlvbgogCQkJTmFtZT0iRGVi
dWdfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgogCQkJQ29uZmlndXJhdGlvblR5cGU9IjQiCi0JCQlJbmhl
cml0ZWRQcm9wZXJ0eVNoZWV0cz0iJChXZWJLaXRWU1Byb3BzUmVkaXJlY3Rpb25EaXIpLi5cLi5c
V2ViS2l0TGlicmFyaWVzXHdpblx0b29sc1x2c3Byb3BzXEZlYXR1cmVEZWZpbmVzQ2Fpcm8udnNw
cm9wczskKFdlYktpdFZTUHJvcHNSZWRpcmVjdGlvbkRpcikuLlwuLlxXZWJLaXRMaWJyYXJpZXNc
d2luXHRvb2xzXHZzcHJvcHNcY29tbW9uLnZzcHJvcHM7JChXZWJLaXRWU1Byb3BzUmVkaXJlY3Rp
b25EaXIpLi5cLi5cV2ViS2l0TGlicmFyaWVzXHdpblx0b29sc1x2c3Byb3BzXGRlYnVnLnZzcHJv
cHM7JChXZWJLaXRWU1Byb3BzUmVkaXJlY3Rpb25EaXIpLi5cLi5cV2ViS2l0TGlicmFyaWVzXHdp
blx0b29sc1x2c3Byb3BzXGRlYnVnX3dpbmNhaXJvLnZzcHJvcHM7LlxXZWJDb3JlQ29tbW9uLnZz
cHJvcHM7LlxXZWJDb3JlQ2Fpcm8udnNwcm9wczsuXFdlYkNvcmVDVVJMLnZzcHJvcHMiCisJCQlJ
bmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLi5cLi5cV2ViS2l0TGlicmFyaWVzXHdpblx0b29sc1x2
c3Byb3BzXEZlYXR1cmVEZWZpbmVzQ2Fpcm8udnNwcm9wczsuLlwuLlxXZWJLaXRMaWJyYXJpZXNc
d2luXHRvb2xzXHZzcHJvcHNcY29tbW9uLnZzcHJvcHM7Li5cLi5cV2ViS2l0TGlicmFyaWVzXHdp
blx0b29sc1x2c3Byb3BzXGRlYnVnLnZzcHJvcHM7Li5cLi5cV2ViS2l0TGlicmFyaWVzXHdpblx0
b29sc1x2c3Byb3BzXGRlYnVnX3dpbmNhaXJvLnZzcHJvcHM7LlxXZWJDb3JlQ29tbW9uLnZzcHJv
cHM7LlxXZWJDb3JlQ2Fpcm8udnNwcm9wczsuXFdlYkNvcmVDVVJMLnZzcHJvcHMiCiAJCQlDaGFy
YWN0ZXJTZXQ9IjEiCiAJCQk+CiAJCQk8VG9vbApAQCAtMTgwLDcgKzE4MCw3IEBACiAJCTxDb25m
aWd1cmF0aW9uCiAJCQlOYW1lPSJSZWxlYXNlX0NhaXJvX0NGTGl0ZXxXaW4zMiIKIAkJCUNvbmZp
Z3VyYXRpb25UeXBlPSI0IgotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9IiQoV2ViS2l0VlNQ
cm9wc1JlZGlyZWN0aW9uRGlyKS4uXC4uXFdlYktpdExpYnJhcmllc1x3aW5cdG9vbHNcdnNwcm9w
c1xGZWF0dXJlRGVmaW5lc0NhaXJvLnZzcHJvcHM7JChXZWJLaXRWU1Byb3BzUmVkaXJlY3Rpb25E
aXIpLi5cLi5cV2ViS2l0TGlicmFyaWVzXHdpblx0b29sc1x2c3Byb3BzXGNvbW1vbi52c3Byb3Bz
OyQoV2ViS2l0VlNQcm9wc1JlZGlyZWN0aW9uRGlyKS4uXC4uXFdlYktpdExpYnJhcmllc1x3aW5c
dG9vbHNcdnNwcm9wc1xyZWxlYXNlLnZzcHJvcHM7JChXZWJLaXRWU1Byb3BzUmVkaXJlY3Rpb25E
aXIpLi5cLi5cV2ViS2l0TGlicmFyaWVzXHdpblx0b29sc1x2c3Byb3BzXFdpbkNhaXJvLnZzcHJv
cHM7LlxXZWJDb3JlQ29tbW9uLnZzcHJvcHM7LlxXZWJDb3JlQ2Fpcm8udnNwcm9wczsuXFdlYkNv
cmVDVVJMLnZzcHJvcHMiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLi5cLi5cV2ViS2l0
TGlicmFyaWVzXHdpblx0b29sc1x2c3Byb3BzXEZlYXR1cmVEZWZpbmVzQ2Fpcm8udnNwcm9wczsu
LlwuLlxXZWJLaXRMaWJyYXJpZXNcd2luXHRvb2xzXHZzcHJvcHNcY29tbW9uLnZzcHJvcHM7Li5c
Li5cV2ViS2l0TGlicmFyaWVzXHdpblx0b29sc1x2c3Byb3BzXHJlbGVhc2UudnNwcm9wczsuLlwu
LlxXZWJLaXRMaWJyYXJpZXNcd2luXHRvb2xzXHZzcHJvcHNcV2luQ2Fpcm8udnNwcm9wczsuXFdl
YkNvcmVDb21tb24udnNwcm9wczsuXFdlYkNvcmVDYWlyby52c3Byb3BzOy5cV2ViQ29yZUNVUkwu
dnNwcm9wcyIKIAkJCUNoYXJhY3RlclNldD0iMSIKIAkJCT4KIAkJCTxUb29sCkBAIC0yMzQsNyAr
MjM0LDcgQEAKIAkJPENvbmZpZ3VyYXRpb24KIAkJCU5hbWU9IkRlYnVnX0FsbHxXaW4zMiIKIAkJ
CUNvbmZpZ3VyYXRpb25UeXBlPSI0IgotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9IiQoV2Vi
S2l0VlNQcm9wc1JlZGlyZWN0aW9uRGlyKS4uXC4uXFdlYktpdExpYnJhcmllc1x3aW5cdG9vbHNc
dnNwcm9wc1xGZWF0dXJlRGVmaW5lcy52c3Byb3BzOyQoV2ViS2l0VlNQcm9wc1JlZGlyZWN0aW9u
RGlyKS4uXC4uXFdlYktpdExpYnJhcmllc1x3aW5cdG9vbHNcdnNwcm9wc1xjb21tb24udnNwcm9w
czskKFdlYktpdFZTUHJvcHNSZWRpcmVjdGlvbkRpcikuLlwuLlxXZWJLaXRMaWJyYXJpZXNcd2lu
XHRvb2xzXHZzcHJvcHNcZGVidWcudnNwcm9wczsuXFdlYkNvcmVDb21tb24udnNwcm9wczsuXFdl
YkNvcmVDRy52c3Byb3BzOy5cV2ViQ29yZUNGTmV0d29yay52c3Byb3BzOy5cV2ViQ29yZVB0aHJl
YWRzLnZzcHJvcHM7LlxXZWJDb3JlTWVkaWFRVC52c3Byb3BzOyQoV2ViS2l0VlNQcm9wc1JlZGly
ZWN0aW9uRGlyKS4uXC4uXFdlYktpdExpYnJhcmllc1x3aW5cdG9vbHNcdnNwcm9wc1xkZWJ1Z19h
bGwudnNwcm9wczsuXFdlYkNvcmVRdWFydHpDb3JlLnZzcHJvcHMiCisJCQlJbmhlcml0ZWRQcm9w
ZXJ0eVNoZWV0cz0iLi5cLi5cV2ViS2l0TGlicmFyaWVzXHdpblx0b29sc1x2c3Byb3BzXEZlYXR1
cmVEZWZpbmVzLnZzcHJvcHM7Li5cLi5cV2ViS2l0TGlicmFyaWVzXHdpblx0b29sc1x2c3Byb3Bz
XGNvbW1vbi52c3Byb3BzOy4uXC4uXFdlYktpdExpYnJhcmllc1x3aW5cdG9vbHNcdnNwcm9wc1xk
ZWJ1Zy52c3Byb3BzOy5cV2ViQ29yZUNvbW1vbi52c3Byb3BzOy5cV2ViQ29yZUNHLnZzcHJvcHM7
LlxXZWJDb3JlQ0ZOZXR3b3JrLnZzcHJvcHM7LlxXZWJDb3JlUHRocmVhZHMudnNwcm9wczsuXFdl
YkNvcmVNZWRpYVFULnZzcHJvcHM7Li5cLi5cV2ViS2l0TGlicmFyaWVzXHdpblx0b29sc1x2c3By
b3BzXGRlYnVnX2FsbC52c3Byb3BzOy5cV2ViQ29yZVF1YXJ0ekNvcmUudnNwcm9wcyIKIAkJCUNo
YXJhY3RlclNldD0iMSIKIAkJCT4KIAkJCTxUb29sCkBAIC0yODgsNyArMjg4LDcgQEAKIAkJPENv
bmZpZ3VyYXRpb24KIAkJCU5hbWU9IlJlbGVhc2VfTFRDR3xXaW4zMiIKIAkJCUNvbmZpZ3VyYXRp
b25UeXBlPSI0IgotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9IiQoV2ViS2l0VlNQcm9wc1Jl
ZGlyZWN0aW9uRGlyKS4uXC4uXFdlYktpdExpYnJhcmllc1x3aW5cdG9vbHNcdnNwcm9wc1xGZWF0
dXJlRGVmaW5lcy52c3Byb3BzOyQoV2ViS2l0VlNQcm9wc1JlZGlyZWN0aW9uRGlyKS4uXC4uXFdl
YktpdExpYnJhcmllc1x3aW5cdG9vbHNcdnNwcm9wc1xjb21tb24udnNwcm9wczskKFdlYktpdFZT
UHJvcHNSZWRpcmVjdGlvbkRpcikuLlwuLlxXZWJLaXRMaWJyYXJpZXNcd2luXHRvb2xzXHZzcHJv
cHNccmVsZWFzZS52c3Byb3BzOy5cV2ViQ29yZUNvbW1vbi52c3Byb3BzOy5cV2ViQ29yZUNHLnZz
cHJvcHM7LlxXZWJDb3JlQ0ZOZXR3b3JrLnZzcHJvcHM7LlxXZWJDb3JlUHRocmVhZHMudnNwcm9w
czsuXFdlYkNvcmVNZWRpYVFULnZzcHJvcHM7LlxXZWJDb3JlUXVhcnR6Q29yZS52c3Byb3BzIgor
CQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii4uXC4uXFdlYktpdExpYnJhcmllc1x3aW5cdG9v
bHNcdnNwcm9wc1xGZWF0dXJlRGVmaW5lcy52c3Byb3BzOy4uXC4uXFdlYktpdExpYnJhcmllc1x3
aW5cdG9vbHNcdnNwcm9wc1xjb21tb24udnNwcm9wczsuLlwuLlxXZWJLaXRMaWJyYXJpZXNcd2lu
XHRvb2xzXHZzcHJvcHNccmVsZWFzZS52c3Byb3BzOy5cV2ViQ29yZUNvbW1vbi52c3Byb3BzOy5c
V2ViQ29yZUNHLnZzcHJvcHM7LlxXZWJDb3JlQ0ZOZXR3b3JrLnZzcHJvcHM7LlxXZWJDb3JlUHRo
cmVhZHMudnNwcm9wczsuXFdlYkNvcmVNZWRpYVFULnZzcHJvcHM7LlxXZWJDb3JlUXVhcnR6Q29y
ZS52c3Byb3BzIgogCQkJQ2hhcmFjdGVyU2V0PSIxIgogCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0
aW9uPSIxIgogCQkJPgpAQCAtMjQ3OTAsMTAgKzI0NzkwLDYgQEAKIAkJCU5hbWU9ImxvYWRlciIK
IAkJCT4KIAkJCTxGaWxlCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxsb2FkZXJcUmVzb3VyY2VMb2Fk
U2NoZWR1bGVyLmgiCi0JCQkJPgotCQkJPC9GaWxlPgotCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXGxvYWRlclxDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuY3BwIgogCQkJCT4KIAkJCTwv
RmlsZT4KQEAgLTI1MDIyLDYgKzI1MDE4LDEwIEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZp
bGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGxvYWRlclxSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaCIK
KwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cbG9hZGVy
XFNpbmtEb2N1bWVudC5jcHAiCiAJCQkJPgogCQkJPC9GaWxlPgpAQCAtMjUzNjksNyArMjUzNjks
NyBAQAogCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cQ29udGVudFR5cGUuaCIKIAkJCQk+
CiAJCQk8L0ZpbGU+Ci0gICAgICAgICAgICA8RmlsZQorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXHBsYXRmb3JtXENvbnRleHRNZW51LmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CkBAIC0y
NTM3Nyw3ICsyNTM3Nyw3IEBACiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxDb250ZXh0
TWVudS5oIgogCQkJCT4KIAkJCTwvRmlsZT4KLSAgICAgICAgICAgIDxGaWxlCisJCQk8RmlsZQog
CQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cQ29udGV4dE1lbnVJdGVtLmNwcCIKIAkJCQk+
CiAJCQk8L0ZpbGU+CkBAIC0yNjk5Niw0NiArMjY5OTYsNiBAQAogCQkJCQkJPgogCQkJCQk8L0Zp
bGU+CiAJCQkJCTxGaWxlCi0JCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNz
XHdpblxHcmFwaGljc0xheWVyQ0FDRi5jcHAiCi0JCQkJCQk+Ci0JCQkJCQk8RmlsZUNvbmZpZ3Vy
YXRpb24KLQkJCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb19DRkxpdGV8V2luMzIiCi0JCQkJCQkJRXhj
bHVkZWRGcm9tQnVpbGQ9InRydWUiCi0JCQkJCQkJPgotCQkJCQkJCTxUb29sCi0JCQkJCQkJCU5h
bWU9IlZDQ0xDb21waWxlclRvb2wiCi0JCQkJCQkJLz4KLQkJCQkJCTwvRmlsZUNvbmZpZ3VyYXRp
b24+Ci0JCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KLQkJCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJv
X0NGTGl0ZXxXaW4zMiIKLQkJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKLQkJCQkJCQk+
Ci0JCQkJCQkJPFRvb2wKLQkJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJCQkJCQkv
PgotCQkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KLQkJCQkJPC9GaWxlPgotCQkJCQk8RmlsZQot
CQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGljc1x3aW5cR3JhcGhpY3NMYXll
ckNBQ0YuaCIKLQkJCQkJCT4KLQkJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgotCQkJCQkJCU5hbWU9
IkRlYnVnX0NhaXJvX0NGTGl0ZXxXaW4zMiIKLQkJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1
ZSIKLQkJCQkJCQk+Ci0JCQkJCQkJPFRvb2wKLQkJCQkJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRv
b2wiCi0JCQkJCQkJLz4KLQkJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+Ci0JCQkJCQk8RmlsZUNv
bmZpZ3VyYXRpb24KLQkJCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvX0NGTGl0ZXxXaW4zMiIKLQkJ
CQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKLQkJCQkJCQk+Ci0JCQkJCQkJPFRvb2wKLQkJ
CQkJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCi0JCQkJCQkJLz4KLQkJCQkJCTwvRmlsZUNv
bmZpZ3VyYXRpb24+Ci0JCQkJCTwvRmlsZT4KLQkJCQkJPEZpbGUKIAkJCQkJCVJlbGF0aXZlUGF0
aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3Ncd2luXEljb25XaW4uY3BwIgogCQkJCQkJPgogCQkJCQk8
L0ZpbGU+CkBAIC0yNzMyOCw4NiArMjcyODgsNiBAQAogCQkJCQkJPgogCQkJCQk8L0ZpbGU+CiAJ
CQkJCTxGaWxlCi0JCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXHdpblxX
ZWJMYXllci5jcHAiCi0JCQkJCQk+Ci0JCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KLQkJCQkJCQlO
YW1lPSJEZWJ1Z19DYWlyb19DRkxpdGV8V2luMzIiCi0JCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9
InRydWUiCi0JCQkJCQkJPgotCQkJCQkJCTxUb29sCi0JCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxl
clRvb2wiCi0JCQkJCQkJLz4KLQkJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+Ci0JCQkJCQk8Rmls
ZUNvbmZpZ3VyYXRpb24KLQkJCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvX0NGTGl0ZXxXaW4zMiIK
LQkJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKLQkJCQkJCQk+Ci0JCQkJCQkJPFRvb2wK
LQkJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJCQkJCQkvPgotCQkJCQkJPC9GaWxl
Q29uZmlndXJhdGlvbj4KLQkJCQkJPC9GaWxlPgotCQkJCQk8RmlsZQotCQkJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxwbGF0Zm9ybVxncmFwaGljc1x3aW5cV2ViTGF5ZXIuaCIKLQkJCQkJCT4KLQkJCQkJ
CTxGaWxlQ29uZmlndXJhdGlvbgotCQkJCQkJCU5hbWU9IkRlYnVnX0NhaXJvX0NGTGl0ZXxXaW4z
MiIKLQkJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKLQkJCQkJCQk+Ci0JCQkJCQkJPFRv
b2wKLQkJCQkJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCi0JCQkJCQkJLz4KLQkJCQkJCTwv
RmlsZUNvbmZpZ3VyYXRpb24+Ci0JCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KLQkJCQkJCQlOYW1l
PSJSZWxlYXNlX0NhaXJvX0NGTGl0ZXxXaW4zMiIKLQkJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0i
dHJ1ZSIKLQkJCQkJCQk+Ci0JCQkJCQkJPFRvb2wKLQkJCQkJCQkJTmFtZT0iVkNDdXN0b21CdWls
ZFRvb2wiCi0JCQkJCQkJLz4KLQkJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+Ci0JCQkJCTwvRmls
ZT4KLQkJCQkJPEZpbGUKLQkJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3Nc
d2luXFdlYlRpbGVkTGF5ZXIuY3BwIgotCQkJCQkJPgotCQkJCQkJPEZpbGVDb25maWd1cmF0aW9u
Ci0JCQkJCQkJTmFtZT0iRGVidWdfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgotCQkJCQkJCUV4Y2x1ZGVk
RnJvbUJ1aWxkPSJ0cnVlIgotCQkJCQkJCT4KLQkJCQkJCQk8VG9vbAotCQkJCQkJCQlOYW1lPSJW
Q0NMQ29tcGlsZXJUb29sIgotCQkJCQkJCS8+Ci0JCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgot
CQkJCQkJPEZpbGVDb25maWd1cmF0aW9uCi0JCQkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb19DRkxp
dGV8V2luMzIiCi0JCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCi0JCQkJCQkJPgotCQkJ
CQkJCTxUb29sCi0JCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCi0JCQkJCQkJLz4KLQkJ
CQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+Ci0JCQkJCTwvRmlsZT4KLQkJCQkJPEZpbGUKLQkJCQkJ
CVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3Ncd2luXFdlYlRpbGVkTGF5ZXIuaCIK
LQkJCQkJCT4KLQkJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgotCQkJCQkJCU5hbWU9IkRlYnVnX0Nh
aXJvX0NGTGl0ZXxXaW4zMiIKLQkJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKLQkJCQkJ
CQk+Ci0JCQkJCQkJPFRvb2wKLQkJCQkJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCi0JCQkJ
CQkJLz4KLQkJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+Ci0JCQkJCQk8RmlsZUNvbmZpZ3VyYXRp
b24KLQkJCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvX0NGTGl0ZXxXaW4zMiIKLQkJCQkJCQlFeGNs
dWRlZEZyb21CdWlsZD0idHJ1ZSIKLQkJCQkJCQk+Ci0JCQkJCQkJPFRvb2wKLQkJCQkJCQkJTmFt
ZT0iVkNDdXN0b21CdWlsZFRvb2wiCi0JCQkJCQkJLz4KLQkJCQkJCTwvRmlsZUNvbmZpZ3VyYXRp
b24+Ci0JCQkJCTwvRmlsZT4KLQkJCQkJPEZpbGUKIAkJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxh
dGZvcm1cZ3JhcGhpY3Ncd2luXFdLQ0FDRkNvbnRleHRGbHVzaGVyLmNwcCIKIAkJCQkJCT4KIAkJ
CQkJCTxGaWxlQ29uZmlndXJhdGlvbgpAQCAtMjc0NDgsNDYgKzI3MzI4LDYgQEAKIAkJCQkJCTwv
RmlsZUNvbmZpZ3VyYXRpb24+CiAJCQkJCTwvRmlsZT4KIAkJCQkJPEZpbGUKLQkJCQkJCVJlbGF0
aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3Ncd2luXFdLQ0FDRkxheWVyLmNwcCIKLQkJCQkJ
CT4KLQkJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgotCQkJCQkJCU5hbWU9IkRlYnVnX0NhaXJvX0NG
TGl0ZXxXaW4zMiIKLQkJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKLQkJCQkJCQk+Ci0J
CQkJCQkJPFRvb2wKLQkJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJCQkJCQkvPgot
CQkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KLQkJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgotCQkJ
CQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgotCQkJCQkJCUV4Y2x1ZGVkRnJv
bUJ1aWxkPSJ0cnVlIgotCQkJCQkJCT4KLQkJCQkJCQk8VG9vbAotCQkJCQkJCQlOYW1lPSJWQ0NM
Q29tcGlsZXJUb29sIgotCQkJCQkJCS8+Ci0JCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgotCQkJ
CQk8L0ZpbGU+Ci0JCQkJCTxGaWxlCi0JCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdy
YXBoaWNzXHdpblxXS0NBQ0ZMYXllci5oIgotCQkJCQkJPgotCQkJCQkJPEZpbGVDb25maWd1cmF0
aW9uCi0JCQkJCQkJTmFtZT0iRGVidWdfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgotCQkJCQkJCUV4Y2x1
ZGVkRnJvbUJ1aWxkPSJ0cnVlIgotCQkJCQkJCT4KLQkJCQkJCQk8VG9vbAotCQkJCQkJCQlOYW1l
PSJWQ0N1c3RvbUJ1aWxkVG9vbCIKLQkJCQkJCQkvPgotCQkJCQkJPC9GaWxlQ29uZmlndXJhdGlv
bj4KLQkJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgotCQkJCQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm9f
Q0ZMaXRlfFdpbjMyIgotCQkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgotCQkJCQkJCT4K
LQkJCQkJCQk8VG9vbAotCQkJCQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKLQkJCQkJCQkv
PgotCQkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KLQkJCQkJPC9GaWxlPgotCQkJCQk8RmlsZQog
CQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGljc1x3aW5cV0tDQUNGTGF5ZXJS
ZW5kZXJlci5jcHAiCiAJCQkJCQk+CiAJCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KQEAgLTI4OTU2
LDYgKzI4Nzk2LDU0IEBACiAJCQkJCQk+CiAJCQkJCTwvRmlsZT4KIAkJCQk8L0ZpbHRlcj4KKwkJ
CQk8RmlsdGVyCisJCQkJCU5hbWU9ImNhIgorCQkJCQk+CisJCQkJCTxGaWxlCisJCQkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGNhXEdyYXBoaWNzTGF5ZXJDQS5jcHAiCisJ
CQkJCQk+CisJCQkJCTwvRmlsZT4KKwkJCQkJPEZpbGUKKwkJCQkJCVJlbGF0aXZlUGF0aD0iLi5c
cGxhdGZvcm1cZ3JhcGhpY3NcY2FcR3JhcGhpY3NMYXllckNBLmgiCisJCQkJCQk+CisJCQkJCTwv
RmlsZT4KKwkJCQkJPEZpbGUKKwkJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhp
Y3NcY2FcUGxhdGZvcm1DQUFuaW1hdGlvbi5oIgorCQkJCQkJPgorCQkJCQk8L0ZpbGU+CisJCQkJ
CTxGaWxlCisJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGNhXFBsYXRm
b3JtQ0FMYXllci5oIgorCQkJCQkJPgorCQkJCQk8L0ZpbGU+CisJCQkJCTxGaWxlCisJCQkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGNhXFBsYXRmb3JtQ0FMYXllckNsaWVu
dC5oIgorCQkJCQkJPgorCQkJCQk8L0ZpbGU+CisJCQkJCTxGaWxlCisJCQkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGNhXFRyYW5zZm9ybWF0aW9uTWF0cml4Q0EuY3BwIgor
CQkJCQkJPgorCQkJCQk8L0ZpbGU+CisJCQkJCTxGaWx0ZXIKKwkJCQkJCU5hbWU9IndpbiIKKwkJ
CQkJCT4KKwkJCQkJCTxGaWxlCisJCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFw
aGljc1xjYVx3aW5cUGxhdGZvcm1DQUFuaW1hdGlvbldpbi5jcHAiCisJCQkJCQkJPgorCQkJCQkJ
PC9GaWxlPgorCQkJCQkJPEZpbGUKKwkJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdy
YXBoaWNzXGNhXHdpblxQbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwIgorCQkJCQkJCT4KKwkJCQkJCTwv
RmlsZT4KKwkJCQkJCTxGaWxlCisJCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFw
aGljc1xjYVx3aW5cUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWwuY3BwIgorCQkJCQkJCT4KKwkJ
CQkJCTwvRmlsZT4KKwkJCQkJCTxGaWxlCisJCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9y
bVxncmFwaGljc1xjYVx3aW5cUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWwuaCIKKwkJCQkJCQk+
CisJCQkJCQk8L0ZpbGU+CisJCQkJCTwvRmlsdGVyPgorCQkJCTwvRmlsdGVyPgogCQkJPC9GaWx0
ZXI+CiAJCQk8RmlsdGVyCiAJCQkJTmFtZT0ibmV0d29yayIKQEAgLTQzNjU0LDcgKzQzNTQyLDcg
QEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9t
XEV2ZW50VGFyZ2V0LmNwcCIKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGRvbVxFdmVudFF1ZXVlLmNw
cCIKIAkJCQk+CiAJCQkJPEZpbGVDb25maWd1cmF0aW9uCiAJCQkJCU5hbWU9IkRlYnVnfFdpbjMy
IgpAQCAtNDM2NzMsNyArNDM1NjEsNyBAQAogCQkJCQkvPgogCQkJCTwvRmlsZUNvbmZpZ3VyYXRp
b24+CiAJCQkJPEZpbGVDb25maWd1cmF0aW9uCi0JCQkJCU5hbWU9IkRlYnVnX0NhaXJvX0NGTGl0
ZXxXaW4zMiIKKwkJCQkJTmFtZT0iRGVidWdfQWxsfFdpbjMyIgogCQkJCQlFeGNsdWRlZEZyb21C
dWlsZD0idHJ1ZSIKIAkJCQkJPgogCQkJCQk8VG9vbApAQCAtNDM2ODEsNyArNDM1NjksNyBAQAog
CQkJCQkvPgogCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CiAJCQkJPEZpbGVDb25maWd1cmF0aW9u
Ci0JCQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQlOYW1lPSJEZWJ1
Z19JbnRlcm5hbHxXaW4zMiIKIAkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCiAJCQkJCT4K
IAkJCQkJPFRvb2wKQEAgLTQzNjg5LDcgKzQzNTc3LDcgQEAKIAkJCQkJLz4KIAkJCQk8L0ZpbGVD
b25maWd1cmF0aW9uPgogCQkJCTxGaWxlQ29uZmlndXJhdGlvbgotCQkJCQlOYW1lPSJEZWJ1Z19B
bGx8V2luMzIiCisJCQkJCU5hbWU9IkRlYnVnX0NhaXJvfFdpbjMyIgogCQkJCQlFeGNsdWRlZEZy
b21CdWlsZD0idHJ1ZSIKIAkJCQkJPgogCQkJCQk8VG9vbApAQCAtNDM2OTcsNyArNDM1ODUsNyBA
QAogCQkJCQkvPgogCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CiAJCQkJPEZpbGVDb25maWd1cmF0
aW9uCi0JCQkJCU5hbWU9IlJlbGVhc2VfTFRDR3xXaW4zMiIKKwkJCQkJTmFtZT0iUmVsZWFzZV9D
YWlyb3xXaW4zMiIKIAkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCiAJCQkJCT4KIAkJCQkJ
PFRvb2wKQEAgLTQzNzA2LDExICs0MzU5NCwxMSBAQAogCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+
CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXEV2ZW50VGFy
Z2V0LmgiCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cRXZlbnRRdWV1ZS5oIgogCQkJCT4KIAkJ
CTwvRmlsZT4KLQkJICA8RmlsZQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXEV2ZW50UXVldWUu
Y3BwIgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGRvbVxFdmVudFRhcmdldC5jcHAi
CiAJCQkJPgogCQkJCTxGaWxlQ29uZmlndXJhdGlvbgogCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIK
QEAgLTQzNzI5LDcgKzQzNjE3LDcgQEAKIAkJCQkJLz4KIAkJCQk8L0ZpbGVDb25maWd1cmF0aW9u
PgogCQkJCTxGaWxlQ29uZmlndXJhdGlvbgotCQkJCQlOYW1lPSJEZWJ1Z19JbnRlcm5hbHxXaW4z
MiIKKwkJCQkJTmFtZT0iRGVidWdfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgogCQkJCQlFeGNsdWRlZEZy
b21CdWlsZD0idHJ1ZSIKIAkJCQkJPgogCQkJCQk8VG9vbApAQCAtNDM3MzcsNyArNDM2MjUsNyBA
QAogCQkJCQkvPgogCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CiAJCQkJPEZpbGVDb25maWd1cmF0
aW9uCi0JCQkJCU5hbWU9IkRlYnVnX0NhaXJvfFdpbjMyIgorCQkJCQlOYW1lPSJSZWxlYXNlX0Nh
aXJvX0NGTGl0ZXxXaW4zMiIKIAkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCiAJCQkJCT4K
IAkJCQkJPFRvb2wKQEAgLTQzNzQ1LDcgKzQzNjMzLDcgQEAKIAkJCQkJLz4KIAkJCQk8L0ZpbGVD
b25maWd1cmF0aW9uPgogCQkJCTxGaWxlQ29uZmlndXJhdGlvbgotCQkJCQlOYW1lPSJSZWxlYXNl
X0NhaXJvfFdpbjMyIgorCQkJCQlOYW1lPSJEZWJ1Z19BbGx8V2luMzIiCiAJCQkJCUV4Y2x1ZGVk
RnJvbUJ1aWxkPSJ0cnVlIgogCQkJCQk+CiAJCQkJCTxUb29sCkBAIC00Mzc1Myw3ICs0MzY0MSw3
IEBACiAJCQkJCS8+CiAJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KIAkJCQk8RmlsZUNvbmZpZ3Vy
YXRpb24KLQkJCQkJTmFtZT0iRGVidWdfQWxsfFdpbjMyIgorCQkJCQlOYW1lPSJSZWxlYXNlX0xU
Q0d8V2luMzIiCiAJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgogCQkJCQk+CiAJCQkJCTxU
b29sCkBAIC00Mzc2Miw3ICs0MzY1MCw3IEBACiAJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KIAkJ
CTwvRmlsZT4KIAkJCTxGaWxlCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cRXZlbnRRdWV1ZS5o
IgorCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXEV2ZW50VGFyZ2V0LmgiCiAJCQkJPgogCQkJPC9G
aWxlPgogCQkJPEZpbGUKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovY29weUZvcndhcmRp
bmdIZWFkZXJzLmNtZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL2NvcHlG
b3J3YXJkaW5nSGVhZGVycy5jbWQJKHJldmlzaW9uIDc1MjEzKQorKysgV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9jb3B5Rm9yd2FyZGluZ0hlYWRlcnMuY21kCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2
ICszOCw3IEBACiB4Y29weSAveSAvZCAiJVByb2plY3REaXIlLi5ccGxhdGZvcm1cZ3JhcGhpY3Nc
Ki5oIiAiJUNPTkZJR1VSQVRJT05CVUlMRERJUiVcaW5jbHVkZVxXZWJDb3JlIgogeGNvcHkgL3kg
L2QgIiVQcm9qZWN0RGlyJS4uXHBsYXRmb3JtXGdyYXBoaWNzXCUxXCouaCIgIiVDT05GSUdVUkFU
SU9OQlVJTERESVIlXGluY2x1ZGVcV2ViQ29yZSIKIHhjb3B5IC95IC9kICIlUHJvamVjdERpciUu
LlxwbGF0Zm9ybVxncmFwaGljc1x0cmFuc2Zvcm1zXCouaCIgIiVDT05GSUdVUkFUSU9OQlVJTERE
SVIlXGluY2x1ZGVcV2ViQ29yZSIKK3hjb3B5IC95IC9kICIlUHJvamVjdERpciUuLlxwbGF0Zm9y
bVxncmFwaGljc1xjYVwqLmgiICIlQ09ORklHVVJBVElPTkJVSUxERElSJVxpbmNsdWRlXFdlYkNv
cmUiCiB4Y29weSAveSAvZCAiJVByb2plY3REaXIlLi5ccGxhdGZvcm1cZ3JhcGhpY3Ncd2luXCou
aCIgIiVDT05GSUdVUkFUSU9OQlVJTERESVIlXGluY2x1ZGVcV2ViQ29yZSIKIHhjb3B5IC95IC9k
ICIlUHJvamVjdERpciUuLlxwbGF0Zm9ybVxncmFwaGljc1x3aW5cJTFcKi5oIiAiJUNPTkZJR1VS
QVRJT05CVUlMRERJUiVcaW5jbHVkZVxXZWJDb3JlIgogeGNvcHkgL3kgL2QgIiVQcm9qZWN0RGly
JS4uXHBsYXRmb3JtXGdyYXBoaWNzXG9wZW50eXBlXCouaCIgIiVDT05GSUdVUkFUSU9OQlVJTERE
SVIlXGluY2x1ZGVcV2ViQ29yZSIKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZUNvbW1vbi52c3Byb3BzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZUNvbW1vbi52c3Byb3BzCShyZXZpc2lvbiA3NTIxMykKKysrIFdlYkNvcmUvV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZUNvbW1vbi52c3Byb3BzCSh3b3JraW5nIGNvcHkpCkBAIC03LDcgKzcsNyBA
QAogCT4KIAk8VG9vbAogCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgotCQlBZGRpdGlvbmFsSW5j
bHVkZURpcmVjdG9yaWVzPSImcXVvdDskKFByb2plY3REaXIpLi4mcXVvdDs7JnF1b3Q7JChQcm9q
ZWN0RGlyKS4uXGFjY2Vzc2liaWxpdHkmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGFjY2Vz
c2liaWxpdHlcd2luJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxicmlkZ2UmcXVvdDs7JnF1
b3Q7JChQcm9qZWN0RGlyKS4uXGJyaWRnZVxjJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxi
cmlkZ2VcanNjJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxjc3MmcXVvdDs7JnF1b3Q7JChQ
cm9qZWN0RGlyKS4uXGVkaXRpbmcmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGZpbGVhcGkm
cXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHJlbmRlcmluZyZxdW90OzsmcXVvdDskKFByb2pl
Y3REaXIpLi5ccmVuZGVyaW5nXHN0eWxlJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxyZW5k
ZXJpbmdcc3ZnJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxiaW5kaW5ncyZxdW90OzsmcXVv
dDskKFByb2plY3REaXIpLi5cYmluZGluZ3NcZ2VuZXJpYyZxdW90OzsmcXVvdDskKFByb2plY3RE
aXIpLi5cYmluZGluZ3NcanMmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGJpbmRpbmdzXGpz
XHNwZWNpYWxpemF0aW9uJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxkb20mcXVvdDs7JnF1
b3Q7JChQcm9qZWN0RGlyKS4uXGRvbVxkZWZhdWx0JnF1b3Q7OyZxdW90OyQoUHJvamVjdERpciku
LlxoaXN0b3J5JnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxodG1sJnF1b3Q7OyZxdW90OyQo
UHJvamVjdERpcikuLlxodG1sXGNhbnZhcyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5caHRt
bFxwYXJzZXImcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGh0bWxcc2hhZG93JnF1b3Q7OyZx
dW90OyQoUHJvamVjdERpcikuLlxpbnNwZWN0b3ImcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4u
XGxvYWRlciZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cbG9hZGVyXGFwcGNhY2hlJnF1b3Q7
OyZxdW90OyQoUHJvamVjdERpcikuLlxsb2FkZXJcYXJjaGl2ZSZxdW90OzsmcXVvdDskKFByb2pl
Y3REaXIpLi5cbG9hZGVyXGFyY2hpdmVcY2YmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGxv
YWRlclxjYWNoZSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cbG9hZGVyXGljb24mcXVvdDs7
JnF1b3Q7JChQcm9qZWN0RGlyKS4uXG1hdGhtbCZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5c
bm90aWZpY2F0aW9ucyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGFnZSZxdW90OzsmcXVv
dDskKFByb2plY3REaXIpLi5ccGFnZVxhbmltYXRpb24mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGly
KS4uXHBhZ2Vcd2luJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybSZxdW90Ozsm
cXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cYW5pbWF0aW9uJnF1b3Q7OyZxdW90OyQoUHJv
amVjdERpcikuLlxwbGF0Zm9ybVxtb2NrJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0
Zm9ybVxzcWwmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXHdpbiZxdW90Ozsm
cXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cbmV0d29yayZxdW90OzsmcXVvdDskKFByb2pl
Y3REaXIpLi5ccGxhdGZvcm1cbmV0d29ya1x3aW4mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4u
XHBsYXRmb3JtXGNmJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGlj
cyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3NcZmlsdGVycyZx
dW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3Ncb3BlbnR5cGUmcXVv
dDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXHRyYW5zZm9ybXMmcXVv
dDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXHRleHQmcXVvdDs7JnF1b3Q7JChQcm9q
ZWN0RGlyKS4uXHBsYXRmb3JtXHRleHRcdHJhbnNjb2RlciZxdW90OzsmcXVvdDskKFByb2plY3RE
aXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3Ncd2luJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlx4
bWwmcXVvdDs7JnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9ialxXZWJDb3JlXERlcml2
ZWRTb3VyY2VzJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbHVnaW5zJnF1b3Q7OyZxdW90
OyQoUHJvamVjdERpcikuLlxwbHVnaW5zXHdpbiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5c
c3ZnXGFuaW1hdGlvbiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cc3ZnXGdyYXBoaWNzJnF1
b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxzdmdccHJvcGVydGllcyZxdW90OzsmcXVvdDskKFBy
b2plY3REaXIpLi5cc3ZnXGdyYXBoaWNzXGZpbHRlcnMmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGly
KS4uXHN2ZyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cd21sJnF1b3Q7OyZxdW90OyQoUHJv
amVjdERpcikuLlxzdG9yYWdlJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlx3ZWJzb2NrZXRz
JnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlx3b3JrZXJzJnF1b3Q7OyZxdW90OyQoQ29uZmln
dXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlJnF1b3Q7OyZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxk
RGlyKVxpbmNsdWRlXHByaXZhdGUmcXVvdDs7JnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGREaXIp
XGluY2x1ZGVcSmF2YVNjcmlwdENvcmUmcXVvdDs7JnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGRE
aXIpXGluY2x1ZGVccHJpdmF0ZVxKYXZhU2NyaXB0Q29yZSZxdW90OzsmcXVvdDskKFByb2plY3RE
aXIpLi5cRm9yd2FyZGluZ0hlYWRlcnMmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIp
XGluY2x1ZGUmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGVccHJpdmF0
ZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVkZVxwcml2YXRlXEphdmFT
Y3JpcHRDb3JlJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlXHB0aHJl
YWRzJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlXHNxbGl0ZSZxdW90
OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVkZVxKYXZhU2NyaXB0Q29yZSZxdW90
OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVkZVx6bGliJnF1b3Q7IgorCQlBZGRp
dGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSImcXVvdDskKFByb2plY3REaXIpLi4mcXVvdDs7JnF1
b3Q7JChQcm9qZWN0RGlyKS4uXGFjY2Vzc2liaWxpdHkmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGly
KS4uXGFjY2Vzc2liaWxpdHlcd2luJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxicmlkZ2Um
cXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGJyaWRnZVxjJnF1b3Q7OyZxdW90OyQoUHJvamVj
dERpcikuLlxicmlkZ2VcanNjJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxjc3MmcXVvdDs7
JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGVkaXRpbmcmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4u
XGZpbGVhcGkmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHJlbmRlcmluZyZxdW90OzsmcXVv
dDskKFByb2plY3REaXIpLi5ccmVuZGVyaW5nXHN0eWxlJnF1b3Q7OyZxdW90OyQoUHJvamVjdERp
cikuLlxyZW5kZXJpbmdcc3ZnJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxiaW5kaW5ncyZx
dW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cYmluZGluZ3NcZ2VuZXJpYyZxdW90OzsmcXVvdDsk
KFByb2plY3REaXIpLi5cYmluZGluZ3NcanMmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGJp
bmRpbmdzXGpzXHNwZWNpYWxpemF0aW9uJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxkb20m
cXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGRvbVxkZWZhdWx0JnF1b3Q7OyZxdW90OyQoUHJv
amVjdERpcikuLlxoaXN0b3J5JnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxodG1sJnF1b3Q7
OyZxdW90OyQoUHJvamVjdERpcikuLlxodG1sXGNhbnZhcyZxdW90OzsmcXVvdDskKFByb2plY3RE
aXIpLi5caHRtbFxwYXJzZXImcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGh0bWxcc2hhZG93
JnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxpbnNwZWN0b3ImcXVvdDs7JnF1b3Q7JChQcm9q
ZWN0RGlyKS4uXGxvYWRlciZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cbG9hZGVyXGFwcGNh
Y2hlJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxsb2FkZXJcYXJjaGl2ZSZxdW90OzsmcXVv
dDskKFByb2plY3REaXIpLi5cbG9hZGVyXGFyY2hpdmVcY2YmcXVvdDs7JnF1b3Q7JChQcm9qZWN0
RGlyKS4uXGxvYWRlclxjYWNoZSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cbG9hZGVyXGlj
b24mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXG1hdGhtbCZxdW90OzsmcXVvdDskKFByb2pl
Y3REaXIpLi5cbm90aWZpY2F0aW9ucyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGFnZSZx
dW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGFnZVxhbmltYXRpb24mcXVvdDs7JnF1b3Q7JChQ
cm9qZWN0RGlyKS4uXHBhZ2Vcd2luJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9y
bSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cYW5pbWF0aW9uJnF1b3Q7OyZx
dW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxtb2NrJnF1b3Q7OyZxdW90OyQoUHJvamVjdERp
cikuLlxwbGF0Zm9ybVxzcWwmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXHdp
biZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cbmV0d29yayZxdW90OzsmcXVv
dDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cbmV0d29ya1x3aW4mcXVvdDs7JnF1b3Q7JChQcm9q
ZWN0RGlyKS4uXHBsYXRmb3JtXGNmJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9y
bVxncmFwaGljcyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3Nc
Y2EmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXGZpbHRlcnMm
cXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXG9wZW50eXBlJnF1
b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGljc1x0cmFuc2Zvcm1zJnF1
b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVx0ZXh0JnF1b3Q7OyZxdW90OyQoUHJv
amVjdERpcikuLlxwbGF0Zm9ybVx0ZXh0XHRyYW5zY29kZXImcXVvdDs7JnF1b3Q7JChQcm9qZWN0
RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXHdpbiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5c
eG1sJnF1b3Q7OyZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmpcV2ViQ29yZVxEZXJp
dmVkU291cmNlcyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGx1Z2lucyZxdW90OzsmcXVv
dDskKFByb2plY3REaXIpLi5ccGx1Z2luc1x3aW4mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4u
XHN2Z1xhbmltYXRpb24mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHN2Z1xncmFwaGljcyZx
dW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cc3ZnXHByb3BlcnRpZXMmcXVvdDs7JnF1b3Q7JChQ
cm9qZWN0RGlyKS4uXHN2Z1xncmFwaGljc1xmaWx0ZXJzJnF1b3Q7OyZxdW90OyQoUHJvamVjdERp
cikuLlxzdmcmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHdtbCZxdW90OzsmcXVvdDskKFBy
b2plY3REaXIpLi5cc3RvcmFnZSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cd2Vic29ja2V0
cyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cd29ya2VycyZxdW90OzsmcXVvdDskKENvbmZp
Z3VyYXRpb25CdWlsZERpcilcaW5jbHVkZSZxdW90OzsmcXVvdDskKENvbmZpZ3VyYXRpb25CdWls
ZERpcilcaW5jbHVkZVxwcml2YXRlJnF1b3Q7OyZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGly
KVxpbmNsdWRlXEphdmFTY3JpcHRDb3JlJnF1b3Q7OyZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxk
RGlyKVxpbmNsdWRlXHByaXZhdGVcSmF2YVNjcmlwdENvcmUmcXVvdDs7JnF1b3Q7JChQcm9qZWN0
RGlyKS4uXEZvcndhcmRpbmdIZWFkZXJzJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGly
KVxpbmNsdWRlJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlXHByaXZh
dGUmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGVccHJpdmF0ZVxKYXZh
U2NyaXB0Q29yZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVkZVxwdGhy
ZWFkcyZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVkZVxzcWxpdGUmcXVv
dDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGVcSmF2YVNjcmlwdENvcmUmcXVv
dDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGVcemxpYiZxdW90OyIKIAkJUHJl
cHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9fV0lOMzJfXztESVNBQkxFXzNEX1JFTkRFUklORztXRUJD
T1JFX0NPTlRFWFRfTUVOVVMiCiAJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIyIgogCQlQcmVjb21w
aWxlZEhlYWRlclRocm91Z2g9IldlYkNvcmVQcmVmaXguaCIKSW5kZXg6IFdlYkNvcmUvcGFnZS9h
bmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9w
YWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyLmNwcAkocmV2aXNpb24gNzUyMTMpCisr
KyBXZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMTcsNiArMzE3LDcgQEAKIHsKICAgICBpZiAobV9iZWdpbkFuaW1hdGlvblVw
ZGF0ZVRpbWUgPT0gY0JlZ2luQW5pbWF0aW9uVXBkYXRlVGltZU5vdFNldCkKICAgICAgICAgbV9i
ZWdpbkFuaW1hdGlvblVwZGF0ZVRpbWUgPSBtX2ZyYW1lLT5jdXJyZW50QW5pbWF0aW9uVGltZSgp
OworCiAgICAgcmV0dXJuIG1fYmVnaW5BbmltYXRpb25VcGRhdGVUaW1lOwogfQogCkluZGV4OiBX
ZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0tleWZyYW1lQW5pbWF0aW9uLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0tleWZyYW1lQW5pbWF0aW9uLmNwcAkocmV2aXNpb24g
NzUyMTMpCisrKyBXZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0tleWZyYW1lQW5pbWF0aW9uLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzQsNyArNzQsMTEgQEAKIAogICAgIGRvdWJsZSBmcmFjdGlvbmFs
VGltZSA9IG1fYW5pbWF0aW9uLT5kdXJhdGlvbigpID8gKGVsYXBzZWRUaW1lIC8gbV9hbmltYXRp
b24tPmR1cmF0aW9uKCkpIDogMTsKIAotICAgIEFTU0VSVChmcmFjdGlvbmFsVGltZSA+PSAwKTsK
KyAgICAvLyBGSVhNRTogc3RhcnRUaW1lIGNhbiBiZSBiZWZvcmUgdGhlIGN1cnJlbnQgYW5pbWF0
aW9uICJmcmFtZSIgdGltZS4gVGhpcyBpcyB0byBzeW5jIHdpdGggdGhlIGZyYW1lIHRpbWUKKyAg
ICAvLyBjb25jZXB0IGluIEFuaW1hdGlvblRpbWVDb250cm9sbGVyLiBTbyB3ZSBuZWVkIHRvIHNv
bWVob3cgc3luYyB0aGUgdHdvLiBVbnRpbCB0aGVuLCB0aGUgcG9zc2libGUKKyAgICAvLyBlcnJv
ciBpcyBzbWFsbCBhbmQgd2lsbCBwcm9iYWJseSBub3QgYmUgbm90aWNlYWJsZS4gVW50aWwgd2Ug
Zml4IHRoaXMsIHJlbW92ZSB0aGUgYXNzZXJ0LgorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD01MjAzNworICAgIC8vIEFTU0VSVChmcmFjdGlvbmFsVGltZSA+
PSAwKTsKICAgICBpZiAoZnJhY3Rpb25hbFRpbWUgPCAwKQogICAgICAgICBmcmFjdGlvbmFsVGlt
ZSA9IDA7CiAKSW5kZXg6IFdlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcAko
cmV2aXNpb24gNzUyMTMpCisrKyBXZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzYyLDYgKzEzNjIsMTEgQEAKICAgCiB2b2lkIEFuaW1h
dGlvbkJhc2U6OmZyZWV6ZUF0VGltZShkb3VibGUgdCkKIHsKKyAgICBpZiAoIW1fc3RhcnRUaW1l
KSB7CisgICAgICAgIC8vIElmIHdlIGhhdmVuJ3Qgc3RhcnRlZCB5ZXQsIGp1c3QgZ2VuZXJhdGUg
dGhlIHN0YXJ0IGV2ZW50IG5vdworICAgICAgICBtX2NvbXBBbmltLT5hbmltYXRpb25Db250cm9s
bGVyKCktPnJlY2VpdmVkU3RhcnRUaW1lUmVzcG9uc2UoY3VycmVudFRpbWUoKSk7CisgICAgfQor
CiAgICAgQVNTRVJUKG1fc3RhcnRUaW1lKTsgICAgICAgIC8vIGlmIG1fc3RhcnRUaW1lIGlzIHpl
cm8sIHdlIGhhdmVuJ3Qgc3RhcnRlZCB5ZXQsIHNvIHdlJ2xsIGdldCBhIGJhZCBwYXVzZSB0aW1l
LgogICAgIG1fcGF1c2VUaW1lID0gbV9zdGFydFRpbWUgKyB0IC0gbV9hbmltYXRpb24tPmRlbGF5
KCk7CiAKQEAgLTEzODcsNiArMTM5Miw3IEBACiAgICAgICAgIHJldHVybiAwOwogICAgIGlmIChw
b3N0QWN0aXZlKCkpCiAgICAgICAgIHJldHVybiAxOworCiAgICAgcmV0dXJuIGJlZ2luQW5pbWF0
aW9uVXBkYXRlVGltZSgpIC0gbV9zdGFydFRpbWU7CiB9CiAgICAgCkluZGV4OiBXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxh
eWVyV2luSW50ZXJuYWwuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWwuY3BwCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDQ2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgVVNFKEFDQ0VMRVJB
VEVEX0NPTVBPU0lUSU5HKQorCisjaW5jbHVkZSAiUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWwu
aCIKKworI2luY2x1ZGUgIkZvbnQuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUNBTGF5ZXIuaCIKKyNp
bmNsdWRlIDxRdWFydHpDb3JlL0NBQ0ZMYXllci5oPgorCit1c2luZyBuYW1lc3BhY2Ugc3RkOwor
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKKy8vIFRoZSB3aWR0aCBhbmQgaGVpZ2h0IG9mIGEg
c2luZ2xlIHRpbGUgaW4gYSB0aWxlZCBsYXllci4gU2hvdWxkIGJlIGxhcmdlIGVub3VnaCB0bwor
Ly8gYXZvaWQgbG90cyBvZiBzbWFsbCB0aWxlcyAoYW5kIHRoZXJlZm9yZSBsb3RzIG9mIGRyYXdp
bmcgY2FsbGJhY2tzKSwgYnV0IHNtYWxsIGVub3VnaAorLy8gdG8ga2VlcCB0aGUgb3ZlcmFsbCB0
aWxlIGNvc3QgbG93Lgorc3RhdGljIGNvbnN0IGludCBjVGlsZWRMYXllclRpbGVTaXplID0gNTEy
OworCitQbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbDo6UGxhdGZvcm1DQUxheWVyV2luSW50ZXJu
YWwoUGxhdGZvcm1DQUxheWVyKiBvd25lcikKKyAgICA6IG1fdGlsZVNpemUoQ0dTaXplTWFrZShj
VGlsZWRMYXllclRpbGVTaXplLCBjVGlsZWRMYXllclRpbGVTaXplKSkKKyAgICAsIG1fY29uc3Ry
YWluZWRTaXplKGNvbnN0cmFpbmVkU2l6ZShvd25lci0+Ym91bmRzKCkuc2l6ZSgpKSkKKyAgICAs
IG1fb3duZXIob3duZXIpCit7CisgICAgaWYgKG1fb3duZXItPmxheWVyVHlwZSgpID09IFBsYXRm
b3JtQ0FMYXllcjo6TGF5ZXJUeXBlV2ViVGlsZWRMYXllcikgeworICAgICAgICAvLyBUaWxlZCBs
YXllcnMgYXJlIHBsYWNlZCBpbiBhIGNoaWxkIGxheWVyIHRoYXQgaXMgYWx3YXlzIHRoZSBmaXJz
dCBjaGlsZCBvZiB0aGUgVGlsZWRMYXllcgorICAgICAgICBtX3RpbGVQYXJlbnQuYWRvcHRDRihD
QUNGTGF5ZXJDcmVhdGUoa0NBQ0ZMYXllcikpOworICAgICAgICBDQUNGTGF5ZXJJbnNlcnRTdWJs
YXllcihtX293bmVyLT5wbGF0Zm9ybUxheWVyKCksIG1fdGlsZVBhcmVudC5nZXQoKSwgMCk7Cisg
ICAgICAgIHVwZGF0ZVRpbGVzKCk7CisgICAgfQorfQorCitQbGF0Zm9ybUNBTGF5ZXJXaW5JbnRl
cm5hbDo6flBsYXRmb3JtQ0FMYXllcldpbkludGVybmFsKCkKK3sKK30KKwordm9pZCBQbGF0Zm9y
bUNBTGF5ZXJXaW5JbnRlcm5hbDo6ZGlzcGxheUNhbGxiYWNrKENBQ0ZMYXllclJlZiBjYUxheWVy
LCBDR0NvbnRleHRSZWYgY29udGV4dCkKK3sKKyAgICBpZiAoIW93bmVyKCkgfHwgIW93bmVyKCkt
Pm93bmVyKCkpCisgICAgICAgIHJldHVybjsKKworICAgIENHQ29udGV4dFNhdmVHU3RhdGUoY29u
dGV4dCk7CisKKyAgICBDR1JlY3QgbGF5ZXJCb3VuZHMgPSBvd25lcigpLT5ib3VuZHMoKTsKKyAg
ICBpZiAob3duZXIoKS0+b3duZXIoKS0+cGxhdGZvcm1DQUxheWVyQ29udGVudHNPcmllbnRhdGlv
bigpID09IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNUb3BE
b3duKSB7CisgICAgICAgIENHQ29udGV4dFNjYWxlQ1RNKGNvbnRleHQsIDEsIC0xKTsKKyAgICAg
ICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKGNvbnRleHQsIDAsIC1sYXllckJvdW5kcy5zaXplLmhl
aWdodCk7CisgICAgfQorCisgICAgaWYgKG93bmVyKCktPm93bmVyKCkpIHsKKyAgICAgICAgR3Jh
cGhpY3NDb250ZXh0IGdyYXBoaWNzQ29udGV4dChjb250ZXh0KTsKKworICAgICAgICAvLyBJdCdz
IGltcG9ydGFudCB0byBnZXQgdGhlIGNsaXAgZnJvbSB0aGUgY29udGV4dCwgYmVjYXVzZSBpdCBt
YXkgYmUgc2lnbmlmaWNhbnRseQorICAgICAgICAvLyBzbWFsbGVyIHRoYW4gdGhlIGxheWVyIGJv
dW5kcyAoZS5nLiB0aWxlZCBsYXllcnMpCisgICAgICAgIENHUmVjdCBjbGlwQm91bmRzID0gQ0dD
b250ZXh0R2V0Q2xpcEJvdW5kaW5nQm94KGNvbnRleHQpOworICAgICAgICBJbnRSZWN0IGNsaXAo
ZW5jbG9zaW5nSW50UmVjdChjbGlwQm91bmRzKSk7CisgICAgICAgIG93bmVyKCktPm93bmVyKCkt
PnBsYXRmb3JtQ0FMYXllclBhaW50Q29udGVudHMoZ3JhcGhpY3NDb250ZXh0LCBjbGlwKTsKKyAg
ICB9CisjaWZuZGVmIE5ERUJVRworICAgIGVsc2UgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKworICAgICAgICAvLyBGSVhNRTogaWRlYWxseSB3ZSdkIGF2b2lkIGNhbGxpbmcgLXNl
dE5lZWRzRGlzcGxheSBvbiBhIGxheWVyIHRoYXQgaXMgYSBwbGFpbiBjb2xvciwKKyAgICAgICAg
Ly8gc28gQ0EgbmV2ZXIgbWFrZXMgYmFja2luZyBzdG9yZSBmb3IgaXQgKHdoaWNoIGlzIHdoYXQg
LXNldE5lZWRzRGlzcGxheSB3aWxsIGRvIGFib3ZlKS4KKyAgICAgICAgQ0dDb250ZXh0U2V0UkdC
RmlsbENvbG9yKGNvbnRleHQsIDAuMGYsIDEuMGYsIDAuMGYsIDEuMGYpOworICAgICAgICBDR0Nv
bnRleHRGaWxsUmVjdChjb250ZXh0LCBsYXllckJvdW5kcyk7CisgICAgfQorI2VuZGlmCisKKyAg
ICBpZiAob3duZXIoKS0+b3duZXIoKS0+cGxhdGZvcm1DQUxheWVyU2hvd1JlcGFpbnRDb3VudGVy
KCkpIHsKKyAgICAgICAgU3RyaW5nIHRleHQgPSBTdHJpbmc6Om51bWJlcihvd25lcigpLT5vd25l
cigpLT5wbGF0Zm9ybUNBTGF5ZXJJbmNyZW1lbnRSZXBhaW50Q291bnQoKSk7CisKKyAgICAgICAg
Q0dDb250ZXh0U2F2ZUdTdGF0ZShjb250ZXh0KTsKKworICAgICAgICAvLyBNYWtlIHRoZSBiYWNr
Z3JvdW5kIG9mIHRoZSBjb3VudGVyIHRoZSBzYW1lIGFzIHRoZSBib3JkZXIgY29sb3IsCisgICAg
ICAgIC8vIHVubGVzcyB0aGVyZSBpcyBubyBib3JkZXIsIHRoZW4gbWFrZSBpdCByZWQKKyAgICAg
ICAgZmxvYXQgYm9yZGVyV2lkdGggPSBDQUNGTGF5ZXJHZXRCb3JkZXJXaWR0aChjYUxheWVyKTsK
KyAgICAgICAgaWYgKGJvcmRlcldpZHRoID4gMCkgeworICAgICAgICAgICAgQ0dDb2xvclJlZiBi
b3JkZXJDb2xvciA9IENBQ0ZMYXllckdldEJvcmRlckNvbG9yKGNhTGF5ZXIpOworICAgICAgICAg
ICAgY29uc3QgQ0dGbG9hdCogY29sb3JzID0gQ0dDb2xvckdldENvbXBvbmVudHMoYm9yZGVyQ29s
b3IpOworICAgICAgICAgICAgQ0dDb250ZXh0U2V0UkdCRmlsbENvbG9yKGNvbnRleHQsIGNvbG9y
c1swXSwgY29sb3JzWzFdLCBjb2xvcnNbMl0sIGNvbG9yc1szXSk7CisgICAgICAgIH0gZWxzZQor
ICAgICAgICAgICAgQ0dDb250ZXh0U2V0UkdCRmlsbENvbG9yKGNvbnRleHQsIDEuMGYsIDAuMGYs
IDAuMGYsIDAuOGYpOworICAgICAgICAKKyAgICAgICAgQ0dSZWN0IGFCb3VuZHMgPSBsYXllckJv
dW5kczsKKworICAgICAgICBhQm91bmRzLnNpemUud2lkdGggPSAxMCArIDEwICogdGV4dC5sZW5n
dGgoKTsKKyAgICAgICAgYUJvdW5kcy5zaXplLmhlaWdodCA9IDIyOworICAgICAgICBDR0NvbnRl
eHRGaWxsUmVjdChjb250ZXh0LCBhQm91bmRzKTsKKyAgICAgICAgCisgICAgICAgIEZvbnREZXNj
cmlwdGlvbiBkZXNjOworCisgICAgICAgIE5PTkNMSUVOVE1FVFJJQ1MgbWV0cmljczsKKyAgICAg
ICAgbWV0cmljcy5jYlNpemUgPSBzaXplb2YobWV0cmljcyk7CisgICAgICAgIFN5c3RlbVBhcmFt
ZXRlcnNJbmZvKFNQSV9HRVROT05DTElFTlRNRVRSSUNTLCBtZXRyaWNzLmNiU2l6ZSwgJm1ldHJp
Y3MsIDApOworICAgICAgICBGb250RmFtaWx5IGZhbWlseTsKKyAgICAgICAgZmFtaWx5LnNldEZh
bWlseShtZXRyaWNzLmxmU21DYXB0aW9uRm9udC5sZkZhY2VOYW1lKTsKKyAgICAgICAgZGVzYy5z
ZXRGYW1pbHkoZmFtaWx5KTsKKworICAgICAgICBkZXNjLnNldENvbXB1dGVkU2l6ZSgxOCk7Cisg
ICAgICAgIAorICAgICAgICBGb250IGZvbnQgPSBGb250KGRlc2MsIDAsIDApOworICAgICAgICBm
b250LnVwZGF0ZSgwKTsKKworICAgICAgICBHcmFwaGljc0NvbnRleHQgY2coY29udGV4dCk7Cisg
ICAgICAgIGNnLnNldEZpbGxDb2xvcihDb2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0Ip
OworICAgICAgICBjZy5kcmF3VGV4dChmb250LCBUZXh0UnVuKHRleHQpLCBJbnRQb2ludChhQm91
bmRzLm9yaWdpbi54ICsgNSwgYUJvdW5kcy5vcmlnaW4ueSArIDE3KSk7CisKKyAgICAgICAgQ0dD
b250ZXh0UmVzdG9yZUdTdGF0ZShjb250ZXh0KTsgICAgICAgIAorICAgIH0KKworICAgIENHQ29u
dGV4dFJlc3RvcmVHU3RhdGUoY29udGV4dCk7CisKKyAgICBvd25lcigpLT5vd25lcigpLT5wbGF0
Zm9ybUNBTGF5ZXJMYXllckRpZERpc3BsYXkoY2FMYXllcik7Cit9CisKK3ZvaWQgUGxhdGZvcm1D
QUxheWVyV2luSW50ZXJuYWw6OmludGVybmFsU2V0TmVlZHNEaXNwbGF5KGNvbnN0IEZsb2F0UmVj
dCogZGlydHlSZWN0KQoreworICAgIGlmIChkaXJ0eVJlY3QpIHsKKyAgICAgICAgQ0dSZWN0IHJl
Y3QgPSAqZGlydHlSZWN0OworICAgICAgICBDQUNGTGF5ZXJTZXROZWVkc0Rpc3BsYXkob3duZXIo
KS0+cGxhdGZvcm1MYXllcigpLCAmcmVjdCk7CisgICAgfSBlbHNlCisgICAgICAgIENBQ0ZMYXll
clNldE5lZWRzRGlzcGxheShvd25lcigpLT5wbGF0Zm9ybUxheWVyKCksIDApOworfQorCit2b2lk
IFBsYXRmb3JtQ0FMYXllcldpbkludGVybmFsOjpzZXROZWVkc0Rpc3BsYXkoY29uc3QgRmxvYXRS
ZWN0KiBkaXJ0eVJlY3QpCit7CisgICAgaWYgKG93bmVyKCktPmxheWVyVHlwZSgpID09IFBsYXRm
b3JtQ0FMYXllcjo6TGF5ZXJUeXBlV2ViVGlsZWRMYXllcikgeworICAgICAgICAvLyBGSVhNRTog
T25seSBzZXROZWVkc0Rpc3BsYXkgZm9yIHRpbGVzIHRoYXQgYXJlIGN1cnJlbnRseSB2aXNpYmxl
CisgICAgICAgIGludCBudW1UaWxlTGF5ZXJzID0gdGlsZUNvdW50KCk7CisgICAgICAgIENHUmVj
dCByZWN0OworICAgICAgICBpZiAoZGlydHlSZWN0KQorICAgICAgICAgICAgcmVjdCA9ICpkaXJ0
eVJlY3Q7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtVGlsZUxheWVyczsgKytpKQor
ICAgICAgICAgICAgQ0FDRkxheWVyU2V0TmVlZHNEaXNwbGF5KHRpbGVBdEluZGV4KGkpLCBkaXJ0
eVJlY3QgPyAmcmVjdCA6IDApOworCisgICAgICAgIGlmIChtX293bmVyLT5vd25lcigpICYmIG1f
b3duZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllclNob3dSZXBhaW50Q291bnRlcigpKSB7Cisg
ICAgICAgICAgICBDR1JlY3QgbGF5ZXJCb3VuZHMgPSBtX293bmVyLT5ib3VuZHMoKTsKKyAgICAg
ICAgICAgIENHUmVjdCBpbmRpY2F0b3JSZWN0ID0gQ0dSZWN0TWFrZShsYXllckJvdW5kcy5vcmln
aW4ueCwgbGF5ZXJCb3VuZHMub3JpZ2luLnksIDgwLCAyNSk7CisgICAgICAgICAgICBDQUNGTGF5
ZXJTZXROZWVkc0Rpc3BsYXkodGlsZUF0SW5kZXgoMCksICZpbmRpY2F0b3JSZWN0KTsKKyAgICAg
ICAgfQorICAgIH0gZWxzZSBpZiAob3duZXIoKS0+bGF5ZXJUeXBlKCkgPT0gUGxhdGZvcm1DQUxh
eWVyOjpMYXllclR5cGVXZWJMYXllcikgeworICAgICAgICBpZiAob3duZXIoKSAmJiBvd25lcigp
LT5vd25lcigpKSB7CisgICAgICAgICAgICBpZiAob3duZXIoKS0+b3duZXIoKS0+cGxhdGZvcm1D
QUxheWVyU2hvd1JlcGFpbnRDb3VudGVyKCkpIHsKKyAgICAgICAgICAgICAgICBGbG9hdFJlY3Qg
bGF5ZXJCb3VuZHMgPSBvd25lcigpLT5ib3VuZHMoKTsKKyAgICAgICAgICAgICAgICBGbG9hdFJl
Y3QgcmVwYWludENvdW50ZXJSZWN0ID0gbGF5ZXJCb3VuZHM7CisKKyAgICAgICAgICAgICAgICAv
LyBXZSBhc3N1bWUgYSBtYXhpbXVtIG9mIDQgZGlnaXRzIGFuZCBhIGZvbnQgc2l6ZSBvZiAxOC4K
KyAgICAgICAgICAgICAgICByZXBhaW50Q291bnRlclJlY3Quc2V0V2lkdGgoODApOworICAgICAg
ICAgICAgICAgIHJlcGFpbnRDb3VudGVyUmVjdC5zZXRIZWlnaHQoMjIpOworICAgICAgICAgICAg
ICAgIGlmIChvd25lcigpLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJDb250ZW50c09yaWVudGF0
aW9uKCkgPT0gV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc1Rv
cERvd24pCisgICAgICAgICAgICAgICAgICAgIHJlcGFpbnRDb3VudGVyUmVjdC5zZXRZKGxheWVy
Qm91bmRzLmhlaWdodCgpIC0gKGxheWVyQm91bmRzLnkoKSArIHJlcGFpbnRDb3VudGVyUmVjdC5o
ZWlnaHQoKSkpOworICAgICAgICAgICAgICAgIGludGVybmFsU2V0TmVlZHNEaXNwbGF5KCZyZXBh
aW50Q291bnRlclJlY3QpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGRpcnR5UmVj
dCAmJiBvd25lcigpLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJDb250ZW50c09yaWVudGF0aW9u
KCkgPT0gV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc1RvcERv
d24pIHsKKyAgICAgICAgICAgICAgICBGbG9hdFJlY3QgZmxpcHBlZERpcnR5UmVjdCA9ICpkaXJ0
eVJlY3Q7CisgICAgICAgICAgICAgICAgZmxpcHBlZERpcnR5UmVjdC5zZXRZKG93bmVyKCktPmJv
dW5kcygpLmhlaWdodCgpIC0gKGZsaXBwZWREaXJ0eVJlY3QueSgpICsgZmxpcHBlZERpcnR5UmVj
dC5oZWlnaHQoKSkpOworICAgICAgICAgICAgICAgIGludGVybmFsU2V0TmVlZHNEaXNwbGF5KCZm
bGlwcGVkRGlydHlSZWN0KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKworICAgICAgICBpbnRlcm5hbFNldE5lZWRzRGlzcGxheShkaXJ0eVJlY3Qp
OworICAgIH0KKyAgICBvd25lcigpLT5zZXROZWVkc0NvbW1pdCgpOworfQorCit2b2lkIFBsYXRm
b3JtQ0FMYXllcldpbkludGVybmFsOjpzZXRTdWJsYXllcnMoY29uc3QgUGxhdGZvcm1DQUxheWVy
TGlzdCYgbGlzdCkKK3sKKyAgICAvLyBSZW1vdmUgYWxsIHRoZSBjdXJyZW50IHN1YmxheWVycyBh
bmQgYWRkIHRoZSBwYXNzZWQgbGF5ZXJzCisgICAgQ0FDRkxheWVyU2V0U3VibGF5ZXJzKG93bmVy
KCktPnBsYXRmb3JtTGF5ZXIoKSwgMCk7CisKKyAgICAvLyBQZXJmb3JtIHJlbW92ZUZyb21TdXBl
ckxheWVyIGluIGEgc2VwYXJhdGUgcGFzcy4gQ0FDRiByZXF1aXJlcyBzdXBlcmxheWVyIHRvCisg
ICAgLy8gYmUgbnVsbCBvciBDQUNGTGF5ZXJJbnNlcnRTdWJsYXllciBzaWxlbnRseSBmYWlscy4K
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxpc3Quc2l6ZSgpOyBpKyspCisgICAgICAgIENB
Q0ZMYXllclJlbW92ZUZyb21TdXBlcmxheWVyKGxpc3RbaV0tPnBsYXRmb3JtTGF5ZXIoKSk7CisK
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxpc3Quc2l6ZSgpOyBpKyspCisgICAgICAgIENB
Q0ZMYXllckluc2VydFN1YmxheWVyKG93bmVyKCktPnBsYXRmb3JtTGF5ZXIoKSwgbGlzdFtpXS0+
cGxhdGZvcm1MYXllcigpLCBpKTsKKworICAgIG93bmVyKCktPnNldE5lZWRzQ29tbWl0KCk7CisK
KyAgICBpZiAob3duZXIoKS0+bGF5ZXJUeXBlKCkgPT0gUGxhdGZvcm1DQUxheWVyOjpMYXllclR5
cGVXZWJUaWxlZExheWVyKSB7CisgICAgICAgIC8vIFByZXNlcnZlIHRoZSB0aWxlIHBhcmVudCBh
ZnRlciBzZXQKKyAgICAgICAgQ0FDRkxheWVySW5zZXJ0U3VibGF5ZXIob3duZXIoKS0+cGxhdGZv
cm1MYXllcigpLCBtX3RpbGVQYXJlbnQuZ2V0KCksIDApOworICAgIH0KK30KKwordm9pZCBQbGF0
Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbDo6cmVtb3ZlQWxsU3VibGF5ZXJzKCkKK3sKKyAgICBDQUNG
TGF5ZXJTZXRTdWJsYXllcnMob3duZXIoKS0+cGxhdGZvcm1MYXllcigpLCAwKTsKKyAgICBvd25l
cigpLT5zZXROZWVkc0NvbW1pdCgpOworCisgICAgaWYgKG93bmVyKCktPmxheWVyVHlwZSgpID09
IFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlV2ViVGlsZWRMYXllcikgeworICAgICAgICAvLyBS
ZXN0b3JlIHRoZSB0aWxlIHBhcmVudCBhZnRlciByZW1vdmFsCisgICAgICAgIENBQ0ZMYXllcklu
c2VydFN1YmxheWVyKG93bmVyKCktPnBsYXRmb3JtTGF5ZXIoKSwgbV90aWxlUGFyZW50LmdldCgp
LCAwKTsKKyAgICB9Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWw6Omluc2Vy
dFN1YmxheWVyKFBsYXRmb3JtQ0FMYXllciogbGF5ZXIsIHNpemVfdCBpbmRleCkKK3sKKyAgICBp
bmRleCA9IG1pbihpbmRleCwgc3VibGF5ZXJDb3VudCgpKTsKKyAgICBpZiAob3duZXIoKS0+bGF5
ZXJUeXBlKCkgPT0gUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVXZWJUaWxlZExheWVyKSB7Cisg
ICAgICAgIC8vIEFkZCAxIHRvIGFjY291bnQgZm9yIHRoZSB0aWxlIHBhcmVudCBsYXllcgorICAg
ICAgICBpbmRleCsrOworICAgIH0KKworICAgIGxheWVyLT5yZW1vdmVGcm9tU3VwZXJsYXllcigp
OworICAgIENBQ0ZMYXllckluc2VydFN1YmxheWVyKG93bmVyKCktPnBsYXRmb3JtTGF5ZXIoKSwg
bGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSwgaW5kZXgpOworICAgIG93bmVyKCktPnNldE5lZWRzQ29t
bWl0KCk7Cit9CisKK3NpemVfdCBQbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbDo6c3VibGF5ZXJD
b3VudCgpIGNvbnN0Cit7CisgICAgQ0ZBcnJheVJlZiBzdWJsYXllcnMgPSBDQUNGTGF5ZXJHZXRT
dWJsYXllcnMob3duZXIoKS0+cGxhdGZvcm1MYXllcigpKTsKKyAgICBzaXplX3QgY291bnQgPSBz
dWJsYXllcnMgPyBDRkFycmF5R2V0Q291bnQoc3VibGF5ZXJzKSA6IDA7CisKKyAgICBpZiAob3du
ZXIoKS0+bGF5ZXJUeXBlKCkgPT0gUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVXZWJUaWxlZExh
eWVyKSB7CisgICAgICAgIC8vIFN1YnRyYWN0IDEgdG8gYWNjb3VudCBmb3IgdGhlIHRpbGUgcGFy
ZW50IGxheWVyCisgICAgICAgIEFTU0VSVChjb3VudCA+IDApOworICAgICAgICBjb3VudC0tOwor
ICAgIH0KKworICAgIHJldHVybiBjb3VudDsKK30KKworaW50IFBsYXRmb3JtQ0FMYXllcldpbklu
dGVybmFsOjppbmRleE9mU3VibGF5ZXIoY29uc3QgUGxhdGZvcm1DQUxheWVyKiByZWZlcmVuY2Up
Cit7CisgICAgQ0FDRkxheWVyUmVmIHJlZiA9IHJlZmVyZW5jZS0+cGxhdGZvcm1MYXllcigpOwor
ICAgIGlmICghcmVmKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBDRkFycmF5UmVmIHN1Ymxh
eWVycyA9IENBQ0ZMYXllckdldFN1YmxheWVycyhvd25lcigpLT5wbGF0Zm9ybUxheWVyKCkpOwor
ICAgIGlmICghc3VibGF5ZXJzKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBzaXplX3QgbiA9
IENGQXJyYXlHZXRDb3VudChzdWJsYXllcnMpOworCisgICAgaWYgKG93bmVyKCktPmxheWVyVHlw
ZSgpID09IFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlV2ViVGlsZWRMYXllcikgeworICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMTsgaSA8IG47ICsraSkgeworICAgICAgICAgICAgaWYgKENGQXJy
YXlHZXRWYWx1ZUF0SW5kZXgoc3VibGF5ZXJzLCBpKSA9PSByZWYpCisgICAgICAgICAgICAgICAg
cmV0dXJuIGkgLSAxOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBuOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChDRkFycmF5R2V0VmFsdWVB
dEluZGV4KHN1YmxheWVycywgaSkgPT0gcmVmKQorICAgICAgICAgICAgICAgIHJldHVybiBpOwor
ICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIC0xOworfQorCitQbGF0Zm9ybUNBTGF5ZXIq
IFBsYXRmb3JtQ0FMYXllcldpbkludGVybmFsOjpzdWJsYXllckF0SW5kZXgoaW50IGluZGV4KSBj
b25zdAoreworICAgIGlmIChvd25lcigpLT5sYXllclR5cGUoKSA9PSBQbGF0Zm9ybUNBTGF5ZXI6
OkxheWVyVHlwZVdlYlRpbGVkTGF5ZXIpIHsKKyAgICAgICAgLy8gQWRkIDEgdG8gYWNjb3VudCBm
b3IgdGhlIHRpbGUgcGFyZW50IGxheWVyCisgICAgICAgIGluZGV4Kys7CisgICAgfQorCisgICAg
Q0ZBcnJheVJlZiBzdWJsYXllcnMgPSBDQUNGTGF5ZXJHZXRTdWJsYXllcnMob3duZXIoKS0+cGxh
dGZvcm1MYXllcigpKTsKKyAgICBpZiAoIXN1YmxheWVycyB8fCBpbmRleCA8IDAgfHwgQ0ZBcnJh
eUdldENvdW50KHN1YmxheWVycykgPD0gaW5kZXgpCisgICAgICAgIHJldHVybiAwOworICAgIAor
ICAgIHJldHVybiBQbGF0Zm9ybUNBTGF5ZXI6OnBsYXRmb3JtQ0FMYXllcihzdGF0aWNfY2FzdDxD
QUNGTGF5ZXJSZWY+KGNvbnN0X2Nhc3Q8dm9pZCo+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoc3Vi
bGF5ZXJzLCBpbmRleCkpKSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWw6
OnNldEJvdW5kcyhjb25zdCBGbG9hdFJlY3QmIHJlY3QpCit7CisgICAgaWYgKENHUmVjdEVxdWFs
VG9SZWN0KHJlY3QsIG93bmVyKCktPmJvdW5kcygpKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
Q0FDRkxheWVyU2V0Qm91bmRzKG93bmVyKCktPnBsYXRmb3JtTGF5ZXIoKSwgcmVjdCk7CisgICAg
b3duZXIoKS0+c2V0TmVlZHNDb21taXQoKTsKKworICAgIGlmIChvd25lcigpLT5sYXllclR5cGUo
KSA9PSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVdlYlRpbGVkTGF5ZXIpIHsKKyAgICAgICAg
bV9jb25zdHJhaW5lZFNpemUgPSBjb25zdHJhaW5lZFNpemUocmVjdC5zaXplKCkpOworICAgICAg
ICB1cGRhdGVUaWxlcygpOworICAgIH0KK30KKwordm9pZCBQbGF0Zm9ybUNBTGF5ZXJXaW5JbnRl
cm5hbDo6c2V0RnJhbWUoY29uc3QgRmxvYXRSZWN0JiByZWN0KQoreworICAgIENHUmVjdCBvbGRG
cmFtZSA9IG93bmVyKCktPmZyYW1lKCk7CisgICAgaWYgKENHUmVjdEVxdWFsVG9SZWN0KHJlY3Qs
IG9sZEZyYW1lKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQ0FDRkxheWVyU2V0RnJhbWUob3du
ZXIoKS0+cGxhdGZvcm1MYXllcigpLCByZWN0KTsKKyAgICBvd25lcigpLT5zZXROZWVkc0NvbW1p
dCgpOworCisgICAgaWYgKG93bmVyKCktPmxheWVyVHlwZSgpID09IFBsYXRmb3JtQ0FMYXllcjo6
TGF5ZXJUeXBlV2ViVGlsZWRMYXllcikKKyAgICAgICAgdXBkYXRlVGlsZXMoKTsKK30KKworQ0dT
aXplIFBsYXRmb3JtQ0FMYXllcldpbkludGVybmFsOjpjb25zdHJhaW5lZFNpemUoY29uc3QgQ0dT
aXplJiBzaXplKSBjb25zdAoreworICAgIGNvbnN0IGludCBjTWF4VGlsZUNvdW50ID0gNTEyOwor
ICAgIGNvbnN0IGZsb2F0IGNTcXJ0TWF4VGlsZUNvdW50ID0gc3FydGYoY01heFRpbGVDb3VudCk7
CisKKyAgICBDR1NpemUgY29uc3RyYWluZWRTaXplID0gc2l6ZTsKKworICAgIGludCB0aWxlQ29s
dW1ucyA9IGNlaWxmKGNvbnN0cmFpbmVkU2l6ZS53aWR0aCAvIG1fdGlsZVNpemUud2lkdGgpOwor
ICAgIGludCB0aWxlUm93cyA9IGNlaWxmKGNvbnN0cmFpbmVkU2l6ZS5oZWlnaHQgLyBtX3RpbGVT
aXplLmhlaWdodCk7CisgICAgaW50IG51bVRpbGVzID0gdGlsZUNvbHVtbnMgKiB0aWxlUm93czsK
KworICAgIC8vIElmIG51bWJlciBvZiB0aWxlcyB2ZXJ0aWNhbGx5IG9yIGhvcml6b250YWxseSBp
cyA8IHNxcnQoY01heFRpbGVDb3VudCkKKyAgICAvLyBqdXN0IHNob3J0ZW4gdGhlIGxvbmdlciBk
aW1lbnNpb24uIE90aGVyd2lzZSBzaG9ydGVuIGJvdGggZGltZW5zaW9ucworICAgIC8vIGFjY29y
ZGluZyB0byB0aGUgcmF0aW8gb2Ygd2lkdGggdG8gaGVpZ2h0CisKKyAgICBpZiAobnVtVGlsZXMg
PiBjTWF4VGlsZUNvdW50KSB7CisgICAgICAgIGlmICh0aWxlUm93cyA8IGNTcXJ0TWF4VGlsZUNv
dW50KQorICAgICAgICAgICAgdGlsZUNvbHVtbnMgPSBmbG9vcmYoY01heFRpbGVDb3VudCAvIHRp
bGVSb3dzKTsKKyAgICAgICAgZWxzZSBpZiAodGlsZUNvbHVtbnMgPCBjU3FydE1heFRpbGVDb3Vu
dCkKKyAgICAgICAgICAgIHRpbGVSb3dzID0gZmxvb3JmKGNNYXhUaWxlQ291bnQgLyB0aWxlQ29s
dW1ucyk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgdGlsZVJvd3MgPSBjZWlsZihzcXJ0
ZihjTWF4VGlsZUNvdW50ICogY29uc3RyYWluZWRTaXplLmhlaWdodCAvIGNvbnN0cmFpbmVkU2l6
ZS53aWR0aCkpOworICAgICAgICAgICAgdGlsZUNvbHVtbnMgPSBmbG9vcmYoY01heFRpbGVDb3Vu
dCAvIHRpbGVSb3dzKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgY29uc3RyYWluZWRT
aXplLndpZHRoID0gdGlsZUNvbHVtbnMgKiBtX3RpbGVTaXplLndpZHRoOworICAgICAgICBjb25z
dHJhaW5lZFNpemUuaGVpZ2h0ID0gdGlsZVJvd3MgKiBtX3RpbGVTaXplLmhlaWdodDsKKyAgICB9
CisgICAgCisgICAgcmV0dXJuIGNvbnN0cmFpbmVkU2l6ZTsKK30KKwordm9pZCBQbGF0Zm9ybUNB
TGF5ZXJXaW5JbnRlcm5hbDo6dGlsZURpc3BsYXlDYWxsYmFjayhDQUNGTGF5ZXJSZWYgbGF5ZXIs
IENHQ29udGV4dFJlZiBjb250ZXh0KQoreworICAgIHN0YXRpY19jYXN0PFBsYXRmb3JtQ0FMYXll
cldpbkludGVybmFsKj4oQ0FDRkxheWVyR2V0VXNlckRhdGEobGF5ZXIpKS0+ZHJhd1RpbGUobGF5
ZXIsIGNvbnRleHQpOworfQorCit2b2lkIFBsYXRmb3JtQ0FMYXllcldpbkludGVybmFsOjphZGRU
aWxlKCkKK3sKKyAgICBSZXRhaW5QdHI8Q0FDRkxheWVyUmVmPiBuZXdMYXllcihBZG9wdENGLCBD
QUNGTGF5ZXJDcmVhdGUoa0NBQ0ZMYXllcikpOworICAgIENBQ0ZMYXllclNldEFuY2hvclBvaW50
KG5ld0xheWVyLmdldCgpLCBDR1BvaW50TWFrZSgwLCAxKSk7CisgICAgQ0FDRkxheWVyU2V0VXNl
ckRhdGEobmV3TGF5ZXIuZ2V0KCksIHRoaXMpOworICAgIENBQ0ZMYXllclNldERpc3BsYXlDYWxs
YmFjayhuZXdMYXllci5nZXQoKSwgdGlsZURpc3BsYXlDYWxsYmFjayk7CisKKyAgICBDRkFycmF5
UmVmIHN1YmxheWVycyA9IENBQ0ZMYXllckdldFN1YmxheWVycyhtX3RpbGVQYXJlbnQuZ2V0KCkp
OworICAgIENBQ0ZMYXllckluc2VydFN1YmxheWVyKG1fdGlsZVBhcmVudC5nZXQoKSwgbmV3TGF5
ZXIuZ2V0KCksIHN1YmxheWVycyA/IENGQXJyYXlHZXRDb3VudChzdWJsYXllcnMpIDogMCk7CisK
KyAgICBpZiAob3duZXIoKS0+b3duZXIoKS0+cGxhdGZvcm1DQUxheWVyU2hvd0RlYnVnQm9yZGVy
cygpKSB7CisgICAgICAgIENHQ29sb3JSZWYgYm9yZGVyQ29sb3IgPSBDR0NvbG9yQ3JlYXRlR2Vu
ZXJpY1JHQigwLjUsIDAsIDAuNSwgMC43KTsKKyAgICAgICAgQ0FDRkxheWVyU2V0Qm9yZGVyQ29s
b3IobmV3TGF5ZXIuZ2V0KCksIGJvcmRlckNvbG9yKTsKKyAgICAgICAgQ0dDb2xvclJlbGVhc2Uo
Ym9yZGVyQ29sb3IpOworICAgICAgICBDQUNGTGF5ZXJTZXRCb3JkZXJXaWR0aChuZXdMYXllci5n
ZXQoKSwgMik7CisgICAgfQorfQorCit2b2lkIFBsYXRmb3JtQ0FMYXllcldpbkludGVybmFsOjpy
ZW1vdmVUaWxlKCkKK3sKKyAgICBDQUNGTGF5ZXJSZW1vdmVGcm9tU3VwZXJsYXllcih0aWxlQXRJ
bmRleCh0aWxlQ291bnQoKSAtIDEpKTsKK30KKworQ0FDRkxheWVyUmVmIFBsYXRmb3JtQ0FMYXll
cldpbkludGVybmFsOjp0aWxlQXRJbmRleChpbnQgaW5kZXgpCit7CisgICAgQ0ZBcnJheVJlZiBz
dWJsYXllcnMgPSBDQUNGTGF5ZXJHZXRTdWJsYXllcnMobV90aWxlUGFyZW50LmdldCgpKTsKKyAg
ICBpZiAoIXN1YmxheWVycyB8fCBpbmRleCA8IDAgfHwgaW5kZXggPj0gdGlsZUNvdW50KCkpCisg
ICAgICAgIHJldHVybiAwOworICAgIAorICAgIHJldHVybiBzdGF0aWNfY2FzdDxDQUNGTGF5ZXJS
ZWY+KGNvbnN0X2Nhc3Q8dm9pZCo+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoc3VibGF5ZXJzLCBp
bmRleCkpKTsKK30KKworaW50IFBsYXRmb3JtQ0FMYXllcldpbkludGVybmFsOjp0aWxlQ291bnQo
KSBjb25zdAoreworICAgIENGQXJyYXlSZWYgc3VibGF5ZXJzID0gQ0FDRkxheWVyR2V0U3VibGF5
ZXJzKG1fdGlsZVBhcmVudC5nZXQoKSk7CisgICAgcmV0dXJuIHN1YmxheWVycyA/IENGQXJyYXlH
ZXRDb3VudChzdWJsYXllcnMpIDogMDsKK30KKwordm9pZCBQbGF0Zm9ybUNBTGF5ZXJXaW5JbnRl
cm5hbDo6dXBkYXRlVGlsZXMoKQoreworICAgIC8vIEZJWE1FOiBJbiBhZGRpdGlvbiB0byByZWRv
aW5nIHRoZSBudW1iZXIgb2YgdGlsZXMsIHdlIG5lZWQgdG8gb25seSByZW5kZXIgYW5kIGhhdmUg
YmFja2luZworICAgIC8vIHN0b3JlIGZvciB2aXNpYmxlIGxheWVycworICAgIGludCBudW1UaWxl
c0hvcml6b250YWwgPSBjZWlsKG1fY29uc3RyYWluZWRTaXplLndpZHRoIC8gbV90aWxlU2l6ZS53
aWR0aCk7CisgICAgaW50IG51bVRpbGVzVmVydGljYWwgPSBjZWlsKG1fY29uc3RyYWluZWRTaXpl
LmhlaWdodCAvIG1fdGlsZVNpemUuaGVpZ2h0KTsKKyAgICBpbnQgbnVtVGlsZXNUb3RhbCA9IG51
bVRpbGVzSG9yaXpvbnRhbCAqIG51bVRpbGVzVmVydGljYWw7CisKKyAgICBpbnQgbnVtVGlsZXNU
b0NoYW5nZSA9IG51bVRpbGVzVG90YWwgLSB0aWxlQ291bnQoKTsKKyAgICBpZiAobnVtVGlsZXNU
b0NoYW5nZSA+PSAwKSB7CisgICAgICAgIC8vIEFkZCBuZXcgdGlsZXMKKyAgICAgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBudW1UaWxlc1RvQ2hhbmdlOyArK2kpCisgICAgICAgICAgICBhZGRUaWxl
KCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gUmVtb3ZlIG9sZCB0aWxlcworICAgICAgICBu
dW1UaWxlc1RvQ2hhbmdlID0gLW51bVRpbGVzVG9DaGFuZ2U7CisgICAgICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgbnVtVGlsZXNUb0NoYW5nZTsgKytpKQorICAgICAgICAgICAgcmVtb3ZlVGlsZSgp
OworICAgIH0KKworICAgIC8vIFNldCBjb29yZGluYXRlcyBmb3IgYWxsIHRpbGVzCisgICAgQ0ZB
cnJheVJlZiB0aWxlQXJyYXkgPSBDQUNGTGF5ZXJHZXRTdWJsYXllcnMobV90aWxlUGFyZW50Lmdl
dCgpKTsKKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtVGlsZXNIb3Jpem9udGFsOyArK2kp
IHsKKyAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBudW1UaWxlc1ZlcnRpY2FsOyArK2opIHsK
KyAgICAgICAgICAgIENBQ0ZMYXllclJlZiB0aWxlID0gc3RhdGljX2Nhc3Q8Q0FDRkxheWVyUmVm
Pihjb25zdF9jYXN0PHZvaWQqPihDRkFycmF5R2V0VmFsdWVBdEluZGV4KHRpbGVBcnJheSwgaSAq
IG51bVRpbGVzVmVydGljYWwgKyBqKSkpOworICAgICAgICAgICAgQ0FDRkxheWVyU2V0UG9zaXRp
b24odGlsZSwgQ0dQb2ludE1ha2UoaSAqIG1fdGlsZVNpemUud2lkdGgsIGogKiBtX3RpbGVTaXpl
LmhlaWdodCkpOworICAgICAgICAgICAgaW50IHdpZHRoID0gbWluKG1fdGlsZVNpemUud2lkdGgs
IG1fY29uc3RyYWluZWRTaXplLndpZHRoIC0gaSAqIG1fdGlsZVNpemUud2lkdGgpOworICAgICAg
ICAgICAgaW50IGhlaWdodCA9IG1pbihtX3RpbGVTaXplLmhlaWdodCwgbV9jb25zdHJhaW5lZFNp
emUuaGVpZ2h0IC0gaiAqIG1fdGlsZVNpemUuaGVpZ2h0KTsKKyAgICAgICAgICAgIENBQ0ZMYXll
clNldEJvdW5kcyh0aWxlLCBDR1JlY3RNYWtlKGkgKiBtX3RpbGVTaXplLndpZHRoLCBqICogbV90
aWxlU2l6ZS5oZWlnaHQsIHdpZHRoLCBoZWlnaHQpKTsKKworICAgICAgICAgICAgLy8gRmxpcCBZ
IHRvIGNvbXBlbnNhdGUgZm9yIHRoZSBmbGlwcGluZyB0aGF0IGhhcHBlbnMgZHVyaW5nIHJlbmRl
ciB0byBtYXRjaCB0aGUgQ0cgY29udGV4dCBjb29yZGluYXRlIHNwYWNlCisgICAgICAgICAgICBD
QVRyYW5zZm9ybTNEIHRyYW5zZm9ybSA9IENBVHJhbnNmb3JtM0RNYWtlU2NhbGUoMSwgLTEsIDEp
OworICAgICAgICAgICAgQ0FUcmFuc2Zvcm0zRFRyYW5zbGF0ZSh0cmFuc2Zvcm0sIDAsIGhlaWdo
dCwgMCk7CisgICAgICAgICAgICBDQUNGTGF5ZXJTZXRUcmFuc2Zvcm0odGlsZSwgdHJhbnNmb3Jt
KTsKKworI2lmbmRlZiBOREVCVUcKKyAgICAgICAgICAgIFN0cmluZyBuYW1lID0gIlRpbGUgKCIg
KyBTdHJpbmc6Om51bWJlcihpKSArICIsIiArIFN0cmluZzo6bnVtYmVyKGopICsgIikiOworICAg
ICAgICAgICAgQ0FDRkxheWVyU2V0TmFtZSh0aWxlLCBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+KEFk
b3B0Q0YsIG5hbWUuY3JlYXRlQ0ZTdHJpbmcoKSkuZ2V0KCkpOworI2VuZGlmCisgICAgICAgIH0K
KyAgICB9Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWw6OmRyYXdUaWxlKENB
Q0ZMYXllclJlZiB0aWxlLCBDR0NvbnRleHRSZWYgY29udGV4dCkKK3sKKyAgICBDR1BvaW50IHRp
bGVQb3NpdGlvbiA9IENBQ0ZMYXllckdldFBvc2l0aW9uKHRpbGUpOworICAgIENHUmVjdCB0aWxl
Qm91bmRzID0gQ0FDRkxheWVyR2V0Qm91bmRzKHRpbGUpOworCisgICAgQ0dDb250ZXh0U2F2ZUdT
dGF0ZShjb250ZXh0KTsKKworICAgIC8vIFRyYW5zZm9ybSBjb250ZXh0IHRvIGJlIGF0IHRoZSBv
cmlnaW4gb2YgdGhlIHBhcmVudCBsYXllcgorICAgIENHQ29udGV4dFRyYW5zbGF0ZUNUTShjb250
ZXh0LCAtdGlsZVBvc2l0aW9uLngsIC10aWxlUG9zaXRpb24ueSk7CisKKyAgICAvLyBTZXQgdGhl
IGNvbnRleHQgY2xpcHBpbmcgcmVjdGFuZ2xlIHRvIHRoZSBjdXJyZW50IHRpbGUKKyAgICBDR0Nv
bnRleHRDbGlwVG9SZWN0KGNvbnRleHQsIENHUmVjdE1ha2UodGlsZVBvc2l0aW9uLngsIHRpbGVQ
b3NpdGlvbi55LCB0aWxlQm91bmRzLnNpemUud2lkdGgsIHRpbGVCb3VuZHMuc2l6ZS5oZWlnaHQp
KTsKKworICAgIGlmIChvd25lcigpLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJDb250ZW50c09y
aWVudGF0aW9uKCkgPT0gV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6Q29tcG9zaXRpbmdDb29yZGlu
YXRlc1RvcERvd24pIHsKKyAgICAgICAgLy8gSWYgdGhlIGxheWVyIGlzIHJlbmRlcmluZyB0b3At
ZG93biwgaXQgd2lsbCBmbGlwIHRoZSBjb29yZGluYXRlcyBpbiB5LiBUaWxlZCBsYXllcnMgYXJl
CisgICAgICAgIC8vIGFscmVhZHkgZmxpcHBpbmcsIHNvIHdlIG5lZWQgdG8gdW5kbyB0aGF0IGhl
cmUuCisgICAgICAgIENHQ29udGV4dFRyYW5zbGF0ZUNUTShjb250ZXh0LCAwLCBvd25lcigpLT5i
b3VuZHMoKS5oZWlnaHQoKSk7CisgICAgICAgIENHQ29udGV4dFNjYWxlQ1RNKGNvbnRleHQsIDEs
IC0xKTsKKyAgICB9CisKKyAgICAvLyBEcmF3IHRoZSB0aWxlCisgICAgZGlzcGxheUNhbGxiYWNr
KG93bmVyKCktPnBsYXRmb3JtTGF5ZXIoKSwgY29udGV4dCk7CisKKyAgICBDR0NvbnRleHRSZXN0
b3JlR1N0YXRlKGNvbnRleHQpOworfQorCisjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBP
U0lUSU5HKQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1D
QUxheWVyV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw3MTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIFVTRShBQ0NFTEVS
QVRFRF9DT01QT1NJVElORykKKworI2luY2x1ZGUgIlBsYXRmb3JtQ0FMYXllci5oIgorCisjaW5j
bHVkZSAiRm9udC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIlBs
YXRmb3JtQ0FMYXllcldpbkludGVybmFsLmgiCisjaW5jbHVkZSAiV0tDQUNGTGF5ZXJSZW5kZXJl
ci5oIgorI2luY2x1ZGUgPFF1YXJ0ekNvcmUvQ0FDRkFuaW1hdGlvbi5oPgorI2luY2x1ZGUgPFF1
YXJ0ekNvcmUvQ0FDRkNvbnRleHQuaD4KKyNpbmNsdWRlIDxRdWFydHpDb3JlL0NBQ0ZMYXllci5o
PgorI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK2Jvb2wgUGxhdGZvcm1DQUxheWVy
Ojppc1ZhbHVlRnVuY3Rpb25TdXBwb3J0ZWQoKQoreworICAgIHJldHVybiB0cnVlOworfQorCit2
b2lkIFBsYXRmb3JtQ0FMYXllcjo6c2V0T3duZXIoUGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd25l
cikKK3sKKyAgICBtX293bmVyID0gb3duZXI7Cit9CisKK3N0YXRpYyBDRlN0cmluZ1JlZiB0b0NB
Q0ZMYXllclR5cGUoUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGUgdHlwZSkKK3sKKyAgICByZXR1
cm4gKHR5cGUgPT0gUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVUcmFuc2Zvcm1MYXllcikgPyBr
Q0FDRlRyYW5zZm9ybUxheWVyIDoga0NBQ0ZMYXllcjsKK30KKworc3RhdGljIENGU3RyaW5nUmVm
IHRvQ0FDRkZpbHRlclR5cGUoUGxhdGZvcm1DQUxheWVyOjpGaWx0ZXJUeXBlIHR5cGUpCit7Cisg
ICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxpbmVhcjogcmV0
dXJuIGtDQUNGRmlsdGVyTGluZWFyOworICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpOZWFyZXN0
OiByZXR1cm4ga0NBQ0ZGaWx0ZXJOZWFyZXN0OworICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpU
cmlsaW5lYXI6IHJldHVybiBrQ0FDRkZpbHRlclRyaWxpbmVhcjsKKyAgICBkZWZhdWx0OiByZXR1
cm4gMDsKKyAgICB9Cit9CisKK3N0YXRpYyBXS0NBQ0ZMYXllclJlbmRlcmVyKiByZW5kZXJlckZv
ckxheWVyKGNvbnN0IFBsYXRmb3JtQ0FMYXllciogbGF5ZXIpCit7CisgICAgLy8gV2UgbmVlZCB0
aGUgV0tDQUNGTGF5ZXJSZW5kZXJlciBhc3NvY2lhdGVkIHdpdGggdGhpcyBsYXllciwgd2hpY2gg
aXMgc3RvcmVkIGluIHRoZSBVc2VyRGF0YSBvZiB0aGUgQ0FDRkNvbnRleHQKKyAgICBDQUNGQ29u
dGV4dFJlZiBjb250ZXh0ID0gQ0FDRkxheWVyR2V0Q29udGV4dChsYXllci0+cGxhdGZvcm1MYXll
cigpKTsKKyAgICBpZiAoIWNvbnRleHQpCisgICAgICAgIHJldHVybiAwOworCisgICAgV0tDQUNG
TGF5ZXJSZW5kZXJlciogcmVuZGVyZXIgPSBzdGF0aWNfY2FzdDxXS0NBQ0ZMYXllclJlbmRlcmVy
Kj4oQ0FDRkNvbnRleHRHZXRVc2VyRGF0YShjb250ZXh0KSk7CisgICAgQVNTRVJUKHJlbmRlcmVy
KTsKKyAgICByZXR1cm4gcmVuZGVyZXI7Cit9CisKK3N0YXRpYyBQbGF0Zm9ybUNBTGF5ZXJXaW5J
bnRlcm5hbCogaW50ZXJuKGNvbnN0IFBsYXRmb3JtQ0FMYXllciogbGF5ZXIpCit7CisgICAgcmV0
dXJuIHN0YXRpY19jYXN0PFBsYXRmb3JtQ0FMYXllcldpbkludGVybmFsKj4oQ0FDRkxheWVyR2V0
VXNlckRhdGEobGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSkpOworfQorCitzdGF0aWMgUGxhdGZvcm1D
QUxheWVyV2luSW50ZXJuYWwqIGludGVybih2b2lkKiBsYXllcikKK3sKKyAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8UGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWwqPihDQUNGTGF5ZXJHZXRVc2VyRGF0
YShzdGF0aWNfY2FzdDxDQUNGTGF5ZXJSZWY+KGxheWVyKSkpOworfQorCitQYXNzUmVmUHRyPFBs
YXRmb3JtQ0FMYXllcj4gUGxhdGZvcm1DQUxheWVyOjpjcmVhdGUoTGF5ZXJUeXBlIGxheWVyVHlw
ZSwgUGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd25lcikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFBsYXRmb3JtQ0FMYXllcihsYXllclR5cGUsIDAsIG93bmVyKSk7Cit9CisKK1Bhc3NSZWZQ
dHI8UGxhdGZvcm1DQUxheWVyPiBQbGF0Zm9ybUNBTGF5ZXI6OmNyZWF0ZSh2b2lkKiBwbGF0Zm9y
bUxheWVyLCBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVyKQoreworICAgIHJldHVybiBhZG9w
dFJlZihuZXcgUGxhdGZvcm1DQUxheWVyKExheWVyVHlwZUN1c3RvbSwgc3RhdGljX2Nhc3Q8UGxh
dGZvcm1MYXllcio+KHBsYXRmb3JtTGF5ZXIpLCBvd25lcikpOworfQorCitzdGF0aWMgdm9pZCBk
aXNwbGF5Q2FsbGJhY2soQ0FDRkxheWVyUmVmIGNhTGF5ZXIsIENHQ29udGV4dFJlZiBjb250ZXh0
KQoreworICAgIEFTU0VSVF9BUkcoY2FMYXllciwgQ0FDRkxheWVyR2V0VXNlckRhdGEoY2FMYXll
cikpOworICAgIGludGVybihjYUxheWVyKS0+ZGlzcGxheUNhbGxiYWNrKGNhTGF5ZXIsIGNvbnRl
eHQpOworfQorCitzdGF0aWMgdm9pZCBsYXlvdXRTdWJsYXllcnNQcm9jKENBQ0ZMYXllclJlZiBj
YUxheWVyKSAKK3sKKyAgICBQbGF0Zm9ybUNBTGF5ZXIqIGxheWVyID0gUGxhdGZvcm1DQUxheWVy
OjpwbGF0Zm9ybUNBTGF5ZXIoY2FMYXllcik7CisgICAgaWYgKGxheWVyICYmIGxheWVyLT5vd25l
cigpKQorICAgICAgICBsYXllci0+b3duZXIoKS0+cGxhdGZvcm1DQUxheWVyTGF5b3V0U3VibGF5
ZXJzT2ZMYXllcihsYXllcik7Cit9CisKK1BsYXRmb3JtQ0FMYXllcjo6UGxhdGZvcm1DQUxheWVy
KExheWVyVHlwZSBsYXllclR5cGUsIFBsYXRmb3JtTGF5ZXIqIGxheWVyLCBQbGF0Zm9ybUNBTGF5
ZXJDbGllbnQqIG93bmVyKQorICAgIDogbV9vd25lcihvd25lcikKK3sKKyAgICBpZiAobGF5ZXIp
IHsKKyAgICAgICAgbV9sYXllclR5cGUgPSBMYXllclR5cGVDdXN0b207CisgICAgICAgIG1fbGF5
ZXIgPSBsYXllcjsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2xheWVyVHlwZSA9IGxheWVyVHlw
ZTsKKyAgICAgICAgbV9sYXllci5hZG9wdENGKENBQ0ZMYXllckNyZWF0ZSh0b0NBQ0ZMYXllclR5
cGUobGF5ZXJUeXBlKSkpOworCisgICAgICAgIC8vIENyZWF0ZSB0aGUgUGxhdGZvcm1DQUxheWVy
V2luSW50ZXJuYWwgb2JqZWN0IGFuZCBwb2ludCB0byBpdCBpbiB0aGUgdXNlcmRhdGEuCisgICAg
ICAgIFBsYXRmb3JtQ0FMYXllcldpbkludGVybmFsKiBpbnRlcm4gPSBuZXcgUGxhdGZvcm1DQUxh
eWVyV2luSW50ZXJuYWwodGhpcyk7CisgICAgICAgIENBQ0ZMYXllclNldFVzZXJEYXRhKG1fbGF5
ZXIuZ2V0KCksIGludGVybik7CisKKyAgICAgICAgLy8gU2V0IHRoZSBkaXNwbGF5IGNhbGxiYWNr
CisgICAgICAgIENBQ0ZMYXllclNldERpc3BsYXlDYWxsYmFjayhtX2xheWVyLmdldCgpLCBkaXNw
bGF5Q2FsbGJhY2spOworICAgICAgICBDQUNGTGF5ZXJTZXRMYXlvdXRDYWxsYmFjayhtX2xheWVy
LmdldCgpLCBsYXlvdXRTdWJsYXllcnNQcm9jKTsgICAgCisgICAgfQorfQorCitQbGF0Zm9ybUNB
TGF5ZXI6On5QbGF0Zm9ybUNBTGF5ZXIoKQoreworICAgIC8vIFRvc3MgYWxsIHRoZSBraWRzCisg
ICAgcmVtb3ZlQWxsU3VibGF5ZXJzKCk7CisKKyAgICAvLyBHZXQgcmlkIG9mIHRoZSB1c2VyIGRh
dGEKKyAgICBQbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbCogbGF5ZXJJbnRlcm4gPSBpbnRlcm4o
dGhpcyk7CisgICAgQ0FDRkxheWVyU2V0VXNlckRhdGEobV9sYXllci5nZXQoKSwgMCk7CisKKyAg
ICBkZWxldGUgbGF5ZXJJbnRlcm47Cit9CisKK1BsYXRmb3JtQ0FMYXllciogUGxhdGZvcm1DQUxh
eWVyOjpwbGF0Zm9ybUNBTGF5ZXIodm9pZCogcGxhdGZvcm1MYXllcikKK3sKKyAgICBpZiAoIXBs
YXRmb3JtTGF5ZXIpCisgICAgICAgIHJldHVybiAwOworICAgIAorICAgIFBsYXRmb3JtQ0FMYXll
cldpbkludGVybmFsKiBsYXllckludGVybiA9IGludGVybihwbGF0Zm9ybUxheWVyKTsKKyAgICBy
ZXR1cm4gbGF5ZXJJbnRlcm4gPyBsYXllckludGVybi0+b3duZXIoKSA6IDA7Cit9CisKK1BsYXRm
b3JtTGF5ZXIqIFBsYXRmb3JtQ0FMYXllcjo6cGxhdGZvcm1MYXllcigpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fbGF5ZXIuZ2V0KCk7Cit9CisKK1BsYXRmb3JtQ0FMYXllciogUGxhdGZvcm1DQUxh
eWVyOjpyb290TGF5ZXIoKSBjb25zdAoreworICAgIFdLQ0FDRkxheWVyUmVuZGVyZXIqIHJlbmRl
cmVyID0gcmVuZGVyZXJGb3JMYXllcih0aGlzKTsKKyAgICByZXR1cm4gcmVuZGVyZXIgPyByZW5k
ZXJlci0+cm9vdExheWVyKCkgOiAwOworfQorCit2b2lkIFBsYXRmb3JtQ0FMYXllcjo6c2V0TmVl
ZHNEaXNwbGF5KGNvbnN0IEZsb2F0UmVjdCogZGlydHlSZWN0KQoreworICAgIGludGVybih0aGlz
KS0+c2V0TmVlZHNEaXNwbGF5KGRpcnR5UmVjdCk7Cit9CisgICAgCit2b2lkIFBsYXRmb3JtQ0FM
YXllcjo6c2V0TmVlZHNDb21taXQoKQoreworICAgIFdLQ0FDRkxheWVyUmVuZGVyZXIqIHJlbmRl
cmVyID0gcmVuZGVyZXJGb3JMYXllcih0aGlzKTsKKyAgICBpZiAocmVuZGVyZXIpCisgICAgICAg
IHJlbmRlcmVyLT5sYXllclRyZWVEaWRDaGFuZ2UoKTsKK30KKwordm9pZCBQbGF0Zm9ybUNBTGF5
ZXI6OnNldENvbnRlbnRzQ2hhbmdlZCgpCit7CisgICAgLy8gRklYTUU6IFRoZXJlIGlzIG5vIGVx
dWl2YWxlbnQgb2Ygc2V0Q29udGVudHNDaGFuZ2VkIGluIENBQ0YuIEZvciBub3cgSSB3aWxsCisg
ICAgLy8gc2V0IGNvbnRlbnRzIHRvIDAgYW5kIHRoZW4gYmFjayB0byBpdHMgb3JpZ2luYWwgdmFs
dWUgdG8gc2VlIGlmIHRoYXQKKyAgICAvLyBraWNrcyBDQUNGIGludG8gcmVkaXNwbGF5aW5nLgor
ICAgIFJldGFpblB0cjxDRlR5cGVSZWY+IGNvbnRlbnRzID0gQ0FDRkxheWVyR2V0Q29udGVudHMo
bV9sYXllci5nZXQoKSk7CisgICAgQ0FDRkxheWVyU2V0Q29udGVudHMobV9sYXllci5nZXQoKSwg
MCk7CisgICAgQ0FDRkxheWVyU2V0Q29udGVudHMobV9sYXllci5nZXQoKSwgY29udGVudHMuZ2V0
KCkpOworICAgIHNldE5lZWRzQ29tbWl0KCk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyOjpz
ZXROZWVkc0xheW91dCgpCit7CisgICAgaWYgKCFtX293bmVyIHx8ICFtX293bmVyLT5wbGF0Zm9y
bUNBTGF5ZXJSZXNwb25kc1RvTGF5b3V0Q2hhbmdlcygpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBDQUNGTGF5ZXJTZXROZWVkc0xheW91dChtX2xheWVyLmdldCgpKTsKKyAgICBzZXROZWVkc0Nv
bW1pdCgpOworfQorCitQbGF0Zm9ybUNBTGF5ZXIqIFBsYXRmb3JtQ0FMYXllcjo6c3VwZXJsYXll
cigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHBsYXRmb3JtQ0FMYXllcihDQUNGTGF5ZXJHZXRTdXBl
cmxheWVyKG1fbGF5ZXIuZ2V0KCkpKTsKK30KKwordm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OnJlbW92
ZUZyb21TdXBlcmxheWVyKCkKK3sKKyAgICBDQUNGTGF5ZXJSZW1vdmVGcm9tU3VwZXJsYXllciht
X2xheWVyLmdldCgpKTsKKyAgICBzZXROZWVkc0NvbW1pdCgpOworfQorCit2b2lkIFBsYXRmb3Jt
Q0FMYXllcjo6c2V0U3VibGF5ZXJzKGNvbnN0IFBsYXRmb3JtQ0FMYXllckxpc3QmIGxpc3QpCit7
CisgICAgaW50ZXJuKHRoaXMpLT5zZXRTdWJsYXllcnMobGlzdCk7Cit9CisKK3ZvaWQgUGxhdGZv
cm1DQUxheWVyOjpyZW1vdmVBbGxTdWJsYXllcnMoKQoreworICAgIGludGVybih0aGlzKS0+cmVt
b3ZlQWxsU3VibGF5ZXJzKCk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyOjphcHBlbmRTdWJs
YXllcihQbGF0Zm9ybUNBTGF5ZXIqIGxheWVyKQoreworICAgIC8vIFRoaXMgbXVzdCBiZSBpbiB0
ZXJtcyBvZiBpbnNlcnRTdWJsYXllciBpbnN0ZWFkIG9mIGEgZGlyZWN0IGNhbGwgc28gUGxhdGZv
cm1DQUxheWVySW50ZXJuYWwgY2FuIG92ZXJyaWRlLgorICAgIGluc2VydFN1YmxheWVyKGxheWVy
LCBzdWJsYXllckNvdW50KCkpOworfQorCit2b2lkIFBsYXRmb3JtQ0FMYXllcjo6aW5zZXJ0U3Vi
bGF5ZXIoUGxhdGZvcm1DQUxheWVyKiBsYXllciwgc2l6ZV90IGluZGV4KQoreworICAgIGludGVy
bih0aGlzKS0+aW5zZXJ0U3VibGF5ZXIobGF5ZXIsIGluZGV4KTsKK30KKwordm9pZCBQbGF0Zm9y
bUNBTGF5ZXI6OnJlcGxhY2VTdWJsYXllcihQbGF0Zm9ybUNBTGF5ZXIqIHJlZmVyZW5jZSwgUGxh
dGZvcm1DQUxheWVyKiBuZXdMYXllcikKK3sKKyAgICAvLyBUaGlzIG11c3Qgbm90IHVzZSBkaXJl
Y3QgY2FsbHMgdG8gYWxsb3cgUGxhdGZvcm1DQUxheWVySW50ZXJuYWwgdG8gb3ZlcnJpZGUuCisg
ICAgQVNTRVJUX0FSRyhyZWZlcmVuY2UsIHJlZmVyZW5jZSk7CisgICAgQVNTRVJUX0FSRyhyZWZl
cmVuY2UsIHJlZmVyZW5jZS0+c3VwZXJsYXllcigpID09IHRoaXMpOworCisgICAgaWYgKHJlZmVy
ZW5jZSA9PSBuZXdMYXllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgaW50IHJlZmVyZW5jZUlu
ZGV4ID0gaW50ZXJuKHRoaXMpLT5pbmRleE9mU3VibGF5ZXIocmVmZXJlbmNlKTsKKyAgICBBU1NF
UlQocmVmZXJlbmNlSW5kZXggIT0gLTEpOworICAgIGlmIChyZWZlcmVuY2VJbmRleCA9PSAtMSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgcmVmZXJlbmNlLT5yZW1vdmVGcm9tU3VwZXJsYXllcigp
OworCisgICAgaWYgKG5ld0xheWVyKSB7CisgICAgICAgIG5ld0xheWVyLT5yZW1vdmVGcm9tU3Vw
ZXJsYXllcigpOworICAgICAgICBpbnNlcnRTdWJsYXllcihuZXdMYXllciwgcmVmZXJlbmNlSW5k
ZXgpOworICAgIH0KK30KKworc2l6ZV90IFBsYXRmb3JtQ0FMYXllcjo6c3VibGF5ZXJDb3VudCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIGludGVybih0aGlzKS0+c3VibGF5ZXJDb3VudCgpOworfQor
Cit2b2lkIFBsYXRmb3JtQ0FMYXllcjo6YWRvcHRTdWJsYXllcnMoUGxhdGZvcm1DQUxheWVyKiBz
b3VyY2UpCit7CisgICAgLy8gTWFrZSBhIGxpc3Qgb2YgdGhlIHN1YmxheWVycyBmcm9tIHNvdXJj
ZQorICAgIFBsYXRmb3JtQ0FMYXllckxpc3Qgc3VibGF5ZXJzOworICAgIHNpemVfdCBuID0gc291
cmNlLT5zdWJsYXllckNvdW50KCk7CisgICAgQ0ZBcnJheVJlZiBzb3VyY2VTdWJsYXllcnMgPSBD
QUNGTGF5ZXJHZXRTdWJsYXllcnMoc291cmNlLT5wbGF0Zm9ybUxheWVyKCkpOworCisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBuOyArK2kpIHsKKyAgICAgICAgQ0FDRkxheWVyUmVmIGxheWVy
ID0gc3RhdGljX2Nhc3Q8Q0FDRkxheWVyUmVmPihjb25zdF9jYXN0PHZvaWQqPihDRkFycmF5R2V0
VmFsdWVBdEluZGV4KHNvdXJjZVN1YmxheWVycywgaSkpKTsKKyAgICAgICAgc3VibGF5ZXJzLmFw
cGVuZChwbGF0Zm9ybUNBTGF5ZXIobGF5ZXIpKTsKKyAgICB9CisKKyAgICAvLyBVc2Ugc2V0U3Vi
bGF5ZXJzKCkgYmVjYXVzZSBpdCBwcm9wZXJseSBudWxscyBvdXQgdGhlIHN1cGVybGF5ZXIgcG9p
bnRlcnMuCisgICAgc2V0U3VibGF5ZXJzKHN1YmxheWVycyk7Cit9CisKK3ZvaWQgUGxhdGZvcm1D
QUxheWVyOjphZGRBbmltYXRpb25Gb3JLZXkoY29uc3QgU3RyaW5nJiBrZXksIFBsYXRmb3JtQ0FB
bmltYXRpb24qIGFuaW1hdGlvbikKK3sKKyAgICAvLyBBZGQgaXQgdG8gdGhlIGFuaW1hdGlvbiBs
aXN0CisgICAgbV9hbmltYXRpb25zLmFkZChrZXksIGFuaW1hdGlvbik7CisKKyAgICBSZXRhaW5Q
dHI8Q0ZTdHJpbmdSZWY+IHMoQWRvcHRDRiwga2V5LmNyZWF0ZUNGU3RyaW5nKCkpOworICAgIENB
Q0ZMYXllckFkZEFuaW1hdGlvbihtX2xheWVyLmdldCgpLCBzLmdldCgpLCBhbmltYXRpb24tPnBs
YXRmb3JtQW5pbWF0aW9uKCkpOworICAgIHNldE5lZWRzQ29tbWl0KCk7CisKKyAgICAvLyBUZWxs
IHRoZSByZW5kZXJlciBhYm91dCBpdCBzbyB3ZSBjYW4gZmlyZSB0aGUgc3RhcnQgYW5pbWF0aW9u
IGV2ZW50CisgICAgV0tDQUNGTGF5ZXJSZW5kZXJlciogcmVuZGVyZXIgPSByZW5kZXJlckZvckxh
eWVyKHRoaXMpOworICAgIGlmIChyZW5kZXJlcikKKyAgICAgICAgcmVuZGVyZXItPmFkZFBlbmRp
bmdBbmltYXRlZExheWVyKHRoaXMpOworfQorCit2b2lkIFBsYXRmb3JtQ0FMYXllcjo6cmVtb3Zl
QW5pbWF0aW9uRm9yS2V5KGNvbnN0IFN0cmluZyYga2V5KQoreworICAgIC8vIFJlbW92ZSBpdCBm
cm9tIHRoZSBhbmltYXRpb24gbGlzdAorICAgIG1fYW5pbWF0aW9ucy5yZW1vdmUoa2V5KTsKKwor
ICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcyhBZG9wdENGLCBrZXkuY3JlYXRlQ0ZTdHJpbmco
KSk7CisgICAgQ0FDRkxheWVyUmVtb3ZlQW5pbWF0aW9uKG1fbGF5ZXIuZ2V0KCksIHMuZ2V0KCkp
OworCisgICAgLy8gV2UgZG9uJ3QgInJlbW92ZSIgYSBsYXllciBmcm9tIFdLQ0FDRkxheWVyUmVu
ZGVyZXIgd2hlbiBpdCBsb3NlcyBhbiBhbmltYXRpb24uCisgICAgLy8gVGhlcmUgbWF5IGJlIG90
aGVyIGFjdGl2ZSBhbmltYXRpb25zIG9uIHRoZSBsYXllciBhbmQgaWYgYW4gYW5pbWF0aW9uCisg
ICAgLy8gY2FsbGJhY2sgaXMgZmlyZWQgb24gYSBsYXllciB3aXRob3V0IGFueSBhbmltYXRpb25z
IG5vIGhhcm0gaXMgZG9uZS4KKworICAgIHNldE5lZWRzQ29tbWl0KCk7Cit9CisKK1Bhc3NSZWZQ
dHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gUGxhdGZvcm1DQUxheWVyOjphbmltYXRpb25Gb3JLZXko
Y29uc3QgU3RyaW5nJiBrZXkpCit7CisgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxQbGF0Zm9y
bUNBQW5pbWF0aW9uPiA+OjppdGVyYXRvciBpdCA9IG1fYW5pbWF0aW9ucy5maW5kKGtleSk7Cisg
ICAgaWYgKGl0ID09IG1fYW5pbWF0aW9ucy5lbmQoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAg
ICByZXR1cm4gaXQtPnNlY29uZDsKK30KKworUGxhdGZvcm1DQUxheWVyKiBQbGF0Zm9ybUNBTGF5
ZXI6Om1hc2soKSBjb25zdAoreworICAgIHJldHVybiBwbGF0Zm9ybUNBTGF5ZXIoQ0FDRkxheWVy
R2V0TWFzayhtX2xheWVyLmdldCgpKSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyOjpzZXRN
YXNrKFBsYXRmb3JtQ0FMYXllciogbGF5ZXIpCit7CisgICAgQ0FDRkxheWVyU2V0TWFzayhtX2xh
eWVyLmdldCgpLCBsYXllciA/IGxheWVyLT5wbGF0Zm9ybUxheWVyKCkgOiAwKTsKKyAgICBzZXRO
ZWVkc0NvbW1pdCgpOworfQorCitib29sIFBsYXRmb3JtQ0FMYXllcjo6aXNPcGFxdWUoKSBjb25z
dAoreworICAgIHJldHVybiBDQUNGTGF5ZXJJc09wYXF1ZShtX2xheWVyLmdldCgpKTsKK30KKwor
dm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OnNldE9wYXF1ZShib29sIHZhbHVlKQoreworICAgIENBQ0ZM
YXllclNldE9wYXF1ZShtX2xheWVyLmdldCgpLCB2YWx1ZSk7CisgICAgc2V0TmVlZHNDb21taXQo
KTsKK30KKworRmxvYXRSZWN0IFBsYXRmb3JtQ0FMYXllcjo6Ym91bmRzKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gQ0FDRkxheWVyR2V0Qm91bmRzKG1fbGF5ZXIuZ2V0KCkpOworfQorCit2b2lkIFBs
YXRmb3JtQ0FMYXllcjo6c2V0Qm91bmRzKGNvbnN0IEZsb2F0UmVjdCYgdmFsdWUpCit7CisgICAg
aW50ZXJuKHRoaXMpLT5zZXRCb3VuZHModmFsdWUpOworICAgIHNldE5lZWRzTGF5b3V0KCk7Cit9
CisKK0Zsb2F0UG9pbnQzRCBQbGF0Zm9ybUNBTGF5ZXI6OnBvc2l0aW9uKCkgY29uc3QKK3sKKyAg
ICBDR1BvaW50IHBvaW50ID0gQ0FDRkxheWVyR2V0UG9zaXRpb24obV9sYXllci5nZXQoKSk7Cisg
ICAgcmV0dXJuIEZsb2F0UG9pbnQzRChwb2ludC54LCBwb2ludC55LCBDQUNGTGF5ZXJHZXRaUG9z
aXRpb24obV9sYXllci5nZXQoKSkpOworfQorCit2b2lkIFBsYXRmb3JtQ0FMYXllcjo6c2V0UG9z
aXRpb24oY29uc3QgRmxvYXRQb2ludDNEJiB2YWx1ZSkKK3sKKyAgICBDQUNGTGF5ZXJTZXRQb3Np
dGlvbihtX2xheWVyLmdldCgpLCBDR1BvaW50TWFrZSh2YWx1ZS54KCksIHZhbHVlLnkoKSkpOwor
ICAgIENBQ0ZMYXllclNldFpQb3NpdGlvbihtX2xheWVyLmdldCgpLCB2YWx1ZS56KCkpOworICAg
IHNldE5lZWRzQ29tbWl0KCk7Cit9CisKK0Zsb2F0UG9pbnQzRCBQbGF0Zm9ybUNBTGF5ZXI6OmFu
Y2hvclBvaW50KCkgY29uc3QKK3sKKyAgICBDR1BvaW50IHBvaW50ID0gQ0FDRkxheWVyR2V0QW5j
aG9yUG9pbnQobV9sYXllci5nZXQoKSk7CisgICAgZmxvYXQgeiA9IENBQ0ZMYXllckdldEFuY2hv
clBvaW50WihtX2xheWVyLmdldCgpKTsKKyAgICByZXR1cm4gRmxvYXRQb2ludDNEKHBvaW50Lngs
IHBvaW50LnksIHopOworfQorCit2b2lkIFBsYXRmb3JtQ0FMYXllcjo6c2V0QW5jaG9yUG9pbnQo
Y29uc3QgRmxvYXRQb2ludDNEJiB2YWx1ZSkKK3sKKyAgICBDQUNGTGF5ZXJTZXRBbmNob3JQb2lu
dChtX2xheWVyLmdldCgpLCBDR1BvaW50TWFrZSh2YWx1ZS54KCksIHZhbHVlLnkoKSkpOworICAg
IENBQ0ZMYXllclNldEFuY2hvclBvaW50WihtX2xheWVyLmdldCgpLCB2YWx1ZS56KCkpOworICAg
IHNldE5lZWRzQ29tbWl0KCk7Cit9CisKK1RyYW5zZm9ybWF0aW9uTWF0cml4IFBsYXRmb3JtQ0FM
YXllcjo6dHJhbnNmb3JtKCkgY29uc3QKK3sKKyAgICByZXR1cm4gQ0FDRkxheWVyR2V0VHJhbnNm
b3JtKG1fbGF5ZXIuZ2V0KCkpOworfQorCit2b2lkIFBsYXRmb3JtQ0FMYXllcjo6c2V0VHJhbnNm
b3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB2YWx1ZSkKK3sKKyAgICBDQUNGTGF5ZXJT
ZXRUcmFuc2Zvcm0obV9sYXllci5nZXQoKSwgdmFsdWUpOworICAgIHNldE5lZWRzQ29tbWl0KCk7
Cit9CisKK1RyYW5zZm9ybWF0aW9uTWF0cml4IFBsYXRmb3JtQ0FMYXllcjo6c3VibGF5ZXJUcmFu
c2Zvcm0oKSBjb25zdAoreworICAgIHJldHVybiBDQUNGTGF5ZXJHZXRTdWJsYXllclRyYW5zZm9y
bShtX2xheWVyLmdldCgpKTsKK30KKwordm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OnNldFN1YmxheWVy
VHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB2YWx1ZSkKK3sKKyAgICBDQUNG
TGF5ZXJTZXRTdWJsYXllclRyYW5zZm9ybShtX2xheWVyLmdldCgpLCB2YWx1ZSk7CisgICAgc2V0
TmVlZHNDb21taXQoKTsKK30KKworVHJhbnNmb3JtYXRpb25NYXRyaXggUGxhdGZvcm1DQUxheWVy
Ojpjb250ZW50c1RyYW5zZm9ybSgpIGNvbnN0Cit7CisgICAgLy8gQ29udGVudHNUcmFuc2Zvcm0g
aXMgbm90IHVzZWQKKyAgICByZXR1cm4gVHJhbnNmb3JtYXRpb25NYXRyaXgoKTsKK30KKwordm9p
ZCBQbGF0Zm9ybUNBTGF5ZXI6OnNldENvbnRlbnRzVHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JikKK3sKKyAgICAvLyBDb250ZW50c1RyYW5zZm9ybSBpcyBub3QgdXNlZAorfQor
Citib29sIFBsYXRmb3JtQ0FMYXllcjo6aXNIaWRkZW4oKSBjb25zdAoreworICAgIHJldHVybiBD
QUNGTGF5ZXJJc0hpZGRlbihtX2xheWVyLmdldCgpKTsKK30KKwordm9pZCBQbGF0Zm9ybUNBTGF5
ZXI6OnNldEhpZGRlbihib29sIHZhbHVlKQoreworICAgIENBQ0ZMYXllclNldEhpZGRlbihtX2xh
eWVyLmdldCgpLCB2YWx1ZSk7CisgICAgc2V0TmVlZHNDb21taXQoKTsKK30KKworYm9vbCBQbGF0
Zm9ybUNBTGF5ZXI6OmlzR2VvbWV0cnlGbGlwcGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gQ0FD
RkxheWVySXNHZW9tZXRyeUZsaXBwZWQobV9sYXllci5nZXQoKSk7Cit9CisKK3ZvaWQgUGxhdGZv
cm1DQUxheWVyOjpzZXRHZW9tZXRyeUZsaXBwZWQoYm9vbCB2YWx1ZSkKK3sKKyAgICBDQUNGTGF5
ZXJTZXRHZW9tZXRyeUZsaXBwZWQobV9sYXllci5nZXQoKSwgdmFsdWUpOworICAgIHNldE5lZWRz
Q29tbWl0KCk7Cit9CisKK2Jvb2wgUGxhdGZvcm1DQUxheWVyOjppc0RvdWJsZVNpZGVkKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gQ0FDRkxheWVySXNEb3VibGVTaWRlZChtX2xheWVyLmdldCgpKTsK
K30KKwordm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OnNldERvdWJsZVNpZGVkKGJvb2wgdmFsdWUpCit7
CisgICAgQ0FDRkxheWVyU2V0RG91YmxlU2lkZWQobV9sYXllci5nZXQoKSwgdmFsdWUpOworICAg
IHNldE5lZWRzQ29tbWl0KCk7Cit9CisKK2Jvb2wgUGxhdGZvcm1DQUxheWVyOjptYXNrc1RvQm91
bmRzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gQ0FDRkxheWVyR2V0TWFza3NUb0JvdW5kcyhtX2xh
eWVyLmdldCgpKTsKK30KKwordm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OnNldE1hc2tzVG9Cb3VuZHMo
Ym9vbCB2YWx1ZSkKK3sKKyAgICBDQUNGTGF5ZXJTZXRNYXNrc1RvQm91bmRzKG1fbGF5ZXIuZ2V0
KCksIHZhbHVlKTsKKyAgICBzZXROZWVkc0NvbW1pdCgpOworfQorCitib29sIFBsYXRmb3JtQ0FM
YXllcjo6YWNjZWxlcmF0ZXNEcmF3aW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyOjpzZXRBY2NlbGVyYXRlc0RyYXdpbmcoYm9vbCkKK3sK
K30KKworQ0ZUeXBlUmVmIFBsYXRmb3JtQ0FMYXllcjo6Y29udGVudHMoKSBjb25zdAoreworICAg
IHJldHVybiBjb25zdF9jYXN0PHZvaWQqPihDQUNGTGF5ZXJHZXRDb250ZW50cyhtX2xheWVyLmdl
dCgpKSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyOjpzZXRDb250ZW50cyhDRlR5cGVSZWYg
dmFsdWUpCit7CisgICAgQ0FDRkxheWVyU2V0Q29udGVudHMobV9sYXllci5nZXQoKSwgdmFsdWUp
OworICAgIHNldE5lZWRzQ29tbWl0KCk7Cit9CisKK0Zsb2F0UmVjdCBQbGF0Zm9ybUNBTGF5ZXI6
OmNvbnRlbnRzUmVjdCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIENBQ0ZMYXllckdldENvbnRlbnRz
UmVjdChtX2xheWVyLmdldCgpKTsKK30KKwordm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OnNldENvbnRl
bnRzUmVjdChjb25zdCBGbG9hdFJlY3QmIHZhbHVlKQoreworICAgIENBQ0ZMYXllclNldENvbnRl
bnRzUmVjdChtX2xheWVyLmdldCgpLCB2YWx1ZSk7CisgICAgc2V0TmVlZHNDb21taXQoKTsKK30K
Kwordm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OnNldE1pbmlmaWNhdGlvbkZpbHRlcihGaWx0ZXJUeXBl
IHZhbHVlKQoreworICAgIENBQ0ZMYXllclNldE1pbmlmaWNhdGlvbkZpbHRlcihtX2xheWVyLmdl
dCgpLCB0b0NBQ0ZGaWx0ZXJUeXBlKHZhbHVlKSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVy
OjpzZXRNYWduaWZpY2F0aW9uRmlsdGVyKEZpbHRlclR5cGUgdmFsdWUpCit7CisgICAgQ0FDRkxh
eWVyU2V0TWFnbmlmaWNhdGlvbkZpbHRlcihtX2xheWVyLmdldCgpLCB0b0NBQ0ZGaWx0ZXJUeXBl
KHZhbHVlKSk7CisgICAgc2V0TmVlZHNDb21taXQoKTsKK30KKworQ29sb3IgUGxhdGZvcm1DQUxh
eWVyOjpiYWNrZ3JvdW5kQ29sb3IoKSBjb25zdAoreworICAgIHJldHVybiBDQUNGTGF5ZXJHZXRC
YWNrZ3JvdW5kQ29sb3IobV9sYXllci5nZXQoKSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVy
OjpzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImIHZhbHVlKQoreworICAgIENHRmxvYXQg
Y29tcG9uZW50c1s0XTsKKyAgICB2YWx1ZS5nZXRSR0JBKGNvbXBvbmVudHNbMF0sIGNvbXBvbmVu
dHNbMV0sIGNvbXBvbmVudHNbMl0sIGNvbXBvbmVudHNbM10pOworCisgICAgUmV0YWluUHRyPENH
Q29sb3JTcGFjZVJlZj4gY29sb3JTcGFjZShBZG9wdENGLCBDR0NvbG9yU3BhY2VDcmVhdGVEZXZp
Y2VSR0IoKSk7CisgICAgUmV0YWluUHRyPENHQ29sb3JSZWY+IGNvbG9yKEFkb3B0Q0YsIENHQ29s
b3JDcmVhdGUoY29sb3JTcGFjZS5nZXQoKSwgY29tcG9uZW50cykpOworCisgICAgQ0FDRkxheWVy
U2V0QmFja2dyb3VuZENvbG9yKG1fbGF5ZXIuZ2V0KCksIGNvbG9yLmdldCgpKTsKKyAgICBzZXRO
ZWVkc0NvbW1pdCgpOworfQorCitmbG9hdCBQbGF0Zm9ybUNBTGF5ZXI6OmJvcmRlcldpZHRoKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gQ0FDRkxheWVyR2V0Qm9yZGVyV2lkdGgobV9sYXllci5nZXQo
KSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyOjpzZXRCb3JkZXJXaWR0aChmbG9hdCB2YWx1
ZSkKK3sKKyAgICBDQUNGTGF5ZXJTZXRCb3JkZXJXaWR0aChtX2xheWVyLmdldCgpLCB2YWx1ZSk7
CisgICAgc2V0TmVlZHNDb21taXQoKTsKK30KKworQ29sb3IgUGxhdGZvcm1DQUxheWVyOjpib3Jk
ZXJDb2xvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIENBQ0ZMYXllckdldEJvcmRlckNvbG9yKG1f
bGF5ZXIuZ2V0KCkpOworfQorCit2b2lkIFBsYXRmb3JtQ0FMYXllcjo6c2V0Qm9yZGVyQ29sb3Io
Y29uc3QgQ29sb3ImIHZhbHVlKQoreworICAgIENHRmxvYXQgY29tcG9uZW50c1s0XTsKKyAgICB2
YWx1ZS5nZXRSR0JBKGNvbXBvbmVudHNbMF0sIGNvbXBvbmVudHNbMV0sIGNvbXBvbmVudHNbMl0s
IGNvbXBvbmVudHNbM10pOworCisgICAgUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gY29sb3JT
cGFjZShBZG9wdENGLCBDR0NvbG9yU3BhY2VDcmVhdGVEZXZpY2VSR0IoKSk7CisgICAgUmV0YWlu
UHRyPENHQ29sb3JSZWY+IGNvbG9yKEFkb3B0Q0YsIENHQ29sb3JDcmVhdGUoY29sb3JTcGFjZS5n
ZXQoKSwgY29tcG9uZW50cykpOworCisgICAgQ0FDRkxheWVyU2V0Qm9yZGVyQ29sb3IobV9sYXll
ci5nZXQoKSwgY29sb3IuZ2V0KCkpOworICAgIHNldE5lZWRzQ29tbWl0KCk7Cit9CisKK2Zsb2F0
IFBsYXRmb3JtQ0FMYXllcjo6b3BhY2l0eSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIENBQ0ZMYXll
ckdldE9wYWNpdHkobV9sYXllci5nZXQoKSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyOjpz
ZXRPcGFjaXR5KGZsb2F0IHZhbHVlKQoreworICAgIENBQ0ZMYXllclNldE9wYWNpdHkobV9sYXll
ci5nZXQoKSwgdmFsdWUpOworICAgIHNldE5lZWRzQ29tbWl0KCk7Cit9CisKK1N0cmluZyBQbGF0
Zm9ybUNBTGF5ZXI6Om5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBDQUNGTGF5ZXJHZXROYW1l
KG1fbGF5ZXIuZ2V0KCkpOworfQorCit2b2lkIFBsYXRmb3JtQ0FMYXllcjo6c2V0TmFtZShjb25z
dCBTdHJpbmcmIHZhbHVlKQoreworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcyhBZG9wdENG
LCB2YWx1ZS5jcmVhdGVDRlN0cmluZygpKTsKKyAgICBDQUNGTGF5ZXJTZXROYW1lKG1fbGF5ZXIu
Z2V0KCksIHMuZ2V0KCkpOworICAgIHNldE5lZWRzQ29tbWl0KCk7Cit9CisKK0Zsb2F0UmVjdCBQ
bGF0Zm9ybUNBTGF5ZXI6OmZyYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gQ0FDRkxheWVyR2V0
RnJhbWUobV9sYXllci5nZXQoKSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyOjpzZXRGcmFt
ZShjb25zdCBGbG9hdFJlY3QmIHZhbHVlKQoreworICAgIGludGVybih0aGlzKS0+c2V0RnJhbWUo
dmFsdWUpOworICAgIHNldE5lZWRzTGF5b3V0KCk7Cit9CisKK2Zsb2F0IFBsYXRmb3JtQ0FMYXll
cjo6c3BlZWQoKSBjb25zdAoreworICAgIHJldHVybiBDQUNGTGF5ZXJHZXRTcGVlZChtX2xheWVy
LmdldCgpKTsKK30KKwordm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OnNldFNwZWVkKGZsb2F0IHZhbHVl
KQoreworICAgIENBQ0ZMYXllclNldFNwZWVkKG1fbGF5ZXIuZ2V0KCksIHZhbHVlKTsKKyAgICBz
ZXROZWVkc0NvbW1pdCgpOworfQorCitDRlRpbWVJbnRlcnZhbCBQbGF0Zm9ybUNBTGF5ZXI6OnRp
bWVPZmZzZXQoKSBjb25zdAoreworICAgIHJldHVybiBDQUNGTGF5ZXJHZXRUaW1lT2Zmc2V0KG1f
bGF5ZXIuZ2V0KCkpOworfQorCit2b2lkIFBsYXRmb3JtQ0FMYXllcjo6c2V0VGltZU9mZnNldChD
RlRpbWVJbnRlcnZhbCB2YWx1ZSkKK3sKKyAgICBDQUNGTGF5ZXJTZXRUaW1lT2Zmc2V0KG1fbGF5
ZXIuZ2V0KCksIHZhbHVlKTsKKyAgICBzZXROZWVkc0NvbW1pdCgpOworfQorCisjaWZuZGVmIE5E
RUJVRworc3RhdGljIHZvaWQgcHJpbnRJbmRlbnQoaW50IGluZGVudCkKK3sKKyAgICBmb3IgKCA7
IGluZGVudCA+IDA7IC0taW5kZW50KQorICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiAgIik7Cit9
CisKK3N0YXRpYyB2b2lkIHByaW50VHJhbnNmb3JtKGNvbnN0IENBVHJhbnNmb3JtM0QmIHRyYW5z
Zm9ybSkKK3sKKyAgICBmcHJpbnRmKHN0ZGVyciwgIlslZyAlZyAlZyAlZzsgJWcgJWcgJWcgJWc7
ICVnICVnICVnICVnOyAlZyAlZyAlZyAlZ10iLAorICAgICAgICAgICAgICAgICAgICB0cmFuc2Zv
cm0ubTExLCB0cmFuc2Zvcm0ubTEyLCB0cmFuc2Zvcm0ubTEzLCB0cmFuc2Zvcm0ubTE0LCAKKyAg
ICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtLm0yMSwgdHJhbnNmb3JtLm0yMiwgdHJhbnNmb3Jt
Lm0yMywgdHJhbnNmb3JtLm0yNCwgCisgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybS5tMzEs
IHRyYW5zZm9ybS5tMzIsIHRyYW5zZm9ybS5tMzMsIHRyYW5zZm9ybS5tMzQsIAorICAgICAgICAg
ICAgICAgICAgICB0cmFuc2Zvcm0ubTQxLCB0cmFuc2Zvcm0ubTQyLCB0cmFuc2Zvcm0ubTQzLCB0
cmFuc2Zvcm0ubTQ0KTsKK30KKworc3RhdGljIHZvaWQgcHJpbnRMYXllcihjb25zdCBQbGF0Zm9y
bUNBTGF5ZXIqIGxheWVyLCBpbnQgaW5kZW50KQoreworICAgIEZsb2F0UG9pbnQzRCBsYXllclBv
c2l0aW9uID0gbGF5ZXItPnBvc2l0aW9uKCk7CisgICAgRmxvYXRQb2ludDNEIGxheWVyQW5jaG9y
UG9pbnQgPSBsYXllci0+YW5jaG9yUG9pbnQoKTsKKyAgICBGbG9hdFJlY3QgbGF5ZXJCb3VuZHMg
PSBsYXllci0+Ym91bmRzKCk7CisgICAgcHJpbnRJbmRlbnQoaW5kZW50KTsKKworICAgIGNoYXIq
IGxheWVyVHlwZU5hbWUgPSAwOworICAgIHN3aXRjaCAobGF5ZXItPmxheWVyVHlwZSgpKSB7Cisg
ICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUxheWVyOiBsYXllclR5cGVOYW1lID0g
ImxheWVyIjsgYnJlYWs7CisgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVdlYkxh
eWVyOiBsYXllclR5cGVOYW1lID0gIndlYi1sYXllciI7IGJyZWFrOworICAgIGNhc2UgUGxhdGZv
cm1DQUxheWVyOjpMYXllclR5cGVUcmFuc2Zvcm1MYXllcjogbGF5ZXJUeXBlTmFtZSA9ICJ0cmFu
c2Zvcm0tbGF5ZXIiOyBicmVhazsKKyAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBl
V2ViVGlsZWRMYXllcjogbGF5ZXJUeXBlTmFtZSA9ICJ3ZWItdGlsZWQtbGF5ZXIiOyBicmVhazsK
KyAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlUm9vdExheWVyOiBsYXllclR5cGVO
YW1lID0gInJvb3QtbGF5ZXIiOyBicmVhazsKKyAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5
ZXJUeXBlQ3VzdG9tOiBsYXllclR5cGVOYW1lID0gImN1c3RvbS1sYXllciI7IGJyZWFrOworICAg
IH0KKworICAgIGZwcmludGYoc3RkZXJyLCAiKCVzIFslZyAlZyAlZ10gWyVnICVnICVnICVnXSBb
JWcgJWcgJWddIHN1cGVybGF5ZXI9JXBcbiIsCisgICAgICAgIGxheWVyVHlwZU5hbWUsCisgICAg
ICAgIGxheWVyUG9zaXRpb24ueCgpLCBsYXllclBvc2l0aW9uLnkoKSwgbGF5ZXJQb3NpdGlvbi56
KCksIAorICAgICAgICBsYXllckJvdW5kcy54KCksIGxheWVyQm91bmRzLnkoKSwgbGF5ZXJCb3Vu
ZHMud2lkdGgoKSwgbGF5ZXJCb3VuZHMuaGVpZ2h0KCksCisgICAgICAgIGxheWVyQW5jaG9yUG9p
bnQueCgpLCBsYXllckFuY2hvclBvaW50LnkoKSwgbGF5ZXJBbmNob3JQb2ludC56KCksIGxheWVy
LT5zdXBlcmxheWVyKCkpOworCisgICAgLy8gUHJpbnQgbmFtZSBpZiBuZWVkZWQKKyAgICBTdHJp
bmcgbGF5ZXJOYW1lID0gbGF5ZXItPm5hbWUoKTsKKyAgICBpZiAoIWxheWVyTmFtZS5pc0VtcHR5
KCkpIHsKKyAgICAgICAgcHJpbnRJbmRlbnQoaW5kZW50ICsgMSk7CisgICAgICAgIGZwcmludGYo
c3RkZXJyLCAiKG5hbWUgJXMpXG4iLCBsYXllck5hbWUudXRmOCgpLmRhdGEoKSk7CisgICAgfQor
CisgICAgLy8gUHJpbnQgbWFza3NUb0JvdW5kcyBpZiBuZWVkZWQKKyAgICBib29sIGxheWVyTWFz
a3NUb0JvdW5kcyA9IGxheWVyLT5tYXNrc1RvQm91bmRzKCk7CisgICAgaWYgKGxheWVyTWFza3NU
b0JvdW5kcykgeworICAgICAgICBwcmludEluZGVudChpbmRlbnQgKyAxKTsKKyAgICAgICAgZnBy
aW50ZihzdGRlcnIsICIobWFza3NUb0JvdW5kcyB0cnVlKVxuIik7CisgICAgfQorCisgICAgLy8g
UHJpbnQgb3BhY2l0eSBpZiBuZWVkZWQKKyAgICBmbG9hdCBsYXllck9wYWNpdHkgPSBsYXllci0+
b3BhY2l0eSgpOworICAgIGlmIChsYXllck9wYWNpdHkgIT0gMSkgeworICAgICAgICBwcmludElu
ZGVudChpbmRlbnQgKyAxKTsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICIob3BhY2l0eSAlaGYp
XG4iLCBsYXllck9wYWNpdHkpOworICAgIH0KKworICAgIC8vIFByaW50IHN1YmxheWVyVHJhbnNm
b3JtIGlmIG5lZWRlZAorICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGxheWVyVHJhbnNmb3JtID0g
bGF5ZXItPnN1YmxheWVyVHJhbnNmb3JtKCk7CisgICAgaWYgKCFsYXllclRyYW5zZm9ybS5pc0lk
ZW50aXR5KCkpIHsKKyAgICAgICAgcHJpbnRJbmRlbnQoaW5kZW50ICsgMSk7CisgICAgICAgIGZw
cmludGYoc3RkZXJyLCAiKHN1YmxheWVyVHJhbnNmb3JtICIpOworICAgICAgICBwcmludFRyYW5z
Zm9ybShsYXllclRyYW5zZm9ybSk7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiKVxuIik7Cisg
ICAgfQorCisgICAgLy8gUHJpbnQgdHJhbnNmb3JtIGlmIG5lZWRlZAorICAgIGxheWVyVHJhbnNm
b3JtID0gbGF5ZXItPnRyYW5zZm9ybSgpOworICAgIGlmICghbGF5ZXJUcmFuc2Zvcm0uaXNJZGVu
dGl0eSgpKSB7CisgICAgICAgIHByaW50SW5kZW50KGluZGVudCArIDEpOworICAgICAgICBmcHJp
bnRmKHN0ZGVyciwgIih0cmFuc2Zvcm0gIik7CisgICAgICAgIHByaW50VHJhbnNmb3JtKGxheWVy
VHJhbnNmb3JtKTsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICIpXG4iKTsKKyAgICB9CisKKyAg
ICAvLyBQcmludCBjb250ZW50cyBpZiBuZWVkZWQKKyAgICBDRlR5cGVSZWYgbGF5ZXJDb250ZW50
cyA9IGxheWVyLT5jb250ZW50cygpOworICAgIGlmIChsYXllckNvbnRlbnRzKSB7CisgICAgICAg
IGlmIChDRkdldFR5cGVJRChsYXllckNvbnRlbnRzKSA9PSBDR0ltYWdlR2V0VHlwZUlEKCkpIHsK
KyAgICAgICAgICAgIENHSW1hZ2VSZWYgaW1hZ2VDb250ZW50cyA9IHN0YXRpY19jYXN0PENHSW1h
Z2VSZWY+KGNvbnN0X2Nhc3Q8dm9pZCo+KGxheWVyQ29udGVudHMpKTsKKyAgICAgICAgICAgIHBy
aW50SW5kZW50KGluZGVudCArIDEpOworICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIoY29u
dGVudHMgKGltYWdlIFslZCAlZF0pKVxuIiwKKyAgICAgICAgICAgICAgICBDR0ltYWdlR2V0V2lk
dGgoaW1hZ2VDb250ZW50cyksIENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2VDb250ZW50cykpOworICAg
ICAgICB9CisgICAgfQorCisgICAgLy8gUHJpbnQgc3VibGF5ZXJzIGlmIG5lZWRlZAorICAgIGlu
dCBuID0gbGF5ZXItPnN1YmxheWVyQ291bnQoKTsKKyAgICBpZiAobiA+IDApIHsKKyAgICAgICAg
cHJpbnRJbmRlbnQoaW5kZW50ICsgMSk7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiKHN1Ymxh
eWVyc1xuIik7CisKKyAgICAgICAgQ0ZBcnJheVJlZiBzdWJsYXllcnMgPSBDQUNGTGF5ZXJHZXRT
dWJsYXllcnMobGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSk7CisgICAgICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgbjsgKytpKSB7CisgICAgICAgICAgICBQbGF0Zm9ybUNBTGF5ZXIqIHN1YmxheWVyID0g
UGxhdGZvcm1DQUxheWVyOjpwbGF0Zm9ybUNBTGF5ZXIoY29uc3RfY2FzdDx2b2lkKj4oQ0ZBcnJh
eUdldFZhbHVlQXRJbmRleChzdWJsYXllcnMsIGkpKSk7CisgICAgICAgICAgICBwcmludExheWVy
KHN1YmxheWVyLCBpbmRlbnQgKyAyKTsKKyAgICAgICAgfQorCisgICAgICAgIHByaW50SW5kZW50
KGluZGVudCArIDEpOworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIilcbiIpOworICAgIH0KKwor
ICAgIHByaW50SW5kZW50KGluZGVudCk7CisgICAgZnByaW50ZihzdGRlcnIsICIpXG4iKTsKK30K
Kwordm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OnByaW50VHJlZSgpIGNvbnN0Cit7CisgICAgLy8gUHJp
bnQgaGVhZGluZyBpbmZvCisgICAgQ0dSZWN0IHJvb3RCb3VuZHMgPSBib3VuZHMoKTsKKyAgICBm
cHJpbnRmKHN0ZGVyciwgIlxuXG4qKiBSZW5kZXIgdHJlZSBhdCB0aW1lICVnIChib3VuZHMgJWcs
ICVnICVneCVnKSAqKlxuXG4iLCAKKyAgICAgICAgY3VycmVudFRpbWUoKSwgcm9vdEJvdW5kcy5v
cmlnaW4ueCwgcm9vdEJvdW5kcy5vcmlnaW4ueSwgcm9vdEJvdW5kcy5zaXplLndpZHRoLCByb290
Qm91bmRzLnNpemUuaGVpZ2h0KTsKKworICAgIC8vIFByaW50IGxheWVyIHRyZWUgZnJvbSB0aGUg
cm9vdAorICAgIHByaW50TGF5ZXIodGhpcywgMCk7Cit9CisjZW5kaWYgLy8gI2lmbmRlZiBOREVC
VUcKKworI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKSW5kZXg6IFdlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbkludGVybmFsLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1D
QUxheWVyV2luSW50ZXJuYWwuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbkludGVybmFsLmgJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpZm5kZWYgUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWxfaAorI2Rl
ZmluZSBQbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbF9oCisKKyNpZiBVU0UoQUNDRUxFUkFURURf
Q09NUE9TSVRJTkcpCisKKyNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ0dHZW9tZXRyeS5oPgorI2lu
Y2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK3R5cGVk
ZWYgc3RydWN0IF9DQUNGTGF5ZXIgKkNBQ0ZMYXllclJlZjsKK3R5cGVkZWYgc3RydWN0IENHQ29u
dGV4dCAqQ0dDb250ZXh0UmVmOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEZsb2F0
UmVjdDsKK2NsYXNzIFBsYXRmb3JtQ0FMYXllcjsKKwordHlwZWRlZiBWZWN0b3I8UmVmUHRyPFBs
YXRmb3JtQ0FMYXllcj4gPiBQbGF0Zm9ybUNBTGF5ZXJMaXN0OworCitjbGFzcyBQbGF0Zm9ybUNB
TGF5ZXJXaW5JbnRlcm5hbCB7CitwdWJsaWM6CisgICAgUGxhdGZvcm1DQUxheWVyV2luSW50ZXJu
YWwoUGxhdGZvcm1DQUxheWVyKik7CisgICAgflBsYXRmb3JtQ0FMYXllcldpbkludGVybmFsKCk7
CisKKyAgICB2b2lkIGRpc3BsYXlDYWxsYmFjayhDQUNGTGF5ZXJSZWYsIENHQ29udGV4dFJlZik7
CisgICAgdm9pZCBzZXROZWVkc0Rpc3BsYXkoY29uc3QgRmxvYXRSZWN0Kik7CisgICAgUGxhdGZv
cm1DQUxheWVyKiBvd25lcigpIGNvbnN0IHsgcmV0dXJuIG1fb3duZXI7IH0KKworICAgIHZvaWQg
c2V0U3VibGF5ZXJzKGNvbnN0IFBsYXRmb3JtQ0FMYXllckxpc3QmKTsKKyAgICB2b2lkIHJlbW92
ZUFsbFN1YmxheWVycygpOworICAgIHZvaWQgaW5zZXJ0U3VibGF5ZXIoUGxhdGZvcm1DQUxheWVy
Kiwgc2l6ZV90KTsKKyAgICBzaXplX3Qgc3VibGF5ZXJDb3VudCgpIGNvbnN0OworICAgIGludCBp
bmRleE9mU3VibGF5ZXIoY29uc3QgUGxhdGZvcm1DQUxheWVyKiByZWZlcmVuY2UpOworCisgICAg
dm9pZCBzZXRCb3VuZHMoY29uc3QgRmxvYXRSZWN0Jik7CisgICAgdm9pZCBzZXRGcmFtZShjb25z
dCBGbG9hdFJlY3QmKTsKKworcHJpdmF0ZToKKyAgICB2b2lkIGludGVybmFsU2V0TmVlZHNEaXNw
bGF5KGNvbnN0IEZsb2F0UmVjdCopOworICAgIFBsYXRmb3JtQ0FMYXllciogc3VibGF5ZXJBdElu
ZGV4KGludCkgY29uc3Q7CisKKyAgICBzdGF0aWMgdm9pZCB0aWxlRGlzcGxheUNhbGxiYWNrKENB
Q0ZMYXllclJlZiwgQ0dDb250ZXh0UmVmKTsKKworICAgIHZvaWQgZHJhd1RpbGUoQ0FDRkxheWVy
UmVmLCBDR0NvbnRleHRSZWYpOworICAgIENHU2l6ZSBjb25zdHJhaW5lZFNpemUoY29uc3QgQ0dT
aXplJikgY29uc3Q7CisgICAgdm9pZCBhZGRUaWxlKCk7CisgICAgdm9pZCByZW1vdmVUaWxlKCk7
CisgICAgQ0FDRkxheWVyUmVmIHRpbGVBdEluZGV4KGludCk7CisgICAgaW50IHRpbGVDb3VudCgp
IGNvbnN0OworICAgIHZvaWQgdXBkYXRlVGlsZXMoKTsKKworICAgIFBsYXRmb3JtQ0FMYXllciog
bV9vd25lcjsKKworICAgIENHU2l6ZSBtX3RpbGVTaXplOworICAgIENHU2l6ZSBtX2NvbnN0cmFp
bmVkU2l6ZTsKKyAgICBSZXRhaW5QdHI8Q0FDRkxheWVyUmVmPiBtX3RpbGVQYXJlbnQ7Cit9Owor
Cit9CisKKyNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisKKyNlbmRpZiAv
LyBQbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbF9oCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBQW5pbWF0aW9uV2luLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBQW5pbWF0aW9uV2luLmNw
cAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRm
b3JtQ0FBbmltYXRpb25XaW4uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU0NSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorCisj
aW5jbHVkZSAiUGxhdGZvcm1DQUFuaW1hdGlvbi5oIgorCisjaW5jbHVkZSAiRmxvYXRDb252ZXJz
aW9uLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJUaW1pbmdGdW5j
dGlvbi5oIgorI2luY2x1ZGUgPFF1YXJ0ekNvcmUvQ0FDRkFuaW1hdGlvbi5oPgorI2luY2x1ZGUg
PFF1YXJ0ekNvcmUvQ0FDRlRpbWluZy5oPgorI2luY2x1ZGUgPFF1YXJ0ekNvcmUvQ0FDRlRpbWlu
Z0Z1bmN0aW9uLmg+CisjaW5jbHVkZSA8UXVhcnR6Q29yZS9DQUNGVmFsdWVGdW5jdGlvbi5oPgor
I2luY2x1ZGUgPFF1YXJ0ekNvcmUvQ0FDRlZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi9VbnVzZWRQ
YXJhbS5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworc3RhdGljIFN0cmluZyB0b0NB
Q0ZGaWxsTW9kZVR5cGUoUGxhdGZvcm1DQUFuaW1hdGlvbjo6RmlsbE1vZGVUeXBlIHR5cGUpCit7
CisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpOb0Zp
bGxNb2RlOgorICAgIGNhc2UgUGxhdGZvcm1DQUFuaW1hdGlvbjo6Rm9yd2FyZHM6IHJldHVybiBr
Q0FDRkZpbGxNb2RlRm9yd2FyZHM7CisgICAgY2FzZSBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpCYWNr
d2FyZHM6IHJldHVybiBrQ0FDRkZpbGxNb2RlQmFja3dhcmRzOworICAgIGNhc2UgUGxhdGZvcm1D
QUFuaW1hdGlvbjo6Qm90aDogcmV0dXJuIGtDQUNGRmlsbE1vZGVCb3RoOworICAgIH0KKyAgICBy
ZXR1cm4gIiI7Cit9CisKK3N0YXRpYyBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpGaWxsTW9kZVR5cGUg
ZnJvbUNBQ0ZGaWxsTW9kZVR5cGUoY29uc3QgU3RyaW5nJiBzdHJpbmcpCit7CisgICAgaWYgKHN0
cmluZyA9PSBrQ0FDRkZpbGxNb2RlQmFja3dhcmRzKQorICAgICAgICByZXR1cm4gUGxhdGZvcm1D
QUFuaW1hdGlvbjo6QmFja3dhcmRzOworCisgICAgaWYgKHN0cmluZyA9PSBrQ0FDRkZpbGxNb2Rl
Qm90aCkKKyAgICAgICAgcmV0dXJuIFBsYXRmb3JtQ0FBbmltYXRpb246OkJvdGg7CisKKyAgICBy
ZXR1cm4gUGxhdGZvcm1DQUFuaW1hdGlvbjo6Rm9yd2FyZHM7Cit9CisKK3N0YXRpYyBTdHJpbmcg
dG9DQUNGVmFsdWVGdW5jdGlvblR5cGUoUGxhdGZvcm1DQUFuaW1hdGlvbjo6VmFsdWVGdW5jdGlv
blR5cGUgdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIFBsYXRmb3JtQ0FB
bmltYXRpb246Ok5vVmFsdWVGdW5jdGlvbjogcmV0dXJuICIiOworICAgIGNhc2UgUGxhdGZvcm1D
QUFuaW1hdGlvbjo6Um90YXRlWDogcmV0dXJuIGtDQUNGVmFsdWVGdW5jdGlvblJvdGF0ZVg7Cisg
ICAgY2FzZSBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpSb3RhdGVZOiByZXR1cm4ga0NBQ0ZWYWx1ZUZ1
bmN0aW9uUm90YXRlWTsKKyAgICBjYXNlIFBsYXRmb3JtQ0FBbmltYXRpb246OlJvdGF0ZVo6IHJl
dHVybiBrQ0FDRlZhbHVlRnVuY3Rpb25Sb3RhdGVaOworICAgIGNhc2UgUGxhdGZvcm1DQUFuaW1h
dGlvbjo6U2NhbGVYOiByZXR1cm4ga0NBQ0ZWYWx1ZUZ1bmN0aW9uU2NhbGVYOworICAgIGNhc2Ug
UGxhdGZvcm1DQUFuaW1hdGlvbjo6U2NhbGVZOiByZXR1cm4ga0NBQ0ZWYWx1ZUZ1bmN0aW9uU2Nh
bGVZOworICAgIGNhc2UgUGxhdGZvcm1DQUFuaW1hdGlvbjo6U2NhbGVaOiByZXR1cm4ga0NBQ0ZW
YWx1ZUZ1bmN0aW9uU2NhbGVaOworICAgIGNhc2UgUGxhdGZvcm1DQUFuaW1hdGlvbjo6U2NhbGU6
IHJldHVybiBrQ0FDRlZhbHVlRnVuY3Rpb25TY2FsZTsKKyAgICBjYXNlIFBsYXRmb3JtQ0FBbmlt
YXRpb246OlRyYW5zbGF0ZVg6IHJldHVybiBrQ0FDRlZhbHVlRnVuY3Rpb25UcmFuc2xhdGVYOwor
ICAgIGNhc2UgUGxhdGZvcm1DQUFuaW1hdGlvbjo6VHJhbnNsYXRlWTogcmV0dXJuIGtDQUNGVmFs
dWVGdW5jdGlvblRyYW5zbGF0ZVk7CisgICAgY2FzZSBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpUcmFu
c2xhdGVaOiByZXR1cm4ga0NBQ0ZWYWx1ZUZ1bmN0aW9uVHJhbnNsYXRlWjsKKyAgICBjYXNlIFBs
YXRmb3JtQ0FBbmltYXRpb246OlRyYW5zbGF0ZTogcmV0dXJuIGtDQUNGVmFsdWVGdW5jdGlvblRy
YW5zbGF0ZTsKKyAgICB9CisgICAgcmV0dXJuICIiOworfQorCitzdGF0aWMgUGxhdGZvcm1DQUFu
aW1hdGlvbjo6VmFsdWVGdW5jdGlvblR5cGUgZnJvbUNBQ0ZWYWx1ZUZ1bmN0aW9uVHlwZShjb25z
dCBTdHJpbmcgc3RyaW5nKQoreworICAgIGlmIChzdHJpbmcgPT0ga0NBQ0ZWYWx1ZUZ1bmN0aW9u
Um90YXRlWCkKKyAgICAgICAgcmV0dXJuIFBsYXRmb3JtQ0FBbmltYXRpb246OlJvdGF0ZVg7CisK
KyAgICBpZiAoc3RyaW5nID09IGtDQUNGVmFsdWVGdW5jdGlvblJvdGF0ZVkpCisgICAgICAgIHJl
dHVybiBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpSb3RhdGVZOworCisgICAgaWYgKHN0cmluZyA9PSBr
Q0FDRlZhbHVlRnVuY3Rpb25Sb3RhdGVaKQorICAgICAgICByZXR1cm4gUGxhdGZvcm1DQUFuaW1h
dGlvbjo6Um90YXRlWjsKKworICAgIGlmIChzdHJpbmcgPT0ga0NBQ0ZWYWx1ZUZ1bmN0aW9uU2Nh
bGVYKQorICAgICAgICByZXR1cm4gUGxhdGZvcm1DQUFuaW1hdGlvbjo6U2NhbGVYOworCisgICAg
aWYgKHN0cmluZyA9PSBrQ0FDRlZhbHVlRnVuY3Rpb25TY2FsZVkpCisgICAgICAgIHJldHVybiBQ
bGF0Zm9ybUNBQW5pbWF0aW9uOjpTY2FsZVk7CisKKyAgICBpZiAoc3RyaW5nID09IGtDQUNGVmFs
dWVGdW5jdGlvblNjYWxlWikKKyAgICAgICAgcmV0dXJuIFBsYXRmb3JtQ0FBbmltYXRpb246OlNj
YWxlWjsKKworICAgIGlmIChzdHJpbmcgPT0ga0NBQ0ZWYWx1ZUZ1bmN0aW9uU2NhbGUpCisgICAg
ICAgIHJldHVybiBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpTY2FsZTsKKworICAgIGlmIChzdHJpbmcg
PT0ga0NBQ0ZWYWx1ZUZ1bmN0aW9uVHJhbnNsYXRlWCkKKyAgICAgICAgcmV0dXJuIFBsYXRmb3Jt
Q0FBbmltYXRpb246OlRyYW5zbGF0ZVg7CisKKyAgICBpZiAoc3RyaW5nID09IGtDQUNGVmFsdWVG
dW5jdGlvblRyYW5zbGF0ZVkpCisgICAgICAgIHJldHVybiBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpU
cmFuc2xhdGVZOworCisgICAgaWYgKHN0cmluZyA9PSBrQ0FDRlZhbHVlRnVuY3Rpb25UcmFuc2xh
dGVaKQorICAgICAgICByZXR1cm4gUGxhdGZvcm1DQUFuaW1hdGlvbjo6VHJhbnNsYXRlWjsKKwor
ICAgIGlmIChzdHJpbmcgPT0ga0NBQ0ZWYWx1ZUZ1bmN0aW9uVHJhbnNsYXRlKQorICAgICAgICBy
ZXR1cm4gUGxhdGZvcm1DQUFuaW1hdGlvbjo6VHJhbnNsYXRlOworCisgICAgcmV0dXJuIFBsYXRm
b3JtQ0FBbmltYXRpb246Ok5vVmFsdWVGdW5jdGlvbjsKK30KKworc3RhdGljIENBQ0ZUaW1pbmdG
dW5jdGlvblJlZiB0b0NBQ0ZUaW1pbmdGdW5jdGlvbihjb25zdCBUaW1pbmdGdW5jdGlvbiogdGlt
aW5nRnVuY3Rpb24pCit7CisgICAgaWYgKCF0aW1pbmdGdW5jdGlvbikKKyAgICAgICAgcmV0dXJu
IENBQ0ZUaW1pbmdGdW5jdGlvbkNyZWF0ZSgwLjI1ZiwgMC4xZiwgMC4yNWYsIDAuMWYpOworICAg
ICAgICAgICAgCisgICAgaWYgKHRpbWluZ0Z1bmN0aW9uLT5pc0N1YmljQmV6aWVyVGltaW5nRnVu
Y3Rpb24oKSkgeworICAgICAgICBjb25zdCBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKiBjdGYg
PSBzdGF0aWNfY2FzdDxjb25zdCBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKj4odGltaW5nRnVu
Y3Rpb24pOworICAgICAgICByZXR1cm4gQ0FDRlRpbWluZ0Z1bmN0aW9uQ3JlYXRlKHN0YXRpY19j
YXN0PGZsb2F0PihjdGYtPngxKCkpLCBzdGF0aWNfY2FzdDxmbG9hdD4oY3RmLT55MSgpKSwgc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KGN0Zi0+eDIoKSksIHN0YXRpY19jYXN0PGZsb2F0PihjdGYtPnkyKCkp
KTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIENBQ0ZUaW1pbmdGdW5jdGlvbkdldEZ1bmN0aW9u
V2l0aE5hbWUoa0NBQ0ZUaW1pbmdGdW5jdGlvbkxpbmVhcik7Cit9CisKK1Bhc3NSZWZQdHI8UGxh
dGZvcm1DQUFuaW1hdGlvbj4gUGxhdGZvcm1DQUFuaW1hdGlvbjo6Y3JlYXRlKEFuaW1hdGlvblR5
cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoKQoreworICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgUGxhdGZvcm1DQUFuaW1hdGlvbih0eXBlLCBrZXlQYXRoKSk7Cit9CisKK1Bhc3NSZWZQdHI8
UGxhdGZvcm1DQUFuaW1hdGlvbj4gUGxhdGZvcm1DQUFuaW1hdGlvbjo6Y3JlYXRlKFBsYXRmb3Jt
QW5pbWF0aW9uUmVmIGFuaW1hdGlvbikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBsYXRm
b3JtQ0FBbmltYXRpb24oYW5pbWF0aW9uKSk7Cit9CisKK1Bhc3NSZWZQdHI8UGxhdGZvcm1DQUFu
aW1hdGlvbj4gUGxhdGZvcm1DQUFuaW1hdGlvbjo6Y3JlYXRlKGNvbnN0IFBsYXRmb3JtQ0FBbmlt
YXRpb24qIGFuaW1hdGlvbikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBsYXRmb3JtQ0FB
bmltYXRpb24oYW5pbWF0aW9uKSk7Cit9CisKK3N0YXRpYyB2b2lkIGluaXRpYWxpemUoUGxhdGZv
cm1DQUFuaW1hdGlvbiogYW5pbWF0aW9uKQoreworfQorCitQbGF0Zm9ybUNBQW5pbWF0aW9uOjpQ
bGF0Zm9ybUNBQW5pbWF0aW9uKEFuaW1hdGlvblR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBrZXlQ
YXRoKQorICAgIDogbV90eXBlKHR5cGUpCit7CisgICAgaWYgKHR5cGUgPT0gQmFzaWMpCisgICAg
ICAgIG1fYW5pbWF0aW9uLmFkb3B0Q0YoQ0FDRkFuaW1hdGlvbkNyZWF0ZShrQ0FDRkJhc2ljQW5p
bWF0aW9uKSk7CisgICAgZWxzZQorICAgICAgICBtX2FuaW1hdGlvbi5hZG9wdENGKENBQ0ZBbmlt
YXRpb25DcmVhdGUoa0NBQ0ZLZXlmcmFtZUFuaW1hdGlvbikpOworICAgIAorICAgIFJldGFpblB0
cjxDRlN0cmluZ1JlZj4gcyhBZG9wdENGLCBrZXlQYXRoLmNyZWF0ZUNGU3RyaW5nKCkpOworICAg
IENBQ0ZBbmltYXRpb25TZXRLZXlQYXRoKG1fYW5pbWF0aW9uLmdldCgpLCBzLmdldCgpKTsKKwor
ICAgIGluaXRpYWxpemUodGhpcyk7Cit9CisKK1BsYXRmb3JtQ0FBbmltYXRpb246OlBsYXRmb3Jt
Q0FBbmltYXRpb24oUGxhdGZvcm1BbmltYXRpb25SZWYgYW5pbWF0aW9uKQoreworICAgIGlmIChT
dHJpbmcoQ0FDRkFuaW1hdGlvbkdldENsYXNzKGFuaW1hdGlvbikpID09IGtDQUNGQmFzaWNBbmlt
YXRpb24pCisgICAgICAgIG1fdHlwZSA9IEJhc2ljOworICAgIGVsc2UgaWYgKFN0cmluZyhDQUNG
QW5pbWF0aW9uR2V0Q2xhc3MoYW5pbWF0aW9uKSkgPT0ga0NBQ0ZLZXlmcmFtZUFuaW1hdGlvbikK
KyAgICAgICAgbV90eXBlID0gS2V5ZnJhbWU7CisgICAgZWxzZSB7CisgICAgICAgIEFTU0VSVCgw
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBtX2FuaW1hdGlvbiA9IGFuaW1h
dGlvbjsKKyAgICBpbml0aWFsaXplKHRoaXMpOworfQorCitQbGF0Zm9ybUNBQW5pbWF0aW9uOjpQ
bGF0Zm9ybUNBQW5pbWF0aW9uKGNvbnN0IFBsYXRmb3JtQ0FBbmltYXRpb24qIGFuaW1hdGlvbikK
K3sKKyAgICBtX2FuaW1hdGlvbi5hZG9wdENGKENBQ0ZBbmltYXRpb25DcmVhdGUoKGFuaW1hdGlv
bi0+YW5pbWF0aW9uVHlwZSgpID09IEJhc2ljKSA/IGtDQUNGQmFzaWNBbmltYXRpb24gOiBrQ0FD
RktleWZyYW1lQW5pbWF0aW9uKSk7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBzKEFkb3B0
Q0YsIGFuaW1hdGlvbi0+a2V5UGF0aCgpLmNyZWF0ZUNGU3RyaW5nKCkpOworICAgIENBQ0ZBbmlt
YXRpb25TZXRLZXlQYXRoKG1fYW5pbWF0aW9uLmdldCgpLCBzLmdldCgpKTsKKworICAgIHNldEJl
Z2luVGltZShhbmltYXRpb24tPmJlZ2luVGltZSgpKTsKKyAgICBzZXREdXJhdGlvbihhbmltYXRp
b24tPmR1cmF0aW9uKCkpOworICAgIHNldFNwZWVkKGFuaW1hdGlvbi0+c3BlZWQoKSk7CisgICAg
c2V0VGltZU9mZnNldChhbmltYXRpb24tPnRpbWVPZmZzZXQoKSk7CisgICAgc2V0UmVwZWF0Q291
bnQoYW5pbWF0aW9uLT5yZXBlYXRDb3VudCgpKTsKKyAgICBzZXRBdXRvcmV2ZXJzZXMoYW5pbWF0
aW9uLT5hdXRvcmV2ZXJzZXMoKSk7CisgICAgc2V0RmlsbE1vZGUoYW5pbWF0aW9uLT5maWxsTW9k
ZSgpKTsKKyAgICBzZXRSZW1vdmVkT25Db21wbGV0aW9uKGFuaW1hdGlvbi0+aXNSZW1vdmVkT25D
b21wbGV0aW9uKCkpOworICAgIHNldEFkZGl0aXZlKGFuaW1hdGlvbi0+aXNBZGRpdGl2ZSgpKTsK
KyAgICBjb3B5VGltaW5nRnVuY3Rpb25Gcm9tKGFuaW1hdGlvbik7CisgICAgc2V0VmFsdWVGdW5j
dGlvbihhbmltYXRpb24tPnZhbHVlRnVuY3Rpb24oKSk7CisKKyAgICAvLyBDb3B5IHRoZSBzcGVj
aWZpYyBCYXNpYyBvciBLZXlmcmFtZSB2YWx1ZXMKKyAgICBpZiAoYW5pbWF0aW9uLT5hbmltYXRp
b25UeXBlKCkgPT0gS2V5ZnJhbWUpIHsKKyAgICAgICAgY29weVZhbHVlc0Zyb20oYW5pbWF0aW9u
KTsKKyAgICAgICAgY29weUtleVRpbWVzRnJvbShhbmltYXRpb24pOworICAgICAgICBjb3B5VGlt
aW5nRnVuY3Rpb25zRnJvbShhbmltYXRpb24pOworICAgIH0gZWxzZSB7CisgICAgICAgIGNvcHlG
cm9tVmFsdWVGcm9tKGFuaW1hdGlvbik7CisgICAgICAgIGNvcHlUb1ZhbHVlRnJvbShhbmltYXRp
b24pOworICAgIH0KK30KKworUGxhdGZvcm1DQUFuaW1hdGlvbjo6flBsYXRmb3JtQ0FBbmltYXRp
b24oKQoreworfQorCitib29sIFBsYXRmb3JtQ0FBbmltYXRpb246OnN1cHBvcnRzVmFsdWVGdW5j
dGlvbigpCit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK1BsYXRmb3JtQW5pbWF0aW9uUmVmIFBs
YXRmb3JtQ0FBbmltYXRpb246OnBsYXRmb3JtQW5pbWF0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9hbmltYXRpb24uZ2V0KCk7Cit9CisKK1N0cmluZyBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpr
ZXlQYXRoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gQ0FDRkFuaW1hdGlvbkdldEtleVBhdGgobV9h
bmltYXRpb24uZ2V0KCkpOworfQorCitDRlRpbWVJbnRlcnZhbCBQbGF0Zm9ybUNBQW5pbWF0aW9u
OjpiZWdpblRpbWUoKSBjb25zdAoreworICAgIHJldHVybiBDQUNGQW5pbWF0aW9uR2V0QmVnaW5U
aW1lKG1fYW5pbWF0aW9uLmdldCgpKTsKK30KKwordm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpz
ZXRCZWdpblRpbWUoQ0ZUaW1lSW50ZXJ2YWwgdmFsdWUpCit7CisgICAgQ0FDRkFuaW1hdGlvblNl
dEJlZ2luVGltZShtX2FuaW1hdGlvbi5nZXQoKSwgdmFsdWUpOworfQorCitDRlRpbWVJbnRlcnZh
bCBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpkdXJhdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIENB
Q0ZBbmltYXRpb25HZXREdXJhdGlvbihtX2FuaW1hdGlvbi5nZXQoKSk7Cit9CisKK3ZvaWQgUGxh
dGZvcm1DQUFuaW1hdGlvbjo6c2V0RHVyYXRpb24oQ0ZUaW1lSW50ZXJ2YWwgdmFsdWUpCit7Cisg
ICAgQ0FDRkFuaW1hdGlvblNldER1cmF0aW9uKG1fYW5pbWF0aW9uLmdldCgpLCB2YWx1ZSk7Cit9
CisKK2Zsb2F0IFBsYXRmb3JtQ0FBbmltYXRpb246OnNwZWVkKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gQ0FDRkFuaW1hdGlvbkdldFNwZWVkKG1fYW5pbWF0aW9uLmdldCgpKTsKK30KKwordm9pZCBQ
bGF0Zm9ybUNBQW5pbWF0aW9uOjpzZXRTcGVlZChmbG9hdCB2YWx1ZSkKK3sKKyAgICBDQUNGQW5p
bWF0aW9uU2V0U3BlZWQobV9hbmltYXRpb24uZ2V0KCksIHZhbHVlKTsKK30KKworQ0ZUaW1lSW50
ZXJ2YWwgUGxhdGZvcm1DQUFuaW1hdGlvbjo6dGltZU9mZnNldCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIENBQ0ZBbmltYXRpb25HZXRUaW1lT2Zmc2V0KG1fYW5pbWF0aW9uLmdldCgpKTsKK30KKwor
dm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpzZXRUaW1lT2Zmc2V0KENGVGltZUludGVydmFsIHZh
bHVlKQoreworICAgIENBQ0ZBbmltYXRpb25TZXRUaW1lT2Zmc2V0KG1fYW5pbWF0aW9uLmdldCgp
LCB2YWx1ZSk7Cit9CisKK2Zsb2F0IFBsYXRmb3JtQ0FBbmltYXRpb246OnJlcGVhdENvdW50KCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gQ0FDRkFuaW1hdGlvbkdldFJlcGVhdENvdW50KG1fYW5pbWF0
aW9uLmdldCgpKTsKK30KKwordm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpzZXRSZXBlYXRDb3Vu
dChmbG9hdCB2YWx1ZSkKK3sKKyAgICBDQUNGQW5pbWF0aW9uU2V0UmVwZWF0Q291bnQobV9hbmlt
YXRpb24uZ2V0KCksIHZhbHVlKTsKK30KKworYm9vbCBQbGF0Zm9ybUNBQW5pbWF0aW9uOjphdXRv
cmV2ZXJzZXMoKSBjb25zdAoreworICAgIHJldHVybiBDQUNGQW5pbWF0aW9uR2V0QXV0b3JldmVy
c2VzKG1fYW5pbWF0aW9uLmdldCgpKTsKK30KKwordm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpz
ZXRBdXRvcmV2ZXJzZXMoYm9vbCB2YWx1ZSkKK3sKKyAgICBDQUNGQW5pbWF0aW9uU2V0QXV0b3Jl
dmVyc2VzKG1fYW5pbWF0aW9uLmdldCgpLCB2YWx1ZSk7Cit9CisKK1BsYXRmb3JtQ0FBbmltYXRp
b246OkZpbGxNb2RlVHlwZSBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpmaWxsTW9kZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIGZyb21DQUNGRmlsbE1vZGVUeXBlKENBQ0ZBbmltYXRpb25HZXRGaWxsTW9k
ZShtX2FuaW1hdGlvbi5nZXQoKSkpOworfQorCit2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb246OnNl
dEZpbGxNb2RlKEZpbGxNb2RlVHlwZSB2YWx1ZSkKK3sKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IHMoQWRvcHRDRiwgdG9DQUNGRmlsbE1vZGVUeXBlKHZhbHVlKS5jcmVhdGVDRlN0cmluZygp
KTsKKyAgICBDQUNGQW5pbWF0aW9uU2V0RmlsbE1vZGUobV9hbmltYXRpb24uZ2V0KCksIHMuZ2V0
KCkpOworfQorCit2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb246OnNldFRpbWluZ0Z1bmN0aW9uKGNv
bnN0IFRpbWluZ0Z1bmN0aW9uKiB2YWx1ZSkKK3sKKyAgICBDQUNGQW5pbWF0aW9uU2V0VGltaW5n
RnVuY3Rpb24obV9hbmltYXRpb24uZ2V0KCksIHRvQ0FDRlRpbWluZ0Z1bmN0aW9uKHZhbHVlKSk7
Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbjo6Y29weVRpbWluZ0Z1bmN0aW9uRnJvbShj
b25zdCBQbGF0Zm9ybUNBQW5pbWF0aW9uKiB2YWx1ZSkKK3sKKyAgICBDQUNGQW5pbWF0aW9uU2V0
VGltaW5nRnVuY3Rpb24obV9hbmltYXRpb24uZ2V0KCksIENBQ0ZBbmltYXRpb25HZXRUaW1pbmdG
dW5jdGlvbih2YWx1ZS0+bV9hbmltYXRpb24uZ2V0KCkpKTsKK30KKworYm9vbCBQbGF0Zm9ybUNB
QW5pbWF0aW9uOjppc1JlbW92ZWRPbkNvbXBsZXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBD
QUNGQW5pbWF0aW9uSXNSZW1vdmVkT25Db21wbGV0aW9uKG1fYW5pbWF0aW9uLmdldCgpKTsKK30K
Kwordm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpzZXRSZW1vdmVkT25Db21wbGV0aW9uKGJvb2wg
dmFsdWUpCit7CisgICAgQ0FDRkFuaW1hdGlvblNldFJlbW92ZWRPbkNvbXBsZXRpb24obV9hbmlt
YXRpb24uZ2V0KCksIHZhbHVlKTsKK30KKworYm9vbCBQbGF0Zm9ybUNBQW5pbWF0aW9uOjppc0Fk
ZGl0aXZlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gQ0FDRkFuaW1hdGlvbklzQWRkaXRpdmUobV9h
bmltYXRpb24uZ2V0KCkpOworfQorCit2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb246OnNldEFkZGl0
aXZlKGJvb2wgdmFsdWUpCit7CisgICAgQ0FDRkFuaW1hdGlvblNldEFkZGl0aXZlKG1fYW5pbWF0
aW9uLmdldCgpLCB2YWx1ZSk7Cit9CisKK1BsYXRmb3JtQ0FBbmltYXRpb246OlZhbHVlRnVuY3Rp
b25UeXBlIFBsYXRmb3JtQ0FBbmltYXRpb246OnZhbHVlRnVuY3Rpb24oKSBjb25zdAoreworICAg
IHJldHVybiBmcm9tQ0FDRlZhbHVlRnVuY3Rpb25UeXBlKENBQ0ZWYWx1ZUZ1bmN0aW9uR2V0TmFt
ZShDQUNGQW5pbWF0aW9uR2V0VmFsdWVGdW5jdGlvbihtX2FuaW1hdGlvbi5nZXQoKSkpKTsKK30K
Kwordm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpzZXRWYWx1ZUZ1bmN0aW9uKFZhbHVlRnVuY3Rp
b25UeXBlIHZhbHVlKQoreworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcyhBZG9wdENGLCB0
b0NBQ0ZWYWx1ZUZ1bmN0aW9uVHlwZSh2YWx1ZSkuY3JlYXRlQ0ZTdHJpbmcoKSk7CisgICAgQ0FD
RkFuaW1hdGlvblNldFZhbHVlRnVuY3Rpb24obV9hbmltYXRpb24uZ2V0KCksIENBQ0ZWYWx1ZUZ1
bmN0aW9uR2V0RnVuY3Rpb25XaXRoTmFtZShzLmdldCgpKSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1D
QUFuaW1hdGlvbjo6c2V0RnJvbVZhbHVlKGZsb2F0IHZhbHVlKQoreworICAgIGlmIChhbmltYXRp
b25UeXBlKCkgIT0gQmFzaWMpCisgICAgICAgIHJldHVybjsKKworICAgIFJldGFpblB0cjxDRk51
bWJlclJlZj4gdihBZG9wdENGLCBDRk51bWJlckNyZWF0ZSgwLCBrQ0ZOdW1iZXJGbG9hdFR5cGUs
ICZ2YWx1ZSkpOworICAgIENBQ0ZBbmltYXRpb25TZXRGcm9tVmFsdWUobV9hbmltYXRpb24uZ2V0
KCksIHYuZ2V0KCkpOworfQorCit2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb246OnNldEZyb21WYWx1
ZShjb25zdCBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdmFsdWUpCit7CisgICAgaWYg
KGFuaW1hdGlvblR5cGUoKSAhPSBCYXNpYykKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIFJl
dGFpblB0cjxDQUNGVmVjdG9yUmVmPiB2KEFkb3B0Q0YsIENBQ0ZWZWN0b3JDcmVhdGVUcmFuc2Zv
cm0odmFsdWUpKTsKKyAgICBDQUNGQW5pbWF0aW9uU2V0RnJvbVZhbHVlKG1fYW5pbWF0aW9uLmdl
dCgpLCB2LmdldCgpKTsKK30KKwordm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpzZXRGcm9tVmFs
dWUoY29uc3QgRmxvYXRQb2ludDNEJiB2YWx1ZSkKK3sKKyAgICBpZiAoYW5pbWF0aW9uVHlwZSgp
ICE9IEJhc2ljKQorICAgICAgICByZXR1cm47CisKKyAgICBmbG9hdCBhWzNdID0geyB2YWx1ZS54
KCksIHZhbHVlLnkoKSwgdmFsdWUueigpIH07CisgICAgUmV0YWluUHRyPENBQ0ZWZWN0b3JSZWY+
IHYoQWRvcHRDRiwgQ0FDRlZlY3RvckNyZWF0ZSgzLCBhKSk7CisgICAgQ0FDRkFuaW1hdGlvblNl
dEZyb21WYWx1ZShtX2FuaW1hdGlvbi5nZXQoKSwgdi5nZXQoKSk7Cit9CisKK3ZvaWQgUGxhdGZv
cm1DQUFuaW1hdGlvbjo6c2V0RnJvbVZhbHVlKGNvbnN0IFdlYkNvcmU6OkNvbG9yJiB2YWx1ZSkK
K3sKKyAgICBpZiAoYW5pbWF0aW9uVHlwZSgpICE9IEJhc2ljKQorICAgICAgICByZXR1cm47CisK
KyAgICBmbG9hdCBhWzRdID0geyB2YWx1ZS5yZWQoKSwgdmFsdWUuZ3JlZW4oKSwgdmFsdWUuYmx1
ZSgpLCB2YWx1ZS5hbHBoYSgpIH07CisgICAgUmV0YWluUHRyPENBQ0ZWZWN0b3JSZWY+IHYoQWRv
cHRDRiwgQ0FDRlZlY3RvckNyZWF0ZSg0LCBhKSk7CisgICAgQ0FDRkFuaW1hdGlvblNldEZyb21W
YWx1ZShtX2FuaW1hdGlvbi5nZXQoKSwgdi5nZXQoKSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUFu
aW1hdGlvbjo6Y29weUZyb21WYWx1ZUZyb20oY29uc3QgUGxhdGZvcm1DQUFuaW1hdGlvbiogdmFs
dWUpCit7CisgICAgaWYgKGFuaW1hdGlvblR5cGUoKSAhPSBCYXNpYyB8fCB2YWx1ZS0+YW5pbWF0
aW9uVHlwZSgpICE9IEJhc2ljKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgQ0FDRkFuaW1h
dGlvblNldEZyb21WYWx1ZShtX2FuaW1hdGlvbi5nZXQoKSwgQ0FDRkFuaW1hdGlvbkdldEZyb21W
YWx1ZSh2YWx1ZS0+cGxhdGZvcm1BbmltYXRpb24oKSkpOworfQorCit2b2lkIFBsYXRmb3JtQ0FB
bmltYXRpb246OnNldFRvVmFsdWUoZmxvYXQgdmFsdWUpCit7CisgICAgaWYgKGFuaW1hdGlvblR5
cGUoKSAhPSBCYXNpYykKKyAgICAgICAgcmV0dXJuOworCisgICAgUmV0YWluUHRyPENGTnVtYmVy
UmVmPiB2KEFkb3B0Q0YsIENGTnVtYmVyQ3JlYXRlKDAsIGtDRk51bWJlckZsb2F0VHlwZSwgJnZh
bHVlKSk7CisgICAgQ0FDRkFuaW1hdGlvblNldFRvVmFsdWUobV9hbmltYXRpb24uZ2V0KCksIHYu
Z2V0KCkpOworfQorCit2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb246OnNldFRvVmFsdWUoY29uc3Qg
V2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXgmIHZhbHVlKQoreworICAgIGlmIChhbmltYXRp
b25UeXBlKCkgIT0gQmFzaWMpCisgICAgICAgIHJldHVybjsKKworICAgIFJldGFpblB0cjxDQUNG
VmVjdG9yUmVmPiB2KEFkb3B0Q0YsIENBQ0ZWZWN0b3JDcmVhdGVUcmFuc2Zvcm0odmFsdWUpKTsK
KyAgICBDQUNGQW5pbWF0aW9uU2V0VG9WYWx1ZShtX2FuaW1hdGlvbi5nZXQoKSwgdi5nZXQoKSk7
Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbjo6c2V0VG9WYWx1ZShjb25zdCBGbG9hdFBv
aW50M0QmIHZhbHVlKQoreworICAgIGlmIChhbmltYXRpb25UeXBlKCkgIT0gQmFzaWMpCisgICAg
ICAgIHJldHVybjsKKworICAgIGZsb2F0IGFbM10gPSB7IHZhbHVlLngoKSwgdmFsdWUueSgpLCB2
YWx1ZS56KCkgfTsKKyAgICBSZXRhaW5QdHI8Q0FDRlZlY3RvclJlZj4gdihBZG9wdENGLCBDQUNG
VmVjdG9yQ3JlYXRlKDMsIGEpKTsKKyAgICBDQUNGQW5pbWF0aW9uU2V0VG9WYWx1ZShtX2FuaW1h
dGlvbi5nZXQoKSwgdi5nZXQoKSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbjo6c2V0
VG9WYWx1ZShjb25zdCBXZWJDb3JlOjpDb2xvciYgdmFsdWUpCit7CisgICAgaWYgKGFuaW1hdGlv
blR5cGUoKSAhPSBCYXNpYykKKyAgICAgICAgcmV0dXJuOworCisgICAgZmxvYXQgYVs0XSA9IHsg
dmFsdWUucmVkKCksIHZhbHVlLmdyZWVuKCksIHZhbHVlLmJsdWUoKSwgdmFsdWUuYWxwaGEoKSB9
OworICAgIFJldGFpblB0cjxDQUNGVmVjdG9yUmVmPiB2KEFkb3B0Q0YsIENBQ0ZWZWN0b3JDcmVh
dGUoNCwgYSkpOworICAgIENBQ0ZBbmltYXRpb25TZXRUb1ZhbHVlKG1fYW5pbWF0aW9uLmdldCgp
LCB2LmdldCgpKTsKK30KKwordm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpjb3B5VG9WYWx1ZUZy
b20oY29uc3QgUGxhdGZvcm1DQUFuaW1hdGlvbiogdmFsdWUpCit7CisgICAgaWYgKGFuaW1hdGlv
blR5cGUoKSAhPSBCYXNpYyB8fCB2YWx1ZS0+YW5pbWF0aW9uVHlwZSgpICE9IEJhc2ljKQorICAg
ICAgICByZXR1cm47CisgICAgICAgIAorICAgIENBQ0ZBbmltYXRpb25TZXRUb1ZhbHVlKG1fYW5p
bWF0aW9uLmdldCgpLCBDQUNGQW5pbWF0aW9uR2V0VG9WYWx1ZSh2YWx1ZS0+cGxhdGZvcm1Bbmlt
YXRpb24oKSkpOworfQorCisKKy8vIEtleWZyYW1lLWFuaW1hdGlvbiBwcm9wZXJ0aWVzLgordm9p
ZCBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpzZXRWYWx1ZXMoY29uc3QgVmVjdG9yPGZsb2F0PiYgdmFs
dWUpCit7CisgICAgaWYgKGFuaW1hdGlvblR5cGUoKSAhPSBLZXlmcmFtZSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgUmV0YWluUHRyPENGTXV0YWJsZUFycmF5UmVmPiBhcnJheShBZG9wdENGLCBD
RkFycmF5Q3JlYXRlTXV0YWJsZSgwLCB2YWx1ZS5zaXplKCksICZrQ0ZUeXBlQXJyYXlDYWxsQmFj
a3MpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHZhbHVlLnNpemUoKTsgKytpKSB7Cisg
ICAgICAgIFJldGFpblB0cjxDRk51bWJlclJlZj4gdihBZG9wdENGLCBDRk51bWJlckNyZWF0ZSgw
LCBrQ0ZOdW1iZXJGbG9hdFR5cGUsICZ2YWx1ZVtpXSkpOworICAgICAgICBDRkFycmF5QXBwZW5k
VmFsdWUoYXJyYXkuZ2V0KCksIHYuZ2V0KCkpOworICAgIH0KKworICAgIENBQ0ZBbmltYXRpb25T
ZXRWYWx1ZXMobV9hbmltYXRpb24uZ2V0KCksIGFycmF5LmdldCgpKTsKK30KKwordm9pZCBQbGF0
Zm9ybUNBQW5pbWF0aW9uOjpzZXRWYWx1ZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlRyYW5zZm9y
bWF0aW9uTWF0cml4PiYgdmFsdWUpCit7CisgICAgaWYgKGFuaW1hdGlvblR5cGUoKSAhPSBLZXlm
cmFtZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUmV0YWluUHRyPENGTXV0YWJsZUFycmF5UmVm
PiBhcnJheShBZG9wdENGLCBDRkFycmF5Q3JlYXRlTXV0YWJsZSgwLCB2YWx1ZS5zaXplKCksICZr
Q0ZUeXBlQXJyYXlDYWxsQmFja3MpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHZhbHVl
LnNpemUoKTsgKytpKSB7CisgICAgICAgIFJldGFpblB0cjxDQUNGVmVjdG9yUmVmPiB2KEFkb3B0
Q0YsIENBQ0ZWZWN0b3JDcmVhdGVUcmFuc2Zvcm0odmFsdWVbaV0pKTsKKyAgICAgICAgQ0ZBcnJh
eUFwcGVuZFZhbHVlKGFycmF5LmdldCgpLCB2LmdldCgpKTsKKyAgICB9CisKKyAgICBDQUNGQW5p
bWF0aW9uU2V0VmFsdWVzKG1fYW5pbWF0aW9uLmdldCgpLCBhcnJheS5nZXQoKSk7Cit9CisKK3Zv
aWQgUGxhdGZvcm1DQUFuaW1hdGlvbjo6c2V0VmFsdWVzKGNvbnN0IFZlY3RvcjxGbG9hdFBvaW50
M0Q+JiB2YWx1ZSkKK3sKKyAgICBpZiAoYW5pbWF0aW9uVHlwZSgpICE9IEtleWZyYW1lKQorICAg
ICAgICByZXR1cm47CisgICAgICAgIAorICAgIFJldGFpblB0cjxDRk11dGFibGVBcnJheVJlZj4g
YXJyYXkoQWRvcHRDRiwgQ0ZBcnJheUNyZWF0ZU11dGFibGUoMCwgdmFsdWUuc2l6ZSgpLCAma0NG
VHlwZUFycmF5Q2FsbEJhY2tzKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2YWx1ZS5z
aXplKCk7ICsraSkgeworICAgICAgICBmbG9hdCBhWzNdID0geyB2YWx1ZVtpXS54KCksIHZhbHVl
W2ldLnkoKSwgdmFsdWVbaV0ueigpIH07CisgICAgICAgIFJldGFpblB0cjxDQUNGVmVjdG9yUmVm
PiB2KEFkb3B0Q0YsIENBQ0ZWZWN0b3JDcmVhdGUoMywgYSkpOworICAgICAgICBDRkFycmF5QXBw
ZW5kVmFsdWUoYXJyYXkuZ2V0KCksIHYuZ2V0KCkpOworICAgIH0KKworICAgIENBQ0ZBbmltYXRp
b25TZXRWYWx1ZXMobV9hbmltYXRpb24uZ2V0KCksIGFycmF5LmdldCgpKTsKK30KKwordm9pZCBQ
bGF0Zm9ybUNBQW5pbWF0aW9uOjpzZXRWYWx1ZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvbG9y
PiYgdmFsdWUpCit7CisgICAgaWYgKGFuaW1hdGlvblR5cGUoKSAhPSBLZXlmcmFtZSkKKyAgICAg
ICAgcmV0dXJuOworICAgICAgICAKKyAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlQXJyYXlSZWY+IGFy
cmF5KEFkb3B0Q0YsIENGQXJyYXlDcmVhdGVNdXRhYmxlKDAsIHZhbHVlLnNpemUoKSwgJmtDRlR5
cGVBcnJheUNhbGxCYWNrcykpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmFsdWUuc2l6
ZSgpOyArK2kpIHsKKyAgICAgICAgZmxvYXQgYVs0XSA9IHsgdmFsdWVbaV0ucmVkKCksIHZhbHVl
W2ldLmdyZWVuKCksIHZhbHVlW2ldLmJsdWUoKSwgdmFsdWVbaV0uYWxwaGEoKSB9OworICAgICAg
ICBSZXRhaW5QdHI8Q0FDRlZlY3RvclJlZj4gdihBZG9wdENGLCBDQUNGVmVjdG9yQ3JlYXRlKDQs
IGEpKTsKKyAgICAgICAgQ0ZBcnJheUFwcGVuZFZhbHVlKGFycmF5LmdldCgpLCB2LmdldCgpKTsK
KyAgICB9CisKKyAgICBDQUNGQW5pbWF0aW9uU2V0VmFsdWVzKG1fYW5pbWF0aW9uLmdldCgpLCBh
cnJheS5nZXQoKSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbjo6Y29weVZhbHVlc0Zy
b20oY29uc3QgUGxhdGZvcm1DQUFuaW1hdGlvbiogdmFsdWUpCit7CisgICAgaWYgKGFuaW1hdGlv
blR5cGUoKSAhPSBLZXlmcmFtZSB8fCB2YWx1ZS0+YW5pbWF0aW9uVHlwZSgpICE9IEtleWZyYW1l
KQorICAgICAgICByZXR1cm47CisgICAgCisgICAgQ0FDRkFuaW1hdGlvblNldFZhbHVlcyhtX2Fu
aW1hdGlvbi5nZXQoKSwgQ0FDRkFuaW1hdGlvbkdldFZhbHVlcyh2YWx1ZS0+cGxhdGZvcm1Bbmlt
YXRpb24oKSkpOworfQorCit2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb246OnNldEtleVRpbWVzKGNv
bnN0IFZlY3RvcjxmbG9hdD4mIHZhbHVlKQoreworICAgIGlmIChhbmltYXRpb25UeXBlKCkgIT0g
S2V5ZnJhbWUpCisgICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgUmV0YWluUHRyPENGTXV0
YWJsZUFycmF5UmVmPiBhcnJheShBZG9wdENGLCBDRkFycmF5Q3JlYXRlTXV0YWJsZSgwLCB2YWx1
ZS5zaXplKCksICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpKTsKKyAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHZhbHVlLnNpemUoKTsgKytpKSB7CisgICAgICAgIFJldGFpblB0cjxDRk51bWJlclJl
Zj4gdihBZG9wdENGLCBDRk51bWJlckNyZWF0ZSgwLCBrQ0ZOdW1iZXJGbG9hdFR5cGUsICZ2YWx1
ZVtpXSkpOworICAgICAgICBDRkFycmF5QXBwZW5kVmFsdWUoYXJyYXkuZ2V0KCksIHYuZ2V0KCkp
OworICAgIH0KKworICAgIENBQ0ZBbmltYXRpb25TZXRLZXlUaW1lcyhtX2FuaW1hdGlvbi5nZXQo
KSwgYXJyYXkuZ2V0KCkpOworfQorCit2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb246OmNvcHlLZXlU
aW1lc0Zyb20oY29uc3QgUGxhdGZvcm1DQUFuaW1hdGlvbiogdmFsdWUpCit7CisgICAgaWYgKGFu
aW1hdGlvblR5cGUoKSAhPSBLZXlmcmFtZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQ0FDRkFu
aW1hdGlvblNldEtleVRpbWVzKG1fYW5pbWF0aW9uLmdldCgpLCBDQUNGQW5pbWF0aW9uR2V0S2V5
VGltZXModmFsdWUtPnBsYXRmb3JtQW5pbWF0aW9uKCkpKTsKK30KKwordm9pZCBQbGF0Zm9ybUNB
QW5pbWF0aW9uOjpzZXRUaW1pbmdGdW5jdGlvbnMoY29uc3QgVmVjdG9yPGNvbnN0IFRpbWluZ0Z1
bmN0aW9uKj4mIHZhbHVlKQoreworICAgIGlmIChhbmltYXRpb25UeXBlKCkgIT0gS2V5ZnJhbWUp
CisgICAgICAgIHJldHVybjsKKworICAgIFJldGFpblB0cjxDRk11dGFibGVBcnJheVJlZj4gYXJy
YXkoQWRvcHRDRiwgQ0ZBcnJheUNyZWF0ZU11dGFibGUoMCwgdmFsdWUuc2l6ZSgpLCAma0NGVHlw
ZUFycmF5Q2FsbEJhY2tzKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2YWx1ZS5zaXpl
KCk7ICsraSkgeworICAgICAgICBSZXRhaW5QdHI8Q0ZOdW1iZXJSZWY+IHYoQWRvcHRDRiwgQ0ZO
dW1iZXJDcmVhdGUoMCwga0NGTnVtYmVyRmxvYXRUeXBlLCAmdmFsdWVbaV0pKTsKKyAgICAgICAg
Q0ZBcnJheUFwcGVuZFZhbHVlKGFycmF5LmdldCgpLCB0b0NBQ0ZUaW1pbmdGdW5jdGlvbih2YWx1
ZVtpXSkpOworICAgIH0KKworICAgIENBQ0ZBbmltYXRpb25TZXRUaW1pbmdGdW5jdGlvbnMobV9h
bmltYXRpb24uZ2V0KCksIGFycmF5LmdldCgpKTsKK30KKwordm9pZCBQbGF0Zm9ybUNBQW5pbWF0
aW9uOjpjb3B5VGltaW5nRnVuY3Rpb25zRnJvbShjb25zdCBQbGF0Zm9ybUNBQW5pbWF0aW9uKiB2
YWx1ZSkKK3sKKyAgICBDQUNGQW5pbWF0aW9uU2V0VGltaW5nRnVuY3Rpb25zKG1fYW5pbWF0aW9u
LmdldCgpLCBDQUNGQW5pbWF0aW9uR2V0VGltaW5nRnVuY3Rpb25zKHZhbHVlLT5wbGF0Zm9ybUFu
aW1hdGlvbigpKSk7Cit9CisKKyNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcp
CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FBbmltYXRpb24u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FB
bmltYXRpb24uaAkocmV2aXNpb24gNzUyMTMpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL1BsYXRmb3JtQ0FBbmltYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNDQsMTAgKzQ0LDgg
QEAKIHR5cGVkZWYgdm9pZCogUGxhdGZvcm1BbmltYXRpb25SZWY7CiAjZW5kaWYKICNlbGlmIFBM
QVRGT1JNKFdJTikKLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFdLQ0FDRkFuaW1hdGlvbjsK
LXR5cGVkZWYgV0tDQUNGQW5pbWF0aW9uKiBQbGF0Zm9ybUFuaW1hdGlvblJlZjsKLX0KK3R5cGVk
ZWYgc3RydWN0IF9DQUNGQW5pbWF0aW9uICpDQUNGQW5pbWF0aW9uUmVmOwordHlwZWRlZiBDQUNG
QW5pbWF0aW9uUmVmIFBsYXRmb3JtQW5pbWF0aW9uUmVmOwogI2VuZGlmCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVy
UHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250
ZXh0LmgJKHJldmlzaW9uIDc1MjEzKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
TWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yOCw3ICsyOCw2IEBACiAKICNpZiBFTkFCTEUoVklERU8pCiAKLSNpbmNsdWRlICJHcmFw
aGljc0xheWVyLmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlLmgiCiAjaW5jbHVkZSAi
VGltZXIuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpAQCAtNTEsNyArNTAsNyBAQAogY2xh
c3MgSW50UmVjdDsKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLWNsYXNzIFdL
Q0FDRkxheWVyOworY2xhc3MgUGxhdGZvcm1DQUxheWVyOwogY2xhc3MgV0tDQUltYWdlUXVldWU7
CiAjZW5kaWYKIApAQCAtNjcsOCArNjYsOSBAQAogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0Z1
bGxzY3JlZW4oKSBjb25zdDsKICAgICB2aXJ0dWFsIFBsYXRmb3JtTWVkaWEgcGxhdGZvcm1NZWRp
YSgpIGNvbnN0OwogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLSAgICBQbGF0Zm9y
bUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Q7CisgICAgdmlydHVhbCBQbGF0Zm9ybUxheWVy
KiBwbGF0Zm9ybUxheWVyKCkgY29uc3Q7CiAjZW5kaWYKKwogICAgIEludFNpemUgbmF0dXJhbFNp
emUoKSBjb25zdDsKICAgICBib29sIGhhc1ZpZGVvKCkgY29uc3Q7CiAgICAgYm9vbCBoYXNBdWRp
bygpIGNvbnN0OwpAQCAtMTYxLDEwICsxNjEsNiBAQAogICAgIGNsYXNzIExheWVyQ2xpZW50Owog
ICAgIGZyaWVuZCBjbGFzcyBMYXllckNsaWVudDsKICAgICBPd25QdHI8TGF5ZXJDbGllbnQ+IG1f
bGF5ZXJDbGllbnQ7Ci0KLSAgICBjbGFzcyBMYXlvdXRDbGllbnQ7Ci0gICAgZnJpZW5kIGNsYXNz
IExheW91dENsaWVudDsKLSAgICBPd25QdHI8TGF5b3V0Q2xpZW50PiBtX2xheW91dENsaWVudDsK
ICNlbmRpZgogCiAgICAgY2xhc3MgVmlzdWFsQ29udGV4dENsaWVudDsKQEAgLTE3OCw4ICsxNzQs
OCBAQAogICAgIE1lZGlhUGxheWVyKiBtX3BsYXllcjsKICAgICBSZWZQdHI8UVRNb3ZpZT4gbV9t
b3ZpZTsKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAgUmVmUHRyPFdLQ0FD
RkxheWVyPiBtX3F0VmlkZW9MYXllcjsKLSAgICBPd25QdHI8R3JhcGhpY3NMYXllcj4gbV90cmFu
c2Zvcm1MYXllcjsKKyAgICBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBtX3F0VmlkZW9MYXllcjsK
KyAgICBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBtX3RyYW5zZm9ybUxheWVyOwogICAgIE93blB0
cjxXS0NBSW1hZ2VRdWV1ZT4gbV9pbWFnZVF1ZXVlOwogICAgIE93blB0cjxRVERlY29tcHJlc3Np
b25TZXNzaW9uPiBtX2RlY29tcHJlc3Npb25TZXNzaW9uOwogICAgIENHQWZmaW5lVHJhbnNmb3Jt
IG1fbW92aWVUcmFuc2Zvcm07IApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
TWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldp
bmRvdy5jcHAJKHJldmlzaW9uIDc1MjEzKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTkwLDcgKzkwLDcgQEAKIH0KIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykK
LXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdzo6c2V0Um9vdENoaWxkTGF5
ZXIoUGFzc1JlZlB0cjxXS0NBQ0ZMYXllcj4gcm9vdENoaWxkKQordm9pZCBNZWRpYVBsYXllclBy
aXZhdGVGdWxsc2NyZWVuV2luZG93OjpzZXRSb290Q2hpbGRMYXllcihQYXNzUmVmUHRyPFBsYXRm
b3JtQ0FMYXllcj4gcm9vdENoaWxkKQogewogICAgIGlmIChtX3Jvb3RDaGlsZCA9PSByb290Q2hp
bGQpCiAgICAgICAgIHJldHVybjsKQEAgLTEwNCw3ICsxMDQsNyBAQAogICAgICAgICByZXR1cm47
CiAKICAgICBtX2xheWVyUmVuZGVyZXItPnNldFJvb3RDaGlsZExheWVyKG1fcm9vdENoaWxkLmdl
dCgpKTsKLSAgICBXS0NBQ0ZMYXllciogcm9vdExheWVyID0gbV9yb290Q2hpbGQtPnJvb3RMYXll
cigpOworICAgIFBsYXRmb3JtQ0FMYXllciogcm9vdExheWVyID0gbV9yb290Q2hpbGQtPnJvb3RM
YXllcigpOwogICAgIENHUmVjdCByb290Qm91bmRzID0gbV9yb290Q2hpbGQtPnJvb3RMYXllcigp
LT5ib3VuZHMoKTsKICAgICBtX3Jvb3RDaGlsZC0+c2V0RnJhbWUocm9vdEJvdW5kcyk7CiAgICAg
bV9yb290Q2hpbGQtPnNldEJhY2tncm91bmRDb2xvcihDR0NvbG9yR2V0Q29uc3RhbnRDb2xvcihr
Q0dDb2xvckJsYWNrKSk7CkBAIC0xNjAsNyArMTYwLDcgQEAKICAgICAgICAgICAgICAgICBicmVh
azsKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgICAgICAgICBtX2xheWVy
UmVuZGVyZXItPnJlc2l6ZSgpOwotICAgICAgICAgICAgV0tDQUNGTGF5ZXIqIHJvb3RMYXllciA9
IG1fcm9vdENoaWxkLT5yb290TGF5ZXIoKTsKKyAgICAgICAgICAgIFBsYXRmb3JtQ0FMYXllciog
cm9vdExheWVyID0gbV9yb290Q2hpbGQtPnJvb3RMYXllcigpOwogICAgICAgICAgICAgQ0dSZWN0
IHJvb3RCb3VuZHMgPSBtX3Jvb3RDaGlsZC0+cm9vdExheWVyKCktPmJvdW5kcygpOwogICAgICAg
ICAgICAgbV9yb290Q2hpbGQtPnNldEZyYW1lKHJvb3RCb3VuZHMpOwogICAgICAgICAgICAgbV9y
b290Q2hpbGQtPnNldE5lZWRzTGF5b3V0KCk7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9HcmFwaGljc0NvbnRleHRDR1dpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0Q0dXaW4uY3BwCShyZXZpc2lvbiA3
NTIxMykKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENH
V2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsMTAgQEAKICAgICBCSVRNQVAgaW5m
bzsKIAogICAgIEdldE9iamVjdChiaXRtYXAsIHNpemVvZihpbmZvKSwgJmluZm8pOworCisgICAg
aWYgKGluZm8uYm1CaXRzUGl4ZWwgIT0gMzIpCisgICAgICAgIHJldHVybiAwOworCiAgICAgQVNT
RVJUKGluZm8uYm1CaXRzUGl4ZWwgPT0gMzIpOwogCiAgICAgQ0dCaXRtYXBJbmZvIGJpdG1hcElu
Zm8gPSBrQ0dCaXRtYXBCeXRlT3JkZXIzMkxpdHRsZSB8IChoYXNBbHBoYSA/IGtDR0ltYWdlQWxw
aGFQcmVtdWx0aXBsaWVkRmlyc3QgOiBrQ0dJbWFnZUFscGhhTm9uZVNraXBGaXJzdCk7CkluZGV4
OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVGdWxsc2Ny
ZWVuV2luZG93LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
TWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdy5oCShyZXZpc2lvbiA3NTIxMykKKysr
IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3Jl
ZW5XaW5kb3cuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNyBAQAogI2RlZmluZSBNZWRp
YVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93X2gKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9D
T01QT1NJVElORykKLSNpbmNsdWRlICJXS0NBQ0ZMYXllci5oIgorI2luY2x1ZGUgIlBsYXRmb3Jt
Q0FMYXllci5oIgogI2luY2x1ZGUgIldLQ0FDRkxheWVyUmVuZGVyZXIuaCIKICNlbmRpZgogI2lu
Y2x1ZGUgPHd0Zi9Pd25QdHIuaD4KQEAgLTYxLDggKzYxLDggQEAKICNpZiBVU0UoQUNDRUxFUkFU
RURfQ09NUE9TSVRJTkcpCiAgICAgV0tDQUNGTGF5ZXJSZW5kZXJlciogbGF5ZXJSZW5kZXJlcigp
IGNvbnN0IHsgcmV0dXJuIG1fbGF5ZXJSZW5kZXJlci5nZXQoKTsgfQogCi0gICAgV0tDQUNGTGF5
ZXIqIHJvb3RDaGlsZExheWVyKCkgY29uc3QgeyByZXR1cm4gbV9yb290Q2hpbGQuZ2V0KCk7IH0K
LSAgICB2b2lkIHNldFJvb3RDaGlsZExheWVyKFBhc3NSZWZQdHI8V0tDQUNGTGF5ZXI+KTsKKyAg
ICBQbGF0Zm9ybUNBTGF5ZXIqIHJvb3RDaGlsZExheWVyKCkgY29uc3QgeyByZXR1cm4gbV9yb290
Q2hpbGQuZ2V0KCk7IH0KKyAgICB2b2lkIHNldFJvb3RDaGlsZExheWVyKFBhc3NSZWZQdHI8UGxh
dGZvcm1DQUxheWVyPik7CiAjZW5kaWYKIAogcHJpdmF0ZToKQEAgLTcyLDcgKzcyLDcgQEAKICAg
ICBNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuQ2xpZW50KiBtX2NsaWVudDsKICNpZiBVU0Uo
QUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgT3duUHRyPFdLQ0FDRkxheWVyUmVuZGVyZXI+
IG1fbGF5ZXJSZW5kZXJlcjsKLSAgICBSZWZQdHI8V0tDQUNGTGF5ZXI+IG1fcm9vdENoaWxkOwor
ICAgIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IG1fcm9vdENoaWxkOwogI2VuZGlmCiAgICAgSFdO
RCBtX2h3bmQ7CiB9OwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vV0tDQUNG
TGF5ZXJSZW5kZXJlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vV0tDQUNGTGF5ZXJSZW5kZXJlci5jcHAJKHJldmlzaW9uIDc1MjEzKQorKysgV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vV0tDQUNGTGF5ZXJSZW5kZXJlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMzLDEwICszMywxMiBAQAogCiAjaW5jbHVkZSAiV0tDQUNGTGF5ZXJSZW5kZXJl
ci5oIgogCisjaW5jbHVkZSAiUGxhdGZvcm1DQUxheWVyLmgiCiAjaW5jbHVkZSAiV0tDQUNGQ29u
dGV4dEZsdXNoZXIuaCIKLSNpbmNsdWRlICJXS0NBQ0ZMYXllci5oIgogI2luY2x1ZGUgIldlYkNv
cmVJbnN0YW5jZUhhbmRsZS5oIgogI2luY2x1ZGUgPFdlYktpdFN5c3RlbUludGVyZmFjZS9XZWJL
aXRTeXN0ZW1JbnRlcmZhY2UuaD4KKyNpbmNsdWRlIDxsaW1pdHMuaD4KKyNpbmNsdWRlIDx3dGYv
Q3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9P
d25BcnJheVB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KQEAgLTQ1LDYgKzQ3LDggQEAK
ICNpbmNsdWRlIDxkM2Q5Lmg+CiAjaW5jbHVkZSA8ZDNkeDkuaD4KIAordXNpbmcgbmFtZXNwYWNl
IHN0ZDsKKwogI3ByYWdtYSBjb21tZW50KGxpYiwgImQzZDkiKQogI3ByYWdtYSBjb21tZW50KGxp
YiwgImQzZHg5IikKICNpZmRlZiBERUJVR19BTEwKQEAgLTc5LDMzICs4Myw2IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotLy8gU3ViY2xhc3Mgb2YgV0tDQUNGTGF5ZXIgdG8gYWxsb3cgdGhl
IHJvb3QgbGF5ZXIgdG8gaGF2ZSBhIGJhY2sgcG9pbnRlciB0byB0aGUgbGF5ZXIgcmVuZGVyZXIK
LS8vIHRvIGZpcmUgb2ZmIGEgZHJhdwotY2xhc3MgV0tDQUNGUm9vdExheWVyIDogcHVibGljIFdL
Q0FDRkxheWVyIHsKLXB1YmxpYzoKLSAgICBXS0NBQ0ZSb290TGF5ZXIoV0tDQUNGTGF5ZXJSZW5k
ZXJlciogcmVuZGVyZXIpCi0gICAgICAgIDogV0tDQUNGTGF5ZXIoV0tDQUNGTGF5ZXI6OkxheWVy
KQotICAgIHsKLSAgICAgICAgbV9yZW5kZXJlciA9IHJlbmRlcmVyOwotICAgIH0KLQotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFdLQ0FDRlJvb3RMYXllcj4gY3JlYXRlKFdLQ0FDRkxheWVyUmVuZGVy
ZXIqIHJlbmRlcmVyKQotICAgIHsKLSAgICAgICAgaWYgKCFXS0NBQ0ZMYXllclJlbmRlcmVyOjph
Y2NlbGVyYXRlZENvbXBvc2l0aW5nQXZhaWxhYmxlKCkpCi0gICAgICAgICAgICByZXR1cm4gMDsK
LSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXS0NBQ0ZSb290TGF5ZXIocmVuZGVyZXIpKTsK
LSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNSZW5kZXIoKSB7IG1fcmVuZGVyZXIt
PmxheWVyVHJlZURpZENoYW5nZSgpOyB9Ci0KLSAgICAvLyBPdmVybG9hZCB0aGlzIHRvIGF2b2lk
IGNhbGxpbmcgc2V0TmVlZHNEaXNwbGF5IG9uIHRoZSBsYXllciwgd2hpY2ggd291bGQgb3ZlcnJp
ZGUgdGhlIGNvbnRlbnRzCi0gICAgLy8gd2UgaGF2ZSBwbGFjZWQgb24gdGhlIHJvb3QgbGF5ZXIu
Ci0gICAgdmlydHVhbCB2b2lkIHNldE5lZWRzRGlzcGxheShjb25zdCBDR1JlY3QqIGRpcnR5UmVj
dCkgeyBzZXROZWVkc0NvbW1pdCgpOyB9Ci0KLXByaXZhdGU6Ci0gICAgV0tDQUNGTGF5ZXJSZW5k
ZXJlciogbV9yZW5kZXJlcjsKLX07Ci0KIHN0YXRpYyBEM0RQUkVTRU5UX1BBUkFNRVRFUlMgaW5p
dGlhbFByZXNlbnRhdGlvblBhcmFtZXRlcnMoKQogewogICAgIEQzRFBSRVNFTlRfUEFSQU1FVEVS
UyBwYXJhbWV0ZXJzID0gezB9OwpAQCAtMjA2LDEzICsxODMsMTcgQEAKIFdLQ0FDRkxheWVyUmVu
ZGVyZXI6OldLQ0FDRkxheWVyUmVuZGVyZXIoV0tDQUNGTGF5ZXJSZW5kZXJlckNsaWVudCogY2xp
ZW50KQogICAgIDogbV9jbGllbnQoY2xpZW50KQogICAgICwgbV9taWdodEJlQWJsZVRvQ3JlYXRl
RGV2aWNlTGF0ZXIodHJ1ZSkKLSAgICAsIG1fcm9vdExheWVyKFdLQ0FDRlJvb3RMYXllcjo6Y3Jl
YXRlKHRoaXMpKQorICAgICwgbV9yb290TGF5ZXIoUGxhdGZvcm1DQUxheWVyOjpjcmVhdGUoUGxh
dGZvcm1DQUxheWVyOjpMYXllclR5cGVSb290TGF5ZXIsIDApKQogICAgICwgbV9jb250ZXh0KHdr
Q0FDRkNvbnRleHRDcmVhdGUoKSkKICAgICAsIG1faG9zdFdpbmRvdygwKQogICAgICwgbV9yZW5k
ZXJUaW1lcih0aGlzLCAmV0tDQUNGTGF5ZXJSZW5kZXJlcjo6cmVuZGVyVGltZXJGaXJlZCkKICAg
ICAsIG1fYmFja2luZ1N0b3JlRGlydHkoZmFsc2UpCiAgICAgLCBtX211c3RSZXNldExvc3REZXZp
Y2VCZWZvcmVSZW5kZXJpbmcoZmFsc2UpCisgICAgLCBtX3N5bmNMYXllckNoYW5nZXMoZmFsc2Up
CiB7CisgICAgLy8gUG9pbnQgdGhlIENBQ0ZDb250ZXh0IHRvIHRoaXMKKyAgICB3a0NBQ0ZDb250
ZXh0U2V0VXNlckRhdGEobV9jb250ZXh0LCB0aGlzKTsKKwogICAgIC8vIFVuZGVyIHRoZSByb290
IGxheWVyLCB3ZSBoYXZlIGEgY2xpcHBpbmcgbGF5ZXIgdG8gY2xpcCB0aGUgY29udGVudCwKICAg
ICAvLyB0aGF0IGNvbnRhaW5zIGEgc2Nyb2xsIGxheWVyIHRoYXQgd2UgdXNlIGZvciBzY3JvbGxp
bmcgdGhlIGNvbnRlbnQuCiAgICAgLy8gVGhlIHJvb3QgbGF5ZXIgaXMgdGhlIHNpemUgb2YgdGhl
IGNsaWVudCBhcmVhIG9mIHRoZSB3aW5kb3cuCkBAIC0yMjMsNyArMjA0LDcgQEAKICAgICAvLyBT
Y3JvbGxpbmcgd2lsbCBhZmZlY3Qgb25seSB0aGUgcG9zaXRpb24gb2YgdGhlIHNjcm9sbCBsYXll
ciB3aXRob3V0IGFmZmVjdGluZyB0aGUgYm91bmRzLgogCiAgICAgbV9yb290TGF5ZXItPnNldE5h
bWUoIldLQ0FDRkxheWVyUmVuZGVyZXIgcm9vdExheWVyIik7Ci0gICAgbV9yb290TGF5ZXItPnNl
dEFuY2hvclBvaW50KENHUG9pbnRNYWtlKDAsIDApKTsKKyAgICBtX3Jvb3RMYXllci0+c2V0QW5j
aG9yUG9pbnQoRmxvYXRQb2ludDNEKDAsIDAsIDApKTsKICAgICBtX3Jvb3RMYXllci0+c2V0R2Vv
bWV0cnlGbGlwcGVkKHRydWUpOwogCiAjaWZuZGVmIE5ERUJVRwpAQCAtMjMzLDcgKzIxNCw3IEBA
CiAjZW5kaWYKIAogICAgIGlmIChtX2NvbnRleHQpCi0gICAgICAgIG1fcm9vdExheWVyLT5iZWNv
bWVSb290TGF5ZXJGb3JDb250ZXh0KG1fY29udGV4dCk7CisgICAgICAgIHdrQ0FDRkNvbnRleHRT
ZXRMYXllcihtX2NvbnRleHQsIG1fcm9vdExheWVyLT5wbGF0Zm9ybUxheWVyKCkpOwogCiAjaWZu
ZGVmIE5ERUJVRwogICAgIGNoYXIqIHByaW50VHJlZUZsYWcgPSBnZXRlbnYoIkNBX1BSSU5UX1RS
RUUiKTsKQEAgLTI0NywxMSArMjI4LDE2IEBACiAgICAgd2tDQUNGQ29udGV4dERlc3Ryb3kobV9j
b250ZXh0KTsKIH0KIAotV0tDQUNGTGF5ZXIqIFdLQ0FDRkxheWVyUmVuZGVyZXI6OnJvb3RMYXll
cigpIGNvbnN0CitQbGF0Zm9ybUNBTGF5ZXIqIFdLQ0FDRkxheWVyUmVuZGVyZXI6OnJvb3RMYXll
cigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcm9vdExheWVyLmdldCgpOwogfQogCit2b2lkIFdL
Q0FDRkxheWVyUmVuZGVyZXI6OmFkZFBlbmRpbmdBbmltYXRlZExheWVyKFBhc3NSZWZQdHI8UGxh
dGZvcm1DQUxheWVyPiBsYXllcikKK3sKKyAgICBtX3BlbmRpbmdBbmltYXRlZExheWVycy5hZGQo
bGF5ZXIpOworfQorCiB2b2lkIFdLQ0FDRkxheWVyUmVuZGVyZXI6OnNldFJvb3RDb250ZW50cyhD
R0ltYWdlUmVmIGltYWdlKQogewogICAgIEFTU0VSVChtX3Jvb3RMYXllcik7CkBAIC0yNjYsMTIg
KzI1MiwxMiBAQAogICAgIHBhaW50KCk7CiB9CiAKLXZvaWQgV0tDQUNGTGF5ZXJSZW5kZXJlcjo6
c2V0Um9vdENoaWxkTGF5ZXIoV0tDQUNGTGF5ZXIqIGxheWVyKQordm9pZCBXS0NBQ0ZMYXllclJl
bmRlcmVyOjpzZXRSb290Q2hpbGRMYXllcihQbGF0Zm9ybUNBTGF5ZXIqIGxheWVyKQogewogICAg
IG1fcm9vdExheWVyLT5yZW1vdmVBbGxTdWJsYXllcnMoKTsKICAgICBtX3Jvb3RDaGlsZExheWVy
ID0gbGF5ZXI7CiAgICAgaWYgKG1fcm9vdENoaWxkTGF5ZXIpCi0gICAgICAgIG1fcm9vdExheWVy
LT5hZGRTdWJsYXllcihtX3Jvb3RDaGlsZExheWVyKTsKKyAgICAgICAgbV9yb290TGF5ZXItPmFw
cGVuZFN1YmxheWVyKG1fcm9vdENoaWxkTGF5ZXIuZ2V0KCkpOwogfQogICAgCiB2b2lkIFdLQ0FD
RkxheWVyUmVuZGVyZXI6OmxheWVyVHJlZURpZENoYW5nZSgpCkBAIC0yODAsOCArMjY2LDExIEBA
CiAgICAgcmVuZGVyU29vbigpOwogfQogCi12b2lkIFdLQ0FDRkxheWVyUmVuZGVyZXI6OnNldE5l
ZWRzRGlzcGxheSgpCit2b2lkIFdLQ0FDRkxheWVyUmVuZGVyZXI6OnNldE5lZWRzRGlzcGxheShi
b29sIHN5bmMpCiB7CisgICAgaWYgKCFtX3N5bmNMYXllckNoYW5nZXMgJiYgc3luYykKKyAgICAg
ICAgbV9zeW5jTGF5ZXJDaGFuZ2VzID0gdHJ1ZTsKKwogICAgIEFTU0VSVChtX3Jvb3RMYXllcik7
CiAgICAgbV9yb290TGF5ZXItPnNldE5lZWRzRGlzcGxheSgwKTsKICAgICByZW5kZXJTb29uKCk7
CkBAIC0zNjEsOCArMzUwLDcgQEAKIAogdm9pZCBXS0NBQ0ZMYXllclJlbmRlcmVyOjpkZXN0cm95
UmVuZGVyZXIoKQogewotICAgIGlmIChtX2NvbnRleHQpCi0gICAgICAgIFdLQ0FDRkNvbnRleHRG
bHVzaGVyOjpzaGFyZWQoKS5yZW1vdmVDb250ZXh0KG1fY29udGV4dCk7CisgICAgd2tDQUNGQ29u
dGV4dFNldExheWVyKG1fY29udGV4dCwgbV9yb290TGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSk7CiAK
ICAgICBtX2QzZERldmljZSA9IDA7CiAgICAgaWYgKHNfZDNkKQpAQCAtNDYzLDIwICs0NTEsMzkg
QEAKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIC8vIFN5bmMgdGhlIGxheWVyIGlmIG5l
ZWRlZAorICAgIGlmIChtX3N5bmNMYXllckNoYW5nZXMpIHsKKyAgICAgICAgbV9jbGllbnQtPnN5
bmNDb21wb3NpdGluZ1N0YXRlKCk7CisgICAgICAgIG1fc3luY0xheWVyQ2hhbmdlcyA9IGZhbHNl
OworICAgIH0KKwogICAgIC8vIEZsdXNoIHRoZSByb290IGxheWVyIHRvIHRoZSByZW5kZXIgdHJl
ZS4KLSAgICBXS0NBQ0ZDb250ZXh0Rmx1c2hlcjo6c2hhcmVkKCkuZmx1c2hBbGxDb250ZXh0cygp
OworICAgIHdrQ0FDRkNvbnRleHRGbHVzaChtX2NvbnRleHQpOwogCisgICAgLy8gQWxsIHBlbmRp
bmcgYW5pbWF0aW9ucyB3aWxsIGhhdmUgYmVlbiBzdGFydGVkIHdpdGggdGhlIGZsdXNoLiBGaXJl
IHRoZSBhbmltYXRpb25TdGFydGVkIGNhbGxzCisgICAgZG91YmxlIGN1cnJlbnRUaW1lID0gV1RG
OjpjdXJyZW50VGltZSgpOworICAgIENGVGltZUludGVydmFsIHQgPSBjdXJyZW50VGltZSArIHdr
Q0FDRkNvbnRleHRHZXRMYXN0Q29tbWl0VGltZShtX2NvbnRleHQpIC0gQ0FDdXJyZW50TWVkaWFU
aW1lKCk7CisgICAgQVNTRVJUKHQgPD0gY3VycmVudFRpbWUpOworCisgICAgSGFzaFNldDxSZWZQ
dHI8UGxhdGZvcm1DQUxheWVyPiA+OjppdGVyYXRvciBlbmQgPSBtX3BlbmRpbmdBbmltYXRlZExh
eWVycy5lbmQoKTsKKyAgICBmb3IgKEhhc2hTZXQ8UmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gPjo6
aXRlcmF0b3IgaXQgPSBtX3BlbmRpbmdBbmltYXRlZExheWVycy5iZWdpbigpOyBpdCAhPSBlbmQ7
ICsraXQpIHsKKyAgICAgICAgUGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd25lciA9ICgqaXQpLT5v
d25lcigpOworICAgICAgICBvd25lci0+cGxhdGZvcm1DQUxheWVyQW5pbWF0aW9uU3RhcnRlZCh0
KTsKKyAgICB9CisKKyAgICBtX3BlbmRpbmdBbmltYXRlZExheWVycy5jbGVhcigpOworCiAgICAg
Q0dSZWN0IGJvdW5kcyA9IHRoaXMtPmJvdW5kcygpOwogCi0gICAgQ0ZUaW1lSW50ZXJ2YWwgdCA9
IENBQ3VycmVudE1lZGlhVGltZSgpOwotCiAgICAgLy8gR2l2ZSB0aGUgcmVuZGVyZXIgc29tZSBz
cGFjZSB0byB1c2UuIFRoaXMgbmVlZHMgdG8gYmUgdmFsaWQgdW50aWwgdGhlCiAgICAgLy8gd2tD
QUNGQ29udGV4dEZpbmlzaFVwZGF0ZSgpIGNhbGwgYmVsb3cuCiAgICAgY2hhciBzcGFjZVs0MDk2
XTsKLSAgICBpZiAoIXdrQ0FDRkNvbnRleHRCZWdpblVwZGF0ZShtX2NvbnRleHQsIHNwYWNlLCBz
aXplb2Yoc3BhY2UpLCB0LCBib3VuZHMsIHdpbmRvd0RpcnR5UmVjdHMuZGF0YSgpLCB3aW5kb3dE
aXJ0eVJlY3RzLnNpemUoKSkpCisgICAgaWYgKCF3a0NBQ0ZDb250ZXh0QmVnaW5VcGRhdGUobV9j
b250ZXh0LCBzcGFjZSwgc2l6ZW9mKHNwYWNlKSwgQ0FDdXJyZW50TWVkaWFUaW1lKCksIGJvdW5k
cywgd2luZG93RGlydHlSZWN0cy5kYXRhKCksIHdpbmRvd0RpcnR5UmVjdHMuc2l6ZSgpKSkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgSFJFU1VMVCBlcnIgPSBTX09LOworICAgIENGVGltZUludGVy
dmFsIHRpbWVUb05leHRSZW5kZXIgPSBudW1lcmljX2xpbWl0czxDRlRpbWVJbnRlcnZhbD46Omlu
ZmluaXR5KCk7CisKICAgICBkbyB7CiAgICAgICAgIC8vIEZJWE1FOiBkb24ndCBuZWVkIHRvIGNs
ZWFyIGRpcnR5IHJlZ2lvbiBpZiBsYXllciB0cmVlIGlzIG9wYXF1ZS4KIApAQCAtNDk2LDYgKzUw
Myw4IEBACiAgICAgICAgIH0KICAgICAgICAgd2tDQUNGVXBkYXRlUmVjdEVudW1lcmF0b3JSZWxl
YXNlKGUpOwogCisgICAgICAgIHRpbWVUb05leHRSZW5kZXIgPSB3a0NBQ0ZDb250ZXh0R2V0TmV4
dFVwZGF0ZVRpbWUobV9jb250ZXh0KTsKKwogICAgICAgICBpZiAocmVjdHMuaXNFbXB0eSgpKQog
ICAgICAgICAgICAgYnJlYWs7CiAKQEAgLTUyMyw2ICs1MzIsMTAgQEAKICAgICBpZiAobV9wcmlu
dFRyZWUpCiAgICAgICAgIG1fcm9vdExheWVyLT5wcmludFRyZWUoKTsKICNlbmRpZgorCisgICAg
Ly8gSWYgdGltZVRvTmV4dFJlbmRlciBpcyBub3QgaW5maW5pdHksIGl0IG1lYW5zIGFuaW1hdGlv
bnMgYXJlIHJ1bm5pbmcsIHNvIHF1ZXVlIHVwIHRvIHJlbmRlciBhZ2FpbgorICAgIGlmICh0aW1l
VG9OZXh0UmVuZGVyICE9IG51bWVyaWNfbGltaXRzPENGVGltZUludGVydmFsPjo6aW5maW5pdHko
KSkKKyAgICAgICAgcmVuZGVyU29vbigpOwogfQogCiB2b2lkIFdLQ0FDRkxheWVyUmVuZGVyZXI6
OnJlbmRlclNvb24oKQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQ
bGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlz
dWFsQ29udGV4dC5jcHAJKHJldmlzaW9uIDc1MjEzKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTU3LDggKzU3LDcgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdI
YXNoLmg+CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0jaW5jbHVkZSAiR3Jh
cGhpY3NMYXllckNBQ0YuaCIKLSNpbmNsdWRlICJXS0NBQ0ZMYXllci5oIgorI2luY2x1ZGUgIlBs
YXRmb3JtQ0FMYXllci5oIgogI2luY2x1ZGUgIldLQ0FJbWFnZVF1ZXVlLmgiCiAjZW5kaWYKIApA
QCAtODUsNDggKzg0LDQ5IEBACiB9OwogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5H
KQotLy8gSW50ZXJmYWNlIGRlY2xhcmF0aW9uIGZvciBNZWRpYVBsYXllclByaXZhdGVRdWlja1Rp
bWVWaXN1YWxDb250ZXh0J3MgR3JhcGhpY3NMYXllckNsaWVudCBhZ2dyZWdhdGUKLWNsYXNzIE1l
ZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvbnRleHQ6OkxheWVyQ2xpZW50IDogcHVi
bGljIEdyYXBoaWNzTGF5ZXJDbGllbnQgeworY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tU
aW1lVmlzdWFsQ29udGV4dDo6TGF5ZXJDbGllbnQgOiBwdWJsaWMgUGxhdGZvcm1DQUxheWVyQ2xp
ZW50IHsKIHB1YmxpYzoKICAgICBMYXllckNsaWVudChNZWRpYVBsYXllclByaXZhdGVRdWlja1Rp
bWVWaXN1YWxDb250ZXh0KiBwYXJlbnQpIDogbV9wYXJlbnQocGFyZW50KSB7fQogICAgIHZpcnR1
YWwgfkxheWVyQ2xpZW50KCkgeyBtX3BhcmVudCA9IDA7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcGFp
bnRDb250ZW50cyhjb25zdCBHcmFwaGljc0xheWVyKiwgR3JhcGhpY3NDb250ZXh0JiwgR3JhcGhp
Y3NMYXllclBhaW50aW5nUGhhc2UsIGNvbnN0IEludFJlY3QmIGluQ2xpcCk7Ci0gICAgdmlydHVh
bCB2b2lkIG5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQoY29uc3QgR3JhcGhpY3NMYXllciosIGRvdWJs
ZSB0aW1lKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5U3luY1JlcXVpcmVkKGNvbnN0IEdy
YXBoaWNzTGF5ZXIqKSB7IH0KLSAgICB2aXJ0dWFsIGJvb2wgc2hvd0RlYnVnQm9yZGVycygpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIHNob3dSZXBhaW50Q291bnRl
cigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci1wcml2YXRlOgotICAgIE1lZGlhUGxheWVyUHJp
dmF0ZVF1aWNrVGltZVZpc3VhbENvbnRleHQqIG1fcGFyZW50OwotfTsKIAotY2xhc3MgTWVkaWFQ
bGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dDo6TGF5b3V0Q2xpZW50IDogcHVibGlj
IFdLQ0FDRkxheWVyTGF5b3V0Q2xpZW50IHsKLXB1YmxpYzoKLSAgICBMYXlvdXRDbGllbnQoTWVk
aWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dCogcGFyZW50KSA6IG1fcGFyZW50
KHBhcmVudCkge30KLSAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0U3VibGF5ZXJzT2ZMYXllcihXS0NB
Q0ZMYXllciopOworICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNBTGF5ZXJMYXlvdXRTdWJsYXll
cnNPZkxheWVyKFBsYXRmb3JtQ0FMYXllciopOworICAgIHZpcnR1YWwgYm9vbCBwbGF0Zm9ybUNB
TGF5ZXJSZXNwb25kc1RvTGF5b3V0Q2hhbmdlcygpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKwor
ICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNBTGF5ZXJBbmltYXRpb25TdGFydGVkKENGVGltZUlu
dGVydmFsIGJlZ2luVGltZSkgeyB9CisgICAgdmlydHVhbCBHcmFwaGljc0xheWVyOjpDb21wb3Np
dGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRpb24gcGxhdGZvcm1DQUxheWVyQ29udGVudHNPcmllbnRh
dGlvbigpIGNvbnN0IHsgcmV0dXJuIEdyYXBoaWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0
ZXNCb3R0b21VcDsgfQorICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNBTGF5ZXJQYWludENvbnRl
bnRzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGluQ2xpcCkgeyB9CisgICAgdmly
dHVhbCBib29sIHBsYXRmb3JtQ0FMYXllclNob3dEZWJ1Z0JvcmRlcnMoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBwbGF0Zm9ybUNBTGF5ZXJTaG93UmVwYWludENv
dW50ZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgaW50IHBsYXRmb3Jt
Q0FMYXllckluY3JlbWVudFJlcGFpbnRDb3VudCgpIHsgcmV0dXJuIDA7IH0KKworICAgIHZpcnR1
YWwgYm9vbCBwbGF0Zm9ybUNBTGF5ZXJDb250ZW50c09wYXF1ZSgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgdmlydHVhbCBib29sIHBsYXRmb3JtQ0FMYXllckRyYXdzQ29udGVudCgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQ0FMYXllckxh
eWVyRGlkRGlzcGxheShQbGF0Zm9ybUxheWVyKikgeyB9CisKIHByaXZhdGU6CiAgICAgTWVkaWFQ
bGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dCogbV9wYXJlbnQ7CiB9OwogCi12b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvbnRleHQ6OkxheW91dENsaWVudDo6
bGF5b3V0U3VibGF5ZXJzT2ZMYXllcihXS0NBQ0ZMYXllciogbGF5ZXIpCit2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvbnRleHQ6OkxheWVyQ2xpZW50OjpwbGF0Zm9ybUNB
TGF5ZXJMYXlvdXRTdWJsYXllcnNPZkxheWVyKFBsYXRmb3JtQ0FMYXllciogbGF5ZXIpCiB7CiAg
ICAgQVNTRVJUKG1fcGFyZW50KTsKLSAgICBBU1NFUlQobV9wYXJlbnQtPm1fdHJhbnNmb3JtTGF5
ZXItPnBsYXRmb3JtTGF5ZXIoKSA9PSBsYXllcik7CisgICAgQVNTRVJUKG1fcGFyZW50LT5tX3Ry
YW5zZm9ybUxheWVyID09IGxheWVyKTsKIAotICAgIENHU2l6ZSBwYXJlbnRTaXplID0gbGF5ZXIt
PmJvdW5kcygpLnNpemU7Ci0gICAgQ0dTaXplIG5hdHVyYWxTaXplID0gbV9wYXJlbnQtPm5hdHVy
YWxTaXplKCk7CisgICAgRmxvYXRTaXplIHBhcmVudFNpemUgPSBsYXllci0+Ym91bmRzKCkuc2l6
ZSgpOworICAgIEZsb2F0U2l6ZSBuYXR1cmFsU2l6ZSA9IG1fcGFyZW50LT5uYXR1cmFsU2l6ZSgp
OwogCiAgICAgLy8gQ2FsY3VsYXRlIHRoZSByYXRpbyBvZiB0aGVzZSB0d28gc2l6ZXMgYW5kIHVz
ZSB0aGF0IHJhdGlvIHRvIHNjYWxlIHRoZSBxdFZpZGVvTGF5ZXI6Ci0gICAgQ0dTaXplIHJhdGlv
ID0gQ0dTaXplTWFrZShwYXJlbnRTaXplLndpZHRoIC8gbmF0dXJhbFNpemUud2lkdGgsIHBhcmVu
dFNpemUuaGVpZ2h0IC8gbmF0dXJhbFNpemUuaGVpZ2h0KTsKKyAgICBGbG9hdFNpemUgcmF0aW8o
cGFyZW50U2l6ZS53aWR0aCgpIC8gbmF0dXJhbFNpemUud2lkdGgoKSwgcGFyZW50U2l6ZS5oZWln
aHQoKSAvIG5hdHVyYWxTaXplLmhlaWdodCgpKTsKIAogICAgIGludCB2aWRlb1dpZHRoID0gMDsK
ICAgICBpbnQgdmlkZW9IZWlnaHQgPSAwOwogICAgIG1fcGFyZW50LT5tX21vdmllLT5nZXROYXR1
cmFsU2l6ZSh2aWRlb1dpZHRoLCB2aWRlb0hlaWdodCk7Ci0gICAgQ0dSZWN0IHZpZGVvQm91bmRz
ID0gQ0dSZWN0TWFrZSgwLCAwLCB2aWRlb1dpZHRoICogcmF0aW8ud2lkdGgsIHZpZGVvSGVpZ2h0
ICogcmF0aW8uaGVpZ2h0KTsKLSAgICBDR1BvaW50IHZpZGVvQW5jaG9yID0gbV9wYXJlbnQtPm1f
cXRWaWRlb0xheWVyLT5hbmNob3JQb2ludCgpOworICAgIEZsb2F0UmVjdCB2aWRlb0JvdW5kcygw
LCAwLCB2aWRlb1dpZHRoICogcmF0aW8ud2lkdGgoKSwgdmlkZW9IZWlnaHQgKiByYXRpby5oZWln
aHQoKSk7CisgICAgRmxvYXRQb2ludDNEIHZpZGVvQW5jaG9yID0gbV9wYXJlbnQtPm1fcXRWaWRl
b0xheWVyLT5hbmNob3JQb2ludCgpOwogCiAgICAgLy8gQ2FsY3VsYXRlIHRoZSBuZXcgcG9zaXRp
b24gYmFzZWQgb24gdGhlIHBhcmVudCdzIHNpemU6Ci0gICAgQ0dQb2ludCBwb3NpdGlvbiA9IENH
UG9pbnRNYWtlKHBhcmVudFNpemUud2lkdGggKiAwLjUgLSB2aWRlb0JvdW5kcy5zaXplLndpZHRo
ICogKDAuNSAtIHZpZGVvQW5jaG9yLngpLAotICAgICAgICBwYXJlbnRTaXplLmhlaWdodCAqIDAu
NSAtIHZpZGVvQm91bmRzLnNpemUuaGVpZ2h0ICogKDAuNSAtIHZpZGVvQW5jaG9yLnkpKTsgCisg
ICAgRmxvYXRQb2ludCBwb3NpdGlvbihwYXJlbnRTaXplLndpZHRoKCkgKiAwLjUgLSB2aWRlb0Jv
dW5kcy53aWR0aCgpICogKDAuNSAtIHZpZGVvQW5jaG9yLngoKSksCisgICAgICAgIHBhcmVudFNp
emUuaGVpZ2h0KCkgKiAwLjUgLSB2aWRlb0JvdW5kcy5oZWlnaHQoKSAqICgwLjUgLSB2aWRlb0Fu
Y2hvci55KCkpKTsgCiAKICAgICBtX3BhcmVudC0+bV9xdFZpZGVvTGF5ZXItPnNldEJvdW5kcyh2
aWRlb0JvdW5kcyk7CiAgICAgbV9wYXJlbnQtPm1fcXRWaWRlb0xheWVyLT5zZXRQb3NpdGlvbihw
b3NpdGlvbik7CkBAIC0xNzEsNyArMTcxLDYgQEAKICAgICAsIG1fbW92aWVDbGllbnQobmV3IE1l
ZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvbnRleHQ6Ok1vdmllQ2xpZW50KHRoaXMp
KQogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICAsIG1fbGF5ZXJDbGllbnQo
bmV3IE1lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvbnRleHQ6OkxheWVyQ2xpZW50
KHRoaXMpKQotICAgICwgbV9sYXlvdXRDbGllbnQobmV3IE1lZGlhUGxheWVyUHJpdmF0ZVF1aWNr
VGltZVZpc3VhbENvbnRleHQ6OkxheW91dENsaWVudCh0aGlzKSkKICAgICAsIG1fbW92aWVUcmFu
c2Zvcm0oQ0dBZmZpbmVUcmFuc2Zvcm1JZGVudGl0eSkKICNlbmRpZgogICAgICwgbV92aXN1YWxD
b250ZXh0Q2xpZW50KG5ldyBNZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0
OjpWaXN1YWxDb250ZXh0Q2xpZW50KHRoaXMpKQpAQCAtMjAzLDggKzIwMiw4IEBACiAgICAgcC5t
ZWRpYS5xdE1vdmllVmlzdWFsQ29udGV4dCA9IG1fdmlzdWFsQ29udGV4dC5nZXQoKTsKICAgICBy
ZXR1cm4gcDsKIH0KLQogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKwogUGxhdGZv
cm1MYXllciogTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dDo6cGxhdGZv
cm1MYXllcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fdHJhbnNmb3JtTGF5ZXIgPyBtX3RyYW5z
Zm9ybUxheWVyLT5wbGF0Zm9ybUxheWVyKCkgOiAwOwpAQCAtODY2LDcgKzg2NSw3IEBACiAgICAg
ICAgIGlmICghYnVmZmVyLnBpeGVsQnVmZmVyUmVmKCkpCiAgICAgICAgICAgICByZXR1cm47CiAK
LSAgICAgICAgV0tDQUNGTGF5ZXIqIGxheWVyID0gbV9xdFZpZGVvTGF5ZXIuZ2V0KCk7CisgICAg
ICAgIFBsYXRmb3JtQ0FMYXllciogbGF5ZXIgPSBtX3F0VmlkZW9MYXllci5nZXQoKTsKIAogICAg
ICAgICBpZiAoIWJ1ZmZlci5sb2NrQmFzZUFkZHJlc3MoKSkgewogICAgICAgICAgICAgaWYgKHJl
cXVpcmVkRGxsc0F2YWlsYWJsZSgpKSB7CkBAIC05MDAsNyArODk5LDcgQEAKICAgICAgICAgICAg
IH0KIAogICAgICAgICAgICAgYnVmZmVyLnVubG9ja0Jhc2VBZGRyZXNzKCk7Ci0gICAgICAgICAg
ICBsYXllci0+cm9vdExheWVyKCktPnNldE5lZWRzUmVuZGVyKCk7CisgICAgICAgICAgICBsYXll
ci0+c2V0TmVlZHNDb21taXQoKTsKICAgICAgICAgfQogICAgIH0gZWxzZQogI2VuZGlmCkBAIC0x
MTc5LDIwICsxMTc4LDE2IEBACiAgICAgaWYgKCFtX21vdmllIHx8IG1fcXRWaWRlb0xheWVyKQog
ICAgICAgICByZXR1cm47CiAKLSAgICAvLyBDcmVhdGUgYSBHcmFwaGljc0xheWVyIHRoYXQgd29u
J3QgYmUgaW5zZXJ0ZWQgZGlyZWN0bHkgaW50byB0aGUgcmVuZGVyIHRyZWUsIGJ1dCB3aWxsIHVz
ZWQgCi0gICAgLy8gYXMgYSB3cmFwcGVyIGZvciBhIFdLQ0FDRkxheWVyIHdoaWNoIGdldHMgaW5z
ZXJ0ZWQgYXMgdGhlIGNvbnRlbnQgbGF5ZXIgb2YgdGhlIHZpZGVvIAotICAgIC8vIHJlbmRlcmVy
J3MgR3JhcGhpY3NMYXllci4KLSAgICBtX3RyYW5zZm9ybUxheWVyLnNldChuZXcgR3JhcGhpY3NM
YXllckNBQ0YobV9sYXllckNsaWVudC5nZXQoKSkpOworICAgIC8vIENyZWF0ZSBhIFBsYXRmb3Jt
Q0FMYXllciB3aGljaCB3aWxsIHRyYW5zZm9ybSB0aGUgY29udGVudHMgb2YgdGhlIHZpZGVvIGxh
eWVyCisgICAgLy8gd2hpY2ggaXMgaW4gbV9xdFZpZGVvTGF5ZXIuCisgICAgbV90cmFuc2Zvcm1M
YXllciA9IFBsYXRmb3JtQ0FMYXllcjo6Y3JlYXRlKFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBl
TGF5ZXIsIG1fbGF5ZXJDbGllbnQuZ2V0KCkpOwogICAgIGlmICghbV90cmFuc2Zvcm1MYXllcikK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gTWFyayB0aGUgbGF5ZXIgYXMgZHJhd2luZyBpdHNl
bGYsIGFuY2hvcmVkIGluIHRoZSB0b3AgbGVmdCwgYW5kIGJvdHRvbS11cC4KLSAgICBtX3RyYW5z
Zm9ybUxheWVyLT5zZXREcmF3c0NvbnRlbnQoZmFsc2UpOworICAgIC8vIE1hcmsgdGhlIGxheWVy
IGFzIGFuY2hvcmVkIGluIHRoZSB0b3AgbGVmdC4KICAgICBtX3RyYW5zZm9ybUxheWVyLT5zZXRB
bmNob3JQb2ludChGbG9hdFBvaW50M0QoKSk7Ci0gICAgbV90cmFuc2Zvcm1MYXllci0+c2V0Q29u
dGVudHNPcmllbnRhdGlvbihHcmFwaGljc0xheWVyOjpDb21wb3NpdGluZ0Nvb3JkaW5hdGVzQm90
dG9tVXApOwotICAgIG1fdHJhbnNmb3JtTGF5ZXItPnBsYXRmb3JtTGF5ZXIoKS0+c2V0TGF5b3V0
Q2xpZW50KG1fbGF5b3V0Q2xpZW50LmdldCgpKTsKIAotICAgIG1fcXRWaWRlb0xheWVyID0gV0tD
QUNGTGF5ZXI6OmNyZWF0ZShXS0NBQ0ZMYXllcjo6TGF5ZXIpOworICAgIG1fcXRWaWRlb0xheWVy
ID0gUGxhdGZvcm1DQUxheWVyOjpjcmVhdGUoUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVMYXll
ciwgMCk7CiAgICAgaWYgKCFtX3F0VmlkZW9MYXllcikKICAgICAgICAgcmV0dXJuOwogCkBAIC0x
MjA5LDggKzEyMDQsOCBAQAogI2lmbmRlZiBOREVCVUcKICAgICBtX3F0VmlkZW9MYXllci0+c2V0
TmFtZSgiVmlkZW8gbGF5ZXIiKTsKICNlbmRpZgotICAgIG1fdHJhbnNmb3JtTGF5ZXItPnBsYXRm
b3JtTGF5ZXIoKS0+YWRkU3VibGF5ZXIobV9xdFZpZGVvTGF5ZXIuZ2V0KCkpOwotICAgIG1fdHJh
bnNmb3JtTGF5ZXItPnBsYXRmb3JtTGF5ZXIoKS0+c2V0TmVlZHNMYXlvdXQoKTsKKyAgICBtX3Ry
YW5zZm9ybUxheWVyLT5hcHBlbmRTdWJsYXllcihtX3F0VmlkZW9MYXllci5nZXQoKSk7CisgICAg
bV90cmFuc2Zvcm1MYXllci0+c2V0TmVlZHNMYXlvdXQoKTsKICAgICAvLyBUaGUgbGF5ZXIgd2ls
bCBnZXQgaG9va2VkIHVwIHZpYSBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUdyYXBoaWNzTGF5
ZXJDb25maWd1cmF0aW9uKCkuCiAjZW5kaWYKIApAQCAtMTIzOCwxMCArMTIzMyw2IEBACiB9CiAK
ICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZVF1aWNrVGltZVZpc3VhbENvbnRleHQ6OkxheWVyQ2xpZW50OjpwYWludENvbnRlbnRzKGNvbnN0
IEdyYXBoaWNzTGF5ZXIqLCBHcmFwaGljc0NvbnRleHQmLCBHcmFwaGljc0xheWVyUGFpbnRpbmdQ
aGFzZSwgY29uc3QgSW50UmVjdCYgaW5DbGlwKQotewotfQotCiBib29sIE1lZGlhUGxheWVyUHJp
dmF0ZVF1aWNrVGltZVZpc3VhbENvbnRleHQ6OnN1cHBvcnRzQWNjZWxlcmF0ZWRSZW5kZXJpbmco
KSBjb25zdAogewogICAgIHJldHVybiBpc1JlYWR5Rm9yUmVuZGVyaW5nKCk7CkluZGV4OiBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVXaW4u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxh
eWVyUHJpdmF0ZVF1aWNrVGltZVdpbi5jcHAJKHJldmlzaW9uIDc1MjEzKQorKysgV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lV2luLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNyBAQAogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NP
TVBPU0lUSU5HKQogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDQUNGLmgiCi0jaW5jbHVkZSAiV0tD
QUNGTGF5ZXIuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUNBTGF5ZXIuaCIKICNlbmRpZgogCiAjaWYg
RFJBV19GUkFNRV9SQVRFCkBAIC03NjAsNyArNzYwLDcgQEAKIAogI2lmIFVTRShBQ0NFTEVSQVRF
RF9DT01QT1NJVElORykKICAgICBpZiAobV9xdFZpZGVvTGF5ZXIpCi0gICAgICAgIG1fcXRWaWRl
b0xheWVyLT5wbGF0Zm9ybUxheWVyKCktPnNldE5lZWRzRGlzcGxheSgpOworICAgICAgICBtX3F0
VmlkZW9MYXllci0+c2V0TmVlZHNEaXNwbGF5KCk7CiAgICAgZWxzZQogI2VuZGlmCiAgICAgICAg
IG1fcGxheWVyLT5yZXBhaW50KCk7CkBAIC04ODcsNyArODg3LDcgQEAKICAgICAgICAgcmV0dXJu
OwogCiAgICAgLy8gQ3JlYXRlIGEgR3JhcGhpY3NMYXllciB0aGF0IHdvbid0IGJlIGluc2VydGVk
IGRpcmVjdGx5IGludG8gdGhlIHJlbmRlciB0cmVlLCBidXQgd2lsbCB1c2VkIAotICAgIC8vIGFz
IGEgd3JhcHBlciBmb3IgYSBXS0NBQ0ZMYXllciB3aGljaCBnZXRzIGluc2VydGVkIGFzIHRoZSBj
b250ZW50IGxheWVyIG9mIHRoZSB2aWRlbyAKKyAgICAvLyBhcyBhIHdyYXBwZXIgZm9yIGEgUGxh
dGZvcm1DQUxheWVyIHdoaWNoIGdldHMgaW5zZXJ0ZWQgYXMgdGhlIGNvbnRlbnQgbGF5ZXIgb2Yg
dGhlIHZpZGVvIAogICAgIC8vIHJlbmRlcmVyJ3MgR3JhcGhpY3NMYXllci4KICAgICBtX3F0Vmlk
ZW9MYXllci5zZXQobmV3IEdyYXBoaWNzTGF5ZXJDQUNGKHRoaXMpKTsKICAgICBpZiAoIW1fcXRW
aWRlb0xheWVyKQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vV0tDQUNGTGF5
ZXJSZW5kZXJlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L1dLQ0FDRkxheWVyUmVuZGVyZXIuaAkocmV2aXNpb24gNzUyMTMpCisrKyBXZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9XS0NBQ0ZMYXllclJlbmRlcmVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTMwLDMzICszMCw0MCBAQAogCiAjaW5jbHVkZSAiQ09NUHRyLmgiCiAjaW5jbHVkZSAiVGltZXIu
aCIKLSNpbmNsdWRlICJXS0NBQ0ZMYXllci5oIgogCisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4K
ICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLQorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAog
I2luY2x1ZGUgPENvcmVHcmFwaGljcy9DR0dlb21ldHJ5Lmg+CiAKIGludGVyZmFjZSBJRGlyZWN0
M0REZXZpY2U5Owogc3RydWN0IFdLQ0FDRkNvbnRleHQ7CiAKK3R5cGVkZWYgc3RydWN0IENHSW1h
Z2UqIENHSW1hZ2VSZWY7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgV0tDQUNGUm9v
dExheWVyOworY2xhc3MgUGxhdGZvcm1DQUxheWVyOwogCiBjbGFzcyBXS0NBQ0ZMYXllclJlbmRl
cmVyQ2xpZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5XS0NBQ0ZMYXllclJlbmRlcmVyQ2xp
ZW50KCkgeyB9CiAgICAgdmlydHVhbCBib29sIHNob3VsZFJlbmRlcigpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgYW5pbWF0aW9uc1N0YXJ0ZWQoQ0ZUaW1lSW50ZXJ2YWwpIHsgfQorICAg
IHZpcnR1YWwgdm9pZCBzeW5jQ29tcG9zaXRpbmdTdGF0ZSgpIHsgfQogfTsKIAogLy8gRklYTUU6
IEN1cnJlbnRseSB0aGVyZSBpcyBhIFdLQ0FDRkxheWVyUmVuZGVyZXIgZm9yIGVhY2ggV2ViVmll
dyBhbmQgZWFjaAogLy8gaGFzIGl0cyBvd24gQ0FSZW5kZXJPR0xDb250ZXh0IGFuZCBEaXJlY3Qz
RERldmljZTksIHdoaWNoIGlzIGluZWZmaWNpZW50LgogLy8gKGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zMTg1NSkKIGNsYXNzIFdLQ0FDRkxheWVyUmVuZGVyZXIgOiBw
dWJsaWMgTm9uY29weWFibGUgeworICAgIGZyaWVuZCBQbGF0Zm9ybUNBTGF5ZXI7CisKIHB1Ymxp
YzoKICAgICBzdGF0aWMgUGFzc093blB0cjxXS0NBQ0ZMYXllclJlbmRlcmVyPiBjcmVhdGUoV0tD
QUNGTGF5ZXJSZW5kZXJlckNsaWVudCopOwogICAgIH5XS0NBQ0ZMYXllclJlbmRlcmVyKCk7CkBA
IC02NSw5ICs3Miw5IEBACiAKICAgICB2b2lkIHNldFJvb3RDb250ZW50cyhDR0ltYWdlUmVmKTsK
ICAgICB2b2lkIHNldFJvb3RDb250ZW50c0FuZERpc3BsYXkoQ0dJbWFnZVJlZik7Ci0gICAgdm9p
ZCBzZXRSb290Q2hpbGRMYXllcihXS0NBQ0ZMYXllciogbGF5ZXIpOworICAgIHZvaWQgc2V0Um9v
dENoaWxkTGF5ZXIoUGxhdGZvcm1DQUxheWVyKik7CiAgICAgdm9pZCBsYXllclRyZWVEaWRDaGFu
Z2UoKTsKLSAgICB2b2lkIHNldE5lZWRzRGlzcGxheSgpOworICAgIHZvaWQgc2V0TmVlZHNEaXNw
bGF5KGJvb2wgc3luYyA9IGZhbHNlKTsKICAgICB2b2lkIHNldEhvc3RXaW5kb3coSFdORCB3aW5k
b3cpIHsgbV9ob3N0V2luZG93ID0gd2luZG93OyB9CiAgICAgdm9pZCBzZXRCYWNraW5nU3RvcmVE
aXJ0eShib29sIGRpcnR5KSB7IG1fYmFja2luZ1N0b3JlRGlydHkgPSBkaXJ0eTsgfQogICAgIGJv
b2wgY3JlYXRlUmVuZGVyZXIoKTsKQEAgLTc2LDcgKzgzLDggQEAKICAgICB2b2lkIHJlbmRlclNv
b24oKTsKIAogcHJvdGVjdGVkOgotICAgIFdLQ0FDRkxheWVyKiByb290TGF5ZXIoKSBjb25zdDsK
KyAgICBQbGF0Zm9ybUNBTGF5ZXIqIHJvb3RMYXllcigpIGNvbnN0OworICAgIHZvaWQgYWRkUGVu
ZGluZ0FuaW1hdGVkTGF5ZXIoUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+KTsKIAogcHJpdmF0
ZToKICAgICBXS0NBQ0ZMYXllclJlbmRlcmVyKFdLQ0FDRkxheWVyUmVuZGVyZXJDbGllbnQqKTsK
QEAgLTk5LDEzICsxMDcsMTYgQEAKICAgICBXS0NBQ0ZMYXllclJlbmRlcmVyQ2xpZW50KiBtX2Ns
aWVudDsKICAgICBib29sIG1fbWlnaHRCZUFibGVUb0NyZWF0ZURldmljZUxhdGVyOwogICAgIENP
TVB0cjxJRGlyZWN0M0REZXZpY2U5PiBtX2QzZERldmljZTsKLSAgICBSZWZQdHI8V0tDQUNGUm9v
dExheWVyPiBtX3Jvb3RMYXllcjsKLSAgICBSZWZQdHI8V0tDQUNGTGF5ZXI+IG1fcm9vdENoaWxk
TGF5ZXI7CisgICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gbV9yb290TGF5ZXI7CisgICAgUmVm
UHRyPFBsYXRmb3JtQ0FMYXllcj4gbV9yb290Q2hpbGRMYXllcjsKICAgICBXS0NBQ0ZDb250ZXh0
KiBtX2NvbnRleHQ7CiAgICAgSFdORCBtX2hvc3RXaW5kb3c7CiAgICAgVGltZXI8V0tDQUNGTGF5
ZXJSZW5kZXJlcj4gbV9yZW5kZXJUaW1lcjsKICAgICBib29sIG1fYmFja2luZ1N0b3JlRGlydHk7
CiAgICAgYm9vbCBtX211c3RSZXNldExvc3REZXZpY2VCZWZvcmVSZW5kZXJpbmc7CisgICAgYm9v
bCBtX3N5bmNMYXllckNoYW5nZXM7CisgICAgSGFzaFNldDxSZWZQdHI8UGxhdGZvcm1DQUxheWVy
PiA+IG1fcGVuZGluZ0FuaW1hdGVkTGF5ZXJzOworCiAjaWZuZGVmIE5ERUJVRwogICAgIGJvb2wg
bV9wcmludFRyZWU7CiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dC5oCShyZXZpc2lvbiA3NTIxMykKKysrIFdlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC02MCw3ICs2MCw3
IEBACiAgICAgdmlydHVhbCBib29sIHBhaW50c0ludG9DYW52YXNCdWZmZXIoKSBjb25zdCB7IHJl
dHVybiB0cnVlOyB9CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAgdmly
dHVhbCBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgeyByZXR1cm4gMDsgfQor
Ly8gICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgeyByZXR1
cm4gMDsgfQogI2VuZGlmCiAKIHByb3RlY3RlZDoK
</data>
<flag name="review"
          id="69477"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78251</attachid>
            <date>2011-01-07 11:35:24 -0800</date>
            <delta_ts>2011-01-07 11:40:23 -0800</delta_ts>
            <desc>Final Patch</desc>
            <filename>49388-final.patch</filename>
            <type>text/plain</type>
            <size>156364</size>
            <attacher name="Chris Marrin">cmarrin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC93aW4vRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdC93aW4vRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5oCShyZXZpc2lvbiA3NTIy
NykKKysrIFdlYktpdC93aW4vRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zOSw3ICszOSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBHcmFwaGlj
c0NvbnRleHQ7CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotY2xhc3MgV0tDQUNG
TGF5ZXI7CitjbGFzcyBQbGF0Zm9ybUNBTGF5ZXI7CiAjZW5kaWYKIH0KIApAQCAtMTU3LDEwICsx
NTcsMTAgQEAKICAgICBXZWJDb3JlOjpJbnRQb2ludCBtX2h1ZFBvc2l0aW9uOwogICAgIE93blB0
cjxXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93PiBtX2Z1bGxzY3Jl
ZW5XaW5kb3c7CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotICAgIFJlZlB0cjxX
ZWJDb3JlOjpXS0NBQ0ZMYXllcj4gbV9yb290Q2hpbGQ7Ci0gICAgY2xhc3MgTGF5b3V0Q2xpZW50
OwotICAgIGZyaWVuZCBjbGFzcyBMYXlvdXRDbGllbnQ7Ci0gICAgT3duUHRyPExheW91dENsaWVu
dD4gbV9sYXlvdXRDbGllbnQ7CisgICAgY2xhc3MgTGF5ZXJDbGllbnQ7CisgICAgZnJpZW5kIGNs
YXNzIExheWVyQ2xpZW50OworICAgIE93blB0cjxMYXllckNsaWVudD4gbV9sYXllckNsaWVudDsK
KyAgICBSZWZQdHI8V2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyPiBtX3Jvb3RDaGlsZDsKICNlbmRp
ZgogCiAgICAgSFVEQnV0dG9uIG1fcGxheVBhdXNlQnV0dG9uOwpJbmRleDogV2ViS2l0L3dpbi9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHJldmlzaW9uIDc1
MjU2KQorKysgV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0
MiBAQAorMjAxMS0wMS0wNyAgQ2hyaXMgTWFycmluICA8Y21hcnJpbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2hhcmUgY29kZSBi
ZXR3ZWVuIE1hYyAoQ0EpIGFuZCBXaW5kb3dzIChDQUNGKSBHcmFwaGljc0xheWVyIGltcGxlbWVu
dGF0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NDkzODgKKworICAgICAgICBDaGFuZ2UgY2xpZW50IEFQSSBmb3IgdGhlIGZ1bGxzY3JlZW4gdmlk
ZW8gY29udHJvbGxlci4gSXQgbm93IHVzZXMgYSAKKyAgICAgICAgUGxhdGZvcm1DQUxheWVyQ2xp
ZW50IHNvIGl0IGNhbiB1c2UgYSBQbGFmb3JtQ0FMYXllciBkaXJlY3RseS4gQWxzbworICAgICAg
ICB1cGRhdGVkIGhvdyB0byBjb25uZWN0IHRoZSBsYXllciB0cmVlIHRvIHRoZSB2aWV3IHRvIHJl
ZmxlY3QgdGhlIHVwZGF0ZWQKKyAgICAgICAgaGFyZHdhcmUgY29tcG9zaXRpbmcgbG9naWMuCisK
KyAgICAgICAgKiBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKEZ1bGxz
Y3JlZW5WaWRlb0NvbnRyb2xsZXI6OkxheWVyQ2xpZW50OjpMYXllckNsaWVudCk6CisgICAgICAg
IChGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpMYXllckNsaWVudDo6cGxhdGZvcm1DQUxheWVy
UmVzcG9uZHNUb0xheW91dENoYW5nZXMpOgorICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJv
bGxlcjo6TGF5ZXJDbGllbnQ6OnBsYXRmb3JtQ0FMYXllckFuaW1hdGlvblN0YXJ0ZWQpOgorICAg
ICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6TGF5ZXJDbGllbnQ6OnBsYXRmb3JtQ0FM
YXllckNvbnRlbnRzT3JpZW50YXRpb24pOgorICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJv
bGxlcjo6TGF5ZXJDbGllbnQ6OnBsYXRmb3JtQ0FMYXllclBhaW50Q29udGVudHMpOgorICAgICAg
ICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6TGF5ZXJDbGllbnQ6OnBsYXRmb3JtQ0FMYXll
clNob3dEZWJ1Z0JvcmRlcnMpOgorICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6
TGF5ZXJDbGllbnQ6OnBsYXRmb3JtQ0FMYXllclNob3dSZXBhaW50Q291bnRlcik6CisgICAgICAg
IChGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpMYXllckNsaWVudDo6cGxhdGZvcm1DQUxheWVy
SW5jcmVtZW50UmVwYWludENvdW50KToKKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xs
ZXI6OkxheWVyQ2xpZW50OjpwbGF0Zm9ybUNBTGF5ZXJDb250ZW50c09wYXF1ZSk6CisgICAgICAg
IChGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpMYXllckNsaWVudDo6cGxhdGZvcm1DQUxheWVy
RHJhd3NDb250ZW50KToKKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OkxheWVy
Q2xpZW50OjpwbGF0Zm9ybUNBTGF5ZXJMYXllckRpZERpc3BsYXkpOgorICAgICAgICAoRnVsbHNj
cmVlblZpZGVvQ29udHJvbGxlcjo6TGF5ZXJDbGllbnQ6OnBsYXRmb3JtQ0FMYXllckxheW91dFN1
YmxheWVyc09mTGF5ZXIpOgorICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6RnVs
bHNjcmVlblZpZGVvQ29udHJvbGxlcik6CisgICAgICAgIChGdWxsc2NyZWVuVmlkZW9Db250cm9s
bGVyOjp+RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcik6CisgICAgICAgIChGdWxsc2NyZWVuVmlk
ZW9Db250cm9sbGVyOjplbnRlckZ1bGxzY3JlZW4pOgorICAgICAgICAqIEZ1bGxzY3JlZW5WaWRl
b0NvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
Y3BwOgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50OjphdHRhY2hSb290R3JhcGhpY3NMYXllcik6
CisgICAgICAgIChXZWJDaHJvbWVDbGllbnQ6OnNjaGVkdWxlQ29tcG9zaXRpbmdMYXllclN5bmMp
OgorICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoV2ViVmlldzo6c2V0Um9vdENoaWxk
TGF5ZXIpOgorICAgICAgICAoV2ViVmlldzo6YW5pbWF0aW9uc1N0YXJ0ZWQpOgorICAgICAgICAo
V2ViVmlldzo6c3luY0NvbXBvc2l0aW5nU3RhdGUpOgorICAgICAgICAqIFdlYlZpZXcuaDoKKyAg
ICAgICAgKFdlYlZpZXc6OnNldFJvb3RMYXllck5lZWRzRGlzcGxheSk6CisKIDIwMTEtMDEtMDUg
IFN0ZXZlIEZhbGtlbmJ1cmcgIDxzZmFsa2VuQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6IFdlYktpdC93aW4vV2ViVmlldy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAkocmV2aXNpb24gNzUyMjcpCisrKyBXZWJLaXQv
d2luL1dlYlZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MjMxLDcgKzYyMzEsNyBAQAogfQog
CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotdm9pZCBXZWJWaWV3OjpzZXRSb290
Q2hpbGRMYXllcihXZWJDb3JlOjpXS0NBQ0ZMYXllciogbGF5ZXIpCit2b2lkIFdlYlZpZXc6OnNl
dFJvb3RDaGlsZExheWVyKFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllciogbGF5ZXIpCiB7CiAgICAg
c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZyhsYXllciA/IHRydWUgOiBmYWxzZSk7CiAgICAgaWYg
KG1fbGF5ZXJSZW5kZXJlcikKQEAgLTY0NjksNiArNjQ2OSwyMCBAQAogCiAgICAgcmV0dXJuICFm
cmFtZVZpZXctPmxheW91dFBlbmRpbmcoKTsKIH0KKwordm9pZCBXZWJWaWV3OjphbmltYXRpb25z
U3RhcnRlZChDRlRpbWVJbnRlcnZhbCB0KQoreworICAgIC8vIFRlbGwgdGhlIGFuaW1hdGlvbiBj
b250cm9sbGVyIHRoYXQgaXRzIGFuaW1hdGlvbnMgaGF2ZSBzdGFydGVkCisgICAgbV9wYWdlLT5t
YWluRnJhbWUoKS0+YW5pbWF0aW9uKCktPm5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQoMCwgdCk7Cit9
CisKK3ZvaWQgV2ViVmlldzo6c3luY0NvbXBvc2l0aW5nU3RhdGUoKQoreworICAgIEZyYW1lKiBj
b3JlRnJhbWUgPSBjb3JlKG1fbWFpbkZyYW1lKTsKKyAgICBpZiAoY29yZUZyYW1lICYmIGNvcmVG
cmFtZS0+dmlldygpKQorICAgICAgICBjb3JlRnJhbWUtPnZpZXcoKS0+c3luY0NvbXBvc2l0aW5n
U3RhdGVSZWN1cnNpdmUoKTsKK30KKwogI2VuZGlmCiAKIGNsYXNzIEVudW1UZXh0TWF0Y2hlcyA6
IHB1YmxpYyBJRW51bVRleHRNYXRjaGVzCkluZGV4OiBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCShyZXZpc2lvbiA3NTIyNykKKysrIFdlYktpdC93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODIw
LDEyICs4MjAsMTIgQEAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiB2b2lkIFdl
YkNocm9tZUNsaWVudDo6YXR0YWNoUm9vdEdyYXBoaWNzTGF5ZXIoRnJhbWUqIGZyYW1lLCBHcmFw
aGljc0xheWVyKiBncmFwaGljc0xheWVyKQogewotICAgIG1fd2ViVmlldy0+c2V0Um9vdENoaWxk
TGF5ZXIoZ3JhcGhpY3NMYXllciA/IHN0YXRpY19jYXN0PFdLQ0FDRkxheWVyKj4oZ3JhcGhpY3NM
YXllci0+cGxhdGZvcm1MYXllcigpKSA6IDApOworICAgIG1fd2ViVmlldy0+c2V0Um9vdENoaWxk
TGF5ZXIoZ3JhcGhpY3NMYXllciA/IFBsYXRmb3JtQ0FMYXllcjo6cGxhdGZvcm1DQUxheWVyKGdy
YXBoaWNzTGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSkgOiAwKTsKIH0KIAogdm9pZCBXZWJDaHJvbWVD
bGllbnQ6OnNjaGVkdWxlQ29tcG9zaXRpbmdMYXllclN5bmMoKQogewotICAgIG1fd2ViVmlldy0+
c2V0Um9vdExheWVyTmVlZHNEaXNwbGF5KCk7CisgICAgbV93ZWJWaWV3LT5zZXRSb290TGF5ZXJO
ZWVkc0Rpc3BsYXkodHJ1ZSk7CiB9CiAKICNlbmRpZgpJbmRleDogV2ViS2l0L3dpbi9GdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL0Z1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA3NTIyNykKKysrIFdlYktpdC93aW4vRnVs
bHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDggKzM4LDgg
QEAKICNpbmNsdWRlIDxXZWJDb3JlL0ZvbnRTZWxlY3Rvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
R3JhcGhpY3NDb250ZXh0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9QbGF0Zm9ybUNBTGF5ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RleHRSdW4uaD4K
LSNpbmNsdWRlIDxXZWJDb3JlL1dLQ0FDRkxheWVyLmg+CiAjaW5jbHVkZSA8V2ViS2l0U3lzdGVt
SW50ZXJmYWNlL1dlYktpdFN5c3RlbUludGVyZmFjZS5oPgogI2luY2x1ZGUgPHdpbmRvd3N4Lmg+
CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgpAQCAtMTc0LDI4ICsxNzQsMzggQEAKIH0K
IAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLWNsYXNzIEZ1bGxzY3JlZW5WaWRl
b0NvbnRyb2xsZXI6OkxheW91dENsaWVudCA6IHB1YmxpYyBXS0NBQ0ZMYXllckxheW91dENsaWVu
dCB7CitjbGFzcyBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpMYXllckNsaWVudCA6IHB1Ymxp
YyBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJDbGllbnQgewogcHVibGljOgotICAgIExheW91dENs
aWVudChGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKiBwYXJlbnQpOwotICAgIHZvaWQgbGF5b3V0
U3VibGF5ZXJzT2ZMYXllcihXS0NBQ0ZMYXllciogbGF5ZXIpOworICAgIExheWVyQ2xpZW50KEZ1
bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIqIHBhcmVudCkgOiBtX3BhcmVudChwYXJlbnQpIHsgfQog
Citwcml2YXRlOgorICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNBTGF5ZXJMYXlvdXRTdWJsYXll
cnNPZkxheWVyKFBsYXRmb3JtQ0FMYXllciopOworICAgIHZpcnR1YWwgYm9vbCBwbGF0Zm9ybUNB
TGF5ZXJSZXNwb25kc1RvTGF5b3V0Q2hhbmdlcygpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKwor
ICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNBTGF5ZXJBbmltYXRpb25TdGFydGVkKENGVGltZUlu
dGVydmFsIGJlZ2luVGltZSkgeyB9CisgICAgdmlydHVhbCBHcmFwaGljc0xheWVyOjpDb21wb3Np
dGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRpb24gcGxhdGZvcm1DQUxheWVyQ29udGVudHNPcmllbnRh
dGlvbigpIGNvbnN0IHsgcmV0dXJuIEdyYXBoaWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0
ZXNCb3R0b21VcDsgfQorICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNBTGF5ZXJQYWludENvbnRl
bnRzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGluQ2xpcCkgeyB9CisgICAgdmly
dHVhbCBib29sIHBsYXRmb3JtQ0FMYXllclNob3dEZWJ1Z0JvcmRlcnMoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBwbGF0Zm9ybUNBTGF5ZXJTaG93UmVwYWludENv
dW50ZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgaW50IHBsYXRmb3Jt
Q0FMYXllckluY3JlbWVudFJlcGFpbnRDb3VudCgpIHsgcmV0dXJuIDA7IH0KKworICAgIHZpcnR1
YWwgYm9vbCBwbGF0Zm9ybUNBTGF5ZXJDb250ZW50c09wYXF1ZSgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgdmlydHVhbCBib29sIHBsYXRmb3JtQ0FMYXllckRyYXdzQ29udGVudCgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQ0FMYXllckxh
eWVyRGlkRGlzcGxheShQbGF0Zm9ybUxheWVyKikgeyB9CisKICAgICBGdWxsc2NyZWVuVmlkZW9D
b250cm9sbGVyKiBtX3BhcmVudDsKIH07CiAKLUZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6Okxh
eW91dENsaWVudDo6TGF5b3V0Q2xpZW50KEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIqIHBhcmVu
dCkKLSAgICA6IG1fcGFyZW50KHBhcmVudCkKK3ZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxl
cjo6TGF5ZXJDbGllbnQ6OnBsYXRmb3JtQ0FMYXllckxheW91dFN1YmxheWVyc09mTGF5ZXIoUGxh
dGZvcm1DQUxheWVyKiBsYXllcikgCiB7Ci19Ci0KLXZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJv
bGxlcjo6TGF5b3V0Q2xpZW50OjpsYXlvdXRTdWJsYXllcnNPZkxheWVyKFdLQ0FDRkxheWVyKiBs
YXllcikgCi17CiAgICAgQVNTRVJUX0FSRyhsYXllciwgbGF5ZXIgPT0gbV9wYXJlbnQtPm1fcm9v
dENoaWxkKTsKIAogICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCA9IG1fcGFyZW50
LT5tX21lZGlhRWxlbWVudC5nZXQoKTsKICAgICBpZiAoIW1lZGlhRWxlbWVudCkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgV0tDQUNGTGF5ZXIqIHZpZGVvTGF5ZXIgPSBtZWRpYUVsZW1lbnQtPnBs
YXRmb3JtTGF5ZXIoKTsKKworICAgIFBsYXRmb3JtQ0FMYXllciogdmlkZW9MYXllciA9IFBsYXRm
b3JtQ0FMYXllcjo6cGxhdGZvcm1DQUxheWVyKG1lZGlhRWxlbWVudC0+cGxhdGZvcm1MYXllcigp
KTsKICAgICBpZiAoIXZpZGVvTGF5ZXIgfHwgdmlkZW9MYXllci0+c3VwZXJsYXllcigpICE9IGxh
eWVyKQogICAgICAgICByZXR1cm47CiAKQEAgLTIzMiwyMCArMjQyLDE3IEBACiAgICAgLCBtX21v
dmluZ1dpbmRvdyhmYWxzZSkKICAgICAsIG1fdGltZXIodGhpcywgJkZ1bGxzY3JlZW5WaWRlb0Nv
bnRyb2xsZXI6OnRpbWVyRmlyZWQpCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQot
ICAgICwgbV9yb290Q2hpbGQoV0tDQUNGTGF5ZXI6OmNyZWF0ZShXS0NBQ0ZMYXllcjo6TGF5ZXIp
KQotICAgICwgbV9sYXlvdXRDbGllbnQobmV3IExheW91dENsaWVudCh0aGlzKSkKKyAgICAsIG1f
bGF5ZXJDbGllbnQobmV3IExheWVyQ2xpZW50KHRoaXMpKQorICAgICwgbV9yb290Q2hpbGQoUGxh
dGZvcm1DQUxheWVyOjpjcmVhdGUoUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVMYXllciwgbV9s
YXllckNsaWVudC5nZXQoKSkpCiAjZW5kaWYKICAgICAsIG1fZnVsbHNjcmVlbldpbmRvdyhuZXcg
TWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdyh0aGlzKSkKIHsKLSNpZiBVU0UoQUND
RUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAgbV9yb290Q2hpbGQtPnNldExheW91dENsaWVudCht
X2xheW91dENsaWVudC5nZXQoKSk7Ci0jZW5kaWYKIH0KIAogRnVsbHNjcmVlblZpZGVvQ29udHJv
bGxlcjo6fkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIoKQogewogI2lmIFVTRShBQ0NFTEVSQVRF
RF9DT01QT1NJVElORykKLSAgICBtX3Jvb3RDaGlsZC0+c2V0TGF5b3V0Q2xpZW50KDApOworICAg
IG1fcm9vdENoaWxkLT5zZXRPd25lcigwKTsKICNlbmRpZgogfQogCkBAIC0yNzMsOCArMjgwLDgg
QEAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgbV9mdWxsc2NyZWVuV2lu
ZG93LT5zZXRSb290Q2hpbGRMYXllcihtX3Jvb3RDaGlsZCk7CiAKLSAgICBXS0NBQ0ZMYXllciog
dmlkZW9MYXllciA9IG1fbWVkaWFFbGVtZW50LT5wbGF0Zm9ybUxheWVyKCk7Ci0gICAgbV9yb290
Q2hpbGQtPmFkZFN1YmxheWVyKHZpZGVvTGF5ZXIpOworICAgIFBsYXRmb3JtQ0FMYXllciogdmlk
ZW9MYXllciA9IFBsYXRmb3JtQ0FMYXllcjo6cGxhdGZvcm1DQUxheWVyKG1fbWVkaWFFbGVtZW50
LT5wbGF0Zm9ybUxheWVyKCkpOworICAgIG1fcm9vdENoaWxkLT5hcHBlbmRTdWJsYXllcih2aWRl
b0xheWVyKTsKICAgICBtX3Jvb3RDaGlsZC0+c2V0TmVlZHNMYXlvdXQoKTsKICAgICBtX3Jvb3RD
aGlsZC0+c2V0R2VvbWV0cnlGbGlwcGVkKDEpOwogI2VuZGlmCkluZGV4OiBXZWJLaXQvd2luL1dl
YlZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYlZpZXcuaAkocmV2aXNpb24gNzUy
MjcpCisrKyBXZWJLaXQvd2luL1dlYlZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAs
NyBAQAogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01Q
T1NJVElORykKLSNpbmNsdWRlIDxXZWJDb3JlL1dLQ0FDRkxheWVyLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9QbGF0Zm9ybUNBTGF5ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1dLQ0FDRkxheWVyUmVu
ZGVyZXIuaD4KICNlbmRpZgogCkBAIC05MDQsOCArOTA0LDEyIEBACiAgICAgdm9pZCBkb3dubG9h
ZFVSTChjb25zdCBXZWJDb3JlOjpLVVJMJik7CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9T
SVRJTkcpCi0gICAgdm9pZCBzZXRSb290TGF5ZXJOZWVkc0Rpc3BsYXkoKSB7IGlmIChtX2xheWVy
UmVuZGVyZXIpIG1fbGF5ZXJSZW5kZXJlci0+c2V0TmVlZHNEaXNwbGF5KCk7IH0KLSAgICB2b2lk
IHNldFJvb3RDaGlsZExheWVyKFdlYkNvcmU6OldLQ0FDRkxheWVyKiBsYXllcik7CisgICAgdm9p
ZCBzZXRSb290TGF5ZXJOZWVkc0Rpc3BsYXkoYm9vbCBzeW5jID0gZmFsc2UpCisgICAgeworICAg
ICAgICBpZiAobV9sYXllclJlbmRlcmVyKQorICAgICAgICAgICAgbV9sYXllclJlbmRlcmVyLT5z
ZXROZWVkc0Rpc3BsYXkoc3luYyk7CisgICAgfQorICAgIHZvaWQgc2V0Um9vdENoaWxkTGF5ZXIo
V2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyKik7CiAjZW5kaWYKIAogICAgIHZvaWQgZW50ZXJGdWxs
c2NyZWVuRm9yTm9kZShXZWJDb3JlOjpOb2RlKik7CkBAIC05NDEsNiArOTQ1LDggQEAKICNpZiBV
U0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgLy8gV0tDQUNGTGF5ZXJSZW5kZXJlckNs
aWVudAogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRSZW5kZXIoKSBjb25zdDsKKyAgICB2aXJ0dWFs
IHZvaWQgYW5pbWF0aW9uc1N0YXJ0ZWQoQ0ZUaW1lSW50ZXJ2YWwpOworICAgIHZpcnR1YWwgdm9p
ZCBzeW5jQ29tcG9zaXRpbmdTdGF0ZSgpOwogI2VuZGlmCiAKIHByb3RlY3RlZDoKSW5kZXg6IFdl
YkNvcmUvY29uZmlnLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jb25maWcuaAkocmV2aXNpb24g
NzUyMjcpCisrKyBXZWJDb3JlL2NvbmZpZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMjAsNiArMjIw
LDExIEBACiAjZGVmaW5lIFdURl9VU0VfU0FGQVJJX1RIRU1FIDEKICNlbmRpZgogCisvLyBDb3Jl
QW5pbWF0aW9uIGlzIGF2YWlsYWJsZSB0byBJT1MsIE1hYyBhbmQgV2luZG93cyBpZiB1c2luZyBD
RworI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oV0lOKSAm
JiBQTEFURk9STShDRykpCisjZGVmaW5lIFdURl9QTEFURk9STV9DQSAxCisjZW5kaWYKKwogI2lm
IFBMQVRGT1JNKFFUKSAmJiBVU0UoVjgpICYmIGRlZmluZWQoUV9XU19YMTEpCiAvKiBwcm90ZWN0
IG91cnNlbHZlcyBmcm9tIGV2aWwgWDExIGRlZmluZXMgKi8KICNpbmNsdWRlIDxicmlkZ2UvbnBy
dW50aW1lX2ludGVybmFsLmg+CkluZGV4OiBXZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gNzUyNTYpCisrKyBXZWJDb3JlL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzNyBAQAorMjAxMS0wMS0wNyAgQ2hyaXMgTWFy
cmluICA8Y21hcnJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgU2hhcmUgY29kZSBiZXR3ZWVuIE1hYyAoQ0EpIGFuZCBXaW5kb3dz
IChDQUNGKSBHcmFwaGljc0xheWVyIGltcGxlbWVudGF0aW9ucworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDkzODgKKworICAgICAgICBGaW5hbCBzdGVw
IGluIHVuaWZ5aW5nIEdyYXBoaWNzTGF5ZXIgbG9naWMgYWNyb3NzIFdpbiBhbmQgTWFjLiBUaGlz
IAorICAgICAgICBpbXBsZW1lbnRzIHRoZSBXaW5kb3dzIHNpZGUgY2xhc3NlcyBmb3IgUGxhdGZv
cm1DQUxheWVyIGFuZCBzdXBwb3J0aW5nCisgICAgICAgIGNsYXNzZXMuIEFsc28gY2hhbmdlZCBN
ZWRpYVBsYXllciB0byB1c2UgbmV3IFBsYXRmb3JtQ0FMYXllckNsaWVudAorICAgICAgICBzbyBp
dCBjYW4gdXNlIFBsYXRmb3JtQ0FMYXllciBkaXJlY3RseSByYXRoZXIgdGhhbiBhIGR1bW15IEdy
YXBoaWNzTGF5ZXIuCisgICAgICAgIFdLQ0FDRkxheWVyUmVuZGVyZXIgbm93IGRvZXMgdGhlIHRh
c2sgb2Ygbm90aWZ5aW5nIGFuaW1hdGlvbnMgb2YgdGhlaXIKKyAgICAgICAgc3RhcnQgdGltZS4g
QWxzbyBjb21tZW50ZWQgb3V0IGFuIGFzc2VydCBpbiBBbmltYXRpb25CYXNlIGJlY2F1c2UKKyAg
ICAgICAgQW5pbWF0aW9uQ29udHJvbGxlcidzIGZyYW1lIHRpbWUgaXMgbm90IGluIHN5bmMgd2l0
aCB0aGUgbmV3IAorICAgICAgICBBbmltYXRpb25UaW1lQ29udHJvbGxlci4gSSd2ZSBvcGVuZWQg
YSBuZXcgYnVnIGZvciB0aGF0IGlzc3VlOgorCisgICAgICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTIwMzcKKworCisgICAgICAgICogV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZUNvbW1v
bi52c3Byb3BzOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL2NvcHlGb3J3YXJkaW5nSGVhZGVy
cy5jbWQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIGNvbmZpZy5oOgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uQmFzZTo6ZnJlZXplQXRUaW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvbkJhc2U6OmdldEVsYXBzZWRUaW1lKToKKyAgICAgICAg
KiBwYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkFuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlOjpiZWdpbkFuaW1hdGlvblVwZGF0ZVRpbWUp
OgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0tleWZyYW1lQW5pbWF0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OktleWZyYW1lQW5pbWF0aW9uOjpmZXRjaEludGVydmFsRW5kcG9pbnRzRm9y
UHJvcGVydHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OmxheWVyRGlkRGlzcGxheSk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpzaG93RGVidWdCb3JkZXJzKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OnNob3dSZXBhaW50Q291bnRlcik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXJDQTo6cGxhdGZvcm1DQUxheWVyQW5pbWF0aW9uU3RhcnRlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRzVG9JbWFnZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRzVG9NZWRpYSk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OmxheWVyRGlkRGlzcGxheSk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZVN1YmxheWVyTGlzdCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmg6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnBsYXRmb3JtQ0FMYXllcik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0xheWVyQ0E6OnBsYXRmb3JtQ0FMYXllckxheW91dFN1YmxheWVyc09mTGF5
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpwbGF0Zm9ybUNBTGF5ZXJS
ZXNwb25kc1RvTGF5b3V0Q2hhbmdlcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVy
Q0E6OnBsYXRmb3JtQ0FMYXllckNvbnRlbnRzT3JpZW50YXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NMYXllckNBOjpwbGF0Zm9ybUNBTGF5ZXJQYWludENvbnRlbnRzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6cGxhdGZvcm1DQUxheWVyU2hvd0RlYnVnQm9y
ZGVycyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnBsYXRmb3JtQ0FMYXll
clNob3dSZXBhaW50Q291bnRlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6
OnBsYXRmb3JtQ0FMYXllckluY3JlbWVudFJlcGFpbnRDb3VudCk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0xheWVyQ0E6OnBsYXRmb3JtQ0FMYXllckNvbnRlbnRzT3BhcXVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6cGxhdGZvcm1DQUxheWVyRHJhd3NDb250ZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6cGxhdGZvcm1DQUxheWVyTGF5
ZXJEaWREaXNwbGF5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNB
QW5pbWF0aW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxh
eWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6Om93bmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6YW5pbWF0aW9uU3RhcnRlZCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyQ2xpZW50Lmg6IENvcGllZCBm
cm9tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyQ2xpZW50Lmgu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1BsYXRmb3JtQ0FMYXllck1hYy5t
bToKKyAgICAgICAgKFBsYXRmb3JtQ0FMYXllcjo6c2V0T3duZXIpOgorICAgICAgICAoUGxhdGZv
cm1DQUxheWVyOjpjcmVhdGUpOgorICAgICAgICAoUGxhdGZvcm1DQUxheWVyOjpQbGF0Zm9ybUNB
TGF5ZXIpOgorICAgICAgICAoUGxhdGZvcm1DQUxheWVyOjpjb250ZW50cyk6CisgICAgICAgIChQ
bGF0Zm9ybUNBTGF5ZXI6OnNldENvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jYS93aW46IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0
Zm9ybUNBQW5pbWF0aW9uV2luLmNwcDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHA6IEFkZGVkLgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbC5jcHA6IEFkZGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW5J
bnRlcm5hbC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcldpbklu
dGVybmFsOjpvd25lcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkdMTGF5
ZXIubW06CisgICAgICAgICgtW1dlYkdMTGF5ZXIgZGlzcGxheV0pOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL21hYy9XZWJMYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L21hYy9XZWJMYXllci5tbToKKyAgICAgICAgKGRyYXdMYXllckNvbnRlbnRzKToKKyAgICAgICAg
KHNldExheWVyTmVlZHNEaXNwbGF5SW5SZWN0KToKKyAgICAgICAgKC1bV2ViTGF5ZXIgc2V0TmVl
ZHNEaXNwbGF5XSk6CisgICAgICAgICgtW1dlYkxheWVyIGRpc3BsYXldKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViVGlsZWRMYXllci5tbToKKyAgICAgICAgKC1bV2ViVGls
ZWRMYXllciBzZXROZWVkc0Rpc3BsYXldKToKKyAgICAgICAgKC1bV2ViVGlsZWRMYXllciBkaXNw
bGF5XSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENH
V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNHQ29udGV4dFdpdGhIREMpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5k
b3c6OnNldFJvb3RDaGlsZExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZUZ1bGxzY3JlZW5XaW5kb3c6OnduZFByb2MpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93Ojpyb290Q2hpbGRMYXll
cik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZVF1
aWNrVGltZVZpc3VhbENvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dDo6TGF5ZXJDbGllbnQ6On5MYXllckNsaWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250
ZXh0OjpMYXllckNsaWVudDo6cGxhdGZvcm1DQUxheWVyUmVzcG9uZHNUb0xheW91dENoYW5nZXMp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29u
dGV4dDo6TGF5ZXJDbGllbnQ6OnBsYXRmb3JtQ0FMYXllckFuaW1hdGlvblN0YXJ0ZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dDo6
TGF5ZXJDbGllbnQ6OnBsYXRmb3JtQ0FMYXllckNvbnRlbnRzT3JpZW50YXRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dDo6TGF5
ZXJDbGllbnQ6OnBsYXRmb3JtQ0FMYXllclBhaW50Q29udGVudHMpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dDo6TGF5ZXJDbGllbnQ6
OnBsYXRmb3JtQ0FMYXllclNob3dEZWJ1Z0JvcmRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dDo6TGF5ZXJDbGllbnQ6OnBsYXRm
b3JtQ0FMYXllclNob3dSZXBhaW50Q291bnRlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0OjpMYXllckNsaWVudDo6cGxhdGZvcm1D
QUxheWVySW5jcmVtZW50UmVwYWludENvdW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvbnRleHQ6OkxheWVyQ2xpZW50OjpwbGF0Zm9ybUNB
TGF5ZXJDb250ZW50c09wYXF1ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVRdWlja1RpbWVWaXN1YWxDb250ZXh0OjpMYXllckNsaWVudDo6cGxhdGZvcm1DQUxheWVyRHJh
d3NDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGlt
ZVZpc3VhbENvbnRleHQ6OkxheWVyQ2xpZW50OjpwbGF0Zm9ybUNBTGF5ZXJMYXllckRpZERpc3Bs
YXkpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFs
Q29udGV4dDo6TGF5ZXJDbGllbnQ6OnBsYXRmb3JtQ0FMYXllckxheW91dFN1YmxheWVyc09mTGF5
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFs
Q29udGV4dDo6TWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dCk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0Ojpw
bGF0Zm9ybU1lZGlhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZVF1aWNr
VGltZVZpc3VhbENvbnRleHQ6OnJldHJpZXZlQ3VycmVudEltYWdlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvbnRleHQ6OmNyZWF0ZUxheWVy
Rm9yTW92aWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclBy
aXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVdpbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGU6Om1vdmllTmV3SW1hZ2VBdmFpbGFibGUpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlOjpjcmVhdGVMYXllckZvck1vdmllKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vV0tDQUNGTGF5ZXJSZW5kZXJlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXS0NBQ0ZMYXllclJlbmRlcmVyOjpXS0NBQ0ZMYXllclJlbmRlcmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OldLQ0FDRkxheWVyUmVuZGVyZXI6OnJvb3RMYXllcik6Cisg
ICAgICAgIChXZWJDb3JlOjpXS0NBQ0ZMYXllclJlbmRlcmVyOjphZGRQZW5kaW5nQW5pbWF0ZWRM
YXllcik6CisgICAgICAgIChXZWJDb3JlOjpXS0NBQ0ZMYXllclJlbmRlcmVyOjpzZXRSb290Q2hp
bGRMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpXS0NBQ0ZMYXllclJlbmRlcmVyOjpzZXROZWVk
c0Rpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6V0tDQUNGTGF5ZXJSZW5kZXJlcjo6ZGVzdHJv
eVJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldLQ0FDRkxheWVyUmVuZGVyZXI6OnJlbmRl
cik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1dLQ0FDRkxheWVyUmVuZGVyZXIu
aDoKKyAgICAgICAgKFdlYkNvcmU6OldLQ0FDRkxheWVyUmVuZGVyZXJDbGllbnQ6OmFuaW1hdGlv
bnNTdGFydGVkKToKKyAgICAgICAgKFdlYkNvcmU6OldLQ0FDRkxheWVyUmVuZGVyZXJDbGllbnQ6
OnN5bmNDb21wb3NpdGluZ1N0YXRlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJC
YWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6c2hvd0Rl
YnVnQm9yZGVycyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnNob3dS
ZXBhaW50Q291bnRlcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OmVuc3VyZVJv
b3RQbGF0Zm9ybUxheWVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3Np
dG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OmNvbXBvc2l0
b3JTaG93RGVidWdCb3JkZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9z
aXRvcjo6Y29tcG9zaXRvclNob3dSZXBhaW50Q291bnRlcik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJMYXllckNvbXBvc2l0b3I6Om5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpub3RpZnlTeW5jUmVxdWlyZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpwYWludENvbnRlbnRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6c2hvd0RlYnVnQm9yZGVycyk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnNob3dSZXBhaW50Q291
bnRlcik6CisKIDIwMTEtMDEtMDcgIEFsZWphbmRybyBHLiBDYXN0cm8gIDxhbGV4QGlnYWxpYS5j
b20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFydGluIFJvYmluc29uLgpJbmRleDogV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiA3NTIyNykKKysrIFdlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTI2OTk2LDQ2
ICsyNjk5Niw2IEBACiAJCQkJCQk+CiAJCQkJCTwvRmlsZT4KIAkJCQkJPEZpbGUKLQkJCQkJCVJl
bGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3Ncd2luXEdyYXBoaWNzTGF5ZXJDQUNGLmNw
cCIKLQkJCQkJCT4KLQkJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgotCQkJCQkJCU5hbWU9IkRlYnVn
X0NhaXJvX0NGTGl0ZXxXaW4zMiIKLQkJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKLQkJ
CQkJCQk+Ci0JCQkJCQkJPFRvb2wKLQkJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJ
CQkJCQkvPgotCQkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KLQkJCQkJCTxGaWxlQ29uZmlndXJh
dGlvbgotCQkJCQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgotCQkJCQkJCUV4
Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgotCQkJCQkJCT4KLQkJCQkJCQk8VG9vbAotCQkJCQkJCQlO
YW1lPSJWQ0NMQ29tcGlsZXJUb29sIgotCQkJCQkJCS8+Ci0JCQkJCQk8L0ZpbGVDb25maWd1cmF0
aW9uPgotCQkJCQk8L0ZpbGU+Ci0JCQkJCTxGaWxlCi0JCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBs
YXRmb3JtXGdyYXBoaWNzXHdpblxHcmFwaGljc0xheWVyQ0FDRi5oIgotCQkJCQkJPgotCQkJCQkJ
PEZpbGVDb25maWd1cmF0aW9uCi0JCQkJCQkJTmFtZT0iRGVidWdfQ2Fpcm9fQ0ZMaXRlfFdpbjMy
IgotCQkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgotCQkJCQkJCT4KLQkJCQkJCQk8VG9v
bAotCQkJCQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKLQkJCQkJCQkvPgotCQkJCQkJPC9G
aWxlQ29uZmlndXJhdGlvbj4KLQkJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgotCQkJCQkJCU5hbWU9
IlJlbGVhc2VfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgotCQkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0
cnVlIgotCQkJCQkJCT4KLQkJCQkJCQk8VG9vbAotCQkJCQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxk
VG9vbCIKLQkJCQkJCQkvPgotCQkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KLQkJCQkJPC9GaWxl
PgotCQkJCQk8RmlsZQogCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGljc1x3
aW5cSWNvbldpbi5jcHAiCiAJCQkJCQk+CiAJCQkJCTwvRmlsZT4KQEAgLTI3MzI4LDg2ICsyNzI4
OCw2IEBACiAJCQkJCQk+CiAJCQkJCTwvRmlsZT4KIAkJCQkJPEZpbGUKLQkJCQkJCVJlbGF0aXZl
UGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3Ncd2luXFdlYkxheWVyLmNwcCIKLQkJCQkJCT4KLQkJ
CQkJCTxGaWxlQ29uZmlndXJhdGlvbgotCQkJCQkJCU5hbWU9IkRlYnVnX0NhaXJvX0NGTGl0ZXxX
aW4zMiIKLQkJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKLQkJCQkJCQk+Ci0JCQkJCQkJ
PFRvb2wKLQkJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJCQkJCQkvPgotCQkJCQkJ
PC9GaWxlQ29uZmlndXJhdGlvbj4KLQkJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgotCQkJCQkJCU5h
bWU9IlJlbGVhc2VfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgotCQkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxk
PSJ0cnVlIgotCQkJCQkJCT4KLQkJCQkJCQk8VG9vbAotCQkJCQkJCQlOYW1lPSJWQ0NMQ29tcGls
ZXJUb29sIgotCQkJCQkJCS8+Ci0JCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgotCQkJCQk8L0Zp
bGU+Ci0JCQkJCTxGaWxlCi0JCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNz
XHdpblxXZWJMYXllci5oIgotCQkJCQkJPgotCQkJCQkJPEZpbGVDb25maWd1cmF0aW9uCi0JCQkJ
CQkJTmFtZT0iRGVidWdfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgotCQkJCQkJCUV4Y2x1ZGVkRnJvbUJ1
aWxkPSJ0cnVlIgotCQkJCQkJCT4KLQkJCQkJCQk8VG9vbAotCQkJCQkJCQlOYW1lPSJWQ0N1c3Rv
bUJ1aWxkVG9vbCIKLQkJCQkJCQkvPgotCQkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KLQkJCQkJ
CTxGaWxlQ29uZmlndXJhdGlvbgotCQkJCQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm9fQ0ZMaXRlfFdp
bjMyIgotCQkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgotCQkJCQkJCT4KLQkJCQkJCQk8
VG9vbAotCQkJCQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKLQkJCQkJCQkvPgotCQkJCQkJ
PC9GaWxlQ29uZmlndXJhdGlvbj4KLQkJCQkJPC9GaWxlPgotCQkJCQk8RmlsZQotCQkJCQkJUmVs
YXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGljc1x3aW5cV2ViVGlsZWRMYXllci5jcHAiCi0J
CQkJCQk+Ci0JCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KLQkJCQkJCQlOYW1lPSJEZWJ1Z19DYWly
b19DRkxpdGV8V2luMzIiCi0JCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCi0JCQkJCQkJ
PgotCQkJCQkJCTxUb29sCi0JCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCi0JCQkJCQkJ
Lz4KLQkJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+Ci0JCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24K
LQkJCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvX0NGTGl0ZXxXaW4zMiIKLQkJCQkJCQlFeGNsdWRl
ZEZyb21CdWlsZD0idHJ1ZSIKLQkJCQkJCQk+Ci0JCQkJCQkJPFRvb2wKLQkJCQkJCQkJTmFtZT0i
VkNDTENvbXBpbGVyVG9vbCIKLQkJCQkJCQkvPgotCQkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4K
LQkJCQkJPC9GaWxlPgotCQkJCQk8RmlsZQotCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9y
bVxncmFwaGljc1x3aW5cV2ViVGlsZWRMYXllci5oIgotCQkJCQkJPgotCQkJCQkJPEZpbGVDb25m
aWd1cmF0aW9uCi0JCQkJCQkJTmFtZT0iRGVidWdfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgotCQkJCQkJ
CUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgotCQkJCQkJCT4KLQkJCQkJCQk8VG9vbAotCQkJCQkJ
CQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKLQkJCQkJCQkvPgotCQkJCQkJPC9GaWxlQ29uZmln
dXJhdGlvbj4KLQkJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgotCQkJCQkJCU5hbWU9IlJlbGVhc2Vf
Q2Fpcm9fQ0ZMaXRlfFdpbjMyIgotCQkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgotCQkJ
CQkJCT4KLQkJCQkJCQk8VG9vbAotCQkJCQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKLQkJ
CQkJCQkvPgotCQkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KLQkJCQkJPC9GaWxlPgotCQkJCQk8
RmlsZQogCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGljc1x3aW5cV0tDQUNG
Q29udGV4dEZsdXNoZXIuY3BwIgogCQkJCQkJPgogCQkJCQkJPEZpbGVDb25maWd1cmF0aW9uCkBA
IC0yNzQ0OCw0NiArMjczMjgsNiBAQAogCQkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KIAkJCQkJ
PC9GaWxlPgogCQkJCQk8RmlsZQotCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFw
aGljc1x3aW5cV0tDQUNGTGF5ZXIuY3BwIgotCQkJCQkJPgotCQkJCQkJPEZpbGVDb25maWd1cmF0
aW9uCi0JCQkJCQkJTmFtZT0iRGVidWdfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgotCQkJCQkJCUV4Y2x1
ZGVkRnJvbUJ1aWxkPSJ0cnVlIgotCQkJCQkJCT4KLQkJCQkJCQk8VG9vbAotCQkJCQkJCQlOYW1l
PSJWQ0NMQ29tcGlsZXJUb29sIgotCQkJCQkJCS8+Ci0JCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9u
PgotCQkJCQkJPEZpbGVDb25maWd1cmF0aW9uCi0JCQkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb19D
RkxpdGV8V2luMzIiCi0JCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCi0JCQkJCQkJPgot
CQkJCQkJCTxUb29sCi0JCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCi0JCQkJCQkJLz4K
LQkJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+Ci0JCQkJCTwvRmlsZT4KLQkJCQkJPEZpbGUKLQkJ
CQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3Ncd2luXFdLQ0FDRkxheWVyLmgi
Ci0JCQkJCQk+Ci0JCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KLQkJCQkJCQlOYW1lPSJEZWJ1Z19D
YWlyb19DRkxpdGV8V2luMzIiCi0JCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCi0JCQkJ
CQkJPgotCQkJCQkJCTxUb29sCi0JCQkJCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgotCQkJ
CQkJCS8+Ci0JCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgotCQkJCQkJPEZpbGVDb25maWd1cmF0
aW9uCi0JCQkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb19DRkxpdGV8V2luMzIiCi0JCQkJCQkJRXhj
bHVkZWRGcm9tQnVpbGQ9InRydWUiCi0JCQkJCQkJPgotCQkJCQkJCTxUb29sCi0JCQkJCQkJCU5h
bWU9IlZDQ3VzdG9tQnVpbGRUb29sIgotCQkJCQkJCS8+Ci0JCQkJCQk8L0ZpbGVDb25maWd1cmF0
aW9uPgotCQkJCQk8L0ZpbGU+Ci0JCQkJCTxGaWxlCiAJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBs
YXRmb3JtXGdyYXBoaWNzXHdpblxXS0NBQ0ZMYXllclJlbmRlcmVyLmNwcCIKIAkJCQkJCT4KIAkJ
CQkJCTxGaWxlQ29uZmlndXJhdGlvbgpAQCAtMjg5NTYsNyArMjg3OTYsNTUgQEAKIAkJCQkJCT4K
IAkJCQkJPC9GaWxlPgogCQkJCTwvRmlsdGVyPgotCQkJPC9GaWx0ZXI+CisJCQkJPEZpbHRlcgor
CQkJCQlOYW1lPSJjYSIKKwkJCQkJPgorCQkJCQk8RmlsZQorCQkJCQkJUmVsYXRpdmVQYXRoPSIu
LlxwbGF0Zm9ybVxncmFwaGljc1xjYVxHcmFwaGljc0xheWVyQ0EuY3BwIgorCQkJCQkJPgorCQkJ
CQk8L0ZpbGU+CisJCQkJCTxGaWxlCisJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdy
YXBoaWNzXGNhXEdyYXBoaWNzTGF5ZXJDQS5oIgorCQkJCQkJPgorCQkJCQk8L0ZpbGU+CisJCQkJ
CTxGaWxlCisJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGNhXFBsYXRm
b3JtQ0FBbmltYXRpb24uaCIKKwkJCQkJCT4KKwkJCQkJPC9GaWxlPgorCQkJCQk8RmlsZQorCQkJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xjYVxQbGF0Zm9ybUNBTGF5ZXIu
aCIKKwkJCQkJCT4KKwkJCQkJPC9GaWxlPgorCQkJCQk8RmlsZQorCQkJCQkJUmVsYXRpdmVQYXRo
PSIuLlxwbGF0Zm9ybVxncmFwaGljc1xjYVxQbGF0Zm9ybUNBTGF5ZXJDbGllbnQuaCIKKwkJCQkJ
CT4KKwkJCQkJPC9GaWxlPgorCQkJCQk8RmlsZQorCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0
Zm9ybVxncmFwaGljc1xjYVxUcmFuc2Zvcm1hdGlvbk1hdHJpeENBLmNwcCIKKwkJCQkJCT4KKwkJ
CQkJPC9GaWxlPgorCQkJCQk8RmlsdGVyCisJCQkJCQlOYW1lPSJ3aW4iCisJCQkJCQk+CisJCQkJ
CQk8RmlsZQorCQkJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcY2Fcd2lu
XFBsYXRmb3JtQ0FBbmltYXRpb25XaW4uY3BwIgorCQkJCQkJCT4KKwkJCQkJCTwvRmlsZT4KKwkJ
CQkJCTxGaWxlCisJCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xjYVx3
aW5cUGxhdGZvcm1DQUxheWVyV2luLmNwcCIKKwkJCQkJCQk+CisJCQkJCQk8L0ZpbGU+CisJCQkJ
CQk8RmlsZQorCQkJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcY2Fcd2lu
XFBsYXRmb3JtQ0FMYXllcldpbkludGVybmFsLmNwcCIKKwkJCQkJCQk+CisJCQkJCQk8L0ZpbGU+
CisJCQkJCQk8RmlsZQorCQkJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3Nc
Y2Fcd2luXFBsYXRmb3JtQ0FMYXllcldpbkludGVybmFsLmgiCisJCQkJCQkJPgorCQkJCQkJPC9G
aWxlPgorCQkJCQk8L0ZpbHRlcj4KKwkJCQk8L0ZpbHRlcj4KKyAgICAgICAgICAgIDwvRmlsdGVy
PgogCQkJPEZpbHRlcgogCQkJCU5hbWU9Im5ldHdvcmsiCiAJCQkJPgpJbmRleDogV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9jb3B5Rm9yd2FyZGluZ0hlYWRlcnMuY21kCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovY29weUZvcndhcmRpbmdIZWFkZXJzLmNtZAkocmV2aXNpb24g
NzUyMjcpCisrKyBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL2NvcHlGb3J3YXJkaW5nSGVhZGVycy5j
bWQJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAKIHhjb3B5IC95IC9kICIlUHJvamVj
dERpciUuLlxwbGF0Zm9ybVxncmFwaGljc1wqLmgiICIlQ09ORklHVVJBVElPTkJVSUxERElSJVxp
bmNsdWRlXFdlYkNvcmUiCiB4Y29weSAveSAvZCAiJVByb2plY3REaXIlLi5ccGxhdGZvcm1cZ3Jh
cGhpY3NcJTFcKi5oIiAiJUNPTkZJR1VSQVRJT05CVUlMRERJUiVcaW5jbHVkZVxXZWJDb3JlIgog
eGNvcHkgL3kgL2QgIiVQcm9qZWN0RGlyJS4uXHBsYXRmb3JtXGdyYXBoaWNzXHRyYW5zZm9ybXNc
Ki5oIiAiJUNPTkZJR1VSQVRJT05CVUlMRERJUiVcaW5jbHVkZVxXZWJDb3JlIgoreGNvcHkgL3kg
L2QgIiVQcm9qZWN0RGlyJS4uXHBsYXRmb3JtXGdyYXBoaWNzXGNhXCouaCIgIiVDT05GSUdVUkFU
SU9OQlVJTERESVIlXGluY2x1ZGVcV2ViQ29yZSIKIHhjb3B5IC95IC9kICIlUHJvamVjdERpciUu
LlxwbGF0Zm9ybVxncmFwaGljc1x3aW5cKi5oIiAiJUNPTkZJR1VSQVRJT05CVUlMRERJUiVcaW5j
bHVkZVxXZWJDb3JlIgogeGNvcHkgL3kgL2QgIiVQcm9qZWN0RGlyJS4uXHBsYXRmb3JtXGdyYXBo
aWNzXHdpblwlMVwqLmgiICIlQ09ORklHVVJBVElPTkJVSUxERElSJVxpbmNsdWRlXFdlYkNvcmUi
CiB4Y29weSAveSAvZCAiJVByb2plY3REaXIlLi5ccGxhdGZvcm1cZ3JhcGhpY3Ncb3BlbnR5cGVc
Ki5oIiAiJUNPTkZJR1VSQVRJT05CVUlMRERJUiVcaW5jbHVkZVxXZWJDb3JlIgpJbmRleDogV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlQ29tbW9uLnZzcHJvcHMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlQ29tbW9uLnZzcHJvcHMJKHJldmlzaW9uIDc1
MjI3KQorKysgV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlQ29tbW9uLnZzcHJvcHMJKHdv
cmtpbmcgY29weSkKQEAgLTcsNyArNyw3IEBACiAJPgogCTxUb29sCiAJCU5hbWU9IlZDQ0xDb21w
aWxlclRvb2wiCi0JCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiZxdW90OyQoUHJvamVj
dERpcikuLiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cYWNjZXNzaWJpbGl0eSZxdW90Ozsm
cXVvdDskKFByb2plY3REaXIpLi5cYWNjZXNzaWJpbGl0eVx3aW4mcXVvdDs7JnF1b3Q7JChQcm9q
ZWN0RGlyKS4uXGJyaWRnZSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cYnJpZGdlXGMmcXVv
dDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGJyaWRnZVxqc2MmcXVvdDs7JnF1b3Q7JChQcm9qZWN0
RGlyKS4uXGNzcyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cZWRpdGluZyZxdW90OzsmcXVv
dDskKFByb2plY3REaXIpLi5cZmlsZWFwaSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccmVu
ZGVyaW5nJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxyZW5kZXJpbmdcc3R5bGUmcXVvdDs7
JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHJlbmRlcmluZ1xzdmcmcXVvdDs7JnF1b3Q7JChQcm9qZWN0
RGlyKS4uXGJpbmRpbmdzJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxiaW5kaW5nc1xnZW5l
cmljJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxiaW5kaW5nc1xqcyZxdW90OzsmcXVvdDsk
KFByb2plY3REaXIpLi5cYmluZGluZ3NcanNcc3BlY2lhbGl6YXRpb24mcXVvdDs7JnF1b3Q7JChQ
cm9qZWN0RGlyKS4uXGRvbSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cZG9tXGRlZmF1bHQm
cXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGhpc3RvcnkmcXVvdDs7JnF1b3Q7JChQcm9qZWN0
RGlyKS4uXGh0bWwmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGh0bWxcY2FudmFzJnF1b3Q7
OyZxdW90OyQoUHJvamVjdERpcikuLlxodG1sXHBhcnNlciZxdW90OzsmcXVvdDskKFByb2plY3RE
aXIpLi5caHRtbFxzaGFkb3cmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGluc3BlY3RvciZx
dW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cbG9hZGVyJnF1b3Q7OyZxdW90OyQoUHJvamVjdERp
cikuLlxsb2FkZXJcYXBwY2FjaGUmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGxvYWRlclxh
cmNoaXZlJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxsb2FkZXJcYXJjaGl2ZVxjZiZxdW90
OzsmcXVvdDskKFByb2plY3REaXIpLi5cbG9hZGVyXGNhY2hlJnF1b3Q7OyZxdW90OyQoUHJvamVj
dERpcikuLlxsb2FkZXJcaWNvbiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cbWF0aG1sJnF1
b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxub3RpZmljYXRpb25zJnF1b3Q7OyZxdW90OyQoUHJv
amVjdERpcikuLlxwYWdlJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwYWdlXGFuaW1hdGlv
biZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGFnZVx3aW4mcXVvdDs7JnF1b3Q7JChQcm9q
ZWN0RGlyKS4uXHBsYXRmb3JtJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxh
bmltYXRpb24mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXG1vY2smcXVvdDs7
JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXHNxbCZxdW90OzsmcXVvdDskKFByb2plY3RE
aXIpLi5ccGxhdGZvcm1cd2luJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxu
ZXR3b3JrJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxuZXR3b3JrXHdpbiZx
dW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cY2YmcXVvdDs7JnF1b3Q7JChQcm9q
ZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxw
bGF0Zm9ybVxncmFwaGljc1xmaWx0ZXJzJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0
Zm9ybVxncmFwaGljc1xvcGVudHlwZSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZv
cm1cZ3JhcGhpY3NcdHJhbnNmb3JtcyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZv
cm1cdGV4dCZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cdGV4dFx0cmFuc2Nv
ZGVyJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGljc1x3aW4mcXVv
dDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHhtbCZxdW90OzsmcXVvdDskKENvbmZpZ3VyYXRpb25C
dWlsZERpcilcb2JqXFdlYkNvcmVcRGVyaXZlZFNvdXJjZXMmcXVvdDs7JnF1b3Q7JChQcm9qZWN0
RGlyKS4uXHBsdWdpbnMmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsdWdpbnNcd2luJnF1
b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxzdmdcYW5pbWF0aW9uJnF1b3Q7OyZxdW90OyQoUHJv
amVjdERpcikuLlxzdmdcZ3JhcGhpY3MmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHN2Z1xw
cm9wZXJ0aWVzJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxzdmdcZ3JhcGhpY3NcZmlsdGVy
cyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cc3ZnJnF1b3Q7OyZxdW90OyQoUHJvamVjdERp
cikuLlx3bWwmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHN0b3JhZ2UmcXVvdDs7JnF1b3Q7
JChQcm9qZWN0RGlyKS4uXHdlYnNvY2tldHMmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHdv
cmtlcnMmcXVvdDs7JnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGUmcXVvdDs7
JnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZSZxdW90OzsmcXVv
dDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxKYXZhU2NyaXB0Q29yZSZxdW90Ozsm
cXVvdDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxwcml2YXRlXEphdmFTY3JpcHRD
b3JlJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxGb3J3YXJkaW5nSGVhZGVycyZxdW90Ozsm
cXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVkZSZxdW90OzsmcXVvdDskKFdlYktpdExp
YnJhcmllc0RpcilcaW5jbHVkZVxwcml2YXRlJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVz
RGlyKVxpbmNsdWRlXHByaXZhdGVcSmF2YVNjcmlwdENvcmUmcXVvdDs7JnF1b3Q7JChXZWJLaXRM
aWJyYXJpZXNEaXIpXGluY2x1ZGVccHRocmVhZHMmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJp
ZXNEaXIpXGluY2x1ZGVcc3FsaXRlJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxp
bmNsdWRlXEphdmFTY3JpcHRDb3JlJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxp
bmNsdWRlXHpsaWImcXVvdDsiCisJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiZxdW90
OyQoUHJvamVjdERpcikuLiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cYWNjZXNzaWJpbGl0
eSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cYWNjZXNzaWJpbGl0eVx3aW4mcXVvdDs7JnF1
b3Q7JChQcm9qZWN0RGlyKS4uXGJyaWRnZSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cYnJp
ZGdlXGMmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGJyaWRnZVxqc2MmcXVvdDs7JnF1b3Q7
JChQcm9qZWN0RGlyKS4uXGNzcyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cZWRpdGluZyZx
dW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cZmlsZWFwaSZxdW90OzsmcXVvdDskKFByb2plY3RE
aXIpLi5ccmVuZGVyaW5nJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxyZW5kZXJpbmdcc3R5
bGUmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHJlbmRlcmluZ1xzdmcmcXVvdDs7JnF1b3Q7
JChQcm9qZWN0RGlyKS4uXGJpbmRpbmdzJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxiaW5k
aW5nc1xnZW5lcmljJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxiaW5kaW5nc1xqcyZxdW90
OzsmcXVvdDskKFByb2plY3REaXIpLi5cYmluZGluZ3NcanNcc3BlY2lhbGl6YXRpb24mcXVvdDs7
JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGRvbSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cZG9t
XGRlZmF1bHQmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGhpc3RvcnkmcXVvdDs7JnF1b3Q7
JChQcm9qZWN0RGlyKS4uXGh0bWwmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGh0bWxcY2Fu
dmFzJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxodG1sXHBhcnNlciZxdW90OzsmcXVvdDsk
KFByb2plY3REaXIpLi5caHRtbFxzaGFkb3cmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGlu
c3BlY3RvciZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cbG9hZGVyJnF1b3Q7OyZxdW90OyQo
UHJvamVjdERpcikuLlxsb2FkZXJcYXBwY2FjaGUmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4u
XGxvYWRlclxhcmNoaXZlJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxsb2FkZXJcYXJjaGl2
ZVxjZiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cbG9hZGVyXGNhY2hlJnF1b3Q7OyZxdW90
OyQoUHJvamVjdERpcikuLlxsb2FkZXJcaWNvbiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5c
bWF0aG1sJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxub3RpZmljYXRpb25zJnF1b3Q7OyZx
dW90OyQoUHJvamVjdERpcikuLlxwYWdlJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwYWdl
XGFuaW1hdGlvbiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGFnZVx3aW4mcXVvdDs7JnF1
b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxw
bGF0Zm9ybVxhbmltYXRpb24mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXG1v
Y2smcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXHNxbCZxdW90OzsmcXVvdDsk
KFByb2plY3REaXIpLi5ccGxhdGZvcm1cd2luJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxw
bGF0Zm9ybVxuZXR3b3JrJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxuZXR3
b3JrXHdpbiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cY2YmcXVvdDs7JnF1
b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzJnF1b3Q7OyZxdW90OyQoUHJvamVj
dERpcikuLlxwbGF0Zm9ybVxncmFwaGljc1xjYSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5c
cGxhdGZvcm1cZ3JhcGhpY3NcZmlsdGVycyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxh
dGZvcm1cZ3JhcGhpY3Ncb3BlbnR5cGUmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRm
b3JtXGdyYXBoaWNzXHRyYW5zZm9ybXMmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRm
b3JtXHRleHQmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXHRleHRcdHJhbnNj
b2RlciZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3Ncd2luJnF1
b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlx4bWwmcXVvdDs7JnF1b3Q7JChDb25maWd1cmF0aW9u
QnVpbGREaXIpXG9ialxXZWJDb3JlXERlcml2ZWRTb3VyY2VzJnF1b3Q7OyZxdW90OyQoUHJvamVj
dERpcikuLlxwbHVnaW5zJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbHVnaW5zXHdpbiZx
dW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cc3ZnXGFuaW1hdGlvbiZxdW90OzsmcXVvdDskKFBy
b2plY3REaXIpLi5cc3ZnXGdyYXBoaWNzJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxzdmdc
cHJvcGVydGllcyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cc3ZnXGdyYXBoaWNzXGZpbHRl
cnMmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHN2ZyZxdW90OzsmcXVvdDskKFByb2plY3RE
aXIpLi5cd21sJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxzdG9yYWdlJnF1b3Q7OyZxdW90
OyQoUHJvamVjdERpcikuLlx3ZWJzb2NrZXRzJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlx3
b3JrZXJzJnF1b3Q7OyZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlJnF1b3Q7
OyZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZhdGUmcXVvdDs7JnF1
b3Q7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVcSmF2YVNjcmlwdENvcmUmcXVvdDs7
JnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZVxKYXZhU2NyaXB0
Q29yZSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cRm9yd2FyZGluZ0hlYWRlcnMmcXVvdDs7
JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGUmcXVvdDs7JnF1b3Q7JChXZWJLaXRM
aWJyYXJpZXNEaXIpXGluY2x1ZGVccHJpdmF0ZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmll
c0RpcilcaW5jbHVkZVxwcml2YXRlXEphdmFTY3JpcHRDb3JlJnF1b3Q7OyZxdW90OyQoV2ViS2l0
TGlicmFyaWVzRGlyKVxpbmNsdWRlXHB0aHJlYWRzJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFy
aWVzRGlyKVxpbmNsdWRlXHNxbGl0ZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0Rpcilc
aW5jbHVkZVxKYXZhU2NyaXB0Q29yZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0Rpcilc
aW5jbHVkZVx6bGliJnF1b3Q7IgogCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX19XSU4zMl9f
O0RJU0FCTEVfM0RfUkVOREVSSU5HO1dFQkNPUkVfQ09OVEVYVF9NRU5VUyIKIAkJVXNlUHJlY29t
cGlsZWRIZWFkZXI9IjIiCiAJCVByZWNvbXBpbGVkSGVhZGVyVGhyb3VnaD0iV2ViQ29yZVByZWZp
eC5oIgpJbmRleDogV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkNvbnRyb2xs
ZXIuY3BwCShyZXZpc2lvbiA3NTIyNykKKysrIFdlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0
aW9uQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxNyw2ICszMTcsNyBAQAogewog
ICAgIGlmIChtX2JlZ2luQW5pbWF0aW9uVXBkYXRlVGltZSA9PSBjQmVnaW5BbmltYXRpb25VcGRh
dGVUaW1lTm90U2V0KQogICAgICAgICBtX2JlZ2luQW5pbWF0aW9uVXBkYXRlVGltZSA9IG1fZnJh
bWUtPmN1cnJlbnRBbmltYXRpb25UaW1lKCk7CisKICAgICByZXR1cm4gbV9iZWdpbkFuaW1hdGlv
blVwZGF0ZVRpbWU7CiB9CiAKSW5kZXg6IFdlYkNvcmUvcGFnZS9hbmltYXRpb24vS2V5ZnJhbWVB
bmltYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9hbmltYXRpb24vS2V5ZnJh
bWVBbmltYXRpb24uY3BwCShyZXZpc2lvbiA3NTIyNykKKysrIFdlYkNvcmUvcGFnZS9hbmltYXRp
b24vS2V5ZnJhbWVBbmltYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3NCwxMSBA
QAogCiAgICAgZG91YmxlIGZyYWN0aW9uYWxUaW1lID0gbV9hbmltYXRpb24tPmR1cmF0aW9uKCkg
PyAoZWxhcHNlZFRpbWUgLyBtX2FuaW1hdGlvbi0+ZHVyYXRpb24oKSkgOiAxOwogCi0gICAgQVNT
RVJUKGZyYWN0aW9uYWxUaW1lID49IDApOworICAgIC8vIEZJWE1FOiBzdGFydFRpbWUgY2FuIGJl
IGJlZm9yZSB0aGUgY3VycmVudCBhbmltYXRpb24gImZyYW1lIiB0aW1lLiBUaGlzIGlzIHRvIHN5
bmMgd2l0aCB0aGUgZnJhbWUgdGltZQorICAgIC8vIGNvbmNlcHQgaW4gQW5pbWF0aW9uVGltZUNv
bnRyb2xsZXIuIFNvIHdlIG5lZWQgdG8gc29tZWhvdyBzeW5jIHRoZSB0d28uIFVudGlsIHRoZW4s
IHRoZSBwb3NzaWJsZQorICAgIC8vIGVycm9yIGlzIHNtYWxsIGFuZCB3aWxsIHByb2JhYmx5IG5v
dCBiZSBub3RpY2VhYmxlLiBVbnRpbCB3ZSBmaXggdGhpcywgcmVtb3ZlIHRoZSBhc3NlcnQuCisg
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUyMDM3CisgICAg
Ly8gQVNTRVJUKGZyYWN0aW9uYWxUaW1lID49IDApOwogICAgIGlmIChmcmFjdGlvbmFsVGltZSA8
IDApCiAgICAgICAgIGZyYWN0aW9uYWxUaW1lID0gMDsKIApJbmRleDogV2ViQ29yZS9wYWdlL2Fu
aW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvYW5p
bWF0aW9uL0FuaW1hdGlvbkJhc2UuY3BwCShyZXZpc2lvbiA3NTIyNykKKysrIFdlYkNvcmUvcGFn
ZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNjIsNiAr
MTM2MiwxMSBAQAogICAKIHZvaWQgQW5pbWF0aW9uQmFzZTo6ZnJlZXplQXRUaW1lKGRvdWJsZSB0
KQogeworICAgIGlmICghbV9zdGFydFRpbWUpIHsKKyAgICAgICAgLy8gSWYgd2UgaGF2ZW4ndCBz
dGFydGVkIHlldCwganVzdCBnZW5lcmF0ZSB0aGUgc3RhcnQgZXZlbnQgbm93CisgICAgICAgIG1f
Y29tcEFuaW0tPmFuaW1hdGlvbkNvbnRyb2xsZXIoKS0+cmVjZWl2ZWRTdGFydFRpbWVSZXNwb25z
ZShjdXJyZW50VGltZSgpKTsKKyAgICB9CisKICAgICBBU1NFUlQobV9zdGFydFRpbWUpOyAgICAg
ICAgLy8gaWYgbV9zdGFydFRpbWUgaXMgemVybywgd2UgaGF2ZW4ndCBzdGFydGVkIHlldCwgc28g
d2UnbGwgZ2V0IGEgYmFkIHBhdXNlIHRpbWUuCiAgICAgbV9wYXVzZVRpbWUgPSBtX3N0YXJ0VGlt
ZSArIHQgLSBtX2FuaW1hdGlvbi0+ZGVsYXkoKTsKIApAQCAtMTM4Nyw2ICsxMzkyLDcgQEAKICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgaWYgKHBvc3RBY3RpdmUoKSkKICAgICAgICAgcmV0dXJuIDE7
CisKICAgICByZXR1cm4gYmVnaW5BbmltYXRpb25VcGRhdGVUaW1lKCkgLSBtX3N0YXJ0VGltZTsK
IH0KICAgICAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1BsYXRmb3Jt
Q0FMYXllck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L21hYy9QbGF0Zm9ybUNBTGF5ZXJNYWMubW0JKHJldmlzaW9uIDc1MjI3KQorKysgV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvUGxhdGZvcm1DQUxheWVyTWFjLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0xMDUsNyArMTA1LDcgQEAKICAgICByZXR1cm4gc0hhdmVWYWx1ZUZ1bmN0aW9uOwog
fQogCi12b2lkIFBsYXRmb3JtQ0FMYXllcjo6c2V0T3duZXIoR3JhcGhpY3NMYXllckNBKiBvd25l
cikKK3ZvaWQgUGxhdGZvcm1DQUxheWVyOjpzZXRPd25lcihQbGF0Zm9ybUNBTGF5ZXJDbGllbnQq
IG93bmVyKQogewogICAgIG1fb3duZXIgPSBvd25lcjsKICAgICAKQEAgLTE0NSwxNyArMTQ1LDE3
IEBACiB9CiAjZW5kaWYKIAotUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IFBsYXRmb3JtQ0FM
YXllcjo6Y3JlYXRlKExheWVyVHlwZSBsYXllclR5cGUsIEdyYXBoaWNzTGF5ZXJDQSogb3duZXIp
CitQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gUGxhdGZvcm1DQUxheWVyOjpjcmVhdGUoTGF5
ZXJUeXBlIGxheWVyVHlwZSwgUGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd25lcikKIHsKICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFBsYXRmb3JtQ0FMYXllcihsYXllclR5cGUsIDAsIG93bmVyKSk7
CiB9CiAKLVBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBQbGF0Zm9ybUNBTGF5ZXI6OmNyZWF0
ZSh2b2lkKiBwbGF0Zm9ybUxheWVyLCBHcmFwaGljc0xheWVyQ0EqIG93bmVyKQorUGFzc1JlZlB0
cjxQbGF0Zm9ybUNBTGF5ZXI+IFBsYXRmb3JtQ0FMYXllcjo6Y3JlYXRlKHZvaWQqIHBsYXRmb3Jt
TGF5ZXIsIFBsYXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIpCiB7CiAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBQbGF0Zm9ybUNBTGF5ZXIoTGF5ZXJUeXBlQ3VzdG9tLCBzdGF0aWNfY2FzdDxQbGF0
Zm9ybUxheWVyKj4ocGxhdGZvcm1MYXllciksIG93bmVyKSk7CiB9CiAKLVBsYXRmb3JtQ0FMYXll
cjo6UGxhdGZvcm1DQUxheWVyKExheWVyVHlwZSBsYXllclR5cGUsIFBsYXRmb3JtTGF5ZXIqIGxh
eWVyLCBHcmFwaGljc0xheWVyQ0EqIG93bmVyKQorUGxhdGZvcm1DQUxheWVyOjpQbGF0Zm9ybUNB
TGF5ZXIoTGF5ZXJUeXBlIGxheWVyVHlwZSwgUGxhdGZvcm1MYXllciogbGF5ZXIsIFBsYXRmb3Jt
Q0FMYXllckNsaWVudCogb3duZXIpCiAgICAgOiBtX293bmVyKG93bmVyKQogewogICAgIEJFR0lO
X0JMT0NLX09CSkNfRVhDRVBUSU9OUwpAQCAtMTY4LDYgKzE2OCw3IEBACiAgICAgICAgIENsYXNz
IGxheWVyQ2xhc3MgPSBOaWw7CiAgICAgICAgIHN3aXRjaChsYXllclR5cGUpIHsKICAgICAgICAg
ICAgIGNhc2UgTGF5ZXJUeXBlTGF5ZXI6CisgICAgICAgICAgICBjYXNlIExheWVyVHlwZVJvb3RM
YXllcjoKICAgICAgICAgICAgICAgICBsYXllckNsYXNzID0gW0NBTGF5ZXIgY2xhc3NdOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBMYXllclR5cGVXZWJMYXllcjoK
QEAgLTU2OCwxNSArNTY5LDE1IEBACiAjZW5kaWYKIH0KIAotdm9pZCogUGxhdGZvcm1DQUxheWVy
Ojpjb250ZW50cygpIGNvbnN0CitDRlR5cGVSZWYgUGxhdGZvcm1DQUxheWVyOjpjb250ZW50cygp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIFttX2xheWVyLmdldCgpIGNvbnRlbnRzXTsKIH0KIAotdm9p
ZCBQbGF0Zm9ybUNBTGF5ZXI6OnNldENvbnRlbnRzKHZvaWQqIHZhbHVlKQordm9pZCBQbGF0Zm9y
bUNBTGF5ZXI6OnNldENvbnRlbnRzKENGVHlwZVJlZiB2YWx1ZSkKIHsKICAgICBCRUdJTl9CTE9D
S19PQkpDX0VYQ0VQVElPTlMKLSAgICBbbV9sYXllci5nZXQoKSBzZXRDb250ZW50czpzdGF0aWNf
Y2FzdDxpZD4odmFsdWUpXTsKKyAgICBbbV9sYXllci5nZXQoKSBzZXRDb250ZW50czpzdGF0aWNf
Y2FzdDxpZD4oY29uc3RfY2FzdDx2b2lkKj4odmFsdWUpKV07CiAgICAgRU5EX0JMT0NLX09CSkNf
RVhDRVBUSU9OUwogfQogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBo
aWNzTGF5ZXJDQS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS9HcmFwaGljc0xheWVyQ0EuY3BwCShyZXZpc2lvbiA3NTIyNykKKysrIFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQw
LDcgKzY0MCw3IEBACiAgICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKEFuaW1hdGlvbkNoYW5n
ZWQpOwogfQogCi12b2lkIEdyYXBoaWNzTGF5ZXJDQTo6YW5pbWF0aW9uU3RhcnRlZChDRlRpbWVJ
bnRlcnZhbCBzdGFydFRpbWUpCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6cGxhdGZvcm1DQUxheWVy
QW5pbWF0aW9uU3RhcnRlZChDRlRpbWVJbnRlcnZhbCBzdGFydFRpbWUpCiB7CiAgICAgaWYgKG1f
Y2xpZW50KQogICAgICAgICBtX2NsaWVudC0+bm90aWZ5QW5pbWF0aW9uU3RhcnRlZCh0aGlzLCBz
dGFydFRpbWUpOwpAQCAtNjYwLDYgKzY2MCw4IEBACiAgICAgICAgIAogICAgICAgICBtX3VuY29y
cmVjdGVkQ29udGVudHNJbWFnZSA9IG5ld0ltYWdlOwogICAgICAgICBtX3BlbmRpbmdDb250ZW50
c0ltYWdlID0gbmV3SW1hZ2U7CisKKyNpZiAhUExBVEZPUk0oV0lOKQogICAgICAgICBDR0NvbG9y
U3BhY2VSZWYgY29sb3JTcGFjZSA9IENHSW1hZ2VHZXRDb2xvclNwYWNlKG1fcGVuZGluZ0NvbnRl
bnRzSW1hZ2UuZ2V0KCkpOwogCiAgICAgICAgIHN0YXRpYyBDR0NvbG9yU3BhY2VSZWYgZGV2aWNl
UkdCID0gQ0dDb2xvclNwYWNlQ3JlYXRlRGV2aWNlUkdCKCk7CkBAIC02NjksNiArNjcxLDcgQEAK
ICAgICAgICAgICAgIHN0YXRpYyBDR0NvbG9yU3BhY2VSZWYgZ2VuZXJpY1JHQiA9IENHRGlzcGxh
eUNvcHlDb2xvclNwYWNlKGtDR0RpcmVjdE1haW5EaXNwbGF5KTsKICAgICAgICAgICAgIG1fcGVu
ZGluZ0NvbnRlbnRzSW1hZ2UuYWRvcHRDRihDR0ltYWdlQ3JlYXRlQ29weVdpdGhDb2xvclNwYWNl
KG1fcGVuZGluZ0NvbnRlbnRzSW1hZ2UuZ2V0KCksIGdlbmVyaWNSR0IpKTsKICAgICAgICAgfQor
I2VuZGlmCiAgICAgICAgIG1fY29udGVudHNMYXllclB1cnBvc2UgPSBDb250ZW50c0xheWVyRm9y
SW1hZ2U7CiAgICAgICAgIGlmICghbV9jb250ZW50c0xheWVyKQogICAgICAgICAgICAgbm90ZVN1
YmxheWVyc0NoYW5nZWQoKTsKQEAgLTY4OCw5ICs2OTEsMTUgQEAKICAgICBpZiAobV9jb250ZW50
c0xheWVyICYmIG1lZGlhTGF5ZXIgPT0gbV9jb250ZW50c0xheWVyLT5wbGF0Zm9ybUxheWVyKCkp
CiAgICAgICAgIHJldHVybjsKICAgICAgICAgCi0gICAgLy8gQ3JlYXRlIHRoZSBQbGF0Zm9ybUNB
TGF5ZXIgdG8gd3JhcCB0aGUgaW5jb21pbmcgbGF5ZXIKLSAgICBtX2NvbnRlbnRzTGF5ZXIgPSBt
ZWRpYUxheWVyID8gUGxhdGZvcm1DQUxheWVyOjpjcmVhdGUobWVkaWFMYXllciwgdGhpcykgOiAw
OwotCisgICAgLy8gRklYTUU6IFRoZSBwYXNzZWQgaW4gbGF5ZXIgbWlnaHQgYmUgYSByYXcgbGF5
ZXIgb3IgYW4gZXh0ZXJuYWxseSBjcmVhdGVkIAorICAgIC8vIFBsYXRmb3JtQ0FMYXllci4gVG8g
ZGV0ZXJtaW5lIHRoaXMgd2UgYXR0ZW1wdCB0byBnZXQgdGhlCisgICAgLy8gUGxhdGZvcm1DQUxh
eWVyIHBvaW50ZXIuIElmIHRoaXMgcmV0dXJucyBhIG51bGwgcG9pbnRlciB3ZSBhc3N1bWUgaXQn
cworICAgIC8vIHJhdy4gVGhpcyB0ZXN0IG1pZ2h0IGJlIGludmFsaWQgaWYgdGhlIHJhdyBsYXll
ciBpcywgZm9yIGluc3RhbmNlLCB0aGUKKyAgICAvLyBQbGF0Zm9ybUNBTGF5ZXIgaXMgdXNpbmcg
YSB1c2VyIGRhdGEgcG9pbnRlciBpbiB0aGUgcmF3IGxheWVyLCBhbmQKKyAgICAvLyB0aGUgY3Jl
YXRvciBvZiB0aGUgcmF3IGxheWVyIGlzIHVzaW5nIGl0IGZvciBzb21lIG90aGVyIHB1cnBvc2Uu
CisgICAgLy8gRm9yIG5vdyB3ZSBkb24ndCBzdXBwb3J0IHN1Y2ggYSBjYXNlLgorICAgIFBsYXRm
b3JtQ0FMYXllciogcGxhdGZvcm1DQUxheWVyID0gUGxhdGZvcm1DQUxheWVyOjpwbGF0Zm9ybUNB
TGF5ZXIobWVkaWFMYXllcik7CisgICAgbV9jb250ZW50c0xheWVyID0gbWVkaWFMYXllciA/IChw
bGF0Zm9ybUNBTGF5ZXIgPyBwbGF0Zm9ybUNBTGF5ZXIgOiBQbGF0Zm9ybUNBTGF5ZXI6OmNyZWF0
ZShtZWRpYUxheWVyLCB0aGlzKSkgOiAwOwogICAgIG1fY29udGVudHNMYXllclB1cnBvc2UgPSBt
ZWRpYUxheWVyID8gQ29udGVudHNMYXllckZvck1lZGlhIDogTm9Db250ZW50c0xheWVyOwogCiAg
ICAgbm90ZVN1YmxheWVyc0NoYW5nZWQoKTsKQEAgLTcxMSw3ICs3MjAsNyBAQAogICAgIG5vdGVM
YXllclByb3BlcnR5Q2hhbmdlZChDb250ZW50c0NhbnZhc0xheWVyQ2hhbmdlZCk7CiB9CiAgICAg
Ci12b2lkIEdyYXBoaWNzTGF5ZXJDQTo6ZGlkRGlzcGxheShQbGF0Zm9ybUxheWVyKiBsYXllcikK
K3ZvaWQgR3JhcGhpY3NMYXllckNBOjpsYXllckRpZERpc3BsYXkoUGxhdGZvcm1MYXllciogbGF5
ZXIpCiB7CiAgICAgUGxhdGZvcm1DQUxheWVyKiBjdXJyZW50TGF5ZXIgPSBQbGF0Zm9ybUNBTGF5
ZXI6OnBsYXRmb3JtQ0FMYXllcihsYXllcik7CiAgICAgUGxhdGZvcm1DQUxheWVyKiBzb3VyY2VM
YXllcjsKQEAgLTkwMyw3ICs5MTIsNyBAQAogICAgICAgICAgICAgbmV3U3VibGF5ZXJzLmFwcGVu
ZChjaGlsZExheWVyKTsKICAgICAgICAgfQogCi0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbmV3U3VibGF5ZXJzLnNpemUoKTsgKytpKQorICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IG5ld1N1YmxheWVycy5zaXplKCk7IC0taSkKICAgICAgICAgICAgIG5ld1N1YmxheWVyc1tp
XS0+cmVtb3ZlRnJvbVN1cGVybGF5ZXIoKTsKICAgICB9CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaAkocmV2aXNpb24gNzUyMjcpCisr
KyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgogI2lu
Y2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1DQUFuaW1hdGlvbi5oIgorI2luY2x1
ZGUgIlBsYXRmb3JtQ0FMYXllckNsaWVudC5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAj
aW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CkBAIC00
MCw3ICs0MSw3IEBACiAKIGNsYXNzIFBsYXRmb3JtQ0FMYXllcjsKIAotY2xhc3MgR3JhcGhpY3NM
YXllckNBIDogcHVibGljIEdyYXBoaWNzTGF5ZXIgeworY2xhc3MgR3JhcGhpY3NMYXllckNBIDog
cHVibGljIEdyYXBoaWNzTGF5ZXIsIHB1YmxpYyBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQgewogcHVi
bGljOgogICAgIC8vIFRoZSB3aWR0aCBhbmQgaGVpZ2h0IG9mIGEgc2luZ2xlIHRpbGUgaW4gYSB0
aWxlZCBsYXllci4gU2hvdWxkIGJlIGxhcmdlIGVub3VnaCB0bwogICAgIC8vIGF2b2lkIGxvdHMg
b2Ygc21hbGwgdGlsZXMgKGFuZCB0aGVyZWZvcmUgbG90cyBvZiBkcmF3aW5nIGNhbGxiYWNrcyks
IGJ1dCBzbWFsbCBlbm91Z2gKQEAgLTQ5LDEyICs1MCwxMSBAQAogCiAgICAgR3JhcGhpY3NMYXll
ckNBKEdyYXBoaWNzTGF5ZXJDbGllbnQqKTsKICAgICB2aXJ0dWFsIH5HcmFwaGljc0xheWVyQ0Eo
KTsKLSAgICAKLSAgICB2aXJ0dWFsIHZvaWQgYW5pbWF0aW9uU3RhcnRlZChDRlRpbWVJbnRlcnZh
bCBiZWdpblRpbWUpOwogCiAgICAgdmlydHVhbCB2b2lkIHNldE5hbWUoY29uc3QgU3RyaW5nJik7
CiAKICAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIFBsYXRmb3JtQ0FMYXllciogcGxhdGZvcm1DQUxheWVyKCkgY29uc3QgeyByZXR1
cm4gcHJpbWFyeUxheWVyKCk7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBzZXRDaGlsZHJlbihjb25z
dCBWZWN0b3I8R3JhcGhpY3NMYXllcio+Jik7CiAgICAgdmlydHVhbCB2b2lkIGFkZENoaWxkKEdy
YXBoaWNzTGF5ZXIqKTsKQEAgLTExMiw3ICsxMTIsNyBAQAogICAgIHZpcnR1YWwgdm9pZCBzZXRE
ZWJ1Z0JhY2tncm91bmRDb2xvcihjb25zdCBDb2xvciYpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRE
ZWJ1Z0JvcmRlcihjb25zdCBDb2xvciYsIGZsb2F0IGJvcmRlcldpZHRoKTsKIAotICAgIHZpcnR1
YWwgdm9pZCBkaWREaXNwbGF5KFBsYXRmb3JtTGF5ZXIqKTsKKyAgICB2aXJ0dWFsIHZvaWQgbGF5
ZXJEaWREaXNwbGF5KFBsYXRmb3JtTGF5ZXIqKTsKIAogICAgIHZvaWQgcmVjdXJzaXZlQ29tbWl0
Q2hhbmdlcygpOwogCkBAIC0xMjMsNiArMTIzLDIxIEBACiAgICAgdmlydHVhbCB2b2lkIHNldE9w
YWNpdHlJbnRlcm5hbChmbG9hdCk7CiAKIHByaXZhdGU6CisgICAgLy8gUGxhdGZvcm1DQUxheWVy
Q2xpZW50IG92ZXJyaWRlcworICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNBTGF5ZXJMYXlvdXRT
dWJsYXllcnNPZkxheWVyKFBsYXRmb3JtQ0FMYXllciopIHsgfQorICAgIHZpcnR1YWwgYm9vbCBw
bGF0Zm9ybUNBTGF5ZXJSZXNwb25kc1RvTGF5b3V0Q2hhbmdlcygpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1DQUxheWVyQW5pbWF0aW9uU3RhcnRl
ZChDRlRpbWVJbnRlcnZhbCBiZWdpblRpbWUpOworICAgIHZpcnR1YWwgQ29tcG9zaXRpbmdDb29y
ZGluYXRlc09yaWVudGF0aW9uIHBsYXRmb3JtQ0FMYXllckNvbnRlbnRzT3JpZW50YXRpb24oKSBj
b25zdCB7IHJldHVybiBjb250ZW50c09yaWVudGF0aW9uKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
cGxhdGZvcm1DQUxheWVyUGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNv
bnN0IEludFJlY3QmIGNsaXApIHsgcGFpbnRHcmFwaGljc0xheWVyQ29udGVudHMoY29udGV4dCwg
Y2xpcCk7IH0KKyAgICB2aXJ0dWFsIGJvb2wgcGxhdGZvcm1DQUxheWVyU2hvd0RlYnVnQm9yZGVy
cygpIGNvbnN0IHsgcmV0dXJuIHNob3dEZWJ1Z0JvcmRlcnMoKTsgfQorICAgIHZpcnR1YWwgYm9v
bCBwbGF0Zm9ybUNBTGF5ZXJTaG93UmVwYWludENvdW50ZXIoKSBjb25zdCB7IHJldHVybiBzaG93
UmVwYWludENvdW50ZXIoKTsgfQorICAgIHZpcnR1YWwgaW50IHBsYXRmb3JtQ0FMYXllckluY3Jl
bWVudFJlcGFpbnRDb3VudCgpIHsgcmV0dXJuIGluY3JlbWVudFJlcGFpbnRDb3VudCgpOyB9CisK
KyAgICB2aXJ0dWFsIGJvb2wgcGxhdGZvcm1DQUxheWVyQ29udGVudHNPcGFxdWUoKSBjb25zdCB7
IHJldHVybiBjb250ZW50c09wYXF1ZSgpOyB9CisgICAgdmlydHVhbCBib29sIHBsYXRmb3JtQ0FM
YXllckRyYXdzQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIGRyYXdzQ29udGVudCgpOyB9CisgICAg
dmlydHVhbCB2b2lkIHBsYXRmb3JtQ0FMYXllckxheWVyRGlkRGlzcGxheShQbGF0Zm9ybUxheWVy
KiBsYXllcikgeyByZXR1cm4gbGF5ZXJEaWREaXNwbGF5KGxheWVyKTsgfQorCiAgICAgdm9pZCB1
cGRhdGVPcGFjaXR5T25MYXllcigpOwogCiAgICAgUGxhdGZvcm1DQUxheWVyKiBwcmltYXJ5TGF5
ZXIoKSBjb25zdCB7IHJldHVybiBtX3N0cnVjdHVyYWxMYXllci5nZXQoKSA/IG1fc3RydWN0dXJh
bExheWVyLmdldCgpIDogbV9sYXllci5nZXQoKTsgfQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5oCShyZXZpc2lvbiA3NTIyNykKKysrIFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI5LDggKzI5LDggQEAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAK
ICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKLSNpbmNsdWRlICJHcmFwaGljc0xheWVyQ0Eu
aCIKICNpbmNsdWRlICJQbGF0Zm9ybUNBQW5pbWF0aW9uLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1D
QUxheWVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CkBAIC00NywyNyArNDcs
MTcgQEAKIAogY2xhc3MgUGxhdGZvcm1DQUxheWVyIDogcHVibGljIFJlZkNvdW50ZWQ8UGxhdGZv
cm1DQUxheWVyPiB7CiBwdWJsaWM6Ci0gICAgLy8gVGlsZWRMYXllciB1c2VkIGluIEdyYXBoaWNz
TGF5ZXIgaGFzIGNvbnN0YW50IHNldHRpbmdzOgotICAgIC8vICAgICAgY1RpbGVkTGF5ZXJUaWxl
U2l6ZSA9IDUxMgotICAgIC8vICAgICAgc2V0VGlsZVNpemU6KGNUaWxlZExheWVyVGlsZVNpemUs
IGNUaWxlZExheWVyVGlsZVNpemUpCi0gICAgLy8gICAgICBzZXRMZXZlbHNPZkRldGFpbDoxCi0g
ICAgLy8gICAgICBzZXRMZXZlbHNPZkRldGFpbEJpYXM6MAotICAgIC8vICAgICAgc2V0Q29udGVu
dHNHcmF2aXR5OkAiYm90dG9tTGVmdCIKLSAgICAvLwotICAgIC8vIFRpbGVkTGF5ZXIgYWxzbyBo
YXMgZHJhd2luZyBmdW5jdGlvbnMgbGlrZSBXZWJMYXllcgotICAgIC8vCi0gICAgLy8gV2ViTGF5
ZXIgaXMgYSBDQUxheWVyIHdpdGggZHJhd2luZyBmdW5jdGlvbnMgc3BlY2lmaWMgdG8gV2ViS2l0
Ci0gICAgLy8KLSAgICAvLyBMYXllciBhbmQgVHJhbnNmb3JtTGF5ZXIgYXJlIHVzZWQgYXMgaXMK
LQotICAgIGVudW0gTGF5ZXJUeXBlIHsgTGF5ZXJUeXBlTGF5ZXIsIExheWVyVHlwZVdlYkxheWVy
LCBMYXllclR5cGVUcmFuc2Zvcm1MYXllciwgTGF5ZXJUeXBlV2ViVGlsZWRMYXllciwgTGF5ZXJU
eXBlQ3VzdG9tIH07CisgICAgLy8gTGF5ZXJUeXBlUm9vdExheWVyIGlzIHVzZWQgb24gc29tZSBw
bGF0Zm9ybXMuIEl0IGhhcyBubyBiYWNraW5nIHN0b3JlLCBzbyBzZXROZWVkc0Rpc3BsYXkKKyAg
ICAvLyBzaG91bGQgbm90IGNhbGwgQ0FDRkxheWVyU2V0TmVlZHNEaXNwbGF5LCBidXQgcmF0aGVy
IGp1c3Qgbm90aWZ5IHRoZSByZW5kZXJlciB0aGF0IGl0CisgICAgLy8gaGFzIGNoYW5nZWQgYW5k
IHNob3VsZCBiZSByZS1yZW5kZXJlZC4KKyAgICBlbnVtIExheWVyVHlwZSB7IExheWVyVHlwZUxh
eWVyLCBMYXllclR5cGVXZWJMYXllciwgTGF5ZXJUeXBlVHJhbnNmb3JtTGF5ZXIsIExheWVyVHlw
ZVdlYlRpbGVkTGF5ZXIsIExheWVyVHlwZVJvb3RMYXllciwgTGF5ZXJUeXBlQ3VzdG9tIH07CiAg
ICAgZW51bSBGaWx0ZXJUeXBlIHsgTGluZWFyLCBOZWFyZXN0LCBUcmlsaW5lYXIgfTsKIAotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gY3JlYXRlKExheWVyVHlwZSwgR3Jh
cGhpY3NMYXllckNBKik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBj
cmVhdGUoTGF5ZXJUeXBlLCBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqKTsKICAgICAKICAgICAvLyBU
aGlzIGZ1bmN0aW9uIHBhc3NlcyB0aGUgbGF5ZXIgYXMgYSB2b2lkKiByYXRoZXIgdGhhbiBhIFBs
YXRmb3JtTGF5ZXIgYmVjYXVzZSBQbGF0Zm9ybUxheWVyCiAgICAgLy8gaXMgZGVmaW5lZCBkaWZm
ZXJlbnRseSBmb3IgT2JqIEMgYW5kIEMrKy4gVGhpcyBhbGxvd3MgY2FsbGVycyBmcm9tIGJvdGgg
bGFuZ3VhZ2VzLgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gY3JlYXRl
KHZvaWQqIHBsYXRmb3JtTGF5ZXIsIEdyYXBoaWNzTGF5ZXJDQSopOworICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gY3JlYXRlKHZvaWQqIHBsYXRmb3JtTGF5ZXIsIFBsYXRm
b3JtQ0FMYXllckNsaWVudCopOwogCiAgICAgflBsYXRmb3JtQ0FMYXllcigpOwogICAgIApAQCAt
NzYsMjAgKzY2LDI5IEBACiAgICAgc3RhdGljIFBsYXRmb3JtQ0FMYXllciogcGxhdGZvcm1DQUxh
eWVyKHZvaWQqIHBsYXRmb3JtTGF5ZXIpOwogICAgIAogICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRm
b3JtTGF5ZXIoKSBjb25zdDsKKworICAgIFBsYXRmb3JtQ0FMYXllciogcm9vdExheWVyKCkgY29u
c3Q7CiAgICAgCiAgICAgc3RhdGljIGJvb2wgaXNWYWx1ZUZ1bmN0aW9uU3VwcG9ydGVkKCk7CiAg
ICAgCi0gICAgR3JhcGhpY3NMYXllckNBKiBvd25lcigpIGNvbnN0IHsgcmV0dXJuIG1fb3duZXI7
IH0KLSAgICB2b2lkIHNldE93bmVyKEdyYXBoaWNzTGF5ZXJDQSogb3duZXIpOworICAgIFBsYXRm
b3JtQ0FMYXllckNsaWVudCogb3duZXIoKSBjb25zdCB7IHJldHVybiBtX293bmVyOyB9CisgICAg
dm9pZCBzZXRPd25lcihQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqKTsKIAogICAgIHZvaWQgYW5pbWF0
aW9uU3RhcnRlZChDRlRpbWVJbnRlcnZhbCBiZWdpblRpbWUpCiAgICAgewogICAgICAgICBpZiAo
bV9vd25lcikKLSAgICAgICAgICAgIG1fb3duZXItPmFuaW1hdGlvblN0YXJ0ZWQoYmVnaW5UaW1l
KTsKKyAgICAgICAgICAgIG1fb3duZXItPnBsYXRmb3JtQ0FMYXllckFuaW1hdGlvblN0YXJ0ZWQo
YmVnaW5UaW1lKTsKICAgICB9CiAKKyAgICAvLyBMYXlvdXQgc3VwcG9ydAorICAgIHZvaWQgc2V0
TmVlZHNMYXlvdXQoKTsKKworCiAgICAgdm9pZCBzZXROZWVkc0Rpc3BsYXkoY29uc3QgRmxvYXRS
ZWN0KiBkaXJ0eVJlY3QgPSAwKTsKICAgICAKKyAgICAvLyBUaGlzIHRlbGxzIHRoZSBsYXllciB0
cmVlIHRvIGNvbW1pdCBjaGFuZ2VzIGFuZCBwZXJmb3JtIGEgcmVuZGVyLCB3aXRob3V0IGRvIGEg
c2V0TmVlZHNEaXNwbGF5IG9uIGFueSBsYXllci4KKyAgICB2b2lkIHNldE5lZWRzQ29tbWl0KCk7
CisKICAgICB2b2lkIHNldENvbnRlbnRzQ2hhbmdlZCgpOwogICAgIAogICAgIExheWVyVHlwZSBs
YXllclR5cGUoKSBjb25zdCB7IHJldHVybiBtX2xheWVyVHlwZTsgfQpAQCAtMTA0LDYgKzEwMyw3
IEBACiAgICAgc2l6ZV90IHN1YmxheWVyQ291bnQoKSBjb25zdDsKIAogICAgIC8vIFRoaXMgbWV0
aG9kIHJlbW92ZXMgdGhlIHN1YmxheWVycyBmcm9tIHRoZSBzb3VyY2UgYW5kIHJlcGFyZW50cyB0
aGVtIHRvIHRoZSBjdXJyZW50IGxheWVyLgorICAgIC8vIEFueSBzdWJsYXllcnMgcHJldmlvdXNs
eSBpbiB0aGUgY3VycmVudCBsYXllciBhcmUgcmVtb3ZlZC4KICAgICB2b2lkIGFkb3B0U3VibGF5
ZXJzKFBsYXRmb3JtQ0FMYXllciogc291cmNlKTsKICAgICAKICAgICB2b2lkIGFkZEFuaW1hdGlv
bkZvcktleShjb25zdCBTdHJpbmcmIGtleSwgUGxhdGZvcm1DQUFuaW1hdGlvbiogYW5pbWF0aW9u
KTsgICAgCkBAIC0xNTAsOCArMTUwLDggQEAKICAgICBib29sIGFjY2VsZXJhdGVzRHJhd2luZygp
IGNvbnN0OwogICAgIHZvaWQgc2V0QWNjZWxlcmF0ZXNEcmF3aW5nKGJvb2wpOwogCi0gICAgdm9p
ZCogY29udGVudHMoKSBjb25zdDsKLSAgICB2b2lkIHNldENvbnRlbnRzKHZvaWQqKTsKKyAgICBD
RlR5cGVSZWYgY29udGVudHMoKSBjb25zdDsKKyAgICB2b2lkIHNldENvbnRlbnRzKENGVHlwZVJl
Zik7CiAKICAgICBGbG9hdFJlY3QgY29udGVudHNSZWN0KCkgY29uc3Q7CiAgICAgdm9pZCBzZXRD
b250ZW50c1JlY3QoY29uc3QgRmxvYXRSZWN0Jik7CkBAIC0xODMsMTggKzE4MywyNSBAQAogICAg
IENGVGltZUludGVydmFsIHRpbWVPZmZzZXQoKSBjb25zdDsKICAgICB2b2lkIHNldFRpbWVPZmZz
ZXQoQ0ZUaW1lSW50ZXJ2YWwpOwogCisjaWYgUExBVEZPUk0oV0lOKSAmJiAhZGVmaW5lZChOREVC
VUcpCisgICAgdm9pZCBwcmludFRyZWUoKSBjb25zdDsKKyNlbmRpZgorCiBwcm90ZWN0ZWQ6Ci0g
ICAgUGxhdGZvcm1DQUxheWVyKExheWVyVHlwZSwgUGxhdGZvcm1MYXllciosIEdyYXBoaWNzTGF5
ZXJDQSopOworICAgIFBsYXRmb3JtQ0FMYXllcihMYXllclR5cGUsIFBsYXRmb3JtTGF5ZXIqLCBQ
bGF0Zm9ybUNBTGF5ZXJDbGllbnQqKTsKICAgICAKIHByaXZhdGU6Ci0gICAgCi0gICAgR3JhcGhp
Y3NMYXllckNBKiBtX293bmVyOworICAgIFBsYXRmb3JtQ0FMYXllckNsaWVudCogbV9vd25lcjsK
ICAgICBMYXllclR5cGUgbV9sYXllclR5cGU7CiAgICAgCiAjaWYgUExBVEZPUk0oTUFDKSB8fCBQ
TEFURk9STShXSU4pCiAgICAgUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IG1fbGF5ZXI7CiAjZW5k
aWYKIAorI2lmIFBMQVRGT1JNKFdJTikKKyAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPFBsYXRm
b3JtQ0FBbmltYXRpb24+ID4gbV9hbmltYXRpb25zOworI2VuZGlmCisKICNpZiBQTEFURk9STShN
QUMpCiAjaWZkZWYgX19PQkpDX18KICAgICBSZXRhaW5QdHI8TlNPYmplY3Q+IG1fZGVsZWdhdGU7
CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJX
aW5JbnRlcm5hbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS93aW4vUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWwuY3BwCShyZXZpc2lvbiAwKQorKysgV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWwu
Y3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
CisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorCisjaW5jbHVkZSAiUGxhdGZvcm1D
QUxheWVyV2luSW50ZXJuYWwuaCIKKworI2luY2x1ZGUgIkZvbnQuaCIKKyNpbmNsdWRlICJQbGF0
Zm9ybUNBTGF5ZXIuaCIKKyNpbmNsdWRlIDxRdWFydHpDb3JlL0NBQ0ZMYXllci5oPgorCit1c2lu
ZyBuYW1lc3BhY2Ugc3RkOwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKKy8vIFRoZSB3aWR0
aCBhbmQgaGVpZ2h0IG9mIGEgc2luZ2xlIHRpbGUgaW4gYSB0aWxlZCBsYXllci4gU2hvdWxkIGJl
IGxhcmdlIGVub3VnaCB0bworLy8gYXZvaWQgbG90cyBvZiBzbWFsbCB0aWxlcyAoYW5kIHRoZXJl
Zm9yZSBsb3RzIG9mIGRyYXdpbmcgY2FsbGJhY2tzKSwgYnV0IHNtYWxsIGVub3VnaAorLy8gdG8g
a2VlcCB0aGUgb3ZlcmFsbCB0aWxlIGNvc3QgbG93Lgorc3RhdGljIGNvbnN0IGludCBjVGlsZWRM
YXllclRpbGVTaXplID0gNTEyOworCitQbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbDo6UGxhdGZv
cm1DQUxheWVyV2luSW50ZXJuYWwoUGxhdGZvcm1DQUxheWVyKiBvd25lcikKKyAgICA6IG1fdGls
ZVNpemUoQ0dTaXplTWFrZShjVGlsZWRMYXllclRpbGVTaXplLCBjVGlsZWRMYXllclRpbGVTaXpl
KSkKKyAgICAsIG1fY29uc3RyYWluZWRTaXplKGNvbnN0cmFpbmVkU2l6ZShvd25lci0+Ym91bmRz
KCkuc2l6ZSgpKSkKKyAgICAsIG1fb3duZXIob3duZXIpCit7CisgICAgaWYgKG1fb3duZXItPmxh
eWVyVHlwZSgpID09IFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlV2ViVGlsZWRMYXllcikgewor
ICAgICAgICAvLyBUaWxlZCBsYXllcnMgYXJlIHBsYWNlZCBpbiBhIGNoaWxkIGxheWVyIHRoYXQg
aXMgYWx3YXlzIHRoZSBmaXJzdCBjaGlsZCBvZiB0aGUgVGlsZWRMYXllcgorICAgICAgICBtX3Rp
bGVQYXJlbnQuYWRvcHRDRihDQUNGTGF5ZXJDcmVhdGUoa0NBQ0ZMYXllcikpOworICAgICAgICBD
QUNGTGF5ZXJJbnNlcnRTdWJsYXllcihtX293bmVyLT5wbGF0Zm9ybUxheWVyKCksIG1fdGlsZVBh
cmVudC5nZXQoKSwgMCk7CisgICAgICAgIHVwZGF0ZVRpbGVzKCk7CisgICAgfQorfQorCitQbGF0
Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbDo6flBsYXRmb3JtQ0FMYXllcldpbkludGVybmFsKCkKK3sK
K30KKwordm9pZCBQbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbDo6ZGlzcGxheUNhbGxiYWNrKENB
Q0ZMYXllclJlZiBjYUxheWVyLCBDR0NvbnRleHRSZWYgY29udGV4dCkKK3sKKyAgICBpZiAoIW93
bmVyKCkgfHwgIW93bmVyKCktPm93bmVyKCkpCisgICAgICAgIHJldHVybjsKKworICAgIENHQ29u
dGV4dFNhdmVHU3RhdGUoY29udGV4dCk7CisKKyAgICBDR1JlY3QgbGF5ZXJCb3VuZHMgPSBvd25l
cigpLT5ib3VuZHMoKTsKKyAgICBpZiAob3duZXIoKS0+b3duZXIoKS0+cGxhdGZvcm1DQUxheWVy
Q29udGVudHNPcmllbnRhdGlvbigpID09IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OkNvbXBvc2l0
aW5nQ29vcmRpbmF0ZXNUb3BEb3duKSB7CisgICAgICAgIENHQ29udGV4dFNjYWxlQ1RNKGNvbnRl
eHQsIDEsIC0xKTsKKyAgICAgICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKGNvbnRleHQsIDAsIC1s
YXllckJvdW5kcy5zaXplLmhlaWdodCk7CisgICAgfQorCisgICAgaWYgKG93bmVyKCktPm93bmVy
KCkpIHsKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0IGdyYXBoaWNzQ29udGV4dChjb250ZXh0KTsK
KworICAgICAgICAvLyBJdCdzIGltcG9ydGFudCB0byBnZXQgdGhlIGNsaXAgZnJvbSB0aGUgY29u
dGV4dCwgYmVjYXVzZSBpdCBtYXkgYmUgc2lnbmlmaWNhbnRseQorICAgICAgICAvLyBzbWFsbGVy
IHRoYW4gdGhlIGxheWVyIGJvdW5kcyAoZS5nLiB0aWxlZCBsYXllcnMpCisgICAgICAgIENHUmVj
dCBjbGlwQm91bmRzID0gQ0dDb250ZXh0R2V0Q2xpcEJvdW5kaW5nQm94KGNvbnRleHQpOworICAg
ICAgICBJbnRSZWN0IGNsaXAoZW5jbG9zaW5nSW50UmVjdChjbGlwQm91bmRzKSk7CisgICAgICAg
IG93bmVyKCktPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllclBhaW50Q29udGVudHMoZ3JhcGhpY3ND
b250ZXh0LCBjbGlwKTsKKyAgICB9CisjaWZuZGVmIE5ERUJVRworICAgIGVsc2UgeworICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKworICAgICAgICAvLyBGSVhNRTogaWRlYWxseSB3ZSdk
IGF2b2lkIGNhbGxpbmcgLXNldE5lZWRzRGlzcGxheSBvbiBhIGxheWVyIHRoYXQgaXMgYSBwbGFp
biBjb2xvciwKKyAgICAgICAgLy8gc28gQ0EgbmV2ZXIgbWFrZXMgYmFja2luZyBzdG9yZSBmb3Ig
aXQgKHdoaWNoIGlzIHdoYXQgLXNldE5lZWRzRGlzcGxheSB3aWxsIGRvIGFib3ZlKS4KKyAgICAg
ICAgQ0dDb250ZXh0U2V0UkdCRmlsbENvbG9yKGNvbnRleHQsIDAuMGYsIDEuMGYsIDAuMGYsIDEu
MGYpOworICAgICAgICBDR0NvbnRleHRGaWxsUmVjdChjb250ZXh0LCBsYXllckJvdW5kcyk7Cisg
ICAgfQorI2VuZGlmCisKKyAgICBpZiAob3duZXIoKS0+b3duZXIoKS0+cGxhdGZvcm1DQUxheWVy
U2hvd1JlcGFpbnRDb3VudGVyKCkpIHsKKyAgICAgICAgU3RyaW5nIHRleHQgPSBTdHJpbmc6Om51
bWJlcihvd25lcigpLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJJbmNyZW1lbnRSZXBhaW50Q291
bnQoKSk7CisKKyAgICAgICAgQ0dDb250ZXh0U2F2ZUdTdGF0ZShjb250ZXh0KTsKKworICAgICAg
ICAvLyBNYWtlIHRoZSBiYWNrZ3JvdW5kIG9mIHRoZSBjb3VudGVyIHRoZSBzYW1lIGFzIHRoZSBi
b3JkZXIgY29sb3IsCisgICAgICAgIC8vIHVubGVzcyB0aGVyZSBpcyBubyBib3JkZXIsIHRoZW4g
bWFrZSBpdCByZWQKKyAgICAgICAgZmxvYXQgYm9yZGVyV2lkdGggPSBDQUNGTGF5ZXJHZXRCb3Jk
ZXJXaWR0aChjYUxheWVyKTsKKyAgICAgICAgaWYgKGJvcmRlcldpZHRoID4gMCkgeworICAgICAg
ICAgICAgQ0dDb2xvclJlZiBib3JkZXJDb2xvciA9IENBQ0ZMYXllckdldEJvcmRlckNvbG9yKGNh
TGF5ZXIpOworICAgICAgICAgICAgY29uc3QgQ0dGbG9hdCogY29sb3JzID0gQ0dDb2xvckdldENv
bXBvbmVudHMoYm9yZGVyQ29sb3IpOworICAgICAgICAgICAgQ0dDb250ZXh0U2V0UkdCRmlsbENv
bG9yKGNvbnRleHQsIGNvbG9yc1swXSwgY29sb3JzWzFdLCBjb2xvcnNbMl0sIGNvbG9yc1szXSk7
CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgQ0dDb250ZXh0U2V0UkdCRmlsbENvbG9yKGNv
bnRleHQsIDEuMGYsIDAuMGYsIDAuMGYsIDAuOGYpOworICAgICAgICAKKyAgICAgICAgQ0dSZWN0
IGFCb3VuZHMgPSBsYXllckJvdW5kczsKKworICAgICAgICBhQm91bmRzLnNpemUud2lkdGggPSAx
MCArIDEwICogdGV4dC5sZW5ndGgoKTsKKyAgICAgICAgYUJvdW5kcy5zaXplLmhlaWdodCA9IDIy
OworICAgICAgICBDR0NvbnRleHRGaWxsUmVjdChjb250ZXh0LCBhQm91bmRzKTsKKyAgICAgICAg
CisgICAgICAgIEZvbnREZXNjcmlwdGlvbiBkZXNjOworCisgICAgICAgIE5PTkNMSUVOVE1FVFJJ
Q1MgbWV0cmljczsKKyAgICAgICAgbWV0cmljcy5jYlNpemUgPSBzaXplb2YobWV0cmljcyk7Cisg
ICAgICAgIFN5c3RlbVBhcmFtZXRlcnNJbmZvKFNQSV9HRVROT05DTElFTlRNRVRSSUNTLCBtZXRy
aWNzLmNiU2l6ZSwgJm1ldHJpY3MsIDApOworICAgICAgICBGb250RmFtaWx5IGZhbWlseTsKKyAg
ICAgICAgZmFtaWx5LnNldEZhbWlseShtZXRyaWNzLmxmU21DYXB0aW9uRm9udC5sZkZhY2VOYW1l
KTsKKyAgICAgICAgZGVzYy5zZXRGYW1pbHkoZmFtaWx5KTsKKworICAgICAgICBkZXNjLnNldENv
bXB1dGVkU2l6ZSgxOCk7CisgICAgICAgIAorICAgICAgICBGb250IGZvbnQgPSBGb250KGRlc2Ms
IDAsIDApOworICAgICAgICBmb250LnVwZGF0ZSgwKTsKKworICAgICAgICBHcmFwaGljc0NvbnRl
eHQgY2coY29udGV4dCk7CisgICAgICAgIGNnLnNldEZpbGxDb2xvcihDb2xvcjo6YmxhY2ssIENv
bG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICBjZy5kcmF3VGV4dChmb250LCBUZXh0UnVuKHRl
eHQpLCBJbnRQb2ludChhQm91bmRzLm9yaWdpbi54ICsgNSwgYUJvdW5kcy5vcmlnaW4ueSArIDE3
KSk7CisKKyAgICAgICAgQ0dDb250ZXh0UmVzdG9yZUdTdGF0ZShjb250ZXh0KTsgICAgICAgIAor
ICAgIH0KKworICAgIENHQ29udGV4dFJlc3RvcmVHU3RhdGUoY29udGV4dCk7CisKKyAgICBvd25l
cigpLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJMYXllckRpZERpc3BsYXkoY2FMYXllcik7Cit9
CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWw6OmludGVybmFsU2V0TmVlZHNEaXNw
bGF5KGNvbnN0IEZsb2F0UmVjdCogZGlydHlSZWN0KQoreworICAgIGlmIChkaXJ0eVJlY3QpIHsK
KyAgICAgICAgQ0dSZWN0IHJlY3QgPSAqZGlydHlSZWN0OworICAgICAgICBDQUNGTGF5ZXJTZXRO
ZWVkc0Rpc3BsYXkob3duZXIoKS0+cGxhdGZvcm1MYXllcigpLCAmcmVjdCk7CisgICAgfSBlbHNl
CisgICAgICAgIENBQ0ZMYXllclNldE5lZWRzRGlzcGxheShvd25lcigpLT5wbGF0Zm9ybUxheWVy
KCksIDApOworfQorCit2b2lkIFBsYXRmb3JtQ0FMYXllcldpbkludGVybmFsOjpzZXROZWVkc0Rp
c3BsYXkoY29uc3QgRmxvYXRSZWN0KiBkaXJ0eVJlY3QpCit7CisgICAgaWYgKG93bmVyKCktPmxh
eWVyVHlwZSgpID09IFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlV2ViVGlsZWRMYXllcikgewor
ICAgICAgICAvLyBGSVhNRTogT25seSBzZXROZWVkc0Rpc3BsYXkgZm9yIHRpbGVzIHRoYXQgYXJl
IGN1cnJlbnRseSB2aXNpYmxlCisgICAgICAgIGludCBudW1UaWxlTGF5ZXJzID0gdGlsZUNvdW50
KCk7CisgICAgICAgIENHUmVjdCByZWN0OworICAgICAgICBpZiAoZGlydHlSZWN0KQorICAgICAg
ICAgICAgcmVjdCA9ICpkaXJ0eVJlY3Q7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVt
VGlsZUxheWVyczsgKytpKQorICAgICAgICAgICAgQ0FDRkxheWVyU2V0TmVlZHNEaXNwbGF5KHRp
bGVBdEluZGV4KGkpLCBkaXJ0eVJlY3QgPyAmcmVjdCA6IDApOworCisgICAgICAgIGlmIChtX293
bmVyLT5vd25lcigpICYmIG1fb3duZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllclNob3dSZXBh
aW50Q291bnRlcigpKSB7CisgICAgICAgICAgICBDR1JlY3QgbGF5ZXJCb3VuZHMgPSBtX293bmVy
LT5ib3VuZHMoKTsKKyAgICAgICAgICAgIENHUmVjdCBpbmRpY2F0b3JSZWN0ID0gQ0dSZWN0TWFr
ZShsYXllckJvdW5kcy5vcmlnaW4ueCwgbGF5ZXJCb3VuZHMub3JpZ2luLnksIDgwLCAyNSk7Cisg
ICAgICAgICAgICBDQUNGTGF5ZXJTZXROZWVkc0Rpc3BsYXkodGlsZUF0SW5kZXgoMCksICZpbmRp
Y2F0b3JSZWN0KTsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAob3duZXIoKS0+bGF5ZXJUeXBl
KCkgPT0gUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVXZWJMYXllcikgeworICAgICAgICBpZiAo
b3duZXIoKSAmJiBvd25lcigpLT5vd25lcigpKSB7CisgICAgICAgICAgICBpZiAob3duZXIoKS0+
b3duZXIoKS0+cGxhdGZvcm1DQUxheWVyU2hvd1JlcGFpbnRDb3VudGVyKCkpIHsKKyAgICAgICAg
ICAgICAgICBGbG9hdFJlY3QgbGF5ZXJCb3VuZHMgPSBvd25lcigpLT5ib3VuZHMoKTsKKyAgICAg
ICAgICAgICAgICBGbG9hdFJlY3QgcmVwYWludENvdW50ZXJSZWN0ID0gbGF5ZXJCb3VuZHM7CisK
KyAgICAgICAgICAgICAgICAvLyBXZSBhc3N1bWUgYSBtYXhpbXVtIG9mIDQgZGlnaXRzIGFuZCBh
IGZvbnQgc2l6ZSBvZiAxOC4KKyAgICAgICAgICAgICAgICByZXBhaW50Q291bnRlclJlY3Quc2V0
V2lkdGgoODApOworICAgICAgICAgICAgICAgIHJlcGFpbnRDb3VudGVyUmVjdC5zZXRIZWlnaHQo
MjIpOworICAgICAgICAgICAgICAgIGlmIChvd25lcigpLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5
ZXJDb250ZW50c09yaWVudGF0aW9uKCkgPT0gV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6Q29tcG9z
aXRpbmdDb29yZGluYXRlc1RvcERvd24pCisgICAgICAgICAgICAgICAgICAgIHJlcGFpbnRDb3Vu
dGVyUmVjdC5zZXRZKGxheWVyQm91bmRzLmhlaWdodCgpIC0gKGxheWVyQm91bmRzLnkoKSArIHJl
cGFpbnRDb3VudGVyUmVjdC5oZWlnaHQoKSkpOworICAgICAgICAgICAgICAgIGludGVybmFsU2V0
TmVlZHNEaXNwbGF5KCZyZXBhaW50Q291bnRlclJlY3QpOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgaWYgKGRpcnR5UmVjdCAmJiBvd25lcigpLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJD
b250ZW50c09yaWVudGF0aW9uKCkgPT0gV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6Q29tcG9zaXRp
bmdDb29yZGluYXRlc1RvcERvd24pIHsKKyAgICAgICAgICAgICAgICBGbG9hdFJlY3QgZmxpcHBl
ZERpcnR5UmVjdCA9ICpkaXJ0eVJlY3Q7CisgICAgICAgICAgICAgICAgZmxpcHBlZERpcnR5UmVj
dC5zZXRZKG93bmVyKCktPmJvdW5kcygpLmhlaWdodCgpIC0gKGZsaXBwZWREaXJ0eVJlY3QueSgp
ICsgZmxpcHBlZERpcnR5UmVjdC5oZWlnaHQoKSkpOworICAgICAgICAgICAgICAgIGludGVybmFs
U2V0TmVlZHNEaXNwbGF5KCZmbGlwcGVkRGlydHlSZWN0KTsKKyAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpbnRlcm5hbFNldE5lZWRz
RGlzcGxheShkaXJ0eVJlY3QpOworICAgIH0KKyAgICBvd25lcigpLT5zZXROZWVkc0NvbW1pdCgp
OworfQorCit2b2lkIFBsYXRmb3JtQ0FMYXllcldpbkludGVybmFsOjpzZXRTdWJsYXllcnMoY29u
c3QgUGxhdGZvcm1DQUxheWVyTGlzdCYgbGlzdCkKK3sKKyAgICAvLyBSZW1vdmUgYWxsIHRoZSBj
dXJyZW50IHN1YmxheWVycyBhbmQgYWRkIHRoZSBwYXNzZWQgbGF5ZXJzCisgICAgQ0FDRkxheWVy
U2V0U3VibGF5ZXJzKG93bmVyKCktPnBsYXRmb3JtTGF5ZXIoKSwgMCk7CisKKyAgICAvLyBQZXJm
b3JtIHJlbW92ZUZyb21TdXBlckxheWVyIGluIGEgc2VwYXJhdGUgcGFzcy4gQ0FDRiByZXF1aXJl
cyBzdXBlcmxheWVyIHRvCisgICAgLy8gYmUgbnVsbCBvciBDQUNGTGF5ZXJJbnNlcnRTdWJsYXll
ciBzaWxlbnRseSBmYWlscy4KKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxpc3Quc2l6ZSgp
OyBpKyspCisgICAgICAgIENBQ0ZMYXllclJlbW92ZUZyb21TdXBlcmxheWVyKGxpc3RbaV0tPnBs
YXRmb3JtTGF5ZXIoKSk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxpc3Quc2l6ZSgp
OyBpKyspCisgICAgICAgIENBQ0ZMYXllckluc2VydFN1YmxheWVyKG93bmVyKCktPnBsYXRmb3Jt
TGF5ZXIoKSwgbGlzdFtpXS0+cGxhdGZvcm1MYXllcigpLCBpKTsKKworICAgIG93bmVyKCktPnNl
dE5lZWRzQ29tbWl0KCk7CisKKyAgICBpZiAob3duZXIoKS0+bGF5ZXJUeXBlKCkgPT0gUGxhdGZv
cm1DQUxheWVyOjpMYXllclR5cGVXZWJUaWxlZExheWVyKSB7CisgICAgICAgIC8vIFByZXNlcnZl
IHRoZSB0aWxlIHBhcmVudCBhZnRlciBzZXQKKyAgICAgICAgQ0FDRkxheWVySW5zZXJ0U3VibGF5
ZXIob3duZXIoKS0+cGxhdGZvcm1MYXllcigpLCBtX3RpbGVQYXJlbnQuZ2V0KCksIDApOworICAg
IH0KK30KKwordm9pZCBQbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbDo6cmVtb3ZlQWxsU3VibGF5
ZXJzKCkKK3sKKyAgICBDQUNGTGF5ZXJTZXRTdWJsYXllcnMob3duZXIoKS0+cGxhdGZvcm1MYXll
cigpLCAwKTsKKyAgICBvd25lcigpLT5zZXROZWVkc0NvbW1pdCgpOworCisgICAgaWYgKG93bmVy
KCktPmxheWVyVHlwZSgpID09IFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlV2ViVGlsZWRMYXll
cikgeworICAgICAgICAvLyBSZXN0b3JlIHRoZSB0aWxlIHBhcmVudCBhZnRlciByZW1vdmFsCisg
ICAgICAgIENBQ0ZMYXllckluc2VydFN1YmxheWVyKG93bmVyKCktPnBsYXRmb3JtTGF5ZXIoKSwg
bV90aWxlUGFyZW50LmdldCgpLCAwKTsKKyAgICB9Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVy
V2luSW50ZXJuYWw6Omluc2VydFN1YmxheWVyKFBsYXRmb3JtQ0FMYXllciogbGF5ZXIsIHNpemVf
dCBpbmRleCkKK3sKKyAgICBpbmRleCA9IG1pbihpbmRleCwgc3VibGF5ZXJDb3VudCgpKTsKKyAg
ICBpZiAob3duZXIoKS0+bGF5ZXJUeXBlKCkgPT0gUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVX
ZWJUaWxlZExheWVyKSB7CisgICAgICAgIC8vIEFkZCAxIHRvIGFjY291bnQgZm9yIHRoZSB0aWxl
IHBhcmVudCBsYXllcgorICAgICAgICBpbmRleCsrOworICAgIH0KKworICAgIGxheWVyLT5yZW1v
dmVGcm9tU3VwZXJsYXllcigpOworICAgIENBQ0ZMYXllckluc2VydFN1YmxheWVyKG93bmVyKCkt
PnBsYXRmb3JtTGF5ZXIoKSwgbGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSwgaW5kZXgpOworICAgIG93
bmVyKCktPnNldE5lZWRzQ29tbWl0KCk7Cit9CisKK3NpemVfdCBQbGF0Zm9ybUNBTGF5ZXJXaW5J
bnRlcm5hbDo6c3VibGF5ZXJDb3VudCgpIGNvbnN0Cit7CisgICAgQ0ZBcnJheVJlZiBzdWJsYXll
cnMgPSBDQUNGTGF5ZXJHZXRTdWJsYXllcnMob3duZXIoKS0+cGxhdGZvcm1MYXllcigpKTsKKyAg
ICBzaXplX3QgY291bnQgPSBzdWJsYXllcnMgPyBDRkFycmF5R2V0Q291bnQoc3VibGF5ZXJzKSA6
IDA7CisKKyAgICBpZiAob3duZXIoKS0+bGF5ZXJUeXBlKCkgPT0gUGxhdGZvcm1DQUxheWVyOjpM
YXllclR5cGVXZWJUaWxlZExheWVyKSB7CisgICAgICAgIC8vIFN1YnRyYWN0IDEgdG8gYWNjb3Vu
dCBmb3IgdGhlIHRpbGUgcGFyZW50IGxheWVyCisgICAgICAgIEFTU0VSVChjb3VudCA+IDApOwor
ICAgICAgICBjb3VudC0tOworICAgIH0KKworICAgIHJldHVybiBjb3VudDsKK30KKworaW50IFBs
YXRmb3JtQ0FMYXllcldpbkludGVybmFsOjppbmRleE9mU3VibGF5ZXIoY29uc3QgUGxhdGZvcm1D
QUxheWVyKiByZWZlcmVuY2UpCit7CisgICAgQ0FDRkxheWVyUmVmIHJlZiA9IHJlZmVyZW5jZS0+
cGxhdGZvcm1MYXllcigpOworICAgIGlmICghcmVmKQorICAgICAgICByZXR1cm4gLTE7CisKKyAg
ICBDRkFycmF5UmVmIHN1YmxheWVycyA9IENBQ0ZMYXllckdldFN1YmxheWVycyhvd25lcigpLT5w
bGF0Zm9ybUxheWVyKCkpOworICAgIGlmICghc3VibGF5ZXJzKQorICAgICAgICByZXR1cm4gLTE7
CisKKyAgICBzaXplX3QgbiA9IENGQXJyYXlHZXRDb3VudChzdWJsYXllcnMpOworCisgICAgaWYg
KG93bmVyKCktPmxheWVyVHlwZSgpID09IFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlV2ViVGls
ZWRMYXllcikgeworICAgICAgICBmb3IgKHNpemVfdCBpID0gMTsgaSA8IG47ICsraSkgeworICAg
ICAgICAgICAgaWYgKENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoc3VibGF5ZXJzLCBpKSA9PSByZWYp
CisgICAgICAgICAgICAgICAgcmV0dXJuIGkgLSAxOworICAgICAgICB9CisgICAgfSBlbHNlIHsK
KyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBuOyArK2kpIHsKKyAgICAgICAgICAgIGlm
IChDRkFycmF5R2V0VmFsdWVBdEluZGV4KHN1YmxheWVycywgaSkgPT0gcmVmKQorICAgICAgICAg
ICAgICAgIHJldHVybiBpOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIC0xOworfQor
CitQbGF0Zm9ybUNBTGF5ZXIqIFBsYXRmb3JtQ0FMYXllcldpbkludGVybmFsOjpzdWJsYXllckF0
SW5kZXgoaW50IGluZGV4KSBjb25zdAoreworICAgIGlmIChvd25lcigpLT5sYXllclR5cGUoKSA9
PSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVdlYlRpbGVkTGF5ZXIpIHsKKyAgICAgICAgLy8g
QWRkIDEgdG8gYWNjb3VudCBmb3IgdGhlIHRpbGUgcGFyZW50IGxheWVyCisgICAgICAgIGluZGV4
Kys7CisgICAgfQorCisgICAgQ0ZBcnJheVJlZiBzdWJsYXllcnMgPSBDQUNGTGF5ZXJHZXRTdWJs
YXllcnMob3duZXIoKS0+cGxhdGZvcm1MYXllcigpKTsKKyAgICBpZiAoIXN1YmxheWVycyB8fCBp
bmRleCA8IDAgfHwgQ0ZBcnJheUdldENvdW50KHN1YmxheWVycykgPD0gaW5kZXgpCisgICAgICAg
IHJldHVybiAwOworICAgIAorICAgIHJldHVybiBQbGF0Zm9ybUNBTGF5ZXI6OnBsYXRmb3JtQ0FM
YXllcihzdGF0aWNfY2FzdDxDQUNGTGF5ZXJSZWY+KGNvbnN0X2Nhc3Q8dm9pZCo+KENGQXJyYXlH
ZXRWYWx1ZUF0SW5kZXgoc3VibGF5ZXJzLCBpbmRleCkpKSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1D
QUxheWVyV2luSW50ZXJuYWw6OnNldEJvdW5kcyhjb25zdCBGbG9hdFJlY3QmIHJlY3QpCit7Cisg
ICAgaWYgKENHUmVjdEVxdWFsVG9SZWN0KHJlY3QsIG93bmVyKCktPmJvdW5kcygpKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgQ0FDRkxheWVyU2V0Qm91bmRzKG93bmVyKCktPnBsYXRmb3JtTGF5
ZXIoKSwgcmVjdCk7CisgICAgb3duZXIoKS0+c2V0TmVlZHNDb21taXQoKTsKKworICAgIGlmIChv
d25lcigpLT5sYXllclR5cGUoKSA9PSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVdlYlRpbGVk
TGF5ZXIpIHsKKyAgICAgICAgbV9jb25zdHJhaW5lZFNpemUgPSBjb25zdHJhaW5lZFNpemUocmVj
dC5zaXplKCkpOworICAgICAgICB1cGRhdGVUaWxlcygpOworICAgIH0KK30KKwordm9pZCBQbGF0
Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbDo6c2V0RnJhbWUoY29uc3QgRmxvYXRSZWN0JiByZWN0KQor
eworICAgIENHUmVjdCBvbGRGcmFtZSA9IG93bmVyKCktPmZyYW1lKCk7CisgICAgaWYgKENHUmVj
dEVxdWFsVG9SZWN0KHJlY3QsIG9sZEZyYW1lKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQ0FD
RkxheWVyU2V0RnJhbWUob3duZXIoKS0+cGxhdGZvcm1MYXllcigpLCByZWN0KTsKKyAgICBvd25l
cigpLT5zZXROZWVkc0NvbW1pdCgpOworCisgICAgaWYgKG93bmVyKCktPmxheWVyVHlwZSgpID09
IFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlV2ViVGlsZWRMYXllcikKKyAgICAgICAgdXBkYXRl
VGlsZXMoKTsKK30KKworQ0dTaXplIFBsYXRmb3JtQ0FMYXllcldpbkludGVybmFsOjpjb25zdHJh
aW5lZFNpemUoY29uc3QgQ0dTaXplJiBzaXplKSBjb25zdAoreworICAgIGNvbnN0IGludCBjTWF4
VGlsZUNvdW50ID0gNTEyOworICAgIGNvbnN0IGZsb2F0IGNTcXJ0TWF4VGlsZUNvdW50ID0gc3Fy
dGYoY01heFRpbGVDb3VudCk7CisKKyAgICBDR1NpemUgY29uc3RyYWluZWRTaXplID0gc2l6ZTsK
KworICAgIGludCB0aWxlQ29sdW1ucyA9IGNlaWxmKGNvbnN0cmFpbmVkU2l6ZS53aWR0aCAvIG1f
dGlsZVNpemUud2lkdGgpOworICAgIGludCB0aWxlUm93cyA9IGNlaWxmKGNvbnN0cmFpbmVkU2l6
ZS5oZWlnaHQgLyBtX3RpbGVTaXplLmhlaWdodCk7CisgICAgaW50IG51bVRpbGVzID0gdGlsZUNv
bHVtbnMgKiB0aWxlUm93czsKKworICAgIC8vIElmIG51bWJlciBvZiB0aWxlcyB2ZXJ0aWNhbGx5
IG9yIGhvcml6b250YWxseSBpcyA8IHNxcnQoY01heFRpbGVDb3VudCkKKyAgICAvLyBqdXN0IHNo
b3J0ZW4gdGhlIGxvbmdlciBkaW1lbnNpb24uIE90aGVyd2lzZSBzaG9ydGVuIGJvdGggZGltZW5z
aW9ucworICAgIC8vIGFjY29yZGluZyB0byB0aGUgcmF0aW8gb2Ygd2lkdGggdG8gaGVpZ2h0CisK
KyAgICBpZiAobnVtVGlsZXMgPiBjTWF4VGlsZUNvdW50KSB7CisgICAgICAgIGlmICh0aWxlUm93
cyA8IGNTcXJ0TWF4VGlsZUNvdW50KQorICAgICAgICAgICAgdGlsZUNvbHVtbnMgPSBmbG9vcmYo
Y01heFRpbGVDb3VudCAvIHRpbGVSb3dzKTsKKyAgICAgICAgZWxzZSBpZiAodGlsZUNvbHVtbnMg
PCBjU3FydE1heFRpbGVDb3VudCkKKyAgICAgICAgICAgIHRpbGVSb3dzID0gZmxvb3JmKGNNYXhU
aWxlQ291bnQgLyB0aWxlQ29sdW1ucyk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgdGls
ZVJvd3MgPSBjZWlsZihzcXJ0ZihjTWF4VGlsZUNvdW50ICogY29uc3RyYWluZWRTaXplLmhlaWdo
dCAvIGNvbnN0cmFpbmVkU2l6ZS53aWR0aCkpOworICAgICAgICAgICAgdGlsZUNvbHVtbnMgPSBm
bG9vcmYoY01heFRpbGVDb3VudCAvIHRpbGVSb3dzKTsKKyAgICAgICAgfQorICAgICAgICAKKyAg
ICAgICAgY29uc3RyYWluZWRTaXplLndpZHRoID0gdGlsZUNvbHVtbnMgKiBtX3RpbGVTaXplLndp
ZHRoOworICAgICAgICBjb25zdHJhaW5lZFNpemUuaGVpZ2h0ID0gdGlsZVJvd3MgKiBtX3RpbGVT
aXplLmhlaWdodDsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIGNvbnN0cmFpbmVkU2l6ZTsKK30K
Kwordm9pZCBQbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbDo6dGlsZURpc3BsYXlDYWxsYmFjayhD
QUNGTGF5ZXJSZWYgbGF5ZXIsIENHQ29udGV4dFJlZiBjb250ZXh0KQoreworICAgIHN0YXRpY19j
YXN0PFBsYXRmb3JtQ0FMYXllcldpbkludGVybmFsKj4oQ0FDRkxheWVyR2V0VXNlckRhdGEobGF5
ZXIpKS0+ZHJhd1RpbGUobGF5ZXIsIGNvbnRleHQpOworfQorCit2b2lkIFBsYXRmb3JtQ0FMYXll
cldpbkludGVybmFsOjphZGRUaWxlKCkKK3sKKyAgICBSZXRhaW5QdHI8Q0FDRkxheWVyUmVmPiBu
ZXdMYXllcihBZG9wdENGLCBDQUNGTGF5ZXJDcmVhdGUoa0NBQ0ZMYXllcikpOworICAgIENBQ0ZM
YXllclNldEFuY2hvclBvaW50KG5ld0xheWVyLmdldCgpLCBDR1BvaW50TWFrZSgwLCAxKSk7Cisg
ICAgQ0FDRkxheWVyU2V0VXNlckRhdGEobmV3TGF5ZXIuZ2V0KCksIHRoaXMpOworICAgIENBQ0ZM
YXllclNldERpc3BsYXlDYWxsYmFjayhuZXdMYXllci5nZXQoKSwgdGlsZURpc3BsYXlDYWxsYmFj
ayk7CisKKyAgICBDRkFycmF5UmVmIHN1YmxheWVycyA9IENBQ0ZMYXllckdldFN1YmxheWVycyht
X3RpbGVQYXJlbnQuZ2V0KCkpOworICAgIENBQ0ZMYXllckluc2VydFN1YmxheWVyKG1fdGlsZVBh
cmVudC5nZXQoKSwgbmV3TGF5ZXIuZ2V0KCksIHN1YmxheWVycyA/IENGQXJyYXlHZXRDb3VudChz
dWJsYXllcnMpIDogMCk7CisKKyAgICBpZiAob3duZXIoKS0+b3duZXIoKS0+cGxhdGZvcm1DQUxh
eWVyU2hvd0RlYnVnQm9yZGVycygpKSB7CisgICAgICAgIENHQ29sb3JSZWYgYm9yZGVyQ29sb3Ig
PSBDR0NvbG9yQ3JlYXRlR2VuZXJpY1JHQigwLjUsIDAsIDAuNSwgMC43KTsKKyAgICAgICAgQ0FD
RkxheWVyU2V0Qm9yZGVyQ29sb3IobmV3TGF5ZXIuZ2V0KCksIGJvcmRlckNvbG9yKTsKKyAgICAg
ICAgQ0dDb2xvclJlbGVhc2UoYm9yZGVyQ29sb3IpOworICAgICAgICBDQUNGTGF5ZXJTZXRCb3Jk
ZXJXaWR0aChuZXdMYXllci5nZXQoKSwgMik7CisgICAgfQorfQorCit2b2lkIFBsYXRmb3JtQ0FM
YXllcldpbkludGVybmFsOjpyZW1vdmVUaWxlKCkKK3sKKyAgICBDQUNGTGF5ZXJSZW1vdmVGcm9t
U3VwZXJsYXllcih0aWxlQXRJbmRleCh0aWxlQ291bnQoKSAtIDEpKTsKK30KKworQ0FDRkxheWVy
UmVmIFBsYXRmb3JtQ0FMYXllcldpbkludGVybmFsOjp0aWxlQXRJbmRleChpbnQgaW5kZXgpCit7
CisgICAgQ0ZBcnJheVJlZiBzdWJsYXllcnMgPSBDQUNGTGF5ZXJHZXRTdWJsYXllcnMobV90aWxl
UGFyZW50LmdldCgpKTsKKyAgICBpZiAoIXN1YmxheWVycyB8fCBpbmRleCA8IDAgfHwgaW5kZXgg
Pj0gdGlsZUNvdW50KCkpCisgICAgICAgIHJldHVybiAwOworICAgIAorICAgIHJldHVybiBzdGF0
aWNfY2FzdDxDQUNGTGF5ZXJSZWY+KGNvbnN0X2Nhc3Q8dm9pZCo+KENGQXJyYXlHZXRWYWx1ZUF0
SW5kZXgoc3VibGF5ZXJzLCBpbmRleCkpKTsKK30KKworaW50IFBsYXRmb3JtQ0FMYXllcldpbklu
dGVybmFsOjp0aWxlQ291bnQoKSBjb25zdAoreworICAgIENGQXJyYXlSZWYgc3VibGF5ZXJzID0g
Q0FDRkxheWVyR2V0U3VibGF5ZXJzKG1fdGlsZVBhcmVudC5nZXQoKSk7CisgICAgcmV0dXJuIHN1
YmxheWVycyA/IENGQXJyYXlHZXRDb3VudChzdWJsYXllcnMpIDogMDsKK30KKwordm9pZCBQbGF0
Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbDo6dXBkYXRlVGlsZXMoKQoreworICAgIC8vIEZJWE1FOiBJ
biBhZGRpdGlvbiB0byByZWRvaW5nIHRoZSBudW1iZXIgb2YgdGlsZXMsIHdlIG5lZWQgdG8gb25s
eSByZW5kZXIgYW5kIGhhdmUgYmFja2luZworICAgIC8vIHN0b3JlIGZvciB2aXNpYmxlIGxheWVy
cworICAgIGludCBudW1UaWxlc0hvcml6b250YWwgPSBjZWlsKG1fY29uc3RyYWluZWRTaXplLndp
ZHRoIC8gbV90aWxlU2l6ZS53aWR0aCk7CisgICAgaW50IG51bVRpbGVzVmVydGljYWwgPSBjZWls
KG1fY29uc3RyYWluZWRTaXplLmhlaWdodCAvIG1fdGlsZVNpemUuaGVpZ2h0KTsKKyAgICBpbnQg
bnVtVGlsZXNUb3RhbCA9IG51bVRpbGVzSG9yaXpvbnRhbCAqIG51bVRpbGVzVmVydGljYWw7CisK
KyAgICBpbnQgbnVtVGlsZXNUb0NoYW5nZSA9IG51bVRpbGVzVG90YWwgLSB0aWxlQ291bnQoKTsK
KyAgICBpZiAobnVtVGlsZXNUb0NoYW5nZSA+PSAwKSB7CisgICAgICAgIC8vIEFkZCBuZXcgdGls
ZXMKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1UaWxlc1RvQ2hhbmdlOyArK2kpCisg
ICAgICAgICAgICBhZGRUaWxlKCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gUmVtb3ZlIG9s
ZCB0aWxlcworICAgICAgICBudW1UaWxlc1RvQ2hhbmdlID0gLW51bVRpbGVzVG9DaGFuZ2U7Cisg
ICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtVGlsZXNUb0NoYW5nZTsgKytpKQorICAgICAg
ICAgICAgcmVtb3ZlVGlsZSgpOworICAgIH0KKworICAgIC8vIFNldCBjb29yZGluYXRlcyBmb3Ig
YWxsIHRpbGVzCisgICAgQ0ZBcnJheVJlZiB0aWxlQXJyYXkgPSBDQUNGTGF5ZXJHZXRTdWJsYXll
cnMobV90aWxlUGFyZW50LmdldCgpKTsKKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtVGls
ZXNIb3Jpem9udGFsOyArK2kpIHsKKyAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBudW1UaWxl
c1ZlcnRpY2FsOyArK2opIHsKKyAgICAgICAgICAgIENBQ0ZMYXllclJlZiB0aWxlID0gc3RhdGlj
X2Nhc3Q8Q0FDRkxheWVyUmVmPihjb25zdF9jYXN0PHZvaWQqPihDRkFycmF5R2V0VmFsdWVBdElu
ZGV4KHRpbGVBcnJheSwgaSAqIG51bVRpbGVzVmVydGljYWwgKyBqKSkpOworICAgICAgICAgICAg
Q0FDRkxheWVyU2V0UG9zaXRpb24odGlsZSwgQ0dQb2ludE1ha2UoaSAqIG1fdGlsZVNpemUud2lk
dGgsIGogKiBtX3RpbGVTaXplLmhlaWdodCkpOworICAgICAgICAgICAgaW50IHdpZHRoID0gbWlu
KG1fdGlsZVNpemUud2lkdGgsIG1fY29uc3RyYWluZWRTaXplLndpZHRoIC0gaSAqIG1fdGlsZVNp
emUud2lkdGgpOworICAgICAgICAgICAgaW50IGhlaWdodCA9IG1pbihtX3RpbGVTaXplLmhlaWdo
dCwgbV9jb25zdHJhaW5lZFNpemUuaGVpZ2h0IC0gaiAqIG1fdGlsZVNpemUuaGVpZ2h0KTsKKyAg
ICAgICAgICAgIENBQ0ZMYXllclNldEJvdW5kcyh0aWxlLCBDR1JlY3RNYWtlKGkgKiBtX3RpbGVT
aXplLndpZHRoLCBqICogbV90aWxlU2l6ZS5oZWlnaHQsIHdpZHRoLCBoZWlnaHQpKTsKKworICAg
ICAgICAgICAgLy8gRmxpcCBZIHRvIGNvbXBlbnNhdGUgZm9yIHRoZSBmbGlwcGluZyB0aGF0IGhh
cHBlbnMgZHVyaW5nIHJlbmRlciB0byBtYXRjaCB0aGUgQ0cgY29udGV4dCBjb29yZGluYXRlIHNw
YWNlCisgICAgICAgICAgICBDQVRyYW5zZm9ybTNEIHRyYW5zZm9ybSA9IENBVHJhbnNmb3JtM0RN
YWtlU2NhbGUoMSwgLTEsIDEpOworICAgICAgICAgICAgQ0FUcmFuc2Zvcm0zRFRyYW5zbGF0ZSh0
cmFuc2Zvcm0sIDAsIGhlaWdodCwgMCk7CisgICAgICAgICAgICBDQUNGTGF5ZXJTZXRUcmFuc2Zv
cm0odGlsZSwgdHJhbnNmb3JtKTsKKworI2lmbmRlZiBOREVCVUcKKyAgICAgICAgICAgIFN0cmlu
ZyBuYW1lID0gIlRpbGUgKCIgKyBTdHJpbmc6Om51bWJlcihpKSArICIsIiArIFN0cmluZzo6bnVt
YmVyKGopICsgIikiOworICAgICAgICAgICAgQ0FDRkxheWVyU2V0TmFtZSh0aWxlLCBSZXRhaW5Q
dHI8Q0ZTdHJpbmdSZWY+KEFkb3B0Q0YsIG5hbWUuY3JlYXRlQ0ZTdHJpbmcoKSkuZ2V0KCkpOwor
I2VuZGlmCisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyV2luSW50
ZXJuYWw6OmRyYXdUaWxlKENBQ0ZMYXllclJlZiB0aWxlLCBDR0NvbnRleHRSZWYgY29udGV4dCkK
K3sKKyAgICBDR1BvaW50IHRpbGVQb3NpdGlvbiA9IENBQ0ZMYXllckdldFBvc2l0aW9uKHRpbGUp
OworICAgIENHUmVjdCB0aWxlQm91bmRzID0gQ0FDRkxheWVyR2V0Qm91bmRzKHRpbGUpOworCisg
ICAgQ0dDb250ZXh0U2F2ZUdTdGF0ZShjb250ZXh0KTsKKworICAgIC8vIFRyYW5zZm9ybSBjb250
ZXh0IHRvIGJlIGF0IHRoZSBvcmlnaW4gb2YgdGhlIHBhcmVudCBsYXllcgorICAgIENHQ29udGV4
dFRyYW5zbGF0ZUNUTShjb250ZXh0LCAtdGlsZVBvc2l0aW9uLngsIC10aWxlUG9zaXRpb24ueSk7
CisKKyAgICAvLyBTZXQgdGhlIGNvbnRleHQgY2xpcHBpbmcgcmVjdGFuZ2xlIHRvIHRoZSBjdXJy
ZW50IHRpbGUKKyAgICBDR0NvbnRleHRDbGlwVG9SZWN0KGNvbnRleHQsIENHUmVjdE1ha2UodGls
ZVBvc2l0aW9uLngsIHRpbGVQb3NpdGlvbi55LCB0aWxlQm91bmRzLnNpemUud2lkdGgsIHRpbGVC
b3VuZHMuc2l6ZS5oZWlnaHQpKTsKKworICAgIGlmIChvd25lcigpLT5vd25lcigpLT5wbGF0Zm9y
bUNBTGF5ZXJDb250ZW50c09yaWVudGF0aW9uKCkgPT0gV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6
Q29tcG9zaXRpbmdDb29yZGluYXRlc1RvcERvd24pIHsKKyAgICAgICAgLy8gSWYgdGhlIGxheWVy
IGlzIHJlbmRlcmluZyB0b3AtZG93biwgaXQgd2lsbCBmbGlwIHRoZSBjb29yZGluYXRlcyBpbiB5
LiBUaWxlZCBsYXllcnMgYXJlCisgICAgICAgIC8vIGFscmVhZHkgZmxpcHBpbmcsIHNvIHdlIG5l
ZWQgdG8gdW5kbyB0aGF0IGhlcmUuCisgICAgICAgIENHQ29udGV4dFRyYW5zbGF0ZUNUTShjb250
ZXh0LCAwLCBvd25lcigpLT5ib3VuZHMoKS5oZWlnaHQoKSk7CisgICAgICAgIENHQ29udGV4dFNj
YWxlQ1RNKGNvbnRleHQsIDEsIC0xKTsKKyAgICB9CisKKyAgICAvLyBEcmF3IHRoZSB0aWxlCisg
ICAgZGlzcGxheUNhbGxiYWNrKG93bmVyKCktPnBsYXRmb3JtTGF5ZXIoKSwgY29udGV4dCk7CisK
KyAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKGNvbnRleHQpOworfQorCisjZW5kaWYgLy8gVVNF
KEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCShyZXZpc2lvbiAw
KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2lu
LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3MTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKworI2luY2x1ZGUgIlBsYXRmb3Jt
Q0FMYXllci5oIgorCisjaW5jbHVkZSAiRm9udC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4
dC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtQ0FMYXllcldpbkludGVybmFsLmgiCisjaW5jbHVkZSAi
V0tDQUNGTGF5ZXJSZW5kZXJlci5oIgorI2luY2x1ZGUgPFF1YXJ0ekNvcmUvQ0FDRkFuaW1hdGlv
bi5oPgorI2luY2x1ZGUgPFF1YXJ0ekNvcmUvQ0FDRkNvbnRleHQuaD4KKyNpbmNsdWRlIDxRdWFy
dHpDb3JlL0NBQ0ZMYXllci5oPgorI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK2Jv
b2wgUGxhdGZvcm1DQUxheWVyOjppc1ZhbHVlRnVuY3Rpb25TdXBwb3J0ZWQoKQoreworICAgIHJl
dHVybiB0cnVlOworfQorCit2b2lkIFBsYXRmb3JtQ0FMYXllcjo6c2V0T3duZXIoUGxhdGZvcm1D
QUxheWVyQ2xpZW50KiBvd25lcikKK3sKKyAgICBtX293bmVyID0gb3duZXI7Cit9CisKK3N0YXRp
YyBDRlN0cmluZ1JlZiB0b0NBQ0ZMYXllclR5cGUoUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGUg
dHlwZSkKK3sKKyAgICByZXR1cm4gKHR5cGUgPT0gUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVU
cmFuc2Zvcm1MYXllcikgPyBrQ0FDRlRyYW5zZm9ybUxheWVyIDoga0NBQ0ZMYXllcjsKK30KKwor
c3RhdGljIENGU3RyaW5nUmVmIHRvQ0FDRkZpbHRlclR5cGUoUGxhdGZvcm1DQUxheWVyOjpGaWx0
ZXJUeXBlIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBQbGF0Zm9ybUNB
TGF5ZXI6OkxpbmVhcjogcmV0dXJuIGtDQUNGRmlsdGVyTGluZWFyOworICAgIGNhc2UgUGxhdGZv
cm1DQUxheWVyOjpOZWFyZXN0OiByZXR1cm4ga0NBQ0ZGaWx0ZXJOZWFyZXN0OworICAgIGNhc2Ug
UGxhdGZvcm1DQUxheWVyOjpUcmlsaW5lYXI6IHJldHVybiBrQ0FDRkZpbHRlclRyaWxpbmVhcjsK
KyAgICBkZWZhdWx0OiByZXR1cm4gMDsKKyAgICB9Cit9CisKK3N0YXRpYyBXS0NBQ0ZMYXllclJl
bmRlcmVyKiByZW5kZXJlckZvckxheWVyKGNvbnN0IFBsYXRmb3JtQ0FMYXllciogbGF5ZXIpCit7
CisgICAgLy8gV2UgbmVlZCB0aGUgV0tDQUNGTGF5ZXJSZW5kZXJlciBhc3NvY2lhdGVkIHdpdGgg
dGhpcyBsYXllciwgd2hpY2ggaXMgc3RvcmVkIGluIHRoZSBVc2VyRGF0YSBvZiB0aGUgQ0FDRkNv
bnRleHQKKyAgICBDQUNGQ29udGV4dFJlZiBjb250ZXh0ID0gQ0FDRkxheWVyR2V0Q29udGV4dChs
YXllci0+cGxhdGZvcm1MYXllcigpKTsKKyAgICBpZiAoIWNvbnRleHQpCisgICAgICAgIHJldHVy
biAwOworCisgICAgV0tDQUNGTGF5ZXJSZW5kZXJlciogcmVuZGVyZXIgPSBzdGF0aWNfY2FzdDxX
S0NBQ0ZMYXllclJlbmRlcmVyKj4oQ0FDRkNvbnRleHRHZXRVc2VyRGF0YShjb250ZXh0KSk7Cisg
ICAgQVNTRVJUKHJlbmRlcmVyKTsKKyAgICByZXR1cm4gcmVuZGVyZXI7Cit9CisKK3N0YXRpYyBQ
bGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbCogaW50ZXJuKGNvbnN0IFBsYXRmb3JtQ0FMYXllciog
bGF5ZXIpCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFBsYXRmb3JtQ0FMYXllcldpbkludGVy
bmFsKj4oQ0FDRkxheWVyR2V0VXNlckRhdGEobGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSkpOworfQor
CitzdGF0aWMgUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWwqIGludGVybih2b2lkKiBsYXllcikK
K3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWwqPihD
QUNGTGF5ZXJHZXRVc2VyRGF0YShzdGF0aWNfY2FzdDxDQUNGTGF5ZXJSZWY+KGxheWVyKSkpOwor
fQorCitQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gUGxhdGZvcm1DQUxheWVyOjpjcmVhdGUo
TGF5ZXJUeXBlIGxheWVyVHlwZSwgUGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd25lcikKK3sKKyAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFBsYXRmb3JtQ0FMYXllcihsYXllclR5cGUsIDAsIG93bmVy
KSk7Cit9CisKK1Bhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBQbGF0Zm9ybUNBTGF5ZXI6OmNy
ZWF0ZSh2b2lkKiBwbGF0Zm9ybUxheWVyLCBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVyKQor
eworICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGxhdGZvcm1DQUxheWVyKExheWVyVHlwZUN1c3Rv
bSwgc3RhdGljX2Nhc3Q8UGxhdGZvcm1MYXllcio+KHBsYXRmb3JtTGF5ZXIpLCBvd25lcikpOwor
fQorCitzdGF0aWMgdm9pZCBkaXNwbGF5Q2FsbGJhY2soQ0FDRkxheWVyUmVmIGNhTGF5ZXIsIENH
Q29udGV4dFJlZiBjb250ZXh0KQoreworICAgIEFTU0VSVF9BUkcoY2FMYXllciwgQ0FDRkxheWVy
R2V0VXNlckRhdGEoY2FMYXllcikpOworICAgIGludGVybihjYUxheWVyKS0+ZGlzcGxheUNhbGxi
YWNrKGNhTGF5ZXIsIGNvbnRleHQpOworfQorCitzdGF0aWMgdm9pZCBsYXlvdXRTdWJsYXllcnNQ
cm9jKENBQ0ZMYXllclJlZiBjYUxheWVyKSAKK3sKKyAgICBQbGF0Zm9ybUNBTGF5ZXIqIGxheWVy
ID0gUGxhdGZvcm1DQUxheWVyOjpwbGF0Zm9ybUNBTGF5ZXIoY2FMYXllcik7CisgICAgaWYgKGxh
eWVyICYmIGxheWVyLT5vd25lcigpKQorICAgICAgICBsYXllci0+b3duZXIoKS0+cGxhdGZvcm1D
QUxheWVyTGF5b3V0U3VibGF5ZXJzT2ZMYXllcihsYXllcik7Cit9CisKK1BsYXRmb3JtQ0FMYXll
cjo6UGxhdGZvcm1DQUxheWVyKExheWVyVHlwZSBsYXllclR5cGUsIFBsYXRmb3JtTGF5ZXIqIGxh
eWVyLCBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVyKQorICAgIDogbV9vd25lcihvd25lcikK
K3sKKyAgICBpZiAobGF5ZXIpIHsKKyAgICAgICAgbV9sYXllclR5cGUgPSBMYXllclR5cGVDdXN0
b207CisgICAgICAgIG1fbGF5ZXIgPSBsYXllcjsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2xh
eWVyVHlwZSA9IGxheWVyVHlwZTsKKyAgICAgICAgbV9sYXllci5hZG9wdENGKENBQ0ZMYXllckNy
ZWF0ZSh0b0NBQ0ZMYXllclR5cGUobGF5ZXJUeXBlKSkpOworCisgICAgICAgIC8vIENyZWF0ZSB0
aGUgUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWwgb2JqZWN0IGFuZCBwb2ludCB0byBpdCBpbiB0
aGUgdXNlcmRhdGEuCisgICAgICAgIFBsYXRmb3JtQ0FMYXllcldpbkludGVybmFsKiBpbnRlcm4g
PSBuZXcgUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWwodGhpcyk7CisgICAgICAgIENBQ0ZMYXll
clNldFVzZXJEYXRhKG1fbGF5ZXIuZ2V0KCksIGludGVybik7CisKKyAgICAgICAgLy8gU2V0IHRo
ZSBkaXNwbGF5IGNhbGxiYWNrCisgICAgICAgIENBQ0ZMYXllclNldERpc3BsYXlDYWxsYmFjayht
X2xheWVyLmdldCgpLCBkaXNwbGF5Q2FsbGJhY2spOworICAgICAgICBDQUNGTGF5ZXJTZXRMYXlv
dXRDYWxsYmFjayhtX2xheWVyLmdldCgpLCBsYXlvdXRTdWJsYXllcnNQcm9jKTsgICAgCisgICAg
fQorfQorCitQbGF0Zm9ybUNBTGF5ZXI6On5QbGF0Zm9ybUNBTGF5ZXIoKQoreworICAgIC8vIFRv
c3MgYWxsIHRoZSBraWRzCisgICAgcmVtb3ZlQWxsU3VibGF5ZXJzKCk7CisKKyAgICAvLyBHZXQg
cmlkIG9mIHRoZSB1c2VyIGRhdGEKKyAgICBQbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbCogbGF5
ZXJJbnRlcm4gPSBpbnRlcm4odGhpcyk7CisgICAgQ0FDRkxheWVyU2V0VXNlckRhdGEobV9sYXll
ci5nZXQoKSwgMCk7CisKKyAgICBkZWxldGUgbGF5ZXJJbnRlcm47Cit9CisKK1BsYXRmb3JtQ0FM
YXllciogUGxhdGZvcm1DQUxheWVyOjpwbGF0Zm9ybUNBTGF5ZXIodm9pZCogcGxhdGZvcm1MYXll
cikKK3sKKyAgICBpZiAoIXBsYXRmb3JtTGF5ZXIpCisgICAgICAgIHJldHVybiAwOworICAgIAor
ICAgIFBsYXRmb3JtQ0FMYXllcldpbkludGVybmFsKiBsYXllckludGVybiA9IGludGVybihwbGF0
Zm9ybUxheWVyKTsKKyAgICByZXR1cm4gbGF5ZXJJbnRlcm4gPyBsYXllckludGVybi0+b3duZXIo
KSA6IDA7Cit9CisKK1BsYXRmb3JtTGF5ZXIqIFBsYXRmb3JtQ0FMYXllcjo6cGxhdGZvcm1MYXll
cigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbGF5ZXIuZ2V0KCk7Cit9CisKK1BsYXRmb3JtQ0FM
YXllciogUGxhdGZvcm1DQUxheWVyOjpyb290TGF5ZXIoKSBjb25zdAoreworICAgIFdLQ0FDRkxh
eWVyUmVuZGVyZXIqIHJlbmRlcmVyID0gcmVuZGVyZXJGb3JMYXllcih0aGlzKTsKKyAgICByZXR1
cm4gcmVuZGVyZXIgPyByZW5kZXJlci0+cm9vdExheWVyKCkgOiAwOworfQorCit2b2lkIFBsYXRm
b3JtQ0FMYXllcjo6c2V0TmVlZHNEaXNwbGF5KGNvbnN0IEZsb2F0UmVjdCogZGlydHlSZWN0KQor
eworICAgIGludGVybih0aGlzKS0+c2V0TmVlZHNEaXNwbGF5KGRpcnR5UmVjdCk7Cit9CisgICAg
Cit2b2lkIFBsYXRmb3JtQ0FMYXllcjo6c2V0TmVlZHNDb21taXQoKQoreworICAgIFdLQ0FDRkxh
eWVyUmVuZGVyZXIqIHJlbmRlcmVyID0gcmVuZGVyZXJGb3JMYXllcih0aGlzKTsKKyAgICBpZiAo
cmVuZGVyZXIpCisgICAgICAgIHJlbmRlcmVyLT5sYXllclRyZWVEaWRDaGFuZ2UoKTsKK30KKwor
dm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OnNldENvbnRlbnRzQ2hhbmdlZCgpCit7CisgICAgLy8gRklY
TUU6IFRoZXJlIGlzIG5vIGVxdWl2YWxlbnQgb2Ygc2V0Q29udGVudHNDaGFuZ2VkIGluIENBQ0Yu
IEZvciBub3cgSSB3aWxsCisgICAgLy8gc2V0IGNvbnRlbnRzIHRvIDAgYW5kIHRoZW4gYmFjayB0
byBpdHMgb3JpZ2luYWwgdmFsdWUgdG8gc2VlIGlmIHRoYXQKKyAgICAvLyBraWNrcyBDQUNGIGlu
dG8gcmVkaXNwbGF5aW5nLgorICAgIFJldGFpblB0cjxDRlR5cGVSZWY+IGNvbnRlbnRzID0gQ0FD
RkxheWVyR2V0Q29udGVudHMobV9sYXllci5nZXQoKSk7CisgICAgQ0FDRkxheWVyU2V0Q29udGVu
dHMobV9sYXllci5nZXQoKSwgMCk7CisgICAgQ0FDRkxheWVyU2V0Q29udGVudHMobV9sYXllci5n
ZXQoKSwgY29udGVudHMuZ2V0KCkpOworICAgIHNldE5lZWRzQ29tbWl0KCk7Cit9CisKK3ZvaWQg
UGxhdGZvcm1DQUxheWVyOjpzZXROZWVkc0xheW91dCgpCit7CisgICAgaWYgKCFtX293bmVyIHx8
ICFtX293bmVyLT5wbGF0Zm9ybUNBTGF5ZXJSZXNwb25kc1RvTGF5b3V0Q2hhbmdlcygpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBDQUNGTGF5ZXJTZXROZWVkc0xheW91dChtX2xheWVyLmdldCgp
KTsKKyAgICBzZXROZWVkc0NvbW1pdCgpOworfQorCitQbGF0Zm9ybUNBTGF5ZXIqIFBsYXRmb3Jt
Q0FMYXllcjo6c3VwZXJsYXllcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHBsYXRmb3JtQ0FMYXll
cihDQUNGTGF5ZXJHZXRTdXBlcmxheWVyKG1fbGF5ZXIuZ2V0KCkpKTsKK30KKwordm9pZCBQbGF0
Zm9ybUNBTGF5ZXI6OnJlbW92ZUZyb21TdXBlcmxheWVyKCkKK3sKKyAgICBDQUNGTGF5ZXJSZW1v
dmVGcm9tU3VwZXJsYXllcihtX2xheWVyLmdldCgpKTsKKyAgICBzZXROZWVkc0NvbW1pdCgpOwor
fQorCit2b2lkIFBsYXRmb3JtQ0FMYXllcjo6c2V0U3VibGF5ZXJzKGNvbnN0IFBsYXRmb3JtQ0FM
YXllckxpc3QmIGxpc3QpCit7CisgICAgaW50ZXJuKHRoaXMpLT5zZXRTdWJsYXllcnMobGlzdCk7
Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyOjpyZW1vdmVBbGxTdWJsYXllcnMoKQoreworICAg
IGludGVybih0aGlzKS0+cmVtb3ZlQWxsU3VibGF5ZXJzKCk7Cit9CisKK3ZvaWQgUGxhdGZvcm1D
QUxheWVyOjphcHBlbmRTdWJsYXllcihQbGF0Zm9ybUNBTGF5ZXIqIGxheWVyKQoreworICAgIC8v
IFRoaXMgbXVzdCBiZSBpbiB0ZXJtcyBvZiBpbnNlcnRTdWJsYXllciBpbnN0ZWFkIG9mIGEgZGly
ZWN0IGNhbGwgc28gUGxhdGZvcm1DQUxheWVySW50ZXJuYWwgY2FuIG92ZXJyaWRlLgorICAgIGlu
c2VydFN1YmxheWVyKGxheWVyLCBzdWJsYXllckNvdW50KCkpOworfQorCit2b2lkIFBsYXRmb3Jt
Q0FMYXllcjo6aW5zZXJ0U3VibGF5ZXIoUGxhdGZvcm1DQUxheWVyKiBsYXllciwgc2l6ZV90IGlu
ZGV4KQoreworICAgIGludGVybih0aGlzKS0+aW5zZXJ0U3VibGF5ZXIobGF5ZXIsIGluZGV4KTsK
K30KKwordm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OnJlcGxhY2VTdWJsYXllcihQbGF0Zm9ybUNBTGF5
ZXIqIHJlZmVyZW5jZSwgUGxhdGZvcm1DQUxheWVyKiBuZXdMYXllcikKK3sKKyAgICAvLyBUaGlz
IG11c3Qgbm90IHVzZSBkaXJlY3QgY2FsbHMgdG8gYWxsb3cgUGxhdGZvcm1DQUxheWVySW50ZXJu
YWwgdG8gb3ZlcnJpZGUuCisgICAgQVNTRVJUX0FSRyhyZWZlcmVuY2UsIHJlZmVyZW5jZSk7Cisg
ICAgQVNTRVJUX0FSRyhyZWZlcmVuY2UsIHJlZmVyZW5jZS0+c3VwZXJsYXllcigpID09IHRoaXMp
OworCisgICAgaWYgKHJlZmVyZW5jZSA9PSBuZXdMYXllcikKKyAgICAgICAgcmV0dXJuOworCisg
ICAgaW50IHJlZmVyZW5jZUluZGV4ID0gaW50ZXJuKHRoaXMpLT5pbmRleE9mU3VibGF5ZXIocmVm
ZXJlbmNlKTsKKyAgICBBU1NFUlQocmVmZXJlbmNlSW5kZXggIT0gLTEpOworICAgIGlmIChyZWZl
cmVuY2VJbmRleCA9PSAtMSkKKyAgICAgICAgcmV0dXJuOworCisgICAgcmVmZXJlbmNlLT5yZW1v
dmVGcm9tU3VwZXJsYXllcigpOworCisgICAgaWYgKG5ld0xheWVyKSB7CisgICAgICAgIG5ld0xh
eWVyLT5yZW1vdmVGcm9tU3VwZXJsYXllcigpOworICAgICAgICBpbnNlcnRTdWJsYXllcihuZXdM
YXllciwgcmVmZXJlbmNlSW5kZXgpOworICAgIH0KK30KKworc2l6ZV90IFBsYXRmb3JtQ0FMYXll
cjo6c3VibGF5ZXJDb3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGludGVybih0aGlzKS0+c3Vi
bGF5ZXJDb3VudCgpOworfQorCit2b2lkIFBsYXRmb3JtQ0FMYXllcjo6YWRvcHRTdWJsYXllcnMo
UGxhdGZvcm1DQUxheWVyKiBzb3VyY2UpCit7CisgICAgLy8gTWFrZSBhIGxpc3Qgb2YgdGhlIHN1
YmxheWVycyBmcm9tIHNvdXJjZQorICAgIFBsYXRmb3JtQ0FMYXllckxpc3Qgc3VibGF5ZXJzOwor
ICAgIHNpemVfdCBuID0gc291cmNlLT5zdWJsYXllckNvdW50KCk7CisgICAgQ0ZBcnJheVJlZiBz
b3VyY2VTdWJsYXllcnMgPSBDQUNGTGF5ZXJHZXRTdWJsYXllcnMoc291cmNlLT5wbGF0Zm9ybUxh
eWVyKCkpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBuOyArK2kpIHsKKyAgICAgICAg
Q0FDRkxheWVyUmVmIGxheWVyID0gc3RhdGljX2Nhc3Q8Q0FDRkxheWVyUmVmPihjb25zdF9jYXN0
PHZvaWQqPihDRkFycmF5R2V0VmFsdWVBdEluZGV4KHNvdXJjZVN1YmxheWVycywgaSkpKTsKKyAg
ICAgICAgc3VibGF5ZXJzLmFwcGVuZChwbGF0Zm9ybUNBTGF5ZXIobGF5ZXIpKTsKKyAgICB9CisK
KyAgICAvLyBVc2Ugc2V0U3VibGF5ZXJzKCkgYmVjYXVzZSBpdCBwcm9wZXJseSBudWxscyBvdXQg
dGhlIHN1cGVybGF5ZXIgcG9pbnRlcnMuCisgICAgc2V0U3VibGF5ZXJzKHN1YmxheWVycyk7Cit9
CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyOjphZGRBbmltYXRpb25Gb3JLZXkoY29uc3QgU3RyaW5n
JiBrZXksIFBsYXRmb3JtQ0FBbmltYXRpb24qIGFuaW1hdGlvbikKK3sKKyAgICAvLyBBZGQgaXQg
dG8gdGhlIGFuaW1hdGlvbiBsaXN0CisgICAgbV9hbmltYXRpb25zLmFkZChrZXksIGFuaW1hdGlv
bik7CisKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHMoQWRvcHRDRiwga2V5LmNyZWF0ZUNG
U3RyaW5nKCkpOworICAgIENBQ0ZMYXllckFkZEFuaW1hdGlvbihtX2xheWVyLmdldCgpLCBzLmdl
dCgpLCBhbmltYXRpb24tPnBsYXRmb3JtQW5pbWF0aW9uKCkpOworICAgIHNldE5lZWRzQ29tbWl0
KCk7CisKKyAgICAvLyBUZWxsIHRoZSByZW5kZXJlciBhYm91dCBpdCBzbyB3ZSBjYW4gZmlyZSB0
aGUgc3RhcnQgYW5pbWF0aW9uIGV2ZW50CisgICAgV0tDQUNGTGF5ZXJSZW5kZXJlciogcmVuZGVy
ZXIgPSByZW5kZXJlckZvckxheWVyKHRoaXMpOworICAgIGlmIChyZW5kZXJlcikKKyAgICAgICAg
cmVuZGVyZXItPmFkZFBlbmRpbmdBbmltYXRlZExheWVyKHRoaXMpOworfQorCit2b2lkIFBsYXRm
b3JtQ0FMYXllcjo6cmVtb3ZlQW5pbWF0aW9uRm9yS2V5KGNvbnN0IFN0cmluZyYga2V5KQorewor
ICAgIC8vIFJlbW92ZSBpdCBmcm9tIHRoZSBhbmltYXRpb24gbGlzdAorICAgIG1fYW5pbWF0aW9u
cy5yZW1vdmUoa2V5KTsKKworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcyhBZG9wdENGLCBr
ZXkuY3JlYXRlQ0ZTdHJpbmcoKSk7CisgICAgQ0FDRkxheWVyUmVtb3ZlQW5pbWF0aW9uKG1fbGF5
ZXIuZ2V0KCksIHMuZ2V0KCkpOworCisgICAgLy8gV2UgZG9uJ3QgInJlbW92ZSIgYSBsYXllciBm
cm9tIFdLQ0FDRkxheWVyUmVuZGVyZXIgd2hlbiBpdCBsb3NlcyBhbiBhbmltYXRpb24uCisgICAg
Ly8gVGhlcmUgbWF5IGJlIG90aGVyIGFjdGl2ZSBhbmltYXRpb25zIG9uIHRoZSBsYXllciBhbmQg
aWYgYW4gYW5pbWF0aW9uCisgICAgLy8gY2FsbGJhY2sgaXMgZmlyZWQgb24gYSBsYXllciB3aXRo
b3V0IGFueSBhbmltYXRpb25zIG5vIGhhcm0gaXMgZG9uZS4KKworICAgIHNldE5lZWRzQ29tbWl0
KCk7Cit9CisKK1Bhc3NSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gUGxhdGZvcm1DQUxheWVy
OjphbmltYXRpb25Gb3JLZXkoY29uc3QgU3RyaW5nJiBrZXkpCit7CisgICAgSGFzaE1hcDxTdHJp
bmcsIFJlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiA+OjppdGVyYXRvciBpdCA9IG1fYW5pbWF0
aW9ucy5maW5kKGtleSk7CisgICAgaWYgKGl0ID09IG1fYW5pbWF0aW9ucy5lbmQoKSkKKyAgICAg
ICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gaXQtPnNlY29uZDsKK30KKworUGxhdGZvcm1DQUxh
eWVyKiBQbGF0Zm9ybUNBTGF5ZXI6Om1hc2soKSBjb25zdAoreworICAgIHJldHVybiBwbGF0Zm9y
bUNBTGF5ZXIoQ0FDRkxheWVyR2V0TWFzayhtX2xheWVyLmdldCgpKSk7Cit9CisKK3ZvaWQgUGxh
dGZvcm1DQUxheWVyOjpzZXRNYXNrKFBsYXRmb3JtQ0FMYXllciogbGF5ZXIpCit7CisgICAgQ0FD
RkxheWVyU2V0TWFzayhtX2xheWVyLmdldCgpLCBsYXllciA/IGxheWVyLT5wbGF0Zm9ybUxheWVy
KCkgOiAwKTsKKyAgICBzZXROZWVkc0NvbW1pdCgpOworfQorCitib29sIFBsYXRmb3JtQ0FMYXll
cjo6aXNPcGFxdWUoKSBjb25zdAoreworICAgIHJldHVybiBDQUNGTGF5ZXJJc09wYXF1ZShtX2xh
eWVyLmdldCgpKTsKK30KKwordm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OnNldE9wYXF1ZShib29sIHZh
bHVlKQoreworICAgIENBQ0ZMYXllclNldE9wYXF1ZShtX2xheWVyLmdldCgpLCB2YWx1ZSk7Cisg
ICAgc2V0TmVlZHNDb21taXQoKTsKK30KKworRmxvYXRSZWN0IFBsYXRmb3JtQ0FMYXllcjo6Ym91
bmRzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gQ0FDRkxheWVyR2V0Qm91bmRzKG1fbGF5ZXIuZ2V0
KCkpOworfQorCit2b2lkIFBsYXRmb3JtQ0FMYXllcjo6c2V0Qm91bmRzKGNvbnN0IEZsb2F0UmVj
dCYgdmFsdWUpCit7CisgICAgaW50ZXJuKHRoaXMpLT5zZXRCb3VuZHModmFsdWUpOworICAgIHNl
dE5lZWRzTGF5b3V0KCk7Cit9CisKK0Zsb2F0UG9pbnQzRCBQbGF0Zm9ybUNBTGF5ZXI6OnBvc2l0
aW9uKCkgY29uc3QKK3sKKyAgICBDR1BvaW50IHBvaW50ID0gQ0FDRkxheWVyR2V0UG9zaXRpb24o
bV9sYXllci5nZXQoKSk7CisgICAgcmV0dXJuIEZsb2F0UG9pbnQzRChwb2ludC54LCBwb2ludC55
LCBDQUNGTGF5ZXJHZXRaUG9zaXRpb24obV9sYXllci5nZXQoKSkpOworfQorCit2b2lkIFBsYXRm
b3JtQ0FMYXllcjo6c2V0UG9zaXRpb24oY29uc3QgRmxvYXRQb2ludDNEJiB2YWx1ZSkKK3sKKyAg
ICBDQUNGTGF5ZXJTZXRQb3NpdGlvbihtX2xheWVyLmdldCgpLCBDR1BvaW50TWFrZSh2YWx1ZS54
KCksIHZhbHVlLnkoKSkpOworICAgIENBQ0ZMYXllclNldFpQb3NpdGlvbihtX2xheWVyLmdldCgp
LCB2YWx1ZS56KCkpOworICAgIHNldE5lZWRzQ29tbWl0KCk7Cit9CisKK0Zsb2F0UG9pbnQzRCBQ
bGF0Zm9ybUNBTGF5ZXI6OmFuY2hvclBvaW50KCkgY29uc3QKK3sKKyAgICBDR1BvaW50IHBvaW50
ID0gQ0FDRkxheWVyR2V0QW5jaG9yUG9pbnQobV9sYXllci5nZXQoKSk7CisgICAgZmxvYXQgeiA9
IENBQ0ZMYXllckdldEFuY2hvclBvaW50WihtX2xheWVyLmdldCgpKTsKKyAgICByZXR1cm4gRmxv
YXRQb2ludDNEKHBvaW50LngsIHBvaW50LnksIHopOworfQorCit2b2lkIFBsYXRmb3JtQ0FMYXll
cjo6c2V0QW5jaG9yUG9pbnQoY29uc3QgRmxvYXRQb2ludDNEJiB2YWx1ZSkKK3sKKyAgICBDQUNG
TGF5ZXJTZXRBbmNob3JQb2ludChtX2xheWVyLmdldCgpLCBDR1BvaW50TWFrZSh2YWx1ZS54KCks
IHZhbHVlLnkoKSkpOworICAgIENBQ0ZMYXllclNldEFuY2hvclBvaW50WihtX2xheWVyLmdldCgp
LCB2YWx1ZS56KCkpOworICAgIHNldE5lZWRzQ29tbWl0KCk7Cit9CisKK1RyYW5zZm9ybWF0aW9u
TWF0cml4IFBsYXRmb3JtQ0FMYXllcjo6dHJhbnNmb3JtKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
Q0FDRkxheWVyR2V0VHJhbnNmb3JtKG1fbGF5ZXIuZ2V0KCkpOworfQorCit2b2lkIFBsYXRmb3Jt
Q0FMYXllcjo6c2V0VHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB2YWx1ZSkK
K3sKKyAgICBDQUNGTGF5ZXJTZXRUcmFuc2Zvcm0obV9sYXllci5nZXQoKSwgdmFsdWUpOworICAg
IHNldE5lZWRzQ29tbWl0KCk7Cit9CisKK1RyYW5zZm9ybWF0aW9uTWF0cml4IFBsYXRmb3JtQ0FM
YXllcjo6c3VibGF5ZXJUcmFuc2Zvcm0oKSBjb25zdAoreworICAgIHJldHVybiBDQUNGTGF5ZXJH
ZXRTdWJsYXllclRyYW5zZm9ybShtX2xheWVyLmdldCgpKTsKK30KKwordm9pZCBQbGF0Zm9ybUNB
TGF5ZXI6OnNldFN1YmxheWVyVHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB2
YWx1ZSkKK3sKKyAgICBDQUNGTGF5ZXJTZXRTdWJsYXllclRyYW5zZm9ybShtX2xheWVyLmdldCgp
LCB2YWx1ZSk7CisgICAgc2V0TmVlZHNDb21taXQoKTsKK30KKworVHJhbnNmb3JtYXRpb25NYXRy
aXggUGxhdGZvcm1DQUxheWVyOjpjb250ZW50c1RyYW5zZm9ybSgpIGNvbnN0Cit7CisgICAgLy8g
Q29udGVudHNUcmFuc2Zvcm0gaXMgbm90IHVzZWQKKyAgICByZXR1cm4gVHJhbnNmb3JtYXRpb25N
YXRyaXgoKTsKK30KKwordm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OnNldENvbnRlbnRzVHJhbnNmb3Jt
KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JikKK3sKKyAgICAvLyBDb250ZW50c1RyYW5zZm9y
bSBpcyBub3QgdXNlZAorfQorCitib29sIFBsYXRmb3JtQ0FMYXllcjo6aXNIaWRkZW4oKSBjb25z
dAoreworICAgIHJldHVybiBDQUNGTGF5ZXJJc0hpZGRlbihtX2xheWVyLmdldCgpKTsKK30KKwor
dm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OnNldEhpZGRlbihib29sIHZhbHVlKQoreworICAgIENBQ0ZM
YXllclNldEhpZGRlbihtX2xheWVyLmdldCgpLCB2YWx1ZSk7CisgICAgc2V0TmVlZHNDb21taXQo
KTsKK30KKworYm9vbCBQbGF0Zm9ybUNBTGF5ZXI6OmlzR2VvbWV0cnlGbGlwcGVkKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gQ0FDRkxheWVySXNHZW9tZXRyeUZsaXBwZWQobV9sYXllci5nZXQoKSk7
Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyOjpzZXRHZW9tZXRyeUZsaXBwZWQoYm9vbCB2YWx1
ZSkKK3sKKyAgICBDQUNGTGF5ZXJTZXRHZW9tZXRyeUZsaXBwZWQobV9sYXllci5nZXQoKSwgdmFs
dWUpOworICAgIHNldE5lZWRzQ29tbWl0KCk7Cit9CisKK2Jvb2wgUGxhdGZvcm1DQUxheWVyOjpp
c0RvdWJsZVNpZGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gQ0FDRkxheWVySXNEb3VibGVTaWRl
ZChtX2xheWVyLmdldCgpKTsKK30KKwordm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OnNldERvdWJsZVNp
ZGVkKGJvb2wgdmFsdWUpCit7CisgICAgQ0FDRkxheWVyU2V0RG91YmxlU2lkZWQobV9sYXllci5n
ZXQoKSwgdmFsdWUpOworICAgIHNldE5lZWRzQ29tbWl0KCk7Cit9CisKK2Jvb2wgUGxhdGZvcm1D
QUxheWVyOjptYXNrc1RvQm91bmRzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gQ0FDRkxheWVyR2V0
TWFza3NUb0JvdW5kcyhtX2xheWVyLmdldCgpKTsKK30KKwordm9pZCBQbGF0Zm9ybUNBTGF5ZXI6
OnNldE1hc2tzVG9Cb3VuZHMoYm9vbCB2YWx1ZSkKK3sKKyAgICBDQUNGTGF5ZXJTZXRNYXNrc1Rv
Qm91bmRzKG1fbGF5ZXIuZ2V0KCksIHZhbHVlKTsKKyAgICBzZXROZWVkc0NvbW1pdCgpOworfQor
Citib29sIFBsYXRmb3JtQ0FMYXllcjo6YWNjZWxlcmF0ZXNEcmF3aW5nKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyOjpzZXRBY2NlbGVyYXRl
c0RyYXdpbmcoYm9vbCkKK3sKK30KKworQ0ZUeXBlUmVmIFBsYXRmb3JtQ0FMYXllcjo6Y29udGVu
dHMoKSBjb25zdAoreworICAgIHJldHVybiBDQUNGTGF5ZXJHZXRDb250ZW50cyhtX2xheWVyLmdl
dCgpKTsKK30KKwordm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OnNldENvbnRlbnRzKENGVHlwZVJlZiB2
YWx1ZSkKK3sKKyAgICBDQUNGTGF5ZXJTZXRDb250ZW50cyhtX2xheWVyLmdldCgpLCB2YWx1ZSk7
CisgICAgc2V0TmVlZHNDb21taXQoKTsKK30KKworRmxvYXRSZWN0IFBsYXRmb3JtQ0FMYXllcjo6
Y29udGVudHNSZWN0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gQ0FDRkxheWVyR2V0Q29udGVudHNS
ZWN0KG1fbGF5ZXIuZ2V0KCkpOworfQorCit2b2lkIFBsYXRmb3JtQ0FMYXllcjo6c2V0Q29udGVu
dHNSZWN0KGNvbnN0IEZsb2F0UmVjdCYgdmFsdWUpCit7CisgICAgQ0FDRkxheWVyU2V0Q29udGVu
dHNSZWN0KG1fbGF5ZXIuZ2V0KCksIHZhbHVlKTsKKyAgICBzZXROZWVkc0NvbW1pdCgpOworfQor
Cit2b2lkIFBsYXRmb3JtQ0FMYXllcjo6c2V0TWluaWZpY2F0aW9uRmlsdGVyKEZpbHRlclR5cGUg
dmFsdWUpCit7CisgICAgQ0FDRkxheWVyU2V0TWluaWZpY2F0aW9uRmlsdGVyKG1fbGF5ZXIuZ2V0
KCksIHRvQ0FDRkZpbHRlclR5cGUodmFsdWUpKTsKK30KKwordm9pZCBQbGF0Zm9ybUNBTGF5ZXI6
OnNldE1hZ25pZmljYXRpb25GaWx0ZXIoRmlsdGVyVHlwZSB2YWx1ZSkKK3sKKyAgICBDQUNGTGF5
ZXJTZXRNYWduaWZpY2F0aW9uRmlsdGVyKG1fbGF5ZXIuZ2V0KCksIHRvQ0FDRkZpbHRlclR5cGUo
dmFsdWUpKTsKKyAgICBzZXROZWVkc0NvbW1pdCgpOworfQorCitDb2xvciBQbGF0Zm9ybUNBTGF5
ZXI6OmJhY2tncm91bmRDb2xvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIENBQ0ZMYXllckdldEJh
Y2tncm91bmRDb2xvcihtX2xheWVyLmdldCgpKTsKK30KKwordm9pZCBQbGF0Zm9ybUNBTGF5ZXI6
OnNldEJhY2tncm91bmRDb2xvcihjb25zdCBDb2xvciYgdmFsdWUpCit7CisgICAgQ0dGbG9hdCBj
b21wb25lbnRzWzRdOworICAgIHZhbHVlLmdldFJHQkEoY29tcG9uZW50c1swXSwgY29tcG9uZW50
c1sxXSwgY29tcG9uZW50c1syXSwgY29tcG9uZW50c1szXSk7CisKKyAgICBSZXRhaW5QdHI8Q0dD
b2xvclNwYWNlUmVmPiBjb2xvclNwYWNlKEFkb3B0Q0YsIENHQ29sb3JTcGFjZUNyZWF0ZURldmlj
ZVJHQigpKTsKKyAgICBSZXRhaW5QdHI8Q0dDb2xvclJlZj4gY29sb3IoQWRvcHRDRiwgQ0dDb2xv
ckNyZWF0ZShjb2xvclNwYWNlLmdldCgpLCBjb21wb25lbnRzKSk7CisKKyAgICBDQUNGTGF5ZXJT
ZXRCYWNrZ3JvdW5kQ29sb3IobV9sYXllci5nZXQoKSwgY29sb3IuZ2V0KCkpOworICAgIHNldE5l
ZWRzQ29tbWl0KCk7Cit9CisKK2Zsb2F0IFBsYXRmb3JtQ0FMYXllcjo6Ym9yZGVyV2lkdGgoKSBj
b25zdAoreworICAgIHJldHVybiBDQUNGTGF5ZXJHZXRCb3JkZXJXaWR0aChtX2xheWVyLmdldCgp
KTsKK30KKwordm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OnNldEJvcmRlcldpZHRoKGZsb2F0IHZhbHVl
KQoreworICAgIENBQ0ZMYXllclNldEJvcmRlcldpZHRoKG1fbGF5ZXIuZ2V0KCksIHZhbHVlKTsK
KyAgICBzZXROZWVkc0NvbW1pdCgpOworfQorCitDb2xvciBQbGF0Zm9ybUNBTGF5ZXI6OmJvcmRl
ckNvbG9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4gQ0FDRkxheWVyR2V0Qm9yZGVyQ29sb3IobV9s
YXllci5nZXQoKSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyOjpzZXRCb3JkZXJDb2xvcihj
b25zdCBDb2xvciYgdmFsdWUpCit7CisgICAgQ0dGbG9hdCBjb21wb25lbnRzWzRdOworICAgIHZh
bHVlLmdldFJHQkEoY29tcG9uZW50c1swXSwgY29tcG9uZW50c1sxXSwgY29tcG9uZW50c1syXSwg
Y29tcG9uZW50c1szXSk7CisKKyAgICBSZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBjb2xvclNw
YWNlKEFkb3B0Q0YsIENHQ29sb3JTcGFjZUNyZWF0ZURldmljZVJHQigpKTsKKyAgICBSZXRhaW5Q
dHI8Q0dDb2xvclJlZj4gY29sb3IoQWRvcHRDRiwgQ0dDb2xvckNyZWF0ZShjb2xvclNwYWNlLmdl
dCgpLCBjb21wb25lbnRzKSk7CisKKyAgICBDQUNGTGF5ZXJTZXRCb3JkZXJDb2xvcihtX2xheWVy
LmdldCgpLCBjb2xvci5nZXQoKSk7CisgICAgc2V0TmVlZHNDb21taXQoKTsKK30KKworZmxvYXQg
UGxhdGZvcm1DQUxheWVyOjpvcGFjaXR5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gQ0FDRkxheWVy
R2V0T3BhY2l0eShtX2xheWVyLmdldCgpKTsKK30KKwordm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OnNl
dE9wYWNpdHkoZmxvYXQgdmFsdWUpCit7CisgICAgQ0FDRkxheWVyU2V0T3BhY2l0eShtX2xheWVy
LmdldCgpLCB2YWx1ZSk7CisgICAgc2V0TmVlZHNDb21taXQoKTsKK30KKworU3RyaW5nIFBsYXRm
b3JtQ0FMYXllcjo6bmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIENBQ0ZMYXllckdldE5hbWUo
bV9sYXllci5nZXQoKSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyOjpzZXROYW1lKGNvbnN0
IFN0cmluZyYgdmFsdWUpCit7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBzKEFkb3B0Q0Ys
IHZhbHVlLmNyZWF0ZUNGU3RyaW5nKCkpOworICAgIENBQ0ZMYXllclNldE5hbWUobV9sYXllci5n
ZXQoKSwgcy5nZXQoKSk7CisgICAgc2V0TmVlZHNDb21taXQoKTsKK30KKworRmxvYXRSZWN0IFBs
YXRmb3JtQ0FMYXllcjo6ZnJhbWUoKSBjb25zdAoreworICAgIHJldHVybiBDQUNGTGF5ZXJHZXRG
cmFtZShtX2xheWVyLmdldCgpKTsKK30KKwordm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OnNldEZyYW1l
KGNvbnN0IEZsb2F0UmVjdCYgdmFsdWUpCit7CisgICAgaW50ZXJuKHRoaXMpLT5zZXRGcmFtZSh2
YWx1ZSk7CisgICAgc2V0TmVlZHNMYXlvdXQoKTsKK30KKworZmxvYXQgUGxhdGZvcm1DQUxheWVy
OjpzcGVlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIENBQ0ZMYXllckdldFNwZWVkKG1fbGF5ZXIu
Z2V0KCkpOworfQorCit2b2lkIFBsYXRmb3JtQ0FMYXllcjo6c2V0U3BlZWQoZmxvYXQgdmFsdWUp
Cit7CisgICAgQ0FDRkxheWVyU2V0U3BlZWQobV9sYXllci5nZXQoKSwgdmFsdWUpOworICAgIHNl
dE5lZWRzQ29tbWl0KCk7Cit9CisKK0NGVGltZUludGVydmFsIFBsYXRmb3JtQ0FMYXllcjo6dGlt
ZU9mZnNldCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIENBQ0ZMYXllckdldFRpbWVPZmZzZXQobV9s
YXllci5nZXQoKSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUxheWVyOjpzZXRUaW1lT2Zmc2V0KENG
VGltZUludGVydmFsIHZhbHVlKQoreworICAgIENBQ0ZMYXllclNldFRpbWVPZmZzZXQobV9sYXll
ci5nZXQoKSwgdmFsdWUpOworICAgIHNldE5lZWRzQ29tbWl0KCk7Cit9CisKKyNpZm5kZWYgTkRF
QlVHCitzdGF0aWMgdm9pZCBwcmludEluZGVudChpbnQgaW5kZW50KQoreworICAgIGZvciAoIDsg
aW5kZW50ID4gMDsgLS1pbmRlbnQpCisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiICAiKTsKK30K
Kworc3RhdGljIHZvaWQgcHJpbnRUcmFuc2Zvcm0oY29uc3QgQ0FUcmFuc2Zvcm0zRCYgdHJhbnNm
b3JtKQoreworICAgIGZwcmludGYoc3RkZXJyLCAiWyVnICVnICVnICVnOyAlZyAlZyAlZyAlZzsg
JWcgJWcgJWcgJWc7ICVnICVnICVnICVnXSIsCisgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9y
bS5tMTEsIHRyYW5zZm9ybS5tMTIsIHRyYW5zZm9ybS5tMTMsIHRyYW5zZm9ybS5tMTQsIAorICAg
ICAgICAgICAgICAgICAgICB0cmFuc2Zvcm0ubTIxLCB0cmFuc2Zvcm0ubTIyLCB0cmFuc2Zvcm0u
bTIzLCB0cmFuc2Zvcm0ubTI0LCAKKyAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtLm0zMSwg
dHJhbnNmb3JtLm0zMiwgdHJhbnNmb3JtLm0zMywgdHJhbnNmb3JtLm0zNCwgCisgICAgICAgICAg
ICAgICAgICAgIHRyYW5zZm9ybS5tNDEsIHRyYW5zZm9ybS5tNDIsIHRyYW5zZm9ybS5tNDMsIHRy
YW5zZm9ybS5tNDQpOworfQorCitzdGF0aWMgdm9pZCBwcmludExheWVyKGNvbnN0IFBsYXRmb3Jt
Q0FMYXllciogbGF5ZXIsIGludCBpbmRlbnQpCit7CisgICAgRmxvYXRQb2ludDNEIGxheWVyUG9z
aXRpb24gPSBsYXllci0+cG9zaXRpb24oKTsKKyAgICBGbG9hdFBvaW50M0QgbGF5ZXJBbmNob3JQ
b2ludCA9IGxheWVyLT5hbmNob3JQb2ludCgpOworICAgIEZsb2F0UmVjdCBsYXllckJvdW5kcyA9
IGxheWVyLT5ib3VuZHMoKTsKKyAgICBwcmludEluZGVudChpbmRlbnQpOworCisgICAgY2hhciog
bGF5ZXJUeXBlTmFtZSA9IDA7CisgICAgc3dpdGNoIChsYXllci0+bGF5ZXJUeXBlKCkpIHsKKyAg
ICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlTGF5ZXI6IGxheWVyVHlwZU5hbWUgPSAi
bGF5ZXIiOyBicmVhazsKKyAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlV2ViTGF5
ZXI6IGxheWVyVHlwZU5hbWUgPSAid2ViLWxheWVyIjsgYnJlYWs7CisgICAgY2FzZSBQbGF0Zm9y
bUNBTGF5ZXI6OkxheWVyVHlwZVRyYW5zZm9ybUxheWVyOiBsYXllclR5cGVOYW1lID0gInRyYW5z
Zm9ybS1sYXllciI7IGJyZWFrOworICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVX
ZWJUaWxlZExheWVyOiBsYXllclR5cGVOYW1lID0gIndlYi10aWxlZC1sYXllciI7IGJyZWFrOwor
ICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVSb290TGF5ZXI6IGxheWVyVHlwZU5h
bWUgPSAicm9vdC1sYXllciI7IGJyZWFrOworICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXll
clR5cGVDdXN0b206IGxheWVyVHlwZU5hbWUgPSAiY3VzdG9tLWxheWVyIjsgYnJlYWs7CisgICAg
fQorCisgICAgZnByaW50ZihzdGRlcnIsICIoJXMgWyVnICVnICVnXSBbJWcgJWcgJWcgJWddIFsl
ZyAlZyAlZ10gc3VwZXJsYXllcj0lcFxuIiwKKyAgICAgICAgbGF5ZXJUeXBlTmFtZSwKKyAgICAg
ICAgbGF5ZXJQb3NpdGlvbi54KCksIGxheWVyUG9zaXRpb24ueSgpLCBsYXllclBvc2l0aW9uLnoo
KSwgCisgICAgICAgIGxheWVyQm91bmRzLngoKSwgbGF5ZXJCb3VuZHMueSgpLCBsYXllckJvdW5k
cy53aWR0aCgpLCBsYXllckJvdW5kcy5oZWlnaHQoKSwKKyAgICAgICAgbGF5ZXJBbmNob3JQb2lu
dC54KCksIGxheWVyQW5jaG9yUG9pbnQueSgpLCBsYXllckFuY2hvclBvaW50LnooKSwgbGF5ZXIt
PnN1cGVybGF5ZXIoKSk7CisKKyAgICAvLyBQcmludCBuYW1lIGlmIG5lZWRlZAorICAgIFN0cmlu
ZyBsYXllck5hbWUgPSBsYXllci0+bmFtZSgpOworICAgIGlmICghbGF5ZXJOYW1lLmlzRW1wdHko
KSkgeworICAgICAgICBwcmludEluZGVudChpbmRlbnQgKyAxKTsKKyAgICAgICAgZnByaW50Zihz
dGRlcnIsICIobmFtZSAlcylcbiIsIGxheWVyTmFtZS51dGY4KCkuZGF0YSgpKTsKKyAgICB9CisK
KyAgICAvLyBQcmludCBtYXNrc1RvQm91bmRzIGlmIG5lZWRlZAorICAgIGJvb2wgbGF5ZXJNYXNr
c1RvQm91bmRzID0gbGF5ZXItPm1hc2tzVG9Cb3VuZHMoKTsKKyAgICBpZiAobGF5ZXJNYXNrc1Rv
Qm91bmRzKSB7CisgICAgICAgIHByaW50SW5kZW50KGluZGVudCArIDEpOworICAgICAgICBmcHJp
bnRmKHN0ZGVyciwgIihtYXNrc1RvQm91bmRzIHRydWUpXG4iKTsKKyAgICB9CisKKyAgICAvLyBQ
cmludCBvcGFjaXR5IGlmIG5lZWRlZAorICAgIGZsb2F0IGxheWVyT3BhY2l0eSA9IGxheWVyLT5v
cGFjaXR5KCk7CisgICAgaWYgKGxheWVyT3BhY2l0eSAhPSAxKSB7CisgICAgICAgIHByaW50SW5k
ZW50KGluZGVudCArIDEpOworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIihvcGFjaXR5ICVoZilc
biIsIGxheWVyT3BhY2l0eSk7CisgICAgfQorCisgICAgLy8gUHJpbnQgc3VibGF5ZXJUcmFuc2Zv
cm0gaWYgbmVlZGVkCisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbGF5ZXJUcmFuc2Zvcm0gPSBs
YXllci0+c3VibGF5ZXJUcmFuc2Zvcm0oKTsKKyAgICBpZiAoIWxheWVyVHJhbnNmb3JtLmlzSWRl
bnRpdHkoKSkgeworICAgICAgICBwcmludEluZGVudChpbmRlbnQgKyAxKTsKKyAgICAgICAgZnBy
aW50ZihzdGRlcnIsICIoc3VibGF5ZXJUcmFuc2Zvcm0gIik7CisgICAgICAgIHByaW50VHJhbnNm
b3JtKGxheWVyVHJhbnNmb3JtKTsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICIpXG4iKTsKKyAg
ICB9CisKKyAgICAvLyBQcmludCB0cmFuc2Zvcm0gaWYgbmVlZGVkCisgICAgbGF5ZXJUcmFuc2Zv
cm0gPSBsYXllci0+dHJhbnNmb3JtKCk7CisgICAgaWYgKCFsYXllclRyYW5zZm9ybS5pc0lkZW50
aXR5KCkpIHsKKyAgICAgICAgcHJpbnRJbmRlbnQoaW5kZW50ICsgMSk7CisgICAgICAgIGZwcmlu
dGYoc3RkZXJyLCAiKHRyYW5zZm9ybSAiKTsKKyAgICAgICAgcHJpbnRUcmFuc2Zvcm0obGF5ZXJU
cmFuc2Zvcm0pOworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIilcbiIpOworICAgIH0KKworICAg
IC8vIFByaW50IGNvbnRlbnRzIGlmIG5lZWRlZAorICAgIENGVHlwZVJlZiBsYXllckNvbnRlbnRz
ID0gbGF5ZXItPmNvbnRlbnRzKCk7CisgICAgaWYgKGxheWVyQ29udGVudHMpIHsKKyAgICAgICAg
aWYgKENGR2V0VHlwZUlEKGxheWVyQ29udGVudHMpID09IENHSW1hZ2VHZXRUeXBlSUQoKSkgewor
ICAgICAgICAgICAgQ0dJbWFnZVJlZiBpbWFnZUNvbnRlbnRzID0gc3RhdGljX2Nhc3Q8Q0dJbWFn
ZVJlZj4oY29uc3RfY2FzdDx2b2lkKj4obGF5ZXJDb250ZW50cykpOworICAgICAgICAgICAgcHJp
bnRJbmRlbnQoaW5kZW50ICsgMSk7CisgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIihjb250
ZW50cyAoaW1hZ2UgWyVkICVkXSkpXG4iLAorICAgICAgICAgICAgICAgIENHSW1hZ2VHZXRXaWR0
aChpbWFnZUNvbnRlbnRzKSwgQ0dJbWFnZUdldEhlaWdodChpbWFnZUNvbnRlbnRzKSk7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICAvLyBQcmludCBzdWJsYXllcnMgaWYgbmVlZGVkCisgICAgaW50
IG4gPSBsYXllci0+c3VibGF5ZXJDb3VudCgpOworICAgIGlmIChuID4gMCkgeworICAgICAgICBw
cmludEluZGVudChpbmRlbnQgKyAxKTsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICIoc3VibGF5
ZXJzXG4iKTsKKworICAgICAgICBDRkFycmF5UmVmIHN1YmxheWVycyA9IENBQ0ZMYXllckdldFN1
YmxheWVycyhsYXllci0+cGxhdGZvcm1MYXllcigpKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBuOyArK2kpIHsKKyAgICAgICAgICAgIFBsYXRmb3JtQ0FMYXllciogc3VibGF5ZXIgPSBQ
bGF0Zm9ybUNBTGF5ZXI6OnBsYXRmb3JtQ0FMYXllcihjb25zdF9jYXN0PHZvaWQqPihDRkFycmF5
R2V0VmFsdWVBdEluZGV4KHN1YmxheWVycywgaSkpKTsKKyAgICAgICAgICAgIHByaW50TGF5ZXIo
c3VibGF5ZXIsIGluZGVudCArIDIpOworICAgICAgICB9CisKKyAgICAgICAgcHJpbnRJbmRlbnQo
aW5kZW50ICsgMSk7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiKVxuIik7CisgICAgfQorCisg
ICAgcHJpbnRJbmRlbnQoaW5kZW50KTsKKyAgICBmcHJpbnRmKHN0ZGVyciwgIilcbiIpOworfQor
Cit2b2lkIFBsYXRmb3JtQ0FMYXllcjo6cHJpbnRUcmVlKCkgY29uc3QKK3sKKyAgICAvLyBQcmlu
dCBoZWFkaW5nIGluZm8KKyAgICBDR1JlY3Qgcm9vdEJvdW5kcyA9IGJvdW5kcygpOworICAgIGZw
cmludGYoc3RkZXJyLCAiXG5cbioqIFJlbmRlciB0cmVlIGF0IHRpbWUgJWcgKGJvdW5kcyAlZywg
JWcgJWd4JWcpICoqXG5cbiIsIAorICAgICAgICBjdXJyZW50VGltZSgpLCByb290Qm91bmRzLm9y
aWdpbi54LCByb290Qm91bmRzLm9yaWdpbi55LCByb290Qm91bmRzLnNpemUud2lkdGgsIHJvb3RC
b3VuZHMuc2l6ZS5oZWlnaHQpOworCisgICAgLy8gUHJpbnQgbGF5ZXIgdHJlZSBmcm9tIHRoZSBy
b290CisgICAgcHJpbnRMYXllcih0aGlzLCAwKTsKK30KKyNlbmRpZiAvLyAjaWZuZGVmIE5ERUJV
RworCisjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpJbmRleDogV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWwuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNB
TGF5ZXJXaW5JbnRlcm5hbC5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWwuaAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
Q09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI2lmbmRlZiBQbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbF9oCisjZGVm
aW5lIFBsYXRmb3JtQ0FMYXllcldpbkludGVybmFsX2gKKworI2lmIFVTRShBQ0NFTEVSQVRFRF9D
T01QT1NJVElORykKKworI2luY2x1ZGUgPENvcmVHcmFwaGljcy9DR0dlb21ldHJ5Lmg+CisjaW5j
bHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKwordHlwZWRl
ZiBzdHJ1Y3QgX0NBQ0ZMYXllciAqQ0FDRkxheWVyUmVmOwordHlwZWRlZiBzdHJ1Y3QgQ0dDb250
ZXh0ICpDR0NvbnRleHRSZWY7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRmxvYXRS
ZWN0OworY2xhc3MgUGxhdGZvcm1DQUxheWVyOworCit0eXBlZGVmIFZlY3RvcjxSZWZQdHI8UGxh
dGZvcm1DQUxheWVyPiA+IFBsYXRmb3JtQ0FMYXllckxpc3Q7CisKK2NsYXNzIFBsYXRmb3JtQ0FM
YXllcldpbkludGVybmFsIHsKK3B1YmxpYzoKKyAgICBQbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5h
bChQbGF0Zm9ybUNBTGF5ZXIqKTsKKyAgICB+UGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWwoKTsK
KworICAgIHZvaWQgZGlzcGxheUNhbGxiYWNrKENBQ0ZMYXllclJlZiwgQ0dDb250ZXh0UmVmKTsK
KyAgICB2b2lkIHNldE5lZWRzRGlzcGxheShjb25zdCBGbG9hdFJlY3QqKTsKKyAgICBQbGF0Zm9y
bUNBTGF5ZXIqIG93bmVyKCkgY29uc3QgeyByZXR1cm4gbV9vd25lcjsgfQorCisgICAgdm9pZCBz
ZXRTdWJsYXllcnMoY29uc3QgUGxhdGZvcm1DQUxheWVyTGlzdCYpOworICAgIHZvaWQgcmVtb3Zl
QWxsU3VibGF5ZXJzKCk7CisgICAgdm9pZCBpbnNlcnRTdWJsYXllcihQbGF0Zm9ybUNBTGF5ZXIq
LCBzaXplX3QpOworICAgIHNpemVfdCBzdWJsYXllckNvdW50KCkgY29uc3Q7CisgICAgaW50IGlu
ZGV4T2ZTdWJsYXllcihjb25zdCBQbGF0Zm9ybUNBTGF5ZXIqIHJlZmVyZW5jZSk7CisKKyAgICB2
b2lkIHNldEJvdW5kcyhjb25zdCBGbG9hdFJlY3QmKTsKKyAgICB2b2lkIHNldEZyYW1lKGNvbnN0
IEZsb2F0UmVjdCYpOworCitwcml2YXRlOgorICAgIHZvaWQgaW50ZXJuYWxTZXROZWVkc0Rpc3Bs
YXkoY29uc3QgRmxvYXRSZWN0Kik7CisgICAgUGxhdGZvcm1DQUxheWVyKiBzdWJsYXllckF0SW5k
ZXgoaW50KSBjb25zdDsKKworICAgIHN0YXRpYyB2b2lkIHRpbGVEaXNwbGF5Q2FsbGJhY2soQ0FD
RkxheWVyUmVmLCBDR0NvbnRleHRSZWYpOworCisgICAgdm9pZCBkcmF3VGlsZShDQUNGTGF5ZXJS
ZWYsIENHQ29udGV4dFJlZik7CisgICAgQ0dTaXplIGNvbnN0cmFpbmVkU2l6ZShjb25zdCBDR1Np
emUmKSBjb25zdDsKKyAgICB2b2lkIGFkZFRpbGUoKTsKKyAgICB2b2lkIHJlbW92ZVRpbGUoKTsK
KyAgICBDQUNGTGF5ZXJSZWYgdGlsZUF0SW5kZXgoaW50KTsKKyAgICBpbnQgdGlsZUNvdW50KCkg
Y29uc3Q7CisgICAgdm9pZCB1cGRhdGVUaWxlcygpOworCisgICAgUGxhdGZvcm1DQUxheWVyKiBt
X293bmVyOworCisgICAgQ0dTaXplIG1fdGlsZVNpemU7CisgICAgQ0dTaXplIG1fY29uc3RyYWlu
ZWRTaXplOworICAgIFJldGFpblB0cjxDQUNGTGF5ZXJSZWY+IG1fdGlsZVBhcmVudDsKK307CisK
K30KKworI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKworI2VuZGlmIC8v
IFBsYXRmb3JtQ0FMYXllcldpbkludGVybmFsX2gKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FBbmltYXRpb25XaW4uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FBbmltYXRpb25XaW4uY3Bw
CShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZv
cm1DQUFuaW1hdGlvbldpbi5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTM4IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisKKyNp
bmNsdWRlICJQbGF0Zm9ybUNBQW5pbWF0aW9uLmgiCisKKyNpbmNsdWRlICJGbG9hdENvbnZlcnNp
b24uaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgIlRpbWluZ0Z1bmN0
aW9uLmgiCisjaW5jbHVkZSA8UXVhcnR6Q29yZS9DQUNGQW5pbWF0aW9uLmg+CisjaW5jbHVkZSA8
UXVhcnR6Q29yZS9DQUNGVGltaW5nLmg+CisjaW5jbHVkZSA8UXVhcnR6Q29yZS9DQUNGVGltaW5n
RnVuY3Rpb24uaD4KKyNpbmNsdWRlIDxRdWFydHpDb3JlL0NBQ0ZWYWx1ZUZ1bmN0aW9uLmg+Cisj
aW5jbHVkZSA8UXVhcnR6Q29yZS9DQUNGVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL1VudXNlZFBh
cmFtLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitzdGF0aWMgU3RyaW5nIHRvQ0FD
RkZpbGxNb2RlVHlwZShQbGF0Zm9ybUNBQW5pbWF0aW9uOjpGaWxsTW9kZVR5cGUgdHlwZSkKK3sK
KyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIFBsYXRmb3JtQ0FBbmltYXRpb246Ok5vRmls
bE1vZGU6CisgICAgY2FzZSBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpGb3J3YXJkczogcmV0dXJuIGtD
QUNGRmlsbE1vZGVGb3J3YXJkczsKKyAgICBjYXNlIFBsYXRmb3JtQ0FBbmltYXRpb246OkJhY2t3
YXJkczogcmV0dXJuIGtDQUNGRmlsbE1vZGVCYWNrd2FyZHM7CisgICAgY2FzZSBQbGF0Zm9ybUNB
QW5pbWF0aW9uOjpCb3RoOiByZXR1cm4ga0NBQ0ZGaWxsTW9kZUJvdGg7CisgICAgfQorICAgIHJl
dHVybiAiIjsKK30KKworc3RhdGljIFBsYXRmb3JtQ0FBbmltYXRpb246OkZpbGxNb2RlVHlwZSBm
cm9tQ0FDRkZpbGxNb2RlVHlwZShjb25zdCBTdHJpbmcmIHN0cmluZykKK3sKKyAgICBpZiAoc3Ry
aW5nID09IGtDQUNGRmlsbE1vZGVCYWNrd2FyZHMpCisgICAgICAgIHJldHVybiBQbGF0Zm9ybUNB
QW5pbWF0aW9uOjpCYWNrd2FyZHM7CisKKyAgICBpZiAoc3RyaW5nID09IGtDQUNGRmlsbE1vZGVC
b3RoKQorICAgICAgICByZXR1cm4gUGxhdGZvcm1DQUFuaW1hdGlvbjo6Qm90aDsKKworICAgIHJl
dHVybiBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpGb3J3YXJkczsKK30KKworc3RhdGljIFN0cmluZyB0
b0NBQ0ZWYWx1ZUZ1bmN0aW9uVHlwZShQbGF0Zm9ybUNBQW5pbWF0aW9uOjpWYWx1ZUZ1bmN0aW9u
VHlwZSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgUGxhdGZvcm1DQUFu
aW1hdGlvbjo6Tm9WYWx1ZUZ1bmN0aW9uOiByZXR1cm4gIiI7CisgICAgY2FzZSBQbGF0Zm9ybUNB
QW5pbWF0aW9uOjpSb3RhdGVYOiByZXR1cm4ga0NBQ0ZWYWx1ZUZ1bmN0aW9uUm90YXRlWDsKKyAg
ICBjYXNlIFBsYXRmb3JtQ0FBbmltYXRpb246OlJvdGF0ZVk6IHJldHVybiBrQ0FDRlZhbHVlRnVu
Y3Rpb25Sb3RhdGVZOworICAgIGNhc2UgUGxhdGZvcm1DQUFuaW1hdGlvbjo6Um90YXRlWjogcmV0
dXJuIGtDQUNGVmFsdWVGdW5jdGlvblJvdGF0ZVo7CisgICAgY2FzZSBQbGF0Zm9ybUNBQW5pbWF0
aW9uOjpTY2FsZVg6IHJldHVybiBrQ0FDRlZhbHVlRnVuY3Rpb25TY2FsZVg7CisgICAgY2FzZSBQ
bGF0Zm9ybUNBQW5pbWF0aW9uOjpTY2FsZVk6IHJldHVybiBrQ0FDRlZhbHVlRnVuY3Rpb25TY2Fs
ZVk7CisgICAgY2FzZSBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpTY2FsZVo6IHJldHVybiBrQ0FDRlZh
bHVlRnVuY3Rpb25TY2FsZVo7CisgICAgY2FzZSBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpTY2FsZTog
cmV0dXJuIGtDQUNGVmFsdWVGdW5jdGlvblNjYWxlOworICAgIGNhc2UgUGxhdGZvcm1DQUFuaW1h
dGlvbjo6VHJhbnNsYXRlWDogcmV0dXJuIGtDQUNGVmFsdWVGdW5jdGlvblRyYW5zbGF0ZVg7Cisg
ICAgY2FzZSBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpUcmFuc2xhdGVZOiByZXR1cm4ga0NBQ0ZWYWx1
ZUZ1bmN0aW9uVHJhbnNsYXRlWTsKKyAgICBjYXNlIFBsYXRmb3JtQ0FBbmltYXRpb246OlRyYW5z
bGF0ZVo6IHJldHVybiBrQ0FDRlZhbHVlRnVuY3Rpb25UcmFuc2xhdGVaOworICAgIGNhc2UgUGxh
dGZvcm1DQUFuaW1hdGlvbjo6VHJhbnNsYXRlOiByZXR1cm4ga0NBQ0ZWYWx1ZUZ1bmN0aW9uVHJh
bnNsYXRlOworICAgIH0KKyAgICByZXR1cm4gIiI7Cit9CisKK3N0YXRpYyBQbGF0Zm9ybUNBQW5p
bWF0aW9uOjpWYWx1ZUZ1bmN0aW9uVHlwZSBmcm9tQ0FDRlZhbHVlRnVuY3Rpb25UeXBlKGNvbnN0
IFN0cmluZyBzdHJpbmcpCit7CisgICAgaWYgKHN0cmluZyA9PSBrQ0FDRlZhbHVlRnVuY3Rpb25S
b3RhdGVYKQorICAgICAgICByZXR1cm4gUGxhdGZvcm1DQUFuaW1hdGlvbjo6Um90YXRlWDsKKwor
ICAgIGlmIChzdHJpbmcgPT0ga0NBQ0ZWYWx1ZUZ1bmN0aW9uUm90YXRlWSkKKyAgICAgICAgcmV0
dXJuIFBsYXRmb3JtQ0FBbmltYXRpb246OlJvdGF0ZVk7CisKKyAgICBpZiAoc3RyaW5nID09IGtD
QUNGVmFsdWVGdW5jdGlvblJvdGF0ZVopCisgICAgICAgIHJldHVybiBQbGF0Zm9ybUNBQW5pbWF0
aW9uOjpSb3RhdGVaOworCisgICAgaWYgKHN0cmluZyA9PSBrQ0FDRlZhbHVlRnVuY3Rpb25TY2Fs
ZVgpCisgICAgICAgIHJldHVybiBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpTY2FsZVg7CisKKyAgICBp
ZiAoc3RyaW5nID09IGtDQUNGVmFsdWVGdW5jdGlvblNjYWxlWSkKKyAgICAgICAgcmV0dXJuIFBs
YXRmb3JtQ0FBbmltYXRpb246OlNjYWxlWTsKKworICAgIGlmIChzdHJpbmcgPT0ga0NBQ0ZWYWx1
ZUZ1bmN0aW9uU2NhbGVaKQorICAgICAgICByZXR1cm4gUGxhdGZvcm1DQUFuaW1hdGlvbjo6U2Nh
bGVaOworCisgICAgaWYgKHN0cmluZyA9PSBrQ0FDRlZhbHVlRnVuY3Rpb25TY2FsZSkKKyAgICAg
ICAgcmV0dXJuIFBsYXRmb3JtQ0FBbmltYXRpb246OlNjYWxlOworCisgICAgaWYgKHN0cmluZyA9
PSBrQ0FDRlZhbHVlRnVuY3Rpb25UcmFuc2xhdGVYKQorICAgICAgICByZXR1cm4gUGxhdGZvcm1D
QUFuaW1hdGlvbjo6VHJhbnNsYXRlWDsKKworICAgIGlmIChzdHJpbmcgPT0ga0NBQ0ZWYWx1ZUZ1
bmN0aW9uVHJhbnNsYXRlWSkKKyAgICAgICAgcmV0dXJuIFBsYXRmb3JtQ0FBbmltYXRpb246OlRy
YW5zbGF0ZVk7CisKKyAgICBpZiAoc3RyaW5nID09IGtDQUNGVmFsdWVGdW5jdGlvblRyYW5zbGF0
ZVopCisgICAgICAgIHJldHVybiBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpUcmFuc2xhdGVaOworCisg
ICAgaWYgKHN0cmluZyA9PSBrQ0FDRlZhbHVlRnVuY3Rpb25UcmFuc2xhdGUpCisgICAgICAgIHJl
dHVybiBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpUcmFuc2xhdGU7CisKKyAgICByZXR1cm4gUGxhdGZv
cm1DQUFuaW1hdGlvbjo6Tm9WYWx1ZUZ1bmN0aW9uOworfQorCitzdGF0aWMgQ0FDRlRpbWluZ0Z1
bmN0aW9uUmVmIHRvQ0FDRlRpbWluZ0Z1bmN0aW9uKGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB0aW1p
bmdGdW5jdGlvbikKK3sKKyAgICBpZiAoIXRpbWluZ0Z1bmN0aW9uKQorICAgICAgICByZXR1cm4g
Q0FDRlRpbWluZ0Z1bmN0aW9uQ3JlYXRlKDAuMjVmLCAwLjFmLCAwLjI1ZiwgMC4xZik7CisgICAg
ICAgICAgICAKKyAgICBpZiAodGltaW5nRnVuY3Rpb24tPmlzQ3ViaWNCZXppZXJUaW1pbmdGdW5j
dGlvbigpKSB7CisgICAgICAgIGNvbnN0IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24qIGN0ZiA9
IHN0YXRpY19jYXN0PGNvbnN0IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24qPih0aW1pbmdGdW5j
dGlvbik7CisgICAgICAgIHJldHVybiBDQUNGVGltaW5nRnVuY3Rpb25DcmVhdGUoc3RhdGljX2Nh
c3Q8ZmxvYXQ+KGN0Zi0+eDEoKSksIHN0YXRpY19jYXN0PGZsb2F0PihjdGYtPnkxKCkpLCBzdGF0
aWNfY2FzdDxmbG9hdD4oY3RmLT54MigpKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGN0Zi0+eTIoKSkp
OworICAgIH0KKyAgICAKKyAgICByZXR1cm4gQ0FDRlRpbWluZ0Z1bmN0aW9uR2V0RnVuY3Rpb25X
aXRoTmFtZShrQ0FDRlRpbWluZ0Z1bmN0aW9uTGluZWFyKTsKK30KKworUGFzc1JlZlB0cjxQbGF0
Zm9ybUNBQW5pbWF0aW9uPiBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpjcmVhdGUoQW5pbWF0aW9uVHlw
ZSB0eXBlLCBjb25zdCBTdHJpbmcmIGtleVBhdGgpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBQbGF0Zm9ybUNBQW5pbWF0aW9uKHR5cGUsIGtleVBhdGgpKTsKK30KKworUGFzc1JlZlB0cjxQ
bGF0Zm9ybUNBQW5pbWF0aW9uPiBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpjcmVhdGUoUGxhdGZvcm1B
bmltYXRpb25SZWYgYW5pbWF0aW9uKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGxhdGZv
cm1DQUFuaW1hdGlvbihhbmltYXRpb24pKTsKK30KKworUGFzc1JlZlB0cjxQbGF0Zm9ybUNBQW5p
bWF0aW9uPiBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpjcmVhdGUoY29uc3QgUGxhdGZvcm1DQUFuaW1h
dGlvbiogYW5pbWF0aW9uKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGxhdGZvcm1DQUFu
aW1hdGlvbihhbmltYXRpb24pKTsKK30KKworUGxhdGZvcm1DQUFuaW1hdGlvbjo6UGxhdGZvcm1D
QUFuaW1hdGlvbihBbmltYXRpb25UeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCkKKyAg
ICA6IG1fdHlwZSh0eXBlKQoreworICAgIGlmICh0eXBlID09IEJhc2ljKQorICAgICAgICBtX2Fu
aW1hdGlvbi5hZG9wdENGKENBQ0ZBbmltYXRpb25DcmVhdGUoa0NBQ0ZCYXNpY0FuaW1hdGlvbikp
OworICAgIGVsc2UKKyAgICAgICAgbV9hbmltYXRpb24uYWRvcHRDRihDQUNGQW5pbWF0aW9uQ3Jl
YXRlKGtDQUNGS2V5ZnJhbWVBbmltYXRpb24pKTsKKyAgICAKKyAgICBSZXRhaW5QdHI8Q0ZTdHJp
bmdSZWY+IHMoQWRvcHRDRiwga2V5UGF0aC5jcmVhdGVDRlN0cmluZygpKTsKKyAgICBDQUNGQW5p
bWF0aW9uU2V0S2V5UGF0aChtX2FuaW1hdGlvbi5nZXQoKSwgcy5nZXQoKSk7Cit9CisKK1BsYXRm
b3JtQ0FBbmltYXRpb246OlBsYXRmb3JtQ0FBbmltYXRpb24oUGxhdGZvcm1BbmltYXRpb25SZWYg
YW5pbWF0aW9uKQoreworICAgIGlmIChTdHJpbmcoQ0FDRkFuaW1hdGlvbkdldENsYXNzKGFuaW1h
dGlvbikpID09IGtDQUNGQmFzaWNBbmltYXRpb24pCisgICAgICAgIG1fdHlwZSA9IEJhc2ljOwor
ICAgIGVsc2UgaWYgKFN0cmluZyhDQUNGQW5pbWF0aW9uR2V0Q2xhc3MoYW5pbWF0aW9uKSkgPT0g
a0NBQ0ZLZXlmcmFtZUFuaW1hdGlvbikKKyAgICAgICAgbV90eXBlID0gS2V5ZnJhbWU7CisgICAg
ZWxzZSB7CisgICAgICAgIEFTU0VSVCgwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAK
KyAgICBtX2FuaW1hdGlvbiA9IGFuaW1hdGlvbjsKK30KKworUGxhdGZvcm1DQUFuaW1hdGlvbjo6
UGxhdGZvcm1DQUFuaW1hdGlvbihjb25zdCBQbGF0Zm9ybUNBQW5pbWF0aW9uKiBhbmltYXRpb24p
Cit7CisgICAgbV9hbmltYXRpb24uYWRvcHRDRihDQUNGQW5pbWF0aW9uQ3JlYXRlKChhbmltYXRp
b24tPmFuaW1hdGlvblR5cGUoKSA9PSBCYXNpYykgPyBrQ0FDRkJhc2ljQW5pbWF0aW9uIDoga0NB
Q0ZLZXlmcmFtZUFuaW1hdGlvbikpOworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4ga2V5UGF0
aChBZG9wdENGLCBhbmltYXRpb24tPmtleVBhdGgoKS5jcmVhdGVDRlN0cmluZygpKTsKKyAgICBD
QUNGQW5pbWF0aW9uU2V0S2V5UGF0aChtX2FuaW1hdGlvbi5nZXQoKSwga2V5UGF0aC5nZXQoKSk7
CisKKyAgICBzZXRCZWdpblRpbWUoYW5pbWF0aW9uLT5iZWdpblRpbWUoKSk7CisgICAgc2V0RHVy
YXRpb24oYW5pbWF0aW9uLT5kdXJhdGlvbigpKTsKKyAgICBzZXRTcGVlZChhbmltYXRpb24tPnNw
ZWVkKCkpOworICAgIHNldFRpbWVPZmZzZXQoYW5pbWF0aW9uLT50aW1lT2Zmc2V0KCkpOworICAg
IHNldFJlcGVhdENvdW50KGFuaW1hdGlvbi0+cmVwZWF0Q291bnQoKSk7CisgICAgc2V0QXV0b3Jl
dmVyc2VzKGFuaW1hdGlvbi0+YXV0b3JldmVyc2VzKCkpOworICAgIHNldEZpbGxNb2RlKGFuaW1h
dGlvbi0+ZmlsbE1vZGUoKSk7CisgICAgc2V0UmVtb3ZlZE9uQ29tcGxldGlvbihhbmltYXRpb24t
PmlzUmVtb3ZlZE9uQ29tcGxldGlvbigpKTsKKyAgICBzZXRBZGRpdGl2ZShhbmltYXRpb24tPmlz
QWRkaXRpdmUoKSk7CisgICAgY29weVRpbWluZ0Z1bmN0aW9uRnJvbShhbmltYXRpb24pOworICAg
IHNldFZhbHVlRnVuY3Rpb24oYW5pbWF0aW9uLT52YWx1ZUZ1bmN0aW9uKCkpOworCisgICAgLy8g
Q29weSB0aGUgc3BlY2lmaWMgQmFzaWMgb3IgS2V5ZnJhbWUgdmFsdWVzCisgICAgaWYgKGFuaW1h
dGlvbi0+YW5pbWF0aW9uVHlwZSgpID09IEtleWZyYW1lKSB7CisgICAgICAgIGNvcHlWYWx1ZXNG
cm9tKGFuaW1hdGlvbik7CisgICAgICAgIGNvcHlLZXlUaW1lc0Zyb20oYW5pbWF0aW9uKTsKKyAg
ICAgICAgY29weVRpbWluZ0Z1bmN0aW9uc0Zyb20oYW5pbWF0aW9uKTsKKyAgICB9IGVsc2Ugewor
ICAgICAgICBjb3B5RnJvbVZhbHVlRnJvbShhbmltYXRpb24pOworICAgICAgICBjb3B5VG9WYWx1
ZUZyb20oYW5pbWF0aW9uKTsKKyAgICB9Cit9CisKK1BsYXRmb3JtQ0FBbmltYXRpb246On5QbGF0
Zm9ybUNBQW5pbWF0aW9uKCkKK3sKK30KKworYm9vbCBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpzdXBw
b3J0c1ZhbHVlRnVuY3Rpb24oKQoreworICAgIHJldHVybiB0cnVlOworfQorCitQbGF0Zm9ybUFu
aW1hdGlvblJlZiBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpwbGF0Zm9ybUFuaW1hdGlvbigpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fYW5pbWF0aW9uLmdldCgpOworfQorCitTdHJpbmcgUGxhdGZvcm1D
QUFuaW1hdGlvbjo6a2V5UGF0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIENBQ0ZBbmltYXRpb25H
ZXRLZXlQYXRoKG1fYW5pbWF0aW9uLmdldCgpKTsKK30KKworQ0ZUaW1lSW50ZXJ2YWwgUGxhdGZv
cm1DQUFuaW1hdGlvbjo6YmVnaW5UaW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gQ0FDRkFuaW1h
dGlvbkdldEJlZ2luVGltZShtX2FuaW1hdGlvbi5nZXQoKSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1D
QUFuaW1hdGlvbjo6c2V0QmVnaW5UaW1lKENGVGltZUludGVydmFsIHZhbHVlKQoreworICAgIENB
Q0ZBbmltYXRpb25TZXRCZWdpblRpbWUobV9hbmltYXRpb24uZ2V0KCksIHZhbHVlKTsKK30KKwor
Q0ZUaW1lSW50ZXJ2YWwgUGxhdGZvcm1DQUFuaW1hdGlvbjo6ZHVyYXRpb24oKSBjb25zdAorewor
ICAgIHJldHVybiBDQUNGQW5pbWF0aW9uR2V0RHVyYXRpb24obV9hbmltYXRpb24uZ2V0KCkpOwor
fQorCit2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb246OnNldER1cmF0aW9uKENGVGltZUludGVydmFs
IHZhbHVlKQoreworICAgIENBQ0ZBbmltYXRpb25TZXREdXJhdGlvbihtX2FuaW1hdGlvbi5nZXQo
KSwgdmFsdWUpOworfQorCitmbG9hdCBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpzcGVlZCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIENBQ0ZBbmltYXRpb25HZXRTcGVlZChtX2FuaW1hdGlvbi5nZXQoKSk7
Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbjo6c2V0U3BlZWQoZmxvYXQgdmFsdWUpCit7
CisgICAgQ0FDRkFuaW1hdGlvblNldFNwZWVkKG1fYW5pbWF0aW9uLmdldCgpLCB2YWx1ZSk7Cit9
CisKK0NGVGltZUludGVydmFsIFBsYXRmb3JtQ0FBbmltYXRpb246OnRpbWVPZmZzZXQoKSBjb25z
dAoreworICAgIHJldHVybiBDQUNGQW5pbWF0aW9uR2V0VGltZU9mZnNldChtX2FuaW1hdGlvbi5n
ZXQoKSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbjo6c2V0VGltZU9mZnNldChDRlRp
bWVJbnRlcnZhbCB2YWx1ZSkKK3sKKyAgICBDQUNGQW5pbWF0aW9uU2V0VGltZU9mZnNldChtX2Fu
aW1hdGlvbi5nZXQoKSwgdmFsdWUpOworfQorCitmbG9hdCBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpy
ZXBlYXRDb3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIENBQ0ZBbmltYXRpb25HZXRSZXBlYXRD
b3VudChtX2FuaW1hdGlvbi5nZXQoKSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbjo6
c2V0UmVwZWF0Q291bnQoZmxvYXQgdmFsdWUpCit7CisgICAgQ0FDRkFuaW1hdGlvblNldFJlcGVh
dENvdW50KG1fYW5pbWF0aW9uLmdldCgpLCB2YWx1ZSk7Cit9CisKK2Jvb2wgUGxhdGZvcm1DQUFu
aW1hdGlvbjo6YXV0b3JldmVyc2VzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gQ0FDRkFuaW1hdGlv
bkdldEF1dG9yZXZlcnNlcyhtX2FuaW1hdGlvbi5nZXQoKSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1D
QUFuaW1hdGlvbjo6c2V0QXV0b3JldmVyc2VzKGJvb2wgdmFsdWUpCit7CisgICAgQ0FDRkFuaW1h
dGlvblNldEF1dG9yZXZlcnNlcyhtX2FuaW1hdGlvbi5nZXQoKSwgdmFsdWUpOworfQorCitQbGF0
Zm9ybUNBQW5pbWF0aW9uOjpGaWxsTW9kZVR5cGUgUGxhdGZvcm1DQUFuaW1hdGlvbjo6ZmlsbE1v
ZGUoKSBjb25zdAoreworICAgIHJldHVybiBmcm9tQ0FDRkZpbGxNb2RlVHlwZShDQUNGQW5pbWF0
aW9uR2V0RmlsbE1vZGUobV9hbmltYXRpb24uZ2V0KCkpKTsKK30KKwordm9pZCBQbGF0Zm9ybUNB
QW5pbWF0aW9uOjpzZXRGaWxsTW9kZShGaWxsTW9kZVR5cGUgdmFsdWUpCit7CisgICAgUmV0YWlu
UHRyPENGU3RyaW5nUmVmPiBrZXlQYXRoKEFkb3B0Q0YsIHRvQ0FDRkZpbGxNb2RlVHlwZSh2YWx1
ZSkuY3JlYXRlQ0ZTdHJpbmcoKSk7CisgICAgQ0FDRkFuaW1hdGlvblNldEZpbGxNb2RlKG1fYW5p
bWF0aW9uLmdldCgpLCBrZXlQYXRoLmdldCgpKTsKK30KKwordm9pZCBQbGF0Zm9ybUNBQW5pbWF0
aW9uOjpzZXRUaW1pbmdGdW5jdGlvbihjb25zdCBUaW1pbmdGdW5jdGlvbiogdmFsdWUpCit7Cisg
ICAgQ0FDRkFuaW1hdGlvblNldFRpbWluZ0Z1bmN0aW9uKG1fYW5pbWF0aW9uLmdldCgpLCB0b0NB
Q0ZUaW1pbmdGdW5jdGlvbih2YWx1ZSkpOworfQorCit2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb246
OmNvcHlUaW1pbmdGdW5jdGlvbkZyb20oY29uc3QgUGxhdGZvcm1DQUFuaW1hdGlvbiogdmFsdWUp
Cit7CisgICAgQ0FDRkFuaW1hdGlvblNldFRpbWluZ0Z1bmN0aW9uKG1fYW5pbWF0aW9uLmdldCgp
LCBDQUNGQW5pbWF0aW9uR2V0VGltaW5nRnVuY3Rpb24odmFsdWUtPm1fYW5pbWF0aW9uLmdldCgp
KSk7Cit9CisKK2Jvb2wgUGxhdGZvcm1DQUFuaW1hdGlvbjo6aXNSZW1vdmVkT25Db21wbGV0aW9u
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gQ0FDRkFuaW1hdGlvbklzUmVtb3ZlZE9uQ29tcGxldGlv
bihtX2FuaW1hdGlvbi5nZXQoKSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbjo6c2V0
UmVtb3ZlZE9uQ29tcGxldGlvbihib29sIHZhbHVlKQoreworICAgIENBQ0ZBbmltYXRpb25TZXRS
ZW1vdmVkT25Db21wbGV0aW9uKG1fYW5pbWF0aW9uLmdldCgpLCB2YWx1ZSk7Cit9CisKK2Jvb2wg
UGxhdGZvcm1DQUFuaW1hdGlvbjo6aXNBZGRpdGl2ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIENB
Q0ZBbmltYXRpb25Jc0FkZGl0aXZlKG1fYW5pbWF0aW9uLmdldCgpKTsKK30KKwordm9pZCBQbGF0
Zm9ybUNBQW5pbWF0aW9uOjpzZXRBZGRpdGl2ZShib29sIHZhbHVlKQoreworICAgIENBQ0ZBbmlt
YXRpb25TZXRBZGRpdGl2ZShtX2FuaW1hdGlvbi5nZXQoKSwgdmFsdWUpOworfQorCitQbGF0Zm9y
bUNBQW5pbWF0aW9uOjpWYWx1ZUZ1bmN0aW9uVHlwZSBQbGF0Zm9ybUNBQW5pbWF0aW9uOjp2YWx1
ZUZ1bmN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZnJvbUNBQ0ZWYWx1ZUZ1bmN0aW9uVHlw
ZShDQUNGVmFsdWVGdW5jdGlvbkdldE5hbWUoQ0FDRkFuaW1hdGlvbkdldFZhbHVlRnVuY3Rpb24o
bV9hbmltYXRpb24uZ2V0KCkpKSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbjo6c2V0
VmFsdWVGdW5jdGlvbihWYWx1ZUZ1bmN0aW9uVHlwZSB2YWx1ZSkKK3sKKyAgICBSZXRhaW5QdHI8
Q0ZTdHJpbmdSZWY+IGtleVBhdGgoQWRvcHRDRiwgdG9DQUNGVmFsdWVGdW5jdGlvblR5cGUodmFs
dWUpLmNyZWF0ZUNGU3RyaW5nKCkpOworICAgIENBQ0ZBbmltYXRpb25TZXRWYWx1ZUZ1bmN0aW9u
KG1fYW5pbWF0aW9uLmdldCgpLCBDQUNGVmFsdWVGdW5jdGlvbkdldEZ1bmN0aW9uV2l0aE5hbWUo
a2V5UGF0aC5nZXQoKSkpOworfQorCit2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb246OnNldEZyb21W
YWx1ZShmbG9hdCB2YWx1ZSkKK3sKKyAgICBpZiAoYW5pbWF0aW9uVHlwZSgpICE9IEJhc2ljKQor
ICAgICAgICByZXR1cm47CisKKyAgICBSZXRhaW5QdHI8Q0ZOdW1iZXJSZWY+IHYoQWRvcHRDRiwg
Q0ZOdW1iZXJDcmVhdGUoMCwga0NGTnVtYmVyRmxvYXRUeXBlLCAmdmFsdWUpKTsKKyAgICBDQUNG
QW5pbWF0aW9uU2V0RnJvbVZhbHVlKG1fYW5pbWF0aW9uLmdldCgpLCB2LmdldCgpKTsKK30KKwor
dm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpzZXRGcm9tVmFsdWUoY29uc3QgV2ViQ29yZTo6VHJh
bnNmb3JtYXRpb25NYXRyaXgmIHZhbHVlKQoreworICAgIGlmIChhbmltYXRpb25UeXBlKCkgIT0g
QmFzaWMpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBSZXRhaW5QdHI8Q0FDRlZlY3RvclJl
Zj4gdihBZG9wdENGLCBDQUNGVmVjdG9yQ3JlYXRlVHJhbnNmb3JtKHZhbHVlKSk7CisgICAgQ0FD
RkFuaW1hdGlvblNldEZyb21WYWx1ZShtX2FuaW1hdGlvbi5nZXQoKSwgdi5nZXQoKSk7Cit9CisK
K3ZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbjo6c2V0RnJvbVZhbHVlKGNvbnN0IEZsb2F0UG9pbnQz
RCYgdmFsdWUpCit7CisgICAgaWYgKGFuaW1hdGlvblR5cGUoKSAhPSBCYXNpYykKKyAgICAgICAg
cmV0dXJuOworCisgICAgZmxvYXQgYVszXSA9IHsgdmFsdWUueCgpLCB2YWx1ZS55KCksIHZhbHVl
LnooKSB9OworICAgIFJldGFpblB0cjxDQUNGVmVjdG9yUmVmPiB2KEFkb3B0Q0YsIENBQ0ZWZWN0
b3JDcmVhdGUoMywgYSkpOworICAgIENBQ0ZBbmltYXRpb25TZXRGcm9tVmFsdWUobV9hbmltYXRp
b24uZ2V0KCksIHYuZ2V0KCkpOworfQorCit2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb246OnNldEZy
b21WYWx1ZShjb25zdCBXZWJDb3JlOjpDb2xvciYgdmFsdWUpCit7CisgICAgaWYgKGFuaW1hdGlv
blR5cGUoKSAhPSBCYXNpYykKKyAgICAgICAgcmV0dXJuOworCisgICAgZmxvYXQgYVs0XSA9IHsg
dmFsdWUucmVkKCksIHZhbHVlLmdyZWVuKCksIHZhbHVlLmJsdWUoKSwgdmFsdWUuYWxwaGEoKSB9
OworICAgIFJldGFpblB0cjxDQUNGVmVjdG9yUmVmPiB2KEFkb3B0Q0YsIENBQ0ZWZWN0b3JDcmVh
dGUoNCwgYSkpOworICAgIENBQ0ZBbmltYXRpb25TZXRGcm9tVmFsdWUobV9hbmltYXRpb24uZ2V0
KCksIHYuZ2V0KCkpOworfQorCit2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb246OmNvcHlGcm9tVmFs
dWVGcm9tKGNvbnN0IFBsYXRmb3JtQ0FBbmltYXRpb24qIHZhbHVlKQoreworICAgIGlmIChhbmlt
YXRpb25UeXBlKCkgIT0gQmFzaWMgfHwgdmFsdWUtPmFuaW1hdGlvblR5cGUoKSAhPSBCYXNpYykK
KyAgICAgICAgcmV0dXJuOworICAgIAorICAgIENBQ0ZBbmltYXRpb25TZXRGcm9tVmFsdWUobV9h
bmltYXRpb24uZ2V0KCksIENBQ0ZBbmltYXRpb25HZXRGcm9tVmFsdWUodmFsdWUtPnBsYXRmb3Jt
QW5pbWF0aW9uKCkpKTsKK30KKwordm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpzZXRUb1ZhbHVl
KGZsb2F0IHZhbHVlKQoreworICAgIGlmIChhbmltYXRpb25UeXBlKCkgIT0gQmFzaWMpCisgICAg
ICAgIHJldHVybjsKKworICAgIFJldGFpblB0cjxDRk51bWJlclJlZj4gdihBZG9wdENGLCBDRk51
bWJlckNyZWF0ZSgwLCBrQ0ZOdW1iZXJGbG9hdFR5cGUsICZ2YWx1ZSkpOworICAgIENBQ0ZBbmlt
YXRpb25TZXRUb1ZhbHVlKG1fYW5pbWF0aW9uLmdldCgpLCB2LmdldCgpKTsKK30KKwordm9pZCBQ
bGF0Zm9ybUNBQW5pbWF0aW9uOjpzZXRUb1ZhbHVlKGNvbnN0IFdlYkNvcmU6OlRyYW5zZm9ybWF0
aW9uTWF0cml4JiB2YWx1ZSkKK3sKKyAgICBpZiAoYW5pbWF0aW9uVHlwZSgpICE9IEJhc2ljKQor
ICAgICAgICByZXR1cm47CisKKyAgICBSZXRhaW5QdHI8Q0FDRlZlY3RvclJlZj4gdihBZG9wdENG
LCBDQUNGVmVjdG9yQ3JlYXRlVHJhbnNmb3JtKHZhbHVlKSk7CisgICAgQ0FDRkFuaW1hdGlvblNl
dFRvVmFsdWUobV9hbmltYXRpb24uZ2V0KCksIHYuZ2V0KCkpOworfQorCit2b2lkIFBsYXRmb3Jt
Q0FBbmltYXRpb246OnNldFRvVmFsdWUoY29uc3QgRmxvYXRQb2ludDNEJiB2YWx1ZSkKK3sKKyAg
ICBpZiAoYW5pbWF0aW9uVHlwZSgpICE9IEJhc2ljKQorICAgICAgICByZXR1cm47CisKKyAgICBm
bG9hdCBhWzNdID0geyB2YWx1ZS54KCksIHZhbHVlLnkoKSwgdmFsdWUueigpIH07CisgICAgUmV0
YWluUHRyPENBQ0ZWZWN0b3JSZWY+IHYoQWRvcHRDRiwgQ0FDRlZlY3RvckNyZWF0ZSgzLCBhKSk7
CisgICAgQ0FDRkFuaW1hdGlvblNldFRvVmFsdWUobV9hbmltYXRpb24uZ2V0KCksIHYuZ2V0KCkp
OworfQorCit2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb246OnNldFRvVmFsdWUoY29uc3QgV2ViQ29y
ZTo6Q29sb3ImIHZhbHVlKQoreworICAgIGlmIChhbmltYXRpb25UeXBlKCkgIT0gQmFzaWMpCisg
ICAgICAgIHJldHVybjsKKworICAgIGZsb2F0IGFbNF0gPSB7IHZhbHVlLnJlZCgpLCB2YWx1ZS5n
cmVlbigpLCB2YWx1ZS5ibHVlKCksIHZhbHVlLmFscGhhKCkgfTsKKyAgICBSZXRhaW5QdHI8Q0FD
RlZlY3RvclJlZj4gdihBZG9wdENGLCBDQUNGVmVjdG9yQ3JlYXRlKDQsIGEpKTsKKyAgICBDQUNG
QW5pbWF0aW9uU2V0VG9WYWx1ZShtX2FuaW1hdGlvbi5nZXQoKSwgdi5nZXQoKSk7Cit9CisKK3Zv
aWQgUGxhdGZvcm1DQUFuaW1hdGlvbjo6Y29weVRvVmFsdWVGcm9tKGNvbnN0IFBsYXRmb3JtQ0FB
bmltYXRpb24qIHZhbHVlKQoreworICAgIGlmIChhbmltYXRpb25UeXBlKCkgIT0gQmFzaWMgfHwg
dmFsdWUtPmFuaW1hdGlvblR5cGUoKSAhPSBCYXNpYykKKyAgICAgICAgcmV0dXJuOworICAgICAg
ICAKKyAgICBDQUNGQW5pbWF0aW9uU2V0VG9WYWx1ZShtX2FuaW1hdGlvbi5nZXQoKSwgQ0FDRkFu
aW1hdGlvbkdldFRvVmFsdWUodmFsdWUtPnBsYXRmb3JtQW5pbWF0aW9uKCkpKTsKK30KKworCisv
LyBLZXlmcmFtZS1hbmltYXRpb24gcHJvcGVydGllcy4KK3ZvaWQgUGxhdGZvcm1DQUFuaW1hdGlv
bjo6c2V0VmFsdWVzKGNvbnN0IFZlY3RvcjxmbG9hdD4mIHZhbHVlKQoreworICAgIGlmIChhbmlt
YXRpb25UeXBlKCkgIT0gS2V5ZnJhbWUpCisgICAgICAgIHJldHVybjsKKworICAgIFJldGFpblB0
cjxDRk11dGFibGVBcnJheVJlZj4gYXJyYXkoQWRvcHRDRiwgQ0ZBcnJheUNyZWF0ZU11dGFibGUo
MCwgdmFsdWUuc2l6ZSgpLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKSk7CisgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCB2YWx1ZS5zaXplKCk7ICsraSkgeworICAgICAgICBSZXRhaW5QdHI8Q0ZO
dW1iZXJSZWY+IHYoQWRvcHRDRiwgQ0ZOdW1iZXJDcmVhdGUoMCwga0NGTnVtYmVyRmxvYXRUeXBl
LCAmdmFsdWVbaV0pKTsKKyAgICAgICAgQ0ZBcnJheUFwcGVuZFZhbHVlKGFycmF5LmdldCgpLCB2
LmdldCgpKTsKKyAgICB9CisKKyAgICBDQUNGQW5pbWF0aW9uU2V0VmFsdWVzKG1fYW5pbWF0aW9u
LmdldCgpLCBhcnJheS5nZXQoKSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbjo6c2V0
VmFsdWVzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeD4mIHZhbHVl
KQoreworICAgIGlmIChhbmltYXRpb25UeXBlKCkgIT0gS2V5ZnJhbWUpCisgICAgICAgIHJldHVy
bjsKKworICAgIFJldGFpblB0cjxDRk11dGFibGVBcnJheVJlZj4gYXJyYXkoQWRvcHRDRiwgQ0ZB
cnJheUNyZWF0ZU11dGFibGUoMCwgdmFsdWUuc2l6ZSgpLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tz
KSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2YWx1ZS5zaXplKCk7ICsraSkgeworICAg
ICAgICBSZXRhaW5QdHI8Q0FDRlZlY3RvclJlZj4gdihBZG9wdENGLCBDQUNGVmVjdG9yQ3JlYXRl
VHJhbnNmb3JtKHZhbHVlW2ldKSk7CisgICAgICAgIENGQXJyYXlBcHBlbmRWYWx1ZShhcnJheS5n
ZXQoKSwgdi5nZXQoKSk7CisgICAgfQorCisgICAgQ0FDRkFuaW1hdGlvblNldFZhbHVlcyhtX2Fu
aW1hdGlvbi5nZXQoKSwgYXJyYXkuZ2V0KCkpOworfQorCit2b2lkIFBsYXRmb3JtQ0FBbmltYXRp
b246OnNldFZhbHVlcyhjb25zdCBWZWN0b3I8RmxvYXRQb2ludDNEPiYgdmFsdWUpCit7CisgICAg
aWYgKGFuaW1hdGlvblR5cGUoKSAhPSBLZXlmcmFtZSkKKyAgICAgICAgcmV0dXJuOworICAgICAg
ICAKKyAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlQXJyYXlSZWY+IGFycmF5KEFkb3B0Q0YsIENGQXJy
YXlDcmVhdGVNdXRhYmxlKDAsIHZhbHVlLnNpemUoKSwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcykp
OworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmFsdWUuc2l6ZSgpOyArK2kpIHsKKyAgICAg
ICAgZmxvYXQgYVszXSA9IHsgdmFsdWVbaV0ueCgpLCB2YWx1ZVtpXS55KCksIHZhbHVlW2ldLnoo
KSB9OworICAgICAgICBSZXRhaW5QdHI8Q0FDRlZlY3RvclJlZj4gdihBZG9wdENGLCBDQUNGVmVj
dG9yQ3JlYXRlKDMsIGEpKTsKKyAgICAgICAgQ0ZBcnJheUFwcGVuZFZhbHVlKGFycmF5LmdldCgp
LCB2LmdldCgpKTsKKyAgICB9CisKKyAgICBDQUNGQW5pbWF0aW9uU2V0VmFsdWVzKG1fYW5pbWF0
aW9uLmdldCgpLCBhcnJheS5nZXQoKSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbjo6
c2V0VmFsdWVzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb2xvcj4mIHZhbHVlKQoreworICAgIGlm
IChhbmltYXRpb25UeXBlKCkgIT0gS2V5ZnJhbWUpCisgICAgICAgIHJldHVybjsKKyAgICAgICAg
CisgICAgUmV0YWluUHRyPENGTXV0YWJsZUFycmF5UmVmPiBhcnJheShBZG9wdENGLCBDRkFycmF5
Q3JlYXRlTXV0YWJsZSgwLCB2YWx1ZS5zaXplKCksICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpKTsK
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHZhbHVlLnNpemUoKTsgKytpKSB7CisgICAgICAg
IGZsb2F0IGFbNF0gPSB7IHZhbHVlW2ldLnJlZCgpLCB2YWx1ZVtpXS5ncmVlbigpLCB2YWx1ZVtp
XS5ibHVlKCksIHZhbHVlW2ldLmFscGhhKCkgfTsKKyAgICAgICAgUmV0YWluUHRyPENBQ0ZWZWN0
b3JSZWY+IHYoQWRvcHRDRiwgQ0FDRlZlY3RvckNyZWF0ZSg0LCBhKSk7CisgICAgICAgIENGQXJy
YXlBcHBlbmRWYWx1ZShhcnJheS5nZXQoKSwgdi5nZXQoKSk7CisgICAgfQorCisgICAgQ0FDRkFu
aW1hdGlvblNldFZhbHVlcyhtX2FuaW1hdGlvbi5nZXQoKSwgYXJyYXkuZ2V0KCkpOworfQorCit2
b2lkIFBsYXRmb3JtQ0FBbmltYXRpb246OmNvcHlWYWx1ZXNGcm9tKGNvbnN0IFBsYXRmb3JtQ0FB
bmltYXRpb24qIHZhbHVlKQoreworICAgIGlmIChhbmltYXRpb25UeXBlKCkgIT0gS2V5ZnJhbWUg
fHwgdmFsdWUtPmFuaW1hdGlvblR5cGUoKSAhPSBLZXlmcmFtZSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIAorICAgIENBQ0ZBbmltYXRpb25TZXRWYWx1ZXMobV9hbmltYXRpb24uZ2V0KCksIENBQ0ZB
bmltYXRpb25HZXRWYWx1ZXModmFsdWUtPnBsYXRmb3JtQW5pbWF0aW9uKCkpKTsKK30KKwordm9p
ZCBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpzZXRLZXlUaW1lcyhjb25zdCBWZWN0b3I8ZmxvYXQ+JiB2
YWx1ZSkKK3sKKyAgICBpZiAoYW5pbWF0aW9uVHlwZSgpICE9IEtleWZyYW1lKQorICAgICAgICBy
ZXR1cm47CisgICAgICAgIAorICAgIFJldGFpblB0cjxDRk11dGFibGVBcnJheVJlZj4gYXJyYXko
QWRvcHRDRiwgQ0ZBcnJheUNyZWF0ZU11dGFibGUoMCwgdmFsdWUuc2l6ZSgpLCAma0NGVHlwZUFy
cmF5Q2FsbEJhY2tzKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2YWx1ZS5zaXplKCk7
ICsraSkgeworICAgICAgICBSZXRhaW5QdHI8Q0ZOdW1iZXJSZWY+IHYoQWRvcHRDRiwgQ0ZOdW1i
ZXJDcmVhdGUoMCwga0NGTnVtYmVyRmxvYXRUeXBlLCAmdmFsdWVbaV0pKTsKKyAgICAgICAgQ0ZB
cnJheUFwcGVuZFZhbHVlKGFycmF5LmdldCgpLCB2LmdldCgpKTsKKyAgICB9CisKKyAgICBDQUNG
QW5pbWF0aW9uU2V0S2V5VGltZXMobV9hbmltYXRpb24uZ2V0KCksIGFycmF5LmdldCgpKTsKK30K
Kwordm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpjb3B5S2V5VGltZXNGcm9tKGNvbnN0IFBsYXRm
b3JtQ0FBbmltYXRpb24qIHZhbHVlKQoreworICAgIGlmIChhbmltYXRpb25UeXBlKCkgIT0gS2V5
ZnJhbWUpCisgICAgICAgIHJldHVybjsKKworICAgIENBQ0ZBbmltYXRpb25TZXRLZXlUaW1lcyht
X2FuaW1hdGlvbi5nZXQoKSwgQ0FDRkFuaW1hdGlvbkdldEtleVRpbWVzKHZhbHVlLT5wbGF0Zm9y
bUFuaW1hdGlvbigpKSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbjo6c2V0VGltaW5n
RnVuY3Rpb25zKGNvbnN0IFZlY3Rvcjxjb25zdCBUaW1pbmdGdW5jdGlvbio+JiB2YWx1ZSkKK3sK
KyAgICBpZiAoYW5pbWF0aW9uVHlwZSgpICE9IEtleWZyYW1lKQorICAgICAgICByZXR1cm47CisK
KyAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlQXJyYXlSZWY+IGFycmF5KEFkb3B0Q0YsIENGQXJyYXlD
cmVhdGVNdXRhYmxlKDAsIHZhbHVlLnNpemUoKSwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcykpOwor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmFsdWUuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAg
UmV0YWluUHRyPENGTnVtYmVyUmVmPiB2KEFkb3B0Q0YsIENGTnVtYmVyQ3JlYXRlKDAsIGtDRk51
bWJlckZsb2F0VHlwZSwgJnZhbHVlW2ldKSk7CisgICAgICAgIENGQXJyYXlBcHBlbmRWYWx1ZShh
cnJheS5nZXQoKSwgdG9DQUNGVGltaW5nRnVuY3Rpb24odmFsdWVbaV0pKTsKKyAgICB9CisKKyAg
ICBDQUNGQW5pbWF0aW9uU2V0VGltaW5nRnVuY3Rpb25zKG1fYW5pbWF0aW9uLmdldCgpLCBhcnJh
eS5nZXQoKSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbjo6Y29weVRpbWluZ0Z1bmN0
aW9uc0Zyb20oY29uc3QgUGxhdGZvcm1DQUFuaW1hdGlvbiogdmFsdWUpCit7CisgICAgQ0FDRkFu
aW1hdGlvblNldFRpbWluZ0Z1bmN0aW9ucyhtX2FuaW1hdGlvbi5nZXQoKSwgQ0FDRkFuaW1hdGlv
bkdldFRpbWluZ0Z1bmN0aW9ucyh2YWx1ZS0+cGxhdGZvcm1BbmltYXRpb24oKSkpOworfQorCisj
ZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpJbmRleDogV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBQW5pbWF0aW9uLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBQW5pbWF0aW9uLmgJKHJldmlzaW9u
IDc1MjI3KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBQW5pbWF0
aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDEwICs0NCw4IEBACiB0eXBlZGVmIHZvaWQqIFBs
YXRmb3JtQW5pbWF0aW9uUmVmOwogI2VuZGlmCiAjZWxpZiBQTEFURk9STShXSU4pCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci1jbGFzcyBXS0NBQ0ZBbmltYXRpb247Ci10eXBlZGVmIFdLQ0FDRkFuaW1h
dGlvbiogUGxhdGZvcm1BbmltYXRpb25SZWY7Ci19Cit0eXBlZGVmIHN0cnVjdCBfQ0FDRkFuaW1h
dGlvbiogQ0FDRkFuaW1hdGlvblJlZjsKK3R5cGVkZWYgQ0FDRkFuaW1hdGlvblJlZiBQbGF0Zm9y
bUFuaW1hdGlvblJlZjsKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkluZGV4OiBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1
YWxDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
TWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dC5oCShyZXZpc2lvbiA3NTIy
NykKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZVF1
aWNrVGltZVZpc3VhbENvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNiBAQAog
CiAjaWYgRU5BQkxFKFZJREVPKQogCi0jaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgogI2luY2x1
ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZS5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KQEAgLTUxLDcgKzUwLDcgQEAKIGNsYXNzIEludFJlY3Q7CiAKICNpZiBV
U0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi1jbGFzcyBXS0NBQ0ZMYXllcjsKK2NsYXNzIFBs
YXRmb3JtQ0FMYXllcjsKIGNsYXNzIFdLQ0FJbWFnZVF1ZXVlOwogI2VuZGlmCiAKQEAgLTY3LDgg
KzY2LDkgQEAKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNGdWxsc2NyZWVuKCkgY29uc3Q7CiAg
ICAgdmlydHVhbCBQbGF0Zm9ybU1lZGlhIHBsYXRmb3JtTWVkaWEoKSBjb25zdDsKICNpZiBVU0Uo
QUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXll
cigpIGNvbnN0OworICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNv
bnN0OwogI2VuZGlmCisKICAgICBJbnRTaXplIG5hdHVyYWxTaXplKCkgY29uc3Q7CiAgICAgYm9v
bCBoYXNWaWRlbygpIGNvbnN0OwogICAgIGJvb2wgaGFzQXVkaW8oKSBjb25zdDsKQEAgLTE2MSwx
MCArMTYxLDYgQEAKICAgICBjbGFzcyBMYXllckNsaWVudDsKICAgICBmcmllbmQgY2xhc3MgTGF5
ZXJDbGllbnQ7CiAgICAgT3duUHRyPExheWVyQ2xpZW50PiBtX2xheWVyQ2xpZW50OwotCi0gICAg
Y2xhc3MgTGF5b3V0Q2xpZW50OwotICAgIGZyaWVuZCBjbGFzcyBMYXlvdXRDbGllbnQ7Ci0gICAg
T3duUHRyPExheW91dENsaWVudD4gbV9sYXlvdXRDbGllbnQ7CiAjZW5kaWYKIAogICAgIGNsYXNz
IFZpc3VhbENvbnRleHRDbGllbnQ7CkBAIC0xNzgsOCArMTc0LDggQEAKICAgICBNZWRpYVBsYXll
ciogbV9wbGF5ZXI7CiAgICAgUmVmUHRyPFFUTW92aWU+IG1fbW92aWU7CiAjaWYgVVNFKEFDQ0VM
RVJBVEVEX0NPTVBPU0lUSU5HKQotICAgIFJlZlB0cjxXS0NBQ0ZMYXllcj4gbV9xdFZpZGVvTGF5
ZXI7Ci0gICAgT3duUHRyPEdyYXBoaWNzTGF5ZXI+IG1fdHJhbnNmb3JtTGF5ZXI7CisgICAgUmVm
UHRyPFBsYXRmb3JtQ0FMYXllcj4gbV9xdFZpZGVvTGF5ZXI7CisgICAgUmVmUHRyPFBsYXRmb3Jt
Q0FMYXllcj4gbV90cmFuc2Zvcm1MYXllcjsKICAgICBPd25QdHI8V0tDQUltYWdlUXVldWU+IG1f
aW1hZ2VRdWV1ZTsKICAgICBPd25QdHI8UVREZWNvbXByZXNzaW9uU2Vzc2lvbj4gbV9kZWNvbXBy
ZXNzaW9uU2Vzc2lvbjsKICAgICBDR0FmZmluZVRyYW5zZm9ybSBtX21vdmllVHJhbnNmb3JtOyAK
SW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZUZ1
bGxzY3JlZW5XaW5kb3cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3cuY3BwCShyZXZpc2lvbiA3
NTIyNykKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0
ZUZ1bGxzY3JlZW5XaW5kb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MCw3ICs5MCw3IEBACiB9
CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi12b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUZ1bGxzY3JlZW5XaW5kb3c6OnNldFJvb3RDaGlsZExheWVyKFBhc3NSZWZQdHI8V0tDQUNG
TGF5ZXI+IHJvb3RDaGlsZCkKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRv
dzo6c2V0Um9vdENoaWxkTGF5ZXIoUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IHJvb3RDaGls
ZCkKIHsKICAgICBpZiAobV9yb290Q2hpbGQgPT0gcm9vdENoaWxkKQogICAgICAgICByZXR1cm47
CkBAIC0xMDQsNyArMTA0LDcgQEAKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9sYXllclJlbmRl
cmVyLT5zZXRSb290Q2hpbGRMYXllcihtX3Jvb3RDaGlsZC5nZXQoKSk7Ci0gICAgV0tDQUNGTGF5
ZXIqIHJvb3RMYXllciA9IG1fcm9vdENoaWxkLT5yb290TGF5ZXIoKTsKKyAgICBQbGF0Zm9ybUNB
TGF5ZXIqIHJvb3RMYXllciA9IG1fcm9vdENoaWxkLT5yb290TGF5ZXIoKTsKICAgICBDR1JlY3Qg
cm9vdEJvdW5kcyA9IG1fcm9vdENoaWxkLT5yb290TGF5ZXIoKS0+Ym91bmRzKCk7CiAgICAgbV9y
b290Q2hpbGQtPnNldEZyYW1lKHJvb3RCb3VuZHMpOwogICAgIG1fcm9vdENoaWxkLT5zZXRCYWNr
Z3JvdW5kQ29sb3IoQ0dDb2xvckdldENvbnN0YW50Q29sb3Ioa0NHQ29sb3JCbGFjaykpOwpAQCAt
MTYwLDcgKzE2MCw3IEBACiAgICAgICAgICAgICAgICAgYnJlYWs7CiAjaWYgVVNFKEFDQ0VMRVJB
VEVEX0NPTVBPU0lUSU5HKQogICAgICAgICAgICAgbV9sYXllclJlbmRlcmVyLT5yZXNpemUoKTsK
LSAgICAgICAgICAgIFdLQ0FDRkxheWVyKiByb290TGF5ZXIgPSBtX3Jvb3RDaGlsZC0+cm9vdExh
eWVyKCk7CisgICAgICAgICAgICBQbGF0Zm9ybUNBTGF5ZXIqIHJvb3RMYXllciA9IG1fcm9vdENo
aWxkLT5yb290TGF5ZXIoKTsKICAgICAgICAgICAgIENHUmVjdCByb290Qm91bmRzID0gbV9yb290
Q2hpbGQtPnJvb3RMYXllcigpLT5ib3VuZHMoKTsKICAgICAgICAgICAgIG1fcm9vdENoaWxkLT5z
ZXRGcmFtZShyb290Qm91bmRzKTsKICAgICAgICAgICAgIG1fcm9vdENoaWxkLT5zZXROZWVkc0xh
eW91dCgpOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250
ZXh0Q0dXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0dyYXBoaWNzQ29udGV4dENHV2luLmNwcAkocmV2aXNpb24gNzUyMjcpCisrKyBXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRDR1dpbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQzLDggKzQzLDE2IEBACiAgICAgQklUTUFQIGluZm87CiAKICAgICBHZXRPYmplY3Qo
Yml0bWFwLCBzaXplb2YoaW5mbyksICZpbmZvKTsKLSAgICBBU1NFUlQoaW5mby5ibUJpdHNQaXhl
bCA9PSAzMik7CiAKKyAgICAvLyBGSVhNRTogV2UgY2FuIGdldCBoZXJlIGJlY2F1c2Ugd2UgYXNr
ZWQgZm9yIGEgYml0bWFwIHRoYXQgaXMgdG9vIGJpZworICAgIC8vIHdoZW4gd2UgaGF2ZSBhIHRp
bGVkIGxheWVyIGFuZCB3ZSdyZSBjb21wb3NpdGluZy4gSW4gdGhhdCBjYXNlIAorICAgIC8vIGJt
Qml0c1BpeGVsIHdpbGwgYmUgMC4gVGhpcyBzZWVtcyB0byBiZSBiZW5pZ24sIHNvIGZvciBub3cg
d2Ugd2lsbAorICAgIC8vIGV4aXQgZ3JhY2VmdWxseSBhbmQgbG9vayBhdCBpdCBsYXRlcjoKKyAg
ICAvLyAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUyMDQxICAgCisg
ICAgLy8gQVNTRVJUKGluZm8uYm1CaXRzUGl4ZWwgPT0gMzIpOworICAgIGlmIChpbmZvLmJtQml0
c1BpeGVsICE9IDMyKQorICAgICAgICByZXR1cm4gMDsKKwogICAgIENHQml0bWFwSW5mbyBiaXRt
YXBJbmZvID0ga0NHQml0bWFwQnl0ZU9yZGVyMzJMaXR0bGUgfCAoaGFzQWxwaGEgPyBrQ0dJbWFn
ZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0IDoga0NHSW1hZ2VBbHBoYU5vbmVTa2lwRmlyc3QpOwog
ICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKGluZm8uYm1C
aXRzLCBpbmZvLmJtV2lkdGgsIGluZm8uYm1IZWlnaHQsIDgsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mby5ibVdpZHRoQnl0ZXMsIGRldmljZVJH
QkNvbG9yU3BhY2VSZWYoKSwgYml0bWFwSW5mbyk7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlRnVs
bHNjcmVlbldpbmRvdy5oCShyZXZpc2lvbiA3NTIyNykKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3cuaAkod29ya2luZyBj
b3B5KQpAQCAtMjcsNyArMjcsNyBAQAogI2RlZmluZSBNZWRpYVBsYXllclByaXZhdGVGdWxsc2Ny
ZWVuV2luZG93X2gKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLSNpbmNsdWRl
ICJXS0NBQ0ZMYXllci5oIgorI2luY2x1ZGUgIlBsYXRmb3JtQ0FMYXllci5oIgogI2luY2x1ZGUg
IldLQ0FDRkxheWVyUmVuZGVyZXIuaCIKICNlbmRpZgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4K
QEAgLTYxLDggKzYxLDggQEAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAg
V0tDQUNGTGF5ZXJSZW5kZXJlciogbGF5ZXJSZW5kZXJlcigpIGNvbnN0IHsgcmV0dXJuIG1fbGF5
ZXJSZW5kZXJlci5nZXQoKTsgfQogCi0gICAgV0tDQUNGTGF5ZXIqIHJvb3RDaGlsZExheWVyKCkg
Y29uc3QgeyByZXR1cm4gbV9yb290Q2hpbGQuZ2V0KCk7IH0KLSAgICB2b2lkIHNldFJvb3RDaGls
ZExheWVyKFBhc3NSZWZQdHI8V0tDQUNGTGF5ZXI+KTsKKyAgICBQbGF0Zm9ybUNBTGF5ZXIqIHJv
b3RDaGlsZExheWVyKCkgY29uc3QgeyByZXR1cm4gbV9yb290Q2hpbGQuZ2V0KCk7IH0KKyAgICB2
b2lkIHNldFJvb3RDaGlsZExheWVyKFBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPik7CiAjZW5k
aWYKIAogcHJpdmF0ZToKQEAgLTcyLDcgKzcyLDcgQEAKICAgICBNZWRpYVBsYXllclByaXZhdGVG
dWxsc2NyZWVuQ2xpZW50KiBtX2NsaWVudDsKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJ
TkcpCiAgICAgT3duUHRyPFdLQ0FDRkxheWVyUmVuZGVyZXI+IG1fbGF5ZXJSZW5kZXJlcjsKLSAg
ICBSZWZQdHI8V0tDQUNGTGF5ZXI+IG1fcm9vdENoaWxkOworICAgIFJlZlB0cjxQbGF0Zm9ybUNB
TGF5ZXI+IG1fcm9vdENoaWxkOwogI2VuZGlmCiAgICAgSFdORCBtX2h3bmQ7CiB9OwpJbmRleDog
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vV0tDQUNGTGF5ZXJSZW5kZXJlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vV0tDQUNGTGF5ZXJSZW5k
ZXJlci5jcHAJKHJldmlzaW9uIDc1MjI3KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vV0tDQUNGTGF5ZXJSZW5kZXJlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDEwICszMywx
MiBAQAogCiAjaW5jbHVkZSAiV0tDQUNGTGF5ZXJSZW5kZXJlci5oIgogCisjaW5jbHVkZSAiUGxh
dGZvcm1DQUxheWVyLmgiCiAjaW5jbHVkZSAiV0tDQUNGQ29udGV4dEZsdXNoZXIuaCIKLSNpbmNs
dWRlICJXS0NBQ0ZMYXllci5oIgogI2luY2x1ZGUgIldlYkNvcmVJbnN0YW5jZUhhbmRsZS5oIgog
I2luY2x1ZGUgPFdlYktpdFN5c3RlbUludGVyZmFjZS9XZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4K
KyNpbmNsdWRlIDxsaW1pdHMuaD4KKyNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9Pd25BcnJheVB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9Pd25QdHIuaD4KQEAgLTQ1LDYgKzQ3LDggQEAKICNpbmNsdWRlIDxkM2Q5Lmg+CiAj
aW5jbHVkZSA8ZDNkeDkuaD4KIAordXNpbmcgbmFtZXNwYWNlIHN0ZDsKKwogI3ByYWdtYSBjb21t
ZW50KGxpYiwgImQzZDkiKQogI3ByYWdtYSBjb21tZW50KGxpYiwgImQzZHg5IikKICNpZmRlZiBE
RUJVR19BTEwKQEAgLTc5LDMzICs4Myw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8g
U3ViY2xhc3Mgb2YgV0tDQUNGTGF5ZXIgdG8gYWxsb3cgdGhlIHJvb3QgbGF5ZXIgdG8gaGF2ZSBh
IGJhY2sgcG9pbnRlciB0byB0aGUgbGF5ZXIgcmVuZGVyZXIKLS8vIHRvIGZpcmUgb2ZmIGEgZHJh
dwotY2xhc3MgV0tDQUNGUm9vdExheWVyIDogcHVibGljIFdLQ0FDRkxheWVyIHsKLXB1YmxpYzoK
LSAgICBXS0NBQ0ZSb290TGF5ZXIoV0tDQUNGTGF5ZXJSZW5kZXJlciogcmVuZGVyZXIpCi0gICAg
ICAgIDogV0tDQUNGTGF5ZXIoV0tDQUNGTGF5ZXI6OkxheWVyKQotICAgIHsKLSAgICAgICAgbV9y
ZW5kZXJlciA9IHJlbmRlcmVyOwotICAgIH0KLQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdLQ0FD
RlJvb3RMYXllcj4gY3JlYXRlKFdLQ0FDRkxheWVyUmVuZGVyZXIqIHJlbmRlcmVyKQotICAgIHsK
LSAgICAgICAgaWYgKCFXS0NBQ0ZMYXllclJlbmRlcmVyOjphY2NlbGVyYXRlZENvbXBvc2l0aW5n
QXZhaWxhYmxlKCkpCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBXS0NBQ0ZSb290TGF5ZXIocmVuZGVyZXIpKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFs
IHZvaWQgc2V0TmVlZHNSZW5kZXIoKSB7IG1fcmVuZGVyZXItPmxheWVyVHJlZURpZENoYW5nZSgp
OyB9Ci0KLSAgICAvLyBPdmVybG9hZCB0aGlzIHRvIGF2b2lkIGNhbGxpbmcgc2V0TmVlZHNEaXNw
bGF5IG9uIHRoZSBsYXllciwgd2hpY2ggd291bGQgb3ZlcnJpZGUgdGhlIGNvbnRlbnRzCi0gICAg
Ly8gd2UgaGF2ZSBwbGFjZWQgb24gdGhlIHJvb3QgbGF5ZXIuCi0gICAgdmlydHVhbCB2b2lkIHNl
dE5lZWRzRGlzcGxheShjb25zdCBDR1JlY3QqIGRpcnR5UmVjdCkgeyBzZXROZWVkc0NvbW1pdCgp
OyB9Ci0KLXByaXZhdGU6Ci0gICAgV0tDQUNGTGF5ZXJSZW5kZXJlciogbV9yZW5kZXJlcjsKLX07
Ci0KIHN0YXRpYyBEM0RQUkVTRU5UX1BBUkFNRVRFUlMgaW5pdGlhbFByZXNlbnRhdGlvblBhcmFt
ZXRlcnMoKQogewogICAgIEQzRFBSRVNFTlRfUEFSQU1FVEVSUyBwYXJhbWV0ZXJzID0gezB9OwpA
QCAtMjA2LDEzICsxODMsMTcgQEAKIFdLQ0FDRkxheWVyUmVuZGVyZXI6OldLQ0FDRkxheWVyUmVu
ZGVyZXIoV0tDQUNGTGF5ZXJSZW5kZXJlckNsaWVudCogY2xpZW50KQogICAgIDogbV9jbGllbnQo
Y2xpZW50KQogICAgICwgbV9taWdodEJlQWJsZVRvQ3JlYXRlRGV2aWNlTGF0ZXIodHJ1ZSkKLSAg
ICAsIG1fcm9vdExheWVyKFdLQ0FDRlJvb3RMYXllcjo6Y3JlYXRlKHRoaXMpKQorICAgICwgbV9y
b290TGF5ZXIoUGxhdGZvcm1DQUxheWVyOjpjcmVhdGUoUGxhdGZvcm1DQUxheWVyOjpMYXllclR5
cGVSb290TGF5ZXIsIDApKQogICAgICwgbV9jb250ZXh0KHdrQ0FDRkNvbnRleHRDcmVhdGUoKSkK
ICAgICAsIG1faG9zdFdpbmRvdygwKQogICAgICwgbV9yZW5kZXJUaW1lcih0aGlzLCAmV0tDQUNG
TGF5ZXJSZW5kZXJlcjo6cmVuZGVyVGltZXJGaXJlZCkKICAgICAsIG1fYmFja2luZ1N0b3JlRGly
dHkoZmFsc2UpCiAgICAgLCBtX211c3RSZXNldExvc3REZXZpY2VCZWZvcmVSZW5kZXJpbmcoZmFs
c2UpCisgICAgLCBtX3N5bmNMYXllckNoYW5nZXMoZmFsc2UpCiB7CisgICAgLy8gUG9pbnQgdGhl
IENBQ0ZDb250ZXh0IHRvIHRoaXMKKyAgICB3a0NBQ0ZDb250ZXh0U2V0VXNlckRhdGEobV9jb250
ZXh0LCB0aGlzKTsKKwogICAgIC8vIFVuZGVyIHRoZSByb290IGxheWVyLCB3ZSBoYXZlIGEgY2xp
cHBpbmcgbGF5ZXIgdG8gY2xpcCB0aGUgY29udGVudCwKICAgICAvLyB0aGF0IGNvbnRhaW5zIGEg
c2Nyb2xsIGxheWVyIHRoYXQgd2UgdXNlIGZvciBzY3JvbGxpbmcgdGhlIGNvbnRlbnQuCiAgICAg
Ly8gVGhlIHJvb3QgbGF5ZXIgaXMgdGhlIHNpemUgb2YgdGhlIGNsaWVudCBhcmVhIG9mIHRoZSB3
aW5kb3cuCkBAIC0yMjMsNyArMjA0LDcgQEAKICAgICAvLyBTY3JvbGxpbmcgd2lsbCBhZmZlY3Qg
b25seSB0aGUgcG9zaXRpb24gb2YgdGhlIHNjcm9sbCBsYXllciB3aXRob3V0IGFmZmVjdGluZyB0
aGUgYm91bmRzLgogCiAgICAgbV9yb290TGF5ZXItPnNldE5hbWUoIldLQ0FDRkxheWVyUmVuZGVy
ZXIgcm9vdExheWVyIik7Ci0gICAgbV9yb290TGF5ZXItPnNldEFuY2hvclBvaW50KENHUG9pbnRN
YWtlKDAsIDApKTsKKyAgICBtX3Jvb3RMYXllci0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludDNE
KDAsIDAsIDApKTsKICAgICBtX3Jvb3RMYXllci0+c2V0R2VvbWV0cnlGbGlwcGVkKHRydWUpOwog
CiAjaWZuZGVmIE5ERUJVRwpAQCAtMjMzLDcgKzIxNCw3IEBACiAjZW5kaWYKIAogICAgIGlmICht
X2NvbnRleHQpCi0gICAgICAgIG1fcm9vdExheWVyLT5iZWNvbWVSb290TGF5ZXJGb3JDb250ZXh0
KG1fY29udGV4dCk7CisgICAgICAgIHdrQ0FDRkNvbnRleHRTZXRMYXllcihtX2NvbnRleHQsIG1f
cm9vdExheWVyLT5wbGF0Zm9ybUxheWVyKCkpOwogCiAjaWZuZGVmIE5ERUJVRwogICAgIGNoYXIq
IHByaW50VHJlZUZsYWcgPSBnZXRlbnYoIkNBX1BSSU5UX1RSRUUiKTsKQEAgLTI0NywxMSArMjI4
LDE2IEBACiAgICAgd2tDQUNGQ29udGV4dERlc3Ryb3kobV9jb250ZXh0KTsKIH0KIAotV0tDQUNG
TGF5ZXIqIFdLQ0FDRkxheWVyUmVuZGVyZXI6OnJvb3RMYXllcigpIGNvbnN0CitQbGF0Zm9ybUNB
TGF5ZXIqIFdLQ0FDRkxheWVyUmVuZGVyZXI6OnJvb3RMYXllcigpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIG1fcm9vdExheWVyLmdldCgpOwogfQogCit2b2lkIFdLQ0FDRkxheWVyUmVuZGVyZXI6OmFk
ZFBlbmRpbmdBbmltYXRlZExheWVyKFBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBsYXllcikK
K3sKKyAgICBtX3BlbmRpbmdBbmltYXRlZExheWVycy5hZGQobGF5ZXIpOworfQorCiB2b2lkIFdL
Q0FDRkxheWVyUmVuZGVyZXI6OnNldFJvb3RDb250ZW50cyhDR0ltYWdlUmVmIGltYWdlKQogewog
ICAgIEFTU0VSVChtX3Jvb3RMYXllcik7CkBAIC0yNjYsMTIgKzI1MiwxMiBAQAogICAgIHBhaW50
KCk7CiB9CiAKLXZvaWQgV0tDQUNGTGF5ZXJSZW5kZXJlcjo6c2V0Um9vdENoaWxkTGF5ZXIoV0tD
QUNGTGF5ZXIqIGxheWVyKQordm9pZCBXS0NBQ0ZMYXllclJlbmRlcmVyOjpzZXRSb290Q2hpbGRM
YXllcihQbGF0Zm9ybUNBTGF5ZXIqIGxheWVyKQogewogICAgIG1fcm9vdExheWVyLT5yZW1vdmVB
bGxTdWJsYXllcnMoKTsKICAgICBtX3Jvb3RDaGlsZExheWVyID0gbGF5ZXI7CiAgICAgaWYgKG1f
cm9vdENoaWxkTGF5ZXIpCi0gICAgICAgIG1fcm9vdExheWVyLT5hZGRTdWJsYXllcihtX3Jvb3RD
aGlsZExheWVyKTsKKyAgICAgICAgbV9yb290TGF5ZXItPmFwcGVuZFN1YmxheWVyKG1fcm9vdENo
aWxkTGF5ZXIuZ2V0KCkpOwogfQogICAgCiB2b2lkIFdLQ0FDRkxheWVyUmVuZGVyZXI6OmxheWVy
VHJlZURpZENoYW5nZSgpCkBAIC0yODAsOCArMjY2LDExIEBACiAgICAgcmVuZGVyU29vbigpOwog
fQogCi12b2lkIFdLQ0FDRkxheWVyUmVuZGVyZXI6OnNldE5lZWRzRGlzcGxheSgpCit2b2lkIFdL
Q0FDRkxheWVyUmVuZGVyZXI6OnNldE5lZWRzRGlzcGxheShib29sIHN5bmMpCiB7CisgICAgaWYg
KCFtX3N5bmNMYXllckNoYW5nZXMgJiYgc3luYykKKyAgICAgICAgbV9zeW5jTGF5ZXJDaGFuZ2Vz
ID0gdHJ1ZTsKKwogICAgIEFTU0VSVChtX3Jvb3RMYXllcik7CiAgICAgbV9yb290TGF5ZXItPnNl
dE5lZWRzRGlzcGxheSgwKTsKICAgICByZW5kZXJTb29uKCk7CkBAIC0zNjEsOCArMzUwLDcgQEAK
IAogdm9pZCBXS0NBQ0ZMYXllclJlbmRlcmVyOjpkZXN0cm95UmVuZGVyZXIoKQogewotICAgIGlm
IChtX2NvbnRleHQpCi0gICAgICAgIFdLQ0FDRkNvbnRleHRGbHVzaGVyOjpzaGFyZWQoKS5yZW1v
dmVDb250ZXh0KG1fY29udGV4dCk7CisgICAgd2tDQUNGQ29udGV4dFNldExheWVyKG1fY29udGV4
dCwgbV9yb290TGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSk7CiAKICAgICBtX2QzZERldmljZSA9IDA7
CiAgICAgaWYgKHNfZDNkKQpAQCAtNDYzLDIwICs0NTEsNDAgQEAKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAorICAgIC8vIFN5bmMgdGhlIGxheWVyIGlmIG5lZWRlZAorICAgIGlmIChtX3N5bmNM
YXllckNoYW5nZXMpIHsKKyAgICAgICAgbV9jbGllbnQtPnN5bmNDb21wb3NpdGluZ1N0YXRlKCk7
CisgICAgICAgIG1fc3luY0xheWVyQ2hhbmdlcyA9IGZhbHNlOworICAgIH0KKwogICAgIC8vIEZs
dXNoIHRoZSByb290IGxheWVyIHRvIHRoZSByZW5kZXIgdHJlZS4KLSAgICBXS0NBQ0ZDb250ZXh0
Rmx1c2hlcjo6c2hhcmVkKCkuZmx1c2hBbGxDb250ZXh0cygpOworICAgIHdrQ0FDRkNvbnRleHRG
bHVzaChtX2NvbnRleHQpOwogCisgICAgLy8gQWxsIHBlbmRpbmcgYW5pbWF0aW9ucyB3aWxsIGhh
dmUgYmVlbiBzdGFydGVkIHdpdGggdGhlIGZsdXNoLiBGaXJlIHRoZSBhbmltYXRpb25TdGFydGVk
IGNhbGxzCisgICAgZG91YmxlIGN1cnJlbnRUaW1lID0gV1RGOjpjdXJyZW50VGltZSgpOworICAg
IGRvdWJsZSBjdXJyZW50TWVkaWFUaW1lID0gQ0FDdXJyZW50TWVkaWFUaW1lKCk7CisgICAgZG91
YmxlIHQgPSBjdXJyZW50VGltZSArIHdrQ0FDRkNvbnRleHRHZXRMYXN0Q29tbWl0VGltZShtX2Nv
bnRleHQpIC0gY3VycmVudE1lZGlhVGltZTsKKyAgICBBU1NFUlQodCA8PSBjdXJyZW50VGltZSk7
CisKKyAgICBIYXNoU2V0PFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+ID46Oml0ZXJhdG9yIGVuZCA9
IG1fcGVuZGluZ0FuaW1hdGVkTGF5ZXJzLmVuZCgpOworICAgIGZvciAoSGFzaFNldDxSZWZQdHI8
UGxhdGZvcm1DQUxheWVyPiA+OjppdGVyYXRvciBpdCA9IG1fcGVuZGluZ0FuaW1hdGVkTGF5ZXJz
LmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBQbGF0Zm9ybUNBTGF5ZXJDbGll
bnQqIG93bmVyID0gKCppdCktPm93bmVyKCk7CisgICAgICAgIG93bmVyLT5wbGF0Zm9ybUNBTGF5
ZXJBbmltYXRpb25TdGFydGVkKHQpOworICAgIH0KKworICAgIG1fcGVuZGluZ0FuaW1hdGVkTGF5
ZXJzLmNsZWFyKCk7CisKICAgICBDR1JlY3QgYm91bmRzID0gdGhpcy0+Ym91bmRzKCk7CiAKLSAg
ICBDRlRpbWVJbnRlcnZhbCB0ID0gQ0FDdXJyZW50TWVkaWFUaW1lKCk7Ci0KICAgICAvLyBHaXZl
IHRoZSByZW5kZXJlciBzb21lIHNwYWNlIHRvIHVzZS4gVGhpcyBuZWVkcyB0byBiZSB2YWxpZCB1
bnRpbCB0aGUKICAgICAvLyB3a0NBQ0ZDb250ZXh0RmluaXNoVXBkYXRlKCkgY2FsbCBiZWxvdy4K
ICAgICBjaGFyIHNwYWNlWzQwOTZdOwotICAgIGlmICghd2tDQUNGQ29udGV4dEJlZ2luVXBkYXRl
KG1fY29udGV4dCwgc3BhY2UsIHNpemVvZihzcGFjZSksIHQsIGJvdW5kcywgd2luZG93RGlydHlS
ZWN0cy5kYXRhKCksIHdpbmRvd0RpcnR5UmVjdHMuc2l6ZSgpKSkKKyAgICBpZiAoIXdrQ0FDRkNv
bnRleHRCZWdpblVwZGF0ZShtX2NvbnRleHQsIHNwYWNlLCBzaXplb2Yoc3BhY2UpLCBjdXJyZW50
TWVkaWFUaW1lLCBib3VuZHMsIHdpbmRvd0RpcnR5UmVjdHMuZGF0YSgpLCB3aW5kb3dEaXJ0eVJl
Y3RzLnNpemUoKSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEhSRVNVTFQgZXJyID0gU19PSzsK
KyAgICBDRlRpbWVJbnRlcnZhbCB0aW1lVG9OZXh0UmVuZGVyID0gbnVtZXJpY19saW1pdHM8Q0ZU
aW1lSW50ZXJ2YWw+OjppbmZpbml0eSgpOworCiAgICAgZG8gewogICAgICAgICAvLyBGSVhNRTog
ZG9uJ3QgbmVlZCB0byBjbGVhciBkaXJ0eSByZWdpb24gaWYgbGF5ZXIgdHJlZSBpcyBvcGFxdWUu
CiAKQEAgLTQ5Niw2ICs1MDQsOCBAQAogICAgICAgICB9CiAgICAgICAgIHdrQ0FDRlVwZGF0ZVJl
Y3RFbnVtZXJhdG9yUmVsZWFzZShlKTsKIAorICAgICAgICB0aW1lVG9OZXh0UmVuZGVyID0gd2tD
QUNGQ29udGV4dEdldE5leHRVcGRhdGVUaW1lKG1fY29udGV4dCk7CisKICAgICAgICAgaWYgKHJl
Y3RzLmlzRW1wdHkoKSkKICAgICAgICAgICAgIGJyZWFrOwogCkBAIC01MjMsNiArNTMzLDEwIEBA
CiAgICAgaWYgKG1fcHJpbnRUcmVlKQogICAgICAgICBtX3Jvb3RMYXllci0+cHJpbnRUcmVlKCk7
CiAjZW5kaWYKKworICAgIC8vIElmIHRpbWVUb05leHRSZW5kZXIgaXMgbm90IGluZmluaXR5LCBp
dCBtZWFucyBhbmltYXRpb25zIGFyZSBydW5uaW5nLCBzbyBxdWV1ZSB1cCB0byByZW5kZXIgYWdh
aW4KKyAgICBpZiAodGltZVRvTmV4dFJlbmRlciAhPSBudW1lcmljX2xpbWl0czxDRlRpbWVJbnRl
cnZhbD46OmluZmluaXR5KCkpCisgICAgICAgIHJlbmRlclNvb24oKTsKIH0KIAogdm9pZCBXS0NB
Q0ZMYXllclJlbmRlcmVyOjpyZW5kZXJTb29uKCkKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvbnRleHQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJp
dmF0ZVF1aWNrVGltZVZpc3VhbENvbnRleHQuY3BwCShyZXZpc2lvbiA3NTIyNykKKysrIFdlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3Vh
bENvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw4ICs1Nyw3IEBACiAjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5H
KQotI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDQUNGLmgiCi0jaW5jbHVkZSAiV0tDQUNGTGF5ZXIu
aCIKKyNpbmNsdWRlICJQbGF0Zm9ybUNBTGF5ZXIuaCIKICNpbmNsdWRlICJXS0NBSW1hZ2VRdWV1
ZS5oIgogI2VuZGlmCiAKQEAgLTg1LDQ4ICs4NCw0OSBAQAogfTsKIAogI2lmIFVTRShBQ0NFTEVS
QVRFRF9DT01QT1NJVElORykKLS8vIEludGVyZmFjZSBkZWNsYXJhdGlvbiBmb3IgTWVkaWFQbGF5
ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dCdzIEdyYXBoaWNzTGF5ZXJDbGllbnQgYWdn
cmVnYXRlCi1jbGFzcyBNZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0OjpM
YXllckNsaWVudCA6IHB1YmxpYyBHcmFwaGljc0xheWVyQ2xpZW50IHsKK2NsYXNzIE1lZGlhUGxh
eWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvbnRleHQ6OkxheWVyQ2xpZW50IDogcHVibGljIFBs
YXRmb3JtQ0FMYXllckNsaWVudCB7CiBwdWJsaWM6CiAgICAgTGF5ZXJDbGllbnQoTWVkaWFQbGF5
ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dCogcGFyZW50KSA6IG1fcGFyZW50KHBhcmVu
dCkge30KICAgICB2aXJ0dWFsIH5MYXllckNsaWVudCgpIHsgbV9wYXJlbnQgPSAwOyB9Ci0gICAg
dmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoY29uc3QgR3JhcGhpY3NMYXllciosIEdyYXBoaWNz
Q29udGV4dCYsIEdyYXBoaWNzTGF5ZXJQYWludGluZ1BoYXNlLCBjb25zdCBJbnRSZWN0JiBpbkNs
aXApOwotICAgIHZpcnR1YWwgdm9pZCBub3RpZnlBbmltYXRpb25TdGFydGVkKGNvbnN0IEdyYXBo
aWNzTGF5ZXIqLCBkb3VibGUgdGltZSkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIG5vdGlmeVN5bmNS
ZXF1aXJlZChjb25zdCBHcmFwaGljc0xheWVyKikgeyB9Ci0gICAgdmlydHVhbCBib29sIHNob3dE
ZWJ1Z0JvcmRlcnMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBz
aG93UmVwYWludENvdW50ZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotcHJpdmF0ZToKLSAg
ICBNZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0KiBtX3BhcmVudDsKLX07
CiAKLWNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvbnRleHQ6OkxheW91
dENsaWVudCA6IHB1YmxpYyBXS0NBQ0ZMYXllckxheW91dENsaWVudCB7Ci1wdWJsaWM6Ci0gICAg
TGF5b3V0Q2xpZW50KE1lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvbnRleHQqIHBh
cmVudCkgOiBtX3BhcmVudChwYXJlbnQpIHt9Ci0gICAgdmlydHVhbCB2b2lkIGxheW91dFN1Ymxh
eWVyc09mTGF5ZXIoV0tDQUNGTGF5ZXIqKTsKIHByaXZhdGU6CisgICAgdmlydHVhbCB2b2lkIHBs
YXRmb3JtQ0FMYXllckxheW91dFN1YmxheWVyc09mTGF5ZXIoUGxhdGZvcm1DQUxheWVyKik7Cisg
ICAgdmlydHVhbCBib29sIHBsYXRmb3JtQ0FMYXllclJlc3BvbmRzVG9MYXlvdXRDaGFuZ2VzKCkg
Y29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQ0FMYXll
ckFuaW1hdGlvblN0YXJ0ZWQoQ0ZUaW1lSW50ZXJ2YWwgYmVnaW5UaW1lKSB7IH0KKyAgICB2aXJ0
dWFsIEdyYXBoaWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBwbGF0
Zm9ybUNBTGF5ZXJDb250ZW50c09yaWVudGF0aW9uKCkgY29uc3QgeyByZXR1cm4gR3JhcGhpY3NM
YXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc0JvdHRvbVVwOyB9CisgICAgdmlydHVhbCB2b2lk
IHBsYXRmb3JtQ0FMYXllclBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50
UmVjdCYgaW5DbGlwKSB7IH0KKyAgICB2aXJ0dWFsIGJvb2wgcGxhdGZvcm1DQUxheWVyU2hvd0Rl
YnVnQm9yZGVycygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIHBs
YXRmb3JtQ0FMYXllclNob3dSZXBhaW50Q291bnRlcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgdmlydHVhbCBpbnQgcGxhdGZvcm1DQUxheWVySW5jcmVtZW50UmVwYWludENvdW50KCkg
eyByZXR1cm4gMDsgfQorCisgICAgdmlydHVhbCBib29sIHBsYXRmb3JtQ0FMYXllckNvbnRlbnRz
T3BhcXVlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgcGxhdGZv
cm1DQUxheWVyRHJhd3NDb250ZW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgcGxhdGZvcm1DQUxheWVyTGF5ZXJEaWREaXNwbGF5KFBsYXRmb3JtTGF5ZXIqKSB7
IH0KKwogICAgIE1lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvbnRleHQqIG1fcGFy
ZW50OwogfTsKIAotdm9pZCBNZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0
OjpMYXlvdXRDbGllbnQ6OmxheW91dFN1YmxheWVyc09mTGF5ZXIoV0tDQUNGTGF5ZXIqIGxheWVy
KQordm9pZCBNZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0OjpMYXllckNs
aWVudDo6cGxhdGZvcm1DQUxheWVyTGF5b3V0U3VibGF5ZXJzT2ZMYXllcihQbGF0Zm9ybUNBTGF5
ZXIqIGxheWVyKQogewogICAgIEFTU0VSVChtX3BhcmVudCk7Ci0gICAgQVNTRVJUKG1fcGFyZW50
LT5tX3RyYW5zZm9ybUxheWVyLT5wbGF0Zm9ybUxheWVyKCkgPT0gbGF5ZXIpOworICAgIEFTU0VS
VChtX3BhcmVudC0+bV90cmFuc2Zvcm1MYXllciA9PSBsYXllcik7CiAKLSAgICBDR1NpemUgcGFy
ZW50U2l6ZSA9IGxheWVyLT5ib3VuZHMoKS5zaXplOwotICAgIENHU2l6ZSBuYXR1cmFsU2l6ZSA9
IG1fcGFyZW50LT5uYXR1cmFsU2l6ZSgpOworICAgIEZsb2F0U2l6ZSBwYXJlbnRTaXplID0gbGF5
ZXItPmJvdW5kcygpLnNpemUoKTsKKyAgICBGbG9hdFNpemUgbmF0dXJhbFNpemUgPSBtX3BhcmVu
dC0+bmF0dXJhbFNpemUoKTsKIAogICAgIC8vIENhbGN1bGF0ZSB0aGUgcmF0aW8gb2YgdGhlc2Ug
dHdvIHNpemVzIGFuZCB1c2UgdGhhdCByYXRpbyB0byBzY2FsZSB0aGUgcXRWaWRlb0xheWVyOgot
ICAgIENHU2l6ZSByYXRpbyA9IENHU2l6ZU1ha2UocGFyZW50U2l6ZS53aWR0aCAvIG5hdHVyYWxT
aXplLndpZHRoLCBwYXJlbnRTaXplLmhlaWdodCAvIG5hdHVyYWxTaXplLmhlaWdodCk7CisgICAg
RmxvYXRTaXplIHJhdGlvKHBhcmVudFNpemUud2lkdGgoKSAvIG5hdHVyYWxTaXplLndpZHRoKCks
IHBhcmVudFNpemUuaGVpZ2h0KCkgLyBuYXR1cmFsU2l6ZS5oZWlnaHQoKSk7CiAKICAgICBpbnQg
dmlkZW9XaWR0aCA9IDA7CiAgICAgaW50IHZpZGVvSGVpZ2h0ID0gMDsKICAgICBtX3BhcmVudC0+
bV9tb3ZpZS0+Z2V0TmF0dXJhbFNpemUodmlkZW9XaWR0aCwgdmlkZW9IZWlnaHQpOwotICAgIENH
UmVjdCB2aWRlb0JvdW5kcyA9IENHUmVjdE1ha2UoMCwgMCwgdmlkZW9XaWR0aCAqIHJhdGlvLndp
ZHRoLCB2aWRlb0hlaWdodCAqIHJhdGlvLmhlaWdodCk7Ci0gICAgQ0dQb2ludCB2aWRlb0FuY2hv
ciA9IG1fcGFyZW50LT5tX3F0VmlkZW9MYXllci0+YW5jaG9yUG9pbnQoKTsKKyAgICBGbG9hdFJl
Y3QgdmlkZW9Cb3VuZHMoMCwgMCwgdmlkZW9XaWR0aCAqIHJhdGlvLndpZHRoKCksIHZpZGVvSGVp
Z2h0ICogcmF0aW8uaGVpZ2h0KCkpOworICAgIEZsb2F0UG9pbnQzRCB2aWRlb0FuY2hvciA9IG1f
cGFyZW50LT5tX3F0VmlkZW9MYXllci0+YW5jaG9yUG9pbnQoKTsKIAogICAgIC8vIENhbGN1bGF0
ZSB0aGUgbmV3IHBvc2l0aW9uIGJhc2VkIG9uIHRoZSBwYXJlbnQncyBzaXplOgotICAgIENHUG9p
bnQgcG9zaXRpb24gPSBDR1BvaW50TWFrZShwYXJlbnRTaXplLndpZHRoICogMC41IC0gdmlkZW9C
b3VuZHMuc2l6ZS53aWR0aCAqICgwLjUgLSB2aWRlb0FuY2hvci54KSwKLSAgICAgICAgcGFyZW50
U2l6ZS5oZWlnaHQgKiAwLjUgLSB2aWRlb0JvdW5kcy5zaXplLmhlaWdodCAqICgwLjUgLSB2aWRl
b0FuY2hvci55KSk7IAorICAgIEZsb2F0UG9pbnQgcG9zaXRpb24ocGFyZW50U2l6ZS53aWR0aCgp
ICogMC41IC0gdmlkZW9Cb3VuZHMud2lkdGgoKSAqICgwLjUgLSB2aWRlb0FuY2hvci54KCkpLAor
ICAgICAgICBwYXJlbnRTaXplLmhlaWdodCgpICogMC41IC0gdmlkZW9Cb3VuZHMuaGVpZ2h0KCkg
KiAoMC41IC0gdmlkZW9BbmNob3IueSgpKSk7IAogCiAgICAgbV9wYXJlbnQtPm1fcXRWaWRlb0xh
eWVyLT5zZXRCb3VuZHModmlkZW9Cb3VuZHMpOwogICAgIG1fcGFyZW50LT5tX3F0VmlkZW9MYXll
ci0+c2V0UG9zaXRpb24ocG9zaXRpb24pOwpAQCAtMTcxLDcgKzE3MSw2IEBACiAgICAgLCBtX21v
dmllQ2xpZW50KG5ldyBNZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0OjpN
b3ZpZUNsaWVudCh0aGlzKSkKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAg
LCBtX2xheWVyQ2xpZW50KG5ldyBNZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250
ZXh0OjpMYXllckNsaWVudCh0aGlzKSkKLSAgICAsIG1fbGF5b3V0Q2xpZW50KG5ldyBNZWRpYVBs
YXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0OjpMYXlvdXRDbGllbnQodGhpcykpCiAg
ICAgLCBtX21vdmllVHJhbnNmb3JtKENHQWZmaW5lVHJhbnNmb3JtSWRlbnRpdHkpCiAjZW5kaWYK
ICAgICAsIG1fdmlzdWFsQ29udGV4dENsaWVudChuZXcgTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tU
aW1lVmlzdWFsQ29udGV4dDo6VmlzdWFsQ29udGV4dENsaWVudCh0aGlzKSkKQEAgLTIwMyw4ICsy
MDIsOCBAQAogICAgIHAubWVkaWEucXRNb3ZpZVZpc3VhbENvbnRleHQgPSBtX3Zpc3VhbENvbnRl
eHQuZ2V0KCk7CiAgICAgcmV0dXJuIHA7CiB9Ci0KICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9T
SVRJTkcpCisKIFBsYXRmb3JtTGF5ZXIqIE1lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3Vh
bENvbnRleHQ6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAogewogICAgIHJldHVybiBtX3RyYW5zZm9y
bUxheWVyID8gbV90cmFuc2Zvcm1MYXllci0+cGxhdGZvcm1MYXllcigpIDogMDsKQEAgLTg2Niw3
ICs4NjUsNyBAQAogICAgICAgICBpZiAoIWJ1ZmZlci5waXhlbEJ1ZmZlclJlZigpKQogICAgICAg
ICAgICAgcmV0dXJuOwogCi0gICAgICAgIFdLQ0FDRkxheWVyKiBsYXllciA9IG1fcXRWaWRlb0xh
eWVyLmdldCgpOworICAgICAgICBQbGF0Zm9ybUNBTGF5ZXIqIGxheWVyID0gbV9xdFZpZGVvTGF5
ZXIuZ2V0KCk7CiAKICAgICAgICAgaWYgKCFidWZmZXIubG9ja0Jhc2VBZGRyZXNzKCkpIHsKICAg
ICAgICAgICAgIGlmIChyZXF1aXJlZERsbHNBdmFpbGFibGUoKSkgewpAQCAtOTAwLDcgKzg5OSw3
IEBACiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGJ1ZmZlci51bmxvY2tCYXNlQWRkcmVz
cygpOwotICAgICAgICAgICAgbGF5ZXItPnJvb3RMYXllcigpLT5zZXROZWVkc1JlbmRlcigpOwor
ICAgICAgICAgICAgbGF5ZXItPnNldE5lZWRzQ29tbWl0KCk7CiAgICAgICAgIH0KICAgICB9IGVs
c2UKICNlbmRpZgpAQCAtMTE3OSwyMCArMTE3OCwxNiBAQAogICAgIGlmICghbV9tb3ZpZSB8fCBt
X3F0VmlkZW9MYXllcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gQ3JlYXRlIGEgR3JhcGhp
Y3NMYXllciB0aGF0IHdvbid0IGJlIGluc2VydGVkIGRpcmVjdGx5IGludG8gdGhlIHJlbmRlciB0
cmVlLCBidXQgd2lsbCB1c2VkIAotICAgIC8vIGFzIGEgd3JhcHBlciBmb3IgYSBXS0NBQ0ZMYXll
ciB3aGljaCBnZXRzIGluc2VydGVkIGFzIHRoZSBjb250ZW50IGxheWVyIG9mIHRoZSB2aWRlbyAK
LSAgICAvLyByZW5kZXJlcidzIEdyYXBoaWNzTGF5ZXIuCi0gICAgbV90cmFuc2Zvcm1MYXllci5z
ZXQobmV3IEdyYXBoaWNzTGF5ZXJDQUNGKG1fbGF5ZXJDbGllbnQuZ2V0KCkpKTsKKyAgICAvLyBD
cmVhdGUgYSBQbGF0Zm9ybUNBTGF5ZXIgd2hpY2ggd2lsbCB0cmFuc2Zvcm0gdGhlIGNvbnRlbnRz
IG9mIHRoZSB2aWRlbyBsYXllcgorICAgIC8vIHdoaWNoIGlzIGluIG1fcXRWaWRlb0xheWVyLgor
ICAgIG1fdHJhbnNmb3JtTGF5ZXIgPSBQbGF0Zm9ybUNBTGF5ZXI6OmNyZWF0ZShQbGF0Zm9ybUNB
TGF5ZXI6OkxheWVyVHlwZUxheWVyLCBtX2xheWVyQ2xpZW50LmdldCgpKTsKICAgICBpZiAoIW1f
dHJhbnNmb3JtTGF5ZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIC8vIE1hcmsgdGhlIGxheWVy
IGFzIGRyYXdpbmcgaXRzZWxmLCBhbmNob3JlZCBpbiB0aGUgdG9wIGxlZnQsIGFuZCBib3R0b20t
dXAuCi0gICAgbV90cmFuc2Zvcm1MYXllci0+c2V0RHJhd3NDb250ZW50KGZhbHNlKTsKKyAgICAv
LyBNYXJrIHRoZSBsYXllciBhcyBhbmNob3JlZCBpbiB0aGUgdG9wIGxlZnQuCiAgICAgbV90cmFu
c2Zvcm1MYXllci0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludDNEKCkpOwotICAgIG1fdHJhbnNm
b3JtTGF5ZXItPnNldENvbnRlbnRzT3JpZW50YXRpb24oR3JhcGhpY3NMYXllcjo6Q29tcG9zaXRp
bmdDb29yZGluYXRlc0JvdHRvbVVwKTsKLSAgICBtX3RyYW5zZm9ybUxheWVyLT5wbGF0Zm9ybUxh
eWVyKCktPnNldExheW91dENsaWVudChtX2xheW91dENsaWVudC5nZXQoKSk7CiAKLSAgICBtX3F0
VmlkZW9MYXllciA9IFdLQ0FDRkxheWVyOjpjcmVhdGUoV0tDQUNGTGF5ZXI6OkxheWVyKTsKKyAg
ICBtX3F0VmlkZW9MYXllciA9IFBsYXRmb3JtQ0FMYXllcjo6Y3JlYXRlKFBsYXRmb3JtQ0FMYXll
cjo6TGF5ZXJUeXBlTGF5ZXIsIDApOwogICAgIGlmICghbV9xdFZpZGVvTGF5ZXIpCiAgICAgICAg
IHJldHVybjsKIApAQCAtMTIwOSw4ICsxMjA0LDggQEAKICNpZm5kZWYgTkRFQlVHCiAgICAgbV9x
dFZpZGVvTGF5ZXItPnNldE5hbWUoIlZpZGVvIGxheWVyIik7CiAjZW5kaWYKLSAgICBtX3RyYW5z
Zm9ybUxheWVyLT5wbGF0Zm9ybUxheWVyKCktPmFkZFN1YmxheWVyKG1fcXRWaWRlb0xheWVyLmdl
dCgpKTsKLSAgICBtX3RyYW5zZm9ybUxheWVyLT5wbGF0Zm9ybUxheWVyKCktPnNldE5lZWRzTGF5
b3V0KCk7CisgICAgbV90cmFuc2Zvcm1MYXllci0+YXBwZW5kU3VibGF5ZXIobV9xdFZpZGVvTGF5
ZXIuZ2V0KCkpOworICAgIG1fdHJhbnNmb3JtTGF5ZXItPnNldE5lZWRzTGF5b3V0KCk7CiAgICAg
Ly8gVGhlIGxheWVyIHdpbGwgZ2V0IGhvb2tlZCB1cCB2aWEgUmVuZGVyTGF5ZXJCYWNraW5nOjp1
cGRhdGVHcmFwaGljc0xheWVyQ29uZmlndXJhdGlvbigpLgogI2VuZGlmCiAKQEAgLTEyMzgsMTAg
KzEyMzMsNiBAQAogfQogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0OjpMYXllckNsaWVudDo6cGFp
bnRDb250ZW50cyhjb25zdCBHcmFwaGljc0xheWVyKiwgR3JhcGhpY3NDb250ZXh0JiwgR3JhcGhp
Y3NMYXllclBhaW50aW5nUGhhc2UsIGNvbnN0IEludFJlY3QmIGluQ2xpcCkKLXsKLX0KLQogYm9v
bCBNZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0OjpzdXBwb3J0c0FjY2Vs
ZXJhdGVkUmVuZGVyaW5nKCkgY29uc3QKIHsKICAgICByZXR1cm4gaXNSZWFkeUZvclJlbmRlcmlu
ZygpOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2
YXRlUXVpY2tUaW1lV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVXaW4uY3BwCShyZXZpc2lvbiA3NTIy
NykKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZVF1
aWNrVGltZVdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDcgQEAKIAogI2lmIFVT
RShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICNpbmNsdWRlICJHcmFwaGljc0xheWVyQ0FDRi5o
IgotI2luY2x1ZGUgIldLQ0FDRkxheWVyLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1DQUxheWVyLmgi
CiAjZW5kaWYKIAogI2lmIERSQVdfRlJBTUVfUkFURQpAQCAtNzYwLDcgKzc2MCw3IEBACiAKICNp
ZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgaWYgKG1fcXRWaWRlb0xheWVyKQot
ICAgICAgICBtX3F0VmlkZW9MYXllci0+cGxhdGZvcm1MYXllcigpLT5zZXROZWVkc0Rpc3BsYXko
KTsKKyAgICAgICAgbV9xdFZpZGVvTGF5ZXItPnNldE5lZWRzRGlzcGxheSgpOwogICAgIGVsc2UK
ICNlbmRpZgogICAgICAgICBtX3BsYXllci0+cmVwYWludCgpOwpAQCAtODg3LDcgKzg4Nyw3IEBA
CiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIENyZWF0ZSBhIEdyYXBoaWNzTGF5ZXIgdGhhdCB3
b24ndCBiZSBpbnNlcnRlZCBkaXJlY3RseSBpbnRvIHRoZSByZW5kZXIgdHJlZSwgYnV0IHdpbGwg
dXNlZCAKLSAgICAvLyBhcyBhIHdyYXBwZXIgZm9yIGEgV0tDQUNGTGF5ZXIgd2hpY2ggZ2V0cyBp
bnNlcnRlZCBhcyB0aGUgY29udGVudCBsYXllciBvZiB0aGUgdmlkZW8gCisgICAgLy8gYXMgYSB3
cmFwcGVyIGZvciBhIFBsYXRmb3JtQ0FMYXllciB3aGljaCBnZXRzIGluc2VydGVkIGFzIHRoZSBj
b250ZW50IGxheWVyIG9mIHRoZSB2aWRlbyAKICAgICAvLyByZW5kZXJlcidzIEdyYXBoaWNzTGF5
ZXIuCiAgICAgbV9xdFZpZGVvTGF5ZXIuc2V0KG5ldyBHcmFwaGljc0xheWVyQ0FDRih0aGlzKSk7
CiAgICAgaWYgKCFtX3F0VmlkZW9MYXllcikKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL1dLQ0FDRkxheWVyUmVuZGVyZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9XS0NBQ0ZMYXllclJlbmRlcmVyLmgJKHJldmlzaW9uIDc1MjI3KQor
KysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vV0tDQUNGTGF5ZXJSZW5kZXJlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zMCwzMyArMzAsNDAgQEAKIAogI2luY2x1ZGUgIkNPTVB0ci5oIgog
I2luY2x1ZGUgIlRpbWVyLmgiCi0jaW5jbHVkZSAiV0tDQUNGTGF5ZXIuaCIKIAorI2luY2x1ZGUg
PHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0KKyNpbmNsdWRl
IDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CiAKICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ0dHZW9tZXRyeS5oPgogCiBp
bnRlcmZhY2UgSURpcmVjdDNERGV2aWNlOTsKIHN0cnVjdCBXS0NBQ0ZDb250ZXh0OwogCit0eXBl
ZGVmIHN0cnVjdCBDR0ltYWdlKiBDR0ltYWdlUmVmOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWNsYXNzIFdLQ0FDRlJvb3RMYXllcjsKK2NsYXNzIFBsYXRmb3JtQ0FMYXllcjsKIAogY2xhc3Mg
V0tDQUNGTGF5ZXJSZW5kZXJlckNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+V0tDQUNG
TGF5ZXJSZW5kZXJlckNsaWVudCgpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRSZW5kZXIo
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFuaW1hdGlvbnNTdGFydGVkKENGVGltZUlu
dGVydmFsKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3luY0NvbXBvc2l0aW5nU3RhdGUoKSB7IH0K
IH07CiAKIC8vIEZJWE1FOiBDdXJyZW50bHkgdGhlcmUgaXMgYSBXS0NBQ0ZMYXllclJlbmRlcmVy
IGZvciBlYWNoIFdlYlZpZXcgYW5kIGVhY2gKIC8vIGhhcyBpdHMgb3duIENBUmVuZGVyT0dMQ29u
dGV4dCBhbmQgRGlyZWN0M0REZXZpY2U5LCB3aGljaCBpcyBpbmVmZmljaWVudC4KIC8vIChodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzE4NTUpCiBjbGFzcyBXS0NBQ0ZM
YXllclJlbmRlcmVyIDogcHVibGljIE5vbmNvcHlhYmxlIHsKKyAgICBmcmllbmQgUGxhdGZvcm1D
QUxheWVyOworCiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8V0tDQUNGTGF5ZXJSZW5k
ZXJlcj4gY3JlYXRlKFdLQ0FDRkxheWVyUmVuZGVyZXJDbGllbnQqKTsKICAgICB+V0tDQUNGTGF5
ZXJSZW5kZXJlcigpOwpAQCAtNjUsOSArNzIsOSBAQAogCiAgICAgdm9pZCBzZXRSb290Q29udGVu
dHMoQ0dJbWFnZVJlZik7CiAgICAgdm9pZCBzZXRSb290Q29udGVudHNBbmREaXNwbGF5KENHSW1h
Z2VSZWYpOwotICAgIHZvaWQgc2V0Um9vdENoaWxkTGF5ZXIoV0tDQUNGTGF5ZXIqIGxheWVyKTsK
KyAgICB2b2lkIHNldFJvb3RDaGlsZExheWVyKFBsYXRmb3JtQ0FMYXllciopOwogICAgIHZvaWQg
bGF5ZXJUcmVlRGlkQ2hhbmdlKCk7Ci0gICAgdm9pZCBzZXROZWVkc0Rpc3BsYXkoKTsKKyAgICB2
b2lkIHNldE5lZWRzRGlzcGxheShib29sIHN5bmMgPSBmYWxzZSk7CiAgICAgdm9pZCBzZXRIb3N0
V2luZG93KEhXTkQgd2luZG93KSB7IG1faG9zdFdpbmRvdyA9IHdpbmRvdzsgfQogICAgIHZvaWQg
c2V0QmFja2luZ1N0b3JlRGlydHkoYm9vbCBkaXJ0eSkgeyBtX2JhY2tpbmdTdG9yZURpcnR5ID0g
ZGlydHk7IH0KICAgICBib29sIGNyZWF0ZVJlbmRlcmVyKCk7CkBAIC03Niw3ICs4Myw4IEBACiAg
ICAgdm9pZCByZW5kZXJTb29uKCk7CiAKIHByb3RlY3RlZDoKLSAgICBXS0NBQ0ZMYXllciogcm9v
dExheWVyKCkgY29uc3Q7CisgICAgUGxhdGZvcm1DQUxheWVyKiByb290TGF5ZXIoKSBjb25zdDsK
KyAgICB2b2lkIGFkZFBlbmRpbmdBbmltYXRlZExheWVyKFBhc3NSZWZQdHI8UGxhdGZvcm1DQUxh
eWVyPik7CiAKIHByaXZhdGU6CiAgICAgV0tDQUNGTGF5ZXJSZW5kZXJlcihXS0NBQ0ZMYXllclJl
bmRlcmVyQ2xpZW50Kik7CkBAIC05OSwxMyArMTA3LDE2IEBACiAgICAgV0tDQUNGTGF5ZXJSZW5k
ZXJlckNsaWVudCogbV9jbGllbnQ7CiAgICAgYm9vbCBtX21pZ2h0QmVBYmxlVG9DcmVhdGVEZXZp
Y2VMYXRlcjsKICAgICBDT01QdHI8SURpcmVjdDNERGV2aWNlOT4gbV9kM2REZXZpY2U7Ci0gICAg
UmVmUHRyPFdLQ0FDRlJvb3RMYXllcj4gbV9yb290TGF5ZXI7Ci0gICAgUmVmUHRyPFdLQ0FDRkxh
eWVyPiBtX3Jvb3RDaGlsZExheWVyOworICAgIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IG1fcm9v
dExheWVyOworICAgIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IG1fcm9vdENoaWxkTGF5ZXI7CiAg
ICAgV0tDQUNGQ29udGV4dCogbV9jb250ZXh0OwogICAgIEhXTkQgbV9ob3N0V2luZG93OwogICAg
IFRpbWVyPFdLQ0FDRkxheWVyUmVuZGVyZXI+IG1fcmVuZGVyVGltZXI7CiAgICAgYm9vbCBtX2Jh
Y2tpbmdTdG9yZURpcnR5OwogICAgIGJvb2wgbV9tdXN0UmVzZXRMb3N0RGV2aWNlQmVmb3JlUmVu
ZGVyaW5nOworICAgIGJvb2wgbV9zeW5jTGF5ZXJDaGFuZ2VzOworICAgIEhhc2hTZXQ8UmVmUHRy
PFBsYXRmb3JtQ0FMYXllcj4gPiBtX3BlbmRpbmdBbmltYXRlZExheWVyczsKKwogI2lmbmRlZiBO
REVCVUcKICAgICBib29sIG1fcHJpbnRUcmVlOwogI2VuZGlmCkluZGV4OiBXZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9XZWJMYXllci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9XZWJMYXllci5tbQkocmV2aXNpb24gNzUyMjcpCisrKyBXZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJMYXllci5tbQkod29ya2luZyBjb3B5KQpAQCAtNDAs
NyArNDAsNyBAQAogCiBAaW1wbGVtZW50YXRpb24gV2ViTGF5ZXIKIAotdm9pZCBkcmF3TGF5ZXJD
b250ZW50cyhDR0NvbnRleHRSZWYgY29udGV4dCwgQ0FMYXllciAqbGF5ZXIsIFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXIqIGxheWVyQ29udGVudHMpCit2b2lkIGRyYXdMYXllckNvbnRlbnRzKENHQ29u
dGV4dFJlZiBjb250ZXh0LCBDQUxheWVyICpsYXllciwgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVy
Q2xpZW50KiBsYXllckNvbnRlbnRzKQogewogICAgIGlmICghbGF5ZXJDb250ZW50cykKICAgICAg
ICAgcmV0dXJuOwpAQCAtNDgsNTAgKzQ4LDM4IEBACiAgICAgQ0dDb250ZXh0U2F2ZUdTdGF0ZShj
b250ZXh0KTsKIAogICAgIENHUmVjdCBsYXllckJvdW5kcyA9IFtsYXllciBib3VuZHNdOwotICAg
IGlmIChsYXllckNvbnRlbnRzLT5jb250ZW50c09yaWVudGF0aW9uKCkgPT0gV2ViQ29yZTo6R3Jh
cGhpY3NMYXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc0JvdHRvbVVwKSB7CisgICAgaWYgKGxh
eWVyQ29udGVudHMtPnBsYXRmb3JtQ0FMYXllckNvbnRlbnRzT3JpZW50YXRpb24oKSA9PSBXZWJD
b3JlOjpHcmFwaGljc0xheWVyOjpDb21wb3NpdGluZ0Nvb3JkaW5hdGVzQm90dG9tVXApIHsKICAg
ICAgICAgQ0dDb250ZXh0U2NhbGVDVE0oY29udGV4dCwgMSwgLTEpOwogICAgICAgICBDR0NvbnRl
eHRUcmFuc2xhdGVDVE0oY29udGV4dCwgMCwgLWxheWVyQm91bmRzLnNpemUuaGVpZ2h0KTsKICAg
ICB9CiAKLSAgICBpZiAobGF5ZXJDb250ZW50cy0+Y2xpZW50KCkpIHsKLSAgICAgICAgW05TR3Jh
cGhpY3NDb250ZXh0IHNhdmVHcmFwaGljc1N0YXRlXTsKKyAgICBbTlNHcmFwaGljc0NvbnRleHQg
c2F2ZUdyYXBoaWNzU3RhdGVdOwogCi0gICAgICAgIC8vIFNldCB1cCBhbiBOU0dyYXBoaWNzQ29u
dGV4dCBmb3IgdGhlIGNvbnRleHQsIHNvIHRoYXQgcGFydHMgb2YgQXBwS2l0IHRoYXQgcmVseSBv
bgotICAgICAgICAvLyB0aGUgY3VycmVudCBOU0dyYXBoaWNzQ29udGV4dCAoZS5nLiBOU0NlbGwg
ZHJhd2luZykgZ2V0IHRoZSByaWdodCBvbmUuCi0gICAgICAgIE5TR3JhcGhpY3NDb250ZXh0KiBs
YXllckNvbnRleHQgPSBbTlNHcmFwaGljc0NvbnRleHQgZ3JhcGhpY3NDb250ZXh0V2l0aEdyYXBo
aWNzUG9ydDpjb250ZXh0IGZsaXBwZWQ6WUVTXTsKLSAgICAgICAgW05TR3JhcGhpY3NDb250ZXh0
IHNldEN1cnJlbnRDb250ZXh0OmxheWVyQ29udGV4dF07CisgICAgLy8gU2V0IHVwIGFuIE5TR3Jh
cGhpY3NDb250ZXh0IGZvciB0aGUgY29udGV4dCwgc28gdGhhdCBwYXJ0cyBvZiBBcHBLaXQgdGhh
dCByZWx5IG9uCisgICAgLy8gdGhlIGN1cnJlbnQgTlNHcmFwaGljc0NvbnRleHQgKGUuZy4gTlND
ZWxsIGRyYXdpbmcpIGdldCB0aGUgcmlnaHQgb25lLgorICAgIE5TR3JhcGhpY3NDb250ZXh0KiBs
YXllckNvbnRleHQgPSBbTlNHcmFwaGljc0NvbnRleHQgZ3JhcGhpY3NDb250ZXh0V2l0aEdyYXBo
aWNzUG9ydDpjb250ZXh0IGZsaXBwZWQ6WUVTXTsKKyAgICBbTlNHcmFwaGljc0NvbnRleHQgc2V0
Q3VycmVudENvbnRleHQ6bGF5ZXJDb250ZXh0XTsKIAotICAgICAgICBHcmFwaGljc0NvbnRleHQg
Z3JhcGhpY3NDb250ZXh0KGNvbnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4dCBncmFwaGljc0Nv
bnRleHQoY29udGV4dCk7CiAKLSAgICAgICAgaWYgKCFsYXllckNvbnRlbnRzLT5jb250ZW50c09w
YXF1ZSgpKSB7Ci0gICAgICAgICAgICAvLyBUdXJuIG9mZiBmb250IHNtb290aGluZyB0byBpbXBy
b3ZlIHRoZSBhcHBlYXJhbmNlIG9mIHRleHQgcmVuZGVyZWQgb250byBhIHRyYW5zcGFyZW50IGJh
Y2tncm91bmQuCi0gICAgICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0U2hvdWxkU21vb3RoRm9u
dHMoZmFsc2UpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICAvLyBJdCdzIGltcG9ydGFu
dCB0byBnZXQgdGhlIGNsaXAgZnJvbSB0aGUgY29udGV4dCwgYmVjYXVzZSBpdCBtYXkgYmUgc2ln
bmlmaWNhbnRseQotICAgICAgICAvLyBzbWFsbGVyIHRoYW4gdGhlIGxheWVyIGJvdW5kcyAoZS5n
LiB0aWxlZCBsYXllcnMpCi0gICAgICAgIENHUmVjdCBjbGlwQm91bmRzID0gQ0dDb250ZXh0R2V0
Q2xpcEJvdW5kaW5nQm94KGNvbnRleHQpOwotICAgICAgICBJbnRSZWN0IGNsaXAoZW5jbG9zaW5n
SW50UmVjdChjbGlwQm91bmRzKSk7Ci0gICAgICAgIGxheWVyQ29udGVudHMtPnBhaW50R3JhcGhp
Y3NMYXllckNvbnRlbnRzKGdyYXBoaWNzQ29udGV4dCwgY2xpcCk7Ci0KLSAgICAgICAgW05TR3Jh
cGhpY3NDb250ZXh0IHJlc3RvcmVHcmFwaGljc1N0YXRlXTsKKyAgICBpZiAoIWxheWVyQ29udGVu
dHMtPnBsYXRmb3JtQ0FMYXllckNvbnRlbnRzT3BhcXVlKCkpIHsKKyAgICAgICAgLy8gVHVybiBv
ZmYgZm9udCBzbW9vdGhpbmcgdG8gaW1wcm92ZSB0aGUgYXBwZWFyYW5jZSBvZiB0ZXh0IHJlbmRl
cmVkIG9udG8gYSB0cmFuc3BhcmVudCBiYWNrZ3JvdW5kLgorICAgICAgICBncmFwaGljc0NvbnRl
eHQuc2V0U2hvdWxkU21vb3RoRm9udHMoZmFsc2UpOwogICAgIH0KLSNpZm5kZWYgTkRFQlVHCi0g
ICAgZWxzZSB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIAorICAgIC8vIEl0
J3MgaW1wb3J0YW50IHRvIGdldCB0aGUgY2xpcCBmcm9tIHRoZSBjb250ZXh0LCBiZWNhdXNlIGl0
IG1heSBiZSBzaWduaWZpY2FudGx5CisgICAgLy8gc21hbGxlciB0aGFuIHRoZSBsYXllciBib3Vu
ZHMgKGUuZy4gdGlsZWQgbGF5ZXJzKQorICAgIENHUmVjdCBjbGlwQm91bmRzID0gQ0dDb250ZXh0
R2V0Q2xpcEJvdW5kaW5nQm94KGNvbnRleHQpOworICAgIEludFJlY3QgY2xpcChlbmNsb3NpbmdJ
bnRSZWN0KGNsaXBCb3VuZHMpKTsKKyAgICBsYXllckNvbnRlbnRzLT5wbGF0Zm9ybUNBTGF5ZXJQ
YWludENvbnRlbnRzKGdyYXBoaWNzQ29udGV4dCwgY2xpcCk7CiAKLSAgICAgICAgLy8gRklYTUU6
IGlkZWFsbHkgd2UnZCBhdm9pZCBjYWxsaW5nIC1zZXROZWVkc0Rpc3BsYXkgb24gYSBsYXllciB0
aGF0IGlzIGEgcGxhaW4gY29sb3IsCi0gICAgICAgIC8vIHNvIENBIG5ldmVyIG1ha2VzIGJhY2tp
bmcgc3RvcmUgZm9yIGl0ICh3aGljaCBpcyB3aGF0IC1zZXROZWVkc0Rpc3BsYXkgd2lsbCBkbyBh
Ym92ZSkuCi0gICAgICAgIENHQ29udGV4dFNldFJHQkZpbGxDb2xvcihjb250ZXh0LCAwLjBmLCAx
LjBmLCAwLjBmLCAxLjBmKTsKLSAgICAgICAgQ0dDb250ZXh0RmlsbFJlY3QoY29udGV4dCwgbGF5
ZXJCb3VuZHMpOwotICAgIH0KLSNlbmRpZgorICAgIFtOU0dyYXBoaWNzQ29udGV4dCByZXN0b3Jl
R3JhcGhpY3NTdGF0ZV07CiAKLSAgICBpZiAobGF5ZXJDb250ZW50cy0+c2hvd1JlcGFpbnRDb3Vu
dGVyKCkpIHsKKyAgICBpZiAobGF5ZXJDb250ZW50cy0+cGxhdGZvcm1DQUxheWVyU2hvd1JlcGFp
bnRDb3VudGVyKCkpIHsKICAgICAgICAgYm9vbCBpc1RpbGVkTGF5ZXIgPSBbbGF5ZXIgaXNLaW5k
T2ZDbGFzczpbQ0FUaWxlZExheWVyIGNsYXNzXV07CiAKICAgICAgICAgY2hhciB0ZXh0WzE2XTsg
Ly8gdGhhdCdzIGEgbG90IG9mIHJlcGFpbnRzCi0gICAgICAgIHNucHJpbnRmKHRleHQsIHNpemVv
Zih0ZXh0KSwgIiVkIiwgbGF5ZXJDb250ZW50cy0+aW5jcmVtZW50UmVwYWludENvdW50KCkpOwor
ICAgICAgICBzbnByaW50Zih0ZXh0LCBzaXplb2YodGV4dCksICIlZCIsIGxheWVyQ29udGVudHMt
PnBsYXRmb3JtQ0FMYXllckluY3JlbWVudFJlcGFpbnRDb3VudCgpKTsKIAogICAgICAgICBDR0Nv
bnRleHRTYXZlR1N0YXRlKGNvbnRleHQpOwogICAgICAgICBpZiAoaXNUaWxlZExheWVyKQpAQCAt
MTE3LDI2ICsxMDUsMjYgQEAKICAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKGNvbnRleHQpOwog
fQogCi12b2lkIHNldExheWVyTmVlZHNEaXNwbGF5SW5SZWN0KENBTGF5ZXIgKmxheWVyLCBXZWJD
b3JlOjpHcmFwaGljc0xheWVyKiBsYXllckNvbnRlbnRzLCBDR1JlY3QgcmVjdCkKK3ZvaWQgc2V0
TGF5ZXJOZWVkc0Rpc3BsYXlJblJlY3QoQ0FMYXllciAqbGF5ZXIsIFdlYkNvcmU6OlBsYXRmb3Jt
Q0FMYXllckNsaWVudCogbGF5ZXJDb250ZW50cywgQ0dSZWN0IHJlY3QpCiB7Ci0gICAgaWYgKGxh
eWVyQ29udGVudHMgJiYgbGF5ZXJDb250ZW50cy0+Y2xpZW50KCkgJiYgbGF5ZXJDb250ZW50cy0+
ZHJhd3NDb250ZW50KCkpIHsKKyAgICBpZiAobGF5ZXJDb250ZW50cyAmJiBsYXllckNvbnRlbnRz
LT5wbGF0Zm9ybUNBTGF5ZXJEcmF3c0NvbnRlbnQoKSkgewogICAgICAgICBzdHJ1Y3Qgb2JqY19z
dXBlciBsYXllclN1cGVyID0geyBsYXllciwgY2xhc3NfZ2V0U3VwZXJjbGFzcyhvYmplY3RfZ2V0
Q2xhc3MobGF5ZXIpKSB9OwogI2lmIGRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkKICAgICAg
ICAgcmVjdCA9IENHUmVjdEFwcGx5QWZmaW5lVHJhbnNmb3JtKHJlY3QsIFtsYXllciBjb250ZW50
c1RyYW5zZm9ybV0pOwogI2Vsc2UKLSAgICAgICAgaWYgKGxheWVyQ29udGVudHMtPmNvbnRlbnRz
T3JpZW50YXRpb24oKSA9PSBXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpDb21wb3NpdGluZ0Nvb3Jk
aW5hdGVzQm90dG9tVXApCisgICAgICAgIGlmIChsYXllckNvbnRlbnRzLT5wbGF0Zm9ybUNBTGF5
ZXJDb250ZW50c09yaWVudGF0aW9uKCkgPT0gV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6Q29tcG9z
aXRpbmdDb29yZGluYXRlc0JvdHRvbVVwKQogICAgICAgICAgICAgcmVjdC5vcmlnaW4ueSA9IFts
YXllciBib3VuZHNdLnNpemUuaGVpZ2h0IC0gcmVjdC5vcmlnaW4ueSAtIHJlY3Quc2l6ZS5oZWln
aHQ7CiAjZW5kaWYKICAgICAgICAgb2JqY19tc2dTZW5kU3VwZXIoJmxheWVyU3VwZXIsIEBzZWxl
Y3RvcihzZXROZWVkc0Rpc3BsYXlJblJlY3Q6KSwgcmVjdCk7CiAKICNpZm5kZWYgTkRFQlVHCi0g
ICAgICAgIGlmIChsYXllckNvbnRlbnRzLT5zaG93UmVwYWludENvdW50ZXIoKSkgeworICAgICAg
ICBpZiAobGF5ZXJDb250ZW50cy0+cGxhdGZvcm1DQUxheWVyU2hvd1JlcGFpbnRDb3VudGVyKCkp
IHsKICAgICAgICAgICAgIENHUmVjdCBib3VuZHMgPSBbbGF5ZXIgYm91bmRzXTsKICAgICAgICAg
ICAgIENHUmVjdCBpbmRpY2F0b3JSZWN0ID0gQ0dSZWN0TWFrZShib3VuZHMub3JpZ2luLngsIGJv
dW5kcy5vcmlnaW4ueSwgNDYsIDI1KTsKICNpZiBkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQp
CiAgICAgICAgICAgICBpbmRpY2F0b3JSZWN0ID0gQ0dSZWN0QXBwbHlBZmZpbmVUcmFuc2Zvcm0o
aW5kaWNhdG9yUmVjdCwgW2xheWVyIGNvbnRlbnRzVHJhbnNmb3JtXSk7CiAjZWxzZQotICAgICAg
ICAgICAgaWYgKGxheWVyQ29udGVudHMtPmNvbnRlbnRzT3JpZW50YXRpb24oKSA9PSBXZWJDb3Jl
OjpHcmFwaGljc0xheWVyOjpDb21wb3NpdGluZ0Nvb3JkaW5hdGVzQm90dG9tVXApCisgICAgICAg
ICAgICBpZiAobGF5ZXJDb250ZW50cy0+cGxhdGZvcm1DQUxheWVyQ29udGVudHNPcmllbnRhdGlv
bigpID09IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNCb3R0
b21VcCkKICAgICAgICAgICAgICAgICBpbmRpY2F0b3JSZWN0Lm9yaWdpbi55ID0gW2xheWVyIGJv
dW5kc10uc2l6ZS5oZWlnaHQgLSBpbmRpY2F0b3JSZWN0Lm9yaWdpbi55IC0gaW5kaWNhdG9yUmVj
dC5zaXplLmhlaWdodDsKICNlbmRpZgogICAgICAgICAgICAgb2JqY19tc2dTZW5kU3VwZXIoJmxh
eWVyU3VwZXIsIEBzZWxlY3RvcihzZXROZWVkc0Rpc3BsYXlJblJlY3Q6KSwgaW5kaWNhdG9yUmVj
dCk7CkBAIC0xNTUsNyArMTQzLDcgQEAKIC0gKHZvaWQpc2V0TmVlZHNEaXNwbGF5CiB7CiAgICAg
UGxhdGZvcm1DQUxheWVyKiBsYXllciA9IFBsYXRmb3JtQ0FMYXllcjo6cGxhdGZvcm1DQUxheWVy
KHNlbGYpOwotICAgIGlmIChsYXllciAmJiBsYXllci0+b3duZXIoKSAmJiBsYXllci0+b3duZXIo
KS0+Y2xpZW50KCkgJiYgbGF5ZXItPm93bmVyKCktPmRyYXdzQ29udGVudCgpKQorICAgIGlmIChs
YXllciAmJiBsYXllci0+b3duZXIoKSAmJiBsYXllci0+b3duZXIoKS0+cGxhdGZvcm1DQUxheWVy
RHJhd3NDb250ZW50KCkpCiAgICAgICAgIFtzdXBlciBzZXROZWVkc0Rpc3BsYXldOwogfQogCkBA
IC0xNzEsNyArMTU5LDcgQEAKICAgICBbc3VwZXIgZGlzcGxheV07CiAgICAgUGxhdGZvcm1DQUxh
eWVyKiBsYXllciA9IFBsYXRmb3JtQ0FMYXllcjo6cGxhdGZvcm1DQUxheWVyKHNlbGYpOwogICAg
IGlmIChsYXllciAmJiBsYXllci0+b3duZXIoKSkKLSAgICAgICAgbGF5ZXItPm93bmVyKCktPmRp
ZERpc3BsYXkoc2VsZik7CisgICAgICAgIGxheWVyLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJM
YXllckRpZERpc3BsYXkoc2VsZik7CiB9CiAKIC0gKHZvaWQpZHJhd0luQ29udGV4dDooQ0dDb250
ZXh0UmVmKWNvbnRleHQKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxh
eWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViTGF5
ZXIuaAkocmV2aXNpb24gNzUyMjcpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9X
ZWJMYXllci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICBjbGFzcyBHcmFwaGljc0xheWVyOworICAgIGNsYXNzIFBsYXRmb3JtQ0FM
YXllckNsaWVudDsKIH0KIAogI2lmIGRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkKQEAgLTQ3
LDggKzQ4LDggQEAKIEBlbmQKIAogLy8gRnVuY3Rpb25zIGFsbG93cyB1cyB0byBzaGFyZSBpbXBs
ZW1lbnRhdGlvbiBhY3Jvc3MgV2ViVGlsZWRMYXllciBhbmQgV2ViTGF5ZXIKLXZvaWQgZHJhd0xh
eWVyQ29udGVudHMoQ0dDb250ZXh0UmVmLCBDQUxheWVyICosIFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXIqKTsKLXZvaWQgc2V0TGF5ZXJOZWVkc0Rpc3BsYXlJblJlY3QoQ0FMYXllciAqLCBXZWJDb3Jl
OjpHcmFwaGljc0xheWVyKiwgQ0dSZWN0KTsKK3ZvaWQgZHJhd0xheWVyQ29udGVudHMoQ0dDb250
ZXh0UmVmLCBDQUxheWVyICosIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllckNsaWVudCopOwordm9p
ZCBzZXRMYXllck5lZWRzRGlzcGxheUluUmVjdChDQUxheWVyICosIFdlYkNvcmU6OlBsYXRmb3Jt
Q0FMYXllckNsaWVudCosIENHUmVjdCk7CiAKICNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09N
UE9TSVRJTkcpCiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYlRpbGVk
TGF5ZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2Vi
VGlsZWRMYXllci5tbQkocmV2aXNpb24gNzUyMjcpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL21hYy9XZWJUaWxlZExheWVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC02MCw3ICs2MCw3IEBA
CiAtICh2b2lkKXNldE5lZWRzRGlzcGxheQogewogICAgIFBsYXRmb3JtQ0FMYXllciogbGF5ZXIg
PSBQbGF0Zm9ybUNBTGF5ZXI6OnBsYXRmb3JtQ0FMYXllcihzZWxmKTsKLSAgICBpZiAobGF5ZXIg
JiYgbGF5ZXItPm93bmVyKCkgJiYgbGF5ZXItPm93bmVyKCktPmNsaWVudCgpICYmIGxheWVyLT5v
d25lcigpLT5kcmF3c0NvbnRlbnQoKSkKKyAgICBpZiAobGF5ZXIgJiYgbGF5ZXItPm93bmVyKCkg
JiYgbGF5ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllckRyYXdzQ29udGVudCgpKQogICAgICAg
ICBbc3VwZXIgc2V0TmVlZHNEaXNwbGF5XTsKIH0KIApAQCAtNzYsNyArNzYsNyBAQAogICAgIFtz
dXBlciBkaXNwbGF5XTsKICAgICBQbGF0Zm9ybUNBTGF5ZXIqIGxheWVyID0gUGxhdGZvcm1DQUxh
eWVyOjpwbGF0Zm9ybUNBTGF5ZXIoc2VsZik7CiAgICAgaWYgKGxheWVyICYmIGxheWVyLT5vd25l
cigpKQotICAgICAgICBsYXllci0+b3duZXIoKS0+ZGlkRGlzcGxheShzZWxmKTsKKyAgICAgICAg
bGF5ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllckxheWVyRGlkRGlzcGxheShzZWxmKTsKIH0K
IAogLSAodm9pZClkcmF3SW5Db250ZXh0OihDR0NvbnRleHRSZWYpY29udGV4dApJbmRleDogV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViR0xMYXllci5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJHTExheWVyLm1tCShyZXZpc2lvbiA3NTIy
NykKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkdMTGF5ZXIubW0JKHdvcmtp
bmcgY29weSkKQEAgLTE0NCw3ICsxNDQsNyBAQAogewogICAgIFtzdXBlciBkaXNwbGF5XTsKICAg
ICBpZiAobV9sYXllck93bmVyKQotICAgICAgICBtX2xheWVyT3duZXItPmRpZERpc3BsYXkoc2Vs
Zik7CisgICAgICAgIG1fbGF5ZXJPd25lci0+bGF5ZXJEaWREaXNwbGF5KHNlbGYpOwogfQogCiBA
ZW5kCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAkocmV2
aXNpb24gNzUyMjcpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtNTMsMTAgKzUzLDcgQEAKIHR5cGVkZWYgdm9pZCogUGxhdGZv
cm1MYXllcjsKICNlbmRpZgogI2VsaWYgUExBVEZPUk0oV0lOKQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotY2xhc3MgV0tDQUNGTGF5ZXI7Ci10eXBlZGVmIFdLQ0FDRkxheWVyIFBsYXRmb3JtTGF5ZXI7
Ci19Cit0eXBlZGVmIHN0cnVjdCBfQ0FDRkxheWVyIFBsYXRmb3JtTGF5ZXI7CiAjZWxpZiBQTEFU
Rk9STShRVCkKICNpZiBVU0UoVEVYVFVSRV9NQVBQRVIpCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC0zMTQsNyArMzExLDcgQEAKICAgICAvLyBDYWxsYmFjayBmcm9tIHRoZSB1bmRlcmx5aW5nIGdy
YXBoaWNzIHN5c3RlbSB0byBkcmF3IGxheWVyIGNvbnRlbnRzLgogICAgIHZvaWQgcGFpbnRHcmFw
aGljc0xheWVyQ29udGVudHMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgY2xpcCk7
CiAgICAgLy8gQ2FsbGJhY2sgZnJvbSB0aGUgdW5kZXJseWluZyBncmFwaGljcyBzeXN0ZW0gd2hl
biB0aGUgbGF5ZXIgaGFzIGJlZW4gZGlzcGxheWVkCi0gICAgdmlydHVhbCB2b2lkIGRpZERpc3Bs
YXkoUGxhdGZvcm1MYXllciopIHsgfQorICAgIHZpcnR1YWwgdm9pZCBsYXllckRpZERpc3BsYXko
UGxhdGZvcm1MYXllciopIHsgfQogICAgIAogICAgIC8vIEZvciBob3N0aW5nIHRoaXMgR3JhcGhp
Y3NMYXllciBpbiBhIG5hdGl2ZSBsYXllciBoaWVyYXJjaHkuCiAgICAgdmlydHVhbCBQbGF0Zm9y
bUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgeyByZXR1cm4gMDsgfQpAQCAtMzMwLDggKzMy
Nyw4IEBACiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzT3JpZW50YXRpb24oQ29tcG9zaXRp
bmdDb29yZGluYXRlc09yaWVudGF0aW9uIG9yaWVudGF0aW9uKSB7IG1fY29udGVudHNPcmllbnRh
dGlvbiA9IG9yaWVudGF0aW9uOyB9CiAgICAgQ29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0
aW9uIGNvbnRlbnRzT3JpZW50YXRpb24oKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRzT3JpZW50
YXRpb247IH0KIAotICAgIGJvb2wgc2hvd0RlYnVnQm9yZGVycygpIHsgcmV0dXJuIG1fY2xpZW50
ID8gbV9jbGllbnQtPnNob3dEZWJ1Z0JvcmRlcnMoKSA6IGZhbHNlOyB9Ci0gICAgYm9vbCBzaG93
UmVwYWludENvdW50ZXIoKSB7IHJldHVybiBtX2NsaWVudCA/IG1fY2xpZW50LT5zaG93UmVwYWlu
dENvdW50ZXIoKSA6IGZhbHNlOyB9CisgICAgYm9vbCBzaG93RGVidWdCb3JkZXJzKCkgY29uc3Qg
eyByZXR1cm4gbV9jbGllbnQgPyBtX2NsaWVudC0+c2hvd0RlYnVnQm9yZGVycygpIDogZmFsc2U7
IH0KKyAgICBib29sIHNob3dSZXBhaW50Q291bnRlcigpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50
ID8gbV9jbGllbnQtPnNob3dSZXBhaW50Q291bnRlcigpIDogZmFsc2U7IH0KICAgICAKICAgICB2
b2lkIHVwZGF0ZURlYnVnSW5kaWNhdG9ycygpOwogICAgIApJbmRleDogV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgJKHJldmlzaW9uIDc1MjI3KQorKysgV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDEx
ICs1NCwxMSBAQAogLy8gCiAvLyBUaGVyZSBpcyBvbmUgUmVuZGVyTGF5ZXJDb21wb3NpdG9yIHBl
ciBSZW5kZXJWaWV3LgogCi1jbGFzcyBSZW5kZXJMYXllckNvbXBvc2l0b3IgeworY2xhc3MgUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yIDogcHVibGljIEdyYXBoaWNzTGF5ZXJDbGllbnQgewogcHVibGlj
OgogICAgIFJlbmRlckxheWVyQ29tcG9zaXRvcihSZW5kZXJWaWV3Kik7CiAgICAgflJlbmRlckxh
eWVyQ29tcG9zaXRvcigpOwotICAgIAorCiAgICAgLy8gUmV0dXJuIHRydWUgaWYgdGhpcyBSZW5k
ZXJWaWV3IGlzIGluICJjb21wb3NpdGluZyBtb2RlIiAoaS5lLiBoYXMgb25lIG9yIG1vcmUKICAg
ICAvLyBjb21wb3NpdGVkIFJlbmRlckxheWVycykKICAgICBib29sIGluQ29tcG9zaXRpbmdNb2Rl
KCkgY29uc3QgeyByZXR1cm4gbV9jb21wb3NpdGluZzsgfQpAQCAtNzEsOSArNzEsNiBAQAogCiAg
ICAgYm9vbCBjYW5SZW5kZXIzRFRyYW5zZm9ybXMoKSBjb25zdDsKIAotICAgIGJvb2wgc2hvd0Rl
YnVnQm9yZGVycygpIGNvbnN0IHsgcmV0dXJuIG1fc2hvd0RlYnVnQm9yZGVyczsgfQotICAgIGJv
b2wgc2hvd1JlcGFpbnRDb3VudGVyKCkgY29uc3QgeyByZXR1cm4gbV9zaG93UmVwYWludENvdW50
ZXI7IH0KLSAgICAKICAgICAvLyBDb3B5IHRoZSBhY2NlbGVyYXRlZCBjb21wb3NpdGluZyByZWxh
dGVkIGZsYWdzIGZyb20gU2V0dGluZ3MKICAgICB2b2lkIGNhY2hlQWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0ZsYWdzKCk7CiAKQEAgLTE3Miw3ICsxNjksMjIgQEAKIAogICAgIFN0cmluZyBsYXllclRy
ZWVBc1RleHQoKTsKIAorICAgIC8vIFRoZXNlIGFyZSBuYW1lZCB0byBhdm9pZCBjb25mbGljdHMg
d2l0aCB0aGUgZnVuY3Rpb25zIGluIEdyYXBoaWNzTGF5ZXJDbGllbnQKKyAgICAvLyBUaGVzZSBy
ZXR1cm4gdGhlIGFjdHVhbCBpbnRlcm5hbCB2YXJpYWJsZXMuCisgICAgYm9vbCBjb21wb3NpdG9y
U2hvd0RlYnVnQm9yZGVycygpIGNvbnN0IHsgcmV0dXJuIG1fc2hvd0RlYnVnQm9yZGVyczsgfQor
ICAgIGJvb2wgY29tcG9zaXRvclNob3dSZXBhaW50Q291bnRlcigpIGNvbnN0IHsgcmV0dXJuIG1f
c2hvd1JlcGFpbnRDb3VudGVyOyB9CisKIHByaXZhdGU6CisgICAgLy8gR3JhcGhpY3NMYXllckNs
aWVudCBJbXBsZW1lbnRhdGlvbgorICAgIHZpcnR1YWwgdm9pZCBub3RpZnlBbmltYXRpb25TdGFy
dGVkKGNvbnN0IEdyYXBoaWNzTGF5ZXIqLCBkb3VibGUpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBu
b3RpZnlTeW5jUmVxdWlyZWQoY29uc3QgR3JhcGhpY3NMYXllciopIHsgc2NoZWR1bGVTeW5jKCk7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhjb25zdCBHcmFwaGljc0xheWVyKiwg
R3JhcGhpY3NDb250ZXh0JiwgR3JhcGhpY3NMYXllclBhaW50aW5nUGhhc2UsIGNvbnN0IEludFJl
Y3QmKSB7IH0KKworICAgIC8vIFRoZXNlIGNhbGxzIHJldHVybiBmYWxzZSBhbHdheXMuIFRoZXkg
YXJlIHNheWluZyB0aGF0IHRoZSBsYXllcnMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgY2xpZW50Cisg
ICAgLy8gKHRoZSBjbGlwTGF5ZXIgYW5kIHNjcm9sbExheWVyKSBzaG91bGQgbmV2ZXIgc2hvdyBk
ZWJ1Z2dpbmcgaW5mby4KKyAgICB2aXJ0dWFsIGJvb2wgc2hvd0RlYnVnQm9yZGVycygpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIHNob3dSZXBhaW50Q291bnRlcigp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgCiAgICAgLy8gV2hldGhlciB0aGUgZ2l2ZW4g
UkwgbmVlZHMgYSBjb21wb3NpdGluZyBsYXllci4KICAgICBib29sIG5lZWRzVG9CZUNvbXBvc2l0
ZWQoY29uc3QgUmVuZGVyTGF5ZXIqKSBjb25zdDsKICAgICAvLyBXaGV0aGVyIHRoZSBsYXllciBo
YXMgYW4gaW50cmluc2ljIG5lZWQgZm9yIGNvbXBvc2l0aW5nIGxheWVyLgpJbmRleDogV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCShyZXZpc2lvbiA3NTIyNykK
KysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEzNTEsMTMgKzEzNTEsMTMgQEAKICAgICAgICAgaWYgKCFtX2NsaXBMYXllcikg
ewogICAgICAgICAgICAgQVNTRVJUKCFtX3Njcm9sbExheWVyKTsKICAgICAgICAgICAgIC8vIENy
ZWF0ZSBhIGNsaXBwaW5nIGxheWVyIGlmIHRoaXMgaXMgYW4gaWZyYW1lCi0gICAgICAgICAgICBt
X2NsaXBMYXllciA9IEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZSgwKTsKKyAgICAgICAgICAgIG1fY2xp
cExheWVyID0gR3JhcGhpY3NMYXllcjo6Y3JlYXRlKHRoaXMpOwogI2lmbmRlZiBOREVCVUcKICAg
ICAgICAgICAgIG1fY2xpcExheWVyLT5zZXROYW1lKCJpZnJhbWUgQ2xpcHBpbmciKTsKICNlbmRp
ZgogICAgICAgICAgICAgbV9jbGlwTGF5ZXItPnNldE1hc2tzVG9Cb3VuZHModHJ1ZSk7CiAgICAg
ICAgICAgICAKLSAgICAgICAgICAgIG1fc2Nyb2xsTGF5ZXIgPSBHcmFwaGljc0xheWVyOjpjcmVh
dGUoMCk7CisgICAgICAgICAgICBtX3Njcm9sbExheWVyID0gR3JhcGhpY3NMYXllcjo6Y3JlYXRl
KHRoaXMpOwogI2lmbmRlZiBOREVCVUcKICAgICAgICAgICAgIG1fc2Nyb2xsTGF5ZXItPnNldE5h
bWUoImlmcmFtZSBzY3JvbGxpbmciKTsKICNlbmRpZgpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXJCYWNraW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckJhY2tpbmcuY3BwCShyZXZpc2lvbiA3NTIyNykKKysrIFdlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMDEsMTIgKzEx
MDEsMTIgQEAKIAogYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6OnNob3dEZWJ1Z0JvcmRlcnMoKSBj
b25zdAogewotICAgIHJldHVybiBjb21wb3NpdG9yKCkgPyBjb21wb3NpdG9yKCktPnNob3dEZWJ1
Z0JvcmRlcnMoKSA6IGZhbHNlOworICAgIHJldHVybiBjb21wb3NpdG9yKCkgPyBjb21wb3NpdG9y
KCktPmNvbXBvc2l0b3JTaG93RGVidWdCb3JkZXJzKCkgOiBmYWxzZTsKIH0KIAogYm9vbCBSZW5k
ZXJMYXllckJhY2tpbmc6OnNob3dSZXBhaW50Q291bnRlcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IGNvbXBvc2l0b3IoKSA/IGNvbXBvc2l0b3IoKS0+c2hvd1JlcGFpbnRDb3VudGVyKCkgOiBmYWxz
ZTsKKyAgICByZXR1cm4gY29tcG9zaXRvcigpID8gY29tcG9zaXRvcigpLT5jb21wb3NpdG9yU2hv
d1JlcGFpbnRDb3VudGVyKCkgOiBmYWxzZTsKIH0KIAogYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6
OnN0YXJ0QW5pbWF0aW9uKGRvdWJsZSB0aW1lT2Zmc2V0LCBjb25zdCBBbmltYXRpb24qIGFuaW0s
IGNvbnN0IEtleWZyYW1lTGlzdCYga2V5ZnJhbWVzKQpJbmRleDogV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDc1MjI3KQorKysgV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEwMDcsNiAr
MTAwNyw3IEBACiAJCTQ5MDcwN0U2MTIxOUMwNDMwMEQ5MEU1MSAvKiBBTkdMRVdlYktpdEJyaWRn
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTA3
MDdFNDEyMTlDMDQzMDBEOTBFNTEgLyogQU5HTEVXZWJLaXRCcmlkZ2UuY3BwICovOyB9OwogCQk0
OTA3MDdFNzEyMTlDMDQzMDBEOTBFNTEgLyogQU5HTEVXZWJLaXRCcmlkZ2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5MDcwN0U1MTIxOUMwNDMwMEQ5
MEU1MSAvKiBBTkdMRVdlYktpdEJyaWRnZS5oICovOyB9OwogCQk0OTI4NjM5OTEyNTNCOEZDMDBG
NzkyRDYgLyogUmVzb3VyY2VMb2FkSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDkyODYzOTgxMjUzQjhGQzAwRjc5MkQ2IC8qIFJlc291cmNlTG9h
ZEluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQk0OTNFNUUwOTEyRDY0MjA1MDAwMjAwODEgLyogUGxhdGZvcm1DQUxheWVyQ2xpZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTNFNUUwODEyRDY0
MjA1MDAwMjAwODEgLyogUGxhdGZvcm1DQUxheWVyQ2xpZW50LmggKi87IH07CiAJCTQ5NDg0RkMx
MTAyQ0YyM0MwMDE4N0REMyAvKiBDYW52YXNHcmFkaWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTQ4NEZCMzEwMkNGMjNDMDAxODdERDMgLyog
Q2FudmFzR3JhZGllbnQuY3BwICovOyB9OwogCQk0OTQ4NEZDMjEwMkNGMjNDMDAxODdERDMgLyog
Q2FudmFzR3JhZGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ5NDg0RkI0MTAyQ0YyM0MwMDE4N0REMyAvKiBDYW52YXNHcmFkaWVudC5oICovOyB9
OwogCQk0OTQ4NEZDNDEwMkNGMjNDMDAxODdERDMgLyogQ2FudmFzUGF0dGVybi5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTQ4NEZCNjEwMkNGMjND
MDAxODdERDMgLyogQ2FudmFzUGF0dGVybi5jcHAgKi87IH07CkBAIC03MzMzLDYgKzczMzQsNyBA
QAogCQk0OTA3MDdFNDEyMTlDMDQzMDBEOTBFNTEgLyogQU5HTEVXZWJLaXRCcmlkZ2UuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQU5HTEVXZWJLaXRCcmlkZ2UuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OTA3MDdFNTEyMTlDMDQzMDBEOTBFNTEg
LyogQU5HTEVXZWJLaXRCcmlkZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
QU5HTEVXZWJLaXRCcmlkZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDkyODYz
OTgxMjUzQjhGQzAwRjc5MkQ2IC8qIFJlc291cmNlTG9hZEluZm8uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUmVzb3VyY2VMb2FkSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk0OTNFNUUwODEyRDY0MjA1MDAwMjAwODEgLyogUGxhdGZvcm1DQUxheWVyQ2xp
ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFBsYXRmb3JtQ0FMYXllckNs
aWVudC5oOyBwYXRoID0gY2EvUGxhdGZvcm1DQUxheWVyQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQ5NDg0RkIzMTAyQ0YyM0MwMDE4N0REMyAvKiBDYW52YXNHcmFkaWVu
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBDYW52YXNHcmFkaWVu
dC5jcHA7IHBhdGggPSBjYW52YXMvQ2FudmFzR3JhZGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0OTQ4NEZCNDEwMkNGMjNDMDAxODdERDMgLyogQ2FudmFzR3JhZGllbnQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ2FudmFzR3JhZGllbnQuaDsgcGF0
aCA9IGNhbnZhcy9DYW52YXNHcmFkaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0OTQ4NEZCNTEwMkNGMjNDMDAxODdERDMgLyogQ2FudmFzR3JhZGllbnQuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgbmFtZSA9IENhbnZhc0dyYWRpZW50LmlkbDsgcGF0aCA9IGNhbnZhcy9DYW52YXNH
cmFkaWVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzI0MSw2ICsxMzI0
Myw3IEBACiAJCQkJNDk5QjNFRDUxMjhDRDMxNDAwRTcyNkMyIC8qIEdyYXBoaWNzTGF5ZXJDQS5o
ICovLAogCQkJCTQ5OUIzRURDMTI4REI1MDEwMEU3MjZDMiAvKiBQbGF0Zm9ybUNBQW5pbWF0aW9u
LmggKi8sCiAJCQkJNDk5QjNFQzMxMjhDQ0M0NzAwRTcyNkMyIC8qIFBsYXRmb3JtQ0FMYXllci5o
ICovLAorCQkJCTQ5M0U1RTA4MTJENjQyMDUwMDAyMDA4MSAvKiBQbGF0Zm9ybUNBTGF5ZXJDbGll
bnQuaCAqLywKIAkJCQk0OTRCQzQwQzEyQUVERDlFMDA3NDNCRDIgLyogVHJhbnNmb3JtYXRpb25N
YXRyaXhDQS5jcHAgKi8sCiAJCQkpOwogCQkJbmFtZSA9IGNhOwpAQCAtMjIyNzIsNiArMjIyNzUs
NyBAQAogCQkJCTdFRTY4NDZEMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVlc3QuaCBp
biBIZWFkZXJzICovLAogCQkJCTdFRTY4NDZGMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJl
cXVlc3RDRk5ldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0VFNjg0NzAxMkQyNkUzODAwRTc5NDE1
IC8qIFJlc291cmNlUmVzcG9uc2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ5M0U1RTA5MTJENjQy
MDUwMDAyMDA4MSAvKiBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
KTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRl
eDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5n
ZUxvZwkocmV2aXNpb24gNzUyNTYpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAxMS0wMS0wNyAgQ2hyaXMgTWFycmluICA8Y21hcnJp
bkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgU2hhcmUgY29kZSBiZXR3ZWVuIE1hYyAoQ0EpIGFuZCBXaW5kb3dzIChDQUNGKSBHcmFw
aGljc0xheWVyIGltcGxlbWVudGF0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NDkzODgKKworICAgICAgICBVc2UgYSBkb3VibGUgbmVzdGVkIHpl
cm8gbGVuZ3RoIHRpbWVyIGxpa2Ugb3RoZXIgdGVzdHMgaGVyZSBkbworICAgICAgICB0byBnaXZl
IHRoZSByZW5kZXJlciB0aW1lIHRvIGRvIHRoZSByZW5kZXIgYW5kIHN3aXRjaCBpbnRvIHRpbGVk
CisgICAgICAgIGxheWVycy4KKworICAgICAgICAqIGNvbXBvc2l0aW5nL3RpbGluZy9odWdlLWxh
eWVyLXdpdGgtbGF5ZXItY2hpbGRyZW4uaHRtbDoKKyAgICAgICAgKiBjb21wb3NpdGluZy90aWxp
bmcvaHVnZS1sYXllci5odG1sOgorCiAyMDExLTAxLTA3ICBBbGVqYW5kcm8gRy4gQ2FzdHJvICA8
YWxleEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE1hcnRpbiBSb2JpbnNvbi4K
SW5kZXg6IExheW91dFRlc3RzL2NvbXBvc2l0aW5nL3RpbGluZy9odWdlLWxheWVyLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvdGlsaW5nL2h1Z2UtbGF5ZXIuaHRt
bAkocmV2aXNpb24gNzUyMjcpCisrKyBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy90aWxpbmcvaHVn
ZS1sYXllci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxMSArMzgsMTQgQEAKIAogICAgICAg
ICBmdW5jdGlvbiB0ZXN0T25Mb2FkKCkKICAgICAgICAgeworICAgICAgICAgICAgLy8gV2FpdCBm
b3IgYSBsYXllciB1cGRhdGUgYW5kIHRoZSB0aWxlZCBsYXllciB0byBmaWxsIGluLgogICAgICAg
ICAgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICAgICAgICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnbGF5ZXJzJykuaW5uZXJIVE1MID0gbGF5b3V0VGVzdENvbnRy
b2xsZXIubGF5ZXJUcmVlQXNUZXh0KCk7Ci0gICAgICAgICAgICAgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLm5vdGlmeURvbmUoKTsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsYXllcnMnKS5pbm5lckhUTUwgPSBsYXlvdXRUZXN0
Q29udHJvbGxlci5sYXllclRyZWVBc1RleHQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIH0sIDApOwogICAgICAgICAgICAgfSwgMCk7CiAgICAgICAgIH0KICAg
ICAgIApJbmRleDogTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvdGlsaW5nL2h1Z2UtbGF5ZXItd2l0
aC1sYXllci1jaGlsZHJlbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2NvbXBvc2l0
aW5nL3RpbGluZy9odWdlLWxheWVyLXdpdGgtbGF5ZXItY2hpbGRyZW4uaHRtbAkocmV2aXNpb24g
NzUyMjcpCisrKyBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy90aWxpbmcvaHVnZS1sYXllci13aXRo
LWxheWVyLWNoaWxkcmVuLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTM5LDExICszOSwxNCBAQAog
CiAgICAgICAgIGZ1bmN0aW9uIHRlc3RPbkxvYWQoKQogICAgICAgICB7CisgICAgICAgICAgICAv
LyBXYWl0IGZvciBhIGxheWVyIHVwZGF0ZSBhbmQgdGhlIHRpbGVkIGxheWVyIHRvIGZpbGwgaW4u
CiAgICAgICAgICAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHsKLSAgICAgICAgICAg
ICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsYXllcnMnKS5pbm5lckhUTUwgPSBsYXlvdXRU
ZXN0Q29udHJvbGxlci5sYXllclRyZWVBc1RleHQoKTsKLSAgICAgICAgICAgICAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwotICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICAgICAgICAg
ICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xheWVycycpLmlubmVySFRNTCA9IGxh
eW91dFRlc3RDb250cm9sbGVyLmxheWVyVHJlZUFzVGV4dCgpOworICAgICAgICAgICAgICAgICAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgfSwgMCk7CiAgICAgICAgICAgICB9LCAwKTsKICAgICAg
ICAgfQogICAgICAgCg==
</data>
<flag name="review"
          id="69538"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>